<?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>226857</bug_id>
          
          <creation_ts>2021-06-09 16:19:02 -0700</creation_ts>
          <short_desc>Fix some inefficient uses of SharedBuffer</short_desc>
          <delta_ts>2021-07-19 18:59:34 -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>
          <dependson>228096</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>mifenton</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1768383</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-09 16:19:02 -0700</bug_when>
    <thetext>Fix some inefficient uses of SharedBuffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768384</commentid>
    <comment_count>1</comment_count>
      <attachid>431023</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-09 16:26:18 -0700</bug_when>
    <thetext>Created attachment 431023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768392</commentid>
    <comment_count>2</comment_count>
      <attachid>431024</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-09 16:48:59 -0700</bug_when>
    <thetext>Created attachment 431024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768394</commentid>
    <comment_count>3</comment_count>
      <attachid>431025</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-09 16:55:31 -0700</bug_when>
    <thetext>Created attachment 431025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768423</commentid>
    <comment_count>4</comment_count>
      <attachid>431025</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-06-09 18:22:24 -0700</bug_when>
    <thetext>Comment on attachment 431025
Patch

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

&gt; Source/WebCore/platform/SharedBuffer.h:103
&gt; +    Vector&lt;uint8_t&gt; dataAsVector() { return { data(), size() }; }

This should have the word &quot;copy&quot; in its name.

&gt; Source/WebCore/platform/SharedBuffer.h:188
&gt; +    void forEachSegment(const Function&lt;void(const uint8_t*, size_t)&gt;&amp;) const;

This should use a Span as the argument.

&gt; Source/WebCore/platform/SharedBuffer.h:189
&gt; +    bool startsWith(const uint8_t* prefix, size_t prefixSize) const;

This should use a Span as the argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768437</commentid>
    <comment_count>5</comment_count>
      <attachid>431041</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-09 19:16:11 -0700</bug_when>
    <thetext>Created attachment 431041
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768440</commentid>
    <comment_count>6</comment_count>
      <attachid>431042</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-06-09 19:29:30 -0700</bug_when>
    <thetext>Created attachment 431042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768473</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-09 23:37:41 -0700</bug_when>
    <thetext>Found 1 new test failure: imported/w3c/web-platform-tests/navigation-timing/nav2_test_attributes_values.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768551</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-06-10 08:08:24 -0700</bug_when>
    <thetext>Committed r278702 (238674@main): &lt;https://commits.webkit.org/238674@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 431042.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768552</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-10 08:09:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/79140035&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431023</attachid>
            <date>2021-06-09 16:26:18 -0700</date>
            <delta_ts>2021-06-09 16:51:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226857-20210609162617.patch</filename>
            <type>text/plain</type>
            <size>51357</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIyOTZhMTk5YjBhMGM3
MWVkYjkwNWNjYzA5MmJlOTdkYjk0NzcyYy4uOGE2NzIxMTM4NDRiODVjYTMxZTY2OTBkYjBjNmRl
NjJjYmE5Yjg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wNi0wOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBzb21lIGluZWZmaWNp
ZW50IHVzZXMgb2YgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY4NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGaXggc29tZSBpbmVmZmljaWVudCB1c2VzIG9mIFNoYXJlZEJ1ZmZl
cjoKKyAgICAgICAgLSBBdm9pZCBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHdoZW5ldmVy
IHBvc3NpYmxlIHNpbmNlIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgICBtYXkgaGF2ZSB0byBjb21i
aW5lIGludGVybmFsIHNlZ21lbnRzIG9mIFNoYXJlZEJ1ZmZlci4gQWRkZWQgYSBjb252ZW5pZW5j
ZQorICAgICAgICAgIGZ1bmN0aW9uIG9uIFNoYXJlZEJ1ZmZlciAoZm9yRWFjaFNlZ21lbnQoKSkg
dG8gZ2V0IHRoZSBkYXRhIHBvaW50ZXIgLyBzaXplCisgICAgICAgICAgb2YgZWFjaCBzZWdtZW50
LgorICAgICAgICAtIEF2b2lkIHNvbWUgdW5uZWNlc3NhcnkgY29uc3RydWN0aW9uIG9mIFNoYXJl
ZEJ1ZmZlciBzaW1wbHkgdG8gZ2V0IGEgVmVjdG9yLgorICAgICAgICAgIFdlIHNob3VsZCBjb25z
dHJ1Y3QgdGhlIFZlY3RvciBkaXJlY3RseSBpbiBzdWNoIGNhc2VzLiBJIGRyb3BwZWQgdGhlCisg
ICAgICAgICAgQmxvYiBmYWN0b3J5IHRoYXQgdG9vayBpbiBhIFNoYXJlZEJ1ZmZlciBhcyBpdCB3
YXMgaW5lZmZpY2llbnQgYW5kIGZyZXF1ZW50bHkKKyAgICAgICAgICBjYWxsZWQgaW5zdGVhZCBv
ZiB0aGUgbW9yZSBlZmZpY2llbnQgZmFjdG9yeSB0aGF0IHRha2VzIGluIGEgVmVjdG9yPHVpbnQ4
X3Q+LgorICAgICAgICAtIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gU2hhcmVkQnVmZmVy
IHRoYXQgcmV0dXJuIGEgVmVjdG9yLCBpbmNsdWRpbmcgb25lCisgICAgICAgICAgbmFtZWQgdGFr
ZURhdGEoKSB0aGF0IGF2b2lkcyBjb3B5aW5nIHRoZSBkYXRhLgorICAgICAgICAtIEFkZCBjb252
ZW5pZW5jZSBmdW5jdGlvbnMgdG8gU2hhcmVkQnVmZmVyIGZvciBkb2luZyBhIHByZWZpeCBjaGVj
ayBvciBjb3B5aW5nCisgICAgICAgICAgdG8gYSBkZXN0aW5hdGlvbiBwb2ludGVyLgorCisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyk6CisgICAgICAgICogTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAg
ICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpwYWNrYWdlRm9ybURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVdpdGhUeXBlQW5kRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJHZXRSZXN1bHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEYXRhQXZhaWxhYmxlRXZl
bnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAg
ICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToK
KyAgICAgICAgKiBlZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgICogZmlsZWFw
aS9CbG9iLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1
ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVu
Y2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
clNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdC5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXRjaEludGVncml0eU1ldGFkYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUlu
RGlyZWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudCk6Cisg
ICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbWJpbmVTZWdtZW50c0RhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjp0b0hleFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNv
cHlUbyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkYXRhQ2hh
bmdlZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVS
ZXNwb25zZUJsb2IpOgorCiAyMDIxLTA2LTA5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHNjcm9sbGJhciBjcmVhdGlvbiBjb2RlIGlu
IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKaW5kZXggZDMzM2M2MTRh
NDY1YmM2NjU1OTIyODMwZjdkOTliZGY0Y2Q1OTZlMC4uYTYyOTg2YjQ4OGJkMDc3NjIzZDkzZTE2
NzE2MjI3ODllMGYxZTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgQ2xp
cGJvYXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7CiBSZWY8QmxvYj4gQ2xpcGJv
YXJkSXRlbTo6YmxvYkZyb21TdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmdEYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0
byB1dGY4ID0gc3RyaW5nRGF0YS51dGY4KCk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250
ZXh0LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSksIEJs
b2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0
ZShjb250ZXh0LCBWZWN0b3IgeyB1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVuZ3RoKCkg
fSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBi
b2FyZEl0ZW06OlByZXNlbnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHls
ZShjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggMTU5ZWU4OTUwYjA0MGQ2ZDhlMjdlY2Q2OWE5NWJlMjQ4
N2YzM2JiYS4uNmEwZjAyYWZmNWVkMzUzODUwMGVhMjI1MjM2NTA5MzlmNTVlYzcwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzksNyArMzksNyBAQCB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmci
KSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAg
ICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgp
KSkKLSAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCks
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YSksIG1fbWltZVR5cGUpOworICAgICAgICAgICAg
bV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDgqPihkYXRhLmJ5dGVzKSwgZGF0YS5sZW5ndGggfSwgbV9taW1lVHlw
ZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5j
LWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0K
aW5kZXggZDkxNGNkMGQ0MGY5M2ViZjZmMDEzZDNhNGQ0MjM5M2I3NzFmNDI0YS4uYjRjMzFjYTUw
NjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzksNyArMzksOCBAQCB2b2lkIENsaXBib2FyZEltYWdl
UmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxTaGFy
ZWRCdQogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRX
aXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChhdXRv
IGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpuaWwg
aGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0TlMo
W1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwotICAg
ICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5T
Qml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dKSwgbV9taW1lVHlwZSk7Cisg
ICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRhdGlv
blVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsKKyAg
ICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZlY3Rv
ciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEubGVu
Z3RoIH0sIG1fbWltZVR5cGUpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA2MDY0NGJm
OTk0MTlmYjM3NzYwZDBmY2JiYzZhMDg2ZTc3NTA5OTk0Li4xNWJhMGNhMTJlMjE3MzUwYzVkYmQ0
MWU5Yzg3OWM1ZDk5YmU5MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtNDEsOSArNDEsOSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tRGF0YShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGF0aWMgaW5saW5lIFJl
ZjxCbG9iPiBibG9iRnJvbURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmVj
dG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAgICBy
ZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3RvciB7IGRhdGEsIGxlbmd0aCB9LCBCbG9i
Ojpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVudFR5cGUpKTsKKyAgICByZXR1cm4gQmxvYjo6
Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlw
ZShjb250ZW50VHlwZSkpOwogfQogCiAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3Zy5v
cmcvI2h0dHAtcXVvdGVkLXN0cmluZy10b2tlbi1jb2RlLXBvaW50CkBAIC0xNjgsNyArMTY4LDcg
QEAgc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgICAgICAgICBjb250ZW50VHlwZSA9
IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhoZWFkZXIuc3Vic3RyaW5nKGNvbnRl
bnRUeXBlQmVnaW4gKyBjb250ZW50VHlwZVByZWZpeExlbmd0aCwgY29udGVudFR5cGVFbmQgLSBj
b250ZW50VHlwZUJlZ2luIC0gY29udGVudFR5cGVQcmVmaXhMZW5ndGgpKTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgZm9ybS5hcHBlbmQobmFtZSwgRmlsZTo6Y3JlYXRlKGNvbnRleHQs
IEJsb2I6OmNyZWF0ZShjb250ZXh0LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShib2R5QmVnaW4sIGJv
ZHlMZW5ndGgpLmdldCgpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVudFR5cGUp
KS5nZXQoKSwgZmlsZW5hbWUpLmdldCgpLCBmaWxlbmFtZSk7CisgICAgICAgICAgICBmb3JtLmFw
cGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoY29udGV4dCwgQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZl
Y3RvciB7IGJvZHlCZWdpbiwgYm9keUxlbmd0aCB9LCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5
cGUoY29udGVudFR5cGUpKS5nZXQoKSwgZmlsZW5hbWUpLmdldCgpLCBmaWxlbmFtZSk7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKQEAgLTIyMiw3ICsyMjIsNyBAQCBz
dGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6QmxvYjoKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxiYWNr
VmFsdWVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oWyZkYXRhLCAmbGVuZ3Ro
LCAmY29udGVudFR5cGUsIGNvbnRleHRdKGF1dG8mKSB7Ci0gICAgICAgICAgICByZXR1cm4gYmxv
YkZyb21EYXRhKGNvbnRleHQsIGRhdGEsIGxlbmd0aCwgY29udGVudFR5cGUpOworICAgICAgICAg
ICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCB7IGRhdGEsIGxlbmd0aCB9LCBjb250ZW50
VHlwZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJvZHlD
b25zdW1lcjo6VHlwZTo6SlNPTjoKQEAgLTM1NCw4ICszNTQsOCBAQCBSZWY8QmxvYj4gRmV0Y2hC
b2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
ICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQs
IFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250ZW50
VHlwZSkpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZlciB0
byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAgICByZXR1cm4gYmxvYkZyb21EYXRh
KGNvbnRleHQsIG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCksIG1fY29udGVudFR5
cGUpOworICAgIGF1dG8gZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIpLT50
YWtlRGF0YSgpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShkYXRh
KSwgbV9jb250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFz
VGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJH
ZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVz
dWx0LmNwcAppbmRleCBhMWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlhYzBmLi43
NjJmOTQxYjgzYjk2ZWZjZTQ2NDBmMzMxZDU1NzdhMTBkZDcyNmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTMyLDExICsz
Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBM
KElEQkdldFJlc3VsdCk7CiAKLXZvaWQgSURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcihTaGFy
ZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZmZXI6
OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7Ci19Ci0KIElEQkdldFJl
c3VsdDo6SURCR2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRDb3B5
VGFnKQogewogICAgIGlzb2xhdGVkQ29weSh0aGF0LCAqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5oCmluZGV4IDhiOTliN2ZhMTUyN2E2
Zjk0OGIzOWUyODdiNjgwNGM2Mjg1ZDhhYmIuLjA2ZDYyOTFiMDA4MTZlMDI4MDliODEwNjUwMGEw
OTczNzg3YmQ0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkdldFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkdldFJlc3VsdC5oCkBAIC0xMDMsOCArMTAzLDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIElEQkdldFJlc3VsdCYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZGF0YUZyb21CdWZmZXIo
U2hhcmVkQnVmZmVyJik7Ci0KICAgICBzdGF0aWMgdm9pZCBpc29sYXRlZENvcHkoY29uc3QgSURC
R2V0UmVzdWx0JiBzb3VyY2UsIElEQkdldFJlc3VsdCYgZGVzdGluYXRpb24pOwogCiAgICAgSURC
VmFsdWUgbV92YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFy
ZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCA0NzVjYzg1ZjhmM2Q4NjM5ZTVmNjM2NjBh
N2RjNjJjZWY4YTdlZjY2Li4xMDYwZTJiNGFjYTJhZTliYjE1OTc5ZjlhYjJlODY1YmQ5NjQ3NzMy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVyL01l
ZGlhUmVjb3JkZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVk
aWFSZWNvcmRlcjo6c3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGltZVNs
aWMKIAogc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4m
JiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsKLSAg
ICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLnJlbGVh
c2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShjb250ZXh0KTsKKyAgICBhdXRv
IGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT50YWtlRGF0YSgp
LCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6SW5p
dCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9LCBC
bG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCBhZDllNDQ5OTYx
Yzg1NDViMjBkZDdmM2ExOGMwMWRiN2RmZDRhMmJjLi5kYWVkZDAwOThhZWRiOTk1N2RiNTZlYjcy
YzFiZTcyYmI3MTU0YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUlRD
RGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBkYXRhTGVuZ3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBC
aW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU2hhcmVk
QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7IH0pKTsK
KyAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3RvciB7IGRhdGEsIGRhdGFMZW5n
dGggfSwgZW1wdHlTdHJpbmcoKSksIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBC
aW5hcnlUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCkp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRG
aWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRG
aWxlUmVhZGVyLmNwcAppbmRleCA1ZDA2NjQzN2E4YjRjYTQ2MzgzMTcyMTA0YjRjODEzZmFlZjJl
YmU5Li4xMWM2YTliODM2MDE4MmQyYjc5NDkwYmYwNDVjZWQ4ZWZhMDk2YmQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpy
ZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIAogdm9pZCBXZWJDb3JlUGFzdGVi
b2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
U3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBmaWxlcy5h
cHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0Lmdl
dCgpLCBidWZmZXIuZ2V0KCksIHR5cGUpLCBmaWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChG
aWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1
ZmZlci0+dGFrZURhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5k
ZXggNzk0MjFkOTJlYzVlNWQzNWUyNjc5YWM1NjhjM2QwMTJmMDAzYTNmMC4uYTE2YjY1ODY2Y2E3
OTc4MjY5MTNhMzcxNTAyYWFmNDlhMjllOTNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1NSw3ICsyNTUs
NyBAQCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VB
dHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdp
c3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZp
ZXIoKSwgY29udGVudFR5cGUsIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZNb3ZlKGJ1
ZmZlcikpOwogICAgICAgICBpZiAoY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VS
ZXByZXNlbnRhdGlvbihjb250ZW50VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBI
VE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVm
ZmVyLmdldCgpLCBjb250ZW50VHlwZSkpKTsKKyAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1
dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVh
dGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+dGFr
ZURhdGEoKSwgY29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVu
dEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgICAgICBpZiAocHJlZmVycmVk
U2l6ZS53aWR0aCkKICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5
bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKCpw
cmVmZXJyZWRTaXplLndpZHRoKSk7CkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIFJlZjxEb2N1
bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJh
bWUsIERvY3UKICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFj
aG1lbnQpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNl
dEZpbGUoRmlsZTo6Y3JlYXRlKCZkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVm
ZmVyLmdldCgpLCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRN
TEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAg
ICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVh
dGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdElt
YWdlQXR0YWNobWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlB
dHRyaWJ1dGVzOjpZZXMpOwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShh
dHRhY2htZW50KSk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM2MSw3ICszNjEs
NyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUm
IGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRT
aWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdl
RWxlbWVudD4ob3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVG
b3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAg
ICAgICAgICAgYXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5h
bEVsZW1lbnQuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCksIGlu
Zm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkpKTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFtZS5k
b2N1bWVudCgpLCBpbmZvLmRhdGEtPmRhdGFBc1ZlY3RvcigpLCBpbmZvLmNvbnRlbnRUeXBlKSkp
OwogICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dGFjaG1lbnRFbGVtZW50KGF0dGFjaG1lbnQu
Y29weVJlZigpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgYXR0YWNo
bWVudC0+dXBkYXRlQXR0cmlidXRlcyhpbmZvLmRhdGEtPnNpemUoKSwgaW5mby5jb250ZW50VHlw
ZSwgaW5mby5maWxlTmFtZSk7CkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIHZvaWQgcmVwbGFj
ZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRGcmFnbWVu
dCYgZnIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRpZmllcigp
LCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpLCBXVEZNb3ZlKGluZm8uZmlsZU5hbWUpLCBXVEZN
b3ZlKGluZm8uZGF0YSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXR0YWNobWVu
dC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGZy
YW1lLmRvY3VtZW50KCksIFdURk1vdmUoaW5mby5kYXRhKSwgV1RGTW92ZShpbmZvLmNvbnRlbnRU
eXBlKSksIFdURk1vdmUoaW5mby5maWxlTmFtZSkpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVw
ZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICAgICAgYXR0YWNobWVudC0+c2V0
RmlsZShGaWxlOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGZyYW1lLmRv
Y3VtZW50KCksIGluZm8uZGF0YS0+ZGF0YUFzVmVjdG9yKCksIFdURk1vdmUoaW5mby5jb250ZW50
VHlwZSkpLCBXVEZNb3ZlKGluZm8uZmlsZU5hbWUpKSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpV
cGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKICAgICAgICAgICAgIHBhcmVudC0+cmVwbGFj
ZUNoaWxkKFdURk1vdmUoYXR0YWNobWVudCksIFdURk1vdmUob3JpZ2luYWxFbGVtZW50KSk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC00MTAsOCArNDEwLDggQEAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKEZyYW1lJiBmcmFtZSwgTlNBdHRyaWJ1
dGUKICAgICB9CiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+IGJsb2JVUkxN
YXA7Ci0gICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVzb3VyY2UgOiBm
cmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKLSAgICAgICAgYXV0byBibG9iID0gQmxv
Yjo6Y3JlYXRlKCZkb2N1bWVudCwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3VyY2UtPm1p
bWVUeXBlKCkpOworICAgIGZvciAoYXV0byYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFuZFJlc291
cmNlcy5yZXNvdXJjZXMpIHsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkb2N1
bWVudCwgc3VicmVzb3VyY2UtPmRhdGEoKS5kYXRhQXNWZWN0b3IoKSwgc3VicmVzb3VyY2UtPm1p
bWVUeXBlKCkpOwogICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0
VVJMKGRvY3VtZW50LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2Ut
PnVybCgpLnN0cmluZygpLCBibG9iVVJMKTsKICAgICB9CkBAIC00NjAsNyArNDYwLDcgQEAgc3Rh
dGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1l
bnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgYXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJy
ZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJM
KHN1YnJlc291cmNlVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJs
b2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YnJlc291cmNlLT5kYXRh
KCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6
Y3JlYXRlKCZkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJyZXNvdXJjZS0+ZGF0YSgpLmRhdGFBc1Zl
Y3RvcigpLCBzdWJyZXNvdXJjZS0+bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9iVVJM
ID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwgYmxvYik7CiAg
ICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YnJlc291cmNlVVJMLnN0cmluZygpLCBibG9iVVJMKTsK
ICAgICB9CkBAIC00ODQsMTAgKzQ4NCw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVNYXJrdXBX
aXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3VtCiAgICAg
ICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKGZyYW1l
LCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWlya3M6OkRp
c2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCiAgICAgICAgIENTdHJpbmcgdXRmOCA9
IHN1YmZyYW1lTWFya3VwLnV0ZjgoKTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJsb2JCdWZm
ZXI7Ci0gICAgICAgIGJsb2JCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHV0ZjgubGVuZ3RoKCkpOwot
ICAgICAgICBibG9iQnVmZmVyLmFwcGVuZCh1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVu
Z3RoKCkpOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9j
dW1lbnQsIFdURk1vdmUoYmxvYkJ1ZmZlciksIHR5cGUpOworICAgICAgICBhdXRvIGJsb2IgPSBC
bG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIFZlY3RvciB7IHV0ZjguZGF0YUFzVUlu
dDhQdHIoKSwgdXRmOC5sZW5ndGgoKSB9LCB0eXBlKTsKIAogICAgICAgICBTdHJpbmcgc3ViZnJh
bWVCbG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwg
YmxvYik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YmZyYW1lVVJMLnN0cmluZygpLCBzdWJm
cmFtZUJsb2JVUkwpOwpAQCAtNjg3LDcgKzY4NCw3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6
cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5cGUs
CiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygpKQogICAg
ICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChmcmFtZSwg
ZG9jdW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6
ZSkpOwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFn
ZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6
OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci5nZXQoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVzZW50
YXRpb25TaXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VB
bmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpj
cmVhdGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRhKCksIHR5cGUpKSwgcHJlZmVycmVkUHJl
c2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQpAQCAtNzYzLDcgKzc2
MCw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZyYW1lJiBm
cmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvCiAgICAgICAgIGZpbGVOYW1lID0gbmFtZTsK
IAogICAgIGlmICghc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7Ci0g
ICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBC
bG9iOjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2htZW50VHlw
ZSkpLCBmaWxlTmFtZSkpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0
ZShkb2N1bWVudC5wdHIoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBidWZmZXIuZGF0
YUFzVmVjdG9yKCksIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgZmlsZU5hbWUpKTsKICAgICAg
ICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiAgICAgfQogCkBAIC03NzEsNyArNzY4LDcgQEAgc3RhdGlj
IFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRC
dWZmZXImIGJ1ZmZlciwgY28KIAogICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxp
bmVJbWFnZVJlcHJlc2VudGF0aW9uKGF0dGFjaG1lbnRUeXBlKSkgewogICAgICAgICBhdXRvIGlt
YWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAgaW1hZ2Ut
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBE
T01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0
cigpLCBCbG9iOjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2ht
ZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVOYW1lKSkpKTsKKyAgICAgICAgaW1hZ2UtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNy
ZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9i
OjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlci5kYXRhQXNWZWN0b3IoKSwgV1RGTW92ZShh
dHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVOYW1lKSkpKTsKICAgICAgICAgaW1hZ2UtPnNl
dEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICBpZiAocHJl
ZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIo
KnByZWZlcnJlZFNpemUud2lkdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9n
dGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXggMjc0NGNkNmZlM2M2MTkwYmI4Y2E0ZTE0
Njg2NDBiNDczMmIwZTQzMC4uYWFkNTFkZWFlOGVlMDRkYzM4NzExMGE5ZTExZDJjZWViNWU2MDE2
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRl
ckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRl
ckd0ay5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1h
Z2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwKIHsKICAg
ICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAqZnJhbWUu
ZG9jdW1lbnQoKTsKLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJM
KGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRl
KCZkb2N1bWVudCwgYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUpKTsKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3Vt
ZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1
bWVudCwgYnVmZmVyLT50YWtlRGF0YSgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlvblNp
emUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCmlu
ZGV4IGUxZWY0YWI5NDM2NjM4YTM0MzYzNzUyNDY5NjYzMTQ1ZDg3NDdhYjguLjNmNDA5YTQ3ZWQz
YjVmZDZmZDkxZTliZTdmOGYwYjYyMzZkYzdiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmNwcApA
QCAtMTA4LDE3ICsxMDgsNiBAQCBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYQogICAgIFRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBidWlsZGVyLmZp
bmFsaXplKCksIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgY29u
dGVudFR5cGUpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1fdHlwZShj
b250ZW50VHlwZSkKLSAgICAsIG1fc2l6ZShidWZmZXIuc2l6ZSgpKQotewotICAgIFZlY3RvcjxC
bG9iUGFydD4gYmxvYlBhcnRzOwotICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVy
LmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKLSAgICBtX2ludGVybmFsVVJMID0gQmxvYlVSTDo6
Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3Rl
ckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7
Ci19Ci0KIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICA6IEFjdGl2
ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBp
L0Jsb2IuaAppbmRleCBlNDI1MWIyZTZjYTRlYWQwNjBjNWJmNjM1ZWQ1NGQxN2M5MzQ3M2Q0Li5m
ZDE3OWUwNjIxMTZlMjQ0M2RlMTI4NDM1ZGVkYWU4NzMwNjVlYTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Js
b2IuaApAQCAtNzUsMTMgKzc1LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYmxvYjsKICAg
ICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBjb250
ZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gYmxvYiA9IGFkb3B0UmVmKCpuZXcgQmxvYihj
b250ZXh0LCBidWZmZXIsIGNvbnRlbnRUeXBlKSk7Ci0gICAgICAgIGJsb2ItPnN1c3BlbmRJZk5l
ZWRlZCgpOwotICAgICAgICByZXR1cm4gYmxvYjsKLSAgICB9Ci0KICAgICBzdGF0aWMgUmVmPEJs
b2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWZWN0b3I8dWludDhf
dD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIHsKICAgICAgICAgYXV0
byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIGNvbnRl
bnRUeXBlKSk7CkBAIC0xMzEsNyArMTI0LDYgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIFdF
QkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAg
IEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYs
IGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYpOwotICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAg
IEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFZlY3Rvcjx1aW50OF90PiYmLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogICAgIGVudW0gUmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JD
b25zdHJ1Y3RvciB7IHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IDdmY2IzZWUyNzIy
M2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUuLjRiMzlhZjdlMDQwYjZhMmJkZjE2ZGU3NmI2
YTIwMWJmMzFhNTVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29y
a1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1
ZXVlLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OnByb2Nlc3NN
ZXNzYWdlcygpCiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNdKGNvbnN0
IENTdHJpbmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7CiAgICAg
ICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAgICAgbV93
cml0ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAgICAgZGF0
YS0+Zm9yRWFjaFNlZ21lbnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhpcywgJnNo
b3VsZFN0b3BQcm9jZXNzaW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikgewogICAg
ICAgICAgICAgYXV0byBlcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwogICAgICAgICAg
ICAgaWYgKGxvYWRlci0+aXNMb2FkaW5nKCkgfHwgKGVycm9yQ29kZSAmJiBlcnJvckNvZGUudmFs
dWUoKSA9PSBBYm9ydEVycm9yKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNo
bWVudEVsZW1lbnQuY3BwCmluZGV4IDQ5NmI0MTE0ZTc5YjUwOTQ2Y2VjYTA2NTZkMGFkOGNmMjA2
OTM2ODUuLmIwZTlmNTIyMmNiNmUwNThlYzVmOTAwZTdhZjgwMmQwMjkwY2MwOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTIyNiwxMCAr
MjI2LDEwIEBAIHN0YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0
YWNobWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlwZVJlZ2lz
dHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBlUmVnaXN0
cnk6OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVu
dDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBl
LCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0RWxlbWVudCA9
IHNoYWRvd0hvc3QoKTsKLSAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RFbGVtZW50
KSB8fCAhZGF0YS0+c2l6ZSgpKQorICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVs
ZW1lbnQpIHx8ICFidWZmZXItPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5n
IG1pbWVUeXBlID0gY29udGVudFR5cGU7CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBIVE1MQXR0
YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3QgU3RyaW5n
JiBjb250ZW50VHkKICAgICBpZiAoIW1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUltYWdlQXR0
YWNobWVudChtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVtZW50LT5z
ZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9N
VVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgp
LCBXVEZNb3ZlKGRhdGEpLCBtaW1lVHlwZSkpKTsKKyAgICBob3N0RWxlbWVudC0+c2V0QXR0cmli
dXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3Jl
YXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQoKSwgYnVmZmVy
LT50YWtlRGF0YSgpLCBtaW1lVHlwZSkpKTsKIH0KIAogdm9pZCBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OnVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdv
cmtBZ2VudC5jcHAKaW5kZXggZDRmNzg3M2U4NWY5MTMxNjAxMmI5NDQwODRmOTIwOTc2MDFlMDY2
ZC4uOGFjMGFhM2VmZDk0ZmUyYzY3MzM1ZjE2ZDAyNjY3NjE3NWViMzhiMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcApAQCAtNTQ3LDcgKzU0Nyw5IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVuCiAgICAg
ICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElk
LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+
YmFzZTY0RW5jb2RlZCgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VE
YXRhLT5oYXNCdWZmZXJlZERhdGEoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNC
dWZmZXIgPSBwcmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAgICAgICAg
bV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHByZXZpb3Vz
QnVmZmVyLT5kYXRhKCksIHByZXZpb3VzQnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgICAg
IHByZXZpb3VzQnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXli
ZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIHNpemUpOworICAgICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXNvdXJjZVJl
c3BvbnNlLT5zZXRTdHJpbmcoUHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjptaW1lVHlwZUtl
eSwgcHJldmlvdXNSZXNvdXJjZURhdGEtPm1pbWVUeXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggZGY2N2MxNTQ0ODQ0ODI3NzM5YWQzZTI3YzBjMzY5
NzIzYWU3OTM5MS4uM2ZhZTE2NjBjNTg1MDM5MzQwZmFhZWMzMzgxODA0MzI3MjE2NmI2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMTAyLDggKzExMDIs
MTEgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9s
aWN5QWN0aW9uIHBvbGljeSkKIAogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0
ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1
dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwotICAgICAgICBpZiAoY29u
dGVudCAmJiBjb250ZW50LT5zaXplKCkpCi0gICAgICAgICAgICBkYXRhUmVjZWl2ZWQoY29udGVu
dC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBpZiAoY29udGVudCAmJiBjb250
ZW50LT5zaXplKCkpIHsKKyAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50KFsmXShj
b25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgICAgICAgIGRhdGFS
ZWNlaXZlZChkYXRhLCBzaXplKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAgICAgICAg
IGlmIChpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkKICAgICAgICAgICAgIGZpbmlzaGVkTG9hZGlu
ZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwCmluZGV4IDc5NzlkOTljODkyNGFlNmY3ZmNiNjFhNWI5NzM5ODFjYjMwMzQ5NjEu
LjJjYmM3NTVhZjBjMTBhMzQwNTVlZGRjNWVlYTgzZTcyMjNlOTFlODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00ODEs
MTQgKzQ4MSwyMCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAKICAgICAgICAgaWYgKG9wdGlvbnMoKS5m
aWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGUpIHsKICAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9u
c2UpOwotICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCi0gICAg
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291cmNl
QnVmZmVyKCktPmRhdGEoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgpKTsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZl
cigpKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9jbGll
bnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIHNpemUpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJlc3BvbnNl
LnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0KTsKIAogICAgICAgICAg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBSZXNvdXJjZVJlc3Bv
bnNlOjpmaWx0ZXIocmVzcG9uc2UsIG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlv
bnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9ybUV4cG9z
ZUFsbEhlYWRlcnNDaGVjazo6Tm8gOiBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3NlQWxs
SGVhZGVyc0NoZWNrOjpZZXMpKTsKLSAgICAgICAgICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJj
ZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jl
c291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhKCksIG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJj
ZS0+cmVzb3VyY2VCdWZmZXIoKSkgeworICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNl
Z21lbnQoWyZdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgICAgICAg
ICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBzaXplKTsKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtNjQ5LDgg
KzY1NSwxMSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIH0KICAgICBkaWRSZWNlaXZl
UmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogCi0gICAgaWYgKGRhdGEpCi0gICAgICAg
IGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsK
KyAgICBpZiAoZGF0YSkgeworICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChbJl0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAgIGRpZFJlY2VpdmVEYXRh
KGlkZW50aWZpZXIsIGRhdGEsIHNpemUpOworICAgICAgICB9KTsKKyAgICB9CiAKICAgICBjb25z
dCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRyaWNzT3JO
dWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpmcm9tU3lu
Y2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRUaW1pbmcs
IHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNwb25zZSwgc2Vj
dXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCBhZGFlNjQwMGZjNGIzMzhiYzdiYzViODY5YTI0
NWIyZTkwYWI0NGM1Li43OTJhZjJjMGFkNTY0ODBhZjI4NjVmMDE0YjNlOWIzMjRiMGMyNjg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAKQEAgLTE1NSw4ICsxNTUsMTQgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBpbnQKIHsK
ICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEo
dGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXItPnNp
emUoKSA6IGxlbmd0aCk7CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIGlmIChidWZmZXIp
IHsKKyAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGNvbnN0IHVpbnQ4X3Qq
IHNlZ21lbnREYXRhLCBzaXplX3Qgc2VnbWVudFNpemUpIHsKKyAgICAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgc2VnbWVudERhdGEsIHNlZ21lbnRTaXplKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fY2xpZW50LT5kaWRS
ZWNlaXZlRGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIH0KIAogICAgIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgV1RGTW92ZShidWZmZXIp
LCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKaW5kZXgg
Y2U2NDk1ODFlOWI0YjRlMTYyNjg3N2IxOTFmYmYyYWQ5NjQyMWU3ZC4uMmZhYzI1MzRiMTEzNDgy
NmEyNjlhNTVhZGU4OTk4ZmFkMTdmZTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKQEAgLTE1NCw0ICsxNTQsMTUg
QEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JCeXRl
cyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0
b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdl
c3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciogYnVmZmVy
KQoreworICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNyZWF0ZSh0
b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKKyAgICBpZiAoYnVmZmVyKSB7Cisg
ICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNp
emVfdCBzaXplKSB7CisgICAgICAgICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVzKGRhdGEsIHNp
emUpOworICAgICAgICB9KTsKKyAgICB9CisgICAgcmV0dXJuIHsgYWxnb3JpdGhtLCBjcnlwdG9E
aWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmluZGV4IGZjYzBiMDQ0YWFhMjRl
NWVhN2ExMWNlYWMxZmY3ZWJhNTM0OTAwYmMuLmFlYTNkYzU3Yzg3ODMxMzAxM2E1YjE2YzkzOWI3
NzRlZDQ4NDMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAKIHN0cnVj
dCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3MgQWxnb3JpdGht
IHsKQEAgLTc0LDYgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VDcnlwdG9n
cmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAogc3RkOjpvcHRp
b25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dCYpOwogCitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
clNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSwgY29u
c3QgU2hhcmVkQnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3Jh
cGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGht
LCBjb25zdCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwCmluZGV4IDRkMGM2OTBiMjc2MmFh
OTBlNzFlYTM4N2YzYTNkODBmNjQxMzhiZWUuLmM1MjA4MWI0MjE2N2JhODBjMjc1NzA4Y2JkOTk2
ZDg3YTg1NDQyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUludGVncml0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50
ZWdyaXR5LmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgbWF0Y2hJbnRlZ3JpdHlNZXRhZGF0
YShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFN0cmluZyYgaW50ZWdyCiAg
ICAgICAgIGF1dG8gZXhwZWN0ZWRWYWx1ZSA9IGRlY29kZUVuY29kZWRSZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QoaXRlbSk7CiAKICAgICAgICAgLy8gMy4gTGV0IGFjdHVhbFZhbHVlIGJlIHRo
ZSByZXN1bHQgb2YgYXBwbHlpbmcgYWxnb3JpdGhtIHRvIHJlc3BvbnNlLgotICAgICAgICBhdXRv
IGFjdHVhbFZhbHVlID0gY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKGFsZ29yaXRobSwgc2hh
cmVkQnVmZmVyID8gc2hhcmVkQnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBzaGFyZWRCdWZmZXIg
PyBzaGFyZWRCdWZmZXItPnNpemUoKSA6IDApOworICAgICAgICBhdXRvIGFjdHVhbFZhbHVlID0g
Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihhbGdvcml0aG0sIHNoYXJlZEJ1ZmZl
cik7CiAKICAgICAgICAgLy8gNC4gSWYgYWN0dWFsVmFsdWUgaXMgYSBjYXNlLXNlbnNpdGl2ZSBt
YXRjaCBmb3IgZXhwZWN0ZWRWYWx1ZSwgcmV0dXJuIHRydWUuCiAgICAgICAgIGlmIChleHBlY3Rl
ZFZhbHVlICYmIGFjdHVhbFZhbHVlLnZhbHVlID09IGV4cGVjdGVkVmFsdWUtPnZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAppbmRleCBmMjY0ZjFkZDcxMjNkNjkyYzY1N2YxZWNlMTQ5OTRjNDE5NjMzNDVh
Li43YzNhY2ViYTcyZDUyYTQ2ODZiNWIzYjM2Yzc3ZDVmYWVmMzI3YjRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcApAQCAtNTk1LDkgKzU5NSw4IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRG
aW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2Uq
IG5ld2VzdE1hbmlmZXN0ID0gbV9uZXdlc3RDYWNoZS0+bWFuaWZlc3RSZXNvdXJjZSgpOwogICAg
ICAgICBBU1NFUlQobmV3ZXN0TWFuaWZlc3QpOwogICAgIAotICAgICAgICBpZiAoIW1fbWFuaWZl
c3RSZXNvdXJjZSB8fCAvLyBUaGUgcmVzb3VyY2Ugd2lsbCBiZSBudWxsIGlmIEhUVFAgcmVzcG9u
c2Ugd2FzIDMwNCBOb3QgTW9kaWZpZWQuCi0gICAgICAgICAgICAobmV3ZXN0TWFuaWZlc3QtPmRh
dGEoKS5zaXplKCkgPT0gbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpICYmICFtZW1j
bXAobmV3ZXN0TWFuaWZlc3QtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0
YSgpLmRhdGEoKSwgbmV3ZXN0TWFuaWZlc3QtPmRhdGEoKS5zaXplKCkpKSkgewotCisgICAgICAg
IC8vIFRoZSByZXNvdXJjZSB3aWxsIGJlIG51bGwgaWYgSFRUUCByZXNwb25zZSB3YXMgMzA0IE5v
dCBNb2RpZmllZC4KKyAgICAgICAgaWYgKCFtX21hbmlmZXN0UmVzb3VyY2UgfHwgbmV3ZXN0TWFu
aWZlc3QtPmRhdGEoKSA9PSBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKSkgewogICAgICAgICAg
ICAgbV9jb21wbGV0aW9uVHlwZSA9IE5vVXBkYXRlOwogICAgICAgICAgICAgbV9tYW5pZmVzdFJl
c291cmNlID0gbnVsbHB0cjsKICAgICAgICAgICAgIGRlbGl2ZXJEZWxheWVkTWFpblJlc291cmNl
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggYjdjMzA5MTdjZDdkYTExZmZmMjk5ZGJiNjc1
OWY1YjdlOGE2ZDE3YS4uN2NjNzkzNzVhYzhjM2QxZmJhZDQ5NzA4M2JjZGMwZjc0YTA0NzczYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjkyLDcgKzEyOTIsMTAgQEAgYm9vbCBBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3RvcnkoU2hhcmVk
QnVmZmVyJiBkYXQKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IAotICAgIGludDY0X3Qgd3JpdHRlbkJ5dGVzID0gRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoaGFu
ZGxlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGludDY0X3Qgd3JpdHRlbkJ5dGVz
ID0gMDsKKyAgICBkYXRhLmZvckVhY2hTZWdtZW50KFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBz
aXplX3Qgc2l6ZSkgeworICAgICAgICB3cml0dGVuQnl0ZXMgKz0gRmlsZVN5c3RlbTo6d3JpdGVU
b0ZpbGUoaGFuZGxlLCBkYXRhLCBzaXplKTsKKyAgICB9KTsKICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRlbkJ5dGVzICE9IHN0YXRpY19jYXN0
PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggMjE5MmYxNTIwYWEzOWIxN2JlOWJmMDJk
ZTg0ODA5MjNkZDg2MmU3MC4uNmYwODYwMGYyYjA5MGVhNTFkMTE0Y2EzZTlkYWUyZTc3ZDAxODFi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291
cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCkBAIC0xNjcsOCArMTY3LDExIEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFk
ZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgYykKICAgICAgICAgYXV0byByZXNwb25zZVBy
b2Nlc3NlZEhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIGNsaWVudF0gewogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKG1fZGF0YSkKLSAgICAgICAg
ICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgbV9kYXRhLT5kYXRhKCksIG1fZGF0
YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChtX2RhdGEpIHsKKyAgICAgICAgICAgICAgICBt
X2RhdGEtPmZvckVhY2hTZWdtZW50KFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeworICAgICAgICAgICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgZGF0
YSwgc2l6ZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KCpjbGllbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAppbmRleCA5MTk1OWQ2Mjk5Mzg5MTQ5MzMz
MmE4M2IyZTU4YzRiNzM3NDgxNzQzLi4yZjZlMzQ4MThhOWJhOGEwMGU4Y2FlNzBiNWJkMDY2ODQ0
NWEyNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcApAQCAt
MTE0LDkgKzExNCw4IEBAIHZvaWQgSWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVz
b3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKHN0YXR1cyAm
JiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+IDI5OSkpCiAgICAgICAgIGRhdGEgPSBudWxscHRy
OwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgcGRmTWFnaWNOdW1iZXJbXSA9ICIlUERGIjsKLSAg
ICBzdGF0aWMgdW5zaWduZWQgcGRmTWFnaWNOdW1iZXJMZW5ndGggPSBzaXplb2YocGRmTWFnaWNO
dW1iZXIpIC0gMTsKLSAgICBpZiAoZGF0YSAmJiBkYXRhLT5zaXplKCkgPj0gcGRmTWFnaWNOdW1i
ZXJMZW5ndGggJiYgIW1lbWNtcChkYXRhLT5kYXRhKCksIHBkZk1hZ2ljTnVtYmVyLCBwZGZNYWdp
Y051bWJlckxlbmd0aCkpIHsKKyAgICBjb25zdGV4cHIgdWludDhfdCBwZGZNYWdpY051bWJlcltd
ID0geyAnJScsICdQJywgJ0QnLCAnRicgfTsKKyAgICBpZiAoZGF0YSAmJiBkYXRhLT5zdGFydHNX
aXRoKHBkZk1hZ2ljTnVtYmVyLCBzdGQ6OnNpemUocGRmTWFnaWNOdW1iZXIpKSkgewogICAgICAg
ICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0gSWdub3Jp
bmcgaWNvbiBhdCAlcyBiZWNhdXNlIGl0IGFwcGVhcnMgdG8gYmUgYSBQREYiLCBtX3Jlc291cmNl
LT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGRhdGEgPSBudWxscHRy
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmluZGV4IDAw
NDBhOGE2MTE4N2ZiMGU0OWU4NmYzMzcwYmI4ZjgyMzc3NWFmYzUuLmFmMGI0YjViNGQ0OWZhOThi
NWZjYjc5YzI0MTBhMzlmMjBjNzliYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVk
QnVmZmVyLmNwcApAQCAtODYsNiArODYsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKIH0KIAorc3RhdGljIFZlY3Rv
cjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6RGF0YVNl
Z21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBWZWN0b3I8dWludDhf
dD4gY29tYmluZWREYXRhOworICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KHNpemUpOworICAgIGZvciAoYXV0byYgc2VnbWVudCA6IHNlZ21lbnRzKQorICAgICAgICBjb21i
aW5lZERhdGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQt
PnNpemUoKSk7CisgICAgQVNTRVJUKGNvbWJpbmVkRGF0YS5zaXplKCkgPT0gc2l6ZSk7CisgICAg
cmV0dXJuIGNvbWJpbmVkRGF0YTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRv
T25lU2VnbWVudCgpIGNvbnN0CiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTk2LDExICsxMDYs
NyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29uc3QKICAg
ICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmVj
dG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKLSAgICBjb21iaW5lZERhdGEucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShtX3NpemUpOwotICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6IG1fc2Vn
bWVudHMpCi0gICAgICAgIGNvbWJpbmVkRGF0YS5hcHBlbmQoc2VnbWVudC5zZWdtZW50LT5kYXRh
KCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICBBU1NFUlQoY29tYmluZWREYXRhLnNp
emUoKSA9PSBtX3NpemUpOworICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRz
RGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsKICAgICBt
X3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNvbWJpbmVk
RGF0YSkpfSk7CiAgICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwpAQCAtMTA5LDEz
ICsxMTUsMjggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVudCgpIGNv
bnN0CiAKIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgpOwogICAg
IEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gbV9zZWdtZW50c1sw
XS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKK1ZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZmZXI6OnRh
a2VEYXRhKCkKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOworICAgIGlmIChoYXNP
bmVTZWdtZW50KCkgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhfdD4+KG1f
c2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKKyAgICAgICAgY29tYmluZWRE
YXRhID0gc3RkOjpleGNoYW5nZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KG1fc2VnbWVudHNb
MF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOworICAgIGVs
c2UKKyAgICAgICAgY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3NlZ21lbnRz
LCBtX3NpemUpOworCisgICAgY2xlYXIoKTsKKyAgICByZXR1cm4gY29tYmluZWREYXRhOworfQor
CiBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBw
b3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1fc2l6ZSk7
CkBAIC0xMzAsMTAgKzE1MSwxMCBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6
OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIFN0cmluZyBTaGFyZWRCdWZmZXI6
OnRvSGV4U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7
Ci0gICAgZm9yICh1bnNpZ25lZCBieXRlT2Zmc2V0ID0gMDsgYnl0ZU9mZnNldCA8IHNpemUoKTsg
Ynl0ZU9mZnNldCsrKSB7Ci0gICAgICAgIGNvbnN0IHVpbnQ4X3QgYnl0ZSA9IGRhdGEoKVtieXRl
T2Zmc2V0XTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGFkKCcwJywgMiwgaGV4KGJ5
dGUpKSk7Ci0gICAgfQorICAgIGZvckVhY2hTZWdtZW50KFsmXShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGFkKCcwJywgMiwgaGV4KGRh
dGFbaV0pKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsK
IH0KIApAQCAtMjA1LDYgKzIyNiw0OCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRCdWZmZXI6
OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBjbG9uZTsKIH0KIAordm9pZCBTaGFyZWRCdWZmZXI6
OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCosIHNpemVf
dCk+JiBhcHBseSkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRz
KQorICAgICAgICBhcHBseShzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50
LT5zaXplKCkpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25zdCB1aW50
OF90KiBwcmVmaXgsIHNpemVfdCBwcmVmaXhTaXplKSBjb25zdAoreworICAgIGlmICghcHJlZml4
U2l6ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoc2l6ZSgpIDwgcHJlZml4U2l6
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90IHJlbWFpbmluZyA9IHByZWZp
eFNpemU7CisgICAgZm9yIChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykgeworICAgICAgICBz
aXplX3QgYW1vdW50VG9Db21wYXJlVGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIHNlZ21l
bnQuc2VnbWVudC0+c2l6ZSgpKTsKKyAgICAgICAgaWYgKG1lbWNtcChwcmVmaXgsIHNlZ21lbnQu
c2VnbWVudC0+ZGF0YSgpLCBhbW91bnRUb0NvbXBhcmVUaGlzVGltZSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIHJlbWFpbmluZyAtPSBhbW91bnRUb0NvbXBhcmVUaGlzVGlt
ZTsKKyAgICAgICAgaWYgKCFyZW1haW5pbmcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcHJlZml4ICs9IGFtb3VudFRvQ29tcGFyZVRoaXNUaW1lOworICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRp
b24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBzaXplKCkp
OworICAgIGF1dG8gZGVzdGluYXRpb25QdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzdGlu
YXRpb24pOworICAgIGF1dG8gcmVtYWluaW5nID0gc3RkOjptaW4obGVuZ3RoLCBzaXplKCkpOwor
ICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpIHsKKyAgICAgICAgc2l6ZV90IGFt
b3VudFRvQ29weVRoaXNUaW1lID0gc3RkOjptaW4ocmVtYWluaW5nLCBzZWdtZW50LnNlZ21lbnQt
PnNpemUoKSk7CisgICAgICAgIG1lbWNweShkZXN0aW5hdGlvblB0ciwgc2VnbWVudC5zZWdtZW50
LT5kYXRhKCksIGFtb3VudFRvQ29weVRoaXNUaW1lKTsKKyAgICAgICAgcmVtYWluaW5nIC09IGFt
b3VudFRvQ29weVRoaXNUaW1lOworICAgICAgICBpZiAoIXJlbWFpbmluZykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgZGVzdGluYXRpb25QdHIgKz0gYW1vdW50VG9Db3B5VGhpc1RpbWU7
CisgICAgfQorfQorCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7
CiAgICAgYXV0byBpdCA9IGJlZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZl
ci5oCmluZGV4IDdkYzMxYzczOTJjY2VlZWViYjI2M2IyNGE5YTMyZDczMWRkMGE4NzEuLmExYzAz
ZjFiZGQ3MzJjNTBjNmU1MmIzMjNhMzA5YjhjNGZlZTM3NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xMDAsNiArMTAwLDEwIEBAIHB1YmxpYzoKICAgICAvLyBG
SVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVwbGFjZSB0
aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgogICAgIGNvbnN0IHVpbnQ4X3QqIGRhdGEo
KSBjb25zdDsKICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhQXNWZWN0b3IoKSB7IHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07IH0KKworICAg
IC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0dXJucyB0
aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgorICAgIFZlY3Rvcjx1
aW50OF90PiB0YWtlRGF0YSgpOwogCiAgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZlciBhbmQg
Y29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAogICAgIC8vIEFycmF5
QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxhdCBidWZm
ZXIuCkBAIC0xMTcsNiArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKTsKIAogICAg
IFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICB2b2lkIGNvcHlUbyh2b2lkKiBk
ZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKICAgICAvLyBEYXRhIHdyYXBwZWQg
YnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2FuIGJlIHJl
ZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KICAgICAvLyBUbyBtb2RpZnkgb3IgY29tYmluZSB0
aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCkBAIC0xODAsNiArMTg1LDkgQEAg
cHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIH07CiAKKyAg
ICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCos
IHNpemVfdCk+JikgY29uc3Q7CisgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IHVpbnQ4X3QqIHBy
ZWZpeCwgc2l6ZV90IHByZWZpeFNpemUpIGNvbnN0OworCiAgICAgc3RydWN0IERhdGFTZWdtZW50
VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKICAgICAgICAgUmVm
PERhdGFTZWdtZW50PiBzZWdtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hh
cmVkQnVmZmVyQ0YuY3BwCmluZGV4IDg5NWViZTA1MWYxNTJhN2E4M2E0NWM3YjkwZGRjMGMyNzBh
NDllZTEuLjJkNWIzMzVmYjRjNGJkZjhmN2Q1MTc4MmQwZjM1ZmY5ZDFiNTYxOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQ3LDcgKzQ3
LDExIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZEYXRhKCkg
Y29uc3QKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IFdURjo6Z2V0X2lmPFJldGFpblB0cjxDRkRh
dGFSZWY+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCiAgICAgICAg
ICAgICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIHJldHVybiBhZG9wdENGKENGRGF0YUNyZWF0
ZShudWxscHRyLCBkYXRhKCksIHNpemUoKSkpOworICAgIGF1dG8gY2ZEYXRhID0gYWRvcHRDRihD
RkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOworICAgIGZvckVhY2hTZWdtZW50
KFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICBDRkRhdGFB
cHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCksIGRhdGEsIHNpemUpOworICAgIH0pOworICAgIHJldHVy
biBjZkRhdGE7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcAppbmRleCBlZTZhNWQyZWVkNmEzZjk3ZTc0NjhjYWI5NmU5ZWUzNGQ2YjgzMDZl
Li4xMzU0YmRiZWRkNjExNmMyMDlmYjU0YTYzZTE5NDIyNTNjYjNhNThhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNzc0LDcgKzc3NCw3IEBAIHZv
aWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9yYXJ5SXRl
bSkKICAgICBpZiAocmVxdWlyZWRTaXplRm9ySXRlbSkKICAgICAgICAgbV93cml0aW5nQ2xpZW50
LT5lbmNvZGVJdGVtSW5saW5lKHRlbXBvcmFyeUl0ZW0sIGxvY2F0aW9uKTsKICAgICBlbHNlCi0g
ICAgICAgIG1lbWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+ZGF0YSgpLCBkYXRhTGVuZ3Ro
KTsKKyAgICAgICAgb3V0T2ZMaW5lSXRlbS0+Y29weVRvKGxvY2F0aW9uLCBkYXRhTGVuZ3RoKTsK
IAogICAgIGRpZEFwcGVuZERhdGEoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0ZW0sIGJ1
ZmZlckNoYW5nZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
aW5kZXggMDA5NGY0N2Q0NjQwMWQ1OWFjYjg1Zjc2NTQzZGE2MmQ3MzhjMGZlNi4uZmY0M2FlMTUx
ZTFiZjU5MTkyOTEyZGUzN2RjOTU2MzFkYzY3NzczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NjYsNyArNDY2LDkgQEAgRW5jb2RlZERhdGFTdGF0dXMg
U1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAgICBBU1NF
UlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRlciBzaG91
bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9zdmcreG1s
Iik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5iZWdp
bihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgbG9hZGVyLmFj
dGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRhKCksIGRh
dGEoKS0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudChbJl0oY29uc3Qg
dWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAgIGxvYWRlci5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRhdGEsIHNpemUpOworICAgICAgICB9
KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmVuZCgp
OwogCiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRC
dWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCmluZGV4
IDUyNDlkNjdhZDJjNzYyY2JmODA5MWQ5Njc4YTVmNGZkM2I2ZmQxNTUuLmI5NDg1ZTI5ODU2NzAx
MDcwZGZiYTFlODA1OTg0M2YzZTI0OWQ5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAKQEAgLTUzLDggKzUzLDkgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6dG9TdHJp
bmcoKSBjb25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVy
IGJ1aWxkZXI7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9idWZmZXItPmJlZ2luKCk7IGl0ICE9IG1f
YnVmZmVyLT5lbmQoKTsgKytpdCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nOjpmcm9t
VVRGOChpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+c2VnbWVudC0+c2l6ZSgpKSk7CisgICAgbV9i
dWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6
ZSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGRhdGEsIHNpemUp
KTsKKyAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBlY2YwYTQ5YjMwMWRjZjkxODNjMWVhZjk4
NTAwNjAwOTBhNDQwZjJiLi4zZGRmNTdjNTg2YTZiNGYwMDAzOTFlOWZhYTE3ZjYwYWFjMzhmYTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTIwNyw4ICsyMDcsNyBA
QCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAgICAgLy8g
RklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2VzcywgYW5k
IGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAgICAgICBk
YXRhLmFwcGVuZChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+ZGF0YSgpLCBtX2JpbmFyeVJlc3Bv
bnNlQnVpbGRlci0+c2l6ZSgpKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IG51bGxw
dHI7CisgICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
LCBudWxscHRyKS0+dGFrZURhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRlbnRUeXBl
ID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmluYWxNSU1F
VHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94bWwgd2hp
Y2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBlKTsKIH0K
</data>
<flag name="commit-queue"
          id="452654"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431024</attachid>
            <date>2021-06-09 16:48:59 -0700</date>
            <delta_ts>2021-06-09 17:05:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226857-20210609164858.patch</filename>
            <type>text/plain</type>
            <size>51359</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIyOTZhMTk5YjBhMGM3
MWVkYjkwNWNjYzA5MmJlOTdkYjk0NzcyYy4uOGE2NzIxMTM4NDRiODVjYTMxZTY2OTBkYjBjNmRl
NjJjYmE5Yjg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wNi0wOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBzb21lIGluZWZmaWNp
ZW50IHVzZXMgb2YgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY4NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGaXggc29tZSBpbmVmZmljaWVudCB1c2VzIG9mIFNoYXJlZEJ1ZmZl
cjoKKyAgICAgICAgLSBBdm9pZCBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHdoZW5ldmVy
IHBvc3NpYmxlIHNpbmNlIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgICBtYXkgaGF2ZSB0byBjb21i
aW5lIGludGVybmFsIHNlZ21lbnRzIG9mIFNoYXJlZEJ1ZmZlci4gQWRkZWQgYSBjb252ZW5pZW5j
ZQorICAgICAgICAgIGZ1bmN0aW9uIG9uIFNoYXJlZEJ1ZmZlciAoZm9yRWFjaFNlZ21lbnQoKSkg
dG8gZ2V0IHRoZSBkYXRhIHBvaW50ZXIgLyBzaXplCisgICAgICAgICAgb2YgZWFjaCBzZWdtZW50
LgorICAgICAgICAtIEF2b2lkIHNvbWUgdW5uZWNlc3NhcnkgY29uc3RydWN0aW9uIG9mIFNoYXJl
ZEJ1ZmZlciBzaW1wbHkgdG8gZ2V0IGEgVmVjdG9yLgorICAgICAgICAgIFdlIHNob3VsZCBjb25z
dHJ1Y3QgdGhlIFZlY3RvciBkaXJlY3RseSBpbiBzdWNoIGNhc2VzLiBJIGRyb3BwZWQgdGhlCisg
ICAgICAgICAgQmxvYiBmYWN0b3J5IHRoYXQgdG9vayBpbiBhIFNoYXJlZEJ1ZmZlciBhcyBpdCB3
YXMgaW5lZmZpY2llbnQgYW5kIGZyZXF1ZW50bHkKKyAgICAgICAgICBjYWxsZWQgaW5zdGVhZCBv
ZiB0aGUgbW9yZSBlZmZpY2llbnQgZmFjdG9yeSB0aGF0IHRha2VzIGluIGEgVmVjdG9yPHVpbnQ4
X3Q+LgorICAgICAgICAtIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gU2hhcmVkQnVmZmVy
IHRoYXQgcmV0dXJuIGEgVmVjdG9yLCBpbmNsdWRpbmcgb25lCisgICAgICAgICAgbmFtZWQgdGFr
ZURhdGEoKSB0aGF0IGF2b2lkcyBjb3B5aW5nIHRoZSBkYXRhLgorICAgICAgICAtIEFkZCBjb252
ZW5pZW5jZSBmdW5jdGlvbnMgdG8gU2hhcmVkQnVmZmVyIGZvciBkb2luZyBhIHByZWZpeCBjaGVj
ayBvciBjb3B5aW5nCisgICAgICAgICAgdG8gYSBkZXN0aW5hdGlvbiBwb2ludGVyLgorCisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyk6CisgICAgICAgICogTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAg
ICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpwYWNrYWdlRm9ybURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVdpdGhUeXBlQW5kRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJHZXRSZXN1bHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEYXRhQXZhaWxhYmxlRXZl
bnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAg
ICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToK
KyAgICAgICAgKiBlZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgICogZmlsZWFw
aS9CbG9iLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1
ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVu
Y2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
clNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdC5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXRjaEludGVncml0eU1ldGFkYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUlu
RGlyZWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudCk6Cisg
ICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbWJpbmVTZWdtZW50c0RhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjp0b0hleFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNv
cHlUbyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkYXRhQ2hh
bmdlZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVS
ZXNwb25zZUJsb2IpOgorCiAyMDIxLTA2LTA5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHNjcm9sbGJhciBjcmVhdGlvbiBjb2RlIGlu
IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKaW5kZXggZDMzM2M2MTRh
NDY1YmM2NjU1OTIyODMwZjdkOTliZGY0Y2Q1OTZlMC4uYTYyOTg2YjQ4OGJkMDc3NjIzZDkzZTE2
NzE2MjI3ODllMGYxZTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgQ2xp
cGJvYXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7CiBSZWY8QmxvYj4gQ2xpcGJv
YXJkSXRlbTo6YmxvYkZyb21TdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmdEYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0
byB1dGY4ID0gc3RyaW5nRGF0YS51dGY4KCk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250
ZXh0LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSksIEJs
b2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0
ZShjb250ZXh0LCBWZWN0b3IgeyB1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVuZ3RoKCkg
fSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBi
b2FyZEl0ZW06OlByZXNlbnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHls
ZShjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggMTU5ZWU4OTUwYjA0MGQ2ZDhlMjdlY2Q2OWE5NWJlMjQ4
N2YzM2JiYS4uOTI0Nzc1NDZkNmYyNzY5MzdjOTE3MGE2YWJmMTZjZDdlM2FhZjcxYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzksNyArMzksNyBAQCB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmci
KSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAg
ICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgp
KSkKLSAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCks
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YSksIG1fbWltZVR5cGUpOworICAgICAgICAgICAg
bV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuYnl0ZXMpLCBkYXRhLmxlbmd0aCB9LCBtX21pbWVU
eXBlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5
bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bQppbmRleCBkOTE0Y2QwZDQwZjkzZWJmNmYwMTNkM2E0ZDQyMzkzYjc3MWY0MjRhLi5iNGMzMWNh
NTA2MzljY2NhNGM1NTA1NGQ0OTEzMTc4NjlkYTdlNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBi
b2FyZEltYWdlUmVhZGVyTWFjLm1tCkBAIC0zOSw3ICszOSw4IEBAIHZvaWQgQ2xpcGJvYXJkSW1h
Z2VSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgUmVmPFNo
YXJlZEJ1CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5p
dFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAgaWYgKGF1
dG8gY2dJbWFnZSA9IFtpbWFnZSBDR0ltYWdlRm9yUHJvcG9zZWRSZWN0Om5pbCBjb250ZXh0Om5p
bCBoaW50czpuaWxdKSB7CiAgICAgICAgICAgICBhdXRvIHJlcHJlc2VudGF0aW9uID0gYWRvcHRO
UyhbW05TQml0bWFwSW1hZ2VSZXAgYWxsb2NdIGluaXRXaXRoQ0dJbWFnZTpjZ0ltYWdlXSk7Ci0g
ICAgICAgICAgICBtX3Jlc3VsdCA9IEJsb2I6OmNyZWF0ZShtX2RvY3VtZW50LmdldCgpLCBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShbcmVwcmVzZW50YXRpb24gcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6
TlNCaXRtYXBJbWFnZUZpbGVUeXBlUE5HIHByb3BlcnRpZXM6QHsgfV0pLCBtX21pbWVUeXBlKTsK
KyAgICAgICAgICAgIE5TRGF0YSogbnNEYXRhID0gW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0
aW9uVXNpbmdUeXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dOwor
ICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVj
dG9yIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5s
ZW5ndGggfSwgbV9taW1lVHlwZSk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDYwNjQ0
YmY5OTQxOWZiMzc3NjBkMGZjYmJjNmEwODZlNzc1MDk5OTQuLjE1YmEwY2ExMmUyMTczNTBjNWRi
ZDQxZTljODc5YzVkOTliZTkxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCkBAIC00MSw5ICs0MSw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIGlubGluZSBSZWY8QmxvYj4gYmxvYkZyb21EYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbmd0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3N0YXRpYyBpbmxpbmUg
UmVmPEJsb2I+IGJsb2JGcm9tRGF0YShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBW
ZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAg
IHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4dCwgVmVjdG9yIHsgZGF0YSwgbGVuZ3RoIH0sIEJs
b2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlwZSkpOworICAgIHJldHVybiBCbG9i
OjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRU
eXBlKGNvbnRlbnRUeXBlKSk7CiB9CiAKIC8vIGh0dHBzOi8vbWltZXNuaWZmLnNwZWMud2hhdHdn
Lm9yZy8jaHR0cC1xdW90ZWQtc3RyaW5nLXRva2VuLWNvZGUtcG9pbnQKQEAgLTE2OCw3ICsxNjgs
NyBAQCBzdGF0aWMgUmVmUHRyPERPTUZvcm1EYXRhPiBwYWNrYWdlRm9ybURhdGEoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29ucwogICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBl
ID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVFRQU3BhY2VzKGhlYWRlci5zdWJzdHJpbmcoY29u
dGVudFR5cGVCZWdpbiArIGNvbnRlbnRUeXBlUHJlZml4TGVuZ3RoLCBjb250ZW50VHlwZUVuZCAt
IGNvbnRlbnRUeXBlQmVnaW4gLSBjb250ZW50VHlwZVByZWZpeExlbmd0aCkpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBmb3JtLmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoY29udGV4
dCwgQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGJvZHlCZWdpbiwg
Ym9keUxlbmd0aCkuZ2V0KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShjb250ZW50VHlw
ZSkpLmdldCgpLCBmaWxlbmFtZSkuZ2V0KCksIGZpbGVuYW1lKTsKKyAgICAgICAgICAgIGZvcm0u
YXBwZW5kKG5hbWUsIEZpbGU6OmNyZWF0ZShjb250ZXh0LCBCbG9iOjpjcmVhdGUoY29udGV4dCwg
VmVjdG9yIHsgYm9keUJlZ2luLCBib2R5TGVuZ3RoIH0sIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShjb250ZW50VHlwZSkpLmdldCgpLCBmaWxlbmFtZSkuZ2V0KCksIGZpbGVuYW1lKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9OwpAQCAtMjIyLDcgKzIyMiw3IEBA
IHN0YXRpYyB2b2lkIHJlc29sdmVXaXRoVHlwZUFuZERhdGEoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBGZXRjaEJvZHlDb25zCiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNo
Qm9keUNvbnN1bWVyOjpUeXBlOjpCbG9iOgogICAgICAgICBwcm9taXNlLT5yZXNvbHZlQ2FsbGJh
Y2tWYWx1ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPEJsb2I+PihbJmRhdGEsICZsZW5n
dGgsICZjb250ZW50VHlwZSwgY29udGV4dF0oYXV0byYpIHsKLSAgICAgICAgICAgIHJldHVybiBi
bG9iRnJvbURhdGEoY29udGV4dCwgZGF0YSwgbGVuZ3RoLCBjb250ZW50VHlwZSk7CisgICAgICAg
ICAgICByZXR1cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIHsgZGF0YSwgbGVuZ3RoIH0sIGNvbnRl
bnRUeXBlKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEZldGNoQm9k
eUNvbnN1bWVyOjpUeXBlOjpKU09OOgpAQCAtMzU0LDggKzM1NCw4IEBAIFJlZjxCbG9iPiBGZXRj
aEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogICAgIGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiBCbG9iOjpjcmVhdGUoY29udGV4
dCwgVmVjdG9yPHVpbnQ4X3Q+KCksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShtX2NvbnRl
bnRUeXBlKSk7CiAKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHRyeSB0byBtb3ZlIG1fYnVmZmVy
IHRvIEJsb2Igd2l0aG91dCBkb2luZyBleHRyYSBjb3B5LgotICAgIHJldHVybiBibG9iRnJvbURh
dGEoY29udGV4dCwgbV9idWZmZXItPmRhdGEoKSwgbV9idWZmZXItPnNpemUoKSwgbV9jb250ZW50
VHlwZSk7CisgICAgYXV0byBkYXRhID0gc3RkOjpleGNoYW5nZShtX2J1ZmZlciwgbnVsbHB0cikt
PnRha2VEYXRhKCk7CisgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCBXVEZNb3ZlKGRh
dGEpLCBtX2NvbnRlbnRUeXBlKTsKIH0KIAogU3RyaW5nIEZldGNoQm9keUNvbnN1bWVyOjp0YWtl
QXNUZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkdldFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRS
ZXN1bHQuY3BwCmluZGV4IGExZWI0MzRkNWI3YWFkOTMxZDExYzczMzM4MTRmMWJmMGU4OWFjMGYu
Ljc2MmY5NDFiODNiOTZlZmNlNDY0MGYzMzFkNTU3N2ExMGRkNzI2YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcApAQCAtMzIsMTEg
KzMyLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoSURCR2V0UmVzdWx0KTsKIAotdm9pZCBJREJHZXRSZXN1bHQ6OmRhdGFGcm9tQnVmZmVyKFNo
YXJlZEJ1ZmZlciYgYnVmZmVyKQotewotICAgIG1fdmFsdWUgPSBUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6Y3JlYXRlKHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKLX0KLQogSURCR2V0
UmVzdWx0OjpJREJHZXRSZXN1bHQoY29uc3QgSURCR2V0UmVzdWx0JiB0aGF0LCBJc29sYXRlZENv
cHlUYWcpCiB7CiAgICAgaXNvbGF0ZWRDb3B5KHRoYXQsICp0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmgKaW5kZXggOGI5OWI3ZmExNTI3
YTZmOTQ4YjM5ZTI4N2I2ODA0YzYyODVkOGFiYi4uMDZkNjI5MWIwMDgxNmUwMjgwOWI4MTA2NTAw
YTA5NzM3ODdiZDRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCR2V0UmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCR2V0UmVzdWx0LmgKQEAgLTEwMyw4ICsxMDMsNiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNv
ZGVyJiwgSURCR2V0UmVzdWx0Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkYXRhRnJvbUJ1ZmZl
cihTaGFyZWRCdWZmZXImKTsKLQogICAgIHN0YXRpYyB2b2lkIGlzb2xhdGVkQ29weShjb25zdCBJ
REJHZXRSZXN1bHQmIHNvdXJjZSwgSURCR2V0UmVzdWx0JiBkZXN0aW5hdGlvbik7CiAKICAgICBJ
REJWYWx1ZSBtX3ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXJlY29yZGVyL01lZGlhUmVjb3JkZXIuY3BwCmluZGV4IDQ3NWNjODVmOGYzZDg2MzllNWY2MzY2
MGE3ZGM2MmNlZjhhN2VmNjYuLjEwNjBlMmI0YWNhMmFlOWJiMTU5NzlmOWFiMmU4NjViZDk2NDc3
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFyZWNvcmRlci9NZWRp
YVJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5jcHAKQEAgLTE5OCw3ICsxOTgsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBN
ZWRpYVJlY29yZGVyOjpzdGFydFJlY29yZGluZyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB0aW1l
U2xpYwogCiBzdGF0aWMgaW5saW5lIFJlZjxCbG9iRXZlbnQ+IGNyZWF0ZURhdGFBdmFpbGFibGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBSZWZQdHI8U2hhcmVkQnVmZmVy
PiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgZG91YmxlIHRpbWVDb2RlKQogewot
ICAgIGF1dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShjb250ZXh0LCBidWZmZXIucmVs
ZWFzZU5vbk51bGwoKSwgbWltZVR5cGUpIDogQmxvYjo6Y3JlYXRlKGNvbnRleHQpOworICAgIGF1
dG8gYmxvYiA9IGJ1ZmZlciA/IEJsb2I6OmNyZWF0ZShjb250ZXh0LCBidWZmZXItPnRha2VEYXRh
KCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShjb250ZXh0KTsKICAgICByZXR1cm4gQmxvYkV2
ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmRhdGFhdmFpbGFibGVFdmVudCwgQmxvYkV2ZW50OjpJ
bml0IHsgeyBmYWxzZSwgZmFsc2UsIGZhbHNlIH0sIFdURk1vdmUoYmxvYiksIHRpbWVDb2RlIH0s
IEJsb2JFdmVudDo6SXNUcnVzdGVkOjpZZXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IGFkOWU0NDk5
NjFjODU0NWIyMGRkN2YzYTE4YzAxZGI3ZGZkNGEyYmMuLmRhZWRkMDA5OGFlZGI5OTU3ZGI1NmVi
NzJjMWJlNzJiYjcxNTRhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBS
VENEYXRhQ2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgpCiB7CiAgICAgc3dpdGNoIChtX2JpbmFyeVR5cGUpIHsKICAgICBjYXNl
IEJpbmFyeVR5cGU6OkJsb2I6Ci0gICAgICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShCbG9iOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3RoKSwgZW1wdHlTdHJpbmcoKSksIHsgfSkp
OworICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQmxv
Yjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yIHsgZGF0YSwgZGF0YUxl
bmd0aCB9LCBlbXB0eVN0cmluZygpKSwgeyB9KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEJpbmFyeVR5cGU6OkFycmF5QnVmZmVyOgogICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQo
TWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0ZShkYXRhLCBkYXRhTGVuZ3Ro
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2Fy
ZEZpbGVSZWFkZXIuY3BwCmluZGV4IDVkMDY2NDM3YThiNGNhNDYzODMxNzIxMDRiNGM4MTNmYWVm
MmViZTkuLjExYzZhOWI4MzYwMTgyZDJiNzk0OTBiZjA0NWNlZDhlZmEwOTZiZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6
OnJlYWRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogCiB2b2lkIFdlYkNvcmVQYXN0
ZWJvYXJkRmlsZVJlYWRlcjo6cmVhZEJ1ZmZlcihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25z
dCBTdHJpbmcmIHR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIGZpbGVz
LmFwcGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQu
Z2V0KCksIGJ1ZmZlci5nZXQoKSwgdHlwZSksIGZpbGVuYW1lKSk7CisgICAgZmlsZXMuYXBwZW5k
KEZpbGU6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBCbG9iOjpjcmVhdGUoY29udGV4dC5nZXQoKSwg
YnVmZmVyLT50YWtlRGF0YSgpLCB0eXBlKSwgZmlsZW5hbWUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpp
bmRleCA3OTQyMWQ5MmVjNWU1ZDM1ZTI2NzlhYzU2OGMzZDAxMmYwMDNhM2YwLi5hMTZiNjU4NjZj
YTc5NzgyNjkxM2EzNzE1MDJhYWY0OWEyOWU5M2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtMjU1LDcgKzI1
NSw3IEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGb3JJbWFn
ZUF0dGFjaG1lbnQoRnJhbWUmIGZyYW1lLCBEb2N1CiAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRp
ZmllcigpLCBjb250ZW50VHlwZSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUsIFdURk1vdmUo
YnVmZmVyKSk7CiAgICAgICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJbWFn
ZVJlcHJlc2VudGF0aW9uKGNvbnRlbnRUeXBlKSkgewogICAgICAgICAgICAgYXV0byBpbWFnZSA9
IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgICAgICAgICBpbWFnZS0+
c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERP
TVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBi
dWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJp
YnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNy
ZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLT50
YWtlRGF0YSgpLCBjb250ZW50VHlwZSkpKTsKICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRhY2ht
ZW50RWxlbWVudChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKICAgICAgICAgICAgIGlmIChwcmVmZXJy
ZWRTaXplLndpZHRoKQogICAgICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpudW1iZXIo
KnByZWZlcnJlZFNpemUud2lkdGgpKTsKQEAgLTI2Nyw3ICsyNjcsNyBAQCBzdGF0aWMgUmVmPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KEZyYW1lJiBm
cmFtZSwgRG9jdQogICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKFdURk1vdmUoYXR0
YWNobWVudCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXR0YWNobWVudC0+
c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50LCBi
dWZmZXIuZ2V0KCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNobWVudE5hbWUpLCBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAg
ICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZSgmZG9jdW1lbnQsIEJsb2I6OmNy
ZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+dGFrZURhdGEoKSwgY29udGVudFR5cGUpLCBkZWZhdWx0
SW1hZ2VBdHRhY2htZW50TmFtZSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxh
eUF0dHJpYnV0ZXM6Olllcyk7CiAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3Zl
KGF0dGFjaG1lbnQpKTsKICAgICB9CiAgICAgcmV0dXJuIGZyYWdtZW50OwpAQCAtMzYxLDcgKzM2
MSw3IEBAIHN0YXRpYyB2b2lkIHJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cyhGcmFt
ZSYgZnJhbWUsIERvY3VtZW50RnJhZ21lbnQmIGZyCiAgICAgICAgIGlmIChzdXBwb3J0c0NsaWVu
dFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsKICAgICAgICAgICAgIGlmIChpczxIVE1MSW1h
Z2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQuZ2V0KCkpICYmIGNvbnRlbnRUeXBlSXNTdWl0YWJs
ZUZvcklubGluZUltYWdlUmVwcmVzZW50YXRpb24oaW5mby5jb250ZW50VHlwZSkpIHsKICAgICAg
ICAgICAgICAgICBhdXRvJiBpbWFnZSA9IGRvd25jYXN0PEhUTUxJbWFnZUVsZW1lbnQ+KG9yaWdp
bmFsRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6Y3JlYXRlT2Jq
ZWN0VVJMKCpmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwg
aW5mby5kYXRhLCBpbmZvLmNvbnRlbnRUeXBlKSkpOworICAgICAgICAgICAgICAgIGltYWdlLnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGZyYW1l
LmRvY3VtZW50KCksIGluZm8uZGF0YS0+ZGF0YUFzVmVjdG9yKCksIGluZm8uY29udGVudFR5cGUp
KSk7CiAgICAgICAgICAgICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVsZW1lbnQoYXR0YWNobWVu
dC5jb3B5UmVmKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBhdHRh
Y2htZW50LT51cGRhdGVBdHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBpbmZvLmNvbnRlbnRU
eXBlLCBpbmZvLmZpbGVOYW1lKTsKQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0aWMgdm9pZCByZXBs
YWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdt
ZW50JiBmcgogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJhbWUuZWRpdG9yKCkucmVnaXN0
ZXJBdHRhY2htZW50SWRlbnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlxdWVJZGVudGlmaWVy
KCksIFdURk1vdmUoaW5mby5jb250ZW50VHlwZSksIFdURk1vdmUoaW5mby5maWxlTmFtZSksIFdU
Rk1vdmUoaW5mby5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdHRhY2ht
ZW50LT5zZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUo
ZnJhbWUuZG9jdW1lbnQoKSwgV1RGTW92ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVu
dFR5cGUpKSwgV1RGTW92ZShpbmZvLmZpbGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
VXBkYXRlRGlzcGxheUF0dHJpYnV0ZXM6Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5z
ZXRGaWxlKEZpbGU6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUu
ZG9jdW1lbnQoKSwgaW5mby5kYXRhLT5kYXRhQXNWZWN0b3IoKSwgV1RGTW92ZShpbmZvLmNvbnRl
bnRUeXBlKSksIFdURk1vdmUoaW5mby5maWxlTmFtZSkpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6
OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwogICAgICAgICAgICAgcGFyZW50LT5yZXBs
YWNlQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50KSwgV1RGTW92ZShvcmlnaW5hbEVsZW1lbnQpKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTQxMCw4ICs0MTAsOCBAQCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gY3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMoRnJhbWUmIGZyYW1lLCBOU0F0dHJp
YnV0ZQogICAgIH0KIAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgQXRvbVN0cmluZz4gYmxvYlVS
TE1hcDsKLSAgICBmb3IgKGNvbnN0IFJlZjxBcmNoaXZlUmVzb3VyY2U+JiBzdWJyZXNvdXJjZSA6
IGZyYWdtZW50QW5kUmVzb3VyY2VzLnJlc291cmNlcykgewotICAgICAgICBhdXRvIGJsb2IgPSBC
bG9iOjpjcmVhdGUoJmRvY3VtZW50LCBzdWJyZXNvdXJjZS0+ZGF0YSgpLCBzdWJyZXNvdXJjZS0+
bWltZVR5cGUoKSk7CisgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZSA6IGZyYWdtZW50QW5kUmVz
b3VyY2VzLnJlc291cmNlcykgeworICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRv
Y3VtZW50LCBzdWJyZXNvdXJjZS0+ZGF0YSgpLmRhdGFBc1ZlY3RvcigpLCBzdWJyZXNvdXJjZS0+
bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBibG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmpl
Y3RVUkwoZG9jdW1lbnQsIGJsb2IpOwogICAgICAgICBibG9iVVJMTWFwLnNldChzdWJyZXNvdXJj
ZS0+dXJsKCkuc3RyaW5nKCksIGJsb2JVUkwpOwogICAgIH0KQEAgLTQ2MCw3ICs0NjAsNyBAQCBz
dGF0aWMgU3RyaW5nIHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoRnJhbWUmIGZyYW1lLCBEb2N1
bWVudCYgZGVzdGluYXRpb25Eb2N1bQogICAgICAgICBhdXRvJiBzdWJyZXNvdXJjZVVSTCA9IHN1
YnJlc291cmNlLT51cmwoKTsKICAgICAgICAgaWYgKCFzaG91bGRSZXBsYWNlU3VicmVzb3VyY2VV
Ukwoc3VicmVzb3VyY2VVUkwpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGF1dG8g
YmxvYiA9IEJsb2I6OmNyZWF0ZSgmZGVzdGluYXRpb25Eb2N1bWVudCwgc3VicmVzb3VyY2UtPmRh
dGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOworICAgICAgICBhdXRvIGJsb2IgPSBCbG9i
OjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YnJlc291cmNlLT5kYXRhKCkuZGF0YUFz
VmVjdG9yKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKICAgICAgICAgU3RyaW5nIGJsb2JV
UkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBibG9iKTsK
ICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2VVUkwuc3RyaW5nKCksIGJsb2JVUkwp
OwogICAgIH0KQEAgLTQ4NCwxMCArNDg0LDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1
cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAg
ICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJh
bWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6
RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFzSFRNTCk7CiAKICAgICAgICAgQ1N0cmluZyB1dGY4
ID0gc3ViZnJhbWVNYXJrdXAudXRmOCgpOwotICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1
ZmZlcjsKLSAgICAgICAgYmxvYkJ1ZmZlci5yZXNlcnZlQ2FwYWNpdHkodXRmOC5sZW5ndGgoKSk7
Ci0gICAgICAgIGJsb2JCdWZmZXIuYXBwZW5kKHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5s
ZW5ndGgoKSk7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZGVzdGluYXRpb25E
b2N1bWVudCwgV1RGTW92ZShibG9iQnVmZmVyKSwgdHlwZSk7CisgICAgICAgIGF1dG8gYmxvYiA9
IEJsb2I6OmNyZWF0ZSgmZGVzdGluYXRpb25Eb2N1bWVudCwgVmVjdG9yIHsgdXRmOC5kYXRhQXNV
SW50OFB0cigpLCB1dGY4Lmxlbmd0aCgpIH0sIHR5cGUpOwogCiAgICAgICAgIFN0cmluZyBzdWJm
cmFtZUJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50
LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3ViZnJhbWVVUkwuc3RyaW5nKCksIHN1
YmZyYW1lQmxvYlVSTCk7CkBAIC02ODcsNyArNjg0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVy
OjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlw
ZSwKICAgICBpZiAoc2hvdWxkUmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkpCiAg
ICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KGZyYW1l
LCBkb2N1bWVudCwgV1RGTW92ZShidWZmZXIpLCB0eXBlLCBwcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplKSk7CiAgICAgZWxzZQotICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvcklt
YWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxv
Yjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNl
bnRhdGlvblNpemUpKTsKKyAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFn
ZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6
OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+dGFrZURhdGEoKSwgdHlwZSkpLCBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKSk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9CkBAIC03NjMsNyAr
NzYwLDcgQEAgc3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUm
IGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY28KICAgICAgICAgZmlsZU5hbWUgPSBuYW1l
OwogCiAgICAgaWYgKCFzdXBwb3J0c0NsaWVudFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsK
LSAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoZG9jdW1lbnQucHRyKCks
IEJsb2I6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRU
eXBlKSksIGZpbGVOYW1lKSk7CisgICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3Jl
YXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlci5k
YXRhQXNWZWN0b3IoKSwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBmaWxlTmFtZSkpOwogICAg
ICAgICByZXR1cm4gYXR0YWNobWVudDsKICAgICB9CiAKQEAgLTc3MSw3ICs3NjgsNyBAQCBzdGF0
aWMgUmVmPEhUTUxFbGVtZW50PiBhdHRhY2htZW50Rm9yRGF0YShGcmFtZSYgZnJhbWUsIFNoYXJl
ZEJ1ZmZlciYgYnVmZmVyLCBjbwogCiAgICAgaWYgKGNvbnRlbnRUeXBlSXNTdWl0YWJsZUZvcklu
bGluZUltYWdlUmVwcmVzZW50YXRpb24oYXR0YWNobWVudFR5cGUpKSB7CiAgICAgICAgIGF1dG8g
aW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICBpbWFn
ZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIs
IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUoZG9jdW1lbnQu
cHRyKCksIEJsb2I6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgYnVmZmVyLCBXVEZNb3ZlKGF0dGFj
aG1lbnRUeXBlKSksIFdURk1vdmUoZmlsZU5hbWUpKSkpOworICAgICAgICBpbWFnZS0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVSTDo6
Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBGaWxlOjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIEJs
b2I6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgYnVmZmVyLmRhdGFBc1ZlY3RvcigpLCBXVEZNb3Zl
KGF0dGFjaG1lbnRUeXBlKSksIFdURk1vdmUoZmlsZU5hbWUpKSkpOwogICAgICAgICBpbWFnZS0+
c2V0QXR0YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgIGlmIChw
cmVmZXJyZWRTaXplLndpZHRoKQogICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjp3aWR0aEF0dHIsIEF0b21TdHJpbmc6Om51bWJl
cigqcHJlZmVycmVkU2l6ZS53aWR0aCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcAppbmRleCAyNzQ0Y2Q2ZmUzYzYxOTBiYjhjYTRl
MTQ2ODY0MGI0NzMyYjBlNDMwLi5hYWQ1MWRlYWU4ZWUwNGRjMzg3MTEwYTllMTFkMmNlZWI1ZTYw
MTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVh
ZGVyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9XZWJDb250ZW50UmVh
ZGVyR3RrLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRJ
bWFnZShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLAogewog
ICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKICAgICBhdXRvJiBkb2N1bWVudCA9ICpmcmFt
ZS5kb2N1bWVudCgpOwotICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRV
UkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVh
dGUoJmRvY3VtZW50LCBidWZmZXIuZ2V0KCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSkpOworICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBbmRVUkwoZG9j
dW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRv
Y3VtZW50LCBidWZmZXItPnRha2VEYXRhKCksIHR5cGUpKSwgcHJlZmVycmVkUHJlc2VudGF0aW9u
U2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAK
aW5kZXggZTFlZjRhYjk0MzY2MzhhMzQzNjM3NTI0Njk2NjMxNDVkODc0N2FiOC4uM2Y0MDlhNDdl
ZDNiNWZkNmZkOTFlOWJlN2Y4ZjBiNjIzNmRjN2IxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9CbG9iLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3Bw
CkBAIC0xMDgsMTcgKzEwOCw2IEBAIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4mJiBibG9iUGFydFZhCiAgICAgVGhyZWFk
YWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKG1faW50ZXJuYWxVUkwsIGJ1aWxkZXIu
ZmluYWxpemUoKSwgbV90eXBlKTsKIH0KIAotQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKLSAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQotICAgICwgbV90eXBl
KGNvbnRlbnRUeXBlKQotICAgICwgbV9zaXplKGJ1ZmZlci5zaXplKCkpCi17Ci0gICAgVmVjdG9y
PEJsb2JQYXJ0PiBibG9iUGFydHM7Ci0gICAgYmxvYlBhcnRzLmFwcGVuZChWZWN0b3IgeyBidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpIH0pOwotICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJM
OjpjcmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lz
dGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBXVEZNb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBl
KTsKLX0KLQogQmxvYjo6QmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWZWN0
b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIDogQWN0
aXZlRE9NT2JqZWN0KGNvbnRleHQpCiAgICAgLCBtX3R5cGUoY29udGVudFR5cGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaCBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVh
cGkvQmxvYi5oCmluZGV4IGU0MjUxYjJlNmNhNGVhZDA2MGM1YmY2MzVlZDU0ZDE3YzkzNDczZDQu
LmZkMTc5ZTA2MjExNmUyNDQzZGUxMjg0MzVkZWRhZTg3MzA2NWVhNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
QmxvYi5oCkBAIC03NSwxMyArNzUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBibG9iOwog
ICAgIH0KIAotICAgIHN0YXRpYyBSZWY8QmxvYj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFNoYXJlZEJ1ZmZlciYgYnVmZmVyLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQotICAgIHsKLSAgICAgICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9i
KGNvbnRleHQsIGJ1ZmZlciwgY29udGVudFR5cGUpKTsKLSAgICAgICAgYmxvYi0+c3VzcGVuZElm
TmVlZGVkKCk7Ci0gICAgICAgIHJldHVybiBibG9iOwotICAgIH0KLQogICAgIHN0YXRpYyBSZWY8
QmxvYj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFZlY3Rvcjx1aW50
OF90PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiAgICAgewogICAgICAgICBh
dXRvIGJsb2IgPSBhZG9wdFJlZigqbmV3IEJsb2IoY29udGV4dCwgV1RGTW92ZShkYXRhKSwgY29u
dGVudFR5cGUpKTsKQEAgLTEzMSw3ICsxMjQsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
V0VCQ09SRV9FWFBPUlQgZXhwbGljaXQgQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAg
ICAgQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgVmVjdG9yPEJsb2JQYXJ0VmFyaWFudD4m
JiwgY29uc3QgQmxvYlByb3BlcnR5QmFnJik7Ci0gICAgQmxvYihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgU2hhcmVkQnVmZmVyJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7CiAg
ICAgQmxvYihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVmVjdG9yPHVpbnQ4X3Q+JiYsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUpOwogCiAgICAgZW51bSBSZWZlcmVuY2luZ0V4aXN0aW5nQmxv
YkNvbnN0cnVjdG9yIHsgcmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKaW5kZXggN2ZjYjNlZTI3
MjIzZmRlMjU5NDY3ZDc2OGY4YjczNzJkZjEwMmM0ZS4uNGIzOWFmN2UwNDBiNmEyYmRmMTZkZTc2
YjZhMjAxYmYzMWE1NWYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3
b3JrU2VuZFF1ZXVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5k
UXVldWUuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgTmV0d29ya1NlbmRRdWV1ZTo6cHJvY2Vz
c01lc3NhZ2VzKCkKICAgICAgICAgc3dpdGNoT24obV9xdWV1ZS5maXJzdCgpLCBbdGhpc10oY29u
c3QgQ1N0cmluZyYgdXRmOCkgewogICAgICAgICAgICAgbV93cml0ZVN0cmluZyh1dGY4KTsKICAg
ICAgICAgfSwgW3RoaXNdKFJlZjxTaGFyZWRCdWZmZXI+JiBkYXRhKSB7Ci0gICAgICAgICAgICBt
X3dyaXRlUmF3RGF0YShkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSk7CisgICAgICAgICAgICBk
YXRhLT5mb3JFYWNoU2VnbWVudChtX3dyaXRlUmF3RGF0YSk7CiAgICAgICAgIH0sIFt0aGlzLCAm
c2hvdWxkU3RvcFByb2Nlc3NpbmddKFVuaXF1ZVJlZjxCbG9iTG9hZGVyPiYgbG9hZGVyKSB7CiAg
ICAgICAgICAgICBhdXRvIGVycm9yQ29kZSA9IGxvYWRlci0+ZXJyb3JDb2RlKCk7CiAgICAgICAg
ICAgICBpZiAobG9hZGVyLT5pc0xvYWRpbmcoKSB8fCAoZXJyb3JDb2RlICYmIGVycm9yQ29kZS52
YWx1ZSgpID09IEFib3J0RXJyb3IpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRh
Y2htZW50RWxlbWVudC5jcHAKaW5kZXggNDk2YjQxMTRlNzliNTA5NDZjZWNhMDY1NmQwYWQ4Y2Yy
MDY5MzY4NS4uYjBlOWY1MjIyY2I2ZTA1OGVjNWY5MDBlN2FmODAyZDAyOTBjYzA5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI2LDEw
ICsyMjYsMTAgQEAgc3RhdGljIGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VB
dHRhY2htZW50KGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVn
aXN0cnk6OmlzU3VwcG9ydGVkSW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdp
c3RyeTo6aXNQREZNSU1FVHlwZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRF
bGVtZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgZGF0YSkKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50Ojp1cGRhdGVFbmNsb3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50
ID0gc2hhZG93SG9zdCgpOwotICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1l
bnQpIHx8ICFkYXRhLT5zaXplKCkpCisgICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pihob3N0
RWxlbWVudCkgfHwgIWJ1ZmZlci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJp
bmcgbWltZVR5cGUgPSBjb250ZW50VHlwZTsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEhUTUxB
dHRhY2htZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJp
bmcmIGNvbnRlbnRUeQogICAgIGlmICghbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VB
dHRhY2htZW50KG1pbWVUeXBlKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaG9zdEVsZW1lbnQt
PnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBE
T01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50
KCksIFdURk1vdmUoZGF0YSksIG1pbWVUeXBlKSkpOworICAgIGhvc3RFbGVtZW50LT5zZXRBdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpj
cmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBidWZm
ZXItPnRha2VEYXRhKCksIG1pbWVUeXBlKSkpOwogfQogCiB2b2lkIEhUTUxBdHRhY2htZW50RWxl
bWVudDo6dXBkYXRlVGh1bWJuYWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAppbmRleCBkNGY3ODczZTg1ZjkxMzE2MDEyYjk0NDA4NGY5MjA5NzYwMWUw
NjZkLi44YWMwYWEzZWZkOTRmZTJjNjczMzVmMTZkMDI2Njc2MTc1ZWIzOGIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCkBAIC01NDcsNyArNTQ3LDkgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAg
ICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0
SWQsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5jb250ZW50KCksIHByZXZpb3VzUmVzb3VyY2VEYXRh
LT5iYXNlNjRFbmNvZGVkKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAocHJldmlvdXNSZXNvdXJj
ZURhdGEtPmhhc0J1ZmZlcmVkRGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91
c0J1ZmZlciA9IHByZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIoKTsKLSAgICAgICAgICAgICAg
ICBtX3Jlc291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgcHJldmlv
dXNCdWZmZXItPmRhdGEoKSwgcHJldmlvdXNCdWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAg
ICAgcHJldmlvdXNCdWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShjb25zdCB1aW50OF90KiBkYXRh
LCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPm1h
eWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgZGF0YSwgc2l6ZSk7CisgICAgICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJlc291cmNl
UmVzcG9uc2UtPnNldFN0cmluZyhQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6Om1pbWVUeXBl
S2V5LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+bWltZVR5cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCBkZjY3YzE1NDQ4NDQ4Mjc3MzlhZDNlMjdjMGMz
Njk3MjNhZTc5MzkxLi4zZmFlMTY2MGM1ODUwMzkzNDBmYWFlYzMzODE4MDQzMjcyMTY2YjZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTExMDIsOCArMTEw
MiwxMSBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb250aW51ZUFmdGVyQ29udGVudFBvbGljeShQ
b2xpY3lBY3Rpb24gcG9saWN5KQogCiAgICAgaWYgKCFpc1N0b3BwaW5nKCkgJiYgbV9zdWJzdGl0
dXRlRGF0YS5pc1ZhbGlkKCkgJiYgaXNMb2FkaW5nTWFpblJlc291cmNlKCkpIHsKICAgICAgICAg
YXV0byBjb250ZW50ID0gbV9zdWJzdGl0dXRlRGF0YS5jb250ZW50KCk7Ci0gICAgICAgIGlmIChj
b250ZW50ICYmIGNvbnRlbnQtPnNpemUoKSkKLSAgICAgICAgICAgIGRhdGFSZWNlaXZlZChjb250
ZW50LT5kYXRhKCksIGNvbnRlbnQtPnNpemUoKSk7CisgICAgICAgIGlmIChjb250ZW50ICYmIGNv
bnRlbnQtPnNpemUoKSkgeworICAgICAgICAgICAgY29udGVudC0+Zm9yRWFjaFNlZ21lbnQoWyZd
KGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgICAgICAgICAgICAgZGF0
YVJlY2VpdmVkKGRhdGEsIHNpemUpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICAg
ICAgaWYgKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKQogICAgICAgICAgICAgZmluaXNoZWRMb2Fk
aW5nKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKaW5kZXggNzk3OWQ5OWM4OTI0YWU2ZjdmY2I2MWE1Yjk3Mzk4MWNiMzAzNDk2
MS4uMmNiYzc1NWFmMGMxMGEzNDA1NWVkZGM1ZWVhODNlNzIyM2U5MWU4NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTQ4
MSwxNCArNDgxLDIwIEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKIAogICAgICAgICBpZiAob3B0aW9ucygp
LmZpbHRlcmluZ1BvbGljeSA9PSBSZXNwb25zZUZpbHRlcmluZ1BvbGljeTo6RGlzYWJsZSkgewog
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNw
b25zZSk7Ci0gICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkKLSAg
ICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZS0+cmVzb3Vy
Y2VCdWZmZXIoKS0+ZGF0YSgpLCBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5zaXplKCkp
OworICAgICAgICAgICAgaWYgKGF1dG8qIGJ1ZmZlciA9IG1fcmVzb3VyY2UtPnJlc291cmNlQnVm
ZmVyKCkpIHsKKyAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZURhdGEoZGF0YSwgc2l6ZSk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzcG9u
c2UudHlwZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlR5cGU6OkRlZmF1bHQpOwogCiAgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIFJlc291cmNlUmVz
cG9uc2U6OmZpbHRlcihyZXNwb25zZSwgbV9vcHRpb25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0
aW9uczo6Q3JlZGVudGlhbHM6OkluY2x1ZGUgPyBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhw
b3NlQWxsSGVhZGVyc0NoZWNrOjpObyA6IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VB
bGxIZWFkZXJzQ2hlY2s6OlllcykpOwotICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291
cmNlQnVmZmVyKCkpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1f
cmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPmRhdGEoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VC
dWZmZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291
cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNo
U2VnbWVudChbJl0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIHNpemUpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC02NDks
OCArNjU1LDExIEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTZWN1cml0eUNoCiAgICAgfQogICAgIGRpZFJlY2Vp
dmVSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSk7CiAKLSAgICBpZiAoZGF0YSkKLSAgICAg
ICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkp
OworICAgIGlmIChkYXRhKSB7CisgICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KFsmXShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgICAgZGlkUmVjZWl2ZURh
dGEoaWRlbnRpZmllciwgZGF0YSwgc2l6ZSk7CisgICAgICAgIH0pOworICAgIH0KIAogICAgIGNv
bnN0IGF1dG8qIHRpbWluZyA9IHJlc3BvbnNlLmRlcHJlY2F0ZWROZXR3b3JrTG9hZE1ldHJpY3NP
ck51bGwoKTsKICAgICBhdXRvIHJlc291cmNlVGltaW5nID0gUmVzb3VyY2VUaW1pbmc6OmZyb21T
eW5jaHJvbm91c0xvYWQocmVxdWVzdFVSTCwgbV9vcHRpb25zLmluaXRpYXRvciwgbG9hZFRpbWlu
ZywgdGltaW5nID8gKnRpbWluZyA6IE5ldHdvcmtMb2FkTWV0cmljcyB7IH0sIHJlc3BvbnNlLCBz
ZWN1cml0eU9yaWdpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2Nh
cGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IGFkYWU2NDAwZmM0YjMzOGJjN2JjNWI4Njlh
MjQ1YjJlOTBhYjQ0YzUuLjc5MmFmMmMwYWQ1NjQ4MGFmMjg2NWYwMTRiM2U5YjMyNGIwYzI2ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcApAQCAtMTU1LDggKzE1NSwxNCBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludAog
ewogICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+
c2l6ZSgpIDogbGVuZ3RoKTsKKyAgICBpZiAobV9jbGllbnQpIHsKKyAgICAgICAgaWYgKGJ1ZmZl
cikgeworICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oY29uc3QgdWludDhf
dCogc2VnbWVudERhdGEsIHNpemVfdCBzZWdtZW50U2l6ZSkgeworICAgICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBzZWdtZW50RGF0YSwgc2VnbWVudFNpemUpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgbV9jbGllbnQtPmRp
ZFJlY2VpdmVEYXRhKHRoaXMsIGRhdGEsIGxlbmd0aCk7CisgICAgfQogCiAgICAgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBXVEZNb3ZlKGJ1ZmZl
ciksIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAppbmRl
eCBjZTY0OTU4MWU5YjRiNGUxNjI2ODc3YjE5MWZiZjJhZDk2NDIxZTdkLi4yZmFjMjUzNGIxMTM0
ODI2YTI2OWE1NWFkZTg5OThmYWQxN2ZlM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcApAQCAtMTU0LDQgKzE1NCwx
NSBAQCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5
dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZwogICAgIHJldHVybiB7IGFsZ29yaXRobSwgY3J5
cHRvRGlnZXN0LT5jb21wdXRlSGFzaCgpIH07CiB9CiAKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdDo6QWxnb3JpdGhtIGFsZ29yaXRobSwgY29uc3QgU2hhcmVkQnVmZmVyKiBidWZm
ZXIpCit7CisgICAgYXV0byBjcnlwdG9EaWdlc3QgPSBQQUw6OkNyeXB0b0RpZ2VzdDo6Y3JlYXRl
KHRvQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGFsZ29yaXRobSkpOworICAgIGlmIChidWZmZXIpIHsK
KyAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oY29uc3QgdWludDhfdCogZGF0YSwg
c2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAgIGNyeXB0b0RpZ2VzdC0+YWRkQnl0ZXMoZGF0YSwg
c2l6ZSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICByZXR1cm4geyBhbGdvcml0aG0sIGNyeXB0
b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKaW5kZXggZmNjMGIwNDRhYWEy
NGU1ZWE3YTExY2VhYzFmZjdlYmE1MzQ5MDBiYy4uYWVhM2RjNTdjODc4MzEzMDEzYTViMTZjOTM5
Yjc3NGVkNDg0MzI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKIAogc3Ry
dWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAgZW51bSBjbGFzcyBBbGdvcml0
aG0gewpAQCAtNzQsNiArNzUsNyBAQCBzdGQ6Om9wdGlvbmFsPEVuY29kZWRSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBoaWNEaWdlcwogCiBzdGQ6Om9w
dGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVjb2RlRW5jb2RlZFJlc291cmNl
Q3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVzb3VyY2VDcnlwdG9ncmFwaGljRGln
ZXN0Jik7CiAKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0
Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxnb3JpdGhtLCBj
b25zdCBTaGFyZWRCdWZmZXIqKTsKIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9n
cmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0
aG0sIGNvbnN0IHZvaWQqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAKaW5kZXggNGQwYzY5MGIyNzYy
YWE5MGU3MWVhMzg3ZjNhM2Q4MGY2NDEzOGJlZS4uYzUyMDgxYjQyMTY3YmE4MGMyNzU3MDhjYmQ5
OTZkODdhODU0NDIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlSW50ZWdyaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJ
bnRlZ3JpdHkuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBtYXRjaEludGVncml0eU1ldGFk
YXRhKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgU3RyaW5nJiBpbnRlZ3IK
ICAgICAgICAgYXV0byBleHBlY3RlZFZhbHVlID0gZGVjb2RlRW5jb2RlZFJlc291cmNlQ3J5cHRv
Z3JhcGhpY0RpZ2VzdChpdGVtKTsKIAogICAgICAgICAvLyAzLiBMZXQgYWN0dWFsVmFsdWUgYmUg
dGhlIHJlc3VsdCBvZiBhcHBseWluZyBhbGdvcml0aG0gdG8gcmVzcG9uc2UuCi0gICAgICAgIGF1
dG8gYWN0dWFsVmFsdWUgPSBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoYWxnb3JpdGhtLCBz
aGFyZWRCdWZmZXIgPyBzaGFyZWRCdWZmZXItPmRhdGEoKSA6IG51bGxwdHIsIHNoYXJlZEJ1ZmZl
ciA/IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpIDogMCk7CisgICAgICAgIGF1dG8gYWN0dWFsVmFsdWUg
PSBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKGFsZ29yaXRobSwgc2hhcmVkQnVm
ZmVyKTsKIAogICAgICAgICAvLyA0LiBJZiBhY3R1YWxWYWx1ZSBpcyBhIGNhc2Utc2Vuc2l0aXZl
IG1hdGNoIGZvciBleHBlY3RlZFZhbHVlLCByZXR1cm4gdHJ1ZS4KICAgICAgICAgaWYgKGV4cGVj
dGVkVmFsdWUgJiYgYWN0dWFsVmFsdWUudmFsdWUgPT0gZXhwZWN0ZWRWYWx1ZS0+dmFsdWUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuY3BwCmluZGV4IGYyNjRmMWRkNzEyM2Q2OTJjNjU3ZjFlY2UxNDk5NGM0MTk2MzM0
NWEuLjdjM2FjZWJhNzJkNTJhNDY4NmI1YjNiMzZjNzdkNWZhZWYzMjdiNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3Jv
dXAuY3BwCkBAIC01OTUsOSArNTk1LDggQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRp
ZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJj
ZSogbmV3ZXN0TWFuaWZlc3QgPSBtX25ld2VzdENhY2hlLT5tYW5pZmVzdFJlc291cmNlKCk7CiAg
ICAgICAgIEFTU0VSVChuZXdlc3RNYW5pZmVzdCk7CiAgICAgCi0gICAgICAgIGlmICghbV9tYW5p
ZmVzdFJlc291cmNlIHx8IC8vIFRoZSByZXNvdXJjZSB3aWxsIGJlIG51bGwgaWYgSFRUUCByZXNw
b25zZSB3YXMgMzA0IE5vdCBNb2RpZmllZC4KLSAgICAgICAgICAgIChuZXdlc3RNYW5pZmVzdC0+
ZGF0YSgpLnNpemUoKSA9PSBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS5zaXplKCkgJiYgIW1l
bWNtcChuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpLmRhdGEoKSwgbV9tYW5pZmVzdFJlc291cmNlLT5k
YXRhKCkuZGF0YSgpLCBuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpLnNpemUoKSkpKSB7Ci0KKyAgICAg
ICAgLy8gVGhlIHJlc291cmNlIHdpbGwgYmUgbnVsbCBpZiBIVFRQIHJlc3BvbnNlIHdhcyAzMDQg
Tm90IE1vZGlmaWVkLgorICAgICAgICBpZiAoIW1fbWFuaWZlc3RSZXNvdXJjZSB8fCBuZXdlc3RN
YW5pZmVzdC0+ZGF0YSgpID09IG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpKSB7CiAgICAgICAg
ICAgICBtX2NvbXBsZXRpb25UeXBlID0gTm9VcGRhdGU7CiAgICAgICAgICAgICBtX21hbmlmZXN0
UmVzb3VyY2UgPSBudWxscHRyOwogICAgICAgICAgICAgZGVsaXZlckRlbGF5ZWRNYWluUmVzb3Vy
Y2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiN2MzMDkxN2NkN2RhMTFmZmYyOTlkYmI2
NzU5ZjViN2U4YTZkMTdhLi43Y2M3OTM3NWFjOGMzZDFmYmFkNDk3MDgzYmNkYzBmNzRhMDQ3NzNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEyOTIsNyArMTI5MiwxMCBAQCBib29sIEFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZpbGVJbkRpcmVjdG9yeShTaGFy
ZWRCdWZmZXImIGRhdAogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZSho
YW5kbGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgaW50NjRfdCB3cml0dGVuQnl0
ZXMgPSAwOworICAgIGRhdGEuZm9yRWFjaFNlZ21lbnQoWyZdKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBzaXplKSB7CisgICAgICAgIHdyaXR0ZW5CeXRlcyArPSBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShoYW5kbGUsIGRhdGEsIHNpemUpOworICAgIH0pOwogICAgIEZpbGVTeXN0ZW06OmNs
b3NlRmlsZShoYW5kbGUpOwogICAgIAogICAgIGlmICh3cml0dGVuQnl0ZXMgIT0gc3RhdGljX2Nh
c3Q8aW50NjRfdD4oZGF0YS5zaXplKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCAyMTkyZjE1MjBhYTM5YjE3YmU5YmYw
MmRlODQ4MDkyM2RkODYyZTcwLi42ZjA4NjAwZjJiMDkwZWE1MWQxMTRjYTNlOWRhZTJlNzdkMDE4
MWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVz
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNv
dXJjZS5jcHAKQEAgLTE2Nyw4ICsxNjcsMTEgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlk
QWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50JiBjKQogICAgICAgICBhdXRvIHJlc3BvbnNl
UHJvY2Vzc2VkSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgY2xpZW50XSB7CiAgICAgICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAobV9kYXRhKQotICAgICAg
ICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBtX2RhdGEtPmRhdGEoKSwgbV9k
YXRhLT5zaXplKCkpOworICAgICAgICAgICAgaWYgKG1fZGF0YSkgeworICAgICAgICAgICAgICAg
IG1fZGF0YS0+Zm9yRWFjaFNlZ21lbnQoWyZdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7CisgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBk
YXRhLCBzaXplKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmICghaGFzQ2xpZW50KCpjbGllbnQpKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIENhY2hlZFJlc291cmNlOjpkaWRBZGRDbGllbnQoKmNsaWVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCmluZGV4IDkxOTU5ZDYyOTkzODkxNDkz
MzMyYTgzYjJlNThjNGI3Mzc0ODE3NDMuLjJmNmUzNDgxOGE5YmE4YTAwZThjYWU3MGI1YmQwNjY4
NDQ1YTI2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCkBA
IC0xMTQsOSArMTE0LDggQEAgdm9pZCBJY29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmkKICAgICBpZiAoc3RhdHVz
ICYmIChzdGF0dXMgPCAyMDAgfHwgc3RhdHVzID4gMjk5KSkKICAgICAgICAgZGF0YSA9IG51bGxw
dHI7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciBwZGZNYWdpY051bWJlcltdID0gIiVQREYiOwot
ICAgIHN0YXRpYyB1bnNpZ25lZCBwZGZNYWdpY051bWJlckxlbmd0aCA9IHNpemVvZihwZGZNYWdp
Y051bWJlcikgLSAxOwotICAgIGlmIChkYXRhICYmIGRhdGEtPnNpemUoKSA+PSBwZGZNYWdpY051
bWJlckxlbmd0aCAmJiAhbWVtY21wKGRhdGEtPmRhdGEoKSwgcGRmTWFnaWNOdW1iZXIsIHBkZk1h
Z2ljTnVtYmVyTGVuZ3RoKSkgeworICAgIGNvbnN0ZXhwciB1aW50OF90IHBkZk1hZ2ljTnVtYmVy
W10gPSB7ICclJywgJ1AnLCAnRCcsICdGJyB9OworICAgIGlmIChkYXRhICYmIGRhdGEtPnN0YXJ0
c1dpdGgocGRmTWFnaWNOdW1iZXIsIHN0ZDo6c2l6ZShwZGZNYWdpY051bWJlcikpKSB7CiAgICAg
ICAgIExPRyhJY29uRGF0YWJhc2UsICJJY29uTG9hZGVyOjpmaW5pc2hMb2FkaW5nKCkgLSBJZ25v
cmluZyBpY29uIGF0ICVzIGJlY2F1c2UgaXQgYXBwZWFycyB0byBiZSBhIFBERiIsIG1fcmVzb3Vy
Y2UtPnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgZGF0YSA9IG51bGxw
dHI7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXgg
MDA0MGE4YTYxMTg3ZmIwZTQ5ZTg2ZjMzNzBiYjhmODIzNzc1YWZjNS4uYWYwYjRiNWI0ZDQ5ZmE5
OGI1ZmNiNzljMjQxMGEzOWYyMGM3OWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFy
ZWRCdWZmZXIuY3BwCkBAIC04Niw2ICs4NiwxNiBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShWZWN0b3I8dWludDhfdD4mJiB2ZWN0b3IpCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2hhcmVkQnVmZmVyKFdURk1vdmUodmVjdG9yKSkpOwogfQogCitzdGF0aWMgVmVj
dG9yPHVpbnQ4X3Q+IGNvbWJpbmVTZWdtZW50c0RhdGEoY29uc3QgU2hhcmVkQnVmZmVyOjpEYXRh
U2VnbWVudFZlY3RvciYgc2VnbWVudHMsIHNpemVfdCBzaXplKQoreworICAgIFZlY3Rvcjx1aW50
OF90PiBjb21iaW5lZERhdGE7CisgICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkoc2l6ZSk7CisgICAgZm9yIChhdXRvJiBzZWdtZW50IDogc2VnbWVudHMpCisgICAgICAgIGNv
bWJpbmVkRGF0YS5hcHBlbmQoc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVu
dC0+c2l6ZSgpKTsKKyAgICBBU1NFUlQoY29tYmluZWREYXRhLnNpemUoKSA9PSBzaXplKTsKKyAg
ICByZXR1cm4gY29tYmluZWREYXRhOworfQorCiB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUlu
dG9PbmVTZWdtZW50KCkgY29uc3QKIHsKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtOTYsMTEgKzEw
Niw3IEBAIHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAog
ICAgIGlmIChtX3NlZ21lbnRzLnNpemUoKSA8PSAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBW
ZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOwotICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KG1fc2l6ZSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBzZWdtZW50IDogbV9z
ZWdtZW50cykKLSAgICAgICAgY29tYmluZWREYXRhLmFwcGVuZChzZWdtZW50LnNlZ21lbnQtPmRh
dGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkpOwotICAgIEFTU0VSVChjb21iaW5lZERhdGEu
c2l6ZSgpID09IG1fc2l6ZSk7CisgICAgYXV0byBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVu
dHNEYXRhKG1fc2VnbWVudHMsIG1fc2l6ZSk7CiAgICAgbV9zZWdtZW50cy5jbGVhcigpOwogICAg
IG1fc2VnbWVudHMuYXBwZW5kKHswLCBEYXRhU2VnbWVudDo6Y3JlYXRlKFdURk1vdmUoY29tYmlu
ZWREYXRhKSl9KTsKICAgICBBU1NFUlQobV9zZWdtZW50cy5zaXplKCkgPT0gMSk7CkBAIC0xMDks
MTMgKzExNSwyOCBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkg
Y29uc3QKIAogY29uc3QgdWludDhfdCogU2hhcmVkQnVmZmVyOjpkYXRhKCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fc2VnbWVudHMuc2l6ZSgpKQorICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgY29tYmluZUludG9PbmVTZWdtZW50KCk7CiAg
ICAgQVNTRVJUKGludGVybmFsbHlDb25zaXN0ZW50KCkpOwogICAgIHJldHVybiBtX3NlZ21lbnRz
WzBdLnNlZ21lbnQtPmRhdGEoKTsKIH0KIAorVmVjdG9yPHVpbnQ4X3Q+IFNoYXJlZEJ1ZmZlcjo6
dGFrZURhdGEoKQoreworICAgIGlmIChtX3NlZ21lbnRzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7CisgICAgaWYgKGhh
c09uZVNlZ21lbnQoKSAmJiBXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZlY3Rvcjx1aW50OF90Pj4o
bV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpKQorICAgICAgICBjb21iaW5l
ZERhdGEgPSBzdGQ6OmV4Y2hhbmdlKFdURjo6Z2V0PFZlY3Rvcjx1aW50OF90Pj4obV9zZWdtZW50
c1swXS5zZWdtZW50LT5tX2ltbXV0YWJsZURhdGEpLCBWZWN0b3I8dWludDhfdD4oKSk7CisgICAg
ZWxzZQorICAgICAgICBjb21iaW5lZERhdGEgPSBjb21iaW5lU2VnbWVudHNEYXRhKG1fc2VnbWVu
dHMsIG1fc2l6ZSk7CisKKyAgICBjbGVhcigpOworICAgIHJldHVybiBjb21iaW5lZERhdGE7Cit9
CisKIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZlcjo6Z2V0U29tZURhdGEoc2l6ZV90
IHBvc2l0aW9uKSBjb25zdAogewogICAgIFJFTEVBU0VfQVNTRVJUKHBvc2l0aW9uIDwgbV9zaXpl
KTsKQEAgLTEzMCwxMCArMTUxLDEwIEBAIFNoYXJlZEJ1ZmZlckRhdGFWaWV3IFNoYXJlZEJ1ZmZl
cjo6Z2V0U29tZURhdGEoc2l6ZV90IHBvc2l0aW9uKSBjb25zdAogU3RyaW5nIFNoYXJlZEJ1ZmZl
cjo6dG9IZXhTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRl
cjsKLSAgICBmb3IgKHVuc2lnbmVkIGJ5dGVPZmZzZXQgPSAwOyBieXRlT2Zmc2V0IDwgc2l6ZSgp
OyBieXRlT2Zmc2V0KyspIHsKLSAgICAgICAgY29uc3QgdWludDhfdCBieXRlID0gZGF0YSgpW2J5
dGVPZmZzZXRdOwotICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYWQoJzAnLCAyLCBoZXgo
Ynl0ZSkpKTsKLSAgICB9CisgICAgZm9yRWFjaFNlZ21lbnQoWyZdKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYWQoJzAnLCAyLCBoZXgo
ZGF0YVtpXSkpKTsKKyAgICB9KTsKICAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygp
OwogfQogCkBAIC0yMDUsNiArMjI2LDQ4IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZl
cjo6Y29weSgpIGNvbnN0CiAgICAgcmV0dXJuIGNsb25lOwogfQogCit2b2lkIFNoYXJlZEJ1ZmZl
cjo6Zm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90Kiwgc2l6
ZV90KT4mIGFwcGx5KSBjb25zdAoreworICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVu
dHMpCisgICAgICAgIGFwcGx5KHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21l
bnQtPnNpemUoKSk7Cit9CisKK2Jvb2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IHVp
bnQ4X3QqIHByZWZpeCwgc2l6ZV90IHByZWZpeFNpemUpIGNvbnN0Cit7CisgICAgaWYgKCFwcmVm
aXhTaXplKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChzaXplKCkgPCBwcmVmaXhT
aXplKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzaXplX3QgcmVtYWluaW5nID0gcHJl
Zml4U2l6ZTsKKyAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKSB7CisgICAgICAg
IHNpemVfdCBhbW91bnRUb0NvbXBhcmVUaGlzVGltZSA9IHN0ZDo6bWluKHJlbWFpbmluZywgc2Vn
bWVudC5zZWdtZW50LT5zaXplKCkpOworICAgICAgICBpZiAobWVtY21wKHByZWZpeCwgc2VnbWVu
dC5zZWdtZW50LT5kYXRhKCksIGFtb3VudFRvQ29tcGFyZVRoaXNUaW1lKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVtYWluaW5nIC09IGFtb3VudFRvQ29tcGFyZVRoaXNU
aW1lOworICAgICAgICBpZiAoIXJlbWFpbmluZykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBwcmVmaXggKz0gYW1vdW50VG9Db21wYXJlVGhpc1RpbWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKwordm9pZCBTaGFyZWRCdWZmZXI6OmNvcHlUbyh2b2lkKiBkZXN0aW5h
dGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3QKK3sKKyAgICBBU1NFUlQobGVuZ3RoIDw9IHNpemUo
KSk7CisgICAgYXV0byBkZXN0aW5hdGlvblB0ciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkZXN0
aW5hdGlvbik7CisgICAgYXV0byByZW1haW5pbmcgPSBzdGQ6Om1pbihsZW5ndGgsIHNpemUoKSk7
CisgICAgZm9yIChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykgeworICAgICAgICBzaXplX3Qg
YW1vdW50VG9Db3B5VGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIHNlZ21lbnQuc2VnbWVu
dC0+c2l6ZSgpKTsKKyAgICAgICAgbWVtY3B5KGRlc3RpbmF0aW9uUHRyLCBzZWdtZW50LnNlZ21l
bnQtPmRhdGEoKSwgYW1vdW50VG9Db3B5VGhpc1RpbWUpOworICAgICAgICByZW1haW5pbmcgLT0g
YW1vdW50VG9Db3B5VGhpc1RpbWU7CisgICAgICAgIGlmICghcmVtYWluaW5nKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBkZXN0aW5hdGlvblB0ciArPSBhbW91bnRUb0NvcHlUaGlzVGlt
ZTsKKyAgICB9Cit9CisKIGJvb2wgU2hhcmVkQnVmZmVyOjpoYXNPbmVTZWdtZW50KCkgY29uc3QK
IHsKICAgICBhdXRvIGl0ID0gYmVnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmgKaW5kZXggN2RjMzFjNzM5MmNjZWVlZWJiMjYzYjI0YTlhMzJkNzMxZGQwYTg3MS4uYTFj
MDNmMWJkZDczMmM1MGM2ZTUyYjMyM2EzMDliOGM0ZmVlMzc3MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTEwMCw2ICsxMDAsMTAgQEAgcHVibGljOgogICAgIC8v
IEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXBsYWNl
IHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCiAgICAgY29uc3QgdWludDhfdCogZGF0
YSgpIGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0NoYXJQdHIoKSBjb25zdCB7IHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpOyB9CisgICAgVmVjdG9yPHVp
bnQ4X3Q+IGRhdGFBc1ZlY3RvcigpIHsgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkgfTsgfQorCisg
ICAgLy8gQ29tYmluZXMgYWxsIHRoZSBzZWdtZW50cyBpbnRvIGEgVmVjdG9yIGFuZCByZXR1cm5z
IHRoYXQgdmVjdG9yIGFmdGVyIGNsZWFyaW5nIHRoZSBTaGFyZWRCdWZmZXIuCisgICAgVmVjdG9y
PHVpbnQ4X3Q+IHRha2VEYXRhKCk7CiAKICAgICAvLyBDcmVhdGVzIGFuIEFycmF5QnVmZmVyIGFu
ZCBjb3BpZXMgdGhpcyBTaGFyZWRCdWZmZXIncyBjb250ZW50cyB0byB0aGF0CiAgICAgLy8gQXJy
YXlCdWZmZXIgd2l0aG91dCBtZXJnaW5nIHNlZ21lbnRlZCBidWZmZXJzIGludG8gYSBmbGF0IGJ1
ZmZlci4KQEAgLTExNyw2ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcigpOwogCiAg
ICAgUmVmPFNoYXJlZEJ1ZmZlcj4gY29weSgpIGNvbnN0OworICAgIHZvaWQgY29weVRvKHZvaWQq
IGRlc3RpbmF0aW9uLCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKIAogICAgIC8vIERhdGEgd3JhcHBl
ZCBieSBhIERhdGFTZWdtZW50IHNob3VsZCBiZSBpbW11dGFibGUgYmVjYXVzZSBpdCBjYW4gYmUg
cmVmZXJlbmNlZCBieSBvdGhlciBvYmplY3RzLgogICAgIC8vIFRvIG1vZGlmeSBvciBjb21iaW5l
IHRoZSBkYXRhLCBhbGxvY2F0ZSBhIG5ldyBEYXRhU2VnbWVudC4KQEAgLTE4MCw2ICsxODUsOSBA
QCBwdWJsaWM6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXI7CiAgICAgfTsKIAor
ICAgIHZvaWQgZm9yRWFjaFNlZ21lbnQoY29uc3QgRnVuY3Rpb248dm9pZChjb25zdCB1aW50OF90
Kiwgc2l6ZV90KT4mKSBjb25zdDsKKyAgICBib29sIHN0YXJ0c1dpdGgoY29uc3QgdWludDhfdCog
cHJlZml4LCBzaXplX3QgcHJlZml4U2l6ZSkgY29uc3Q7CisKICAgICBzdHJ1Y3QgRGF0YVNlZ21l
bnRWZWN0b3JFbnRyeSB7CiAgICAgICAgIHNpemVfdCBiZWdpblBvc2l0aW9uOwogICAgICAgICBS
ZWY8RGF0YVNlZ21lbnQ+IHNlZ21lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9T
aGFyZWRCdWZmZXJDRi5jcHAKaW5kZXggODk1ZWJlMDUxZjE1MmE3YTgzYTQ1YzdiOTBkZGMwYzI3
MGE0OWVlMS4uMmQ1YjMzNWZiNGM0YmRmOGY3ZDUxNzgyZDBmMzVmZjlkMWI1NjE5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcApAQCAtNDcsNyAr
NDcsMTEgQEAgUmV0YWluUHRyPENGRGF0YVJlZj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEo
KSBjb25zdAogICAgICAgICBpZiAoYXV0byBkYXRhID0gV1RGOjpnZXRfaWY8UmV0YWluUHRyPENG
RGF0YVJlZj4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKICAgICAg
ICAgICAgIHJldHVybiAqZGF0YTsKICAgICB9Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlKG51bGxwdHIsIGRhdGEoKSwgc2l6ZSgpKSk7CisgICAgYXV0byBjZkRhdGEgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZU11dGFibGUobnVsbHB0ciwgc2l6ZSgpKSk7CisgICAgZm9yRWFjaFNlZ21l
bnQoWyZdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgICAgIENGRGF0
YUFwcGVuZEJ5dGVzKGNmRGF0YS5nZXQoKSwgZGF0YSwgc2l6ZSk7CisgICAgfSk7CisgICAgcmV0
dXJuIGNmRGF0YTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1CdWZmZXIuY3BwCmluZGV4IGVlNmE1ZDJlZWQ2YTNmOTdlNzQ2OGNhYjk2ZTllZTM0ZDZiODMw
NmUuLjEzNTRiZGJlZGQ2MTE2YzIwOWZiNTRhNjNlMTk0MjI1M2NiM2E1OGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03NzQsNyArNzc0LDcgQEAg
dm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJdGVtJiB0ZW1wb3JhcnlJ
dGVtKQogICAgIGlmIChyZXF1aXJlZFNpemVGb3JJdGVtKQogICAgICAgICBtX3dyaXRpbmdDbGll
bnQtPmVuY29kZUl0ZW1JbmxpbmUodGVtcG9yYXJ5SXRlbSwgbG9jYXRpb24pOwogICAgIGVsc2UK
LSAgICAgICAgbWVtY3B5KGxvY2F0aW9uLCBvdXRPZkxpbmVJdGVtLT5kYXRhKCksIGRhdGFMZW5n
dGgpOworICAgICAgICBvdXRPZkxpbmVJdGVtLT5jb3B5VG8obG9jYXRpb24sIGRhdGFMZW5ndGgp
OwogCiAgICAgZGlkQXBwZW5kRGF0YShhZGRpdGlvbmFsQ2FwYWNpdHlGb3JFbmNvZGVkSXRlbSwg
YnVmZmVyQ2hhbmdlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAppbmRleCAwMDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1NDNkYTYyZDczOGMwZmU2Li5mZjQzYWUx
NTFlMWJmNTkxOTI5MTJkZTM3ZGM5NTYzMWRjNjc3NzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0NjYsOSBAQCBFbmNvZGVkRGF0YVN0YXR1
cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIEFT
U0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERvY3VtZW50TG9hZGVyIHNo
b3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgogICAgICAgICBsb2FkZXIu
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5cGUoImltYWdlL3N2Zyt4
bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmJl
Z2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVudAotICAgICAgICBsb2FkZXIu
YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShkYXRhKCktPmRhdGEoKSwg
ZGF0YSgpLT5zaXplKCkpOworICAgICAgICBkYXRhKCktPmZvckVhY2hTZWdtZW50KFsmXShjb25z
dCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgICAgbG9hZGVyLmFjdGl2
ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSwgc2l6ZSk7CisgICAgICAg
IH0pOwogICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuZW5k
KCk7CiAKICAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1Njcmlw
dEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKaW5k
ZXggNTI0OWQ2N2FkMmM3NjJjYmY4MDkxZDk2NzhhNWY0ZmQzYjZmZDE1NS4uYjk0ODVlMjk4NTY3
MDEwNzBkZmJhMWU4MDU5ODQzZjNlMjQ5ZDkzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2Ny
aXB0QnVmZmVyLmNwcApAQCAtNTMsOCArNTMsOSBAQCBTdHJpbmcgU2NyaXB0QnVmZmVyOjp0b1N0
cmluZygpIGNvbnN0CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZ0J1aWxk
ZXIgYnVpbGRlcjsKLSAgICBmb3IgKGF1dG8gaXQgPSBtX2J1ZmZlci0+YmVnaW4oKTsgaXQgIT0g
bV9idWZmZXItPmVuZCgpOyArK2l0KQotICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZy
b21VVEY4KGl0LT5zZWdtZW50LT5kYXRhKCksIGl0LT5zZWdtZW50LT5zaXplKCkpKTsKKyAgICBt
X2J1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBz
aXplKSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoZGF0YSwgc2l6
ZSkpOworICAgIH0pOwogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGVjZjBhNDliMzAxZGNmOTE4M2MxZWFm
OTg1MDA2MDA5MGE0NDBmMmIuLjNkZGY1N2M1ODZhNmI0ZjAwMDM5MWU5ZmFhMTdmNjBhYWMzOGZh
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMjA3LDggKzIwNyw3
IEBAIFJlZjxCbG9iPiBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlUmVzcG9uc2VCbG9iKCkKICAgICAv
LyBGSVhNRTogV2UganVzdCByZWNlaXZlZCB0aGUgZGF0YSBmcm9tIE5ldHdvcmtQcm9jZXNzLCBh
bmQgYXJlIHNlbmRpbmcgaXQgYmFjay4gVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBWZWN0b3I8
dWludDhfdD4gZGF0YTsKICAgICBpZiAobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCi0gICAgICAg
IGRhdGEuYXBwZW5kKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5kYXRhKCksIG1fYmluYXJ5UmVz
cG9uc2VCdWlsZGVyLT5zaXplKCkpOwotICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyID0gbnVs
bHB0cjsKKyAgICAgICAgZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXIsIG51bGxwdHIpLT50YWtlRGF0YSgpOwogICAgIFN0cmluZyBub3JtYWxpemVkQ29udGVudFR5
cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZShGaW5hbE1J
TUVUeXBlOjpZZXMpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3
aGljaCBtYXkgYmUgaW5jb3JyZWN0LgogICAgIHJldHVybiBCbG9iOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKGRhdGEpLCBub3JtYWxpemVkQ29udGVudFR5cGUpOwog
fQo=
</data>
<flag name="commit-queue"
          id="452660"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431025</attachid>
            <date>2021-06-09 16:55:31 -0700</date>
            <delta_ts>2021-06-09 19:16:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226857-20210609165530.patch</filename>
            <type>text/plain</type>
            <size>51363</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIyOTZhMTk5YjBhMGM3
MWVkYjkwNWNjYzA5MmJlOTdkYjk0NzcyYy4uOGE2NzIxMTM4NDRiODVjYTMxZTY2OTBkYjBjNmRl
NjJjYmE5Yjg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wNi0wOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBzb21lIGluZWZmaWNp
ZW50IHVzZXMgb2YgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY4NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGaXggc29tZSBpbmVmZmljaWVudCB1c2VzIG9mIFNoYXJlZEJ1ZmZl
cjoKKyAgICAgICAgLSBBdm9pZCBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHdoZW5ldmVy
IHBvc3NpYmxlIHNpbmNlIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgICBtYXkgaGF2ZSB0byBjb21i
aW5lIGludGVybmFsIHNlZ21lbnRzIG9mIFNoYXJlZEJ1ZmZlci4gQWRkZWQgYSBjb252ZW5pZW5j
ZQorICAgICAgICAgIGZ1bmN0aW9uIG9uIFNoYXJlZEJ1ZmZlciAoZm9yRWFjaFNlZ21lbnQoKSkg
dG8gZ2V0IHRoZSBkYXRhIHBvaW50ZXIgLyBzaXplCisgICAgICAgICAgb2YgZWFjaCBzZWdtZW50
LgorICAgICAgICAtIEF2b2lkIHNvbWUgdW5uZWNlc3NhcnkgY29uc3RydWN0aW9uIG9mIFNoYXJl
ZEJ1ZmZlciBzaW1wbHkgdG8gZ2V0IGEgVmVjdG9yLgorICAgICAgICAgIFdlIHNob3VsZCBjb25z
dHJ1Y3QgdGhlIFZlY3RvciBkaXJlY3RseSBpbiBzdWNoIGNhc2VzLiBJIGRyb3BwZWQgdGhlCisg
ICAgICAgICAgQmxvYiBmYWN0b3J5IHRoYXQgdG9vayBpbiBhIFNoYXJlZEJ1ZmZlciBhcyBpdCB3
YXMgaW5lZmZpY2llbnQgYW5kIGZyZXF1ZW50bHkKKyAgICAgICAgICBjYWxsZWQgaW5zdGVhZCBv
ZiB0aGUgbW9yZSBlZmZpY2llbnQgZmFjdG9yeSB0aGF0IHRha2VzIGluIGEgVmVjdG9yPHVpbnQ4
X3Q+LgorICAgICAgICAtIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gU2hhcmVkQnVmZmVy
IHRoYXQgcmV0dXJuIGEgVmVjdG9yLCBpbmNsdWRpbmcgb25lCisgICAgICAgICAgbmFtZWQgdGFr
ZURhdGEoKSB0aGF0IGF2b2lkcyBjb3B5aW5nIHRoZSBkYXRhLgorICAgICAgICAtIEFkZCBjb252
ZW5pZW5jZSBmdW5jdGlvbnMgdG8gU2hhcmVkQnVmZmVyIGZvciBkb2luZyBhIHByZWZpeCBjaGVj
ayBvciBjb3B5aW5nCisgICAgICAgICAgdG8gYSBkZXN0aW5hdGlvbiBwb2ludGVyLgorCisgICAg
ICAgICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyk6CisgICAgICAgICogTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAg
ICAqIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToK
KyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpwYWNrYWdlRm9ybURh
dGEpOgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVdpdGhUeXBlQW5kRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJHZXRSZXN1bHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEYXRhQXZhaWxhYmxlRXZl
bnQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAg
ICAgICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAg
ICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNh
bml0aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJl
YWRlcjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToK
KyAgICAgICAgKiBlZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgICogZmlsZWFw
aS9CbG9iLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBp
L05ldHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1
ZTo6cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVu
Y2xvc2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yTmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtB
Z2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJD
b250ZW50UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dy
YXBoaWNEaWdlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZv
clNoYXJlZEJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdC5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjptYXRjaEludGVncml0eU1ldGFkYXRhKToKKyAgICAgICAgKiBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAg
KiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUlu
RGlyZWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudCk6Cisg
ICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVm
ZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbWJpbmVTZWdtZW50c0RhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjp0b0hleFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZm
ZXI6OmZvckVhY2hTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cjo6c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNv
cHlUbyBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkYXRhQ2hh
bmdlZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVS
ZXNwb25zZUJsb2IpOgorCiAyMDIxLTA2LTA5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHNjcm9sbGJhciBjcmVhdGlvbiBjb2RlIGlu
IFJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKaW5kZXggZDMzM2M2MTRh
NDY1YmM2NjU1OTIyODMwZjdkOTliZGY0Y2Q1OTZlMC4uYTYyOTg2YjQ4OGJkMDc3NjIzZDkzZTE2
NzE2MjI3ODllMGYxZTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3lu
Yy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgQ2xp
cGJvYXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7CiBSZWY8QmxvYj4gQ2xpcGJv
YXJkSXRlbTo6YmxvYkZyb21TdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmdEYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0
byB1dGY4ID0gc3RyaW5nRGF0YS51dGY4KCk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250
ZXh0LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSksIEJs
b2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0
ZShjb250ZXh0LCBWZWN0b3IgeyB1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVuZ3RoKCkg
fSwgQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBi
b2FyZEl0ZW06OlByZXNlbnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHls
ZShjb25zdCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJk
SW1hZ2VSZWFkZXJJT1MubW0KaW5kZXggMTU5ZWU4OTUwYjA0MGQ2ZDhlMjdlY2Q2OWE5NWJlMjQ4
N2YzM2JiYS4uNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2Fy
ZEltYWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xp
cGJvYXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzksNyArMzksNyBAQCB2
b2lkIENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmci
KSB7CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3Rh
bmNlKCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAg
ICAgaWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgp
KSkKLSAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCks
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YSksIG1fbWltZVR5cGUpOworICAgICAgICAgICAg
bV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9t
aW1lVHlwZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJN
YWMubW0KaW5kZXggZDkxNGNkMGQ0MGY5M2ViZjZmMDEzZDNhNGQ0MjM5M2I3NzFmNDI0YS4uYjRj
MzFjYTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVy
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9D
bGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzksNyArMzksOCBAQCB2b2lkIENsaXBib2Fy
ZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJl
ZjxTaGFyZWRCdQogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2Nd
IGluaXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlm
IChhdXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4
dDpuaWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFk
b3B0TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0p
OwotICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdU
eXBlOk5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dKSwgbV9taW1lVHlw
ZSk7CisgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNl
bnRhdGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9
XTsKKyAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCks
IFZlY3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0Rh
dGEubGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA2
MDY0NGJmOTk0MTlmYjM3NzYwZDBmY2JiYzZhMDg2ZTc3NTA5OTk0Li4xNWJhMGNhMTJlMjE3MzUw
YzVkYmQ0MWU5Yzg3OWM1ZDk5YmU5MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtNDEsOSArNDEsOSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tRGF0YShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGF0aWMgaW5s
aW5lIFJlZjxCbG9iPiBibG9iRnJvbURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsK
LSAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3RvciB7IGRhdGEsIGxlbmd0aCB9
LCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVudFR5cGUpKTsKKyAgICByZXR1cm4g
QmxvYjo6Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIEJsb2I6Om5vcm1hbGl6ZWRDb250
ZW50VHlwZShjb250ZW50VHlwZSkpOwogfQogCiAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndo
YXR3Zy5vcmcvI2h0dHAtcXVvdGVkLXN0cmluZy10b2tlbi1jb2RlLXBvaW50CkBAIC0xNjgsNyAr
MTY4LDcgQEAgc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgICAgICAgICBjb250ZW50
VHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhoZWFkZXIuc3Vic3RyaW5n
KGNvbnRlbnRUeXBlQmVnaW4gKyBjb250ZW50VHlwZVByZWZpeExlbmd0aCwgY29udGVudFR5cGVF
bmQgLSBjb250ZW50VHlwZUJlZ2luIC0gY29udGVudFR5cGVQcmVmaXhMZW5ndGgpKTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgZm9ybS5hcHBlbmQobmFtZSwgRmlsZTo6Y3JlYXRlKGNv
bnRleHQsIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShib2R5QmVn
aW4sIGJvZHlMZW5ndGgpLmdldCgpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVu
dFR5cGUpKS5nZXQoKSwgZmlsZW5hbWUpLmdldCgpLCBmaWxlbmFtZSk7CisgICAgICAgICAgICBm
b3JtLmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoY29udGV4dCwgQmxvYjo6Y3JlYXRlKGNvbnRl
eHQsIFZlY3RvciB7IGJvZHlCZWdpbiwgYm9keUxlbmd0aCB9LCBCbG9iOjpub3JtYWxpemVkQ29u
dGVudFR5cGUoY29udGVudFR5cGUpKS5nZXQoKSwgZmlsZW5hbWUpLmdldCgpLCBmaWxlbmFtZSk7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKQEAgLTIyMiw3ICsyMjIs
NyBAQCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBG
ZXRjaEJvZHlDb25zdW1lcjo6VHlwZTo6QmxvYjoKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNh
bGxiYWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oWyZkYXRhLCAm
bGVuZ3RoLCAmY29udGVudFR5cGUsIGNvbnRleHRdKGF1dG8mKSB7Ci0gICAgICAgICAgICByZXR1
cm4gYmxvYkZyb21EYXRhKGNvbnRleHQsIGRhdGEsIGxlbmd0aCwgY29udGVudFR5cGUpOworICAg
ICAgICAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCB7IGRhdGEsIGxlbmd0aCB9LCBj
b250ZW50VHlwZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRj
aEJvZHlDb25zdW1lcjo6VHlwZTo6SlNPTjoKQEAgLTM1NCw4ICszNTQsOCBAQCBSZWY8QmxvYj4g
RmV0Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNv
bnRleHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9j
b250ZW50VHlwZSkpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBtX2J1
ZmZlciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAgICByZXR1cm4gYmxvYkZy
b21EYXRhKGNvbnRleHQsIG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCksIG1fY29u
dGVudFR5cGUpOworICAgIGF1dG8gZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxw
dHIpLT50YWtlRGF0YSgpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92
ZShkYXRhKSwgbV9jb250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6
dGFrZUFzVGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJHZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
R2V0UmVzdWx0LmNwcAppbmRleCBhMWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlh
YzBmLi43NjJmOTQxYjgzYjk2ZWZjZTQ2NDBmMzMxZDU1NzdhMTBkZDcyNmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTMy
LDExICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRF
RF9JTVBMKElEQkdldFJlc3VsdCk7CiAKLXZvaWQgSURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZl
cihTaGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFC
dWZmZXI6OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7Ci19Ci0KIElE
QkdldFJlc3VsdDo6SURCR2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0
ZWRDb3B5VGFnKQogewogICAgIGlzb2xhdGVkQ29weSh0aGF0LCAqdGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5oCmluZGV4IDhiOTliN2Zh
MTUyN2E2Zjk0OGIzOWUyODdiNjgwNGM2Mjg1ZDhhYmIuLjA2ZDYyOTFiMDA4MTZlMDI4MDliODEw
NjUwMGEwOTczNzg3YmQ0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkdldFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkdldFJlc3VsdC5oCkBAIC0xMDMsOCArMTAzLDYgQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUo
RGVjb2RlciYsIElEQkdldFJlc3VsdCYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZGF0YUZyb21C
dWZmZXIoU2hhcmVkQnVmZmVyJik7Ci0KICAgICBzdGF0aWMgdm9pZCBpc29sYXRlZENvcHkoY29u
c3QgSURCR2V0UmVzdWx0JiBzb3VyY2UsIElEQkdldFJlc3VsdCYgZGVzdGluYXRpb24pOwogCiAg
ICAgSURCVmFsdWUgbV92YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCA0NzVjYzg1ZjhmM2Q4NjM5ZTVm
NjM2NjBhN2RjNjJjZWY4YTdlZjY2Li4xMDYwZTJiNGFjYTJhZTliYjE1OTc5ZjlhYjJlODY1YmQ5
NjQ3NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gTWVkaWFSZWNvcmRlcjo6c3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4g
dGltZVNsaWMKIAogc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxh
YmxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkK
IHsKLSAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShjb250ZXh0KTsKKyAg
ICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT50YWtl
RGF0YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJs
b2JFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVu
dDo6SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29k
ZSB9LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCBhZDll
NDQ5OTYxYzg1NDViMjBkZDdmM2ExOGMwMWRiN2RmZDRhMmJjLi5kYWVkZDAwOThhZWRiOTk1N2Ri
NTZlYjcyYzFiZTcyYmI3MTU0YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZv
aWQgUlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEs
IHNpemVfdCBkYXRhTGVuZ3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAg
Y2FzZSBCaW5hcnlUeXBlOjpCbG9iOgotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUoQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
U2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7
IH0pKTsKKyAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KEJsb2I6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3RvciB7IGRhdGEsIGRh
dGFMZW5ndGggfSwgZW1wdHlTdHJpbmcoKSksIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBCaW5hcnlUeXBlOjpBcnJheUJ1ZmZlcjoKICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2
ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxl
bmd0aCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3Rl
Ym9hcmRGaWxlUmVhZGVyLmNwcAppbmRleCA1ZDA2NjQzN2E4YjRjYTQ2MzgzMTcyMTA0YjRjODEz
ZmFlZjJlYmU5Li4xMWM2YTliODM2MDE4MmQyYjc5NDkwYmYwNDVjZWQ4ZWZhMDk2YmQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVh
ZGVyOjpyZWFkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIAogdm9pZCBXZWJDb3Jl
UGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiB0eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBm
aWxlcy5hcHBlbmQoRmlsZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250
ZXh0LmdldCgpLCBidWZmZXIuZ2V0KCksIHR5cGUpLCBmaWxlbmFtZSkpOworICAgIGZpbGVzLmFw
cGVuZChGaWxlOjpjcmVhdGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0
KCksIGJ1ZmZlci0+dGFrZURhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2Eu
bW0KaW5kZXggNzk0MjFkOTJlYzVlNWQzNWUyNjc5YWM1NjhjM2QwMTJmMDAzYTNmMC4uYTE2YjY1
ODY2Y2E3OTc4MjY5MTNhMzcxNTAyYWFmNDlhMjllOTNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1NSw3
ICsyNTUsNyBAQCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9y
SW1hZ2VBdHRhY2htZW50KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAgICBmcmFtZS5lZGl0b3Io
KS5yZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlk
ZW50aWZpZXIoKSwgY29udGVudFR5cGUsIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZN
b3ZlKGJ1ZmZlcikpOwogICAgICAgICBpZiAoY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5l
SW1hZ2VSZXByZXNlbnRhdGlvbihjb250ZW50VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1h
Z2UgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1h
Z2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRy
LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVu
dCwgYnVmZmVyLmdldCgpLCBjb250ZW50VHlwZSkpKTsKKyAgICAgICAgICAgIGltYWdlLT5zZXRB
dHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJM
OjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZl
ci0+dGFrZURhdGEoKSwgY29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0
YWNobWVudEVsZW1lbnQoV1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgICAgICBpZiAocHJl
ZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0
aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVt
YmVyKCpwcmVmZXJyZWRTaXplLndpZHRoKSk7CkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIFJl
ZjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFt
ZSYgZnJhbWUsIERvY3UKICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3Zl
KGF0dGFjaG1lbnQpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF0dGFjaG1l
bnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKCZkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVu
dCwgYnVmZmVyLmdldCgpLCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1l
KSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsK
KyAgICAgICAgYXR0YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9i
OjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVm
YXVsdEltYWdlQXR0YWNobWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURp
c3BsYXlBdHRyaWJ1dGVzOjpZZXMpOwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RG
TW92ZShhdHRhY2htZW50KSk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM2MSw3
ICszNjEsNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMo
RnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHND
bGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRN
TEltYWdlRWxlbWVudD4ob3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3Vp
dGFibGVGb3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAg
ICAgICAgICAgICAgICAgYXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50Pihv
cmlnaW5hbEVsZW1lbnQuZ2V0KCkpOwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0
ZU9iamVjdFVSTCgqZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50
KCksIGluZm8uZGF0YSwgaW5mby5jb250ZW50VHlwZSkpKTsKKyAgICAgICAgICAgICAgICBpbWFn
ZS5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwg
RE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShm
cmFtZS5kb2N1bWVudCgpLCBpbmZvLmRhdGEtPmRhdGFBc1ZlY3RvcigpLCBpbmZvLmNvbnRlbnRU
eXBlKSkpOwogICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dGFjaG1lbnRFbGVtZW50KGF0dGFj
aG1lbnQuY29weVJlZigpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
YXR0YWNobWVudC0+dXBkYXRlQXR0cmlidXRlcyhpbmZvLmRhdGEtPnNpemUoKSwgaW5mby5jb250
ZW50VHlwZSwgaW5mby5maWxlTmFtZSk7CkBAIC0zNjksNyArMzY5LDcgQEAgc3RhdGljIHZvaWQg
cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnRG
cmFnbWVudCYgZnIKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZyYW1lLmVkaXRvcigpLnJl
Z2lzdGVyQXR0YWNobWVudElkZW50aWZpZXIoYXR0YWNobWVudC0+ZW5zdXJlVW5pcXVlSWRlbnRp
ZmllcigpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpLCBXVEZNb3ZlKGluZm8uZmlsZU5hbWUp
LCBXVEZNb3ZlKGluZm8uZGF0YSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXR0
YWNobWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3Jl
YXRlKGZyYW1lLmRvY3VtZW50KCksIFdURk1vdmUoaW5mby5kYXRhKSwgV1RGTW92ZShpbmZvLmNv
bnRlbnRUeXBlKSksIFdURk1vdmUoaW5mby5maWxlTmFtZSkpLCBIVE1MQXR0YWNobWVudEVsZW1l
bnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVzOjpZZXMpOworICAgICAgICAgICAgYXR0YWNobWVu
dC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGZy
YW1lLmRvY3VtZW50KCksIGluZm8uZGF0YS0+ZGF0YUFzVmVjdG9yKCksIFdURk1vdmUoaW5mby5j
b250ZW50VHlwZSkpLCBXVEZNb3ZlKGluZm8uZmlsZU5hbWUpKSwgSFRNTEF0dGFjaG1lbnRFbGVt
ZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKICAgICAgICAgICAgIHBhcmVudC0+
cmVwbGFjZUNoaWxkKFdURk1vdmUoYXR0YWNobWVudCksIFdURk1vdmUob3JpZ2luYWxFbGVtZW50
KSk7CiAgICAgICAgIH0KICAgICB9CkBAIC00MTAsOCArNDEwLDggQEAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKEZyYW1lJiBmcmFtZSwgTlNB
dHRyaWJ1dGUKICAgICB9CiAKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+IGJs
b2JVUkxNYXA7Ci0gICAgZm9yIChjb25zdCBSZWY8QXJjaGl2ZVJlc291cmNlPiYgc3VicmVzb3Vy
Y2UgOiBmcmFnbWVudEFuZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKLSAgICAgICAgYXV0byBibG9i
ID0gQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgc3VicmVzb3VyY2UtPmRhdGEoKSwgc3VicmVzb3Vy
Y2UtPm1pbWVUeXBlKCkpOworICAgIGZvciAoYXV0byYgc3VicmVzb3VyY2UgOiBmcmFnbWVudEFu
ZFJlc291cmNlcy5yZXNvdXJjZXMpIHsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRl
KCZkb2N1bWVudCwgc3VicmVzb3VyY2UtPmRhdGEoKS5kYXRhQXNWZWN0b3IoKSwgc3VicmVzb3Vy
Y2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBTdHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRl
T2JqZWN0VVJMKGRvY3VtZW50LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVz
b3VyY2UtPnVybCgpLnN0cmluZygpLCBibG9iVVJMKTsKICAgICB9CkBAIC00NjAsNyArNDYwLDcg
QEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgYXV0byYgc3VicmVzb3VyY2VVUkwg
PSBzdWJyZXNvdXJjZS0+dXJsKCk7CiAgICAgICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291
cmNlVVJMKHN1YnJlc291cmNlVVJMKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBh
dXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1YnJlc291cmNl
LT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0g
QmxvYjo6Y3JlYXRlKCZkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJyZXNvdXJjZS0+ZGF0YSgpLmRh
dGFBc1ZlY3RvcigpLCBzdWJyZXNvdXJjZS0+bWltZVR5cGUoKSk7CiAgICAgICAgIFN0cmluZyBi
bG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1bWVudCwgYmxv
Yik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YnJlc291cmNlVVJMLnN0cmluZygpLCBibG9i
VVJMKTsKICAgICB9CkBAIC00ODQsMTAgKzQ4NCw3IEBAIHN0YXRpYyBTdHJpbmcgc2FuaXRpemVN
YXJrdXBXaXRoQXJjaGl2ZShGcmFtZSYgZnJhbWUsIERvY3VtZW50JiBkZXN0aW5hdGlvbkRvY3Vt
CiAgICAgICAgIGF1dG8gc3ViZnJhbWVNYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZl
KGZyYW1lLCBkZXN0aW5hdGlvbkRvY3VtZW50LCBzdWJmcmFtZUNvbnRlbnQsIE1TT0xpc3RRdWly
a3M6OkRpc2FibGVkLCBjYW5TaG93TUlNRVR5cGVBc0hUTUwpOwogCiAgICAgICAgIENTdHJpbmcg
dXRmOCA9IHN1YmZyYW1lTWFya3VwLnV0ZjgoKTsKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJs
b2JCdWZmZXI7Ci0gICAgICAgIGJsb2JCdWZmZXIucmVzZXJ2ZUNhcGFjaXR5KHV0ZjgubGVuZ3Ro
KCkpOwotICAgICAgICBibG9iQnVmZmVyLmFwcGVuZCh1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0
ZjgubGVuZ3RoKCkpOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0
aW9uRG9jdW1lbnQsIFdURk1vdmUoYmxvYkJ1ZmZlciksIHR5cGUpOworICAgICAgICBhdXRvIGJs
b2IgPSBCbG9iOjpjcmVhdGUoJmRlc3RpbmF0aW9uRG9jdW1lbnQsIFZlY3RvciB7IHV0ZjguZGF0
YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSB9LCB0eXBlKTsKIAogICAgICAgICBTdHJpbmcg
c3ViZnJhbWVCbG9iVVJMID0gRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZGVzdGluYXRpb25Eb2N1
bWVudCwgYmxvYik7CiAgICAgICAgIGJsb2JVUkxNYXAuc2V0KHN1YmZyYW1lVVJMLnN0cmluZygp
LCBzdWJmcmFtZUJsb2JVUkwpOwpAQCAtNjg3LDcgKzY4NCw3IEBAIGJvb2wgV2ViQ29udGVudFJl
YWRlcjo6cmVhZEltYWdlKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBjb25zdCBTdHJpbmcm
IHR5cGUsCiAgICAgaWYgKHNob3VsZFJlcGxhY2VSaWNoQ29udGVudFdpdGhBdHRhY2htZW50cygp
KQogICAgICAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChm
cmFtZSwgZG9jdW1lbnQsIFdURk1vdmUoYnVmZmVyKSwgdHlwZSwgcHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZSkpOwogICAgIGVsc2UKLSAgICAgICAgYWRkRnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRG
b3JJbWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQs
IEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci5nZXQoKSwgdHlwZSkpLCBwcmVmZXJyZWRQ
cmVzZW50YXRpb25TaXplKSk7CisgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50Rm9y
SW1hZ2VBbmRVUkwoZG9jdW1lbnQsIERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBC
bG9iOjpjcmVhdGUoJmRvY3VtZW50LCBidWZmZXItPnRha2VEYXRhKCksIHR5cGUpKSwgcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSkpOwogCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQpAQCAtNzYz
LDcgKzc2MCw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRGb3JEYXRhKEZy
YW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvCiAgICAgICAgIGZpbGVOYW1lID0g
bmFtZTsKIAogICAgIGlmICghc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNobWVudERhdGEoZnJhbWUp
KSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0
cigpLCBCbG9iOjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShhdHRhY2ht
ZW50VHlwZSkpLCBmaWxlTmFtZSkpOworICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6
OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBidWZm
ZXIuZGF0YUFzVmVjdG9yKCksIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgZmlsZU5hbWUpKTsK
ICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQ7CiAgICAgfQogCkBAIC03NzEsNyArNzY4LDcgQEAg
c3RhdGljIFJlZjxIVE1MRWxlbWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBT
aGFyZWRCdWZmZXImIGJ1ZmZlciwgY28KIAogICAgIGlmIChjb250ZW50VHlwZUlzU3VpdGFibGVG
b3JJbmxpbmVJbWFnZVJlcHJlc2VudGF0aW9uKGF0dGFjaG1lbnRUeXBlKSkgewogICAgICAgICBh
dXRvIGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKLSAgICAgICAg
aW1hZ2UtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNB
dHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKGRvY3Vt
ZW50LnB0cigpLCBCbG9iOjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlciwgV1RGTW92ZShh
dHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVOYW1lKSkpKTsKKyAgICAgICAgaW1hZ2UtPnNl
dEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01V
Ukw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigp
LCBCbG9iOjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlci5kYXRhQXNWZWN0b3IoKSwgV1RG
TW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVOYW1lKSkpKTsKICAgICAgICAgaW1h
Z2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNobWVudCkpOwogICAgICAgICBp
ZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhBdHRyLCBBdG9tU3RyaW5nOjpu
dW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXggMjc0NGNkNmZlM2M2MTkwYmI4
Y2E0ZTE0Njg2NDBiNDczMmIwZTQzMC4uYWFkNTFkZWFlOGVlMDRkYzM4NzExMGE5ZTExZDJjZWVi
NWU2MDE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVu
dFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVu
dFJlYWRlckd0ay5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpy
ZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwK
IHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgYXV0byYgZG9jdW1lbnQgPSAq
ZnJhbWUuZG9jdW1lbnQoKTsKLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdl
QW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6
Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpKTsKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJM
KGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRl
KCZkb2N1bWVudCwgYnVmZmVyLT50YWtlRGF0YSgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRh
dGlvblNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2Iu
Y3BwCmluZGV4IGUxZWY0YWI5NDM2NjM4YTM0MzYzNzUyNDY5NjYzMTQ1ZDg3NDdhYjguLjNmNDA5
YTQ3ZWQzYjVmZDZmZDkxZTliZTdmOGYwYjYyMzZkYzdiMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9i
LmNwcApAQCAtMTA4LDE3ICsxMDgsNiBAQCBCbG9iOjpCbG9iKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYgYmxvYlBhcnRWYQogICAgIFRo
cmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBidWls
ZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvbnN0IFN0cmlu
ZyYgY29udGVudFR5cGUpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKLSAgICAsIG1f
dHlwZShjb250ZW50VHlwZSkKLSAgICAsIG1fc2l6ZShidWZmZXIuc2l6ZSgpKQotewotICAgIFZl
Y3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwotICAgIGJsb2JQYXJ0cy5hcHBlbmQoVmVjdG9yIHsg
YnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKLSAgICBtX2ludGVybmFsVVJMID0gQmxv
YlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Ojpy
ZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShibG9iUGFydHMpLCBjb250ZW50
VHlwZSk7Ci19Ci0KIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICA6
IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBlKGNvbnRlbnRUeXBlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmggYi9Tb3VyY2UvV2ViQ29yZS9m
aWxlYXBpL0Jsb2IuaAppbmRleCBlNDI1MWIyZTZjYTRlYWQwNjBjNWJmNjM1ZWQ1NGQxN2M5MzQ3
M2Q0Li5mZDE3OWUwNjIxMTZlMjQ0M2RlMTI4NDM1ZGVkYWU4NzMwNjVlYTQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2IuaApAQCAtNzUsMTMgKzc1LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYmxv
YjsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1ZmZlciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gYmxvYiA9IGFkb3B0UmVmKCpuZXcg
QmxvYihjb250ZXh0LCBidWZmZXIsIGNvbnRlbnRUeXBlKSk7Ci0gICAgICAgIGJsb2ItPnN1c3Bl
bmRJZk5lZWRlZCgpOwotICAgICAgICByZXR1cm4gYmxvYjsKLSAgICB9Ci0KICAgICBzdGF0aWMg
UmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBWZWN0b3I8
dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIHsKICAgICAg
ICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRleHQsIFdURk1vdmUoZGF0YSks
IGNvbnRlbnRUeXBlKSk7CkBAIC0xMzEsNyArMTI0LDYgQEAgcHVibGljOgogcHJvdGVjdGVkOgog
ICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZlY3RvcjxCbG9iUGFydFZhcmlh
bnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYpOwotICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUp
OwogICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFZlY3Rvcjx1aW50OF90PiYmLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogICAgIGVudW0gUmVmZXJlbmNpbmdFeGlzdGlu
Z0Jsb2JDb25zdHJ1Y3RvciB7IHJlZmVyZW5jaW5nRXhpc3RpbmdCbG9iQ29uc3RydWN0b3IgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuY3BwCmluZGV4IDdmY2Iz
ZWUyNzIyM2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUuLjRiMzlhZjdlMDQwYjZhMmJkZjE2
ZGU3NmI2YTIwMWJmMzFhNTVmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkv
TmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9OZXR3b3Jr
U2VuZFF1ZXVlLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OnBy
b2Nlc3NNZXNzYWdlcygpCiAgICAgICAgIHN3aXRjaE9uKG1fcXVldWUuZmlyc3QoKSwgW3RoaXNd
KGNvbnN0IENTdHJpbmcmIHV0ZjgpIHsKICAgICAgICAgICAgIG1fd3JpdGVTdHJpbmcodXRmOCk7
CiAgICAgICAgIH0sIFt0aGlzXShSZWY8U2hhcmVkQnVmZmVyPiYgZGF0YSkgewotICAgICAgICAg
ICAgbV93cml0ZVJhd0RhdGEoZGF0YS0+ZGF0YSgpLCBkYXRhLT5zaXplKCkpOworICAgICAgICAg
ICAgZGF0YS0+Zm9yRWFjaFNlZ21lbnQobV93cml0ZVJhd0RhdGEpOwogICAgICAgICB9LCBbdGhp
cywgJnNob3VsZFN0b3BQcm9jZXNzaW5nXShVbmlxdWVSZWY8QmxvYkxvYWRlcj4mIGxvYWRlcikg
ewogICAgICAgICAgICAgYXV0byBlcnJvckNvZGUgPSBsb2FkZXItPmVycm9yQ29kZSgpOwogICAg
ICAgICAgICAgaWYgKGxvYWRlci0+aXNMb2FkaW5nKCkgfHwgKGVycm9yQ29kZSAmJiBlcnJvckNv
ZGUudmFsdWUoKSA9PSBBYm9ydEVycm9yKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
QXR0YWNobWVudEVsZW1lbnQuY3BwCmluZGV4IDQ5NmI0MTE0ZTc5YjUwOTQ2Y2VjYTA2NTZkMGFk
OGNmMjA2OTM2ODUuLmIwZTlmNTIyMmNiNmUwNThlYzVmOTAwZTdhZjgwMmQwMjkwY2MwOTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAKQEAgLTIy
NiwxMCArMjI2LDEwIEBAIHN0YXRpYyBib29sIG1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUlt
YWdlQXR0YWNobWVudChjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBNSU1FVHlw
ZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWltZVR5cGUpIHx8IE1JTUVUeXBl
UmVnaXN0cnk6OmlzUERGTUlNRVR5cGUobWltZVR5cGUpOwogfQogCi12b2lkIEhUTUxBdHRhY2ht
ZW50RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGRhdGEpCit2b2lkIEhUTUxBdHRhY2htZW50
RWxlbWVudDo6dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRl
bnRUeXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKICAgICBhdXRvKiBob3N0RWxl
bWVudCA9IHNoYWRvd0hvc3QoKTsKLSAgICBpZiAoIWlzPEhUTUxJbWFnZUVsZW1lbnQ+KGhvc3RF
bGVtZW50KSB8fCAhZGF0YS0+c2l6ZSgpKQorICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4o
aG9zdEVsZW1lbnQpIHx8ICFidWZmZXItPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
U3RyaW5nIG1pbWVUeXBlID0gY29udGVudFR5cGU7CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBI
VE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xvc2luZ0ltYWdlV2l0aERhdGEoY29uc3Qg
U3RyaW5nJiBjb250ZW50VHkKICAgICBpZiAoIW1pbWVUeXBlSXNTdWl0YWJsZUZvcklubGluZUlt
YWdlQXR0YWNobWVudChtaW1lVHlwZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhvc3RFbGVt
ZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0
ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1
bWVudCgpLCBXVEZNb3ZlKGRhdGEpLCBtaW1lVHlwZSkpKTsKKyAgICBob3N0RWxlbWVudC0+c2V0
QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OnNyY0F0dHIsIERPTVVS
TDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQoKSwg
YnVmZmVyLT50YWtlRGF0YSgpLCBtaW1lVHlwZSkpKTsKIH0KIAogdm9pZCBIVE1MQXR0YWNobWVu
dEVsZW1lbnQ6OnVwZGF0ZVRodW1ibmFpbChjb25zdCBSZWZQdHI8SW1hZ2U+JiB0aHVtYm5haWwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggZDRmNzg3M2U4NWY5MTMxNjAxMmI5NDQwODRmOTIwOTc2
MDFlMDY2ZC4uOGFjMGFhM2VmZDk0ZmUyYzY3MzM1ZjE2ZDAyNjY3NjE3NWViMzhiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcApAQCAtNTQ3LDcgKzU0Nyw5IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0Fn
ZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVu
CiAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVx
dWVzdElkLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNl
RGF0YS0+YmFzZTY0RW5jb2RlZCgpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVz
b3VyY2VEYXRhLT5oYXNCdWZmZXJlZERhdGEoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gcHJl
dmlvdXNCdWZmZXIgPSBwcmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7Ci0gICAgICAgICAg
ICAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHBy
ZXZpb3VzQnVmZmVyLT5kYXRhKCksIHByZXZpb3VzQnVmZmVyLT5zaXplKCkpOworICAgICAgICAg
ICAgICAgIHByZXZpb3VzQnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oY29uc3QgdWludDhfdCog
ZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIGRhdGEsIHNpemUpOworICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXNv
dXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoUHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjptaW1l
VHlwZUtleSwgcHJldmlvdXNSZXNvdXJjZURhdGEtPm1pbWVUeXBlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5kZXggZGY2N2MxNTQ0ODQ0ODI3NzM5YWQzZTI3
YzBjMzY5NzIzYWU3OTM5MS4uM2ZhZTE2NjBjNTg1MDM5MzQwZmFhZWMzMzgxODA0MzI3MjE2NmI2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMTAyLDgg
KzExMDIsMTEgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xp
Y3koUG9saWN5QWN0aW9uIHBvbGljeSkKIAogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vi
c3RpdHV0ZURhdGEuaXNWYWxpZCgpICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAg
ICAgIGF1dG8gY29udGVudCA9IG1fc3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwotICAgICAgICBp
ZiAoY29udGVudCAmJiBjb250ZW50LT5zaXplKCkpCi0gICAgICAgICAgICBkYXRhUmVjZWl2ZWQo
Y29udGVudC0+ZGF0YSgpLCBjb250ZW50LT5zaXplKCkpOworICAgICAgICBpZiAoY29udGVudCAm
JiBjb250ZW50LT5zaXplKCkpIHsKKyAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50
KFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICAgICAgICAg
IGRhdGFSZWNlaXZlZChkYXRhLCBzaXplKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAg
ICAgICAgIGlmIChpc0xvYWRpbmdNYWluUmVzb3VyY2UoKSkKICAgICAgICAgICAgIGZpbmlzaGVk
TG9hZGluZygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCmluZGV4IDc5NzlkOTljODkyNGFlNmY3ZmNiNjFhNWI5NzM5ODFjYjMw
MzQ5NjEuLjJjYmM3NTVhZjBjMTBhMzQwNTVlZGRjNWVlYTgzZTcyMjNlOTFlODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBA
IC00ODEsMTQgKzQ4MSwyMCBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCiAKICAgICAgICAgaWYgKG9wdGlv
bnMoKS5maWx0ZXJpbmdQb2xpY3kgPT0gUmVzcG9uc2VGaWx0ZXJpbmdQb2xpY3k6OkRpc2FibGUp
IHsKICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwg
cmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkp
Ci0gICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJl
c291cmNlQnVmZmVyKCktPmRhdGEoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6
ZSgpKTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJj
ZUJ1ZmZlcigpKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKGRhdGEsIHNpemUpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKHJl
c3BvbnNlLnR5cGUoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpUeXBlOjpEZWZhdWx0KTsKIAogICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZShpZGVudGlmaWVyLCBSZXNvdXJj
ZVJlc3BvbnNlOjpmaWx0ZXIocmVzcG9uc2UsIG1fb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRj
aE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpJbmNsdWRlID8gUmVzb3VyY2VSZXNwb25zZTo6UGVyZm9y
bUV4cG9zZUFsbEhlYWRlcnNDaGVjazo6Tm8gOiBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhw
b3NlQWxsSGVhZGVyc0NoZWNrOjpZZXMpKTsKLSAgICAgICAgICAgIGlmIChtX3Jlc291cmNlLT5y
ZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0
YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRhKCksIG1fcmVzb3VyY2UtPnJlc291
cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBpZiAoYXV0byogYnVmZmVyID0gbV9y
ZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgeworICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9y
RWFjaFNlZ21lbnQoWyZdKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YShkYXRhLCBzaXplKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAt
NjQ5LDggKzY1NSwxMSBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIH0KICAgICBkaWRS
ZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgcmVzcG9uc2UpOwogCi0gICAgaWYgKGRhdGEpCi0g
ICAgICAgIGRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6
ZSgpKTsKKyAgICBpZiAoZGF0YSkgeworICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChbJl0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAgIGRpZFJlY2Vp
dmVEYXRhKGlkZW50aWZpZXIsIGRhdGEsIHNpemUpOworICAgICAgICB9KTsKKyAgICB9CiAKICAg
ICBjb25zdCBhdXRvKiB0aW1pbmcgPSByZXNwb25zZS5kZXByZWNhdGVkTmV0d29ya0xvYWRNZXRy
aWNzT3JOdWxsKCk7CiAgICAgYXV0byByZXNvdXJjZVRpbWluZyA9IFJlc291cmNlVGltaW5nOjpm
cm9tU3luY2hyb25vdXNMb2FkKHJlcXVlc3RVUkwsIG1fb3B0aW9ucy5pbml0aWF0b3IsIGxvYWRU
aW1pbmcsIHRpbWluZyA/ICp0aW1pbmcgOiBOZXR3b3JrTG9hZE1ldHJpY3MgeyB9LCByZXNwb25z
ZSwgc2VjdXJpdHlPcmlnaW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCBhZGFlNjQwMGZjNGIzMzhiYzdiYzVi
ODY5YTI0NWIyZTkwYWI0NGM1Li43OTJhZjJjMGFkNTY0ODBhZjI4NjVmMDE0YjNlOWIzMjRiMGMy
Njg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlci5jcHAKQEAgLTE1NSw4ICsxNTUsMTQgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCB1aW50OF90KiBkYXRhLCBp
bnQKIHsKICAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZURhdGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZm
ZXItPnNpemUoKSA6IGxlbmd0aCk7CisgICAgaWYgKG1fY2xpZW50KSB7CisgICAgICAgIGlmIChi
dWZmZXIpIHsKKyAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGNvbnN0IHVp
bnQ4X3QqIHNlZ21lbnREYXRhLCBzaXplX3Qgc2VnbWVudFNpemUpIHsKKyAgICAgICAgICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgc2VnbWVudERhdGEsIHNlZ21lbnRTaXpl
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBkYXRhLCBsZW5ndGgpOworICAgIH0KIAogICAgIFJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgV1RGTW92ZShi
dWZmZXIpLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAK
aW5kZXggY2U2NDk1ODFlOWI0YjRlMTYyNjg3N2IxOTFmYmYyYWQ5NjQyMWU3ZC4uMmZhYzI1MzRi
MTEzNDgyNmEyNjlhNTVhZGU4OTk4ZmFkMTdmZTNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5jcHAKQEAgLTE1NCw0ICsx
NTQsMTUgQEAgUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RG
b3JCeXRlcyhSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWcKICAgICByZXR1cm4geyBhbGdvcml0aG0s
IGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OwogfQogCitSZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0
b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFNoYXJlZEJ1ZmZlciog
YnVmZmVyKQoreworICAgIGF1dG8gY3J5cHRvRGlnZXN0ID0gUEFMOjpDcnlwdG9EaWdlc3Q6OmNy
ZWF0ZSh0b0NyeXB0b0RpZ2VzdEFsZ29yaXRobShhbGdvcml0aG0pKTsKKyAgICBpZiAoYnVmZmVy
KSB7CisgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGNvbnN0IHVpbnQ4X3QqIGRh
dGEsIHNpemVfdCBzaXplKSB7CisgICAgICAgICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVzKGRh
dGEsIHNpemUpOworICAgICAgICB9KTsKKyAgICB9CisgICAgcmV0dXJuIHsgYWxnb3JpdGhtLCBj
cnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCmluZGV4IGZjYzBiMDQ0
YWFhMjRlNWVhN2ExMWNlYWMxZmY3ZWJhNTM0OTAwYmMuLmFlYTNkYzU3Yzg3ODMxMzAxM2E1YjE2
YzkzOWI3NzRlZDQ4NDMyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkUmVzb3VyY2U7CitjbGFzcyBTaGFyZWRCdWZmZXI7CiAK
IHN0cnVjdCBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgewogICAgIGVudW0gY2xhc3MgQWxn
b3JpdGhtIHsKQEAgLTc0LDYgKzc1LDcgQEAgc3RkOjpvcHRpb25hbDxFbmNvZGVkUmVzb3VyY2VD
cnlwdG9ncmFwaGljRGlnZXN0PiBwYXJzZUVuY29kZWRDcnlwdG9ncmFwaGljRGlnZXMKIAogc3Rk
OjpvcHRpb25hbDxSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IGRlY29kZUVuY29kZWRSZXNv
dXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QoY29uc3QgRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhp
Y0RpZ2VzdCYpOwogCitSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5cHRvZ3JhcGhpY0Rp
Z2VzdEZvclNoYXJlZEJ1ZmZlcihSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q6OkFsZ29yaXRo
bSwgY29uc3QgU2hhcmVkQnVmZmVyKik7CiBSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QgY3J5
cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdDo6QWxn
b3JpdGhtLCBjb25zdCB2b2lkKiBieXRlcywgc2l6ZV90IGxlbmd0aCk7CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwCmluZGV4IDRkMGM2OTBi
Mjc2MmFhOTBlNzFlYTM4N2YzYTNkODBmNjQxMzhiZWUuLmM1MjA4MWI0MjE2N2JhODBjMjc1NzA4
Y2JkOTk2ZDg3YTg1NDQyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJy
ZXNvdXJjZUludGVncml0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291
cmNlSW50ZWdyaXR5LmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIGJvb2wgbWF0Y2hJbnRlZ3JpdHlN
ZXRhZGF0YShjb25zdCBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UsIGNvbnN0IFN0cmluZyYgaW50
ZWdyCiAgICAgICAgIGF1dG8gZXhwZWN0ZWRWYWx1ZSA9IGRlY29kZUVuY29kZWRSZXNvdXJjZUNy
eXB0b2dyYXBoaWNEaWdlc3QoaXRlbSk7CiAKICAgICAgICAgLy8gMy4gTGV0IGFjdHVhbFZhbHVl
IGJlIHRoZSByZXN1bHQgb2YgYXBwbHlpbmcgYWxnb3JpdGhtIHRvIHJlc3BvbnNlLgotICAgICAg
ICBhdXRvIGFjdHVhbFZhbHVlID0gY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvckJ5dGVzKGFsZ29yaXRo
bSwgc2hhcmVkQnVmZmVyID8gc2hhcmVkQnVmZmVyLT5kYXRhKCkgOiBudWxscHRyLCBzaGFyZWRC
dWZmZXIgPyBzaGFyZWRCdWZmZXItPnNpemUoKSA6IDApOworICAgICAgICBhdXRvIGFjdHVhbFZh
bHVlID0gY3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNoYXJlZEJ1ZmZlcihhbGdvcml0aG0sIHNoYXJl
ZEJ1ZmZlcik7CiAKICAgICAgICAgLy8gNC4gSWYgYWN0dWFsVmFsdWUgaXMgYSBjYXNlLXNlbnNp
dGl2ZSBtYXRjaCBmb3IgZXhwZWN0ZWRWYWx1ZSwgcmV0dXJuIHRydWUuCiAgICAgICAgIGlmIChl
eHBlY3RlZFZhbHVlICYmIGFjdHVhbFZhbHVlLnZhbHVlID09IGV4cGVjdGVkVmFsdWUtPnZhbHVl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAppbmRleCBmMjY0ZjFkZDcxMjNkNjkyYzY1N2YxZWNlMTQ5OTRjNDE5
NjMzNDVhLi43YzNhY2ViYTcyZDUyYTQ2ODZiNWIzYjM2Yzc3ZDVmYWVmMzI3YjRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcApAQCAtNTk1LDkgKzU5NSw4IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAgICAgICBBcHBsaWNhdGlvbkNhY2hlUmVz
b3VyY2UqIG5ld2VzdE1hbmlmZXN0ID0gbV9uZXdlc3RDYWNoZS0+bWFuaWZlc3RSZXNvdXJjZSgp
OwogICAgICAgICBBU1NFUlQobmV3ZXN0TWFuaWZlc3QpOwogICAgIAotICAgICAgICBpZiAoIW1f
bWFuaWZlc3RSZXNvdXJjZSB8fCAvLyBUaGUgcmVzb3VyY2Ugd2lsbCBiZSBudWxsIGlmIEhUVFAg
cmVzcG9uc2Ugd2FzIDMwNCBOb3QgTW9kaWZpZWQuCi0gICAgICAgICAgICAobmV3ZXN0TWFuaWZl
c3QtPmRhdGEoKS5zaXplKCkgPT0gbV9tYW5pZmVzdFJlc291cmNlLT5kYXRhKCkuc2l6ZSgpICYm
ICFtZW1jbXAobmV3ZXN0TWFuaWZlc3QtPmRhdGEoKS5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJj
ZS0+ZGF0YSgpLmRhdGEoKSwgbmV3ZXN0TWFuaWZlc3QtPmRhdGEoKS5zaXplKCkpKSkgewotCisg
ICAgICAgIC8vIFRoZSByZXNvdXJjZSB3aWxsIGJlIG51bGwgaWYgSFRUUCByZXNwb25zZSB3YXMg
MzA0IE5vdCBNb2RpZmllZC4KKyAgICAgICAgaWYgKCFtX21hbmlmZXN0UmVzb3VyY2UgfHwgbmV3
ZXN0TWFuaWZlc3QtPmRhdGEoKSA9PSBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKSkgewogICAg
ICAgICAgICAgbV9jb21wbGV0aW9uVHlwZSA9IE5vVXBkYXRlOwogICAgICAgICAgICAgbV9tYW5p
ZmVzdFJlc291cmNlID0gbnVsbHB0cjsKICAgICAgICAgICAgIGRlbGl2ZXJEZWxheWVkTWFpblJl
c291cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKaW5kZXggYjdjMzA5MTdjZDdkYTExZmZmMjk5
ZGJiNjc1OWY1YjdlOGE2ZDE3YS4uN2NjNzkzNzVhYzhjM2QxZmJhZDQ5NzA4M2JjZGMwZjc0YTA0
NzczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCkBAIC0xMjkyLDcgKzEyOTIsMTAgQEAgYm9vbCBB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6d3JpdGVEYXRhVG9VbmlxdWVGaWxlSW5EaXJlY3Rvcnko
U2hhcmVkQnVmZmVyJiBkYXQKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIAotICAgIGludDY0X3Qgd3JpdHRlbkJ5dGVzID0gRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoaGFuZGxlLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGludDY0X3Qgd3JpdHRl
bkJ5dGVzID0gMDsKKyAgICBkYXRhLmZvckVhY2hTZWdtZW50KFsmXShjb25zdCB1aW50OF90KiBk
YXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICB3cml0dGVuQnl0ZXMgKz0gRmlsZVN5c3RlbTo6
d3JpdGVUb0ZpbGUoaGFuZGxlLCBkYXRhLCBzaXplKTsKKyAgICB9KTsKICAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRlbkJ5dGVzICE9IHN0YXRp
Y19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggMjE5MmYxNTIwYWEzOWIxN2Jl
OWJmMDJkZTg0ODA5MjNkZDg2MmU3MC4uNmYwODYwMGYyYjA5MGVhNTFkMTE0Y2EzZTlkYWUyZTc3
ZDAxODFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJh
d1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3
UmVzb3VyY2UuY3BwCkBAIC0xNjcsOCArMTY3LDExIEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgYykKICAgICAgICAgYXV0byByZXNw
b25zZVByb2Nlc3NlZEhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIGNsaWVudF0gewogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVu
dCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKG1fZGF0YSkKLSAg
ICAgICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywgbV9kYXRhLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChtX2RhdGEpIHsKKyAgICAgICAgICAg
ICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50KFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhp
cywgZGF0YSwgc2l6ZSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoIWhhc0NsaWVudCgqY2xpZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KCpjbGllbnQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAppbmRleCA5MTk1OWQ2Mjk5Mzg5
MTQ5MzMzMmE4M2IyZTU4YzRiNzM3NDgxNzQzLi4yZjZlMzQ4MThhOWJhOGEwMGU4Y2FlNzBiNWJk
MDY2ODQ0NWEyNjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNw
cApAQCAtMTE0LDkgKzExNCw4IEBAIHZvaWQgSWNvbkxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2Fj
aGVkUmVzb3VyY2UmIHJlc291cmNlLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpCiAgICAgaWYgKHN0
YXR1cyAmJiAoc3RhdHVzIDwgMjAwIHx8IHN0YXR1cyA+IDI5OSkpCiAgICAgICAgIGRhdGEgPSBu
dWxscHRyOwogCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgcGRmTWFnaWNOdW1iZXJbXSA9ICIlUERG
IjsKLSAgICBzdGF0aWMgdW5zaWduZWQgcGRmTWFnaWNOdW1iZXJMZW5ndGggPSBzaXplb2YocGRm
TWFnaWNOdW1iZXIpIC0gMTsKLSAgICBpZiAoZGF0YSAmJiBkYXRhLT5zaXplKCkgPj0gcGRmTWFn
aWNOdW1iZXJMZW5ndGggJiYgIW1lbWNtcChkYXRhLT5kYXRhKCksIHBkZk1hZ2ljTnVtYmVyLCBw
ZGZNYWdpY051bWJlckxlbmd0aCkpIHsKKyAgICBjb25zdGV4cHIgdWludDhfdCBwZGZNYWdpY051
bWJlcltdID0geyAnJScsICdQJywgJ0QnLCAnRicgfTsKKyAgICBpZiAoZGF0YSAmJiBkYXRhLT5z
dGFydHNXaXRoKHBkZk1hZ2ljTnVtYmVyLCBzdGQ6OnNpemUocGRmTWFnaWNOdW1iZXIpKSkgewog
ICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiSWNvbkxvYWRlcjo6ZmluaXNoTG9hZGluZygpIC0g
SWdub3JpbmcgaWNvbiBhdCAlcyBiZWNhdXNlIGl0IGFwcGVhcnMgdG8gYmUgYSBQREYiLCBtX3Jl
c291cmNlLT51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIGRhdGEgPSBu
dWxscHRyOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCmlu
ZGV4IDAwNDBhOGE2MTE4N2ZiMGU0OWU4NmYzMzcwYmI4ZjgyMzc3NWFmYzUuLmFmMGI0YjViNGQ0
OWZhOThiNWZjYjc5YzI0MTBhMzlmMjBjNzliYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2hhcmVkQnVmZmVyLmNwcApAQCAtODYsNiArODYsMTYgQEAgUmVmPFNoYXJlZEJ1ZmZlcj4gU2hh
cmVkQnVmZmVyOjpjcmVhdGUoVmVjdG9yPHVpbnQ4X3Q+JiYgdmVjdG9yKQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihXVEZNb3ZlKHZlY3RvcikpKTsKIH0KIAorc3RhdGlj
IFZlY3Rvcjx1aW50OF90PiBjb21iaW5lU2VnbWVudHNEYXRhKGNvbnN0IFNoYXJlZEJ1ZmZlcjo6
RGF0YVNlZ21lbnRWZWN0b3ImIHNlZ21lbnRzLCBzaXplX3Qgc2l6ZSkKK3sKKyAgICBWZWN0b3I8
dWludDhfdD4gY29tYmluZWREYXRhOworICAgIGNvbWJpbmVkRGF0YS5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHNpemUpOworICAgIGZvciAoYXV0byYgc2VnbWVudCA6IHNlZ21lbnRzKQorICAgICAg
ICBjb21iaW5lZERhdGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNl
Z21lbnQtPnNpemUoKSk7CisgICAgQVNTRVJUKGNvbWJpbmVkRGF0YS5zaXplKCkgPT0gc2l6ZSk7
CisgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKK30KKwogdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJp
bmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTk2LDEx
ICsxMDYsNyBAQCB2b2lkIFNoYXJlZEJ1ZmZlcjo6Y29tYmluZUludG9PbmVTZWdtZW50KCkgY29u
c3QKICAgICBpZiAobV9zZWdtZW50cy5zaXplKCkgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKLSAgICBjb21iaW5lZERhdGEucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShtX3NpemUpOwotICAgIGZvciAoY29uc3QgYXV0byYgc2VnbWVudCA6
IG1fc2VnbWVudHMpCi0gICAgICAgIGNvbWJpbmVkRGF0YS5hcHBlbmQoc2VnbWVudC5zZWdtZW50
LT5kYXRhKCksIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKLSAgICBBU1NFUlQoY29tYmluZWRE
YXRhLnNpemUoKSA9PSBtX3NpemUpOworICAgIGF1dG8gY29tYmluZWREYXRhID0gY29tYmluZVNl
Z21lbnRzRGF0YShtX3NlZ21lbnRzLCBtX3NpemUpOwogICAgIG1fc2VnbWVudHMuY2xlYXIoKTsK
ICAgICBtX3NlZ21lbnRzLmFwcGVuZCh7MCwgRGF0YVNlZ21lbnQ6OmNyZWF0ZShXVEZNb3ZlKGNv
bWJpbmVkRGF0YSkpfSk7CiAgICAgQVNTRVJUKG1fc2VnbWVudHMuc2l6ZSgpID09IDEpOwpAQCAt
MTA5LDEzICsxMTUsMjggQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNvbWJpbmVJbnRvT25lU2VnbWVu
dCgpIGNvbnN0CiAKIGNvbnN0IHVpbnQ4X3QqIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIGNvbnN0CiB7
Ci0gICAgaWYgKCFtX3NlZ21lbnRzLnNpemUoKSkKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIGNvbWJpbmVJbnRvT25lU2VnbWVudCgp
OwogICAgIEFTU0VSVChpbnRlcm5hbGx5Q29uc2lzdGVudCgpKTsKICAgICByZXR1cm4gbV9zZWdt
ZW50c1swXS5zZWdtZW50LT5kYXRhKCk7CiB9CiAKK1ZlY3Rvcjx1aW50OF90PiBTaGFyZWRCdWZm
ZXI6OnRha2VEYXRhKCkKK3sKKyAgICBpZiAobV9zZWdtZW50cy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiB7IH07CisKKyAgICBWZWN0b3I8dWludDhfdD4gY29tYmluZWREYXRhOworICAgIGlm
IChoYXNPbmVTZWdtZW50KCkgJiYgV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxWZWN0b3I8dWludDhf
dD4+KG1fc2VnbWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSkKKyAgICAgICAgY29t
YmluZWREYXRhID0gc3RkOjpleGNoYW5nZShXVEY6OmdldDxWZWN0b3I8dWludDhfdD4+KG1fc2Vn
bWVudHNbMF0uc2VnbWVudC0+bV9pbW11dGFibGVEYXRhKSwgVmVjdG9yPHVpbnQ4X3Q+KCkpOwor
ICAgIGVsc2UKKyAgICAgICAgY29tYmluZWREYXRhID0gY29tYmluZVNlZ21lbnRzRGF0YShtX3Nl
Z21lbnRzLCBtX3NpemUpOworCisgICAgY2xlYXIoKTsKKyAgICByZXR1cm4gY29tYmluZWREYXRh
OworfQorCiBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRCdWZmZXI6OmdldFNvbWVEYXRhKHNp
emVfdCBwb3NpdGlvbikgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChwb3NpdGlvbiA8IG1f
c2l6ZSk7CkBAIC0xMzAsMTAgKzE1MSwxMCBAQCBTaGFyZWRCdWZmZXJEYXRhVmlldyBTaGFyZWRC
dWZmZXI6OmdldFNvbWVEYXRhKHNpemVfdCBwb3NpdGlvbikgY29uc3QKIFN0cmluZyBTaGFyZWRC
dWZmZXI6OnRvSGV4U3RyaW5nKCkgY29uc3QKIHsKICAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1
aWxkZXI7Ci0gICAgZm9yICh1bnNpZ25lZCBieXRlT2Zmc2V0ID0gMDsgYnl0ZU9mZnNldCA8IHNp
emUoKTsgYnl0ZU9mZnNldCsrKSB7Ci0gICAgICAgIGNvbnN0IHVpbnQ4X3QgYnl0ZSA9IGRhdGEo
KVtieXRlT2Zmc2V0XTsKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGFkKCcwJywgMiwg
aGV4KGJ5dGUpKSk7Ci0gICAgfQorICAgIGZvckVhY2hTZWdtZW50KFsmXShjb25zdCB1aW50OF90
KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQorICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQocGFkKCcwJywgMiwg
aGV4KGRhdGFbaV0pKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJp
bmcoKTsKIH0KIApAQCAtMjA1LDYgKzIyNiw0OCBAQCBSZWY8U2hhcmVkQnVmZmVyPiBTaGFyZWRC
dWZmZXI6OmNvcHkoKSBjb25zdAogICAgIHJldHVybiBjbG9uZTsKIH0KIAordm9pZCBTaGFyZWRC
dWZmZXI6OmZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgdWludDhfdCos
IHNpemVfdCk+JiBhcHBseSkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIHNlZ21lbnQgOiBtX3Nl
Z21lbnRzKQorICAgICAgICBhcHBseShzZWdtZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5z
ZWdtZW50LT5zaXplKCkpOworfQorCitib29sIFNoYXJlZEJ1ZmZlcjo6c3RhcnRzV2l0aChjb25z
dCB1aW50OF90KiBwcmVmaXgsIHNpemVfdCBwcmVmaXhTaXplKSBjb25zdAoreworICAgIGlmICgh
cHJlZml4U2l6ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoc2l6ZSgpIDwgcHJl
Zml4U2l6ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2l6ZV90IHJlbWFpbmluZyA9
IHByZWZpeFNpemU7CisgICAgZm9yIChhdXRvJiBzZWdtZW50IDogbV9zZWdtZW50cykgeworICAg
ICAgICBzaXplX3QgYW1vdW50VG9Db21wYXJlVGhpc1RpbWUgPSBzdGQ6Om1pbihyZW1haW5pbmcs
IHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKKyAgICAgICAgaWYgKG1lbWNtcChwcmVmaXgsIHNl
Z21lbnQuc2VnbWVudC0+ZGF0YSgpLCBhbW91bnRUb0NvbXBhcmVUaGlzVGltZSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJlbWFpbmluZyAtPSBhbW91bnRUb0NvbXBhcmVU
aGlzVGltZTsKKyAgICAgICAgaWYgKCFyZW1haW5pbmcpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgcHJlZml4ICs9IGFtb3VudFRvQ29tcGFyZVRoaXNUaW1lOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgU2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVz
dGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBz
aXplKCkpOworICAgIGF1dG8gZGVzdGluYXRpb25QdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
ZGVzdGluYXRpb24pOworICAgIGF1dG8gcmVtYWluaW5nID0gc3RkOjptaW4obGVuZ3RoLCBzaXpl
KCkpOworICAgIGZvciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpIHsKKyAgICAgICAgc2l6
ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0gc3RkOjptaW4ocmVtYWluaW5nLCBzZWdtZW50LnNl
Z21lbnQtPnNpemUoKSk7CisgICAgICAgIG1lbWNweShkZXN0aW5hdGlvblB0ciwgc2VnbWVudC5z
ZWdtZW50LT5kYXRhKCksIGFtb3VudFRvQ29weVRoaXNUaW1lKTsKKyAgICAgICAgcmVtYWluaW5n
IC09IGFtb3VudFRvQ29weVRoaXNUaW1lOworICAgICAgICBpZiAoIXJlbWFpbmluZykKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgZGVzdGluYXRpb25QdHIgKz0gYW1vdW50VG9Db3B5VGhp
c1RpbWU7CisgICAgfQorfQorCiBib29sIFNoYXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNv
bnN0CiB7CiAgICAgYXV0byBpdCA9IGJlZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCmluZGV4IDdkYzMxYzczOTJjY2VlZWViYjI2M2IyNGE5YTMyZDczMWRkMGE4NzEu
LmExYzAzZjFiZGQ3MzJjNTBjNmU1MmIzMjNhMzA5YjhjNGZlZTM3NzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBAIC0xMDAsNiArMTAwLDEwIEBAIHB1YmxpYzoKICAg
ICAvLyBGSVhNRTogQXVkaXQgdGhlIGNhbGwgc2l0ZXMgb2YgdGhpcyBmdW5jdGlvbiBhbmQgcmVw
bGFjZSB0aGVtIHdpdGggaXRlcmF0aW9uIGlmIHBvc3NpYmxlLgogICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEoKSBjb25zdDsKICAgICBjb25zdCBjaGFyKiBkYXRhQXNDaGFyUHRyKCkgY29uc3QgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oZGF0YSgpKTsgfQorICAgIFZlY3Rv
cjx1aW50OF90PiBkYXRhQXNWZWN0b3IoKSB7IHJldHVybiB7IGRhdGEoKSwgc2l6ZSgpIH07IH0K
KworICAgIC8vIENvbWJpbmVzIGFsbCB0aGUgc2VnbWVudHMgaW50byBhIFZlY3RvciBhbmQgcmV0
dXJucyB0aGF0IHZlY3RvciBhZnRlciBjbGVhcmluZyB0aGUgU2hhcmVkQnVmZmVyLgorICAgIFZl
Y3Rvcjx1aW50OF90PiB0YWtlRGF0YSgpOwogCiAgICAgLy8gQ3JlYXRlcyBhbiBBcnJheUJ1ZmZl
ciBhbmQgY29waWVzIHRoaXMgU2hhcmVkQnVmZmVyJ3MgY29udGVudHMgdG8gdGhhdAogICAgIC8v
IEFycmF5QnVmZmVyIHdpdGhvdXQgbWVyZ2luZyBzZWdtZW50ZWQgYnVmZmVycyBpbnRvIGEgZmxh
dCBidWZmZXIuCkBAIC0xMTcsNiArMTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoKTsK
IAogICAgIFJlZjxTaGFyZWRCdWZmZXI+IGNvcHkoKSBjb25zdDsKKyAgICB2b2lkIGNvcHlUbyh2
b2lkKiBkZXN0aW5hdGlvbiwgc2l6ZV90IGxlbmd0aCkgY29uc3Q7CiAKICAgICAvLyBEYXRhIHdy
YXBwZWQgYnkgYSBEYXRhU2VnbWVudCBzaG91bGQgYmUgaW1tdXRhYmxlIGJlY2F1c2UgaXQgY2Fu
IGJlIHJlZmVyZW5jZWQgYnkgb3RoZXIgb2JqZWN0cy4KICAgICAvLyBUbyBtb2RpZnkgb3IgY29t
YmluZSB0aGUgZGF0YSwgYWxsb2NhdGUgYSBuZXcgRGF0YVNlZ21lbnQuCkBAIC0xODAsNiArMTg1
LDkgQEAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyOwogICAgIH07
CiAKKyAgICB2b2lkIGZvckVhY2hTZWdtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoY29uc3QgdWlu
dDhfdCosIHNpemVfdCk+JikgY29uc3Q7CisgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IHVpbnQ4
X3QqIHByZWZpeCwgc2l6ZV90IHByZWZpeFNpemUpIGNvbnN0OworCiAgICAgc3RydWN0IERhdGFT
ZWdtZW50VmVjdG9yRW50cnkgewogICAgICAgICBzaXplX3QgYmVnaW5Qb3NpdGlvbjsKICAgICAg
ICAgUmVmPERhdGFTZWdtZW50PiBzZWdtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2YvU2hhcmVkQnVmZmVyQ0YuY3BwCmluZGV4IDg5NWViZTA1MWYxNTJhN2E4M2E0NWM3YjkwZGRj
MGMyNzBhNDllZTEuLjJkNWIzMzVmYjRjNGJkZjhmN2Q1MTc4MmQwZjM1ZmY5ZDFiNTYxOWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZmZXJDRi5jcHAKQEAgLTQ3
LDcgKzQ3LDExIEBAIFJldGFpblB0cjxDRkRhdGFSZWY+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlQ0ZE
YXRhKCkgY29uc3QKICAgICAgICAgaWYgKGF1dG8gZGF0YSA9IFdURjo6Z2V0X2lmPFJldGFpblB0
cjxDRkRhdGFSZWY+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0YSkpCiAg
ICAgICAgICAgICByZXR1cm4gKmRhdGE7CiAgICAgfQotICAgIHJldHVybiBhZG9wdENGKENGRGF0
YUNyZWF0ZShudWxscHRyLCBkYXRhKCksIHNpemUoKSkpOworICAgIGF1dG8gY2ZEYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKG51bGxwdHIsIHNpemUoKSkpOworICAgIGZvckVhY2hT
ZWdtZW50KFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICBD
RkRhdGFBcHBlbmRCeXRlcyhjZkRhdGEuZ2V0KCksIGRhdGEsIHNpemUpOworICAgIH0pOworICAg
IHJldHVybiBjZkRhdGE7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcAppbmRleCBlZTZhNWQyZWVkNmEzZjk3ZTc0NjhjYWI5NmU5ZWUzNGQ2
YjgzMDZlLi4xMzU0YmRiZWRkNjExNmMyMDlmYjU0YTYzZTE5NDIyNTNjYjNhNThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtNzc0LDcgKzc3NCw3
IEBAIHZvaWQgSXRlbUJ1ZmZlcjo6YXBwZW5kKGNvbnN0IERpc3BsYXlMaXN0SXRlbSYgdGVtcG9y
YXJ5SXRlbSkKICAgICBpZiAocmVxdWlyZWRTaXplRm9ySXRlbSkKICAgICAgICAgbV93cml0aW5n
Q2xpZW50LT5lbmNvZGVJdGVtSW5saW5lKHRlbXBvcmFyeUl0ZW0sIGxvY2F0aW9uKTsKICAgICBl
bHNlCi0gICAgICAgIG1lbWNweShsb2NhdGlvbiwgb3V0T2ZMaW5lSXRlbS0+ZGF0YSgpLCBkYXRh
TGVuZ3RoKTsKKyAgICAgICAgb3V0T2ZMaW5lSXRlbS0+Y29weVRvKGxvY2F0aW9uLCBkYXRhTGVu
Z3RoKTsKIAogICAgIGRpZEFwcGVuZERhdGEoYWRkaXRpb25hbENhcGFjaXR5Rm9yRW5jb2RlZEl0
ZW0sIGJ1ZmZlckNoYW5nZWQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFn
ZS5jcHAKaW5kZXggMDA5NGY0N2Q0NjQwMWQ1OWFjYjg1Zjc2NTQzZGE2MmQ3MzhjMGZlNi4uZmY0
M2FlMTUxZTFiZjU5MTkyOTEyZGUzN2RjOTU2MzFkYzY3NzczZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCkBAIC00NjYsNyArNDY2LDkgQEAgRW5jb2RlZERhdGFT
dGF0dXMgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogICAgICAg
ICBBU1NFUlQobG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOyAvLyBEb2N1bWVudExvYWRl
ciBzaG91bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgZnJhbWUtPmluaXQoKS4KICAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLnNldE1JTUVUeXBlKCJpbWFnZS9z
dmcreG1sIik7CiAgICAgICAgIGxvYWRlci5hY3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIo
KS5iZWdpbihVUkwoKSk7IC8vIGNyZWF0ZSB0aGUgZW1wdHkgZG9jdW1lbnQKLSAgICAgICAgbG9h
ZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigpLmFkZERhdGEoZGF0YSgpLT5kYXRh
KCksIGRhdGEoKS0+c2l6ZSgpKTsKKyAgICAgICAgZGF0YSgpLT5mb3JFYWNoU2VnbWVudChbJl0o
Y29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgICAgIGxvYWRlci5h
Y3RpdmVEb2N1bWVudExvYWRlcigpLT53cml0ZXIoKS5hZGREYXRhKGRhdGEsIHNpemUpOworICAg
ICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPndyaXRlcigp
LmVuZCgpOwogCiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9T
Y3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3Bw
CmluZGV4IDUyNDlkNjdhZDJjNzYyY2JmODA5MWQ5Njc4YTVmNGZkM2I2ZmQxNTUuLmI5NDg1ZTI5
ODU2NzAxMDcwZGZiYTFlODA1OTg0M2YzZTI0OWQ5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTUzLDggKzUzLDkgQEAgU3RyaW5nIFNjcmlwdEJ1ZmZlcjo6
dG9TdHJpbmcoKSBjb25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9idWZmZXItPmJlZ2luKCk7IGl0
ICE9IG1fYnVmZmVyLT5lbmQoKTsgKytpdCkKLSAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5n
Ojpmcm9tVVRGOChpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+c2VnbWVudC0+c2l6ZSgpKSk7Cisg
ICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXpl
X3Qgc2l6ZSkgeworICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmc6OmZyb21VVEY4KGRhdGEs
IHNpemUpKTsKKyAgICB9KTsKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBlY2YwYTQ5YjMwMWRjZjkxODNj
MWVhZjk4NTAwNjAwOTBhNDQwZjJiLi4zZGRmNTdjNTg2YTZiNGYwMDAzOTFlOWZhYTE3ZjYwYWFj
MzhmYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTIwNyw4ICsy
MDcsNyBAQCBSZWY8QmxvYj4gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlc3BvbnNlQmxvYigpCiAg
ICAgLy8gRklYTUU6IFdlIGp1c3QgcmVjZWl2ZWQgdGhlIGRhdGEgZnJvbSBOZXR3b3JrUHJvY2Vz
cywgYW5kIGFyZSBzZW5kaW5nIGl0IGJhY2suIFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgVmVj
dG9yPHVpbnQ4X3Q+IGRhdGE7CiAgICAgaWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQotICAg
ICAgICBkYXRhLmFwcGVuZChtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+ZGF0YSgpLCBtX2JpbmFy
eVJlc3BvbnNlQnVpbGRlci0+c2l6ZSgpKTsKLSAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9
IG51bGxwdHI7CisgICAgICAgIGRhdGEgPSBzdGQ6OmV4Y2hhbmdlKG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLCBudWxscHRyKS0+dGFrZURhdGEoKTsKICAgICBTdHJpbmcgbm9ybWFsaXplZENvbnRl
bnRUeXBlID0gQmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHJlc3BvbnNlTUlNRVR5cGUoRmlu
YWxNSU1FVHlwZTo6WWVzKSk7IC8vIHJlc3BvbnNlTUlNRVR5cGUgZGVmYXVsdHMgdG8gdGV4dC94
bWwgd2hpY2ggbWF5IGJlIGluY29ycmVjdC4KICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShkYXRhKSwgbm9ybWFsaXplZENvbnRlbnRUeXBl
KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431041</attachid>
            <date>2021-06-09 19:16:11 -0700</date>
            <delta_ts>2021-06-09 19:41:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226857-20210609191610.patch</filename>
            <type>text/plain</type>
            <size>55857</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIyOTZhMTk5YjBhMGM3
MWVkYjkwNWNjYzA5MmJlOTdkYjk0NzcyYy4uOTg4OTEyZmM5MTUxNTc0ZmI0OTJjZjk2NTFjM2M3
NTA4OTNhMTk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wNi0wOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBzb21lIGluZWZmaWNp
ZW50IHVzZXMgb2YgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY4NTcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBGaXggc29tZSBpbmVmZmljaWVudCB1c2VzIG9mIFNoYXJlZEJ1ZmZlcjoK
KyAgICAgICAgLSBBdm9pZCBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHdoZW5ldmVyIHBv
c3NpYmxlIHNpbmNlIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgICBtYXkgaGF2ZSB0byBjb21iaW5l
IGludGVybmFsIHNlZ21lbnRzIG9mIFNoYXJlZEJ1ZmZlci4gQWRkZWQgYSBjb252ZW5pZW5jZQor
ICAgICAgICAgIGZ1bmN0aW9uIG9uIFNoYXJlZEJ1ZmZlciAoZm9yRWFjaFNlZ21lbnQoKSkgdG8g
Z2V0IHRoZSBkYXRhIHBvaW50ZXIgLyBzaXplCisgICAgICAgICAgb2YgZWFjaCBzZWdtZW50Lgor
ICAgICAgICAtIEF2b2lkIHNvbWUgdW5uZWNlc3NhcnkgY29uc3RydWN0aW9uIG9mIFNoYXJlZEJ1
ZmZlciBzaW1wbHkgdG8gZ2V0IGEgVmVjdG9yLgorICAgICAgICAgIFdlIHNob3VsZCBjb25zdHJ1
Y3QgdGhlIFZlY3RvciBkaXJlY3RseSBpbiBzdWNoIGNhc2VzLiBJIGRyb3BwZWQgdGhlCisgICAg
ICAgICAgQmxvYiBmYWN0b3J5IHRoYXQgdG9vayBpbiBhIFNoYXJlZEJ1ZmZlciBhcyBpdCB3YXMg
aW5lZmZpY2llbnQgYW5kIGZyZXF1ZW50bHkKKyAgICAgICAgICBjYWxsZWQgaW5zdGVhZCBvZiB0
aGUgbW9yZSBlZmZpY2llbnQgZmFjdG9yeSB0aGF0IHRha2VzIGluIGEgVmVjdG9yPHVpbnQ4X3Q+
LgorICAgICAgICAtIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gU2hhcmVkQnVmZmVyIHRo
YXQgcmV0dXJuIGEgVmVjdG9yLCBpbmNsdWRpbmcgb25lCisgICAgICAgICAgbmFtZWQgdGFrZURh
dGEoKSB0aGF0IGF2b2lkcyBjb3B5aW5nIHRoZSBkYXRhLgorICAgICAgICAtIEFkZCBjb252ZW5p
ZW5jZSBmdW5jdGlvbnMgdG8gU2hhcmVkQnVmZmVyIGZvciBkb2luZyBhIHByZWZpeCBjaGVjayBv
ciBjb3B5aW5nCisgICAgICAgICAgdG8gYSBkZXN0aW5hdGlvbiBwb2ludGVyLgorCisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyk6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpwYWNrYWdlRm9ybURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVdpdGhUeXBlQW5kRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJHZXRSZXN1bHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAg
ICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToKKyAg
ICAgICAgKiBlZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgICogZmlsZWFwaS9C
bG9iLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL05l
dHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1ZTo6
cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xv
c2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250
ZW50UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNo
YXJlZEJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYXRjaEludGVncml0eU1ldGFkYXRhKToKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAg
ICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29u
TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbWJpbmVTZWdtZW50c0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjp0b0hleFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmZvckVhY2hTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHlU
byBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkYXRhQ2hhbmdl
ZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogeG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorCiAyMDIxLTA2LTA5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHNjcm9sbGJhciBjcmVhdGlvbiBjb2RlIGluIFJl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKaW5kZXggZDMzM2M2MTRhNDY1
YmM2NjU1OTIyODMwZjdkOTliZGY0Y2Q1OTZlMC4uYTYyOTg2YjQ4OGJkMDc3NjIzZDkzZTE2NzE2
MjI3ODllMGYxZTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgQ2xpcGJv
YXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7CiBSZWY8QmxvYj4gQ2xpcGJvYXJk
SXRlbTo6YmxvYkZyb21TdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBzdHJpbmdEYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byB1
dGY4ID0gc3RyaW5nRGF0YS51dGY4KCk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShj
b250ZXh0LCBWZWN0b3IgeyB1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVuZ3RoKCkgfSwg
QmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBib2Fy
ZEl0ZW06OlByZXNlbnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShj
b25zdCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0KaW5kZXggMTU5ZWU4OTUwYjA0MGQ2ZDhlMjdlY2Q2OWE5NWJlMjQ4N2Yz
M2JiYS4uNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZElt
YWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzksNyArMzksNyBAQCB2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNl
KCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAg
aWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkK
LSAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YSksIG1fbWltZVR5cGUpOworICAgICAgICAgICAgbV9y
ZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1l
VHlwZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMu
bW0KaW5kZXggZDkxNGNkMGQ0MGY5M2ViZjZmMDEzZDNhNGQ0MjM5M2I3NzFmNDI0YS4uYjRjMzFj
YTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzksNyArMzksOCBAQCB2b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdQogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChh
dXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpu
aWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0
TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwot
ICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBl
Ok5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dKSwgbV9taW1lVHlwZSk7
CisgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRh
dGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsK
KyAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZl
Y3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEu
bGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA2MDY0
NGJmOTk0MTlmYjM3NzYwZDBmY2JiYzZhMDg2ZTc3NTA5OTk0Li4xNWJhMGNhMTJlMjE3MzUwYzVk
YmQ0MWU5Yzg3OWM1ZDk5YmU5MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtNDEsOSArNDEsOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tRGF0YShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGF0aWMgaW5saW5l
IFJlZjxCbG9iPiBibG9iRnJvbURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3RvciB7IGRhdGEsIGxlbmd0aCB9LCBC
bG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVudFR5cGUpKTsKKyAgICByZXR1cm4gQmxv
Yjo6Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShjb250ZW50VHlwZSkpOwogfQogCiAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3
Zy5vcmcvI2h0dHAtcXVvdGVkLXN0cmluZy10b2tlbi1jb2RlLXBvaW50CkBAIC0xNjgsNyArMTY4
LDcgQEAgc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgICAgICAgICBjb250ZW50VHlw
ZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhoZWFkZXIuc3Vic3RyaW5nKGNv
bnRlbnRUeXBlQmVnaW4gKyBjb250ZW50VHlwZVByZWZpeExlbmd0aCwgY29udGVudFR5cGVFbmQg
LSBjb250ZW50VHlwZUJlZ2luIC0gY29udGVudFR5cGVQcmVmaXhMZW5ndGgpKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgZm9ybS5hcHBlbmQobmFtZSwgRmlsZTo6Y3JlYXRlKGNvbnRl
eHQsIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShib2R5QmVnaW4s
IGJvZHlMZW5ndGgpLmdldCgpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVudFR5
cGUpKS5nZXQoKSwgZmlsZW5hbWUpLmdldCgpLCBmaWxlbmFtZSk7CisgICAgICAgICAgICBmb3Jt
LmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoY29udGV4dCwgQmxvYjo6Y3JlYXRlKGNvbnRleHQs
IFZlY3RvciB7IGJvZHlCZWdpbiwgYm9keUxlbmd0aCB9LCBCbG9iOjpub3JtYWxpemVkQ29udGVu
dFR5cGUoY29udGVudFR5cGUpKS5nZXQoKSwgZmlsZW5hbWUpLmdldCgpLCBmaWxlbmFtZSk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKQEAgLTIyMiw3ICsyMjIsNyBA
QCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRj
aEJvZHlDb25zdW1lcjo6VHlwZTo6QmxvYjoKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxi
YWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oWyZkYXRhLCAmbGVu
Z3RoLCAmY29udGVudFR5cGUsIGNvbnRleHRdKGF1dG8mKSB7Ci0gICAgICAgICAgICByZXR1cm4g
YmxvYkZyb21EYXRhKGNvbnRleHQsIGRhdGEsIGxlbmd0aCwgY29udGVudFR5cGUpOworICAgICAg
ICAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCB7IGRhdGEsIGxlbmd0aCB9LCBjb250
ZW50VHlwZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6SlNPTjoKQEAgLTM1NCw4ICszNTQsOCBAQCBSZWY8QmxvYj4gRmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRl
eHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250
ZW50VHlwZSkpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZl
ciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAgICByZXR1cm4gYmxvYkZyb21E
YXRhKGNvbnRleHQsIG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCksIG1fY29udGVu
dFR5cGUpOworICAgIGF1dG8gZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIp
LT50YWtlRGF0YSgpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShk
YXRhKSwgbV9jb250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJHZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0
UmVzdWx0LmNwcAppbmRleCBhMWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlhYzBm
Li43NjJmOTQxYjgzYjk2ZWZjZTQ2NDBmMzMxZDU1NzdhMTBkZDcyNmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTMyLDEx
ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKElEQkdldFJlc3VsdCk7CiAKLXZvaWQgSURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZm
ZXI6OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7Ci19Ci0KIElEQkdl
dFJlc3VsdDo6SURCR2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRD
b3B5VGFnKQogewogICAgIGlzb2xhdGVkQ29weSh0aGF0LCAqdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5oCmluZGV4IDhiOTliN2ZhMTUy
N2E2Zjk0OGIzOWUyODdiNjgwNGM2Mjg1ZDhhYmIuLjA2ZDYyOTFiMDA4MTZlMDI4MDliODEwNjUw
MGEwOTczNzg3YmQ0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkdldFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkdldFJlc3VsdC5oCkBAIC0xMDMsOCArMTAzLDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVj
b2RlciYsIElEQkdldFJlc3VsdCYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZGF0YUZyb21CdWZm
ZXIoU2hhcmVkQnVmZmVyJik7Ci0KICAgICBzdGF0aWMgdm9pZCBpc29sYXRlZENvcHkoY29uc3Qg
SURCR2V0UmVzdWx0JiBzb3VyY2UsIElEQkdldFJlc3VsdCYgZGVzdGluYXRpb24pOwogCiAgICAg
SURCVmFsdWUgbV92YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCA0NzVjYzg1ZjhmM2Q4NjM5ZTVmNjM2
NjBhN2RjNjJjZWY4YTdlZjY2Li4xMDYwZTJiNGFjYTJhZTliYjE1OTc5ZjlhYjJlODY1YmQ5NjQ3
NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TWVkaWFSZWNvcmRlcjo6c3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGlt
ZVNsaWMKIAogc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsK
LSAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShjb250ZXh0KTsKKyAgICBh
dXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT50YWtlRGF0
YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6
SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9
LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCBhZDllNDQ5
OTYxYzg1NDViMjBkZDdmM2ExOGMwMWRiN2RmZDRhMmJjLi41Mzc4OTdlYWIwMzE3YzExODdjMmNk
NmIzYTZiZDQwZTllNDlhY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtNzksOCArNzksOCBAQCBOZXR3b3Jr
U2VuZFF1ZXVlIFJUQ0RhdGFDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udAogICAgIHJldHVybiB7IGNvbnRleHQsIFsmY2hhbm5lbF0oYXV0byYg
dXRmOCkgewogICAgICAgICBpZiAoIWNoYW5uZWwubV9oYW5kbGVyLT5zZW5kU3RyaW5nRGF0YSh1
dGY4KSkKICAgICAgICAgICAgIGNoYW5uZWwuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgIkVy
cm9yIHNlbmRpbmcgc3RyaW5nIHRocm91Z2ggUlRDRGF0YUNoYW5uZWwuIl9zKTsKLSAgICB9LCBb
JmNoYW5uZWxdKGF1dG8qIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsKLSAgICAgICAgaWYgKCFjaGFu
bmVsLm1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGF0YSwgbGVuZ3RoKSkKKyAgICB9LCBbJmNoYW5u
ZWxdKGF1dG8mIHNwYW4pIHsKKyAgICAgICAgaWYgKCFjaGFubmVsLm1faGFuZGxlci0+c2VuZFJh
d0RhdGEoc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKSkKICAgICAgICAgICAgIGNoYW5uZWwuc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgIkVycm9yIHNlbmRpbmcgYmluYXJ5IGRhdGEgdGhyb3Vn
aCBSVENEYXRhQ2hhbm5lbC4iX3MpOwogICAgIH0sIFsmY2hhbm5lbF0oRXhjZXB0aW9uQ29kZSBl
cnJvckNvZGUpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjaGFubmVsLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkgewpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5u
ZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlUeXBl
OjpCbG9iOgotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVh
dGUoQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7IH0pKTsKKyAgICAgICAg
c2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3RvciB7IGRhdGEsIGRhdGFMZW5ndGggfSwgZW1w
dHlTdHJpbmcoKSksIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCaW5hcnlUeXBl
OjpBcnJheUJ1ZmZlcjoKICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
LmNwcAppbmRleCA1ZDA2NjQzN2E4YjRjYTQ2MzgzMTcyMTA0YjRjODEzZmFlZjJlYmU5Li4xMWM2
YTliODM2MDE4MmQyYjc5NDkwYmYwNDVjZWQ4ZWZhMDk2YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIAogdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBmaWxlcy5hcHBlbmQoRmls
ZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZm
ZXIuZ2V0KCksIHR5cGUpLCBmaWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVh
dGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+dGFr
ZURhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNzk0MjFk
OTJlYzVlNWQzNWUyNjc5YWM1NjhjM2QwMTJmMDAzYTNmMC4uOTkyZjg0ODFlMTJkZTU5ZWYwZGRj
NzMwMGE5ZDc1YTA2YjE1MGM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0
aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50
KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29u
dGVudFR5cGUsIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICBpZiAoY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRh
dGlvbihjb250ZW50VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0
ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgp
LCBjb250ZW50VHlwZSkpKTsKKyAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RV
UkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+dGFrZURhdGEoKSwg
Y29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQo
V1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0
aCkKICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRT
aXplLndpZHRoKSk7CkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3UK
ICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6Y3JlYXRlKCZkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgp
LCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAgYXR0YWNo
bWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3Vt
ZW50LCBidWZmZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNo
bWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVz
OjpZZXMpOwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50
KSk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNo
bWVudERhdGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4o
b3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJ
bWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
YXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJh
bWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCksIGluZm8uZGF0YSwg
aW5mby5jb250ZW50VHlwZSkpKTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVP
YmplY3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgp
LCBpbmZvLmRhdGEtPmNvcHlEYXRhKCksIGluZm8uY29udGVudFR5cGUpKSk7CiAgICAgICAgICAg
ICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVsZW1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVB
dHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBpbmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVO
YW1lKTsKQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRX
aXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5m
by5jb250ZW50VHlwZSksIFdURk1vdmUoaW5mby5maWxlTmFtZSksIFdURk1vdmUoaW5mby5kYXRh
KSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZp
bGU6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQo
KSwgV1RGTW92ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92
ZShpbmZvLmZpbGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0
dHJpYnV0ZXM6Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNy
ZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgaW5m
by5kYXRhLT5jb3B5RGF0YSgpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShp
bmZvLmZpbGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJp
YnV0ZXM6Olllcyk7CiAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChXVEZNb3ZlKGF0
dGFjaG1lbnQpLCBXVEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQpA
QCAtNDEwLDggKzQxMCw4IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEFuZEFkZFJlc291cmNlcyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAgICAgfQogCiAgICAg
SGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBibG9iVVJMTWFwOwotICAgIGZvciAoY29u
c3QgUmVmPEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJj
ZXMucmVzb3VyY2VzKSB7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZG9jdW1l
bnQsIHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKKyAgICBm
b3IgKGF1dG8mIHN1YnJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2VzKSB7
CisgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIHN1YnJlc291cmNl
LT5kYXRhKCkuY29weURhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBT
dHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBibG9iKTsK
ICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmluZygpLCBibG9i
VVJMKTsKICAgICB9CkBAIC00NjAsNyArNDYwLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1h
cmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0K
ICAgICAgICAgYXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7CiAgICAg
ICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNlVVJMKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRl
c3RpbmF0aW9uRG9jdW1lbnQsIHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1l
VHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkZXN0aW5hdGlvbkRv
Y3VtZW50LCBzdWJyZXNvdXJjZS0+ZGF0YSgpLmNvcHlEYXRhKCksIHN1YnJlc291cmNlLT5taW1l
VHlwZSgpKTsKICAgICAgICAgU3RyaW5nIGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVS
TChkZXN0aW5hdGlvbkRvY3VtZW50LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3Vi
cmVzb3VyY2VVUkwuc3RyaW5nKCksIGJsb2JVUkwpOwogICAgIH0KQEAgLTQ4NCwxMCArNDg0LDcg
QEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9
IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1
YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFz
SFRNTCk7CiAKICAgICAgICAgQ1N0cmluZyB1dGY4ID0gc3ViZnJhbWVNYXJrdXAudXRmOCgpOwot
ICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1ZmZlcjsKLSAgICAgICAgYmxvYkJ1ZmZlci5y
ZXNlcnZlQ2FwYWNpdHkodXRmOC5sZW5ndGgoKSk7Ci0gICAgICAgIGJsb2JCdWZmZXIuYXBwZW5k
KHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgICAgIGF1dG8gYmxv
YiA9IEJsb2I6OmNyZWF0ZSgmZGVzdGluYXRpb25Eb2N1bWVudCwgV1RGTW92ZShibG9iQnVmZmVy
KSwgdHlwZSk7CisgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZGVzdGluYXRpb25E
b2N1bWVudCwgVmVjdG9yIHsgdXRmOC5kYXRhQXNVSW50OFB0cigpLCB1dGY4Lmxlbmd0aCgpIH0s
IHR5cGUpOwogCiAgICAgICAgIFN0cmluZyBzdWJmcmFtZUJsb2JVUkwgPSBET01VUkw6OmNyZWF0
ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1h
cC5zZXQoc3ViZnJhbWVVUkwuc3RyaW5nKCksIHN1YmZyYW1lQmxvYlVSTCk7CkBAIC02ODcsNyAr
Njg0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICBpZiAoc2hvdWxkUmVwbGFjZVJp
Y2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkpCiAgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZy
YWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KGZyYW1lLCBkb2N1bWVudCwgV1RGTW92ZShidWZmZXIp
LCB0eXBlLCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CiAgICAgZWxzZQotICAgICAgICBh
ZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVy
LmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpKTsKKyAgICAgICAgYWRk
RnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpj
cmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+
dGFrZURhdGEoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CiAKICAgICBy
ZXR1cm4gZnJhZ21lbnQ7CiB9CkBAIC03NjMsNyArNzYwLDcgQEAgc3RhdGljIFJlZjxIVE1MRWxl
bWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY28KICAgICAgICAgZmlsZU5hbWUgPSBuYW1lOwogCiAgICAgaWYgKCFzdXBwb3J0c0NsaWVu
dFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0Rmls
ZShGaWxlOjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIEJsb2I6OmNyZWF0ZShkb2N1bWVudC5wdHIo
KSwgYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CisgICAgICAg
IGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpj
cmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlci5jb3B5RGF0YSgpLCBXVEZNb3ZlKGF0dGFjaG1l
bnRUeXBlKSksIGZpbGVOYW1lKSk7CiAgICAgICAgIHJldHVybiBhdHRhY2htZW50OwogICAgIH0K
IApAQCAtNzcxLDcgKzc2OCw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRG
b3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvCiAKICAgICBpZiAo
Y29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihhdHRhY2ht
ZW50VHlwZSkpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7Ci0gICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1l
bnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnB0
cigpLCBidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgV1RGTW92ZShmaWxlTmFtZSkp
KSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6
OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBidWZm
ZXIuY29weURhdGEoKSwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVOYW1l
KSkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNo
bWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAgIGlt
YWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhB
dHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXgg
Mjc0NGNkNmZlM2M2MTkwYmI4Y2E0ZTE0Njg2NDBiNDczMmIwZTQzMC4uYWFkNTFkZWFlOGVlMDRk
YzM4NzExMGE5ZTExZDJjZWViNWU2MDE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdHlwZSwKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAg
YXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKLSAgICBhZGRGcmFnbWVudChjcmVh
dGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVS
TChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgpLCB0eXBlKSks
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpKTsKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFn
bWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1
bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLT50YWtlRGF0YSgpLCB0eXBlKSks
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IGUxZWY0YWI5NDM2NjM4YTM0MzYzNzUyNDY5NjYz
MTQ1ZDg3NDdhYjguLjNmNDA5YTQ3ZWQzYjVmZDZmZDkxZTliZTdmOGYwYjYyMzZkYzdiMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtMTA4LDE3ICsxMDgsNiBAQCBCbG9iOjpCbG9iKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYg
YmxvYlBhcnRWYQogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCht
X2ludGVybmFsVVJMLCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJs
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi0gICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCkKLSAgICAsIG1fdHlwZShjb250ZW50VHlwZSkKLSAgICAsIG1fc2l6ZShidWZmZXIu
c2l6ZSgpKQotewotICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwotICAgIGJsb2JQYXJ0
cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKLSAgICBt
X2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShi
bG9iUGFydHMpLCBjb250ZW50VHlwZSk7Ci19Ci0KIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBl
KGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCBlNDI1MWIyZTZjYTRlYWQwNjBj
NWJmNjM1ZWQ1NGQxN2M5MzQ3M2Q0Li5mZDE3OWUwNjIxMTZlMjQ0M2RlMTI4NDM1ZGVkYWU4NzMw
NjVlYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNzUsMTMgKzc1LDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYmxvYjsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gYmxv
YiA9IGFkb3B0UmVmKCpuZXcgQmxvYihjb250ZXh0LCBidWZmZXIsIGNvbnRlbnRUeXBlKSk7Ci0g
ICAgICAgIGJsb2ItPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgICAgICByZXR1cm4gYmxvYjsKLSAg
ICB9Ci0KICAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQogICAgIHsKICAgICAgICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRl
eHQsIFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKSk7CkBAIC0xMzEsNyArMTI0LDYgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOwogICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZl
Y3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYpOwotICAgIEJs
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpOwogICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFZl
Y3Rvcjx1aW50OF90PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogICAgIGVudW0g
UmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciB7IHJlZmVyZW5jaW5nRXhpc3RpbmdC
bG9iQ29uc3RydWN0b3IgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCmluZGV4IDdmY2IzZWUyNzIyM2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUuLmE2
NmIxOTFkNjg2ZDNkZDQ4ZGViMGQ3ZDdhYzBiYjJjYTA3YjkzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIE5l
dHdvcmtTZW5kUXVldWU6OmVucXVldWUoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0
YSwgdW5zaWduZWQgYnl0ZQogewogICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkgewogICAgICAg
ICBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0
YSgpKTsKLSAgICAgICAgbV93cml0ZVJhd0RhdGEoZGF0YSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5n
dGgpOworICAgICAgICBtX3dyaXRlUmF3RGF0YShTcGFuIHsgZGF0YSArIGJ5dGVPZmZzZXQsIGJ5
dGVMZW5ndGggfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9xdWV1ZS5hcHBlbmQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURh
dGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKQEAgLTkzLDcgKzkzLDcgQEAg
dm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBzd2l0Y2hP
bihtX3F1ZXVlLmZpcnN0KCksIFt0aGlzXShjb25zdCBDU3RyaW5nJiB1dGY4KSB7CiAgICAgICAg
ICAgICBtX3dyaXRlU3RyaW5nKHV0ZjgpOwogICAgICAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1
ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KG1fd3JpdGVS
YXdEYXRhKTsKICAgICAgICAgfSwgW3RoaXMsICZzaG91bGRTdG9wUHJvY2Vzc2luZ10oVW5pcXVl
UmVmPEJsb2JMb2FkZXI+JiBsb2FkZXIpIHsKICAgICAgICAgICAgIGF1dG8gZXJyb3JDb2RlID0g
bG9hZGVyLT5lcnJvckNvZGUoKTsKICAgICAgICAgICAgIGlmIChsb2FkZXItPmlzTG9hZGluZygp
IHx8IChlcnJvckNvZGUgJiYgZXJyb3JDb2RlLnZhbHVlKCkgPT0gQWJvcnRFcnJvcikpIHsKQEAg
LTEwMiw3ICsxMDIsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OnByb2Nlc3NNZXNzYWdlcygp
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjb25zdCBhdXRvJiByZXN1bHQgPSBs
b2FkZXItPmFycmF5QnVmZmVyUmVzdWx0KCkpIHsKLSAgICAgICAgICAgICAgICBtX3dyaXRlUmF3
RGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQt
PmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoU3BhbiB7IHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxl
bmd0aCgpIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIEFTU0VSVChlcnJvckNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaAppbmRleCA1ZWU2NDVmYmVjMzNlOWNlZDM1NDAyNThhYTYwMjdlNzM4NThmNTgx
Li45MTE0ZmUyMTZhMjQ3MWQ0NTAyNzRiZGUwM2Y4MDE2ODBmMWVlNzA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CkBAIC00Nyw3ICs0OCw3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIE5ldHdvcmtTZW5kUXVldWUgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIgewogcHVibGljOgogICAgIHVzaW5nIFdyaXRlU3RyaW5nID0gRnVuY3Rpb248dm9pZChjb25z
dCBDU3RyaW5nJiB1dGY4KT47Ci0gICAgdXNpbmcgV3JpdGVSYXdEYXRhID0gRnVuY3Rpb248dm9p
ZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT47CisgICAgdXNpbmcgV3JpdGVSYXdEYXRhID0gRnVu
Y3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+OwogICAgIGVudW0gY2xhc3Mg
Q29udGludWUgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUHJvY2Vzc0Vycm9yID0gRnVuY3Rpb248
Q29udGludWUoRXhjZXB0aW9uQ29kZSk+OwogICAgIE5ldHdvcmtTZW5kUXVldWUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFdyaXRlU3RyaW5nJiYsIFdyaXRlUmF3RGF0YSYmLCBQcm9jZXNzRXJy
b3ImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAK
aW5kZXggNDk2YjQxMTRlNzliNTA5NDZjZWNhMDY1NmQwYWQ4Y2YyMDY5MzY4NS4uYjBlOWY1MjIy
Y2I2ZTA1OGVjNWY5MDBlN2FmODAyZDAyOTBjYzA5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI2LDEwICsyMjYsMTAgQEAgc3RhdGlj
IGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlw
ZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNs
b3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3Np
bmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93SG9zdCgpOwot
ICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFkYXRhLT5zaXpl
KCkpCisgICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pihob3N0RWxlbWVudCkgfHwgIWJ1ZmZl
ci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWltZVR5cGUgPSBjb250
ZW50VHlwZTsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeQogICAg
IGlmICghbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KG1pbWVUeXBl
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaG9zdEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50KCksIFdURk1vdmUoZGF0YSks
IG1pbWVUeXBlKSkpOworICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9j
dW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBidWZmZXItPnRha2VEYXRhKCksIG1p
bWVUeXBlKSkpOwogfQogCiB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJu
YWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRl
eCBkNGY3ODczZTg1ZjkxMzE2MDEyYjk0NDA4NGY5MjA5NzYwMWUwNjZkLi4xM2I1OWYyZjAzNGNi
YTIxNjQ4ODFlZGM3MmMwNjNkNzliZmJhNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC01NDcs
NyArNTQ3LDkgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICAgICAgICAgICAgICBtX3Jl
c291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIHByZXZpb3VzUmVzb3Vy
Y2VEYXRhLT5jb250ZW50KCksIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5iYXNlNjRFbmNvZGVkKCkp
OwogICAgICAgICAgICAgZWxzZSBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEtPmhhc0J1ZmZlcmVk
RGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c0J1ZmZlciA9IHByZXZpb3Vz
UmVzb3VyY2VEYXRhLT5idWZmZXIoKTsKLSAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEt
Pm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgcHJldmlvdXNCdWZmZXItPmRhdGEoKSwg
cHJldmlvdXNCdWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNCdWZmZXIt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICAgICAgICAg
IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBzZWdtZW50
LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJp
bmcoUHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjptaW1lVHlwZUtleSwgcHJldmlvdXNSZXNv
dXJjZURhdGEtPm1pbWVUeXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKaW5kZXggZGY2N2MxNTQ0ODQ0ODI3NzM5YWQzZTI3YzBjMzY5NzIzYWU3OTM5MS4uNDZk
MzdiYmQ0OWQ5ZDIxMzQwOTcwMzZiZTNhMmUwYWMzODdiM2I1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMTAyLDggKzExMDIsMTEgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGlj
eSkKIAogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
ICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1dG8gY29udGVudCA9IG1f
c3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwotICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50
LT5zaXplKCkpCi0gICAgICAgICAgICBkYXRhUmVjZWl2ZWQoY29udGVudC0+ZGF0YSgpLCBjb250
ZW50LT5zaXplKCkpOworICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LT5zaXplKCkpIHsK
KyAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
CisgICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgICAgICBpZiAoaXNMb2FkaW5n
TWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmcoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCA3OTc5ZDk5Yzg5MjRhZTZmN2ZjYjYxYTViOTczOTgxY2IzMDM0OTYxLi5kOTIwMjc0ZmIzMjU2
MGE0ZmY2MmE2MmU5YWExMWZmY2E4MWI1YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDgxLDE0ICs0ODEsMjAgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKQogCiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5
ID09IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAgICAgICAg
ICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRh
KCksIG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBp
ZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgeworICAgICAg
ICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0YSgp
LCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzcG9uc2UudHlwZSgpID09IFJl
c291cmNlUmVzcG9uc2U6OlR5cGU6OkRlZmF1bHQpOwogCiAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIFJlc291cmNlUmVzcG9uc2U6OmZpbHRlcihy
ZXNwb25zZSwgbV9vcHRpb25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlh
bHM6OkluY2x1ZGUgPyBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0No
ZWNrOjpObyA6IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6
OlllcykpOwotICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCi0g
ICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291
cmNlQnVmZmVyKCktPmRhdGEoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1
ZmZlcigpKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0
byYgc2VnbWVudCkgeworICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtNjQ5LDggKzY1NSwxMSBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIH0KICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoaWRl
bnRpZmllciwgcmVzcG9uc2UpOwogCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIGRpZFJlY2VpdmVE
YXRhKGlkZW50aWZpZXIsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0
YSkgeworICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewor
ICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgc2VnbWVudC5kYXRhKCksIHNl
Z21lbnQuc2l6ZSgpKTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgY29uc3QgYXV0byogdGlt
aW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwogICAg
IGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNocm9ub3VzTG9h
ZChyZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCB0aW1pbmcgPyAq
dGltaW5nIDogTmV0d29ya0xvYWRNZXRyaWNzIHsgfSwgcmVzcG9uc2UsIHNlY3VyaXR5T3JpZ2lu
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5jcHAKaW5kZXggYWRhZTY0MDBmYzRiMzM4YmM3YmM1Yjg2OWEyNDViMmU5MGFiNDRj
NS4uYTMzODM2NGM5MWJkZWIzMmQ0NGIzM2FiMmZiMTgyMzM4ZDg5YWRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBA
IC0xNTUsOCArMTU1LDE0IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50CiB7CiAgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgIGlmIChtX2NsaWVudCkgeworICAgICAgICBpZiAoYnVmZmVyKSB7CisgICAgICAg
ICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIHNlZ21lbnQuZGF0YSgpLCBz
ZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICB9
CiAKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5n
dGgsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwCmluZGV4IGNlNjQ5NTgxZTliNGI0ZTE2MjY4NzdiMTkxZmJmMmFkOTY0MjFl
N2QuLjYwYmI3ZjEwODU0ZmNjMzBhMGNlNzMxOGE2Nzk3NTQ1ZDg0ZmI3MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
CkBAIC0xNTQsNCArMTU0LDE1IEBAIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9n
cmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnCiAgICAgcmV0dXJu
IHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKIH0KIAorUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIo
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7Cisg
ICAgaWYgKGJ1ZmZlcikgeworICAgICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRv
JiBzZWdtZW50KSB7CisgICAgICAgICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVzKHNlZ21lbnQu
ZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICByZXR1cm4g
eyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgK
aW5kZXggZmNjMGIwNDRhYWEyNGU1ZWE3YTExY2VhYzFmZjdlYmE1MzQ5MDBiYy4uYWVhM2RjNTdj
ODc4MzEzMDEzYTViMTZjOTM5Yjc3NGVkNDg0MzI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApAQCAtMzQsNiArMzQsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogc3RydWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAg
ZW51bSBjbGFzcyBBbGdvcml0aG0gewpAQCAtNzQsNiArNzUsNyBAQCBzdGQ6Om9wdGlvbmFsPEVu
Y29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBo
aWNEaWdlcwogCiBzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVj
b2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0Jik7CiAKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBj
cnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdDo6QWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqKTsKIFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IHZvaWQqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdy
aXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAK
aW5kZXggNGQwYzY5MGIyNzYyYWE5MGU3MWVhMzg3ZjNhM2Q4MGY2NDEzOGJlZS4uYzUyMDgxYjQy
MTY3YmE4MGMyNzU3MDhjYmQ5OTZkODdhODU0NDIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBt
YXRjaEludGVncml0eU1ldGFkYXRhKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgU3RyaW5nJiBpbnRlZ3IKICAgICAgICAgYXV0byBleHBlY3RlZFZhbHVlID0gZGVjb2RlRW5j
b2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChpdGVtKTsKIAogICAgICAgICAvLyAzLiBM
ZXQgYWN0dWFsVmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBhbGdvcml0aG0gdG8gcmVz
cG9uc2UuCi0gICAgICAgIGF1dG8gYWN0dWFsVmFsdWUgPSBjcnlwdG9ncmFwaGljRGlnZXN0Rm9y
Qnl0ZXMoYWxnb3JpdGhtLCBzaGFyZWRCdWZmZXIgPyBzaGFyZWRCdWZmZXItPmRhdGEoKSA6IG51
bGxwdHIsIHNoYXJlZEJ1ZmZlciA/IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpIDogMCk7CisgICAgICAg
IGF1dG8gYWN0dWFsVmFsdWUgPSBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKGFs
Z29yaXRobSwgc2hhcmVkQnVmZmVyKTsKIAogICAgICAgICAvLyA0LiBJZiBhY3R1YWxWYWx1ZSBp
cyBhIGNhc2Utc2Vuc2l0aXZlIG1hdGNoIGZvciBleHBlY3RlZFZhbHVlLCByZXR1cm4gdHJ1ZS4K
ICAgICAgICAgaWYgKGV4cGVjdGVkVmFsdWUgJiYgYWN0dWFsVmFsdWUudmFsdWUgPT0gZXhwZWN0
ZWRWYWx1ZS0+dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IGYyNjRmMWRkNzEyM2Q2OTJjNjU3
ZjFlY2UxNDk5NGM0MTk2MzM0NWEuLjdjM2FjZWJhNzJkNTJhNDY4NmI1YjNiMzZjNzdkNWZhZWYz
MjdiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC01OTUsOSArNTk1LDggQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSogbmV3ZXN0TWFuaWZlc3QgPSBtX25ld2VzdENhY2hlLT5tYW5p
ZmVzdFJlc291cmNlKCk7CiAgICAgICAgIEFTU0VSVChuZXdlc3RNYW5pZmVzdCk7CiAgICAgCi0g
ICAgICAgIGlmICghbV9tYW5pZmVzdFJlc291cmNlIHx8IC8vIFRoZSByZXNvdXJjZSB3aWxsIGJl
IG51bGwgaWYgSFRUUCByZXNwb25zZSB3YXMgMzA0IE5vdCBNb2RpZmllZC4KLSAgICAgICAgICAg
IChuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpLnNpemUoKSA9PSBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkgJiYgIW1lbWNtcChuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpLmRhdGEoKSwgbV9t
YW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpLnNp
emUoKSkpKSB7Ci0KKyAgICAgICAgLy8gVGhlIHJlc291cmNlIHdpbGwgYmUgbnVsbCBpZiBIVFRQ
IHJlc3BvbnNlIHdhcyAzMDQgTm90IE1vZGlmaWVkLgorICAgICAgICBpZiAoIW1fbWFuaWZlc3RS
ZXNvdXJjZSB8fCBuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpID09IG1fbWFuaWZlc3RSZXNvdXJjZS0+
ZGF0YSgpKSB7CiAgICAgICAgICAgICBtX2NvbXBsZXRpb25UeXBlID0gTm9VcGRhdGU7CiAgICAg
ICAgICAgICBtX21hbmlmZXN0UmVzb3VyY2UgPSBudWxscHRyOwogICAgICAgICAgICAgZGVsaXZl
ckRlbGF5ZWRNYWluUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiN2MzMDkx
N2NkN2RhMTFmZmYyOTlkYmI2NzU5ZjViN2U4YTZkMTdhLi4xYjMzYWM5NWJjZGUxMWZlM2M0OTkw
MjQwYTUyMGJkMzBlNjM2NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEyOTIsNyArMTI5
MiwxMCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZp
bGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdAogICAgIGlmICghaGFuZGxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAg
aW50NjRfdCB3cml0dGVuQnl0ZXMgPSAwOworICAgIGRhdGEuZm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgd3JpdHRlbkJ5dGVzICs9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICB9KTsK
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRl
bkJ5dGVzICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggMjE5
MmYxNTIwYWEzOWIxN2JlOWJmMDJkZTg0ODA5MjNkZDg2MmU3MC4uYTM3MGZjNzA5ODU2MmMwY2I2
ZDI2ZWQ3MjgwZWUyN2M2NTFiNzYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0xNjcsOCArMTY3LDExIEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgYykKICAg
ICAgICAgYXV0byByZXNwb25zZVByb2Nlc3NlZEhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNsaWVudF0gewogICAgICAgICAgICAgaWYgKCFo
YXNDbGllbnQoKmNsaWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
aWYgKG1fZGF0YSkKLSAgICAgICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywg
bV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChtX2RhdGEp
IHsKKyAgICAgICAgICAgICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVu
dCgqY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25M
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5k
ZXggOTE5NTlkNjI5OTM4OTE0OTMzMzJhODNiMmU1OGM0YjczNzQ4MTc0My4uYzBjZjllZjMyNTZh
MWFkOGY1ZGYxMGNlOTY3YWNhNTViZjg2NWNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkxvYWRlci5jcHAKQEAgLTExNCw5ICsxMTQsOCBAQCB2b2lkIEljb25Mb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaQogICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBzdGF0dXMgPiAyOTkpKQog
ICAgICAgICBkYXRhID0gbnVsbHB0cjsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyIHBkZk1hZ2lj
TnVtYmVyW10gPSAiJVBERiI7Ci0gICAgc3RhdGljIHVuc2lnbmVkIHBkZk1hZ2ljTnVtYmVyTGVu
Z3RoID0gc2l6ZW9mKHBkZk1hZ2ljTnVtYmVyKSAtIDE7Ci0gICAgaWYgKGRhdGEgJiYgZGF0YS0+
c2l6ZSgpID49IHBkZk1hZ2ljTnVtYmVyTGVuZ3RoICYmICFtZW1jbXAoZGF0YS0+ZGF0YSgpLCBw
ZGZNYWdpY051bWJlciwgcGRmTWFnaWNOdW1iZXJMZW5ndGgpKSB7CisgICAgY29uc3RleHByIHVp
bnQ4X3QgcGRmTWFnaWNOdW1iZXJbXSA9IHsgJyUnLCAnUCcsICdEJywgJ0YnIH07CisgICAgaWYg
KGRhdGEgJiYgZGF0YS0+c3RhcnRzV2l0aChTcGFuIHsgcGRmTWFnaWNOdW1iZXIsIHN0ZDo6c2l6
ZShwZGZNYWdpY051bWJlcikgfSkpIHsKICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkljb25M
b2FkZXI6OmZpbmlzaExvYWRpbmcoKSAtIElnbm9yaW5nIGljb24gYXQgJXMgYmVjYXVzZSBpdCBh
cHBlYXJzIHRvIGJlIGEgUERGIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOwogICAgICAgICBkYXRhID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCAwMDQwYThhNjExODdmYjBlNDllODZmMzM3MGJi
OGY4MjM3NzVhZmM1Li44YTY4ZmM2YmQxMDRkYWUxNDRkY2Q2YmMzNmNhMzBkZmEzYmMwYmE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTg2LDYgKzg2LDE2
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIHZlY3RvcikKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZSh2ZWN0b3IpKSk7CiB9CiAKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRz
RGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6
ZV90IHNpemUpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKKyAgICBjb21i
aW5lZERhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICBmb3IgKGF1dG8mIHNl
Z21lbnQgOiBzZWdtZW50cykKKyAgICAgICAgY29tYmluZWREYXRhLmFwcGVuZChzZWdtZW50LnNl
Z21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkpOworICAgIEFTU0VSVChjb21i
aW5lZERhdGEuc2l6ZSgpID09IHNpemUpOworICAgIHJldHVybiBjb21iaW5lZERhdGE7Cit9CisK
IHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAogewogI2lm
IEFTU0VSVF9FTkFCTEVECkBAIC05NiwxMSArMTA2LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNv
bWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9
IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7
Ci0gICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zaXplKTsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjb21iaW5lZERh
dGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUo
KSk7Ci0gICAgQVNTRVJUKGNvbWJpbmVkRGF0YS5zaXplKCkgPT0gbV9zaXplKTsKKyAgICBhdXRv
IGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsK
ICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwogICAgIEFTU0VSVChtX3Nl
Z21lbnRzLnNpemUoKSA9PSAxKTsKQEAgLTEwOSwxMyArMTE1LDI4IEBAIHZvaWQgU2hhcmVkQnVm
ZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAogCiBjb25zdCB1aW50OF90KiBTaGFy
ZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogewotICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisg
ICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQogCitW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCit7CisgICAgaWYgKG1fc2Vn
bWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVkRGF0YTsKKyAgICBpZiAoaGFzT25lU2VnbWVudCgpICYmIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1t
dXRhYmxlRGF0YSkpCisgICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFuZ2UoV1RGOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0
YSksIFZlY3Rvcjx1aW50OF90PigpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbWJpbmVkRGF0YSA9
IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKKworICAgIGNsZWFyKCk7
CisgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKK30KKwogU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hh
cmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwpAQCAtMTMwLDEwICsxNTEsMTAgQEAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRp
b24pIGNvbnN0CiBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIGZvciAodW5zaWduZWQgYnl0ZU9m
ZnNldCA9IDA7IGJ5dGVPZmZzZXQgPCBzaXplKCk7IGJ5dGVPZmZzZXQrKykgewotICAgICAgICBj
b25zdCB1aW50OF90IGJ5dGUgPSBkYXRhKClbYnl0ZU9mZnNldF07Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKHBhZCgnMCcsIDIsIGhleChieXRlKSkpOwotICAgIH0KKyAgICBmb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2VnbWVudC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHBhZCgnMCcsIDIsIGhleChzZWdtZW50W2ldKSkpOworICAgIH0pOwogICAgIHJldHVybiBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKQEAgLTIwNSw2ICsyMjYsNDkgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gY2xvbmU7
CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAoreworICAgIGZv
ciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgIGFwcGx5KFNwYW4geyBzZWdt
ZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7Cit9CisKK2Jv
b2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3QKK3sKKyAgICBpZiAocHJlZml4LmVtcHR5KCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKHNpemUoKSA8IHByZWZpeC5zaXplKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGNvbnN0IHVpbnQ4X3QqIHByZWZpeFB0ciA9IHByZWZpeC5kYXRhKCk7Cisg
ICAgc2l6ZV90IHJlbWFpbmluZyA9IHByZWZpeC5zaXplKCk7CisgICAgZm9yIChhdXRvJiBzZWdt
ZW50IDogbV9zZWdtZW50cykgeworICAgICAgICBzaXplX3QgYW1vdW50VG9Db21wYXJlVGhpc1Rp
bWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKKyAgICAg
ICAgaWYgKG1lbWNtcChwcmVmaXhQdHIsIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBhbW91bnRU
b0NvbXBhcmVUaGlzVGltZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
bWFpbmluZyAtPSBhbW91bnRUb0NvbXBhcmVUaGlzVGltZTsKKyAgICAgICAgaWYgKCFyZW1haW5p
bmcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcHJlZml4UHRyICs9IGFtb3Vu
dFRvQ29tcGFyZVRoaXNUaW1lOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
U2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBzaXplKCkpOworICAgIGF1dG8gZGVzdGluYXRp
b25QdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb24pOworICAgIGF1dG8gcmVt
YWluaW5nID0gc3RkOjptaW4obGVuZ3RoLCBzaXplKCkpOworICAgIGZvciAoYXV0byYgc2VnbWVu
dCA6IG1fc2VnbWVudHMpIHsKKyAgICAgICAgc2l6ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0g
c3RkOjptaW4ocmVtYWluaW5nLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAgIG1l
bWNweShkZXN0aW5hdGlvblB0ciwgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIGFtb3VudFRvQ29w
eVRoaXNUaW1lKTsKKyAgICAgICAgcmVtYWluaW5nIC09IGFtb3VudFRvQ29weVRoaXNUaW1lOwor
ICAgICAgICBpZiAoIXJlbWFpbmluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVz
dGluYXRpb25QdHIgKz0gYW1vdW50VG9Db3B5VGhpc1RpbWU7CisgICAgfQorfQorCiBib29sIFNo
YXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9IGJlZ2lu
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDdkYzMxYzczOTJj
Y2VlZWViYjI2M2IyNGE5YTMyZDczMWRkMGE4NzEuLjNmMmExNDQ3YmQwY2IxMjk3NjNiNDVhYmVj
NmVmYTljODBiNjY4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEwMCw2ICsxMDEs
MTAgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCiAg
ICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0No
YXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KCkpOyB9CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgeyByZXR1cm4geyBkYXRhKCks
IHNpemUoKSB9OyB9CisKKyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBW
ZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1
ZmZlci4KKyAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKIAogICAgIC8vIENyZWF0ZXMg
YW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRv
IHRoYXQKICAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZl
cnMgaW50byBhIGZsYXQgYnVmZmVyLgpAQCAtMTE3LDYgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNsZWFyKCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAg
dm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCiAg
ICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBi
ZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCiAgICAgLy8gVG8g
bW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgpA
QCAtMTgwLDYgKzE4Niw5IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKICAgICB9OwogCisgICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBib29sIHN0YXJ0
c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKwogICAgIHN0
cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRp
b247CiAgICAgICAgIFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA4OTVlYmUwNTFmMTUyYTdhODNh
NDVjN2I5MGRkYzBjMjcwYTQ5ZWUxLi5mNmJmZGQ3ZjVmNzMzN2VlMWYxMDM2NWM1ZTIwMTMxODVh
N2UyZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwCkBAIC00Nyw3ICs0NywxMSBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBXVEY6OmdldF9p
ZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJs
ZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICByZXR1cm4gYWRv
cHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKKyAgICBhdXRvIGNm
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKKyAg
ICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICBDRkRhdGFBcHBl
bmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Cisg
ICAgfSk7CisgICAgcmV0dXJuIGNmRGF0YTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGVlNmE1ZDJlZWQ2YTNmOTdlNzQ2OGNh
Yjk2ZTllZTM0ZDZiODMwNmUuLjEzNTRiZGJlZGQ2MTE2YzIwOWZiNTRhNjNlMTk0MjI1M2NiM2E1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03
NzQsNyArNzc0LDcgQEAgdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJiB0ZW1wb3JhcnlJdGVtKQogICAgIGlmIChyZXF1aXJlZFNpemVGb3JJdGVtKQogICAgICAg
ICBtX3dyaXRpbmdDbGllbnQtPmVuY29kZUl0ZW1JbmxpbmUodGVtcG9yYXJ5SXRlbSwgbG9jYXRp
b24pOwogICAgIGVsc2UKLSAgICAgICAgbWVtY3B5KGxvY2F0aW9uLCBvdXRPZkxpbmVJdGVtLT5k
YXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBvdXRPZkxpbmVJdGVtLT5jb3B5VG8obG9jYXRp
b24sIGRhdGFMZW5ndGgpOwogCiAgICAgZGlkQXBwZW5kRGF0YShhZGRpdGlvbmFsQ2FwYWNpdHlG
b3JFbmNvZGVkSXRlbSwgYnVmZmVyQ2hhbmdlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAppbmRleCAwMDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1NDNkYTYyZDcz
OGMwZmU2Li5lNzY5NzEyNGQxODUyNmU4MTE4MjcwNmZlYTFmYzhlYzgzZTA2MTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0NjYsOSBAQCBF
bmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERv
Y3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgog
ICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5
cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVudAot
ICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShk
YXRhKCktPmRhdGEoKSwgZGF0YSgpLT5zaXplKCkpOworICAgICAgICBkYXRhKCktPmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9j
dW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5z
aXplKCkpOworICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPndyaXRlcigpLmVuZCgpOwogCiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuY3BwCmluZGV4IDUyNDlkNjdhZDJjNzYyY2JmODA5MWQ5Njc4YTVmNGZkM2I2ZmQx
NTUuLjZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTUzLDggKzUzLDkgQEAgU3RyaW5nIFNj
cmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9idWZmZXIt
PmJlZ2luKCk7IGl0ICE9IG1fYnVmZmVyLT5lbmQoKTsgKytpdCkKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoU3RyaW5nOjpmcm9tVVRGOChpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+c2VnbWVudC0+
c2l6ZSgpKSk7CisgICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50
KSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRh
KCksIHNlZ21lbnQuc2l6ZSgpKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZWNmMGE0
OWIzMDFkY2Y5MTgzYzFlYWY5ODUwMDYwMDkwYTQ0MGYyYi4uM2RkZjU3YzU4NmE2YjRmMDAwMzkx
ZTlmYWExN2Y2MGFhYzM4ZmE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CkBAIC0yMDcsOCArMjA3LDcgQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IoKQogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20g
TmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNp
ZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlcikKLSAgICAgICAgZGF0YS5hcHBlbmQobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmRh
dGEoKSwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNpemUoKSk7Ci0gICAgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPnRha2VEYXRhKCk7CiAgICAgU3RyaW5nIG5v
cm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25z
ZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1
bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6
ZWRDb250ZW50VHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDU2MTI2OTRmY2EyMTI2NmI4Yjc2YmVh
ZTlmOGNmMDBiYmRlOTcyOWYuLjlmMTllOWE1NzczMDNjNmFiNmI2YTE0OTY3YTVkNTBmMTVlNTYw
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuY3BwCkBAIC01OCw5ICs1OCw5IEBAIE5ldHdvcmtTZW5kUXVldWUgV2ViU29j
a2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29j
CiAgICAgcmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0cmluZykgewog
ICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpP
cENvZGVUZXh0LCB1dGY4U3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjhTdHJpbmcubGVuZ3Ro
KCkpOwogICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0
Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHV0ZjhTdHJpbmcuZGF0
YUFzVUludDhQdHIoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3Ro
KCkpOwotICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVM
ZW5ndGgpIHsKLSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6
Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgY2hhbm5l
bC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsg
SVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwor
ICAgIH0sIFsmY2hhbm5lbF0oYXV0byYgc3BhbikgeworICAgICAgICBjaGFubmVsLm5vdGlmeVNl
bmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIHNwYW4uZGF0YSgp
LCBzcGFuLnNpemUoKSk7CisgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5l
dHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHNwYW4u
ZGF0YSgpLCBzcGFuLnNpemUoKSB9IH0sIGJ5dGVMZW5ndGgpOwogICAgIH0sIFsmY2hhbm5lbF0o
RXhjZXB0aW9uQ29kZSBleGNlcHRpb25Db2RlKSB7CiAgICAgICAgIGF1dG8gY29kZSA9IHN0YXRp
Y19jYXN0PGludD4oZXhjZXB0aW9uQ29kZSk7CiAgICAgICAgIGNoYW5uZWwuZmFpbChtYWtlU3Ry
aW5nKCJGYWlsZWQgdG8gbG9hZCBCbG9iOiBleGNlcHRpb24gY29kZSA9ICIsIGNvZGUpKTsK
</data>
<flag name="commit-queue"
          id="452680"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>431042</attachid>
            <date>2021-06-09 19:29:30 -0700</date>
            <delta_ts>2021-06-10 08:08:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226857-20210609192929.patch</filename>
            <type>text/plain</type>
            <size>55858</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc4NjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIyOTZhMTk5YjBhMGM3
MWVkYjkwNWNjYzA5MmJlOTdkYjk0NzcyYy4uOTg4OTEyZmM5MTUxNTc0ZmI0OTJjZjk2NTFjM2M3
NTA4OTNhMTk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMS0wNi0wOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBzb21lIGluZWZmaWNp
ZW50IHVzZXMgb2YgU2hhcmVkQnVmZmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY4NTcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBGaXggc29tZSBpbmVmZmljaWVudCB1c2VzIG9mIFNoYXJlZEJ1ZmZlcjoK
KyAgICAgICAgLSBBdm9pZCBjYWxsaW5nIFNoYXJlZEJ1ZmZlcjo6ZGF0YSgpIHdoZW5ldmVyIHBv
c3NpYmxlIHNpbmNlIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgICBtYXkgaGF2ZSB0byBjb21iaW5l
IGludGVybmFsIHNlZ21lbnRzIG9mIFNoYXJlZEJ1ZmZlci4gQWRkZWQgYSBjb252ZW5pZW5jZQor
ICAgICAgICAgIGZ1bmN0aW9uIG9uIFNoYXJlZEJ1ZmZlciAoZm9yRWFjaFNlZ21lbnQoKSkgdG8g
Z2V0IHRoZSBkYXRhIHBvaW50ZXIgLyBzaXplCisgICAgICAgICAgb2YgZWFjaCBzZWdtZW50Lgor
ICAgICAgICAtIEF2b2lkIHNvbWUgdW5uZWNlc3NhcnkgY29uc3RydWN0aW9uIG9mIFNoYXJlZEJ1
ZmZlciBzaW1wbHkgdG8gZ2V0IGEgVmVjdG9yLgorICAgICAgICAgIFdlIHNob3VsZCBjb25zdHJ1
Y3QgdGhlIFZlY3RvciBkaXJlY3RseSBpbiBzdWNoIGNhc2VzLiBJIGRyb3BwZWQgdGhlCisgICAg
ICAgICAgQmxvYiBmYWN0b3J5IHRoYXQgdG9vayBpbiBhIFNoYXJlZEJ1ZmZlciBhcyBpdCB3YXMg
aW5lZmZpY2llbnQgYW5kIGZyZXF1ZW50bHkKKyAgICAgICAgICBjYWxsZWQgaW5zdGVhZCBvZiB0
aGUgbW9yZSBlZmZpY2llbnQgZmFjdG9yeSB0aGF0IHRha2VzIGluIGEgVmVjdG9yPHVpbnQ4X3Q+
LgorICAgICAgICAtIEFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gU2hhcmVkQnVmZmVyIHRo
YXQgcmV0dXJuIGEgVmVjdG9yLCBpbmNsdWRpbmcgb25lCisgICAgICAgICAgbmFtZWQgdGFrZURh
dGEoKSB0aGF0IGF2b2lkcyBjb3B5aW5nIHRoZSBkYXRhLgorICAgICAgICAtIEFkZCBjb252ZW5p
ZW5jZSBmdW5jdGlvbnMgdG8gU2hhcmVkQnVmZmVyIGZvciBkb2luZyBhIHByZWZpeCBjaGVjayBv
ciBjb3B5aW5nCisgICAgICAgICAgdG8gYSBkZXN0aW5hdGlvbiBwb2ludGVyLgorCisgICAgICAg
ICogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDbGlwYm9hcmRJdGVtOjpibG9iRnJvbVN0cmluZyk6CisgICAgICAgICogTW9kdWxl
cy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdlUmVhZGVySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkSW1hZ2VSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAgICAq
IE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmJsb2JGcm9tRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpwYWNrYWdlRm9ybURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6cmVzb2x2ZVdpdGhUeXBlQW5kRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpGZXRjaEJvZHlDb25zdW1lcjo6dGFrZUFzQmxvYik6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCR2V0UmVzdWx0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJHZXRSZXN1bHQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEYXRhQXZhaWxhYmxlRXZlbnQp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKToKKyAgICAg
ICAgKiBlZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXI6OnJlYWRCdWZmZXIpOgorICAgICAg
ICAqIGVkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlRnJhZ21lbnRGb3JJbWFnZUF0dGFjaG1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6cmVwbGFjZVJpY2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OnNhbml0
aXplTWFya3VwV2l0aEFyY2hpdmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRl
cjo6cmVhZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmF0dGFjaG1lbnRGb3JEYXRhKToKKyAg
ICAgICAgKiBlZGl0aW5nL2d0ay9XZWJDb250ZW50UmVhZGVyR3RrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRJbWFnZSk6CisgICAgICAgICogZmlsZWFwaS9C
bG9iLmNwcDoKKyAgICAgICAgKiBmaWxlYXBpL0Jsb2IuaDoKKyAgICAgICAgKiBmaWxlYXBpL05l
dHdvcmtTZW5kUXVldWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1NlbmRRdWV1ZTo6
cHJvY2Vzc01lc3NhZ2VzKToKKyAgICAgICAgKiBodG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXR0YWNobWVudEVsZW1lbnQ6OnVwZGF0ZUVuY2xv
c2luZ0ltYWdlV2l0aERhdGEpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJDb250
ZW50UG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIpOgorICAgICAgICAqIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvZ3JhcGhpY0RpZ2VzdEZvclNo
YXJlZEJ1ZmZlcik6CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2Vz
dC5oOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjptYXRjaEludGVncml0eU1ldGFkYXRhKToKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OndyaXRlRGF0YVRvVW5pcXVlRmlsZUluRGly
ZWN0b3J5KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudCk6CisgICAg
ICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJY29u
TG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbWJpbmVTZWdtZW50c0RhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcjo6dGFrZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVm
ZmVyOjp0b0hleFN0cmluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6
OmZvckVhY2hTZWdtZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6
c3RhcnRzV2l0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTaGFyZWRCdWZmZXI6OmNvcHlU
byBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVk
QnVmZmVyOjpjcmVhdGVDRkRhdGEgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6Okl0ZW1CdWZmZXI6OmFwcGVuZCk6CisgICAgICAgICogc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpkYXRhQ2hhbmdl
ZCk6CisgICAgICAgICogd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0QnVmZmVyOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgICogeG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IpOgorCiAyMDIxLTA2LTA5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIENsZWFuIHVwIHNjcm9sbGJhciBjcmVhdGlvbiBjb2RlIGluIFJl
bmRlckxheWVyU2Nyb2xsYWJsZUFyZWEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXN5bmMtY2xpcGJvYXJkL0NsaXBib2FyZEl0ZW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hc3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKaW5kZXggZDMzM2M2MTRhNDY1
YmM2NjU1OTIyODMwZjdkOTliZGY0Y2Q1OTZlMC4uYTYyOTg2YjQ4OGJkMDc3NjIzZDkzZTE2NzE2
MjI3ODllMGYxZTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1j
bGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
c3luYy1jbGlwYm9hcmQvQ2xpcGJvYXJkSXRlbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgQ2xpcGJv
YXJkSXRlbTo6fkNsaXBib2FyZEl0ZW0oKSA9IGRlZmF1bHQ7CiBSZWY8QmxvYj4gQ2xpcGJvYXJk
SXRlbTo6YmxvYkZyb21TdHJpbmcoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBzdHJpbmdEYXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgYXV0byB1
dGY4ID0gc3RyaW5nRGF0YS51dGY4KCk7Ci0gICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShjb250ZXh0
LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh1dGY4LmRhdGEoKSwgdXRmOC5sZW5ndGgoKSksIEJsb2I6
Om5vcm1hbGl6ZWRDb250ZW50VHlwZSh0eXBlKSk7CisgICAgcmV0dXJuIEJsb2I6OmNyZWF0ZShj
b250ZXh0LCBWZWN0b3IgeyB1dGY4LmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjgubGVuZ3RoKCkgfSwg
QmxvYjo6bm9ybWFsaXplZENvbnRlbnRUeXBlKHR5cGUpKTsKIH0KIAogc3RhdGljIENsaXBib2Fy
ZEl0ZW06OlByZXNlbnRhdGlvblN0eWxlIGNsaXBib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZShj
b25zdCBQYXN0ZWJvYXJkSXRlbUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1h
Z2VSZWFkZXJJT1MubW0KaW5kZXggMTU5ZWU4OTUwYjA0MGQ2ZDhlMjdlY2Q2OWE5NWJlMjQ4N2Yz
M2JiYS4uNDMwMjM2MWU2ZmUyNzg1Mjg0YWU2YzA4MzI4YWYzMDdhM2E0NDEwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZElt
YWdlUmVhZGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQpAQCAtMzksNyArMzksNyBAQCB2b2lk
IENsaXBib2FyZEltYWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYsIFJlZjxTaGFyZWRCdQogICAgIGlmIChtX21pbWVUeXBlID09ICJpbWFnZS9wbmciKSB7
CiAgICAgICAgIGF1dG8gaW1hZ2UgPSBhZG9wdE5TKFtQQUw6OmFsbG9jVUlJbWFnZUluc3RhbmNl
KCkgaW5pdFdpdGhEYXRhOmJ1ZmZlci0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldKTsKICAgICAgICAg
aWYgKGF1dG8gbnNEYXRhID0gVUlJbWFnZVBOR1JlcHJlc2VudGF0aW9uKGltYWdlLmdldCgpKSkK
LSAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKG5zRGF0YSksIG1fbWltZVR5cGUpOworICAgICAgICAgICAgbV9y
ZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgVmVjdG9yIHsgc3RhdGljX2Nh
c3Q8Y29uc3QgdWludDhfdCo+KG5zRGF0YS5ieXRlcyksIG5zRGF0YS5sZW5ndGggfSwgbV9taW1l
VHlwZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fz
eW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJNYWMu
bW0KaW5kZXggZDkxNGNkMGQ0MGY5M2ViZjZmMDEzZDNhNGQ0MjM5M2I3NzFmNDI0YS4uYjRjMzFj
YTUwNjM5Y2NjYTRjNTUwNTRkNDkxMzE3ODY5ZGE3ZTViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQpAQCAtMzksNyArMzksOCBAQCB2b2lkIENsaXBib2FyZElt
YWdlUmVhZGVyOjpyZWFkQnVmZmVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFJlZjxT
aGFyZWRCdQogICAgICAgICBhdXRvIGltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoRGF0YTpidWZmZXItPmNyZWF0ZU5TRGF0YSgpLmdldCgpXSk7CiAgICAgICAgIGlmIChh
dXRvIGNnSW1hZ2UgPSBbaW1hZ2UgQ0dJbWFnZUZvclByb3Bvc2VkUmVjdDpuaWwgY29udGV4dDpu
aWwgaGludHM6bmlsXSkgewogICAgICAgICAgICAgYXV0byByZXByZXNlbnRhdGlvbiA9IGFkb3B0
TlMoW1tOU0JpdG1hcEltYWdlUmVwIGFsbG9jXSBpbml0V2l0aENHSW1hZ2U6Y2dJbWFnZV0pOwot
ICAgICAgICAgICAgbV9yZXN1bHQgPSBCbG9iOjpjcmVhdGUobV9kb2N1bWVudC5nZXQoKSwgU2hh
cmVkQnVmZmVyOjpjcmVhdGUoW3JlcHJlc2VudGF0aW9uIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBl
Ok5TQml0bWFwSW1hZ2VGaWxlVHlwZVBORyBwcm9wZXJ0aWVzOkB7IH1dKSwgbV9taW1lVHlwZSk7
CisgICAgICAgICAgICBOU0RhdGEqIG5zRGF0YSA9IFtyZXByZXNlbnRhdGlvbiByZXByZXNlbnRh
dGlvblVzaW5nVHlwZTpOU0JpdG1hcEltYWdlRmlsZVR5cGVQTkcgcHJvcGVydGllczpAeyB9XTsK
KyAgICAgICAgICAgIG1fcmVzdWx0ID0gQmxvYjo6Y3JlYXRlKG1fZG9jdW1lbnQuZ2V0KCksIFZl
Y3RvciB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihuc0RhdGEuYnl0ZXMpLCBuc0RhdGEu
bGVuZ3RoIH0sIG1fbWltZVR5cGUpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAppbmRleCA2MDY0
NGJmOTk0MTlmYjM3NzYwZDBmY2JiYzZhMDg2ZTc3NTA5OTk0Li4xNWJhMGNhMTJlMjE3MzUwYzVk
YmQ0MWU5Yzg3OWM1ZDk5YmU5MWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcApAQCAtNDEsOSArNDEsOSBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgUmVmPEJsb2I+IGJsb2JGcm9tRGF0YShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCitzdGF0aWMgaW5saW5l
IFJlZjxCbG9iPiBibG9iRnJvbURhdGEoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
VmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKLSAg
ICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRleHQsIFZlY3RvciB7IGRhdGEsIGxlbmd0aCB9LCBC
bG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVudFR5cGUpKTsKKyAgICByZXR1cm4gQmxv
Yjo6Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUoZGF0YSksIEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50
VHlwZShjb250ZW50VHlwZSkpOwogfQogCiAvLyBodHRwczovL21pbWVzbmlmZi5zcGVjLndoYXR3
Zy5vcmcvI2h0dHAtcXVvdGVkLXN0cmluZy10b2tlbi1jb2RlLXBvaW50CkBAIC0xNjgsNyArMTY4
LDcgQEAgc3RhdGljIFJlZlB0cjxET01Gb3JtRGF0YT4gcGFja2FnZUZvcm1EYXRhKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnMKICAgICAgICAgICAgICAgICBjb250ZW50VHlw
ZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhoZWFkZXIuc3Vic3RyaW5nKGNv
bnRlbnRUeXBlQmVnaW4gKyBjb250ZW50VHlwZVByZWZpeExlbmd0aCwgY29udGVudFR5cGVFbmQg
LSBjb250ZW50VHlwZUJlZ2luIC0gY29udGVudFR5cGVQcmVmaXhMZW5ndGgpKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgZm9ybS5hcHBlbmQobmFtZSwgRmlsZTo6Y3JlYXRlKGNvbnRl
eHQsIEJsb2I6OmNyZWF0ZShjb250ZXh0LCBTaGFyZWRCdWZmZXI6OmNyZWF0ZShib2R5QmVnaW4s
IGJvZHlMZW5ndGgpLmdldCgpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoY29udGVudFR5
cGUpKS5nZXQoKSwgZmlsZW5hbWUpLmdldCgpLCBmaWxlbmFtZSk7CisgICAgICAgICAgICBmb3Jt
LmFwcGVuZChuYW1lLCBGaWxlOjpjcmVhdGUoY29udGV4dCwgQmxvYjo6Y3JlYXRlKGNvbnRleHQs
IFZlY3RvciB7IGJvZHlCZWdpbiwgYm9keUxlbmd0aCB9LCBCbG9iOjpub3JtYWxpemVkQ29udGVu
dFR5cGUoY29udGVudFR5cGUpKS5nZXQoKSwgZmlsZW5hbWUpLmdldCgpLCBmaWxlbmFtZSk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKQEAgLTIyMiw3ICsyMjIsNyBA
QCBzdGF0aWMgdm9pZCByZXNvbHZlV2l0aFR5cGVBbmREYXRhKFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSwgRmV0Y2hCb2R5Q29ucwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRj
aEJvZHlDb25zdW1lcjo6VHlwZTo6QmxvYjoKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZUNhbGxi
YWNrVmFsdWVXaXRoTmV3bHlDcmVhdGVkPElETEludGVyZmFjZTxCbG9iPj4oWyZkYXRhLCAmbGVu
Z3RoLCAmY29udGVudFR5cGUsIGNvbnRleHRdKGF1dG8mKSB7Ci0gICAgICAgICAgICByZXR1cm4g
YmxvYkZyb21EYXRhKGNvbnRleHQsIGRhdGEsIGxlbmd0aCwgY29udGVudFR5cGUpOworICAgICAg
ICAgICAgcmV0dXJuIGJsb2JGcm9tRGF0YShjb250ZXh0LCB7IGRhdGEsIGxlbmd0aCB9LCBjb250
ZW50VHlwZSk7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBGZXRjaEJv
ZHlDb25zdW1lcjo6VHlwZTo6SlNPTjoKQEAgLTM1NCw4ICszNTQsOCBAQCBSZWY8QmxvYj4gRmV0
Y2hCb2R5Q29uc3VtZXI6OnRha2VBc0Jsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKICAgICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gQmxvYjo6Y3JlYXRlKGNvbnRl
eHQsIFZlY3Rvcjx1aW50OF90PigpLCBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUobV9jb250
ZW50VHlwZSkpOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCB0cnkgdG8gbW92ZSBtX2J1ZmZl
ciB0byBCbG9iIHdpdGhvdXQgZG9pbmcgZXh0cmEgY29weS4KLSAgICByZXR1cm4gYmxvYkZyb21E
YXRhKGNvbnRleHQsIG1fYnVmZmVyLT5kYXRhKCksIG1fYnVmZmVyLT5zaXplKCksIG1fY29udGVu
dFR5cGUpOworICAgIGF1dG8gZGF0YSA9IHN0ZDo6ZXhjaGFuZ2UobV9idWZmZXIsIG51bGxwdHIp
LT50YWtlRGF0YSgpOworICAgIHJldHVybiBibG9iRnJvbURhdGEoY29udGV4dCwgV1RGTW92ZShk
YXRhKSwgbV9jb250ZW50VHlwZSk7CiB9CiAKIFN0cmluZyBGZXRjaEJvZHlDb25zdW1lcjo6dGFr
ZUFzVGV4dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJHZXRSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCR2V0
UmVzdWx0LmNwcAppbmRleCBhMWViNDM0ZDViN2FhZDkzMWQxMWM3MzMzODE0ZjFiZjBlODlhYzBm
Li43NjJmOTQxYjgzYjk2ZWZjZTQ2NDBmMzMxZDU1NzdhMTBkZDcyNmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5jcHAKQEAgLTMyLDEx
ICszMiw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKElEQkdldFJlc3VsdCk7CiAKLXZvaWQgSURCR2V0UmVzdWx0OjpkYXRhRnJvbUJ1ZmZlcihT
aGFyZWRCdWZmZXImIGJ1ZmZlcikKLXsKLSAgICBtX3ZhbHVlID0gVGhyZWFkU2FmZURhdGFCdWZm
ZXI6OmNyZWF0ZSh7IGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkgfSk7Ci19Ci0KIElEQkdl
dFJlc3VsdDo6SURCR2V0UmVzdWx0KGNvbnN0IElEQkdldFJlc3VsdCYgdGhhdCwgSXNvbGF0ZWRD
b3B5VGFnKQogewogICAgIGlzb2xhdGVkQ29weSh0aGF0LCAqdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJHZXRSZXN1bHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkdldFJlc3VsdC5oCmluZGV4IDhiOTliN2ZhMTUy
N2E2Zjk0OGIzOWUyODdiNjgwNGM2Mjg1ZDhhYmIuLjA2ZDYyOTFiMDA4MTZlMDI4MDliODEwNjUw
MGEwOTczNzg3YmQ0YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkdldFJlc3VsdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkdldFJlc3VsdC5oCkBAIC0xMDMsOCArMTAzLDYgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVj
b2RlciYsIElEQkdldFJlc3VsdCYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZGF0YUZyb21CdWZm
ZXIoU2hhcmVkQnVmZmVyJik7Ci0KICAgICBzdGF0aWMgdm9pZCBpc29sYXRlZENvcHkoY29uc3Qg
SURCR2V0UmVzdWx0JiBzb3VyY2UsIElEQkdldFJlc3VsdCYgZGVzdGluYXRpb24pOwogCiAgICAg
SURCVmFsdWUgbV92YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFyZWNvcmRlci9NZWRpYVJlY29yZGVyLmNwcAppbmRleCA0NzVjYzg1ZjhmM2Q4NjM5ZTVmNjM2
NjBhN2RjNjJjZWY4YTdlZjY2Li4xMDYwZTJiNGFjYTJhZTliYjE1OTc5ZjlhYjJlODY1YmQ5NjQ3
NzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhcmVjb3JkZXIvTWVk
aWFSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXJlY29yZGVy
L01lZGlhUmVjb3JkZXIuY3BwCkBAIC0xOTgsNyArMTk4LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
TWVkaWFSZWNvcmRlcjo6c3RhcnRSZWNvcmRpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdGlt
ZVNsaWMKIAogc3RhdGljIGlubGluZSBSZWY8QmxvYkV2ZW50PiBjcmVhdGVEYXRhQXZhaWxhYmxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGRvdWJsZSB0aW1lQ29kZSkKIHsK
LSAgICBhdXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLnJl
bGVhc2VOb25OdWxsKCksIG1pbWVUeXBlKSA6IEJsb2I6OmNyZWF0ZShjb250ZXh0KTsKKyAgICBh
dXRvIGJsb2IgPSBidWZmZXIgPyBCbG9iOjpjcmVhdGUoY29udGV4dCwgYnVmZmVyLT50YWtlRGF0
YSgpLCBtaW1lVHlwZSkgOiBCbG9iOjpjcmVhdGUoY29udGV4dCk7CiAgICAgcmV0dXJuIEJsb2JF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYXRhYXZhaWxhYmxlRXZlbnQsIEJsb2JFdmVudDo6
SW5pdCB7IHsgZmFsc2UsIGZhbHNlLCBmYWxzZSB9LCBXVEZNb3ZlKGJsb2IpLCB0aW1lQ29kZSB9
LCBCbG9iRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAppbmRleCBhZDllNDQ5
OTYxYzg1NDViMjBkZDdmM2ExOGMwMWRiN2RmZDRhMmJjLi41Mzc4OTdlYWIwMzE3YzExODdjMmNk
NmIzYTZiZDQwZTllNDlhY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcApAQCAtNzksOCArNzksOCBAQCBOZXR3b3Jr
U2VuZFF1ZXVlIFJUQ0RhdGFDaGFubmVsOjpjcmVhdGVNZXNzYWdlUXVldWUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udAogICAgIHJldHVybiB7IGNvbnRleHQsIFsmY2hhbm5lbF0oYXV0byYg
dXRmOCkgewogICAgICAgICBpZiAoIWNoYW5uZWwubV9oYW5kbGVyLT5zZW5kU3RyaW5nRGF0YSh1
dGY4KSkKICAgICAgICAgICAgIGNoYW5uZWwuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgIkVy
cm9yIHNlbmRpbmcgc3RyaW5nIHRocm91Z2ggUlRDRGF0YUNoYW5uZWwuIl9zKTsKLSAgICB9LCBb
JmNoYW5uZWxdKGF1dG8qIGRhdGEsIHNpemVfdCBsZW5ndGgpIHsKLSAgICAgICAgaWYgKCFjaGFu
bmVsLm1faGFuZGxlci0+c2VuZFJhd0RhdGEoZGF0YSwgbGVuZ3RoKSkKKyAgICB9LCBbJmNoYW5u
ZWxdKGF1dG8mIHNwYW4pIHsKKyAgICAgICAgaWYgKCFjaGFubmVsLm1faGFuZGxlci0+c2VuZFJh
d0RhdGEoc3Bhbi5kYXRhKCksIHNwYW4uc2l6ZSgpKSkKICAgICAgICAgICAgIGNoYW5uZWwuc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpFcnJvciwgIkVycm9yIHNlbmRpbmcgYmluYXJ5IGRhdGEgdGhyb3Vn
aCBSVENEYXRhQ2hhbm5lbC4iX3MpOwogICAgIH0sIFsmY2hhbm5lbF0oRXhjZXB0aW9uQ29kZSBl
cnJvckNvZGUpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbnRleHQgPSBjaGFubmVsLnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkgewpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUlRDRGF0YUNoYW5u
ZWw6OmRpZFJlY2VpdmVSYXdEYXRhKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVfdCBkYXRhTGVu
Z3RoKQogewogICAgIHN3aXRjaCAobV9iaW5hcnlUeXBlKSB7CiAgICAgY2FzZSBCaW5hcnlUeXBl
OjpCbG9iOgotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVh
dGUoQmxvYjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgU2hhcmVkQnVmZmVyOjpj
cmVhdGUoZGF0YSwgZGF0YUxlbmd0aCksIGVtcHR5U3RyaW5nKCkpLCB7IH0pKTsKKyAgICAgICAg
c2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKEJsb2I6OmNyZWF0ZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3RvciB7IGRhdGEsIGRhdGFMZW5ndGggfSwgZW1w
dHlTdHJpbmcoKSksIHsgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBCaW5hcnlUeXBl
OjpBcnJheUJ1ZmZlcjoKICAgICAgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0YSwgZGF0YUxlbmd0aCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVy
LmNwcAppbmRleCA1ZDA2NjQzN2E4YjRjYTQ2MzgzMTcyMTA0YjRjODEzZmFlZjJlYmU5Li4xMWM2
YTliODM2MDE4MmQyYjc5NDkwYmYwNDVjZWQ4ZWZhMDk2YmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1dlYkNvcmVQYXN0ZWJvYXJkRmlsZVJlYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9XZWJDb3JlUGFzdGVib2FyZEZpbGVSZWFkZXIuY3BwCkBAIC00
MSw3ICs0MSw3IEBAIHZvaWQgV2ViQ29yZVBhc3RlYm9hcmRGaWxlUmVhZGVyOjpyZWFkRmlsZW5h
bWUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKIAogdm9pZCBXZWJDb3JlUGFzdGVib2FyZEZpbGVS
ZWFkZXI6OnJlYWRCdWZmZXIoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiB0
eXBlLCBSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAgICBmaWxlcy5hcHBlbmQoRmls
ZTo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIEJsb2I6OmNyZWF0ZShjb250ZXh0LmdldCgpLCBidWZm
ZXIuZ2V0KCksIHR5cGUpLCBmaWxlbmFtZSkpOworICAgIGZpbGVzLmFwcGVuZChGaWxlOjpjcmVh
dGUoY29udGV4dC5nZXQoKSwgQmxvYjo6Y3JlYXRlKGNvbnRleHQuZ2V0KCksIGJ1ZmZlci0+dGFr
ZURhdGEoKSwgdHlwZSksIGZpbGVuYW1lKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KaW5kZXggNzk0MjFk
OTJlYzVlNWQzNWUyNjc5YWM1NjhjM2QwMTJmMDAzYTNmMC4uOTkyZjg0ODFlMTJkZTU5ZWYwZGRj
NzMwMGE5ZDc1YTA2YjE1MGM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9j
b2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0KQEAgLTI1NSw3ICsyNTUsNyBAQCBzdGF0
aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50
KEZyYW1lJiBmcmFtZSwgRG9jdQogICAgICAgICBmcmFtZS5lZGl0b3IoKS5yZWdpc3RlckF0dGFj
aG1lbnRJZGVudGlmaWVyKGF0dGFjaG1lbnQtPmVuc3VyZVVuaXF1ZUlkZW50aWZpZXIoKSwgY29u
dGVudFR5cGUsIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lLCBXVEZNb3ZlKGJ1ZmZlcikpOwog
ICAgICAgICBpZiAoY29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRh
dGlvbihjb250ZW50VHlwZSkpIHsKICAgICAgICAgICAgIGF1dG8gaW1hZ2UgPSBIVE1MSW1hZ2VF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgICAgICAgICAgaW1hZ2UtPnNldEF0dHJpYnV0
ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0
ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgp
LCBjb250ZW50VHlwZSkpKTsKKyAgICAgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RV
UkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+dGFrZURhdGEoKSwg
Y29udGVudFR5cGUpKSk7CiAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0YWNobWVudEVsZW1lbnQo
V1RGTW92ZShhdHRhY2htZW50KSk7CiAgICAgICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0
aCkKICAgICAgICAgICAgICAgICBpbWFnZS0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXph
dGlvbihIVE1MTmFtZXM6OndpZHRoQXR0ciwgQXRvbVN0cmluZzo6bnVtYmVyKCpwcmVmZXJyZWRT
aXplLndpZHRoKSk7CkBAIC0yNjcsNyArMjY3LDcgQEAgc3RhdGljIFJlZjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZvckltYWdlQXR0YWNobWVudChGcmFtZSYgZnJhbWUsIERvY3UK
ICAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChXVEZNb3ZlKGF0dGFjaG1lbnQpKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGF0dGFjaG1lbnQtPnNldEZpbGUoRmls
ZTo6Y3JlYXRlKCZkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgp
LCBjb250ZW50VHlwZSksIGRlZmF1bHRJbWFnZUF0dGFjaG1lbnROYW1lKSwgSFRNTEF0dGFjaG1l
bnRFbGVtZW50OjpVcGRhdGVEaXNwbGF5QXR0cmlidXRlczo6WWVzKTsKKyAgICAgICAgYXR0YWNo
bWVudC0+c2V0RmlsZShGaWxlOjpjcmVhdGUoJmRvY3VtZW50LCBCbG9iOjpjcmVhdGUoJmRvY3Vt
ZW50LCBidWZmZXItPnRha2VEYXRhKCksIGNvbnRlbnRUeXBlKSwgZGVmYXVsdEltYWdlQXR0YWNo
bWVudE5hbWUpLCBIVE1MQXR0YWNobWVudEVsZW1lbnQ6OlVwZGF0ZURpc3BsYXlBdHRyaWJ1dGVz
OjpZZXMpOwogICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoV1RGTW92ZShhdHRhY2htZW50
KSk7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTM2MSw3ICszNjEsNyBAQCBzdGF0
aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRXaXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBE
b2N1bWVudEZyYWdtZW50JiBmcgogICAgICAgICBpZiAoc3VwcG9ydHNDbGllbnRTaWRlQXR0YWNo
bWVudERhdGEoZnJhbWUpKSB7CiAgICAgICAgICAgICBpZiAoaXM8SFRNTEltYWdlRWxlbWVudD4o
b3JpZ2luYWxFbGVtZW50LmdldCgpKSAmJiBjb250ZW50VHlwZUlzU3VpdGFibGVGb3JJbmxpbmVJ
bWFnZVJlcHJlc2VudGF0aW9uKGluZm8uY29udGVudFR5cGUpKSB7CiAgICAgICAgICAgICAgICAg
YXV0byYgaW1hZ2UgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50PihvcmlnaW5hbEVsZW1lbnQu
Z2V0KCkpOwotICAgICAgICAgICAgICAgIGltYWdlLnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTCgqZnJh
bWUuZG9jdW1lbnQoKSwgQmxvYjo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCksIGluZm8uZGF0YSwg
aW5mby5jb250ZW50VHlwZSkpKTsKKyAgICAgICAgICAgICAgICBpbWFnZS5zZXRBdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVP
YmplY3RVUkwoKmZyYW1lLmRvY3VtZW50KCksIEJsb2I6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgp
LCBpbmZvLmRhdGEtPmNvcHlEYXRhKCksIGluZm8uY29udGVudFR5cGUpKSk7CiAgICAgICAgICAg
ICAgICAgaW1hZ2Uuc2V0QXR0YWNobWVudEVsZW1lbnQoYXR0YWNobWVudC5jb3B5UmVmKCkpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBhdHRhY2htZW50LT51cGRhdGVB
dHRyaWJ1dGVzKGluZm8uZGF0YS0+c2l6ZSgpLCBpbmZvLmNvbnRlbnRUeXBlLCBpbmZvLmZpbGVO
YW1lKTsKQEAgLTM2OSw3ICszNjksNyBAQCBzdGF0aWMgdm9pZCByZXBsYWNlUmljaENvbnRlbnRX
aXRoQXR0YWNobWVudHMoRnJhbWUmIGZyYW1lLCBEb2N1bWVudEZyYWdtZW50JiBmcgogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZnJhbWUuZWRpdG9yKCkucmVnaXN0ZXJBdHRhY2htZW50SWRl
bnRpZmllcihhdHRhY2htZW50LT5lbnN1cmVVbmlxdWVJZGVudGlmaWVyKCksIFdURk1vdmUoaW5m
by5jb250ZW50VHlwZSksIFdURk1vdmUoaW5mby5maWxlTmFtZSksIFdURk1vdmUoaW5mby5kYXRh
KSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZp
bGU6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQo
KSwgV1RGTW92ZShpbmZvLmRhdGEpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92
ZShpbmZvLmZpbGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0
dHJpYnV0ZXM6Olllcyk7CisgICAgICAgICAgICBhdHRhY2htZW50LT5zZXRGaWxlKEZpbGU6OmNy
ZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSwgaW5m
by5kYXRhLT5jb3B5RGF0YSgpLCBXVEZNb3ZlKGluZm8uY29udGVudFR5cGUpKSwgV1RGTW92ZShp
bmZvLmZpbGVOYW1lKSksIEhUTUxBdHRhY2htZW50RWxlbWVudDo6VXBkYXRlRGlzcGxheUF0dHJp
YnV0ZXM6Olllcyk7CiAgICAgICAgICAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChXVEZNb3ZlKGF0
dGFjaG1lbnQpLCBXVEZNb3ZlKG9yaWdpbmFsRWxlbWVudCkpOwogICAgICAgICB9CiAgICAgfQpA
QCAtNDEwLDggKzQxMCw4IEBAIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVu
dEFuZEFkZFJlc291cmNlcyhGcmFtZSYgZnJhbWUsIE5TQXR0cmlidXRlCiAgICAgfQogCiAgICAg
SGFzaE1hcDxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiBibG9iVVJMTWFwOwotICAgIGZvciAoY29u
c3QgUmVmPEFyY2hpdmVSZXNvdXJjZT4mIHN1YnJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJj
ZXMucmVzb3VyY2VzKSB7Ci0gICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZG9jdW1l
bnQsIHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1lVHlwZSgpKTsKKyAgICBm
b3IgKGF1dG8mIHN1YnJlc291cmNlIDogZnJhZ21lbnRBbmRSZXNvdXJjZXMucmVzb3VyY2VzKSB7
CisgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIHN1YnJlc291cmNl
LT5kYXRhKCkuY29weURhdGEoKSwgc3VicmVzb3VyY2UtPm1pbWVUeXBlKCkpOwogICAgICAgICBT
dHJpbmcgYmxvYlVSTCA9IERPTVVSTDo6Y3JlYXRlT2JqZWN0VVJMKGRvY3VtZW50LCBibG9iKTsK
ICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3VicmVzb3VyY2UtPnVybCgpLnN0cmluZygpLCBibG9i
VVJMKTsKICAgICB9CkBAIC00NjAsNyArNDYwLDcgQEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1h
cmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwgRG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0K
ICAgICAgICAgYXV0byYgc3VicmVzb3VyY2VVUkwgPSBzdWJyZXNvdXJjZS0+dXJsKCk7CiAgICAg
ICAgIGlmICghc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHN1YnJlc291cmNlVVJMKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhdXRvIGJsb2IgPSBCbG9iOjpjcmVhdGUoJmRl
c3RpbmF0aW9uRG9jdW1lbnQsIHN1YnJlc291cmNlLT5kYXRhKCksIHN1YnJlc291cmNlLT5taW1l
VHlwZSgpKTsKKyAgICAgICAgYXV0byBibG9iID0gQmxvYjo6Y3JlYXRlKCZkZXN0aW5hdGlvbkRv
Y3VtZW50LCBzdWJyZXNvdXJjZS0+ZGF0YSgpLmNvcHlEYXRhKCksIHN1YnJlc291cmNlLT5taW1l
VHlwZSgpKTsKICAgICAgICAgU3RyaW5nIGJsb2JVUkwgPSBET01VUkw6OmNyZWF0ZU9iamVjdFVS
TChkZXN0aW5hdGlvbkRvY3VtZW50LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1hcC5zZXQoc3Vi
cmVzb3VyY2VVUkwuc3RyaW5nKCksIGJsb2JVUkwpOwogICAgIH0KQEAgLTQ4NCwxMCArNDg0LDcg
QEAgc3RhdGljIFN0cmluZyBzYW5pdGl6ZU1hcmt1cFdpdGhBcmNoaXZlKEZyYW1lJiBmcmFtZSwg
RG9jdW1lbnQmIGRlc3RpbmF0aW9uRG9jdW0KICAgICAgICAgYXV0byBzdWJmcmFtZU1hcmt1cCA9
IHNhbml0aXplTWFya3VwV2l0aEFyY2hpdmUoZnJhbWUsIGRlc3RpbmF0aW9uRG9jdW1lbnQsIHN1
YmZyYW1lQ29udGVudCwgTVNPTGlzdFF1aXJrczo6RGlzYWJsZWQsIGNhblNob3dNSU1FVHlwZUFz
SFRNTCk7CiAKICAgICAgICAgQ1N0cmluZyB1dGY4ID0gc3ViZnJhbWVNYXJrdXAudXRmOCgpOwot
ICAgICAgICBWZWN0b3I8dWludDhfdD4gYmxvYkJ1ZmZlcjsKLSAgICAgICAgYmxvYkJ1ZmZlci5y
ZXNlcnZlQ2FwYWNpdHkodXRmOC5sZW5ndGgoKSk7Ci0gICAgICAgIGJsb2JCdWZmZXIuYXBwZW5k
KHV0ZjguZGF0YUFzVUludDhQdHIoKSwgdXRmOC5sZW5ndGgoKSk7Ci0gICAgICAgIGF1dG8gYmxv
YiA9IEJsb2I6OmNyZWF0ZSgmZGVzdGluYXRpb25Eb2N1bWVudCwgV1RGTW92ZShibG9iQnVmZmVy
KSwgdHlwZSk7CisgICAgICAgIGF1dG8gYmxvYiA9IEJsb2I6OmNyZWF0ZSgmZGVzdGluYXRpb25E
b2N1bWVudCwgVmVjdG9yIHsgdXRmOC5kYXRhQXNVSW50OFB0cigpLCB1dGY4Lmxlbmd0aCgpIH0s
IHR5cGUpOwogCiAgICAgICAgIFN0cmluZyBzdWJmcmFtZUJsb2JVUkwgPSBET01VUkw6OmNyZWF0
ZU9iamVjdFVSTChkZXN0aW5hdGlvbkRvY3VtZW50LCBibG9iKTsKICAgICAgICAgYmxvYlVSTE1h
cC5zZXQoc3ViZnJhbWVVUkwuc3RyaW5nKCksIHN1YmZyYW1lQmxvYlVSTCk7CkBAIC02ODcsNyAr
Njg0LDcgQEAgYm9vbCBXZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZl
cj4mJiBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwKICAgICBpZiAoc2hvdWxkUmVwbGFjZVJp
Y2hDb250ZW50V2l0aEF0dGFjaG1lbnRzKCkpCiAgICAgICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZy
YWdtZW50Rm9ySW1hZ2VBdHRhY2htZW50KGZyYW1lLCBkb2N1bWVudCwgV1RGTW92ZShidWZmZXIp
LCB0eXBlLCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CiAgICAgZWxzZQotICAgICAgICBh
ZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6
OmNyZWF0ZU9iamVjdFVSTChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVy
LmdldCgpLCB0eXBlKSksIHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpKTsKKyAgICAgICAgYWRk
RnJhZ21lbnQoY3JlYXRlRnJhZ21lbnRGb3JJbWFnZUFuZFVSTChkb2N1bWVudCwgRE9NVVJMOjpj
cmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEJsb2I6OmNyZWF0ZSgmZG9jdW1lbnQsIGJ1ZmZlci0+
dGFrZURhdGEoKSwgdHlwZSkpLCBwcmVmZXJyZWRQcmVzZW50YXRpb25TaXplKSk7CiAKICAgICBy
ZXR1cm4gZnJhZ21lbnQ7CiB9CkBAIC03NjMsNyArNzYwLDcgQEAgc3RhdGljIFJlZjxIVE1MRWxl
bWVudD4gYXR0YWNobWVudEZvckRhdGEoRnJhbWUmIGZyYW1lLCBTaGFyZWRCdWZmZXImIGJ1ZmZl
ciwgY28KICAgICAgICAgZmlsZU5hbWUgPSBuYW1lOwogCiAgICAgaWYgKCFzdXBwb3J0c0NsaWVu
dFNpZGVBdHRhY2htZW50RGF0YShmcmFtZSkpIHsKLSAgICAgICAgYXR0YWNobWVudC0+c2V0Rmls
ZShGaWxlOjpjcmVhdGUoZG9jdW1lbnQucHRyKCksIEJsb2I6OmNyZWF0ZShkb2N1bWVudC5wdHIo
KSwgYnVmZmVyLCBXVEZNb3ZlKGF0dGFjaG1lbnRUeXBlKSksIGZpbGVOYW1lKSk7CisgICAgICAg
IGF0dGFjaG1lbnQtPnNldEZpbGUoRmlsZTo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBCbG9iOjpj
cmVhdGUoZG9jdW1lbnQucHRyKCksIGJ1ZmZlci5jb3B5RGF0YSgpLCBXVEZNb3ZlKGF0dGFjaG1l
bnRUeXBlKSksIGZpbGVOYW1lKSk7CiAgICAgICAgIHJldHVybiBhdHRhY2htZW50OwogICAgIH0K
IApAQCAtNzcxLDcgKzc2OCw3IEBAIHN0YXRpYyBSZWY8SFRNTEVsZW1lbnQ+IGF0dGFjaG1lbnRG
b3JEYXRhKEZyYW1lJiBmcmFtZSwgU2hhcmVkQnVmZmVyJiBidWZmZXIsIGNvCiAKICAgICBpZiAo
Y29udGVudFR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VSZXByZXNlbnRhdGlvbihhdHRhY2ht
ZW50VHlwZSkpIHsKICAgICAgICAgYXV0byBpbWFnZSA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCk7Ci0gICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1l
bnQsIEZpbGU6OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnB0
cigpLCBidWZmZXIsIFdURk1vdmUoYXR0YWNobWVudFR5cGUpKSwgV1RGTW92ZShmaWxlTmFtZSkp
KSk7CisgICAgICAgIGltYWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhU
TUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9jdW1lbnQsIEZpbGU6
OmNyZWF0ZShkb2N1bWVudC5wdHIoKSwgQmxvYjo6Y3JlYXRlKGRvY3VtZW50LnB0cigpLCBidWZm
ZXIuY29weURhdGEoKSwgV1RGTW92ZShhdHRhY2htZW50VHlwZSkpLCBXVEZNb3ZlKGZpbGVOYW1l
KSkpKTsKICAgICAgICAgaW1hZ2UtPnNldEF0dGFjaG1lbnRFbGVtZW50KFdURk1vdmUoYXR0YWNo
bWVudCkpOwogICAgICAgICBpZiAocHJlZmVycmVkU2l6ZS53aWR0aCkKICAgICAgICAgICAgIGlt
YWdlLT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6d2lkdGhB
dHRyLCBBdG9tU3RyaW5nOjpudW1iZXIoKnByZWZlcnJlZFNpemUud2lkdGgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL1dlYkNvbnRlbnRSZWFkZXJHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKaW5kZXgg
Mjc0NGNkNmZlM2M2MTkwYmI4Y2E0ZTE0Njg2NDBiNDczMmIwZTQzMC4uYWFkNTFkZWFlOGVlMDRk
YzM4NzExMGE5ZTExZDJjZWViNWU2MDE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ndGsvV2ViQ29udGVudFJlYWRlckd0ay5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBX
ZWJDb250ZW50UmVhZGVyOjpyZWFkSW1hZ2UoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGNv
bnN0IFN0cmluZyYgdHlwZSwKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7CiAgICAg
YXV0byYgZG9jdW1lbnQgPSAqZnJhbWUuZG9jdW1lbnQoKTsKLSAgICBhZGRGcmFnbWVudChjcmVh
dGVGcmFnbWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVS
TChkb2N1bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLmdldCgpLCB0eXBlKSks
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpKTsKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFn
bWVudEZvckltYWdlQW5kVVJMKGRvY3VtZW50LCBET01VUkw6OmNyZWF0ZU9iamVjdFVSTChkb2N1
bWVudCwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCwgYnVmZmVyLT50YWtlRGF0YSgpLCB0eXBlKSks
IHByZWZlcnJlZFByZXNlbnRhdGlvblNpemUpKTsKIAogICAgIHJldHVybiBmcmFnbWVudDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL0Jsb2IuY3BwCmluZGV4IGUxZWY0YWI5NDM2NjM4YTM0MzYzNzUyNDY5NjYz
MTQ1ZDg3NDdhYjguLjNmNDA5YTQ3ZWQzYjVmZDZmZDkxZTliZTdmOGYwYjYyMzZkYzdiMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZmlsZWFwaS9CbG9iLmNwcApAQCAtMTA4LDE3ICsxMDgsNiBAQCBCbG9iOjpCbG9iKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFZlY3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYg
YmxvYlBhcnRWYQogICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTCht
X2ludGVybmFsVVJMLCBidWlsZGVyLmZpbmFsaXplKCksIG1fdHlwZSk7CiB9CiAKLUJsb2I6OkJs
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU2hhcmVkQnVmZmVyJiBi
dWZmZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCi0gICAgOiBBY3RpdmVET01PYmplY3Qo
Y29udGV4dCkKLSAgICAsIG1fdHlwZShjb250ZW50VHlwZSkKLSAgICAsIG1fc2l6ZShidWZmZXIu
c2l6ZSgpKQotewotICAgIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzOwotICAgIGJsb2JQYXJ0
cy5hcHBlbmQoVmVjdG9yIHsgYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSB9KTsKLSAgICBt
X2ludGVybmFsVVJMID0gQmxvYlVSTDo6Y3JlYXRlSW50ZXJuYWxVUkwoKTsKLSAgICBUaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwobV9pbnRlcm5hbFVSTCwgV1RGTW92ZShi
bG9iUGFydHMpLCBjb250ZW50VHlwZSk7Ci19Ci0KIEJsb2I6OkJsb2IoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKICAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0KQogICAgICwgbV90eXBl
KGNvbnRlbnRUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAppbmRleCBlNDI1MWIyZTZjYTRlYWQwNjBj
NWJmNjM1ZWQ1NGQxN2M5MzQ3M2Q0Li5mZDE3OWUwNjIxMTZlMjQ0M2RlMTI4NDM1ZGVkYWU4NzMw
NjVlYTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuaApAQCAtNzUsMTMgKzc1LDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gYmxvYjsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTaGFyZWRCdWZmZXImIGJ1
ZmZlciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKLSAgICB7Ci0gICAgICAgIGF1dG8gYmxv
YiA9IGFkb3B0UmVmKCpuZXcgQmxvYihjb250ZXh0LCBidWZmZXIsIGNvbnRlbnRUeXBlKSk7Ci0g
ICAgICAgIGJsb2ItPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgICAgICByZXR1cm4gYmxvYjsKLSAg
ICB9Ci0KICAgICBzdGF0aWMgUmVmPEJsb2I+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQogICAgIHsKICAgICAgICAgYXV0byBibG9iID0gYWRvcHRSZWYoKm5ldyBCbG9iKGNvbnRl
eHQsIFdURk1vdmUoZGF0YSksIGNvbnRlbnRUeXBlKSk7CkBAIC0xMzEsNyArMTI0LDYgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJsb2IoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopOwogICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFZl
Y3RvcjxCbG9iUGFydFZhcmlhbnQ+JiYsIGNvbnN0IEJsb2JQcm9wZXJ0eUJhZyYpOwotICAgIEJs
b2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFNoYXJlZEJ1ZmZlciYsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpOwogICAgIEJsb2IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFZl
Y3Rvcjx1aW50OF90PiYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKIAogICAgIGVudW0g
UmVmZXJlbmNpbmdFeGlzdGluZ0Jsb2JDb25zdHJ1Y3RvciB7IHJlZmVyZW5jaW5nRXhpc3RpbmdC
bG9iQ29uc3RydWN0b3IgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvTmV0
d29ya1NlbmRRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVl
dWUuY3BwCmluZGV4IDdmY2IzZWUyNzIyM2ZkZTI1OTQ2N2Q3NjhmOGI3MzcyZGYxMDJjNGUuLmE2
NmIxOTFkNjg2ZDNkZDQ4ZGViMGQ3ZDdhYzBiYjJjYTA3YjkzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvTmV0d29ya1NlbmRRdWV1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZmlsZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIE5l
dHdvcmtTZW5kUXVldWU6OmVucXVldWUoY29uc3QgSlNDOjpBcnJheUJ1ZmZlciYgYmluYXJ5RGF0
YSwgdW5zaWduZWQgYnl0ZQogewogICAgIGlmIChtX3F1ZXVlLmlzRW1wdHkoKSkgewogICAgICAg
ICBhdXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURhdGEuZGF0
YSgpKTsKLSAgICAgICAgbV93cml0ZVJhd0RhdGEoZGF0YSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5n
dGgpOworICAgICAgICBtX3dyaXRlUmF3RGF0YShTcGFuIHsgZGF0YSArIGJ5dGVPZmZzZXQsIGJ5
dGVMZW5ndGggfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV9xdWV1ZS5hcHBlbmQo
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJpbmFyeURh
dGEuZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgpKTsKQEAgLTkzLDcgKzkzLDcgQEAg
dm9pZCBOZXR3b3JrU2VuZFF1ZXVlOjpwcm9jZXNzTWVzc2FnZXMoKQogICAgICAgICBzd2l0Y2hP
bihtX3F1ZXVlLmZpcnN0KCksIFt0aGlzXShjb25zdCBDU3RyaW5nJiB1dGY4KSB7CiAgICAgICAg
ICAgICBtX3dyaXRlU3RyaW5nKHV0ZjgpOwogICAgICAgICB9LCBbdGhpc10oUmVmPFNoYXJlZEJ1
ZmZlcj4mIGRhdGEpIHsKLSAgICAgICAgICAgIG1fd3JpdGVSYXdEYXRhKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGRhdGEtPmZvckVhY2hTZWdtZW50KG1fd3JpdGVS
YXdEYXRhKTsKICAgICAgICAgfSwgW3RoaXMsICZzaG91bGRTdG9wUHJvY2Vzc2luZ10oVW5pcXVl
UmVmPEJsb2JMb2FkZXI+JiBsb2FkZXIpIHsKICAgICAgICAgICAgIGF1dG8gZXJyb3JDb2RlID0g
bG9hZGVyLT5lcnJvckNvZGUoKTsKICAgICAgICAgICAgIGlmIChsb2FkZXItPmlzTG9hZGluZygp
IHx8IChlcnJvckNvZGUgJiYgZXJyb3JDb2RlLnZhbHVlKCkgPT0gQWJvcnRFcnJvcikpIHsKQEAg
LTEwMiw3ICsxMDIsNyBAQCB2b2lkIE5ldHdvcmtTZW5kUXVldWU6OnByb2Nlc3NNZXNzYWdlcygp
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjb25zdCBhdXRvJiByZXN1bHQgPSBs
b2FkZXItPmFycmF5QnVmZmVyUmVzdWx0KCkpIHsKLSAgICAgICAgICAgICAgICBtX3dyaXRlUmF3
RGF0YShzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocmVzdWx0LT5kYXRhKCkpLCByZXN1bHQt
PmJ5dGVMZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgbV93cml0ZVJhd0RhdGEoU3BhbiB7IHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihyZXN1bHQtPmRhdGEoKSksIHJlc3VsdC0+Ynl0ZUxl
bmd0aCgpIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIEFTU0VSVChlcnJvckNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9OZXR3b3JrU2VuZFF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtT
ZW5kUXVldWUuaAppbmRleCA1ZWU2NDVmYmVjMzNlOWNlZDM1NDAyNThhYTYwMjdlNzM4NThmNTgx
Li45MTE0ZmUyMTZhMjQ3MWQ0NTAyNzRiZGUwM2Y4MDE2ODBmMWVlNzA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9maWxlYXBpL05ldHdvcmtTZW5kUXVldWUuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgogI2luY2x1ZGUgPHd0Zi9Vbmlx
dWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CkBAIC00Nyw3ICs0OCw3IEBAIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFdFQkNPUkVf
RVhQT1JUIE5ldHdvcmtTZW5kUXVldWUgOiBwdWJsaWMgQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIgewogcHVibGljOgogICAgIHVzaW5nIFdyaXRlU3RyaW5nID0gRnVuY3Rpb248dm9pZChjb25z
dCBDU3RyaW5nJiB1dGY4KT47Ci0gICAgdXNpbmcgV3JpdGVSYXdEYXRhID0gRnVuY3Rpb248dm9p
ZChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT47CisgICAgdXNpbmcgV3JpdGVSYXdEYXRhID0gRnVu
Y3Rpb248dm9pZChjb25zdCBTcGFuPGNvbnN0IHVpbnQ4X3Q+Jik+OwogICAgIGVudW0gY2xhc3Mg
Q29udGludWUgeyBObywgWWVzIH07CiAgICAgdXNpbmcgUHJvY2Vzc0Vycm9yID0gRnVuY3Rpb248
Q29udGludWUoRXhjZXB0aW9uQ29kZSk+OwogICAgIE5ldHdvcmtTZW5kUXVldWUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFdyaXRlU3RyaW5nJiYsIFdyaXRlUmF3RGF0YSYmLCBQcm9jZXNzRXJy
b3ImJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRhY2htZW50RWxlbWVudC5jcHAK
aW5kZXggNDk2YjQxMTRlNzliNTA5NDZjZWNhMDY1NmQwYWQ4Y2YyMDY5MzY4NS4uYjBlOWY1MjIy
Y2I2ZTA1OGVjNWY5MDBlN2FmODAyZDAyOTBjYzA5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEF0dGFjaG1lbnRFbGVtZW50LmNwcApAQCAtMjI2LDEwICsyMjYsMTAgQEAgc3RhdGlj
IGJvb2wgbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVk
SW1hZ2VNSU1FVHlwZShtaW1lVHlwZSkgfHwgTUlNRVR5cGVSZWdpc3RyeTo6aXNQREZNSU1FVHlw
ZShtaW1lVHlwZSk7CiB9CiAKLXZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNs
b3NpbmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRC
dWZmZXI+JiYgZGF0YSkKK3ZvaWQgSFRNTEF0dGFjaG1lbnRFbGVtZW50Ojp1cGRhdGVFbmNsb3Np
bmdJbWFnZVdpdGhEYXRhKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogewogICAgIGF1dG8qIGhvc3RFbGVtZW50ID0gc2hhZG93SG9zdCgpOwot
ICAgIGlmICghaXM8SFRNTEltYWdlRWxlbWVudD4oaG9zdEVsZW1lbnQpIHx8ICFkYXRhLT5zaXpl
KCkpCisgICAgaWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pihob3N0RWxlbWVudCkgfHwgIWJ1ZmZl
ci0+c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWltZVR5cGUgPSBjb250
ZW50VHlwZTsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6
dXBkYXRlRW5jbG9zaW5nSW1hZ2VXaXRoRGF0YShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeQogICAg
IGlmICghbWltZVR5cGVJc1N1aXRhYmxlRm9ySW5saW5lSW1hZ2VBdHRhY2htZW50KG1pbWVUeXBl
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaG9zdEVsZW1lbnQtPnNldEF0dHJpYnV0ZVdpdGhv
dXRTeW5jaHJvbml6YXRpb24oSFRNTE5hbWVzOjpzcmNBdHRyLCBET01VUkw6OmNyZWF0ZU9iamVj
dFVSTChkb2N1bWVudCgpLCBCbG9iOjpjcmVhdGUoJmRvY3VtZW50KCksIFdURk1vdmUoZGF0YSks
IG1pbWVUeXBlKSkpOworICAgIGhvc3RFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKEhUTUxOYW1lczo6c3JjQXR0ciwgRE9NVVJMOjpjcmVhdGVPYmplY3RVUkwoZG9j
dW1lbnQoKSwgQmxvYjo6Y3JlYXRlKCZkb2N1bWVudCgpLCBidWZmZXItPnRha2VEYXRhKCksIG1p
bWVUeXBlKSkpOwogfQogCiB2b2lkIEhUTUxBdHRhY2htZW50RWxlbWVudDo6dXBkYXRlVGh1bWJu
YWlsKGNvbnN0IFJlZlB0cjxJbWFnZT4mIHRodW1ibmFpbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRl
eCBkNGY3ODczZTg1ZjkxMzE2MDEyYjk0NDA4NGY5MjA5NzYwMWUwNjZkLi4xM2I1OWYyZjAzNGNi
YTIxNjQ4ODFlZGM3MmMwNjNkNzliZmJhNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC01NDcs
NyArNTQ3LDkgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25z
ZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICAgICAgICAgICAgICBtX3Jl
c291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIHByZXZpb3VzUmVzb3Vy
Y2VEYXRhLT5jb250ZW50KCksIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5iYXNlNjRFbmNvZGVkKCkp
OwogICAgICAgICAgICAgZWxzZSBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEtPmhhc0J1ZmZlcmVk
RGF0YSgpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c0J1ZmZlciA9IHByZXZpb3Vz
UmVzb3VyY2VEYXRhLT5idWZmZXIoKTsKLSAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEt
Pm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgcHJldmlvdXNCdWZmZXItPmRhdGEoKSwg
cHJldmlvdXNCdWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNCdWZmZXIt
PmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICAgICAgICAg
IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBzZWdtZW50
LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJp
bmcoUHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjptaW1lVHlwZUtleSwgcHJldmlvdXNSZXNv
dXJjZURhdGEtPm1pbWVUeXBlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKaW5kZXggZGY2N2MxNTQ0ODQ0ODI3NzM5YWQzZTI3YzBjMzY5NzIzYWU3OTM5MS4uNDZk
MzdiYmQ0OWQ5ZDIxMzQwOTcwMzZiZTNhMmUwYWMzODdiM2I1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0xMTAyLDggKzExMDIsMTEgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6Y29udGludWVBZnRlckNvbnRlbnRQb2xpY3koUG9saWN5QWN0aW9uIHBvbGlj
eSkKIAogICAgIGlmICghaXNTdG9wcGluZygpICYmIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgp
ICYmIGlzTG9hZGluZ01haW5SZXNvdXJjZSgpKSB7CiAgICAgICAgIGF1dG8gY29udGVudCA9IG1f
c3Vic3RpdHV0ZURhdGEuY29udGVudCgpOwotICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50
LT5zaXplKCkpCi0gICAgICAgICAgICBkYXRhUmVjZWl2ZWQoY29udGVudC0+ZGF0YSgpLCBjb250
ZW50LT5zaXplKCkpOworICAgICAgICBpZiAoY29udGVudCAmJiBjb250ZW50LT5zaXplKCkpIHsK
KyAgICAgICAgICAgIGNvbnRlbnQtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7
CisgICAgICAgICAgICAgICAgZGF0YVJlY2VpdmVkKHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNp
emUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogICAgICAgICBpZiAoaXNMb2FkaW5n
TWFpblJlc291cmNlKCkpCiAgICAgICAgICAgICBmaW5pc2hlZExvYWRpbmcoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRl
eCA3OTc5ZDk5Yzg5MjRhZTZmN2ZjYjYxYTViOTczOTgxY2IzMDM0OTYxLi5kOTIwMjc0ZmIzMjU2
MGE0ZmY2MmE2MmU5YWExMWZmY2E4MWI1YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNDgxLDE0ICs0ODEsMjAgQEAg
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQg
bG9uZyBpZGVudGlmaWVyKQogCiAgICAgICAgIGlmIChvcHRpb25zKCkuZmlsdGVyaW5nUG9saWN5
ID09IFJlc3BvbnNlRmlsdGVyaW5nUG9saWN5OjpEaXNhYmxlKSB7CiAgICAgICAgICAgICBtX2Ns
aWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKLSAgICAgICAg
ICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpKQotICAgICAgICAgICAgICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlLT5yZXNvdXJjZUJ1ZmZlcigpLT5kYXRh
KCksIG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBp
ZiAoYXV0byogYnVmZmVyID0gbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKSkgeworICAgICAg
ICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaFNlZ21lbnQoWyZdKGF1dG8mIHNlZ21lbnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHNlZ21lbnQuZGF0YSgp
LCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQocmVzcG9uc2UudHlwZSgpID09IFJl
c291cmNlUmVzcG9uc2U6OlR5cGU6OkRlZmF1bHQpOwogCiAgICAgICAgICAgICBtX2NsaWVudC0+
ZGlkUmVjZWl2ZVJlc3BvbnNlKGlkZW50aWZpZXIsIFJlc291cmNlUmVzcG9uc2U6OmZpbHRlcihy
ZXNwb25zZSwgbV9vcHRpb25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlh
bHM6OkluY2x1ZGUgPyBSZXNvdXJjZVJlc3BvbnNlOjpQZXJmb3JtRXhwb3NlQWxsSGVhZGVyc0No
ZWNrOjpObyA6IFJlc291cmNlUmVzcG9uc2U6OlBlcmZvcm1FeHBvc2VBbGxIZWFkZXJzQ2hlY2s6
OlllcykpOwotICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNlQnVmZmVyKCkpCi0g
ICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2UtPnJlc291
cmNlQnVmZmVyKCktPmRhdGEoKSwgbV9yZXNvdXJjZS0+cmVzb3VyY2VCdWZmZXIoKS0+c2l6ZSgp
KTsKKyAgICAgICAgICAgIGlmIChhdXRvKiBidWZmZXIgPSBtX3Jlc291cmNlLT5yZXNvdXJjZUJ1
ZmZlcigpKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0
byYgc2VnbWVudCkgeworICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEoc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtNjQ5LDggKzY1NSwxMSBAQCB2
b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU2VjdXJpdHlDaAogICAgIH0KICAgICBkaWRSZWNlaXZlUmVzcG9uc2UoaWRl
bnRpZmllciwgcmVzcG9uc2UpOwogCi0gICAgaWYgKGRhdGEpCi0gICAgICAgIGRpZFJlY2VpdmVE
YXRhKGlkZW50aWZpZXIsIGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpKTsKKyAgICBpZiAoZGF0
YSkgeworICAgICAgICBkYXRhLT5mb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgewor
ICAgICAgICAgICAgZGlkUmVjZWl2ZURhdGEoaWRlbnRpZmllciwgc2VnbWVudC5kYXRhKCksIHNl
Z21lbnQuc2l6ZSgpKTsKKyAgICAgICAgfSk7CisgICAgfQogCiAgICAgY29uc3QgYXV0byogdGlt
aW5nID0gcmVzcG9uc2UuZGVwcmVjYXRlZE5ldHdvcmtMb2FkTWV0cmljc09yTnVsbCgpOwogICAg
IGF1dG8gcmVzb3VyY2VUaW1pbmcgPSBSZXNvdXJjZVRpbWluZzo6ZnJvbVN5bmNocm9ub3VzTG9h
ZChyZXF1ZXN0VVJMLCBtX29wdGlvbnMuaW5pdGlhdG9yLCBsb2FkVGltaW5nLCB0aW1pbmcgPyAq
dGltaW5nIDogTmV0d29ya0xvYWRNZXRyaWNzIHsgfSwgcmVzcG9uc2UsIHNlY3VyaXR5T3JpZ2lu
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5jcHAKaW5kZXggYWRhZTY0MDBmYzRiMzM4YmM3YmM1Yjg2OWEyNDViMmU5MGFiNDRj
NS4uYTMzODM2NGM5MWJkZWIzMmQ0NGIzM2FiMmZiMTgyMzM4ZDg5YWRhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBA
IC0xNTUsOCArMTU1LDE0IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJl
Y2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgdWludDhfdCogZGF0YSwgaW50CiB7CiAgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAotICAgIGlm
IChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZl
ciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5n
dGgpOworICAgIGlmIChtX2NsaWVudCkgeworICAgICAgICBpZiAoYnVmZmVyKSB7CisgICAgICAg
ICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAg
ICAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIHNlZ21lbnQuZGF0YSgpLCBz
ZWdtZW50LnNpemUoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURhdGEodGhpcywgZGF0YSwgbGVuZ3RoKTsKKyAgICB9
CiAKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5n
dGgsIFdURk1vdmUoYnVmZmVyKSwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBo
aWNEaWdlc3QuY3BwCmluZGV4IGNlNjQ5NTgxZTliNGI0ZTE2MjY4NzdiMTkxZmJmMmFkOTY0MjFl
N2QuLjYwYmI3ZjEwODU0ZmNjMzBhMGNlNzMxOGE2Nzk3NTQ1ZDg0ZmI3MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3Bw
CkBAIC0xNTQsNCArMTU0LDE1IEBAIFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBjcnlwdG9n
cmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnCiAgICAgcmV0dXJu
IHsgYWxnb3JpdGhtLCBjcnlwdG9EaWdlc3QtPmNvbXB1dGVIYXNoKCkgfTsKIH0KIAorUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0IGNyeXB0b2dyYXBoaWNEaWdlc3RGb3JTaGFyZWRCdWZmZXIo
UmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0OjpBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBT
aGFyZWRCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBhdXRvIGNyeXB0b0RpZ2VzdCA9IFBBTDo6Q3J5
cHRvRGlnZXN0OjpjcmVhdGUodG9DcnlwdG9EaWdlc3RBbGdvcml0aG0oYWxnb3JpdGhtKSk7Cisg
ICAgaWYgKGJ1ZmZlcikgeworICAgICAgICBidWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRv
JiBzZWdtZW50KSB7CisgICAgICAgICAgICBjcnlwdG9EaWdlc3QtPmFkZEJ5dGVzKHNlZ21lbnQu
ZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7CisgICAgICAgIH0pOworICAgIH0KKyAgICByZXR1cm4g
eyBhbGdvcml0aG0sIGNyeXB0b0RpZ2VzdC0+Y29tcHV0ZUhhc2goKSB9OworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmgK
aW5kZXggZmNjMGIwNDRhYWEyNGU1ZWE3YTExY2VhYzFmZjdlYmE1MzQ5MDBiYy4uYWVhM2RjNTdj
ODc4MzEzMDEzYTViMTZjOTM5Yjc3NGVkNDg0MzI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuaApAQCAtMzQsNiArMzQsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZTsKK2NsYXNzIFNo
YXJlZEJ1ZmZlcjsKIAogc3RydWN0IFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCB7CiAgICAg
ZW51bSBjbGFzcyBBbGdvcml0aG0gewpAQCAtNzQsNiArNzUsNyBAQCBzdGQ6Om9wdGlvbmFsPEVu
Y29kZWRSZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3Q+IHBhcnNlRW5jb2RlZENyeXB0b2dyYXBo
aWNEaWdlcwogCiBzdGQ6Om9wdGlvbmFsPFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdD4gZGVj
b2RlRW5jb2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChjb25zdCBFbmNvZGVkUmVzb3Vy
Y2VDcnlwdG9ncmFwaGljRGlnZXN0Jik7CiAKK1Jlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdCBj
cnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKFJlc291cmNlQ3J5cHRvZ3JhcGhpY0Rp
Z2VzdDo6QWxnb3JpdGhtLCBjb25zdCBTaGFyZWRCdWZmZXIqKTsKIFJlc291cmNlQ3J5cHRvZ3Jh
cGhpY0RpZ2VzdCBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yQnl0ZXMoUmVzb3VyY2VDcnlwdG9ncmFw
aGljRGlnZXN0OjpBbGdvcml0aG0sIGNvbnN0IHZvaWQqIGJ5dGVzLCBzaXplX3QgbGVuZ3RoKTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdy
aXR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUludGVncml0eS5jcHAK
aW5kZXggNGQwYzY5MGIyNzYyYWE5MGU3MWVhMzg3ZjNhM2Q4MGY2NDEzOGJlZS4uYzUyMDgxYjQy
MTY3YmE4MGMyNzU3MDhjYmQ5OTZkODdhODU0NDIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1N1YnJlc291cmNlSW50ZWdyaXR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3VicmVzb3VyY2VJbnRlZ3JpdHkuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9vbCBt
YXRjaEludGVncml0eU1ldGFkYXRhKGNvbnN0IENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29u
c3QgU3RyaW5nJiBpbnRlZ3IKICAgICAgICAgYXV0byBleHBlY3RlZFZhbHVlID0gZGVjb2RlRW5j
b2RlZFJlc291cmNlQ3J5cHRvZ3JhcGhpY0RpZ2VzdChpdGVtKTsKIAogICAgICAgICAvLyAzLiBM
ZXQgYWN0dWFsVmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBhcHBseWluZyBhbGdvcml0aG0gdG8gcmVz
cG9uc2UuCi0gICAgICAgIGF1dG8gYWN0dWFsVmFsdWUgPSBjcnlwdG9ncmFwaGljRGlnZXN0Rm9y
Qnl0ZXMoYWxnb3JpdGhtLCBzaGFyZWRCdWZmZXIgPyBzaGFyZWRCdWZmZXItPmRhdGEoKSA6IG51
bGxwdHIsIHNoYXJlZEJ1ZmZlciA/IHNoYXJlZEJ1ZmZlci0+c2l6ZSgpIDogMCk7CisgICAgICAg
IGF1dG8gYWN0dWFsVmFsdWUgPSBjcnlwdG9ncmFwaGljRGlnZXN0Rm9yU2hhcmVkQnVmZmVyKGFs
Z29yaXRobSwgc2hhcmVkQnVmZmVyKTsKIAogICAgICAgICAvLyA0LiBJZiBhY3R1YWxWYWx1ZSBp
cyBhIGNhc2Utc2Vuc2l0aXZlIG1hdGNoIGZvciBleHBlY3RlZFZhbHVlLCByZXR1cm4gdHJ1ZS4K
ICAgICAgICAgaWYgKGV4cGVjdGVkVmFsdWUgJiYgYWN0dWFsVmFsdWUudmFsdWUgPT0gZXhwZWN0
ZWRWYWx1ZS0+dmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IGYyNjRmMWRkNzEyM2Q2OTJjNjU3
ZjFlY2UxNDk5NGM0MTk2MzM0NWEuLjdjM2FjZWJhNzJkNTJhNDY4NmI1YjNiMzZjNzdkNWZhZWYz
MjdiNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC01OTUsOSArNTk1LDggQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgICAgIEFwcGxp
Y2F0aW9uQ2FjaGVSZXNvdXJjZSogbmV3ZXN0TWFuaWZlc3QgPSBtX25ld2VzdENhY2hlLT5tYW5p
ZmVzdFJlc291cmNlKCk7CiAgICAgICAgIEFTU0VSVChuZXdlc3RNYW5pZmVzdCk7CiAgICAgCi0g
ICAgICAgIGlmICghbV9tYW5pZmVzdFJlc291cmNlIHx8IC8vIFRoZSByZXNvdXJjZSB3aWxsIGJl
IG51bGwgaWYgSFRUUCByZXNwb25zZSB3YXMgMzA0IE5vdCBNb2RpZmllZC4KLSAgICAgICAgICAg
IChuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpLnNpemUoKSA9PSBtX21hbmlmZXN0UmVzb3VyY2UtPmRh
dGEoKS5zaXplKCkgJiYgIW1lbWNtcChuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpLmRhdGEoKSwgbV9t
YW5pZmVzdFJlc291cmNlLT5kYXRhKCkuZGF0YSgpLCBuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpLnNp
emUoKSkpKSB7Ci0KKyAgICAgICAgLy8gVGhlIHJlc291cmNlIHdpbGwgYmUgbnVsbCBpZiBIVFRQ
IHJlc3BvbnNlIHdhcyAzMDQgTm90IE1vZGlmaWVkLgorICAgICAgICBpZiAoIW1fbWFuaWZlc3RS
ZXNvdXJjZSB8fCBuZXdlc3RNYW5pZmVzdC0+ZGF0YSgpID09IG1fbWFuaWZlc3RSZXNvdXJjZS0+
ZGF0YSgpKSB7CiAgICAgICAgICAgICBtX2NvbXBsZXRpb25UeXBlID0gTm9VcGRhdGU7CiAgICAg
ICAgICAgICBtX21hbmlmZXN0UmVzb3VyY2UgPSBudWxscHRyOwogICAgICAgICAgICAgZGVsaXZl
ckRlbGF5ZWRNYWluUmVzb3VyY2VzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiN2MzMDkx
N2NkN2RhMTFmZmYyOTlkYmI2NzU5ZjViN2U4YTZkMTdhLi4xYjMzYWM5NWJjZGUxMWZlM2M0OTkw
MjQwYTUyMGJkMzBlNjM2NTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5jcHAKQEAgLTEyOTIsNyArMTI5
MiwxMCBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjp3cml0ZURhdGFUb1VuaXF1ZUZp
bGVJbkRpcmVjdG9yeShTaGFyZWRCdWZmZXImIGRhdAogICAgIGlmICghaGFuZGxlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgaW50NjRfdCB3cml0dGVuQnl0ZXMgPSBGaWxlU3lz
dGVtOjp3cml0ZVRvRmlsZShoYW5kbGUsIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAg
aW50NjRfdCB3cml0dGVuQnl0ZXMgPSAwOworICAgIGRhdGEuZm9yRWFjaFNlZ21lbnQoWyZdKGF1
dG8mIHNlZ21lbnQpIHsKKyAgICAgICAgd3JpdHRlbkJ5dGVzICs9IEZpbGVTeXN0ZW06OndyaXRl
VG9GaWxlKGhhbmRsZSwgc2VnbWVudC5kYXRhKCksIHNlZ21lbnQuc2l6ZSgpKTsKKyAgICB9KTsK
ICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKICAgICAKICAgICBpZiAod3JpdHRl
bkJ5dGVzICE9IHN0YXRpY19jYXN0PGludDY0X3Q+KGRhdGEuc2l6ZSgpKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggMjE5
MmYxNTIwYWEzOWIxN2JlOWJmMDJkZTg0ODA5MjNkZDg2MmU3MC4uYTM3MGZjNzA5ODU2MmMwY2I2
ZDI2ZWQ3MjgwZWUyN2M2NTFiNzYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0xNjcsOCArMTY3LDExIEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCYgYykKICAg
ICAgICAgYXV0byByZXNwb25zZVByb2Nlc3NlZEhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGNsaWVudF0gewogICAgICAgICAgICAgaWYgKCFo
YXNDbGllbnQoKmNsaWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
aWYgKG1fZGF0YSkKLSAgICAgICAgICAgICAgICBjbGllbnQtPmRhdGFSZWNlaXZlZCgqdGhpcywg
bV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIGlmIChtX2RhdGEp
IHsKKyAgICAgICAgICAgICAgICBtX2RhdGEtPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdt
ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIGNsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBz
ZWdtZW50LmRhdGEoKSwgc2VnbWVudC5zaXplKCkpOworICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFoYXNDbGllbnQoKmNsaWVudCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVu
dCgqY2xpZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25M
b2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKaW5k
ZXggOTE5NTlkNjI5OTM4OTE0OTMzMzJhODNiMmU1OGM0YjczNzQ4MTc0My4uYzBjZjllZjMyNTZh
MWFkOGY1ZGYxMGNlOTY3YWNhNTViZjg2NWNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkxvYWRlci5jcHAKQEAgLTExNCw5ICsxMTQsOCBAQCB2b2lkIEljb25Mb2FkZXI6Om5v
dGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiByZXNvdXJjZSwgY29uc3QgTmV0d29ya0xvYWRN
ZXRyaQogICAgIGlmIChzdGF0dXMgJiYgKHN0YXR1cyA8IDIwMCB8fCBzdGF0dXMgPiAyOTkpKQog
ICAgICAgICBkYXRhID0gbnVsbHB0cjsKIAotICAgIHN0YXRpYyBjb25zdCBjaGFyIHBkZk1hZ2lj
TnVtYmVyW10gPSAiJVBERiI7Ci0gICAgc3RhdGljIHVuc2lnbmVkIHBkZk1hZ2ljTnVtYmVyTGVu
Z3RoID0gc2l6ZW9mKHBkZk1hZ2ljTnVtYmVyKSAtIDE7Ci0gICAgaWYgKGRhdGEgJiYgZGF0YS0+
c2l6ZSgpID49IHBkZk1hZ2ljTnVtYmVyTGVuZ3RoICYmICFtZW1jbXAoZGF0YS0+ZGF0YSgpLCBw
ZGZNYWdpY051bWJlciwgcGRmTWFnaWNOdW1iZXJMZW5ndGgpKSB7CisgICAgY29uc3RleHByIHVp
bnQ4X3QgcGRmTWFnaWNOdW1iZXJbXSA9IHsgJyUnLCAnUCcsICdEJywgJ0YnIH07CisgICAgaWYg
KGRhdGEgJiYgZGF0YS0+c3RhcnRzV2l0aChTcGFuIHsgcGRmTWFnaWNOdW1iZXIsIHN0ZDo6c2l6
ZShwZGZNYWdpY051bWJlcikgfSkpIHsKICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIkljb25M
b2FkZXI6OmZpbmlzaExvYWRpbmcoKSAtIElnbm9yaW5nIGljb24gYXQgJXMgYmVjYXVzZSBpdCBh
cHBlYXJzIHRvIGJlIGEgUERGIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5k
YXRhKCkpOwogICAgICAgICBkYXRhID0gbnVsbHB0cjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkQnVmZmVyLmNwcAppbmRleCAwMDQwYThhNjExODdmYjBlNDllODZmMzM3MGJi
OGY4MjM3NzVhZmM1Li44YTY4ZmM2YmQxMDRkYWUxNDRkY2Q2YmMzNmNhMzBkZmEzYmMwYmE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKQEAgLTg2LDYgKzg2LDE2
IEBAIFJlZjxTaGFyZWRCdWZmZXI+IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKFZlY3Rvcjx1aW50OF90
PiYmIHZlY3RvcikKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTaGFyZWRCdWZmZXIoV1RGTW92
ZSh2ZWN0b3IpKSk7CiB9CiAKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gY29tYmluZVNlZ21lbnRz
RGF0YShjb25zdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50VmVjdG9yJiBzZWdtZW50cywgc2l6
ZV90IHNpemUpCit7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvbWJpbmVkRGF0YTsKKyAgICBjb21i
aW5lZERhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKTsKKyAgICBmb3IgKGF1dG8mIHNl
Z21lbnQgOiBzZWdtZW50cykKKyAgICAgICAgY29tYmluZWREYXRhLmFwcGVuZChzZWdtZW50LnNl
Z21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkpOworICAgIEFTU0VSVChjb21i
aW5lZERhdGEuc2l6ZSgpID09IHNpemUpOworICAgIHJldHVybiBjb21iaW5lZERhdGE7Cit9CisK
IHZvaWQgU2hhcmVkQnVmZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAogewogI2lm
IEFTU0VSVF9FTkFCTEVECkBAIC05NiwxMSArMTA2LDcgQEAgdm9pZCBTaGFyZWRCdWZmZXI6OmNv
bWJpbmVJbnRvT25lU2VnbWVudCgpIGNvbnN0CiAgICAgaWYgKG1fc2VnbWVudHMuc2l6ZSgpIDw9
IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3Rvcjx1aW50OF90PiBjb21iaW5lZERhdGE7
Ci0gICAgY29tYmluZWREYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9zaXplKTsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIHNlZ21lbnQgOiBtX3NlZ21lbnRzKQotICAgICAgICBjb21iaW5lZERh
dGEuYXBwZW5kKHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBzZWdtZW50LnNlZ21lbnQtPnNpemUo
KSk7Ci0gICAgQVNTRVJUKGNvbWJpbmVkRGF0YS5zaXplKCkgPT0gbV9zaXplKTsKKyAgICBhdXRv
IGNvbWJpbmVkRGF0YSA9IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsK
ICAgICBtX3NlZ21lbnRzLmNsZWFyKCk7CiAgICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFT
ZWdtZW50OjpjcmVhdGUoV1RGTW92ZShjb21iaW5lZERhdGEpKX0pOwogICAgIEFTU0VSVChtX3Nl
Z21lbnRzLnNpemUoKSA9PSAxKTsKQEAgLTEwOSwxMyArMTE1LDI4IEBAIHZvaWQgU2hhcmVkQnVm
ZmVyOjpjb21iaW5lSW50b09uZVNlZ21lbnQoKSBjb25zdAogCiBjb25zdCB1aW50OF90KiBTaGFy
ZWRCdWZmZXI6OmRhdGEoKSBjb25zdAogewotICAgIGlmICghbV9zZWdtZW50cy5zaXplKCkpCisg
ICAgaWYgKG1fc2VnbWVudHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBjb21iaW5lSW50b09uZVNlZ21lbnQoKTsKICAgICBBU1NFUlQoaW50ZXJuYWxseUNvbnNpc3Rl
bnQoKSk7CiAgICAgcmV0dXJuIG1fc2VnbWVudHNbMF0uc2VnbWVudC0+ZGF0YSgpOwogfQogCitW
ZWN0b3I8dWludDhfdD4gU2hhcmVkQnVmZmVyOjp0YWtlRGF0YSgpCit7CisgICAgaWYgKG1fc2Vn
bWVudHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPHVpbnQ4
X3Q+IGNvbWJpbmVkRGF0YTsKKyAgICBpZiAoaGFzT25lU2VnbWVudCgpICYmIFdURjo6aG9sZHNf
YWx0ZXJuYXRpdmU8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1t
dXRhYmxlRGF0YSkpCisgICAgICAgIGNvbWJpbmVkRGF0YSA9IHN0ZDo6ZXhjaGFuZ2UoV1RGOjpn
ZXQ8VmVjdG9yPHVpbnQ4X3Q+PihtX3NlZ21lbnRzWzBdLnNlZ21lbnQtPm1faW1tdXRhYmxlRGF0
YSksIFZlY3Rvcjx1aW50OF90PigpKTsKKyAgICBlbHNlCisgICAgICAgIGNvbWJpbmVkRGF0YSA9
IGNvbWJpbmVTZWdtZW50c0RhdGEobV9zZWdtZW50cywgbV9zaXplKTsKKworICAgIGNsZWFyKCk7
CisgICAgcmV0dXJuIGNvbWJpbmVkRGF0YTsKK30KKwogU2hhcmVkQnVmZmVyRGF0YVZpZXcgU2hh
cmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRpb24pIGNvbnN0CiB7CiAgICAgUkVM
RUFTRV9BU1NFUlQocG9zaXRpb24gPCBtX3NpemUpOwpAQCAtMTMwLDEwICsxNTEsMTAgQEAgU2hh
cmVkQnVmZmVyRGF0YVZpZXcgU2hhcmVkQnVmZmVyOjpnZXRTb21lRGF0YShzaXplX3QgcG9zaXRp
b24pIGNvbnN0CiBTdHJpbmcgU2hhcmVkQnVmZmVyOjp0b0hleFN0cmluZygpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nQnVpbGRlciBzdHJpbmdCdWlsZGVyOwotICAgIGZvciAodW5zaWduZWQgYnl0ZU9m
ZnNldCA9IDA7IGJ5dGVPZmZzZXQgPCBzaXplKCk7IGJ5dGVPZmZzZXQrKykgewotICAgICAgICBj
b25zdCB1aW50OF90IGJ5dGUgPSBkYXRhKClbYnl0ZU9mZnNldF07Ci0gICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKHBhZCgnMCcsIDIsIGhleChieXRlKSkpOwotICAgIH0KKyAgICBmb3JFYWNo
U2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc2VnbWVudC5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKHBhZCgnMCcsIDIsIGhleChzZWdtZW50W2ldKSkpOworICAgIH0pOwogICAgIHJldHVybiBz
dHJpbmdCdWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKQEAgLTIwNSw2ICsyMjYsNDkgQEAgUmVmPFNo
YXJlZEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjb3B5KCkgY29uc3QKICAgICByZXR1cm4gY2xvbmU7
CiB9CiAKK3ZvaWQgU2hhcmVkQnVmZmVyOjpmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mIGFwcGx5KSBjb25zdAoreworICAgIGZv
ciAoYXV0byYgc2VnbWVudCA6IG1fc2VnbWVudHMpCisgICAgICAgIGFwcGx5KFNwYW4geyBzZWdt
ZW50LnNlZ21lbnQtPmRhdGEoKSwgc2VnbWVudC5zZWdtZW50LT5zaXplKCkgfSk7Cit9CisKK2Jv
b2wgU2hhcmVkQnVmZmVyOjpzdGFydHNXaXRoKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mIHBy
ZWZpeCkgY29uc3QKK3sKKyAgICBpZiAocHJlZml4LmVtcHR5KCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKHNpemUoKSA8IHByZWZpeC5zaXplKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIGNvbnN0IHVpbnQ4X3QqIHByZWZpeFB0ciA9IHByZWZpeC5kYXRhKCk7Cisg
ICAgc2l6ZV90IHJlbWFpbmluZyA9IHByZWZpeC5zaXplKCk7CisgICAgZm9yIChhdXRvJiBzZWdt
ZW50IDogbV9zZWdtZW50cykgeworICAgICAgICBzaXplX3QgYW1vdW50VG9Db21wYXJlVGhpc1Rp
bWUgPSBzdGQ6Om1pbihyZW1haW5pbmcsIHNlZ21lbnQuc2VnbWVudC0+c2l6ZSgpKTsKKyAgICAg
ICAgaWYgKG1lbWNtcChwcmVmaXhQdHIsIHNlZ21lbnQuc2VnbWVudC0+ZGF0YSgpLCBhbW91bnRU
b0NvbXBhcmVUaGlzVGltZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJl
bWFpbmluZyAtPSBhbW91bnRUb0NvbXBhcmVUaGlzVGltZTsKKyAgICAgICAgaWYgKCFyZW1haW5p
bmcpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcHJlZml4UHRyICs9IGFtb3Vu
dFRvQ29tcGFyZVRoaXNUaW1lOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
U2hhcmVkQnVmZmVyOjpjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKGxlbmd0aCA8PSBzaXplKCkpOworICAgIGF1dG8gZGVzdGluYXRp
b25QdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGVzdGluYXRpb24pOworICAgIGF1dG8gcmVt
YWluaW5nID0gc3RkOjptaW4obGVuZ3RoLCBzaXplKCkpOworICAgIGZvciAoYXV0byYgc2VnbWVu
dCA6IG1fc2VnbWVudHMpIHsKKyAgICAgICAgc2l6ZV90IGFtb3VudFRvQ29weVRoaXNUaW1lID0g
c3RkOjptaW4ocmVtYWluaW5nLCBzZWdtZW50LnNlZ21lbnQtPnNpemUoKSk7CisgICAgICAgIG1l
bWNweShkZXN0aW5hdGlvblB0ciwgc2VnbWVudC5zZWdtZW50LT5kYXRhKCksIGFtb3VudFRvQ29w
eVRoaXNUaW1lKTsKKyAgICAgICAgcmVtYWluaW5nIC09IGFtb3VudFRvQ29weVRoaXNUaW1lOwor
ICAgICAgICBpZiAoIXJlbWFpbmluZykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVz
dGluYXRpb25QdHIgKz0gYW1vdW50VG9Db3B5VGhpc1RpbWU7CisgICAgfQorfQorCiBib29sIFNo
YXJlZEJ1ZmZlcjo6aGFzT25lU2VnbWVudCgpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9IGJlZ2lu
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCmluZGV4IDdkYzMxYzczOTJj
Y2VlZWViYjI2M2IyNGE5YTMyZDczMWRkMGE4NzEuLjNmMmExNDQ3YmQwY2IxMjk3NjNiNDVhYmVj
NmVmYTljODBiNjY4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJl
ZEJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3Rm
L1NwYW4uaD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvVmFyaWFudC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEwMCw2ICsxMDEs
MTAgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBBdWRpdCB0aGUgY2FsbCBzaXRlcyBvZiB0aGlz
IGZ1bmN0aW9uIGFuZCByZXBsYWNlIHRoZW0gd2l0aCBpdGVyYXRpb24gaWYgcG9zc2libGUuCiAg
ICAgY29uc3QgdWludDhfdCogZGF0YSgpIGNvbnN0OwogICAgIGNvbnN0IGNoYXIqIGRhdGFBc0No
YXJQdHIoKSBjb25zdCB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihkYXRh
KCkpOyB9CisgICAgVmVjdG9yPHVpbnQ4X3Q+IGNvcHlEYXRhKCkgeyByZXR1cm4geyBkYXRhKCks
IHNpemUoKSB9OyB9CisKKyAgICAvLyBDb21iaW5lcyBhbGwgdGhlIHNlZ21lbnRzIGludG8gYSBW
ZWN0b3IgYW5kIHJldHVybnMgdGhhdCB2ZWN0b3IgYWZ0ZXIgY2xlYXJpbmcgdGhlIFNoYXJlZEJ1
ZmZlci4KKyAgICBWZWN0b3I8dWludDhfdD4gdGFrZURhdGEoKTsKIAogICAgIC8vIENyZWF0ZXMg
YW4gQXJyYXlCdWZmZXIgYW5kIGNvcGllcyB0aGlzIFNoYXJlZEJ1ZmZlcidzIGNvbnRlbnRzIHRv
IHRoYXQKICAgICAvLyBBcnJheUJ1ZmZlciB3aXRob3V0IG1lcmdpbmcgc2VnbWVudGVkIGJ1ZmZl
cnMgaW50byBhIGZsYXQgYnVmZmVyLgpAQCAtMTE3LDYgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNsZWFyKCk7CiAKICAgICBSZWY8U2hhcmVkQnVmZmVyPiBjb3B5KCkgY29uc3Q7CisgICAg
dm9pZCBjb3B5VG8odm9pZCogZGVzdGluYXRpb24sIHNpemVfdCBsZW5ndGgpIGNvbnN0OwogCiAg
ICAgLy8gRGF0YSB3cmFwcGVkIGJ5IGEgRGF0YVNlZ21lbnQgc2hvdWxkIGJlIGltbXV0YWJsZSBi
ZWNhdXNlIGl0IGNhbiBiZSByZWZlcmVuY2VkIGJ5IG90aGVyIG9iamVjdHMuCiAgICAgLy8gVG8g
bW9kaWZ5IG9yIGNvbWJpbmUgdGhlIGRhdGEsIGFsbG9jYXRlIGEgbmV3IERhdGFTZWdtZW50LgpA
QCAtMTgwLDYgKzE4Niw5IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIFNoYXJlZEJ1
ZmZlcjsKICAgICB9OwogCisgICAgdm9pZCBmb3JFYWNoU2VnbWVudChjb25zdCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFNwYW48Y29uc3QgdWludDhfdD4mKT4mKSBjb25zdDsKKyAgICBib29sIHN0YXJ0
c1dpdGgoY29uc3QgU3Bhbjxjb25zdCB1aW50OF90PiYgcHJlZml4KSBjb25zdDsKKwogICAgIHN0
cnVjdCBEYXRhU2VnbWVudFZlY3RvckVudHJ5IHsKICAgICAgICAgc2l6ZV90IGJlZ2luUG9zaXRp
b247CiAgICAgICAgIFJlZjxEYXRhU2VnbWVudD4gc2VnbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNGLmNwcAppbmRleCA4OTVlYmUwNTFmMTUyYTdhODNh
NDVjN2I5MGRkYzBjMjcwYTQ5ZWUxLi5mNmJmZGQ3ZjVmNzMzN2VlMWYxMDM2NWM1ZTIwMTMxODVh
N2UyZjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jZi9TaGFyZWRCdWZm
ZXJDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2YvU2hhcmVkQnVmZmVyQ0Yu
Y3BwCkBAIC00Nyw3ICs0NywxMSBAQCBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBTaGFyZWRCdWZmZXI6
OmNyZWF0ZUNGRGF0YSgpIGNvbnN0CiAgICAgICAgIGlmIChhdXRvIGRhdGEgPSBXVEY6OmdldF9p
ZjxSZXRhaW5QdHI8Q0ZEYXRhUmVmPj4obV9zZWdtZW50c1swXS5zZWdtZW50LT5tX2ltbXV0YWJs
ZURhdGEpKQogICAgICAgICAgICAgcmV0dXJuICpkYXRhOwogICAgIH0KLSAgICByZXR1cm4gYWRv
cHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgZGF0YSgpLCBzaXplKCkpKTsKKyAgICBhdXRvIGNm
RGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZShudWxscHRyLCBzaXplKCkpKTsKKyAg
ICBmb3JFYWNoU2VnbWVudChbJl0oYXV0byYgc2VnbWVudCkgeworICAgICAgICBDRkRhdGFBcHBl
bmRCeXRlcyhjZkRhdGEuZ2V0KCksIHNlZ21lbnQuZGF0YSgpLCBzZWdtZW50LnNpemUoKSk7Cisg
ICAgfSk7CisgICAgcmV0dXJuIGNmRGF0YTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IGVlNmE1ZDJlZWQ2YTNmOTdlNzQ2OGNh
Yjk2ZTllZTM0ZDZiODMwNmUuLjEzNTRiZGJlZGQ2MTE2YzIwOWZiNTRhNjNlMTk0MjI1M2NiM2E1
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC03
NzQsNyArNzc0LDcgQEAgdm9pZCBJdGVtQnVmZmVyOjphcHBlbmQoY29uc3QgRGlzcGxheUxpc3RJ
dGVtJiB0ZW1wb3JhcnlJdGVtKQogICAgIGlmIChyZXF1aXJlZFNpemVGb3JJdGVtKQogICAgICAg
ICBtX3dyaXRpbmdDbGllbnQtPmVuY29kZUl0ZW1JbmxpbmUodGVtcG9yYXJ5SXRlbSwgbG9jYXRp
b24pOwogICAgIGVsc2UKLSAgICAgICAgbWVtY3B5KGxvY2F0aW9uLCBvdXRPZkxpbmVJdGVtLT5k
YXRhKCksIGRhdGFMZW5ndGgpOworICAgICAgICBvdXRPZkxpbmVJdGVtLT5jb3B5VG8obG9jYXRp
b24sIGRhdGFMZW5ndGgpOwogCiAgICAgZGlkQXBwZW5kRGF0YShhZGRpdGlvbmFsQ2FwYWNpdHlG
b3JFbmNvZGVkSXRlbSwgYnVmZmVyQ2hhbmdlZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAppbmRleCAwMDk0ZjQ3ZDQ2NDAxZDU5YWNiODVmNzY1NDNkYTYyZDcz
OGMwZmU2Li5lNzY5NzEyNGQxODUyNmU4MTE4MjcwNmZlYTFmYzhlYzgzZTA2MTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKQEAgLTQ2Niw3ICs0NjYsOSBAQCBF
bmNvZGVkRGF0YVN0YXR1cyBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpCiAgICAgICAgIEFTU0VSVChsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKSk7IC8vIERv
Y3VtZW50TG9hZGVyIHNob3VsZCBoYXZlIGJlZW4gY3JlYXRlZCBieSBmcmFtZS0+aW5pdCgpLgog
ICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuc2V0TUlNRVR5
cGUoImltYWdlL3N2Zyt4bWwiKTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPndyaXRlcigpLmJlZ2luKFVSTCgpKTsgLy8gY3JlYXRlIHRoZSBlbXB0eSBkb2N1bWVudAot
ICAgICAgICBsb2FkZXIuYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShk
YXRhKCktPmRhdGEoKSwgZGF0YSgpLT5zaXplKCkpOworICAgICAgICBkYXRhKCktPmZvckVhY2hT
ZWdtZW50KFsmXShhdXRvJiBzZWdtZW50KSB7CisgICAgICAgICAgICBsb2FkZXIuYWN0aXZlRG9j
dW1lbnRMb2FkZXIoKS0+d3JpdGVyKCkuYWRkRGF0YShzZWdtZW50LmRhdGEoKSwgc2VnbWVudC5z
aXplKCkpOworICAgICAgICB9KTsKICAgICAgICAgbG9hZGVyLmFjdGl2ZURvY3VtZW50TG9hZGVy
KCktPndyaXRlcigpLmVuZCgpOwogCiAgICAgICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9TY3JpcHRCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9TY3Jp
cHRCdWZmZXIuY3BwCmluZGV4IDUyNDlkNjdhZDJjNzYyY2JmODA5MWQ5Njc4YTVmNGZkM2I2ZmQx
NTUuLjZkNDhiZDAyZDFjOTFmN2VlZDg2NGExNmNkNzU2YmIwNzdkNjU1MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvU2NyaXB0QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1NjcmlwdEJ1ZmZlci5jcHAKQEAgLTUzLDggKzUzLDkgQEAgU3RyaW5nIFNj
cmlwdEJ1ZmZlcjo6dG9TdHJpbmcoKSBjb25zdAogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAK
ICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgZm9yIChhdXRvIGl0ID0gbV9idWZmZXIt
PmJlZ2luKCk7IGl0ICE9IG1fYnVmZmVyLT5lbmQoKTsgKytpdCkKLSAgICAgICAgYnVpbGRlci5h
cHBlbmQoU3RyaW5nOjpmcm9tVVRGOChpdC0+c2VnbWVudC0+ZGF0YSgpLCBpdC0+c2VnbWVudC0+
c2l6ZSgpKSk7CisgICAgbV9idWZmZXItPmZvckVhY2hTZWdtZW50KFsmXShhdXRvJiBzZWdtZW50
KSB7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZzo6ZnJvbVVURjgoc2VnbWVudC5kYXRh
KCksIHNlZ21lbnQuc2l6ZSgpKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJp
bmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZWNmMGE0
OWIzMDFkY2Y5MTgzYzFlYWY5ODUwMDYwMDkwYTQ0MGYyYi4uM2RkZjU3YzU4NmE2YjRmMDAwMzkx
ZTlmYWExN2Y2MGFhYzM4ZmE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CkBAIC0yMDcsOCArMjA3LDcgQEAgUmVmPEJsb2I+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXNw
b25zZUJsb2IoKQogICAgIC8vIEZJWE1FOiBXZSBqdXN0IHJlY2VpdmVkIHRoZSBkYXRhIGZyb20g
TmV0d29ya1Byb2Nlc3MsIGFuZCBhcmUgc2VuZGluZyBpdCBiYWNrLiBUaGlzIGlzIGluZWZmaWNp
ZW50LgogICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhOwogICAgIGlmIChtX2JpbmFyeVJlc3BvbnNl
QnVpbGRlcikKLSAgICAgICAgZGF0YS5hcHBlbmQobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmRh
dGEoKSwgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNpemUoKSk7Ci0gICAgbV9iaW5hcnlSZXNw
b25zZUJ1aWxkZXIgPSBudWxscHRyOworICAgICAgICBkYXRhID0gc3RkOjpleGNoYW5nZShtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlciwgbnVsbHB0ciktPnRha2VEYXRhKCk7CiAgICAgU3RyaW5nIG5v
cm1hbGl6ZWRDb250ZW50VHlwZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShyZXNwb25z
ZU1JTUVUeXBlKEZpbmFsTUlNRVR5cGU6OlllcykpOyAvLyByZXNwb25zZU1JTUVUeXBlIGRlZmF1
bHRzIHRvIHRleHQveG1sIHdoaWNoIG1heSBiZSBpbmNvcnJlY3QuCiAgICAgcmV0dXJuIEJsb2I6
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUoZGF0YSksIG5vcm1hbGl6
ZWRDb250ZW50VHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDU2MTI2OTRmY2EyMTI2NmI4Yjc2YmVh
ZTlmOGNmMDBiYmRlOTcyOWYuLmJhYzhhNGM1OWY2MDc2OTk2NDkyYjM4YmU0NWM5YzhhNWZmMTRh
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tl
dENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNv
Y2tldENoYW5uZWwuY3BwCkBAIC01OCw5ICs1OCw5IEBAIE5ldHdvcmtTZW5kUXVldWUgV2ViU29j
a2V0Q2hhbm5lbDo6Y3JlYXRlTWVzc2FnZVF1ZXVlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29j
CiAgICAgcmV0dXJuIHsgZG9jdW1lbnQsIFsmY2hhbm5lbF0oYXV0byYgdXRmOFN0cmluZykgewog
ICAgICAgICBjaGFubmVsLm5vdGlmeVNlbmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpP
cENvZGVUZXh0LCB1dGY4U3RyaW5nLmRhdGFBc1VJbnQ4UHRyKCksIHV0ZjhTdHJpbmcubGVuZ3Ro
KCkpOwogICAgICAgICBjaGFubmVsLnNlbmRNZXNzYWdlKE1lc3NhZ2VzOjpOZXR3b3JrU29ja2V0
Q2hhbm5lbDo6U2VuZFN0cmluZyB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHV0ZjhTdHJpbmcuZGF0
YUFzVUludDhQdHIoKSwgdXRmOFN0cmluZy5sZW5ndGgoKSB9IH0sIHV0ZjhTdHJpbmcubGVuZ3Ro
KCkpOwotICAgIH0sIFsmY2hhbm5lbF0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IGJ5dGVM
ZW5ndGgpIHsKLSAgICAgICAgY2hhbm5lbC5ub3RpZnlTZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6
Ok9wQ29kZTo6T3BDb2RlQmluYXJ5LCBkYXRhLCBieXRlTGVuZ3RoKTsKLSAgICAgICAgY2hhbm5l
bC5zZW5kTWVzc2FnZShNZXNzYWdlczo6TmV0d29ya1NvY2tldENoYW5uZWw6OlNlbmREYXRhIHsg
SVBDOjpEYXRhUmVmZXJlbmNlIHsgZGF0YSwgYnl0ZUxlbmd0aCB9IH0sIGJ5dGVMZW5ndGgpOwor
ICAgIH0sIFsmY2hhbm5lbF0oYXV0byYgc3BhbikgeworICAgICAgICBjaGFubmVsLm5vdGlmeVNl
bmRGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnksIHNwYW4uZGF0YSgp
LCBzcGFuLnNpemUoKSk7CisgICAgICAgIGNoYW5uZWwuc2VuZE1lc3NhZ2UoTWVzc2FnZXM6Ok5l
dHdvcmtTb2NrZXRDaGFubmVsOjpTZW5kRGF0YSB7IElQQzo6RGF0YVJlZmVyZW5jZSB7IHNwYW4u
ZGF0YSgpLCBzcGFuLnNpemUoKSB9IH0sIHNwYW4uc2l6ZSgpKTsKICAgICB9LCBbJmNoYW5uZWxd
KEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uQ29kZSkgewogICAgICAgICBhdXRvIGNvZGUgPSBzdGF0
aWNfY2FzdDxpbnQ+KGV4Y2VwdGlvbkNvZGUpOwogICAgICAgICBjaGFubmVsLmZhaWwobWFrZVN0
cmluZygiRmFpbGVkIHRvIGxvYWQgQmxvYjogZXhjZXB0aW9uIGNvZGUgPSAiLCBjb2RlKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>