<?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>160338</bug_id>
          
          <creation_ts>2016-07-29 05:55:39 -0700</creation_ts>
          <short_desc>Reduce the number of ResourceRequest copies in DocumentThreadableLoader</short_desc>
          <delta_ts>2016-08-01 08:15:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1215540</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-29 05:55:39 -0700</bug_when>
    <thetext>DocumentThreadableLoader is making several ResourceRequest copies.
We should try to reduce the number of copies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1215541</commentid>
    <comment_count>1</comment_count>
      <attachid>284860</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-29 06:07:31 -0700</bug_when>
    <thetext>Created attachment 284860
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216003</commentid>
    <comment_count>2</comment_count>
      <attachid>284860</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-07-31 21:13:09 -0700</bug_when>
    <thetext>Comment on attachment 284860
Patch

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

Not sure if the comments about copies are all that helpful unless we have a concrete idea of how to cut down on the copying.

How much does this cut down on copying? Did you run some test and count how many times we made copies?

&gt; Source/WebCore/loader/DocumentLoader.cpp:1514
&gt; +    CachedResourceRequest cachedResourceRequest(ResourceRequest(request), mainResourceLoadOptions);

Is this needed? Do we get some kind of compiler warning if you don’t explicitly copy it like this?

&gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:250
&gt; +            // FIXME: Can we find a way to remove that copy?

Grammatically this should be &quot;this copy&quot;.

&gt; Source/WebCore/loader/MediaResourceLoader.cpp:68
&gt; +    // FIXME: We should try to remove the copy of request ehwn crearing cacheRequest.

Typo: &quot;ehwn&quot;.

&gt; Source/WebCore/loader/ThreadableLoader.cpp:61
&gt; +RefPtr&lt;ThreadableLoader&gt; ThreadableLoader::create(ScriptExecutionContext* context, ThreadableLoaderClient* client, ResourceRequest&amp;&amp; request, const ThreadableLoaderOptions&amp; options)

Interesting to note that both client and context should be references here and I think the result should be a Ref, not a RefPtr.

&gt; Source/WebCore/loader/ThreadableLoader.cpp:72
&gt; +void ThreadableLoader::loadResourceSynchronously(ScriptExecutionContext* context, ResourceRequest&amp;&amp; request, ThreadableLoaderClient&amp; client, const ThreadableLoaderOptions&amp; options)

And context should be a reference here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216031</commentid>
    <comment_count>3</comment_count>
      <attachid>284986</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-31 23:34:14 -0700</bug_when>
    <thetext>Created attachment 284986
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216035</commentid>
    <comment_count>4</comment_count>
      <attachid>284986</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-01 00:03:53 -0700</bug_when>
    <thetext>Comment on attachment 284986
Patch for landing

Clearing flags on attachment: 284986

Committed r203971: &lt;http://trac.webkit.org/changeset/203971&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216036</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-01 00:03:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216077</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-01 03:40:21 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 284860 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284860&amp;action=review
&gt; 
&gt; Not sure if the comments about copies are all that helpful unless we have a
&gt; concrete idea of how to cut down on the copying.

I removed the one for DTL. For MediaResourceLoader, this should be doable.

&gt; How much does this cut down on copying? Did you run some test and count how
&gt; many times we made copies?

I did not the counting, this patch comes from other patch discussions on fetch API we had Alex and I.
Fetch algorithm requires one request cloning to replay it if needed (redirections, authentication...).
We probably need 1 or 2 more for caching purposes.

Ideally, we should not do may copies.

But we are also making copies because we are doing changes to the request at various places.
We should try to reduce these places.

&gt; &gt; Source/WebCore/loader/DocumentLoader.cpp:1514
&gt; &gt; +    CachedResourceRequest cachedResourceRequest(ResourceRequest(request), mainResourceLoadOptions);
&gt; 
&gt; Is this needed? Do we get some kind of compiler warning if you don’t
&gt; explicitly copy it like this?

request is a ResourceRequest&amp; so we will get a compilation error.

&gt; &gt; Source/WebCore/loader/DocumentThreadableLoader.cpp:250
&gt; &gt; +            // FIXME: Can we find a way to remove that copy?
&gt; 
&gt; Grammatically this should be &quot;this copy&quot;.

OK. I removed it since it might be difficult to fix that.

&gt; &gt; Source/WebCore/loader/MediaResourceLoader.cpp:68
&gt; &gt; +    // FIXME: We should try to remove the copy of request ehwn crearing cacheRequest.
&gt; 
&gt; Typo: &quot;ehwn&quot;.

OK. I kept this one since it should be ok to fix it.

&gt; &gt; Source/WebCore/loader/ThreadableLoader.cpp:61
&gt; &gt; +RefPtr&lt;ThreadableLoader&gt; ThreadableLoader::create(ScriptExecutionContext* context, ThreadableLoaderClient* client, ResourceRequest&amp;&amp; request, const ThreadableLoaderOptions&amp; options)
&gt; 
&gt; Interesting to note that both client and context should be references here
&gt; and I think the result should be a Ref, not a RefPtr.
&gt; 
&gt; &gt; Source/WebCore/loader/ThreadableLoader.cpp:72
&gt; &gt; +void ThreadableLoader::loadResourceSynchronously(ScriptExecutionContext* context, ResourceRequest&amp;&amp; request, ThreadableLoaderClient&amp; client, const ThreadableLoaderOptions&amp; options)
&gt; 
&gt; And context should be a reference here.

I&apos;ll try to do this refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216107</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-08-01 08:15:21 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/loader/ThreadableLoader.cpp:61
&gt; &gt; &gt; +RefPtr&lt;ThreadableLoader&gt; ThreadableLoader::create(ScriptExecutionContext* context, ThreadableLoaderClient* client, ResourceRequest&amp;&amp; request, const ThreadableLoaderOptions&amp; options)
&gt; &gt; 
&gt; &gt; Interesting to note that both client and context should be references here
&gt; &gt; and I think the result should be a Ref, not a RefPtr.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/loader/ThreadableLoader.cpp:72
&gt; &gt; &gt; +void ThreadableLoader::loadResourceSynchronously(ScriptExecutionContext* context, ResourceRequest&amp;&amp; request, ThreadableLoaderClient&amp; client, const ThreadableLoaderOptions&amp; options)
&gt; &gt; 
&gt; &gt; And context should be a reference here.
&gt; 
&gt; I&apos;ll try to do this refactoring.

Patch for bug 160404 includes this refactoring.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284860</attachid>
            <date>2016-07-29 06:07:31 -0700</date>
            <delta_ts>2016-07-31 23:34:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160338-20160729150615.patch</filename>
            <type>text/plain</type>
            <size>41539</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzODk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc1ZTE2YmY4MTM4YmNi
YzE1MWYyZDVjMWUwYTU1MzI3MWI1N2RlMS4uZDhjZDY2OTk5Y2ZkODk1NTQ2MmY0ZWQ4ZTlmMTQw
Y2UyNjhjYjcxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE2LTA3LTI5ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgUmVkdWNlIHRoZSBudW1i
ZXIgb2YgUmVzb3VyY2VSZXF1ZXN0IGNvcGllcyBpbiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDMzOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG9ic2Vy
dmFibGUgY2hhbmdlIG9mIGJlaGF2aW9yLgorCisgICAgICAgIFVwZGF0aW5nIG9uZSBvZiBDYWNo
ZWRSZXNvdXJjZVJlcXVlcyBjb25zdHJ1Y3RvciB0byB0YWtlIGEgUmVzb3VyY2VSZXF1ZXN0JiYu
CisgICAgICAgIFRoaXMgYWxsb3dzIHJlZHVjaW5nIGEgUmVzb3VyY2VSZXF1ZXN0IGNvcHkgaW4g
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLgorICAgICAgICBVcGRhdGluZyBEb2N1bWVudExvYWRl
ciBhbmQgTWVkaWFSZXNvdXJjZUxvYWRlciBhY2NvcmRpbmdseSAoZnV0dXJlIG9wdGltaXphdGlv
biBzdGVwcyBtYXkgbG9vayBhdCBtYWtpbmcgdGhlc2UKKyAgICAgICAgdHdvIGxvYWRlcnMgbW9y
ZSBlZmZpY2llbnQgd2l0aCByZWdhcmRzIHRvIFJlc291cmNlIFJlcXVlc3QpLgorCisgICAgICAg
IFVwZGF0aW5nIFRocmVhZGFibGVMb2FkZXIgdG8gdGFrZSBhIFJlc291cmNlUmVxdWVzdCYmLgor
ICAgICAgICBUaGlzIGFsbG93cyByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNvcGllcyBpbiBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuCisgICAgICAgIFVwZGF0aW5nIGNsaWVudHMgb2YgVGhyZWFk
YWJsZUxvYWRlciBhY2NvcmRpbmdseS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0KToKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZExv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAg
ICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZmlsZWFw
aS9GaWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2Fk
ZXI6OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6bG9hZFJlc291cmNl
KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtl
Q3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6bWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRT
dWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9h
ZFJlcXVlc3QpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAqIGxv
YWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRl
ci5oOgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2Fk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVz
dDo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudFNvdXJjZTo6Y29ubmVjdCk6CisgICAgICAgICogd29ya2Vycy9X
b3JrZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9h
ZGVyOjpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRM
b2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KToK
KwogMjAxNi0wNy0yOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQ3Jvc3NPcmlnaW4gcHJlZmxpZ2h0IGNoZWNrZXIgc2hvdWxkIGNvbXB1dGUgdGhlIHJpZ2h0
IEFjY2Vzcy1Db250cm9sLVJlcXVlc3QtSGVhZGVycyB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCA1ZDhiNzU4M2EwOGIyZmIzZWVhMmE5
NDZiZDc1ODhmMzcyZTZlMTUyLi42OWQyNTRkOTYyODRjMzJkNmYyMjQxMGM1MWZlZmEwZmVjMDg2
MjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcApA
QCAtNjcsNyArNjcsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBCbG9iJiBibG9iKQogICAgIG9wdGlvbnMubW9kZSA9IEZldGNoT3B0
aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGlj
eUVuZm9yY2VtZW50ID0gQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ6OkRvTm90RW5m
b3JjZTsKIAotICAgIG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKCZjb250ZXh0
LCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZSgmY29udGV4dCwgdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CiAg
ICAgbV9pc1N0YXJ0ZWQgPSBtX2xvYWRlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggNTViZjc5ODQ4OGRkNGUzMTA0M2UxNGM4MDQxMWEzZDFlNTAzYjQyMy4uNzE0YzZlODBiZDNh
YTcwYjUxNzhiYzcxNjA5MTUyNzk1OGRkYzUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC02ODc0LDcgKzY4NzQsNyBAQCB2b2lkIERvY3VtZW50OjppbnZhbGlkYXRlRE9NQ29va2llQ2Fj
aGUoKQogICAgIG1fY2FjaGVkRE9NQ29va2llcyA9IFN0cmluZygpOwogfQogCi12b2lkIERvY3Vt
ZW50OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYp
Cit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkKIHsKICAgICAv
LyBTeW5jaHJvbm91cyByZXNvdXJjZXMgbG9hZGluZyBjYW4gc2V0IGNvb2tpZXMgc28gd2UgaW52
YWxpZGF0ZSB0aGUgY29va2llcyBjYWNoZQogICAgIC8vIGluIHRoaXMgY2FzZSwgdG8gYmUgc2Fm
ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYWJmYzk0M2ExNDVmODFlMzVkNDI5NDcxNWRlY2Zi
MmE2MjNkMzllNi4uZWFmNDkxMTQ5NzI5N2IzMzQ3NTdiY2QwNTc4M2I4NWQ5NWQzZDg0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKQEAgLTE0MjEsNyArMTQyMSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzZXRDYWNoZWRET01Db29raWVzKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgaXNET01Db29r
aWVDYWNoZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVDYWNoZUV4cGlyeVRpbWVyLmlz
QWN0aXZlKCk7IH0KICAgICB2b2lkIGludmFsaWRhdGVET01Db29raWVDYWNoZSgpOwotICAgIHZv
aWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBm
aW5hbDsKKyAgICB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKSBmaW5hbDsKIAog
ICAgIHZvaWQgY2hlY2tWaWV3cG9ydERlcGVuZGVudFBpY3R1cmVzKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCA3ZTkwZTAyNGY4ZGEz
MzA4NGIyY2M2Y2MzMDdkMzA2NzdhNDlmMDdiLi5hODUxYjliYWRjOTNhNDM2YjFmOWI4MmJkNjAw
NDk4YzAyMDUwOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OjpkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2FnZVBvcnQpCiAgICAgbV9t
ZXNzYWdlUG9ydHMucmVtb3ZlKCZtZXNzYWdlUG9ydCk7CiB9CiAKLXZvaWQgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKQordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRMb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgKaW5kZXggZjE5NmJiOGQ1MDAzOWZlYTcyOGQ3MmE2OGNjMmY2MzkwZTdlOGU4YS4u
NjBmOWFiYjFlYWNlZjg4NjE0YzU0MDM3OGNkYzcyMWViMTQyMTk3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0xMzIsNyArMTMyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY3JlYXRlZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQb3J0Jik7CiAgICAgdm9p
ZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYpOwogCi0gICAgdmlydHVhbCB2b2lk
IGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoKTsKIAogICAgIHZv
aWQgcmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KICAgICB2b2lkIGRlcmVm
KCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Zp
bGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggN2Y1MmQwZTE5ZjdhZWJmZDJjOGEyNDYx
NjQ0ZDJmMTY0N2Y4MjZkMC4uNmY5NTFmYjVjZGQxNjI0NTA5MDBiYzFhODQzNjkxNmFmMWQxZjk0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJMb2FkZXIuY3BwCkBAIC05
NSw5ICs5NSw5IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c3RhcnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvCiAgICAgb3B0aW9ucy5jb250ZW50
U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCA9IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2Vt
ZW50OjpEb05vdEVuZm9yY2U7CiAKICAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fbG9hZGVy
ID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHRoaXMs
IHJlcXVlc3QsIG9wdGlvbnMpOworICAgICAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBv
cHRpb25zKTsKICAgICBlbHNlCi0gICAgICAgIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcmVxdWVzdCwgKnRoaXMsIG9w
dGlvbnMpOworICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUocmVxdWVzdCksICp0aGlzLCBvcHRp
b25zKTsKIH0KIAogdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpjYW5jZWwoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA1ZDRj
Njc2M2QyODY4NGQyYWU3MzZhODhhNmY4ODcwMDY2ODRkNzIzLi43MzAzYTg3ZDA0MDgxYjU4YTc3
NjNkMjYzMWY0YTdiMmI4OTAzNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNjc5LDcgKzY3OSw3IEBAIHZvaWQgSW5z
cGVjdG9yTmV0d29ya0FnZW50Ojpsb2FkUmVzb3VyY2UoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmCiAgICAgLy8gSW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCBk
ZWxldGVzIGl0c2VsZiB3aGVuIHRoZSBsb2FkIGNvbXBsZXRlcy4KICAgICBJbnNwZWN0b3JUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50KiBpbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50ID0gbmV3
IEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQoY2FsbGJhY2suY29weVJlZigpKTsKIAot
ICAgIGF1dG8gbG9hZGVyID0gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoKmRvY3Vt
ZW50LCAqaW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCwgcmVxdWVzdCwgb3B0aW9ucyk7
CisgICAgYXV0byBsb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSgqZG9j
dW1lbnQsICppbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCBXVEZNb3ZlKHJlcXVlc3Qp
LCBvcHRpb25zKTsKICAgICBpZiAoIWxvYWRlcikgewogICAgICAgICBpbnNwZWN0b3JUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50LT5kaWRGYWlsTG9hZGVyQ3JlYXRpb24oKTsKICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggOTU1ODY3NWY1
OWU4MmNkYTQyYmM0YWI3NmM0Y2VhYTViNmJmZTUyYS4uMjBkOThjMzY5NjE5YTkzYTE4ZGE0MGEx
ZDI1YTQ0ZWU3M2ZhNzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCkBAIC0xNTExLDcgKzE1MTEsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRp
bmdNYWluUmVzb3VyY2UoKQogICAgIHJlcXVlc3QubWFrZVVuY29uZGl0aW9uYWwoKTsKIAogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXNvdXJjZUxvYWRlck9wdGlvbnM+IG1haW5SZXNvdXJj
ZUxvYWRPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxs
b3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50
Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUsIFNraXBT
ZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgSW5jbHVkZUNlcnRpZmlj
YXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywg
RGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpB
bGxvd0NhY2hpbmcpOwotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBjYWNoZWRSZXNvdXJjZVJl
cXVlc3QocmVxdWVzdCwgbWFpblJlc291cmNlTG9hZE9wdGlvbnMpOworICAgIENhY2hlZFJlc291
cmNlUmVxdWVzdCBjYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
LCBtYWluUmVzb3VyY2VMb2FkT3B0aW9ucyk7CiAgICAgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0LnNl
dEluaXRpYXRvcigqdGhpcyk7CiAgICAgbV9tYWluUmVzb3VyY2UgPSBtX2NhY2hlZFJlc291cmNl
TG9hZGVyLT5yZXF1ZXN0TWFpblJlc291cmNlKGNhY2hlZFJlc291cmNlUmVxdWVzdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggZWUwODE4OWVmNjk1YWVlNTMzMmJiNmJmOGJkNzdhYjY4NmVkYTk4My4uYzMwZmZjNzJh
ZWY1MjBmOTA3YWEwOTI5NTJlN2E1ODhmZWNkNTA1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU2LDMyICs1NiwzMiBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+JiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNv
bnRlbnRTZWN1cml0eVBvbGljeSkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1bWVudCwgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIG9yaWdp
biwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJiBjb250ZW50U2VjdXJp
dHlQb2xpY3kpCiB7CiAgICAgLy8gVGhlIGxvYWRlciB3aWxsIGJlIGRlbGV0ZWQgYXMgc29vbiBh
cyB0aGlzIGZ1bmN0aW9uIGV4aXRzLgotICAgIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoZG9jdW1l
bnQsIGNsaWVudCwgTG9hZFN5bmNocm9ub3VzbHksIHJlcXVlc3QsIG9wdGlvbnMsIFdURk1vdmUo
b3JpZ2luKSwgV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpKSk7CisgICAgUmVmUHRyPERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYobmV3IERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcihkb2N1bWVudCwgY2xpZW50LCBMb2FkU3luY2hyb25vdXNseSwgV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbnRlbnRTZWN1
cml0eVBvbGljeSkpKTsKICAgICBBU1NFUlQobG9hZGVyLT5oYXNPbmVSZWYoKSk7CiB9CiAKLXZv
aWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoRG9jdW1lbnQmIGRvY3VtZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zJiBvcHRpb25zKQogewotICAgIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG9jdW1lbnQs
IHJlcXVlc3QsIGNsaWVudCwgb3B0aW9ucywgbnVsbHB0ciwgbnVsbHB0cik7CisgICAgbG9hZFJl
c291cmNlU3luY2hyb25vdXNseShkb2N1bWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBv
cHRpb25zLCBudWxscHRyLCBudWxscHRyKTsKIH0KIAotUmVmUHRyPERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcj4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJp
dHlQb2xpY3k+JiYgY29udGVudFNlY3VyaXR5UG9saWN5KQorUmVmUHRyPERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcj4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5
UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKIHsKLSAgICBSZWZQdHI8RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyKGRvY3VtZW50LCBjbGllbnQsIExvYWRBc3luY2hyb25vdXNseSwgcmVxdWVzdCwgb3B0
aW9ucywgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpKTsK
KyAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihu
ZXcgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKGRvY3VtZW50LCBjbGllbnQsIExvYWRBc3luY2hy
b25vdXNseSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShvcmlnaW4pLCBXVEZN
b3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpKTsKICAgICBpZiAoIWxvYWRlci0+aXNMb2FkaW5n
KCkpCiAgICAgICAgIGxvYWRlciA9IG51bGxwdHI7CiAgICAgcmV0dXJuIGxvYWRlcjsKIH0KIAot
UmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRl
ck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZShk
b2N1bWVudCwgY2xpZW50LCByZXF1ZXN0LCBvcHRpb25zLCBudWxscHRyLCBudWxscHRyKTsKKyAg
ICByZXR1cm4gY3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIFdURk1vdmUocmVxdWVzdCksIG9wdGlv
bnMsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1Eb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OkRv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYgZG9jdW1lbnQsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQmIGNsaWVudCwgQmxvY2tpbmdCZWhhdmlvciBibG9ja2luZ0JlaGF2aW9yLCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25z
JiBvcHRpb25zLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9w
dHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKK0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBk
b2N1bWVudCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBCbG9ja2luZ0JlaGF2aW9y
IGJsb2NraW5nQmVoYXZpb3IsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgb3Jp
Z2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1
cml0eVBvbGljeSkKICAgICA6IG1fY2xpZW50KCZjbGllbnQpCiAgICAgLCBtX2RvY3VtZW50KGRv
Y3VtZW50KQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCkBAIC05Nyw3ICs5Nyw3IEBAIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3VtZW50JiBk
b2N1bWVudCwgVGhyZWFkYWJsCiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
aXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3kocmVxdWVzdC51cmwoKSkpOwogCiAgICAg
aWYgKG1fc2FtZU9yaWdpblJlcXVlc3QgfHwgbV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25z
OjpNb2RlOjpOb0NvcnMpIHsKLSAgICAgICAgbG9hZFJlcXVlc3QocmVxdWVzdCwgRG9TZWN1cml0
eUNoZWNrKTsKKyAgICAgICAgbG9hZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgRG9TZWN1cml0
eUNoZWNrKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA2LDI1ICsxMDYsMjUgQEAg
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXIoRG9jdW1l
bnQmIGRvY3VtZW50LCBUaHJlYWRhYmwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1h
a2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QocmVxdWVzdCk7CisgICAgbWFrZUNyb3NzT3JpZ2lu
QWNjZXNzUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAotdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6Om1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9z
c09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkKIHsKICAgICBB
U1NFUlQobV9vcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpDb3JzKTsKIAogICAg
IGlmICgobV9vcHRpb25zLnByZWZsaWdodFBvbGljeSA9PSBDb25zaWRlclByZWZsaWdodCAmJiBp
c1NpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChyZXF1ZXN0Lmh0dHBNZXRob2QoKSwgcmVx
dWVzdC5odHRwSGVhZGVyRmllbGRzKCkpKSB8fCBtX29wdGlvbnMucHJlZmxpZ2h0UG9saWN5ID09
IFByZXZlbnRQcmVmbGlnaHQpCi0gICAgICAgIG1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1Jl
cXVlc3QocmVxdWVzdCk7CisgICAgICAgIG1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVl
c3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fc2ltcGxlUmVxdWVz
dCA9IGZhbHNlOwogICAgICAgICBpZiAoQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZTo6
c2luZ2xldG9uKCkuY2FuU2tpcFByZWZsaWdodChzZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCks
IHJlcXVlc3QudXJsKCksIG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKCksIHJlcXVlc3QuaHR0
cE1ldGhvZCgpLCByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSkpCi0gICAgICAgICAgICBwcmVm
bGlnaHRTdWNjZXNzKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSk7CisgICAgICAgICAgICBwcmVm
bGlnaHRTdWNjZXNzKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodChSZXNvdXJjZVJlcXVl
c3QocmVxdWVzdCkpOworICAgICAgICAgICAgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdp
dGhQcmVmbGlnaHQoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgfQogfQogCi12b2lkIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6bWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6bWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQogewogICAgIEFTU0VSVChtX29wdGlvbnMucHJlZmxpZ2h0UG9saWN5ICE9IEZvcmNl
UHJlZmxpZ2h0KTsKICAgICBBU1NFUlQobV9vcHRpb25zLnByZWZsaWdodFBvbGljeSA9PSBQcmV2
ZW50UHJlZmxpZ2h0IHx8IGlzU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KHJlcXVlc3Qu
aHR0cE1ldGhvZCgpLCByZXF1ZXN0Lmh0dHBIZWFkZXJGaWVsZHMoKSkpOwpAQCAtMTM1LDkgKzEz
NSw4IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlU2ltcGxlQ3Jvc3NPcmln
aW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291cmNlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBhdXRvIGNyb3NzT3JpZ2luUmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgdXBkYXRlUmVxdWVz
dEZvckFjY2Vzc0NvbnRyb2woY3Jvc3NPcmlnaW5SZXF1ZXN0LCBzZWN1cml0eU9yaWdpbigpLCBt
X29wdGlvbnMuYWxsb3dDcmVkZW50aWFscygpKTsKLSAgICBsb2FkUmVxdWVzdChjcm9zc09yaWdp
blJlcXVlc3QsIERvU2VjdXJpdHlDaGVjayk7CisgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0Nv
bnRyb2wocmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4oKSwgbV9vcHRpb25zLmFsbG93Q3JlZGVudGlh
bHMoKSk7CisgICAgbG9hZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgRG9TZWN1cml0eUNoZWNr
KTsKIH0KIAogdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Om1ha2VDcm9zc09yaWdpbkFj
Y2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCkBAIC0y
NDgsNyArMjQ3LDggQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXIKIAogICAgICAgICAgICAgY2xl
YW5SZWRpcmVjdGVkUmVxdWVzdEZvckFjY2Vzc0NvbnRyb2wocmVxdWVzdCk7CiAKLSAgICAgICAg
ICAgIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QocmVxdWVzdCk7CisgICAgICAgICAgICAv
LyBGSVhNRTogQ2FuIHdlIGZpbmQgYSB3YXkgdG8gcmVtb3ZlIHRoYXQgY29weT8KKyAgICAgICAg
ICAgIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTMzOCw3ICszMzgs
NyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0U3VjY2VzcyhSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAgIG1fcHJlZmxpZ2h0Q2hlY2tlciA9IE51bGxvcHQ7
CiAKICAgICAvLyBJdCBzaG91bGQgYmUgb2sgdG8gc2tpcCB0aGUgc2VjdXJpdHkgY2hlY2sgc2lu
Y2Ugd2UgYWxyZWFkeSBhc2tlZCBhYm91dCB0aGUgcHJlZmxpZ2h0IHJlcXVlc3QuCi0gICAgbG9h
ZFJlcXVlc3QoYWN0dWFsUmVxdWVzdCwgU2tpcFNlY3VyaXR5Q2hlY2spOworICAgIGxvYWRSZXF1
ZXN0KFdURk1vdmUoYWN0dWFsUmVxdWVzdCksIFNraXBTZWN1cml0eUNoZWNrKTsKIH0KIAogdm9p
ZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodEZhaWx1cmUodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKQEAgLTM1Miw3ICszNTIs
NyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0CiAgICAgbV9jbGllbnQtPmRpZEZhaWwoZXJyb3Ip
OwogfQogCi12b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hl
Y2spCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrKQogewog
ICAgIC8vIEFueSBjcmVkZW50aWFsIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBj
cm9zcy1zaXRlIHJlcXVlc3RzLgogICAgIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCA9IHJlcXVlc3Qu
dXJsKCk7CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU2VjdXIKICAgICAg
ICAgLy8gU2V0IHRvIE5vQ29ycyBhcyBDT1JTIGNoZWNrcyBhcmUgZG9uZSBpbiBEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIKICAgICAgICAgb3B0aW9ucy5tb2RlID0gRmV0Y2hPcHRpb25zOjpNb2Rl
OjpOb0NvcnM7CiAKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QocmVx
dWVzdCwgb3B0aW9ucyk7CisgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBuZXdSZXF1ZXN0
KFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMpOwogICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5yZXNvdXJjZVRpbWluZ0VuYWJsZWQoKSkKICAgICAg
ICAgICAgIG5ld1JlcXVlc3Quc2V0SW5pdGlhdG9yKG1fb3B0aW9ucy5pbml0aWF0b3IpOwogICAg
ICAgICBBU1NFUlQoIW1fcmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDUxZjgzZDRkN2Y4ZjA0ZGE2NzM2NGVkNjdk
NzhlODZmYjI2MTUwNmEuLjA5YWY0Yzk1Mjk5NWUyM2JiYzkzN2UyODY0YWE3OTg2ZDU5ODhiZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKQEAgLTQ1LDExICs0NSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyPiwgcHVibGljIFRocmVhZGFibGVMb2FkZXIsIHByaXZhdGUgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVi
bGljOgotICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3Vt
ZW50JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmLCBz
dGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmKTsKLSAgICAgICAgc3RhdGlj
IHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShEb2N1bWVudCYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVy
T3B0aW9ucyYpOworICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KERvY3VtZW50JiwgUmVzb3VyY2VSZXF1ZXN0JiYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBj
b25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiwg
c3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJik7CisgICAgICAgIHN0YXRp
YyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRG9jdW1lbnQmLCBSZXNvdXJjZVJlcXVl
c3QmJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zJik7CiAKLSAgICAgICAgc3RhdGljIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+
IGNyZWF0ZShEb2N1bWVudCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIFJlZlB0cjxTZWN1cml0
eU9yaWdpbj4mJiwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJik7Ci0g
ICAgICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoRG9j
dW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAgc3RhdGljIFJlZlB0cjxE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShEb2N1bWVudCYsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMmLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYsIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2Vj
dXJpdHlQb2xpY3k+JiYpOworICAgICAgICBzdGF0aWMgUmVmUHRyPERvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50JiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIFJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOwogCiAgICAgICAg
IHZpcnR1YWwgfkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcigpOwogCkBAIC03MSw3ICs3MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIExvYWRBc3luY2hyb25vdXNseQogICAg
ICAgICB9OwogCi0gICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQmLCBCbG9ja2luZ0JlaGF2aW9yLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4mJiwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4mJik7CisgICAg
ICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYsIFRocmVhZGFibGVMb2FkZXJD
bGllbnQmLCBCbG9ja2luZ0JlaGF2aW9yLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMmLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYsIHN0ZDo6dW5pcXVl
X3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYpOwogCiAgICAgICAgIHZvaWQgY2xlYXJSZXNv
dXJjZSgpOwogCkBAIC04NiwxMyArODYsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hh
ciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3VibGUgZmluaXNoVGltZSk7CiAgICAgICAgIHZv
aWQgZGlkRmFpbCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3Im
KTsKLSAgICAgICAgdm9pZCBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYpOwotICAgICAgICB2b2lkIG1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1Jl
cXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgICAgIHZvaWQgbWFrZUNyb3NzT3Jp
Z2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgICAgIHZvaWQgbWFrZVNp
bXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgICAg
IHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VS
ZXF1ZXN0JiYpOwogICAgICAgICB2b2lkIHByZWZsaWdodFN1Y2Nlc3MoUmVzb3VyY2VSZXF1ZXN0
JiYpOwogICAgICAgICB2b2lkIHByZWZsaWdodEZhaWx1cmUodW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKLSAgICAgICAgdm9pZCBsb2FkUmVxdWVzdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0eUNoZWNrUG9saWN5KTsKKyAgICAgICAgdm9p
ZCBsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiwgU2VjdXJpdHlDaGVja1BvbGljeSk7CiAg
ICAgICAgIGJvb2wgaXNBbGxvd2VkUmVkaXJlY3QoY29uc3QgVVJMJik7CiAgICAgICAgIGJvb2wg
aXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgVVJMJiwgYm9vbCBkaWRSZWRp
cmVjdCA9IGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlh
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDljNTcyMmRiMGM1YWI2NjMzZDI1MGRmNzRiYjc4YTE5ZTQ1NzdkOGIu
LmU1ZDExNmU2ZDhkMGNmNDcyZmRlZmEyM2QzZTc4ZWNjMWQ0OTQyOWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTY1LDggKzY1LDkgQEAg
UmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4gTWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dFJlc291cmNlKGNvbnN0IFJlc291cmMKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5IGJ1ZmZlcmlu
Z1BvbGljeSA9IG9wdGlvbnMgJiBMb2FkT3B0aW9uOjpCdWZmZXJEYXRhID8gV2ViQ29yZTo6QnVm
ZmVyRGF0YSA6IFdlYkNvcmU6OkRvTm90QnVmZmVyRGF0YTsKICAgICBhdXRvIGNhY2hpbmdQb2xp
Y3kgPSBvcHRpb25zICYgTG9hZE9wdGlvbjo6RGlzYWxsb3dDYWNoaW5nID8gQ2FjaGluZ1BvbGlj
eTo6RGlzYWxsb3dDYWNoaW5nIDogQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nOwogCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gcmVtb3ZlIHRoZSBjb3B5IG9mIHJlcXVlc3QgZWh3
biBjcmVhcmluZyBjYWNoZVJlcXVlc3QuCiAgICAgLy8gRklYTUU6IFNraXAgQ29udGVudCBTZWN1
cml0eSBQb2xpY3kgY2hlY2sgaWYgdGhlIGVsZW1lbnQgdGhhdCBpbml0aXRhdGVkIHRoaXMgcmVx
dWVzdCBpcyBpbiBhIHVzZXItYWdlbnQgc2hhZG93IHRyZWUuIFNlZSA8aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTUwNT4uCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IGNhY2hlUmVxdWVzdChyZXF1ZXN0LCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxi
YWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIGJ1ZmZlcmluZ1BvbGljeSwgQWxsb3dTdG9yZWRDcmVk
ZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlh
bHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUsIERvU2VjdXJpdHlDaGVjaywg
RmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywg
Q29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9h
ZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBjYWNoaW5nUG9saWN5KSk7CisgICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCks
IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwg
YnVmZmVyaW5nUG9saWN5LCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50
aWFsczo6SW5jbHVkZSwgRG9TZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29y
cywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBv
c2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xv
YWRpbmcsIGNhY2hpbmdQb2xpY3kpKTsKIAogICAgIGNhY2hlUmVxdWVzdC5zZXRBc1BvdGVudGlh
bGx5Q3Jvc3NPcmlnaW4obV9jcm9zc09yaWdpbk1vZGUsICptX2RvY3VtZW50KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGJmNDUwZjZhZGQxNWJl
ODNhM2RmNzUzOTgxN2ExNTExZmQ1YzZkNDMuLmI5ZjI0MTQ0ZGUxMTg1ZjA3NTdmM2MzNThlNGI1
ODA0YTdjZjM2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5j
cHAKQEAgLTU4LDI2ICs1OCwyNiBAQCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9uczo6VGhyZWFkYWJs
ZUxvYWRlck9wdGlvbnMoY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBiYQogewogfQogCi1S
ZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyYgb3B0aW9ucykKK1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCogY2xpZW50LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBBU1NFUlQoY2xpZW50KTsKICAgICBB
U1NFUlQoY29udGV4dCk7CiAKICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0
KSkKLSAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSwgcmVxdWVzdCwgb3B0aW9ucyk7CisgICAgICAgIHJldHVybiBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpjcmVhdGUoZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQp
LCBjbGllbnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCks
IG9wdGlvbnMpOwogCi0gICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRl
KGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCksICpjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMp
OworICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb3duY2FzdDxE
b2N1bWVudD4oKmNvbnRleHQpLCAqY2xpZW50LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsK
IH0KIAotdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJlYWRhYmxlTG9h
ZGVyT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRo
cmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIEFTU0VSVChjb250ZXh0KTsK
IAogICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKmNvbnRleHQpKQotICAgICAgICBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgcmVxdWVzdCwgY2xpZW50LCBvcHRpb25zKTsKKyAg
ICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNs
aWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQotICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0
KSwgcmVxdWVzdCwgY2xpZW50LCBvcHRpb25zKTsKLSAgICBjb250ZXh0LT5kaWRMb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KHJlcXVlc3QpOworICAgICAgICBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0
KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBvcHRpb25zKTsKKyAgICBjb250ZXh0LT5kaWRM
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDc5YTljMzRhM2Fh
M2U3MjFiNDVhYTQ3NDI4MzYzNzRjOWU3ODFjNDAuLmFmZjcwODU4MjU3ZTI2NjQ2MzBiN2RjNmM0
ZTRkZmNmYzcwZGMyMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRh
YmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIu
aApAQCAtNjksMTMgKzY5LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5n
IGluaXRpYXRvcjsgLy8gVGhpcyBjYW5ub3QgYmUgYW4gQXRvbWljU3RyaW5nLCBhcyBpc29sYXRl
ZENvcHkoKSB3b3VsZG4ndCBjcmVhdGUgYW4gb2JqZWN0IHRoYXQncyBzYWZlIGZvciBwYXNzaW5n
IHRvIGFub3RoZXIgdGhyZWFkLgogICAgIH07CiAKLSAgICAvLyBVc2VmdWwgZm9yIGRvaW5nIGxv
YWRlciBvcGVyYXRpb25zIGZyb20gYW55IHRocmVhZCAobm90IHRocmVhZHNhZmUsIAorICAgIC8v
IFVzZWZ1bCBmb3IgZG9pbmcgbG9hZGVyIG9wZXJhdGlvbnMgZnJvbSBhbnkgdGhyZWFkIChub3Qg
dGhyZWFkc2FmZSwKICAgICAvLyBqdXN0IGFibGUgdG8gcnVuIG9uIHRocmVhZHMgb3RoZXIgdGhh
biB0aGUgbWFpbiB0aHJlYWQpLgogICAgIGNsYXNzIFRocmVhZGFibGVMb2FkZXIgewogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRhYmxlTG9hZGVyKTsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOwotICAgICAgICBzdGF0aWMgUmVm
UHRyPFRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zJik7CisgICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFJlc291cmNlUmVxdWVzdCYmLCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsK
KyAgICAgICAgc3RhdGljIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsKCkgPSAwOwogICAgICAgICB2b2lkIHJlZigpIHsgcmVmVGhyZWFkYWJsZUxvYWRl
cigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRl
ci5jcHAKaW5kZXggNzA5YWM2MTE1YjNhNzQ3MzlmYjFjNmIzN2JhNGViMWNjZTA2ZTZlYS4uYjBk
ZDUwYzhhNzY2NTRiMGQ0MjY3ZWQyNGUzYWMwYzE5M2U5YWMxYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDksMTAgKzQ5LDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIgbG9hZFJlc291cmNl
U3luY2hyb25vdXNseU1vZGVbXSA9ICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5TW9kZSI7CiAK
LVdvcmtlclRocmVhZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2FkZXIoV29ya2VyR2xv
YmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlckdsb2JhbFNjb3BlKiB3b3Jr
ZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJp
bmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2Vy
R2xvYmFsU2NvcGUpCiAgICAgLCBtX3dvcmtlckNsaWVudFdyYXBwZXIoVGhyZWFkYWJsZUxvYWRl
ckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQpKQotICAgICwgbV9icmlkZ2UoKm5ldyBNYWlu
VGhyZWFkQnJpZGdlKCptX3dvcmtlckNsaWVudFdyYXBwZXIsIHdvcmtlckdsb2JhbFNjb3BlLT50
aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLCB0YXNrTW9kZSwgcmVxdWVzdCwgb3B0aW9ucywg
d29ya2VyR2xvYmFsU2NvcGUtPnVybCgpLnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpLCB3b3Jr
ZXJHbG9iYWxTY29wZS0+c2VjdXJpdHlPcmlnaW4oKSwgd29ya2VyR2xvYmFsU2NvcGUtPmNvbnRl
bnRTZWN1cml0eVBvbGljeSgpKSkKKyAgICAsIG1fYnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRn
ZSgqbV93b3JrZXJDbGllbnRXcmFwcGVyLCB3b3JrZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkud29y
a2VyTG9hZGVyUHJveHkoKSwgdGFza01vZGUsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHdv
cmtlckdsb2JhbFNjb3BlLT51cmwoKS5zdHJpcHBlZEZvclVzZUFzUmVmZXJyZXIoKSwgd29ya2Vy
R2xvYmFsU2NvcGUtPnNlY3VyaXR5T3JpZ2luKCksIHdvcmtlckdsb2JhbFNjb3BlLT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKSkpCiB7CiB9CiAKQEAgLTYxLDcgKzYxLDcgQEAgV29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6fldvcmtlclRocmVhZGFibGVMb2FkZXIoKQogICAgIG1fYnJpZGdlLmRlc3Ry
b3koKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNv
bnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQordm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2JhbFNjb3BlKiB3
b3JrZXJHbG9iYWxTY29wZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxv
YWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cykKIHsKICAgICBXb3JrZXJSdW5Mb29wJiBydW5Mb29wID0gd29ya2VyR2xvYmFsU2NvcGUtPnRo
cmVhZCgpLnJ1bkxvb3AoKTsKIApAQCAtNjksNyArNjksNyBAQCB2b2lkIFdvcmtlclRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV29ya2VyR2xvYmFsU2NvcGUqIHdv
cmtlcgogICAgIFN0cmluZyBtb2RlID0gbG9hZFJlc291cmNlU3luY2hyb25vdXNseU1vZGU7CiAg
ICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpudW1iZXIocnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKSk7
CiAKLSAgICBSZWZQdHI8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCAmY2xpZW50LCBtb2RlLCBy
ZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBSZWZQdHI8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gbG9h
ZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCAm
Y2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKICAgICBNZXNzYWdlUXVl
dWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3NhZ2VRdWV1ZU1lc3NhZ2VSZWNlaXZlZDsKICAgICB3
aGlsZSAoIWxvYWRlci0+ZG9uZSgpICYmIHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVk
KQogICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1bkluTW9kZSh3b3JrZXJHbG9iYWxTY29wZSwg
bW9kZSk7CkBAIC05OCw3ICs5OCw3IEBAIExvYWRlclRhc2tPcHRpb25zOjpMb2FkZXJUYXNrT3B0
aW9ucyhjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgY29uCiB9CiAKIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2Uo
VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXImIHdvcmtlckNsaWVudFdyYXBwZXIsIFdvcmtl
ckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwKLSAgICBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRp
b25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91dGdvaW5nUmVmZXJyZXIsCisgICAgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlv
bnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwKICAgICBjb25zdCBTZWN1cml0eU9y
aWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IENvbnRlbnRTZWN1cml0eVBvbGljeSogY29udGVu
dFNlY3VyaXR5UG9saWN5KQogICAgIDogbV93b3JrZXJDbGllbnRXcmFwcGVyKCZ3b3JrZXJDbGll
bnRXcmFwcGVyKQogICAgICwgbV9sb2FkZXJQcm94eShsb2FkZXJQcm94eSkKQEAgLTExMiw2ICsx
MTIsNyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhy
ZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbgogCiAgICAgYXV0byBvcHRpb25zQ29weSA9
IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyVGFza09wdGlvbnM+KG9wdGlvbnMsIG91dGdvaW5nUmVm
ZXJyZXIsICpzZWN1cml0eU9yaWdpbik7CiAKKyAgICAvLyBDYW4gd2UgYmVuZWZpdCBmcm9tIHJl
cXVlc3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVhdGUgbW9yZSBlZmZpY2llbnRseSBpdHMgaXNv
bGF0ZWQgY29weT8KICAgICBtX2xvYWRlclByb3h5LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJl
cXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgpLCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25z
Q29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0
eVBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgRG9jdW1lbnQmIGRvY3Vt
ZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwpAQCAtMTIwLDcgKzEyMSw3IEBAIFdv
cmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2Uo
VGhyZWFkYWJsZUxvYWRlckNsaWVuCiAKICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBzaXRlIHJl
cXVlc3RzIGEgbG9jYWwgcmVzb3VyY2UsIHRoZW4gdGhpcyB3aWxsIHJldHVybiBhIG5vbi16ZXJv
IHZhbHVlIGJ1dCB0aGUgc3luYyBwYXRoIHdpbGwgcmV0dXJuIGEgMCB2YWx1ZS4KICAgICAgICAg
Ly8gRWl0aGVyIHRoaXMgc2hvdWxkIHJldHVybiAwIG9yIHRoZSBvdGhlciBjb2RlIHBhdGggc2hv
dWxkIGNhbGwgYSBmYWlsdXJlIGNhbGxiYWNrLgotICAgICAgICBtX21haW5UaHJlYWRMb2FkZXIg
PSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShkb2N1bWVudCwgKnRoaXMsIHJlcXVl
c3QsIG9wdGlvbnMtPm9wdGlvbnMsIFdURk1vdmUob3B0aW9ucy0+b3JpZ2luKSwgV1RGTW92ZShj
b250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KSk7CisgICAgICAgIG1fbWFpblRocmVhZExvYWRlciA9
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRvY3VtZW50LCAqdGhpcywgV1RGTW92
ZShyZXF1ZXN0KSwgb3B0aW9ucy0+b3B0aW9ucywgV1RGTW92ZShvcHRpb25zLT5vcmlnaW4pLCBX
VEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpKTsKICAgICAgICAgQVNTRVJUKG1fbWFp
blRocmVhZExvYWRlciB8fCBtX2xvYWRpbmdGaW5pc2hlZCk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAppbmRleCAzYzdlODFh
NTg1NDkyYWQxNmJkNTJlN2ZmNjcwNTU1ZjExNWU1NGU2Li40NjQyYjQwYzA3MDM5NWZlZDc4ZWQy
YjY4NGY2NGVhMzQwMjcyN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJU
aHJlYWRhYmxlTG9hZGVyLmgKQEAgLTQ5LDEwICs0OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgV29ya2VyVGhyZWFkYWJsZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdv
cmtlclRocmVhZGFibGVMb2FkZXI+LCBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlciB7CiAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHZv
aWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucyYpOwotICAgICAgICBzdGF0aWMgUmVmPFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI+IGNyZWF0ZShXb3JrZXJHbG9iYWxTY29wZSogd29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0
aW9ucykKKyAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXb3Jr
ZXJHbG9iYWxTY29wZSosIFJlc291cmNlUmVxdWVzdCYmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAgc3RhdGljIFJlZjxX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckds
b2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYg
dGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2Fk
ZXJPcHRpb25zJiBvcHRpb25zKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQs
IHRhc2tNb2RlLCByZXF1ZXN0LCBvcHRpb25zKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQs
IHRhc2tNb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICB+V29ya2VyVGhyZWFkYWJsZUxvYWRlcigpOwpAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIE1haW5UaHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCB7CiAgICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEFs
bCBleGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQncyB0aHJlYWQuCi0gICAgICAgICAgICBN
YWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyJiwgV29ya2VyTG9h
ZGVyUHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdS
ZWZlcnJlciwgY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xp
Y3kqKTsKKyAgICAgICAgICAgIE1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVu
dFdyYXBwZXImLCBXb3JrZXJMb2FkZXJQcm94eSYsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0
cmluZyYgb3V0Z29pbmdSZWZlcnJlciwgY29uc3QgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBDb250
ZW50U2VjdXJpdHlQb2xpY3kqKTsKICAgICAgICAgICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgICAg
ICAgICB2b2lkIGRlc3Ryb3koKTsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgICAgIFN0cmluZyBtX3Rhc2tNb2RlOwogICAgICAgICB9OwogCi0gICAg
ICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXIoV29ya2VyR2xvYmFsU2NvcGUqLCBUaHJlYWRhYmxl
TG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAgV29ya2VyVGhy
ZWFkYWJsZUxvYWRlcihXb3JrZXJHbG9iYWxTY29wZSosIFRocmVhZGFibGVMb2FkZXJDbGllbnQq
LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFk
YWJsZUxvYWRlck9wdGlvbnMmKTsKIAogICAgICAgICBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+
IG1fd29ya2VyR2xvYmFsU2NvcGU7CiAgICAgICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRXcmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCA1NzM0NTAw
YTc2Mjk3NjY5MjkwNDBlZmNhNDFkMjQwZWY2MWI2YzhiLi5lMGZlN2M0MWQ2ZmRlZjU2MDRiNGRm
M2MwMjg1OTc0MWI0NmQzYTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcApAQCAtNDQsOCArNDQsOCBAQCBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJlc291cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlc291cmNlUmVxdQogewogfQogCi1DYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJl
c291cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29u
c3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQotICAgIDogbV9yZXNvdXJjZVJlcXVl
c3QocmVzb3VyY2VSZXF1ZXN0KQorQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCisgICAgOiBtX3Jlc291cmNlUmVxdWVzdChXVEZNb3Zl
KHJlc291cmNlUmVxdWVzdCkpCiAgICAgLCBtX29wdGlvbnMob3B0aW9ucykKICAgICAsIG1fZm9y
UHJlbG9hZChmYWxzZSkKICAgICAsIG1fZGVmZXIoTm9EZWZlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAppbmRleCA5OWUzMmIy
NzhhYTY4ZjFmNmRkMzIyZjA4MjJhYmJiNmVmZDY1NTUyLi42M2ZmOGM0NWFjYmQxZGIwOThjNDRl
MDdmOWEyMWMyMWYxYzQzMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAg
ICBlbnVtIERlZmVyT3B0aW9uIHsgTm9EZWZlciwgRGVmZXJyZWRCeUNsaWVudCB9OwogCiAgICAg
ZXhwbGljaXQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNv
bnN0IFN0cmluZyYgY2hhcnNldCA9IFN0cmluZygpLCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlv
cml0eT4gPSBOdWxsb3B0KTsKLSAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJik7CisgICAgQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmKTsKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
T3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+KTsKICAgICB+Q2FjaGVkUmVzb3VyY2VSZXF1
ZXN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggMjRhZTA4ZGFlYjAw
ZDlmYjQ3NTEwMjljYzM4MjdkYWVjZWZiZjZhNi4uMDU5YjY0NzZhNzY3NTJlNWRkMTQwZDQ4YTMz
Y2ZiNGEzZGUyNDgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTExNSw3
ICsxMTUsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpjb25uZWN0KCkKICAgICBvcHRpb25zLnNldERh
dGFCdWZmZXJpbmdQb2xpY3koRG9Ob3RCdWZmZXJEYXRhKTsKICAgICBvcHRpb25zLmNvbnRlbnRT
ZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKSA/IENvbnRlbnRTZWN1cml0
eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2UgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lF
bmZvcmNlbWVudDo6RW5mb3JjZUNvbm5lY3RTcmNEaXJlY3RpdmU7CiAKLSAgICBtX2xvYWRlciA9
IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMs
IHJlcXVlc3QsIG9wdGlvbnMpOworICAgIG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0
aW9ucyk7CiAKICAgICAvLyBGSVhNRTogQ2FuIHdlIGp1c3QgdXNlIG1fbG9hZGVyIGZvciB0aGlz
LCBudWxsIGl0IG91dCB3aGVuIGl0J3Mgbm8gbG9uZ2VyIGluIGZsaWdodCwgYW5kIGVsaW1pbmF0
ZSB0aGUgbV9yZXF1ZXN0SW5GbGlnaHQgbWVtYmVyPwogICAgIGlmIChtX2xvYWRlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAppbmRleCA4MGFjZWI1
OTlhYWE4YTY4NDhiYTEzYTQ5MTc4MGI3NWY0YjM4ZDRjLi5mY2M0NGRmMjI2ODMyNWZjMGI3M2Zi
MGM4YjI5OTgzMTFmYjYyNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
CiAgICAgb3B0aW9ucy5zZXRTZW5kTG9hZENhbGxiYWNrcyhTZW5kQ2FsbGJhY2tzKTsKICAgICBv
cHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gY29udGVudFNlY3VyaXR5
UG9saWN5RW5mb3JjZW1lbnQ7CiAKLSAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0aGlzLCBvcHRpb25zKTsKKyAgICBXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgV1RGTW92ZSgqcmVxdWVzdCksICp0
aGlzLCBvcHRpb25zKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBj
b25zdCBVUkwmIHVybCwgRmV0Y2hPcHRpb25zOjpNb2RlIG1vZGUsIENvbnRlbnRTZWN1cml0eVBv
bGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50LCBXb3JrZXJT
Y3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBXb3JrZXJT
Y3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXQKIAogICAgIC8vIER1cmluZyBjcmVhdGUsIGNhbGxiYWNrcyBtYXkgaGFwcGVu
IHdoaWNoIHJlbW92ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QuCiAgICAgUmVm
PFdvcmtlclNjcmlwdExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0gICAgbV90aHJlYWRh
YmxlTG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIHRoaXMsICpyZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBtX3RocmVhZGFibGVMb2FkZXIgPSBU
aHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdGhpcywgV1RG
TW92ZSgqcmVxdWVzdCksIG9wdGlvbnMpOwogfQogCiBjb25zdCBVUkwmIFdvcmtlclNjcmlwdExv
YWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggNmY0ZTdkMjZkMjA0NWI0ZWYzOTkyOTYwNjRhZjA5OTJjZjY0ZWI1NC4uYjQ4M2Zi
ZDNkZTZmYzk1ODMwZDcwNTM1MTRkNGQ1NzNkYzE0NTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCkBAIC03MTUsNyArNzE1LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgLy8gVGhyZWFkYWJsZUxv
YWRlcjo6Y3JlYXRlIGNhbiByZXR1cm4gbnVsbCBoZXJlLCBmb3IgZXhhbXBsZSBpZiB3ZSdyZSBu
byBsb25nZXIgYXR0YWNoZWQgdG8gYSBwYWdlIG9yIGlmIGEgY29udGVudCBibG9ja2VyIGJsb2Nr
cyB0aGUgbG9hZC4KICAgICAgICAgLy8gVGhpcyBpcyB0cnVlIHdoaWxlIHJ1bm5pbmcgb251bmxv
YWQgaGFuZGxlcnMuCiAgICAgICAgIC8vIEZJWE1FOiBNYXliZSB3ZSBuZWVkIHRvIGJlIGFibGUg
dG8gc2VuZCBYTUxIdHRwUmVxdWVzdHMgZnJvbSBvbnVubG9hZCwgPGh0dHA6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTA0Pi4KLSAgICAgICAgbV9sb2FkZXIgPSBUaHJlYWRh
YmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCByZXF1ZXN0
LCBvcHRpb25zKTsKKyAgICAgICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25z
KTsKIAogICAgICAgICAvLyBOZWl0aGVyIHRoaXMgb2JqZWN0IG5vciB0aGUgSmF2YVNjcmlwdCB3
cmFwcGVyIHNob3VsZCBiZSBkZWxldGVkIHdoaWxlCiAgICAgICAgIC8vIGEgcmVxdWVzdCBpcyBp
biBwcm9ncmVzcyBiZWNhdXNlIHdlIG5lZWQgdG8ga2VlcCB0aGUgbGlzdGVuZXJzIGFsaXZlLApA
QCAtNzI4LDcgKzcyOCw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOwotICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVxdWVzdCwgKnRoaXMsIG9wdGlv
bnMpOworICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlv
bnMpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRYSFJTeW5jaHJv
bm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284986</attachid>
            <date>2016-07-31 23:34:14 -0700</date>
            <delta_ts>2016-08-01 00:03:53 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-160338-20160801083254.patch</filename>
            <type>text/plain</type>
            <size>41680</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzOTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjk2ZDIyYjEyZWRkNTk0
YTlmZGViZDQzMDM3MzU4YzEwNTc5YTdhMi4uZjNlNDRhOWNhNDc3NWQ1NTZhYjIzNTE1MGMzMjhk
OTczYWM1NDMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDE2LTA3LTMxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uZkBnbWFpbC5jb20+CisKKyAgICAgICAgUmVkdWNlIHRoZSBudW1i
ZXIgb2YgUmVzb3VyY2VSZXF1ZXN0IGNvcGllcyBpbiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDMzOAor
CisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIE5vIG9ic2VydmFi
bGUgY2hhbmdlIG9mIGJlaGF2aW9yLgorCisgICAgICAgIFVwZGF0aW5nIG9uZSBvZiBDYWNoZWRS
ZXNvdXJjZVJlcXVlcyBjb25zdHJ1Y3RvciB0byB0YWtlIGEgUmVzb3VyY2VSZXF1ZXN0JiYuCisg
ICAgICAgIFRoaXMgYWxsb3dzIHJlZHVjaW5nIGEgUmVzb3VyY2VSZXF1ZXN0IGNvcHkgaW4gRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLgorICAgICAgICBVcGRhdGluZyBEb2N1bWVudExvYWRlciBh
bmQgTWVkaWFSZXNvdXJjZUxvYWRlciBhY2NvcmRpbmdseSAoZnV0dXJlIG9wdGltaXphdGlvbiBz
dGVwcyBtYXkgbG9vayBhdCBtYWtpbmcgdGhlc2UKKyAgICAgICAgdHdvIGxvYWRlcnMgbW9yZSBl
ZmZpY2llbnQgd2l0aCByZWdhcmRzIHRvIFJlc291cmNlIFJlcXVlc3QpLgorCisgICAgICAgIFVw
ZGF0aW5nIFRocmVhZGFibGVMb2FkZXIgdG8gdGFrZSBhIFJlc291cmNlUmVxdWVzdCYmLgorICAg
ICAgICBUaGlzIGFsbG93cyByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNvcGllcyBpbiBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuCisgICAgICAgIFVwZGF0aW5nIGNsaWVudHMgb2YgVGhyZWFkYWJs
ZUxvYWRlciBhY2NvcmRpbmdseS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRpZExvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAg
ICAgICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0Lmg6CisgICAgICAgICogZmlsZWFwaS9G
aWxlUmVhZGVyTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVSZWFkZXJMb2FkZXI6
OnN0YXJ0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6bG9hZFJlc291cmNlKToK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6bWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNj
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
cXVlc3QpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaDoKKyAg
ICAgICAgKiBsb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAqIGxvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5o
OgorICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6OldvcmtlclRocmVhZGFibGVMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKToKKyAgICAgICAgKiBsb2FkZXIv
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFk
YWJsZUxvYWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6
Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgICogcGFnZS9FdmVudFNvdXJjZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudFNvdXJjZTo6Y29ubmVjdCk6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0TG9hZGVy
Ojpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRMb2Fk
ZXI6OmxvYWRBc3luY2hyb25vdXNseSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KToKKwog
MjAxNi0wNy0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERy
b3AgW1N0cmljdFR5cGVDaGVja2luZ10gaW4gY2FzZXMgd2hlcmUgaXQgaXMgYSBuby1vcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaExvYWRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoTG9hZGVyLmNwcAppbmRleCA5MDA5NTI0
OTdmZjdhODk2Y2JjYmE2MjRmODEyZmIxNzYxMmRhMGIwLi43N2NhZmQwMzA2MTJkMTc1NjAzMzVj
NjI5Njk1Y2U3YzU0N2NiNTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoTG9hZGVyLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEZldGNoTG9hZGVyOjpzdGFydChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBCbG9iJiBibG9iKQogICAgIG9wdGlvbnMu
bW9kZSA9IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbjsKICAgICBvcHRpb25zLmNvbnRl
bnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gQ29udGVudFNlY3VyaXR5UG9saWN5RW5mb3Jj
ZW1lbnQ6OkRvTm90RW5mb3JjZTsKIAotICAgIG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKCZjb250ZXh0LCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBtX2xvYWRlciA9
IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSgmY29udGV4dCwgdGhpcywgV1RGTW92ZShyZXF1ZXN0
KSwgb3B0aW9ucyk7CiAgICAgbV9pc1N0YXJ0ZWQgPSBtX2xvYWRlcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKaW5kZXggNTViZjc5ODQ4OGRkNGUzMTA0M2UxNGM4MDQxMWEzZDFlNTAzYjQy
My4uNzE0YzZlODBiZDNhYTcwYjUxNzhiYzcxNjA5MTUyNzk1OGRkYzUxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCkBAIC02ODc0LDcgKzY4NzQsNyBAQCB2b2lkIERvY3VtZW50OjppbnZhbGlk
YXRlRE9NQ29va2llQ2FjaGUoKQogICAgIG1fY2FjaGVkRE9NQ29va2llcyA9IFN0cmluZygpOwog
fQogCi12b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpCit2b2lkIERvY3VtZW50OjpkaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KCkKIHsKICAgICAvLyBTeW5jaHJvbm91cyByZXNvdXJjZXMgbG9hZGluZyBjYW4gc2V0IGNv
b2tpZXMgc28gd2UgaW52YWxpZGF0ZSB0aGUgY29va2llcyBjYWNoZQogICAgIC8vIGluIHRoaXMg
Y2FzZSwgdG8gYmUgc2FmZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggYWJmYzk0M2ExNDVmODFl
MzVkNDI5NDcxNWRlY2ZiMmE2MjNkMzllNi4uZWFmNDkxMTQ5NzI5N2IzMzQ3NTdiY2QwNTc4M2I4
NWQ5NWQzZDg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE0MjEsNyArMTQyMSw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRDYWNoZWRET01Db29raWVzKGNvbnN0IFN0cmluZyYpOwogICAg
IGJvb2wgaXNET01Db29raWVDYWNoZVZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9jb29raWVDYWNo
ZUV4cGlyeVRpbWVyLmlzQWN0aXZlKCk7IH0KICAgICB2b2lkIGludmFsaWRhdGVET01Db29raWVD
YWNoZSgpOwotICAgIHZvaWQgZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKSBmaW5hbDsKKyAgICB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoKSBmaW5hbDsKIAogICAgIHZvaWQgY2hlY2tWaWV3cG9ydERlcGVuZGVudFBpY3R1cmVzKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRl
eCA3ZTkwZTAyNGY4ZGEzMzA4NGIyY2M2Y2MzMDdkMzA2NzdhNDlmMDdiLi5hODUxYjliYWRjOTNh
NDM2YjFmOWI4MmJkNjAwNDk4YzAyMDUwOTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYgbWVzc2Fn
ZVBvcnQpCiAgICAgbV9tZXNzYWdlUG9ydHMucmVtb3ZlKCZtZXNzYWdlUG9ydCk7CiB9CiAKLXZv
aWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlkTG9hZFJlc291cmNlU3luY2hyb25vdXNseShj
b25zdCBSZXNvdXJjZVJlcXVlc3QmKQordm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaWRM
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggZjE5NmJiOGQ1MDAzOWZlYTcyOGQ3MmE2OGNj
MmY2MzkwZTdlOGU4YS4uNjBmOWFiYjFlYWNlZjg4NjE0YzU0MDM3OGNkYzcyMWViMTQyMTk3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC0xMzIs
NyArMTMyLDcgQEAgcHVibGljOgogICAgIHZvaWQgY3JlYXRlZE1lc3NhZ2VQb3J0KE1lc3NhZ2VQ
b3J0Jik7CiAgICAgdm9pZCBkZXN0cm95ZWRNZXNzYWdlUG9ydChNZXNzYWdlUG9ydCYpOwogCi0g
ICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CisgICAgdmlydHVhbCB2b2lkIGRpZExvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoKTsKIAogICAgIHZvaWQgcmVmKCkgeyByZWZTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
ICAgICB2b2lkIGRlcmVmKCkgeyBkZXJlZlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlckxvYWRlci5jcHAKaW5kZXggZjEzYWJmNDBi
NWQxNzUxM2NkNzZlYjgyZDIwNWExYWE0NTAwMDNiNy4uYWU2ODFlNWQyNTAzYmUyMzE0MzUxMjhm
YTQyZjRmYTM5ZmFmMDg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxl
UmVhZGVyTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXJM
b2FkZXIuY3BwCkBAIC05NSw5ICs5NSw5IEBAIHZvaWQgRmlsZVJlYWRlckxvYWRlcjo6c3RhcnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQmxvCiAgICAg
b3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudCA9IENvbnRlbnRTZWN1cml0
eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9yY2U7CiAKICAgICBpZiAobV9jbGllbnQpCi0g
ICAgICAgIG1fbG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMpOworICAgICAgICBtX2xvYWRlciA9IFRo
cmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0aGlzLCBXVEZN
b3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKICAgICBlbHNlCi0gICAgICAgIFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgcmVx
dWVzdCwgKnRoaXMsIG9wdGlvbnMpOworICAgICAgICBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUocmVxdWVz
dCksICp0aGlzLCBvcHRpb25zKTsKIH0KIAogdm9pZCBGaWxlUmVhZGVyTG9hZGVyOjpjYW5jZWwo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50
LmNwcAppbmRleCA5M2U1OWJmNWEwNDVlNThmZmUwMTYzZGZjMzAzOTVjZDkwZmVkZGNiLi44MTFj
Y2JhODk2MTMxNzUwNWQzNTM0OGJhZDQxZTA5OTgzZWVhYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNjc5LDcgKzY3
OSw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpsb2FkUmVzb3VyY2UoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAgICAgLy8gSW5zcGVjdG9yVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCBkZWxldGVzIGl0c2VsZiB3aGVuIHRoZSBsb2FkIGNvbXBsZXRlcy4KICAg
ICBJbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBpbnNwZWN0b3JUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50ID0gbmV3IEluc3BlY3RvclRocmVhZGFibGVMb2FkZXJDbGllbnQoY2FsbGJhY2su
Y29weVJlZigpKTsKIAotICAgIGF1dG8gbG9hZGVyID0gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUoKmRvY3VtZW50LCAqaW5zcGVjdG9yVGhyZWFkYWJsZUxvYWRlckNsaWVudCwgcmVx
dWVzdCwgb3B0aW9ucyk7CisgICAgYXV0byBsb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6OmNyZWF0ZSgqZG9jdW1lbnQsICppbnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LCBX
VEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKICAgICBpZiAoIWxvYWRlcikgewogICAgICAgICBp
bnNwZWN0b3JUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LT5kaWRGYWlsTG9hZGVyQ3JlYXRpb24oKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAK
aW5kZXggOTU1ODY3NWY1OWU4MmNkYTQyYmM0YWI3NmM0Y2VhYTViNmJmZTUyYS4uMjBkOThjMzY5
NjE5YTkzYTE4ZGE0MGExZDI1YTQ0ZWU3M2ZhNzc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xNTExLDcgKzE1MTEsNyBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKQogICAgIHJlcXVlc3QubWFrZVVuY29uZGl0
aW9uYWwoKTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXNvdXJjZUxvYWRlck9wdGlv
bnM+IG1haW5SZXNvdXJjZUxvYWRPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwg
QnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6
OkluY2x1ZGUsIFNraXBTZWN1cml0eUNoZWNrLCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywg
SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6
RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBD
YWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmcpOwotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBj
YWNoZWRSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCwgbWFpblJlc291cmNlTG9hZE9wdGlvbnMpOwor
ICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBjYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0KHJlcXVlc3QpLCBtYWluUmVzb3VyY2VMb2FkT3B0aW9ucyk7CiAgICAgY2FjaGVkUmVz
b3VyY2VSZXF1ZXN0LnNldEluaXRpYXRvcigqdGhpcyk7CiAgICAgbV9tYWluUmVzb3VyY2UgPSBt
X2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0TWFpblJlc291cmNlKGNhY2hlZFJlc291cmNl
UmVxdWVzdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAKaW5kZXggY2Y5MjViMmZhM2U5Zjk3MTMzZjBmODhiNDgzYTY0OTM0NzMy
YzUwYi4uNGI3MmFmNzNmZjdhYjdmMTc0MWMzOWVmZWIwZmUyOWVmMjljMmY0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTU2LDMyICs1NiwzMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3Vy
aXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1bWVudCwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucywgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiYmIG9yaWdpbiwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4m
JiBjb250ZW50U2VjdXJpdHlQb2xpY3kpCiB7CiAgICAgLy8gVGhlIGxvYWRlciB3aWxsIGJlIGRl
bGV0ZWQgYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGV4aXRzLgotICAgIFJlZlB0cjxEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIoZG9jdW1lbnQsIGNsaWVudCwgTG9hZFN5bmNocm9ub3VzbHksIHJlcXVlc3QsIG9w
dGlvbnMsIFdURk1vdmUob3JpZ2luKSwgV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3kpKSk7
CisgICAgUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gYWRvcHRSZWYo
bmV3IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihkb2N1bWVudCwgY2xpZW50LCBMb2FkU3luY2hy
b25vdXNseSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92ZShvcmlnaW4pLCBXVEZN
b3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpKTsKICAgICBBU1NFUlQobG9hZGVyLT5oYXNPbmVS
ZWYoKSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVM
b2FkZXJPcHRpb25zJiBvcHRpb25zKQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRG9jdW1lbnQmIGRvY3VtZW50LCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVh
ZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoZG9jdW1lbnQsIHJlcXVlc3QsIGNsaWVudCwgb3B0aW9ucywgbnVsbHB0ciwgbnVsbHB0
cik7CisgICAgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb2N1bWVudCwgV1RGTW92ZShyZXF1
ZXN0KSwgY2xpZW50LCBvcHRpb25zLCBudWxscHRyLCBudWxscHRyKTsKIH0KIAotUmVmUHRyPERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUo
RG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBvcmlnaW4sIHN0ZDo6dW5pcXVlX3B0
cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYgY29udGVudFNlY3VyaXR5UG9saWN5KQorUmVmUHRy
PERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVh
dGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBv
cHRpb25zLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8
Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKIHsKLSAgICBS
ZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2FkZXIgPSBhZG9wdFJlZihuZXcgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyKGRvY3VtZW50LCBjbGllbnQsIExvYWRBc3luY2hyb25vdXNs
eSwgcmVxdWVzdCwgb3B0aW9ucywgV1RGTW92ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbnRlbnRTZWN1
cml0eVBvbGljeSkpKTsKKyAgICBSZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBsb2Fk
ZXIgPSBhZG9wdFJlZihuZXcgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKGRvY3VtZW50LCBjbGll
bnQsIExvYWRBc3luY2hyb25vdXNseSwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucywgV1RGTW92
ZShvcmlnaW4pLCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeSkpKTsKICAgICBpZiAoIWxv
YWRlci0+aXNMb2FkaW5nKCkpCiAgICAgICAgIGxvYWRlciA9IG51bGxwdHI7CiAgICAgcmV0dXJu
IGxvYWRlcjsKIH0KIAotUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCitSZWZQdHI8RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyPiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1bWVudCYgZG9j
dW1lbnQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZShkb2N1bWVudCwgY2xpZW50LCByZXF1ZXN0LCBvcHRpb25zLCBudWxscHRy
LCBudWxscHRyKTsKKyAgICByZXR1cm4gY3JlYXRlKGRvY3VtZW50LCBjbGllbnQsIFdURk1vdmUo
cmVxdWVzdCksIG9wdGlvbnMsIG51bGxwdHIsIG51bGxwdHIpOwogfQogCi1Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCYgZG9jdW1lbnQs
IFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCwgQmxvY2tpbmdCZWhhdmlvciBibG9ja2lu
Z0JlaGF2aW9yLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFRocmVhZGFi
bGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgb3JpZ2lu
LCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiYmIGNvbnRlbnRTZWN1cml0
eVBvbGljeSkKK0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBC
bG9ja2luZ0JlaGF2aW9yIGJsb2NraW5nQmVoYXZpb3IsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBSZWZQdHI8U2VjdXJp
dHlPcmlnaW4+JiYgb3JpZ2luLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5UG9saWN5
PiYmIGNvbnRlbnRTZWN1cml0eVBvbGljeSkKICAgICA6IG1fY2xpZW50KCZjbGllbnQpCiAgICAg
LCBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9vcHRpb25zKG9wdGlvbnMpCkBAIC05OSw3
ICs5OSw3IEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyKERvY3VtZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsCiAgICAgbV9vcHRpb25zLnNldEFsbG93
Q3JlZGVudGlhbHMoKG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRl
bnRpYWxzOjpJbmNsdWRlIHx8IChtX29wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25z
OjpDcmVkZW50aWFsczo6U2FtZU9yaWdpbiAmJiBtX3NhbWVPcmlnaW5SZXF1ZXN0KSkgPyBBbGxv
d1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKTsKIAogICAg
IGlmIChtX3NhbWVPcmlnaW5SZXF1ZXN0IHx8IG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9u
czo6TW9kZTo6Tm9Db3JzKSB7Ci0gICAgICAgIGxvYWRSZXF1ZXN0KHJlcXVlc3QsIERvU2VjdXJp
dHlDaGVjayk7CisgICAgICAgIGxvYWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIERvU2VjdXJp
dHlDaGVjayk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwOCwyNSArMTA4LDI1IEBA
IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKERvY3Vt
ZW50JiBkb2N1bWVudCwgVGhyZWFkYWJsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
YWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KHJlcXVlc3QpOworICAgIG1ha2VDcm9zc09yaWdp
bkFjY2Vzc1JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKLXZvaWQgRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jv
c3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiB7CiAgICAg
QVNTRVJUKG1fb3B0aW9ucy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6Q29ycyk7CiAKICAg
ICBpZiAoKG1fb3B0aW9ucy5wcmVmbGlnaHRQb2xpY3kgPT0gQ29uc2lkZXJQcmVmbGlnaHQgJiYg
aXNTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QocmVxdWVzdC5odHRwTWV0aG9kKCksIHJl
cXVlc3QuaHR0cEhlYWRlckZpZWxkcygpKSkgfHwgbV9vcHRpb25zLnByZWZsaWdodFBvbGljeSA9
PSBQcmV2ZW50UHJlZmxpZ2h0KQotICAgICAgICBtYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NS
ZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICBtYWtlU2ltcGxlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1
ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogICAgIGVsc2UgewogICAgICAgICBtX3NpbXBsZVJlcXVl
c3QgPSBmYWxzZTsKICAgICAgICAgaWYgKENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6
OnNpbmdsZXRvbigpLmNhblNraXBQcmVmbGlnaHQoc2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygp
LCByZXF1ZXN0LnVybCgpLCBtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscygpLCByZXF1ZXN0Lmh0
dHBNZXRob2QoKSwgcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkpKQotICAgICAgICAgICAgcHJl
ZmxpZ2h0U3VjY2VzcyhSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOworICAgICAgICAgICAgcHJl
ZmxpZ2h0U3VjY2VzcyhXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1
ZXN0KHJlcXVlc3QpKTsKKyAgICAgICAgICAgIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RX
aXRoUHJlZmxpZ2h0KFdURk1vdmUocmVxdWVzdCkpOwogICAgIH0KIH0KIAotdm9pZCBEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI6Om1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQordm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXI6Om1ha2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkKIHsKICAgICBBU1NFUlQobV9vcHRpb25zLnByZWZsaWdodFBvbGljeSAhPSBGb3Jj
ZVByZWZsaWdodCk7CiAgICAgQVNTRVJUKG1fb3B0aW9ucy5wcmVmbGlnaHRQb2xpY3kgPT0gUHJl
dmVudFByZWZsaWdodCB8fCBpc1NpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChyZXF1ZXN0
Lmh0dHBNZXRob2QoKSwgcmVxdWVzdC5odHRwSGVhZGVyRmllbGRzKCkpKTsKQEAgLTEzNyw5ICsx
MzcsOCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bWFrZVNpbXBsZUNyb3NzT3Jp
Z2luQWNjZXNzUmVxdWVzdChjb25zdCBSZXNvdXJjZQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgYXV0byBjcm9zc09yaWdpblJlcXVlc3QgPSByZXF1ZXN0OwotICAgIHVwZGF0ZVJlcXVl
c3RGb3JBY2Nlc3NDb250cm9sKGNyb3NzT3JpZ2luUmVxdWVzdCwgc2VjdXJpdHlPcmlnaW4oKSwg
bV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMoKSk7Ci0gICAgbG9hZFJlcXVlc3QoY3Jvc3NPcmln
aW5SZXF1ZXN0LCBEb1NlY3VyaXR5Q2hlY2spOworICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3ND
b250cm9sKHJlcXVlc3QsIHNlY3VyaXR5T3JpZ2luKCksIG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRp
YWxzKCkpOworICAgIGxvYWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCksIERvU2VjdXJpdHlDaGVj
ayk7CiB9CiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjptYWtlQ3Jvc3NPcmlnaW5B
Y2Nlc3NSZXF1ZXN0V2l0aFByZWZsaWdodChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQpAQCAt
MjUwLDcgKzI0OSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpyZWRpcmVjdFJl
Y2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgUmVzb3VyCiAKICAgICAgICAgICAgIGNs
ZWFuUmVkaXJlY3RlZFJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKHJlcXVlc3QpOwogCi0gICAgICAg
ICAgICBtYWtlQ3Jvc3NPcmlnaW5BY2Nlc3NSZXF1ZXN0KHJlcXVlc3QpOworICAgICAgICAgICAg
bWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtMzQwLDcgKzMzOSw3IEBA
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRTdWNjZXNzKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgbV9wcmVmbGlnaHRDaGVja2VyID0gTnVsbG9wdDsKIAog
ICAgIC8vIEl0IHNob3VsZCBiZSBvayB0byBza2lwIHRoZSBzZWN1cml0eSBjaGVjayBzaW5jZSB3
ZSBhbHJlYWR5IGFza2VkIGFib3V0IHRoZSBwcmVmbGlnaHQgcmVxdWVzdC4KLSAgICBsb2FkUmVx
dWVzdChhY3R1YWxSZXF1ZXN0LCBTa2lwU2VjdXJpdHlDaGVjayk7CisgICAgbG9hZFJlcXVlc3Qo
V1RGTW92ZShhY3R1YWxSZXF1ZXN0KSwgU2tpcFNlY3VyaXR5Q2hlY2spOwogfQogCiB2b2lkIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cHJlZmxpZ2h0RmFpbHVyZSh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMzU0LDcgKzM1Myw3IEBA
IHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWlsdXJlKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QKICAgICBtX2NsaWVudC0+ZGlkRmFpbChlcnJvcik7CiB9
CiAKLXZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaykK
K3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2spCiB7CiAgICAg
Ly8gQW55IGNyZWRlbnRpYWwgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNyb3Nz
LXNpdGUgcmVxdWVzdHMuCiAgICAgY29uc3QgVVJMJiByZXF1ZXN0VVJMID0gcmVxdWVzdC51cmwo
KTsKQEAgLTM2OSw3ICszNjgsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9h
ZFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTZWN1cgogICAgICAgICAv
LyBTZXQgdG8gTm9Db3JzIGFzIENPUlMgY2hlY2tzIGFyZSBkb25lIGluIERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcgogICAgICAgICBvcHRpb25zLm1vZGUgPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5v
Q29yczsKIAotICAgICAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgbmV3UmVxdWVzdChyZXF1ZXN0
LCBvcHRpb25zKTsKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IG5ld1JlcXVlc3QoV1RG
TW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CiAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnJlc291cmNlVGltaW5nRW5hYmxlZCgpKQogICAgICAgICAg
ICAgbmV3UmVxdWVzdC5zZXRJbml0aWF0b3IobV9vcHRpb25zLmluaXRpYXRvcik7CiAgICAgICAg
IG5ld1JlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldEFsbG93Q29va2llcyhtX29w
dGlvbnMuYWxsb3dDcmVkZW50aWFscygpID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5o
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4
IDUxZjgzZDRkN2Y4ZjA0ZGE2NzM2NGVkNjdkNzhlODZmYjI2MTUwNmEuLjA5YWY0Yzk1Mjk5NWUy
M2JiYzkzN2UyODY0YWE3OTg2ZDU5ODhiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTQ1LDExICs0NSwxMSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiwgcHVibGljIFRocmVhZGFibGVM
b2FkZXIsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgIHsKICAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgdm9pZCBsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jiwg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiwg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8Q29udGVudFNlY3VyaXR5
UG9saWN5PiYmKTsKLSAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShEb2N1bWVudCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGll
bnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOworICAgICAgICBzdGF0aWMgdm9p
ZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50JiwgUmVzb3VyY2VSZXF1ZXN0JiYs
IFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYs
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiwgc3RkOjp1bmlxdWVfcHRyPENvbnRlbnRTZWN1cml0
eVBvbGljeT4mJik7CisgICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoRG9jdW1lbnQmLCBSZXNvdXJjZVJlcXVlc3QmJiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYs
IGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CiAKLSAgICAgICAgc3RhdGljIFJlZlB0
cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShEb2N1bWVudCYsIFRocmVhZGFibGVM
b2FkZXJDbGllbnQmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9h
ZGVyT3B0aW9ucyYsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiwgc3RkOjp1bmlxdWVfcHRyPENv
bnRlbnRTZWN1cml0eVBvbGljeT4mJik7Ci0gICAgICAgIHN0YXRpYyBSZWZQdHI8RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoRG9jdW1lbnQmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMm
KTsKKyAgICAgICAgc3RhdGljIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IGNyZWF0
ZShEb2N1bWVudCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBSZXNvdXJjZVJlcXVlc3QmJiwg
Y29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYs
IHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYpOworICAgICAgICBzdGF0
aWMgUmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50JiwgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9ucyYpOwogCiAgICAgICAgIHZpcnR1YWwgfkRvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcigpOwogCkBAIC03MSw3ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
ICAgIExvYWRBc3luY2hyb25vdXNseQogICAgICAgICB9OwogCi0gICAgICAgIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcihEb2N1bWVudCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBCbG9ja2lu
Z0JlaGF2aW9yLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVy
T3B0aW9ucyYsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiwgc3RkOjp1bmlxdWVfcHRyPENvbnRl
bnRTZWN1cml0eVBvbGljeT4mJik7CisgICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihE
b2N1bWVudCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBCbG9ja2luZ0JlaGF2aW9yLCBSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmLCBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+JiYsIHN0ZDo6dW5pcXVlX3B0cjxDb250ZW50U2VjdXJpdHlQb2xpY3k+JiYp
OwogCiAgICAgICAgIHZvaWQgY2xlYXJSZXNvdXJjZSgpOwogCkBAIC04NiwxMyArODYsMTMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHVuc2lnbmVk
IGxvbmcgaWRlbnRpZmllciwgY29uc3QgY2hhciogZGF0YSwgaW50IGRhdGFMZW5ndGgpOwogICAg
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBkb3Vi
bGUgZmluaXNoVGltZSk7CiAgICAgICAgIHZvaWQgZGlkRmFpbCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICAgICAgdm9pZCBtYWtlQ3Jvc3NPcmln
aW5BY2Nlc3NSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwotICAgICAgICB2b2lkIG1h
a2VTaW1wbGVDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CisgICAgICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJik7CisgICAgICAgIHZvaWQgbWFrZVNpbXBsZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJik7CiAgICAgICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVx
dWVzdFdpdGhQcmVmbGlnaHQoUmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgICAgICB2b2lkIHByZWZs
aWdodFN1Y2Nlc3MoUmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgICAgICB2b2lkIHByZWZsaWdodEZh
aWx1cmUodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAK
LSAgICAgICAgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBTZWN1cml0
eUNoZWNrUG9saWN5KTsKKyAgICAgICAgdm9pZCBsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiwgU2VjdXJpdHlDaGVja1BvbGljeSk7CiAgICAgICAgIGJvb2wgaXNBbGxvd2VkUmVkaXJlY3Qo
Y29uc3QgVVJMJik7CiAgICAgICAgIGJvb2wgaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xp
Y3koY29uc3QgVVJMJiwgYm9vbCBkaWRSZWRpcmVjdCA9IGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDljNTcyMmRiMGM1YWI2
NjMzZDI1MGRmNzRiYjc4YTE5ZTQ1NzdkOGIuLmYxOTc5YjU3NmM4OWVmZWY3N2JmNmM5M2U1Y2U0
ZmNlNWM3ODllODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxv
YWRlci5jcHAKQEAgLTY1LDggKzY1LDkgQEAgUmVmUHRyPFBsYXRmb3JtTWVkaWFSZXNvdXJjZT4g
TWVkaWFSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKGNvbnN0IFJlc291cmMKICAgICBE
YXRhQnVmZmVyaW5nUG9saWN5IGJ1ZmZlcmluZ1BvbGljeSA9IG9wdGlvbnMgJiBMb2FkT3B0aW9u
OjpCdWZmZXJEYXRhID8gV2ViQ29yZTo6QnVmZmVyRGF0YSA6IFdlYkNvcmU6OkRvTm90QnVmZmVy
RGF0YTsKICAgICBhdXRvIGNhY2hpbmdQb2xpY3kgPSBvcHRpb25zICYgTG9hZE9wdGlvbjo6RGlz
YWxsb3dDYWNoaW5nID8gQ2FjaGluZ1BvbGljeTo6RGlzYWxsb3dDYWNoaW5nIDogQ2FjaGluZ1Bv
bGljeTo6QWxsb3dDYWNoaW5nOwogCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gcmVt
b3ZlIHRoZSBjb3B5IG9mIHJlcXVlc3Qgd2hlbiBjcmVhcmluZyBjYWNoZVJlcXVlc3QuCiAgICAg
Ly8gRklYTUU6IFNraXAgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY2hlY2sgaWYgdGhlIGVsZW1l
bnQgdGhhdCBpbml0aXRhdGVkIHRoaXMgcmVxdWVzdCBpcyBpbiBhIHVzZXItYWdlbnQgc2hhZG93
IHRyZWUuIFNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTUw
NT4uCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlUmVxdWVzdChyZXF1ZXN0LCBSZXNv
dXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIGJ1ZmZl
cmluZ1BvbGljeSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGlj
eTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMsIEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6
OkluY2x1ZGUsIERvU2VjdXJpdHlDaGVjaywgRmV0Y2hPcHRpb25zOjpNb2RlOjpOb0NvcnMsIERv
Tm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlv
bjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5n
LCBjYWNoaW5nUG9saWN5KSk7CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2Fs
bGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgYnVmZmVyaW5nUG9saWN5LCBBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpNYXlBc2tDbGllbnRGb3JDcmVkZW50
aWFscywgRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6SW5jbHVkZSwgRG9TZWN1cml0eUNoZWNr
LCBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5vQ29ycywgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZv
LCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNM
b2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIGNhY2hpbmdQb2xpY3kpKTsKIAogICAg
IGNhY2hlUmVxdWVzdC5zZXRBc1BvdGVudGlhbGx5Q3Jvc3NPcmlnaW4obV9jcm9zc09yaWdpbk1v
ZGUsICptX2RvY3VtZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Ro
cmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwCmluZGV4IGJmNDUwZjZhZGQxNWJlODNhM2RmNzUzOTgxN2ExNTExZmQ1YzZkNDMuLmI5
ZjI0MTQ0ZGUxMTg1ZjA3NTdmM2MzNThlNGI1ODA0YTdjZjM2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTU4LDI2ICs1OCwyNiBAQCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9uczo6VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMoY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiBiYQogewogfQogCi1SZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFk
YWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVh
ZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK1JlZlB0cjxUaHJlYWRh
YmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xpZW50LCBSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsK
ICAgICBBU1NFUlQoY2xpZW50KTsKICAgICBBU1NFUlQoY29udGV4dCk7CiAKICAgICBpZiAoaXM8
V29ya2VyR2xvYmFsU2NvcGU+KCpjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIFdvcmtlclRocmVh
ZGFibGVMb2FkZXI6OmNyZWF0ZShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCks
IGNsaWVudCwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSwgcmVxdWVzdCwgb3B0aW9ucyk7
CisgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLCBjbGllbnQsIFdvcmtlclJ1bkxvb3A6OmRlZmF1
bHRNb2RlKCksIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMpOwogCi0gICAgcmV0dXJuIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKGRvd25jYXN0PERvY3VtZW50PigqY29udGV4dCks
ICpjbGllbnQsIHJlcXVlc3QsIG9wdGlvbnMpOworICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmNyZWF0ZShkb3duY2FzdDxEb2N1bWVudD4oKmNvbnRleHQpLCAqY2xpZW50LCBX
VEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKIH0KIAotdm9pZCBUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYg
Y2xpZW50LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKK3ZvaWQgVGhy
ZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25z
KQogewogICAgIEFTU0VSVChjb250ZXh0KTsKIAogICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29w
ZT4oKmNvbnRleHQpKQotICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KSwgcmVx
dWVzdCwgY2xpZW50LCBvcHRpb25zKTsKKyAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29u
dGV4dCksIFdURk1vdmUocmVxdWVzdCksIGNsaWVudCwgb3B0aW9ucyk7CiAgICAgZWxzZQotICAg
ICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KSwgcmVxdWVzdCwgY2xpZW50LCBvcHRpb25zKTsK
LSAgICBjb250ZXh0LT5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QpOworICAg
ICAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
ZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KSwgV1RGTW92ZShyZXF1ZXN0KSwgY2xpZW50LCBv
cHRpb25zKTsKKyAgICBjb250ZXh0LT5kaWRMb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9UaHJlYWRhYmxlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5oCmluZGV4IDc5YTljMzRhM2FhM2U3MjFiNDVhYTQ3NDI4MzYzNzRjOWU3ODFjNDAu
LmFmZjcwODU4MjU3ZTI2NjQ2MzBiN2RjNmM0ZTRkZmNmYzcwZGMyMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaApAQCAtNjksMTMgKzY5LDEzIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIGluaXRpYXRvcjsgLy8gVGhpcyBjYW5ub3QgYmUg
YW4gQXRvbWljU3RyaW5nLCBhcyBpc29sYXRlZENvcHkoKSB3b3VsZG4ndCBjcmVhdGUgYW4gb2Jq
ZWN0IHRoYXQncyBzYWZlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgogICAgIH07CiAK
LSAgICAvLyBVc2VmdWwgZm9yIGRvaW5nIGxvYWRlciBvcGVyYXRpb25zIGZyb20gYW55IHRocmVh
ZCAobm90IHRocmVhZHNhZmUsIAorICAgIC8vIFVzZWZ1bCBmb3IgZG9pbmcgbG9hZGVyIG9wZXJh
dGlvbnMgZnJvbSBhbnkgdGhyZWFkIChub3QgdGhyZWFkc2FmZSwKICAgICAvLyBqdXN0IGFibGUg
dG8gcnVuIG9uIHRocmVhZHMgb3RoZXIgdGhhbiB0aGUgbWFpbiB0aHJlYWQpLgogICAgIGNsYXNz
IFRocmVhZGFibGVMb2FkZXIgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJlYWRh
YmxlTG9hZGVyKTsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyYpOwotICAgICAgICBzdGF0aWMgUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJik7CisgICAgICAg
IHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFJlc291cmNlUmVxdWVzdCYmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgY29uc3Qg
VGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKKyAgICAgICAgc3RhdGljIFJlZlB0cjxUaHJlYWRh
YmxlTG9hZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQqLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOwogICAgICAgICB2b2lk
IHJlZigpIHsgcmVmVGhyZWFkYWJsZUxvYWRlcigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNzA5YWM2MTE1YjNhNzQ3Mzlm
YjFjNmIzN2JhNGViMWNjZTA2ZTZlYS4uYjBkZDUwYzhhNzY2NTRiMGQ0MjY3ZWQyNGUzYWMwYzE5
M2U5YWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFi
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmNwcApAQCAtNDksMTAgKzQ5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIGNvbnN0IGNoYXIgbG9hZFJlc291cmNlU3luY2hyb25vdXNseU1vZGVbXSA9ICJsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5TW9kZSI7CiAKLVdvcmtlclRocmVhZGFibGVMb2FkZXI6Oldvcmtl
clRocmVhZGFibGVMb2FkZXIoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlLCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMmIG9wdGlvbnMpCitXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyKFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSwgVGhyZWFkYWJsZUxvYWRl
ckNsaWVudCogY2xpZW50LCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKICAgICA6
IG1fd29ya2VyR2xvYmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpCiAgICAgLCBtX3dvcmtlckNs
aWVudFdyYXBwZXIoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGllbnQp
KQotICAgICwgbV9icmlkZ2UoKm5ldyBNYWluVGhyZWFkQnJpZGdlKCptX3dvcmtlckNsaWVudFdy
YXBwZXIsIHdvcmtlckdsb2JhbFNjb3BlLT50aHJlYWQoKS53b3JrZXJMb2FkZXJQcm94eSgpLCB0
YXNrTW9kZSwgcmVxdWVzdCwgb3B0aW9ucywgd29ya2VyR2xvYmFsU2NvcGUtPnVybCgpLnN0cmlw
cGVkRm9yVXNlQXNSZWZlcnJlcigpLCB3b3JrZXJHbG9iYWxTY29wZS0+c2VjdXJpdHlPcmlnaW4o
KSwgd29ya2VyR2xvYmFsU2NvcGUtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSkKKyAgICAsIG1f
YnJpZGdlKCpuZXcgTWFpblRocmVhZEJyaWRnZSgqbV93b3JrZXJDbGllbnRXcmFwcGVyLCB3b3Jr
ZXJHbG9iYWxTY29wZS0+dGhyZWFkKCkud29ya2VyTG9hZGVyUHJveHkoKSwgdGFza01vZGUsIFdU
Rk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIHdvcmtlckdsb2JhbFNjb3BlLT51cmwoKS5zdHJpcHBl
ZEZvclVzZUFzUmVmZXJyZXIoKSwgd29ya2VyR2xvYmFsU2NvcGUtPnNlY3VyaXR5T3JpZ2luKCks
IHdvcmtlckdsb2JhbFNjb3BlLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkpCiB7CiB9CiAKQEAg
LTYxLDcgKzYxLDcgQEAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6fldvcmtlclRocmVhZGFibGVM
b2FkZXIoKQogICAgIG1fYnJpZGdlLmRlc3Ryb3koKTsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckdsb2JhbFNjb3BlKiB3
b3JrZXJHbG9iYWxTY29wZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBUaHJlYWRh
YmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBv
cHRpb25zKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KFdvcmtlckdsb2JhbFNjb3BlKiB3b3JrZXJHbG9iYWxTY29wZSwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50LCBjb25zdCBUaHJl
YWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBXb3JrZXJSdW5Mb29wJiBydW5M
b29wID0gd29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLnJ1bkxvb3AoKTsKIApAQCAtNjksNyAr
NjksNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlcgogICAgIFN0cmluZyBtb2RlID0gbG9hZFJl
c291cmNlU3luY2hyb25vdXNseU1vZGU7CiAgICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpudW1iZXIo
cnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKSk7CiAKLSAgICBSZWZQdHI8V29ya2VyVGhyZWFkYWJs
ZUxvYWRlcj4gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckds
b2JhbFNjb3BlLCAmY2xpZW50LCBtb2RlLCByZXF1ZXN0LCBvcHRpb25zKTsKKyAgICBSZWZQdHI8
V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVyID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKHdvcmtlckdsb2JhbFNjb3BlLCAmY2xpZW50LCBtb2RlLCBXVEZNb3ZlKHJlcXVlc3Qp
LCBvcHRpb25zKTsKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdCA9IE1lc3NhZ2VR
dWV1ZU1lc3NhZ2VSZWNlaXZlZDsKICAgICB3aGlsZSAoIWxvYWRlci0+ZG9uZSgpICYmIHJlc3Vs
dCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKQogICAgICAgICByZXN1bHQgPSBydW5Mb29wLnJ1
bkluTW9kZSh3b3JrZXJHbG9iYWxTY29wZSwgbW9kZSk7CkBAIC05OCw3ICs5OCw3IEBAIExvYWRl
clRhc2tPcHRpb25zOjpMb2FkZXJUYXNrT3B0aW9ucyhjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0
aW9ucyYgb3B0aW9ucywgY29uCiB9CiAKIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXIm
IHdvcmtlckNsaWVudFdyYXBwZXIsIFdvcmtlckxvYWRlclByb3h5JiBsb2FkZXJQcm94eSwgY29u
c3QgU3RyaW5nJiB0YXNrTW9kZSwKLSAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBjb25zdCBTdHJpbmcmIG91
dGdvaW5nUmVmZXJyZXIsCisgICAgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVGhy
ZWFkYWJsZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZl
cnJlciwKICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNvbnN0IENv
bnRlbnRTZWN1cml0eVBvbGljeSogY29udGVudFNlY3VyaXR5UG9saWN5KQogICAgIDogbV93b3Jr
ZXJDbGllbnRXcmFwcGVyKCZ3b3JrZXJDbGllbnRXcmFwcGVyKQogICAgICwgbV9sb2FkZXJQcm94
eShsb2FkZXJQcm94eSkKQEAgLTExMiw2ICsxMTIsNyBAQCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
OjpNYWluVGhyZWFkQnJpZGdlOjpNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2FkZXJDbGll
bgogCiAgICAgYXV0byBvcHRpb25zQ29weSA9IHN0ZDo6bWFrZV91bmlxdWU8TG9hZGVyVGFza09w
dGlvbnM+KG9wdGlvbnMsIG91dGdvaW5nUmVmZXJyZXIsICpzZWN1cml0eU9yaWdpbik7CiAKKyAg
ICAvLyBDYW4gd2UgYmVuZWZpdCBmcm9tIHJlcXVlc3QgYmVpbmcgYW4gci12YWx1ZSB0byBjcmVh
dGUgbW9yZSBlZmZpY2llbnRseSBpdHMgaXNvbGF0ZWQgY29weT8KICAgICBtX2xvYWRlclByb3h5
LnBvc3RUYXNrVG9Mb2FkZXIoW3RoaXMsIHJlcXVlc3QgPSByZXF1ZXN0Lmlzb2xhdGVkQ29weSgp
LCBvcHRpb25zID0gV1RGTW92ZShvcHRpb25zQ29weSksIGNvbnRlbnRTZWN1cml0eVBvbGljeUNv
cHkgPSBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNvcHkpXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRl
eHQpOwpAQCAtMTIwLDcgKzEyMSw3IEBAIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJl
YWRCcmlkZ2U6Ok1haW5UaHJlYWRCcmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVuCiAKICAgICAg
ICAgLy8gRklYTUU6IElmIHRoZSBzaXRlIHJlcXVlc3RzIGEgbG9jYWwgcmVzb3VyY2UsIHRoZW4g
dGhpcyB3aWxsIHJldHVybiBhIG5vbi16ZXJvIHZhbHVlIGJ1dCB0aGUgc3luYyBwYXRoIHdpbGwg
cmV0dXJuIGEgMCB2YWx1ZS4KICAgICAgICAgLy8gRWl0aGVyIHRoaXMgc2hvdWxkIHJldHVybiAw
IG9yIHRoZSBvdGhlciBjb2RlIHBhdGggc2hvdWxkIGNhbGwgYSBmYWlsdXJlIGNhbGxiYWNrLgot
ICAgICAgICBtX21haW5UaHJlYWRMb2FkZXIgPSBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShkb2N1bWVudCwgKnRoaXMsIHJlcXVlc3QsIG9wdGlvbnMtPm9wdGlvbnMsIFdURk1vdmUo
b3B0aW9ucy0+b3JpZ2luKSwgV1RGTW92ZShjb250ZW50U2VjdXJpdHlQb2xpY3lDb3B5KSk7Cisg
ICAgICAgIG1fbWFpblRocmVhZExvYWRlciA9IERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKGRvY3VtZW50LCAqdGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucy0+b3B0aW9ucywg
V1RGTW92ZShvcHRpb25zLT5vcmlnaW4pLCBXVEZNb3ZlKGNvbnRlbnRTZWN1cml0eVBvbGljeUNv
cHkpKTsKICAgICAgICAgQVNTRVJUKG1fbWFpblRocmVhZExvYWRlciB8fCBtX2xvYWRpbmdGaW5p
c2hlZCk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29y
a2VyVGhyZWFkYWJsZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVh
ZGFibGVMb2FkZXIuaAppbmRleCAzYzdlODFhNTg1NDkyYWQxNmJkNTJlN2ZmNjcwNTU1ZjExNWU1
NGU2Li40NjQyYjQwYzA3MDM5NWZlZDc4ZWQyYjY4NGY2NGVhMzQwMjcyN2RhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTQ5LDEwICs0
OSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgV29ya2VyVGhyZWFkYWJsZUxv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZGFibGVMb2FkZXI+LCBwdWJsaWMg
VGhyZWFkYWJsZUxvYWRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
IHB1YmxpYzoKLSAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShX
b3JrZXJHbG9iYWxTY29wZSosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYpOwotICAgICAgICBzdGF0
aWMgUmVmPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShXb3JrZXJHbG9iYWxTY29wZSog
d29ya2VyR2xvYmFsU2NvcGUsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3Qg
U3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBU
aHJlYWRhYmxlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKKyAgICAgICAgc3RhdGljIHZvaWQgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShXb3JrZXJHbG9iYWxTY29wZSosIFJlc291cmNlUmVxdWVz
dCYmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlv
bnMmKTsKKyAgICAgICAgc3RhdGljIFJlZjxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUo
V29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlLCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
KHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIHRhc2tNb2RlLCByZXF1ZXN0LCBvcHRpb25zKSk7
CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVy
KHdvcmtlckdsb2JhbFNjb3BlLCBjbGllbnQsIHRhc2tNb2RlLCBXVEZNb3ZlKHJlcXVlc3QpLCBv
cHRpb25zKSk7CiAgICAgICAgIH0KIAogICAgICAgICB+V29ya2VyVGhyZWFkYWJsZUxvYWRlcigp
OwpAQCAtOTAsNyArOTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNsYXNzIE1h
aW5UaHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAgICAgICAg
IHB1YmxpYzoKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgd29ya2VyIGNvbnRl
eHQncyB0aHJlYWQuCi0gICAgICAgICAgICBNYWluVGhyZWFkQnJpZGdlKFRocmVhZGFibGVMb2Fk
ZXJDbGllbnRXcmFwcGVyJiwgV29ya2VyTG9hZGVyUHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tN
b2RlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9u
cyYsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwgY29uc3QgU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqKTsKKyAgICAgICAgICAgIE1haW5UaHJlYWRC
cmlkZ2UoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXImLCBXb3JrZXJMb2FkZXJQcm94eSYs
IGNvbnN0IFN0cmluZyYgdGFza01vZGUsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBUaHJlYWRh
YmxlTG9hZGVyT3B0aW9ucyYsIGNvbnN0IFN0cmluZyYgb3V0Z29pbmdSZWZlcnJlciwgY29uc3Qg
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3kqKTsKICAgICAgICAg
ICAgIHZvaWQgY2FuY2VsKCk7CiAgICAgICAgICAgICB2b2lkIGRlc3Ryb3koKTsKIApAQCAtMTIw
LDcgKzEyMCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFN0cmluZyBtX3Rh
c2tNb2RlOwogICAgICAgICB9OwogCi0gICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXIoV29y
a2VyR2xvYmFsU2NvcGUqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiB0
YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9w
dGlvbnMmKTsKKyAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxvYWRlcihXb3JrZXJHbG9iYWxTY29w
ZSosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMmKTsKIAogICAgICAg
ICBSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IG1fd29ya2VyR2xvYmFsU2NvcGU7CiAgICAgICAg
IFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gbV93b3JrZXJDbGllbnRXcmFw
cGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VSZXF1ZXN0LmNwcAppbmRleCA1NzM0NTAwYTc2Mjk3NjY5MjkwNDBlZmNhNDFkMjQwZWY2MWI2
YzhiLi5lMGZlN2M0MWQ2ZmRlZjU2MDRiNGRmM2MwMjg1OTc0MWI0NmQzYTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNw
cApAQCAtNDQsOCArNDQsOCBAQCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJlc291cmNl
UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdQogewogfQogCi1DYWNo
ZWRSZXNvdXJjZVJlcXVlc3Q6OkNhY2hlZFJlc291cmNlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRp
b25zKQotICAgIDogbV9yZXNvdXJjZVJlcXVlc3QocmVzb3VyY2VSZXF1ZXN0KQorQ2FjaGVkUmVz
b3VyY2VSZXF1ZXN0OjpDYWNoZWRSZXNvdXJjZVJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVz
b3VyY2VSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCisgICAg
OiBtX3Jlc291cmNlUmVxdWVzdChXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCkpCiAgICAgLCBtX29w
dGlvbnMob3B0aW9ucykKICAgICAsIG1fZm9yUHJlbG9hZChmYWxzZSkKICAgICAsIG1fZGVmZXIo
Tm9EZWZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuaAppbmRleCA5OWUzMmIyNzhhYTY4ZjFmNmRkMzIyZjA4MjJhYmJiNmVmZDY1
NTUyLi42M2ZmOGM0NWFjYmQxZGIwOThjNDRlMDdmOWEyMWMyMWYxYzQzMzQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBlbnVtIERlZmVyT3B0aW9uIHsgTm9EZWZlciwg
RGVmZXJyZWRCeUNsaWVudCB9OwogCiAgICAgZXhwbGljaXQgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNldCA9IFN0cmluZygp
LCBPcHRpb25hbDxSZXNvdXJjZUxvYWRQcmlvcml0eT4gPSBOdWxsb3B0KTsKLSAgICBDYWNoZWRS
ZXNvdXJjZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zJik7CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICBDYWNoZWRSZXNvdXJjZVJlcXVl
c3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8UmVzb3VyY2VMb2FkUHJpb3JpdHk+
KTsKICAgICB+Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNv
dXJjZS5jcHAKaW5kZXggYjg3OTcxOGU4ZjRlNTFmYTdiNDQ4MTQ1NzhiYmQ4YjNkYjI4Nzc3Mi4u
NjU1Mjg4MzdmZGJiMjU3ZGRiYTgzZjU4MGZlOTRkMGEzNjk0OWYyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9FdmVudFNvdXJjZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEV2ZW50U291cmNlOjpj
b25uZWN0KCkKICAgICBvcHRpb25zLnNldERhdGFCdWZmZXJpbmdQb2xpY3koRG9Ob3RCdWZmZXJE
YXRhKTsKICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50ID0gc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJp
dHlQb2xpY3koKSA/IENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OjpEb05vdEVuZm9y
Y2UgOiBDb250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDo6RW5mb3JjZUNvbm5lY3RTcmNE
aXJlY3RpdmU7CiAKLSAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIHJlcXVlc3QsIG9wdGlvbnMpOworICAgIG1fbG9h
ZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
dGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9ucyk7CiAKICAgICAvLyBGSVhNRTogQ2FuIHdl
IGp1c3QgdXNlIG1fbG9hZGVyIGZvciB0aGlzLCBudWxsIGl0IG91dCB3aGVuIGl0J3Mgbm8gbG9u
Z2VyIGluIGZsaWdodCwgYW5kIGVsaW1pbmF0ZSB0aGUgbV9yZXF1ZXN0SW5GbGlnaHQgbWVtYmVy
PwogICAgIGlmIChtX2xvYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcAppbmRleCA5OTM0ZThhNjRmYmFlZDRlOWFjYjE2YjAyYjVlN2M1Y2E4MzNk
MjQ1Li4zYmZkNjBkYmM2YTMyNDU5MjAyM2E4N2MyNjgyZGIyODhiMzNkMjYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC03Myw3ICs3Myw3
IEBAIHZvaWQgV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkU3luY2hyb25vdXNseShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpCiAgICAgb3B0aW9ucy5zZXRTZW5kTG9hZENhbGxi
YWNrcyhTZW5kQ2FsbGJhY2tzKTsKICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGljeUVu
Zm9yY2VtZW50ID0gY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ7CiAKLSAgICBXb3Jr
ZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KSwgKnJlcXVlc3QsICp0aGlz
LCBvcHRpb25zKTsKKyAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KSwgV1RGTW92ZSgqcmVxdWVzdCksICp0aGlzLCBvcHRpb25zKTsKIH0KIAogdm9pZCBXb3Jr
ZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBVUkwmIHVybCwgRmV0Y2hPcHRpb25zOjpN
b2RlIG1vZGUsIENvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50IGNvbnRlbnRTZWN1cml0
eVBvbGljeUVuZm9yY2VtZW50LCBXb3JrZXJTY3JpcHRMb2FkZXJDbGllbnQqIGNsaWVudCkKQEAg
LTk4LDcgKzk4LDcgQEAgdm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNs
eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXQKIAogICAgIC8vIER1cmluZyBj
cmVhdGUsIGNhbGxiYWNrcyBtYXkgaGFwcGVuIHdoaWNoIHJlbW92ZSB0aGUgbGFzdCByZWZlcmVu
Y2UgdG8gdGhpcyBvYmplY3QuCiAgICAgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7Ci0gICAgbV90aHJlYWRhYmxlTG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIHRoaXMsICpyZXF1ZXN0LCBvcHRpb25zKTsK
KyAgICBtX3RocmVhZGFibGVMb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgdGhpcywgV1RGTW92ZSgqcmVxdWVzdCksIG9wdGlvbnMpOwogfQog
CiBjb25zdCBVUkwmIFdvcmtlclNjcmlwdExvYWRlcjo6cmVzcG9uc2VVUkwoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNThiZGUxMjM5ZTNkM2NhMTA4ZDJi
YTlhZjdjMzNiOThjZjQ4M2ViZS4uZTI1YjA4MGNkMjJlNmI2OTcwMDcwM2I2ZDE4MThhZWFjNWFl
ZmY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC03MTQsNyArNzE0
LDcgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBl
YykKICAgICAgICAgLy8gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlIGNhbiByZXR1cm4gbnVsbCBo
ZXJlLCBmb3IgZXhhbXBsZSBpZiB3ZSdyZSBubyBsb25nZXIgYXR0YWNoZWQgdG8gYSBwYWdlIG9y
IGlmIGEgY29udGVudCBibG9ja2VyIGJsb2NrcyB0aGUgbG9hZC4KICAgICAgICAgLy8gVGhpcyBp
cyB0cnVlIHdoaWxlIHJ1bm5pbmcgb251bmxvYWQgaGFuZGxlcnMuCiAgICAgICAgIC8vIEZJWE1F
OiBNYXliZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gc2VuZCBYTUxIdHRwUmVxdWVzdHMgZnJvbSBv
bnVubG9hZCwgPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTA0Pi4K
LSAgICAgICAgbV9sb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKKyAgICAgICAgbV9sb2FkZXIg
PSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlz
LCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zKTsKIAogICAgICAgICAvLyBOZWl0aGVyIHRoaXMg
b2JqZWN0IG5vciB0aGUgSmF2YVNjcmlwdCB3cmFwcGVyIHNob3VsZCBiZSBkZWxldGVkIHdoaWxl
CiAgICAgICAgIC8vIGEgcmVxdWVzdCBpcyBpbiBwcm9ncmVzcyBiZWNhdXNlIHdlIG5lZWQgdG8g
a2VlcCB0aGUgbGlzdGVuZXJzIGFsaXZlLApAQCAtNzI3LDcgKzcyNyw3IEBAIHZvaWQgWE1MSHR0
cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhS
U3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwotICAgICAgICBUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgcmVxdWVzdCwgKnRoaXMsIG9wdGlvbnMpOworICAgICAgICBUaHJlYWRhYmxlTG9hZGVy
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RG
TW92ZShyZXF1ZXN0KSwgKnRoaXMsIG9wdGlvbnMpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZExvYWRYSFJTeW5jaHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>