<?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>138539</bug_id>
          
          <creation_ts>2014-11-08 18:15:22 -0800</creation_ts>
          <short_desc>Fix various cases of incorrect cross-thread capture of non-thread-safe RefCounted</short_desc>
          <delta_ts>2014-11-09 16:08:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1047339</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-08 18:15:22 -0800</bug_when>
    <thetext>Fix various cases of incorrect cross-thread capture of non-thread-safe RefCounted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047340</commentid>
    <comment_count>1</comment_count>
      <attachid>241243</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-08 18:19:51 -0800</bug_when>
    <thetext>Created attachment 241243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047341</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-08 18:20:51 -0800</bug_when>
    <thetext>This covers all the places I could find trying to use isolatedCopy to capture something and pass it to a new thread, but dealing with the last deref on the main thread incorrectly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047342</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-08 18:23:15 -0800</bug_when>
    <thetext>Attachment 241243 did not pass style-queue:


ERROR: Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:332:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047345</commentid>
    <comment_count>4</comment_count>
      <attachid>241243</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-08 18:54:53 -0800</bug_when>
    <thetext>Comment on attachment 241243
Patch

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

&gt; Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:421
&gt; +    StringCapture capturedURL(url.string());

This idiom makes URL forget that it was invalid - we get a string, and then push it back into a URL without checks.

I think that we need to explicitly check for url being valid here and everywhere else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047347</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-08 19:11:00 -0800</bug_when>
    <thetext>Or better yet, introduce a URLCapture class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047357</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-08 20:36:06 -0800</bug_when>
    <thetext>I’ll add URLCapture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047360</commentid>
    <comment_count>7</comment_count>
      <attachid>241247</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-08 21:00:05 -0800</bug_when>
    <thetext>Created attachment 241247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047361</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-08 21:01:19 -0800</bug_when>
    <thetext>Attachment 241247 did not pass style-queue:


ERROR: Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.cpp:332:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047366</commentid>
    <comment_count>9</comment_count>
      <attachid>241247</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-08 21:37:11 -0800</bug_when>
    <thetext>Comment on attachment 241247
Patch

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

Very nice!

&gt; Source/WebCore/platform/URL.h:269
&gt; +    URL releaseURL();

This function ended up unused, would you still like to keep it?

&gt; Source/WebCore/platform/URL.h:272
&gt; +    void operator=(const URLCapture&amp;) = delete;

It is unusual to have a copy constructor, but delete operator=. I&apos;m not sure if that&apos;s legitimate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047390</commentid>
    <comment_count>10</comment_count>
      <attachid>241247</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-09 09:18:16 -0800</bug_when>
    <thetext>Comment on attachment 241247
Patch

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

&gt;&gt; Source/WebCore/platform/URL.h:269
&gt;&gt; +    URL releaseURL();
&gt; 
&gt; This function ended up unused, would you still like to keep it?

I simply copied StringCapture. I think the two should stay in sync, but I am not sure if either needs this. I think we should have either url() or releaseURL(), but I don’t think we need both.

&gt;&gt; Source/WebCore/platform/URL.h:272
&gt;&gt; +    void operator=(const URLCapture&amp;) = delete;
&gt; 
&gt; It is unusual to have a copy constructor, but delete operator=. I&apos;m not sure if that&apos;s legitimate.

I simply copied StringCapture. I think the two should stay in sync.

I don’t feel strongly about this design issue; it’s a little arbitrary to not have operator=, but seems OK to me. Note that the only reason we have a copy constructor in this class is because that’s what’s used to capture. If we could make it legal only for capture and make any other copying illegal, I think we would do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047393</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-09 09:25:24 -0800</bug_when>
    <thetext>Committed r175792: &lt;http://trac.webkit.org/changeset/175792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047418</commentid>
    <comment_count>12</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-11-09 15:15:03 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I don’t feel strongly about this design issue; it’s a little arbitrary to
&gt; not have operator=, but seems OK to me. Note that the only reason we have a
&gt; copy constructor in this class is because that’s what’s used to capture. If
&gt; we could make it legal only for capture and make any other copying illegal,
&gt; I think we would do that.

Right, I tried to make it harder to use this class for anything else beyond capturing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047429</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-11-09 16:08:11 -0800</bug_when>
    <thetext>I was thinking about the rule of three &lt;http://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming)&gt;.

I certainly don&apos;t feel strongly about this at all. If there is anything to change here, it&apos;s probably to delete operator=(URLCapture&amp;&amp;) as well.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241243</attachid>
            <date>2014-11-08 18:19:51 -0800</date>
            <delta_ts>2014-11-08 21:00:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138539-20141108181950.patch</filename>
            <type>text/plain</type>
            <size>27435</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBhNTkxMmYxZWFkNWI4
Mzc4MDY2MjFlZmEyOTRkMDc1YjYwZjJlMC4uZDcwYzcwN2FjNzNjMjc0MmVlYWEwYzRiZjE5YTc4
NDNiM2U2NjI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU4IEBACiAyMDE0LTExLTA4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBGaXggdmFyaW91cyBjYXNlcyBv
ZiBpbmNvcnJlY3QgY3Jvc3MtdGhyZWFkIGNhcHR1cmUgb2Ygbm9uLXRocmVhZC1zYWZlIFJlZkNv
dW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
ODUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpkaWRDb25uZWN0KTogVXNlIFN0cmluZ0NhcHR1cmUKKyAgICAgICAgaW5zdGVhZCBvZiBpc29s
YXRlZENvcHksIHRvIGF2b2lkIGEgcHJvYmxlbSB3aGVyZSB0aGUgb3JpZ2luYWwgdGhyZWFkIGRv
ZXMgaXRzIGRlcmVmCisgICAgICAgIGFmdGVyIHBhc3NpbmcgdGhlIHN0cmluZyB0byB0aGUgb3Ro
ZXIgdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OmluaXRpYWxpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNvbm5lY3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6OmNsb3NlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpmYWlsKTogRGl0dG8uCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZENvbnNv
bGVNZXNzYWdlKTogUGFzcyBhIFN0cmluZ0NhcHR1cmUgd2hlbiBjcmVhdGluZworICAgICAgICBB
ZGRDb25zb2xlTWVzc2FnZVRhc2suIFNhbWUgcmVhc29uIGFzIGFib3ZlLCBidXQgaW4gYSBkaWZm
ZXJlbnQgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRNZXNzYWdlKTog
RGl0dG8uCisKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOiBDaGFuZ2Vk
IEFkZENvbnNvbGVNZXNzYWdlVGFzayB0byB0YWtlIGFuZAorICAgICAgICBjYXB0dXJlIGEgU3Ry
aW5nQ2FwdHVyZSByYXRoZXIgdGhhbiBhIFN0cmluZywgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBh
Ym92ZS4KKworICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6
Ok1haW5UaHJlYWRCcmlkZ2UpOiBVc2UgU3RyaW5nQ2FwdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWwpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRC
cmlkZ2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2spOiBEaXR0by4KKyAgICAgICAgKiB3b3Jr
ZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QpOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlclByb3h5Ojpwb3N0Q29uc29sZU1lc3NhZ2VU
b1dvcmtlck9iamVjdCk6IERpdHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVN
ZXNzYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YWRk
TWVzc2FnZSk6IERpdHRvLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2Fn
aW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6c2VuZE1lc3NhZ2VUb0luc3BlY3Rv
cik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RN
ZXNzYWdlVG9QYWdlSW5zcGVjdG9yKTogRGl0dG8uCisKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
clJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cG9zdFRhc2tB
bmRUZXJtaW5hdGUpOiBNYWtlIGEgVGFzayB3aXRoIG1ha2VfdW5pcXVlCisgICAgICAgIHJhdGhl
ciB0aGFuIHdpdGggVGFzazo6Y3JlYXRlLiBSZW1vdmVkIGFuIGV4dHJhIGlzb2xhdGVkQ29weSwg
dW5uZWVkZWQgYmVjYXVzZQorICAgICAgICB0aGUgVGFzayBjb25zdHJ1Y3RvciBhbHJlYWR5IGRv
ZXMgYW4gaXNvbGF0ZWRDb3B5LgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyUnVuTG9vcDo6cG9z
dFRhc2tGb3JNb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJSdW5Mb29wOjpU
YXNrOjpjcmVhdGUpOiBEZWxldGVkLgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJSdW5Mb29w
Lmg6IFJlbW92ZWQgdW5uZWVkZWQgY3JlYXRlIGZ1bmN0aW9uIGFuZCBleHBsaWNpdAorICAgICAg
ICBwdWJsaWMgZW1wdHkgZGVzdHJ1Y3Rvci4KKworMjAxNC0xMS0wOCAgRGFyaW4gQWRsZXIgIDxk
YXJpbkBhcHBsZS5jb20+CisKICAgICAgICAgUmVwbGFjZSBGaWxlVGhyZWFkIGNsYXNzIHdpdGgg
YSBzaW5nbGUgZnVuY3Rpb24KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzODI4MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcAppbmRleCBlYjMxNWFhMzhlZWFjMmU0ZWU3ODlkMDA3OWRlNDUwY2IxYTZlODNiLi40OWM1
Yzk0OWJkYjFlMWIzODA2YTBlNTE5NTQ1ZGRkYTg1Yzk5NWJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTI2NiwxMiArMjY2LDEyIEBAIHZvaWQgV29y
a2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENvbm5lY3QoKQogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRX
cmFwcGVyOwotICAgIFN0cmluZyBzdWJwcm90b2NvbENvcHkgPSBtX21haW5XZWJTb2NrZXRDaGFu
bmVsLT5zdWJwcm90b2NvbCgpLmlzb2xhdGVkQ29weSgpOwotICAgIFN0cmluZyBleHRlbnNpb25z
Q29weSA9IG1fbWFpbldlYlNvY2tldENoYW5uZWwtPmV4dGVuc2lvbnMoKS5pc29sYXRlZENvcHko
KTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
W3dvcmtlckNsaWVudFdyYXBwZXIsIHN1YnByb3RvY29sQ29weSwgZXh0ZW5zaW9uc0NvcHldIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0
dXJlZFN1YnByb3RvY29sKG1fbWFpbldlYlNvY2tldENoYW5uZWwtPnN1YnByb3RvY29sKCkpOwor
ICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRFeHRlbnNpb25zKG1fbWFpbldlYlNvY2tldENoYW5u
ZWwtPmV4dGVuc2lvbnMoKSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dv
cmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyLCBjYXB0dXJlZFN1YnByb3RvY29s
LCBjYXB0dXJlZEV4dGVuc2lvbnNdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNj
b3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRTdWJwcm90b2NvbChzdWJw
cm90b2NvbENvcHkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5zZXRFeHRlbnNpb25z
KGV4dGVuc2lvbnNDb3B5KTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0U3VicHJv
dG9jb2woY2FwdHVyZWRTdWJwcm90b2NvbC5zdHJpbmcoKSk7CisgICAgICAgIHdvcmtlckNsaWVu
dFdyYXBwZXItPnNldEV4dGVuc2lvbnMoY2FwdHVyZWRFeHRlbnNpb25zLnN0cmluZygpKTsKICAg
ICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ29ubmVjdCgpOwogICAgIH0sIG1fdGFza01v
ZGUpOwogfQpAQCAtMjgxLDEwICsyODEsMTAgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6UGVlcjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXMKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xp
ZW50V3JhcHBlcjsKLSAgICBTdHJpbmcgbWVzc2FnZUNvcHkgPSBtZXNzYWdlLmlzb2xhdGVkQ29w
eSgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29w
ZShbd29ya2VyQ2xpZW50V3JhcHBlciwgbWVzc2FnZUNvcHldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZE1lc3NhZ2UobWVzc2Fn
ZSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3Bl
KFt3b3JrZXJDbGllbnRXcmFwcGVyLCBjYXB0dXJlZE1lc3NhZ2VdIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4
dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5k
aWRSZWNlaXZlTWVzc2FnZShtZXNzYWdlQ29weSk7CisgICAgICAgIHdvcmtlckNsaWVudFdyYXBw
ZXItPmRpZFJlY2VpdmVNZXNzYWdlKGNhcHR1cmVkTWVzc2FnZS5zdHJpbmcoKSk7CiAgICAgfSwg
bV90YXNrTW9kZSk7CiB9CiAKQEAgLTMyNywxMSArMzI3LDExIEBAIHZvaWQgV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlBlZXI6OmRpZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5k
bGVkQnVmCiAgICAgbV9tYWluV2ViU29ja2V0Q2hhbm5lbCA9IDA7CiAKICAgICBSZWZQdHI8VGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVy
ID0gbV93b3JrZXJDbGllbnRXcmFwcGVyOwotICAgIFN0cmluZyByZWFzb25Db3B5ID0gcmVhc29u
Lmlzb2xhdGVkQ29weSgpOworICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRSZWFzb24ocmVhc29u
KTsKICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
Ci0gICAgICAgIFt3b3JrZXJDbGllbnRXcmFwcGVyLCB1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwg
Y2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNvbkNvcHldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIFt3b3JrZXJDbGllbnRXcmFwcGVyLCB1
bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUs
IGNhcHR1cmVkUmVhc29uXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAg
ICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2Nv
cGUoKSk7Ci0gICAgICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRDbG9zZSh1bmhhbmRs
ZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBsZXRpb24sIGNvZGUsIHJlYXNv
bkNvcHkpOworICAgICAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkQ2xvc2UodW5oYW5k
bGVkQnVmZmVyZWRBbW91bnQsIGNsb3NpbmdIYW5kc2hha2VDb21wbGV0aW9uLCBjb2RlLCBjYXB0
dXJlZFJlYXNvbi5zdHJpbmcoKSk7CiAgICAgICAgIH0sIG1fdGFza01vZGUpOwogfQogCkBAIC0z
OTksOSArMzk5LDkgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJp
ZGdlOjppbml0aWFsaXplKCkKIAogICAgIFdvcmtlckxvYWRlclByb3h5KiBsb2FkZXJQcm94eSA9
ICZtX2xvYWRlclByb3h5OwogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7
Ci0gICAgU3RyaW5nIHRhc2tNb2RlQ29weSA9IG1fdGFza01vZGUuaXNvbGF0ZWRDb3B5KCk7Ci0g
ICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtsb2FkZXJQcm94eSwgd29ya2VyQ2xp
ZW50V3JhcHBlciwgdGFza01vZGVDb3B5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgewotICAgICAgICBtYWluVGhyZWFkSW5pdGlhbGl6ZShjb250ZXh0LCBsb2FkZXJQcm94eSwg
d29ya2VyQ2xpZW50V3JhcHBlciwgdGFza01vZGVDb3B5KTsKKyAgICBTdHJpbmdDYXB0dXJlIGNh
cHR1cmVkVGFza01vZGUobV90YXNrTW9kZSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1Rv
TG9hZGVyKFtsb2FkZXJQcm94eSwgd29ya2VyQ2xpZW50V3JhcHBlciwgY2FwdHVyZWRUYXNrTW9k
ZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgbWFpblRocmVh
ZEluaXRpYWxpemUoY29udGV4dCwgbG9hZGVyUHJveHksIHdvcmtlckNsaWVudFdyYXBwZXIsIGNh
cHR1cmVkVGFza01vZGUuc3RyaW5nKCkpOwogICAgIH0pOwogICAgIHdhaXRGb3JNZXRob2RDb21w
bGV0aW9uKCk7CiAKQEAgLTQxOCwxNCArNDE4LDE0IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZTo6Y29ubmVjdChjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
CiAgICAgICAgIHJldHVybjsKIAogICAgIFBlZXIqIHBlZXIgPSBtX3BlZXI7Ci0gICAgVVJMIHVy
bENvcHkgPSB1cmwuY29weSgpOwotICAgIFN0cmluZyBwcm90b2NvbENvcHkgPSBwcm90b2NvbC5p
c29sYXRlZENvcHkoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3BlZXIs
IHVybENvcHksIHByb3RvY29sQ29weV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
IHsKKyAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkVVJMKHVybC5zdHJpbmcoKSk7CisgICAgU3Ry
aW5nQ2FwdHVyZSBjYXB0dXJlZFByb3RvY29sKHByb3RvY29sKTsKKyAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoW3BlZXIsIGNhcHR1cmVkVVJMLCBjYXB0dXJlZFByb3RvY29sXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNEb2N1
bWVudCgpKTsKICAgICAgICAgQVNTRVJUKHBlZXIpOwogCi0gICAgICAgIHBlZXItPmNvbm5lY3Qo
dXJsQ29weSwgcHJvdG9jb2xDb3B5KTsKKyAgICAgICAgcGVlci0+Y29ubmVjdChVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBjYXB0dXJlZFVSTC5zdHJpbmcoKSksIGNhcHR1cmVkUHJvdG9jb2wuc3RyaW5n
KCkpOwogICAgIH0pOwogfQogCkBAIC00MzYsMTMgKzQzNiwxMyBAQCBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6
QnJpZGdlOgogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwogCiAgICAgUGVlciogcGVlciA9
IG1fcGVlcjsKLSAgICBTdHJpbmcgbWVzc2FnZUNvcHkgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgp
OwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgbWVzc2FnZUNvcHld
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgU3RyaW5nQ2FwdHVyZSBj
YXB0dXJlZE1lc3NhZ2UobWVzc2FnZSk7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9h
ZGVyKFtwZWVyLCBjYXB0dXJlZE1lc3NhZ2VdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVl
cik7CiAKLSAgICAgICAgcGVlci0+c2VuZChtZXNzYWdlQ29weSk7CisgICAgICAgIHBlZXItPnNl
bmQoY2FwdHVyZWRNZXNzYWdlLnN0cmluZygpKTsKICAgICB9KTsKIAogICAgIFJlZjxCcmlkZ2U+
IHByb3RlY3QoKnRoaXMpOwpAQCAtNDkwLDE2ICs0OTAsMTUgQEAgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJy
aWRnZToKICAgICBzZXRNZXRob2ROb3RDb21wbGV0ZWQoKTsKIAogICAgIFBlZXIqIHBlZXIgPSBt
X3BlZXI7Ci0gICAgVVJMIHVybENvcHkgPSBiaW5hcnlEYXRhLnVybCgpLmNvcHkoKTsKLSAgICBT
dHJpbmcgdHlwZUNvcHkgPSBiaW5hcnlEYXRhLnR5cGUoKS5pc29sYXRlZENvcHkoKTsKKyAgICBT
dHJpbmdDYXB0dXJlIGNhcHR1cmVkVVJMKGJpbmFyeURhdGEudXJsKCkuc3RyaW5nKCkpOworICAg
IFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRUeXBlKGJpbmFyeURhdGEudHlwZSgpKTsKICAgICBsb25n
IGxvbmcgc2l6ZSA9IGJpbmFyeURhdGEuc2l6ZSgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihbcGVlciwgdXJsQ29weSwgdHlwZUNvcHksIHNpemVdIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVy
KFtwZWVyLCBjYXB0dXJlZFVSTCwgY2FwdHVyZWRUeXBlLCBzaXplXSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQuaXNEb2N1bWVudCgpKTsKICAgICAg
ICAgQVNTRVJUKHBlZXIpOwogCi0gICAgICAgIFJlZlB0cjxCbG9iPiBibG9iID0gQmxvYjo6ZGVz
ZXJpYWxpemUodXJsQ29weSwgdHlwZUNvcHksIHNpemUpOwotICAgICAgICBwZWVyLT5zZW5kKCpi
bG9iKTsKKyAgICAgICAgcGVlci0+c2VuZCgqQmxvYjo6ZGVzZXJpYWxpemUoVVJMKFBhcnNlZFVS
TFN0cmluZywgY2FwdHVyZWRVUkwuc3RyaW5nKCkpLCBjYXB0dXJlZFR5cGUuc3RyaW5nKCksIHNp
emUpKTsKICAgICB9KTsKIAogICAgIFJlZjxCcmlkZ2U+IHByb3RlY3QoKnRoaXMpOwpAQCAtNTM5
LDEzICs1MzgsMTMgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJp
ZGdlOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWEKICAgICAgICAgcmV0dXJuOwog
CiAgICAgUGVlciogcGVlciA9IG1fcGVlcjsKLSAgICBTdHJpbmcgcmVhc29uQ29weSA9IHJlYXNv
bi5pc29sYXRlZENvcHkoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3Bl
ZXIsIGNvZGUsIHJlYXNvbkNvcHldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZFJlYXNvbihyZWFzb24pOworICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY29kZSwgY2FwdHVyZWRSZWFzb25dIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50
KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAgICAgICAgcGVlci0+Y2xvc2UoY29kZSwg
cmVhc29uQ29weSk7CisgICAgICAgIHBlZXItPmNsb3NlKGNvZGUsIGNhcHR1cmVkUmVhc29uLnN0
cmluZygpKTsKICAgICB9KTsKIH0KIApAQCAtNTU1LDEzICs1NTQsMTMgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVh
c29uKQogICAgICAgICByZXR1cm47CiAKICAgICBQZWVyKiBwZWVyID0gbV9wZWVyOwotICAgIFN0
cmluZyByZWFzb25Db3B5ID0gcmVhc29uLmlzb2xhdGVkQ29weSgpOwotICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgcmVhc29uQ29weV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKKyAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkUmVhc29uKHJlYXNv
bik7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyLCBjYXB0dXJlZFJl
YXNvbl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChwZWVyKTsKIAotICAgICAgICBwZWVyLT5m
YWlsKHJlYXNvbkNvcHkpOworICAgICAgICBwZWVyLT5mYWlsKGNhcHR1cmVkUmVhc29uLnN0cmlu
ZygpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZDc1Zjc1NTU0
YTM1MjRkNzA3OTg5MDIyZWY1NWU1ODM5NjY2OGExZC4uMjgyMjE1YzhmYzA2MWY0NDcyMTY4MWRh
NTI2Y2Y2YTg1NDdmZTdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00OTc5LDcgKzQ5
NzksNyBAQCB2b2lkIERvY3VtZW50OjpwYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihjb25z
dCBTdHJpbmcmIGRuc1ByZWZldGNoQ29udHJvbCkKIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBp
ZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNz
YWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlLmlzb2xhdGVkQ29weSgpKSk7CisgICAgICAg
IHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBTdHJpbmdDYXB0
dXJlKG1lc3NhZ2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ5OTAsNyArNDk5
MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0CiB2b2lkIERvY3VtZW50OjphZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVu
c2lnbmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBw
b3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwor
ICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgU3Ry
aW5nQ2FwdHVyZShtZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCA1MGNlODRiMjI4NmNl
NTI4NDNjNTE3YzRiNDEyYjI1YzNlNDQ1YjdjLi5iN2JhYmYyOWRkMWI2MThjYjc1ZDhmNmYyYzUz
MTMxMjkwMDQwNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKQEAgLTE4NCw5ICsxODQsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgY2xhc3Mg
QWRkQ29uc29sZU1lc3NhZ2VUYXNrIDogcHVibGljIFRhc2sgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQWRkQ29uc29sZU1lc3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICAgICAgICAgIDogVGFzayhbc291
cmNlLCBsZXZlbCwgbWVzc2FnZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWws
IG1lc3NhZ2UpOworICAgICAgICBBZGRDb25zb2xlTWVzc2FnZVRhc2soTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nQ2FwdHVyZSYgbWVzc2FnZSkK
KyAgICAgICAgICAgIDogVGFzayhbc291cmNlLCBsZXZlbCwgbWVzc2FnZV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGNvbnRleHQuYWRkQ29uc29s
ZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZS5zdHJpbmcoKSk7CiAgICAgICAgICAgICB9
KQogICAgICAgICB7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAzMGNmNmI3OTc5Zjc4NzcwMzdhYzFiMGQyNjdh
Y2U1NGIxMTgwNTI0Li4zYjc1MjIwZWEzNTk2MDE4NTEyNGE1NmYzOTBkODkyMjQ0NTJjZjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3Bw
CkBAIC05MiwxMyArOTIsMTMgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJy
aWRnZTo6TWFpblRocmVhZEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGUKICAgICBBU1NFUlQo
bV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpKTsKIAogICAgIENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXF1ZXN0RGF0YSogcmVxdWVzdERhdGEgPSByZXF1ZXN0LmNvcHlEYXRhKCkubGVha1B0cigpOwot
ICAgIFN0cmluZyBvdXRnb2luZ1JlZmVycmVyQ29weSA9IG91dGdvaW5nUmVmZXJyZXIuaXNvbGF0
ZWRDb3B5KCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFt0aGlzLCByZXF1
ZXN0RGF0YSwgb3B0aW9ucywgb3V0Z29pbmdSZWZlcnJlckNvcHldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZE91dGdvaW5nUmVm
ZXJyZXIob3V0Z29pbmdSZWZlcnJlcik7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9h
ZGVyKFt0aGlzLCByZXF1ZXN0RGF0YSwgb3B0aW9ucywgY2FwdHVyZWRPdXRnb2luZ1JlZmVycmVy
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAgICAgICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3Vt
ZW50Pihjb250ZXh0KTsKIAogICAgICAgICBPd25QdHI8UmVzb3VyY2VSZXF1ZXN0PiByZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0OjphZG9wdChhZG9wdFB0cihyZXF1ZXN0RGF0YSkpOwotICAgICAg
ICByZXF1ZXN0LT5zZXRIVFRQUmVmZXJyZXIob3V0Z29pbmdSZWZlcnJlckNvcHkpOworICAgICAg
ICByZXF1ZXN0LT5zZXRIVFRQUmVmZXJyZXIoY2FwdHVyZWRPdXRnb2luZ1JlZmVycmVyLnN0cmlu
ZygpKTsKIAogICAgICAgICAvLyBGSVhNRTogSWYgdGhlIGEgc2l0ZSByZXF1ZXN0cyBhIGxvY2Fs
IHJlc291cmNlLCB0aGVuIHRoaXMgd2lsbCByZXR1cm4gYSBub24temVybyB2YWx1ZSBidXQgdGhl
IHN5bmMgcGF0aAogICAgICAgICAvLyB3aWxsIHJldHVybiBhIDAgdmFsdWUuIEVpdGhlciB0aGlz
IHNob3VsZCByZXR1cm4gMCBvciB0aGUgb3RoZXIgY29kZSBwYXRoIHNob3VsZCBkbyBhIGNhbGxi
YWNrIHdpdGgKQEAgLTE5MywyMCArMTkzLDIyIEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkCiB2
b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZhaWwoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJD
bGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVy
OwotICAgIFJlc291cmNlRXJyb3IgZXJyb3JDb3B5ID0gZXJyb3IuY29weSgpOwotICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50
V3JhcHBlciwgZXJyb3JDb3B5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgIFJlc291cmNlRXJyb3IqIGNhcHR1cmVkRXJyb3IgPSBuZXcgUmVzb3VyY2VFcnJvcihlcnJv
ci5jb3B5KCkpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgY2FwdHVyZWRFcnJvcl0gKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBj
b250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIHdvcmtlckNsaWVudFdyYXBw
ZXItPmRpZEZhaWwoZXJyb3JDb3B5KTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+ZGlk
RmFpbCgqY2FwdHVyZWRFcnJvcik7CisgICAgICAgIGRlbGV0ZSBjYXB0dXJlZEVycm9yOwogICAg
IH0sIG1fdGFza01vZGUpOwogfQogCiB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5U
aHJlYWRCcmlkZ2U6OmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2soY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiB7CiAgICAgUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiB3
b3JrZXJDbGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyOwotICAgIFJlc291cmNl
RXJyb3IgZXJyb3JDb3B5ID0gZXJyb3IuY29weSgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgZXJyb3JD
b3B5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIFJlc291cmNlRXJy
b3IqIGNhcHR1cmVkRXJyb3IgPSBuZXcgUmVzb3VyY2VFcnJvcihlcnJvci5jb3B5KCkpOworICAg
IG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbd29ya2Vy
Q2xpZW50V3JhcHBlciwgY2FwdHVyZWRFcnJvcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0LmlzV29ya2Vy
R2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZEZhaWxBY2Nl
c3NDb250cm9sQ2hlY2soZXJyb3JDb3B5KTsKKyAgICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+
ZGlkRmFpbEFjY2Vzc0NvbnRyb2xDaGVjaygqY2FwdHVyZWRFcnJvcik7CisgICAgICAgIGRlbGV0
ZSBjYXB0dXJlZEVycm9yOwogICAgIH0sIG1fdGFza01vZGUpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3Bw
CmluZGV4IDkzNzU2ODRlOTk4ZDJlYWJlZjQ4YTAxMTU1ZTdiNTRjMmYyNWM1OTUuLjk5OGI4ODk4
ZTQ0MjkyYzZhNDY5ZjZhZjEwZWNmZGE4MmE0MmJlNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuY3BwCkBAIC0x
ODEsMjQgKzE4MSwyMiBAQCBHcm91cFNldHRpbmdzKiBTaGFyZWRXb3JrZXJQcm94eTo6Z3JvdXBT
ZXR0aW5ncygpIGNvbnN0CiB2b2lkIFNoYXJlZFdvcmtlclByb3h5Ojpwb3N0RXhjZXB0aW9uVG9X
b3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKIHsKICAgICBNdXRleExv
Y2tlciBsb2NrKG1fd29ya2VyRG9jdW1lbnRzTG9jayk7Ci0gICAgU3RyaW5nIGVycm9yTWVzc2Fn
ZUNvcHkgPSBlcnJvck1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgU3RyaW5nIHNvdXJjZVVS
TENvcHkgPSBzb3VyY2VVUkwuaXNvbGF0ZWRDb3B5KCk7Ci0KKyAgICBTdHJpbmdDYXB0dXJlIGNh
cHR1cmVkRXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0
dXJlZFNvdXJjZVVSTChzb3VyY2VVUkwpOwogICAgIGZvciAoYXV0byYgZG9jdW1lbnQgOiBtX3dv
cmtlckRvY3VtZW50cykKLSAgICAgICAgZG9jdW1lbnQtPnBvc3RUYXNrKFtlcnJvck1lc3NhZ2VD
b3B5LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVSTENvcHldIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjb250ZXh0LnJlcG9ydEV4Y2Vw
dGlvbihlcnJvck1lc3NhZ2VDb3B5LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZVVS
TENvcHksIG51bGxwdHIpOworICAgICAgICBkb2N1bWVudC0+cG9zdFRhc2soW2NhcHR1cmVkRXJy
b3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNhcHR1cmVkU291cmNlVVJMXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgY29udGV4dC5y
ZXBvcnRFeGNlcHRpb24oY2FwdHVyZWRFcnJvck1lc3NhZ2Uuc3RyaW5nKCksIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgY2FwdHVyZWRTb3VyY2VVUkwuc3RyaW5nKCksIG51bGxwdHIpOwogICAg
ICAgICB9KTsKIH0KIAogdm9pZCBTaGFyZWRXb3JrZXJQcm94eTo6cG9zdENvbnNvbGVNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3dvcmtl
ckRvY3VtZW50c0xvY2spOwotICAgIFN0cmluZyBtZXNzYWdlQ29weSA9IG1lc3NhZ2UuaXNvbGF0
ZWRDb3B5KCk7Ci0gICAgU3RyaW5nIHNvdXJjZVVSTENvcHkgPSBzb3VyY2VVUkwuaXNvbGF0ZWRD
b3B5KCk7Ci0KKyAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkTWVzc2FnZShtZXNzYWdlKTsKKyAg
ICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkU291cmNlVVJMKHNvdXJjZVVSTCk7CiAgICAgZm9yIChh
dXRvJiBkb2N1bWVudCA6IG1fd29ya2VyRG9jdW1lbnRzKQotICAgICAgICBkb2N1bWVudC0+cG9z
dFRhc2soW3NvdXJjZSwgbGV2ZWwsIG1lc3NhZ2VDb3B5LCBzb3VyY2VVUkxDb3B5LCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0g
ICAgICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIG1lc3Nh
Z2VDb3B5LCBzb3VyY2VVUkxDb3B5LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAg
ICBkb2N1bWVudC0+cG9zdFRhc2soW3NvdXJjZSwgbGV2ZWwsIGNhcHR1cmVkTWVzc2FnZSwgY2Fw
dHVyZWRTb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3Nh
Z2Uoc291cmNlLCBsZXZlbCwgY2FwdHVyZWRNZXNzYWdlLnN0cmluZygpLCBjYXB0dXJlZFNvdXJj
ZVVSTC5zdHJpbmcoKSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgfSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXgg
ZTAwOWU1NzU0MjVkYTQ2ZTRlNjQ3ZGE3ODg3ZTY0ZDE4MTVkN2RjNy4uNGU4ZDg3ZWE2MDU5NjUw
ODJhMTAzOWFkNmFjODM4OGQ0OTkwNTUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTIyMiw3ICsyMjIsNyBAQCB2b2lkIFdvcmtlckdsb2Jh
bFNjb3BlOjpsb2dFeGNlcHRpb25Ub0NvbnNvbGUoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Us
IGNvbnN0CiB2b2lkIFdvcmtlckdsb2JhbFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRU
aHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNl
LCBsZXZlbCwgbWVzc2FnZSkpOworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRh
c2soc291cmNlLCBsZXZlbCwgU3RyaW5nQ2FwdHVyZShtZXNzYWdlKSkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXYK
IHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZE1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBzb3VyY2Us
IE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBQ
YXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRl
eHRUaHJlYWQoKSkgewotICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291
cmNlLCBsZXZlbCwgbWVzc2FnZSkpOworICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2Fn
ZVRhc2soc291cmNlLCBsZXZlbCwgU3RyaW5nQ2FwdHVyZShtZXNzYWdlKSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwCmluZGV4IDJkNTEwMjk3Nzc1MzQwNThjZDA2MmY1NTE2MmM4ZTc1NWNjNjk1
MjcuLmQ0MzFiNTk2MGE0YzQ4MGZhOTgzOGU3N2U4Y2NmMmY3Nzg1ZWNiOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0xNDYsOSAr
MTQ2LDkgQEAgYm9vbCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFRhc2tGb3JNb2RlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db24KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCiB7Ci0gICAgU3RyaW5nIGVycm9yTWVzc2FnZUNvcHkgPSBlcnJvck1lc3NhZ2UuaXNv
bGF0ZWRDb3B5KCk7Ci0gICAgU3RyaW5nIHNvdXJjZVVSTENvcHkgPSBzb3VyY2VVUkwuaXNvbGF0
ZWRDb3B5KCk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywg
ZXJyb3JNZXNzYWdlQ29weSwgc291cmNlVVJMQ29weSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIFN0cmluZ0NhcHR1cmUg
Y2FwdHVyZWRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsKKyAgICBTdHJpbmdDYXB0dXJlIGNh
cHR1cmVkU291cmNlVVJMKHNvdXJjZVVSTCk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5wb3N0VGFzayhbdGhpcywgY2FwdHVyZWRFcnJvck1lc3NhZ2UsIGNhcHR1cmVkU291cmNlVVJM
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7CiAgICAgICAgIFdvcmtlciogd29ya2VyT2JqZWN0ID0gdGhpcy0+d29ya2VyT2JqZWN0
KCk7CiAgICAgICAgIGlmICghd29ya2VyT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTU2LDIwICsxNTYsMjAgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdEV4Y2VwdGlv
blRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWcKICAgICAgICAgLy8gV2Ug
ZG9uJ3QgYm90aGVyIGNoZWNraW5nIHRoZSBhc2tlZFRvVGVybWluYXRlKCkgZmxhZyBoZXJlLCBi
ZWNhdXNlIGV4Y2VwdGlvbnMgc2hvdWxkICphbHdheXMqIGJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhl
IHRocmVhZCBpcyB0ZXJtaW5hdGVkLgogICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkg
ZGlmZmVyZW50IHRoYW4gdGhlIGJlaGF2aW9yIGluIE1lc3NhZ2VXb3JrZXJUYXNrLCBiZWNhdXNl
IHRlcm1pbmF0ZWQgd29ya2VycyBubyBsb25nZXIgZGVsaXZlciBtZXNzYWdlcyAoc2VjdGlvbiA0
LjYgb2YgdGhlIFdlYldvcmtlciBzcGVjKSwgYnV0IHRoZXkgZG8gcmVwb3J0IGV4Y2VwdGlvbnMu
CiAKLSAgICAgICAgYm9vbCBlcnJvckhhbmRsZWQgPSAhd29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2
ZW50KEVycm9yRXZlbnQ6OmNyZWF0ZShlcnJvck1lc3NhZ2VDb3B5LCBzb3VyY2VVUkxDb3B5LCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKTsKKyAgICAgICAgYm9vbCBlcnJvckhhbmRsZWQgPSAh
d29ya2VyT2JqZWN0LT5kaXNwYXRjaEV2ZW50KEVycm9yRXZlbnQ6OmNyZWF0ZShjYXB0dXJlZEVy
cm9yTWVzc2FnZS5zdHJpbmcoKSwgY2FwdHVyZWRTb3VyY2VVUkwuc3RyaW5nKCksIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikpOwogICAgICAgICBpZiAoIWVycm9ySGFuZGxlZCkKLSAgICAgICAg
ICAgIGNvbnRleHQucmVwb3J0RXhjZXB0aW9uKGVycm9yTWVzc2FnZUNvcHksIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlVVJMQ29weSwgMCk7CisgICAgICAgICAgICBjb250ZXh0LnJl
cG9ydEV4Y2VwdGlvbihjYXB0dXJlZEVycm9yTWVzc2FnZS5zdHJpbmcoKSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBjYXB0dXJlZFNvdXJjZVVSTC5zdHJpbmcoKSwgMCk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2Vy
T2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMKQogewotICAgIFN0cmluZyBtZXNzYWdlQ29weSA9IG1lc3NhZ2UuaXNv
bGF0ZWRDb3B5KCk7Ci0gICAgU3RyaW5nIHNvdXJjZVVSTENvcHkgPSBzb3VyY2VVUkwuaXNvbGF0
ZWRDb3B5KCk7Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywg
c291cmNlLCBsZXZlbCwgbWVzc2FnZUNvcHksIHNvdXJjZVVSTENvcHksIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBTdHJp
bmdDYXB0dXJlIGNhcHR1cmVkTWVzc2FnZShtZXNzYWdlKTsKKyAgICBTdHJpbmdDYXB0dXJlIGNh
cHR1cmVkU291cmNlVVJMKHNvdXJjZVVSTCk7CisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5wb3N0VGFzayhbdGhpcywgc291cmNlLCBsZXZlbCwgY2FwdHVyZWRNZXNzYWdlLCBjYXB0dXJl
ZFNvdXJjZVVSTCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgewogICAgICAgICBpZiAoYXNrZWRUb1Rlcm1pbmF0ZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwg
bGV2ZWwsIG1lc3NhZ2VDb3B5LCBzb3VyY2VVUkxDb3B5LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpOworICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIGNh
cHR1cmVkTWVzc2FnZS5zdHJpbmcoKSwgY2FwdHVyZWRTb3VyY2VVUkwuc3RyaW5nKCksIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgfSk7CiB9CiAKQEAgLTI0Miw5ICsyNDIsOSBAQCB2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5OjpzZW5kTWVzc2FnZVRvSW5zcGVjdG9yKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9hc2tlZFRvVGVybWluYXRlKQogICAgICAgICBy
ZXR1cm47Ci0gICAgU3RyaW5nIG1lc3NhZ2VDb3B5ID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKTsK
LSAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbbWVzc2FnZUNv
cHldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIGRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCku
ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKG1lc3NhZ2VDb3B5KTsKKyAgICBTdHJpbmdDYXB0
dXJlIGNhcHR1cmVkTWVzc2FnZShtZXNzYWdlKTsKKyAgICBtX3dvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbY2FwdHVyZWRNZXNzYWdlXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCkud29ya2VySW5zcGVjdG9yQ29udHJvbGxlcigpLmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9u
dGVuZChjYXB0dXJlZE1lc3NhZ2Uuc3RyaW5nKCkpOwogICAgIH0sIFdvcmtlckRlYnVnZ2VyQWdl
bnQ6OmRlYnVnZ2VyVGFza01vZGUpOwogICAgIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmludGVycnVw
dEFuZERpc3BhdGNoSW5zcGVjdG9yQ29tbWFuZHMobV93b3JrZXJUaHJlYWQuZ2V0KCkpOwogfQpA
QCAtMjk0LDkgKzI5NCw5IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnRlcm1pbmF0ZVdv
cmtlckdsb2JhbFNjb3BlKCkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewotICAgIFN0cmluZyBtZXNzYWdlQ29weSA9IG1lc3NhZ2UuaXNvbGF0ZWRDb3B5KCk7
Ci0gICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgbWVzc2FnZUNv
cHldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBtX3BhZ2VJbnNwZWN0b3It
PmRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIobWVzc2FnZUNvcHkpOworICAgIFN0cmluZ0NhcHR1
cmUgY2FwdHVyZWRNZXNzYWdlKG1lc3NhZ2UpOworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+cG9zdFRhc2soW3RoaXMsIGNhcHR1cmVkTWVzc2FnZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKSB7CisgICAgICAgIG1fcGFnZUluc3BlY3Rvci0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVdvcmtl
cihjYXB0dXJlZE1lc3NhZ2Uuc3RyaW5nKCkpOwogICAgIH0pOwogfQogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAppbmRleCBlNzk1NjllYWIzOTVjNWY1MzU3
MWM5YjQ2MWYwMmRjZmExYzRmNWJkLi4xZGI4MzBhYzNhYzdiNTI4OTFkZWMxNWFlOGU0NDVjMmZh
OWIzZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3Au
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKQEAgLTE5
OSwxNyArMTk5LDEyIEBAIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzayB0YXNrKQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OnBvc3RUYXNrQW5k
VGVybWluYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgdGFzaykKIHsKLSAgICBtX21l
c3NhZ2VRdWV1ZS5hcHBlbmRBbmRLaWxsKFRhc2s6OmNyZWF0ZShXVEY6Om1vdmUodGFzayksIGRl
ZmF1bHRNb2RlKCkuaXNvbGF0ZWRDb3B5KCkpKTsKKyAgICBtX21lc3NhZ2VRdWV1ZS5hcHBlbmRB
bmRLaWxsKHN0ZDo6bWFrZV91bmlxdWU8VGFzaz4oV1RGOjptb3ZlKHRhc2spLCBkZWZhdWx0TW9k
ZSgpKSk7CiB9CiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9zdFRhc2tGb3JNb2RlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2sgdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAgIG1f
bWVzc2FnZVF1ZXVlLmFwcGVuZChUYXNrOjpjcmVhdGUoV1RGOjptb3ZlKHRhc2spLCBtb2RlLmlz
b2xhdGVkQ29weSgpKSk7Ci19Ci0KLXN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJSdW5Mb29wOjpUYXNr
PiBXb3JrZXJSdW5Mb29wOjpUYXNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
ayB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCi17Ci0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0
cjxUYXNrPihuZXcgVGFzayhXVEY6Om1vdmUodGFzayksIG1vZGUpKTsKKyAgICBtX21lc3NhZ2VR
dWV1ZS5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxUYXNrPihXVEY6Om1vdmUodGFzayksIG1vZGUp
KTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpUYXNrOjpwZXJmb3JtVGFzayhjb25zdCBXb3Jr
ZXJSdW5Mb29wJiBydW5Mb29wLCBXb3JrZXJHbG9iYWxTY29wZSogY29udGV4dCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKaW5kZXggYTc2NzkxNzczNGU4N2Y3YzlkYWNjNDI4
ZWM1ZmQ5MmFlODM4YjE0ZC4uOGJiMGMzYjk1YjQ4Yzc1NjhkYjhkNTkwOTUyYWEzNTU1NjUxODRi
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmgKQEAgLTY4LDE0ICs2OCwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIFRhc2sgewogICAgICAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGFzayk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFRhc2s+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrLCBjb25zdCBTdHJpbmcmIG1vZGUp
OwotICAgICAgICAgICAgflRhc2soKSB7IH0KKyAgICAgICAgICAgIFRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6VGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKTsKICAgICAgICAgICAgIGNvbnN0
IFN0cmluZyYgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQogICAgICAgICAgICAgdm9p
ZCBwZXJmb3JtVGFzayhjb25zdCBXb3JrZXJSdW5Mb29wJiwgV29ya2VyR2xvYmFsU2NvcGUqKTsK
IAogICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpOwotICAgICAgICAKICAgICAgICAgICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgbV90YXNrOwogICAgICAgICAgICAgU3RyaW5nIG1f
bW9kZTsKICAgICAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241247</attachid>
            <date>2014-11-08 21:00:05 -0800</date>
            <delta_ts>2014-11-08 21:37:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138539-20141108210006.patch</filename>
            <type>text/plain</type>
            <size>36050</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBhNTkxMmYxZWFkNWI4
Mzc4MDY2MjFlZmEyOTRkMDc1YjYwZjJlMC4uYmE2MTdmMTJkZDgwNjI5OGRiMWExNDA1ZTJjYjM3
MjM3NTllOTAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDczIEBACiAyMDE0LTExLTA4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAorICAgICAgICBGaXggdmFyaW91cyBjYXNlcyBv
ZiBpbmNvcnJlY3QgY3Jvc3MtdGhyZWFkIGNhcHR1cmUgb2Ygbm9uLXRocmVhZC1zYWZlIFJlZkNv
dW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
ODUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVy
OjpkaWRDb25uZWN0KTogVXNlIFN0cmluZ0NhcHR1cmUKKyAgICAgICAgaW5zdGVhZCBvZiBpc29s
YXRlZENvcHksIHRvIGF2b2lkIGEgcHJvYmxlbSB3aGVyZSB0aGUgb3JpZ2luYWwgdGhyZWFkIGRv
ZXMgaXRzIGRlcmVmCisgICAgICAgIGFmdGVyIHBhc3NpbmcgdGhlIHN0cmluZyB0byB0aGUgb3Ro
ZXIgdGhyZWFkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlBlZXI6OmRpZFJlY2VpdmVNZXNzYWdlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpC
cmlkZ2U6OmluaXRpYWxpemUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OmNvbm5lY3QpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6OnNlbmQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpCcmlkZ2U6OmNsb3NlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpmYWlsKTogRGl0dG8uCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZENvbnNv
bGVNZXNzYWdlKTogUGFzcyBhIFN0cmluZ0NhcHR1cmUgd2hlbiBjcmVhdGluZworICAgICAgICBB
ZGRDb25zb2xlTWVzc2FnZVRhc2suIFNhbWUgcmVhc29uIGFzIGFib3ZlLCBidXQgaW4gYSBkaWZm
ZXJlbnQgY29udGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRNZXNzYWdlKTog
RGl0dG8uCisKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOiBDaGFuZ2Vk
IEFkZENvbnNvbGVNZXNzYWdlVGFzayB0byB0YWtlIGFuZAorICAgICAgICBjYXB0dXJlIGEgU3Ry
aW5nQ2FwdHVyZSByYXRoZXIgdGhhbiBhIFN0cmluZywgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyBh
Ym92ZS4KKworICAgICAgICAqIGZpbGVhcGkvQXN5bmNGaWxlU3RyZWFtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFzeW5jRmlsZVN0cmVhbTo6d3JpdGUpOiBVc2UgVVJMQ2FwdHVyZSBpbnN0ZWFk
IG9mIHRyeWluZyB0byB1c2UKKyAgICAgICAgU3RyaW5nQ2FwdHVyZSBvbiBhIFVSTCwgc2luY2Ug
dGhhdCBkb2Vzbid0IHByZXNlcnZlIHRoZSB2YWxpZGl0eSBmbGFnLgorCisgICAgICAgICogbG9h
ZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
VGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6IFVz
ZSBTdHJpbmdDYXB0dXJlLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRl
cjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6ZGlkRmFpbEFjY2Vzc0Nv
bnRyb2xDaGVjayk6IERpdHRvLgorCisgICAgICAgICogcGxhdGZvcm0vVVJMLmg6IEFkZGVkIFVS
TENhcHR1cmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmFwcGVuZEJsb2JSZXNvbHZlZCk6IFJlbW92ZSBpbmNvcnJlY3QgcG9p
bnRsZXNzIGNvZGUgdGhhdCBjcmVhdGVzIGEgbmV3IFVSTAorICAgICAgICBmcm9tIGFuIGV4aXN0
aW5nIFVSTCB3aXRoIHRoZSBQYXJzZWRVUkxTdHJpbmcgY29uc3RydWN0b3IuCisKKyAgICAgICAg
KiB3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDogRml4ZWQgY29kZSB0
aGF0IHdhcyB0cnlpbmcgdG8gY29weSBhIFVSTAorICAgICAgICBieSBjb3B5aW5nIGEgc3RyaW5n
IHRvIGluc3RlYWQganVzdCB1c2UgVVJMOjpjb3B5LiBUaGUgY29tbWVudCBjbGFpbWVkIHRoYXQg
VVJMOjpjb3B5CisgICAgICAgIGlzIG5vdCB0aHJlYWQgc2FmZSwgYnV0IHRoYXQgY2xhaW0gaXMg
aW5jb3JyZWN0LgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyUHJveHk6OnBvc3RFeGNl
cHRpb25Ub1dvcmtlck9iamVjdCk6IFVzZSBTdHJpbmdDYXB0dXJlLgorICAgICAgICAoV2ViQ29y
ZTo6U2hhcmVkV29ya2VyUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6
Z2V0UHJveHkpOiBVc2UgVVJMOjpjb3B5LgorCisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJHbG9iYWxTY29wZTo6YWRkQ29u
c29sZU1lc3NhZ2UpOiBVc2UgU3RyaW5nQ2FwdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckdsb2JhbFNjb3BlOjphZGRNZXNzYWdlKTogRGl0dG8uCisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmpl
Y3QpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5OjpzZW5k
TWVzc2FnZVRvSW5zcGVjdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IpOiBEaXR0by4KKworICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJS
dW5Mb29wOjpwb3N0VGFza0FuZFRlcm1pbmF0ZSk6IE1ha2UgYSBUYXNrIHdpdGggbWFrZV91bmlx
dWUKKyAgICAgICAgcmF0aGVyIHRoYW4gd2l0aCBUYXNrOjpjcmVhdGUuIFJlbW92ZWQgYW4gZXh0
cmEgaXNvbGF0ZWRDb3B5LCB1bm5lZWRlZCBiZWNhdXNlCisgICAgICAgIHRoZSBUYXNrIGNvbnN0
cnVjdG9yIGFscmVhZHkgZG9lcyBhbiBpc29sYXRlZENvcHkuCisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclJ1bkxvb3A6OlRhc2s6OmNyZWF0ZSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiB3b3Jr
ZXJzL1dvcmtlclJ1bkxvb3AuaDogUmVtb3ZlZCB1bm5lZWRlZCBjcmVhdGUgZnVuY3Rpb24gYW5k
IGV4cGxpY2l0CisgICAgICAgIHB1YmxpYyBlbXB0eSBkZXN0cnVjdG9yLgorCisyMDE0LTExLTA4
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwogICAgICAgICBSZXBsYWNlIEZpbGVU
aHJlYWQgY2xhc3Mgd2l0aCBhIHNpbmdsZSBmdW5jdGlvbgogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MjgyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGViMzE1YWEzOGVlYWMyZTRlZTc4OWQwMDc5ZGU0
NTBjYjFhNmU4M2IuLmIwM2QxZDQ4ZWM0N2VlMTEwODZkNWU5MjIyYmMxMjQwMDYxZWVlYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMjY2LDEyICsy
NjYsMTIgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlk
Q29ubmVjdCgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIFJlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgU3RyaW5nIHN1YnByb3RvY29sQ29weSA9IG1f
bWFpbldlYlNvY2tldENoYW5uZWwtPnN1YnByb3RvY29sKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAg
U3RyaW5nIGV4dGVuc2lvbnNDb3B5ID0gbV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+ZXh0ZW5zaW9u
cygpLmlzb2xhdGVkQ29weSgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJHbG9iYWxTY29wZShbd29ya2VyQ2xpZW50V3JhcHBlciwgc3VicHJvdG9jb2xDb3B5LCBl
eHRlbnNpb25zQ29weV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBT
dHJpbmdDYXB0dXJlIGNhcHR1cmVkU3VicHJvdG9jb2wobV9tYWluV2ViU29ja2V0Q2hhbm5lbC0+
c3VicHJvdG9jb2woKSk7CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEV4dGVuc2lvbnMobV9t
YWluV2ViU29ja2V0Q2hhbm5lbC0+ZXh0ZW5zaW9ucygpKTsKKyAgICBtX2xvYWRlclByb3h5LnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGNh
cHR1cmVkU3VicHJvdG9jb2wsIGNhcHR1cmVkRXh0ZW5zaW9uc10gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPnNl
dFN1YnByb3RvY29sKHN1YnByb3RvY29sQ29weSk7Ci0gICAgICAgIHdvcmtlckNsaWVudFdyYXBw
ZXItPnNldEV4dGVuc2lvbnMoZXh0ZW5zaW9uc0NvcHkpOworICAgICAgICB3b3JrZXJDbGllbnRX
cmFwcGVyLT5zZXRTdWJwcm90b2NvbChjYXB0dXJlZFN1YnByb3RvY29sLnN0cmluZygpKTsKKyAg
ICAgICAgd29ya2VyQ2xpZW50V3JhcHBlci0+c2V0RXh0ZW5zaW9ucyhjYXB0dXJlZEV4dGVuc2lv
bnMuc3RyaW5nKCkpOwogICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRDb25uZWN0KCk7
CiAgICAgfSwgbV90YXNrTW9kZSk7CiB9CkBAIC0yODEsMTAgKzI4MSwxMCBAQCB2b2lkIFdvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpQZWVyOjpkaWRSZWNlaXZlTWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lcwogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICBSZWZQdHI8
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyPiB3b3JrZXJDbGllbnRXcmFw
cGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyOwotICAgIFN0cmluZyBtZXNzYWdlQ29weSA9IG1l
c3NhZ2UuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza0Zvck1vZGVU
b1dvcmtlckdsb2JhbFNjb3BlKFt3b3JrZXJDbGllbnRXcmFwcGVyLCBtZXNzYWdlQ29weV0gKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBTdHJpbmdDYXB0dXJlIGNhcHR1
cmVkTWVzc2FnZShtZXNzYWdlKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGNhcHR1cmVkTWVzc2FnZV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJUX1VOVVNF
RChjb250ZXh0LCBjb250ZXh0LmlzV29ya2VyR2xvYmFsU2NvcGUoKSk7Ci0gICAgICAgIHdvcmtl
ckNsaWVudFdyYXBwZXItPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2VDb3B5KTsKKyAgICAgICAg
d29ya2VyQ2xpZW50V3JhcHBlci0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY2FwdHVyZWRNZXNzYWdlLnN0
cmluZygpKTsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIApAQCAtMzI3LDExICszMjcsMTEgQEAg
dm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6UGVlcjo6ZGlkQ2xvc2UodW5z
aWduZWQgbG9uZyB1bmhhbmRsZWRCdWYKICAgICBtX21haW5XZWJTb2NrZXRDaGFubmVsID0gMDsK
IAogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXI+IHdv
cmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXI7Ci0gICAgU3RyaW5nIHJl
YXNvbkNvcHkgPSByZWFzb24uaXNvbGF0ZWRDb3B5KCk7CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0
dXJlZFJlYXNvbihyZWFzb24pOwogICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tGb3JNb2RlVG9X
b3JrZXJHbG9iYWxTY29wZSgKLSAgICAgICAgW3dvcmtlckNsaWVudFdyYXBwZXIsIHVuaGFuZGxl
ZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxldGlvbiwgY29kZSwgcmVhc29u
Q29weV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgW3dvcmtl
ckNsaWVudFdyYXBwZXIsIHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtl
Q29tcGxldGlvbiwgY29kZSwgY2FwdHVyZWRSZWFzb25dIChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7CiAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRleHQu
aXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKLSAgICAgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXIt
PmRpZENsb3NlKHVuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50LCBjbG9zaW5nSGFuZHNoYWtlQ29tcGxl
dGlvbiwgY29kZSwgcmVhc29uQ29weSk7CisgICAgICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVy
LT5kaWRDbG9zZSh1bmhhbmRsZWRCdWZmZXJlZEFtb3VudCwgY2xvc2luZ0hhbmRzaGFrZUNvbXBs
ZXRpb24sIGNvZGUsIGNhcHR1cmVkUmVhc29uLnN0cmluZygpKTsKICAgICAgICAgfSwgbV90YXNr
TW9kZSk7CiB9CiAKQEAgLTM5OSw5ICszOTksOSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpCcmlkZ2U6OmluaXRpYWxpemUoKQogCiAgICAgV29ya2VyTG9hZGVyUHJv
eHkqIGxvYWRlclByb3h5ID0gJm1fbG9hZGVyUHJveHk7CiAgICAgUmVmUHRyPFRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlcjsKLSAgICBTdHJpbmcgdGFza01vZGVDb3B5ID0gbV90YXNrTW9kZS5p
c29sYXRlZENvcHkoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW2xvYWRl
clByb3h5LCB3b3JrZXJDbGllbnRXcmFwcGVyLCB0YXNrTW9kZUNvcHldIChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgIG1haW5UaHJlYWRJbml0aWFsaXplKGNvbnRl
eHQsIGxvYWRlclByb3h5LCB3b3JrZXJDbGllbnRXcmFwcGVyLCB0YXNrTW9kZUNvcHkpOworICAg
IFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRUYXNrTW9kZShtX3Rhc2tNb2RlKTsKKyAgICBtX2xvYWRl
clByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW2xvYWRlclByb3h5LCB3b3JrZXJDbGllbnRXcmFwcGVy
LCBjYXB0dXJlZFRhc2tNb2RlXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgICAgICBtYWluVGhyZWFkSW5pdGlhbGl6ZShjb250ZXh0LCBsb2FkZXJQcm94eSwgd29ya2Vy
Q2xpZW50V3JhcHBlciwgY2FwdHVyZWRUYXNrTW9kZS5zdHJpbmcoKSk7CiAgICAgfSk7CiAgICAg
d2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKIApAQCAtNDE4LDE0ICs0MTgsMTQgQEAgdm9pZCBX
b3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpjb25uZWN0KGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHIKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGVlciogcGVlciA9IG1f
cGVlcjsKLSAgICBVUkwgdXJsQ29weSA9IHVybC5jb3B5KCk7Ci0gICAgU3RyaW5nIHByb3RvY29s
Q29weSA9IHByb3RvY29sLmlzb2xhdGVkQ29weSgpOwotICAgIG1fbG9hZGVyUHJveHkucG9zdFRh
c2tUb0xvYWRlcihbcGVlciwgdXJsQ29weSwgcHJvdG9jb2xDb3B5XSAoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgeworICAgIFVSTENhcHR1cmUgY2FwdHVyZWRVUkwodXJsKTsKKyAg
ICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkUHJvdG9jb2wocHJvdG9jb2wpOworICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY2FwdHVyZWRVUkwsIGNhcHR1cmVkUHJvdG9j
b2xdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5p
c0RvY3VtZW50KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAgICAgICAgcGVlci0+Y29u
bmVjdCh1cmxDb3B5LCBwcm90b2NvbENvcHkpOworICAgICAgICBwZWVyLT5jb25uZWN0KGNhcHR1
cmVkVVJMLnVybCgpLCBjYXB0dXJlZFByb3RvY29sLnN0cmluZygpKTsKICAgICB9KTsKIH0KIApA
QCAtNDM2LDEzICs0MzYsMTMgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1
bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAgICBzZXRNZXRo
b2ROb3RDb21wbGV0ZWQoKTsKIAogICAgIFBlZXIqIHBlZXIgPSBtX3BlZXI7Ci0gICAgU3RyaW5n
IG1lc3NhZ2VDb3B5ID0gbWVzc2FnZS5pc29sYXRlZENvcHkoKTsKLSAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoW3BlZXIsIG1lc3NhZ2VDb3B5XSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgeworICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRNZXNzYWdlKG1lc3Nh
Z2UpOworICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY2FwdHVyZWRN
ZXNzYWdlXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsIGNvbnRl
eHQuaXNEb2N1bWVudCgpKTsKICAgICAgICAgQVNTRVJUKHBlZXIpOwogCi0gICAgICAgIHBlZXIt
PnNlbmQobWVzc2FnZUNvcHkpOworICAgICAgICBwZWVyLT5zZW5kKGNhcHR1cmVkTWVzc2FnZS5z
dHJpbmcoKSk7CiAgICAgfSk7CiAKICAgICBSZWY8QnJpZGdlPiBwcm90ZWN0KCp0aGlzKTsKQEAg
LTQ5MCwxNiArNDkwLDE1IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgc2V0TWV0aG9k
Tm90Q29tcGxldGVkKCk7CiAKICAgICBQZWVyKiBwZWVyID0gbV9wZWVyOwotICAgIFVSTCB1cmxD
b3B5ID0gYmluYXJ5RGF0YS51cmwoKS5jb3B5KCk7Ci0gICAgU3RyaW5nIHR5cGVDb3B5ID0gYmlu
YXJ5RGF0YS50eXBlKCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgVVJMQ2FwdHVyZSBjYXB0dXJlZFVS
TChiaW5hcnlEYXRhLnVybCgpKTsKKyAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkVHlwZShiaW5h
cnlEYXRhLnR5cGUoKSk7CiAgICAgbG9uZyBsb25nIHNpemUgPSBiaW5hcnlEYXRhLnNpemUoKTsK
LSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3BlZXIsIHVybENvcHksIHR5cGVD
b3B5LCBzaXplXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIG1fbG9h
ZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY2FwdHVyZWRVUkwsIGNhcHR1cmVkVHlw
ZSwgc2l6ZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250
ZXh0LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChwZWVyKTsKIAotICAgICAgICBSZWZQ
dHI8QmxvYj4gYmxvYiA9IEJsb2I6OmRlc2VyaWFsaXplKHVybENvcHksIHR5cGVDb3B5LCBzaXpl
KTsKLSAgICAgICAgcGVlci0+c2VuZCgqYmxvYik7CisgICAgICAgIHBlZXItPnNlbmQoKkJsb2I6
OmRlc2VyaWFsaXplKGNhcHR1cmVkVVJMLnVybCgpLCBjYXB0dXJlZFR5cGUuc3RyaW5nKCksIHNp
emUpKTsKICAgICB9KTsKIAogICAgIFJlZjxCcmlkZ2U+IHByb3RlY3QoKnRoaXMpOwpAQCAtNTM5
LDEzICs1MzgsMTMgQEAgdm9pZCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJp
ZGdlOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWEKICAgICAgICAgcmV0dXJuOwog
CiAgICAgUGVlciogcGVlciA9IG1fcGVlcjsKLSAgICBTdHJpbmcgcmVhc29uQ29weSA9IHJlYXNv
bi5pc29sYXRlZENvcHkoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3Bl
ZXIsIGNvZGUsIHJlYXNvbkNvcHldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZFJlYXNvbihyZWFzb24pOworICAgIG1fbG9hZGVy
UHJveHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgY29kZSwgY2FwdHVyZWRSZWFzb25dIChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc0RvY3VtZW50
KCkpOwogICAgICAgICBBU1NFUlQocGVlcik7CiAKLSAgICAgICAgcGVlci0+Y2xvc2UoY29kZSwg
cmVhc29uQ29weSk7CisgICAgICAgIHBlZXItPmNsb3NlKGNvZGUsIGNhcHR1cmVkUmVhc29uLnN0
cmluZygpKTsKICAgICB9KTsKIH0KIApAQCAtNTU1LDEzICs1NTQsMTMgQEAgdm9pZCBXb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVh
c29uKQogICAgICAgICByZXR1cm47CiAKICAgICBQZWVyKiBwZWVyID0gbV9wZWVyOwotICAgIFN0
cmluZyByZWFzb25Db3B5ID0gcmVhc29uLmlzb2xhdGVkQ29weSgpOwotICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tUb0xvYWRlcihbcGVlciwgcmVhc29uQ29weV0gKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQpIHsKKyAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkUmVhc29uKHJlYXNv
bik7CisgICAgbV9sb2FkZXJQcm94eS5wb3N0VGFza1RvTG9hZGVyKFtwZWVyLCBjYXB0dXJlZFJl
YXNvbl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCBjb250ZXh0
LmlzRG9jdW1lbnQoKSk7CiAgICAgICAgIEFTU0VSVChwZWVyKTsKIAotICAgICAgICBwZWVyLT5m
YWlsKHJlYXNvbkNvcHkpOworICAgICAgICBwZWVyLT5mYWlsKGNhcHR1cmVkUmVhc29uLnN0cmlu
ZygpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZDc1Zjc1NTU0
YTM1MjRkNzA3OTg5MDIyZWY1NWU1ODM5NjY2OGExZC4uMjgyMjE1YzhmYzA2MWY0NDcyMTY4MWRh
NTI2Y2Y2YTg1NDdmZTdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00OTc5LDcgKzQ5
NzksNyBAQCB2b2lkIERvY3VtZW50OjpwYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihjb25z
dCBTdHJpbmcmIGRuc1ByZWZldGNoQ29udHJvbCkKIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBp
ZiAoIWlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNz
YWdlVGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlLmlzb2xhdGVkQ29weSgpKSk7CisgICAgICAg
IHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBTdHJpbmdDYXB0
dXJlKG1lc3NhZ2UpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ5OTAsNyArNDk5
MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291
cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0CiB2b2lkIERvY3VtZW50OjphZGRNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVu
c2lnbmVkIGNvbHVtbk51bWJlciwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFpc0NvbnRleHRUaHJlYWQoKSkgewotICAgICAgICBw
b3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgbWVzc2FnZSkpOwor
ICAgICAgICBwb3N0VGFzayhBZGRDb25zb2xlTWVzc2FnZVRhc2soc291cmNlLCBsZXZlbCwgU3Ry
aW5nQ2FwdHVyZShtZXNzYWdlKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAppbmRleCA1MGNlODRiMjI4NmNl
NTI4NDNjNTE3YzRiNDEyYjI1YzNlNDQ1YjdjLi5iN2JhYmYyOWRkMWI2MThjYjc1ZDhmNmYyYzUz
MTMxMjkwMDQwNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKQEAgLTE4NCw5ICsxODQsOSBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgY2xhc3Mg
QWRkQ29uc29sZU1lc3NhZ2VUYXNrIDogcHVibGljIFRhc2sgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQWRkQ29uc29sZU1lc3NhZ2VUYXNrKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2
ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLSAgICAgICAgICAgIDogVGFzayhbc291
cmNlLCBsZXZlbCwgbWVzc2FnZV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWws
IG1lc3NhZ2UpOworICAgICAgICBBZGRDb25zb2xlTWVzc2FnZVRhc2soTWVzc2FnZVNvdXJjZSBz
b3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nQ2FwdHVyZSYgbWVzc2FnZSkK
KyAgICAgICAgICAgIDogVGFzayhbc291cmNlLCBsZXZlbCwgbWVzc2FnZV0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGNvbnRleHQuYWRkQ29uc29s
ZU1lc3NhZ2Uoc291cmNlLCBsZXZlbCwgbWVzc2FnZS5zdHJpbmcoKSk7CiAgICAgICAgICAgICB9
KQogICAgICAgICB7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQXN5bmNGaWxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQXN5bmNGaWxl
U3RyZWFtLmNwcAppbmRleCBiMWEwODlkNDhmNzYzYTVmMWQ4ZmM4ZjZhNDg2NmM4YzdkYjQ5YjE4
Li40ZjU5YWFmNmY4ZDk2Y2IzMzY0MTZmZGIxMGNlZmFmYzBkYmZhY2E1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0FzeW5jRmlsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9Bc3luY0ZpbGVTdHJlYW0uY3BwCkBAIC0xOTIsMTAgKzE5Miw5IEBAIHZv
aWQgQXN5bmNGaWxlU3RyZWFtOjpyZWFkKGNoYXIqIGJ1ZmZlciwgaW50IGxlbmd0aCkKIAogdm9p
ZCBBc3luY0ZpbGVTdHJlYW06OndyaXRlKGNvbnN0IFVSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBv
c2l0aW9uLCBpbnQgbGVuZ3RoKQogewotICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBtb3JlIGVsZWdh
bnQgdG8gaGF2ZSBhIFVSTENhcHR1cmUgZm9yIGNhc2VzIGxpa2UgdGhpcyB0byBhdm9pZCByZS1w
YXJzaW5nIHRoZSBVUkwuCi0gICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZFVSTChibG9iVVJMLnN0
cmluZygpKTsKKyAgICBVUkxDYXB0dXJlIGNhcHR1cmVkVVJMKGJsb2JVUkwpOwogICAgIHBlcmZv
cm0oW2NhcHR1cmVkVVJMLCBwb3NpdGlvbiwgbGVuZ3RoXShGaWxlU3RyZWFtJiBzdHJlYW0pIC0+
IHN0ZDo6ZnVuY3Rpb248dm9pZChGaWxlU3RyZWFtQ2xpZW50Jik+IHsKLSAgICAgICAgaW50IGJ5
dGVzV3JpdHRlbiA9IHN0cmVhbS53cml0ZShVUkwoUGFyc2VkVVJMU3RyaW5nLCBjYXB0dXJlZFVS
TC5zdHJpbmcoKSksIHBvc2l0aW9uLCBsZW5ndGgpOworICAgICAgICBpbnQgYnl0ZXNXcml0dGVu
ID0gc3RyZWFtLndyaXRlKGNhcHR1cmVkVVJMLnVybCgpLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAg
ICAgICAgcmV0dXJuIFtieXRlc1dyaXR0ZW5dKEZpbGVTdHJlYW1DbGllbnQmIGNsaWVudCkgewog
ICAgICAgICAgICAgY2xpZW50LmRpZFdyaXRlKGJ5dGVzV3JpdHRlbik7CiAgICAgICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5k
ZXggMzBjZjZiNzk3OWY3ODc3MDM3YWMxYjBkMjY3YWNlNTRiMTE4MDUyNC4uM2I3NTIyMGVhMzU5
NjAxODUxMjRhNTZmMzkwZDg5MjI0NDUyY2Y5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtOTIsMTMgKzkyLDEzIEBAIFdvcmtl
clRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoUGFz
c1JlZlB0cjxUaHJlYWRhYmxlCiAgICAgQVNTRVJUKG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQo
KSk7CiAKICAgICBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEqIHJlcXVlc3REYXRhID0g
cmVxdWVzdC5jb3B5RGF0YSgpLmxlYWtQdHIoKTsKLSAgICBTdHJpbmcgb3V0Z29pbmdSZWZlcnJl
ckNvcHkgPSBvdXRnb2luZ1JlZmVycmVyLmlzb2xhdGVkQ29weSgpOwotICAgIG1fbG9hZGVyUHJv
eHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdERhdGEsIG9wdGlvbnMsIG91dGdvaW5n
UmVmZXJyZXJDb3B5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgIFN0
cmluZ0NhcHR1cmUgY2FwdHVyZWRPdXRnb2luZ1JlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIpOwor
ICAgIG1fbG9hZGVyUHJveHkucG9zdFRhc2tUb0xvYWRlcihbdGhpcywgcmVxdWVzdERhdGEsIG9w
dGlvbnMsIGNhcHR1cmVkT3V0Z29pbmdSZWZlcnJlcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBEb2N1
bWVudCYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAKICAgICAgICAg
T3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdDo6YWRvcHQo
YWRvcHRQdHIocmVxdWVzdERhdGEpKTsKLSAgICAgICAgcmVxdWVzdC0+c2V0SFRUUFJlZmVycmVy
KG91dGdvaW5nUmVmZXJyZXJDb3B5KTsKKyAgICAgICAgcmVxdWVzdC0+c2V0SFRUUFJlZmVycmVy
KGNhcHR1cmVkT3V0Z29pbmdSZWZlcnJlci5zdHJpbmcoKSk7CiAKICAgICAgICAgLy8gRklYTUU6
IElmIHRoZSBhIHNpdGUgcmVxdWVzdHMgYSBsb2NhbCByZXNvdXJjZSwgdGhlbiB0aGlzIHdpbGwg
cmV0dXJuIGEgbm9uLXplcm8gdmFsdWUgYnV0IHRoZSBzeW5jIHBhdGgKICAgICAgICAgLy8gd2ls
bCByZXR1cm4gYSAwIHZhbHVlLiBFaXRoZXIgdGhpcyBzaG91bGQgcmV0dXJuIDAgb3IgdGhlIG90
aGVyIGNvZGUgcGF0aCBzaG91bGQgZG8gYSBjYWxsYmFjayB3aXRoCkBAIC0xOTMsMjAgKzE5Mywy
MiBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6OmRpZEZp
bmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZAogdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ewogICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50
V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKLSAgICBSZXNvdXJjZUVycm9yIGVycm9y
Q29weSA9IGVycm9yLmNvcHkoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRv
V29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGVycm9yQ29weV0gKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICBSZXNvdXJjZUVycm9yKiBjYXB0dXJl
ZEVycm9yID0gbmV3IFJlc291cmNlRXJyb3IoZXJyb3IuY29weSgpKTsKKyAgICBtX2xvYWRlclBy
b3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBw
ZXIsIGNhcHR1cmVkRXJyb3JdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3Bl
KCkpOwotICAgICAgICB3b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsKGVycm9yQ29weSk7Cisg
ICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZEZhaWwoKmNhcHR1cmVkRXJyb3IpOworICAg
ICAgICBkZWxldGUgY2FwdHVyZWRFcnJvcjsKICAgICB9LCBtX3Rhc2tNb2RlKTsKIH0KIAogdm9p
ZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpkaWRGYWlsQWNjZXNz
Q29udHJvbENoZWNrKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJlZlB0cjxU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29y
a2VyQ2xpZW50V3JhcHBlcjsKLSAgICBSZXNvdXJjZUVycm9yIGVycm9yQ29weSA9IGVycm9yLmNv
cHkoKTsKLSAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2Nv
cGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGVycm9yQ29weV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKKyAgICBSZXNvdXJjZUVycm9yKiBjYXB0dXJlZEVycm9yID0gbmV3IFJl
c291cmNlRXJyb3IoZXJyb3IuY29weSgpKTsKKyAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrRm9y
TW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3dvcmtlckNsaWVudFdyYXBwZXIsIGNhcHR1cmVkRXJy
b3JdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgY29udGV4dC5pc1dvcmtlckdsb2JhbFNjb3BlKCkpOwotICAgICAgICB3
b3JrZXJDbGllbnRXcmFwcGVyLT5kaWRGYWlsQWNjZXNzQ29udHJvbENoZWNrKGVycm9yQ29weSk7
CisgICAgICAgIHdvcmtlckNsaWVudFdyYXBwZXItPmRpZEZhaWxBY2Nlc3NDb250cm9sQ2hlY2so
KmNhcHR1cmVkRXJyb3IpOworICAgICAgICBkZWxldGUgY2FwdHVyZWRFcnJvcjsKICAgICB9LCBt
X3Rhc2tNb2RlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVVJM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAppbmRleCBkMWYwYjg4YTdiYjljOTc0
N2IzNzUxN2FiOTgxOGJmZGRjMDA5OGVlLi43ZThiMjM2MWU3OGE2YjVhYTEwNGI4ZDNhNWI1MWRi
MzhmM2Y3NjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuaApAQCAtODEsOCArODEsOSBAQCBwdWJsaWM6
CiAgICAgLy8gc3RhbmRhcmQgU3RyaW5nIGNvbnN0cnVjdG9yLgogCiAgICAgLy8gTWFrZXMgYSBk
ZWVwIGNvcHkuIEhlbHBmdWwgb25seSBpZiB5b3UgbmVlZCB0byB1c2UgYSBVUkwgb24gYW5vdGhl
cgotICAgIC8vIHRocmVhZC4gIFNpbmNlIHRoZSB1bmRlcmx5aW5nIFN0cmluZ0ltcGwgb2JqZWN0
cyBhcmUgaW1tdXRhYmxlLCB0aGVyZSdzCisgICAgLy8gdGhyZWFkLiBTaW5jZSB0aGUgdW5kZXJs
eWluZyBTdHJpbmdJbXBsIG9iamVjdHMgYXJlIGltbXV0YWJsZSwgdGhlcmUncwogICAgIC8vIG5v
IG90aGVyIHJlYXNvbiB0byBldmVyIHByZWZlciBjb3B5KCkgb3ZlciBwbGFpbiBvbGQgYXNzaWdu
bWVudC4KKyAgICAvLyBGSVhNRTogUmVuYW1lIHRvIGlzb2xhdGVkQ29weSB0byBtYXRjaCBTdHJp
bmcuCiAgICAgVVJMIGNvcHkoKSBjb25zdDsKIAogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CkBA
IC0yNTQsNiArMjU1LDI0IEBAIFN0cmluZyBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoY29uc3Qg
U3RyaW5nJiwgY29uc3QgVGV4dEVuY29kaW5nJik7CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBl
bmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzKGNvbnN0IFN0cmluZyYpOwogCisjaWYgUExBVEZP
Uk0oSU9TKQorV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmFibGVVUkxTY2hlbWVDYW5vbmljYWxpemF0
aW9uKGJvb2wpOworI2VuZGlmCisKKy8vIExpa2UgU3RyaW5nQ2FwdHVyZSwgYnV0IGZvciBVUkxz
LgorY2xhc3MgVVJMQ2FwdHVyZSB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVVJMQ2FwdHVyZShj
b25zdCBVUkwmKTsKKyAgICBleHBsaWNpdCBVUkxDYXB0dXJlKFVSTCYmKTsKKyAgICBVUkxDYXB0
dXJlKGNvbnN0IFVSTENhcHR1cmUmKTsKKyAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0OworICAg
IFVSTCByZWxlYXNlVVJMKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBvcGVyYXRvcj0oY29uc3Qg
VVJMQ2FwdHVyZSYpID0gZGVsZXRlOworICAgIFVSTCBtX1VSTDsKK307CisKIC8vIElubGluZXMu
CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVVJMJiBhLCBjb25zdCBVUkwmIGIpCkBA
IC0zNDQsOSArMzYzLDMwIEBAIGlubGluZSB1bnNpZ25lZCBVUkw6OnBhdGhBZnRlckxhc3RTbGFz
aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGF0aEFmdGVyTGFzdFNsYXNoOwogfQogCi0jaWYgUExB
VEZPUk0oSU9TKQotV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmFibGVVUkxTY2hlbWVDYW5vbmljYWxp
emF0aW9uKGJvb2wpOwotI2VuZGlmCitpbmxpbmUgVVJMQ2FwdHVyZTo6VVJMQ2FwdHVyZShjb25z
dCBVUkwmIHVybCkKKyAgICA6IG1fVVJMKHVybCkKK3sKK30KKworaW5saW5lIFVSTENhcHR1cmU6
OlVSTENhcHR1cmUoVVJMJiYgdXJsKQorICAgIDogbV9VUkwodXJsKQoreworfQorCitpbmxpbmUg
VVJMQ2FwdHVyZTo6VVJMQ2FwdHVyZShjb25zdCBVUkxDYXB0dXJlJiBvdGhlcikKKyAgICA6IG1f
VVJMKG90aGVyLm1fVVJMLmNvcHkoKSkKK3sKK30KKworaW5saW5lIGNvbnN0IFVSTCYgVVJMQ2Fw
dHVyZTo6dXJsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9VUkw7Cit9CisKK2lubGluZSBVUkwg
VVJMQ2FwdHVyZTo6cmVsZWFzZVVSTCgpCit7CisgICAgcmV0dXJuIFdURjo6bW92ZShtX1VSTCk7
Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAppbmRleCBjYzZhNGI1NDU5ODQzZGYwNzY0YmI0YTA5ZDkx
ZTk4ODRlMmQ5NGU5Li5mN2UxMmMyMTFmMDA4NjA0Yjk4OWIzNThhNzU1NmQwMmM2NDU0YjZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjgz
LDcgKzI4Myw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZEJsb2JSZXNvbHZlZChGb3JtRGF0YSogZm9y
bURhdGEsIGNvbnN0IFVSTCYgdXJsKQogICAgICAgICBMT0dfRVJST1IoIlRyaWVkIHRvIHJlc29s
dmUgYSBibG9iIHdpdGhvdXQgYSB1c2FibGUgcmVnaXN0cnkiKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBCbG9iRGF0YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVnaXN0cnlJ
bXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTChVUkwoUGFyc2VkVVJMU3Ry
aW5nLCB1cmwpKTsKKyAgICBCbG9iRGF0YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9iUmVn
aXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTCh1cmwpOwogICAg
IGlmICghYmxvYkRhdGEpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDb3VsZCBub3QgZ2V0IGJsb2Ig
ZGF0YSBmcm9tIGEgcmVnaXN0cnkiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2VyUmVwb3NpdG9yeS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApp
bmRleCA5Mzc1Njg0ZTk5OGQyZWFiZWY0OGEwMTE1NWU3YjU0YzJmMjVjNTk1Li5lOWFjYTk5YzZm
NTI4MGUwYWNjY2M1MmUxZDIwZDgwOTE2YWUxYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcApAQCAtMzQs
NyArMzQsNiBAQAogCiAjaW5jbHVkZSAiRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIK
IAotI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgpAQCAtNDQsMTAgKzQzLDggQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgot
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luSGFzaC5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlci5o
IgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmgiCi0jaW5jbHVkZSAiU2hhcmVk
V29ya2VyUmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclN0cmF0ZWd5LmgiCiAj
aW5jbHVkZSAiU2hhcmVkV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJv
eHkuaCIKQEAgLTU1LDQyICs1MiwzMyBAQAogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlci5o
IgogI2luY2x1ZGUgIldvcmtlclNjcmlwdExvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0
Zi9UaHJlYWRpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBTaGFyZWRXb3JrZXJQcm94eSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTaGFyZWRXb3JrZXJQcm94eT4sIHB1YmxpYyBXb3JrZXJMb2FkZXJQcm94
eSwgcHVibGljIFdvcmtlclJlcG9ydGluZ1Byb3h5IHsKK2NsYXNzIFNoYXJlZFdvcmtlclByb3h5
IGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNoYXJlZFdvcmtlclByb3h5Piwg
cHVibGljIFdvcmtlckxvYWRlclByb3h5LCBwdWJsaWMgV29ya2VyUmVwb3J0aW5nUHJveHkgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJlZFdvcmtlclByb3h5PiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luKSB7IHJldHVybiBhZG9wdFJlZihuZXcgU2hhcmVkV29ya2VyUHJveHkobmFt
ZSwgdXJsLCBvcmlnaW4pKTsgfQogCiAgICAgdm9pZCBzZXRUaHJlYWQoUGFzc1JlZlB0cjxTaGFy
ZWRXb3JrZXJUaHJlYWQ+IHRocmVhZCkgeyBtX3RocmVhZCA9IHRocmVhZDsgfQogICAgIFNoYXJl
ZFdvcmtlclRocmVhZCogdGhyZWFkKCkgeyByZXR1cm4gbV90aHJlYWQuZ2V0KCk7IH0KICAgICBi
b29sIGlzQ2xvc2luZygpIGNvbnN0IHsgcmV0dXJuIG1fY2xvc2luZzsgfQotICAgIFVSTCB1cmwo
KSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gRG9uJ3QgdXNlIG1fdXJsLmNvcHkoKSBiZWNhdXNl
IGl0IGlzbid0IGEgdGhyZWFkc2FmZSBtZXRob2QuCi0gICAgICAgIHJldHVybiBVUkwoUGFyc2Vk
VVJMU3RyaW5nLCBtX3VybC5zdHJpbmcoKS5pc29sYXRlZENvcHkoKSk7Ci0gICAgfQotCisgICAg
VVJMIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsLmNvcHkoKTsgfQogICAgIFN0cmluZyBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9uYW1lLmlzb2xhdGVkQ29weSgpOyB9CiAgICAgYm9vbCBtYXRj
aGVzKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2lu
LCBjb25zdCBVUkwmIHVybFRvTWF0Y2gpIGNvbnN0OwogCiAgICAgLy8gV29ya2VyTG9hZGVyUHJv
eHkKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrKTsKLSAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9i
YWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrLCBjb25zdCBTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xvYWRlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpU
YXNrKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJH
bG9iYWxTY29wZShTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrLCBjb25zdCBTdHJpbmcmKSBv
dmVycmlkZTsKIAogICAgIC8vIFdvcmtlclJlcG9ydGluZ1Byb3h5Ci0gICAgdmlydHVhbCB2b2lk
IHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisgICAg
dmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVy
cm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNz
YWdlVG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICB2aXJ0
dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3QgU3RyaW5nJik7CisgICAg
dmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYpIG92
ZXJyaWRlOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIHdvcmtlckdsb2JhbFNjb3BlQ2xvc2Vk
KCk7Ci0gICAgdmlydHVhbCB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCk7CisgICAg
dmlydHVhbCB2b2lkIHdvcmtlckdsb2JhbFNjb3BlQ2xvc2VkKCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHdvcmtlckdsb2JhbFNjb3BlRGVzdHJveWVkKCkgb3ZlcnJpZGU7CiAKICAgICAv
LyBVcGRhdGVzIHRoZSBsaXN0IG9mIHRoZSB3b3JrZXIncyBkb2N1bWVudHMsIHBlciBzZWN0aW9u
IDQuNSBvZiB0aGUgV2ViV29ya2VycyBzcGVjLgogICAgIHZvaWQgYWRkVG9Xb3JrZXJEb2N1bWVu
dHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwpAQCAtMTgxLDI0ICsxNjksMjIgQEAgR3JvdXBT
ZXR0aW5ncyogU2hhcmVkV29ya2VyUHJveHk6Omdyb3VwU2V0dGluZ3MoKSBjb25zdAogdm9pZCBT
aGFyZWRXb3JrZXJQcm94eTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCiB7CiAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3dvcmtlckRvY3Vt
ZW50c0xvY2spOwotICAgIFN0cmluZyBlcnJvck1lc3NhZ2VDb3B5ID0gZXJyb3JNZXNzYWdlLmlz
b2xhdGVkQ29weSgpOwotICAgIFN0cmluZyBzb3VyY2VVUkxDb3B5ID0gc291cmNlVVJMLmlzb2xh
dGVkQ29weSgpOwotCisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEVycm9yTWVzc2FnZShlcnJv
ck1lc3NhZ2UpOworICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRTb3VyY2VVUkwoc291cmNlVVJM
KTsKICAgICBmb3IgKGF1dG8mIGRvY3VtZW50IDogbV93b3JrZXJEb2N1bWVudHMpCi0gICAgICAg
IGRvY3VtZW50LT5wb3N0VGFzayhbZXJyb3JNZXNzYWdlQ29weSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzb3VyY2VVUkxDb3B5XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewotICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFeGNlcHRpb24oZXJyb3JNZXNzYWdlQ29weSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkxDb3B5LCBudWxscHRyKTsKKyAgICAg
ICAgZG9jdW1lbnQtPnBvc3RUYXNrKFtjYXB0dXJlZEVycm9yTWVzc2FnZSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBjYXB0dXJlZFNvdXJjZVVSTF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKKyAgICAgICAgICAgIGNvbnRleHQucmVwb3J0RXhjZXB0aW9uKGNhcHR1cmVk
RXJyb3JNZXNzYWdlLnN0cmluZygpLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNhcHR1cmVk
U291cmNlVVJMLnN0cmluZygpLCBudWxscHRyKTsKICAgICAgICAgfSk7CiB9CiAKIHZvaWQgU2hh
cmVkV29ya2VyUHJveHk6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
KQogewogICAgIE11dGV4TG9ja2VyIGxvY2sobV93b3JrZXJEb2N1bWVudHNMb2NrKTsKLSAgICBT
dHJpbmcgbWVzc2FnZUNvcHkgPSBtZXNzYWdlLmlzb2xhdGVkQ29weSgpOwotICAgIFN0cmluZyBz
b3VyY2VVUkxDb3B5ID0gc291cmNlVVJMLmlzb2xhdGVkQ29weSgpOwotCisgICAgU3RyaW5nQ2Fw
dHVyZSBjYXB0dXJlZE1lc3NhZ2UobWVzc2FnZSk7CisgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJl
ZFNvdXJjZVVSTChzb3VyY2VVUkwpOwogICAgIGZvciAoYXV0byYgZG9jdW1lbnQgOiBtX3dvcmtl
ckRvY3VtZW50cykKLSAgICAgICAgZG9jdW1lbnQtPnBvc3RUYXNrKFtzb3VyY2UsIGxldmVsLCBt
ZXNzYWdlQ29weSwgc291cmNlVVJMQ29weSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyXSAoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY29udGV4dC5hZGRD
b25zb2xlTWVzc2FnZShzb3VyY2UsIGxldmVsLCBtZXNzYWdlQ29weSwgc291cmNlVVJMQ29weSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgZG9jdW1lbnQtPnBvc3RUYXNrKFtz
b3VyY2UsIGxldmVsLCBjYXB0dXJlZE1lc3NhZ2UsIGNhcHR1cmVkU291cmNlVVJMLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICBjb250ZXh0LmFkZENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgbGV2ZWwsIGNhcHR1
cmVkTWVzc2FnZS5zdHJpbmcoKSwgY2FwdHVyZWRTb3VyY2VVUkwuc3RyaW5nKCksIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIH0pOwogfQogCkBAIC00MTcsNyArNDAzLDcgQEAg
UGFzc1JlZlB0cjxTaGFyZWRXb3JrZXJQcm94eT4gRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnk6OmdldFByb3h5KGNvbnN0IFN0cmkKICAgICAvLyBMb29rIGZvciBhbiBleGlzdGluZyB3b3Jr
ZXIsIGFuZCBjcmVhdGUgb25lIGlmIGl0IGRvZXNuJ3QgZXhpc3QuCiAgICAgLy8gSXRlbXMgaW4g
dGhlIGNhY2hlIGFyZSBmcmVlZCBvbiBhbm90aGVyIHRocmVhZCwgc28gZG8gYSB0aHJlYWRzYWZl
IGNvcHkgb2YgdGhlIFVSTCBiZWZvcmUgY3JlYXRpbmcgdGhlIG9yaWdpbiwKICAgICAvLyB0byBt
YWtlIHN1cmUgbm8gcmVmZXJlbmNlcyB0byBleHRlcm5hbCBzdHJpbmdzIGxpbmdlci4KLSAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoVVJM
KFBhcnNlZFVSTFN0cmluZywgdXJsLnN0cmluZygpLmlzb2xhdGVkQ29weSgpKSk7CisgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybC5j
b3B5KCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3Byb3hpZXMuc2l6ZSgpOyBp
KyspIHsKICAgICAgICAgaWYgKCFtX3Byb3hpZXNbaV0tPmlzQ2xvc2luZygpICYmIG1fcHJveGll
c1tpXS0+bWF0Y2hlcyhuYW1lLCBvcmlnaW4sIHVybCkpCiAgICAgICAgICAgICByZXR1cm4gbV9w
cm94aWVzW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNw
cAppbmRleCBlMDA5ZTU3NTQyNWRhNDZlNGU2NDdkYTc4ODdlNjRkMTgxNWQ3ZGM3Li40ZThkODdl
YTYwNTk2NTA4MmExMDM5YWQ2YWM4Mzg4ZDQ5OTA1NTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgV29y
a2VyR2xvYmFsU2NvcGU6OmxvZ0V4Y2VwdGlvblRvQ29uc29sZShjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgY29uc3QKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAoIWlz
Q29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdlVGFz
ayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVN
ZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBTdHJpbmdDYXB0dXJlKG1lc3NhZ2UpKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIFdvcmtlckdsb2Jh
bFNjb3BlOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxl
dmVsIGxldgogdm9pZCBXb3JrZXJHbG9iYWxTY29wZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNl
IHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5O
dW1iZXIsIFBhc3NSZWZQdHI8U2NyaXB0Q2FsbFN0YWNrPiBjYWxsU3RhY2ssIEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKIHsKICAgICBpZiAo
IWlzQ29udGV4dFRocmVhZCgpKSB7Ci0gICAgICAgIHBvc3RUYXNrKEFkZENvbnNvbGVNZXNzYWdl
VGFzayhzb3VyY2UsIGxldmVsLCBtZXNzYWdlKSk7CisgICAgICAgIHBvc3RUYXNrKEFkZENvbnNv
bGVNZXNzYWdlVGFzayhzb3VyY2UsIGxldmVsLCBTdHJpbmdDYXB0dXJlKG1lc3NhZ2UpKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggMmQ1MTAyOTc3NzUzNDA1OGNkMDYyZjU1MTYyYzhl
NzU1Y2M2OTUyNy4uZDQzMWI1OTYwYTRjNDgwZmE5ODM4ZTc3ZThjY2YyZjc3ODVlY2I5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAg
LTE0Niw5ICsxNDYsOSBAQCBib29sIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0VGFza0Zvck1v
ZGVUb1dvcmtlckdsb2JhbFNjb3BlKFNjcmlwdEV4ZWN1dGlvbkNvbgogCiB2b2lkIFdvcmtlck1l
c3NhZ2luZ1Byb3h5Ojpwb3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBl
cnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCkKIHsKLSAgICBTdHJpbmcgZXJyb3JNZXNzYWdlQ29weSA9IGVycm9yTWVz
c2FnZS5pc29sYXRlZENvcHkoKTsKLSAgICBTdHJpbmcgc291cmNlVVJMQ29weSA9IHNvdXJjZVVS
TC5pc29sYXRlZENvcHkoKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNr
KFt0aGlzLCBlcnJvck1lc3NhZ2VDb3B5LCBzb3VyY2VVUkxDb3B5LCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXJdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgU3RyaW5n
Q2FwdHVyZSBjYXB0dXJlZEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpOworICAgIFN0cmluZ0Nh
cHR1cmUgY2FwdHVyZWRTb3VyY2VVUkwoc291cmNlVVJMKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBjYXB0dXJlZEVycm9yTWVzc2FnZSwgY2FwdHVyZWRT
b3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcl0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpIHsKICAgICAgICAgV29ya2VyKiB3b3JrZXJPYmplY3QgPSB0aGlzLT53b3Jr
ZXJPYmplY3QoKTsKICAgICAgICAgaWYgKCF3b3JrZXJPYmplY3QpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xNTYsMjAgKzE1NiwyMCBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0
RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZwogICAgICAg
ICAvLyBXZSBkb24ndCBib3RoZXIgY2hlY2tpbmcgdGhlIGFza2VkVG9UZXJtaW5hdGUoKSBmbGFn
IGhlcmUsIGJlY2F1c2UgZXhjZXB0aW9ucyBzaG91bGQgKmFsd2F5cyogYmUgcmVwb3J0ZWQgZXZl
biBpZiB0aGUgdGhyZWFkIGlzIHRlcm1pbmF0ZWQuCiAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50
aW9uYWxseSBkaWZmZXJlbnQgdGhhbiB0aGUgYmVoYXZpb3IgaW4gTWVzc2FnZVdvcmtlclRhc2ss
IGJlY2F1c2UgdGVybWluYXRlZCB3b3JrZXJzIG5vIGxvbmdlciBkZWxpdmVyIG1lc3NhZ2VzIChz
ZWN0aW9uIDQuNiBvZiB0aGUgV2ViV29ya2VyIHNwZWMpLCBidXQgdGhleSBkbyByZXBvcnQgZXhj
ZXB0aW9ucy4KIAotICAgICAgICBib29sIGVycm9ySGFuZGxlZCA9ICF3b3JrZXJPYmplY3QtPmRp
c3BhdGNoRXZlbnQoRXJyb3JFdmVudDo6Y3JlYXRlKGVycm9yTWVzc2FnZUNvcHksIHNvdXJjZVVS
TENvcHksIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpOworICAgICAgICBib29sIGVycm9ySGFu
ZGxlZCA9ICF3b3JrZXJPYmplY3QtPmRpc3BhdGNoRXZlbnQoRXJyb3JFdmVudDo6Y3JlYXRlKGNh
cHR1cmVkRXJyb3JNZXNzYWdlLnN0cmluZygpLCBjYXB0dXJlZFNvdXJjZVVSTC5zdHJpbmcoKSwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKSk7CiAgICAgICAgIGlmICghZXJyb3JIYW5kbGVkKQot
ICAgICAgICAgICAgY29udGV4dC5yZXBvcnRFeGNlcHRpb24oZXJyb3JNZXNzYWdlQ29weSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VVUkxDb3B5LCAwKTsKKyAgICAgICAgICAgIGNv
bnRleHQucmVwb3J0RXhjZXB0aW9uKGNhcHR1cmVkRXJyb3JNZXNzYWdlLnN0cmluZygpLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNhcHR1cmVkU291cmNlVVJMLnN0cmluZygpLCAwKTsKICAg
ICB9KTsKIH0KIAogdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdENvbnNvbGVNZXNzYWdl
VG9Xb3JrZXJPYmplY3QoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VMZXZlbCBsZXZlbCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2VDb3B5ID0gbWVz
c2FnZS5pc29sYXRlZENvcHkoKTsKLSAgICBTdHJpbmcgc291cmNlVVJMQ29weSA9IHNvdXJjZVVS
TC5pc29sYXRlZENvcHkoKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNr
KFt0aGlzLCBzb3VyY2UsIGxldmVsLCBtZXNzYWdlQ29weSwgc291cmNlVVJMQ29weSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewor
ICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRNZXNzYWdlKG1lc3NhZ2UpOworICAgIFN0cmluZ0Nh
cHR1cmUgY2FwdHVyZWRTb3VyY2VVUkwoc291cmNlVVJMKTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBzb3VyY2UsIGxldmVsLCBjYXB0dXJlZE1lc3NhZ2Us
IGNhcHR1cmVkU291cmNlVVJMLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXJdIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGlmIChhc2tlZFRvVGVybWluYXRlKCkp
CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2Uo
c291cmNlLCBsZXZlbCwgbWVzc2FnZUNvcHksIHNvdXJjZVVSTENvcHksIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcik7CisgICAgICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBs
ZXZlbCwgY2FwdHVyZWRNZXNzYWdlLnN0cmluZygpLCBjYXB0dXJlZFNvdXJjZVVSTC5zdHJpbmco
KSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICB9KTsKIH0KIApAQCAtMjQyLDkgKzI0
Miw5IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnNlbmRNZXNzYWdlVG9JbnNwZWN0b3Io
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX2Fza2VkVG9UZXJtaW5hdGUpCiAg
ICAgICAgIHJldHVybjsKLSAgICBTdHJpbmcgbWVzc2FnZUNvcHkgPSBtZXNzYWdlLmlzb2xhdGVk
Q29weSgpOwotICAgIG1fd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtt
ZXNzYWdlQ29weV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlckluc3BlY3RvckNvbnRy
b2xsZXIoKS5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobWVzc2FnZUNvcHkpOworICAgIFN0
cmluZ0NhcHR1cmUgY2FwdHVyZWRNZXNzYWdlKG1lc3NhZ2UpOworICAgIG1fd29ya2VyVGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjYXB0dXJlZE1lc3NhZ2VdIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgIGRvd25jYXN0PFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KS53b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyKCkuZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKGNhcHR1cmVkTWVzc2FnZS5zdHJpbmcoKSk7CiAgICAgfSwgV29ya2VyRGVi
dWdnZXJBZ2VudDo6ZGVidWdnZXJUYXNrTW9kZSk7CiAgICAgV29ya2VyRGVidWdnZXJBZ2VudDo6
aW50ZXJydXB0QW5kRGlzcGF0Y2hJbnNwZWN0b3JDb21tYW5kcyhtX3dvcmtlclRocmVhZC5nZXQo
KSk7CiB9CkBAIC0yOTQsOSArMjk0LDkgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6dGVy
bWluYXRlV29ya2VyR2xvYmFsU2NvcGUoKQogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiB2b2lkIFdv
cmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvUGFnZUluc3BlY3Rvcihjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiB7Ci0gICAgU3RyaW5nIG1lc3NhZ2VDb3B5ID0gbWVzc2FnZS5pc29sYXRl
ZENvcHkoKTsKLSAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKFt0aGlzLCBt
ZXNzYWdlQ29weV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIG1fcGFnZUlu
c3BlY3Rvci0+ZGlzcGF0Y2hNZXNzYWdlRnJvbVdvcmtlcihtZXNzYWdlQ29weSk7CisgICAgU3Ry
aW5nQ2FwdHVyZSBjYXB0dXJlZE1lc3NhZ2UobWVzc2FnZSk7CisgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5wb3N0VGFzayhbdGhpcywgY2FwdHVyZWRNZXNzYWdlXSAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpIHsKKyAgICAgICAgbV9wYWdlSW5zcGVjdG9yLT5kaXNwYXRjaE1lc3NhZ2VG
cm9tV29ya2VyKGNhcHR1cmVkTWVzc2FnZS5zdHJpbmcoKSk7CiAgICAgfSk7CiB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCmluZGV4IGU3OTU2OWVhYjM5
NWM1ZjUzNTcxYzliNDYxZjAyZGNmYTFjNGY1YmQuLjFkYjgzMGFjM2FjN2I1Mjg5MWRlYzE1YWU4
ZTQ0NWMyZmE5YjNlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
UnVuTG9vcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNw
cApAQCAtMTk5LDE3ICsxOTksMTIgQEAgdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFzayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2spCiAKIHZvaWQgV29ya2VyUnVuTG9vcDo6cG9z
dFRhc2tBbmRUZXJtaW5hdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrKQogewot
ICAgIG1fbWVzc2FnZVF1ZXVlLmFwcGVuZEFuZEtpbGwoVGFzazo6Y3JlYXRlKFdURjo6bW92ZSh0
YXNrKSwgZGVmYXVsdE1vZGUoKS5pc29sYXRlZENvcHkoKSkpOworICAgIG1fbWVzc2FnZVF1ZXVl
LmFwcGVuZEFuZEtpbGwoc3RkOjptYWtlX3VuaXF1ZTxUYXNrPihXVEY6Om1vdmUodGFzayksIGRl
ZmF1bHRNb2RlKCkpKTsKIH0KIAogdm9pZCBXb3JrZXJSdW5Mb29wOjpwb3N0VGFza0Zvck1vZGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB0YXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7
Ci0gICAgbV9tZXNzYWdlUXVldWUuYXBwZW5kKFRhc2s6OmNyZWF0ZShXVEY6Om1vdmUodGFzayks
IG1vZGUuaXNvbGF0ZWRDb3B5KCkpKTsKLX0KLQotc3RkOjp1bmlxdWVfcHRyPFdvcmtlclJ1bkxv
b3A6OlRhc2s+IFdvcmtlclJ1bkxvb3A6OlRhc2s6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKLXsKLSAgICByZXR1cm4gc3RkOjp1
bmlxdWVfcHRyPFRhc2s+KG5ldyBUYXNrKFdURjo6bW92ZSh0YXNrKSwgbW9kZSkpOworICAgIG1f
bWVzc2FnZVF1ZXVlLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFRhc2s+KFdURjo6bW92ZSh0YXNr
KSwgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1UYXNrKGNv
bnN0IFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AsIFdvcmtlckdsb2JhbFNjb3BlKiBjb250ZXh0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaAppbmRleCBhNzY3OTE3NzM0ZTg3Zjdj
OWRhY2M0MjhlYzVmZDkyYWU4MzhiMTRkLi44YmIwYzNiOTViNDhjNzU2OGRiOGQ1OTA5NTJhYTM1
NTU2NTE4NGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxv
b3AuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuaApAQCAtNjgs
MTQgKzY4LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY2xhc3MgVGFzayB7CiAg
ICAgICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUYXNrKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgICAgIHB1YmxpYzoKLSAgICAgICAgICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9w
dHI8VGFzaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2ssIGNvbnN0IFN0cmlu
ZyYgbW9kZSk7Ci0gICAgICAgICAgICB+VGFzaygpIHsgfQorICAgICAgICAgICAgVGFzayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpUYXNrLCBjb25zdCBTdHJpbmcmIG1vZGUpOwogICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBtb2RlKCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9CiAgICAgICAg
ICAgICB2b2lkIHBlcmZvcm1UYXNrKGNvbnN0IFdvcmtlclJ1bkxvb3AmLCBXb3JrZXJHbG9iYWxT
Y29wZSopOwogCiAgICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBUYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OlRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSk7Ci0gICAgICAgIAogICAgICAg
ICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayBtX3Rhc2s7CiAgICAgICAgICAgICBT
dHJpbmcgbV9tb2RlOwogICAgICAgICB9Owo=
</data>
<flag name="review"
          id="266082"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>