-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMEBS_values.html
23 lines (22 loc) · 788 KB
/
MEBS_values.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewogIC8vIElmIHdpbmRvdy5IVE1MV2lkZ2V0cyBpcyBhbHJlYWR5IGRlZmluZWQsIHRoZW4gdXNlIGl0OyBvdGhlcndpc2UgY3JlYXRlIGEKICAvLyBuZXcgb2JqZWN0LiBUaGlzIGFsbG93cyBwcmVjZWRpbmcgY29kZSB0byBzZXQgb3B0aW9ucyB0aGF0IGFmZmVjdCB0aGUKICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLgogIHdpbmRvdy5IVE1MV2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cyB8fCB7fTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLgogIHZhciB2aWV3ZXJNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUgPQogICAgICAvXGJ2aWV3ZXJfcGFuZT0xXGIvLnRlc3Qod2luZG93LmxvY2F0aW9uKTsKCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gU2hpbnkgbW9kZS4gSWYgbm90LCBpdCdzIGEgc3RhdGljIGRvY3VtZW50LgogIC8vIE5vdGUgdGhhdCBzdGF0aWMgd2lkZ2V0cyBjYW4gYXBwZWFyIGluIGJvdGggU2hpbnkgYW5kIHN0YXRpYyBtb2RlcywgYnV0CiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4KICB2YXIgc2hpbnlNb2RlID0gd2luZG93LkhUTUxXaWRnZXRzLnNoaW55TW9kZSA9CiAgICAgIHR5cGVvZih3aW5kb3cuU2hpbnkpICE9PSAidW5kZWZpbmVkIiAmJiAhIXdpbmRvdy5TaGlueS5vdXRwdXRCaW5kaW5nczsKCiAgLy8gV2UgY2FuJ3QgY291bnQgb24galF1ZXJ5IGJlaW5nIGF2YWlsYWJsZSwgc28gd2UgaW1wbGVtZW50IG91ciBvd24KICAvLyB2ZXJzaW9uIGlmIG5lY2Vzc2FyeS4KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3RvcikgewogICAgaWYgKHR5cGVvZihqUXVlcnkpICE9PSAidW5kZWZpbmVkIiAmJiBzY29wZSBpbnN0YW5jZW9mIGpRdWVyeSkgewogICAgICByZXR1cm4gc2NvcGUuZmluZChzZWxlY3Rvcik7CiAgICB9CiAgICBpZiAoc2NvcGUucXVlcnlTZWxlY3RvckFsbCkgewogICAgICByZXR1cm4gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7CiAgICBpZiAodmFsdWUgPT09IG51bGwpCiAgICAgIHJldHVybiBbXTsKICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQogICAgICByZXR1cm4gdmFsdWU7CiAgICByZXR1cm4gW3ZhbHVlXTsKICB9CgogIC8vIEltcGxlbWVudCBqUXVlcnkncyBleHRlbmQKICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgcmV0dXJuIHRhcmdldDsKICAgIH0KICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07CiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7CiAgICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkgewogICAgICAgICAgdGFyZ2V0W3Byb3BdID0gc291cmNlW3Byb3BdOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuIHRhcmdldDsKICB9CgogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4KICBmdW5jdGlvbiBmb3JFYWNoKHZhbHVlcywgY2FsbGJhY2ssIHRoaXNBcmcpIHsKICAgIGlmICh2YWx1ZXMuZm9yRWFjaCkgewogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7CiAgICB9IGVsc2UgewogICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykgewogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOwogICAgICB9CiAgICB9CiAgfQoKICAvLyBSZXBsYWNlcyB0aGUgc3BlY2lmaWVkIG1ldGhvZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgZnVuY1NvdXJjZS4KICAvLwogIC8vIE5vdGUgdGhhdCBmdW5jU291cmNlIHNob3VsZCBub3QgQkUgdGhlIG5ldyBtZXRob2QsIGl0IHNob3VsZCBiZSBhIGZ1bmN0aW9uCiAgLy8gdGhhdCBSRVRVUk5TIHRoZSBuZXcgbWV0aG9kLiBmdW5jU291cmNlIHJlY2VpdmVzIGEgc2luZ2xlIGFyZ3VtZW50IHRoYXQgaXMKICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4KICAvLyBtZXRob2QgY2FuIGJlIGNhbGxlZCBsaWtlIGEgcmVndWxhciBmdW5jdGlvbiwgaXQgaGFzIHRoZSB0YXJnZXQgcGVybWFuZW50bHkKICAvLyBib3VuZCB0byBpdCBzbyAidGhpcyIgd2lsbCB3b3JrIGNvcnJlY3RseS4KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsKICAgIHZhciBzdXBlckZ1bmMgPSB0YXJnZXRbbWV0aG9kTmFtZV0gfHwgZnVuY3Rpb24oKSB7fTsKICAgIHZhciBzdXBlckZ1bmNCb3VuZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsKICAgIH07CiAgICB0YXJnZXRbbWV0aG9kTmFtZV0gPSBmdW5jU291cmNlKHN1cGVyRnVuY0JvdW5kKTsKICB9CgogIC8vIEFkZCBhIG1ldGhvZCB0byBkZWxlZ2F0b3IgdGhhdCwgd2hlbiBpbnZva2VkLCBjYWxscwogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbgogIC8vIHRoZSBkZWxlZ2F0ZWUsIGJ1dCB0aGVyZSB3YXMgb25lIG9uIGRlbGVnYXRvciBiZWZvcmUKICAvLyBkZWxlZ2F0ZU1ldGhvZCB3YXMgY2FsbGVkLCB0aGVuIHRoZSBvcmlnaW5hbCB2ZXJzaW9uCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLgogIC8vIEZvciBleGFtcGxlOgogIC8vCiAgLy8gdmFyIGEgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2ExJyk7IH0KICAvLyAgIG1ldGhvZDI6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYTInKTsgfQogIC8vIH07CiAgLy8gdmFyIGIgPSB7CiAgLy8gICBtZXRob2QxOiBmdW5jdGlvbigpIHsgY29uc29sZS5sb2coJ2IxJyk7IH0KICAvLyB9OwogIC8vIGRlbGVnYXRlTWV0aG9kKGEsIGIsICJtZXRob2QxIik7CiAgLy8gZGVsZWdhdGVNZXRob2QoYSwgYiwgIm1ldGhvZDIiKTsKICAvLyBhLm1ldGhvZDEoKTsKICAvLyBhLm1ldGhvZDIoKTsKICAvLwogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4KICBmdW5jdGlvbiBkZWxlZ2F0ZU1ldGhvZChkZWxlZ2F0b3IsIGRlbGVnYXRlZSwgbWV0aG9kTmFtZSkgewogICAgdmFyIGluaGVyaXRlZCA9IGRlbGVnYXRvclttZXRob2ROYW1lXTsKICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgdGFyZ2V0ID0gZGVsZWdhdGVlOwogICAgICB2YXIgbWV0aG9kID0gZGVsZWdhdGVlW21ldGhvZE5hbWVdOwoKICAgICAgLy8gVGhlIG1ldGhvZCBkb2Vzbid0IGV4aXN0IG9uIHRoZSBkZWxlZ2F0ZWUuIEluc3RlYWQsCiAgICAgIC8vIGNhbGwgdGhlIG1ldGhvZCBvbiB0aGUgZGVsZWdhdG9yLCBpZiBpdCBleGlzdHMuCiAgICAgIGlmICghbWV0aG9kKSB7CiAgICAgICAgdGFyZ2V0ID0gZGVsZWdhdG9yOwogICAgICAgIG1ldGhvZCA9IGluaGVyaXRlZDsKICAgICAgfQoKICAgICAgaWYgKG1ldGhvZCkgewogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOwogICAgICB9CiAgICB9OwogIH0KCiAgLy8gSW1wbGVtZW50IGEgdmFndWUgZmFjc2ltaWxpZSBvZiBqUXVlcnkncyBkYXRhIG1ldGhvZAogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgewogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMikgewogICAgICByZXR1cm4gZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV07CiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgewogICAgICBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXSA9IHZhbHVlOwogICAgICByZXR1cm4gZWw7CiAgICB9IGVsc2UgewogICAgICB0aHJvdyBuZXcgRXJyb3IoIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIGVsZW1lbnREYXRhOiAiICsKICAgICAgICBhcmd1bWVudHMubGVuZ3RoKTsKICAgIH0KICB9CgogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleAogIGZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHsKICAgIHJldHVybiBzdHIucmVwbGFjZSgvW1wtXFtcXVwvXHtcfVwoXClcKlwrXD9cLlxcXF5cJFx8XS9nLCAiXFwkJiIpOwogIH0KCiAgZnVuY3Rpb24gaGFzQ2xhc3MoZWwsIGNsYXNzTmFtZSkgewogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOwogICAgcmV0dXJuIHJlLnRlc3QoZWwuY2xhc3NOYW1lKTsKICB9CgogIC8vIGVsZW1lbnRzIC0gYXJyYXkgKG9yIGFycmF5LWxpa2Ugb2JqZWN0KSBvZiBIVE1MIGVsZW1lbnRzCiAgLy8gY2xhc3NOYW1lIC0gY2xhc3MgbmFtZSB0byB0ZXN0IGZvcgogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsKICAvLyAgIGlmIGZhbHNlLCBvbmx5IHJldHVybiBlbGVtZW50cyAqd2l0aG91dCogZ2l2ZW4gY2xhc3NOYW1lCiAgZnVuY3Rpb24gZmlsdGVyQnlDbGFzcyhlbGVtZW50cywgY2xhc3NOYW1lLCBpbmNsdWRlKSB7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykgewogICAgICBpZiAoaGFzQ2xhc3MoZWxlbWVudHNbaV0sIGNsYXNzTmFtZSkgPT0gaW5jbHVkZSkKICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOwogICAgfQogICAgcmV0dXJuIHJlc3VsdHM7CiAgfQoKICBmdW5jdGlvbiBvbihvYmosIGV2ZW50TmFtZSwgZnVuYykgewogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIG9iai5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgZnVuYywgZmFsc2UpOwogICAgfSBlbHNlIGlmIChvYmouYXR0YWNoRXZlbnQpIHsKICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvZmYob2JqLCBldmVudE5hbWUsIGZ1bmMpIHsKICAgIGlmIChvYmoucmVtb3ZlRXZlbnRMaXN0ZW5lcikKICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7CiAgICBlbHNlIGlmIChvYmouZGV0YWNoRXZlbnQpIHsKICAgICAgb2JqLmRldGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7CiAgICB9CiAgfQoKICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aAogIC8vIHRoZSAicGFkZGluZyIgQ1NTIHByb3BlcnR5CiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL3BhZGRpbmcKICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7CiAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gIm51bWJlciIpCiAgICAgIHZhbHVlID0gW3ZhbHVlXTsKICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMF0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzBdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMF0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzFdfTsKICAgIH0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsKICAgICAgcmV0dXJuIHt0b3A6IHZhbHVlWzBdLCByaWdodDogdmFsdWVbMV0sIGJvdHRvbTogdmFsdWVbMl0sIGxlZnQ6IHZhbHVlWzNdfTsKICAgIH0KICB9CgogIC8vIENvbnZlcnQgYW4gdW5wYWNrZWQgcGFkZGluZyBvYmplY3QgdG8gYSBDU1MgdmFsdWUKICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgewogICAgcmV0dXJuIHBhZGRpbmdPYmoudG9wICsgInB4ICIgKyBwYWRkaW5nT2JqLnJpZ2h0ICsgInB4ICIgKyBwYWRkaW5nT2JqLmJvdHRvbSArICJweCAiICsgcGFkZGluZ09iai5sZWZ0ICsgInB4IjsKICB9CgogIC8vIE1ha2VzIGEgbnVtYmVyIHN1aXRhYmxlIGZvciBDU1MKICBmdW5jdGlvbiBweCh4KSB7CiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikKICAgICAgcmV0dXJuIHggKyAicHgiOwogICAgZWxzZQogICAgICByZXR1cm4geDsKICB9CgogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuCiAgLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBlaXRoZXIgbnVsbCwgb3IgYW4gb2JqZWN0IHdpdGggZmlsbCwgcGFkZGluZywKICAvLyBkZWZhdWx0V2lkdGgsIGRlZmF1bHRIZWlnaHQgZmllbGRzLgogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgewogICAgdmFyIHNpemluZ0VsID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigic2NyaXB0W2RhdGEtZm9yPSciICsgZWwuaWQgKyAiJ11bdHlwZT0nYXBwbGljYXRpb24vaHRtbHdpZGdldC1zaXppbmcnXSIpOwogICAgaWYgKCFzaXppbmdFbCkKICAgICAgcmV0dXJuIG51bGw7CiAgICB2YXIgc3AgPSBKU09OLnBhcnNlKHNpemluZ0VsLnRleHRDb250ZW50IHx8IHNpemluZ0VsLnRleHQgfHwgInt9Iik7CiAgICBpZiAodmlld2VyTW9kZSkgewogICAgICByZXR1cm4gc3Audmlld2VyOwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHNwLmJyb3dzZXI7CiAgICB9CiAgfQoKICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLgogIC8vICAgRWFjaCBlbGVtZW50IG11c3QgYmUgYSB2YWxpZCBKYXZhU2NyaXB0IGV4cHJlc3Npb24gdGhhdCB5aWVsZHMgYQogIC8vICAgZnVuY3Rpb24uIE9yLCBjYW4gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoICJjb2RlIiBhbmQgImRhdGEiCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nCiAgLy8gICBvZiBKUyB0aGF0J3MgYW4gZXhwciB0aGF0IHlpZWxkcyBhIGZ1bmN0aW9uLCBhbmQgImRhdGEiIHNob3VsZCBiZQogIC8vICAgYW4gb2JqZWN0IHRoYXQgd2lsbCBiZSBhZGRlZCBhcyBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdoZW4gdGhhdAogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLgogIC8vIEBwYXJhbSB0YXJnZXQgVGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgInRoaXMiIGZvciBlYWNoIGZ1bmN0aW9uCiAgLy8gICBleGVjdXRpb24uCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlCiAgLy8gICBzYW1lIGFyZ3VtZW50cyB3aWxsIGJlIHBhc3NlZCB0byBhbGwgZnVuY3Rpb25zLikKICBmdW5jdGlvbiBldmFsQW5kUnVuKHRhc2tzLCB0YXJnZXQsIGFyZ3MpIHsKICAgIGlmICh0YXNrcykgewogICAgICBmb3JFYWNoKHRhc2tzLCBmdW5jdGlvbih0YXNrKSB7CiAgICAgICAgdmFyIHRoZXNlQXJncyA9IGFyZ3M7CiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsKICAgICAgICAgIHRoZXNlQXJncyA9IHRoZXNlQXJncy5jb25jYXQoW3Rhc2suZGF0YV0pOwogICAgICAgICAgdGFzayA9IHRhc2suY29kZTsKICAgICAgICB9CiAgICAgICAgdmFyIHRhc2tGdW5jID0gZXZhbCgiKCIgKyB0YXNrICsgIikiKTsKICAgICAgICBpZiAodHlwZW9mKHRhc2tGdW5jKSAhPT0gImZ1bmN0aW9uIikgewogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOwogICAgICAgIH0KICAgICAgICB0YXNrRnVuYy5hcHBseSh0YXJnZXQsIHRoZXNlQXJncyk7CiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gaW5pdFNpemluZyhlbCkgewogICAgdmFyIHNpemluZyA9IHNpemluZ1BvbGljeShlbCk7CiAgICBpZiAoIXNpemluZykKICAgICAgcmV0dXJuOwoKICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsKICAgIGlmICghY2VsKQogICAgICByZXR1cm47CgogICAgaWYgKHR5cGVvZihzaXppbmcucGFkZGluZykgIT09ICJ1bmRlZmluZWQiKSB7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUubWFyZ2luID0gIjAiOwogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOwogICAgfQoKICAgIGlmIChzaXppbmcuZmlsbCkgewogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gImhpZGRlbiI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7CiAgICAgIGlmIChjZWwpIHsKICAgICAgICBjZWwuc3R5bGUucG9zaXRpb24gPSAiYWJzb2x1dGUiOwogICAgICAgIHZhciBwYWQgPSB1bnBhY2tQYWRkaW5nKHNpemluZy5wYWRkaW5nKTsKICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLnJpZ2h0ID0gcGFkLnJpZ2h0ICsgInB4IjsKICAgICAgICBjZWwuc3R5bGUuYm90dG9tID0gcGFkLmJvdHRvbSArICJweCI7CiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7CiAgICAgICAgZWwuc3R5bGUud2lkdGggPSAiMTAwJSI7CiAgICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOwogICAgICB9CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwKICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gY2VsLm9mZnNldEhlaWdodDsgfQogICAgICB9OwoKICAgIH0gZWxzZSB7CiAgICAgIGVsLnN0eWxlLndpZHRoID0gcHgoc2l6aW5nLndpZHRoKTsKICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7CgogICAgICByZXR1cm4gewogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LAogICAgICAgIGdldEhlaWdodDogZnVuY3Rpb24oKSB7IHJldHVybiBlbC5vZmZzZXRIZWlnaHQ7IH0KICAgICAgfTsKICAgIH0KICB9CgogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzCiAgdmFyIGRlZmF1bHRzID0gewogICAgZmluZDogZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7CiAgICB9LAogICAgcmVuZGVyRXJyb3I6IGZ1bmN0aW9uKGVsLCBlcnIpIHsKICAgICAgdmFyICRlbCA9ICQoZWwpOwoKICAgICAgdGhpcy5jbGVhckVycm9yKGVsKTsKCiAgICAgIC8vIEFkZCBhbGwgdGhlc2UgZXJyb3IgY2xhc3NlcywgYXMgU2hpbnkgZG9lcwogICAgICB2YXIgZXJyQ2xhc3MgPSAic2hpbnktb3V0cHV0LWVycm9yIjsKICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7CiAgICAgICAgLy8gdXNlIHRoZSBjbGFzc2VzIG9mIHRoZSBlcnJvciBjb25kaXRpb24gYXMgQ1NTIGNsYXNzIG5hbWVzCiAgICAgICAgZXJyQ2xhc3MgPSBlcnJDbGFzcyArICIgIiArICQubWFwKGFzQXJyYXkoZXJyLnR5cGUpLCBmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOwogICAgICAgIH0pLmpvaW4oIiAiKTsKICAgICAgfQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7CgogICAgICAvLyBJcyBlbCBpbmxpbmUgb3IgYmxvY2s/IElmIGlubGluZSBvciBpbmxpbmUtYmxvY2ssIGp1c3QgZGlzcGxheTpub25lIGl0CiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLgogICAgICB2YXIgZGlzcGxheSA9ICRlbC5jc3MoImRpc3BsYXkiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgZGlzcGxheSk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICAkZWwuaGlkZSgpOwogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsKICAgICAgICAgIHZhciBlcnJvclNwYW4gPSAkKCI8c3Bhbj4iKS5hZGRDbGFzcyhlcnJDbGFzcyk7CiAgICAgICAgICBlcnJvclNwYW4udGV4dChlcnIubWVzc2FnZSk7CiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIikgewogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlCiAgICAgICAgLy8gZWwsIGFuZCBwb3NpdGlvbiB0aGUgZXJyb3IgdG8gYmUgb24gdG9wIG9mIHRoZSBlbC4KICAgICAgICAvLyBNYXJrIGl0IHdpdGggYSB1bmlxdWUgSUQgYW5kIENTUyBjbGFzcyBzbyB3ZSBjYW4gcmVtb3ZlIGl0IGxhdGVyLgogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CiAgICAgICAgaWYgKGVyci5tZXNzYWdlICE9PSAiIikgewogICAgICAgICAgdmFyIGVycm9yRGl2ID0gJCgiPGRpdj4iKS5hZGRDbGFzcyhlcnJDbGFzcykuY3NzKCJwb3NpdGlvbiIsICJhYnNvbHV0ZSIpCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpCiAgICAgICAgICAgIC8vIHNldHRpbmcgd2lkdGggY2FuIHB1c2ggb3V0IHRoZSBwYWdlIHNpemUsIGZvcmNpbmcgb3RoZXJ3aXNlCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3IKICAgICAgICAgICAgLy8gdGhlIGVsZW1lbnQgdG8gc2hyaW5rOyBzbyB1c2UgbWF4LXdpZHRoIGluc3RlYWQKICAgICAgICAgICAgLmNzcygibWF4V2lkdGgiLCBlbC5vZmZzZXRXaWR0aCkKICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsKICAgICAgICAgIGVycm9yRGl2LnRleHQoZXJyLm1lc3NhZ2UpOwogICAgICAgICAgJGVsLmFmdGVyKGVycm9yRGl2KTsKCiAgICAgICAgICAvLyBSZWFsbHkgZHVtYiB3YXkgdG8ga2VlcCB0aGUgc2l6ZS9wb3NpdGlvbiBvZiB0aGUgZXJyb3IgaW4gc3luYyB3aXRoCiAgICAgICAgICAvLyB0aGUgcGFyZW50IGVsZW1lbnQgYXMgdGhlIHdpbmRvdyBpcyByZXNpemVkIG9yIHdoYXRldmVyLgogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICghZXJyb3JEaXZbMF0ucGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50SWQpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlcnJvckRpdgogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkKICAgICAgICAgICAgICAuY3NzKCJsZWZ0IiwgZWwub2Zmc2V0TGVmdCkKICAgICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICB9LCA1MDApOwogICAgICAgIH0KICAgICAgfQogICAgfSwKICAgIGNsZWFyRXJyb3I6IGZ1bmN0aW9uKGVsKSB7CiAgICAgIHZhciAkZWwgPSAkKGVsKTsKICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiKTsKICAgICAgJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIiwgbnVsbCk7CgogICAgICBpZiAoZGlzcGxheSA9PT0gImlubGluZSIgfHwgZGlzcGxheSA9PT0gImlubGluZS1ibG9jayIpIHsKICAgICAgICBpZiAoZGlzcGxheSkKICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsKICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOwogICAgICB9IGVsc2UgaWYgKGRpc3BsYXkgPT09ICJibG9jayIpewogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOwogICAgICAgICQoZWwubmV4dFNpYmxpbmcpLmZpbHRlcigiLmh0bWx3aWRnZXRzLWVycm9yIikucmVtb3ZlKCk7CiAgICAgIH0KICAgIH0sCiAgICBzaXppbmc6IHt9CiAgfTsKCiAgLy8gQ2FsbGVkIGJ5IHdpZGdldCBiaW5kaW5ncyB0byByZWdpc3RlciBhIG5ldyB0eXBlIG9mIHdpZGdldC4gVGhlIGRlZmluaXRpb24KICAvLyBvYmplY3QgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlCiAgLy8gICB1c2VkIGJ5IGRlZmF1bHQgYXMgdGhlIENTUyBjbGFzc25hbWUgdG8gbG9vayBmb3IuCiAgLy8gLSBpbml0aWFsaXplIChvcHRpb25hbCkgLSBBIGZ1bmN0aW9uKGVsKSB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uY2UgcGVyCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkCiAgLy8gICB2YWx1ZSB0byByZW5kZXJWYWx1ZS4KICAvLyAtIHJlbmRlclZhbHVlIChyZXF1aXJlZCkgLSBBIGZ1bmN0aW9uKGVsLCBkYXRhLCBpbml0VmFsdWUpIHRoYXQgd2lsbCBiZQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXIKICAvLyAgIGVsZW1lbnQ7IFNoaW55IGFwcHMgd2lsbCBjYXVzZSB0aGlzIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIKICAvLyAgIGVsZW1lbnQsIGFzIHRoZSBkYXRhIGNoYW5nZXMuCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsKICAgIGlmICghZGVmaW5pdGlvbi5uYW1lKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIG5hbWUiKTsKICAgIH0KICAgIGlmICghZGVmaW5pdGlvbi50eXBlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHR5cGUiKTsKICAgIH0KICAgIC8vIEN1cnJlbnRseSB3ZSBvbmx5IHN1cHBvcnQgb3V0cHV0IHdpZGdldHMKICAgIGlmIChkZWZpbml0aW9uLnR5cGUgIT09ICJvdXRwdXQiKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsKICAgIH0KICAgIC8vIFRPRE86IFZlcmlmeSB0aGF0IC5uYW1lIGlzIGEgdmFsaWQgQ1NTIGNsYXNzbmFtZQoKICAgIC8vIFN1cHBvcnQgbmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb25zLiBPbGQtc3R5bGUgY2xhc3MtYm91bmQKICAgIC8vIGRlZmluaXRpb25zIGhhdmUgb25lIHdpZGdldCAib2JqZWN0IiBwZXIgd2lkZ2V0IHBlciB0eXBlL2NsYXNzIG9mCiAgICAvLyB3aWRnZXQ7IHRoZSByZW5kZXJWYWx1ZSBhbmQgcmVzaXplIG1ldGhvZHMgb24gc3VjaCB3aWRnZXQgb2JqZWN0cwogICAgLy8gdGFrZSBlbCBhbmQgaW5zdGFuY2UgYXJndW1lbnRzLCBiZWNhdXNlIHRoZSB3aWRnZXQgb2JqZWN0IGNhbid0CiAgICAvLyBzdG9yZSB0aGVtLiBOZXctc3R5bGUgaW5zdGFuY2UtYm91bmQgZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0CiAgICAvLyBvYmplY3QgcGVyIHdpZGdldCBpbnN0YW5jZTsgdGhlIGRlZmluaXRpb24gdGhhdCdzIHBhc3NlZCBpbiBkb2Vzbid0CiAgICAvLyBwcm92aWRlIHJlbmRlclZhbHVlIG9yIHJlc2l6ZSBtZXRob2RzIGF0IGFsbCwganVzdCB0aGUgc2luZ2xlIG1ldGhvZAogICAgLy8gICBmYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KQogICAgLy8gd2hpY2ggcmV0dXJucyBhbiBvYmplY3QgdGhhdCBoYXMgcmVuZGVyVmFsdWUoeCkgYW5kIHJlc2l6ZSh3LCBoKS4KICAgIC8vIFRoaXMgZW5hYmxlcyBhIGZhciBtb3JlIG5hdHVyYWwgcHJvZ3JhbW1pbmcgc3R5bGUgZm9yIHRoZSB3aWRnZXQKICAgIC8vIGF1dGhvciwgd2hvIGNhbiBzdG9yZSBwZXItaW5zdGFuY2Ugc3RhdGUgdXNpbmcgZWl0aGVyIE9PLXN0eWxlCiAgICAvLyBpbnN0YW5jZSBmaWVsZHMgb3IgZnVuY3Rpb25hbC1zdHlsZSBjbG9zdXJlIHZhcmlhYmxlcyAoSSBndWVzcyB0aGlzCiAgICAvLyBpcyBpbiBjb250cmFzdCB0byB3aGF0IGNhbiBvbmx5IGJlIGNhbGxlZCBDLXN0eWxlIHBzZXVkby1PTyB3aGljaCBpcwogICAgLy8gd2hhdCB3ZSByZXF1aXJlZCBiZWZvcmUpLgogICAgaWYgKGRlZmluaXRpb24uZmFjdG9yeSkgewogICAgICBkZWZpbml0aW9uID0gY3JlYXRlTGVnYWN5RGVmaW5pdGlvbkFkYXB0ZXIoZGVmaW5pdGlvbik7CiAgICB9CgogICAgaWYgKCFkZWZpbml0aW9uLnJlbmRlclZhbHVlKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiV2lkZ2V0IG11c3QgaGF2ZSBhIHJlbmRlclZhbHVlIGZ1bmN0aW9uIik7CiAgICB9CgogICAgLy8gRm9yIHN0YXRpYyByZW5kZXJpbmcgKG5vbi1TaGlueSksIHVzZSBhIHNpbXBsZSB3aWRnZXQgcmVnaXN0cmF0aW9uCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28KICAgIC8vIGNvbnRhaW4gc3RhdGljIHdpZGdldHMuCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLgogICAgdmFyIHN0YXRpY0JpbmRpbmcgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKICAgIG92ZXJyaWRlTWV0aG9kKHN0YXRpY0JpbmRpbmcsICJmaW5kIiwgZnVuY3Rpb24oc3VwZXJmdW5jKSB7CiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgewogICAgICAgIHZhciByZXN1bHRzID0gc3VwZXJmdW5jKHNjb3BlKTsKICAgICAgICAvLyBGaWx0ZXIgb3V0IFNoaW55IG91dHB1dHMsIHdlIG9ubHkgd2FudCB0aGUgc3RhdGljIGtpbmQKICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOwogICAgICB9OwogICAgfSk7CiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOwoKICAgIGlmIChzaGlueU1vZGUpIHsKICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gd2l0aCBhbiBvdXRwdXQgYmluZGluZy4KICAgICAgLy8gVGhlIGRlZmluaXRpb24gaXRzZWxmIHdpbGwgbm90IGJlIHRoZSBvdXRwdXQgYmluZGluZywgaW5zdGVhZAogICAgICAvLyB3ZSB3aWxsIG1ha2UgYW4gb3V0cHV0IGJpbmRpbmcgb2JqZWN0IHRoYXQgZGVsZWdhdGVzIHRvIHRoZQogICAgICAvLyBkZWZpbml0aW9uLiBUaGlzIGlzIGJlY2F1c2Ugd2UgZm9vbGlzaGx5IHVzZWQgdGhlIHNhbWUgbWV0aG9kCiAgICAgIC8vIG5hbWUgKHJlbmRlclZhbHVlKSBmb3IgaHRtbHdpZGdldHMgZGVmaW5pdGlvbiBhbmQgU2hpbnkgYmluZGluZ3MKICAgICAgLy8gYnV0IHRoZXkgYWN0dWFsbHkgaGF2ZSBxdWl0ZSBkaWZmZXJlbnQgc2VtYW50aWNzICh0aGUgU2hpbnkKICAgICAgLy8gYmluZGluZ3MgcmVjZWl2ZSBkYXRhIHRoYXQgaW5jbHVkZXMgbG90cyBvZiBtZXRhZGF0YSB0aGF0IGl0CiAgICAgIC8vIHN0cmlwcyBvZmYgYmVmb3JlIGNhbGxpbmcgaHRtbHdpZGdldHMgcmVuZGVyVmFsdWUpLiBXZSBjYW4ndAogICAgICAvLyBqdXN0IGlnbm9yZSB0aGUgZGlmZmVyZW5jZSBiZWNhdXNlIGluIHNvbWUgd2lkZ2V0cyBpdCdzIGhlbHBmdWwKICAgICAgLy8gdG8gY2FsbCB0aGlzLnJlbmRlclZhbHVlKCkgZnJvbSBpbnNpZGUgb2YgcmVzaXplKCksIGFuZCBpZgogICAgICAvLyB3ZSdyZSBub3QgZGVsZWdhdGluZywgdGhlbiB0aGF0IGNhbGwgd2lsbCBnbyB0byB0aGUgU2hpbnkKICAgICAgLy8gdmVyc2lvbiBpbnN0ZWFkIG9mIHRoZSBodG1sd2lkZ2V0cyB2ZXJzaW9uLgoKICAgICAgLy8gTWVyZ2UgZGVmYXVsdHMgd2l0aCBkZWZpbml0aW9uLCB3aXRob3V0IG11dGF0aW5nIGVpdGhlci4KICAgICAgdmFyIGJpbmRpbmdEZWYgPSBleHRlbmQoe30sIGRlZmF1bHRzLCBkZWZpbml0aW9uKTsKCiAgICAgIC8vIFRoaXMgb2JqZWN0IHdpbGwgYmUgb3VyIGFjdHVhbCBTaGlueSBiaW5kaW5nLgogICAgICB2YXIgc2hpbnlCaW5kaW5nID0gbmV3IFNoaW55Lk91dHB1dEJpbmRpbmcoKTsKCiAgICAgIC8vIFdpdGggYSBmZXcgZXhjZXB0aW9ucywgd2UnbGwgd2FudCB0byBzaW1wbHkgdXNlIHRoZSBiaW5kaW5nRGVmJ3MKICAgICAgLy8gdmVyc2lvbiBvZiBtZXRob2RzIGlmIHRoZXkgYXJlIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGZhbGwgYmFjayB0bwogICAgICAvLyBTaGlueSdzIGRlZmF1bHRzLiBOT1RFOiBJZiBTaGlueSdzIG91dHB1dCBiaW5kaW5ncyBnYWluIGFkZGl0aW9uYWwKICAgICAgLy8gbWV0aG9kcyBpbiB0aGUgZnV0dXJlLCBhbmQgd2Ugd2FudCB0aGVtIHRvIGJlIG92ZXJyaWRlYWJsZSBieQogICAgICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcgZGVmaW5pdGlvbnMsIHRoZW4gd2UnbGwgbmVlZCB0byBhZGQgdGhlbSB0byB0aGlzCiAgICAgIC8vIGxpc3QuCiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgImdldElkIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgIm9uVmFsdWVDaGFuZ2UiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgInJlbmRlckVycm9yIik7CiAgICAgIGRlbGVnYXRlTWV0aG9kKHNoaW55QmluZGluZywgYmluZGluZ0RlZiwgImNsZWFyRXJyb3IiKTsKICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAic2hvd1Byb2dyZXNzIik7CgogICAgICAvLyBUaGUgZmluZCwgcmVuZGVyVmFsdWUsIGFuZCByZXNpemUgYXJlIGhhbmRsZWQgZGlmZmVyZW50bHksIGJlY2F1c2Ugd2UKICAgICAgLy8gd2FudCB0byBhY3R1YWxseSBkZWNvcmF0ZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGJpbmRpbmdEZWYgbWV0aG9kcy4KCiAgICAgIHNoaW55QmluZGluZy5maW5kID0gZnVuY3Rpb24oc2NvcGUpIHsKICAgICAgICB2YXIgcmVzdWx0cyA9IGJpbmRpbmdEZWYuZmluZChzY29wZSk7CgogICAgICAgIC8vIE9ubHkgcmV0dXJuIGVsZW1lbnRzIHRoYXQgYXJlIFNoaW55IG91dHB1dHMsIG5vdCBzdGF0aWMgb25lcwogICAgICAgIHZhciBkeW5hbWljUmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKCIuaHRtbC13aWRnZXQtb3V0cHV0Iik7CgogICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB3aGF0ZXZlciBjYXVzZWQgU2hpbnkgdG8gdGhpbmsgdGhlcmUgbWlnaHQgYmUKICAgICAgICAvLyBuZXcgZHluYW1pYyBvdXRwdXRzLCBhbHNvIGNhdXNlZCB0aGVyZSB0byBiZSBuZXcgc3RhdGljIG91dHB1dHMuCiAgICAgICAgLy8gU2luY2UgdGhlcmUgbWlnaHQgYmUgbG90cyBvZiBkaWZmZXJlbnQgaHRtbHdpZGdldHMgYmluZGluZ3MsIHdlCiAgICAgICAgLy8gc2NoZWR1bGUgZXhlY3V0aW9uIGZvciBsYXRlci0tbm8gbmVlZCB0byBzdGF0aWNSZW5kZXIgbXVsdGlwbGUKICAgICAgICAvLyB0aW1lcy4KICAgICAgICBpZiAocmVzdWx0cy5sZW5ndGggIT09IGR5bmFtaWNSZXN1bHRzLmxlbmd0aCkKICAgICAgICAgIHNjaGVkdWxlU3RhdGljUmVuZGVyKCk7CgogICAgICAgIHJldHVybiBkeW5hbWljUmVzdWx0czsKICAgICAgfTsKCiAgICAgIC8vIFdyYXAgcmVuZGVyVmFsdWUgdG8gaGFuZGxlIGluaXRpYWxpemF0aW9uLCB3aGljaCB1bmZvcnR1bmF0ZWx5IGlzbid0CiAgICAgIC8vIHN1cHBvcnRlZCBuYXRpdmVseSBieSBTaGlueSBhdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcuCgogICAgICBzaGlueUJpbmRpbmcucmVuZGVyVmFsdWUgPSBmdW5jdGlvbihlbCwgZGF0YSkgewogICAgICAgIFNoaW55LnJlbmRlckRlcGVuZGVuY2llcyhkYXRhLmRlcHMpOwogICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzCiAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgZGF0YS5ldmFscyAmJiBpIDwgZGF0YS5ldmFscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1tpXSk7CiAgICAgICAgfQogICAgICAgIGlmICghYmluZGluZ0RlZi5yZW5kZXJPbk51bGxWYWx1ZSkgewogICAgICAgICAgaWYgKGRhdGEueCA9PT0gbnVsbCkgewogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaW5oZXJpdCI7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7CiAgICAgICAgICBpbml0U2l6aW5nKGVsKTsKCiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7CiAgICAgICAgICBpZiAoYmluZGluZ0RlZi5pbml0aWFsaXplKSB7CiAgICAgICAgICAgIHZhciByZXN1bHQgPSBiaW5kaW5nRGVmLmluaXRpYWxpemUoZWwsIGVsLm9mZnNldFdpZHRoLAogICAgICAgICAgICAgIGVsLm9mZnNldEhlaWdodCk7CiAgICAgICAgICAgIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiLCByZXN1bHQpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBiaW5kaW5nRGVmLnJlbmRlclZhbHVlKGVsLCBkYXRhLngsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSk7CiAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiksIFtlbCwgZGF0YS54XSk7CiAgICAgIH07CgogICAgICAvLyBPbmx5IG92ZXJyaWRlIHJlc2l6ZSBpZiBiaW5kaW5nRGVmIGltcGxlbWVudHMgaXQKICAgICAgaWYgKGJpbmRpbmdEZWYucmVzaXplKSB7CiAgICAgICAgc2hpbnlCaW5kaW5nLnJlc2l6ZSA9IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAgICAgICAvLyBTaGlueSBjYW4gY2FsbCByZXNpemUgYmVmb3JlIGluaXRpYWxpemUvcmVuZGVyVmFsdWUgaGF2ZSBiZWVuCiAgICAgICAgICAvLyBjYWxsZWQsIHdoaWNoIGRvZXNuJ3QgbWFrZSBzZW5zZSBmb3Igd2lkZ2V0cy4KICAgICAgICAgIGlmIChlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIikpIHsKICAgICAgICAgICAgYmluZGluZ0RlZi5yZXNpemUoZWwsIHdpZHRoLCBoZWlnaHQsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSk7CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgfQoKICAgICAgU2hpbnkub3V0cHV0QmluZGluZ3MucmVnaXN0ZXIoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLm5hbWUpOwogICAgfQogIH07CgogIHZhciBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogIGZ1bmN0aW9uIHNjaGVkdWxlU3RhdGljUmVuZGVyKCkgewogICAgaWYgKCFzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQpIHsKICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKICAgICAgICBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOwogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsKICAgICAgfSwgMSk7CiAgICB9CiAgfQoKICAvLyBSZW5kZXIgc3RhdGljIHdpZGdldHMgYWZ0ZXIgdGhlIGRvY3VtZW50IGZpbmlzaGVzIGxvYWRpbmcKICAvLyBTdGF0aWNhbGx5IHJlbmRlciBhbGwgZWxlbWVudHMgdGhhdCBhcmUgb2YgdGhpcyB3aWRnZXQncyBjbGFzcwogIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIgPSBmdW5jdGlvbigpIHsKICAgIHZhciBiaW5kaW5ncyA9IHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzIHx8IFtdOwogICAgZm9yRWFjaChiaW5kaW5ncywgZnVuY3Rpb24oYmluZGluZykgewogICAgICB2YXIgbWF0Y2hlcyA9IGJpbmRpbmcuZmluZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwogICAgICBmb3JFYWNoKG1hdGNoZXMsIGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgdmFyIHNpemVPYmogPSBpbml0U2l6aW5nKGVsLCBiaW5kaW5nKTsKCiAgICAgICAgaWYgKGhhc0NsYXNzKGVsLCAiaHRtbC13aWRnZXQtc3RhdGljLWJvdW5kIikpCiAgICAgICAgICByZXR1cm47CiAgICAgICAgZWwuY2xhc3NOYW1lID0gZWwuY2xhc3NOYW1lICsgIiBodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiOwoKICAgICAgICB2YXIgaW5pdFJlc3VsdDsKICAgICAgICBpZiAoYmluZGluZy5pbml0aWFsaXplKSB7CiAgICAgICAgICBpbml0UmVzdWx0ID0gYmluZGluZy5pbml0aWFsaXplKGVsLAogICAgICAgICAgICBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0CiAgICAgICAgICApOwogICAgICAgICAgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIsIGluaXRSZXN1bHQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGJpbmRpbmcucmVzaXplKSB7CiAgICAgICAgICB2YXIgbGFzdFNpemUgPSB7fTsKICAgICAgICAgIHZhciByZXNpemVIYW5kbGVyID0gZnVuY3Rpb24oZSkgewogICAgICAgICAgICB2YXIgc2l6ZSA9IHsKICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsCiAgICAgICAgICAgICAgaDogc2l6ZU9iaiA/IHNpemVPYmouZ2V0SGVpZ2h0KCkgOiBlbC5vZmZzZXRIZWlnaHQKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApCiAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICBpZiAoc2l6ZS53ID09PSBsYXN0U2l6ZS53ICYmIHNpemUuaCA9PT0gbGFzdFNpemUuaCkKICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIGxhc3RTaXplID0gc2l6ZTsKICAgICAgICAgICAgYmluZGluZy5yZXNpemUoZWwsIHNpemUudywgc2l6ZS5oLCBpbml0UmVzdWx0KTsKICAgICAgICAgIH07CgogICAgICAgICAgb24od2luZG93LCAicmVzaXplIiwgcmVzaXplSGFuZGxlcik7CgogICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGNhc2VzIHdoZXJlIHdlJ3JlIHJ1bm5pbmcgaW4gYSBTaGlueQogICAgICAgICAgLy8gYXBwLCBidXQgdGhlIHdpZGdldCBpdHNlbGYgaXMgbm90IGEgU2hpbnkgb3V0cHV0LCBidXQKICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzCiAgICAgICAgICAvLyBhbiBybWFya2Rvd24gZG9jdW1lbnQgdGhhdCBoYXMgcnVudGltZTpzaGlueSBhbmQgd2lkZ2V0CiAgICAgICAgICAvLyB0aGF0IGlzbid0IGluIGEgcmVuZGVyIGZ1bmN0aW9uLiBTaGlueSBvbmx5IGtub3dzIHRvCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMKICAgICAgICAgIC8vIHdpZGdldHMsIHNvIHdlIGRvIGl0IG91cnNlbHZlcy4KICAgICAgICAgIGlmICh3aW5kb3cualF1ZXJ5KSB7CiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKAogICAgICAgICAgICAgICJzaG93bi5odG1sd2lkZ2V0cyBzaG93bi5icy50YWIuaHRtbHdpZGdldHMgc2hvd24uYnMuY29sbGFwc2UuaHRtbHdpZGdldHMiLAogICAgICAgICAgICAgIHJlc2l6ZUhhbmRsZXIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgd2luZG93LmpRdWVyeShkb2N1bWVudCkub24oCiAgICAgICAgICAgICAgImhpZGRlbi5odG1sd2lkZ2V0cyBoaWRkZW4uYnMudGFiLmh0bWx3aWRnZXRzIGhpZGRlbi5icy5jb2xsYXBzZS5odG1sd2lkZ2V0cyIsCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcgogICAgICAgICAgICApOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgc3BlY2lmaWMgY2FzZSBvZiBpb3NsaWRlcywgd2hpY2gKICAgICAgICAgIC8vIGZsaXBzIHNsaWRlcyBiZXR3ZWVuIGRpc3BsYXk6bm9uZSBhbmQgZGlzcGxheTpibG9jay4KICAgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgbm90IGhhdmUgdG8gaGF2ZSBpb3NsaWRlLXNwZWNpZmljIGNvZGUKICAgICAgICAgIC8vIGhlcmUsIGJ1dCByYXRoZXIgaGF2ZSBpb3NsaWRlcyByYWlzZSBhIGdlbmVyaWMgZXZlbnQsCiAgICAgICAgICAvLyBidXQgdGhlIHJtYXJrZG93biBwYWNrYWdlIGp1c3Qgd2VudCB0byBDUkFOIHNvIHRoZQogICAgICAgICAgLy8gd2luZG93IHRvIGdldHRpbmcgdGhhdCBmaXhlZCBtYXkgYmUgbG9uZy4KICAgICAgICAgIGlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikgewogICAgICAgICAgICAvLyBJdCdzIE9LIHRvIGxpbWl0IHRoaXMgdG8gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIKICAgICAgICAgICAgLy8gYnJvd3NlcnMgYmVjYXVzZSBpb3NsaWRlcyBpdHNlbGYgb25seSBzdXBwb3J0cwogICAgICAgICAgICAvLyBzdWNoIGJyb3dzZXJzLgogICAgICAgICAgICBvbihkb2N1bWVudCwgInNsaWRlZW50ZXIiLCByZXNpemVIYW5kbGVyKTsKICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWxlYXZlIiwgcmVzaXplSGFuZGxlcik7CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgc2NyaXB0RGF0YSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXSIpOwogICAgICAgIGlmIChzY3JpcHREYXRhKSB7CiAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc2NyaXB0RGF0YS50ZXh0Q29udGVudCB8fCBzY3JpcHREYXRhLnRleHQpOwogICAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMKICAgICAgICAgIGlmICghKGRhdGEuZXZhbHMgaW5zdGFuY2VvZiBBcnJheSkpIGRhdGEuZXZhbHMgPSBbZGF0YS5ldmFsc107CiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgZGF0YS5ldmFscyAmJiBrIDwgZGF0YS5ldmFscy5sZW5ndGg7IGsrKykgewogICAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2tdKTsKICAgICAgICAgIH0KICAgICAgICAgIGJpbmRpbmcucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgaW5pdFJlc3VsdCk7CiAgICAgICAgICBldmFsQW5kUnVuKGRhdGEuanNIb29rcy5yZW5kZXIsIGluaXRSZXN1bHQsIFtlbCwgZGF0YS54XSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH0pOwoKICAgIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpOwogIH0KCiAgLy8gV2FpdCB1bnRpbCBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGxvYWRlZCB0byByZW5kZXIgdGhlIHdpZGdldHMuCiAgaWYgKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBmdW5jdGlvbigpIHsKICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGFyZ3VtZW50cy5jYWxsZWUsIGZhbHNlKTsKICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgfSwgZmFsc2UpOwogIH0gZWxzZSBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsKICAgIGRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCBmdW5jdGlvbigpIHsKICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICJjb21wbGV0ZSIpIHsKICAgICAgICBkb2N1bWVudC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgYXJndW1lbnRzLmNhbGxlZSk7CiAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOwogICAgICB9CiAgICB9KTsKICB9CgoKICB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0QXR0YWNobWVudFVybCA9IGZ1bmN0aW9uKGRlcG5hbWUsIGtleSkgewogICAgLy8gSWYgbm8ga2V5LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBpdGVtCiAgICBpZiAodHlwZW9mKGtleSkgPT09ICJ1bmRlZmluZWQiKQogICAgICBrZXkgPSAxOwoKICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVwbmFtZSArICItIiArIGtleSArICItYXR0YWNobWVudCIpOwogICAgaWYgKCFsaW5rKSB7CiAgICAgIHRocm93IG5ldyBFcnJvcigiQXR0YWNobWVudCAiICsgZGVwbmFtZSArICIvIiArIGtleSArICIgbm90IGZvdW5kIGluIGRvY3VtZW50Iik7CiAgICB9CiAgICByZXR1cm4gbGluay5nZXRBdHRyaWJ1dGUoImhyZWYiKTsKICB9OwoKICB3aW5kb3cuSFRNTFdpZGdldHMuZGF0YWZyYW1lVG9EMyA9IGZ1bmN0aW9uKGRmKSB7CiAgICB2YXIgbmFtZXMgPSBbXTsKICAgIHZhciBsZW5ndGg7CiAgICBmb3IgKHZhciBuYW1lIGluIGRmKSB7CiAgICAgICAgaWYgKGRmLmhhc093blByb3BlcnR5KG5hbWUpKQogICAgICAgICAgICBuYW1lcy5wdXNoKG5hbWUpOwogICAgICAgIGlmICh0eXBlb2YoZGZbbmFtZV0pICE9PSAib2JqZWN0IiB8fCB0eXBlb2YoZGZbbmFtZV0ubGVuZ3RoKSA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIik7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YobGVuZ3RoKSAhPT0gInVuZGVmaW5lZCIgJiYgbGVuZ3RoICE9PSBkZltuYW1lXS5sZW5ndGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpOwogICAgICAgIH0KICAgICAgICBsZW5ndGggPSBkZltuYW1lXS5sZW5ndGg7CiAgICB9CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgdmFyIGl0ZW07CiAgICBmb3IgKHZhciByb3cgPSAwOyByb3cgPCBsZW5ndGg7IHJvdysrKSB7CiAgICAgICAgaXRlbSA9IHt9OwogICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG5hbWVzLmxlbmd0aDsgY29sKyspIHsKICAgICAgICAgICAgaXRlbVtuYW1lc1tjb2xdXSA9IGRmW25hbWVzW2NvbF1dW3Jvd107CiAgICAgICAgfQogICAgICAgIHJlc3VsdHMucHVzaChpdGVtKTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH07CgogIHdpbmRvdy5IVE1MV2lkZ2V0cy50cmFuc3Bvc2VBcnJheTJEID0gZnVuY3Rpb24oYXJyYXkpIHsKICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFycmF5OwogICAgICB2YXIgbmV3QXJyYXkgPSBhcnJheVswXS5tYXAoZnVuY3Rpb24oY29sLCBpKSB7CiAgICAgICAgICByZXR1cm4gYXJyYXkubWFwKGZ1bmN0aW9uKHJvdykgewogICAgICAgICAgICAgIHJldHVybiByb3dbaV0KICAgICAgICAgIH0pCiAgICAgIH0pOwogICAgICByZXR1cm4gbmV3QXJyYXk7CiAgfTsKICAvLyBTcGxpdCB2YWx1ZSBhdCBzcGxpdENoYXIsIGJ1dCBhbGxvdyBzcGxpdENoYXIgdG8gYmUgZXNjYXBlZAogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcgogIC8vIHdpbGwgYmUgaW5jbHVkZWQgYXMgdXN1YWwgKGluY2x1ZGluZyBlc2NhcGVDaGFyIGl0c2VsZikuCiAgZnVuY3Rpb24gc3BsaXRXaXRoRXNjYXBlKHZhbHVlLCBzcGxpdENoYXIsIGVzY2FwZUNoYXIpIHsKICAgIHZhciByZXN1bHRzID0gW107CiAgICB2YXIgZXNjYXBlTW9kZSA9IGZhbHNlOwogICAgdmFyIGN1cnJlbnRSZXN1bHQgPSAiIjsKICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsKICAgICAgaWYgKCFlc2NhcGVNb2RlKSB7CiAgICAgICAgaWYgKHZhbHVlW3Bvc10gPT09IHNwbGl0Q2hhcikgewogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOwogICAgICAgICAgY3VycmVudFJlc3VsdCA9ICIiOwogICAgICAgIH0gZWxzZSBpZiAodmFsdWVbcG9zXSA9PT0gZXNjYXBlQ2hhcikgewogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGN1cnJlbnRSZXN1bHQgKz0gdmFsdWVbcG9zXTsKICAgICAgICB9CiAgICAgIH0gZWxzZSB7CiAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOwogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7CiAgICAgIHJlc3VsdHMucHVzaChjdXJyZW50UmVzdWx0KTsKICAgIH0KICAgIHJldHVybiByZXN1bHRzOwogIH0KICAvLyBGdW5jdGlvbiBhdXRob3JlZCBieSBZaWh1aS9KSiBBbGxhaXJlCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7CiAgICB2YXIgcGFydHMgPSBzcGxpdFdpdGhFc2NhcGUobWVtYmVyLCAnLicsICdcXCcpOwogICAgZm9yICh2YXIgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHsKICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsKICAgICAgLy8gcGFydCBtYXkgYmUgYSBjaGFyYWN0ZXIgb3IgJ251bWVyaWMnIG1lbWJlciBuYW1lCiAgICAgIGlmIChvICE9PSBudWxsICYmIHR5cGVvZiBvID09PSAib2JqZWN0IiAmJiBwYXJ0IGluIG8pIHsKICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlCiAgICAgICAgICBpZiAodHlwZW9mIG9bcGFydF0gPT09ICJzdHJpbmciKQogICAgICAgICAgICBvW3BhcnRdID0gZXZhbCgiKCIgKyBvW3BhcnRdICsgIikiKTsKICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QKICAgICAgICAgIG8gPSBvW3BhcnRdOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH07CgogIC8vIFJldHJpZXZlIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlIChpLmUuIHRoZSByZXR1cm4gdmFsdWUgb2YgYW4KICAvLyBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQogIC8vIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LCBvciBudWxsIGlmIG5vbmUuCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlID0gZnVuY3Rpb24oZWwpIHsKICAgIHJldHVybiBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0Iik7CiAgfTsKCiAgLy8gRmluZHMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNjb3BlIHRoYXQgbWF0Y2hlcyB0aGUgc2VsZWN0b3IsCiAgLy8gYW5kIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZgogIC8vIGFuIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pCiAgLy8gYXNzb2NpYXRlZCB3aXRoIHRoYXQgZWxlbWVudCwgaWYgYW55LiBJZiBubyBlbGVtZW50IG1hdGNoZXMgdGhlCiAgLy8gc2VsZWN0b3IsIG9yIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGhhcyBubyBIVE1MV2lkZ2V0CiAgLy8gaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGl0LCB0aGVuIG51bGwgaXMgcmV0dXJuZWQuCiAgLy8KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmQgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsKICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDEpIHsKICAgICAgc2VsZWN0b3IgPSBzY29wZTsKICAgICAgc2NvcGUgPSBkb2N1bWVudDsKICAgIH0KCiAgICB2YXIgZWwgPSBzY29wZS5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgIGlmIChlbCA9PT0gbnVsbCkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiB3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2UoZWwpOwogICAgfQogIH07CgogIC8vIEZpbmRzIGFsbCBlbGVtZW50cyBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsIGFuZAogIC8vIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2VzIChpLmUuIHRoZSByZXR1cm4gdmFsdWVzIG9mCiAgLy8gYW4gSFRNTFdpZGdldCBiaW5kaW5nJ3MgaW5pdGlhbGl6ZSgpIG9yIGZhY3RvcnkoKSBmdW5jdGlvbikKICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRzLCBpbiBhbiBhcnJheS4gSWYgZWxlbWVudHMgdGhhdAogIC8vIG1hdGNoIHRoZSBzZWxlY3RvciBkb24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgSFRNTFdpZGdldAogIC8vIGluc3RhbmNlLCB0aGUgcmV0dXJuZWQgYXJyYXkgd2lsbCBjb250YWluIG51bGxzLgogIC8vCiAgLy8gVGhlIHNjb3BlIGFyZ3VtZW50IGlzIG9wdGlvbmFsLCBhbmQgZGVmYXVsdHMgdG8gd2luZG93LmRvY3VtZW50LgogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kQWxsID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7CiAgICAgIHNlbGVjdG9yID0gc2NvcGU7CiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7CiAgICB9CgogICAgdmFyIG5vZGVzID0gc2NvcGUucXVlcnlTZWxlY3RvckFsbChzZWxlY3Rvcik7CiAgICB2YXIgcmVzdWx0cyA9IFtdOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewogICAgICByZXN1bHRzLnB1c2god2luZG93LkhUTUxXaWRnZXRzLmdldEluc3RhbmNlKG5vZGVzW2ldKSk7CiAgICB9CiAgICByZXR1cm4gcmVzdWx0czsKICB9OwoKICB2YXIgcG9zdFJlbmRlckhhbmRsZXJzID0gW107CiAgZnVuY3Rpb24gaW52b2tlUG9zdFJlbmRlckhhbmRsZXJzKCkgewogICAgd2hpbGUgKHBvc3RSZW5kZXJIYW5kbGVycy5sZW5ndGgpIHsKICAgICAgdmFyIGhhbmRsZXIgPSBwb3N0UmVuZGVySGFuZGxlcnMuc2hpZnQoKTsKICAgICAgaWYgKGhhbmRsZXIpIHsKICAgICAgICBoYW5kbGVyKCk7CiAgICAgIH0KICAgIH0KICB9CgogIC8vIFJlZ2lzdGVyIHRoZSBnaXZlbiBjYWxsYmFjayBmdW5jdGlvbiB0byBiZSBpbnZva2VkIGFmdGVyIHRoZQogIC8vIG5leHQgdGltZSBzdGF0aWMgd2lkZ2V0cyBhcmUgcmVuZGVyZWQuCiAgd2luZG93LkhUTUxXaWRnZXRzLmFkZFBvc3RSZW5kZXJIYW5kbGVyID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgIHBvc3RSZW5kZXJIYW5kbGVycy5wdXNoKGNhbGxiYWNrKTsKICB9OwoKICAvLyBUYWtlcyBhIG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9uLCBhbmQgcmV0dXJucyBhbgogIC8vIG9sZC1zdHlsZSBjbGFzcy1ib3VuZCBkZWZpbml0aW9uLiBUaGlzIHNhdmVzIHVzIGZyb20gaGF2aW5nCiAgLy8gdG8gcmV3cml0ZSBhbGwgdGhlIGxvZ2ljIGluIHRoaXMgZmlsZSB0byBhY2NvbW9kYXRlIGJvdGgKICAvLyB0eXBlcyBvZiBkZWZpbml0aW9ucy4KICBmdW5jdGlvbiBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZuKSB7CiAgICB2YXIgcmVzdWx0ID0gewogICAgICBuYW1lOiBkZWZuLm5hbWUsCiAgICAgIHR5cGU6IGRlZm4udHlwZSwKICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsKICAgICAgICByZXR1cm4gZGVmbi5mYWN0b3J5KGVsLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgfSwKICAgICAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCB4LCBpbnN0YW5jZSkgewogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZW5kZXJWYWx1ZSh4KTsKICAgICAgfSwKICAgICAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsKICAgICAgICByZXR1cm4gaW5zdGFuY2UucmVzaXplKHdpZHRoLCBoZWlnaHQpOwogICAgICB9CiAgICB9OwoKICAgIGlmIChkZWZuLmZpbmQpCiAgICAgIHJlc3VsdC5maW5kID0gZGVmbi5maW5kOwogICAgaWYgKGRlZm4ucmVuZGVyRXJyb3IpCiAgICAgIHJlc3VsdC5yZW5kZXJFcnJvciA9IGRlZm4ucmVuZGVyRXJyb3I7CiAgICBpZiAoZGVmbi5jbGVhckVycm9yKQogICAgICByZXN1bHQuY2xlYXJFcnJvciA9IGRlZm4uY2xlYXJFcnJvcjsKCiAgICByZXR1cm4gcmVzdWx0OwogIH0KfSkoKTsKCg=="></script>
<script src="data:application/x-javascript;base64,LyohIGpRdWVyeSB2MS4xMi40IHwgKGMpIGpRdWVyeSBGb3VuZGF0aW9uIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCiFmdW5jdGlvbihhLGIpeyJvYmplY3QiPT10eXBlb2YgbW9kdWxlJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWEuZG9jdW1lbnQ/YihhLCEwKTpmdW5jdGlvbihhKXtpZighYS5kb2N1bWVudCl0aHJvdyBuZXcgRXJyb3IoImpRdWVyeSByZXF1aXJlcyBhIHdpbmRvdyB3aXRoIGEgZG9jdW1lbnQiKTtyZXR1cm4gYihhKX06YihhKX0oInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkPWEuZG9jdW1lbnQsZT1jLnNsaWNlLGY9Yy5jb25jYXQsZz1jLnB1c2gsaD1jLmluZGV4T2YsaT17fSxqPWkudG9TdHJpbmcsaz1pLmhhc093blByb3BlcnR5LGw9e30sbT0iMS4xMi40IixuPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBuLmZuLmluaXQoYSxiKX0sbz0vXltcc1x1RkVGRlx4QTBdK3xbXHNcdUZFRkZceEEwXSskL2cscD0vXi1tcy0vLHE9Ly0oW1xkYS16XSkvZ2kscj1mdW5jdGlvbihhLGIpe3JldHVybiBiLnRvVXBwZXJDYXNlKCl9O24uZm49bi5wcm90b3R5cGU9e2pxdWVyeTptLGNvbnN0cnVjdG9yOm4sc2VsZWN0b3I6IiIsbGVuZ3RoOjAsdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBlLmNhbGwodGhpcyl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YT8wPmE/dGhpc1thK3RoaXMubGVuZ3RoXTp0aGlzW2FdOmUuY2FsbCh0aGlzKX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEpe3ZhciBiPW4ubWVyZ2UodGhpcy5jb25zdHJ1Y3RvcigpLGEpO3JldHVybiBiLnByZXZPYmplY3Q9dGhpcyxiLmNvbnRleHQ9dGhpcy5jb250ZXh0LGJ9LGVhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZWFjaCh0aGlzLGEpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4ubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmxlbmd0aCxjPSthKygwPmE/YjowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYz49MCYmYj5jP1t0aGlzW2NdXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXMuY29uc3RydWN0b3IoKX0scHVzaDpnLHNvcnQ6Yy5zb3J0LHNwbGljZTpjLnNwbGljZX0sbi5leHRlbmQ9bi5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09dHlwZW9mIGd8fG4uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxnIT09YyYmKGomJmMmJihuLmlzUGxhaW5PYmplY3QoYyl8fChiPW4uaXNBcnJheShjKSkpPyhiPyhiPSExLGY9YSYmbi5pc0FycmF5KGEpP2E6W10pOmY9YSYmbi5pc1BsYWluT2JqZWN0KGEpP2E6e30sZ1tkXT1uLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbi5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKG0rTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW4udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXkiPT09bi50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXt2YXIgYj1hJiZhLnRvU3RyaW5nKCk7cmV0dXJuIW4uaXNBcnJheShhKSYmYi1wYXJzZUZsb2F0KGIpKzE+PTB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGIgaW4gYSlyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtpZighYXx8Im9iamVjdCIhPT1uLnR5cGUoYSl8fGEubm9kZVR5cGV8fG4uaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFrLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWsuY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfWlmKCFsLm93bkZpcnN0KWZvcihiIGluIGEpcmV0dXJuIGsuY2FsbChhLGIpO2ZvcihiIGluIGEpO3JldHVybiB2b2lkIDA9PT1ifHxrLmNhbGwoYSxiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyIiOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE/aVtqLmNhbGwoYSldfHwib2JqZWN0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZuLnRyaW0oYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UocCwibXMtIikucmVwbGFjZShxLHIpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTA7aWYocyhhKSl7Zm9yKGM9YS5sZW5ndGg7Yz5kO2QrKylpZihiLmNhbGwoYVtkXSxkLGFbZF0pPT09ITEpYnJlYWt9ZWxzZSBmb3IoZCBpbiBhKWlmKGIuY2FsbChhW2RdLGQsYVtkXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjooYSsiIikucmVwbGFjZShvLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107cmV0dXJuIG51bGwhPWEmJihzKE9iamVjdChhKSk/bi5tZXJnZShjLCJzdHJpbmciPT10eXBlb2YgYT9bYV06YSk6Zy5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGIpe2lmKGgpcmV0dXJuIGguY2FsbChiLGEsYyk7Zm9yKGQ9Yi5sZW5ndGgsYz1jPzA+Yz9NYXRoLm1heCgwLGQrYyk6YzowO2Q+YztjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgYz0rYi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7d2hpbGUoYz5kKWFbZSsrXT1iW2QrK107aWYoYyE9PWMpd2hpbGUodm9pZCAwIT09YltkXSlhW2UrK109YltkKytdO3JldHVybiBhLmxlbmd0aD1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGc9MCxoPVtdO2lmKHMoYSkpZm9yKGQ9YS5sZW5ndGg7ZD5nO2crKyllPWIoYVtnXSxnLGMpLG51bGwhPWUmJmgucHVzaChlKTtlbHNlIGZvcihnIGluIGEpZT1iKGFbZ10sZyxjKSxudWxsIT1lJiZoLnB1c2goZSk7cmV0dXJuIGYuYXBwbHkoW10saCl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihmPWFbYl0sYj1hLGE9Ziksbi5pc0Z1bmN0aW9uKGEpPyhjPWUuY2FsbChhcmd1bWVudHMsMiksZD1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGJ8fHRoaXMsYy5jb25jYXQoZS5jYWxsKGFyZ3VtZW50cykpKX0sZC5ndWlkPWEuZ3VpZD1hLmd1aWR8fG4uZ3VpZCsrLGQpOnZvaWQgMH0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxzdXBwb3J0Omx9KSwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYobi5mbltTeW1ib2wuaXRlcmF0b3JdPWNbU3ltYm9sLml0ZXJhdG9yXSksbi5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIFN5bWJvbCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2lbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSk7ZnVuY3Rpb24gcyhhKXt2YXIgYj0hIWEmJiJsZW5ndGgiaW4gYSYmYS5sZW5ndGgsYz1uLnR5cGUoYSk7cmV0dXJuImZ1bmN0aW9uIj09PWN8fG4uaXNXaW5kb3coYSk/ITE6ImFycmF5Ij09PWN8fDA9PT1ifHwibnVtYmVyIj09dHlwZW9mIGImJmI+MCYmYi0xIGluIGF9dmFyIHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzLHQsdT0ic2l6emxlIisxKm5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9Z2EoKSx6PWdhKCksQT1nYSgpLEI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPTE8PDMxLEQ9e30uaGFzT3duUHJvcGVydHksRT1bXSxGPUUucG9wLEc9RS5wdXNoLEg9RS5wdXNoLEk9RS5zbGljZSxKPWZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtkPmM7YysrKWlmKGFbY109PT1iKXJldHVybiBjO3JldHVybi0xfSxLPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxkaXNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3BlZCIsTD0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTT0iKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSsiLE49IlxcWyIrTCsiKigiK00rIikoPzoiK0wrIiooWypeJHwhfl0/PSkiK0wrIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0pKilcInwoIitNKyIpKXwpIitMKyIqXFxdIixPPSI6KCIrTSsiKSg/OlxcKCgoJygoPzpcXFxcLnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwoKVtcXF1dfCIrTisiKSopfC4qKVxcKXwpIixQPW5ldyBSZWdFeHAoTCsiKyIsImciKSxRPW5ldyBSZWdFeHAoIl4iK0wrIit8KCg/Ol58W15cXFxcXSkoPzpcXFxcLikqKSIrTCsiKyQiLCJnIiksUj1uZXcgUmVnRXhwKCJeIitMKyIqLCIrTCsiKiIpLFM9bmV3IFJlZ0V4cCgiXiIrTCsiKihbPit+XXwiK0wrIikiK0wrIioiKSxUPW5ldyBSZWdFeHAoIj0iK0wrIiooW15cXF0nXCJdKj8pIitMKyIqXFxdIiwiZyIpLFU9bmV3IFJlZ0V4cChPKSxWPW5ldyBSZWdFeHAoIl4iK00rIiQiKSxXPXtJRDpuZXcgUmVnRXhwKCJeIygiK00rIikiKSxDTEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTSsiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTSsifFsqXSkiKSxBVFRSOm5ldyBSZWdFeHAoIl4iK04pLFBTRVVETzpuZXcgUmVnRXhwKCJeIitPKSxDSElMRDpuZXcgUmVnRXhwKCJeOihvbmx5fGZpcnN0fGxhc3R8bnRofG50aC1sYXN0KS0oY2hpbGR8b2YtdHlwZSkoPzpcXCgiK0wrIiooZXZlbnxvZGR8KChbKy1dfCkoXFxkKilufCkiK0wrIiooPzooWystXXwpIitMKyIqKFxcZCspfCkpIitMKyIqXFwpfCkiLCJpIiksYm9vbDpuZXcgUmVnRXhwKCJeKD86IitLKyIpJCIsImkiKSxuZWVkc0NvbnRleHQ6bmV3IFJlZ0V4cCgiXiIrTCsiKls+K35dfDooZXZlbnxvZGR8ZXF8Z3R8bHR8bnRofGZpcnN0fGxhc3QpKD86XFwoIitMKyIqKCg/Oi1cXGQpP1xcZCopIitMKyIqXFwpfCkoPz1bXi1dfCQpIiwiaSIpfSxYPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbikkL2ksWT0vXmhcZCQvaSxaPS9eW157XStce1xzKlxbbmF0aXZlIFx3LywkPS9eKD86IyhbXHctXSspfChcdyspfFwuKFtcdy1dKykpJC8sXz0vWyt+XS8sYWE9Lyd8XFwvZyxiYT1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0wrIj98KCIrTCsiKXwuKSIsImlnIiksY2E9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9LGRhPWZ1bmN0aW9uKCl7bSgpfTt0cnl7SC5hcHBseShFPUkuY2FsbCh2LmNoaWxkTm9kZXMpLHYuY2hpbGROb2RlcyksRVt2LmNoaWxkTm9kZXMubGVuZ3RoXS5ub2RlVHlwZX1jYXRjaChlYSl7SD17YXBwbHk6RS5sZW5ndGg/ZnVuY3Rpb24oYSxiKXtHLmFwcGx5KGEsSS5jYWxsKGIpKX06ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmxlbmd0aCxkPTA7d2hpbGUoYVtjKytdPWJbZCsrXSk7YS5sZW5ndGg9Yy0xfX19ZnVuY3Rpb24gZmEoYSxiLGQsZSl7dmFyIGYsaCxqLGssbCxvLHIscyx3PWImJmIub3duZXJEb2N1bWVudCx4PWI/Yi5ub2RlVHlwZTo5O2lmKGQ9ZHx8W10sInN0cmluZyIhPXR5cGVvZiBhfHwhYXx8MSE9PXgmJjkhPT14JiYxMSE9PXgpcmV0dXJuIGQ7aWYoIWUmJigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixwKSl7aWYoMTEhPT14JiYobz0kLmV4ZWMoYSkpKWlmKGY9b1sxXSl7aWYoOT09PXgpe2lmKCEoaj1iLmdldEVsZW1lbnRCeUlkKGYpKSlyZXR1cm4gZDtpZihqLmlkPT09ZilyZXR1cm4gZC5wdXNoKGopLGR9ZWxzZSBpZih3JiYoaj13LmdldEVsZW1lbnRCeUlkKGYpKSYmdChiLGopJiZqLmlkPT09ZilyZXR1cm4gZC5wdXNoKGopLGR9ZWxzZXtpZihvWzJdKXJldHVybiBILmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtpZigoZj1vWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEguYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZikpLGR9aWYoYy5xc2EmJiFBW2ErIiAiXSYmKCFxfHwhcS50ZXN0KGEpKSl7aWYoMSE9PXgpdz1iLHM9YTtlbHNlIGlmKCJvYmplY3QiIT09Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXsoaz1iLmdldEF0dHJpYnV0ZSgiaWQiKSk/az1rLnJlcGxhY2UoYWEsIlxcJCYiKTpiLnNldEF0dHJpYnV0ZSgiaWQiLGs9dSkscj1nKGEpLGg9ci5sZW5ndGgsbD1WLnRlc3Qoayk/IiMiK2s6IltpZD0nIitrKyInXSI7d2hpbGUoaC0tKXJbaF09bCsiICIrcWEocltoXSk7cz1yLmpvaW4oIiwiKSx3PV8udGVzdChhKSYmb2EoYi5wYXJlbnROb2RlKXx8Yn1pZihzKXRyeXtyZXR1cm4gSC5hcHBseShkLHcucXVlcnlTZWxlY3RvckFsbChzKSksZH1jYXRjaCh5KXt9ZmluYWxseXtrPT09dSYmYi5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gaShhLnJlcGxhY2UoUSwiJDEiKSxiLGQsZSl9ZnVuY3Rpb24gZ2EoKXt2YXIgYT1bXTtmdW5jdGlvbiBiKGMsZSl7cmV0dXJuIGEucHVzaChjKyIgIik+ZC5jYWNoZUxlbmd0aCYmZGVsZXRlIGJbYS5zaGlmdCgpXSxiW2MrIiAiXT1lfXJldHVybiBifWZ1bmN0aW9uIGhhKGEpe3JldHVybiBhW3VdPSEwLGF9ZnVuY3Rpb24gaWEoYSl7dmFyIGI9bi5jcmVhdGVFbGVtZW50KCJkaXYiKTt0cnl7cmV0dXJuISFhKGIpfWNhdGNoKGMpe3JldHVybiExfWZpbmFsbHl7Yi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksYj1udWxsfX1mdW5jdGlvbiBqYShhLGIpe3ZhciBjPWEuc3BsaXQoInwiKSxlPWMubGVuZ3RoO3doaWxlKGUtLSlkLmF0dHJIYW5kbGVbY1tlXV09Yn1mdW5jdGlvbiBrYShhLGIpe3ZhciBjPWImJmEsZD1jJiYxPT09YS5ub2RlVHlwZSYmMT09PWIubm9kZVR5cGUmJih+Yi5zb3VyY2VJbmRleHx8QyktKH5hLnNvdXJjZUluZGV4fHxDKTtpZihkKXJldHVybiBkO2lmKGMpd2hpbGUoYz1jLm5leHRTaWJsaW5nKWlmKGM9PT1iKXJldHVybi0xO3JldHVybiBhPzE6LTF9ZnVuY3Rpb24gbGEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YyYmYi50eXBlPT09YX19ZnVuY3Rpb24gbWEoYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oImlucHV0Ij09PWN8fCJidXR0b24iPT09YykmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG5hKGEpe3JldHVybiBoYShmdW5jdGlvbihiKXtyZXR1cm4gYj0rYixoYShmdW5jdGlvbihjLGQpe3ZhciBlLGY9YShbXSxjLmxlbmd0aCxiKSxnPWYubGVuZ3RoO3doaWxlKGctLSljW2U9ZltnXV0mJihjW2VdPSEoZFtlXT1jW2VdKSl9KX0pfWZ1bmN0aW9uIG9hKGEpe3JldHVybiBhJiYidW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUmJmF9Yz1mYS5zdXBwb3J0PXt9LGY9ZmEuaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9YSYmKGEub3duZXJEb2N1bWVudHx8YSkuZG9jdW1lbnRFbGVtZW50O3JldHVybiBiPyJIVE1MIiE9PWIubm9kZU5hbWU6ITF9LG09ZmEuc2V0RG9jdW1lbnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZSxnPWE/YS5vd25lckRvY3VtZW50fHxhOnY7cmV0dXJuIGchPT1uJiY5PT09Zy5ub2RlVHlwZSYmZy5kb2N1bWVudEVsZW1lbnQ/KG49ZyxvPW4uZG9jdW1lbnRFbGVtZW50LHA9IWYobiksKGU9bi5kZWZhdWx0VmlldykmJmUudG9wIT09ZSYmKGUuYWRkRXZlbnRMaXN0ZW5lcj9lLmFkZEV2ZW50TGlzdGVuZXIoInVubG9hZCIsZGEsITEpOmUuYXR0YWNoRXZlbnQmJmUuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixkYSkpLGMuYXR0cmlidXRlcz1pYShmdW5jdGlvbihhKXtyZXR1cm4gYS5jbGFzc05hbWU9ImkiLCFhLmdldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIil9KSxjLmdldEVsZW1lbnRzQnlUYWdOYW1lPWlhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmFwcGVuZENoaWxkKG4uY3JlYXRlQ29tbWVudCgiIikpLCFhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RofSksYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lPVoudGVzdChuLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpLGMuZ2V0QnlJZD1pYShmdW5jdGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFuLmdldEVsZW1lbnRzQnlOYW1lfHwhbi5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50QnlJZCYmcCl7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYz9bY106W119fSxkLmZpbHRlci5JRD1mdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoYmEsY2EpO3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImlkIik9PT1ifX0pOihkZWxldGUgZC5maW5kLklELGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShiYSxjYSk7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBjPSJ1bmRlZmluZWQiIT10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGMmJmMudmFsdWU9PT1ifX0pLGQuZmluZC5UQUc9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZT9mdW5jdGlvbihhLGIpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOmMucXNhP2IucXVlcnlTZWxlY3RvckFsbChhKTp2b2lkIDB9OmZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPTAsZj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpO2lmKCIqIj09PWEpe3doaWxlKGM9ZltlKytdKTE9PT1jLm5vZGVUeXBlJiZkLnB1c2goYyk7cmV0dXJuIGR9cmV0dXJuIGZ9LGQuZmluZC5DTEFTUz1jLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmZ1bmN0aW9uKGEsYil7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJnA/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT1aLnRlc3Qobi5xdWVyeVNlbGVjdG9yQWxsKSkmJihpYShmdW5jdGlvbihhKXtvLmFwcGVuZENoaWxkKGEpLmlubmVySFRNTD0iPGEgaWQ9JyIrdSsiJz48L2E+PHNlbGVjdCBpZD0nIit1KyItXHJcXCcgbXNhbGxvd2NhcHR1cmU9Jyc+PG9wdGlvbiBzZWxlY3RlZD0nJz48L29wdGlvbj48L3NlbGVjdD4iLGEucXVlcnlTZWxlY3RvckFsbCgiW21zYWxsb3djYXB0dXJlXj0nJ10iKS5sZW5ndGgmJnEucHVzaCgiWypeJF09IitMKyIqKD86Jyd8XCJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fHEucHVzaCgiXFxbIitMKyIqKD86dmFsdWV8IitLKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbaWR+PSIrdSsiLV0iKS5sZW5ndGh8fHEucHVzaCgifj0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJhIyIrdSsiKyoiKS5sZW5ndGh8fHEucHVzaCgiLiMuK1srfl0iKX0pLGlhKGZ1bmN0aW9uKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtiLnNldEF0dHJpYnV0ZSgidHlwZSIsImhpZGRlbiIpLGEuYXBwZW5kQ2hpbGQoYikuc2V0QXR0cmlidXRlKCJuYW1lIiwiRCIpLGEucXVlcnlTZWxlY3RvckFsbCgiW25hbWU9ZF0iKS5sZW5ndGgmJnEucHVzaCgibmFtZSIrTCsiKlsqXiR8IX5dPz0iKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjplbmFibGVkIikubGVuZ3RofHxxLnB1c2goIjplbmFibGVkIiwiOmRpc2FibGVkIiksYS5xdWVyeVNlbGVjdG9yQWxsKCIqLDp4IikscS5wdXNoKCIsLio6Iil9KSksKGMubWF0Y2hlc1NlbGVjdG9yPVoudGVzdChzPW8ubWF0Y2hlc3x8by53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fG8ubW96TWF0Y2hlc1NlbGVjdG9yfHxvLm9NYXRjaGVzU2VsZWN0b3J8fG8ubXNNYXRjaGVzU2VsZWN0b3IpKSYmaWEoZnVuY3Rpb24oYSl7Yy5kaXNjb25uZWN0ZWRNYXRjaD1zLmNhbGwoYSwiZGl2Iikscy5jYWxsKGEsIltzIT0nJ106eCIpLHIucHVzaCgiIT0iLE8pfSkscT1xLmxlbmd0aCYmbmV3IFJlZ0V4cChxLmpvaW4oInwiKSkscj1yLmxlbmd0aCYmbmV3IFJlZ0V4cChyLmpvaW4oInwiKSksYj1aLnRlc3Qoby5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiksdD1ifHxaLnRlc3Qoby5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT09ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oYSxiKXtpZihiKXdoaWxlKGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSxCPWI/ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1bWVudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEsMSZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1kP2E9PT1ufHxhLm93bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYSk/LTE6Yj09PW58fGIub3duZXJEb2N1bWVudD09PXYmJnQodixiKT8xOms/SihrLGEpLUooayxiKTowOjQmZD8tMToxKX06ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gbD0hMCwwO3ZhciBjLGQ9MCxlPWEucGFyZW50Tm9kZSxmPWIucGFyZW50Tm9kZSxnPVthXSxoPVtiXTtpZighZXx8IWYpcmV0dXJuIGE9PT1uPy0xOmI9PT1uPzE6ZT8tMTpmPzE6az9KKGssYSktSihrLGIpOjA7aWYoZT09PWYpcmV0dXJuIGthKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWcudW5zaGlmdChjKTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaC51bnNoaWZ0KGMpO3doaWxlKGdbZF09PT1oW2RdKWQrKztyZXR1cm4gZD9rYShnW2RdLGhbZF0pOmdbZF09PT12Py0xOmhbZF09PT12PzE6MH0sbik6bn0sZmEubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBmYShhLG51bGwsbnVsbCxiKX0sZmEubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLGI9Yi5yZXBsYWNlKFQsIj0nJDEnXSIpLGMubWF0Y2hlc1NlbGVjdG9yJiZwJiYhQVtiKyIgIl0mJighcnx8IXIudGVzdChiKSkmJighcXx8IXEudGVzdChiKSkpdHJ5e3ZhciBkPXMuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0Y2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChlKXt9cmV0dXJuIGZhKGIsbixudWxsLFthXSkubGVuZ3RoPjB9LGZhLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZtKGEpLHQoYSxiKX0sZmEuYXR0cj1mdW5jdGlvbihhLGIpeyhhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKTt2YXIgZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZSgpXSxmPWUmJkQuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhcCk6dm9pZCAwO3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1dGVzfHwhcD9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGZhLmVycm9yPWZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIithKX0sZmEudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYobD0hYy5kZXRlY3REdXBsaWNhdGVzLGs9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoQiksbCl7d2hpbGUoYj1hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dXJuIGs9bnVsbCxhfSxlPWZhLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVUeXBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENvbnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1mYS5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0ZVBzZXVkbzpoYSxtYXRjaDpXLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBhcmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1NpYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUjpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoYmEsY2EpLGFbM109KGFbM118fGFbNF18fGFbNV18fCIiKS5yZXBsYWNlKGJhLGNhKSwifj0iPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAsNCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWFbMV0uc2xpY2UoMCwzKT8oYVszXXx8ZmEuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MSk6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hWzNdKSk6YVszXSYmZmEuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNl0mJmFbMl07cmV0dXJuIFcuQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdP2FbMl09YVs0XXx8YVs1XXx8IiI6YyYmVS50ZXN0KGMpJiYoYj1nKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0aC1iKS1jLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSksYS5zbGljZSgwLDMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShiYSxjYSkudG9Mb3dlckNhc2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIGI9eVthKyIgIl07cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrTCsiKSIrYSsiKCIrTCsifCQpIikpJiZ5KGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZhLmNsYXNzTmFtZXx8InVuZGVmaW5lZCIhPXR5cGVvZiBhLmdldEF0dHJpYnV0ZSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9ZmEuYXR0cihkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOmI/KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/ZSE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UucmVwbGFjZShQLCIgIikrIiAiKS5pbmRleE9mKGMpPi0xOiJ8PSI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fSxDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiIT09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbmciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHM9IWkmJiFoLHQ9ITE7aWYocSl7aWYoZil7d2hpbGUocCl7bT1iO3doaWxlKG09bVtwXSlpZihoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpcmV0dXJuITE7bz1wPSJvbmx5Ij09PWEmJiFvJiYibmV4dFNpYmxpbmcifXJldHVybiEwfWlmKG89W2c/cS5maXJzdENoaWxkOnEubGFzdENoaWxkXSxnJiZzKXttPXEsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biYmalsyXSxtPW4mJnEuY2hpbGROb2Rlc1tuXTt3aGlsZShtPSsrbiYmbSYmbVtwXXx8KHQ9bj0wKXx8by5wb3AoKSlpZigxPT09bS5ub2RlVHlwZSYmKyt0JiZtPT09Yil7a1thXT1bdyxuLHRdO2JyZWFrfX1lbHNlIGlmKHMmJihtPWIsbD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksaj1rW2FdfHxbXSxuPWpbMF09PT13JiZqWzFdLHQ9biksdD09PSExKXdoaWxlKG09KytuJiZtJiZtW3BdfHwodD1uPTApfHxvLnBvcCgpKWlmKChoP20ubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PW0ubm9kZVR5cGUpJiYrK3QmJihzJiYobD1tW3VdfHwobVt1XT17fSksaz1sW20udW5pcXVlSURdfHwobFttLnVuaXF1ZUlEXT17fSksa1thXT1bdyx0XSksbT09PWIpKWJyZWFrO3JldHVybiB0LT1lLHQ9PT1kfHx0JWQ9PT0wJiZ0L2Q+PTB9fX0sUFNFVURPOmZ1bmN0aW9uKGEsYil7dmFyIGMsZT1kLnBzZXVkb3NbYV18fGQuc2V0RmlsdGVyc1thLnRvTG93ZXJDYXNlKCldfHxmYS5lcnJvcigidW5zdXBwb3J0ZWQgcHNldWRvOiAiK2EpO3JldHVybiBlW3VdP2UoYik6ZS5sZW5ndGg+MT8oYz1bYSxhLCIiLGJdLGQuc2V0RmlsdGVycy5oYXNPd25Qcm9wZXJ0eShhLnRvTG93ZXJDYXNlKCkpP2hhKGZ1bmN0aW9uKGEsYyl7dmFyIGQsZj1lKGEsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pZD1KKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTpmdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmhhKGZ1bmN0aW9uKGEpe3ZhciBiPVtdLGM9W10sZD1oKGEucmVwbGFjZShRLCIkMSIpKTtyZXR1cm4gZFt1XT9oYShmdW5jdGlvbihhLGIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYoYVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSxiWzBdPW51bGwsIWMucG9wKCl9fSksaGFzOmhhKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZmEoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczpoYShmdW5jdGlvbihhKXtyZXR1cm4gYT1hLnJlcGxhY2UoYmEsY2EpLGZ1bmN0aW9uKGIpe3JldHVybihiLnRleHRDb250ZW50fHxiLmlubmVyVGV4dHx8ZShiKSkuaW5kZXhPZihhKT4tMX19KSxsYW5nOmhhKGZ1bmN0aW9uKGEpe3JldHVybiBWLnRlc3QoYXx8IiIpfHxmYS5lcnJvcigidW5zdXBwb3J0ZWQgbGFuZzogIithKSxhPWEucmVwbGFjZShiYSxjYSkudG9Mb3dlckNhc2UoKSxmdW5jdGlvbihiKXt2YXIgYztkbyBpZihjPXA/Yi5sYW5nOmIuZ2V0QXR0cmlidXRlKCJ4bWw6bGFuZyIpfHxiLmdldEF0dHJpYnV0ZSgibGFuZyIpKXJldHVybiBjPWMudG9Mb3dlckNhc2UoKSxjPT09YXx8MD09PWMuaW5kZXhPZihhKyItIik7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmMT09PWIubm9kZVR5cGUpO3JldHVybiExfX0pLHRhcmdldDpmdW5jdGlvbihiKXt2YXIgYz1hLmxvY2F0aW9uJiZhLmxvY2F0aW9uLmhhc2g7cmV0dXJuIGMmJmMuc2xpY2UoMSk9PT1iLmlkfSxyb290OmZ1bmN0aW9uKGEpe3JldHVybiBhPT09b30sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1uLmFjdGl2ZUVsZW1lbnQmJighbi5oYXNGb2N1c3x8bi5oYXNGb2N1cygpKSYmISEoYS50eXBlfHxhLmhyZWZ8fH5hLnRhYkluZGV4KX0sZW5hYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExfSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmISFhLmNoZWNrZWR8fCJvcHRpb24iPT09YiYmISFhLnNlbGVjdGVkfSxzZWxlY3RlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCxhLnNlbGVjdGVkPT09ITB9LGVtcHR5OmZ1bmN0aW9uKGEpe2ZvcihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZylpZihhLm5vZGVUeXBlPDYpcmV0dXJuITE7cmV0dXJuITB9LHBhcmVudDpmdW5jdGlvbihhKXtyZXR1cm4hZC5wc2V1ZG9zLmVtcHR5KGEpfSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIFkudGVzdChhLm5vZGVOYW1lKX0saW5wdXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFgudGVzdChhLm5vZGVOYW1lKX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09YiYmImJ1dHRvbiI9PT1hLnR5cGV8fCJidXR0b24iPT09Yn0sdGV4dDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4iaW5wdXQiPT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYidGV4dCI9PT1hLnR5cGUmJihudWxsPT0oYj1hLmdldEF0dHJpYnV0ZSgidHlwZSIpKXx8InRleHQiPT09Yi50b0xvd2VyQ2FzZSgpKX0sZmlyc3Q6bmEoZnVuY3Rpb24oKXtyZXR1cm5bMF19KSxsYXN0Om5hKGZ1bmN0aW9uKGEsYil7cmV0dXJuW2ItMV19KSxlcTpuYShmdW5jdGlvbihhLGIsYyl7cmV0dXJuWzA+Yz9jK2I6Y119KSxldmVuOm5hKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTA7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksb2RkOm5hKGZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTE7Yj5jO2MrPTIpYS5wdXNoKGMpO3JldHVybiBhfSksbHQ6bmEoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOmM7LS1kPj0wOylhLnB1c2goZCk7cmV0dXJuIGF9KSxndDpuYShmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzsrK2Q8YjspYS5wdXNoKGQpO3JldHVybiBhfSl9fSxkLnBzZXVkb3MubnRoPWQucHNldWRvcy5lcTtmb3IoYiBpbntyYWRpbzohMCxjaGVja2JveDohMCxmaWxlOiEwLHBhc3N3b3JkOiEwLGltYWdlOiEwfSlkLnBzZXVkb3NbYl09bGEoYik7Zm9yKGIgaW57c3VibWl0OiEwLHJlc2V0OiEwfSlkLnBzZXVkb3NbYl09bWEoYik7ZnVuY3Rpb24gcGEoKXt9cGEucHJvdG90eXBlPWQuZmlsdGVycz1kLnBzZXVkb3MsZC5zZXRGaWx0ZXJzPW5ldyBwYSxnPWZhLnRva2VuaXplPWZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz16W2ErIiAiXTtpZihrKXJldHVybiBiPzA6ay5zbGljZSgwKTtoPWEsaT1bXSxqPWQucHJlRmlsdGVyO3doaWxlKGgpe2MmJiEoZT1SLmV4ZWMoaCkpfHwoZSYmKGg9aC5zbGljZShlWzBdLmxlbmd0aCl8fGgpLGkucHVzaChmPVtdKSksYz0hMSwoZT1TLmV4ZWMoaCkpJiYoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZVswXS5yZXBsYWNlKFEsIiAiKX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2ZvcihnIGluIGQuZmlsdGVyKSEoZT1XW2ddLmV4ZWMoaCkpfHxqW2ddJiYhKGU9altnXShlKSl8fChjPWUuc2hpZnQoKSxmLnB1c2goe3ZhbHVlOmMsdHlwZTpnLG1hdGNoZXM6ZX0pLGg9aC5zbGljZShjLmxlbmd0aCkpO2lmKCFjKWJyZWFrfXJldHVybiBiP2gubGVuZ3RoOmg/ZmEuZXJyb3IoYSk6eihhLGkpLnNsaWNlKDApfTtmdW5jdGlvbiBxYShhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLGQ9IiI7Yz5iO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHJhKGEsYixjKXt2YXIgZD1iLmRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj14Kys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGYpe3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGIsYyxnKXt2YXIgaCxpLGosaz1bdyxmXTtpZihnKXt3aGlsZShiPWJbZF0paWYoKDE9PT1iLm5vZGVUeXBlfHxlKSYmYShiLGMsZykpcmV0dXJuITB9ZWxzZSB3aGlsZShiPWJbZF0paWYoMT09PWIubm9kZVR5cGV8fGUpe2lmKGo9Ylt1XXx8KGJbdV09e30pLGk9altiLnVuaXF1ZUlEXXx8KGpbYi51bmlxdWVJRF09e30pLChoPWlbZF0pJiZoWzBdPT09dyYmaFsxXT09PWYpcmV0dXJuIGtbMl09aFsyXTtpZihpW2RdPWssa1syXT1hKGIsYyxnKSlyZXR1cm4hMH19fWZ1bmN0aW9uIHNhKGEpe3JldHVybiBhLmxlbmd0aD4xP2Z1bmN0aW9uKGIsYyxkKXt2YXIgZT1hLmxlbmd0aDt3aGlsZShlLS0paWYoIWFbZV0oYixjLGQpKXJldHVybiExO3JldHVybiEwfTphWzBdfWZ1bmN0aW9uIHRhKGEsYixjKXtmb3IodmFyIGQ9MCxlPWIubGVuZ3RoO2U+ZDtkKyspZmEoYSxiW2RdLGMpO3JldHVybiBjfWZ1bmN0aW9uIHVhKGEsYixjLGQsZSl7Zm9yKHZhciBmLGc9W10saD0wLGk9YS5sZW5ndGgsaj1udWxsIT1iO2k+aDtoKyspKGY9YVtoXSkmJihjJiYhYyhmLGQsZSl8fChnLnB1c2goZiksaiYmYi5wdXNoKGgpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gdmEoYSxiLGMsZCxlLGYpe3JldHVybiBkJiYhZFt1XSYmKGQ9dmEoZCkpLGUmJiFlW3VdJiYoZT12YShlLGYpKSxoYShmdW5jdGlvbihmLGcsaCxpKXt2YXIgaixrLGwsbT1bXSxuPVtdLG89Zy5sZW5ndGgscD1mfHx0YShifHwiKiIsaC5ub2RlVHlwZT9baF06aCxbXSkscT0hYXx8IWYmJmI/cDp1YShwLG0sYSxoLGkpLHI9Yz9lfHwoZj9hOm98fGQpP1tdOmc6cTtpZihjJiZjKHEscixoLGkpLGQpe2o9dWEocixuKSxkKGosW10saCxpKSxrPWoubGVuZ3RoO3doaWxlKGstLSkobD1qW2tdKSYmKHJbbltrXV09IShxW25ba11dPWwpKX1pZihmKXtpZihlfHxhKXtpZihlKXtqPVtdLGs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiZqLnB1c2gocVtrXT1sKTtlKG51bGwscj1bXSxqLGkpfWs9ci5sZW5ndGg7d2hpbGUoay0tKShsPXJba10pJiYoaj1lP0ooZixsKTptW2tdKT4tMSYmKGZbal09IShnW2pdPWwpKX19ZWxzZSByPXVhKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGcscixpKTpILmFwcGx5KGcscil9KX1mdW5jdGlvbiB3YShhKXtmb3IodmFyIGIsYyxlLGY9YS5sZW5ndGgsZz1kLnJlbGF0aXZlW2FbMF0udHlwZV0saD1nfHxkLnJlbGF0aXZlWyIgIl0saT1nPzE6MCxrPXJhKGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Yn0saCwhMCksbD1yYShmdW5jdGlvbihhKXtyZXR1cm4gSihiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlvbihhLGMsZCl7dmFyIGU9IWcmJihkfHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTpsKGEsYyxkKSk7cmV0dXJuIGI9bnVsbCxlfV07Zj5pO2krKylpZihjPWQucmVsYXRpdmVbYVtpXS50eXBlXSltPVtyYShzYShtKSxjKV07ZWxzZXtpZihjPWQuZmlsdGVyW2FbaV0udHlwZV0uYXBwbHkobnVsbCxhW2ldLm1hdGNoZXMpLGNbdV0pe2ZvcihlPSsraTtmPmU7ZSsrKWlmKGQucmVsYXRpdmVbYVtlXS50eXBlXSlicmVhaztyZXR1cm4gdmEoaT4xJiZzYShtKSxpPjEmJnFhKGEuc2xpY2UoMCxpLTEpLmNvbmNhdCh7dmFsdWU6IiAiPT09YVtpLTJdLnR5cGU/IioiOiIifSkpLnJlcGxhY2UoUSwiJDEiKSxjLGU+aSYmd2EoYS5zbGljZShpLGUpKSxmPmUmJndhKGE9YS5zbGljZShlKSksZj5lJiZxYShhKSl9bS5wdXNoKGMpfXJldHVybiBzYShtKX1mdW5jdGlvbiB4YShhLGIpe3ZhciBjPWIubGVuZ3RoPjAsZT1hLmxlbmd0aD4wLGY9ZnVuY3Rpb24oZixnLGgsaSxrKXt2YXIgbCxvLHEscj0wLHM9IjAiLHQ9ZiYmW10sdT1bXSx2PWoseD1mfHxlJiZkLmZpbmQuVEFHKCIqIixrKSx5PXcrPW51bGw9PXY/MTpNYXRoLnJhbmRvbSgpfHwuMSx6PXgubGVuZ3RoO2ZvcihrJiYoaj1nPT09bnx8Z3x8ayk7cyE9PXomJm51bGwhPShsPXhbc10pO3MrKyl7aWYoZSYmbCl7bz0wLGd8fGwub3duZXJEb2N1bWVudD09PW58fChtKGwpLGg9IXApO3doaWxlKHE9YVtvKytdKWlmKHEobCxnfHxuLGgpKXtpLnB1c2gobCk7YnJlYWt9ayYmKHc9eSl9YyYmKChsPSFxJiZsKSYmci0tLGYmJnQucHVzaChsKSl9aWYocis9cyxjJiZzIT09cil7bz0wO3doaWxlKHE9YltvKytdKXEodCx1LGcsaCk7aWYoZil7aWYocj4wKXdoaWxlKHMtLSl0W3NdfHx1W3NdfHwodVtzXT1GLmNhbGwoaSkpO3U9dWEodSl9SC5hcHBseShpLHUpLGsmJiFmJiZ1Lmxlbmd0aD4wJiZyK2IubGVuZ3RoPjEmJmZhLnVuaXF1ZVNvcnQoaSl9cmV0dXJuIGsmJih3PXksaj12KSx0fTtyZXR1cm4gYz9oYShmKTpmfXJldHVybiBoPWZhLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9W10sZj1BW2ErIiAiXTtpZighZil7Ynx8KGI9ZyhhKSksYz1iLmxlbmd0aDt3aGlsZShjLS0pZj13YShiW2NdKSxmW3VdP2QucHVzaChmKTplLnB1c2goZik7Zj1BKGEseGEoZSxkKSksZi5zZWxlY3Rvcj1hfXJldHVybiBmfSxpPWZhLnNlbGVjdD1mdW5jdGlvbihhLGIsZSxmKXt2YXIgaSxqLGssbCxtLG49ImZ1bmN0aW9uIj09dHlwZW9mIGEmJmEsbz0hZiYmZyhhPW4uc2VsZWN0b3J8fGEpO2lmKGU9ZXx8W10sMT09PW8ubGVuZ3RoKXtpZihqPW9bMF09b1swXS5zbGljZSgwKSxqLmxlbmd0aD4yJiYiSUQiPT09KGs9alswXSkudHlwZSYmYy5nZXRCeUlkJiY5PT09Yi5ub2RlVHlwZSYmcCYmZC5yZWxhdGl2ZVtqWzFdLnR5cGVdKXtpZihiPShkLmZpbmQuSUQoay5tYXRjaGVzWzBdLnJlcGxhY2UoYmEsY2EpLGIpfHxbXSlbMF0sIWIpcmV0dXJuIGU7biYmKGI9Yi5wYXJlbnROb2RlKSxhPWEuc2xpY2Uoai5zaGlmdCgpLnZhbHVlLmxlbmd0aCl9aT1XLm5lZWRzQ29udGV4dC50ZXN0KGEpPzA6ai5sZW5ndGg7d2hpbGUoaS0tKXtpZihrPWpbaV0sZC5yZWxhdGl2ZVtsPWsudHlwZV0pYnJlYWs7aWYoKG09ZC5maW5kW2xdKSYmKGY9bShrLm1hdGNoZXNbMF0ucmVwbGFjZShiYSxjYSksXy50ZXN0KGpbMF0udHlwZSkmJm9hKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYoai5zcGxpY2UoaSwxKSxhPWYubGVuZ3RoJiZxYShqKSwhYSlyZXR1cm4gSC5hcHBseShlLGYpLGU7YnJlYWt9fX1yZXR1cm4obnx8aChhLG8pKShmLGIsIXAsZSwhYnx8Xy50ZXN0KGEpJiZvYShiLnBhcmVudE5vZGUpfHxiKSxlfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9aWEoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImRpdiIpKX0pLGlhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGphKCJ0eXBlfGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmlhKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGphKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGlhKGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxqYShLLGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxmYX0oYSk7bi5maW5kPXQsbi5leHByPXQuc2VsZWN0b3JzLG4uZXhwclsiOiJdPW4uZXhwci5wc2V1ZG9zLG4udW5pcXVlU29ydD1uLnVuaXF1ZT10LnVuaXF1ZVNvcnQsbi50ZXh0PXQuZ2V0VGV4dCxuLmlzWE1MRG9jPXQuaXNYTUwsbi5jb250YWlucz10LmNvbnRhaW5zO3ZhciB1PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPXZvaWQgMCE9PWM7d2hpbGUoKGE9YVtiXSkmJjkhPT1hLm5vZGVUeXBlKWlmKDE9PT1hLm5vZGVUeXBlKXtpZihlJiZuKGEpLmlzKGMpKWJyZWFrO2QucHVzaChhKX1yZXR1cm4gZH0sdj1mdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1bXTthO2E9YS5uZXh0U2libGluZykxPT09YS5ub2RlVHlwZSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY30sdz1uLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LHg9L148KFtcdy1dKylccypcLz8+KD86PFwvXDE+fCkkLyx5PS9eLlteOiNcW1wuLF0qJC87ZnVuY3Rpb24geihhLGIsYyl7aWYobi5pc0Z1bmN0aW9uKGIpKXJldHVybiBuLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiEhYi5jYWxsKGEsZCxhKSE9PWN9KTtpZihiLm5vZGVUeXBlKXJldHVybiBuLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gYT09PWIhPT1jfSk7aWYoInN0cmluZyI9PXR5cGVvZiBiKXtpZih5LnRlc3QoYikpcmV0dXJuIG4uZmlsdGVyKGIsYSxjKTtiPW4uZmlsdGVyKGIsYSl9cmV0dXJuIG4uZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBuLmluQXJyYXkoYSxiKT4tMSE9PWN9KX1uLmZpbHRlcj1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9YlswXTtyZXR1cm4gYyYmKGE9Ijpub3QoIithKyIpIiksMT09PWIubGVuZ3RoJiYxPT09ZC5ub2RlVHlwZT9uLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGQsYSk/W2RdOltdOm4uZmluZC5tYXRjaGVzKGEsbi5ncmVwKGIsZnVuY3Rpb24oYSl7cmV0dXJuIDE9PT1hLm5vZGVUeXBlfSkpfSxuLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYixjPVtdLGQ9dGhpcyxlPWQubGVuZ3RoO2lmKCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gdGhpcy5wdXNoU3RhY2sobihhKS5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2U+YjtiKyspaWYobi5jb250YWlucyhkW2JdLHRoaXMpKXJldHVybiEwfSkpO2ZvcihiPTA7ZT5iO2IrKyluLmZpbmQoYSxkW2JdLGMpO3JldHVybiBjPXRoaXMucHVzaFN0YWNrKGU+MT9uLnVuaXF1ZShjKTpjKSxjLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3I/dGhpcy5zZWxlY3RvcisiICIrYTphLGN9LGZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soeih0aGlzLGF8fFtdLCExKSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soeih0aGlzLGF8fFtdLCEwKSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEheih0aGlzLCJzdHJpbmciPT10eXBlb2YgYSYmdy50ZXN0KGEpP24oYSk6YXx8W10sITEpLmxlbmd0aH19KTt2YXIgQSxCPS9eKD86XHMqKDxbXHdcV10rPilbXj5dKnwjKFtcdy1dKikpJC8sQz1uLmZuLmluaXQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBlLGY7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYz1jfHxBLCJzdHJpbmciPT10eXBlb2YgYSl7aWYoZT0iPCI9PT1hLmNoYXJBdCgwKSYmIj4iPT09YS5jaGFyQXQoYS5sZW5ndGgtMSkmJmEubGVuZ3RoPj0zP1tudWxsLGEsbnVsbF06Qi5leGVjKGEpLCFlfHwhZVsxXSYmYilyZXR1cm4hYnx8Yi5qcXVlcnk/KGJ8fGMpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihiKS5maW5kKGEpO2lmKGVbMV0pe2lmKGI9YiBpbnN0YW5jZW9mIG4/YlswXTpiLG4ubWVyZ2UodGhpcyxuLnBhcnNlSFRNTChlWzFdLGImJmIubm9kZVR5cGU/Yi5vd25lckRvY3VtZW50fHxiOmQsITApKSx4LnRlc3QoZVsxXSkmJm4uaXNQbGFpbk9iamVjdChiKSlmb3IoZSBpbiBiKW4uaXNGdW5jdGlvbih0aGlzW2VdKT90aGlzW2VdKGJbZV0pOnRoaXMuYXR0cihlLGJbZV0pO3JldHVybiB0aGlzfWlmKGY9ZC5nZXRFbGVtZW50QnlJZChlWzJdKSxmJiZmLnBhcmVudE5vZGUpe2lmKGYuaWQhPT1lWzJdKXJldHVybiBBLmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWZ9cmV0dXJuIHRoaXMuY29udGV4dD1kLHRoaXMuc2VsZWN0b3I9YSx0aGlzfXJldHVybiBhLm5vZGVUeXBlPyh0aGlzLmNvbnRleHQ9dGhpc1swXT1hLHRoaXMubGVuZ3RoPTEsdGhpcyk6bi5pc0Z1bmN0aW9uKGEpPyJ1bmRlZmluZWQiIT10eXBlb2YgYy5yZWFkeT9jLnJlYWR5KGEpOmEobik6KHZvaWQgMCE9PWEuc2VsZWN0b3ImJih0aGlzLnNlbGVjdG9yPWEuc2VsZWN0b3IsdGhpcy5jb250ZXh0PWEuY29udGV4dCksbi5tYWtlQXJyYXkoYSx0aGlzKSl9O0MucHJvdG90eXBlPW4uZm4sQT1uKGQpO3ZhciBEPS9eKD86cGFyZW50c3xwcmV2KD86VW50aWx8QWxsKSkvLEU9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07bi5mbi5leHRlbmQoe2hhczpmdW5jdGlvbihhKXt2YXIgYixjPW4oYSx0aGlzKSxkPWMubGVuZ3RoO3JldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpe2ZvcihiPTA7ZD5iO2IrKylpZihuLmNvbnRhaW5zKHRoaXMsY1tiXSkpcmV0dXJuITB9KX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPTAsZT10aGlzLmxlbmd0aCxmPVtdLGc9dy50ZXN0KGEpfHwic3RyaW5nIiE9dHlwZW9mIGE/bihhLGJ8fHRoaXMuY29udGV4dCk6MDtlPmQ7ZCsrKWZvcihjPXRoaXNbZF07YyYmYyE9PWI7Yz1jLnBhcmVudE5vZGUpaWYoYy5ub2RlVHlwZTwxMSYmKGc/Zy5pbmRleChjKT4tMToxPT09Yy5ub2RlVHlwZSYmbi5maW5kLm1hdGNoZXNTZWxlY3RvcihjLGEpKSl7Zi5wdXNoKGMpO2JyZWFrfXJldHVybiB0aGlzLnB1c2hTdGFjayhmLmxlbmd0aD4xP24udW5pcXVlU29ydChmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP24uaW5BcnJheSh0aGlzWzBdLG4oYSkpOm4uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobi51bmlxdWVTb3J0KG4ubWVyZ2UodGhpcy5nZXQoKSxuKGEsYikpKSl9LGFkZEJhY2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuYWRkKG51bGw9PWE/dGhpcy5wcmV2T2JqZWN0OnRoaXMucHJldk9iamVjdC5maWx0ZXIoYSkpfX0pO2Z1bmN0aW9uIEYoYSxiKXtkbyBhPWFbYl07d2hpbGUoYSYmMSE9PWEubm9kZVR5cGUpO3JldHVybiBhfW4uZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmMTEhPT1iLm5vZGVUeXBlP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gdShhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHUoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIEYoYSwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gRihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gdShhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiB1KGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB1KGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdShhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gdigoYS5wYXJlbnROb2RlfHx7fSkuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIHYoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIG4ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDpuLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe24uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1uLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihlPW4uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihFW2FdfHwoZT1uLnVuaXF1ZVNvcnQoZSkpLEQudGVzdChhKSYmKGU9ZS5yZXZlcnNlKCkpKSx0aGlzLnB1c2hTdGFjayhlKX19KTt2YXIgRz0vXFMrL2c7ZnVuY3Rpb24gSChhKXt2YXIgYj17fTtyZXR1cm4gbi5lYWNoKGEubWF0Y2goRyl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/SChhKTpuLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQsZSxmPVtdLGc9W10saD0tMSxpPWZ1bmN0aW9uKCl7Zm9yKGU9YS5vbmNlLGQ9Yj0hMDtnLmxlbmd0aDtoPS0xKXtjPWcuc2hpZnQoKTt3aGlsZSgrK2g8Zi5sZW5ndGgpZltoXS5hcHBseShjWzBdLGNbMV0pPT09ITEmJmEuc3RvcE9uRmFsc2UmJihoPWYubGVuZ3RoLGM9ITEpfWEubWVtb3J5fHwoYz0hMSksYj0hMSxlJiYoZj1jP1tdOiIiKX0saj17YWRkOmZ1bmN0aW9uKCl7cmV0dXJuIGYmJihjJiYhYiYmKGg9Zi5sZW5ndGgtMSxnLnB1c2goYykpLGZ1bmN0aW9uIGQoYil7bi5lYWNoKGIsZnVuY3Rpb24oYixjKXtuLmlzRnVuY3Rpb24oYyk/YS51bmlxdWUmJmouaGFzKGMpfHxmLnB1c2goYyk6YyYmYy5sZW5ndGgmJiJzdHJpbmciIT09bi50eXBlKGMpJiZkKGMpfSl9KGFyZ3VtZW50cyksYyYmIWImJmkoKSksdGhpc30scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIG4uZWFjaChhcmd1bWVudHMsZnVuY3Rpb24oYSxiKXt2YXIgYzt3aGlsZSgoYz1uLmluQXJyYXkoYixmLGMpKT4tMSlmLnNwbGljZShjLDEpLGg+PWMmJmgtLX0pLHRoaXN9LGhhczpmdW5jdGlvbihhKXtyZXR1cm4gYT9uLmluQXJyYXkoYSxmKT4tMTpmLmxlbmd0aD4wfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiBmJiYoZj1bXSksdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBlPWc9W10sZj1jPSIiLHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWZ9LGxvY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZT0hMCxjfHxqLmRpc2FibGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWV9LGZpcmVXaXRoOmZ1bmN0aW9uKGEsYyl7cmV0dXJuIGV8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sZy5wdXNoKGMpLGJ8fGkoKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBqLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBqfSxuLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbi5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVybiBuLkRlZmVycmVkKGZ1bmN0aW9uKGMpe24uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bi5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXMsYXJndW1lbnRzKTthJiZuLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5wcm9ncmVzcyhjLm5vdGlmeSkuZG9uZShjLnJlc29sdmUpLmZhaWwoYy5yZWplY3QpOmNbZlswXSsiV2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP24uZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbi5lYWNoKGIsZnVuY3Rpb24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1lLmNhbGwoYXJndW1lbnRzKSxkPWMubGVuZ3RoLGY9MSE9PWR8fGEmJm4uaXNGdW5jdGlvbihhLnByb21pc2UpP2Q6MCxnPTE9PT1mP2E6bi5EZWZlcnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihkKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVudHMubGVuZ3RoPjE/ZS5jYWxsKGFyZ3VtZW50cyk6ZCxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGQ+MSlmb3IoaT1uZXcgQXJyYXkoZCksaj1uZXcgQXJyYXkoZCksaz1uZXcgQXJyYXkoZCk7ZD5iO2IrKyljW2JdJiZuLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5wcm9ncmVzcyhoKGIsaixpKSkuZG9uZShoKGIsayxjKSkuZmFpbChnLnJlamVjdCk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEk7bi5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbi5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxuLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9uLnJlYWR5V2FpdCsrOm4ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXsoYT09PSEwPy0tbi5yZWFkeVdhaXQ6bi5pc1JlYWR5KXx8KG4uaXNSZWFkeT0hMCxhIT09ITAmJi0tbi5yZWFkeVdhaXQ+MHx8KEkucmVzb2x2ZVdpdGgoZCxbbl0pLG4uZm4udHJpZ2dlckhhbmRsZXImJihuKGQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpLG4oZCkub2ZmKCJyZWFkeSIpKSkpfX0pO2Z1bmN0aW9uIEooKXtkLmFkZEV2ZW50TGlzdGVuZXI/KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSyksYS5yZW1vdmVFdmVudExpc3RlbmVyKCJsb2FkIixLKSk6KGQuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSyksYS5kZXRhY2hFdmVudCgib25sb2FkIixLKSl9ZnVuY3Rpb24gSygpeyhkLmFkZEV2ZW50TGlzdGVuZXJ8fCJsb2FkIj09PWEuZXZlbnQudHlwZXx8ImNvbXBsZXRlIj09PWQucmVhZHlTdGF0ZSkmJihKKCksbi5yZWFkeSgpKX1uLnJlYWR5LnByb21pc2U9ZnVuY3Rpb24oYil7aWYoIUkpaWYoST1uLkRlZmVycmVkKCksImNvbXBsZXRlIj09PWQucmVhZHlTdGF0ZXx8ImxvYWRpbmciIT09ZC5yZWFkeVN0YXRlJiYhZC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwpYS5zZXRUaW1lb3V0KG4ucmVhZHkpO2Vsc2UgaWYoZC5hZGRFdmVudExpc3RlbmVyKWQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsSyksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixLKTtlbHNle2QuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsSyksYS5hdHRhY2hFdmVudCgib25sb2FkIixLKTt2YXIgYz0hMTt0cnl7Yz1udWxsPT1hLmZyYW1lRWxlbWVudCYmZC5kb2N1bWVudEVsZW1lbnR9Y2F0Y2goZSl7fWMmJmMuZG9TY3JvbGwmJiFmdW5jdGlvbiBmKCl7aWYoIW4uaXNSZWFkeSl7dHJ5e2MuZG9TY3JvbGwoImxlZnQiKX1jYXRjaChiKXtyZXR1cm4gYS5zZXRUaW1lb3V0KGYsNTApfUooKSxuLnJlYWR5KCl9fSgpfXJldHVybiBJLnByb21pc2UoYil9LG4ucmVhZHkucHJvbWlzZSgpO3ZhciBMO2ZvcihMIGluIG4obCkpYnJlYWs7bC5vd25GaXJzdD0iMCI9PT1MLGwuaW5saW5lQmxvY2tOZWVkc0xheW91dD0hMSxuKGZ1bmN0aW9uKCl7dmFyIGEsYixjLGU7Yz1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZSYmKGI9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksZS5zdHlsZS5jc3NUZXh0PSJwb3NpdGlvbjphYnNvbHV0ZTtib3JkZXI6MDt3aWR0aDowO2hlaWdodDowO3RvcDowO2xlZnQ6LTk5OTlweCIsYy5hcHBlbmRDaGlsZChlKS5hcHBlbmRDaGlsZChiKSwidW5kZWZpbmVkIiE9dHlwZW9mIGIuc3R5bGUuem9vbSYmKGIuc3R5bGUuY3NzVGV4dD0iZGlzcGxheTppbmxpbmU7bWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzoxcHg7d2lkdGg6MXB4O3pvb206MSIsbC5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PWE9Mz09PWIub2Zmc2V0V2lkdGgsYSYmKGMuc3R5bGUuem9vbT0xKSksYy5yZW1vdmVDaGlsZChlKSl9KSxmdW5jdGlvbigpe3ZhciBhPWQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgYS50ZXN0fWNhdGNoKGIpe2wuZGVsZXRlRXhwYW5kbz0hMX1hPW51bGx9KCk7dmFyIE09ZnVuY3Rpb24oYSl7dmFyIGI9bi5ub0RhdGFbKGEubm9kZU5hbWUrIiAiKS50b0xvd2VyQ2FzZSgpXSxjPSthLm5vZGVUeXBlfHwxO3JldHVybiAxIT09YyYmOSE9PWM/ITE6IWJ8fGIhPT0hMCYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzaWQiKT09PWJ9LE49L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyxPPS8oW0EtWl0pL2c7ZnVuY3Rpb24gUChhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE8sIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpOLnRlc3QoYyk/bi5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bi5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwOwp9cmV0dXJuIGN9ZnVuY3Rpb24gUShhKXt2YXIgYjtmb3IoYiBpbiBhKWlmKCgiZGF0YSIhPT1ifHwhbi5pc0VtcHR5T2JqZWN0KGFbYl0pKSYmInRvSlNPTiIhPT1iKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIFIoYSxiLGQsZSl7aWYoTShhKSl7dmFyIGYsZyxoPW4uZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP24uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoO2lmKGsmJmpba10mJihlfHxqW2tdLmRhdGEpfHx2b2lkIDAhPT1kfHwic3RyaW5nIiE9dHlwZW9mIGIpcmV0dXJuIGt8fChrPWk/YVtoXT1jLnBvcCgpfHxuLmd1aWQrKzpoKSxqW2tdfHwoaltrXT1pP3t9Ont0b0pTT046bi5ub29wfSksIm9iamVjdCIhPXR5cGVvZiBiJiYiZnVuY3Rpb24iIT10eXBlb2YgYnx8KGU/altrXT1uLmV4dGVuZChqW2tdLGIpOmpba10uZGF0YT1uLmV4dGVuZChqW2tdLmRhdGEsYikpLGc9altrXSxlfHwoZy5kYXRhfHwoZy5kYXRhPXt9KSxnPWcuZGF0YSksdm9pZCAwIT09ZCYmKGdbbi5jYW1lbENhc2UoYildPWQpLCJzdHJpbmciPT10eXBlb2YgYj8oZj1nW2JdLG51bGw9PWYmJihmPWdbbi5jYW1lbENhc2UoYildKSk6Zj1nLGZ9fWZ1bmN0aW9uIFMoYSxiLGMpe2lmKE0oYSkpe3ZhciBkLGUsZj1hLm5vZGVUeXBlLGc9Zj9uLmNhY2hlOmEsaD1mP2Fbbi5leHBhbmRvXTpuLmV4cGFuZG87aWYoZ1toXSl7aWYoYiYmKGQ9Yz9nW2hdOmdbaF0uZGF0YSkpe24uaXNBcnJheShiKT9iPWIuY29uY2F0KG4ubWFwKGIsbi5jYW1lbENhc2UpKTpiIGluIGQ/Yj1bYl06KGI9bi5jYW1lbENhc2UoYiksYj1iIGluIGQ/W2JdOmIuc3BsaXQoIiAiKSksZT1iLmxlbmd0aDt3aGlsZShlLS0pZGVsZXRlIGRbYltlXV07aWYoYz8hUShkKTohbi5pc0VtcHR5T2JqZWN0KGQpKXJldHVybn0oY3x8KGRlbGV0ZSBnW2hdLmRhdGEsUShnW2hdKSkpJiYoZj9uLmNsZWFuRGF0YShbYV0sITApOmwuZGVsZXRlRXhwYW5kb3x8ZyE9Zy53aW5kb3c/ZGVsZXRlIGdbaF06Z1toXT12b2lkIDApfX19bi5leHRlbmQoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gYT1hLm5vZGVUeXBlP24uY2FjaGVbYVtuLmV4cGFuZG9dXTphW24uZXhwYW5kb10sISFhJiYhUShhKX0sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFIoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFMoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBSKGEsYixjLCEwKX0sX3JlbW92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyhhLGIsITApfX0pLG4uZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1hKXtpZih0aGlzLmxlbmd0aCYmKGU9bi5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbi5fZGF0YShmLCJwYXJzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZ1tjXSYmKGQ9Z1tjXS5uYW1lLDA9PT1kLmluZGV4T2YoImRhdGEtIikmJihkPW4uY2FtZWxDYXNlKGQuc2xpY2UoNSkpLFAoZixkLGVbZF0pKSk7bi5fZGF0YShmLCJwYXJzZWRBdHRycyIsITApfXJldHVybiBlfXJldHVybiJvYmplY3QiPT10eXBlb2YgYT90aGlzLmVhY2goZnVuY3Rpb24oKXtuLmRhdGEodGhpcyxhKX0pOmFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goZnVuY3Rpb24oKXtuLmRhdGEodGhpcyxhLGIpfSk6Zj9QKGYsYSxuLmRhdGEoZixhKSk6dm9pZCAwfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLnJlbW92ZURhdGEodGhpcyxhKX0pfX0pLG4uZXh0ZW5kKHtxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGE/KGI9KGJ8fCJmeCIpKyJxdWV1ZSIsZD1uLl9kYXRhKGEsYiksYyYmKCFkfHxuLmlzQXJyYXkoYyk/ZD1uLl9kYXRhKGEsYixuLm1ha2VBcnJheShjKSk6ZC5wdXNoKGMpKSxkfHxbXSk6dm9pZCAwfSxkZXF1ZXVlOmZ1bmN0aW9uKGEsYil7Yj1ifHwiZngiO3ZhciBjPW4ucXVldWUoYSxiKSxkPWMubGVuZ3RoLGU9Yy5zaGlmdCgpLGY9bi5fcXVldWVIb29rcyhhLGIpLGc9ZnVuY3Rpb24oKXtuLmRlcXVldWUoYSxiKX07ImlucHJvZ3Jlc3MiPT09ZSYmKGU9Yy5zaGlmdCgpLGQtLSksZSYmKCJmeCI9PT1iJiZjLnVuc2hpZnQoImlucHJvZ3Jlc3MiKSxkZWxldGUgZi5zdG9wLGUuY2FsbChhLGcsZikpLCFkJiZmJiZmLmVtcHR5LmZpcmUoKX0sX3F1ZXVlSG9va3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iKyJxdWV1ZUhvb2tzIjtyZXR1cm4gbi5fZGF0YShhLGMpfHxuLl9kYXRhKGEsYyx7ZW1wdHk6bi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IikuYWRkKGZ1bmN0aW9uKCl7bi5fcmVtb3ZlRGF0YShhLGIrInF1ZXVlIiksbi5fcmVtb3ZlRGF0YShhLGMpfSl9KX19KSxuLmZuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz0yO3JldHVybiJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPSJmeCIsYy0tKSxhcmd1bWVudHMubGVuZ3RoPGM/bi5xdWV1ZSh0aGlzWzBdLGEpOnZvaWQgMD09PWI/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYz1uLnF1ZXVlKHRoaXMsYSxiKTtuLl9xdWV1ZUhvb2tzKHRoaXMsYSksImZ4Ij09PWEmJiJpbnByb2dyZXNzIiE9PWNbMF0mJm4uZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe24uZGVxdWV1ZSh0aGlzLGEpfSl9LGNsZWFyUXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucXVldWUoYXx8ImZ4IixbXSl9LHByb21pc2U6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPTEsZT1uLkRlZmVycmVkKCksZj10aGlzLGc9dGhpcy5sZW5ndGgsaD1mdW5jdGlvbigpey0tZHx8ZS5yZXNvbHZlV2l0aChmLFtmXSl9OyJzdHJpbmciIT10eXBlb2YgYSYmKGI9YSxhPXZvaWQgMCksYT1hfHwiZngiO3doaWxlKGctLSljPW4uX2RhdGEoZltnXSxhKyJxdWV1ZUhvb2tzIiksYyYmYy5lbXB0eSYmKGQrKyxjLmVtcHR5LmFkZChoKSk7cmV0dXJuIGgoKSxlLnByb21pc2UoYil9fSksZnVuY3Rpb24oKXt2YXIgYTtsLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXtpZihudWxsIT1hKXJldHVybiBhO2E9ITE7dmFyIGIsYyxlO3JldHVybiBjPWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSxjJiZjLnN0eWxlPyhiPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksZT1kLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGUuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZSkuYXBwZW5kQ2hpbGQoYiksInVuZGVmaW5lZCIhPXR5cGVvZiBiLnN0eWxlLnpvb20mJihiLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGIuYXBwZW5kQ2hpbGQoZC5jcmVhdGVFbGVtZW50KCJkaXYiKSkuc3R5bGUud2lkdGg9IjVweCIsYT0zIT09Yi5vZmZzZXRXaWR0aCksYy5yZW1vdmVDaGlsZChlKSxhKTp2b2lkIDB9fSgpO3ZhciBUPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLFU9bmV3IFJlZ0V4cCgiXig/OihbKy1dKT18KSgiK1QrIikoW2EteiVdKikkIiwiaSIpLFY9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxXPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9Ynx8YSwibm9uZSI9PT1uLmNzcyhhLCJkaXNwbGF5Iil8fCFuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX07ZnVuY3Rpb24gWChhLGIsYyxkKXt2YXIgZSxmPTEsZz0yMCxoPWQ/ZnVuY3Rpb24oKXtyZXR1cm4gZC5jdXIoKX06ZnVuY3Rpb24oKXtyZXR1cm4gbi5jc3MoYSxiLCIiKX0saT1oKCksaj1jJiZjWzNdfHwobi5jc3NOdW1iZXJbYl0/IiI6InB4Iiksaz0obi5jc3NOdW1iZXJbYl18fCJweCIhPT1qJiYraSkmJlUuZXhlYyhuLmNzcyhhLGIpKTtpZihrJiZrWzNdIT09ail7aj1qfHxrWzNdLGM9Y3x8W10saz0raXx8MTtkbyBmPWZ8fCIuNSIsay89ZixuLnN0eWxlKGEsYixrK2opO3doaWxlKGYhPT0oZj1oKCkvaSkmJjEhPT1mJiYtLWcpfXJldHVybiBjJiYoaz0ra3x8K2l8fDAsZT1jWzFdP2srKGNbMV0rMSkqY1syXTorY1syXSxkJiYoZC51bml0PWosZC5zdGFydD1rLGQuZW5kPWUpKSxlfXZhciBZPWZ1bmN0aW9uKGEsYixjLGQsZSxmLGcpe3ZhciBoPTAsaT1hLmxlbmd0aCxqPW51bGw9PWM7aWYoIm9iamVjdCI9PT1uLnR5cGUoYykpe2U9ITA7Zm9yKGggaW4gYylZKGEsYixoLGNbaF0sITAsZixnKX1lbHNlIGlmKHZvaWQgMCE9PWQmJihlPSEwLG4uaXNGdW5jdGlvbihkKXx8KGc9ITApLGomJihnPyhiLmNhbGwoYSxkKSxiPW51bGwpOihqPWIsYj1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGouY2FsbChuKGEpLGMpfSkpLGIpKWZvcig7aT5oO2grKyliKGFbaF0sYyxnP2Q6ZC5jYWxsKGFbaF0saCxiKGFbaF0sYykpKTtyZXR1cm4gZT9hOmo/Yi5jYWxsKGEpOmk/YihhWzBdLGMpOmZ9LFo9L14oPzpjaGVja2JveHxyYWRpbykkL2ksJD0vPChbXHc6LV0rKS8sXz0vXiR8XC8oPzpqYXZhfGVjbWEpc2NyaXB0L2ksYWE9L15ccysvLGJhPSJhYmJyfGFydGljbGV8YXNpZGV8YXVkaW98YmRpfGNhbnZhc3xkYXRhfGRhdGFsaXN0fGRldGFpbHN8ZGlhbG9nfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1haW58bWFya3xtZXRlcnxuYXZ8b3V0cHV0fHBpY3R1cmV8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRlbXBsYXRlfHRpbWV8dmlkZW8iO2Z1bmN0aW9uIGNhKGEpe3ZhciBiPWJhLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfSFmdW5jdGlvbigpe3ZhciBhPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksYj1kLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxjPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTthLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixsLmxlYWRpbmdXaGl0ZXNwYWNlPTM9PT1hLmZpcnN0Q2hpbGQubm9kZVR5cGUsbC50Ym9keT0hYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKS5sZW5ndGgsbC5odG1sU2VyaWFsaXplPSEhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxsLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09ZC5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZU5vZGUoITApLm91dGVySFRNTCxjLnR5cGU9ImNoZWNrYm94IixjLmNoZWNrZWQ9ITAsYi5hcHBlbmRDaGlsZChjKSxsLmFwcGVuZENoZWNrZWQ9Yy5jaGVja2VkLGEuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGFyZWE+IixsLm5vQ2xvbmVDaGVja2VkPSEhYS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdWUsYi5hcHBlbmRDaGlsZChhKSxjPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxjLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiksYy5zZXRBdHRyaWJ1dGUoImNoZWNrZWQiLCJjaGVja2VkIiksYy5zZXRBdHRyaWJ1dGUoIm5hbWUiLCJ0IiksYS5hcHBlbmRDaGlsZChjKSxsLmNoZWNrQ2xvbmU9YS5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCkubGFzdENoaWxkLmNoZWNrZWQsbC5ub0Nsb25lRXZlbnQ9ISFhLmFkZEV2ZW50TGlzdGVuZXIsYVtuLmV4cGFuZG9dPTEsbC5hdHRyaWJ1dGVzPSFhLmdldEF0dHJpYnV0ZShuLmV4cGFuZG8pfSgpO3ZhciBkYT17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLHBhcmFtOlsxLCI8b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6bC5odG1sU2VyaWFsaXplP1swLCIiLCIiXTpbMSwiWDxkaXY+IiwiPC9kaXY+Il19O2RhLm9wdGdyb3VwPWRhLm9wdGlvbixkYS50Ym9keT1kYS50Zm9vdD1kYS5jb2xncm91cD1kYS5jYXB0aW9uPWRhLnRoZWFkLGRhLnRoPWRhLnRkO2Z1bmN0aW9uIGVhKGEsYil7dmFyIGMsZCxlPTAsZj0idW5kZWZpbmVkIiE9dHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWU/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOiJ1bmRlZmluZWQiIT10eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOnZvaWQgMDtpZighZilmb3IoZj1bXSxjPWEuY2hpbGROb2Rlc3x8YTtudWxsIT0oZD1jW2VdKTtlKyspIWJ8fG4ubm9kZU5hbWUoZCxiKT9mLnB1c2goZCk6bi5tZXJnZShmLGVhKGQsYikpO3JldHVybiB2b2lkIDA9PT1ifHxiJiZuLm5vZGVOYW1lKGEsYik/bi5tZXJnZShbYV0sZik6Zn1mdW5jdGlvbiBmYShhLGIpe2Zvcih2YXIgYyxkPTA7bnVsbCE9KGM9YVtkXSk7ZCsrKW4uX2RhdGEoYywiZ2xvYmFsRXZhbCIsIWJ8fG4uX2RhdGEoYltkXSwiZ2xvYmFsRXZhbCIpKX12YXIgZ2E9Lzx8JiM/XHcrOy8saGE9Lzx0Ym9keS9pO2Z1bmN0aW9uIGlhKGEpe1oudGVzdChhLnR5cGUpJiYoYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWQpfWZ1bmN0aW9uIGphKGEsYixjLGQsZSl7Zm9yKHZhciBmLGcsaCxpLGosayxtLG89YS5sZW5ndGgscD1jYShiKSxxPVtdLHI9MDtvPnI7cisrKWlmKGc9YVtyXSxnfHwwPT09ZylpZigib2JqZWN0Ij09PW4udHlwZShnKSluLm1lcmdlKHEsZy5ub2RlVHlwZT9bZ106Zyk7ZWxzZSBpZihnYS50ZXN0KGcpKXtpPWl8fHAuYXBwZW5kQ2hpbGQoYi5jcmVhdGVFbGVtZW50KCJkaXYiKSksaj0oJC5leGVjKGcpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLG09ZGFbal18fGRhLl9kZWZhdWx0LGkuaW5uZXJIVE1MPW1bMV0rbi5odG1sUHJlZmlsdGVyKGcpK21bMl0sZj1tWzBdO3doaWxlKGYtLSlpPWkubGFzdENoaWxkO2lmKCFsLmxlYWRpbmdXaGl0ZXNwYWNlJiZhYS50ZXN0KGcpJiZxLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShhYS5leGVjKGcpWzBdKSksIWwudGJvZHkpe2c9InRhYmxlIiE9PWp8fGhhLnRlc3QoZyk/Ijx0YWJsZT4iIT09bVsxXXx8aGEudGVzdChnKT8wOmk6aS5maXJzdENoaWxkLGY9ZyYmZy5jaGlsZE5vZGVzLmxlbmd0aDt3aGlsZShmLS0pbi5ub2RlTmFtZShrPWcuY2hpbGROb2Rlc1tmXSwidGJvZHkiKSYmIWsuY2hpbGROb2Rlcy5sZW5ndGgmJmcucmVtb3ZlQ2hpbGQoayl9bi5tZXJnZShxLGkuY2hpbGROb2RlcyksaS50ZXh0Q29udGVudD0iIjt3aGlsZShpLmZpcnN0Q2hpbGQpaS5yZW1vdmVDaGlsZChpLmZpcnN0Q2hpbGQpO2k9cC5sYXN0Q2hpbGR9ZWxzZSBxLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShnKSk7aSYmcC5yZW1vdmVDaGlsZChpKSxsLmFwcGVuZENoZWNrZWR8fG4uZ3JlcChlYShxLCJpbnB1dCIpLGlhKSxyPTA7d2hpbGUoZz1xW3IrK10paWYoZCYmbi5pbkFycmF5KGcsZCk+LTEpZSYmZS5wdXNoKGcpO2Vsc2UgaWYoaD1uLmNvbnRhaW5zKGcub3duZXJEb2N1bWVudCxnKSxpPWVhKHAuYXBwZW5kQ2hpbGQoZyksInNjcmlwdCIpLGgmJmZhKGkpLGMpe2Y9MDt3aGlsZShnPWlbZisrXSlfLnRlc3QoZy50eXBlfHwiIikmJmMucHVzaChnKX1yZXR1cm4gaT1udWxsLHB9IWZ1bmN0aW9uKCl7dmFyIGIsYyxlPWQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKGIgaW57c3VibWl0OiEwLGNoYW5nZTohMCxmb2N1c2luOiEwfSljPSJvbiIrYiwobFtiXT1jIGluIGEpfHwoZS5zZXRBdHRyaWJ1dGUoYywidCIpLGxbYl09ZS5hdHRyaWJ1dGVzW2NdLmV4cGFuZG89PT0hMSk7ZT1udWxsfSgpO3ZhciBrYT0vXig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksbGE9L15rZXkvLG1hPS9eKD86bW91c2V8cG9pbnRlcnxjb250ZXh0bWVudXxkcmFnfGRyb3ApfGNsaWNrLyxuYT0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sb2E9L14oW14uXSopKD86XC4oLispfCkvO2Z1bmN0aW9uIHBhKCl7cmV0dXJuITB9ZnVuY3Rpb24gcWEoKXtyZXR1cm4hMX1mdW5jdGlvbiByYSgpe3RyeXtyZXR1cm4gZC5hY3RpdmVFbGVtZW50fWNhdGNoKGEpe319ZnVuY3Rpb24gc2EoYSxiLGMsZCxlLGYpe3ZhciBnLGg7aWYoIm9iamVjdCI9PXR5cGVvZiBiKXsic3RyaW5nIiE9dHlwZW9mIGMmJihkPWR8fGMsYz12b2lkIDApO2ZvcihoIGluIGIpc2EoYSxoLGMsZCxiW2hdLGYpO3JldHVybiBhfWlmKG51bGw9PWQmJm51bGw9PWU/KGU9YyxkPWM9dm9pZCAwKTpudWxsPT1lJiYoInN0cmluZyI9PXR5cGVvZiBjPyhlPWQsZD12b2lkIDApOihlPWQsZD1jLGM9dm9pZCAwKSksZT09PSExKWU9cWE7ZWxzZSBpZighZSlyZXR1cm4gYTtyZXR1cm4gMT09PWYmJihnPWUsZT1mdW5jdGlvbihhKXtyZXR1cm4gbigpLm9mZihhKSxnLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZS5ndWlkPWcuZ3VpZHx8KGcuZ3VpZD1uLmd1aWQrKykpLGEuZWFjaChmdW5jdGlvbigpe24uZXZlbnQuYWRkKHRoaXMsYixlLGQsYyl9KX1uLmV2ZW50PXtnbG9iYWw6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxvLHAscSxyPW4uX2RhdGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHwoYy5ndWlkPW4uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fChrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Ygbnx8YSYmbi5ldmVudC50cmlnZ2VyZWQ9PT1hLnR5cGU/dm9pZCAwOm4uZXZlbnQuZGlzcGF0Y2guYXBwbHkoay5lbGVtLGFyZ3VtZW50cyl9LGsuZWxlbT1hKSxiPShifHwiIikubWF0Y2goRyl8fFsiIl0saD1iLmxlbmd0aDt3aGlsZShoLS0pZj1vYS5leGVjKGJbaF0pfHxbXSxvPXE9ZlsxXSxwPShmWzJdfHwiIikuc3BsaXQoIi4iKS5zb3J0KCksbyYmKGo9bi5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShlP2ouZGVsZWdhdGVUeXBlOmouYmluZFR5cGUpfHxvLGo9bi5ldmVudC5zcGVjaWFsW29dfHx7fSxsPW4uZXh0ZW5kKHt0eXBlOm8sb3JpZ1R5cGU6cSxkYXRhOmQsaGFuZGxlcjpjLGd1aWQ6Yy5ndWlkLHNlbGVjdG9yOmUsbmVlZHNDb250ZXh0OmUmJm4uZXhwci5tYXRjaC5uZWVkc0NvbnRleHQudGVzdChlKSxuYW1lc3BhY2U6cC5qb2luKCIuIil9LGkpLChtPWdbb10pfHwobT1nW29dPVtdLG0uZGVsZWdhdGVDb3VudD0wLGouc2V0dXAmJmouc2V0dXAuY2FsbChhLGQscCxrKSE9PSExfHwoYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihvLGssITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIitvLGspKSksai5hZGQmJihqLmFkZC5jYWxsKGEsbCksbC5oYW5kbGVyLmd1aWR8fChsLmhhbmRsZXIuZ3VpZD1jLmd1aWQpKSxlP20uc3BsaWNlKG0uZGVsZWdhdGVDb3VudCsrLDAsbCk6bS5wdXNoKGwpLG4uZXZlbnQuZ2xvYmFsW29dPSEwKTthPW51bGx9fSxyZW1vdmU6ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnLGgsaSxqLGssbCxtLG8scCxxLHI9bi5oYXNEYXRhKGEpJiZuLl9kYXRhKGEpO2lmKHImJihrPXIuZXZlbnRzKSl7Yj0oYnx8IiIpLm1hdGNoKEcpfHxbIiJdLGo9Yi5sZW5ndGg7d2hpbGUoai0tKWlmKGg9b2EuZXhlYyhiW2pdKXx8W10sbz1xPWhbMV0scD0oaFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8pe2w9bi5ldmVudC5zcGVjaWFsW29dfHx7fSxvPShkP2wuZGVsZWdhdGVUeXBlOmwuYmluZFR5cGUpfHxvLG09a1tvXXx8W10saD1oWzJdJiZuZXcgUmVnRXhwKCIoXnxcXC4pIitwLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpLGk9Zj1tLmxlbmd0aDt3aGlsZShmLS0pZz1tW2ZdLCFlJiZxIT09Zy5vcmlnVHlwZXx8YyYmYy5ndWlkIT09Zy5ndWlkfHxoJiYhaC50ZXN0KGcubmFtZXNwYWNlKXx8ZCYmZCE9PWcuc2VsZWN0b3ImJigiKioiIT09ZHx8IWcuc2VsZWN0b3IpfHwobS5zcGxpY2UoZiwxKSxnLnNlbGVjdG9yJiZtLmRlbGVnYXRlQ291bnQtLSxsLnJlbW92ZSYmbC5yZW1vdmUuY2FsbChhLGcpKTtpJiYhbS5sZW5ndGgmJihsLnRlYXJkb3duJiZsLnRlYXJkb3duLmNhbGwoYSxwLHIuaGFuZGxlKSE9PSExfHxuLnJlbW92ZUV2ZW50KGEsbyxyLmhhbmRsZSksZGVsZXRlIGtbb10pfWVsc2UgZm9yKG8gaW4gayluLmV2ZW50LnJlbW92ZShhLG8rYltqXSxjLGQsITApO24uaXNFbXB0eU9iamVjdChrKSYmKGRlbGV0ZSByLmhhbmRsZSxuLl9yZW1vdmVEYXRhKGEsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYixjLGUsZil7dmFyIGcsaCxpLGosbCxtLG8scD1bZXx8ZF0scT1rLmNhbGwoYiwidHlwZSIpP2IudHlwZTpiLHI9ay5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoaT1tPWU9ZXx8ZCwzIT09ZS5ub2RlVHlwZSYmOCE9PWUubm9kZVR5cGUmJiFuYS50ZXN0KHErbi5ldmVudC50cmlnZ2VyZWQpJiYocS5pbmRleE9mKCIuIik+LTEmJihyPXEuc3BsaXQoIi4iKSxxPXIuc2hpZnQoKSxyLnNvcnQoKSksaD1xLmluZGV4T2YoIjoiKTwwJiYib24iK3EsYj1iW24uZXhwYW5kb10/YjpuZXcgbi5FdmVudChxLCJvYmplY3QiPT10eXBlb2YgYiYmYiksYi5pc1RyaWdnZXI9Zj8yOjMsYi5uYW1lc3BhY2U9ci5qb2luKCIuIiksYi5ybmFtZXNwYWNlPWIubmFtZXNwYWNlP25ldyBSZWdFeHAoIihefFxcLikiK3Iuam9pbigiXFwuKD86LipcXC58KSIpKyIoXFwufCQpIik6bnVsbCxiLnJlc3VsdD12b2lkIDAsYi50YXJnZXR8fChiLnRhcmdldD1lKSxjPW51bGw9PWM/W2JdOm4ubWFrZUFycmF5KGMsW2JdKSxsPW4uZXZlbnQuc3BlY2lhbFtxXXx8e30sZnx8IWwudHJpZ2dlcnx8bC50cmlnZ2VyLmFwcGx5KGUsYykhPT0hMSkpe2lmKCFmJiYhbC5ub0J1YmJsZSYmIW4uaXNXaW5kb3coZSkpe2ZvcihqPWwuZGVsZWdhdGVUeXBlfHxxLG5hLnRlc3QoaitxKXx8KGk9aS5wYXJlbnROb2RlKTtpO2k9aS5wYXJlbnROb2RlKXAucHVzaChpKSxtPWk7bT09PShlLm93bmVyRG9jdW1lbnR8fGQpJiZwLnB1c2gobS5kZWZhdWx0Vmlld3x8bS5wYXJlbnRXaW5kb3d8fGEpfW89MDt3aGlsZSgoaT1wW28rK10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWIudHlwZT1vPjE/ajpsLmJpbmRUeXBlfHxxLGc9KG4uX2RhdGEoaSwiZXZlbnRzIil8fHt9KVtiLnR5cGVdJiZuLl9kYXRhKGksImhhbmRsZSIpLGcmJmcuYXBwbHkoaSxjKSxnPWgmJmlbaF0sZyYmZy5hcHBseSYmTShpKSYmKGIucmVzdWx0PWcuYXBwbHkoaSxjKSxiLnJlc3VsdD09PSExJiZiLnByZXZlbnREZWZhdWx0KCkpO2lmKGIudHlwZT1xLCFmJiYhYi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFsLl9kZWZhdWx0fHxsLl9kZWZhdWx0LmFwcGx5KHAucG9wKCksYyk9PT0hMSkmJk0oZSkmJmgmJmVbcV0mJiFuLmlzV2luZG93KGUpKXttPWVbaF0sbSYmKGVbaF09bnVsbCksbi5ldmVudC50cmlnZ2VyZWQ9cTt0cnl7ZVtxXSgpfWNhdGNoKHMpe31uLmV2ZW50LnRyaWdnZXJlZD12b2lkIDAsbSYmKGVbaF09bSl9cmV0dXJuIGIucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYSl7YT1uLmV2ZW50LmZpeChhKTt2YXIgYixjLGQsZixnLGg9W10saT1lLmNhbGwoYXJndW1lbnRzKSxqPShuLl9kYXRhKHRoaXMsImV2ZW50cyIpfHx7fSlbYS50eXBlXXx8W10saz1uLmV2ZW50LnNwZWNpYWxbYS50eXBlXXx8e307aWYoaVswXT1hLGEuZGVsZWdhdGVUYXJnZXQ9dGhpcywhay5wcmVEaXNwYXRjaHx8ay5wcmVEaXNwYXRjaC5jYWxsKHRoaXMsYSkhPT0hMSl7aD1uLmV2ZW50LmhhbmRsZXJzLmNhbGwodGhpcyxhLGopLGI9MDt3aGlsZSgoZj1oW2IrK10pJiYhYS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKXthLmN1cnJlbnRUYXJnZXQ9Zi5lbGVtLGM9MDt3aGlsZSgoZz1mLmhhbmRsZXJzW2MrK10pJiYhYS5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpKWEucm5hbWVzcGFjZSYmIWEucm5hbWVzcGFjZS50ZXN0KGcubmFtZXNwYWNlKXx8KGEuaGFuZGxlT2JqPWcsYS5kYXRhPWcuZGF0YSxkPSgobi5ldmVudC5zcGVjaWFsW2cub3JpZ1R5cGVdfHx7fSkuaGFuZGxlfHxnLmhhbmRsZXIpLmFwcGx5KGYuZWxlbSxpKSx2b2lkIDAhPT1kJiYoYS5yZXN1bHQ9ZCk9PT0hMSYmKGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpKSl9cmV0dXJuIGsucG9zdERpc3BhdGNoJiZrLnBvc3REaXNwYXRjaC5jYWxsKHRoaXMsYSksYS5yZXN1bHR9fSxoYW5kbGVyczpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmLGc9W10saD1iLmRlbGVnYXRlQ291bnQsaT1hLnRhcmdldDtpZihoJiZpLm5vZGVUeXBlJiYoImNsaWNrIiE9PWEudHlwZXx8aXNOYU4oYS5idXR0b24pfHxhLmJ1dHRvbjwxKSlmb3IoO2khPXRoaXM7aT1pLnBhcmVudE5vZGV8fHRoaXMpaWYoMT09PWkubm9kZVR5cGUmJihpLmRpc2FibGVkIT09ITB8fCJjbGljayIhPT1hLnR5cGUpKXtmb3IoZD1bXSxjPTA7aD5jO2MrKylmPWJbY10sZT1mLnNlbGVjdG9yKyIgIix2b2lkIDA9PT1kW2VdJiYoZFtlXT1mLm5lZWRzQ29udGV4dD9uKGUsdGhpcykuaW5kZXgoaSk+LTE6bi5maW5kKGUsdGhpcyxudWxsLFtpXSkubGVuZ3RoKSxkW2VdJiZkLnB1c2goZik7ZC5sZW5ndGgmJmcucHVzaCh7ZWxlbTppLGhhbmRsZXJzOmR9KX1yZXR1cm4gaDxiLmxlbmd0aCYmZy5wdXNoKHtlbGVtOnRoaXMsaGFuZGxlcnM6Yi5zbGljZShoKX0pLGd9LGZpeDpmdW5jdGlvbihhKXtpZihhW24uZXhwYW5kb10pcmV0dXJuIGE7dmFyIGIsYyxlLGY9YS50eXBlLGc9YSxoPXRoaXMuZml4SG9va3NbZl07aHx8KHRoaXMuZml4SG9va3NbZl09aD1tYS50ZXN0KGYpP3RoaXMubW91c2VIb29rczpsYS50ZXN0KGYpP3RoaXMua2V5SG9va3M6e30pLGU9aC5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChoLnByb3BzKTp0aGlzLnByb3BzLGE9bmV3IG4uRXZlbnQoZyksYj1lLmxlbmd0aDt3aGlsZShiLS0pYz1lW2JdLGFbY109Z1tjXTtyZXR1cm4gYS50YXJnZXR8fChhLnRhcmdldD1nLnNyY0VsZW1lbnR8fGQpLDM9PT1hLnRhcmdldC5ub2RlVHlwZSYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT0hIWEubWV0YUtleSxoLmZpbHRlcj9oLmZpbHRlcihhLGcpOmF9LHByb3BzOiJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBkZXRhaWwgZXZlbnRQaGFzZSBtZXRhS2V5IHJlbGF0ZWRUYXJnZXQgc2hpZnRLZXkgdGFyZ2V0IHRpbWVTdGFtcCB2aWV3IHdoaWNoIi5zcGxpdCgiICIpLGZpeEhvb2tzOnt9LGtleUhvb2tzOntwcm9wczoiY2hhciBjaGFyQ29kZSBrZXkga2V5Q29kZSIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbnVsbD09YS53aGljaCYmKGEud2hpY2g9bnVsbCE9Yi5jaGFyQ29kZT9iLmNoYXJDb2RlOmIua2V5Q29kZSksYX19LG1vdXNlSG9va3M6e3Byb3BzOiJidXR0b24gYnV0dG9ucyBjbGllbnRYIGNsaWVudFkgZnJvbUVsZW1lbnQgb2Zmc2V0WCBvZmZzZXRZIHBhZ2VYIHBhZ2VZIHNjcmVlblggc2NyZWVuWSB0b0VsZW1lbnQiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGc9Yi5idXR0b24saD1iLmZyb21FbGVtZW50O3JldHVybiBudWxsPT1hLnBhZ2VYJiZudWxsIT1iLmNsaWVudFgmJihlPWEudGFyZ2V0Lm93bmVyRG9jdW1lbnR8fGQsZj1lLmRvY3VtZW50RWxlbWVudCxjPWUuYm9keSxhLnBhZ2VYPWIuY2xpZW50WCsoZiYmZi5zY3JvbGxMZWZ0fHxjJiZjLnNjcm9sbExlZnR8fDApLShmJiZmLmNsaWVudExlZnR8fGMmJmMuY2xpZW50TGVmdHx8MCksYS5wYWdlWT1iLmNsaWVudFkrKGYmJmYuc2Nyb2xsVG9wfHxjJiZjLnNjcm9sbFRvcHx8MCktKGYmJmYuY2xpZW50VG9wfHxjJiZjLmNsaWVudFRvcHx8MCkpLCFhLnJlbGF0ZWRUYXJnZXQmJmgmJihhLnJlbGF0ZWRUYXJnZXQ9aD09PWEudGFyZ2V0P2IudG9FbGVtZW50OmgpLGEud2hpY2h8fHZvaWQgMD09PWd8fChhLndoaWNoPTEmZz8xOjImZz8zOjQmZz8yOjApLGF9fSxzcGVjaWFsOntsb2FkOntub0J1YmJsZTohMH0sZm9jdXM6e3RyaWdnZXI6ZnVuY3Rpb24oKXtpZih0aGlzIT09cmEoKSYmdGhpcy5mb2N1cyl0cnl7cmV0dXJuIHRoaXMuZm9jdXMoKSwhMX1jYXRjaChhKXt9fSxkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOnt0cmlnZ2VyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM9PT1yYSgpJiZ0aGlzLmJsdXI/KHRoaXMuYmx1cigpLCExKTp2b2lkIDB9LGRlbGVnYXRlVHlwZToiZm9jdXNvdXQifSxjbGljazp7dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiBuLm5vZGVOYW1lKHRoaXMsImlucHV0IikmJiJjaGVja2JveCI9PT10aGlzLnR5cGUmJnRoaXMuY2xpY2s/KHRoaXMuY2xpY2soKSwhMSk6dm9pZCAwfSxfZGVmYXVsdDpmdW5jdGlvbihhKXtyZXR1cm4gbi5ub2RlTmFtZShhLnRhcmdldCwiYSIpfX0sYmVmb3JldW5sb2FkOntwb3N0RGlzcGF0Y2g6ZnVuY3Rpb24oYSl7dm9pZCAwIT09YS5yZXN1bHQmJmEub3JpZ2luYWxFdmVudCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJlc3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPW4uZXh0ZW5kKG5ldyBuLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMH0pO24uZXZlbnQudHJpZ2dlcihkLG51bGwsYiksZC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmYy5wcmV2ZW50RGVmYXVsdCgpfX0sbi5yZW1vdmVFdmVudD1kLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYyl9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKCJ1bmRlZmluZWQiPT10eXBlb2YgYVtkXSYmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbi5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzIGluc3RhbmNlb2Ygbi5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlzLnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCAwPT09YS5kZWZhdWx0UHJldmVudGVkJiZhLnJldHVyblZhbHVlPT09ITE/cGE6cWEpOnRoaXMudHlwZT1hLGImJm4uZXh0ZW5kKHRoaXMsYiksdGhpcy50aW1lU3RhbXA9YSYmYS50aW1lU3RhbXB8fG4ubm93KCksdm9pZCh0aGlzW24uZXhwYW5kb109ITApKTpuZXcgbi5FdmVudChhLGIpfSxuLkV2ZW50LnByb3RvdHlwZT17Y29uc3RydWN0b3I6bi5FdmVudCxpc0RlZmF1bHRQcmV2ZW50ZWQ6cWEsaXNQcm9wYWdhdGlvblN0b3BwZWQ6cWEsaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ6cWEscHJldmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9cGEsYSYmKGEucHJldmVudERlZmF1bHQ/YS5wcmV2ZW50RGVmYXVsdCgpOmEucmV0dXJuVmFsdWU9ITEpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7dGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1wYSxhJiYhdGhpcy5pc1NpbXVsYXRlZCYmKGEuc3RvcFByb3BhZ2F0aW9uJiZhLnN0b3BQcm9wYWdhdGlvbigpLGEuY2FuY2VsQnViYmxlPSEwKX0sc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50O3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9cGEsYSYmYS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24mJmEuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksdGhpcy5zdG9wUHJvcGFnYXRpb24oKX19LG4uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCIscG9pbnRlcmVudGVyOiJwb2ludGVyb3ZlciIscG9pbnRlcmxlYXZlOiJwb2ludGVyb3V0In0sZnVuY3Rpb24oYSxiKXtuLmV2ZW50LnNwZWNpYWxbYV09e2RlbGVnYXRlVHlwZTpiLGJpbmRUeXBlOmIsaGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBjLGQ9dGhpcyxlPWEucmVsYXRlZFRhcmdldCxmPWEuaGFuZGxlT2JqO3JldHVybiBlJiYoZT09PWR8fG4uY29udGFpbnMoZCxlKSl8fChhLnR5cGU9Zi5vcmlnVHlwZSxjPWYuaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyksYS50eXBlPWIpLGN9fX0pLGwuc3VibWl0fHwobi5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gbi5ub2RlTmFtZSh0aGlzLCJmb3JtIik/ITE6dm9pZCBuLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGM9bi5ub2RlTmFtZShiLCJpbnB1dCIpfHxuLm5vZGVOYW1lKGIsImJ1dHRvbiIpP24ucHJvcChiLCJmb3JtIik6dm9pZCAwO2MmJiFuLl9kYXRhKGMsInN1Ym1pdCIpJiYobi5ldmVudC5hZGQoYywic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdEJ1YmJsZT0hMH0pLG4uX2RhdGEoYywic3VibWl0IiwhMCkpfSl9LHBvc3REaXNwYXRjaDpmdW5jdGlvbihhKXthLl9zdWJtaXRCdWJibGUmJihkZWxldGUgYS5fc3VibWl0QnViYmxlLHRoaXMucGFyZW50Tm9kZSYmIWEuaXNUcmlnZ2VyJiZuLmV2ZW50LnNpbXVsYXRlKCJzdWJtaXQiLHRoaXMucGFyZW50Tm9kZSxhKSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7cmV0dXJuIG4ubm9kZU5hbWUodGhpcywiZm9ybSIpPyExOnZvaWQgbi5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxsLmNoYW5nZXx8KG4uZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e3NldHVwOmZ1bmN0aW9uKCl7cmV0dXJuIGthLnRlc3QodGhpcy5ub2RlTmFtZSk/KCJjaGVja2JveCIhPT10aGlzLnR5cGUmJiJyYWRpbyIhPT10aGlzLnR5cGV8fChuLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXsiY2hlY2tlZCI9PT1hLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lJiYodGhpcy5fanVzdENoYW5nZWQ9ITApfSksbi5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdENoYW5nZWQmJiFhLmlzVHJpZ2dlciYmKHRoaXMuX2p1c3RDaGFuZ2VkPSExKSxuLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSl9KSksITEpOnZvaWQgbi5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7a2EudGVzdChiLm5vZGVOYW1lKSYmIW4uX2RhdGEoYiwiY2hhbmdlIikmJihuLmV2ZW50LmFkZChiLCJjaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7IXRoaXMucGFyZW50Tm9kZXx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fG4uZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEpfSksbi5fZGF0YShiLCJjaGFuZ2UiLCEwKSl9KX0saGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3JldHVybiB0aGlzIT09Ynx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fCJyYWRpbyIhPT1iLnR5cGUmJiJjaGVja2JveCIhPT1iLnR5cGU/YS5oYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dm9pZCAwfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBuLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpLCFrYS50ZXN0KHRoaXMubm9kZU5hbWUpfX0pLGwuZm9jdXNpbnx8bi5lYWNoKHtmb2N1czoiZm9jdXNpbiIsYmx1cjoiZm9jdXNvdXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPWZ1bmN0aW9uKGEpe24uZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxuLmV2ZW50LmZpeChhKSl9O24uZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1uLl9kYXRhKGQsYik7ZXx8ZC5hZGRFdmVudExpc3RlbmVyKGEsYywhMCksbi5fZGF0YShkLGIsKGV8fDApKzEpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3ZhciBkPXRoaXMub3duZXJEb2N1bWVudHx8dGhpcyxlPW4uX2RhdGEoZCxiKS0xO2U/bi5fZGF0YShkLGIsZSk6KGQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGMsITApLG4uX3JlbW92ZURhdGEoZCxiKSl9fX0pLG4uZm4uZXh0ZW5kKHtvbjpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gc2EodGhpcyxhLGIsYyxkKX0sb25lOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBzYSh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhJiZhLnByZXZlbnREZWZhdWx0JiZhLmhhbmRsZU9iailyZXR1cm4gZD1hLmhhbmRsZU9iaixuKGEuZGVsZWdhdGVUYXJnZXQpLm9mZihkLm5hbWVzcGFjZT9kLm9yaWdUeXBlKyIuIitkLm5hbWVzcGFjZTpkLm9yaWdUeXBlLGQuc2VsZWN0b3IsZC5oYW5kbGVyKSx0aGlzO2lmKCJvYmplY3QiPT10eXBlb2YgYSl7Zm9yKGUgaW4gYSl0aGlzLm9mZihlLGIsYVtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIGIhPT0hMSYmImZ1bmN0aW9uIiE9dHlwZW9mIGJ8fChjPWIsYj12b2lkIDApLGM9PT0hMSYmKGM9cWEpLHRoaXMuZWFjaChmdW5jdGlvbigpe24uZXZlbnQucmVtb3ZlKHRoaXMsYSxjLGIpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5ldmVudC50cmlnZ2VyKGEsYix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXNbMF07cmV0dXJuIGM/bi5ldmVudC50cmlnZ2VyKGEsYixjLCEwKTp2b2lkIDB9fSk7dmFyIHRhPS8galF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2csdWE9bmV3IFJlZ0V4cCgiPCg/OiIrYmErIilbXFxzLz5dIiwiaSIpLHZhPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzotXSspW14+XSopXC8+L2dpLHdhPS88c2NyaXB0fDxzdHlsZXw8bGluay9pLHhhPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLHlhPS9edHJ1ZVwvKC4qKS8semE9L15ccyo8ISg/OlxbQ0RBVEFcW3wtLSl8KD86XF1cXXwtLSk+XHMqJC9nLEFhPWNhKGQpLEJhPUFhLmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgiZGl2IikpO2Z1bmN0aW9uIENhKGEsYil7cmV0dXJuIG4ubm9kZU5hbWUoYSwidGFibGUiKSYmbi5ub2RlTmFtZSgxMSE9PWIubm9kZVR5cGU/YjpiLmZpcnN0Q2hpbGQsInRyIik/YS5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHkiKVswXXx8YS5hcHBlbmRDaGlsZChhLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGJvZHkiKSk6YX1mdW5jdGlvbiBEYShhKXtyZXR1cm4gYS50eXBlPShudWxsIT09bi5maW5kLmF0dHIoYSwidHlwZSIpKSsiLyIrYS50eXBlLGF9ZnVuY3Rpb24gRWEoYSl7dmFyIGI9eWEuZXhlYyhhLnR5cGUpO3JldHVybiBiP2EudHlwZT1iWzFdOmEucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksYX1mdW5jdGlvbiBGYShhLGIpe2lmKDE9PT1iLm5vZGVUeXBlJiZuLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxmPW4uX2RhdGEoYSksZz1uLl9kYXRhKGIsZiksaD1mLmV2ZW50cztpZihoKXtkZWxldGUgZy5oYW5kbGUsZy5ldmVudHM9e307Zm9yKGMgaW4gaClmb3IoZD0wLGU9aFtjXS5sZW5ndGg7ZT5kO2QrKyluLmV2ZW50LmFkZChiLGMsaFtjXVtkXSl9Zy5kYXRhJiYoZy5kYXRhPW4uZXh0ZW5kKHt9LGcuZGF0YSkpfX1mdW5jdGlvbiBHYShhLGIpe3ZhciBjLGQsZTtpZigxPT09Yi5ub2RlVHlwZSl7aWYoYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksIWwubm9DbG9uZUV2ZW50JiZiW24uZXhwYW5kb10pe2U9bi5fZGF0YShiKTtmb3IoZCBpbiBlLmV2ZW50cyluLnJlbW92ZUV2ZW50KGIsZCxlLmhhbmRsZSk7Yi5yZW1vdmVBdHRyaWJ1dGUobi5leHBhbmRvKX0ic2NyaXB0Ij09PWMmJmIudGV4dCE9PWEudGV4dD8oRGEoYikudGV4dD1hLnRleHQsRWEoYikpOiJvYmplY3QiPT09Yz8oYi5wYXJlbnROb2RlJiYoYi5vdXRlckhUTUw9YS5vdXRlckhUTUwpLGwuaHRtbDVDbG9uZSYmYS5pbm5lckhUTUwmJiFuLnRyaW0oYi5pbm5lckhUTUwpJiYoYi5pbm5lckhUTUw9YS5pbm5lckhUTUwpKToiaW5wdXQiPT09YyYmWi50ZXN0KGEudHlwZSk/KGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSkpOiJvcHRpb24iPT09Yz9iLmRlZmF1bHRTZWxlY3RlZD1iLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkOiJpbnB1dCIhPT1jJiYidGV4dGFyZWEiIT09Y3x8KGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX19ZnVuY3Rpb24gSGEoYSxiLGMsZCl7Yj1mLmFwcGx5KFtdLGIpO3ZhciBlLGcsaCxpLGosayxtPTAsbz1hLmxlbmd0aCxwPW8tMSxxPWJbMF0scj1uLmlzRnVuY3Rpb24ocSk7aWYocnx8bz4xJiYic3RyaW5nIj09dHlwZW9mIHEmJiFsLmNoZWNrQ2xvbmUmJnhhLnRlc3QocSkpcmV0dXJuIGEuZWFjaChmdW5jdGlvbihlKXt2YXIgZj1hLmVxKGUpO3ImJihiWzBdPXEuY2FsbCh0aGlzLGUsZi5odG1sKCkpKSxIYShmLGIsYyxkKX0pO2lmKG8mJihrPWphKGIsYVswXS5vd25lckRvY3VtZW50LCExLGEsZCksZT1rLmZpcnN0Q2hpbGQsMT09PWsuY2hpbGROb2Rlcy5sZW5ndGgmJihrPWUpLGV8fGQpKXtmb3IoaT1uLm1hcChlYShrLCJzY3JpcHQiKSxEYSksaD1pLmxlbmd0aDtvPm07bSsrKWc9ayxtIT09cCYmKGc9bi5jbG9uZShnLCEwLCEwKSxoJiZuLm1lcmdlKGksZWEoZywic2NyaXB0IikpKSxjLmNhbGwoYVttXSxnLG0pO2lmKGgpZm9yKGo9aVtpLmxlbmd0aC0xXS5vd25lckRvY3VtZW50LG4ubWFwKGksRWEpLG09MDtoPm07bSsrKWc9aVttXSxfLnRlc3QoZy50eXBlfHwiIikmJiFuLl9kYXRhKGcsImdsb2JhbEV2YWwiKSYmbi5jb250YWlucyhqLGcpJiYoZy5zcmM/bi5fZXZhbFVybCYmbi5fZXZhbFVybChnLnNyYyk6bi5nbG9iYWxFdmFsKChnLnRleHR8fGcudGV4dENvbnRlbnR8fGcuaW5uZXJIVE1MfHwiIikucmVwbGFjZSh6YSwiIikpKTtrPWU9bnVsbH1yZXR1cm4gYX1mdW5jdGlvbiBJYShhLGIsYyl7Zm9yKHZhciBkLGU9Yj9uLmZpbHRlcihiLGEpOmEsZj0wO251bGwhPShkPWVbZl0pO2YrKyljfHwxIT09ZC5ub2RlVHlwZXx8bi5jbGVhbkRhdGEoZWEoZCkpLGQucGFyZW50Tm9kZSYmKGMmJm4uY29udGFpbnMoZC5vd25lckRvY3VtZW50LGQpJiZmYShlYShkLCJzY3JpcHQiKSksZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpKTtyZXR1cm4gYX1uLmV4dGVuZCh7aHRtbFByZWZpbHRlcjpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHZhLCI8JDE+PC8kMj4iKX0sY2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaT1uLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKTtpZihsLmh0bWw1Q2xvbmV8fG4uaXNYTUxEb2MoYSl8fCF1YS50ZXN0KCI8IithLm5vZGVOYW1lKyI+Iik/Zj1hLmNsb25lTm9kZSghMCk6KEJhLmlubmVySFRNTD1hLm91dGVySFRNTCxCYS5yZW1vdmVDaGlsZChmPUJhLmZpcnN0Q2hpbGQpKSwhKGwubm9DbG9uZUV2ZW50JiZsLm5vQ2xvbmVDaGVja2VkfHwxIT09YS5ub2RlVHlwZSYmMTEhPT1hLm5vZGVUeXBlfHxuLmlzWE1MRG9jKGEpKSlmb3IoZD1lYShmKSxoPWVhKGEpLGc9MDtudWxsIT0oZT1oW2ddKTsrK2cpZFtnXSYmR2EoZSxkW2ddKTtpZihiKWlmKGMpZm9yKGg9aHx8ZWEoYSksZD1kfHxlYShmKSxnPTA7bnVsbCE9KGU9aFtnXSk7ZysrKUZhKGUsZFtnXSk7ZWxzZSBGYShhLGYpO3JldHVybiBkPWVhKGYsInNjcmlwdCIpLGQubGVuZ3RoPjAmJmZhKGQsIWkmJmVhKGEsInNjcmlwdCIpKSxkPWg9ZT1udWxsLGZ9LGNsZWFuRGF0YTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgZCxlLGYsZyxoPTAsaT1uLmV4cGFuZG8saj1uLmNhY2hlLGs9bC5hdHRyaWJ1dGVzLG09bi5ldmVudC5zcGVjaWFsO251bGwhPShkPWFbaF0pO2grKylpZigoYnx8TShkKSkmJihmPWRbaV0sZz1mJiZqW2ZdKSl7aWYoZy5ldmVudHMpZm9yKGUgaW4gZy5ldmVudHMpbVtlXT9uLmV2ZW50LnJlbW92ZShkLGUpOm4ucmVtb3ZlRXZlbnQoZCxlLGcuaGFuZGxlKTtqW2ZdJiYoZGVsZXRlIGpbZl0sa3x8InVuZGVmaW5lZCI9PXR5cGVvZiBkLnJlbW92ZUF0dHJpYnV0ZT9kW2ldPXZvaWQgMDpkLnJlbW92ZUF0dHJpYnV0ZShpKSxjLnB1c2goZikpfX19KSxuLmZuLmV4dGVuZCh7ZG9tTWFuaXA6SGEsZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiBJYSh0aGlzLGEsITApfSxyZW1vdmU6ZnVuY3Rpb24oYSl7cmV0dXJuIElhKHRoaXMsYSl9LHRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihhKXtyZXR1cm4gdm9pZCAwPT09YT9uLnRleHQodGhpcyk6dGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxkKS5jcmVhdGVUZXh0Tm9kZShhKSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIEhhKHRoaXMsYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj1DYSh0aGlzLGEpO2IuYXBwZW5kQ2hpbGQoYSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7aWYoMT09PXRoaXMubm9kZVR5cGV8fDExPT09dGhpcy5ub2RlVHlwZXx8OT09PXRoaXMubm9kZVR5cGUpe3ZhciBiPUNhKHRoaXMsYSk7Yi5pbnNlcnRCZWZvcmUoYSxiLmZpcnN0Q2hpbGQpfX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlJiZ0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KX0sZW1wdHk6ZnVuY3Rpb24oKXtmb3IodmFyIGEsYj0wO251bGwhPShhPXRoaXNbYl0pO2IrKyl7MT09PWEubm9kZVR5cGUmJm4uY2xlYW5EYXRhKGVhKGEsITEpKTt3aGlsZShhLmZpcnN0Q2hpbGQpYS5yZW1vdmVDaGlsZChhLmZpcnN0Q2hpbGQpO2Eub3B0aW9ucyYmbi5ub2RlTmFtZShhLCJzZWxlY3QiKSYmKGEub3B0aW9ucy5sZW5ndGg9MCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bnVsbD09YT8hMTphLGI9bnVsbD09Yj9hOmIsdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gWSh0aGlzLGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF18fHt9LGM9MCxkPXRoaXMubGVuZ3RoO2lmKHZvaWQgMD09PWEpcmV0dXJuIDE9PT1iLm5vZGVUeXBlP2IuaW5uZXJIVE1MLnJlcGxhY2UodGEsIiIpOnZvaWQgMDtpZigic3RyaW5nIj09dHlwZW9mIGEmJiF3YS50ZXN0KGEpJiYobC5odG1sU2VyaWFsaXplfHwhdWEudGVzdChhKSkmJihsLmxlYWRpbmdXaGl0ZXNwYWNlfHwhYWEudGVzdChhKSkmJiFkYVsoJC5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7YT1uLmh0bWxQcmVmaWx0ZXIoYSk7dHJ5e2Zvcig7ZD5jO2MrKyliPXRoaXNbY118fHt9LDE9PT1iLm5vZGVUeXBlJiYobi5jbGVhbkRhdGEoZWEoYiwhMSkpLGIuaW5uZXJIVE1MPWEpO2I9MH1jYXRjaChlKXt9fWImJnRoaXMuZW1wdHkoKS5hcHBlbmQoYSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgYT1bXTtyZXR1cm4gSGEodGhpcyxhcmd1bWVudHMsZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5wYXJlbnROb2RlO24uaW5BcnJheSh0aGlzLGEpPDAmJihuLmNsZWFuRGF0YShlYSh0aGlzKSksYyYmYy5yZXBsYWNlQ2hpbGQoYix0aGlzKSl9LGEpfX0pLG4uZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW5jdGlvbihhKXtmb3IodmFyIGMsZD0wLGU9W10sZj1uKGEpLGg9Zi5sZW5ndGgtMTtoPj1kO2QrKyljPWQ9PT1oP3RoaXM6dGhpcy5jbG9uZSghMCksbihmW2RdKVtiXShjKSxnLmFwcGx5KGUsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBKYSxLYT17SFRNTDoiYmxvY2siLEJPRFk6ImJsb2NrIn07ZnVuY3Rpb24gTGEoYSxiKXt2YXIgYz1uKGIuY3JlYXRlRWxlbWVudChhKSkuYXBwZW5kVG8oYi5ib2R5KSxkPW4uY3NzKGNbMF0sImRpc3BsYXkiKTtyZXR1cm4gYy5kZXRhY2goKSxkfWZ1bmN0aW9uIE1hKGEpe3ZhciBiPWQsYz1LYVthXTtyZXR1cm4gY3x8KGM9TGEoYSxiKSwibm9uZSIhPT1jJiZjfHwoSmE9KEphfHxuKCI8aWZyYW1lIGZyYW1lYm9yZGVyPScwJyB3aWR0aD0nMCcgaGVpZ2h0PScwJy8+IikpLmFwcGVuZFRvKGIuZG9jdW1lbnRFbGVtZW50KSxiPShKYVswXS5jb250ZW50V2luZG93fHxKYVswXS5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LGIud3JpdGUoKSxiLmNsb3NlKCksYz1MYShhLGIpLEphLmRldGFjaCgpKSxLYVthXT1jKSxjfXZhciBOYT0vXm1hcmdpbi8sT2E9bmV3IFJlZ0V4cCgiXigiK1QrIikoPyFweClbYS16JV0rJCIsImkiKSxQYT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZSxmLGc9e307Zm9yKGYgaW4gYilnW2ZdPWEuc3R5bGVbZl0sYS5zdHlsZVtmXT1iW2ZdO2U9Yy5hcHBseShhLGR8fFtdKTtmb3IoZiBpbiBiKWEuc3R5bGVbZl09Z1tmXTtyZXR1cm4gZX0sUWE9ZC5kb2N1bWVudEVsZW1lbnQ7IWZ1bmN0aW9uKCl7dmFyIGIsYyxlLGYsZyxoLGk9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKSxqPWQuY3JlYXRlRWxlbWVudCgiZGl2Iik7aWYoai5zdHlsZSl7ai5zdHlsZS5jc3NUZXh0PSJmbG9hdDpsZWZ0O29wYWNpdHk6LjUiLGwub3BhY2l0eT0iMC41Ij09PWouc3R5bGUub3BhY2l0eSxsLmNzc0Zsb2F0PSEhai5zdHlsZS5jc3NGbG9hdCxqLnN0eWxlLmJhY2tncm91bmRDbGlwPSJjb250ZW50LWJveCIsai5jbG9uZU5vZGUoITApLnN0eWxlLmJhY2tncm91bmRDbGlwPSIiLGwuY2xlYXJDbG9uZVN0eWxlPSJjb250ZW50LWJveCI9PT1qLnN0eWxlLmJhY2tncm91bmRDbGlwLGk9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKSxpLnN0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjhweDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05OTk5cHg7cGFkZGluZzowO21hcmdpbi10b3A6MXB4O3Bvc2l0aW9uOmFic29sdXRlIixqLmlubmVySFRNTD0iIixpLmFwcGVuZENoaWxkKGopLGwuYm94U2l6aW5nPSIiPT09ai5zdHlsZS5ib3hTaXppbmd8fCIiPT09ai5zdHlsZS5Nb3pCb3hTaXppbmd8fCIiPT09ai5zdHlsZS5XZWJraXRCb3hTaXppbmcsbi5leHRlbmQobCx7cmVsaWFibGVIaWRkZW5PZmZzZXRzOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWImJmsoKSxmfSxib3hTaXppbmdSZWxpYWJsZTpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksZX0scGl4ZWxNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksY30scGl4ZWxQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksYn0scmVsaWFibGVNYXJnaW5SaWdodDpmdW5jdGlvbigpe3JldHVybiBudWxsPT1iJiZrKCksZ30scmVsaWFibGVNYXJnaW5MZWZ0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWImJmsoKSxofX0pO2Z1bmN0aW9uIGsoKXt2YXIgayxsLG09ZC5kb2N1bWVudEVsZW1lbnQ7bS5hcHBlbmRDaGlsZChpKSxqLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGVyLWJveDtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmJsb2NrO21hcmdpbjphdXRvO2JvcmRlcjoxcHg7cGFkZGluZzoxcHg7dG9wOjElO3dpZHRoOjUwJSIsYj1lPWg9ITEsYz1nPSEwLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGw9YS5nZXRDb21wdXRlZFN0eWxlKGopLGI9IjElIiE9PShsfHx7fSkudG9wLGg9IjJweCI9PT0obHx8e30pLm1hcmdpbkxlZnQsZT0iNHB4Ij09PShsfHx7d2lkdGg6IjRweCJ9KS53aWR0aCxqLnN0eWxlLm1hcmdpblJpZ2h0PSI1MCUiLGM9IjRweCI9PT0obHx8e21hcmdpblJpZ2h0OiI0cHgifSkubWFyZ2luUmlnaHQsaz1qLmFwcGVuZENoaWxkKGQuY3JlYXRlRWxlbWVudCgiZGl2IikpLGsuc3R5bGUuY3NzVGV4dD1qLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDstbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7Ym94LXNpemluZzpjb250ZW50LWJveDtkaXNwbGF5OmJsb2NrO21hcmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MCIsay5zdHlsZS5tYXJnaW5SaWdodD1rLnN0eWxlLndpZHRoPSIwIixqLnN0eWxlLndpZHRoPSIxcHgiLGc9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRTdHlsZShrKXx8e30pLm1hcmdpblJpZ2h0KSxqLnJlbW92ZUNoaWxkKGspKSxqLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGY9MD09PWouZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgsZiYmKGouc3R5bGUuZGlzcGxheT0iIixqLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsai5jaGlsZE5vZGVzWzBdLnN0eWxlLmJvcmRlckNvbGxhcHNlPSJzZXBhcmF0ZSIsaz1qLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGtbMF0uc3R5bGUuY3NzVGV4dD0ibWFyZ2luOjA7Ym9yZGVyOjA7cGFkZGluZzowO2Rpc3BsYXk6bm9uZSIsZj0wPT09a1swXS5vZmZzZXRIZWlnaHQsZiYmKGtbMF0uc3R5bGUuZGlzcGxheT0iIixrWzFdLnN0eWxlLmRpc3BsYXk9Im5vbmUiLGY9MD09PWtbMF0ub2Zmc2V0SGVpZ2h0KSksbS5yZW1vdmVDaGlsZChpKX19fSgpO3ZhciBSYSxTYSxUYT0vXih0b3B8cmlnaHR8Ym90dG9tfGxlZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhSYT1mdW5jdGlvbihiKXt2YXIgYz1iLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc7cmV0dXJuIGMmJmMub3BlbmVyfHwoYz1hKSxjLmdldENvbXB1dGVkU3R5bGUoYil9LFNhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8UmEoYSksZz1jP2MuZ2V0UHJvcGVydHlWYWx1ZShiKXx8Y1tiXTp2b2lkIDAsIiIhPT1nJiZ2b2lkIDAhPT1nfHxuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9bi5zdHlsZShhLGIpKSxjJiYhbC5waXhlbE1hcmdpblJpZ2h0KCkmJk9hLnRlc3QoZykmJk5hLnRlc3QoYikmJihkPWgud2lkdGgsZT1oLm1pbldpZHRoLGY9aC5tYXhXaWR0aCxoLm1pbldpZHRoPWgubWF4V2lkdGg9aC53aWR0aD1nLGc9Yy53aWR0aCxoLndpZHRoPWQsaC5taW5XaWR0aD1lLGgubWF4V2lkdGg9Ziksdm9pZCAwPT09Zz9nOmcrIiJ9KTpRYS5jdXJyZW50U3R5bGUmJihSYT1mdW5jdGlvbihhKXtyZXR1cm4gYS5jdXJyZW50U3R5bGV9LFNhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8UmEoYSksZz1jP2NbYl06dm9pZCAwLG51bGw9PWcmJmgmJmhbYl0mJihnPWhbYl0pLE9hLnRlc3QoZykmJiFUYS50ZXN0KGIpJiYoZD1oLmxlZnQsZT1hLnJ1bnRpbWVTdHlsZSxmPWUmJmUubGVmdCxmJiYoZS5sZWZ0PWEuY3VycmVudFN0eWxlLmxlZnQpLGgubGVmdD0iZm9udFNpemUiPT09Yj8iMWVtIjpnLGc9aC5waXhlbExlZnQrInB4IixoLmxlZnQ9ZCxmJiYoZS5sZWZ0PWYpKSx2b2lkIDA9PT1nP2c6ZysiInx8ImF1dG8ifSk7ZnVuY3Rpb24gVWEoYSxiKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGEoKT92b2lkIGRlbGV0ZSB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19dmFyIFZhPS9hbHBoYVwoW14pXSpcKS9pLFdhPS9vcGFjaXR5XHMqPVxzKihbXildKikvaSxYYT0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sWWE9bmV3IFJlZ0V4cCgiXigiK1QrIikoLiopJCIsImkiKSxaYT17cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJoaWRkZW4iLGRpc3BsYXk6ImJsb2NrIn0sJGE9e2xldHRlclNwYWNpbmc6IjAiLGZvbnRXZWlnaHQ6IjQwMCJ9LF9hPVsiV2Via2l0IiwiTyIsIk1veiIsIm1zIl0sYWI9ZC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZTtmdW5jdGlvbiBiYihhKXtpZihhIGluIGFiKXJldHVybiBhO3ZhciBiPWEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zbGljZSgxKSxjPV9hLmxlbmd0aDt3aGlsZShjLS0paWYoYT1fYVtjXStiLGEgaW4gYWIpcmV0dXJuIGF9ZnVuY3Rpb24gY2IoYSxiKXtmb3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGZbZ109bi5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlcoZCkmJihmW2ddPW4uX2RhdGEoZCwib2xkZGlzcGxheSIsTWEoZC5ub2RlTmFtZSkpKSk6KGU9VyhkKSwoYyYmIm5vbmUiIT09Y3x8IWUpJiZuLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU/YzpuLmNzcyhkLCJkaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIGRiKGEsYixjKXt2YXIgZD1ZYS5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIGViKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIpPzQ6IndpZHRoIj09PWI/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1uLmNzcyhhLGMrVltmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPW4uY3NzKGEsInBhZGRpbmciK1ZbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW4uY3NzKGEsImJvcmRlciIrVltmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPW4uY3NzKGEsInBhZGRpbmciK1ZbZl0sITAsZSksInBhZGRpbmciIT09YyYmKGcrPW4uY3NzKGEsImJvcmRlciIrVltmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVuY3Rpb24gZmIoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxmPVJhKGEpLGc9bC5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PW4uY3NzKGEsImJveFNpemluZyIsITEsZik7aWYoMD49ZXx8bnVsbD09ZSl7aWYoZT1TYShhLGIsZiksKDA+ZXx8bnVsbD09ZSkmJihlPWEuc3R5bGVbYl0pLE9hLnRlc3QoZSkpcmV0dXJuIGU7ZD1nJiYobC5ib3hTaXppbmdSZWxpYWJsZSgpfHxlPT09YS5zdHlsZVtiXSksZT1wYXJzZUZsb2F0KGUpfHwwfXJldHVybiBlK2ViKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1uLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPVNhKGEsIm9wYWNpdHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAsY29sdW1uQ291bnQ6ITAsZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6bC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1uLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7aWYoYj1uLmNzc1Byb3BzW2hdfHwobi5jc3NQcm9wc1toXT1iYihoKXx8aCksZz1uLmNzc0hvb2tzW2JdfHxuLmNzc0hvb2tzW2hdLHZvaWQgMD09PWMpcmV0dXJuIGcmJiJnZXQiaW4gZyYmdm9pZCAwIT09KGU9Zy5nZXQoYSwhMSxkKSk/ZTppW2JdO2lmKGY9dHlwZW9mIGMsInN0cmluZyI9PT1mJiYoZT1VLmV4ZWMoYykpJiZlWzFdJiYoYz1YKGEsYixlKSxmPSJudW1iZXIiKSxudWxsIT1jJiZjPT09YyYmKCJudW1iZXIiPT09ZiYmKGMrPWUmJmVbM118fChuLmNzc051bWJlcltoXT8iIjoicHgiKSksbC5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09Y31jYXRjaChqKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZyxoPW4uY2FtZWxDYXNlKGIpO3JldHVybiBiPW4uY3NzUHJvcHNbaF18fChuLmNzc1Byb3BzW2hdPWJiKGgpfHxoKSxnPW4uY3NzSG9va3NbYl18fG4uY3NzSG9va3NbaF0sZyYmImdldCJpbiBnJiYoZj1nLmdldChhLCEwLGMpKSx2b2lkIDA9PT1mJiYoZj1TYShhLGIsZCkpLCJub3JtYWwiPT09ZiYmYiBpbiAkYSYmKGY9JGFbYl0pLCIiPT09Y3x8Yz8oZT1wYXJzZUZsb2F0KGYpLGM9PT0hMHx8aXNGaW5pdGUoZSk/ZXx8MDpmKTpmfX0pLG4uZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtuLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGQpe3JldHVybiBjP1hhLnRlc3Qobi5jc3MoYSwiZGlzcGxheSIpKSYmMD09PWEub2Zmc2V0V2lkdGg/UGEoYSxaYSxmdW5jdGlvbigpe3JldHVybiBmYihhLGIsZCl9KTpmYihhLGIsZCk6dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWQmJlJhKGEpO3JldHVybiBkYihhLGMsZD9lYihhLGIsZCxsLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bi5jc3MoYSwiYm94U2l6aW5nIiwhMSxlKSxlKTowKX19fSksbC5vcGFjaXR5fHwobi5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gV2EudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRTdHlsZSxlPW4uaXNOdW1lcmljKGIpPyJhbHBoYShvcGFjaXR5PSIrMTAwKmIrIikiOiIiLGY9ZCYmZC5maWx0ZXJ8fGMuZmlsdGVyfHwiIjtjLnpvb209MSwoYj49MXx8IiI9PT1iKSYmIiI9PT1uLnRyaW0oZi5yZXBsYWNlKFZhLCIiKSkmJmMucmVtb3ZlQXR0cmlidXRlJiYoYy5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpLCIiPT09Ynx8ZCYmIWQuZmlsdGVyKXx8KGMuZmlsdGVyPVZhLnRlc3QoZik/Zi5yZXBsYWNlKFZhLGUpOmYrIiAiK2UpfX0pLG4uY3NzSG9va3MubWFyZ2luUmlnaHQ9VWEobC5yZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/UGEoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sU2EsW2EsIm1hcmdpblJpZ2h0Il0pOnZvaWQgMH0pLG4uY3NzSG9va3MubWFyZ2luTGVmdD1VYShsLnJlbGlhYmxlTWFyZ2luTGVmdCxmdW5jdGlvbihhLGIpe3JldHVybiBiPyhwYXJzZUZsb2F0KFNhKGEsIm1hcmdpbkxlZnQiKSl8fChuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKT9hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQtUGEoYSx7Cm1hcmdpbkxlZnQ6MH0sZnVuY3Rpb24oKXtyZXR1cm4gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0fSk6MCkpKyJweCI6dm9pZCAwfSksbi5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnVuY3Rpb24oYSxiKXtuLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPXt9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ND5kO2QrKyllW2ErVltkXStiXT1mW2RdfHxmW2QtMl18fGZbMF07cmV0dXJuIGV9fSxOYS50ZXN0KGEpfHwobi5jc3NIb29rc1thK2JdLnNldD1kYil9KSxuLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPXt9LGc9MDtpZihuLmlzQXJyYXkoYikpe2ZvcihkPVJhKGEpLGU9Yi5sZW5ndGg7ZT5nO2crKylmW2JbZ11dPW4uY3NzKGEsYltnXSwhMSxkKTtyZXR1cm4gZn1yZXR1cm4gdm9pZCAwIT09Yz9uLnN0eWxlKGEsYixjKTpuLmNzcyhhLGIpfSxhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0sc2hvdzpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzLCEwKX0saGlkZTpmdW5jdGlvbigpe3JldHVybiBjYih0aGlzKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGE/YT90aGlzLnNob3coKTp0aGlzLmhpZGUoKTp0aGlzLmVhY2goZnVuY3Rpb24oKXtXKHRoaXMpP24odGhpcykuc2hvdygpOm4odGhpcykuaGlkZSgpfSl9fSk7ZnVuY3Rpb24gZ2IoYSxiLGMsZCxlKXtyZXR1cm4gbmV3IGdiLnByb3RvdHlwZS5pbml0KGEsYixjLGQsZSl9bi5Ud2Vlbj1nYixnYi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmdiLGluaXQ6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3RoaXMuZWxlbT1hLHRoaXMucHJvcD1jLHRoaXMuZWFzaW5nPWV8fG4uZWFzaW5nLl9kZWZhdWx0LHRoaXMub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pdD1mfHwobi5jc3NOdW1iZXJbY10/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPWdiLnByb3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTpnYi5wcm9wSG9va3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1nYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5vcHRpb25zLmR1cmF0aW9uP3RoaXMucG9zPWI9bi5lYXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6dGhpcy5wb3M9Yj1hLHRoaXMubm93PSh0aGlzLmVuZC10aGlzLnN0YXJ0KSpiK3RoaXMuc3RhcnQsdGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLGMmJmMuc2V0P2Muc2V0KHRoaXMpOmdiLnByb3BIb29rcy5fZGVmYXVsdC5zZXQodGhpcyksdGhpc319LGdiLnByb3RvdHlwZS5pbml0LnByb3RvdHlwZT1nYi5wcm90b3R5cGUsZ2IucHJvcEhvb2tzPXtfZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiAxIT09YS5lbGVtLm5vZGVUeXBlfHxudWxsIT1hLmVsZW1bYS5wcm9wXSYmbnVsbD09YS5lbGVtLnN0eWxlW2EucHJvcF0/YS5lbGVtW2EucHJvcF06KGI9bi5jc3MoYS5lbGVtLGEucHJvcCwiIiksYiYmImF1dG8iIT09Yj9iOjApfSxzZXQ6ZnVuY3Rpb24oYSl7bi5meC5zdGVwW2EucHJvcF0/bi5meC5zdGVwW2EucHJvcF0oYSk6MSE9PWEuZWxlbS5ub2RlVHlwZXx8bnVsbD09YS5lbGVtLnN0eWxlW24uY3NzUHJvcHNbYS5wcm9wXV0mJiFuLmNzc0hvb2tzW2EucHJvcF0/YS5lbGVtW2EucHJvcF09YS5ub3c6bi5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCl9fX0sZ2IucHJvcEhvb2tzLnNjcm9sbFRvcD1nYi5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVtLnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fSxuLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlvbihhKXtyZXR1cm4uNS1NYXRoLmNvcyhhKk1hdGguUEkpLzJ9LF9kZWZhdWx0OiJzd2luZyJ9LG4uZng9Z2IucHJvdG90eXBlLmluaXQsbi5meC5zdGVwPXt9O3ZhciBoYixpYixqYj0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sa2I9L3F1ZXVlSG9va3MkLztmdW5jdGlvbiBsYigpe3JldHVybiBhLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtoYj12b2lkIDB9KSxoYj1uLm5vdygpfWZ1bmN0aW9uIG1iKGEsYil7dmFyIGMsZD17aGVpZ2h0OmF9LGU9MDtmb3IoYj1iPzE6MDs0PmU7ZSs9Mi1iKWM9VltlXSxkWyJtYXJnaW4iK2NdPWRbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihkLm9wYWNpdHk9ZC53aWR0aD1hKSxkfWZ1bmN0aW9uIG5iKGEsYixjKXtmb3IodmFyIGQsZT0ocWIudHdlZW5lcnNbYl18fFtdKS5jb25jYXQocWIudHdlZW5lcnNbIioiXSksZj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVuY3Rpb24gb2IoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbT10aGlzLG89e30scD1hLnN0eWxlLHE9YS5ub2RlVHlwZSYmVyhhKSxyPW4uX2RhdGEoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGg9bi5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWgudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsaT1oLmVtcHR5LmZpcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8aSgpfSksaC51bnF1ZXVlZCsrLG0uYWx3YXlzKGZ1bmN0aW9uKCl7bS5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVldWVkLS0sbi5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSwxPT09YS5ub2RlVHlwZSYmKCJoZWlnaHQiaW4gYnx8IndpZHRoImluIGIpJiYoYy5vdmVyZmxvdz1bcC5vdmVyZmxvdyxwLm92ZXJmbG93WCxwLm92ZXJmbG93WV0saj1uLmNzcyhhLCJkaXNwbGF5Iiksaz0ibm9uZSI9PT1qP24uX2RhdGEoYSwib2xkZGlzcGxheSIpfHxNYShhLm5vZGVOYW1lKTpqLCJpbmxpbmUiPT09ayYmIm5vbmUiPT09bi5jc3MoYSwiZmxvYXQiKSYmKGwuaW5saW5lQmxvY2tOZWVkc0xheW91dCYmImlubGluZSIhPT1NYShhLm5vZGVOYW1lKT9wLnpvb209MTpwLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYocC5vdmVyZmxvdz0iaGlkZGVuIixsLnNocmlua1dyYXBCbG9ja3MoKXx8bS5hbHdheXMoZnVuY3Rpb24oKXtwLm92ZXJmbG93PWMub3ZlcmZsb3dbMF0scC5vdmVyZmxvd1g9Yy5vdmVyZmxvd1sxXSxwLm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpO2ZvcihkIGluIGIpaWYoZT1iW2RdLGpiLmV4ZWMoZSkpe2lmKGRlbGV0ZSBiW2RdLGY9Znx8InRvZ2dsZSI9PT1lLGU9PT0ocT8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09ZXx8IXJ8fHZvaWQgMD09PXJbZF0pY29udGludWU7cT0hMH1vW2RdPXImJnJbZF18fG4uc3R5bGUoYSxkKX1lbHNlIGo9dm9pZCAwO2lmKG4uaXNFbXB0eU9iamVjdChvKSkiaW5saW5lIj09PSgibm9uZSI9PT1qP01hKGEubm9kZU5hbWUpOmopJiYocC5kaXNwbGF5PWopO2Vsc2V7cj8iaGlkZGVuImluIHImJihxPXIuaGlkZGVuKTpyPW4uX2RhdGEoYSwiZnhzaG93Iix7fSksZiYmKHIuaGlkZGVuPSFxKSxxP24oYSkuc2hvdygpOm0uZG9uZShmdW5jdGlvbigpe24oYSkuaGlkZSgpfSksbS5kb25lKGZ1bmN0aW9uKCl7dmFyIGI7bi5fcmVtb3ZlRGF0YShhLCJmeHNob3ciKTtmb3IoYiBpbiBvKW4uc3R5bGUoYSxiLG9bYl0pfSk7Zm9yKGQgaW4gbylnPW5iKHE/cltkXTowLGQsbSksZCBpbiByfHwocltkXT1nLnN0YXJ0LHEmJihnLmVuZD1nLnN0YXJ0LGcuc3RhcnQ9IndpZHRoIj09PWR8fCJoZWlnaHQiPT09ZD8xOjApKX19ZnVuY3Rpb24gcGIoYSxiKXt2YXIgYyxkLGUsZixnO2ZvcihjIGluIGEpaWYoZD1uLmNhbWVsQ2FzZShjKSxlPWJbZF0sZj1hW2NdLG4uaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYsZGVsZXRlIGFbY10pLGc9bi5jc3NIb29rc1tkXSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNlIGJbZF09ZX1mdW5jdGlvbiBxYihhLGIsYyl7dmFyIGQsZSxmPTAsZz1xYi5wcmVmaWx0ZXJzLmxlbmd0aCxoPW4uRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtkZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPWhifHxsYigpLGM9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9Yy9qLmR1cmF0aW9ufHwwLGY9MS1kLGc9MCxpPWoudHdlZW5zLmxlbmd0aDtpPmc7ZysrKWoudHdlZW5zW2ddLnJ1bihmKTtyZXR1cm4gaC5ub3RpZnlXaXRoKGEsW2osZixjXSksMT5mJiZpP2M6KGgucmVzb2x2ZVdpdGgoYSxbal0pLCExKX0saj1oLnByb21pc2Uoe2VsZW06YSxwcm9wczpuLmV4dGVuZCh7fSxiKSxvcHRzOm4uZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5nOnt9LGVhc2luZzpuLmVhc2luZy5fZGVmYXVsdH0sYyksb3JpZ2luYWxQcm9wZXJ0aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1lOmhifHxsYigpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9uKGIsYyl7dmFyIGQ9bi5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rpb24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0hMDtkPmM7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj8oaC5ub3RpZnlXaXRoKGEsW2osMSwwXSksaC5yZXNvbHZlV2l0aChhLFtqLGJdKSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRoaXN9fSksaz1qLnByb3BzO2ZvcihwYihrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtnPmY7ZisrKWlmKGQ9cWIucHJlZmlsdGVyc1tmXS5jYWxsKGosYSxrLGoub3B0cykpcmV0dXJuIG4uaXNGdW5jdGlvbihkLnN0b3ApJiYobi5fcXVldWVIb29rcyhqLmVsZW0sai5vcHRzLnF1ZXVlKS5zdG9wPW4ucHJveHkoZC5zdG9wLGQpKSxkO3JldHVybiBuLm1hcChrLG5iLGopLG4uaXNGdW5jdGlvbihqLm9wdHMuc3RhcnQpJiZqLm9wdHMuc3RhcnQuY2FsbChhLGopLG4uZngudGltZXIobi5leHRlbmQoaSx7ZWxlbTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksai5wcm9ncmVzcyhqLm9wdHMucHJvZ3Jlc3MpLmRvbmUoai5vcHRzLmRvbmUsai5vcHRzLmNvbXBsZXRlKS5mYWlsKGoub3B0cy5mYWlsKS5hbHdheXMoai5vcHRzLmFsd2F5cyl9bi5BbmltYXRpb249bi5leHRlbmQocWIse3R3ZWVuZXJzOnsiKiI6W2Z1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jcmVhdGVUd2VlbihhLGIpO3JldHVybiBYKGMuZWxlbSxhLFUuZXhlYyhiKSxjKSxjfV19LHR3ZWVuZXI6ZnVuY3Rpb24oYSxiKXtuLmlzRnVuY3Rpb24oYSk/KGI9YSxhPVsiKiJdKTphPWEubWF0Y2goRyk7Zm9yKHZhciBjLGQ9MCxlPWEubGVuZ3RoO2U+ZDtkKyspYz1hW2RdLHFiLnR3ZWVuZXJzW2NdPXFiLnR3ZWVuZXJzW2NdfHxbXSxxYi50d2VlbmVyc1tjXS51bnNoaWZ0KGIpfSxwcmVmaWx0ZXJzOltvYl0scHJlZmlsdGVyOmZ1bmN0aW9uKGEsYil7Yj9xYi5wcmVmaWx0ZXJzLnVuc2hpZnQoYSk6cWIucHJlZmlsdGVycy5wdXNoKGEpfX0pLG4uc3BlZWQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEmJiJvYmplY3QiPT10eXBlb2YgYT9uLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU6Y3x8IWMmJmJ8fG4uaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhbi5pc0Z1bmN0aW9uKGIpJiZifTtyZXR1cm4gZC5kdXJhdGlvbj1uLmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2YgZC5kdXJhdGlvbj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gbi5meC5zcGVlZHM/bi5meC5zcGVlZHNbZC5kdXJhdGlvbl06bi5meC5zcGVlZHMuX2RlZmF1bHQsbnVsbCE9ZC5xdWV1ZSYmZC5xdWV1ZSE9PSEwfHwoZC5xdWV1ZT0iZngiKSxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXtuLmlzRnVuY3Rpb24oZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWUmJm4uZGVxdWV1ZSh0aGlzLGQucXVldWUpfSxkfSxuLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcihXKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1uLmlzRW1wdHlPYmplY3QoYSksZj1uLnNwZWVkKGIsYyxkKSxnPWZ1bmN0aW9uKCl7dmFyIGI9cWIodGhpcyxuLmV4dGVuZCh7fSxhKSxmKTsoZXx8bi5fZGF0YSh0aGlzLCJmaW5pc2giKSkmJmIuc3RvcCghMCl9O3JldHVybiBnLmZpbmlzaD1nLGV8fGYucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShmLnF1ZXVlLGcpfSxzdG9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihhKXt2YXIgYj1hLnN0b3A7ZGVsZXRlIGEuc3RvcCxiKGMpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihjPWIsYj1hLGE9dm9pZCAwKSxiJiZhIT09ITEmJnRoaXMucXVldWUoYXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9ITAsZT1udWxsIT1hJiZhKyJxdWV1ZUhvb2tzIixmPW4udGltZXJzLGc9bi5fZGF0YSh0aGlzKTtpZihlKWdbZV0mJmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcpZ1tlXSYmZ1tlXS5zdG9wJiZrYi50ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTspZltlXS5lbGVtIT09dGhpc3x8bnVsbCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3RvcChjKSxiPSExLGYuc3BsaWNlKGUsMSkpOyFiJiZjfHxuLmRlcXVldWUodGhpcyxhKX0pfSxmaW5pc2g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmKGE9YXx8ImZ4IiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGIsYz1uLl9kYXRhKHRoaXMpLGQ9Y1thKyJxdWV1ZSJdLGU9Y1thKyJxdWV1ZUhvb2tzIl0sZj1uLnRpbWVycyxnPWQ/ZC5sZW5ndGg6MDtmb3IoYy5maW5pc2g9ITAsbi5xdWV1ZSh0aGlzLGEsW10pLGUmJmUuc3RvcCYmZS5zdG9wLmNhbGwodGhpcywhMCksYj1mLmxlbmd0aDtiLS07KWZbYl0uZWxlbT09PXRoaXMmJmZbYl0ucXVldWU9PT1hJiYoZltiXS5hbmltLnN0b3AoITApLGYuc3BsaWNlKGIsMSkpO2ZvcihiPTA7Zz5iO2IrKylkW2JdJiZkW2JdLmZpbmlzaCYmZFtiXS5maW5pc2guY2FsbCh0aGlzKTtkZWxldGUgYy5maW5pc2h9KX19KSxuLmVhY2goWyJ0b2dnbGUiLCJzaG93IiwiaGlkZSJdLGZ1bmN0aW9uKGEsYil7dmFyIGM9bi5mbltiXTtuLmZuW2JdPWZ1bmN0aW9uKGEsZCxlKXtyZXR1cm4gbnVsbD09YXx8ImJvb2xlYW4iPT10eXBlb2YgYT9jLmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0aGlzLmFuaW1hdGUobWIoYiwhMCksYSxkLGUpfX0pLG4uZWFjaCh7c2xpZGVEb3duOm1iKCJzaG93Iiksc2xpZGVVcDptYigiaGlkZSIpLHNsaWRlVG9nZ2xlOm1iKCJ0b2dnbGUiKSxmYWRlSW46e29wYWNpdHk6InNob3cifSxmYWRlT3V0OntvcGFjaXR5OiJoaWRlIn0sZmFkZVRvZ2dsZTp7b3BhY2l0eToidG9nZ2xlIn19LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW5jdGlvbihhLGMsZCl7cmV0dXJuIHRoaXMuYW5pbWF0ZShiLGEsYyxkKX19KSxuLnRpbWVycz1bXSxuLmZ4LnRpY2s9ZnVuY3Rpb24oKXt2YXIgYSxiPW4udGltZXJzLGM9MDtmb3IoaGI9bi5ub3coKTtjPGIubGVuZ3RoO2MrKylhPWJbY10sYSgpfHxiW2NdIT09YXx8Yi5zcGxpY2UoYy0tLDEpO2IubGVuZ3RofHxuLmZ4LnN0b3AoKSxoYj12b2lkIDB9LG4uZngudGltZXI9ZnVuY3Rpb24oYSl7bi50aW1lcnMucHVzaChhKSxhKCk/bi5meC5zdGFydCgpOm4udGltZXJzLnBvcCgpfSxuLmZ4LmludGVydmFsPTEzLG4uZnguc3RhcnQ9ZnVuY3Rpb24oKXtpYnx8KGliPWEuc2V0SW50ZXJ2YWwobi5meC50aWNrLG4uZnguaW50ZXJ2YWwpKX0sbi5meC5zdG9wPWZ1bmN0aW9uKCl7YS5jbGVhckludGVydmFsKGliKSxpYj1udWxsfSxuLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxuLmZuLmRlbGF5PWZ1bmN0aW9uKGIsYyl7cmV0dXJuIGI9bi5meD9uLmZ4LnNwZWVkc1tiXXx8YjpiLGM9Y3x8ImZ4Iix0aGlzLnF1ZXVlKGMsZnVuY3Rpb24oYyxkKXt2YXIgZT1hLnNldFRpbWVvdXQoYyxiKTtkLnN0b3A9ZnVuY3Rpb24oKXthLmNsZWFyVGltZW91dChlKX19KX0sZnVuY3Rpb24oKXt2YXIgYSxiPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxjPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksZT1kLmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpLGY9ZS5hcHBlbmRDaGlsZChkLmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpKTtjPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksYy5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxjLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixhPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxiLnNldEF0dHJpYnV0ZSgidHlwZSIsImNoZWNrYm94IiksYy5hcHBlbmRDaGlsZChiKSxhPWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxhLnN0eWxlLmNzc1RleHQ9InRvcDoxcHgiLGwuZ2V0U2V0QXR0cmlidXRlPSJ0IiE9PWMuY2xhc3NOYW1lLGwuc3R5bGU9L3RvcC8udGVzdChhLmdldEF0dHJpYnV0ZSgic3R5bGUiKSksbC5ocmVmTm9ybWFsaXplZD0iL2EiPT09YS5nZXRBdHRyaWJ1dGUoImhyZWYiKSxsLmNoZWNrT249ISFiLnZhbHVlLGwub3B0U2VsZWN0ZWQ9Zi5zZWxlY3RlZCxsLmVuY3R5cGU9ISFkLmNyZWF0ZUVsZW1lbnQoImZvcm0iKS5lbmN0eXBlLGUuZGlzYWJsZWQ9ITAsbC5vcHREaXNhYmxlZD0hZi5kaXNhYmxlZCxiPWQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSxiLnNldEF0dHJpYnV0ZSgidmFsdWUiLCIiKSxsLmlucHV0PSIiPT09Yi5nZXRBdHRyaWJ1dGUoInZhbHVlIiksYi52YWx1ZT0idCIsYi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJyYWRpbyIpLGwucmFkaW9WYWx1ZT0idCI9PT1iLnZhbHVlfSgpO3ZhciByYj0vXHIvZyxzYj0vW1x4MjBcdFxyXG5cZl0rL2c7bi5mbi5leHRlbmQoe3ZhbDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT10aGlzWzBdO3tpZihhcmd1bWVudHMubGVuZ3RoKXJldHVybiBkPW4uaXNGdW5jdGlvbihhKSx0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGU7MT09PXRoaXMubm9kZVR5cGUmJihlPWQ/YS5jYWxsKHRoaXMsYyxuKHRoaXMpLnZhbCgpKTphLG51bGw9PWU/ZT0iIjoibnVtYmVyIj09dHlwZW9mIGU/ZSs9IiI6bi5pc0FycmF5KGUpJiYoZT1uLm1hcChlLGZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hPyIiOmErIiJ9KSksYj1uLnZhbEhvb2tzW3RoaXMudHlwZV18fG4udmFsSG9va3NbdGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYic2V0ImluIGImJnZvaWQgMCE9PWIuc2V0KHRoaXMsZSwidmFsdWUiKXx8KHRoaXMudmFsdWU9ZSkpfSk7aWYoZSlyZXR1cm4gYj1uLnZhbEhvb2tzW2UudHlwZV18fG4udmFsSG9va3NbZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSxiJiYiZ2V0ImluIGImJnZvaWQgMCE9PShjPWIuZ2V0KGUsInZhbHVlIikpP2M6KGM9ZS52YWx1ZSwic3RyaW5nIj09dHlwZW9mIGM/Yy5yZXBsYWNlKHJiLCIiKTpudWxsPT1jPyIiOmMpfX19KSxuLmV4dGVuZCh7dmFsSG9va3M6e29wdGlvbjp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW4uZmluZC5hdHRyKGEsInZhbHVlIik7cmV0dXJuIG51bGwhPWI/YjpuLnRyaW0obi50ZXh0KGEpKS5yZXBsYWNlKHNiLCIgIil9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXtmb3IodmFyIGIsYyxkPWEub3B0aW9ucyxlPWEuc2VsZWN0ZWRJbmRleCxmPSJzZWxlY3Qtb25lIj09PWEudHlwZXx8MD5lLGc9Zj9udWxsOltdLGg9Zj9lKzE6ZC5sZW5ndGgsaT0wPmU/aDpmP2U6MDtoPmk7aSsrKWlmKGM9ZFtpXSwoYy5zZWxlY3RlZHx8aT09PWUpJiYobC5vcHREaXNhYmxlZD8hYy5kaXNhYmxlZDpudWxsPT09Yy5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIikpJiYoIWMucGFyZW50Tm9kZS5kaXNhYmxlZHx8IW4ubm9kZU5hbWUoYy5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7aWYoYj1uKGMpLnZhbCgpLGYpcmV0dXJuIGI7Zy5wdXNoKGIpfXJldHVybiBnfSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5vcHRpb25zLGY9bi5tYWtlQXJyYXkoYiksZz1lLmxlbmd0aDt3aGlsZShnLS0paWYoZD1lW2ddLG4uaW5BcnJheShuLnZhbEhvb2tzLm9wdGlvbi5nZXQoZCksZik+LTEpdHJ5e2Quc2VsZWN0ZWQ9Yz0hMH1jYXRjaChoKXtkLnNjcm9sbEhlaWdodH1lbHNlIGQuc2VsZWN0ZWQ9ITE7cmV0dXJuIGN8fChhLnNlbGVjdGVkSW5kZXg9LTEpLGV9fX19KSxuLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtuLnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbi5pc0FycmF5KGIpP2EuY2hlY2tlZD1uLmluQXJyYXkobihhKS52YWwoKSxiKT4tMTp2b2lkIDB9fSxsLmNoZWNrT258fChuLnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSk7dmFyIHRiLHViLHZiPW4uZXhwci5hdHRySGFuZGxlLHdiPS9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2kseGI9bC5nZXRTZXRBdHRyaWJ1dGUseWI9bC5pbnB1dDtuLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBZKHRoaXMsbi5hdHRyLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLnJlbW92ZUF0dHIodGhpcyxhKX0pfX0pLG4uZXh0ZW5kKHthdHRyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9YS5ub2RlVHlwZTtpZigzIT09ZiYmOCE9PWYmJjIhPT1mKXJldHVybiJ1bmRlZmluZWQiPT10eXBlb2YgYS5nZXRBdHRyaWJ1dGU/bi5wcm9wKGEsYixjKTooMT09PWYmJm4uaXNYTUxEb2MoYSl8fChiPWIudG9Mb3dlckNhc2UoKSxlPW4uYXR0ckhvb2tzW2JdfHwobi5leHByLm1hdGNoLmJvb2wudGVzdChiKT91Yjp0YikpLHZvaWQgMCE9PWM/bnVsbD09PWM/dm9pZCBuLnJlbW92ZUF0dHIoYSxiKTplJiYic2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0KGEsYyxiKSk/ZDooYS5zZXRBdHRyaWJ1dGUoYixjKyIiKSxjKTplJiYiZ2V0ImluIGUmJm51bGwhPT0oZD1lLmdldChhLGIpKT9kOihkPW4uZmluZC5hdHRyKGEsYiksbnVsbD09ZD92b2lkIDA6ZCkpfSxhdHRySG9va3M6e3R5cGU6e3NldDpmdW5jdGlvbihhLGIpe2lmKCFsLnJhZGlvVmFsdWUmJiJyYWRpbyI9PT1iJiZuLm5vZGVOYW1lKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7cmV0dXJuIGEuc2V0QXR0cmlidXRlKCJ0eXBlIixiKSxjJiYoYS52YWx1ZT1jKSxifX19fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPTAsZj1iJiZiLm1hdGNoKEcpO2lmKGYmJjE9PT1hLm5vZGVUeXBlKXdoaWxlKGM9ZltlKytdKWQ9bi5wcm9wRml4W2NdfHxjLG4uZXhwci5tYXRjaC5ib29sLnRlc3QoYyk/eWImJnhifHwhd2IudGVzdChjKT9hW2RdPSExOmFbbi5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtkXT0hMTpuLmF0dHIoYSxjLCIiKSxhLnJlbW92ZUF0dHJpYnV0ZSh4Yj9jOmQpfX0pLHViPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPT09ITE/bi5yZW1vdmVBdHRyKGEsYyk6eWImJnhifHwhd2IudGVzdChjKT9hLnNldEF0dHJpYnV0ZSgheGImJm4ucHJvcEZpeFtjXXx8YyxjKTphW24uY2FtZWxDYXNlKCJkZWZhdWx0LSIrYyldPWFbY109ITAsY319LG4uZWFjaChuLmV4cHIubWF0Y2guYm9vbC5zb3VyY2UubWF0Y2goL1x3Ky9nKSxmdW5jdGlvbihhLGIpe3ZhciBjPXZiW2JdfHxuLmZpbmQuYXR0cjt5YiYmeGJ8fCF3Yi50ZXN0KGIpP3ZiW2JdPWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxmO3JldHVybiBkfHwoZj12YltiXSx2YltiXT1lLGU9bnVsbCE9YyhhLGIsZCk/Yi50b0xvd2VyQ2FzZSgpOm51bGwsdmJbYl09ZiksZX06dmJbYl09ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjP3ZvaWQgMDphW24uY2FtZWxDYXNlKCJkZWZhdWx0LSIrYildP2IudG9Mb3dlckNhc2UoKTpudWxsfX0pLHliJiZ4Ynx8KG4uYXR0ckhvb2tzLnZhbHVlPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuLm5vZGVOYW1lKGEsImlucHV0Iik/dm9pZChhLmRlZmF1bHRWYWx1ZT1iKTp0YiYmdGIuc2V0KGEsYixjKX19KSx4Ynx8KHRiPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtyZXR1cm4gZHx8YS5zZXRBdHRyaWJ1dGVOb2RlKGQ9YS5vd25lckRvY3VtZW50LmNyZWF0ZUF0dHJpYnV0ZShjKSksZC52YWx1ZT1iKz0iIiwidmFsdWUiPT09Y3x8Yj09PWEuZ2V0QXR0cmlidXRlKGMpP2I6dm9pZCAwfX0sdmIuaWQ9dmIubmFtZT12Yi5jb29yZHM9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBjP3ZvaWQgMDooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiYiIiE9PWQudmFsdWU/ZC52YWx1ZTpudWxsfSxuLnZhbEhvb2tzLmJ1dHRvbj17Z2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpO3JldHVybiBjJiZjLnNwZWNpZmllZD9jLnZhbHVlOnZvaWQgMH0sc2V0OnRiLnNldH0sbi5hdHRySG9va3MuY29udGVudGVkaXRhYmxlPXtzZXQ6ZnVuY3Rpb24oYSxiLGMpe3RiLnNldChhLCIiPT09Yj8hMTpiLGMpfX0sbi5lYWNoKFsid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihhLGIpe24uYXR0ckhvb2tzW2JdPXtzZXQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4iIj09PWM/KGEuc2V0QXR0cmlidXRlKGIsImF1dG8iKSxjKTp2b2lkIDB9fX0pKSxsLnN0eWxlfHwobi5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0fHx2b2lkIDB9LHNldDpmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0eWxlLmNzc1RleHQ9YisiIn19KTt2YXIgemI9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdCkkL2ksQWI9L14oPzphfGFyZWEpJC9pO24uZm4uZXh0ZW5kKHtwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFkodGhpcyxuLnByb3AsYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9bi5wcm9wRml4W2FdfHxhLHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2FdPXZvaWQgMCxkZWxldGUgdGhpc1thXX1jYXRjaChiKXt9fSl9fSksbi5leHRlbmQoe3Byb3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZj1hLm5vZGVUeXBlO2lmKDMhPT1mJiY4IT09ZiYmMiE9PWYpcmV0dXJuIDE9PT1mJiZuLmlzWE1MRG9jKGEpfHwoYj1uLnByb3BGaXhbYl18fGIsZT1uLnByb3BIb29rc1tiXSksdm9pZCAwIT09Yz9lJiYic2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0KGEsYyxiKSk/ZDphW2JdPWM6ZSYmImdldCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDphW2JdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bi5maW5kLmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4gYj9wYXJzZUludChiLDEwKTp6Yi50ZXN0KGEubm9kZU5hbWUpfHxBYi50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDotMX19fSxwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn19KSxsLmhyZWZOb3JtYWxpemVkfHxuLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3Rpb24oYSxiKXtuLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZShiLDQpfX19KSxsLm9wdFNlbGVjdGVkfHwobi5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH0sc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtiJiYoYi5zZWxlY3RlZEluZGV4LGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpfX0pLG4uZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHkiLCJtYXhMZW5ndGgiLCJjZWxsU3BhY2luZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNwYW4iLCJ1c2VNYXAiLCJmcmFtZUJvcmRlciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7bi5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pLGwuZW5jdHlwZXx8KG4ucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpO3ZhciBCYj0vW1x0XHJcblxmXS9nO2Z1bmN0aW9uIENiKGEpe3JldHVybiBuLmF0dHIoYSwiY2xhc3MiKXx8IiJ9bi5mbi5leHRlbmQoe2FkZENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlLGYsZyxoLGk9MDtpZihuLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsQ2IodGhpcykpKX0pO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmYSl7Yj1hLm1hdGNoKEcpfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlpZihlPUNiKGMpLGQ9MT09PWMubm9kZVR5cGUmJigiICIrZSsiICIpLnJlcGxhY2UoQmIsIiAiKSl7Zz0wO3doaWxlKGY9YltnKytdKWQuaW5kZXhPZigiICIrZisiICIpPDAmJihkKz1mKyIgIik7aD1uLnRyaW0oZCksZSE9PWgmJm4uYXR0cihjLCJjbGFzcyIsaCl9fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaCxpPTA7aWYobi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bih0aGlzKS5yZW1vdmVDbGFzcyhhLmNhbGwodGhpcyxiLENiKHRoaXMpKSl9KTtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5hdHRyKCJjbGFzcyIsIiIpO2lmKCJzdHJpbmciPT10eXBlb2YgYSYmYSl7Yj1hLm1hdGNoKEcpfHxbXTt3aGlsZShjPXRoaXNbaSsrXSlpZihlPUNiKGMpLGQ9MT09PWMubm9kZVR5cGUmJigiICIrZSsiICIpLnJlcGxhY2UoQmIsIiAiKSl7Zz0wO3doaWxlKGY9YltnKytdKXdoaWxlKGQuaW5kZXhPZigiICIrZisiICIpPi0xKWQ9ZC5yZXBsYWNlKCIgIitmKyIgIiwiICIpO2g9bi50cmltKGQpLGUhPT1oJiZuLmF0dHIoYywiY2xhc3MiLGgpfX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBiJiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6bi5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihjKXtuKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLGMsQ2IodGhpcyksYiksYil9KTp0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYixkLGUsZjtpZigic3RyaW5nIj09PWMpe2Q9MCxlPW4odGhpcyksZj1hLm1hdGNoKEcpfHxbXTt3aGlsZShiPWZbZCsrXSllLmhhc0NsYXNzKGIpP2UucmVtb3ZlQ2xhc3MoYik6ZS5hZGRDbGFzcyhiKX1lbHNlIHZvaWQgMCE9PWEmJiJib29sZWFuIiE9PWN8fChiPUNiKHRoaXMpLGImJm4uX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIsYiksbi5hdHRyKHRoaXMsImNsYXNzIixifHxhPT09ITE/IiI6bi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIil8fCIiKSl9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkPTA7Yj0iICIrYSsiICI7d2hpbGUoYz10aGlzW2QrK10paWYoMT09PWMubm9kZVR5cGUmJigiICIrQ2IoYykrIiAiKS5yZXBsYWNlKEJiLCIgIikuaW5kZXhPZihiKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX19KSxuLmVhY2goImJsdXIgZm9jdXMgZm9jdXNpbiBmb2N1c291dCBsb2FkIHJlc2l6ZSBzY3JvbGwgdW5sb2FkIGNsaWNrIGRibGNsaWNrIG1vdXNlZG93biBtb3VzZXVwIG1vdXNlbW92ZSBtb3VzZW92ZXIgbW91c2VvdXQgbW91c2VlbnRlciBtb3VzZWxlYXZlIGNoYW5nZSBzZWxlY3Qgc3VibWl0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgZXJyb3IgY29udGV4dG1lbnUiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtuLmZuW2JdPWZ1bmN0aW9uKGEsYyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKGIsbnVsbCxhLGMpOnRoaXMudHJpZ2dlcihiKX19KSxuLmZuLmV4dGVuZCh7aG92ZXI6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5tb3VzZWVudGVyKGEpLm1vdXNlbGVhdmUoYnx8YSl9fSk7dmFyIERiPWEubG9jYXRpb24sRWI9bi5ub3coKSxGYj0vXD8vLEdiPS8oLCl8KFxbfHspfCh9fF0pfCIoPzpbXiJcXFxyXG5dfFxcWyJcXFwvYmZucnRdfFxcdVtcZGEtZkEtRl17NH0pKiJccyo6P3x0cnVlfGZhbHNlfG51bGx8LT8oPyEwXGQpXGQrKD86XC5cZCt8KSg/OltlRV1bKy1dP1xkK3wpL2c7bi5wYXJzZUpTT049ZnVuY3Rpb24oYil7aWYoYS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKyIiKTt2YXIgYyxkPW51bGwsZT1uLnRyaW0oYisiIik7cmV0dXJuIGUmJiFuLnRyaW0oZS5yZXBsYWNlKEdiLGZ1bmN0aW9uKGEsYixlLGYpe3JldHVybiBjJiZiJiYoZD0wKSwwPT09ZD9hOihjPWV8fGIsZCs9IWYtIWUsIiIpfSkpP0Z1bmN0aW9uKCJyZXR1cm4gIitlKSgpOm4uZXJyb3IoIkludmFsaWQgSlNPTjogIitiKX0sbi5wYXJzZVhNTD1mdW5jdGlvbihiKXt2YXIgYyxkO2lmKCFifHwic3RyaW5nIiE9dHlwZW9mIGIpcmV0dXJuIG51bGw7dHJ5e2EuRE9NUGFyc2VyPyhkPW5ldyBhLkRPTVBhcnNlcixjPWQucGFyc2VGcm9tU3RyaW5nKGIsInRleHQveG1sIikpOihjPW5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bi5lcnJvcigiSW52YWxpZCBYTUw6ICIrYiksY307dmFyIEhiPS8jLiokLyxJYj0vKFs/Jl0pXz1bXiZdKi8sSmI9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9nbSxLYj0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxMYj0vXig/OkdFVHxIRUFEKSQvLE1iPS9eXC9cLy8sTmI9L14oW1x3ListXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sT2I9e30sUGI9e30sUWI9IiovIi5jb25jYXQoIioiKSxSYj1EYi5ocmVmLFNiPU5iLmV4ZWMoUmIudG9Mb3dlckNhc2UoKSl8fFtdO2Z1bmN0aW9uIFRiKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgYiYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEcpfHxbXTtpZihuLmlzRnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8IioiLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb24gVWIoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09UGI7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoXT0hMCxuLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGcoaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbiBWYihhLGIpe3ZhciBjLGQsZT1uLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZuLmV4dGVuZCghMCxhLGMpLGF9ZnVuY3Rpb24gV2IoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnXS50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4gYyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gWGIoYSxiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9YS5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1tmXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRmlsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqIiE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5zcGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJiZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntzdGF0ZToic3VjY2VzcyIsZGF0YTpifX1uLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e30sYWpheFNldHRpbmdzOnt1cmw6UmIsdHlwZToiR0VUIixpc0xvY2FsOktiLnRlc3QoU2JbMV0pLGdsb2JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6UWIsdGV4dDoidGV4dC9wbGFpbiIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L1xieG1sXGIvLGh0bWw6L1xiaHRtbC8sanNvbjovXGJqc29uXGIvfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0Iixqc29uOiJyZXNwb25zZUpTT04ifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjpTdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6bi5wYXJzZUpTT04sInRleHQgeG1sIjpuLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7dXJsOiEwLGNvbnRleHQ6ITB9fSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYj9WYihWYihhLG4uYWpheFNldHRpbmdzKSxiKTpWYihuLmFqYXhTZXR0aW5ncyxhKX0sYWpheFByZWZpbHRlcjpUYihPYiksYWpheFRyYW5zcG9ydDpUYihQYiksYWpheDpmdW5jdGlvbihiLGMpeyJvYmplY3QiPT10eXBlb2YgYiYmKGM9YixiPXZvaWQgMCksYz1jfHx7fTt2YXIgZCxlLGYsZyxoLGksaixrLGw9bi5hamF4U2V0dXAoe30sYyksbT1sLmNvbnRleHR8fGwsbz1sLmNvbnRleHQmJihtLm5vZGVUeXBlfHxtLmpxdWVyeSk/bihtKTpuLmV2ZW50LHA9bi5EZWZlcnJlZCgpLHE9bi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iikscj1sLnN0YXR1c0NvZGV8fHt9LHM9e30sdD17fSx1PTAsdj0iY2FuY2VsZWQiLHc9e3JlYWR5U3RhdGU6MCxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYjtpZigyPT09dSl7aWYoIWspe2s9e307d2hpbGUoYj1KYi5leGVjKGcpKWtbYlsxXS50b0xvd2VyQ2FzZSgpXT1iWzJdfWI9a1thLnRvTG93ZXJDYXNlKCldfXJldHVybiBudWxsPT1iP251bGw6Yn0sZ2V0QWxsUmVzcG9uc2VIZWFkZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIDI9PT11P2c6bnVsbH0sc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihhLGIpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTtyZXR1cm4gdXx8KGE9dFtjXT10W2NdfHxhLHNbYV09YiksdGhpc30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gdXx8KGwubWltZVR5cGU9YSksdGhpc30sc3RhdHVzQ29kZTpmdW5jdGlvbihhKXt2YXIgYjtpZihhKWlmKDI+dSlmb3IoYiBpbiBhKXJbYl09W3JbYl0sYVtiXV07ZWxzZSB3LmFsd2F5cyhhW3cuc3RhdHVzXSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe3ZhciBiPWF8fHY7cmV0dXJuIGomJmouYWJvcnQoYikseSgwLGIpLHRoaXN9fTtpZihwLnByb21pc2UodykuY29tcGxldGU9cS5hZGQsdy5zdWNjZXNzPXcuZG9uZSx3LmVycm9yPXcuZmFpbCxsLnVybD0oKGJ8fGwudXJsfHxSYikrIiIpLnJlcGxhY2UoSGIsIiIpLnJlcGxhY2UoTWIsU2JbMV0rIi8vIiksbC50eXBlPWMubWV0aG9kfHxjLnR5cGV8fGwubWV0aG9kfHxsLnR5cGUsbC5kYXRhVHlwZXM9bi50cmltKGwuZGF0YVR5cGV8fCIqIikudG9Mb3dlckNhc2UoKS5tYXRjaChHKXx8WyIiXSxudWxsPT1sLmNyb3NzRG9tYWluJiYoZD1OYi5leGVjKGwudXJsLnRvTG93ZXJDYXNlKCkpLGwuY3Jvc3NEb21haW49ISghZHx8ZFsxXT09PVNiWzFdJiZkWzJdPT09U2JbMl0mJihkWzNdfHwoImh0dHA6Ij09PWRbMV0/IjgwIjoiNDQzIikpPT09KFNiWzNdfHwoImh0dHA6Ij09PVNiWzFdPyI4MCI6IjQ0MyIpKSkpLGwuZGF0YSYmbC5wcm9jZXNzRGF0YSYmInN0cmluZyIhPXR5cGVvZiBsLmRhdGEmJihsLmRhdGE9bi5wYXJhbShsLmRhdGEsbC50cmFkaXRpb25hbCkpLFViKE9iLGwsYyx3KSwyPT09dSlyZXR1cm4gdztpPW4uZXZlbnQmJmwuZ2xvYmFsLGkmJjA9PT1uLmFjdGl2ZSsrJiZuLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpLGwudHlwZT1sLnR5cGUudG9VcHBlckNhc2UoKSxsLmhhc0NvbnRlbnQ9IUxiLnRlc3QobC50eXBlKSxmPWwudXJsLGwuaGFzQ29udGVudHx8KGwuZGF0YSYmKGY9bC51cmwrPShGYi50ZXN0KGYpPyImIjoiPyIpK2wuZGF0YSxkZWxldGUgbC5kYXRhKSxsLmNhY2hlPT09ITEmJihsLnVybD1JYi50ZXN0KGYpP2YucmVwbGFjZShJYiwiJDFfPSIrRWIrKyk6ZisoRmIudGVzdChmKT8iJiI6Ij8iKSsiXz0iK0ViKyspKSxsLmlmTW9kaWZpZWQmJihuLmxhc3RNb2RpZmllZFtmXSYmdy5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsbi5sYXN0TW9kaWZpZWRbZl0pLG4uZXRhZ1tmXSYmdy5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixuLmV0YWdbZl0pKSwobC5kYXRhJiZsLmhhc0NvbnRlbnQmJmwuY29udGVudFR5cGUhPT0hMXx8Yy5jb250ZW50VHlwZSkmJncuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixsLmNvbnRlbnRUeXBlKSx3LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsbC5kYXRhVHlwZXNbMF0mJmwuYWNjZXB0c1tsLmRhdGFUeXBlc1swXV0/bC5hY2NlcHRzW2wuZGF0YVR5cGVzWzBdXSsoIioiIT09bC5kYXRhVHlwZXNbMF0/IiwgIitRYisiOyBxPTAuMDEiOiIiKTpsLmFjY2VwdHNbIioiXSk7Zm9yKGUgaW4gbC5oZWFkZXJzKXcuc2V0UmVxdWVzdEhlYWRlcihlLGwuaGVhZGVyc1tlXSk7aWYobC5iZWZvcmVTZW5kJiYobC5iZWZvcmVTZW5kLmNhbGwobSx3LGwpPT09ITF8fDI9PT11KSlyZXR1cm4gdy5hYm9ydCgpO3Y9ImFib3J0Ijtmb3IoZSBpbntzdWNjZXNzOjEsZXJyb3I6MSxjb21wbGV0ZToxfSl3W2VdKGxbZV0pO2lmKGo9VWIoUGIsbCxjLHcpKXtpZih3LnJlYWR5U3RhdGU9MSxpJiZvLnRyaWdnZXIoImFqYXhTZW5kIixbdyxsXSksMj09PXUpcmV0dXJuIHc7bC5hc3luYyYmbC50aW1lb3V0PjAmJihoPWEuc2V0VGltZW91dChmdW5jdGlvbigpe3cuYWJvcnQoInRpbWVvdXQiKX0sbC50aW1lb3V0KSk7dHJ5e3U9MSxqLnNlbmQocyx5KX1jYXRjaCh4KXtpZighKDI+dSkpdGhyb3cgeDt5KC0xLHgpfX1lbHNlIHkoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHkoYixjLGQsZSl7dmFyIGsscyx0LHYseCx5PWM7MiE9PXUmJih1PTIsaCYmYS5jbGVhclRpbWVvdXQoaCksaj12b2lkIDAsZz1lfHwiIix3LnJlYWR5U3RhdGU9Yj4wPzQ6MCxrPWI+PTIwMCYmMzAwPmJ8fDMwND09PWIsZCYmKHY9V2IobCx3LGQpKSx2PVhiKGwsdix3LGspLGs/KGwuaWZNb2RpZmllZCYmKHg9dy5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpLHgmJihuLmxhc3RNb2RpZmllZFtmXT14KSx4PXcuZ2V0UmVzcG9uc2VIZWFkZXIoImV0YWciKSx4JiYobi5ldGFnW2ZdPXgpKSwyMDQ9PT1ifHwiSEVBRCI9PT1sLnR5cGU/eT0ibm9jb250ZW50IjozMDQ9PT1iP3k9Im5vdG1vZGlmaWVkIjooeT12LnN0YXRlLHM9di5kYXRhLHQ9di5lcnJvcixrPSF0KSk6KHQ9eSwhYiYmeXx8KHk9ImVycm9yIiwwPmImJihiPTApKSksdy5zdGF0dXM9Yix3LnN0YXR1c1RleHQ9KGN8fHkpKyIiLGs/cC5yZXNvbHZlV2l0aChtLFtzLHksd10pOnAucmVqZWN0V2l0aChtLFt3LHksdF0pLHcuc3RhdHVzQ29kZShyKSxyPXZvaWQgMCxpJiZvLnRyaWdnZXIoaz8iYWpheFN1Y2Nlc3MiOiJhamF4RXJyb3IiLFt3LGwsaz9zOnRdKSxxLmZpcmVXaXRoKG0sW3cseV0pLGkmJihvLnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW3csbF0pLC0tbi5hY3RpdmV8fG4uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybiB3fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbi5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG4uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG4uZWFjaChbImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe25bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG4uaXNGdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG4uYWpheChuLmV4dGVuZCh7dXJsOmEsdHlwZTpiLGRhdGFUeXBlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0sbi5pc1BsYWluT2JqZWN0KGEpJiZhKSl9fSksbi5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gbi5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRhdGFUeXBlOiJzY3JpcHQiLGNhY2hlOiEwLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxuLmZuLmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXtpZihuLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhpc1swXSl7dmFyIGI9bihhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmMT09PWEuZmlyc3RDaGlsZC5ub2RlVHlwZSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiBuLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe24odGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPW4odGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9bi5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7bih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe24ubm9kZU5hbWUodGhpcywiYm9keSIpfHxuKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX19KTtmdW5jdGlvbiBZYihhKXtyZXR1cm4gYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxuLmNzcyhhLCJkaXNwbGF5Iil9ZnVuY3Rpb24gWmIoYSl7aWYoIW4uY29udGFpbnMoYS5vd25lckRvY3VtZW50fHxkLGEpKXJldHVybiEwO3doaWxlKGEmJjE9PT1hLm5vZGVUeXBlKXtpZigibm9uZSI9PT1ZYihhKXx8ImhpZGRlbiI9PT1hLnR5cGUpcmV0dXJuITA7YT1hLnBhcmVudE5vZGV9cmV0dXJuITF9bi5leHByLmZpbHRlcnMuaGlkZGVuPWZ1bmN0aW9uKGEpe3JldHVybiBsLnJlbGlhYmxlSGlkZGVuT2Zmc2V0cygpP2Eub2Zmc2V0V2lkdGg8PTAmJmEub2Zmc2V0SGVpZ2h0PD0wJiYhYS5nZXRDbGllbnRSZWN0cygpLmxlbmd0aDpaYihhKX0sbi5leHByLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihhKXtyZXR1cm4hbi5leHByLmZpbHRlcnMuaGlkZGVuKGEpfTt2YXIgJGI9LyUyMC9nLF9iPS9cW1xdJC8sYWM9L1xyP1xuL2csYmM9L14oPzpzdWJtaXR8YnV0dG9ufGltYWdlfHJlc2V0fGZpbGUpJC9pLGNjPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGtleWdlbikvaTtmdW5jdGlvbiBkYyhhLGIsYyxkKXt2YXIgZTtpZihuLmlzQXJyYXkoYikpbi5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxfYi50ZXN0KGEpP2QoYSxlKTpkYyhhKyJbIisoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKGN8fCJvYmplY3QiIT09bi50eXBlKGIpKWQoYSxiKTtlbHNlIGZvcihlIGluIGIpZGMoYSsiWyIrZSsiXSIsYltlXSxjLGQpfW4ucGFyYW09ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPVtdLGU9ZnVuY3Rpb24oYSxiKXtiPW4uaXNGdW5jdGlvbihiKT9iKCk6bnVsbD09Yj8iIjpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpfTtpZih2b2lkIDA9PT1iJiYoYj1uLmFqYXhTZXR0aW5ncyYmbi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpLG4uaXNBcnJheShhKXx8YS5qcXVlcnkmJiFuLmlzUGxhaW5PYmplY3QoYSkpbi5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKGMgaW4gYSlkYyhjLGFbY10sYixlKTtyZXR1cm4gZC5qb2luKCImIikucmVwbGFjZSgkYiwiKyIpfSxuLmZuLmV4dGVuZCh7c2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIG4ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT1uLnByb3AodGhpcywiZWxlbWVudHMiKTtyZXR1cm4gYT9uLm1ha2VBcnJheShhKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy50eXBlO3JldHVybiB0aGlzLm5hbWUmJiFuKHRoaXMpLmlzKCI6ZGlzYWJsZWQiKSYmY2MudGVzdCh0aGlzLm5vZGVOYW1lKSYmIWJjLnRlc3QoYSkmJih0aGlzLmNoZWNrZWR8fCFaLnRlc3QoYSkpfSkubWFwKGZ1bmN0aW9uKGEsYil7dmFyIGM9bih0aGlzKS52YWwoKTtyZXR1cm4gbnVsbD09Yz9udWxsOm4uaXNBcnJheShjKT9uLm1hcChjLGZ1bmN0aW9uKGEpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2UoYWMsIlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKGFjLCJcclxuIil9fSkuZ2V0KCl9fSksbi5hamF4U2V0dGluZ3MueGhyPXZvaWQgMCE9PWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiB0aGlzLmlzTG9jYWw/aWMoKTpkLmRvY3VtZW50TW9kZT44P2hjKCk6L14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50eXBlKSYmaGMoKXx8aWMoKX06aGM7dmFyIGVjPTAsZmM9e30sZ2M9bi5hamF4U2V0dGluZ3MueGhyKCk7YS5hdHRhY2hFdmVudCYmYS5hdHRhY2hFdmVudCgib251bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGZjKWZjW2FdKHZvaWQgMCwhMCl9KSxsLmNvcnM9ISFnYyYmIndpdGhDcmVkZW50aWFscyJpbiBnYyxnYz1sLmFqYXg9ISFnYyxnYyYmbi5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGIpe2lmKCFiLmNyb3NzRG9tYWlufHxsLmNvcnMpe3ZhciBjO3JldHVybntzZW5kOmZ1bmN0aW9uKGQsZSl7dmFyIGYsZz1iLnhocigpLGg9KytlYztpZihnLm9wZW4oYi50eXBlLGIudXJsLGIuYXN5bmMsYi51c2VybmFtZSxiLnBhc3N3b3JkKSxiLnhockZpZWxkcylmb3IoZiBpbiBiLnhockZpZWxkcylnW2ZdPWIueGhyRmllbGRzW2ZdO2IubWltZVR5cGUmJmcub3ZlcnJpZGVNaW1lVHlwZSYmZy5vdmVycmlkZU1pbWVUeXBlKGIubWltZVR5cGUpLGIuY3Jvc3NEb21haW58fGRbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGRbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZiBpbiBkKXZvaWQgMCE9PWRbZl0mJmcuc2V0UmVxdWVzdEhlYWRlcihmLGRbZl0rIiIpO2cuc2VuZChiLmhhc0NvbnRlbnQmJmIuZGF0YXx8bnVsbCksYz1mdW5jdGlvbihhLGQpe3ZhciBmLGksajtpZihjJiYoZHx8ND09PWcucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIGZjW2hdLGM9dm9pZCAwLGcub25yZWFkeXN0YXRlY2hhbmdlPW4ubm9vcCxkKTQhPT1nLnJlYWR5U3RhdGUmJmcuYWJvcnQoKTtlbHNle2o9e30sZj1nLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGcucmVzcG9uc2VUZXh0JiYoai50ZXh0PWcucmVzcG9uc2VUZXh0KTt0cnl7aT1nLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1mfHwhYi5pc0xvY2FsfHxiLmNyb3NzRG9tYWluPzEyMjM9PT1mJiYoZj0yMDQpOmY9ai50ZXh0PzIwMDo0MDR9aiYmZShmLGksaixnLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYi5hc3luYz80PT09Zy5yZWFkeVN0YXRlP2Euc2V0VGltZW91dChjKTpnLm9ucmVhZHlzdGF0ZWNoYW5nZT1mY1toXT1jOmMoKX0sYWJvcnQ6ZnVuY3Rpb24oKXtjJiZjKHZvaWQgMCwhMCl9fX19KTtmdW5jdGlvbiBoYygpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX1mdW5jdGlvbiBpYygpe3RyeXtyZXR1cm4gbmV3IGEuQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXRjaChiKXt9fW4uYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovXGIoPzpqYXZhfGVjbWEpc2NyaXB0XGIvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBuLmdsb2JhbEV2YWwoYSksYX19fSksbi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGUmJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG4uYWpheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPWQuaGVhZHx8bigiaGVhZCIpWzBdfHxkLmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihlLGYpe2I9ZC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZWFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxmKDIwMCwic3VjY2VzcyIpKX0sYy5pbnNlcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMCwhMCl9fX19KTt2YXIgamM9W10sa2M9Lyg9KVw/KD89JnwkKXxcP1w/LztuLmFqYXhTZXR1cCh7anNvbnA6ImNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9amMucG9wKCl8fG4uZXhwYW5kbysiXyIrRWIrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG4uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGtjLnRlc3QoYi51cmwpPyJ1cmwiOiJzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYwPT09KGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYma2MudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBofHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW4uaXNGdW5jdGlvbihiLmpzb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZXBsYWNlKGtjLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPShGYi50ZXN0KGIudXJsKT8iJiI6Ij8iKStiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4gZ3x8bi5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXt2b2lkIDA9PT1mP24oYSkucmVtb3ZlUHJvcChlKTphW2VdPWYsYltlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssamMucHVzaChlKSksZyYmbi5pc0Z1bmN0aW9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbi5wYXJzZUhUTUw9ZnVuY3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT10eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fGQ7dmFyIGU9eC5leGVjKGEpLGY9IWMmJltdO3JldHVybiBlP1tiLmNyZWF0ZUVsZW1lbnQoZVsxXSldOihlPWphKFthXSxiLGYpLGYmJmYubGVuZ3RoJiZuKGYpLnJlbW92ZSgpLG4ubWVyZ2UoW10sZS5jaGlsZE5vZGVzKSl9O3ZhciBsYz1uLmZuLmxvYWQ7bi5mbi5sb2FkPWZ1bmN0aW9uKGEsYixjKXtpZigic3RyaW5nIiE9dHlwZW9mIGEmJmxjKXJldHVybiBsYy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQsZSxmLGc9dGhpcyxoPWEuaW5kZXhPZigiICIpO3JldHVybiBoPi0xJiYoZD1uLnRyaW0oYS5zbGljZShoLGEubGVuZ3RoKSksYT1hLnNsaWNlKDAsaCkpLG4uaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09dHlwZW9mIGImJihlPSJQT1NUIiksZy5sZW5ndGg+MCYmbi5hamF4KHt1cmw6YSx0eXBlOmV8fCJHRVQiLGRhdGFUeXBlOiJodG1sIixkYXRhOmJ9KS5kb25lKGZ1bmN0aW9uKGEpe2Y9YXJndW1lbnRzLGcuaHRtbChkP24oIjxkaXY+IikuYXBwZW5kKG4ucGFyc2VIVE1MKGEpKS5maW5kKGQpOmEpfSkuYWx3YXlzKGMmJmZ1bmN0aW9uKGEsYil7Zy5lYWNoKGZ1bmN0aW9uKCl7Yy5hcHBseSh0aGlzLGZ8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pfSksdGhpc30sbi5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0sZnVuY3Rpb24oYSxiKXtuLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSksbi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZ3JlcChuLnRpbWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH07ZnVuY3Rpb24gbWMoYSl7cmV0dXJuIG4uaXNXaW5kb3coYSk/YTo5PT09YS5ub2RlVHlwZT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1uLm9mZnNldD17c2V0T2Zmc2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGksaixrPW4uY3NzKGEsInBvc2l0aW9uIiksbD1uKGEpLG09e307InN0YXRpYyI9PT1rJiYoYS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxoPWwub2Zmc2V0KCksZj1uLmNzcyhhLCJ0b3AiKSxpPW4uY3NzKGEsImxlZnQiKSxqPSgiYWJzb2x1dGUiPT09a3x8ImZpeGVkIj09PWspJiZuLmluQXJyYXkoImF1dG8iLFtmLGldKT4tMSxqPyhkPWwucG9zaXRpb24oKSxnPWQudG9wLGU9ZC5sZWZ0KTooZz1wYXJzZUZsb2F0KGYpfHwwLGU9cGFyc2VGbG9hdChpKXx8MCksbi5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLG4uZXh0ZW5kKHt9LGgpKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmxlZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxtKTpsLmNzcyhtKX19LG4uZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtuLm9mZnNldC5zZXRPZmZzZXQodGhpcyxhLGIpfSk7dmFyIGIsYyxkPXt0b3A6MCxsZWZ0OjB9LGU9dGhpc1swXSxmPWUmJmUub3duZXJEb2N1bWVudDtpZihmKXJldHVybiBiPWYuZG9jdW1lbnRFbGVtZW50LG4uY29udGFpbnMoYixlKT8oInVuZGVmaW5lZCIhPXR5cGVvZiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmKGQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksYz1tYyhmKSx7dG9wOmQudG9wKyhjLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCktKGIuY2xpZW50VG9wfHwwKSxsZWZ0OmQubGVmdCsoYy5wYWdlWE9mZnNldHx8Yi5zY3JvbGxMZWZ0KS0oYi5jbGllbnRMZWZ0fHwwKX0pOmR9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYixjPXt0b3A6MCxsZWZ0OjB9LGQ9dGhpc1swXTtyZXR1cm4iZml4ZWQiPT09bi5jc3MoZCwicG9zaXRpb24iKT9iPWQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6KGE9dGhpcy5vZmZzZXRQYXJlbnQoKSxiPXRoaXMub2Zmc2V0KCksbi5ub2RlTmFtZShhWzBdLCJodG1sIil8fChjPWEub2Zmc2V0KCkpLGMudG9wKz1uLmNzcyhhWzBdLCJib3JkZXJUb3BXaWR0aCIsITApLGMubGVmdCs9bi5jc3MoYVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpLHt0b3A6Yi50b3AtYy50b3Atbi5jc3MoZCwibWFyZ2luVG9wIiwhMCksbGVmdDpiLmxlZnQtYy5sZWZ0LW4uY3NzKGQsIm1hcmdpbkxlZnQiLCEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzLm9mZnNldFBhcmVudDt3aGlsZShhJiYhbi5ub2RlTmFtZShhLCJodG1sIikmJiJzdGF0aWMiPT09bi5jc3MoYSwicG9zaXRpb24iKSlhPWEub2Zmc2V0UGFyZW50O3JldHVybiBhfHxRYX0pfX0pLG4uZWFjaCh7c2Nyb2xsTGVmdDoicGFnZVhPZmZzZXQiLHNjcm9sbFRvcDoicGFnZVlPZmZzZXQifSxmdW5jdGlvbihhLGIpe3ZhciBjPS9ZLy50ZXN0KGIpO24uZm5bYV09ZnVuY3Rpb24oZCl7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihhLGQsZSl7dmFyIGY9bWMoYSk7cmV0dXJuIHZvaWQgMD09PWU/Zj9iIGluIGY/ZltiXTpmLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXTphW2RdOnZvaWQoZj9mLnNjcm9sbFRvKGM/bihmKS5zY3JvbGxMZWZ0KCk6ZSxjP2U6bihmKS5zY3JvbGxUb3AoKSk6YVtkXT1lKX0sYSxkLGFyZ3VtZW50cy5sZW5ndGgsbnVsbCl9fSksbi5lYWNoKFsidG9wIiwibGVmdCJdLGZ1bmN0aW9uKGEsYil7bi5jc3NIb29rc1tiXT1VYShsLnBpeGVsUG9zaXRpb24sZnVuY3Rpb24oYSxjKXtyZXR1cm4gYz8oYz1TYShhLGIpLE9hLnRlc3QoYyk/bihhKS5wb3NpdGlvbigpW2JdKyJweCI6Yyk6dm9pZCAwfSl9KSxuLmVhY2goe0hlaWdodDoiaGVpZ2h0IixXaWR0aDoid2lkdGgifSxmdW5jdGlvbihhLGIpe24uZWFjaCh7CnBhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiIjoib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZCl7bi5mbltkXT1mdW5jdGlvbihkLGUpe3ZhciBmPWFyZ3VtZW50cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBkKSxnPWN8fChkPT09ITB8fGU9PT0hMD8ibWFyZ2luIjoiYm9yZGVyIik7cmV0dXJuIFkodGhpcyxmdW5jdGlvbihiLGMsZCl7dmFyIGU7cmV0dXJuIG4uaXNXaW5kb3coYik/Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/KGU9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGVbInNjcm9sbCIrYV0sYi5ib2R5WyJvZmZzZXQiK2FdLGVbIm9mZnNldCIrYV0sZVsiY2xpZW50IithXSkpOnZvaWQgMD09PWQ/bi5jc3MoYixjLGcpOm4uc3R5bGUoYixjLGQsZyl9LGIsZj9kOnZvaWQgMCxmLG51bGwpfX0pfSksbi5mbi5leHRlbmQoe2JpbmQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLm9uKGEsbnVsbCxiLGMpfSx1bmJpbmQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5vZmYoYSxudWxsLGIpfSxkZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihiLGEsYyxkKX0sdW5kZWxlZ2F0ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIDE9PT1hcmd1bWVudHMubGVuZ3RoP3RoaXMub2ZmKGEsIioqIik6dGhpcy5vZmYoYixhfHwiKioiLGMpfX0pLG4uZm4uc2l6ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sbi5mbi5hbmRTZWxmPW4uZm4uYWRkQmFjaywiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gbn0pO3ZhciBuYz1hLmpRdWVyeSxvYz1hLiQ7cmV0dXJuIG4ubm9Db25mbGljdD1mdW5jdGlvbihiKXtyZXR1cm4gYS4kPT09biYmKGEuJD1vYyksYiYmYS5qUXVlcnk9PT1uJiYoYS5qUXVlcnk9bmMpLG59LGJ8fChhLmpRdWVyeT1hLiQ9biksbn0pOwo="></script>
<link href="data:text/css;charset=utf-8,%2Edt%2Dcrosstalk%2Dfade%20%7B%0Aopacity%3A%200%2E2%3B%0A%7D%0Ahtml%20body%20div%2EDTS%20div%2EdataTables%5FscrollBody%20%7B%0Abackground%3A%20none%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgewoKLy8gc29tZSBoZWxwZXIgZnVuY3Rpb25zOiB1c2luZyBhIGdsb2JhbCBvYmplY3QgRFRXaWRnZXQgc28gdGhhdCBpdCBjYW4gYmUgdXNlZAovLyBpbiBKUygpIGNvZGUsIGUuZy4gZGF0YXRhYmxlKG9wdGlvbnMgPSBsaXN0KGZvbyA9IEpTKCdjb2RlJykpKTsgdW5saWtlIFIncwovLyBkeW5hbWljIHNjb3BpbmcsIHdoZW4gJ2NvZGUnIGlzIGV2YWwoKSdlZCwgSmF2YVNjcmlwdCBkb2VzIG5vdCBrbm93IG9iamVjdHMKLy8gZnJvbSB0aGUgInBhcmVudCBmcmFtZSIsIGUuZy4gSlMoJ0RUV2lkZ2V0Jykgd2lsbCBub3Qgd29yayB1bmxlc3MgaXQgd2FzIG1hZGUKLy8gYSBnbG9iYWwgb2JqZWN0CnZhciBEVFdpZGdldCA9IHt9OwoKLy8gMTIzNDU2NjY2Ljc4OTAgLT4gMTIzLDQ1Niw2NjYuNzg5MAp2YXIgbWFya0ludGVydmFsID0gZnVuY3Rpb24oZCwgZGlnaXRzLCBpbnRlcnZhbCwgbWFyaywgZGVjTWFyaywgcHJlY2lzaW9uKSB7CiAgeCA9IHByZWNpc2lvbiA/IGQudG9QcmVjaXNpb24oZGlnaXRzKSA6IGQudG9GaXhlZChkaWdpdHMpOwogIGlmICghL14tP1tcZC5dKyQvLnRlc3QoeCkpIHJldHVybiB4OwogIHZhciB4diA9IHguc3BsaXQoJy4nKTsKICBpZiAoeHYubGVuZ3RoID4gMikgcmV0dXJuIHg7ICAvLyBzaG91bGQgaGF2ZSBhdCBtb3N0IG9uZSBkZWNpbWFsIHBvaW50CiAgeHZbMF0gPSB4dlswXS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcQig/PShcXGR7JyArIGludGVydmFsICsgJ30pKyg/IVxcZCkpJywgJ2cnKSwgbWFyayk7CiAgcmV0dXJuIHh2LmpvaW4oZGVjTWFyayk7Cn07CgpEVFdpZGdldC5mb3JtYXRDdXJyZW5jeSA9IGZ1bmN0aW9uKHRoaXosIHJvdywgZGF0YSwgY29sLCBjdXJyZW5jeSwgZGlnaXRzLCBpbnRlcnZhbCwgbWFyaywgZGVjTWFyaywgYmVmb3JlKSB7CiAgdmFyIGQgPSBwYXJzZUZsb2F0KGRhdGFbY29sXSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm47CiAgdmFyIHJlcyA9IG1hcmtJbnRlcnZhbChkLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKTsKICByZXMgPSBiZWZvcmUgPyAoL14tLy50ZXN0KHJlcykgPyAnLScgKyBjdXJyZW5jeSArIHJlcy5yZXBsYWNlKC9eLS8sICcnKSA6IGN1cnJlbmN5ICsgcmVzKSA6CiAgICByZXMgKyBjdXJyZW5jeTsKICAkKHRoaXouYXBpKCkuY2VsbChyb3csIGNvbCkubm9kZSgpKS5odG1sKHJlcyk7Cn07CgpEVFdpZGdldC5mb3JtYXRTdHJpbmcgPSBmdW5jdGlvbih0aGl6LCByb3csIGRhdGEsIGNvbCwgcHJlZml4LCBzdWZmaXgpIHsKICB2YXIgZCA9IGRhdGFbY29sXTsKICBpZiAoZCA9PT0gbnVsbCkgcmV0dXJuOwogICQodGhpei5hcGkoKS5jZWxsKHJvdywgY29sKS5ub2RlKCkpLmh0bWwocHJlZml4ICsgZCArIHN1ZmZpeCk7Cn07CgpEVFdpZGdldC5mb3JtYXRQZXJjZW50YWdlID0gZnVuY3Rpb24odGhpeiwgcm93LCBkYXRhLCBjb2wsIGRpZ2l0cywgaW50ZXJ2YWwsIG1hcmssIGRlY01hcmspIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YVtjb2xdKTsKICBpZiAoaXNOYU4oZCkpIHJldHVybjsKICAkKHRoaXouYXBpKCkuY2VsbChyb3csIGNvbCkubm9kZSgpKQogIC5odG1sKG1hcmtJbnRlcnZhbChkICogMTAwLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKSArICclJyk7Cn07CgpEVFdpZGdldC5mb3JtYXRSb3VuZCA9IGZ1bmN0aW9uKHRoaXosIHJvdywgZGF0YSwgY29sLCBkaWdpdHMsIGludGVydmFsLCBtYXJrLCBkZWNNYXJrKSB7CiAgdmFyIGQgPSBwYXJzZUZsb2F0KGRhdGFbY29sXSk7CiAgaWYgKGlzTmFOKGQpKSByZXR1cm47CiAgJCh0aGl6LmFwaSgpLmNlbGwocm93LCBjb2wpLm5vZGUoKSkuaHRtbChtYXJrSW50ZXJ2YWwoZCwgZGlnaXRzLCBpbnRlcnZhbCwgbWFyaywgZGVjTWFyaykpOwp9OwoKRFRXaWRnZXQuZm9ybWF0U2lnbmlmID0gZnVuY3Rpb24odGhpeiwgcm93LCBkYXRhLCBjb2wsIGRpZ2l0cywgaW50ZXJ2YWwsIG1hcmssIGRlY01hcmspIHsKICB2YXIgZCA9IHBhcnNlRmxvYXQoZGF0YVtjb2xdKTsKICBpZiAoaXNOYU4oZCkpIHJldHVybjsKICAkKHRoaXouYXBpKCkuY2VsbChyb3csIGNvbCkubm9kZSgpKQogICAgLmh0bWwobWFya0ludGVydmFsKGQsIGRpZ2l0cywgaW50ZXJ2YWwsIG1hcmssIGRlY01hcmssIHRydWUpKTsKfTsKCkRUV2lkZ2V0LmZvcm1hdERhdGUgPSBmdW5jdGlvbih0aGl6LCByb3csIGRhdGEsIGNvbCwgbWV0aG9kLCBwYXJhbXMpIHsKICB2YXIgZCA9IGRhdGFbY29sXTsKICBpZiAoZCA9PT0gbnVsbCkgcmV0dXJuOwogIC8vIChuZXcgRGF0ZSgnMjAxNS0xMC0yOCcpKS50b0RhdGVTdHJpbmcoKSBtYXkgcmV0dXJuIDIwMTUtMTAtMjcgYmVjYXVzZSB0aGUKICAvLyBhY3R1YWwgdGltZSBjcmVhdGVkIGNvdWxkIGJlIGxpa2UgJ1R1ZSBPY3QgMjcgMjAxNSAxOTowMDowMCBHTVQtMDUwMCAoQ0RUKScsCiAgLy8gaS5lLiB0aGUgZGF0ZS1vbmx5IHN0cmluZyBpcyB0cmVhdGVkIGFzIFVUQyB0aW1lIGluc3RlYWQgb2YgbG9jYWwgdGltZQogIGlmIChtZXRob2QgPT09ICd0b0RhdGVTdHJpbmcnICYmIC9eXGR7NCx9XERcZHsyfVxEXGR7Mn0kLy50ZXN0KGQpKSB7CiAgICBkID0gZC5zcGxpdCgvXEQvKTsKICAgIGQgPSBuZXcgRGF0ZShkWzBdLCBkWzFdIC0gMSwgZFsyXSk7CiAgfSBlbHNlIHsKICAgIGQgPSBuZXcgRGF0ZShkKTsKICB9CiAgJCh0aGl6LmFwaSgpLmNlbGwocm93LCBjb2wpLm5vZGUoKSkuaHRtbChkW21ldGhvZF0uYXBwbHkoZCwgcGFyYW1zKSk7Cn07Cgp3aW5kb3cuRFRXaWRnZXQgPSBEVFdpZGdldDsKCnZhciB0cmFuc3Bvc2VBcnJheTJEID0gZnVuY3Rpb24oYSkgewogIHJldHVybiBhLmxlbmd0aCA9PT0gMCA/IGEgOiBIVE1MV2lkZ2V0cy50cmFuc3Bvc2VBcnJheTJEKGEpOwp9OwoKdmFyIGNyb3NzdGFsa1BsdWdpbnNJbnN0YWxsZWQgPSBmYWxzZTsKCmZ1bmN0aW9uIG1heWJlSW5zdGFsbENyb3NzdGFsa1BsdWdpbnMoKSB7CiAgaWYgKGNyb3NzdGFsa1BsdWdpbnNJbnN0YWxsZWQpCiAgICByZXR1cm47CiAgY3Jvc3N0YWxrUGx1Z2luc0luc3RhbGxlZCA9IHRydWU7CgogICQuZm4uZGF0YVRhYmxlLmV4dC5hZm5GaWx0ZXJpbmcucHVzaCgKICAgIGZ1bmN0aW9uKG9TZXR0aW5ncywgYURhdGEsIGlEYXRhSW5kZXgpIHsKICAgICAgdmFyIGN0ZmlsdGVyID0gb1NldHRpbmdzLm5UYWJsZS5jdGZpbHRlcjsKICAgICAgaWYgKGN0ZmlsdGVyICYmICFjdGZpbHRlcltpRGF0YUluZGV4XSkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICB2YXIgY3RzZWxlY3QgPSBvU2V0dGluZ3MublRhYmxlLmN0c2VsZWN0OwogICAgICBpZiAoY3RzZWxlY3QgJiYgIWN0c2VsZWN0W2lEYXRhSW5kZXhdKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICk7Cn0KCkhUTUxXaWRnZXRzLndpZGdldCh7CiAgbmFtZTogImRhdGF0YWJsZXMiLAogIHR5cGU6ICJvdXRwdXQiLAogIHJlbmRlck9uTnVsbFZhbHVlOiB0cnVlLAogIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7CiAgICAkKGVsKS5odG1sKCcmbmJzcDsnKTsKICAgIHJldHVybiB7CiAgICAgIGRhdGE6IG51bGwsCiAgICAgIGN0ZmlsdGVySGFuZGxlOiBuZXcgY3Jvc3N0YWxrLkZpbHRlckhhbmRsZSgpLAogICAgICBjdGZpbHRlclN1YnNjcmlwdGlvbjogbnVsbCwKICAgICAgY3RzZWxlY3RIYW5kbGU6IG5ldyBjcm9zc3RhbGsuU2VsZWN0aW9uSGFuZGxlKCksCiAgICAgIGN0c2VsZWN0U3Vic2NyaXB0aW9uOiBudWxsCiAgICB9OwogIH0sCiAgcmVuZGVyVmFsdWU6IGZ1bmN0aW9uKGVsLCBkYXRhLCBpbnN0YW5jZSkgewogICAgaWYgKGVsLm9mZnNldFdpZHRoID09PSAwIHx8IGVsLm9mZnNldEhlaWdodCA9PT0gMCkgewogICAgICBpbnN0YW5jZS5kYXRhID0gZGF0YTsKICAgICAgcmV0dXJuOwogICAgfQogICAgaW5zdGFuY2UuZGF0YSA9IG51bGw7CiAgICB2YXIgJGVsID0gJChlbCk7CiAgICAkZWwuZW1wdHkoKTsKCiAgICBpZiAoZGF0YSA9PT0gbnVsbCkgewogICAgICAkZWwuYXBwZW5kKCcmbmJzcDsnKTsKICAgICAgLy8gY2xlYXIgcHJldmlvdXMgU2hpbnkgaW5wdXRzIChpZiBhbnkpCiAgICAgIGZvciAodmFyIGkgaW4gaW5zdGFuY2UuY2xlYXJJbnB1dHMpIGluc3RhbmNlLmNsZWFySW5wdXRzW2ldKCk7CiAgICAgIGluc3RhbmNlLmNsZWFySW5wdXRzID0ge307CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgY3Jvc3N0YWxrT3B0aW9ucyA9IGRhdGEuY3Jvc3N0YWxrT3B0aW9uczsKICAgIGlmICghY3Jvc3N0YWxrT3B0aW9ucykgY3Jvc3N0YWxrT3B0aW9ucyA9IHsKICAgICAgJ2tleSc6IG51bGwsICdncm91cCc6IG51bGwKICAgIH07CiAgICBpZiAoY3Jvc3N0YWxrT3B0aW9ucy5ncm91cCkgewogICAgICBtYXliZUluc3RhbGxDcm9zc3RhbGtQbHVnaW5zKCk7CiAgICAgIGluc3RhbmNlLmN0ZmlsdGVySGFuZGxlLnNldEdyb3VwKGNyb3NzdGFsa09wdGlvbnMuZ3JvdXApOwogICAgICBpbnN0YW5jZS5jdHNlbGVjdEhhbmRsZS5zZXRHcm91cChjcm9zc3RhbGtPcHRpb25zLmdyb3VwKTsKICAgIH0KCiAgICAvLyBJZiB3ZSBhcmUgaW4gYSBmbGV4ZGFzaGJvYXJkIHNjcm9sbCBsYXlvdXQgdGhlbiB3ZToKICAgIC8vICAoYSkgQWx3YXlzIHdhbnQgdG8gdXNlIHBhZ2luYXRpb24gKG90aGVyd2lzZSB3ZSdsbCBoYXZlCiAgICAvLyAgICAgIGEgImRvdWJsZSBzY3JvbGwgYmFyIiBlZmZlY3Qgb24gdGhlIHBob25lKTsgYW5kCiAgICAvLyAgKGIpIE5ldmVyIHdhbnQgdG8gZmlsbCB0aGUgY29udGFpbmVyICh3ZSB3YW50IHRoZSBwYWdpbmF0aW9uCiAgICAvLyAgICAgIGxldmVsIHRvIGRldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmVyKQogICAgaWYgKHdpbmRvdy5GbGV4RGFzaGJvYXJkICYmICF3aW5kb3cuRmxleERhc2hib2FyZC5pc0ZpbGxQYWdlKCkpIHsKICAgICAgZGF0YS5vcHRpb25zLmJQYWdpbmF0ZSA9IHRydWU7CiAgICAgIGRhdGEuZmlsbENvbnRhaW5lciA9IGZhbHNlOwogICAgfQoKICAgIC8vIGlmIHdlIGFyZSBpbiB0aGUgdmlld2VyIHRoZW4gd2UgYWx3YXlzIHdhbnQgdG8gZmlsbENvbnRhaW5lciBhbmQKICAgIC8vIGFuZCBhdXRvSGlkZU5hdmlnYXRpb24gKHVubGVzcyB0aGUgdXNlciBoYXMgZXhwbGljaXRseSBzZXQgdGhlc2UpCiAgICBpZiAod2luZG93LkhUTUxXaWRnZXRzLnZpZXdlck1vZGUpIHsKICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KCJmaWxsQ29udGFpbmVyIikpCiAgICAgICAgZGF0YS5maWxsQ29udGFpbmVyID0gdHJ1ZTsKICAgICAgaWYgKCFkYXRhLmhhc093blByb3BlcnR5KCJhdXRvSGlkZU5hdmlnYXRpb24iKSkKICAgICAgICBkYXRhLmF1dG9IaWRlTmF2aWdhdGlvbiA9IHRydWU7CiAgICB9CgogICAgLy8gcHJvcGFnYXRlIGZpbGxDb250YWluZXIgdG8gaW5zdGFuY2UgKHNvIHdlIGhhdmUgaXQgaW4gcmVzaXplKQogICAgaW5zdGFuY2UuZmlsbENvbnRhaW5lciA9IGRhdGEuZmlsbENvbnRhaW5lcjsKCiAgICB2YXIgY2VsbHMgPSBkYXRhLmRhdGE7CgogICAgaWYgKGNlbGxzIGluc3RhbmNlb2YgQXJyYXkpIGNlbGxzID0gdHJhbnNwb3NlQXJyYXkyRChjZWxscyk7CgogICAgJGVsLmFwcGVuZChkYXRhLmNvbnRhaW5lcik7CiAgICB2YXIgJHRhYmxlID0gJGVsLmZpbmQoJ3RhYmxlJyk7CiAgICBpZiAoZGF0YS5jbGFzcykgJHRhYmxlLmFkZENsYXNzKGRhdGEuY2xhc3MpOwogICAgaWYgKGRhdGEuY2FwdGlvbikgJHRhYmxlLnByZXBlbmQoZGF0YS5jYXB0aW9uKTsKCiAgICBpZiAoSFRNTFdpZGdldHMuc2hpbnlNb2RlICYmIGRhdGEuc2VsZWN0aW9uLm1vZGUgIT09ICdub25lJyAmJgogICAgICAgIGRhdGEuc2VsZWN0aW9uLnRhcmdldCA9PT0gJ3Jvdytjb2x1bW4nKSB7CiAgICAgIGlmICgkdGFibGUuY2hpbGRyZW4oJ3Rmb290JykubGVuZ3RoID09PSAwKSB7CiAgICAgICAgJHRhYmxlLmFwcGVuZCgkKCc8dGZvb3Q+JykpOwogICAgICAgICR0YWJsZS5maW5kKCd0aGVhZCB0cicpLmNsb25lKCkuYXBwZW5kVG8oJHRhYmxlLmZpbmQoJ3Rmb290JykpOwogICAgICB9CiAgICB9CgogICAgLy8gY29sdW1uIGZpbHRlcnMKICAgIHZhciBmaWx0ZXJSb3c7CiAgICBzd2l0Y2ggKGRhdGEuZmlsdGVyKSB7CiAgICAgIGNhc2UgJ3RvcCc6CiAgICAgICAgJHRhYmxlLmNoaWxkcmVuKCd0aGVhZCcpLmFwcGVuZChkYXRhLmZpbHRlckhUTUwpOwogICAgICAgIGZpbHRlclJvdyA9ICR0YWJsZS5maW5kKCd0aGVhZCB0cjpsYXN0IHRkJyk7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgJ2JvdHRvbSc6CiAgICAgICAgaWYgKCR0YWJsZS5jaGlsZHJlbigndGZvb3QnKS5sZW5ndGggPT09IDApIHsKICAgICAgICAgICR0YWJsZS5hcHBlbmQoJCgnPHRmb290PicpKTsKICAgICAgICB9CiAgICAgICAgJHRhYmxlLmNoaWxkcmVuKCd0Zm9vdCcpLnByZXBlbmQoZGF0YS5maWx0ZXJIVE1MKTsKICAgICAgICBmaWx0ZXJSb3cgPSAkdGFibGUuZmluZCgndGZvb3QgdHI6Zmlyc3QgdGQnKTsKICAgICAgICBicmVhazsKICAgIH0KCiAgICB2YXIgb3B0aW9ucyA9IHsgc2VhcmNoRGVsYXk6IDEwMDAgfTsKICAgIGlmIChjZWxscyAhPT0gbnVsbCkgJC5leHRlbmQob3B0aW9ucywgewogICAgICBkYXRhOiBjZWxscwogICAgfSk7CgogICAgLy8gb3B0aW9ucyBmb3IgZmlsbENvbnRhaW5lcgogICAgdmFyIGJvb3RzdHJhcEFjdGl2ZSA9IHR5cGVvZigkLmZuLnBvcG92ZXIpICE9ICd1bmRlZmluZWQnOwogICAgaWYgKGluc3RhbmNlLmZpbGxDb250YWluZXIpIHsKCiAgICAgIC8vIGZvcmNlIHNjcm9sbFgvc2Nyb2xsWSBhbmQgdHVybiBvZmYgYXV0b1dpZHRoCiAgICAgIG9wdGlvbnMuc2Nyb2xsWCA9IHRydWU7CiAgICAgIG9wdGlvbnMuc2Nyb2xsWSA9ICIxMDBweCI7IC8vIGNhbiBiZSBhbnkgdmFsdWUsIHdlJ2xsIGFkanVzdCBiZWxvdwoKICAgICAgLy8gaWYgd2UgYXJlbid0IHBhZ2luYXRpbmcgdGhlbiBtb3ZlIGFyb3VuZCB0aGUgaW5mby9maWx0ZXIgY29udHJvbHMKICAgICAgLy8gdG8gc2F2ZSBzcGFjZSBhdCB0aGUgYm90dG9tIGFuZCByZXBocmFzZSB0aGUgaW5mbyBjYWxsYmFjawogICAgICBpZiAoZGF0YS5vcHRpb25zLmJQYWdpbmF0ZSA9PT0gZmFsc2UpIHsKCiAgICAgICAgLy8gd2Uga25vdyBob3cgdG8gZG8gdGhpcyBjbGVhbmx5IGZvciBib290c3RyYXAsIG5vdCBzbyBtdWNoCiAgICAgICAgLy8gZm9yIG90aGVyIHRoZW1lcy9sYXlvdXRzCiAgICAgICAgaWYgKGJvb3RzdHJhcEFjdGl2ZSkgewogICAgICAgICAgb3B0aW9ucy5kb20gPSAiPCdyb3cnPCdjb2wtc20tNCdpPjwnY29sLXNtLTgnZj4+IiArCiAgICAgICAgICAgICAgICAgICAgICAgICI8J3Jvdyc8J2NvbC1zbS0xMid0cj4+IjsKICAgICAgICB9CgogICAgICAgIG9wdGlvbnMuZm5JbmZvQ2FsbGJhY2sgPSBmdW5jdGlvbihvU2V0dGluZ3MsIGlTdGFydCwgaUVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlNYXgsIGlUb3RhbCwgc1ByZSkgewogICAgICAgICAgcmV0dXJuIE51bWJlcihpVG90YWwpLnRvTG9jYWxlU3RyaW5nKCkgKyAiIHJlY29yZHMiOwogICAgICAgIH07CiAgICAgIH0KICAgIH0KCiAgICAvLyBhdXRvIGhpZGUgbmF2aWdhdGlvbiBpZiByZXF1ZXN0ZWQKICAgIGlmIChkYXRhLmF1dG9IaWRlTmF2aWdhdGlvbiA9PT0gdHJ1ZSkgewogICAgICBpZiAoYm9vdHN0cmFwQWN0aXZlICYmIGRhdGEub3B0aW9ucy5iUGFnaW5hdGUgIT09IGZhbHNlKSB7CiAgICAgICAgLy8gc3RyaXAgYWxsIG5hdiBpZiBsZW5ndGggPj0gY2VsbHMKICAgICAgICBpZiAoKGNlbGxzIGluc3RhbmNlb2YgQXJyYXkpICYmIGRhdGEub3B0aW9ucy5pRGlzcGxheUxlbmd0aCA+PSBjZWxscy5sZW5ndGgpCiAgICAgICAgICBvcHRpb25zLmRvbSA9ICI8J3Jvdyc8J2NvbC1zbS0xMid0cj4+IjsKICAgICAgICAvLyBhbHRlcm5hdGl2ZWx5IGxlYW4gdGhpbmdzIG91dCBmb3IgZmxleGRhc2hib2FyZCBtb2JpbGUgcG9ydHJhaXQKICAgICAgICBlbHNlIGlmICh3aW5kb3cuRmxleERhc2hib2FyZCAmJiB3aW5kb3cuRmxleERhc2hib2FyZC5pc01vYmlsZVBob25lKCkpCiAgICAgICAgICBvcHRpb25zLmRvbSA9ICI8J3Jvdyc8J2NvbC1zbS0xMidmPj4iICsKICAgICAgICAgICAgICAgICAgICAgICAgIjwncm93JzwnY29sLXNtLTEyJ3RyPj4iICArCiAgICAgICAgICAgICAgICAgICAgICAgICI8J3Jvdyc8J2NvbC1zbS0xMidwPj4iOwogICAgICB9CiAgICB9CgogICAgJC5leHRlbmQodHJ1ZSwgb3B0aW9ucywgZGF0YS5vcHRpb25zIHx8IHt9KTsKCiAgICB2YXIgc2VhcmNoQ29scyA9IG9wdGlvbnMuc2VhcmNoQ29sczsKICAgIGlmIChzZWFyY2hDb2xzKSB7CiAgICAgIHNlYXJjaENvbHMgPSBzZWFyY2hDb2xzLm1hcChmdW5jdGlvbih4KSB7CiAgICAgICAgcmV0dXJuIHggPT09IG51bGwgPyAnJyA6IHguc2VhcmNoOwogICAgICB9KTsKICAgICAgLy8gRklYTUU6IHRoaXMgbWVhbnMgSSBkb24ndCByZXNwZWN0IHRoZSBlc2NhcGVSZWdleCBzZXR0aW5nCiAgICAgIGRlbGV0ZSBvcHRpb25zLnNlYXJjaENvbHM7CiAgICB9CgogICAgLy8gc2VydmVyLXNpZGUgcHJvY2Vzc2luZz8KICAgIHZhciBzZXJ2ZXIgPSBvcHRpb25zLnNlcnZlclNpZGUgPT09IHRydWU7CgogICAgLy8gdXNlIHRoZSBkYXRhU3JjIGZ1bmN0aW9uIHRvIHByZS1wcm9jZXNzIEpTT04gZGF0YSByZXR1cm5lZCBmcm9tIFIKICAgIHZhciBEVF9yb3dzX2FsbCA9IFtdLCBEVF9yb3dzX2N1cnJlbnQgPSBbXTsKICAgIGlmIChzZXJ2ZXIgJiYgSFRNTFdpZGdldHMuc2hpbnlNb2RlICYmIHR5cGVvZiBvcHRpb25zLmFqYXggPT09ICdvYmplY3QnICYmCiAgICAgICAgL15zZXNzaW9uXC9bXGRhLXpdK1wvZGF0YW9iai8udGVzdChvcHRpb25zLmFqYXgudXJsKSAmJiAhb3B0aW9ucy5hamF4LmRhdGFTcmMpIHsKICAgICAgb3B0aW9ucy5hamF4LmRhdGFTcmMgPSBmdW5jdGlvbihqc29uKSB7CiAgICAgICAgRFRfcm93c19hbGwgPSAkLm1ha2VBcnJheShqc29uLkRUX3Jvd3NfYWxsKTsKICAgICAgICBEVF9yb3dzX2N1cnJlbnQgPSAkLm1ha2VBcnJheShqc29uLkRUX3Jvd3NfY3VycmVudCk7CiAgICAgICAgcmV0dXJuIGpzb24uZGF0YTsKICAgICAgfTsKICAgIH0KCiAgICB2YXIgdGhpeiA9IHRoaXM7CiAgICBpZiAoaW5zdGFuY2UuZmlsbENvbnRhaW5lcikgJHRhYmxlLm9uKCdpbml0LmR0JywgZnVuY3Rpb24oZSkgewogICAgICB0aGl6LmZpbGxBdmFpbGFibGVIZWlnaHQoZWwsICQoZWwpLmlubmVySGVpZ2h0KCkpOwogICAgfSk7CgogICAgdmFyIHRhYmxlID0gJHRhYmxlLkRhdGFUYWJsZShvcHRpb25zKTsKICAgICRlbC5kYXRhKCdkYXRhdGFibGUnLCB0YWJsZSk7CgogICAgLy8gVW5yZWdpc3RlciBwcmV2aW91cyBDcm9zc3RhbGsgZXZlbnQgc3Vic2NyaXB0aW9ucywgaWYgdGhleSBleGlzdAogICAgaWYgKGluc3RhbmNlLmN0ZmlsdGVyU3Vic2NyaXB0aW9uKSB7CiAgICAgIGluc3RhbmNlLmN0ZmlsdGVySGFuZGxlLm9mZigiY2hhbmdlIiwgaW5zdGFuY2UuY3RmaWx0ZXJTdWJzY3JpcHRpb24pOwogICAgICBpbnN0YW5jZS5jdGZpbHRlclN1YnNjcmlwdGlvbiA9IG51bGw7CiAgICB9CiAgICBpZiAoaW5zdGFuY2UuY3RzZWxlY3RTdWJzY3JpcHRpb24pIHsKICAgICAgaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUub2ZmKCJjaGFuZ2UiLCBpbnN0YW5jZS5jdHNlbGVjdFN1YnNjcmlwdGlvbik7CiAgICAgIGluc3RhbmNlLmN0c2VsZWN0U3Vic2NyaXB0aW9uID0gbnVsbDsKICAgIH0KCiAgICBpZiAoIWNyb3NzdGFsa09wdGlvbnMuZ3JvdXApIHsKICAgICAgJHRhYmxlWzBdLmN0ZmlsdGVyID0gbnVsbDsKICAgICAgJHRhYmxlWzBdLmN0c2VsZWN0ID0gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBrZXkgPSBjcm9zc3RhbGtPcHRpb25zLmtleTsKICAgICAgZnVuY3Rpb24ga2V5c1RvTWF0Y2hlcyhrZXlzKSB7CiAgICAgICAgaWYgKCFrZXlzKSB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHNlbGVjdGVkS2V5cyA9IHt9OwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHNlbGVjdGVkS2V5c1trZXlzW2ldXSA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgICB2YXIgbWF0Y2hlcyA9IHt9OwogICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBrZXkubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1trZXlbal1dKQogICAgICAgICAgICAgIG1hdGNoZXNbal0gPSB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIG1hdGNoZXM7CiAgICAgICAgfQogICAgICB9CgogICAgICBmdW5jdGlvbiBhcHBseUNyb3NzdGFsa0ZpbHRlcihlKSB7CiAgICAgICAgJHRhYmxlWzBdLmN0ZmlsdGVyID0ga2V5c1RvTWF0Y2hlcyhlLnZhbHVlKTsKICAgICAgICB0YWJsZS5kcmF3KCk7CiAgICAgIH0KICAgICAgaW5zdGFuY2UuY3RmaWx0ZXJTdWJzY3JpcHRpb24gPSBpbnN0YW5jZS5jdGZpbHRlckhhbmRsZS5vbigiY2hhbmdlIiwgYXBwbHlDcm9zc3RhbGtGaWx0ZXIpOwogICAgICBhcHBseUNyb3NzdGFsa0ZpbHRlcih7dmFsdWU6IGluc3RhbmNlLmN0ZmlsdGVySGFuZGxlLmZpbHRlcmVkS2V5c30pOwoKICAgICAgZnVuY3Rpb24gYXBwbHlDcm9zc3RhbGtTZWxlY3Rpb24oZSkgewogICAgICAgIGlmIChlLnNlbmRlciAhPT0gaW5zdGFuY2UuY3RzZWxlY3RIYW5kbGUpIHsKICAgICAgICAgIHRhYmxlCiAgICAgICAgICAgIC5yb3dzKCcuJyArIHNlbENsYXNzLCB7c2VhcmNoOiAnYXBwbGllZCd9KQogICAgICAgICAgICAubm9kZXMoKQogICAgICAgICAgICAudG8kKCkKICAgICAgICAgICAgLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgIGlmIChzZWxlY3RlZFJvd3MpCiAgICAgICAgICAgIGNoYW5nZUlucHV0KCdyb3dzX3NlbGVjdGVkJywgc2VsZWN0ZWRSb3dzKCksIHZvaWQgMCwgdHJ1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZS5zZW5kZXIgIT09IGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlICYmIGUudmFsdWUgJiYgZS52YWx1ZS5sZW5ndGgpIHsKICAgICAgICAgICR0YWJsZVswXS5jdHNlbGVjdCA9IGtleXNUb01hdGNoZXMoZS52YWx1ZSk7CiAgICAgICAgICB0YWJsZS5kcmF3KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGlmICgkdGFibGVbMF0uY3RzZWxlY3QpIHsKICAgICAgICAgICAgJHRhYmxlWzBdLmN0c2VsZWN0ID0gbnVsbDsKICAgICAgICAgICAgdGFibGUuZHJhdygpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgICBpbnN0YW5jZS5jdHNlbGVjdFN1YnNjcmlwdGlvbiA9IGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlLm9uKCJjaGFuZ2UiLCBhcHBseUNyb3NzdGFsa1NlbGVjdGlvbik7CiAgICAgIC8vIFRPRE86IFRoaXMgbmV4dCBsaW5lIGRvZXNuJ3Qgc2VlbSB0byB3b3JrIHdoZW4gcmVuZGVyRGF0YVRhYmxlIGlzIHVzZWQKICAgICAgYXBwbHlDcm9zc3RhbGtTZWxlY3Rpb24oe3ZhbHVlOiBpbnN0YW5jZS5jdHNlbGVjdEhhbmRsZS52YWx1ZX0pOwogICAgfQoKICAgIHZhciBpbkFycmF5ID0gZnVuY3Rpb24odmFsLCBhcnJheSkgewogICAgICByZXR1cm4gJC5pbkFycmF5KHZhbCwgJC5tYWtlQXJyYXkoYXJyYXkpKSA+IC0xOwogICAgfTsKCiAgICAvLyBlbmNvZGUgKyB0byAlMkIgd2hlbiBzZWFyY2hpbmcgaW4gdGhlIHRhYmxlIG9uIHNlcnZlciBzaWRlLCBiZWNhdXNlCiAgICAvLyBzaGlueTo6cGFyc2VRdWVyeVN0cmluZygpIHRyZWF0cyArIGFzIHNwYWNlcywgYW5kIERhdGFUYWJsZXMgZG9lcyBub3QKICAgIC8vIGVuY29kZSArIHRvICUyQiAob3IgJSB0byAlMjUpIHdoZW4gc2VuZGluZyB0aGUgcmVxdWVzdAogICAgdmFyIGVuY29kZV9wbHVzID0gZnVuY3Rpb24oeCkgewogICAgICByZXR1cm4gc2VydmVyID8geC5yZXBsYWNlKC8lL2csICclMjUnKS5yZXBsYWNlKC9cKy9nLCAnJTJCJykgOiB4OwogICAgfTsKCiAgICAvLyBzZWFyY2ggdGhlIGktdGggY29sdW1uCiAgICB2YXIgc2VhcmNoQ29sdW1uID0gZnVuY3Rpb24oaSwgdmFsdWUpIHsKICAgICAgdmFyIHJlZ2V4ID0gZmFsc2UsIGNpID0gdHJ1ZTsKICAgICAgaWYgKG9wdGlvbnMuc2VhcmNoKSB7CiAgICAgICAgcmVnZXggPSBvcHRpb25zLnNlYXJjaC5yZWdleCwKICAgICAgICBjaSA9IG9wdGlvbnMuc2VhcmNoLmNhc2VJbnNlbnNpdGl2ZSAhPT0gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRhYmxlLmNvbHVtbihpKS5zZWFyY2goZW5jb2RlX3BsdXModmFsdWUpLCByZWdleCwgIXJlZ2V4LCBjaSk7CiAgICB9OwoKICAgIGlmIChkYXRhLmZpbHRlciAhPT0gJ25vbmUnKSB7CgogICAgICBmaWx0ZXJSb3cuZWFjaChmdW5jdGlvbihpLCB0ZCkgewoKICAgICAgICB2YXIgJHRkID0gJCh0ZCksIHR5cGUgPSAkdGQuZGF0YSgndHlwZScpLCBmaWx0ZXI7CiAgICAgICAgdmFyICRpbnB1dCA9ICR0ZC5jaGlsZHJlbignZGl2JykuZmlyc3QoKS5jaGlsZHJlbignaW5wdXQnKTsKICAgICAgICAkaW5wdXQucHJvcCgnZGlzYWJsZWQnLCAhdGFibGUuc2V0dGluZ3MoKVswXS5hb0NvbHVtbnNbaV0uYlNlYXJjaGFibGUgfHwgdHlwZSA9PT0gJ2Rpc2FibGVkJyk7CiAgICAgICAgJGlucHV0Lm9uKCdpbnB1dCBibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAkaW5wdXQubmV4dCgnc3BhbicpLnRvZ2dsZShCb29sZWFuKCRpbnB1dC52YWwoKSkpOwogICAgICAgIH0pOwogICAgICAgIC8vIEJvb3RzdHJhcCBzZXRzIHBvaW50ZXItZXZlbnRzIHRvIG5vbmUgYW5kIHdlIHdvbid0IGJlIGFibGUgdG8gY2xpY2sKICAgICAgICAvLyB0aGUgY2xlYXIgYnV0dG9uCiAgICAgICAgJGlucHV0Lm5leHQoJ3NwYW4nKS5jc3MoJ3BvaW50ZXItZXZlbnRzJywgJ2F1dG8nKS5oaWRlKCkuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgICAkKHRoaXMpLmhpZGUoKS5wcmV2KCdpbnB1dCcpLnZhbCgnJykudHJpZ2dlcignaW5wdXQnKS5mb2N1cygpOwogICAgICAgIH0pOwogICAgICAgIHZhciBzZWFyY2hDb2w7ICAvLyBzZWFyY2ggc3RyaW5nIGZvciB0aGlzIGNvbHVtbgogICAgICAgIGlmIChzZWFyY2hDb2xzICYmIHNlYXJjaENvbHNbaV0pIHsKICAgICAgICAgIHNlYXJjaENvbCA9IHNlYXJjaENvbHNbaV07CiAgICAgICAgICAkaW5wdXQudmFsKHNlYXJjaENvbCkudHJpZ2dlcignaW5wdXQnKTsKICAgICAgICB9CiAgICAgICAgdmFyICR4ID0gJHRkLmNoaWxkcmVuKCdkaXYnKS5sYXN0KCk7CgogICAgICAgIC8vIHJlbW92ZSB0aGUgb3ZlcmZsb3c6IGhpZGRlbiBhdHRyaWJ1dGUgb2YgdGhlIHNjcm9sbEhlYWQKICAgICAgICAvLyAob3RoZXJ3aXNlIHRoZSBzY3JvbGxpbmcgdGFibGUgYm9keSBvYnNjdXJlcyB0aGUgZmlsdGVycykKICAgICAgICB2YXIgc2Nyb2xsSGVhZCA9ICQoZWwpLmZpbmQoJy5kYXRhVGFibGVzX3Njcm9sbEhlYWQsLmRhdGFUYWJsZXNfc2Nyb2xsRm9vdCcpOwogICAgICAgIHZhciBjc3NPdmVyZmxvdyA9IHNjcm9sbEhlYWQuY3NzKCdvdmVyZmxvdycpOwogICAgICAgIGlmIChjc3NPdmVyZmxvdyA9PT0gJ2hpZGRlbicpIHsKICAgICAgICAgICR4Lm9uKCdzaG93IGhpZGUnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgIHNjcm9sbEhlYWQuY3NzKCdvdmVyZmxvdycsIGUudHlwZSA9PT0gJ3Nob3cnID8gJycgOiBjc3NPdmVyZmxvdyk7CiAgICAgICAgICB9KTsKICAgICAgICAgICR4LmNzcygnei1pbmRleCcsIDI1KTsKICAgICAgICB9CgogICAgICAgIGlmIChpbkFycmF5KHR5cGUsIFsnZmFjdG9yJywgJ2xvZ2ljYWwnXSkpIHsKICAgICAgICAgICRpbnB1dC5vbih7CiAgICAgICAgICAgIGNsaWNrOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAkaW5wdXQucGFyZW50KCkuaGlkZSgpOyAkeC5zaG93KCkudHJpZ2dlcignc2hvdycpOyBmaWx0ZXJbMF0uc2VsZWN0aXplLmZvY3VzKCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBpZiAoJGlucHV0LnZhbCgpID09PSAnJykgZmlsdGVyWzBdLnNlbGVjdGl6ZS5zZXRWYWx1ZShbXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgdmFyICRpbnB1dDIgPSAkeC5jaGlsZHJlbignc2VsZWN0Jyk7CiAgICAgICAgICBmaWx0ZXIgPSAkaW5wdXQyLnNlbGVjdGl6ZSh7CiAgICAgICAgICAgIG9wdGlvbnM6ICRpbnB1dDIuZGF0YSgnb3B0aW9ucycpLm1hcChmdW5jdGlvbih2LCBpKSB7CiAgICAgICAgICAgICAgcmV0dXJuICh7dGV4dDogdiwgdmFsdWU6IHZ9KTsKICAgICAgICAgICAgfSksCiAgICAgICAgICAgIHBsdWdpbnM6IFsncmVtb3ZlX2J1dHRvbiddLAogICAgICAgICAgICBoaWRlU2VsZWN0ZWQ6IHRydWUsCiAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgdmFsdWUgPSBbXTsgLy8gY29tcGF0aWJpbGl0eSB3aXRoIGpRdWVyeSAzLjAKICAgICAgICAgICAgICAkaW5wdXQudmFsKHZhbHVlLmxlbmd0aCA/IEpTT04uc3RyaW5naWZ5KHZhbHVlKSA6ICcnKTsKICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoKSAkaW5wdXQudHJpZ2dlcignaW5wdXQnKTsKICAgICAgICAgICAgICAkaW5wdXQuYXR0cigndGl0bGUnLCAkaW5wdXQudmFsKCkpOwogICAgICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgICAgIHRhYmxlLmNvbHVtbihpKS5zZWFyY2godmFsdWUubGVuZ3RoID8gZW5jb2RlX3BsdXMoSlNPTi5zdHJpbmdpZnkodmFsdWUpKSA6ICcnKS5kcmF3KCk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIC8vIHR1cm4gb2ZmIGZpbHRlciBpZiBub3RoaW5nIHNlbGVjdGVkCiAgICAgICAgICAgICAgJHRkLmRhdGEoJ2ZpbHRlcicsIHZhbHVlLmxlbmd0aCA+IDApOwogICAgICAgICAgICAgIHRhYmxlLmRyYXcoKTsgIC8vIHJlZHJhdyB0YWJsZSwgYW5kIGZpbHRlcnMgd2lsbCBiZSBhcHBsaWVkCiAgICAgICAgICAgIH0KICAgICAgICAgIH0pOwogICAgICAgICAgaWYgKHNlYXJjaENvbCkgZmlsdGVyWzBdLnNlbGVjdGl6ZS5zZXRWYWx1ZShKU09OLnBhcnNlKHNlYXJjaENvbCkpOwogICAgICAgICAgLy8gYW4gdWdseSBoYWNrIHRvIGRlYWwgd2l0aCBzaGlueTogZm9yIHNvbWUgcmVhc29uLCB0aGUgb25CbHVyIGV2ZW50CiAgICAgICAgICAvLyBvZiBzZWxlY3RpemUgZG9lcyBub3Qgd29yayBpbiBzaGlueQogICAgICAgICAgJHguZmluZCgnZGl2ID4gZGl2LnNlbGVjdGl6ZS1pbnB1dCA+IGlucHV0Jykub24oJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJHguaGlkZSgpLnRyaWdnZXIoJ2hpZGUnKTsgJGlucHV0LnBhcmVudCgpLnNob3coKTsgJGlucHV0LnRyaWdnZXIoJ2JsdXInKTsKICAgICAgICAgIH0pOwogICAgICAgICAgZmlsdGVyLm5leHQoJ2RpdicpLmNzcygnbWFyZ2luLWJvdHRvbScsICdhdXRvJyk7CiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2hhcmFjdGVyJykgewogICAgICAgICAgdmFyIGZ1biA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBzZWFyY2hDb2x1bW4oaSwgJGlucHV0LnZhbCgpKS5kcmF3KCk7CiAgICAgICAgICB9OwogICAgICAgICAgaWYgKHNlcnZlcikgewogICAgICAgICAgICBmdW4gPSAkLmZuLmRhdGFUYWJsZS51dGlsLnRocm90dGxlKGZ1biwgb3B0aW9ucy5zZWFyY2hEZWxheSk7CiAgICAgICAgICB9CiAgICAgICAgICAkaW5wdXQub24oJ2lucHV0JywgZnVuKTsKICAgICAgICB9IGVsc2UgaWYgKGluQXJyYXkodHlwZSwgWydudW1iZXInLCAnaW50ZWdlcicsICdkYXRlJywgJ3RpbWUnXSkpIHsKICAgICAgICAgIHZhciAkeDAgPSAkeDsKICAgICAgICAgICR4ID0gJHgwLmNoaWxkcmVuKCdkaXYnKS5maXJzdCgpOwogICAgICAgICAgJHgwLmNzcyh7CiAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogJyNmZmYnLAogICAgICAgICAgICAnYm9yZGVyJzogJzFweCAjZGRkIHNvbGlkJywKICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnNHB4JywKICAgICAgICAgICAgJ3BhZGRpbmcnOiAnMjBweCAyMHB4IDEwcHggMjBweCcKICAgICAgICAgIH0pOwogICAgICAgICAgdmFyICRzcGFucyA9ICR4MC5jaGlsZHJlbignc3BhbicpLmNzcyh7CiAgICAgICAgICAgICdtYXJnaW4tdG9wJzogJzEwcHgnLAogICAgICAgICAgICAnd2hpdGUtc3BhY2UnOiAnbm93cmFwJwogICAgICAgICAgfSk7CiAgICAgICAgICB2YXIgJHNwYW4xID0gJHNwYW5zLmZpcnN0KCksICRzcGFuMiA9ICRzcGFucy5sYXN0KCk7CiAgICAgICAgICB2YXIgcjEgPSArJHguZGF0YSgnbWluJyksIHIyID0gKyR4LmRhdGEoJ21heCcpOwogICAgICAgICAgLy8gd2hlbiB0aGUgbnVtYmVycyBhcmUgdG9vIHNtYWxsIG9yIGhhdmUgbWFueSBkZWNpbWFsIHBsYWNlcywgdGhlCiAgICAgICAgICAvLyBzbGlkZXIgbWF5IGhhdmUgbnVtZXJpYyBwcmVjaXNpb24gcHJvYmxlbXMgKCMxNTApCiAgICAgICAgICB2YXIgc2NhbGUgPSBNYXRoLnBvdygxMCwgTWF0aC5tYXgoMCwgKyR4LmRhdGEoJ3NjYWxlJykgfHwgMCkpOwogICAgICAgICAgcjEgPSBNYXRoLnJvdW5kKHIxICogc2NhbGUpOyByMiA9IE1hdGgucm91bmQocjIgKiBzY2FsZSk7CiAgICAgICAgICB2YXIgc2NhbGVCYWNrID0gZnVuY3Rpb24oeCwgc2NhbGUpIHsKICAgICAgICAgICAgaWYgKHNjYWxlID09PSAxKSByZXR1cm4geDsKICAgICAgICAgICAgdmFyIGQgPSBNYXRoLnJvdW5kKE1hdGgubG9nKHNjYWxlKSAvIE1hdGgubG9nKDEwKSk7CiAgICAgICAgICAgIC8vIHRvIGF2b2lkIHByb2JsZW1zIGxpa2UgMy40MjMvMTAwIC0+IDAuMDM0MjMwMDAwMDAwMDAwMDAzCiAgICAgICAgICAgIHJldHVybiAoeCAvIHNjYWxlKS50b0ZpeGVkKGQpOwogICAgICAgICAgfTsKICAgICAgICAgICRpbnB1dC5vbih7CiAgICAgICAgICAgIGZvY3VzOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAkeDAuc2hvdygpLnRyaWdnZXIoJ3Nob3cnKTsKICAgICAgICAgICAgICAvLyBmaXJzdCwgbWFrZSBzdXJlIHRoZSBzbGlkZXIgZGl2IGxlYXZlcyBhdCBsZWFzdCAyMHB4IGJldHdlZW4KICAgICAgICAgICAgICAvLyB0aGUgdHdvIChzbGlkZXIgdmFsdWUpIHNwYW4ncwogICAgICAgICAgICAgICR4MC53aWR0aChNYXRoLm1heCgxNjAsICRzcGFuMS5vdXRlcldpZHRoKCkgKyAkc3BhbjIub3V0ZXJXaWR0aCgpICsgMjApKTsKICAgICAgICAgICAgICAvLyB0aGVuLCBpZiB0aGUgaW5wdXQgaXMgcmVhbGx5IHdpZGUsIG1ha2UgdGhlIHNsaWRlciB0aGUgc2FtZQogICAgICAgICAgICAgIC8vIHdpZHRoIGFzIHRoZSBpbnB1dAogICAgICAgICAgICAgIGlmICgkeDAub3V0ZXJXaWR0aCgpIDwgJGlucHV0Lm91dGVyV2lkdGgoKSkgewogICAgICAgICAgICAgICAgJHgwLm91dGVyV2lkdGgoJGlucHV0Lm91dGVyV2lkdGgoKSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgc2xpZGVyIGRpdiBkb2VzIG5vdCByZWFjaCBiZXlvbmQgdGhlIHJpZ2h0IG1hcmdpbgogICAgICAgICAgICAgIGlmICgkKHdpbmRvdykud2lkdGgoKSA8ICR4MC5vZmZzZXQoKS5sZWZ0ICsgJHgwLndpZHRoKCkpIHsKICAgICAgICAgICAgICAgICR4MC5vZmZzZXQoewogICAgICAgICAgICAgICAgICAnbGVmdCc6ICRpbnB1dC5vZmZzZXQoKS5sZWZ0ICsgJGlucHV0Lm91dGVyV2lkdGgoKSAtICR4MC5vdXRlcldpZHRoKCkKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgYmx1cjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgJHgwLmhpZGUoKS50cmlnZ2VyKCdoaWRlJyk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICBpZiAoJGlucHV0LnZhbCgpID09PSAnJykgZmlsdGVyLnZhbChbcjEsIHIyXSk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFyIHYgPSAkaW5wdXQudmFsKCkucmVwbGFjZSgvXHMvZywgJycpOwogICAgICAgICAgICAgIGlmICh2ID09PSAnJykgcmV0dXJuOwogICAgICAgICAgICAgIHYgPSB2LnNwbGl0KCcuLi4nKTsKICAgICAgICAgICAgICBpZiAodi5sZW5ndGggIT09IDIpIHsKICAgICAgICAgICAgICAgICRpbnB1dC5wYXJlbnQoKS5hZGRDbGFzcygnaGFzLWVycm9yJyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICh2WzBdID09PSAnJykgdlswXSA9IHIxOwogICAgICAgICAgICAgIGlmICh2WzFdID09PSAnJykgdlsxXSA9IHIyOwogICAgICAgICAgICAgICRpbnB1dC5wYXJlbnQoKS5yZW1vdmVDbGFzcygnaGFzLWVycm9yJyk7CiAgICAgICAgICAgICAgLy8gdHJlYXQgZGF0ZSBhcyBVVEMgdGltZSBhdCBtaWRuaWdodAogICAgICAgICAgICAgIHZhciBzdHJUaW1lID0gZnVuY3Rpb24oeCkgewogICAgICAgICAgICAgICAgdmFyIHMgPSB0eXBlID09PSAnZGF0ZScgPyAnVDAwOjAwOjAwWicgOiAnJzsKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IERhdGUoeCArIHMpLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgIC8vIGFkZCAxMCBtaW51dGVzIHRvIGRhdGUgc2luY2UgaXQgZG9lcyBub3QgaHVydCB0aGUgZGF0ZSwgYW5kCiAgICAgICAgICAgICAgICAvLyBpdCBoZWxwcyBhdm9pZCB0aGUgdHJpY2t5IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgcHJvYmxlbXMsCiAgICAgICAgICAgICAgICAvLyBlLmcuIHNvbWV0aW1lcyB0aGUgZGF0ZSBtYXkgYmUgYSBmZXcgbWlsbGlzZWNvbmRzIGVhcmxpZXIKICAgICAgICAgICAgICAgIC8vIHRoYW4gdGhlIG1pZG5pZ2h0IGR1ZSB0byBwcmVjaXNpb24gcHJvYmxlbXMgaW4gbm9VaVNsaWRlcgogICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT09ICdkYXRlJyA/IHQgKyAzNjAwMDAwIDogdDsKICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgIGlmIChpbkFycmF5KHR5cGUsIFsnZGF0ZScsICd0aW1lJ10pKSB7CiAgICAgICAgICAgICAgICB2WzBdID0gc3RyVGltZSh2WzBdKTsKICAgICAgICAgICAgICAgIHZbMV0gPSBzdHJUaW1lKHZbMV0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBpZiAodlswXSAhPSByMSkgdlswXSAqPSBzY2FsZTsKICAgICAgICAgICAgICBpZiAodlsxXSAhPSByMikgdlsxXSAqPSBzY2FsZTsKICAgICAgICAgICAgICBmaWx0ZXIudmFsKHYpOwogICAgICAgICAgICB9CiAgICAgICAgICB9KTsKICAgICAgICAgIHZhciBmb3JtYXREYXRlID0gZnVuY3Rpb24oZCkgewogICAgICAgICAgICBkID0gc2NhbGVCYWNrKGQsIHNjYWxlKTsKICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInKSByZXR1cm4gZDsKICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdpbnRlZ2VyJykgcmV0dXJuIHBhcnNlSW50KGQpOwogICAgICAgICAgICB2YXIgeCA9IG5ldyBEYXRlKCtkKTsKICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdkYXRlJykgewogICAgICAgICAgICAgIHZhciBwYWQwID0gZnVuY3Rpb24oeCkgewogICAgICAgICAgICAgICAgcmV0dXJuICgnMCcgKyB4KS5zdWJzdHIoLTIsIDIpOwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgcmV0dXJuIHguZ2V0VVRDRnVsbFllYXIoKSArICctJyArIHBhZDAoMSArIHguZ2V0VVRDTW9udGgoKSkKICAgICAgICAgICAgICAgICAgICAgICsgJy0nICsgcGFkMCh4LmdldFVUQ0RhdGUoKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgcmV0dXJuIHgudG9JU09TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfTsKICAgICAgICAgIHZhciBvcHRzID0gdHlwZSA9PT0gJ2RhdGUnID8geyBzdGVwOiA2MCAqIDYwICogMTAwMCB9IDoKICAgICAgICAgICAgICAgICAgICAgdHlwZSA9PT0gJ2ludGVnZXInID8geyBzdGVwOiAxIH0gOiB7fTsKICAgICAgICAgIGZpbHRlciA9ICR4Lm5vVWlTbGlkZXIoJC5leHRlbmQoewogICAgICAgICAgICBzdGFydDogW3IxLCByMl0sCiAgICAgICAgICAgIHJhbmdlOiB7bWluOiByMSwgbWF4OiByMn0sCiAgICAgICAgICAgIGNvbm5lY3Q6IHRydWUKICAgICAgICAgIH0sIG9wdHMpKTsKICAgICAgICAgIGlmIChzY2FsZSA+IDEpIChmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIHQxID0gcjEsIHQyID0gcjI7CiAgICAgICAgICAgIHZhciB2YWwgPSBmaWx0ZXIudmFsKCk7CiAgICAgICAgICAgIHdoaWxlICh2YWxbMF0gPiByMSB8fCB2YWxbMV0gPCByMikgewogICAgICAgICAgICAgIGlmICh2YWxbMF0gPiByMSkgewogICAgICAgICAgICAgICAgdDEgLT0gdmFsWzBdIC0gcjE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICh2YWxbMV0gPCByMikgewogICAgICAgICAgICAgICAgdDIgKz0gcjIgLSB2YWxbMV07CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGZpbHRlciA9ICR4Lm5vVWlTbGlkZXIoJC5leHRlbmQoewogICAgICAgICAgICAgICAgc3RhcnQ6IFt0MSwgdDJdLAogICAgICAgICAgICAgICAgcmFuZ2U6IHttaW46IHQxLCBtYXg6IHQyfSwKICAgICAgICAgICAgICAgIGNvbm5lY3Q6IHRydWUKICAgICAgICAgICAgICB9LCBvcHRzKSwgdHJ1ZSk7CiAgICAgICAgICAgICAgdmFsID0gZmlsdGVyLnZhbCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHIxICA9IHQxOyByMiA9IHQyOwogICAgICAgICAgfSkoKTsKICAgICAgICAgICRzcGFuMS50ZXh0KGZvcm1hdERhdGUocjEpKTsgJHNwYW4yLnRleHQoZm9ybWF0RGF0ZShyMikpOwogICAgICAgICAgdmFyIHVwZGF0ZVNsaWRlciA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgdmFyIHZhbCA9IGZpbHRlci52YWwoKTsKICAgICAgICAgICAgLy8gdHVybiBvZmYgZmlsdGVyIGlmIGluIGZ1bGwgcmFuZ2UKICAgICAgICAgICAgJHRkLmRhdGEoJ2ZpbHRlcicsIHZhbFswXSA+IHIxIHx8IHZhbFsxXSA8IHIyKTsKICAgICAgICAgICAgdmFyIHYxID0gZm9ybWF0RGF0ZSh2YWxbMF0pLCB2MiA9IGZvcm1hdERhdGUodmFsWzFdKSwgaXZhbDsKICAgICAgICAgICAgaWYgKCR0ZC5kYXRhKCdmaWx0ZXInKSkgewogICAgICAgICAgICAgIGl2YWwgPSB2MSArICcgLi4uICcgKyB2MjsKICAgICAgICAgICAgICAkaW5wdXQuYXR0cigndGl0bGUnLCBpdmFsKS52YWwoaXZhbCkudHJpZ2dlcignaW5wdXQnKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAkaW5wdXQuYXR0cigndGl0bGUnLCAnJykudmFsKCcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc3BhbjEudGV4dCh2MSk7ICRzcGFuMi50ZXh0KHYyKTsKICAgICAgICAgICAgaWYgKGUudHlwZSA9PT0gJ3NsaWRlJykgcmV0dXJuOyAgLy8gbm8gc2VhcmNoaW5nIHdoZW4gc2xpZGluZyBvbmx5CiAgICAgICAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICAgICAgICB0YWJsZS5jb2x1bW4oaSkuc2VhcmNoKCR0ZC5kYXRhKCdmaWx0ZXInKSA/IGl2YWwgOiAnJykuZHJhdygpOwogICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB0YWJsZS5kcmF3KCk7CiAgICAgICAgICB9OwogICAgICAgICAgZmlsdGVyLm9uKHsKICAgICAgICAgICAgc2V0OiB1cGRhdGVTbGlkZXIsCiAgICAgICAgICAgIHNsaWRlOiB1cGRhdGVTbGlkZXIKICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgLy8gc2VydmVyLXNpZGUgcHJvY2Vzc2luZyB3aWxsIGJlIGhhbmRsZWQgYnkgUiAob3Igd2hhdGV2ZXIgc2VydmVyCiAgICAgICAgLy8gbGFuZ3VhZ2UgeW91IHVzZSk7IHRoZSBmb2xsb3dpbmcgY29kZSBpcyBvbmx5IG5lZWRlZCBmb3IgY2xpZW50LXNpZGUKICAgICAgICAvLyBwcm9jZXNzaW5nCiAgICAgICAgaWYgKHNlcnZlcikgewogICAgICAgICAgLy8gaWYgYSBzZWFyY2ggc3RyaW5nIGhhcyBiZWVuIHByZS1zZXQsIHNlYXJjaCBub3cKICAgICAgICAgIGlmIChzZWFyY2hDb2wpIHNlYXJjaENvbHVtbihpLCBzZWFyY2hDb2wpLmRyYXcoKTsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBjdXN0b21GaWx0ZXIgPSBmdW5jdGlvbihzZXR0aW5ncywgZGF0YSwgZGF0YUluZGV4KSB7CiAgICAgICAgICAvLyB0aGVyZSBpcyBubyB3YXkgdG8gYXR0YWNoIGEgc2VhcmNoIGZ1bmN0aW9uIHRvIGEgc3BlY2lmaWMgdGFibGUsCiAgICAgICAgICAvLyBhbmQgd2UgbmVlZCB0byBtYWtlIHN1cmUgYSBnbG9iYWwgc2VhcmNoIGZ1bmN0aW9uIGlzIG5vdCBhcHBsaWVkIHRvCiAgICAgICAgICAvLyBhbGwgdGFibGVzIChpLmUuIGEgcmFuZ2UgZmlsdGVyIGluIGEgcHJldmlvdXMgdGFibGUgc2hvdWxkIG5vdCBiZQogICAgICAgICAgLy8gYXBwbGllZCB0byB0aGUgY3VycmVudCB0YWJsZSk7IHdlIHVzZSB0aGUgc2V0dGluZ3Mgb2JqZWN0IHRvCiAgICAgICAgICAvLyBkZXRlcm1pbmUgaWYgd2Ugd2FudCB0byBwZXJmb3JtIHNlYXJjaGluZyBvbiB0aGUgY3VycmVudCB0YWJsZSwKICAgICAgICAgIC8vIHNpbmNlIHNldHRpbmdzLnNUYWJsZUlkIHdpbGwgYmUgZGlmZmVyZW50IHRvIGRpZmZlcmVudCB0YWJsZXMKICAgICAgICAgIGlmICh0YWJsZS5zZXR0aW5ncygpWzBdICE9PSBzZXR0aW5ncykgcmV0dXJuIHRydWU7CiAgICAgICAgICAvLyBubyBmaWx0ZXIgb24gdGhpcyBjb2x1bW4gb3Igbm8gbmVlZCB0byBmaWx0ZXIgdGhpcyBjb2x1bW4KICAgICAgICAgIGlmICh0eXBlb2YgZmlsdGVyID09PSAndW5kZWZpbmVkJyB8fCAhJHRkLmRhdGEoJ2ZpbHRlcicpKSByZXR1cm4gdHJ1ZTsKCiAgICAgICAgICB2YXIgciA9IGZpbHRlci52YWwoKSwgdiwgcjAsIHIxOwogICAgICAgICAgaWYgKHR5cGUgPT09ICdudW1iZXInIHx8IHR5cGUgPT09ICdpbnRlZ2VyJykgewogICAgICAgICAgICB2ID0gcGFyc2VGbG9hdChkYXRhW2ldKTsKICAgICAgICAgICAgLy8gaG93IHRvIGhhbmRsZSBOYU4/IGN1cnJlbnRseSBleGNsdWRlIHRoZXNlIHJvd3MKICAgICAgICAgICAgaWYgKGlzTmFOKHYpKSByZXR1cm4oZmFsc2UpOwogICAgICAgICAgICByMCA9IHBhcnNlRmxvYXQoc2NhbGVCYWNrKHJbMF0sIHNjYWxlKSkKICAgICAgICAgICAgcjEgPSBwYXJzZUZsb2F0KHNjYWxlQmFjayhyWzFdLCBzY2FsZSkpOwogICAgICAgICAgICBpZiAodiA+PSByMCAmJiB2IDw9IHIxKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2RhdGUnIHx8IHR5cGUgPT09ICd0aW1lJykgewogICAgICAgICAgICB2ID0gbmV3IERhdGUoZGF0YVtpXSk7CiAgICAgICAgICAgIHIwID0gbmV3IERhdGUoclswXSAvIHNjYWxlKTsgcjEgPSBuZXcgRGF0ZShyWzFdIC8gc2NhbGUpOwogICAgICAgICAgICBpZiAodiA+PSByMCAmJiB2IDw9IHIxKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2ZhY3RvcicpIHsKICAgICAgICAgICAgaWYgKHIubGVuZ3RoID09PSAwIHx8IGluQXJyYXkoZGF0YVtpXSwgcikpIHJldHVybiB0cnVlOwogICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAnbG9naWNhbCcpIHsKICAgICAgICAgICAgaWYgKHIubGVuZ3RoID09PSAwKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgaWYgKGluQXJyYXkoZGF0YVtpXSA9PT0gJycgPyAnbmEnIDogZGF0YVtpXSwgcikpIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH07CgogICAgICAgICQuZm4uZGF0YVRhYmxlLmV4dC5zZWFyY2gucHVzaChjdXN0b21GaWx0ZXIpOwoKICAgICAgICAvLyBzZWFyY2ggZm9yIHRoZSBwcmVzZXQgc2VhcmNoIHN0cmluZ3MgaWYgaXQgaXMgbm9uLWVtcHR5CiAgICAgICAgaWYgKHNlYXJjaENvbCkgewogICAgICAgICAgaWYgKGluQXJyYXkodHlwZSwgWydmYWN0b3InLCAnbG9naWNhbCddKSkgewogICAgICAgICAgICBmaWx0ZXJbMF0uc2VsZWN0aXplLnNldFZhbHVlKEpTT04ucGFyc2Uoc2VhcmNoQ29sKSk7CiAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdjaGFyYWN0ZXInKSB7CiAgICAgICAgICAgICRpbnB1dC50cmlnZ2VyKCdpbnB1dCcpOwogICAgICAgICAgfSBlbHNlIGlmIChpbkFycmF5KHR5cGUsIFsnbnVtYmVyJywgJ2ludGVnZXInLCAnZGF0ZScsICd0aW1lJ10pKSB7CiAgICAgICAgICAgICRpbnB1dC50cmlnZ2VyKCdjaGFuZ2UnKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICB9KTsKCiAgICB9CgogICAgLy8gaGlnaGxpZ2h0IHNlYXJjaCBrZXl3b3JkcwogICAgdmFyIGhpZ2hsaWdodCA9IGZ1bmN0aW9uKCkgewogICAgICB2YXIgYm9keSA9ICQodGFibGUudGFibGUoKS5ib2R5KCkpOwogICAgICAvLyByZW1vdmluZyB0aGUgb2xkIGhpZ2hsaWdodGluZyBmaXJzdAogICAgICBib2R5LnVuaGlnaGxpZ2h0KCk7CgogICAgICAvLyBkb24ndCBoaWdobGlnaHQgdGhlICJub3QgZm91bmQiIHJvdywgc28gd2UgZ2V0IHRoZSByb3dzIHVzaW5nIHRoZSBhcGkKICAgICAgaWYgKHRhYmxlLnJvd3MoeyBmaWx0ZXI6ICdhcHBsaWVkJyB9KS5kYXRhKCkubGVuZ3RoID09PSAwKSByZXR1cm47CiAgICAgIC8vIGhpZ2hsaWdodCBnbG9hbCBzZWFyY2gga2V5d29yZHMKICAgICAgYm9keS5oaWdobGlnaHQoJC50cmltKHRhYmxlLnNlYXJjaCgpKS5zcGxpdCgvXHMrLykpOwogICAgICAvLyB0aGVuIGhpZ2hsaWdodCBrZXl3b3JkcyBmcm9tIGluZGl2aWR1YWwgY29sdW1uIGZpbHRlcnMKICAgICAgaWYgKGZpbHRlclJvdykgZmlsdGVyUm93LmVhY2goZnVuY3Rpb24oaSwgdGQpIHsKICAgICAgICB2YXIgJHRkID0gJCh0ZCksIHR5cGUgPSAkdGQuZGF0YSgndHlwZScpOwogICAgICAgIGlmICh0eXBlICE9PSAnY2hhcmFjdGVyJykgcmV0dXJuOwogICAgICAgIHZhciAkaW5wdXQgPSAkdGQuY2hpbGRyZW4oJ2RpdicpLmZpcnN0KCkuY2hpbGRyZW4oJ2lucHV0Jyk7CiAgICAgICAgdmFyIGNvbHVtbiA9IHRhYmxlLmNvbHVtbihpKS5ub2RlcygpLnRvJCgpLAogICAgICAgICAgICB2YWwgPSAkLnRyaW0oJGlucHV0LnZhbCgpKTsKICAgICAgICBpZiAodHlwZSAhPT0gJ2NoYXJhY3RlcicgfHwgdmFsID09PSAnJykgcmV0dXJuOwogICAgICAgIGNvbHVtbi5oaWdobGlnaHQodmFsLnNwbGl0KC9ccysvKSk7CiAgICAgIH0pOwogICAgfTsKCiAgICBpZiAob3B0aW9ucy5zZWFyY2hIaWdobGlnaHQpIHsKICAgICAgdGFibGUKICAgICAgLm9uKCdkcmF3LmR0LmR0aCBjb2x1bW4tdmlzaWJpbGl0eS5kdC5kdGggY29sdW1uLXJlb3JkZXIuZHQuZHRoJywgaGlnaGxpZ2h0KQogICAgICAub24oJ2Rlc3Ryb3knLCBmdW5jdGlvbigpIHsKICAgICAgICAvLyByZW1vdmUgZXZlbnQgaGFuZGxlcgogICAgICAgIHRhYmxlLm9mZignZHJhdy5kdC5kdGggY29sdW1uLXZpc2liaWxpdHkuZHQuZHRoIGNvbHVtbi1yZW9yZGVyLmR0LmR0aCcpOwogICAgICB9KTsKCiAgICAgIC8vIGluaXRpYWwgaGlnaGxpZ2h0IGZvciBzdGF0ZSBzYXZlZCBjb25kaXRpb25zIGFuZCBpbml0aWFsIHN0YXRlcwogICAgICBoaWdobGlnaHQoKTsKICAgIH0KCiAgICAvLyBydW4gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG9uIHRoZSB0YWJsZSBpbnN0YW5jZQogICAgaWYgKHR5cGVvZiBkYXRhLmNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSBkYXRhLmNhbGxiYWNrKHRhYmxlKTsKCiAgICAvLyBkb3VibGUgY2xpY2sgdG8gZWRpdCB0aGUgY2VsbAogICAgaWYgKGRhdGEuZWRpdGFibGUpIHRhYmxlLm9uKCdkYmxjbGljay5kdCcsICd0Ym9keSB0ZCcsIGZ1bmN0aW9uKCkgewogICAgICB2YXIgJGlucHV0ID0gJCgnPGlucHV0IHR5cGU9InRleHQiPicpOwogICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpLCB2YWx1ZSA9IHRhYmxlLmNlbGwodGhpcykuZGF0YSgpLCBodG1sID0gJHRoaXMuaHRtbCgpOwogICAgICB2YXIgY2hhbmdlZCA9IGZhbHNlOwogICAgICAkaW5wdXQudmFsKHZhbHVlKTsKICAgICAgJHRoaXMuZW1wdHkoKS5hcHBlbmQoJGlucHV0KTsKICAgICAgJGlucHV0LmNzcygnd2lkdGgnLCAnMTAwJScpLmZvY3VzKCkub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgIGNoYW5nZWQgPSB0cnVlOwogICAgICAgIHZhciB2YWx1ZU5ldyA9ICRpbnB1dC52YWwoKTsKICAgICAgICBpZiAodmFsdWVOZXcgIT0gdmFsdWUpIHsKICAgICAgICAgIHRhYmxlLmNlbGwoJHRoaXMpLmRhdGEodmFsdWVOZXcpOwogICAgICAgICAgaWYgKEhUTUxXaWRnZXRzLnNoaW55TW9kZSkgY2hhbmdlSW5wdXQoJ2NlbGxfZWRpdCcsIGNlbGxJbmZvKCR0aGlzKSk7CiAgICAgICAgICAvLyBmb3Igc2VydmVyLXNpZGUgcHJvY2Vzc2luZywgdXNlcnMgaGF2ZSB0byBjYWxsIHJlcGxhY2VEYXRhKCkgdG8gdXBkYXRlIHRoZSB0YWJsZQogICAgICAgICAgaWYgKCFzZXJ2ZXIpIHRhYmxlLmRyYXcoZmFsc2UpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAkdGhpcy5odG1sKGh0bWwpOwogICAgICAgIH0KICAgICAgICAkaW5wdXQucmVtb3ZlKCk7CiAgICAgIH0pLm9uKCdibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCFjaGFuZ2VkKSAkaW5wdXQudHJpZ2dlcignY2hhbmdlJyk7CiAgICAgIH0pOwogICAgfSk7CgogICAgLy8gaW50ZXJhY3Rpb24gd2l0aCBzaGlueQogICAgaWYgKCFIVE1MV2lkZ2V0cy5zaGlueU1vZGUgJiYgIWNyb3NzdGFsa09wdGlvbnMuZ3JvdXApIHJldHVybjsKCiAgICB2YXIgbWV0aG9kcyA9IHt9OwogICAgdmFyIHNoaW55RGF0YSA9IHt9OwoKICAgIG1ldGhvZHMudXBkYXRlQ2FwdGlvbiA9IGZ1bmN0aW9uKGNhcHRpb24pIHsKICAgICAgaWYgKCFjYXB0aW9uKSByZXR1cm47CiAgICAgICR0YWJsZS5jaGlsZHJlbignY2FwdGlvbicpLnJlcGxhY2VXaXRoKGNhcHRpb24pOwogICAgfQoKICAgIC8vIHJlZ2lzdGVyIGNsZWFyIGZ1bmN0aW9ucyB0byByZW1vdmUgaW5wdXQgdmFsdWVzIHdoZW4gdGhlIHRhYmxlIGlzIHJlbW92ZWQKICAgIGluc3RhbmNlLmNsZWFySW5wdXRzID0ge307CgogICAgdmFyIGNoYW5nZUlucHV0ID0gZnVuY3Rpb24oaWQsIHZhbHVlLCB0eXBlLCBub0Nyb3NzdGFsaykgewogICAgICB2YXIgZXZlbnQgPSBpZDsKICAgICAgaWQgPSBlbC5pZCArICdfJyArIGlkOwogICAgICBpZiAodHlwZSkgaWQgPSBpZCArICc6JyArIHR5cGU7CiAgICAgIC8vIGRvIG5vdCB1cGRhdGUgaWYgdGhlIG5ldyB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBvbGQgdmFsdWUKICAgICAgaWYgKHNoaW55RGF0YS5oYXNPd25Qcm9wZXJ0eShpZCkgJiYgc2hpbnlEYXRhW2lkXSA9PT0gSlNPTi5zdHJpbmdpZnkodmFsdWUpKQogICAgICAgIHJldHVybjsKICAgICAgc2hpbnlEYXRhW2lkXSA9IEpTT04uc3RyaW5naWZ5KHZhbHVlKTsKICAgICAgaWYgKEhUTUxXaWRnZXRzLnNoaW55TW9kZSkgewogICAgICAgIFNoaW55Lm9uSW5wdXRDaGFuZ2UoaWQsIHZhbHVlKTsKICAgICAgICBpZiAoIWluc3RhbmNlLmNsZWFySW5wdXRzW2lkXSkgaW5zdGFuY2UuY2xlYXJJbnB1dHNbaWRdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBTaGlueS5vbklucHV0Q2hhbmdlKGlkLCBudWxsKTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIEhBQ0sKICAgICAgaWYgKGV2ZW50ID09PSAicm93c19zZWxlY3RlZCIgJiYgIW5vQ3Jvc3N0YWxrKSB7CiAgICAgICAgaWYgKGNyb3NzdGFsa09wdGlvbnMuZ3JvdXApIHsKICAgICAgICAgIHZhciBrZXlzID0gY3Jvc3N0YWxrT3B0aW9ucy5rZXk7CiAgICAgICAgICB2YXIgc2VsZWN0ZWRLZXlzID0gbnVsbDsKICAgICAgICAgIGlmICh2YWx1ZSkgewogICAgICAgICAgICBzZWxlY3RlZEtleXMgPSBbXTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBhcnJheSdzIGNvbnRlbnRzIHVzZSAxLWJhc2VkIHJvdyBudW1iZXJzLCBzbyB3ZSBtdXN0CiAgICAgICAgICAgICAgLy8gY29udmVydCB0byAwLWJhc2VkIGJlZm9yZSBpbmRleGluZyBpbnRvIHRoZSBrZXlzIGFycmF5LgogICAgICAgICAgICAgIHNlbGVjdGVkS2V5cy5wdXNoKGtleXNbdmFsdWVbaV0gLSAxXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGluc3RhbmNlLmN0c2VsZWN0SGFuZGxlLnNldChzZWxlY3RlZEtleXMpOwogICAgICAgIH0KICAgICAgfQogICAgfTsKCiAgICB2YXIgYWRkT25lID0gZnVuY3Rpb24oeCkgewogICAgICByZXR1cm4geC5tYXAoZnVuY3Rpb24oaSkgeyByZXR1cm4gMSArIGk7IH0pOwogICAgfTsKCiAgICB2YXIgdW5pcXVlID0gZnVuY3Rpb24oeCkgewogICAgICB2YXIgdXggPSBbXTsKICAgICAgJC5lYWNoKHgsIGZ1bmN0aW9uKGksIGVsKXsKICAgICAgICBpZiAoJC5pbkFycmF5KGVsLCB1eCkgPT09IC0xKSB1eC5wdXNoKGVsKTsKICAgICAgfSk7CiAgICAgIHJldHVybiB1eDsKICAgIH0KCiAgICAvLyBjaGFuZ2UgdGhlIHJvdyBpbmRleCBvZiBhIGNlbGwKICAgIHZhciB0d2Vha0NlbGxJbmRleCA9IGZ1bmN0aW9uKGNlbGwpIHsKICAgICAgdmFyIGluZm8gPSBjZWxsLmluZGV4KCk7CiAgICAgIGlmIChzZXJ2ZXIpIHsKICAgICAgICBpbmZvLnJvdyA9IERUX3Jvd3NfY3VycmVudFtpbmZvLnJvd107CiAgICAgIH0gZWxzZSB7CiAgICAgICAgaW5mby5yb3cgKz0gMTsKICAgICAgfQogICAgICByZXR1cm4ge3JvdzogaW5mby5yb3csIGNvbDogaW5mby5jb2x1bW59OwogICAgfQoKICAgIHZhciBzZWxNb2RlID0gZGF0YS5zZWxlY3Rpb24ubW9kZSwgc2VsVGFyZ2V0ID0gZGF0YS5zZWxlY3Rpb24udGFyZ2V0OwogICAgaWYgKGluQXJyYXkoc2VsTW9kZSwgWydzaW5nbGUnLCAnbXVsdGlwbGUnXSkpIHsKICAgICAgdmFyIHNlbENsYXNzID0gZGF0YS5zdHlsZSA9PT0gJ2Jvb3RzdHJhcCcgPyAnYWN0aXZlJyA6ICdzZWxlY3RlZCc7CiAgICAgIHZhciBzZWxlY3RlZCA9IGRhdGEuc2VsZWN0aW9uLnNlbGVjdGVkLCBzZWxlY3RlZDEsIHNlbGVjdGVkMjsKICAgICAgLy8gc2VsZWN0ZWQxOiByb3cgaW5kaWNlczsgc2VsZWN0ZWQyOiBjb2x1bW4gaW5kaWNlcwogICAgICBpZiAoc2VsZWN0ZWQgPT09IG51bGwpIHsKICAgICAgICBzZWxlY3RlZDEgPSBzZWxlY3RlZDIgPSBbXTsKICAgICAgfSBlbHNlIGlmIChzZWxUYXJnZXQgPT09ICdyb3cnKSB7CiAgICAgICAgc2VsZWN0ZWQxID0gJC5tYWtlQXJyYXkoc2VsZWN0ZWQpOwogICAgICB9IGVsc2UgaWYgKHNlbFRhcmdldCA9PT0gJ2NvbHVtbicpIHsKICAgICAgICBzZWxlY3RlZDIgPSAkLm1ha2VBcnJheShzZWxlY3RlZCk7CiAgICAgIH0gZWxzZSBpZiAoc2VsVGFyZ2V0ID09PSAncm93K2NvbHVtbicpIHsKICAgICAgICBzZWxlY3RlZDEgPSAkLm1ha2VBcnJheShzZWxlY3RlZC5yb3dzKTsKICAgICAgICBzZWxlY3RlZDIgPSAkLm1ha2VBcnJheShzZWxlY3RlZC5jb2xzKTsKICAgICAgfQoKICAgICAgLy8gQWZ0ZXIgdXNlcnMgcmVvcmRlciB0aGUgcm93cyBvciBmaWx0ZXIgdGhlIHRhYmxlLCB3ZSBjYW5ub3QgdXNlIHRoZSB0YWJsZSBpbmRleAogICAgICAvLyBkaXJlY3RseS4gSW5zdGVhZCwgd2UgbmVlZCB0aGlzIGZ1bmN0aW9uIHRvIGZpbmQgb3V0IHRoZSByb3dzIGJldHdlZW4gdGhlIHR3byBjbGlja3MuCiAgICAgIC8vIElmIHVzZXIgZmlsdGVyIHRoZSB0YWJsZSBhZ2FpbiBiZXR3ZWVuIHRoZSBzdGFydCBjbGljayBhbmQgdGhlIGVuZCBjbGljaywgdGhlIGJlaGF2aW9yCiAgICAgIC8vIHdvdWxkIGJlIHVuZGVmaW5lZCwgYnV0IGl0IHNob3VsZCBub3QgYmUgYSBwcm9ibGVtLgogICAgICB2YXIgc2hpZnRTZWxSb3dzSW5kZXggPSBmdW5jdGlvbihzdGFydCwgZW5kKSB7CiAgICAgICAgdmFyIGluZGV4ZXMgPSBzZXJ2ZXIgPyBEVF9yb3dzX2FsbCA6IHRhYmxlLnJvd3MoeyBzZWFyY2g6ICdhcHBsaWVkJyB9KS5pbmRleGVzKCkudG9BcnJheSgpOwogICAgICAgIHN0YXJ0ID0gaW5kZXhlcy5pbmRleE9mKHN0YXJ0KTsgZW5kID0gaW5kZXhlcy5pbmRleE9mKGVuZCk7CiAgICAgICAgLy8gaWYgc3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5kLCB3ZSBuZWVkIHRvIHN3YXAKICAgICAgICBpZiAoc3RhcnQgPiBlbmQpIHsKICAgICAgICAgIHZhciB0bXAgPSBlbmQ7IGVuZCA9IHN0YXJ0OyBzdGFydCA9IHRtcDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGluZGV4ZXMuc2xpY2Uoc3RhcnQsIGVuZCArIDEpOwogICAgICB9CgogICAgICB2YXIgc2VydmVyUm93SW5kZXggPSBmdW5jdGlvbihjbGllbnRSb3dJbmRleCkgewogICAgICAgIHJldHVybiBzZXJ2ZXIgPyBEVF9yb3dzX2N1cnJlbnRbY2xpZW50Um93SW5kZXhdIDogY2xpZW50Um93SW5kZXggKyAxOwogICAgICB9CgogICAgICAvLyByb3csIGNvbHVtbiwgb3IgY2VsbCBzZWxlY3Rpb24KICAgICAgdmFyIGxhc3RDbGlja2VkUm93OwogICAgICBpZiAoaW5BcnJheShzZWxUYXJnZXQsIFsncm93JywgJ3Jvdytjb2x1bW4nXSkpIHsKICAgICAgICB2YXIgc2VsZWN0ZWRSb3dzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB2YXIgcm93cyA9IHRhYmxlLnJvd3MoJy4nICsgc2VsQ2xhc3MpOwogICAgICAgICAgdmFyIGlkeCA9IHJvd3MuaW5kZXhlcygpLnRvQXJyYXkoKTsKICAgICAgICAgIGlmICghc2VydmVyKSByZXR1cm4gYWRkT25lKGlkeCk7CiAgICAgICAgICBpZHggPSBpZHgubWFwKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgcmV0dXJuIERUX3Jvd3NfY3VycmVudFtpXTsKICAgICAgICAgIH0pOwogICAgICAgICAgc2VsZWN0ZWQxID0gc2VsTW9kZSA9PT0gJ211bHRpcGxlJyA/IHVuaXF1ZShzZWxlY3RlZDEuY29uY2F0KGlkeCkpIDogaWR4OwogICAgICAgICAgcmV0dXJuIHNlbGVjdGVkMTsKICAgICAgICB9CiAgICAgICAgdGFibGUub24oJ21vdXNlZG93bi5kdCcsICd0Ym9keSB0cicsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksIHRoaXNSb3cgPSB0YWJsZS5yb3codGhpcyk7CiAgICAgICAgICBpZiAoc2VsTW9kZSA9PT0gJ211bHRpcGxlJykgewogICAgICAgICAgICBpZiAoZS5zaGlmdEtleSAmJiBsYXN0Q2xpY2tlZFJvdyAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgLy8gc2VsZWN0IG9yIGRlLXNlbGVjdCBkZXBlbmRzIG9uIHRoZSBsYXN0IGNsaWNrZWQgcm93J3Mgc3RhdHVzCiAgICAgICAgICAgICAgdmFyIGZsYWdTZWwgPSAhJHRoaXMuaGFzQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICAgIHZhciBjcnRDbGlja2VkUm93ID0gc2VydmVyUm93SW5kZXgodGhpc1Jvdy5pbmRleCgpKTsKICAgICAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgICAgICB2YXIgcm93c0luZGV4ID0gc2hpZnRTZWxSb3dzSW5kZXgobGFzdENsaWNrZWRSb3csIGNydENsaWNrZWRSb3cpOwogICAgICAgICAgICAgICAgLy8gdXBkYXRlIGN1cnJlbnQgcGFnZSdzIHNlbENsYXNzCiAgICAgICAgICAgICAgICByb3dzSW5kZXgubWFwKGZ1bmN0aW9uKGkpIHsKICAgICAgICAgICAgICAgICAgdmFyIHJvd0luZGV4ID0gRFRfcm93c19jdXJyZW50LmluZGV4T2YoaSk7CiAgICAgICAgICAgICAgICAgIGlmIChyb3dJbmRleCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IHRhYmxlLnJvdyhyb3dJbmRleCkubm9kZXMoKS50byQoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgZmxhZ1Jvd1NlbCA9ICFyb3cuaGFzQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICAgICAgICAgIGlmIChmbGFnU2VsID09PSBmbGFnUm93U2VsKSByb3cudG9nZ2xlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBzZWxlY3RlZDEKICAgICAgICAgICAgICAgIGlmIChmbGFnU2VsKSB7CiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkMSA9IHVuaXF1ZShzZWxlY3RlZDEuY29uY2F0KHJvd3NJbmRleCkpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQxID0gc2VsZWN0ZWQxLmZpbHRlcihmdW5jdGlvbihpbmRleCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhaW5BcnJheShpbmRleCwgcm93c0luZGV4KTsKICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGpzIHN0YXJ0cyBmcm9tIDAKICAgICAgICAgICAgICAgIHNoaWZ0U2VsUm93c0luZGV4KGxhc3RDbGlja2VkUm93IC0gMSwgY3J0Q2xpY2tlZFJvdyAtIDEpLm1hcChmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICAgICAgICB2YXIgcm93ID0gdGFibGUucm93KHZhbHVlKS5ub2RlcygpLnRvJCgpOwogICAgICAgICAgICAgICAgICB2YXIgZmxhZ1Jvd1NlbCA9ICFyb3cuaGFzQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICAgICAgICBpZiAoZmxhZ1NlbCA9PT0gZmxhZ1Jvd1NlbCkgcm93LnRvZ2dsZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJHRoaXMudG9nZ2xlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB9CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoJHRoaXMuaGFzQ2xhc3Moc2VsQ2xhc3MpKSB7CiAgICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIHRhYmxlLiQoJ3RyLicgKyBzZWxDbGFzcykucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICAgICR0aGlzLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgaWYgKHNlcnZlciAmJiAhJHRoaXMuaGFzQ2xhc3Moc2VsQ2xhc3MpKSB7CiAgICAgICAgICAgIHZhciBpZCA9IERUX3Jvd3NfY3VycmVudFt0aGlzUm93LmluZGV4KCldOwogICAgICAgICAgICAvLyByZW1vdmUgaWQgZnJvbSBzZWxlY3RlZDEgc2luY2UgaXRzIGNsYXNzIC5zZWxlY3RlZCBoYXMgYmVlbiByZW1vdmVkCiAgICAgICAgICAgIGlmIChpbkFycmF5KGlkLCBzZWxlY3RlZDEpKSBzZWxlY3RlZDEuc3BsaWNlKCQuaW5BcnJheShpZCwgc2VsZWN0ZWQxKSwgMSk7CiAgICAgICAgICB9CiAgICAgICAgICBjaGFuZ2VJbnB1dCgncm93c19zZWxlY3RlZCcsIHNlbGVjdGVkUm93cygpKTsKICAgICAgICAgIGNoYW5nZUlucHV0KCdyb3dfbGFzdF9jbGlja2VkJywgc2VydmVyUm93SW5kZXgodGhpc1Jvdy5pbmRleCgpKSk7CiAgICAgICAgICBsYXN0Q2xpY2tlZFJvdyA9IHNlcnZlclJvd0luZGV4KHRoaXNSb3cuaW5kZXgoKSk7CiAgICAgICAgfSk7CiAgICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3Nfc2VsZWN0ZWQnLCBzZWxlY3RlZDEpOwogICAgICAgIHZhciBzZWxlY3RSb3dzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB0YWJsZS4kKCd0ci4nICsgc2VsQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgIGlmIChzZWxlY3RlZDEubGVuZ3RoID09PSAwKSByZXR1cm47CiAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgIHRhYmxlLnJvd3Moe3BhZ2U6ICdjdXJyZW50J30pLmV2ZXJ5KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIGlmIChpbkFycmF5KERUX3Jvd3NfY3VycmVudFt0aGlzLmluZGV4KCldLCBzZWxlY3RlZDEpKSB7CiAgICAgICAgICAgICAgICAkKHRoaXMubm9kZSgpKS5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHZhciBzZWxlY3RlZDAgPSBzZWxlY3RlZDEubWFwKGZ1bmN0aW9uKGkpIHsgcmV0dXJuIGkgLSAxOyB9KTsKICAgICAgICAgICAgJCh0YWJsZS5yb3dzKHNlbGVjdGVkMCkubm9kZXMoKSkuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBzZWxlY3RSb3dzKCk7ICAvLyBpbiBjYXNlIHVzZXJzIGhhdmUgc3BlY2lmaWVkIHByZS1zZWxlY3RlZCByb3dzCiAgICAgICAgLy8gcmVzdG9yZSBzZWxlY3RlZCByb3dzIGFmdGVyIHRoZSB0YWJsZSBpcyByZWRyYXduIChlLmcuIHNvcnQvc2VhcmNoL3BhZ2UpOwogICAgICAgIC8vIGNsaWVudC1zaWRlIHRhYmxlcyB3aWxsIHByZXNlcnZlIHRoZSBzZWxlY3Rpb25zIGF1dG9tYXRpY2FsbHk7IGZvcgogICAgICAgIC8vIHNlcnZlci1zaWRlIHRhYmxlcywgd2UgaGF2ZSB0byAqcmVhbCogcm93IGluZGljZXMgYXJlIGluIGBzZWxlY3RlZDFgCiAgICAgICAgaWYgKHNlcnZlcikgdGFibGUub24oJ2RyYXcuZHQnLCBzZWxlY3RSb3dzKTsKICAgICAgICBtZXRob2RzLnNlbGVjdFJvd3MgPSBmdW5jdGlvbihzZWxlY3RlZCkgewogICAgICAgICAgc2VsZWN0ZWQxID0gc2VsZWN0ZWQgPyBzZWxlY3RlZCA6IFtdOwogICAgICAgICAgc2VsZWN0Um93cygpOwogICAgICAgICAgY2hhbmdlSW5wdXQoJ3Jvd3Nfc2VsZWN0ZWQnLCBzZWxlY3RlZDEpOwogICAgICAgIH0KICAgICAgfQoKICAgICAgaWYgKGluQXJyYXkoc2VsVGFyZ2V0LCBbJ2NvbHVtbicsICdyb3crY29sdW1uJ10pKSB7CiAgICAgICAgaWYgKHNlbFRhcmdldCA9PT0gJ3Jvdytjb2x1bW4nKSB7CiAgICAgICAgICAkKHRhYmxlLmNvbHVtbnMoKS5mb290ZXIoKSkuY3NzKCdjdXJzb3InLCAncG9pbnRlcicpOwogICAgICAgIH0KICAgICAgICB0YWJsZS5vbignY2xpY2suZHQnLCBzZWxUYXJnZXQgPT09ICdjb2x1bW4nID8gJ3Rib2R5IHRkJyA6ICd0Zm9vdCB0ciB0aCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgdmFyIGNvbElkeCA9IHNlbFRhcmdldCA9PT0gJ2NvbHVtbicgPyB0YWJsZS5jZWxsKHRoaXMpLmluZGV4KCkuY29sdW1uIDoKICAgICAgICAgICAgICAkLmluQXJyYXkodGhpcywgdGFibGUuY29sdW1ucygpLmZvb3RlcigpKSwKICAgICAgICAgICAgICB0aGlzQ29sID0gJCh0YWJsZS5jb2x1bW4oY29sSWR4KS5ub2RlcygpKTsKICAgICAgICAgIGlmIChjb2xJZHggPT09IC0xKSByZXR1cm47CiAgICAgICAgICBpZiAodGhpc0NvbC5oYXNDbGFzcyhzZWxDbGFzcykpIHsKICAgICAgICAgICAgdGhpc0NvbC5yZW1vdmVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIHNlbGVjdGVkMi5zcGxpY2UoJC5pbkFycmF5KGNvbElkeCwgc2VsZWN0ZWQyKSwgMSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoc2VsTW9kZSA9PT0gJ3NpbmdsZScpICQodGFibGUuY2VsbHMoKS5ub2RlcygpKS5yZW1vdmVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIHRoaXNDb2wuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICBzZWxlY3RlZDIgPSBzZWxNb2RlID09PSAnc2luZ2xlJyA/IFtjb2xJZHhdIDogdW5pcXVlKHNlbGVjdGVkMi5jb25jYXQoW2NvbElkeF0pKTsKICAgICAgICAgIH0KICAgICAgICAgIGNoYW5nZUlucHV0KCdjb2x1bW5zX3NlbGVjdGVkJywgc2VsZWN0ZWQyKTsKICAgICAgICB9KTsKICAgICAgICBjaGFuZ2VJbnB1dCgnY29sdW1uc19zZWxlY3RlZCcsIHNlbGVjdGVkMik7CiAgICAgICAgdmFyIHNlbGVjdENvbHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIHRhYmxlLmNvbHVtbnMoKS5ub2RlcygpLmZsYXR0ZW4oKS50byQoKS5yZW1vdmVDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICBpZiAoc2VsZWN0ZWQyLmxlbmd0aCA+IDApCiAgICAgICAgICAgIHRhYmxlLmNvbHVtbnMoc2VsZWN0ZWQyKS5ub2RlcygpLmZsYXR0ZW4oKS50byQoKS5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgfQogICAgICAgIHNlbGVjdENvbHMoKTsgIC8vIGluIGNhc2UgdXNlcnMgaGF2ZSBzcGVjaWZpZWQgcHJlLXNlbGVjdGVkIGNvbHVtbnMKICAgICAgICBpZiAoc2VydmVyKSB0YWJsZS5vbignZHJhdy5kdCcsIHNlbGVjdENvbHMpOwogICAgICAgIG1ldGhvZHMuc2VsZWN0Q29sdW1ucyA9IGZ1bmN0aW9uKHNlbGVjdGVkKSB7CiAgICAgICAgICBzZWxlY3RlZDIgPSBzZWxlY3RlZCA/IHNlbGVjdGVkIDogW107CiAgICAgICAgICBzZWxlY3RDb2xzKCk7CiAgICAgICAgICBjaGFuZ2VJbnB1dCgnY29sdW1uc19zZWxlY3RlZCcsIHNlbGVjdGVkMik7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZiAoc2VsVGFyZ2V0ID09PSAnY2VsbCcpIHsKICAgICAgICB2YXIgc2VsZWN0ZWQzOwogICAgICAgIGlmIChzZWxlY3RlZCA9PT0gbnVsbCkgewogICAgICAgICAgc2VsZWN0ZWQzID0gW107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHNlbGVjdGVkMyA9IHNlbGVjdGVkOwogICAgICAgIH0KICAgICAgICB2YXIgZmluZEluZGV4ID0gZnVuY3Rpb24oaWopIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0ZWQzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChpalswXSA9PT0gc2VsZWN0ZWQzW2ldWzBdICYmIGlqWzFdID09PSBzZWxlY3RlZDNbaV1bMV0pIHJldHVybiBpOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KICAgICAgICB0YWJsZS5vbignY2xpY2suZHQnLCAndGJvZHkgdGQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyksIGluZm8gPSB0d2Vha0NlbGxJbmRleCh0YWJsZS5jZWxsKHRoaXMpKTsKICAgICAgICAgIGlmICgkdGhpcy5oYXNDbGFzcyhzZWxDbGFzcykpIHsKICAgICAgICAgICAgJHRoaXMucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICBzZWxlY3RlZDMuc3BsaWNlKGZpbmRJbmRleChbaW5mby5yb3csIGluZm8uY29sXSksIDEpOwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKHNlbE1vZGUgPT09ICdzaW5nbGUnKSAkKHRhYmxlLmNlbGxzKCkubm9kZXMoKSkucmVtb3ZlQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICAkdGhpcy5hZGRDbGFzcyhzZWxDbGFzcyk7CiAgICAgICAgICAgIHNlbGVjdGVkMyA9IHNlbE1vZGUgPT09ICdzaW5nbGUnID8gW1tpbmZvLnJvdywgaW5mby5jb2xdXSA6CiAgICAgICAgICAgICAgdW5pcXVlKHNlbGVjdGVkMy5jb25jYXQoW1tpbmZvLnJvdywgaW5mby5jb2xdXSkpOwogICAgICAgICAgfQogICAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxzX3NlbGVjdGVkJywgdHJhbnNwb3NlQXJyYXkyRChzZWxlY3RlZDMpLCAnc2hpbnkubWF0cml4Jyk7CiAgICAgICAgfSk7CiAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxzX3NlbGVjdGVkJywgdHJhbnNwb3NlQXJyYXkyRChzZWxlY3RlZDMpLCAnc2hpbnkubWF0cml4Jyk7CiAgICAgICAgdmFyIHNlbGVjdENlbGxzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICB0YWJsZS4kKCd0ZC4nICsgc2VsQ2xhc3MpLnJlbW92ZUNsYXNzKHNlbENsYXNzKTsKICAgICAgICAgIGlmIChzZWxlY3RlZDMubGVuZ3RoID09PSAwKSByZXR1cm47CiAgICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICAgIHRhYmxlLmNlbGxzKHtwYWdlOiAnY3VycmVudCd9KS5ldmVyeShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YXIgaW5mbyA9IHR3ZWFrQ2VsbEluZGV4KHRoaXMpOwogICAgICAgICAgICAgIGlmIChmaW5kSW5kZXgoW2luZm8ucm93LCBpbmZvLmNvbF0sIHNlbGVjdGVkMykgPiAtMSkKICAgICAgICAgICAgICAgICQodGhpcy5ub2RlKCkpLmFkZENsYXNzKHNlbENsYXNzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxlY3RlZDMubWFwKGZ1bmN0aW9uKGlqKSB7CiAgICAgICAgICAgICAgJCh0YWJsZS5jZWxsKGlqWzBdIC0gMSwgaWpbMV0pLm5vZGUoKSkuYWRkQ2xhc3Moc2VsQ2xhc3MpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHNlbGVjdENlbGxzKCk7ICAvLyBpbiBjYXNlIHVzZXJzIGhhdmUgc3BlY2lmaWVkIHByZS1zZWxlY3RlZCBjb2x1bW5zCiAgICAgICAgaWYgKHNlcnZlcikgdGFibGUub24oJ2RyYXcuZHQnLCBzZWxlY3RDZWxscyk7CiAgICAgICAgbWV0aG9kcy5zZWxlY3RDZWxscyA9IGZ1bmN0aW9uKHNlbGVjdGVkKSB7CiAgICAgICAgICBzZWxlY3RlZDMgPSBzZWxlY3RlZCA/IHNlbGVjdGVkIDogW107CiAgICAgICAgICBzZWxlY3RDZWxscygpOwogICAgICAgICAgY2hhbmdlSW5wdXQoJ2NlbGxzX3NlbGVjdGVkJywgdHJhbnNwb3NlQXJyYXkyRChzZWxlY3RlZDMpLCAnc2hpbnkubWF0cml4Jyk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gZXhwb3NlIHNvbWUgdGFibGUgaW5mbyB0byBTaGlueQogICAgdmFyIHVwZGF0ZVRhYmxlSW5mbyA9IGZ1bmN0aW9uKGUsIHNldHRpbmdzKSB7CiAgICAgIC8vIFRPRE86IGlzIGFueW9uZSBpbnRlcmVzdGVkIGluIHRoZSBwYWdlIGluZm8/CiAgICAgIC8vIGNoYW5nZUlucHV0KCdwYWdlX2luZm8nLCB0YWJsZS5wYWdlLmluZm8oKSk7CiAgICAgIHZhciB1cGRhdGVSb3dJbmZvID0gZnVuY3Rpb24oaWQsIG1vZGlmaWVyKSB7CiAgICAgICAgdmFyIGlkeDsKICAgICAgICBpZiAoc2VydmVyKSB7CiAgICAgICAgICBpZHggPSBtb2RpZmllci5wYWdlID09PSAnY3VycmVudCcgPyBEVF9yb3dzX2N1cnJlbnQgOiBEVF9yb3dzX2FsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgdmFyIHJvd3MgPSB0YWJsZS5yb3dzKCQuZXh0ZW5kKHsKICAgICAgICAgICAgc2VhcmNoOiAnYXBwbGllZCcsCiAgICAgICAgICAgIHBhZ2U6ICdhbGwnCiAgICAgICAgICB9LCBtb2RpZmllcikpOwogICAgICAgICAgaWR4ID0gYWRkT25lKHJvd3MuaW5kZXhlcygpLnRvQXJyYXkoKSk7CiAgICAgICAgfQogICAgICAgIGNoYW5nZUlucHV0KCdyb3dzJyArICdfJyArIGlkLCBpZHgpOwogICAgICB9OwogICAgICB1cGRhdGVSb3dJbmZvKCdjdXJyZW50Jywge3BhZ2U6ICdjdXJyZW50J30pOwogICAgICB1cGRhdGVSb3dJbmZvKCdhbGwnLCB7fSk7CiAgICB9CiAgICB0YWJsZS5vbignZHJhdy5kdCcsIHVwZGF0ZVRhYmxlSW5mbyk7CiAgICB1cGRhdGVUYWJsZUluZm8oKTsKCiAgICAvLyBzdGF0ZSBpbmZvCiAgICB0YWJsZS5vbignZHJhdy5kdCBjb2x1bW4tdmlzaWJpbGl0eS5kdCcsIGZ1bmN0aW9uKCkgewogICAgICBjaGFuZ2VJbnB1dCgnc3RhdGUnLCB0YWJsZS5zdGF0ZSgpKTsKICAgIH0pOwogICAgY2hhbmdlSW5wdXQoJ3N0YXRlJywgdGFibGUuc3RhdGUoKSk7CgogICAgLy8gc2VhcmNoIGluZm8KICAgIHZhciB1cGRhdGVTZWFyY2hJbmZvID0gZnVuY3Rpb24oKSB7CiAgICAgIGNoYW5nZUlucHV0KCdzZWFyY2gnLCB0YWJsZS5zZWFyY2goKSk7CiAgICAgIGlmIChmaWx0ZXJSb3cpIGNoYW5nZUlucHV0KCdzZWFyY2hfY29sdW1ucycsIGZpbHRlclJvdy50b0FycmF5KCkubWFwKGZ1bmN0aW9uKHRkKSB7CiAgICAgICAgcmV0dXJuICQodGQpLmZpbmQoJ2lucHV0JykuZmlyc3QoKS52YWwoKTsKICAgICAgfSkpOwogICAgfQogICAgdGFibGUub24oJ2RyYXcuZHQnLCB1cGRhdGVTZWFyY2hJbmZvKTsKICAgIHVwZGF0ZVNlYXJjaEluZm8oKTsKCiAgICB2YXIgY2VsbEluZm8gPSBmdW5jdGlvbih0aGl6KSB7CiAgICAgIHZhciBpbmZvID0gdHdlYWtDZWxsSW5kZXgodGFibGUuY2VsbCh0aGl6KSk7CiAgICAgIGluZm8udmFsdWUgPSB0YWJsZS5jZWxsKHRoaXopLmRhdGEoKTsKICAgICAgcmV0dXJuIGluZm87CiAgICB9CiAgICAvLyB0aGUgY3VycmVudCBjZWxsIGNsaWNrZWQgb24KICAgIHRhYmxlLm9uKCdjbGljay5kdCcsICd0Ym9keSB0ZCcsIGZ1bmN0aW9uKCkgewogICAgICBjaGFuZ2VJbnB1dCgnY2VsbF9jbGlja2VkJywgY2VsbEluZm8odGhpcykpOwogICAgfSkKICAgIGNoYW5nZUlucHV0KCdjZWxsX2NsaWNrZWQnLCB7fSk7CgogICAgLy8gZG8gbm90IHRyaWdnZXIgdGFibGUgc2VsZWN0aW9uIHdoZW4gY2xpY2tpbmcgb24gbGlua3MgdW5sZXNzIHRoZXkgaGF2ZSBjbGFzc2VzCiAgICB0YWJsZS5vbignY2xpY2suZHQnLCAndGJvZHkgdGQgYScsIGZ1bmN0aW9uKGUpIHsKICAgICAgaWYgKHRoaXMuY2xhc3NOYW1lID09PSAnJykgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgIH0pOwoKICAgIG1ldGhvZHMuYWRkUm93ID0gZnVuY3Rpb24oZGF0YSwgcm93bmFtZSkgewogICAgICB2YXIgZGF0YTAgPSB0YWJsZS5yb3coMCkuZGF0YSgpLCBuID0gZGF0YTAubGVuZ3RoLCBkID0gbiAtIGRhdGEubGVuZ3RoOwogICAgICBpZiAoZCA9PT0gMSkgewogICAgICAgIGRhdGEgPSByb3duYW1lLmNvbmNhdChkYXRhKQogICAgICB9IGVsc2UgaWYgKGQgIT09IDApIHsKICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTsKICAgICAgICBjb25zb2xlLmxvZyhkYXRhMCk7CiAgICAgICAgdGhyb3cgJ05ldyBkYXRhIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoIGFzIGN1cnJlbnQgZGF0YSAoJyArIG4gKyAnKSc7CiAgICAgIH07CiAgICAgIHRhYmxlLnJvdy5hZGQoZGF0YSkuZHJhdygpOwogICAgfQoKICAgIG1ldGhvZHMudXBkYXRlU2VhcmNoID0gZnVuY3Rpb24oa2V5d29yZHMpIHsKICAgICAgaWYgKGtleXdvcmRzLmdsb2JhbCAhPT0gbnVsbCkKICAgICAgICAkKHRhYmxlLnRhYmxlKCkuY29udGFpbmVyKCkpLmZpbmQoJ2lucHV0W3R5cGU9c2VhcmNoXScpLmZpcnN0KCkKICAgICAgICAgICAgIC52YWwoa2V5d29yZHMuZ2xvYmFsKS50cmlnZ2VyKCdpbnB1dCcpOwogICAgICB2YXIgY29sdW1ucyA9IGtleXdvcmRzLmNvbHVtbnM7CiAgICAgIGlmICghZmlsdGVyUm93IHx8IGNvbHVtbnMgPT09IG51bGwpIHJldHVybjsKICAgICAgZmlsdGVyUm93LnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24odGQsIGkpIHsKICAgICAgICB2YXIgdiA9IHR5cGVvZiBjb2x1bW5zID09PSAnc3RyaW5nJyA/IGNvbHVtbnMgOiBjb2x1bW5zW2ldOwogICAgICAgIGlmICh0eXBlb2YgdiA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgIGNvbnNvbGUubG9nKCdUaGUgc2VhcmNoIGtleXdvcmQgZm9yIGNvbHVtbiAnICsgaSArICcgaXMgdW5kZWZpbmVkJykKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJCh0ZCkuZmluZCgnaW5wdXQnKS5maXJzdCgpLnZhbCh2KTsKICAgICAgICBzZWFyY2hDb2x1bW4oaSwgdik7CiAgICAgIH0pOwogICAgICB0YWJsZS5kcmF3KCk7CiAgICB9CgogICAgbWV0aG9kcy5zZWxlY3RQYWdlID0gZnVuY3Rpb24ocGFnZSkgewogICAgICBpZiAodGFibGUucGFnZS5pbmZvKCkucGFnZXMgPCBwYWdlIHx8IHBhZ2UgPCAxKSB7CiAgICAgICAgdGhyb3cgJ1NlbGVjdGVkIHBhZ2UgaXMgb3V0IG9mIHJhbmdlJzsKICAgICAgfTsKICAgICAgdGFibGUucGFnZShwYWdlIC0gMSkuZHJhdyhmYWxzZSk7CiAgICB9CgogICAgbWV0aG9kcy5yZWxvYWREYXRhID0gZnVuY3Rpb24ocmVzZXRQYWdpbmcsIGNsZWFyU2VsZWN0aW9uKSB7CiAgICAgIC8vIGVtcHR5IHNlbGVjdGlvbnMgZmlyc3QgaWYgbmVjZXNzYXJ5CiAgICAgIGlmIChtZXRob2RzLnNlbGVjdFJvd3MgJiYgaW5BcnJheSgncm93JywgY2xlYXJTZWxlY3Rpb24pKSBtZXRob2RzLnNlbGVjdFJvd3MoW10pOwogICAgICBpZiAobWV0aG9kcy5zZWxlY3RDb2x1bW5zICYmIGluQXJyYXkoJ2NvbHVtbicsIGNsZWFyU2VsZWN0aW9uKSkgbWV0aG9kcy5zZWxlY3RDb2x1bW5zKFtdKTsKICAgICAgaWYgKG1ldGhvZHMuc2VsZWN0Q2VsbHMgJiYgaW5BcnJheSgnY2VsbCcsIGNsZWFyU2VsZWN0aW9uKSkgbWV0aG9kcy5zZWxlY3RDZWxscyhbXSk7CiAgICAgIHRhYmxlLmFqYXgucmVsb2FkKG51bGwsIHJlc2V0UGFnaW5nKTsKICAgIH0KCiAgICB0YWJsZS5zaGlueU1ldGhvZHMgPSBtZXRob2RzOwogIH0sCiAgcmVzaXplOiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCwgaW5zdGFuY2UpIHsKICAgIGlmIChpbnN0YW5jZS5kYXRhKSB0aGlzLnJlbmRlclZhbHVlKGVsLCBpbnN0YW5jZS5kYXRhLCBpbnN0YW5jZSk7CgogICAgLy8gZHluYW1pY2FsbHkgYWRqdXN0IGhlaWdodCBpZiBmaWxsQ29udGFpbmVyID0gVFJVRQogICAgaWYgKGluc3RhbmNlLmZpbGxDb250YWluZXIpCiAgICAgIHRoaXMuZmlsbEF2YWlsYWJsZUhlaWdodChlbCwgaGVpZ2h0KTsKCiAgICB0aGlzLmFkanVzdFdpZHRoKGVsKTsKICB9LAoKICAvLyBkeW5hbWljYWxseSBzZXQgdGhlIHNjcm9sbCBib2R5IHRvIGZpbGwgYXZhaWxhYmxlIGhlaWdodAogIC8vICh1c2VkIHdpdGggZmlsbENvbnRhaW5lciA9IFRSVUUpCiAgZmlsbEF2YWlsYWJsZUhlaWdodDogZnVuY3Rpb24oZWwsIGF2YWlsYWJsZUhlaWdodCkgewoKICAgIC8vIHNlZSBob3cgbXVjaCBvZiB0aGUgdGFibGUgaXMgb2NjdXBpZWQgYnkgaGVhZGVyL2Zvb3RlciBlbGVtZW50cwogICAgLy8gYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgYSB0YXJnZXQgc2Nyb2xsIGJvZHkgaGVpZ2h0CiAgICB2YXIgZHRXcmFwcGVyID0gJChlbCkuZmluZCgnZGl2LmRhdGFUYWJsZXNfd3JhcHBlcicpOwogICAgdmFyIGR0U2Nyb2xsQm9keSA9ICQoZWwpLmZpbmQoJCgnZGl2LmRhdGFUYWJsZXNfc2Nyb2xsQm9keScpKTsKICAgIHZhciBmcmFtaW5nSGVpZ2h0ID0gZHRXcmFwcGVyLmlubmVySGVpZ2h0KCkgLSBkdFNjcm9sbEJvZHkuaW5uZXJIZWlnaHQoKTsKICAgIHZhciBzY3JvbGxCb2R5SGVpZ2h0ID0gYXZhaWxhYmxlSGVpZ2h0IC0gZnJhbWluZ0hlaWdodDsKCiAgICAvLyBzZXQgdGhlIGhlaWdodAogICAgZHRTY3JvbGxCb2R5LmhlaWdodChzY3JvbGxCb2R5SGVpZ2h0ICsgJ3B4Jyk7CiAgfSwKCiAgLy8gYWRqdXN0IHRoZSB3aWR0aCBvZiBjb2x1bW5zOyByZW1vdmUgdGhlIGhhcmQtY29kZWQgd2lkdGhzIG9uIHRhYmxlIGFuZCB0aGUKICAvLyBzY3JvbGwgaGVhZGVyIHdoZW4gc2Nyb2xsWC9ZIGFyZSBlbmFibGVkCiAgYWRqdXN0V2lkdGg6IGZ1bmN0aW9uKGVsKSB7CiAgICB2YXIgJGVsID0gJChlbCksIHRhYmxlID0gJGVsLmRhdGEoJ2RhdGF0YWJsZScpOwogICAgaWYgKHRhYmxlKSB0YWJsZS5jb2x1bW5zLmFkanVzdCgpOwogICAgJGVsLmZpbmQoJy5kYXRhVGFibGVzX3Njcm9sbEhlYWRJbm5lcicpLmNzcygnd2lkdGgnLCAnJykKICAgICAgICAuY2hpbGRyZW4oJ3RhYmxlJykuY3NzKCdtYXJnaW4tbGVmdCcsICcnKTsKICB9Cn0pOwoKICBpZiAoIUhUTUxXaWRnZXRzLnNoaW55TW9kZSkgcmV0dXJuOwoKICBTaGlueS5hZGRDdXN0b21NZXNzYWdlSGFuZGxlcignZGF0YXRhYmxlLWNhbGxzJywgZnVuY3Rpb24oZGF0YSkgewogICAgdmFyIGlkID0gZGF0YS5pZDsKICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgIHZhciB0YWJsZSA9IGVsID8gJChlbCkuZGF0YSgnZGF0YXRhYmxlJykgOiBudWxsOwogICAgaWYgKCF0YWJsZSkgewogICAgICBjb25zb2xlLmxvZygiQ291bGRuJ3QgZmluZCB0YWJsZSB3aXRoIGlkICIgKyBpZCk7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgbWV0aG9kcyA9IHRhYmxlLnNoaW55TWV0aG9kcywgY2FsbCA9IGRhdGEuY2FsbDsKICAgIGlmIChtZXRob2RzW2NhbGwubWV0aG9kXSkgewogICAgICBtZXRob2RzW2NhbGwubWV0aG9kXS5hcHBseSh0YWJsZSwgY2FsbC5hcmdzKTsKICAgIH0gZWxzZSB7CiAgICAgIGNvbnNvbGUubG9nKCJVbmtub3duIG1ldGhvZCAiICsgY2FsbC5tZXRob2QpOwogICAgfQogIH0pOwoKfSkoKTsK"></script>
<link href="data:text/css;charset=utf-8,table%2EdataTable%7Bwidth%3A100%25%3Bmargin%3A0%20auto%3Bclear%3Aboth%3Bborder%2Dcollapse%3Aseparate%3Bborder%2Dspacing%3A0%7Dtable%2EdataTable%20thead%20th%2Ctable%2EdataTable%20tfoot%20th%7Bfont%2Dweight%3Abold%7Dtable%2EdataTable%20thead%20th%2Ctable%2EdataTable%20thead%20td%7Bpadding%3A10px%2018px%3Bborder%2Dbottom%3A1px%20solid%20%23111%7Dtable%2EdataTable%20thead%20th%3Aactive%2Ctable%2EdataTable%20thead%20td%3Aactive%7Boutline%3Anone%7Dtable%2EdataTable%20tfoot%20th%2Ctable%2EdataTable%20tfoot%20td%7Bpadding%3A10px%2018px%206px%2018px%3Bborder%2Dtop%3A1px%20solid%20%23111%7Dtable%2EdataTable%20thead%20%2Esorting%2Ctable%2EdataTable%20thead%20%2Esorting%5Fasc%2Ctable%2EdataTable%20thead%20%2Esorting%5Fdesc%2Ctable%2EdataTable%20thead%20%2Esorting%5Fasc%5Fdisabled%2Ctable%2EdataTable%20thead%20%2Esorting%5Fdesc%5Fdisabled%7Bcursor%3Apointer%3B%2Acursor%3Ahand%3Bbackground%2Drepeat%3Ano%2Drepeat%3Bbackground%2Dposition%3Acenter%20right%7Dtable%2EdataTable%20thead%20%2Esorting%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7XQMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL%2BTq%2FQCM1oNiJidwox0355mXnG%2FDrEtIQ6azioNZQxI0ykPhTQIwhCR%2BBmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P%2BGtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fasc%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS%2FgDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM%2BwTENuQahAvEO9DMwiGdwAxOymGJQLxTyD%2BjgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg%3D%3D%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fdesc%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA%2FBOIv2PBIPFEUgxjB%2BIdQPwfC94HxLykus4GiD%2BhGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL%2BAuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII%3D%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fasc%5Fdisabled%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAW0lEQVQoz2NgoCm4w3Vnwh02wspK7%2Fy6k01Ikdadx3f%2B37l9RxmfIsY7c4GKQHDiHUbcyhzvvIMq%2B3THBpci3jv7oIpAcMcdduzKEu%2F8vPMdDn%2FeiWQYBYMKAAC3ykIEuYQJUgAAAABJRU5ErkJggg%3D%3D%29%7Dtable%2EdataTable%20thead%20%2Esorting%5Fdesc%5Fdisabled%7Bbackground%2Dimage%3Aurl%28data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAWUlEQVQoz2NgGAWDCtyJvPPzznc4%2FHknEbsy9js77vyHw313eHGZZ3PnE1TRuzuOuK1lvDMRqmzuHUZ87lO%2Bcxuo6PEdLUIeyb7z604pYf%2By3Zlwh4u2YQoAc7ZCBHH4jigAAAAASUVORK5CYII%3D%29%7Dtable%2EdataTable%20tbody%20tr%7Bbackground%2Dcolor%3A%23ffffff%7Dtable%2EdataTable%20tbody%20tr%2Eselected%7Bbackground%2Dcolor%3A%23B0BED9%7Dtable%2EdataTable%20tbody%20th%2Ctable%2EdataTable%20tbody%20td%7Bpadding%3A8px%2010px%7Dtable%2EdataTable%2Erow%2Dborder%20tbody%20th%2Ctable%2EdataTable%2Erow%2Dborder%20tbody%20td%2Ctable%2EdataTable%2Edisplay%20tbody%20th%2Ctable%2EdataTable%2Edisplay%20tbody%20td%7Bborder%2Dtop%3A1px%20solid%20%23ddd%7Dtable%2EdataTable%2Erow%2Dborder%20tbody%20tr%3Afirst%2Dchild%20th%2Ctable%2EdataTable%2Erow%2Dborder%20tbody%20tr%3Afirst%2Dchild%20td%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Afirst%2Dchild%20th%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Afirst%2Dchild%20td%7Bborder%2Dtop%3Anone%7Dtable%2EdataTable%2Ecell%2Dborder%20tbody%20th%2Ctable%2EdataTable%2Ecell%2Dborder%20tbody%20td%7Bborder%2Dtop%3A1px%20solid%20%23ddd%3Bborder%2Dright%3A1px%20solid%20%23ddd%7Dtable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%20th%3Afirst%2Dchild%2Ctable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%20td%3Afirst%2Dchild%7Bborder%2Dleft%3A1px%20solid%20%23ddd%7Dtable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%3Afirst%2Dchild%20th%2Ctable%2EdataTable%2Ecell%2Dborder%20tbody%20tr%3Afirst%2Dchild%20td%7Bborder%2Dtop%3Anone%7Dtable%2EdataTable%2Estripe%20tbody%20tr%2Eodd%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%7Bbackground%2Dcolor%3A%23f9f9f9%7Dtable%2EdataTable%2Estripe%20tbody%20tr%2Eodd%2Eselected%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%7Bbackground%2Dcolor%3A%23acbad4%7Dtable%2EdataTable%2Ehover%20tbody%20tr%3Ahover%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%7Bbackground%2Dcolor%3A%23f6f6f6%7Dtable%2EdataTable%2Ehover%20tbody%20tr%3Ahover%2Eselected%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%7Bbackground%2Dcolor%3A%23aab7d1%7Dtable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%3E%2Esorting%5F3%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3E%2Esorting%5F1%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3E%2Esorting%5F2%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23fafafa%7Dtable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%20tbody%20tr%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Edisplay%20tbody%20tr%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23acbad5%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23f1f1f1%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23f3f3f3%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%3E%2Esorting%5F3%7Bbackground%2Dcolor%3Awhitesmoke%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23a6b4cd%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23a8b5cf%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eodd%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23a9b7d1%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23fafafa%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23fcfcfc%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23fefefe%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23acbad5%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23aebcd6%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Estripe%20tbody%20tr%2Eeven%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23afbdd8%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23eaeaea%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23ececec%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23efefef%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F1%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F1%7Bbackground%2Dcolor%3A%23a2aec7%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F2%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F2%7Bbackground%2Dcolor%3A%23a3b0c9%7Dtable%2EdataTable%2Edisplay%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F3%2Ctable%2EdataTable%2Eorder%2Dcolumn%2Ehover%20tbody%20tr%3Ahover%2Eselected%3E%2Esorting%5F3%7Bbackground%2Dcolor%3A%23a5b2cb%7Dtable%2EdataTable%2Eno%2Dfooter%7Bborder%2Dbottom%3A1px%20solid%20%23111%7Dtable%2EdataTable%2Enowrap%20th%2Ctable%2EdataTable%2Enowrap%20td%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%2Ecompact%20thead%20th%2Ctable%2EdataTable%2Ecompact%20thead%20td%7Bpadding%3A4px%2017px%204px%204px%7Dtable%2EdataTable%2Ecompact%20tfoot%20th%2Ctable%2EdataTable%2Ecompact%20tfoot%20td%7Bpadding%3A4px%7Dtable%2EdataTable%2Ecompact%20tbody%20th%2Ctable%2EdataTable%2Ecompact%20tbody%20td%7Bpadding%3A4px%7Dtable%2EdataTable%20th%2Edt%2Dleft%2Ctable%2EdataTable%20td%2Edt%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20th%2Edt%2Dcenter%2Ctable%2EdataTable%20td%2Edt%2Dcenter%2Ctable%2EdataTable%20td%2EdataTables%5Fempty%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20th%2Edt%2Dright%2Ctable%2EdataTable%20td%2Edt%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20th%2Edt%2Djustify%2Ctable%2EdataTable%20td%2Edt%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20th%2Edt%2Dnowrap%2Ctable%2EdataTable%20td%2Edt%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dleft%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dcenter%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dcenter%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dright%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Djustify%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20thead%20th%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20thead%20td%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20tfoot%20th%2Edt%2Dhead%2Dnowrap%2Ctable%2EdataTable%20tfoot%20td%2Edt%2Dhead%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dleft%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dleft%7Btext%2Dalign%3Aleft%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dcenter%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dcenter%7Btext%2Dalign%3Acenter%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dright%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dright%7Btext%2Dalign%3Aright%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Djustify%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Djustify%7Btext%2Dalign%3Ajustify%7Dtable%2EdataTable%20tbody%20th%2Edt%2Dbody%2Dnowrap%2Ctable%2EdataTable%20tbody%20td%2Edt%2Dbody%2Dnowrap%7Bwhite%2Dspace%3Anowrap%7Dtable%2EdataTable%2Ctable%2EdataTable%20th%2Ctable%2EdataTable%20td%7Bbox%2Dsizing%3Acontent%2Dbox%7D%2EdataTables%5Fwrapper%7Bposition%3Arelative%3Bclear%3Aboth%3B%2Azoom%3A1%3Bzoom%3A1%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%7Bfloat%3Aleft%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bfloat%3Aright%3Btext%2Dalign%3Aright%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%20input%7Bmargin%2Dleft%3A0%2E5em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%7Bclear%3Aboth%3Bfloat%3Aleft%3Bpadding%2Dtop%3A0%2E755em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bfloat%3Aright%3Btext%2Dalign%3Aright%3Bpadding%2Dtop%3A0%2E25em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%7Bbox%2Dsizing%3Aborder%2Dbox%3Bdisplay%3Ainline%2Dblock%3Bmin%2Dwidth%3A1%2E5em%3Bpadding%3A0%2E5em%201em%3Bmargin%2Dleft%3A2px%3Btext%2Dalign%3Acenter%3Btext%2Ddecoration%3Anone%20%21important%3Bcursor%3Apointer%3B%2Acursor%3Ahand%3Bcolor%3A%23333%20%21important%3Bborder%3A1px%20solid%20transparent%3Bborder%2Dradius%3A2px%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Ecurrent%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Ecurrent%3Ahover%7Bcolor%3A%23333%20%21important%3Bborder%3A1px%20solid%20%23979797%3Bbackground%2Dcolor%3Awhite%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%23fff%29%2C%20color%2Dstop%28100%25%2C%20%23dcdcdc%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%23fff%200%25%2C%20%23dcdcdc%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%3Ahover%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%2Edisabled%3Aactive%7Bcursor%3Adefault%3Bcolor%3A%23666%20%21important%3Bborder%3A1px%20solid%20transparent%3Bbackground%3Atransparent%3Bbox%2Dshadow%3Anone%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%3Ahover%7Bcolor%3Awhite%20%21important%3Bborder%3A1px%20solid%20%23111%3Bbackground%2Dcolor%3A%23585858%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%23585858%29%2C%20color%2Dstop%28100%25%2C%20%23111%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%23585858%200%25%2C%20%23111%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%23585858%200%25%2C%20%23111%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Epaginate%5Fbutton%3Aactive%7Boutline%3Anone%3Bbackground%2Dcolor%3A%232b2b2b%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20left%20bottom%2C%20color%2Dstop%280%25%2C%20%232b2b2b%29%2C%20color%2Dstop%28100%25%2C%20%230c0c0c%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28top%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20bottom%2C%20%232b2b2b%200%25%2C%20%230c0c0c%20100%25%29%3Bbox%2Dshadow%3Ainset%200%200%203px%20%23111%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%20%2Eellipsis%7Bpadding%3A0%201em%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fprocessing%7Bposition%3Aabsolute%3Btop%3A50%25%3Bleft%3A50%25%3Bwidth%3A100%25%3Bheight%3A40px%3Bmargin%2Dleft%3A%2D50%25%3Bmargin%2Dtop%3A%2D25px%3Bpadding%2Dtop%3A20px%3Btext%2Dalign%3Acenter%3Bfont%2Dsize%3A1%2E2em%3Bbackground%2Dcolor%3Awhite%3Bbackground%3A%2Dwebkit%2Dgradient%28linear%2C%20left%20top%2C%20right%20top%2C%20color%2Dstop%280%25%2C%20rgba%28255%2C255%2C255%2C0%29%29%2C%20color%2Dstop%2825%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%29%2C%20color%2Dstop%2875%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%29%2C%20color%2Dstop%28100%25%2C%20rgba%28255%2C255%2C255%2C0%29%29%29%3Bbackground%3A%2Dwebkit%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3A%2Dmoz%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3A%2Dms%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3A%2Do%2Dlinear%2Dgradient%28left%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%3Bbackground%3Alinear%2Dgradient%28to%20right%2C%20rgba%28255%2C255%2C255%2C0%29%200%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2025%25%2C%20rgba%28255%2C255%2C255%2C0%2E9%29%2075%25%2C%20rgba%28255%2C255%2C255%2C0%29%20100%25%29%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fprocessing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bcolor%3A%23333%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%7Bclear%3Aboth%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%7B%2Amargin%2Dtop%3A%2D1px%3B%2Dwebkit%2Doverflow%2Dscrolling%3Atouch%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Eth%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Etd%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Eth%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Etd%7Bvertical%2Dalign%3Amiddle%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Eth%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Ethead%3Etr%3Etd%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Eth%3Ediv%2EdataTables%5Fsizing%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fscroll%20div%2EdataTables%5FscrollBody%3Etable%3Etbody%3Etr%3Etd%3Ediv%2EdataTables%5Fsizing%7Bheight%3A0%3Boverflow%3Ahidden%3Bmargin%3A0%20%21important%3Bpadding%3A0%20%21important%7D%2EdataTables%5Fwrapper%2Eno%2Dfooter%20%2EdataTables%5FscrollBody%7Bborder%2Dbottom%3A1px%20solid%20%23111%7D%2EdataTables%5Fwrapper%2Eno%2Dfooter%20div%2EdataTables%5FscrollHead%20table%2EdataTable%2C%2EdataTables%5Fwrapper%2Eno%2Dfooter%20div%2EdataTables%5FscrollBody%3Etable%7Bborder%2Dbottom%3Anone%7D%2EdataTables%5Fwrapper%3Aafter%7Bvisibility%3Ahidden%3Bdisplay%3Ablock%3Bcontent%3A%22%22%3Bclear%3Aboth%3Bheight%3A0%7D%40media%20screen%20and%20%28max%2Dwidth%3A%20767px%29%7B%2EdataTables%5Fwrapper%20%2EdataTables%5Finfo%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bfloat%3Anone%3Btext%2Dalign%3Acenter%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Fpaginate%7Bmargin%2Dtop%3A0%2E5em%7D%7D%40media%20screen%20and%20%28max%2Dwidth%3A%20640px%29%7B%2EdataTables%5Fwrapper%20%2EdataTables%5Flength%2C%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bfloat%3Anone%3Btext%2Dalign%3Acenter%7D%2EdataTables%5Fwrapper%20%2EdataTables%5Ffilter%7Bmargin%2Dtop%3A0%2E5em%7D%7D%0A" rel="stylesheet" />
<link href="data:text/css;charset=utf-8,%0Atable%2EdataTable%20tr%2Eselected%20td%2C%20table%2EdataTable%20td%2Eselected%20%7B%0Abackground%2Dcolor%3A%20%23b0bed9%20%21important%3B%0A%7D%0A%0A%2EdataTables%5FscrollBody%20%2EdataTables%5Fsizing%20%7B%0Avisibility%3A%20hidden%3B%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,LyohCiBEYXRhVGFibGVzIDEuMTAuMTYKIMKpMjAwOC0yMDE3IFNwcnlNZWRpYSBMdGQgLSBkYXRhdGFibGVzLm5ldC9saWNlbnNlCiovCihmdW5jdGlvbihoKXsiZnVuY3Rpb24iPT09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoWyJqcXVlcnkiXSxmdW5jdGlvbihFKXtyZXR1cm4gaChFLHdpbmRvdyxkb2N1bWVudCl9KToib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzP21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKEUsRyl7RXx8KEU9d2luZG93KTtHfHwoRz0idW5kZWZpbmVkIiE9PXR5cGVvZiB3aW5kb3c/cmVxdWlyZSgianF1ZXJ5Iik6cmVxdWlyZSgianF1ZXJ5IikoRSkpO3JldHVybiBoKEcsRSxFLmRvY3VtZW50KX06aChqUXVlcnksd2luZG93LGRvY3VtZW50KX0pKGZ1bmN0aW9uKGgsRSxHLGspe2Z1bmN0aW9uIFgoYSl7dmFyIGIsYyxkPXt9O2guZWFjaChhLGZ1bmN0aW9uKGUpe2lmKChiPWUubWF0Y2goL14oW15BLVpdKz8pKFtBLVpdKS8pKSYmLTEhPT0iYSBhYSBhaSBhbyBhcyBiIGZuIGkgbSBvIHMgIi5pbmRleE9mKGJbMV0rIiAiKSljPWUucmVwbGFjZShiWzBdLGJbMl0udG9Mb3dlckNhc2UoKSksCmRbY109ZSwibyI9PT1iWzFdJiZYKGFbZV0pfSk7YS5faHVuZ2FyaWFuTWFwPWR9ZnVuY3Rpb24gSShhLGIsYyl7YS5faHVuZ2FyaWFuTWFwfHxYKGEpO3ZhciBkO2guZWFjaChiLGZ1bmN0aW9uKGUpe2Q9YS5faHVuZ2FyaWFuTWFwW2VdO2lmKGQhPT1rJiYoY3x8YltkXT09PWspKSJvIj09PWQuY2hhckF0KDApPyhiW2RdfHwoYltkXT17fSksaC5leHRlbmQoITAsYltkXSxiW2VdKSxJKGFbZF0sYltkXSxjKSk6YltkXT1iW2VdfSl9ZnVuY3Rpb24gQ2EoYSl7dmFyIGI9bS5kZWZhdWx0cy5vTGFuZ3VhZ2UsYz1hLnNaZXJvUmVjb3JkczshYS5zRW1wdHlUYWJsZSYmKGMmJiJObyBkYXRhIGF2YWlsYWJsZSBpbiB0YWJsZSI9PT1iLnNFbXB0eVRhYmxlKSYmRihhLGEsInNaZXJvUmVjb3JkcyIsInNFbXB0eVRhYmxlIik7IWEuc0xvYWRpbmdSZWNvcmRzJiYoYyYmIkxvYWRpbmcuLi4iPT09Yi5zTG9hZGluZ1JlY29yZHMpJiZGKGEsYSwic1plcm9SZWNvcmRzIiwic0xvYWRpbmdSZWNvcmRzIik7CmEuc0luZm9UaG91c2FuZHMmJihhLnNUaG91c2FuZHM9YS5zSW5mb1Rob3VzYW5kcyk7KGE9YS5zRGVjaW1hbCkmJmNiKGEpfWZ1bmN0aW9uIGRiKGEpe0EoYSwib3JkZXJpbmciLCJiU29ydCIpO0EoYSwib3JkZXJNdWx0aSIsImJTb3J0TXVsdGkiKTtBKGEsIm9yZGVyQ2xhc3NlcyIsImJTb3J0Q2xhc3NlcyIpO0EoYSwib3JkZXJDZWxsc1RvcCIsImJTb3J0Q2VsbHNUb3AiKTtBKGEsIm9yZGVyIiwiYWFTb3J0aW5nIik7QShhLCJvcmRlckZpeGVkIiwiYWFTb3J0aW5nRml4ZWQiKTtBKGEsInBhZ2luZyIsImJQYWdpbmF0ZSIpO0EoYSwicGFnaW5nVHlwZSIsInNQYWdpbmF0aW9uVHlwZSIpO0EoYSwicGFnZUxlbmd0aCIsImlEaXNwbGF5TGVuZ3RoIik7QShhLCJzZWFyY2hpbmciLCJiRmlsdGVyIik7ImJvb2xlYW4iPT09dHlwZW9mIGEuc1Njcm9sbFgmJihhLnNTY3JvbGxYPWEuc1Njcm9sbFg/IjEwMCUiOiIiKTsiYm9vbGVhbiI9PT10eXBlb2YgYS5zY3JvbGxYJiYoYS5zY3JvbGxYPQphLnNjcm9sbFg/IjEwMCUiOiIiKTtpZihhPWEuYW9TZWFyY2hDb2xzKWZvcih2YXIgYj0wLGM9YS5sZW5ndGg7YjxjO2IrKylhW2JdJiZJKG0ubW9kZWxzLm9TZWFyY2gsYVtiXSl9ZnVuY3Rpb24gZWIoYSl7QShhLCJvcmRlcmFibGUiLCJiU29ydGFibGUiKTtBKGEsIm9yZGVyRGF0YSIsImFEYXRhU29ydCIpO0EoYSwib3JkZXJTZXF1ZW5jZSIsImFzU29ydGluZyIpO0EoYSwib3JkZXJEYXRhVHlwZSIsInNvcnREYXRhVHlwZSIpO3ZhciBiPWEuYURhdGFTb3J0OyJudW1iZXIiPT09dHlwZW9mIGImJiFoLmlzQXJyYXkoYikmJihhLmFEYXRhU29ydD1bYl0pfWZ1bmN0aW9uIGZiKGEpe2lmKCFtLl9fYnJvd3Nlcil7dmFyIGI9e307bS5fX2Jyb3dzZXI9Yjt2YXIgYz1oKCI8ZGl2Lz4iKS5jc3Moe3Bvc2l0aW9uOiJmaXhlZCIsdG9wOjAsbGVmdDotMSpoKEUpLnNjcm9sbExlZnQoKSxoZWlnaHQ6MSx3aWR0aDoxLG92ZXJmbG93OiJoaWRkZW4ifSkuYXBwZW5kKGgoIjxkaXYvPiIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIiwKdG9wOjEsbGVmdDoxLHdpZHRoOjEwMCxvdmVyZmxvdzoic2Nyb2xsIn0pLmFwcGVuZChoKCI8ZGl2Lz4iKS5jc3Moe3dpZHRoOiIxMDAlIixoZWlnaHQ6MTB9KSkpLmFwcGVuZFRvKCJib2R5IiksZD1jLmNoaWxkcmVuKCksZT1kLmNoaWxkcmVuKCk7Yi5iYXJXaWR0aD1kWzBdLm9mZnNldFdpZHRoLWRbMF0uY2xpZW50V2lkdGg7Yi5iU2Nyb2xsT3ZlcnNpemU9MTAwPT09ZVswXS5vZmZzZXRXaWR0aCYmMTAwIT09ZFswXS5jbGllbnRXaWR0aDtiLmJTY3JvbGxiYXJMZWZ0PTEhPT1NYXRoLnJvdW5kKGUub2Zmc2V0KCkubGVmdCk7Yi5iQm91bmRpbmc9Y1swXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aD8hMDohMTtjLnJlbW92ZSgpfWguZXh0ZW5kKGEub0Jyb3dzZXIsbS5fX2Jyb3dzZXIpO2Eub1Njcm9sbC5pQmFyV2lkdGg9bS5fX2Jyb3dzZXIuYmFyV2lkdGh9ZnVuY3Rpb24gZ2IoYSxiLGMsZCxlLGYpe3ZhciBnLGo9ITE7YyE9PWsmJihnPWMsaj0hMCk7Zm9yKDtkIT09CmU7KWEuaGFzT3duUHJvcGVydHkoZCkmJihnPWo/YihnLGFbZF0sZCxhKTphW2RdLGo9ITAsZCs9Zik7cmV0dXJuIGd9ZnVuY3Rpb24gRGEoYSxiKXt2YXIgYz1tLmRlZmF1bHRzLmNvbHVtbixkPWEuYW9Db2x1bW5zLmxlbmd0aCxjPWguZXh0ZW5kKHt9LG0ubW9kZWxzLm9Db2x1bW4sYyx7blRoOmI/YjpHLmNyZWF0ZUVsZW1lbnQoInRoIiksc1RpdGxlOmMuc1RpdGxlP2Muc1RpdGxlOmI/Yi5pbm5lckhUTUw6IiIsYURhdGFTb3J0OmMuYURhdGFTb3J0P2MuYURhdGFTb3J0OltkXSxtRGF0YTpjLm1EYXRhP2MubURhdGE6ZCxpZHg6ZH0pO2EuYW9Db2x1bW5zLnB1c2goYyk7Yz1hLmFvUHJlU2VhcmNoQ29scztjW2RdPWguZXh0ZW5kKHt9LG0ubW9kZWxzLm9TZWFyY2gsY1tkXSk7amEoYSxkLGgoYikuZGF0YSgpKX1mdW5jdGlvbiBqYShhLGIsYyl7dmFyIGI9YS5hb0NvbHVtbnNbYl0sZD1hLm9DbGFzc2VzLGU9aChiLm5UaCk7aWYoIWIuc1dpZHRoT3JpZyl7Yi5zV2lkdGhPcmlnPQplLmF0dHIoIndpZHRoIil8fG51bGw7dmFyIGY9KGUuYXR0cigic3R5bGUiKXx8IiIpLm1hdGNoKC93aWR0aDpccyooXGQrW3B4ZW0lXSspLyk7ZiYmKGIuc1dpZHRoT3JpZz1mWzFdKX1jIT09ayYmbnVsbCE9PWMmJihlYihjKSxJKG0uZGVmYXVsdHMuY29sdW1uLGMpLGMubURhdGFQcm9wIT09ayYmIWMubURhdGEmJihjLm1EYXRhPWMubURhdGFQcm9wKSxjLnNUeXBlJiYoYi5fc01hbnVhbFR5cGU9Yy5zVHlwZSksYy5jbGFzc05hbWUmJiFjLnNDbGFzcyYmKGMuc0NsYXNzPWMuY2xhc3NOYW1lKSxjLnNDbGFzcyYmZS5hZGRDbGFzcyhjLnNDbGFzcyksaC5leHRlbmQoYixjKSxGKGIsYywic1dpZHRoIiwic1dpZHRoT3JpZyIpLGMuaURhdGFTb3J0IT09ayYmKGIuYURhdGFTb3J0PVtjLmlEYXRhU29ydF0pLEYoYixjLCJhRGF0YVNvcnQiKSk7dmFyIGc9Yi5tRGF0YSxqPVEoZyksaT1iLm1SZW5kZXI/UShiLm1SZW5kZXIpOm51bGwsYz1mdW5jdGlvbihhKXtyZXR1cm4ic3RyaW5nIj09PQp0eXBlb2YgYSYmLTEhPT1hLmluZGV4T2YoIkAiKX07Yi5fYkF0dHJTcmM9aC5pc1BsYWluT2JqZWN0KGcpJiYoYyhnLnNvcnQpfHxjKGcudHlwZSl8fGMoZy5maWx0ZXIpKTtiLl9zZXR0ZXI9bnVsbDtiLmZuR2V0RGF0YT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9aihhLGIsayxjKTtyZXR1cm4gaSYmYj9pKGQsYixhLGMpOmR9O2IuZm5TZXREYXRhPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gUihnKShhLGIsYyl9OyJudW1iZXIiIT09dHlwZW9mIGcmJihhLl9yb3dSZWFkT2JqZWN0PSEwKTthLm9GZWF0dXJlcy5iU29ydHx8KGIuYlNvcnRhYmxlPSExLGUuYWRkQ2xhc3MoZC5zU29ydGFibGVOb25lKSk7YT0tMSE9PWguaW5BcnJheSgiYXNjIixiLmFzU29ydGluZyk7Yz0tMSE9PWguaW5BcnJheSgiZGVzYyIsYi5hc1NvcnRpbmcpOyFiLmJTb3J0YWJsZXx8IWEmJiFjPyhiLnNTb3J0aW5nQ2xhc3M9ZC5zU29ydGFibGVOb25lLGIuc1NvcnRpbmdDbGFzc0pVST0iIik6YSYmIWM/KGIuc1NvcnRpbmdDbGFzcz0KZC5zU29ydGFibGVBc2MsYi5zU29ydGluZ0NsYXNzSlVJPWQuc1NvcnRKVUlBc2NBbGxvd2VkKTohYSYmYz8oYi5zU29ydGluZ0NsYXNzPWQuc1NvcnRhYmxlRGVzYyxiLnNTb3J0aW5nQ2xhc3NKVUk9ZC5zU29ydEpVSURlc2NBbGxvd2VkKTooYi5zU29ydGluZ0NsYXNzPWQuc1NvcnRhYmxlLGIuc1NvcnRpbmdDbGFzc0pVST1kLnNTb3J0SlVJKX1mdW5jdGlvbiBZKGEpe2lmKCExIT09YS5vRmVhdHVyZXMuYkF1dG9XaWR0aCl7dmFyIGI9YS5hb0NvbHVtbnM7RWEoYSk7Zm9yKHZhciBjPTAsZD1iLmxlbmd0aDtjPGQ7YysrKWJbY10ublRoLnN0eWxlLndpZHRoPWJbY10uc1dpZHRofWI9YS5vU2Nyb2xsOygiIiE9PWIuc1l8fCIiIT09Yi5zWCkmJmthKGEpO3IoYSxudWxsLCJjb2x1bW4tc2l6aW5nIixbYV0pfWZ1bmN0aW9uIFooYSxiKXt2YXIgYz1sYShhLCJiVmlzaWJsZSIpO3JldHVybiJudW1iZXIiPT09dHlwZW9mIGNbYl0/Y1tiXTpudWxsfWZ1bmN0aW9uICQoYSxiKXt2YXIgYz0KbGEoYSwiYlZpc2libGUiKSxjPWguaW5BcnJheShiLGMpO3JldHVybi0xIT09Yz9jOm51bGx9ZnVuY3Rpb24gYWEoYSl7dmFyIGI9MDtoLmVhY2goYS5hb0NvbHVtbnMsZnVuY3Rpb24oYSxkKXtkLmJWaXNpYmxlJiYibm9uZSIhPT1oKGQublRoKS5jc3MoImRpc3BsYXkiKSYmYisrfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gbGEoYSxiKXt2YXIgYz1bXTtoLm1hcChhLmFvQ29sdW1ucyxmdW5jdGlvbihhLGUpe2FbYl0mJmMucHVzaChlKX0pO3JldHVybiBjfWZ1bmN0aW9uIEZhKGEpe3ZhciBiPWEuYW9Db2x1bW5zLGM9YS5hb0RhdGEsZD1tLmV4dC50eXBlLmRldGVjdCxlLGYsZyxqLGksaCxsLHEsdDtlPTA7Zm9yKGY9Yi5sZW5ndGg7ZTxmO2UrKylpZihsPWJbZV0sdD1bXSwhbC5zVHlwZSYmbC5fc01hbnVhbFR5cGUpbC5zVHlwZT1sLl9zTWFudWFsVHlwZTtlbHNlIGlmKCFsLnNUeXBlKXtnPTA7Zm9yKGo9ZC5sZW5ndGg7ZzxqO2crKyl7aT0wO2ZvcihoPWMubGVuZ3RoO2k8aDtpKyspe3RbaV09PT0KayYmKHRbaV09QihhLGksZSwidHlwZSIpKTtxPWRbZ10odFtpXSxhKTtpZighcSYmZyE9PWQubGVuZ3RoLTEpYnJlYWs7aWYoImh0bWwiPT09cSlicmVha31pZihxKXtsLnNUeXBlPXE7YnJlYWt9fWwuc1R5cGV8fChsLnNUeXBlPSJzdHJpbmciKX19ZnVuY3Rpb24gaGIoYSxiLGMsZCl7dmFyIGUsZixnLGosaSxuLGw9YS5hb0NvbHVtbnM7aWYoYilmb3IoZT1iLmxlbmd0aC0xOzA8PWU7ZS0tKXtuPWJbZV07dmFyIHE9bi50YXJnZXRzIT09az9uLnRhcmdldHM6bi5hVGFyZ2V0cztoLmlzQXJyYXkocSl8fChxPVtxXSk7Zj0wO2ZvcihnPXEubGVuZ3RoO2Y8ZztmKyspaWYoIm51bWJlciI9PT10eXBlb2YgcVtmXSYmMDw9cVtmXSl7Zm9yKDtsLmxlbmd0aDw9cVtmXTspRGEoYSk7ZChxW2ZdLG4pfWVsc2UgaWYoIm51bWJlciI9PT10eXBlb2YgcVtmXSYmMD5xW2ZdKWQobC5sZW5ndGgrcVtmXSxuKTtlbHNlIGlmKCJzdHJpbmciPT09dHlwZW9mIHFbZl0pe2o9MDtmb3IoaT1sLmxlbmd0aDtqPAppO2orKykoIl9hbGwiPT1xW2ZdfHxoKGxbal0ublRoKS5oYXNDbGFzcyhxW2ZdKSkmJmQoaixuKX19aWYoYyl7ZT0wO2ZvcihhPWMubGVuZ3RoO2U8YTtlKyspZChlLGNbZV0pfX1mdW5jdGlvbiBNKGEsYixjLGQpe3ZhciBlPWEuYW9EYXRhLmxlbmd0aCxmPWguZXh0ZW5kKCEwLHt9LG0ubW9kZWxzLm9Sb3cse3NyYzpjPyJkb20iOiJkYXRhIixpZHg6ZX0pO2YuX2FEYXRhPWI7YS5hb0RhdGEucHVzaChmKTtmb3IodmFyIGc9YS5hb0NvbHVtbnMsaj0wLGk9Zy5sZW5ndGg7ajxpO2orKylnW2pdLnNUeXBlPW51bGw7YS5haURpc3BsYXlNYXN0ZXIucHVzaChlKTtiPWEucm93SWRGbihiKTtiIT09ayYmKGEuYUlkc1tiXT1mKTsoY3x8IWEub0ZlYXR1cmVzLmJEZWZlclJlbmRlcikmJkdhKGEsZSxjLGQpO3JldHVybiBlfWZ1bmN0aW9uIG1hKGEsYil7dmFyIGM7YiBpbnN0YW5jZW9mIGh8fChiPWgoYikpO3JldHVybiBiLm1hcChmdW5jdGlvbihiLGUpe2M9SGEoYSxlKTtyZXR1cm4gTShhLApjLmRhdGEsZSxjLmNlbGxzKX0pfWZ1bmN0aW9uIEIoYSxiLGMsZCl7dmFyIGU9YS5pRHJhdyxmPWEuYW9Db2x1bW5zW2NdLGc9YS5hb0RhdGFbYl0uX2FEYXRhLGo9Zi5zRGVmYXVsdENvbnRlbnQsaT1mLmZuR2V0RGF0YShnLGQse3NldHRpbmdzOmEscm93OmIsY29sOmN9KTtpZihpPT09aylyZXR1cm4gYS5pRHJhd0Vycm9yIT1lJiZudWxsPT09aiYmKEooYSwwLCJSZXF1ZXN0ZWQgdW5rbm93biBwYXJhbWV0ZXIgIisoImZ1bmN0aW9uIj09dHlwZW9mIGYubURhdGE/IntmdW5jdGlvbn0iOiInIitmLm1EYXRhKyInIikrIiBmb3Igcm93ICIrYisiLCBjb2x1bW4gIitjLDQpLGEuaURyYXdFcnJvcj1lKSxqO2lmKChpPT09Z3x8bnVsbD09PWkpJiZudWxsIT09aiYmZCE9PWspaT1qO2Vsc2UgaWYoImZ1bmN0aW9uIj09PXR5cGVvZiBpKXJldHVybiBpLmNhbGwoZyk7cmV0dXJuIG51bGw9PT1pJiYiZGlzcGxheSI9PWQ/IiI6aX1mdW5jdGlvbiBpYihhLGIsYyxkKXthLmFvQ29sdW1uc1tjXS5mblNldERhdGEoYS5hb0RhdGFbYl0uX2FEYXRhLApkLHtzZXR0aW5nczphLHJvdzpiLGNvbDpjfSl9ZnVuY3Rpb24gSWEoYSl7cmV0dXJuIGgubWFwKGEubWF0Y2goLyhcXC58W15cLl0pKy9nKXx8WyIiXSxmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC9cXFwuL2csIi4iKX0pfWZ1bmN0aW9uIFEoYSl7aWYoaC5pc1BsYWluT2JqZWN0KGEpKXt2YXIgYj17fTtoLmVhY2goYSxmdW5jdGlvbihhLGMpe2MmJihiW2FdPVEoYykpfSk7cmV0dXJuIGZ1bmN0aW9uKGEsYyxmLGcpe3ZhciBqPWJbY118fGIuXztyZXR1cm4gaiE9PWs/aihhLGMsZixnKTphfX1pZihudWxsPT09YSlyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuIGF9O2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSlyZXR1cm4gZnVuY3Rpb24oYixjLGYsZyl7cmV0dXJuIGEoYixjLGYsZyl9O2lmKCJzdHJpbmciPT09dHlwZW9mIGEmJigtMSE9PWEuaW5kZXhPZigiLiIpfHwtMSE9PWEuaW5kZXhPZigiWyIpfHwtMSE9PWEuaW5kZXhPZigiKCIpKSl7dmFyIGM9ZnVuY3Rpb24oYSwKYixmKXt2YXIgZyxqO2lmKCIiIT09Zil7aj1JYShmKTtmb3IodmFyIGk9MCxuPWoubGVuZ3RoO2k8bjtpKyspe2Y9altpXS5tYXRjaChiYSk7Zz1qW2ldLm1hdGNoKFUpO2lmKGYpe2pbaV09altpXS5yZXBsYWNlKGJhLCIiKTsiIiE9PWpbaV0mJihhPWFbaltpXV0pO2c9W107ai5zcGxpY2UoMCxpKzEpO2o9ai5qb2luKCIuIik7aWYoaC5pc0FycmF5KGEpKXtpPTA7Zm9yKG49YS5sZW5ndGg7aTxuO2krKylnLnB1c2goYyhhW2ldLGIsaikpfWE9ZlswXS5zdWJzdHJpbmcoMSxmWzBdLmxlbmd0aC0xKTthPSIiPT09YT9nOmcuam9pbihhKTticmVha31lbHNlIGlmKGcpe2pbaV09altpXS5yZXBsYWNlKFUsIiIpO2E9YVtqW2ldXSgpO2NvbnRpbnVlfWlmKG51bGw9PT1hfHxhW2pbaV1dPT09aylyZXR1cm4gazthPWFbaltpXV19fXJldHVybiBhfTtyZXR1cm4gZnVuY3Rpb24oYixlKXtyZXR1cm4gYyhiLGUsYSl9fXJldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gYlthXX19ZnVuY3Rpb24gUihhKXtpZihoLmlzUGxhaW5PYmplY3QoYSkpcmV0dXJuIFIoYS5fKTsKaWYobnVsbD09PWEpcmV0dXJuIGZ1bmN0aW9uKCl7fTtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpcmV0dXJuIGZ1bmN0aW9uKGIsZCxlKXthKGIsInNldCIsZCxlKX07aWYoInN0cmluZyI9PT10eXBlb2YgYSYmKC0xIT09YS5pbmRleE9mKCIuIil8fC0xIT09YS5pbmRleE9mKCJbIil8fC0xIT09YS5pbmRleE9mKCIoIikpKXt2YXIgYj1mdW5jdGlvbihhLGQsZSl7dmFyIGU9SWEoZSksZjtmPWVbZS5sZW5ndGgtMV07Zm9yKHZhciBnLGosaT0wLG49ZS5sZW5ndGgtMTtpPG47aSsrKXtnPWVbaV0ubWF0Y2goYmEpO2o9ZVtpXS5tYXRjaChVKTtpZihnKXtlW2ldPWVbaV0ucmVwbGFjZShiYSwiIik7YVtlW2ldXT1bXTtmPWUuc2xpY2UoKTtmLnNwbGljZSgwLGkrMSk7Zz1mLmpvaW4oIi4iKTtpZihoLmlzQXJyYXkoZCkpe2o9MDtmb3Iobj1kLmxlbmd0aDtqPG47aisrKWY9e30sYihmLGRbal0sZyksYVtlW2ldXS5wdXNoKGYpfWVsc2UgYVtlW2ldXT1kO3JldHVybn1qJiYoZVtpXT1lW2ldLnJlcGxhY2UoVSwKIiIpLGE9YVtlW2ldXShkKSk7aWYobnVsbD09PWFbZVtpXV18fGFbZVtpXV09PT1rKWFbZVtpXV09e307YT1hW2VbaV1dfWlmKGYubWF0Y2goVSkpYVtmLnJlcGxhY2UoVSwiIildKGQpO2Vsc2UgYVtmLnJlcGxhY2UoYmEsIiIpXT1kfTtyZXR1cm4gZnVuY3Rpb24oYyxkKXtyZXR1cm4gYihjLGQsYSl9fXJldHVybiBmdW5jdGlvbihiLGQpe2JbYV09ZH19ZnVuY3Rpb24gSmEoYSl7cmV0dXJuIEQoYS5hb0RhdGEsIl9hRGF0YSIpfWZ1bmN0aW9uIG5hKGEpe2EuYW9EYXRhLmxlbmd0aD0wO2EuYWlEaXNwbGF5TWFzdGVyLmxlbmd0aD0wO2EuYWlEaXNwbGF5Lmxlbmd0aD0wO2EuYUlkcz17fX1mdW5jdGlvbiBvYShhLGIsYyl7Zm9yKHZhciBkPS0xLGU9MCxmPWEubGVuZ3RoO2U8ZjtlKyspYVtlXT09Yj9kPWU6YVtlXT5iJiZhW2VdLS07IC0xIT1kJiZjPT09ayYmYS5zcGxpY2UoZCwxKX1mdW5jdGlvbiBjYShhLGIsYyxkKXt2YXIgZT1hLmFvRGF0YVtiXSxmLGc9ZnVuY3Rpb24oYyxkKXtmb3IoO2MuY2hpbGROb2Rlcy5sZW5ndGg7KWMucmVtb3ZlQ2hpbGQoYy5maXJzdENoaWxkKTsKYy5pbm5lckhUTUw9QihhLGIsZCwiZGlzcGxheSIpfTtpZigiZG9tIj09PWN8fCghY3x8ImF1dG8iPT09YykmJiJkb20iPT09ZS5zcmMpZS5fYURhdGE9SGEoYSxlLGQsZD09PWs/azplLl9hRGF0YSkuZGF0YTtlbHNle3ZhciBqPWUuYW5DZWxscztpZihqKWlmKGQhPT1rKWcoaltkXSxkKTtlbHNle2M9MDtmb3IoZj1qLmxlbmd0aDtjPGY7YysrKWcoaltjXSxjKX19ZS5fYVNvcnREYXRhPW51bGw7ZS5fYUZpbHRlckRhdGE9bnVsbDtnPWEuYW9Db2x1bW5zO2lmKGQhPT1rKWdbZF0uc1R5cGU9bnVsbDtlbHNle2M9MDtmb3IoZj1nLmxlbmd0aDtjPGY7YysrKWdbY10uc1R5cGU9bnVsbDtLYShhLGUpfX1mdW5jdGlvbiBIYShhLGIsYyxkKXt2YXIgZT1bXSxmPWIuZmlyc3RDaGlsZCxnLGosaT0wLG4sbD1hLmFvQ29sdW1ucyxxPWEuX3Jvd1JlYWRPYmplY3QsZD1kIT09az9kOnE/e306W10sdD1mdW5jdGlvbihhLGIpe2lmKCJzdHJpbmciPT09dHlwZW9mIGEpe3ZhciBjPWEuaW5kZXhPZigiQCIpOwotMSE9PWMmJihjPWEuc3Vic3RyaW5nKGMrMSksUihhKShkLGIuZ2V0QXR0cmlidXRlKGMpKSl9fSxtPWZ1bmN0aW9uKGEpe2lmKGM9PT1rfHxjPT09aSlqPWxbaV0sbj1oLnRyaW0oYS5pbm5lckhUTUwpLGomJmouX2JBdHRyU3JjPyhSKGoubURhdGEuXykoZCxuKSx0KGoubURhdGEuc29ydCxhKSx0KGoubURhdGEudHlwZSxhKSx0KGoubURhdGEuZmlsdGVyLGEpKTpxPyhqLl9zZXR0ZXJ8fChqLl9zZXR0ZXI9UihqLm1EYXRhKSksai5fc2V0dGVyKGQsbikpOmRbaV09bjtpKyt9O2lmKGYpZm9yKDtmOyl7Zz1mLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk7aWYoIlREIj09Z3x8IlRIIj09ZyltKGYpLGUucHVzaChmKTtmPWYubmV4dFNpYmxpbmd9ZWxzZXtlPWIuYW5DZWxscztmPTA7Zm9yKGc9ZS5sZW5ndGg7ZjxnO2YrKyltKGVbZl0pfWlmKGI9Yi5maXJzdENoaWxkP2I6Yi5uVHIpKGI9Yi5nZXRBdHRyaWJ1dGUoImlkIikpJiZSKGEucm93SWQpKGQsYik7cmV0dXJue2RhdGE6ZCxjZWxsczplfX0KZnVuY3Rpb24gR2EoYSxiLGMsZCl7dmFyIGU9YS5hb0RhdGFbYl0sZj1lLl9hRGF0YSxnPVtdLGosaSxuLGwscTtpZihudWxsPT09ZS5uVHIpe2o9Y3x8Ry5jcmVhdGVFbGVtZW50KCJ0ciIpO2UublRyPWo7ZS5hbkNlbGxzPWc7ai5fRFRfUm93SW5kZXg9YjtLYShhLGUpO2w9MDtmb3IocT1hLmFvQ29sdW1ucy5sZW5ndGg7bDxxO2wrKyl7bj1hLmFvQ29sdW1uc1tsXTtpPWM/ZFtsXTpHLmNyZWF0ZUVsZW1lbnQobi5zQ2VsbFR5cGUpO2kuX0RUX0NlbGxJbmRleD17cm93OmIsY29sdW1uOmx9O2cucHVzaChpKTtpZigoIWN8fG4ubVJlbmRlcnx8bi5tRGF0YSE9PWwpJiYoIWguaXNQbGFpbk9iamVjdChuLm1EYXRhKXx8bi5tRGF0YS5fIT09bCsiLmRpc3BsYXkiKSlpLmlubmVySFRNTD1CKGEsYixsLCJkaXNwbGF5Iik7bi5zQ2xhc3MmJihpLmNsYXNzTmFtZSs9IiAiK24uc0NsYXNzKTtuLmJWaXNpYmxlJiYhYz9qLmFwcGVuZENoaWxkKGkpOiFuLmJWaXNpYmxlJiZjJiZpLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoaSk7Cm4uZm5DcmVhdGVkQ2VsbCYmbi5mbkNyZWF0ZWRDZWxsLmNhbGwoYS5vSW5zdGFuY2UsaSxCKGEsYixsKSxmLGIsbCl9cihhLCJhb1Jvd0NyZWF0ZWRDYWxsYmFjayIsbnVsbCxbaixmLGJdKX1lLm5Uci5zZXRBdHRyaWJ1dGUoInJvbGUiLCJyb3ciKX1mdW5jdGlvbiBLYShhLGIpe3ZhciBjPWIublRyLGQ9Yi5fYURhdGE7aWYoYyl7dmFyIGU9YS5yb3dJZEZuKGQpO2UmJihjLmlkPWUpO2QuRFRfUm93Q2xhc3MmJihlPWQuRFRfUm93Q2xhc3Muc3BsaXQoIiAiKSxiLl9fcm93Yz1iLl9fcm93Yz9xYShiLl9fcm93Yy5jb25jYXQoZSkpOmUsaChjKS5yZW1vdmVDbGFzcyhiLl9fcm93Yy5qb2luKCIgIikpLmFkZENsYXNzKGQuRFRfUm93Q2xhc3MpKTtkLkRUX1Jvd0F0dHImJmgoYykuYXR0cihkLkRUX1Jvd0F0dHIpO2QuRFRfUm93RGF0YSYmaChjKS5kYXRhKGQuRFRfUm93RGF0YSl9fWZ1bmN0aW9uIGpiKGEpe3ZhciBiLGMsZCxlLGYsZz1hLm5USGVhZCxqPWEublRGb290LGk9MD09PQpoKCJ0aCwgdGQiLGcpLmxlbmd0aCxuPWEub0NsYXNzZXMsbD1hLmFvQ29sdW1ucztpJiYoZT1oKCI8dHIvPiIpLmFwcGVuZFRvKGcpKTtiPTA7Zm9yKGM9bC5sZW5ndGg7YjxjO2IrKylmPWxbYl0sZD1oKGYublRoKS5hZGRDbGFzcyhmLnNDbGFzcyksaSYmZC5hcHBlbmRUbyhlKSxhLm9GZWF0dXJlcy5iU29ydCYmKGQuYWRkQ2xhc3MoZi5zU29ydGluZ0NsYXNzKSwhMSE9PWYuYlNvcnRhYmxlJiYoZC5hdHRyKCJ0YWJpbmRleCIsYS5pVGFiSW5kZXgpLmF0dHIoImFyaWEtY29udHJvbHMiLGEuc1RhYmxlSWQpLExhKGEsZi5uVGgsYikpKSxmLnNUaXRsZSE9ZFswXS5pbm5lckhUTUwmJmQuaHRtbChmLnNUaXRsZSksTWEoYSwiaGVhZGVyIikoYSxkLGYsbik7aSYmZGEoYS5hb0hlYWRlcixnKTtoKGcpLmZpbmQoIj50ciIpLmF0dHIoInJvbGUiLCJyb3ciKTtoKGcpLmZpbmQoIj50cj50aCwgPnRyPnRkIikuYWRkQ2xhc3Mobi5zSGVhZGVyVEgpO2goaikuZmluZCgiPnRyPnRoLCA+dHI+dGQiKS5hZGRDbGFzcyhuLnNGb290ZXJUSCk7CmlmKG51bGwhPT1qKXthPWEuYW9Gb290ZXJbMF07Yj0wO2ZvcihjPWEubGVuZ3RoO2I8YztiKyspZj1sW2JdLGYublRmPWFbYl0uY2VsbCxmLnNDbGFzcyYmaChmLm5UZikuYWRkQ2xhc3MoZi5zQ2xhc3MpfX1mdW5jdGlvbiBlYShhLGIsYyl7dmFyIGQsZSxmLGc9W10saj1bXSxpPWEuYW9Db2x1bW5zLmxlbmd0aCxuO2lmKGIpe2M9PT1rJiYoYz0hMSk7ZD0wO2ZvcihlPWIubGVuZ3RoO2Q8ZTtkKyspe2dbZF09YltkXS5zbGljZSgpO2dbZF0ublRyPWJbZF0ublRyO2ZvcihmPWktMTswPD1mO2YtLSkhYS5hb0NvbHVtbnNbZl0uYlZpc2libGUmJiFjJiZnW2RdLnNwbGljZShmLDEpO2oucHVzaChbXSl9ZD0wO2ZvcihlPWcubGVuZ3RoO2Q8ZTtkKyspe2lmKGE9Z1tkXS5uVHIpZm9yKDtmPWEuZmlyc3RDaGlsZDspYS5yZW1vdmVDaGlsZChmKTtmPTA7Zm9yKGI9Z1tkXS5sZW5ndGg7ZjxiO2YrKylpZihuPWk9MSxqW2RdW2ZdPT09ayl7YS5hcHBlbmRDaGlsZChnW2RdW2ZdLmNlbGwpOwpmb3IoaltkXVtmXT0xO2dbZCtpXSE9PWsmJmdbZF1bZl0uY2VsbD09Z1tkK2ldW2ZdLmNlbGw7KWpbZCtpXVtmXT0xLGkrKztmb3IoO2dbZF1bZituXSE9PWsmJmdbZF1bZl0uY2VsbD09Z1tkXVtmK25dLmNlbGw7KXtmb3IoYz0wO2M8aTtjKyspaltkK2NdW2Yrbl09MTtuKyt9aChnW2RdW2ZdLmNlbGwpLmF0dHIoInJvd3NwYW4iLGkpLmF0dHIoImNvbHNwYW4iLG4pfX19fWZ1bmN0aW9uIE4oYSl7dmFyIGI9cihhLCJhb1ByZURyYXdDYWxsYmFjayIsInByZURyYXciLFthXSk7aWYoLTEhPT1oLmluQXJyYXkoITEsYikpQyhhLCExKTtlbHNle3ZhciBiPVtdLGM9MCxkPWEuYXNTdHJpcGVDbGFzc2VzLGU9ZC5sZW5ndGgsZj1hLm9MYW5ndWFnZSxnPWEuaUluaXREaXNwbGF5U3RhcnQsaj0ic3NwIj09eShhKSxpPWEuYWlEaXNwbGF5O2EuYkRyYXdpbmc9ITA7ZyE9PWsmJi0xIT09ZyYmKGEuX2lEaXNwbGF5U3RhcnQ9aj9nOmc+PWEuZm5SZWNvcmRzRGlzcGxheSgpPzA6ZyxhLmlJbml0RGlzcGxheVN0YXJ0PQotMSk7dmFyIGc9YS5faURpc3BsYXlTdGFydCxuPWEuZm5EaXNwbGF5RW5kKCk7aWYoYS5iRGVmZXJMb2FkaW5nKWEuYkRlZmVyTG9hZGluZz0hMSxhLmlEcmF3KyssQyhhLCExKTtlbHNlIGlmKGope2lmKCFhLmJEZXN0cm95aW5nJiYha2IoYSkpcmV0dXJufWVsc2UgYS5pRHJhdysrO2lmKDAhPT1pLmxlbmd0aCl7Zj1qP2EuYW9EYXRhLmxlbmd0aDpuO2ZvcihqPWo/MDpnO2o8ZjtqKyspe3ZhciBsPWlbal0scT1hLmFvRGF0YVtsXTtudWxsPT09cS5uVHImJkdhKGEsbCk7bD1xLm5UcjtpZigwIT09ZSl7dmFyIHQ9ZFtjJWVdO3EuX3NSb3dTdHJpcGUhPXQmJihoKGwpLnJlbW92ZUNsYXNzKHEuX3NSb3dTdHJpcGUpLmFkZENsYXNzKHQpLHEuX3NSb3dTdHJpcGU9dCl9cihhLCJhb1Jvd0NhbGxiYWNrIixudWxsLFtsLHEuX2FEYXRhLGMsal0pO2IucHVzaChsKTtjKyt9fWVsc2UgYz1mLnNaZXJvUmVjb3JkcywxPT1hLmlEcmF3JiYiYWpheCI9PXkoYSk/Yz1mLnNMb2FkaW5nUmVjb3JkczoKZi5zRW1wdHlUYWJsZSYmMD09PWEuZm5SZWNvcmRzVG90YWwoKSYmKGM9Zi5zRW1wdHlUYWJsZSksYlswXT1oKCI8dHIvPiIseyJjbGFzcyI6ZT9kWzBdOiIifSkuYXBwZW5kKGgoIjx0ZCAvPiIse3ZhbGlnbjoidG9wIixjb2xTcGFuOmFhKGEpLCJjbGFzcyI6YS5vQ2xhc3Nlcy5zUm93RW1wdHl9KS5odG1sKGMpKVswXTtyKGEsImFvSGVhZGVyQ2FsbGJhY2siLCJoZWFkZXIiLFtoKGEublRIZWFkKS5jaGlsZHJlbigidHIiKVswXSxKYShhKSxnLG4saV0pO3IoYSwiYW9Gb290ZXJDYWxsYmFjayIsImZvb3RlciIsW2goYS5uVEZvb3QpLmNoaWxkcmVuKCJ0ciIpWzBdLEphKGEpLGcsbixpXSk7ZD1oKGEublRCb2R5KTtkLmNoaWxkcmVuKCkuZGV0YWNoKCk7ZC5hcHBlbmQoaChiKSk7cihhLCJhb0RyYXdDYWxsYmFjayIsImRyYXciLFthXSk7YS5iU29ydGVkPSExO2EuYkZpbHRlcmVkPSExO2EuYkRyYXdpbmc9ITF9fWZ1bmN0aW9uIFMoYSxiKXt2YXIgYz1hLm9GZWF0dXJlcyxkPWMuYkZpbHRlcjsKYy5iU29ydCYmbGIoYSk7ZD9mYShhLGEub1ByZXZpb3VzU2VhcmNoKTphLmFpRGlzcGxheT1hLmFpRGlzcGxheU1hc3Rlci5zbGljZSgpOyEwIT09YiYmKGEuX2lEaXNwbGF5U3RhcnQ9MCk7YS5fZHJhd0hvbGQ9YjtOKGEpO2EuX2RyYXdIb2xkPSExfWZ1bmN0aW9uIG1iKGEpe3ZhciBiPWEub0NsYXNzZXMsYz1oKGEublRhYmxlKSxjPWgoIjxkaXYvPiIpLmluc2VydEJlZm9yZShjKSxkPWEub0ZlYXR1cmVzLGU9aCgiPGRpdi8+Iix7aWQ6YS5zVGFibGVJZCsiX3dyYXBwZXIiLCJjbGFzcyI6Yi5zV3JhcHBlcisoYS5uVEZvb3Q/IiI6IiAiK2Iuc05vRm9vdGVyKX0pO2EubkhvbGRpbmc9Y1swXTthLm5UYWJsZVdyYXBwZXI9ZVswXTthLm5UYWJsZVJlaW5zZXJ0QmVmb3JlPWEublRhYmxlLm5leHRTaWJsaW5nO2Zvcih2YXIgZj1hLnNEb20uc3BsaXQoIiIpLGcsaixpLG4sbCxxLGs9MDtrPGYubGVuZ3RoO2srKyl7Zz1udWxsO2o9ZltrXTtpZigiPCI9PWope2k9aCgiPGRpdi8+IilbMF07Cm49ZltrKzFdO2lmKCInIj09bnx8JyInPT1uKXtsPSIiO2ZvcihxPTI7ZltrK3FdIT1uOylsKz1mW2srcV0scSsrOyJIIj09bD9sPWIuc0pVSUhlYWRlcjoiRiI9PWwmJihsPWIuc0pVSUZvb3Rlcik7LTEhPWwuaW5kZXhPZigiLiIpPyhuPWwuc3BsaXQoIi4iKSxpLmlkPW5bMF0uc3Vic3RyKDEsblswXS5sZW5ndGgtMSksaS5jbGFzc05hbWU9blsxXSk6IiMiPT1sLmNoYXJBdCgwKT9pLmlkPWwuc3Vic3RyKDEsbC5sZW5ndGgtMSk6aS5jbGFzc05hbWU9bDtrKz1xfWUuYXBwZW5kKGkpO2U9aChpKX1lbHNlIGlmKCI+Ij09aillPWUucGFyZW50KCk7ZWxzZSBpZigibCI9PWomJmQuYlBhZ2luYXRlJiZkLmJMZW5ndGhDaGFuZ2UpZz1uYihhKTtlbHNlIGlmKCJmIj09aiYmZC5iRmlsdGVyKWc9b2IoYSk7ZWxzZSBpZigiciI9PWomJmQuYlByb2Nlc3NpbmcpZz1wYihhKTtlbHNlIGlmKCJ0Ij09ailnPXFiKGEpO2Vsc2UgaWYoImkiPT1qJiZkLmJJbmZvKWc9cmIoYSk7ZWxzZSBpZigicCI9PQpqJiZkLmJQYWdpbmF0ZSlnPXNiKGEpO2Vsc2UgaWYoMCE9PW0uZXh0LmZlYXR1cmUubGVuZ3RoKXtpPW0uZXh0LmZlYXR1cmU7cT0wO2ZvcihuPWkubGVuZ3RoO3E8bjtxKyspaWYoaj09aVtxXS5jRmVhdHVyZSl7Zz1pW3FdLmZuSW5pdChhKTticmVha319ZyYmKGk9YS5hYW5GZWF0dXJlcyxpW2pdfHwoaVtqXT1bXSksaVtqXS5wdXNoKGcpLGUuYXBwZW5kKGcpKX1jLnJlcGxhY2VXaXRoKGUpO2EubkhvbGRpbmc9bnVsbH1mdW5jdGlvbiBkYShhLGIpe3ZhciBjPWgoYikuY2hpbGRyZW4oInRyIiksZCxlLGYsZyxqLGksbixsLHEsazthLnNwbGljZSgwLGEubGVuZ3RoKTtmPTA7Zm9yKGk9Yy5sZW5ndGg7ZjxpO2YrKylhLnB1c2goW10pO2Y9MDtmb3IoaT1jLmxlbmd0aDtmPGk7ZisrKXtkPWNbZl07Zm9yKGU9ZC5maXJzdENoaWxkO2U7KXtpZigiVEQiPT1lLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCl8fCJUSCI9PWUubm9kZU5hbWUudG9VcHBlckNhc2UoKSl7bD0xKmUuZ2V0QXR0cmlidXRlKCJjb2xzcGFuIik7CnE9MSplLmdldEF0dHJpYnV0ZSgicm93c3BhbiIpO2w9IWx8fDA9PT1sfHwxPT09bD8xOmw7cT0hcXx8MD09PXF8fDE9PT1xPzE6cTtnPTA7Zm9yKGo9YVtmXTtqW2ddOylnKys7bj1nO2s9MT09PWw/ITA6ITE7Zm9yKGo9MDtqPGw7aisrKWZvcihnPTA7ZzxxO2crKylhW2YrZ11bbitqXT17Y2VsbDplLHVuaXF1ZTprfSxhW2YrZ10ublRyPWR9ZT1lLm5leHRTaWJsaW5nfX19ZnVuY3Rpb24gcmEoYSxiLGMpe3ZhciBkPVtdO2N8fChjPWEuYW9IZWFkZXIsYiYmKGM9W10sZGEoYyxiKSkpO2Zvcih2YXIgYj0wLGU9Yy5sZW5ndGg7YjxlO2IrKylmb3IodmFyIGY9MCxnPWNbYl0ubGVuZ3RoO2Y8ZztmKyspaWYoY1tiXVtmXS51bmlxdWUmJighZFtmXXx8IWEuYlNvcnRDZWxsc1RvcCkpZFtmXT1jW2JdW2ZdLmNlbGw7cmV0dXJuIGR9ZnVuY3Rpb24gc2EoYSxiLGMpe3IoYSwiYW9TZXJ2ZXJQYXJhbXMiLCJzZXJ2ZXJQYXJhbXMiLFtiXSk7aWYoYiYmaC5pc0FycmF5KGIpKXt2YXIgZD17fSwKZT0vKC4qPylcW1xdJC87aC5lYWNoKGIsZnVuY3Rpb24oYSxiKXt2YXIgYz1iLm5hbWUubWF0Y2goZSk7Yz8oYz1jWzBdLGRbY118fChkW2NdPVtdKSxkW2NdLnB1c2goYi52YWx1ZSkpOmRbYi5uYW1lXT1iLnZhbHVlfSk7Yj1kfXZhciBmLGc9YS5hamF4LGo9YS5vSW5zdGFuY2UsaT1mdW5jdGlvbihiKXtyKGEsbnVsbCwieGhyIixbYSxiLGEuanFYSFJdKTtjKGIpfTtpZihoLmlzUGxhaW5PYmplY3QoZykmJmcuZGF0YSl7Zj1nLmRhdGE7dmFyIG49aC5pc0Z1bmN0aW9uKGYpP2YoYixhKTpmLGI9aC5pc0Z1bmN0aW9uKGYpJiZuP246aC5leHRlbmQoITAsYixuKTtkZWxldGUgZy5kYXRhfW49e2RhdGE6YixzdWNjZXNzOmZ1bmN0aW9uKGIpe3ZhciBjPWIuZXJyb3J8fGIuc0Vycm9yO2MmJkooYSwwLGMpO2EuanNvbj1iO2koYil9LGRhdGFUeXBlOiJqc29uIixjYWNoZTohMSx0eXBlOmEuc1NlcnZlck1ldGhvZCxlcnJvcjpmdW5jdGlvbihiLGMpe3ZhciBkPXIoYSxudWxsLCJ4aHIiLApbYSxudWxsLGEuanFYSFJdKTstMT09PWguaW5BcnJheSghMCxkKSYmKCJwYXJzZXJlcnJvciI9PWM/SihhLDAsIkludmFsaWQgSlNPTiByZXNwb25zZSIsMSk6ND09PWIucmVhZHlTdGF0ZSYmSihhLDAsIkFqYXggZXJyb3IiLDcpKTtDKGEsITEpfX07YS5vQWpheERhdGE9YjtyKGEsbnVsbCwicHJlWGhyIixbYSxiXSk7YS5mblNlcnZlckRhdGE/YS5mblNlcnZlckRhdGEuY2FsbChqLGEuc0FqYXhTb3VyY2UsaC5tYXAoYixmdW5jdGlvbihhLGIpe3JldHVybntuYW1lOmIsdmFsdWU6YX19KSxpLGEpOmEuc0FqYXhTb3VyY2V8fCJzdHJpbmciPT09dHlwZW9mIGc/YS5qcVhIUj1oLmFqYXgoaC5leHRlbmQobix7dXJsOmd8fGEuc0FqYXhTb3VyY2V9KSk6aC5pc0Z1bmN0aW9uKGcpP2EuanFYSFI9Zy5jYWxsKGosYixpLGEpOihhLmpxWEhSPWguYWpheChoLmV4dGVuZChuLGcpKSxnLmRhdGE9Zil9ZnVuY3Rpb24ga2IoYSl7cmV0dXJuIGEuYkFqYXhEYXRhR2V0PyhhLmlEcmF3KyssQyhhLAohMCksc2EoYSx0YihhKSxmdW5jdGlvbihiKXt1YihhLGIpfSksITEpOiEwfWZ1bmN0aW9uIHRiKGEpe3ZhciBiPWEuYW9Db2x1bW5zLGM9Yi5sZW5ndGgsZD1hLm9GZWF0dXJlcyxlPWEub1ByZXZpb3VzU2VhcmNoLGY9YS5hb1ByZVNlYXJjaENvbHMsZyxqPVtdLGksbixsLGs9VihhKTtnPWEuX2lEaXNwbGF5U3RhcnQ7aT0hMSE9PWQuYlBhZ2luYXRlP2EuX2lEaXNwbGF5TGVuZ3RoOi0xO3ZhciB0PWZ1bmN0aW9uKGEsYil7ai5wdXNoKHtuYW1lOmEsdmFsdWU6Yn0pfTt0KCJzRWNobyIsYS5pRHJhdyk7dCgiaUNvbHVtbnMiLGMpO3QoInNDb2x1bW5zIixEKGIsInNOYW1lIikuam9pbigiLCIpKTt0KCJpRGlzcGxheVN0YXJ0IixnKTt0KCJpRGlzcGxheUxlbmd0aCIsaSk7dmFyIHBhPXtkcmF3OmEuaURyYXcsY29sdW1uczpbXSxvcmRlcjpbXSxzdGFydDpnLGxlbmd0aDppLHNlYXJjaDp7dmFsdWU6ZS5zU2VhcmNoLHJlZ2V4OmUuYlJlZ2V4fX07Zm9yKGc9MDtnPGM7ZysrKW49YltnXSwKbD1mW2ddLGk9ImZ1bmN0aW9uIj09dHlwZW9mIG4ubURhdGE/ImZ1bmN0aW9uIjpuLm1EYXRhLHBhLmNvbHVtbnMucHVzaCh7ZGF0YTppLG5hbWU6bi5zTmFtZSxzZWFyY2hhYmxlOm4uYlNlYXJjaGFibGUsb3JkZXJhYmxlOm4uYlNvcnRhYmxlLHNlYXJjaDp7dmFsdWU6bC5zU2VhcmNoLHJlZ2V4OmwuYlJlZ2V4fX0pLHQoIm1EYXRhUHJvcF8iK2csaSksZC5iRmlsdGVyJiYodCgic1NlYXJjaF8iK2csbC5zU2VhcmNoKSx0KCJiUmVnZXhfIitnLGwuYlJlZ2V4KSx0KCJiU2VhcmNoYWJsZV8iK2csbi5iU2VhcmNoYWJsZSkpLGQuYlNvcnQmJnQoImJTb3J0YWJsZV8iK2csbi5iU29ydGFibGUpO2QuYkZpbHRlciYmKHQoInNTZWFyY2giLGUuc1NlYXJjaCksdCgiYlJlZ2V4IixlLmJSZWdleCkpO2QuYlNvcnQmJihoLmVhY2goayxmdW5jdGlvbihhLGIpe3BhLm9yZGVyLnB1c2goe2NvbHVtbjpiLmNvbCxkaXI6Yi5kaXJ9KTt0KCJpU29ydENvbF8iK2EsYi5jb2wpO3QoInNTb3J0RGlyXyIrCmEsYi5kaXIpfSksdCgiaVNvcnRpbmdDb2xzIixrLmxlbmd0aCkpO2I9bS5leHQubGVnYWN5LmFqYXg7cmV0dXJuIG51bGw9PT1iP2Euc0FqYXhTb3VyY2U/ajpwYTpiP2o6cGF9ZnVuY3Rpb24gdWIoYSxiKXt2YXIgYz10YShhLGIpLGQ9Yi5zRWNobyE9PWs/Yi5zRWNobzpiLmRyYXcsZT1iLmlUb3RhbFJlY29yZHMhPT1rP2IuaVRvdGFsUmVjb3JkczpiLnJlY29yZHNUb3RhbCxmPWIuaVRvdGFsRGlzcGxheVJlY29yZHMhPT1rP2IuaVRvdGFsRGlzcGxheVJlY29yZHM6Yi5yZWNvcmRzRmlsdGVyZWQ7aWYoZCl7aWYoMSpkPGEuaURyYXcpcmV0dXJuO2EuaURyYXc9MSpkfW5hKGEpO2EuX2lSZWNvcmRzVG90YWw9cGFyc2VJbnQoZSwxMCk7YS5faVJlY29yZHNEaXNwbGF5PXBhcnNlSW50KGYsMTApO2Q9MDtmb3IoZT1jLmxlbmd0aDtkPGU7ZCsrKU0oYSxjW2RdKTthLmFpRGlzcGxheT1hLmFpRGlzcGxheU1hc3Rlci5zbGljZSgpO2EuYkFqYXhEYXRhR2V0PSExO04oYSk7YS5fYkluaXRDb21wbGV0ZXx8CnVhKGEsYik7YS5iQWpheERhdGFHZXQ9ITA7QyhhLCExKX1mdW5jdGlvbiB0YShhLGIpe3ZhciBjPWguaXNQbGFpbk9iamVjdChhLmFqYXgpJiZhLmFqYXguZGF0YVNyYyE9PWs/YS5hamF4LmRhdGFTcmM6YS5zQWpheERhdGFQcm9wO3JldHVybiJkYXRhIj09PWM/Yi5hYURhdGF8fGJbY106IiIhPT1jP1EoYykoYik6Yn1mdW5jdGlvbiBvYihhKXt2YXIgYj1hLm9DbGFzc2VzLGM9YS5zVGFibGVJZCxkPWEub0xhbmd1YWdlLGU9YS5vUHJldmlvdXNTZWFyY2gsZj1hLmFhbkZlYXR1cmVzLGc9JzxpbnB1dCB0eXBlPSJzZWFyY2giIGNsYXNzPSInK2Iuc0ZpbHRlcklucHV0KyciLz4nLGo9ZC5zU2VhcmNoLGo9ai5tYXRjaCgvX0lOUFVUXy8pP2oucmVwbGFjZSgiX0lOUFVUXyIsZyk6aitnLGI9aCgiPGRpdi8+Iix7aWQ6IWYuZj9jKyJfZmlsdGVyIjpudWxsLCJjbGFzcyI6Yi5zRmlsdGVyfSkuYXBwZW5kKGgoIjxsYWJlbC8+IikuYXBwZW5kKGopKSxmPWZ1bmN0aW9uKCl7dmFyIGI9IXRoaXMudmFsdWU/CiIiOnRoaXMudmFsdWU7YiE9ZS5zU2VhcmNoJiYoZmEoYSx7c1NlYXJjaDpiLGJSZWdleDplLmJSZWdleCxiU21hcnQ6ZS5iU21hcnQsYkNhc2VJbnNlbnNpdGl2ZTplLmJDYXNlSW5zZW5zaXRpdmV9KSxhLl9pRGlzcGxheVN0YXJ0PTAsTihhKSl9LGc9bnVsbCE9PWEuc2VhcmNoRGVsYXk/YS5zZWFyY2hEZWxheToic3NwIj09PXkoYSk/NDAwOjAsaT1oKCJpbnB1dCIsYikudmFsKGUuc1NlYXJjaCkuYXR0cigicGxhY2Vob2xkZXIiLGQuc1NlYXJjaFBsYWNlaG9sZGVyKS5vbigia2V5dXAuRFQgc2VhcmNoLkRUIGlucHV0LkRUIHBhc3RlLkRUIGN1dC5EVCIsZz9OYShmLGcpOmYpLm9uKCJrZXlwcmVzcy5EVCIsZnVuY3Rpb24oYSl7aWYoMTM9PWEua2V5Q29kZSlyZXR1cm4hMX0pLmF0dHIoImFyaWEtY29udHJvbHMiLGMpO2goYS5uVGFibGUpLm9uKCJzZWFyY2guZHQuRFQiLGZ1bmN0aW9uKGIsYyl7aWYoYT09PWMpdHJ5e2lbMF0hPT1HLmFjdGl2ZUVsZW1lbnQmJmkudmFsKGUuc1NlYXJjaCl9Y2F0Y2goZCl7fX0pOwpyZXR1cm4gYlswXX1mdW5jdGlvbiBmYShhLGIsYyl7dmFyIGQ9YS5vUHJldmlvdXNTZWFyY2gsZT1hLmFvUHJlU2VhcmNoQ29scyxmPWZ1bmN0aW9uKGEpe2Quc1NlYXJjaD1hLnNTZWFyY2g7ZC5iUmVnZXg9YS5iUmVnZXg7ZC5iU21hcnQ9YS5iU21hcnQ7ZC5iQ2FzZUluc2Vuc2l0aXZlPWEuYkNhc2VJbnNlbnNpdGl2ZX07RmEoYSk7aWYoInNzcCIhPXkoYSkpe3ZiKGEsYi5zU2VhcmNoLGMsYi5iRXNjYXBlUmVnZXghPT1rPyFiLmJFc2NhcGVSZWdleDpiLmJSZWdleCxiLmJTbWFydCxiLmJDYXNlSW5zZW5zaXRpdmUpO2YoYik7Zm9yKGI9MDtiPGUubGVuZ3RoO2IrKyl3YihhLGVbYl0uc1NlYXJjaCxiLGVbYl0uYkVzY2FwZVJlZ2V4IT09az8hZVtiXS5iRXNjYXBlUmVnZXg6ZVtiXS5iUmVnZXgsZVtiXS5iU21hcnQsZVtiXS5iQ2FzZUluc2Vuc2l0aXZlKTt4YihhKX1lbHNlIGYoYik7YS5iRmlsdGVyZWQ9ITA7cihhLG51bGwsInNlYXJjaCIsW2FdKX1mdW5jdGlvbiB4YihhKXtmb3IodmFyIGI9Cm0uZXh0LnNlYXJjaCxjPWEuYWlEaXNwbGF5LGQsZSxmPTAsZz1iLmxlbmd0aDtmPGc7ZisrKXtmb3IodmFyIGo9W10saT0wLG49Yy5sZW5ndGg7aTxuO2krKyllPWNbaV0sZD1hLmFvRGF0YVtlXSxiW2ZdKGEsZC5fYUZpbHRlckRhdGEsZSxkLl9hRGF0YSxpKSYmai5wdXNoKGUpO2MubGVuZ3RoPTA7aC5tZXJnZShjLGopfX1mdW5jdGlvbiB3YihhLGIsYyxkLGUsZil7aWYoIiIhPT1iKXtmb3IodmFyIGc9W10saj1hLmFpRGlzcGxheSxkPU9hKGIsZCxlLGYpLGU9MDtlPGoubGVuZ3RoO2UrKyliPWEuYW9EYXRhW2pbZV1dLl9hRmlsdGVyRGF0YVtjXSxkLnRlc3QoYikmJmcucHVzaChqW2VdKTthLmFpRGlzcGxheT1nfX1mdW5jdGlvbiB2YihhLGIsYyxkLGUsZil7dmFyIGQ9T2EoYixkLGUsZiksZj1hLm9QcmV2aW91c1NlYXJjaC5zU2VhcmNoLGc9YS5haURpc3BsYXlNYXN0ZXIsaixlPVtdOzAhPT1tLmV4dC5zZWFyY2gubGVuZ3RoJiYoYz0hMCk7aj15YihhKTtpZigwPj1iLmxlbmd0aClhLmFpRGlzcGxheT0KZy5zbGljZSgpO2Vsc2V7aWYoanx8Y3x8Zi5sZW5ndGg+Yi5sZW5ndGh8fDAhPT1iLmluZGV4T2YoZil8fGEuYlNvcnRlZClhLmFpRGlzcGxheT1nLnNsaWNlKCk7Yj1hLmFpRGlzcGxheTtmb3IoYz0wO2M8Yi5sZW5ndGg7YysrKWQudGVzdChhLmFvRGF0YVtiW2NdXS5fc0ZpbHRlclJvdykmJmUucHVzaChiW2NdKTthLmFpRGlzcGxheT1lfX1mdW5jdGlvbiBPYShhLGIsYyxkKXthPWI/YTpQYShhKTtjJiYoYT0iXig/PS4qPyIraC5tYXAoYS5tYXRjaCgvIlteIl0rInxbXiBdKy9nKXx8WyIiXSxmdW5jdGlvbihhKXtpZignIic9PT1hLmNoYXJBdCgwKSl2YXIgYj1hLm1hdGNoKC9eIiguKikiJC8pLGE9Yj9iWzFdOmE7cmV0dXJuIGEucmVwbGFjZSgnIicsIiIpfSkuam9pbigiKSg/PS4qPyIpKyIpLiokIik7cmV0dXJuIFJlZ0V4cChhLGQ/ImkiOiIiKX1mdW5jdGlvbiB5YihhKXt2YXIgYj1hLmFvQ29sdW1ucyxjLGQsZSxmLGcsaixpLGgsbD1tLmV4dC50eXBlLnNlYXJjaDtjPSExOwpkPTA7Zm9yKGY9YS5hb0RhdGEubGVuZ3RoO2Q8ZjtkKyspaWYoaD1hLmFvRGF0YVtkXSwhaC5fYUZpbHRlckRhdGEpe2o9W107ZT0wO2ZvcihnPWIubGVuZ3RoO2U8ZztlKyspYz1iW2VdLGMuYlNlYXJjaGFibGU/KGk9QihhLGQsZSwiZmlsdGVyIiksbFtjLnNUeXBlXSYmKGk9bFtjLnNUeXBlXShpKSksbnVsbD09PWkmJihpPSIiKSwic3RyaW5nIiE9PXR5cGVvZiBpJiZpLnRvU3RyaW5nJiYoaT1pLnRvU3RyaW5nKCkpKTppPSIiLGkuaW5kZXhPZiYmLTEhPT1pLmluZGV4T2YoIiYiKSYmKHZhLmlubmVySFRNTD1pLGk9V2I/dmEudGV4dENvbnRlbnQ6dmEuaW5uZXJUZXh0KSxpLnJlcGxhY2UmJihpPWkucmVwbGFjZSgvW1xyXG5dL2csIiIpKSxqLnB1c2goaSk7aC5fYUZpbHRlckRhdGE9ajtoLl9zRmlsdGVyUm93PWouam9pbigiICAiKTtjPSEwfXJldHVybiBjfWZ1bmN0aW9uIHpiKGEpe3JldHVybntzZWFyY2g6YS5zU2VhcmNoLHNtYXJ0OmEuYlNtYXJ0LHJlZ2V4OmEuYlJlZ2V4LApjYXNlSW5zZW5zaXRpdmU6YS5iQ2FzZUluc2Vuc2l0aXZlfX1mdW5jdGlvbiBBYihhKXtyZXR1cm57c1NlYXJjaDphLnNlYXJjaCxiU21hcnQ6YS5zbWFydCxiUmVnZXg6YS5yZWdleCxiQ2FzZUluc2Vuc2l0aXZlOmEuY2FzZUluc2Vuc2l0aXZlfX1mdW5jdGlvbiByYihhKXt2YXIgYj1hLnNUYWJsZUlkLGM9YS5hYW5GZWF0dXJlcy5pLGQ9aCgiPGRpdi8+Iix7ImNsYXNzIjphLm9DbGFzc2VzLnNJbmZvLGlkOiFjP2IrIl9pbmZvIjpudWxsfSk7Y3x8KGEuYW9EcmF3Q2FsbGJhY2sucHVzaCh7Zm46QmIsc05hbWU6ImluZm9ybWF0aW9uIn0pLGQuYXR0cigicm9sZSIsInN0YXR1cyIpLmF0dHIoImFyaWEtbGl2ZSIsInBvbGl0ZSIpLGgoYS5uVGFibGUpLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLGIrIl9pbmZvIikpO3JldHVybiBkWzBdfWZ1bmN0aW9uIEJiKGEpe3ZhciBiPWEuYWFuRmVhdHVyZXMuaTtpZigwIT09Yi5sZW5ndGgpe3ZhciBjPWEub0xhbmd1YWdlLGQ9YS5faURpc3BsYXlTdGFydCsKMSxlPWEuZm5EaXNwbGF5RW5kKCksZj1hLmZuUmVjb3Jkc1RvdGFsKCksZz1hLmZuUmVjb3Jkc0Rpc3BsYXkoKSxqPWc/Yy5zSW5mbzpjLnNJbmZvRW1wdHk7ZyE9PWYmJihqKz0iICIrYy5zSW5mb0ZpbHRlcmVkKTtqKz1jLnNJbmZvUG9zdEZpeDtqPUNiKGEsaik7Yz1jLmZuSW5mb0NhbGxiYWNrO251bGwhPT1jJiYoaj1jLmNhbGwoYS5vSW5zdGFuY2UsYSxkLGUsZixnLGopKTtoKGIpLmh0bWwoail9fWZ1bmN0aW9uIENiKGEsYil7dmFyIGM9YS5mbkZvcm1hdE51bWJlcixkPWEuX2lEaXNwbGF5U3RhcnQrMSxlPWEuX2lEaXNwbGF5TGVuZ3RoLGY9YS5mblJlY29yZHNEaXNwbGF5KCksZz0tMT09PWU7cmV0dXJuIGIucmVwbGFjZSgvX1NUQVJUXy9nLGMuY2FsbChhLGQpKS5yZXBsYWNlKC9fRU5EXy9nLGMuY2FsbChhLGEuZm5EaXNwbGF5RW5kKCkpKS5yZXBsYWNlKC9fTUFYXy9nLGMuY2FsbChhLGEuZm5SZWNvcmRzVG90YWwoKSkpLnJlcGxhY2UoL19UT1RBTF8vZyxjLmNhbGwoYSwKZikpLnJlcGxhY2UoL19QQUdFXy9nLGMuY2FsbChhLGc/MTpNYXRoLmNlaWwoZC9lKSkpLnJlcGxhY2UoL19QQUdFU18vZyxjLmNhbGwoYSxnPzE6TWF0aC5jZWlsKGYvZSkpKX1mdW5jdGlvbiBnYShhKXt2YXIgYixjLGQ9YS5pSW5pdERpc3BsYXlTdGFydCxlPWEuYW9Db2x1bW5zLGY7Yz1hLm9GZWF0dXJlczt2YXIgZz1hLmJEZWZlckxvYWRpbmc7aWYoYS5iSW5pdGlhbGlzZWQpe21iKGEpO2piKGEpO2VhKGEsYS5hb0hlYWRlcik7ZWEoYSxhLmFvRm9vdGVyKTtDKGEsITApO2MuYkF1dG9XaWR0aCYmRWEoYSk7Yj0wO2ZvcihjPWUubGVuZ3RoO2I8YztiKyspZj1lW2JdLGYuc1dpZHRoJiYoZi5uVGguc3R5bGUud2lkdGg9dihmLnNXaWR0aCkpO3IoYSxudWxsLCJwcmVJbml0IixbYV0pO1MoYSk7ZT15KGEpO2lmKCJzc3AiIT1lfHxnKSJhamF4Ij09ZT9zYShhLFtdLGZ1bmN0aW9uKGMpe3ZhciBmPXRhKGEsYyk7Zm9yKGI9MDtiPGYubGVuZ3RoO2IrKylNKGEsZltiXSk7YS5pSW5pdERpc3BsYXlTdGFydD0KZDtTKGEpO0MoYSwhMSk7dWEoYSxjKX0sYSk6KEMoYSwhMSksdWEoYSkpfWVsc2Ugc2V0VGltZW91dChmdW5jdGlvbigpe2dhKGEpfSwyMDApfWZ1bmN0aW9uIHVhKGEsYil7YS5fYkluaXRDb21wbGV0ZT0hMDsoYnx8YS5vSW5pdC5hYURhdGEpJiZZKGEpO3IoYSxudWxsLCJwbHVnaW4taW5pdCIsW2EsYl0pO3IoYSwiYW9Jbml0Q29tcGxldGUiLCJpbml0IixbYSxiXSl9ZnVuY3Rpb24gUWEoYSxiKXt2YXIgYz1wYXJzZUludChiLDEwKTthLl9pRGlzcGxheUxlbmd0aD1jO1JhKGEpO3IoYSxudWxsLCJsZW5ndGgiLFthLGNdKX1mdW5jdGlvbiBuYihhKXtmb3IodmFyIGI9YS5vQ2xhc3NlcyxjPWEuc1RhYmxlSWQsZD1hLmFMZW5ndGhNZW51LGU9aC5pc0FycmF5KGRbMF0pLGY9ZT9kWzBdOmQsZD1lP2RbMV06ZCxlPWgoIjxzZWxlY3QvPiIse25hbWU6YysiX2xlbmd0aCIsImFyaWEtY29udHJvbHMiOmMsImNsYXNzIjpiLnNMZW5ndGhTZWxlY3R9KSxnPTAsaj1mLmxlbmd0aDtnPGo7ZysrKWVbMF1bZ109Cm5ldyBPcHRpb24oIm51bWJlciI9PT10eXBlb2YgZFtnXT9hLmZuRm9ybWF0TnVtYmVyKGRbZ10pOmRbZ10sZltnXSk7dmFyIGk9aCgiPGRpdj48bGFiZWwvPjwvZGl2PiIpLmFkZENsYXNzKGIuc0xlbmd0aCk7YS5hYW5GZWF0dXJlcy5sfHwoaVswXS5pZD1jKyJfbGVuZ3RoIik7aS5jaGlsZHJlbigpLmFwcGVuZChhLm9MYW5ndWFnZS5zTGVuZ3RoTWVudS5yZXBsYWNlKCJfTUVOVV8iLGVbMF0ub3V0ZXJIVE1MKSk7aCgic2VsZWN0IixpKS52YWwoYS5faURpc3BsYXlMZW5ndGgpLm9uKCJjaGFuZ2UuRFQiLGZ1bmN0aW9uKCl7UWEoYSxoKHRoaXMpLnZhbCgpKTtOKGEpfSk7aChhLm5UYWJsZSkub24oImxlbmd0aC5kdC5EVCIsZnVuY3Rpb24oYixjLGQpe2E9PT1jJiZoKCJzZWxlY3QiLGkpLnZhbChkKX0pO3JldHVybiBpWzBdfWZ1bmN0aW9uIHNiKGEpe3ZhciBiPWEuc1BhZ2luYXRpb25UeXBlLGM9bS5leHQucGFnZXJbYl0sZD0iZnVuY3Rpb24iPT09dHlwZW9mIGMsZT1mdW5jdGlvbihhKXtOKGEpfSwKYj1oKCI8ZGl2Lz4iKS5hZGRDbGFzcyhhLm9DbGFzc2VzLnNQYWdpbmcrYilbMF0sZj1hLmFhbkZlYXR1cmVzO2R8fGMuZm5Jbml0KGEsYixlKTtmLnB8fChiLmlkPWEuc1RhYmxlSWQrIl9wYWdpbmF0ZSIsYS5hb0RyYXdDYWxsYmFjay5wdXNoKHtmbjpmdW5jdGlvbihhKXtpZihkKXt2YXIgYj1hLl9pRGlzcGxheVN0YXJ0LGk9YS5faURpc3BsYXlMZW5ndGgsaD1hLmZuUmVjb3Jkc0Rpc3BsYXkoKSxsPS0xPT09aSxiPWw/MDpNYXRoLmNlaWwoYi9pKSxpPWw/MTpNYXRoLmNlaWwoaC9pKSxoPWMoYixpKSxrLGw9MDtmb3Ioaz1mLnAubGVuZ3RoO2w8aztsKyspTWEoYSwicGFnZUJ1dHRvbiIpKGEsZi5wW2xdLGwsaCxiLGkpfWVsc2UgYy5mblVwZGF0ZShhLGUpfSxzTmFtZToicGFnaW5hdGlvbiJ9KSk7cmV0dXJuIGJ9ZnVuY3Rpb24gU2EoYSxiLGMpe3ZhciBkPWEuX2lEaXNwbGF5U3RhcnQsZT1hLl9pRGlzcGxheUxlbmd0aCxmPWEuZm5SZWNvcmRzRGlzcGxheSgpOzA9PT1mfHwtMT09PQplP2Q9MDoibnVtYmVyIj09PXR5cGVvZiBiPyhkPWIqZSxkPmYmJihkPTApKToiZmlyc3QiPT1iP2Q9MDoicHJldmlvdXMiPT1iPyhkPTA8PWU/ZC1lOjAsMD5kJiYoZD0wKSk6Im5leHQiPT1iP2QrZTxmJiYoZCs9ZSk6Imxhc3QiPT1iP2Q9TWF0aC5mbG9vcigoZi0xKS9lKSplOkooYSwwLCJVbmtub3duIHBhZ2luZyBhY3Rpb246ICIrYiw1KTtiPWEuX2lEaXNwbGF5U3RhcnQhPT1kO2EuX2lEaXNwbGF5U3RhcnQ9ZDtiJiYocihhLG51bGwsInBhZ2UiLFthXSksYyYmTihhKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gcGIoYSl7cmV0dXJuIGgoIjxkaXYvPiIse2lkOiFhLmFhbkZlYXR1cmVzLnI/YS5zVGFibGVJZCsiX3Byb2Nlc3NpbmciOm51bGwsImNsYXNzIjphLm9DbGFzc2VzLnNQcm9jZXNzaW5nfSkuaHRtbChhLm9MYW5ndWFnZS5zUHJvY2Vzc2luZykuaW5zZXJ0QmVmb3JlKGEublRhYmxlKVswXX1mdW5jdGlvbiBDKGEsYil7YS5vRmVhdHVyZXMuYlByb2Nlc3NpbmcmJmgoYS5hYW5GZWF0dXJlcy5yKS5jc3MoImRpc3BsYXkiLApiPyJibG9jayI6Im5vbmUiKTtyKGEsbnVsbCwicHJvY2Vzc2luZyIsW2EsYl0pfWZ1bmN0aW9uIHFiKGEpe3ZhciBiPWgoYS5uVGFibGUpO2IuYXR0cigicm9sZSIsImdyaWQiKTt2YXIgYz1hLm9TY3JvbGw7aWYoIiI9PT1jLnNYJiYiIj09PWMuc1kpcmV0dXJuIGEublRhYmxlO3ZhciBkPWMuc1gsZT1jLnNZLGY9YS5vQ2xhc3NlcyxnPWIuY2hpbGRyZW4oImNhcHRpb24iKSxqPWcubGVuZ3RoP2dbMF0uX2NhcHRpb25TaWRlOm51bGwsaT1oKGJbMF0uY2xvbmVOb2RlKCExKSksbj1oKGJbMF0uY2xvbmVOb2RlKCExKSksbD1iLmNoaWxkcmVuKCJ0Zm9vdCIpO2wubGVuZ3RofHwobD1udWxsKTtpPWgoIjxkaXYvPiIseyJjbGFzcyI6Zi5zU2Nyb2xsV3JhcHBlcn0pLmFwcGVuZChoKCI8ZGl2Lz4iLHsiY2xhc3MiOmYuc1Njcm9sbEhlYWR9KS5jc3Moe292ZXJmbG93OiJoaWRkZW4iLHBvc2l0aW9uOiJyZWxhdGl2ZSIsYm9yZGVyOjAsd2lkdGg6ZD8hZD9udWxsOnYoZCk6IjEwMCUifSkuYXBwZW5kKGgoIjxkaXYvPiIsCnsiY2xhc3MiOmYuc1Njcm9sbEhlYWRJbm5lcn0pLmNzcyh7ImJveC1zaXppbmciOiJjb250ZW50LWJveCIsd2lkdGg6Yy5zWElubmVyfHwiMTAwJSJ9KS5hcHBlbmQoaS5yZW1vdmVBdHRyKCJpZCIpLmNzcygibWFyZ2luLWxlZnQiLDApLmFwcGVuZCgidG9wIj09PWo/ZzpudWxsKS5hcHBlbmQoYi5jaGlsZHJlbigidGhlYWQiKSkpKSkuYXBwZW5kKGgoIjxkaXYvPiIseyJjbGFzcyI6Zi5zU2Nyb2xsQm9keX0pLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoiYXV0byIsd2lkdGg6IWQ/bnVsbDp2KGQpfSkuYXBwZW5kKGIpKTtsJiZpLmFwcGVuZChoKCI8ZGl2Lz4iLHsiY2xhc3MiOmYuc1Njcm9sbEZvb3R9KS5jc3Moe292ZXJmbG93OiJoaWRkZW4iLGJvcmRlcjowLHdpZHRoOmQ/IWQ/bnVsbDp2KGQpOiIxMDAlIn0pLmFwcGVuZChoKCI8ZGl2Lz4iLHsiY2xhc3MiOmYuc1Njcm9sbEZvb3RJbm5lcn0pLmFwcGVuZChuLnJlbW92ZUF0dHIoImlkIikuY3NzKCJtYXJnaW4tbGVmdCIsCjApLmFwcGVuZCgiYm90dG9tIj09PWo/ZzpudWxsKS5hcHBlbmQoYi5jaGlsZHJlbigidGZvb3QiKSkpKSk7dmFyIGI9aS5jaGlsZHJlbigpLGs9YlswXSxmPWJbMV0sdD1sP2JbMl06bnVsbDtpZihkKWgoZikub24oInNjcm9sbC5EVCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNjcm9sbExlZnQ7ay5zY3JvbGxMZWZ0PWE7bCYmKHQuc2Nyb2xsTGVmdD1hKX0pO2goZikuY3NzKGUmJmMuYkNvbGxhcHNlPyJtYXgtaGVpZ2h0IjoiaGVpZ2h0IixlKTthLm5TY3JvbGxIZWFkPWs7YS5uU2Nyb2xsQm9keT1mO2EublNjcm9sbEZvb3Q9dDthLmFvRHJhd0NhbGxiYWNrLnB1c2goe2ZuOmthLHNOYW1lOiJzY3JvbGxpbmcifSk7cmV0dXJuIGlbMF19ZnVuY3Rpb24ga2EoYSl7dmFyIGI9YS5vU2Nyb2xsLGM9Yi5zWCxkPWIuc1hJbm5lcixlPWIuc1ksYj1iLmlCYXJXaWR0aCxmPWgoYS5uU2Nyb2xsSGVhZCksZz1mWzBdLnN0eWxlLGo9Zi5jaGlsZHJlbigiZGl2IiksaT1qWzBdLnN0eWxlLG49ai5jaGlsZHJlbigidGFibGUiKSwKaj1hLm5TY3JvbGxCb2R5LGw9aChqKSxxPWouc3R5bGUsdD1oKGEublNjcm9sbEZvb3QpLmNoaWxkcmVuKCJkaXYiKSxtPXQuY2hpbGRyZW4oInRhYmxlIiksbz1oKGEublRIZWFkKSxwPWgoYS5uVGFibGUpLHM9cFswXSxyPXMuc3R5bGUsdT1hLm5URm9vdD9oKGEublRGb290KTpudWxsLHg9YS5vQnJvd3NlcixUPXguYlNjcm9sbE92ZXJzaXplLFhiPUQoYS5hb0NvbHVtbnMsIm5UaCIpLE8sSyxQLHcsVGE9W10seT1bXSx6PVtdLEE9W10sQixDPWZ1bmN0aW9uKGEpe2E9YS5zdHlsZTthLnBhZGRpbmdUb3A9IjAiO2EucGFkZGluZ0JvdHRvbT0iMCI7YS5ib3JkZXJUb3BXaWR0aD0iMCI7YS5ib3JkZXJCb3R0b21XaWR0aD0iMCI7YS5oZWlnaHQ9MH07Sz1qLnNjcm9sbEhlaWdodD5qLmNsaWVudEhlaWdodDtpZihhLnNjcm9sbEJhclZpcyE9PUsmJmEuc2Nyb2xsQmFyVmlzIT09aylhLnNjcm9sbEJhclZpcz1LLFkoYSk7ZWxzZXthLnNjcm9sbEJhclZpcz1LO3AuY2hpbGRyZW4oInRoZWFkLCB0Zm9vdCIpLnJlbW92ZSgpOwp1JiYoUD11LmNsb25lKCkucHJlcGVuZFRvKHApLE89dS5maW5kKCJ0ciIpLFA9UC5maW5kKCJ0ciIpKTt3PW8uY2xvbmUoKS5wcmVwZW5kVG8ocCk7bz1vLmZpbmQoInRyIik7Sz13LmZpbmQoInRyIik7dy5maW5kKCJ0aCwgdGQiKS5yZW1vdmVBdHRyKCJ0YWJpbmRleCIpO2N8fChxLndpZHRoPSIxMDAlIixmWzBdLnN0eWxlLndpZHRoPSIxMDAlIik7aC5lYWNoKHJhKGEsdyksZnVuY3Rpb24oYixjKXtCPVooYSxiKTtjLnN0eWxlLndpZHRoPWEuYW9Db2x1bW5zW0JdLnNXaWR0aH0pO3UmJkgoZnVuY3Rpb24oYSl7YS5zdHlsZS53aWR0aD0iIn0sUCk7Zj1wLm91dGVyV2lkdGgoKTtpZigiIj09PWMpe3Iud2lkdGg9IjEwMCUiO2lmKFQmJihwLmZpbmQoInRib2R5IikuaGVpZ2h0KCk+ai5vZmZzZXRIZWlnaHR8fCJzY3JvbGwiPT1sLmNzcygib3ZlcmZsb3cteSIpKSlyLndpZHRoPXYocC5vdXRlcldpZHRoKCktYik7Zj1wLm91dGVyV2lkdGgoKX1lbHNlIiIhPT1kJiYoci53aWR0aD0KdihkKSxmPXAub3V0ZXJXaWR0aCgpKTtIKEMsSyk7SChmdW5jdGlvbihhKXt6LnB1c2goYS5pbm5lckhUTUwpO1RhLnB1c2godihoKGEpLmNzcygid2lkdGgiKSkpfSxLKTtIKGZ1bmN0aW9uKGEsYil7aWYoaC5pbkFycmF5KGEsWGIpIT09LTEpYS5zdHlsZS53aWR0aD1UYVtiXX0sbyk7aChLKS5oZWlnaHQoMCk7dSYmKEgoQyxQKSxIKGZ1bmN0aW9uKGEpe0EucHVzaChhLmlubmVySFRNTCk7eS5wdXNoKHYoaChhKS5jc3MoIndpZHRoIikpKX0sUCksSChmdW5jdGlvbihhLGIpe2Euc3R5bGUud2lkdGg9eVtiXX0sTyksaChQKS5oZWlnaHQoMCkpO0goZnVuY3Rpb24oYSxiKXthLmlubmVySFRNTD0nPGRpdiBjbGFzcz0iZGF0YVRhYmxlc19zaXppbmciIHN0eWxlPSJoZWlnaHQ6MDtvdmVyZmxvdzpoaWRkZW47Ij4nK3pbYl0rIjwvZGl2PiI7YS5zdHlsZS53aWR0aD1UYVtiXX0sSyk7dSYmSChmdW5jdGlvbihhLGIpe2EuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJkYXRhVGFibGVzX3NpemluZyIgc3R5bGU9ImhlaWdodDowO292ZXJmbG93OmhpZGRlbjsiPicrCkFbYl0rIjwvZGl2PiI7YS5zdHlsZS53aWR0aD15W2JdfSxQKTtpZihwLm91dGVyV2lkdGgoKTxmKXtPPWouc2Nyb2xsSGVpZ2h0Pmoub2Zmc2V0SGVpZ2h0fHwic2Nyb2xsIj09bC5jc3MoIm92ZXJmbG93LXkiKT9mK2I6ZjtpZihUJiYoai5zY3JvbGxIZWlnaHQ+ai5vZmZzZXRIZWlnaHR8fCJzY3JvbGwiPT1sLmNzcygib3ZlcmZsb3cteSIpKSlyLndpZHRoPXYoTy1iKTsoIiI9PT1jfHwiIiE9PWQpJiZKKGEsMSwiUG9zc2libGUgY29sdW1uIG1pc2FsaWdubWVudCIsNil9ZWxzZSBPPSIxMDAlIjtxLndpZHRoPXYoTyk7Zy53aWR0aD12KE8pO3UmJihhLm5TY3JvbGxGb290LnN0eWxlLndpZHRoPXYoTykpOyFlJiZUJiYocS5oZWlnaHQ9dihzLm9mZnNldEhlaWdodCtiKSk7Yz1wLm91dGVyV2lkdGgoKTtuWzBdLnN0eWxlLndpZHRoPXYoYyk7aS53aWR0aD12KGMpO2Q9cC5oZWlnaHQoKT5qLmNsaWVudEhlaWdodHx8InNjcm9sbCI9PWwuY3NzKCJvdmVyZmxvdy15Iik7ZT0icGFkZGluZyIrCih4LmJTY3JvbGxiYXJMZWZ0PyJMZWZ0IjoiUmlnaHQiKTtpW2VdPWQ/YisicHgiOiIwcHgiO3UmJihtWzBdLnN0eWxlLndpZHRoPXYoYyksdFswXS5zdHlsZS53aWR0aD12KGMpLHRbMF0uc3R5bGVbZV09ZD9iKyJweCI6IjBweCIpO3AuY2hpbGRyZW4oImNvbGdyb3VwIikuaW5zZXJ0QmVmb3JlKHAuY2hpbGRyZW4oInRoZWFkIikpO2wuc2Nyb2xsKCk7aWYoKGEuYlNvcnRlZHx8YS5iRmlsdGVyZWQpJiYhYS5fZHJhd0hvbGQpai5zY3JvbGxUb3A9MH19ZnVuY3Rpb24gSChhLGIsYyl7Zm9yKHZhciBkPTAsZT0wLGY9Yi5sZW5ndGgsZyxqO2U8Zjspe2c9YltlXS5maXJzdENoaWxkO2ZvcihqPWM/Y1tlXS5maXJzdENoaWxkOm51bGw7ZzspMT09PWcubm9kZVR5cGUmJihjP2EoZyxqLGQpOmEoZyxkKSxkKyspLGc9Zy5uZXh0U2libGluZyxqPWM/ai5uZXh0U2libGluZzpudWxsO2UrK319ZnVuY3Rpb24gRWEoYSl7dmFyIGI9YS5uVGFibGUsYz1hLmFvQ29sdW1ucyxkPWEub1Njcm9sbCwKZT1kLnNZLGY9ZC5zWCxnPWQuc1hJbm5lcixqPWMubGVuZ3RoLGk9bGEoYSwiYlZpc2libGUiKSxuPWgoInRoIixhLm5USGVhZCksbD1iLmdldEF0dHJpYnV0ZSgid2lkdGgiKSxrPWIucGFyZW50Tm9kZSx0PSExLG0sbyxwPWEub0Jyb3dzZXIsZD1wLmJTY3JvbGxPdmVyc2l6ZTsobT1iLnN0eWxlLndpZHRoKSYmLTEhPT1tLmluZGV4T2YoIiUiKSYmKGw9bSk7Zm9yKG09MDttPGkubGVuZ3RoO20rKylvPWNbaVttXV0sbnVsbCE9PW8uc1dpZHRoJiYoby5zV2lkdGg9RGIoby5zV2lkdGhPcmlnLGspLHQ9ITApO2lmKGR8fCF0JiYhZiYmIWUmJmo9PWFhKGEpJiZqPT1uLmxlbmd0aClmb3IobT0wO208ajttKyspaT1aKGEsbSksbnVsbCE9PWkmJihjW2ldLnNXaWR0aD12KG4uZXEobSkud2lkdGgoKSkpO2Vsc2V7aj1oKGIpLmNsb25lKCkuY3NzKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIikucmVtb3ZlQXR0cigiaWQiKTtqLmZpbmQoInRib2R5IHRyIikucmVtb3ZlKCk7dmFyIHM9aCgiPHRyLz4iKS5hcHBlbmRUbyhqLmZpbmQoInRib2R5IikpOwpqLmZpbmQoInRoZWFkLCB0Zm9vdCIpLnJlbW92ZSgpO2ouYXBwZW5kKGgoYS5uVEhlYWQpLmNsb25lKCkpLmFwcGVuZChoKGEublRGb290KS5jbG9uZSgpKTtqLmZpbmQoInRmb290IHRoLCB0Zm9vdCB0ZCIpLmNzcygid2lkdGgiLCIiKTtuPXJhKGEsai5maW5kKCJ0aGVhZCIpWzBdKTtmb3IobT0wO208aS5sZW5ndGg7bSsrKW89Y1tpW21dXSxuW21dLnN0eWxlLndpZHRoPW51bGwhPT1vLnNXaWR0aE9yaWcmJiIiIT09by5zV2lkdGhPcmlnP3Yoby5zV2lkdGhPcmlnKToiIixvLnNXaWR0aE9yaWcmJmYmJmgoblttXSkuYXBwZW5kKGgoIjxkaXYvPiIpLmNzcyh7d2lkdGg6by5zV2lkdGhPcmlnLG1hcmdpbjowLHBhZGRpbmc6MCxib3JkZXI6MCxoZWlnaHQ6MX0pKTtpZihhLmFvRGF0YS5sZW5ndGgpZm9yKG09MDttPGkubGVuZ3RoO20rKyl0PWlbbV0sbz1jW3RdLGgoRWIoYSx0KSkuY2xvbmUoITEpLmFwcGVuZChvLnNDb250ZW50UGFkZGluZykuYXBwZW5kVG8ocyk7aCgiW25hbWVdIiwKaikucmVtb3ZlQXR0cigibmFtZSIpO289aCgiPGRpdi8+IikuY3NzKGZ8fGU/e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOjAsbGVmdDowLGhlaWdodDoxLHJpZ2h0OjAsb3ZlcmZsb3c6ImhpZGRlbiJ9Ont9KS5hcHBlbmQoaikuYXBwZW5kVG8oayk7ZiYmZz9qLndpZHRoKGcpOmY/KGouY3NzKCJ3aWR0aCIsImF1dG8iKSxqLnJlbW92ZUF0dHIoIndpZHRoIiksai53aWR0aCgpPGsuY2xpZW50V2lkdGgmJmwmJmoud2lkdGgoay5jbGllbnRXaWR0aCkpOmU/ai53aWR0aChrLmNsaWVudFdpZHRoKTpsJiZqLndpZHRoKGwpO2ZvcihtPWU9MDttPGkubGVuZ3RoO20rKylrPWgoblttXSksZz1rLm91dGVyV2lkdGgoKS1rLndpZHRoKCksaz1wLmJCb3VuZGluZz9NYXRoLmNlaWwoblttXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk6ay5vdXRlcldpZHRoKCksZSs9ayxjW2lbbV1dLnNXaWR0aD12KGstZyk7Yi5zdHlsZS53aWR0aD12KGUpO28ucmVtb3ZlKCl9bCYmKGIuc3R5bGUud2lkdGg9CnYobCkpO2lmKChsfHxmKSYmIWEuX3Jlc3pFdnQpYj1mdW5jdGlvbigpe2goRSkub24oInJlc2l6ZS5EVC0iK2Euc0luc3RhbmNlLE5hKGZ1bmN0aW9uKCl7WShhKX0pKX0sZD9zZXRUaW1lb3V0KGIsMUUzKTpiKCksYS5fcmVzekV2dD0hMH1mdW5jdGlvbiBEYihhLGIpe2lmKCFhKXJldHVybiAwO3ZhciBjPWgoIjxkaXYvPiIpLmNzcygid2lkdGgiLHYoYSkpLmFwcGVuZFRvKGJ8fEcuYm9keSksZD1jWzBdLm9mZnNldFdpZHRoO2MucmVtb3ZlKCk7cmV0dXJuIGR9ZnVuY3Rpb24gRWIoYSxiKXt2YXIgYz1GYihhLGIpO2lmKDA+YylyZXR1cm4gbnVsbDt2YXIgZD1hLmFvRGF0YVtjXTtyZXR1cm4hZC5uVHI/aCgiPHRkLz4iKS5odG1sKEIoYSxjLGIsImRpc3BsYXkiKSlbMF06ZC5hbkNlbGxzW2JdfWZ1bmN0aW9uIEZiKGEsYil7Zm9yKHZhciBjLGQ9LTEsZT0tMSxmPTAsZz1hLmFvRGF0YS5sZW5ndGg7ZjxnO2YrKyljPUIoYSxmLGIsImRpc3BsYXkiKSsiIixjPWMucmVwbGFjZShZYiwKIiIpLGM9Yy5yZXBsYWNlKC8mbmJzcDsvZywiICIpLGMubGVuZ3RoPmQmJihkPWMubGVuZ3RoLGU9Zik7cmV0dXJuIGV9ZnVuY3Rpb24gdihhKXtyZXR1cm4gbnVsbD09PWE/IjBweCI6Im51bWJlciI9PXR5cGVvZiBhPzA+YT8iMHB4IjphKyJweCI6YS5tYXRjaCgvXGQkLyk/YSsicHgiOmF9ZnVuY3Rpb24gVihhKXt2YXIgYixjLGQ9W10sZT1hLmFvQ29sdW1ucyxmLGcsaixpO2I9YS5hYVNvcnRpbmdGaXhlZDtjPWguaXNQbGFpbk9iamVjdChiKTt2YXIgbj1bXTtmPWZ1bmN0aW9uKGEpe2EubGVuZ3RoJiYhaC5pc0FycmF5KGFbMF0pP24ucHVzaChhKTpoLm1lcmdlKG4sYSl9O2guaXNBcnJheShiKSYmZihiKTtjJiZiLnByZSYmZihiLnByZSk7ZihhLmFhU29ydGluZyk7YyYmYi5wb3N0JiZmKGIucG9zdCk7Zm9yKGE9MDthPG4ubGVuZ3RoO2ErKyl7aT1uW2FdWzBdO2Y9ZVtpXS5hRGF0YVNvcnQ7Yj0wO2ZvcihjPWYubGVuZ3RoO2I8YztiKyspZz1mW2JdLGo9ZVtnXS5zVHlwZXx8CiJzdHJpbmciLG5bYV0uX2lkeD09PWsmJihuW2FdLl9pZHg9aC5pbkFycmF5KG5bYV1bMV0sZVtnXS5hc1NvcnRpbmcpKSxkLnB1c2goe3NyYzppLGNvbDpnLGRpcjpuW2FdWzFdLGluZGV4Om5bYV0uX2lkeCx0eXBlOmosZm9ybWF0dGVyOm0uZXh0LnR5cGUub3JkZXJbaisiLXByZSJdfSl9cmV0dXJuIGR9ZnVuY3Rpb24gbGIoYSl7dmFyIGIsYyxkPVtdLGU9bS5leHQudHlwZS5vcmRlcixmPWEuYW9EYXRhLGc9MCxqLGk9YS5haURpc3BsYXlNYXN0ZXIsaDtGYShhKTtoPVYoYSk7Yj0wO2ZvcihjPWgubGVuZ3RoO2I8YztiKyspaj1oW2JdLGouZm9ybWF0dGVyJiZnKyssR2IoYSxqLmNvbCk7aWYoInNzcCIhPXkoYSkmJjAhPT1oLmxlbmd0aCl7Yj0wO2ZvcihjPWkubGVuZ3RoO2I8YztiKyspZFtpW2JdXT1iO2c9PT1oLmxlbmd0aD9pLnNvcnQoZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGcsaixpPWgubGVuZ3RoLGs9ZlthXS5fYVNvcnREYXRhLG09ZltiXS5fYVNvcnREYXRhO2ZvcihnPQowO2c8aTtnKyspaWYoaj1oW2ddLGM9a1tqLmNvbF0sZT1tW2ouY29sXSxjPWM8ZT8tMTpjPmU/MTowLDAhPT1jKXJldHVybiJhc2MiPT09ai5kaXI/YzotYztjPWRbYV07ZT1kW2JdO3JldHVybiBjPGU/LTE6Yz5lPzE6MH0pOmkuc29ydChmdW5jdGlvbihhLGIpe3ZhciBjLGcsaixpLGs9aC5sZW5ndGgsbT1mW2FdLl9hU29ydERhdGEsbz1mW2JdLl9hU29ydERhdGE7Zm9yKGo9MDtqPGs7aisrKWlmKGk9aFtqXSxjPW1baS5jb2xdLGc9b1tpLmNvbF0saT1lW2kudHlwZSsiLSIraS5kaXJdfHxlWyJzdHJpbmctIitpLmRpcl0sYz1pKGMsZyksMCE9PWMpcmV0dXJuIGM7Yz1kW2FdO2c9ZFtiXTtyZXR1cm4gYzxnPy0xOmM+Zz8xOjB9KX1hLmJTb3J0ZWQ9ITB9ZnVuY3Rpb24gSGIoYSl7Zm9yKHZhciBiLGMsZD1hLmFvQ29sdW1ucyxlPVYoYSksYT1hLm9MYW5ndWFnZS5vQXJpYSxmPTAsZz1kLmxlbmd0aDtmPGc7ZisrKXtjPWRbZl07dmFyIGo9Yy5hc1NvcnRpbmc7Yj1jLnNUaXRsZS5yZXBsYWNlKC88Lio/Pi9nLAoiIik7dmFyIGk9Yy5uVGg7aS5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtc29ydCIpO2MuYlNvcnRhYmxlJiYoMDxlLmxlbmd0aCYmZVswXS5jb2w9PWY/KGkuc2V0QXR0cmlidXRlKCJhcmlhLXNvcnQiLCJhc2MiPT1lWzBdLmRpcj8iYXNjZW5kaW5nIjoiZGVzY2VuZGluZyIpLGM9altlWzBdLmluZGV4KzFdfHxqWzBdKTpjPWpbMF0sYis9ImFzYyI9PT1jP2Euc1NvcnRBc2NlbmRpbmc6YS5zU29ydERlc2NlbmRpbmcpO2kuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIixiKX19ZnVuY3Rpb24gVWEoYSxiLGMsZCl7dmFyIGU9YS5hYVNvcnRpbmcsZj1hLmFvQ29sdW1uc1tiXS5hc1NvcnRpbmcsZz1mdW5jdGlvbihhLGIpe3ZhciBjPWEuX2lkeDtjPT09ayYmKGM9aC5pbkFycmF5KGFbMV0sZikpO3JldHVybiBjKzE8Zi5sZW5ndGg/YysxOmI/bnVsbDowfTsibnVtYmVyIj09PXR5cGVvZiBlWzBdJiYoZT1hLmFhU29ydGluZz1bZV0pO2MmJmEub0ZlYXR1cmVzLmJTb3J0TXVsdGk/KGM9aC5pbkFycmF5KGIsCkQoZSwiMCIpKSwtMSE9PWM/KGI9ZyhlW2NdLCEwKSxudWxsPT09YiYmMT09PWUubGVuZ3RoJiYoYj0wKSxudWxsPT09Yj9lLnNwbGljZShjLDEpOihlW2NdWzFdPWZbYl0sZVtjXS5faWR4PWIpKTooZS5wdXNoKFtiLGZbMF0sMF0pLGVbZS5sZW5ndGgtMV0uX2lkeD0wKSk6ZS5sZW5ndGgmJmVbMF1bMF09PWI/KGI9ZyhlWzBdKSxlLmxlbmd0aD0xLGVbMF1bMV09ZltiXSxlWzBdLl9pZHg9Yik6KGUubGVuZ3RoPTAsZS5wdXNoKFtiLGZbMF1dKSxlWzBdLl9pZHg9MCk7UyhhKTsiZnVuY3Rpb24iPT10eXBlb2YgZCYmZChhKX1mdW5jdGlvbiBMYShhLGIsYyxkKXt2YXIgZT1hLmFvQ29sdW1uc1tjXTtWYShiLHt9LGZ1bmN0aW9uKGIpeyExIT09ZS5iU29ydGFibGUmJihhLm9GZWF0dXJlcy5iUHJvY2Vzc2luZz8oQyhhLCEwKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7VWEoYSxjLGIuc2hpZnRLZXksZCk7InNzcCIhPT15KGEpJiZDKGEsITEpfSwwKSk6VWEoYSxjLGIuc2hpZnRLZXksZCkpfSl9CmZ1bmN0aW9uIHdhKGEpe3ZhciBiPWEuYUxhc3RTb3J0LGM9YS5vQ2xhc3Nlcy5zU29ydENvbHVtbixkPVYoYSksZT1hLm9GZWF0dXJlcyxmLGc7aWYoZS5iU29ydCYmZS5iU29ydENsYXNzZXMpe2U9MDtmb3IoZj1iLmxlbmd0aDtlPGY7ZSsrKWc9YltlXS5zcmMsaChEKGEuYW9EYXRhLCJhbkNlbGxzIixnKSkucmVtb3ZlQ2xhc3MoYysoMj5lP2UrMTozKSk7ZT0wO2ZvcihmPWQubGVuZ3RoO2U8ZjtlKyspZz1kW2VdLnNyYyxoKEQoYS5hb0RhdGEsImFuQ2VsbHMiLGcpKS5hZGRDbGFzcyhjKygyPmU/ZSsxOjMpKX1hLmFMYXN0U29ydD1kfWZ1bmN0aW9uIEdiKGEsYil7dmFyIGM9YS5hb0NvbHVtbnNbYl0sZD1tLmV4dC5vcmRlcltjLnNTb3J0RGF0YVR5cGVdLGU7ZCYmKGU9ZC5jYWxsKGEub0luc3RhbmNlLGEsYiwkKGEsYikpKTtmb3IodmFyIGYsZz1tLmV4dC50eXBlLm9yZGVyW2Muc1R5cGUrIi1wcmUiXSxqPTAsaT1hLmFvRGF0YS5sZW5ndGg7ajxpO2orKylpZihjPWEuYW9EYXRhW2pdLApjLl9hU29ydERhdGF8fChjLl9hU29ydERhdGE9W10pLCFjLl9hU29ydERhdGFbYl18fGQpZj1kP2Vbal06QihhLGosYiwic29ydCIpLGMuX2FTb3J0RGF0YVtiXT1nP2coZik6Zn1mdW5jdGlvbiB4YShhKXtpZihhLm9GZWF0dXJlcy5iU3RhdGVTYXZlJiYhYS5iRGVzdHJveWluZyl7dmFyIGI9e3RpbWU6K25ldyBEYXRlLHN0YXJ0OmEuX2lEaXNwbGF5U3RhcnQsbGVuZ3RoOmEuX2lEaXNwbGF5TGVuZ3RoLG9yZGVyOmguZXh0ZW5kKCEwLFtdLGEuYWFTb3J0aW5nKSxzZWFyY2g6emIoYS5vUHJldmlvdXNTZWFyY2gpLGNvbHVtbnM6aC5tYXAoYS5hb0NvbHVtbnMsZnVuY3Rpb24oYixkKXtyZXR1cm57dmlzaWJsZTpiLmJWaXNpYmxlLHNlYXJjaDp6YihhLmFvUHJlU2VhcmNoQ29sc1tkXSl9fSl9O3IoYSwiYW9TdGF0ZVNhdmVQYXJhbXMiLCJzdGF0ZVNhdmVQYXJhbXMiLFthLGJdKTthLm9TYXZlZFN0YXRlPWI7YS5mblN0YXRlU2F2ZUNhbGxiYWNrLmNhbGwoYS5vSW5zdGFuY2UsYSwKYil9fWZ1bmN0aW9uIEliKGEsYixjKXt2YXIgZCxlLGY9YS5hb0NvbHVtbnMsYj1mdW5jdGlvbihiKXtpZihiJiZiLnRpbWUpe3ZhciBnPXIoYSwiYW9TdGF0ZUxvYWRQYXJhbXMiLCJzdGF0ZUxvYWRQYXJhbXMiLFthLGJdKTtpZigtMT09PWguaW5BcnJheSghMSxnKSYmKGc9YS5pU3RhdGVEdXJhdGlvbiwhKDA8ZyYmYi50aW1lPCtuZXcgRGF0ZS0xRTMqZykmJiEoYi5jb2x1bW5zJiZmLmxlbmd0aCE9PWIuY29sdW1ucy5sZW5ndGgpKSl7YS5vTG9hZGVkU3RhdGU9aC5leHRlbmQoITAse30sYik7Yi5zdGFydCE9PWsmJihhLl9pRGlzcGxheVN0YXJ0PWIuc3RhcnQsYS5pSW5pdERpc3BsYXlTdGFydD1iLnN0YXJ0KTtiLmxlbmd0aCE9PWsmJihhLl9pRGlzcGxheUxlbmd0aD1iLmxlbmd0aCk7Yi5vcmRlciE9PWsmJihhLmFhU29ydGluZz1bXSxoLmVhY2goYi5vcmRlcixmdW5jdGlvbihiLGMpe2EuYWFTb3J0aW5nLnB1c2goY1swXT49Zi5sZW5ndGg/WzAsY1sxXV06Yyl9KSk7Yi5zZWFyY2ghPT0KayYmaC5leHRlbmQoYS5vUHJldmlvdXNTZWFyY2gsQWIoYi5zZWFyY2gpKTtpZihiLmNvbHVtbnMpe2Q9MDtmb3IoZT1iLmNvbHVtbnMubGVuZ3RoO2Q8ZTtkKyspZz1iLmNvbHVtbnNbZF0sZy52aXNpYmxlIT09ayYmKGZbZF0uYlZpc2libGU9Zy52aXNpYmxlKSxnLnNlYXJjaCE9PWsmJmguZXh0ZW5kKGEuYW9QcmVTZWFyY2hDb2xzW2RdLEFiKGcuc2VhcmNoKSl9cihhLCJhb1N0YXRlTG9hZGVkIiwic3RhdGVMb2FkZWQiLFthLGJdKX19YygpfTtpZihhLm9GZWF0dXJlcy5iU3RhdGVTYXZlKXt2YXIgZz1hLmZuU3RhdGVMb2FkQ2FsbGJhY2suY2FsbChhLm9JbnN0YW5jZSxhLGIpO2chPT1rJiZiKGcpfWVsc2UgYygpfWZ1bmN0aW9uIHlhKGEpe3ZhciBiPW0uc2V0dGluZ3MsYT1oLmluQXJyYXkoYSxEKGIsIm5UYWJsZSIpKTtyZXR1cm4tMSE9PWE/YlthXTpudWxsfWZ1bmN0aW9uIEooYSxiLGMsZCl7Yz0iRGF0YVRhYmxlcyB3YXJuaW5nOiAiKyhhPyJ0YWJsZSBpZD0iK2Euc1RhYmxlSWQrCiIgLSAiOiIiKStjO2QmJihjKz0iLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIGVycm9yLCBwbGVhc2Ugc2VlIGh0dHA6Ly9kYXRhdGFibGVzLm5ldC90bi8iK2QpO2lmKGIpRS5jb25zb2xlJiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2coYyk7ZWxzZSBpZihiPW0uZXh0LGI9Yi5zRXJyTW9kZXx8Yi5lcnJNb2RlLGEmJnIoYSxudWxsLCJlcnJvciIsW2EsZCxjXSksImFsZXJ0Ij09YilhbGVydChjKTtlbHNle2lmKCJ0aHJvdyI9PWIpdGhyb3cgRXJyb3IoYyk7ImZ1bmN0aW9uIj09dHlwZW9mIGImJmIoYSxkLGMpfX1mdW5jdGlvbiBGKGEsYixjLGQpe2guaXNBcnJheShjKT9oLmVhY2goYyxmdW5jdGlvbihjLGQpe2guaXNBcnJheShkKT9GKGEsYixkWzBdLGRbMV0pOkYoYSxiLGQpfSk6KGQ9PT1rJiYoZD1jKSxiW2NdIT09ayYmKGFbZF09YltjXSkpfWZ1bmN0aW9uIEpiKGEsYixjKXt2YXIgZCxlO2ZvcihlIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShlKSYmKGQ9YltlXSwKaC5pc1BsYWluT2JqZWN0KGQpPyhoLmlzUGxhaW5PYmplY3QoYVtlXSl8fChhW2VdPXt9KSxoLmV4dGVuZCghMCxhW2VdLGQpKTphW2VdPWMmJiJkYXRhIiE9PWUmJiJhYURhdGEiIT09ZSYmaC5pc0FycmF5KGQpP2Quc2xpY2UoKTpkKTtyZXR1cm4gYX1mdW5jdGlvbiBWYShhLGIsYyl7aChhKS5vbigiY2xpY2suRFQiLGIsZnVuY3Rpb24oYil7YS5ibHVyKCk7YyhiKX0pLm9uKCJrZXlwcmVzcy5EVCIsYixmdW5jdGlvbihhKXsxMz09PWEud2hpY2gmJihhLnByZXZlbnREZWZhdWx0KCksYyhhKSl9KS5vbigic2VsZWN0c3RhcnQuRFQiLGZ1bmN0aW9uKCl7cmV0dXJuITF9KX1mdW5jdGlvbiB6KGEsYixjLGQpe2MmJmFbYl0ucHVzaCh7Zm46YyxzTmFtZTpkfSl9ZnVuY3Rpb24gcihhLGIsYyxkKXt2YXIgZT1bXTtiJiYoZT1oLm1hcChhW2JdLnNsaWNlKCkucmV2ZXJzZSgpLGZ1bmN0aW9uKGIpe3JldHVybiBiLmZuLmFwcGx5KGEub0luc3RhbmNlLGQpfSkpO251bGwhPT1jJiYoYj1oLkV2ZW50KGMrCiIuZHQiKSxoKGEublRhYmxlKS50cmlnZ2VyKGIsZCksZS5wdXNoKGIucmVzdWx0KSk7cmV0dXJuIGV9ZnVuY3Rpb24gUmEoYSl7dmFyIGI9YS5faURpc3BsYXlTdGFydCxjPWEuZm5EaXNwbGF5RW5kKCksZD1hLl9pRGlzcGxheUxlbmd0aDtiPj1jJiYoYj1jLWQpO2ItPWIlZDtpZigtMT09PWR8fDA+YiliPTA7YS5faURpc3BsYXlTdGFydD1ifWZ1bmN0aW9uIE1hKGEsYil7dmFyIGM9YS5yZW5kZXJlcixkPW0uZXh0LnJlbmRlcmVyW2JdO3JldHVybiBoLmlzUGxhaW5PYmplY3QoYykmJmNbYl0/ZFtjW2JdXXx8ZC5fOiJzdHJpbmciPT09dHlwZW9mIGM/ZFtjXXx8ZC5fOmQuX31mdW5jdGlvbiB5KGEpe3JldHVybiBhLm9GZWF0dXJlcy5iU2VydmVyU2lkZT8ic3NwIjphLmFqYXh8fGEuc0FqYXhTb3VyY2U/ImFqYXgiOiJkb20ifWZ1bmN0aW9uIGhhKGEsYil7dmFyIGM9W10sYz1LYi5udW1iZXJzX2xlbmd0aCxkPU1hdGguZmxvb3IoYy8yKTtiPD1jP2M9VygwLGIpOmE8PWQ/KGM9VygwLApjLTIpLGMucHVzaCgiZWxsaXBzaXMiKSxjLnB1c2goYi0xKSk6KGE+PWItMS1kP2M9VyhiLShjLTIpLGIpOihjPVcoYS1kKzIsYStkLTEpLGMucHVzaCgiZWxsaXBzaXMiKSxjLnB1c2goYi0xKSksYy5zcGxpY2UoMCwwLCJlbGxpcHNpcyIpLGMuc3BsaWNlKDAsMCwwKSk7Yy5EVF9lbD0ic3BhbiI7cmV0dXJuIGN9ZnVuY3Rpb24gY2IoYSl7aC5lYWNoKHtudW06ZnVuY3Rpb24oYil7cmV0dXJuIHphKGIsYSl9LCJudW0tZm10IjpmdW5jdGlvbihiKXtyZXR1cm4gemEoYixhLFdhKX0sImh0bWwtbnVtIjpmdW5jdGlvbihiKXtyZXR1cm4gemEoYixhLEFhKX0sImh0bWwtbnVtLWZtdCI6ZnVuY3Rpb24oYil7cmV0dXJuIHphKGIsYSxBYSxXYSl9fSxmdW5jdGlvbihiLGMpe3gudHlwZS5vcmRlcltiK2ErIi1wcmUiXT1jO2IubWF0Y2goL15odG1sXC0vKSYmKHgudHlwZS5zZWFyY2hbYithXT14LnR5cGUuc2VhcmNoLmh0bWwpfSl9ZnVuY3Rpb24gTGIoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9Clt5YSh0aGlzW20uZXh0LmlBcGlJbmRleF0pXS5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIG0uZXh0LmludGVybmFsW2FdLmFwcGx5KHRoaXMsYil9fXZhciBtPWZ1bmN0aW9uKGEpe3RoaXMuJD1mdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmFwaSghMCkuJChhLGIpfTt0aGlzLl89ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5hcGkoITApLnJvd3MoYSxiKS5kYXRhKCl9O3RoaXMuYXBpPWZ1bmN0aW9uKGEpe3JldHVybiBhP25ldyBzKHlhKHRoaXNbeC5pQXBpSW5kZXhdKSk6bmV3IHModGhpcyl9O3RoaXMuZm5BZGREYXRhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5hcGkoITApLGQ9aC5pc0FycmF5KGEpJiYoaC5pc0FycmF5KGFbMF0pfHxoLmlzUGxhaW5PYmplY3QoYVswXSkpP2Mucm93cy5hZGQoYSk6Yy5yb3cuYWRkKGEpOyhiPT09a3x8YikmJmMuZHJhdygpO3JldHVybiBkLmZsYXR0ZW4oKS50b0FycmF5KCl9O3RoaXMuZm5BZGp1c3RDb2x1bW5TaXppbmc9CmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYXBpKCEwKS5jb2x1bW5zLmFkanVzdCgpLGM9Yi5zZXR0aW5ncygpWzBdLGQ9Yy5vU2Nyb2xsO2E9PT1rfHxhP2IuZHJhdyghMSk6KCIiIT09ZC5zWHx8IiIhPT1kLnNZKSYma2EoYyl9O3RoaXMuZm5DbGVhclRhYmxlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuYXBpKCEwKS5jbGVhcigpOyhhPT09a3x8YSkmJmIuZHJhdygpfTt0aGlzLmZuQ2xvc2U9ZnVuY3Rpb24oYSl7dGhpcy5hcGkoITApLnJvdyhhKS5jaGlsZC5oaWRlKCl9O3RoaXMuZm5EZWxldGVSb3c9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXRoaXMuYXBpKCEwKSxhPWQucm93cyhhKSxlPWEuc2V0dGluZ3MoKVswXSxoPWUuYW9EYXRhW2FbMF1bMF1dO2EucmVtb3ZlKCk7YiYmYi5jYWxsKHRoaXMsZSxoKTsoYz09PWt8fGMpJiZkLmRyYXcoKTtyZXR1cm4gaH07dGhpcy5mbkRlc3Ryb3k9ZnVuY3Rpb24oYSl7dGhpcy5hcGkoITApLmRlc3Ryb3koYSl9O3RoaXMuZm5EcmF3PWZ1bmN0aW9uKGEpe3RoaXMuYXBpKCEwKS5kcmF3KGEpfTsKdGhpcy5mbkZpbHRlcj1mdW5jdGlvbihhLGIsYyxkLGUsaCl7ZT10aGlzLmFwaSghMCk7bnVsbD09PWJ8fGI9PT1rP2Uuc2VhcmNoKGEsYyxkLGgpOmUuY29sdW1uKGIpLnNlYXJjaChhLGMsZCxoKTtlLmRyYXcoKX07dGhpcy5mbkdldERhdGE9ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmFwaSghMCk7aWYoYSE9PWspe3ZhciBkPWEubm9kZU5hbWU/YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOiIiO3JldHVybiBiIT09a3x8InRkIj09ZHx8InRoIj09ZD9jLmNlbGwoYSxiKS5kYXRhKCk6Yy5yb3coYSkuZGF0YSgpfHxudWxsfXJldHVybiBjLmRhdGEoKS50b0FycmF5KCl9O3RoaXMuZm5HZXROb2Rlcz1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmFwaSghMCk7cmV0dXJuIGEhPT1rP2Iucm93KGEpLm5vZGUoKTpiLnJvd3MoKS5ub2RlcygpLmZsYXR0ZW4oKS50b0FycmF5KCl9O3RoaXMuZm5HZXRQb3NpdGlvbj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLmFwaSghMCksYz1hLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk7CnJldHVybiJUUiI9PWM/Yi5yb3coYSkuaW5kZXgoKToiVEQiPT1jfHwiVEgiPT1jPyhhPWIuY2VsbChhKS5pbmRleCgpLFthLnJvdyxhLmNvbHVtblZpc2libGUsYS5jb2x1bW5dKTpudWxsfTt0aGlzLmZuSXNPcGVuPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmFwaSghMCkucm93KGEpLmNoaWxkLmlzU2hvd24oKX07dGhpcy5mbk9wZW49ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLmFwaSghMCkucm93KGEpLmNoaWxkKGIsYykuc2hvdygpLmNoaWxkKClbMF19O3RoaXMuZm5QYWdlQ2hhbmdlPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5hcGkoITApLnBhZ2UoYSk7KGI9PT1rfHxiKSYmYy5kcmF3KCExKX07dGhpcy5mblNldENvbHVtblZpcz1mdW5jdGlvbihhLGIsYyl7YT10aGlzLmFwaSghMCkuY29sdW1uKGEpLnZpc2libGUoYik7KGM9PT1rfHxjKSYmYS5jb2x1bW5zLmFkanVzdCgpLmRyYXcoKX07dGhpcy5mblNldHRpbmdzPWZ1bmN0aW9uKCl7cmV0dXJuIHlhKHRoaXNbeC5pQXBpSW5kZXhdKX07CnRoaXMuZm5Tb3J0PWZ1bmN0aW9uKGEpe3RoaXMuYXBpKCEwKS5vcmRlcihhKS5kcmF3KCl9O3RoaXMuZm5Tb3J0TGlzdGVuZXI9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuYXBpKCEwKS5vcmRlci5saXN0ZW5lcihhLGIsYyl9O3RoaXMuZm5VcGRhdGU9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgaD10aGlzLmFwaSghMCk7Yz09PWt8fG51bGw9PT1jP2gucm93KGIpLmRhdGEoYSk6aC5jZWxsKGIsYykuZGF0YShhKTsoZT09PWt8fGUpJiZoLmNvbHVtbnMuYWRqdXN0KCk7KGQ9PT1rfHxkKSYmaC5kcmF3KCk7cmV0dXJuIDB9O3RoaXMuZm5WZXJzaW9uQ2hlY2s9eC5mblZlcnNpb25DaGVjazt2YXIgYj10aGlzLGM9YT09PWssZD10aGlzLmxlbmd0aDtjJiYoYT17fSk7dGhpcy5vQXBpPXRoaXMuaW50ZXJuYWw9eC5pbnRlcm5hbDtmb3IodmFyIGUgaW4gbS5leHQuaW50ZXJuYWwpZSYmKHRoaXNbZV09TGIoZSkpO3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBlPXt9LGc9MTxkP0piKGUsYSwhMCk6CmEsaj0wLGksZT10aGlzLmdldEF0dHJpYnV0ZSgiaWQiKSxuPSExLGw9bS5kZWZhdWx0cyxxPWgodGhpcyk7aWYoInRhYmxlIiE9dGhpcy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKUoobnVsbCwwLCJOb24tdGFibGUgbm9kZSBpbml0aWFsaXNhdGlvbiAoIit0aGlzLm5vZGVOYW1lKyIpIiwyKTtlbHNle2RiKGwpO2ViKGwuY29sdW1uKTtJKGwsbCwhMCk7SShsLmNvbHVtbixsLmNvbHVtbiwhMCk7SShsLGguZXh0ZW5kKGcscS5kYXRhKCkpKTt2YXIgdD1tLnNldHRpbmdzLGo9MDtmb3IoaT10Lmxlbmd0aDtqPGk7aisrKXt2YXIgbz10W2pdO2lmKG8ublRhYmxlPT10aGlzfHxvLm5USGVhZC5wYXJlbnROb2RlPT10aGlzfHxvLm5URm9vdCYmby5uVEZvb3QucGFyZW50Tm9kZT09dGhpcyl7dmFyIHM9Zy5iUmV0cmlldmUhPT1rP2cuYlJldHJpZXZlOmwuYlJldHJpZXZlO2lmKGN8fHMpcmV0dXJuIG8ub0luc3RhbmNlO2lmKGcuYkRlc3Ryb3khPT1rP2cuYkRlc3Ryb3k6bC5iRGVzdHJveSl7by5vSW5zdGFuY2UuZm5EZXN0cm95KCk7CmJyZWFrfWVsc2V7SihvLDAsIkNhbm5vdCByZWluaXRpYWxpc2UgRGF0YVRhYmxlIiwzKTtyZXR1cm59fWlmKG8uc1RhYmxlSWQ9PXRoaXMuaWQpe3Quc3BsaWNlKGosMSk7YnJlYWt9fWlmKG51bGw9PT1lfHwiIj09PWUpdGhpcy5pZD1lPSJEYXRhVGFibGVzX1RhYmxlXyIrbS5leHQuX3VuaXF1ZSsrO3ZhciBwPWguZXh0ZW5kKCEwLHt9LG0ubW9kZWxzLm9TZXR0aW5ncyx7c0Rlc3Ryb3lXaWR0aDpxWzBdLnN0eWxlLndpZHRoLHNJbnN0YW5jZTplLHNUYWJsZUlkOmV9KTtwLm5UYWJsZT10aGlzO3Aub0FwaT1iLmludGVybmFsO3Aub0luaXQ9Zzt0LnB1c2gocCk7cC5vSW5zdGFuY2U9MT09PWIubGVuZ3RoP2I6cS5kYXRhVGFibGUoKTtkYihnKTtnLm9MYW5ndWFnZSYmQ2EoZy5vTGFuZ3VhZ2UpO2cuYUxlbmd0aE1lbnUmJiFnLmlEaXNwbGF5TGVuZ3RoJiYoZy5pRGlzcGxheUxlbmd0aD1oLmlzQXJyYXkoZy5hTGVuZ3RoTWVudVswXSk/Zy5hTGVuZ3RoTWVudVswXVswXTpnLmFMZW5ndGhNZW51WzBdKTsKZz1KYihoLmV4dGVuZCghMCx7fSxsKSxnKTtGKHAub0ZlYXR1cmVzLGcsImJQYWdpbmF0ZSBiTGVuZ3RoQ2hhbmdlIGJGaWx0ZXIgYlNvcnQgYlNvcnRNdWx0aSBiSW5mbyBiUHJvY2Vzc2luZyBiQXV0b1dpZHRoIGJTb3J0Q2xhc3NlcyBiU2VydmVyU2lkZSBiRGVmZXJSZW5kZXIiLnNwbGl0KCIgIikpO0YocCxnLFsiYXNTdHJpcGVDbGFzc2VzIiwiYWpheCIsImZuU2VydmVyRGF0YSIsImZuRm9ybWF0TnVtYmVyIiwic1NlcnZlck1ldGhvZCIsImFhU29ydGluZyIsImFhU29ydGluZ0ZpeGVkIiwiYUxlbmd0aE1lbnUiLCJzUGFnaW5hdGlvblR5cGUiLCJzQWpheFNvdXJjZSIsInNBamF4RGF0YVByb3AiLCJpU3RhdGVEdXJhdGlvbiIsInNEb20iLCJiU29ydENlbGxzVG9wIiwiaVRhYkluZGV4IiwiZm5TdGF0ZUxvYWRDYWxsYmFjayIsImZuU3RhdGVTYXZlQ2FsbGJhY2siLCJyZW5kZXJlciIsInNlYXJjaERlbGF5Iiwicm93SWQiLFsiaUNvb2tpZUR1cmF0aW9uIiwiaVN0YXRlRHVyYXRpb24iXSwKWyJvU2VhcmNoIiwib1ByZXZpb3VzU2VhcmNoIl0sWyJhb1NlYXJjaENvbHMiLCJhb1ByZVNlYXJjaENvbHMiXSxbImlEaXNwbGF5TGVuZ3RoIiwiX2lEaXNwbGF5TGVuZ3RoIl1dKTtGKHAub1Njcm9sbCxnLFtbInNTY3JvbGxYIiwic1giXSxbInNTY3JvbGxYSW5uZXIiLCJzWElubmVyIl0sWyJzU2Nyb2xsWSIsInNZIl0sWyJiU2Nyb2xsQ29sbGFwc2UiLCJiQ29sbGFwc2UiXV0pO0YocC5vTGFuZ3VhZ2UsZywiZm5JbmZvQ2FsbGJhY2siKTt6KHAsImFvRHJhd0NhbGxiYWNrIixnLmZuRHJhd0NhbGxiYWNrLCJ1c2VyIik7eihwLCJhb1NlcnZlclBhcmFtcyIsZy5mblNlcnZlclBhcmFtcywidXNlciIpO3oocCwiYW9TdGF0ZVNhdmVQYXJhbXMiLGcuZm5TdGF0ZVNhdmVQYXJhbXMsInVzZXIiKTt6KHAsImFvU3RhdGVMb2FkUGFyYW1zIixnLmZuU3RhdGVMb2FkUGFyYW1zLCJ1c2VyIik7eihwLCJhb1N0YXRlTG9hZGVkIixnLmZuU3RhdGVMb2FkZWQsInVzZXIiKTt6KHAsImFvUm93Q2FsbGJhY2siLApnLmZuUm93Q2FsbGJhY2ssInVzZXIiKTt6KHAsImFvUm93Q3JlYXRlZENhbGxiYWNrIixnLmZuQ3JlYXRlZFJvdywidXNlciIpO3oocCwiYW9IZWFkZXJDYWxsYmFjayIsZy5mbkhlYWRlckNhbGxiYWNrLCJ1c2VyIik7eihwLCJhb0Zvb3RlckNhbGxiYWNrIixnLmZuRm9vdGVyQ2FsbGJhY2ssInVzZXIiKTt6KHAsImFvSW5pdENvbXBsZXRlIixnLmZuSW5pdENvbXBsZXRlLCJ1c2VyIik7eihwLCJhb1ByZURyYXdDYWxsYmFjayIsZy5mblByZURyYXdDYWxsYmFjaywidXNlciIpO3Aucm93SWRGbj1RKGcucm93SWQpO2ZiKHApO3ZhciB1PXAub0NsYXNzZXM7aC5leHRlbmQodSxtLmV4dC5jbGFzc2VzLGcub0NsYXNzZXMpO3EuYWRkQ2xhc3ModS5zVGFibGUpO3AuaUluaXREaXNwbGF5U3RhcnQ9PT1rJiYocC5pSW5pdERpc3BsYXlTdGFydD1nLmlEaXNwbGF5U3RhcnQscC5faURpc3BsYXlTdGFydD1nLmlEaXNwbGF5U3RhcnQpO251bGwhPT1nLmlEZWZlckxvYWRpbmcmJihwLmJEZWZlckxvYWRpbmc9CiEwLGU9aC5pc0FycmF5KGcuaURlZmVyTG9hZGluZykscC5faVJlY29yZHNEaXNwbGF5PWU/Zy5pRGVmZXJMb2FkaW5nWzBdOmcuaURlZmVyTG9hZGluZyxwLl9pUmVjb3Jkc1RvdGFsPWU/Zy5pRGVmZXJMb2FkaW5nWzFdOmcuaURlZmVyTG9hZGluZyk7dmFyIHY9cC5vTGFuZ3VhZ2U7aC5leHRlbmQoITAsdixnLm9MYW5ndWFnZSk7di5zVXJsJiYoaC5hamF4KHtkYXRhVHlwZToianNvbiIsdXJsOnYuc1VybCxzdWNjZXNzOmZ1bmN0aW9uKGEpe0NhKGEpO0kobC5vTGFuZ3VhZ2UsYSk7aC5leHRlbmQodHJ1ZSx2LGEpO2dhKHApfSxlcnJvcjpmdW5jdGlvbigpe2dhKHApfX0pLG49ITApO251bGw9PT1nLmFzU3RyaXBlQ2xhc3NlcyYmKHAuYXNTdHJpcGVDbGFzc2VzPVt1LnNTdHJpcGVPZGQsdS5zU3RyaXBlRXZlbl0pO3ZhciBlPXAuYXNTdHJpcGVDbGFzc2VzLHg9cS5jaGlsZHJlbigidGJvZHkiKS5maW5kKCJ0ciIpLmVxKDApOy0xIT09aC5pbkFycmF5KCEwLGgubWFwKGUsZnVuY3Rpb24oYSl7cmV0dXJuIHguaGFzQ2xhc3MoYSl9KSkmJgooaCgidGJvZHkgdHIiLHRoaXMpLnJlbW92ZUNsYXNzKGUuam9pbigiICIpKSxwLmFzRGVzdHJveVN0cmlwZXM9ZS5zbGljZSgpKTtlPVtdO3Q9dGhpcy5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGhlYWQiKTswIT09dC5sZW5ndGgmJihkYShwLmFvSGVhZGVyLHRbMF0pLGU9cmEocCkpO2lmKG51bGw9PT1nLmFvQ29sdW1ucyl7dD1bXTtqPTA7Zm9yKGk9ZS5sZW5ndGg7ajxpO2orKyl0LnB1c2gobnVsbCl9ZWxzZSB0PWcuYW9Db2x1bW5zO2o9MDtmb3IoaT10Lmxlbmd0aDtqPGk7aisrKURhKHAsZT9lW2pdOm51bGwpO2hiKHAsZy5hb0NvbHVtbkRlZnMsdCxmdW5jdGlvbihhLGIpe2phKHAsYSxiKX0pO2lmKHgubGVuZ3RoKXt2YXIgdz1mdW5jdGlvbihhLGIpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiZGF0YS0iK2IpIT09bnVsbD9iOm51bGx9O2goeFswXSkuY2hpbGRyZW4oInRoLCB0ZCIpLmVhY2goZnVuY3Rpb24oYSxiKXt2YXIgYz1wLmFvQ29sdW1uc1thXTtpZihjLm1EYXRhPT09CmEpe3ZhciBkPXcoYiwic29ydCIpfHx3KGIsIm9yZGVyIiksZT13KGIsImZpbHRlciIpfHx3KGIsInNlYXJjaCIpO2lmKGQhPT1udWxsfHxlIT09bnVsbCl7Yy5tRGF0YT17XzphKyIuZGlzcGxheSIsc29ydDpkIT09bnVsbD9hKyIuQGRhdGEtIitkOmssdHlwZTpkIT09bnVsbD9hKyIuQGRhdGEtIitkOmssZmlsdGVyOmUhPT1udWxsP2ErIi5AZGF0YS0iK2U6a307amEocCxhKX19fSl9dmFyIFQ9cC5vRmVhdHVyZXMsZT1mdW5jdGlvbigpe2lmKGcuYWFTb3J0aW5nPT09ayl7dmFyIGE9cC5hYVNvcnRpbmc7aj0wO2ZvcihpPWEubGVuZ3RoO2o8aTtqKyspYVtqXVsxXT1wLmFvQ29sdW1uc1tqXS5hc1NvcnRpbmdbMF19d2EocCk7VC5iU29ydCYmeihwLCJhb0RyYXdDYWxsYmFjayIsZnVuY3Rpb24oKXtpZihwLmJTb3J0ZWQpe3ZhciBhPVYocCksYj17fTtoLmVhY2goYSxmdW5jdGlvbihhLGMpe2JbYy5zcmNdPWMuZGlyfSk7cihwLG51bGwsIm9yZGVyIixbcCxhLGJdKTtIYihwKX19KTsKeihwLCJhb0RyYXdDYWxsYmFjayIsZnVuY3Rpb24oKXsocC5iU29ydGVkfHx5KHApPT09InNzcCJ8fFQuYkRlZmVyUmVuZGVyKSYmd2EocCl9LCJzYyIpO3ZhciBhPXEuY2hpbGRyZW4oImNhcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5fY2FwdGlvblNpZGU9aCh0aGlzKS5jc3MoImNhcHRpb24tc2lkZSIpfSksYj1xLmNoaWxkcmVuKCJ0aGVhZCIpO2IubGVuZ3RoPT09MCYmKGI9aCgiPHRoZWFkLz4iKS5hcHBlbmRUbyhxKSk7cC5uVEhlYWQ9YlswXTtiPXEuY2hpbGRyZW4oInRib2R5Iik7Yi5sZW5ndGg9PT0wJiYoYj1oKCI8dGJvZHkvPiIpLmFwcGVuZFRvKHEpKTtwLm5UQm9keT1iWzBdO2I9cS5jaGlsZHJlbigidGZvb3QiKTtpZihiLmxlbmd0aD09PTAmJmEubGVuZ3RoPjAmJihwLm9TY3JvbGwuc1ghPT0iInx8cC5vU2Nyb2xsLnNZIT09IiIpKWI9aCgiPHRmb290Lz4iKS5hcHBlbmRUbyhxKTtpZihiLmxlbmd0aD09PTB8fGIuY2hpbGRyZW4oKS5sZW5ndGg9PT0wKXEuYWRkQ2xhc3ModS5zTm9Gb290ZXIpOwplbHNlIGlmKGIubGVuZ3RoPjApe3AublRGb290PWJbMF07ZGEocC5hb0Zvb3RlcixwLm5URm9vdCl9aWYoZy5hYURhdGEpZm9yKGo9MDtqPGcuYWFEYXRhLmxlbmd0aDtqKyspTShwLGcuYWFEYXRhW2pdKTtlbHNlKHAuYkRlZmVyTG9hZGluZ3x8eShwKT09ImRvbSIpJiZtYShwLGgocC5uVEJvZHkpLmNoaWxkcmVuKCJ0ciIpKTtwLmFpRGlzcGxheT1wLmFpRGlzcGxheU1hc3Rlci5zbGljZSgpO3AuYkluaXRpYWxpc2VkPXRydWU7bj09PWZhbHNlJiZnYShwKX07Zy5iU3RhdGVTYXZlPyhULmJTdGF0ZVNhdmU9ITAseihwLCJhb0RyYXdDYWxsYmFjayIseGEsInN0YXRlX3NhdmUiKSxJYihwLGcsZSkpOmUoKX19KTtiPW51bGw7cmV0dXJuIHRoaXN9LHgscyxvLHUsWGE9e30sTWI9L1tcclxuXS9nLEFhPS88Lio/Pi9nLFpiPS9eXGR7Miw0fVtcLlwvXC1dXGR7MSwyfVtcLlwvXC1dXGR7MSwyfShbVCBdezF9XGR7MSwyfVs6XC5dXGR7Mn0oW1wuOl1cZHsyfSk/KT8kLywkYj1SZWdFeHAoIihcXC98XFwufFxcKnxcXCt8XFw/fFxcfHxcXCh8XFwpfFxcW3xcXF18XFx7fFxcfXxcXFxcfFxcJHxcXF58XFwtKSIsCiJnIiksV2E9L1snLCTCo+KCrMKlJVx1MjAwOVx1MjAyRlx1MjBCRFx1MjBhOVx1MjBCQXJma10vZ2ksTD1mdW5jdGlvbihhKXtyZXR1cm4hYXx8ITA9PT1hfHwiLSI9PT1hPyEwOiExfSxOYj1mdW5jdGlvbihhKXt2YXIgYj1wYXJzZUludChhLDEwKTtyZXR1cm4haXNOYU4oYikmJmlzRmluaXRlKGEpP2I6bnVsbH0sT2I9ZnVuY3Rpb24oYSxiKXtYYVtiXXx8KFhhW2JdPVJlZ0V4cChQYShiKSwiZyIpKTtyZXR1cm4ic3RyaW5nIj09PXR5cGVvZiBhJiYiLiIhPT1iP2EucmVwbGFjZSgvXC4vZywiIikucmVwbGFjZShYYVtiXSwiLiIpOmF9LFlhPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ic3RyaW5nIj09PXR5cGVvZiBhO2lmKEwoYSkpcmV0dXJuITA7YiYmZCYmKGE9T2IoYSxiKSk7YyYmZCYmKGE9YS5yZXBsYWNlKFdhLCIiKSk7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQoYSkpJiZpc0Zpbml0ZShhKX0sUGI9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBMKGEpPyEwOiEoTChhKXx8InN0cmluZyI9PT0KdHlwZW9mIGEpP251bGw6WWEoYS5yZXBsYWNlKEFhLCIiKSxiLGMpPyEwOm51bGx9LEQ9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPVtdLGU9MCxmPWEubGVuZ3RoO2lmKGMhPT1rKWZvcig7ZTxmO2UrKylhW2VdJiZhW2VdW2JdJiZkLnB1c2goYVtlXVtiXVtjXSk7ZWxzZSBmb3IoO2U8ZjtlKyspYVtlXSYmZC5wdXNoKGFbZV1bYl0pO3JldHVybiBkfSxpYT1mdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1bXSxmPTAsZz1iLmxlbmd0aDtpZihkIT09aylmb3IoO2Y8ZztmKyspYVtiW2ZdXVtjXSYmZS5wdXNoKGFbYltmXV1bY11bZF0pO2Vsc2UgZm9yKDtmPGc7ZisrKWUucHVzaChhW2JbZl1dW2NdKTtyZXR1cm4gZX0sVz1mdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ7Yj09PWs/KGI9MCxkPWEpOihkPWIsYj1hKTtmb3IodmFyIGU9YjtlPGQ7ZSsrKWMucHVzaChlKTtyZXR1cm4gY30sUWI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVtdLGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspYVtjXSYmYi5wdXNoKGFbY10pOwpyZXR1cm4gYn0scWE9ZnVuY3Rpb24oYSl7dmFyIGI7YTp7aWYoISgyPmEubGVuZ3RoKSl7Yj1hLnNsaWNlKCkuc29ydCgpO2Zvcih2YXIgYz1iWzBdLGQ9MSxlPWIubGVuZ3RoO2Q8ZTtkKyspe2lmKGJbZF09PT1jKXtiPSExO2JyZWFrIGF9Yz1iW2RdfX1iPSEwfWlmKGIpcmV0dXJuIGEuc2xpY2UoKTtiPVtdO3ZhciBlPWEubGVuZ3RoLGYsZz0wLGQ9MDthOmZvcig7ZDxlO2QrKyl7Yz1hW2RdO2ZvcihmPTA7ZjxnO2YrKylpZihiW2ZdPT09Yyljb250aW51ZSBhO2IucHVzaChjKTtnKyt9cmV0dXJuIGJ9O20udXRpbD17dGhyb3R0bGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iIT09az9iOjIwMCxkLGU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxnPStuZXcgRGF0ZSxqPWFyZ3VtZW50cztkJiZnPGQrYz8oY2xlYXJUaW1lb3V0KGUpLGU9c2V0VGltZW91dChmdW5jdGlvbigpe2Q9azthLmFwcGx5KGIsail9LGMpKTooZD1nLGEuYXBwbHkoYixqKSl9fSxlc2NhcGVSZWdleDpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKCRiLAoiXFwkMSIpfX07dmFyIEE9ZnVuY3Rpb24oYSxiLGMpe2FbYl0hPT1rJiYoYVtjXT1hW2JdKX0sYmE9L1xbLio/XF0kLyxVPS9cKFwpJC8sUGE9bS51dGlsLmVzY2FwZVJlZ2V4LHZhPWgoIjxkaXY+IilbMF0sV2I9dmEudGV4dENvbnRlbnQhPT1rLFliPS88Lio/Pi9nLE5hPW0udXRpbC50aHJvdHRsZSxSYj1bXSx3PUFycmF5LnByb3RvdHlwZSxhYz1mdW5jdGlvbihhKXt2YXIgYixjLGQ9bS5zZXR0aW5ncyxlPWgubWFwKGQsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRhYmxlfSk7aWYoYSl7aWYoYS5uVGFibGUmJmEub0FwaSlyZXR1cm5bYV07aWYoYS5ub2RlTmFtZSYmInRhYmxlIj09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKSlyZXR1cm4gYj1oLmluQXJyYXkoYSxlKSwtMSE9PWI/W2RbYl1dOm51bGw7aWYoYSYmImZ1bmN0aW9uIj09PXR5cGVvZiBhLnNldHRpbmdzKXJldHVybiBhLnNldHRpbmdzKCkudG9BcnJheSgpOyJzdHJpbmciPT09dHlwZW9mIGE/Yz1oKGEpOmEgaW5zdGFuY2VvZgpoJiYoYz1hKX1lbHNlIHJldHVybltdO2lmKGMpcmV0dXJuIGMubWFwKGZ1bmN0aW9uKCl7Yj1oLmluQXJyYXkodGhpcyxlKTtyZXR1cm4tMSE9PWI/ZFtiXTpudWxsfSkudG9BcnJheSgpfTtzPWZ1bmN0aW9uKGEsYil7aWYoISh0aGlzIGluc3RhbmNlb2YgcykpcmV0dXJuIG5ldyBzKGEsYik7dmFyIGM9W10sZD1mdW5jdGlvbihhKXsoYT1hYyhhKSkmJihjPWMuY29uY2F0KGEpKX07aWYoaC5pc0FycmF5KGEpKWZvcih2YXIgZT0wLGY9YS5sZW5ndGg7ZTxmO2UrKylkKGFbZV0pO2Vsc2UgZChhKTt0aGlzLmNvbnRleHQ9cWEoYyk7YiYmaC5tZXJnZSh0aGlzLGIpO3RoaXMuc2VsZWN0b3I9e3Jvd3M6bnVsbCxjb2xzOm51bGwsb3B0czpudWxsfTtzLmV4dGVuZCh0aGlzLHRoaXMsUmIpfTttLkFwaT1zO2guZXh0ZW5kKHMucHJvdG90eXBlLHthbnk6ZnVuY3Rpb24oKXtyZXR1cm4gMCE9PXRoaXMuY291bnQoKX0sY29uY2F0OncuY29uY2F0LGNvbnRleHQ6W10sY291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mbGF0dGVuKCkubGVuZ3RofSwKZWFjaDpmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2I8YztiKyspYS5jYWxsKHRoaXMsdGhpc1tiXSxiLHRoaXMpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbnRleHQ7cmV0dXJuIGIubGVuZ3RoPmE/bmV3IHMoYlthXSx0aGlzW2FdKTpudWxsfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7dmFyIGI9W107aWYody5maWx0ZXIpYj13LmZpbHRlci5jYWxsKHRoaXMsYSx0aGlzKTtlbHNlIGZvcih2YXIgYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKylhLmNhbGwodGhpcyx0aGlzW2NdLGMsdGhpcykmJmIucHVzaCh0aGlzW2NdKTtyZXR1cm4gbmV3IHModGhpcy5jb250ZXh0LGIpfSxmbGF0dGVuOmZ1bmN0aW9uKCl7dmFyIGE9W107cmV0dXJuIG5ldyBzKHRoaXMuY29udGV4dCxhLmNvbmNhdC5hcHBseShhLHRoaXMudG9BcnJheSgpKSl9LGpvaW46dy5qb2luLGluZGV4T2Y6dy5pbmRleE9mfHxmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1ifHwwLApkPXRoaXMubGVuZ3RoO2M8ZDtjKyspaWYodGhpc1tjXT09PWEpcmV0dXJuIGM7cmV0dXJuLTF9LGl0ZXJhdG9yOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPVtdLGYsZyxqLGgsbixsPXRoaXMuY29udGV4dCxtLG8sdT10aGlzLnNlbGVjdG9yOyJzdHJpbmciPT09dHlwZW9mIGEmJihkPWMsYz1iLGI9YSxhPSExKTtnPTA7Zm9yKGo9bC5sZW5ndGg7ZzxqO2crKyl7dmFyIHI9bmV3IHMobFtnXSk7aWYoInRhYmxlIj09PWIpZj1jLmNhbGwocixsW2ddLGcpLGYhPT1rJiZlLnB1c2goZik7ZWxzZSBpZigiY29sdW1ucyI9PT1ifHwicm93cyI9PT1iKWY9Yy5jYWxsKHIsbFtnXSx0aGlzW2ddLGcpLGYhPT1rJiZlLnB1c2goZik7ZWxzZSBpZigiY29sdW1uIj09PWJ8fCJjb2x1bW4tcm93cyI9PT1ifHwicm93Ij09PWJ8fCJjZWxsIj09PWIpe289dGhpc1tnXTsiY29sdW1uLXJvd3MiPT09YiYmKG09QmEobFtnXSx1Lm9wdHMpKTtoPTA7Zm9yKG49by5sZW5ndGg7aDxuO2grKylmPW9baF0sZj0KImNlbGwiPT09Yj9jLmNhbGwocixsW2ddLGYucm93LGYuY29sdW1uLGcsaCk6Yy5jYWxsKHIsbFtnXSxmLGcsaCxtKSxmIT09ayYmZS5wdXNoKGYpfX1yZXR1cm4gZS5sZW5ndGh8fGQ/KGE9bmV3IHMobCxhP2UuY29uY2F0LmFwcGx5KFtdLGUpOmUpLGI9YS5zZWxlY3RvcixiLnJvd3M9dS5yb3dzLGIuY29scz11LmNvbHMsYi5vcHRzPXUub3B0cyxhKTp0aGlzfSxsYXN0SW5kZXhPZjp3Lmxhc3RJbmRleE9mfHxmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmluZGV4T2YuYXBwbHkodGhpcy50b0FycmF5LnJldmVyc2UoKSxhcmd1bWVudHMpfSxsZW5ndGg6MCxtYXA6ZnVuY3Rpb24oYSl7dmFyIGI9W107aWYody5tYXApYj13Lm1hcC5jYWxsKHRoaXMsYSx0aGlzKTtlbHNlIGZvcih2YXIgYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKyliLnB1c2goYS5jYWxsKHRoaXMsdGhpc1tjXSxjKSk7cmV0dXJuIG5ldyBzKHRoaXMuY29udGV4dCxiKX0scGx1Y2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiW2FdfSl9LApwb3A6dy5wb3AscHVzaDp3LnB1c2gscmVkdWNlOncucmVkdWNlfHxmdW5jdGlvbihhLGIpe3JldHVybiBnYih0aGlzLGEsYiwwLHRoaXMubGVuZ3RoLDEpfSxyZWR1Y2VSaWdodDp3LnJlZHVjZVJpZ2h0fHxmdW5jdGlvbihhLGIpe3JldHVybiBnYih0aGlzLGEsYix0aGlzLmxlbmd0aC0xLC0xLC0xKX0scmV2ZXJzZTp3LnJldmVyc2Usc2VsZWN0b3I6bnVsbCxzaGlmdDp3LnNoaWZ0LHNsaWNlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBzKHRoaXMuY29udGV4dCx0aGlzKX0sc29ydDp3LnNvcnQsc3BsaWNlOncuc3BsaWNlLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdy5zbGljZS5jYWxsKHRoaXMpfSx0byQ6ZnVuY3Rpb24oKXtyZXR1cm4gaCh0aGlzKX0sdG9KUXVlcnk6ZnVuY3Rpb24oKXtyZXR1cm4gaCh0aGlzKX0sdW5pcXVlOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBzKHRoaXMuY29udGV4dCxxYSh0aGlzKSl9LHVuc2hpZnQ6dy51bnNoaWZ0fSk7cy5leHRlbmQ9ZnVuY3Rpb24oYSwKYixjKXtpZihjLmxlbmd0aCYmYiYmKGIgaW5zdGFuY2VvZiBzfHxiLl9fZHRfd3JhcHBlcikpe3ZhciBkLGUsZixnPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZD1iLmFwcGx5KGEsYXJndW1lbnRzKTtzLmV4dGVuZChkLGQsYy5tZXRob2RFeHQpO3JldHVybiBkfX07ZD0wO2ZvcihlPWMubGVuZ3RoO2Q8ZTtkKyspZj1jW2RdLGJbZi5uYW1lXT0iZnVuY3Rpb24iPT09dHlwZW9mIGYudmFsP2coYSxmLnZhbCxmKTpoLmlzUGxhaW5PYmplY3QoZi52YWwpP3t9OmYudmFsLGJbZi5uYW1lXS5fX2R0X3dyYXBwZXI9ITAscy5leHRlbmQoYSxiW2YubmFtZV0sZi5wcm9wRXh0KX19O3MucmVnaXN0ZXI9bz1mdW5jdGlvbihhLGIpe2lmKGguaXNBcnJheShhKSlmb3IodmFyIGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspcy5yZWdpc3RlcihhW2NdLGIpO2Vsc2UgZm9yKHZhciBlPWEuc3BsaXQoIi4iKSxmPVJiLGcsaixjPTAsZD1lLmxlbmd0aDtjPGQ7YysrKXtnPShqPS0xIT09CmVbY10uaW5kZXhPZigiKCkiKSk/ZVtjXS5yZXBsYWNlKCIoKSIsIiIpOmVbY107dmFyIGk7YTp7aT0wO2Zvcih2YXIgbj1mLmxlbmd0aDtpPG47aSsrKWlmKGZbaV0ubmFtZT09PWcpe2k9ZltpXTticmVhayBhfWk9bnVsbH1pfHwoaT17bmFtZTpnLHZhbDp7fSxtZXRob2RFeHQ6W10scHJvcEV4dDpbXX0sZi5wdXNoKGkpKTtjPT09ZC0xP2kudmFsPWI6Zj1qP2kubWV0aG9kRXh0OmkucHJvcEV4dH19O3MucmVnaXN0ZXJQbHVyYWw9dT1mdW5jdGlvbihhLGIsYyl7cy5yZWdpc3RlcihhLGMpO3MucmVnaXN0ZXIoYixmdW5jdGlvbigpe3ZhciBhPWMuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBhPT09dGhpcz90aGlzOmEgaW5zdGFuY2VvZiBzP2EubGVuZ3RoP2guaXNBcnJheShhWzBdKT9uZXcgcyhhLmNvbnRleHQsYVswXSk6YVswXTprOmF9KX07bygidGFibGVzKCkiLGZ1bmN0aW9uKGEpe3ZhciBiO2lmKGEpe2I9czt2YXIgYz10aGlzLmNvbnRleHQ7aWYoIm51bWJlciI9PT0KdHlwZW9mIGEpYT1bY1thXV07ZWxzZSB2YXIgZD1oLm1hcChjLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5UYWJsZX0pLGE9aChkKS5maWx0ZXIoYSkubWFwKGZ1bmN0aW9uKCl7dmFyIGE9aC5pbkFycmF5KHRoaXMsZCk7cmV0dXJuIGNbYV19KS50b0FycmF5KCk7Yj1uZXcgYihhKX1lbHNlIGI9dGhpcztyZXR1cm4gYn0pO28oInRhYmxlKCkiLGZ1bmN0aW9uKGEpe3ZhciBhPXRoaXMudGFibGVzKGEpLGI9YS5jb250ZXh0O3JldHVybiBiLmxlbmd0aD9uZXcgcyhiWzBdKTphfSk7dSgidGFibGVzKCkubm9kZXMoKSIsInRhYmxlKCkubm9kZSgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRhYmxlfSwxKX0pO3UoInRhYmxlcygpLmJvZHkoKSIsInRhYmxlKCkuYm9keSgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRCb2R5fSwxKX0pO3UoInRhYmxlcygpLmhlYWRlcigpIiwKInRhYmxlKCkuaGVhZGVyKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXtyZXR1cm4gYS5uVEhlYWR9LDEpfSk7dSgidGFibGVzKCkuZm9vdGVyKCkiLCJ0YWJsZSgpLmZvb3RlcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRGb290fSwxKX0pO3UoInRhYmxlcygpLmNvbnRhaW5lcnMoKSIsInRhYmxlKCkuY29udGFpbmVyKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXtyZXR1cm4gYS5uVGFibGVXcmFwcGVyfSwxKX0pO28oImRyYXcoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXsicGFnZSI9PT1hP04oYik6KCJzdHJpbmciPT09dHlwZW9mIGEmJihhPSJmdWxsLWhvbGQiPT09YT8hMTohMCksUyhiLCExPT09YSkpfSl9KTtvKCJwYWdlKCkiLGZ1bmN0aW9uKGEpe3JldHVybiBhPT09Cms/dGhpcy5wYWdlLmluZm8oKS5wYWdlOnRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXtTYShiLGEpfSl9KTtvKCJwYWdlLmluZm8oKSIsZnVuY3Rpb24oKXtpZigwPT09dGhpcy5jb250ZXh0Lmxlbmd0aClyZXR1cm4gazt2YXIgYT10aGlzLmNvbnRleHRbMF0sYj1hLl9pRGlzcGxheVN0YXJ0LGM9YS5vRmVhdHVyZXMuYlBhZ2luYXRlP2EuX2lEaXNwbGF5TGVuZ3RoOi0xLGQ9YS5mblJlY29yZHNEaXNwbGF5KCksZT0tMT09PWM7cmV0dXJue3BhZ2U6ZT8wOk1hdGguZmxvb3IoYi9jKSxwYWdlczplPzE6TWF0aC5jZWlsKGQvYyksc3RhcnQ6YixlbmQ6YS5mbkRpc3BsYXlFbmQoKSxsZW5ndGg6YyxyZWNvcmRzVG90YWw6YS5mblJlY29yZHNUb3RhbCgpLHJlY29yZHNEaXNwbGF5OmQsc2VydmVyU2lkZToic3NwIj09PXkoYSl9fSk7bygicGFnZS5sZW4oKSIsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1rPzAhPT10aGlzLmNvbnRleHQubGVuZ3RoP3RoaXMuY29udGV4dFswXS5faURpc3BsYXlMZW5ndGg6Cms6dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe1FhKGIsYSl9KX0pO3ZhciBTYj1mdW5jdGlvbihhLGIsYyl7aWYoYyl7dmFyIGQ9bmV3IHMoYSk7ZC5vbmUoImRyYXciLGZ1bmN0aW9uKCl7YyhkLmFqYXguanNvbigpKX0pfWlmKCJzc3AiPT15KGEpKVMoYSxiKTtlbHNle0MoYSwhMCk7dmFyIGU9YS5qcVhIUjtlJiY0IT09ZS5yZWFkeVN0YXRlJiZlLmFib3J0KCk7c2EoYSxbXSxmdW5jdGlvbihjKXtuYShhKTtmb3IodmFyIGM9dGEoYSxjKSxkPTAsZT1jLmxlbmd0aDtkPGU7ZCsrKU0oYSxjW2RdKTtTKGEsYik7QyhhLCExKX0pfX07bygiYWpheC5qc29uKCkiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jb250ZXh0O2lmKDA8YS5sZW5ndGgpcmV0dXJuIGFbMF0uanNvbn0pO28oImFqYXgucGFyYW1zKCkiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jb250ZXh0O2lmKDA8YS5sZW5ndGgpcmV0dXJuIGFbMF0ub0FqYXhEYXRhfSk7bygiYWpheC5yZWxvYWQoKSIsZnVuY3Rpb24oYSwKYil7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihjKXtTYihjLCExPT09YixhKX0pfSk7bygiYWpheC51cmwoKSIsZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jb250ZXh0O2lmKGE9PT1rKXtpZigwPT09Yi5sZW5ndGgpcmV0dXJuIGs7Yj1iWzBdO3JldHVybiBiLmFqYXg/aC5pc1BsYWluT2JqZWN0KGIuYWpheCk/Yi5hamF4LnVybDpiLmFqYXg6Yi5zQWpheFNvdXJjZX1yZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe2guaXNQbGFpbk9iamVjdChiLmFqYXgpP2IuYWpheC51cmw9YTpiLmFqYXg9YX0pfSk7bygiYWpheC51cmwoKS5sb2FkKCkiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihjKXtTYihjLCExPT09YixhKX0pfSk7dmFyIFphPWZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGY9W10sZyxqLGksbixsLG07aT10eXBlb2YgYjtpZighYnx8InN0cmluZyI9PT1pfHwiZnVuY3Rpb24iPT09Cml8fGIubGVuZ3RoPT09ayliPVtiXTtpPTA7Zm9yKG49Yi5sZW5ndGg7aTxuO2krKyl7aj1iW2ldJiZiW2ldLnNwbGl0JiYhYltpXS5tYXRjaCgvW1xbXCg6XS8pP2JbaV0uc3BsaXQoIiwiKTpbYltpXV07bD0wO2ZvcihtPWoubGVuZ3RoO2w8bTtsKyspKGc9Yygic3RyaW5nIj09PXR5cGVvZiBqW2xdP2gudHJpbShqW2xdKTpqW2xdKSkmJmcubGVuZ3RoJiYoZj1mLmNvbmNhdChnKSl9YT14LnNlbGVjdG9yW2FdO2lmKGEubGVuZ3RoKXtpPTA7Zm9yKG49YS5sZW5ndGg7aTxuO2krKylmPWFbaV0oZCxlLGYpfXJldHVybiBxYShmKX0sJGE9ZnVuY3Rpb24oYSl7YXx8KGE9e30pO2EuZmlsdGVyJiZhLnNlYXJjaD09PWsmJihhLnNlYXJjaD1hLmZpbHRlcik7cmV0dXJuIGguZXh0ZW5kKHtzZWFyY2g6Im5vbmUiLG9yZGVyOiJjdXJyZW50IixwYWdlOiJhbGwifSxhKX0sYWI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz1hLmxlbmd0aDtiPGM7YisrKWlmKDA8YVtiXS5sZW5ndGgpcmV0dXJuIGFbMF09CmFbYl0sYVswXS5sZW5ndGg9MSxhLmxlbmd0aD0xLGEuY29udGV4dD1bYS5jb250ZXh0W2JdXSxhO2EubGVuZ3RoPTA7cmV0dXJuIGF9LEJhPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9W10sZz1hLmFpRGlzcGxheTtjPWEuYWlEaXNwbGF5TWFzdGVyO3ZhciBqPWIuc2VhcmNoO2Q9Yi5vcmRlcjtlPWIucGFnZTtpZigic3NwIj09eShhKSlyZXR1cm4icmVtb3ZlZCI9PT1qP1tdOlcoMCxjLmxlbmd0aCk7aWYoImN1cnJlbnQiPT1lKXtjPWEuX2lEaXNwbGF5U3RhcnQ7Zm9yKGQ9YS5mbkRpc3BsYXlFbmQoKTtjPGQ7YysrKWYucHVzaChnW2NdKX1lbHNlIGlmKCJjdXJyZW50Ij09ZHx8ImFwcGxpZWQiPT1kKWY9Im5vbmUiPT1qP2Muc2xpY2UoKToiYXBwbGllZCI9PWo/Zy5zbGljZSgpOmgubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJuLTE9PT1oLmluQXJyYXkoYSxnKT9hOm51bGx9KTtlbHNlIGlmKCJpbmRleCI9PWR8fCJvcmlnaW5hbCI9PWQpe2M9MDtmb3IoZD1hLmFvRGF0YS5sZW5ndGg7YzwKZDtjKyspIm5vbmUiPT1qP2YucHVzaChjKTooZT1oLmluQXJyYXkoYyxnKSwoLTE9PT1lJiYicmVtb3ZlZCI9PWp8fDA8PWUmJiJhcHBsaWVkIj09aikmJmYucHVzaChjKSl9cmV0dXJuIGZ9O28oInJvd3MoKSIsZnVuY3Rpb24oYSxiKXthPT09az9hPSIiOmguaXNQbGFpbk9iamVjdChhKSYmKGI9YSxhPSIiKTt2YXIgYj0kYShiKSxjPXRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihjKXt2YXIgZT1iLGY7cmV0dXJuIFphKCJyb3ciLGEsZnVuY3Rpb24oYSl7dmFyIGI9TmIoYSk7aWYoYiE9PW51bGwmJiFlKXJldHVybltiXTtmfHwoZj1CYShjLGUpKTtpZihiIT09bnVsbCYmaC5pbkFycmF5KGIsZikhPT0tMSlyZXR1cm5bYl07aWYoYT09PW51bGx8fGE9PT1rfHxhPT09IiIpcmV0dXJuIGY7aWYodHlwZW9mIGE9PT0iZnVuY3Rpb24iKXJldHVybiBoLm1hcChmLGZ1bmN0aW9uKGIpe3ZhciBlPWMuYW9EYXRhW2JdO3JldHVybiBhKGIsZS5fYURhdGEsZS5uVHIpP2I6bnVsbH0pOwpiPVFiKGlhKGMuYW9EYXRhLGYsIm5UciIpKTtpZihhLm5vZGVOYW1lKXtpZihhLl9EVF9Sb3dJbmRleCE9PWspcmV0dXJuW2EuX0RUX1Jvd0luZGV4XTtpZihhLl9EVF9DZWxsSW5kZXgpcmV0dXJuW2EuX0RUX0NlbGxJbmRleC5yb3ddO2I9aChhKS5jbG9zZXN0KCIqW2RhdGEtZHQtcm93XSIpO3JldHVybiBiLmxlbmd0aD9bYi5kYXRhKCJkdC1yb3ciKV06W119aWYodHlwZW9mIGE9PT0ic3RyaW5nIiYmYS5jaGFyQXQoMCk9PT0iIyIpe3ZhciBpPWMuYUlkc1thLnJlcGxhY2UoL14jLywiIildO2lmKGkhPT1rKXJldHVybltpLmlkeF19cmV0dXJuIGgoYikuZmlsdGVyKGEpLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLl9EVF9Sb3dJbmRleH0pLnRvQXJyYXkoKX0sYyxlKX0sMSk7Yy5zZWxlY3Rvci5yb3dzPWE7Yy5zZWxlY3Rvci5vcHRzPWI7cmV0dXJuIGN9KTtvKCJyb3dzKCkubm9kZXMoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IixmdW5jdGlvbihhLApiKXtyZXR1cm4gYS5hb0RhdGFbYl0ublRyfHxrfSwxKX0pO28oInJvd3MoKS5kYXRhKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoITAsInJvd3MiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGlhKGEuYW9EYXRhLGIsIl9hRGF0YSIpfSwxKX0pO3UoInJvd3MoKS5jYWNoZSgpIiwicm93KCkuY2FjaGUoKSIsZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInJvdyIsZnVuY3Rpb24oYixjKXt2YXIgZD1iLmFvRGF0YVtjXTtyZXR1cm4ic2VhcmNoIj09PWE/ZC5fYUZpbHRlckRhdGE6ZC5fYVNvcnREYXRhfSwxKX0pO3UoInJvd3MoKS5pbnZhbGlkYXRlKCkiLCJyb3coKS5pbnZhbGlkYXRlKCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJyb3ciLGZ1bmN0aW9uKGIsYyl7Y2EoYixjLGEpfSl9KTt1KCJyb3dzKCkuaW5kZXhlcygpIiwicm93KCkuaW5kZXgoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigicm93IixmdW5jdGlvbihhLApiKXtyZXR1cm4gYn0sMSl9KTt1KCJyb3dzKCkuaWRzKCkiLCJyb3coKS5pZCgpIixmdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz10aGlzLmNvbnRleHQsZD0wLGU9Yy5sZW5ndGg7ZDxlO2QrKylmb3IodmFyIGY9MCxnPXRoaXNbZF0ubGVuZ3RoO2Y8ZztmKyspe3ZhciBoPWNbZF0ucm93SWRGbihjW2RdLmFvRGF0YVt0aGlzW2RdW2ZdXS5fYURhdGEpO2IucHVzaCgoITA9PT1hPyIjIjoiIikraCl9cmV0dXJuIG5ldyBzKGMsYil9KTt1KCJyb3dzKCkucmVtb3ZlKCkiLCJyb3coKS5yZW1vdmUoKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzO3RoaXMuaXRlcmF0b3IoInJvdyIsZnVuY3Rpb24oYixjLGQpe3ZhciBlPWIuYW9EYXRhLGY9ZVtjXSxnLGgsaSxuLGw7ZS5zcGxpY2UoYywxKTtnPTA7Zm9yKGg9ZS5sZW5ndGg7ZzxoO2crKylpZihpPWVbZ10sbD1pLmFuQ2VsbHMsbnVsbCE9PWkublRyJiYoaS5uVHIuX0RUX1Jvd0luZGV4PWcpLG51bGwhPT1sKXtpPTA7Zm9yKG49bC5sZW5ndGg7aTwKbjtpKyspbFtpXS5fRFRfQ2VsbEluZGV4LnJvdz1nfW9hKGIuYWlEaXNwbGF5TWFzdGVyLGMpO29hKGIuYWlEaXNwbGF5LGMpO29hKGFbZF0sYywhMSk7MDxiLl9pUmVjb3Jkc0Rpc3BsYXkmJmIuX2lSZWNvcmRzRGlzcGxheS0tO1JhKGIpO2M9Yi5yb3dJZEZuKGYuX2FEYXRhKTtjIT09ayYmZGVsZXRlIGIuYUlkc1tjXX0pO3RoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXtmb3IodmFyIGM9MCxkPWEuYW9EYXRhLmxlbmd0aDtjPGQ7YysrKWEuYW9EYXRhW2NdLmlkeD1jfSk7cmV0dXJuIHRoaXN9KTtvKCJyb3dzLmFkZCgpIixmdW5jdGlvbihhKXt2YXIgYj10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7dmFyIGMsZixnLGg9W107Zj0wO2ZvcihnPWEubGVuZ3RoO2Y8ZztmKyspYz1hW2ZdLGMubm9kZU5hbWUmJiJUUiI9PT1jLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk/aC5wdXNoKG1hKGIsYylbMF0pOmgucHVzaChNKGIsYykpO3JldHVybiBofSwxKSxjPXRoaXMucm93cygtMSk7CmMucG9wKCk7aC5tZXJnZShjLGIpO3JldHVybiBjfSk7bygicm93KCkiLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGFiKHRoaXMucm93cyhhLGIpKX0pO28oInJvdygpLmRhdGEoKSIsZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jb250ZXh0O2lmKGE9PT1rKXJldHVybiBiLmxlbmd0aCYmdGhpcy5sZW5ndGg/YlswXS5hb0RhdGFbdGhpc1swXV0uX2FEYXRhOms7YlswXS5hb0RhdGFbdGhpc1swXV0uX2FEYXRhPWE7Y2EoYlswXSx0aGlzWzBdLCJkYXRhIik7cmV0dXJuIHRoaXN9KTtvKCJyb3coKS5ub2RlKCkiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jb250ZXh0O3JldHVybiBhLmxlbmd0aCYmdGhpcy5sZW5ndGg/YVswXS5hb0RhdGFbdGhpc1swXV0ublRyfHxudWxsOm51bGx9KTtvKCJyb3cuYWRkKCkiLGZ1bmN0aW9uKGEpe2EgaW5zdGFuY2VvZiBoJiZhLmxlbmd0aCYmKGE9YVswXSk7dmFyIGI9dGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe3JldHVybiBhLm5vZGVOYW1lJiYKIlRSIj09PWEubm9kZU5hbWUudG9VcHBlckNhc2UoKT9tYShiLGEpWzBdOk0oYixhKX0pO3JldHVybiB0aGlzLnJvdyhiWzBdKX0pO3ZhciBiYj1mdW5jdGlvbihhLGIpe3ZhciBjPWEuY29udGV4dDtpZihjLmxlbmd0aCYmKGM9Y1swXS5hb0RhdGFbYiE9PWs/YjphWzBdXSkmJmMuX2RldGFpbHMpYy5fZGV0YWlscy5yZW1vdmUoKSxjLl9kZXRhaWxzU2hvdz1rLGMuX2RldGFpbHM9a30sVGI9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLmNvbnRleHQ7aWYoYy5sZW5ndGgmJmEubGVuZ3RoKXt2YXIgZD1jWzBdLmFvRGF0YVthWzBdXTtpZihkLl9kZXRhaWxzKXsoZC5fZGV0YWlsc1Nob3c9Yik/ZC5fZGV0YWlscy5pbnNlcnRBZnRlcihkLm5Ucik6ZC5fZGV0YWlscy5kZXRhY2goKTt2YXIgZT1jWzBdLGY9bmV3IHMoZSksZz1lLmFvRGF0YTtmLm9mZigiZHJhdy5kdC5EVF9kZXRhaWxzIGNvbHVtbi12aXNpYmlsaXR5LmR0LkRUX2RldGFpbHMgZGVzdHJveS5kdC5EVF9kZXRhaWxzIik7MDxEKGcsCiJfZGV0YWlscyIpLmxlbmd0aCYmKGYub24oImRyYXcuZHQuRFRfZGV0YWlscyIsZnVuY3Rpb24oYSxiKXtlPT09YiYmZi5yb3dzKHtwYWdlOiJjdXJyZW50In0pLmVxKDApLmVhY2goZnVuY3Rpb24oYSl7YT1nW2FdO2EuX2RldGFpbHNTaG93JiZhLl9kZXRhaWxzLmluc2VydEFmdGVyKGEublRyKX0pfSksZi5vbigiY29sdW1uLXZpc2liaWxpdHkuZHQuRFRfZGV0YWlscyIsZnVuY3Rpb24oYSxiKXtpZihlPT09Yilmb3IodmFyIGMsZD1hYShiKSxmPTAsaD1nLmxlbmd0aDtmPGg7ZisrKWM9Z1tmXSxjLl9kZXRhaWxzJiZjLl9kZXRhaWxzLmNoaWxkcmVuKCJ0ZFtjb2xzcGFuXSIpLmF0dHIoImNvbHNwYW4iLGQpfSksZi5vbigiZGVzdHJveS5kdC5EVF9kZXRhaWxzIixmdW5jdGlvbihhLGIpe2lmKGU9PT1iKWZvcih2YXIgYz0wLGQ9Zy5sZW5ndGg7YzxkO2MrKylnW2NdLl9kZXRhaWxzJiZiYihmLGMpfSkpfX19O28oInJvdygpLmNoaWxkKCkiLGZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5jb250ZXh0OwppZihhPT09aylyZXR1cm4gYy5sZW5ndGgmJnRoaXMubGVuZ3RoP2NbMF0uYW9EYXRhW3RoaXNbMF1dLl9kZXRhaWxzOms7aWYoITA9PT1hKXRoaXMuY2hpbGQuc2hvdygpO2Vsc2UgaWYoITE9PT1hKWJiKHRoaXMpO2Vsc2UgaWYoYy5sZW5ndGgmJnRoaXMubGVuZ3RoKXt2YXIgZD1jWzBdLGM9Y1swXS5hb0RhdGFbdGhpc1swXV0sZT1bXSxmPWZ1bmN0aW9uKGEsYil7aWYoaC5pc0FycmF5KGEpfHxhIGluc3RhbmNlb2YgaClmb3IodmFyIGM9MCxrPWEubGVuZ3RoO2M8aztjKyspZihhW2NdLGIpO2Vsc2UgYS5ub2RlTmFtZSYmInRyIj09PWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT9lLnB1c2goYSk6KGM9aCgiPHRyPjx0ZC8+PC90cj4iKS5hZGRDbGFzcyhiKSxoKCJ0ZCIsYykuYWRkQ2xhc3MoYikuaHRtbChhKVswXS5jb2xTcGFuPWFhKGQpLGUucHVzaChjWzBdKSl9O2YoYSxiKTtjLl9kZXRhaWxzJiZjLl9kZXRhaWxzLmRldGFjaCgpO2MuX2RldGFpbHM9aChlKTtjLl9kZXRhaWxzU2hvdyYmCmMuX2RldGFpbHMuaW5zZXJ0QWZ0ZXIoYy5uVHIpfXJldHVybiB0aGlzfSk7byhbInJvdygpLmNoaWxkLnNob3coKSIsInJvdygpLmNoaWxkKCkuc2hvdygpIl0sZnVuY3Rpb24oKXtUYih0aGlzLCEwKTtyZXR1cm4gdGhpc30pO28oWyJyb3coKS5jaGlsZC5oaWRlKCkiLCJyb3coKS5jaGlsZCgpLmhpZGUoKSJdLGZ1bmN0aW9uKCl7VGIodGhpcywhMSk7cmV0dXJuIHRoaXN9KTtvKFsicm93KCkuY2hpbGQucmVtb3ZlKCkiLCJyb3coKS5jaGlsZCgpLnJlbW92ZSgpIl0sZnVuY3Rpb24oKXtiYih0aGlzKTtyZXR1cm4gdGhpc30pO28oInJvdygpLmNoaWxkLmlzU2hvd24oKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRleHQ7cmV0dXJuIGEubGVuZ3RoJiZ0aGlzLmxlbmd0aD9hWzBdLmFvRGF0YVt0aGlzWzBdXS5fZGV0YWlsc1Nob3d8fCExOiExfSk7dmFyIGJjPS9eKFteOl0rKToobmFtZXx2aXNJZHh8dmlzaWJsZSkkLyxVYj1mdW5jdGlvbihhLGIsYyxkLGUpe2Zvcih2YXIgYz0KW10sZD0wLGY9ZS5sZW5ndGg7ZDxmO2QrKyljLnB1c2goQihhLGVbZF0sYikpO3JldHVybiBjfTtvKCJjb2x1bW5zKCkiLGZ1bmN0aW9uKGEsYil7YT09PWs/YT0iIjpoLmlzUGxhaW5PYmplY3QoYSkmJihiPWEsYT0iIik7dmFyIGI9JGEoYiksYz10aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyl7dmFyIGU9YSxmPWIsZz1jLmFvQ29sdW1ucyxqPUQoZywic05hbWUiKSxpPUQoZywiblRoIik7cmV0dXJuIFphKCJjb2x1bW4iLGUsZnVuY3Rpb24oYSl7dmFyIGI9TmIoYSk7aWYoYT09PSIiKXJldHVybiBXKGcubGVuZ3RoKTtpZihiIT09bnVsbClyZXR1cm5bYj49MD9iOmcubGVuZ3RoK2JdO2lmKHR5cGVvZiBhPT09ImZ1bmN0aW9uIil7dmFyIGU9QmEoYyxmKTtyZXR1cm4gaC5tYXAoZyxmdW5jdGlvbihiLGYpe3JldHVybiBhKGYsVWIoYyxmLDAsMCxlKSxpW2ZdKT9mOm51bGx9KX12YXIgaz10eXBlb2YgYT09PSJzdHJpbmciP2EubWF0Y2goYmMpOiIiO2lmKGspc3dpdGNoKGtbMl0pe2Nhc2UgInZpc0lkeCI6Y2FzZSAidmlzaWJsZSI6Yj0KcGFyc2VJbnQoa1sxXSwxMCk7aWYoYjwwKXt2YXIgbT1oLm1hcChnLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuYlZpc2libGU/YjpudWxsfSk7cmV0dXJuW21bbS5sZW5ndGgrYl1dfXJldHVybltaKGMsYildO2Nhc2UgIm5hbWUiOnJldHVybiBoLm1hcChqLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1rWzFdP2I6bnVsbH0pO2RlZmF1bHQ6cmV0dXJuW119aWYoYS5ub2RlTmFtZSYmYS5fRFRfQ2VsbEluZGV4KXJldHVyblthLl9EVF9DZWxsSW5kZXguY29sdW1uXTtiPWgoaSkuZmlsdGVyKGEpLm1hcChmdW5jdGlvbigpe3JldHVybiBoLmluQXJyYXkodGhpcyxpKX0pLnRvQXJyYXkoKTtpZihiLmxlbmd0aHx8IWEubm9kZU5hbWUpcmV0dXJuIGI7Yj1oKGEpLmNsb3Nlc3QoIipbZGF0YS1kdC1jb2x1bW5dIik7cmV0dXJuIGIubGVuZ3RoP1tiLmRhdGEoImR0LWNvbHVtbiIpXTpbXX0sYyxmKX0sMSk7Yy5zZWxlY3Rvci5jb2xzPWE7Yy5zZWxlY3Rvci5vcHRzPWI7cmV0dXJuIGN9KTt1KCJjb2x1bW5zKCkuaGVhZGVyKCkiLAoiY29sdW1uKCkuaGVhZGVyKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5hb0NvbHVtbnNbYl0ublRofSwxKX0pO3UoImNvbHVtbnMoKS5mb290ZXIoKSIsImNvbHVtbigpLmZvb3RlcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuYW9Db2x1bW5zW2JdLm5UZn0sMSl9KTt1KCJjb2x1bW5zKCkuZGF0YSgpIiwiY29sdW1uKCkuZGF0YSgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4tcm93cyIsVWIsMSl9KTt1KCJjb2x1bW5zKCkuZGF0YVNyYygpIiwiY29sdW1uKCkuZGF0YVNyYygpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuYW9Db2x1bW5zW2JdLm1EYXRhfSwxKX0pO3UoImNvbHVtbnMoKS5jYWNoZSgpIiwiY29sdW1uKCkuY2FjaGUoKSIsCmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4tcm93cyIsZnVuY3Rpb24oYixjLGQsZSxmKXtyZXR1cm4gaWEoYi5hb0RhdGEsZiwic2VhcmNoIj09PWE/Il9hRmlsdGVyRGF0YSI6Il9hU29ydERhdGEiLGMpfSwxKX0pO3UoImNvbHVtbnMoKS5ub2RlcygpIiwiY29sdW1uKCkubm9kZXMoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY29sdW1uLXJvd3MiLGZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGlhKGEuYW9EYXRhLGUsImFuQ2VsbHMiLGIpfSwxKX0pO3UoImNvbHVtbnMoKS52aXNpYmxlKCkiLCJjb2x1bW4oKS52aXNpYmxlKCkiLGZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5pdGVyYXRvcigiY29sdW1uIixmdW5jdGlvbihiLGMpe2lmKGE9PT1rKXJldHVybiBiLmFvQ29sdW1uc1tjXS5iVmlzaWJsZTt2YXIgZj1iLmFvQ29sdW1ucyxnPWZbY10saj1iLmFvRGF0YSxpLG4sbDtpZihhIT09ayYmZy5iVmlzaWJsZSE9PWEpe2lmKGEpe3ZhciBtPQpoLmluQXJyYXkoITAsRChmLCJiVmlzaWJsZSIpLGMrMSk7aT0wO2ZvcihuPWoubGVuZ3RoO2k8bjtpKyspbD1qW2ldLm5UcixmPWpbaV0uYW5DZWxscyxsJiZsLmluc2VydEJlZm9yZShmW2NdLGZbbV18fG51bGwpfWVsc2UgaChEKGIuYW9EYXRhLCJhbkNlbGxzIixjKSkuZGV0YWNoKCk7Zy5iVmlzaWJsZT1hO2VhKGIsYi5hb0hlYWRlcik7ZWEoYixiLmFvRm9vdGVyKTt4YShiKX19KTthIT09ayYmKHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oYyxlKXtyKGMsbnVsbCwiY29sdW1uLXZpc2liaWxpdHkiLFtjLGUsYSxiXSl9KSwoYj09PWt8fGIpJiZ0aGlzLmNvbHVtbnMuYWRqdXN0KCkpO3JldHVybiBjfSk7dSgiY29sdW1ucygpLmluZGV4ZXMoKSIsImNvbHVtbigpLmluZGV4KCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjb2x1bW4iLGZ1bmN0aW9uKGIsYyl7cmV0dXJuInZpc2libGUiPT09YT8kKGIsYyk6Y30sMSl9KTtvKCJjb2x1bW5zLmFkanVzdCgpIiwKZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe1koYSl9LDEpfSk7bygiY29sdW1uLmluZGV4KCkiLGZ1bmN0aW9uKGEsYil7aWYoMCE9PXRoaXMuY29udGV4dC5sZW5ndGgpe3ZhciBjPXRoaXMuY29udGV4dFswXTtpZigiZnJvbVZpc2libGUiPT09YXx8InRvRGF0YSI9PT1hKXJldHVybiBaKGMsYik7aWYoImZyb21EYXRhIj09PWF8fCJ0b1Zpc2libGUiPT09YSlyZXR1cm4gJChjLGIpfX0pO28oImNvbHVtbigpIixmdW5jdGlvbihhLGIpe3JldHVybiBhYih0aGlzLmNvbHVtbnMoYSxiKSl9KTtvKCJjZWxscygpIixmdW5jdGlvbihhLGIsYyl7aC5pc1BsYWluT2JqZWN0KGEpJiYoYS5yb3c9PT1rPyhjPWEsYT1udWxsKTooYz1iLGI9bnVsbCkpO2guaXNQbGFpbk9iamVjdChiKSYmKGM9YixiPW51bGwpO2lmKG51bGw9PT1ifHxiPT09aylyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGIpe3ZhciBkPWEsZT0kYShjKSxmPQpiLmFvRGF0YSxnPUJhKGIsZSksaj1RYihpYShmLGcsImFuQ2VsbHMiKSksaT1oKFtdLmNvbmNhdC5hcHBseShbXSxqKSksbCxuPWIuYW9Db2x1bW5zLmxlbmd0aCxtLG8sdSxzLHIsdjtyZXR1cm4gWmEoImNlbGwiLGQsZnVuY3Rpb24oYSl7dmFyIGM9dHlwZW9mIGE9PT0iZnVuY3Rpb24iO2lmKGE9PT1udWxsfHxhPT09a3x8Yyl7bT1bXTtvPTA7Zm9yKHU9Zy5sZW5ndGg7bzx1O28rKyl7bD1nW29dO2ZvcihzPTA7czxuO3MrKyl7cj17cm93OmwsY29sdW1uOnN9O2lmKGMpe3Y9ZltsXTthKHIsQihiLGwscyksdi5hbkNlbGxzP3YuYW5DZWxsc1tzXTpudWxsKSYmbS5wdXNoKHIpfWVsc2UgbS5wdXNoKHIpfX1yZXR1cm4gbX1pZihoLmlzUGxhaW5PYmplY3QoYSkpcmV0dXJuW2FdO2M9aS5maWx0ZXIoYSkubWFwKGZ1bmN0aW9uKGEsYil7cmV0dXJue3JvdzpiLl9EVF9DZWxsSW5kZXgucm93LGNvbHVtbjpiLl9EVF9DZWxsSW5kZXguY29sdW1ufX0pLnRvQXJyYXkoKTtpZihjLmxlbmd0aHx8CiFhLm5vZGVOYW1lKXJldHVybiBjO3Y9aChhKS5jbG9zZXN0KCIqW2RhdGEtZHQtcm93XSIpO3JldHVybiB2Lmxlbmd0aD9be3Jvdzp2LmRhdGEoImR0LXJvdyIpLGNvbHVtbjp2LmRhdGEoImR0LWNvbHVtbiIpfV06W119LGIsZSl9KTt2YXIgZD10aGlzLmNvbHVtbnMoYixjKSxlPXRoaXMucm93cyhhLGMpLGYsZyxqLGksbixsPXRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhLGIpe2Y9W107Zz0wO2ZvcihqPWVbYl0ubGVuZ3RoO2c8ajtnKyspe2k9MDtmb3Iobj1kW2JdLmxlbmd0aDtpPG47aSsrKWYucHVzaCh7cm93OmVbYl1bZ10sY29sdW1uOmRbYl1baV19KX1yZXR1cm4gZn0sMSk7aC5leHRlbmQobC5zZWxlY3Rvcix7Y29sczpiLHJvd3M6YSxvcHRzOmN9KTtyZXR1cm4gbH0pO3UoImNlbGxzKCkubm9kZXMoKSIsImNlbGwoKS5ub2RlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4oYT1hLmFvRGF0YVtiXSkmJgphLmFuQ2VsbHM/YS5hbkNlbGxzW2NdOmt9LDEpfSk7bygiY2VsbHMoKS5kYXRhKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gQihhLGIsYyl9LDEpfSk7dSgiY2VsbHMoKS5jYWNoZSgpIiwiY2VsbCgpLmNhY2hlKCkiLGZ1bmN0aW9uKGEpe2E9InNlYXJjaCI9PT1hPyJfYUZpbHRlckRhdGEiOiJfYVNvcnREYXRhIjtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsZnVuY3Rpb24oYixjLGQpe3JldHVybiBiLmFvRGF0YVtjXVthXVtkXX0sMSl9KTt1KCJjZWxscygpLnJlbmRlcigpIiwiY2VsbCgpLnJlbmRlcigpIixmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigiY2VsbCIsZnVuY3Rpb24oYixjLGQpe3JldHVybiBCKGIsYyxkLGEpfSwxKX0pO3UoImNlbGxzKCkuaW5kZXhlcygpIiwiY2VsbCgpLmluZGV4KCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNlbGwiLGZ1bmN0aW9uKGEsCmIsYyl7cmV0dXJue3JvdzpiLGNvbHVtbjpjLGNvbHVtblZpc2libGU6JChhLGMpfX0sMSl9KTt1KCJjZWxscygpLmludmFsaWRhdGUoKSIsImNlbGwoKS5pbnZhbGlkYXRlKCkiLGZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJjZWxsIixmdW5jdGlvbihiLGMsZCl7Y2EoYixjLGEsZCl9KX0pO28oImNlbGwoKSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhYih0aGlzLmNlbGxzKGEsYixjKSl9KTtvKCJjZWxsKCkuZGF0YSgpIixmdW5jdGlvbihhKXt2YXIgYj10aGlzLmNvbnRleHQsYz10aGlzWzBdO2lmKGE9PT1rKXJldHVybiBiLmxlbmd0aCYmYy5sZW5ndGg/QihiWzBdLGNbMF0ucm93LGNbMF0uY29sdW1uKTprO2liKGJbMF0sY1swXS5yb3csY1swXS5jb2x1bW4sYSk7Y2EoYlswXSxjWzBdLnJvdywiZGF0YSIsY1swXS5jb2x1bW4pO3JldHVybiB0aGlzfSk7bygib3JkZXIoKSIsZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNvbnRleHQ7aWYoYT09PWspcmV0dXJuIDAhPT0KYy5sZW5ndGg/Y1swXS5hYVNvcnRpbmc6azsibnVtYmVyIj09PXR5cGVvZiBhP2E9W1thLGJdXTphLmxlbmd0aCYmIWguaXNBcnJheShhWzBdKSYmKGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXtiLmFhU29ydGluZz1hLnNsaWNlKCl9KX0pO28oIm9yZGVyLmxpc3RlbmVyKCkiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGQpe0xhKGQsYSxiLGMpfSl9KTtvKCJvcmRlci5maXhlZCgpIixmdW5jdGlvbihhKXtpZighYSl7dmFyIGI9dGhpcy5jb250ZXh0LGI9Yi5sZW5ndGg/YlswXS5hYVNvcnRpbmdGaXhlZDprO3JldHVybiBoLmlzQXJyYXkoYik/e3ByZTpifTpifXJldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYil7Yi5hYVNvcnRpbmdGaXhlZD1oLmV4dGVuZCghMCx7fSxhKX0pfSk7byhbImNvbHVtbnMoKS5vcmRlcigpIiwKImNvbHVtbigpLm9yZGVyKCkiXSxmdW5jdGlvbihhKXt2YXIgYj10aGlzO3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYyxkKXt2YXIgZT1bXTtoLmVhY2goYltkXSxmdW5jdGlvbihiLGMpe2UucHVzaChbYyxhXSl9KTtjLmFhU29ydGluZz1lfSl9KTtvKCJzZWFyY2goKSIsZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9dGhpcy5jb250ZXh0O3JldHVybiBhPT09az8wIT09ZS5sZW5ndGg/ZVswXS5vUHJldmlvdXNTZWFyY2guc1NlYXJjaDprOnRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihlKXtlLm9GZWF0dXJlcy5iRmlsdGVyJiZmYShlLGguZXh0ZW5kKHt9LGUub1ByZXZpb3VzU2VhcmNoLHtzU2VhcmNoOmErIiIsYlJlZ2V4Om51bGw9PT1iPyExOmIsYlNtYXJ0Om51bGw9PT1jPyEwOmMsYkNhc2VJbnNlbnNpdGl2ZTpudWxsPT09ZD8hMDpkfSksMSl9KX0pO3UoImNvbHVtbnMoKS5zZWFyY2goKSIsImNvbHVtbigpLnNlYXJjaCgpIixmdW5jdGlvbihhLApiLGMsZCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoImNvbHVtbiIsZnVuY3Rpb24oZSxmKXt2YXIgZz1lLmFvUHJlU2VhcmNoQ29scztpZihhPT09aylyZXR1cm4gZ1tmXS5zU2VhcmNoO2Uub0ZlYXR1cmVzLmJGaWx0ZXImJihoLmV4dGVuZChnW2ZdLHtzU2VhcmNoOmErIiIsYlJlZ2V4Om51bGw9PT1iPyExOmIsYlNtYXJ0Om51bGw9PT1jPyEwOmMsYkNhc2VJbnNlbnNpdGl2ZTpudWxsPT09ZD8hMDpkfSksZmEoZSxlLm9QcmV2aW91c1NlYXJjaCwxKSl9KX0pO28oInN0YXRlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29udGV4dC5sZW5ndGg/dGhpcy5jb250ZXh0WzBdLm9TYXZlZFN0YXRlOm51bGx9KTtvKCJzdGF0ZS5jbGVhcigpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZXJhdG9yKCJ0YWJsZSIsZnVuY3Rpb24oYSl7YS5mblN0YXRlU2F2ZUNhbGxiYWNrLmNhbGwoYS5vSW5zdGFuY2UsYSx7fSl9KX0pO28oInN0YXRlLmxvYWRlZCgpIixmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRleHQubGVuZ3RoPwp0aGlzLmNvbnRleHRbMF0ub0xvYWRlZFN0YXRlOm51bGx9KTtvKCJzdGF0ZS5zYXZlKCkiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihhKXt4YShhKX0pfSk7bS52ZXJzaW9uQ2hlY2s9bS5mblZlcnNpb25DaGVjaz1mdW5jdGlvbihhKXtmb3IodmFyIGI9bS52ZXJzaW9uLnNwbGl0KCIuIiksYT1hLnNwbGl0KCIuIiksYyxkLGU9MCxmPWEubGVuZ3RoO2U8ZjtlKyspaWYoYz1wYXJzZUludChiW2VdLDEwKXx8MCxkPXBhcnNlSW50KGFbZV0sMTApfHwwLGMhPT1kKXJldHVybiBjPmQ7cmV0dXJuITB9O20uaXNEYXRhVGFibGU9bS5mbklzRGF0YVRhYmxlPWZ1bmN0aW9uKGEpe3ZhciBiPWgoYSkuZ2V0KDApLGM9ITE7aWYoYSBpbnN0YW5jZW9mIG0uQXBpKXJldHVybiEwO2guZWFjaChtLnNldHRpbmdzLGZ1bmN0aW9uKGEsZSl7dmFyIGY9ZS5uU2Nyb2xsSGVhZD9oKCJ0YWJsZSIsZS5uU2Nyb2xsSGVhZClbMF06bnVsbCxnPWUublNjcm9sbEZvb3Q/CmgoInRhYmxlIixlLm5TY3JvbGxGb290KVswXTpudWxsO2lmKGUublRhYmxlPT09Ynx8Zj09PWJ8fGc9PT1iKWM9ITB9KTtyZXR1cm4gY307bS50YWJsZXM9bS5mblRhYmxlcz1mdW5jdGlvbihhKXt2YXIgYj0hMTtoLmlzUGxhaW5PYmplY3QoYSkmJihiPWEuYXBpLGE9YS52aXNpYmxlKTt2YXIgYz1oLm1hcChtLnNldHRpbmdzLGZ1bmN0aW9uKGIpe2lmKCFhfHxhJiZoKGIublRhYmxlKS5pcygiOnZpc2libGUiKSlyZXR1cm4gYi5uVGFibGV9KTtyZXR1cm4gYj9uZXcgcyhjKTpjfTttLmNhbWVsVG9IdW5nYXJpYW49STtvKCIkKCkiLGZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5yb3dzKGIpLm5vZGVzKCksYz1oKGMpO3JldHVybiBoKFtdLmNvbmNhdChjLmZpbHRlcihhKS50b0FycmF5KCksYy5maW5kKGEpLnRvQXJyYXkoKSkpfSk7aC5lYWNoKFsib24iLCJvbmUiLCJvZmYiXSxmdW5jdGlvbihhLGIpe28oYisiKCkiLGZ1bmN0aW9uKCl7dmFyIGE9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKYVswXT1oLm1hcChhWzBdLnNwbGl0KC9ccy8pLGZ1bmN0aW9uKGEpe3JldHVybiFhLm1hdGNoKC9cLmR0XGIvKT9hKyIuZHQiOmF9KS5qb2luKCIgIik7dmFyIGQ9aCh0aGlzLnRhYmxlcygpLm5vZGVzKCkpO2RbYl0uYXBwbHkoZCxhKTtyZXR1cm4gdGhpc30pfSk7bygiY2xlYXIoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe25hKGEpfSl9KTtvKCJzZXR0aW5ncygpIixmdW5jdGlvbigpe3JldHVybiBuZXcgcyh0aGlzLmNvbnRleHQsdGhpcy5jb250ZXh0KX0pO28oImluaXQoKSIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLmNvbnRleHQ7cmV0dXJuIGEubGVuZ3RoP2FbMF0ub0luaXQ6bnVsbH0pO28oImRhdGEoKSIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pdGVyYXRvcigidGFibGUiLGZ1bmN0aW9uKGEpe3JldHVybiBEKGEuYW9EYXRhLCJfYURhdGEiKX0pLmZsYXR0ZW4oKX0pO28oImRlc3Ryb3koKSIsZnVuY3Rpb24oYSl7YT1hfHwKITE7cmV0dXJuIHRoaXMuaXRlcmF0b3IoInRhYmxlIixmdW5jdGlvbihiKXt2YXIgYz1iLm5UYWJsZVdyYXBwZXIucGFyZW50Tm9kZSxkPWIub0NsYXNzZXMsZT1iLm5UYWJsZSxmPWIublRCb2R5LGc9Yi5uVEhlYWQsaj1iLm5URm9vdCxpPWgoZSksZj1oKGYpLGs9aChiLm5UYWJsZVdyYXBwZXIpLGw9aC5tYXAoYi5hb0RhdGEsZnVuY3Rpb24oYSl7cmV0dXJuIGEublRyfSksbztiLmJEZXN0cm95aW5nPSEwO3IoYiwiYW9EZXN0cm95Q2FsbGJhY2siLCJkZXN0cm95IixbYl0pO2F8fChuZXcgcyhiKSkuY29sdW1ucygpLnZpc2libGUoITApO2sub2ZmKCIuRFQiKS5maW5kKCI6bm90KHRib2R5ICopIikub2ZmKCIuRFQiKTtoKEUpLm9mZigiLkRULSIrYi5zSW5zdGFuY2UpO2UhPWcucGFyZW50Tm9kZSYmKGkuY2hpbGRyZW4oInRoZWFkIikuZGV0YWNoKCksaS5hcHBlbmQoZykpO2omJmUhPWoucGFyZW50Tm9kZSYmKGkuY2hpbGRyZW4oInRmb290IikuZGV0YWNoKCksaS5hcHBlbmQoaikpOwpiLmFhU29ydGluZz1bXTtiLmFhU29ydGluZ0ZpeGVkPVtdO3dhKGIpO2gobCkucmVtb3ZlQ2xhc3MoYi5hc1N0cmlwZUNsYXNzZXMuam9pbigiICIpKTtoKCJ0aCwgdGQiLGcpLnJlbW92ZUNsYXNzKGQuc1NvcnRhYmxlKyIgIitkLnNTb3J0YWJsZUFzYysiICIrZC5zU29ydGFibGVEZXNjKyIgIitkLnNTb3J0YWJsZU5vbmUpO2YuY2hpbGRyZW4oKS5kZXRhY2goKTtmLmFwcGVuZChsKTtnPWE/InJlbW92ZSI6ImRldGFjaCI7aVtnXSgpO2tbZ10oKTshYSYmYyYmKGMuaW5zZXJ0QmVmb3JlKGUsYi5uVGFibGVSZWluc2VydEJlZm9yZSksaS5jc3MoIndpZHRoIixiLnNEZXN0cm95V2lkdGgpLnJlbW92ZUNsYXNzKGQuc1RhYmxlKSwobz1iLmFzRGVzdHJveVN0cmlwZXMubGVuZ3RoKSYmZi5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oYSl7aCh0aGlzKS5hZGRDbGFzcyhiLmFzRGVzdHJveVN0cmlwZXNbYSVvXSl9KSk7Yz1oLmluQXJyYXkoYixtLnNldHRpbmdzKTstMSE9PWMmJm0uc2V0dGluZ3Muc3BsaWNlKGMsCjEpfSl9KTtoLmVhY2goWyJjb2x1bW4iLCJyb3ciLCJjZWxsIl0sZnVuY3Rpb24oYSxiKXtvKGIrInMoKS5ldmVyeSgpIixmdW5jdGlvbihhKXt2YXIgZD10aGlzLnNlbGVjdG9yLm9wdHMsZT10aGlzO3JldHVybiB0aGlzLml0ZXJhdG9yKGIsZnVuY3Rpb24oZixnLGgsaSxuKXthLmNhbGwoZVtiXShnLCJjZWxsIj09PWI/aDpkLCJjZWxsIj09PWI/ZDprKSxnLGgsaSxuKX0pfSl9KTtvKCJpMThuKCkiLGZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmNvbnRleHRbMF0sYT1RKGEpKGQub0xhbmd1YWdlKTthPT09ayYmKGE9Yik7YyE9PWsmJmguaXNQbGFpbk9iamVjdChhKSYmKGE9YVtjXSE9PWs/YVtjXTphLl8pO3JldHVybiBhLnJlcGxhY2UoIiVkIixjKX0pO20udmVyc2lvbj0iMS4xMC4xNiI7bS5zZXR0aW5ncz1bXTttLm1vZGVscz17fTttLm1vZGVscy5vU2VhcmNoPXtiQ2FzZUluc2Vuc2l0aXZlOiEwLHNTZWFyY2g6IiIsYlJlZ2V4OiExLGJTbWFydDohMH07bS5tb2RlbHMub1Jvdz0Ke25UcjpudWxsLGFuQ2VsbHM6bnVsbCxfYURhdGE6W10sX2FTb3J0RGF0YTpudWxsLF9hRmlsdGVyRGF0YTpudWxsLF9zRmlsdGVyUm93Om51bGwsX3NSb3dTdHJpcGU6IiIsc3JjOm51bGwsaWR4Oi0xfTttLm1vZGVscy5vQ29sdW1uPXtpZHg6bnVsbCxhRGF0YVNvcnQ6bnVsbCxhc1NvcnRpbmc6bnVsbCxiU2VhcmNoYWJsZTpudWxsLGJTb3J0YWJsZTpudWxsLGJWaXNpYmxlOm51bGwsX3NNYW51YWxUeXBlOm51bGwsX2JBdHRyU3JjOiExLGZuQ3JlYXRlZENlbGw6bnVsbCxmbkdldERhdGE6bnVsbCxmblNldERhdGE6bnVsbCxtRGF0YTpudWxsLG1SZW5kZXI6bnVsbCxuVGg6bnVsbCxuVGY6bnVsbCxzQ2xhc3M6bnVsbCxzQ29udGVudFBhZGRpbmc6bnVsbCxzRGVmYXVsdENvbnRlbnQ6bnVsbCxzTmFtZTpudWxsLHNTb3J0RGF0YVR5cGU6InN0ZCIsc1NvcnRpbmdDbGFzczpudWxsLHNTb3J0aW5nQ2xhc3NKVUk6bnVsbCxzVGl0bGU6bnVsbCxzVHlwZTpudWxsLHNXaWR0aDpudWxsLApzV2lkdGhPcmlnOm51bGx9O20uZGVmYXVsdHM9e2FhRGF0YTpudWxsLGFhU29ydGluZzpbWzAsImFzYyJdXSxhYVNvcnRpbmdGaXhlZDpbXSxhamF4Om51bGwsYUxlbmd0aE1lbnU6WzEwLDI1LDUwLDEwMF0sYW9Db2x1bW5zOm51bGwsYW9Db2x1bW5EZWZzOm51bGwsYW9TZWFyY2hDb2xzOltdLGFzU3RyaXBlQ2xhc3NlczpudWxsLGJBdXRvV2lkdGg6ITAsYkRlZmVyUmVuZGVyOiExLGJEZXN0cm95OiExLGJGaWx0ZXI6ITAsYkluZm86ITAsYkxlbmd0aENoYW5nZTohMCxiUGFnaW5hdGU6ITAsYlByb2Nlc3Npbmc6ITEsYlJldHJpZXZlOiExLGJTY3JvbGxDb2xsYXBzZTohMSxiU2VydmVyU2lkZTohMSxiU29ydDohMCxiU29ydE11bHRpOiEwLGJTb3J0Q2VsbHNUb3A6ITEsYlNvcnRDbGFzc2VzOiEwLGJTdGF0ZVNhdmU6ITEsZm5DcmVhdGVkUm93Om51bGwsZm5EcmF3Q2FsbGJhY2s6bnVsbCxmbkZvb3RlckNhbGxiYWNrOm51bGwsZm5Gb3JtYXROdW1iZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGEudG9TdHJpbmcoKS5yZXBsYWNlKC9cQig/PShcZHszfSkrKD8hXGQpKS9nLAp0aGlzLm9MYW5ndWFnZS5zVGhvdXNhbmRzKX0sZm5IZWFkZXJDYWxsYmFjazpudWxsLGZuSW5mb0NhbGxiYWNrOm51bGwsZm5Jbml0Q29tcGxldGU6bnVsbCxmblByZURyYXdDYWxsYmFjazpudWxsLGZuUm93Q2FsbGJhY2s6bnVsbCxmblNlcnZlckRhdGE6bnVsbCxmblNlcnZlclBhcmFtczpudWxsLGZuU3RhdGVMb2FkQ2FsbGJhY2s6ZnVuY3Rpb24oYSl7dHJ5e3JldHVybiBKU09OLnBhcnNlKCgtMT09PWEuaVN0YXRlRHVyYXRpb24/c2Vzc2lvblN0b3JhZ2U6bG9jYWxTdG9yYWdlKS5nZXRJdGVtKCJEYXRhVGFibGVzXyIrYS5zSW5zdGFuY2UrIl8iK2xvY2F0aW9uLnBhdGhuYW1lKSl9Y2F0Y2goYil7fX0sZm5TdGF0ZUxvYWRQYXJhbXM6bnVsbCxmblN0YXRlTG9hZGVkOm51bGwsZm5TdGF0ZVNhdmVDYWxsYmFjazpmdW5jdGlvbihhLGIpe3RyeXsoLTE9PT1hLmlTdGF0ZUR1cmF0aW9uP3Nlc3Npb25TdG9yYWdlOmxvY2FsU3RvcmFnZSkuc2V0SXRlbSgiRGF0YVRhYmxlc18iK2Euc0luc3RhbmNlKwoiXyIrbG9jYXRpb24ucGF0aG5hbWUsSlNPTi5zdHJpbmdpZnkoYikpfWNhdGNoKGMpe319LGZuU3RhdGVTYXZlUGFyYW1zOm51bGwsaVN0YXRlRHVyYXRpb246NzIwMCxpRGVmZXJMb2FkaW5nOm51bGwsaURpc3BsYXlMZW5ndGg6MTAsaURpc3BsYXlTdGFydDowLGlUYWJJbmRleDowLG9DbGFzc2VzOnt9LG9MYW5ndWFnZTp7b0FyaWE6e3NTb3J0QXNjZW5kaW5nOiI6IGFjdGl2YXRlIHRvIHNvcnQgY29sdW1uIGFzY2VuZGluZyIsc1NvcnREZXNjZW5kaW5nOiI6IGFjdGl2YXRlIHRvIHNvcnQgY29sdW1uIGRlc2NlbmRpbmcifSxvUGFnaW5hdGU6e3NGaXJzdDoiRmlyc3QiLHNMYXN0OiJMYXN0IixzTmV4dDoiTmV4dCIsc1ByZXZpb3VzOiJQcmV2aW91cyJ9LHNFbXB0eVRhYmxlOiJObyBkYXRhIGF2YWlsYWJsZSBpbiB0YWJsZSIsc0luZm86IlNob3dpbmcgX1NUQVJUXyB0byBfRU5EXyBvZiBfVE9UQUxfIGVudHJpZXMiLHNJbmZvRW1wdHk6IlNob3dpbmcgMCB0byAwIG9mIDAgZW50cmllcyIsCnNJbmZvRmlsdGVyZWQ6IihmaWx0ZXJlZCBmcm9tIF9NQVhfIHRvdGFsIGVudHJpZXMpIixzSW5mb1Bvc3RGaXg6IiIsc0RlY2ltYWw6IiIsc1Rob3VzYW5kczoiLCIsc0xlbmd0aE1lbnU6IlNob3cgX01FTlVfIGVudHJpZXMiLHNMb2FkaW5nUmVjb3JkczoiTG9hZGluZy4uLiIsc1Byb2Nlc3Npbmc6IlByb2Nlc3NpbmcuLi4iLHNTZWFyY2g6IlNlYXJjaDoiLHNTZWFyY2hQbGFjZWhvbGRlcjoiIixzVXJsOiIiLHNaZXJvUmVjb3JkczoiTm8gbWF0Y2hpbmcgcmVjb3JkcyBmb3VuZCJ9LG9TZWFyY2g6aC5leHRlbmQoe30sbS5tb2RlbHMub1NlYXJjaCksc0FqYXhEYXRhUHJvcDoiZGF0YSIsc0FqYXhTb3VyY2U6bnVsbCxzRG9tOiJsZnJ0aXAiLHNlYXJjaERlbGF5Om51bGwsc1BhZ2luYXRpb25UeXBlOiJzaW1wbGVfbnVtYmVycyIsc1Njcm9sbFg6IiIsc1Njcm9sbFhJbm5lcjoiIixzU2Nyb2xsWToiIixzU2VydmVyTWV0aG9kOiJHRVQiLHJlbmRlcmVyOm51bGwscm93SWQ6IkRUX1Jvd0lkIn07ClgobS5kZWZhdWx0cyk7bS5kZWZhdWx0cy5jb2x1bW49e2FEYXRhU29ydDpudWxsLGlEYXRhU29ydDotMSxhc1NvcnRpbmc6WyJhc2MiLCJkZXNjIl0sYlNlYXJjaGFibGU6ITAsYlNvcnRhYmxlOiEwLGJWaXNpYmxlOiEwLGZuQ3JlYXRlZENlbGw6bnVsbCxtRGF0YTpudWxsLG1SZW5kZXI6bnVsbCxzQ2VsbFR5cGU6InRkIixzQ2xhc3M6IiIsc0NvbnRlbnRQYWRkaW5nOiIiLHNEZWZhdWx0Q29udGVudDpudWxsLHNOYW1lOiIiLHNTb3J0RGF0YVR5cGU6InN0ZCIsc1RpdGxlOm51bGwsc1R5cGU6bnVsbCxzV2lkdGg6bnVsbH07WChtLmRlZmF1bHRzLmNvbHVtbik7bS5tb2RlbHMub1NldHRpbmdzPXtvRmVhdHVyZXM6e2JBdXRvV2lkdGg6bnVsbCxiRGVmZXJSZW5kZXI6bnVsbCxiRmlsdGVyOm51bGwsYkluZm86bnVsbCxiTGVuZ3RoQ2hhbmdlOm51bGwsYlBhZ2luYXRlOm51bGwsYlByb2Nlc3Npbmc6bnVsbCxiU2VydmVyU2lkZTpudWxsLGJTb3J0Om51bGwsYlNvcnRNdWx0aTpudWxsLApiU29ydENsYXNzZXM6bnVsbCxiU3RhdGVTYXZlOm51bGx9LG9TY3JvbGw6e2JDb2xsYXBzZTpudWxsLGlCYXJXaWR0aDowLHNYOm51bGwsc1hJbm5lcjpudWxsLHNZOm51bGx9LG9MYW5ndWFnZTp7Zm5JbmZvQ2FsbGJhY2s6bnVsbH0sb0Jyb3dzZXI6e2JTY3JvbGxPdmVyc2l6ZTohMSxiU2Nyb2xsYmFyTGVmdDohMSxiQm91bmRpbmc6ITEsYmFyV2lkdGg6MH0sYWpheDpudWxsLGFhbkZlYXR1cmVzOltdLGFvRGF0YTpbXSxhaURpc3BsYXk6W10sYWlEaXNwbGF5TWFzdGVyOltdLGFJZHM6e30sYW9Db2x1bW5zOltdLGFvSGVhZGVyOltdLGFvRm9vdGVyOltdLG9QcmV2aW91c1NlYXJjaDp7fSxhb1ByZVNlYXJjaENvbHM6W10sYWFTb3J0aW5nOm51bGwsYWFTb3J0aW5nRml4ZWQ6W10sYXNTdHJpcGVDbGFzc2VzOm51bGwsYXNEZXN0cm95U3RyaXBlczpbXSxzRGVzdHJveVdpZHRoOjAsYW9Sb3dDYWxsYmFjazpbXSxhb0hlYWRlckNhbGxiYWNrOltdLGFvRm9vdGVyQ2FsbGJhY2s6W10sCmFvRHJhd0NhbGxiYWNrOltdLGFvUm93Q3JlYXRlZENhbGxiYWNrOltdLGFvUHJlRHJhd0NhbGxiYWNrOltdLGFvSW5pdENvbXBsZXRlOltdLGFvU3RhdGVTYXZlUGFyYW1zOltdLGFvU3RhdGVMb2FkUGFyYW1zOltdLGFvU3RhdGVMb2FkZWQ6W10sc1RhYmxlSWQ6IiIsblRhYmxlOm51bGwsblRIZWFkOm51bGwsblRGb290Om51bGwsblRCb2R5Om51bGwsblRhYmxlV3JhcHBlcjpudWxsLGJEZWZlckxvYWRpbmc6ITEsYkluaXRpYWxpc2VkOiExLGFvT3BlblJvd3M6W10sc0RvbTpudWxsLHNlYXJjaERlbGF5Om51bGwsc1BhZ2luYXRpb25UeXBlOiJ0d29fYnV0dG9uIixpU3RhdGVEdXJhdGlvbjowLGFvU3RhdGVTYXZlOltdLGFvU3RhdGVMb2FkOltdLG9TYXZlZFN0YXRlOm51bGwsb0xvYWRlZFN0YXRlOm51bGwsc0FqYXhTb3VyY2U6bnVsbCxzQWpheERhdGFQcm9wOm51bGwsYkFqYXhEYXRhR2V0OiEwLGpxWEhSOm51bGwsanNvbjprLG9BamF4RGF0YTprLGZuU2VydmVyRGF0YTpudWxsLAphb1NlcnZlclBhcmFtczpbXSxzU2VydmVyTWV0aG9kOm51bGwsZm5Gb3JtYXROdW1iZXI6bnVsbCxhTGVuZ3RoTWVudTpudWxsLGlEcmF3OjAsYkRyYXdpbmc6ITEsaURyYXdFcnJvcjotMSxfaURpc3BsYXlMZW5ndGg6MTAsX2lEaXNwbGF5U3RhcnQ6MCxfaVJlY29yZHNUb3RhbDowLF9pUmVjb3Jkc0Rpc3BsYXk6MCxvQ2xhc3Nlczp7fSxiRmlsdGVyZWQ6ITEsYlNvcnRlZDohMSxiU29ydENlbGxzVG9wOm51bGwsb0luaXQ6bnVsbCxhb0Rlc3Ryb3lDYWxsYmFjazpbXSxmblJlY29yZHNUb3RhbDpmdW5jdGlvbigpe3JldHVybiJzc3AiPT15KHRoaXMpPzEqdGhpcy5faVJlY29yZHNUb3RhbDp0aGlzLmFpRGlzcGxheU1hc3Rlci5sZW5ndGh9LGZuUmVjb3Jkc0Rpc3BsYXk6ZnVuY3Rpb24oKXtyZXR1cm4ic3NwIj09eSh0aGlzKT8xKnRoaXMuX2lSZWNvcmRzRGlzcGxheTp0aGlzLmFpRGlzcGxheS5sZW5ndGh9LGZuRGlzcGxheUVuZDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2lEaXNwbGF5TGVuZ3RoLApiPXRoaXMuX2lEaXNwbGF5U3RhcnQsYz1iK2EsZD10aGlzLmFpRGlzcGxheS5sZW5ndGgsZT10aGlzLm9GZWF0dXJlcyxmPWUuYlBhZ2luYXRlO3JldHVybiBlLmJTZXJ2ZXJTaWRlPyExPT09Znx8LTE9PT1hP2IrZDpNYXRoLm1pbihiK2EsdGhpcy5faVJlY29yZHNEaXNwbGF5KTohZnx8Yz5kfHwtMT09PWE/ZDpjfSxvSW5zdGFuY2U6bnVsbCxzSW5zdGFuY2U6bnVsbCxpVGFiSW5kZXg6MCxuU2Nyb2xsSGVhZDpudWxsLG5TY3JvbGxGb290Om51bGwsYUxhc3RTb3J0OltdLG9QbHVnaW5zOnt9LHJvd0lkRm46bnVsbCxyb3dJZDpudWxsfTttLmV4dD14PXtidXR0b25zOnt9LGNsYXNzZXM6e30sYnVpbGRlcjoiLXNvdXJjZS0iLGVyck1vZGU6ImFsZXJ0IixmZWF0dXJlOltdLHNlYXJjaDpbXSxzZWxlY3Rvcjp7Y2VsbDpbXSxjb2x1bW46W10scm93OltdfSxpbnRlcm5hbDp7fSxsZWdhY3k6e2FqYXg6bnVsbH0scGFnZXI6e30scmVuZGVyZXI6e3BhZ2VCdXR0b246e30saGVhZGVyOnt9fSwKb3JkZXI6e30sdHlwZTp7ZGV0ZWN0OltdLHNlYXJjaDp7fSxvcmRlcjp7fX0sX3VuaXF1ZTowLGZuVmVyc2lvbkNoZWNrOm0uZm5WZXJzaW9uQ2hlY2ssaUFwaUluZGV4OjAsb0pVSUNsYXNzZXM6e30sc1ZlcnNpb246bS52ZXJzaW9ufTtoLmV4dGVuZCh4LHthZm5GaWx0ZXJpbmc6eC5zZWFyY2gsYVR5cGVzOngudHlwZS5kZXRlY3Qsb2ZuU2VhcmNoOngudHlwZS5zZWFyY2gsb1NvcnQ6eC50eXBlLm9yZGVyLGFmblNvcnREYXRhOngub3JkZXIsYW9GZWF0dXJlczp4LmZlYXR1cmUsb0FwaTp4LmludGVybmFsLG9TdGRDbGFzc2VzOnguY2xhc3NlcyxvUGFnaW5hdGlvbjp4LnBhZ2VyfSk7aC5leHRlbmQobS5leHQuY2xhc3Nlcyx7c1RhYmxlOiJkYXRhVGFibGUiLHNOb0Zvb3Rlcjoibm8tZm9vdGVyIixzUGFnZUJ1dHRvbjoicGFnaW5hdGVfYnV0dG9uIixzUGFnZUJ1dHRvbkFjdGl2ZToiY3VycmVudCIsc1BhZ2VCdXR0b25EaXNhYmxlZDoiZGlzYWJsZWQiLHNTdHJpcGVPZGQ6Im9kZCIsCnNTdHJpcGVFdmVuOiJldmVuIixzUm93RW1wdHk6ImRhdGFUYWJsZXNfZW1wdHkiLHNXcmFwcGVyOiJkYXRhVGFibGVzX3dyYXBwZXIiLHNGaWx0ZXI6ImRhdGFUYWJsZXNfZmlsdGVyIixzSW5mbzoiZGF0YVRhYmxlc19pbmZvIixzUGFnaW5nOiJkYXRhVGFibGVzX3BhZ2luYXRlIHBhZ2luZ18iLHNMZW5ndGg6ImRhdGFUYWJsZXNfbGVuZ3RoIixzUHJvY2Vzc2luZzoiZGF0YVRhYmxlc19wcm9jZXNzaW5nIixzU29ydEFzYzoic29ydGluZ19hc2MiLHNTb3J0RGVzYzoic29ydGluZ19kZXNjIixzU29ydGFibGU6InNvcnRpbmciLHNTb3J0YWJsZUFzYzoic29ydGluZ19hc2NfZGlzYWJsZWQiLHNTb3J0YWJsZURlc2M6InNvcnRpbmdfZGVzY19kaXNhYmxlZCIsc1NvcnRhYmxlTm9uZToic29ydGluZ19kaXNhYmxlZCIsc1NvcnRDb2x1bW46InNvcnRpbmdfIixzRmlsdGVySW5wdXQ6IiIsc0xlbmd0aFNlbGVjdDoiIixzU2Nyb2xsV3JhcHBlcjoiZGF0YVRhYmxlc19zY3JvbGwiLHNTY3JvbGxIZWFkOiJkYXRhVGFibGVzX3Njcm9sbEhlYWQiLApzU2Nyb2xsSGVhZElubmVyOiJkYXRhVGFibGVzX3Njcm9sbEhlYWRJbm5lciIsc1Njcm9sbEJvZHk6ImRhdGFUYWJsZXNfc2Nyb2xsQm9keSIsc1Njcm9sbEZvb3Q6ImRhdGFUYWJsZXNfc2Nyb2xsRm9vdCIsc1Njcm9sbEZvb3RJbm5lcjoiZGF0YVRhYmxlc19zY3JvbGxGb290SW5uZXIiLHNIZWFkZXJUSDoiIixzRm9vdGVyVEg6IiIsc1NvcnRKVUlBc2M6IiIsc1NvcnRKVUlEZXNjOiIiLHNTb3J0SlVJOiIiLHNTb3J0SlVJQXNjQWxsb3dlZDoiIixzU29ydEpVSURlc2NBbGxvd2VkOiIiLHNTb3J0SlVJV3JhcHBlcjoiIixzU29ydEljb246IiIsc0pVSUhlYWRlcjoiIixzSlVJRm9vdGVyOiIifSk7dmFyIEtiPW0uZXh0LnBhZ2VyO2guZXh0ZW5kKEtiLHtzaW1wbGU6ZnVuY3Rpb24oKXtyZXR1cm5bInByZXZpb3VzIiwibmV4dCJdfSxmdWxsOmZ1bmN0aW9uKCl7cmV0dXJuWyJmaXJzdCIsInByZXZpb3VzIiwibmV4dCIsImxhc3QiXX0sbnVtYmVyczpmdW5jdGlvbihhLGIpe3JldHVybltoYShhLApiKV19LHNpbXBsZV9udW1iZXJzOmZ1bmN0aW9uKGEsYil7cmV0dXJuWyJwcmV2aW91cyIsaGEoYSxiKSwibmV4dCJdfSxmdWxsX251bWJlcnM6ZnVuY3Rpb24oYSxiKXtyZXR1cm5bImZpcnN0IiwicHJldmlvdXMiLGhhKGEsYiksIm5leHQiLCJsYXN0Il19LGZpcnN0X2xhc3RfbnVtYmVyczpmdW5jdGlvbihhLGIpe3JldHVyblsiZmlyc3QiLGhhKGEsYiksImxhc3QiXX0sX251bWJlcnM6aGEsbnVtYmVyc19sZW5ndGg6N30pO2guZXh0ZW5kKCEwLG0uZXh0LnJlbmRlcmVyLHtwYWdlQnV0dG9uOntfOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXt2YXIgZz1hLm9DbGFzc2VzLGo9YS5vTGFuZ3VhZ2Uub1BhZ2luYXRlLGk9YS5vTGFuZ3VhZ2Uub0FyaWEucGFnaW5hdGV8fHt9LG4sbCxtPTAsbz1mdW5jdGlvbihiLGQpe3ZhciBrLHMsdSxyLHY9ZnVuY3Rpb24oYil7U2EoYSxiLmRhdGEuYWN0aW9uLHRydWUpfTtrPTA7Zm9yKHM9ZC5sZW5ndGg7azxzO2srKyl7cj1kW2tdO2lmKGguaXNBcnJheShyKSl7dT0KaCgiPCIrKHIuRFRfZWx8fCJkaXYiKSsiLz4iKS5hcHBlbmRUbyhiKTtvKHUscil9ZWxzZXtuPW51bGw7bD0iIjtzd2l0Y2gocil7Y2FzZSAiZWxsaXBzaXMiOmIuYXBwZW5kKCc8c3BhbiBjbGFzcz0iZWxsaXBzaXMiPiYjeDIwMjY7PC9zcGFuPicpO2JyZWFrO2Nhc2UgImZpcnN0IjpuPWouc0ZpcnN0O2w9cisoZT4wPyIiOiIgIitnLnNQYWdlQnV0dG9uRGlzYWJsZWQpO2JyZWFrO2Nhc2UgInByZXZpb3VzIjpuPWouc1ByZXZpb3VzO2w9cisoZT4wPyIiOiIgIitnLnNQYWdlQnV0dG9uRGlzYWJsZWQpO2JyZWFrO2Nhc2UgIm5leHQiOm49ai5zTmV4dDtsPXIrKGU8Zi0xPyIiOiIgIitnLnNQYWdlQnV0dG9uRGlzYWJsZWQpO2JyZWFrO2Nhc2UgImxhc3QiOm49ai5zTGFzdDtsPXIrKGU8Zi0xPyIiOiIgIitnLnNQYWdlQnV0dG9uRGlzYWJsZWQpO2JyZWFrO2RlZmF1bHQ6bj1yKzE7bD1lPT09cj9nLnNQYWdlQnV0dG9uQWN0aXZlOiIifWlmKG4hPT1udWxsKXt1PWgoIjxhPiIseyJjbGFzcyI6Zy5zUGFnZUJ1dHRvbisKIiAiK2wsImFyaWEtY29udHJvbHMiOmEuc1RhYmxlSWQsImFyaWEtbGFiZWwiOmlbcl0sImRhdGEtZHQtaWR4IjptLHRhYmluZGV4OmEuaVRhYkluZGV4LGlkOmM9PT0wJiZ0eXBlb2Ygcj09PSJzdHJpbmciP2Euc1RhYmxlSWQrIl8iK3I6bnVsbH0pLmh0bWwobikuYXBwZW5kVG8oYik7VmEodSx7YWN0aW9uOnJ9LHYpO20rK319fX0sczt0cnl7cz1oKGIpLmZpbmQoRy5hY3RpdmVFbGVtZW50KS5kYXRhKCJkdC1pZHgiKX1jYXRjaCh1KXt9byhoKGIpLmVtcHR5KCksZCk7cyE9PWsmJmgoYikuZmluZCgiW2RhdGEtZHQtaWR4PSIrcysiXSIpLmZvY3VzKCl9fX0pO2guZXh0ZW5kKG0uZXh0LnR5cGUuZGV0ZWN0LFtmdW5jdGlvbihhLGIpe3ZhciBjPWIub0xhbmd1YWdlLnNEZWNpbWFsO3JldHVybiBZYShhLGMpPyJudW0iK2M6bnVsbH0sZnVuY3Rpb24oYSl7aWYoYSYmIShhIGluc3RhbmNlb2YgRGF0ZSkmJiFaYi50ZXN0KGEpKXJldHVybiBudWxsO3ZhciBiPURhdGUucGFyc2UoYSk7CnJldHVybiBudWxsIT09YiYmIWlzTmFOKGIpfHxMKGEpPyJkYXRlIjpudWxsfSxmdW5jdGlvbihhLGIpe3ZhciBjPWIub0xhbmd1YWdlLnNEZWNpbWFsO3JldHVybiBZYShhLGMsITApPyJudW0tZm10IitjOm51bGx9LGZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5vTGFuZ3VhZ2Uuc0RlY2ltYWw7cmV0dXJuIFBiKGEsYyk/Imh0bWwtbnVtIitjOm51bGx9LGZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5vTGFuZ3VhZ2Uuc0RlY2ltYWw7cmV0dXJuIFBiKGEsYywhMCk/Imh0bWwtbnVtLWZtdCIrYzpudWxsfSxmdW5jdGlvbihhKXtyZXR1cm4gTChhKXx8InN0cmluZyI9PT10eXBlb2YgYSYmLTEhPT1hLmluZGV4T2YoIjwiKT8iaHRtbCI6bnVsbH1dKTtoLmV4dGVuZChtLmV4dC50eXBlLnNlYXJjaCx7aHRtbDpmdW5jdGlvbihhKXtyZXR1cm4gTChhKT9hOiJzdHJpbmciPT09dHlwZW9mIGE/YS5yZXBsYWNlKE1iLCIgIikucmVwbGFjZShBYSwiIik6IiJ9LHN0cmluZzpmdW5jdGlvbihhKXtyZXR1cm4gTChhKT8KYToic3RyaW5nIj09PXR5cGVvZiBhP2EucmVwbGFjZShNYiwiICIpOmF9fSk7dmFyIHphPWZ1bmN0aW9uKGEsYixjLGQpe2lmKDAhPT1hJiYoIWF8fCItIj09PWEpKXJldHVybi1JbmZpbml0eTtiJiYoYT1PYihhLGIpKTthLnJlcGxhY2UmJihjJiYoYT1hLnJlcGxhY2UoYywiIikpLGQmJihhPWEucmVwbGFjZShkLCIiKSkpO3JldHVybiAxKmF9O2guZXh0ZW5kKHgudHlwZS5vcmRlcix7ImRhdGUtcHJlIjpmdW5jdGlvbihhKXtyZXR1cm4gRGF0ZS5wYXJzZShhKXx8LUluZmluaXR5fSwiaHRtbC1wcmUiOmZ1bmN0aW9uKGEpe3JldHVybiBMKGEpPyIiOmEucmVwbGFjZT9hLnJlcGxhY2UoLzwuKj8+L2csIiIpLnRvTG93ZXJDYXNlKCk6YSsiIn0sInN0cmluZy1wcmUiOmZ1bmN0aW9uKGEpe3JldHVybiBMKGEpPyIiOiJzdHJpbmciPT09dHlwZW9mIGE/YS50b0xvd2VyQ2FzZSgpOiFhLnRvU3RyaW5nPyIiOmEudG9TdHJpbmcoKX0sInN0cmluZy1hc2MiOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGE8CmI/LTE6YT5iPzE6MH0sInN0cmluZy1kZXNjIjpmdW5jdGlvbihhLGIpe3JldHVybiBhPGI/MTphPmI/LTE6MH19KTtjYigiIik7aC5leHRlbmQoITAsbS5leHQucmVuZGVyZXIse2hlYWRlcjp7XzpmdW5jdGlvbihhLGIsYyxkKXtoKGEublRhYmxlKS5vbigib3JkZXIuZHQuRFQiLGZ1bmN0aW9uKGUsZixnLGgpe2lmKGE9PT1mKXtlPWMuaWR4O2IucmVtb3ZlQ2xhc3MoYy5zU29ydGluZ0NsYXNzKyIgIitkLnNTb3J0QXNjKyIgIitkLnNTb3J0RGVzYykuYWRkQ2xhc3MoaFtlXT09ImFzYyI/ZC5zU29ydEFzYzpoW2VdPT0iZGVzYyI/ZC5zU29ydERlc2M6Yy5zU29ydGluZ0NsYXNzKX19KX0sanF1ZXJ5dWk6ZnVuY3Rpb24oYSxiLGMsZCl7aCgiPGRpdi8+IikuYWRkQ2xhc3MoZC5zU29ydEpVSVdyYXBwZXIpLmFwcGVuZChiLmNvbnRlbnRzKCkpLmFwcGVuZChoKCI8c3Bhbi8+IikuYWRkQ2xhc3MoZC5zU29ydEljb24rIiAiK2Muc1NvcnRpbmdDbGFzc0pVSSkpLmFwcGVuZFRvKGIpOwpoKGEublRhYmxlKS5vbigib3JkZXIuZHQuRFQiLGZ1bmN0aW9uKGUsZixnLGgpe2lmKGE9PT1mKXtlPWMuaWR4O2IucmVtb3ZlQ2xhc3MoZC5zU29ydEFzYysiICIrZC5zU29ydERlc2MpLmFkZENsYXNzKGhbZV09PSJhc2MiP2Quc1NvcnRBc2M6aFtlXT09ImRlc2MiP2Quc1NvcnREZXNjOmMuc1NvcnRpbmdDbGFzcyk7Yi5maW5kKCJzcGFuLiIrZC5zU29ydEljb24pLnJlbW92ZUNsYXNzKGQuc1NvcnRKVUlBc2MrIiAiK2Quc1NvcnRKVUlEZXNjKyIgIitkLnNTb3J0SlVJKyIgIitkLnNTb3J0SlVJQXNjQWxsb3dlZCsiICIrZC5zU29ydEpVSURlc2NBbGxvd2VkKS5hZGRDbGFzcyhoW2VdPT0iYXNjIj9kLnNTb3J0SlVJQXNjOmhbZV09PSJkZXNjIj9kLnNTb3J0SlVJRGVzYzpjLnNTb3J0aW5nQ2xhc3NKVUkpfX0pfX19KTt2YXIgVmI9ZnVuY3Rpb24oYSl7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgYT9hLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLnJlcGxhY2UoLyIvZywKIiZxdW90OyIpOmF9O20ucmVuZGVyPXtudW1iZXI6ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm57ZGlzcGxheTpmdW5jdGlvbihmKXtpZigibnVtYmVyIiE9PXR5cGVvZiBmJiYic3RyaW5nIiE9PXR5cGVvZiBmKXJldHVybiBmO3ZhciBnPTA+Zj8iLSI6IiIsaD1wYXJzZUZsb2F0KGYpO2lmKGlzTmFOKGgpKXJldHVybiBWYihmKTtoPWgudG9GaXhlZChjKTtmPU1hdGguYWJzKGgpO2g9cGFyc2VJbnQoZiwxMCk7Zj1jP2IrKGYtaCkudG9GaXhlZChjKS5zdWJzdHJpbmcoMik6IiI7cmV0dXJuIGcrKGR8fCIiKStoLnRvU3RyaW5nKCkucmVwbGFjZSgvXEIoPz0oXGR7M30pKyg/IVxkKSkvZyxhKStmKyhlfHwiIil9fX0sdGV4dDpmdW5jdGlvbigpe3JldHVybntkaXNwbGF5OlZifX19O2guZXh0ZW5kKG0uZXh0LmludGVybmFsLHtfZm5FeHRlcm5BcGlGdW5jOkxiLF9mbkJ1aWxkQWpheDpzYSxfZm5BamF4VXBkYXRlOmtiLF9mbkFqYXhQYXJhbWV0ZXJzOnRiLF9mbkFqYXhVcGRhdGVEcmF3OnViLApfZm5BamF4RGF0YVNyYzp0YSxfZm5BZGRDb2x1bW46RGEsX2ZuQ29sdW1uT3B0aW9uczpqYSxfZm5BZGp1c3RDb2x1bW5TaXppbmc6WSxfZm5WaXNpYmxlVG9Db2x1bW5JbmRleDpaLF9mbkNvbHVtbkluZGV4VG9WaXNpYmxlOiQsX2ZuVmlzYmxlQ29sdW1uczphYSxfZm5HZXRDb2x1bW5zOmxhLF9mbkNvbHVtblR5cGVzOkZhLF9mbkFwcGx5Q29sdW1uRGVmczpoYixfZm5IdW5nYXJpYW5NYXA6WCxfZm5DYW1lbFRvSHVuZ2FyaWFuOkksX2ZuTGFuZ3VhZ2VDb21wYXQ6Q2EsX2ZuQnJvd3NlckRldGVjdDpmYixfZm5BZGREYXRhOk0sX2ZuQWRkVHI6bWEsX2ZuTm9kZVRvRGF0YUluZGV4OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIuX0RUX1Jvd0luZGV4IT09az9iLl9EVF9Sb3dJbmRleDpudWxsfSxfZm5Ob2RlVG9Db2x1bW5JbmRleDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGguaW5BcnJheShjLGEuYW9EYXRhW2JdLmFuQ2VsbHMpfSxfZm5HZXRDZWxsRGF0YTpCLF9mblNldENlbGxEYXRhOmliLApfZm5TcGxpdE9iak5vdGF0aW9uOklhLF9mbkdldE9iamVjdERhdGFGbjpRLF9mblNldE9iamVjdERhdGFGbjpSLF9mbkdldERhdGFNYXN0ZXI6SmEsX2ZuQ2xlYXJUYWJsZTpuYSxfZm5EZWxldGVJbmRleDpvYSxfZm5JbnZhbGlkYXRlOmNhLF9mbkdldFJvd0VsZW1lbnRzOkhhLF9mbkNyZWF0ZVRyOkdhLF9mbkJ1aWxkSGVhZDpqYixfZm5EcmF3SGVhZDplYSxfZm5EcmF3Ok4sX2ZuUmVEcmF3OlMsX2ZuQWRkT3B0aW9uc0h0bWw6bWIsX2ZuRGV0ZWN0SGVhZGVyOmRhLF9mbkdldFVuaXF1ZVRoczpyYSxfZm5GZWF0dXJlSHRtbEZpbHRlcjpvYixfZm5GaWx0ZXJDb21wbGV0ZTpmYSxfZm5GaWx0ZXJDdXN0b206eGIsX2ZuRmlsdGVyQ29sdW1uOndiLF9mbkZpbHRlcjp2YixfZm5GaWx0ZXJDcmVhdGVTZWFyY2g6T2EsX2ZuRXNjYXBlUmVnZXg6UGEsX2ZuRmlsdGVyRGF0YTp5YixfZm5GZWF0dXJlSHRtbEluZm86cmIsX2ZuVXBkYXRlSW5mbzpCYixfZm5JbmZvTWFjcm9zOkNiLF9mbkluaXRpYWxpc2U6Z2EsCl9mbkluaXRDb21wbGV0ZTp1YSxfZm5MZW5ndGhDaGFuZ2U6UWEsX2ZuRmVhdHVyZUh0bWxMZW5ndGg6bmIsX2ZuRmVhdHVyZUh0bWxQYWdpbmF0ZTpzYixfZm5QYWdlQ2hhbmdlOlNhLF9mbkZlYXR1cmVIdG1sUHJvY2Vzc2luZzpwYixfZm5Qcm9jZXNzaW5nRGlzcGxheTpDLF9mbkZlYXR1cmVIdG1sVGFibGU6cWIsX2ZuU2Nyb2xsRHJhdzprYSxfZm5BcHBseVRvQ2hpbGRyZW46SCxfZm5DYWxjdWxhdGVDb2x1bW5XaWR0aHM6RWEsX2ZuVGhyb3R0bGU6TmEsX2ZuQ29udmVydFRvV2lkdGg6RGIsX2ZuR2V0V2lkZXN0Tm9kZTpFYixfZm5HZXRNYXhMZW5TdHJpbmc6RmIsX2ZuU3RyaW5nVG9Dc3M6dixfZm5Tb3J0RmxhdHRlbjpWLF9mblNvcnQ6bGIsX2ZuU29ydEFyaWE6SGIsX2ZuU29ydExpc3RlbmVyOlVhLF9mblNvcnRBdHRhY2hMaXN0ZW5lcjpMYSxfZm5Tb3J0aW5nQ2xhc3Nlczp3YSxfZm5Tb3J0RGF0YTpHYixfZm5TYXZlU3RhdGU6eGEsX2ZuTG9hZFN0YXRlOkliLF9mblNldHRpbmdzRnJvbU5vZGU6eWEsCl9mbkxvZzpKLF9mbk1hcDpGLF9mbkJpbmRBY3Rpb246VmEsX2ZuQ2FsbGJhY2tSZWc6eixfZm5DYWxsYmFja0ZpcmU6cixfZm5MZW5ndGhPdmVyZmxvdzpSYSxfZm5SZW5kZXJlcjpNYSxfZm5EYXRhU291cmNlOnksX2ZuUm93QXR0cmlidXRlczpLYSxfZm5DYWxjdWxhdGVFbmQ6ZnVuY3Rpb24oKXt9fSk7aC5mbi5kYXRhVGFibGU9bTttLiQ9aDtoLmZuLmRhdGFUYWJsZVNldHRpbmdzPW0uc2V0dGluZ3M7aC5mbi5kYXRhVGFibGVFeHQ9bS5leHQ7aC5mbi5EYXRhVGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGgodGhpcykuZGF0YVRhYmxlKGEpLmFwaSgpfTtoLmVhY2gobSxmdW5jdGlvbihhLGIpe2guZm4uRGF0YVRhYmxlW2FdPWJ9KTtyZXR1cm4gaC5mbi5kYXRhVGFibGV9KTsK"></script>
<link href="data:text/css;charset=utf-8,%0A%2Econtainer%2Dfluid%2Ecrosstalk%2Dbscols%20%7B%0Amargin%2Dleft%3A%20%2D30px%3B%0Amargin%2Dright%3A%20%2D30px%3B%0Awhite%2Dspace%3A%20normal%3B%0A%7D%0A%0Abody%20%3E%20%2Econtainer%2Dfluid%2Ecrosstalk%2Dbscols%20%7B%0Amargin%2Dleft%3A%20auto%3B%0Amargin%2Dright%3A%20auto%3B%0A%7D%0A%2Ecrosstalk%2Dinput%2Dcheckboxgroup%20%2Ecrosstalk%2Doptions%2Dgroup%20%2Ecrosstalk%2Doptions%2Dcolumn%20%7B%0Adisplay%3A%20inline%2Dblock%3B%0Apadding%2Dright%3A%2012px%3B%0Avertical%2Dalign%3A%20top%3B%0A%7D%0A%40media%20only%20screen%20and%20%28max%2Dwidth%3A480px%29%20%7B%0A%2Ecrosstalk%2Dinput%2Dcheckboxgroup%20%2Ecrosstalk%2Doptions%2Dgroup%20%2Ecrosstalk%2Doptions%2Dcolumn%20%7B%0Adisplay%3A%20block%3B%0Apadding%2Dright%3A%20inherit%3B%0A%7D%0A%7D%0A" rel="stylesheet" />
<script src="data:application/x-javascript;base64,IWZ1bmN0aW9uIGEoYixjLGQpe2Z1bmN0aW9uIGUoZyxoKXtpZighY1tnXSl7aWYoIWJbZ10pe3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFoJiZpKXJldHVybiBpKGcsITApO2lmKGYpcmV0dXJuIGYoZywhMCk7dmFyIGo9bmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrZysiJyIpO3Rocm93IGouY29kZT0iTU9EVUxFX05PVF9GT1VORCIsan12YXIgaz1jW2ddPXtleHBvcnRzOnt9fTtiW2ddWzBdLmNhbGwoay5leHBvcnRzLGZ1bmN0aW9uKGEpe3ZhciBjPWJbZ11bMV1bYV07cmV0dXJuIGUoYz9jOmEpfSxrLGsuZXhwb3J0cyxhLGIsYyxkKX1yZXR1cm4gY1tnXS5leHBvcnRzfWZvcih2YXIgZj0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxnPTA7ZzxkLmxlbmd0aDtnKyspZShkW2ddKTtyZXR1cm4gZX0oezE6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIpe2lmKCEoYSBpbnN0YW5jZW9mIGIpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTtkLmVudW1lcmFibGU9ZC5lbnVtZXJhYmxlfHwhMSxkLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZCYmKGQud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGQua2V5LGQpfX1yZXR1cm4gZnVuY3Rpb24oYixjLGQpe3JldHVybiBjJiZhKGIucHJvdG90eXBlLGMpLGQmJmEoYixkKSxifX0oKSxmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe2QodGhpcyxhKSx0aGlzLl90eXBlcz17fSx0aGlzLl9zZXE9MH1yZXR1cm4gZShhLFt7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl90eXBlc1thXTtjfHwoYz10aGlzLl90eXBlc1thXT17fSk7dmFyIGQ9InN1YiIrdGhpcy5fc2VxKys7cmV0dXJuIGNbZF09YixkfX0se2tleToib2ZmIix2YWx1ZTpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX3R5cGVzW2FdO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBiKXtmb3IodmFyIGQgaW4gYylpZihjLmhhc093blByb3BlcnR5KGQpJiZjW2RdPT09YilyZXR1cm4gZGVsZXRlIGNbZF0sZDtyZXR1cm4hMX1pZigic3RyaW5nIj09dHlwZW9mIGIpcmV0dXJuISghY3x8IWNbYl0pJiYoZGVsZXRlIGNbYl0sYik7dGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHR5cGUgZm9yIGxpc3RlbmVyIil9fSx7a2V5OiJ0cmlnZ2VyIix2YWx1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5fdHlwZXNbYV07Zm9yKHZhciBlIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShlKSYmZFtlXS5jYWxsKGMsYil9fV0pLGF9KCk7Yy5kZWZhdWx0PWZ9LHt9XSwyOltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSl7aWYoYSYmYS5fX2VzTW9kdWxlKXJldHVybiBhO3ZhciBiPXt9O2lmKG51bGwhPWEpZm9yKHZhciBjIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYykmJihiW2NdPWFbY10pO3JldHVybiBiLmRlZmF1bHQ9YSxifWZ1bmN0aW9uIGUoYSl7cmV0dXJuIGEmJmEuX19lc01vZHVsZT9hOntkZWZhdWx0OmF9fWZ1bmN0aW9uIGYoYSxiKXtpZighKGEgaW5zdGFuY2VvZiBiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBnKGEpe3ZhciBiPWEudmFyKCJmaWx0ZXJzZXQiKSxjPWIuZ2V0KCk7cmV0dXJuIGN8fChjPW5ldyBtLmRlZmF1bHQsYi5zZXQoYykpLGN9ZnVuY3Rpb24gaCgpe3JldHVybiByKyt9T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGMuRmlsdGVySGFuZGxlPXZvaWQgMDt2YXIgaT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTtkLmVudW1lcmFibGU9ZC5lbnVtZXJhYmxlfHwhMSxkLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZCYmKGQud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGQua2V5LGQpfX1yZXR1cm4gZnVuY3Rpb24oYixjLGQpe3JldHVybiBjJiZhKGIucHJvdG90eXBlLGMpLGQmJmEoYixkKSxifX0oKSxqPWEoIi4vZXZlbnRzIiksaz1lKGopLGw9YSgiLi9maWx0ZXJzZXQiKSxtPWUobCksbj1hKCIuL2dyb3VwIiksbz1lKG4pLHA9YSgiLi91dGlsIikscT1kKHApLHI9MTtjLkZpbHRlckhhbmRsZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtmKHRoaXMsYSksdGhpcy5fZXZlbnRSZWxheT1uZXcgay5kZWZhdWx0LHRoaXMuX2VtaXR0ZXI9bmV3IHEuU3Vic2NyaXB0aW9uVHJhY2tlcih0aGlzLl9ldmVudFJlbGF5KSx0aGlzLl9ncm91cD1udWxsLHRoaXMuX2ZpbHRlclNldD1udWxsLHRoaXMuX2ZpbHRlclZhcj1udWxsLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZXh0cmFJbmZvPXEuZXh0ZW5kKHtzZW5kZXI6dGhpc30sYyksdGhpcy5faWQ9ImZpbHRlciIraCgpLHRoaXMuc2V0R3JvdXAoYil9cmV0dXJuIGkoYSxbe2tleToic2V0R3JvdXAiLHZhbHVlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXM7aWYodGhpcy5fZ3JvdXAhPT1hJiYodGhpcy5fZ3JvdXB8fGEpJiYodGhpcy5fZmlsdGVyVmFyJiYodGhpcy5fZmlsdGVyVmFyLm9mZigiY2hhbmdlIix0aGlzLl92YXJPbkNoYW5nZVN1YiksdGhpcy5jbGVhcigpLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZmlsdGVyVmFyPW51bGwsdGhpcy5fZmlsdGVyU2V0PW51bGwpLHRoaXMuX2dyb3VwPWEsYSkpe2E9KDAsby5kZWZhdWx0KShhKSx0aGlzLl9maWx0ZXJTZXQ9ZyhhKSx0aGlzLl9maWx0ZXJWYXI9KDAsby5kZWZhdWx0KShhKS52YXIoImZpbHRlciIpO3ZhciBjPXRoaXMuX2ZpbHRlclZhci5vbigiY2hhbmdlIixmdW5jdGlvbihhKXtiLl9ldmVudFJlbGF5LnRyaWdnZXIoImNoYW5nZSIsYSxiKX0pO3RoaXMuX3Zhck9uQ2hhbmdlU3ViPWN9fX0se2tleToiX21lcmdlRXh0cmFJbmZvIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gcS5leHRlbmQoe30sdGhpcy5fZXh0cmFJbmZvP3RoaXMuX2V4dHJhSW5mbzpudWxsLGE/YTpudWxsKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5jbGVhcigpLHRoaXMuc2V0R3JvdXAobnVsbCl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5fZmlsdGVyU2V0JiYodGhpcy5fZmlsdGVyU2V0LmNsZWFyKHRoaXMuX2lkKSx0aGlzLl9vbkNoYW5nZShhKSl9fSx7a2V5OiJzZXQiLHZhbHVlOmZ1bmN0aW9uKGEsYil7dGhpcy5fZmlsdGVyU2V0JiYodGhpcy5fZmlsdGVyU2V0LnVwZGF0ZSh0aGlzLl9pZCxhKSx0aGlzLl9vbkNoYW5nZShiKSl9fSx7a2V5OiJvbiIsdmFsdWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5fZW1pdHRlci5vbihhLGIpfX0se2tleToib2ZmIix2YWx1ZTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLl9lbWl0dGVyLm9mZihhLGIpfX0se2tleToiX29uQ2hhbmdlIix2YWx1ZTpmdW5jdGlvbihhKXt0aGlzLl9maWx0ZXJTZXQmJnRoaXMuX2ZpbHRlclZhci5zZXQodGhpcy5fZmlsdGVyU2V0LnZhbHVlLHRoaXMuX21lcmdlRXh0cmFJbmZvKGEpKX19LHtrZXk6ImZpbHRlcmVkS2V5cyIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ZpbHRlclNldD90aGlzLl9maWx0ZXJTZXQudmFsdWU6bnVsbH19XSksYX0oKX0seyIuL2V2ZW50cyI6MSwiLi9maWx0ZXJzZXQiOjMsIi4vZ3JvdXAiOjQsIi4vdXRpbCI6MTF9XSwzOltmdW5jdGlvbihhLGIsYyl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGQoYSxiKXtpZighKGEgaW5zdGFuY2VvZiBiKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBlKGEsYil7cmV0dXJuIGE9PT1iPzA6YTxiPy0xOmE+Yj8xOnZvaWQgMH1PYmplY3QuZGVmaW5lUHJvcGVydHkoYywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY107ZC5lbnVtZXJhYmxlPWQuZW51bWVyYWJsZXx8ITEsZC5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGQmJihkLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxkLmtleSxkKX19cmV0dXJuIGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYyYmYShiLnByb3RvdHlwZSxjKSxkJiZhKGIsZCksYn19KCksZz1hKCIuL3V0aWwiKSxoPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe2QodGhpcyxhKSx0aGlzLnJlc2V0KCl9cmV0dXJuIGYoYSxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5faGFuZGxlcz17fSx0aGlzLl9rZXlzPXt9LHRoaXMuX3ZhbHVlPW51bGwsdGhpcy5fYWN0aXZlSGFuZGxlcz0wfX0se2tleToidXBkYXRlIix2YWx1ZTpmdW5jdGlvbihhLGIpe251bGwhPT1iJiYoYj1iLnNsaWNlKDApLGIuc29ydChlKSk7dmFyIGM9KDAsZy5kaWZmU29ydGVkTGlzdHMpKHRoaXMuX2hhbmRsZXNbYV0sYiksZD1jLmFkZGVkLGY9Yy5yZW1vdmVkO3RoaXMuX2hhbmRsZXNbYV09Yjtmb3IodmFyIGg9MDtoPGQubGVuZ3RoO2grKyl0aGlzLl9rZXlzW2RbaF1dPSh0aGlzLl9rZXlzW2RbaF1dfHwwKSsxO2Zvcih2YXIgaT0wO2k8Zi5sZW5ndGg7aSsrKXRoaXMuX2tleXNbZltpXV0tLTt0aGlzLl91cGRhdGVWYWx1ZShiKX19LHtrZXk6Il91cGRhdGVWYWx1ZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06dGhpcy5fYWxsS2V5cyxiPU9iamVjdC5rZXlzKHRoaXMuX2hhbmRsZXMpLmxlbmd0aDtpZigwPT09Yil0aGlzLl92YWx1ZT1udWxsO2Vsc2V7dGhpcy5fdmFsdWU9W107Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBkPXRoaXMuX2tleXNbYVtjXV07ZD09PWImJnRoaXMuX3ZhbHVlLnB1c2goYVtjXSl9fX19LHtrZXk6ImNsZWFyIix2YWx1ZTpmdW5jdGlvbihhKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIHRoaXMuX2hhbmRsZXNbYV0pe3ZhciBiPXRoaXMuX2hhbmRsZXNbYV07Ynx8KGI9W10pO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXRoaXMuX2tleXNbYltjXV0tLTtkZWxldGUgdGhpcy5faGFuZGxlc1thXSx0aGlzLl91cGRhdGVWYWx1ZSgpfX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFsdWV9fSx7a2V5OiJfYWxsS2V5cyIsZ2V0OmZ1bmN0aW9uKCl7dmFyIGE9T2JqZWN0LmtleXModGhpcy5fa2V5cyk7cmV0dXJuIGEuc29ydChlKSxhfX1dKSxhfSgpO2MuZGVmYXVsdD1ofSx7Ii4vdXRpbCI6MTF9XSw0OltmdW5jdGlvbihhLGIsYyl7KGZ1bmN0aW9uKGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEpe3JldHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7ZGVmYXVsdDphfX1mdW5jdGlvbiBlKGEsYil7aWYoIShhIGluc3RhbmNlb2YgYikpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZihhKXtpZihhJiYic3RyaW5nIj09dHlwZW9mIGEpcmV0dXJuIGsuaGFzT3duUHJvcGVydHkoYSl8fChrW2FdPW5ldyBsKGEpKSxrW2FdO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgYT8idW5kZWZpbmVkIjpoKGEpKSYmYS5fdmFycyYmYS52YXIpcmV0dXJuIGE7aWYoQXJyYXkuaXNBcnJheShhKSYmMT09YS5sZW5ndGgmJiJzdHJpbmciPT10eXBlb2YgYVswXSlyZXR1cm4gZihhWzBdKTt0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZ3JvdXBOYW1lIGFyZ3VtZW50Iil9T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBnPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIpe2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1iW2NdO2QuZW51bWVyYWJsZT1kLmVudW1lcmFibGV8fCExLGQuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBkJiYoZC53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsZC5rZXksZCl9fXJldHVybiBmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGMmJmEoYi5wcm90b3R5cGUsYyksZCYmYShiLGQpLGJ9fSgpLGg9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhfTpmdW5jdGlvbihhKXtyZXR1cm4gYSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGF9O2MuZGVmYXVsdD1mO3ZhciBpPWEoIi4vdmFyIiksaj1kKGkpO2IuX19jcm9zc3RhbGtfZ3JvdXBzPWIuX19jcm9zc3RhbGtfZ3JvdXBzfHx7fTt2YXIgaz1iLl9fY3Jvc3N0YWxrX2dyb3VwcyxsPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiKXtlKHRoaXMsYSksdGhpcy5uYW1lPWIsdGhpcy5fdmFycz17fX1yZXR1cm4gZyhhLFt7a2V5OiJ2YXIiLHZhbHVlOmZ1bmN0aW9uKGEpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIHZhciBuYW1lIik7cmV0dXJuIHRoaXMuX3ZhcnMuaGFzT3duUHJvcGVydHkoYSl8fCh0aGlzLl92YXJzW2FdPW5ldyBqLmRlZmF1bHQodGhpcyxhKSksdGhpcy5fdmFyc1thXX19LHtrZXk6ImhhcyIsdmFsdWU6ZnVuY3Rpb24oYSl7aWYoIWF8fCJzdHJpbmciIT10eXBlb2YgYSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgdmFyIG5hbWUiKTtyZXR1cm4gdGhpcy5fdmFycy5oYXNPd25Qcm9wZXJ0eShhKX19XSksYX0oKX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL3ZhciI6MTJ9XSw1OltmdW5jdGlvbihhLGIsYyl7KGZ1bmN0aW9uKGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBkKGEpe3JldHVybiBhJiZhLl9fZXNNb2R1bGU/YTp7ZGVmYXVsdDphfX1mdW5jdGlvbiBlKGEpe3JldHVybiBrLnZhcihhKX1mdW5jdGlvbiBmKGEpe3JldHVybiBrLmhhcyhhKX1PYmplY3QuZGVmaW5lUHJvcGVydHkoYywiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGc9YSgiLi9ncm91cCIpLGg9ZChnKSxpPWEoIi4vc2VsZWN0aW9uIiksaj1hKCIuL2ZpbHRlciIpO2EoIi4vaW5wdXQiKSxhKCIuL2lucHV0X3NlbGVjdGl6ZSIpLGEoIi4vaW5wdXRfY2hlY2tib3hncm91cCIpLGEoIi4vaW5wdXRfc2xpZGVyIik7dmFyIGs9KDAsaC5kZWZhdWx0KSgiZGVmYXVsdCIpO2IuU2hpbnkmJmIuU2hpbnkuYWRkQ3VzdG9tTWVzc2FnZUhhbmRsZXIoInVwZGF0ZS1jbGllbnQtdmFsdWUiLGZ1bmN0aW9uKGEpeyJzdHJpbmciPT10eXBlb2YgYS5ncm91cD8oMCxoLmRlZmF1bHQpKGEuZ3JvdXApLnZhcihhLm5hbWUpLnNldChhLnZhbHVlKTplKGEubmFtZSkuc2V0KGEudmFsdWUpfSk7dmFyIGw9e2dyb3VwOmguZGVmYXVsdCx2YXI6ZSxoYXM6ZixTZWxlY3Rpb25IYW5kbGU6aS5TZWxlY3Rpb25IYW5kbGUsRmlsdGVySGFuZGxlOmouRmlsdGVySGFuZGxlfTtjLmRlZmF1bHQ9bCxiLmNyb3NzdGFsaz1sfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vZmlsdGVyIjoyLCIuL2dyb3VwIjo0LCIuL2lucHV0Ijo2LCIuL2lucHV0X2NoZWNrYm94Z3JvdXAiOjcsIi4vaW5wdXRfc2VsZWN0aXplIjo4LCIuL2lucHV0X3NsaWRlciI6OSwiLi9zZWxlY3Rpb24iOjEwfV0sNjpbZnVuY3Rpb24oYSxiLGMpeyhmdW5jdGlvbihhKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYihiKXtpW2IuY2xhc3NOYW1lXT1iLGEuZG9jdW1lbnQmJiJjb21wbGV0ZSIhPT1hLmRvY3VtZW50LnJlYWR5U3RhdGU/aChmdW5jdGlvbigpe2QoKX0pOmEuZG9jdW1lbnQmJnNldFRpbWVvdXQoZCwxMDApfWZ1bmN0aW9uIGQoKXtPYmplY3Qua2V5cyhpKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPWlbYV07aCgiLiIrYi5jbGFzc05hbWUpLm5vdCgiLmNyb3NzdGFsay1pbnB1dC1ib3VuZCIpLmVhY2goZnVuY3Rpb24oYSxjKXtnKGIsYyl9KX0pfWZ1bmN0aW9uIGUoYSl7cmV0dXJuIGEucmVwbGFjZSgvKFshIiMkJSYnKCkqKywuXC86Ozw9Pj9AXFtcXFxdXmB7fH1+XSkvZywiXFwkMSIpfWZ1bmN0aW9uIGYoYSl7dmFyIGI9aChhKTtPYmplY3Qua2V5cyhpKS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2lmKGIuaGFzQ2xhc3MoYykmJiFiLmhhc0NsYXNzKCJjcm9zc3RhbGstaW5wdXQtYm91bmQiKSl7dmFyIGQ9aVtjXTtnKGQsYSl9fSl9ZnVuY3Rpb24gZyhhLGIpe3ZhciBjPWgoYikuZmluZCgic2NyaXB0W3R5cGU9J2FwcGxpY2F0aW9uL2pzb24nXVtkYXRhLWZvcj0nIitlKGIuaWQpKyInXSIpLGQ9SlNPTi5wYXJzZShjWzBdLmlubmVyVGV4dCksZj1hLmZhY3RvcnkoYixkKTtoKGIpLmRhdGEoImNyb3NzdGFsay1pbnN0YW5jZSIsZiksaChiKS5hZGRDbGFzcygiY3Jvc3N0YWxrLWlucHV0LWJvdW5kIil9T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLGMucmVnaXN0ZXI9Yjt2YXIgaD1hLmpRdWVyeSxpPXt9O2EuU2hpbnkmJiFmdW5jdGlvbigpe3ZhciBiPW5ldyBhLlNoaW55LklucHV0QmluZGluZyxjPWEualF1ZXJ5O2MuZXh0ZW5kKGIse2ZpbmQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGMoYSkuZmluZCgiLmNyb3NzdGFsay1pbnB1dCIpfSxpbml0aWFsaXplOmZ1bmN0aW9uKGEpe2MoYSkuaGFzQ2xhc3MoImNyb3NzdGFsay1pbnB1dC1ib3VuZCIpfHxmKGEpfSxnZXRJZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5pZH0sZ2V0VmFsdWU6ZnVuY3Rpb24oYSl7fSxzZXRWYWx1ZTpmdW5jdGlvbihhLGIpe30scmVjZWl2ZU1lc3NhZ2U6ZnVuY3Rpb24oYSxiKXt9LHN1YnNjcmliZTpmdW5jdGlvbihhLGIpe2MoYSkuZGF0YSgiY3Jvc3N0YWxrLWluc3RhbmNlIikucmVzdW1lKCl9LHVuc3Vic2NyaWJlOmZ1bmN0aW9uKGEpe2MoYSkuZGF0YSgiY3Jvc3N0YWxrLWluc3RhbmNlIikuc3VzcGVuZCgpfX0pLGEuU2hpbnkuaW5wdXRCaW5kaW5ncy5yZWdpc3RlcihiLCJjcm9zc3RhbGsuaW5wdXRCaW5kaW5nIil9KCl9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHt9XSw3OltmdW5jdGlvbihhLGIsYyl7KGZ1bmN0aW9uKGIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBjKGEpe2lmKGEmJmEuX19lc01vZHVsZSlyZXR1cm4gYTt2YXIgYj17fTtpZihudWxsIT1hKWZvcih2YXIgYyBpbiBhKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLGMpJiYoYltjXT1hW2NdKTtyZXR1cm4gYi5kZWZhdWx0PWEsYn12YXIgZD1hKCIuL2lucHV0IiksZT1jKGQpLGY9YSgiLi9maWx0ZXIiKSxnPWIualF1ZXJ5O2UucmVnaXN0ZXIoe2NsYXNzTmFtZToiY3Jvc3N0YWxrLWlucHV0LWNoZWNrYm94Z3JvdXAiLGZhY3Rvcnk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1uZXcgZi5GaWx0ZXJIYW5kbGUoYi5ncm91cCksZD12b2lkIDAsZT1nKGEpO3JldHVybiBlLm9uKCJjaGFuZ2UiLCJpbnB1dFt0eXBlPSdjaGVja2JveCddIixmdW5jdGlvbigpe3ZhciBhPWUuZmluZCgiaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpjaGVja2VkIik7MD09PWEubGVuZ3RoPyhkPW51bGwsYy5jbGVhcigpKTohZnVuY3Rpb24oKXt2YXIgZT17fTthLmVhY2goZnVuY3Rpb24oKXtiLm1hcFt0aGlzLnZhbHVlXS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2VbYV09ITB9KX0pO3ZhciBmPU9iamVjdC5rZXlzKGUpO2Yuc29ydCgpLGQ9ZixjLnNldChmKX0oKX0pLHtzdXNwZW5kOmZ1bmN0aW9uKCl7Yy5jbGVhcigpfSxyZXN1bWU6ZnVuY3Rpb24oKXtkJiZjLnNldChkKX19fX0pfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vZmlsdGVyIjoyLCIuL2lucHV0Ijo2fV0sODpbZnVuY3Rpb24oYSxiLGMpeyhmdW5jdGlvbihiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gYyhhKXtpZihhJiZhLl9fZXNNb2R1bGUpcmV0dXJuIGE7dmFyIGI9e307aWYobnVsbCE9YSlmb3IodmFyIGMgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxjKSYmKGJbY109YVtjXSk7cmV0dXJuIGIuZGVmYXVsdD1hLGJ9dmFyIGQ9YSgiLi9pbnB1dCIpLGU9YyhkKSxmPWEoIi4vdXRpbCIpLGc9YyhmKSxoPWEoIi4vZmlsdGVyIiksaT1iLmpRdWVyeTtlLnJlZ2lzdGVyKHtjbGFzc05hbWU6ImNyb3NzdGFsay1pbnB1dC1zZWxlY3QiLGZhY3Rvcnk6ZnVuY3Rpb24oYSxiKXt2YXIgYz1be3ZhbHVlOiIiLGxhYmVsOiIoQWxsKSJ9XSxkPWcuZGF0YWZyYW1lVG9EMyhiLml0ZW1zKSxlPXtvcHRpb25zOmMuY29uY2F0KGQpLHZhbHVlRmllbGQ6InZhbHVlIixsYWJlbEZpZWxkOiJsYWJlbCIsc2VhcmNoRmllbGQ6ImxhYmVsIn0sZj1pKGEpLmZpbmQoInNlbGVjdCIpWzBdLGo9aShmKS5zZWxlY3RpemUoZSlbMF0uc2VsZWN0aXplLGs9bmV3IGguRmlsdGVySGFuZGxlKGIuZ3JvdXApLGw9dm9pZCAwO3JldHVybiBqLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7MD09PWouaXRlbXMubGVuZ3RoPyhsPW51bGwsay5jbGVhcigpKTohZnVuY3Rpb24oKXt2YXIgYT17fTtqLml0ZW1zLmZvckVhY2goZnVuY3Rpb24oYyl7Yi5tYXBbY10uZm9yRWFjaChmdW5jdGlvbihiKXthW2JdPSEwfSl9KTt2YXIgYz1PYmplY3Qua2V5cyhhKTtjLnNvcnQoKSxsPWMsay5zZXQoYyl9KCl9KSx7c3VzcGVuZDpmdW5jdGlvbigpe2suY2xlYXIoKX0scmVzdW1lOmZ1bmN0aW9uKCl7bCYmay5zZXQobCl9fX19KX0pLmNhbGwodGhpcywidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9KX0seyIuL2ZpbHRlciI6MiwiLi9pbnB1dCI6NiwiLi91dGlsIjoxMX1dLDk6W2Z1bmN0aW9uKGEsYixjKXsoZnVuY3Rpb24oYil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGMoYSl7aWYoYSYmYS5fX2VzTW9kdWxlKXJldHVybiBhO3ZhciBiPXt9O2lmKG51bGwhPWEpZm9yKHZhciBjIGluIGEpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsYykmJihiW2NdPWFbY10pO3JldHVybiBiLmRlZmF1bHQ9YSxifWZ1bmN0aW9uIGQoYSxiKXtmb3IodmFyIGM9YS50b1N0cmluZygpO2MubGVuZ3RoPGI7KWM9IjAiK2M7cmV0dXJuIGN9ZnVuY3Rpb24gZShhKXtyZXR1cm4gYSBpbnN0YW5jZW9mIERhdGU/YS5nZXRVVENGdWxsWWVhcigpKyItIitkKGEuZ2V0VVRDTW9udGgoKSsxLDIpKyItIitkKGEuZ2V0VVRDRGF0ZSgpLDIpOm51bGx9dmFyIGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7dmFyIGM9W10sZD0hMCxlPSExLGY9dm9pZCAwO3RyeXtmb3IodmFyIGcsaD1hW1N5bWJvbC5pdGVyYXRvcl0oKTshKGQ9KGc9aC5uZXh0KCkpLmRvbmUpJiYoYy5wdXNoKGcudmFsdWUpLCFifHxjLmxlbmd0aCE9PWIpO2Q9ITApO31jYXRjaChhKXtlPSEwLGY9YX1maW5hbGx5e3RyeXshZCYmaC5yZXR1cm4mJmgucmV0dXJuKCl9ZmluYWxseXtpZihlKXRocm93IGZ9fXJldHVybiBjfXJldHVybiBmdW5jdGlvbihiLGMpe2lmKEFycmF5LmlzQXJyYXkoYikpcmV0dXJuIGI7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChiKSlyZXR1cm4gYShiLGMpO3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UiKX19KCksZz1hKCIuL2lucHV0IiksaD1jKGcpLGk9YSgiLi9maWx0ZXIiKSxqPWIualF1ZXJ5LGs9Yi5zdHJmdGltZTtoLnJlZ2lzdGVyKHtjbGFzc05hbWU6ImNyb3NzdGFsay1pbnB1dC1zbGlkZXIiLGZhY3Rvcnk6ZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjKCl7dmFyIGE9aC5kYXRhKCJpb25SYW5nZVNsaWRlciIpLnJlc3VsdCxiPXZvaWQgMCxjPWguZGF0YSgiZGF0YS10eXBlIik7cmV0dXJuIGI9ImRhdGUiPT09Yz9mdW5jdGlvbihhKXtyZXR1cm4gZShuZXcgRGF0ZSgrYSkpfToiZGF0ZXRpbWUiPT09Yz9mdW5jdGlvbihhKXtyZXR1cm4rYS8xZTN9OmZ1bmN0aW9uKGEpe3JldHVybithfSwiZG91YmxlIj09PWguZGF0YSgiaW9uUmFuZ2VTbGlkZXIiKS5vcHRpb25zLnR5cGU/W2IoYS5mcm9tKSxiKGEudG8pXTpiKGEuZnJvbSl9dmFyIGQ9bmV3IGkuRmlsdGVySGFuZGxlKGIuZ3JvdXApLGc9e30saD1qKGEpLmZpbmQoImlucHV0IiksbD1oLmRhdGEoImRhdGEtdHlwZSIpLG09aC5kYXRhKCJ0aW1lLWZvcm1hdCIpLG49dm9pZCAwO2lmKCJkYXRlIj09PWwpbj1rLnV0YygpLGcucHJldHRpZnk9ZnVuY3Rpb24oYSl7cmV0dXJuIG4obSxuZXcgRGF0ZShhKSl9O2Vsc2UgaWYoImRhdGV0aW1lIj09PWwpe3ZhciBvPWguZGF0YSgidGltZXpvbmUiKTtuPW8/ay50aW1lem9uZShvKTprLGcucHJldHRpZnk9ZnVuY3Rpb24oYSl7cmV0dXJuIG4obSxuZXcgRGF0ZShhKSl9fWguaW9uUmFuZ2VTbGlkZXIoZyk7dmFyIHA9bnVsbDtyZXR1cm4gaC5vbigiY2hhbmdlLmNyb3NzdGFsa1NsaWRlcklucHV0IixmdW5jdGlvbihhKXtpZighaC5kYXRhKCJ1cGRhdGluZyIpJiYhaC5kYXRhKCJhbmltYXRpbmciKSl7Zm9yKHZhciBlPWMoKSxnPWYoZSwyKSxpPWdbMF0saj1nWzFdLGs9W10sbD0wO2w8Yi52YWx1ZXMubGVuZ3RoO2wrKyl7dmFyIG09Yi52YWx1ZXNbbF07bT49aSYmbTw9aiYmay5wdXNoKGIua2V5c1tsXSl9ay5zb3J0KCksZC5zZXQoaykscD1rfX0pLHtzdXNwZW5kOmZ1bmN0aW9uKCl7ZC5jbGVhcigpfSxyZXN1bWU6ZnVuY3Rpb24oKXtwJiZkLnNldChwKX19fX0pfSkuY2FsbCh0aGlzLCJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDoidW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30pfSx7Ii4vZmlsdGVyIjoyLCIuL2lucHV0Ijo2fV0sMTA6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhKXtpZihhJiZhLl9fZXNNb2R1bGUpcmV0dXJuIGE7dmFyIGI9e307aWYobnVsbCE9YSlmb3IodmFyIGMgaW4gYSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYSxjKSYmKGJbY109YVtjXSk7cmV0dXJuIGIuZGVmYXVsdD1hLGJ9ZnVuY3Rpb24gZShhKXtyZXR1cm4gYSYmYS5fX2VzTW9kdWxlP2E6e2RlZmF1bHQ6YX19ZnVuY3Rpb24gZihhLGIpe2lmKCEoYSBpbnN0YW5jZW9mIGIpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxjLlNlbGVjdGlvbkhhbmRsZT12b2lkIDA7dmFyIGc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7Zm9yKHZhciBjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBkPWJbY107ZC5lbnVtZXJhYmxlPWQuZW51bWVyYWJsZXx8ITEsZC5jb25maWd1cmFibGU9ITAsInZhbHVlImluIGQmJihkLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoYSxkLmtleSxkKX19cmV0dXJuIGZ1bmN0aW9uKGIsYyxkKXtyZXR1cm4gYyYmYShiLnByb3RvdHlwZSxjKSxkJiZhKGIsZCksYn19KCksaD1hKCIuL2V2ZW50cyIpLGk9ZShoKSxqPWEoIi4vZ3JvdXAiKSxrPWUoaiksbD1hKCIuL3V0aWwiKSxtPWQobCk7Yy5TZWxlY3Rpb25IYW5kbGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dmFyIGI9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOm51bGwsYz1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06bnVsbDtmKHRoaXMsYSksdGhpcy5fZXZlbnRSZWxheT1uZXcgaS5kZWZhdWx0LHRoaXMuX2VtaXR0ZXI9bmV3IG0uU3Vic2NyaXB0aW9uVHJhY2tlcih0aGlzLl9ldmVudFJlbGF5KSx0aGlzLl9ncm91cD1udWxsLHRoaXMuX3Zhcj1udWxsLHRoaXMuX3Zhck9uQ2hhbmdlU3ViPW51bGwsdGhpcy5fZXh0cmFJbmZvPW0uZXh0ZW5kKHtzZW5kZXI6dGhpc30sYyksdGhpcy5zZXRHcm91cChiKX1yZXR1cm4gZyhhLFt7a2V5OiJzZXRHcm91cCIsdmFsdWU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcztpZih0aGlzLl9ncm91cCE9PWEmJih0aGlzLl9ncm91cHx8YSkmJih0aGlzLl92YXImJih0aGlzLl92YXIub2ZmKCJjaGFuZ2UiLHRoaXMuX3Zhck9uQ2hhbmdlU3ViKSx0aGlzLl92YXI9bnVsbCx0aGlzLl92YXJPbkNoYW5nZVN1Yj1udWxsKSx0aGlzLl9ncm91cD1hLGEpKXt0aGlzLl92YXI9KDAsay5kZWZhdWx0KShhKS52YXIoInNlbGVjdGlvbiIpO3ZhciBjPXRoaXMuX3Zhci5vbigiY2hhbmdlIixmdW5jdGlvbihhKXtiLl9ldmVudFJlbGF5LnRyaWdnZXIoImNoYW5nZSIsYSxiKX0pO3RoaXMuX3Zhck9uQ2hhbmdlU3ViPWN9fX0se2tleToiX21lcmdlRXh0cmFJbmZvIix2YWx1ZTpmdW5jdGlvbihhKXtyZXR1cm4gbS5leHRlbmQoe30sdGhpcy5fZXh0cmFJbmZvP3RoaXMuX2V4dHJhSW5mbzpudWxsLGE/YTpudWxsKX19LHtrZXk6InNldCIsdmFsdWU6ZnVuY3Rpb24oYSxiKXt0aGlzLl92YXImJnRoaXMuX3Zhci5zZXQoYSx0aGlzLl9tZXJnZUV4dHJhSW5mbyhiKSl9fSx7a2V5OiJjbGVhciIsdmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy5fdmFyJiZ0aGlzLnNldCh2b2lkIDAsdGhpcy5fbWVyZ2VFeHRyYUluZm8oYSkpfX0se2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuX2VtaXR0ZXIub24oYSxiKX19LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5fZW1pdHRlci5vZmYoYSxiKX19LHtrZXk6ImNsb3NlIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2VtaXR0ZXIucmVtb3ZlQWxsTGlzdGVuZXJzKCksdGhpcy5zZXRHcm91cChudWxsKX19LHtrZXk6InZhbHVlIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fdmFyP3RoaXMuX3Zhci5nZXQoKTpudWxsfX1dKSxhfSgpfSx7Ii4vZXZlbnRzIjoxLCIuL2dyb3VwIjo0LCIuL3V0aWwiOjExfV0sMTE6W2Z1bmN0aW9uKGEsYixjKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhLGIpe2lmKCEoYSBpbnN0YW5jZW9mIGIpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGUoYSl7Zm9yKHZhciBiPWFyZ3VtZW50cy5sZW5ndGgsYz1BcnJheShiPjE/Yi0xOjApLGQ9MTtkPGI7ZCsrKWNbZC0xXT1hcmd1bWVudHNbZF07Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKyspe3ZhciBmPWNbZV07aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBmJiZudWxsIT09Zilmb3IodmFyIGcgaW4gZilmLmhhc093blByb3BlcnR5KGcpJiYoYVtnXT1mW2ddKX1yZXR1cm4gYX1mdW5jdGlvbiBmKGEpe2Zvcih2YXIgYj0xO2I8YS5sZW5ndGg7YisrKWlmKGFbYl08PWFbYi0xXSl0aHJvdyBuZXcgRXJyb3IoIkxpc3QgaXMgbm90IHNvcnRlZCBvciBjb250YWlucyBkdXBsaWNhdGUiKX1mdW5jdGlvbiBnKGEsYil7dmFyIGM9MCxkPTA7YXx8KGE9W10pLGJ8fChiPVtdKTt2YXIgZT1bXSxnPVtdO2ZvcihmKGEpLGYoYik7YzxhLmxlbmd0aCYmZDxiLmxlbmd0aDspYVtjXT09PWJbZF0/KGMrKyxkKyspOmFbY108YltkXT9lLnB1c2goYVtjKytdKTpnLnB1c2goYltkKytdKTtyZXR1cm4gYzxhLmxlbmd0aCYmKGU9ZS5jb25jYXQoYS5zbGljZShjKSkpLGQ8Yi5sZW5ndGgmJihnPWcuY29uY2F0KGIuc2xpY2UoZCkpKSx7cmVtb3ZlZDplLGFkZGVkOmd9fWZ1bmN0aW9uIGgoYSl7dmFyIGI9W10sYz12b2lkIDA7Zm9yKHZhciBkIGluIGEpe2lmKGEuaGFzT3duUHJvcGVydHkoZCkmJmIucHVzaChkKSwib2JqZWN0IiE9PWooYVtkXSl8fCJ1bmRlZmluZWQiPT10eXBlb2YgYVtkXS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjJiZjIT09YVtkXS5sZW5ndGgpdGhyb3cgbmV3IEVycm9yKCJBbGwgZmllbGRzIG11c3QgYmUgYXJyYXlzIG9mIHRoZSBzYW1lIGxlbmd0aCIpO2M9YVtkXS5sZW5ndGh9Zm9yKHZhciBlPVtdLGY9dm9pZCAwLGc9MDtnPGM7ZysrKXtmPXt9O2Zvcih2YXIgaD0wO2g8Yi5sZW5ndGg7aCsrKWZbYltoXV09YVtiW2hdXVtnXTtlLnB1c2goZil9cmV0dXJuIGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KGMsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIpe2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZD1iW2NdO2QuZW51bWVyYWJsZT1kLmVudW1lcmFibGV8fCExLGQuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBkJiYoZC53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGEsZC5rZXksZCl9fXJldHVybiBmdW5jdGlvbihiLGMsZCl7cmV0dXJuIGMmJmEoYi5wcm90b3R5cGUsYyksZCYmYShiLGQpLGJ9fSgpLGo9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBhfTpmdW5jdGlvbihhKXtyZXR1cm4gYSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmYS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmYSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGF9O2MuZXh0ZW5kPWUsYy5jaGVja1NvcnRlZD1mLGMuZGlmZlNvcnRlZExpc3RzPWcsYy5kYXRhZnJhbWVUb0QzPWg7Yy5TdWJzY3JpcHRpb25UcmFja2VyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiKXtkKHRoaXMsYSksdGhpcy5fZW1pdHRlcj1iLHRoaXMuX3N1YnM9e319cmV0dXJuIGkoYSxbe2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5fZW1pdHRlci5vbihhLGIpO3JldHVybiB0aGlzLl9zdWJzW2NdPWEsY319LHtrZXk6Im9mZiIsdmFsdWU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl9lbWl0dGVyLm9mZihhLGIpO3JldHVybiBjJiZkZWxldGUgdGhpcy5fc3Vic1tjXSxjfX0se2tleToicmVtb3ZlQWxsTGlzdGVuZXJzIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYj10aGlzLl9zdWJzO3RoaXMuX3N1YnM9e30sT2JqZWN0LmtleXMoYikuZm9yRWFjaChmdW5jdGlvbihjKXthLl9lbWl0dGVyLm9mZihiW2NdLGMpfSl9fV0pLGF9KCl9LHt9XSwxMjpbZnVuY3Rpb24oYSxiLGMpeyhmdW5jdGlvbihiKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZChhKXtyZXR1cm4gYSYmYS5fX2VzTW9kdWxlP2E6e2RlZmF1bHQ6YX19ZnVuY3Rpb24gZShhLGIpe2lmKCEoYSBpbnN0YW5jZW9mIGIpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eShjLCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgZj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIGF9OmZ1bmN0aW9uKGEpe3JldHVybiBhJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZhLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZhIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgYX0sZz1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiKXtmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyl7dmFyIGQ9YltjXTtkLmVudW1lcmFibGU9ZC5lbnVtZXJhYmxlfHwhMSxkLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gZCYmKGQud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhLGQua2V5LGQpfX1yZXR1cm4gZnVuY3Rpb24oYixjLGQpe3JldHVybiBjJiZhKGIucHJvdG90eXBlLGMpLGQmJmEoYixkKSxifX0oKSxoPWEoIi4vZXZlbnRzIiksaT1kKGgpLGo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyxkKXtlKHRoaXMsYSksdGhpcy5fZ3JvdXA9Yix0aGlzLl9uYW1lPWMsdGhpcy5fdmFsdWU9ZCx0aGlzLl9ldmVudHM9bmV3IGkuZGVmYXVsdH1yZXR1cm4gZyhhLFt7a2V5OiJnZXQiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ZhbHVlfX0se2tleToic2V0Iix2YWx1ZTpmdW5jdGlvbihhLGMpe2lmKHRoaXMuX3ZhbHVlIT09YSl7dmFyIGQ9dGhpcy5fdmFsdWU7dGhpcy5fdmFsdWU9YTt2YXIgZT17fTtpZihjJiYib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIGM/InVuZGVmaW5lZCI6ZihjKSkpZm9yKHZhciBnIGluIGMpYy5oYXNPd25Qcm9wZXJ0eShnKSYmKGVbZ109Y1tnXSk7ZS5vbGRWYWx1ZT1kLGUudmFsdWU9YSx0aGlzLl9ldmVudHMudHJpZ2dlcigiY2hhbmdlIixlLHRoaXMpLGIuU2hpbnkmJmIuU2hpbnkub25JbnB1dENoYW5nZSYmYi5TaGlueS5vbklucHV0Q2hhbmdlKCIuY2xpZW50VmFsdWUtIisobnVsbCE9PXRoaXMuX2dyb3VwLm5hbWU/dGhpcy5fZ3JvdXAubmFtZSsiLSI6IiIpK3RoaXMuX25hbWUsInVuZGVmaW5lZCI9PXR5cGVvZiBhP251bGw6YSl9fX0se2tleToib24iLHZhbHVlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuX2V2ZW50cy5vbihhLGIpfX0se2tleToib2ZmIix2YWx1ZTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLl9ldmVudHMub2ZmKGEsYil9fV0pLGF9KCk7Yy5kZWZhdWx0PWp9KS5jYWxsKHRoaXMsInVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzp7fSl9LHsiLi9ldmVudHMiOjF9XX0se30sWzVdKTsKLy8jIHNvdXJjZU1hcHBpbmdVUkw9Y3Jvc3N0YWxrLm1pbi5qcy5tYXA="></script>
</head>
<body style="background-color:white;">
<div id="htmlwidget_container">
<div id="htmlwidget-2da90b7ef2180d47a9a3" style="width:960px;height:500px;" class="datatables html-widget"></div>
</div>
<script type="application/json" data-for="htmlwidget-2da90b7ef2180d47a9a3">{"x":{"filter":"none","data":[["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95","96","97","98","99","100","101","102","103","104","105","106","107","108","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","124","125","126","127","128","129","130","131","132","133","134","135","136","137","138","139","140","141","142","143","144","145","146","147","148","149","150","151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175","176","177","178","179","180","181","182","183","184","185","186","187","188","189","190","191","192","193","194","195","196","197","198","199","200","201","202","203","204","205","206","207","208","209","210","211","212","213","214","215","216","217","218","219","220","221","222","223","224","225","226","227","228","229","230","231","232","233","234","235","236","237","238","239","240","241","242","243","244","245","246","247","248","249","250","251","252","253","254","255","256","257","258","259","260","261","262","263","264","265","266","267","268","269","270","271","272","273","274","275","276","277","278","279","280","281","282","283","284","285","286","287","288","289","290","291","292","293","294","295","296","297","298","299","300","301","302","303","304","305","306","307","308","309","310","311","312","313","314","315","316","317","318","319","320","321","322","323","324","325","326","327","328","329","330","331","332","333","334","335","336","337","338","339","340","341","342","343","344","345","346","347","348","349","350","351","352","353","354","355","356","357","358","359","360","361","362","363","364","365","366","367","368","369","370","371","372","373","374","375","376","377","378","379","380","381","382","383","384","385","386","387","388","389","390","391","392","393","394","395","396","397","398","399","400","401","402","403","404","405","406","407","408","409","410","411","412","413","414","415","416","417","418","419","420","421","422","423","424","425","426","427","428","429","430","431","432","433","434","435","436","437","438","439","440","441","442","443","444","445","446","447","448","449","450","451","452","453","454","455","456","457","458","459","460","461","462","463","464","465","466","467","468","469","470","471","472","473","474","475","476","477","478","479","480","481","482","483","484","485","486","487","488","489","490","491","492","493","494","495","496","497","498","499","500","501","502","503","504","505","506","507","508","509","510","511","512","513","514","515","516","517","518","519","520","521","522","523","524","525","526","527","528","529","530","531","532","533","534","535","536","537","538","539","540","541","542","543","544","545","546","547","548","549","550","551","552","553","554","555","556","557","558","559","560","561","562","563","564","565","566","567","568","569","570","571","572","573","574","575","576","577","578","579","580","581","582","583","584","585","586","587","588","589","590","591","592","593","594","595","596","597","598","599","600","601","602","603","604","605","606","607","608","609","610","611","612","613","614","615","616","617","618","619","620","621","622","623","624","625","626","627","628","629","630","631","632","633","634","635","636","637","638","639","640","641","642","643","644","645","646","647","648","649","650","651","652","653","654","655","656","657","658","659","660","661","662","663","664","665","666","667","668","669","670","671","672","673","674","675","676","677","678","679","680","681","682","683","684","685","686","687","688","689","690","691","692","693","694","695","696","697","698","699","700","701","702","703","704","705","706","707","708","709","710","711","712","713","714","715","716","717","718","719","720","721","722","723","724","725","726","727","728","729","730","731","732","733","734","735","736","737","738","739","740","741","742","743","744","745","746","747","748","749","750","751","752","753","754","755","756","757","758","759","760","761","762","763","764","765","766","767","768","769","770","771","772","773","774","775","776","777","778","779","780","781","782","783","784","785","786","787","788","789","790","791","792","793","794","795","796","797","798","799","800","801","802","803","804","805","806","807","808","809","810","811","812","813","814","815","816","817","818","819","820","821","822","823","824","825","826","827","828","829","830","831","832","833","834","835","836","837","838","839","840","841","842","843","844","845","846","847","848","849","850","851","852","853","854","855","856","857","858","859","860","861","862","863","864","865","866","867","868","869","870","871","872","873","874","875","876","877","878","879","880","881","882","883","884","885","886","887","888","889","890","891","892","893","894","895","896","897","898","899","900","901","902","903","904","905","906","907","908","909","910","911","912","913","914","915","916","917","918","919","920","921","922","923","924","925","926","927","928","929","930","931","932","933","934","935","936","937","938","939","940","941","942","943","944","945","946","947","948","949","950","951","952","953","954","955","956","957","958","959","960","961","962","963","964","965","966","967","968","969","970","971","972","973","974","975","976","977","978","979","980","981","982","983","984","985","986","987","988","989","990","991","992","993","994","995","996","997","998","999","1000","1001","1002","1003","1004","1005","1006","1007","1008","1009","1010","1011","1012","1013","1014","1015","1016","1017","1018","1019","1020","1021","1022","1023","1024","1025","1026","1027","1028","1029","1030","1031","1032","1033","1034","1035","1036","1037","1038","1039","1040","1041","1042","1043","1044","1045","1046","1047","1048","1049","1050","1051","1052","1053","1054","1055","1056","1057","1058","1059","1060","1061","1062","1063","1064","1065","1066","1067","1068","1069","1070","1071","1072","1073","1074","1075","1076","1077","1078","1079","1080","1081","1082","1083","1084","1085","1086","1087","1088","1089","1090","1091","1092","1093","1094","1095","1096","1097","1098","1099","1100","1101","1102","1103","1104","1105","1106","1107","1108","1109","1110","1111","1112","1113","1114","1115","1116","1117","1118","1119","1120","1121","1122","1123","1124","1125","1126","1127","1128","1129","1130","1131","1132","1133","1134","1135","1136","1137","1138","1139","1140","1141","1142","1143","1144","1145","1146","1147","1148","1149","1150","1151","1152","1153","1154","1155","1156","1157","1158","1159","1160","1161","1162","1163","1164","1165","1166","1167","1168","1169","1170","1171","1172","1173","1174","1175","1176","1177","1178","1179","1180","1181","1182","1183","1184","1185","1186","1187","1188","1189","1190","1191","1192","1193","1194","1195","1196","1197","1198","1199","1200","1201","1202","1203","1204","1205","1206","1207","1208","1209","1210","1211","1212","1213","1214","1215","1216","1217","1218","1219","1220","1221","1222","1223","1224","1225","1226","1227","1228","1229","1230","1231","1232","1233","1234","1235","1236","1237","1238","1239","1240","1241","1242","1243","1244","1245","1246","1247","1248","1249","1250","1251","1252","1253","1254","1255","1256","1257","1258","1259","1260","1261","1262","1263","1264","1265","1266","1267","1268","1269","1270","1271","1272","1273","1274","1275","1276","1277","1278","1279","1280","1281","1282","1283","1284","1285","1286","1287","1288","1289","1290","1291","1292","1293","1294","1295","1296","1297","1298","1299","1300","1301","1302","1303","1304","1305","1306","1307","1308","1309","1310","1311","1312","1313","1314","1315","1316","1317","1318","1319","1320","1321","1322","1323","1324","1325","1326","1327","1328","1329","1330","1331","1332","1333","1334","1335","1336","1337","1338","1339","1340","1341","1342","1343","1344","1345","1346","1347","1348","1349","1350","1351","1352","1353","1354","1355","1356","1357","1358","1359","1360","1361","1362","1363","1364","1365","1366","1367","1368","1369","1370","1371","1372","1373","1374","1375","1376","1377","1378","1379","1380","1381","1382","1383","1384","1385","1386","1387","1388","1389","1390","1391","1392","1393","1394","1395","1396","1397","1398","1399","1400","1401","1402","1403","1404","1405","1406","1407","1408","1409","1410","1411","1412","1413","1414","1415","1416","1417","1418","1419","1420","1421","1422","1423","1424","1425","1426","1427","1428","1429","1430","1431","1432","1433","1434","1435","1436","1437","1438","1439","1440","1441","1442","1443","1444","1445","1446","1447","1448","1449","1450","1451","1452","1453","1454","1455","1456","1457","1458","1459","1460","1461","1462","1463","1464","1465","1466","1467","1468","1469","1470","1471","1472","1473","1474","1475","1476","1477","1478","1479","1480","1481","1482","1483","1484","1485","1486","1487","1488","1489","1490","1491","1492","1493","1494","1495","1496","1497","1498","1499","1500","1501","1502","1503","1504","1505","1506","1507","1508","1509","1510","1511","1512","1513","1514","1515","1516","1517","1518","1519","1520","1521","1522","1523","1524","1525","1526","1527","1528","1529","1530","1531","1532","1533","1534","1535","1536","1537","1538","1539","1540","1541","1542","1543","1544","1545","1546","1547","1548","1549","1550","1551","1552","1553","1554","1555","1556","1557","1558","1559","1560","1561","1562","1563","1564","1565","1566","1567","1568","1569","1570","1571","1572","1573","1574","1575","1576","1577","1578","1579","1580","1581","1582","1583","1584","1585","1586","1587","1588","1589","1590","1591","1592","1593","1594","1595","1596","1597","1598","1599","1600","1601","1602","1603","1604","1605","1606","1607","1608","1609","1610","1611","1612","1613","1614","1615","1616","1617","1618","1619","1620","1621","1622","1623","1624","1625","1626","1627","1628","1629","1630","1631","1632","1633","1634","1635","1636","1637","1638","1639","1640","1641","1642","1643","1644","1645","1646","1647","1648","1649","1650","1651","1652","1653","1654","1655","1656","1657","1658","1659","1660","1661","1662","1663","1664","1665","1666","1667","1668","1669","1670","1671","1672","1673","1674","1675","1676","1677","1678","1679","1680","1681","1682","1683","1684","1685","1686","1687","1688","1689","1690","1691","1692","1693","1694","1695","1696","1697","1698","1699","1700","1701","1702","1703","1704","1705","1706","1707","1708","1709","1710","1711","1712","1713","1714","1715","1716","1717","1718","1719","1720","1721","1722","1723","1724","1725","1726","1727","1728","1729","1730","1731","1732","1733","1734","1735","1736","1737","1738","1739","1740","1741","1742","1743","1744","1745","1746","1747","1748","1749","1750","1751","1752","1753","1754","1755","1756","1757","1758","1759","1760","1761","1762","1763","1764","1765","1766","1767","1768","1769","1770","1771","1772","1773","1774","1775","1776","1777","1778","1779","1780","1781","1782","1783","1784","1785","1786","1787","1788","1789","1790","1791","1792","1793","1794","1795","1796","1797","1798","1799","1800","1801","1802","1803","1804","1805","1806","1807","1808","1809","1810","1811","1812","1813","1814","1815","1816","1817","1818","1819","1820","1821","1822","1823","1824","1825","1826","1827","1828","1829","1830","1831","1832","1833","1834","1835","1836","1837","1838","1839","1840","1841","1842","1843","1844","1845","1846","1847","1848","1849","1850","1851","1852","1853","1854","1855","1856","1857","1858","1859","1860","1861","1862","1863","1864","1865","1866","1867","1868","1869","1870","1871","1872","1873","1874","1875","1876","1877","1878","1879","1880","1881","1882","1883","1884","1885","1886","1887","1888","1889","1890","1891","1892","1893","1894","1895","1896","1897","1898","1899","1900","1901","1902","1903","1904","1905","1906","1907","1908","1909","1910","1911","1912","1913","1914","1915","1916","1917","1918","1919","1920","1921","1922","1923","1924","1925","1926","1927","1928","1929","1930","1931","1932","1933","1934","1935","1936","1937","1938","1939","1940","1941","1942","1943","1944","1945","1946","1947","1948","1949","1950","1951","1952","1953","1954","1955","1956","1957","1958","1959","1960","1961","1962","1963","1964","1965","1966","1967","1968","1969","1970","1971","1972","1973","1974","1975","1976","1977","1978","1979","1980","1981","1982","1983","1984","1985","1986","1987","1988","1989","1990","1991","1992","1993","1994","1995","1996","1997","1998","1999","2000","2001","2002","2003","2004","2005","2006","2007","2008","2009","2010","2011","2012","2013","2014","2015","2016","2017","2018","2019","2020","2021","2022","2023","2024","2025","2026","2027","2028","2029","2030","2031","2032","2033","2034","2035","2036","2037","2038","2039","2040","2041","2042","2043","2044","2045","2046","2047","2048","2049","2050","2051","2052","2053","2054","2055","2056","2057","2058","2059","2060","2061","2062","2063","2064","2065","2066","2067","2068","2069","2070","2071","2072","2073","2074","2075","2076","2077","2078","2079","2080","2081","2082","2083","2084","2085","2086","2087","2088","2089","2090","2091","2092","2093","2094","2095","2096","2097","2098","2099","2100","2101","2102","2103","2104","2105","2106","2107"],["GCF_000024605.1","GCF_000025285.1","GCF_000018425.1","GCF_000020645.1","GCF_000020545.1","GCF_000012585.1","GCF_000012745.1","GCF_000024325.1","GCF_000012665.1","GCF_000015485.1","GCF_000006985.1","GCF_000801295.1","GCF_000021385.1","GCF_000022125.1","GCF_001553605.1","GCF_000195295.1","GCF_000023445.1","GCF_000194625.1","GCF_000217795.1","GCF_000321415.2","GCF_000020985.1","GCF_000215975.1","GCF_000214435.1","GCF_000025485.1","GCF_000297055.2","GCF_000227745.2","GCF_000092205.1","GCF_000307105.1","GCF_000734015.1","GCF_000023225.1","GCF_000212675.2","GCF_000014965.1","GCF_000828835.1","GCF_000010665.1","GCF_000227685.2","GCF_000008665.1","GCF_000341395.1","GCF_000215085.1","GCF_000010785.1","GCF_000025945.1","GCF_000148385.1","GCF_001007875.1","GCF_000021985.1","GCF_000212395.1","GCF_000176915.2","GCF_001293165.1","GCF_000253055.1","GCF_000327045.1","GCF_000021565.1","GCF_000024205.1","GCF_000143965.1","GCF_000968135.1","GCF_000385565.1","GCF_000233715.2","GCF_000189295.2","GCF_000186885.1","GCF_000020785.1","GCF_000020365.1","GCF_000021905.1","GCF_000015145.1","GCF_000020465.1","GCF_000235605.1","GCF_000231385.2","GCF_000092945.1","GCF_000015125.1","GCF_000010405.1","GCF_000255115.2","GCF_000012865.1","GCF_000015105.1","GCF_000223395.1","GCF_000024625.1","GCF_000191045.1","GCF_000016165.1","GCF_000193375.1","GCF_000725425.1","GCF_000025505.1","GCF_000010325.1","GCF_000828615.1","GCF_000013105.1","GCF_000828635.1","GCF_000025705.1","GCF_000020625.1","GCF_000018365.1","GCF_000017945.1","GCF_000020505.1","GCF_000265525.1","GCF_000215995.1","GCF_000266945.1","GCF_000221185.1","GCF_000183725.1","GCF_000025665.1","GCF_000015205.1","GCF_001592435.1","GCF_000016085.1","GCF_000789255.1","GCF_000092305.1","GCF_000025605.1","GCF_000007305.1","GCF_000018405.1","GCF_000012965.1","GCF_000739065.1","GCF_001006045.1","GCF_000021545.1","GCF_001412615.1","GCF_000185805.1","GCF_000517445.1","GCF_000012485.1","GCF_000151105.2","GCF_000020825.1","GCF_000147355.1","GCF_000063445.1","GCF_000008625.1","GCF_000263735.1","GCF_000190315.1","GCF_000211475.1","GCF_000010345.1","GCF_000214095.2","GCF_000186245.1","GCF_000025545.1","GCF_000251105.1","GCF_000024885.1","GCF_000993805.1","GCF_000025525.1","GCF_000015225.1","GCF_000015945.1","GCF_000235565.1","GCF_000020325.1","GCF_000512735.1","GCF_000242915.1","GCF_000092465.1","GCF_000020525.1","GCF_000014865.1","GCF_000016605.1","GCF_000021725.1","GCF_000265295.1","GCF_000446015.1","GCF_000568815.1","GCF_001298465.1","GCF_000814825.1","GCF_000175575.2","GCF_000020385.1","GCF_000217995.1","GCF_000179575.2","GCF_000513295.1","GCF_000017505.1","GCF_000969905.1","GCF_000499765.1","GCF_000018605.1","GCF_000092245.1","GCF_000017185.1","GCF_000020805.1","GCF_000017725.2","GCF_000021945.1","GCF_000214415.1","GCF_000970305.1","GCF_000145295.1","GCF_000828575.1","GCF_001548055.1","GCF_000017465.2","GCF_000246985.2","GCF_000018865.1","GCF_000969965.1","GCF_000281175.1","GCF_000006175.1","GCF_000017165.1","GCF_000009985.1","GCF_000013405.1","GCF_000305935.1","GCF_000008645.1","GCF_001190755.1","GCF_000327505.1","GCF_001477655.1","GCF_000816105.1","GCF_000091665.1","GCF_000196655.1","GCF_001484685.1","GCF_000011105.1","GCF_000016125.1","GCF_000018305.1","GCF_000769655.1","GCF_000166095.1","GCF_000970025.1","GCF_000970265.1","GCF_000024265.1","GCF_000011585.1","GCF_000023985.1","GCF_000007065.1","GCF_000009025.1","GCF_000009965.1","GCF_000816345.1","GCF_000585495.1","GCF_000011905.1","GCF_000736415.1","GCF_000195895.1","GCF_000183405.1","GCF_000191585.1","GCF_000175115.2","GCF_000022545.1","GCF_000517565.1","GCF_000025865.1","GCF_000327485.1","GCF_001020955.1","GCF_000007345.1","GCF_000025025.1","GCF_001632845.1","GCF_000235685.2","GCF_000266925.1","GCF_000970045.1","GCF_001643975.1","GCF_000151205.2","GCF_000020485.1","GCF_000007985.2","GCF_000023645.1","GCF_000306725.1","GCF_000970285.1","GCF_000465235.1","GCF_000013385.1","GCF_000404165.1","GCF_000309885.1","GCF_000478885.1","GCF_000016665.1","GCF_000017805.1","GCF_000024845.1","GCF_000969885.1","GCF_000019165.1","GCF_001190745.1","GCF_000328625.1","GCF_000317795.1","GCF_000024185.1","GCF_000214725.1","GCF_000022265.1","GCF_000092405.1","GCF_000762265.1","GCF_001399775.1","GCF_000016525.1","GCF_000015825.1","GCF_000816265.1","GCF_000981545.1","GCF_000012285.1","GCF_000187005.1","GCF_000763575.1","GCF_000013445.1","GCF_000025725.1","GCF_000970085.1","GCF_000020725.1","GCF_000987835.1","GCF_000019605.1","GCF_000817955.1","GCF_000224005.2","GCF_000011205.1","GCF_000017625.1","GCF_000016745.1","GCF_000014785.1","GCF_000021965.1","GCF_000007005.1","GCF_000144915.1","GCF_000022365.1","GCF_000195335.1","GCF_000243135.2","GCF_000023885.1","GCF_000012545.1","GCF_000190635.1","GCF_000204415.1","GCF_001643955.1","GCF_000019665.1","GCF_000023845.1","GCF_000020865.1","GCF_000827125.1","GCF_000270285.1","GCF_000015045.1","GCF_000022385.1","GCF_000953475.1","GCF_000404225.1","GCF_000067165.1","GCF_000092125.1","GCF_000199675.1","GCF_000010985.1","GCF_000236585.1","GCF_000017225.1","GCF_000018485.1","GCF_000264495.1","GCF_001046955.1","GCF_000194135.1","GCF_000025125.1","GCF_000144695.1","GCF_000512895.1","GCF_000828975.1","GCF_000785705.2","GCF_000218625.1","GCF_000816785.1","GCF_000166335.1","GCF_000009725.1","GCF_000009085.1","GCF_000010045.1","GCF_000304355.2","GCF_000011185.1","GCF_000145215.1","GCF_000597865.1","GCF_000015585.1","GCF_000092105.1","GCF_000196535.1","GCF_001011055.1","GCF_001548075.1","GCF_000166075.1","GCF_000816185.1","GCF_000092905.1","GCF_000829235.1","GCF_000305775.1","GCF_000022325.1","GCF_000166695.1","GCF_000008125.1","GCF_000020905.1","GCF_001189555.1","GCF_000177635.2","GCF_000186365.1","GCF_000208405.1","GCF_000299235.1","GCF_000009905.1","GCF_000019205.1","GCF_000816225.1","GCF_000816245.1","GCF_000152265.2","GCF_000015085.1","GCF_000328665.1","GCF_000317635.1","GCF_000012925.1","GCF_000317435.1","GCF_000241025.1","GCF_000186345.1","GCF_000495505.1","GCF_000023945.1","GCF_000147875.1","GCF_000300255.2","GCF_001644685.1","GCF_000612505.1","GCF_000016405.1","GCF_000020945.1","GCF_000284095.1","GCF_000284315.1","GCF_000478825.2","GCF_000756615.1","GCF_000953715.1","GCF_000143165.1","GCF_000024765.1","GCF_000008325.1","GCF_000312705.1","GCF_000013725.1","GCF_000243155.2","GCF_001278055.1","GCF_000242455.2","GCF_000012885.1","GCF_000014025.1","GCF_000015765.1","GCF_000166355.1","GCF_000018625.1","GCF_000661895.1","GCF_000970325.1","GCF_000018345.1","GCF_000816365.1","GCF_000198515.1","GCF_000210895.1","GCF_000021645.1","GCF_000022985.1","GCF_000233775.1","GCF_000418325.1","GCF_000231405.2","GCF_000092185.1","GCF_001693255.1","GCF_000350305.1","GCF_000252995.1","GCF_000023325.1","GCF_000800805.1","GCF_000271665.2","GCF_000953215.1","GCF_000024725.1","GCF_000204115.1","GCF_000024865.1","GCF_000013205.1","GCF_000062885.1","GCF_000200595.1","GCF_001281385.1","GCF_001187595.1","GCF_000006945.1","GCF_000014005.1","GCF_000017585.1","GCF_000017245.1","GCF_000016545.1","GCF_000304315.1","GCF_000015885.1","GCF_001443605.1","GCF_000993825.1","GCF_000317475.1","GCF_000012425.1","GCF_000020965.1","GCF_000024945.1","GCF_000024165.1","GCF_000213215.1","GCF_000758645.1","GCF_000143685.1","GCF_000021865.1","GCF_000007945.1","GCF_000294515.1","GCF_000317675.1","GCF_000022045.1","GCF_000021825.1","GCF_000203895.1","GCF_000204925.1","GCF_000317025.1","GCF_000007905.1","GCF_000349945.1","GCF_000758685.1","GCF_000262305.1","GCF_001027025.1","GCF_000511405.1","GCF_001458695.1","GCF_001689125.1","GCF_000828655.1","GCF_000758725.1","GCF_000725345.1","GCF_000013225.1","GCF_000317045.1","GCF_000014805.1","GCF_000599985.1","GCF_000014185.1","GCF_001042715.1","GCF_000024545.1","GCF_000019485.1","GCF_000214665.1","GCF_000734895.2","GCF_000022885.2","GCF_000025645.1","GCF_000230715.2","GCF_000010065.1","GCF_000967305.2","GCF_000019185.1","GCF_000021765.1","GCF_000014265.1","GCF_000807275.1","GCF_000019365.1","GCF_000146875.3","GCF_000259275.1","GCF_000286435.2","GCF_000259255.1","GCF_000145255.1","GCF_000021805.1","GCF_000015985.1","GCF_000020005.1","GCF_000014045.1","GCF_001190925.1","GCF_000504105.1","GCF_000236665.1","GCF_000284335.1","GCF_000299965.1","GCF_000316665.1","GCF_000818015.1","GCF_000009705.1","GCF_000016965.1","GCF_000340885.1","GCF_001460635.1","GCF_000284255.1","GCF_000025885.1","GCF_001548455.1","GCF_000055945.1","GCF_000243075.1","GCF_000092985.1","GCF_000007745.1","GCF_000189775.2","GCF_000968375.1","GCF_000024905.1","GCF_000184685.1","GCF_000299395.1","GCF_000828915.1","GCF_000230975.2","GCF_000069965.1","GCF_000270305.1","GCF_000147695.2","GCF_000014725.1","GCF_000025005.1","GCF_000015025.1","GCF_000017845.1","GCF_000389635.1","GCF_000955905.1","GCF_000316625.1","GCF_000157895.3","GCF_000012185.1","GCF_000012305.1","GCF_000316645.1","GCF_000754265.1","GCF_000807175.1","GCF_000317695.1","GCF_000091985.1","GCF_000242895.2","GCF_000747345.1","GCF_001277295.1","GCF_001038625.1","GCF_000164985.3","GCF_900087055.1","GCF_001618685.1","GCF_000018025.1","GCF_000284235.1","GCF_000316515.1","GCF_000300455.3","GCF_000512125.1","GCF_000007865.1","GCF_000738435.1","GCF_000017425.1","GCF_000317125.1","GCF_000011345.1","GCF_000260985.3","GCF_000758705.1","GCF_000981585.1","GCF_000317515.1","GCF_000015745.1","GCF_001558255.1","GCF_000092605.1","GCF_000316575.1","GCF_000600105.1","GCF_000812185.1","GCF_000196515.1","GCF_000258405.1","GCF_000284635.1","GCF_000013605.1","GCF_000024405.1","GCF_000834455.1","GCF_000828675.1","GCF_000300475.1","GCF_000022065.1","GCF_000014665.1","GCF_000012605.1","GCF_000145615.1","GCF_000020445.1","GCF_001484565.1","GCF_000981785.1","GCF_000011605.1","GCF_000010645.1","GCF_000011785.1","GCF_000007085.1","GCF_000023385.1","GCF_000018945.1","GCF_000018145.1","GCF_000012465.1","GCF_000757865.1","GCF_000758525.1","GCF_000758625.1","GCF_000317105.1","GCF_000063525.1","GCF_000154785.2","GCF_001021065.1","GCF_000209675.1","GCF_000169195.2","GCF_000020025.1","GCF_000008545.1","GCF_001027545.1","GCF_000006825.1","GCF_000018825.1","GCF_001582075.1","GCF_000279145.1","GCF_000956175.1","GCF_000015005.1","GCF_000009865.1","GCF_001402875.1","GCF_000214825.1","GCF_000266905.1","GCF_000011485.1","GCF_000015705.1","GCF_000764555.1","GCF_001421015.1","GCF_000265425.1","GCF_000968535.2","GCF_000317615.1","GCF_000195275.1","GCF_000012505.1","GCF_000757845.1","GCF_000009785.1","GCF_000025065.1","GCF_000015505.1","GCF_000834515.1","GCF_000019965.1","GCF_000016885.1","GCF_000470655.1","GCF_000015245.1","GCF_000010625.1","GCF_000026045.1","GCF_001443645.1","GCF_000742855.1","GCF_001273775.1","GCF_000019065.1","GCF_000194805.1","GCF_000013685.1","GCF_000011965.2","GCF_000300005.1","GCF_000012645.1","GCF_000184325.1","GCF_000293885.2","GCF_001658025.1","GCF_000145235.1","GCF_000819565.1","GCF_001511755.1","GCF_000007825.1","GCF_000477435.1","GCF_000014885.1","GCF_000981805.1","GCF_000973525.1","GCF_000024385.1","GCF_000260965.1","GCF_000014585.1","GCF_000484535.1","GCF_000445995.2","GCF_000217815.1","GCF_000021885.1","GCF_000063505.1","GCF_000212415.1","GCF_000148645.1","GCF_000019285.1","GCF_000310065.1","GCF_001305615.1","GCF_000018325.1","GCF_000016725.1","GCF_000008525.1","GCF_000013245.1","GCF_000147055.1","GCF_000015865.1","GCF_001187845.1","GCF_000245355.1","GCF_001028085.1","GCF_001511815.1","GCF_000008425.1","GCF_000023085.1","GCF_000011085.1","GCF_001558435.1","GCF_000292685.1","GCF_000257545.3","GCF_001006005.1","GCF_000177255.2","GCF_000161795.2","GCF_001678945.1","GCF_000214155.1","GCF_000165715.2","GCF_001051995.2","GCF_000737535.1","GCF_000478905.1","GCF_001488575.1","GCF_000007845.1","GCF_000196695.1","GCF_000165505.1","GCF_000590925.1","GCF_000146165.2","GCF_000973705.1","GCF_000092645.1","GCF_000021745.1","GCF_000024425.1","GCF_001618885.1","GCF_001518835.1","GCF_000011365.1","GCF_000015185.1","GCF_000016065.1","GCF_000164865.1","GCF_000177235.2","GCF_000230735.2","GCF_001011115.1","GCF_000223905.1","GCF_000016425.1","GCF_000018265.1","GCF_000183745.1","GCF_000219045.1","GCF_000019785.1","GCF_000196395.1","GCF_000015785.1","GCF_000093085.1","GCF_000024685.1","GCF_000737595.1","GCF_000166055.1","GCF_000214375.1","GCF_001447335.1","GCF_000012985.1","GCF_000018685.1","GCF_000316605.1","GCF_000521655.1","GCF_000834215.1","GCF_000015265.1","GCF_000018045.1","GCF_000235585.1","GCF_000027085.1","GCF_001271345.1","GCF_000005825.2","GCF_000817975.1","GCF_000940995.1","GCF_000179915.2","GCF_000165925.1","GCF_001693385.1","GCF_000019725.1","GCF_000005845.2","GCF_000009685.1","GCF_000009405.1","GCF_001559115.1","GCF_000009345.1","GCF_000758565.1","GCF_001047675.1","GCF_000422085.1","GCF_000014705.1","GCF_000058485.1","GCF_000253295.1","GCF_000184705.1","GCF_000018085.1","GCF_000022085.1","GCF_000185245.1","GCF_001005905.1","GCF_000512185.1","GCF_000026225.1","GCF_000219875.1","GCF_000255135.1","GCF_000009045.1","GCF_000007725.1","GCF_000011385.1","GCF_000061505.1","GCF_000723465.1","GCF_000020225.1","GCF_000241385.1","GCF_000473245.1","GCF_000317575.1","GCF_000739435.1","GCF_000648515.1","GCF_001022155.1","GCF_000145275.1","GCF_000016325.1","GCF_000217715.1","GCF_000017645.1","GCF_000012625.1","GCF_000024985.1","GCF_000829965.1","GCF_000023705.1","GCF_000178955.2","GCF_001318345.1","GCF_000829195.1","GCF_000015845.1","GCF_000146565.1","GCF_000828515.1","GCF_000294775.2","GCF_000153405.2","GCF_000237085.1","GCF_000327065.1","GCF_001029105.3","GCF_000011725.1","GCF_000021685.1","GCF_000009605.1","GCF_000225445.1","GCF_000521525.1","GCF_000178975.2","GCF_000296215.2","GCF_001456065.2","GCF_000807415.2","GCF_000689415.1","GCF_000494755.1","GCF_000008265.1","GCF_000021045.1","GCF_000196455.1","GCF_000008785.1","GCF_000023865.1","GCF_000190435.1","GCF_000011745.1","GCF_000185985.2","GCF_000013345.1","GCF_000008345.1","GCF_000316175.1","GCF_000286275.1","GCF_000632395.1","GCF_000015645.1","GCF_000018065.1","GCF_000012805.1","GCF_000014285.1","GCF_000485905.1","GCF_000014825.1","GCF_000213255.1","GCF_000013185.1","GCF_000154745.2","GCF_000244875.1","GCF_000020285.1","GCF_000225465.1","GCF_000017025.1","GCF_000263195.1","GCF_000147715.2","GCF_000737575.1","GCF_000227665.2","GCF_000195515.1","GCF_000007365.1","GCF_000009365.1","GCF_000020145.1","GCF_000376545.2","GCF_000015725.1","GCF_000023065.1","GCF_000025905.1","GCF_000014065.1","GCF_000317495.1","GCF_000017665.1","GCF_000330845.1","GCF_000347595.1","GCF_000024365.1","GCF_000043285.1","GCF_000204155.1","GCF_000219705.1","GCF_000317065.1","GCF_000982715.1","GCF_001277195.1","GCF_001277255.1","GCF_000010165.1","GCF_001553895.1","GCF_000143985.1","GCF_000306785.1","GCF_000237145.1","GCF_000284295.1","GCF_000015665.1","GCF_000247605.1","GCF_000007925.1","GCF_001022135.1","GCF_001661075.1","GCF_000284375.1","GCF_001432245.1","GCF_000319575.2","GCF_001677275.1","GCF_000019525.1","GCF_001308265.1","GCF_001189295.1","GCF_001579905.1","GCF_000511385.1","GCF_000299355.1","GCF_000187705.1","GCF_000014165.1","GCF_000143085.1","GCF_000026145.1","GCF_000020165.1","GCF_000018285.1","GCF_001182765.1","GCF_000473995.1","GCF_000757785.1","GCF_000473305.1","GCF_000006805.1","GCF_000013785.1","GCF_000287335.1","GCF_000009825.1","GCF_000025325.1","GCF_000632475.1","GCF_000513475.1","GCF_000696485.1","GCF_000008005.1","GCF_000011465.1","GCF_000389965.1","GCF_001050115.1","GCF_000196675.1","GCF_000758545.1","GCF_000828475.1","GCF_000828815.1","GCF_000009285.1","GCF_000196015.1","GCF_001655615.1","GCF_000815025.1","GCF_000016985.1","GCF_000724505.1","GCF_000007565.2","GCF_000332735.1","GCF_000012405.1","GCF_000953015.1","GCF_000953435.1","GCF_000196835.1","GCF_000025565.1","GCF_000023605.1","GCF_000024645.1","GCF_000218915.1","GCF_000521605.1","GCF_000259175.1","GCF_000023965.1","GCF_000219175.1","GCF_000963495.1","GCF_001305595.1","GCF_000698865.1","GCF_001652505.1","GCF_000018105.1","GCF_001017655.1","GCF_000092365.1","GCF_000015165.1","GCF_000239975.1","GCF_001586255.1","GCF_000317085.1","GCF_001481725.1","GCF_000014565.1","GCF_000226295.1","GCF_000092425.1","GCF_000144645.1","GCF_000196815.1","GCF_000306765.2","GCF_001578185.1","GCF_000328685.1","GCF_000176035.2","GCF_000014905.1","GCF_000010525.1","GCF_000241875.1","GCF_001026985.1","GCF_000349765.1","GCF_000342265.1","GCF_000020585.3","GCF_000025085.1","GCF_000281695.1","GCF_000023265.1","GCF_000511355.1","GCF_000013885.1","GCF_000981505.1","GCF_000014125.1","GCF_000252445.1","GCF_000734975.2","GCF_000176835.2","GCF_000585995.1","GCF_000019125.1","GCF_000025685.1","GCF_001586155.1","GCF_001559255.1","GCF_000828895.1","GCF_000340435.2","GCF_000230895.2","GCF_000367205.1","GCF_000800395.1","GCF_000973505.1","GCF_001304715.1","GCF_000015965.1","GCF_000195315.1","GCF_000017885.4","GCF_000143145.1","GCF_001634365.1","GCF_000090965.1","GCF_000284015.1","GCF_000600005.1","GCF_000789395.1","GCF_000091325.1","GCF_001654495.1","GCF_000190535.1","GCF_000706685.1","GCF_000219215.1","GCF_000590495.2","GCF_000834395.1","GCF_000019045.1","GCF_000757825.1","GCF_001642655.1","GCF_000520015.2","GCF_001644665.1","GCF_000017865.1","GCF_001439585.2","GCF_000166415.1","GCF_001586165.1","GCF_000262165.1","GCF_000317835.1","GCF_000165835.1","GCF_001010805.1","GCF_000022565.1","GCF_000471925.1","GCF_000203875.1","GCF_000012845.1","GCF_001028645.1","GCF_000284515.1","GCF_000410575.1","GCF_000007645.1","GCF_000224675.1","GCF_000152245.2","GCF_001644565.1","GCF_000237305.1","GCF_000009205.1","GCF_000725385.1","GCF_000009885.1","GCF_000498975.2","GCF_000010305.1","GCF_000093025.1","GCF_000724485.1","GCF_000011145.1","GCF_000953635.1","GCF_000236065.1","GCF_000091305.1","GCF_001298525.1","GCF_000007765.1","GCF_000215745.1","GCF_000025965.1","GCF_000743945.1","GCF_000517405.1","GCF_000590455.1","GCF_000800825.1","GCF_000508205.1","GCF_000317875.1","GCF_000723505.1","GCF_000800295.1","GCF_000218895.1","GCF_000146065.2","GCF_001281505.1","GCF_000279165.1","GCF_000313175.2","GCF_000153165.2","GCF_000021365.1","GCF_000179635.2","GCF_000196895.1","GCF_000024085.1","GCF_000022205.1","GCF_000240325.1","GCF_000013945.1","GCF_000013745.1","GCF_000246855.1","GCF_000739375.1","GCF_001302585.1","GCF_000812665.2","GCF_000010805.1","GCF_000236685.1","GCF_001314995.1","GCF_001558475.1","GCF_000283655.1","GCF_000367425.1","GCF_001688665.1","GCF_000724775.3","GCF_000316685.1","GCF_000010005.1","GCF_000183135.1","GCF_000247715.1","GCF_001548015.1","GCF_000016345.1","GCF_000021325.1","GCF_001553955.1","GCF_000165465.1","GCF_000212735.1","GCF_000972245.3","GCF_001558415.1","GCF_000512915.1","GCF_000022525.1","GCF_000166135.1","GCF_000012445.1","GCF_000019945.1","GCF_000009305.1","GCF_000025805.1","GCF_000013565.1","GCF_000147335.1","GCF_000550805.1","GCF_000016185.1","GCF_001021045.1","GCF_000265365.1","GCF_000196275.1","GCF_000517625.1","GCF_000973545.1","GCF_000344805.1","GCF_000336425.1","GCF_000219535.2","GCF_001278845.1","GCF_000008485.1","GCF_001590615.1","GCF_000026125.1","GCF_000019845.1","GCF_000287215.2","GCF_000283575.1","GCF_000020685.1","GCF_000214355.1","GCF_000093145.3","GCF_000214175.1","GCF_001687665.2","GCF_000016905.1","GCF_000767275.2","GCF_000091785.1","GCF_000233435.1","GCF_000317555.1","GCF_000993785.2","GCF_000184345.1","GCF_000013905.1","GCF_000512355.1","GCF_001605965.1","GCF_001655245.1","GCF_000008765.1","GCF_000006765.1","GCF_000017205.1","GCF_000349845.1","GCF_000092265.1","GCF_001275365.1","GCF_000010725.1","GCF_000953695.1","GCF_000235405.2","GCF_001687805.1","GCF_001010785.1","GCF_001465545.3","GCF_000632805.1","GCF_000177615.2","GCF_000009125.1","GCF_000444875.1","GCF_001678905.1","GCF_000196875.1","GCF_000215325.1","GCF_001267175.1","GCF_001442815.1","GCF_000010105.1","GCF_000020045.1","GCF_001688625.1","GCF_000009745.1","GCF_000014145.1","GCF_000013025.1","GCF_001499655.1","GCF_000277715.1","GCF_000162235.2","GCF_900011245.1","GCF_000196095.1","GCF_000709555.1","GCF_001553935.1","GCF_001021385.1","GCF_000402035.1","GCF_000019445.1","GCF_000441555.1","GCF_000972765.1","GCF_000973625.1","GCF_000091465.1","GCF_000304215.1","GCF_000217635.1","GCF_001507665.1","GCF_001606025.1","GCF_001189495.1","GCF_000024105.1","GCF_000147075.1","GCF_000961095.1","GCF_000145035.1","GCF_001023575.1","GCF_000008385.1","GCF_000016645.1","GCF_000172995.2","GCF_000305785.2","GCF_000013865.1","GCF_000007685.1","GCF_000024785.1","GCF_000011945.1","GCF_001433955.1","GCF_000525635.1","GCF_001186335.1","GCF_000055785.1","GCF_001025195.1","GCF_000018005.1","GCF_000283475.1","GCF_001187505.1","GCF_000020205.1","GCF_000973105.1","GCF_000025265.1","GCF_000155675.2","GCF_000024285.1","GCF_000024065.1","GCF_000185885.1","GCF_000091725.1","GCF_000011805.1","GCF_000196495.1","GCF_000186385.1","GCF_000144625.1","GCF_001011155.1","GCF_000732945.1","GCF_000758665.1","GCF_001412575.1","GCF_000013085.1","GCF_000025205.1","GCF_000008565.1","GCF_000550765.1","GCF_000830985.1","GCF_000020605.1","GCF_000213235.1","GCF_000175935.2","GCF_000024825.1","GCF_000021025.1","GCF_000163055.2","GCF_000008025.1","GCF_000017545.1","GCF_000013645.1","GCF_000319225.1","GCF_000503895.1","GCF_000010205.1","GCF_000063545.1","GCF_000013365.1","GCF_000017705.1","GCF_001007995.1","GCF_000016205.1","GCF_000283535.1","GCF_000196355.1","GCF_000017605.1","GCF_000816845.1","GCF_000026105.1","GCF_000412265.2","GCF_000013165.1","GCF_001007935.1","GCF_001636015.1","GCF_000093165.1","GCF_000376585.1","GCF_000025185.1","GCF_000767465.1","GCF_001412535.1","GCF_001466725.1","GCF_000010425.1","GCF_000255355.1","GCF_001263395.1","GCF_000832305.1","GCF_001305675.1","GCF_001688965.1","GCF_000706765.1","GCF_000746525.1","GCF_001025215.1","GCF_000695235.1","GCF_000024445.1","GCF_001050475.1","GCF_000013985.1","GCF_000013705.1","GCF_000158275.2","GCF_000219725.1","GCF_000299095.1","GCF_000023905.1","GCF_000025305.1","GCF_000185905.1","GCF_000091125.1","GCF_000011245.1","GCF_000267545.1","GCF_000092925.1","GCF_000242635.2","GCF_000816085.1","GCF_000007625.1","GCF_000178115.2","GCF_000772105.1","GCF_000270205.1","GCF_000283555.1","GCF_000018845.1","GCF_000227705.2","GCF_000023745.1","GCF_000017265.1","GCF_000190575.1","GCF_001077715.1","GCF_000763535.1","GCF_000007785.1","GCF_000180175.2","GCF_000331995.1","GCF_000632985.1","GCF_000266885.1","GCF_001078055.1","GCF_000347695.1","GCF_000968195.1","GCF_000222485.1","GCF_000164965.1","GCF_001455085.1","GCF_000020665.1","GCF_000264455.2","GCF_000013125.1","GCF_000262715.1","GCF_001580455.1","GCF_000284155.1","GCF_000590475.1","GCF_000412695.1","GCF_000186225.1","GCF_000755705.1","GCF_000348805.1","GCF_000730385.1","GCF_000706725.1","GCF_000015545.1","GCF_000010125.1","GCF_000960975.1","GCF_000010185.1","GCF_000155735.2","GCF_000007025.1","GCF_000012565.1","GCF_000013145.1","GCF_000024505.1","GCF_000026005.1","GCF_000508225.1","GCF_000632845.1","GCF_000179015.2","GCF_000060285.1","GCF_000007525.1","GCF_000022605.2","GCF_001534645.1","GCF_000236405.1","GCF_000178835.2","GCF_000072485.1","GCF_000223885.1","GCF_000025625.1","GCF_000943805.1","GCF_000023405.1","GCF_001628715.1","GCF_000834255.1","GCF_000009185.1","GCF_000159155.2","GCF_000024665.1","GCF_001263175.1","GCF_000212335.1","GCF_000966445.2","GCF_000196475.1","GCF_000954135.1","GCF_000499665.2","GCF_000511305.1","GCF_000021425.1","GCF_001535545.1","GCF_000008605.1","GCF_000591055.1","GCF_000306885.1","GCF_001563285.1","GCF_000148935.1","GCF_000006745.1","GCF_000340905.1","GCF_000319245.1","GCF_000758265.1","GCF_001274595.1","GCF_000010585.1","GCF_000008185.1","GCF_000725285.1","GCF_000284115.1","GCF_001308105.1","GCF_001484065.1","GCF_000006965.1","GCF_000213865.1","GCF_001483385.1","GCF_001027285.1","GCF_001465275.1","GCF_000046685.1","GCF_000240075.2","GCF_000006845.1","GCF_000772045.1","GCF_000010145.1","GCF_000192845.1","GCF_000204565.1","GCF_000010085.1","GCF_000093065.1","GCF_000163895.2","GCF_001465255.1","GCF_000340865.1","GCF_001444365.1","GCF_001640865.1","GCF_000325745.1","GCF_000006645.1","GCF_001653935.1","GCF_000204295.1","GCF_000193395.1","GCF_000961515.1","GCF_000238215.1","GCF_000284275.1","GCF_000021285.1","GCF_000447675.1","GCF_000012825.1","GCF_001431725.1","GCF_000242595.2","GCF_000785495.1","GCF_000949425.1","GCF_000023125.1","GCF_000012385.1","GCF_000017145.1","GCF_000009925.1","GCF_000219105.1","GCF_000730425.1","GCF_000283615.1","GCF_001262055.1","GCF_000747525.1","GCF_000739085.1","GCF_000829315.1","GCF_000146185.1","GCF_001293045.1","GCF_000015365.1","GCF_000253035.1","GCF_000148685.1","GCF_000023025.1","GCF_000010265.1","GCF_000330865.1","GCF_000444995.1","GCF_001042635.1","GCF_000192745.1","GCF_001028705.1","GCF_000212695.1","GCF_001262015.1","GCF_001191005.1","GCF_000067205.1","GCF_000226565.1","GCF_000011025.1","GCF_000219355.1","GCF_001548235.1","GCF_000952975.1","GCF_001688725.1","GCF_001514355.1","GCF_000012345.1","GCF_000015305.1","GCF_000800455.1","GCF_000835205.1","GCF_000755145.1","GCF_001010285.1","GCF_000023765.2","GCF_000015285.1","GCF_001186155.3","GCF_000027145.1","GCF_000253315.1","GCF_000014745.1","GCF_000253275.1","GCF_000208385.1","GCF_000730245.1","GCF_000008045.1","GCF_000022785.1","GCF_000385945.1","GCF_001586215.1","GCF_000784965.1","GCF_000190735.1","GCF_000800255.1","GCF_000775995.1","GCF_000215705.1","GCF_001185205.1","GCF_000018665.1","GCF_000013045.1","GCF_000619905.2","GCF_001183865.1","GCF_000496595.1","GCF_001420915.1","GCF_000143225.1","GCF_001483945.1","GCF_000953735.1","GCF_000280925.3","GCF_000253015.1","GCF_000064305.2","GCF_000800475.2","GCF_001281405.1","GCF_000463015.1","GCF_000218545.1","GCF_000024225.1","GCF_001281485.1","GCF_000183665.1","GCF_001021085.1","GCF_000287355.1","GCF_000012685.1","GCF_001188855.1","GCF_001042675.1","GCF_000012145.1","GCF_001318295.1","GCF_000330885.1","GCF_000829415.1","GCF_001029265.1","GCF_000767055.1","GCF_001042695.1","GCF_001583415.1","GCF_000008985.1","GCF_000243115.2","GCF_000027225.1","GCF_000014245.1","GCF_000020425.1","GCF_000400935.1","GCF_001050435.1","GCF_000014345.1","GCF_000007585.1","GCF_000015445.1","GCF_000197735.1","GCF_000196295.1","GCF_000196615.1","GCF_000144405.1","GCF_000626635.1","GCF_000219585.1","GCF_000969645.2","GCF_001584185.1","GCF_000612685.1","GCF_000968175.1","GCF_000442645.1","GCF_000981525.1","GCF_000019745.1","GCF_001189535.1","GCF_000018205.1","GCF_000341355.1","GCF_001687565.2","GCF_000815225.1","GCF_000012725.1","GCF_000024125.1","GCF_001281465.1","GCF_000013665.1","GCF_000008285.1","GCF_000252975.1","GCF_000297075.2","GCF_001458475.1","GCF_000495935.2","GCF_001542815.1","GCF_000242935.2","GCF_000283275.1","GCF_000009845.1","GCF_000020565.1","GCF_000223215.1","GCF_001518815.1","GCF_000801315.1","GCF_000759475.1","GCF_001483865.1","GCF_000023585.1","GCF_000153485.2","GCF_000300295.3","GCF_000024465.1","GCF_000092845.1","GCF_000183155.1","GCF_000008805.1","GCF_000024005.1","GCF_000219915.2","GCF_000973085.1","GCF_000195085.1","GCF_000725405.1","GCF_000174395.2","GCF_000172155.1","GCF_000331735.1","GCF_000185745.1","GCF_000226625.1","GCF_000269925.1","GCF_000026185.1","GCF_000143845.1","GCF_000504125.1","GCF_000152825.2","GCF_000287295.1","GCF_000011225.1","GCF_000953355.1","GCF_000261025.1","GCF_000833575.1","GCF_000025225.2","GCF_000523235.1","GCF_000009005.1","GCF_001190965.1","GCF_000746585.1","GCF_000612055.1","GCF_000196435.1","GCF_000341345.1","GCF_000340795.1","GCF_001412595.1","GCF_000006865.1","GCF_000550785.1","GCF_000010545.1","GCF_000701165.1","GCF_001444445.1","GCF_000262325.2","GCF_000306805.1","GCF_000012265.1","GCF_001547895.1","GCF_000755725.1","GCF_000046705.1","GCF_000008205.1","GCF_000691605.1","GCF_000007125.1","GCF_000019925.1","GCF_000242255.2","GCF_000299115.1","GCF_001310085.1","GCF_000157355.2","GCF_000147815.2","GCF_000468615.2","GCF_001579805.1","GCF_000974425.1","GCF_001278095.1","GCF_000195555.1","GCF_000599545.1","GCF_000831005.1","GCF_001189515.2","GCF_000177195.2","GCF_000143725.1","GCF_000179035.2","GCF_000277795.1","GCF_000477415.1","GCF_000508245.1","GCF_001638925.1","GCF_000355675.1","GCF_000225345.1","GCF_001021975.1","GCF_001442755.1","GCF_000186985.1","GCF_000238995.1","GCF_001278035.1","GCF_000940805.1","GCF_000023105.1","GCF_000166275.1","GCF_001267395.1","GCF_000026065.1","GCF_001011035.1","GCF_001578105.1","GCF_000230995.2","GCF_000739105.1","GCF_000012225.1","GCF_000022645.2","GCF_000755985.1","GCF_001187785.1","GCF_001676765.1","GCF_000494915.1","GCF_001267885.1","GCF_000013625.1","GCF_000255295.1","GCF_000023185.1","GCF_000007325.1","GCF_000009425.1","GCF_000348785.1","GCF_000521505.1","GCF_000981765.1","GCF_000022905.1","GCF_001050135.1","GCF_001499615.1","GCF_000023725.1","GCF_000271405.2","GCF_000017405.1","GCF_000024345.1","GCF_001028665.1","GCF_000739455.1","GCF_000955665.1","GCF_000348725.1","GCF_000525675.1","GCF_000023045.1","GCF_000341385.1","GCF_000385525.1","GCF_000148625.1","GCF_000024025.1","GCF_000311765.1","GCF_000967895.1","GCF_000016765.1","GCF_000007705.1","GCF_001412655.1","GCF_000025345.1","GCF_000818035.1","GCF_000756775.1","GCF_000319385.1","GCF_000510265.1","GCF_000176935.3","GCF_000007245.1","GCF_000026205.1","GCF_000212375.1","GCF_000023245.1","GCF_000024805.1","GCF_000455605.1","GCF_000597885.1","GCF_000027205.1","GCF_000807225.1","GCF_000262205.1","GCF_000022725.1","GCF_001547995.1","GCF_001442535.1","GCF_000230275.1","GCF_000166395.1","GCF_001639105.1","GCF_000069925.1","GCF_000085865.1","GCF_000828855.1","GCF_001547975.1","GCF_001557535.1","GCF_001482365.1","GCF_000348745.1","GCF_000147835.2","GCF_000069945.1","GCF_001652485.1","GCF_000011065.1","GCF_000009625.1","GCF_000941055.1","GCF_000019145.1","GCF_001477625.1","GCF_001274535.1","GCF_000016565.1","GCF_000020125.1","GCF_000835165.1","GCF_000007605.1","GCF_000236925.1","GCF_000010825.1","GCF_000784875.1","GCF_000022105.1","GCF_000698845.1","GCF_000325705.1","GCF_000024565.1","GCF_000025405.2","GCF_001650215.1","GCF_001314305.1","GCF_001294425.1","GCF_000010285.1","GCF_001660045.1","GCF_000009945.1","GCF_000204135.1","GCF_900078695.1","GCF_000242335.1","GCF_001307295.1","GCF_900086555.1","GCF_000980835.1","GCF_000953195.1","GCF_000008725.1","GCF_000230695.2","GCF_000931465.1","GCF_000185965.1","GCF_000827005.1","GCF_000025925.1","GCF_000006725.1","GCF_000009765.2","GCF_001281115.1","GCF_000328725.1","GCF_000092865.1","GCF_000801275.2","GCF_000019225.1","GCF_000317895.1","GCF_000968055.1","GCF_001465835.2","GCF_000006685.1","GCF_000191925.1","GCF_001078275.1","GCF_001611795.1","GCF_000224985.1","GCF_000359525.1","GCF_001611855.1","GCF_000270245.1","GCF_000304455.1","GCF_000941075.1","GCF_000007205.1","GCF_000026025.1","GCF_000471025.2","GCF_000583875.1","GCF_001455205.1","GCF_000189415.1","GCF_000013765.1","GCF_000328565.1","GCF_000816025.1","GCF_001077815.2","GCF_000265505.1","GCF_000967425.1","GCF_000302535.1","GCF_000830005.1","GCF_000952035.1","GCF_000931445.1","GCF_000953535.1","GCF_000283975.1","GCF_000785555.1","GCF_001411495.1","GCF_000186265.1","GCF_000400955.1","GCF_001017435.1","GCF_000317975.2","GCF_000452705.1","GCF_000973725.1","GCF_001605725.1","GCF_000176855.2","GCF_000759535.1","GCF_000008365.1","GCF_000829055.1","GCF_000027265.1","GCF_001610975.1","GCF_000183365.1","GCF_000007105.1","GCF_000027345.1","GCF_001606005.1","GCF_001280305.1","GCF_000217675.1","GCF_000011685.1","GCF_000442435.1","GCF_000023165.1","GCF_001611035.1","GCF_000008585.1","GCF_000250675.2","GCF_000328705.1","GCF_000166295.1","GCF_000027325.1","GCF_000265405.1","GCF_000565215.1","GCF_000500935.1","GCF_000194745.1","GCF_001278715.1","GCF_000011445.1","GCF_000152945.2","GCF_000988565.1","GCF_000517365.1","GCF_000008885.1","GCF_000786695.1","GCF_000576555.1","GCF_000092385.1","GCF_000972865.1","GCF_000299335.2","GCF_000507245.1","GCF_000020065.1","GCF_000253255.1","GCF_000439435.1","GCF_000009485.1","GCF_000014085.1","GCF_000439455.1","GCF_001281045.1","GCF_000012945.1","GCF_000829375.1","GCF_000724625.1","GCF_000761155.1","GCF_001693675.1","GCF_000012085.1","GCF_000956315.1","GCF_000299995.1","GCF_000008685.2","GCF_000222835.1","GCF_000445425.4","GCF_001597285.1","GCF_000164695.2","GCF_001484935.1","GCF_001274875.1","GCF_000012765.1","GCF_000025365.1","GCF_000069185.1","GCF_000416365.2","GCF_000025845.1","GCF_000007805.1","GCF_000012205.1","GCF_000300135.1","GCF_000019685.1","GCF_000222305.1","GCF_001310225.1","GCF_000008245.1","GCF_000219805.1","GCF_000292915.1","GCF_000015325.1","GCF_000723165.1","GCF_000265465.1","GCF_000183425.1","GCF_000875755.1","GCF_001314945.1","GCF_000988065.1","GCF_001190945.1","GCF_000803645.1","GCF_001587175.1","GCF_001664485.1","GCF_000196215.1","GCF_000070465.1","GCF_000731295.1","GCF_000213655.1","GCF_000011825.1","GCF_000006625.1","GCF_000021265.1","GCF_000196855.1","GCF_000441535.1","GCF_000742835.1","GCF_000008305.1","GCF_000310105.2","GCF_000023285.1","GCF_000170955.2","GCF_000815065.1","GCF_000006905.1","GCF_000737515.1","GCF_001641285.1","GCF_001456115.1","GCF_000015385.1","GCF_000565175.1","GCF_000007485.1","GCF_000012245.1","GCF_000517305.1","GCF_001647715.1","GCF_000012325.1","GCF_000013325.1","GCF_001294605.1","GCF_000175095.2","GCF_000017305.1","GCF_001534745.1","GCF_001406115.1","GCF_000016365.1","GCF_000524555.1","GCF_000010605.1","GCF_000261345.2","GCF_000018545.1","GCF_000336465.1","GCF_000341465.2","GCF_000011045.1","GCF_000014525.1","GCF_000176115.2","GCF_001652565.1","GCF_000063605.1","GCF_000183385.1","GCF_001648175.1","GCF_000182745.2","GCF_000270085.1","GCF_000737325.1","GCF_000190555.1","GCF_001442785.1","GCF_000165485.1","GCF_000512205.2","GCF_000018445.1","GCF_000013005.1","GCF_001620005.1","GCF_000220625.1","GCF_000214785.1","GCF_000024965.1","GCF_000347675.2","GCF_000218875.1","GCF_001687585.2","GCF_000577275.1","GCF_000224105.1","GCF_000012365.1","GCF_001430865.1","GCF_000755185.1","GCF_000788395.1","GCF_000695835.1","GCF_000198775.1","GCF_000184745.1","GCF_000009165.1","GCF_000959505.1","GCF_000008465.1","GCF_000143885.2","GCF_001294575.1","GCF_000959245.1","GCF_001433715.1","GCF_000756715.1","GCF_000284035.1","GCF_000014505.1","GCF_000980815.1","GCF_000191145.1","GCF_000954115.1","GCF_000196235.1","GCF_001020985.1","GCF_000015565.1","GCF_000237205.1","GCF_000269985.1","GCF_000145705.1","GCF_000175215.2","GCF_000577895.1","GCF_000300235.2","GCF_000236705.1","GCF_000011545.1","GCF_001021025.1","GCF_000023785.1","GCF_000017005.1","GCF_000046845.1","GCF_000027165.1","GCF_001402915.1","GCF_000023345.1","GCF_001274895.1","GCF_001484705.1","GCF_000347635.1","GCF_000818095.1","GCF_000270165.1","GCF_000967915.1","GCF_000226315.1","GCF_000014385.1","GCF_001430825.1","GCF_000026405.1","GCF_000225325.1","GCF_000027185.1","GCF_000009225.2","GCF_000963865.1","GCF_000247565.1","GCF_000230955.2","GCF_000209655.1","GCF_000092885.1","GCF_001277995.1","GCF_000635915.2","GCF_001482385.1","GCF_000194605.1","GCF_000020765.1","GCF_000191545.1","GCF_000018185.1","GCF_000184065.1","GCF_000006885.1","GCF_000014425.1","GCF_000248095.2","GCF_001308145.2","GCF_000164885.1","GCF_001663835.1","GCF_001444405.1","GCF_001518795.1","GCF_000190595.1","GCF_000953655.1","GCF_001294645.1","GCF_000023825.1","GCF_000087965.2","GCF_000011305.1","GCF_000764535.1","GCF_001598035.1","GCF_000009805.1","GCF_000213805.1","GCF_000092225.1","GCF_000479315.1","GCF_000221045.1","GCF_001042405.1","GCF_000008925.1","GCF_000250635.1","GCF_001442805.1","GCF_000008065.1","GCF_001456155.1","GCF_001278075.1","GCF_000092285.1","GCF_000007145.1","GCF_000230555.1","GCF_000007465.2","GCF_000241055.1","GCF_000246835.1","GCF_000014765.1","GCF_000192865.1","GCF_000014225.1","GCF_000015345.1","GCF_000463465.1","GCF_000307165.1","GCF_000164675.2","GCF_000761135.1","GCF_000522545.2","GCF_000283515.1","GCF_001294625.1","GCF_000953135.1","GCF_001553685.1","GCF_000697965.2","GCF_001553915.1","GCF_000152925.2","GCF_000332115.1","GCF_000014445.1","GCF_000092505.1","GCF_000224085.1","GCF_000517605.1","GCF_000237995.1","GCF_001562215.1","GCF_001262075.1","GCF_001008165.2","GCF_000761215.1","GCF_000972745.1","GCF_000193595.2","GCF_000017285.1","GCF_001310255.1","GCF_000014405.1","GCF_001664085.1","GCF_001021935.1","GCF_000463505.1","GCF_001267925.1","GCF_000271325.1","GCF_000785535.1","GCF_000732905.1","GCF_000403645.1","GCF_000724605.1","GCF_000018785.1","GCF_000210915.2","GCF_000010225.1","GCF_000010705.1","GCF_000192635.1","GCF_000499645.1","GCF_000212355.1","GCF_000815185.1","GCF_000092025.1","GCF_000196315.1","GCF_000828715.1","GCF_000014205.1","GCF_000009145.1","GCF_001444425.1","GCF_000317305.3","GCF_000009545.1","GCF_000214215.1","GCF_000006785.2","GCF_001543105.1","GCF_000016285.1","GCF_000253155.1","GCF_000023925.1","GCF_000011985.1","GCF_000016265.1","GCF_000284415.1","GCF_000172635.2","GCF_000385925.1","GCF_000007385.1","GCF_000189535.1","GCF_000007165.1","GCF_000187935.1","GCF_000144605.1","GCF_000007265.1","GCF_001414055.1","GCF_000020265.1","GCF_000520875.1","GCF_000747315.1","GCF_000463395.1","GCF_001275345.1","GCF_000026085.1","GCF_000211375.1","GCF_000400635.2","GCF_000021345.1","GCF_000215105.1","GCF_001280205.1","GCF_000831645.3","GCF_000265385.1","GCF_000211855.2","GCF_001302565.1","GCF_000143705.1","GCF_000023465.1","GCF_000019905.1","GCF_000299435.1","GCF_000496635.1","GCF_000699505.1","GCF_000233915.3","GCF_000755585.2","GCF_000024925.1","GCF_000060345.1","GCF_001543265.1","GCF_000193205.1","GCF_001543175.1","GCF_001028625.1","GCF_000014465.1","GCF_001266755.1","GCF_000092785.1","GCF_000215645.1","GCF_000092825.1","GCF_000202635.1","GCF_000014925.1","GCF_001542565.1","GCF_001304795.1","GCF_000831485.1","GCF_000344785.1","GCF_001281315.1","GCF_001652465.1","GCF_001483965.1","GCF_000007665.1","GCF_000017565.1","GCF_000418365.1","GCF_000950575.1","GCF_000026685.1","GCF_001543285.1","GCF_000179395.2","GCF_000023145.1","GCF_000875675.1","GCF_000829395.1","GCF_001314225.1","GCF_000525655.1","GCF_000022025.1","GCF_000195575.1","GCF_000725365.1","GCF_000470775.1","GCF_000006605.1","GCF_001484605.1","GCF_000018885.1","GCF_000590555.1","GCF_000819445.1","GCF_000355695.1","GCF_000958465.1","GCF_000069225.1","GCF_001558975.1","GCF_000177535.2","GCF_001647635.1","GCF_000626675.1","GCF_000063485.1","GCF_000023205.1"],["Ammonifex degensii KC4","Archaeoglobus profundus DSM 5631","Candidatus Desulforudis audaxviator MP104C","Pelodictyon phaeoclathratiforme BU-1","Chlorobium phaeobacteroides BS1","Chlorobium chlorochromatii CaD3","Thiobacillus denitrificans ATCC 25259","Desulfohalobium retbaense DSM 5692","Desulfovibrio alaskensis G20","Desulfovibrio vulgaris DP4","Chlorobium tepidum TLS","endosymbiont of unidentified scaly snail isolate Monju","Desulfovibrio vulgaris str. 'Miyazaki F'","Desulfovibrio desulfuricans subsp. desulfuricans str. ATCC 27774","Desulfovibrio fairfieldensis","Desulfobacca acetoxidans DSM 11109","Desulfovibrio salexigens DSM 2638","Archaeoglobus veneficus SNP6","Thermodesulfatator indicus DSM 15286","Thioalkalivibrio nitratireducens DSM 14787","Thermodesulfovibrio yellowstonii DSM 11347","Thermodesulfobacterium geofontis OPF15","Desulfotomaculum nigrificans CO-1-SRB","Allochromatium vinosum DSM 180","Sulfuricella denitrificans skB26","Thiocystis violascens DSM 198","Desulfurivibrio alkaliphilus AHT 2","Desulfobacula toluolica Tol2","Thermodesulfobacterium commune DSM 2178","Desulfomicrobium baculatum DSM 4028","Desulfovibrio africanus str. Walvis Bay","Syntrophobacter fumaroxidans MPOB","Thioploca ingrica","Desulfovibrio magneticus RS-1","Thioalkalivibrio paradoxus ARh 1","Archaeoglobus fulgidus DSM 4304","Desulfocapsa sulfexigens DSM 10523","Desulfotomaculum ruminis DSM 2154","Hydrogenobacter thermophilus TK-6","Desulfotalea psychrophila LSv54","Vulcanisaeta distributa DSM 14429","Sedimenticola thiotaurini","Thioalkalivibrio sulfidiphilus HL-EbGr7","Thermodesulfobium narugense DSM 14796","Desulfovibrio aespoeensis Aspo-2","Candidatus Thioglobus autotrophicus","Thermoproteus tenax Kra 1","Thioflavicoccus mobilis 8321","Persephonella marina EX-H1","Desulfotomaculum acetoxidans DSM 771","Desulfarculus baarsii DSM 2075","Magnetospira sp. QH-2","Archaeoglobus sulfaticallidus PM70-1","Desulfotomaculum gibsoniae DSM 7213","Desulfovibrio desulfuricans ND132","Desulfobulbus propionicus DSM 2032","Hydrogenobaculum sp. Y04AAS1","Desulfobacterium autotrophicum HRM2","Desulfatibacillum alkenivorans AK-01","Hyperthermus butylicus DSM 5456","Chlorobium limicola DSM 245","Desulfosporosinus orientis DSM 765","Desulfosporosinus meridiei DSM 13257","Thermincola potens JR","Chlorobium phaeobacteroides DSM 266","Candidatus Vesicomyosocius okutanii HA","Desulfosporosinus acidiphilus SJ4","Carboxydothermus hydrogenoformans Z-2901","Candidatus Ruthia magnifica str. Cm (Calyptogena magnifica)","Pyrolobus fumarii 1A","Methanocaldococcus vulcanius M7","Desulfurobacterium thermolithotrophum DSM 11699","Desulfotomaculum reducens MI-1","Thermoproteus uzoniensis 768-20","Palaeococcus pacificus DY20341","Ferroglobus placidus DSM 10642","Nitratiruptor sp. SB155-2","Thiolapillus brandeum","Moorella thermoacetica ATCC 39073","Sulfuritalea hydrogenivorans sk43H","Sideroxydans lithotrophicus ES-1","Prosthecochloris aestuarii DSM 271","Thermococcus onnurineus NA1","Ignicoccus hospitalis KIN4/I","Chlorobaculum parvum NCIB 8327","Thermococcus cleftensis","Pyrococcus yayanosii CH1","Desulfomonile tiedjei DSM 6799","Thermococcus sp. 4557","Sulfuricurvum kujiense DSM 16994","Aciduliprofundum boonei T469","Pyrobaculum islandicum DSM 4184","Thermococcus peptonophilus","Chlorobium phaeovibrioides DSM 265","Geoglobus acetivorans","Methanocaldococcus infernus ME","Thermocrinis albus DSM 14484","Pyrococcus furiosus DSM 3638","Desulfococcus oleovorans Hxd3","Sulfurimonas denitrificans DSM 1251","Methanocaldococcus bathoardescens","Geoglobus ahangari","Sulfurihydrogenibium azorense Az-Fu1","Pyrodictium delaneyi","Thermovibrio ammonificans HB-1","Thermococcus paralvinellae","Chlorobium luteolum DSM 273","Thermococcus barophilus MP","Acidithiobacillus ferrooxidans ATCC 53993","Sulfurimonas autotrophica DSM 16294","Methanocella arvoryzae MRE50","Aquifex aeolicus VF5","Pyrococcus sp. ST04","Vulcanisaeta moutnovskia 768-28","Pyrococcus sp. NA2","Sulfurovum sp. NBC37-1","Acidithiobacillus ferrivorans SS3","Nitratifractor salsuginis DSM 16511","Thioalkalivibrio sp. K90mix","Methanocella conradii HZ254","Sulfurospirillum deleyianum DSM 6946","Thermofilum sp. 1807-2","Methanocaldococcus sp. FS406-22","Thermofilum pendens Hrk 5","Staphylothermus marinus F1","Methanosaeta harundinacea 6Ac","Sulfurihydrogenibium sp. YO3AOP1","Thermocrinis ruber","Sulfurimonas gotlandica GD1","Staphylothermus hellenicus DSM 12710","Chloroherpeton thalassium ATCC 35110","Magnetococcus marinus MC-1","Metallosphaera sedula DSM 5348","Nautilia profundicola AmH","Sulfurospirillum barnesii SES-3","Thermofilum sp. 1910b","Sulfurospirillum multivorans DSM 12446","Campylobacter concisus","Coriobacteriaceae bacterium 68-1-3","Acidithiobacillus caldus ATCC 51756","Geobacter lovleyi SZ","Methanosalsum zhilinae DSM 4017","Methanothermococcus okinawensis IH1","Magnetospirillum gryphiswaldense MSR-1 v2","Anaeromyxobacter sp. Fw109-5","Methanosarcina vacuolata Z-761","Methanobacterium sp. MB1","Petrotoga mobilis SJ95","Arcobacter nitrofigilis DSM 7299","Methanococcus aeolicus Nankai-3","Anaeromyxobacter sp. K","Campylobacter concisus 13826","Chloroflexus aggregans DSM 9485","Methanotorris igneus Kol 5","Methanosarcina barkeri 3","Methanothermobacter marburgensis str. Marburg","Methanothermobacter sp. CaT2","Sulfurospirillum cavolei","Campylobacter curvus 525.92","Thermococcus litoralis DSM 5473","Chloroflexus aurantiacus J-10-fl","Methanosarcina sp. WWM596","Caldilinea aerophila DSM 14535 = NBRC 104270","Methanococcus voltae A3","Methanococcus vannielii SB","Magnetospirillum magneticum AMB-1","Syntrophus aciditrophicus SB","Thermacetogenium phaeum DSM 12270","Methanothermobacter thermautotrophicus str. Delta H","Campylobacter ureolyticus RIGS 9880","Aciduliprofundum sp. MAR08-339","Methanobrevibacter millerae","Thermococcus guaymasensis DSM 11113","Methanocaldococcus jannaschii DSM 2661","Methanohalobium evestigatum Z-7303","Thermococcus sp. 2319x1","Pyrococcus horikoshii OT3","Methanococcus maripaludis C5","Caldivirga maquilingensis IC-167","Thermococcus eurythermalis","Methanothermus fervidus DSM 2088","Methanosarcina barkeri MS","Methanosarcina lacustris Z-7289","Eggerthella lenta DSM 2243","Methanococcus maripaludis S2","Methanocaldococcus fervens AG86","Methanosarcina mazei Go1","Dehalococcoides mccartyi CBDB1","Thermococcus kodakarensis KOD1","Campylobacter volucris LMG 24379","Thermococcus nautili","Dehalococcoides mccartyi 195","Campylobacter iguaniorum","Methanosarcina barkeri str. Fusaro","Calditerrivibrio nitroreducens DSM 19672","Methanobacterium lacus","Geobacter sp. M18","Thermococcus sibiricus MM 739","Desulfurella acetivorans A63","Methanohalophilus mahii DSM 5219","Methanoregula formicica SMSP","Thioalkalivibrio versutus","Methanosarcina acetivorans C2A","Dehalococcoides mccartyi VS","Ectothiorhodospira sp. BSL-9","Methanolinea tarda NOBI-1","Acetomicrobium mobile DSM 13181","Methanosarcina sp. MTP4","Campylobacter hyointestinalis subsp. lawsonii","Thermococcus sp. AM4","Halothermothrix orenii H 168","Geobacter sulfurreducens PCA","Geobacter sp. M21","Methanolobus psychrophilus R15","Methanosarcina horonobensis HB-1 = JCM 15518","Campylobacter coli CVM N29710","Anaeromyxobacter dehalogenans 2CP-C","Methanobrevibacter sp. AbM4","Thermus oshimai JL-2","Adlercreutzia equolifaciens DSM 19450","Roseiflexus sp. RS-1","Roseiflexus castenholzii DSM 13941","Rhodothermus marinus DSM 4252","Methanosarcina thermophila TM-1","Heliobacterium modesticaldum Ice1","Campylobacter gracilis","Halobacteroides halobius DSM 5150","Caldisphaera lagunensis DSM 15908","Methanobrevibacter ruminantium M1","Methanobacterium paludis","Geobacter daltonii FRC-32","Syntrophothermus lipocalidus DSM 12680","Methanobacterium formicicum","Thermus aquaticus Y51MC23","Methanobrevibacter smithii ATCC 35061","Methanoculleus marisnigri JR1","Campylobacter subantarcticus LMG 24374","Candidatus Filomicrobium marinum","Sulfolobus acidocaldarius DSM 639","Thermus scotoductus SA-01","Thermoanaerobacter kivui","Methanospirillum hungatei JF-1","Denitrovibrio acetiphilus DSM 12809","Methanosarcina siciliae T4/M","Geobacter bemidjiensis Bem","Sulfurovum lithotrophicum","Candidatus Korarchaeum cryptofilum OPF8","Geobacter pickeringii","Marichromatium purpuratum 984","Sulfolobus tokodaii str. 7","Methanoregula boonei 6A8","Geobacter uraniireducens Rf4","Alkalilimnicola ehrlichii MLHE-1","Methanosphaerula palustris E1-9c","Sulfolobus solfataricus P2","Acidilobus saccharovorans 345-15","Thermococcus gammatolerans EJ3","Marinithermus hydrothermalis DSM 14884","Desulfitobacterium dichloroeliminans LMG P-21439","Slackia heliotrinireducens DSM 20476","Methanosphaera stadtmanae DSM 3091","Syntrophobotulus glycolicus DSM 8271","Methanosaeta concilii GP6","Campylobacter hyointestinalis subsp. hyointestinalis LMG 9260","Methylacidiphilum infernorum V4","Cryptobacterium curtum DSM 15641","Edwardsiella tarda EIB202","Geoalkalibacter subterraneus","Eggerthella sp. YY7918","Pelobacter propionicus DSM 2379","Sulfolobus islandicus L.S.2.15","Methylacidiphilum fumariolicum SolV","Candidatus Methanomassiliicoccus intestinalis Issoire-Mx1","Sorangium cellulosum So ce56","Meiothermus silvanus DSM 9946","Anaerolinea thermophila UNI-1","Deferribacter desulfuricans SSM1","Thermus sp. CCB_US3_UF1","Methanococcus maripaludis C7","Methanococcus maripaludis C6","Thermogladius cellulolyticus 1633","Marinovum algicola DG 898","Hippea maritima DSM 10411","Candidatus Atelocyanobacterium thalassa isolate ALOHA","Acetohalobium arabaticum DSM 5501","Dehalobacter restrictus DSM 9455","Burkholderiales bacterium GJ-E10","Methylomonas denitrificans","Flexistipes sinusarabici DSM 4947","Campylobacter peloridis LMG 23910","Caldicellulosiruptor owensensis OL","Synechocystis sp. PCC 6803","Campylobacter jejuni subsp. jejuni NCTC 11168 = ATCC 700819","Desulfitobacterium hafniense Y51","Methanoculleus bourgensis MS2","Thermoplasma volcanium GSS1","Caldicellulosiruptor obsidiansis OB47","Peptoclostridium acidaminophilum DSM 3953","Halorhodospira halophila SL1","Planctopirus limnophila DSM 3776","Mobiluncus curtisii ATCC 43063","Edwardsiella tarda","Rhodovulum sulfidophilum","Geobacillus sp. Y4.1MC1","Campylobacter insulaenigrae NCTC 12927","Kyrpidia tusciae DSM 2912","cyanobacterium endosymbiont of Epithemia turgida isolate EtSB Lake Yunoko","Dehalobacter sp. DCA","Caldicellulosiruptor bescii DSM 6725","Caldicellulosiruptor kristjanssonii I77R1B","Thermus thermophilus HB27","Desulfurococcus kamchatkensis 1221n","Selenomonas sp. oral taxon 478","Desulfurispirillum indicum S5","Desulfurococcus mucosus DSM 2162","Selenomonas sputigena ATCC 35185","Leptospirillum ferriphilum ML-04","Symbiobacterium thermophilum IAM 14863","Campylobacter lari RM2100","Campylobacter lari subsp. concheus LMG 11760","Campylobacter sp. RM16704","Ferroplasma acidarmanus fer1","Campylobacter fetus subsp. fetus 82-40","Methanomethylovorans hollandica DSM 15978","Halothece sp. PCC 7418","Geobacter metallireducens GS-15","Calothrix sp. PCC 6303","Aggregatibacter actinomycetemcomitans ANH9381","Isosphaera pallida ATCC 43644","Campylobacter fetus subsp. testudinum 03-427","Halorhabdus utahensis DSM 12940","Methanolacinia petrolearia DSM 11571","Candidatus Methanomethylophilus alvus Mx1201","Methylomonas sp. DH-1","Paenibacillus sabinae T27","Rhodobacter sphaeroides ATCC 17025","Coprothermobacter proteolyticus DSM 5265","Selenomonas ruminantium subsp. lactilytica TAM6421","Leptospirillum ferrooxidans C2-3","Synechocystis sp. PCC 6714","Paenibacillus durus","Defluviitoga tunisiensis","Dehalogenimonas lykanthroporepellens BL-DC-9","Halothiobacillus neapolitanus c2","Methylococcus capsulatus str. Bath","Anabaena sp. 90","Methanococcoides burtonii DSM 6242","Desulfitobacterium dehalogenans ATCC 51507","Desulfuromonas soudanensis","Singulisphaera acidiphila DSM 18658","Pelobacter carbinolicus DSM 2380","Arcobacter butzleri RM4018","Methanocorpusculum labreanum Z","Caldicellulosiruptor hydrothermalis 108","Salmonella enterica subsp. arizonae serovar 62:z4,z23:-","Rubrobacter radiotolerans","Methanococcoides methylutens MM1","Mycobacterium marinum M","Campylobacter lari NCTC 11845","gamma proteobacterium HdN1","Haemophilus parainfluenzae T3T1","Dictyoglomus turgidum DSM 6724","Aggregatibacter aphrophilus NJ8700","Thermovirga lienii DSM 17291","Sorangium cellulosum So0157-2","Desulfitobacterium metallireducens DSM 15288","Thermosphaera aggregans DSM 11486","Synechococcus sp. PCC 7003","Thermoplasmatales archaeon BRNA1","Salmonella bongori NCTC 12419","Kosmotoga olearia TBF 19.5.1","Candidatus Methanoplasma termitum","Pelosinus fermentans JBW45","[Clostridium] cellulosi","Nitrosococcus halophilus Nc 4","Aeromonas veronii B565","Streptosporangium roseum DSM 43021","Synechococcus sp. JA-3-3Ab","Saccharopolyspora erythraea NRRL 2338","Helicobacter felis ATCC 49179","Candidatus Thioglobus singularis PS1","Anoxybacillus gonensis","Salmonella enterica subsp. enterica serovar Typhimurium str. LT2","Candidatus Koribacter versatilis Ellin345","Campylobacter hominis ATCC BAA-381","Actinobacillus succinogenes 130Z","Caldicellulosiruptor saccharolyticus DSM 8903","Methylocystis sp. SC2","Actinobacillus pleuropneumoniae serovar 5b str. L20","bacterium L21-Spi-D4","Paenibacillus durus ATCC 35681","Oscillatoria nigro-viridis PCC 7112","Dechloromonas aromatica RCB","Dictyoglomus thermophilum H-6-12","Veillonella parvula DSM 2008","Candidatus Accumulibacter phosphatis clade IIA str. UW-1","Acidianus hospitalis W1","Paenibacillus sp. FSL R7-0331","Clostridium ljungdahlii DSM 13528","Rhodobacter capsulatus SB 1003","Haemophilus ducreyi 35000HP","Nocardiopsis alba ATCC BAA-2165","Cyanobacterium aponinum PCC 10605","Cyanothece sp. PCC 7425","Cyanothece sp. PCC 7424","Paracoccus denitrificans PD1222","Metallosphaera cuprina Ar-4","Pleurocapsa sp. PCC 7327","Helicobacter hepaticus ATCC 51449","Azoarcus sp. KH32C","Paenibacillus stellifer","Shimwellia blattae DSM 4481 = NBRC 105725","Kosmotoga pacifica","Paenibacillus larvae subsp. larvae DSM 25430","Candidatus Nitrospira inopinata","Blautia sp. YL58","Thermotoga caldifontis AZM44c09","Paenibacillus odorifer","Pelosinus sp. UFO1","Synechococcus sp. JA-2-3B'a(2-13)","Geitlerinema sp. PCC 7407","Aeromonas hydrophila subsp. hydrophila ATCC 7966","Gilliamella apicola","Rubrobacter xylanophilus DSM 9941","Clostridium aceticum","Stackebrandtia nassauensis DSM 44728","Synechococcus sp. PCC 7002","Methylomonas methanica MC09","Calothrix sp. 336/3","Edwardsiella ictaluri 93-146","Thermoanaerobacter italicus Ab9","Natronobacterium gregoryi SP2","Synechococcus elongatus PCC 6301","Alcaligenes faecalis","Shewanella halifaxensis HAW-EB4","Thauera sp. MZ1T","Trichodesmium erythraeum IMS101","Frischella perrara","Methylobacterium sp. 4-46","Paenibacillus polymyxa E681","Helicobacter cetorum MIT 99-5656","Morganella morganii subsp. morganii KT","Helicobacter cetorum MIT 00-7128","Gallionella capsiferriformans ES-2","Cyanothece sp. PCC 8801","Rhodobacter sphaeroides ATCC 17029","Natranaerobius thermophilus JW/NM-WN-LF","Roseobacter denitrificans OCh 114","Azoarcus sp. CIB","Pseudothermotoga hypogea DSM 11164 = NBRC 106472","Dechlorosoma suillum PS","Caldisericum exile AZM16c01","Cycloclasticus sp. P1","Rivularia sp. PCC 7116","Pseudomonas balearica DSM 6083","Nostoc sp. PCC 7120","Clostridium beijerinckii NCIMB 8052","Clostridium saccharoperbutylacetonicum N1-4(HMT)","Helicobacter typhlonius","Rubrivivax gelatinosus IL144","Aminobacterium colombiense DSM 12261","Fischerella sp. NIES-3754","Lawsonia intracellularis PHE/MN1-00","Oceanimonas sp. GK1","Nocardiopsis dassonvillei subsp. dassonvillei DSM 43111","Mannheimia succiniciproducens MBEL55E","Thermoanaerobacterium xylanolyticum LX-11","Clostridium scatologenes","Thermanaerovibrio acidaminovorans DSM 6589","Intrasporangium calvum DSM 43043","Candidatus Nitrosopumilus sp. AR2","Comamonadaceae bacterium B1","Hyphomicrobium denitrificans 1NES1","Proteus mirabilis HI4320","Clostridium sp. SY8519","Thermoanaerobacter wiegelii Rt8.B1","Syntrophomonas wolfei subsp. wolfei str. Goettingen G311","Thermobaculum terrenum ATCC BAA-798","Acidothermus cellulolyticus 11B","Cyanothece sp. ATCC 51142","Clostridium pasteurianum BC1","Candidatus Nitrosotenuis cloacae","Nostoc sp. PCC 7107","Mycobacterium kansasii ATCC 12478","Haemophilus influenzae 86-028NP","Psychrobacter arcticus 273-4","Nostoc sp. PCC 7524","Candidatus Baumannia cicadellinicola","Clostridium pasteurianum DSM 525 = ATCC 6013","Anabaena cylindrica PCC 7122","Helicobacter mustelae 12198","Bacillus sp. 1NLA3E","Bacillus sp. X1(2014)","Anabaena sp. wa102","Clostridium carboxidivorans P7","Paenibacillus polymyxa SC2","Plesiomonas shigelloides","Geobacillus subterraneus","Shewanella sediminis HAW-EB3","Arcobacter sp. L","Cyanobium gracile PCC 6307","Kosakonia sacchari SP1","Escherichia albertii KF1","Mycobacterium avium subsp. paratuberculosis K-10","Planktomarina temperata RCA23","Bacillus cytotoxicus NVH 391-98","Chroococcidiopsis thermalis PCC 7203","Thermosynechococcus elongatus BP-1","Methylophaga nitratireducenticrescens","Paenibacillus graminis","Paenibacillus riograndensis SBR5","Microcoleus sp. PCC 7113","Geobacillus thermodenitrificans NG80-2","Grimontia hollisae","Thiomonas intermedia K12","Calothrix sp. PCC 7507","Lysinibacillus varians","Candidatus Nitrosopelagicus brevis","'Nostoc azollae' 0708","Ignavibacterium album JCM 16511","Helicobacter cinaedi PAGU611","Rhodoferax ferrireducens T118","Sebaldella termitidis ATCC 33386","Yersinia rohdei","Thermotoga profunda AZM34c06","Bacillus thuringiensis MC28","[Clostridium] cellulolyticum H10","Shewanella sp. MR-7","Thiomicrospira crunogena XCL-2","Thermoanaerobacterium thermosaccharolyticum DSM 571","Rhodopseudomonas palustris TIE-1","Streptomyces sp. CdTB01","Microcystis aeruginosa NIES-2549","Pectobacterium atrosepticum SCRI1043","Candidatus Azobacteroides pseudotrichonymphae genomovar. CFP2","Haemophilus somnus 129PT","Caldanaerobacter subterraneus subsp. tengcongensis MB4","Geobacillus sp. WCH70","Thermotoga neapolitana DSM 4359","Dinoroseobacter shibae DFL 12 = DSM 16493","Prochlorococcus marinus str. NATL2A","Prochlorococcus sp. MIT 0801","Paenibacillus sp. FSL H7-0357","Paenibacillus sp. FSL R7-0273","Oscillatoria acuminata PCC 6304","Synechococcus sp. RCC307","Roseobacter litoralis Och 149","Corynebacterium uterequi","Gallibacterium anatis UMN179","Bacillus coagulans 36D1","Nostoc punctiforme PCC 73102","Thermotoga maritima MSB8","Endomicrobium proavitum","Pasteurella multocida subsp. multocida str. Pm70","Bacillus weihenstephanensis KBAB4","Enterobacter sp. FY-07","Melioribacter roseus P3M-2","Candidatus Nitrosopumilus adriaticus","Mycobacterium smegmatis str. MC2 155","Staphylococcus haemolyticus JCSC1435","Blastochloris viridis","Thioalkalimicrobium cyclicum ALM1","Mycobacterium chubuense NBB4","Prochlorococcus marinus str. MIT 9313","Prochlorococcus marinus str. MIT 9303","Francisella sp. FSC1006","Paenibacillus bovis","Terriglobus roseus DSM 18391","Methylomicrobium alcaliphilum 20Z","Dactylococcopsis salina PCC 8305","Treponema succinifaciens DSM 2489","Synechococcus sp. CC9902","Prochlorococcus sp. MIT 0604","Geobacillus kaustophilus HTA426","Dickeya zeae Ech586","Polaromonas naphthalenivorans CJ2","Yersinia intermedia","Opitutus terrae PB90-1","Psychrobacter sp. PRwf-1","Halorhabdus tiamatea SARL4B","Shewanella amazonensis SB2B","Microcystis aeruginosa NIES-843","Natronomonas pharaonis DSM 2160","Lactobacillus paraplantarum","Bacillus mycoides","Nitrospira moscoviensis","Thermoanaerobacter sp. X514","Pseudomonas brassicacearum subsp. brassicacearum NFM421","Rhodopseudomonas palustris BisB5","Ruegeria pomeroyi DSS-3","Alcanivorax dieselolei B5","Prochlorococcus marinus str. MIT 9312","Vibrio furnissii NCTC 11218","Pseudomonas fluorescens NCIMB 11764","Kosakonia oryzae","Micromonospora aurantiaca ATCC 27029","Celeribacter indicus","Pseudomonas sp. URMO17WK12:I11","Bacillus cereus ATCC 14579","Candidatus Symbiobacter mobilis CR","Shewanella piezotolerans WP3","Citrobacter amalonaticus Y19","Pasteurella multocida subsp. multocida OH4807","Thermomonospora curvata DSM 43183","Methylophaga frappieri","Synechococcus sp. CC9311","Gloeobacter kilaueensis JS1","Geobacillus genomosp. 3","Pseudothermotoga thermarum DSM 5069","Haemophilus parasuis SH0165","Synechococcus sp. WH 7803","Treponema brennaborense DSM 12168","Ferrimonas balearica DSM 9799","Francisella philomiragia subsp. philomiragia ATCC 25017","Acidipropionibacterium acidipropionici ATCC 4875","Confluentimicrobium sp. EMB200-NS6","Alkaliphilus oremlandii OhILAs","Acidiphilium cryptum JF-5","Helicobacter pylori 26695","Helicobacter pylori HPAG1","Dickeya dadantii 3937","Ruminiclostridium thermocellum ATCC 27405","Octadecabacter temperatus","Streptomyces hygroscopicus subsp. jinggangensis 5008","Geobacillus sp. 12AMOR1","Streptomyces reticuli","Bacillus licheniformis DSM 13 = ATCC 14580","Lactobacillus plantarum JDM1","Haloarcula marismortui ATCC 43049","Vibrio harveyi","Candidatus Portiera aleyrodidarum BT-B-HRs","Pseudomonas mandelii JR-1","Serratia fonticola","Rhodopseudomonas palustris DX-1","Synechococcus sp. WH 8109","Phaeobacter gallaeciensis","Mycobacterium sinense","Rubinisphaera brasiliensis DSM 5305","Thauera humireducens","Synechococcus sp. KORDI-100","Candidatus Pantoea carbekii","Halobacterium hubeiense","Bacillus anthracis str. Ames","Rhodococcus equi 103S","Ilyobacter polytropus DSM 2926","Roseibacterium elongatum DSM 19469","Shewanella oneidensis MR-1","Clostridium sporogenes","Thermobispora bispora DSM 43833","Methylocella silvestris BL2","Meiothermus ruber DSM 1279","Staphylococcus condimenti","Leclercia adecarboxylata","Bradyrhizobium diazoefficiens USDA 110","Shewanella sp. W3-18-1","Shewanella loihica PV-4","Enterobacter lignolyticus SCF1","Bacillus cellulosilyticus DSM 2522","Natrinema pellirubrum DSM 15624","Halanaeroarchaeum sulfurireducens","Haloarcula hispanica ATCC 33960","Salinispora tropica CNB-440","Salinispora arenicola CNS-205","Oceanithermus profundus DSM 14977","Francisella sp. TX077308","Leptothrix cholodnii SP-6","Aeromonas salmonicida subsp. salmonicida A449","Bacillus velezensis FZB42","[Bacillus] selenitireducens MLS10","Paenibacillus sp. Y412MC10","Synechococcus sp. KORDI-52","Rhodomicrobium vannielii ATCC 17100","Treponema primitia ZAS-2","Aeromonas schubertii","Hahella chejuensis KCTC 2396","Lachnoclostridium phytofermentans ISDg","Leptolyngbya sp. PCC 7376","Mannheimia varigena USDA-ARS-USMARC-1296","Yersinia frederiksenii Y225","Nocardioides sp. JS614","Citrobacter koseri ATCC BAA-895","Paenibacillus terrae HPL-003","Citrobacter rodentium ICC168","Chelatococcus sp. CO-6","Bacillus pseudofirmus OF4","Azotobacter chroococcum NCIMB 8003","Photobacterium gaetbulicola Gung47","Terriglobus saanensis SP1PR4","Bacillus atrophaeus 1942","Bradyrhizobium icense","Methylobacterium radiotolerans JCM 2831","Escherichia coli str. K-12 substr. MG1655","Clostridium perfringens str. 13","Staphylococcus carnosus subsp. carnosus TM300","Staphylococcus simulans","Yersinia enterocolitica subsp. enterocolitica 8081","Paenibacillus sp. FSL P4-0081","Yersinia aleksiciae","Serratia liquefaciens ATCC 27592","Shewanella frigidimarina NCIMB 400","Frankia alni ACN14a","Hyphomicrobium sp. MC1","Thermaerobacter marianensis DSM 12885","Serratia proteamaculans 568","Methylobacterium nodulans ORS 2060","Helicobacter pylori SouthAfrica7","Salinicoccus halodurans","Aeromonas hydrophila 4AK4","Escherichia fergusonii ATCC 35469","Alicyclobacillus acidocaldarius subsp. acidocaldarius Tc-4-1","Marinitoga piezophila KA3","Bacillus subtilis subsp. subtilis str. 168","Buchnera aphidicola str. Bp (Baizongia pistaciae)","Gloeobacter violaceus PCC 7421","Azoarcus sp. BH72","Ruminococcus bicirculans","Akkermansia muciniphila ATCC BAA-835","Vibrio sp. EJY3","Bacillus infantis NRRL B-14911","Stanieria cyanosphaera PCC 7437","Actinobacillus suis ATCC 33415","Citrobacter freundii CFNIH1","Citrobacter freundii","Clostridium cellulovorans 743B","Enterobacter sp. 638","Halopiger xanaduensis SH-6","Xanthobacter autotrophicus Py2","Synechococcus sp. CC9605","Sphaerobacter thermophilus DSM 20745","Raoultella ornithinolytica","Methylotenera mobilis JLW8","Granulicella mallensis MP5ACTX8","Bacteroides cellulosilyticus","Bacillus sp. OxB-1","Shewanella baltica OS155","Bacillus subtilis subsp. spizizenii str. W23","Candidatus Ishikawaella capsulata Mpkobe","Bacillus oceanisediminis 2691","Psychromonas sp. CNPT3","[Clostridium] clariflavum DSM 19732","Pseudomonas stutzeri RCH2","Pandoraea faecigallinarum","Helicobacter pylori 51","Thermomicrobium roseum DSM 5159","Buchnera aphidicola str. APS (Acyrthosiphon pisum)","Buchnera aphidicola str. Ak (Acyrthosiphon kondoi)","Buchnera aphidicola str. USDA (Myzus persicae)","Granulicella tundricola MP5ACTX9","Bradyrhizobium sp. CCGE-LA001","Clostridium butyricum","Enterobacter cloacae complex sp. 35734","Pseudomonas knackmussii B13","Actinoplanes friuliensis DSM 7358","Picrophilus torridus DSM 9790","Azotobacter vinelandii DJ","Acetoanaerobium sticklandii","Helicobacter pylori J99","Saccharomonospora viridis DSM 43017","Sphaerochaeta globosa str. Buddy","Candidatus Blochmannia pennsylvanicus str. BPEN","Candidatus Blochmannia vafer str. BVAF","Frankia casuarinae","Propionibacterium acnes KPA171202","Pseudomonas sp. UW4","Enterobacter cloacae subsp. cloacae ENHKU01","Enterobacter asburiae L1","Prochlorococcus marinus str. AS9601","Prochlorococcus marinus str. MIT 9215","Nitrosococcus oceani ATCC 19707","Granulibacter bethesdensis CGDNIH1","Spiribacter sp. UAH-SP71","Rhodopseudomonas palustris BisA53","Mahella australiensis 50-1 BON","Baumannia cicadellinicola str. Hc (Homalodisca coagulata)","Phaeobacter inhibens 2.10","Clostridium sp. BNL1100","Clostridium botulinum E3 str. Alaska E43","Buchnera aphidicola str. Ua (Uroleucon ambrosiae)","Clostridium botulinum A str. ATCC 19397","Emticicia oligotrophica DSM 17448","Mesotoga prima MesG1.Ag.4.2","Synechococcus sp. KORDI-49","Thioalkalimicrobium aerophilum AL3","Bacillus amyloliquefaciens TA208","Buchnera aphidicola str. Sg (Schizaphis graminum)","Alcanivorax borkumensis SK2","Elusimicrobium minutum Pei191","Ruegeria mobilis F1926","Methylibium petroleiphilum PM1","Tolumonas auensis DSM 9187","Coraliomargarita akajimensis DSM 45221","Ruegeria sp. TM1040","Crinalium epipsammum PCC 9333","Cronobacter sakazakii ATCC BAA-894","Enterobacteriaceae bacterium strain FGI 57","Bibersteinia trehalosi USDA-ARS-USMARC-192","Nakamurella multipartita DSM 44233","Candidatus Blochmannia floridanus","Verrucosispora maris AB-18-032","Pseudomonas putida S16","Pseudanabaena sp. PCC 7367","Rhodococcus aetherivorans","Cronobacter muytjensii ATCC 51329","Cronobacter condimenti 1330","Brevibacillus brevis NBRC 100599","Bacillus sp. SDLI1","Sediminispirochaeta smaragdinae DSM 11293","Modestobacter marinus","Actinoplanes sp. SE50/110","Actinoplanes missouriensis 431","Prochlorococcus marinus str. MIT 9515","Acetobacterium woodii DSM 1030","Prochlorococcus marinus subsp. marinus str. CCMP1375","Kluyvera intermedia","Pseudomonas sp. A3(2016)","Bradyrhizobium japonicum USDA 6","Staphylococcus equorum","Spiribacter salinus M19-40","Vibrio breoganii","Shewanella woodyi ATCC 51908","Celeribacter marinus","Chondromyces crocatus","Labrenzia sp. CP4","Phaeobacter gallaeciensis DSM 26640","[Clostridium] acidurici 9a","Rahnella sp. Y9602","Mycobacterium sp. MCS","Nitrosococcus watsonii C-113","Bradyrhizobium sp. ORS 278","Clostridium botulinum B str. Eklund 17B (NRP)","Shewanella pealeana ATCC 700345","Synechococcus sp. WH 8103","Clostridium saccharobutylicum DSM 13864","Pluralibacter gergoviae","Bacteroidales bacterium CF","Halobacterium salinarum NRC-1","Pseudomonas stutzeri A1501","secondary endosymbiont of Ctenarytaina eucalypti","Bacillus clausii KSM-K16","Haloterrigena turkmenica DSM 5511","Azospirillum brasilense","Candidatus Babela massiliensis","Halomonas campaniensis","Bacillus cereus ATCC 10987","Prochlorococcus marinus subsp. pastoris str. CCMP1986","Actinoplanes sp. N902-109","Bacillus smithii","Pseudonocardia dioxanivorans CB1190","Paenibacillus sp. FSL H7-0737","Methyloceanibacter caenitepidi","Candidatus Tachikawaea gelatinosa","Ralstonia eutropha H16","Cupriavidus metallidurans CH34","Pseudomonas sp. GR 6-02","Coxiella endosymbiont of Amblyomma americanum","Alkaliphilus metalliredigens QYMF","Enterobacter cloacae ECNIH2","Pseudomonas putida KT2440","Staphylococcus warneri SG1","Thermobifida fusca YX","Candidatus Methylopumilus turicensis","Candidatus Evansia muelleri","Amycolatopsis mediterranei U32","Enterobacter cloacae subsp. cloacae ATCC 13047","Pectobacterium carotovorum subsp. carotovorum PC1","Pectobacterium parmentieri WPP163","Paenibacillus mucilaginosus KNP414","Mannheimia sp. USDA-ARS-USMARC-1261","Providencia stuartii MRSN 2154","Halomicrobium mukohataei DSM 12286","Candidatus Moranella endobia PCIT","Pseudomonas fluorescens PICF7","Azospirillum thiophilum","Pseudomonas chlororaphis","Lelliottia amnigena","Acaryochloris marina MBIC11017","Kiritimatiella glycovorans","Arcanobacterium haemolyticum DSM 20595","Bradyrhizobium sp. BTAi1","Enterobacter cloacae EcWSU1","Zhongshania aliphaticivorans","Synechococcus sp. PCC 7502","Eubacterium limosum","Rhodococcus jostii RHA1","Chloracidobacterium thermophilum B","Truepera radiovictrix DSM 17093","Thermosediminibacter oceani DSM 16646","Nitrospira defluvii","Haloferax mediterranei ATCC 33500","Bacillus simplex","Natronococcus occultus SP4","Mesorhizobium opportunistum WSM2075","Candidatus Solibacter usitatus Ellin6076","Azorhizobium caulinodans ORS 571","Corynebacterium diphtheriae 31A","Pragia fontium","Mannheimia haemolytica USDA-ARS-USMARC-183","beta proteobacterium CB","Alteromonas mediterranea","Staphylococcus lugdunensis HKU09-01","Natrinema sp. J7-2","Acidimicrobium ferrooxidans DSM 10331","Leisingera methylohalidivorans DSM 14336","Nitrobacter hamburgensis X14","Candidatus Methylopumilus planktonicus","Clostridium novyi NT","Deinococcus gobiensis I-0","Halomonas sp. KO116","Serratia plymuthica 4Rx13","Pseudomonas brassicacearum","Pseudomonas putida GB-1","Haloferax volcanii DS2","Pseudomonas citronellolis","Hafnia alvei","Comamonadaceae bacterium A1","Mycobacterium haemophilum DSM 44634","Mycobacterium rhodesiae NBB3","Cutibacterium avidum 44067","Deinococcus swuensis","Blochmannia endosymbiont of Polyrhachis (Hedomyrma) turneri","Megasphaera elsdenii 14-14","Prochlorococcus marinus str. MIT 9301","Coriobacterium glomerans PW2","Bacillus pumilus SAFR-032","Hyphomicrobium denitrificans ATCC 51888","Burkholderia sp. OLGA172","Buchnera aphidicola BCc","Blastococcus saxobsidens DD2","Snodgrassella alvi wkB2","Clostridium baratii str. Sullivan","Shewanella violacea DSS12","Streptomyces sp. SAT1","Odoribacter splanchnicus DSM 20712","Staphylococcus xylosus","Cupriavidus necator N-1","Pandoraea pnomenusa 3kgm","Yersinia aldovae 670-83","Anoxybacillus flavithermus WK1","Cedecea neteri","Clostridium tyrobutyricum","Chania multitudinisentens RB-25","Fervidobacterium pennivorans","Pseudothermotoga lettingae TMO","Aneurinibacillus sp. XH2","Halanaerobium hydrogeniformans","Obesumbacterium proteus","Mycobacterium sp. MOTT36Y","Deinococcus peraridilitoris DSM 19664","Achromobacter xylosoxidans A8","Spongiibacter sp. IMCC21906","Acidobacterium capsulatum ATCC 51196","Ralstonia pickettii DTP0602","Ralstonia eutropha JMP134","Parabacteroides distasonis ATCC 8503","Staphylococcus capitis subsp. capitis","Halobacillus halophilus DSM 2266","Pseudomonas putida H8234","Staphylococcus epidermidis ATCC 12228","Enterobacter asburiae LF7a","Eubacterium limosum KIST612","Deinococcus puniceus","Streptomyces cattleya NRRL 8057 = DSM 46488","Clostridioides difficile 630","Dyella japonica A8","Klebsiella pneumoniae subsp. pneumoniae NTUH-K2044","Pseudomonas mosselii SJ10","Gemmatimonas aurantiaca T-27","Methylotenera versatilis 301","Bacillus methanolicus MGA3","Bacillus halodurans C-125","Tatlockia micdadei","Burkholderia sp. YI23","Streptomyces scabiei 87.22","Psychrobacter urativorans","Coxiella burnetii RSA 493","Enterobacter aerogenes KCTC 2190","Aromatoleum aromaticum EbN1","Basilea psittacipulmonis DSM 24701","Candidatus Sodalis pierantonius str. SOPE","Bacillus pumilus","Bacillus sp. WP8","Pseudomonas sp. TKP","Helicobacter pylori Aklavik86","Mucinivorans hirudinis","Parvimonas micra","Runella slithyformis DSM 19594","Candidatus Cloacimonas acidaminovorans str. Evry","Lawsonella clevelandensis","Pseudomonas stutzeri DSM 10701","Leptospira santarosai serovar Shermani str. LT 821","Maribacter sp. HTCC2170","Oligotropha carboxidovorans OM5","Ruminococcus albus 7 = DSM 20455","Halalkalicoccus jeotgali B3","Kangiella koreensis DSM 16069","Halorubrum lacusprofundi ATCC 49239","Klebsiella michiganensis","Leptospira borgpetersenii serovar Hardjo-bovis str. L550","Rhodopseudomonas palustris BisB18","Niastella koreensis GR20-10","Comamonas testosteroni TK102","Kibdelosporangium phytohabitans","Halocynthiibacter arcticus","Rhodococcus opacus B4","Sphaerochaeta pleomorpha str. Grapes","Bacteroides ovatus","Vibrio mimicus","Azospirillum lipoferum 4B","Raoultella ornithinolytica B6","Lachnoclostridium sp. YL32","Lysinibacillus fusiformis","Synechococcus sp. PCC 6312","Lactobacillus reuteri JCM 1112","Paludibacter propionicigenes WB4","Gordonia polyisoprenivorans VH2","Methylobacterium aquaticum","Polynucleobacter asymbioticus QLW-P1DMWA-1","Gluconacetobacter diazotrophicus PA1 5","Moraxella osloensis","Halanaerobium praevalens DSM 2228","Haliscomenobacter hydrossis DSM 1100","Bacillus endophyticus","Vibrio fluvialis","Barnesiella viscericola DSM 18177","Neorickettsia risticii str. Illinois","Frankia inefficax","Pseudomonas fluorescens Pf0-1","Methylobacterium populi BJ001","Helicobacter acinonychis str. Sheeba","Bacillus megaterium DSM 319","Jannaschia sp. CCS1","Cyanothece sp. PCC 7822","Corynebacterium vitaeruminis DSM 20294","Rhodospirillum centenum SW","Corynebacterium testudinoris","Alistipes finegoldii DSM 17242","Deinococcus geothermalis DSM 11300","Halostagnicola larsenii XH-48","Blochmannia endosymbiont of Camponotus (Colobopsis) obliquus","Bradyrhizobium oligotrophicum S58","Serratia marcescens WW4","Brevibacillus laterosporus LMG 15441","Actinomyces sp. oral taxon 414","Legionella pneumophila subsp. pneumophila str. Philadelphia 1","Legionella pneumophila subsp. pascullei","Herminiimonas arsenicoxydans","Beijerinckia indica subsp. indica ATCC 9039","Aeromonas media WS","Oscillibacter valericigenes Sjm18-20","Deinococcus deserti VCD115","Treponema azotonutricium ZAS-9","Comamonas testosteroni CNB-2","Hoyosella subflava DQS3-9A1","Planococcus donghaensis","Thermosipho melanesiensis BI429","Fervidobacterium islandicum","Legionella longbeachae NSW150","Blattabacterium sp. (Mastotermes darwiniensis) str. MADAR","Gloeocapsa sp. PCC 7428","Streptomyces xiamenensis","Spirochaeta thermophila DSM 6578","Psychrobacter cryohalolentis K5","Legionella oakridgensis ATCC 33761 = DSM 21215","Pseudomonas koreensis","Mycobacterium vaccae 95051","Clostridium acetobutylicum ATCC 824","Pseudomonas aeruginosa PAO1","Pseudomonas aeruginosa PA7","Pseudomonas denitrificans ATCC 13867","Moraxella catarrhalis BBH18","Francisella persica ATCC VR-331","Azospirillum sp. B510","Aliivibrio wodanis","Fervidobacterium pennivorans DSM 9078","Vibrio scophthalmi","Pandoraea apista","Pandoraea norimbergensis","Dyella jiangningensis","Frankia symbiont of Datisca glomerata","Ralstonia solanacearum GMI1000","Streptomyces collinus Tu 365","Dermabacter vaginalis","Halomonas elongata DSM 2581","Ralstonia solanacearum Po82","Oblitimonas alkaliphila","Staphylococcus agnetis","Rhodococcus erythropolis PR4","Paraburkholderia phymatum STM815","Flavonifractor plautii","Vibrio vulnificus YJ016","Cytophaga hutchinsonii ATCC 33406","Hyphomonas neptunium ATCC 15444","Protochlamydia naegleriophila","Pseudopropionibacterium propionicum F0230a","Fusobacterium nucleatum subsp. vincentii 3_1_36A2","Bradyrhizobium sp.","Vibrio parahaemolyticus RIMD 2210633","endosymbiont of Llaveia axin axin","Actinomyces oris","Mycobacterium sp. EPa45","Burkholderia sp. RPE64","Pseudomonas putida W619","Candidatus Profftella armatura","Verrucomicrobia bacterium IMCC26134","Polynucleobacter duraquae","Vibrio tasmaniensis LGP32","Bifidobacterium asteroides PRL2011","Buchnera aphidicola (Cinara tujafilina)","Deinococcus actinosclerus","Psychrobacter alimentarius","Eubacterium sulci ATCC 35585","Anaerococcus prevotii DSM 20548","Spirochaeta thermophila DSM 6192","Paenibacillus beijingensis","Butyrivibrio proteoclasticus B316","Actinobacteria bacterium IMCC26256","Wolbachia endosymbiont strain TRS of Brugia malayi","Flavobacterium johnsoniae UW101","Halogeometricum borinquense DSM 11551","Simiduia agarivorans SA1 = DSM 21679","Polaromonas sp. JS666","Leptospira interrogans serovar Copenhageni str. Fiocruz L1-130","Gordonia bronchialis DSM 43247","Anaplasma marginale str. St. Maries","Fusobacterium nucleatum subsp. polymorphum","Kutzneria albida DSM 43870","Pseudomonas trivialis","Chromohalobacter salexigens DSM 3043","Bifidobacterium catenulatum DSM 16992 = JCM 1194 = LMG 11043","Frankia sp. EAN1pec","Ralstonia solanacearum PSI07","Mycobacterium goodii","Ralstonia pickettii 12J","Zobellia galactanivorans","Conexibacter woesei DSM 14684","Octadecabacter antarcticus 307","Alicyclobacillus acidocaldarius subsp. acidocaldarius DSM 446","Jonesia denitrificans DSM 20603","Staphylococcus pseudintermedius HKU10-03","Propionibacterium freudenreichii subsp. shermanii CIRM-BIA1","Vibrio fischeri ES114","Aliivibrio salmonicida LFI1238","Deinococcus maricopensis DSM 21211","[Clostridium] saccharolyticum WM1","Hoeflea sp. IMCC20628","Corynebacterium atypicum","Paenibacillus borealis","Limnohabitans sp. 103DPR2","Rhodospirillum rubrum ATCC 11170","Gardnerella vaginalis 409-05","Deinococcus radiodurans R1","Komagataeibacter xylinus E25","Marinobacter similis","[Eubacterium rectale] ATCC 33656","Tepidanaerobacter acetatoxydans Re1","Pantoea sp. At-9b","Vibrio antiquarius","Laribacter hongkongensis HLHK9","Prevotella sp. oral taxon 299 str. F0039","Wolbachia endosymbiont of Drosophila melanogaster","Fervidobacterium nodosum Rt17-B1","Paraburkholderia xenovorans LB400","Candidatus Kinetoplastibacterium crithidii (ex Angomonas deanei ATCC 30255)","Hyphomicrobium nitrativorans NL23","Orientia tsutsugamushi str. Ikeda","Orientia tsutsugamushi str. Boryong","Rhodopseudomonas palustris HaA2","Vibrio campbellii ATCC BAA-1116","'Deinococcus soli' Cha et al. 2014","Burkholderia vietnamiensis G4","Pseudogulbenkiania sp. NH8B","Nitrosospira multiformis ATCC 25196","Leptospira biflexa serovar Patoc strain 'Patoc 1 (Ames)'","Rhizobium gallicum bv. gallicum R602","Pseudomonas entomophila L48","Streptomyces sp. Mg1","Neorickettsia sennetsu str. Miyayama","Nitrosomonas communis","Moraxella ovis","Blattabacterium sp. (Periplaneta americana) str. BPLAN","Wolbachia endosymbiont of Drosophila simulans wNo","Pirellula staleyi DSM 6068","Novosphingobium pentaromativorans US6-1","Limnohabitans sp. 63ED37-2","Lacimicrobium alkaliphilum","Bifidobacterium adolescentis ATCC 15703","Rickettsia helvetica C9P9","Bifidobacterium actinocoloniiforme DSM 22766","Cupriavidus basilensis","Gordonia sp. QH-11","Erysipelotrichaceae bacterium I46","Bifidobacterium indicum LMG 11587 = DSM 20214","Pseudomonas alkylphenolia","Bifidobacterium pseudocatenulatum DSM 20438 = JCM 1200 = LMG 10505","Streptomyces albulus","Bifidobacterium dentium Bd1","Lactobacillus ginsenosidimutans","Sphingopyxis alaskensis RB2256","Methylobacillus flagellatus KT","Fusobacterium nucleatum subsp. animalis 7_1","Treponema caldarium DSM 7334","alpha proteobacterium HIMB5","Leptotrichia buccalis C-1013-b","Acidaminococcus fermentans DSM 20731","Mesorhizobium ciceri biovar biserrulae WSM1271","Sphingobium japonicum UT26S","Oceanobacillus iheyensis HTE831","Pseudomonas stutzeri CCUG 29243","Starkeya novella DSM 506","Solitalea canadensis DSM 3403","Staphylococcus hyicus","Clostridium tetani E88","Ethanoligenens harbinense YUAN-3","Vibrio tubiashii ATCC 19109","Candidatus Arthromitus sp. SFB-mouse-Japan","Candidatus Arthromitus sp. SFB-rat-Yit","Methylobacterium extorquens PA1","Thermobacillus composti KWC4","Methylovorus glucosetrophus SIP3-4","Phenylobacterium zucineum HLK1","Bacteroides salanitronis DSM 18170","Coxiella-like endosymbiont","Vibrio coralliilyticus","Enterococcus faecalis V583","Plautia stali symbiont","[Clostridium] stercorarium subsp. stercorarium DSM 8532","Neorickettsia helminthoeca str. Oregon","Turneriella parva DSM 21527","Rufibacter sp. DG31D","Bifidobacterium thermophilum RBL67","Xenorhabdus doucetiae","Cyclobacterium marinum DSM 745","Bifidobacterium bifidum S17","Fusobacterium hwasookii ChDC F206","Stenotrophomonas maltophilia R551-3","Tistrella mobilis KA081020-065","Anaplasma phagocytophilum str. HZ","Blattabacterium sp. (Blaberus giganteus)","Ramlibacter tataouinensis","Rickettsia australis str. Cutlack","Pseudomonas stutzeri","Pseudomonas resinovorans NBRC 106553","Bacteroides helcogenes P 36-108","Candidatus Izimaplasma sp. HR1","Blattabacterium sp. (Panesthia angustipennis spadica) str. BPAA","Alteromonas australica","Bacillus lehensis G1","Acidovorax sp. JS42","Staphylococcus saprophyticus subsp. saprophyticus ATCC 15305","Martelella endophytica","Finegoldia magna ATCC 29328","Octadecabacter arcticus 238","Rickettsia conorii str. Malish 7","Ehrlichia canis str. Jake","Ehrlichia chaffeensis str. Arkansas","Anaplasma centrale str. Israel","Ehrlichia ruminantium str. Welgevonden","Ehrlichia muris AS145","Ehrlichia sp. HF","Alicycliphilus denitrificans BC","Listeria welshimeri serovar 6b str. SLCC5334","Bifidobacterium longum NCC2705","Blattabacterium sp. (Blattella germanica) str. Bge","Flavobacterium columnare","Blattabacterium sp. (Cryptocercus punctulatus) str. Cpu","Clostridium lentocellum DSM 5427","Stenotrophomonas maltophilia K279a","Stenotrophomonas maltophilia JV3","Natrialba magadii ATCC 43099","Sphingobium sp. YBL2","Brachybacterium faecium DSM 4810","Acetobacter sp. SLV-7","Yersinia ruckeri","Haloquadratum walsbyi DSM 16790","Gardnerella vaginalis ATCC 14019","Fibrobacter succinogenes subsp. succinogenes S85","Vulgatibacter incomptus","Glaciecola sp. 4H-3-7+YE-5","Bifidobacterium angulatum","Photorhabdus asymbiotica","Ralstonia mannitolilytica","Rickettsia monacensis","Rhodococcus pyridinivorans SB3094","Bifidobacterium animalis subsp. lactis AD011","Thermus parvatiensis","Treponema pallidum subsp. pallidum str. Nichols","Natronomonas moolapensis 8.8.11","Wolbachia endosymbiont of Onchocerca ochengi","Sphingobium sp. MI1205","Pantoea vagans C9-1","Vibrio cholerae O1 biovar El Tor str. N16961","Candidatus Kinetoplastibacterium galatii TCC219","Candidatus Kinetoplastibacterium blastocrithidii (ex Strigomonas culicis)","Achromobacter xylosoxidans C54","Stenotrophomonas maltophilia","Macrococcus caseolyticus JCSC5402","Treponema denticola ATCC 35405","Virgibacillus sp. SK37","Phycisphaera mikurensis NBRC 102666","Persicobacter sp. JZB09","Pannonibacter phragmitetus","Sinorhizobium meliloti 1021","Bifidobacterium breve ACS-071-V-Sch8b","Tenacibaculum dicentrarchi","Archangium gephyra","Paenibacillus sp. 32O-W","Bartonella quintana str. Toulouse","Flavobacterium columnare ATCC 49512","Neisseria gonorrhoeae FA 1090","Streptomyces sp. CCM_MD2014","Lactobacillus fermentum IFO 3956","Sphingobacterium sp. 21","Clostridium botulinum BKT015925","Sodalis glossinidius str. 'morsitans'","Candidatus Riesia pediculicola USDA","Filifactor alocis ATCC 35896","Paenibacillus naphthalenovorans","Candidatus Kinetoplastibacterium oncopeltii TCC290E","Colwellia sp. MT41","Bacteroides dorei CL03T12C01","Liberibacter crescens BT-1","Yersinia pestis KIM10+","Ralstonia insidiosa","Pseudomonas mendocina NK-01","Prevotella denticola F0289","Paraburkholderia fungorum","Tannerella forsythia 92A2","Bradyrhizobium sp. S23321","Thermosipho africanus TCF52B","Treponema pedis str. T A4","Bacteroides vulgatus ATCC 8482","Halomonas huangheensis","Spirochaeta africana DSM 8902","Pimelobacter simplex","Paenibacillus sp. IHBB 10380","Dyadobacter fermentans DSM 18053","Rickettsia bellii RML369-C","Sinorhizobium medicae WSM419","Bacteroides fragilis YCH46","Myxococcus fulvus HW-1","Pseudomonas fluorescens","Tetragenococcus halophilus NBRC 12172","Actinomyces meyeri","Sphingobacterium sp. ML3W","Amycolatopsis methanolica 239","Wolbachia endosymbiont of Cimex lectularius","[Eubacterium] eligens ATCC 27750","Burkholderia sp. HB1","Marinobacter hydrocarbonoclasticus VT8","Parachlamydia acanthamoebae UV-7","Burkholderia sp. CCGE1003","Teredinibacter turnerae T7901","Clostridium kluyveri NBRC 12016","Serratia marcescens FGI94","Paracoccus aminophilus JCM 7686","Bifidobacterium scardovii JCM 12489 = DSM 13734","Polymorphum gilvum SL003B-26A1","Croceicoccus naphthovorans","Cellulomonas fimi ATCC 484","Prevotella fusca JCM 17724","Massilia sp. NR 4-1","Bordetella petrii","Glaciecola nitratireducens FR1064","Rothia mucilaginosa DY-18","Candidatus Midichloria mitochondrii IricVA","Rothia mucilaginosa","Peptoniphilus sp. ING2-D1G","Bacteroides caecimuris","Achromobacter denitrificans","Candidatus Pelagibacter ubique HTCC1062","Mycobacterium vanbaalenii PYR-1","Bifidobacterium kashiwanohense PV20-2","Burkholderia glumae PG1","Treponema putidum","Photorhabdus temperata subsp. thracensis","Candidatus Liberibacter asiaticus str. psy62","Psychromonas ingrahamii 37","Planococcus sp. L10.15","Listeria seeligeri serovar 1/2b str. SLCC3954","Streptococcus salivarius JIM8777","Maricaulis maris MCS10","Flavobacterium branchiophilum FL-15","Sphaerochaeta coccoides DSM 17374","endosymbiont of Acanthamoeba sp. UWC8","Rickettsia typhi str. Wilmington","Rickettsia prowazekii str. Rp22","Streptomyces fulvissimus DSM 40593","Corynebacterium simulans","Pantoea sp. PSNIH2","Pseudopedobacter saltans DSM 12145","Pseudomonas parafulva","Treponema sp. OMZ 838","Ramlibacter tataouinensis TTB310","Devosia sp. H5989","Delftia acidovorans SPH-1","Salinibacter ruber DSM 13855","Nitrosospira briensis C-128","Methylophilus sp. TWE2","Candidatus Liberibacter americanus str. Sao Paulo","Agarivorans gilvus","Herbaspirillum seropedicae SmR1","Herbaspirillum rubrisubalbicans M1","Moritella viscosa","Myxococcus hansupus","Bartonella clarridgeiae 73","Flavobacterium psychrophilum JIP02/86","Bifidobacterium pseudolongum PV8-2","Bartonella ancashensis","Variovorax paradoxus B4","Cellulomonas gilvus ATCC 13127","Atopobium parvulum DSM 20469","Altererythrobacter epoxidivorans","Candidatus Liberibacter solanacearum CLso-ZC1","Candidatus Liberibacter africanus PTSAPSY","secondary endosymbiont of Heteropsylla cubana","Myxococcus xanthus DK 1622","Staphylococcus schleiferi","Parascardovia denticolens DSM 10105 = JCM 12538","Rickettsia felis URRWXCal2","Candidatus Xiphinematobacter sp. Idaho Grape","Rhizobium tropici CIAT 899","Pseudomonas sp. StFLB209","Spiroplasma eriocheiris CCTCC M 207170","Corynebacterium doosanense CAU 212 = DSM 45436","Scardovia inopinata JCM 12537","Mycobacterium phlei","Francisella tularensis subsp. tularensis SCHU S4","Niabella soli DSM 19437","Xenorhabdus bovienii SS-2004","Chelativorans sp. BNC1","Bifidobacterium longum subsp. infantis ATCC 15697 = JCM 1222 = DSM 20088","Spiroplasma chrysopicola DF-1","Lactobacillus koreensis","Rickettsia canadensis str. McKiel","Porphyromonas gingivalis W83","Bartonella bacilliformis KC583","Glutamicibacter arilaitensis Re117","Neisseria lactamica 020-06","Erwinia billingiae Eb661","Prevotella melaninogenica ATCC 25845","Draconibacterium orientale","Nitrosomonas sp. Is79A3","Janthinobacterium sp. B9-8","Collimonas pratensis","Castellaniella defragrans 65Phen","Xenorhabdus poinarii G6","Corynebacterium maris DSM 45190","Lactococcus piscium MKFS47","Polynucleobacter necessarius subsp. necessarius STIR1","Arsenicicoccus sp. oral taxon 190","Rickettsia akari str. Hartford","Bartonella australis Aust/NH1","Planococcus antarcticus DSM 14505","Allofrancisella guangzhouensis","Nitrobacter winogradskyi Nb-255","Robiginitalea biformata HTCC2501","Cupriavidus gilardii CR3","Saccharophagus degradans 2-40","Listeria monocytogenes serotype 4b str. F2365","Listeria ivanovii subsp. ivanovii PAM 55","Pseudomonas pseudoalcaligenes CECT 5344","Kingella kingae","Elizabethkingia anophelis NUHP1","Methylobacterium sp. AMS5","Opitutaceae bacterium TAV5","Marinobacter sp. BSs20148","Onion yellows phytoplasma OY-M","Candidatus Amoebophilus asiaticus 5a2","Brachyspira intermedia PWS/A","Pseudomonas oryzihabitans","Hymenobacter sp. DG25B","Pantoea rwandensis","Roseateles depolymerans","Paenibacillus sp. JDR-2","Psychroflexus torquis ATCC 700755","Piscirickettsia salmonis LF-89 = ATCC VR-1361","Candidatus Puniceispirillum marinum IMCC1322","Brachyspira murdochii DSM 12563","Riemerella anatipestifer ATCC 11845 = DSM 15868","Neisseria meningitidis MC58","Chitinophaga pinensis DSM 2588","Advenella kashmirensis WT001","Sneathia amnii","Candidatus Pelagibacter sp. IMCC9063","Dermacoccus nishinomiyaensis","Enterococcus faecium DO","Verrucomicrobium spinosum DSM 4136 = JCM 18804","Myxococcus stipitatus DSM 14675","Taylorella equigenitalis MCE9","Taylorella asinigenitalis MCE3","Lactococcus garvieae ATCC 49156","Erwinia tasmaniensis Et1/99","Olsenella uli DSM 7084","Enterococcus mundtii QU 25","Parvularcula bermudensis HTCC2503","Candidatus Carsonella ruddii HT isolate Thao2000","Mycoplasma penetrans HF-2","Xenorhabdus nematophila AN6/1","Prevotella intermedia 17","Corynebacterium singulare","Mageeibacillus indolicus UPII9-5","Nocardia nova SH22a","Staphylococcus aureus RF122","Haloferax gibbonsii","Rickettsiales bacterium Ac37b","Trueperella pyogenes","Bartonella tribocorum CIP 105476","Corynebacterium halotolerans YIM 70093 = DSM 44683","Candidatus Kinetoplastibacterium desouzaii TCC079E","Massilia sp. WG5","Lactococcus lactis subsp. lactis Il1403","Corynebacterium casei LMG S-19264","Burkholderia multivorans ATCC 17616","Burkholderia cepacia JBK9","Prevotella enoeca","Pseudomonas fluorescens A506","Streptococcus intermedius JTH08","Pseudomonas protegens Pf-5","Pseudomonas sp. Os17","Burkholderia cenocepacia","Bartonella henselae str. Houston-1","Mycoplasma hyopneumoniae J","Bdellovibrio bacteriovorus","Brucella melitensis bv. 1 str. 16M","Burkholderia ambifaria MC40-6","Frateuria aurantia DSM 6220","alpha proteobacterium HIMB59","Rufibacter tibetensis","Enterococcus casseliflavus EC20","Streptomyces violaceusniger Tu 4113","Cellulophaga baltica 18","Pseudomonas azotoformans","Spirosoma radiotolerans","Streptomyces sp. CFMR 7","Francisella cf. tularensis subsp. novicida 3523","Rhodococcus opacus PD630","Marinobacter salarius","Olsenella sp. oral taxon 807","Streptomyces sp. SirexAA-E","Brachyspira pilosicoli 95/1000","Mycoplasma suis str. Illinois","Mycoplasma wenyonii str. Massachusetts","Mycoplasma parvum str. Indiana","Mycoplasma ovis str. Michigan","Sphingomonas sp. NIC1","Thalassolituus oleivorans MIL-1","Roseburia hominis A2-183","Chryseobacterium gallinarum","Aureimonas sp. AU20","Mycoplasma haemofelis Ohio2","Mycoplasma haemocanis str. Illinois","Sphingopyxis sp. 113P3","Gynuella sunshinyii YC6258","Beutenbergia cavernae DSM 12333","Algoriphagus machipongonensis","Enterococcus durans","Lactobacillus sakei subsp. sakei 23K","Streptomyces sp. CNQ-509","Martelella sp. AD-3","Mesorhizobium australicum WSM2073","Streptomyces lividans TK24","Aster yellows witches'-broom phytoplasma AYWB","Burkholderia glumae BGR1","Burkholderia oklahomensis","Wenzhouxiangella marina","Mesorhizobium loti NZP2037","Pseudomonas sp. VLB120","Streptomyces ambofaciens ATCC 23877","Janthinobacterium sp. Marseille","Corallococcus coralloides DSM 2259","Rhizobium leguminosarum bv. trifolii WSM1325","Fusobacterium nucleatum subsp. nucleatum ATCC 25586","Lactococcus lactis subsp. cremoris MG1363","Ilumatobacter coccineus YM16-304","Advenella mimigardefordensis DPN7","Kangiella geojedonensis","Corynebacterium aurimucosum ATCC 700975","Cyclobacterium amurskyense","Acetobacter senegalensis","Flavobacteriaceae bacterium 3519-10","Enterococcus hirae ATCC 9790","Ochrobactrum anthropi ATCC 49188","Kribbella flavida DSM 17836","Burkholderia pyrrocinia","Corynebacterium imitans","Elizabethkingia miricola","Bdellovibrio exovorus JSS","Bdellovibrio bacteriovorus W","Exiguobacterium sp. AT1b","Bartonella vinsonii subsp. berkhoffii str. Winnie","Burkholderia thailandensis MSMB121","Mycoplasma fermentans JER","Catenulispora acidiphila DSM 44928","Gluconobacter oxydans H24","Oleispira antarctica RB-8","Sphingomonas wittichii RW1","Chromobacterium violaceum ATCC 12472","Pedobacter sp. PACM 27299","Geodermatophilus obscurus DSM 43160","Neisseria elongata subsp. glycolytica ATCC 29315","Pseudomonas saudiphocaensis","Candidatus Endolissoclinum faulkneri L2","Candidatus Endolissoclinum faulkneri L5","Burkholderia sp. CCGE1001","Xylella fastidiosa Temecula1","Candidatus Phytoplasma mali","Porphyromonas asaccharolytica DSM 20707","Actinosynnema mirum DSM 43827","Haliangium ochraceum DSM 14365","Flavobacterium indicum GPTSA100-9 = DSM 17447","Flammeovirgaceae bacterium 311","Erwinia amylovora ATCC 49946","Myroides sp. A21","Francisella noatunensis subsp. orientalis str. Toba 04","Bartonella grahamii as4aup","Asaia bogorensis NBRC 16594","Lysobacter antibioticus","Acidaminococcus intestini RyC-MR95","Leadbetterella byssophila DSM 17132","Azospirillum humicireducens","Candidatus Phytoplasma australiense","Mycoplasma hominis ATCC 23114","Mycoplasma canadense","Mycoplasma arginini","Burkholderia sp. PAMC 26561","Kocuria flava","Micavibrio aeruginosavorus EPB","Sphingobium chlorophenolicum L-1","Corynebacterium urealyticum DSM 7109","Ochrobactrum pseudogrignonense","Bacteroides thetaiotaomicron VPI-5482","Mesorhizobium loti MAFF303099","Siansivirga zeaxanthinifaciens CC-SAMT-1","Caulobacter sp. K31","Paucibacter sp. KCTC 42545","Leptotrichia sp. oral taxon 212","Pseudomonas mendocina ymp","Paraburkholderia phytofirmans PsJN","Corynebacterium marinum DSM 44953","Chlamydophila caviae GPIC","Staphylococcus argenteus","Acetobacter pasteurianus IFO 3283-01","Pantoea sp. PSNIH1","Brachyspira hyodysenteriae WA1","Rhizobium etli bv. mimosae str. IE4771","Echinicola vietnamensis DSM 17526","Streptobacillus moniliformis DSM 12112","Pantoea ananatis LMG 20103","Streptomyces sp. RTd22","Stenotrophomonas acidaminiphila","Pseudonocardia sp. EC080625-04","Kocuria rhizophila DC2201","Streptomyces parvulus","Chlamydia felis Fe/C-56","Chlamydophila pecorum E58","Bordetella trematum","Prevotella dentalis DSM 3688","Sphingopyxis macrogoltabida","Neisseria weaveri","Corynebacterium kutscheri","Acholeplasma oculi","Chlamydia trachomatis D/UW-3/CX","Rhodanobacter denitrificans","Pseudomonas sp. MRSN12121","Pseudoxanthomonas suwonensis 11-1","Streptomyces albus","Prevotella ruminicola 23","Xylella fastidiosa 9a5c","Streptomyces avermitilis MA-4680 = NBRC 14893","Arthrobacter sp. LS16","Mycoplasma cynos C142","Cellulomonas flavigena DSM 20109","Vibrio nigripulchritudo","Cellvibrio japonicus Ueda107","Bdellovibrio bacteriovorus str. Tiberius","Acholeplasma palmae J233","Planococcus kocurii","Chlamydia muridarum str. Nigg","Chlamydia psittaci 6BC","Bordetella hinzii","Streptomyces sp. S10(2016)","Lactobacillus ruminis ATCC 27782","Streptomyces albus J1074","Mycobacterium sp. QIA-37","Microlunatus phosphovorus NM-1","Cardinium endosymbiont cEper1 of Encarsia pergandiella","Mycoplasma dispar","Chlamydophila pneumoniae TW-183","Chlamydia abortus S26/3","Chlamydia gallinacea 08-1274/3","Chlamydia avium 10DC88","Nitrosomonas ureae","Weeksella virosa DSM 16922","Shewanella denitrificans OS217","Mycobacterium sp. JS623","Streptomyces sp. 769","Erythrobacter atlanticus","Flexibacter litoralis DSM 6794","Rhizobium sp. NT-26","Acidovorax sp. KKS102","Streptomyces vietnamensis","Streptomyces lydicus A02","Streptomyces cyaneogriseus subsp. noncyanogenus","Fermentimonas caenicola","Melissococcus plutonius DAT561","Planococcus sp. PAMC 21323","Burkholderia cepacia ATCC 25416","Cellulophaga algicola DSM 14237","Spiroplasma syrphidicola EA-1","[Polyangium] brachysporum","Carnobacterium maltaromaticum LMA28","Pseudomonas syringae CC1557","Pontibacter korlensis","Mycobacterium immunogenum","Acidovorax avenae subsp. avenae ATCC 19860","Pseudomonas cremoricolorata","Mycoplasma mobile 163K","Lactobacillus casei subsp. casei ATCC 393","Erwinia pyrifoliae Ep1/96","Sphingopyxis terrae NBRC 15098","Mycoplasma leachii PG50","Zymomonas mobilis subsp. mobilis ZM4 = ATCC 31821","Mycoplasma pneumoniae M129","Brevibacterium linens","Hymenobacter sp. DG25A","Vibrio anguillarum 775","Gluconobacter oxydans 621H","Rhizobium etli bv. mimosae str. Mim1","Mycoplasma mycoides subsp. capri str. GM12","Pediococcus damnosus","Mycobacterium tuberculosis CDC1551","Nocardia brasiliensis ATCC 700358","Saccharothrix espanaensis DSM 44229","Marinobacter adhaerens HP15","Mycoplasma genitalium G37","Belliella baltica DSM 15883","Spiroplasma sabaudiense Ar-1343","Spiroplasma apis B31","Burkholderia gladioli BSR3","Acinetobacter sp. TTH0-4","Mycoplasma mycoides subsp. mycoides SC str. PG1","Polaribacter sp. MED152","Myxococcus fulvus 124B02","Spiroplasma mirum ATCC 29335","Wigglesworthia glossinidia endosymbiont of Glossina brevipalpis","Collimonas arenae","Hymenobacter swuensis DY53","Streptomyces bingchenggensis BCW-1","Pseudoxanthomonas suwonensis","Alcanivorax pacificus W11-5","Salinispira pacifica","Mycoplasma arthritidis 158L3-1","Novosphingobium sp. PP1Y","Spiroplasma taiwanense CT-1","Burkholderia cenocepacia J2315","Burkholderia cenocepacia AU 1054","Spiroplasma diminutum CUAS-1","Spiroplasma cantharicola","Burkholderia lata","Chryseobacterium sp. StRB126","Fimbriimonas ginsengisoli Gsoil 348","Pseudomonas rhizosphaerae","Streptomyces clavuligerus","Borrelia turicatae 91E135","Borrelia hermsii CC1","Alteromonas macleodii str. 'Black Sea 11'","Borrelia burgdorferi B31","Borrelia afzelii PKo","Borrelia miyamotoi LB-2001","Pseudomonas alcaligenes","Rothia dentocariosa ATCC 17931","Acinetobacter johnsonii XBB1","Spiroplasma kunkelii CR2-3x","Mycoplasma capricolum subsp. capricolum ATCC 27343","Mycoplasma gallisepticum str. R(high)","Mycobacterium abscessus","Mycobacterium sp. VKM Ac-1817D","Mycoplasma crocodyli MP145","[Pseudomonas syringae] pv. tomato str. DC3000","Pseudomonas savastanoi pv. phaseolicola 1448A","Leuconostoc carnosum JB16","Borrelia duttonii Ly","Borreliella bissettii DN127","Algibacter alginolytica","Mycoplasma synoviae 53","Weissella koreensis KACC 15510","Burkholderia cepacia GG4","Acidovorax citrulli AAC00-1","Janthinobacterium agaricidamnosum NBRC 102515 = DSM 9628","Ornithobacterium rhinotracheale DSM 15997","Marivirga tractuosa DSM 4126","Mycoplasma yeatsii GM274B","Lactobacillus kunkeei","Mycoplasma canis","Luteipulveratus mongoliensis","Sphingopyxis fribergensis","Streptococcus sp. A12","Rhizobium sp. N324","Borreliella bavariensis PBi","Bordetella avium 197N","Neorhizobium galegae bv. officinalis bv. officinalis str. HAMBI 1141","Alteromonas naphthalenivorans","Streptococcus thermophilus LMG 18311","Ureaplasma parvum serovar 3 str. ATCC 700970","Ureaplasma urealyticum serovar 10 str. ATCC 33699","Leuconostoc gelidum subsp. gasicomitatum LMG 18811","Streptococcus lutetiensis 033","Candidatus Paracaedibacter acanthamoebae","Mesoplasma florum L1","Pseudoalteromonas sp. Bsw20308","Capnocytophaga ochracea DSM 7271","Borreliella valaisiana VS116","Mycoplasma flocculare ATCC 27399","Caulobacter crescentus CB15","Hymenobacter sp. APR13","Dyella thiooxydans","Sphingobium baderi","Lactobacillus helveticus DPC 4571","Spiroplasma culicicola AES-1","Tropheryma whipplei str. Twist","Pseudomonas syringae pv. syringae B728a","Pseudomonas cichorii JBC1","Pseudomonas antarctica","Colwellia psychrerythraea 34H","Novosphingobium aromaticivorans DSM 12444","Pseudonocardia sp. AL041005-10","Nitrosomonas sp. AL212","Kineococcus radiotolerans SRS30216 = ATCC BAA-149","Pseudomonas monteilii","Streptomyces venezuelae","Mycobacterium gilvum PYR-GCK","Mycoplasma bovoculi M165/69","Streptomyces griseus subsp. griseus NBRC 13350","Streptomyces globisporus C-1027","Sinorhizobium fredii NGR234","Pseudomonas poae RE*1-1-14","Bordetella holmesii F627","Lactobacillus rhamnosus GG","Lactobacillus paracasei ATCC 334","Streptomyces pratensis ATCC 33331","Shinella sp. HZN7","Mycoplasma agalactiae PG2","Mycoplasma bovis PG45","Halotalea alkalilenta","Komagataeibacter medellinensis NBRC 3288","Erysipelothrix rhusiopathiae str. Fujisawa","Sandaracinus amylolyticus","Deinococcus proteolyticus MRP","Lysobacter capsici","Stigmatella aurantiaca DW4/3-1","Sphingomonas sanxanigenens DSM 19645 = NX02","Acinetobacter baumannii ACICU","Erythrobacter litoralis HTCC2594","Rhodococcus sp. PBTS 2","Capnocytophaga canimorsus Cc5","Lactobacillus kefiranofaciens ZW3","Xylanimonas cellulosilytica DSM 15894","Sphingomonas sp. MM-1","Zymomonas mobilis subsp. pomaceae ATCC 29192","Planococcus halocryophilus","Rhizobium favelukesii","Mycoplasma putrefaciens KS1","Burkholderia thailandensis E264","Nonlabens sp. MIC269","Corynebacterium sp. ATCC 6931","Pseudoalteromonas sp. OCN003","Mycoplasma californicum","Paraburkholderia rhizoxinica HKI 454","Variovorax paradoxus EPS","Xanthomonas campestris pv. vesicatoria str. 85-10","Burkholderia dolosa AU0158","Idiomarina loihiensis L2TR","Gordonia sp. KTR9","Pseudomonas sp. L10.10","Burkholderia ubonensis MSMB22","Alteromonas stellipolaris LMG 21856","Jeotgalicoccus saudimassiliensis","Nocardia cyriacigeorgica GUH-2","Pediococcus pentosaceus ATCC 25745","Corynebacterium camporealensis","Acinetobacter pittii PHEA-2","Rhodococcus sp. B7740","Arthrobacter sp. FB24","Corynebacterium mustelae","Verminephrobacter eiseniae EF01-2","Simkania negevensis Z","Kitasatospora setae KM-6054","Mycoplasma hyorhinis HUB-1","Asticcacaulis excentricus CB 48","Clostridium bornimense","Thalassospira xiamenensis M-5 = DSM 17429","Owenweeksia hongkongensis DSM 17368","Burkholderia pseudomallei K96243","Corynebacterium epidermidicanis","Hirschia baltica ATCC 49814","Streptococcus gordonii str. Challis substr. CH1","Acinetobacter sp. ADP1","Streptococcus mitis B6","Devosia sp. A16","Variovorax paradoxus S110","Corynebacterium lactis RW2-5","Streptomyces sp. 4F","Paraglaciecola psychrophila 170","Jeotgalibacillus malaysiensis","Streptococcus pasteurianus ATCC 43144","Acholeplasma brassicae","Micavibrio aeruginosavorus ARL-13","Oenococcus oeni PSU-1","Sediminicola sp. YIK13","Leuconostoc citreum KM20","Lactobacillus sanfranciscensis TMW 1.1304","Streptococcus gallolyticus UCN34","Pseudomonas fluorescens SBW25","Muricauda lutaonensis","Wigglesworthia glossinidia endosymbiont of Glossina morsitans morsitans (Yale colony)","Halobacterium sp. DL1","Pusillimonas sp. T7-7","Burkholderia sp. CCGE1002","Corynebacterium deserti GIMN1.010","Brevundimonas naejangsanensis","Pseudoalteromonas rubra","Fluviicola taffensis DSM 16823","Streptococcus equi subsp. zooepidemicus MGCS10565","Lactobacillus acidophilus 30SC","Streptococcus suis GZ1","Pseudoalteromonas sp. SM9913","Streptococcus pneumoniae TIGR4","Lactobacillus gasseri ATCC 33323 = JCM 1131","Lactobacillus mucosae LM1","Weissella cibaria","Ketogulonicigenium vulgare Y25","Lactobacillus curvatus","Pseudoalteromonas phenolica","Aerococcus urinaeequi","Cellulophaga lytica DSM 7489","Legionella hackeliae","Pseudonocardia sp. HH130629-09","Pedobacter heparinus DSM 2366","Xanthomonas albilineans GPE PC73","Corynebacterium efficiens YS-314","Sphingomonas taxi","Streptococcus halotolerans","Nocardia farcinica IFM 10152","Pseudomonas fulva 12-X","Tsukamurella paurometabola DSM 20162","Streptococcus sp. I-P16","Collimonas fungivorans Ter331","Lactobacillus acetotolerans","Lactobacillus salivarius UCC118","Saprospira grandis str. Lewin","Lysobacter gummosus","Lactobacillus johnsonii NCC 533","Chryseobacterium sp. IHB B 17019","Streptomyces pristinaespiralis","Caulobacter segnis ATCC 21756","Xanthomonas campestris pv. campestris str. ATCC 33913","Pelagibacterium halotolerans B2","Streptococcus mutans UA159","Oenococcus kitaharae DSM 17330","Streptococcus infantarius subsp. infantarius CJ18","Nitrosomonas eutropha C91","Marinomonas mediterranea MMB-1","Pseudoalteromonas atlantica T6c","Dichelobacter nodosus VCS1703A","Streptococcus anginosus C1051","Amphibacillus xylanus NBRC 15112","Streptococcus parasanguinis ATCC 15912","Lactobacillus sp. wkB8","Paraburkholderia caribensis MBA4","Sphingobium sp. SYK-6","Arthrobacter alpinus","Legionella fallonii LLAP-10","Streptococcus sp. oral taxon 431","Ensifer adhaerens","Gemella sp. oral taxon 928","Dokdonia sp. MED134","Nonlabens dokdonensis DSW-6","Leuconostoc mesenteroides subsp. mesenteroides ATCC 8293","Leuconostoc kimchii IMSNU 11154","Muricauda ruestringensis DSM 13258","Rhizobium leguminosarum bv. trifolii WSM1689","Pediococcus claussenii ATCC BAA-344","Stenotrophomonas sp. KCTC 12332","Ottowia sp. oral taxon 894","Altererythrobacter atlanticus","Streptomyces glaucescens","Xanthomonas campestris","Bordetella pertussis B1917","Marinomonas sp. MWYL1","Brevundimonas sp. DS20","Lactobacillus delbrueckii subsp. bulgaricus ATCC BAA-365","Rhizobium sp. N1341","Xanthomonas translucens pv. undulosa","Streptococcus anginosus C238","Herbaspirillum hiltneri N3","Solibacillus silvestris StLB046","Arthrobacter sp. PAMC 25486","Weissella ceti","Salinarchaeum sp. Harcht-Bsk1","Actinotignum schaalii","Acholeplasma laidlawii PG-8A","Halobacteriovorax marinus SJ","Corynebacterium glutamicum R","Streptococcus dysgalactiae subsp. equisimilis GGS_124","Agrobacterium sp. H13-3","Rhizobium sp. IRBG74","Dokdonia sp. 4H-3-7-5","Xanthomonas sacchari","Agrobacterium fabrum str. C58","Croceibacter atlanticus HTCC2559","Winogradskyella sp. PG-2","Streptococcus sanguinis SK36","Nitrosomonas europaea ATCC 19718","Pseudohongiella spirulinae","Mycobacterium neoaurum VKM Ac-1815D","Streptococcus uberis 0140J","Marinomonas posidonica IVIA-Po-181","Streptococcus pyogenes M1 GAS","Aerococcus christensenii","Agrobacterium vitis S4","Streptococcus oralis Uo5","Kytococcus sedentarius DSM 20547","Lactobacillus acidophilus NCFM","Agrobacterium radiobacter K84","Pararhodospirillum photometricum DSM 122","Alteromonas macleodii ATCC 27126","Streptococcus cristatus AS 1.3089","Xanthomonas oryzae pv. oryzae KACC 10331","Pseudarthrobacter phenanthrenivorans Sphe3","Xanthomonas axonopodis pv. citri str. 306","Streptococcus parauberis NCFD 2020","Brevundimonas subvibrioides ATCC 15264","Streptococcus agalactiae 2603V/R","Caulobacter henricii","Rhizobium etli CIAT 652","Rhizobium leguminosarum bv. trifolii CB782","Corynebacterium ureicelerivorans","Streptococcus constellatus subsp. pharyngis C232","Kocuria palustris","Pseudoalteromonas haloplanktis TAC125","Lactobacillus buchneri NRRL B-30929","Amycolatopsis orientalis HCCB10007","Rhizobium leguminosarum bv. trifolii WSM2304","Isoptericola variabilis 225","Clavibacter michiganensis subsp. capsici","Lactobacillus heilongjiangensis","Aequorivita sublithincola DSM 14238","Lacinutrix sp. 5H-3-7-4","Glutamicibacter arilaitensis","Corynebacterium pseudotuberculosis FRC41","Zunongwangia profunda SM-A87","Exiguobacterium sibiricum 255-15","Exiguobacterium antarcticum B7","Exiguobacterium sp. MH3","Rhodoluna lacicola","Pseudoxanthomonas spadix BD-a59","Arthrobacter sp. A3","Sanguibacter keddieii DSM 10542","Gramella forsetii KT0803","Pseudomonas fragi","Aerococcus urinae ACS-120-V-Col10a","Aerococcus urinae","Altererythrobacter marensis","Lactobacillus brevis ATCC 367","Microbacterium sp. CGR1","Waddlia chondrophila WSU 86-1044","Corynebacterium ulcerans 809","Segniliparus rotundus DSM 44985","Microbacterium testaceum StLB037","Paenarthrobacter aurescens TC1","Arthrobacter sp. ATCC 21022","Citromicrobium sp. JL477","Streptococcus iniae","Corynebacterium callunae DSM 20147","Arthrobacter sp. ERGS1:01","Microbacterium chocolatum","Carnobacterium sp. CP1","Leifsonia xyli subsp. xyli str. CTCB07","Parvibaculum lavamentivorans DS-1","Corynebacterium terpenotabidum Y-11","Arthrobacter sp. IHBB 11108","Mycobacterium leprae Br4923","Aerococcus viridans","Corynebacterium variabile DSM 44702","Corynebacterium kroppenstedtii DSM 44385","Rathayibacter toxicus","Lactobacillus hokkaidonensis JCM 18461","Microbacterium sp. No. 7","Corynebacterium falsenii DSM 44353","Pseudarthrobacter chlorophenolicus A6","Carnobacterium sp. 17-4","Terribacillus aidingensis","Leifsonia xyli subsp. cynodontis DSM 46306","Corynebacterium jeikeium K411","Pseudarthrobacter sulfonivorans","Renibacterium salmoninarum ATCC 33209","Corynebacterium argentoratense DSM 44202","Corynebacterium humireducens NBRC 106098 = DSM 45392","Clavibacter michiganensis subsp. nebraskensis NCPPB 2581","Clavibacter michiganensis subsp. insidiosus","Clavibacter michiganensis subsp. sepedonicus","Microbacterium sp. PAMC 28756","Corynebacterium resistens DSM 45100","Leifsonia xyli","Corynebacterium glyciniphilum AJ 3170","Clavibacter michiganensis subsp. michiganensis NCPPB 382","Micrococcus luteus NCTC 2665"],[" Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Archaea"," Bacteria"," Bacteria"," Archaea"," Archaea"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Archaea"," Bacteria"," Archaea"," Archaea"," Bacteria"," Archaea"," Bacteria"," Archaea"," Archaea"," Archaea"," Bacteria"," Archaea"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Archaea"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Archaea"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Archaea"," Archaea"," Archaea"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Archaea"," Bacteria"," Bacteria"," Archaea"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Archaea"," Archaea"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Archaea"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Archaea"," Archaea"," Archaea"," Archaea"," Archaea"," Archaea"," Archaea"," Archaea"," Archaea"," Archaea"," Archaea"," Archaea"," Bacteria"," Archaea"," Archaea"," Archaea"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Archaea"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Archaea"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Archaea"," Bacteria"," Bacteria"," Archaea"," Archaea"," Archaea"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Archaea"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Archaea"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Archaea"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Archaea"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"," Bacteria"],[" Firmicutes"," Euryarchaeota"," Firmicutes"," Chlorobi"," Chlorobi"," Chlorobi"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Chlorobi"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Thermodesulfobacteria"," Proteobacteria"," Nitrospirae"," Thermodesulfobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Thermodesulfobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Firmicutes"," Aquificae"," Proteobacteria"," Crenarchaeota"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Crenarchaeota"," Proteobacteria"," Aquificae"," Firmicutes"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Firmicutes"," Proteobacteria"," Proteobacteria"," Aquificae"," Proteobacteria"," Proteobacteria"," Crenarchaeota"," Chlorobi"," Firmicutes"," Firmicutes"," Firmicutes"," Chlorobi"," Proteobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Crenarchaeota"," Euryarchaeota"," Aquificae"," Firmicutes"," Crenarchaeota"," Euryarchaeota"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Chlorobi"," Euryarchaeota"," Crenarchaeota"," Chlorobi"," Euryarchaeota"," Euryarchaeota"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Euryarchaeota"," Crenarchaeota"," Euryarchaeota"," Chlorobi"," Euryarchaeota"," Euryarchaeota"," Aquificae"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Euryarchaeota"," Aquificae"," Crenarchaeota"," Aquificae"," Euryarchaeota"," Chlorobi"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Aquificae"," Euryarchaeota"," Crenarchaeota"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Crenarchaeota"," Euryarchaeota"," Crenarchaeota"," Crenarchaeota"," Euryarchaeota"," Aquificae"," Aquificae"," Proteobacteria"," Crenarchaeota"," Chlorobi"," Proteobacteria"," Crenarchaeota"," Proteobacteria"," Proteobacteria"," Crenarchaeota"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Euryarchaeota"," Thermotogae"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Chloroflexi"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Chloroflexi"," Euryarchaeota"," Chloroflexi"," Euryarchaeota"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Firmicutes"," Euryarchaeota"," Proteobacteria"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Crenarchaeota"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Actinobacteria"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Chloroflexi"," Euryarchaeota"," Proteobacteria"," Euryarchaeota"," Chloroflexi"," Proteobacteria"," Euryarchaeota"," Deferribacteres"," Euryarchaeota"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Euryarchaeota"," Euryarchaeota"," Proteobacteria"," Euryarchaeota"," Chloroflexi"," Proteobacteria"," Euryarchaeota"," Synergistetes"," Euryarchaeota"," Proteobacteria"," Euryarchaeota"," Firmicutes"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Deinococcus-Thermus"," Actinobacteria"," Chloroflexi"," Chloroflexi"," Bacteroidetes"," Euryarchaeota"," Firmicutes"," Proteobacteria"," Firmicutes"," Crenarchaeota"," Euryarchaeota"," Euryarchaeota"," Proteobacteria"," Firmicutes"," Euryarchaeota"," Deinococcus-Thermus"," Euryarchaeota"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Crenarchaeota"," Deinococcus-Thermus"," Firmicutes"," Euryarchaeota"," Deferribacteres"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Candidatus Korarchaeota"," Proteobacteria"," Proteobacteria"," Crenarchaeota"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Crenarchaeota"," Crenarchaeota"," Euryarchaeota"," Deinococcus-Thermus"," Firmicutes"," Actinobacteria"," Euryarchaeota"," Firmicutes"," Euryarchaeota"," Proteobacteria"," Verrucomicrobia"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Crenarchaeota"," Verrucomicrobia"," Euryarchaeota"," Proteobacteria"," Deinococcus-Thermus"," Chloroflexi"," Deferribacteres"," Deinococcus-Thermus"," Euryarchaeota"," Euryarchaeota"," Crenarchaeota"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Deferribacteres"," Proteobacteria"," Firmicutes"," Cyanobacteria"," Proteobacteria"," Firmicutes"," Euryarchaeota"," Euryarchaeota"," Firmicutes"," Firmicutes"," Proteobacteria"," Planctomycetes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Cyanobacteria"," Firmicutes"," Firmicutes"," Firmicutes"," Deinococcus-Thermus"," Crenarchaeota"," Firmicutes"," Chrysiogenetes"," Crenarchaeota"," Firmicutes"," Nitrospirae"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Euryarchaeota"," Cyanobacteria"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Planctomycetes"," Proteobacteria"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Firmicutes"," Nitrospirae"," Cyanobacteria"," Firmicutes"," Thermotogae"," Chloroflexi"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Euryarchaeota"," Firmicutes"," Proteobacteria"," Planctomycetes"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Firmicutes"," Proteobacteria"," Actinobacteria"," Euryarchaeota"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Dictyoglomi"," Proteobacteria"," Synergistetes"," Proteobacteria"," Firmicutes"," Crenarchaeota"," Cyanobacteria"," Euryarchaeota"," Proteobacteria"," Thermotogae"," Euryarchaeota"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Cyanobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Acidobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria","0"," Firmicutes"," Cyanobacteria"," Proteobacteria"," Dictyoglomi"," Firmicutes"," Proteobacteria"," Crenarchaeota"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Cyanobacteria"," Cyanobacteria"," Cyanobacteria"," Proteobacteria"," Crenarchaeota"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Thermotogae"," Firmicutes"," Nitrospirae"," Firmicutes"," Thermotogae"," Firmicutes"," Firmicutes"," Cyanobacteria"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Firmicutes"," Actinobacteria"," Cyanobacteria"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Firmicutes"," Euryarchaeota"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Thermotogae"," Proteobacteria"," Caldiserica"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Cyanobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Synergistetes"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Synergistetes"," Actinobacteria"," Thaumarchaeota"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Firmicutes"," Thermobaculum"," Actinobacteria"," Cyanobacteria"," Firmicutes"," Thaumarchaeota"," Cyanobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Firmicutes"," Cyanobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Cyanobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Cyanobacteria"," Cyanobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Cyanobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Firmicutes"," Thaumarchaeota"," Cyanobacteria"," Ignavibacteriae"," Proteobacteria"," Proteobacteria"," Fusobacteria"," Proteobacteria"," Thermotogae"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Actinobacteria"," Cyanobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Firmicutes"," Firmicutes"," Thermotogae"," Proteobacteria"," Cyanobacteria"," Cyanobacteria"," Firmicutes"," Firmicutes"," Cyanobacteria"," Cyanobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Cyanobacteria"," Thermotogae"," Elusimicrobia"," Proteobacteria"," Firmicutes"," Proteobacteria"," Ignavibacteriae"," Thaumarchaeota"," Actinobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Cyanobacteria"," Cyanobacteria"," Proteobacteria"," Firmicutes"," Acidobacteria"," Proteobacteria"," Cyanobacteria"," Spirochaetes"," Cyanobacteria"," Cyanobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Verrucomicrobia"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Cyanobacteria"," Euryarchaeota"," Firmicutes"," Firmicutes"," Nitrospirae"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Cyanobacteria"," Cyanobacteria"," Firmicutes"," Thermotogae"," Proteobacteria"," Cyanobacteria"," Spirochaetes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Actinobacteria"," Firmicutes"," Actinobacteria"," Firmicutes"," Firmicutes"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Actinobacteria"," Planctomycetes"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Euryarchaeota"," Firmicutes"," Actinobacteria"," Fusobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Deinococcus-Thermus"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Euryarchaeota"," Euryarchaeota"," Euryarchaeota"," Actinobacteria"," Actinobacteria"," Deinococcus-Thermus"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Firmicutes"," Cyanobacteria"," Proteobacteria"," Spirochaetes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Acidobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Thermotogae"," Firmicutes"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Firmicutes"," Verrucomicrobia"," Proteobacteria"," Firmicutes"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Cyanobacteria"," Chloroflexi"," Proteobacteria"," Proteobacteria"," Acidobacteria"," Bacteroidetes"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Chloroflexi"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Acidobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Euryarchaeota"," Proteobacteria"," Firmicutes"," Proteobacteria"," Actinobacteria"," Spirochaetes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Firmicutes"," Bacteroidetes"," Thermotogae"," Cyanobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Elusimicrobia"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Verrucomicrobia"," Proteobacteria"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Cyanobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Spirochaetes"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Cyanobacteria"," Firmicutes"," Cyanobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Cyanobacteria"," Firmicutes"," Proteobacteria"," Bacteroidetes"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Firmicutes"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Cyanobacteria"," Actinobacteria"," Firmicutes"," Actinobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Verrucomicrobia"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Cyanobacteria"," Firmicutes"," Actinobacteria"," Acidobacteria"," Deinococcus-Thermus"," Firmicutes"," Nitrospirae"," Euryarchaeota"," Firmicutes"," Euryarchaeota"," Proteobacteria"," Acidobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Euryarchaeota"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Deinococcus-Thermus"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Deinococcus-Thermus"," Proteobacteria"," Firmicutes"," Cyanobacteria"," Actinobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Actinobacteria"," Bacteroidetes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Thermotogae"," Thermotogae"," Firmicutes"," Firmicutes"," Proteobacteria"," Actinobacteria"," Deinococcus-Thermus"," Proteobacteria"," Proteobacteria"," Acidobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Firmicutes"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Deinococcus-Thermus"," Actinobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Gemmatimonadetes"," Proteobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Firmicutes"," Bacteroidetes"," Cloacimonetes"," Actinobacteria"," Proteobacteria"," Spirochaetes"," Bacteroidetes"," Proteobacteria"," Firmicutes"," Euryarchaeota"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Spirochaetes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Spirochaetes"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Cyanobacteria"," Firmicutes"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Bacteroidetes"," Firmicutes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Cyanobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Bacteroidetes"," Deinococcus-Thermus"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Deinococcus-Thermus"," Spirochaetes"," Proteobacteria"," Actinobacteria"," Firmicutes"," Thermotogae"," Thermotogae"," Proteobacteria"," Bacteroidetes"," Cyanobacteria"," Actinobacteria"," Spirochaetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Thermotogae"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Chlamydiae"," Actinobacteria"," Fusobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Verrucomicrobia"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Deinococcus-Thermus"," Proteobacteria"," Firmicutes"," Firmicutes"," Spirochaetes"," Firmicutes"," Firmicutes"," Actinobacteria"," Proteobacteria"," Bacteroidetes"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Spirochaetes"," Actinobacteria"," Proteobacteria"," Fusobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Deinococcus-Thermus"," Firmicutes"," Proteobacteria"," Actinobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Deinococcus-Thermus"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Thermotogae"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Deinococcus-Thermus"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Spirochaetes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Planctomycetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Fusobacteria"," Spirochaetes"," Proteobacteria"," Fusobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Firmicutes"," Firmicutes"," Firmicutes"," Proteobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Spirochaetes"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Bacteroidetes"," Actinobacteria"," Fusobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Tenericutes"," Bacteroidetes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Bacteroidetes"," Bacteroidetes"," Bacteroidetes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Euryarchaeota"," Actinobacteria"," Fibrobacteres"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Deinococcus-Thermus"," Spirochaetes"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Spirochaetes"," Firmicutes"," Planctomycetes"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Bacteroidetes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Actinobacteria"," Firmicutes"," Bacteroidetes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Thermotogae"," Spirochaetes"," Bacteroidetes"," Proteobacteria"," Spirochaetes"," Actinobacteria"," Firmicutes"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Chlamydiae"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Firmicutes"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Spirochaetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Firmicutes"," Proteobacteria"," Bacteroidetes"," Spirochaetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Spirochaetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Verrucomicrobia"," Proteobacteria"," Proteobacteria"," Tenericutes"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Tenericutes"," Firmicutes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Firmicutes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Verrucomicrobia"," Proteobacteria"," Tenericutes"," Bacteroidetes"," Spirochaetes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Spirochaetes"," Bacteroidetes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Fusobacteria"," Proteobacteria"," Actinobacteria"," Firmicutes"," Verrucomicrobia"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Actinobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Tenericutes"," Proteobacteria"," Bacteroidetes"," Actinobacteria"," Firmicutes"," Actinobacteria"," Firmicutes"," Euryarchaeota"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Tenericutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Firmicutes"," Actinobacteria"," Bacteroidetes"," Proteobacteria"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Spirochaetes"," Tenericutes"," Tenericutes"," Tenericutes"," Tenericutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Bacteroidetes"," Proteobacteria"," Tenericutes"," Tenericutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Bacteroidetes"," Firmicutes"," Firmicutes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Tenericutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Fusobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Bacteroidetes"," Proteobacteria"," Bacteroidetes"," Firmicutes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Tenericutes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Tenericutes"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Bacteroidetes"," Bacteroidetes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Bacteroidetes"," Proteobacteria"," Tenericutes"," Tenericutes"," Tenericutes"," Tenericutes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Fusobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Chlamydiae"," Firmicutes"," Proteobacteria"," Proteobacteria"," Spirochaetes"," Proteobacteria"," Bacteroidetes"," Fusobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Chlamydiae"," Chlamydiae"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Tenericutes"," Chlamydiae"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Bacteroidetes"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Tenericutes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Tenericutes"," Firmicutes"," Chlamydiae"," Chlamydiae"," Proteobacteria"," Actinobacteria"," Firmicutes"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Bacteroidetes"," Tenericutes"," Chlamydiae"," Chlamydiae"," Chlamydiae"," Chlamydiae"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Bacteroidetes"," Firmicutes"," Firmicutes"," Proteobacteria"," Bacteroidetes"," Tenericutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Tenericutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Tenericutes"," Proteobacteria"," Tenericutes"," Actinobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Tenericutes"," Firmicutes"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Tenericutes"," Bacteroidetes"," Tenericutes"," Tenericutes"," Proteobacteria"," Proteobacteria"," Tenericutes"," Bacteroidetes"," Proteobacteria"," Tenericutes"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Spirochaetes"," Tenericutes"," Proteobacteria"," Tenericutes"," Proteobacteria"," Proteobacteria"," Tenericutes"," Tenericutes"," Proteobacteria"," Bacteroidetes"," Armatimonadetes"," Proteobacteria"," Actinobacteria"," Spirochaetes"," Spirochaetes"," Proteobacteria"," Spirochaetes"," Spirochaetes"," Spirochaetes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Tenericutes"," Tenericutes"," Tenericutes"," Actinobacteria"," Actinobacteria"," Tenericutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Spirochaetes"," Spirochaetes"," Bacteroidetes"," Tenericutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Bacteroidetes"," Tenericutes"," Firmicutes"," Tenericutes"," Actinobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Spirochaetes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Tenericutes"," Tenericutes"," Firmicutes"," Firmicutes"," Proteobacteria"," Tenericutes"," Proteobacteria"," Bacteroidetes"," Spirochaetes"," Tenericutes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Tenericutes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Tenericutes"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Actinobacteria"," Proteobacteria"," Tenericutes"," Tenericutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Deinococcus-Thermus"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Bacteroidetes"," Firmicutes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Tenericutes"," Proteobacteria"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Tenericutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Chlamydiae"," Actinobacteria"," Tenericutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Tenericutes"," Proteobacteria"," Firmicutes"," Bacteroidetes"," Firmicutes"," Firmicutes"," Firmicutes"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Euryarchaeota"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Firmicutes"," Firmicutes"," Firmicutes"," Proteobacteria"," Firmicutes"," Firmicutes"," Firmicutes"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Bacteroidetes"," Proteobacteria"," Actinobacteria"," Bacteroidetes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Firmicutes"," Bacteroidetes"," Proteobacteria"," Firmicutes"," Bacteroidetes"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Firmicutes"," Firmicutes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Bacteroidetes"," Bacteroidetes"," Firmicutes"," Firmicutes"," Bacteroidetes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Actinobacteria"," Firmicutes"," Euryarchaeota"," Actinobacteria"," Tenericutes"," Proteobacteria"," Actinobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Proteobacteria"," Proteobacteria"," Bacteroidetes"," Bacteroidetes"," Firmicutes"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Firmicutes"," Actinobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Proteobacteria"," Firmicutes"," Proteobacteria"," Proteobacteria"," Proteobacteria"," Actinobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Firmicutes"," Bacteroidetes"," Bacteroidetes"," Actinobacteria"," Actinobacteria"," Bacteroidetes"," Firmicutes"," Firmicutes"," Firmicutes"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Bacteroidetes"," Proteobacteria"," Firmicutes"," Firmicutes"," Proteobacteria"," Firmicutes"," Actinobacteria"," Chlamydiae"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Proteobacteria"," Firmicutes"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Firmicutes"," Actinobacteria"," Proteobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Firmicutes"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Firmicutes"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Firmicutes"," Firmicutes"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"," Actinobacteria"],[" Clostridia"," Archaeoglobi"," Clostridia"," Chlorobia"," Chlorobia"," Chlorobia"," Betaproteobacteria"," Deltaproteobacteria"," Deltaproteobacteria"," Deltaproteobacteria"," Chlorobia"," Gammaproteobacteria"," Deltaproteobacteria"," Deltaproteobacteria"," Deltaproteobacteria"," Deltaproteobacteria"," Deltaproteobacteria"," Archaeoglobi"," Thermodesulfobacteriales"," Gammaproteobacteria"," Nitrospirales"," Thermodesulfobacteriales"," Clostridia"," Gammaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Deltaproteobacteria"," Deltaproteobacteria"," Thermodesulfobacteriales"," Deltaproteobacteria"," Deltaproteobacteria"," Deltaproteobacteria"," Gammaproteobacteria"," Deltaproteobacteria"," Gammaproteobacteria"," Archaeoglobi"," Deltaproteobacteria"," Clostridia"," Aquificales"," Deltaproteobacteria"," Thermoprotei"," Gammaproteobacteria"," Gammaproteobacteria"," Clostridia"," Deltaproteobacteria"," Gammaproteobacteria"," Thermoprotei"," Gammaproteobacteria"," Aquificales"," Clostridia"," Deltaproteobacteria"," Alphaproteobacteria"," Archaeoglobi"," Clostridia"," Deltaproteobacteria"," Deltaproteobacteria"," Aquificales"," Deltaproteobacteria"," Deltaproteobacteria"," Thermoprotei"," Chlorobia"," Clostridia"," Clostridia"," Clostridia"," Chlorobia"," Gammaproteobacteria"," Clostridia"," Clostridia"," Gammaproteobacteria"," Thermoprotei"," Methanococci"," Desulfurobacteriales"," Clostridia"," Thermoprotei"," Thermococci"," Archaeoglobi"," Epsilonproteobacteria"," Gammaproteobacteria"," Clostridia"," Betaproteobacteria"," Betaproteobacteria"," Chlorobia"," Thermococci"," Thermoprotei"," Chlorobia"," Thermococci"," Thermococci"," Deltaproteobacteria"," Thermococci"," Epsilonproteobacteria"," DHVE2 group"," Thermoprotei"," Thermococci"," Chlorobia"," Archaeoglobi"," Methanococci"," Aquificales"," Thermococci"," Deltaproteobacteria"," Epsilonproteobacteria"," Methanococci"," Archaeoglobi"," Aquificales"," Thermoprotei"," Desulfurobacteriales"," Thermococci"," Chlorobia"," Thermococci"," Acidithiobacillia"," Epsilonproteobacteria"," Methanomicrobia"," Aquificales"," Thermococci"," Thermoprotei"," Thermococci"," Epsilonproteobacteria"," Acidithiobacillia"," Epsilonproteobacteria"," Gammaproteobacteria"," Methanomicrobia"," Epsilonproteobacteria"," Thermoprotei"," Methanococci"," Thermoprotei"," Thermoprotei"," Methanomicrobia"," Aquificales"," Aquificales"," Epsilonproteobacteria"," Thermoprotei"," Chlorobia"," Alphaproteobacteria"," Thermoprotei"," Epsilonproteobacteria"," Epsilonproteobacteria"," Thermoprotei"," Epsilonproteobacteria"," Epsilonproteobacteria"," Coriobacteriia"," Acidithiobacillia"," Deltaproteobacteria"," Methanomicrobia"," Methanococci"," Alphaproteobacteria"," Deltaproteobacteria"," Methanomicrobia"," Methanobacteria"," Petrotogales"," Epsilonproteobacteria"," Methanococci"," Deltaproteobacteria"," Epsilonproteobacteria"," Chloroflexia"," Methanococci"," Methanomicrobia"," Methanobacteria"," Methanobacteria"," Epsilonproteobacteria"," Epsilonproteobacteria"," Thermococci"," Chloroflexia"," Methanomicrobia"," Caldilineae"," Methanococci"," Methanococci"," Alphaproteobacteria"," Deltaproteobacteria"," Clostridia"," Methanobacteria"," Epsilonproteobacteria"," DHVE2 group"," Methanobacteria"," Thermococci"," Methanococci"," Methanomicrobia"," Thermococci"," Thermococci"," Methanococci"," Thermoprotei"," Thermococci"," Methanobacteria"," Methanomicrobia"," Methanomicrobia"," Coriobacteriia"," Methanococci"," Methanococci"," Methanomicrobia"," Dehalococcoidia"," Thermococci"," Epsilonproteobacteria"," Thermococci"," Dehalococcoidia"," Epsilonproteobacteria"," Methanomicrobia"," Deferribacterales"," Methanobacteria"," Deltaproteobacteria"," Thermococci"," Deltaproteobacteria"," Methanomicrobia"," Methanomicrobia"," Gammaproteobacteria"," Methanomicrobia"," Dehalococcoidia"," Gammaproteobacteria"," Methanomicrobia"," Synergistia"," Methanomicrobia"," Epsilonproteobacteria"," Thermococci"," Clostridia"," Deltaproteobacteria"," Deltaproteobacteria"," Methanomicrobia"," Methanomicrobia"," Epsilonproteobacteria"," Deltaproteobacteria"," Methanobacteria"," Deinococci"," Coriobacteriia"," Chloroflexia"," Chloroflexia"," Bacteroidetes Order II. Incertae sedis"," Methanomicrobia"," Clostridia"," Epsilonproteobacteria"," Clostridia"," Thermoprotei"," Methanobacteria"," Methanobacteria"," Deltaproteobacteria"," Clostridia"," Methanobacteria"," Deinococci"," Methanobacteria"," Methanomicrobia"," Epsilonproteobacteria"," Alphaproteobacteria"," Thermoprotei"," Deinococci"," Clostridia"," Methanomicrobia"," Deferribacterales"," Methanomicrobia"," Deltaproteobacteria"," Epsilonproteobacteria"," Candidatus Korarchaeum"," Deltaproteobacteria"," Gammaproteobacteria"," Thermoprotei"," Methanomicrobia"," Deltaproteobacteria"," Gammaproteobacteria"," Methanomicrobia"," Thermoprotei"," Thermoprotei"," Thermococci"," Deinococci"," Clostridia"," Coriobacteriia"," Methanobacteria"," Clostridia"," Methanomicrobia"," Epsilonproteobacteria"," unclassified Verrucomicrobia"," Coriobacteriia"," Gammaproteobacteria"," Deltaproteobacteria"," Coriobacteriia"," Deltaproteobacteria"," Thermoprotei"," unclassified Verrucomicrobia"," Thermoplasmata"," Deltaproteobacteria"," Deinococci"," Anaerolineae"," Deferribacterales"," Deinococci"," Methanococci"," Methanococci"," Thermoprotei"," Alphaproteobacteria"," Deltaproteobacteria"," Oscillatoriophycideae"," Clostridia"," Clostridia"," Betaproteobacteria"," Gammaproteobacteria"," Deferribacterales"," Epsilonproteobacteria"," Clostridia"," Oscillatoriophycideae"," Epsilonproteobacteria"," Clostridia"," Methanomicrobia"," Thermoplasmata"," Clostridia"," Clostridia"," Gammaproteobacteria"," Planctomycetia"," Actinomycetales"," Gammaproteobacteria"," Alphaproteobacteria"," Bacilli"," Epsilonproteobacteria"," Bacilli","0"," Clostridia"," Clostridia"," Clostridia"," Deinococci"," Thermoprotei"," Negativicutes"," Chrysiogenales"," Thermoprotei"," Negativicutes"," Nitrospirales"," Clostridia"," Epsilonproteobacteria"," Epsilonproteobacteria"," Epsilonproteobacteria"," Thermoplasmata"," Epsilonproteobacteria"," Methanomicrobia"," Oscillatoriophycideae"," Deltaproteobacteria"," Nostocales"," Gammaproteobacteria"," Planctomycetia"," Epsilonproteobacteria"," Halobacteria"," Methanomicrobia"," Thermoplasmata"," Gammaproteobacteria"," Bacilli"," Alphaproteobacteria"," Clostridia"," Negativicutes"," Nitrospirales"," Oscillatoriophycideae"," Bacilli"," Petrotogales"," Dehalococcoidia"," Gammaproteobacteria"," Gammaproteobacteria"," Nostocales"," Methanomicrobia"," Clostridia"," Deltaproteobacteria"," Planctomycetia"," Deltaproteobacteria"," Epsilonproteobacteria"," Methanomicrobia"," Clostridia"," Gammaproteobacteria"," Rubrobacteria"," Methanomicrobia"," Corynebacteriales"," Epsilonproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Dictyoglomales"," Gammaproteobacteria"," Synergistia"," Deltaproteobacteria"," Clostridia"," Thermoprotei"," Oscillatoriophycideae"," Thermoplasmata"," Gammaproteobacteria"," Kosmotogales"," Thermoplasmata"," Negativicutes"," Clostridia"," Gammaproteobacteria"," Gammaproteobacteria"," Streptosporangiales"," Oscillatoriophycideae"," Pseudonocardiales"," Epsilonproteobacteria"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Acidobacteriales"," Epsilonproteobacteria"," Gammaproteobacteria"," Clostridia"," Alphaproteobacteria"," Gammaproteobacteria","0"," Bacilli"," Oscillatoriophycideae"," Betaproteobacteria"," Dictyoglomales"," Negativicutes"," Betaproteobacteria"," Thermoprotei"," Bacilli"," Clostridia"," Alphaproteobacteria"," Gammaproteobacteria"," Streptosporangiales"," Oscillatoriophycideae"," Oscillatoriophycideae"," Oscillatoriophycideae"," Alphaproteobacteria"," Thermoprotei"," Pleurocapsales"," Epsilonproteobacteria"," Betaproteobacteria"," Bacilli"," Gammaproteobacteria"," Kosmotogales"," Bacilli"," Nitrospirales"," Clostridia"," Thermotogales"," Bacilli"," Negativicutes"," Oscillatoriophycideae"," Oscillatoriophycideae"," Gammaproteobacteria"," Gammaproteobacteria"," Rubrobacteria"," Clostridia"," Glycomycetales"," Oscillatoriophycideae"," Gammaproteobacteria"," Nostocales"," Gammaproteobacteria"," Clostridia"," Halobacteria"," Oscillatoriophycideae"," Betaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Oscillatoriophycideae"," Gammaproteobacteria"," Alphaproteobacteria"," Bacilli"," Epsilonproteobacteria"," Gammaproteobacteria"," Epsilonproteobacteria"," Betaproteobacteria"," Oscillatoriophycideae"," Alphaproteobacteria"," Clostridia"," Alphaproteobacteria"," Betaproteobacteria"," Thermotogales"," Betaproteobacteria"," Caldisericia"," Gammaproteobacteria"," Nostocales"," Gammaproteobacteria"," Nostocales"," Clostridia"," Clostridia"," Epsilonproteobacteria"," Betaproteobacteria"," Synergistia"," Stigonematales"," Deltaproteobacteria"," Gammaproteobacteria"," Streptosporangiales"," Gammaproteobacteria"," Clostridia"," Clostridia"," Synergistia"," Micrococcales"," Nitrosopumilales"," Betaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Clostridia"," Clostridia"," Clostridia","0"," Acidothermales"," Oscillatoriophycideae"," Clostridia"," unclassified Thaumarchaeota"," Nostocales"," Corynebacteriales"," Gammaproteobacteria"," Gammaproteobacteria"," Nostocales"," Gammaproteobacteria"," Clostridia"," Nostocales"," Epsilonproteobacteria"," Bacilli"," Bacilli"," Nostocales"," Clostridia"," Bacilli"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Epsilonproteobacteria"," Oscillatoriophycideae"," Gammaproteobacteria"," Gammaproteobacteria"," Corynebacteriales"," Alphaproteobacteria"," Bacilli"," Pleurocapsales"," Oscillatoriophycideae"," Gammaproteobacteria"," Bacilli"," Bacilli"," Oscillatoriophycideae"," Bacilli"," Gammaproteobacteria"," Betaproteobacteria"," Nostocales"," Bacilli"," unclassified Thaumarchaeota"," Nostocales"," Ignavibacteria"," Epsilonproteobacteria"," Betaproteobacteria"," Fusobacteriales"," Gammaproteobacteria"," Thermotogales"," Bacilli"," Clostridia"," Gammaproteobacteria"," Gammaproteobacteria"," Clostridia"," Alphaproteobacteria"," Streptomycetales"," Oscillatoriophycideae"," Gammaproteobacteria"," Bacteroidia"," Gammaproteobacteria"," Clostridia"," Bacilli"," Thermotogales"," Alphaproteobacteria"," Prochlorales"," Prochlorales"," Bacilli"," Bacilli"," Oscillatoriophycideae"," Oscillatoriophycideae"," Alphaproteobacteria"," Corynebacteriales"," Gammaproteobacteria"," Bacilli"," Nostocales"," Thermotogales"," Endomicrobia"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Ignavibacteria"," Nitrosopumilales"," Corynebacteriales"," Bacilli"," Alphaproteobacteria"," Gammaproteobacteria"," Corynebacteriales"," Prochlorales"," Prochlorales"," Gammaproteobacteria"," Bacilli"," Acidobacteriales"," Gammaproteobacteria"," Oscillatoriophycideae"," Spirochaetales"," Oscillatoriophycideae"," Prochlorales"," Bacilli"," Gammaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Opitutae"," Gammaproteobacteria"," Halobacteria"," Gammaproteobacteria"," Oscillatoriophycideae"," Halobacteria"," Bacilli"," Bacilli"," Nitrospirales"," Clostridia"," Gammaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Prochlorales"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Micromonosporales"," Alphaproteobacteria"," Gammaproteobacteria"," Bacilli"," Betaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Streptosporangiales"," Gammaproteobacteria"," Oscillatoriophycideae"," Gloeobacteria"," Bacilli"," Thermotogales"," Gammaproteobacteria"," Oscillatoriophycideae"," Spirochaetales"," Gammaproteobacteria"," Gammaproteobacteria"," Propionibacteriales"," Alphaproteobacteria"," Clostridia"," Alphaproteobacteria"," Epsilonproteobacteria"," Epsilonproteobacteria"," Gammaproteobacteria"," Clostridia"," Alphaproteobacteria"," Streptomycetales"," Bacilli"," Streptomycetales"," Bacilli"," Bacilli"," Halobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Oscillatoriophycideae"," Alphaproteobacteria"," Corynebacteriales"," Planctomycetia"," Betaproteobacteria"," Oscillatoriophycideae"," Gammaproteobacteria"," Halobacteria"," Bacilli"," Corynebacteriales"," Fusobacteriales"," Alphaproteobacteria"," Gammaproteobacteria"," Clostridia"," Actinobacteria incertae sedis"," Alphaproteobacteria"," Deinococci"," Bacilli"," Gammaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Bacilli"," Halobacteria"," Halobacteria"," Halobacteria"," Micromonosporales"," Micromonosporales"," Deinococci"," Gammaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Bacilli"," Bacilli"," Bacilli"," Oscillatoriophycideae"," Alphaproteobacteria"," Spirochaetales"," Gammaproteobacteria"," Gammaproteobacteria"," Clostridia"," Oscillatoriophycideae"," Gammaproteobacteria"," Gammaproteobacteria"," Propionibacteriales"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Alphaproteobacteria"," Bacilli"," Gammaproteobacteria"," Gammaproteobacteria"," Acidobacteriales"," Bacilli"," Alphaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Clostridia"," Bacilli"," Bacilli"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Frankiales"," Alphaproteobacteria"," Clostridia"," Gammaproteobacteria"," Alphaproteobacteria"," Epsilonproteobacteria"," Bacilli"," Gammaproteobacteria"," Gammaproteobacteria"," Bacilli"," Petrotogales"," Bacilli"," Gammaproteobacteria"," Gloeobacteria"," Betaproteobacteria"," Clostridia"," Verrucomicrobiae"," Gammaproteobacteria"," Bacilli"," Pleurocapsales"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Clostridia"," Gammaproteobacteria"," Halobacteria"," Alphaproteobacteria"," Oscillatoriophycideae"," Sphaerobacteridae"," Gammaproteobacteria"," Betaproteobacteria"," Acidobacteriales"," Bacteroidia"," Bacilli"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Clostridia"," Gammaproteobacteria"," Betaproteobacteria"," Epsilonproteobacteria"," Thermomicrobiales"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Acidobacteriales"," Alphaproteobacteria"," Clostridia"," Gammaproteobacteria"," Gammaproteobacteria"," Micromonosporales"," Thermoplasmata"," Gammaproteobacteria"," Clostridia"," Epsilonproteobacteria"," Pseudonocardiales"," Spirochaetales"," Gammaproteobacteria"," Gammaproteobacteria"," Frankiales"," Propionibacteriales"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Prochlorales"," Prochlorales"," Gammaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Clostridia"," Gammaproteobacteria"," Alphaproteobacteria"," Clostridia"," Clostridia"," Gammaproteobacteria"," Clostridia"," Cytophagia"," Kosmotogales"," Oscillatoriophycideae"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Gammaproteobacteria"," Elusimicrobia"," Alphaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Opitutae"," Alphaproteobacteria"," Oscillatoriophycideae"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Nakamurellales"," Gammaproteobacteria"," Micromonosporales"," Gammaproteobacteria"," Oscillatoriophycideae"," Corynebacteriales"," Gammaproteobacteria"," Gammaproteobacteria"," Bacilli"," Bacilli"," Spirochaetales"," Geodermatophilales"," Micromonosporales"," Micromonosporales"," Prochlorales"," Clostridia"," Prochlorales"," Gammaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Bacilli"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Deltaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Clostridia"," Gammaproteobacteria"," Corynebacteriales"," Gammaproteobacteria"," Alphaproteobacteria"," Clostridia"," Gammaproteobacteria"," Oscillatoriophycideae"," Clostridia"," Gammaproteobacteria"," Bacteroidia"," Halobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Bacilli"," Halobacteria"," Alphaproteobacteria"," Deltaproteobacteria"," Gammaproteobacteria"," Bacilli"," Prochlorales"," Micromonosporales"," Bacilli"," Pseudonocardiales"," Bacilli"," Alphaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Clostridia"," Gammaproteobacteria"," Gammaproteobacteria"," Bacilli"," Streptosporangiales"," Betaproteobacteria"," Gammaproteobacteria"," Pseudonocardiales"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Gammaproteobacteria"," Halobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Oscillatoriophycideae"," unclassified Verrucomicrobia"," Actinomycetales"," Alphaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Oscillatoriophycideae"," Clostridia"," Corynebacteriales"," Blastocatellia"," Deinococci"," Clostridia"," Nitrospirales"," Halobacteria"," Bacilli"," Halobacteria"," Alphaproteobacteria"," Solibacteres"," Alphaproteobacteria"," Corynebacteriales"," Gammaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Bacilli"," Halobacteria"," Acidimicrobiia"," Alphaproteobacteria"," Alphaproteobacteria"," Betaproteobacteria"," Clostridia"," Deinococci"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Halobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Corynebacteriales"," Corynebacteriales"," Propionibacteriales"," Deinococci"," Gammaproteobacteria"," Negativicutes"," Prochlorales"," Coriobacteriia"," Bacilli"," Alphaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Geodermatophilales"," Betaproteobacteria"," Clostridia"," Gammaproteobacteria"," Streptomycetales"," Bacteroidia"," Bacilli"," Betaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Clostridia"," Gammaproteobacteria"," Thermotogales"," Thermotogales"," Bacilli"," Clostridia"," Gammaproteobacteria"," Corynebacteriales"," Deinococci"," Betaproteobacteria"," Gammaproteobacteria"," Acidobacteriales"," Betaproteobacteria"," Betaproteobacteria"," Bacteroidia"," Bacilli"," Bacilli"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Clostridia"," Deinococci"," Streptomycetales"," Clostridia"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Gemmatimonadales"," Betaproteobacteria"," Bacilli"," Bacilli"," Gammaproteobacteria"," Betaproteobacteria"," Streptomycetales"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Bacilli"," Bacilli"," Gammaproteobacteria"," Epsilonproteobacteria"," Bacteroidia"," Tissierellia"," Cytophagia"," Candidatus Cloacimonas"," Corynebacteriales"," Gammaproteobacteria"," Leptospirales"," Flavobacteriia"," Alphaproteobacteria"," Clostridia"," Halobacteria"," Gammaproteobacteria"," Halobacteria"," Gammaproteobacteria"," Leptospirales"," Alphaproteobacteria"," Sphingobacteriia"," Betaproteobacteria"," Pseudonocardiales"," Alphaproteobacteria"," Corynebacteriales"," Spirochaetales"," Bacteroidia"," Gammaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Clostridia"," Bacilli"," Oscillatoriophycideae"," Bacilli"," Bacteroidia"," Corynebacteriales"," Alphaproteobacteria"," Betaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Clostridia"," Sphingobacteriia"," Bacilli"," Gammaproteobacteria"," Bacteroidia"," Alphaproteobacteria"," Frankiales"," Gammaproteobacteria"," Alphaproteobacteria"," Epsilonproteobacteria"," Bacilli"," Alphaproteobacteria"," Oscillatoriophycideae"," Corynebacteriales"," Alphaproteobacteria"," Corynebacteriales"," Bacteroidia"," Deinococci"," Halobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Bacilli"," Actinomycetales"," Gammaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Clostridia"," Deinococci"," Spirochaetales"," Betaproteobacteria"," Corynebacteriales"," Bacilli"," Thermotogales"," Thermotogales"," Gammaproteobacteria"," Flavobacteriia"," Oscillatoriophycideae"," Streptomycetales"," Spirochaetales"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Corynebacteriales"," Clostridia"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Thermotogales"," Gammaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Frankiales"," Betaproteobacteria"," Streptomycetales"," Micrococcales"," Gammaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Bacilli"," Corynebacteriales"," Betaproteobacteria"," Clostridia"," Gammaproteobacteria"," Cytophagia"," Alphaproteobacteria"," Chlamydiales"," Propionibacteriales"," Fusobacteriales"," Alphaproteobacteria"," Gammaproteobacteria"," Flavobacteriia"," Actinomycetales"," Corynebacteriales"," Betaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," unclassified Verrucomicrobia"," Betaproteobacteria"," Gammaproteobacteria"," Bifidobacteriales"," Gammaproteobacteria"," Deinococci"," Gammaproteobacteria"," Clostridia"," Tissierellia"," Spirochaetales"," Bacilli"," Clostridia","0"," Alphaproteobacteria"," Flavobacteriia"," Halobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Leptospirales"," Corynebacteriales"," Alphaproteobacteria"," Fusobacteriales"," Pseudonocardiales"," Gammaproteobacteria"," Gammaproteobacteria"," Bifidobacteriales"," Frankiales"," Betaproteobacteria"," Corynebacteriales"," Betaproteobacteria"," Flavobacteriia"," Thermoleophilia"," Alphaproteobacteria"," Bacilli"," Micrococcales"," Bacilli"," Propionibacteriales"," Gammaproteobacteria"," Gammaproteobacteria"," Deinococci"," Clostridia"," Alphaproteobacteria"," Corynebacteriales"," Bacilli"," Betaproteobacteria"," Alphaproteobacteria"," Bifidobacteriales"," Deinococci"," Alphaproteobacteria"," Gammaproteobacteria"," Clostridia"," Clostridia"," Gammaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Bacteroidia"," Alphaproteobacteria"," Thermotogales"," Betaproteobacteria"," Betaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Deinococci"," Betaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Leptospirales"," Alphaproteobacteria"," Gammaproteobacteria"," Streptomycetales"," Alphaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Flavobacteriia"," Alphaproteobacteria"," Planctomycetia"," Alphaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Bifidobacteriales"," Alphaproteobacteria"," Bifidobacteriales"," Betaproteobacteria"," Corynebacteriales"," Erysipelotrichia"," Bifidobacteriales"," Gammaproteobacteria"," Bifidobacteriales"," Streptomycetales"," Bifidobacteriales"," Bacilli"," Alphaproteobacteria"," Betaproteobacteria"," Fusobacteriales"," Spirochaetales"," Alphaproteobacteria"," Fusobacteriales"," Negativicutes"," Alphaproteobacteria"," Alphaproteobacteria"," Bacilli"," Gammaproteobacteria"," Alphaproteobacteria"," Sphingobacteriia"," Bacilli"," Clostridia"," Clostridia"," Gammaproteobacteria"," Clostridia"," Clostridia"," Alphaproteobacteria"," Bacilli"," Betaproteobacteria"," Alphaproteobacteria"," Bacteroidia"," Gammaproteobacteria"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Clostridia"," Alphaproteobacteria"," Leptospirales"," Cytophagia"," Bifidobacteriales"," Gammaproteobacteria"," Cytophagia"," Bifidobacteriales"," Fusobacteriales"," Gammaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Flavobacteriia"," Betaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Bacteroidia"," Mollicutes"," Flavobacteriia"," Gammaproteobacteria"," Bacilli"," Betaproteobacteria"," Bacilli"," Alphaproteobacteria"," Tissierellia"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Betaproteobacteria"," Bacilli"," Bifidobacteriales"," Flavobacteriia"," Flavobacteriia"," Flavobacteriia"," Clostridia"," Gammaproteobacteria"," Gammaproteobacteria"," Halobacteria"," Alphaproteobacteria"," Micrococcales"," Alphaproteobacteria"," Gammaproteobacteria"," Halobacteria"," Bifidobacteriales"," Fibrobacterales"," Deltaproteobacteria"," Gammaproteobacteria"," Bifidobacteriales"," Gammaproteobacteria"," Betaproteobacteria"," Alphaproteobacteria"," Corynebacteriales"," Bifidobacteriales"," Deinococci"," Spirochaetales"," Halobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Bacilli"," Spirochaetales"," Bacilli"," Phycisphaerae"," Cytophagia"," Alphaproteobacteria"," Alphaproteobacteria"," Bifidobacteriales"," Flavobacteriia"," Deltaproteobacteria"," Bacilli"," Alphaproteobacteria"," Flavobacteriia"," Betaproteobacteria"," Streptomycetales"," Bacilli"," Sphingobacteriia"," Clostridia"," Gammaproteobacteria"," Gammaproteobacteria"," Clostridia"," Bacilli"," Betaproteobacteria"," Gammaproteobacteria"," Bacteroidia"," Alphaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Bacteroidia"," Betaproteobacteria"," Bacteroidia"," Alphaproteobacteria"," Thermotogales"," Spirochaetales"," Bacteroidia"," Gammaproteobacteria"," Spirochaetales"," Propionibacteriales"," Bacilli"," Cytophagia"," Alphaproteobacteria"," Alphaproteobacteria"," Bacteroidia"," Deltaproteobacteria"," Gammaproteobacteria"," Bacilli"," Actinomycetales"," Sphingobacteriia"," Pseudonocardiales"," Alphaproteobacteria"," Clostridia"," Betaproteobacteria"," Gammaproteobacteria"," Chlamydiales"," Betaproteobacteria"," Gammaproteobacteria"," Clostridia"," Gammaproteobacteria"," Alphaproteobacteria"," Bifidobacteriales"," Alphaproteobacteria"," Alphaproteobacteria"," Micrococcales"," Bacteroidia"," Betaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Micrococcales"," Alphaproteobacteria"," Micrococcales"," Tissierellia"," Bacteroidia"," Betaproteobacteria"," Alphaproteobacteria"," Corynebacteriales"," Bifidobacteriales"," Betaproteobacteria"," Spirochaetales"," Gammaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Bacilli"," Bacilli"," Bacilli"," Alphaproteobacteria"," Flavobacteriia"," Spirochaetales"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Streptomycetales"," Corynebacteriales"," Gammaproteobacteria"," Sphingobacteriia"," Gammaproteobacteria"," Spirochaetales"," Betaproteobacteria"," Alphaproteobacteria"," Betaproteobacteria"," Bacteroidetes Order II. Incertae sedis"," Betaproteobacteria"," Betaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Deltaproteobacteria"," Alphaproteobacteria"," Flavobacteriia"," Bifidobacteriales"," Alphaproteobacteria"," Betaproteobacteria"," Micrococcales"," Coriobacteriia"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Deltaproteobacteria"," Bacilli"," Bifidobacteriales"," Alphaproteobacteria"," Spartobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Mollicutes"," Corynebacteriales"," Bifidobacteriales"," Corynebacteriales"," Gammaproteobacteria"," Sphingobacteriia"," Gammaproteobacteria"," Alphaproteobacteria"," Bifidobacteriales"," Mollicutes"," Bacilli"," Alphaproteobacteria"," Bacteroidia"," Alphaproteobacteria"," Micrococcales"," Betaproteobacteria"," Gammaproteobacteria"," Bacteroidia"," Bacteroidia"," Betaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Corynebacteriales"," Bacilli"," Betaproteobacteria"," Micrococcales"," Alphaproteobacteria"," Alphaproteobacteria"," Bacilli"," Gammaproteobacteria"," Alphaproteobacteria"," Flavobacteriia"," Betaproteobacteria"," Gammaproteobacteria"," Bacilli"," Bacilli"," Gammaproteobacteria"," Betaproteobacteria"," Flavobacteriia"," Alphaproteobacteria"," Opitutae"," Gammaproteobacteria"," Mollicutes"," Cytophagia"," Brachyspirales"," Gammaproteobacteria"," Cytophagia"," Gammaproteobacteria"," Betaproteobacteria"," Bacilli"," Flavobacteriia"," Gammaproteobacteria"," Alphaproteobacteria"," Brachyspirales"," Flavobacteriia"," Betaproteobacteria"," Sphingobacteriia"," Betaproteobacteria"," Fusobacteriales"," Alphaproteobacteria"," Micrococcales"," Bacilli"," Verrucomicrobiae"," Deltaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Bacilli"," Gammaproteobacteria"," Coriobacteriia"," Bacilli"," Alphaproteobacteria"," Gammaproteobacteria"," Mollicutes"," Gammaproteobacteria"," Bacteroidia"," Corynebacteriales"," Clostridia"," Corynebacteriales"," Bacilli"," Halobacteria"," Alphaproteobacteria"," Actinomycetales"," Alphaproteobacteria"," Corynebacteriales"," Betaproteobacteria"," Betaproteobacteria"," Bacilli"," Corynebacteriales"," Betaproteobacteria"," Betaproteobacteria"," Bacteroidia"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Alphaproteobacteria"," Mollicutes"," Deltaproteobacteria"," Alphaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Cytophagia"," Bacilli"," Streptomycetales"," Flavobacteriia"," Gammaproteobacteria"," Cytophagia"," Streptomycetales"," Gammaproteobacteria"," Corynebacteriales"," Gammaproteobacteria"," Coriobacteriia"," Streptomycetales"," Brachyspirales"," Mollicutes"," Mollicutes"," Mollicutes"," Mollicutes"," Alphaproteobacteria"," Gammaproteobacteria"," Clostridia"," Flavobacteriia"," Alphaproteobacteria"," Mollicutes"," Mollicutes"," Alphaproteobacteria"," Gammaproteobacteria"," Micrococcales"," Cytophagia"," Bacilli"," Bacilli"," Streptomycetales"," Alphaproteobacteria"," Alphaproteobacteria"," Streptomycetales"," Mollicutes"," Betaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Streptomycetales"," Betaproteobacteria"," Deltaproteobacteria"," Alphaproteobacteria"," Fusobacteriales"," Bacilli"," Acidimicrobiia"," Betaproteobacteria"," Gammaproteobacteria"," Corynebacteriales"," Cytophagia"," Alphaproteobacteria"," Flavobacteriia"," Bacilli"," Alphaproteobacteria"," Propionibacteriales"," Betaproteobacteria"," Corynebacteriales"," Flavobacteriia"," Deltaproteobacteria"," Deltaproteobacteria"," Bacilli"," Alphaproteobacteria"," Betaproteobacteria"," Mollicutes"," Catenulisporales"," Alphaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Betaproteobacteria"," Sphingobacteriia"," Geodermatophilales"," Betaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Mollicutes"," Bacteroidia"," Pseudonocardiales"," Deltaproteobacteria"," Flavobacteriia"," Cytophagia"," Gammaproteobacteria"," Flavobacteriia"," Gammaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Negativicutes"," Cytophagia"," Alphaproteobacteria"," Mollicutes"," Mollicutes"," Mollicutes"," Mollicutes"," Betaproteobacteria"," Micrococcales"," Alphaproteobacteria"," Alphaproteobacteria"," Corynebacteriales"," Alphaproteobacteria"," Bacteroidia"," Alphaproteobacteria"," Flavobacteriia"," Alphaproteobacteria"," Betaproteobacteria"," Fusobacteriales"," Gammaproteobacteria"," Betaproteobacteria"," Corynebacteriales"," Chlamydiales"," Bacilli"," Alphaproteobacteria"," Gammaproteobacteria"," Brachyspirales"," Alphaproteobacteria"," Cytophagia"," Fusobacteriales"," Gammaproteobacteria"," Streptomycetales"," Gammaproteobacteria"," Pseudonocardiales"," Micrococcales"," Streptomycetales"," Chlamydiales"," Chlamydiales"," Betaproteobacteria"," Bacteroidia"," Alphaproteobacteria"," Betaproteobacteria"," Corynebacteriales"," Mollicutes"," Chlamydiales"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Streptomycetales"," Bacteroidia"," Gammaproteobacteria"," Streptomycetales"," Micrococcales"," Mollicutes"," Micrococcales"," Gammaproteobacteria"," Gammaproteobacteria"," Deltaproteobacteria"," Mollicutes"," Bacilli"," Chlamydiales"," Chlamydiales"," Betaproteobacteria"," Streptomycetales"," Bacilli"," Streptomycetales"," Corynebacteriales"," Propionibacteriales"," Cytophagia"," Mollicutes"," Chlamydiales"," Chlamydiales"," Chlamydiales"," Chlamydiales"," Betaproteobacteria"," Flavobacteriia"," Gammaproteobacteria"," Corynebacteriales"," Streptomycetales"," Alphaproteobacteria"," Cytophagia"," Alphaproteobacteria"," Betaproteobacteria"," Streptomycetales"," Streptomycetales"," Streptomycetales"," Bacteroidia"," Bacilli"," Bacilli"," Betaproteobacteria"," Flavobacteriia"," Mollicutes"," Betaproteobacteria"," Bacilli"," Gammaproteobacteria"," Cytophagia"," Corynebacteriales"," Betaproteobacteria"," Gammaproteobacteria"," Mollicutes"," Bacilli"," Gammaproteobacteria"," Alphaproteobacteria"," Mollicutes"," Alphaproteobacteria"," Mollicutes"," Micrococcales"," Cytophagia"," Gammaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Mollicutes"," Bacilli"," Corynebacteriales"," Corynebacteriales"," Pseudonocardiales"," Gammaproteobacteria"," Mollicutes"," Cytophagia"," Mollicutes"," Mollicutes"," Betaproteobacteria"," Gammaproteobacteria"," Mollicutes"," Flavobacteriia"," Deltaproteobacteria"," Mollicutes"," Gammaproteobacteria"," Betaproteobacteria"," Cytophagia"," Streptomycetales"," Gammaproteobacteria"," Gammaproteobacteria"," Spirochaetales"," Mollicutes"," Alphaproteobacteria"," Mollicutes"," Betaproteobacteria"," Betaproteobacteria"," Mollicutes"," Mollicutes"," Betaproteobacteria"," Flavobacteriia"," Fimbriimonadia"," Gammaproteobacteria"," Streptomycetales"," Spirochaetales"," Spirochaetales"," Gammaproteobacteria"," Spirochaetales"," Spirochaetales"," Spirochaetales"," Gammaproteobacteria"," Micrococcales"," Gammaproteobacteria"," Mollicutes"," Mollicutes"," Mollicutes"," Corynebacteriales"," Corynebacteriales"," Mollicutes"," Gammaproteobacteria"," Gammaproteobacteria"," Bacilli"," Spirochaetales"," Spirochaetales"," Flavobacteriia"," Mollicutes"," Bacilli"," Betaproteobacteria"," Betaproteobacteria"," Betaproteobacteria"," Flavobacteriia"," Cytophagia"," Mollicutes"," Bacilli"," Mollicutes"," Micrococcales"," Alphaproteobacteria"," Bacilli"," Alphaproteobacteria"," Spirochaetales"," Betaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Bacilli"," Mollicutes"," Mollicutes"," Bacilli"," Bacilli"," Alphaproteobacteria"," Mollicutes"," Gammaproteobacteria"," Flavobacteriia"," Spirochaetales"," Mollicutes"," Alphaproteobacteria"," Cytophagia"," Gammaproteobacteria"," Alphaproteobacteria"," Bacilli"," Mollicutes"," Micrococcales"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Pseudonocardiales"," Betaproteobacteria"," Kineosporiales"," Gammaproteobacteria"," Streptomycetales"," Corynebacteriales"," Mollicutes"," Streptomycetales"," Streptomycetales"," Alphaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Bacilli"," Bacilli"," Streptomycetales"," Alphaproteobacteria"," Mollicutes"," Mollicutes"," Gammaproteobacteria"," Alphaproteobacteria"," Erysipelotrichia"," Deltaproteobacteria"," Deinococci"," Gammaproteobacteria"," Deltaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Corynebacteriales"," Flavobacteriia"," Bacilli"," Micrococcales"," Alphaproteobacteria"," Alphaproteobacteria"," Bacilli"," Alphaproteobacteria"," Mollicutes"," Betaproteobacteria"," Flavobacteriia"," Corynebacteriales"," Gammaproteobacteria"," Mollicutes"," Betaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Corynebacteriales"," Gammaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Bacilli"," Corynebacteriales"," Bacilli"," Corynebacteriales"," Gammaproteobacteria"," Corynebacteriales"," Micrococcales"," Corynebacteriales"," Betaproteobacteria"," Chlamydiales"," Streptomycetales"," Mollicutes"," Alphaproteobacteria"," Clostridia"," Alphaproteobacteria"," Flavobacteriia"," Betaproteobacteria"," Corynebacteriales"," Alphaproteobacteria"," Bacilli"," Gammaproteobacteria"," Bacilli"," Alphaproteobacteria"," Betaproteobacteria"," Corynebacteriales"," Streptomycetales"," Gammaproteobacteria"," Bacilli"," Bacilli"," Mollicutes"," Alphaproteobacteria"," Bacilli"," Flavobacteriia"," Bacilli"," Bacilli"," Bacilli"," Gammaproteobacteria"," Flavobacteriia"," Gammaproteobacteria"," Halobacteria"," Betaproteobacteria"," Betaproteobacteria"," Corynebacteriales"," Alphaproteobacteria"," Gammaproteobacteria"," Flavobacteriia"," Bacilli"," Bacilli"," Bacilli"," Gammaproteobacteria"," Bacilli"," Bacilli"," Bacilli"," Bacilli"," Alphaproteobacteria"," Bacilli"," Gammaproteobacteria"," Bacilli"," Flavobacteriia"," Gammaproteobacteria"," Pseudonocardiales"," Sphingobacteriia"," Gammaproteobacteria"," Corynebacteriales"," Alphaproteobacteria"," Bacilli"," Corynebacteriales"," Gammaproteobacteria"," Corynebacteriales"," Bacilli"," Betaproteobacteria"," Bacilli"," Bacilli"," Sphingobacteriia"," Gammaproteobacteria"," Bacilli"," Flavobacteriia"," Streptomycetales"," Alphaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Bacilli"," Bacilli"," Bacilli"," Betaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Gammaproteobacteria"," Bacilli"," Bacilli"," Bacilli"," Bacilli"," Betaproteobacteria"," Alphaproteobacteria"," Micrococcales"," Gammaproteobacteria"," Bacilli"," Alphaproteobacteria"," Bacilli"," Flavobacteriia"," Flavobacteriia"," Bacilli"," Bacilli"," Flavobacteriia"," Alphaproteobacteria"," Bacilli"," Gammaproteobacteria"," Betaproteobacteria"," Alphaproteobacteria"," Streptomycetales"," Gammaproteobacteria"," Betaproteobacteria"," Gammaproteobacteria"," Alphaproteobacteria"," Bacilli"," Alphaproteobacteria"," Gammaproteobacteria"," Bacilli"," Betaproteobacteria"," Bacilli"," Micrococcales"," Bacilli"," Halobacteria"," Actinomycetales"," Mollicutes"," Deltaproteobacteria"," Corynebacteriales"," Bacilli"," Alphaproteobacteria"," Alphaproteobacteria"," Flavobacteriia"," Gammaproteobacteria"," Alphaproteobacteria"," Flavobacteriia"," Flavobacteriia"," Bacilli"," Betaproteobacteria"," Gammaproteobacteria"," Corynebacteriales"," Bacilli"," Gammaproteobacteria"," Bacilli"," Bacilli"," Alphaproteobacteria"," Bacilli"," Micrococcales"," Bacilli"," Alphaproteobacteria"," Alphaproteobacteria"," Gammaproteobacteria"," Bacilli"," Gammaproteobacteria"," Micrococcales"," Gammaproteobacteria"," Bacilli"," Alphaproteobacteria"," Bacilli"," Alphaproteobacteria"," Alphaproteobacteria"," Alphaproteobacteria"," Corynebacteriales"," Bacilli"," Micrococcales"," Gammaproteobacteria"," Bacilli"," Pseudonocardiales"," Alphaproteobacteria"," Micrococcales"," Micrococcales"," Bacilli"," Flavobacteriia"," Flavobacteriia"," Micrococcales"," Corynebacteriales"," Flavobacteriia"," Bacilli"," Bacilli"," Bacilli"," Micrococcales"," Gammaproteobacteria"," Micrococcales"," Micrococcales"," Flavobacteriia"," Gammaproteobacteria"," Bacilli"," Bacilli"," Alphaproteobacteria"," Bacilli"," Micrococcales"," Chlamydiales"," Corynebacteriales"," Corynebacteriales"," Micrococcales"," Micrococcales"," Micrococcales"," Alphaproteobacteria"," Bacilli"," Corynebacteriales"," Micrococcales"," Micrococcales"," Bacilli"," Micrococcales"," Alphaproteobacteria"," Corynebacteriales"," Micrococcales"," Corynebacteriales"," Bacilli"," Corynebacteriales"," Corynebacteriales"," Micrococcales"," Bacilli"," Micrococcales"," Corynebacteriales"," Micrococcales"," Bacilli"," Bacilli"," Micrococcales"," Corynebacteriales"," Micrococcales"," Micrococcales"," Corynebacteriales"," Corynebacteriales"," Micrococcales"," Micrococcales"," Micrococcales"," Micrococcales"," Corynebacteriales"," Micrococcales"," Corynebacteriales"," Micrococcales"," Micrococcales"],[" Thermoanaerobacterales"," Archaeoglobales"," Clostridiales"," Chlorobiales"," Chlorobiales"," Chlorobiales"," Hydrogenophilales"," Desulfovibrionales"," Desulfovibrionales"," Desulfovibrionales"," Chlorobiales","0"," Desulfovibrionales"," Desulfovibrionales"," Desulfovibrionales"," Syntrophobacterales"," Desulfovibrionales"," Archaeoglobales"," Thermodesulfobacteriaceae"," Chromatiales"," Nitrospiraceae"," Thermodesulfobacteriaceae"," Clostridiales"," Chromatiales"," Sulfuricellales"," Chromatiales"," Desulfobacterales"," Desulfobacterales"," Thermodesulfobacteriaceae"," Desulfovibrionales"," Desulfovibrionales"," Syntrophobacterales"," Thiotrichales"," Desulfovibrionales"," Chromatiales"," Archaeoglobales"," Desulfobacterales"," Clostridiales"," Aquificaceae"," Desulfobacterales"," Thermoproteales"," Sedimenticola"," Chromatiales"," Thermoanaerobacterales"," Desulfovibrionales"," Candidatus Thioglobus"," Thermoproteales"," Chromatiales"," Hydrogenothermaceae"," Clostridiales"," Desulfarculales"," Rhodospirillales"," Archaeoglobales"," Clostridiales"," Desulfovibrionales"," Desulfobacterales"," Aquificaceae"," Desulfobacterales"," Desulfobacterales"," Desulfurococcales"," Chlorobiales"," Clostridiales"," Clostridiales"," Clostridiales"," Chlorobiales"," sulfur-oxidizing symbionts"," Clostridiales"," Thermoanaerobacterales"," sulfur-oxidizing symbionts"," Desulfurococcales"," Methanococcales"," Desulfurobacteriaceae"," Clostridiales"," Thermoproteales"," Thermococcales"," Archaeoglobales"," Nitratiruptor"," Thiolapillus"," Thermoanaerobacterales"," Rhodocyclales"," Gallionellales"," Chlorobiales"," Thermococcales"," Desulfurococcales"," Chlorobiales"," Thermococcales"," Thermococcales"," Syntrophobacterales"," Thermococcales"," Campylobacterales"," Aciduliprofundum"," Thermoproteales"," Thermococcales"," Chlorobiales"," Archaeoglobales"," Methanococcales"," Aquificaceae"," Thermococcales"," Desulfobacterales"," Campylobacterales"," Methanococcales"," Archaeoglobales"," Hydrogenothermaceae"," Desulfurococcales"," Desulfurobacteriaceae"," Thermococcales"," Chlorobiales"," Thermococcales"," Acidithiobacillales"," Campylobacterales"," Methanocellales"," Aquificaceae"," Thermococcales"," Thermoproteales"," Thermococcales"," Sulfurovum"," Acidithiobacillales"," Campylobacterales"," Chromatiales"," Methanocellales"," Campylobacterales"," Thermoproteales"," Methanococcales"," Thermoproteales"," Desulfurococcales"," Methanosarcinales"," Hydrogenothermaceae"," Aquificaceae"," Campylobacterales"," Desulfurococcales"," Chlorobiales"," Magnetococcales"," Sulfolobales"," Nautiliales"," Campylobacterales"," Thermoproteales"," Campylobacterales"," Campylobacterales"," Coriobacteriales"," Acidithiobacillales"," Desulfuromonadales"," Methanosarcinales"," Methanococcales"," Rhodospirillales"," Myxococcales"," Methanosarcinales"," Methanobacteriales"," Petrotogaceae"," Campylobacterales"," Methanococcales"," Myxococcales"," Campylobacterales"," Chloroflexales"," Methanococcales"," Methanosarcinales"," Methanobacteriales"," Methanobacteriales"," Campylobacterales"," Campylobacterales"," Thermococcales"," Chloroflexales"," Methanosarcinales"," Caldilineales"," Methanococcales"," Methanococcales"," Rhodospirillales"," Syntrophobacterales"," Thermoanaerobacterales"," Methanobacteriales"," Campylobacterales"," Aciduliprofundum"," Methanobacteriales"," Thermococcales"," Methanococcales"," Methanosarcinales"," Thermococcales"," Thermococcales"," Methanococcales"," Thermoproteales"," Thermococcales"," Methanobacteriales"," Methanosarcinales"," Methanosarcinales"," Eggerthellales"," Methanococcales"," Methanococcales"," Methanosarcinales"," Dehalococcoidales"," Thermococcales"," Campylobacterales"," Thermococcales"," Dehalococcoidales"," Campylobacterales"," Methanosarcinales"," Deferribacteraceae"," Methanobacteriales"," Desulfuromonadales"," Thermococcales"," Desulfurellales"," Methanosarcinales"," Methanomicrobiales"," Chromatiales"," Methanosarcinales"," Dehalococcoidales"," Chromatiales"," Methanomicrobiales"," Synergistales"," Methanosarcinales"," Campylobacterales"," Thermococcales"," Halanaerobiales"," Desulfuromonadales"," Desulfuromonadales"," Methanosarcinales"," Methanosarcinales"," Campylobacterales"," Myxococcales"," Methanobacteriales"," Thermales"," Eggerthellales"," Chloroflexales"," Chloroflexales"," Rhodothermaceae"," Methanosarcinales"," Clostridiales"," Campylobacterales"," Halanaerobiales"," Acidilobales"," Methanobacteriales"," Methanobacteriales"," Desulfuromonadales"," Clostridiales"," Methanobacteriales"," Thermales"," Methanobacteriales"," Methanomicrobiales"," Campylobacterales"," Rhizobiales"," Sulfolobales"," Thermales"," Thermoanaerobacterales"," Methanomicrobiales"," Deferribacteraceae"," Methanosarcinales"," Desulfuromonadales"," Sulfurovum","0"," Desulfuromonadales"," Chromatiales"," Sulfolobales"," Methanomicrobiales"," Desulfuromonadales"," Chromatiales"," Methanomicrobiales"," Sulfolobales"," Acidilobales"," Thermococcales"," Thermales"," Clostridiales"," Eggerthellales"," Methanobacteriales"," Clostridiales"," Methanosarcinales"," Campylobacterales"," Methylacidiphilales"," Eggerthellales"," Enterobacteriales"," Desulfuromonadales"," Eggerthellales"," Desulfuromonadales"," Sulfolobales"," Methylacidiphilales"," Methanomassiliicoccales"," Myxococcales"," Thermales"," Anaerolineales"," Deferribacteraceae"," Thermales"," Methanococcales"," Methanococcales"," Desulfurococcales"," Rhodobacterales"," Desulfurellales"," Chroococcales"," Halanaerobiales"," Clostridiales"," Burkholderiales"," Methylococcales"," Deferribacteraceae"," Campylobacterales"," Thermoanaerobacterales"," Chroococcales"," Campylobacterales"," Clostridiales"," Methanomicrobiales"," Thermoplasmatales"," Thermoanaerobacterales"," Clostridiales"," Chromatiales"," Planctomycetales"," Actinomycetaceae"," Enterobacteriales"," Rhodobacterales"," Bacillales"," Campylobacterales"," Bacillales","0"," Clostridiales"," Thermoanaerobacterales"," Thermoanaerobacterales"," Thermales"," Desulfurococcales"," Selenomonadales"," Chrysiogenaceae"," Desulfurococcales"," Selenomonadales"," Nitrospiraceae"," Clostridiales"," Campylobacterales"," Campylobacterales"," Campylobacterales"," Thermoplasmatales"," Campylobacterales"," Methanosarcinales"," Chroococcales"," Desulfuromonadales"," Rivulariaceae"," Pasteurellales"," Planctomycetales"," Campylobacterales"," Halobacteriales"," Methanomicrobiales"," Methanomassiliicoccales"," Methylococcales"," Bacillales"," Rhodobacterales"," Thermoanaerobacterales"," Selenomonadales"," Nitrospiraceae"," Chroococcales"," Bacillales"," Petrotogaceae"," Dehalogenimonas"," Chromatiales"," Methylococcales"," Nostocaceae"," Methanosarcinales"," Clostridiales"," Desulfuromonadales"," Planctomycetales"," Desulfuromonadales"," Campylobacterales"," Methanomicrobiales"," Thermoanaerobacterales"," Enterobacteriales"," Rubrobacterales"," Methanosarcinales"," Mycobacteriaceae"," Campylobacterales","0"," Pasteurellales"," Dictyoglomaceae"," Pasteurellales"," Synergistales"," Myxococcales"," Clostridiales"," Desulfurococcales"," Chroococcales"," Thermoplasmatales"," Enterobacteriales"," Kosmotogaceae"," Methanomassiliicoccales"," Selenomonadales"," Clostridiales"," Chromatiales"," Aeromonadales"," Streptosporangiaceae"," Chroococcales"," Pseudonocardiaceae"," Campylobacterales"," Candidatus Thioglobus"," Bacillales"," Enterobacteriales"," Acidobacteriaceae"," Campylobacterales"," Pasteurellales"," Thermoanaerobacterales"," Rhizobiales"," Pasteurellales","0"," Bacillales"," Oscillatoriales"," Rhodocyclales"," Dictyoglomaceae"," Selenomonadales"," Candidatus Accumulibacter"," Sulfolobales"," Bacillales"," Clostridiales"," Rhodobacterales"," Pasteurellales"," Nocardiopsaceae"," Chroococcales"," Chroococcales"," Chroococcales"," Rhodobacterales"," Sulfolobales"," Pleurocapsa"," Campylobacterales"," Rhodocyclales"," Bacillales"," Enterobacteriales"," Kosmotogaceae"," Bacillales"," Nitrospiraceae"," Clostridiales"," Thermotogaceae"," Bacillales"," Selenomonadales"," Chroococcales"," Oscillatoriales"," Aeromonadales"," Orbales"," Rubrobacterales"," Clostridiales"," Glycomycetaceae"," Chroococcales"," Methylococcales"," Rivulariaceae"," Enterobacteriales"," Thermoanaerobacterales"," Natrialbales"," Chroococcales"," Burkholderiales"," Alteromonadales"," Rhodocyclales"," Oscillatoriales"," Orbales"," Rhizobiales"," Bacillales"," Campylobacterales"," Enterobacteriales"," Campylobacterales"," Gallionellales"," Chroococcales"," Rhodobacterales"," Natranaerobiales"," Rhodobacterales"," Rhodocyclales"," Thermotogaceae"," Rhodocyclales"," Caldisericales"," Thiotrichales"," Rivulariaceae"," Pseudomonadales"," Nostocaceae"," Clostridiales"," Clostridiales"," Campylobacterales"," Burkholderiales"," Synergistales"," Fischerella"," Desulfovibrionales"," Aeromonadales"," Nocardiopsaceae"," Pasteurellales"," Thermoanaerobacterales"," Clostridiales"," Synergistales"," Intrasporangiaceae"," Nitrosopumilaceae"," Burkholderiales"," Rhizobiales"," Enterobacteriales"," Clostridiales"," Thermoanaerobacterales"," Clostridiales","0"," Acidothermaceae"," Chroococcales"," Clostridiales"," Candidatus Nitrosotenuis"," Nostocaceae"," Mycobacteriaceae"," Pasteurellales"," Pseudomonadales"," Nostocaceae"," Candidatus Baumannia"," Clostridiales"," Nostocaceae"," Campylobacterales"," Bacillales"," Bacillales"," Nostocaceae"," Clostridiales"," Bacillales"," Enterobacteriales"," Bacillales"," Alteromonadales"," Campylobacterales"," Chroococcales"," Enterobacteriales"," Enterobacteriales"," Mycobacteriaceae"," Rhodobacterales"," Bacillales"," Chroococcidiopsis"," Chroococcales"," Thiotrichales"," Bacillales"," Bacillales"," Oscillatoriales"," Bacillales"," Vibrionales"," Burkholderiales"," Rivulariaceae"," Bacillales","0"," Nostocaceae"," Ignavibacteriales"," Campylobacterales"," Burkholderiales"," Leptotrichiaceae"," Enterobacteriales"," Thermotogaceae"," Bacillales"," Clostridiales"," Alteromonadales"," Thiotrichales"," Thermoanaerobacterales"," Rhizobiales"," Streptomycetaceae"," Chroococcales"," Enterobacteriales"," Bacteroidales"," Pasteurellales"," Thermoanaerobacterales"," Bacillales"," Thermotogaceae"," Rhodobacterales"," Prochlorococcaceae"," Prochlorococcaceae"," Bacillales"," Bacillales"," Oscillatoriales"," Chroococcales"," Rhodobacterales"," Corynebacteriaceae"," Pasteurellales"," Bacillales"," Nostocaceae"," Thermotogaceae"," Endomicrobiales"," Pasteurellales"," Bacillales"," Enterobacteriales"," Ignavibacteriales"," Nitrosopumilaceae"," Mycobacteriaceae"," Bacillales"," Rhizobiales"," Thiotrichales"," Mycobacteriaceae"," Prochlorococcaceae"," Prochlorococcaceae"," Thiotrichales"," Bacillales"," Acidobacteriaceae"," Methylococcales"," Chroococcales"," Spirochaetaceae"," Chroococcales"," Prochlorococcaceae"," Bacillales"," Enterobacteriales"," Burkholderiales"," Enterobacteriales"," Opitutales"," Pseudomonadales"," Halobacteriales"," Alteromonadales"," Chroococcales"," Halobacteriales"," Lactobacillales"," Bacillales"," Nitrospiraceae"," Thermoanaerobacterales"," Pseudomonadales"," Rhizobiales"," Rhodobacterales"," Oceanospirillales"," Prochlorococcaceae"," Vibrionales"," Pseudomonadales"," Enterobacteriales"," Micromonosporaceae"," Rhodobacterales"," Pseudomonadales"," Bacillales"," Burkholderiales"," Alteromonadales"," Enterobacteriales"," Pasteurellales"," Thermomonosporaceae"," Thiotrichales"," Chroococcales"," Gloeobacterales"," Bacillales"," Thermotogaceae"," Pasteurellales"," Chroococcales"," Spirochaetaceae"," Alteromonadales"," Thiotrichales"," Propionibacteriaceae"," Rhodobacterales"," Clostridiales"," Rhodospirillales"," Campylobacterales"," Campylobacterales"," Enterobacteriales"," Clostridiales"," Rhodobacterales"," Streptomycetaceae"," Bacillales"," Streptomycetaceae"," Bacillales"," Lactobacillales"," Halobacteriales"," Vibrionales"," Oceanospirillales"," Pseudomonadales"," Enterobacteriales"," Rhizobiales"," Chroococcales"," Rhodobacterales"," Mycobacteriaceae"," Planctomycetales"," Rhodocyclales"," Chroococcales"," Enterobacteriales"," Halobacteriales"," Bacillales"," Nocardiaceae"," Fusobacteriaceae"," Rhodobacterales"," Alteromonadales"," Clostridiales"," Thermobispora"," Rhizobiales"," Thermales"," Bacillales"," Enterobacteriales"," Rhizobiales"," Alteromonadales"," Alteromonadales"," Enterobacteriales"," Bacillales"," Natrialbales"," Halobacteriales"," Halobacteriales"," Micromonosporaceae"," Micromonosporaceae"," Thermales"," Thiotrichales"," Burkholderiales"," Aeromonadales"," Bacillales"," Bacillales"," Bacillales"," Chroococcales"," Rhizobiales"," Spirochaetaceae"," Aeromonadales"," Oceanospirillales"," Clostridiales"," Oscillatoriales"," Pasteurellales"," Enterobacteriales"," Nocardioidaceae"," Enterobacteriales"," Bacillales"," Enterobacteriales"," Rhizobiales"," Bacillales"," Pseudomonadales"," Vibrionales"," Acidobacteriaceae"," Bacillales"," Rhizobiales"," Rhizobiales"," Enterobacteriales"," Clostridiales"," Bacillales"," Bacillales"," Enterobacteriales"," Bacillales"," Enterobacteriales"," Enterobacteriales"," Alteromonadales"," Frankiaceae"," Rhizobiales"," Clostridiales"," Enterobacteriales"," Rhizobiales"," Campylobacterales"," Bacillales"," Aeromonadales"," Enterobacteriales"," Bacillales"," Petrotogaceae"," Bacillales"," Enterobacteriales"," Gloeobacterales"," Rhodocyclales"," Clostridiales"," Verrucomicrobiales"," Vibrionales"," Bacillales"," Stanieria"," Pasteurellales"," Enterobacteriales"," Enterobacteriales"," Clostridiales"," Enterobacteriales"," Natrialbales"," Rhizobiales"," Chroococcales"," Sphaerobacterales"," Enterobacteriales"," Methylophilales"," Acidobacteriaceae"," Bacteroidales"," Bacillales"," Alteromonadales"," Bacillales"," Enterobacteriales"," Bacillales"," Alteromonadales"," Clostridiales"," Pseudomonadales"," Burkholderiales"," Campylobacterales"," Thermomicrobiaceae"," Enterobacteriales"," Enterobacteriales"," Enterobacteriales"," Acidobacteriaceae"," Rhizobiales"," Clostridiales"," Enterobacteriales"," Pseudomonadales"," Micromonosporaceae"," Thermoplasmatales"," Pseudomonadales"," Clostridiales"," Campylobacterales"," Pseudonocardiaceae"," Spirochaetaceae"," Enterobacteriales"," Enterobacteriales"," Frankiaceae"," Propionibacteriaceae"," Pseudomonadales"," Enterobacteriales"," Enterobacteriales"," Prochlorococcaceae"," Prochlorococcaceae"," Chromatiales"," Rhodospirillales"," Chromatiales"," Rhizobiales"," Thermoanaerobacterales"," Candidatus Baumannia"," Rhodobacterales"," Clostridiales"," Clostridiales"," Enterobacteriales"," Clostridiales"," Cytophagales"," Kosmotogaceae"," Chroococcales"," Thiotrichales"," Bacillales"," Enterobacteriales"," Oceanospirillales"," Elusimicrobiales"," Rhodobacterales"," Burkholderiales"," Aeromonadales"," Puniceicoccales"," Rhodobacterales"," Oscillatoriales"," Enterobacteriales"," Enterobacteriales"," Pasteurellales"," Nakamurellaceae"," Enterobacteriales"," Micromonosporaceae"," Pseudomonadales"," Oscillatoriales"," Nocardiaceae"," Enterobacteriales"," Enterobacteriales"," Bacillales"," Bacillales"," Spirochaetaceae"," Geodermatophilaceae"," Micromonosporaceae"," Micromonosporaceae"," Prochlorococcaceae"," Clostridiales"," Prochlorococcaceae"," Enterobacteriales"," Pseudomonadales"," Rhizobiales"," Bacillales"," Chromatiales"," Vibrionales"," Alteromonadales"," Rhodobacterales"," Myxococcales"," Rhodobacterales"," Rhodobacterales"," Clostridiales"," Enterobacteriales"," Mycobacteriaceae"," Chromatiales"," Rhizobiales"," Clostridiales"," Alteromonadales"," Chroococcales"," Clostridiales"," Enterobacteriales"," Bacteroidales"," Halobacteriales"," Pseudomonadales"," Enterobacteriales"," Bacillales"," Natrialbales"," Rhodospirillales"," Candidatus Babela"," Oceanospirillales"," Bacillales"," Prochlorococcaceae"," Micromonosporaceae"," Bacillales"," Pseudonocardiaceae"," Bacillales"," Rhizobiales"," Enterobacteriales"," Burkholderiales"," Burkholderiales"," Pseudomonadales"," Legionellales"," Clostridiales"," Enterobacteriales"," Pseudomonadales"," Bacillales"," Nocardiopsaceae"," Methylophilales"," Oceanospirillales"," Pseudonocardiaceae"," Enterobacteriales"," Enterobacteriales"," Enterobacteriales"," Bacillales"," Pasteurellales"," Enterobacteriales"," Halobacteriales"," Enterobacteriales"," Pseudomonadales"," Rhodospirillales"," Pseudomonadales"," Enterobacteriales"," Chroococcales","0"," Actinomycetaceae"," Rhizobiales"," Enterobacteriales"," Cellvibrionales"," Chroococcales"," Clostridiales"," Nocardiaceae"," Chloracidobacterium"," Deinococcales"," Thermoanaerobacterales"," Nitrospiraceae"," Haloferacales"," Bacillales"," Natrialbales"," Rhizobiales"," Solibacterales"," Rhizobiales"," Corynebacteriaceae"," Enterobacteriales"," Pasteurellales","0"," Alteromonadales"," Bacillales"," Natrialbales"," Acidimicrobiales"," Rhodobacterales"," Rhizobiales"," Methylophilales"," Clostridiales"," Deinococcales"," Oceanospirillales"," Enterobacteriales"," Pseudomonadales"," Pseudomonadales"," Haloferacales"," Pseudomonadales"," Enterobacteriales"," Burkholderiales"," Mycobacteriaceae"," Mycobacteriaceae"," Propionibacteriaceae"," Deinococcales"," Enterobacteriales"," Selenomonadales"," Prochlorococcaceae"," Coriobacteriales"," Bacillales"," Rhizobiales"," Burkholderiales"," Enterobacteriales"," Geodermatophilaceae"," Neisseriales"," Clostridiales"," Alteromonadales"," Streptomycetaceae"," Bacteroidales"," Bacillales"," Burkholderiales"," Burkholderiales"," Enterobacteriales"," Bacillales"," Enterobacteriales"," Clostridiales"," Enterobacteriales"," Fervidobacteriaceae"," Thermotogaceae"," Bacillales"," Halanaerobiales"," Enterobacteriales"," Mycobacteriaceae"," Deinococcales"," Burkholderiales"," Cellvibrionales"," Acidobacteriaceae"," Burkholderiales"," Burkholderiales"," Bacteroidales"," Bacillales"," Bacillales"," Pseudomonadales"," Bacillales"," Enterobacteriales"," Clostridiales"," Deinococcales"," Streptomycetaceae"," Clostridiales"," Xanthomonadales"," Enterobacteriales"," Pseudomonadales"," Gemmatimonadaceae"," Methylophilales"," Bacillales"," Bacillales"," Legionellales"," Burkholderiales"," Streptomycetaceae"," Pseudomonadales"," Legionellales"," Enterobacteriales"," Rhodocyclales"," Burkholderiales"," Enterobacteriales"," Bacillales"," Bacillales"," Pseudomonadales"," Campylobacterales"," Bacteroidales"," Tissierellales"," Cytophagales","0"," Lawsonella"," Pseudomonadales"," Leptospiraceae"," Flavobacteriales"," Rhizobiales"," Clostridiales"," Halobacteriales"," Oceanospirillales"," Haloferacales"," Enterobacteriales"," Leptospiraceae"," Rhizobiales"," Sphingobacteriales"," Burkholderiales"," Pseudonocardiaceae"," Rhodobacterales"," Nocardiaceae"," Spirochaetaceae"," Bacteroidales"," Vibrionales"," Rhodospirillales"," Enterobacteriales"," Clostridiales"," Bacillales"," Chroococcales"," Lactobacillales"," Bacteroidales"," Gordoniaceae"," Rhizobiales"," Burkholderiales"," Rhodospirillales"," Pseudomonadales"," Halanaerobiales"," Sphingobacteriales"," Bacillales"," Vibrionales"," Bacteroidales"," Rickettsiales"," Frankiaceae"," Pseudomonadales"," Rhizobiales"," Campylobacterales"," Bacillales"," Rhodobacterales"," Chroococcales"," Corynebacteriaceae"," Rhodospirillales"," Corynebacteriaceae"," Bacteroidales"," Deinococcales"," Natrialbales"," Enterobacteriales"," Rhizobiales"," Enterobacteriales"," Bacillales"," Actinomycetaceae"," Legionellales"," Legionellales"," Burkholderiales"," Rhizobiales"," Aeromonadales"," Clostridiales"," Deinococcales"," Spirochaetaceae"," Burkholderiales"," Mycobacteriaceae"," Bacillales"," Fervidobacteriaceae"," Fervidobacteriaceae"," Legionellales"," Flavobacteriales"," Chroococcales"," Streptomycetaceae"," Spirochaetaceae"," Pseudomonadales"," Legionellales"," Pseudomonadales"," Mycobacteriaceae"," Clostridiales"," Pseudomonadales"," Pseudomonadales"," Pseudomonadales"," Pseudomonadales"," Thiotrichales"," Rhodospirillales"," Vibrionales"," Fervidobacteriaceae"," Vibrionales"," Burkholderiales"," Burkholderiales"," Xanthomonadales"," Frankiaceae"," Burkholderiales"," Streptomycetaceae"," Dermabacteraceae"," Oceanospirillales"," Burkholderiales"," Pseudomonadales"," Bacillales"," Nocardiaceae"," Burkholderiales"," Clostridiales"," Vibrionales"," Cytophagales"," Rhodobacterales"," Parachlamydiaceae"," Propionibacteriaceae"," Fusobacteriaceae"," Rhizobiales"," Vibrionales","0"," Actinomycetaceae"," Mycobacteriaceae"," Burkholderiales"," Pseudomonadales"," Candidatus Profftella","0"," Burkholderiales"," Vibrionales"," Bifidobacteriaceae"," Enterobacteriales"," Deinococcales"," Pseudomonadales"," Clostridiales"," Tissierellales"," Spirochaetaceae"," Bacillales"," Clostridiales","0"," Rickettsiales"," Flavobacteriales"," Haloferacales"," Cellvibrionales"," Burkholderiales"," Leptospiraceae"," Gordoniaceae"," Rickettsiales"," Fusobacteriaceae"," Pseudonocardiaceae"," Pseudomonadales"," Oceanospirillales"," Bifidobacteriaceae"," Frankiaceae"," Burkholderiales"," Mycobacteriaceae"," Burkholderiales"," Flavobacteriales"," Solirubrobacterales"," Rhodobacterales"," Bacillales"," Jonesiaceae"," Bacillales"," Propionibacteriaceae"," Vibrionales"," Vibrionales"," Deinococcales"," Clostridiales"," Rhizobiales"," Corynebacteriaceae"," Bacillales"," Burkholderiales"," Rhodospirillales"," Bifidobacteriaceae"," Deinococcales"," Rhodospirillales"," Alteromonadales"," Clostridiales"," Thermoanaerobacterales"," Enterobacteriales"," Vibrionales"," Neisseriales"," Bacteroidales"," Rickettsiales"," Fervidobacteriaceae"," Burkholderiales"," Kinetoplastibacterium"," Rhizobiales"," Rickettsiales"," Rickettsiales"," Rhizobiales"," Vibrionales"," Deinococcales"," Burkholderiales"," Neisseriales"," Nitrosomonadales"," Leptospiraceae"," Rhizobiales"," Pseudomonadales"," Streptomycetaceae"," Rickettsiales"," Nitrosomonadales"," Pseudomonadales"," Flavobacteriales"," Rickettsiales"," Planctomycetales"," Sphingomonadales"," Burkholderiales"," Alteromonadales"," Bifidobacteriaceae"," Rickettsiales"," Bifidobacteriaceae"," Burkholderiales"," Gordoniaceae"," Erysipelotrichales"," Bifidobacteriaceae"," Pseudomonadales"," Bifidobacteriaceae"," Streptomycetaceae"," Bifidobacteriaceae"," Lactobacillales"," Sphingomonadales"," Methylophilales"," Fusobacteriaceae"," Spirochaetaceae"," Pelagibacterales"," Leptotrichiaceae"," Selenomonadales"," Rhizobiales"," Sphingomonadales"," Bacillales"," Pseudomonadales"," Rhizobiales"," Sphingobacteriales"," Bacillales"," Clostridiales"," Clostridiales"," Vibrionales"," Clostridiales"," Clostridiales"," Rhizobiales"," Bacillales"," Methylophilales"," Caulobacterales"," Bacteroidales"," Legionellales"," Vibrionales"," Lactobacillales"," Enterobacteriales"," Clostridiales"," Rickettsiales"," Leptospiraceae"," Cytophagales"," Bifidobacteriaceae"," Enterobacteriales"," Cytophagales"," Bifidobacteriaceae"," Fusobacteriaceae"," Xanthomonadales"," Rhodospirillales"," Rickettsiales"," Flavobacteriales"," Burkholderiales"," Rickettsiales"," Pseudomonadales"," Pseudomonadales"," Bacteroidales","0"," Flavobacteriales"," Alteromonadales"," Bacillales"," Burkholderiales"," Bacillales"," Rhizobiales"," Tissierellales"," Rhodobacterales"," Rickettsiales"," Rickettsiales"," Rickettsiales"," Rickettsiales"," Rickettsiales"," Rickettsiales"," Rickettsiales"," Burkholderiales"," Bacillales"," Bifidobacteriaceae"," Flavobacteriales"," Flavobacteriales"," Flavobacteriales"," Clostridiales"," Xanthomonadales"," Xanthomonadales"," Natrialbales"," Sphingomonadales"," Dermabacteraceae"," Rhodospirillales"," Enterobacteriales"," Haloferacales"," Bifidobacteriaceae"," Fibrobacteraceae"," Myxococcales"," Alteromonadales"," Bifidobacteriaceae"," Enterobacteriales"," Burkholderiales"," Rickettsiales"," Nocardiaceae"," Bifidobacteriaceae"," Thermales"," Spirochaetaceae"," Halobacteriales"," Rickettsiales"," Sphingomonadales"," Enterobacteriales"," Vibrionales"," Kinetoplastibacterium"," Kinetoplastibacterium"," Burkholderiales"," Xanthomonadales"," Bacillales"," Spirochaetaceae"," Bacillales"," Phycisphaerales"," Cytophagales"," Rhodobacterales"," Rhizobiales"," Bifidobacteriaceae"," Flavobacteriales"," Myxococcales"," Bacillales"," Rhizobiales"," Flavobacteriales"," Neisseriales"," Streptomycetaceae"," Lactobacillales"," Sphingobacteriales"," Clostridiales"," Enterobacteriales"," Enterobacteriales"," Clostridiales"," Bacillales"," Kinetoplastibacterium"," Alteromonadales"," Bacteroidales"," Rhizobiales"," Enterobacteriales"," Burkholderiales"," Pseudomonadales"," Bacteroidales"," Burkholderiales"," Bacteroidales"," Rhizobiales"," Fervidobacteriaceae"," Spirochaetaceae"," Bacteroidales"," Oceanospirillales"," Spirochaetaceae"," Nocardioidaceae"," Bacillales"," Cytophagales"," Rickettsiales"," Rhizobiales"," Bacteroidales"," Myxococcales"," Pseudomonadales"," Lactobacillales"," Actinomycetaceae"," Sphingobacteriales"," Pseudonocardiaceae"," Rickettsiales"," Clostridiales"," Burkholderiales"," Alteromonadales"," Parachlamydiaceae"," Burkholderiales"," Cellvibrionales"," Clostridiales"," Enterobacteriales"," Rhodobacterales"," Bifidobacteriaceae"," Polymorphum"," Sphingomonadales"," Cellulomonadaceae"," Bacteroidales"," Burkholderiales"," Burkholderiales"," Alteromonadales"," Micrococcaceae"," Rickettsiales"," Micrococcaceae"," Tissierellales"," Bacteroidales"," Burkholderiales"," Pelagibacterales"," Mycobacteriaceae"," Bifidobacteriaceae"," Burkholderiales"," Spirochaetaceae"," Enterobacteriales"," Rhizobiales"," Alteromonadales"," Bacillales"," Bacillales"," Lactobacillales"," Rhodobacterales"," Flavobacteriales"," Spirochaetaceae"," Rickettsiales"," Rickettsiales"," Rickettsiales"," Streptomycetaceae"," Corynebacteriaceae"," Enterobacteriales"," Sphingobacteriales"," Pseudomonadales"," Spirochaetaceae"," Burkholderiales"," Rhizobiales"," Burkholderiales"," Rhodothermaceae"," Nitrosomonadales"," Methylophilales"," Rhizobiales"," Alteromonadales"," Burkholderiales"," Burkholderiales"," Alteromonadales"," Myxococcales"," Rhizobiales"," Flavobacteriales"," Bifidobacteriaceae"," Rhizobiales"," Burkholderiales"," Cellulomonadaceae"," Coriobacteriales"," Sphingomonadales"," Rhizobiales"," Rhizobiales"," Enterobacteriales"," Myxococcales"," Bacillales"," Bifidobacteriaceae"," Rickettsiales"," Candidatus Xiphinematobacter"," Rhizobiales"," Pseudomonadales"," Entomoplasmatales"," Corynebacteriaceae"," Bifidobacteriaceae"," Mycobacteriaceae"," Thiotrichales"," Sphingobacteriales"," Enterobacteriales"," Rhizobiales"," Bifidobacteriaceae"," Entomoplasmatales"," Lactobacillales"," Rickettsiales"," Bacteroidales"," Rhizobiales"," Micrococcaceae"," Neisseriales"," Enterobacteriales"," Bacteroidales"," Bacteroidales"," Nitrosomonadales"," Burkholderiales"," Burkholderiales"," Burkholderiales"," Enterobacteriales"," Corynebacteriaceae"," Lactobacillales"," Burkholderiales"," Intrasporangiaceae"," Rickettsiales"," Rhizobiales"," Bacillales"," Thiotrichales"," Rhizobiales"," Flavobacteriales"," Burkholderiales"," Cellvibrionales"," Bacillales"," Bacillales"," Pseudomonadales"," Neisseriales"," Flavobacteriales"," Rhizobiales"," Opitutales"," Alteromonadales"," Acholeplasmatales"," Cytophagales"," Brachyspiraceae"," Pseudomonadales"," Cytophagales"," Enterobacteriales"," Burkholderiales"," Bacillales"," Flavobacteriales"," Thiotrichales"," SAR116 cluster"," Brachyspiraceae"," Flavobacteriales"," Neisseriales"," Sphingobacteriales"," Burkholderiales"," Leptotrichiaceae"," Pelagibacterales"," Dermacoccaceae"," Lactobacillales"," Verrucomicrobiales"," Myxococcales"," Burkholderiales"," Burkholderiales"," Lactobacillales"," Enterobacteriales"," Coriobacteriales"," Lactobacillales"," Parvularculales"," Oceanospirillales"," Mycoplasmataceae"," Enterobacteriales"," Bacteroidales"," Corynebacteriaceae"," Clostridiales"," Nocardiaceae"," Bacillales"," Haloferacales"," Rickettsiales"," Actinomycetaceae"," Rhizobiales"," Corynebacteriaceae"," Kinetoplastibacterium"," Burkholderiales"," Lactobacillales"," Corynebacteriaceae"," Burkholderiales"," Burkholderiales"," Bacteroidales"," Pseudomonadales"," Lactobacillales"," Pseudomonadales"," Pseudomonadales"," Burkholderiales"," Rhizobiales"," Mycoplasmataceae"," Bdellovibrionales"," Rhizobiales"," Burkholderiales"," Xanthomonadales"," Pelagibacterales"," Cytophagales"," Lactobacillales"," Streptomycetaceae"," Flavobacteriales"," Pseudomonadales"," Cytophagales"," Streptomycetaceae"," Thiotrichales"," Nocardiaceae"," Alteromonadales"," Coriobacteriales"," Streptomycetaceae"," Brachyspiraceae"," Mycoplasmataceae"," Mycoplasmataceae"," Mycoplasmataceae"," Mycoplasmataceae"," Sphingomonadales"," Oceanospirillales"," Clostridiales"," Flavobacteriales"," Rhizobiales"," Mycoplasmataceae"," Mycoplasmataceae"," Sphingomonadales"," Oceanospirillales"," Beutenbergiaceae"," Cytophagales"," Lactobacillales"," Lactobacillales"," Streptomycetaceae"," Rhizobiales"," Rhizobiales"," Streptomycetaceae"," Acholeplasmatales"," Burkholderiales"," Burkholderiales"," Chromatiales"," Rhizobiales"," Pseudomonadales"," Streptomycetaceae"," Burkholderiales"," Myxococcales"," Rhizobiales"," Fusobacteriaceae"," Lactobacillales"," Acidimicrobiales"," Burkholderiales"," Oceanospirillales"," Corynebacteriaceae"," Cytophagales"," Rhodospirillales"," Flavobacteriales"," Lactobacillales"," Rhizobiales"," Nocardioidaceae"," Burkholderiales"," Corynebacteriaceae"," Flavobacteriales"," Bdellovibrionales"," Bdellovibrionales"," Bacillales"," Rhizobiales"," Burkholderiales"," Mycoplasmataceae"," Catenulisporaceae"," Rhodospirillales"," Oceanospirillales"," Sphingomonadales"," Neisseriales"," Sphingobacteriales"," Geodermatophilaceae"," Neisseriales"," Pseudomonadales"," Rhodospirillales"," Rhodospirillales"," Burkholderiales"," Xanthomonadales"," Acholeplasmatales"," Bacteroidales"," Pseudonocardiaceae"," Myxococcales"," Flavobacteriales"," Cytophagales"," Enterobacteriales"," Flavobacteriales"," Thiotrichales"," Rhizobiales"," Rhodospirillales"," Xanthomonadales"," Selenomonadales"," Cytophagales"," Rhodospirillales"," Acholeplasmatales"," Mycoplasmataceae"," Mycoplasmataceae"," Mycoplasmataceae"," Burkholderiales"," Micrococcaceae"," Micavibrio"," Sphingomonadales"," Corynebacteriaceae"," Rhizobiales"," Bacteroidales"," Rhizobiales"," Flavobacteriales"," Caulobacterales"," Burkholderiales"," Leptotrichiaceae"," Pseudomonadales"," Burkholderiales"," Corynebacteriaceae"," Chlamydiaceae"," Bacillales"," Rhodospirillales"," Enterobacteriales"," Brachyspiraceae"," Rhizobiales"," Cytophagales"," Leptotrichiaceae"," Enterobacteriales"," Streptomycetaceae"," Xanthomonadales"," Pseudonocardiaceae"," Micrococcaceae"," Streptomycetaceae"," Chlamydiaceae"," Chlamydiaceae"," Burkholderiales"," Bacteroidales"," Sphingomonadales"," Neisseriales"," Corynebacteriaceae"," Acholeplasmatales"," Chlamydiaceae"," Xanthomonadales"," Pseudomonadales"," Xanthomonadales"," Streptomycetaceae"," Bacteroidales"," Xanthomonadales"," Streptomycetaceae"," Micrococcaceae"," Mycoplasmataceae"," Cellulomonadaceae"," Vibrionales"," Cellvibrionales"," Bdellovibrionales"," Acholeplasmatales"," Bacillales"," Chlamydiaceae"," Chlamydiaceae"," Burkholderiales"," Streptomycetaceae"," Lactobacillales"," Streptomycetaceae"," Mycobacteriaceae"," Propionibacteriaceae"," Cytophagales"," Mycoplasmataceae"," Chlamydiaceae"," Chlamydiaceae"," Chlamydiaceae"," Chlamydiaceae"," Nitrosomonadales"," Flavobacteriales"," Alteromonadales"," Mycobacteriaceae"," Streptomycetaceae"," Sphingomonadales"," Cytophagales"," Rhizobiales"," Burkholderiales"," Streptomycetaceae"," Streptomycetaceae"," Streptomycetaceae"," Bacteroidales"," Lactobacillales"," Bacillales"," Burkholderiales"," Flavobacteriales"," Entomoplasmatales"," Burkholderiales"," Lactobacillales"," Pseudomonadales"," Cytophagales"," Mycobacteriaceae"," Burkholderiales"," Pseudomonadales"," Mycoplasmataceae"," Lactobacillales"," Enterobacteriales"," Sphingomonadales"," Mycoplasmataceae"," Sphingomonadales"," Mycoplasmataceae"," Brevibacteriaceae"," Cytophagales"," Vibrionales"," Rhodospirillales"," Rhizobiales"," Mycoplasmataceae"," Lactobacillales"," Mycobacteriaceae"," Nocardiaceae"," Pseudonocardiaceae"," Alteromonadales"," Mycoplasmataceae"," Cytophagales"," Entomoplasmatales"," Entomoplasmatales"," Burkholderiales"," Pseudomonadales"," Mycoplasmataceae"," Flavobacteriales"," Myxococcales"," Entomoplasmatales"," Enterobacteriales"," Burkholderiales"," Cytophagales"," Streptomycetaceae"," Xanthomonadales"," Oceanospirillales"," Spirochaetaceae"," Mycoplasmataceae"," Sphingomonadales"," Entomoplasmatales"," Burkholderiales"," Burkholderiales"," Entomoplasmatales"," Entomoplasmatales"," Burkholderiales"," Flavobacteriales"," Fimbriimonadales"," Pseudomonadales"," Streptomycetaceae"," Borreliaceae"," Borreliaceae"," Alteromonadales"," Borreliaceae"," Borreliaceae"," Borreliaceae"," Pseudomonadales"," Micrococcaceae"," Pseudomonadales"," Entomoplasmatales"," Mycoplasmataceae"," Mycoplasmataceae"," Mycobacteriaceae"," Mycobacteriaceae"," Mycoplasmataceae"," Pseudomonadales"," Pseudomonadales"," Lactobacillales"," Borreliaceae"," Borreliaceae"," Flavobacteriales"," Mycoplasmataceae"," Lactobacillales"," Burkholderiales"," Burkholderiales"," Burkholderiales"," Flavobacteriales"," Cytophagales"," Mycoplasmataceae"," Lactobacillales"," Mycoplasmataceae"," Dermacoccaceae"," Sphingomonadales"," Lactobacillales"," Rhizobiales"," Borreliaceae"," Burkholderiales"," Rhizobiales"," Alteromonadales"," Lactobacillales"," Mycoplasmataceae"," Mycoplasmataceae"," Lactobacillales"," Lactobacillales"," Rickettsiales"," Entomoplasmatales"," Alteromonadales"," Flavobacteriales"," Borreliaceae"," Mycoplasmataceae"," Caulobacterales"," Cytophagales"," Xanthomonadales"," Sphingomonadales"," Lactobacillales"," Entomoplasmatales"," Tropheryma"," Pseudomonadales"," Pseudomonadales"," Pseudomonadales"," Alteromonadales"," Sphingomonadales"," Pseudonocardiaceae"," Nitrosomonadales"," Kineosporiaceae"," Pseudomonadales"," Streptomycetaceae"," Mycobacteriaceae"," Mycoplasmataceae"," Streptomycetaceae"," Streptomycetaceae"," Rhizobiales"," Pseudomonadales"," Burkholderiales"," Lactobacillales"," Lactobacillales"," Streptomycetaceae"," Rhizobiales"," Mycoplasmataceae"," Mycoplasmataceae"," Oceanospirillales"," Rhodospirillales"," Erysipelotrichales"," Myxococcales"," Deinococcales"," Xanthomonadales"," Myxococcales"," Sphingomonadales"," Pseudomonadales"," Sphingomonadales"," Nocardiaceae"," Flavobacteriales"," Lactobacillales"," Promicromonosporaceae"," Sphingomonadales"," Sphingomonadales"," Bacillales"," Rhizobiales"," Mycoplasmataceae"," Burkholderiales"," Flavobacteriales"," Corynebacteriaceae"," Alteromonadales"," Mycoplasmataceae"," Burkholderiales"," Burkholderiales"," Xanthomonadales"," Burkholderiales"," Alteromonadales"," Gordoniaceae"," Pseudomonadales"," Burkholderiales"," Alteromonadales"," Bacillales"," Nocardiaceae"," Lactobacillales"," Corynebacteriaceae"," Pseudomonadales"," Nocardiaceae"," Micrococcaceae"," Corynebacteriaceae"," Burkholderiales"," Simkaniaceae"," Streptomycetaceae"," Mycoplasmataceae"," Caulobacterales"," Clostridiales"," Rhodospirillales"," Flavobacteriales"," Burkholderiales"," Corynebacteriaceae"," Rhodobacterales"," Lactobacillales"," Pseudomonadales"," Lactobacillales"," Rhizobiales"," Burkholderiales"," Corynebacteriaceae"," Streptomycetaceae"," Alteromonadales"," Bacillales"," Lactobacillales"," Acholeplasmatales"," Micavibrio"," Lactobacillales"," Flavobacteriales"," Lactobacillales"," Lactobacillales"," Lactobacillales"," Pseudomonadales"," Flavobacteriales"," Enterobacteriales"," Halobacteriales"," Burkholderiales"," Burkholderiales"," Corynebacteriaceae"," Caulobacterales"," Alteromonadales"," Flavobacteriales"," Lactobacillales"," Lactobacillales"," Lactobacillales"," Alteromonadales"," Lactobacillales"," Lactobacillales"," Lactobacillales"," Lactobacillales"," Rhodobacterales"," Lactobacillales"," Alteromonadales"," Lactobacillales"," Flavobacteriales"," Legionellales"," Pseudonocardiaceae"," Sphingobacteriales"," Xanthomonadales"," Corynebacteriaceae"," Sphingomonadales"," Lactobacillales"," Nocardiaceae"," Pseudomonadales"," Tsukamurellaceae"," Lactobacillales"," Burkholderiales"," Lactobacillales"," Lactobacillales"," Sphingobacteriales"," Xanthomonadales"," Lactobacillales"," Flavobacteriales"," Streptomycetaceae"," Caulobacterales"," Xanthomonadales"," Rhizobiales"," Lactobacillales"," Lactobacillales"," Lactobacillales"," Nitrosomonadales"," Oceanospirillales"," Alteromonadales"," Cardiobacteriales"," Lactobacillales"," Bacillales"," Lactobacillales"," Lactobacillales"," Burkholderiales"," Sphingomonadales"," Micrococcaceae"," Legionellales"," Lactobacillales"," Rhizobiales"," Bacillales"," Flavobacteriales"," Flavobacteriales"," Lactobacillales"," Lactobacillales"," Flavobacteriales"," Rhizobiales"," Lactobacillales"," Xanthomonadales"," Burkholderiales"," Sphingomonadales"," Streptomycetaceae"," Xanthomonadales"," Burkholderiales"," Oceanospirillales"," Caulobacterales"," Lactobacillales"," Rhizobiales"," Xanthomonadales"," Lactobacillales"," Burkholderiales"," Bacillales"," Micrococcaceae"," Lactobacillales"," Natrialbales"," Actinomycetaceae"," Acholeplasmatales"," Bdellovibrionales"," Corynebacteriaceae"," Lactobacillales"," Rhizobiales"," Rhizobiales"," Flavobacteriales"," Xanthomonadales"," Rhizobiales"," Flavobacteriales"," Flavobacteriales"," Lactobacillales"," Nitrosomonadales"," Pseudohongiella"," Mycobacteriaceae"," Lactobacillales"," Oceanospirillales"," Lactobacillales"," Lactobacillales"," Rhizobiales"," Lactobacillales"," Dermacoccaceae"," Lactobacillales"," Rhizobiales"," Rhodospirillales"," Alteromonadales"," Lactobacillales"," Xanthomonadales"," Micrococcaceae"," Xanthomonadales"," Lactobacillales"," Caulobacterales"," Lactobacillales"," Caulobacterales"," Rhizobiales"," Rhizobiales"," Corynebacteriaceae"," Lactobacillales"," Micrococcaceae"," Alteromonadales"," Lactobacillales"," Pseudonocardiaceae"," Rhizobiales"," Promicromonosporaceae"," Microbacteriaceae"," Lactobacillales"," Flavobacteriales"," Flavobacteriales"," Micrococcaceae"," Corynebacteriaceae"," Flavobacteriales"," Bacillales"," Bacillales"," Bacillales"," Microbacteriaceae"," Xanthomonadales"," Micrococcaceae"," Sanguibacteraceae"," Flavobacteriales"," Pseudomonadales"," Lactobacillales"," Lactobacillales"," Sphingomonadales"," Lactobacillales"," Microbacteriaceae"," Waddliaceae"," Corynebacteriaceae"," Segniliparaceae"," Microbacteriaceae"," Micrococcaceae"," Micrococcaceae"," Sphingomonadales"," Lactobacillales"," Corynebacteriaceae"," Micrococcaceae"," Microbacteriaceae"," Lactobacillales"," Microbacteriaceae"," Rhizobiales"," Corynebacteriaceae"," Micrococcaceae"," Mycobacteriaceae"," Lactobacillales"," Corynebacteriaceae"," Corynebacteriaceae"," Microbacteriaceae"," Lactobacillales"," Microbacteriaceae"," Corynebacteriaceae"," Micrococcaceae"," Lactobacillales"," Bacillales"," Microbacteriaceae"," Corynebacteriaceae"," Micrococcaceae"," Micrococcaceae"," Corynebacteriaceae"," Corynebacteriaceae"," Microbacteriaceae"," Microbacteriaceae"," Microbacteriaceae"," Microbacteriaceae"," Corynebacteriaceae"," Microbacteriaceae"," Corynebacteriaceae"," Microbacteriaceae"," Micrococcaceae"],[" Thermoanaerobacteraceae"," Archaeoglobaceae"," Peptococcaceae"," Chlorobiaceae"," Chlorobiaceae"," Chlorobiaceae"," Hydrogenophilaceae"," Desulfohalobiaceae"," Desulfovibrionaceae"," Desulfovibrionaceae"," Chlorobiaceae","0"," Desulfovibrionaceae"," Desulfovibrionaceae"," Desulfovibrionaceae"," Syntrophaceae"," Desulfovibrionaceae"," Archaeoglobaceae"," Thermodesulfatator"," Ectothiorhodospiraceae"," Thermodesulfovibrio"," Thermodesulfobacterium"," Peptococcaceae"," Chromatiaceae"," Sulfuricellaceae"," Chromatiaceae"," Desulfobulbaceae"," Desulfobacteraceae"," Thermodesulfobacterium"," Desulfomicrobiaceae"," Desulfovibrionaceae"," Syntrophobacteraceae"," Thiotrichaceae"," Desulfovibrionaceae"," Ectothiorhodospiraceae"," Archaeoglobaceae"," Desulfobulbaceae"," Peptococcaceae"," Hydrogenobacter"," Desulfobulbaceae"," Thermoproteaceae","0"," Ectothiorhodospiraceae"," Thermodesulfobiaceae"," Desulfovibrionaceae","0"," Thermoproteaceae"," Chromatiaceae"," Persephonella"," Peptococcaceae"," Desulfarculaceae"," Rhodospirillaceae"," Archaeoglobaceae"," Peptococcaceae"," Desulfovibrionaceae"," Desulfobulbaceae"," Hydrogenobaculum"," Desulfobacteraceae"," Desulfobacteraceae"," Pyrodictiaceae"," Chlorobiaceae"," Peptococcaceae"," Peptococcaceae"," Peptococcaceae"," Chlorobiaceae","0"," Peptococcaceae"," Thermoanaerobacteraceae"," Candidatus Ruthia"," Pyrodictiaceae"," Methanocaldococcaceae"," Desulfurobacterium"," Peptococcaceae"," Thermoproteaceae"," Thermococcaceae"," Archaeoglobaceae","0","0"," Thermoanaerobacteraceae"," Rhodocyclaceae"," Gallionellaceae"," Chlorobiaceae"," Thermococcaceae"," Desulfurococcaceae"," Chlorobiaceae"," Thermococcaceae"," Thermococcaceae"," Syntrophaceae"," Thermococcaceae"," Helicobacteraceae","0"," Thermoproteaceae"," Thermococcaceae"," Chlorobiaceae"," Archaeoglobaceae"," Methanocaldococcaceae"," Thermocrinis"," Thermococcaceae"," Desulfobacteraceae"," Helicobacteraceae"," Methanocaldococcaceae"," Archaeoglobaceae"," Sulfurihydrogenibium"," Pyrodictiaceae"," Thermovibrio"," Thermococcaceae"," Chlorobiaceae"," Thermococcaceae"," Acidithiobacillaceae"," Helicobacteraceae"," Methanocellaceae"," Aquifex"," Thermococcaceae"," Thermoproteaceae"," Thermococcaceae","0"," Acidithiobacillaceae"," Nitratifractor"," Ectothiorhodospiraceae"," Methanocellaceae"," Campylobacteraceae"," Thermofilaceae"," Methanocaldococcaceae"," Thermofilaceae"," Desulfurococcaceae"," Methanosaetaceae"," Sulfurihydrogenibium"," Thermocrinis"," Helicobacteraceae"," Desulfurococcaceae"," Chlorobiaceae"," Magnetococcaceae"," Sulfolobaceae"," Nautiliaceae"," Campylobacteraceae"," Thermofilaceae"," Campylobacteraceae"," Campylobacteraceae"," Coriobacteriaceae"," Acidithiobacillaceae"," Geobacteraceae"," Methanosarcinaceae"," Methanococcaceae"," Rhodospirillaceae"," Cystobacterineae"," Methanosarcinaceae"," Methanobacteriaceae"," Petrotoga"," Campylobacteraceae"," Methanococcaceae"," Cystobacterineae"," Campylobacteraceae"," Chloroflexineae"," Methanocaldococcaceae"," Methanosarcinaceae"," Methanobacteriaceae"," Methanobacteriaceae"," Campylobacteraceae"," Campylobacteraceae"," Thermococcaceae"," Chloroflexineae"," Methanosarcinaceae"," Caldilineaceae"," Methanococcaceae"," Methanococcaceae"," Rhodospirillaceae"," Syntrophaceae"," Thermoanaerobacteraceae"," Methanobacteriaceae"," Campylobacteraceae","0"," Methanobacteriaceae"," Thermococcaceae"," Methanocaldococcaceae"," Methanosarcinaceae"," Thermococcaceae"," Thermococcaceae"," Methanococcaceae"," Thermoproteaceae"," Thermococcaceae"," Methanothermaceae"," Methanosarcinaceae"," Methanosarcinaceae"," Eggerthellaceae"," Methanococcaceae"," Methanocaldococcaceae"," Methanosarcinaceae"," Dehalococcoidaceae"," Thermococcaceae"," Campylobacteraceae"," Thermococcaceae"," Dehalococcoidaceae"," Campylobacteraceae"," Methanosarcinaceae","0"," Methanobacteriaceae"," Geobacteraceae"," Thermococcaceae"," Desulfurellaceae"," Methanosarcinaceae"," Methanoregulaceae"," Ectothiorhodospiraceae"," Methanosarcinaceae"," Dehalococcoidaceae"," Ectothiorhodospiraceae"," Methanoregulaceae"," Synergistaceae"," Methanosarcinaceae"," Campylobacteraceae"," Thermococcaceae"," Halanaerobiaceae"," Geobacteraceae"," Geobacteraceae"," Methanosarcinaceae"," Methanosarcinaceae"," Campylobacteraceae"," Cystobacterineae"," Methanobacteriaceae"," Thermaceae"," Eggerthellaceae"," Roseiflexineae"," Roseiflexineae"," Rhodothermus"," Methanosarcinaceae"," Heliobacteriaceae"," Campylobacteraceae"," Halobacteroidaceae"," Caldisphaeraceae"," Methanobacteriaceae"," Methanobacteriaceae"," Geobacteraceae"," Syntrophomonadaceae"," Methanobacteriaceae"," Thermaceae"," Methanobacteriaceae"," Methanomicrobiaceae"," Campylobacteraceae"," Hyphomicrobiaceae"," Sulfolobaceae"," Thermaceae"," Thermoanaerobacteraceae"," Methanospirillaceae"," Denitrovibrio"," Methanosarcinaceae"," Geobacteraceae","0","0"," Geobacteraceae"," Chromatiaceae"," Sulfolobaceae"," Methanoregulaceae"," Geobacteraceae"," Ectothiorhodospiraceae"," Methanoregulaceae"," Sulfolobaceae"," Acidilobaceae"," Thermococcaceae"," Thermaceae"," Peptococcaceae"," Eggerthellaceae"," Methanobacteriaceae"," Peptococcaceae"," Methanosaetaceae"," Campylobacteraceae"," Methylacidiphilaceae"," Eggerthellaceae"," Enterobacteriaceae"," Geobacteraceae"," Eggerthellaceae"," Desulfuromonadaceae"," Sulfolobaceae"," Methylacidiphilaceae"," Methanomassiliicoccaceae"," Sorangiineae"," Thermaceae"," Anaerolineaceae"," Deferribacter"," Thermaceae"," Methanococcaceae"," Methanococcaceae"," Desulfurococcaceae"," Rhodobacteraceae"," Desulfurellaceae"," Candidatus Atelocyanobacterium"," Halobacteroidaceae"," Peptococcaceae","0"," Methylococcaceae"," Flexistipes"," Campylobacteraceae"," Thermoanaerobacterales Family III. Incertae Sedis"," Synechocystis"," Campylobacteraceae"," Peptococcaceae"," Methanomicrobiaceae"," Thermoplasmataceae"," Thermoanaerobacterales Family III. Incertae Sedis"," Eubacteriaceae"," Ectothiorhodospiraceae"," Planctomycetaceae"," Mobiluncus"," Enterobacteriaceae"," Rhodobacteraceae"," Bacillaceae"," Campylobacteraceae"," Alicyclobacillaceae","0"," Peptococcaceae"," Thermoanaerobacterales Family III. Incertae Sedis"," Thermoanaerobacterales Family III. Incertae Sedis"," Thermaceae"," Desulfurococcaceae"," Veillonellaceae"," Desulfurispirillum"," Desulfurococcaceae"," Veillonellaceae"," Leptospirillum"," Symbiobacteriaceae"," Campylobacteraceae"," Campylobacteraceae"," Campylobacteraceae"," Ferroplasmaceae"," Campylobacteraceae"," Methanosarcinaceae"," Halothece cluster"," Geobacteraceae"," Calothrix"," Pasteurellaceae"," Isosphaeraceae"," Campylobacteraceae"," Halobacteriaceae"," Methanomicrobiaceae"," Methanomassiliicoccaceae"," Methylococcaceae"," Paenibacillaceae"," Rhodobacteraceae"," Thermodesulfobiaceae"," Selenomonadaceae"," Leptospirillum"," Synechocystis"," Paenibacillaceae"," Defluviitoga","0"," Halothiobacillaceae"," Methylococcaceae"," Anabaena"," Methanosarcinaceae"," Peptococcaceae"," Desulfuromonadaceae"," Isosphaeraceae"," Desulfuromonadaceae"," Campylobacteraceae"," Methanocorpusculaceae"," Thermoanaerobacterales Family III. Incertae Sedis"," Enterobacteriaceae"," Rubrobacteraceae"," Methanosarcinaceae"," Mycobacterium"," Campylobacteraceae","0"," Pasteurellaceae"," Dictyoglomus"," Pasteurellaceae"," Synergistaceae"," Sorangiineae"," Peptococcaceae"," Desulfurococcaceae"," Synechococcus","0"," Enterobacteriaceae"," Kosmotoga"," Methanomassiliicoccaceae"," Veillonellaceae"," Ruminococcaceae"," Chromatiaceae"," Aeromonadaceae"," Streptosporangium"," Synechococcus"," Saccharopolyspora"," Helicobacteraceae","0"," Bacillaceae"," Enterobacteriaceae"," Candidatus Koribacter"," Campylobacteraceae"," Pasteurellaceae"," Thermoanaerobacterales Family III. Incertae Sedis"," Methylocystaceae"," Pasteurellaceae","0"," Paenibacillaceae"," Oscillatoria"," Rhodocyclaceae"," Dictyoglomus"," Veillonellaceae","0"," Sulfolobaceae"," Paenibacillaceae"," Clostridiaceae"," Rhodobacteraceae"," Pasteurellaceae"," Nocardiopsis"," Cyanobacterium"," Cyanothece"," Cyanothece"," Rhodobacteraceae"," Sulfolobaceae","0"," Helicobacteraceae"," Rhodocyclaceae"," Paenibacillaceae"," Enterobacteriaceae"," Kosmotoga"," Paenibacillaceae"," Nitrospira"," Lachnospiraceae"," Thermotoga"," Paenibacillaceae"," Veillonellaceae"," Synechococcus"," Geitlerinema"," Aeromonadaceae"," Orbaceae"," Rubrobacteraceae"," Clostridiaceae"," Stackebrandtia"," Synechococcus"," Methylococcaceae"," Calothrix"," Enterobacteriaceae"," Thermoanaerobacteraceae"," Natrialbaceae"," Synechococcus"," Alcaligenaceae"," Shewanellaceae"," Rhodocyclaceae"," Trichodesmium"," Orbaceae"," Methylobacteriaceae"," Paenibacillaceae"," Helicobacteraceae"," Enterobacteriaceae"," Helicobacteraceae"," Gallionellaceae"," Cyanothece"," Rhodobacteraceae"," Natranaerobiaceae"," Rhodobacteraceae"," Rhodocyclaceae"," Pseudothermotoga"," Rhodocyclaceae"," Caldisericaceae"," Piscirickettsiaceae"," Rivularia"," Pseudomonadaceae"," Nostoc"," Clostridiaceae"," Clostridiaceae"," Helicobacteraceae"," Rubrivivax"," Synergistaceae","0"," Desulfovibrionaceae"," Aeromonadaceae"," Nocardiopsis"," Pasteurellaceae"," Thermoanaerobacterales Family III. Incertae Sedis"," Clostridiaceae"," Synergistaceae"," Intrasporangium"," Nitrosopumilus"," Comamonadaceae"," Hyphomicrobiaceae"," Enterobacteriaceae"," Clostridiaceae"," Thermoanaerobacteraceae"," Syntrophomonadaceae","0"," Acidothermus"," Cyanothece"," Clostridiaceae","0"," Nostoc"," Mycobacterium"," Pasteurellaceae"," Moraxellaceae"," Nostoc","0"," Clostridiaceae"," Anabaena"," Helicobacteraceae"," Bacillaceae"," Bacillaceae"," Anabaena"," Clostridiaceae"," Paenibacillaceae"," Enterobacteriaceae"," Bacillaceae"," Shewanellaceae"," Campylobacteraceae"," Cyanobium"," Enterobacteriaceae"," Enterobacteriaceae"," Mycobacterium,"," Rhodobacteraceae"," Bacillaceae","0"," Thermosynechococcus"," Piscirickettsiaceae"," Paenibacillaceae"," Paenibacillaceae"," Microcoleus"," Bacillaceae"," Vibrionaceae"," Thiomonas"," Calothrix"," Bacillaceae","0"," Trichormus"," Ignavibacteriaceae"," Helicobacteraceae"," Comamonadaceae"," Sebaldella"," Enterobacteriaceae"," Thermotoga"," Bacillaceae"," Ruminococcaceae"," Shewanellaceae"," Piscirickettsiaceae"," Thermoanaerobacterales Family III. Incertae Sedis"," Bradyrhizobiaceae"," Streptomyces"," Microcystis"," Enterobacteriaceae"," Candidatus Azobacteroides"," Pasteurellaceae"," Thermoanaerobacteraceae"," Bacillaceae"," Thermotoga"," Rhodobacteraceae"," Prochlorococcus"," Prochlorococcus"," Paenibacillaceae"," Paenibacillaceae"," Oscillatoria"," Synechococcus"," Rhodobacteraceae"," Corynebacterium"," Pasteurellaceae"," Bacillaceae"," Nostoc"," Thermotoga"," Endomicrobiaceae"," Pasteurellaceae"," Bacillaceae"," Enterobacteriaceae"," Melioribacteraceae"," Nitrosopumilus"," Mycobacterium"," Staphylococcaceae"," Hyphomicrobiaceae"," Piscirickettsiaceae"," Mycobacterium"," Prochlorococcus"," Prochlorococcus"," Francisellaceae"," Paenibacillaceae"," Terriglobus"," Methylococcaceae"," Dactylococcopsis"," Treponema"," Synechococcus"," Prochlorococcus"," Bacillaceae"," Enterobacteriaceae"," Comamonadaceae"," Enterobacteriaceae"," Opitutaceae"," Moraxellaceae"," Halobacteriaceae"," Shewanellaceae"," Microcystis"," Halobacteriaceae"," Lactobacillaceae"," Bacillaceae"," Nitrospira"," Thermoanaerobacteraceae"," Pseudomonadaceae"," Bradyrhizobiaceae"," Rhodobacteraceae"," Alcanivoracaceae"," Prochlorococcus"," Vibrionaceae"," Pseudomonadaceae"," Enterobacteriaceae"," Micromonospora"," Rhodobacteraceae"," Pseudomonadaceae"," Bacillaceae"," Comamonadaceae"," Shewanellaceae"," Enterobacteriaceae"," Pasteurellaceae"," Thermomonospora"," Piscirickettsiaceae"," Synechococcus"," Gloeobacter"," Bacillaceae"," Pseudothermotoga"," Pasteurellaceae"," Synechococcus"," Treponema"," Ferrimonadaceae"," Francisellaceae"," Propionibacterium"," Rhodobacteraceae"," Clostridiaceae"," Acetobacteraceae"," Helicobacteraceae"," Helicobacteraceae"," Enterobacteriaceae"," Ruminococcaceae"," Rhodobacteraceae"," Streptomyces"," Bacillaceae"," Streptomyces"," Bacillaceae"," Lactobacillaceae"," Halobacteriaceae"," Vibrionaceae"," Halomonadaceae"," Pseudomonadaceae"," Enterobacteriaceae"," Bradyrhizobiaceae"," Synechococcus"," Rhodobacteraceae"," Mycobacterium"," Planctomycetaceae"," Rhodocyclaceae"," Synechococcus"," Enterobacteriaceae"," Halobacteriaceae"," Bacillaceae"," Rhodococcus"," Ilyobacter"," Rhodobacteraceae"," Shewanellaceae"," Clostridiaceae","0"," Beijerinckiaceae"," Thermaceae"," Staphylococcaceae"," Enterobacteriaceae"," Bradyrhizobiaceae"," Shewanellaceae"," Shewanellaceae"," Enterobacteriaceae"," Bacillaceae"," Natrialbaceae"," Halobacteriaceae"," Halobacteriaceae"," Salinispora"," Salinispora"," Thermaceae"," Francisellaceae"," Leptothrix"," Aeromonadaceae"," Bacillaceae"," Sporolactobacillaceae"," Paenibacillaceae"," Synechococcus"," Hyphomicrobiaceae"," Treponema"," Aeromonadaceae"," Hahellaceae"," Lachnospiraceae"," Leptolyngbya"," Pasteurellaceae"," Enterobacteriaceae"," Nocardioides"," Enterobacteriaceae"," Paenibacillaceae"," Enterobacteriaceae"," Beijerinckiaceae"," Bacillaceae"," Pseudomonadaceae"," Vibrionaceae"," Terriglobus"," Bacillaceae"," Bradyrhizobiaceae"," Methylobacteriaceae"," Enterobacteriaceae"," Clostridiaceae"," Staphylococcaceae"," Staphylococcaceae"," Enterobacteriaceae"," Paenibacillaceae"," Enterobacteriaceae"," Enterobacteriaceae"," Shewanellaceae"," Frankia"," Hyphomicrobiaceae"," Clostridiales Family XVII. Incertae Sedis"," Enterobacteriaceae"," Methylobacteriaceae"," Helicobacteraceae"," Staphylococcaceae"," Aeromonadaceae"," Enterobacteriaceae"," Alicyclobacillaceae"," Marinitoga"," Bacillaceae"," Enterobacteriaceae"," Gloeobacter"," Rhodocyclaceae"," Ruminococcaceae"," Akkermansiaceae"," Vibrionaceae"," Bacillaceae","0"," Pasteurellaceae"," Enterobacteriaceae"," Enterobacteriaceae"," Clostridiaceae"," Enterobacteriaceae"," Natrialbaceae"," Xanthobacteraceae"," Synechococcus"," Sphaerobacterineae"," Enterobacteriaceae"," Methylophilaceae"," Granulicella"," Bacteroidaceae"," Bacillaceae"," Shewanellaceae"," Bacillaceae"," Enterobacteriaceae"," Bacillaceae"," Psychromonadaceae"," Ruminococcaceae"," Pseudomonadaceae"," Burkholderiaceae"," Helicobacteraceae"," Thermomicrobium"," Enterobacteriaceae"," Enterobacteriaceae"," Enterobacteriaceae"," Granulicella"," Bradyrhizobiaceae"," Clostridiaceae"," Enterobacteriaceae"," Pseudomonadaceae"," Actinoplanes"," Picrophilaceae"," Pseudomonadaceae"," Peptostreptococcaceae"," Helicobacteraceae"," Saccharomonospora"," Sphaerochaeta"," Enterobacteriaceae"," Enterobacteriaceae"," Frankia"," Propionibacterium"," Pseudomonadaceae"," Enterobacteriaceae"," Enterobacteriaceae"," Prochlorococcus"," Prochlorococcus"," Chromatiaceae"," Acetobacteraceae"," Ectothiorhodospiraceae"," Bradyrhizobiaceae"," Thermoanaerobacterales Family IV. Incertae Sedis","0"," Rhodobacteraceae"," Clostridiaceae"," Clostridiaceae"," Enterobacteriaceae"," Clostridiaceae"," Cytophagaceae"," Mesotoga"," Synechococcus"," Piscirickettsiaceae"," Bacillaceae"," Enterobacteriaceae"," Alcanivoracaceae"," Elusimicrobiaceae"," Rhodobacteraceae"," Methylibium"," Aeromonadaceae"," Puniceicoccaceae"," Rhodobacteraceae"," Crinalium"," Enterobacteriaceae"," Enterobacteriaceae"," Pasteurellaceae"," Nakamurella"," Enterobacteriaceae"," Verrucosispora"," Pseudomonadaceae"," Pseudanabaena"," Rhodococcus"," Enterobacteriaceae"," Enterobacteriaceae"," Paenibacillaceae"," Bacillaceae"," Spirochaeta"," Modestobacter"," Actinoplanes"," Actinoplanes"," Prochlorococcus"," Eubacteriaceae"," Prochlorococcus"," Enterobacteriaceae"," Pseudomonadaceae"," Bradyrhizobiaceae"," Staphylococcaceae"," Ectothiorhodospiraceae"," Vibrionaceae"," Shewanellaceae"," Rhodobacteraceae"," Sorangiineae"," Rhodobacteraceae"," Rhodobacteraceae"," Gottschalkia"," Enterobacteriaceae"," Mycobacterium"," Chromatiaceae"," Bradyrhizobiaceae"," Clostridiaceae"," Shewanellaceae"," Synechococcus"," Clostridiaceae"," Enterobacteriaceae","0"," Halobacteriaceae"," Pseudomonadaceae"," Enterobacteriaceae"," Bacillaceae"," Natrialbaceae"," Rhodospirillaceae","0"," Halomonadaceae"," Bacillaceae"," Prochlorococcus"," Actinoplanes"," Bacillaceae"," Pseudonocardia"," Paenibacillaceae"," Methyloceanibacter"," Enterobacteriaceae"," Burkholderiaceae"," Burkholderiaceae"," Pseudomonadaceae"," Coxiellaceae"," Clostridiaceae"," Enterobacteriaceae"," Pseudomonadaceae"," Staphylococcaceae"," Thermobifida"," Methylophilaceae"," Halomonadaceae"," Amycolatopsis"," Enterobacteriaceae"," Enterobacteriaceae"," Enterobacteriaceae"," Paenibacillaceae"," Pasteurellaceae"," Enterobacteriaceae"," Halobacteriaceae"," Enterobacteriaceae"," Pseudomonadaceae"," Rhodospirillaceae"," Pseudomonadaceae"," Enterobacteriaceae"," Acaryochloris","0"," Arcanobacterium"," Bradyrhizobiaceae"," Enterobacteriaceae"," Spongiibacteraceae"," Synechococcus"," Eubacteriaceae"," Rhodococcus","0"," Trueperaceae"," Thermoanaerobacterales Family III. Incertae Sedis"," Nitrospira"," Haloferacaceae"," Bacillaceae"," Natrialbaceae"," Phyllobacteriaceae"," Solibacteraceae"," Xanthobacteraceae"," Corynebacterium"," Enterobacteriaceae"," Pasteurellaceae","0"," Alteromonadaceae"," Staphylococcaceae"," Natrialbaceae"," Acidimicrobiaceae"," Rhodobacteraceae"," Bradyrhizobiaceae"," Methylophilaceae"," Clostridiaceae"," Deinococcaceae"," Halomonadaceae"," Enterobacteriaceae"," Pseudomonadaceae"," Pseudomonadaceae"," Haloferacaceae"," Pseudomonadaceae"," Enterobacteriaceae"," Comamonadaceae"," Mycobacterium"," Mycobacterium"," Propionibacterium"," Deinococcaceae"," Enterobacteriaceae"," Veillonellaceae"," Prochlorococcus"," Coriobacteriaceae"," Bacillaceae"," Hyphomicrobiaceae"," Burkholderiaceae"," Enterobacteriaceae"," Blastococcus"," Neisseriaceae"," Clostridiaceae"," Shewanellaceae"," Streptomyces"," Porphyromonadaceae"," Staphylococcaceae"," Burkholderiaceae"," Burkholderiaceae"," Enterobacteriaceae"," Bacillaceae"," Enterobacteriaceae"," Clostridiaceae"," Enterobacteriaceae"," Fervidobacterium"," Pseudothermotoga"," Paenibacillaceae"," Halanaerobiaceae"," Enterobacteriaceae"," Mycobacterium"," Deinococcaceae"," Alcaligenaceae"," Spongiibacteraceae"," Acidobacterium"," Burkholderiaceae"," Burkholderiaceae"," Porphyromonadaceae"," Staphylococcaceae"," Bacillaceae"," Pseudomonadaceae"," Staphylococcaceae"," Enterobacteriaceae"," Eubacteriaceae"," Deinococcaceae"," Streptomyces"," Peptostreptococcaceae"," Rhodanobacteraceae"," Enterobacteriaceae"," Pseudomonadaceae"," Gemmatimonas"," Methylophilaceae"," Bacillaceae"," Bacillaceae"," Legionellaceae"," Burkholderiaceae"," Streptomyces"," Moraxellaceae"," Coxiellaceae"," Enterobacteriaceae"," Rhodocyclaceae"," Alcaligenaceae"," Enterobacteriaceae"," Bacillaceae"," Bacillaceae"," Pseudomonadaceae"," Helicobacteraceae"," Rikenellaceae"," Peptoniphilaceae"," Cytophagaceae","0","0"," Pseudomonadaceae"," Leptospira"," Flavobacteriaceae"," Bradyrhizobiaceae"," Ruminococcaceae"," Halobacteriaceae"," Alcanivoracaceae"," Haloferacaceae"," Enterobacteriaceae"," Leptospira"," Bradyrhizobiaceae"," Chitinophagaceae"," Comamonadaceae"," Kibdelosporangium"," Rhodobacteraceae"," Rhodococcus"," Sphaerochaeta"," Bacteroidaceae"," Vibrionaceae"," Rhodospirillaceae"," Enterobacteriaceae"," Lachnospiraceae"," Bacillaceae"," Synechococcus"," Lactobacillaceae"," Porphyromonadaceae"," Gordonia"," Methylobacteriaceae"," Burkholderiaceae"," Acetobacteraceae"," Moraxellaceae"," Halanaerobiaceae"," Saprospiraceae"," Bacillaceae"," Vibrionaceae"," Porphyromonadaceae"," Anaplasmataceae"," Frankia"," Pseudomonadaceae"," Methylobacteriaceae"," Helicobacteraceae"," Bacillaceae"," Rhodobacteraceae"," Cyanothece"," Corynebacterium"," Rhodospirillaceae"," Corynebacterium"," Rikenellaceae"," Deinococcaceae"," Natrialbaceae"," Enterobacteriaceae"," Bradyrhizobiaceae"," Enterobacteriaceae"," Paenibacillaceae"," Actinomyces"," Legionellaceae"," Legionellaceae"," Oxalobacteraceae"," Beijerinckiaceae"," Aeromonadaceae"," Oscillospiraceae"," Deinococcaceae"," Treponema"," Comamonadaceae"," Amycolicicoccus"," Planococcaceae"," Thermosipho"," Fervidobacterium"," Legionellaceae"," Blattabacteriaceae"," Gloeocapsa"," Streptomyces"," Spirochaeta"," Moraxellaceae"," Legionellaceae"," Pseudomonadaceae"," Mycobacterium"," Clostridiaceae"," Pseudomonadaceae"," Pseudomonadaceae"," Pseudomonadaceae"," Moraxellaceae"," Francisellaceae"," Rhodospirillaceae"," Vibrionaceae"," Fervidobacterium"," Vibrionaceae"," Burkholderiaceae"," Burkholderiaceae"," Rhodanobacteraceae"," Frankia"," Burkholderiaceae"," Streptomyces"," Dermabacter"," Halomonadaceae"," Burkholderiaceae"," Pseudomonadaceae"," Staphylococcaceae"," Rhodococcus"," Burkholderiaceae"," Flavonifractor"," Vibrionaceae"," Cytophagaceae"," Hyphomonadaceae"," Candidatus Protochlamydia"," Propionibacterium"," Fusobacterium"," Bradyrhizobiaceae"," Vibrionaceae","0"," Actinomyces"," Mycobacterium"," Burkholderiaceae"," Pseudomonadaceae","0","0"," Burkholderiaceae"," Vibrionaceae"," Bifidobacterium"," Enterobacteriaceae"," Deinococcaceae"," Moraxellaceae"," Clostridiales Family XIII. Incertae Sedis"," Peptoniphilaceae"," Spirochaeta"," Paenibacillaceae"," Lachnospiraceae","0"," Anaplasmataceae"," Flavobacteriaceae"," Haloferacaceae"," Cellvibrionaceae"," Comamonadaceae"," Leptospira"," Gordonia"," Anaplasmataceae"," Fusobacterium"," Kutzneria"," Pseudomonadaceae"," Halomonadaceae"," Bifidobacterium"," Frankia"," Burkholderiaceae"," Mycobacterium"," Burkholderiaceae"," Flavobacteriaceae"," Conexibacteraceae"," Rhodobacteraceae"," Alicyclobacillaceae"," Jonesia"," Staphylococcaceae"," Propionibacterium"," Vibrionaceae"," Vibrionaceae"," Deinococcaceae"," Lachnospiraceae"," Phyllobacteriaceae"," Corynebacterium"," Paenibacillaceae"," Comamonadaceae"," Rhodospirillaceae"," Gardnerella"," Deinococcaceae"," Acetobacteraceae"," Alteromonadaceae"," Lachnospiraceae"," Thermoanaerobacteraceae"," Enterobacteriaceae"," Vibrionaceae"," Chromobacteriaceae"," Prevotellaceae"," Anaplasmataceae"," Fervidobacterium"," Burkholderiaceae","0"," Hyphomicrobiaceae"," Rickettsiaceae"," Rickettsiaceae"," Bradyrhizobiaceae"," Vibrionaceae"," Deinococcaceae"," Burkholderiaceae"," Chromobacteriaceae"," Nitrosomonadaceae"," Leptospira"," Rhizobiaceae"," Pseudomonadaceae"," Streptomyces"," Anaplasmataceae"," Nitrosomonadaceae"," Moraxellaceae"," Blattabacteriaceae"," Anaplasmataceae"," Planctomycetaceae"," Sphingomonadaceae"," Comamonadaceae"," Alteromonadaceae"," Bifidobacterium"," Rickettsiaceae"," Bifidobacterium"," Burkholderiaceae"," Gordonia"," Erysipelotrichaceae"," Bifidobacterium"," Pseudomonadaceae"," Bifidobacterium"," Streptomyces"," Bifidobacterium"," Lactobacillaceae"," Sphingomonadaceae"," Methylophilaceae"," Fusobacterium"," Treponema"," Pelagibacteraceae"," Leptotrichia"," Acidaminococcaceae"," Phyllobacteriaceae"," Sphingomonadaceae"," Bacillaceae"," Pseudomonadaceae"," Xanthobacteraceae"," Sphingobacteriaceae"," Staphylococcaceae"," Clostridiaceae"," Ruminococcaceae"," Vibrionaceae"," Clostridiaceae"," Clostridiaceae"," Methylobacteriaceae"," Paenibacillaceae"," Methylophilaceae"," Caulobacteraceae"," Bacteroidaceae"," Coxiellaceae"," Vibrionaceae"," Enterococcaceae"," Enterobacteriaceae"," Ruminococcaceae"," Anaplasmataceae"," Turneriella"," Cytophagaceae"," Bifidobacterium"," Enterobacteriaceae"," Cyclobacteriaceae"," Bifidobacterium"," Fusobacterium"," Xanthomonadaceae"," Rhodospirillaceae"," Anaplasmataceae"," Blattabacteriaceae"," Comamonadaceae"," Rickettsiaceae"," Pseudomonadaceae"," Pseudomonadaceae"," Bacteroidaceae","0"," Blattabacteriaceae"," Alteromonadaceae"," Bacillaceae"," Comamonadaceae"," Staphylococcaceae"," Aurantimonadaceae"," Peptoniphilaceae"," Rhodobacteraceae"," Rickettsiaceae"," Anaplasmataceae"," Anaplasmataceae"," Anaplasmataceae"," Anaplasmataceae"," Anaplasmataceae"," Anaplasmataceae"," Comamonadaceae"," Listeriaceae"," Bifidobacterium"," Blattabacteriaceae"," Flavobacteriaceae"," Blattabacteriaceae"," Lachnospiraceae"," Xanthomonadaceae"," Xanthomonadaceae"," Natrialbaceae"," Sphingomonadaceae"," Brachybacterium"," Acetobacteraceae"," Enterobacteriaceae"," Haloferacaceae"," Gardnerella"," Fibrobacter"," Cystobacterineae"," Alteromonadaceae"," Bifidobacterium"," Enterobacteriaceae"," Burkholderiaceae"," Rickettsiaceae"," Rhodococcus"," Bifidobacterium"," Thermaceae"," Treponema"," Halobacteriaceae"," Anaplasmataceae"," Sphingomonadaceae"," Enterobacteriaceae"," Vibrionaceae","0","0"," Alcaligenaceae"," Xanthomonadaceae"," Staphylococcaceae"," Treponema"," Bacillaceae"," Phycisphaeraceae"," Flammeovirgaceae"," Rhodobacteraceae"," Rhizobiaceae"," Bifidobacterium"," Flavobacteriaceae"," Cystobacterineae"," Paenibacillaceae"," Bartonellaceae"," Flavobacteriaceae"," Neisseriaceae"," Streptomyces"," Lactobacillaceae"," Sphingobacteriaceae"," Clostridiaceae"," Enterobacteriaceae"," Enterobacteriaceae"," Peptostreptococcaceae"," Paenibacillaceae","0"," Colwelliaceae"," Bacteroidaceae"," Rhizobiaceae"," Enterobacteriaceae"," Burkholderiaceae"," Pseudomonadaceae"," Prevotellaceae"," Burkholderiaceae"," Porphyromonadaceae"," Bradyrhizobiaceae"," Thermosipho"," Treponema"," Bacteroidaceae"," Halomonadaceae"," Spirochaeta"," Pimelobacter"," Paenibacillaceae"," Cytophagaceae"," Rickettsiaceae"," Rhizobiaceae"," Bacteroidaceae"," Cystobacterineae"," Pseudomonadaceae"," Enterococcaceae"," Actinomyces"," Sphingobacteriaceae"," Amycolatopsis"," Anaplasmataceae"," Eubacteriaceae"," Burkholderiaceae"," Alteromonadaceae"," Parachlamydia"," Burkholderiaceae"," Cellvibrionaceae"," Clostridiaceae"," Enterobacteriaceae"," Rhodobacteraceae"," Bifidobacterium","0"," Erythrobacteraceae"," Cellulomonas"," Prevotellaceae"," Oxalobacteraceae"," Alcaligenaceae"," Alteromonadaceae"," Rothia"," Candidatus Midichloriaceae"," Rothia"," Peptoniphilaceae"," Bacteroidaceae"," Alcaligenaceae"," Pelagibacteraceae"," Mycobacterium"," Bifidobacterium"," Burkholderiaceae"," Treponema"," Enterobacteriaceae"," Rhizobiaceae"," Psychromonadaceae"," Planococcaceae"," Listeriaceae"," Streptococcaceae"," Hyphomonadaceae"," Flavobacteriaceae"," Sphaerochaeta"," Holosporaceae"," Rickettsiaceae"," Rickettsiaceae"," Streptomyces"," Corynebacterium"," Enterobacteriaceae"," Sphingobacteriaceae"," Pseudomonadaceae"," Treponema"," Comamonadaceae"," Hyphomicrobiaceae"," Comamonadaceae"," Salinibacter"," Nitrosomonadaceae"," Methylophilaceae"," Rhizobiaceae"," Alteromonadaceae"," Oxalobacteraceae"," Oxalobacteraceae"," Moritellaceae"," Cystobacterineae"," Bartonellaceae"," Flavobacteriaceae"," Bifidobacterium"," Bartonellaceae"," Comamonadaceae"," Cellulomonas"," Atopobiaceae"," Erythrobacteraceae"," Rhizobiaceae"," Rhizobiaceae"," Enterobacteriaceae"," Cystobacterineae"," Staphylococcaceae"," Parascardovia"," Rickettsiaceae","0"," Rhizobiaceae"," Pseudomonadaceae"," Spiroplasmataceae"," Corynebacterium"," Scardovia"," Mycobacterium"," Francisellaceae"," Chitinophagaceae"," Enterobacteriaceae"," Phyllobacteriaceae"," Bifidobacterium"," Spiroplasmataceae"," Lactobacillaceae"," Rickettsiaceae"," Porphyromonadaceae"," Bartonellaceae"," Glutamicibacter"," Neisseriaceae"," Enterobacteriaceae"," Prevotellaceae"," Prolixibacteraceae"," Nitrosomonadaceae"," Oxalobacteraceae"," Oxalobacteraceae"," Alcaligenaceae"," Enterobacteriaceae"," Corynebacterium"," Streptococcaceae"," Burkholderiaceae"," Arsenicicoccus"," Rickettsiaceae"," Bartonellaceae"," Planococcaceae"," Francisellaceae"," Bradyrhizobiaceae"," Flavobacteriaceae"," Burkholderiaceae"," Cellvibrionaceae"," Listeriaceae"," Listeriaceae"," Pseudomonadaceae"," Neisseriaceae"," Flavobacteriaceae"," Methylobacteriaceae"," Opitutaceae"," Alteromonadaceae"," Acholeplasmataceae"," Amoebophilaceae"," Brachyspira"," Pseudomonadaceae"," Hymenobacteraceae"," Enterobacteriaceae"," Roseateles"," Paenibacillaceae"," Flavobacteriaceae"," Piscirickettsiaceae"," Candidatus Puniceispirillum"," Brachyspira"," Flavobacteriaceae"," Neisseriaceae"," Chitinophagaceae"," Alcaligenaceae"," Sneathia"," Pelagibacteraceae"," Dermacoccus"," Enterococcaceae"," Verrucomicrobiaceae"," Cystobacterineae"," Alcaligenaceae"," Alcaligenaceae"," Streptococcaceae"," Enterobacteriaceae"," Atopobiaceae"," Enterococcaceae"," Parvularculaceae"," Halomonadaceae"," Mycoplasma"," Enterobacteriaceae"," Prevotellaceae"," Corynebacterium"," Ruminococcaceae"," Nocardia"," Staphylococcaceae"," Haloferacaceae","0"," Trueperella"," Bartonellaceae"," Corynebacterium","0"," Oxalobacteraceae"," Streptococcaceae"," Corynebacterium"," Burkholderiaceae"," Burkholderiaceae"," Prevotellaceae"," Pseudomonadaceae"," Streptococcaceae"," Pseudomonadaceae"," Pseudomonadaceae"," Burkholderiaceae"," Bartonellaceae"," Mycoplasma"," Bdellovibrionaceae"," Brucellaceae"," Burkholderiaceae"," Rhodanobacteraceae"," Pelagibacteraceae"," Cytophagaceae"," Enterococcaceae"," Streptomyces"," Flavobacteriaceae"," Pseudomonadaceae"," Cytophagaceae"," Streptomyces"," Francisellaceae"," Rhodococcus"," Alteromonadaceae"," Atopobiaceae"," Streptomyces"," Brachyspira"," Mycoplasma"," Mycoplasma"," Mycoplasma"," Mycoplasma"," Sphingomonadaceae"," Thalassolituus"," Lachnospiraceae"," Flavobacteriaceae"," Aurantimonadaceae"," Mycoplasma"," Mycoplasma"," Sphingomonadaceae"," Saccharospirillaceae"," Beutenbergia"," Cyclobacteriaceae"," Enterococcaceae"," Lactobacillaceae"," Streptomyces"," Aurantimonadaceae"," Phyllobacteriaceae"," Streptomyces"," Acholeplasmataceae"," Burkholderiaceae"," Burkholderiaceae"," Wenzhouxiangellaceae"," Phyllobacteriaceae"," Pseudomonadaceae"," Streptomyces"," Oxalobacteraceae"," Cystobacterineae"," Rhizobiaceae"," Fusobacterium"," Streptococcaceae"," Acidimicrobiaceae"," Alcaligenaceae"," Alcanivoracaceae"," Corynebacterium"," Cyclobacteriaceae"," Acetobacteraceae"," Flavobacteriaceae"," Enterococcaceae"," Brucellaceae"," Kribbella"," Burkholderiaceae"," Corynebacterium"," Flavobacteriaceae"," Bdellovibrionaceae"," Bdellovibrionaceae"," Bacillales Family XII. Incertae Sedis"," Bartonellaceae"," Burkholderiaceae"," Mycoplasma"," Catenulispora"," Acetobacteraceae"," Oleispira"," Sphingomonadaceae"," Chromobacteriaceae"," Sphingobacteriaceae"," Geodermatophilus"," Neisseriaceae"," Pseudomonadaceae"," Rhodospirillaceae"," Rhodospirillaceae"," Burkholderiaceae"," Xanthomonadaceae"," Acholeplasmataceae"," Porphyromonadaceae"," Actinosynnema"," Nannocystineae"," Flavobacteriaceae"," Flammeovirgaceae"," Enterobacteriaceae"," Flavobacteriaceae"," Francisellaceae"," Bartonellaceae"," Acetobacteraceae"," Xanthomonadaceae"," Acidaminococcaceae"," Cytophagaceae"," Rhodospirillaceae"," Acholeplasmataceae"," Mycoplasma"," Mycoplasma"," Mycoplasma"," Burkholderiaceae"," Kocuria","0"," Sphingomonadaceae"," Corynebacterium"," Brucellaceae"," Bacteroidaceae"," Phyllobacteriaceae"," Flavobacteriaceae"," Caulobacteraceae"," Paucibacter"," Leptotrichia"," Pseudomonadaceae"," Burkholderiaceae"," Corynebacterium"," Chlamydia/Chlamydophila group"," Staphylococcaceae"," Acetobacteraceae"," Enterobacteriaceae"," Brachyspira"," Rhizobiaceae"," Cyclobacteriaceae"," Streptobacillus"," Enterobacteriaceae"," Streptomyces"," Xanthomonadaceae"," Pseudonocardia"," Kocuria"," Streptomyces"," Chlamydia/Chlamydophila group"," Chlamydia/Chlamydophila group"," Alcaligenaceae"," Prevotellaceae"," Sphingomonadaceae"," Neisseriaceae"," Corynebacterium"," Acholeplasmataceae"," Chlamydia/Chlamydophila group"," Rhodanobacteraceae"," Pseudomonadaceae"," Xanthomonadaceae"," Streptomyces"," Prevotellaceae"," Xanthomonadaceae"," Streptomyces"," Arthrobacter"," Mycoplasma"," Cellulomonas"," Vibrionaceae"," Cellvibrionaceae"," Bdellovibrionaceae"," Acholeplasmataceae"," Planococcaceae"," Chlamydia/Chlamydophila group"," Chlamydia/Chlamydophila group"," Alcaligenaceae"," Streptomyces"," Lactobacillaceae"," Streptomyces"," Mycobacterium"," Microlunatus"," Amoebophilaceae"," Mycoplasma"," Chlamydia/Chlamydophila group"," Chlamydia/Chlamydophila group"," Chlamydia/Chlamydophila group"," Chlamydia/Chlamydophila group"," Nitrosomonadaceae"," Flavobacteriaceae"," Shewanellaceae"," Mycobacterium"," Streptomyces"," Erythrobacteraceae"," Cytophagaceae"," Rhizobiaceae"," Comamonadaceae"," Streptomyces"," Streptomyces"," Streptomyces"," Porphyromonadaceae"," Enterococcaceae"," Planococcaceae"," Burkholderiaceae"," Flavobacteriaceae"," Spiroplasmataceae","0"," Carnobacteriaceae"," Pseudomonadaceae"," Cytophagaceae"," Mycobacterium"," Comamonadaceae"," Pseudomonadaceae"," Mycoplasma"," Lactobacillaceae"," Enterobacteriaceae"," Sphingomonadaceae"," Mycoplasma"," Sphingomonadaceae"," Mycoplasma"," Brevibacterium"," Cytophagaceae"," Vibrionaceae"," Acetobacteraceae"," Rhizobiaceae"," Mycoplasma"," Lactobacillaceae"," Mycobacterium,"," Nocardia"," Saccharothrix"," Alteromonadaceae"," Mycoplasma"," Cyclobacteriaceae"," Spiroplasmataceae"," Spiroplasmataceae"," Burkholderiaceae"," Moraxellaceae"," Mycoplasma"," Flavobacteriaceae"," Cystobacterineae"," Spiroplasmataceae"," Enterobacteriaceae"," Oxalobacteraceae"," Cytophagaceae"," Streptomyces"," Xanthomonadaceae"," Alcanivoracaceae"," Salinispira"," Mycoplasma"," Sphingomonadaceae"," Spiroplasmataceae"," Burkholderiaceae"," Burkholderiaceae"," Spiroplasmataceae"," Spiroplasmataceae"," Burkholderiaceae"," Flavobacteriaceae"," Fimbriimonadaceae"," Pseudomonadaceae"," Streptomyces"," Borrelia"," Borrelia"," Alteromonadaceae"," Borreliella"," Borreliella"," Borrelia"," Pseudomonadaceae"," Rothia"," Moraxellaceae"," Spiroplasmataceae"," Mycoplasma"," Mycoplasma"," Mycobacterium"," Mycobacterium"," Mycoplasma"," Pseudomonadaceae"," Pseudomonadaceae"," Leuconostocaceae"," Borrelia"," Borreliella"," Flavobacteriaceae"," Mycoplasma"," Leuconostocaceae"," Burkholderiaceae"," Comamonadaceae"," Oxalobacteraceae"," Flavobacteriaceae"," Flammeovirgaceae"," Mycoplasma"," Lactobacillaceae"," Mycoplasma"," Luteipulveratus"," Sphingomonadaceae"," Streptococcaceae"," Rhizobiaceae"," Borreliella"," Alcaligenaceae"," Rhizobiaceae"," Alteromonadaceae"," Streptococcaceae"," Ureaplasma"," Ureaplasma"," Leuconostocaceae"," Streptococcaceae"," Candidatus Paracaedibacteraceae"," Entomoplasmataceae"," Pseudoalteromonadaceae"," Flavobacteriaceae"," Borreliella"," Mycoplasma"," Caulobacteraceae"," Cytophagaceae"," Rhodanobacteraceae"," Sphingomonadaceae"," Lactobacillaceae"," Spiroplasmataceae","0"," Pseudomonadaceae"," Pseudomonadaceae"," Pseudomonadaceae"," Colwelliaceae"," Sphingomonadaceae"," Pseudonocardia"," Nitrosomonadaceae"," Kineococcus"," Pseudomonadaceae"," Streptomyces"," Mycobacterium"," Mycoplasma"," Streptomyces"," Streptomyces"," Rhizobiaceae"," Pseudomonadaceae"," Alcaligenaceae"," Lactobacillaceae"," Lactobacillaceae"," Streptomyces"," Rhizobiaceae"," Mycoplasma"," Mycoplasma"," Halomonadaceae"," Acetobacteraceae"," Erysipelotrichaceae"," Sorangiineae"," Deinococcaceae"," Xanthomonadaceae"," Cystobacterineae"," Sphingomonadaceae"," Moraxellaceae"," Erythrobacteraceae"," Rhodococcus"," Flavobacteriaceae"," Lactobacillaceae"," Xylanimonas"," Sphingomonadaceae"," Sphingomonadaceae"," Planococcaceae"," Rhizobiaceae"," Mycoplasma"," Burkholderiaceae"," Flavobacteriaceae"," Corynebacterium"," Pseudoalteromonadaceae"," Mycoplasma"," Burkholderiaceae"," Comamonadaceae"," Xanthomonadaceae"," Burkholderiaceae"," Idiomarinaceae"," Gordonia"," Pseudomonadaceae"," Burkholderiaceae"," Alteromonadaceae"," Jeotgalicoccus"," Nocardia"," Lactobacillaceae"," Corynebacterium"," Moraxellaceae"," Rhodococcus"," Arthrobacter"," Corynebacterium"," Comamonadaceae"," Simkania"," Kitasatospora"," Mycoplasma"," Caulobacteraceae"," Clostridiaceae"," Rhodospirillaceae"," Cryomorphaceae"," Burkholderiaceae"," Corynebacterium"," Hyphomonadaceae"," Streptococcaceae"," Moraxellaceae"," Streptococcaceae"," Hyphomicrobiaceae"," Comamonadaceae"," Corynebacterium"," Streptomyces"," Alteromonadaceae"," Planococcaceae"," Streptococcaceae"," Acholeplasmataceae","0"," Leuconostocaceae"," Flavobacteriaceae"," Leuconostocaceae"," Lactobacillaceae"," Streptococcaceae"," Pseudomonadaceae"," Flavobacteriaceae"," Enterobacteriaceae"," Halobacteriaceae"," Alcaligenaceae"," Burkholderiaceae"," Corynebacterium"," Caulobacteraceae"," Pseudoalteromonadaceae"," Cryomorphaceae"," Streptococcaceae"," Lactobacillaceae"," Streptococcaceae"," Pseudoalteromonadaceae"," Streptococcaceae"," Lactobacillaceae"," Lactobacillaceae"," Leuconostocaceae"," Rhodobacteraceae"," Lactobacillaceae"," Pseudoalteromonadaceae"," Aerococcaceae"," Flavobacteriaceae"," Legionellaceae"," Pseudonocardia"," Sphingobacteriaceae"," Xanthomonadaceae"," Corynebacterium"," Sphingomonadaceae"," Streptococcaceae"," Nocardia"," Pseudomonadaceae"," Tsukamurella"," Streptococcaceae"," Oxalobacteraceae"," Lactobacillaceae"," Lactobacillaceae"," Saprospiraceae"," Xanthomonadaceae"," Lactobacillaceae"," Flavobacteriaceae"," Streptomyces"," Caulobacteraceae"," Xanthomonadaceae"," Hyphomicrobiaceae"," Streptococcaceae"," Leuconostocaceae"," Streptococcaceae"," Nitrosomonadaceae"," Marinomonas"," Pseudoalteromonadaceae"," Cardiobacteriaceae"," Streptococcaceae"," Bacillaceae"," Streptococcaceae"," Lactobacillaceae"," Burkholderiaceae"," Sphingomonadaceae"," Arthrobacter"," Legionellaceae"," Streptococcaceae"," Rhizobiaceae"," Bacillales Family XI. Incertae Sedis"," Flavobacteriaceae"," Flavobacteriaceae"," Leuconostocaceae"," Leuconostocaceae"," Flavobacteriaceae"," Rhizobiaceae"," Lactobacillaceae"," Xanthomonadaceae"," Comamonadaceae"," Erythrobacteraceae"," Streptomyces"," Xanthomonadaceae"," Alcaligenaceae"," Marinomonas"," Caulobacteraceae"," Lactobacillaceae"," Rhizobiaceae"," Xanthomonadaceae"," Streptococcaceae"," Oxalobacteraceae"," Planococcaceae"," Arthrobacter"," Leuconostocaceae"," Natrialbaceae"," Actinotignum"," Acholeplasmataceae"," Halobacteriovoraceae"," Corynebacterium"," Streptococcaceae"," Rhizobiaceae"," Rhizobiaceae"," Flavobacteriaceae"," Xanthomonadaceae"," Rhizobiaceae"," Flavobacteriaceae"," Flavobacteriaceae"," Streptococcaceae"," Nitrosomonadaceae","0"," Mycobacterium"," Streptococcaceae"," Marinomonas"," Streptococcaceae"," Aerococcaceae"," Rhizobiaceae"," Streptococcaceae"," Kytococcus"," Lactobacillaceae"," Rhizobiaceae"," Rhodospirillaceae"," Alteromonadaceae"," Streptococcaceae"," Xanthomonadaceae"," Pseudarthrobacter"," Xanthomonadaceae"," Streptococcaceae"," Caulobacteraceae"," Streptococcaceae"," Caulobacteraceae"," Rhizobiaceae"," Rhizobiaceae"," Corynebacterium"," Streptococcaceae"," Kocuria"," Pseudoalteromonadaceae"," Lactobacillaceae"," Amycolatopsis"," Rhizobiaceae"," Isoptericola"," Clavibacter"," Lactobacillaceae"," Flavobacteriaceae"," Flavobacteriaceae"," Glutamicibacter"," Corynebacterium"," Flavobacteriaceae"," Bacillales Family XII. Incertae Sedis"," Bacillales Family XII. Incertae Sedis"," Bacillales Family XII. Incertae Sedis"," Luna cluster"," Xanthomonadaceae"," Arthrobacter"," Sanguibacter"," Flavobacteriaceae"," Pseudomonadaceae"," Aerococcaceae"," Aerococcaceae"," Erythrobacteraceae"," Lactobacillaceae"," Microbacterium"," Waddlia"," Corynebacterium"," Segniliparus"," Microbacterium"," Paenarthrobacter"," Arthrobacter"," Sphingomonadaceae"," Streptococcaceae"," Corynebacterium"," Arthrobacter"," Microbacterium"," Carnobacteriaceae"," Leifsonia"," Rhodobiaceae"," Corynebacterium"," Arthrobacter"," Mycobacterium"," Aerococcaceae"," Corynebacterium"," Corynebacterium"," Rathayibacter"," Lactobacillaceae"," Microbacterium"," Corynebacterium"," Pseudarthrobacter"," Carnobacteriaceae"," Bacillaceae"," Leifsonia"," Corynebacterium"," Pseudarthrobacter"," Renibacterium"," Corynebacterium"," Corynebacterium"," Clavibacter"," Clavibacter"," Clavibacter"," Microbacterium"," Corynebacterium"," Leifsonia"," Corynebacterium"," Clavibacter"," Micrococcus"],[" Moorella group"," Archaeoglobus"," Candidatus Desulforudis"," Chlorobium/Pelodictyon group"," Chlorobium/Pelodictyon group"," Chlorobium/Pelodictyon group"," Thiobacillus"," Desulfohalobium"," Desulfovibrio"," Desulfovibrio"," Chlorobaculum","0"," Desulfovibrio"," Desulfovibrio"," Desulfovibrio"," Desulfobacca"," Desulfovibrio"," Archaeoglobus","0"," Thioalkalivibrio","0","0"," Desulfotomaculum"," Allochromatium"," Sulfuricella"," Thiocystis"," Desulfurivibrio"," Desulfobacula","0"," Desulfomicrobium"," Desulfovibrio"," Syntrophobacter"," Thioploca"," Desulfovibrio"," Thioalkalivibrio"," Archaeoglobus"," Desulfocapsa"," Desulfotomaculum","0"," Desulfotalea"," Vulcanisaeta","0"," Thioalkalivibrio"," Thermodesulfobium"," Desulfovibrio","0"," Thermoproteus"," Thioflavicoccus","0"," Desulfotomaculum"," Desulfarculus"," Magnetospira"," Archaeoglobus"," Desulfotomaculum"," Desulfovibrio"," Desulfobulbus","0"," Desulfobacterium"," Desulfatibacillum"," Hyperthermus"," Chlorobium/Pelodictyon group"," Desulfosporosinus"," Desulfosporosinus"," Thermincola"," Chlorobium/Pelodictyon group","0"," Desulfosporosinus"," Carboxydothermus","0"," Pyrolobus"," Methanocaldococcus","0"," Desulfotomaculum"," Thermoproteus"," Palaeococcus"," Ferroglobus","0","0"," Moorella group"," Sulfuritalea"," Sideroxydans"," Prosthecochloris"," Thermococcus"," Ignicoccus"," Chlorobaculum"," Thermococcus"," Pyrococcus"," Desulfomonile"," Thermococcus"," Sulfuricurvum","0"," Pyrobaculum"," Thermococcus"," Chlorobium/Pelodictyon group"," Geoglobus"," Methanocaldococcus","0"," Pyrococcus"," Desulfococcus"," Sulfurimonas"," Methanocaldococcus"," Geoglobus","0"," Pyrodictium","0"," Thermococcus"," Chlorobium/Pelodictyon group"," Thermococcus"," Acidithiobacillus"," Sulfurimonas"," Methanocella","0"," Pyrococcus"," Vulcanisaeta"," Pyrococcus","0"," Acidithiobacillus","0"," Thioalkalivibrio"," Methanocella"," Sulfurospirillum"," Thermofilum"," Methanocaldococcus"," Thermofilum"," Staphylothermus"," Methanosaeta","0","0"," Sulfurimonas"," Staphylothermus"," Chloroherpeton"," Magnetococcus"," Metallosphaera"," Nautilia"," Sulfurospirillum"," Thermofilum"," Sulfurospirillum"," Campylobacter","0"," Acidithiobacillus"," Geobacter"," Methanosalsum"," Methanothermococcus"," Magnetospirillum"," Anaeromyxobacteraceae"," Methanosarcina"," Methanobacterium","0"," Arcobacter"," Methanococcus"," Anaeromyxobacteraceae"," Campylobacter"," Chloroflexaceae"," Methanotorris"," Methanosarcina"," Methanothermobacter"," Methanothermobacter"," Sulfurospirillum"," Campylobacter"," Thermococcus"," Chloroflexaceae"," Methanosarcina"," Caldilinea"," Methanococcus"," Methanococcus"," Magnetospirillum"," Syntrophus"," Thermacetogenium"," Methanothermobacter"," Campylobacter","0"," Methanobrevibacter"," Thermococcus"," Methanocaldococcus"," Methanohalobium"," Thermococcus"," Pyrococcus"," Methanococcus"," Caldivirga"," Thermococcus"," Methanothermus"," Methanosarcina"," Methanosarcina"," Eggerthella"," Methanococcus"," Methanocaldococcus"," Methanosarcina"," Dehalococcoides"," Thermococcus"," Campylobacter"," Thermococcus"," Dehalococcoides"," Campylobacter"," Methanosarcina","0"," Methanobacterium"," Geobacter"," Thermococcus"," Desulfurella"," Methanohalophilus"," Methanoregula"," Thioalkalivibrio"," Methanosarcina"," Dehalococcoides"," Ectothiorhodospira"," Methanolinea"," Anaerobaculum"," Methanosarcina"," Campylobacter"," Thermococcus"," Halothermothrix"," Geobacter"," Geobacter"," Methanolobus"," Methanosarcina"," Campylobacter"," Anaeromyxobacteraceae"," Methanobrevibacter"," Thermus"," Adlercreutzia"," Roseiflexaceae"," Roseiflexaceae","0"," Methanosarcina"," Heliobacterium"," Campylobacter"," Halobacteroides"," Caldisphaera"," Methanobrevibacter"," Methanobacterium"," Geobacter"," Syntrophothermus"," Methanobacterium"," Thermus"," Methanobrevibacter"," Methanoculleus"," Campylobacter"," Filomicrobium"," Sulfolobus"," Thermus"," Thermoanaerobacter"," Methanospirillum","0"," Methanosarcina"," Geobacter","0","0"," Geobacter"," Marichromatium"," Sulfolobus"," Methanoregula"," Geobacter"," Alkalilimnicola"," Methanosphaerula"," Sulfolobus"," Acidilobus"," Thermococcus"," Marinithermus"," Desulfitobacterium"," Slackia"," Methanosphaera"," Syntrophobotulus"," Methanosaeta"," Campylobacter"," Methylacidiphilum"," Cryptobacterium"," Edwardsiella"," Geoalkalibacter"," Eggerthella"," Pelobacter"," Sulfolobus"," Methylacidiphilum"," Methanomassiliicoccus"," Polyangiaceae"," Meiothermus"," Anaerolinea","0"," Thermus"," Methanococcus"," Methanococcus"," Thermogladius"," Marinovum"," Hippea","0"," Acetohalobium"," Dehalobacter","0"," Methylomonas","0"," Campylobacter"," Caldicellulosiruptor","0"," Campylobacter"," Desulfitobacterium"," Methanoculleus"," Thermoplasma"," Caldicellulosiruptor"," Eubacterium"," Halorhodospira"," Planctopirus","0"," Edwardsiella"," Rhodovulum"," Geobacillus"," Campylobacter"," Kyrpidia","0"," Dehalobacter"," Caldicellulosiruptor"," Caldicellulosiruptor"," Thermus"," Desulfurococcus"," Selenomonas","0"," Desulfurococcus"," Selenomonas","0"," Symbiobacterium"," Campylobacter"," Campylobacter"," Campylobacter"," Ferroplasma"," Campylobacter"," Methanomethylovorans"," Halothece"," Geobacter","0"," Aggregatibacter"," Isosphaera"," Campylobacter"," Halorhabdus"," Methanolacinia"," Candidatus Methanomethylophilus"," Methylomonas"," Paenibacillus"," Rhodobacter"," Coprothermobacter"," Selenomonas","0","0"," Paenibacillus","0","0"," Halothiobacillus"," Methylococcus","0"," Methanococcoides"," Desulfitobacterium"," Desulfuromonas"," Singulisphaera"," Pelobacter"," Arcobacter"," Methanocorpusculum"," Caldicellulosiruptor"," Salmonella"," Rubrobacter"," Methanococcoides","0"," Campylobacter","0"," Haemophilus","0"," Aggregatibacter"," Thermovirga"," Polyangiaceae"," Desulfitobacterium"," Thermosphaera","0","0"," Salmonella","0"," Candidatus Methanoplasma"," Pelosinus"," Ruminiclostridium"," Nitrosococcus"," Aeromonas","0","0","0"," Helicobacter","0"," Anoxybacillus"," Salmonella","0"," Campylobacter"," Actinobacillus"," Caldicellulosiruptor"," Methylocystis"," Actinobacillus","0"," Paenibacillus","0"," Dechloromonas","0"," Veillonella","0"," Acidianus"," Paenibacillus"," Clostridium"," Rhodobacter"," Haemophilus","0","0","0","0"," Paracoccus"," Metallosphaera","0"," Helicobacter"," Azoarcus"," Paenibacillus"," Shimwellia","0"," Paenibacillus","0"," Blautia","0"," Paenibacillus"," Pelosinus","0","0"," Aeromonas"," Gilliamella"," Rubrobacter"," Clostridium","0","0"," Methylomonas","0"," Edwardsiella"," Thermoanaerobacter"," Natronobacterium","0"," Alcaligenes"," Shewanella"," Thauera","0"," Frischella"," Methylobacterium"," Paenibacillus"," Helicobacter"," Morganella"," Helicobacter"," Gallionella","0"," Rhodobacter"," Natranaerobius"," Roseobacter"," Azoarcus","0"," Azospira"," Caldisericum"," Cycloclasticus","0"," Pseudomonas","0"," Clostridium"," Clostridium"," Helicobacter","0"," Aminobacterium","0"," Lawsonia"," Oceanimonas","0"," Basfia"," Thermoanaerobacterium"," Clostridium"," Thermanaerovibrio","0","0","0"," Hyphomicrobium"," Proteus"," Clostridium"," Thermoanaerobacter"," Syntrophomonas","0","0","0"," Clostridium","0","0","0"," Haemophilus"," Psychrobacter","0","0"," Clostridium","0"," Helicobacter"," Bacillus"," Bacillus","0"," Clostridium"," Paenibacillus"," Plesiomonas"," Geobacillus"," Shewanella"," Arcobacter","0"," Kosakonia"," Escherichia","0"," Planktomarina"," Bacillus,","0","0"," Methylophaga"," Paenibacillus"," Paenibacillus","0"," Geobacillus"," Grimontia","0","0"," Lysinibacillus","0","0"," Ignavibacterium"," Helicobacter"," Rhodoferax","0"," Yersinia","0"," Bacillus,"," Ruminiclostridium"," Shewanella"," Thiomicrospira"," Thermoanaerobacterium"," Rhodopseudomonas","0","0"," Pectobacterium","0"," Histophilus"," Caldanaerobacter"," Geobacillus","0"," Dinoroseobacter","0","0"," Paenibacillus"," Paenibacillus","0","0"," Roseobacter","0"," Gallibacterium"," Bacillus","0","0"," Endomicrobium"," Pasteurella"," Bacillus,"," Enterobacter"," Melioribacter","0","0"," Staphylococcus"," Blastochloris"," Thioalkalimicrobium","0","0","0"," Francisella"," Paenibacillus","0"," Methylomicrobium","0","0","0","0"," Geobacillus"," Dickeya"," Polaromonas"," Yersinia"," Opitutus"," Psychrobacter"," Halorhabdus"," Shewanella","0"," Natronomonas"," Lactobacillus"," Bacillus,","0"," Thermoanaerobacter"," Pseudomonas"," Rhodopseudomonas"," Ruegeria"," Alcanivorax","0"," Vibrio"," Pseudomonas"," Kosakonia","0"," Celeribacter"," Pseudomonas"," Bacillus,","0"," Shewanella"," Citrobacter"," Pasteurella","0"," Methylophaga","0","0"," Geobacillus","0"," Haemophilus","0","0"," Ferrimonas"," Francisella","0"," Confluentimicrobium"," Alkaliphilus"," Acidiphilium"," Helicobacter"," Helicobacter"," Dickeya"," Ruminiclostridium"," Octadecabacter","0"," Geobacillus","0"," Bacillus"," Lactobacillus"," Haloarcula"," Vibrio"," Zymobacter group"," Pseudomonas"," Serratia"," Rhodopseudomonas","0"," Phaeobacter","0"," Rubinisphaera"," Thauera","0"," Pantoea"," Halobacterium"," Bacillus,","0","0"," Roseibacterium"," Shewanella"," Clostridium","0"," Methylocella"," Meiothermus"," Staphylococcus"," Leclercia"," Bradyrhizobium"," Shewanella"," Shewanella"," Enterobacter,"," Bacillus"," Natrinema"," Halanaeroarchaeum"," Haloarcula","0","0"," Oceanithermus"," Francisella","0"," Aeromonas"," Bacillus"," unclassified Sporolactobacillaceae"," Paenibacillus","0"," Rhodomicrobium","0"," Aeromonas"," Hahella","0","0"," Mannheimia"," Yersinia","0"," Citrobacter"," Paenibacillus"," Citrobacter"," Chelatococcus"," Bacillus"," Azotobacter"," Photobacterium","0"," Bacillus"," Bradyrhizobium"," Methylobacterium"," Escherichia"," Clostridium"," Staphylococcus"," Staphylococcus"," Yersinia"," Paenibacillus"," Yersinia"," Serratia"," Shewanella","0"," Hyphomicrobium"," Thermaerobacter"," Serratia"," Methylobacterium"," Helicobacter"," Salinicoccus"," Aeromonas"," Escherichia"," Alicyclobacillus","0"," Bacillus"," Buchnera","0"," Azoarcus"," Ruminococcus"," Akkermansia"," Vibrio"," Bacillus","0"," Actinobacillus"," Citrobacter,"," Citrobacter,"," Clostridium"," Enterobacter"," Halopiger"," Xanthobacter","0"," Sphaerobacteraceae"," Raoultella"," Methylotenera","0"," Bacteroides"," Bacillus"," Shewanella"," Bacillus"," Candidatus Ishikawaella"," Bacillus"," Psychromonas"," Ruminiclostridium"," Pseudomonas"," Pandoraea"," Helicobacter","0"," Buchnera"," Buchnera"," Buchnera","0"," Bradyrhizobium"," Clostridium"," Enterobacter,"," Pseudomonas","0"," Picrophilus"," Azotobacter"," Peptoclostridium"," Helicobacter","0","0"," ant endosymbionts"," ant endosymbionts","0","0"," Pseudomonas"," Enterobacter,"," Enterobacter,","0","0"," Nitrosococcus"," Granulibacter"," Spiribacter"," Rhodopseudomonas"," Mahella","0"," Phaeobacter"," Clostridium"," Clostridium"," Buchnera"," Clostridium"," Emticicia","0","0"," Thioalkalimicrobium"," Bacillus"," Buchnera"," Alcanivorax"," Elusimicrobium"," Ruegeria","0"," Tolumonas"," Coraliomargarita"," Ruegeria","0"," Cronobacter","0"," Bibersteinia","0"," ant endosymbionts","0"," Pseudomonas","0","0"," Cronobacter"," Cronobacter"," Brevibacillus"," Bacillus","0","0","0","0","0"," Acetobacterium","0"," Kluyvera"," Pseudomonas"," Bradyrhizobium"," Staphylococcus"," Spiribacter"," Vibrio"," Shewanella"," Celeribacter"," Polyangiaceae"," Labrenzia"," Phaeobacter","0"," Rahnella","0"," Nitrosococcus"," Bradyrhizobium"," Clostridium"," Shewanella","0"," Clostridium"," Pluralibacter","0"," Halobacterium"," Pseudomonas"," aphid secondary symbionts"," Bacillus"," Haloterrigena"," Azospirillum","0"," Halomonas"," Bacillus,","0","0"," Bacillus","0"," Paenibacillus","0"," Candidatus Tachikawaea"," Cupriavidus"," Cupriavidus"," Pseudomonas"," Coxiella"," Alkaliphilus"," Enterobacter,"," Pseudomonas"," Staphylococcus","0"," Candidatus Methylopumilus"," Zymobacter group","0"," Enterobacter,"," Pectobacterium"," Pectobacterium"," Paenibacillus"," Mannheimia"," Providencia"," Halomicrobium"," Candidatus Moranella"," Pseudomonas"," Azospirillum"," Pseudomonas"," Lelliottia","0","0","0"," Bradyrhizobium"," Enterobacter,"," Zhongshania","0"," Eubacterium","0","0"," Truepera"," Thermosediminibacter","0"," Haloferax"," Bacillus"," Natronococcus"," Mesorhizobium"," Candidatus Solibacter"," Azorhizobium","0"," Pragia"," Mannheimia","0"," Alteromonas"," Staphylococcus"," Natrinema"," Acidimicrobium"," Leisingera"," Nitrobacter"," Candidatus Methylopumilus"," Clostridium"," Deinococcus"," Halomonas"," Serratia"," Pseudomonas"," Pseudomonas"," Haloferax"," Pseudomonas"," Hafnia","0","0","0","0"," Deinococcus"," ant endosymbionts"," Megasphaera","0"," Coriobacterium"," Bacillus"," Hyphomicrobium"," Burkholderia"," Buchnera","0"," Snodgrassella"," Clostridium"," Shewanella","0"," Odoribacter"," Staphylococcus"," Cupriavidus"," Pandoraea"," Yersinia"," Anoxybacillus"," Cedecea"," Clostridium"," Chania","0","0"," Aneurinibacillus group"," Halanaerobium"," Obesumbacterium","0"," Deinococcus"," Achromobacter"," Spongiibacter","0"," Ralstonia"," Cupriavidus"," Parabacteroides"," Staphylococcus"," Halobacillus"," Pseudomonas"," Staphylococcus"," Enterobacter,"," Eubacterium"," Deinococcus","0"," Peptoclostridium"," Dyella"," Klebsiella"," Pseudomonas","0"," Methylotenera"," Bacillus"," Bacillus"," Tatlockia"," Burkholderia","0"," Psychrobacter"," Coxiella"," Enterobacter"," Aromatoleum"," Basilea"," Sodalis"," Bacillus"," Bacillus"," Pseudomonas"," Helicobacter"," Mucinivorans"," Parvimonas"," Runella","0","0"," Pseudomonas","0"," Maribacter"," Oligotropha"," Ruminococcus"," Halalkalicoccus"," Kangiella"," Halorubrum"," Klebsiella","0"," Rhodopseudomonas"," Niastella"," Comamonas","0"," Halocynthiibacter","0","0"," Bacteroides"," Vibrio"," Azospirillum"," Raoultella","0"," Lysinibacillus","0"," Lactobacillus"," Paludibacter","0"," Methylobacterium"," Polynucleobacter"," Gluconacetobacter"," Moraxella"," Halanaerobium"," Haliscomenobacter"," Bacillus"," Vibrio"," Barnesiella"," Neorickettsia","0"," Pseudomonas"," Methylobacterium"," Helicobacter"," Bacillus"," Jannaschia","0","0"," Rhodospirillum","0"," Alistipes"," Deinococcus"," Halostagnicola"," ant endosymbionts"," Bradyrhizobium"," Serratia"," Brevibacillus","0"," Legionella"," Legionella"," Herminiimonas"," Beijerinckia"," Aeromonas"," Oscillibacter"," Deinococcus","0"," Comamonas","0"," Planococcus","0","0"," Legionella"," Blattabacterium","0","0","0"," Psychrobacter"," Legionella"," Pseudomonas","0"," Clostridium"," Pseudomonas"," Pseudomonas"," Pseudomonas"," Moraxella"," Francisella"," Azospirillum"," Aliivibrio","0"," Vibrio"," Pandoraea"," Pandoraea"," Dyella","0"," Ralstonia","0","0"," Halomonas"," Ralstonia"," Oblitimonas"," Staphylococcus","0"," Paraburkholderia","0"," Vibrio"," Cytophaga"," Hyphomonas","0","0","0"," Bradyrhizobium"," Vibrio","0","0","0"," Burkholderia"," Pseudomonas","0","0"," Polynucleobacter"," Vibrio","0"," Buchnera"," Deinococcus"," Psychrobacter","0"," Anaerococcus","0"," Paenibacillus"," Butyrivibrio","0"," Wolbachieae"," Flavobacterium"," Halogeometricum"," Simiduia"," Polaromonas","0","0"," Anaplasma","0","0"," Pseudomonas"," Chromohalobacter","0","0"," Ralstonia","0"," Ralstonia"," Zobellia"," Conexibacter"," Octadecabacter"," Alicyclobacillus","0"," Staphylococcus","0"," Aliivibrio"," Aliivibrio"," Deinococcus","0"," Hoeflea","0"," Paenibacillus"," Limnohabitans"," Rhodospirillum","0"," Deinococcus"," Komagataeibacter"," Marinobacter","0"," Tepidanaerobacter"," Pantoea"," Vibrio"," Laribacter"," Prevotella"," Wolbachieae","0"," Paraburkholderia","0"," Hyphomicrobium"," Rickettsieae"," Rickettsieae"," Rhodopseudomonas"," Vibrio"," Deinococcus"," Burkholderia,"," Pseudogulbenkiania"," Nitrosospira","0"," Rhizobium/Agrobacterium group"," Pseudomonas","0"," Neorickettsia"," Nitrosomonas"," Moraxella"," Blattabacterium"," Wolbachieae"," Pirellula"," Novosphingobium"," Limnohabitans"," Lacimicrobium","0"," Rickettsieae","0"," Cupriavidus","0","0","0"," Pseudomonas","0","0","0"," Lactobacillus"," Sphingopyxis"," Methylobacillus","0","0","0","0"," Acidaminococcus"," Mesorhizobium"," Sphingobium"," Oceanobacillus"," Pseudomonas"," Starkeya"," Solitalea"," Staphylococcus"," Clostridium"," Ethanoligenens"," Vibrio"," Candidatus Arthromitus"," Candidatus Arthromitus"," Methylobacterium"," Thermobacillus"," Methylovorus"," Phenylobacterium"," Bacteroides","0"," Vibrio"," Enterococcus","0"," Ruminiclostridium"," Neorickettsia","0"," Rufibacter","0"," Xenorhabdus"," Cyclobacterium","0","0"," Stenotrophomonas,"," Tistrella"," Anaplasma"," Blattabacterium"," Ramlibacter"," Rickettsieae"," Pseudomonas"," Pseudomonas"," Bacteroides","0"," Blattabacterium"," Alteromonas"," Bacillus"," Acidovorax"," Staphylococcus"," Martelella"," Finegoldia"," Octadecabacter"," Rickettsieae"," Ehrlichia"," Ehrlichia"," Anaplasma"," Ehrlichia"," Ehrlichia"," Ehrlichia"," Alicycliphilus"," Listeria","0"," Blattabacterium"," Flavobacterium"," Blattabacterium"," Cellulosilyticum"," Stenotrophomonas,"," Stenotrophomonas,"," Natrialba"," Sphingobium","0"," Acetobacter"," Yersinia"," Haloquadratum","0","0"," Vulgatibacteraceae"," Glaciecola","0"," Photorhabdus"," Ralstonia"," Rickettsieae","0","0"," Thermus","0"," Natronomonas"," Wolbachieae"," Sphingobium"," Pantoea"," Vibrio","0","0"," Achromobacter"," Stenotrophomonas,"," Macrococcus","0"," Virgibacillus"," Phycisphaera"," Persicobacter"," Pannonibacter"," Sinorhizobium/Ensifer group","0"," Tenacibaculum"," Cystobacteraceae"," Paenibacillus"," Bartonella"," Flavobacterium"," Neisseria","0"," Lactobacillus"," Sphingobacterium"," Clostridium"," Sodalis"," Candidatus Riesia"," Filifactor"," Paenibacillus","0"," Colwellia"," Bacteroides"," Candidatus Liberibacter"," Yersinia"," Ralstonia"," Pseudomonas"," Prevotella"," Paraburkholderia"," Tannerella"," Bradyrhizobium","0","0"," Bacteroides"," Halomonas","0","0"," Paenibacillus"," Dyadobacter"," Rickettsieae"," Sinorhizobium/Ensifer group"," Bacteroides"," Myxococcaceae"," Pseudomonas"," Tetragenococcus","0"," Sphingobacterium","0"," Wolbachieae"," Eubacterium"," Burkholderia"," Marinobacter","0"," Burkholderia"," Teredinibacter"," Clostridium"," Serratia"," Paracoccus","0","0"," Croceicoccus","0"," Prevotella"," Massilia"," Bordetella"," Glaciecola","0"," Candidatus Midichloria","0"," Peptoniphilus"," Bacteroides"," Achromobacter"," Candidatus Pelagibacter","0","0"," Burkholderia","0"," Photorhabdus"," Candidatus Liberibacter"," Psychromonas"," Planococcus"," Listeria"," Streptococcus"," Maricaulis"," Flavobacterium","0","0"," Rickettsieae"," Rickettsieae","0","0"," Pantoea"," Pseudopedobacter"," Pseudomonas","0"," Ramlibacter"," Devosia"," Delftia","0"," Nitrosospira"," Methylophilus"," Candidatus Liberibacter"," Agarivorans"," Herbaspirillum"," Herbaspirillum"," Moritella"," Myxococcaceae"," Bartonella"," Flavobacterium","0"," Bartonella"," Variovorax","0"," Atopobium"," Altererythrobacter"," Candidatus Liberibacter"," Candidatus Liberibacter"," aphid secondary symbionts"," Myxococcaceae"," Staphylococcus","0"," Rickettsieae","0"," Rhizobium/Agrobacterium group"," Pseudomonas"," Spiroplasma","0","0","0"," Francisella"," Niabella"," Xenorhabdus"," Chelativorans","0"," Spiroplasma"," Lactobacillus"," Rickettsieae"," Porphyromonas"," Bartonella","0"," Neisseria"," Erwinia"," Prevotella"," Draconibacterium"," Nitrosomonas"," Janthinobacterium"," Collimonas"," Castellaniella"," Xenorhabdus","0"," Lactococcus"," Polynucleobacter","0"," Rickettsieae"," Bartonella"," Planococcus"," Francisella"," Nitrobacter"," Robiginitalea"," Cupriavidus"," Saccharophagus"," Listeria"," Listeria"," Pseudomonas,"," Kingella"," Elizabethkingia"," Methylobacterium","0"," Marinobacter"," Candidatus Phytoplasma,"," Candidatus Amoebophilus","0"," Pseudomonas"," Hymenobacter"," Pantoea","0"," Paenibacillus"," Psychroflexus"," Piscirickettsia","0","0"," Riemerella"," Neisseria"," Chitinophaga","0","0"," Candidatus Pelagibacter","0"," Enterococcus"," Verrucomicrobium"," Myxococcaceae"," Taylorella"," Taylorella"," Lactococcus"," Erwinia"," Olsenella"," Enterococcus"," Parvularcula"," Zymobacter group","0"," Xenorhabdus"," Prevotella","0"," Mageeibacillus","0"," Staphylococcus"," Haloferax","0","0"," Bartonella","0","0"," Massilia"," Lactococcus","0"," Burkholderia,"," Burkholderia,"," Prevotella"," Pseudomonas"," Streptococcus,"," Pseudomonas"," Pseudomonas"," Burkholderia,"," Bartonella","0"," Bdellovibrio"," Brucella"," Burkholderia,"," Frateuria","0"," Rufibacter"," Enterococcus","0"," Cellulophaga"," Pseudomonas"," Spirosoma","0"," Francisella","0"," Marinobacter"," Olsenella","0","0","0","0","0","0"," Sphingomonas","0"," Roseburia"," Chryseobacterium"," Aureimonas","0","0"," Sphingopyxis"," Gynuella","0"," Algoriphagus"," Enterococcus"," Lactobacillus","0"," Martelella"," Mesorhizobium","0"," Candidatus Phytoplasma,"," Burkholderia"," Burkholderia"," Wenzhouxiangella"," Mesorhizobium"," Pseudomonas","0"," Janthinobacterium"," Myxococcaceae"," Rhizobium/Agrobacterium group","0"," Lactococcus"," Ilumatobacter","0"," Kangiella","0"," Cyclobacterium"," Acetobacter","0"," Enterococcus"," Ochrobactrum","0"," Burkholderia,","0"," Elizabethkingia"," Bdellovibrio"," Bdellovibrio"," Exiguobacterium"," Bartonella"," Burkholderia","0","0"," Gluconobacter","0"," Sphingomonas"," Chromobacterium"," Pedobacter","0"," Neisseria"," Pseudomonas"," Candidatus Endolissoclinum"," Candidatus Endolissoclinum"," Burkholderia"," Xylella"," Candidatus Phytoplasma,"," Porphyromonas","0"," Kofleriaceae"," Flavobacterium"," unclassified Flammeovirgaceae"," Erwinia"," Myroides"," Francisella"," Bartonella"," Asaia"," Lysobacter"," Acidaminococcus"," Leadbetterella"," Azospirillum"," Candidatus Phytoplasma,","0","0","0"," Burkholderia","0","0"," Sphingobium","0"," Ochrobactrum"," Bacteroides"," Mesorhizobium"," Siansivirga"," Caulobacter","0","0"," Pseudomonas"," Paraburkholderia","0"," Chlamydia"," Staphylococcus"," Acetobacter"," Pantoea","0"," Rhizobium/Agrobacterium group"," Echinicola","0"," Pantoea","0"," Stenotrophomonas","0","0","0"," Chlamydia"," Chlamydia"," Bordetella"," Prevotella"," Sphingopyxis"," Neisseria","0"," Acholeplasma"," Chlamydia"," Rhodanobacter"," Pseudomonas"," Pseudoxanthomonas","0"," Prevotella"," Xylella","0","0","0","0"," Vibrio"," Cellvibrio"," Bdellovibrio"," Acholeplasma"," Planococcus"," Chlamydia"," Chlamydia"," Bordetella","0"," Lactobacillus","0","0","0"," Candidatus Cardinium","0"," Chlamydia"," Chlamydia"," Chlamydia"," Chlamydia"," Nitrosomonas"," Weeksella"," Shewanella","0","0"," Erythrobacter"," Flexibacter"," Rhizobium/Agrobacterium group"," Acidovorax","0","0","0"," Fermentimonas"," Melissococcus"," Planococcus"," Burkholderia,"," Cellulophaga"," Spiroplasma","0"," Carnobacterium"," Pseudomonas,"," Pontibacter","0"," Acidovorax"," Pseudomonas","0"," Lactobacillus"," Erwinia"," Sphingopyxis","0"," Zymomonas","0","0"," Hymenobacter"," Vibrio"," Gluconobacter"," Rhizobium/Agrobacterium group","0"," Pediococcus","0","0","0"," Marinobacter","0"," Belliella"," Spiroplasma"," Spiroplasma"," Burkholderia"," Acinetobacter","0"," Polaribacter"," Myxococcaceae"," Spiroplasma"," Wigglesworthia"," Collimonas"," Hymenobacter","0"," Pseudoxanthomonas"," Alcanivorax","0","0"," Novosphingobium"," Spiroplasma"," Burkholderia,"," Burkholderia,"," Spiroplasma"," Spiroplasma"," Burkholderia,"," Chryseobacterium"," Fimbriimonas"," Pseudomonas","0","0","0"," Alteromonas","0","0","0"," Pseudomonas","0"," Acinetobacter"," Spiroplasma","0","0","0","0","0"," Pseudomonas"," Pseudomonas"," Leuconostoc","0","0"," Algibacter","0"," Weissella"," Burkholderia,"," Acidovorax"," Janthinobacterium"," Ornithobacterium"," Marivirga","0"," Lactobacillus","0","0"," Sphingopyxis"," Streptococcus"," Rhizobium/Agrobacterium group","0"," Bordetella"," Rhizobium/Agrobacterium group"," Alteromonas"," Streptococcus","0","0"," Leuconostoc"," Streptococcus"," Candidatus Paracaedibacter"," Mesoplasma"," Pseudoalteromonas"," Capnocytophaga","0","0"," Caulobacter"," Hymenobacter"," Dyella"," Sphingobium"," Lactobacillus"," Spiroplasma","0"," Pseudomonas,"," Pseudomonas"," Pseudomonas"," Colwellia"," Novosphingobium","0"," Nitrosomonas","0"," Pseudomonas","0","0","0","0","0"," Sinorhizobium/Ensifer group"," Pseudomonas"," Bordetella"," Lactobacillus"," Lactobacillus","0"," Shinella","0","0"," Halotalea"," Komagataeibacter"," Erysipelothrix"," Sandaracinaceae"," Deinococcus"," Lysobacter"," Cystobacteraceae"," Sphingomonas"," Acinetobacter,"," Erythrobacter","0"," Capnocytophaga"," Lactobacillus","0"," Sphingomonas"," Zymomonas"," Planococcus"," Rhizobium/Agrobacterium group","0"," Burkholderia"," Nonlabens","0"," Pseudoalteromonas","0"," Paraburkholderia"," Variovorax"," Xanthomonas"," Burkholderia,"," Idiomarina","0"," Pseudomonas"," Burkholderia"," Alteromonas","0","0"," Pediococcus","0"," Acinetobacter,","0","0","0"," Verminephrobacter","0","0","0"," Asticcacaulis"," Clostridium"," Thalassospira"," Owenweeksia"," Burkholderia","0"," Hirschia"," Streptococcus"," Acinetobacter"," Streptococcus"," Devosia"," Variovorax","0","0"," Paraglaciecola"," Jeotgalibacillus"," Streptococcus"," Acholeplasma","0"," Oenococcus"," Sediminicola"," Leuconostoc"," Lactobacillus"," Streptococcus"," Pseudomonas"," Muricauda"," Wigglesworthia"," Halobacterium"," Pusillimonas"," Burkholderia","0"," Brevundimonas"," Pseudoalteromonas"," Fluviicola"," Streptococcus"," Lactobacillus"," Streptococcus"," Pseudoalteromonas"," Streptococcus"," Lactobacillus"," Lactobacillus"," Weissella"," Ketogulonicigenium"," Lactobacillus"," Pseudoalteromonas"," Aerococcus"," Cellulophaga"," Legionella","0"," Pedobacter"," Xanthomonas","0"," Sphingomonas"," Streptococcus","0"," Pseudomonas","0"," Streptococcus"," Collimonas"," Lactobacillus"," Lactobacillus"," Saprospira"," Lysobacter"," Lactobacillus"," Chryseobacterium","0"," Caulobacter"," Xanthomonas"," Pelagibacterium"," Streptococcus"," Oenococcus"," Streptococcus"," Nitrosomonas","0"," Pseudoalteromonas"," Dichelobacter"," Streptococcus,"," Amphibacillus"," Streptococcus"," Lactobacillus"," Paraburkholderia"," Sphingobium","0"," Legionella"," Streptococcus"," Sinorhizobium/Ensifer group"," Gemella"," Dokdonia"," Nonlabens"," Leuconostoc"," Leuconostoc"," Muricauda"," Rhizobium/Agrobacterium group"," Pediococcus"," Stenotrophomonas"," Ottowia"," Altererythrobacter","0"," Xanthomonas"," Bordetella","0"," Brevundimonas"," Lactobacillus"," Rhizobium/Agrobacterium group"," Xanthomonas"," Streptococcus,"," Herbaspirillum"," Solibacillus","0"," Weissella"," Salinarchaeum","0"," Acholeplasma"," Halobacteriovorax","0"," Streptococcus"," Rhizobium/Agrobacterium group"," Rhizobium/Agrobacterium group"," Dokdonia"," Xanthomonas"," Rhizobium/Agrobacterium group"," Croceibacter"," Winogradskyella"," Streptococcus"," Nitrosomonas","0","0"," Streptococcus","0"," Streptococcus"," Aerococcus"," Rhizobium/Agrobacterium group"," Streptococcus","0"," Lactobacillus"," Rhizobium/Agrobacterium group"," Pararhodospirillum"," Alteromonas"," Streptococcus"," Xanthomonas","0"," Xanthomonas"," Streptococcus"," Brevundimonas"," Streptococcus"," Caulobacter"," Rhizobium/Agrobacterium group"," Rhizobium/Agrobacterium group","0"," Streptococcus,","0"," Pseudoalteromonas"," Lactobacillus","0"," Rhizobium/Agrobacterium group","0","0"," Lactobacillus"," Aequorivita"," Lacinutrix","0","0"," Zunongwangia"," Exiguobacterium"," Exiguobacterium"," Exiguobacterium"," Luna-1 subcluster"," Pseudoxanthomonas","0","0"," Gramella"," Pseudomonas"," Aerococcus"," Aerococcus"," Altererythrobacter"," Lactobacillus","0","0","0","0","0","0","0"," Citromicrobium"," Streptococcus","0","0","0"," Carnobacterium","0"," Parvibaculum","0","0","0"," Aerococcus","0","0","0"," Lactobacillus","0","0","0"," Carnobacterium"," Terribacillus","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0"],["SRB/SR","SRB","Sur","GSB","GSB","GSB","CLSB","SRB","SRB","SRB","GSB","Sur","SRB","SRB","SRB","SRB","SRB","SRB","SRB","CLSB","SRB","SRB","SRB","PSB","Sur","PSB","SRB","SRB","SRB","Sur","SRB","SRB","CLSB","SRB","CLSB","SRB","SRB","SRB","Sur","SRB","SRB/SR","Sur","CLSB","Sur","SRB","Sur","SR","PSB","CLSB","SRB","Sur","Sur","SRB","SRB","SRB","SRB","Sur","SRB","SRB","SR","GSB","SRB","SRB","Sur","GSB","Sur","SRB","Sur","Sur","SRB/SR","Sur","SR","SRB","SR","Sur","Sur","Sur","SOM","Sur","Sur","Sur","GSB","SR","SR","GSB","SR","SR","SRB","SR","Sur","Sur","SR","SR","GSB","Sur","Sur","SOM","SR","SRB","CLSB","Sur","Sur","SOM","SR","SRB/SR","SR","GSB","SR","SOM","CLSB","Sur","SO/SR","SR","SRB/SR","SR","CLSB","SOM","Sur","CLSB","Sur","SR","Sur","Sur","Sur","SR","Sur","SOM","SOM","CLSB","SR","GSB","Sur","SOM","SR","SR","Sur","SR","Sur","Sur","SOM","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","GSB","Sur","Sur","Sur","Sur","SR","Sur","SR","GSB","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","SR","Sur","Sur","SR","SR","Sur","SRB/SR","SR","Sur","S-org","Sur","Sur","Sur","Sur","Sur","Sur","SR","Sur","SR","Sur","Sur","Sur","Sur","Sur","Sur","SR","SR","Sur","Sur","CLSB","S-org","Sur","PSB","Sur","Sur","Sur","Sur","SR","Sur","SRB","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","GSB","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","SO/SR","Sur","Sur","Sur","Sur","Sur","Sur","CLSB","Sur","Sur","PSB","SO/SR","Sur","Sur","SOM","Sur","SO/SR","Sur","SR","Sur","SRB/SR","Sur","Sur","SRB/SR","Sur","Sur","Sur","Sur","Sur","Sur","Sur","SR","SO/SR","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","SRB/SR","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","SRB/SR","Sur","SO/SR","Sur","Sur","PSB","Sur","Sur","Sur","PSB","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","SR","Sur","SRB/SR","SR","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","NS","Sur","NS","NS","NS","NS","NS","Sur","NS","NS","NS","NS","NS","NS","NS","SOM","NS","NS","NS","SRB/SR","SR","NS","SR","NS","NS","NS","NS","NS","NS","NS","Sur","NS","NS","NS","NS","SRB/SR","NS","SRB/SR","SRB/SR","NS","SRB/SR","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","SO/SR","NS","NS","NS","NS","NS","NS","NS","NS","CLSB","SOM","NS","NS","NS","NS","NS","NS","NS","NS","NS","SR","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","CLSB","NS","NS","NS","NS","NS","NS","NS","NS","NS","SR","NS","NS","NS","CLSB","NS","NS","NS","NS","NS","NS","NS","NS","NS","SR","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","SR","NS","NS","NS","NS","NS","NS","NS","NS","NS","CLSB","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","S-org","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","CLSB","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","SR","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","CLSB","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS"],["Suli","Suli","Sur","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Sur","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Sur","Suli","Suli","Suli","Suli","Sur","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Sur","Suli","Suli","Sur","Suli","Sur","Suli","Sur","Suli","Suli","Suli","Suli","Sur","Sur","Suli","Suli","Suli","Suli","Sur","Suli","Suli","Suli","Suli","Suli","Suli","Sur","Suli","Sur","Suli","Sur","Sur","Suli","Sur","Suli","Suli","Suli","Sur","Sur","Sur","Suli","Sur","Sur","Sur","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Sur","Sur","Suli","Suli","Suli","Sur","Sur","Suli","Suli","Suli","Suli","Sur","Sur","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Suli","Sur","Suli","Suli","Suli","Suli","Suli","Suli","Sur","Suli","Sur","Suli","Sur","Sur","Sur","Suli","Sur","Suli","Suli","Suli","Suli","Suli","Sur","Suli","Suli","Suli","Sur","Suli","Sur","Sur","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Sur","Sur","Sur","Sur","Suli","Sur","Suli","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Sur","Sur","Suli","Suli","Sur","Suli","Suli","Sur","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Sur","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Suli","Sur","Sur","Suli","Suli","Sur","Suli","Sur","Sur","Sur","Sur","Suli","Sur","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Sur","Sur","Suli","Suli","Sur","Sur","Suli","Sur","Suli","Sur","Suli","Sur","Suli","Sur","Sur","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Sur","Suli","Sur","Sur","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Suli","Sur","Suli","Suli","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","Sur","NS","Sur","NS","NS","NS","NS","NS","Sur","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","Suli","Suli","NS","Suli","NS","NS","NS","NS","NS","NS","NS","Sur","NS","NS","NS","NS","Suli","NS","Suli","Suli","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","Suli","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","Suli","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS","NS"],[12.508,12.024,11.972,11.836,11.649,11.625,11.61,11.511,11.5,11.442,11.354,11.205,11.093,11.034,10.955,10.947,10.923,10.89,10.851,10.846,10.793,10.772,10.745,10.737,10.699,10.633,10.574,10.574,10.538,10.495,10.479,10.342,10.327,10.322,10.256,10.229,10.202,10.187,10.157,10.151,10.112,10.109,10.069,10.012,9.971,9.92,9.906,9.756,9.754,9.615,9.607,9.594,9.569,9.528,9.487,9.442,9.319,9.317,9.284,9.23,9.23,9.128,9.06,9.011,8.974,8.94,8.91,8.907,8.87,8.862,8.847,8.783,8.706,8.705,8.543,8.541,8.51,8.479,8.447,8.436,8.373,8.362,8.308,8.288,8.288,8.282,8.24,8.238,8.198,8.168,8.156,8.15,8.117,8.116,8.114,8.11,8.087,8.037,8.007,7.988,7.957,7.947,7.907,7.902,7.886,7.835,7.742,7.741,7.655,7.651,7.645,7.631,7.609,7.544,7.527,7.437,7.436,7.414,7.406,7.297,7.136,7.131,7.119,7.115,7.111,7.104,7.035,7.002,6.995,6.94,6.913,6.864,6.753,6.725,6.684,6.624,6.612,6.57,6.535,6.525,6.524,6.514,6.507,6.505,6.463,6.419,6.409,6.398,6.395,6.328,6.327,6.317,6.291,6.285,6.276,6.27,6.245,6.225,6.219,6.189,6.179,6.168,6.159,6.122,6.106,6.094,6.093,6.077,6.054,6.047,6.043,6.022,6.017,6.002,6,5.993,5.989,5.947,5.945,5.937,5.935,5.93,5.93,5.922,5.904,5.894,5.877,5.877,5.867,5.864,5.856,5.851,5.848,5.842,5.837,5.836,5.829,5.821,5.789,5.779,5.778,5.777,5.753,5.744,5.74,5.738,5.73,5.721,5.713,5.703,5.701,5.695,5.692,5.692,5.652,5.635,5.633,5.629,5.612,5.601,5.58,5.58,5.574,5.561,5.558,5.543,5.539,5.532,5.529,5.522,5.51,5.505,5.505,5.494,5.488,5.477,5.47,5.464,5.457,5.447,5.437,5.435,5.418,5.405,5.401,5.397,5.394,5.375,5.372,5.341,5.336,5.334,5.308,5.308,5.307,5.303,5.281,5.279,5.278,5.271,5.264,5.258,5.25,5.237,5.231,5.229,5.203,5.191,5.189,5.176,5.128,5.128,5.123,5.114,5.105,5.095,5.091,5.035,5.011,5.011,5.004,4.992,4.984,4.959,4.958,4.95,4.946,4.924,4.923,4.87,4.849,4.842,4.82,4.813,4.805,4.801,4.799,4.795,4.793,4.782,4.782,4.778,4.775,4.774,4.77,4.767,4.764,4.757,4.737,4.737,4.708,4.689,4.684,4.681,4.675,4.672,4.659,4.64,4.63,4.626,4.626,4.595,4.589,4.578,4.566,4.556,4.547,4.542,4.541,4.541,4.539,4.516,4.516,4.516,4.504,4.504,4.493,4.493,4.489,4.479,4.444,4.443,4.434,4.403,4.401,4.395,4.394,4.386,4.383,4.37,4.368,4.366,4.358,4.358,4.356,4.346,4.327,4.267,4.267,4.249,4.247,4.243,4.231,4.225,4.223,4.204,4.201,4.198,4.195,4.18,4.176,4.168,4.162,4.155,4.152,4.142,4.128,4.078,4.069,4.062,4.045,4.044,4.036,4.029,4.008,3.997,3.995,3.983,3.982,3.981,3.958,3.953,3.941,3.924,3.904,3.884,3.88,3.861,3.856,3.849,3.847,3.821,3.803,3.796,3.79,3.79,3.789,3.787,3.783,3.78,3.776,3.766,3.757,3.738,3.737,3.73,3.73,3.709,3.706,3.704,3.7,3.697,3.696,3.683,3.682,3.678,3.652,3.651,3.648,3.646,3.631,3.626,3.601,3.582,3.559,3.55,3.532,3.519,3.514,3.511,3.51,3.484,3.468,3.466,3.447,3.446,3.436,3.43,3.426,3.424,3.415,3.406,3.398,3.377,3.372,3.37,3.358,3.358,3.357,3.35,3.345,3.343,3.339,3.333,3.326,3.325,3.311,3.3,3.264,3.257,3.256,3.252,3.236,3.235,3.233,3.215,3.204,3.204,3.198,3.189,3.184,3.182,3.168,3.16,3.157,3.157,3.155,3.155,3.149,3.148,3.147,3.146,3.143,3.143,3.142,3.135,3.134,3.131,3.122,3.114,3.111,3.088,3.087,3.084,3.081,3.079,3.077,3.075,3.058,3.058,3.058,3.055,3.054,3.054,3.045,3.041,3.04,3.033,3.029,3.028,3.026,3.011,3.011,3.009,3.001,2.996,2.986,2.984,2.984,2.981,2.979,2.972,2.971,2.967,2.965,2.959,2.958,2.954,2.939,2.934,2.932,2.932,2.932,2.932,2.92,2.918,2.913,2.899,2.898,2.895,2.892,2.892,2.886,2.884,2.882,2.88,2.878,2.858,2.855,2.851,2.849,2.848,2.846,2.839,2.839,2.838,2.837,2.834,2.832,2.819,2.812,2.8,2.791,2.784,2.775,2.77,2.761,2.757,2.753,2.751,2.747,2.745,2.738,2.736,2.735,2.731,2.73,2.716,2.708,2.707,2.697,2.696,2.69,2.69,2.683,2.676,2.676,2.676,2.673,2.667,2.665,2.661,2.657,2.645,2.643,2.642,2.637,2.635,2.63,2.623,2.623,2.623,2.622,2.621,2.61,2.608,2.606,2.602,2.599,2.599,2.598,2.593,2.589,2.586,2.586,2.586,2.58,2.578,2.576,2.565,2.564,2.563,2.562,2.56,2.551,2.544,2.538,2.537,2.525,2.524,2.52,2.517,2.515,2.506,2.505,2.504,2.497,2.495,2.493,2.491,2.487,2.485,2.483,2.474,2.467,2.464,2.464,2.46,2.457,2.457,2.455,2.454,2.454,2.454,2.448,2.444,2.444,2.433,2.432,2.429,2.425,2.418,2.411,2.408,2.407,2.405,2.405,2.393,2.388,2.385,2.384,2.383,2.372,2.371,2.366,2.355,2.354,2.352,2.348,2.348,2.347,2.345,2.343,2.341,2.341,2.338,2.338,2.338,2.337,2.332,2.332,2.331,2.33,2.328,2.324,2.32,2.318,2.317,2.306,2.297,2.296,2.289,2.288,2.282,2.281,2.281,2.28,2.28,2.278,2.276,2.276,2.271,2.271,2.268,2.263,2.254,2.248,2.244,2.244,2.242,2.217,2.213,2.208,2.207,2.204,2.204,2.204,2.203,2.197,2.197,2.195,2.195,2.185,2.181,2.177,2.177,2.177,2.17,2.17,2.169,2.167,2.165,2.159,2.154,2.145,2.145,2.142,2.142,2.133,2.125,2.125,2.123,2.122,2.121,2.12,2.12,2.118,2.118,2.116,2.116,2.116,2.111,2.109,2.104,2.102,2.099,2.094,2.09,2.089,2.089,2.088,2.086,2.082,2.08,2.079,2.077,2.075,2.075,2.073,2.072,2.072,2.071,2.071,2.07,2.065,2.065,2.062,2.062,2.059,2.046,2.041,2.038,2.022,2.022,2.02,2.017,2.016,2.014,2.008,2.008,2.006,2.005,2.001,2.001,2.001,1.999,1.993,1.991,1.986,1.983,1.98,1.978,1.976,1.975,1.971,1.969,1.959,1.955,1.953,1.951,1.947,1.945,1.941,1.939,1.935,1.932,1.928,1.925,1.924,1.924,1.923,1.921,1.911,1.904,1.9,1.899,1.899,1.891,1.891,1.891,1.886,1.879,1.879,1.875,1.872,1.871,1.866,1.857,1.857,1.853,1.85,1.849,1.847,1.846,1.844,1.844,1.843,1.841,1.835,1.831,1.82,1.82,1.82,1.818,1.818,1.812,1.811,1.808,1.804,1.798,1.797,1.796,1.791,1.787,1.784,1.782,1.776,1.775,1.773,1.772,1.75,1.749,1.746,1.741,1.735,1.735,1.732,1.723,1.716,1.712,1.709,1.702,1.702,1.695,1.693,1.687,1.686,1.674,1.672,1.669,1.665,1.664,1.658,1.657,1.64,1.634,1.631,1.624,1.621,1.615,1.611,1.609,1.605,1.597,1.594,1.588,1.584,1.58,1.574,1.57,1.567,1.565,1.561,1.559,1.557,1.557,1.551,1.548,1.544,1.541,1.536,1.536,1.535,1.533,1.532,1.531,1.528,1.526,1.523,1.518,1.507,1.506,1.505,1.504,1.504,1.496,1.494,1.491,1.491,1.489,1.486,1.482,1.48,1.478,1.476,1.472,1.47,1.466,1.466,1.463,1.462,1.461,1.436,1.436,1.435,1.428,1.427,1.426,1.424,1.42,1.42,1.417,1.416,1.408,1.403,1.402,1.396,1.393,1.389,1.387,1.381,1.376,1.372,1.371,1.37,1.36,1.356,1.355,1.336,1.331,1.328,1.325,1.324,1.322,1.321,1.302,1.301,1.3,1.299,1.299,1.289,1.282,1.275,1.27,1.269,1.266,1.265,1.262,1.262,1.258,1.252,1.252,1.251,1.25,1.245,1.245,1.242,1.242,1.238,1.233,1.231,1.229,1.229,1.225,1.225,1.219,1.213,1.213,1.212,1.211,1.2,1.193,1.193,1.189,1.189,1.181,1.18,1.18,1.17,1.169,1.167,1.166,1.165,1.152,1.149,1.138,1.136,1.13,1.128,1.118,1.115,1.106,1.098,1.089,1.085,1.084,1.081,1.081,1.081,1.072,1.072,1.064,1.063,1.062,1.059,1.058,1.058,1.056,1.048,1.045,1.042,1.034,1.033,1.031,1.029,1.029,1.027,1.027,1.021,1.012,1.007,1.005,0.987,0.984,0.982,0.978999999999999,0.975999999999999,0.965,0.964,0.963,0.962,0.961999999999999,0.96,0.959,0.958999999999999,0.957,0.957,0.956,0.955999999999999,0.951999999999999,0.947,0.943,0.943,0.943,0.939,0.937,0.936,0.936,0.936,0.936,0.934999999999999,0.933999999999999,0.924999999999999,0.923,0.921,0.920999999999999,0.919,0.918,0.91,0.905,0.904999999999999,0.901,0.899999999999999,0.898,0.895,0.892999999999999,0.891,0.889,0.880999999999999,0.88,0.879999999999999,0.879,0.875999999999999,0.871,0.870999999999999,0.87,0.868,0.861999999999999,0.86,0.857,0.856999999999999,0.855999999999999,0.853999999999999,0.853,0.851,0.848,0.845999999999999,0.842,0.84,0.834,0.833,0.832,0.822,0.817,0.809,0.809,0.806999999999999,0.802,0.795999999999999,0.786,0.784999999999999,0.781,0.78,0.777,0.776999999999999,0.774999999999999,0.761,0.756,0.756,0.755,0.754,0.753999999999999,0.753,0.751,0.747,0.745,0.745,0.743,0.741999999999999,0.741,0.738,0.737,0.737,0.733,0.732,0.728,0.726,0.725,0.723,0.719,0.717,0.715,0.71,0.705,0.704,0.703,0.7,0.7,0.698999999999999,0.696,0.695999999999999,0.691,0.689,0.687,0.684,0.684,0.683,0.676,0.675,0.671999999999999,0.67,0.669,0.662,0.661,0.655,0.654,0.654,0.651,0.647999999999999,0.647,0.641,0.636,0.629,0.628,0.62,0.62,0.619,0.619,0.618999999999999,0.618,0.618,0.614999999999999,0.614,0.603,0.601,0.6,0.594,0.59,0.588999999999999,0.586999999999999,0.586,0.580999999999999,0.572,0.569,0.569,0.569,0.569,0.569,0.569,0.568999999999999,0.568,0.564,0.564,0.561,0.56,0.558,0.557999999999999,0.557999999999999,0.551999999999999,0.549,0.545999999999999,0.544,0.542999999999999,0.542,0.542,0.534999999999999,0.533,0.531,0.53,0.527,0.525999999999999,0.524,0.523999999999999,0.522,0.515,0.508,0.507999999999999,0.506,0.502,0.500999999999999,0.479999999999999,0.478,0.473,0.464999999999999,0.462,0.454999999999999,0.452,0.452,0.45,0.443,0.443,0.442999999999999,0.441,0.441,0.433999999999999,0.432999999999999,0.432,0.43,0.429,0.427999999999999,0.427,0.426,0.422,0.418,0.416,0.412,0.406999999999999,0.406,0.402,0.394,0.388,0.386999999999999,0.386999999999999,0.374999999999999,0.368,0.362999999999999,0.362,0.361999999999999,0.354,0.346,0.339,0.339,0.335,0.331999999999999,0.329,0.327,0.324,0.322999999999999,0.319,0.318999999999999,0.318,0.315,0.314,0.308,0.305,0.305,0.301999999999999,0.301999999999999,0.293999999999999,0.285,0.284999999999999,0.280999999999999,0.279,0.278999999999999,0.276,0.272,0.269999999999999,0.269999999999999,0.267999999999999,0.266,0.264999999999999,0.264,0.264,0.261,0.261,0.261,0.26,0.259,0.255999999999999,0.253999999999999,0.247,0.244,0.237,0.225,0.223999999999999,0.222,0.217,0.206999999999999,0.205,0.201,0.2,0.195000000000001,0.192,0.191,0.189,0.189,0.189,0.186999999999999,0.185999999999999,0.185,0.183999999999999,0.183,0.182,0.179,0.173999999999999,0.17,0.166,0.164,0.163,0.161999999999999,0.160999999999999,0.160999999999999,0.154,0.152999999999999,0.152,0.151,0.147,0.146,0.145,0.141,0.14,0.136,0.135,0.135,0.134,0.133999999999999,0.133,0.129,0.125,0.123,0.121,0.12,0.12,0.118999999999999,0.118,0.118,0.116,0.113,0.11,0.108,0.107,0.107,0.107,0.105,0.104,0.103,0.102999999999999,0.101999999999999,0.101999999999999,0.0979999999999998,0.0979999999999995,0.0969999999999999,0.0969999999999995,0.0929999999999999,0.0929999999999992,0.0900000000000001,0.0879999999999991,0.0869999999999997,0.0849999999999999,0.0799999999999997,0.0779999999999998,0.0709999999999998,0.0609999999999994,0.0600000000000001,0.0599999999999991,0.0569999999999998,0.0529999999999987,0.0489999999999992,0.0480000000000001,0.0469999999999996,0.0419999999999994,0.0349999999999995,0.0349999999999992,0.0319999999999996,0.0300000000000001,0.0299999999999999,0.0290000000000001,0.028,0.0279999999999999,0.0209999999999996,0.0190000000000002,0.017999999999999,0.0159999999999996,0.0149999999999992,0.0079999999999992,0.00600000000000023,0.00599999999999945,-0.000999999999999668,-0.0119999999999999,-0.0140000000000005,-0.0220000000000002,-0.0250000000000005,-0.0309999999999999,-0.0320000000000001,-0.0320000000000007,-0.0340000000000007,-0.0369999999999999,-0.0390000000000004,-0.0400000000000001,-0.0400000000000001,-0.0420000000000004,-0.0420000000000006,-0.0440000000000002,-0.0450000000000003,-0.0459999999999999,-0.048,-0.0480000000000002,-0.0500000000000005,-0.0530000000000005,-0.0590000000000005,-0.0649999999999996,-0.0670000000000003,-0.0670000000000008,-0.0700000000000005,-0.0710000000000001,-0.0710000000000003,-0.072,-0.0720000000000007,-0.0730000000000002,-0.0730000000000004,-0.0760000000000002,-0.077000000000001,-0.0820000000000003,-0.0820000000000003,-0.0840000000000005,-0.0900000000000004,-0.0950000000000002,-0.0970000000000005,-0.0970000000000005,-0.1,-0.102,-0.105,-0.106,-0.109000000000001,-0.11,-0.117000000000001,-0.12,-0.121000000000001,-0.123,-0.125000000000001,-0.125999999999999,-0.126000000000001,-0.13,-0.138,-0.139,-0.14,-0.146000000000001,-0.146999999999999,-0.151,-0.152,-0.159,-0.159,-0.159,-0.159,-0.160000000000001,-0.165,-0.166,-0.168000000000001,-0.175000000000001,-0.176,-0.176,-0.178000000000001,-0.185000000000001,-0.188000000000001,-0.193,-0.194,-0.196,-0.198000000000001,-0.199000000000001,-0.202,-0.208000000000001,-0.209,-0.211,-0.212,-0.213,-0.216,-0.216000000000001,-0.222000000000001,-0.224,-0.224000000000001,-0.226,-0.228,-0.229,-0.232,-0.235,-0.235,-0.236000000000001,-0.244,-0.249000000000001,-0.251,-0.256,-0.256000000000001,-0.259000000000001,-0.260000000000001,-0.261,-0.269000000000001,-0.271999999999999,-0.271999999999999,-0.273,-0.276,-0.276000000000001,-0.279,-0.282000000000001,-0.287,-0.295,-0.305000000000001,-0.309000000000001,-0.311000000000001,-0.312,-0.316,-0.316000000000001,-0.319,-0.319,-0.319000000000001,-0.32,-0.322,-0.323,-0.327000000000001,-0.327000000000001,-0.328000000000001,-0.329,-0.329000000000001,-0.337,-0.344,-0.349,-0.35,-0.357000000000001,-0.359,-0.364,-0.364,-0.369,-0.369,-0.369,-0.369,-0.369000000000001,-0.371,-0.373,-0.382000000000001,-0.384000000000001,-0.386000000000001,-0.387,-0.394,-0.398,-0.401000000000001,-0.401000000000001,-0.403,-0.407000000000001,-0.410000000000001,-0.415,-0.418,-0.420000000000001,-0.421,-0.425000000000001,-0.432,-0.436,-0.438,-0.439,-0.443000000000001,-0.444000000000001,-0.448000000000001,-0.45,-0.452000000000001,-0.453000000000001,-0.459,-0.459,-0.459,-0.465,-0.465,-0.473,-0.473000000000001,-0.479,-0.484,-0.488000000000001,-0.493,-0.495000000000001,-0.496000000000001,-0.498000000000001,-0.511,-0.514,-0.514,-0.517,-0.517000000000001,-0.521000000000001,-0.523000000000001,-0.524,-0.53,-0.532,-0.538,-0.538,-0.54,-0.544,-0.548,-0.549000000000001,-0.558,-0.558000000000001,-0.561,-0.561,-0.563,-0.563,-0.563,-0.563,-0.564,-0.566000000000001,-0.574,-0.574,-0.578,-0.584,-0.589,-0.589000000000001,-0.591000000000001,-0.592,-0.592,-0.595000000000001,-0.601000000000001,-0.608000000000001,-0.613000000000001,-0.613000000000001,-0.615,-0.616,-0.618000000000001,-0.619,-0.621000000000001,-0.623000000000001,-0.624,-0.626000000000001,-0.628,-0.633,-0.641,-0.642000000000001,-0.648000000000001,-0.65,-0.652000000000001,-0.657,-0.657000000000001,-0.659,-0.659000000000001,-0.662,-0.663000000000001,-0.675,-0.675,-0.681000000000001,-0.683,-0.685,-0.686000000000001,-0.69,-0.69,-0.692,-0.696,-0.698000000000001,-0.699000000000001,-0.7,-0.702000000000001,-0.710000000000001,-0.715,-0.72,-0.722,-0.725000000000001,-0.727000000000001,-0.728000000000001,-0.729,-0.733000000000001,-0.736,-0.737000000000001,-0.738,-0.739000000000001,-0.739000000000001,-0.743,-0.743,-0.743000000000001,-0.746,-0.748,-0.748000000000001,-0.753,-0.755,-0.755,-0.756,-0.76,-0.76,-0.768,-0.768000000000001,-0.77,-0.770000000000001,-0.771,-0.772,-0.772,-0.773,-0.777000000000001,-0.778,-0.779000000000001,-0.779000000000001,-0.783,-0.785,-0.787,-0.791000000000001,-0.795,-0.796,-0.801,-0.804000000000001,-0.808,-0.813000000000001,-0.819000000000001,-0.82,-0.822,-0.823,-0.825,-0.828000000000001,-0.830000000000001,-0.831,-0.838,-0.845000000000001,-0.852000000000001,-0.854000000000001,-0.856,-0.861,-0.861,-0.862,-0.863,-0.863000000000001,-0.864,-0.868000000000001,-0.869000000000001,-0.872,-0.873,-0.883000000000001,-0.885000000000001,-0.886000000000001,-0.892000000000001,-0.898,-0.9,-0.902,-0.905,-0.905,-0.905,-0.911,-0.912000000000001,-0.916000000000001,-0.917,-0.917000000000001,-0.930000000000001,-0.936000000000001,-0.938,-0.944,-0.948,-0.948,-0.952000000000001,-0.957000000000001,-0.958,-0.964,-0.964,-0.965,-0.966,-0.968,-0.968,-0.97,-0.970000000000001,-0.973,-0.973,-0.976000000000001,-0.977000000000001,-0.981000000000001,-0.981000000000001,-0.989000000000001,-0.991,-0.997,-0.998000000000001,-1.01,-1.011,-1.013,-1.019,-1.027,-1.031,-1.035,-1.041,-1.045,-1.046,-1.047,-1.049,-1.051,-1.061,-1.075,-1.075,-1.079,-1.081,-1.083,-1.089,-1.09,-1.095,-1.097,-1.099,-1.101,-1.112,-1.113,-1.115,-1.118,-1.12,-1.129,-1.13,-1.133,-1.137,-1.138,-1.142,-1.143,-1.153,-1.154,-1.169,-1.177,-1.177,-1.178,-1.186,-1.187,-1.188,-1.193,-1.195,-1.198,-1.2,-1.202,-1.206,-1.212,-1.212,-1.215,-1.218,-1.219,-1.224,-1.224,-1.225,-1.227,-1.232,-1.236,-1.238,-1.239,-1.239,-1.24,-1.257,-1.259,-1.262,-1.262,-1.266,-1.272,-1.275,-1.278,-1.281,-1.29,-1.294,-1.301,-1.302,-1.304,-1.306,-1.307,-1.309,-1.31,-1.31,-1.313,-1.319,-1.32,-1.321,-1.321,-1.323,-1.333,-1.337,-1.341,-1.349,-1.351,-1.352,-1.357,-1.363,-1.37,-1.378,-1.379,-1.383,-1.384,-1.385,-1.385,-1.389,-1.395,-1.399,-1.402,-1.414,-1.417,-1.424,-1.427,-1.43,-1.432,-1.434,-1.441,-1.45,-1.452,-1.461,-1.467,-1.467,-1.479,-1.483,-1.498,-1.509,-1.514,-1.515,-1.518,-1.519,-1.54,-1.545,-1.545,-1.558,-1.559,-1.574,-1.589,-1.589,-1.594,-1.621,-1.622,-1.631,-1.642,-1.658,-1.676,-1.713,-1.716,-1.717,-1.717,-1.72,-1.721,-1.722,-1.724,-1.725,-1.727,-1.745,-1.749,-1.753,-1.757,-1.77,-1.778,-1.778,-1.788,-1.813,-1.822,-1.834,-1.84,-1.844,-1.848,-1.85,-1.853,-1.859,-1.864,-1.88,-1.881,-1.895,-1.905,-1.926,-1.926,-1.926,-1.933,-1.934,-1.962,-1.981,-1.998,-2.008,-2.009,-2.026,-2.041,-2.043,-2.08,-2.09,-2.097,-2.099,-2.123,-2.123,-2.123,-2.147,-2.171,-2.177,-2.2,-2.205,-2.205,-2.222,-2.222,-2.237,-2.239,-2.24,-2.246,-2.263,-2.287,-2.292,-2.331,-2.354,-2.36,-2.368,-2.371,-2.388,-2.406,-2.42,-2.486,-2.493,-2.545,-2.548,-2.562,-2.566,-2.568,-2.622,-2.634,-2.666,-2.713,-2.716,-2.781,-2.843,-2.863,-2.876,-2.895,-2.897,-2.959,-3.031,-3.052,-3.105,-3.126,-3.148,-3.151,-3.164,-3.328,-3.358,-3.55,-3.588],[13.529,24.841,17.49,11.635,9.598,7.581,5.818,9.2,6.783,8.863,9.223,6.503,9.066,6.388,8.842,14.514,9.636,30.221,20.491,5.38,13.867,12.808,12.271,11.776,7.959,10.861,13.809,14.577,13.403,12.572,14.59,14.912,14.242,10.297,4.424,34.26,16.394,13.637,8.405,9.521,5.456,20.34,6.337,10.45,12.359,4.608,5.917,11.621,8.892,16.996,16.951,6.016,34.407,18.395,11.625,10.441,7.04,16.468,17.559,4.359,11.343,23.476,21.847,20.521,11.46,3.704,17.759,14.03,3.632,6.47,77.125,11.908,7.931,4.464,7.745,31.41,7.374,4.889,18.06,7.563,7.432,12.144,10.996,7.169,7.279,10.447,11.385,19.675,11.384,6.346,5.241,7.353,8.5,7.985,31.701,74.966,7.359,10.35,12.769,6.134,76.666,32.31,7.015,5.982,9.267,9.735,9.74,6.666,7.77,6.194,74.788,6.233,8.07,4.512,7.881,6.46,7.584,5.082,5.163,67.424,6.639,8.028,76.721,8.605,5.676,75.396,4.586,5.828,5.701,8.023,11.573,9.034,5.034,6.192,12.337,8.25,7.968,3.128,6.911,4.058,7.042,76.062,76.593,5.806,6.382,78.828,74.462,4.892,9.606,77.295,4.888,4.791,11.056,74.455,78.274,77.881,77.748,9.712,4.065,11.294,11.687,78.775,11.576,71.467,76.499,9.831,8.302,18.119,77.383,7.707,4.96,70.318,11.384,75.861,77.065,5.599,7.145,76.744,4.102,8.719,75.988,79.143,78.621,4.869,77.375,76.666,78.605,11.297,5.013,2.576,9.236,18.381,4.657,77.795,8.55,75.355,8.972,7.253,8.497,75.803,76.423,6.388,78.779,11,11.194,67.997,16.623,78.791,4.215,6.338,7.392,10.391,9.607,77.376,78.987,3.823,3.128,71.014,4.106,6.198,7.547,7.547,4.549,78.815,11.691,7.151,5.214,2.11,69.653,75.045,11.055,8.649,73.918,3.452,71.521,68.552,2.405,14.911,3.265,3.575,11.894,73.622,6.944,78.995,9.607,4.782,6.362,9.041,10.699,3.837,74.236,8.136,4.026,72.551,3.568,1.922,10.256,2.591,13.389,2.408,67.195,14.785,74.316,5.152,6.335,3.944,6.169,6.66,5.898,8.817,3.568,7.111,34.908,5.446,5.084,6.104,8.915,3.388,76.744,76.744,5.025,5.568,9.826,4.866,14.368,13.796,5.856,17.887,5.886,2.884,13.008,8.514,3.845,15.548,72.943,4.996,8.769,5.559,9.797,15.319,2.504,5.72,8.024,8.741,2.756,3.803,5.425,16.332,10.499,12.097,3.705,3.978,9.108,8.311,4.008,9.803,7.587,6.013,2.361,2.405,2.647,1.79,4.846,76.537,9.117,9.332,9.846,4.849,15.618,4.846,13.339,71.905,28.073,18.24,6.567,8.62,3.542,11.577,10.211,8.514,6.267,-0.474,11.134,6.016,18.303,11.543,77.602,14.727,10.183,15.97,10.467,6.289,71.224,11.816,5.54,4.777,77.072,4.211,2.642,3.256,3.632,6.041,4.486,7.258,6.966,13.808,2.5,8.931,24.855,5.544,4.863,28.629,11.263,7.666,15.268,6.389,3.379,8.443,4.998,3.846,6.124,5.408,5.844,5.996,6.678,3.498,12.259,21.826,4.4,3.211,5.739,12.782,10.055,7.009,4.508,7.351,3.614,5.326,15.013,9.72,1.623,3.829,8.606,8.491,11.458,4.875,2.888,8.888,2.754,18.743,6.273,5.54,5.826,5.065,4.147,14.496,2.861,5.17,8.023,11.596,10.051,5.323,3.684,8.022,15.726,3.769,8.236,18.434,11.062,4.391,5.46,8.32,9.237,4.207,7.861,4.586,12.49,3.998,16.148,2.985,3.059,5.413,2.896,5.865,8.001,8.661,2.969,9.781,6.358,1.793,6.732,2.07,6.112,8.014,6.91,10.194,11.966,12.909,2.473,20.824,6.445,10.225,1.816,3.613,2.715,3.636,5.235,19.084,2.967,3.509,5.773,4.546,15.618,5.397,8.043,4.844,4.729,6.938,3.885,9.825,8.279,5.536,10.165,4.579,1.162,3.559,13.632,1.307,8.99,10.089,1.754,5.899,3.709,10.27,19.662,3.065,5.436,4.966,4.538,6.666,8.078,7.673,6.341,2.888,6.909,3.363,8.077,9.745,16.029,7.977,7.973,11.962,4.796,3.269,3.591,11,3.875,2.397,9.285,3.935,2.533,5.139,5.353,5.54,1.886,4.418,8.237,4.676,6.495,6.806,10.155,3.444,10.847,7.714,4.773,1.152,7.306,4.616,5.294,9.78,5.276,5.276,4.693,4.631,11.03,7.946,9.78,1.647,2.275,0.029,10.956,5.169,4.998,1.257,4.418,6.436,3.292,5.751,3.501,0.663,4.842,5.261,4.213,3.873,3.675,2.2,2.392,6.689,15.864,8.596,6.065,4.644,6.921,4.787,6.243,6.431,5.454,5.114,3.387,9.605,4.245,10.191,10.274,4.455,4.174,5.297,3.564,3.333,9.244,5.541,2.669,5.529,6.192,3.698,7.576,2.07,6.764,3.78,1.996,3.68,4.452,7.626,1.013,4.359,16.894,4.769,8.096,4.111,3.218,1.253,7.722,8.159,4.525,2.907,3.807,5.701,3.228,5.028,2.997,3.336,8.433,9.087,5.574,3.567,2.604,3.469,0.436,1.153,6.308,2.78,1.791,3.647,5.4,10.155,5.011,4.367,3.349,13.404,15.491,4.029,4.963,8.371,4.626,3.728,4.67,5.27,5.151,5.529,4.235,18.59,2.778,2.77,5.848,6.805,4.675,3.938,5.218,3.504,12.231,7.651,6.344,2.204,3.139,2.279,3.246,17.105,5.565,1.191,2.77,2.718,4.866,8.561,14.354,5.974,3.477,10.054,4.567,3.45,5.385,2.875,5.764,4.245,5.54,2.2,2.637,7.759,4.666,6.148,0.885,8.022,17.373,5.942,3.149,2.443,2.097,5.603,4.565,4.514,5.614,4.749,5.236,19.779,2.235,5.554,16.775,2.603,0.154,5.565,5.908,-0.229,3.057,1.191,2.098,7.709,7.216,6.488,3.872,5.32,3.371,7.158,2.787,4.243,5.48,5.459,5.848,11.245,17.416,4.903,2.523,7.818,16.206,5.857,7.208,1.635,4.541,0.436,3.705,2.155,6.568,13.354,5.837,4.877,2.858,5.288,3.023,3.023,2.729,2.104,7.095,8.453,5.848,3.95,2.378,2.545,7.282,8.33,2.603,4.893,5.502,2.874,2.072,5.752,1.784,3.755,5.686,5.848,5.125,4.963,11.186,16.409,3.964,11.54,5.341,2.173,4.723,7.923,7.843,1.302,5.584,4.88,3.015,4.494,4.2,1.191,1.696,3.024,2.034,5.106,15.924,7.287,5.284,5.106,9.522,6.101,5.54,1.465,3.631,2.711,2.43,3.016,7.319,3.255,6.021,6.139,2.858,1.191,10.693,2.723,2.503,2.281,6.769,18.561,4.774,7.583,3.711,6.777,0.889,7.151,3.066,4.783,4.481,1.918,5.17,5.172,5.13,5.382,3.509,11.246,6.296,3.505,4.646,5.746,11.053,4.606,3.264,4.283,7.843,2.277,1.52,9.457,15.843,0.563,1.885,2.979,5.346,2.708,2.392,3.719,2.522,14.435,1.433,4.554,4.764,3.978,2.46,13.917,5.848,2.854,0.779,2.71,16.352,1.727,4.675,5.848,4.902,4.902,3.983,2.395,4.781,6.691,3.249,3.953,17.391,3.485,6.297,9.245,1.886,0.949,6.167,5.848,2.228,7.998,18.876,3.472,7.714,3.055,12.568,5.57,9.61,4.143,9.983,7.822,5.261,5.513,1.55,5.474,1.764,6.001,3.267,0.942,10.436,2.31,4.698,1.747,5.751,2.404,3.088,3.325,5.456,3.836,2.924,6.377,3.449,5.438,4.3,3.802,3.869,1.028,2.718,3.269,7.889,5.529,0.357,0.472,15.975,4.739,0.592,4.237,4.935,1.559,4.021,3.583,3.478,0.829,3.571,3.743,5.543,3.245,4.367,4.923,5.479,5.054,1.872,3.673,18.887,4.488,2.932,2.474,3.834,2.52,7.38,3.696,3.586,2.904,1.082,1.59,2.775,0.488,5.848,16.221,2.705,3.583,7.784,3.67,5.604,3.114,3.411,15.629,3.869,2.843,3.174,15.241,3.421,2.812,1.39,5.612,3.394,3.508,2.85,0.472,0.836,3.79,1.876,2.044,0.154,4.223,0.544,1.612,3.608,2.688,3.319,3.811,8.049,9.306,2.763,6.486,6.476,2.781,11.194,4.078,3.774,2.909,4.821,6.79,6.903,6.993,2.961,17.403,5.604,6.861,1.628,6.747,3.103,6.044,3.451,17.104,5.826,5.191,3.444,1.46,3.787,2.808,3.368,6.193,1.275,3.914,3.887,17.463,1.876,3.094,10.046,11.906,2.478,8.453,1.877,6.698,2.714,9.687,3.121,6.289,4.567,3.595,2.267,1.823,1.596,3.772,4.95,4.518,7.313,2.085,8.133,3.774,3.129,1.996,2.096,2.73,3.161,-0.204,7.4,3.239,5.155,3.288,2.365,3.69,3.509,5.464,3.727,3.727,3.703,2.827,3.333,5.824,3.333,3.171,3.066,3.832,3.742,3.785,4.183,4.036,3.469,-0.04,2.708,3.619,1.703,1.948,2.92,17.911,9.221,2.78,3.615,2.43,0.437,3.568,1.775,4.348,2.978,0.376,3.141,3.721,14.501,3.114,2.508,2.433,11.244,2.706,0.481,-0.334,2.719,3.198,4.31,0.708,6.915,2.795,10.842,8.603,1.363,3.354,9.609,2.015,3.966,2.419,2.229,2.319,2.802,3.173,3.431,4.877,0.668,6.114,3.717,3.501,3.761,4.423,3.584,4.411,1.833,3.687,1.115,2.291,3.844,2.72,1.308,3.144,4.766,0.216,4.031,6.064,11.607,0.454,4.303,2.534,1.498,7.973,10.085,7.567,2.648,2.945,1.348,2.412,2.918,17.051,4.729,15.968,1.568,1.568,8.953,2.322,2.67,7.298,5.241,3.024,2.712,15.582,3.885,3.412,0.64,5.741,2.826,-0.194,2.476,14.288,3.331,9.971,2.851,0.668,1.892,0.392,3.776,2.098,4.14,0.101,4.042,0.578,6.975,0.578,0.828,3.662,15.535,2.381,2.822,7.961,-0.312,1.511,17.252,6.657,-0.359,5.821,15.385,2.286,0.725,6.965,6.922,3.275,-0.277,0.172,17.528,4.99,15.905,5.579,1.954,1.562,3.051,1.379,4.445,9.324,0.664,2.005,3.555,0.668,3.972,2.44,-0.449,5.057,3.123,2.075,2.068,-0.219,3.434,0.44,3.666,3.713,4.411,1.99,-0.099,3.707,1.666,3.863,2.22,5.19,1.25,5.063,1.371,1.855,1.855,1.855,2.128,2.017,1.855,3.907,1.209,0.756,0.421,0.624,-1.34,4.974,3.3,3.123,5.56,6.232,0.934,3.571,4.468,6.482,0.637,5.268,1.367,4.123,0.578,5.165,4.211,1.252,2.206,0.631,2.676,-0.204,5.654,1.877,2.725,4.045,3.296,3.493,3.242,4.074,3.285,-0.671,1.026,-0.175,3.403,5.797,3.591,9.698,0.668,0.63,3.229,2.994,1.174,-0.248,2.063,2.079,0.992,2.777,2.844,2.898,-1.573,0.214,2.051,3.242,2.863,7.346,0.32,4.556,3.714,4.037,0.689,3.347,0.048,6.113,2.869,-0.067,7.346,3.497,3.945,2.5,2.325,3.711,1.188,10.195,4.144,2.833,3.277,0.04,0.152,2.875,2.416,2.171,6.406,14.232,6.204,-0.875,14.162,3.982,4.609,4.445,2.883,0.511,4.789,3.162,2.323,-0.303,3.469,4.374,2.786,0.317,2.052,0.766,0.564,2.709,4.094,2.698,3.583,0.578,4.937,1.151,4.78,0.773,3.566,-0.981,1.423,-0.799,1.782,1.566,0.212,1.605,1.032,1.032,3.066,-0.028,4.256,3.341,2.678,0.741,4.113,3.003,3.685,1.759,1.878,18.744,1.035,4.148,5.494,5.494,1.594,4.551,0.792,-0.418,0.421,0.792,14.562,2.516,1.149,3.137,0.422,0.332,0.164,2.771,1.161,-0.382,1.195,-0.448,6.724,3.889,-0.486,0.646,-0.493,3.491,1.455,2.882,3.727,2.587,0.416,0.03,0.77,1.371,-0.254,0.792,0.64,2.754,4.267,0.933,2.767,3.098,3.605,4.09,7.933,2.829,0.395,1.971,3.733,2.469,1.032,0.792,1.691,1.455,1.858,1.959,3.474,2.664,1.554,0.974,3.441,2.157,2.331,17.334,4.531,2.578,-0.546,1.468,5.06,5.172,0.96,4.152,5.866,2.477,-0.409,2.836,5.219,5.997,-0.641,2.754,2.837,3.703,-0.029,2.998,2.211,0.645,3.006,4.502,1.92,1.92,0.795,3.572,0.25,0.18,2.571,-0.412,-0.631,4.365,0.856,-0.184,3.158,3.708,0.942,7.421,1.764,0.426,0.792,0.447,3.543,4.138,1.701,0.969,3.69,5.079,0.259,3.283,0.396,7.035,3.732,5.04,1.119,-0.605,0.45,1.779,4.681,3.295,3.255,6.511,2.006,2.515,1.051,3.798,3.341,3.154,1.501,6.463,3.347,0.471,2.019,1.758,-0.153,0.141,-0.153,0.121,2.895,2.972,3.877,1.403,3.645,0.121,0.121,5.782,3.679,2.241,2.06,0.284,0.87,3.581,3.722,6.985,2.079,-0.462,4.732,3.705,2.809,9.904,3.898,2.484,4.11,3.391,4.056,2.802,1.995,10.282,6.947,2.171,-0.295,2.445,3.24,0.029,-0.493,2.669,2.493,3.594,-1.137,2.331,0.753,0.292,0.088,0.792,3.751,-0.723,2.519,3.546,1.857,2.957,3.83,2.171,3.114,2.227,3.898,2.004,2.318,16.138,4.705,-0.625,4.921,3.189,2.759,0.204,2.346,3.936,1.537,2.295,0.63,3.138,3.941,0.88,3.604,4.768,-0.625,-0.5,-0.5,-0.5,3.931,0.634,1.064,2.571,0.415,2.559,6.689,6.692,0.861,2.214,3.618,2.4,3.244,3.548,0.983,-0.791,0.942,3.224,3.653,1.236,7.829,1.629,0.177,3.444,2.715,2.269,2.852,0.453,2.484,-0.771,-0.791,2.669,1.465,3.091,0.293,-0.837,-0.535,-0.902,4.934,3.732,3.918,3.317,1.804,3.68,3.312,2.511,-0.605,2.402,2.013,2.388,0.201,0.627,4.844,-0.771,-0.791,3.603,3.317,1.64,2.123,1.547,1.751,-0.401,-0.605,-0.902,-0.902,-0.902,-0.769,2.39,0.921,1.269,4.139,6.714,2.527,1.83,2.996,4.614,3.459,3.368,2.526,1.794,0.27,1.606,3.743,0.568,-0.094,3.611,0.475,3.573,2.654,1.547,4.23,2.391,-0.886,-0.456,3.695,2.667,-0.311,6.159,-0.894,2.373,1.682,3.368,2.49,7.829,-0.311,0.502,3.075,2.426,4.024,2.015,-0.845,2.337,-0.205,0.165,3.661,3.633,-0.605,-0.056,2.304,-0.18,-1.456,5.784,2.514,2.748,6.261,2.284,3.91,-0.211,2.882,-0.205,3.743,2.467,-0.042,-0.205,4.724,0.66,6.955,3.942,3.27,-0.044,-0.044,2.186,-0.359,-0.359,0.087,2.799,-0.565,4.078,-0.486,-0.311,-0.886,1.547,2.212,-0.886,3.962,4.03,0.123,0.087,2.433,1.307,-0.894,0.411,3.994,4.32,3.641,-1.906,1.051,-0.311,1.405,0.003,2.528,2.959,-0.396,3.875,-0.359,4.007,5.968,2.267,-0.679,-0.886,-0.723,0.123,0.215,0.157,-0.755,1.976,-0.796,-0.359,-0.886,2.561,1.266,3.429,2.031,0.641,-0.35,-0.635,4.479,3.435,2.854,2.562,2.764,3.467,2.39,0.972,2.771,2.808,2.536,-0.391,2.107,2.107,6.112,3.185,4.097,1.078,1.708,2.468,4.361,-0.391,-0.391,4.317,2.975,0.337,1.936,1.826,2.577,2.536,7.275,3.705,3.04,1.751,-1.518,0.547,5.771,2.48,6.383,1.445,2.381,-0.105,3.751,-2.408,1.327,0.936,-0.391,3.536,7.128,3.696,3.69,1.538,2.249,3.57,4.434,2.117,-1.919,2.653,0.306,0.591,3.661,1.951,0.102,0.41,4.806,-2.27,2.793,-0.11,2.501,6.53,2.528,-0.792,3.795,0.357,2.353,-0.837,3.137,0.005,3.282,14.561,1.343,1.774,2.263,1.725,0.423,-0.082,0.246,-0.143,1.035,-0.008,0.28,0.129,3.5,0.666,-0.71,5.637,3.539,16.016,0.903,1.232,0.713,1.174,0.061,1.172,0.371,1.128,-0.214,0.427,1.436,0.367,2.819,0.219,0.641,0.03,1.149,0.549,3.212,2.449,2.253,0.307,2.598,0.18,2.622,2.855,2.867,-0.486,3.771,0.845,0.909,-1.13,2.916,0.427,0.32,1.818,2.561,3.696,1.988,-0.032,0.352,0.446,3.969,2.704,2.496,0.016,-1.13,1.436,-0.506,0.492,15.419,1.897,0.042,0.711,-1.056,4.562,-0.05,-1.237,-1.454,0.83,0.1,1.424,6.886,1.31,1.853,4.121,2.006,1.728,3.756,3.028,2.404,2.145,0.635,7.221,3.307,-0.716,4.334,1.529,0.014,1.149,8.493,-0.146,-1.654,-0.608,0.247,0.322,2.248,4.348,-0.784,3.586,2.583,-1.752,1.406,-0.272,1.754,1.466,2.084,-0.74,2.397,0.819,0.224,2.493,0.1,-0.793,1.283,5.407,10.387,4.42,-0.915,3.299,-0.225,3.526,-0.508,8.131,0.044,2.208,4.193,3.54,-0.94,-0.853,0.169,1.511,-0.725,2.163,3.875,1.618,0.328,-0.254,-0.874,-0.177,1.376,-1.157,2.991,-0.65,-0.65,-0.65,-0.053,1.935,0.163,1.608,-0.215,2.81,-0.45,-0.45,0.661,-0.168,-0.207,-2.066,-1.046,1.403,-0.128,0.842,0.514,7.023,-1.015,1.021,0.203,-0.554,-1.233,-1.688,1.374,1.014,0.096,0.537,2.92,0.346,-0.746,-0.236,-0.598,-0.522,0.578,0.865,-1.071,1.071,-1.811,0.839,-0.151,-0.572,-2.077,-1.158,-1.379,-1.2,-1.112,-1.417,-0.598,-0.813,0.44,-0.519,-0.097],[1.607,1.493,4.775,5.589,5.534,5.486,4.735,2.806,4.036,5.904,4.713,3.047,6.296,1.734,1.665,3.171,4.856,2.749,4.616,2.918,3.484,2.249,4.631,5.766,3.766,5.071,4.115,1.638,2.145,5.946,5.514,4.241,5.419,4.561,3.429,3.175,4.222,4.355,7.028,1.084,1.63,5.472,4.021,4.557,4.095,3.181,0.83,4.971,3.525,3.714,3.715,4.843,3.585,3.323,5.398,4.1,2.467,4.782,2.929,0.263,5.235,3.348,4.72,4.571,4.797,3.69,4.49,1.417,3.862,1.721,5.084,2.022,3.771,0.863,-0.458,2.727,4.17,3.228,5.514,3.206,5.036,4.792,-0.502,0.625,6.007,-0.351,-0.22,5.591,-0.423,5.326,-0.103,0.806,-0.458,5.098,3.145,4.981,7.237,1.281,1.104,3.527,4.981,2.129,2.488,0.604,2.099,-0.227,5.098,-0.255,6.371,3.45,4.253,4.741,1.432,0.643,0.237,3.382,6.542,3.45,4.065,3.409,1.763,0.3,5.084,-0.305,0.164,4.648,3.517,3.951,2.77,-0.449,3.971,5.274,2.66,1.531,5.387,-0.432,6.022,1.417,0.58,2.741,3.311,5.074,4.981,6.268,5.208,4.8,4.229,1.203,5.736,4.981,5.321,0.951,5.103,4.981,5.659,4.585,4.741,6.022,1.345,-0.22,6.16,4.419,4.1,3.563,3.735,5.708,0.53,3.459,4.526,1.527,-0.184,3.497,-0.423,5.084,5.999,-0.502,-0.351,3.924,1.44,-0.43,5.084,4.467,5.058,-0.541,4.981,4.981,4.673,1.199,-0.43,1.791,-0.423,3.933,2.505,5.102,3.333,4.4,4.876,-0.299,1.357,5.429,5.027,3.555,4.589,1.197,5.072,4.152,-0.031,4.34,2.577,-0.423,1.292,5.546,4.976,4.329,4.777,2.484,3.039,4.948,3.692,-0.066,5.099,5.099,2.973,4.726,3.507,2.131,2.357,-0.021,3.81,4.451,4.394,2.839,4.475,4.002,3.891,4.657,2.076,4.319,3.498,2.7,2.333,4.506,4.351,4.73,4.976,2.771,-0.327,4.932,4.887,4.134,5.038,5.062,3.659,4.461,2.56,-0.514,-0.153,3.103,2.431,-0.873,4.072,3.874,4.487,2.505,6.936,-1.402,1.622,1.992,0.447,4.366,2.56,7.017,4.728,3.389,3.437,3.149,0.097,3.956,3.924,3.924,-0.34,3.547,1.283,5.757,2.333,1.173,6.615,7.542,1.154,2.095,0.691,7.64,2.482,4.809,4.815,-0.413,0.763,0.775,4.419,4.405,-0.091,1.67,6.971,3.068,2.108,4.344,7.076,3.455,1.781,4.03,3.903,-0.206,2.732,5.541,-0.645,1.73,3.612,2.974,1.996,2.076,2.175,1.89,2.36,5.645,8.161,4.956,7.005,0.549,3.781,2.36,3.386,4.672,4.897,8.267,6.35,6.329,0.403,3.216,6.235,7.64,5.689,0.422,1.993,5.452,6.648,7.165,4.527,2.47,5.341,3.905,5.986,2.812,3.607,3.949,2.669,3.953,5.306,4.614,1.996,3.311,0.965,1.07,1.232,-0.502,4.246,2.298,-0.29,8.155,2.554,2.792,-0.163,3.099,3.126,3.566,3.246,2.493,4.222,7.495,3.448,1.723,3.768,3.468,2.019,3.705,0.811,1.68,4.063,5.922,0.653,0.917,5.485,7.288,6.47,1.207,2.311,5.814,0.501,6.115,3.677,5.862,0.131,3.675,7.673,7.577,6.815,3.598,1.306,6.204,0.566,5.369,4.977,2.669,0.088,4.594,2.36,2.239,0.042,6.495,3.136,7.18,7.835,2.812,2.253,4.07,4.387,3.576,7.498,7.61,6.983,1.744,2.655,1.737,8.519,3.63,2.732,3.342,7.247,1.877,7.204,2.878,1.246,2.065,1.083,4.305,6.561,6.587,0.479,5.781,5.909,0.241,5.514,-0.64,3.892,5.627,4.248,7.37,3.697,3.692,0.566,6.585,-0.042,6.711,0.467,3.542,3.472,1.836,1.679,4.541,-0.273,3.482,2.524,2.986,3.296,2.144,3.738,1.998,1.488,2.76,3.674,6.513,4.02,2.787,6.788,4.572,-0.253,2.293,7.44,2.525,4.068,8.284,1.223,2.875,2.832,6.556,4.493,3.614,2.292,2.762,2.68,4.876,6.945,4.632,2.241,4.484,6.257,3.837,7.135,6.819,4.97,5.458,6.09,7.221,3.22,3.235,0.809,6.589,2.403,2.787,7.493,1.275,0.489,4.594,1.322,2.669,0.128,4.878,1.745,2.835,3.643,4.361,7.652,3.448,7.153,4.66,4.404,-0.286,0.86,3.566,1.55,5.912,8.378,8.378,5.453,5.458,6.577,8.274,5.912,2.789,2.611,3.852,6.73,1.55,3.593,-0.014,4.878,3.363,3.052,2.739,4.612,2.956,5.656,3.136,3.678,7.501,7.402,1.164,3.001,4.485,5.108,8.681,1.825,8.274,7.124,3.193,2.924,5.798,2.995,3.458,2.812,2.761,2.867,7.188,3.37,0.066,3.786,3.852,2.736,2.674,6.641,3.902,4.597,7.441,3.08,4.451,4.473,3.496,3.856,4.325,3.835,2.408,2.754,3.033,0.559,3.671,3.524,8.274,6.389,3.045,0.456,-0.45,8.245,3.598,2.754,0.739,3.86,6.324,1.364,3.325,1.602,1.602,5.788,4.932,3.578,4.582,3.827,3.645,3.424,0.066,3.206,3.034,1.231,3.768,3.886,7.652,8.373,4.615,4.31,3.56,3.839,7.54,2.056,2.512,3.989,4.465,4.196,6.067,2.886,3.032,3.528,7.179,3.83,1.83,2.142,7.335,2.966,2.867,1.685,3.526,2.384,1.316,3.515,3.373,3.504,2.278,0.069,6.006,2.911,3.424,2.795,3.654,8.798,5.435,3.934,3.133,3.308,1.944,7.237,0.851,4.577,3.402,2.392,4.839,2.669,3.133,3.548,5.372,5.193,4.263,3.376,7.069,7.007,2.956,-0.02,2.47,2.532,2.846,5.635,2.8,3.652,2.735,6.291,6.957,3.804,3.729,6.938,1.602,3.838,2.911,2.065,2.294,-0.199,3.424,1.527,6.421,6.373,4.935,3.791,5.436,3.983,7.003,1.38,1.477,2.746,3.84,2.142,3.154,7.132,8.669,1.319,5.234,3.826,4.926,0.866,3.367,3.089,3.424,2.613,3.782,2.381,4.894,4.248,3.565,1.65,2.64,2.957,2.957,2.584,3.791,7.356,3.609,2.142,3.611,3.565,1.89,5.343,0.241,1.602,4.907,1.395,3.117,2.59,6.356,1.633,3.473,2.779,2.142,7.441,7.408,3.276,3.374,5.131,7.604,0.69,2.671,3.805,3.801,1.771,2.584,3.135,3.722,0.167,8.576,4.031,3.424,1.527,3.863,-0.562,3.885,4.436,5.877,6.659,3.885,6.985,2.937,4.289,-0.396,3.75,3.117,3.589,2.805,7.054,3.452,3.31,3.951,3.818,3.424,3.575,3.658,3.565,3.51,6.758,3.566,7.441,4.835,3.814,7.258,2.621,3.437,3.135,2.453,3.776,2.516,4.55,3.757,3.089,3.429,4.564,3.199,7.29,1.655,2.886,8.669,1.415,1.697,-0.006,0.62,6.815,2.293,3.58,3.074,6.212,0.535,3.562,4.283,8.378,3.664,4.043,3.365,3.998,4.014,2.434,4.402,4.168,4.248,1.005,3.869,2.142,3.442,2.635,4.102,4.056,0.967,3.645,2.142,2.093,2.093,3.56,0.859,2.098,3.312,1.905,4.405,5.717,4.216,2.094,7.184,0.817,-0.418,7.29,2.142,4.381,7.778,3.762,3.645,4.893,4.132,-0.613,3.611,3.286,4.167,2.938,6.478,3.584,7.307,3.092,3.003,-0.198,3.211,2.856,2.418,2.398,2.855,3.475,4.295,4.257,0.478,4.826,3.611,2.792,3.231,2.805,2.951,3.311,4.073,3.196,4.452,3.522,3.068,4.134,2.986,3.893,7.441,0.654,3.713,4.233,3.744,1.527,3.694,3.558,0.219,2.88,4.465,-0.452,2.48,4.448,3.434,2.923,3.934,1.446,4.077,2.877,0.083,-0.23,4.08,1.305,2.529,4.484,3.727,3.499,3.915,4.522,4.448,3.308,1.27,2.432,4.245,2.805,2.573,2.142,3.841,3.78,4.465,0.402,2.773,2.715,3.742,2.134,3.292,3.812,3.931,2.288,4.379,3.307,2.702,0.399,3.855,3.489,2.315,1.639,3.713,4.043,3.514,1.665,-0.196,-0.437,3.427,-1.026,0.997,4.248,3.608,3.168,2.862,2.558,3.074,2.371,3.286,4.912,3.512,6.644,4.283,3.427,3.322,2.609,3.528,2.533,0.866,2.403,5.594,2.715,3.76,2.24,7.116,0.997,5.704,4.729,6.973,4.328,6.696,2.436,-0.328,3.586,3.554,2.893,0.736,1.293,4.68,4.582,7.071,1.665,3.733,5.936,7.176,5.003,5.91,3.832,-0.263,3.278,3.463,2.963,7.29,3.652,4.041,0.475,1.818,2.323,2.91,6.404,2.911,0.98,3.529,4.555,3.427,3.373,3.609,-0.693,-0.428,2.526,2.649,7.219,3.454,2.736,2.371,1.827,3.79,4.564,4.526,4.248,4.248,2.674,1.59,0.858,6.231,2.572,-0.347,3.135,3.362,3.565,2.756,5.45,3.376,3.645,3.31,3.359,3.231,2.369,3.155,3.772,5.929,4.158,3.034,3.076,3.692,1.56,0.219,0.723,4.866,3.053,1.235,2.313,3.946,4.601,3.742,2.002,3.474,5.8,3.673,1.417,1.496,3.828,2.574,1.309,-1.062,5.018,3.837,0.97,3.815,1.411,3.555,2.871,2.755,4.371,3.589,3.576,1.842,0.879,3.644,3.359,2.642,1.413,6.356,4.168,4.612,4.248,3.574,4.296,4.695,4.552,3.289,2.515,2.219,2.493,3.349,3.959,1.44,3.633,2.383,5.984,5.285,4.963,1.115,3.851,3.47,2.271,1.795,0.239,6.002,2.891,2.985,0.465,1.784,-0.728,7.069,0.878,3.795,1.466,1.466,7.657,3.185,3.906,6.946,3.231,3.29,3.157,6.288,4.379,4.458,1.293,3.242,2.261,1.592,2.17,3.731,4.63,6.129,2.786,1.413,0.989,1.266,4.371,3.655,1.692,1.788,2.674,1.616,4.262,1.616,0.676,3.49,5.512,0.869,1.21,1.713,0.766,0.67,6.478,3.551,4.28,3.814,3.249,2.383,2.952,0.302,3.287,3.034,-0.055,-0.103,7.203,3.435,3.374,3.359,0.903,0.839,2.876,0.225,4.306,3.645,1.157,3.888,3.348,1.413,2.479,2.674,0.538,3.161,2.381,4.499,1.313,1.592,3.308,1.858,4.456,3.396,1.015,-0.921,1.986,3.944,4.503,3.296,2.958,6.318,-0.59,4.841,1.858,1.842,1.842,1.842,2.021,1.875,1.842,3.376,2.871,1.413,2.897,2.332,1.446,6.185,1.758,2.381,3.57,3.565,3.379,3.524,2.846,3.72,1.261,4.426,1.509,4.378,1.413,3.284,4.364,1.704,3.655,1.722,3.517,0.493,4.069,1.411,3.442,3.808,2.743,0.926,0.78,3.799,1.744,2.891,0.107,2.512,4.293,3.648,3.388,6.209,1.413,2.285,3.319,4.433,1.111,1.275,0.928,3.373,1.461,3.359,0.427,2.415,1.137,-0.509,4.291,0.78,2.932,0.833,2.299,2.846,3.504,3.742,-0.498,3.511,-0.498,7.433,-0.582,0.301,0.833,3.231,1.239,3.712,3.978,3.491,1.923,6.431,0.168,3.543,3.516,1.759,-0.646,4.117,3.41,1.784,2.707,3.231,3.514,1.061,3.434,7.597,3.921,3.652,3.842,1.641,4.502,4.379,3.438,-0.529,3.511,3.596,3.242,2.588,1.128,2.54,-0.225,0.903,3.799,2.141,4.465,1.413,4.364,0.107,3.849,1.615,4.234,2.211,2.79,0.044,3.359,3.515,1.744,1.803,1.858,1.858,3.41,2.757,2.792,3.465,3.574,-0.688,3.427,3.701,3.499,2.528,3.259,5.025,1.615,6.836,6.146,6.146,3.589,3.792,1.648,1.681,1.722,1.648,4.516,3.519,1.093,3.461,1.615,1.615,0.816,3.319,1.878,0.94,1.858,2.538,6.339,2.674,0.006,4.534,0.794,3.675,1.186,2.868,2.558,3.521,2.05,0.542,-0.396,1.858,-0.652,1.648,3.373,1.908,3.094,-0.403,3.482,3.639,4.525,4.376,3.424,3.195,3.465,1.338,2.077,3.746,1.858,1.648,3.078,1.186,4.63,3.422,3.362,4.215,2.871,2.838,4.024,2.165,2.781,7.071,7.009,3.893,0.166,0.202,0.16,3.329,2.004,4.132,6.166,3.2,3.194,1.291,3.259,0.088,0.906,1.908,3.427,0.923,-0.14,3.504,3.569,1.7,4.269,3.65,1.1,1.1,1.29,3.352,0.403,1.306,3.076,1.429,0.088,3.44,-0.235,2.644,1.504,4.465,2.418,3.03,1.417,-0.333,1.648,3.918,0.926,3.944,1.518,3.946,3.311,4.19,-0.276,4.506,0.922,4.544,4.458,3.311,1.008,0.01,1.174,3.703,4.096,4.045,2.323,2.98,1.437,3.442,3.574,4.726,3.616,3.41,1.2,3.646,1.146,0.803,3.41,0.16,0.01,-0.14,0.01,0.156,3.54,4.212,0.738,2.013,4.823,0.156,0.156,3.198,6.412,2.736,2.773,0.883,1.303,3.373,3.784,6.478,3.373,0.166,4.241,4.516,2.324,6.398,3.742,3.245,3.041,2.816,6.323,1.875,1.891,3.68,3.806,2.776,2.498,3.212,3.14,1.098,1.52,3.443,3.685,4.299,3.464,2.781,1.583,1.204,2.751,1.648,4.233,0.01,3.448,4.108,4.661,3.565,4.57,3.317,3.565,2.26,3.742,2.342,2.419,6.946,4.131,0.166,-0.212,3.878,3.75,1.837,3.393,3.682,2.747,0.201,1.615,4.513,3.519,-0.387,3.513,5.707,0.166,0.002,0.002,0.002,4.612,3.576,0.997,3.41,2.953,3.491,1.516,6.195,3.35,3.562,3.362,0.552,2.961,4.582,4.679,0.367,2.418,3.219,3.201,0.079,6.336,2.628,0.119,3.29,3.427,2.976,4.518,4.201,3.245,0.071,0.367,3.376,-0.228,3.442,1.045,3.564,0.362,0.221,3.055,4.458,2.884,3.521,1.087,4.131,3.724,3.293,0.01,3.641,3.915,4.151,1.189,0.729,3.588,0.071,0.367,3.71,3.521,1.703,3.293,4.709,3.576,0.584,0.01,0.221,0.221,0.221,0.065,3.639,1.419,2.932,3.965,4.458,3.341,2.197,4.77,4.31,4.378,4.378,3.528,1.276,1.042,2.552,4.299,3.475,0.233,4.6,1.167,3.251,3.995,4.709,2.942,2.985,0.01,0.58,3.682,3.648,0.383,5.132,0.002,2.514,3.061,2.683,4.296,6.336,0.383,0.973,3.48,3.875,4.856,4.502,0.051,2.985,0.087,0.387,4.436,3.063,0.01,3.68,3.727,0.233,1.81,4.299,4.122,3.325,2.932,3.916,0.504,0.01,4.582,0.087,4.299,3.456,0.087,0.087,4.307,2.155,3.236,4.091,3.441,0.588,0.588,3.821,0.575,0.575,0.438,3.135,2.669,1.784,0.087,0.383,0.01,4.709,4.513,0.01,4.246,4.091,0.901,0.438,0.575,3.173,0.002,0.531,4.227,2.739,3.722,0.91,3.467,0.383,1.186,0.01,3.791,3.828,0.266,6.448,0.575,3.172,6.448,3.741,0.438,0.01,0.01,0.901,1.268,0.16,-0.14,3.701,1.005,0.575,0.01,3.853,2.929,3.13,3.569,1.556,0.383,2.317,4.043,2.932,4.709,2.857,3.49,3.947,3.639,4.014,2.884,4.398,4.465,0.01,3.41,3.41,6.085,3.569,2.969,1.494,1.56,3.362,3.724,0.01,0.01,4.312,3.671,0.704,3.672,2.793,3.519,3.559,5.975,2.629,3.718,3.772,1.645,1.208,2.336,4.122,5.205,3.288,3.553,0.375,4.233,2.474,3.723,3.513,0.01,3.147,4.647,3.598,3.311,2.601,4.605,3.475,3.159,4.431,2.189,3.325,0.715,3.236,2.549,4.709,3.293,3.036,3.826,1.308,3.154,0.01,3.93,4.813,4.024,2.474,4.313,3.986,3.928,0.039,3.063,0.344,3.186,4.647,3.822,3.489,4.684,4.167,1.641,-0.12,1.022,0.874,4.158,0.948,0.578,1.268,3.644,2.985,1.956,3.637,3.475,5.929,4.52,0.725,4.196,2.155,0.116,1.026,0.717,3.46,0.5,0.814,1.153,0.891,3.989,0.646,4.196,0.482,3.574,2.323,4.597,4.132,2.865,4.304,2.804,0.073,3.338,2.932,4.038,0.266,4.661,0.779,1.335,2.275,3.519,0.814,1.175,3.569,3.853,3.598,3.605,1.04,0.874,0.915,3.562,2.501,4.477,0.022,-0.21,-0.181,0.344,0.534,4.502,3.692,4.767,1.686,0.195,3.565,0.163,3.323,2.375,1.716,1.047,2.357,6.339,1.233,3.422,2.403,3.904,3.772,3.521,3.152,3.229,4.253,0.98,6.528,3.569,0.557,4.089,4.64,3.825,0.81,2.833,-0.269,-0.449,2.051,4.101,0.116,3.569,6.325,3.301,3.775,3.758,1.738,3.695,0.039,2.87,4.083,4.661,-0.08,4.393,0.338,0.446,3.961,0.5,1.9,1.697,3.961,5.799,3.84,-0.554,3.186,3.293,3.852,0.056,5.965,0.425,4.963,6.546,6.259,4.497,-0.044,3.383,3.46,0.365,3.518,6.448,3.251,3.009,-0.01,2.375,2.587,3.668,3.305,4.281,2.609,2.609,2.609,3.474,3.186,3.569,3.748,4.2,3.838,0.138,0.138,2.88,-0.183,3.733,1.187,3.451,4.906,3.936,3.489,3.489,6.428,-0.763,4.38,4.125,2.676,0.649,2.207,4.041,3.759,4.144,3.331,0.382,3.175,2.908,2.96,0.448,3.851,3.612,3.489,0.012,2.762,2.401,3.723,3.646,3.808,2.661,3.093,3.109,2.269,2.269,3.27,4.15,2.455,3.542,2.906,3.591],[4.551,0.765,1.514,6.521,7.536,7.463,3.943,5.031,5.625,6.955,3.619,8.025,6.021,4.951,6.536,4.033,3.817,3.636,5.467,8.445,6.546,4.388,4.693,7.995,8.116,9.152,4.697,5.64,5.54,7.816,5.771,7.125,7.447,5.569,7.8,4.699,6.284,3.011,4.764,5.152,2.632,8.942,7.065,0.755,4.421,6.875,1.603,8.522,7.906,1.239,7.232,8.414,1.931,4.629,7.439,6.219,4.131,6.936,5.318,1.459,6.379,5.739,6.807,4.083,5.711,7.398,6.923,4.477,5.294,3.541,0.512,4.757,3.586,2.492,0.473,5.88,5.877,8.415,0.755,8.078,9.083,6.006,0.209,3.418,6.895,0.151,0.367,7.948,0.151,6.811,0.431,0.251,0.132,6.006,5.571,0.712,4.764,0.297,7.09,7.088,0.347,5.091,7.898,3.434,4.757,0.609,7.09,0.545,4.951,6.867,1.275,7.031,0.074,0.967,0.103,8.172,4.979,7.088,4.311,0.881,7.331,0.749,0.289,0.749,0.06,0.794,6.883,7.246,8.172,-0.163,4.512,7.856,2.136,5.173,7.158,0.534,8.062,6.818,2.797,2.319,6.834,3.159,0.735,8.785,7.524,0.429,0.596,0.199,7.886,0.712,7.924,8.331,4.19,0.512,0.757,0.438,0.438,7.64,7.08,0.151,3.396,2.81,7.131,0.661,0.533,10.241,5.025,3.012,0.438,7.435,0.431,0.596,-0.12,0.289,3.986,0.667,0.103,0.651,2.276,-0.066,0.512,0.041,2.294,4.238,0.496,0.223,2.254,1.604,0.06,7.621,0.223,1.604,7.925,0.416,5.675,1.259,7.906,0.151,5.843,3.845,0.743,3.909,2.553,1.604,8.039,1.096,0.938,2.188,7.925,0.223,0.502,9.136,9.278,1.685,2.944,7.412,7.924,0.743,7.462,3.621,3.764,5.518,5.112,1.145,6.492,7.208,0.938,2.061,0.654,1.259,7.828,1.672,0.601,4.298,0.743,1.086,6.746,7.267,2.734,5.584,0.902,1.068,6.829,2.655,9.278,7.088,2.696,8.606,7.826,2.136,1.508,9.136,8.431,1.187,2.136,0.769,0.155,4.298,7.174,4.159,0.743,0.813,0.757,7.925,4.989,2.65,4.782,7.007,3.902,4.587,1.921,5.111,0.471,7.04,5.524,6.297,6.434,5.584,0.719,0.651,0.274,6.404,1.554,3.104,0.651,1.637,5.976,7.972,5.363,7.54,0.47,4.215,7.555,7.001,1.285,1.903,0.47,0.464,7.569,5.752,0.572,5.013,5.571,4.139,6.685,4.312,3.311,1.81,0.47,0.47,4.298,0.132,3.534,6.385,0.132,4.153,5.344,7.634,7.54,7.621,7.621,1.881,7.389,2.914,4.236,9.278,3.628,4.784,6.693,8.183,3.742,0.428,0.529,4.193,3.99,8.587,0.472,3.91,6.762,3.777,3.94,0.818,4.463,4.247,7.768,3.843,3.997,7.174,8.921,5.726,4.634,7.95,0.793,0.47,5.671,1.506,4.539,2.22,7.621,3.864,5.157,0.678,5.157,1.34,7.322,7.093,-0.091,4,0.684,5.671,0.47,0.529,4.816,0.906,8.551,8.038,2.54,3.442,2.648,7.3,3.982,7.849,5.671,6.308,7.955,5.529,0.47,6.46,4.66,6.252,3.739,3.809,10.322,0.901,1.602,10.241,2.061,3.597,0.956,7.882,4.461,2.719,4,4.113,3.848,7.12,2.136,4.809,6.669,9.184,1.734,6.123,4.083,4.133,5.861,0.741,0.536,3.539,4.619,3.442,4.097,9.214,2.113,2.214,2.229,2.023,3.206,5.651,3.767,5.729,0.866,2.577,3.66,5.152,10.026,8.82,4.281,0.647,7.578,1.95,7.463,3.194,7.463,7.335,3.99,8.587,1.303,6.546,9.213,0.536,8.697,1.122,4.538,3.721,8.259,4.421,1.78,1.91,7.693,9.673,1.182,4.281,4.3,8.027,2.291,6.168,1.167,0.599,0.723,7.599,2.492,3.558,4.177,3.168,1.554,0.902,4.514,3.358,3.106,4.083,1.317,2.277,3.843,3.212,4.527,4.874,3.924,0.979,1.608,3.272,4.62,8.203,3.288,3.628,1.115,1.95,7.756,4.236,10.169,4.588,4,2.094,6.187,2.165,4.038,3.668,4.421,4.378,4.019,3.848,3.848,3.843,4.021,8.25,7.036,3.843,4.578,2.659,3.272,7.09,6.588,9.622,0.44,6.502,0.536,3.726,0.956,10.026,5.108,0.852,8.984,2.718,3.248,4.464,0.738,4.603,1.117,3.963,1.052,7.436,3.421,3.421,3.848,3.722,4.636,3.421,6.404,2.533,6.125,4.252,3.502,1.052,0.938,5.155,3.726,2.08,7.1,2.568,2.346,1.685,7.693,3.515,2.494,3.421,3.248,1.674,1.703,5.054,7.685,4.042,1.161,3.282,3.421,4.021,1.72,3.663,6.502,6.201,8.568,3.519,10.026,4.042,2.354,0.356,3.668,7.532,0.723,7.425,7.663,6.209,7.615,3.421,8.077,5.17,2.577,2.845,4.025,7.639,3.726,1.251,9.529,7.519,5.155,2.494,3.452,4.215,3.219,4.236,0.536,5.021,3.72,0.723,9.853,0.306,3.473,6.727,2.331,3.918,4.08,4.08,1.411,1.279,4.017,2.971,4.021,2.723,3.868,0.356,3.298,8.574,0.956,6.535,6.49,9.571,3.421,4.535,2.165,5.774,8.352,4.291,0.647,2.818,3.726,2.418,1.245,4.76,9.529,1.064,3.999,5.035,3.197,1.733,2.03,7.935,10.026,10.026,2.236,4.498,1.231,1.26,2.951,2.165,2.287,6.256,0.822,8.271,8.554,3.519,7.726,3.848,3.421,7.684,1.161,9.571,7.008,1.028,5.974,4.732,6.329,3.41,7.999,2.004,6.187,7.902,3.583,6.369,9.234,5.905,3.426,7.685,6.422,6.065,0.669,2.265,2.48,6.387,3.895,6.502,5.993,9.602,2.474,8.005,3.74,5.993,4.96,3.931,3.424,8.554,5.707,2.244,0.536,3.304,1.078,3.303,9.165,0.693,3.873,9.731,3.461,3.821,4.66,6.187,7.999,1.064,1.636,1.303,6.199,3.497,3.254,3.918,6.735,5.507,4.633,3.461,9.529,3.162,0.956,3.848,8.231,0.992,8.217,4.784,4.08,2.925,0.997,0.997,1.119,4.181,6.956,0.742,1.578,7.955,2.738,2.527,6.227,0.585,3.931,2.241,0.693,1.271,0.915,2.77,3.735,6.555,2.409,2.094,3.421,3.421,8.781,2.753,3.6,10.119,0.938,0.956,3.885,0.741,0.599,0.997,1.165,5.33,0.464,3.497,3.292,3.519,1.078,5.385,0.773,3.65,4.579,2.399,5.443,4.18,3.843,3.402,3.796,5.013,2.479,0.915,2.287,3.812,5.95,2.494,3.402,3.402,3.802,3.304,0.723,2.318,2.86,2.592,2.941,1.17,3.421,2.094,7.497,6.758,1.95,3.927,8.389,9.904,6.189,4.907,7.78,3.58,0.191,3.302,2.418,7.127,6.791,1.191,9.832,3.421,1.73,5.814,2.813,2.653,9.252,1.254,4.15,1.257,8.57,0.114,5.315,3.726,3.421,2.718,3.911,2.474,3.539,6.398,0.915,7.985,7.998,4.026,1.36,2.295,1.972,5.17,2.123,2.502,3.812,1.037,2.991,2.094,4.464,4.464,3.41,4.732,5.824,2.595,0.148,6.678,8.199,4.381,2.152,6.828,0.639,5.274,7.981,2.094,6.567,3.547,0.476,2.352,6.538,4.086,0.651,5.688,2.977,3.28,1.874,5.132,7.212,5.078,2.308,6.604,5.013,4.66,6.78,1.828,1.231,3.501,6.408,6.141,4.328,0.649,3.192,4.218,5.997,7.425,6.413,2.951,6.838,5.902,3.436,3.212,2.418,3.908,3.844,1.271,0.938,3.421,1.012,3.552,4.126,6.328,1.078,2.613,1.219,1.119,8.962,2.276,1.117,1.95,7.252,6.075,6.502,4.178,6.56,1.067,6.754,0.837,0.536,3.508,1.04,5.78,2.165,3.11,6.164,6.688,6.216,7.524,8.12,4.936,1.512,3.525,6.413,2.165,1.972,0.476,3.029,2.474,1.46,7.888,3.796,5.044,5.524,7.108,4.32,3.725,5.859,5.787,2.718,3.588,0.926,6.265,9.052,3.165,1.875,3.552,3.552,5.507,4.08,3.163,0.465,5.258,0.865,1.606,8.331,4.206,5.761,4.898,0.771,2.595,4.112,2.595,2.632,4.206,9.274,4.153,5.671,2.738,6.185,2.276,1.879,5.099,8.058,6.956,3.918,1.334,4.026,5.887,0.822,4.761,2.637,6.494,6.893,6.637,3.301,1.117,3.859,3.23,8.574,0.966,3.927,2.363,5.292,5.915,4.08,3.917,4.514,4.205,3.281,8.296,2.99,0.458,3.986,1.587,0.915,7.739,6.135,3.596,-0.352,6.45,5.164,5.603,6.892,8.272,0.476,3.029,1.161,7.783,2.418,3.583,0.536,1.052,4.043,2.962,3.842,2.241,1.677,3.944,3.451,5.292,2.418,1.63,8.36,8.482,7.54,3.547,0.534,6.956,8.353,0.837,8.747,5.65,4.75,9.045,2.575,4.334,2.849,3.239,5.41,4.334,5.803,2.464,2.418,4.703,1.705,9.731,6.13,4.103,2.713,5.254,0.893,8.199,9.904,3.658,1.502,2.352,5.787,7.498,0.825,6.11,3.736,8.389,0.007,1.078,4.067,3.936,1.12,2.157,1.677,3.434,0.69,3.004,3.785,4.674,2.977,9.29,3.663,4.206,2.308,3.704,0.284,2.241,5.507,1.526,0.23,2.831,4.334,2.346,6.54,5.188,3.196,4.017,2.029,3.469,1.94,2.018,8.231,8.174,2.856,1.165,7.084,3.344,3.895,5.614,6.234,-0.119,3.762,7.431,2.181,0.771,1.026,6.632,9.904,7.545,3.847,3.704,0.889,5.787,-0.057,7.993,3.719,3.934,7.785,8.001,3.629,4.703,3.417,7.187,5.013,7.497,5.17,2.095,3.927,8.222,4.826,3.185,3.489,6.251,7.254,5.028,8.341,0.801,3.625,1.024,4.385,2.355,1.341,0.007,7.497,0.23,2.093,0.007,0.401,7.264,1.783,1.078,0.938,4.104,-0.165,0.936,3.889,7.213,3.377,8.217,7.405,6.148,2.076,1.164,1.479,8.001,0.678,0.678,6.173,3.689,4.551,5.698,0.851,1.618,8.077,0.607,5.731,1.201,3.927,6.128,5.351,0.801,2.887,4.184,0.007,0.64,4.214,5.39,3.442,3.185,6.776,4.185,7.226,6.341,1.323,0.65,3.185,6.565,3.552,6.67,1.169,7.166,0.474,4.017,3.934,3.704,3.927,3.704,3.704,3.665,3.665,6.025,1.434,0.007,3.185,3.809,4.471,0.813,4.29,5.371,1.518,7.213,2.674,6.637,6.257,3.033,-0.119,0.988,6.047,7.381,0.363,2.218,4.312,3.934,2.502,1.298,4.091,0.19,1.998,3.785,7.268,5.01,8.058,-0.057,-0.057,7.702,4.214,4.021,0.865,3.457,3.448,6.133,3.843,7.792,0.033,3.902,5.131,4.021,1.216,5.095,3.012,2.596,1.195,5.137,0.649,1.919,0.784,0.929,3.94,-0.057,8.027,1.709,0.733,5.018,5.456,6.893,3.731,5.787,3.353,8.414,1.052,0.865,1.709,6.826,1.453,2.165,3.848,3.778,3.719,7.619,5.099,5.346,6.413,0.552,0.279,5.634,2.241,3.704,0.689,5.274,6.606,4.356,5.274,4.603,0.944,6.245,3.629,0.289,5.778,7.503,3.254,3.036,6.101,7.407,4.778,0.87,3.402,0.87,1.04,1.486,7.702,4.18,2.276,0.083,5.619,0.071,2.375,0.688,6.848,3.725,1.434,0.81,4.158,4.453,1.089,4.212,3.978,4.185,2.099,3.163,6.418,5.633,3.884,0.322,3.785,3.627,5.05,3.07,7.28,4.457,0.688,3.884,5.021,5.378,8.574,5.253,1.457,5.31,0.586,1.443,3.807,3.33,0.616,4.735,0.688,0.688,0.148,5.346,1.982,-0.119,3.97,3.268,3.65,5.17,0.931,2.755,0.104,2.418,1.674,5.582,2.887,3.574,0.801,0.137,-0.611,3.934,4.932,1.525,2.287,3.113,4.868,2.955,6.015,7.529,7.116,3.857,4.09,1.917,2.533,0.482,4.807,5.452,4.185,1.857,3.583,1.54,4.683,4.306,4.333,6.895,1.434,1.434,7.858,3.234,2.529,6.173,5.93,4.25,-0.035,0.576,1.705,5.24,5.136,5.592,4.212,3.628,3.964,1.195,4.185,1.633,6.397,2.748,4.765,1.849,-0.093,4.104,3.583,0.429,4.386,5.346,4.451,4.189,0.535,4.186,0.954,0.012,3.799,0.681,-0.005,1.97,4.18,3.082,-0.345,2.849,2.307,2.951,3.74,0.725,4.104,2.196,-0.057,5.151,0.607,2.889,4.703,4.703,4.322,5.435,-0.015,6.91,6.91,5.425,1.725,0.162,6.26,4.007,4.703,5.445,3.941,3.627,0.465,2.86,5.386,6.556,3.584,2.352,2.048,2.418,3.403,1.259,2.023,1.633,-0.082,-0.305,-0.082,-0.082,4.55,6.702,0.944,2.872,5.347,-0.142,-0.142,6.662,8.073,2.46,4.368,0.214,-0.295,2.287,7.166,3.889,2.718,-0.035,5.834,4.703,8.471,3.889,3.884,2.718,5.481,5.468,6.494,0.64,0.607,3.411,4.856,4.103,3.255,5.517,5.753,3.467,0.68,4.321,2.287,4.703,3.327,2.529,4.105,4.105,3.583,2.554,5.82,-0.177,2.734,5.652,8.657,8.134,5.619,5.085,2.86,4.029,8.007,3.43,3.207,5.274,4.487,-0.035,1.506,2.788,7.152,3.508,5.31,4.711,4.453,0.713,4.104,3.713,6.721,0.864,3.687,5.02,-0.035,-0.116,-0.177,-0.177,6.175,2.674,3.726,7.233,3.305,4.536,5.099,3.889,3.809,7.216,8.107,0.71,7.639,5.059,2.411,0.509,2.307,6.515,4.733,1.705,4.148,6.596,-0.093,5.255,2.738,7.631,2.738,2.653,2.718,0.59,0.509,5.253,5.24,7.053,4.101,3.182,-0.131,0.59,4.744,5.667,7.048,2.145,1.384,4.487,2.596,2.816,-0.177,3.254,8.077,7.891,6.26,-0.131,3.583,0.59,0.509,5.253,3.113,0.701,2.287,2.287,3.075,0.06,-0.061,0.509,0.59,0.59,0.59,7.187,2.87,7.171,3.064,1.973,6.049,4.331,8.026,4.579,2.023,2.418,2.221,3.401,0.571,3.583,4.703,5.31,0.218,5.982,0.637,2.337,4.065,2.165,4.191,5.17,-0.177,0.499,4.783,8.349,-0.035,3.758,-0.035,2.415,3.85,8.058,7.017,3.792,-0.035,-0.142,2.073,1.897,2.734,6.391,-0.061,6.412,0.218,0.137,4.435,2.342,-0.035,3.467,5.131,1.012,1.037,3.857,5.136,2.86,6.682,6.438,1.919,-0.035,7.427,0.218,4.703,4.561,0.218,0.218,4.631,2.356,4.883,5.385,2.221,0.069,0.069,6.78,-0.154,-0.154,0.069,7.639,2.022,1.96,0.218,-0.035,0.218,2.368,2.093,-0.421,2.215,2.122,-0.057,-0.154,-0.317,5.188,-0.177,-0.75,4.703,4.191,5.358,5.443,4.529,-0.035,-0.291,-0.177,2.093,7.07,0.158,4.148,-0.154,4.878,3.965,5.776,0.952,-0.035,-0.035,-0.057,0.81,3.935,-0.035,6.694,5.451,-0.154,0.162,4.687,5.217,4.356,5.277,-0.357,0.218,2.593,2.337,6.004,5.292,8.323,6.977,2.38,7.453,2.287,5.17,2.099,2.023,-0.177,2.221,2.221,7.456,5.435,3.47,0.571,0.499,2.221,7.861,-0.177,-0.177,3.548,6.188,-0.081,4.841,3.681,4.209,4.169,7.018,2.096,5.017,2.165,5.837,-0.601,2.881,7.785,3.758,3.583,7.578,-0.035,4.577,3.467,3.428,6.774,0.188,3.107,4.022,7.207,4.703,5.097,2.093,6.413,5.946,6.607,3.583,2.246,-0.295,3.112,2.311,2.165,2.221,3.356,3.342,0.993,1.726,-0.177,5.844,0.942,6.396,4.128,5.82,3.408,4.683,0.609,1.954,-0.057,5.012,3.929,3.251,2.718,7.305,3.461,0.81,0.865,3.807,0.44,4.399,-0.057,-0.005,0.81,5.435,3.715,0.915,2.595,3.584,3.417,2.36,4.052,4.51,4.363,0.158,-0.438,0.81,4.245,0.609,-0.386,-0.438,-0.135,2.464,-0.295,4.145,-0.321,4.26,5.286,2.86,5.3,4.647,2.36,5.768,-0.384,2.039,7.598,2.093,0.016,3.857,-0.135,0.525,5.554,4.566,-0.438,3.26,2.019,5.844,5.669,3.941,0.695,0.189,0.688,7.878,3.768,7.643,1.005,0.952,0.611,0.81,-0.35,4.699,7.345,2.751,6.446,0.158,8.309,0.03,3.386,3.294,1.234,-0.057,5.283,6.321,0.274,9.73,4.998,6.128,2.718,5.669,3.47,2.18,5.626,-0.438,3.792,4.505,-0.157,6.774,3.41,2.553,-0.35,2.595,0.734,-0.131,6.144,2.36,0.653,3.792,7.639,3.386,3.07,7.854,4.457,3.213,0.467,7.453,4.332,2.165,0.016,1.89,0.216,0.024,3.67,0.731,2.443,-0.104,4.936,5.32,4.251,0.158,4.678,2.318,5.669,1.092,4.663,1.087,5.767,4.148,6.199,2.889,0.158,1.945,5.746,-0.277,2.738,7.761,2.46,2.46,0.028,3.883,3.171,2.719,5.879,5.182,4.359,3.565,3.489,3.085,9.387,2.287,2.502,4.973,6.413,-0.284,-0.284,4.334,-0.523,2.363,3.973,6.216,2.246,2.414,2.571,2.46,6.217,0.81,2.436,2.616,2.502,-0.478,4.026,5.619,2.161,2.287,3.021,0.209,2.304,2.883,2.339,0.228,2.376,3.327,2.363,-0.114,1.982,4.026,2.287,2.46,2.502,2.502,3.205,2.287,2.287,2.46,2.541,2.603,2.617,2.215,2.287,2.511],[8.258,6.624,10.211,12.176,12.314,12.549,14.54,9.189,8.664,11.811,12.064,14.549,12.683,9.53,9.025,10.98,11.401,9.456,11.147,16.429,11.6,9.146,11.257,14.886,14.472,15.358,13.348,11.406,10.083,13.583,13.782,13.196,17.095,12.95,16.085,9.915,13.213,11.986,14.919,10.937,9.403,15.953,14.473,11.425,10.596,13.177,9.22,15.875,13.584,11.094,11.283,15.497,10.554,12.568,13.597,13.212,11.301,13.513,11.252,6.014,12.818,13.594,14.246,11.976,12.276,13.431,14.499,10.567,13.148,7.554,7.97,9.719,11.501,8.415,6.689,11.13,12.363,14.606,11.163,15.124,15.634,11.958,6.329,6.65,12.562,6.291,5.925,15.388,6.715,14.977,5.84,7.638,6.093,11.872,11.166,7.911,14.67,7.367,9.04,12.792,8.153,9.656,11.082,7.994,9.865,6.648,11.881,6.182,15.57,12.374,11.265,12.721,7.275,9.61,6.425,14.129,15.143,12.941,15.111,8.593,11.242,6.249,7.894,6.315,4.473,9.503,13.339,13.314,14.145,4.887,11.801,15.084,11.424,9.372,14.221,6.805,15.061,9.44,7.32,11.967,14.414,10.753,8.441,17.102,15.774,9.924,9.301,7.113,16.366,8.361,16.18,9.188,14.694,8.153,11.01,8.449,8.605,15.061,9.85,7.106,15.806,11.18,15.095,6.619,6.942,16.642,7.379,9.233,8.295,9.628,6.089,6.853,6.851,7.97,11.465,7.398,5.527,6.935,8.413,6.788,7.841,10.605,10.303,8.234,7.911,8.153,10.587,8.631,6.817,11.193,6.43,9.297,11.585,10.472,12.283,9.256,15.794,7.78,11.182,11.338,9.064,14.351,11.811,8.218,14.767,10.713,6.166,11.275,12.009,6.42,5.618,16.557,15.342,11.609,11.891,11.808,15.203,7.688,14.903,7.885,14.338,14.338,14.832,10.706,11.977,10.011,6.825,8.756,7.347,9.645,15.111,9.911,8.393,13.42,6.712,9.422,11.387,15.897,11.849,13.627,7.423,9.272,13.372,12.069,15.342,13.071,7.786,15.833,15.427,12.283,10.79,15.541,14.762,11.419,11.828,8.307,5.813,13.549,12.218,7.298,7.224,11.112,11.024,11.585,17.24,5.83,12.993,11.888,8.028,11.714,11.828,16.89,8.686,16.175,15.425,12.155,11.312,13.271,6.935,6.935,5.448,16.391,7.696,9.285,7.529,8.917,16.586,17.175,11.757,11.021,7.094,15.064,12.182,12.88,10.16,7.819,6.818,8.439,13.748,14.566,8.448,12.752,15.926,14.427,11.438,13.795,10.213,9.894,8.086,9.047,14.153,4.654,8.188,13.714,4.535,9.223,11.914,12.822,11.862,11.071,10.469,10.867,11.947,13.178,16.248,15.908,17.177,6.712,14.111,11.947,13.053,9.74,8.681,16.342,13.894,18.065,5.365,9.382,14.329,15.064,14.618,3.767,11.582,15.755,19.03,16.505,10.825,13.178,14.581,16.543,13.262,13.043,8.861,9.296,14.398,13.425,11.765,15.184,11.445,14.916,8.391,5.013,8.267,5.643,16.998,12.219,3.81,15.187,6.658,14.359,5.683,5.719,11.999,6.935,15.925,14.147,16.735,13.257,16.503,9.404,12.276,11.798,14.281,15.742,9.958,9.374,9.063,18.215,7.882,9.06,13.267,17.168,17.139,4.948,6.905,15.939,9.039,13.798,8.785,16.084,5.653,14.94,15.221,16.307,16.698,16.673,10.865,18.213,9.619,18.005,11.023,15.331,6.141,13.015,16.348,8.594,4.18,12.479,13.176,13.65,15.941,15.329,8.177,14.218,9,15.6,15.526,17.436,17.596,12.633,7.485,11.179,14.824,16.414,12.527,15.811,16.266,7.725,18.926,9.955,9.145,13.214,9.232,12.073,16.983,16.838,8.667,17.133,18.011,4.411,16.774,6.464,13.279,16.499,16.091,17.74,12.005,10.421,9.619,16.67,4.938,17.613,4.325,14.277,14.923,8.848,6.912,9.96,4.234,15.96,9.997,14.085,15.754,11.983,9.233,8.104,7.783,14.059,14.351,16.54,11.851,9.947,17.7,16.489,5.165,12.556,16.948,6.905,11.389,17.448,7.094,15.303,12.536,16.891,10.717,10.016,14.062,14.289,12.554,15.376,15.304,15.065,14.389,15.348,15.901,13.205,18.402,12.682,15.123,13.695,14.44,17.934,12.816,12.294,12.23,16.509,10.79,9.475,15.114,10.439,9.336,15.159,7.082,14.55,4.502,14.921,7.737,11.066,13.885,8.688,17.942,16.324,15.756,15.531,8.648,5.59,7.039,12.982,6.882,17.597,11.138,11.138,13.122,14.137,15.347,13.823,17.1,11.317,8.193,10.624,17.308,7.144,7.468,6.664,14.921,14.123,12.805,9.748,15.467,9.632,15.106,13.459,17.496,12.073,12.255,8.265,11.979,15.764,15.478,13.684,3.677,14.098,11.375,14.323,13.784,17.408,15.621,14.538,13.165,10.77,11.729,15.396,12.747,3.09,14.093,16.129,6.254,15.999,17.123,15.56,13.887,10.751,13.358,16.631,15.069,15.752,15.041,17.1,13.763,8.774,13.202,14.524,6.781,15.58,14.043,13.752,16.083,14.32,5.435,6.496,13.973,6.337,12.914,8.413,14.568,17.577,7.285,14.456,8.692,8.692,15.11,8.716,15.193,16.113,12.153,15.931,13.132,3.156,14.175,11.882,5.896,15.668,15.918,17.82,13.389,16.251,15.35,12.429,16.174,14.046,7.647,12.01,14.21,15.801,9.587,15.465,14.326,8.494,14.411,17.503,14.762,9.214,13.73,19.282,11.065,11.93,12.794,13.519,12.67,8.21,13.939,14.973,15.371,13.337,8.862,18.024,14.905,12.781,11.616,12.743,13.813,14.178,7.553,14.626,15.052,7.642,15.707,7.408,16.37,15.171,14.724,11.658,14.914,15.503,12.432,16.885,13.688,15.447,12.605,19.188,17.554,14.562,5.515,9.693,9.586,15.183,13.464,15.222,15.398,12.811,18.001,18.763,12.085,15.398,18.436,8.382,10.708,14.905,13.886,8.904,4.726,12.781,6.24,15.95,17.508,6.076,8.788,14.982,13.58,16.081,8.167,14.389,15.331,8.513,13.214,13.7,17.907,13.326,12.828,16.583,14.22,16.136,8.734,10.128,11.844,12.781,7.577,15.559,11.5,8.997,13.502,16.514,8.489,13.314,7.367,7.367,7.216,16.001,19.198,8.141,13.214,15.822,15.974,10.867,16.644,7.018,8.382,15.032,4.518,7.916,7.563,17.635,11.796,15.609,14.291,13.73,10.751,10.735,15.515,15.284,13.634,17.997,5.871,7.004,14.806,8.897,6.656,7.216,7.966,14.184,5.897,13.804,15.052,12.364,5.893,12.258,6.283,14.432,16.241,12.881,14.213,14.568,15.806,13.364,15.462,6.867,15.693,8.034,14.53,15.009,14.866,14.583,13.708,13.963,14.668,12.652,6.697,15.543,16.11,16.13,9.746,9.814,10.473,15.47,16.227,19.181,9.469,11.511,10.932,16.121,15.141,14.479,16.848,15.183,7.348,14.045,15.513,15.32,18.785,6.981,12.516,13.25,7.443,14.092,6.978,9.873,15.316,7.422,11.777,14.433,18.159,0.695,13.95,13.954,10.933,15.686,10.342,16.036,9.986,15.618,7.324,17.063,16.752,15.785,5.743,10.154,13.73,15.57,9.038,14.316,12.997,6.421,15.974,13.73,13.908,13.908,15.118,7.201,13.111,12.755,5.788,16.601,18.318,15.95,13.971,16.925,5.312,8.395,18.886,13.73,13.038,14.404,7.918,15.931,12.951,14.673,4.784,15.224,12.616,13.92,13.832,17.551,16.642,17.214,8.179,15.415,6.225,13.691,10.97,8.581,11.918,12.223,16.297,15.727,12.395,4.449,15.298,14.822,15.216,16.374,14.919,13.247,15.954,15.391,14.089,15.733,16.435,12.016,13.751,7.485,7.374,10.817,2.477,11.588,15.968,15.615,5.765,15.13,11.353,5.985,13.45,15.801,7.235,9.065,17.125,16.446,14.478,10.411,14.35,6.888,15.298,6.429,5.432,13.611,6.88,13.698,15.736,14.651,16.944,12.061,14.501,17.125,16.57,7.854,8.633,10.382,14.919,8.811,13.313,7.392,13.969,15.937,6.554,15.384,14.719,15.191,13.517,15.885,13.64,12.08,10.954,17.185,15.92,11.735,6.847,15.625,14.78,10.303,8.696,11.588,10.73,16.481,7.826,5.392,4.056,15.305,4.359,7.793,16.091,13.665,13.457,15.598,4.972,13.679,11.664,12.567,16.213,14.18,17.334,16.428,16.009,16.581,14.027,15.879,6.711,8.734,10.227,16.81,14.719,9.902,11.275,12.136,3.161,10.93,14.831,17.309,15.096,16.846,12.526,5.254,15.294,13.51,12.095,8.021,7.301,16.474,16.598,17.326,7.913,13,16.132,17.367,10.916,15.625,9.479,6.119,14.78,13.756,7.778,19.327,15.22,15.266,6.807,10.134,11.613,15.389,17.592,14.905,6.429,14.944,6.719,16.506,15.109,10.859,5.256,7.032,12.018,3.976,16.416,15.051,7.134,13.002,10.558,14.95,15.442,7.996,16.282,16.383,15.143,10.874,6.313,17.795,10.404,6.618,10.932,16.008,16.514,16.292,15.857,15.7,15.931,9.774,14.065,15.997,9.682,10.499,15.461,18.062,7.772,12.17,14.349,13.727,10.475,9.957,4.349,17.134,11.832,1.681,10.028,15.906,17.109,15.216,6.29,11.819,14.211,11.914,3.604,4.021,13.283,13.483,5.06,3.097,8.175,13.271,5.032,14.078,6.834,15.833,13.43,11.742,16.761,13.839,14.718,7.228,4.419,16.521,15.394,13.216,2.859,17.656,16.255,15.467,16.378,11.599,14.987,15.877,9.913,12.924,10.02,11.669,10.979,11.228,11.144,7.8,15.781,8.266,13.01,16.204,15.544,1.736,14.362,14.186,11.451,5.091,3.853,17.177,11.737,14.272,5.266,7.049,6.363,18.715,6.378,16.163,7.184,6.767,17.241,11.651,13.793,18.311,15.977,14.285,14.084,18.703,15.561,15.745,7.083,14.624,11.049,2.87,7.268,15.44,15.977,16.534,11.892,2.946,5.939,2.135,16.66,14.988,6.522,3.931,15.64,3.768,15.727,3.351,3.042,15.4,15.063,4.031,5.344,10.607,3.255,5.206,17.551,15.415,10.48,13.346,15.553,13.962,9.903,5.871,6.941,11.739,1.649,1.977,17.266,12.659,15.137,15.19,7.173,6.678,13.365,4.071,13.141,5.985,7.385,14.231,12.853,2.995,11.73,12.165,1.966,5.396,13.205,16.045,6.662,2.87,16.57,6.665,15.853,15.675,6.923,4.544,3.115,12.447,10.655,15.786,7.277,16.908,4.324,14.564,6.783,7.228,7.228,7.228,7.343,7.244,7.228,15.853,6.486,2.663,3.992,11.74,2.591,8.657,12.63,13.073,11.478,16.115,11,13.484,14.464,13.022,1.835,8.878,10.934,13.128,2.946,12.929,16.664,6.489,14.637,3.285,10.851,1.017,12.719,6.517,15.336,14.951,11.555,5.392,5.648,16.429,12.644,9.992,3.17,10.721,12.798,13.067,15.411,18.21,2.663,8.251,16.822,12.908,6.462,9.976,10.204,14.973,3.041,15.461,4.524,9.606,1.922,2.63,14.375,5.561,13.711,7.895,7.86,14.766,16.041,15.688,6.568,16.943,3.878,19.299,6.262,4.865,7.554,16.11,6.347,15.612,11.395,15.478,7.208,18.387,7.403,15.445,15.904,3.178,6.489,12.593,15.838,7.141,4.825,16.378,13.264,11.844,16.919,14.025,7.288,15.474,15.539,3.548,16.595,15.23,14.898,6.372,16.975,16.192,11.626,7.642,6.942,7.883,2.826,7.134,16.488,11.132,15.866,2.946,17.063,3.511,13.483,6.569,12.732,9.034,7.152,1.41,14.471,11.178,3.237,7.116,6.501,6.784,15.464,9.536,13.999,12.575,14.878,2.742,15.965,14.53,16.447,10.408,14.731,15.88,6.849,12.571,17.728,17.728,12.125,16.2,7.256,9.325,3.582,7.037,16.287,14.156,2.109,13.713,6.731,6.278,1.087,15.919,8.837,1.872,7.089,4.083,17.507,14.807,0.854,9.981,1.717,15.09,7.755,13.488,11.799,14.874,3.36,0.578,2.669,6.588,4.333,7.217,12.667,11.733,14.39,5.939,10.252,14.505,15.277,16.054,15.171,12.169,10.765,3.213,10.601,14.806,6.501,7.514,10.367,7.323,14.621,10.207,15.964,12.006,6.367,6.494,16.124,10.67,12.138,17.691,13.986,13.432,0.351,4.132,4.808,15.297,11.382,15.183,16.146,13.805,8.581,8.414,14.534,5.232,8.607,11.316,16.317,11.197,0.571,9.54,13.022,2.515,14.126,16.307,9.602,9.602,2.521,13.669,2.359,2.445,13.476,1.258,1.093,12.803,5.981,8.294,3.051,15.937,8.864,13.42,7.66,7.377,8.117,11.094,5.865,16.08,3.443,9.959,16.108,16.269,5.657,16.021,1.862,15.359,15.821,15.667,7.122,0.23,11.388,13.881,16.657,15.24,10.851,12.621,3.764,15.526,11.578,16.328,15.789,15.464,9.438,15.968,12.751,3.636,15.464,4.662,0.139,0.193,0.139,0.12,14.858,12.488,4.063,12.106,15.848,0.12,0.12,14.631,14.594,14.319,10.788,3.044,1.709,14.685,15.326,17.551,14.973,0.233,15.843,16.632,12.25,17.925,15,15.588,16.085,14.262,18.3,4.33,3.658,15.139,15.699,11.486,8.525,10.574,14.766,9.158,3.142,14.878,15.593,16.631,10.404,12.138,8.822,9.839,8.578,8.405,16.224,-0.233,16.324,14.658,13.703,16.47,15.29,13.299,16.348,11.597,15.209,7.353,7.641,17.776,12.955,0.351,3.765,15.578,15.407,9.101,13.831,13.327,10.937,7.177,8.389,13.594,16.097,4.244,12.438,16.858,0.351,0.139,0.139,0.139,16.734,12.503,8.722,15.469,8.882,14.533,9.268,17.52,9.734,15.3,16.217,4.662,15.384,16.221,10.068,1.38,8.93,14.24,13.993,4.866,18.169,11.557,0.42,13.993,15.901,14.332,15.619,10.676,15.724,1.617,1.544,15.668,5.825,15.2,10.1,7.293,2.1,1.162,13.928,15.887,14.788,15.232,7.166,12.667,15.968,13.041,-0.115,14.915,12.622,11.911,10.885,1.439,9.832,1.334,1.663,16.04,15.563,1.843,15.347,15.909,15.382,1.552,-0.115,1.564,1.564,1.445,1.289,14.505,8.05,11.073,15.856,15.745,14.139,9.268,16.866,16.12,15.924,16.119,15.755,5.722,1.483,10.074,16.631,11.811,0.359,16.383,2.77,14.556,12.402,15.909,15.544,14.076,-0.115,2.14,13.136,13.971,0.1,9.804,-0.115,11.47,12.772,10.892,10.652,17.728,0.044,1.083,15.33,15.718,16.21,14.961,-0.171,10.623,0.26,0.615,17.07,13.186,-0.171,7.982,15.802,0.704,2.5,16.054,13.663,15.545,14.547,12.423,7.322,0.226,15.787,0.26,16.631,15.752,0.142,0.26,16.25,10.154,14.629,14.535,15.742,0.381,0.381,11.131,0.553,0.553,0.553,15.26,9.331,12.672,0.117,0.1,0.021,15.909,15.891,-0.171,15.664,15.018,1.213,0.504,0.553,9.988,-0.171,0.844,16.624,15.139,16.48,4.869,9.696,0.1,1.825,0.139,14.649,14.544,1.525,17.721,0.553,14.919,17.569,12.325,1.432,-0.171,-0.289,1.63,2.577,8.138,0.418,11.421,5.282,0.553,-0.171,14.767,13.453,13.693,14.955,0.832,0.323,3.976,15.259,14.837,15.985,14.17,14.959,14.492,14.505,12.371,14.714,15.463,15.866,-0.115,15.464,15.464,17.773,15.398,14.367,3.228,3.081,15.9,16.706,-0.115,-0.115,15.341,13.618,0.717,14.04,10.972,15.836,15.179,17.273,13.03,14.413,15.656,6.241,1.275,12.754,14.244,9.647,10.02,16.237,0.044,16.665,5.832,9.397,9.603,-0.171,13.488,16.178,15.196,16.108,8.787,14.463,15.678,16.475,12.211,8.218,15.35,1.298,8.719,13.404,15.643,14.471,9.512,15.102,4.49,15.358,-0.115,14.772,8.603,15.938,6.706,16.291,9.082,14.774,2.271,12.769,1.525,14.835,16.695,8.973,15.56,12.526,12.234,3.162,3.031,8.93,2.015,10.403,2.153,1.179,2.947,16.418,9.748,2.479,11.834,14.881,18.072,8.969,10.065,10.854,9.515,0.89,1.914,2.089,10.12,2.098,1.03,1.667,1.573,11.118,1.806,9.692,1.796,11.172,11.685,15.905,12.614,13.4,10.002,14.721,0.643,15.083,15.011,14.615,1.808,16.154,1.553,2.685,6.912,16.031,1.447,9.819,15.186,15.187,15.196,13.879,3.284,1.949,3.021,14.277,11.78,12.391,1.985,1.549,2.786,1.393,1.461,17.036,15.973,12.641,11.052,2.169,16.91,2.706,7.298,6.309,3.008,2.254,9.474,17.591,2.473,14.031,10.573,14.52,15.396,15.196,15.548,12.761,12.711,1.478,17.347,14.955,2.009,15.73,10.301,11.501,1.387,11.888,3.736,1.766,9.441,10.577,1.057,15.615,17.728,7.722,14.829,15.664,5.816,8.145,2.554,13.658,10.79,16.079,1.349,12.395,0.634,0.558,15.724,2.098,8.556,1.644,15.937,13.603,11.129,2.281,14.107,13.091,15.041,2.074,14.562,1.276,15.331,18.179,17.829,8.597,1.392,11.032,10.661,1.993,15.806,18.354,13.423,10.491,2.362,6.656,7.286,12.457,7.996,9.901,7.603,7.603,7.603,7.322,14.315,12.17,12.086,9.668,14.253,2.242,2.242,12.829,1.668,10.935,7.516,8.095,11.62,11.62,13.052,13.109,15.293,1.327,8.38,12.715,9.746,1.989,7.352,14.264,9.223,11.068,7.497,2.38,11.047,7.979,7.374,2.835,11.653,9.579,13.109,1.554,7.424,7.433,8.25,12.304,9.895,7,8.411,9.569,8.891,8.891,8.452,8.871,8.1,10.128,9.452,9.882]],"container":"<table class=\"display\">\n <thead>\n <tr>\n <th> <\/th>\n <th>ID<\/th>\n <th>Species<\/th>\n <th>Kigdom<\/th>\n <th>Phylum<\/th>\n <th>Class<\/th>\n <th>Order<\/th>\n <th>Family<\/th>\n <th>Genus<\/th>\n <th>Guild<\/th>\n <th>Category<\/th>\n <th>sulfur<\/th>\n <th>carbon<\/th>\n <th>oxygen<\/th>\n <th>iron<\/th>\n <th>nitrogen<\/th>\n <\/tr>\n <\/thead>\n<\/table>","options":{"columnDefs":[{"className":"dt-right","targets":[11,12,13,14,15]},{"orderable":false,"targets":0}],"order":[],"autoWidth":false,"orderClasses":false}},"evals":[],"jsHooks":[]}</script>
<script type="application/htmlwidget-sizing" data-for="htmlwidget-2da90b7ef2180d47a9a3">{"viewer":{"width":450,"height":350,"padding":15,"fill":true},"browser":{"width":960,"height":500,"padding":40,"fill":false}}</script>
</body>
</html>