<?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>214063</bug_id>
          
          <creation_ts>2020-07-07 15:59:42 -0700</creation_ts>
          <short_desc>Modernize FindOptions IPC code</short_desc>
          <delta_ts>2020-07-07 19:29:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1669575</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-07 15:59:42 -0700</bug_when>
    <thetext>Modernize FindOptions IPC code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669577</commentid>
    <comment_count>1</comment_count>
      <attachid>403738</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-07 16:00:42 -0700</bug_when>
    <thetext>Created attachment 403738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669578</commentid>
    <comment_count>2</comment_count>
      <attachid>403738</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-07 16:04:25 -0700</bug_when>
    <thetext>Comment on attachment 403738
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/FindController.cpp:299
&gt; +    if (!options.contains(FindOptions::ShowOverlay)
&gt; +        &amp;&amp; !options.contains(FindOptions::ShowFindIndicator))

Like it better as a long line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669580</commentid>
    <comment_count>3</comment_count>
      <attachid>403739</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-07 16:06:26 -0700</bug_when>
    <thetext>Created attachment 403739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669593</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-07 16:39:57 -0700</bug_when>
    <thetext>Patch 403739 does not build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669599</commentid>
    <comment_count>5</comment_count>
      <attachid>403745</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-07 17:29:48 -0700</bug_when>
    <thetext>Created attachment 403745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669600</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-07-07 17:30:35 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669602</commentid>
    <comment_count>7</comment_count>
      <attachid>403746</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-07 17:45:11 -0700</bug_when>
    <thetext>Created attachment 403746
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669615</commentid>
    <comment_count>8</comment_count>
      <attachid>403749</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-07-07 18:16:15 -0700</bug_when>
    <thetext>Created attachment 403749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669641</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-07 19:28:51 -0700</bug_when>
    <thetext>Committed r264055: &lt;https://trac.webkit.org/changeset/264055&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403749.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669642</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-07 19:29:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/65204503&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403738</attachid>
            <date>2020-07-07 16:00:42 -0700</date>
            <delta_ts>2020-07-07 16:06:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214063-20200707170041.patch</filename>
            <type>text/plain</type>
            <size>30926</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwNDUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEZp
bmRPcHRpb25zIElQQyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgY2FsbFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgR2VuZXJpY0NhbGxi
YWNrLgorICAgICAgICBVc2UgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBpbnN0ZWFkIG9mIEZpbmRP
cHRpb25zIG9yIHVpbnQzMl90LgorICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6
OnRvRmluZE9wdGlvbnMpOgorICAgICAgICAqIFNoYXJlZC9XZWJGaW5kT3B0aW9ucy5oOgorICAg
ICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKHRvRmluZE9wdGlvbnMpOgorICAgICAgICAoLVtXS1dlYlZpZXcgZmlu
ZFN0cmluZzp3aXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpmaW5kU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZmluZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdN
YXRjaGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nQ2FsbGJh
Y2spOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAo
V2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdl
YktpdDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbCk6CisgICAg
ICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktp
dDo6RmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNy0wNyAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFsbG93IGFkZGl0aW9uYWwgSU9L
aXQgY2xhc3NlcyBmb3IgQXBwbGUgU2lsaWNvbgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMv
d2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNiArNjYyLDcg
QEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5
U3RhdGVDaGFuZ2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0
OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAg
ICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJl
ZC5oIiddLAorICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRpb25z
LmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUnOiBbJyJHZXN0
dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBbJyJHZXN0dXJl
VHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyci
TGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
RmluZE9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJGaW5k
T3B0aW9ucy5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJG
aW5kT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxOSArMjUsNDEgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotZW51bSBGaW5kT3B0aW9ucyA6IHVpbnQxNl90IHsKLSAgICBGaW5kT3B0aW9uc0Nhc2VJ
bnNlbnNpdGl2ZSA9IDEgPDwgMCwKLSAgICBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA9IDEgPDwg
MSwKLSAgICBGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0ID0gMSA8PCAy
LAotICAgIEZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAzLAotICAgIEZpbmRPcHRpb25zV3Jh
cEFyb3VuZCA9IDEgPDwgNCwKLSAgICBGaW5kT3B0aW9uc1Nob3dPdmVybGF5ID0gMSA8PCA1LAot
ICAgIEZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgPSAxIDw8IDYsCi0gICAgRmluZE9wdGlv
bnNTaG93SGlnaGxpZ2h0ID0gMSA8PCA3LAotICAgIEZpbmRPcHRpb25zRGV0ZXJtaW5lTWF0Y2hJ
bmRleCA9IDEgPDwgOCwKLSAgICBGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UgPSAxIDw8IDksCitl
bnVtIGNsYXNzIEZpbmRPcHRpb25zIDogdWludDE2X3QgeworICAgIENhc2VJbnNlbnNpdGl2ZSA9
IDEgPDwgMCwKKyAgICBBdFdvcmRTdGFydHMgPSAxIDw8IDEsCisgICAgVHJlYXRNZWRpYWxDYXBp
dGFsQXNXb3JkU3RhcnQgPSAxIDw8IDIsCisgICAgQmFja3dhcmRzID0gMSA8PCAzLAorICAgIFdy
YXBBcm91bmQgPSAxIDw8IDQsCisgICAgU2hvd092ZXJsYXkgPSAxIDw8IDUsCisgICAgU2hvd0Zp
bmRJbmRpY2F0b3IgPSAxIDw8IDYsCisgICAgU2hvd0hpZ2hsaWdodCA9IDEgPDwgNywKKyAgICBE
ZXRlcm1pbmVNYXRjaEluZGV4ID0gMSA8PCA4LAorICAgIE5vSW5kZXhDaGFuZ2UgPSAxIDw8IDks
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpGaW5kT3B0aW9ucz4geworICAgIHVzaW5n
IHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnMsCisgICAg
ICAgIFdlYktpdDo6RmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSwKKyAgICAgICAgV2ViS2l0
OjpGaW5kT3B0aW9uczo6QXRXb3JkU3RhcnRzLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25z
OjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCwKKyAgICAgICAgV2ViS2l0OjpGaW5kT3B0
aW9uczo6QmFja3dhcmRzLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpXcmFwQXJvdW5k
LAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93T3ZlcmxheSwKKyAgICAgICAgV2Vi
S2l0OjpGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IsCisgICAgICAgIFdlYktpdDo6Rmlu
ZE9wdGlvbnM6OlNob3dIaWdobGlnaHQsCisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6OkRl
dGVybWluZU1hdGNoSW5kZXgsCisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6Ok5vSW5kZXhD
aGFuZ2UKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMjY0MDE2KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc1MywyOCArNzUzLDI4IEBAIGlubGluZSBXS0NvbnRleHRNZW51SXRlbVR5cGUg
dG9BUEkoV2ViQ28KICAgICB9CiB9CiAKLWlubGluZSBGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25z
KFdLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK2lubGluZSBPcHRpb25TZXQ8RmluZE9wdGlv
bnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25zKQogewotICAgIHVu
c2lnbmVkIGZpbmRPcHRpb25zID0gMDsKKyAgICBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IGZpbmRP
cHRpb25zOwogCiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9uc0Nhc2VJbnNl
bnNpdGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRp
dmU7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChGaW5kT3B0aW9uczo6Q2FzZUluc2Vuc2l0aXZl
KTsKICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zQXRXb3JkU3RhcnRzKQot
ICAgICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAg
ZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpBdFdvcmRTdGFydHMpOwogICAgIGlmICh3a0Zp
bmRPcHRpb25zICYga1dLRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkK
LSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dv
cmRTdGFydDsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpUcmVhdE1lZGlh
bENhcGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0
aW9uc0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNCYWNrd2Fy
ZHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChGaW5kT3B0aW9uczo6QmFja3dhcmRzKTsKICAg
ICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zV3JhcEFyb3VuZCkKLSAgICAgICAg
ZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9u
cy5hZGQoRmluZE9wdGlvbnM6OldyYXBBcm91bmQpOwogICAgIGlmICh3a0ZpbmRPcHRpb25zICYg
a1dLRmluZE9wdGlvbnNTaG93T3ZlcmxheSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9w
dGlvbnNTaG93T3ZlcmxheTsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpT
aG93T3ZlcmxheSk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9uc1Nob3dG
aW5kSW5kaWNhdG9yKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc1Nob3dGaW5k
SW5kaWNhdG9yOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoRmluZE9wdGlvbnM6OlNob3dGaW5k
SW5kaWNhdG9yKTsKICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zU2hvd0hp
Z2hsaWdodCkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0
OworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoRmluZE9wdGlvbnM6OlNob3dIaWdobGlnaHQpOwog
Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZpbmRPcHRpb25zPihmaW5kT3B0aW9ucyk7CisgICAg
cmV0dXJuIGZpbmRPcHRpb25zOwogfQogCiBpbmxpbmUgV0tGcmFtZU5hdmlnYXRpb25UeXBlIHRv
QVBJKFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMjcsNyAr
NDAyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwbHVnaW5ab29tRmFjdG9yRGlkQ2gKICAgICBt
X3BsdWdpblpvb21GYWN0b3IgPSBwbHVnaW5ab29tRmFjdG9yOwogfQogCi12b2lkIFdlYlBhZ2VQ
cm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25z
IG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6Zmlu
ZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlvblNldDxGaW5kT3B0aW9u
cz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKICAgICBpZiAoc3RyaW5nLmlz
RW1wdHkoKSkgewogICAgICAgICBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIFZlY3RvcjxW
ZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4+ICgpLCAwKTsKQEAgLTQwMzcsMjIgKzQwMzcsOSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENv
dW50KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBGdW5j
dGlvbjx2b2lkIChib29sLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9w
dGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIE9w
dGlvbmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNrSUQ7Ci0gICAgaWYgKGNhbGxiYWNrRnVuY3Rpb24p
Ci0gICAgICAgIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBh
Z2VQcm94eTo6ZmluZFN0cmluZyJfcykpOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQpKTsK
LX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmdDYWxsYmFjayhib29sIGZvdW5kLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCi17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tz
LnRha2U8Qm9vbENhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZh
bHVlKGZvdW5kKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZp
bmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRj
aChpbnQzMl90IG1hdGNoSW5kZXgpCkBAIC00MDc1LDcgKzQwNjIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGlkZUZpbmRVSSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlkZUZpbmRV
SSgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBT
dHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hD
b3VudCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjQw
MTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA5OCwyMSArMTA5OCwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbHVnaW5ab29t
RmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSk7CiAKICAgICAvLyBGaW5kLgotICAgIHZvaWQgZmluZFN0
cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwg
RnVuY3Rpb248dm9pZCAoYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgPSBudWxscHRyKTsK
LSAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiA9IFtdKGJvb2wpIHsgfSk7CisgICAgdm9pZCBmaW5k
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKGludDMy
X3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaElu
ZGV4KTsKICAgICB2b2lkIGluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7CiAg
ICAgdm9pZCBkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lk
IGhpZGVGaW5kVUkoKTsKLSAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBjb3VudFN0
cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWdu
ZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCByZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMy
X3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBz
ZWxlY3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJik7CiAgICAgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWlu
dDMyX3QgbWF0Y2hDb3VudCk7CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JEYXRhJiwgdWludDY0X3QgLyogV2ViQ29yZTo6VGV4dEluZGljYXRv
cldpbmRvd0xpZmV0aW1lICovIGxpZmV0aW1lID0gMCAvKiBQZXJtYW5lbnQgKi8pOwogICAgIHZv
aWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKICAgICB2b2lkIGNs
ZWFyVGV4dEluZGljYXRvcigpOwogCi0gICAgdm9pZCBmaW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBm
b3VuZCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGlu
dDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKTsKICAgICB2b2lkIGRpZEZhaWxU
b0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hl
cyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYg
bWF0Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDYgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2Ug
cGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgTm93UGxheWluZ0lu
Zm9DYWxsYmFjayhib29sIGFjdGl2ZSwgYm9vbCByZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUs
IHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogI2VuZGlmCi0gICAgRmluZFN0cmluZ0NhbGxiYWNrKGJvb2wgZm91bmQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRvdWJs
ZSBzY2FsZUZhY3RvcikKICAgICBQbHVnaW5TY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgem9v
bUZhY3RvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEyNCwxOCArMTEyNCwx
OCBAQCAtIChDR0Zsb2F0KXBhZ2Vab29tCiAgICAgcmV0dXJuIF9wYWdlLT5wYWdlWm9vbUZhY3Rv
cigpOwogfQogCi1pbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdLRmlu
ZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCitpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6
RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29uZmlndXJhdGlvbiAqY29uZmlndXJh
dGlvbikKIHsKLSAgICB1bnNpZ25lZCBmaW5kT3B0aW9ucyA9IDA7CisgICAgT3B0aW9uU2V0PFdl
YktpdDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zOwogCiAgICAgaWYgKCFjb25maWd1cmF0aW9u
LmNhc2VTZW5zaXRpdmUpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlv
bnNDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRP
cHRpb25zOjpDYXNlSW5zZW5zaXRpdmUpOwogICAgIGlmIChjb25maWd1cmF0aW9uLmJhY2t3YXJk
cykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsK
KyAgICAgICAgZmluZE9wdGlvbnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7
CiAgICAgaWYgKGNvbmZpZ3VyYXRpb24ud3JhcHMpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdl
YktpdDo6RmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2Vi
S2l0OjpGaW5kT3B0aW9uczo6V3JhcEFyb3VuZCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
V2ViS2l0OjpGaW5kT3B0aW9ucz4oZmluZE9wdGlvbnMpOworICAgIHJldHVybiBmaW5kT3B0aW9u
czsKIH0KIAogLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoQ29uZmln
dXJhdGlvbjooV0tGaW5kQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLRmluZFJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgpA
QCAtMTE0NSw4ICsxMTQ1LDggQEAgLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmlu
ZyB3aQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3Ry
aW5nLCB0b0ZpbmRPcHRpb25zKGNvbmZpZ3VyYXRpb24pLCAxLCBbaGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJhY2tCYXNl
OjpFcnJvciBlcnJvcikgewotICAgICAgICBoYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10g
X2luaXRXaXRoTWF0Y2hGb3VuZDooZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lICYmIGZvdW5kKV0gYXV0b3JlbGVhc2VdKTsKKyAgICBfcGFnZS0+ZmluZFN0cmluZyhz
dHJpbmcsIHRvRmluZE9wdGlvbnMoY29uZmlndXJhdGlvbiksIDEsIFtoYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBmb3VuZCkgeworICAgICAgICBoYW5kbGVy
KFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpmb3VuZF0gYXV0b3Jl
bGVhc2VdKTsKICAgICB9KTsKIH0KIApAQCAtMjU2OSwzMiArMjU2OSwzMiBAQCAtICh2b2lkKV9z
ZXRGaW5kRGVsZWdhdGU6KGlkPF9XS0ZpbmREZWxlCiAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpG
aW5kQ2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuc2V0RGVsZWdhdGUoZmluZERlbGVnYXRl
KTsKIH0KIAotc3RhdGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMo
X1dLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdl
YktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kT3B0
aW9ucykKIHsKLSAgICB1bnNpZ25lZCBmaW5kT3B0aW9ucyA9IDA7CisgICAgT3B0aW9uU2V0PFdl
YktpdDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zOwogCiAgICAgaWYgKHdrRmluZE9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0g
V2ViS2l0OjpGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgZmluZE9wdGlvbnMu
YWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKHdrRmlu
ZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgZmluZE9wdGlv
bnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAgZmluZE9wdGlv
bnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkF0V29yZFN0YXJ0cyk7CiAgICAgaWYgKHdrRmlu
ZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQot
ICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBp
dGFsQXNXb3JkU3RhcnQ7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRp
b25zOjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKHdrRmluZE9wdGlv
bnMgJiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2Vi
S2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKFdlYktp
dDo6RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tG
aW5kT3B0aW9uc1dyYXBBcm91bmQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6Rmlu
ZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5k
T3B0aW9uczo6V3JhcEFyb3VuZCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0
aW9uc1Nob3dPdmVybGF5KQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRp
b25zU2hvd092ZXJsYXk7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRp
b25zOjpTaG93T3ZlcmxheSk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9u
c1Nob3dGaW5kSW5kaWNhdG9yKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRP
cHRpb25zU2hvd0ZpbmRJbmRpY2F0b3I7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6
OkZpbmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcik7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdl
YktpdDo6RmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0OworICAgICAgICBmaW5kT3B0aW9ucy5hZGQo
V2ViS2l0OjpGaW5kT3B0aW9uczo6U2hvd0hpZ2hsaWdodCk7CiAgICAgaWYgKHdrRmluZE9wdGlv
bnMgJiBfV0tGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9
IFdlYktpdDo6RmluZE9wdGlvbnNOb0luZGV4Q2hhbmdlOworICAgICAgICBmaW5kT3B0aW9ucy5h
ZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6Tm9JbmRleENoYW5nZSk7CiAgICAgaWYgKHdrRmluZE9w
dGlvbnMgJiBfV0tGaW5kT3B0aW9uc0RldGVybWluZU1hdGNoSW5kZXgpCi0gICAgICAgIGZpbmRP
cHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNEZXRlcm1pbmVNYXRjaEluZGV4OworICAgICAg
ICBmaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6RGV0ZXJtaW5lTWF0Y2hJbmRl
eCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4oZmluZE9w
dGlvbnMpOworICAgIHJldHVybiBmaW5kT3B0aW9uczsKIH0KIAogLSAodm9pZClfY291bnRTdHJp
bmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRp
b25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0JKHJldmlzaW9uIDI2NDAx
NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTIwOCwyMSArMjA4LDIxIEBAIC0gKHZvaWQpZmluZE1hdGNoZXNG
b3JTdHJpbmc6KE5TU3RyaW5nICoKICAgICAvLyBwcm9wb3J0aW9uYWwgdG8gZG9jdW1lbnQgbGVu
Z3RoLgogICAgIG1heFJlc3VsdHMgPSBzdGQ6Om1pbihtYXhSZXN1bHRzLCBtYXhpbXVtRmluZE1h
dGNoZXMpOwogCi0gICAgdW5zaWduZWQga2l0RmluZE9wdGlvbnMgPSAwOworICAgIE9wdGlvblNl
dDxGaW5kT3B0aW9ucz4ga2l0RmluZE9wdGlvbnM7CiAKICAgICBpZiAoZmluZE9wdGlvbnMgJiBO
U1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zQmFja3dhcmRzKQotICAg
ICAgICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQmFja3dhcmRzOworICAg
ICAgICBraXRGaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkcyk7CiAg
ICAgaWYgKGZpbmRPcHRpb25zICYgTlNUZXh0RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5k
T3B0aW9uc1dyYXApCi0gICAgICAgIGtpdEZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlv
bnNXcmFwQXJvdW5kOworICAgICAgICBraXRGaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0
aW9uc1dyYXBBcm91bmQpOwogICAgIGlmIChmaW5kT3B0aW9ucyAmIE5TVGV4dEZpbmRlckFzeW5j
aHJvbm91c0RvY3VtZW50RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCi0gICAgICAgIGtpdEZp
bmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7CisgICAgICAg
IGtpdEZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlKTsK
ICAgICBpZiAoZmluZE9wdGlvbnMgJiBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZp
bmRPcHRpb25zU3RhcnRzV2l0aCkKLSAgICAgICAga2l0RmluZE9wdGlvbnMgfD0gV2ViS2l0OjpG
aW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAga2l0RmluZE9wdGlvbnMuYWRkKFdlYktp
dDo6RmluZE9wdGlvbnNBdFdvcmRTdGFydHMpOwogCiAgICAgaWYgKCFfdXNlUGxhdGZvcm1GaW5k
VUkpIHsKLSAgICAgICAga2l0RmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc1Nob3dP
dmVybGF5OwotICAgICAgICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zU2hv
d0ZpbmRJbmRpY2F0b3I7Ci0gICAgICAgIGtpdEZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9w
dGlvbnNEZXRlcm1pbmVNYXRjaEluZGV4OworICAgICAgICBraXRGaW5kT3B0aW9ucy5hZGQoV2Vi
S2l0OjpGaW5kT3B0aW9uczo6U2hvd092ZXJsYXkpOworICAgICAgICBraXRGaW5kT3B0aW9ucy5h
ZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IpOworICAgICAgICBraXRG
aW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6RGV0ZXJtaW5lTWF0Y2hJbmRleCk7
CiAgICAgfQogCiAgICAgUmV0YWluUHRyPE5TUHJvZ3Jlc3M+IHByb2dyZXNzID0gW05TUHJvZ3Jl
c3MgcHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6MV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAy
NjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE4ICs1NSwxOCBAQAogbmFtZXNwYWNlIFdlYktp
dCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViQ29yZTo6RmluZE9wdGlvbnMgY29y
ZShGaW5kT3B0aW9ucyBvcHRpb25zKQorV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZShPcHRpb25T
ZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMpCiB7CiAgICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgcmVz
dWx0OwotICAgIGlmIChvcHRpb25zICYgRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCisgICAg
aWYgKG9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSkpCiAgICAg
ICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6Q2FzZUluc2Vuc2l0aXZlKTsKLSAgICBpZiAob3B0aW9u
cyAmIEZpbmRPcHRpb25zQXRXb3JkU3RhcnRzKQorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEZp
bmRPcHRpb25zOjpBdFdvcmRTdGFydHMpKQogICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkF0
V29yZFN0YXJ0cyk7Ci0gICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2Fw
aXRhbEFzV29yZFN0YXJ0KQorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEZpbmRPcHRpb25zOjpU
cmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkpCiAgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6VHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpOwotICAgIGlmIChvcHRpb25zICYgRmlu
ZE9wdGlvbnNCYWNrd2FyZHMpCisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6
OkJhY2t3YXJkcykpCiAgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6QmFja3dhcmRzKTsKLSAg
ICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zV3JhcEFyb3VuZCkKKyAgICBpZiAob3B0aW9ucy5j
b250YWlucyhGaW5kT3B0aW9uczo6V3JhcEFyb3VuZCkpCiAgICAgICAgIHJlc3VsdC5hZGQoV2Vi
Q29yZTo6V3JhcEFyb3VuZCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTgwLDcgKzgwLDcg
QEAgRmluZENvbnRyb2xsZXI6On5GaW5kQ29udHJvbGxlcigpCiB7CiB9CiAKLXZvaWQgRmluZENv
bnRyb2xsZXI6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9w
dGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKK3ZvaWQgRmluZENvbnRyb2xs
ZXI6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgT3B0aW9uU2V0PEZp
bmRPcHRpb25zPiBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewogICAgIGlmICht
YXhNYXRjaENvdW50ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAg
ICAgICAgLS1tYXhNYXRjaENvdW50OwpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBGcmFtZSog
ZnJhbWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHAKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBGaW5k
Q29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50LCBEaWRXcmFwIGRpZFdyYXAsIEZpbmRVSU9yaWdpbmF0b3Igb3JpZ2luYXRvcikKK3ZvaWQg
RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChib29sIGZvdW5kLCBj
b25zdCBTdHJpbmcmIHN0cmluZywgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50LCBEaWRXcmFwIGRpZFdyYXAsIEZpbmRVSU9yaWdpbmF0b3Igb3Jp
Z2luYXRvcikKIHsKICAgICBGcmFtZSogc2VsZWN0ZWRGcmFtZSA9IGZyYW1lV2l0aFNlbGVjdGlv
bihtX3dlYlBhZ2UtPmNvcmVQYWdlKCkpOwogICAgIApAQCAtMTUzLDkgKzE1Myw5IEBAIHZvaWQg
RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGEKIAogICAgICAgICBtX3dlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFRvRmluZFN0cmluZyhzdHJpbmcp
KTsKICAgICB9IGVsc2UgewotICAgICAgICBzaG91bGRTaG93T3ZlcmxheSA9IG9wdGlvbnMgJiBG
aW5kT3B0aW9uc1Nob3dPdmVybGF5OwotICAgICAgICBib29sIHNob3VsZFNob3dIaWdobGlnaHQg
PSBvcHRpb25zICYgRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0OwotICAgICAgICBib29sIHNob3Vs
ZERldGVybWluZU1hdGNoSW5kZXggPSBvcHRpb25zICYgRmluZE9wdGlvbnNEZXRlcm1pbmVNYXRj
aEluZGV4OworICAgICAgICBzaG91bGRTaG93T3ZlcmxheSA9IG9wdGlvbnMuY29udGFpbnMoRmlu
ZE9wdGlvbnM6OlNob3dPdmVybGF5KTsKKyAgICAgICAgYm9vbCBzaG91bGRTaG93SGlnaGxpZ2h0
ID0gb3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6U2hvd0hpZ2hsaWdodCk7CisgICAgICAg
IGJvb2wgc2hvdWxkRGV0ZXJtaW5lTWF0Y2hJbmRleCA9IG9wdGlvbnMuY29udGFpbnMoRmluZE9w
dGlvbnM6OkRldGVybWluZU1hdGNoSW5kZXgpOwogICAgICAgICB1bnNpZ25lZCBtYXRjaENvdW50
ID0gMTsKIAogICAgICAgICBpZiAoc2hvdWxkRGV0ZXJtaW5lTWF0Y2hJbmRleCkgewpAQCAtMjIx
LDExICsyMjEsMTEgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYQog
ICAgICAgICBtX2ZpbmRQYWdlT3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQogICAg
IAotICAgIGlmIChmb3VuZCAmJiAoIShvcHRpb25zICYgRmluZE9wdGlvbnNTaG93RmluZEluZGlj
YXRvcikgfHwgIXNlbGVjdGVkRnJhbWUgfHwgIXVwZGF0ZUZpbmRJbmRpY2F0b3IoKnNlbGVjdGVk
RnJhbWUsIHNob3VsZFNob3dPdmVybGF5KSkpCisgICAgaWYgKGZvdW5kICYmICghb3B0aW9ucy5j
b250YWlucyhGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IpIHx8ICFzZWxlY3RlZEZyYW1l
IHx8ICF1cGRhdGVGaW5kSW5kaWNhdG9yKCpzZWxlY3RlZEZyYW1lLCBzaG91bGRTaG93T3Zlcmxh
eSkpKQogICAgICAgICBoaWRlRmluZEluZGljYXRvcigpOwogfQogCi12b2lkIEZpbmRDb250cm9s
bGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBPcHRpb25hbDxDYWxsYmFja0lEPiBjYWxsYmFja0lE
KQordm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywg
T3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8qIHBsdWdpblZpZXcgPSBXZWJQYWdlOjpwbHVnaW5WaWV3Rm9yRnJhbWUobV93ZWJQYWdl
LT5tYWluRnJhbWUoKSk7CiAKQEAgLTI2Nyw5ICsyNjcsOSBAQCB2b2lkIEZpbmRDb250cm9sbGVy
OjpmaW5kU3RyaW5nKGNvbnN0IFN0CiAgICAgICAgIGRpZEZpbmRTdHJpbmcoKTsKIAogICAgICAg
ICBpZiAoIWZvdW5kU3RyaW5nU3RhcnRzQWZ0ZXJTZWxlY3Rpb24pIHsKLSAgICAgICAgICAgIGlm
IChvcHRpb25zICYgRmluZE9wdGlvbnNCYWNrd2FyZHMpCisgICAgICAgICAgICBpZiAob3B0aW9u
cy5jb250YWlucyhGaW5kT3B0aW9uczo6QmFja3dhcmRzKSkKICAgICAgICAgICAgICAgICBtX2Zv
dW5kU3RyaW5nTWF0Y2hJbmRleC0tOwotICAgICAgICAgICAgZWxzZSBpZiAoIShvcHRpb25zICYg
RmluZE9wdGlvbnNOb0luZGV4Q2hhbmdlKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCFvcHRpb25z
LmNvbnRhaW5zKEZpbmRPcHRpb25zOjpOb0luZGV4Q2hhbmdlKSkKICAgICAgICAgICAgICAgICBt
X2ZvdW5kU3RyaW5nTWF0Y2hJbmRleCsrOwogICAgICAgICB9CiAgICAgfQpAQCAtMjc5LDExICsy
NzksMTAgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdAogICAgICAg
ICBwcm90ZWN0ZWRXZWJQYWdlLT5maW5kQ29udHJvbGxlcigpLnVwZGF0ZUZpbmRVSUFmdGVyUGFn
ZVNjcm9sbChmb3VuZCwgc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50LCBkaWRXcmFwLCBG
aW5kVUlPcmlnaW5hdG9yOjpGaW5kU3RyaW5nKTsKICAgICB9KTsKIAotICAgIGlmIChjYWxsYmFj
a0lEKQotICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rmlu
ZFN0cmluZ0NhbGxiYWNrKGZvdW5kLCAqY2FsbGJhY2tJRCkpOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZvdW5kKTsKIH0KIAotdm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZ01hdGNoZXMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1h
dGNoQ291bnQpCit2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBT
dHJpbmcmIHN0cmluZywgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zLCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50KQogewogICAgIG1fZmluZE1hdGNoZXMuY2xlYXIoKTsKICAgICBpbnQgaW5k
ZXhGb3JTZWxlY3Rpb247CkBAIC0yOTYsNyArMjk1LDggQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6
ZmluZFN0cmluZ01hdGNoZXMoYwogCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZEZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgbWF0Y2hSZWN0cywgaW5kZXhG
b3JTZWxlY3Rpb24pKTsKIAotICAgIGlmICghKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1Nob3dPdmVy
bGF5IHx8IG9wdGlvbnMgJiBGaW5kT3B0aW9uc1Nob3dGaW5kSW5kaWNhdG9yKSkKKyAgICBpZiAo
IW9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6OlNob3dPdmVybGF5KQorICAgICAgICAmJiAh
b3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBib29sIGZvdW5kID0gIW1fZmluZE1hdGNoZXMuaXNFbXB0eSgpOwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9GaW5kQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMyArNTcsMTMgQEAg
cHVibGljOgogICAgIGV4cGxpY2l0IEZpbmRDb250cm9sbGVyKFdlYlBhZ2UqKTsKICAgICB2aXJ0
dWFsIH5GaW5kQ29udHJvbGxlcigpOwogCi0gICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmlu
ZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBPcHRpb25hbDxDYWxsYmFj
a0lEPik7Ci0gICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0
aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0
IFN0cmluZyYsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4sIHVuc2lnbmVkIG1heE1hdGNoQ291bnQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZmluZFN0cmluZ01h
dGNoZXMoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50MzJfdCBtYXRj
aEluZGV4KTsKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KTsK
ICAgICB2b2lkIGluZGljYXRlRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZv
aWQgaGlkZUZpbmRVSSgpOwotICAgIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmlu
ZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGNvdW50
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKICAgICB1aW50MzJfdCByZXBsYWNlTWF0Y2hlcyhjb25zdCBW
ZWN0b3I8dWludDMyX3Q+JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRU
ZXh0LCBib29sIHNlbGVjdGlvbk9ubHkpOwogICAgIAogICAgIHZvaWQgaGlkZUZpbmRJbmRpY2F0
b3IoKTsKQEAgLTg4LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0ZUZpbmRJbmRp
Y2F0b3IoV2ViQ29yZTo6RnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3Zlcmxh
eSwgYm9vbCBzaG91bGRBbmltYXRlID0gdHJ1ZSk7CiAKICAgICBlbnVtIGNsYXNzIEZpbmRVSU9y
aWdpbmF0b3IgOiB1aW50OF90IHsgRmluZFN0cmluZywgRmluZFN0cmluZ01hdGNoZXMgfTsKLSAg
ICB2b2lkIHVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChib29sIGZvdW5kLCBjb25zdCBTdHJp
bmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgV2ViQ29yZTo6RGlkV3Jh
cCwgRmluZFVJT3JpZ2luYXRvcik7CisgICAgdm9pZCB1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3Jv
bGwoYm9vbCBmb3VuZCwgY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5z
aWduZWQgbWF4TWF0Y2hDb3VudCwgV2ViQ29yZTo6RGlkV3JhcCwgRmluZFVJT3JpZ2luYXRvcik7
CiAKICAgICB2b2lkIHdpbGxGaW5kU3RyaW5nKCk7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKCk7
CkBAIC0xMTYsNiArMTE2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotV2ViQ29yZTo6Rmlu
ZE9wdGlvbnMgY29yZShGaW5kT3B0aW9ucyk7CitXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlKE9w
dGlvblNldDxGaW5kT3B0aW9ucz4pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAy
NjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDE4NiwxMiArNDE4NiwxMiBAQCB2b2lkIFdlYlBhZ2U6OnNldEFj
dGl2ZU9wZW5QYW5lbFJlc3VsdExpCiAgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ciA9IFdURk1vdmUob3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpOwogfQogCi1ib29sIFdlYlBhZ2U6
OmZpbmRTdHJpbmdGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRP
cHRpb25zIG9wdGlvbnMpCitib29sIFdlYlBhZ2U6OmZpbmRTdHJpbmdGcm9tSW5qZWN0ZWRCdW5k
bGUoY29uc3QgU3RyaW5nJiB0YXJnZXQsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucykK
IHsKICAgICByZXR1cm4gbV9wYWdlLT5maW5kU3RyaW5nKHRhcmdldCwgY29yZShvcHRpb25zKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZmluZFN0cmluZ01hdGNoZXNGcm9tSW5qZWN0ZWRCdW5kbGUo
Y29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCit2b2lkIFdlYlBhZ2U6
OmZpbmRTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgdGFyZ2V0
LCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMpCiB7CiAgICAgZmluZENvbnRyb2xsZXIo
KS5maW5kU3RyaW5nTWF0Y2hlcyh0YXJnZXQsIG9wdGlvbnMsIDApOwogfQpAQCAtNDIwMSwxNCAr
NDIwMSwxNCBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTdHJpbmdNYXRjaGVzRnJvbUluCiAgICAg
ZmluZENvbnRyb2xsZXIoKS5yZXBsYWNlTWF0Y2hlcyhtYXRjaEluZGljZXMsIHJlcGxhY2VtZW50
VGV4dCwgc2VsZWN0aW9uT25seSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZmluZFN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZywgdWludDMyX3Qgb3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hDb3Vu
dCwgT3B0aW9uYWw8Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZmluZFN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25z
LCB1aW50MzJfdCBtYXhNYXRjaENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGZpbmRDb250cm9sbGVyKCkuZmluZFN0cmluZyhz
dHJpbmcsIHN0YXRpY19jYXN0PEZpbmRPcHRpb25zPihvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCwg
Y2FsbGJhY2tJRCk7CisgICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3RyaW5nKHN0cmluZywgb3B0
aW9ucywgbWF4TWF0Y2hDb3VudCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50
MzJfdCBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KQordm9pZCBXZWJQYWdlOjpmaW5k
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgT3B0aW9uU2V0PEZpbmRPcHRpb25z
PiBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KQogewotICAgIGZpbmRDb250cm9sbGVy
KCkuZmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBzdGF0aWNfY2FzdDxGaW5kT3B0aW9ucz4ob3B0
aW9ucyksIG1heE1hdGNoQ291bnQpOworICAgIGZpbmRDb250cm9sbGVyKCkuZmluZFN0cmluZ01h
dGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KTsKIH0KIAogdm9pZCBXZWJQYWdl
OjpnZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQpAQCAtNDIzMSw5ICs0
MjMxLDkgQEAgdm9pZCBXZWJQYWdlOjpoaWRlRmluZFVJKCkKICAgICBmaW5kQ29udHJvbGxlcigp
LmhpZGVGaW5kVUkoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpjb3VudFN0cmluZ01hdGNoZXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291
bnQpCit2b2lkIFdlYlBhZ2U6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmlu
ZywgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50
KQogewotICAgIGZpbmRDb250cm9sbGVyKCkuY291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgc3Rh
dGljX2Nhc3Q8RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBmaW5k
Q29udHJvbGxlcigpLmNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNo
Q291bnQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VNYXRjaGVzKGNvbnN0IFZlY3Rvcjx1
aW50MzJfdD4mIG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQsIGJv
b2wgc2VsZWN0aW9uT25seSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjY0MDE2KQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNzcsNyArMjc3LDcgQEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOwogY2xh
c3MgV2ViV2hlZWxFdmVudDsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogCi1l
bnVtIEZpbmRPcHRpb25zIDogdWludDE2X3Q7CitlbnVtIGNsYXNzIEZpbmRPcHRpb25zIDogdWlu
dDE2X3Q7CiBlbnVtIGNsYXNzIERyYWdDb250cm9sbGVyQWN0aW9uIDogdWludDhfdDsKIGVudW0g
Y2xhc3MgU3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlIDogdWludDhfdDsKIApAQCAtNDcxLDgg
KzQ3MSw4IEBAIHB1YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50
JiBpbmplY3RlZEJ1bmRsZUZ1bGxTY3JlZW5DbGllbnQoKSB7IHJldHVybiBtX2Z1bGxTY3JlZW5D
bGllbnQ7IH0KICNlbmRpZgogCi0gICAgYm9vbCBmaW5kU3RyaW5nRnJvbUluamVjdGVkQnVuZGxl
KGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKLSAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVz
RnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKKyAgICBib29s
IGZpbmRTdHJpbmdGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZp
bmRPcHRpb25zPik7CisgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRs
ZShjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+KTsKICAgICB2b2lkIHJlcGxh
Y2VTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4m
IG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQsIGJvb2wgc2VsZWN0
aW9uT25seSk7CiAKICAgICBXZWJGcmFtZSYgbWFpbldlYkZyYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9tYWluRnJhbWU7IH0KQEAgLTE1ODMsMTMgKzE1ODMsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlYXBwbHlFZGl0Q29tbWFuZChXZWJVbmRvU3RlcElEIGNvbW1hbmRJRCk7CiAgICAgdm9pZCBk
aWRSZW1vdmVFZGl0Q29tbWFuZChXZWJVbmRvU3RlcElEIGNvbW1hbmRJRCk7CiAKLSAgICB2b2lk
IGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVpbnQzMl90
IG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+KTsKLSAgICB2b2lkIGZpbmRTdHJp
bmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJfdCBt
YXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgT3B0aW9u
U2V0PEZpbmRPcHRpb25zPiwgdWludDMyX3QgbWF4TWF0Y2hDb3VudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJp
bmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1aW50MzJfdCBtYXhNYXRjaENvdW50KTsKICAg
ICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZv
aWQgc2VsZWN0RmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgaW5kaWNh
dGVGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBoaWRlRmluZFVJKCk7
Ci0gICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgZmlu
ZE9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgY291bnRTdHJpbmdN
YXRjaGVzKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4sIHVpbnQzMl90IG1h
eE1hdGNoQ291bnQpOwogICAgIHZvaWQgcmVwbGFjZU1hdGNoZXMoY29uc3QgVmVjdG9yPHVpbnQz
Ml90PiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBz
ZWxlY3Rpb25Pbmx5LCBDYWxsYmFja0lEKTsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjk2
LDEzICsyOTYsMTMgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgog
ICAgIFBvc3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2VOYW1lLCBXZWJLaXQ6
OlVzZXJEYXRhIG1lc3NhZ2VCb2R5KQogCiAgICAgIyBGaW5kLgotICAgIEZpbmRTdHJpbmcoU3Ry
aW5nIHN0cmluZywgdWludDMyX3QgZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQs
IE9wdGlvbmFsPFdlYktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRCkKLSAgICBGaW5kU3RyaW5n
TWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCkKKyAgICBGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIE9wdGlvblNldDxXZWJL
aXQ6OkZpbmRPcHRpb25zPiBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgLT4g
KGJvb2wgZm91bmQpIEFzeW5jCisgICAgRmluZFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywg
T3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhN
YXRjaENvdW50KQogICAgIEdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgp
CiAgICAgU2VsZWN0RmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCiAgICAgSW5kaWNhdGVG
aW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkKICAgICBIaWRlRmluZFVJKCkKLSAgICBDb3Vu
dFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywgdWludDMyX3QgZmluZE9wdGlvbnMsIHVuc2ln
bmVkIG1heE1hdGNoQ291bnQpCisgICAgQ291bnRTdHJpbmdNYXRjaGVzKFN0cmluZyBzdHJpbmcs
IE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCkKICAgICBSZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+IG1hdGNoSW5k
aWNlcywgU3RyaW5nIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBXZWJLaXQ6
OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICAKICAgICBBZGRNSU1FVHlwZVdpdGhDdXN0b21D
b250ZW50UHJvdmlkZXIoU3RyaW5nIG1pbWVUeXBlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403739</attachid>
            <date>2020-07-07 16:06:26 -0700</date>
            <delta_ts>2020-07-07 17:29:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214063-20200707170626.patch</filename>
            <type>text/plain</type>
            <size>30914</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwNDUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEZp
bmRPcHRpb25zIElQQyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKwor
ICAgICAgICBVc2UgY2FsbFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgR2VuZXJpY0NhbGxiYWNr
LgorICAgICAgICBVc2UgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBpbnN0ZWFkIG9mIEZpbmRPcHRp
b25zIG9yIHVpbnQzMl90LgorICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRv
RmluZE9wdGlvbnMpOgorICAgICAgICAqIFNoYXJlZC9XZWJGaW5kT3B0aW9ucy5oOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKHRvRmluZE9wdGlvbnMpOgorICAgICAgICAoLVtXS1dlYlZpZXcgZmluZFN0
cmluZzp3aXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlu
ZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nQ2FsbGJhY2sp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpGaW5kQ29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdlYktp
dDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbCk6CisgICAgICAg
IChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
RmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNy0wNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFsbG93IGFkZGl0aW9uYWwgSU9LaXQg
Y2xhc3NlcyBmb3IgQXBwbGUgU2lsaWNvbgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNiArNjYyLDcgQEAg
ZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3Rh
dGVDaGFuZ2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAg
J1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5o
IiddLAorICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRpb25zLmgi
J10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUnOiBbJyJHZXN0dXJl
VHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBbJyJHZXN0dXJlVHlw
ZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5
ZXJIb3N0aW5nQ29udGV4dC5oIiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRmlu
ZE9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJGaW5kT3B0
aW9ucy5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJGaW5k
T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxOSArMjUsNDEgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotZW51bSBGaW5kT3B0aW9ucyA6IHVpbnQxNl90IHsKLSAgICBGaW5kT3B0aW9uc0Nhc2VJbnNl
bnNpdGl2ZSA9IDEgPDwgMCwKLSAgICBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA9IDEgPDwgMSwK
LSAgICBGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0ID0gMSA8PCAyLAot
ICAgIEZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAzLAotICAgIEZpbmRPcHRpb25zV3JhcEFy
b3VuZCA9IDEgPDwgNCwKLSAgICBGaW5kT3B0aW9uc1Nob3dPdmVybGF5ID0gMSA8PCA1LAotICAg
IEZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgPSAxIDw8IDYsCi0gICAgRmluZE9wdGlvbnNT
aG93SGlnaGxpZ2h0ID0gMSA8PCA3LAotICAgIEZpbmRPcHRpb25zRGV0ZXJtaW5lTWF0Y2hJbmRl
eCA9IDEgPDwgOCwKLSAgICBGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UgPSAxIDw8IDksCitlbnVt
IGNsYXNzIEZpbmRPcHRpb25zIDogdWludDE2X3QgeworICAgIENhc2VJbnNlbnNpdGl2ZSA9IDEg
PDwgMCwKKyAgICBBdFdvcmRTdGFydHMgPSAxIDw8IDEsCisgICAgVHJlYXRNZWRpYWxDYXBpdGFs
QXNXb3JkU3RhcnQgPSAxIDw8IDIsCisgICAgQmFja3dhcmRzID0gMSA8PCAzLAorICAgIFdyYXBB
cm91bmQgPSAxIDw8IDQsCisgICAgU2hvd092ZXJsYXkgPSAxIDw8IDUsCisgICAgU2hvd0ZpbmRJ
bmRpY2F0b3IgPSAxIDw8IDYsCisgICAgU2hvd0hpZ2hsaWdodCA9IDEgPDwgNywKKyAgICBEZXRl
cm1pbmVNYXRjaEluZGV4ID0gMSA8PCA4LAorICAgIE5vSW5kZXhDaGFuZ2UgPSAxIDw8IDksCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpGaW5kT3B0aW9ucz4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnMsCisgICAgICAg
IFdlYktpdDo6RmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSwKKyAgICAgICAgV2ViS2l0OjpG
aW5kT3B0aW9uczo6QXRXb3JkU3RhcnRzLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpU
cmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCwKKyAgICAgICAgV2ViS2l0OjpGaW5kT3B0aW9u
czo6QmFja3dhcmRzLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpXcmFwQXJvdW5kLAor
ICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93T3ZlcmxheSwKKyAgICAgICAgV2ViS2l0
OjpGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IsCisgICAgICAgIFdlYktpdDo6RmluZE9w
dGlvbnM6OlNob3dIaWdobGlnaHQsCisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6OkRldGVy
bWluZU1hdGNoSW5kZXgsCisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6Ok5vSW5kZXhDaGFu
Z2UKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMjY0MDE2KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc1MywyOCArNzUzLDI4IEBAIGlubGluZSBXS0NvbnRleHRNZW51SXRlbVR5cGUgdG9B
UEkoV2ViQ28KICAgICB9CiB9CiAKLWlubGluZSBGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdL
RmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK2lubGluZSBPcHRpb25TZXQ8RmluZE9wdGlvbnM+
IHRvRmluZE9wdGlvbnMoV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25zKQogewotICAgIHVuc2ln
bmVkIGZpbmRPcHRpb25zID0gMDsKKyAgICBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IGZpbmRPcHRp
b25zOwogCiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNp
dGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7
CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChGaW5kT3B0aW9uczo6Q2FzZUluc2Vuc2l0aXZlKTsK
ICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zQXRXb3JkU3RhcnRzKQotICAg
ICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAgZmlu
ZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpBdFdvcmRTdGFydHMpOwogICAgIGlmICh3a0ZpbmRP
cHRpb25zICYga1dLRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkKLSAg
ICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRT
dGFydDsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpUcmVhdE1lZGlhbENh
cGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9u
c0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNCYWNrd2FyZHM7
CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChGaW5kT3B0aW9uczo6QmFja3dhcmRzKTsKICAgICBp
ZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zV3JhcEFyb3VuZCkKLSAgICAgICAgZmlu
ZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5h
ZGQoRmluZE9wdGlvbnM6OldyYXBBcm91bmQpOwogICAgIGlmICh3a0ZpbmRPcHRpb25zICYga1dL
RmluZE9wdGlvbnNTaG93T3ZlcmxheSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlv
bnNTaG93T3ZlcmxheTsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpTaG93
T3ZlcmxheSk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9uc1Nob3dGaW5k
SW5kaWNhdG9yKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc1Nob3dGaW5kSW5k
aWNhdG9yOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoRmluZE9wdGlvbnM6OlNob3dGaW5kSW5k
aWNhdG9yKTsKICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zU2hvd0hpZ2hs
aWdodCkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0Owor
ICAgICAgICBmaW5kT3B0aW9ucy5hZGQoRmluZE9wdGlvbnM6OlNob3dIaWdobGlnaHQpOwogCi0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEZpbmRPcHRpb25zPihmaW5kT3B0aW9ucyk7CisgICAgcmV0
dXJuIGZpbmRPcHRpb25zOwogfQogCiBpbmxpbmUgV0tGcmFtZU5hdmlnYXRpb25UeXBlIHRvQVBJ
KFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMjcsNyArNDAy
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwbHVnaW5ab29tRmFjdG9yRGlkQ2gKICAgICBtX3Bs
dWdpblpvb21GYWN0b3IgPSBwbHVnaW5ab29tRmFjdG9yOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0
cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4g
b3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKICAgICBpZiAoc3RyaW5nLmlzRW1w
dHkoKSkgewogICAgICAgICBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIFZlY3RvcjxWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4+ICgpLCAwKTsKQEAgLTQwMzcsMjIgKzQwMzcsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBGdW5jdGlv
bjx2b2lkIChib29sLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQor
dm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlv
blNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIE9wdGlv
bmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNrSUQ7Ci0gICAgaWYgKGNhbGxiYWNrRnVuY3Rpb24pCi0g
ICAgICAgIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6ZmluZFN0cmluZyJfcykpOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlu
ZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQpKTsKLX0K
LQotdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmdDYWxsYmFjayhib29sIGZvdW5kLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCi17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8Qm9vbENhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVl
KGZvdW5kKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRT
dHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChp
bnQzMl90IG1hdGNoSW5kZXgpCkBAIC00MDc1LDcgKzQwNjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGlkZUZpbmRVSSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlkZUZpbmRVSSgp
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJp
bmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkK
K3ZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjQwMTYp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA5OCwyMSArMTA5OCwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbHVnaW5ab29tRmFj
dG9yRGlkQ2hhbmdlKGRvdWJsZSk7CiAKICAgICAvLyBGaW5kLgotICAgIHZvaWQgZmluZFN0cmlu
Zyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgRnVu
Y3Rpb248dm9pZCAoYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgPSBudWxscHRyKTsKLSAg
ICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwg
T3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiA9IFtdKGJvb2wpIHsgfSk7CisgICAgdm9pZCBmaW5kU3Ry
aW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3Qg
bWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4
KTsKICAgICB2b2lkIGluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAg
dm9pZCBkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhp
ZGVGaW5kVUkoKTsKLSAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBjb3VudFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQg
bWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCByZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+
JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxl
Y3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAgICAgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMy
X3QgbWF0Y2hDb3VudCk7CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEYXRhJiwgdWludDY0X3QgLyogV2ViQ29yZTo6VGV4dEluZGljYXRvcldp
bmRvd0xpZmV0aW1lICovIGxpZmV0aW1lID0gMCAvKiBQZXJtYW5lbnQgKi8pOwogICAgIHZvaWQg
c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKICAgICB2b2lkIGNsZWFy
VGV4dEluZGljYXRvcigpOwogCi0gICAgdm9pZCBmaW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBmb3Vu
ZCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMy
X3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKTsKICAgICB2b2lkIGRpZEZhaWxUb0Zp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYgbWF0
Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDYgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRm
RGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgTm93UGxheWluZ0luZm9D
YWxsYmFjayhib29sIGFjdGl2ZSwgYm9vbCByZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRp
b24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUsIHVp
bnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCi0gICAgRmluZFN0cmluZ0NhbGxiYWNrKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSBz
Y2FsZUZhY3RvcikKICAgICBQbHVnaW5TY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgem9vbUZh
Y3RvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEyNCwxOCArMTEyNCwxOCBA
QCAtIChDR0Zsb2F0KXBhZ2Vab29tCiAgICAgcmV0dXJuIF9wYWdlLT5wYWdlWm9vbUZhY3Rvcigp
OwogfQogCi1pbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdLRmluZENv
bmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCitpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6Rmlu
ZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlv
bikKIHsKLSAgICB1bnNpZ25lZCBmaW5kT3B0aW9ucyA9IDA7CisgICAgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zOwogCiAgICAgaWYgKCFjb25maWd1cmF0aW9uLmNh
c2VTZW5zaXRpdmUpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnND
YXNlSW5zZW5zaXRpdmU7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRp
b25zOjpDYXNlSW5zZW5zaXRpdmUpOwogICAgIGlmIChjb25maWd1cmF0aW9uLmJhY2t3YXJkcykK
LSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKKyAg
ICAgICAgZmluZE9wdGlvbnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7CiAg
ICAgaWYgKGNvbmZpZ3VyYXRpb24ud3JhcHMpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktp
dDo6RmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2ViS2l0
OjpGaW5kT3B0aW9uczo6V3JhcEFyb3VuZCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
S2l0OjpGaW5kT3B0aW9ucz4oZmluZE9wdGlvbnMpOworICAgIHJldHVybiBmaW5kT3B0aW9uczsK
IH0KIAogLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoQ29uZmlndXJh
dGlvbjooV0tGaW5kQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLRmluZFJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgpAQCAt
MTE0NSw4ICsxMTQ1LDggQEAgLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3
aQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3RyaW5n
LCB0b0ZpbmRPcHRpb25zKGNvbmZpZ3VyYXRpb24pLCAxLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgewotICAgICAgICBoYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2lu
aXRXaXRoTWF0Y2hGb3VuZDooZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lICYmIGZvdW5kKV0gYXV0b3JlbGVhc2VdKTsKKyAgICBfcGFnZS0+ZmluZFN0cmluZyhzdHJp
bmcsIHRvRmluZE9wdGlvbnMoY29uZmlndXJhdGlvbiksIDEsIFtoYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBmb3VuZCkgeworICAgICAgICBoYW5kbGVyKFtb
W1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpmb3VuZF0gYXV0b3JlbGVh
c2VdKTsKICAgICB9KTsKIH0KIApAQCAtMjU2OSwzMiArMjU2OSwzMiBAQCAtICh2b2lkKV9zZXRG
aW5kRGVsZWdhdGU6KGlkPF9XS0ZpbmREZWxlCiAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5k
Q2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuc2V0RGVsZWdhdGUoZmluZERlbGVnYXRlKTsK
IH0KIAotc3RhdGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dL
RmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9u
cykKIHsKLSAgICB1bnNpZ25lZCBmaW5kT3B0aW9ucyA9IDA7CisgICAgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zOwogCiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBf
V0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2Vi
S2l0OjpGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRk
KFdlYktpdDo6RmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKHdrRmluZE9w
dGlvbnMgJiBfV0tGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgZmluZE9wdGlvbnMg
fD0gV2ViS2l0OjpGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAgZmluZE9wdGlvbnMu
YWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkF0V29yZFN0YXJ0cyk7CiAgICAgaWYgKHdrRmluZE9w
dGlvbnMgJiBfV0tGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQotICAg
ICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFs
QXNXb3JkU3RhcnQ7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25z
OjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0
OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKFdlYktpdDo6
RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5k
T3B0aW9uc1dyYXBBcm91bmQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9w
dGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0
aW9uczo6V3JhcEFyb3VuZCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9u
c1Nob3dPdmVybGF5KQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25z
U2hvd092ZXJsYXk7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25z
OjpTaG93T3ZlcmxheSk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc1No
b3dGaW5kSW5kaWNhdG9yKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRp
b25zU2hvd0ZpbmRJbmRpY2F0b3I7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZp
bmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcik7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBf
V0tGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktp
dDo6RmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0OworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2Vi
S2l0OjpGaW5kT3B0aW9uczo6U2hvd0hpZ2hsaWdodCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdl
YktpdDo6RmluZE9wdGlvbnNOb0luZGV4Q2hhbmdlOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQo
V2ViS2l0OjpGaW5kT3B0aW9uczo6Tm9JbmRleENoYW5nZSk7CiAgICAgaWYgKHdrRmluZE9wdGlv
bnMgJiBfV0tGaW5kT3B0aW9uc0RldGVybWluZU1hdGNoSW5kZXgpCi0gICAgICAgIGZpbmRPcHRp
b25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNEZXRlcm1pbmVNYXRjaEluZGV4OworICAgICAgICBm
aW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6RGV0ZXJtaW5lTWF0Y2hJbmRleCk7
CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4oZmluZE9wdGlv
bnMpOworICAgIHJldHVybiBmaW5kT3B0aW9uczsKIH0KIAogLSAodm9pZClfY291bnRTdHJpbmdN
YXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25z
IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0JKHJldmlzaW9uIDI2NDAxNikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTIwOCwyMSArMjA4LDIxIEBAIC0gKHZvaWQpZmluZE1hdGNoZXNGb3JT
dHJpbmc6KE5TU3RyaW5nICoKICAgICAvLyBwcm9wb3J0aW9uYWwgdG8gZG9jdW1lbnQgbGVuZ3Ro
LgogICAgIG1heFJlc3VsdHMgPSBzdGQ6Om1pbihtYXhSZXN1bHRzLCBtYXhpbXVtRmluZE1hdGNo
ZXMpOwogCi0gICAgdW5zaWduZWQga2l0RmluZE9wdGlvbnMgPSAwOworICAgIE9wdGlvblNldDxG
aW5kT3B0aW9ucz4ga2l0RmluZE9wdGlvbnM7CiAKICAgICBpZiAoZmluZE9wdGlvbnMgJiBOU1Rl
eHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zQmFja3dhcmRzKQotICAgICAg
ICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQmFja3dhcmRzOworICAgICAg
ICBraXRGaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkcyk7CiAgICAg
aWYgKGZpbmRPcHRpb25zICYgTlNUZXh0RmluZGVyQXN5bmNocm9ub3VzRG9jdW1lbnRGaW5kT3B0
aW9uc1dyYXApCi0gICAgICAgIGtpdEZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNX
cmFwQXJvdW5kOworICAgICAgICBraXRGaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9u
c1dyYXBBcm91bmQpOwogICAgIGlmIChmaW5kT3B0aW9ucyAmIE5TVGV4dEZpbmRlckFzeW5jaHJv
bm91c0RvY3VtZW50RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCi0gICAgICAgIGtpdEZpbmRP
cHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIGtp
dEZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlKTsKICAg
ICBpZiAoZmluZE9wdGlvbnMgJiBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRP
cHRpb25zU3RhcnRzV2l0aCkKLSAgICAgICAga2l0RmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5k
T3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAga2l0RmluZE9wdGlvbnMuYWRkKFdlYktpdDo6
RmluZE9wdGlvbnNBdFdvcmRTdGFydHMpOwogCiAgICAgaWYgKCFfdXNlUGxhdGZvcm1GaW5kVUkp
IHsKLSAgICAgICAga2l0RmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc1Nob3dPdmVy
bGF5OwotICAgICAgICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zU2hvd0Zp
bmRJbmRpY2F0b3I7Ci0gICAgICAgIGtpdEZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlv
bnNEZXRlcm1pbmVNYXRjaEluZGV4OworICAgICAgICBraXRGaW5kT3B0aW9ucy5hZGQoV2ViS2l0
OjpGaW5kT3B0aW9uczo6U2hvd092ZXJsYXkpOworICAgICAgICBraXRGaW5kT3B0aW9ucy5hZGQo
V2ViS2l0OjpGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IpOworICAgICAgICBraXRGaW5k
T3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6RGV0ZXJtaW5lTWF0Y2hJbmRleCk7CiAg
ICAgfQogCiAgICAgUmV0YWluUHRyPE5TUHJvZ3Jlc3M+IHByb2dyZXNzID0gW05TUHJvZ3Jlc3Mg
cHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6MV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyNjQw
MTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDE4ICs1NSwxOCBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZShG
aW5kT3B0aW9ucyBvcHRpb25zKQorV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZShPcHRpb25TZXQ8
RmluZE9wdGlvbnM+IG9wdGlvbnMpCiB7CiAgICAgV2ViQ29yZTo6RmluZE9wdGlvbnMgcmVzdWx0
OwotICAgIGlmIChvcHRpb25zICYgRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCisgICAgaWYg
KG9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSkpCiAgICAgICAg
IHJlc3VsdC5hZGQoV2ViQ29yZTo6Q2FzZUluc2Vuc2l0aXZlKTsKLSAgICBpZiAob3B0aW9ucyAm
IEZpbmRPcHRpb25zQXRXb3JkU3RhcnRzKQorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEZpbmRP
cHRpb25zOjpBdFdvcmRTdGFydHMpKQogICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OkF0V29y
ZFN0YXJ0cyk7Ci0gICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRh
bEFzV29yZFN0YXJ0KQorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEZpbmRPcHRpb25zOjpUcmVh
dE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkpCiAgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
VHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpOwotICAgIGlmIChvcHRpb25zICYgRmluZE9w
dGlvbnNCYWNrd2FyZHMpCisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6OkJh
Y2t3YXJkcykpCiAgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6QmFja3dhcmRzKTsKLSAgICBp
ZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zV3JhcEFyb3VuZCkKKyAgICBpZiAob3B0aW9ucy5jb250
YWlucyhGaW5kT3B0aW9uczo6V3JhcEFyb3VuZCkpCiAgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29y
ZTo6V3JhcEFyb3VuZCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTgwLDcgKzgwLDcgQEAg
RmluZENvbnRyb2xsZXI6On5GaW5kQ29udHJvbGxlcigpCiB7CiB9CiAKLXZvaWQgRmluZENvbnRy
b2xsZXI6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlv
bnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKK3ZvaWQgRmluZENvbnRyb2xsZXI6
OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgT3B0aW9uU2V0PEZpbmRP
cHRpb25zPiBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewogICAgIGlmIChtYXhN
YXRjaENvdW50ID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKICAgICAg
ICAgLS1tYXhNYXRjaENvdW50OwpAQCAtMTMyLDcgKzEzMiw3IEBAIHN0YXRpYyBGcmFtZSogZnJh
bWVXaXRoU2VsZWN0aW9uKFBhZ2UqIHAKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBGaW5kQ29u
dHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50
LCBEaWRXcmFwIGRpZFdyYXAsIEZpbmRVSU9yaWdpbmF0b3Igb3JpZ2luYXRvcikKK3ZvaWQgRmlu
ZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChib29sIGZvdW5kLCBjb25z
dCBTdHJpbmcmIHN0cmluZywgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zLCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50LCBEaWRXcmFwIGRpZFdyYXAsIEZpbmRVSU9yaWdpbmF0b3Igb3JpZ2lu
YXRvcikKIHsKICAgICBGcmFtZSogc2VsZWN0ZWRGcmFtZSA9IGZyYW1lV2l0aFNlbGVjdGlvbiht
X3dlYlBhZ2UtPmNvcmVQYWdlKCkpOwogICAgIApAQCAtMTUzLDkgKzE1Myw5IEBAIHZvaWQgRmlu
ZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGEKIAogICAgICAgICBtX3dlYlBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFRvRmluZFN0cmluZyhzdHJpbmcpKTsK
ICAgICB9IGVsc2UgewotICAgICAgICBzaG91bGRTaG93T3ZlcmxheSA9IG9wdGlvbnMgJiBGaW5k
T3B0aW9uc1Nob3dPdmVybGF5OwotICAgICAgICBib29sIHNob3VsZFNob3dIaWdobGlnaHQgPSBv
cHRpb25zICYgRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0OwotICAgICAgICBib29sIHNob3VsZERl
dGVybWluZU1hdGNoSW5kZXggPSBvcHRpb25zICYgRmluZE9wdGlvbnNEZXRlcm1pbmVNYXRjaElu
ZGV4OworICAgICAgICBzaG91bGRTaG93T3ZlcmxheSA9IG9wdGlvbnMuY29udGFpbnMoRmluZE9w
dGlvbnM6OlNob3dPdmVybGF5KTsKKyAgICAgICAgYm9vbCBzaG91bGRTaG93SGlnaGxpZ2h0ID0g
b3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6U2hvd0hpZ2hsaWdodCk7CisgICAgICAgIGJv
b2wgc2hvdWxkRGV0ZXJtaW5lTWF0Y2hJbmRleCA9IG9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlv
bnM6OkRldGVybWluZU1hdGNoSW5kZXgpOwogICAgICAgICB1bnNpZ25lZCBtYXRjaENvdW50ID0g
MTsKIAogICAgICAgICBpZiAoc2hvdWxkRGV0ZXJtaW5lTWF0Y2hJbmRleCkgewpAQCAtMjIxLDEx
ICsyMjEsMTEgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYQogICAg
ICAgICBtX2ZpbmRQYWdlT3ZlcmxheS0+c2V0TmVlZHNEaXNwbGF5KCk7CiAgICAgfQogICAgIAot
ICAgIGlmIChmb3VuZCAmJiAoIShvcHRpb25zICYgRmluZE9wdGlvbnNTaG93RmluZEluZGljYXRv
cikgfHwgIXNlbGVjdGVkRnJhbWUgfHwgIXVwZGF0ZUZpbmRJbmRpY2F0b3IoKnNlbGVjdGVkRnJh
bWUsIHNob3VsZFNob3dPdmVybGF5KSkpCisgICAgaWYgKGZvdW5kICYmICghb3B0aW9ucy5jb250
YWlucyhGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IpIHx8ICFzZWxlY3RlZEZyYW1lIHx8
ICF1cGRhdGVGaW5kSW5kaWNhdG9yKCpzZWxlY3RlZEZyYW1lLCBzaG91bGRTaG93T3ZlcmxheSkp
KQogICAgICAgICBoaWRlRmluZEluZGljYXRvcigpOwogfQogCi12b2lkIEZpbmRDb250cm9sbGVy
OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50LCBPcHRpb25hbDxDYWxsYmFja0lEPiBjYWxsYmFja0lEKQor
dm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgT3B0
aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1
dG8qIHBsdWdpblZpZXcgPSBXZWJQYWdlOjpwbHVnaW5WaWV3Rm9yRnJhbWUobV93ZWJQYWdlLT5t
YWluRnJhbWUoKSk7CiAKQEAgLTI2Nyw5ICsyNjcsOSBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpm
aW5kU3RyaW5nKGNvbnN0IFN0CiAgICAgICAgIGRpZEZpbmRTdHJpbmcoKTsKIAogICAgICAgICBp
ZiAoIWZvdW5kU3RyaW5nU3RhcnRzQWZ0ZXJTZWxlY3Rpb24pIHsKLSAgICAgICAgICAgIGlmIChv
cHRpb25zICYgRmluZE9wdGlvbnNCYWNrd2FyZHMpCisgICAgICAgICAgICBpZiAob3B0aW9ucy5j
b250YWlucyhGaW5kT3B0aW9uczo6QmFja3dhcmRzKSkKICAgICAgICAgICAgICAgICBtX2ZvdW5k
U3RyaW5nTWF0Y2hJbmRleC0tOwotICAgICAgICAgICAgZWxzZSBpZiAoIShvcHRpb25zICYgRmlu
ZE9wdGlvbnNOb0luZGV4Q2hhbmdlKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCFvcHRpb25zLmNv
bnRhaW5zKEZpbmRPcHRpb25zOjpOb0luZGV4Q2hhbmdlKSkKICAgICAgICAgICAgICAgICBtX2Zv
dW5kU3RyaW5nTWF0Y2hJbmRleCsrOwogICAgICAgICB9CiAgICAgfQpAQCAtMjc5LDExICsyNzks
MTAgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdAogICAgICAgICBw
cm90ZWN0ZWRXZWJQYWdlLT5maW5kQ29udHJvbGxlcigpLnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNj
cm9sbChmb3VuZCwgc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50LCBkaWRXcmFwLCBGaW5k
VUlPcmlnaW5hdG9yOjpGaW5kU3RyaW5nKTsKICAgICB9KTsKIAotICAgIGlmIChjYWxsYmFja0lE
KQotICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFN0
cmluZ0NhbGxiYWNrKGZvdW5kLCAqY2FsbGJhY2tJRCkpOworICAgIGNvbXBsZXRpb25IYW5kbGVy
KGZvdW5kKTsKIH0KIAotdm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZ01hdGNoZXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpCit2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJp
bmcmIHN0cmluZywgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zLCB1bnNpZ25lZCBtYXhN
YXRjaENvdW50KQogewogICAgIG1fZmluZE1hdGNoZXMuY2xlYXIoKTsKICAgICBpbnQgaW5kZXhG
b3JTZWxlY3Rpb247CkBAIC0yOTYsNyArMjk1LDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6Zmlu
ZFN0cmluZ01hdGNoZXMoYwogCiAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZEZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgbWF0Y2hSZWN0cywgaW5kZXhGb3JT
ZWxlY3Rpb24pKTsKIAotICAgIGlmICghKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1Nob3dPdmVybGF5
IHx8IG9wdGlvbnMgJiBGaW5kT3B0aW9uc1Nob3dGaW5kSW5kaWNhdG9yKSkKKyAgICBpZiAoIW9w
dGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6OlNob3dPdmVybGF5KSAmJiAhb3B0aW9ucy5jb250
YWlucyhGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBib29sIGZvdW5kID0gIW1fZmluZE1hdGNoZXMuaXNFbXB0eSgpOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCShyZXZp
c2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMyArNTcsMTMgQEAgcHVibGljOgogICAg
IGV4cGxpY2l0IEZpbmRDb250cm9sbGVyKFdlYlBhZ2UqKTsKICAgICB2aXJ0dWFsIH5GaW5kQ29u
dHJvbGxlcigpOwogCi0gICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBPcHRpb25hbDxDYWxsYmFja0lEPik7Ci0gICAg
dm9pZCBmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWdu
ZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIE9w
dGlvblNldDxGaW5kT3B0aW9ucz4sIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZmluZFN0cmluZ01hdGNoZXMoY29uc3Qg
U3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7
CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KTsKICAg
ICB2b2lkIHNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGlu
ZGljYXRlRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgaGlkZUZpbmRV
SSgpOwotICAgIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hl
cyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25lZCBtYXhNYXRj
aENvdW50KTsKICAgICB1aW50MzJfdCByZXBsYWNlTWF0Y2hlcyhjb25zdCBWZWN0b3I8dWludDMy
X3Q+JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNl
bGVjdGlvbk9ubHkpOwogICAgIAogICAgIHZvaWQgaGlkZUZpbmRJbmRpY2F0b3IoKTsKQEAgLTg4
LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBib29sIHVwZGF0ZUZpbmRJbmRpY2F0b3IoV2ViQ29y
ZTo6RnJhbWUmIHNlbGVjdGVkRnJhbWUsIGJvb2wgaXNTaG93aW5nT3ZlcmxheSwgYm9vbCBzaG91
bGRBbmltYXRlID0gdHJ1ZSk7CiAKICAgICBlbnVtIGNsYXNzIEZpbmRVSU9yaWdpbmF0b3IgOiB1
aW50OF90IHsgRmluZFN0cmluZywgRmluZFN0cmluZ01hdGNoZXMgfTsKLSAgICB2b2lkIHVwZGF0
ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChib29sIGZvdW5kLCBjb25zdCBTdHJpbmcmLCBGaW5kT3B0
aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgV2ViQ29yZTo6RGlkV3JhcCwgRmluZFVJT3Jp
Z2luYXRvcik7CisgICAgdm9pZCB1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3Vu
ZCwgY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCwgV2ViQ29yZTo6RGlkV3JhcCwgRmluZFVJT3JpZ2luYXRvcik7CiAKICAgICB2b2lk
IHdpbGxGaW5kU3RyaW5nKCk7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKCk7CkBAIC0xMTYsNiAr
MTE2LDYgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotV2ViQ29yZTo6RmluZE9wdGlvbnMgY29y
ZShGaW5kT3B0aW9ucyk7CitXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlKE9wdGlvblNldDxGaW5k
T3B0aW9ucz4pOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyNjQwMTYpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDE4NiwxMiArNDE4NiwxMiBAQCB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2ZU9wZW5QYW5l
bFJlc3VsdExpCiAgICAgbV9hY3RpdmVPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IFdURk1vdmUo
b3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpOwogfQogCi1ib29sIFdlYlBhZ2U6OmZpbmRTdHJpbmdG
cm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlv
bnMpCitib29sIFdlYlBhZ2U6OmZpbmRTdHJpbmdGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3Ry
aW5nJiB0YXJnZXQsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucykKIHsKICAgICByZXR1
cm4gbV9wYWdlLT5maW5kU3RyaW5nKHRhcmdldCwgY29yZShvcHRpb25zKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6ZmluZFN0cmluZ01hdGNoZXNGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5n
JiB0YXJnZXQsIEZpbmRPcHRpb25zIG9wdGlvbnMpCit2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdN
YXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBPcHRpb25TZXQ8
RmluZE9wdGlvbnM+IG9wdGlvbnMpCiB7CiAgICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3RyaW5n
TWF0Y2hlcyh0YXJnZXQsIG9wdGlvbnMsIDApOwogfQpAQCAtNDIwMSwxNCArNDIwMSwxNCBAQCB2
b2lkIFdlYlBhZ2U6OnJlcGxhY2VTdHJpbmdNYXRjaGVzRnJvbUluCiAgICAgZmluZENvbnRyb2xs
ZXIoKS5yZXBsYWNlTWF0Y2hlcyhtYXRjaEluZGljZXMsIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0
aW9uT25seSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZywgdWludDMyX3Qgb3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hDb3VudCwgT3B0aW9uYWw8
Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZywgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zLCB1aW50MzJfdCBt
YXhNYXRjaENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIGZpbmRDb250cm9sbGVyKCkuZmluZFN0cmluZyhzdHJpbmcsIHN0YXRp
Y19jYXN0PEZpbmRPcHRpb25zPihvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCwgY2FsbGJhY2tJRCk7
CisgICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0
Y2hDb3VudCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2U6
OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRpb25z
LCB1aW50MzJfdCBtYXhNYXRjaENvdW50KQordm9pZCBXZWJQYWdlOjpmaW5kU3RyaW5nTWF0Y2hl
cyhjb25zdCBTdHJpbmcmIHN0cmluZywgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zLCB1
aW50MzJfdCBtYXhNYXRjaENvdW50KQogewotICAgIGZpbmRDb250cm9sbGVyKCkuZmluZFN0cmlu
Z01hdGNoZXMoc3RyaW5nLCBzdGF0aWNfY2FzdDxGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1h
dGNoQ291bnQpOworICAgIGZpbmRDb250cm9sbGVyKCkuZmluZFN0cmluZ01hdGNoZXMoc3RyaW5n
LCBvcHRpb25zLCBtYXhNYXRjaENvdW50KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnZXRJbWFnZUZv
ckZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQpAQCAtNDIzMSw5ICs0MjMxLDkgQEAgdm9p
ZCBXZWJQYWdlOjpoaWRlRmluZFVJKCkKICAgICBmaW5kQ29udHJvbGxlcigpLmhpZGVGaW5kVUko
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpCit2b2lkIFdl
YlBhZ2U6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgT3B0aW9uU2V0
PEZpbmRPcHRpb25zPiBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KQogewotICAgIGZp
bmRDb250cm9sbGVyKCkuY291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgc3RhdGljX2Nhc3Q8Rmlu
ZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBmaW5kQ29udHJvbGxlcigp
LmNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VNYXRjaGVzKGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4mIG1h
dGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQsIGJvb2wgc2VsZWN0aW9u
T25seSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNyAr
Mjc3LDcgQEAgY2xhc3MgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOwogY2xhc3MgV2ViV2hlZWxF
dmVudDsKIGNsYXNzIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOwogCi1lbnVtIEZpbmRPcHRp
b25zIDogdWludDE2X3Q7CitlbnVtIGNsYXNzIEZpbmRPcHRpb25zIDogdWludDE2X3Q7CiBlbnVt
IGNsYXNzIERyYWdDb250cm9sbGVyQWN0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgU3ludGhl
dGljRWRpdGluZ0NvbW1hbmRUeXBlIDogdWludDhfdDsKIApAQCAtNDcxLDggKzQ3MSw4IEBAIHB1
YmxpYzoKICAgICBJbmplY3RlZEJ1bmRsZVBhZ2VGdWxsU2NyZWVuQ2xpZW50JiBpbmplY3RlZEJ1
bmRsZUZ1bGxTY3JlZW5DbGllbnQoKSB7IHJldHVybiBtX2Z1bGxTY3JlZW5DbGllbnQ7IH0KICNl
bmRpZgogCi0gICAgYm9vbCBmaW5kU3RyaW5nRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmlu
ZyYsIEZpbmRPcHRpb25zKTsKLSAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVk
QnVuZGxlKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zKTsKKyAgICBib29sIGZpbmRTdHJpbmdG
cm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPik7
CisgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJp
bmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+KTsKICAgICB2b2lkIHJlcGxhY2VTdHJpbmdNYXRj
aGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4mIG1hdGNoSW5kaWNl
cywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQsIGJvb2wgc2VsZWN0aW9uT25seSk7CiAK
ICAgICBXZWJGcmFtZSYgbWFpbldlYkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWU7
IH0KQEAgLTE1ODMsMTMgKzE1ODMsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYXBwbHlFZGl0
Q29tbWFuZChXZWJVbmRvU3RlcElEIGNvbW1hbmRJRCk7CiAgICAgdm9pZCBkaWRSZW1vdmVFZGl0
Q29tbWFuZChXZWJVbmRvU3RlcElEIGNvbW1hbmRJRCk7CiAKLSAgICB2b2lkIGZpbmRTdHJpbmco
Y29uc3QgU3RyaW5nJiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291
bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+KTsKLSAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNv
bnN0IFN0cmluZyYsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50
KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRp
b25zPiwgdWludDMyX3QgbWF4TWF0Y2hDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25T
ZXQ8RmluZE9wdGlvbnM+LCB1aW50MzJfdCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGdldElt
YWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgc2VsZWN0Rmlu
ZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgaW5kaWNhdGVGaW5kTWF0Y2go
dWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBoaWRlRmluZFVJKCk7Ci0gICAgdm9pZCBj
b3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVp
bnQzMl90IG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNvbnN0
IFN0cmluZyYsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4sIHVpbnQzMl90IG1heE1hdGNoQ291bnQp
OwogICAgIHZvaWQgcmVwbGFjZU1hdGNoZXMoY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJ
bmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5
LCBDYWxsYmFja0lEKTsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjk2LDEzICsyOTYsMTMg
QEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogICAgIFBvc3RJbmpl
Y3RlZEJ1bmRsZU1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2VOYW1lLCBXZWJLaXQ6OlVzZXJEYXRhIG1l
c3NhZ2VCb2R5KQogCiAgICAgIyBGaW5kLgotICAgIEZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZywg
dWludDMyX3QgZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPFdl
YktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRCkKLSAgICBGaW5kU3RyaW5nTWF0Y2hlcyhTdHJp
bmcgc3RyaW5nLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkK
KyAgICBGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRp
b25zPiBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgLT4gKGJvb2wgZm91bmQp
IEFzeW5jCisgICAgRmluZFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywgT3B0aW9uU2V0PFdl
YktpdDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQog
ICAgIEdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCiAgICAgU2VsZWN0
RmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCiAgICAgSW5kaWNhdGVGaW5kTWF0Y2godWlu
dDMyX3QgbWF0Y2hJbmRleCkKICAgICBIaWRlRmluZFVJKCkKLSAgICBDb3VudFN0cmluZ01hdGNo
ZXMoU3RyaW5nIHN0cmluZywgdWludDMyX3QgZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpCisgICAgQ291bnRTdHJpbmdNYXRjaGVzKFN0cmluZyBzdHJpbmcsIE9wdGlvblNldDxX
ZWJLaXQ6OkZpbmRPcHRpb25zPiBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkK
ICAgICBSZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+IG1hdGNoSW5kaWNlcywgU3RyaW5n
IHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICAKICAgICBBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlk
ZXIoU3RyaW5nIG1pbWVUeXBlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403745</attachid>
            <date>2020-07-07 17:29:48 -0700</date>
            <delta_ts>2020-07-07 17:45:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214063-20200707182948.patch</filename>
            <type>text/plain</type>
            <size>37588</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwNDUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEZp
bmRPcHRpb25zIElQQyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKwor
ICAgICAgICBVc2UgY2FsbFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgR2VuZXJpY0NhbGxiYWNr
LgorICAgICAgICBVc2UgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBpbnN0ZWFkIG9mIEZpbmRPcHRp
b25zIG9yIHVpbnQzMl90LgorICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRv
RmluZE9wdGlvbnMpOgorICAgICAgICAqIFNoYXJlZC9XZWJGaW5kT3B0aW9ucy5oOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKHRvRmluZE9wdGlvbnMpOgorICAgICAgICAoLVtXS1dlYlZpZXcgZmluZFN0
cmluZzp3aXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlu
ZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nQ2FsbGJhY2sp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpGaW5kQ29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdlYktp
dDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbCk6CisgICAgICAg
IChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
RmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNy0wNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFsbG93IGFkZGl0aW9uYWwgSU9LaXQg
Y2xhc3NlcyBmb3IgQXBwbGUgU2lsaWNvbgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNiArNjYyLDcgQEAg
ZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3Rh
dGVDaGFuZ2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAg
J1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5o
IiddLAorICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRpb25zLmgi
J10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUnOiBbJyJHZXN0dXJl
VHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBbJyJHZXN0dXJlVHlw
ZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5
ZXJIb3N0aW5nQ29udGV4dC5oIiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRmlu
ZE9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJGaW5kT3B0
aW9ucy5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJGaW5k
T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxOSArMjUsNDEgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotZW51bSBGaW5kT3B0aW9ucyA6IHVpbnQxNl90IHsKLSAgICBGaW5kT3B0aW9uc0Nhc2VJbnNl
bnNpdGl2ZSA9IDEgPDwgMCwKLSAgICBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA9IDEgPDwgMSwK
LSAgICBGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0ID0gMSA8PCAyLAot
ICAgIEZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAzLAotICAgIEZpbmRPcHRpb25zV3JhcEFy
b3VuZCA9IDEgPDwgNCwKLSAgICBGaW5kT3B0aW9uc1Nob3dPdmVybGF5ID0gMSA8PCA1LAotICAg
IEZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgPSAxIDw8IDYsCi0gICAgRmluZE9wdGlvbnNT
aG93SGlnaGxpZ2h0ID0gMSA8PCA3LAotICAgIEZpbmRPcHRpb25zRGV0ZXJtaW5lTWF0Y2hJbmRl
eCA9IDEgPDwgOCwKLSAgICBGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UgPSAxIDw8IDksCitlbnVt
IGNsYXNzIEZpbmRPcHRpb25zIDogdWludDE2X3QgeworICAgIENhc2VJbnNlbnNpdGl2ZSA9IDEg
PDwgMCwKKyAgICBBdFdvcmRTdGFydHMgPSAxIDw8IDEsCisgICAgVHJlYXRNZWRpYWxDYXBpdGFs
QXNXb3JkU3RhcnQgPSAxIDw8IDIsCisgICAgQmFja3dhcmRzID0gMSA8PCAzLAorICAgIFdyYXBB
cm91bmQgPSAxIDw8IDQsCisgICAgU2hvd092ZXJsYXkgPSAxIDw8IDUsCisgICAgU2hvd0ZpbmRJ
bmRpY2F0b3IgPSAxIDw8IDYsCisgICAgU2hvd0hpZ2hsaWdodCA9IDEgPDwgNywKKyAgICBEZXRl
cm1pbmVNYXRjaEluZGV4ID0gMSA8PCA4LAorICAgIE5vSW5kZXhDaGFuZ2UgPSAxIDw8IDksCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpGaW5kT3B0aW9ucz4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnMsCisgICAgICAg
IFdlYktpdDo6RmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSwKKyAgICAgICAgV2ViS2l0OjpG
aW5kT3B0aW9uczo6QXRXb3JkU3RhcnRzLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpU
cmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCwKKyAgICAgICAgV2ViS2l0OjpGaW5kT3B0aW9u
czo6QmFja3dhcmRzLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpXcmFwQXJvdW5kLAor
ICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93T3ZlcmxheSwKKyAgICAgICAgV2ViS2l0
OjpGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IsCisgICAgICAgIFdlYktpdDo6RmluZE9w
dGlvbnM6OlNob3dIaWdobGlnaHQsCisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6OkRldGVy
bWluZU1hdGNoSW5kZXgsCisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6Ok5vSW5kZXhDaGFu
Z2UKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMjY0MDE2KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc1MywyOCArNzUzLDI4IEBAIGlubGluZSBXS0NvbnRleHRNZW51SXRlbVR5cGUgdG9B
UEkoV2ViQ28KICAgICB9CiB9CiAKLWlubGluZSBGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdL
RmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK2lubGluZSBPcHRpb25TZXQ8RmluZE9wdGlvbnM+
IHRvRmluZE9wdGlvbnMoV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25zKQogewotICAgIHVuc2ln
bmVkIGZpbmRPcHRpb25zID0gMDsKKyAgICBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IGZpbmRPcHRp
b25zOwogCiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNp
dGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7
CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChGaW5kT3B0aW9uczo6Q2FzZUluc2Vuc2l0aXZlKTsK
ICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zQXRXb3JkU3RhcnRzKQotICAg
ICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAgZmlu
ZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpBdFdvcmRTdGFydHMpOwogICAgIGlmICh3a0ZpbmRP
cHRpb25zICYga1dLRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkKLSAg
ICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRT
dGFydDsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpUcmVhdE1lZGlhbENh
cGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9u
c0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNCYWNrd2FyZHM7
CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChGaW5kT3B0aW9uczo6QmFja3dhcmRzKTsKICAgICBp
ZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zV3JhcEFyb3VuZCkKLSAgICAgICAgZmlu
ZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5h
ZGQoRmluZE9wdGlvbnM6OldyYXBBcm91bmQpOwogICAgIGlmICh3a0ZpbmRPcHRpb25zICYga1dL
RmluZE9wdGlvbnNTaG93T3ZlcmxheSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlv
bnNTaG93T3ZlcmxheTsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpTaG93
T3ZlcmxheSk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9uc1Nob3dGaW5k
SW5kaWNhdG9yKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc1Nob3dGaW5kSW5k
aWNhdG9yOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoRmluZE9wdGlvbnM6OlNob3dGaW5kSW5k
aWNhdG9yKTsKICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zU2hvd0hpZ2hs
aWdodCkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0Owor
ICAgICAgICBmaW5kT3B0aW9ucy5hZGQoRmluZE9wdGlvbnM6OlNob3dIaWdobGlnaHQpOwogCi0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEZpbmRPcHRpb25zPihmaW5kT3B0aW9ucyk7CisgICAgcmV0
dXJuIGZpbmRPcHRpb25zOwogfQogCiBpbmxpbmUgV0tGcmFtZU5hdmlnYXRpb25UeXBlIHRvQVBJ
KFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMjcsNyArNDAy
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwbHVnaW5ab29tRmFjdG9yRGlkQ2gKICAgICBtX3Bs
dWdpblpvb21GYWN0b3IgPSBwbHVnaW5ab29tRmFjdG9yOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0
cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4g
b3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKICAgICBpZiAoc3RyaW5nLmlzRW1w
dHkoKSkgewogICAgICAgICBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIFZlY3RvcjxWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4+ICgpLCAwKTsKQEAgLTQwMzcsMjIgKzQwMzcsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBGdW5jdGlv
bjx2b2lkIChib29sLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQor
dm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlv
blNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIE9wdGlv
bmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNrSUQ7Ci0gICAgaWYgKGNhbGxiYWNrRnVuY3Rpb24pCi0g
ICAgICAgIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6ZmluZFN0cmluZyJfcykpOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlu
ZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQpKTsKLX0K
LQotdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmdDYWxsYmFjayhib29sIGZvdW5kLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCi17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8Qm9vbENhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVl
KGZvdW5kKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRT
dHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChp
bnQzMl90IG1hdGNoSW5kZXgpCkBAIC00MDc1LDcgKzQwNjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGlkZUZpbmRVSSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlkZUZpbmRVSSgp
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJp
bmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkK
K3ZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjQwMTYp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA5OCwyMSArMTA5OCwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbHVnaW5ab29tRmFj
dG9yRGlkQ2hhbmdlKGRvdWJsZSk7CiAKICAgICAvLyBGaW5kLgotICAgIHZvaWQgZmluZFN0cmlu
Zyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgRnVu
Y3Rpb248dm9pZCAoYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgPSBudWxscHRyKTsKLSAg
ICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwg
T3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiA9IFtdKGJvb2wpIHsgfSk7CisgICAgdm9pZCBmaW5kU3Ry
aW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3Qg
bWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4
KTsKICAgICB2b2lkIGluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAg
dm9pZCBkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhp
ZGVGaW5kVUkoKTsKLSAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBjb3VudFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQg
bWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCByZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+
JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxl
Y3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAgICAgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMy
X3QgbWF0Y2hDb3VudCk7CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEYXRhJiwgdWludDY0X3QgLyogV2ViQ29yZTo6VGV4dEluZGljYXRvcldp
bmRvd0xpZmV0aW1lICovIGxpZmV0aW1lID0gMCAvKiBQZXJtYW5lbnQgKi8pOwogICAgIHZvaWQg
c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKICAgICB2b2lkIGNsZWFy
VGV4dEluZGljYXRvcigpOwogCi0gICAgdm9pZCBmaW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBmb3Vu
ZCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMy
X3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKTsKICAgICB2b2lkIGRpZEZhaWxUb0Zp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYgbWF0
Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDYgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRm
RGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgTm93UGxheWluZ0luZm9D
YWxsYmFjayhib29sIGFjdGl2ZSwgYm9vbCByZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRp
b24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUsIHVp
bnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCi0gICAgRmluZFN0cmluZ0NhbGxiYWNrKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSBz
Y2FsZUZhY3RvcikKICAgICBQbHVnaW5TY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgem9vbUZh
Y3RvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEyNCwxOCArMTEyNCwxOCBA
QCAtIChDR0Zsb2F0KXBhZ2Vab29tCiAgICAgcmV0dXJuIF9wYWdlLT5wYWdlWm9vbUZhY3Rvcigp
OwogfQogCi1pbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdLRmluZENv
bmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCitpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6Rmlu
ZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlv
bikKIHsKLSAgICB1bnNpZ25lZCBmaW5kT3B0aW9ucyA9IDA7CisgICAgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zOwogCiAgICAgaWYgKCFjb25maWd1cmF0aW9uLmNh
c2VTZW5zaXRpdmUpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnND
YXNlSW5zZW5zaXRpdmU7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRp
b25zOjpDYXNlSW5zZW5zaXRpdmUpOwogICAgIGlmIChjb25maWd1cmF0aW9uLmJhY2t3YXJkcykK
LSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKKyAg
ICAgICAgZmluZE9wdGlvbnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7CiAg
ICAgaWYgKGNvbmZpZ3VyYXRpb24ud3JhcHMpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktp
dDo6RmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2ViS2l0
OjpGaW5kT3B0aW9uczo6V3JhcEFyb3VuZCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
S2l0OjpGaW5kT3B0aW9ucz4oZmluZE9wdGlvbnMpOworICAgIHJldHVybiBmaW5kT3B0aW9uczsK
IH0KIAogLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoQ29uZmlndXJh
dGlvbjooV0tGaW5kQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLRmluZFJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgpAQCAt
MTE0NSw4ICsxMTQ1LDggQEAgLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3
aQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3RyaW5n
LCB0b0ZpbmRPcHRpb25zKGNvbmZpZ3VyYXRpb24pLCAxLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgewotICAgICAgICBoYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2lu
aXRXaXRoTWF0Y2hGb3VuZDooZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lICYmIGZvdW5kKV0gYXV0b3JlbGVhc2VdKTsKKyAgICBfcGFnZS0+ZmluZFN0cmluZyhzdHJp
bmcsIHRvRmluZE9wdGlvbnMoY29uZmlndXJhdGlvbiksIDEsIFtoYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBmb3VuZCkgeworICAgICAgICBoYW5kbGVyKFtb
W1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpmb3VuZF0gYXV0b3JlbGVh
c2VdKTsKICAgICB9KTsKIH0KIApAQCAtMjU2OSwzMiArMjU2OSwzMiBAQCAtICh2b2lkKV9zZXRG
aW5kRGVsZWdhdGU6KGlkPF9XS0ZpbmREZWxlCiAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5k
Q2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuc2V0RGVsZWdhdGUoZmluZERlbGVnYXRlKTsK
IH0KIAotc3RhdGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dL
RmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9u
cykKIHsKLSAgICB1bnNpZ25lZCBmaW5kT3B0aW9ucyA9IDA7CisgICAgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zOwogCiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBf
V0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2Vi
S2l0OjpGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRk
KFdlYktpdDo6RmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKHdrRmluZE9w
dGlvbnMgJiBfV0tGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgZmluZE9wdGlvbnMg
fD0gV2ViS2l0OjpGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAgZmluZE9wdGlvbnMu
YWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkF0V29yZFN0YXJ0cyk7CiAgICAgaWYgKHdrRmluZE9w
dGlvbnMgJiBfV0tGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQotICAg
ICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFs
QXNXb3JkU3RhcnQ7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25z
OjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0
OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKFdlYktpdDo6
RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5k
T3B0aW9uc1dyYXBBcm91bmQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9w
dGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0
aW9uczo6V3JhcEFyb3VuZCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9u
c1Nob3dPdmVybGF5KQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25z
U2hvd092ZXJsYXk7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25z
OjpTaG93T3ZlcmxheSk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc1No
b3dGaW5kSW5kaWNhdG9yKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRp
b25zU2hvd0ZpbmRJbmRpY2F0b3I7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZp
bmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcik7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBf
V0tGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktp
dDo6RmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0OworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2Vi
S2l0OjpGaW5kT3B0aW9uczo6U2hvd0hpZ2hsaWdodCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdl
YktpdDo6RmluZE9wdGlvbnNOb0luZGV4Q2hhbmdlOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQo
V2ViS2l0OjpGaW5kT3B0aW9uczo6Tm9JbmRleENoYW5nZSk7CiAgICAgaWYgKHdrRmluZE9wdGlv
bnMgJiBfV0tGaW5kT3B0aW9uc0RldGVybWluZU1hdGNoSW5kZXgpCi0gICAgICAgIGZpbmRPcHRp
b25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNEZXRlcm1pbmVNYXRjaEluZGV4OworICAgICAgICBm
aW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6RGV0ZXJtaW5lTWF0Y2hJbmRleCk7
CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4oZmluZE9wdGlv
bnMpOworICAgIHJldHVybiBmaW5kT3B0aW9uczsKIH0KIAogLSAodm9pZClfY291bnRTdHJpbmdN
YXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25z
IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGaW5kQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDcgQEAgdHlw
ZWRlZiBlbnVtIHsKIAogc3RydWN0IF9XZWJLaXRGaW5kQ29udHJvbGxlclByaXZhdGUgewogICAg
IENTdHJpbmcgc2VhcmNoVGV4dDsKLSAgICAvLyBJbnRlcnByZXRlZCBhcyBXZWJLaXQ6OkZpbmRP
cHRpb25zLgotICAgIHVpbnQzMl90IGZpbmRPcHRpb25zOworICAgIE9wdGlvblNldDxGaW5kT3B0
aW9ucz4gZmluZE9wdGlvbnM7CiAgICAgdW5zaWduZWQgbWF4TWF0Y2hDb3VudDsKICAgICBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3OwogfTsKQEAgLTgzLDIyICs4MiwyOSBAQCBzdGF0aWMgZ3VpbnQg
c2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsCiAKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRG
aW5kQ29udHJvbGxlciwgd2Via2l0X2ZpbmRfY29udHJvbGxlciwgR19UWVBFX09CSkVDVCkKIAot
c3RhdGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvV2ViRmluZE9wdGlvbnModWludDMy
X3QgZmluZE9wdGlvbnMpCitzdGF0aWMgaW5saW5lIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gdG9X
ZWJGaW5kT3B0aW9ucyh1aW50MzJfdCBmaW5kT3B0aW9ucykKIHsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4oKGZpbmRPcHRpb25zICYgV0VCS0lUX0ZJTkRfT1BU
SU9OU19DQVNFX0lOU0VOU0lUSVZFID8gRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUgOiAwKQot
ICAgICAgICB8IChmaW5kT3B0aW9ucyAmIFdFQktJVF9GSU5EX09QVElPTlNfQVRfV09SRF9TVEFS
VFMgPyBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA6IDApCi0gICAgICAgIHwgKGZpbmRPcHRpb25z
ICYgV0VCS0lUX0ZJTkRfT1BUSU9OU19UUkVBVF9NRURJQUxfQ0FQSVRBTF9BU19XT1JEX1NUQVJU
ID8gRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCA6IDApCi0gICAgICAg
IHwgKGZpbmRPcHRpb25zICYgV0VCS0lUX0ZJTkRfT1BUSU9OU19CQUNLV0FSRFMgPyBGaW5kT3B0
aW9uc0JhY2t3YXJkcyA6IDApCi0gICAgICAgIHwgKGZpbmRPcHRpb25zICYgV0VCS0lUX0ZJTkRf
T1BUSU9OU19XUkFQX0FST1VORCA/IEZpbmRPcHRpb25zV3JhcEFyb3VuZCA6IDApKTsKLX0KLQot
c3RhdGljIGlubGluZSBXZWJLaXRGaW5kT3B0aW9ucyB0b1dlYktpdEZpbmRPcHRpb25zKHVpbnQz
Ml90IGZpbmRPcHRpb25zKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRGaW5kT3B0
aW9ucz4oKGZpbmRPcHRpb25zICYgRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUgPyBXRUJLSVRf
RklORF9PUFRJT05TX0NBU0VfSU5TRU5TSVRJVkUgOiAwKQotICAgICAgICB8IChmaW5kT3B0aW9u
cyAmIEZpbmRPcHRpb25zQXRXb3JkU3RhcnRzID8gV0VCS0lUX0ZJTkRfT1BUSU9OU19BVF9XT1JE
X1NUQVJUUyA6IDApCi0gICAgICAgIHwgKGZpbmRPcHRpb25zICYgRmluZE9wdGlvbnNUcmVhdE1l
ZGlhbENhcGl0YWxBc1dvcmRTdGFydCA/IFdFQktJVF9GSU5EX09QVElPTlNfVFJFQVRfTUVESUFM
X0NBUElUQUxfQVNfV09SRF9TVEFSVCA6IDApCi0gICAgICAgIHwgKGZpbmRPcHRpb25zICYgRmlu
ZE9wdGlvbnNCYWNrd2FyZHMgPyBXRUJLSVRfRklORF9PUFRJT05TX0JBQ0tXQVJEUyA6IDApCi0g
ICAgICAgIHwgKGZpbmRPcHRpb25zICYgRmluZE9wdGlvbnNXcmFwQXJvdW5kID8gV0VCS0lUX0ZJ
TkRfT1BUSU9OU19XUkFQX0FST1VORCA6IDApKTsKKyAgICBPcHRpb25TZXQ8RmluZE9wdGlvbnM+
IG9wdGlvbnM7CisgICAgaWYgKGZpbmRPcHRpb25zICYgV0VCS0lUX0ZJTkRfT1BUSU9OU19DQVNF
X0lOU0VOU0lUSVZFKQorICAgICAgICBvcHRpb25zLmFkZChGaW5kT3B0aW9uczo6Q2FzZUluc2Vu
c2l0aXZlKTsKKyAgICBpZiAoZmluZE9wdGlvbnMgJiBXRUJLSVRfRklORF9PUFRJT05TX0FUX1dP
UkRfU1RBUlRTKQorICAgICAgICBvcHRpb25zLmFkZChGaW5kT3B0aW9uczo6QXRXb3JkU3RhcnRz
KTsKKyAgICBpZiAoZmluZE9wdGlvbnMgJiBXRUJLSVRfRklORF9PUFRJT05TX1RSRUFUX01FRElB
TF9DQVBJVEFMX0FTX1dPUkRfU1RBUlQpCisgICAgICAgIG9wdGlvbnMuYWRkKEZpbmRPcHRpb25z
OjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CisgICAgaWYgKGZpbmRPcHRpb25zICYg
V0VCS0lUX0ZJTkRfT1BUSU9OU19CQUNLV0FSRFMpCisgICAgICAgIG9wdGlvbnMuYWRkKEZpbmRP
cHRpb25zOjpCYWNrd2FyZHMpOworICAgIGlmIChmaW5kT3B0aW9ucyAmIFdFQktJVF9GSU5EX09Q
VElPTlNfV1JBUF9BUk9VTkQpCisgICAgICAgIG9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpXcmFw
QXJvdW5kKTsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworc3RhdGljIGlubGluZSBXZWJLaXRG
aW5kT3B0aW9ucyB0b1dlYktpdEZpbmRPcHRpb25zKE9wdGlvblNldDxGaW5kT3B0aW9ucz4gZmlu
ZE9wdGlvbnMpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdEZpbmRPcHRpb25zPigo
ZmluZE9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSkgPyBXRUJL
SVRfRklORF9PUFRJT05TX0NBU0VfSU5TRU5TSVRJVkUgOiAwKQorICAgICAgICB8IChmaW5kT3B0
aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6QXRXb3JkU3RhcnRzKSA/IFdFQktJVF9GSU5EX09Q
VElPTlNfQVRfV09SRF9TVEFSVFMgOiAwKQorICAgICAgICB8IChmaW5kT3B0aW9ucy5jb250YWlu
cyhGaW5kT3B0aW9uczo6VHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpID8gV0VCS0lUX0ZJ
TkRfT1BUSU9OU19UUkVBVF9NRURJQUxfQ0FQSVRBTF9BU19XT1JEX1NUQVJUIDogMCkKKyAgICAg
ICAgfCAoZmluZE9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6OkJhY2t3YXJkcykgPyBXRUJL
SVRfRklORF9PUFRJT05TX0JBQ0tXQVJEUyA6IDApCisgICAgICAgIHwgKGZpbmRPcHRpb25zLmNv
bnRhaW5zKEZpbmRPcHRpb25zOjpXcmFwQXJvdW5kKSA/IFdFQktJVF9GSU5EX09QVElPTlNfV1JB
UF9BUk9VTkQgOiAwKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgV2ViUGFnZVByb3h5JiBnZXRQYWdl
KFdlYktpdEZpbmRDb250cm9sbGVyKiBmaW5kQ29udHJvbGxlcikKQEAgLTM2NSwxMSArMzcxLDEx
IEBAIHN0YXRpYyB2b2lkIHdlYktpdEZpbmRDb250cm9sbGVyUGVyZm9ybSgKICAgICBXZWJLaXRG
aW5kQ29udHJvbGxlclByaXZhdGUqIHByaXYgPSBmaW5kQ29udHJvbGxlci0+cHJpdjsKICAgICBp
ZiAob3BlcmF0aW9uID09IENvdW50T3BlcmF0aW9uKSB7CiAgICAgICAgIGdldFBhZ2UoZmluZENv
bnRyb2xsZXIpLmNvdW50U3RyaW5nTWF0Y2hlcyhTdHJpbmc6OmZyb21VVEY4KHByaXYtPnNlYXJj
aFRleHQuZGF0YSgpKSwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlv
bnM+KHByaXYtPmZpbmRPcHRpb25zKSwgcHJpdi0+bWF4TWF0Y2hDb3VudCk7CisgICAgICAgICAg
ICBwcml2LT5maW5kT3B0aW9ucywgcHJpdi0+bWF4TWF0Y2hDb3VudCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICB1aW50MzJfdCBmaW5kT3B0aW9ucyA9IHByaXYtPmZpbmRPcHRpb25z
OworICAgIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gZmluZE9wdGlvbnMgPSBwcml2LT5maW5kT3B0
aW9uczsKICAgICBpZiAob3BlcmF0aW9uID09IEZpbmRPcGVyYXRpb24pCiAgICAgICAgIC8vIFVu
Y29uZGl0aW9uYWxseSBoaWdobGlnaHQgdGV4dCBtYXRjaGVzIHdoZW4gdGhlIHNlYXJjaAogICAg
ICAgICAvLyBzdGFydHMuIFdLMSBBUEkgd2FzIGZvcmNpbmcgY2xpZW50cyB0byBlbmFibGUvZGlz
YWJsZQpAQCAtMzc4LDE1ICszODQsMTUgQEAgc3RhdGljIHZvaWQgd2ViS2l0RmluZENvbnRyb2xs
ZXJQZXJmb3JtKAogICAgICAgICAvLyB1bmNvbmRpdGlvbmFsbHkgc2hvdyBoaWdobGlnaHRzLiBC
b3RoIHNlYXJjaF9uZXh0KCkgYW5kCiAgICAgICAgIC8vIHNlYXJjaF9wcmV2KCkgc2hvdWxkIG5v
dCBlbmFibGUgaGlnaGxpZ2h0aW5nIHRvIGF2b2lkIGFuCiAgICAgICAgIC8vIGV4dHJhIHVubWFy
a0FsbFRleHRNYXRjaGVzKCkgKyBtYXJrQWxsVGV4dE1hdGNoZXMoKQotICAgICAgICBmaW5kT3B0
aW9ucyB8PSBGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQ7CisgICAgICAgIGZpbmRPcHRpb25zLmFk
ZChGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpOwogCi0gICAgZ2V0UGFnZShmaW5kQ29udHJvbGxl
cikuZmluZFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHByaXYtPnNlYXJjaFRleHQuZGF0YSgpKSwg
c3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4oZmluZE9wdGlvbnMpLCBwcml2LT5tYXhN
YXRjaENvdW50KTsKKyAgICBnZXRQYWdlKGZpbmRDb250cm9sbGVyKS5maW5kU3RyaW5nKFN0cmlu
Zzo6ZnJvbVVURjgocHJpdi0+c2VhcmNoVGV4dC5kYXRhKCkpLCBmaW5kT3B0aW9ucywgcHJpdi0+
bWF4TWF0Y2hDb3VudCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCB3ZWJLaXRGaW5kQ29udHJv
bGxlclNldFNlYXJjaERhdGEoV2ViS2l0RmluZENvbnRyb2xsZXIqIGZpbmRDb250cm9sbGVyLCBj
b25zdCBnY2hhciogc2VhcmNoVGV4dCwgZ3VpbnQzMiBmaW5kT3B0aW9ucywgZ3VpbnQgbWF4TWF0
Y2hDb3VudCkKIHsKICAgICBmaW5kQ29udHJvbGxlci0+cHJpdi0+c2VhcmNoVGV4dCA9IHNlYXJj
aFRleHQ7Ci0gICAgZmluZENvbnRyb2xsZXItPnByaXYtPmZpbmRPcHRpb25zID0gZmluZE9wdGlv
bnM7CisgICAgZmluZENvbnRyb2xsZXItPnByaXYtPmZpbmRPcHRpb25zID0gdG9XZWJGaW5kT3B0
aW9ucyhmaW5kT3B0aW9ucyk7CiAgICAgZmluZENvbnRyb2xsZXItPnByaXYtPm1heE1hdGNoQ291
bnQgPSBtYXhNYXRjaENvdW50OwogfQogCkBAIC00MzgsOCArNDQ0LDggQEAgdm9pZCB3ZWJraXRf
ZmluZF9jb250cm9sbGVyX3NlYXJjaF9uZXh0KAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VC
S0lUX0lTX0ZJTkRfQ09OVFJPTExFUihmaW5kQ29udHJvbGxlcikpOwogCi0gICAgZmluZENvbnRy
b2xsZXItPnByaXYtPmZpbmRPcHRpb25zICY9IH5GaW5kT3B0aW9uc0JhY2t3YXJkczsKLSAgICBm
aW5kQ29udHJvbGxlci0+cHJpdi0+ZmluZE9wdGlvbnMgJj0gfkZpbmRPcHRpb25zU2hvd0hpZ2hs
aWdodDsKKyAgICBmaW5kQ29udHJvbGxlci0+cHJpdi0+ZmluZE9wdGlvbnMucmVtb3ZlKEZpbmRP
cHRpb25zOjpCYWNrd2FyZHMpOworICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5maW5kT3B0aW9u
cy5yZW1vdmUoRmluZE9wdGlvbnM6OlNob3dIaWdobGlnaHQpOwogICAgIHdlYktpdEZpbmRDb250
cm9sbGVyUGVyZm9ybShmaW5kQ29udHJvbGxlciwgRmluZE5leHRQcmV2T3BlcmF0aW9uKTsKIH0K
IApAQCAtNDU2LDggKzQ2Miw4IEBAIHZvaWQgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hf
cHJldmkKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19GSU5EX0NPTlRST0xMRVIo
ZmluZENvbnRyb2xsZXIpKTsKIAotICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5maW5kT3B0aW9u
cyB8PSBGaW5kT3B0aW9uc0JhY2t3YXJkczsKLSAgICBmaW5kQ29udHJvbGxlci0+cHJpdi0+Zmlu
ZE9wdGlvbnMgJj0gfkZpbmRPcHRpb25zU2hvd0hpZ2hsaWdodDsKKyAgICBmaW5kQ29udHJvbGxl
ci0+cHJpdi0+ZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpCYWNrd2FyZHMpOworICAgIGZp
bmRDb250cm9sbGVyLT5wcml2LT5maW5kT3B0aW9ucy5yZW1vdmUoRmluZE9wdGlvbnM6OlNob3dI
aWdobGlnaHQpOwogICAgIHdlYktpdEZpbmRDb250cm9sbGVyUGVyZm9ybShmaW5kQ29udHJvbGxl
ciwgRmluZE5leHRQcmV2T3BlcmF0aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLVGV4dEZpbmRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyNjQwMTYp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDgsMjEgKzIwOCwyMSBAQCAtICh2b2lkKWZpbmRNYXRjaGVzRm9y
U3RyaW5nOihOU1N0cmluZyAqCiAgICAgLy8gcHJvcG9ydGlvbmFsIHRvIGRvY3VtZW50IGxlbmd0
aC4KICAgICBtYXhSZXN1bHRzID0gc3RkOjptaW4obWF4UmVzdWx0cywgbWF4aW11bUZpbmRNYXRj
aGVzKTsKIAotICAgIHVuc2lnbmVkIGtpdEZpbmRPcHRpb25zID0gMDsKKyAgICBPcHRpb25TZXQ8
V2ViS2l0OjpGaW5kT3B0aW9ucz4ga2l0RmluZE9wdGlvbnM7CiAKICAgICBpZiAoZmluZE9wdGlv
bnMgJiBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zQmFja3dhcmRz
KQotICAgICAgICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQmFja3dhcmRz
OworICAgICAgICBraXRGaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6QmFja3dh
cmRzKTsKICAgICBpZiAoZmluZE9wdGlvbnMgJiBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1
bWVudEZpbmRPcHRpb25zV3JhcCkKLSAgICAgICAga2l0RmluZE9wdGlvbnMgfD0gV2ViS2l0OjpG
aW5kT3B0aW9uc1dyYXBBcm91bmQ7CisgICAgICAgIGtpdEZpbmRPcHRpb25zLmFkZChXZWJLaXQ6
OkZpbmRPcHRpb25zOjpXcmFwQXJvdW5kKTsKICAgICBpZiAoZmluZE9wdGlvbnMgJiBOU1RleHRG
aW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlKQotICAg
ICAgICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZl
OworICAgICAgICBraXRGaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6Q2FzZUlu
c2Vuc2l0aXZlKTsKICAgICBpZiAoZmluZE9wdGlvbnMgJiBOU1RleHRGaW5kZXJBc3luY2hyb25v
dXNEb2N1bWVudEZpbmRPcHRpb25zU3RhcnRzV2l0aCkKLSAgICAgICAga2l0RmluZE9wdGlvbnMg
fD0gV2ViS2l0OjpGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAga2l0RmluZE9wdGlv
bnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkF0V29yZFN0YXJ0cyk7CiAKICAgICBpZiAoIV91
c2VQbGF0Zm9ybUZpbmRVSSkgewotICAgICAgICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZp
bmRPcHRpb25zU2hvd092ZXJsYXk7Ci0gICAgICAgIGtpdEZpbmRPcHRpb25zIHw9IFdlYktpdDo6
RmluZE9wdGlvbnNTaG93RmluZEluZGljYXRvcjsKLSAgICAgICAga2l0RmluZE9wdGlvbnMgfD0g
V2ViS2l0OjpGaW5kT3B0aW9uc0RldGVybWluZU1hdGNoSW5kZXg7CisgICAgICAgIGtpdEZpbmRP
cHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93T3ZlcmxheSk7CisgICAgICAgIGtp
dEZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcik7
CisgICAgICAgIGtpdEZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpEZXRlcm1p
bmVNYXRjaEluZGV4KTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNQcm9ncmVzcz4gcHJvZ3Jl
c3MgPSBbTlNQcm9ncmVzcyBwcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxXTsKQEAgLTIzNCw5
ICsyMzQsOSBAQCAtICh2b2lkKWZpbmRNYXRjaGVzRm9yU3RyaW5nOihOU1N0cmluZyAqCiAgICAg
fSk7CiAKICAgICBpZiAobWF4UmVzdWx0cyA9PSAxKQotICAgICAgICBfcGFnZS0+ZmluZFN0cmlu
Zyh0YXJnZXRTdHJpbmcsIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KGtpdEZpbmRP
cHRpb25zKSwgbWF4UmVzdWx0cyk7CisgICAgICAgIF9wYWdlLT5maW5kU3RyaW5nKHRhcmdldFN0
cmluZywga2l0RmluZE9wdGlvbnMsIG1heFJlc3VsdHMpOwogICAgIGVsc2UKLSAgICAgICAgX3Bh
Z2UtPmZpbmRTdHJpbmdNYXRjaGVzKHRhcmdldFN0cmluZywgc3RhdGljX2Nhc3Q8V2ViS2l0OjpG
aW5kT3B0aW9ucz4oa2l0RmluZE9wdGlvbnMpLCBtYXhSZXN1bHRzKTsKKyAgICAgICAgX3BhZ2Ut
PmZpbmRTdHJpbmdNYXRjaGVzKHRhcmdldFN0cmluZywga2l0RmluZE9wdGlvbnMsIG1heFJlc3Vs
dHMpOwogfQogCiAtICh2b2lkKWdldFNlbGVjdGVkVGV4dDoodm9pZCAoXikoTlNTdHJpbmcgKnNl
bGVjdGVkVGV4dFN0cmluZykpY29tcGxldGlvbkhhbmRsZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHJldmlzaW9u
IDI2NDAxNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTggKzU1LDE4IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJDb3JlOjpGaW5kT3B0aW9ucyBj
b3JlKEZpbmRPcHRpb25zIG9wdGlvbnMpCitXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlKE9wdGlv
blNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucykKIHsKICAgICBXZWJDb3JlOjpGaW5kT3B0aW9ucyBy
ZXN1bHQ7Ci0gICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKKyAg
ICBpZiAob3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6Q2FzZUluc2Vuc2l0aXZlKSkKICAg
ICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpDYXNlSW5zZW5zaXRpdmUpOwotICAgIGlmIChvcHRp
b25zICYgRmluZE9wdGlvbnNBdFdvcmRTdGFydHMpCisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMo
RmluZE9wdGlvbnM6OkF0V29yZFN0YXJ0cykpCiAgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6
QXRXb3JkU3RhcnRzKTsKLSAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zVHJlYXRNZWRpYWxD
YXBpdGFsQXNXb3JkU3RhcnQpCisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6
OlRyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KSkKICAgICAgICAgcmVzdWx0LmFkZChXZWJD
b3JlOjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7Ci0gICAgaWYgKG9wdGlvbnMgJiBG
aW5kT3B0aW9uc0JhY2t3YXJkcykKKyAgICBpZiAob3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9u
czo6QmFja3dhcmRzKSkKICAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpCYWNrd2FyZHMpOwot
ICAgIGlmIChvcHRpb25zICYgRmluZE9wdGlvbnNXcmFwQXJvdW5kKQorICAgIGlmIChvcHRpb25z
LmNvbnRhaW5zKEZpbmRPcHRpb25zOjpXcmFwQXJvdW5kKSkKICAgICAgICAgcmVzdWx0LmFkZChX
ZWJDb3JlOjpXcmFwQXJvdW5kKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtODAsNyArODAs
NyBAQCBGaW5kQ29udHJvbGxlcjo6fkZpbmRDb250cm9sbGVyKCkKIHsKIH0KIAotdm9pZCBGaW5k
Q29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5k
T3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBGaW5kQ29udHJv
bGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25TZXQ8
RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiB7CiAgICAgaWYg
KG1heE1hdGNoQ291bnQgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQog
ICAgICAgICAtLW1heE1hdGNoQ291bnQ7CkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIEZyYW1l
KiBmcmFtZVdpdGhTZWxlY3Rpb24oUGFnZSogcAogICAgIHJldHVybiAwOwogfQogCi12b2lkIEZp
bmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3VuZCwgY29u
c3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQsIERpZFdyYXAgZGlkV3JhcCwgRmluZFVJT3JpZ2luYXRvciBvcmlnaW5hdG9yKQordm9p
ZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQs
IGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVu
c2lnbmVkIG1heE1hdGNoQ291bnQsIERpZFdyYXAgZGlkV3JhcCwgRmluZFVJT3JpZ2luYXRvciBv
cmlnaW5hdG9yKQogewogICAgIEZyYW1lKiBzZWxlY3RlZEZyYW1lID0gZnJhbWVXaXRoU2VsZWN0
aW9uKG1fd2ViUGFnZS0+Y29yZVBhZ2UoKSk7CiAgICAgCkBAIC0xNTMsOSArMTUzLDkgQEAgdm9p
ZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYQogCiAgICAgICAgIG1fd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGYWlsVG9GaW5kU3RyaW5nKHN0cmlu
ZykpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHNob3VsZFNob3dPdmVybGF5ID0gb3B0aW9ucyAm
IEZpbmRPcHRpb25zU2hvd092ZXJsYXk7Ci0gICAgICAgIGJvb2wgc2hvdWxkU2hvd0hpZ2hsaWdo
dCA9IG9wdGlvbnMgJiBGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQ7Ci0gICAgICAgIGJvb2wgc2hv
dWxkRGV0ZXJtaW5lTWF0Y2hJbmRleCA9IG9wdGlvbnMgJiBGaW5kT3B0aW9uc0RldGVybWluZU1h
dGNoSW5kZXg7CisgICAgICAgIHNob3VsZFNob3dPdmVybGF5ID0gb3B0aW9ucy5jb250YWlucyhG
aW5kT3B0aW9uczo6U2hvd092ZXJsYXkpOworICAgICAgICBib29sIHNob3VsZFNob3dIaWdobGln
aHQgPSBvcHRpb25zLmNvbnRhaW5zKEZpbmRPcHRpb25zOjpTaG93SGlnaGxpZ2h0KTsKKyAgICAg
ICAgYm9vbCBzaG91bGREZXRlcm1pbmVNYXRjaEluZGV4ID0gb3B0aW9ucy5jb250YWlucyhGaW5k
T3B0aW9uczo6RGV0ZXJtaW5lTWF0Y2hJbmRleCk7CiAgICAgICAgIHVuc2lnbmVkIG1hdGNoQ291
bnQgPSAxOwogCiAgICAgICAgIGlmIChzaG91bGREZXRlcm1pbmVNYXRjaEluZGV4KSB7CkBAIC0y
MjEsMTEgKzIyMSwxMSBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBh
CiAgICAgICAgIG1fZmluZFBhZ2VPdmVybGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICB9CiAg
ICAgCi0gICAgaWYgKGZvdW5kICYmICghKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1Nob3dGaW5kSW5k
aWNhdG9yKSB8fCAhc2VsZWN0ZWRGcmFtZSB8fCAhdXBkYXRlRmluZEluZGljYXRvcigqc2VsZWN0
ZWRGcmFtZSwgc2hvdWxkU2hvd092ZXJsYXkpKSkKKyAgICBpZiAoZm91bmQgJiYgKCFvcHRpb25z
LmNvbnRhaW5zKEZpbmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcikgfHwgIXNlbGVjdGVkRnJh
bWUgfHwgIXVwZGF0ZUZpbmRJbmRpY2F0b3IoKnNlbGVjdGVkRnJhbWUsIHNob3VsZFNob3dPdmVy
bGF5KSkpCiAgICAgICAgIGhpZGVGaW5kSW5kaWNhdG9yKCk7CiB9CiAKLXZvaWQgRmluZENvbnRy
b2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlv
bnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNr
SUQpCit2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgYXV0byogcGx1Z2luVmlldyA9IFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFtZShtX3dlYlBh
Z2UtPm1haW5GcmFtZSgpKTsKIApAQCAtMjY3LDkgKzI2Nyw5IEBAIHZvaWQgRmluZENvbnRyb2xs
ZXI6OmZpbmRTdHJpbmcoY29uc3QgU3QKICAgICAgICAgZGlkRmluZFN0cmluZygpOwogCiAgICAg
ICAgIGlmICghZm91bmRTdHJpbmdTdGFydHNBZnRlclNlbGVjdGlvbikgewotICAgICAgICAgICAg
aWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0JhY2t3YXJkcykKKyAgICAgICAgICAgIGlmIChvcHRp
b25zLmNvbnRhaW5zKEZpbmRPcHRpb25zOjpCYWNrd2FyZHMpKQogICAgICAgICAgICAgICAgIG1f
Zm91bmRTdHJpbmdNYXRjaEluZGV4LS07Ci0gICAgICAgICAgICBlbHNlIGlmICghKG9wdGlvbnMg
JiBGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UpKQorICAgICAgICAgICAgZWxzZSBpZiAoIW9wdGlv
bnMuY29udGFpbnMoRmluZE9wdGlvbnM6Ok5vSW5kZXhDaGFuZ2UpKQogICAgICAgICAgICAgICAg
IG1fZm91bmRTdHJpbmdNYXRjaEluZGV4Kys7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzksMTEg
KzI3OSwxMCBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0CiAgICAg
ICAgIHByb3RlY3RlZFdlYlBhZ2UtPmZpbmRDb250cm9sbGVyKCkudXBkYXRlRmluZFVJQWZ0ZXJQ
YWdlU2Nyb2xsKGZvdW5kLCBzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGRpZFdyYXAs
IEZpbmRVSU9yaWdpbmF0b3I6OkZpbmRTdHJpbmcpOwogICAgIH0pOwogCi0gICAgaWYgKGNhbGxi
YWNrSUQpCi0gICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpG
aW5kU3RyaW5nQ2FsbGJhY2soZm91bmQsICpjYWxsYmFja0lEKSk7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoZm91bmQpOwogfQogCi12b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hl
cyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCkKK3ZvaWQgRmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQpCiB7CiAgICAgbV9maW5kTWF0Y2hlcy5jbGVhcigpOwogICAgIGludCBp
bmRleEZvclNlbGVjdGlvbjsKQEAgLTI5Niw3ICsyOTUsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVy
OjpmaW5kU3RyaW5nTWF0Y2hlcyhjCiAKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkRmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBtYXRjaFJlY3RzLCBpbmRl
eEZvclNlbGVjdGlvbikpOwogCi0gICAgaWYgKCEob3B0aW9ucyAmIEZpbmRPcHRpb25zU2hvd092
ZXJsYXkgfHwgb3B0aW9ucyAmIEZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IpKQorICAgIGlm
ICghb3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6U2hvd092ZXJsYXkpICYmICFvcHRpb25z
LmNvbnRhaW5zKEZpbmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcikpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGJvb2wgZm91bmQgPSAhbV9maW5kTWF0Y2hlcy5pc0VtcHR5KCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEzICs1NywxMyBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgRmluZENvbnRyb2xsZXIoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfkZp
bmRDb250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmlu
ZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+KTsK
LSAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlcyhj
b25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50KTsKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgp
OwogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZv
aWQgaW5kaWNhdGVGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBoaWRl
RmluZFVJKCk7Ci0gICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmlu
ZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgY291bnRTdHJpbmdN
YXRjaGVzKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4sIHVuc2lnbmVkIG1h
eE1hdGNoQ291bnQpOwogICAgIHVpbnQzMl90IHJlcGxhY2VNYXRjaGVzKGNvbnN0IFZlY3Rvcjx1
aW50MzJfdD4mIG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQsIGJv
b2wgc2VsZWN0aW9uT25seSk7CiAgICAgCiAgICAgdm9pZCBoaWRlRmluZEluZGljYXRvcigpOwpA
QCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlRmluZEluZGljYXRvcihX
ZWJDb3JlOjpGcmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmVybGF5LCBib29s
IHNob3VsZEFuaW1hdGUgPSB0cnVlKTsKIAogICAgIGVudW0gY2xhc3MgRmluZFVJT3JpZ2luYXRv
ciA6IHVpbnQ4X3QgeyBGaW5kU3RyaW5nLCBGaW5kU3RyaW5nTWF0Y2hlcyB9OwotICAgIHZvaWQg
dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYsIEZp
bmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBXZWJDb3JlOjpEaWRXcmFwLCBGaW5k
VUlPcmlnaW5hdG9yKTsKKyAgICB2b2lkIHVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChib29s
IGZvdW5kLCBjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50LCBXZWJDb3JlOjpEaWRXcmFwLCBGaW5kVUlPcmlnaW5hdG9yKTsKIAogICAg
IHZvaWQgd2lsbEZpbmRTdHJpbmcoKTsKICAgICB2b2lkIGRpZEZpbmRTdHJpbmcoKTsKQEAgLTEx
Niw2ICsxMTYsNiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1XZWJDb3JlOjpGaW5kT3B0aW9u
cyBjb3JlKEZpbmRPcHRpb25zKTsKK1dlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmUoT3B0aW9uU2V0
PEZpbmRPcHRpb25zPik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI2NDAxNikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MTg2LDEyICs0MTg2LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZlT3Bl
blBhbmVsUmVzdWx0TGkKICAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gV1RG
TW92ZShvcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcik7CiB9CiAKLWJvb2wgV2ViUGFnZTo6ZmluZFN0
cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMg
b3B0aW9ucykKK2Jvb2wgV2ViUGFnZTo6ZmluZFN0cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25z
dCBTdHJpbmcmIHRhcmdldCwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zKQogewogICAg
IHJldHVybiBtX3BhZ2UtPmZpbmRTdHJpbmcodGFyZ2V0LCBjb3JlKG9wdGlvbnMpKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjpmaW5kU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBT
dHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKK3ZvaWQgV2ViUGFnZTo6ZmluZFN0
cmluZ01hdGNoZXNGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiB0YXJnZXQsIE9wdGlv
blNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucykKIHsKICAgICBmaW5kQ29udHJvbGxlcigpLmZpbmRT
dHJpbmdNYXRjaGVzKHRhcmdldCwgb3B0aW9ucywgMCk7CiB9CkBAIC00MjAxLDE0ICs0MjAxLDE0
IEBAIHZvaWQgV2ViUGFnZTo6cmVwbGFjZVN0cmluZ01hdGNoZXNGcm9tSW4KICAgICBmaW5kQ29u
dHJvbGxlcigpLnJlcGxhY2VNYXRjaGVzKG1hdGNoSW5kaWNlcywgcmVwbGFjZW1lbnRUZXh0LCBz
ZWxlY3Rpb25Pbmx5KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50LCBPcHRp
b25hbDxDYWxsYmFja0lEPiBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpmaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVpbnQz
Ml90IG1heE1hdGNoQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3RyaW5nKHN0cmluZywg
c3RhdGljX2Nhc3Q8RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50LCBjYWxsYmFj
a0lEKTsKKyAgICBmaW5kQ29udHJvbGxlcigpLmZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBt
YXhNYXRjaENvdW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2Vi
UGFnZTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9w
dGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdN
YXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IG9wdGlv
bnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpCiB7Ci0gICAgZmluZENvbnRyb2xsZXIoKS5maW5k
U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIHN0YXRpY19jYXN0PEZpbmRPcHRpb25zPihvcHRpb25zKSwg
bWF4TWF0Y2hDb3VudCk7CisgICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3RyaW5nTWF0Y2hlcyhz
dHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldElt
YWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCkBAIC00MjMxLDkgKzQyMzEsOSBA
QCB2b2lkIFdlYlBhZ2U6OmhpZGVGaW5kVUkoKQogICAgIGZpbmRDb250cm9sbGVyKCkuaGlkZUZp
bmRVSSgpOwogfQogCi12b2lkIFdlYlBhZ2U6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJp
bmcmIHN0cmluZywgdWludDMyX3Qgb3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hDb3VudCkKK3Zv
aWQgV2ViUGFnZTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRp
b25TZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpCiB7Ci0g
ICAgZmluZENvbnRyb2xsZXIoKS5jb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBzdGF0aWNfY2Fz
dDxGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOworICAgIGZpbmRDb250cm9s
bGVyKCkuY291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7
CiB9CiAKIHZvaWQgV2ViUGFnZTo6cmVwbGFjZU1hdGNoZXMoY29uc3QgVmVjdG9yPHVpbnQzMl90
PiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxl
Y3Rpb25Pbmx5LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
Nyw3ICsyNzcsNyBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI7CiBjbGFzcyBXZWJX
aGVlbEV2ZW50OwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiAKLWVudW0gRmlu
ZE9wdGlvbnMgOiB1aW50MTZfdDsKK2VudW0gY2xhc3MgRmluZE9wdGlvbnMgOiB1aW50MTZfdDsK
IGVudW0gY2xhc3MgRHJhZ0NvbnRyb2xsZXJBY3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBT
eW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUgOiB1aW50OF90OwogCkBAIC00NzEsOCArNDcxLDgg
QEAgcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQmIGluamVj
dGVkQnVuZGxlRnVsbFNjcmVlbkNsaWVudCgpIHsgcmV0dXJuIG1fZnVsbFNjcmVlbkNsaWVudDsg
fQogI2VuZGlmCiAKLSAgICBib29sIGZpbmRTdHJpbmdGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3Qg
U3RyaW5nJiwgRmluZE9wdGlvbnMpOwotICAgIHZvaWQgZmluZFN0cmluZ01hdGNoZXNGcm9tSW5q
ZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOworICAgIGJvb2wgZmluZFN0
cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlv
bnM+KTsKKyAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0
IFN0cmluZyYsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4pOwogICAgIHZvaWQgcmVwbGFjZVN0cmlu
Z01hdGNoZXNGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJ
bmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5
KTsKIAogICAgIFdlYkZyYW1lJiBtYWluV2ViRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21haW5G
cmFtZTsgfQpAQCAtMTU4MywxMyArMTU4MywxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhcHBs
eUVkaXRDb21tYW5kKFdlYlVuZG9TdGVwSUQgY29tbWFuZElEKTsKICAgICB2b2lkIGRpZFJlbW92
ZUVkaXRDb21tYW5kKFdlYlVuZG9TdGVwSUQgY29tbWFuZElEKTsKIAotICAgIHZvaWQgZmluZFN0
cmluZyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdWludDMyX3QgbWF4TWF0
Y2hDb3VudCwgT3B0aW9uYWw8Q2FsbGJhY2tJRD4pOwotICAgIHZvaWQgZmluZFN0cmluZ01hdGNo
ZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNo
Q291bnQpOworICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8Rmlu
ZE9wdGlvbnM+LCB1aW50MzJfdCBtYXhNYXRjaENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKKyAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIE9w
dGlvblNldDxGaW5kT3B0aW9ucz4sIHVpbnQzMl90IG1heE1hdGNoQ291bnQpOwogICAgIHZvaWQg
Z2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxl
Y3RGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBpbmRpY2F0ZUZpbmRN
YXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKLSAgICB2
b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBmaW5kT3B0aW9u
cywgdWludDMyX3QgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMo
Y29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdWludDMyX3QgbWF4TWF0Y2hD
b3VudCk7CiAgICAgdm9pZCByZXBsYWNlTWF0Y2hlcyhjb25zdCBWZWN0b3I8dWludDMyX3Q+JiBt
YXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlv
bk9ubHksIENhbGxiYWNrSUQpOwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsMTMgKzI5
NiwxMyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWluCiAgICAgUG9z
dEluamVjdGVkQnVuZGxlTWVzc2FnZShTdHJpbmcgbWVzc2FnZU5hbWUsIFdlYktpdDo6VXNlckRh
dGEgbWVzc2FnZUJvZHkpCiAKICAgICAjIEZpbmQuCi0gICAgRmluZFN0cmluZyhTdHJpbmcgc3Ry
aW5nLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgT3B0aW9u
YWw8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEKQotICAgIEZpbmRTdHJpbmdNYXRjaGVz
KFN0cmluZyBzdHJpbmcsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50KQorICAgIEZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZywgT3B0aW9uU2V0PFdlYktpdDo6Rmlu
ZE9wdGlvbnM+IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSAtPiAoYm9vbCBm
b3VuZCkgQXN5bmMKKyAgICBGaW5kU3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCBPcHRpb25T
ZXQ8V2ViS2l0OjpGaW5kT3B0aW9ucz4gZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291
bnQpCiAgICAgR2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkKICAgICBT
ZWxlY3RGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkKICAgICBJbmRpY2F0ZUZpbmRNYXRj
aCh1aW50MzJfdCBtYXRjaEluZGV4KQogICAgIEhpZGVGaW5kVUkoKQotICAgIENvdW50U3RyaW5n
TWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCkKKyAgICBDb3VudFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywgT3B0aW9u
U2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50KQogICAgIFJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4gbWF0Y2hJbmRpY2VzLCBT
dHJpbmcgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogICAgIAogICAgIEFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQ
cm92aWRlcihTdHJpbmcgbWltZVR5cGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403746</attachid>
            <date>2020-07-07 17:45:11 -0700</date>
            <delta_ts>2020-07-07 18:16:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214063-20200707184510.patch</filename>
            <type>text/plain</type>
            <size>37750</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwNDUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEZp
bmRPcHRpb25zIElQQyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKwor
ICAgICAgICBVc2UgY2FsbFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgR2VuZXJpY0NhbGxiYWNr
LgorICAgICAgICBVc2UgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBpbnN0ZWFkIG9mIEZpbmRPcHRp
b25zIG9yIHVpbnQzMl90LgorICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRv
RmluZE9wdGlvbnMpOgorICAgICAgICAqIFNoYXJlZC9XZWJGaW5kT3B0aW9ucy5oOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKHRvRmluZE9wdGlvbnMpOgorICAgICAgICAoLVtXS1dlYlZpZXcgZmluZFN0
cmluZzp3aXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlu
ZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nQ2FsbGJhY2sp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpGaW5kQ29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdlYktp
dDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbCk6CisgICAgICAg
IChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
RmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNy0wNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFsbG93IGFkZGl0aW9uYWwgSU9LaXQg
Y2xhc3NlcyBmb3IgQXBwbGUgU2lsaWNvbgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Vi
a2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNiArNjYyLDcgQEAg
ZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2aXR5U3Rh
dGVDaGFuZ2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2ViS2l0OjpC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAgICAgICAg
J1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNoYXJlZC5o
IiddLAorICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRpb25zLmgi
J10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUnOiBbJyJHZXN0dXJl
VHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBbJyJHZXN0dXJlVHlw
ZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzogWyciTGF5
ZXJIb3N0aW5nQ29udGV4dC5oIiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRmlu
ZE9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJGaW5kT3B0
aW9ucy5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJGaW5k
T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxOSArMjUsNDEgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotZW51bSBGaW5kT3B0aW9ucyA6IHVpbnQxNl90IHsKLSAgICBGaW5kT3B0aW9uc0Nhc2VJbnNl
bnNpdGl2ZSA9IDEgPDwgMCwKLSAgICBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA9IDEgPDwgMSwK
LSAgICBGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0ID0gMSA8PCAyLAot
ICAgIEZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAzLAotICAgIEZpbmRPcHRpb25zV3JhcEFy
b3VuZCA9IDEgPDwgNCwKLSAgICBGaW5kT3B0aW9uc1Nob3dPdmVybGF5ID0gMSA8PCA1LAotICAg
IEZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgPSAxIDw8IDYsCi0gICAgRmluZE9wdGlvbnNT
aG93SGlnaGxpZ2h0ID0gMSA8PCA3LAotICAgIEZpbmRPcHRpb25zRGV0ZXJtaW5lTWF0Y2hJbmRl
eCA9IDEgPDwgOCwKLSAgICBGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UgPSAxIDw8IDksCitlbnVt
IGNsYXNzIEZpbmRPcHRpb25zIDogdWludDE2X3QgeworICAgIENhc2VJbnNlbnNpdGl2ZSA9IDEg
PDwgMCwKKyAgICBBdFdvcmRTdGFydHMgPSAxIDw8IDEsCisgICAgVHJlYXRNZWRpYWxDYXBpdGFs
QXNXb3JkU3RhcnQgPSAxIDw8IDIsCisgICAgQmFja3dhcmRzID0gMSA8PCAzLAorICAgIFdyYXBB
cm91bmQgPSAxIDw8IDQsCisgICAgU2hvd092ZXJsYXkgPSAxIDw8IDUsCisgICAgU2hvd0ZpbmRJ
bmRpY2F0b3IgPSAxIDw8IDYsCisgICAgU2hvd0hpZ2hsaWdodCA9IDEgPDwgNywKKyAgICBEZXRl
cm1pbmVNYXRjaEluZGV4ID0gMSA8PCA4LAorICAgIE5vSW5kZXhDaGFuZ2UgPSAxIDw8IDksCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRl
PD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpGaW5kT3B0aW9ucz4geworICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnMsCisgICAgICAg
IFdlYktpdDo6RmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSwKKyAgICAgICAgV2ViS2l0OjpG
aW5kT3B0aW9uczo6QXRXb3JkU3RhcnRzLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpU
cmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCwKKyAgICAgICAgV2ViS2l0OjpGaW5kT3B0aW9u
czo6QmFja3dhcmRzLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpXcmFwQXJvdW5kLAor
ICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93T3ZlcmxheSwKKyAgICAgICAgV2ViS2l0
OjpGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IsCisgICAgICAgIFdlYktpdDo6RmluZE9w
dGlvbnM6OlNob3dIaWdobGlnaHQsCisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6OkRldGVy
bWluZU1hdGNoSW5kZXgsCisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6Ok5vSW5kZXhDaGFu
Z2UKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMjY0MDE2KQorKysg
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc1MywyOCArNzUzLDI4IEBAIGlubGluZSBXS0NvbnRleHRNZW51SXRlbVR5cGUgdG9B
UEkoV2ViQ28KICAgICB9CiB9CiAKLWlubGluZSBGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdL
RmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK2lubGluZSBPcHRpb25TZXQ8RmluZE9wdGlvbnM+
IHRvRmluZE9wdGlvbnMoV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25zKQogewotICAgIHVuc2ln
bmVkIGZpbmRPcHRpb25zID0gMDsKKyAgICBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IGZpbmRPcHRp
b25zOwogCiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNp
dGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7
CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChGaW5kT3B0aW9uczo6Q2FzZUluc2Vuc2l0aXZlKTsK
ICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zQXRXb3JkU3RhcnRzKQotICAg
ICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAgZmlu
ZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpBdFdvcmRTdGFydHMpOwogICAgIGlmICh3a0ZpbmRP
cHRpb25zICYga1dLRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkKLSAg
ICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRT
dGFydDsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpUcmVhdE1lZGlhbENh
cGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9u
c0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNCYWNrd2FyZHM7
CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChGaW5kT3B0aW9uczo6QmFja3dhcmRzKTsKICAgICBp
ZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zV3JhcEFyb3VuZCkKLSAgICAgICAgZmlu
ZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5h
ZGQoRmluZE9wdGlvbnM6OldyYXBBcm91bmQpOwogICAgIGlmICh3a0ZpbmRPcHRpb25zICYga1dL
RmluZE9wdGlvbnNTaG93T3ZlcmxheSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlv
bnNTaG93T3ZlcmxheTsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpTaG93
T3ZlcmxheSk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9uc1Nob3dGaW5k
SW5kaWNhdG9yKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc1Nob3dGaW5kSW5k
aWNhdG9yOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoRmluZE9wdGlvbnM6OlNob3dGaW5kSW5k
aWNhdG9yKTsKICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zU2hvd0hpZ2hs
aWdodCkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0Owor
ICAgICAgICBmaW5kT3B0aW9ucy5hZGQoRmluZE9wdGlvbnM6OlNob3dIaWdobGlnaHQpOwogCi0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEZpbmRPcHRpb25zPihmaW5kT3B0aW9ucyk7CisgICAgcmV0
dXJuIGZpbmRPcHRpb25zOwogfQogCiBpbmxpbmUgV0tGcmFtZU5hdmlnYXRpb25UeXBlIHRvQVBJ
KFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMjcsNyArNDAy
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwbHVnaW5ab29tRmFjdG9yRGlkQ2gKICAgICBtX3Bs
dWdpblpvb21GYWN0b3IgPSBwbHVnaW5ab29tRmFjdG9yOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0
cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4g
b3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKICAgICBpZiAoc3RyaW5nLmlzRW1w
dHkoKSkgewogICAgICAgICBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIFZlY3RvcjxWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4+ICgpLCAwKTsKQEAgLTQwMzcsMjIgKzQwMzcsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uCiAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50
KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBGdW5jdGlv
bjx2b2lkIChib29sLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQor
dm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlv
blNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIE9wdGlv
bmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNrSUQ7Ci0gICAgaWYgKGNhbGxiYWNrRnVuY3Rpb24pCi0g
ICAgICAgIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlBhZ2VQ
cm94eTo6ZmluZFN0cmluZyJfcykpOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlu
ZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQpKTsKLX0K
LQotdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmdDYWxsYmFjayhib29sIGZvdW5kLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCi17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRh
a2U8Qm9vbENhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVl
KGZvdW5kKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRT
dHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChp
bnQzMl90IG1hdGNoSW5kZXgpCkBAIC00MDc1LDcgKzQwNjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGlkZUZpbmRVSSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlkZUZpbmRVSSgp
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJp
bmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkK
K3ZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyNjQwMTYp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA5OCwyMSArMTA5OCwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbHVnaW5ab29tRmFj
dG9yRGlkQ2hhbmdlKGRvdWJsZSk7CiAKICAgICAvLyBGaW5kLgotICAgIHZvaWQgZmluZFN0cmlu
Zyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgRnVu
Y3Rpb248dm9pZCAoYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgPSBudWxscHRyKTsKLSAg
ICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwg
T3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiA9IFtdKGJvb2wpIHsgfSk7CisgICAgdm9pZCBmaW5kU3Ry
aW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3Qg
bWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4
KTsKICAgICB2b2lkIGluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAg
dm9pZCBkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSYgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhp
ZGVGaW5kVUkoKTsKLSAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBG
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBjb3VudFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQg
bWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCByZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+
JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxl
Y3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
Jik7CiAgICAgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMy
X3QgbWF0Y2hDb3VudCk7CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6
OlRleHRJbmRpY2F0b3JEYXRhJiwgdWludDY0X3QgLyogV2ViQ29yZTo6VGV4dEluZGljYXRvcldp
bmRvd0xpZmV0aW1lICovIGxpZmV0aW1lID0gMCAvKiBQZXJtYW5lbnQgKi8pOwogICAgIHZvaWQg
c2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKICAgICB2b2lkIGNsZWFy
VGV4dEluZGljYXRvcigpOwogCi0gICAgdm9pZCBmaW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBmb3Vu
ZCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMy
X3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKTsKICAgICB2b2lkIGRpZEZhaWxUb0Zp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhj
b25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYgbWF0
Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNp
b24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsNyArMjAxLDYgQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UgcGRm
RGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgTm93UGxheWluZ0luZm9D
YWxsYmFjayhib29sIGFjdGl2ZSwgYm9vbCByZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRp
b24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUsIHVp
bnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCi0gICAgRmluZFN0cmluZ0NhbGxiYWNrKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSBz
Y2FsZUZhY3RvcikKICAgICBQbHVnaW5TY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgem9vbUZh
Y3RvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjY0MDE2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEyNCwxOCArMTEyNCwxOCBA
QCAtIChDR0Zsb2F0KXBhZ2Vab29tCiAgICAgcmV0dXJuIF9wYWdlLT5wYWdlWm9vbUZhY3Rvcigp
OwogfQogCi1pbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdLRmluZENv
bmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCitpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6Rmlu
ZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlv
bikKIHsKLSAgICB1bnNpZ25lZCBmaW5kT3B0aW9ucyA9IDA7CisgICAgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zOwogCiAgICAgaWYgKCFjb25maWd1cmF0aW9uLmNh
c2VTZW5zaXRpdmUpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnND
YXNlSW5zZW5zaXRpdmU7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRp
b25zOjpDYXNlSW5zZW5zaXRpdmUpOwogICAgIGlmIChjb25maWd1cmF0aW9uLmJhY2t3YXJkcykK
LSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKKyAg
ICAgICAgZmluZE9wdGlvbnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7CiAg
ICAgaWYgKGNvbmZpZ3VyYXRpb24ud3JhcHMpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktp
dDo6RmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2ViS2l0
OjpGaW5kT3B0aW9uczo6V3JhcEFyb3VuZCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2Vi
S2l0OjpGaW5kT3B0aW9ucz4oZmluZE9wdGlvbnMpOworICAgIHJldHVybiBmaW5kT3B0aW9uczsK
IH0KIAogLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoQ29uZmlndXJh
dGlvbjooV0tGaW5kQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLRmluZFJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgpAQCAt
MTE0NSw4ICsxMTQ1LDggQEAgLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3
aQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3RyaW5n
LCB0b0ZpbmRPcHRpb25zKGNvbmZpZ3VyYXRpb24pLCAxLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgewotICAgICAgICBoYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2lu
aXRXaXRoTWF0Y2hGb3VuZDooZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lICYmIGZvdW5kKV0gYXV0b3JlbGVhc2VdKTsKKyAgICBfcGFnZS0+ZmluZFN0cmluZyhzdHJp
bmcsIHRvRmluZE9wdGlvbnMoY29uZmlndXJhdGlvbiksIDEsIFtoYW5kbGVyID0gbWFrZUJsb2Nr
UHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBmb3VuZCkgeworICAgICAgICBoYW5kbGVyKFtb
W1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpmb3VuZF0gYXV0b3JlbGVh
c2VdKTsKICAgICB9KTsKIH0KIApAQCAtMjU2OSwzMiArMjU2OSwzMiBAQCAtICh2b2lkKV9zZXRG
aW5kRGVsZWdhdGU6KGlkPF9XS0ZpbmREZWxlCiAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5k
Q2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuc2V0RGVsZWdhdGUoZmluZERlbGVnYXRlKTsK
IH0KIAotc3RhdGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMoX1dL
RmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9u
cykKIHsKLSAgICB1bnNpZ25lZCBmaW5kT3B0aW9ucyA9IDA7CisgICAgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zOwogCiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBf
V0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2Vi
S2l0OjpGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRk
KFdlYktpdDo6RmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKHdrRmluZE9w
dGlvbnMgJiBfV0tGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgZmluZE9wdGlvbnMg
fD0gV2ViS2l0OjpGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAgZmluZE9wdGlvbnMu
YWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkF0V29yZFN0YXJ0cyk7CiAgICAgaWYgKHdrRmluZE9w
dGlvbnMgJiBfV0tGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0KQotICAg
ICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFs
QXNXb3JkU3RhcnQ7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25z
OjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0
OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKFdlYktpdDo6
RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5k
T3B0aW9uc1dyYXBBcm91bmQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9w
dGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0
aW9uczo6V3JhcEFyb3VuZCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9u
c1Nob3dPdmVybGF5KQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25z
U2hvd092ZXJsYXk7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25z
OjpTaG93T3ZlcmxheSk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc1No
b3dGaW5kSW5kaWNhdG9yKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRp
b25zU2hvd0ZpbmRJbmRpY2F0b3I7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZp
bmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcik7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBf
V0tGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktp
dDo6RmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0OworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2Vi
S2l0OjpGaW5kT3B0aW9uczo6U2hvd0hpZ2hsaWdodCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMg
JiBfV0tGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdl
YktpdDo6RmluZE9wdGlvbnNOb0luZGV4Q2hhbmdlOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQo
V2ViS2l0OjpGaW5kT3B0aW9uczo6Tm9JbmRleENoYW5nZSk7CiAgICAgaWYgKHdrRmluZE9wdGlv
bnMgJiBfV0tGaW5kT3B0aW9uc0RldGVybWluZU1hdGNoSW5kZXgpCi0gICAgICAgIGZpbmRPcHRp
b25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNEZXRlcm1pbmVNYXRjaEluZGV4OworICAgICAgICBm
aW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6RGV0ZXJtaW5lTWF0Y2hJbmRleCk7
CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4oZmluZE9wdGlv
bnMpOworICAgIHJldHVybiBmaW5kT3B0aW9uczsKIH0KIAogLSAodm9pZClfY291bnRTdHJpbmdN
YXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylvcHRpb25z
IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIuY3BwCShy
ZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRGaW5kQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDcgQEAgdHlw
ZWRlZiBlbnVtIHsKIAogc3RydWN0IF9XZWJLaXRGaW5kQ29udHJvbGxlclByaXZhdGUgewogICAg
IENTdHJpbmcgc2VhcmNoVGV4dDsKLSAgICAvLyBJbnRlcnByZXRlZCBhcyBXZWJLaXQ6OkZpbmRP
cHRpb25zLgotICAgIHVpbnQzMl90IGZpbmRPcHRpb25zOworICAgIE9wdGlvblNldDxXZWJLaXQ6
OkZpbmRPcHRpb25zPiBmaW5kT3B0aW9uczsKICAgICB1bnNpZ25lZCBtYXhNYXRjaENvdW50Owog
ICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CiB9OwpAQCAtODMsMjIgKzgyLDI5IEBAIHN0YXRp
YyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwKIAogV0VCS0lUX0RFRklORV9UWVBF
KFdlYktpdEZpbmRDb250cm9sbGVyLCB3ZWJraXRfZmluZF9jb250cm9sbGVyLCBHX1RZUEVfT0JK
RUNUKQogCi1zdGF0aWMgaW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMgdG9XZWJGaW5kT3B0aW9u
cyh1aW50MzJfdCBmaW5kT3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYktpdDo6
RmluZE9wdGlvbnM+IHRvV2ViRmluZE9wdGlvbnModWludDMyX3QgZmluZE9wdGlvbnMpCiB7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KChmaW5kT3B0aW9ucyAm
IFdFQktJVF9GSU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJVElWRSA/IEZpbmRPcHRpb25zQ2FzZUlu
c2Vuc2l0aXZlIDogMCkKLSAgICAgICAgfCAoZmluZE9wdGlvbnMgJiBXRUJLSVRfRklORF9PUFRJ
T05TX0FUX1dPUkRfU1RBUlRTID8gRmluZE9wdGlvbnNBdFdvcmRTdGFydHMgOiAwKQotICAgICAg
ICB8IChmaW5kT3B0aW9ucyAmIFdFQktJVF9GSU5EX09QVElPTlNfVFJFQVRfTUVESUFMX0NBUElU
QUxfQVNfV09SRF9TVEFSVCA/IEZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3Rh
cnQgOiAwKQotICAgICAgICB8IChmaW5kT3B0aW9ucyAmIFdFQktJVF9GSU5EX09QVElPTlNfQkFD
S1dBUkRTID8gRmluZE9wdGlvbnNCYWNrd2FyZHMgOiAwKQotICAgICAgICB8IChmaW5kT3B0aW9u
cyAmIFdFQktJVF9GSU5EX09QVElPTlNfV1JBUF9BUk9VTkQgPyBGaW5kT3B0aW9uc1dyYXBBcm91
bmQgOiAwKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgV2ViS2l0RmluZE9wdGlvbnMgdG9XZWJLaXRG
aW5kT3B0aW9ucyh1aW50MzJfdCBmaW5kT3B0aW9ucykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViS2l0RmluZE9wdGlvbnM+KChmaW5kT3B0aW9ucyAmIEZpbmRPcHRpb25zQ2FzZUluc2Vu
c2l0aXZlID8gV0VCS0lUX0ZJTkRfT1BUSU9OU19DQVNFX0lOU0VOU0lUSVZFIDogMCkKLSAgICAg
ICAgfCAoZmluZE9wdGlvbnMgJiBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA/IFdFQktJVF9GSU5E
X09QVElPTlNfQVRfV09SRF9TVEFSVFMgOiAwKQotICAgICAgICB8IChmaW5kT3B0aW9ucyAmIEZp
bmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQgPyBXRUJLSVRfRklORF9PUFRJ
T05TX1RSRUFUX01FRElBTF9DQVBJVEFMX0FTX1dPUkRfU1RBUlQgOiAwKQotICAgICAgICB8IChm
aW5kT3B0aW9ucyAmIEZpbmRPcHRpb25zQmFja3dhcmRzID8gV0VCS0lUX0ZJTkRfT1BUSU9OU19C
QUNLV0FSRFMgOiAwKQotICAgICAgICB8IChmaW5kT3B0aW9ucyAmIEZpbmRPcHRpb25zV3JhcEFy
b3VuZCA/IFdFQktJVF9GSU5EX09QVElPTlNfV1JBUF9BUk9VTkQgOiAwKSk7CisgICAgT3B0aW9u
U2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IG9wdGlvbnM7CisgICAgaWYgKGZpbmRPcHRpb25zICYg
V0VCS0lUX0ZJTkRfT1BUSU9OU19DQVNFX0lOU0VOU0lUSVZFKQorICAgICAgICBvcHRpb25zLmFk
ZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpDYXNlSW5zZW5zaXRpdmUpOworICAgIGlmIChmaW5kT3B0
aW9ucyAmIFdFQktJVF9GSU5EX09QVElPTlNfQVRfV09SRF9TVEFSVFMpCisgICAgICAgIG9wdGlv
bnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkF0V29yZFN0YXJ0cyk7CisgICAgaWYgKGZpbmRP
cHRpb25zICYgV0VCS0lUX0ZJTkRfT1BUSU9OU19UUkVBVF9NRURJQUxfQ0FQSVRBTF9BU19XT1JE
X1NUQVJUKQorICAgICAgICBvcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpUcmVhdE1l
ZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CisgICAgaWYgKGZpbmRPcHRpb25zICYgV0VCS0lUX0ZJ
TkRfT1BUSU9OU19CQUNLV0FSRFMpCisgICAgICAgIG9wdGlvbnMuYWRkKFdlYktpdDo6RmluZE9w
dGlvbnM6OkJhY2t3YXJkcyk7CisgICAgaWYgKGZpbmRPcHRpb25zICYgV0VCS0lUX0ZJTkRfT1BU
SU9OU19XUkFQX0FST1VORCkKKyAgICAgICAgb3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9u
czo6V3JhcEFyb3VuZCk7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyBpbmxpbmUg
V2ViS2l0RmluZE9wdGlvbnMgdG9XZWJLaXRGaW5kT3B0aW9ucyhPcHRpb25TZXQ8V2ViS2l0OjpG
aW5kT3B0aW9ucz4gZmluZE9wdGlvbnMpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktp
dEZpbmRPcHRpb25zPigoZmluZE9wdGlvbnMuY29udGFpbnMoV2ViS2l0OjpGaW5kT3B0aW9uczo6
Q2FzZUluc2Vuc2l0aXZlKSA/IFdFQktJVF9GSU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJVElWRSA6
IDApCisgICAgICAgIHwgKGZpbmRPcHRpb25zLmNvbnRhaW5zKFdlYktpdDo6RmluZE9wdGlvbnM6
OkF0V29yZFN0YXJ0cykgPyBXRUJLSVRfRklORF9PUFRJT05TX0FUX1dPUkRfU1RBUlRTIDogMCkK
KyAgICAgICAgfCAoZmluZE9wdGlvbnMuY29udGFpbnMoV2ViS2l0OjpGaW5kT3B0aW9uczo6VHJl
YXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpID8gV0VCS0lUX0ZJTkRfT1BUSU9OU19UUkVBVF9N
RURJQUxfQ0FQSVRBTF9BU19XT1JEX1NUQVJUIDogMCkKKyAgICAgICAgfCAoZmluZE9wdGlvbnMu
Y29udGFpbnMoV2ViS2l0OjpGaW5kT3B0aW9uczo6QmFja3dhcmRzKSA/IFdFQktJVF9GSU5EX09Q
VElPTlNfQkFDS1dBUkRTIDogMCkKKyAgICAgICAgfCAoZmluZE9wdGlvbnMuY29udGFpbnMoV2Vi
S2l0OjpGaW5kT3B0aW9uczo6V3JhcEFyb3VuZCkgPyBXRUJLSVRfRklORF9PUFRJT05TX1dSQVBf
QVJPVU5EIDogMCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFdlYlBhZ2VQcm94eSYgZ2V0UGFnZShX
ZWJLaXRGaW5kQ29udHJvbGxlciogZmluZENvbnRyb2xsZXIpCkBAIC0zNjUsMTEgKzM3MSwxMSBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRGaW5kQ29udHJvbGxlclBlcmZvcm0oCiAgICAgV2ViS2l0Rmlu
ZENvbnRyb2xsZXJQcml2YXRlKiBwcml2ID0gZmluZENvbnRyb2xsZXItPnByaXY7CiAgICAgaWYg
KG9wZXJhdGlvbiA9PSBDb3VudE9wZXJhdGlvbikgewogICAgICAgICBnZXRQYWdlKGZpbmRDb250
cm9sbGVyKS5jb3VudFN0cmluZ01hdGNoZXMoU3RyaW5nOjpmcm9tVVRGOChwcml2LT5zZWFyY2hU
ZXh0LmRhdGEoKSksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25z
Pihwcml2LT5maW5kT3B0aW9ucyksIHByaXYtPm1heE1hdGNoQ291bnQpOworICAgICAgICAgICAg
cHJpdi0+ZmluZE9wdGlvbnMsIHByaXYtPm1heE1hdGNoQ291bnQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgdWludDMyX3QgZmluZE9wdGlvbnMgPSBwcml2LT5maW5kT3B0aW9uczsK
KyAgICBPcHRpb25TZXQ8V2ViS2l0OjpGaW5kT3B0aW9ucz4gZmluZE9wdGlvbnMgPSBwcml2LT5m
aW5kT3B0aW9uczsKICAgICBpZiAob3BlcmF0aW9uID09IEZpbmRPcGVyYXRpb24pCiAgICAgICAg
IC8vIFVuY29uZGl0aW9uYWxseSBoaWdobGlnaHQgdGV4dCBtYXRjaGVzIHdoZW4gdGhlIHNlYXJj
aAogICAgICAgICAvLyBzdGFydHMuIFdLMSBBUEkgd2FzIGZvcmNpbmcgY2xpZW50cyB0byBlbmFi
bGUvZGlzYWJsZQpAQCAtMzc4LDE1ICszODQsMTUgQEAgc3RhdGljIHZvaWQgd2ViS2l0RmluZENv
bnRyb2xsZXJQZXJmb3JtKAogICAgICAgICAvLyB1bmNvbmRpdGlvbmFsbHkgc2hvdyBoaWdobGln
aHRzLiBCb3RoIHNlYXJjaF9uZXh0KCkgYW5kCiAgICAgICAgIC8vIHNlYXJjaF9wcmV2KCkgc2hv
dWxkIG5vdCBlbmFibGUgaGlnaGxpZ2h0aW5nIHRvIGF2b2lkIGFuCiAgICAgICAgIC8vIGV4dHJh
IHVubWFya0FsbFRleHRNYXRjaGVzKCkgKyBtYXJrQWxsVGV4dE1hdGNoZXMoKQotICAgICAgICBm
aW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQ7CisgICAgICAgIGZpbmRPcHRp
b25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93SGlnaGxpZ2h0KTsKIAotICAgIGdldFBh
Z2UoZmluZENvbnRyb2xsZXIpLmZpbmRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOChwcml2LT5zZWFy
Y2hUZXh0LmRhdGEoKSksIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KGZpbmRPcHRp
b25zKSwgcHJpdi0+bWF4TWF0Y2hDb3VudCk7CisgICAgZ2V0UGFnZShmaW5kQ29udHJvbGxlciku
ZmluZFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHByaXYtPnNlYXJjaFRleHQuZGF0YSgpKSwgZmlu
ZE9wdGlvbnMsIHByaXYtPm1heE1hdGNoQ291bnQpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQg
d2ViS2l0RmluZENvbnRyb2xsZXJTZXRTZWFyY2hEYXRhKFdlYktpdEZpbmRDb250cm9sbGVyKiBm
aW5kQ29udHJvbGxlciwgY29uc3QgZ2NoYXIqIHNlYXJjaFRleHQsIGd1aW50MzIgZmluZE9wdGlv
bnMsIGd1aW50IG1heE1hdGNoQ291bnQpCiB7CiAgICAgZmluZENvbnRyb2xsZXItPnByaXYtPnNl
YXJjaFRleHQgPSBzZWFyY2hUZXh0OwotICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5maW5kT3B0
aW9ucyA9IGZpbmRPcHRpb25zOworICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5maW5kT3B0aW9u
cyA9IHRvV2ViRmluZE9wdGlvbnMoZmluZE9wdGlvbnMpOwogICAgIGZpbmRDb250cm9sbGVyLT5w
cml2LT5tYXhNYXRjaENvdW50ID0gbWF4TWF0Y2hDb3VudDsKIH0KIApAQCAtNDM4LDggKzQ0NCw4
IEBAIHZvaWQgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfbmV4dCgKIHsKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19GSU5EX0NPTlRST0xMRVIoZmluZENvbnRyb2xsZXIpKTsK
IAotICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5maW5kT3B0aW9ucyAmPSB+RmluZE9wdGlvbnNC
YWNrd2FyZHM7Ci0gICAgZmluZENvbnRyb2xsZXItPnByaXYtPmZpbmRPcHRpb25zICY9IH5GaW5k
T3B0aW9uc1Nob3dIaWdobGlnaHQ7CisgICAgZmluZENvbnRyb2xsZXItPnByaXYtPmZpbmRPcHRp
b25zLnJlbW92ZShXZWJLaXQ6OkZpbmRPcHRpb25zOjpCYWNrd2FyZHMpOworICAgIGZpbmRDb250
cm9sbGVyLT5wcml2LT5maW5kT3B0aW9ucy5yZW1vdmUoV2ViS2l0OjpGaW5kT3B0aW9uczo6U2hv
d0hpZ2hsaWdodCk7CiAgICAgd2ViS2l0RmluZENvbnRyb2xsZXJQZXJmb3JtKGZpbmRDb250cm9s
bGVyLCBGaW5kTmV4dFByZXZPcGVyYXRpb24pOwogfQogCkBAIC00NTYsOCArNDYyLDggQEAgdm9p
ZCB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9wcmV2aQogewogICAgIGdfcmV0dXJuX2lm
X2ZhaWwoV0VCS0lUX0lTX0ZJTkRfQ09OVFJPTExFUihmaW5kQ29udHJvbGxlcikpOwogCi0gICAg
ZmluZENvbnRyb2xsZXItPnByaXYtPmZpbmRPcHRpb25zIHw9IEZpbmRPcHRpb25zQmFja3dhcmRz
OwotICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5maW5kT3B0aW9ucyAmPSB+RmluZE9wdGlvbnNT
aG93SGlnaGxpZ2h0OworICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5maW5kT3B0aW9ucy5hZGQo
V2ViS2l0OjpGaW5kT3B0aW9uczo6QmFja3dhcmRzKTsKKyAgICBmaW5kQ29udHJvbGxlci0+cHJp
di0+ZmluZE9wdGlvbnMucmVtb3ZlKFdlYktpdDo6RmluZE9wdGlvbnM6OlNob3dIaWdobGlnaHQp
OwogICAgIHdlYktpdEZpbmRDb250cm9sbGVyUGVyZm9ybShmaW5kQ29udHJvbGxlciwgRmluZE5l
eHRQcmV2T3BlcmF0aW9uKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dLVGV4dEZpbmRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDgsMjEgKzIwOCwyMSBAQCAtICh2b2lkKWZpbmRNYXRjaGVzRm9yU3RyaW5nOihO
U1N0cmluZyAqCiAgICAgLy8gcHJvcG9ydGlvbmFsIHRvIGRvY3VtZW50IGxlbmd0aC4KICAgICBt
YXhSZXN1bHRzID0gc3RkOjptaW4obWF4UmVzdWx0cywgbWF4aW11bUZpbmRNYXRjaGVzKTsKIAot
ICAgIHVuc2lnbmVkIGtpdEZpbmRPcHRpb25zID0gMDsKKyAgICBPcHRpb25TZXQ8V2ViS2l0OjpG
aW5kT3B0aW9ucz4ga2l0RmluZE9wdGlvbnM7CiAKICAgICBpZiAoZmluZE9wdGlvbnMgJiBOU1Rl
eHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zQmFja3dhcmRzKQotICAgICAg
ICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQmFja3dhcmRzOworICAgICAg
ICBraXRGaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6QmFja3dhcmRzKTsKICAg
ICBpZiAoZmluZE9wdGlvbnMgJiBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVudEZpbmRP
cHRpb25zV3JhcCkKLSAgICAgICAga2l0RmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9u
c1dyYXBBcm91bmQ7CisgICAgICAgIGtpdEZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRp
b25zOjpXcmFwQXJvdW5kKTsKICAgICBpZiAoZmluZE9wdGlvbnMgJiBOU1RleHRGaW5kZXJBc3lu
Y2hyb25vdXNEb2N1bWVudEZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlKQotICAgICAgICBraXRG
aW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlOworICAgICAg
ICBraXRGaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6Q2FzZUluc2Vuc2l0aXZl
KTsKICAgICBpZiAoZmluZE9wdGlvbnMgJiBOU1RleHRGaW5kZXJBc3luY2hyb25vdXNEb2N1bWVu
dEZpbmRPcHRpb25zU3RhcnRzV2l0aCkKLSAgICAgICAga2l0RmluZE9wdGlvbnMgfD0gV2ViS2l0
OjpGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAga2l0RmluZE9wdGlvbnMuYWRkKFdl
YktpdDo6RmluZE9wdGlvbnM6OkF0V29yZFN0YXJ0cyk7CiAKICAgICBpZiAoIV91c2VQbGF0Zm9y
bUZpbmRVSSkgewotICAgICAgICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25z
U2hvd092ZXJsYXk7Ci0gICAgICAgIGtpdEZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlv
bnNTaG93RmluZEluZGljYXRvcjsKLSAgICAgICAga2l0RmluZE9wdGlvbnMgfD0gV2ViS2l0OjpG
aW5kT3B0aW9uc0RldGVybWluZU1hdGNoSW5kZXg7CisgICAgICAgIGtpdEZpbmRPcHRpb25zLmFk
ZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93T3ZlcmxheSk7CisgICAgICAgIGtpdEZpbmRPcHRp
b25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcik7CisgICAgICAg
IGtpdEZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpEZXRlcm1pbmVNYXRjaElu
ZGV4KTsKICAgICB9CiAKICAgICBSZXRhaW5QdHI8TlNQcm9ncmVzcz4gcHJvZ3Jlc3MgPSBbTlNQ
cm9ncmVzcyBwcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxXTsKQEAgLTIzNCw5ICsyMzQsOSBA
QCAtICh2b2lkKWZpbmRNYXRjaGVzRm9yU3RyaW5nOihOU1N0cmluZyAqCiAgICAgfSk7CiAKICAg
ICBpZiAobWF4UmVzdWx0cyA9PSAxKQotICAgICAgICBfcGFnZS0+ZmluZFN0cmluZyh0YXJnZXRT
dHJpbmcsIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KGtpdEZpbmRPcHRpb25zKSwg
bWF4UmVzdWx0cyk7CisgICAgICAgIF9wYWdlLT5maW5kU3RyaW5nKHRhcmdldFN0cmluZywga2l0
RmluZE9wdGlvbnMsIG1heFJlc3VsdHMpOwogICAgIGVsc2UKLSAgICAgICAgX3BhZ2UtPmZpbmRT
dHJpbmdNYXRjaGVzKHRhcmdldFN0cmluZywgc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9u
cz4oa2l0RmluZE9wdGlvbnMpLCBtYXhSZXN1bHRzKTsKKyAgICAgICAgX3BhZ2UtPmZpbmRTdHJp
bmdNYXRjaGVzKHRhcmdldFN0cmluZywga2l0RmluZE9wdGlvbnMsIG1heFJlc3VsdHMpOwogfQog
CiAtICh2b2lkKWdldFNlbGVjdGVkVGV4dDoodm9pZCAoXikoTlNTdHJpbmcgKnNlbGVjdGVkVGV4
dFN0cmluZykpY29tcGxldGlvbkhhbmRsZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDI2NDAxNikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTUsMTggKzU1LDE4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1XZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlKEZpbmRP
cHRpb25zIG9wdGlvbnMpCitXZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlKE9wdGlvblNldDxGaW5k
T3B0aW9ucz4gb3B0aW9ucykKIHsKICAgICBXZWJDb3JlOjpGaW5kT3B0aW9ucyByZXN1bHQ7Ci0g
ICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKKyAgICBpZiAob3B0
aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6Q2FzZUluc2Vuc2l0aXZlKSkKICAgICAgICAgcmVz
dWx0LmFkZChXZWJDb3JlOjpDYXNlSW5zZW5zaXRpdmUpOwotICAgIGlmIChvcHRpb25zICYgRmlu
ZE9wdGlvbnNBdFdvcmRTdGFydHMpCisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlv
bnM6OkF0V29yZFN0YXJ0cykpCiAgICAgICAgIHJlc3VsdC5hZGQoV2ViQ29yZTo6QXRXb3JkU3Rh
cnRzKTsKLSAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNX
b3JkU3RhcnQpCisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6OlRyZWF0TWVk
aWFsQ2FwaXRhbEFzV29yZFN0YXJ0KSkKICAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpUcmVh
dE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7Ci0gICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9u
c0JhY2t3YXJkcykKKyAgICBpZiAob3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6QmFja3dh
cmRzKSkKICAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpCYWNrd2FyZHMpOwotICAgIGlmIChv
cHRpb25zICYgRmluZE9wdGlvbnNXcmFwQXJvdW5kKQorICAgIGlmIChvcHRpb25zLmNvbnRhaW5z
KEZpbmRPcHRpb25zOjpXcmFwQXJvdW5kKSkKICAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpX
cmFwQXJvdW5kKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtODAsNyArODAsNyBAQCBGaW5k
Q29udHJvbGxlcjo6fkZpbmRDb250cm9sbGVyKCkKIHsKIH0KIAotdm9pZCBGaW5kQ29udHJvbGxl
cjo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBv
cHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBGaW5kQ29udHJvbGxlcjo6Y291
bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25TZXQ8RmluZE9wdGlv
bnM+IG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiB7CiAgICAgaWYgKG1heE1hdGNo
Q291bnQgPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogICAgICAgICAt
LW1heE1hdGNoQ291bnQ7CkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIEZyYW1lKiBmcmFtZVdp
dGhTZWxlY3Rpb24oUGFnZSogcAogICAgIHJldHVybiAwOwogfQogCi12b2lkIEZpbmRDb250cm9s
bGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3VuZCwgY29uc3QgU3RyaW5n
JiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIERp
ZFdyYXAgZGlkV3JhcCwgRmluZFVJT3JpZ2luYXRvciBvcmlnaW5hdG9yKQordm9pZCBGaW5kQ29u
dHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVuc2lnbmVkIG1h
eE1hdGNoQ291bnQsIERpZFdyYXAgZGlkV3JhcCwgRmluZFVJT3JpZ2luYXRvciBvcmlnaW5hdG9y
KQogewogICAgIEZyYW1lKiBzZWxlY3RlZEZyYW1lID0gZnJhbWVXaXRoU2VsZWN0aW9uKG1fd2Vi
UGFnZS0+Y29yZVBhZ2UoKSk7CiAgICAgCkBAIC0xNTMsOSArMTUzLDkgQEAgdm9pZCBGaW5kQ29u
dHJvbGxlcjo6dXBkYXRlRmluZFVJQWZ0ZXJQYQogCiAgICAgICAgIG1fd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGYWlsVG9GaW5kU3RyaW5nKHN0cmluZykpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHNob3VsZFNob3dPdmVybGF5ID0gb3B0aW9ucyAmIEZpbmRPcHRp
b25zU2hvd092ZXJsYXk7Ci0gICAgICAgIGJvb2wgc2hvdWxkU2hvd0hpZ2hsaWdodCA9IG9wdGlv
bnMgJiBGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQ7Ci0gICAgICAgIGJvb2wgc2hvdWxkRGV0ZXJt
aW5lTWF0Y2hJbmRleCA9IG9wdGlvbnMgJiBGaW5kT3B0aW9uc0RldGVybWluZU1hdGNoSW5kZXg7
CisgICAgICAgIHNob3VsZFNob3dPdmVybGF5ID0gb3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9u
czo6U2hvd092ZXJsYXkpOworICAgICAgICBib29sIHNob3VsZFNob3dIaWdobGlnaHQgPSBvcHRp
b25zLmNvbnRhaW5zKEZpbmRPcHRpb25zOjpTaG93SGlnaGxpZ2h0KTsKKyAgICAgICAgYm9vbCBz
aG91bGREZXRlcm1pbmVNYXRjaEluZGV4ID0gb3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6
RGV0ZXJtaW5lTWF0Y2hJbmRleCk7CiAgICAgICAgIHVuc2lnbmVkIG1hdGNoQ291bnQgPSAxOwog
CiAgICAgICAgIGlmIChzaG91bGREZXRlcm1pbmVNYXRjaEluZGV4KSB7CkBAIC0yMjEsMTEgKzIy
MSwxMSBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhCiAgICAgICAg
IG1fZmluZFBhZ2VPdmVybGF5LT5zZXROZWVkc0Rpc3BsYXkoKTsKICAgICB9CiAgICAgCi0gICAg
aWYgKGZvdW5kICYmICghKG9wdGlvbnMgJiBGaW5kT3B0aW9uc1Nob3dGaW5kSW5kaWNhdG9yKSB8
fCAhc2VsZWN0ZWRGcmFtZSB8fCAhdXBkYXRlRmluZEluZGljYXRvcigqc2VsZWN0ZWRGcmFtZSwg
c2hvdWxkU2hvd092ZXJsYXkpKSkKKyAgICBpZiAoZm91bmQgJiYgKCFvcHRpb25zLmNvbnRhaW5z
KEZpbmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcikgfHwgIXNlbGVjdGVkRnJhbWUgfHwgIXVw
ZGF0ZUZpbmRJbmRpY2F0b3IoKnNlbGVjdGVkRnJhbWUsIHNob3VsZFNob3dPdmVybGF5KSkpCiAg
ICAgICAgIGhpZGVGaW5kSW5kaWNhdG9yKCk7CiB9CiAKLXZvaWQgRmluZENvbnRyb2xsZXI6OmZp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2ln
bmVkIG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNrSUQpCit2b2lk
IEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25T
ZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byog
cGx1Z2luVmlldyA9IFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFtZShtX3dlYlBhZ2UtPm1haW5G
cmFtZSgpKTsKIApAQCAtMjY3LDkgKzI2Nyw5IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmZpbmRT
dHJpbmcoY29uc3QgU3QKICAgICAgICAgZGlkRmluZFN0cmluZygpOwogCiAgICAgICAgIGlmICgh
Zm91bmRTdHJpbmdTdGFydHNBZnRlclNlbGVjdGlvbikgewotICAgICAgICAgICAgaWYgKG9wdGlv
bnMgJiBGaW5kT3B0aW9uc0JhY2t3YXJkcykKKyAgICAgICAgICAgIGlmIChvcHRpb25zLmNvbnRh
aW5zKEZpbmRPcHRpb25zOjpCYWNrd2FyZHMpKQogICAgICAgICAgICAgICAgIG1fZm91bmRTdHJp
bmdNYXRjaEluZGV4LS07Ci0gICAgICAgICAgICBlbHNlIGlmICghKG9wdGlvbnMgJiBGaW5kT3B0
aW9uc05vSW5kZXhDaGFuZ2UpKQorICAgICAgICAgICAgZWxzZSBpZiAoIW9wdGlvbnMuY29udGFp
bnMoRmluZE9wdGlvbnM6Ok5vSW5kZXhDaGFuZ2UpKQogICAgICAgICAgICAgICAgIG1fZm91bmRT
dHJpbmdNYXRjaEluZGV4Kys7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzksMTEgKzI3OSwxMCBA
QCB2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0CiAgICAgICAgIHByb3Rl
Y3RlZFdlYlBhZ2UtPmZpbmRDb250cm9sbGVyKCkudXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xs
KGZvdW5kLCBzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGRpZFdyYXAsIEZpbmRVSU9y
aWdpbmF0b3I6OkZpbmRTdHJpbmcpOwogICAgIH0pOwogCi0gICAgaWYgKGNhbGxiYWNrSUQpCi0g
ICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kU3RyaW5n
Q2FsbGJhY2soZm91bmQsICpjYWxsYmFja0lEKSk7CisgICAgY29tcGxldGlvbkhhbmRsZXIoZm91
bmQpOwogfQogCi12b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBT
dHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKK3ZvaWQgRmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpCiB7CiAgICAgbV9maW5kTWF0Y2hlcy5jbGVhcigpOwogICAgIGludCBpbmRleEZvclNl
bGVjdGlvbjsKQEAgLTI5Niw3ICsyOTUsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3Ry
aW5nTWF0Y2hlcyhjCiAKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkRmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBtYXRjaFJlY3RzLCBpbmRleEZvclNlbGVj
dGlvbikpOwogCi0gICAgaWYgKCEob3B0aW9ucyAmIEZpbmRPcHRpb25zU2hvd092ZXJsYXkgfHwg
b3B0aW9ucyAmIEZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IpKQorICAgIGlmICghb3B0aW9u
cy5jb250YWlucyhGaW5kT3B0aW9uczo6U2hvd092ZXJsYXkpICYmICFvcHRpb25zLmNvbnRhaW5z
KEZpbmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcikpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGJvb2wgZm91bmQgPSAhbV9maW5kTWF0Y2hlcy5pc0VtcHR5KCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgJKHJldmlzaW9u
IDI2NDAxNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEzICs1NywxMyBAQCBwdWJsaWM6CiAgICAgZXhw
bGljaXQgRmluZENvbnRyb2xsZXIoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfkZpbmRDb250cm9s
bGVyKCk7CiAKLSAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMs
IHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+KTsKLSAgICB2b2lk
IGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgT3B0aW9u
U2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJp
bmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKICAg
ICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZv
aWQgc2VsZWN0RmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgaW5kaWNh
dGVGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBoaWRlRmluZFVJKCk7
Ci0gICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMs
IHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNv
bnN0IFN0cmluZyYsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4sIHVuc2lnbmVkIG1heE1hdGNoQ291
bnQpOwogICAgIHVpbnQzMl90IHJlcGxhY2VNYXRjaGVzKGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4m
IG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudFRleHQsIGJvb2wgc2VsZWN0
aW9uT25seSk7CiAgICAgCiAgICAgdm9pZCBoaWRlRmluZEluZGljYXRvcigpOwpAQCAtODgsNyAr
ODgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlRmluZEluZGljYXRvcihXZWJDb3JlOjpG
cmFtZSYgc2VsZWN0ZWRGcmFtZSwgYm9vbCBpc1Nob3dpbmdPdmVybGF5LCBib29sIHNob3VsZEFu
aW1hdGUgPSB0cnVlKTsKIAogICAgIGVudW0gY2xhc3MgRmluZFVJT3JpZ2luYXRvciA6IHVpbnQ4
X3QgeyBGaW5kU3RyaW5nLCBGaW5kU3RyaW5nTWF0Y2hlcyB9OwotICAgIHZvaWQgdXBkYXRlRmlu
ZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBXZWJDb3JlOjpEaWRXcmFwLCBGaW5kVUlPcmlnaW5h
dG9yKTsKKyAgICB2b2lkIHVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChib29sIGZvdW5kLCBj
b25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50LCBXZWJDb3JlOjpEaWRXcmFwLCBGaW5kVUlPcmlnaW5hdG9yKTsKIAogICAgIHZvaWQgd2ls
bEZpbmRTdHJpbmcoKTsKICAgICB2b2lkIGRpZEZpbmRTdHJpbmcoKTsKQEAgLTExNiw2ICsxMTYs
NiBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1XZWJDb3JlOjpGaW5kT3B0aW9ucyBjb3JlKEZp
bmRPcHRpb25zKTsKK1dlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmUoT3B0aW9uU2V0PEZpbmRPcHRp
b25zPik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI2NDAxNikKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MTg2LDEyICs0MTg2LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZlT3BlblBhbmVsUmVz
dWx0TGkKICAgICBtX2FjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gV1RGTW92ZShvcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lcik7CiB9CiAKLWJvb2wgV2ViUGFnZTo6ZmluZFN0cmluZ0Zyb21J
bmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmIHRhcmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykK
K2Jvb2wgV2ViUGFnZTo6ZmluZFN0cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcm
IHRhcmdldCwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25zKQogewogICAgIHJldHVybiBt
X3BhZ2UtPmZpbmRTdHJpbmcodGFyZ2V0LCBjb3JlKG9wdGlvbnMpKTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpmaW5kU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmIHRh
cmdldCwgRmluZE9wdGlvbnMgb3B0aW9ucykKK3ZvaWQgV2ViUGFnZTo6ZmluZFN0cmluZ01hdGNo
ZXNGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiB0YXJnZXQsIE9wdGlvblNldDxGaW5k
T3B0aW9ucz4gb3B0aW9ucykKIHsKICAgICBmaW5kQ29udHJvbGxlcigpLmZpbmRTdHJpbmdNYXRj
aGVzKHRhcmdldCwgb3B0aW9ucywgMCk7CiB9CkBAIC00MjAxLDE0ICs0MjAxLDE0IEBAIHZvaWQg
V2ViUGFnZTo6cmVwbGFjZVN0cmluZ01hdGNoZXNGcm9tSW4KICAgICBmaW5kQ29udHJvbGxlcigp
LnJlcGxhY2VNYXRjaGVzKG1hdGNoSW5kaWNlcywgcmVwbGFjZW1lbnRUZXh0LCBzZWxlY3Rpb25P
bmx5KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCB1aW50MzJfdCBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50LCBPcHRpb25hbDxDYWxs
YmFja0lEPiBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVpbnQzMl90IG1heE1h
dGNoQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3RyaW5nKHN0cmluZywgc3RhdGljX2Nh
c3Q8RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50LCBjYWxsYmFja0lEKTsKKyAg
ICBmaW5kQ29udHJvbGxlcigpLmZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENv
dW50LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6Zmlu
ZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9wdGlvbnMsIHVp
bnQzMl90IG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGVzKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMsIHVpbnQz
Ml90IG1heE1hdGNoQ291bnQpCiB7Ci0gICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3RyaW5nTWF0
Y2hlcyhzdHJpbmcsIHN0YXRpY19jYXN0PEZpbmRPcHRpb25zPihvcHRpb25zKSwgbWF4TWF0Y2hD
b3VudCk7CisgICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9w
dGlvbnMsIG1heE1hdGNoQ291bnQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmdldEltYWdlRm9yRmlu
ZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCkBAIC00MjMxLDkgKzQyMzEsOSBAQCB2b2lkIFdl
YlBhZ2U6OmhpZGVGaW5kVUkoKQogICAgIGZpbmRDb250cm9sbGVyKCkuaGlkZUZpbmRVSSgpOwog
fQogCi12b2lkIFdlYlBhZ2U6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmlu
ZywgdWludDMyX3Qgb3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hDb3VudCkKK3ZvaWQgV2ViUGFn
ZTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBPcHRpb25TZXQ8Rmlu
ZE9wdGlvbnM+IG9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpCiB7Ci0gICAgZmluZENv
bnRyb2xsZXIoKS5jb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBzdGF0aWNfY2FzdDxGaW5kT3B0
aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOworICAgIGZpbmRDb250cm9sbGVyKCkuY291
bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCk7CiB9CiAKIHZv
aWQgV2ViUGFnZTo6cmVwbGFjZU1hdGNoZXMoY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJ
bmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw3ICsyNzcs
NyBAQCBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI7CiBjbGFzcyBXZWJXaGVlbEV2ZW50
OwogY2xhc3MgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb247CiAKLWVudW0gRmluZE9wdGlvbnMg
OiB1aW50MTZfdDsKK2VudW0gY2xhc3MgRmluZE9wdGlvbnMgOiB1aW50MTZfdDsKIGVudW0gY2xh
c3MgRHJhZ0NvbnRyb2xsZXJBY3Rpb24gOiB1aW50OF90OwogZW51bSBjbGFzcyBTeW50aGV0aWNF
ZGl0aW5nQ29tbWFuZFR5cGUgOiB1aW50OF90OwogCkBAIC00NzEsOCArNDcxLDggQEAgcHVibGlj
OgogICAgIEluamVjdGVkQnVuZGxlUGFnZUZ1bGxTY3JlZW5DbGllbnQmIGluamVjdGVkQnVuZGxl
RnVsbFNjcmVlbkNsaWVudCgpIHsgcmV0dXJuIG1fZnVsbFNjcmVlbkNsaWVudDsgfQogI2VuZGlm
CiAKLSAgICBib29sIGZpbmRTdHJpbmdGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiwg
RmluZE9wdGlvbnMpOwotICAgIHZvaWQgZmluZFN0cmluZ01hdGNoZXNGcm9tSW5qZWN0ZWRCdW5k
bGUoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMpOworICAgIGJvb2wgZmluZFN0cmluZ0Zyb21J
bmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+KTsKKyAg
ICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYs
IE9wdGlvblNldDxGaW5kT3B0aW9ucz4pOwogICAgIHZvaWQgcmVwbGFjZVN0cmluZ01hdGNoZXNG
cm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJbmRpY2VzLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5KTsKIAogICAg
IFdlYkZyYW1lJiBtYWluV2ViRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZTsgfQpA
QCAtMTU4MywxMyArMTU4MywxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVhcHBseUVkaXRDb21t
YW5kKFdlYlVuZG9TdGVwSUQgY29tbWFuZElEKTsKICAgICB2b2lkIGRpZFJlbW92ZUVkaXRDb21t
YW5kKFdlYlVuZG9TdGVwSUQgY29tbWFuZElEKTsKIAotICAgIHZvaWQgZmluZFN0cmluZyhjb25z
dCBTdHJpbmcmLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hDb3VudCwg
T3B0aW9uYWw8Q2FsbGJhY2tJRD4pOwotICAgIHZvaWQgZmluZFN0cmluZ01hdGNoZXMoY29uc3Qg
U3RyaW5nJiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpOwor
ICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+
LCB1aW50MzJfdCBtYXhNYXRjaENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxG
aW5kT3B0aW9ucz4sIHVpbnQzMl90IG1heE1hdGNoQ291bnQpOwogICAgIHZvaWQgZ2V0SW1hZ2VG
b3JGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0
Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBpbmRpY2F0ZUZpbmRNYXRjaCh1aW50
MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKLSAgICB2b2lkIGNvdW50
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdWludDMy
X3QgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3Ry
aW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdWludDMyX3QgbWF4TWF0Y2hDb3VudCk7CiAg
ICAgdm9pZCByZXBsYWNlTWF0Y2hlcyhjb25zdCBWZWN0b3I8dWludDMyX3Q+JiBtYXRjaEluZGlj
ZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIENh
bGxiYWNrSUQpOwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyNjQwMTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yOTYsMTMgKzI5NiwxMyBAQCBH
ZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWluCiAgICAgUG9zdEluamVjdGVk
QnVuZGxlTWVzc2FnZShTdHJpbmcgbWVzc2FnZU5hbWUsIFdlYktpdDo6VXNlckRhdGEgbWVzc2Fn
ZUJvZHkpCiAKICAgICAjIEZpbmQuCi0gICAgRmluZFN0cmluZyhTdHJpbmcgc3RyaW5nLCB1aW50
MzJfdCBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgT3B0aW9uYWw8V2ViS2l0
OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEKQotICAgIEZpbmRTdHJpbmdNYXRjaGVzKFN0cmluZyBz
dHJpbmcsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQorICAg
IEZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZywgT3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+
IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSAtPiAoYm9vbCBmb3VuZCkgQXN5
bmMKKyAgICBGaW5kU3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCBPcHRpb25TZXQ8V2ViS2l0
OjpGaW5kT3B0aW9ucz4gZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiAgICAg
R2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkKICAgICBTZWxlY3RGaW5k
TWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCkKICAgICBJbmRpY2F0ZUZpbmRNYXRjaCh1aW50MzJf
dCBtYXRjaEluZGV4KQogICAgIEhpZGVGaW5kVUkoKQotICAgIENvdW50U3RyaW5nTWF0Y2hlcyhT
dHJpbmcgc3RyaW5nLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKKyAgICBDb3VudFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogICAg
IFJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4gbWF0Y2hJbmRpY2VzLCBTdHJpbmcgcmVw
bGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIAogICAgIEFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihT
dHJpbmcgbWltZVR5cGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403749</attachid>
            <date>2020-07-07 18:16:15 -0700</date>
            <delta_ts>2020-07-07 19:28:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-214063-20200707191614.patch</filename>
            <type>text/plain</type>
            <size>38646</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjQwNDkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA3LTA3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW9kZXJuaXplIEZp
bmRPcHRpb25zIElQQyBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQwNjMKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKwor
ICAgICAgICBVc2UgY2FsbFdpdGhBc3luY1JlcGx5IGluc3RlYWQgb2YgR2VuZXJpY0NhbGxiYWNr
LgorICAgICAgICBVc2UgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBpbnN0ZWFkIG9mIEZpbmRPcHRp
b25zIG9yIHVpbnQzMl90LgorICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAg
ICAgKiBTaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0Lmg6CisgICAgICAgIChXZWJLaXQ6OnRv
RmluZE9wdGlvbnMpOgorICAgICAgICAqIFNoYXJlZC9XZWJGaW5kT3B0aW9ucy5oOgorICAgICAg
ICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bToKKyAgICAgICAgKHRvRmluZE9wdGlvbnMpOgorICAgICAgICAoLVtXS1dlYlZpZXcgZmluZFN0
cmluZzp3aXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlu
ZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRj
aGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nQ2FsbGJhY2sp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNvcmUpOgorICAgICAgICAoV2Vi
S2l0OjpGaW5kQ29udHJvbGxlcjo6Y291bnRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKFdlYktp
dDo6RmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbCk6CisgICAgICAg
IChXZWJLaXQ6OkZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
RmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmdNYXRjaGVzKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMC0wNy0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBzZW5kV2l0aEFzeW5jUmVwbHkg
aW5zdGVhZCBvZiBFZGl0aW5nUmFuZ2VDYWxsYmFjawpJbmRleDogU291cmNlL1dlYktpdC9TY3Jp
cHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyNjQwNDkpCisrKyBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NjIsNiArNjYy
LDcgQEAgZGVmIGhlYWRlcnNfZm9yX3R5cGUodHlwZSk6CiAgICAgICAgICdXZWJLaXQ6OkFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCc6IFsnIkRyYXdpbmdBcmVhSW5mby5oIiddLAogICAgICAgICAnV2Vi
S2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUnOiBbJyJTZXNzaW9uU3RhdGUuaCInXSwKICAg
ICAgICAgJ1dlYktpdDo6Q29udGVudFdvcmxkSWRlbnRpZmllcic6IFsnIkNvbnRlbnRXb3JsZFNo
YXJlZC5oIiddLAorICAgICAgICAnV2ViS2l0OjpGaW5kT3B0aW9ucyc6IFsnIldlYkZpbmRPcHRp
b25zLmgiJ10sCiAgICAgICAgICdXZWJLaXQ6Okdlc3R1cmVSZWNvZ25pemVyU3RhdGUnOiBbJyJH
ZXN0dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6R2VzdHVyZVR5cGUnOiBbJyJHZXN0
dXJlVHlwZXMuaCInXSwKICAgICAgICAgJ1dlYktpdDo6TGF5ZXJIb3N0aW5nQ29udGV4dElEJzog
WyciTGF5ZXJIb3N0aW5nQ29udGV4dC5oIiddLApJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViRmluZE9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJG
aW5kT3B0aW9ucy5oCShyZXZpc2lvbiAyNjQwNDkpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJGaW5kT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxOSArMjUsNDEgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRW51bVRyYWl0cy5oPgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotZW51bSBGaW5kT3B0aW9ucyA6IHVpbnQxNl90IHsKLSAgICBGaW5kT3B0aW9uc0Nh
c2VJbnNlbnNpdGl2ZSA9IDEgPDwgMCwKLSAgICBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA9IDEg
PDwgMSwKLSAgICBGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0ID0gMSA8
PCAyLAotICAgIEZpbmRPcHRpb25zQmFja3dhcmRzID0gMSA8PCAzLAotICAgIEZpbmRPcHRpb25z
V3JhcEFyb3VuZCA9IDEgPDwgNCwKLSAgICBGaW5kT3B0aW9uc1Nob3dPdmVybGF5ID0gMSA8PCA1
LAotICAgIEZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgPSAxIDw8IDYsCi0gICAgRmluZE9w
dGlvbnNTaG93SGlnaGxpZ2h0ID0gMSA8PCA3LAotICAgIEZpbmRPcHRpb25zRGV0ZXJtaW5lTWF0
Y2hJbmRleCA9IDEgPDwgOCwKLSAgICBGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UgPSAxIDw8IDks
CitlbnVtIGNsYXNzIEZpbmRPcHRpb25zIDogdWludDE2X3QgeworICAgIENhc2VJbnNlbnNpdGl2
ZSA9IDEgPDwgMCwKKyAgICBBdFdvcmRTdGFydHMgPSAxIDw8IDEsCisgICAgVHJlYXRNZWRpYWxD
YXBpdGFsQXNXb3JkU3RhcnQgPSAxIDw8IDIsCisgICAgQmFja3dhcmRzID0gMSA8PCAzLAorICAg
IFdyYXBBcm91bmQgPSAxIDw8IDQsCisgICAgU2hvd092ZXJsYXkgPSAxIDw8IDUsCisgICAgU2hv
d0ZpbmRJbmRpY2F0b3IgPSAxIDw8IDYsCisgICAgU2hvd0hpZ2hsaWdodCA9IDEgPDwgNywKKyAg
ICBEZXRlcm1pbmVNYXRjaEluZGV4ID0gMSA8PCA4LAorICAgIE5vSW5kZXhDaGFuZ2UgPSAxIDw8
IDksCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworbmFtZXNwYWNlIFdURiB7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpGaW5kT3B0aW9ucz4geworICAgIHVz
aW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnMsCisg
ICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSwKKyAgICAgICAgV2Vi
S2l0OjpGaW5kT3B0aW9uczo6QXRXb3JkU3RhcnRzLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRp
b25zOjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCwKKyAgICAgICAgV2ViS2l0OjpGaW5k
T3B0aW9uczo6QmFja3dhcmRzLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpXcmFwQXJv
dW5kLAorICAgICAgICBXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93T3ZlcmxheSwKKyAgICAgICAg
V2ViS2l0OjpGaW5kT3B0aW9uczo6U2hvd0ZpbmRJbmRpY2F0b3IsCisgICAgICAgIFdlYktpdDo6
RmluZE9wdGlvbnM6OlNob3dIaWdobGlnaHQsCisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6
OkRldGVybWluZU1hdGNoSW5kZXgsCisgICAgICAgIFdlYktpdDo6RmluZE9wdGlvbnM6Ok5vSW5k
ZXhDaGFuZ2UKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkocmV2aXNpb24gMjY0MDQ5
KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTaGFyZWRBUElDYXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTc1MywyOCArNzUzLDI4IEBAIGlubGluZSBXS0NvbnRleHRNZW51SXRlbVR5
cGUgdG9BUEkoV2ViQ28KICAgICB9CiB9CiAKLWlubGluZSBGaW5kT3B0aW9ucyB0b0ZpbmRPcHRp
b25zKFdLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK2lubGluZSBPcHRpb25TZXQ8RmluZE9w
dGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25zKQogewotICAg
IHVuc2lnbmVkIGZpbmRPcHRpb25zID0gMDsKKyAgICBPcHRpb25TZXQ8RmluZE9wdGlvbnM+IGZp
bmRPcHRpb25zOwogCiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9uc0Nhc2VJ
bnNlbnNpdGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNDYXNlSW5zZW5z
aXRpdmU7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChGaW5kT3B0aW9uczo6Q2FzZUluc2Vuc2l0
aXZlKTsKICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zQXRXb3JkU3RhcnRz
KQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAg
ICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpBdFdvcmRTdGFydHMpOwogICAgIGlmICh3
a0ZpbmRPcHRpb25zICYga1dLRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFy
dCkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxB
c1dvcmRTdGFydDsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25zOjpUcmVhdE1l
ZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5k
T3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNCYWNr
d2FyZHM7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChGaW5kT3B0aW9uczo6QmFja3dhcmRzKTsK
ICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zV3JhcEFyb3VuZCkKLSAgICAg
ICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0
aW9ucy5hZGQoRmluZE9wdGlvbnM6OldyYXBBcm91bmQpOwogICAgIGlmICh3a0ZpbmRPcHRpb25z
ICYga1dLRmluZE9wdGlvbnNTaG93T3ZlcmxheSkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmlu
ZE9wdGlvbnNTaG93T3ZlcmxheTsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKEZpbmRPcHRpb25z
OjpTaG93T3ZlcmxheSk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBrV0tGaW5kT3B0aW9uc1No
b3dGaW5kSW5kaWNhdG9yKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc1Nob3dG
aW5kSW5kaWNhdG9yOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoRmluZE9wdGlvbnM6OlNob3dG
aW5kSW5kaWNhdG9yKTsKICAgICBpZiAod2tGaW5kT3B0aW9ucyAmIGtXS0ZpbmRPcHRpb25zU2hv
d0hpZ2hsaWdodCkKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gRmluZE9wdGlvbnNTaG93SGlnaGxp
Z2h0OworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoRmluZE9wdGlvbnM6OlNob3dIaWdobGlnaHQp
OwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZpbmRPcHRpb25zPihmaW5kT3B0aW9ucyk7Cisg
ICAgcmV0dXJuIGZpbmRPcHRpb25zOwogfQogCiBpbmxpbmUgV0tGcmFtZU5hdmlnYXRpb25UeXBl
IHRvQVBJKFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIHR5cGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI2NDA0OSkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMjcs
NyArNDAyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwbHVnaW5ab29tRmFjdG9yRGlkQ2gKICAg
ICBtX3BsdWdpblpvb21GYWN0b3IgPSBwbHVnaW5ab29tRmFjdG9yOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRp
b25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlvblNldDxGaW5kT3B0
aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKICAgICBpZiAoc3RyaW5n
LmlzRW1wdHkoKSkgewogICAgICAgICBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIFZlY3Rv
cjxWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4+ICgpLCAwKTsKQEAgLTQwMzcsMjIgKzQwMzcsOSBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRj
aENvdW50KSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBG
dW5jdGlvbjx2b2lkIChib29sLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAg
IE9wdGlvbmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNrSUQ7Ci0gICAgaWYgKGNhbGxiYWNrRnVuY3Rp
b24pCi0gICAgICAgIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlBhZ2VQcm94eTo6ZmluZFN0cmluZyJfcykpOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQp
KTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmdDYWxsYmFjayhib29sIGZvdW5k
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCi17Ci0gICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJh
Y2tzLnRha2U8Qm9vbENhbGxiYWNrPihjYWxsYmFja0lEKTsKLSAgICBpZiAoIWNhbGxiYWNrKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVy
blZhbHVlKGZvdW5kKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRN
YXRjaChpbnQzMl90IG1hdGNoSW5kZXgpCkBAIC00MDc1LDcgKzQwNjIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6aGlkZUZpbmRVSSgpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlkZUZp
bmRVSSgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25z
dCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hD
b3VudCkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAy
NjQwNDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5NywyMSArMTA5NywyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwbHVnaW5a
b29tRmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSk7CiAKICAgICAvLyBGaW5kLgotICAgIHZvaWQgZmlu
ZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCwgRnVuY3Rpb248dm9pZCAoYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgPSBudWxscHRy
KTsKLSAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiA9IFtdKGJvb2wpIHsgfSk7CisgICAgdm9pZCBm
aW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+LCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKGlu
dDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRj
aEluZGV4KTsKICAgICB2b2lkIGluZGljYXRlRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7
CiAgICAgdm9pZCBkaWRHZXRJbWFnZUZvckZpbmRNYXRjaChjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYgY29udGVudEltYWdlSGFuZGxlLCB1aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2
b2lkIGhpZGVGaW5kVUkoKTsKLSAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJp
bmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBjb3Vu
dFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5z
aWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCByZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWlu
dDMyX3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9v
bCBzZWxlY3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CiAgICAgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwg
dWludDMyX3QgbWF0Y2hDb3VudCk7CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdl
YkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiwgdWludDY0X3QgLyogV2ViQ29yZTo6VGV4dEluZGlj
YXRvcldpbmRvd0xpZmV0aW1lICovIGxpZmV0aW1lID0gMCAvKiBQZXJtYW5lbnQgKi8pOwogICAg
IHZvaWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKICAgICB2b2lk
IGNsZWFyVGV4dEluZGljYXRvcigpOwogCi0gICAgdm9pZCBmaW5kU3RyaW5nQ2FsbGJhY2soYm9v
bCBmb3VuZCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQs
IGludDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKTsKICAgICB2b2lkIGRpZEZh
aWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0
Y2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+
PiYgbWF0Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgko
cmV2aXNpb24gMjY0MDQ5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDYgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBEcmF3VG9QREZDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVu
Y2UgcGRmRGF0YSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgTm93UGxheWlu
Z0luZm9DYWxsYmFjayhib29sIGFjdGl2ZSwgYm9vbCByZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBw
bGljYXRpb24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRp
bWUsIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQogI2VuZGlmCi0gICAgRmluZFN0cmluZ0NhbGxiYWNrKGJvb2wgZm91bmQsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRv
dWJsZSBzY2FsZUZhY3RvcikKICAgICBQbHVnaW5TY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUg
em9vbUZhY3RvcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjY0MDQ5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTEyNCwxOCArMTEy
NCwxOCBAQCAtIChDR0Zsb2F0KXBhZ2Vab29tCiAgICAgcmV0dXJuIF9wYWdlLT5wYWdlWm9vbUZh
Y3RvcigpOwogfQogCi1pbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdL
RmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCitpbmxpbmUgT3B0aW9uU2V0PFdlYktp
dDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoV0tGaW5kQ29uZmlndXJhdGlvbiAqY29uZmln
dXJhdGlvbikKIHsKLSAgICB1bnNpZ25lZCBmaW5kT3B0aW9ucyA9IDA7CisgICAgT3B0aW9uU2V0
PFdlYktpdDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zOwogCiAgICAgaWYgKCFjb25maWd1cmF0
aW9uLmNhc2VTZW5zaXRpdmUpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9w
dGlvbnNDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZp
bmRPcHRpb25zOjpDYXNlSW5zZW5zaXRpdmUpOwogICAgIGlmIChjb25maWd1cmF0aW9uLmJhY2t3
YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJk
czsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkJhY2t3YXJk
cyk7CiAgICAgaWYgKGNvbmZpZ3VyYXRpb24ud3JhcHMpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9
IFdlYktpdDo6RmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQo
V2ViS2l0OjpGaW5kT3B0aW9uczo6V3JhcEFyb3VuZCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4oZmluZE9wdGlvbnMpOworICAgIHJldHVybiBmaW5kT3B0
aW9uczsKIH0KIAogLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoQ29u
ZmlndXJhdGlvbjooV0tGaW5kQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKFdLRmluZFJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uSGFuZGxl
cgpAQCAtMTE0NSw4ICsxMTQ1LDggQEAgLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0
cmluZyB3aQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgX3BhZ2UtPmZpbmRTdHJpbmco
c3RyaW5nLCB0b0ZpbmRPcHRpb25zKGNvbmZpZ3VyYXRpb24pLCAxLCBbaGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICBoYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxv
Y10gX2luaXRXaXRoTWF0Y2hGb3VuZDooZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yOjpOb25lICYmIGZvdW5kKV0gYXV0b3JlbGVhc2VdKTsKKyAgICBfcGFnZS0+ZmluZFN0cmlu
ZyhzdHJpbmcsIHRvRmluZE9wdGlvbnMoY29uZmlndXJhdGlvbiksIDEsIFtoYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBmb3VuZCkgeworICAgICAgICBoYW5k
bGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpmb3VuZF0gYXV0
b3JlbGVhc2VdKTsKICAgICB9KTsKIH0KIApAQCAtMjU2OSwzMiArMjU2OSwzMiBAQCAtICh2b2lk
KV9zZXRGaW5kRGVsZWdhdGU6KGlkPF9XS0ZpbmREZWxlCiAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0
OjpGaW5kQ2xpZW50Jj4oX3BhZ2UtPmZpbmRDbGllbnQoKSkuc2V0RGVsZWdhdGUoZmluZERlbGVn
YXRlKTsKIH0KIAotc3RhdGljIGlubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlv
bnMoX1dLRmluZE9wdGlvbnMgd2tGaW5kT3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0
PFdlYktpdDo6RmluZE9wdGlvbnM+IHRvRmluZE9wdGlvbnMoX1dLRmluZE9wdGlvbnMgd2tGaW5k
T3B0aW9ucykKIHsKLSAgICB1bnNpZ25lZCBmaW5kT3B0aW9ucyA9IDA7CisgICAgT3B0aW9uU2V0
PFdlYktpdDo6RmluZE9wdGlvbnM+IGZpbmRPcHRpb25zOwogCiAgICAgaWYgKHdrRmluZE9wdGlv
bnMgJiBfV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSkKLSAgICAgICAgZmluZE9wdGlvbnMg
fD0gV2ViS2l0OjpGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZTsKKyAgICAgICAgZmluZE9wdGlv
bnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkNhc2VJbnNlbnNpdGl2ZSk7CiAgICAgaWYgKHdr
RmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cykKLSAgICAgICAgZmluZE9w
dGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0F0V29yZFN0YXJ0czsKKyAgICAgICAgZmluZE9w
dGlvbnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkF0V29yZFN0YXJ0cyk7CiAgICAgaWYgKHdr
RmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc1RyZWF0TWVkaWFsQ2FwaXRhbEFzV29yZFN0YXJ0
KQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zVHJlYXRNZWRpYWxD
YXBpdGFsQXNXb3JkU3RhcnQ7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRP
cHRpb25zOjpUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CiAgICAgaWYgKHdrRmluZE9w
dGlvbnMgJiBfV0tGaW5kT3B0aW9uc0JhY2t3YXJkcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0g
V2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKKyAgICAgICAgZmluZE9wdGlvbnMuYWRkKFdl
YktpdDo6RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBf
V0tGaW5kT3B0aW9uc1dyYXBBcm91bmQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6
RmluZE9wdGlvbnNXcmFwQXJvdW5kOworICAgICAgICBmaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpG
aW5kT3B0aW9uczo6V3JhcEFyb3VuZCk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5k
T3B0aW9uc1Nob3dPdmVybGF5KQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRP
cHRpb25zU2hvd092ZXJsYXk7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRP
cHRpb25zOjpTaG93T3ZlcmxheSk7CiAgICAgaWYgKHdrRmluZE9wdGlvbnMgJiBfV0tGaW5kT3B0
aW9uc1Nob3dGaW5kSW5kaWNhdG9yKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZp
bmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3I7CisgICAgICAgIGZpbmRPcHRpb25zLmFkZChXZWJL
aXQ6OkZpbmRPcHRpb25zOjpTaG93RmluZEluZGljYXRvcik7CiAgICAgaWYgKHdrRmluZE9wdGlv
bnMgJiBfV0tGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQpCi0gICAgICAgIGZpbmRPcHRpb25zIHw9
IFdlYktpdDo6RmluZE9wdGlvbnNTaG93SGlnaGxpZ2h0OworICAgICAgICBmaW5kT3B0aW9ucy5h
ZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6U2hvd0hpZ2hsaWdodCk7CiAgICAgaWYgKHdrRmluZE9w
dGlvbnMgJiBfV0tGaW5kT3B0aW9uc05vSW5kZXhDaGFuZ2UpCi0gICAgICAgIGZpbmRPcHRpb25z
IHw9IFdlYktpdDo6RmluZE9wdGlvbnNOb0luZGV4Q2hhbmdlOworICAgICAgICBmaW5kT3B0aW9u
cy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6Tm9JbmRleENoYW5nZSk7CiAgICAgaWYgKHdrRmlu
ZE9wdGlvbnMgJiBfV0tGaW5kT3B0aW9uc0RldGVybWluZU1hdGNoSW5kZXgpCi0gICAgICAgIGZp
bmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNEZXRlcm1pbmVNYXRjaEluZGV4OworICAg
ICAgICBmaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9uczo6RGV0ZXJtaW5lTWF0Y2hJ
bmRleCk7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4oZmlu
ZE9wdGlvbnMpOworICAgIHJldHVybiBmaW5kT3B0aW9uczsKIH0KIAogLSAodm9pZClfY291bnRT
dHJpbmdNYXRjaGVzOihOU1N0cmluZyAqKXN0cmluZyBvcHRpb25zOihfV0tGaW5kT3B0aW9ucylv
cHRpb25zIG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0RmluZENvbnRyb2xsZXIu
Y3BwCShyZXZpc2lvbiAyNjQwNDkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRGaW5kQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDcg
QEAgdHlwZWRlZiBlbnVtIHsKIAogc3RydWN0IF9XZWJLaXRGaW5kQ29udHJvbGxlclByaXZhdGUg
ewogICAgIENTdHJpbmcgc2VhcmNoVGV4dDsKLSAgICAvLyBJbnRlcnByZXRlZCBhcyBXZWJLaXQ6
OkZpbmRPcHRpb25zLgotICAgIHVpbnQzMl90IGZpbmRPcHRpb25zOworICAgIE9wdGlvblNldDxX
ZWJLaXQ6OkZpbmRPcHRpb25zPiBmaW5kT3B0aW9uczsKICAgICB1bnNpZ25lZCBtYXhNYXRjaENv
dW50OwogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CiB9OwpAQCAtODMsMjIgKzgyLDI5IEBA
IHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwKIAogV0VCS0lUX0RFRklO
RV9UWVBFKFdlYktpdEZpbmRDb250cm9sbGVyLCB3ZWJraXRfZmluZF9jb250cm9sbGVyLCBHX1RZ
UEVfT0JKRUNUKQogCi1zdGF0aWMgaW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMgdG9XZWJGaW5k
T3B0aW9ucyh1aW50MzJfdCBmaW5kT3B0aW9ucykKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdl
YktpdDo6RmluZE9wdGlvbnM+IHRvV2ViRmluZE9wdGlvbnModWludDMyX3QgZmluZE9wdGlvbnMp
CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KChmaW5kT3B0
aW9ucyAmIFdFQktJVF9GSU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJVElWRSA/IEZpbmRPcHRpb25z
Q2FzZUluc2Vuc2l0aXZlIDogMCkKLSAgICAgICAgfCAoZmluZE9wdGlvbnMgJiBXRUJLSVRfRklO
RF9PUFRJT05TX0FUX1dPUkRfU1RBUlRTID8gRmluZE9wdGlvbnNBdFdvcmRTdGFydHMgOiAwKQot
ICAgICAgICB8IChmaW5kT3B0aW9ucyAmIFdFQktJVF9GSU5EX09QVElPTlNfVFJFQVRfTUVESUFM
X0NBUElUQUxfQVNfV09SRF9TVEFSVCA/IEZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNX
b3JkU3RhcnQgOiAwKQotICAgICAgICB8IChmaW5kT3B0aW9ucyAmIFdFQktJVF9GSU5EX09QVElP
TlNfQkFDS1dBUkRTID8gRmluZE9wdGlvbnNCYWNrd2FyZHMgOiAwKQotICAgICAgICB8IChmaW5k
T3B0aW9ucyAmIFdFQktJVF9GSU5EX09QVElPTlNfV1JBUF9BUk9VTkQgPyBGaW5kT3B0aW9uc1dy
YXBBcm91bmQgOiAwKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgV2ViS2l0RmluZE9wdGlvbnMgdG9X
ZWJLaXRGaW5kT3B0aW9ucyh1aW50MzJfdCBmaW5kT3B0aW9ucykKLXsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8V2ViS2l0RmluZE9wdGlvbnM+KChmaW5kT3B0aW9ucyAmIEZpbmRPcHRpb25zQ2Fz
ZUluc2Vuc2l0aXZlID8gV0VCS0lUX0ZJTkRfT1BUSU9OU19DQVNFX0lOU0VOU0lUSVZFIDogMCkK
LSAgICAgICAgfCAoZmluZE9wdGlvbnMgJiBGaW5kT3B0aW9uc0F0V29yZFN0YXJ0cyA/IFdFQktJ
VF9GSU5EX09QVElPTlNfQVRfV09SRF9TVEFSVFMgOiAwKQotICAgICAgICB8IChmaW5kT3B0aW9u
cyAmIEZpbmRPcHRpb25zVHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQgPyBXRUJLSVRfRklO
RF9PUFRJT05TX1RSRUFUX01FRElBTF9DQVBJVEFMX0FTX1dPUkRfU1RBUlQgOiAwKQotICAgICAg
ICB8IChmaW5kT3B0aW9ucyAmIEZpbmRPcHRpb25zQmFja3dhcmRzID8gV0VCS0lUX0ZJTkRfT1BU
SU9OU19CQUNLV0FSRFMgOiAwKQotICAgICAgICB8IChmaW5kT3B0aW9ucyAmIEZpbmRPcHRpb25z
V3JhcEFyb3VuZCA/IFdFQktJVF9GSU5EX09QVElPTlNfV1JBUF9BUk9VTkQgOiAwKSk7CisgICAg
T3B0aW9uU2V0PFdlYktpdDo6RmluZE9wdGlvbnM+IG9wdGlvbnM7CisgICAgaWYgKGZpbmRPcHRp
b25zICYgV0VCS0lUX0ZJTkRfT1BUSU9OU19DQVNFX0lOU0VOU0lUSVZFKQorICAgICAgICBvcHRp
b25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpDYXNlSW5zZW5zaXRpdmUpOworICAgIGlmIChm
aW5kT3B0aW9ucyAmIFdFQktJVF9GSU5EX09QVElPTlNfQVRfV09SRF9TVEFSVFMpCisgICAgICAg
IG9wdGlvbnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkF0V29yZFN0YXJ0cyk7CisgICAgaWYg
KGZpbmRPcHRpb25zICYgV0VCS0lUX0ZJTkRfT1BUSU9OU19UUkVBVF9NRURJQUxfQ0FQSVRBTF9B
U19XT1JEX1NUQVJUKQorICAgICAgICBvcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpU
cmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCk7CisgICAgaWYgKGZpbmRPcHRpb25zICYgV0VC
S0lUX0ZJTkRfT1BUSU9OU19CQUNLV0FSRFMpCisgICAgICAgIG9wdGlvbnMuYWRkKFdlYktpdDo6
RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7CisgICAgaWYgKGZpbmRPcHRpb25zICYgV0VCS0lUX0ZJ
TkRfT1BUSU9OU19XUkFQX0FST1VORCkKKyAgICAgICAgb3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5k
T3B0aW9uczo6V3JhcEFyb3VuZCk7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyBp
bmxpbmUgV2ViS2l0RmluZE9wdGlvbnMgdG9XZWJLaXRGaW5kT3B0aW9ucyhPcHRpb25TZXQ8V2Vi
S2l0OjpGaW5kT3B0aW9ucz4gZmluZE9wdGlvbnMpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYktpdEZpbmRPcHRpb25zPigoZmluZE9wdGlvbnMuY29udGFpbnMoV2ViS2l0OjpGaW5kT3B0
aW9uczo6Q2FzZUluc2Vuc2l0aXZlKSA/IFdFQktJVF9GSU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJ
VElWRSA6IDApCisgICAgICAgIHwgKGZpbmRPcHRpb25zLmNvbnRhaW5zKFdlYktpdDo6RmluZE9w
dGlvbnM6OkF0V29yZFN0YXJ0cykgPyBXRUJLSVRfRklORF9PUFRJT05TX0FUX1dPUkRfU1RBUlRT
IDogMCkKKyAgICAgICAgfCAoZmluZE9wdGlvbnMuY29udGFpbnMoV2ViS2l0OjpGaW5kT3B0aW9u
czo6VHJlYXRNZWRpYWxDYXBpdGFsQXNXb3JkU3RhcnQpID8gV0VCS0lUX0ZJTkRfT1BUSU9OU19U
UkVBVF9NRURJQUxfQ0FQSVRBTF9BU19XT1JEX1NUQVJUIDogMCkKKyAgICAgICAgfCAoZmluZE9w
dGlvbnMuY29udGFpbnMoV2ViS2l0OjpGaW5kT3B0aW9uczo6QmFja3dhcmRzKSA/IFdFQktJVF9G
SU5EX09QVElPTlNfQkFDS1dBUkRTIDogMCkKKyAgICAgICAgfCAoZmluZE9wdGlvbnMuY29udGFp
bnMoV2ViS2l0OjpGaW5kT3B0aW9uczo6V3JhcEFyb3VuZCkgPyBXRUJLSVRfRklORF9PUFRJT05T
X1dSQVBfQVJPVU5EIDogMCkpOwogfQogCiBzdGF0aWMgaW5saW5lIFdlYlBhZ2VQcm94eSYgZ2V0
UGFnZShXZWJLaXRGaW5kQ29udHJvbGxlciogZmluZENvbnRyb2xsZXIpCkBAIC0zNjUsMTEgKzM3
MSwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRGaW5kQ29udHJvbGxlclBlcmZvcm0oCiAgICAgV2Vi
S2l0RmluZENvbnRyb2xsZXJQcml2YXRlKiBwcml2ID0gZmluZENvbnRyb2xsZXItPnByaXY7CiAg
ICAgaWYgKG9wZXJhdGlvbiA9PSBDb3VudE9wZXJhdGlvbikgewogICAgICAgICBnZXRQYWdlKGZp
bmRDb250cm9sbGVyKS5jb3VudFN0cmluZ01hdGNoZXMoU3RyaW5nOjpmcm9tVVRGOChwcml2LT5z
ZWFyY2hUZXh0LmRhdGEoKSksCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRP
cHRpb25zPihwcml2LT5maW5kT3B0aW9ucyksIHByaXYtPm1heE1hdGNoQ291bnQpOworICAgICAg
ICAgICAgcHJpdi0+ZmluZE9wdGlvbnMsIHByaXYtPm1heE1hdGNoQ291bnQpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgdWludDMyX3QgZmluZE9wdGlvbnMgPSBwcml2LT5maW5kT3B0
aW9uczsKKyAgICBPcHRpb25TZXQ8V2ViS2l0OjpGaW5kT3B0aW9ucz4gZmluZE9wdGlvbnMgPSBw
cml2LT5maW5kT3B0aW9uczsKICAgICBpZiAob3BlcmF0aW9uID09IEZpbmRPcGVyYXRpb24pCiAg
ICAgICAgIC8vIFVuY29uZGl0aW9uYWxseSBoaWdobGlnaHQgdGV4dCBtYXRjaGVzIHdoZW4gdGhl
IHNlYXJjaAogICAgICAgICAvLyBzdGFydHMuIFdLMSBBUEkgd2FzIGZvcmNpbmcgY2xpZW50cyB0
byBlbmFibGUvZGlzYWJsZQpAQCAtMzc4LDE1ICszODQsMTUgQEAgc3RhdGljIHZvaWQgd2ViS2l0
RmluZENvbnRyb2xsZXJQZXJmb3JtKAogICAgICAgICAvLyB1bmNvbmRpdGlvbmFsbHkgc2hvdyBo
aWdobGlnaHRzLiBCb3RoIHNlYXJjaF9uZXh0KCkgYW5kCiAgICAgICAgIC8vIHNlYXJjaF9wcmV2
KCkgc2hvdWxkIG5vdCBlbmFibGUgaGlnaGxpZ2h0aW5nIHRvIGF2b2lkIGFuCiAgICAgICAgIC8v
IGV4dHJhIHVubWFya0FsbFRleHRNYXRjaGVzKCkgKyBtYXJrQWxsVGV4dE1hdGNoZXMoKQotICAg
ICAgICBmaW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc1Nob3dIaWdobGlnaHQ7CisgICAgICAgIGZp
bmRPcHRpb25zLmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93SGlnaGxpZ2h0KTsKIAotICAg
IGdldFBhZ2UoZmluZENvbnRyb2xsZXIpLmZpbmRTdHJpbmcoU3RyaW5nOjpmcm9tVVRGOChwcml2
LT5zZWFyY2hUZXh0LmRhdGEoKSksIHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KGZp
bmRPcHRpb25zKSwgcHJpdi0+bWF4TWF0Y2hDb3VudCk7CisgICAgZ2V0UGFnZShmaW5kQ29udHJv
bGxlcikuZmluZFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KHByaXYtPnNlYXJjaFRleHQuZGF0YSgp
KSwgZmluZE9wdGlvbnMsIHByaXYtPm1heE1hdGNoQ291bnQpOwogfQogCiBzdGF0aWMgaW5saW5l
IHZvaWQgd2ViS2l0RmluZENvbnRyb2xsZXJTZXRTZWFyY2hEYXRhKFdlYktpdEZpbmRDb250cm9s
bGVyKiBmaW5kQ29udHJvbGxlciwgY29uc3QgZ2NoYXIqIHNlYXJjaFRleHQsIGd1aW50MzIgZmlu
ZE9wdGlvbnMsIGd1aW50IG1heE1hdGNoQ291bnQpCiB7CiAgICAgZmluZENvbnRyb2xsZXItPnBy
aXYtPnNlYXJjaFRleHQgPSBzZWFyY2hUZXh0OwotICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5m
aW5kT3B0aW9ucyA9IGZpbmRPcHRpb25zOworICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5maW5k
T3B0aW9ucyA9IHRvV2ViRmluZE9wdGlvbnMoZmluZE9wdGlvbnMpOwogICAgIGZpbmRDb250cm9s
bGVyLT5wcml2LT5tYXhNYXRjaENvdW50ID0gbWF4TWF0Y2hDb3VudDsKIH0KIApAQCAtNDIxLDcg
KzQyNyw3IEBAIHZvaWQgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2goV2ViS2kKIHsKICAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19GSU5EX0NPTlRST0xMRVIoZmluZENvbnRyb2xs
ZXIpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKHNlYXJjaFRleHQpOwotICAgIHdlYktpdEZpbmRD
b250cm9sbGVyU2V0U2VhcmNoRGF0YShmaW5kQ29udHJvbGxlciwgc2VhcmNoVGV4dCwgdG9XZWJG
aW5kT3B0aW9ucyhmaW5kT3B0aW9ucyksIG1heE1hdGNoQ291bnQpOworICAgIHdlYktpdEZpbmRD
b250cm9sbGVyU2V0U2VhcmNoRGF0YShmaW5kQ29udHJvbGxlciwgc2VhcmNoVGV4dCwgZmluZE9w
dGlvbnMsIG1heE1hdGNoQ291bnQpOwogICAgIHdlYktpdEZpbmRDb250cm9sbGVyUGVyZm9ybShm
aW5kQ29udHJvbGxlciwgRmluZE9wZXJhdGlvbik7CiB9CiAKQEAgLTQzOCw4ICs0NDQsOCBAQCB2
b2lkIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfc2VhcmNoX25leHQoCiB7CiAgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfRklORF9DT05UUk9MTEVSKGZpbmRDb250cm9sbGVyKSk7CiAKLSAg
ICBmaW5kQ29udHJvbGxlci0+cHJpdi0+ZmluZE9wdGlvbnMgJj0gfkZpbmRPcHRpb25zQmFja3dh
cmRzOwotICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5maW5kT3B0aW9ucyAmPSB+RmluZE9wdGlv
bnNTaG93SGlnaGxpZ2h0OworICAgIGZpbmRDb250cm9sbGVyLT5wcml2LT5maW5kT3B0aW9ucy5y
ZW1vdmUoV2ViS2l0OjpGaW5kT3B0aW9uczo6QmFja3dhcmRzKTsKKyAgICBmaW5kQ29udHJvbGxl
ci0+cHJpdi0+ZmluZE9wdGlvbnMucmVtb3ZlKFdlYktpdDo6RmluZE9wdGlvbnM6OlNob3dIaWdo
bGlnaHQpOwogICAgIHdlYktpdEZpbmRDb250cm9sbGVyUGVyZm9ybShmaW5kQ29udHJvbGxlciwg
RmluZE5leHRQcmV2T3BlcmF0aW9uKTsKIH0KIApAQCAtNDU2LDggKzQ2Miw4IEBAIHZvaWQgd2Vi
a2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfcHJldmkKIHsKICAgICBnX3JldHVybl9pZl9mYWls
KFdFQktJVF9JU19GSU5EX0NPTlRST0xMRVIoZmluZENvbnRyb2xsZXIpKTsKIAotICAgIGZpbmRD
b250cm9sbGVyLT5wcml2LT5maW5kT3B0aW9ucyB8PSBGaW5kT3B0aW9uc0JhY2t3YXJkczsKLSAg
ICBmaW5kQ29udHJvbGxlci0+cHJpdi0+ZmluZE9wdGlvbnMgJj0gfkZpbmRPcHRpb25zU2hvd0hp
Z2hsaWdodDsKKyAgICBmaW5kQ29udHJvbGxlci0+cHJpdi0+ZmluZE9wdGlvbnMuYWRkKFdlYktp
dDo6RmluZE9wdGlvbnM6OkJhY2t3YXJkcyk7CisgICAgZmluZENvbnRyb2xsZXItPnByaXYtPmZp
bmRPcHRpb25zLnJlbW92ZShXZWJLaXQ6OkZpbmRPcHRpb25zOjpTaG93SGlnaGxpZ2h0KTsKICAg
ICB3ZWJLaXRGaW5kQ29udHJvbGxlclBlcmZvcm0oZmluZENvbnRyb2xsZXIsIEZpbmROZXh0UHJl
dk9wZXJhdGlvbik7CiB9CiAKQEAgLTQ3OCw3ICs0ODQsNyBAQCB2b2lkIHdlYmtpdF9maW5kX2Nv
bnRyb2xsZXJfY291bnRfbWF0Y2hlCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfRklO
RF9DT05UUk9MTEVSKGZpbmRDb250cm9sbGVyKSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChzZWFy
Y2hUZXh0KTsKIAotICAgIHdlYktpdEZpbmRDb250cm9sbGVyU2V0U2VhcmNoRGF0YShmaW5kQ29u
dHJvbGxlciwgc2VhcmNoVGV4dCwgdG9XZWJGaW5kT3B0aW9ucyhmaW5kT3B0aW9ucyksIG1heE1h
dGNoQ291bnQpOworICAgIHdlYktpdEZpbmRDb250cm9sbGVyU2V0U2VhcmNoRGF0YShmaW5kQ29u
dHJvbGxlciwgc2VhcmNoVGV4dCwgZmluZE9wdGlvbnMsIG1heE1hdGNoQ291bnQpOwogICAgIHdl
YktpdEZpbmRDb250cm9sbGVyUGVyZm9ybShmaW5kQ29udHJvbGxlciwgQ291bnRPcGVyYXRpb24p
OwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tUZXh0RmluZGVyQ2xp
ZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS1RleHRG
aW5kZXJDbGllbnQubW0JKHJldmlzaW9uIDI2NDA0OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS1RleHRGaW5kZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwOCwyMSAr
MjA4LDIxIEBAIC0gKHZvaWQpZmluZE1hdGNoZXNGb3JTdHJpbmc6KE5TU3RyaW5nICoKICAgICAv
LyBwcm9wb3J0aW9uYWwgdG8gZG9jdW1lbnQgbGVuZ3RoLgogICAgIG1heFJlc3VsdHMgPSBzdGQ6
Om1pbihtYXhSZXN1bHRzLCBtYXhpbXVtRmluZE1hdGNoZXMpOwogCi0gICAgdW5zaWduZWQga2l0
RmluZE9wdGlvbnMgPSAwOworICAgIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiBraXRG
aW5kT3B0aW9uczsKIAogICAgIGlmIChmaW5kT3B0aW9ucyAmIE5TVGV4dEZpbmRlckFzeW5jaHJv
bm91c0RvY3VtZW50RmluZE9wdGlvbnNCYWNrd2FyZHMpCi0gICAgICAgIGtpdEZpbmRPcHRpb25z
IHw9IFdlYktpdDo6RmluZE9wdGlvbnNCYWNrd2FyZHM7CisgICAgICAgIGtpdEZpbmRPcHRpb25z
LmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpCYWNrd2FyZHMpOwogICAgIGlmIChmaW5kT3B0aW9u
cyAmIE5TVGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE9wdGlvbnNXcmFwKQotICAg
ICAgICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zV3JhcEFyb3VuZDsKKyAg
ICAgICAga2l0RmluZE9wdGlvbnMuYWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OldyYXBBcm91bmQp
OwogICAgIGlmIChmaW5kT3B0aW9ucyAmIE5TVGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50
RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmUpCi0gICAgICAgIGtpdEZpbmRPcHRpb25zIHw9IFdl
YktpdDo6RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7CisgICAgICAgIGtpdEZpbmRPcHRpb25z
LmFkZChXZWJLaXQ6OkZpbmRPcHRpb25zOjpDYXNlSW5zZW5zaXRpdmUpOwogICAgIGlmIChmaW5k
T3B0aW9ucyAmIE5TVGV4dEZpbmRlckFzeW5jaHJvbm91c0RvY3VtZW50RmluZE9wdGlvbnNTdGFy
dHNXaXRoKQotICAgICAgICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQXRX
b3JkU3RhcnRzOworICAgICAgICBraXRGaW5kT3B0aW9ucy5hZGQoV2ViS2l0OjpGaW5kT3B0aW9u
czo6QXRXb3JkU3RhcnRzKTsKIAogICAgIGlmICghX3VzZVBsYXRmb3JtRmluZFVJKSB7Ci0gICAg
ICAgIGtpdEZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNTaG93T3ZlcmxheTsKLSAg
ICAgICAga2l0RmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc1Nob3dGaW5kSW5kaWNh
dG9yOwotICAgICAgICBraXRGaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zRGV0ZXJt
aW5lTWF0Y2hJbmRleDsKKyAgICAgICAga2l0RmluZE9wdGlvbnMuYWRkKFdlYktpdDo6RmluZE9w
dGlvbnM6OlNob3dPdmVybGF5KTsKKyAgICAgICAga2l0RmluZE9wdGlvbnMuYWRkKFdlYktpdDo6
RmluZE9wdGlvbnM6OlNob3dGaW5kSW5kaWNhdG9yKTsKKyAgICAgICAga2l0RmluZE9wdGlvbnMu
YWRkKFdlYktpdDo6RmluZE9wdGlvbnM6OkRldGVybWluZU1hdGNoSW5kZXgpOwogICAgIH0KIAog
ICAgIFJldGFpblB0cjxOU1Byb2dyZXNzPiBwcm9ncmVzcyA9IFtOU1Byb2dyZXNzIHByb2dyZXNz
V2l0aFRvdGFsVW5pdENvdW50OjFdOwpAQCAtMjM0LDkgKzIzNCw5IEBAIC0gKHZvaWQpZmluZE1h
dGNoZXNGb3JTdHJpbmc6KE5TU3RyaW5nICoKICAgICB9KTsKIAogICAgIGlmIChtYXhSZXN1bHRz
ID09IDEpCi0gICAgICAgIF9wYWdlLT5maW5kU3RyaW5nKHRhcmdldFN0cmluZywgc3RhdGljX2Nh
c3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4oa2l0RmluZE9wdGlvbnMpLCBtYXhSZXN1bHRzKTsKKyAg
ICAgICAgX3BhZ2UtPmZpbmRTdHJpbmcodGFyZ2V0U3RyaW5nLCBraXRGaW5kT3B0aW9ucywgbWF4
UmVzdWx0cyk7CiAgICAgZWxzZQotICAgICAgICBfcGFnZS0+ZmluZFN0cmluZ01hdGNoZXModGFy
Z2V0U3RyaW5nLCBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihraXRGaW5kT3B0aW9u
cyksIG1heFJlc3VsdHMpOworICAgICAgICBfcGFnZS0+ZmluZFN0cmluZ01hdGNoZXModGFyZ2V0
U3RyaW5nLCBraXRGaW5kT3B0aW9ucywgbWF4UmVzdWx0cyk7CiB9CiAKIC0gKHZvaWQpZ2V0U2Vs
ZWN0ZWRUZXh0Oih2b2lkICheKShOU1N0cmluZyAqc2VsZWN0ZWRUZXh0U3RyaW5nKSljb21wbGV0
aW9uSGFuZGxlcgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjY0MDQ5KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NSwxOCArNTUsMTggQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLVdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmUoRmluZE9wdGlvbnMgb3B0aW9ucykK
K1dlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmUoT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25z
KQogewogICAgIFdlYkNvcmU6OkZpbmRPcHRpb25zIHJlc3VsdDsKLSAgICBpZiAob3B0aW9ucyAm
IEZpbmRPcHRpb25zQ2FzZUluc2Vuc2l0aXZlKQorICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKEZp
bmRPcHRpb25zOjpDYXNlSW5zZW5zaXRpdmUpKQogICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6
OkNhc2VJbnNlbnNpdGl2ZSk7Ci0gICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0aW9uc0F0V29yZFN0
YXJ0cykKKyAgICBpZiAob3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6QXRXb3JkU3RhcnRz
KSkKICAgICAgICAgcmVzdWx0LmFkZChXZWJDb3JlOjpBdFdvcmRTdGFydHMpOwotICAgIGlmIChv
cHRpb25zICYgRmluZE9wdGlvbnNUcmVhdE1lZGlhbENhcGl0YWxBc1dvcmRTdGFydCkKKyAgICBp
ZiAob3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6VHJlYXRNZWRpYWxDYXBpdGFsQXNXb3Jk
U3RhcnQpKQogICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OlRyZWF0TWVkaWFsQ2FwaXRhbEFz
V29yZFN0YXJ0KTsKLSAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25zQmFja3dhcmRzKQorICAg
IGlmIChvcHRpb25zLmNvbnRhaW5zKEZpbmRPcHRpb25zOjpCYWNrd2FyZHMpKQogICAgICAgICBy
ZXN1bHQuYWRkKFdlYkNvcmU6OkJhY2t3YXJkcyk7Ci0gICAgaWYgKG9wdGlvbnMgJiBGaW5kT3B0
aW9uc1dyYXBBcm91bmQpCisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6Oldy
YXBBcm91bmQpKQogICAgICAgICByZXN1bHQuYWRkKFdlYkNvcmU6OldyYXBBcm91bmQpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CkBAIC04MCw3ICs4MCw3IEBAIEZpbmRDb250cm9sbGVyOjp+Rmlu
ZENvbnRyb2xsZXIoKQogewogfQogCi12b2lkIEZpbmRDb250cm9sbGVyOjpjb3VudFN0cmluZ01h
dGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQpCit2b2lkIEZpbmRDb250cm9sbGVyOjpjb3VudFN0cmluZ01hdGNoZXMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5z
aWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKICAgICBpZiAobWF4TWF0Y2hDb3VudCA9PSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiAgICAgICAgIC0tbWF4TWF0Y2hDb3VudDsK
QEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgRnJhbWUqIGZyYW1lV2l0aFNlbGVjdGlvbihQYWdl
KiBwCiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgRmluZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRV
SUFmdGVyUGFnZVNjcm9sbChib29sIGZvdW5kLCBjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9w
dGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgRGlkV3JhcCBkaWRXcmFwLCBG
aW5kVUlPcmlnaW5hdG9yIG9yaWdpbmF0b3IpCit2b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVG
aW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3VuZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9w
dGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgRGlk
V3JhcCBkaWRXcmFwLCBGaW5kVUlPcmlnaW5hdG9yIG9yaWdpbmF0b3IpCiB7CiAgICAgRnJhbWUq
IHNlbGVjdGVkRnJhbWUgPSBmcmFtZVdpdGhTZWxlY3Rpb24obV93ZWJQYWdlLT5jb3JlUGFnZSgp
KTsKICAgICAKQEAgLTE1Myw5ICsxNTMsOSBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVG
aW5kVUlBZnRlclBhCiAKICAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZEZhaWxUb0ZpbmRTdHJpbmcoc3RyaW5nKSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgc2hvdWxkU2hvd092ZXJsYXkgPSBvcHRpb25zICYgRmluZE9wdGlvbnNTaG93T3ZlcmxheTsK
LSAgICAgICAgYm9vbCBzaG91bGRTaG93SGlnaGxpZ2h0ID0gb3B0aW9ucyAmIEZpbmRPcHRpb25z
U2hvd0hpZ2hsaWdodDsKLSAgICAgICAgYm9vbCBzaG91bGREZXRlcm1pbmVNYXRjaEluZGV4ID0g
b3B0aW9ucyAmIEZpbmRPcHRpb25zRGV0ZXJtaW5lTWF0Y2hJbmRleDsKKyAgICAgICAgc2hvdWxk
U2hvd092ZXJsYXkgPSBvcHRpb25zLmNvbnRhaW5zKEZpbmRPcHRpb25zOjpTaG93T3ZlcmxheSk7
CisgICAgICAgIGJvb2wgc2hvdWxkU2hvd0hpZ2hsaWdodCA9IG9wdGlvbnMuY29udGFpbnMoRmlu
ZE9wdGlvbnM6OlNob3dIaWdobGlnaHQpOworICAgICAgICBib29sIHNob3VsZERldGVybWluZU1h
dGNoSW5kZXggPSBvcHRpb25zLmNvbnRhaW5zKEZpbmRPcHRpb25zOjpEZXRlcm1pbmVNYXRjaElu
ZGV4KTsKICAgICAgICAgdW5zaWduZWQgbWF0Y2hDb3VudCA9IDE7CiAKICAgICAgICAgaWYgKHNo
b3VsZERldGVybWluZU1hdGNoSW5kZXgpIHsKQEAgLTIyMSwxMSArMjIxLDExIEBAIHZvaWQgRmlu
ZENvbnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGEKICAgICAgICAgbV9maW5kUGFnZU92ZXJs
YXktPnNldE5lZWRzRGlzcGxheSgpOwogICAgIH0KICAgICAKLSAgICBpZiAoZm91bmQgJiYgKCEo
b3B0aW9ucyAmIEZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IpIHx8ICFzZWxlY3RlZEZyYW1l
IHx8ICF1cGRhdGVGaW5kSW5kaWNhdG9yKCpzZWxlY3RlZEZyYW1lLCBzaG91bGRTaG93T3Zlcmxh
eSkpKQorICAgIGlmIChmb3VuZCAmJiAoIW9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6OlNo
b3dGaW5kSW5kaWNhdG9yKSB8fCAhc2VsZWN0ZWRGcmFtZSB8fCAhdXBkYXRlRmluZEluZGljYXRv
cigqc2VsZWN0ZWRGcmFtZSwgc2hvdWxkU2hvd092ZXJsYXkpKSkKICAgICAgICAgaGlkZUZpbmRJ
bmRpY2F0b3IoKTsKIH0KIAotdm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCwgT3B0aW9uYWw8Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRCkKK3ZvaWQgRmluZENvbnRyb2xsZXI6
OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4g
b3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiBwbHVnaW5WaWV3ID0gV2Vi
UGFnZTo6cGx1Z2luVmlld0ZvckZyYW1lKG1fd2ViUGFnZS0+bWFpbkZyYW1lKCkpOwogCkBAIC0y
NjcsOSArMjY3LDkgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdAog
ICAgICAgICBkaWRGaW5kU3RyaW5nKCk7CiAKICAgICAgICAgaWYgKCFmb3VuZFN0cmluZ1N0YXJ0
c0FmdGVyU2VsZWN0aW9uKSB7Ci0gICAgICAgICAgICBpZiAob3B0aW9ucyAmIEZpbmRPcHRpb25z
QmFja3dhcmRzKQorICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6
OkJhY2t3YXJkcykpCiAgICAgICAgICAgICAgICAgbV9mb3VuZFN0cmluZ01hdGNoSW5kZXgtLTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKCEob3B0aW9ucyAmIEZpbmRPcHRpb25zTm9JbmRleENoYW5n
ZSkpCisgICAgICAgICAgICBlbHNlIGlmICghb3B0aW9ucy5jb250YWlucyhGaW5kT3B0aW9uczo6
Tm9JbmRleENoYW5nZSkpCiAgICAgICAgICAgICAgICAgbV9mb3VuZFN0cmluZ01hdGNoSW5kZXgr
KzsKICAgICAgICAgfQogICAgIH0KQEAgLTI3OSwxMSArMjc5LDEwIEBAIHZvaWQgRmluZENvbnRy
b2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3QKICAgICAgICAgcHJvdGVjdGVkV2ViUGFnZS0+Zmlu
ZENvbnRyb2xsZXIoKS51cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoZm91bmQsIHN0cmluZywg
b3B0aW9ucywgbWF4TWF0Y2hDb3VudCwgZGlkV3JhcCwgRmluZFVJT3JpZ2luYXRvcjo6RmluZFN0
cmluZyk7CiAgICAgfSk7CiAKLSAgICBpZiAoY2FsbGJhY2tJRCkKLSAgICAgICAgbV93ZWJQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpbmRTdHJpbmdDYWxsYmFjayhmb3VuZCwg
KmNhbGxiYWNrSUQpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmb3VuZCk7CiB9CiAKLXZvaWQg
RmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBG
aW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBGaW5kQ29u
dHJvbGxlcjo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlvblNl
dDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKICAgICBt
X2ZpbmRNYXRjaGVzLmNsZWFyKCk7CiAgICAgaW50IGluZGV4Rm9yU2VsZWN0aW9uOwpAQCAtMjk2
LDcgKzI5NSw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmdNYXRjaGVzKGMKIAog
ICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5kU3RyaW5n
TWF0Y2hlcyhzdHJpbmcsIG1hdGNoUmVjdHMsIGluZGV4Rm9yU2VsZWN0aW9uKSk7CiAKLSAgICBp
ZiAoIShvcHRpb25zICYgRmluZE9wdGlvbnNTaG93T3ZlcmxheSB8fCBvcHRpb25zICYgRmluZE9w
dGlvbnNTaG93RmluZEluZGljYXRvcikpCisgICAgaWYgKCFvcHRpb25zLmNvbnRhaW5zKEZpbmRP
cHRpb25zOjpTaG93T3ZlcmxheSkgJiYgIW9wdGlvbnMuY29udGFpbnMoRmluZE9wdGlvbnM6OlNo
b3dGaW5kSW5kaWNhdG9yKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBmb3VuZCA9ICFt
X2ZpbmRNYXRjaGVzLmlzRW1wdHkoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjY0MDQ5KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNTcsMTMgKzU3LDEzIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBGaW5kQ29udHJv
bGxlcihXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+RmluZENvbnRyb2xsZXIoKTsKIAotICAgIHZv
aWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCwgT3B0aW9uYWw8Q2FsbGJhY2tJRD4pOwotICAgIHZvaWQgZmluZFN0cmluZ01hdGNo
ZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwor
ICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8RmluZE9wdGlvbnM+
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxG
aW5kT3B0aW9ucz4sIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwogICAgIHZvaWQgZ2V0SW1hZ2VG
b3JGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0
Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBpbmRpY2F0ZUZpbmRNYXRjaCh1aW50
MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIGhpZGVGaW5kVUkoKTsKLSAgICB2b2lkIGNvdW50
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCk7CisgICAgdm9pZCBjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgT3B0
aW9uU2V0PEZpbmRPcHRpb25zPiwgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdWludDMy
X3QgcmVwbGFjZU1hdGNoZXMoY29uc3QgVmVjdG9yPHVpbnQzMl90PiYgbWF0Y2hJbmRpY2VzLCBj
b25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5KTsKICAgICAK
ICAgICB2b2lkIGhpZGVGaW5kSW5kaWNhdG9yKCk7CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCB1cGRhdGVGaW5kSW5kaWNhdG9yKFdlYkNvcmU6OkZyYW1lJiBzZWxlY3RlZEZy
YW1lLCBib29sIGlzU2hvd2luZ092ZXJsYXksIGJvb2wgc2hvdWxkQW5pbWF0ZSA9IHRydWUpOwog
CiAgICAgZW51bSBjbGFzcyBGaW5kVUlPcmlnaW5hdG9yIDogdWludDhfdCB7IEZpbmRTdHJpbmcs
IEZpbmRTdHJpbmdNYXRjaGVzIH07Ci0gICAgdm9pZCB1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3Jv
bGwoYm9vbCBmb3VuZCwgY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1h
dGNoQ291bnQsIFdlYkNvcmU6OkRpZFdyYXAsIEZpbmRVSU9yaWdpbmF0b3IpOworICAgIHZvaWQg
dXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYsIE9w
dGlvblNldDxGaW5kT3B0aW9ucz4sIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIFdlYkNvcmU6OkRp
ZFdyYXAsIEZpbmRVSU9yaWdpbmF0b3IpOwogCiAgICAgdm9pZCB3aWxsRmluZFN0cmluZygpOwog
ICAgIHZvaWQgZGlkRmluZFN0cmluZygpOwpAQCAtMTE2LDYgKzExNiw2IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIH07CiAKLVdlYkNvcmU6OkZpbmRPcHRpb25zIGNvcmUoRmluZE9wdGlvbnMpOworV2Vi
Q29yZTo6RmluZE9wdGlvbnMgY29yZShPcHRpb25TZXQ8RmluZE9wdGlvbnM+KTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjY0MDQ5KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxODYsMTIgKzQxODYs
MTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRBY3RpdmVPcGVuUGFuZWxSZXN1bHRMaQogICAgIG1fYWN0
aXZlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBXVEZNb3ZlKG9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyKTsKIH0KIAotYm9vbCBXZWJQYWdlOjpmaW5kU3RyaW5nRnJvbUluamVjdGVkQnVuZGxlKGNv
bnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9ucyBvcHRpb25zKQorYm9vbCBXZWJQYWdlOjpm
aW5kU3RyaW5nRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBPcHRpb25T
ZXQ8RmluZE9wdGlvbnM+IG9wdGlvbnMpCiB7CiAgICAgcmV0dXJuIG1fcGFnZS0+ZmluZFN0cmlu
Zyh0YXJnZXQsIGNvcmUob3B0aW9ucykpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdN
YXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBGaW5kT3B0aW9u
cyBvcHRpb25zKQordm9pZCBXZWJQYWdlOjpmaW5kU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1
bmRsZShjb25zdCBTdHJpbmcmIHRhcmdldCwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiBvcHRpb25z
KQogewogICAgIGZpbmRDb250cm9sbGVyKCkuZmluZFN0cmluZ01hdGNoZXModGFyZ2V0LCBvcHRp
b25zLCAwKTsKIH0KQEAgLTQyMDEsMTQgKzQyMDEsMTQgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNl
U3RyaW5nTWF0Y2hlc0Zyb21JbgogICAgIGZpbmRDb250cm9sbGVyKCkucmVwbGFjZU1hdGNoZXMo
bWF0Y2hJbmRpY2VzLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlvbk9ubHkpOwogfQogCi12b2lk
IFdlYlBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9wdGlv
bnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNr
SUQpCit2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlv
blNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBmaW5k
Q29udHJvbGxlcigpLmZpbmRTdHJpbmcoc3RyaW5nLCBzdGF0aWNfY2FzdDxGaW5kT3B0aW9ucz4o
b3B0aW9ucyksIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQpOworICAgIGZpbmRDb250cm9sbGVy
KCkuZmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpmaW5kU3RyaW5nTWF0Y2hlcyhj
b25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3Qgb3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hD
b3VudCkKK3ZvaWQgV2ViUGFnZTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJp
bmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hDb3Vu
dCkKIHsKLSAgICBmaW5kQ29udHJvbGxlcigpLmZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgc3Rh
dGljX2Nhc3Q8RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBmaW5k
Q29udHJvbGxlcigpLmZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hD
b3VudCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3Qg
bWF0Y2hJbmRleCkKQEAgLTQyMzEsOSArNDIzMSw5IEBAIHZvaWQgV2ViUGFnZTo6aGlkZUZpbmRV
SSgpCiAgICAgZmluZENvbnRyb2xsZXIoKS5oaWRlRmluZFVJKCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRp
b25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KQordm9pZCBXZWJQYWdlOjpjb3VudFN0cmluZ01h
dGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4gb3B0aW9u
cywgdWludDMyX3QgbWF4TWF0Y2hDb3VudCkKIHsKLSAgICBmaW5kQ29udHJvbGxlcigpLmNvdW50
U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIHN0YXRpY19jYXN0PEZpbmRPcHRpb25zPihvcHRpb25zKSwg
bWF4TWF0Y2hDb3VudCk7CisgICAgZmluZENvbnRyb2xsZXIoKS5jb3VudFN0cmluZ01hdGNoZXMo
c3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpyZXBs
YWNlTWF0Y2hlcyhjb25zdCBWZWN0b3I8dWludDMyX3Q+JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0
cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHJldmlzaW9uIDI2NDA0OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDcgKzI3Nyw3IEBAIGNsYXNzIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjsKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CiBjbGFzcyBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjsKIAotZW51bSBGaW5kT3B0aW9ucyA6IHVpbnQxNl90OworZW51
bSBjbGFzcyBGaW5kT3B0aW9ucyA6IHVpbnQxNl90OwogZW51bSBjbGFzcyBEcmFnQ29udHJvbGxl
ckFjdGlvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlw
ZSA6IHVpbnQ4X3Q7CiAKQEAgLTQ3MSw4ICs0NzEsOCBAQCBwdWJsaWM6CiAgICAgSW5qZWN0ZWRC
dW5kbGVQYWdlRnVsbFNjcmVlbkNsaWVudCYgaW5qZWN0ZWRCdW5kbGVGdWxsU2NyZWVuQ2xpZW50
KCkgeyByZXR1cm4gbV9mdWxsU2NyZWVuQ2xpZW50OyB9CiAjZW5kaWYKIAotICAgIGJvb2wgZmlu
ZFN0cmluZ0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucyk7Ci0g
ICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucyk7CisgICAgYm9vbCBmaW5kU3RyaW5nRnJvbUluamVjdGVkQnVuZGxlKGNv
bnN0IFN0cmluZyYsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4pOworICAgIHZvaWQgZmluZFN0cmlu
Z01hdGNoZXNGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRP
cHRpb25zPik7CiAgICAgdm9pZCByZXBsYWNlU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRs
ZShjb25zdCBWZWN0b3I8dWludDMyX3Q+JiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVw
bGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHkpOwogCiAgICAgV2ViRnJhbWUmIG1haW5X
ZWJGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZyYW1lOyB9CkBAIC0xNTgzLDEzICsxNTgz
LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFwcGx5RWRpdENvbW1hbmQoV2ViVW5kb1N0ZXBJ
RCBjb21tYW5kSUQpOwogICAgIHZvaWQgZGlkUmVtb3ZlRWRpdENvbW1hbmQoV2ViVW5kb1N0ZXBJ
RCBjb21tYW5kSUQpOwogCi0gICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIHVpbnQz
Ml90IGZpbmRPcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50LCBPcHRpb25hbDxDYWxsYmFj
a0lEPik7Ci0gICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCB1aW50MzJf
dCBmaW5kT3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBmaW5kU3Ry
aW5nKGNvbnN0IFN0cmluZyYsIE9wdGlvblNldDxGaW5kT3B0aW9ucz4sIHVpbnQzMl90IG1heE1h
dGNoQ291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZmlu
ZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgT3B0aW9uU2V0PEZpbmRPcHRpb25zPiwgdWlu
dDMyX3QgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50
MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRj
aEluZGV4KTsKICAgICB2b2lkIGluZGljYXRlRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgp
OwogICAgIHZvaWQgaGlkZUZpbmRVSSgpOwotICAgIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzKGNv
bnN0IFN0cmluZyYsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50
KTsKKyAgICB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBPcHRpb25TZXQ8
RmluZE9wdGlvbnM+LCB1aW50MzJfdCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIHJlcGxhY2VN
YXRjaGVzKGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4mIG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5n
JiByZXBsYWNlbWVudFRleHQsIGJvb2wgc2VsZWN0aW9uT25seSwgQ2FsbGJhY2tJRCk7CiAKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI2NDA0
OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTI5NiwxMyArMjk2LDEzIEBAIEdlbmVyYXRlU3ludGhldGlj
RWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICAgICBQb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKFN0
cmluZyBtZXNzYWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9keSkKIAogICAgICMg
RmluZC4KLSAgICBGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIHVpbnQzMl90IGZpbmRPcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBPcHRpb25hbDxXZWJLaXQ6OkNhbGxiYWNrSUQ+IGNh
bGxiYWNrSUQpCi0gICAgRmluZFN0cmluZ01hdGNoZXMoU3RyaW5nIHN0cmluZywgdWludDMyX3Qg
ZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCisgICAgRmluZFN0cmluZyhTdHJp
bmcgc3RyaW5nLCBPcHRpb25TZXQ8V2ViS2l0OjpGaW5kT3B0aW9ucz4gZmluZE9wdGlvbnMsIHVu
c2lnbmVkIG1heE1hdGNoQ291bnQpIC0+IChib29sIGZvdW5kKSBBc3luYworICAgIEZpbmRTdHJp
bmdNYXRjaGVzKFN0cmluZyBzdHJpbmcsIE9wdGlvblNldDxXZWJLaXQ6OkZpbmRPcHRpb25zPiBm
aW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKICAgICBHZXRJbWFnZUZvckZpbmRN
YXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQogICAgIFNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBt
YXRjaEluZGV4KQogICAgIEluZGljYXRlRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCiAg
ICAgSGlkZUZpbmRVSSgpCi0gICAgQ291bnRTdHJpbmdNYXRjaGVzKFN0cmluZyBzdHJpbmcsIHVp
bnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQorICAgIENvdW50U3Ry
aW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCBPcHRpb25TZXQ8V2ViS2l0OjpGaW5kT3B0aW9ucz4g
ZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiAgICAgUmVwbGFjZU1hdGNoZXMo
VmVjdG9yPHVpbnQzMl90PiBtYXRjaEluZGljZXMsIFN0cmluZyByZXBsYWNlbWVudFRleHQsIGJv
b2wgc2VsZWN0aW9uT25seSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgCiAg
ICAgQWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKFN0cmluZyBtaW1lVHlwZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>