<?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>180149</bug_id>
          
          <creation_ts>2017-11-29 10:28:18 -0800</creation_ts>
          <short_desc>ensure*Connection() methods on WebProcess should return a reference</short_desc>
          <delta_ts>2017-12-02 12:40:46 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1375891</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-29 10:28:18 -0800</bug_when>
    <thetext>ensure*Connection() methods on WebProcess should return a reference instead of not returning anything. We can then get rid of the non-ensure variants (which called ensure internally).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375892</commentid>
    <comment_count>1</comment_count>
      <attachid>327869</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-29 10:30:54 -0800</bug_when>
    <thetext>Created attachment 327869
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375935</commentid>
    <comment_count>2</comment_count>
      <attachid>327869</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-29 11:40:16 -0800</bug_when>
    <thetext>Comment on attachment 327869
Patch

Clearing flags on attachment: 327869

Committed r225282: &lt;https://trac.webkit.org/changeset/225282&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375936</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-29 11:40:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375939</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-29 11:41:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/35753405&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1377352</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-12-02 12:40:46 -0800</bug_when>
    <thetext>I don’t think these functions need ensure in their names. Just makes the function names longer. It’s not like callers care about whether the things are created lazily or not.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327869</attachid>
            <date>2017-11-29 10:30:54 -0800</date>
            <delta_ts>2017-11-29 11:40:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180149-20171129103053.patch</filename>
            <type>text/plain</type>
            <size>44388</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGE3MGU4MTRlMzI3M2FlNjgy
NzkxODgyNjk0YTA4ODQzNzNhZDkzMmIuLjE1OTIwNDg2Y2M2ZjE2YjAyOWZiMzBkZGM4MTI3NWZk
ZDVhZjM5NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTctMTEtMjkgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBlbnN1cmUqQ29ubmVjdGlvbigpIG1l
dGhvZHMgb24gV2ViUHJvY2VzcyBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODAxNDkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBlbnN1cmUqQ29ubmVjdGlvbigp
IG1ldGhvZHMgb24gV2ViUHJvY2VzcyBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlIGluc3RlYWQg
b2Ygbm90IHJldHVybmluZworICAgICAgICBhbnl0aGluZy4gQWxzbyBnZXQgcmlkIG9mIHRoZSBu
b24tZW5zdXJlIHZhcmlhbnRzIHdoaWNoIGNhbGxlZCAiZW5zdXJlIiBpbnRlcm5hbGx5IGFuZCBh
cmUKKyAgICAgICAgbm8gbG9uZ2VyIG5lZWRlZC4KKworICAgICAgICAqIFNoYXJlZC9tYWMvQ29v
a2llU3RvcmFnZVNoaW0ubW06CisgICAgICAgIChXZWJLaXQ6OndlYktpdENvb2tpZVN0b3JhZ2VD
b3B5UmVxdWVzdEhlYWRlckZpZWxkc0ZvclVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9DYWNo
ZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbjo6Y29ubmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9E
YXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24pOgorICAgICAgICAoV2ViS2l0OjpwcmVyZWdpc3RlclNhbmRib3hFeHRlbnNpb25zSWZOZWNl
c3NhcnkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZVByb3ZpZGVyOjppZGJDb25uZWN0
aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0ZpbGVBUEkvQmxv
YlJlZ2lzdHJ5UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6
cmVnaXN0ZXJGaWxlQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5
OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6
cmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQpOgorICAgICAgICAoV2ViS2l0OjpC
bG9iUmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpC
bG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UpOgorICAgICAgICAoV2Vi
S2l0OjpCbG9iUmVnaXN0cnlQcm94eTo6YmxvYlNpemUpOgorICAgICAgICAoV2ViS2l0OjpCbG9i
UmVnaXN0cnlQcm94eTo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZp
bGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnJlbW92
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpzZXREZWZlcnNMb2FkaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5n
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8p
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c3RvcmVEZXJpdmVkRGF0YVRv
Q2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2V0Q2FwdHVyZUV4
dHJhTmV0d29ya0xvYWRNZXRyaWNzRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VM
b2FkZXI6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU29ja2V0U3Ry
ZWFtOjpXZWJTb2NrZXRTdHJlYW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRTdHJlYW06
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
d2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6c2VuZE9uTWFp
blRocmVhZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJSVENT
b2NrZXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5kT25NYWluVGhyZWFkKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZhY3RvcnkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVTZXJ2ZXJUY3BT
b2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVhdGVV
ZHBTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0b3J5OjpDcmVh
dGVDbGllbnRUY3BTb2NrZXQpOgorICAgICAgICAoV2ViS2l0OjpMaWJXZWJSVENTb2NrZXRGYWN0
b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpzZW5kT25N
YWluVGhyZWFkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VydmljZVdvcmtlclByb3ZpZGVy
OjpzZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRsZUZldGNoKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3
Q29va2llcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRl
Q29va2llKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZW5zdXJlV2ViVG9TdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwcmVmZXRjaEROUyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTctMTEtMjkgIE1pY2hh
ZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjIxODA2NCk6IFtHVEtdIEJyb2tlIGVudGVyaW5nIGZ1bGxzY3JlZW4gbW9kZSBpbiBkZWJ1
ZyBidWlsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db29raWVTdG9y
YWdlU2hpbS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db29raWVTdG9yYWdlU2hpbS5t
bQppbmRleCBkNzZlM2UxNTM3N2ZjMmNlMThlZDMzZGU4MmM3N2Q5NjRiZDRiYTMwLi4wZjI2NTVi
YzYyMDRhNjJmNzAwZGQ2ZjAyMDVlMDMwZmRmZWZhNjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvQ29va2llU3RvcmFnZVNoaW0ubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL0Nvb2tpZVN0b3JhZ2VTaGltLm1tCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBD
RkRpY3Rpb25hcnlSZWYgd2ViS2l0Q29va2llU3RvcmFnZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRz
Rm9yVVJMKENGSFRUUENvCiAgICAgU3RyaW5nIGNvb2tpZXM7CiAgICAgYm9vbCBzZWN1cmVDb29r
aWVzQWNjZXNzZWQgPSBmYWxzZTsKICAgICBVUkwgZmlyc3RQYXJ0eUZvckNvb2tpZXNVUkw7Ci0g
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCksIGZpcnN0UGFydHlGb3JDb29raWVzVVJMLCBpblJlcXVlc3RVUkwsIGluY2x1ZGVT
ZWN1cmVDb29raWVzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29va2llcywgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpLCBmaXJzdFBhcnR5Rm9yQ29v
a2llc1VSTCwgaW5SZXF1ZXN0VVJMLCBpbmNsdWRlU2VjdXJlQ29va2llcyksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWU6OlJlcGx5KGNvb2tpZXMsIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCksIDApKQogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIGlmIChjb29raWVzLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0NhY2hlL1dlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb24u
Y3BwCmluZGV4IDQ0NTUxMDc5ZmI3ZjEwMDU5MjI4NzMwZjA1Mjg2YzFkNzI0MjU1YjQuLmYzMTg4
ZmRjNjc1NjY5M2ZkMTU4ZWJjNzZkYmI3YzRiZGYyYzQ0NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9DYWNoZS9XZWJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQ2FjaGUvV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlv
bi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgV2ViQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbjo6fldlYkNh
Y2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogCiBJUEM6OkNvbm5lY3Rpb24mIFdlYkNhY2hlU3RvcmFn
ZUNvbm5lY3Rpb246OmNvbm5lY3Rpb24oKQogewotICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpOwogfQogCiB2b2lkIFdlYkNhY2hlU3RvcmFnZUNvbm5lY3Rpb246OmRvT3Blbih1
aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgY2FjaGVOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Rh
dGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvSW5kZXhlZERCL1dlYklEQkNvbm5lY3Rpb25Ub1Nl
cnZlci5jcHAKaW5kZXggYTM3MzY1NDNiNGE2MjZlMmE1YmUzZjkzODY1YzhlMGM4YzkyZDQ3My4u
M2IwODlkM2U5ODk1NmI4NWE5ZjE3ODYyNWU1ZWQ4N2YyMjMwNjc4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL0lu
ZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6fldlYklEQkNvbm5lY3Rpb25Ub1NlcnZlcigpCiAKIElQ
Qzo6Q29ubmVjdGlvbiogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpCiB7Ci0gICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0
b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCk7CisgICAgcmV0dXJuICZXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKTsKIH0KIAogSURCQ2xpZW50OjpJREJDb25uZWN0aW9uVG9TZXJ2ZXImIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlcjo6Y29yZUNvbm5lY3Rpb25Ub1NlcnZlcigpCkBAIC0yOTcs
NyArMjk3LDcgQEAgc3RhdGljIHZvaWQgcHJlcmVnaXN0ZXJTYW5kYm94RXh0ZW5zaW9uc0lmTmVj
ZXNzYXJ5KGNvbnN0IFdlYklEQlJlc3VsdCYgcmVzdWx0KQogI2VuZGlmCiAKICAgICBpZiAoIWZp
bGVQYXRocy5pc0VtcHR5KCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdv
cmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpQcmVyZWdpc3RlclNhbmRib3hFeHRlbnNpb25zRm9yT3B0aW9uYWxs
eUZpbGVCYWNrZWRCbG9iKGZpbGVQYXRocywgcmVzdWx0LmhhbmRsZXMoKSksIDApOworICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlByZXJlZ2lzdGVyU2FuZGJveEV4dGVuc2lvbnNGb3JPcHRpb25hbGx5RmlsZUJhY2tlZEJs
b2IoZmlsZVBhdGhzLCByZXN1bHQuaGFuZGxlcygpKSwgMCk7CiB9CiAKIHZvaWQgV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3QgV2ViSURCUmVzdWx0JiByZXN1bHQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFi
YXNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0RhdGFiYXNlcy9XZWJE
YXRhYmFzZVByb3ZpZGVyLmNwcAppbmRleCBjNmIxMGIxNWY0ZTU0YjM2ZGExYTVlYjVhYjlkMDBm
OTdmYzM3NTY4Li41N2M1YmM2MmNkMWEzNzg1NzY1NGYzMDZiZjNmMzMzYjc4ZmU4MjRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRGF0YWJhc2VzL1dlYkRhdGFiYXNlUHJv
dmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9EYXRhYmFzZXMvV2ViRGF0
YWJhc2VQcm92aWRlci5jcHAKQEAgLTc5LDggKzc5LDcgQEAgV2ViQ29yZTo6SURCQ2xpZW50OjpJ
REJDb25uZWN0aW9uVG9TZXJ2ZXImIFdlYkRhdGFiYXNlUHJvdmlkZXI6OmlkYkNvbm5lY3Rpb25U
b1MKICAgICAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPmNvbm5lY3Rpb25Ub1Nl
cnZlcigpOwogICAgIH0KIAotICAgIEFTU0VSVChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJU
b1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpKTsKLSAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKS0+aWRiQ29ubmVjdGlvblRv
U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLmNvcmVDb25uZWN0aW9uVG9TZXJ2ZXIoKTsKKyAg
ICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlV2ViVG9TdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5pZGJDb25uZWN0aW9uVG9TZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCku
Y29yZUNvbm5lY3Rpb25Ub1NlcnZlcigpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAppbmRleCBh
ZGY4NTIyNmE3NWQzMmZiNDhlMDk3ZWYxODViNTRiZDI3ZTVjMjBhLi5lYmU1MzBlNGIzMTAwMGJm
NmIwYjFmMjAxZjYyY2VhNDlkZDNhMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvRmlsZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCkBAIC00NCw0NiArNDQsNDYg
QEAgdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBXZWJD
b3JlOjpVUkwmIHVybCwgUmVmPEJsb2JEYXQKICAgICBpZiAoIWZpbGUtPnBhdGgoKS5pc0VtcHR5
KCkpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlLT5wYXRoKCks
IFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJlYWRPbmx5LCBleHRlbnNpb25IYW5kbGUpOwogCi0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVy
RmlsZUJsb2JVUkwodXJsLCBmaWxlLT5wYXRoKCksIGV4dGVuc2lvbkhhbmRsZSwgY29udGVudFR5
cGUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBmaWxlLT5wYXRoKCksIGV4
dGVuc2lvbkhhbmRsZSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlQ
cm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8QmxvYlBhcnQ+JiYg
YmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBi
bG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JVUkwodXJsLCBi
bG9iUGFydHMsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKIHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCiB7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVy
QmxvYlVSTEZyb21VUkwodXJsLCBzcmNVUkwpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTEZy
b21VUkwodXJsLCBzcmNVUkwpLCAwKTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVn
aXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVS
TCYgc3JjVVJMLCBSZWZQdHI8V2ViQ29yZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlPiYmIGZpbGUs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgQVNTRVJUKGZpbGUpOwotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZWdpc3RlckJsb2JV
UkxPcHRpb25hbGx5RmlsZUJhY2tlZCh1cmwsIHNyY1VSTCwgZmlsZS0+cGF0aCgpLCBjb250ZW50
VHlwZSksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMT3B0aW9uYWxseUZpbGVCYWNrZWQodXJs
LCBzcmNVUkwsIGZpbGUtPnBhdGgoKSwgY29udGVudFR5cGUpLCAwKTsKIH0KIAogdm9pZCBCbG9i
UmVnaXN0cnlQcm94eTo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlVucmVnaXN0ZXJC
bG9iVVJMKHVybCksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkwodXJsKSwgMCk7CiB9CiAK
IHZvaWQgQmxvYlJlZ2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5k
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpLCAwKTsK
IH0KIAogdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5OjpibG9iU2l6ZShjb25z
dCBVUkwmIHVybCkKIHsKICAgICB1aW50NjRfdCByZXN1bHRTaXplOwotICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZSh1cmwp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplOjpSZXBs
eShyZXN1bHRTaXplKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZSh1cmwpLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplOjpSZXBseShyZXN1bHRT
aXplKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiByZXN1bHRTaXplOwogfQog
CiB2b2lkIEJsb2JSZWdpc3RyeVByb3h5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBmaWxlUGF0aHMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5
RmlsZXMoYmxvYlVSTHMsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS53cml0ZUJs
b2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4YzYxNWYwOWVmZmU4ZTJi
Nzg2MmIzODA0ZWJiMmRhOTk4YmNiNGIwLi5jMDUxNzY5ZjRhOGZlZDMwMjVkYTcxNjYxMzMxMTMy
YTg3ZGI1Y2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTEyNiw3ICsxMjYsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAKICAgICBtX3dyaXRlQmxvYlRvRmlsZUNvbXBsZXRp
b25IYW5kbGVycy5zZXQocmVxdWVzdElkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpXcml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhibG9iVVJMcywgcmVxdWVzdElkZW50aWZpZXIp
LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OldyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGJsb2JVUkxzLCByZXF1ZXN0
SWRlbnRpZmllciksIDApOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlk
V3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXModWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxlbmFtZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMWRmM2ZjOTFk
NTFiMTA4ZDY5YzRhNWY3NzcwY2VhNWIzYTM2MDFkYy4uMTQyMzc1NmQwOGFjZmU5NTdjODIyNjYz
ODNhZDBkYmE1ZWQzZTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMCiAgICAgQVNTRVJUKChsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQg
JiYgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCkgfHwgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3Jl
ZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRG
b3JDcmVkZW50aWFscyk7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUg
TmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVy
LnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2FkUGFy
YW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKLSAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJl
c291cmNlTG9hZChsb2FkUGFyYW1ldGVycyksIDApKSB7CisgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVz
b3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNj
aGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlv
cml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGlj
X2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRl
cnMuaWRlbnRpZmllcik7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0byBzY2hlZHVs
ZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBoYWQgY3Jhc2hl
ZC4KICAgICAgICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3VjY2VlZCBzbyB3ZSB3aWxsIHNj
aGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6cmVtb3ZlKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRl
cikKICAgICBpZiAoIWxvYWRlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW92ZUxvYWRJZGVudGlmaWVyKGlk
ZW50aWZpZXIpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlbW92ZUxvYWRJZGVudGlmaWVyKGlkZW50aWZpZXIpLCAw
KTsKIAogICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCB0aGlzIFdlYlJlc291cmNlTG9hZGVyIG1p
Z2h0IGJlIGp1c3QgYWJvdXQgdG8gbWVzc2FnZSBiYWNrIHRvIHRoZSBOZXR3b3JrUHJvY2VzcyAo
ZS5nLiBDb250aW51ZVdpbGxTZW5kUmVxdWVzdCkKICAgICAvLyBidXQgdGhlcmUncyBubyBwb2lu
dCBpbiBkb2luZyBzbyBhbnltb3JlLgpAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCiB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzZXREZWZlcnNMb2FkaW5nKFJlc291cmNlTG9hZGVyKiByZXNvdXJj
ZUxvYWRlciwgYm9vbCBkZWZlcnMpCiB7CiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVu
dGlmaWVyID0gcmVzb3VyY2VMb2FkZXItPmlkZW50aWZpZXIoKTsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0RGVmZXJzTG9hZGluZyhpZGVudGlm
aWVyLCBkZWZlcnMpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldERlZmVyc0xvYWRpbmcoaWRlbnRpZmllciwgZGVm
ZXJzKSwgMCk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmNyb3NzT3JpZ2luUmVkaXJl
Y3RSZWNlaXZlZChSZXNvdXJjZUxvYWRlciosIGNvbnN0IFVSTCYpCkBAIC00MjIsNyArNDIyLDcg
QEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgdW4KIAogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBo
YW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
Lm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFy
YW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKKyAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBhcmFtZXRlcnMpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xv
YWQ6OlJlcGx5KGVycm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQobG9hZFBhcmFtZXRlcnMuc2Vzc2lvbklELCAibG9hZFJlc291
cmNlU3luY2hyb25vdXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9j
ZXNzIG1lc3NhZ2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxv
YWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAg
ICAgICBpZiAoYXV0byogcGFnZSA9IHdlYlBhZ2UtPmNvcmVQYWdlKCkpCiAgICAgICAgICAgICBw
YWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OnN5bmNocm9ub3VzTWVzc2FnZUZhaWxlZEtleSgpLCBXZWJD
b3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKEZyYW1lJiBmcmFtZSwgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjbwogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgbV9waW5nTG9h
ZENvbXBsZXRpb25IYW5kbGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkxvYWRQaW5nKFdURk1vdmUobG9hZFBhcmFtZXRlcnMpLCBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpMb2FkUGluZyhXVEZNb3ZlKGxvYWRQYXJh
bWV0ZXJzKSwgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycyksIDApOwogfQogCiB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpkaWRGaW5pc2hQaW5nTG9hZCh1aW50NjRfdCBwaW5nTG9hZElkZW50aWZpZXIs
IFJlc291cmNlRXJyb3ImJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlKQpAQCAt
NTI3LDcgKzUyNyw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhOZXR3
b3JraW5nQ29udGV4dCYgY29udGV4dCwgY29uc3QgV2ViQ29yZTo6CiAgICAgcGFyYW1ldGVycy5z
dG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVzOwogCi0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlByZWNvbm5l
Y3RUbyhwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0ZXJzKSksIDApOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UHJlY29ubmVjdFRvKHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpKSwgMCk7CiB9CiAKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmRpZEZpbmlzaFByZWNv
bm5lY3Rpb24odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFJlc291cmNlRXJyb3Im
JiBlcnJvcikKQEAgLTU0MCwxMiArNTQwLDEyIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0
b3JlRGVyaXZlZERhdGFUb0NhY2hlKGNvbnN0IFNIQTE6OkRpZ2VzdCYgYm9keUhhc2gsIGNvCiB7
CiAgICAgTmV0d29ya0NhY2hlOjpEYXRhS2V5IGtleSB7IHBhcnRpdGlvbiwgdHlwZSwgYm9keUhh
c2ggfTsKICAgICBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSB7
ICZkYXRhIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlN0b3JlRGVyaXZlZERhdGFUb0NhY2hlKGtleSwgZGF0YVJlZmVyZW5jZSksIDApOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6U3RvcmVEZXJpdmVkRGF0YVRvQ2FjaGUoa2V5LCBkYXRhUmVmZXJlbmNlKSwgMCk7CiB9CiAK
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5l
dHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NFbmFi
bGVkKGVuYWJsZWQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
c0VuYWJsZWQoZW5hYmxlZCksIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmNwcAppbmRleCBiYTA2ODRhOWU2ZTMzN2U5ZmYyMDJhNjcyYzk2ZDVjZjc3OGZiMmRhLi42OTkz
M2Q5NTc0OGZjNTk2NjM2ZDZlNTNkYmRmY2U4ODZjMGMxOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC02
OCw3ICs2OCw3IEBAIFdlYlJlc291cmNlTG9hZGVyOjp+V2ViUmVzb3VyY2VMb2FkZXIoKQogCiBJ
UEM6OkNvbm5lY3Rpb24qIFdlYlJlc291cmNlTG9hZGVyOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpCiB7Ci0gICAgcmV0dXJuICZXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKTsKKyAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKTsKIH0KIAogdWlu
dDY0X3QgV2ViUmVzb3VyY2VMb2FkZXI6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVh
bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRTdHJlYW0u
Y3BwCmluZGV4IGJkYzYyYWQwMDg0N2ZlOTQzNGQ2NzZlMjUxM2ZhMWJiNTA4OWY5NDIuLjQxM2Rm
ZmI2ZmNlN2YyMmZlNzEwNmRmYzQ5ZDQ3MmM3NjAyNjgyNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldFN0cmVhbS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0U3RyZWFtLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBXZWJTb2NrZXRTdHJlYW06OldlYlNvY2tldFN0cmVhbShjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCwgV2ViQ29yZTo6U29ja2V0U3RyZWFtSAogICAgIDogU29ja2V0U3RyZWFtSGFuZGxl
KHVybCwgY2xpZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50KQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDcmVhdGVTb2NrZXRTdHJlYW0odXJs
LCBzZXNzaW9uSUQsIGNhY2hlUGFydGl0aW9uLCBpZGVudGlmaWVyKCkpLCAwKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNy
ZWF0ZVNvY2tldFN0cmVhbSh1cmwsIHNlc3Npb25JRCwgY2FjaGVQYXJ0aXRpb24sIGlkZW50aWZp
ZXIoKSksIDApOwogCiAgICAgQVNTRVJUKCFnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5jb250
YWlucyhpZGVudGlmaWVyKCkpKTsKICAgICBnbG9iYWxXZWJTb2NrZXRTdHJlYW1NYXAoKS5zZXQo
aWRlbnRpZmllcigpLCB0aGlzKTsKQEAgLTg2LDcgKzg2LDcgQEAgV2ViU29ja2V0U3RyZWFtOjp+
V2ViU29ja2V0U3RyZWFtKCkKIAogSVBDOjpDb25uZWN0aW9uKiBXZWJTb2NrZXRTdHJlYW06Om1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkKIHsKLSAgICByZXR1cm4gJldlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpOworICAgIHJldHVybiAmV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpOwogfQogCiB1aW50NjRfdCBXZWJTb2NrZXRTdHJlYW06Om1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay93ZWJydGMvTGliV2ViUlRDUmVzb2x2ZXIuY3BwCmluZGV4IGM3NGUzMjNmZjY5
ZmE0NWNhMTdjYTYzZDhiY2IwNDRlNzA0ODc2MjguLmIwOTI1Mzg2MmYwNjQ2ODQ4YTZlOTIzYWRi
MDg5ZjRiNDZlMDNiODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL3dlYnJ0Yy9MaWJXZWJSVENSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1Jlc29sdmVyLmNwcApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZW5kT25NYWluVGhy
ZWFkKEZ1bmN0aW9uPHZvaWQoSVBDOjpDb25uZWN0aW9uJik+JiYgY2FsbGJhY2spCiB7CiAgICAg
Y2FsbE9uTWFpblRocmVhZChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpKTsKKyAgICAgICAgY2FsbGJhY2soV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKTsKICAgICB9KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRj
L0xpYldlYlJUQ1NvY2tldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDU29ja2V0LmNwcAppbmRleCAwOTYzOWU4ZTEwZjFmMmQyYzQzZmY4OWZm
MjFiNWM2M2NiYWNkMjlkLi5jMzAxNDUzNzA5M2M0NjQyMWZhNmVkODk5NzY4ZDBhMGEzNDJlMGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMvTGli
V2ViUlRDU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay93
ZWJydGMvTGliV2ViUlRDU29ja2V0LmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZW5kT25NYWluVGhyZWFkKEZ1bmN0aW9uPHZvaWQo
SVBDOjpDb25uZWN0aW9uJik+JiYgY2FsbGJhY2spCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSB7Ci0gICAgICAgIGNhbGxiYWNrKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKTsKKyAg
ICAgICAgY2FsbGJhY2soV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldlYlJUQ1NvY2tldEZh
Y3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjL0xpYldl
YlJUQ1NvY2tldEZhY3RvcnkuY3BwCmluZGV4IGEyMGFiOWRhZWE1ZGEzYzg5MDYwNTI1Y2Q3MDY2
NjYzNDVkYThkYWIuLmY0NGVmZGI2MjgzY2EwYjBhMDU1Yzg1YzEwZGRlNzMzODM0OTNiOTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0Yy9MaWJXZWJS
VENTb2NrZXRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvTGliV2ViUlRDU29ja2V0RmFjdG9yeS5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgcnRj
OjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlU2VydmVy
VGNwU29ja2V0KGNvbnN0IHJ0YzoKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmll
cigpLCBzb2NrZXQuZ2V0KCkpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9
IHNvY2tldC0+aWRlbnRpZmllcigpLCBhZGRyZXNzID0gUlRDTmV0d29yazo6aXNvbGF0ZWRDb3B5
KGFkZHJlc3MpLCBtaW5Qb3J0LCBtYXhQb3J0LCBvcHRpb25zXSgpIHsKLSAgICAgICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUlRDUHJvdmlkZXI6OkNyZWF0ZVNlcnZlclRDUFNvY2tldChp
ZGVudGlmaWVyLCBSVENOZXR3b3JrOjpTb2NrZXRBZGRyZXNzKGFkZHJlc3MpLCBtaW5Qb3J0LCBt
YXhQb3J0LCBvcHRpb25zKSwgMCkpIHsKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpDcmVhdGVTZXJ2ZXJUQ1BTb2NrZXQoaWRlbnRp
ZmllciwgUlRDTmV0d29yazo6U29ja2V0QWRkcmVzcyhhZGRyZXNzKSwgbWluUG9ydCwgbWF4UG9y
dCwgb3B0aW9ucyksIDApKSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2V0IGVycm9yIGJhY2sg
dG8gc29ja2V0CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTYyLDcgKzYyLDcg
QEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2ViUlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRl
VWRwU29ja2V0KGNvbnN0IHJ0Yzo6U29ja2UKICAgICBtX3NvY2tldHMuc2V0KHNvY2tldC0+aWRl
bnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCiAgICAgY2FsbE9uTWFpblRocmVhZChbaWRlbnRp
ZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigpLCBhZGRyZXNzID0gUlRDTmV0d29yazo6aXNvbGF0
ZWRDb3B5KGFkZHJlc3MpLCBtaW5Qb3J0LCBtYXhQb3J0XSgpIHsKLSAgICAgICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUlRDUHJvdmlkZXI6OkNyZWF0ZVVEUFNvY2tldChpZGVudGlmaWVy
LCBSVENOZXR3b3JrOjpTb2NrZXRBZGRyZXNzKGFkZHJlc3MpLCBtaW5Qb3J0LCBtYXhQb3J0KSwg
MCkpIHsKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1JU
Q1Byb3ZpZGVyOjpDcmVhdGVVRFBTb2NrZXQoaWRlbnRpZmllciwgUlRDTmV0d29yazo6U29ja2V0
QWRkcmVzcyhhZGRyZXNzKSwgbWluUG9ydCwgbWF4UG9ydCksIDApKSB7CiAgICAgICAgICAgICAv
LyBGSVhNRTogU2V0IGVycm9yIGJhY2sgdG8gc29ja2V0CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTc3LDcgKzc3LDcgQEAgcnRjOjpBc3luY1BhY2tldFNvY2tldCogTGliV2Vi
UlRDU29ja2V0RmFjdG9yeTo6Q3JlYXRlQ2xpZW50VGNwU29ja2V0KGNvbnN0IHJ0YzoKICAgICBt
X3NvY2tldHMuc2V0KHNvY2tldC0+aWRlbnRpZmllcigpLCBzb2NrZXQuZ2V0KCkpOwogCiAgICAg
Y2FsbE9uTWFpblRocmVhZChbaWRlbnRpZmllciA9IHNvY2tldC0+aWRlbnRpZmllcigpLCBsb2Nh
bEFkZHJlc3MgPSBSVENOZXR3b3JrOjppc29sYXRlZENvcHkobG9jYWxBZGRyZXNzKSwgcmVtb3Rl
QWRkcmVzcyA9IFJUQ05ldHdvcms6Omlzb2xhdGVkQ29weShyZW1vdGVBZGRyZXNzKSwgb3B0aW9u
c10oKSB7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpD
cmVhdGVDbGllbnRUQ1BTb2NrZXQoaWRlbnRpZmllciwgUlRDTmV0d29yazo6U29ja2V0QWRkcmVz
cyhsb2NhbEFkZHJlc3MpLCBSVENOZXR3b3JrOjpTb2NrZXRBZGRyZXNzKHJlbW90ZUFkZHJlc3Mp
LCBvcHRpb25zKSwgMCkpIHsKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpDcmVhdGVDbGllbnRUQ1BTb2NrZXQoaWRlbnRpZmllciwg
UlRDTmV0d29yazo6U29ja2V0QWRkcmVzcyhsb2NhbEFkZHJlc3MpLCBSVENOZXR3b3JrOjpTb2Nr
ZXRBZGRyZXNzKHJlbW90ZUFkZHJlc3MpLCBvcHRpb25zKSwgMCkpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBTZXQgZXJyb3IgYmFjayB0byBzb2NrZXQKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtOTMsNyArOTMsNyBAQCBydGM6OkFzeW5jUGFja2V0U29ja2V0KiBMaWJXZWJS
VENTb2NrZXRGYWN0b3J5OjpjcmVhdGVOZXdDb25uZWN0aW9uU29ja2V0KExpYldlYgogICAgIG1f
c29ja2V0cy5zZXQoc29ja2V0LT5pZGVudGlmaWVyKCksIHNvY2tldC5nZXQoKSk7CiAKICAgICBj
YWxsT25NYWluVGhyZWFkKFtpZGVudGlmaWVyID0gc29ja2V0LT5pZGVudGlmaWVyKCksIG5ld0Nv
bm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyXSgpIHsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5uZXR3b3JrQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUlRDUHJvdmlkZXI6OldyYXBOZXdUQ1BDb25uZWN0aW9uKGlkZW50aWZpZXIsIG5l
d0Nvbm5lY3Rpb25Tb2NrZXRJZGVudGlmaWVyKSwgMCkpIHsKKyAgICAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya1JUQ1Byb3ZpZGVyOjpXcmFwTmV3VENQQ29ubmVj
dGlvbihpZGVudGlmaWVyLCBuZXdDb25uZWN0aW9uU29ja2V0SWRlbnRpZmllciksIDApKSB7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogU2V0IGVycm9yIGJhY2sgdG8gc29ja2V0CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL3dlYnJ0Yy9XZWJSVENNb25pdG9yLmNwcAppbmRleCA5ZWFjNDk0YmIwOTVk
Y2FhZTMxYTE0Y2MxNGNlNzllNTY5ZWMwYjIyLi5jNTI3ZmU3NTk4NGEzZDFkNzc5ZDZmNGRhYzgy
NDY5OGVlYWFjOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMvV2ViUlRDTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvd2VicnRjL1dlYlJUQ01vbml0b3IuY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogc3RhdGljIGlubGluZSB2b2lkIHNlbmRPbk1haW5UaHJlYWQoRnVuY3Rp
b248dm9pZChJUEM6OkNvbm5lY3Rpb24mKT4mJiBjYWxsYmFjaykKIHsKICAgICBjYWxsT25NYWlu
VGhyZWFkKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXSgpIHsKLSAgICAgICAgY2FsbGJh
Y2soV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkpOworICAgICAgICBjYWxsYmFjayhXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkpOwogICAgIH0pOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlclByb3ZpZGVyLmNwcAppbmRleCA5OTk2N2Q3YjE4ZjkxMTdjZDU1MzJjODZlMGI2MzFm
NzI2ODFhM2EzLi5kZmEyNTJmMDdmYTM3ZWEwYmU2MmMwODk4MjY1ZjNlOTk4YWI1ODYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNl
cnZpY2VXb3JrZXJQcm92aWRlci5jcHAKQEAgLTU1LDggKzU1LDcgQEAgV2ViU2VydmljZVdvcmtl
clByb3ZpZGVyOjpXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXIoKQogCiBXZWJDb3JlOjpTV0NsaWVu
dENvbm5lY3Rpb24mIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2VydmljZVdvcmtlckNvbm5l
Y3Rpb25Gb3JTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgQVNTRVJUKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCkpOwotICAg
IHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKyAg
ICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlV2ViVG9TdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklE
KTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNob3VsZEhhbmRsZUZldGNoKGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKQEAgLTc3LDcgKzc2LDcgQEAgdm9pZCBXZWJTZXJ2
aWNlV29ya2VyUHJvdmlkZXI6OmhhbmRsZUZldGNoKFJlc291cmNlTG9hZGVyJiBsb2FkZXIsIENh
Y2hlZFJlc291cmMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8mIGNvbm5lY3Rp
b24gPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKyAgICBh
dXRvJiBjb25uZWN0aW9uID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlV2ViVG9TdG9y
YWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24o
c2Vzc2lvbklEKTsKICAgICBhdXRvIGZldGNoID0gY29ubmVjdGlvbi5zdGFydEZldGNoKCp0aGlz
LCBsb2FkZXIsIGxvYWRlci5pZGVudGlmaWVyKCksIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBB
U1NFUlQoZmV0Y2gtPmlzT25nb2luZygpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAppbmRleCA1NjQ3NGJhMWU5OTIyOWY3NzRlYmRjODYyNDYyNmVlMWI1OWNjNDdlLi5jNTE1
Y2M0Y2I5MjU3OWI0NDUwODVmMTU1YTc5Nzg1ZGU5NGY2MWI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnCiB7CiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNB
Y2Nlc3NlZCA9IGZhbHNlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29y
a0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKHNlc3Npb24uc2Vzc2lvbklEKCksIGZp
cnN0UGFydHksIHVybCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KGNvb2tpZVN0cmluZywg
c2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCisgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5
bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9N
KHNlc3Npb24uc2Vzc2lvbklEKCksIGZpcnN0UGFydHksIHVybCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JE
T006OlJlcGx5KGNvb2tpZVN0cmluZywgc2VjdXJlQ29va2llc0FjY2Vzc2VkKSwgMCkpCiAgICAg
ICAgIHJldHVybiB7IFN0cmluZygpLCBmYWxzZSB9OwogCiAgICAgcmV0dXJuIHsgY29va2llU3Ry
aW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQgfTsKQEAgLTEyMSwxMyArMTIxLDEzIEBAIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnCiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpT
ZXRDb29raWVzRnJvbURPTShzZXNzaW9uLnNlc3Npb25JRCgpLCBmaXJzdFBhcnR5LCB1cmwsIGNv
b2tpZVN0cmluZyksIDApOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbi5zZXNzaW9u
SUQoKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKIH0KIAogYm9vbCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbikKIHsKICAgICBib29sIHJlc3VsdDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQoc2Vz
c2lvbi5zZXNzaW9uSUQoKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQorICAgIGlmICghV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llc0VuYWJsZWQoc2Vzc2lvbi5zZXNzaW9uSUQoKSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE0MSwyMSArMTQx
LDIxIEBAIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMCiB7CiAgICAgU3RyaW5nIGNvb2tpZVN0cmlu
ZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwotICAgIGlmICghV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkubmV0d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uSUQsIGZpcnN0UGFydHksIHVybCwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShjb29raWVTdHJpbmcsIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCksIDApKQorICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5z
dXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoc2Vzc2lvbklELCBmaXJzdFBhcnR5LCB1cmwsIGluY2x1ZGVTZWN1cmVDb29raWVz
KSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkoY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNz
ZWQpLCAwKSkKICAgICAgICAgcmV0dXJuIHsgU3RyaW5nKCksIGZhbHNlIH07CiAgICAgcmV0dXJu
IHsgY29va2llU3RyaW5nLCBzZWN1cmVDb29raWVzQWNjZXNzZWQgfTsKIH0KIAogYm9vbCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLm5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhzZXNzaW9uLnNlc3Np
b25JRCgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkdldFJhd0Nvb2tpZXMoc2Vzc2lvbi5zZXNzaW9uSUQoKSwgZmlyc3RQYXJ0eSwgdXJs
KSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVz
OjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShzZXNzaW9uLnNlc3Npb25JRCgpLCB1cmws
IGNvb2tpZU5hbWUpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShzZXNzaW9uLnNlc3Npb25JRCgp
LCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDIwYzE3NjJj
NTdmNjBjMjM4NDk5NWE2ZTcwZGI1ZmMyNTQ2YzE1YmEuLmFjYmJmYWRhN2YwNGM4NjZmMjM2ODQ2
ZGM3ZTZiNTkzNWVlYTJkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFydERv
d25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Ry
aQogCiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwogICAg
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IHBhZ2UoKSA/IHBhZ2UoKS0+c2Vzc2lvbklEKCkg
OiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwotICAgIHdlYlByb2Nlc3MubmV0
d29ya0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xpY3lEb3dubG9h
ZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKSwgMCk7CisgICAgd2ViUHJvY2Vzcy5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBwb2xp
Y3lEb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0ZWROYW1lKSwgMCk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChEb2N1bWVudExvYWRlciog
ZG9jdW1lbnRMb2FkZXIsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTMx
Myw3ICszMTMsNyBAQCB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93
bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLAogICAgIGVsc2UKICAgICAgICAg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIgPSAwOwogCi0gICAgd2ViUHJvY2Vzcy5uZXR3b3Jr
Q29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHNlc3Npb25J
RCwgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3Qs
IHJlc3BvbnNlKSwgMCk7CisgICAgd2ViUHJvY2Vzcy5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChzZXNzaW9uSUQsIG1h
aW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0LCByZXNw
b25zZSksIDApOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OnNvdXJjZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMmIxMDU5ZjkwZTQ2N2ExNTZmNDZj
MDZhNWJmY2NmMzdhMzE3NmE5MS4uY2Y0ZDE5ZjUzNjUzMmNiYzcxMjhmZmI2Y2NjMWQ3Njk1NzY5
NThhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtNDE3LDI5
ICs0MTcsNiBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogI2VuZGlmCiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzczo6ZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkKLXsKLSAgICBpZiAobV9u
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIElQQzo6QXR0
YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXI7Ci0KLSAgICBpZiAoIXBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Okdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLAotICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpZmllciksIDApKQotICAgICAgICByZXR1cm47Ci0KLSNpZiBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKLSAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklk
ZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIucmVsZWFzZUZpbGVEZXNjcmlw
dG9yKCk7Ci0jZWxpZiBPUyhEQVJXSU4pCi0gICAgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCkp
OwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbmRpZgotICAgIGlmIChJUEM6
OkNvbm5lY3Rpb246OmlkZW50aWZpZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQotICAg
ICAgICByZXR1cm47Ci0gICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7Ci19Ci0KIHZvaWQg
V2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgU3RyaW5n
JiB1cmxTY2hlbWUpCiB7CiAgICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNF
bXB0eURvY3VtZW50KHVybFNjaGVtZSk7CkBAIC01MjcsNyArNTA0LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpkZXN0cm95U2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAKIHZvaWQgV2Vi
UHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nl
c3MoKQogewotICAgIG5ldHdvcmtDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpFbnN1cmVMZWdhY3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCksIDApOworICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6RW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCAwKTsKIH0KIAogI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMTEwOSwxNSArMTA4NiwyNiBAQCB2b2lkIFdl
YlByb2Nlc3M6OnNldEluamVjdGVkQnVuZGxlUGFyYW1ldGVycyhjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIHZhbHVlKQogICAgIGluamVjdGVkQnVuZGxlLT5zZXRCdW5kbGVQYXJhbWV0ZXJzKHZh
bHVlKTsKIH0KIAotTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uJiBXZWJQcm9jZXNzOjpuZXR3b3Jr
Q29ubmVjdGlvbigpCitOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24mIFdlYlByb2Nlc3M6OmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpCiB7CiAgICAgLy8gSWYgd2UndmUgbG9zdCBvdXIg
Y29ubmVjdGlvbiB0byB0aGUgbmV0d29yayBwcm9jZXNzIChlLmcuIGl0IGNyYXNoZWQpIHRyeSB0
byByZS1lc3RhYmxpc2ggaXQuCi0gICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbikK
LSAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCk7Ci0gICAgCi0gICAgLy8g
SWYgd2UgZmFpbGVkIHRvIHJlLWVzdGFibGlzaCBpdCB0aGVuIHdlIGFyZSBiZXlvbmQgcmVjb3Zl
cnkgYW5kIHNob3VsZCBjcmFzaC4KLSAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KQotICAgICAgICBDUkFTSCgpOworICAgIGlmICghbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24p
IHsKKyAgICAgICAgSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcjsK
KworICAgICAgICBpZiAoIXBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLCBNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5
KGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciksIDApKQorICAgICAgICAgICAgQ1JBU0goKTsK
KworI2lmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQorICAgICAgICBJUEM6OkNvbm5lY3Rpb246
OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVkQ29ubmVjdGlvbklkZW50
aWZpZXIucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCk7CisjZWxpZiBPUyhEQVJXSU4pCisgICAgICAg
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVk
Q29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpKTsKKyNlbHNlCisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworI2VuZGlmCisgICAgICAgIGlmIChJUEM6OkNvbm5lY3Rpb246OmlkZW50aWZp
ZXJJc051bGwoY29ubmVjdGlvbklkZW50aWZpZXIpKQorICAgICAgICAgICAgQ1JBU0goKTsKKyAg
ICAgICAgbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24gPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgfQogICAgIAogICAgIHJldHVy
biAqbV9uZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb247CiB9CkBAIC0xMTcxLDM2ICsxMTU5LDI5IEBA
IHZvaWQgV2ViUHJvY2Vzczo6d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb25DbG9zZWQoV2Vi
VG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3RpCiAgICAgbV93ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbiA9IG51bGxwdHI7CiB9CiAKLVdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKiBXZWJQ
cm9jZXNzOjp3ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpCitXZWJUb1N0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbiYgV2ViUHJvY2Vzczo6ZW5zdXJlV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb24oKQogewotICAgIGlmICghbV93ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbikKLSAg
ICAgICAgZW5zdXJlV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKKyAgICBpZiAoIW1f
d2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24pIHsKKyAgICAgICAgSVBDOjpBdHRhY2htZW50
IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcjsKIAotICAgIHJldHVybiBtX3dlYlRvU3RvcmFn
ZVByb2Nlc3NDb25uZWN0aW9uLmdldCgpOwotfQotCi12b2lkIFdlYlByb2Nlc3M6OmVuc3VyZVdl
YlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uKCkKLXsKLSAgICBpZiAobV93ZWJUb1N0b3JhZ2VQ
cm9jZXNzQ29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgSVBDOjpBdHRhY2htZW50
IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcjsKLQotICAgIGlmICghcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFn
ZVByb2Nlc3NDb25uZWN0aW9uKCksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFN0b3Jh
Z2VQcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwg
MCkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRTdG9yYWdlUHJvY2Vz
c0Nvbm5lY3Rpb24oKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0U3RvcmFnZVByb2Nl
c3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIpLCAwKSkKKyAg
ICAgICAgICAgIENSQVNIKCk7CiAKICNpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIgPSBlbmNvZGVk
Q29ubmVjdGlvbklkZW50aWZpZXIucmVsZWFzZUZpbGVEZXNjcmlwdG9yKCk7CisgICAgICAgIElQ
Qzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciA9IGVuY29kZWRD
b25uZWN0aW9uSWRlbnRpZmllci5yZWxlYXNlRmlsZURlc2NyaXB0b3IoKTsKICNlbGlmIE9TKERB
UldJTikKLSAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSk7CisgICAgICAgIElQQzo6Q29u
bmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlv
bklkZW50aWZpZXIucG9ydCgpKTsKICNlbGlmIE9TKFdJTkRPV1MpCi0gICAgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKGVuY29kZWRDb25uZWN0aW9uSWRl
bnRpZmllci5oYW5kbGUoKSk7CisgICAgICAgIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllcihlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIuaGFuZGxlKCkp
OwogI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAjZW5kaWYKLSAgICBpZiAoSVBDOjpDb25uZWN0aW9uOjppZGVudGlmaWVySXNO
dWxsKGNvbm5lY3Rpb25JZGVudGlmaWVyKSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fd2ViVG9T
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24gPSBXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKElQQzo6Q29ubmVjdGlv
bjo6aWRlbnRpZmllcklzTnVsbChjb25uZWN0aW9uSWRlbnRpZmllcikpCisgICAgICAgICAgICBD
UkFTSCgpOworICAgICAgICBtX3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uID0gV2ViVG9T
dG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShjb25uZWN0aW9uSWRlbnRpZmllcik7CisK
KyAgICB9CisgICAgcmV0dXJuICptX3dlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uOwogfQog
CiB2b2lkIFdlYlByb2Nlc3M6OnNldEVuaGFuY2VkQWNjZXNzaWJpbGl0eShib29sIGZsYWcpCkBA
IC0xNjA5LDcgKzE1OTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2Ruc1ByZWZldGNo
ZWRIb3N0cy5hZGQoaG9zdG5hbWUpLmlzTmV3RW50cnkpCi0gICAgICAgIG5ldHdvcmtDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpQcmVmZXRjaEROUyhob3N0bmFtZSksIDApOworICAgICAgICBlbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlByZWZldGNoRE5TKGhvc3RuYW1lKSwgMCk7CiAgICAgLy8g
VGhlIEROUyBwcmVmZXRjaGVkIGhvc3RzIGNhY2hlIGlzIG9ubHkgdG8gYXZvaWQgYXNraW5nIGZv
ciB0aGUgc2FtZSBob3N0cyB0b28gbWFueSB0aW1lcwogICAgIC8vIGluIGEgdmVyeSBzaG9ydCBw
ZXJpb2Qgb2YgdGltZSwgcHJvZHVjaW5nIGEgbG90IG9mIElQQyB0cmFmZmljLiBTbyB3ZSBjbGVh
ciB0aGlzIGNhY2hlIGFmdGVyCiAgICAgLy8gc29tZSB0aW1lIG9mIG5vIEROUyByZXF1ZXN0cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDMyNTkwYTFlNGNhNWE5NjEy
ODRkNTNiOTEyNDE4YzBjMjY1ZmIwZTEuLjEzMWUxN2VkMThhZWYxMjkyYzgwNDJhZDg1YmQ2Njdm
MTJlNTAxNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMTY1LDcg
KzE2NSw3IEBAIHB1YmxpYzoKIAogICAgIEV2ZW50RGlzcGF0Y2hlciYgZXZlbnREaXNwYXRjaGVy
KCkgeyByZXR1cm4gKm1fZXZlbnREaXNwYXRjaGVyOyB9CiAKLSAgICBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24mIG5ldHdvcmtDb25uZWN0aW9uKCk7CisgICAgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uJiBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICB2b2lkIG5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbkNsb3NlZChOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24qKTsKICAgICBX
ZWJMb2FkZXJTdHJhdGVneSYgd2ViTG9hZGVyU3RyYXRlZ3koKTsKIApAQCAtMTc0LDcgKzE3NCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCB3ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVj
dGlvbkNsb3NlZChXZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbiopOwotICAgIFdlYlRvU3Rv
cmFnZVByb2Nlc3NDb25uZWN0aW9uKiB3ZWJUb1N0b3JhZ2VQcm9jZXNzQ29ubmVjdGlvbigpOwor
ICAgIFdlYlRvU3RvcmFnZVByb2Nlc3NDb25uZWN0aW9uJiBlbnN1cmVXZWJUb1N0b3JhZ2VQcm9j
ZXNzQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBzZXRDYWNoZU1vZGVsKHVpbnQzMl90KTsKIApA
QCAtMzgzLDcgKzM4Myw2IEBAIHByaXZhdGU6CiAKICAgICBUZXh0Q2hlY2tlclN0YXRlIG1fdGV4
dENoZWNrZXJTdGF0ZTsKIAotICAgIHZvaWQgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCk7CiAgICAgUmVmUHRyPE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbj4gbV9uZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb247CiAgICAgV2ViTG9hZGVyU3RyYXRlZ3kmIG1fd2ViTG9hZGVyU3RyYXRlZ3k7
CiAKQEAgLTM5OCw3ICszOTcsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk+IG1fYXV0b21hdGlvblNlc3Npb25Qcm94eTsKIAotICAg
IHZvaWQgZW5zdXJlV2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKICAgICBSZWZQdHI8
V2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fd2ViVG9TdG9yYWdlUHJvY2Vzc0Nvbm5l
Y3Rpb247CiAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>