<?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>176462</bug_id>
          
          <creation_ts>2017-09-06 08:54:23 -0700</creation_ts>
          <short_desc>Support caching of Response with a ReadableStream body</short_desc>
          <delta_ts>2017-09-27 12:34:46 -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>InRadar</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>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1345939</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-06 08:54:23 -0700</bug_when>
    <thetext>Support caching of Response with a ReadableStream body</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345950</commentid>
    <comment_count>1</comment_count>
      <attachid>320028</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-06 09:17:48 -0700</bug_when>
    <thetext>Created attachment 320028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346076</commentid>
    <comment_count>2</comment_count>
      <attachid>320028</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-06 13:26:02 -0700</bug_when>
    <thetext>Comment on attachment 320028
Patch

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

&gt; Source/WebCore/bindings/js/ReadableStream.cpp:105
&gt; +enum class Method { Locked, Disturbed };
&gt; +template&lt;Method method&gt;

I think this should be two separate functions, or one with a function as a parameter.  Most of the function is what is different.  Making two functions wouldn&apos;t duplicate much code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346095</commentid>
    <comment_count>3</comment_count>
      <attachid>320060</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-06 14:04:42 -0700</bug_when>
    <thetext>Created attachment 320060
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346096</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-09-06 14:08:46 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #2)
&gt; Comment on attachment 320028 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=320028&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ReadableStream.cpp:105
&gt; &gt; +enum class Method { Locked, Disturbed };
&gt; &gt; +template&lt;Method method&gt;
&gt; 
&gt; I think this should be two separate functions, or one with a function as a
&gt; parameter.  Most of the function is what is different.  Making two functions
&gt; wouldn&apos;t duplicate much code.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346098</commentid>
    <comment_count>5</comment_count>
      <attachid>320060</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-06 14:25:23 -0700</bug_when>
    <thetext>Comment on attachment 320060
Patch for landing

Clearing flags on attachment: 320060

Committed r221704: &lt;http://trac.webkit.org/changeset/221704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346099</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-06 14:25:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353495</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:34:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693521&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320028</attachid>
            <date>2017-09-06 09:17:48 -0700</date>
            <delta_ts>2017-09-06 14:04:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176462-20170906091747.patch</filename>
            <type>text/plain</type>
            <size>35892</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM2ZTk1YTViM2YxZDk1
YjgwM2RlYjdhZWU5ZWJiNTMwMjc5NTQ5Ni4uNmU5Y2IwMDczOTFkOGI4NGQ2YzZkNTYwZTMyZDJm
OTQ2MWMwODExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE3LTA5LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGNhY2hpbmcg
b2YgUmVzcG9uc2Ugd2l0aCBhIFJlYWRhYmxlU3RyZWFtIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC9jYWNoZS1zdG9y
YWdlL2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
d3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcHV0LXN0cmVhbS5odHRwcy5hbnkud29ya2VyLmh0bWwK
KworICAgICAgICBNYWtpbmcgRmV0Y2hSZXNwb25zZSB1c2UgbW9yZSBvZiBSZWFkYWJsZVN0cmVh
bToKKyAgICAgICAgLSBDbG9uaW5nIG9mIGl0cyBib2R5IGlzIGRvbmUgdGhyb3VnaCBSZWFkYWJs
ZVN0cmVhbS4KKyAgICAgICAgLSBDb21wdXRhdGlvbiBvZiBkaXN0dXJiZWQgYW5kIGxvY2tlZCBp
cyBkb25lIHRocm91Z2ggUmVhZGFibGVTdHJlYW0uCisgICAgICAgIC0gU3RvcmluZyBvZiB0aGUg
UmVhZGFibGVTdHJlYW0gYm9keSBnaXZlbiBhdCBjb25zdHJ1Y3RvciB0aW1lIGlzIGRvbmUgaW4g
RmV0Y2hCb2R5IGZvciBGZXRjaFJlc3BvbnNlLgorICAgICAgICBUaGlzIGFsbG93cyBtYWtpbmcg
RmV0Y2hSZXNwb25zZSBjbG9zZXIgdG8gRmV0Y2hSZXF1ZXN0LgorICAgICAgICBUaGlzIGFsc28g
YWxsb3dzIHRvIGNvcnJlY3RseSBjb21wdXRlIGRpc3R1cmJlZCBhbmQgbG9ja2VkIGluIGNsb25l
IGNhc2VzLgorCisgICAgICAgIEFkZGluZyB0aGUgYWJpbGl0eSB0byBjb25zdW1lIGEgUmVzcG9u
c2UgUmVhZGFibGVTdHJlYW0gYm9keSBhcyBhIFNoYXJlZEJ1ZmZlci4KKyAgICAgICAgVXNpbmcg
dGhhdCBhYmlsaXR5IGluIERPTUNhY2hlLgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0V2l0aFJlc3BvbnNlRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAgKiBNb2R1bGVz
L2NhY2hlL0RPTUNhY2hlLmg6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6cmVhZGFibGVTdHJlYW0gY29uc3QpOgorICAg
ICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Q29uc3VtZXI6OmV4dHJhY3QpOgorICAgICAgICAqIE1vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjppc0Rpc3R1cmJl
ZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6aXNEaXN0dXJiZWRP
ckxvY2tlZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5o
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6Omhhc1JlYWRhYmxlU3RyZWFtQm9k
eSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNlLmg6CisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoUmVz
cG9uc2U6OmNvbnN1bWVCb2R5RnJvbVJlYWRhYmxlU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5V2hlbkxvYWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFzU3RyZWFtKToKKyAgICAgICAgKiBNb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVz
cG9uc2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qczoKKyAg
ICAgICAgKGluaXRpYWxpemVGZXRjaFJlc3BvbnNlKToKKyAgICAgICAgKGNsb25lKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
YWxsRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnBpcGVUbyk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6dGVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJl
YW06OmlzTG9ja2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpp
c0Rpc3R1cmJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6aXNE
aXN0dXJiZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzUmVh
ZGFibGVTdHJlYW1EaXN0dXJiZWQpOgorCiAyMDE3LTA5LTAxICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBOZXR3b3JrUHJvY2VzcyBDYWNoZSBhbmQgQ2FjaGVz
IHNob3VsZCBiZSBjbGVhcmVkIHdoZW4gdGhlIGxhc3QgcmVsYXRlZCBXZWJQcm9jZXNzIENhY2hl
IG9yIENhY2hlU3RvcmFnZSBpcyBkZXN0cm95ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNo
ZS9ET01DYWNoZS5jcHAKaW5kZXggMDc1NTc4MjVlY2IwMjIxYWUyNzA3ODAzYTM2MTc3NWU0MzU3
YjFiOS4uZWVhMDNhOTUzYmUwODMyNDJhYWIxODdjMmY2NDA0MGJiM2QwYzU5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI5MSw2ICsyOTEsMjEgQEAg
dm9pZCBET01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJv
bWlzZURlZmVycmVkPHZvaWQ+JiYgcHIKICAgICB9CiB9CiAKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdp
dGhSZXNwb25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZl
dGNoUmVxdWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhj
ZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQoreworICAgIGlm
IChyZXNwb25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3Qo
cmVzcG9uc2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CisgICAgaWYgKGF1dG8g
YnVmZmVyID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQorICAgICAgICBib2R5
ID0gYnVmZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVz
dC5nZXQoKSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAg
ICBwcm9taXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOworICAgIH0pOworfQorCiB2b2lkIERP
TUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNw
b25zZSwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoVU5M
SUtFTFkoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCkBAIC0zMTQsMzAgKzMyOSwyNCBAQCB2
b2lkIERPTUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4m
JiByZXNwb25zZSwgRE9NUHJvbWlzZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBSZWFkYWJsZVN0cmVhbS4KLSAgICBpZiAocmVzcG9uc2Ut
Pmhhc1JlYWRhYmxlU3RyZWFtQm9keSgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2Vw
dGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoIkNhY2hpbmcgYSBSZXNwb25z
ZSB3aXRoIGRhdGEgc3RvcmVkIGluIGEgUmVhZGFibGVTdHJlYW0gaXMgbm90IHlldCBzdXBwb3J0
ZWQiKSB9KTsKKyAgICBpZiAocmVzcG9uc2UtPmlzRGlzdHVyYmVkT3JMb2NrZWQoKSkgeworICAg
ICAgICBwcm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgi
UmVzcG9uc2UgaXMgZGlzdHVyYmVkIG9yIGxvY2tlZCIpIH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKHJlc3BvbnNlLT5pc0Rpc3R1cmJlZCgpKSB7Ci0gICAgICAgIHByb21p
c2UucmVqZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXNwb25zZSBp
cyBkaXN0dXJiZWQgb3IgbG9ja2VkIikgfSk7CisgICAgaWYgKHJlc3BvbnNlLT5oYXNSZWFkYWJs
ZVN0cmVhbUJvZHkoKSkgeworICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAg
ICAgIHJlc3BvbnNlLT5jb25zdW1lQm9keUZyb21SZWFkYWJsZVN0cmVhbShbcHJvbWlzZSA9IFdU
Rk1vdmUocHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdU
Rk1vdmUocmVzcG9uc2UpLCB0aGlzXShFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4m
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgcHV0V2l0aFJlc3BvbnNlRGF0YShXVEZN
b3ZlKHByb21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92
ZShyZXN1bHQpKTsKKyAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAg
ICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChyZXNwb25zZS0+aXNM
b2FkaW5nKCkpIHsKICAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgICAgICBy
ZXNwb25zZS0+Y29uc3VtZUJvZHlXaGVuTG9hZGVkKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25z
ZSksIHRoaXNdKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwotICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9k
eSBib2R5OwotICAgICAgICAgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3VsdC5yZWxlYXNl
UmV0dXJuVmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNl
Tm9uTnVsbCgpOwotICAgICAgICAgICAgICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0
KCksIHJlc3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAg
ICAgICAgICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1dFdpdGhSZXNwb25zZURhdGEoV1RG
TW92ZShwcm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1v
dmUocmVzdWx0KSk7CiAgICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAg
ICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9N
Q2FjaGUuaAppbmRleCAxYWQwMDE5ODI5MDZjZmZkMjJjNDMwODk3ZWFkYjk3OGEyMDBjYWQxLi4y
MGE0OWU5OTFlNTMxZGNlYjUzNmRjNTM3MmUyNjA2NjRjMjIxYmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9jYWNoZS9ET01DYWNoZS5oCkBAIC02OSw2ICs2OSw4IEBAIHByaXZhdGU6CiAgICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wg
Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9p
ZCBwdXRXaXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0
Y2hSZXF1ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4+JiYpOworCiAgICAgdm9pZCByZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiwg
V1RGOjpGdW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAgICAg
VmVjdG9yPENhY2hlU3RvcmFnZVJlY29yZD4gcXVlcnlDYWNoZVdpdGhUYXJnZXRTdG9yYWdlKGNv
bnN0IEZldGNoUmVxdWVzdCYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiwgY29uc3QgVmVjdG9y
PENhY2hlU3RvcmFnZVJlY29yZD4mKTsKICAgICB2b2lkIHF1ZXJ5Q2FjaGUoUmVmPEZldGNoUmVx
dWVzdD4mJiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlv
bk9yPFZlY3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+PiYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHkuaAppbmRleCAyN2FjYzY5ODIxNTBmM2FhZmFmZDEwMTkyODBj
OWY3ZjJlNWYyM2E3Li5jM2FhN2ZlODFhNWIzNDhkYTgwYmY0ODg4ZDkwMWQ2YjM3NzFlODljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTgxLDYgKzgxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYW5Db25zdW1lcigpIHsgbV9jb25zdW1lci5jbGVhbigp
OyB9CiAKICAgICBGZXRjaEJvZHkgY2xvbmUoKTsKKyAgICBjb25zdCBSZWFkYWJsZVN0cmVhbSog
cmVhZGFibGVTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtLmdldCgpOyB9
CiAgICAgUmVhZGFibGVTdHJlYW0qIHJlYWRhYmxlU3RyZWFtKCkgeyByZXR1cm4gbV9yZWFkYWJs
ZVN0cmVhbS5nZXQoKTsgfQogICAgIHZvaWQgc2V0UmVhZGFibGVTdHJlYW0oUmVmPFJlYWRhYmxl
U3RyZWFtPiYmIHN0cmVhbSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGI5ZWUxZTEzNmI1NGM1OGIzN2ZlM2U5
OWIxYWRiNmM4MzU1MTViODAuLmQyZDUyNjBkNjEwZjcwMDUxNDU2NDA1ZWM5MDNmZTAzZjI4ZTBj
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29u
c3VtZXIuY3BwCkBAIC05Miw2ICs5MiwxMyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNv
bHZlV2l0aERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCB1bgogICAg
IHJlc29sdmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgbV90eXBlLCBtX2NvbnRl
bnRUeXBlLCBkYXRhLCBsZW5ndGgpOwogfQogCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpleHRy
YWN0KFJlYWRhYmxlU3RyZWFtJiBzdHJlYW0sIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJT
aW5rOjpDYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVCghbV9zaW5rKTsKKyAgICBt
X3NpbmsgPSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFdURk1vdmUo
Y2FsbGJhY2spKTsKKyAgICBtX3NpbmstPnBpcGVGcm9tKHN0cmVhbSk7Cit9CisKIHZvaWQgRmV0
Y2hCb2R5Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBS
ZWFkYWJsZVN0cmVhbSogc3RyZWFtKQogewogICAgIGlmIChzdHJlYW0pIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCBkZmQ4ZmIx
Y2JmNGZjYmVkNzY2M2U5ODM2OWQwYzVlYTI0ZmM5ZjE4Li5hNWUwMTgyNTc4MjFmNmRmYWI3YTAy
MzkwNzkzMzhkYTg5NWQ2N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlDb25zdW1lci5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2xlYW4oKTsKIAorICAgIHZvaWQgZXh0cmFjdChSZWFkYWJsZVN0cmVhbSYsIFJlYWRhYmxl
U3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpDYWxsYmFjayYmKTsKICAgICB2b2lkIHJlc29sdmUo
UmVmPERlZmVycmVkUHJvbWlzZT4mJiwgUmVhZGFibGVTdHJlYW0qKTsKICAgICB2b2lkIHJlc29s
dmVXaXRoRGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwg
dW5zaWduZWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
T3duZXIuY3BwCmluZGV4IDBmYjJkZjNjZjgxZWIzYmE4NTk5MDg2ZDg2YzFjNWZmYjBhN2FmNTQu
LmJjODZhZDI3Y2NiNjRkMzAzYjZkNjY0NzlmZmEyNjFiODcwYWEwYmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC01OSwxNCArNTks
MzMgQEAgdm9pZCBGZXRjaEJvZHlPd25lcjo6c3RvcCgpCiAgICAgfQogfQogCi1ib29sIEZldGNo
Qm9keU93bmVyOjppc0Rpc3R1cmJlZE9yTG9ja2VkKCkgY29uc3QKK2Jvb2wgRmV0Y2hCb2R5T3du
ZXI6OmlzRGlzdHVyYmVkKCkgY29uc3QKIHsKKyAgICBpZiAoaXNCb2R5TnVsbCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAobV9pc0Rpc3R1cmJlZCkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0gICAgaWYgKG1fcmVhZGFibGVTdHJl
YW1Tb3VyY2UgJiYgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+aXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZCgpKQorICAgIGlmIChib2R5KCkucmVhZGFibGVTdHJlYW0oKSkKKyAgICAgICAgcmV0dXJuIGJv
ZHkoKS5yZWFkYWJsZVN0cmVhbSgpLT5pc0Rpc3R1cmJlZCgpOworI2VuZGlmCisKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgRmV0Y2hCb2R5T3duZXI6OmlzRGlzdHVyYmVkT3JMb2NrZWQo
KSBjb25zdAoreworICAgIGlmIChpc0JvZHlOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmIChtX2lzRGlzdHVyYmVkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKworI2lmIEVO
QUJMRShTVFJFQU1TX0FQSSkKKyAgICBpZiAoYm9keSgpLnJlYWRhYmxlU3RyZWFtKCkpCisgICAg
ICAgIHJldHVybiBib2R5KCkucmVhZGFibGVTdHJlYW0oKS0+aXNEaXN0dXJiZWQoKSB8fCBib2R5
KCkucmVhZGFibGVTdHJlYW0oKS0+aXNMb2NrZWQoKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGZh
bHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlP
d25lci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmlu
ZGV4IDk4OTVjNjdhNzI1NWNjNDViYmUwNWQwOTJjY2ExNGM2MmQzNDkwNjAuLjNkNTM1NjQwZDRl
ZmY3OTVjNzc0YTQ0NGM4Yjc1YTA5ZWEyZTZjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAg
IHZvaWQganNvbihSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHRleHQoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CiAKLSAgICBib29sIGlzRGlzdHVyYmVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Rpc3R1cmJlZDsgfTsKKyAgICBib29sIGlzRGlzdHVyYmVkKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc0Rpc3R1cmJlZE9yTG9ja2VkKCkgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRCbG9iKGNv
bnN0IEJsb2ImLCBGZXRjaEJvZHlDb25zdW1lciopOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9ibG9iTG9hZGVyOyB9CiAK
ICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHJlYWRhYmxlU3RyZWFtKEpTQzo6RXhlY1N0YXRl
Jik7Ci0gICAgdmlydHVhbCBib29sIGhhc1JlYWRhYmxlU3RyZWFtQm9keSgpIGNvbnN0IHsgcmV0
dXJuIG1fYm9keSAmJiBtX2JvZHktPmhhc1JlYWRhYmxlU3RyZWFtKCk7IH0KKyAgICBib29sIGhh
c1JlYWRhYmxlU3RyZWFtQm9keSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9keSAmJiBtX2JvZHktPmhh
c1JlYWRhYmxlU3RyZWFtKCk7IH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKICAgICB2aXJ0
dWFsIHZvaWQgY29uc3VtZUJvZHlBc1N0cmVhbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuY3BwCmluZGV4IDJhYTdjYmEwZWMzOGJlMjUxYTJh
MDJhZDNiNzkyMDBmYTJjZDNiMTQuLjc5NDU5ZjM0NWRkZmJjMDM2Y2E1NTU2ZThhMDBhNjNlMWQ3
NjM3NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNv
dXJjZS5jcHAKQEAgLTM4LDExICszOCw2IEBAIEZldGNoQm9keVNvdXJjZTo6RmV0Y2hCb2R5U291
cmNlKEZldGNoQm9keU93bmVyJiBib2R5T3duZXIpCiB7CiB9CiAKLWJvb2wgRmV0Y2hCb2R5U291
cmNlOjppc1JlYWRhYmxlU3RyZWFtTG9ja2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY29udHJv
bGxlcigpLmlzQ29udHJvbGxlZFJlYWRhYmxlU3RyZWFtTG9ja2VkKCk7Ci19Ci0KIHZvaWQgRmV0
Y2hCb2R5U291cmNlOjpzZXRBY3RpdmUoKQogewogICAgIG1fYm9keU93bmVyLnNldFBlbmRpbmdB
Y3Rpdml0eSgmbV9ib2R5T3duZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5U291cmNlLmgKaW5kZXggMDc2YzQ5ODFhZDY3MWU1NDJkNjQyYTM5ZTk3MDY1ZTRl
NmQ0ZGI3MS4uOTgxNTliOGNlOTJhMWNmY2IyOGU5NzQxYzdiYTMyNDQwYzBiZDdhOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5oCkBAIC00Nyw3
ICs0Nyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGVycm9yKGNvbnN0IFN0cmluZyYpOwogCiAgICAg
Ym9vbCBpc0NhbmNlbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzQ2FuY2VsbGluZzsgfQotICAg
IGJvb2wgaXNSZWFkYWJsZVN0cmVhbUxvY2tlZCgpIGNvbnN0OwogCiAgICAgdm9pZCByZXNvbHZl
UHVsbFByb21pc2UoKSB7IHB1bGxGaW5pc2hlZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGNjZTdhODcwMWM0ZjE2YzA4Yzkz
NWFmMzA2MzA2YjkyMDQ3OWUxZGMuLjQ3NzIwNTE0ZGNhMWIzNDRhZTA2MGU1NzY4ODJhZmYxYTAx
NmVlMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNw
b25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNl
LmNwcApAQCAtNzksMTQgKzc5LDYgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjppbml0aWFsaXplV2l0
aChGZXRjaEJvZHk6OkluaXQmJiBib2R5KQogICAgIHVwZGF0ZUNvbnRlbnRUeXBlKCk7CiB9CiAK
LXZvaWQgRmV0Y2hSZXNwb25zZTo6c2V0Qm9keUFzUmVhZGFibGVTdHJlYW0oKQotewotICAgIGlm
IChpc0JvZHlOdWxsKCkpCi0gICAgICAgIHNldEJvZHkoRmV0Y2hCb2R5Ojpsb2FkaW5nQm9keSgp
KTsKLSAgICBtX2lzUmVhZGFibGVTdHJlYW0gPSB0cnVlOwotICAgIHVwZGF0ZUNvbnRlbnRUeXBl
KCk7Ci19Ci0KIEZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNo
SGVhZGVycz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiAgICAgOiBG
ZXRjaEJvZHlPd25lcihjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGhlYWRlcnMpKQog
ICAgICwgbV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKQEAgLTI3NywxMSArMjY5LDIyIEBA
IEZldGNoUmVzcG9uc2U6OlJlc3BvbnNlRGF0YSBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keSgp
CiAgICAgcmV0dXJuIGJvZHkoKS50YWtlKCk7CiB9CiAKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6Y29u
c3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0oQ29uc3VtZURhdGFDYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIEFTU0VSVChtX2JvZHkpOworICAgIEFTU0VSVChtX2JvZHktPnJlYWRhYmxlU3Ry
ZWFtKCkpOworCisgICAgQVNTRVJUKCFpc0Rpc3R1cmJlZCgpKTsKKyAgICBtX2lzRGlzdHVyYmVk
ID0gdHJ1ZTsKKworICAgIG1fYm9keS0+Y29uc3VtZXIoKS5leHRyYWN0KCptX2JvZHktPnJlYWRh
YmxlU3RyZWFtKCksIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBGZXRjaFJlc3BvbnNl
Ojpjb25zdW1lQm9keVdoZW5Mb2FkZWQoQ29uc3VtZURhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVChpc0xvYWRpbmcoKSk7CiAKLSAgICBBU1NFUlQoIW1faXNEaXN0dXJiZWQp
OworICAgIEFTU0VSVCghaXNEaXN0dXJiZWQoKSk7CiAgICAgbV9pc0Rpc3R1cmJlZCA9IHRydWU7
CiAKICAgICBtX2JvZHlMb2FkZXItPnNldENvbnN1bWVEYXRhQ2FsbGJhY2soV1RGTW92ZShjYWxs
YmFjaykpOwpAQCAtMzI5LDEwICszMzIsMTEgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1l
Qm9keUFzU3RyZWFtKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faXNEaXN0dXJi
ZWQgPSB0cnVlOwogICAgIEFTU0VSVChtX2JvZHlMb2FkZXIpOwogCi0gICAgc2V0Qm9keUFzUmVh
ZGFibGVTdHJlYW0oKTsKKyAgICBpZiAoaXNCb2R5TnVsbCgpKQorICAgICAgICBzZXRCb2R5KEZl
dGNoQm9keTo6bG9hZGluZ0JvZHkoKSk7CisgICAgdXBkYXRlQ29udGVudFR5cGUoKTsKIAogICAg
IGF1dG8gZGF0YSA9IG1fYm9keUxvYWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKICAgICBpZiAoZGF0
YSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRl
eCBkYzlmMTFlZDg0NzYxMzI0YjcxOGIwY2VmMDI3Y2U0MDQxZGFmZjhhLi45ODVlZTgxOTY0ZGVj
OTg0ODkxMjZhMjA4ZGViODMxMGY4NjBiNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaApAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6CiAKICAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZXRTdGF0dXMoaW50IHN0YXR1cywgY29uc3QgU3RyaW5nJiBzdGF0
dXNUZXh0KTsKICAgICB2b2lkIGluaXRpYWxpemVXaXRoKEZldGNoQm9keTo6SW5pdCYmKTsKLSAg
ICB2b2lkIHNldEJvZHlBc1JlYWRhYmxlU3RyZWFtKCk7CiAKICAgICBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3Jlc3BvbnNlLnR5cGUoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkg
Y29uc3Q7CkBAIC05OSwxMiArOTgsMTAgQEAgcHVibGljOgogCiAgICAgdXNpbmcgQ29uc3VtZURh
dGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVk
QnVmZmVyPj4mJik+OwogICAgIHZvaWQgY29uc3VtZUJvZHlXaGVuTG9hZGVkKENvbnN1bWVEYXRh
Q2FsbGJhY2smJik7CisgICAgdm9pZCBjb25zdW1lQm9keUZyb21SZWFkYWJsZVN0cmVhbShDb25z
dW1lRGF0YUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3Vy
Y2VSZXNwb25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyBtZXRob2QgYW5kIHVzZSBGZXRjaEJvZHlPd25lciBvbmUgb25jZSB3ZSBo
YXZlIGZ1bGwgc3VwcG9ydCBpbiBET00gUmVhZGFibGVTdHJlYW0uCi0gICAgYm9vbCBoYXNSZWFk
YWJsZVN0cmVhbUJvZHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUmVhZGFibGVTdHJlYW07
IH0KLQogcHJpdmF0ZToKICAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBzdGQ6Om9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgUmVzb3Vy
Y2VSZXNwb25zZSYmKTsKIApAQCAtMTQ3LDggKzE0NCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjpv
cHRpb25hbDxCb2R5TG9hZGVyPiBtX2JvZHlMb2FkZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9y
ZXNwb25zZVVSTDsKICAgICBib29sIG1fc2hvdWxkRXhwb3NlQm9keSB7IHRydWUgfTsKLSAgICAv
LyBGSVhNRTogUmVtb3ZlIHRoYXQgZmxhZyBvbmNlIHdlIGhhdmUgZnVsbCBzdXBwb3J0IGluIERP
TSBSZWFkYWJsZVN0cmVhbS4KLSAgICBib29sIG1faXNSZWFkYWJsZVN0cmVhbSB7IGZhbHNlIH07
CiAKICAgICBGZXRjaEJvZHlDb25zdW1lciBtX2NvbnN1bWVyIHsgRmV0Y2hCb2R5Q29uc3VtZXI6
OlR5cGU6OkFycmF5QnVmZmVyICB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuaWRsCmluZGV4IDk1MTA2MDIyMThkYzA3ZTVkZGI5MWE3NDVkYWY2
MzU5NTk2NDE3MGUuLjBjNzg2YzhhYzcxYzc3MTU4ZTI2NDMwZmRlOTNhZGRmYzllNjNiN2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbApAQCAt
ODUsNSArODUsNCBAQCBkaWN0aW9uYXJ5IEZldGNoUmVzcG9uc2VJbml0IHsKICAgICBbUHJpdmF0
ZUlkZW50aWZpZXJdIHZvaWQgaW5pdGlhbGl6ZVdpdGgoQm9keUluaXQgYm9keSk7CiAgICAgW0Nh
bGxXaXRoPVNjcmlwdFN0YXRlLCBOZXdPYmplY3QsIFByaXZhdGVJZGVudGlmaWVyXSBSZWFkYWJs
ZVN0cmVhbT8gY3JlYXRlUmVhZGFibGVTdHJlYW0oKTsKICAgICBbUHJpdmF0ZUlkZW50aWZpZXJd
IGJvb2xlYW4gaXNEaXN0dXJiZWQoKTsKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgc2V0
Qm9keUFzUmVhZGFibGVTdHJlYW0oKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoUmVzcG9uc2UuanMKaW5kZXggNzhmZWEwZjUwNTEzZWFiNDRmMTE1ZmEyNjNkZDVm
NzVmYzYzY2M0Yi4uNzQxMzBmNGJiOTY2MGQ0ZTM5ZGRlMTBjOTI0ZGQzODcyNWExMmQxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcwpAQCAtNDks
MTEgKzQ5LDkgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UoYm9keSwgaW5pdCkK
IAogICAgICAgICAvLyBGSVhNRTogVXNlIEBpc1JlYWRhYmxlU3RyZWFtIG9uY2UgaXQgaXMgbm8g
bG9uZ2VyIGd1YXJkZWQgYnkgU1RSRUFNU19BUEkgY29tcGlsYXRpb24gZ3VhcmQuCiAgICAgICAg
IGxldCBpc0JvZHlSZWFkYWJsZVN0cmVhbSA9IChAaXNPYmplY3QoYm9keSkgJiYgISFib2R5LkBy
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIpOwotICAgICAgICBpZiAoaXNCb2R5UmVhZGFibGVTdHJl
YW0pIHsKKyAgICAgICAgaWYgKGlzQm9keVJlYWRhYmxlU3RyZWFtKQogICAgICAgICAgICAgdGhp
cy5AYm9keSA9IGJvZHk7Ci0gICAgICAgICAgICB0aGlzLkBzZXRCb2R5QXNSZWFkYWJsZVN0cmVh
bSgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMuQGluaXRpYWxpemVXaXRoKGJv
ZHkpOworICAgICAgICB0aGlzLkBpbml0aWFsaXplV2l0aChib2R5KTsKICAgICB9CiAKICAgICBy
ZXR1cm4gdGhpczsKQEAgLTk2LDE3ICs5NCwxNSBAQCBmdW5jdGlvbiBjbG9uZSgpCiAgICAgaWYg
KEBSZXNwb25zZS5wcm90b3R5cGUuQGlzRGlzdHVyYmVkLkBjYWxsKHRoaXMpIHx8ICh0aGlzLkBi
b2R5ICYmIEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHRoaXMuQGJvZHkpKSkKICAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJDYW5ub3QgY2xvbmUgYSBkaXN0dXJiZWQgUmVzcG9uc2UiKTsKIAotICAg
IHZhciBjbG9uZWQgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjbG9uZUZvckpTLkBjYWxsKHRoaXMp
OwotCiAgICAgLy8gTGV0J3MgY3JlYXRlIEBib2R5IGlmIHJlc3BvbnNlIGJvZHkgaXMgbG9hZGlu
ZyB0byBwcm92aWRlIGRhdGEgdG8gYm90aCBjbG9uZXMuCiAgICAgaWYgKEBSZXNwb25zZS5wcm90
b3R5cGUuQGlzTG9hZGluZy5AY2FsbCh0aGlzKSAmJiB0aGlzLkBib2R5ID09PSBAdW5kZWZpbmVk
KQogICAgICAgICB0aGlzLkBib2R5ID0gQFJlc3BvbnNlLnByb3RvdHlwZS5AY3JlYXRlUmVhZGFi
bGVTdHJlYW0uQGNhbGwodGhpcyk7CiAKLSAgICBpZiAodGhpcy5AYm9keSkgewotICAgICAgICB2
YXIgdGVlZFJlYWRhYmxlU3RyZWFtcyA9IEByZWFkYWJsZVN0cmVhbVRlZSh0aGlzLkBib2R5LCB0
cnVlKTsKLSAgICAgICAgdGhpcy5AYm9keSA9IHRlZWRSZWFkYWJsZVN0cmVhbXNbMF07Ci0gICAg
ICAgIGNsb25lZC5AYm9keSA9IHRlZWRSZWFkYWJsZVN0cmVhbXNbMV07Ci0gICAgfQorICAgIHZh
ciBjbG9uZWQgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjbG9uZUZvckpTLkBjYWxsKHRoaXMpOwor
CisgICAgLy8gTGV0J3MgcmVmcmVzaCBAYm9keSB3aXRoIHRoZSBjbG9uZWQgc3RyZWFtLgorICAg
IHRoaXMuQGJvZHkgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjcmVhdGVSZWFkYWJsZVN0cmVhbS5A
Y2FsbCh0aGlzKTsKKwogICAgIHJldHVybiBjbG9uZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCBjZjQ4Njk3NjQ5OWIyOGUzY2Nk
Y2MyNWM4NzczYTE1NWNiZTllOWQzLi44ZTQzMGIyOWRiYjg2YjRkYzcyZWY1YjcxYzMzNTBjZTUx
NDhmZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0
cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0u
Y3BwCkBAIC01NSw2ICs1NSwxNyBAQCBSZWY8UmVhZGFibGVTdHJlYW0+IFJlYWRhYmxlU3RyZWFt
OjpjcmVhdGUoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPFJlYQogICAgIHJldHVy
biBjcmVhdGUoZ2xvYmFsT2JqZWN0LCAqbmV3UmVhZGFibGVTdHJlYW0pOwogfQogCitzdGF0aWMg
aW5saW5lIEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6OkpTVmFsdWUganNGdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlND
OjpBcmdMaXN0JiBhcmd1bWVudHMpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUoc3RhdGUudm0oKSk7CisgICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBhdXRv
IGNhbGxUeXBlID0gSlNDOjpnZXRDYWxsRGF0YShqc0Z1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAg
QVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gcmVzdWx0
ID0gY2FsbCgmc3RhdGUsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVl
LCBhcmd1bWVudHMpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogdm9pZCBSZWFkYWJsZVN0cmVhbTo6cGlwZVRvKFJlYWRhYmxlU3RyZWFt
U2luayYgc2luaykKIHsKICAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOwpAQCAtNjQsMTMgKzc1LDEwIEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OnBpcGVUbyhS
ZWFkYWJsZVN0cmVhbVNpbmsmIHNpbmspCiAgICAgYXV0byByZWFkYWJsZVN0cmVhbVBpcGVUbyA9
IG1fZ2xvYmFsT2JqZWN0LT5nZXQoJnN0YXRlLCBwcml2YXRlTmFtZSk7CiAgICAgQVNTRVJUKHJl
YWRhYmxlU3RyZWFtUGlwZVRvLmlzRnVuY3Rpb24oKSk7CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHJlYWRhYmxlU3RyZWFtUGlw
ZVRvLCBjYWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5v
bmUpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMu
YXBwZW5kKHJlYWRhYmxlU3RyZWFtKCkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodG9KUygmc3Rh
dGUsIG1fZ2xvYmFsT2JqZWN0LmdldCgpLCBzaW5rKSk7Ci0gICAgSlNDOjpjYWxsKCZzdGF0ZSwg
cmVhZGFibGVTdHJlYW1QaXBlVG8sIGNhbGxUeXBlLCBjYWxsRGF0YSwgSlNDOjpqc1VuZGVmaW5l
ZCgpLCBhcmd1bWVudHMpOworICAgIGNhbGxGdW5jdGlvbihzdGF0ZSwgcmVhZGFibGVTdHJlYW1Q
aXBlVG8sIEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKIH0KIAogc3RkOjpwYWlyPFJl
ZjxSZWFkYWJsZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0cmVhbT4+IFJlYWRhYmxlU3RyZWFtOjp0
ZWUoKQpAQCAtODIsMTMgKzkwLDEwIEBAIHN0ZDo6cGFpcjxSZWY8UmVhZGFibGVTdHJlYW0+LCBS
ZWY8UmVhZGFibGVTdHJlYW0+PiBSZWFkYWJsZVN0cmVhbTo6dGVlKCkKICAgICBhdXRvIHJlYWRh
YmxlU3RyZWFtVGVlID0gbV9nbG9iYWxPYmplY3QtPmdldCgmc3RhdGUsIHByaXZhdGVOYW1lKTsK
ICAgICBBU1NFUlQocmVhZGFibGVTdHJlYW1UZWUuaXNGdW5jdGlvbigpKTsKIAotICAgIENhbGxE
YXRhIGNhbGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEocmVhZGFi
bGVTdHJlYW1UZWUsIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxs
VHlwZTo6Tm9uZSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFy
Z3VtZW50cy5hcHBlbmQocmVhZGFibGVTdHJlYW0oKSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChK
U0M6OmpzQm9vbGVhbih0cnVlKSk7Ci0gICAgSlNWYWx1ZSByZXR1cm5lZFZhbHVlID0gSlNDOjpj
YWxsKCZzdGF0ZSwgcmVhZGFibGVTdHJlYW1UZWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwgSlNDOjpq
c1VuZGVmaW5lZCgpLCBhcmd1bWVudHMpOworICAgIGF1dG8gcmV0dXJuZWRWYWx1ZSA9IGNhbGxG
dW5jdGlvbihzdGF0ZSwgcmVhZGFibGVTdHJlYW1UZWUsIEpTQzo6anNVbmRlZmluZWQoKSwgYXJn
dW1lbnRzKTsKIAogICAgIGF1dG8gcmVzdWx0cyA9IERldGFpbDo6U2VxdWVuY2VDb252ZXJ0ZXI8
SURMSW50ZXJmYWNlPFJlYWRhYmxlU3RyZWFtPj46OmNvbnZlcnQoc3RhdGUsIHJldHVybmVkVmFs
dWUpOwogCkBAIC05Niw0ICsxMDEsNDUgQEAgc3RkOjpwYWlyPFJlZjxSZWFkYWJsZVN0cmVhbT4s
IFJlZjxSZWFkYWJsZVN0cmVhbT4+IFJlYWRhYmxlU3RyZWFtOjp0ZWUoKQogICAgIHJldHVybiBz
dGQ6Om1ha2VfcGFpcihyZXN1bHRzWzBdLnJlbGVhc2VOb25OdWxsKCksIHJlc3VsdHNbMV0ucmVs
ZWFzZU5vbk51bGwoKSk7CiB9CiAKK2VudW0gY2xhc3MgTWV0aG9kIHsgTG9ja2VkLCBEaXN0dXJi
ZWQgfTsKK3RlbXBsYXRlPE1ldGhvZCBtZXRob2Q+CitzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tS
ZWFkYWJsZVN0cmVhbShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1JlYWRhYmxl
U3RyZWFtKiByZWFkYWJsZVN0cmVhbSkKK3sKKyAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmpl
Y3QuZ2xvYmFsRXhlYygpOworCisgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uOworICAgIHN3aXRj
aCAobWV0aG9kKSB7CisgICAgY2FzZSBNZXRob2Q6OkxvY2tlZDoKKyAgICAgICAgZnVuY3Rpb24g
PSBnbG9iYWxPYmplY3QuYnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1J
bnRlcm5hbHMoKS5tX2lzUmVhZGFibGVTdHJlYW1Mb2NrZWRGdW5jdGlvbi5nZXQoKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBNZXRob2Q6OkRpc3R1cmJlZDoKKyAgICAgICAgZnVuY3Rpb24g
PSBnbG9iYWxPYmplY3QuYnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1J
bnRlcm5hbHMoKS5tX2lzUmVhZGFibGVTdHJlYW1EaXN0dXJiZWRGdW5jdGlvbi5nZXQoKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfTsKKyAgICBBU1NFUlQoZnVuY3Rpb24pOworCisgICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChyZWFk
YWJsZVN0cmVhbSk7CisgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihzdGF0ZSwgZnVuY3Rpb24sIEpT
Qzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRzKS5pc1RydWUoKTsKK30KKworYm9vbCBSZWFkYWJs
ZVN0cmVhbTo6aXNMb2NrZWQoKSBjb25zdAoreworICAgIHJldHVybiBjaGVja1JlYWRhYmxlU3Ry
ZWFtPE1ldGhvZDo6TG9ja2VkPigqZ2xvYmFsT2JqZWN0KCksIHJlYWRhYmxlU3RyZWFtKCkpOwor
fQorCitib29sIFJlYWRhYmxlU3RyZWFtOjppc0Rpc3R1cmJlZCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGNoZWNrUmVhZGFibGVTdHJlYW08TWV0aG9kOjpEaXN0dXJiZWQ+KCpnbG9iYWxPYmplY3Qo
KSwgcmVhZGFibGVTdHJlYW0oKSk7Cit9CisKK2Jvb2wgUmVhZGFibGVTdHJlYW06OmlzRGlzdHVy
YmVkKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgYXV0byYgdm0gPSBz
dGF0ZS52bSgpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGpzRHluYW1pY0Rvd25jYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4odm0sIHN0YXRlLmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAg
YXV0byogcmVhZGFibGVTdHJlYW0gPSBqc0R5bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFt
Kj4odm0sIHZhbHVlKTsKKworICAgIHJldHVybiBjaGVja1JlYWRhYmxlU3RyZWFtPE1ldGhvZDo6
RGlzdHVyYmVkPigqZ2xvYmFsT2JqZWN0LCByZWFkYWJsZVN0cmVhbSk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IGFlNWIwZDVmYWE5
MDI3MmM4NzcxNjcxNDk5MmUzZGMzNGM2NmY0OGEuLjc4NDI1Y2YwOTIwMmY0NTA5YjBiMTgzMDVl
ZmViY2JmMWU5ODRjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVT
dHJlYW0uaApAQCAtNDEsMTEgKzQxLDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8UmVh
ZGFibGVTdHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIFJlZlB0cjxSZWFkYWJsZVN0cmVh
bVNvdXJjZT4mJik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0Rpc3R1cmJl
ZChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CisKICAgICBzdGQ6OnBhaXI8UmVmPFJl
YWRhYmxlU3RyZWFtPiwgUmVmPFJlYWRhYmxlU3RyZWFtPj4gdGVlKCk7CiAKICAgICB2b2lkIHBp
cGVUbyhSZWFkYWJsZVN0cmVhbVNpbmsmKTsKKyAgICBib29sIGlzTG9ja2VkKCkgY29uc3Q7Cisg
ICAgYm9vbCBpc0Rpc3R1cmJlZCgpIGNvbnN0OwogCi0gICAgSlNSZWFkYWJsZVN0cmVhbSogcmVh
ZGFibGVTdHJlYW0oKSB7IHJldHVybiBndWFyZGVkKCk7IH0KKyAgICBKU1JlYWRhYmxlU3RyZWFt
KiByZWFkYWJsZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQogCiBwcm90ZWN0
ZWQ6CiAgICAgUmVhZGFibGVTdHJlYW0oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SlNSZWFkYWJsZVN0cmVhbSYgcmVhZGFibGVTdHJlYW0pIDogRE9NR3VhcmRlZDxKU1JlYWRhYmxl
U3RyZWFtPihnbG9iYWxPYmplY3QsIHJlYWRhYmxlU3RyZWFtKSB7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5jcHAKaW5kZXggNzFjNTVlNDUxMjY2MTNkZDE1ZmZjNTdkY2I4YTkwY2E0MTNkNzc4
YS4uMTY1OWNhZjhlYTAwMDAwNjE2MTk2N2M2NWIyOTMzNzY3M2U1MDg2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5jcHAKQEAgLTY5LDI5ICs2OSw2IEBAIEpTQzo6SlNWYWx1ZSBSZWFkYWJs
ZVN0cmVhbURlZmF1bHRDb250cm9sbGVyOjppbnZva2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U0M6CiAgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihzdGF0ZSwgZnVuY3Rpb24sICZvYmplY3QsIGFy
Z3VtZW50cyk7CiB9CiAKLWJvb2wgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6aXND
b250cm9sbGVkUmVhZGFibGVTdHJlYW1Mb2NrZWQoKSBjb25zdAotewotICAgIGF1dG8mIGdsb2Jh
bE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwotICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFs
T2JqZWN0LnZtKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIGF1dG8mIHN0YXRlID0gZ2xvYmFs
RXhlYygpOwotCi0gICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50
RGF0YSo+KHZtLmNsaWVudERhdGEpOwotICAgIGF1dG8gcmVhZGFibGVTdHJlYW0gPSBtX2pzQ29u
dHJvbGxlci0+Z2V0KCZzdGF0ZSwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5jb250cm9sbGVk
UmVhZGFibGVTdHJlYW1Qcml2YXRlTmFtZSgpKTsKLSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlv
bigpOwotCi0gICAgYXV0byogaXNMb2NrZWQgPSBnbG9iYWxPYmplY3QuYnVpbHRpbkludGVybmFs
RnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHMoKS5tX2lzUmVhZGFibGVTdHJlYW1M
b2NrZWRGdW5jdGlvbi5nZXQoKTsKLSAgICBBU1NFUlQoaXNMb2NrZWQpOwotCi0gICAgSlNDOjpN
YXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChyZWFk
YWJsZVN0cmVhbSk7Ci0gICAgYXV0byByZXN1bHQgPSBjYWxsRnVuY3Rpb24oc3RhdGUsIGlzTG9j
a2VkLCBKU0M6OmpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9F
eGNlcHRpb24oKTsKLQotICAgIHJldHVybiByZXN1bHQuaXNUcnVlKCk7Ci19Ci0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIuaAppbmRleCAzNjM0YzRiMjlkNDRmMGMzZDU4OWM5ZmFjMjc5MzAzMTU3MWRk
ZTJiLi5hZmFhMTc3ZjQ0ZWFjYWZlZGY2NjU0OTUxYzgwYjJkMzU4MzNkZDUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5oCkBAIC01NCw4ICs1NCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xv
c2UoKSB7IGludm9rZSgqZ2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhlYygpLCBqc0NvbnRyb2xsZXIo
KSwgImNsb3NlIiwgSlNDOjpqc1VuZGVmaW5lZCgpKTsgfQogCi0gICAgYm9vbCBpc0NvbnRyb2xs
ZWRSZWFkYWJsZVN0cmVhbUxvY2tlZCgpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIHZvaWQgZXJy
b3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpIHsgaW52b2tlKHN0
YXRlLCBqc0NvbnRyb2xsZXIoKSwgImVycm9yIiwgdmFsdWUpOyB9CiAgICAgdm9pZCBlbnF1ZXVl
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IGludm9rZShzdGF0
ZSwganNDb250cm9sbGVyKCksICJlbnF1ZXVlIiwgdmFsdWUpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggNTcyYjdjNzVkOWY2
ZjY3ZTdhZmIxYThiMTU0OTMwMzc1ZTgyYmQzZi4uNWE2NDI0YjEzYjE0ZjFhNzBhOTEyNWRiYmM3
MWMwNTQ4M2IyNDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUJ1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaApAQCAtMjMyLDcgKzIzMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhyZXRyaWV2ZVJlc3BvbnNlKSBcCiAgICAgbWFjcm8oc2VsZikgXAogICAgIG1h
Y3JvKHNldEJvZHkpIFwKLSAgICBtYWNybyhzZXRCb2R5QXNSZWFkYWJsZVN0cmVhbSkgXAogICAg
IG1hY3JvKHNldEJvZHlGcm9tSW5wdXRSZXF1ZXN0KSBcCiAgICAgbWFjcm8oc2V0U3RhdHVzKSBc
CiAgICAgbWFjcm8oc2hvd01vZGFsRGlhbG9nKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggYjZlY2JlODI5N2NmZWViYWQwNTRlOTk0ZTU0Yzk3ZjkwZDk0ZGFhNy4uNGFl
ZmYwNTU1MmFkMzBmYmRjNzY4ZWE0NzBkZDRmYjZmODc3ZGQ5MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtMTA5LDYgKzEwOSw3IEBACiAjaW5jbHVkZSAiUHJpbnRDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCisj
aW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2luY2x1ZGUgIlJlbmRlckxh
eWVyQ29tcG9zaXRvci5oIgpAQCAtMzc4NSwyNSArMzc4Niw3IEBAIHZvaWQgSW50ZXJuYWxzOjpz
ZXRTaG93QWxsUGx1Z2lucyhib29sIHNob3cpCiAKIGJvb2wgSW50ZXJuYWxzOjppc1JlYWRhYmxl
U3RyZWFtRGlzdHVyYmVkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBzdHJlYW0pCiB7
Ci0gICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLnZtRW50cnlHbG9iYWxP
YmplY3QoKTsKLSAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpT
Vk1DbGllbnREYXRhKj4oc3RhdGUudm0oKS5jbGllbnREYXRhKTsKLSAgICBjb25zdCBJZGVudGlm
aWVyJiBwcml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5yZWFkYWJs
ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zKCkuaXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlZFByaXZh
dGVOYW1lKCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZTsKLSAgICBQcm9wZXJ0eVNsb3QgcHJvcGVydHlT
bG90KHZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICBn
bG9iYWxPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmpl
Y3QsICZzdGF0ZSwgcHJpdmF0ZU5hbWUsIHByb3BlcnR5U2xvdCk7Ci0gICAgdmFsdWUgPSBwcm9w
ZXJ0eVNsb3QuZ2V0VmFsdWUoJnN0YXRlLCBwcml2YXRlTmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVl
LmlzRnVuY3Rpb24oKSk7Ci0KLSAgICBKU09iamVjdCogZnVuY3Rpb24gPSB2YWx1ZS5nZXRPYmpl
Y3QoKTsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpT
Qzo6Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUg
IT0gSlNDOjpDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1l
bnRzOwotICAgIGFyZ3VtZW50cy5hcHBlbmQoc3RyZWFtKTsKLSAgICBKU1ZhbHVlIHJldHVybmVk
VmFsdWUgPSBKU0M6OmNhbGwoJnN0YXRlLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBK
U0M6OmpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7Ci0gICAgQVNTRVJUKHJldHVybmVkVmFsdWUu
aXNCb29sZWFuKCkpOwotCi0gICAgcmV0dXJuIHJldHVybmVkVmFsdWUuYXNCb29sZWFuKCk7Cisg
ICAgcmV0dXJuIFJlYWRhYmxlU3RyZWFtOjppc0Rpc3R1cmJlZChzdGF0ZSwgc3RyZWFtKTsKIH0K
IAogSlNWYWx1ZSBJbnRlcm5hbHM6OmNsb25lQXJyYXlCdWZmZXIoSlNDOjpFeGVjU3RhdGUmIHN0
YXRlLCBKU1ZhbHVlIGJ1ZmZlciwgSlNWYWx1ZSBzcmNCeXRlT2Zmc2V0LCBKU1ZhbHVlIHNyY0xl
bmd0aCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCBkNzA1MjRhZGUxZjc2ZDhkYzc2N2ZhMTRhMmQ5MTJkMzkzZTlmN2VlLi4y
MzAxZTEyMGYzMjNiMTkxOWNiZTA2NzY5MjVmYmQzNjJlNDIzY2ZmIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTctMDktMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisg
ICAgICAgIFN1cHBvcnQgY2FjaGluZyBvZiBSZXNwb25zZSB3aXRoIGEgUmVhZGFibGVTdHJlYW0g
Ym9keQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2
NDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
ZXN0RXhwZWN0YXRpb25zOiBSZW1vdmluZyBmbGFraW5lc3MgZXhwZWN0YXRpb24gZm9yIGNhY2hl
LXB1dCB0ZXN0cy4KKyAgICAgICAgKiBodHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXB1dC1z
dHJlYW0uaHR0cHMuYW55LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
Y2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQtc3RyZWFtLmh0dHBzLmFueS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55
LmpzOiBBZGRlZC4KKyAgICAgICAgKGNhY2hlX3Rlc3QuKToKKyAgICAgICAgKGNhY2hlX3Rlc3Qp
OgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuY2FjaGVfdGVzdC5yZXR1cm4ucmVhZGVy
LnJlYWQudGhlbi4pOgorICAgICAgICAoc3RyaW5nX2FwcGVhcmVkX2hlcmUuY2FjaGVfdGVzdCk6
CisgICAgICAgICogaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQtc3RyZWFtLmh0dHBz
LmFueS53b3JrZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9jYWNo
ZS1zdG9yYWdlL2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55Lndvcmtlci5odG1sOiBBZGRlZC4K
KwogMjAxNy0wOS0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAg
ICAgTmV0d29ya1Byb2Nlc3MgQ2FjaGUgYW5kIENhY2hlcyBzaG91bGQgYmUgY2xlYXJlZCB3aGVu
IHRoZSBsYXN0IHJlbGF0ZWQgV2ViUHJvY2VzcyBDYWNoZSBvciBDYWNoZVN0b3JhZ2UgaXMgZGVz
dHJveWVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCAzMWFhOTBiNzNjYzExZDgz
NmEzMGM0N2M5NjNmNjlmZTk4NWQxMjQxLi5mOTE5ODEzYjY4ZjkzNTA2MGQxYTIzMWYwZThjOGI4
ZGVmOTI4ODhhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxNy0wOS0wNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3VwcG9ydCBjYWNoaW5nIG9mIFJlc3BvbnNlIHdpdGggYSBSZWFkYWJsZVN0cmVhbSBib2R5
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUt
cHV0Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAxNy0wOS0wMiAgU2FtIFdlaW5pZyAgPHNhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIERPTU1hdHJpeC9ET01NYXRyaXhSZWFkT25seSB2YWxpZGF0
aW9uIGlzIGluY29ycmVjdCBmb3IgTmFOIHZhbHVlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggN2Qx
MDBhM2MxMDhkZWQwZTAxYzk4ZTZhNDNhMTUxZWVmZDJkOWVkMi4uYjk0MWYyMGU5OWI0ZTYxNDQy
YTMwOGM2NGMxYTBmYWQ2NGViNzI2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVj
dGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjMsOCArMTIz
LDYgQEAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMgWyBT
a2lwIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3N0
dWItNC42LjItY2FjaGUuaHRtbCBbIFBhc3MgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc3R1Yi00LjYuMy1jYWNoZS1zdG9yYWdlLmh0bWwgWyBQYXNz
IF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hl
LXN0b3JhZ2UgWyBQYXNzIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd2luZG93L2NhY2hlLXB1dC5odHRwcy5odG1sIFsgUGFz
cyBGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL2NhY2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLXB1dC5odHRwcy5odG1sIFsgUGFzcyBGYWls
dXJlIF0KIAogIyB0ZXh0YXJlYS5hbmltYXRlIGlzIG5vdCBzdXBwb3J0ZWQKIGltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy11aS0zL2NhcmV0LWNvbG9yLTAxOC5odG1sIFsg
U2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jYWNoZS1zdG9yYWdlL2Nh
Y2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcHV0LXN0cmVhbS5odHRwcy5hbnktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMyNmMzZWIyYjQ4YjM1ZGE2Nzg0Y2VjOWRkNTdmNjQ2NmMyNmUyYTUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hl
LXB1dC1zdHJlYW0uaHR0cHMuYW55LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFT
UyBDYWNoZS5wdXQgc2hvdWxkIHRocm93IGlmIHJlc3BvbnNlIHN0cmVhbSBpcyBsb2NrZWQgCitQ
QVNTIENhY2hlLnB1dCBzaG91bGQgdGhyb3cgaWYgcmVzcG9uc2Ugc3RyZWFtIGlzIGRpc3R1cmJl
ZCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNo
ZS1wdXQtc3RyZWFtLmh0dHBzLmFueS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUt
c3RvcmFnZS9jYWNoZS1wdXQtc3RyZWFtLmh0dHBzLmFueS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5
MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBiNTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMu
YW55Lmh0bWwKQEAgLTAsMCArMSBAQAorPCEtLSBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFdl
YktpdCB0ZXN0IGluZnJhc3RydWN0dXJlIHRvIHJ1biB0aGUgdGVtcGxhdGVkIHRlc3QgLS0+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQtc3RyZWFtLmh0dHBzLmFueS5qcyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcHV0LXN0cmVhbS5odHRwcy5hbnkuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWM2Njg2MDZhMGRmZTc5MTdjYmY4MmE5NmE0MmNkNGJkYmI2NjM1MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUt
cHV0LXN0cmVhbS5odHRwcy5hbnkuanMKQEAgLTAsMCArMSwzMSBAQAorLy8gTUVUQTogc2NyaXB0
PS9zZXJ2aWNlLXdvcmtlcnMvY2FjaGUtc3RvcmFnZS9yZXNvdXJjZXMvdGVzdC1oZWxwZXJzLmpz
CisKK3ZhciB0ZXN0X3VybCA9ICdodHRwczovL2V4YW1wbGUuY29tL2Zvbyc7Cit2YXIgdGVzdF9i
b2R5ID0gJ0hlbGxvIHdvcmxkISc7CisKK2NhY2hlX3Rlc3QoZnVuY3Rpb24oY2FjaGUpIHsKKyAg
ICB2YXIgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKCk7CisgICAgc3RyZWFtLmdldFJlYWRl
cigpOworICAgIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShzdHJlYW0pOworICAgIHJldHVy
biBjYWNoZS5wdXQobmV3IFJlcXVlc3QoJycpLCByZXNwb25zZSkudGhlbihhc3NlcnRfdW5yZWFj
aGVkLCAoZSkgPT4geworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeyB0aHJvdyBlIH0pOworICAgIH0pOworfSwgJ0NhY2hlLnB1dCBzaG91bGQgdGhyb3cg
aWYgcmVzcG9uc2Ugc3RyZWFtIGlzIGxvY2tlZCcpCisKK2NhY2hlX3Rlc3QoZnVuY3Rpb24oY2Fj
aGUpIHsKKyAgICB2YXIgc3RyZWFtID0gbmV3IFJlYWRhYmxlU3RyZWFtKHtzdGFydDogKGMpID0+
IHsKKyAgICAgICAgYy5lbnF1ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKKyAgICAgICAgYy5lbnF1
ZXVlKG5ldyBVaW50OEFycmF5KDEpKTsKKyAgICAgICAgYy5jbG9zZSgpOworICAgIH19KTsKKyAg
ICB2YXIgcmVhZGVyID0gc3RyZWFtLmdldFJlYWRlcigpOworICAgIHJldHVybiByZWFkZXIucmVh
ZCgpLnRoZW4oKCkgPT4geworICAgICAgICByZWFkZXIucmVsZWFzZUxvY2soKTsKKyAgICAgICAg
dmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKHN0cmVhbSk7CisgICAgICAgIHJldHVybiBjYWNo
ZS5wdXQobmV3IFJlcXVlc3QoJycpLCByZXNwb25zZSkudGhlbihhc3NlcnRfdW5yZWFjaGVkLCAo
ZSkgPT4geworICAgICAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsgdGhyb3cgZSB9KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9LCAnQ2FjaGUucHV0IHNo
b3VsZCB0aHJvdyBpZiByZXNwb25zZSBzdHJlYW0gaXMgZGlzdHVyYmVkJykKKworZG9uZSgpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQt
c3RyZWFtLmh0dHBzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQtc3RyZWFtLmh0dHBzLmFueS53b3JrZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjMyNmMzZWIyYjQ4YjM1ZGE2Nzg0Y2VjOWRkNTdmNjQ2NmMyNmUy
YTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jYWNoZS1zdG9yYWdl
L2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55Lndvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw0IEBACisKK1BBU1MgQ2FjaGUucHV0IHNob3VsZCB0aHJvdyBpZiByZXNwb25zZSBzdHJlYW0g
aXMgbG9ja2VkIAorUEFTUyBDYWNoZS5wdXQgc2hvdWxkIHRocm93IGlmIHJlc3BvbnNlIHN0cmVh
bSBpcyBkaXN0dXJiZWQgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2NhY2hl
LXN0b3JhZ2UvY2FjaGUtcHV0LXN0cmVhbS5odHRwcy5hbnkud29ya2VyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55Lndv
cmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzODI5MTM1MjhlNjkzYjNhNWQ1NmM2NjBhNDUwNjA5ODBi
NTQ4YzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jYWNoZS1zdG9y
YWdlL2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55Lndvcmtlci5odG1sCkBAIC0wLDAgKzEgQEAK
KzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLXB1dC5odHRwcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1wdXQuaHR0cHMtZXhw
ZWN0ZWQudHh0CmluZGV4IDFjODJkZDk2ZWYxMjUyNjE2NWI2NWRiNzIwYzhjMjU5OGNkMjRlZTMu
LjYxMDVkNjdjNGQwNDMwZDRhNTE4MWNmYWVhYjJiNzM1YmY0OWZlNGUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJz
L2NhY2hlLXN0b3JhZ2Uvd29ya2VyL2NhY2hlLXB1dC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvY2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtcHV0Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAt
MSw2ICsxLDYgQEAKIAogUEFTUyBDYWNoZS5wdXQgY2FsbGVkIHdpdGggc2ltcGxlIFJlcXVlc3Qg
YW5kIFJlc3BvbnNlIAotRkFJTCBDYWNoZS5wdXQgY2FsbGVkIHdpdGggUmVxdWVzdCBhbmQgUmVz
cG9uc2UgZnJvbSBmZXRjaCgpIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIk5vdFN1cHBvcnRlZEVycm9yOiBDYWNoaW5nIGEgUmVzcG9uc2Ugd2l0
aCBkYXRhIHN0b3JlZCBpbiBhIFJlYWRhYmxlU3RyZWFtIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIgor
UEFTUyBDYWNoZS5wdXQgY2FsbGVkIHdpdGggUmVxdWVzdCBhbmQgUmVzcG9uc2UgZnJvbSBmZXRj
aCgpIAogUEFTUyBDYWNoZS5wdXQgd2l0aCBSZXF1ZXN0IHdpdGhvdXQgYSBib2R5IAogUEFTUyBD
YWNoZS5wdXQgd2l0aCBSZXNwb25zZSB3aXRob3V0IGEgYm9keSAKIFBBU1MgQ2FjaGUucHV0IHdp
dGggYSBSZXNwb25zZSBjb250YWluaW5nIGFuIGVtcHR5IFVSTCAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320060</attachid>
            <date>2017-09-06 14:04:42 -0700</date>
            <delta_ts>2017-09-06 14:25:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-176462-20170906140441.patch</filename>
            <type>text/plain</type>
            <size>35656</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUzYjA4YzVmZTIyMDdl
MWU4MDM2MzdlMjg2MTA2MTNiNGM5ZjhhZS4uMjY4MGI1MTMxZTkwZjZkY2I0YzFjZGJlZjM4ZjZi
ZjRhN2VhOThmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE3LTA5LTA2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IGNhY2hpbmcg
b2YgUmVzcG9uc2Ugd2l0aCBhIFJlYWRhYmxlU3RyZWFtIGJvZHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjQ2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L2NhY2hlLXN0
b3JhZ2UvY2FjaGUtcHV0LXN0cmVhbS5odHRwcy5hbnkuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQtc3RyZWFtLmh0dHBzLmFueS53b3JrZXIuaHRt
bAorCisgICAgICAgIE1ha2luZyBGZXRjaFJlc3BvbnNlIHVzZSBtb3JlIG9mIFJlYWRhYmxlU3Ry
ZWFtOgorICAgICAgICAtIENsb25pbmcgb2YgaXRzIGJvZHkgaXMgZG9uZSB0aHJvdWdoIFJlYWRh
YmxlU3RyZWFtLgorICAgICAgICAtIENvbXB1dGF0aW9uIG9mIGRpc3R1cmJlZCBhbmQgbG9ja2Vk
IGlzIGRvbmUgdGhyb3VnaCBSZWFkYWJsZVN0cmVhbS4KKyAgICAgICAgLSBTdG9yaW5nIG9mIHRo
ZSBSZWFkYWJsZVN0cmVhbSBib2R5IGdpdmVuIGF0IGNvbnN0cnVjdG9yIHRpbWUgaXMgZG9uZSBp
biBGZXRjaEJvZHkgZm9yIEZldGNoUmVzcG9uc2UuCisgICAgICAgIFRoaXMgYWxsb3dzIG1ha2lu
ZyBGZXRjaFJlc3BvbnNlIGNsb3NlciB0byBGZXRjaFJlcXVlc3QuCisgICAgICAgIFRoaXMgYWxz
byBhbGxvd3MgdG8gY29ycmVjdGx5IGNvbXB1dGUgZGlzdHVyYmVkIGFuZCBsb2NrZWQgaW4gY2xv
bmUgY2FzZXMuCisKKyAgICAgICAgQWRkaW5nIHRoZSBhYmlsaXR5IHRvIGNvbnN1bWUgYSBSZXNw
b25zZSBSZWFkYWJsZVN0cmVhbSBib2R5IGFzIGEgU2hhcmVkQnVmZmVyLgorICAgICAgICBVc2lu
ZyB0aGF0IGFiaWxpdHkgaW4gRE9NQ2FjaGUuCisKKyAgICAgICAgKiBNb2R1bGVzL2NhY2hlL0RP
TUNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXRXaXRoUmVzcG9uc2VE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNhY2hlOjpwdXQpOgorICAgICAgICAqIE1vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5o
OgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5OjpyZWFkYWJsZVN0cmVhbSBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6ZXh0cmFjdCk6CisgICAgICAgICogTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5T3duZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5T3duZXI6OmlzRGlzdHVy
YmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keU93bmVyOjppc0Rpc3R1cmJl
ZE9yTG9ja2VkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHlPd25lcjo6aGFzUmVhZGFibGVTdHJlYW1C
b2R5IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5jcHA6
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuaDoKKyAgICAgICAgKiBN
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hS
ZXNwb25zZTo6Y29uc3VtZUJvZHlGcm9tUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoV2ViQ29y
ZTo6RmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJvZHlXaGVuTG9hZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZldGNoUmVzcG9uc2U6OmNvbnN1bWVCb2R5QXNTdHJlYW0pOgorICAgICAgICAqIE1vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5oOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hS
ZXNwb25zZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzOgor
ICAgICAgICAoaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UpOgorICAgICAgICAoY2xvbmUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhbGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6cGlwZVRv
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjp0ZWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Y2hlY2tSZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbTo6aXNMb2NrZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06
OmlzRGlzdHVyYmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpp
c0Rpc3R1cmJlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmg6
CisgICAgICAgICogYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aXNS
ZWFkYWJsZVN0cmVhbURpc3R1cmJlZCk6CisKIDIwMTctMDktMDYgIERvbWluaWsgUsO2dHRzY2hl
cyAgPGRvbWluaWsucm90dHNjaGVzQGludGVsLmNvbT4KIAogICAgICAgICBbR1RLXSBCdW1wIGZy
ZWV0eXBlIHZlcnNpb24gdG8gMi44LjAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvY2FjaGUvRE9NQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01D
YWNoZS5jcHAKaW5kZXggYWNkMzM5YzEwODRhZWY1YzM2YzI0MWU0ODE2NWZiYzI3MDc0MzcyZi4u
ODVhNWM0YjkwODZlY2YwMGM1Njc0NjI3MzkzNDk5YjMxZDBkMGNmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9jYWNoZS9ET01DYWNoZS5jcHAKQEAgLTI4OSw2ICsyODksMjEgQEAgdm9pZCBE
T01DYWNoZTo6YWRkQWxsKFZlY3RvcjxSZXF1ZXN0SW5mbz4mJiBpbmZvcywgRE9NUHJvbWlzZURl
ZmVycmVkPHZvaWQ+JiYgcHIKICAgICB9CiB9CiAKK3ZvaWQgRE9NQ2FjaGU6OnB1dFdpdGhSZXNw
b25zZURhdGEoRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSwgUmVmPEZldGNoUmVx
dWVzdD4mJiByZXF1ZXN0LCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwgRXhjZXB0aW9u
T3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4+JiYgcmVzcG9uc2VCb2R5KQoreworICAgIGlmIChyZXNw
b25zZUJvZHkuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgcHJvbWlzZS5yZWplY3QocmVzcG9u
c2VCb2R5LnJlbGVhc2VFeGNlcHRpb24oKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBET01DYWNoZUVuZ2luZTo6UmVzcG9uc2VCb2R5IGJvZHk7CisgICAgaWYgKGF1dG8gYnVmZmVy
ID0gcmVzcG9uc2VCb2R5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpKQorICAgICAgICBib2R5ID0gYnVm
ZmVyLnJlbGVhc2VOb25OdWxsKCk7CisgICAgYmF0Y2hQdXRPcGVyYXRpb24ocmVxdWVzdC5nZXQo
KSwgcmVzcG9uc2UuZ2V0KCksIFdURk1vdmUoYm9keSksIFtwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0oRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBwcm9t
aXNlLnNldHRsZShXVEZNb3ZlKHJlc3VsdCkpOworICAgIH0pOworfQorCiB2b2lkIERPTUNhY2hl
OjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNwb25zZSwg
RE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYgcHJvbWlzZSkKIHsKICAgICBpZiAoVU5MSUtFTFko
IXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCkBAIC0zMTIsMzAgKzMyNywyNCBAQCB2b2lkIERP
TUNhY2hlOjpwdXQoUmVxdWVzdEluZm8mJiBpbmZvLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiByZXNw
b25zZSwgRE9NUHJvbWlzZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gRklYTUU6
IEFkZCBzdXBwb3J0IGZvciBSZWFkYWJsZVN0cmVhbS4KLSAgICBpZiAocmVzcG9uc2UtPmhhc1Jl
YWRhYmxlU3RyZWFtQm9keSgpKSB7Ci0gICAgICAgIHByb21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7
IE5vdFN1cHBvcnRlZEVycm9yLCBBU0NJSUxpdGVyYWwoIkNhY2hpbmcgYSBSZXNwb25zZSB3aXRo
IGRhdGEgc3RvcmVkIGluIGEgUmVhZGFibGVTdHJlYW0gaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9
KTsKKyAgICBpZiAocmVzcG9uc2UtPmlzRGlzdHVyYmVkT3JMb2NrZWQoKSkgeworICAgICAgICBw
cm9taXNlLnJlamVjdChFeGNlcHRpb24geyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiUmVzcG9u
c2UgaXMgZGlzdHVyYmVkIG9yIGxvY2tlZCIpIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKHJlc3BvbnNlLT5pc0Rpc3R1cmJlZCgpKSB7Ci0gICAgICAgIHByb21pc2UucmVq
ZWN0KEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJSZXNwb25zZSBpcyBkaXN0
dXJiZWQgb3IgbG9ja2VkIikgfSk7CisgICAgaWYgKHJlc3BvbnNlLT5oYXNSZWFkYWJsZVN0cmVh
bUJvZHkoKSkgeworICAgICAgICBzZXRQZW5kaW5nQWN0aXZpdHkodGhpcyk7CisgICAgICAgIHJl
c3BvbnNlLT5jb25zdW1lQm9keUZyb21SZWFkYWJsZVN0cmVhbShbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXNwb25zZSA9IFdURk1vdmUo
cmVzcG9uc2UpLCB0aGlzXShFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4mJiByZXN1
bHQpIG11dGFibGUgeworICAgICAgICAgICAgcHV0V2l0aFJlc3BvbnNlRGF0YShXVEZNb3ZlKHBy
b21pc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShyZXN1
bHQpKTsKKyAgICAgICAgICAgIHVuc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOworICAgICAgICB9
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChyZXNwb25zZS0+aXNMb2FkaW5n
KCkpIHsKICAgICAgICAgc2V0UGVuZGluZ0FjdGl2aXR5KHRoaXMpOwogICAgICAgICByZXNwb25z
ZS0+Y29uc3VtZUJvZHlXaGVuTG9hZGVkKFtwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgcmVx
dWVzdCA9IFdURk1vdmUocmVxdWVzdCksIHJlc3BvbnNlID0gV1RGTW92ZShyZXNwb25zZSksIHRo
aXNdKEV4Y2VwdGlvbk9yPFJlZlB0cjxTaGFyZWRCdWZmZXI+PiYmIHJlc3VsdCkgbXV0YWJsZSB7
Ci0gICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAg
IHByb21pc2UucmVqZWN0KHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgRE9NQ2FjaGVFbmdpbmU6OlJlc3BvbnNlQm9keSBib2R5
OwotICAgICAgICAgICAgICAgIGlmIChhdXRvIGJ1ZmZlciA9IHJlc3VsdC5yZWxlYXNlUmV0dXJu
VmFsdWUoKSkKLSAgICAgICAgICAgICAgICAgICAgYm9keSA9IGJ1ZmZlci5yZWxlYXNlTm9uTnVs
bCgpOwotICAgICAgICAgICAgICAgIGJhdGNoUHV0T3BlcmF0aW9uKHJlcXVlc3QuZ2V0KCksIHJl
c3BvbnNlLmdldCgpLCBXVEZNb3ZlKGJvZHkpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
KEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICAg
ICAgcHJvbWlzZS5zZXR0bGUoV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1dFdpdGhSZXNwb25zZURhdGEoV1RGTW92ZShw
cm9taXNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUocmVz
dWx0KSk7CiAgICAgICAgICAgICB1bnNldFBlbmRpbmdBY3Rpdml0eSh0aGlzKTsKICAgICAgICAg
fSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Y2FjaGUvRE9NQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvY2FjaGUvRE9NQ2FjaGUu
aAppbmRleCAxYWQwMDE5ODI5MDZjZmZkMjJjNDMwODk3ZWFkYjk3OGEyMDBjYWQxLi4yMGE0OWU5
OTFlNTMxZGNlYjUzNmRjNTM3MmUyNjA2NjRjMjIxYmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9jYWNoZS9ET01DYWNoZS5oCkBAIC02OSw2ICs2OSw4IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
Y2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgY2FuU3Vz
cGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCBwdXRX
aXRoUmVzcG9uc2VEYXRhKERPTVByb21pc2VEZWZlcnJlZDx2b2lkPiYmLCBSZWY8RmV0Y2hSZXF1
ZXN0PiYmLCBSZWY8RmV0Y2hSZXNwb25zZT4mJiwgRXhjZXB0aW9uT3I8UmVmUHRyPFNoYXJlZEJ1
ZmZlcj4+JiYpOworCiAgICAgdm9pZCByZXRyaWV2ZVJlY29yZHMoY29uc3QgVVJMJiwgV1RGOjpG
dW5jdGlvbjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiYmKT4mJik7CiAgICAgVmVjdG9y
PENhY2hlU3RvcmFnZVJlY29yZD4gcXVlcnlDYWNoZVdpdGhUYXJnZXRTdG9yYWdlKGNvbnN0IEZl
dGNoUmVxdWVzdCYsIGNvbnN0IENhY2hlUXVlcnlPcHRpb25zJiwgY29uc3QgVmVjdG9yPENhY2hl
U3RvcmFnZVJlY29yZD4mKTsKICAgICB2b2lkIHF1ZXJ5Q2FjaGUoUmVmPEZldGNoUmVxdWVzdD4m
JiwgQ2FjaGVRdWVyeU9wdGlvbnMmJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEV4Y2VwdGlvbk9yPFZl
Y3RvcjxDYWNoZVN0b3JhZ2VSZWNvcmQ+PiYmKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHkuaAppbmRleCAyN2FjYzY5ODIxNTBmM2FhZmFmZDEwMTkyODBjOWY3ZjJl
NWYyM2E3Li5jM2FhN2ZlODFhNWIzNDhkYTgwYmY0ODg4ZDkwMWQ2YjM3NzFlODljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmgKQEAgLTgxLDYgKzgxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgY2xlYW5Db25zdW1lcigpIHsgbV9jb25zdW1lci5jbGVhbigpOyB9CiAK
ICAgICBGZXRjaEJvZHkgY2xvbmUoKTsKKyAgICBjb25zdCBSZWFkYWJsZVN0cmVhbSogcmVhZGFi
bGVTdHJlYW0oKSBjb25zdCB7IHJldHVybiBtX3JlYWRhYmxlU3RyZWFtLmdldCgpOyB9CiAgICAg
UmVhZGFibGVTdHJlYW0qIHJlYWRhYmxlU3RyZWFtKCkgeyByZXR1cm4gbV9yZWFkYWJsZVN0cmVh
bS5nZXQoKTsgfQogICAgIHZvaWQgc2V0UmVhZGFibGVTdHJlYW0oUmVmPFJlYWRhYmxlU3RyZWFt
PiYmIHN0cmVhbSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IGI5ZWUxZTEzNmI1NGM1OGIzN2ZlM2U5OWIxYWRi
NmM4MzU1MTViODAuLmQyZDUyNjBkNjEwZjcwMDUxNDU2NDA1ZWM5MDNmZTAzZjI4ZTBjMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIu
Y3BwCkBAIC05Miw2ICs5MiwxMyBAQCB2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpyZXNvbHZlV2l0
aERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBjb25zdCB1bgogICAgIHJlc29s
dmVXaXRoVHlwZUFuZERhdGEoV1RGTW92ZShwcm9taXNlKSwgbV90eXBlLCBtX2NvbnRlbnRUeXBl
LCBkYXRhLCBsZW5ndGgpOwogfQogCit2b2lkIEZldGNoQm9keUNvbnN1bWVyOjpleHRyYWN0KFJl
YWRhYmxlU3RyZWFtJiBzdHJlYW0sIFJlYWRhYmxlU3RyZWFtVG9TaGFyZWRCdWZmZXJTaW5rOjpD
YWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIEFTU0VSVCghbV9zaW5rKTsKKyAgICBtX3Npbmsg
PSBSZWFkYWJsZVN0cmVhbVRvU2hhcmVkQnVmZmVyU2luazo6Y3JlYXRlKFdURk1vdmUoY2FsbGJh
Y2spKTsKKyAgICBtX3NpbmstPnBpcGVGcm9tKHN0cmVhbSk7Cit9CisKIHZvaWQgRmV0Y2hCb2R5
Q29uc3VtZXI6OnJlc29sdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWFkYWJs
ZVN0cmVhbSogc3RyZWFtKQogewogICAgIGlmIChzdHJlYW0pIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuaAppbmRleCBkZmQ4ZmIxY2JmNGZj
YmVkNzY2M2U5ODM2OWQwYzVlYTI0ZmM5ZjE4Li5hNWUwMTgyNTc4MjFmNmRmYWI3YTAyMzkwNzkz
MzhkYTg5NWQ2N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoQm9keUNvbnN1bWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHlDb25zdW1lci5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xl
YW4oKTsKIAorICAgIHZvaWQgZXh0cmFjdChSZWFkYWJsZVN0cmVhbSYsIFJlYWRhYmxlU3RyZWFt
VG9TaGFyZWRCdWZmZXJTaW5rOjpDYWxsYmFjayYmKTsKICAgICB2b2lkIHJlc29sdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiwgUmVhZGFibGVTdHJlYW0qKTsKICAgICB2b2lkIHJlc29sdmVXaXRo
RGF0YShSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBjb25zdCB1bnNpZ25lZCBjaGFyKiwgdW5zaWdu
ZWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eU93bmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIu
Y3BwCmluZGV4IDBmYjJkZjNjZjgxZWIzYmE4NTk5MDg2ZDg2YzFjNWZmYjBhN2FmNTQuLmJjODZh
ZDI3Y2NiNjRkMzAzYjZkNjY0NzlmZmEyNjFiODcwYWEwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCkBAIC01OSwxNCArNTksMzMgQEAg
dm9pZCBGZXRjaEJvZHlPd25lcjo6c3RvcCgpCiAgICAgfQogfQogCi1ib29sIEZldGNoQm9keU93
bmVyOjppc0Rpc3R1cmJlZE9yTG9ja2VkKCkgY29uc3QKK2Jvb2wgRmV0Y2hCb2R5T3duZXI6Omlz
RGlzdHVyYmVkKCkgY29uc3QKIHsKKyAgICBpZiAoaXNCb2R5TnVsbCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICBpZiAobV9pc0Rpc3R1cmJlZCkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0gICAgaWYgKG1fcmVhZGFibGVTdHJlYW1Tb3Vy
Y2UgJiYgbV9yZWFkYWJsZVN0cmVhbVNvdXJjZS0+aXNSZWFkYWJsZVN0cmVhbUxvY2tlZCgpKQor
ICAgIGlmIChib2R5KCkucmVhZGFibGVTdHJlYW0oKSkKKyAgICAgICAgcmV0dXJuIGJvZHkoKS5y
ZWFkYWJsZVN0cmVhbSgpLT5pc0Rpc3R1cmJlZCgpOworI2VuZGlmCisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgRmV0Y2hCb2R5T3duZXI6OmlzRGlzdHVyYmVkT3JMb2NrZWQoKSBjb25z
dAoreworICAgIGlmIChpc0JvZHlOdWxsKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGlmIChtX2lzRGlzdHVyYmVkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKworI2lmIEVOQUJMRShT
VFJFQU1TX0FQSSkKKyAgICBpZiAoYm9keSgpLnJlYWRhYmxlU3RyZWFtKCkpCisgICAgICAgIHJl
dHVybiBib2R5KCkucmVhZGFibGVTdHJlYW0oKS0+aXNEaXN0dXJiZWQoKSB8fCBib2R5KCkucmVh
ZGFibGVTdHJlYW0oKS0+aXNMb2NrZWQoKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCmluZGV4IDk4
OTVjNjdhNzI1NWNjNDViYmUwNWQwOTJjY2ExNGM2MmQzNDkwNjAuLjNkNTM1NjQwZDRlZmY3OTVj
Nzc0YTQ0NGM4Yjc1YTA5ZWEyZTZjNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keU93bmVyLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
anNvbihSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKICAgICB2b2lkIHRleHQoUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CiAKLSAgICBib29sIGlzRGlzdHVyYmVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0Rpc3R1cmJlZDsgfTsKKyAgICBib29sIGlzRGlzdHVyYmVkKCkgY29uc3Q7CiAgICAgYm9vbCBp
c0Rpc3R1cmJlZE9yTG9ja2VkKCkgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRCbG9iKGNvbnN0IEJs
b2ImLCBGZXRjaEJvZHlDb25zdW1lciopOwpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9ibG9iTG9hZGVyOyB9CiAKICAgICBS
ZWZQdHI8UmVhZGFibGVTdHJlYW0+IHJlYWRhYmxlU3RyZWFtKEpTQzo6RXhlY1N0YXRlJik7Ci0g
ICAgdmlydHVhbCBib29sIGhhc1JlYWRhYmxlU3RyZWFtQm9keSgpIGNvbnN0IHsgcmV0dXJuIG1f
Ym9keSAmJiBtX2JvZHktPmhhc1JlYWRhYmxlU3RyZWFtKCk7IH0KKyAgICBib29sIGhhc1JlYWRh
YmxlU3RyZWFtQm9keSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9keSAmJiBtX2JvZHktPmhhc1JlYWRh
YmxlU3RyZWFtKCk7IH0KIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKICAgICB2aXJ0dWFsIHZv
aWQgY29uc3VtZUJvZHlBc1N0cmVhbSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlTb3VyY2UuY3BwCmluZGV4IDJhYTdjYmEwZWMzOGJlMjUxYTJhMDJhZDNi
NzkyMDBmYTJjZDNiMTQuLjc5NDU5ZjM0NWRkZmJjMDM2Y2E1NTU2ZThhMDBhNjNlMWQ3NjM3Njgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5U291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5j
cHAKQEAgLTM4LDExICszOCw2IEBAIEZldGNoQm9keVNvdXJjZTo6RmV0Y2hCb2R5U291cmNlKEZl
dGNoQm9keU93bmVyJiBib2R5T3duZXIpCiB7CiB9CiAKLWJvb2wgRmV0Y2hCb2R5U291cmNlOjpp
c1JlYWRhYmxlU3RyZWFtTG9ja2VkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY29udHJvbGxlcigp
LmlzQ29udHJvbGxlZFJlYWRhYmxlU3RyZWFtTG9ja2VkKCk7Ci19Ci0KIHZvaWQgRmV0Y2hCb2R5
U291cmNlOjpzZXRBY3RpdmUoKQogewogICAgIG1fYm9keU93bmVyLnNldFBlbmRpbmdBY3Rpdml0
eSgmbV9ib2R5T3duZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHlTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hC
b2R5U291cmNlLmgKaW5kZXggMDc2YzQ5ODFhZDY3MWU1NDJkNjQyYTM5ZTk3MDY1ZTRlNmQ0ZGI3
MS4uOTgxNTliOGNlOTJhMWNmY2IyOGU5NzQxYzdiYTMyNDQwYzBiZDdhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlTb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keVNvdXJjZS5oCkBAIC00Nyw3ICs0Nyw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGVycm9yKGNvbnN0IFN0cmluZyYpOwogCiAgICAgYm9vbCBp
c0NhbmNlbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzQ2FuY2VsbGluZzsgfQotICAgIGJvb2wg
aXNSZWFkYWJsZVN0cmVhbUxvY2tlZCgpIGNvbnN0OwogCiAgICAgdm9pZCByZXNvbHZlUHVsbFBy
b21pc2UoKSB7IHB1bGxGaW5pc2hlZCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4IGNjZTdhODcwMWM0ZjE2YzA4YzkzNWFmMzA2
MzA2YjkyMDQ3OWUxZGMuLjQ3NzIwNTE0ZGNhMWIzNDRhZTA2MGU1NzY4ODJhZmYxYTAxNmVlMTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcApA
QCAtNzksMTQgKzc5LDYgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjppbml0aWFsaXplV2l0aChGZXRj
aEJvZHk6OkluaXQmJiBib2R5KQogICAgIHVwZGF0ZUNvbnRlbnRUeXBlKCk7CiB9CiAKLXZvaWQg
RmV0Y2hSZXNwb25zZTo6c2V0Qm9keUFzUmVhZGFibGVTdHJlYW0oKQotewotICAgIGlmIChpc0Jv
ZHlOdWxsKCkpCi0gICAgICAgIHNldEJvZHkoRmV0Y2hCb2R5Ojpsb2FkaW5nQm9keSgpKTsKLSAg
ICBtX2lzUmVhZGFibGVTdHJlYW0gPSB0cnVlOwotICAgIHVwZGF0ZUNvbnRlbnRUeXBlKCk7Ci19
Ci0KIEZldGNoUmVzcG9uc2U6OkZldGNoUmVzcG9uc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgc3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+JiYgYm9keSwgUmVmPEZldGNoSGVhZGVy
cz4mJiBoZWFkZXJzLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UpCiAgICAgOiBGZXRjaEJv
ZHlPd25lcihjb250ZXh0LCBXVEZNb3ZlKGJvZHkpLCBXVEZNb3ZlKGhlYWRlcnMpKQogICAgICwg
bV9yZXNwb25zZShXVEZNb3ZlKHJlc3BvbnNlKSkKQEAgLTI3NywxMSArMjY5LDIyIEBAIEZldGNo
UmVzcG9uc2U6OlJlc3BvbnNlRGF0YSBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keSgpCiAgICAg
cmV0dXJuIGJvZHkoKS50YWtlKCk7CiB9CiAKK3ZvaWQgRmV0Y2hSZXNwb25zZTo6Y29uc3VtZUJv
ZHlGcm9tUmVhZGFibGVTdHJlYW0oQ29uc3VtZURhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQorewor
ICAgIEFTU0VSVChtX2JvZHkpOworICAgIEFTU0VSVChtX2JvZHktPnJlYWRhYmxlU3RyZWFtKCkp
OworCisgICAgQVNTRVJUKCFpc0Rpc3R1cmJlZCgpKTsKKyAgICBtX2lzRGlzdHVyYmVkID0gdHJ1
ZTsKKworICAgIG1fYm9keS0+Y29uc3VtZXIoKS5leHRyYWN0KCptX2JvZHktPnJlYWRhYmxlU3Ry
ZWFtKCksIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25z
dW1lQm9keVdoZW5Mb2FkZWQoQ29uc3VtZURhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAg
IEFTU0VSVChpc0xvYWRpbmcoKSk7CiAKLSAgICBBU1NFUlQoIW1faXNEaXN0dXJiZWQpOworICAg
IEFTU0VSVCghaXNEaXN0dXJiZWQoKSk7CiAgICAgbV9pc0Rpc3R1cmJlZCA9IHRydWU7CiAKICAg
ICBtX2JvZHlMb2FkZXItPnNldENvbnN1bWVEYXRhQ2FsbGJhY2soV1RGTW92ZShjYWxsYmFjaykp
OwpAQCAtMzI5LDEwICszMzIsMTEgQEAgdm9pZCBGZXRjaFJlc3BvbnNlOjpjb25zdW1lQm9keUFz
U3RyZWFtKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1faXNEaXN0dXJiZWQgPSB0
cnVlOwogICAgIEFTU0VSVChtX2JvZHlMb2FkZXIpOwogCi0gICAgc2V0Qm9keUFzUmVhZGFibGVT
dHJlYW0oKTsKKyAgICBpZiAoaXNCb2R5TnVsbCgpKQorICAgICAgICBzZXRCb2R5KEZldGNoQm9k
eTo6bG9hZGluZ0JvZHkoKSk7CisgICAgdXBkYXRlQ29udGVudFR5cGUoKTsKIAogICAgIGF1dG8g
ZGF0YSA9IG1fYm9keUxvYWRlci0+c3RhcnRTdHJlYW1pbmcoKTsKICAgICBpZiAoZGF0YSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuaAppbmRleCBkYzlm
MTFlZDg0NzYxMzI0YjcxOGIwY2VmMDI3Y2U0MDQxZGFmZjhhLi45ODVlZTgxOTY0ZGVjOTg0ODkx
MjZhMjA4ZGViODMxMGY4NjBiNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuaApAQCAtNzEsNyArNzEsNiBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRTdGF0dXMoaW50IHN0YXR1cywgY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0
KTsKICAgICB2b2lkIGluaXRpYWxpemVXaXRoKEZldGNoQm9keTo6SW5pdCYmKTsKLSAgICB2b2lk
IHNldEJvZHlBc1JlYWRhYmxlU3RyZWFtKCk7CiAKICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3BvbnNlLnR5cGUoKTsgfQogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3Q7
CkBAIC05OSwxMiArOTgsMTAgQEAgcHVibGljOgogCiAgICAgdXNpbmcgQ29uc3VtZURhdGFDYWxs
YmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChFeGNlcHRpb25PcjxSZWZQdHI8U2hhcmVkQnVmZmVy
Pj4mJik+OwogICAgIHZvaWQgY29uc3VtZUJvZHlXaGVuTG9hZGVkKENvbnN1bWVEYXRhQ2FsbGJh
Y2smJik7CisgICAgdm9pZCBjb25zdW1lQm9keUZyb21SZWFkYWJsZVN0cmVhbShDb25zdW1lRGF0
YUNhbGxiYWNrJiYpOwogCiAgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNw
b25zZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzcG9uc2U7IH0KIAotICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBtZXRob2QgYW5kIHVzZSBGZXRjaEJvZHlPd25lciBvbmUgb25jZSB3ZSBoYXZlIGZ1
bGwgc3VwcG9ydCBpbiBET00gUmVhZGFibGVTdHJlYW0uCi0gICAgYm9vbCBoYXNSZWFkYWJsZVN0
cmVhbUJvZHkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzUmVhZGFibGVTdHJlYW07IH0KLQog
cHJpdmF0ZToKICAgICBGZXRjaFJlc3BvbnNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBzdGQ6
Om9wdGlvbmFsPEZldGNoQm9keT4mJiwgUmVmPEZldGNoSGVhZGVycz4mJiwgUmVzb3VyY2VSZXNw
b25zZSYmKTsKIApAQCAtMTQ3LDggKzE0NCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjpvcHRpb25h
bDxCb2R5TG9hZGVyPiBtX2JvZHlMb2FkZXI7CiAgICAgbXV0YWJsZSBTdHJpbmcgbV9yZXNwb25z
ZVVSTDsKICAgICBib29sIG1fc2hvdWxkRXhwb3NlQm9keSB7IHRydWUgfTsKLSAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoYXQgZmxhZyBvbmNlIHdlIGhhdmUgZnVsbCBzdXBwb3J0IGluIERPTSBSZWFk
YWJsZVN0cmVhbS4KLSAgICBib29sIG1faXNSZWFkYWJsZVN0cmVhbSB7IGZhbHNlIH07CiAKICAg
ICBGZXRjaEJvZHlDb25zdW1lciBtX2NvbnN1bWVyIHsgRmV0Y2hCb2R5Q29uc3VtZXI6OlR5cGU6
OkFycmF5QnVmZmVyICB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuaWRsCmluZGV4IDk1MTA2MDIyMThkYzA3ZTVkZGI5MWE3NDVkYWY2MzU5NTk2
NDE3MGUuLjBjNzg2YzhhYzcxYzc3MTU4ZTI2NDMwZmRlOTNhZGRmYzllNjNiN2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmlkbApAQCAtODUsNSAr
ODUsNCBAQCBkaWN0aW9uYXJ5IEZldGNoUmVzcG9uc2VJbml0IHsKICAgICBbUHJpdmF0ZUlkZW50
aWZpZXJdIHZvaWQgaW5pdGlhbGl6ZVdpdGgoQm9keUluaXQgYm9keSk7CiAgICAgW0NhbGxXaXRo
PVNjcmlwdFN0YXRlLCBOZXdPYmplY3QsIFByaXZhdGVJZGVudGlmaWVyXSBSZWFkYWJsZVN0cmVh
bT8gY3JlYXRlUmVhZGFibGVTdHJlYW0oKTsKICAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIGJvb2xl
YW4gaXNEaXN0dXJiZWQoKTsKLSAgICBbUHJpdmF0ZUlkZW50aWZpZXJdIHZvaWQgc2V0Qm9keUFz
UmVhZGFibGVTdHJlYW0oKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuanMKaW5kZXggNzhmZWEwZjUwNTEzZWFiNDRmMTE1ZmEyNjNkZDVmNzVmYzYz
Y2M0Yi4uNzQxMzBmNGJiOTY2MGQ0ZTM5ZGRlMTBjOTI0ZGQzODcyNWExMmQxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcwpAQCAtNDksMTEgKzQ5
LDkgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZUZldGNoUmVzcG9uc2UoYm9keSwgaW5pdCkKIAogICAg
ICAgICAvLyBGSVhNRTogVXNlIEBpc1JlYWRhYmxlU3RyZWFtIG9uY2UgaXQgaXMgbm8gbG9uZ2Vy
IGd1YXJkZWQgYnkgU1RSRUFNU19BUEkgY29tcGlsYXRpb24gZ3VhcmQuCiAgICAgICAgIGxldCBp
c0JvZHlSZWFkYWJsZVN0cmVhbSA9IChAaXNPYmplY3QoYm9keSkgJiYgISFib2R5LkByZWFkYWJs
ZVN0cmVhbUNvbnRyb2xsZXIpOwotICAgICAgICBpZiAoaXNCb2R5UmVhZGFibGVTdHJlYW0pIHsK
KyAgICAgICAgaWYgKGlzQm9keVJlYWRhYmxlU3RyZWFtKQogICAgICAgICAgICAgdGhpcy5AYm9k
eSA9IGJvZHk7Ci0gICAgICAgICAgICB0aGlzLkBzZXRCb2R5QXNSZWFkYWJsZVN0cmVhbSgpOwot
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMuQGluaXRpYWxpemVXaXRoKGJvZHkpOwor
ICAgICAgICB0aGlzLkBpbml0aWFsaXplV2l0aChib2R5KTsKICAgICB9CiAKICAgICByZXR1cm4g
dGhpczsKQEAgLTk2LDE3ICs5NCwxNSBAQCBmdW5jdGlvbiBjbG9uZSgpCiAgICAgaWYgKEBSZXNw
b25zZS5wcm90b3R5cGUuQGlzRGlzdHVyYmVkLkBjYWxsKHRoaXMpIHx8ICh0aGlzLkBib2R5ICYm
IEBpc1JlYWRhYmxlU3RyZWFtTG9ja2VkKHRoaXMuQGJvZHkpKSkKICAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJDYW5ub3QgY2xvbmUgYSBkaXN0dXJiZWQgUmVzcG9uc2UiKTsKIAotICAgIHZhciBj
bG9uZWQgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjbG9uZUZvckpTLkBjYWxsKHRoaXMpOwotCiAg
ICAgLy8gTGV0J3MgY3JlYXRlIEBib2R5IGlmIHJlc3BvbnNlIGJvZHkgaXMgbG9hZGluZyB0byBw
cm92aWRlIGRhdGEgdG8gYm90aCBjbG9uZXMuCiAgICAgaWYgKEBSZXNwb25zZS5wcm90b3R5cGUu
QGlzTG9hZGluZy5AY2FsbCh0aGlzKSAmJiB0aGlzLkBib2R5ID09PSBAdW5kZWZpbmVkKQogICAg
ICAgICB0aGlzLkBib2R5ID0gQFJlc3BvbnNlLnByb3RvdHlwZS5AY3JlYXRlUmVhZGFibGVTdHJl
YW0uQGNhbGwodGhpcyk7CiAKLSAgICBpZiAodGhpcy5AYm9keSkgewotICAgICAgICB2YXIgdGVl
ZFJlYWRhYmxlU3RyZWFtcyA9IEByZWFkYWJsZVN0cmVhbVRlZSh0aGlzLkBib2R5LCB0cnVlKTsK
LSAgICAgICAgdGhpcy5AYm9keSA9IHRlZWRSZWFkYWJsZVN0cmVhbXNbMF07Ci0gICAgICAgIGNs
b25lZC5AYm9keSA9IHRlZWRSZWFkYWJsZVN0cmVhbXNbMV07Ci0gICAgfQorICAgIHZhciBjbG9u
ZWQgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjbG9uZUZvckpTLkBjYWxsKHRoaXMpOworCisgICAg
Ly8gTGV0J3MgcmVmcmVzaCBAYm9keSB3aXRoIHRoZSBjbG9uZWQgc3RyZWFtLgorICAgIHRoaXMu
QGJvZHkgPSBAUmVzcG9uc2UucHJvdG90eXBlLkBjcmVhdGVSZWFkYWJsZVN0cmVhbS5AY2FsbCh0
aGlzKTsKKwogICAgIHJldHVybiBjbG9uZWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCBjZjQ4Njk3NjQ5OWIyOGUzY2NkY2MyNWM4
NzczYTE1NWNiZTllOWQzLi5kMTYxMDVlYjU1YjVhYjUwNGI2MTlhMTQwYmE3OTcxOTJhMGI0YjA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0uY3BwCkBA
IC01NSw2ICs1NSwxNyBAQCBSZWY8UmVhZGFibGVTdHJlYW0+IFJlYWRhYmxlU3RyZWFtOjpjcmVh
dGUoSlNDOjpFeGVjU3RhdGUmIGV4ZWNTdGF0ZSwgUmVmUHRyPFJlYQogICAgIHJldHVybiBjcmVh
dGUoZ2xvYmFsT2JqZWN0LCAqbmV3UmVhZGFibGVTdHJlYW0pOwogfQogCitzdGF0aWMgaW5saW5l
IEpTQzo6SlNWYWx1ZSBjYWxsRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpT
VmFsdWUganNGdW5jdGlvbiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdM
aXN0JiBhcmd1bWVudHMpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
c3RhdGUudm0oKSk7CisgICAgSlNDOjpDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBhdXRvIGNhbGxU
eXBlID0gSlNDOjpnZXRDYWxsRGF0YShqc0Z1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgQVNTRVJU
KGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOworICAgIGF1dG8gcmVzdWx0ID0gY2Fs
bCgmc3RhdGUsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1
bWVudHMpOworICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKwogdm9pZCBSZWFkYWJsZVN0cmVhbTo6cGlwZVRvKFJlYWRhYmxlU3RyZWFtU2luayYg
c2luaykKIHsKICAgICBhdXRvJiBzdGF0ZSA9ICptX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
OwpAQCAtNjQsMTMgKzc1LDEwIEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OnBpcGVUbyhSZWFkYWJs
ZVN0cmVhbVNpbmsmIHNpbmspCiAgICAgYXV0byByZWFkYWJsZVN0cmVhbVBpcGVUbyA9IG1fZ2xv
YmFsT2JqZWN0LT5nZXQoJnN0YXRlLCBwcml2YXRlTmFtZSk7CiAgICAgQVNTRVJUKHJlYWRhYmxl
U3RyZWFtUGlwZVRvLmlzRnVuY3Rpb24oKSk7CiAKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAg
ICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHJlYWRhYmxlU3RyZWFtUGlwZVRvLCBj
YWxsRGF0YSk7Ci0gICAgQVNTRVJUKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGU6Ok5vbmUpOwog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKICAgICBhcmd1bWVudHMuYXBwZW5k
KHJlYWRhYmxlU3RyZWFtKCkpOwogICAgIGFyZ3VtZW50cy5hcHBlbmQodG9KUygmc3RhdGUsIG1f
Z2xvYmFsT2JqZWN0LmdldCgpLCBzaW5rKSk7Ci0gICAgSlNDOjpjYWxsKCZzdGF0ZSwgcmVhZGFi
bGVTdHJlYW1QaXBlVG8sIGNhbGxUeXBlLCBjYWxsRGF0YSwgSlNDOjpqc1VuZGVmaW5lZCgpLCBh
cmd1bWVudHMpOworICAgIGNhbGxGdW5jdGlvbihzdGF0ZSwgcmVhZGFibGVTdHJlYW1QaXBlVG8s
IEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRzKTsKIH0KIAogc3RkOjpwYWlyPFJlZjxSZWFk
YWJsZVN0cmVhbT4sIFJlZjxSZWFkYWJsZVN0cmVhbT4+IFJlYWRhYmxlU3RyZWFtOjp0ZWUoKQpA
QCAtODIsMTMgKzkwLDEwIEBAIHN0ZDo6cGFpcjxSZWY8UmVhZGFibGVTdHJlYW0+LCBSZWY8UmVh
ZGFibGVTdHJlYW0+PiBSZWFkYWJsZVN0cmVhbTo6dGVlKCkKICAgICBhdXRvIHJlYWRhYmxlU3Ry
ZWFtVGVlID0gbV9nbG9iYWxPYmplY3QtPmdldCgmc3RhdGUsIHByaXZhdGVOYW1lKTsKICAgICBB
U1NFUlQocmVhZGFibGVTdHJlYW1UZWUuaXNGdW5jdGlvbigpKTsKIAotICAgIENhbGxEYXRhIGNh
bGxEYXRhOwotICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEocmVhZGFibGVTdHJl
YW1UZWUsIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gSlNDOjpDYWxsVHlwZTo6
Tm9uZSk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIGFyZ3VtZW50
cy5hcHBlbmQocmVhZGFibGVTdHJlYW0oKSk7CiAgICAgYXJndW1lbnRzLmFwcGVuZChKU0M6Ompz
Qm9vbGVhbih0cnVlKSk7Ci0gICAgSlNWYWx1ZSByZXR1cm5lZFZhbHVlID0gSlNDOjpjYWxsKCZz
dGF0ZSwgcmVhZGFibGVTdHJlYW1UZWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwgSlNDOjpqc1VuZGVm
aW5lZCgpLCBhcmd1bWVudHMpOworICAgIGF1dG8gcmV0dXJuZWRWYWx1ZSA9IGNhbGxGdW5jdGlv
bihzdGF0ZSwgcmVhZGFibGVTdHJlYW1UZWUsIEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRz
KTsKIAogICAgIGF1dG8gcmVzdWx0cyA9IERldGFpbDo6U2VxdWVuY2VDb252ZXJ0ZXI8SURMSW50
ZXJmYWNlPFJlYWRhYmxlU3RyZWFtPj46OmNvbnZlcnQoc3RhdGUsIHJldHVybmVkVmFsdWUpOwog
CkBAIC05Niw0ICsxMDEsMzMgQEAgc3RkOjpwYWlyPFJlZjxSZWFkYWJsZVN0cmVhbT4sIFJlZjxS
ZWFkYWJsZVN0cmVhbT4+IFJlYWRhYmxlU3RyZWFtOjp0ZWUoKQogICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihyZXN1bHRzWzBdLnJlbGVhc2VOb25OdWxsKCksIHJlc3VsdHNbMV0ucmVsZWFzZU5v
bk51bGwoKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja1JlYWRhYmxlU3RyZWFtKEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUmVhZGFibGVTdHJlYW0qIHJlYWRhYmxl
U3RyZWFtLCBKU0M6OkpTVmFsdWUgZnVuY3Rpb24pCit7CisgICAgYXV0byYgc3RhdGUgPSAqZ2xv
YmFsT2JqZWN0Lmdsb2JhbEV4ZWMoKTsKKworICAgIEFTU0VSVChmdW5jdGlvbik7CisgICAgSlND
OjpNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChy
ZWFkYWJsZVN0cmVhbSk7CisgICAgcmV0dXJuIGNhbGxGdW5jdGlvbihzdGF0ZSwgZnVuY3Rpb24s
IEpTQzo6anNVbmRlZmluZWQoKSwgYXJndW1lbnRzKS5pc1RydWUoKTsKK30KKworYm9vbCBSZWFk
YWJsZVN0cmVhbTo6aXNMb2NrZWQoKSBjb25zdAoreworICAgIHJldHVybiBjaGVja1JlYWRhYmxl
U3RyZWFtKCpnbG9iYWxPYmplY3QoKSwgcmVhZGFibGVTdHJlYW0oKSwgZ2xvYmFsT2JqZWN0KCkt
PmJ1aWx0aW5JbnRlcm5hbEZ1bmN0aW9ucygpLnJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzKCkubV9p
c1JlYWRhYmxlU3RyZWFtTG9ja2VkRnVuY3Rpb24uZ2V0KCkpOworfQorCitib29sIFJlYWRhYmxl
U3RyZWFtOjppc0Rpc3R1cmJlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoZWNrUmVhZGFibGVT
dHJlYW0oKmdsb2JhbE9iamVjdCgpLCByZWFkYWJsZVN0cmVhbSgpLCBnbG9iYWxPYmplY3QoKS0+
YnVpbHRpbkludGVybmFsRnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHMoKS5tX2lz
UmVhZGFibGVTdHJlYW1EaXN0dXJiZWRGdW5jdGlvbi5nZXQoKSk7Cit9CisKK2Jvb2wgUmVhZGFi
bGVTdHJlYW06OmlzRGlzdHVyYmVkKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCit7
CisgICAgYXV0byYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8mIGdsb2JhbE9iamVjdCA9ICpq
c0R5bmFtaWNEb3duY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHZtLCBzdGF0ZS5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOworICAgIGF1dG8qIHJlYWRhYmxlU3RyZWFtID0ganNEeW5hbWljRG93bmNh
c3Q8SlNSZWFkYWJsZVN0cmVhbSo+KHZtLCB2YWx1ZSk7CisKKyAgICByZXR1cm4gY2hlY2tSZWFk
YWJsZVN0cmVhbShnbG9iYWxPYmplY3QsIHJlYWRhYmxlU3RyZWFtLCBnbG9iYWxPYmplY3QuYnVp
bHRpbkludGVybmFsRnVuY3Rpb25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHMoKS5tX2lzUmVh
ZGFibGVTdHJlYW1EaXN0dXJiZWRGdW5jdGlvbi5nZXQoKSk7Cit9CisKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IGFlNWIwZDVmYWE5MDI3MmM4
NzcxNjcxNDk5MmUzZGMzNGM2NmY0OGEuLjc4NDI1Y2YwOTIwMmY0NTA5YjBiMTgzMDVlZmViY2Jm
MWU5ODRjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
U3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW0u
aApAQCAtNDEsMTEgKzQxLDE1IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8UmVhZGFibGVT
dHJlYW0+IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSYsIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVNvdXJj
ZT4mJik7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0Rpc3R1cmJlZChKU0M6
OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7CisKICAgICBzdGQ6OnBhaXI8UmVmPFJlYWRhYmxl
U3RyZWFtPiwgUmVmPFJlYWRhYmxlU3RyZWFtPj4gdGVlKCk7CiAKICAgICB2b2lkIHBpcGVUbyhS
ZWFkYWJsZVN0cmVhbVNpbmsmKTsKKyAgICBib29sIGlzTG9ja2VkKCkgY29uc3Q7CisgICAgYm9v
bCBpc0Rpc3R1cmJlZCgpIGNvbnN0OwogCi0gICAgSlNSZWFkYWJsZVN0cmVhbSogcmVhZGFibGVT
dHJlYW0oKSB7IHJldHVybiBndWFyZGVkKCk7IH0KKyAgICBKU1JlYWRhYmxlU3RyZWFtKiByZWFk
YWJsZVN0cmVhbSgpIGNvbnN0IHsgcmV0dXJuIGd1YXJkZWQoKTsgfQogCiBwcm90ZWN0ZWQ6CiAg
ICAgUmVhZGFibGVTdHJlYW0oSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNSZWFk
YWJsZVN0cmVhbSYgcmVhZGFibGVTdHJlYW0pIDogRE9NR3VhcmRlZDxKU1JlYWRhYmxlU3RyZWFt
PihnbG9iYWxPYmplY3QsIHJlYWRhYmxlU3RyZWFtKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5jcHAKaW5kZXggNzFjNTVlNDUxMjY2MTNkZDE1ZmZjNTdkY2I4YTkwY2E0MTNkNzc4YS4uMTY1
OWNhZjhlYTAwMDAwNjE2MTk2N2M2NWIyOTMzNzY3M2U1MDg2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5jcHAKQEAgLTY5LDI5ICs2OSw2IEBAIEpTQzo6SlNWYWx1ZSBSZWFkYWJsZVN0cmVh
bURlZmF1bHRDb250cm9sbGVyOjppbnZva2UoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6CiAg
ICAgcmV0dXJuIGNhbGxGdW5jdGlvbihzdGF0ZSwgZnVuY3Rpb24sICZvYmplY3QsIGFyZ3VtZW50
cyk7CiB9CiAKLWJvb2wgUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcjo6aXNDb250cm9s
bGVkUmVhZGFibGVTdHJlYW1Mb2NrZWQoKSBjb25zdAotewotICAgIGF1dG8mIGdsb2JhbE9iamVj
dCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwotICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0
LnZtKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIGF1dG8mIHN0YXRlID0gZ2xvYmFsRXhlYygp
OwotCi0gICAgYXV0byYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpOwotICAgIGF1dG8gcmVhZGFibGVTdHJlYW0gPSBtX2pzQ29udHJvbGxl
ci0+Z2V0KCZzdGF0ZSwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5jb250cm9sbGVkUmVhZGFi
bGVTdHJlYW1Qcml2YXRlTmFtZSgpKTsKLSAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwot
Ci0gICAgYXV0byogaXNMb2NrZWQgPSBnbG9iYWxPYmplY3QuYnVpbHRpbkludGVybmFsRnVuY3Rp
b25zKCkucmVhZGFibGVTdHJlYW1JbnRlcm5hbHMoKS5tX2lzUmVhZGFibGVTdHJlYW1Mb2NrZWRG
dW5jdGlvbi5nZXQoKTsKLSAgICBBU1NFUlQoaXNMb2NrZWQpOwotCi0gICAgSlNDOjpNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChyZWFkYWJsZVN0
cmVhbSk7Ci0gICAgYXV0byByZXN1bHQgPSBjYWxsRnVuY3Rpb24oc3RhdGUsIGlzTG9ja2VkLCBK
U0M6OmpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7Ci0gICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRp
b24oKTsKLQotICAgIHJldHVybiByZXN1bHQuaXNUcnVlKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIuaAppbmRleCAzNjM0YzRiMjlkNDRmMGMzZDU4OWM5ZmFjMjc5MzAzMTU3MWRkZTJiLi5h
ZmFhMTc3ZjQ0ZWFjYWZlZGY2NjU0OTUxYzgwYjJkMzU4MzNkZDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlci5oCkBAIC01NCw4ICs1NCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xvc2UoKSB7
IGludm9rZSgqZ2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhlYygpLCBqc0NvbnRyb2xsZXIoKSwgImNs
b3NlIiwgSlNDOjpqc1VuZGVmaW5lZCgpKTsgfQogCi0gICAgYm9vbCBpc0NvbnRyb2xsZWRSZWFk
YWJsZVN0cmVhbUxvY2tlZCgpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIHZvaWQgZXJyb3IoSlND
OjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUpIHsgaW52b2tlKHN0YXRlLCBq
c0NvbnRyb2xsZXIoKSwgImVycm9yIiwgdmFsdWUpOyB9CiAgICAgdm9pZCBlbnF1ZXVlKEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKSB7IGludm9rZShzdGF0ZSwganND
b250cm9sbGVyKCksICJlbnF1ZXVlIiwgdmFsdWUpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKaW5kZXggNTcyYjdjNzVkOWY2ZjY3ZTdh
ZmIxYThiMTU0OTMwMzc1ZTgyYmQzZi4uNWE2NDI0YjEzYjE0ZjFhNzBhOTEyNWRiYmM3MWMwNTQ4
M2IyNDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1
aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWls
dGluTmFtZXMuaApAQCAtMjMyLDcgKzIzMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBt
YWNybyhyZXRyaWV2ZVJlc3BvbnNlKSBcCiAgICAgbWFjcm8oc2VsZikgXAogICAgIG1hY3JvKHNl
dEJvZHkpIFwKLSAgICBtYWNybyhzZXRCb2R5QXNSZWFkYWJsZVN0cmVhbSkgXAogICAgIG1hY3Jv
KHNldEJvZHlGcm9tSW5wdXRSZXF1ZXN0KSBcCiAgICAgbWFjcm8oc2V0U3RhdHVzKSBcCiAgICAg
bWFjcm8oc2hvd01vZGFsRGlhbG9nKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAK
aW5kZXggN2I0OTAzMTE3OTcxZjdhZDAxZWIzOTU2ZWE1MDc1OWIzYmY5ZTg2Mi4uN2IxNThkZjA4
ODhkMzg0Y2EyYTU0NDJlOTliZmFjNzUzMDc3ZDAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMTA5LDYgKzEwOSw3IEBACiAjaW5jbHVkZSAiUHJpbnRDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUHNldWRvRWxlbWVudC5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVk
ZSAiUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgog
I2luY2x1ZGUgIlJlbmRlckxheWVyQmFja2luZy5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyQ29t
cG9zaXRvci5oIgpAQCAtMzc5NiwyNSArMzc5Nyw3IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRTaG93
QWxsUGx1Z2lucyhib29sIHNob3cpCiAKIGJvb2wgSW50ZXJuYWxzOjppc1JlYWRhYmxlU3RyZWFt
RGlzdHVyYmVkKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBzdHJlYW0pCiB7Ci0gICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHN0YXRlLnZtRW50cnlHbG9iYWxPYmplY3Qo
KTsKLSAgICBKU1ZNQ2xpZW50RGF0YSogY2xpZW50RGF0YSA9IHN0YXRpY19jYXN0PEpTVk1DbGll
bnREYXRhKj4oc3RhdGUudm0oKS5jbGllbnREYXRhKTsKLSAgICBjb25zdCBJZGVudGlmaWVyJiBw
cml2YXRlTmFtZSA9IGNsaWVudERhdGEtPmJ1aWx0aW5GdW5jdGlvbnMoKS5yZWFkYWJsZVN0cmVh
bUludGVybmFsc0J1aWx0aW5zKCkuaXNSZWFkYWJsZVN0cmVhbURpc3R1cmJlZFByaXZhdGVOYW1l
KCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZTsKLSAgICBQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KHZh
bHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKLSAgICBnbG9iYWxP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3BlcnR5U2xvdChnbG9iYWxPYmplY3QsICZz
dGF0ZSwgcHJpdmF0ZU5hbWUsIHByb3BlcnR5U2xvdCk7Ci0gICAgdmFsdWUgPSBwcm9wZXJ0eVNs
b3QuZ2V0VmFsdWUoJnN0YXRlLCBwcml2YXRlTmFtZSk7Ci0gICAgQVNTRVJUKHZhbHVlLmlzRnVu
Y3Rpb24oKSk7Ci0KLSAgICBKU09iamVjdCogZnVuY3Rpb24gPSB2YWx1ZS5nZXRPYmplY3QoKTsK
LSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IEpTQzo6Z2V0
Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAgICBBU1NFUlQoY2FsbFR5cGUgIT0gSlND
OjpDYWxsVHlwZTo6Tm9uZSk7Ci0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwot
ICAgIGFyZ3VtZW50cy5hcHBlbmQoc3RyZWFtKTsKLSAgICBKU1ZhbHVlIHJldHVybmVkVmFsdWUg
PSBKU0M6OmNhbGwoJnN0YXRlLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBKU0M6Ompz
VW5kZWZpbmVkKCksIGFyZ3VtZW50cyk7Ci0gICAgQVNTRVJUKHJldHVybmVkVmFsdWUuaXNCb29s
ZWFuKCkpOwotCi0gICAgcmV0dXJuIHJldHVybmVkVmFsdWUuYXNCb29sZWFuKCk7CisgICAgcmV0
dXJuIFJlYWRhYmxlU3RyZWFtOjppc0Rpc3R1cmJlZChzdGF0ZSwgc3RyZWFtKTsKIH0KIAogSlNW
YWx1ZSBJbnRlcm5hbHM6OmNsb25lQXJyYXlCdWZmZXIoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIGJ1ZmZlciwgSlNWYWx1ZSBzcmNCeXRlT2Zmc2V0LCBKU1ZhbHVlIHNyY0xlbmd0aCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NDMwODEwOTVlMjU1NTE5OGI2ZDNiN2VhZjAzNmUzOTFiYjBiYWM1Li5kZDNkZGE5
ZTIxMzQ1NjBjMjhiMzAyYjVlYjdlNWQ4YzcyY2FhM2UwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTctMDktMDYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAg
IFN1cHBvcnQgY2FjaGluZyBvZiBSZXNwb25zZSB3aXRoIGEgUmVhZGFibGVTdHJlYW0gYm9keQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NDYyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICAqIFRlc3RF
eHBlY3RhdGlvbnM6IFJlbW92aW5nIGZsYWtpbmVzcyBleHBlY3RhdGlvbiBmb3IgY2FjaGUtcHV0
IHRlc3RzLgorICAgICAgICAqIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcHV0LXN0cmVh
bS5odHRwcy5hbnktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9jYWNo
ZS1zdG9yYWdlL2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcHV0LXN0cmVhbS5odHRwcy5hbnkuanM6
IEFkZGVkLgorICAgICAgICAoY2FjaGVfdGVzdC4pOgorICAgICAgICAoY2FjaGVfdGVzdCk6Cisg
ICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5jYWNoZV90ZXN0LnJldHVybi5yZWFkZXIucmVh
ZC50aGVuLik6CisgICAgICAgIChzdHJpbmdfYXBwZWFyZWRfaGVyZS5jYWNoZV90ZXN0KToKKyAg
ICAgICAgKiBodHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55
Lndvcmtlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2NhY2hlLXN0
b3JhZ2UvY2FjaGUtcHV0LXN0cmVhbS5odHRwcy5hbnkud29ya2VyLmh0bWw6IEFkZGVkLgorCiAy
MDE3LTA5LTA2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkIEdUSysgZ2FyZGVuaW5nLiBSZWJhc2VsaW5lIHRlc3RzIGFmdGVy
IEZyZWV0eXBlIHZlcnNpb24gYnVtcCBpbiByMjIxNjcwLiBQYXJ0IDUuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZwppbmRleCAxYzViOWU5ZGRhNGRlN2RjZmU3ZWRlNGM3MWNlNmQxNGQxYTdh
YjIwLi5lMjIzYzZkYWFiNDNkYzY2YWEyNDg3MjgxZmU4YTZiNzQ0MzJkMWJkIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0wOS0wNiAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBjYWNoaW5nIG9m
IFJlc3BvbnNlIHdpdGggYSBSZWFkYWJsZVN0cmVhbSBib2R5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY0NjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1wdXQuaHR0cHMtZXhwZWN0ZWQu
dHh0OgorCiAyMDE3LTA5LTA2ICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtjc3MtZ3JpZF0gZ3JpZCBzaG9ydGhhbmQgc2hvdWxkIG5vdCByZXNl
dCB0aGUgZ3V0dGVyIHByb3BlcnRpZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDdkMTAwYTNjMTA4
ZGVkMGUwMWM5OGU2YTQzYTE1MWVlZmQyZDllZDIuLmI5NDFmMjBlOTliNGU2MTQ0MmEzMDhjNjRj
MWEwZmFkNjRlYjcyNmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTIzLDggKzEyMyw2IEBAIGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzIFsgU2tpcCBdCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zdHViLTQuNi4y
LWNhY2hlLmh0bWwgWyBQYXNzIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3N0dWItNC42LjMtY2FjaGUtc3RvcmFnZS5odG1sIFsgUGFzcyBdCiBpbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1zdG9yYWdl
IFsgUGFzcyBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vy
cy9jYWNoZS1zdG9yYWdlL3dpbmRvdy9jYWNoZS1wdXQuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVy
ZSBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNo
ZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1wdXQuaHR0cHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAK
ICMgdGV4dGFyZWEuYW5pbWF0ZSBpcyBub3Qgc3VwcG9ydGVkCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdWktMy9jYXJldC1jb2xvci0wMTguaHRtbCBbIFNraXAgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQt
c3RyZWFtLmh0dHBzLmFueS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jYWNo
ZS1zdG9yYWdlL2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMjZjM2ViMmI0OGIzNWRhNjc4NGNlYzlkZDU3ZjY0NjZjMjZlMmE1Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQtc3Ry
ZWFtLmh0dHBzLmFueS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgQ2FjaGUu
cHV0IHNob3VsZCB0aHJvdyBpZiByZXNwb25zZSBzdHJlYW0gaXMgbG9ja2VkIAorUEFTUyBDYWNo
ZS5wdXQgc2hvdWxkIHRocm93IGlmIHJlc3BvbnNlIHN0cmVhbSBpcyBkaXN0dXJiZWQgCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcHV0LXN0
cmVhbS5odHRwcy5hbnkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2NhY2hlLXN0b3JhZ2Uv
Y2FjaGUtcHV0LXN0cmVhbS5odHRwcy5hbnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5
M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQtc3RyZWFtLmh0dHBzLmFueS5odG1s
CkBAIC0wLDAgKzEgQEAKKzwhLS0gVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBXZWJLaXQgdGVz
dCBpbmZyYXN0cnVjdHVyZSB0byBydW4gdGhlIHRlbXBsYXRlZCB0ZXN0IC0tPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2NhY2hl
LXN0b3JhZ2UvY2FjaGUtcHV0LXN0cmVhbS5odHRwcy5hbnkuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55LmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmFjNjY4NjA2YTBkZmU3OTE3Y2JmODJhOTZhNDJjZDRiZGJiNjYzNTAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9jYWNoZS1zdG9yYWdlL2NhY2hlLXB1dC1zdHJl
YW0uaHR0cHMuYW55LmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vIE1FVEE6IHNjcmlwdD0vc2Vydmlj
ZS13b3JrZXJzL2NhY2hlLXN0b3JhZ2UvcmVzb3VyY2VzL3Rlc3QtaGVscGVycy5qcworCit2YXIg
dGVzdF91cmwgPSAnaHR0cHM6Ly9leGFtcGxlLmNvbS9mb28nOwordmFyIHRlc3RfYm9keSA9ICdI
ZWxsbyB3b3JsZCEnOworCitjYWNoZV90ZXN0KGZ1bmN0aW9uKGNhY2hlKSB7CisgICAgdmFyIHN0
cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSgpOworICAgIHN0cmVhbS5nZXRSZWFkZXIoKTsKKyAg
ICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2Uoc3RyZWFtKTsKKyAgICByZXR1cm4gY2FjaGUu
cHV0KG5ldyBSZXF1ZXN0KCcnKSwgcmVzcG9uc2UpLnRoZW4oYXNzZXJ0X3VucmVhY2hlZCwgKGUp
ID0+IHsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCBmdW5jdGlvbigpIHsg
dGhyb3cgZSB9KTsKKyAgICB9KTsKK30sICdDYWNoZS5wdXQgc2hvdWxkIHRocm93IGlmIHJlc3Bv
bnNlIHN0cmVhbSBpcyBsb2NrZWQnKQorCitjYWNoZV90ZXN0KGZ1bmN0aW9uKGNhY2hlKSB7Cisg
ICAgdmFyIHN0cmVhbSA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7c3RhcnQ6IChjKSA9PiB7CisgICAg
ICAgIGMuZW5xdWV1ZShuZXcgVWludDhBcnJheSgxKSk7CisgICAgICAgIGMuZW5xdWV1ZShuZXcg
VWludDhBcnJheSgxKSk7CisgICAgICAgIGMuY2xvc2UoKTsKKyAgICB9fSk7CisgICAgdmFyIHJl
YWRlciA9IHN0cmVhbS5nZXRSZWFkZXIoKTsKKyAgICByZXR1cm4gcmVhZGVyLnJlYWQoKS50aGVu
KCgpID0+IHsKKyAgICAgICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7CisgICAgICAgIHZhciByZXNw
b25zZSA9IG5ldyBSZXNwb25zZShzdHJlYW0pOworICAgICAgICByZXR1cm4gY2FjaGUucHV0KG5l
dyBSZXF1ZXN0KCcnKSwgcmVzcG9uc2UpLnRoZW4oYXNzZXJ0X3VucmVhY2hlZCwgKGUpID0+IHsK
KyAgICAgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7IHRo
cm93IGUgfSk7CisgICAgICAgIH0pOworICAgIH0pOworfSwgJ0NhY2hlLnB1dCBzaG91bGQgdGhy
b3cgaWYgcmVzcG9uc2Ugc3RyZWFtIGlzIGRpc3R1cmJlZCcpCisKK2RvbmUoKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2NhY2hlLXN0b3JhZ2UvY2FjaGUtcHV0LXN0cmVhbS5o
dHRwcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2NhY2hl
LXN0b3JhZ2UvY2FjaGUtcHV0LXN0cmVhbS5odHRwcy5hbnkud29ya2VyLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zMjZjM2ViMmI0OGIzNWRhNjc4NGNlYzlkZDU3ZjY0NjZjMjZlMmE1Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1w
dXQtc3RyZWFtLmh0dHBzLmFueS53b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAor
CitQQVNTIENhY2hlLnB1dCBzaG91bGQgdGhyb3cgaWYgcmVzcG9uc2Ugc3RyZWFtIGlzIGxvY2tl
ZCAKK1BBU1MgQ2FjaGUucHV0IHNob3VsZCB0aHJvdyBpZiByZXNwb25zZSBzdHJlYW0gaXMgZGlz
dHVyYmVkIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9jYWNoZS1zdG9yYWdl
L2NhY2hlLXB1dC1zdHJlYW0uaHR0cHMuYW55Lndvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNoZS1wdXQtc3RyZWFtLmh0dHBzLmFueS53b3JrZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yMzgyOTEzNTI4ZTY5M2IzYTVkNTZjNjYwYTQ1MDYwOTgwYjU0OGMzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvY2FjaGUtc3RvcmFnZS9jYWNo
ZS1wdXQtc3RyZWFtLmh0dHBzLmFueS53b3JrZXIuaHRtbApAQCAtMCwwICsxIEBACis8IS0tIFRo
aXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgV2ViS2l0IHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gcnVu
IHRoZSB0ZW1wbGF0ZWQgdGVzdCAtLT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9jYWNoZS1zdG9yYWdlL3dvcmtlci9jYWNoZS1wdXQuaHR0cHMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvY2FjaGUtc3RvcmFnZS93b3JrZXIvY2FjaGUtcHV0Lmh0dHBzLWV4cGVjdGVkLnR4
dAppbmRleCAxYzgyZGQ5NmVmMTI1MjYxNjViNjVkYjcyMGM4YzI1OThjZDI0ZWUzLi42MTA1ZDY3
YzRkMDQzMGQ0YTUxODFjZmFlYWIyYjczNWJmNDlmZTRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9jYWNoZS1z
dG9yYWdlL3dvcmtlci9jYWNoZS1wdXQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL2NhY2hl
LXN0b3JhZ2Uvd29ya2VyL2NhY2hlLXB1dC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNiArMSw2
IEBACiAKIFBBU1MgQ2FjaGUucHV0IGNhbGxlZCB3aXRoIHNpbXBsZSBSZXF1ZXN0IGFuZCBSZXNw
b25zZSAKLUZBSUwgQ2FjaGUucHV0IGNhbGxlZCB3aXRoIFJlcXVlc3QgYW5kIFJlc3BvbnNlIGZy
b20gZmV0Y2goKSBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTog
b2JqZWN0ICJOb3RTdXBwb3J0ZWRFcnJvcjogQ2FjaGluZyBhIFJlc3BvbnNlIHdpdGggZGF0YSBz
dG9yZWQgaW4gYSBSZWFkYWJsZVN0cmVhbSBpcyBub3QgeWV0IHN1cHBvcnRlZCIKK1BBU1MgQ2Fj
aGUucHV0IGNhbGxlZCB3aXRoIFJlcXVlc3QgYW5kIFJlc3BvbnNlIGZyb20gZmV0Y2goKSAKIFBB
U1MgQ2FjaGUucHV0IHdpdGggUmVxdWVzdCB3aXRob3V0IGEgYm9keSAKIFBBU1MgQ2FjaGUucHV0
IHdpdGggUmVzcG9uc2Ugd2l0aG91dCBhIGJvZHkgCiBQQVNTIENhY2hlLnB1dCB3aXRoIGEgUmVz
cG9uc2UgY29udGFpbmluZyBhbiBlbXB0eSBVUkwgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>