<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>169695</bug_id>
          
          <creation_ts>2017-03-15 13:58:50 -0700</creation_ts>
          <short_desc>In-browser and node.js implementations of RemoteAPI should share some code</short_desc>
          <delta_ts>2017-03-15 14:59:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Perf Dashboard</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1288228</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-15 13:58:50 -0700</bug_when>
    <thetext>Right now, tools/remote.js and public/v3/remote.js duplicate a lot of code for checking the status, etc...
Share the common code between the two.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288232</commentid>
    <comment_count>1</comment_count>
      <attachid>304544</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-15 14:12:33 -0700</bug_when>
    <thetext>Created attachment 304544
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288233</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-15 14:13:24 -0700</bug_when>
    <thetext>This refactoring also makes some aspects of RemoteAPI, e.g. status check, testable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288234</commentid>
    <comment_count>3</comment_count>
      <attachid>304544</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2017-03-15 14:14:36 -0700</bug_when>
    <thetext>Comment on attachment 304544
Cleanup

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288259</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-15 14:58:38 -0700</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288261</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-03-15 14:59:15 -0700</bug_when>
    <thetext>Committed r214008: &lt;http://trac.webkit.org/changeset/214008&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304544</attachid>
            <date>2017-03-15 14:12:33 -0700</date>
            <delta_ts>2017-03-15 14:14:36 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>bug-169695-20170315141232.patch</filename>
            <type>text/plain</type>
            <size>31209</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0MDA1KQorKysg
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQ4IEBACisyMDE3LTAzLTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIEluLWJyb3dzZXIgYW5kIG5vZGUuanMgaW1wbGVtZW50YXRpb25zIG9mIFJlbW90
ZUFQSSBzaG91bGQgc2hhcmUgc29tZSBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjk2OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBFeHRyYWN0ZWQgQ29tbW9uUmVtb3RlQVBJIG91dCBvZiBSZW1v
dGVBUEkgaW1wbGVtZW50YXRpb25zIGZvciBub2RlLmpzIGFuZCBicm93c2VyLiAKKworICAgICAg
ICAqIHB1YmxpYy9zaGFyZWQvY29tbW9uLXJlbW90ZS5qczogQWRkZWQuCisgICAgICAgIChDb21t
b25SZW1vdGVBUEkpOiBBZGRlZC4KKyAgICAgICAgKENvbW1vblJlbW90ZUFQSS5wcm90b3R5cGUu
cG9zdEpTT04pOiBFeHRyYWN0ZWQgZnJvbSBSZW1vdGVBUEkuCisgICAgICAgIChDb21tb25SZW1v
dGVBUEkucHJvdG90eXBlLnBvc3RKU09OV2l0aFN0YXR1cyk6IERpdHRvLgorICAgICAgICAoQ29t
bW9uUmVtb3RlQVBJLnByb3RvdHlwZS5nZXRKU09OKTogRGl0dG8uCisgICAgICAgIChDb21tb25S
ZW1vdGVBUEkucHJvdG90eXBlLmdldEpTT05XaXRoU3RhdHVzKTogRGl0dG8uCisgICAgICAgIChD
b21tb25SZW1vdGVBUEkucHJvdG90eXBlLnNlbmRIdHRwUmVxdWVzdCk6IEFkZGVkLiBOZWVkcyB0
byBpbXBsZW1lbnRlZCBieSBhIHN1YmNsYXNzLgorICAgICAgICAoQ29tbW9uUmVtb3RlQVBJLnBy
b3RvdHlwZS5fYXNKU09OKTogQWRkZWQuCisgICAgICAgIChDb21tb25SZW1vdGVBUEkucHJvdG90
eXBlLl9jaGVja1N0YXR1cyk6IEFkZGVkLgorCisgICAgICAgICogcHVibGljL3YzL2luZGV4Lmh0
bWw6IEluY2x1ZGUgY29tbW9uLXJlbW90ZS5qcy4KKworICAgICAgICAqIHB1YmxpYy92My9wcml2
aWxlZ2VkLWFwaS5qczoKKyAgICAgICAgKFByaXZpbGVnZWRBUEkpOiBVc2UgY2xhc3Mgbm93IHRo
YXQgd2UgZG9uJ3QgaW5jbHVkZSBkYXRhLmpzLgorICAgICAgICAoUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCk6IE1vZGVybml6ZWQgdGhlIGNvZGUuCisgICAgICAgIChQcml2aWxlZ2VkQVBJLnJl
cXVlc3RDU1JGVG9rZW4pOiBEaXR0by4KKworICAgICAgICAqIHB1YmxpYy92My9yZW1vdGUuanM6
CisgICAgICAgIChCcm93c2VyUmVtb3RlQVBJKTogUmVuYW1lZCBmcm9tIFJlbW90ZUFQSS4gd2lu
ZG93LlJlbW90ZUFQSSBpcyBub3cgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KKyAgICAgICAg
KEJyb3dzZXJSZW1vdGVBUEkucHJvdG90eXBlLnNlbmRIdHRwUmVxdWVzdCk6IE1vdmVkIGZyb20g
UmVtb3RlQVBJLnNlbmRIdHRwUmVxdWVzdC4KKyAgICAgICAgKEJyb3dzZXJSZW1vdGVBUEkucHJv
dG90eXBlLnNlbmRIdHRwUmVxdWVzdCk6CisKKyAgICAgICAgKiBzZXJ2ZXItdGVzdHMvcHJpdmls
ZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanM6IFVwZGF0ZWQgdGVzdHMgc2lu
Y2UgTm9kZUpTUmVtb3RlQVBJCisgICAgICAgIG5vdyB0aHJvd3MgdGhlIEpTT04gc3RhdHVzIGFz
IGFuIGVycm9yIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBCcm93c2VyUmVtb3RlQVBJLgorICAgICAg
ICAqIHNlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5q
czogRGl0dG8uCisgICAgICAgICogc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLXVwYXRlLXJ1
bi1zdGF0dXMuanM6IERpdHRvLgorCisgICAgICAgICogdG9vbHMvanMvYnVpbGRib3QtdHJpZ2dl
cmFibGUuanM6CisgICAgICAgIChCdWlsZGJvdFRyaWdnZXJhYmxlLnByb3RvdHlwZS5zeW5jT25j
ZSk6IEp1c3QgdXNlIHBvc3RKU09OV2l0aFN0YXR1cyBpbnN0ZWFkIG9mIG1hbnVhbGx5CisgICAg
ICAgIGNoZWNraW5nIHRoZSBzdGF0dXMuCisKKyAgICAgICAgKiB0b29scy9qcy9yZW1vdGUuanM6
CisgICAgICAgIChOb2RlUmVtb3RlQVBJKTogUmVuYW1lZCBmcm9tIFJlbW90ZUFQSS4gU3RpbGwg
ZXhwb3J0ZWQgYXMgUmVtb3RlQVBJLgorICAgICAgICAoTm9kZVJlbW90ZUFQSS5wcm90b3R5cGUu
Y29uc3RydWN0b3IpOgorICAgICAgICAoTm9kZVJlbW90ZUFQSS5wcm90b3R5cGUuc2VuZEh0dHBS
ZXF1ZXN0KTogTW9kZXJuaXplZCB0aGUgY29kZS4KKwogMjAxNy0wMy0xNSAgUnlvc3VrZSBOaXdh
ICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggc2VydmVyIHRlc3RzIGFmdGVyIHIy
MTM5OTggYW5kIHIyMTM5NjkKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMv
c2hhcmVkL2NvbW1vbi1yZW1vdGUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJr
aXQub3JnL3B1YmxpYy9zaGFyZWQvY29tbW9uLXJlbW90ZS5qcwkobm9uZXhpc3RlbnQpCisrKyBX
ZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3NoYXJlZC9jb21tb24tcmVtb3RlLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTIgQEAKKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgQ29t
bW9uUmVtb3RlQVBJIHsKKyAgICBwb3N0SlNPTihwYXRoLCBkYXRhKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX2FzSlNPTih0aGlzLnNlbmRIdHRwUmVxdWVzdChwYXRoLCAnUE9TVCcsICdh
cHBsaWNhdGlvbi9qc29uJywgSlNPTi5zdHJpbmdpZnkoZGF0YSB8fCB7fSkpKTsKKyAgICB9CisK
KyAgICBwb3N0SlNPTldpdGhTdGF0dXMocGF0aCwgZGF0YSkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9jaGVja1N0YXR1cyh0aGlzLnBvc3RKU09OKHBhdGgsIGRhdGEpKTsKKyAgICB9CisK
KyAgICBnZXRKU09OKHBhdGgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fYXNKU09OKHRo
aXMuc2VuZEh0dHBSZXF1ZXN0KHBhdGgsICdHRVQnLCBudWxsLCBudWxsKSk7CisgICAgfQorCisg
ICAgZ2V0SlNPTldpdGhTdGF0dXMocGF0aCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9j
aGVja1N0YXR1cyh0aGlzLmdldEpTT04ocGF0aCkpOworICAgIH0KKworICAgIHNlbmRIdHRwUmVx
dWVzdChwYXRoLCBtZXRob2QsIGNvbnRlbnRUeXBlLCBjb250ZW50KQorICAgIHsKKyAgICAgICAg
dGhyb3cgJ05vdEltcGxlbWVudGVkJzsKKyAgICB9CisKKyAgICBfYXNKU09OKHByb21pc2UpCisg
ICAgeworICAgICAgICByZXR1cm4gcHJvbWlzZS50aGVuKChyZXN1bHQpID0+IHsKKyAgICAgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzdWx0LnJlc3Bv
bnNlVGV4dCk7CisgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgICAg
IGNvbnNvbGUuZXJyb3IocmVzdWx0LnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAgICAgICAgcmVq
ZWN0KHJlc3VsdC5zdGF0dXNDb2RlICsgJywgJyArIGVycm9yKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSk7CisgICAgfQorCisgICAgX2NoZWNrU3RhdHVzKHByb21pc2UpCisgICAgeworICAg
ICAgICByZXR1cm4gcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7CisgICAgICAgICAg
ICBpZiAoY29udGVudFsnc3RhdHVzJ10gIT0gJ09LJykKKyAgICAgICAgICAgICAgICB0aHJvdyBj
b250ZW50WydzdGF0dXMnXTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZW50OworICAgICAgICB9
KTsKKyAgICB9Cit9CisKK2lmICh0eXBlb2YgbW9kdWxlICE9ICd1bmRlZmluZWQnKQorICAgIG1v
ZHVsZS5leHBvcnRzLkNvbW1vblJlbW90ZUFQSSA9IENvbW1vblJlbW90ZUFQSTsKSW5kZXg6IFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvaW5kZXguaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL2luZGV4Lmh0bWwJKHJldmlzaW9u
IDIxNDAwNSkKKysrIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvaW5kZXguaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBSdW4gdG9vbHMvYnVuZGxlLXYzLXNj
cmlwdHMgdG8gc3BlZWQgdXAgCiAKICAgICA8dGVtcGxhdGUgaWQ9InVuYnVuZGxlZC1zY3JpcHRz
Ij4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3NoYXJlZC9zdGF0aXN0aWNzLmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uL3NoYXJlZC9jb21tb24tcmVtb3RlLmpzIj48L3Nj
cmlwdD4KIAogICAgICAgICA8c2NyaXB0IHNyYz0iaW5zdHJ1bWVudGF0aW9uLmpzIj48L3Njcmlw
dD4KICAgICAgICAgPHNjcmlwdCBzcmM9InJlbW90ZS5qcyI+PC9zY3JpcHQ+CkBAIC04OSw2ICs5
MCw3IEBAIFJ1biB0b29scy9idW5kbGUtdjMtc2NyaXB0cyB0byBzcGVlZCB1cCAKICAgICAgICAg
PHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvY2hhcnQtcGFuZS1iYXNlLmpzIj48L3NjcmlwdD4KICAg
ICAgICAgPHNjcmlwdCBzcmM9ImNvbXBvbmVudHMvbXV0YWJsZS1saXN0LXZpZXcuanMiPjwvc2Ny
aXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iY29tcG9uZW50cy9yYXRpby1iYXItZ3JhcGguanMi
Pjwvc2NyaXB0PgorCiAgICAgICAgIDxzY3JpcHQgc3JjPSJwYWdlcy9wYWdlLmpzIj48L3Njcmlw
dD4KICAgICAgICAgPHNjcmlwdCBzcmM9InBhZ2VzL3BhZ2Utcm91dGVyLmpzIj48L3NjcmlwdD4K
ICAgICAgICAgPHNjcmlwdCBzcmM9InBhZ2VzL2hlYWRpbmcuanMiPjwvc2NyaXB0PgpJbmRleDog
V2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3B1YmxpYy92My9wcml2aWxlZ2VkLWFwaS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3ByaXZpbGVnZWQt
YXBpLmpzCShyZXZpc2lvbiAyMTQwMDUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVi
bGljL3YzL3ByaXZpbGVnZWQtYXBpLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIzICsxLDI1IEBA
CiAidXNlIHN0cmljdCI7CiAKLS8vIEZJWE1FOiBVc2UgcmVhbCBjbGFzcyBzeW50YXggb25jZSB0
aGUgZGVwZW5kZW5jeSBvbiBkYXRhLmpzIGhhcyBiZWVuIHJlbW92ZWQuCi12YXIgUHJpdmlsZWdl
ZEFQSSA9IGNsYXNzIHsKK2NsYXNzIFByaXZpbGVnZWRBUEkgewogCiAgICAgc3RhdGljIHNlbmRS
ZXF1ZXN0KHBhdGgsIGRhdGEpCiAgICAgewotICAgICAgICB2YXIgY2xvbmVkRGF0YSA9IHt9Owot
ICAgICAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkKKyAgICAgICAgY29uc3QgY2xvbmVkRGF0YSA9
IHt9OworICAgICAgICBmb3IgKGxldCBrZXkgaW4gZGF0YSkKICAgICAgICAgICAgIGNsb25lZERh
dGFba2V5XSA9IGRhdGFba2V5XTsKIAotICAgICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0Q1NSRlRv
a2VuKCkudGhlbihmdW5jdGlvbiAodG9rZW4pIHsKKyAgICAgICAgY29uc3QgZnVsbFBhdGggPSAn
L3ByaXZpbGVnZWQtYXBpLycgKyBwYXRoOworICAgICAgICBjb25zdCBwb3N0ID0gKCkgPT4gUmVt
b3RlQVBJLnBvc3RKU09OV2l0aFN0YXR1cyhmdWxsUGF0aCwgY2xvbmVkRGF0YSk7CisKKyAgICAg
ICAgcmV0dXJuIHRoaXMucmVxdWVzdENTUkZUb2tlbigpLnRoZW4oKHRva2VuKSA9PiB7CiAgICAg
ICAgICAgICBjbG9uZWREYXRhWyd0b2tlbiddID0gdG9rZW47Ci0gICAgICAgICAgICByZXR1cm4g
UmVtb3RlQVBJLnBvc3RKU09OV2l0aFN0YXR1cygnL3ByaXZpbGVnZWQtYXBpLycgKyBwYXRoLCBj
bG9uZWREYXRhKS5jYXRjaChmdW5jdGlvbiAoc3RhdHVzKSB7CisgICAgICAgICAgICByZXR1cm4g
cG9zdCgpLmNhdGNoKChzdGF0dXMpID0+IHsKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9
ICdJbnZhbGlkVG9rZW4nKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWpl
Y3Qoc3RhdHVzKTsKLSAgICAgICAgICAgICAgICBQcml2aWxlZ2VkQVBJLl90b2tlbiA9IG51bGw7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkucmVxdWVzdENTUkZUb2tlbigp
LnRoZW4oZnVuY3Rpb24gKHRva2VuKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fdG9rZW4gPSBu
dWxsOworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RDU1JGVG9rZW4oKS50aGVu
KCh0b2tlbikgPT4gewogICAgICAgICAgICAgICAgICAgICBjbG9uZWREYXRhWyd0b2tlbiddID0g
dG9rZW47Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBSZW1vdGVBUEkucG9zdEpTT05XaXRo
U3RhdHVzKCcvcHJpdmlsZWdlZC1hcGkvJyArIHBhdGgsIGNsb25lZERhdGEpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcG9zdCgpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0pOwpAQCAtMjUsMTQgKzI3LDE0IEBAIHZhciBQcml2aWxlZ2VkQVBJ
ID0gY2xhc3MgewogCiAgICAgc3RhdGljIHJlcXVlc3RDU1JGVG9rZW4oKQogICAgIHsKLSAgICAg
ICAgdmFyIG1heE5ldHdvcmtMYXRlbmN5ID0gMyAqIDYwICogMTAwMDsgLyogMyBtaW51dGVzICov
CisgICAgICAgIGNvbnN0IG1heE5ldHdvcmtMYXRlbmN5ID0gMyAqIDYwICogMTAwMDsgLyogMyBt
aW51dGVzICovCiAgICAgICAgIGlmICh0aGlzLl90b2tlbiAmJiB0aGlzLl9leHBpcmF0aW9uID4g
RGF0ZS5ub3coKSArIG1heE5ldHdvcmtMYXRlbmN5KQogICAgICAgICAgICAgcmV0dXJuIFByb21p
c2UucmVzb2x2ZSh0aGlzLl90b2tlbik7CiAKLSAgICAgICAgcmV0dXJuIFJlbW90ZUFQSS5wb3N0
SlNPTldpdGhTdGF0dXMoJy9wcml2aWxlZ2VkLWFwaS9nZW5lcmF0ZS1jc3JmLXRva2VuJykudGhl
bihmdW5jdGlvbiAocmVzdWx0KSB7Ci0gICAgICAgICAgICBQcml2aWxlZ2VkQVBJLl90b2tlbiA9
IHJlc3VsdFsndG9rZW4nXTsKLSAgICAgICAgICAgIFByaXZpbGVnZWRBUEkuX2V4cGlyYXRpb24g
PSBuZXcgRGF0ZShyZXN1bHRbJ2V4cGlyYXRpb24nXSk7Ci0gICAgICAgICAgICByZXR1cm4gUHJp
dmlsZWdlZEFQSS5fdG9rZW47CisgICAgICAgIHJldHVybiBSZW1vdGVBUEkucG9zdEpTT05XaXRo
U3RhdHVzKCcvcHJpdmlsZWdlZC1hcGkvZ2VuZXJhdGUtY3NyZi10b2tlbicpLnRoZW4oKHJlc3Vs
dCkgPT4geworICAgICAgICAgICAgdGhpcy5fdG9rZW4gPSByZXN1bHRbJ3Rva2VuJ107CisgICAg
ICAgICAgICB0aGlzLl9leHBpcmF0aW9uID0gbmV3IERhdGUocmVzdWx0WydleHBpcmF0aW9uJ10p
OworICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rva2VuOwogICAgICAgICB9KTsKICAgICB9CiAK
SW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcmVtb3RlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9wdWJsaWMvdjMvcmVtb3RlLmpzCShy
ZXZpc2lvbiAyMTQwMDUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvcHVibGljL3YzL3Jl
bW90ZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMSw2NiArMSw0MSBAQAogInVzZSBzdHJpY3QiOwog
Ci12YXIgUmVtb3RlQVBJID0ge307CitjbGFzcyBCcm93c2VyUmVtb3RlQVBJIGV4dGVuZHMgQ29t
bW9uUmVtb3RlQVBJIHsKIAotUmVtb3RlQVBJLnBvc3RKU09OID0gZnVuY3Rpb24gKHBhdGgsIGRh
dGEpCi17Ci0gICAgcmV0dXJuIHRoaXMuZ2V0SlNPTihwYXRoLCBkYXRhIHx8IHt9KTsKLX0KLQot
UmVtb3RlQVBJLnBvc3RKU09OV2l0aFN0YXR1cyA9IGZ1bmN0aW9uIChwYXRoLCBkYXRhKQotewot
ICAgIHJldHVybiB0aGlzLmdldEpTT05XaXRoU3RhdHVzKHBhdGgsIGRhdGEgfHwge30pOwotfQor
ICAgIHNlbmRIdHRwUmVxdWVzdChwYXRoLCBtZXRob2QsIGNvbnRlbnRUeXBlLCBjb250ZW50KQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXBhdGguc3RhcnRzV2l0aCgnaHR0cDonKSAm
JiAhcGF0aC5zdGFydHNXaXRoKCdodHRwczonKSAmJiAhcGF0aC5zdGFydHNXaXRoKCdmaWxlOicp
KTsKKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewor
ICAgICAgICAgICAgSW5zdHJ1bWVudGF0aW9uLnN0YXJ0TWVhc3VyaW5nVGltZSgnUmVtb3RlJywg
J3NlbmRIdHRwUmVxdWVzdCcpOworCisgICAgICAgICAgICBmdW5jdGlvbiBvbmxvYWQoKSB7Cisg
ICAgICAgICAgICAgICAgSW5zdHJ1bWVudGF0aW9uLmVuZE1lYXN1cmluZ1RpbWUoJ1JlbW90ZScs
ICdzZW5kSHR0cFJlcXVlc3QnKTsKKyAgICAgICAgICAgICAgICBpZiAoeGhyLnN0YXR1cyAhPSAy
MDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNqZWN0KHhoci5zdGF0dXMpOworICAg
ICAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1c0NvZGU6IHhoci5zdGF0dXMsIHJlc3BvbnNlVGV4
dDogeGhyLnJlc3BvbnNlVGV4dH0pOworICAgICAgICAgICAgfTsKIAotUmVtb3RlQVBJLmdldEpT
T04gPSBmdW5jdGlvbihwYXRoLCBkYXRhKQotewotICAgIGNvbnNvbGUuYXNzZXJ0KCFwYXRoLnN0
YXJ0c1dpdGgoJ2h0dHA6JykgJiYgIXBhdGguc3RhcnRzV2l0aCgnaHR0cHM6JykgJiYgIXBhdGgu
c3RhcnRzV2l0aCgnZmlsZTonKSk7Ci0KLSAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24g
KHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICBJbnN0cnVtZW50YXRpb24uc3RhcnRNZWFzdXJp
bmdUaW1lKCdSZW1vdGUnLCAnZ2V0SlNPTicpOwotCi0gICAgICAgIHZhciB4aHIgPSBuZXcgWE1M
SHR0cFJlcXVlc3Q7Ci0gICAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICBJbnN0cnVtZW50YXRpb24uZW5kTWVhc3VyaW5nVGltZSgnUmVtb3RlJywgJ2dldEpTT04n
KTsKLQotICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgIT0gMjAwKSB7CisgICAgICAgICAgICBm
dW5jdGlvbiBvbmVycm9yKCkgeworICAgICAgICAgICAgICAgIEluc3RydW1lbnRhdGlvbi5lbmRN
ZWFzdXJpbmdUaW1lKCdSZW1vdGUnLCAnc2VuZEh0dHBSZXF1ZXN0Jyk7CiAgICAgICAgICAgICAg
ICAgcmVqZWN0KHhoci5zdGF0dXMpOwotICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB2YXIgcGFyc2VkID0g
SlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgICAgICByZXNvbHZlKHBh
cnNlZCk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IoeGhyLnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICAgICAgcmVqZWN0KHho
ci5zdGF0dXMgKyAnLCAnICsgZXJyb3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9OworICAg
ICAgICAgICAgY29uc3QgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0OworICAgICAgICAgICAgeGhy
Lm9ubG9hZCA9IG9ubG9hZDsKKyAgICAgICAgICAgIHhoci5vbmFib3J0ID0gb25lcnJvcjsKKyAg
ICAgICAgICAgIHhoci5vbmVycm9yID0gb25lcnJvcjsKKworICAgICAgICAgICAgeGhyLm9wZW4o
bWV0aG9kLCBwYXRoLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChjb250ZW50VHlwZSkKKyAgICAg
ICAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcignQ29udGVudC1UeXBlJywgY29udGVudFR5
cGUpOworICAgICAgICAgICAgaWYgKGNvbnRlbnQpCisgICAgICAgICAgICAgICAgeGhyLnNlbmQo
Y29udGVudCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeGhyLnNlbmQoKTsK
KyAgICAgICAgfSk7CisgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIG9uZXJyb3IoKSB7Ci0gICAg
ICAgICAgICBJbnN0cnVtZW50YXRpb24uZW5kTWVhc3VyaW5nVGltZSgnUmVtb3RlJywgJ2dldEpT
T04nKTsKLSAgICAgICAgICAgIHJlamVjdCh4aHIuc3RhdHVzKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHhoci5vbmFib3J0ID0gb25lcnJvcjsKLSAgICAgICAgeGhyLm9uZXJyb3IgPSBvbmVycm9y
OwotCi0gICAgICAgIGlmIChkYXRhKSB7Ci0gICAgICAgICAgICB4aHIub3BlbignUE9TVCcsIHBh
dGgsIHRydWUpOwotICAgICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlw
ZScsICdhcHBsaWNhdGlvbi9qc29uJyk7Ci0gICAgICAgICAgICB4aHIuc2VuZChKU09OLnN0cmlu
Z2lmeShkYXRhKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB4aHIub3BlbignR0VU
JywgcGF0aCwgdHJ1ZSk7Ci0gICAgICAgICAgICB4aHIuc2VuZCgpOwotICAgICAgICB9Ci0gICAg
fSk7CiB9CiAKLVJlbW90ZUFQSS5nZXRKU09OV2l0aFN0YXR1cyA9IGZ1bmN0aW9uKHBhdGgsIGRh
dGEpCi17Ci0gICAgcmV0dXJuIHRoaXMuZ2V0SlNPTihwYXRoLCBkYXRhKS50aGVuKGZ1bmN0aW9u
IChjb250ZW50KSB7Ci0gICAgICAgIGlmIChjb250ZW50WydzdGF0dXMnXSAhPSAnT0snKQotICAg
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGNvbnRlbnRbJ3N0YXR1cyddKTsKLSAgICAg
ICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICAgfSk7Ci19Citjb25zdCBSZW1vdGVBUEkgPSBuZXcgQnJv
d3NlclJlbW90ZUFQSTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVz
dHMvcHJpdmlsZWdlZC1hcGktY3JlYXRlLWFuYWx5c2lzLXRhc2stdGVzdHMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFw
aS1jcmVhdGUtYW5hbHlzaXMtdGFzay10ZXN0cy5qcwkocmV2aXNpb24gMjE0MDA1KQorKysgV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUt
YW5hbHlzaXMtdGFzay10ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtNjMsNDAgKzYzLDQwIEBA
IGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2kKICAgICBpdCgnc2hvdWxk
IHJldHVybiAiTWlzc2luZ05hbWUiIG9uIGFuIGVtcHR5IHJlcXVlc3QnLCAoKSA9PiB7CiAgICAg
ICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtYW5hbHlzaXMtdGFz
aycsIHt9KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdz
aG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwotICAgICAgICB9LCAocmVzcG9uc2UpID0+IHsKLSAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdNaXNzaW5nTmFtZScp
OworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJv
ciwgJ01pc3NpbmdOYW1lJyk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgaXQoJ3Nob3Vs
ZCByZXR1cm4gIkludmFsaWRTdGFydFJ1biIgd2hlbiBzdGFydFJ1biBpcyBtaXNzaW5nIGJ1dCBl
bmRSdW4gaXMgc2V0JywgKCkgPT4gewogICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5k
UmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7bmFtZTogJ2hpJywgZW5kUnVuOiAxfSku
dGhlbigoY29udGVudCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5l
dmVyIGJlIHJlYWNoZWQnKTsKLSAgICAgICAgfSwgKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZFN0YXJ0UnVuJyk7Cisg
ICAgICAgIH0sIChlcnJvcikgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAn
SW52YWxpZFN0YXJ0UnVuJyk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgaXQoJ3Nob3Vs
ZCByZXR1cm4gIkludmFsaWRFbmRSdW4iIHdoZW4gZW5kUnVuIGlzIG1pc3NpbmcgYnV0IHN0YXJ0
UnVuIGlzIHNldCcsICgpID0+IHsKICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJl
cXVlc3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywge25hbWU6ICdoaScsIHN0YXJ0UnVuOiAxfSku
dGhlbigoY29udGVudCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5l
dmVyIGJlIHJlYWNoZWQnKTsKLSAgICAgICAgfSwgKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZEVuZFJ1bicpOworICAg
ICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwgJ0lu
dmFsaWRFbmRSdW4nKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiAKICAgICBpdCgnc2hvdWxkIHJl
dHVybiAiSW52YWxpZFN0YXJ0UnVuIiB3aGVuIHN0YXJ0UnVuIGlzIG5vdCBhIHZhbGlkIGludGVn
ZXInLCAoKSA9PiB7CiAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdj
cmVhdGUtYW5hbHlzaXMtdGFzaycsIHtuYW1lOiAnaGknLCBzdGFydFJ1bjogImZvbyIsIGVuZFJ1
bjogMX0pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAgICAgICAgIGFzc2VydChmYWxzZSwgJ3No
b3VsZCBuZXZlciBiZSByZWFjaGVkJyk7Ci0gICAgICAgIH0sIChyZXNwb25zZSkgPT4gewotICAg
ICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ0ludmFsaWRTdGFydFJ1
bicpOworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChl
cnJvciwgJ0ludmFsaWRTdGFydFJ1bicpOwogICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGl0
KCdzaG91bGQgcmV0dXJuICJJbnZhbGlkRW5kUnVuIiB3aGVuIGVuZFJ1biBpcyBub3QgYSB2YWxp
ZCBpbnRlZ2VyJywgKCkgPT4gewogICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVx
dWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7bmFtZTogJ2hpJywgc3RhcnRSdW46IDEsIGVu
ZFJ1bjogImZvbyJ9KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQoZmFs
c2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwotICAgICAgICB9LCAocmVzcG9uc2UpID0+
IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlk
RW5kUnVuJyk7CisgICAgICAgIH0sIChlcnJvcikgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVx
dWFsKGVycm9yLCAnSW52YWxpZEVuZFJ1bicpOwogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAt
MTA2LDggKzEwNiw4IEBAIGRlc2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLWFuYWx5c2kK
ICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQ
SS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7bmFtZTogJ2hpJywgc3RhcnRS
dW46IDEwMCwgZW5kUnVuOiAxfSkudGhlbigoY29udGVudCkgPT4gewogICAgICAgICAgICAgICAg
IGFzc2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVkJyk7Ci0gICAgICAgICAgICB9
LCAocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Vb
J3N0YXR1cyddLCAnSW52YWxpZFN0YXJ0UnVuJyk7CisgICAgICAgICAgICB9LCAoZXJyb3IpID0+
IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdJbnZhbGlkU3RhcnRSdW4n
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTExOCw4ICsxMTgs
OCBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpCiAgICAgICAgIH0p
LnRoZW4oKCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVl
c3QoJ2NyZWF0ZS1hbmFseXNpcy10YXNrJywge25hbWU6ICdoaScsIHN0YXJ0UnVuOiAxLCBlbmRS
dW46IDEwMH0pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAgICAgICAgICAgICBhc3NlcnQoZmFs
c2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwotICAgICAgICAgICAgfSwgKHJlc3BvbnNl
KSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwg
J0ludmFsaWRFbmRSdW4nKTsKKyAgICAgICAgICAgIH0sIChlcnJvcikgPT4geworICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwgJ0ludmFsaWRFbmRSdW4nKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTEzMCw4ICsxMzAsOCBAQCBkZXNjcmliZSgn
L3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS1hbmFseXNpCiAgICAgICAgIH0pLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3QoJ2NyZWF0ZS1hbmFs
eXNpcy10YXNrJywge25hbWU6ICdoaScsIHN0YXJ0UnVuOiAxLCBlbmRSdW46IDF9KS50aGVuKChj
b250ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVy
IGJlIHJlYWNoZWQnKTsKLSAgICAgICAgICAgIH0sIChyZXNwb25zZSkgPT4gewotICAgICAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkVGltZVJhbmdl
Jyk7CisgICAgICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQu
ZXF1YWwoZXJyb3IsICdJbnZhbGlkVGltZVJhbmdlJyk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CkBAIC0xNDIsOCArMTQyLDggQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2Vk
LWFwaS9jcmVhdGUtYW5hbHlzaQogICAgICAgICB9KS50aGVuKCgpID0+IHsKICAgICAgICAgICAg
IHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtYW5hbHlzaXMtdGFzaycs
IHtuYW1lOiAnaGknLCBzdGFydFJ1bjogMSwgZW5kUnVuOiAyfSkudGhlbigoY29udGVudCkgPT4g
ewogICAgICAgICAgICAgICAgIGFzc2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVk
Jyk7Ci0gICAgICAgICAgICB9LCAocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgICAgICBhc3Nl
cnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnUnVuQ29uZmlnTWlzbWF0Y2gnKTsKKyAgICAg
ICAgICAgIH0sIChlcnJvcikgPT4geworICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJv
ciwgJ1J1bkNvbmZpZ01pc21hdGNoJyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CkBAIC0yMDQsOCArMjA0LDggQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVh
dGUtYW5hbHlzaQogICAgICAgICB9KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICBy
ZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLWFuYWx5c2lzLXRhc2snLCB7
bmFtZTogJ2hpJywgc3RhcnRSdW46IHN0YXJ0SWQsIGVuZFJ1bjogZW5kSWR9KS50aGVuKCgpID0+
IHsKICAgICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hl
ZCcpOwotICAgICAgICAgICAgfSwgKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNz
ZXJ0LmVxdWFsKHJlc3BvbnNlWydzdGF0dXMnXSwgJ0R1cGxpY2F0ZUFuYWx5c2lzVGFzaycpOwor
ICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFs
KGVycm9yLCAnRHVwbGljYXRlQW5hbHlzaXNUYXNrJyk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICByZXR1cm4gZGIuc2VsZWN0QWxsKCdhbmFs
eXNpc190YXNrcycpOwpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3NlcnZlci10ZXN0
cy9wcml2aWxlZ2VkLWFwaS1jcmVhdGUtdGVzdC1ncm91cC10ZXN0cy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNy
ZWF0ZS10ZXN0LWdyb3VwLXRlc3RzLmpzCShyZXZpc2lvbiAyMTQwMDUpCisrKyBXZWJzaXRlcy9w
ZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3ByaXZpbGVnZWQtYXBpLWNyZWF0ZS10ZXN0LWdy
b3VwLXRlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNzIgKzExNiw3MiBAQCBkZXNjcmli
ZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyCiAgICAgaXQoJ3Nob3VsZCByZXR1cm4g
IkludmFsaWROYW1lIiBvbiBhbiBlbXB0eSByZXF1ZXN0JywgKCkgPT4gewogICAgICAgICByZXR1
cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAnLCB7fSkudGhl
bigoY29udGVudCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVy
IGJlIHJlYWNoZWQnKTsKLSAgICAgICAgfSwgKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBh
c3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZE5hbWUnKTsKKyAgICAgICAg
fSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdJbnZhbGlk
TmFtZScpOwogICAgICAgICB9KTsKICAgICB9KTsKIAogICAgIGl0KCdzaG91bGQgcmV0dXJuICJJ
bnZhbGlkVGFzayIgd2hlbiB0YXNrIGlzIG5vdCBzcGVjaWZpZWQnLCAoKSA9PiB7CiAgICAgICAg
IHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtu
YW1lOiAndGVzdCcsIGNvbW1pdFNldHM6IFtbMV1dfSkudGhlbigoY29udGVudCkgPT4gewogICAg
ICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKLSAgICAg
ICAgfSwgKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2Vb
J3N0YXR1cyddLCAnSW52YWxpZFRhc2snKTsKKyAgICAgICAgfSwgKGVycm9yKSA9PiB7CisgICAg
ICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdJbnZhbGlkVGFzaycpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIAogICAgIGl0KCdzaG91bGQgcmV0dXJuICJJbnZhbGlkVGFzayIgd2hlbiB0YXNr
IGlzIG5vdCBhIHZhbGlkIGludGVnZXInLCAoKSA9PiB7CiAgICAgICAgIHJldHVybiBQcml2aWxl
Z2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRh
c2s6ICdmb28nLCBjb21taXRTZXRzOiBbWzFdXX0pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAg
ICAgICAgIGFzc2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVkJyk7Ci0gICAgICAg
IH0sIChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNlWydz
dGF0dXMnXSwgJ0ludmFsaWRUYXNrJyk7CisgICAgICAgIH0sIChlcnJvcikgPT4geworICAgICAg
ICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnSW52YWxpZFRhc2snKTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CiAKICAgICBpdCgnc2hvdWxkIHJldHVybiAiSW52YWxpZENvbW1pdFNldHMiIHdoZW4g
Y29tbWl0IHNldHMgYXJlIG5vdCBzcGVjaWZpZWQnLCAoKSA9PiB7CiAgICAgICAgIHJldHVybiBQ
cml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVz
dCcsIHRhc2s6IDEsIHJlcGV0aXRpb25Db3VudDogMX0pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAg
ICAgICAgICAgIGFzc2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVkJyk7Ci0gICAg
ICAgIH0sIChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ0ludmFsaWRDb21taXRTZXRzJyk7CisgICAgICAgIH0sIChlcnJvcikgPT4g
eworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnSW52YWxpZENvbW1pdFNldHMnKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiAKICAgICBpdCgnc2hvdWxkIHJldHVybiAiSW52YWxpZENv
bW1pdFNldHMiIHdoZW4gY29tbWl0IHNldHMgaXMgZW1wdHknLCAoKSA9PiB7CiAgICAgICAgIHJl
dHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1l
OiAndGVzdCcsIHRhc2s6IDEsIHJlcGV0aXRpb25Db3VudDogMSwgY29tbWl0U2V0czoge319KS50
aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2
ZXIgYmUgcmVhY2hlZCcpOwotICAgICAgICB9LCAocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAg
IGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkQ29tbWl0U2V0cycpOwor
ICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwg
J0ludmFsaWRDb21taXRTZXRzJyk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgaXQoJ3No
b3VsZCByZXR1cm4gIkludmFsaWRUYXNrIiB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHRhc2sn
LCAoKSA9PiB7CiAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVh
dGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IDEsIHJlcGV0aXRpb25Db3VudDog
MSwgY29tbWl0U2V0czogeydXZWJLaXQnOiBbXX19KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAg
ICAgICAgICBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwotICAgICAg
ICB9LCAocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsn
c3RhdHVzJ10sICdJbnZhbGlkVGFzaycpOworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAgICAg
ICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwgJ0ludmFsaWRUYXNrJyk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogCiAgICAgaXQoJ3Nob3VsZCByZXR1cm4gIkludmFsaWRSZXBldGl0aW9uQ291bnQi
IHdoZW4gcmVwZXRpdGlvbkNvdW50IGlzIG5vdCBhIHZhbGlkIGludGVnZXInLCAoKSA9PiB7CiAg
ICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91
cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IDEsIHJlcGV0aXRpb25Db3VudDogJ2ZvbycsIGNvbW1p
dFNldHM6IHsnV2ViS2l0JzogW119fSkudGhlbigoY29udGVudCkgPT4gewogICAgICAgICAgICAg
YXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKLSAgICAgICAgfSwgKHJl
c3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cydd
LCAnSW52YWxpZFJlcGV0aXRpb25Db3VudCcpOworICAgICAgICB9LCAoZXJyb3IpID0+IHsKKyAg
ICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwgJ0ludmFsaWRSZXBldGl0aW9uQ291bnQnKTsK
ICAgICAgICAgfSk7CiAgICAgfSk7CiAKICAgICBpdCgnc2hvdWxkIHJldHVybiAiSW52YWxpZFJl
cGV0aXRpb25Db3VudCIgd2hlbiByZXBldGl0aW9uQ291bnQgaXMgYSBuZWdhdGl2ZSBpbnRlZ2Vy
JywgKCkgPT4gewogICAgICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3Jl
YXRlLXRlc3QtZ3JvdXAnLCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiAxLCByZXBldGl0aW9uQ291bnQ6
IC01LCBjb21taXRTZXRzOiB7J1dlYktpdCc6IFtdfX0pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAg
ICAgICAgICAgIGFzc2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVkJyk7Ci0gICAg
ICAgIH0sIChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ0ludmFsaWRSZXBldGl0aW9uQ291bnQnKTsKKyAgICAgICAgfSwgKGVycm9y
KSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdJbnZhbGlkUmVwZXRpdGlv
bkNvdW50Jyk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCiAgICAgaXQoJ3Nob3VsZCByZXR1cm4g
IkludmFsaWRUYXNrIiB3aGVuIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHRhc2snLCAoKSA9PiB7CiAg
ICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91
cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IDEsIGNvbW1pdFNldHM6IHsnV2ViS2l0JzogW119fSku
dGhlbigoY29udGVudCkgPT4gewogICAgICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5l
dmVyIGJlIHJlYWNoZWQnKTsKLSAgICAgICAgfSwgKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAg
ICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnSW52YWxpZFRhc2snKTsKKyAgICAg
ICAgfSwgKGVycm9yKSA9PiB7CisgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdJbnZh
bGlkVGFzaycpOwogICAgICAgICB9KTsKICAgICB9KTsKIApAQCAtMTg5LDggKzE4OSw4IEBAIGRl
c2NyaWJlKCcvcHJpdmlsZWdlZC1hcGkvY3JlYXRlLXRlc3QtZ3IKICAgICAgICAgcmV0dXJuIGNy
ZWF0ZUFuYWx5c2lzVGFzaygnc29tZSB0YXNrJykudGhlbigodGFza0lkKSA9PiB7CiAgICAgICAg
ICAgICByZXR1cm4gUHJpdmlsZWdlZEFQSS5zZW5kUmVxdWVzdCgnY3JlYXRlLXRlc3QtZ3JvdXAn
LCB7bmFtZTogJ3Rlc3QnLCB0YXNrOiB0YXNrSWQsIGNvbW1pdFNldHM6IHsnV2ViS2l0JzogW119
fSkudGhlbigoY29udGVudCkgPT4gewogICAgICAgICAgICAgICAgIGFzc2VydChmYWxzZSwgJ3No
b3VsZCBuZXZlciBiZSByZWFjaGVkJyk7Ci0gICAgICAgICAgICB9LCAocmVzcG9uc2UpID0+IHsK
LSAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwocmVzcG9uc2VbJ3N0YXR1cyddLCAnVHJpZ2dl
cmFibGVOb3RGb3VuZEZvclRhc2snKTsKKyAgICAgICAgICAgIH0sIChlcnJvcikgPT4geworICAg
ICAgICAgICAgICAgIGFzc2VydC5lcXVhbChlcnJvciwgJ1RyaWdnZXJhYmxlTm90Rm91bmRGb3JU
YXNrJyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0xOTksOCAr
MTk5LDggQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncgogICAgICAg
ICByZXR1cm4gYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVuKCh0
YXNrSWQpID0+IHsKICAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1ZXN0
KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgY29tbWl0
U2V0czogeydXZWJLaXQnOiBbXX19KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICAg
ICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKLSAgICAgICAgICAg
IH0sIChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25z
ZVsnc3RhdHVzJ10sICdJbnZhbGlkQ29tbWl0U2V0cycpOworICAgICAgICAgICAgfSwgKGVycm9y
KSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnSW52YWxpZENvbW1p
dFNldHMnKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTIwOSw4
ICsyMDksOCBAQCBkZXNjcmliZSgnL3ByaXZpbGVnZWQtYXBpL2NyZWF0ZS10ZXN0LWdyCiAgICAg
ICAgIHJldHVybiBhZGRUcmlnZ2VyYWJsZUFuZENyZWF0ZVRhc2soJ3NvbWUgdGFzaycpLnRoZW4o
KHRhc2tJZCkgPT4gewogICAgICAgICAgICAgcmV0dXJuIFByaXZpbGVnZWRBUEkuc2VuZFJlcXVl
c3QoJ2NyZWF0ZS10ZXN0LWdyb3VwJywge25hbWU6ICd0ZXN0JywgdGFzazogdGFza0lkLCBjb21t
aXRTZXRzOiB7J0Zvbyc6IFtdfX0pLnRoZW4oKGNvbnRlbnQpID0+IHsKICAgICAgICAgICAgICAg
ICBhc3NlcnQoZmFsc2UsICdzaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCcpOwotICAgICAgICAgICAg
fSwgKHJlc3BvbnNlKSA9PiB7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKHJlc3BvbnNl
WydzdGF0dXMnXSwgJ1JlcG9zaXRvcnlOb3RGb3VuZCcpOworICAgICAgICAgICAgfSwgKGVycm9y
KSA9PiB7CisgICAgICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnUmVwb3NpdG9yeU5v
dEZvdW5kJyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0yMTks
OCArMjE5LDggQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncgogICAg
ICAgICByZXR1cm4gYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50aGVu
KCh0YXNrSWQpID0+IHsKICAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRSZXF1
ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwgY29t
bWl0U2V0czogeydXZWJLaXQnOiBbJzEnXX19KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAg
ICAgICAgICAgYXNzZXJ0KGZhbHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKLSAgICAg
ICAgICAgIH0sIChyZXNwb25zZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChy
ZXNwb25zZVsnc3RhdHVzJ10sICdSZXZpc2lvbk5vdEZvdW5kJyk7CisgICAgICAgICAgICB9LCAo
ZXJyb3IpID0+IHsKKyAgICAgICAgICAgICAgICBhc3NlcnQuZXF1YWwoZXJyb3IsICdSZXZpc2lv
bk5vdEZvdW5kJyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0y
MjksOCArMjI5LDggQEAgZGVzY3JpYmUoJy9wcml2aWxlZ2VkLWFwaS9jcmVhdGUtdGVzdC1ncgog
ICAgICAgICByZXR1cm4gYWRkVHJpZ2dlcmFibGVBbmRDcmVhdGVUYXNrKCdzb21lIHRhc2snKS50
aGVuKCh0YXNrSWQpID0+IHsKICAgICAgICAgICAgIHJldHVybiBQcml2aWxlZ2VkQVBJLnNlbmRS
ZXF1ZXN0KCdjcmVhdGUtdGVzdC1ncm91cCcsIHtuYW1lOiAndGVzdCcsIHRhc2s6IHRhc2tJZCwg
Y29tbWl0U2V0czogeydXZWJLaXQnOiBbJzE5MTYyMicsICcxOTE2MjMnXSwgJ21hY09TJzogWycx
NUEyODQnXX19KS50aGVuKChjb250ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KGZh
bHNlLCAnc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQnKTsKLSAgICAgICAgICAgIH0sIChyZXNwb25z
ZSkgPT4gewotICAgICAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10s
ICdJbnZhbGlkQ29tbWl0U2V0cycpOworICAgICAgICAgICAgfSwgKGVycm9yKSA9PiB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnSW52YWxpZENvbW1pdFNldHMnKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICB9KTsKSW5kZXg6IFdlYnNpdGVzL3BlcmYu
d2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBhdGUtcnVuLXN0YXR1cy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvc2VydmVyLXRlc3RzL3By
aXZpbGVnZWQtYXBpLXVwYXRlLXJ1bi1zdGF0dXMuanMJKHJldmlzaW9uIDIxNDAwNSkKKysrIFdl
YnNpdGVzL3BlcmYud2Via2l0Lm9yZy9zZXJ2ZXItdGVzdHMvcHJpdmlsZWdlZC1hcGktdXBhdGUt
cnVuLXN0YXR1cy5qcwkod29ya2luZyBjb3B5KQpAQCAtNzUsOSArNzUsOSBAQCBkZXNjcmliZSgi
L3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS1ydW4tc3RhCiAgICAgICAgICAgICBSZW1vdGVBUEkuY2xl
YXJDb29raWVzKCk7CiAgICAgICAgICAgICByZXR1cm4gUmVtb3RlQVBJLnBvc3RKU09OV2l0aFN0
YXR1cygnL3ByaXZpbGVnZWQtYXBpL3VwZGF0ZS1ydW4tc3RhdHVzJywge3Rva2VuOiBQcml2aWxl
Z2VkQVBJLl90b2tlbn0pOwogICAgICAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAgICAgIGFz
c2VydChmYWxzZSwgJ1ByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qgc2hvdWxkIHJlamVjdCcpOwot
ICAgICAgICB9LCAocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgIGFzc2VydC5lcXVhbChyZXNw
b25zZVsnc3RhdHVzJ10sICdJbnZhbGlkVG9rZW4nKTsKKyAgICAgICAgICAgIGFzc2VydChmYWxz
ZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVkJyk7CisgICAgICAgIH0sIChlcnJvcikgPT4gewor
ICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnSW52YWxpZFRva2VuJyk7CiAgICAgICAg
IH0pOwogICAgIH0pOwogCkBAIC05NCw5ICs5NCw5IEBAIGRlc2NyaWJlKCIvcHJpdmlsZWdlZC1h
cGkvdXBkYXRlLXJ1bi1zdGEKICAgICAgICAgfSkudGhlbigoKSA9PiB7CiAgICAgICAgICAgICBy
ZXR1cm4gUmVtb3RlQVBJLnBvc3RKU09OV2l0aFN0YXR1cygnL3ByaXZpbGVnZWQtYXBpL3VwZGF0
ZS1ydW4tc3RhdHVzJywge3Rva2VuOiAnYmFkJ30pOwogICAgICAgICB9KS50aGVuKCgpID0+IHsK
LSAgICAgICAgICAgIGFzc2VydChmYWxzZSwgJ1ByaXZpbGVnZWRBUEkuc2VuZFJlcXVlc3Qgc2hv
dWxkIHJlamVjdCcpOwotICAgICAgICB9LCAocmVzcG9uc2UpID0+IHsKLSAgICAgICAgICAgIGFz
c2VydC5lcXVhbChyZXNwb25zZVsnc3RhdHVzJ10sICdJbnZhbGlkVG9rZW4nKTsKKyAgICAgICAg
ICAgIGFzc2VydChmYWxzZSwgJ3Nob3VsZCBuZXZlciBiZSByZWFjaGVkJyk7CisgICAgICAgIH0s
IChlcnJvcikgPT4geworICAgICAgICAgICAgYXNzZXJ0LmVxdWFsKGVycm9yLCAnSW52YWxpZFRv
a2VuJyk7CiAgICAgICAgIH0pOwogICAgIH0pOwogCkluZGV4OiBXZWJzaXRlcy9wZXJmLndlYmtp
dC5vcmcvdG9vbHMvanMvYnVpbGRib3QtdHJpZ2dlcmFibGUuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
c2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL2J1aWxkYm90LXRyaWdnZXJhYmxlLmpzCShy
ZXZpc2lvbiAyMTQwMDUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvYnVp
bGRib3QtdHJpZ2dlcmFibGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTY5LDE0ICs2OSwxMSBAQCBj
bGFzcyBCdWlsZGJvdFRyaWdnZXJhYmxlIHsKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wdWxs
QnVpbGRib3RPbkFsbFN5bmNlcnMoYnVpbGRSZXFldXN0c0J5R3JvdXApOwogICAgICAgICB9KS50
aGVuKGZ1bmN0aW9uICh1cGRhdGVzKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGEgbmV3
IEFQSSB0aGF0IGp1c3QgdXBkYXRlcyB0aGUgcmVxdWVzdHMuCi0gICAgICAgICAgICByZXR1cm4g
c2VsZi5fcmVtb3RlLnBvc3RKU09OKGAvYXBpL2J1aWxkLXJlcXVlc3RzLyR7c2VsZi5fbmFtZX1g
LCB7CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVtb3RlLnBvc3RKU09OV2l0aFN0YXR1cyhg
L2FwaS9idWlsZC1yZXF1ZXN0cy8ke3NlbGYuX25hbWV9YCwgewogICAgICAgICAgICAgICAgICdz
bGF2ZU5hbWUnOiBzZWxmLl9zbGF2ZUluZm8ubmFtZSwKICAgICAgICAgICAgICAgICAnc2xhdmVQ
YXNzd29yZCc6IHNlbGYuX3NsYXZlSW5mby5wYXNzd29yZCwKICAgICAgICAgICAgICAgICAnYnVp
bGRSZXF1ZXN0VXBkYXRlcyc6IHVwZGF0ZXN9KTsKLSAgICAgICAgfSkudGhlbihmdW5jdGlvbiAo
cmVzcG9uc2UpIHsKLSAgICAgICAgICAgIGlmIChyZXNwb25zZVsnc3RhdHVzJ10gIT0gJ09LJykK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIubG9nKCdGYWlsZWQgdG8gdXBkYXRlIHRoZSBi
dWlsZCByZXF1ZXN0cyBzdGF0dXM6ICcgKyByZXNwb25zZVsnc3RhdHVzJ10pOwotICAgICAgICB9
KQorICAgICAgICB9KTsKICAgICB9CiAKICAgICBfdmFsaWRhdGVSZXF1ZXN0cyhidWlsZFJlcXVl
c3RzKQpJbmRleDogV2Vic2l0ZXMvcGVyZi53ZWJraXQub3JnL3Rvb2xzL2pzL3JlbW90ZS5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMvcmVtb3RlLmpz
CShyZXZpc2lvbiAyMTQwMDUpCisrKyBXZWJzaXRlcy9wZXJmLndlYmtpdC5vcmcvdG9vbHMvanMv
cmVtb3RlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC00LDEwICs0LDEyIEBAIGxldCBhc3NlcnQgPSBy
ZXF1aXJlKCdhc3NlcnQnKTsKIGxldCBodHRwID0gcmVxdWlyZSgnaHR0cCcpOwogbGV0IGh0dHBz
ID0gcmVxdWlyZSgnaHR0cHMnKTsKIGxldCBxdWVyeXN0cmluZyA9IHJlcXVpcmUoJ3F1ZXJ5c3Ry
aW5nJyk7CitsZXQgQ29tbW9uUmVtb3RlQVBJID0gcmVxdWlyZSgnLi4vLi4vcHVibGljL3NoYXJl
ZC9jb21tb24tcmVtb3RlLmpzJykuQ29tbW9uUmVtb3RlQVBJOwogCi1jbGFzcyBSZW1vdGVBUEkg
eworY2xhc3MgTm9kZVJlbW90ZUFQSSBleHRlbmRzIENvbW1vblJlbW90ZUFQSSB7CiAgICAgY29u
c3RydWN0b3Ioc2VydmVyKQogICAgIHsKKyAgICAgICAgc3VwZXIoKTsKICAgICAgICAgdGhpcy5f
c2VydmVyID0gbnVsbDsKICAgICAgICAgdGhpcy5fY29va2llcyA9IG5ldyBNYXA7CiAgICAgICAg
IGlmIChzZXJ2ZXIpCkBAIC01Myw1MCArNTUsNiBAQCBjbGFzcyBSZW1vdGVBUEkgewogCiAgICAg
Y2xlYXJDb29raWVzKCkgeyB0aGlzLl9jb29raWVzID0gbmV3IE1hcDsgfQogCi0gICAgZ2V0SlNP
TihwYXRoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuc2VuZEh0dHBSZXF1ZXN0KHBhdGgs
ICdHRVQnLCBudWxsLCBudWxsKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHsKLSAgICAgICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UocmVzdWx0LnJlc3BvbnNl
VGV4dCk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICAgICAgICAgIGNv
bnNvbGUuZXJyb3IocmVzdWx0LnJlc3BvbnNlVGV4dCk7Ci0gICAgICAgICAgICAgICAgdGhyb3cg
ZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIGdldEpTT05X
aXRoU3RhdHVzKHBhdGgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5nZXRKU09OKHBhdGgp
LnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgaWYgKHJlc3VsdFsnc3RhdHVz
J10gIT0gJ09LJykKLSAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QocmVzdWx0
KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAg
IHBvc3RKU09OKHBhdGgsIGRhdGEpCi0gICAgewotICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9
ICdhcHBsaWNhdGlvbi9qc29uJzsKLSAgICAgICAgY29uc3QgcGF5bG9hZCA9IEpTT04uc3RyaW5n
aWZ5KGRhdGEgfHwge30pOwotICAgICAgICByZXR1cm4gdGhpcy5zZW5kSHR0cFJlcXVlc3QocGF0
aCwgJ1BPU1QnLCAnYXBwbGljYXRpb24vanNvbicsIHBheWxvYWQpLnRoZW4oZnVuY3Rpb24gKHJl
c3VsdCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5w
YXJzZShyZXN1bHQucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7
Ci0gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXN1bHQucmVzcG9uc2VUZXh0KTsKLSAg
ICAgICAgICAgICAgICB0aHJvdyBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0g
ICAgfQotCi0gICAgcG9zdEpTT05XaXRoU3RhdHVzKHBhdGgsIGRhdGEpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5wb3N0SlNPTihwYXRoLCBkYXRhKS50aGVuKGZ1bmN0aW9uIChyZXN1bHQp
IHsKLSAgICAgICAgICAgIGlmIChyZXN1bHRbJ3N0YXR1cyddICE9ICdPSycpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgICAgICB9KTsKLSAgICB9Ci0KICAgICBwb3N0Rm9ybVVybGVuY29kZWREYXRh
KHBhdGgsIGRhdGEpCiAgICAgewogICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9ICdhcHBsaWNh
dGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOwpAQCAtMTA5LDggKzY3LDcgQEAgY2xhc3MgUmVt
b3RlQVBJIHsKICAgICBzZW5kSHR0cFJlcXVlc3QocGF0aCwgbWV0aG9kLCBjb250ZW50VHlwZSwg
Y29udGVudCkKICAgICB7CiAgICAgICAgIGxldCBzZXJ2ZXIgPSB0aGlzLl9zZXJ2ZXI7Ci0gICAg
ICAgIGNvbnN0IHNlbGYgPSB0aGlzOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rp
b24gKHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29s
dmUsIHJlamVjdCkgPT4gewogICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSB7CiAgICAgICAgICAg
ICAgICAgaG9zdG5hbWU6IHNlcnZlci5ob3N0LAogICAgICAgICAgICAgICAgIHBvcnQ6IHNlcnZl
ci5wb3J0LApAQCAtMTE5LDIwICs3NiwxOCBAQCBjbGFzcyBSZW1vdGVBUEkgewogICAgICAgICAg
ICAgICAgIHBhdGg6IHBhdGgsCiAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICBsZXQgcmVx
dWVzdCA9IChzZXJ2ZXIuc2NoZW1lID09ICdodHRwJyA/IGh0dHAgOiBodHRwcykucmVxdWVzdChv
cHRpb25zLCBmdW5jdGlvbiAocmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGxldCByZXF1ZXN0ID0g
KHNlcnZlci5zY2hlbWUgPT0gJ2h0dHAnID8gaHR0cCA6IGh0dHBzKS5yZXF1ZXN0KG9wdGlvbnMs
IChyZXNwb25zZSkgPT4gewogICAgICAgICAgICAgICAgIGxldCByZXNwb25zZVRleHQgPSAnJzsK
ICAgICAgICAgICAgICAgICByZXNwb25zZS5zZXRFbmNvZGluZygndXRmOCcpOwotICAgICAgICAg
ICAgICAgIHJlc3BvbnNlLm9uKCdkYXRhJywgZnVuY3Rpb24gKGNodW5rKSB7IHJlc3BvbnNlVGV4
dCArPSBjaHVuazsgfSk7Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2Uub24oJ2VuZCcsIGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1c0NvZGUgIT0g
MjAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QocmVzcG9uc2Uuc3RhdHVzQ29k
ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICByZXNwb25zZS5vbignZGF0YScsIChjaHVuaykgPT4geyByZXNw
b25zZVRleHQgKz0gY2h1bms7IH0pOworICAgICAgICAgICAgICAgIHJlc3BvbnNlLm9uKCdlbmQn
LCAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlICE9
IDIwMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QocmVzcG9uc2Uuc3Rh
dHVzQ29kZSk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCdzZXQtY29va2llJyBpbiByZXNw
b25zZS5oZWFkZXJzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvb2tp
ZSBvZiByZXNwb25zZS5oZWFkZXJzWydzZXQtY29va2llJ10pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgbmFtZVZhbHVlID0gY29va2llLnNwbGl0KCc9JykKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9jb29raWVzLnNldChuYW1lVmFsdWVbMF0sIG5hbWVWYWx1
ZVsxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBjb29raWUgb2YgcmVzcG9u
c2UuaGVhZGVyc1snc2V0LWNvb2tpZSddKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgbmFtZVZhbHVlID0gY29va2llLnNwbGl0KCc9Jyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhpcy5fY29va2llcy5zZXQobmFtZVZhbHVlWzBdLCBuYW1lVmFsdWVbMV0pOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIHJlc29sdmUoe3N0YXR1c0NvZGU6IHJlc3BvbnNlLnN0YXR1c0NvZGUsIHJl
c3BvbnNlVGV4dDogcmVzcG9uc2VUZXh0fSk7CkBAIC0xNDQsMTEgKzk5LDggQEAgY2xhc3MgUmVt
b3RlQVBJIHsKICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZSkKICAgICAgICAgICAgICAgICBy
ZXF1ZXN0LnNldEhlYWRlcignQ29udGVudC1UeXBlJywgY29udGVudFR5cGUpOwogCi0gICAgICAg
ICAgICBpZiAoc2VsZi5fY29va2llcy5zaXplKSB7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC5z
ZXRIZWFkZXIoJ0Nvb2tpZScsIEFycmF5LmZyb20oc2VsZi5fY29va2llcy5rZXlzKCkpLm1hcChm
dW5jdGlvbiAoa2V5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtrZXl9PSR7c2Vs
Zi5fY29va2llcy5nZXQoa2V5KX1gOwotICAgICAgICAgICAgICAgIH0pLmpvaW4oJzsgJykpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRoaXMuX2Nvb2tpZXMuc2l6ZSkKKyAgICAg
ICAgICAgICAgICByZXF1ZXN0LnNldEhlYWRlcignQ29va2llJywgQXJyYXkuZnJvbSh0aGlzLl9j
b29raWVzLmtleXMoKSkubWFwKChrZXkpID0+IGAke2tleX09JHt0aGlzLl9jb29raWVzLmdldChr
ZXkpfWApLmpvaW4oJzsgJykpOwogCiAgICAgICAgICAgICBpZiAoY29udGVudCkKICAgICAgICAg
ICAgICAgICByZXF1ZXN0LndyaXRlKGNvbnRlbnQpOwpAQCAtMTU5LDQgKzExMSw0IEBAIGNsYXNz
IFJlbW90ZUFQSSB7CiB9OwogCiBpZiAodHlwZW9mIG1vZHVsZSAhPSAndW5kZWZpbmVkJykKLSAg
ICBtb2R1bGUuZXhwb3J0cy5SZW1vdGVBUEkgPSBSZW1vdGVBUEk7CisgICAgbW9kdWxlLmV4cG9y
dHMuUmVtb3RlQVBJID0gTm9kZVJlbW90ZUFQSTsK
</data>
<flag name="review"
          id="326065"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>