<?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>86357</bug_id>
          
          <creation_ts>2012-05-14 04:37:40 -0700</creation_ts>
          <short_desc>Web Inspector: Request / response headers should be stored in name-value pairs array, not a map on front-end.</short_desc>
          <delta_ts>2012-05-14 08:43:21 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>622829</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-05-14 04:37:40 -0700</bug_when>
    <thetext>Storing headers as name-value pairs array information more accurate and allows to treat Set-Cookie headers (which become not parseable when joined by comma) correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622841</commentid>
    <comment_count>1</comment_count>
      <attachid>141695</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-05-14 04:53:31 -0700</bug_when>
    <thetext>Created attachment 141695
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622859</commentid>
    <comment_count>2</comment_count>
      <attachid>141695</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-05-14 05:15:11 -0700</bug_when>
    <thetext>Comment on attachment 141695
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=141695&amp;action=review

&gt; Source/WebCore/inspector/front-end/HAREntry.js:75
&gt; +            headers: this._request.requestHeaders.slice(),

I think slice() is redundant here, we do not modify HAR headers anywhere.

&gt; Source/WebCore/inspector/front-end/HAREntry.js:96
&gt; +            headers: this._request.responseHeaders.slice(),

ditto

&gt; Source/WebCore/inspector/front-end/NetworkManager.js:164
&gt; +                if (values[i])

Why this check? What do we do about headers with empty value?

&gt; Source/WebCore/inspector/front-end/NetworkRequest.js:456
&gt; +        this._sortedRequestHeaders.sort(function(a,b) { return a.name.localeCompare(b.name) });

Shouldn&apos;t we sort according to a case-insensitive comparator()?

&gt; Source/WebCore/inspector/front-end/NetworkRequest.js:558
&gt; +        this._sortedResponseHeaders.sort(function(a,b) { return a.name.localeCompare(b.name) });

Ditto.

&gt; Source/WebCore/inspector/front-end/NetworkRequest.js:653
&gt; +        for (var i = 0; i &lt; headers.length; ++i) {
&gt; +            if (headers[i].name.toLowerCase() === headerName)

I wonder if it makes sense to binary-search over sorted headers?

&gt; Source/WebCore/inspector/front-end/NetworkRequest.js:657
&gt; +        if (headerName.toLowerCase() === &quot;Set-Cookie&quot;.toLowerCase())

/^set-cookie$/i.test()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622896</commentid>
    <comment_count>3</comment_count>
      <attachid>141708</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-05-14 06:12:43 -0700</bug_when>
    <thetext>Created attachment 141708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622900</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-05-14 06:16:27 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 141695 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=141695&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/HAREntry.js:75
&gt; &gt; +            headers: this._request.requestHeaders.slice(),
&gt; 
&gt; I think slice() is redundant here, we do not modify HAR headers anywhere.
Done.

&gt; &gt; Source/WebCore/inspector/front-end/NetworkManager.js:164
&gt; &gt; +                if (values[i])
&gt; 
&gt; Why this check? What do we do about headers with empty value?
Removed this check.

&gt; &gt; Source/WebCore/inspector/front-end/NetworkRequest.js:456
&gt; &gt; +        this._sortedRequestHeaders.sort(function(a,b) { return a.name.localeCompare(b.name) });
&gt; 
&gt; Shouldn&apos;t we sort according to a case-insensitive comparator()?
Done.

&gt; &gt; Source/WebCore/inspector/front-end/NetworkRequest.js:653
&gt; &gt; +        for (var i = 0; i &lt; headers.length; ++i) {
&gt; &gt; +            if (headers[i].name.toLowerCase() === headerName)
&gt; 
&gt; I wonder if it makes sense to binary-search over sorted headers?
I don&apos;t think it worth cluttering the code (the number of headers is usually about 10-15 and we will need two loops for multiple results binary search).

&gt; &gt; Source/WebCore/inspector/front-end/NetworkRequest.js:657
&gt; &gt; +        if (headerName.toLowerCase() === &quot;Set-Cookie&quot;.toLowerCase())
&gt; 
&gt; /^set-cookie$/i.test()?
headerName is already lower case, so I made it just (headerName === &quot;set-cookie&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622933</commentid>
    <comment_count>5</comment_count>
      <attachid>141708</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-05-14 06:56:34 -0700</bug_when>
    <thetext>Comment on attachment 141708
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623018</commentid>
    <comment_count>6</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-05-14 08:43:21 -0700</bug_when>
    <thetext>Committed r116952: &lt;http://trac.webkit.org/changeset/116952&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141695</attachid>
            <date>2012-05-14 04:53:31 -0700</date>
            <delta_ts>2012-05-14 06:12:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86357-20120514155329.patch</filename>
            <type>text/plain</type>
            <size>21968</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRmM2ZlMzI0OGZkNWU2
MTYxNDdlZWVlMWNiZTRkYzI4YmRiOTYyMy4uNzUwODc1ZTFmMzEzNzNlNzA0ZDNjMTA5MjczMDcw
NGI0Y2MzYjViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA1LTE0ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlcXVlc3QgLyByZXNwb25zZSBoZWFkZXJzIHNob3VsZCBiZSBzdG9yZWQgaW4gbmFtZS12
YWx1ZSBwYWlycyBhcnJheSwgbm90IGEgbWFwIG9uIGZyb250LWVuZC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MzU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmluZyBoZWFkZXJzIGFzIG5hbWUt
dmFsdWUgcGFpcnMgYXJyYXkgaW5mb3JtYXRpb24gbW9yZSBhY2N1cmF0ZSBhbmQgYWxsb3dzCisg
ICAgICAgIHRvIHRyZWF0IFNldC1Db29raWUgaGVhZGVycyAod2hpY2ggYmVjb21lIG5vdCBwYXJz
ZWFibGUgd2hlbiBqb2luZWQgYnkgY29tbWEpIGNvcnJlY3RseS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRp
dFJ1bGVzLkd6aXBSdWxlLnByb3RvdHlwZS5faXNDb21wcmVzc2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUucHJvdG90eXBlLnJlc3BvbnNlSGVh
ZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUu
cHJvdG90eXBlLmhhc1Jlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRp
dFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUucHJvdG90eXBlLnJlc3BvbnNlSGVhZGVyTWF0Y2gpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSEFSRW50cnkucHJvdG90eXBlLl9idWlsZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhBUkVudHJ5LnByb3RvdHlwZS5fYnVpbGRSZXNwb25zZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUuX2hlYWRlcnNNYXBUb0hlYWRlcnNBcnJh
eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlLl91
cGRhdGVOZXR3b3JrUmVxdWVzdFdpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUuX3VwZGF0ZU5ldHdvcmtSZXF1ZXN0V2l0aFJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUu
d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUud2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUmVxdWVzdC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuZ2V0IHRy
YW5zZmVyU2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90
eXBlLmdldCByZXF1ZXN0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Jl
cXVlc3QucHJvdG90eXBlLmdldCByZXF1ZXN0SGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgcmVzcG9uc2VIZWFkZXJzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuZ2V0IHJlc3BvbnNl
SGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3Rv
dHlwZS5faGVhZGVyVmFsdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVz
dEhlYWRlcnNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcXVlc3RIZWFkZXJzVmll
dy5wcm90b3R5cGUuX3JlZnJlc2hSZXF1ZXN0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVxdWVzdEhlYWRlcnNWaWV3LnByb3RvdHlwZS5fcmVmcmVzaFJlc3BvbnNlSGVhZGVycyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVxdWVzdEhlYWRlcnNWaWV3LnByb3RvdHlwZS5fcmVm
cmVzaEhlYWRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRU
UExvYWRJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YWRkSGVhZGVyKToKKwogMjAxMi0wNS0x
NCAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUgbWFya2VkIE9WRVJSSURFIGJ1dCBkb2VzIG5vdCBvdmVy
cmlkZSBhbnkgbWVtYmVyIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCmluZGV4IGU5M2ZiYmU4NzA0M2YzMDlhNWM2OTI3MWMw
NmFiNDhhYzg3OTdhMDIuLmE2NDU5YjIwODEwMWM3YzhhMzFjY2Y4NDZiOTRmMjI2MGEyY2MwMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxl
cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMu
anMKQEAgLTEwNyw3ICsxMDcsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5HemlwUnVsZS5w
cm90b3R5cGUgPSB7CiAKICAgICBfaXNDb21wcmVzc2VkOiBmdW5jdGlvbihyZXF1ZXN0KQogICAg
IHsKLSAgICAgICAgdmFyIGVuY29kaW5nSGVhZGVyID0gcmVxdWVzdC5yZXNwb25zZUhlYWRlcnNb
IkNvbnRlbnQtRW5jb2RpbmciXTsKKyAgICAgICAgdmFyIGVuY29kaW5nSGVhZGVyID0gcmVxdWVz
dC5yZXNwb25zZUhlYWRlclZhbHVlKCJDb250ZW50LUVuY29kaW5nIik7CiAgICAgICAgIGlmICgh
ZW5jb2RpbmdIZWFkZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUxNywxMiAr
NTE3LDEyIEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUucHJvdG90
eXBlID0gewogCiAgICAgcmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKHJlcXVlc3QsIGhlYWRlcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiByZXF1ZXN0LnJlc3BvbnNlSGVhZGVyc1toZWFkZXJdOwor
ICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZUhlYWRlclZhbHVlKGhlYWRlcik7CiAgICAg
fSwKIAogICAgIGhhc1Jlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbihyZXF1ZXN0LCBoZWFkZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZUhlYWRlcnNbaGVhZGVyXSAhPT0g
dW5kZWZpbmVkOworICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZUhlYWRlclZhbHVlKGhl
YWRlcikgIT09IHVuZGVmaW5lZDsKICAgICB9LAogCiAgICAgaXNDb21wcmVzc2libGU6IGZ1bmN0
aW9uKHJlcXVlc3QpCkBAIC01NDMsOCArNTQzLDggQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMu
Q2FjaGVDb250cm9sUnVsZS5wcm90b3R5cGUgPSB7CiAKICAgICByZXNwb25zZUhlYWRlck1hdGNo
OiBmdW5jdGlvbihyZXF1ZXN0LCBoZWFkZXIsIHJlZ2V4cCkKICAgICB7Ci0gICAgICAgIHJldHVy
biByZXF1ZXN0LnJlc3BvbnNlSGVhZGVyc1toZWFkZXJdCi0gICAgICAgICAgICA/IHJlcXVlc3Qu
cmVzcG9uc2VIZWFkZXJzW2hlYWRlcl0ubWF0Y2gobmV3IFJlZ0V4cChyZWdleHAsICJpbSIpKQor
ICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZUhlYWRlclZhbHVlKGhlYWRlcikKKyAgICAg
ICAgICAgID8gcmVxdWVzdC5yZXNwb25zZUhlYWRlclZhbHVlKGhlYWRlcikubWF0Y2gobmV3IFJl
Z0V4cChyZWdleHAsICJpbSIpKQogICAgICAgICAgICAgOiB1bmRlZmluZWQ7CiAgICAgfSwKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMKaW5kZXgg
ZjU0MWIyM2E1MWYxM2JlYTg0NWI0MGI4YmVkM2Y5ODM2NGI4ZDAwMy4uZmY3NTgzMzEzZmZjOTBh
NjE3ZTFjODhkY2Y0N2JiNDhiZjE0NjMyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzCkBAIC03Miw3ICs3Miw3IEBAIFdlYkluc3BlY3Rvci5I
QVJFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBtZXRob2Q6IHRoaXMuX3JlcXVlc3Qu
cmVxdWVzdE1ldGhvZCwKICAgICAgICAgICAgIHVybDogdGhpcy5fYnVpbGRSZXF1ZXN0VVJMKHRo
aXMuX3JlcXVlc3QudXJsKSwKICAgICAgICAgICAgIGh0dHBWZXJzaW9uOiB0aGlzLl9yZXF1ZXN0
LnJlcXVlc3RIdHRwVmVyc2lvbiwKLSAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuX2J1aWxkSGVh
ZGVycyh0aGlzLl9yZXF1ZXN0LnJlcXVlc3RIZWFkZXJzKSwKKyAgICAgICAgICAgIGhlYWRlcnM6
IHRoaXMuX3JlcXVlc3QucmVxdWVzdEhlYWRlcnMuc2xpY2UoKSwKICAgICAgICAgICAgIHF1ZXJ5
U3RyaW5nOiB0aGlzLl9idWlsZFBhcmFtZXRlcnModGhpcy5fcmVxdWVzdC5xdWVyeVBhcmFtZXRl
cnMgfHwgW10pLAogICAgICAgICAgICAgY29va2llczogdGhpcy5fYnVpbGRDb29raWVzKHRoaXMu
X3JlcXVlc3QucmVxdWVzdENvb2tpZXMgfHwgW10pLAogICAgICAgICAgICAgaGVhZGVyc1NpemU6
IHRoaXMuX3JlcXVlc3QucmVxdWVzdEhlYWRlcnNTaXplLApAQCAtOTMsNyArOTMsNyBAQCBXZWJJ
bnNwZWN0b3IuSEFSRW50cnkucHJvdG90eXBlID0gewogICAgICAgICAgICAgc3RhdHVzOiB0aGlz
Ll9yZXF1ZXN0LnN0YXR1c0NvZGUsCiAgICAgICAgICAgICBzdGF0dXNUZXh0OiB0aGlzLl9yZXF1
ZXN0LnN0YXR1c1RleHQsCiAgICAgICAgICAgICBodHRwVmVyc2lvbjogdGhpcy5fcmVxdWVzdC5y
ZXNwb25zZUh0dHBWZXJzaW9uLAotICAgICAgICAgICAgaGVhZGVyczogdGhpcy5fYnVpbGRIZWFk
ZXJzKHRoaXMuX3JlcXVlc3QucmVzcG9uc2VIZWFkZXJzKSwKKyAgICAgICAgICAgIGhlYWRlcnM6
IHRoaXMuX3JlcXVlc3QucmVzcG9uc2VIZWFkZXJzLnNsaWNlKCksCiAgICAgICAgICAgICBjb29r
aWVzOiB0aGlzLl9idWlsZENvb2tpZXModGhpcy5fcmVxdWVzdC5yZXNwb25zZUNvb2tpZXMgfHwg
W10pLAogICAgICAgICAgICAgY29udGVudDogdGhpcy5fYnVpbGRDb250ZW50KCksCiAgICAgICAg
ICAgICByZWRpcmVjdFVSTDogdGhpcy5fcmVxdWVzdC5yZXNwb25zZUhlYWRlclZhbHVlKCJMb2Nh
dGlvbiIpIHx8ICIiLApAQCAtMTU3LDE3ICsxNTcsNiBAQCBXZWJJbnNwZWN0b3IuSEFSRW50cnku
cHJvdG90eXBlID0gewogICAgIC8qKgogICAgICAqIEByZXR1cm4ge09iamVjdH0KICAgICAgKi8K
LSAgICBfYnVpbGRIZWFkZXJzOiBmdW5jdGlvbihoZWFkZXJzKQotICAgIHsKLSAgICAgICAgdmFy
IHJlc3VsdCA9IFtdOwotICAgICAgICBmb3IgKHZhciBuYW1lIGluIGhlYWRlcnMpCi0gICAgICAg
ICAgICByZXN1bHQucHVzaCh7IG5hbWU6IG5hbWUsIHZhbHVlOiBoZWFkZXJzW25hbWVdIH0pOwot
ICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJu
IHtPYmplY3R9Ci0gICAgICovCiAgICAgX2J1aWxkUG9zdERhdGE6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHZhciByZXMgPSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL05ldHdvcmtNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwppbmRleCA0YzM5MTVmMTIyYzk1NmRhY2U2OGFl
MGIyYTlkMWEyNmRiNmNlNTJiLi45YjY5ZjYzZWE4MjUyMWRkNTc5MjM4MTAwMWFjNzcyNDRjYmU0
MjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya01hbmFnZXIuanMKQEAgLTE1MiwxMyArMTUyLDMwIEBAIFdlYkluc3BlY3Rvci5OZXR3b3Jr
RGlzcGF0Y2hlciA9IGZ1bmN0aW9uKG1hbmFnZXIpCiAKIFdlYkluc3BlY3Rvci5OZXR3b3JrRGlz
cGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCisgICAgICogQHBhcmFtIHtOZXR3b3JrQWdl
bnQuSGVhZGVyc30gaGVhZGVyc01hcAorICAgICAqIEByZXR1cm4ge0FycmF5LjxPYmplY3Q+fQor
ICAgICAqLworICAgIF9oZWFkZXJzTWFwVG9IZWFkZXJzQXJyYXk6IGZ1bmN0aW9uKGhlYWRlcnNN
YXApCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgIGZvciAodmFyIG5h
bWUgaW4gaGVhZGVyc01hcCkgeworICAgICAgICAgICAgdmFyIHZhbHVlcyA9IGhlYWRlcnNNYXBb
bmFtZV0uc3BsaXQoIlxuIik7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVl
cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0pCisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlc1tpXSB9
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVz
dH0gbmV0d29ya1JlcXVlc3QKICAgICAgKiBAcGFyYW0ge05ldHdvcmtBZ2VudC5SZXF1ZXN0fSBy
ZXF1ZXN0CiAgICAgICovCiAgICAgX3VwZGF0ZU5ldHdvcmtSZXF1ZXN0V2l0aFJlcXVlc3Q6IGZ1
bmN0aW9uKG5ldHdvcmtSZXF1ZXN0LCByZXF1ZXN0KQogICAgIHsKICAgICAgICAgbmV0d29ya1Jl
cXVlc3QucmVxdWVzdE1ldGhvZCA9IHJlcXVlc3QubWV0aG9kOwotICAgICAgICBuZXR3b3JrUmVx
dWVzdC5yZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3QuaGVhZGVyczsKKyAgICAgICAgbmV0d29ya1Jl
cXVlc3QucmVxdWVzdEhlYWRlcnMgPSB0aGlzLl9oZWFkZXJzTWFwVG9IZWFkZXJzQXJyYXkocmVx
dWVzdC5oZWFkZXJzKTsKICAgICAgICAgbmV0d29ya1JlcXVlc3QucmVxdWVzdEZvcm1EYXRhID0g
cmVxdWVzdC5wb3N0RGF0YTsKICAgICB9LAogCkBAIC0xNzYsMTEgKzE5MywxMSBAQCBXZWJJbnNw
ZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAgICBuZXR3b3JrUmVx
dWVzdC5taW1lVHlwZSA9IHJlc3BvbnNlLm1pbWVUeXBlOwogICAgICAgICBuZXR3b3JrUmVxdWVz
dC5zdGF0dXNDb2RlID0gcmVzcG9uc2Uuc3RhdHVzOwogICAgICAgICBuZXR3b3JrUmVxdWVzdC5z
dGF0dXNUZXh0ID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDsKLSAgICAgICAgbmV0d29ya1JlcXVlc3Qu
cmVzcG9uc2VIZWFkZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKKyAgICAgICAgbmV0d29ya1JlcXVl
c3QucmVzcG9uc2VIZWFkZXJzID0gdGhpcy5faGVhZGVyc01hcFRvSGVhZGVyc0FycmF5KHJlc3Bv
bnNlLmhlYWRlcnMpOwogICAgICAgICBpZiAocmVzcG9uc2UuaGVhZGVyc1RleHQpCiAgICAgICAg
ICAgICBuZXR3b3JrUmVxdWVzdC5yZXNwb25zZUhlYWRlcnNUZXh0ID0gcmVzcG9uc2UuaGVhZGVy
c1RleHQ7CiAgICAgICAgIGlmIChyZXNwb25zZS5yZXF1ZXN0SGVhZGVycykKLSAgICAgICAgICAg
IG5ldHdvcmtSZXF1ZXN0LnJlcXVlc3RIZWFkZXJzID0gcmVzcG9uc2UucmVxdWVzdEhlYWRlcnM7
CisgICAgICAgICAgICBuZXR3b3JrUmVxdWVzdC5yZXF1ZXN0SGVhZGVycyA9IHRoaXMuX2hlYWRl
cnNNYXBUb0hlYWRlcnNBcnJheShyZXNwb25zZS5yZXF1ZXN0SGVhZGVycyk7CiAgICAgICAgIGlm
IChyZXNwb25zZS5yZXF1ZXN0SGVhZGVyc1RleHQpCiAgICAgICAgICAgICBuZXR3b3JrUmVxdWVz
dC5yZXF1ZXN0SGVhZGVyc1RleHQgPSByZXNwb25zZS5yZXF1ZXN0SGVhZGVyc1RleHQ7CiAKQEAg
LTQyNiw3ICs0NDMsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlcXVl
c3RNZXRob2QgPSAiR0VUIjsKLSAgICAgICAgbmV0d29ya1JlcXVlc3QucmVxdWVzdEhlYWRlcnMg
PSByZXF1ZXN0LmhlYWRlcnM7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlcXVlc3RIZWFkZXJz
ID0gdGhpcy5faGVhZGVyc01hcFRvSGVhZGVyc0FycmF5KHJlcXVlc3QuaGVhZGVycyk7CiAgICAg
ICAgIG5ldHdvcmtSZXF1ZXN0LndlYlNvY2tldFJlcXVlc3RLZXkzID0gcmVxdWVzdC5yZXF1ZXN0
S2V5MzsKICAgICAgICAgbmV0d29ya1JlcXVlc3Quc3RhcnRUaW1lID0gdGltZTsKIApAQCAtNDQ2
LDcgKzQ2Myw3IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgbmV0d29ya1JlcXVlc3Quc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1czsK
ICAgICAgICAgbmV0d29ya1JlcXVlc3Quc3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7
Ci0gICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlLmhlYWRl
cnM7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlc3BvbnNlSGVhZGVycyA9IHRoaXMuX2hlYWRl
cnNNYXBUb0hlYWRlcnNBcnJheShyZXNwb25zZS5oZWFkZXJzKTsKICAgICAgICAgbmV0d29ya1Jl
cXVlc3Qud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2UgPSByZXNwb25zZS5jaGFsbGVuZ2VSZXNw
b25zZTsKICAgICAgICAgbmV0d29ya1JlcXVlc3QucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB0aW1l
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtSZXF1ZXN0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3Jr
UmVxdWVzdC5qcwppbmRleCA1NzcwNTBmZDg5Yjc5ZDMwMmUwYTZkMGUwZDJlMjhjZGZjOTkyZTI4
Li5jZWJjOWFkZjJiOGQzZjM4MmFlMGZjMTBlN2ZjOTM4NDZhMjk2MTA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtSZXF1ZXN0LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1JlcXVlc3QuanMKQEAg
LTI0MCw3ICsyNDAsNyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlID0g
ewogICAgICAgICAvLyByZXNvdXJjZVNpemUgd2hlbiB3ZSBkb24ndCBoYXZlIENvbnRlbnQtTGVu
Z3RoLiBUaGlzIHN0aWxsIHdvbid0CiAgICAgICAgIC8vIHdvcmsgZm9yIGNodW5rcyB3aXRoIG5v
bi10cml2aWFsIGVuY29kaW5ncy4gV2UgbmVlZCBhIHdheSB0bwogICAgICAgICAvLyBnZXQgYWN0
dWFsIHRyYW5zZmVyIHNpemUgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KLSAgICAgICAgdmFyIGJv
ZHlTaXplID0gTnVtYmVyKHRoaXMucmVzcG9uc2VIZWFkZXJzWyJDb250ZW50LUxlbmd0aCJdIHx8
IHRoaXMucmVzb3VyY2VTaXplKTsKKyAgICAgICAgdmFyIGJvZHlTaXplID0gTnVtYmVyKHRoaXMu
cmVzcG9uc2VIZWFkZXJWYWx1ZSgiQ29udGVudC1MZW5ndGgiKSB8fCB0aGlzLnJlc291cmNlU2l6
ZSk7CiAgICAgICAgIHJldHVybiB0aGlzLnJlc3BvbnNlSGVhZGVyc1NpemUgKyBib2R5U2l6ZTsK
ICAgICB9LAogCkBAIC0zOTksMTEgKzM5OSwxMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVl
c3QucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtPYmpl
Y3R9CisgICAgICogQHJldHVybiB7QXJyYXkuPE9iamVjdD59CiAgICAgICovCiAgICAgZ2V0IHJl
cXVlc3RIZWFkZXJzKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0SGVhZGVy
cyB8fCB7fTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RIZWFkZXJzIHx8IFtdOwogICAg
IH0sCiAKICAgICBzZXQgcmVxdWVzdEhlYWRlcnMoeCkKQEAgLTQyMiw4ICs0MjIsOCBAQCBXZWJJ
bnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX3JlcXVlc3RIZWFkZXJzVGV4dCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICB0
aGlzLl9yZXF1ZXN0SGVhZGVyc1RleHQgPSB0aGlzLnJlcXVlc3RNZXRob2QgKyAiICIgKyB0aGlz
LnVybCArICIgSFRUUC8xLjFcclxuIjsKLSAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlz
LnJlcXVlc3RIZWFkZXJzKQotICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVGV4
dCArPSBrZXkgKyAiOiAiICsgdGhpcy5yZXF1ZXN0SGVhZGVyc1trZXldICsgIlxyXG4iOworICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJlcXVlc3RIZWFkZXJzOyArK2kpCisg
ICAgICAgICAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNUZXh0ICs9IHRoaXMucmVxdWVzdEhl
YWRlcnNbaV0ubmFtZSArICI6ICIgKyB0aGlzLnJlcXVlc3RIZWFkZXJzW2ldLnZhbHVlICsgIlxy
XG4iOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RleHQ7
CiAgICAgfSwKQEAgLTQ1MiwxMCArNDUyLDggQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVh
ZGVyczsKIAogICAgICAgICB0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVhZGVycyA9IFtdOwotICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gdGhpcy5yZXF1ZXN0SGVhZGVycykKLSAgICAgICAgICAgIHRoaXMu
X3NvcnRlZFJlcXVlc3RIZWFkZXJzLnB1c2goe2hlYWRlcjoga2V5LCB2YWx1ZTogdGhpcy5yZXF1
ZXN0SGVhZGVyc1trZXldfSk7Ci0gICAgICAgIHRoaXMuX3NvcnRlZFJlcXVlc3RIZWFkZXJzLnNv
cnQoZnVuY3Rpb24oYSxiKSB7IHJldHVybiBhLmhlYWRlci5sb2NhbGVDb21wYXJlKGIuaGVhZGVy
KSB9KTsKLQorICAgICAgICB0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVhZGVycyA9IHRoaXMucmVxdWVz
dEhlYWRlcnMuc2xpY2UoKTsKKyAgICAgICAgdGhpcy5fc29ydGVkUmVxdWVzdEhlYWRlcnMuc29y
dChmdW5jdGlvbihhLGIpIHsgcmV0dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkgfSk7
CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVhZGVyczsKICAgICB9LAogCkBA
IC01MDMsMTEgKzUwMSwxMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBl
ID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtPYmplY3R9CisgICAgICog
QHJldHVybiB7QXJyYXkuPE9iamVjdD59CiAgICAgICovCiAgICAgZ2V0IHJlc3BvbnNlSGVhZGVy
cygpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VIZWFkZXJzIHx8IHt9Owor
ICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VIZWFkZXJzIHx8IFtdOwogICAgIH0sCiAKICAg
ICBzZXQgcmVzcG9uc2VIZWFkZXJzKHgpCkBAIC01MjYsOCArNTI0LDggQEAgV2ViSW5zcGVjdG9y
Lk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9y
ZXNwb25zZUhlYWRlcnNUZXh0ID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgIHRoaXMuX3Jl
c3BvbnNlSGVhZGVyc1RleHQgPSAiSFRUUC8xLjEgIiArIHRoaXMuc3RhdHVzQ29kZSArICIgIiAr
IHRoaXMuc3RhdHVzVGV4dCArICJcclxuIjsKLSAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0
aGlzLnJlc3BvbnNlSGVhZGVycykKLSAgICAgICAgICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRl
cnNUZXh0ICs9IGtleSArICI6ICIgKyB0aGlzLnJlc3BvbnNlSGVhZGVyc1trZXldICsgIlxyXG4i
OworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJlcXVlc3RIZWFkZXJzOyAr
K2kpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzVGV4dCArPSB0aGlzLnJl
c3BvbnNlSGVhZGVyc1tpXS5uYW1lICsgIjogIiArIHRoaXMucmVzcG9uc2VIZWFkZXJzW2ldLnZh
bHVlICsgIlxyXG4iOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZUhl
YWRlcnNUZXh0OwogICAgIH0sCkBAIC01NTQsMTIgKzU1MiwxMCBAQCBXZWJJbnNwZWN0b3IuTmV0
d29ya1JlcXVlc3QucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NvcnRl
ZFJlc3BvbnNlSGVhZGVycyAhPT0gdW5kZWZpbmVkKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X3NvcnRlZFJlc3BvbnNlSGVhZGVyczsKLQorICAgICAgICAKICAgICAgICAgdGhpcy5fc29ydGVk
UmVzcG9uc2VIZWFkZXJzID0gW107Ci0gICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLnJlc3Bv
bnNlSGVhZGVycykKLSAgICAgICAgICAgIHRoaXMuX3NvcnRlZFJlc3BvbnNlSGVhZGVycy5wdXNo
KHtoZWFkZXI6IGtleSwgdmFsdWU6IHRoaXMucmVzcG9uc2VIZWFkZXJzW2tleV19KTsKLSAgICAg
ICAgdGhpcy5fc29ydGVkUmVzcG9uc2VIZWFkZXJzLnNvcnQoZnVuY3Rpb24oYSxiKSB7IHJldHVy
biBhLmhlYWRlci5sb2NhbGVDb21wYXJlKGIuaGVhZGVyKSB9KTsKLQorICAgICAgICB0aGlzLl9z
b3J0ZWRSZXNwb25zZUhlYWRlcnMgPSB0aGlzLnJlc3BvbnNlSGVhZGVycy5zbGljZSgpOworICAg
ICAgICB0aGlzLl9zb3J0ZWRSZXNwb25zZUhlYWRlcnMuc29ydChmdW5jdGlvbihhLGIpIHsgcmV0
dXJuIGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkgfSk7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9zb3J0ZWRSZXNwb25zZUhlYWRlcnM7CiAgICAgfSwKIApAQCAtNjUxLDEwICs2NDcsMTYgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZSA9IHsKICAgICBfaGVhZGVyVmFs
dWU6IGZ1bmN0aW9uKGhlYWRlcnMsIGhlYWRlck5hbWUpCiAgICAgewogICAgICAgICBoZWFkZXJO
YW1lID0gaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpOwotICAgICAgICBmb3IgKHZhciBoZWFkZXIg
aW4gaGVhZGVycykgewotICAgICAgICAgICAgaWYgKGhlYWRlci50b0xvd2VyQ2FzZSgpID09PSBo
ZWFkZXJOYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBoZWFkZXJzW2hlYWRlcl07CisgICAg
ICAgIAorICAgICAgICB2YXIgdmFsdWVzID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgaGVhZGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKGhlYWRlcnNbaV0ubmFt
ZS50b0xvd2VyQ2FzZSgpID09PSBoZWFkZXJOYW1lKQorICAgICAgICAgICAgICAgIHZhbHVlcy5w
dXNoKGhlYWRlcnNbaV0udmFsdWUpOwogICAgICAgICB9CisgICAgICAgIC8vIFNldC1Db29raWUg
dmFsdWVzIHNob3VsZCBiZSBzZXBhcmF0ZWQgYnkgJ1xuJywgbm90IGNvbW1hLCBvdGhlcndpc2Ug
Y29va2llcyBjb3VsZCBub3QgYmUgcGFyc2VkLiAKKyAgICAgICAgaWYgKGhlYWRlck5hbWUudG9M
b3dlckNhc2UoKSA9PT0gIlNldC1Db29raWUiLnRvTG93ZXJDYXNlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gdmFsdWVzLmpvaW4oIlxuIik7CisgICAgICAgIHJldHVybiB2YWx1ZXMuam9pbigiLCAi
KTsKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1JlcXVlc3RIZWFkZXJzVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUmVxdWVzdEhlYWRlcnNWaWV3LmpzCmluZGV4IDMxMThiMzc2MTQ1NmI1
MmE1NzI3NDc1NWFmMzY2MTQxMGM2NjRiNWQuLjc1Y2IwMjQ1ZjBmM2RkZDU0OTlkMmNhYThhNzUz
Mjk1MmI5ZGM3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvUmVxdWVzdEhlYWRlcnNWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVxdWVzdEhlYWRlcnNWaWV3LmpzCkBAIC0yNjksNyArMjY5LDcgQEAgV2ViSW5z
cGVjdG9yLlJlcXVlc3RIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2
YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVxdWVz
dC53ZWJTb2NrZXRSZXF1ZXN0S2V5MyAhPT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBhZGRp
dGlvbmFsUm93ID0ge2hlYWRlcjogIihLZXkzKSIsIHZhbHVlOiB0aGlzLl9yZXF1ZXN0LndlYlNv
Y2tldFJlcXVlc3RLZXkzfTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxSb3cgPSB7bmFtZTogIihL
ZXkzKSIsIHZhbHVlOiB0aGlzLl9yZXF1ZXN0LndlYlNvY2tldFJlcXVlc3RLZXkzfTsKICAgICAg
ICAgaWYgKHRoaXMuX3Nob3dSZXF1ZXN0SGVhZGVyc1RleHQpCiAgICAgICAgICAgICB0aGlzLl9y
ZWZyZXNoSGVhZGVyc1RleHQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRlcnMi
KSwgdGhpcy5fcmVxdWVzdC5zb3J0ZWRSZXF1ZXN0SGVhZGVycywgdGhpcy5fcmVxdWVzdC5yZXF1
ZXN0SGVhZGVyc1RleHQsIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVsZW1lbnQpOwogICAgICAg
ICBlbHNlCkBAIC0yODgsNyArMjg4LDcgQEAgV2ViSW5zcGVjdG9yLlJlcXVlc3RIZWFkZXJzVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7
CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVxdWVzdC53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNw
b25zZSAhPT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBhZGRpdGlvbmFsUm93ID0ge2hlYWRl
cjogIihDaGFsbGVuZ2UgUmVzcG9uc2UpIiwgdmFsdWU6IHRoaXMuX3JlcXVlc3Qud2ViU29ja2V0
Q2hhbGxlbmdlUmVzcG9uc2V9OworICAgICAgICAgICAgYWRkaXRpb25hbFJvdyA9IHtuYW1lOiAi
KENoYWxsZW5nZSBSZXNwb25zZSkiLCB2YWx1ZTogdGhpcy5fcmVxdWVzdC53ZWJTb2NrZXRDaGFs
bGVuZ2VSZXNwb25zZX07CiAgICAgICAgIGlmICh0aGlzLl9zaG93UmVzcG9uc2VIZWFkZXJzVGV4
dCkKICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzVGV4dChXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fcmVxdWVzdC5zb3J0ZWRSZXNwb25zZUhl
YWRlcnMsIHRoaXMuX3JlcXVlc3QucmVzcG9uc2VIZWFkZXJzVGV4dCwgdGhpcy5fcmVzcG9uc2VI
ZWFkZXJzVHJlZUVsZW1lbnQpOwogICAgICAgICBlbHNlCkBAIC0zNTQsMTQgKzM1NCwxNCBAQCBX
ZWJJbnNwZWN0b3IuUmVxdWVzdEhlYWRlcnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaGVh
ZGVyc1RyZWVFbGVtZW50LmhpZGRlbiA9ICFsZW5ndGg7CiAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBoZWFkZXJUcmVlRWxlbWVudCA9
IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7Ci0gICAgICAgICAgICBoZWFkZXJU
cmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihoZWFkZXJzW2ldLmhlYWRlciwg
aGVhZGVyc1tpXS52YWx1ZSk7CisgICAgICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC50aXRsZSA9
IHRoaXMuX2Zvcm1hdEhlYWRlcihoZWFkZXJzW2ldLm5hbWUsIGhlYWRlcnNbaV0udmFsdWUpOwog
ICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9IGZhbHNlOwogICAgICAg
ICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRlclRyZWVFbGVtZW50KTsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChhZGRpdGlvbmFsUm93KSB7CiAgICAgICAgICAgICB2
YXIgaGVhZGVyVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQobnVsbCwgbnVsbCwgZmFsc2Up
OwotICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQudGl0bGUgPSB0aGlzLl9mb3JtYXRIZWFk
ZXIoYWRkaXRpb25hbFJvdy5oZWFkZXIsIGFkZGl0aW9uYWxSb3cudmFsdWUpOworICAgICAgICAg
ICAgaGVhZGVyVHJlZUVsZW1lbnQudGl0bGUgPSB0aGlzLl9mb3JtYXRIZWFkZXIoYWRkaXRpb25h
bFJvdy5uYW1lLCBhZGRpdGlvbmFsUm93LnZhbHVlKTsKICAgICAgICAgICAgIGhlYWRlclRyZWVF
bGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIGhlYWRlcnNUcmVlRWxlbWVu
dC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUExvYWRJbmZv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRUUExv
YWRJbmZvLmNwcAppbmRleCBkN2Q1N2YyMTIxMDRmZTk5MDc1NjYzMjUwZDQ0MjNiMWU2MjZiNjI3
Li43NzYyZmQ4YzQ5ZmRhMjQyYTM3MDI2YzZkZmU2NzdmMjMwNTBlMjlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYkhUVFBMb2FkSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJIVFRQ
TG9hZEluZm8uY3BwCkBAIC0xMDQsOCArMTA0LDkgQEAgdm9pZCBXZWJIVFRQTG9hZEluZm86OnNl
dEVuY29kZWREYXRhTGVuZ3RoKGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCkKIHN0YXRpYyB2
b2lkIGFkZEhlYWRlcihIVFRQSGVhZGVyTWFwKiBtYXAsIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwg
Y29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBIVFRQSGVhZGVyTWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gbWFwLT5hZGQobmFtZSwgdmFsdWUpOworICAgIC8vIEl0IGlzIGltcG9ydGFudCB0
aGF0IHZhbHVlcyBhcmUgc2VwYXJhdGVkIGJ5ICdcbicsIG5vdCBjb21tYSwgb3RoZXJ3aXNlIFNl
dC1Db29raWUgaGVhZGVyIGlzIG5vdCBwYXJzZWFibGUuCiAgICAgaWYgKCFyZXN1bHQuaXNOZXdF
bnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgKz0gIiwgIiArIFN0cmluZyh2
YWx1ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9ICJcbiIgKyBTdHJpbmco
dmFsdWUpOwogfQogCiB2b2lkIFdlYkhUVFBMb2FkSW5mbzo6YWRkUmVxdWVzdEhlYWRlcihjb25z
dCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWFmNTAz
OTJkMmE5ZTAyZDgyNTlkOTNkNThkODQ0ZGRjNDVlZTdlOC4uMmY2YjBlZjc3NmEwNmM4NzRkYTI4
YTI1YzA1ZjU4NmNkMzQwOWIwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA1LTE0ICBW
c2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJlcXVlc3QgLyByZXNwb25zZSBoZWFkZXJzIHNob3VsZCBiZSBzdG9yZWQgaW4gbmFt
ZS12YWx1ZSBwYWlycyBhcnJheSwgbm90IGEgbWFwIG9uIGZyb250LWVuZC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MzU3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlLWhhci1oZWFkZXJzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItaGVhZGVycy5odG1sOgorCiAyMDEyLTA1LTE0
ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBV
bnJldmlld2VkIGdhcmRlbmluZywgdW5za2lwIGEgbm93IHBhc3NpbmcgdGVzdC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJz
aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXIt
Y29udmVyc2lvbi5odG1sCmluZGV4IDc1MzUzYjg5ZDBjMTQ1YWZhOTJlZjE3ZjY0NmYyMDUwMWE1
MmJlZGEuLmUyN2Y3ZTgwMTI2MDQ4YjM5MDIxZWU5Nzg5NWI1YjdiYzQzNjYxNTEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1jb252ZXJz
aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Ut
aGFyLWNvbnZlcnNpb24uaHRtbApAQCAtMzYsMTMgKzM2LDEzIEBAIHZhciB0ZXN0ID0gZnVuY3Rp
b24oKQogCiAgICAgICAgIGZ1bmN0aW9uIGFkZENvb2tpZUhlYWRlcnNUb1JlcXVlc3QocmVxdWVz
dCkKICAgICAgICAgewotICAgICAgICAgICAgcmVxdWVzdC5yZXF1ZXN0SGVhZGVycyA9IHsKLSAg
ICAgICAgICAgICAgICAiQ29va2llIjogImE9YjsgJFBhdGg9L3BhdGg7ICREb21haW49ZXhhbXBs
ZS5jb207IGExPWIxXG5jMT1kMSIKLSAgICAgICAgICAgIH07CisgICAgICAgICAgICByZXF1ZXN0
LnJlcXVlc3RIZWFkZXJzID0gWworICAgICAgICAgICAgICAgIHsgbmFtZTogIkNvb2tpZSIsIHZh
bHVlOiAiYT1iOyAkUGF0aD0vcGF0aDsgJERvbWFpbj1leGFtcGxlLmNvbTsgYTE9YjFcbmMxPWQx
IiB9CisgICAgICAgICAgICBdOwogCi0gICAgICAgICAgICByZXF1ZXN0LnJlc3BvbnNlSGVhZGVy
cyA9IHsKLSAgICAgICAgICAgICAgICAiU2V0LUNvb2tpZSI6ICJ4PXk7IFBhdGg9L3BhdGg7IERv
bWFpbj1leGFtcGxlLmNvbTsgRGlzY2FyZDsgaHR0cE9ubHk7IFNlY3VyZTsgVmVyc2lvbj0xXG54
MT15MVxuejI9eTIiCi0gICAgICAgICAgICB9OworICAgICAgICAgICAgcmVxdWVzdC5yZXNwb25z
ZUhlYWRlcnMgPSBbCisgICAgICAgICAgICAgICAgeyBuYW1lOiAiU2V0LUNvb2tpZSIsIHZhbHVl
OiAieD15OyBQYXRoPS9wYXRoOyBEb21haW49ZXhhbXBsZS5jb207IERpc2NhcmQ7IGh0dHBPbmx5
OyBTZWN1cmU7IFZlcnNpb249MVxueDE9eTFcbnoyPXkyIiB9CisgICAgICAgICAgICBdOwogICAg
ICAgICB9CiAKICAgICAgICAgYWRkQ29va2llSGVhZGVyc1RvUmVxdWVzdChmaW5kUmVxdWVzdEJ5
VVJMKC9pbnNwZWN0b3ItdGVzdFwuanMkLykpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWhlYWRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWhlYWRlcnMtZXhwZWN0
ZWQudHh0CmluZGV4IGQ2NDk2MWFiMmY0MzFmZjcyNDUxNWFlNWYxZmRkNjg0MTY4YzU4YjcuLmE4
YzJiYjkwNzE2N2Y1N2QwYzRkYjkzZGNjNDhhY2JkYTZhNTA2NjQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1oZWFkZXJzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXIt
aGVhZGVycy1leHBlY3RlZC50eHQKQEAgLTIsMTYgKzIsMjIgQEAgVGVzdHMgdGhlIG5vbmRldGVy
bWluaXN0aWMgYml0cyBvZiBIQVIgY29udmVyc2lvbiB2aWEgdGhlIG1hZ2ljIG9mIGhhcmQtY29k
ZWQgdmEKIAogUmVzb3VyY2U6ewogICAgIHJlcXVlc3QgOiB7Ci0gICAgICAgIGhlYWRlcnMgOiB7
Ci0gICAgICAgICAgICBSZXF1ZXN0IDogInJlcXVlc3QtdmFsdWUiCi0gICAgICAgIH0KKyAgICAg
ICAgaGVhZGVycyA6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBuYW1lIDogIlJl
cXVlc3QiCisgICAgICAgICAgICAgICAgdmFsdWUgOiAicmVxdWVzdC12YWx1ZSIKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgXQogICAgICAgICBoZWFkZXJzVGV4dCA6ICJHRVQgaHR0cDovL2V4YW1w
bGUuY29tL2luc3BlY3Rvci10ZXN0LmpzIEhUVFAvMS4xXHJcblJlcXVlc3Q6IGhlYWRlcnMtdGV4
dCIKICAgICAgICAgaGVhZGVyc1NpemUgOiA3MgogICAgIH0KICAgICByZXNwb25zZSA6IHsKLSAg
ICAgICAgaGVhZGVycyA6IHsKLSAgICAgICAgICAgIFJlc3BvbnNlIDogInJlc3BvbnNlLXZhbHVl
IgotICAgICAgICB9CisgICAgICAgIGhlYWRlcnMgOiBbCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgbmFtZSA6ICJSZXNwb25zZSIKKyAgICAgICAgICAgICAgICB2YWx1ZSA6ICJyZXNw
b25zZS12YWx1ZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgXQogICAgICAgICBoZWFkZXJzVGV4
dCA6ICJIVFRQLzEuMSAyMDAgT0tcclxuUmVzcG9uc2U6IGhlYWRlcnMtdGV4dCIKICAgICAgICAg
aGVhZGVyc1NpemUgOiAzOQogICAgICAgICByZXNvdXJjZVNpemUgOiAxMDAwCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItaGVhZGVycy5o
dG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWhlYWRl
cnMuaHRtbAppbmRleCA2ZGJkYTE1NzVjOGEzY2U3OGQ1ZmViYzk0ZDM3ODUwODA1NDU4NzNkLi41
NDlkYjY5NGY0NWRmMzM5NGI0N2QzYTZhZjViMWE1MTVmMmU0MWM0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItaGVhZGVycy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1oZWFkZXJz
Lmh0bWwKQEAgLTE0LDE0ICsxNCwxNCBAQCB2YXIgdGVzdCA9IGZ1bmN0aW9uKCkKIAogICAgIGZ1
bmN0aW9uIHNldFJlcXVlc3RWYWx1ZXMocmVxdWVzdCkKICAgICB7Ci0gICAgICAgIHJlcXVlc3Qu
cmVxdWVzdEhlYWRlcnMgPSB7Ci0gICAgICAgICAgICAiUmVxdWVzdCI6ICJyZXF1ZXN0LXZhbHVl
IgotICAgICAgICB9OworICAgICAgICByZXF1ZXN0LnJlcXVlc3RIZWFkZXJzID0gWworICAgICAg
ICAgICAgeyBuYW1lOiAiUmVxdWVzdCIsIHZhbHVlOiAicmVxdWVzdC12YWx1ZSIgfQorICAgICAg
ICBdOwogICAgICAgICByZXF1ZXN0LnJlcXVlc3RIZWFkZXJzVGV4dCA9ICJHRVQgaHR0cDovL2V4
YW1wbGUuY29tL2luc3BlY3Rvci10ZXN0LmpzIEhUVFAvMS4xXHJcblJlcXVlc3Q6IGhlYWRlcnMt
dGV4dCI7CiAKLSAgICAgICAgcmVxdWVzdC5yZXNwb25zZUhlYWRlcnMgPSB7Ci0gICAgICAgICAg
ICAiUmVzcG9uc2UiOiAicmVzcG9uc2UtdmFsdWUiCi0gICAgICAgIH07CisgICAgICAgIHJlcXVl
c3QucmVzcG9uc2VIZWFkZXJzID0gWworICAgICAgICAgICAgeyBuYW1lOiAiUmVzcG9uc2UiLCB2
YWx1ZTogInJlc3BvbnNlLXZhbHVlIiB9CisgICAgICAgIF07CiAgICAgICAgIHJlcXVlc3QucmVz
cG9uc2VIZWFkZXJzVGV4dCA9ICJIVFRQLzEuMSAyMDAgT0tcclxuUmVzcG9uc2U6IGhlYWRlcnMt
dGV4dCI7CiAKICAgICAgICAgcmVxdWVzdC5kb2N1bWVudFVSTCA9ICJodHRwOi8vZXhhbXBsZS5j
b20vaW5zcGVjdG9yLXRlc3QuanMiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141708</attachid>
            <date>2012-05-14 06:12:43 -0700</date>
            <delta_ts>2012-05-14 08:35:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86357-20120514171241.patch</filename>
            <type>text/plain</type>
            <size>21926</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2OTMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRmM2ZlMzI0OGZkNWU2
MTYxNDdlZWVlMWNiZTRkYzI4YmRiOTYyMy4uNzUwODc1ZTFmMzEzNzNlNzA0ZDNjMTA5MjczMDcw
NGI0Y2MzYjViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA1LTE0ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlcXVlc3QgLyByZXNwb25zZSBoZWFkZXJzIHNob3VsZCBiZSBzdG9yZWQgaW4gbmFtZS12
YWx1ZSBwYWlycyBhcnJheSwgbm90IGEgbWFwIG9uIGZyb250LWVuZC4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MzU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmluZyBoZWFkZXJzIGFzIG5hbWUt
dmFsdWUgcGFpcnMgYXJyYXkgaW5mb3JtYXRpb24gbW9yZSBhY2N1cmF0ZSBhbmQgYWxsb3dzCisg
ICAgICAgIHRvIHRyZWF0IFNldC1Db29raWUgaGVhZGVycyAod2hpY2ggYmVjb21lIG5vdCBwYXJz
ZWFibGUgd2hlbiBqb2luZWQgYnkgY29tbWEpIGNvcnJlY3RseS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvQXVkaXRSdWxlcy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRp
dFJ1bGVzLkd6aXBSdWxlLnByb3RvdHlwZS5faXNDb21wcmVzc2VkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUucHJvdG90eXBlLnJlc3BvbnNlSGVh
ZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUu
cHJvdG90eXBlLmhhc1Jlc3BvbnNlSGVhZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5BdWRp
dFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUucHJvdG90eXBlLnJlc3BvbnNlSGVhZGVyTWF0Y2gpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuSEFSRW50cnkucHJvdG90eXBlLl9idWlsZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkhBUkVudHJ5LnByb3RvdHlwZS5fYnVpbGRSZXNwb25zZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUuX2hlYWRlcnNNYXBUb0hlYWRlcnNBcnJh
eSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlLl91
cGRhdGVOZXR3b3JrUmVxdWVzdFdpdGhSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5O
ZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUuX3VwZGF0ZU5ldHdvcmtSZXF1ZXN0V2l0aFJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUu
d2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUud2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUmVxdWVzdC5q
czoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuZ2V0IHRy
YW5zZmVyU2l6ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90
eXBlLmdldCByZXF1ZXN0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmV0d29ya1Jl
cXVlc3QucHJvdG90eXBlLmdldCByZXF1ZXN0SGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZS5nZXQgcmVzcG9uc2VIZWFkZXJzKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUuZ2V0IHJlc3BvbnNl
SGVhZGVyc1RleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3Rv
dHlwZS5faGVhZGVyVmFsdWUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVz
dEhlYWRlcnNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlcXVlc3RIZWFkZXJzVmll
dy5wcm90b3R5cGUuX3JlZnJlc2hSZXF1ZXN0SGVhZGVycyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUmVxdWVzdEhlYWRlcnNWaWV3LnByb3RvdHlwZS5fcmVmcmVzaFJlc3BvbnNlSGVhZGVycyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVxdWVzdEhlYWRlcnNWaWV3LnByb3RvdHlwZS5fcmVm
cmVzaEhlYWRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViSFRU
UExvYWRJbmZvLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YWRkSGVhZGVyKToKKwogMjAxMi0wNS0x
NCAgWmVubyBBbGJpc3NlciAgPHplbm9Ad2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIFRleHR1
cmVNYXBwZXJHTDo6ZHJhd1RleHR1cmUgbWFya2VkIE9WRVJSSURFIGJ1dCBkb2VzIG5vdCBvdmVy
cmlkZSBhbnkgbWVtYmVyIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9BdWRpdFJ1bGVzLmpzCmluZGV4IGU5M2ZiYmU4NzA0M2YzMDlhNWM2OTI3MWMw
NmFiNDhhYzg3OTdhMDIuLmE2NDU5YjIwODEwMWM3YzhhMzFjY2Y4NDZiOTRmMjI2MGEyY2MwMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQXVkaXRSdWxl
cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0F1ZGl0UnVsZXMu
anMKQEAgLTEwNyw3ICsxMDcsNyBAQCBXZWJJbnNwZWN0b3IuQXVkaXRSdWxlcy5HemlwUnVsZS5w
cm90b3R5cGUgPSB7CiAKICAgICBfaXNDb21wcmVzc2VkOiBmdW5jdGlvbihyZXF1ZXN0KQogICAg
IHsKLSAgICAgICAgdmFyIGVuY29kaW5nSGVhZGVyID0gcmVxdWVzdC5yZXNwb25zZUhlYWRlcnNb
IkNvbnRlbnQtRW5jb2RpbmciXTsKKyAgICAgICAgdmFyIGVuY29kaW5nSGVhZGVyID0gcmVxdWVz
dC5yZXNwb25zZUhlYWRlclZhbHVlKCJDb250ZW50LUVuY29kaW5nIik7CiAgICAgICAgIGlmICgh
ZW5jb2RpbmdIZWFkZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTUxNywxMiAr
NTE3LDEyIEBAIFdlYkluc3BlY3Rvci5BdWRpdFJ1bGVzLkNhY2hlQ29udHJvbFJ1bGUucHJvdG90
eXBlID0gewogCiAgICAgcmVzcG9uc2VIZWFkZXI6IGZ1bmN0aW9uKHJlcXVlc3QsIGhlYWRlcikK
ICAgICB7Ci0gICAgICAgIHJldHVybiByZXF1ZXN0LnJlc3BvbnNlSGVhZGVyc1toZWFkZXJdOwor
ICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZUhlYWRlclZhbHVlKGhlYWRlcik7CiAgICAg
fSwKIAogICAgIGhhc1Jlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbihyZXF1ZXN0LCBoZWFkZXIpCiAg
ICAgewotICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZUhlYWRlcnNbaGVhZGVyXSAhPT0g
dW5kZWZpbmVkOworICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZUhlYWRlclZhbHVlKGhl
YWRlcikgIT09IHVuZGVmaW5lZDsKICAgICB9LAogCiAgICAgaXNDb21wcmVzc2libGU6IGZ1bmN0
aW9uKHJlcXVlc3QpCkBAIC01NDMsOCArNTQzLDggQEAgV2ViSW5zcGVjdG9yLkF1ZGl0UnVsZXMu
Q2FjaGVDb250cm9sUnVsZS5wcm90b3R5cGUgPSB7CiAKICAgICByZXNwb25zZUhlYWRlck1hdGNo
OiBmdW5jdGlvbihyZXF1ZXN0LCBoZWFkZXIsIHJlZ2V4cCkKICAgICB7Ci0gICAgICAgIHJldHVy
biByZXF1ZXN0LnJlc3BvbnNlSGVhZGVyc1toZWFkZXJdCi0gICAgICAgICAgICA/IHJlcXVlc3Qu
cmVzcG9uc2VIZWFkZXJzW2hlYWRlcl0ubWF0Y2gobmV3IFJlZ0V4cChyZWdleHAsICJpbSIpKQor
ICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZUhlYWRlclZhbHVlKGhlYWRlcikKKyAgICAg
ICAgICAgID8gcmVxdWVzdC5yZXNwb25zZUhlYWRlclZhbHVlKGhlYWRlcikubWF0Y2gobmV3IFJl
Z0V4cChyZWdleHAsICJpbSIpKQogICAgICAgICAgICAgOiB1bmRlZmluZWQ7CiAgICAgfSwKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSEFSRW50cnkuanMKaW5kZXgg
ZjU0MWIyM2E1MWYxM2JlYTg0NWI0MGI4YmVkM2Y5ODM2NGI4ZDAwMy4uZWVhNTMzOWEzZjAxYjNk
OTEzYjU1YzhhMDZlNWU5MGRhZTc3ODQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9IQVJFbnRyeS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0hBUkVudHJ5LmpzCkBAIC03Miw3ICs3Miw3IEBAIFdlYkluc3BlY3Rvci5I
QVJFbnRyeS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBtZXRob2Q6IHRoaXMuX3JlcXVlc3Qu
cmVxdWVzdE1ldGhvZCwKICAgICAgICAgICAgIHVybDogdGhpcy5fYnVpbGRSZXF1ZXN0VVJMKHRo
aXMuX3JlcXVlc3QudXJsKSwKICAgICAgICAgICAgIGh0dHBWZXJzaW9uOiB0aGlzLl9yZXF1ZXN0
LnJlcXVlc3RIdHRwVmVyc2lvbiwKLSAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuX2J1aWxkSGVh
ZGVycyh0aGlzLl9yZXF1ZXN0LnJlcXVlc3RIZWFkZXJzKSwKKyAgICAgICAgICAgIGhlYWRlcnM6
IHRoaXMuX3JlcXVlc3QucmVxdWVzdEhlYWRlcnMsCiAgICAgICAgICAgICBxdWVyeVN0cmluZzog
dGhpcy5fYnVpbGRQYXJhbWV0ZXJzKHRoaXMuX3JlcXVlc3QucXVlcnlQYXJhbWV0ZXJzIHx8IFtd
KSwKICAgICAgICAgICAgIGNvb2tpZXM6IHRoaXMuX2J1aWxkQ29va2llcyh0aGlzLl9yZXF1ZXN0
LnJlcXVlc3RDb29raWVzIHx8IFtdKSwKICAgICAgICAgICAgIGhlYWRlcnNTaXplOiB0aGlzLl9y
ZXF1ZXN0LnJlcXVlc3RIZWFkZXJzU2l6ZSwKQEAgLTkzLDcgKzkzLDcgQEAgV2ViSW5zcGVjdG9y
LkhBUkVudHJ5LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHN0YXR1czogdGhpcy5fcmVxdWVz
dC5zdGF0dXNDb2RlLAogICAgICAgICAgICAgc3RhdHVzVGV4dDogdGhpcy5fcmVxdWVzdC5zdGF0
dXNUZXh0LAogICAgICAgICAgICAgaHR0cFZlcnNpb246IHRoaXMuX3JlcXVlc3QucmVzcG9uc2VI
dHRwVmVyc2lvbiwKLSAgICAgICAgICAgIGhlYWRlcnM6IHRoaXMuX2J1aWxkSGVhZGVycyh0aGlz
Ll9yZXF1ZXN0LnJlc3BvbnNlSGVhZGVycyksCisgICAgICAgICAgICBoZWFkZXJzOiB0aGlzLl9y
ZXF1ZXN0LnJlc3BvbnNlSGVhZGVycywKICAgICAgICAgICAgIGNvb2tpZXM6IHRoaXMuX2J1aWxk
Q29va2llcyh0aGlzLl9yZXF1ZXN0LnJlc3BvbnNlQ29va2llcyB8fCBbXSksCiAgICAgICAgICAg
ICBjb250ZW50OiB0aGlzLl9idWlsZENvbnRlbnQoKSwKICAgICAgICAgICAgIHJlZGlyZWN0VVJM
OiB0aGlzLl9yZXF1ZXN0LnJlc3BvbnNlSGVhZGVyVmFsdWUoIkxvY2F0aW9uIikgfHwgIiIsCkBA
IC0xNTcsMTcgKzE1Nyw2IEBAIFdlYkluc3BlY3Rvci5IQVJFbnRyeS5wcm90b3R5cGUgPSB7CiAg
ICAgLyoqCiAgICAgICogQHJldHVybiB7T2JqZWN0fQogICAgICAqLwotICAgIF9idWlsZEhlYWRl
cnM6IGZ1bmN0aW9uKGhlYWRlcnMpCi0gICAgewotICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0g
ICAgICAgIGZvciAodmFyIG5hbWUgaW4gaGVhZGVycykKLSAgICAgICAgICAgIHJlc3VsdC5wdXNo
KHsgbmFtZTogbmFtZSwgdmFsdWU6IGhlYWRlcnNbbmFtZV0gfSk7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEByZXR1cm4ge09iamVjdH0KLSAgICAg
Ki8KICAgICBfYnVpbGRQb3N0RGF0YTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHJl
cyA9IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0
d29ya01hbmFnZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdv
cmtNYW5hZ2VyLmpzCmluZGV4IDRjMzkxNWYxMjJjOTU2ZGFjZTY4YWUwYjJhOWQxYTI2ZGI2Y2U1
MmIuLmE4ZjA3NzBmNDRjNDJlMTBhOGUxMWMxYjRjMjcyODljN2M5Nzg4YTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrTWFuYWdlci5qcwpA
QCAtMTUyLDEzICsxNTIsMjggQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyID0gZnVu
Y3Rpb24obWFuYWdlcikKIAogV2ViSW5zcGVjdG9yLk5ldHdvcmtEaXNwYXRjaGVyLnByb3RvdHlw
ZSA9IHsKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge05ldHdvcmtBZ2VudC5IZWFkZXJzfSBoZWFk
ZXJzTWFwCisgICAgICogQHJldHVybiB7QXJyYXkuPE9iamVjdD59CisgICAgICovCisgICAgX2hl
YWRlcnNNYXBUb0hlYWRlcnNBcnJheTogZnVuY3Rpb24oaGVhZGVyc01hcCkKKyAgICB7CisgICAg
ICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgbmFtZSBpbiBoZWFkZXJzTWFw
KSB7CisgICAgICAgICAgICB2YXIgdmFsdWVzID0gaGVhZGVyc01hcFtuYW1lXS5zcGxpdCgiXG4i
KTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgKytpKQor
ICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsgbmFtZTogbmFtZSwgdmFsdWU6IHZhbHVlc1tp
XSB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCisKKyAgICAv
KioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdH0gbmV0d29ya1Jl
cXVlc3QKICAgICAgKiBAcGFyYW0ge05ldHdvcmtBZ2VudC5SZXF1ZXN0fSByZXF1ZXN0CiAgICAg
ICovCiAgICAgX3VwZGF0ZU5ldHdvcmtSZXF1ZXN0V2l0aFJlcXVlc3Q6IGZ1bmN0aW9uKG5ldHdv
cmtSZXF1ZXN0LCByZXF1ZXN0KQogICAgIHsKICAgICAgICAgbmV0d29ya1JlcXVlc3QucmVxdWVz
dE1ldGhvZCA9IHJlcXVlc3QubWV0aG9kOwotICAgICAgICBuZXR3b3JrUmVxdWVzdC5yZXF1ZXN0
SGVhZGVycyA9IHJlcXVlc3QuaGVhZGVyczsKKyAgICAgICAgbmV0d29ya1JlcXVlc3QucmVxdWVz
dEhlYWRlcnMgPSB0aGlzLl9oZWFkZXJzTWFwVG9IZWFkZXJzQXJyYXkocmVxdWVzdC5oZWFkZXJz
KTsKICAgICAgICAgbmV0d29ya1JlcXVlc3QucmVxdWVzdEZvcm1EYXRhID0gcmVxdWVzdC5wb3N0
RGF0YTsKICAgICB9LAogCkBAIC0xNzYsMTEgKzE5MSwxMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29y
a0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAgICBuZXR3b3JrUmVxdWVzdC5taW1lVHlw
ZSA9IHJlc3BvbnNlLm1pbWVUeXBlOwogICAgICAgICBuZXR3b3JrUmVxdWVzdC5zdGF0dXNDb2Rl
ID0gcmVzcG9uc2Uuc3RhdHVzOwogICAgICAgICBuZXR3b3JrUmVxdWVzdC5zdGF0dXNUZXh0ID0g
cmVzcG9uc2Uuc3RhdHVzVGV4dDsKLSAgICAgICAgbmV0d29ya1JlcXVlc3QucmVzcG9uc2VIZWFk
ZXJzID0gcmVzcG9uc2UuaGVhZGVyczsKKyAgICAgICAgbmV0d29ya1JlcXVlc3QucmVzcG9uc2VI
ZWFkZXJzID0gdGhpcy5faGVhZGVyc01hcFRvSGVhZGVyc0FycmF5KHJlc3BvbnNlLmhlYWRlcnMp
OwogICAgICAgICBpZiAocmVzcG9uc2UuaGVhZGVyc1RleHQpCiAgICAgICAgICAgICBuZXR3b3Jr
UmVxdWVzdC5yZXNwb25zZUhlYWRlcnNUZXh0ID0gcmVzcG9uc2UuaGVhZGVyc1RleHQ7CiAgICAg
ICAgIGlmIChyZXNwb25zZS5yZXF1ZXN0SGVhZGVycykKLSAgICAgICAgICAgIG5ldHdvcmtSZXF1
ZXN0LnJlcXVlc3RIZWFkZXJzID0gcmVzcG9uc2UucmVxdWVzdEhlYWRlcnM7CisgICAgICAgICAg
ICBuZXR3b3JrUmVxdWVzdC5yZXF1ZXN0SGVhZGVycyA9IHRoaXMuX2hlYWRlcnNNYXBUb0hlYWRl
cnNBcnJheShyZXNwb25zZS5yZXF1ZXN0SGVhZGVycyk7CiAgICAgICAgIGlmIChyZXNwb25zZS5y
ZXF1ZXN0SGVhZGVyc1RleHQpCiAgICAgICAgICAgICBuZXR3b3JrUmVxdWVzdC5yZXF1ZXN0SGVh
ZGVyc1RleHQgPSByZXNwb25zZS5yZXF1ZXN0SGVhZGVyc1RleHQ7CiAKQEAgLTQyNiw3ICs0NDEs
NyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlcXVlc3RNZXRob2QgPSAi
R0VUIjsKLSAgICAgICAgbmV0d29ya1JlcXVlc3QucmVxdWVzdEhlYWRlcnMgPSByZXF1ZXN0Lmhl
YWRlcnM7CisgICAgICAgIG5ldHdvcmtSZXF1ZXN0LnJlcXVlc3RIZWFkZXJzID0gdGhpcy5faGVh
ZGVyc01hcFRvSGVhZGVyc0FycmF5KHJlcXVlc3QuaGVhZGVycyk7CiAgICAgICAgIG5ldHdvcmtS
ZXF1ZXN0LndlYlNvY2tldFJlcXVlc3RLZXkzID0gcmVxdWVzdC5yZXF1ZXN0S2V5MzsKICAgICAg
ICAgbmV0d29ya1JlcXVlc3Quc3RhcnRUaW1lID0gdGltZTsKIApAQCAtNDQ2LDcgKzQ2MSw3IEBA
IFdlYkluc3BlY3Rvci5OZXR3b3JrRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
bmV0d29ya1JlcXVlc3Quc3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1czsKICAgICAgICAgbmV0
d29ya1JlcXVlc3Quc3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7Ci0gICAgICAgIG5l
dHdvcmtSZXF1ZXN0LnJlc3BvbnNlSGVhZGVycyA9IHJlc3BvbnNlLmhlYWRlcnM7CisgICAgICAg
IG5ldHdvcmtSZXF1ZXN0LnJlc3BvbnNlSGVhZGVycyA9IHRoaXMuX2hlYWRlcnNNYXBUb0hlYWRl
cnNBcnJheShyZXNwb25zZS5oZWFkZXJzKTsKICAgICAgICAgbmV0d29ya1JlcXVlc3Qud2ViU29j
a2V0Q2hhbGxlbmdlUmVzcG9uc2UgPSByZXNwb25zZS5jaGFsbGVuZ2VSZXNwb25zZTsKICAgICAg
ICAgbmV0d29ya1JlcXVlc3QucmVzcG9uc2VSZWNlaXZlZFRpbWUgPSB0aW1lOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtSZXF1ZXN0Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9OZXR3b3JrUmVxdWVzdC5qcwpp
bmRleCA1NzcwNTBmZDg5Yjc5ZDMwMmUwYTZkMGUwZDJlMjhjZGZjOTkyZTI4Li40NzZjMGYxZTZi
ODc3M2JiMTQ5ZWI4MDQ0ZGZmZjY5OTAxMmI1YTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL05ldHdvcmtSZXF1ZXN0LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya1JlcXVlc3QuanMKQEAgLTI0MCw3ICsyNDAs
NyBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBlID0gewogICAgICAgICAv
LyByZXNvdXJjZVNpemUgd2hlbiB3ZSBkb24ndCBoYXZlIENvbnRlbnQtTGVuZ3RoLiBUaGlzIHN0
aWxsIHdvbid0CiAgICAgICAgIC8vIHdvcmsgZm9yIGNodW5rcyB3aXRoIG5vbi10cml2aWFsIGVu
Y29kaW5ncy4gV2UgbmVlZCBhIHdheSB0bwogICAgICAgICAvLyBnZXQgYWN0dWFsIHRyYW5zZmVy
IHNpemUgZnJvbSB0aGUgbmV0d29yayBzdGFjay4KLSAgICAgICAgdmFyIGJvZHlTaXplID0gTnVt
YmVyKHRoaXMucmVzcG9uc2VIZWFkZXJzWyJDb250ZW50LUxlbmd0aCJdIHx8IHRoaXMucmVzb3Vy
Y2VTaXplKTsKKyAgICAgICAgdmFyIGJvZHlTaXplID0gTnVtYmVyKHRoaXMucmVzcG9uc2VIZWFk
ZXJWYWx1ZSgiQ29udGVudC1MZW5ndGgiKSB8fCB0aGlzLnJlc291cmNlU2l6ZSk7CiAgICAgICAg
IHJldHVybiB0aGlzLnJlc3BvbnNlSGVhZGVyc1NpemUgKyBib2R5U2l6ZTsKICAgICB9LAogCkBA
IC0zOTksMTEgKzM5OSwxMSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1JlcXVlc3QucHJvdG90eXBl
ID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtPYmplY3R9CisgICAgICog
QHJldHVybiB7QXJyYXkuPE9iamVjdD59CiAgICAgICovCiAgICAgZ2V0IHJlcXVlc3RIZWFkZXJz
KCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0SGVhZGVycyB8fCB7fTsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3JlcXVlc3RIZWFkZXJzIHx8IFtdOwogICAgIH0sCiAKICAgICBz
ZXQgcmVxdWVzdEhlYWRlcnMoeCkKQEAgLTQyMiw4ICs0MjIsOCBAQCBXZWJJbnNwZWN0b3IuTmV0
d29ya1JlcXVlc3QucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3JlcXVl
c3RIZWFkZXJzVGV4dCA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICB0aGlzLl9yZXF1ZXN0
SGVhZGVyc1RleHQgPSB0aGlzLnJlcXVlc3RNZXRob2QgKyAiICIgKyB0aGlzLnVybCArICIgSFRU
UC8xLjFcclxuIjsKLSAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLnJlcXVlc3RIZWFk
ZXJzKQotICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzVGV4dCArPSBrZXkgKyAi
OiAiICsgdGhpcy5yZXF1ZXN0SGVhZGVyc1trZXldICsgIlxyXG4iOworICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLnJlcXVlc3RIZWFkZXJzOyArK2kpCisgICAgICAgICAgICAg
ICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNUZXh0ICs9IHRoaXMucmVxdWVzdEhlYWRlcnNbaV0ubmFt
ZSArICI6ICIgKyB0aGlzLnJlcXVlc3RIZWFkZXJzW2ldLnZhbHVlICsgIlxyXG4iOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXF1ZXN0SGVhZGVyc1RleHQ7CiAgICAgfSwKQEAg
LTQ1MiwxMCArNDUyLDggQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVhZGVyczsKIAogICAg
ICAgICB0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVhZGVycyA9IFtdOwotICAgICAgICBmb3IgKHZhciBr
ZXkgaW4gdGhpcy5yZXF1ZXN0SGVhZGVycykKLSAgICAgICAgICAgIHRoaXMuX3NvcnRlZFJlcXVl
c3RIZWFkZXJzLnB1c2goe2hlYWRlcjoga2V5LCB2YWx1ZTogdGhpcy5yZXF1ZXN0SGVhZGVyc1tr
ZXldfSk7Ci0gICAgICAgIHRoaXMuX3NvcnRlZFJlcXVlc3RIZWFkZXJzLnNvcnQoZnVuY3Rpb24o
YSxiKSB7IHJldHVybiBhLmhlYWRlci5sb2NhbGVDb21wYXJlKGIuaGVhZGVyKSB9KTsKLQorICAg
ICAgICB0aGlzLl9zb3J0ZWRSZXF1ZXN0SGVhZGVycyA9IHRoaXMucmVxdWVzdEhlYWRlcnMuc2xp
Y2UoKTsKKyAgICAgICAgdGhpcy5fc29ydGVkUmVxdWVzdEhlYWRlcnMuc29ydChmdW5jdGlvbihh
LGIpIHsgcmV0dXJuIGEubmFtZS50b0xvd2VyQ2FzZSgpLmxvY2FsZUNvbXBhcmUoYi5uYW1lLnRv
TG93ZXJDYXNlKCkpIH0pOwogICAgICAgICByZXR1cm4gdGhpcy5fc29ydGVkUmVxdWVzdEhlYWRl
cnM7CiAgICAgfSwKIApAQCAtNTAzLDExICs1MDEsMTEgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtS
ZXF1ZXN0LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHJldHVybiB7
T2JqZWN0fQorICAgICAqIEByZXR1cm4ge0FycmF5LjxPYmplY3Q+fQogICAgICAqLwogICAgIGdl
dCByZXNwb25zZUhlYWRlcnMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNl
SGVhZGVycyB8fCB7fTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlSGVhZGVycyB8fCBb
XTsKICAgICB9LAogCiAgICAgc2V0IHJlc3BvbnNlSGVhZGVycyh4KQpAQCAtNTI2LDggKzUyNCw4
IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrUmVxdWVzdC5wcm90b3R5cGUgPSB7CiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fcmVzcG9uc2VIZWFkZXJzVGV4dCA9PT0gdW5kZWZpbmVkKSB7CiAgICAg
ICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNUZXh0ID0gIkhUVFAvMS4xICIgKyB0aGlzLnN0
YXR1c0NvZGUgKyAiICIgKyB0aGlzLnN0YXR1c1RleHQgKyAiXHJcbiI7Ci0gICAgICAgICAgICBm
b3IgKHZhciBrZXkgaW4gdGhpcy5yZXNwb25zZUhlYWRlcnMpCi0gICAgICAgICAgICAgICAgdGhp
cy5fcmVzcG9uc2VIZWFkZXJzVGV4dCArPSBrZXkgKyAiOiAiICsgdGhpcy5yZXNwb25zZUhlYWRl
cnNba2V5XSArICJcclxuIjsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5y
ZXF1ZXN0SGVhZGVyczsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVy
c1RleHQgKz0gdGhpcy5yZXNwb25zZUhlYWRlcnNbaV0ubmFtZSArICI6ICIgKyB0aGlzLnJlc3Bv
bnNlSGVhZGVyc1tpXS52YWx1ZSArICJcclxuIjsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
dGhpcy5fcmVzcG9uc2VIZWFkZXJzVGV4dDsKICAgICB9LApAQCAtNTU0LDEyICs1NTIsMTAgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtSZXF1ZXN0LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9zb3J0ZWRSZXNwb25zZUhlYWRlcnMgIT09IHVuZGVmaW5lZCkKICAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9zb3J0ZWRSZXNwb25zZUhlYWRlcnM7Ci0KKyAgICAgICAgCiAgICAg
ICAgIHRoaXMuX3NvcnRlZFJlc3BvbnNlSGVhZGVycyA9IFtdOwotICAgICAgICBmb3IgKHZhciBr
ZXkgaW4gdGhpcy5yZXNwb25zZUhlYWRlcnMpCi0gICAgICAgICAgICB0aGlzLl9zb3J0ZWRSZXNw
b25zZUhlYWRlcnMucHVzaCh7aGVhZGVyOiBrZXksIHZhbHVlOiB0aGlzLnJlc3BvbnNlSGVhZGVy
c1trZXldfSk7Ci0gICAgICAgIHRoaXMuX3NvcnRlZFJlc3BvbnNlSGVhZGVycy5zb3J0KGZ1bmN0
aW9uKGEsYikgeyByZXR1cm4gYS5oZWFkZXIubG9jYWxlQ29tcGFyZShiLmhlYWRlcikgfSk7Ci0K
KyAgICAgICAgdGhpcy5fc29ydGVkUmVzcG9uc2VIZWFkZXJzID0gdGhpcy5yZXNwb25zZUhlYWRl
cnMuc2xpY2UoKTsKKyAgICAgICAgdGhpcy5fc29ydGVkUmVzcG9uc2VIZWFkZXJzLnNvcnQoZnVu
Y3Rpb24oYSxiKSB7IHJldHVybiBhLm5hbWUudG9Mb3dlckNhc2UoKS5sb2NhbGVDb21wYXJlKGIu
bmFtZS50b0xvd2VyQ2FzZSgpKSB9KTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRlZFJlc3Bv
bnNlSGVhZGVyczsKICAgICB9LAogCkBAIC02NTEsMTAgKzY0NywxNiBAQCBXZWJJbnNwZWN0b3Iu
TmV0d29ya1JlcXVlc3QucHJvdG90eXBlID0gewogICAgIF9oZWFkZXJWYWx1ZTogZnVuY3Rpb24o
aGVhZGVycywgaGVhZGVyTmFtZSkKICAgICB7CiAgICAgICAgIGhlYWRlck5hbWUgPSBoZWFkZXJO
YW1lLnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgIGZvciAodmFyIGhlYWRlciBpbiBoZWFkZXJzKSB7
Ci0gICAgICAgICAgICBpZiAoaGVhZGVyLnRvTG93ZXJDYXNlKCkgPT09IGhlYWRlck5hbWUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGhlYWRlcnNbaGVhZGVyXTsKKyAgICAgICAgCisgICAgICAg
IHZhciB2YWx1ZXMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoZWFkZXJzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoaGVhZGVyc1tpXS5uYW1lLnRvTG93ZXJDYXNl
KCkgPT09IGhlYWRlck5hbWUpCisgICAgICAgICAgICAgICAgdmFsdWVzLnB1c2goaGVhZGVyc1tp
XS52YWx1ZSk7CiAgICAgICAgIH0KKyAgICAgICAgLy8gU2V0LUNvb2tpZSB2YWx1ZXMgc2hvdWxk
IGJlIHNlcGFyYXRlZCBieSAnXG4nLCBub3QgY29tbWEsIG90aGVyd2lzZSBjb29raWVzIGNvdWxk
IG5vdCBiZSBwYXJzZWQuCisgICAgICAgIGlmIChoZWFkZXJOYW1lID09PSAic2V0LWNvb2tpZSIp
CisgICAgICAgICAgICByZXR1cm4gdmFsdWVzLmpvaW4oIlxuIik7CisgICAgICAgIHJldHVybiB2
YWx1ZXMuam9pbigiLCAiKTsKICAgICB9LAogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1JlcXVlc3RIZWFkZXJzVmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdEhlYWRlcnNWaWV3LmpzCmluZGV4
IDMxMThiMzc2MTQ1NmI1MmE1NzI3NDc1NWFmMzY2MTQxMGM2NjRiNWQuLjc1Y2IwMjQ1ZjBmM2Rk
ZDU0OTlkMmNhYThhNzUzMjk1MmI5ZGM3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdEhlYWRlcnNWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVxdWVzdEhlYWRlcnNWaWV3LmpzCkBAIC0yNjksNyAr
MjY5LDcgQEAgV2ViSW5zcGVjdG9yLlJlcXVlc3RIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgewogICAgICAgICB2YXIgYWRkaXRpb25hbFJvdyA9IG51bGw7CiAgICAgICAgIGlmICh0eXBl
b2YgdGhpcy5fcmVxdWVzdC53ZWJTb2NrZXRSZXF1ZXN0S2V5MyAhPT0gInVuZGVmaW5lZCIpCi0g
ICAgICAgICAgICBhZGRpdGlvbmFsUm93ID0ge2hlYWRlcjogIihLZXkzKSIsIHZhbHVlOiB0aGlz
Ll9yZXF1ZXN0LndlYlNvY2tldFJlcXVlc3RLZXkzfTsKKyAgICAgICAgICAgIGFkZGl0aW9uYWxS
b3cgPSB7bmFtZTogIihLZXkzKSIsIHZhbHVlOiB0aGlzLl9yZXF1ZXN0LndlYlNvY2tldFJlcXVl
c3RLZXkzfTsKICAgICAgICAgaWYgKHRoaXMuX3Nob3dSZXF1ZXN0SGVhZGVyc1RleHQpCiAgICAg
ICAgICAgICB0aGlzLl9yZWZyZXNoSGVhZGVyc1RleHQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJS
ZXF1ZXN0IEhlYWRlcnMiKSwgdGhpcy5fcmVxdWVzdC5zb3J0ZWRSZXF1ZXN0SGVhZGVycywgdGhp
cy5fcmVxdWVzdC5yZXF1ZXN0SGVhZGVyc1RleHQsIHRoaXMuX3JlcXVlc3RIZWFkZXJzVHJlZUVs
ZW1lbnQpOwogICAgICAgICBlbHNlCkBAIC0yODgsNyArMjg4LDcgQEAgV2ViSW5zcGVjdG9yLlJl
cXVlc3RIZWFkZXJzVmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgYWRkaXRp
b25hbFJvdyA9IG51bGw7CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fcmVxdWVzdC53ZWJTb2Nr
ZXRDaGFsbGVuZ2VSZXNwb25zZSAhPT0gInVuZGVmaW5lZCIpCi0gICAgICAgICAgICBhZGRpdGlv
bmFsUm93ID0ge2hlYWRlcjogIihDaGFsbGVuZ2UgUmVzcG9uc2UpIiwgdmFsdWU6IHRoaXMuX3Jl
cXVlc3Qud2ViU29ja2V0Q2hhbGxlbmdlUmVzcG9uc2V9OworICAgICAgICAgICAgYWRkaXRpb25h
bFJvdyA9IHtuYW1lOiAiKENoYWxsZW5nZSBSZXNwb25zZSkiLCB2YWx1ZTogdGhpcy5fcmVxdWVz
dC53ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZX07CiAgICAgICAgIGlmICh0aGlzLl9zaG93UmVz
cG9uc2VIZWFkZXJzVGV4dCkKICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hIZWFkZXJzVGV4dChX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNlIEhlYWRlcnMiKSwgdGhpcy5fcmVxdWVzdC5z
b3J0ZWRSZXNwb25zZUhlYWRlcnMsIHRoaXMuX3JlcXVlc3QucmVzcG9uc2VIZWFkZXJzVGV4dCwg
dGhpcy5fcmVzcG9uc2VIZWFkZXJzVHJlZUVsZW1lbnQpOwogICAgICAgICBlbHNlCkBAIC0zNTQs
MTQgKzM1NCwxNCBAQCBXZWJJbnNwZWN0b3IuUmVxdWVzdEhlYWRlcnNWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LmhpZGRlbiA9ICFsZW5ndGg7CiAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBoZWFk
ZXJUcmVlRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudChudWxsLCBudWxsLCBmYWxzZSk7Ci0gICAg
ICAgICAgICBoZWFkZXJUcmVlRWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihoZWFk
ZXJzW2ldLmhlYWRlciwgaGVhZGVyc1tpXS52YWx1ZSk7CisgICAgICAgICAgICBoZWFkZXJUcmVl
RWxlbWVudC50aXRsZSA9IHRoaXMuX2Zvcm1hdEhlYWRlcihoZWFkZXJzW2ldLm5hbWUsIGhlYWRl
cnNbaV0udmFsdWUpOwogICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQuc2VsZWN0YWJsZSA9
IGZhbHNlOwogICAgICAgICAgICAgaGVhZGVyc1RyZWVFbGVtZW50LmFwcGVuZENoaWxkKGhlYWRl
clRyZWVFbGVtZW50KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhZGRpdGlvbmFsUm93KSB7
CiAgICAgICAgICAgICB2YXIgaGVhZGVyVHJlZUVsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQobnVs
bCwgbnVsbCwgZmFsc2UpOwotICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQudGl0bGUgPSB0
aGlzLl9mb3JtYXRIZWFkZXIoYWRkaXRpb25hbFJvdy5oZWFkZXIsIGFkZGl0aW9uYWxSb3cudmFs
dWUpOworICAgICAgICAgICAgaGVhZGVyVHJlZUVsZW1lbnQudGl0bGUgPSB0aGlzLl9mb3JtYXRI
ZWFkZXIoYWRkaXRpb25hbFJvdy5uYW1lLCBhZGRpdGlvbmFsUm93LnZhbHVlKTsKICAgICAgICAg
ICAgIGhlYWRlclRyZWVFbGVtZW50LnNlbGVjdGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgIGhl
YWRlcnNUcmVlRWxlbWVudC5hcHBlbmRDaGlsZChoZWFkZXJUcmVlRWxlbWVudCk7CiAgICAgICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViSFRUUExvYWRJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViSFRUUExvYWRJbmZvLmNwcAppbmRleCBkN2Q1N2YyMTIxMDRmZTk5MDc1NjYzMjUw
ZDQ0MjNiMWU2MjZiNjI3Li43NzYyZmQ4YzQ5ZmRhMjQyYTM3MDI2YzZkZmU2NzdmMjMwNTBlMjlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
YkhUVFBMb2FkSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJIVFRQTG9hZEluZm8uY3BwCkBAIC0xMDQsOCArMTA0LDkgQEAgdm9pZCBXZWJI
VFRQTG9hZEluZm86OnNldEVuY29kZWREYXRhTGVuZ3RoKGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxl
bmd0aCkKIHN0YXRpYyB2b2lkIGFkZEhlYWRlcihIVFRQSGVhZGVyTWFwKiBtYXAsIGNvbnN0IFdl
YlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBIVFRQSGVhZGVy
TWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbWFwLT5hZGQobmFtZSwgdmFsdWUpOworICAgIC8vIEl0
IGlzIGltcG9ydGFudCB0aGF0IHZhbHVlcyBhcmUgc2VwYXJhdGVkIGJ5ICdcbicsIG5vdCBjb21t
YSwgb3RoZXJ3aXNlIFNldC1Db29raWUgaGVhZGVyIGlzIG5vdCBwYXJzZWFibGUuCiAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT5zZWNvbmQgKz0g
IiwgIiArIFN0cmluZyh2YWx1ZSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+c2Vjb25kICs9
ICJcbiIgKyBTdHJpbmcodmFsdWUpOwogfQogCiB2b2lkIFdlYkhUVFBMb2FkSW5mbzo6YWRkUmVx
dWVzdEhlYWRlcihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgdmFsdWUp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggOWFmNTAzOTJkMmE5ZTAyZDgyNTlkOTNkNThkODQ0ZGRjNDVlZTdlOC4uMmY2YjBl
Zjc3NmEwNmM4NzRkYTI4YTI1YzA1ZjU4NmNkMzQwOWIwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEyLTA1LTE0ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlcXVlc3QgLyByZXNwb25zZSBoZWFkZXJzIHNob3VsZCBi
ZSBzdG9yZWQgaW4gbmFtZS12YWx1ZSBwYWlycyBhcnJheSwgbm90IGEgbWFwIG9uIGZyb250LWVu
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MzU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1oZWFkZXJzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXItaGVhZGVycy5odG1s
OgorCiAyMDEyLTA1LTE0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZywgdW5za2lwIGEgbm93IHBhc3Npbmcg
dGVzdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlLWhhci1jb252ZXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZS1oYXItY29udmVyc2lvbi5odG1sCmluZGV4IDc1MzUzYjg5ZDBjMTQ1YWZhOTJl
ZjE3ZjY0NmYyMDUwMWE1MmJlZGEuLmUyN2Y3ZTgwMTI2MDQ4YjM5MDIxZWU5Nzg5NWI1YjdiYzQz
NjYxNTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlLWhhci1jb252ZXJzaW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvcmVzb3VyY2UtaGFyLWNvbnZlcnNpb24uaHRtbApAQCAtMzYsMTMgKzM2LDEzIEBAIHZh
ciB0ZXN0ID0gZnVuY3Rpb24oKQogCiAgICAgICAgIGZ1bmN0aW9uIGFkZENvb2tpZUhlYWRlcnNU
b1JlcXVlc3QocmVxdWVzdCkKICAgICAgICAgewotICAgICAgICAgICAgcmVxdWVzdC5yZXF1ZXN0
SGVhZGVycyA9IHsKLSAgICAgICAgICAgICAgICAiQ29va2llIjogImE9YjsgJFBhdGg9L3BhdGg7
ICREb21haW49ZXhhbXBsZS5jb207IGExPWIxXG5jMT1kMSIKLSAgICAgICAgICAgIH07CisgICAg
ICAgICAgICByZXF1ZXN0LnJlcXVlc3RIZWFkZXJzID0gWworICAgICAgICAgICAgICAgIHsgbmFt
ZTogIkNvb2tpZSIsIHZhbHVlOiAiYT1iOyAkUGF0aD0vcGF0aDsgJERvbWFpbj1leGFtcGxlLmNv
bTsgYTE9YjFcbmMxPWQxIiB9CisgICAgICAgICAgICBdOwogCi0gICAgICAgICAgICByZXF1ZXN0
LnJlc3BvbnNlSGVhZGVycyA9IHsKLSAgICAgICAgICAgICAgICAiU2V0LUNvb2tpZSI6ICJ4PXk7
IFBhdGg9L3BhdGg7IERvbWFpbj1leGFtcGxlLmNvbTsgRGlzY2FyZDsgaHR0cE9ubHk7IFNlY3Vy
ZTsgVmVyc2lvbj0xXG54MT15MVxuejI9eTIiCi0gICAgICAgICAgICB9OworICAgICAgICAgICAg
cmVxdWVzdC5yZXNwb25zZUhlYWRlcnMgPSBbCisgICAgICAgICAgICAgICAgeyBuYW1lOiAiU2V0
LUNvb2tpZSIsIHZhbHVlOiAieD15OyBQYXRoPS9wYXRoOyBEb21haW49ZXhhbXBsZS5jb207IERp
c2NhcmQ7IGh0dHBPbmx5OyBTZWN1cmU7IFZlcnNpb249MVxueDE9eTFcbnoyPXkyIiB9CisgICAg
ICAgICAgICBdOwogICAgICAgICB9CiAKICAgICAgICAgYWRkQ29va2llSGVhZGVyc1RvUmVxdWVz
dChmaW5kUmVxdWVzdEJ5VVJMKC9pbnNwZWN0b3ItdGVzdFwuanMkLykpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFyLWhlYWRlcnMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2UtaGFy
LWhlYWRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IGQ2NDk2MWFiMmY0MzFmZjcyNDUxNWFlNWYxZmRk
Njg0MTY4YzU4YjcuLmE4YzJiYjkwNzE2N2Y1N2QwYzRkYjkzZGNjNDhhY2JkYTZhNTA2NjQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlLWhhci1o
ZWFkZXJzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZS1oYXItaGVhZGVycy1leHBlY3RlZC50eHQKQEAgLTIsMTYgKzIsMjIgQEAgVGVz
dHMgdGhlIG5vbmRldGVybWluaXN0aWMgYml0cyBvZiBIQVIgY29udmVyc2lvbiB2aWEgdGhlIG1h
Z2ljIG9mIGhhcmQtY29kZWQgdmEKIAogUmVzb3VyY2U6ewogICAgIHJlcXVlc3QgOiB7Ci0gICAg
ICAgIGhlYWRlcnMgOiB7Ci0gICAgICAgICAgICBSZXF1ZXN0IDogInJlcXVlc3QtdmFsdWUiCi0g
ICAgICAgIH0KKyAgICAgICAgaGVhZGVycyA6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBuYW1lIDogIlJlcXVlc3QiCisgICAgICAgICAgICAgICAgdmFsdWUgOiAicmVxdWVzdC12
YWx1ZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgXQogICAgICAgICBoZWFkZXJzVGV4dCA6ICJH
RVQgaHR0cDovL2V4YW1wbGUuY29tL2luc3BlY3Rvci10ZXN0LmpzIEhUVFAvMS4xXHJcblJlcXVl
c3Q6IGhlYWRlcnMtdGV4dCIKICAgICAgICAgaGVhZGVyc1NpemUgOiA3MgogICAgIH0KICAgICBy
ZXNwb25zZSA6IHsKLSAgICAgICAgaGVhZGVycyA6IHsKLSAgICAgICAgICAgIFJlc3BvbnNlIDog
InJlc3BvbnNlLXZhbHVlIgotICAgICAgICB9CisgICAgICAgIGhlYWRlcnMgOiBbCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgbmFtZSA6ICJSZXNwb25zZSIKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA6ICJyZXNwb25zZS12YWx1ZSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgXQogICAg
ICAgICBoZWFkZXJzVGV4dCA6ICJIVFRQLzEuMSAyMDAgT0tcclxuUmVzcG9uc2U6IGhlYWRlcnMt
dGV4dCIKICAgICAgICAgaGVhZGVyc1NpemUgOiAzOQogICAgICAgICByZXNvdXJjZVNpemUgOiAx
MDAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJj
ZS1oYXItaGVhZGVycy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2UtaGFyLWhlYWRlcnMuaHRtbAppbmRleCA2ZGJkYTE1NzVjOGEzY2U3OGQ1ZmViYzk0ZDM3
ODUwODA1NDU4NzNkLi41NDlkYjY5NGY0NWRmMzM5NGI0N2QzYTZhZjViMWE1MTVmMmU0MWM0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZS1oYXIt
aGVhZGVycy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291
cmNlLWhhci1oZWFkZXJzLmh0bWwKQEAgLTE0LDE0ICsxNCwxNCBAQCB2YXIgdGVzdCA9IGZ1bmN0
aW9uKCkKIAogICAgIGZ1bmN0aW9uIHNldFJlcXVlc3RWYWx1ZXMocmVxdWVzdCkKICAgICB7Ci0g
ICAgICAgIHJlcXVlc3QucmVxdWVzdEhlYWRlcnMgPSB7Ci0gICAgICAgICAgICAiUmVxdWVzdCI6
ICJyZXF1ZXN0LXZhbHVlIgotICAgICAgICB9OworICAgICAgICByZXF1ZXN0LnJlcXVlc3RIZWFk
ZXJzID0gWworICAgICAgICAgICAgeyBuYW1lOiAiUmVxdWVzdCIsIHZhbHVlOiAicmVxdWVzdC12
YWx1ZSIgfQorICAgICAgICBdOwogICAgICAgICByZXF1ZXN0LnJlcXVlc3RIZWFkZXJzVGV4dCA9
ICJHRVQgaHR0cDovL2V4YW1wbGUuY29tL2luc3BlY3Rvci10ZXN0LmpzIEhUVFAvMS4xXHJcblJl
cXVlc3Q6IGhlYWRlcnMtdGV4dCI7CiAKLSAgICAgICAgcmVxdWVzdC5yZXNwb25zZUhlYWRlcnMg
PSB7Ci0gICAgICAgICAgICAiUmVzcG9uc2UiOiAicmVzcG9uc2UtdmFsdWUiCi0gICAgICAgIH07
CisgICAgICAgIHJlcXVlc3QucmVzcG9uc2VIZWFkZXJzID0gWworICAgICAgICAgICAgeyBuYW1l
OiAiUmVzcG9uc2UiLCB2YWx1ZTogInJlc3BvbnNlLXZhbHVlIiB9CisgICAgICAgIF07CiAgICAg
ICAgIHJlcXVlc3QucmVzcG9uc2VIZWFkZXJzVGV4dCA9ICJIVFRQLzEuMSAyMDAgT0tcclxuUmVz
cG9uc2U6IGhlYWRlcnMtdGV4dCI7CiAKICAgICAgICAgcmVxdWVzdC5kb2N1bWVudFVSTCA9ICJo
dHRwOi8vZXhhbXBsZS5jb20vaW5zcGVjdG9yLXRlc3QuanMiOwo=
</data>
<flag name="review"
          id="147884"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>