<?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>233931</bug_id>
          
          <creation_ts>2021-12-07 08:59:59 -0800</creation_ts>
          <short_desc>Use Span for IPC::ArrayReference and DataReference</short_desc>
          <delta_ts>2022-01-31 05:25:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=235889</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821060</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-07 08:59:59 -0800</bug_when>
    <thetext>Use Span for IPC::ArrayReference and DataReference</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821061</commentid>
    <comment_count>1</comment_count>
      <attachid>446181</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-07 09:01:29 -0800</bug_when>
    <thetext>Created attachment 446181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821089</commentid>
    <comment_count>2</comment_count>
      <attachid>446195</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-07 10:00:36 -0800</bug_when>
    <thetext>Created attachment 446195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821789</commentid>
    <comment_count>3</comment_count>
      <attachid>446195</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-12-08 14:49:41 -0800</bug_when>
    <thetext>Comment on attachment 446195
Patch

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

&gt; Source/WTF/wtf/Vector.h:657
&gt; +    Vector(Span&lt;const T&gt; span)

Would it be better to take a `const Span&lt;const T&gt;&amp;` instead?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1643
&gt; +        if (pdfData.empty()) {

It does seem a bit odd that while Span uses `bool empty()`, all other WTF classes use `bool isEmpty()`. Maybe we should rename this for consistency at some point..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821837</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-08 16:09:04 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; Comment on attachment 446195 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=446195&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/Vector.h:657
&gt; &gt; +    Vector(Span&lt;const T&gt; span)
&gt; 
&gt; Would it be better to take a `const Span&lt;const T&gt;&amp;` instead?
No, a Span is two registers so passed by value, like a StringView, and this is inline anyways.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1643
&gt; &gt; +        if (pdfData.empty()) {
&gt; 
&gt; It does seem a bit odd that while Span uses `bool empty()`, all other WTF
&gt; classes use `bool isEmpty()`. Maybe we should rename this for consistency at
&gt; some point..

WTF::Span is an implementation of std::span, which we&apos;ll switch to after turning on C++20.  std::span::empty exists but std::span::isEmpty does not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822415</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-09 16:24:04 -0800</bug_when>
    <thetext>r286815</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446181</attachid>
            <date>2021-12-07 09:01:29 -0800</date>
            <delta_ts>2021-12-07 10:31:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233931-20211207090129.patch</filename>
            <type>text/plain</type>
            <size>27757</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhhOGRhNDgxMTA4YzlmNDdjMDZjOWM5
ZjFiMjRlMWE2NTM1NTIzZTguLjIyZWU3NWNkZTk3NTU2MmJhYjQwYzc5NTU3ZGNkZGYxZmU0MTYz
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgU3BhbiBmb3IgSVBDOjpBcnJh
eVJlZmVyZW5jZSBhbmQgRGF0YVJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEY6OlZlY3Rv
cjo6VmVjdG9yKToKKyAgICAgICAgKFdURjo6VmVjdG9yOjpzcGFuIGNvbnN0KToKKwogMjAyMS0x
Mi0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbV2Vi
IEFuaW1hdGlvbnNdIEFkZCBhIHdheSB0byBydW4gc2NyaXB0ZWQgYW5pbWF0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBlMjExZWYxZjYwODM0MmVkZjUwMDkxMjMyNDRkNWRjMDMxM2VjYTZiLi5iM2VhNmYyZjVj
NTgwZmE2MmY1NTlkZWU2ODc3NmVjYjVlN2Q4NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBA
CisyMDIxLTEyLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgVXNlIFNwYW4gZm9yIElQQzo6QXJyYXlSZWZlcmVuY2UgYW5kIERhdGFSZWZl
cmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBiZWhhdmlvciwganVzdCBzaW1wbGlmeWluZyBzb21lIGNvZGUuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvQXJyYXlSZWZlcmVuY2UuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6
OkFycmF5UmVmZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6
OkFycmF5UmVmZXJlbmNlOjppc0VtcHR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6
QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcnJh
eVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjp2ZWN0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9E
YXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAg
IChBUEk6OkRhdGE6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRl
bnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Vc2VyRGF0YS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZVUkxSZWY+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFs
UGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQ
b3N0TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93a19wYWdlQ291bnRG
b3JQcmludEZvcm1hdHRlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUERGVG9UZW1wb3Jh
cnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2Vu
ZXJhdGVkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5u
ZWw6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEpOgorCiAyMDIx
LTEyLTA2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXVtXUF0gQmxvY2sgYWNjZXNzIHRvIHVudXNlZCBJT0tpdCBjbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCBj
NGNkZmI0Y2M1ZjI3MzRiN2E2YWNlZTkxZTk3OWM5YzFiODY5YmI4Li5jZmZiOWE1OGFjMDcyNjUw
ZDEyYzIzMjU2MzliNDkyNjBiYzY3YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0
b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtNjU0LDYgKzY1NCw5IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShkYXRh
LCBkYXRhICsgZGF0YVNpemUsIGJlZ2luKCkpOwogICAgIH0KIAorICAgIFZlY3RvcihTcGFuPGNv
bnN0IFQ+IHNwYW4pCisgICAgICAgIDogVmVjdG9yKHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSkg
eyB9CisKICAgICBWZWN0b3Ioc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGluaXRpYWxpemVyTGlz
dCkKICAgICB7CiAgICAgICAgIHJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5pdGlhbGl6ZXJMaXN0
LnNpemUoKSk7CkBAIC03MDcsNiArNzEwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZm
X3Qgc2l6ZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWZWN0b3IsIG1f
c2l6ZSk7IH0KICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBCYXNlOjpjYXBh
Y2l0eSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQor
ICAgIFNwYW48Y29uc3QgVD4gc3BhbigpIGNvbnN0IHsgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkg
fTsgfQogCiAgICAgVCYgYXQoc2l6ZV90IGkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggZmJmMTVmOTIzZmJkZjg2MGEwZTYxMTM1OTQ5
NDlmOTU0YjI5MjQ2Yi4uYTMzNDJjM2JjM2U3ZTIxMzQ4ZmUyMDg4N2NjMWRmZWYyYmY5NTk2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC01Nyw0
NiArNTcsMjggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29k
ZXIgewogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKLSAgICB1c2lu
ZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OwordGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3BhbjxU
LCBFeHRlbnQ+PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KLSAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBh
cnJheVJlZmVyZW5jZSkKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU3BhbjxULCBFeHRlbnQ+JiBzcGFuKQogICAgIHsKLSAgICAgICAgaWYgKCFFeHRlbnQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEo
KSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAoRXh0ZW50ID09IFdURjo6ZHluYW1pY19leHRlbnQpCisgICAgICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzcGFuLnNpemUoKSk7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHNwYW4uZGF0YSgpKSwgc3Bhbi5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2Yo
VCkpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgotICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Ci0gICAgewotICAgICAgICBpZiAoIUV4dGVudCkKLSAgICAgICAgICAgIHJldHVybiBBcnJheVJl
ZmVyZW5jZVR5cGUoKTsKLSAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVj
b2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsK
LSAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQq
PihkYXRhKSwgRXh0ZW50KTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNF
eHRlbnQ+PiB7Ci0gICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8
VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBB
cnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQotICAgIHsKLSAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICAg
ICAgaWYgKCFhcnJheVJlZmVyZW5jZS5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAq
IHNpemVvZihUKSwgYWxpZ25vZihUKSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERl
Y29kZXI+Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTcGFuPFQsIEV4
dGVudD4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gc2l6ZTsKLSAgICAgICAgZGVjb2RlciA+PiBzaXplOwotICAgICAgICBp
ZiAoIXNpemUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBpZiAo
ISpzaXplKQotICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZSgpOworICAgICAg
ICBpZiBjb25zdGV4cHIgKEV4dGVudCA9PSBXVEY6OmR5bmFtaWNfZXh0ZW50KSB7CisgICAgICAg
ICAgICBkZWNvZGVyID4+IHNpemU7CisgICAgICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGlmICghKnNpemUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIFNwYW48VCwgRXh0ZW50PigpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgc2l6ZSA9IEV4dGVudDsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRXh0
ZW50LCAiQ2FuJ3QgZGVjb2RlIGEgZml4ZWQgc2l6ZSBvZiAwIik7CisgICAgICAgIH0KIAogICAg
ICAgICBhdXRvIGRhdGFTaXplID0gQ2hlY2tlZFNpemUgeyAqc2l6ZSB9ICogc2l6ZW9mKFQpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKQEAgLTEwNSw3
ICs4Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5
UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pCiAgICAgICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGln
bm9mKFQpKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0
PGNvbnN0IFQqPihkYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pigqc2l6ZSkpOworICAgICAgICBy
ZXR1cm4gU3BhbjxULCBFeHRlbnQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KCpzaXplKSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKaW5kZXggMTgxZDRkZTUyNmY5YTc0ZDM2NmZk
OGNiZTVhYTM1YTNjYmFjMDZkOS4uODNhMjdlNzU0N2NmYzgwOTQ2YjkzODIzYmEyOGYxNzgwMjAw
NzE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVu
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCkBA
IC0yNiw5NSArMjYsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8bGltaXRzPgorI2lu
Y2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKIAotaW5saW5lIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0
ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+Ci1j
bGFzcyBBcnJheVJlZmVyZW5jZTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBcnJh
eVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+IHsKLXB1YmxpYzoKLSAg
ICBBcnJheVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLQotICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0
IFQqIGRhdGEsIHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShkYXRhKQotICAgICAgICAs
IG1fc2l6ZShzaXplKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGlu
ZUNhcGFjaXR5PgotICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eT4mIHZlY3RvcikKLSAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKLSAgICAgICAg
LCBtX3NpemUodmVjdG9yLnNpemUoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZTsgfQotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3NpemU7IH0KLSAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9k
YXRhLCBtX3NpemUpOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIGNvbnN0IFQqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3QgbV9zaXplIHsg
MCB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+Ci1jbGFzcyBB
cnJheVJlZmVyZW5jZSB7Ci1wdWJsaWM6Ci0gICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7
Ci0KLSAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkKLSAgICAg
ICAgOiBtX2RhdGEoZGF0YSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6
ZSA9PSBFeHRlbnQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNp
dHk+Ci0gICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYg
dmVjdG9yKQotICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKHZlY3Rvci5zaXplKCkgPT0gRXh0ZW50KTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIUV4dGVudDsgfQotCi0gICAgY29uc3RleHBy
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gRXh0ZW50OyB9Ci0KLSAgICBjb25zdCBUKiBk
YXRhKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICBWZWN0
b3I8VD4gdmVjdG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7IG1fZGF0YSwgRXh0
ZW50IH07Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IFQqIG1fZGF0YSB7IG51bGxwdHIg
fTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLUFy
cmF5UmVmZXJlbmNlKGNvbnN0IFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEFy
cmF5UmVmZXJlbmNlPFQ+OwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBX
VEY6OmR5bmFtaWNfZXh0ZW50PiB1c2luZyBBcnJheVJlZmVyZW5jZSA9IFNwYW48Y29uc3QgVCwg
RXh0ZW50PjsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EYXRhUmVmZXJlbmNlLmgKaW5kZXggZGJiM2Q2OTI3ZjM0MWM1YWE5M2ZjMTA3M2NiMDc1NmUz
Y2JhMzdkNS4uNzM2Nzk1MjZkNDYzYzExNTZmNjc4YTc4OTFjOTQ2ZjI4MDdmYjdiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaApAQCAtMjksNiArMjksNiBA
QAogCiBuYW1lc3BhY2UgSVBDIHsKIAotdXNpbmcgRGF0YVJlZmVyZW5jZSA9IEFycmF5UmVmZXJl
bmNlPHVpbnQ4X3QsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47Cit1c2luZyBEYXRhUmVm
ZXJlbmNlID0gU3Bhbjxjb25zdCB1aW50OF90PjsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuY3BwCmluZGV4IGU5NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUu
LmQ3NjU4NDMyYWRiNmE2MzgzMTRlMTE4OGZjZWZhYmFiNWE2NTJiNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
Y3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBJUEMgewogCiB2b2lkIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGlm
IChtX2RhdGEuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZGF0YS5lbXB0eSgpKSB7CiAgICAgICAg
IFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29kZShlbmNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCA2NTcxMjM1ODhiYTk0ZGI1
MDNiMzU3OWU0MjNlZjM0OGZhZGEzZTNmLi42MWNhOGUxZjk3MmJmOTM4NDMyNmQ1MTlkNjI2Njdl
ZTNlM2MwZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBSZWZQdHI8RGF0YT4gRGF0YTo6Y3JlYXRlKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCisg
ICAgaWYgKGRhdGEuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJu
IGNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IDYyZDI4NTMz
MWJjYmY1MzkzZTVjODQxYzYzZTZjMDQ5YzI5YzE3YWIuLmFjMmUzNDc5OTdkZjkyNGI5NzY1MTIw
MmQ3OWExZWQ3ZDlmMWE2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gc3Rk
OjpvcHRpb25hbDxIYQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0Vt
cHR5KCkpCisgICAgaWYgKGRhdGFSZWZlcmVuY2UuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHt7
IH19OwogCiAgICAgSGFuZGxlIGhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1VzZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAppbmRl
eCAzYjU0MDQ1NWU2MjAxZjQzNWM5NWQyZmJiZGMzNGNmOTI4NTgwNGY1Li40ZTQzYjVlNTgzYjI2
NmZjNzM1ODYwNTc1OTM0NmZjN2IwOTk5MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Vc2VyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3Bw
CkBAIC00NDAsNyArNDQwLDcgQEAgYm9vbCBVc2VyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIHJlc3VsdCA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVm
ZXJlbmNlLnZlY3RvcigpKTsKKyAgICAgICAgcmVzdWx0ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KHsgZGF0YVJlZmVyZW5jZSB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDQ2
MmU4NTk0MmJmNWQ0MWFiMDk3NGY0NGI5NGQ0N2I2MzFhZGFkMDIuLmU2YWNlODEzODllY2MyYTI1
ZmE4MDhhMjk2NzE0NmI2NzBlYzExNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0Fy
Z3VtZW50Q29kZXJzQ0YuY3BwCkBAIC02NzIsNyArNjcyLDcgQEAgc3RkOjpvcHRpb25hbDxSZXRh
aW5QdHI8Q0ZVUkxSZWY+PiBBcmd1bWVudENvZGVyPFJldGFpblB0cjxDRlVSTFJlZj4+OjpkZWNv
ZGUoRGUKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIEFy
Z3VtZW50Q29kZXJzQ0ZNYWMubW0gYW5kIGNoYW5nZSB0aGlzIGZpbGUgYmFjayB0byBiZSBDKysK
ICAgICAvLyBpbnN0ZWFkIG9mIE9iamVjdGl2ZS1DKysuCi0gICAgaWYgKHVybEJ5dGVzLT5pc0Vt
cHR5KCkpIHsKKyAgICBpZiAodXJsQnl0ZXMtPmVtcHR5KCkpIHsKICAgICAgICAgLy8gQ0ZVUkwg
Y2FuJ3QgaG9sZCBhbiBlbXB0eSBVUkwsIHVubGlrZSBOU1VSTC4KICAgICAgICAgLy8gRklYTUU6
IFRoaXMgZGlzY2FyZHMgYmFzZSBVUkwsIHdoaWNoIHNlZW1zIGluY29ycmVjdC4KICAgICAgICAg
cmV0dXJuIHt7IChfX2JyaWRnZSBDRlVSTFJlZilbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdIH19
OwpAQCAtNjg1LDcgKzY4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGVVJMUmVmPj4g
QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZVUkxSZWY+Pjo6ZGVjb2RlKERlCiAgICAgcmV0dXJu
IFdURk1vdmUocmVzdWx0KTsKIH0KIAotZW51bSBjbGFzcyBDR0NvbG9yU3BhY2VFbmNvZGluZ1Nj
aGVtZSB7IE5hbWUsIFByb3BlcnR5TGlzdCB9OworZW51bSBjbGFzcyBDR0NvbG9yU3BhY2VFbmNv
ZGluZ1NjaGVtZSA6IGJvb2wgeyBOYW1lLCBQcm9wZXJ0eUxpc3QgfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4KIHZvaWQgQXJndW1lbnRDb2RlcjxDR0NvbG9yU3BhY2VSZWY+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCkBAIC05MDAs
MTIgKzkwMCw0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8SVBDOjpDRlR5cGU+IHsK
ICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxJUEM6OkNHQ29sb3JT
cGFjZUVuY29kaW5nU2NoZW1lPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAg
ICAgICAgSVBDOjpDR0NvbG9yU3BhY2VFbmNvZGluZ1NjaGVtZSwKLSAgICAgICAgSVBDOjpDR0Nv
bG9yU3BhY2VFbmNvZGluZ1NjaGVtZTo6TmFtZSwKLSAgICAgICAgSVBDOjpDR0NvbG9yU3BhY2VF
bmNvZGluZ1NjaGVtZTo6UHJvcGVydHlMaXN0Ci0gICAgPjsKLX07Ci0KIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uNTI2MGViNmQ0
NzlmOTEwMjY3NmY4NmQ5ZmU4YmQ3ZWRmODRhZDU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBpbmxp
bmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29u
ZmlndXJhdGlvbiAqY29uZmlndQogICAgICAgICBmbG9hdFJlY3QgPSBXZWJDb3JlOjpGbG9hdFJl
Y3QocGRmQ29uZmlndXJhdGlvbi5yZWN0KTsKIAogICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJ
RCwgZmxvYXRSZWN0LCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSkgewotICAgICAgICBpZiAocGRmRGF0
YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKHBkZkRhdGEuZW1wdHkoKSkgewogICAgICAgICAg
ICAgaGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3IoV0tFcnJvclVua25vd24pLmdldCgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IGViMGNmYzM3NTdjZWUxNzEw
NWJjNDM3M2EwODc3ZDg2Yzg5ODU5ZDMuLmU5OTBiMWQwYzQ0NWNhN2IzNDI0YTUzZDM3YTg4ZTRi
NjViZTk2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgRG93bmxvYWRQcm94eTo6fkRvd25s
b2FkUHJveHkoKQogCiBzdGF0aWMgUmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgaWYgKGRhdGEuaXNFbXB0eSgpKQorICAg
IGlmIChkYXRhLmVtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBB
UEk6OkRhdGE6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGYyYmVj
ZmU4NTU4NjU0NjdlMDhiMzI1MmMwNGU2MThhMTZiN2FiMmEuLmI2ZDc2NDUzNjBlZmMyNThmNmEw
NDE1ZjkzZjUzOGI5NTBjYmM1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjpyZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0CiAjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKQogewotICAgIG1fYWNjZXNzaWJpbGl0eVRva2VuID0gZGF0YS52ZWN0b3Io
KTsKKyAgICBtX2FjY2Vzc2liaWxpdHlUb2tlbiA9IFZlY3RvcihkYXRhKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggZWYzMjY3OGY4
OTVjYWM0ZWE3MjE0MDQ3ZDU5MTQxMDcxNWNiMmZkOS4uOTExNzNhNzc4Mzc3NDU0NjdiYmEyYTc4
YjVlNDY4YzVkMjIxNDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmNwcApAQCAtMzQzLDEyICszNDMsMTIgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6ZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHIKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFoYW5kbGVyLT5jbGllbnQoKS5zdXBwb3J0c0FzeW5jUmVw
bHkoKSkgewotICAgICAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwg
V1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJlZmVyZW5jZS52ZWN0b3IoKSkpOworICAgICAg
ICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwgV1RGTW92ZShmcmFtZUlu
Zm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQoeyBkYXRhUmVmZXJlbmNlIH0pKTsKICAgICAgICAgcmVwbHkoeyB9LCB7IH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1l
c3NhZ2VXaXRoQXN5bmNSZXBseSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxl
ci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJl
ZmVyZW5jZS52ZWN0b3IoKSksIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBtdXRhYmxl
IHsKKyAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZVdpdGhBc3luY1JlcGx5KCpw
YWdlLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBoYW5kbGVyLT53b3JsZCgpLCAgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdCh7IGRhdGFSZWZlcmVuY2UgfSksIFtyZXBseSA9
IFdURk1vdmUocmVwbHkpXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2Fn
ZS5pc051bGwoKSkgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIHJl
cGx5KHsgdmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRlcygpIH0sIHsg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0ZTk2Yzk0
ZDZhNzdjNzZmMDI4NWFiMDE2YTM2YmYwZTFhNjRkYWE5Li41OGRmNTFhZjEyNjU1ZTk0MDgxMWZm
MWYzNWM5MDRhNTE2OWQ4NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTE1MjAsNyArMTUyMCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJv
Y2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogCi0gICAgYXV0byBuYXZpZ2F0aW9u
ID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihtYWtlVW5pcXVl
PEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywg
YmFzZVVSTCwgdXNlckRhdGEpKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25T
dGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKG1ha2VVbmlxdWU8QVBJOjpTdWJzdGl0dXRl
RGF0YT4oVmVjdG9yKGRhdGEpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRh
KSk7CiAKICAgICBpZiAoc2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZp
Z2F0aW9uKCkpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmlnYXRpb25BY3Rpdml0
eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJDbGllbnQgbmF2aWdh
dGlvbiJfcykpOwpAQCAtMTU4MSw3ICsxNTgxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXUK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVn
aXN0cmFibGVEb21haW4geyBzaW11bGF0ZWRSZXF1ZXN0LnVybCgpIH0sIFByb2Nlc3NMYXVuY2hS
ZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdh
dGlvblN0YXRlLT5jcmVhdGVTaW11bGF0ZWRMb2FkV2l0aERhdGFOYXZpZ2F0aW9uKFJlc291cmNl
UmVxdWVzdChzaW11bGF0ZWRSZXF1ZXN0KSwgbWFrZVVuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRh
PihkYXRhLnZlY3RvcigpLCBSZXNvdXJjZVJlc3BvbnNlKHNpbXVsYXRlZFJlc3BvbnNlKSwgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJsZSks
IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKKyAgICBhdXRvIG5hdmlnYXRpb24g
PSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlU2ltdWxhdGVkTG9hZFdpdGhEYXRhTmF2aWdhdGlv
bihSZXNvdXJjZVJlcXVlc3Qoc2ltdWxhdGVkUmVxdWVzdCksIG1ha2VVbmlxdWU8QVBJOjpTdWJz
dGl0dXRlRGF0YT4oVmVjdG9yKGRhdGEpLCBSZXNvdXJjZVJlc3BvbnNlKHNpbXVsYXRlZFJlc3Bv
bnNlKSwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6
VmlzaWJsZSksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKIAogICAgIGlmIChz
aG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKICAgICAg
ICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3MoKS50aHJv
dHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7CkBAIC00
MzE2LDcgKzQzMTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcAogICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkKHBhcmFtZXRlcnMsIGZyYW1lSUQsIHdvcmxkLndvcmxkRGF0YSgpKSwgW2FjdGl2aXR5ID0g
V1RGTW92ZShhY3Rpdml0eSksIGNhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pXSAoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBzdGQ6Om9w
dGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+JiYgZGV0YWlscykgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChkZXRhaWxzKQogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhw
ZWN0ZWQoV1RGTW92ZSgqZGV0YWlscykpKTsKLSAgICAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNF
bXB0eSgpKQorICAgICAgICBpZiAoZGF0YVJlZmVyZW5jZS5lbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24oeyBudWxscHRyIH0pOwogICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YTsKICAgICAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFSZWZl
cmVuY2Uuc2l6ZSgpKTsKQEAgLTkyMjIsNyArOTIyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3
cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBDb21wbGV0aW9uSGFuZGxl
cjx2CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1hc3RlcktleTsKIAogICAgIGlmIChhdXRvIGtleURh
dGEgPSBtX25hdmlnYXRpb25DbGllbnQtPndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCi0gICAg
ICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKKyAgICAg
ICAgbWFzdGVyS2V5ID0gVmVjdG9yKGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKSk7CiAKICAgICBW
ZWN0b3I8dWludDhfdD4gd3JhcHBlZEtleTsKICAgICBib29sIHN1Y2NlZWRlZCA9IHdyYXBTZXJp
YWxpemVkQ3J5cHRvS2V5KG1hc3RlcktleSwga2V5LCB3cmFwcGVkS2V5KTsKQEAgLTkyMzYsNyAr
OTIzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBDb21wbGV0aW9uCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1h
c3RlcktleTsKIAogICAgIGlmIChhdXRvIGtleURhdGEgPSBtX25hdmlnYXRpb25DbGllbnQtPndl
YkNyeXB0b01hc3RlcktleSgqdGhpcykpCi0gICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRh
dGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKKyAgICAgICAgbWFzdGVyS2V5ID0gVmVjdG9yKGtleURh
dGEtPmRhdGFSZWZlcmVuY2UoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4ga2V5OwogICAgIGJv
b2wgc3VjY2VlZGVkID0gdW53cmFwU2VyaWFsaXplZENyeXB0b0tleShtYXN0ZXJLZXksIHdyYXBw
ZWRLZXksIGtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCmluZGV4IGEyYzg1OWNjMjg2Yjg5MWJhNGY5NjgwMjE5ZmVkZjZkZDUzNTNjYmYuLmM2OTll
MzY2ODU0YjMxMWVlODJmYTVlZGIxNjYyY2E1YTRiYzRjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC05MDAsNyArOTAwLDcgQEAgc3RhdGlj
IHZvaWQgc3RvcmVBY2Nlc3NpYmlsaXR5UmVtb3RlQ29ubmVjdGlvbkluZm9ybWF0aW9uKGlkIGVs
ZW1lbnQsIHBpZF90IHBpZCwKICAgICBhdXRvIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxm
KTsKICAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3
VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxmXShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHBkZkRhdGEpIHsKICAgICAgICAgcmV0YWluZWRTZWxmLT5fcGRmUHJpbnRDYWxs
YmFja0lEID0gMDsKLSAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQorICAgICAgICBpZiAo
cGRmRGF0YS5lbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gZGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBkZkRhdGEuZGF0
YSgpLCBwZGZEYXRhLnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTAzZTA4MGFlZTA4MzgwYjQ2ZmZlODlkZDhlNjFiNjZi
NTk4ZGI0Ni4uOWFmN2QyYTFkYmJiY2QyYWIxY2VkMDkzNWNlZWNkOTZjODI1Mjk3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00NjAs
NyArNDYwLDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QREZPbkRpc2soY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBv
cmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpCiB7Ci0gICAgaWYgKGRhdGEu
aXNFbXB0eSgpKSB7CisgICAgaWYgKGRhdGEuZW1wdHkoKSkgewogICAgICAgICBXVEZMb2dBbHdh
eXMoIkNhbm5vdCBzYXZlIGVtcHR5IFBERiBmaWxlIHRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5
LiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXgg
NzgxZGYxODg4MjlkNGIzYjM5NTcyYWY2MDA3ZjE1YzFlZjQyODA2MS4uZWNhOWY5MzM3NmM0MGM1
N2M3NGRiZmIxMGUyODJjNjAwNGJiOWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25z
R2VuZXJhdGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC02
ODYsNyArNjg2LDcgQEAgU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNo
YWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJU
eXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwg
R0NHTGludCogcHJlY2lzaW9uKQogewotICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwg
Mj4gcmFuZ2VSZXBseTsKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdl
UmVwbHkgeyB7IH0gfTsKICAgICBpbnQzMl90IHByZWNpc2lvblJlcGx5ID0geyB9OwogICAgIGlm
ICghaXNDb250ZXh0TG9zdCgpKSB7CiAgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9y
bWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJl
Y2lzaW9uUmVwbHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMzE0MmQ3NzhjMjc0MGY3ZDI2MmFlZjIxNTI4
ODA5NzgzOTE4NGNhMC4uOTEwYjJjY2Q4NDFiYTEzMDE5NGIxZjRiMjYxMmRiOTM2YjNlNjQwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRp
ZFJlY2VpdmVCaW5hcnlEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEpCiAKICAgICBtX2lu
c3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3JlYXRl
V2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnkpKTsKIAotICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlQmluYXJ5RGF0YShkYXRhLnZlY3RvcigpKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZUJpbmFyeURhdGEoeyBkYXRhIH0pOwogfQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRp
ZENsb3NlKHVuc2lnbmVkIHNob3J0IGNvZGUsIFN0cmluZyYmIHJlYXNvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAKaW5kZXggNmQxMTllNjg4MDQyZGI2Yjgw
ZjA2NDdjYzEyZGQyMzEyNmVmMjk3Ny4uNTMzOGFjYjQyYmZjODM4ODc4OGE3MDNlOWU3ZWMzN2Zj
ZDU0NTE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAK
QEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVj
ZWl2ZURhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcjsKICAgICBTdHJpbmcgdGV4dDsKICAgICBpZiAoaXNSYXcpCi0gICAgICAg
IGJ1ZmZlciA9IGRhdGEudmVjdG9yKCk7CisgICAgICAgIGJ1ZmZlciA9IFZlY3RvcihkYXRhKTsK
ICAgICBlbHNlCiAgICAgICAgIHRleHQgPSBTdHJpbmc6OmZyb21VVEY4KGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggNWMw
YTFmYTM1MjdiZmMwZWMyNmY0NWJkZDQ5ZDkwZGQwMjdlNDQ5ZC4uNjM4YmQ4NDI2ZDg1YmMzMDk5
YjUwOTkyOTNlNDE3ZDZkM2Q3MjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKQEAgLTI3NCw3ICsyNzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhyZXN1bHRWYWx1ZS52ZWN0b3IoKSk7CisgICAg
ICAgICAgICBhdXRvIHZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2ly
ZUJ5dGVzKHsgcmVzdWx0VmFsdWUgfSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih2
YWx1ZS5wdHIoKSwgeyB9KTsKICAgICAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBkNDEyODJmYzVkYzYzYzMx
N2U1NGI4MjYwYzU3ZTM0NGNhMzZlMzA5Li44YmFlOTkwMmFkOGMzM2U4NjJlMmQ3MDhlYTI3MmMx
M2Y0YjQ3Y2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQpAQCAtNTA5LDcgKzUwOSw3IEBAIHN0YXRpYyBTdHJpbmcmIHJlcGxh
Y2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgpCiB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7CiAgICAgZm9yIChhdXRvJiB0eXBlIDogdHlwZXMp
Ci0gICAgICAgIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBhc3RlYm9hcmRPdmVycmlk
ZXMoKS5hZGRPdmVycmlkZShyZXBsYWNlU2VsZWN0aW9uUGFzdGVib2FyZE5hbWUoKSwgdHlwZSwg
ZGF0YS52ZWN0b3IoKSk7CisgICAgICAgIFdlYlBhc3RlYm9hcmRPdmVycmlkZXM6OnNoYXJlZFBh
c3RlYm9hcmRPdmVycmlkZXMoKS5hZGRPdmVycmlkZShyZXBsYWNlU2VsZWN0aW9uUGFzdGVib2Fy
ZE5hbWUoKSwgdHlwZSwgeyBkYXRhIH0pOwogCiAgICAgcmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkKHJlcGxhY2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgpLCBbXShib29sKSB7IH0pOwogCg==
</data>
<flag name="commit-queue"
          id="471531"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446195</attachid>
            <date>2021-12-07 10:00:36 -0800</date>
            <delta_ts>2021-12-08 16:09:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233931-20211207100035.patch</filename>
            <type>text/plain</type>
            <size>28803</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2NTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhhOGRhNDgxMTA4YzlmNDdjMDZjOWM5
ZjFiMjRlMWE2NTM1NTIzZTguLjIyZWU3NWNkZTk3NTU2MmJhYjQwYzc5NTU3ZGNkZGYxZmU0MTYz
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgU3BhbiBmb3IgSVBDOjpBcnJh
eVJlZmVyZW5jZSBhbmQgRGF0YVJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMzOTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvVmVjdG9yLmg6CisgICAgICAgIChXVEY6OlZlY3Rv
cjo6VmVjdG9yKToKKyAgICAgICAgKFdURjo6VmVjdG9yOjpzcGFuIGNvbnN0KToKKwogMjAyMS0x
Mi0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbV2Vi
IEFuaW1hdGlvbnNdIEFkZCBhIHdheSB0byBydW4gc2NyaXB0ZWQgYW5pbWF0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCBlMjExZWYxZjYwODM0MmVkZjUwMDkxMjMyNDRkNWRjMDMxM2VjYTZiLi5iM2VhNmYyZjVj
NTgwZmE2MmY1NTlkZWU2ODc3NmVjYjVlN2Q4NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBA
CisyMDIxLTEyLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgVXNlIFNwYW4gZm9yIElQQzo6QXJyYXlSZWZlcmVuY2UgYW5kIERhdGFSZWZl
cmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MzkzMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBiZWhhdmlvciwganVzdCBzaW1wbGlmeWluZyBzb21lIGNvZGUuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvQXJyYXlSZWZlcmVuY2UuaDoKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6
OkFycmF5UmVmZXJlbmNlOjpBcnJheVJlZmVyZW5jZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6
OkFycmF5UmVmZXJlbmNlOjppc0VtcHR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKElQQzo6
QXJyYXlSZWZlcmVuY2U6OnNpemUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpBcnJh
eVJlZmVyZW5jZTo6ZGF0YSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFycmF5UmVm
ZXJlbmNlOjp2ZWN0b3IgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9E
YXRhUmVmZXJlbmNlLmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFS
ZWZlcmVuY2UuY3BwOgorICAgICAgICAoSVBDOjpTaGFyZWRCdWZmZXJEYXRhUmVmZXJlbmNlOjpl
bmNvZGUgY29uc3QpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJRGF0YS5jcHA6CisgICAgICAg
IChBUEk6OkRhdGE6OmNyZWF0ZSk6CisgICAgICAgICogU2hhcmVkL0NvY29hL1NhbmRib3hFeHRl
bnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Vc2VyRGF0YS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9jZi9Bcmd1bWVudENvZGVy
c0NGLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZVUkxSZWY+
Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IGNyZWF0ZVBERldpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZURhdGEpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlByb3Zpc2lvbmFs
UGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQ
b3N0TWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZERhdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmxvYWRTaW11bGF0ZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF93a19wYWdlQ291bnRG
b3JQcmludEZvcm1hdHRlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzYXZlUERGVG9UZW1wb3Jh
cnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25zR2Vu
ZXJhdGVkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94
eTo6Z2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldENoYW5u
ZWw6OmRpZFJlY2VpdmVCaW5hcnlEYXRhKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVjZWl2ZURhdGEpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEpOgorCiAyMDIx
LTEyLTA2ICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBb
aU9TXVtXUF0gQmxvY2sgYWNjZXNzIHRvIHVudXNlZCBJT0tpdCBjbGFzcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaAppbmRleCBj
NGNkZmI0Y2M1ZjI3MzRiN2E2YWNlZTkxZTk3OWM5YzFiODY5YmI4Li5jZmZiOWE1OGFjMDcyNjUw
ZDEyYzIzMjU2MzliNDkyNjBiYzY3YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9WZWN0
b3IuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9WZWN0b3IuaApAQCAtNjU0LDYgKzY1NCw5IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIFR5cGVPcGVyYXRpb25zOjp1bmluaXRpYWxpemVkQ29weShkYXRh
LCBkYXRhICsgZGF0YVNpemUsIGJlZ2luKCkpOwogICAgIH0KIAorICAgIFZlY3RvcihTcGFuPGNv
bnN0IFQ+IHNwYW4pCisgICAgICAgIDogVmVjdG9yKHNwYW4uZGF0YSgpLCBzcGFuLnNpemUoKSkg
eyB9CisKICAgICBWZWN0b3Ioc3RkOjppbml0aWFsaXplcl9saXN0PFQ+IGluaXRpYWxpemVyTGlz
dCkKICAgICB7CiAgICAgICAgIHJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5pdGlhbGl6ZXJMaXN0
LnNpemUoKSk7CkBAIC03MDcsNiArNzEwLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBwdHJkaWZm
X3Qgc2l6ZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihWZWN0b3IsIG1f
c2l6ZSk7IH0KICAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBCYXNlOjpjYXBh
Y2l0eSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNpemUoKTsgfQor
ICAgIFNwYW48Y29uc3QgVD4gc3BhbigpIGNvbnN0IHsgcmV0dXJuIHsgZGF0YSgpLCBzaXplKCkg
fTsgfQogCiAgICAgVCYgYXQoc2l6ZV90IGkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0FyZ3VtZW50Q29kZXJzLmgKaW5kZXggZmJmMTVmOTIzZmJkZjg2MGEwZTYxMTM1OTQ5
NDlmOTU0YjI5MjQ2Yi4uYTMzNDJjM2JjM2U3ZTIxMzQ4ZmUyMDg4N2NjMWRmZWYyYmY5NTk2YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJndW1lbnRDb2RlcnMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Bcmd1bWVudENvZGVycy5oCkBAIC01Nyw0
NiArNTcsMjggQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUFyZ3VtZW50Q29k
ZXIgewogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+IHN0
cnVjdCBBcmd1bWVudENvZGVyPEFycmF5UmVmZXJlbmNlPFQsIEV4dGVudD4+IHsKLSAgICB1c2lu
ZyBBcnJheVJlZmVyZW5jZVR5cGUgPSBBcnJheVJlZmVyZW5jZTxULCBFeHRlbnQ+OwordGVtcGxh
dGU8dHlwZW5hbWUgVCwgc2l6ZV90IEV4dGVudD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8U3BhbjxU
LCBFeHRlbnQ+PiB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rlcj4KLSAgICBzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXJyYXlSZWZlcmVuY2VUeXBlJiBh
cnJheVJlZmVyZW5jZSkKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU3BhbjxULCBFeHRlbnQ+JiBzcGFuKQogICAgIHsKLSAgICAgICAgaWYgKCFFeHRlbnQp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEo
KSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAqIHNpemVvZihUKSwgYWxpZ25vZihUKSk7CisgICAg
ICAgIGlmIGNvbnN0ZXhwciAoRXh0ZW50ID09IFdURjo6ZHluYW1pY19leHRlbnQpCisgICAgICAg
ICAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzcGFuLnNpemUoKSk7CisgICAg
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KHNwYW4uZGF0YSgpKSwgc3Bhbi5zaXplKCkgKiBzaXplb2YoVCksIGFsaWdub2Yo
VCkpOwogICAgIH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBEZWNvZGVyPgotICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPEFycmF5UmVmZXJlbmNlVHlwZT4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
Ci0gICAgewotICAgICAgICBpZiAoIUV4dGVudCkKLSAgICAgICAgICAgIHJldHVybiBBcnJheVJl
ZmVyZW5jZVR5cGUoKTsKLSAgICAgICAgY29uc3QgdWludDhfdCogZGF0YSA9IGRlY29kZXIuZGVj
b2RlRml4ZWRMZW5ndGhSZWZlcmVuY2UoRXh0ZW50ICogc2l6ZW9mKFQpLCBhbGlnbm9mKFQpKTsK
LSAgICAgICAgaWYgKCFkYXRhKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAg
ICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0PGNvbnN0IFQq
PihkYXRhKSwgRXh0ZW50KTsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxBcnJheVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNF
eHRlbnQ+PiB7Ci0gICAgdXNpbmcgQXJyYXlSZWZlcmVuY2VUeXBlID0gQXJyYXlSZWZlcmVuY2U8
VCwgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0ZW50PjsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBF
bmNvZGVyPgotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBB
cnJheVJlZmVyZW5jZVR5cGUmIGFycmF5UmVmZXJlbmNlKQotICAgIHsKLSAgICAgICAgZW5jb2Rl
ciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXlSZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICAg
ICAgaWYgKCFhcnJheVJlZmVyZW5jZS5zaXplKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGFycmF5UmVmZXJlbmNlLmRhdGEoKSksIGFycmF5UmVmZXJlbmNlLnNpemUoKSAq
IHNpemVvZihUKSwgYWxpZ25vZihUKSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIERl
Y29kZXI+Ci0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8QXJyYXlSZWZlcmVuY2VUeXBlPiBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTcGFuPFQsIEV4
dGVudD4+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKICAgICAgICAgc3RkOjpvcHRp
b25hbDx1aW50NjRfdD4gc2l6ZTsKLSAgICAgICAgZGVjb2RlciA+PiBzaXplOwotICAgICAgICBp
ZiAoIXNpemUpCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICBpZiAo
ISpzaXplKQotICAgICAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZSgpOworICAgICAg
ICBpZiBjb25zdGV4cHIgKEV4dGVudCA9PSBXVEY6OmR5bmFtaWNfZXh0ZW50KSB7CisgICAgICAg
ICAgICBkZWNvZGVyID4+IHNpemU7CisgICAgICAgICAgICBpZiAoIXNpemUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIGlmICghKnNpemUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIFNwYW48VCwgRXh0ZW50PigpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgc2l6ZSA9IEV4dGVudDsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoRXh0
ZW50LCAiQ2FuJ3QgZGVjb2RlIGEgZml4ZWQgc2l6ZSBvZiAwIik7CisgICAgICAgIH0KIAogICAg
ICAgICBhdXRvIGRhdGFTaXplID0gQ2hlY2tlZFNpemUgeyAqc2l6ZSB9ICogc2l6ZW9mKFQpOwog
ICAgICAgICBpZiAoVU5MSUtFTFkoZGF0YVNpemUuaGFzT3ZlcmZsb3dlZCgpKSkKQEAgLTEwNSw3
ICs4Nyw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBBcmd1bWVudENvZGVyPEFycmF5
UmVmZXJlbmNlPFQsIGFycmF5UmVmZXJlbmNlRHluYW1pCiAgICAgICAgIGNvbnN0IHVpbnQ4X3Qq
IGRhdGEgPSBkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoUmVmZXJlbmNlKGRhdGFTaXplLCBhbGln
bm9mKFQpKTsKICAgICAgICAgaWYgKCFkYXRhKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICAgICAgcmV0dXJuIEFycmF5UmVmZXJlbmNlVHlwZShyZWludGVycHJldF9jYXN0
PGNvbnN0IFQqPihkYXRhKSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pigqc2l6ZSkpOworICAgICAgICBy
ZXR1cm4gU3BhbjxULCBFeHRlbnQ+KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGRhdGEpLCBz
dGF0aWNfY2FzdDxzaXplX3Q+KCpzaXplKSk7CiAgICAgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVuY2UuaCBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0FycmF5UmVmZXJlbmNlLmgKaW5kZXggMTgxZDRkZTUyNmY5YTc0ZDM2NmZk
OGNiZTVhYTM1YTNjYmFjMDZkOS4uODNhMjdlNzU0N2NmYzgwOTQ2YjkzODIzYmEyOGYxNzgwMjAw
NzE4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQXJyYXlSZWZlcmVu
Y2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9BcnJheVJlZmVyZW5jZS5oCkBA
IC0yNiw5NSArMjYsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8bGltaXRzPgorI2lu
Y2x1ZGUgPHd0Zi9TcGFuLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2Ug
SVBDIHsKIAotaW5saW5lIGNvbnN0ZXhwciBzaXplX3QgYXJyYXlSZWZlcmVuY2VEeW5hbWljRXh0
ZW50ID0gc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+Ci1j
bGFzcyBBcnJheVJlZmVyZW5jZTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBBcnJh
eVJlZmVyZW5jZTxULCBhcnJheVJlZmVyZW5jZUR5bmFtaWNFeHRlbnQ+IHsKLXB1YmxpYzoKLSAg
ICBBcnJheVJlZmVyZW5jZSgpID0gZGVmYXVsdDsKLQotICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0
IFQqIGRhdGEsIHNpemVfdCBzaXplKQotICAgICAgICA6IG1fZGF0YShkYXRhKQotICAgICAgICAs
IG1fc2l6ZShzaXplKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8c2l6ZV90IGlubGlu
ZUNhcGFjaXR5PgotICAgIEFycmF5UmVmZXJlbmNlKGNvbnN0IFZlY3RvcjxULCBpbmxpbmVDYXBh
Y2l0eT4mIHZlY3RvcikKLSAgICAgICAgOiBtX2RhdGEodmVjdG9yLmRhdGEoKSkKLSAgICAgICAg
LCBtX3NpemUodmVjdG9yLnNpemUoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgYm9vbCBpc0VtcHR5
KCkgY29uc3QgeyByZXR1cm4gIW1fc2l6ZTsgfQotCi0gICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IHJldHVybiBtX3NpemU7IH0KLSAgICBjb25zdCBUKiBkYXRhKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAg
cmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICBWZWN0b3I8VD4gdmVjdG9yKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIFZlY3RvcjxUPiByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQobV9k
YXRhLCBtX3NpemUpOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIGNvbnN0IFQqIG1fZGF0YSB7IG51bGxwdHIgfTsKLSAgICBzaXplX3QgbV9zaXplIHsg
MCB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQ+Ci1jbGFzcyBB
cnJheVJlZmVyZW5jZSB7Ci1wdWJsaWM6Ci0gICAgQXJyYXlSZWZlcmVuY2UoKSA9IGRlZmF1bHQ7
Ci0KLSAgICBBcnJheVJlZmVyZW5jZShjb25zdCBUKiBkYXRhLCBzaXplX3Qgc2l6ZSkKLSAgICAg
ICAgOiBtX2RhdGEoZGF0YSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoc2l6ZSwgc2l6
ZSA9PSBFeHRlbnQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxzaXplX3QgaW5saW5lQ2FwYWNp
dHk+Ci0gICAgQXJyYXlSZWZlcmVuY2UoY29uc3QgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYg
dmVjdG9yKQotICAgICAgICA6IG1fZGF0YSh2ZWN0b3IuZGF0YSgpKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKHZlY3Rvci5zaXplKCkgPT0gRXh0ZW50KTsKLSAgICB9Ci0KLSAgICBjb25zdGV4cHIg
Ym9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIUV4dGVudDsgfQotCi0gICAgY29uc3RleHBy
IHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gRXh0ZW50OyB9Ci0KLSAgICBjb25zdCBUKiBk
YXRhKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIG1fZGF0YTsKLSAgICB9Ci0KLSAgICBWZWN0
b3I8VD4gdmVjdG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB7IG1fZGF0YSwgRXh0
ZW50IH07Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IFQqIG1fZGF0YSB7IG51bGxwdHIg
fTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLUFy
cmF5UmVmZXJlbmNlKGNvbnN0IFdURjo6VmVjdG9yPFQsIGlubGluZUNhcGFjaXR5PiYpIC0+IEFy
cmF5UmVmZXJlbmNlPFQ+OwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBFeHRlbnQgPSBX
VEY6OmR5bmFtaWNfZXh0ZW50PiB1c2luZyBBcnJheVJlZmVyZW5jZSA9IFNwYW48Y29uc3QgVCwg
RXh0ZW50PjsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EYXRhUmVmZXJlbmNlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9EYXRhUmVmZXJlbmNlLmgKaW5kZXggZGJiM2Q2OTI3ZjM0MWM1YWE5M2ZjMTA3M2NiMDc1NmUz
Y2JhMzdkNS4uNzM2Nzk1MjZkNDYzYzExNTZmNjc4YTc4OTFjOTQ2ZjI4MDdmYjdiYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGF0YVJlZmVyZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhdGFSZWZlcmVuY2UuaApAQCAtMjksNiArMjksNiBA
QAogCiBuYW1lc3BhY2UgSVBDIHsKIAotdXNpbmcgRGF0YVJlZmVyZW5jZSA9IEFycmF5UmVmZXJl
bmNlPHVpbnQ4X3QsIGFycmF5UmVmZXJlbmNlRHluYW1pY0V4dGVudD47Cit1c2luZyBEYXRhUmVm
ZXJlbmNlID0gU3Bhbjxjb25zdCB1aW50OF90PjsKIAogfSAvLyBuYW1lc3BhY2UgSVBDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9TaGFyZWRCdWZmZXJEYXRhUmVmZXJl
bmNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZl
cmVuY2UuY3BwCmluZGV4IGU5NmRmYjFmYmY4OTFjZDRhMGM3NzRlODVjOTA3ODc1OGE2ZmU4MjUu
LmQ3NjU4NDMyYWRiNmE2MzgzMTRlMTE4OGZjZWZhYmFiNWE2NTJiNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL1NoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2Uu
Y3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBJUEMgewogCiB2b2lkIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGlm
IChtX2RhdGEuaXNFbXB0eSgpKSB7CisgICAgaWYgKG1fZGF0YS5lbXB0eSgpKSB7CiAgICAgICAg
IFNoYXJlZEJ1ZmZlckNvcHk6OmVuY29kZShlbmNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElEYXRhLmNwcAppbmRleCA2NTcxMjM1ODhiYTk0ZGI1
MDNiMzU3OWU0MjNlZjM0OGZhZGEzZTNmLi42MWNhOGUxZjk3MmJmOTM4NDMyNmQ1MTlkNjI2Njdl
ZTNlM2MwZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSURhdGEuY3BwCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBBUEkgewogCiBSZWZQdHI8RGF0YT4gRGF0YTo6Y3JlYXRlKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKLSAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCisg
ICAgaWYgKGRhdGEuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJu
IGNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCmluZGV4IDYyZDI4NTMz
MWJjYmY1MzkzZTVjODQxYzYzZTZjMDQ5YzI5YzE3YWIuLmFjMmUzNDc5OTdkZjkyNGI5NzY1MTIw
MmQ3OWExZWQ3ZDlmMWE2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KQEAgLTE2Nyw3ICsxNjcsNyBAQCBhdXRvIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikgLT4gc3Rk
OjpvcHRpb25hbDxIYQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoZGF0YVJlZmVyZW5jZS5pc0Vt
cHR5KCkpCisgICAgaWYgKGRhdGFSZWZlcmVuY2UuZW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHt7
IH19OwogCiAgICAgSGFuZGxlIGhhbmRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1VzZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAppbmRl
eCAzYjU0MDQ1NWU2MjAxZjQzNWM5NWQyZmJiZGMzNGNmOTI4NTgwNGY1Li40ZTQzYjVlNTgzYjI2
NmZjNzM1ODYwNTc1OTM0NmZjN2IwOTk5MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Vc2VyRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3Bw
CkBAIC00NDAsNyArNDQwLDcgQEAgYm9vbCBVc2VyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYg
ZGVjb2RlciwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGRhdGFSZWZlcmVuY2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgICAgIHJlc3VsdCA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChkYXRhUmVm
ZXJlbmNlLnZlY3RvcigpKTsKKyAgICAgICAgcmVzdWx0ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KHsgZGF0YVJlZmVyZW5jZSB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZi9Bcmd1bWVudENvZGVyc0NGLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCmluZGV4IDQ2
MmU4NTk0MmJmNWQ0MWFiMDk3NGY0NGI5NGQ0N2I2MzFhZGFkMDIuLmU2YWNlODEzODllY2MyYTI1
ZmE4MDhhMjk2NzE0NmI2NzBlYzExNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L2NmL0FyZ3VtZW50Q29kZXJzQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NmL0Fy
Z3VtZW50Q29kZXJzQ0YuY3BwCkBAIC02NzIsNyArNjcyLDcgQEAgc3RkOjpvcHRpb25hbDxSZXRh
aW5QdHI8Q0ZVUkxSZWY+PiBBcmd1bWVudENvZGVyPFJldGFpblB0cjxDRlVSTFJlZj4+OjpkZWNv
ZGUoRGUKICNpZiBVU0UoRk9VTkRBVElPTikKICAgICAvLyBGSVhNRTogTW92ZSB0aGlzIHRvIEFy
Z3VtZW50Q29kZXJzQ0ZNYWMubW0gYW5kIGNoYW5nZSB0aGlzIGZpbGUgYmFjayB0byBiZSBDKysK
ICAgICAvLyBpbnN0ZWFkIG9mIE9iamVjdGl2ZS1DKysuCi0gICAgaWYgKHVybEJ5dGVzLT5pc0Vt
cHR5KCkpIHsKKyAgICBpZiAodXJsQnl0ZXMtPmVtcHR5KCkpIHsKICAgICAgICAgLy8gQ0ZVUkwg
Y2FuJ3QgaG9sZCBhbiBlbXB0eSBVUkwsIHVubGlrZSBOU1VSTC4KICAgICAgICAgLy8gRklYTUU6
IFRoaXMgZGlzY2FyZHMgYmFzZSBVUkwsIHdoaWNoIHNlZW1zIGluY29ycmVjdC4KICAgICAgICAg
cmV0dXJuIHt7IChfX2JyaWRnZSBDRlVSTFJlZilbTlNVUkwgVVJMV2l0aFN0cmluZzpAIiJdIH19
OwpAQCAtNjg1LDcgKzY4NSw3IEBAIHN0ZDo6b3B0aW9uYWw8UmV0YWluUHRyPENGVVJMUmVmPj4g
QXJndW1lbnRDb2RlcjxSZXRhaW5QdHI8Q0ZVUkxSZWY+Pjo6ZGVjb2RlKERlCiAgICAgcmV0dXJu
IFdURk1vdmUocmVzdWx0KTsKIH0KIAotZW51bSBjbGFzcyBDR0NvbG9yU3BhY2VFbmNvZGluZ1Nj
aGVtZSB7IE5hbWUsIFByb3BlcnR5TGlzdCB9OworZW51bSBjbGFzcyBDR0NvbG9yU3BhY2VFbmNv
ZGluZ1NjaGVtZSA6IGJvb2wgeyBOYW1lLCBQcm9wZXJ0eUxpc3QgfTsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgRW5jb2Rlcj4KIHZvaWQgQXJndW1lbnRDb2RlcjxDR0NvbG9yU3BhY2VSZWY+OjplbmNv
ZGUoRW5jb2RlciYgZW5jb2RlciwgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UpCkBAIC05MDAs
MTIgKzkwMCw0IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8SVBDOjpDRlR5cGU+IHsK
ICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxJUEM6OkNHQ29sb3JT
cGFjZUVuY29kaW5nU2NoZW1lPiB7Ci0gICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKLSAg
ICAgICAgSVBDOjpDR0NvbG9yU3BhY2VFbmNvZGluZ1NjaGVtZSwKLSAgICAgICAgSVBDOjpDR0Nv
bG9yU3BhY2VFbmNvZGluZ1NjaGVtZTo6TmFtZSwKLSAgICAgICAgSVBDOjpDR0NvbG9yU3BhY2VF
bmNvZGluZ1NjaGVtZTo6UHJvcGVydHlMaXN0Ci0gICAgPjsKLX07Ci0KIH0gLy8gbmFtZXNwYWNl
IFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggYzRlZTUyNTA3NjQyZGI0ZTU0Y2ZhZGY3ZmVlM2JmMWI3YzBkM2QzYy4uNTI2MGViNmQ0
NzlmOTEwMjY3NmY4NmQ5ZmU4YmQ3ZWRmODRhZDU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0xNjQwLDcgKzE2NDAsNyBAQCBpbmxp
bmUgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29u
ZmlndXJhdGlvbiAqY29uZmlndQogICAgICAgICBmbG9hdFJlY3QgPSBXZWJDb3JlOjpGbG9hdFJl
Y3QocGRmQ29uZmlndXJhdGlvbi5yZWN0KTsKIAogICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJ
RCwgZmxvYXRSZWN0LCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcild
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSkgewotICAgICAgICBpZiAocGRmRGF0
YS5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKHBkZkRhdGEuZW1wdHkoKSkgewogICAgICAgICAg
ICAgaGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3IoV0tFcnJvclVua25vd24pLmdldCgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IGViMGNmYzM3NTdjZWUxNzEw
NWJjNDM3M2EwODc3ZDg2Yzg5ODU5ZDMuLmU5OTBiMWQwYzQ0NWNhN2IzNDI0YTUzZDM3YTg4ZTRi
NjViZTk2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Rvd25sb2Fkcy9E
b3dubG9hZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgRG93bmxvYWRQcm94eTo6fkRvd25s
b2FkUHJveHkoKQogCiBzdGF0aWMgUmVmUHRyPEFQSTo6RGF0YT4gY3JlYXRlRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgaWYgKGRhdGEuaXNFbXB0eSgpKQorICAg
IGlmIChkYXRhLmVtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBB
UEk6OkRhdGE6OmNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IGYyYmVj
ZmU4NTU4NjU0NjdlMDhiMzI1MmMwNGU2MThhMTZiN2FiMmEuLmI2ZDc2NDUzNjBlZmMyNThmNmEw
NDE1ZjkzZjUzOGI5NTBjYmM1ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCB2b2lkIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjpyZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0CiAjaWYgUExBVEZPUk0oQ09DT0EpCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhKQogewotICAgIG1fYWNjZXNzaWJpbGl0eVRva2VuID0gZGF0YS52ZWN0b3Io
KTsKKyAgICBtX2FjY2Vzc2liaWxpdHlUb2tlbiA9IFZlY3RvcihkYXRhKTsKIH0KICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggZWYzMjY3OGY4
OTVjYWM0ZWE3MjE0MDQ3ZDU5MTQxMDcxNWNiMmZkOS4uOTExNzNhNzc4Mzc3NDU0NjdiYmEyYTc4
YjVlNDY4YzVkMjIxNDE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmNwcApAQCAtMzQzLDEyICszNDMsMTIgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6ZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHIKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKCFoYW5kbGVyLT5jbGllbnQoKS5zdXBwb3J0c0FzeW5jUmVw
bHkoKSkgewotICAgICAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwg
V1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJlZmVyZW5jZS52ZWN0b3IoKSkpOworICAgICAg
ICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwgV1RGTW92ZShmcmFtZUlu
Zm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQoeyBkYXRhUmVmZXJlbmNlIH0pKTsKICAgICAgICAgcmVwbHkoeyB9LCB7IH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1l
c3NhZ2VXaXRoQXN5bmNSZXBseSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxl
ci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoZGF0YVJl
ZmVyZW5jZS52ZWN0b3IoKSksIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBtdXRhYmxl
IHsKKyAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZVdpdGhBc3luY1JlcGx5KCpw
YWdlLCBXVEZNb3ZlKGZyYW1lSW5mb0RhdGEpLCBoYW5kbGVyLT53b3JsZCgpLCAgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdCh7IGRhdGFSZWZlcmVuY2UgfSksIFtyZXBseSA9
IFdURk1vdmUocmVwbHkpXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2Fn
ZS5pc051bGwoKSkgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKICAgICAgICAgICAgIHJl
cGx5KHsgdmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRlcygpIH0sIHsg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA0ZTk2Yzk0
ZDZhNzdjNzZmMDI4NWFiMDE2YTM2YmYwZTFhNjRkYWE5Li41OGRmNTFhZjEyNjU1ZTk0MDgxMWZm
MWYzNWM5MDRhNTE2OWQ4NzBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTE1MjAsNyArMTUyMCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKHsgfSwgUHJv
Y2Vzc0xhdW5jaFJlYXNvbjo6SW5pdGlhbFByb2Nlc3MpOwogCi0gICAgYXV0byBuYXZpZ2F0aW9u
ID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUxvYWREYXRhTmF2aWdhdGlvbihtYWtlVW5pcXVl
PEFQSTo6U3Vic3RpdHV0ZURhdGE+KGRhdGEudmVjdG9yKCksIE1JTUVUeXBlLCBlbmNvZGluZywg
YmFzZVVSTCwgdXNlckRhdGEpKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25T
dGF0ZS0+Y3JlYXRlTG9hZERhdGFOYXZpZ2F0aW9uKG1ha2VVbmlxdWU8QVBJOjpTdWJzdGl0dXRl
RGF0YT4oVmVjdG9yKGRhdGEpLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRh
KSk7CiAKICAgICBpZiAoc2hvdWxkRm9yY2VGb3JlZ3JvdW5kUHJpb3JpdHlGb3JDbGllbnROYXZp
Z2F0aW9uKCkpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldENsaWVudE5hdmlnYXRpb25BY3Rpdml0
eShwcm9jZXNzKCkudGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5KCJDbGllbnQgbmF2aWdh
dGlvbiJfcykpOwpAQCAtMTU4MSw3ICsxNTgxLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkU2ltdWxhdGVkUmVxdWVzdChXZWJDb3JlOjpSZXNvdXJjZVJlcXUK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVn
aXN0cmFibGVEb21haW4geyBzaW11bGF0ZWRSZXF1ZXN0LnVybCgpIH0sIFByb2Nlc3NMYXVuY2hS
ZWFzb246OkluaXRpYWxQcm9jZXNzKTsKIAotICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdh
dGlvblN0YXRlLT5jcmVhdGVTaW11bGF0ZWRMb2FkV2l0aERhdGFOYXZpZ2F0aW9uKFJlc291cmNl
UmVxdWVzdChzaW11bGF0ZWRSZXF1ZXN0KSwgbWFrZVVuaXF1ZTxBUEk6OlN1YnN0aXR1dGVEYXRh
PihkYXRhLnZlY3RvcigpLCBSZXNvdXJjZVJlc3BvbnNlKHNpbXVsYXRlZFJlc3BvbnNlKSwgV2Vi
Q29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6VmlzaWJsZSks
IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKKyAgICBhdXRvIG5hdmlnYXRpb24g
PSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlU2ltdWxhdGVkTG9hZFdpdGhEYXRhTmF2aWdhdGlv
bihSZXNvdXJjZVJlcXVlc3Qoc2ltdWxhdGVkUmVxdWVzdCksIG1ha2VVbmlxdWU8QVBJOjpTdWJz
dGl0dXRlRGF0YT4oVmVjdG9yKGRhdGEpLCBSZXNvdXJjZVJlc3BvbnNlKHNpbXVsYXRlZFJlc3Bv
bnNlKSwgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGE6OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6
VmlzaWJsZSksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKTsKIAogICAgIGlmIChz
aG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSkKICAgICAg
ICAgbmF2aWdhdGlvbi0+c2V0Q2xpZW50TmF2aWdhdGlvbkFjdGl2aXR5KHByb2Nlc3MoKS50aHJv
dHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHkoIkNsaWVudCBuYXZpZ2F0aW9uIl9zKSk7CkBAIC00
MzE2LDcgKzQzMTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJ
blNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcAogICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdv
cmxkKHBhcmFtZXRlcnMsIGZyYW1lSUQsIHdvcmxkLndvcmxkRGF0YSgpKSwgW2FjdGl2aXR5ID0g
V1RGTW92ZShhY3Rpdml0eSksIGNhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pXSAoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlLCBzdGQ6Om9w
dGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+JiYgZGV0YWlscykgbXV0YWJsZSB7CiAgICAgICAgIGlm
IChkZXRhaWxzKQogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhw
ZWN0ZWQoV1RGTW92ZSgqZGV0YWlscykpKTsKLSAgICAgICAgaWYgKGRhdGFSZWZlcmVuY2UuaXNF
bXB0eSgpKQorICAgICAgICBpZiAoZGF0YVJlZmVyZW5jZS5lbXB0eSgpKQogICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24oeyBudWxscHRyIH0pOwogICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gZGF0YTsKICAgICAgICAgZGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRhdGFSZWZl
cmVuY2Uuc2l6ZSgpKTsKQEAgLTkyMjIsNyArOTIyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3
cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBDb21wbGV0aW9uSGFuZGxl
cjx2CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1hc3RlcktleTsKIAogICAgIGlmIChhdXRvIGtleURh
dGEgPSBtX25hdmlnYXRpb25DbGllbnQtPndlYkNyeXB0b01hc3RlcktleSgqdGhpcykpCi0gICAg
ICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKKyAgICAg
ICAgbWFzdGVyS2V5ID0gVmVjdG9yKGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKSk7CiAKICAgICBW
ZWN0b3I8dWludDhfdD4gd3JhcHBlZEtleTsKICAgICBib29sIHN1Y2NlZWRlZCA9IHdyYXBTZXJp
YWxpemVkQ3J5cHRvS2V5KG1hc3RlcktleSwga2V5LCB3cmFwcGVkS2V5KTsKQEAgLTkyMzYsNyAr
OTIzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBDb21wbGV0aW9uCiAgICAgVmVjdG9yPHVpbnQ4X3Q+IG1h
c3RlcktleTsKIAogICAgIGlmIChhdXRvIGtleURhdGEgPSBtX25hdmlnYXRpb25DbGllbnQtPndl
YkNyeXB0b01hc3RlcktleSgqdGhpcykpCi0gICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRh
dGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKKyAgICAgICAgbWFzdGVyS2V5ID0gVmVjdG9yKGtleURh
dGEtPmRhdGFSZWZlcmVuY2UoKSk7CiAKICAgICBWZWN0b3I8dWludDhfdD4ga2V5OwogICAgIGJv
b2wgc3VjY2VlZGVkID0gdW53cmFwU2VyaWFsaXplZENyeXB0b0tleShtYXN0ZXJLZXksIHdyYXBw
ZWRLZXksIGtleSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3
Lm1tCmluZGV4IGEyYzg1OWNjMjg2Yjg5MWJhNGY5NjgwMjE5ZmVkZjZkZDUzNTNjYmYuLmM2OTll
MzY2ODU0YjMxMWVlODJmYTVlZGIxNjYyY2E1YTRiYzRjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC05MDAsNyArOTAwLDcgQEAgc3RhdGlj
IHZvaWQgc3RvcmVBY2Nlc3NpYmlsaXR5UmVtb3RlQ29ubmVjdGlvbkluZm9ybWF0aW9uKGlkIGVs
ZW1lbnQsIHBpZF90IHBpZCwKICAgICBhdXRvIHJldGFpbmVkU2VsZiA9IHJldGFpblB0cihzZWxm
KTsKICAgICBhdXRvIHBhaXIgPSBfcGFnZS0+Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmREcmF3
VG9QREYoZnJhbWVJRCwgcHJpbnRJbmZvLCBbcmV0YWluZWRTZWxmXShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIHBkZkRhdGEpIHsKICAgICAgICAgcmV0YWluZWRTZWxmLT5fcGRmUHJpbnRDYWxs
YmFja0lEID0gMDsKLSAgICAgICAgaWYgKHBkZkRhdGEuaXNFbXB0eSgpKQorICAgICAgICBpZiAo
cGRmRGF0YS5lbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8gZGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBkZkRhdGEuZGF0
YSgpLCBwZGZEYXRhLnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KaW5kZXggZTAzZTA4MGFlZTA4MzgwYjQ2ZmZlODlkZDhlNjFiNjZi
NTk4ZGI0Ni4uOWFmN2QyYTFkYmJiY2QyYWIxY2VkMDkzNWNlZWNkOTZjODI1Mjk3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC00NjAs
NyArNDYwLDcgQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoVG9QREZPbkRpc2soY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVQREZUb1RlbXBv
cmFyeUZvbGRlckFuZE9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mbywgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIHBkZlVVSUQpCiB7Ci0gICAgaWYgKGRhdGEu
aXNFbXB0eSgpKSB7CisgICAgaWYgKGRhdGEuZW1wdHkoKSkgewogICAgICAgICBXVEZMb2dBbHdh
eXMoIkNhbm5vdCBzYXZlIGVtcHR5IFBERiBmaWxlIHRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5
LiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rp
b25zR2VuZXJhdGVkLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
UmVtb3RlR3JhcGhpY3NDb250ZXh0R0xQcm94eUZ1bmN0aW9uc0dlbmVyYXRlZC5jcHAKaW5kZXgg
NzgxZGYxODg4MjlkNGIzYjM5NTcyYWY2MDA3ZjE1YzFlZjQyODA2MS4uZWNhOWY5MzM3NmM0MGM1
N2M3NGRiZmIxMGUyODJjNjAwNGJiOWExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVHcmFwaGljc0NvbnRleHRHTFByb3h5RnVuY3Rpb25z
R2VuZXJhdGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L1JlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHlGdW5jdGlvbnNHZW5lcmF0ZWQuY3BwCkBAIC02
ODYsNyArNjg2LDcgQEAgU3RyaW5nIFJlbW90ZUdyYXBoaWNzQ29udGV4dEdMUHJveHk6OmdldFNo
YWRlckluZm9Mb2coUGxhdGZvcm1HTE9iamVjdCBhcmcwKQogCiB2b2lkIFJlbW90ZUdyYXBoaWNz
Q29udGV4dEdMUHJveHk6OmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChHQ0dMZW51bSBzaGFkZXJU
eXBlLCBHQ0dMZW51bSBwcmVjaXNpb25UeXBlLCBHQ0dMU3BhbjxHQ0dMaW50LCAyPiByYW5nZSwg
R0NHTGludCogcHJlY2lzaW9uKQogewotICAgIElQQzo6QXJyYXlSZWZlcmVuY2U8aW50MzJfdCwg
Mj4gcmFuZ2VSZXBseTsKKyAgICBJUEM6OkFycmF5UmVmZXJlbmNlPGludDMyX3QsIDI+IHJhbmdl
UmVwbHkgeyB7IH0gfTsKICAgICBpbnQzMl90IHByZWNpc2lvblJlcGx5ID0geyB9OwogICAgIGlm
ICghaXNDb250ZXh0TG9zdCgpKSB7CiAgICAgICAgIGF1dG8gc2VuZFJlc3VsdCA9IHNlbmRTeW5j
KE1lc3NhZ2VzOjpSZW1vdGVHcmFwaGljc0NvbnRleHRHTDo6R2V0U2hhZGVyUHJlY2lzaW9uRm9y
bWF0KHNoYWRlclR5cGUsIHByZWNpc2lvblR5cGUpLCBNZXNzYWdlczo6UmVtb3RlR3JhcGhpY3ND
b250ZXh0R0w6OkdldFNoYWRlclByZWNpc2lvbkZvcm1hdDo6UmVwbHkocmFuZ2VSZXBseSwgcHJl
Y2lzaW9uUmVwbHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggMzE0MmQ3NzhjMjc0MGY3ZDI2MmFlZjIxNTI4
ODA5NzgzOTE4NGNhMC4uOTEwYjJjY2Q4NDFiYTEzMDE5NGIxZjRiMjYxMmRiOTM2YjNlNjQwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hh
bm5lbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRp
ZFJlY2VpdmVCaW5hcnlEYXRhKElQQzo6RGF0YVJlZmVyZW5jZSYmIGRhdGEpCiAKICAgICBtX2lu
c3BlY3Rvci5kaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgY3JlYXRl
V2ViU29ja2V0RnJhbWVGb3JXZWJJbnNwZWN0b3IoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpLCBX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlOjpPcENvZGVCaW5hcnkpKTsKIAotICAgIG1fY2xpZW50LT5k
aWRSZWNlaXZlQmluYXJ5RGF0YShkYXRhLnZlY3RvcigpKTsKKyAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZUJpbmFyeURhdGEoeyBkYXRhIH0pOwogfQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRp
ZENsb3NlKHVuc2lnbmVkIHNob3J0IGNvZGUsIFN0cmluZyYmIHJlYXNvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9SVENEYXRhQ2hhbm5lbFJl
bW90ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAKaW5kZXggNmQxMTllNjg4MDQyZGI2Yjgw
ZjA2NDdjYzEyZGQyMzEyNmVmMjk3Ny4uNTMzOGFjYjQyYmZjODM4ODc4OGE3MDNlOWU3ZWMzN2Zj
ZDU0NTE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2Vi
cnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL1JUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlci5jcHAK
QEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFJUQ0RhdGFDaGFubmVsUmVtb3RlTWFuYWdlcjo6cmVj
ZWl2ZURhdGEoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWxJZGVudGlmaWVyCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IGJ1ZmZlcjsKICAgICBTdHJpbmcgdGV4dDsKICAgICBpZiAoaXNSYXcpCi0gICAgICAg
IGJ1ZmZlciA9IGRhdGEudmVjdG9yKCk7CisgICAgICAgIGJ1ZmZlciA9IFZlY3RvcihkYXRhKTsK
ICAgICBlbHNlCiAgICAgICAgIHRleHQgPSBTdHJpbmc6OmZyb21VVEY4KGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggNWMw
YTFmYTM1MjdiZmMwZWMyNmY0NWJkZDQ5ZDkwZGQwMjdlNDQ5ZC4uNjM4YmQ4NDI2ZDg1YmMzMDk5
YjUwOTkyOTNlNDE3ZDZkM2Q3MjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKQEAgLTI3NCw3ICsyNzQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXV0byB2YWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhyZXN1bHRWYWx1ZS52ZWN0b3IoKSk7CisgICAg
ICAgICAgICBhdXRvIHZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2ly
ZUJ5dGVzKHsgcmVzdWx0VmFsdWUgfSk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih2
YWx1ZS5wdHIoKSwgeyB9KTsKICAgICAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiM2IwZmJjYzc2ZTYwZjY3OGJmMWM2ZGU1MjEz
MDU5OGNiMmQwMDg4Li42NGJhZWE3YjIyOWRhYWNmMTVlMzdkYzY2OGI0NWE1YjAzY2I1MGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDc4
NCw3ICs0Nzg0LDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdp
dGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0b3I8U3QKICAgICBSRUxFQVNFX0FTU0VS
VCghc2FuZGJveF9jaGVjayhnZXRwaWQoKSwgIm1hY2gtbG9va3VwIiwgc3RhdGljX2Nhc3Q8ZW51
bSBzYW5kYm94X2ZpbHRlcl90eXBlPihTQU5EQk9YX0ZJTFRFUl9HTE9CQUxfTkFNRSB8IFNBTkRC
T1hfQ0hFQ0tfTk9fUkVQT1JUKSwgImNvbS5hcHBsZS5pY29uc2VydmljZXMiKSk7CiAKICAgICBS
ZWZQdHI8SWNvbj4gaWNvbjsKLSAgICBpZiAoIWljb25EYXRhLmlzRW1wdHkoKSkgeworICAgIGlm
ICghaWNvbkRhdGEuZW1wdHkoKSkgewogICAgICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBkYXRh
UmVmID0gYWRvcHRDRihDRkRhdGFDcmVhdGUobnVsbHB0ciwgaWNvbkRhdGEuZGF0YSgpLCBpY29u
RGF0YS5zaXplKCkpKTsKICAgICAgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVmPiBpbWFn
ZVByb3ZpZGVyUmVmID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhDRkRhdGEoZGF0
YVJlZi5nZXQoKSkpOwogICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gaW1hZ2VSZWYgPSBh
ZG9wdENGKENHSW1hZ2VDcmVhdGVXaXRoSlBFR0RhdGFQcm92aWRlcihpbWFnZVByb3ZpZGVyUmVm
LmdldCgpLCBudWxscHRyLCB0cnVlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IGQ0MTI4MmZjNWRjNjNjMzE3ZTU0YjgyNjBjNTdlMzQ0Y2EzNmUzMDkuLjhiYWU5OTAyYWQ4
YzMzZTg2MmUyZDcwOGVhMjcyYzEzZjRiNDdjZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC01MDksNyArNTA5LDcgQEAg
c3RhdGljIFN0cmluZyYgcmVwbGFjZVNlbGVjdGlvblBhc3RlYm9hcmROYW1lKCkKIHZvaWQgV2Vi
UGFnZTo6cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKIHsKICAgICBmb3Ig
KGF1dG8mIHR5cGUgOiB0eXBlcykKLSAgICAgICAgV2ViUGFzdGVib2FyZE92ZXJyaWRlczo6c2hh
cmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmFkZE92ZXJyaWRlKHJlcGxhY2VTZWxlY3Rpb25QYXN0
ZWJvYXJkTmFtZSgpLCB0eXBlLCBkYXRhLnZlY3RvcigpKTsKKyAgICAgICAgV2ViUGFzdGVib2Fy
ZE92ZXJyaWRlczo6c2hhcmVkUGFzdGVib2FyZE92ZXJyaWRlcygpLmFkZE92ZXJyaWRlKHJlcGxh
Y2VTZWxlY3Rpb25QYXN0ZWJvYXJkTmFtZSgpLCB0eXBlLCB7IGRhdGEgfSk7CiAKICAgICByZWFk
U2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocmVwbGFjZVNlbGVjdGlvblBhc3RlYm9hcmROYW1lKCks
IFtdKGJvb2wpIHsgfSk7CiAK
</data>
<flag name="review"
          id="471525"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
    <flag name="commit-queue"
          id="471854"
          type_id="3"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>