<?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>201430</bug_id>
          
          <creation_ts>2019-09-03 10:59:18 -0700</creation_ts>
          <short_desc>Introduce WorkerSWClientConnection to make SWClientConnection mono-thread</short_desc>
          <delta_ts>2019-09-05 02:02:16 -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>Service Workers</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/18803</see_also>
          <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>
          
          <blocked>201459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mkwst</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1567431</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-03 10:59:18 -0700</bug_when>
    <thetext>Introduce WorkerSWClientConnection to make SWClientConnection mono-thread.
This will also allow to make SWClientConnection use process identifier instead of a network process generated identifier</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567439</commentid>
    <comment_count>1</comment_count>
      <attachid>377909</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-03 11:09:18 -0700</bug_when>
    <thetext>Created attachment 377909
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567440</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-03 11:12:09 -0700</bug_when>
    <thetext>Submitted web-platform-tests pull request: https://github.com/web-platform-tests/wpt/pull/18803</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567666</commentid>
    <comment_count>3</comment_count>
      <attachid>377958</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-03 23:31:37 -0700</bug_when>
    <thetext>Created attachment 377958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567760</commentid>
    <comment_count>4</comment_count>
      <attachid>377958</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-04 08:38:57 -0700</bug_when>
    <thetext>Comment on attachment 377958
Patch

Win build needs a fix apparently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568040</commentid>
    <comment_count>5</comment_count>
      <attachid>378053</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-05 00:12:47 -0700</bug_when>
    <thetext>Created attachment 378053
Win fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568067</commentid>
    <comment_count>6</comment_count>
      <attachid>378053</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-05 02:01:57 -0700</bug_when>
    <thetext>Comment on attachment 378053
Win fix

Clearing flags on attachment: 378053

Committed r249526: &lt;https://trac.webkit.org/changeset/249526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568068</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-05 02:01:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568069</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-05 02:02:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/55059700&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377909</attachid>
            <date>2019-09-03 11:09:18 -0700</date>
            <delta_ts>2019-09-03 23:31:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201430-20190903200916.patch</filename>
            <type>text/plain</type>
            <size>49913</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRmNzIwM2RkMjRhYTJk
ODUzMTg1YzFmN2YwN2ViNmU5MDZiMWFmYy4uMzQ2Mjc2ODViNjc4Mjg4OWNmNGQ3YjBlOGE0OTNj
YTVjMzhiOTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTA5LTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uIHRvIG1ha2UgU1dDbGllbnRDb25uZWN0aW9uIG1vbm8tdGhyZWFk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE0MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNX
Q2xpZW50Q29ubmVjdGlvbiBSZWZDb3VudGVkLgorICAgICAgICBBZGQgYSBXb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24gZGVkaWNhdGVkIHRvIGJlIHVzZWQgYnkgd29ya2VyL3NlcnZpY2Ugd29ya2Vy
IGNvbnRleHRzLgorICAgICAgICBTaW1wbGlmeSBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGxvZ2lj
IGJhc2VkIG9uIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpzd0NsaWVudENv
bm5lY3Rpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dDbGllbnRDb25uZWN0aW9uOjpmYWlsZWRGZXRjaGluZ1NjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnBvc3RUYXNrRm9ySm9iKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFp
blRocmVhZENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6cmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6bm90aWZ5UmVnaXN0cmF0aW9uSXNTZXR0bGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1Nj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpub3RpZnlG
YWlsZWRGZXRjaGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjplbnN1cmVTV0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6c3RvcCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckZldGNoUmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQ6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjp+V29ya2VyU1dDbGllbnRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
bWF0Y2hSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xp
ZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6YWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklu
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6cmVt
b3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5l
Y3Rpb246OnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6bWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3Rl
cmVkRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJT
V0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJT
V0NsaWVudENvbm5lY3Rpb246OmlzVGhyb3R0bGVhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNl
cnZlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlv
bi5oOiBBZGRlZC4KKwogMjAxOS0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJDb3JlXSBSZXNvdXJjZSB1c2FnZSBhY2NvdW50aW5nIHNob3Vs
ZCBhY2NlcHQgbm9uIEtFUk5fU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBkNDA1ODE3OGM5ODdl
MGU4ZjgxM2YyMmQ4ZDE1YzFhNjY5Y2Q1YmRkLi5mZmEzM2Y1ZDk3Y2M1ZGQ3YWRjNWQ5ODQ3MTMw
ODI3NGMxMWQ5MmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjQ4Nyw2ICsyNDg3LDcgQEAgd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcAogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuY3BwCiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKK3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENv
bm5lY3Rpb24uY3BwCiAKIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJEZWJ1
Z2dhYmxlLmNwcAogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDBiNmY0NjQ5NjUyNzc0ODJiZDA1MmFiZWQ4MDg0OWNjNTc1M2YyYzkuLjYwNDlhMmIy
MmI4NjA0M2EyZDFmOTc4OTY1MmIyMzA5OGRlZTgxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTczMTksNiArNzMxOSw4IEBA
CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJERiAvKiBXcml0YWJsZVN0cmVhbS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV3JpdGFibGVTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUEwODI5OTIyOTMyRUY0MDA4NDI2RTAgLyogRmVhdHVyZVBvbGljeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZWF0dXJlUG9saWN5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4MjlCMjI5MzJFRjQwMDg0MjZFMCAvKiBGZWF0dXJl
UG9saWN5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZlYXR1cmVQ
b2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUEwOThCQzIzMUU5MUQx
MDBGNEZGRjAgLyogV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQTA5OEJFMjMxRTkxRDEwMEY0RkZGMCAvKiBXb3Jr
ZXJTV0NsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxQTFCMDBEMUU1MjY1NkUwMDdGMzc2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5jcHA7IHBh
dGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUExQjAxQTFFNTQyMzk2MDA3RjM3NjkgLyogSlNET01HdWFyZGVkT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NR3VhcmRlZE9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUExQjAxQjFFNTQyMzk2MDA3RjM3Njkg
LyogSlNET01HdWFyZGVkT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRE9NR3VhcmRlZE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODkxOSw2ICsxODkyMSw4IEBACiAJCQkJNDZFRjE0MjYxRjk3QjdCQTAwQzJBNTI0IC8q
IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsICovLAogCQkJCTQ2RUNCNjM2MUZEMEEzQkIw
MDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLAogCQkJCTQ2RUNCNjM3MUZEMEEz
QkIwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLywKKwkJCQk0MUEwOThCQzIzMUU5
MUQxMDBGNEZGRjAgLyogV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0MUEw
OThCRTIzMUU5MUQxMDBGNEZGRjAgLyogV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IHNlcnZpY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBhOTcwYTdh
ZGE2NzVhMTZjZjE2ODcwZWMzZWIzYTZjMzRjZWRjMmY2Li45NzA4MzAyYmMwMTExODdhODg0NWI5
ODA1MjZhZmVkNjE1OWM1MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2VyUmVwb3J0
aW5nUHJveHkuaCIKKyNpbmNsdWRlICJXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1bWVudHMuaD4KQEAgLTQ3MCw2ICs0NzEs
MTMgQEAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIFdvcmtlckdsb2JhbFNjb3BlOjptZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcigpCiAgICAgcmV0dXJuICptX21lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOwogfQogCitXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24mIFdvcmtlckdsb2JhbFNj
b3BlOjpzd0NsaWVudENvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9zd0NsaWVudENvbm5lY3Rp
b24pCisgICAgICAgIG1fc3dDbGllbnRDb25uZWN0aW9uID0gV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9zd0NsaWVudENvbm5lY3Rpb247Cit9
CisKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZUltYWdlQml0bWFwKEltYWdlQml0bWFw
OjpTb3VyY2UmJiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIEltYWdlQml0
bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlz
ZSgqdGhpcywgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHByb21p
c2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAx
YjcxYzExYWNjNGE5MDBkOWJlMjFhNjUxNjYxOTMzNTIzNGM5ZWQwLi40NjkwOTNhNzhlZjQ1YjU2
Y2E3NDk4ZGM3NTZhZTM0OTU1NzAzNDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsK
IGNsYXNzIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJMb2NhdGlvbjsK
IGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKK2NsYXNzIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjsK
IGNsYXNzIFdvcmtlclRocmVhZDsKIAogbmFtZXNwYWNlIElEQkNsaWVudCB7CkBAIC03NSw2ICs3
Niw3IEBAIHB1YmxpYzoKIAogICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24mIGNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oKTsKICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgbWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKKyAgICBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24m
IHN3Q2xpZW50Q29ubmVjdGlvbigpOwogCiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2Ny
aXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFyU2NyaXB0KCkg
eyBtX3NjcmlwdCA9IG51bGxwdHI7IH0KQEAgLTIxNCw2ICsyMTYsNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV91
bmlxdWVJZGVudGlmaWVyIHsgMSB9OworICAgIFJlZlB0cjxXb3JrZXJTV0NsaWVudENvbm5lY3Rp
b24+IG1fc3dDbGllbnRDb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0
aW9uLmNwcAppbmRleCBmZDE3MWE5M2I0YTFkMTRiZTUzMDc5YzRiZTYyM2VmMDQxZmM5NWIxLi45
NjllNTBlYWZjNzQzMjY5YjM4NmQyYmZkOWVhNzNjYjU2YjkzYTMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAt
NDcsMjIgKzQ3LDIwIEBAIFNXQ2xpZW50Q29ubmVjdGlvbjo6flNXQ2xpZW50Q29ubmVjdGlvbigp
ID0gZGVmYXVsdDsKIAogdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKERvY3Vt
ZW50T3JXb3JrZXJJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYgam9iRGF0YSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotCiAg
ICAgYXV0byBhZGRSZXN1bHQgPSBtX3NjaGVkdWxlZEpvYlNvdXJjZXMuYWRkKGpvYkRhdGEuaWRl
bnRpZmllcigpLmpvYklkZW50aWZpZXIsIGNvbnRleHRJZGVudGlmaWVyKTsKICAgICBBU1NFUlRf
VU5VU0VEKGFkZFJlc3VsdCwgYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgc2NoZWR1bGVK
b2JJblNlcnZlcihqb2JEYXRhKTsKIH0KIAotdm9pZCBTV0NsaWVudENvbm5lY3Rpb246OmZhaWxl
ZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyIGpvYklkZW50aWZpZXIs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmFpbGVk
RmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgam9iSWRlbnRpZmllciwg
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5ICwgY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAogICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyB7IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyKCksIGpvYklkZW50aWZpZXIgfSwgcmVnaXN0cmF0aW9uS2V5LCB7IH0sIHsgfSwg
eyB9LCAgZXJyb3IgfSk7CiB9CiAKLWJvb2wgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0VGFza0Zv
ckpvYihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JJZGVudGlmaWVyLCBJc0pvYkNvbXBs
ZXRlIGlzSm9iQ29tcGxldGUsIFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VySm9iJik+
JiYgdGFzaykKK2Jvb2wgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0VGFza0ZvckpvYihTZXJ2aWNl
V29ya2VySm9iSWRlbnRpZmllciBqb2JJZGVudGlmaWVyLCBJc0pvYkNvbXBsZXRlIGlzSm9iQ29t
cGxldGUsIEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckpvYiYpPiYmIHRhc2spCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDI1MTkyNWJlOGFlNmE2NzU0MjFk
Y2ZlYWY1ODk0YTg0YzNiNDA0NDkuLmUzZjRkNTY2MDMxNjU1NzMwMjMyYTg3MzAwZTNhNTMxMjc0
MGIxYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVu
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGll
bnRDb25uZWN0aW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
VHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMs
MjMgKzUzLDIzIEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyRGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQ7CiBzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE7CiAK
LWNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxT
V0NsaWVudENvbm5lY3Rpb24+IHsKK2NsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPFNXQ2xpZW50Q29ubmVjdGlvbj4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgflNXQ2xpZW50Q29ubmVjdGlvbigpOwogCi0gICAgdXNpbmcgUmVnaXN0cmF0
aW9uQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKKyAgICB1c2luZyBSZWdpc3RyYXRpb25DYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGE+JiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24oU2Vj
dXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVnaXN0
cmF0aW9uQ2FsbGJhY2smJikgPSAwOwogCi0gICAgdXNpbmcgR2V0UmVnaXN0cmF0aW9uc0NhbGxi
YWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YT4mJik+OworICAgIHVzaW5nIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhPiYmKT47CiAgICAgdmlydHVhbCB2b2lkIGdldFJlZ2lzdHJhdGlvbnMoU2VjdXJpdHlPcmln
aW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgR2V0UmVnaXN0cmF0aW9u
c0NhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYp
PjsKKyAgICB1c2luZyBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayA9IEZ1bmN0aW9uPHZv
aWQoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJik+OwogICAgIHZpcnR1YWwgdm9pZCB3
aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29u
c3QgVVJMJiBjbGllbnRVUkwsIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNrJiYpID0gMDsK
IAogICAgIHZpcnR1YWwgdm9pZCBhZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIo
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyKSA9IDA7CiAKLSAgICB2b2lkIHNjaGVkdWxlSm9iKERvY3Vt
ZW50T3JXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUpvYihEb2N1bWVudE9yV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKICAgICB2b2lkIGZhaWxl
ZEZldGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmKSA9IDA7CkBAIC0xMTEsNyArMTExLDcgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYpID0gMDsKIAogICAgIGVudW0gY2xhc3MgSXNKb2JDb21wbGV0ZSB7IE5vLCBZZXMgfTsK
LSAgICBib29sIHBvc3RUYXNrRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBJc0pv
YkNvbXBsZXRlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckpvYiYpPiYmKTsKKyAg
ICBib29sIHBvc3RUYXNrRm9ySm9iKFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBJc0pvYkNv
bXBsZXRlLCBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJKb2ImKT4mJik7CiAKICAgICBIYXNo
TWFwPFNlcnZpY2VXb3JrZXJKb2JJZGVudGlmaWVyLCBEb2N1bWVudE9yV29ya2VySWRlbnRpZmll
cj4gbV9zY2hlZHVsZWRKb2JTb3VyY2VzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCAwM2Iy
N2ZiNTgwMzY5MTc5MWU0ZWQ4MjU4NzY0Njk5OWM2YzFmOTUyLi5hMzY0YmEwYWM0OGQ3MWFlZWNh
MTFlYmVlMGFjZDdhZmQwYThlMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC00OSw2ICs0OSw3
IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNl
V29ya2VyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgiCisjaW5j
bHVkZSAiV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TY29w
ZS5oPgpAQCAtNTksNiArNjAsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitzdGF0aWMg
aW5saW5lIFNXQ2xpZW50Q29ubmVjdGlvbiYgbWFpblRocmVhZENvbm5lY3Rpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQoreworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNp
bmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpOwor
fQorCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoU2VydmljZVdvcmtlckNvbnRhaW5lcik7
CiAKIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OlNlcnZpY2VXb3JrZXJDb250YWluZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTmF2aWdhdG9yQmFzZSYgbmF2aWdhdG9yKQpAQCAt
OTUsMjQgKzEwMSwxNiBAQCBhdXRvIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnJlYWR5KCkgLT4g
UmVhZHlQcm9taXNlJgogICAgIGlmICghbV9yZWFkeVByb21pc2UpIHsKICAgICAgICAgbV9yZWFk
eVByb21pc2UgPSBtYWtlVW5pcXVlPFJlYWR5UHJvbWlzZT4oKTsKIAotICAgICAgICBpZiAobV9p
c1N0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCkuaXNWYWxp
ZCgpKQorICAgICAgICBpZiAobV9pc1N0b3BwZWQpCiAgICAgICAgICAgICByZXR1cm4gKm1fcmVh
ZHlQcm9taXNlOwogCiAgICAgICAgIGF1dG8mIGNvbnRleHQgPSAqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOwotICAgICAgICBhdXRvIGNvbnRleHRJZGVudGlmaWVyID0gdGhpcy0+Y29udGV4dElk
ZW50aWZpZXIoKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1ha2VS
ZWYoZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkpLCB0b3BPcmlnaW4gPSBjb250ZXh0LnRvcE9y
aWdpbigpLmlzb2xhdGVkQ29weSgpLCBjbGllbnRVUkwgPSBjb250ZXh0LnVybCgpLmlzb2xhdGVk
Q29weSgpLCBjb250ZXh0SWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIGNvbm5l
Y3Rpb24tPndoZW5SZWdpc3RyYXRpb25SZWFkeSh0b3BPcmlnaW4sIGNsaWVudFVSTCwgW2NvbnRl
eHRJZGVudGlmaWVyXShhdXRvJiYgcmVnaXN0cmF0aW9uRGF0YSkgewotICAgICAgICAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29udGV4dElkZW50aWZpZXIsIFty
ZWdpc3RyYXRpb25EYXRhID0gY3Jvc3NUaHJlYWRDb3B5KHJlZ2lzdHJhdGlvbkRhdGEpXShhdXRv
JiBjb250ZXh0KSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byogc2VydmljZVdv
cmtlckNvbnRhaW5lciA9IGNvbnRleHQuc2VydmljZVdvcmtlckNvbnRhaW5lcigpOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoIXNlcnZpY2VXb3JrZXJDb250YWluZXIpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2Vy
Q29udGFpbmVyLT5tX2lzU3RvcHBlZCB8fCAhY29udGV4dC5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICAgICAg
YXV0byByZWdpc3RyYXRpb24gPSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpnZXRPckNyZWF0
ZShjb250ZXh0LCAqc2VydmljZVdvcmtlckNvbnRhaW5lciwgV1RGTW92ZShyZWdpc3RyYXRpb25E
YXRhKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJDb250YWluZXItPm1fcmVh
ZHlQcm9taXNlLT5yZXNvbHZlKFdURk1vdmUocmVnaXN0cmF0aW9uKSk7Ci0gICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICB9KTsKKyAgICAgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9u
KCkud2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnRleHQudG9wT3JpZ2luKCksIGNvbnRleHQudXJs
KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiByZWdpc3Ry
YXRpb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCkKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpOworICAgICAgICAgICAgbV9y
ZWFkeVByb21pc2UtPnJlc29sdmUoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKICAgICAgICAgfSk7
CiAgICAgfQogICAgIHJldHVybiAqbV9yZWFkeVByb21pc2U7CkBAIC0yNTQsNzMgKzI1Miw0MSBA
QCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0
cjxTZXJ2aWNlV29ya2VySm9iPiYmIGpvYgogICAgIEFTU0VSVCghbV9qb2JNYXAuY29udGFpbnMo
am9iSWRlbnRpZmllcikpOwogICAgIG1fam9iTWFwLmFkZChqb2JJZGVudGlmaWVyLCBPbmdvaW5n
Sm9iIHsgV1RGTW92ZShqb2IpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSB9KTsKIAotICAg
IGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgY29udGV4dElk
ZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpLCBqb2JEYXRhID0gam9iRGF0YS5p
c29sYXRlZENvcHkoKV0gewotICAgICAgICBjb25uZWN0aW9uLT5zY2hlZHVsZUpvYihjb250ZXh0
SWRlbnRpZmllciwgam9iRGF0YSk7Ci0gICAgfSk7CisgICAgbV9zd0Nvbm5lY3Rpb24tPnNjaGVk
dWxlSm9iKGNvbnRleHRJZGVudGlmaWVyKCksIGpvYkRhdGEpOwogfQogCiB2b2lkIFNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKG1faXNTdG9wcGVkIHx8ICFjb250ZXh0
LT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpIHsKKyAgICBpZiAobV9pc1N0b3BwZWQpIHsKICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVVJMIHBhcnNlZFVSTCA9IGNvbnRleHQtPmNvbXBs
ZXRlVVJMKGNsaWVudFVSTCk7Ci0gICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwo
cGFyc2VkVVJMLCBjb250ZXh0LT51cmwoKSkpIHsKKyAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBVUkwgcGFyc2VkVVJMID0gY29udGV4dC5jb21wbGV0
ZVVSTChjbGllbnRVUkwpOworICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHBh
cnNlZFVSTCwgY29udGV4dC51cmwoKSkpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2Vw
dGlvbiB7IFNlY3VyaXR5RXJyb3IsICJPcmlnaW4gb2YgY2xpZW50VVJMIGlzIG5vdCBjbGllbnQn
cyBvcmlnaW4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBw
ZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIgPSArK21fbGFzdFBlbmRpbmdQcm9taXNlSWRlbnRpZmll
cjsKLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4o
V1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOwotICAgIG1fcGVu
ZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGlu
Z1Byb21pc2UpKTsKLQotICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0
SWRlbnRpZmllcigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtYWtlUmVm
KGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpKSwgdG9wT3JpZ2luID0gY29udGV4dC0+dG9wT3Jp
Z2luKCkuZGF0YSgpLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRVUkwgPSBwYXJzZWRVUkwuaXNvbGF0
ZWRDb3B5KCksIGNvbnRleHRJZGVudGlmaWVyLCBwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXJdKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGNvbm5lY3Rpb24tPm1hdGNoUmVnaXN0cmF0aW9uKFdURk1vdmUo
dG9wT3JpZ2luKSwgcGFyc2VkVVJMLCBbY29udGV4dElkZW50aWZpZXIsIHBlbmRpbmdQcm9taXNl
SWRlbnRpZmllcl0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRlbnRpZmllciwgW3BlbmRpbmdQ
cm9taXNlSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldKGF1dG8m
IGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJD
b250YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoIXNlcnZpY2VXb3JrZXJDb250YWluZXIpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlckNvbnRhaW5lci0+bV9pc1N0
b3BwZWQgfHwgIWNvbnRleHQuc2Vzc2lvbklEKCkuaXNWYWxpZCgpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyQ29udGFpbmVyLT5k
aWRGaW5pc2hHZXRSZWdpc3RyYXRpb25SZXF1ZXN0KHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwg
V1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsK
LX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkaWRGaW5pc2hHZXRSZWdpc3RyYXRp
b25SZXF1ZXN0KHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgT3B0aW9uYWw8U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYgcmVzdWx0KQotewotI2lmbmRlZiBOREVCVUcK
LSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkp
OwotI2VuZGlmCi0KLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbV9wZW5kaW5nUHJvbWlzZXMu
dGFrZShwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIpOwotICAgIGlmICghcGVuZGluZ1Byb21pc2Up
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgcGVuZGluZ1By
b21pc2UtPnByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHBl
bmRpbmdQcm9taXNlLT5wcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkubWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJp
dHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgcGFyc2VkVVJMLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX2lzU3RvcHBl
ZCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgKnRoaXMsIFdURk1vdmUocmVzdWx0LnZhbHVlKCkpKTsKLSAgICBwZW5kaW5nUHJvbWlzZS0+
cHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4+
KFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAg
ICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbj4+KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSkpOworICAg
IH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlv
blN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwgY29uc3QgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKIHsKLSAgICBpZiAobV9pc1N0b3BwZWQp
CisgICAgaWYgKG1faXNTdG9wcGVkKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAg
IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiBzZXJ2aWNlV29ya2VyOwogICAgIGlmIChzZXJ2aWNlV29y
a2VyRGF0YSkKQEAgLTMzMiw1MyArMjk4LDIxIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5l
cjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkCiAK
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyhSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKLSAgICBpZiAobV9pc1N0b3BwZWQgfHwgIWNvbnRleHQtPnNlc3Npb25J
RCgpLmlzVmFsaWQoKSkgeworICAgIGlmIChtX2lzU3RvcHBlZCkgewogICAgICAgICBwcm9taXNl
LT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIgPSArK21f
bGFzdFBlbmRpbmdQcm9taXNlSWRlbnRpZmllcjsKLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0g
bWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdB
Y3Rpdml0eSgqdGhpcykpOwotICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlz
ZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKLQotICAgIGF1dG8gY29udGV4
dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwotICAgIGF1dG8gY29udGV4
dFVSTCA9IGNvbnRleHQtPnVybCgpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24g
PSBtYWtlUmVmKGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpKSwgdG9wT3JpZ2luID0gY29udGV4
dC0+dG9wT3JpZ2luKCkuZGF0YSgpLmlzb2xhdGVkQ29weSgpLCBjb250ZXh0VVJMID0gY29udGV4
dFVSTC5pc29sYXRlZENvcHkoKSwgY29udGV4dElkZW50aWZpZXIsIHBlbmRpbmdQcm9taXNlSWRl
bnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgY29ubmVjdGlvbi0+Z2V0UmVnaXN0cmF0aW9u
cyhXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbnRleHRVUkwsIFtjb250ZXh0SWRlbnRpZmllciwgcGVu
ZGluZ1Byb21pc2VJZGVudGlmaWVyXSAoYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGFzKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29udGV4
dElkZW50aWZpZXIsIFtwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbkRhdGFz
ID0gY3Jvc3NUaHJlYWRDb3B5KHJlZ2lzdHJhdGlvbkRhdGFzKV0oYXV0byYgY29udGV4dCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgYXV0byogc2VydmljZVdvcmtlckNvbnRhaW5lciA9IGNv
bnRleHQuc2VydmljZVdvcmtlckNvbnRhaW5lcigpOwotICAgICAgICAgICAgICAgIGlmICghc2Vy
dmljZVdvcmtlckNvbnRhaW5lcikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyQ29udGFpbmVyLT5tX2lzU3RvcHBlZCB8fCAhY29u
dGV4dC5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJDb250YWluZXItPmRpZEZpbmlzaEdldFJl
Z2lzdHJhdGlvbnNSZXF1ZXN0KHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgV1RGTW92ZShyZWdp
c3RyYXRpb25EYXRhcykpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwot
fQotCi12b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRpZEZpbmlzaEdldFJlZ2lzdHJhdGlv
bnNSZXF1ZXN0KHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgVmVjdG9yPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmIHJlZ2lzdHJhdGlvbkRhdGFzKQotewotI2lmbmRl
ZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpj
dXJyZW50KCkpOwotI2VuZGlmCi0KLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbV9wZW5kaW5n
UHJvbWlzZXMudGFrZShwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIpOwotICAgIGlmICghcGVuZGlu
Z1Byb21pc2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAg
cGVuZGluZ1Byb21pc2UtPnByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvJiBjb250ZXh0ID0gKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5n
ZXRSZWdpc3RyYXRpb25zKFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCku
ZGF0YSgpIH0sIGNvbnRleHQudXJsKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byYmIHJlZ2lzdHJhdGlvbkRh
dGFzKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1faXNTdG9wcGVkKQorICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byByZWdpc3RyYXRpb25zID0gV1RGOjptYXAoV1RGTW92ZShyZWdpc3Ry
YXRpb25EYXRhcyksIFsmXSAoYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEpIHsKLSAgICAgICAgcmV0
dXJuIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCp0aGlzLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKTsKKyAg
ICAgICAgYXV0byByZWdpc3RyYXRpb25zID0gV1RGOjptYXAoV1RGTW92ZShyZWdpc3RyYXRpb25E
YXRhcyksIFsmXShhdXRvJiYgcmVnaXN0cmF0aW9uRGF0YSkgeworICAgICAgICAgICAgcmV0dXJu
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksICp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24+Pj4oV1RGTW92ZShyZWdpc3RyYXRpb25zKSk7CiAgICAgfSk7
Ci0KLSAgICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS0+cmVzb2x2ZTxJRExTZXF1ZW5jZTxJRExJ
bnRlcmZhY2U8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4+PihXVEZNb3ZlKHJlZ2lzdHJhdGlv
bnMpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydE1lc3NhZ2VzKCkK
QEAgLTQ4Nyw4ICs0MjEsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnBvc3RNZXNz
YWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydgogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6Om5vdGlmeVJlZ2lzdHJhdGlvbklzU2V0dGxlZChjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCiB7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uLCByZWdpc3RyYXRpb25LZXkg
PSByZWdpc3RyYXRpb25LZXkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgY29ubmVjdGlvbi0+
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UocmVnaXN0cmF0aW9uS2V5KTsKKyAgICBjYWxs
T25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Np
b25JRCgpLCByZWdpc3RyYXRpb25LZXkgPSByZWdpc3RyYXRpb25LZXkuaXNvbGF0ZWRDb3B5KCld
IHsKKyAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24oc2Vzc2lvbklEKS5kaWRSZXNvbHZlUmVn
aXN0cmF0aW9uUHJvbWlzZShyZWdpc3RyYXRpb25LZXkpOwogICAgIH0pOwogfQogCkBAIC01NDQs
OCArNDc4LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRp
bmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb24KIAogICAgIENPTlRBSU5FUl9SRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQ6IFN1Y2Nlc3NmdWx5
IGZpbmlzaGVkIGZldGNoaW5nIHNjcmlwdCBmb3Igam9iICUiIFBSSXU2NCwgam9iLmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBt
X3N3Q29ubmVjdGlvbiwgam9iRGF0YUlkZW50aWZpZXIgPSBqb2IuZGF0YSgpLmlkZW50aWZpZXIo
KSwgcmVnaXN0cmF0aW9uS2V5ID0gam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKS5pc29sYXRl
ZENvcHkoKSwgc2NyaXB0ID0gc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBjb250ZW50U2VjdXJpdHlQ
b2xpY3kgPSBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyUG9s
aWN5ID0gcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgY29ubmVjdGlv
bi0+ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdp
c3RyYXRpb25LZXksIHNjcmlwdCwgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGlj
eSwgeyB9IH0pOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCksIGpvYkRhdGFJZGVudGlmaWVyID0gam9iLmRhdGEo
KS5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpvYi5kYXRhKCkucmVnaXN0cmF0aW9u
S2V5KCkuaXNvbGF0ZWRDb3B5KCksIHNjcmlwdCA9IHNjcmlwdC5pc29sYXRlZENvcHkoKSwgY29u
dGVudFNlY3VyaXR5UG9saWN5ID0gY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVkQ29weSgp
LCByZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpXSB7CisgICAg
ICAgIG1haW5UaHJlYWRDb25uZWN0aW9uKHNlc3Npb25JRCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJ
blNlcnZlcih7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIHNjcmlwdCwgY29u
dGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgeyB9IH0pOwogICAgIH0pOwogfQog
CkBAIC01NjcsOCArNTAxLDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWls
ZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKIAogdm9pZCBTZXJ2
aWNlV29ya2VyQ29udGFpbmVyOjpub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29y
a2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iSWRlbnRpZmllciA9IGpv
Yi5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpvYi5kYXRhKCkucmVnaXN0cmF0aW9u
S2V5KCkuaXNvbGF0ZWRDb3B5KCksIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRDb3B5KCldIHsKLSAg
ICAgICAgY29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iSWRlbnRpZmllciwgcmVn
aXN0cmF0aW9uS2V5LCBlcnJvcik7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklEID0g
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKSwgam9iSWRlbnRpZmllciA9IGpv
Yi5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpvYi5kYXRhKCkucmVnaXN0cmF0aW9u
S2V5KCkuaXNvbGF0ZWRDb3B5KCksIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRDb3B5KCldIHsKKyAg
ICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24oc2Vzc2lvbklEKS5mYWlsZWRGZXRjaGluZ1Njcmlw
dChqb2JJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIGVycm9yKTsKICAgICB9KTsKIH0KIApA
QCAtNjA3LDEwICs1NDEsMTEgQEAgU1dDbGllbnRDb25uZWN0aW9uJiBTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjplbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKQogICAgIEFTU0VSVChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
c3Npb25JRCgpLmlzVmFsaWQoKSk7CiAgICAgaWYgKCFtX3N3Q29ubmVjdGlvbikgewotICAgICAg
ICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICAgICAgY2FsbE9uTWFpblRo
cmVhZEFuZFdhaXQoW3RoaXMsIHNlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2Vzc2lvbklEKCldKCkgewotICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24gPSAmU2VydmljZVdv
cmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Np
b24oc2Vzc2lvbklEKTsKLSAgICAgICAgfSk7CisgICAgICAgIGF1dG8mIGNvbnRleHQgPSAqc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+
KGNvbnRleHQpKQorICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24gPSAmZG93bmNhc3Q8V29ya2Vy
R2xvYmFsU2NvcGU+KGNvbnRleHQpLnN3Q2xpZW50Q29ubmVjdGlvbigpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbiA9ICZtYWluVGhyZWFkQ29ubmVjdGlvbihjb250
ZXh0LnNlc3Npb25JRCgpKTsKICAgICB9CiAgICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbjsKIH0K
QEAgLTY1MSw3ICs1ODYsNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0b3AoKQog
ewogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygp
OwotICAgIG1fcGVuZGluZ1Byb21pc2VzLmNsZWFyKCk7CiAgICAgbV9yZWFkeVByb21pc2UgPSBu
dWxscHRyOwogICAgIG1fbWVzc2FnZVF1ZXVlLmNsb3NlKCk7CiAgICAgYXV0byBqb2JNYXAgPSBX
VEZNb3ZlKG1fam9iTWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4IGRiMjdmNDM3OGE1YjZmZDBiM2M0
ZGQ3N2FiYTFjNzAwMDhmNmZhNWMuLmVjNTYzYTBhYjhmYWU3N2ZkZjM2YTdkYTk2ZmYyNDEyZmRm
YjBhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtMTA1LDkgKzEwNSw2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3Qg
UmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGVzdHJveUpvYihTZXJ2aWNlV29ya2VySm9iJik7
CiAKLSAgICB2b2lkIGRpZEZpbmlzaEdldFJlZ2lzdHJhdGlvblJlcXVlc3QodWludDY0X3QgcmVx
dWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYm
KTsKLSAgICB2b2lkIGRpZEZpbmlzaEdldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0KHVpbnQ2NF90IHJl
cXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYp
OwotCiAgICAgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIoKSBm
aW5hbDsKIAogICAgIFNXQ2xpZW50Q29ubmVjdGlvbiYgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9u
KCk7CkBAIC0xNDUsMjAgKzE0Miw2IEBAIHByaXZhdGU6CiAgICAgUmVmPFRocmVhZD4gbV9jcmVh
dGlvblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIAotICAgIHN0cnVjdCBQ
ZW5kaW5nUHJvbWlzZSB7Ci0gICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsK
LSAgICAgICAgUGVuZGluZ1Byb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBS
ZWY8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDb250YWluZXI+PiYmIHBlbmRpbmdBY3Rp
dml0eSkKLSAgICAgICAgICAgIDogcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQotICAgICAgICAg
ICAgLCBwZW5kaW5nQWN0aXZpdHkoV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpKQotICAgICAgICB7
IH0KLQotICAgICAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBwcm9taXNlOwotICAgICAgICBSZWY8
UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDb250YWluZXI+PiBwZW5kaW5nQWN0aXZpdHk7
Ci0gICAgfTsKLQotICAgIHVpbnQ2NF90IG1fbGFzdFBlbmRpbmdQcm9taXNlSWRlbnRpZmllciB7
IDAgfTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ1Byb21p
c2U+PiBtX3BlbmRpbmdQcm9taXNlczsKLQogICAgIHVpbnQ2NF90IG1fbGFzdE9uZ29pbmdTZXR0
bGVkUmVnaXN0cmF0aW9uSWRlbnRpZmllciB7IDAgfTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBtX29uZ29pbmdTZXR0bGVkUmVnaXN0cmF0aW9u
czsKICAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX21lc3NhZ2VRdWV1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQu
aAppbmRleCBlYzlmZmVlMTdjNjIwN2NhMDIxM2UzN2ZjMGFiZmFjY2JjYTBkMDY2Li4yMTNiZGZi
YWE2NjFkNzlmNzJhYzFkMTE0MzFmY2JjMGUwYzQ4ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCkBA
IC00Miw2ICs0Miw4IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQgewogICAgIFN0
cmluZyByZWZlcnJlclBvbGljeTsKICAgICBSZXNvdXJjZUVycm9yIHNjcmlwdEVycm9yOwogCisg
ICAgU2VydmljZVdvcmtlckZldGNoUmVzdWx0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJu
IHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktleS5pc29sYXRlZENvcHkoKSwgc2Ny
aXB0Lmlzb2xhdGVkQ29weSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCks
IHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRFcnJvci5pc29sYXRlZENvcHko
KSB9OyB9CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2Rl
KERlY29kZXImLCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU4ZWU1MzI2MWQ5OWM4ZGVlNDFhMjJiOGM2MDA3NzczY2VmZmNh
NGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29y
a2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDIxMSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24u
aCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlNlY3VyaXR5T3Jp
Z2luLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckpvYkRhdGEuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUHJvdmlkZXIu
aCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCisjaW5jbHVkZSAiV29y
a2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OldvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbihXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCisgICAgOiBtX3Nlc3Npb25JRChzY29w
ZS5zZXNzaW9uSUQoKSkKKyAgICAsIG1fdGhyZWFkKHNjb3BlLnRocmVhZCgpKQoreworfQorCitX
b3JrZXJTV0NsaWVudENvbm5lY3Rpb246On5Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24oKQorewor
ICAgIGF1dG8gbWF0Y2hSZWdpc3RyYXRpb25zID0gV1RGTW92ZShtX21hdGNoUmVnaXN0cmF0aW9u
UmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBtYXRjaFJlZ2lzdHJhdGlvbnMu
dmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisKKyAgICBhdXRvIGdldFJlZ2lzdHJh
dGlvbnNSZXF1ZXN0cyA9IFdURk1vdmUobV9nZXRSZWdpc3RyYXRpb25zUmVxdWVzdHMpOworICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBnZXRSZWdpc3RyYXRpb25zUmVxdWVzdHMudmFsdWVzKCkp
CisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisKKyAgICBhdXRvIHdoZW5SZWdpc3RyYXRpb25SZWFk
eVJlcXVlc3RzID0gV1RGTW92ZShtX3doZW5SZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKTsKKyAg
ICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogd2hlblJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHMudmFs
dWVzKCkpCisgICAgICAgIGNhbGxiYWNrKHsgfSk7Cit9CisKK3ZvaWQgV29ya2VyU1dDbGllbnRD
b25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbihTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmln
aW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNr
KQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRl
bnRpZmllcjsKKyAgICBtX21hdGNoUmVnaXN0cmF0aW9uUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVu
dGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNz
aW9uSUQgPSBtX3Nlc3Npb25JRCwgdGhyZWFkID0gbV90aHJlYWQuY29weVJlZigpLCByZXF1ZXN0
SWRlbnRpZmllciwgdG9wT3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodG9wT3JpZ2lu
KSksIGNsaWVudFVSTCA9IGNyb3NzVGhyZWFkQ29weShjbGllbnRVUkwpXSgpIG11dGFibGUgewor
ICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0
b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAg
ICAgY29ubmVjdGlvbi5tYXRjaFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHRvcE9yaWdpbiksIGNsaWVu
dFVSTCwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKGF1dG8m
JiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRh
c2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSAo
YXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLnN3Q2xpZW50Q29ubmVjdGlvbigpLm1f
bWF0Y2hSZWdpc3RyYXRpb25SZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICAgICAgfSwgV29y
a2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2
b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9y
aWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRp
b25zQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmll
ciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAgbV9nZXRSZWdpc3RyYXRpb25zUmVx
dWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgdGhyZWFkID0gbV90aHJl
YWQuY29weVJlZigpLCByZXF1ZXN0SWRlbnRpZmllciwgdG9wT3JpZ2luID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUodG9wT3JpZ2luKSksIGNsaWVudFVSTCA9IGNyb3NzVGhyZWFkQ29weShjbGll
bnRVUkwpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdv
cmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Np
b24oc2Vzc2lvbklEKTsKKyAgICAgICAgY29ubmVjdGlvbi5nZXRSZWdpc3RyYXRpb25zKFdURk1v
dmUodG9wT3JpZ2luKSwgY2xpZW50VVJMLCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1
ZXN0SWRlbnRpZmllcl0oYXV0byYmIGRhdGEpIG11dGFibGUgeworICAgICAgICAgICAgdGhyZWFk
LT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgZGF0YSA9IGNy
b3NzVGhyZWFkQ29weShXVEZNb3ZlKGRhdGEpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+
KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX2dldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0cy50
YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3Zl
KGRhdGEpKTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwor
ICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246
OndoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBj
b25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2smJiBjYWxs
YmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVz
dElkZW50aWZpZXI7CisgICAgbV93aGVuUmVnaXN0cmF0aW9uUmVhZHlSZXF1ZXN0cy5hZGQocmVx
dWVzdElkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCB0aHJlYWQgPSBtX3RocmVhZC5jb3B5UmVmKCks
IHJlcXVlc3RJZGVudGlmaWVyLCB0b3BPcmlnaW4gPSB0b3BPcmlnaW4uaXNvbGF0ZWRDb3B5KCks
IGNsaWVudFVSTCA9IGNyb3NzVGhyZWFkQ29weShjbGllbnRVUkwpXSgpIG11dGFibGUgeworICAg
ICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24o
KS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAg
Y29ubmVjdGlvbi53aGVuUmVnaXN0cmF0aW9uUmVhZHkodG9wT3JpZ2luLCBjbGllbnRVUkwsIFt0
aHJlYWQgPSBXVEZNb3ZlKHRocmVhZCksIHJlcXVlc3RJZGVudGlmaWVyXShhdXRvJiYgcmVzdWx0
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9k
ZShbcmVxdWVzdElkZW50aWZpZXIsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKHJl
c3VsdCkpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gY2Fs
bGJhY2sgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLnN3Q2xpZW50Q29ubmVj
dGlvbigpLm1fd2hlblJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHMudGFrZShyZXF1ZXN0SWRlbnRp
Zmllcik7CisgICAgICAgICAgICAgICAgY2FsbGJhY2soV1RGTW92ZShyZXN1bHQpKTsKKyAgICAg
ICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAg
ICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OmFkZFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IG1fc2Vz
c2lvbklELCBpZGVudGlmaWVyXSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9u
ID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVj
dGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAgY29ubmVjdGlvbi5hZGRTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoaWRlbnRpZmllcik7CisgICAgfSk7Cit9CisKK3Zv
aWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpyZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgaWRl
bnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNz
aW9uKHNlc3Npb25JRCk7CisgICAgICAgIGNvbm5lY3Rpb24ucmVtb3ZlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkluU2VydmVyKGlkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIFdvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQoreworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBrZXkgPSBjcm9zc1RocmVhZENvcHkoa2V5KV0o
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92
aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKHNlc3Np
b25JRCk7CisgICAgICAgIGNvbm5lY3Rpb24uZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Uo
a2V5KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RN
ZXNzYWdlVG9TZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9u
LCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIHBvcnRzLCBjb25zdCBTZXJ2aWNlV29ya2VyT3JD
bGllbnRJZGVudGlmaWVyJiBzb3VyY2UpCit7CisgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQo
WyZdIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6
c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKG1fc2Vzc2lvbklE
KTsKKyAgICAgICAgY29ubmVjdGlvbi5wb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihkZXN0aW5h
dGlvbiwgV1RGTW92ZShwb3J0cyksIHNvdXJjZSk7CisgICAgfSk7Cit9CisKK1NXU2VydmVyQ29u
bmVjdGlvbklkZW50aWZpZXIgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBpZGVudGlmaWVyOworICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CisgICAgICAg
IGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNl
cnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgICAgIGlk
ZW50aWZpZXIgPSBjb25uZWN0aW9uLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCk7CisgICAg
fSk7CisgICAgcmV0dXJuIGlkZW50aWZpZXI7Cit9CisKK2Jvb2wgV29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uOjptYXlIYXZlU2VydmljZVdvcmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2Vj
dXJpdHlPcmlnaW5EYXRhJikgY29uc3QKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnN5bmNU
ZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAg
ICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgaWRlbnRpZmllcl0o
KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92
aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKHNlc3Np
b25JRCk7CisgICAgICAgIGNvbm5lY3Rpb24uc3luY1Rlcm1pbmF0ZVdvcmtlcihpZGVudGlmaWVy
KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25z
dCBTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YSYgZGF0YSwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+JiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCkKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25J
RCwgdG9wT3JpZ2luID0gdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBkYXRhID0gY3Jvc3NUaHJl
YWRDb3B5KGRhdGEpLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQgPSBjcm9zc1RocmVhZENvcHkodXNl
ckFnZW50KV0geworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lv
bklEKTsKKyAgICAgICAgY29ubmVjdGlvbi5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQodG9w
T3JpZ2luLCBkYXRhLCBpZGVudGlmaWVyLCB1c2VyQWdlbnQpOworICAgIH0pOworfQorCit2b2lk
IFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQo
RG9jdW1lbnRJZGVudGlmaWVyKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit2
b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZl
cihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJlc3VsdCkKK3sKKyAgICBjYWxsT25N
YWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRD
b3B5KHJlc3VsdCldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2
aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9y
U2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICBjb25uZWN0aW9uLmZpbmlzaEZldGNoaW5nU2Ny
aXB0SW5TZXJ2ZXIocmVzdWx0KTsKKyAgICB9KTsKK30KKworYm9vbCBXb3JrZXJTV0NsaWVudENv
bm5lY3Rpb246OmlzVGhyb3R0bGVhYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVRocm90dGxlU3RhdGUoKQor
eworfQorCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2IoRG9jdW1l
bnRPcldvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmIGRhdGEpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklEID0gbV9zZXNzaW9u
SUQsIGlkZW50aWZpZXIsIGRhdGEgPSBjcm9zc1RocmVhZENvcHkoZGF0YSldKCkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmds
ZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
ICAgICBjb25uZWN0aW9uLnNjaGVkdWxlSm9iKGlkZW50aWZpZXIsIGRhdGEpOworICAgIH0pOwor
fQorCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpCit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3Jr
ZXJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9X
b3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODM2MWEyODMwYzM1ZjFiZDdm
MjZlMWMwMmIxNzBhODliNTcxOWE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsNzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKKworI2luY2x1ZGUgIlNXQ2xpZW50Q29ubmVjdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworY2xhc3MgV29ya2VyVGhyZWFkOworCitj
bGFzcyBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgU1dDbGllbnRDb25u
ZWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdvcmtlclNXQ2xpZW50Q29ubmVjdGlv
bj4gY3JlYXRlKFdvcmtlckdsb2JhbFNjb3BlJiBzY29wZSkgeyByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24geyBzY29wZSB9KTsgfQorICAgIH5Xb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb24oKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24oV29ya2VyR2xvYmFsU2NvcGUmKTsKKworICAgIHZvaWQgbWF0Y2hSZWdpc3Ry
YXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVS
TCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBnZXRSZWdpc3RyYXRp
b25zKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkws
IEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHdoZW5SZWdpc3Ry
YXRpb25SZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNs
aWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2smJikgZmluYWw7CisgICAgdm9p
ZCBhZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKSBm
aW5hbDsKKyAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9T
ZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGRlc3RpbmF0aW9uLCBNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBTZXJ2aWNlV29ya2VyT3JDbGllbnRJZGVudGlmaWVy
JiBzb3VyY2UpIGZpbmFsOworICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIG1heUhhdmVTZXJ2
aWNlV29ya2VyUmVnaXN0ZXJlZEZvck9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKSBj
b25zdCBmaW5hbDsKKyAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KGNv
bnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRE
YXRhJiwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXI+
JiwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpIGZpbmFsOworICAgIHZvaWQgdW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoRG9jdW1lbnRJZGVudGlmaWVyKSBmaW5hbDsKKyAgICB2b2lkIGZp
bmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0
JikgZmluYWw7CisgICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpIGZpbmFsOworICAgIHZvaWQgc2NoZWR1bGVKb2JJblNl
cnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpIGZpbmFsOworICAgIHZvaWQgc2NoZWR1
bGVKb2IoRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJikgZmluYWw7CisKKyAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBSZWY8
V29ya2VyVGhyZWFkPiBtX3RocmVhZDsKKworICAgIHVpbnQ2NF90IG1fbGFzdFJlcXVlc3RJZGVu
dGlmaWVyIHsgMCB9OworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhdGlvbkNhbGxiYWNr
PiBtX21hdGNoUmVnaXN0cmF0aW9uUmVxdWVzdHM7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgR2V0
UmVnaXN0cmF0aW9uc0NhbGxiYWNrPiBtX2dldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0czsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjaz4gbV93aGVuUmVn
aXN0cmF0aW9uUmVhZHlSZXF1ZXN0czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nCmluZGV4IGY4NWRjMDE5Nzg4NTllM2U5Y2FiZmE4Njk1Y2FiNDM5YjIwNmI1NTYuLjMyMWE4
NDdjYTI3Yzk5YTA4ZTk3ZTZkMjM0OTY2NzI0NjU3NDEzZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA5LTAzICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uIHRvIG1ha2UgU1dDbGllbnRDb25uZWN0aW9uIG1vbm8tdGhyZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE0MzAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgaW5zZXJ0ZWQgaWZy
YW1lcyB0byBtYWtlIHRlc3Qgb3V0cHV0cyBtb3JlIHN0YWJsZS4KKworICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvYWN0aXZhdGlvbi5o
dHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci9hY3RpdmF0aW9uLmh0dHBzLmh0bWw6CisgICAgICAgICog
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9kZXRhY2hl
ZC1jb250ZXh0Lmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2RldGFjaGVkLWNvbnRleHQuaHR0cHMu
aHRtbDoKKwogMjAxOS0wOS0wMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBw
bGUuY29tPgogCiAgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQ6OmRlY29kZSgpIHNob3VsZCByZXR1
cm4gYSByZXNvbHZlZCBwcm9taXNlIGZvciBkZWNvZGluZyBub24gYml0bWFwIGltYWdlcwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvYWN0aXZhdGlvbi5odHRwcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci9hY3RpdmF0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCA1
NWQ3ODRiOTlmYmQyYTQ3OWE0NmUwYmMyZDk3ZjY5YTBmZTkyYTZlLi43MzM0ZDZiN2E3YWM0NGRh
MTEyOGRmNWQ5NGZmOTg1NzJlNjMyODc4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9h
Y3RpdmF0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9hY3Rp
dmF0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDQgQEAKIAotCiBQQVNTIGxvc3Mg
b2YgY29udHJvbGxlZXMgdHJpZ2dlcnMgYWN0aXZhdGlvbiAKIFBBU1MgZmluaXNoaW5nIGEgcmVx
dWVzdCB0cmlnZ2VycyBhY3RpdmF0aW9uIAogUEFTUyBza2lwV2FpdGluZyBieXBhc3NlcyBubyBj
b250cm9sbGVlIHJlcXVpcmVtZW50IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvYWN0
aXZhdGlvbi5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvYWN0aXZhdGlvbi5odHRwcy5o
dG1sCmluZGV4IDU3NTU3NThlNTcxNmRiYzYwOGU3ZTc3M2JmOWI4M2FiM2YyZjdlOTEuLjAwN2Vj
YWFkNzZjOTU5MzVkZDU3NDcwYzY2MDU3NTMwNWRjNmJhZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL2FjdGl2YXRpb24uaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9h
Y3RpdmF0aW9uLmh0dHBzLmh0bWwKQEAgLTExMywxMCArMTEzLDEyIEBAIHByb21pc2VfdGVzdCh0
ID0+IHsKICAgICB2YXIgc2NvcGUgPSAncmVzb3VyY2VzL3NraXAtd2FpdGluZyc7CiAgICAgdmFy
IHdvcmtlcl91cmwgPSAncmVzb3VyY2VzL21pbnQtbmV3LXdvcmtlci5weT9za2lwLXdhaXRpbmcn
OwogICAgIHZhciByZWdpc3RyYXRpb247CisgICAgdmFyIGlmcmFtZTsKICAgICB2YXIgbmV3X3dv
cmtlcjsKICAgICByZXR1cm4gc2V0dXBfYWN0aXZhdGlvbl90ZXN0KHQsIHNjb3BlLCB3b3JrZXJf
dXJsKQogICAgICAgLnRoZW4ocmVzdWx0ID0+IHsKICAgICAgICAgICByZWdpc3RyYXRpb24gPSBy
ZXN1bHQucmVnaXN0cmF0aW9uOworICAgICAgICAgIGlmcmFtZSA9IHJlc3VsdC5pZnJhbWU7CiAg
ICAgICAgICAgLy8gRmluaXNoIHRoZSByZXF1ZXN0LiBUaGUgaWZyYW1lIGRvZXMgbm90IG5lZWQg
dG8gYmUgcmVtb3ZlZCBiZWNhdXNlCiAgICAgICAgICAgLy8gc2tpcFdhaXRpbmcoKSB3YXMgY2Fs
bGVkLgogICAgICAgICAgIG5ld193b3JrZXIgPSByZWdpc3RyYXRpb24ud2FpdGluZzsKQEAgLTEy
Niw2ICsxMjgsOCBAQCBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIH0pCiAgICAgICAudGhl
bigoKSA9PiB7CiAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWdpc3RyYXRpb24uYWN0aXZlLCBu
ZXdfd29ya2VyKTsKKyAgICAgICAgICAvLyBSZW1vdmUgdGhlIGlmcmFtZS4KKyAgICAgICAgICBp
ZnJhbWUucmVtb3ZlKCk7CiAgICAgICAgIH0pOwogICB9LCAnc2tpcFdhaXRpbmcgYnlwYXNzZXMg
bm8gY29udHJvbGxlZSByZXF1aXJlbWVudCcpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9kZXRhY2hlZC1jb250ZXh0Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL2RldGFjaGVkLWNvbnRleHQuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGQ4MDNmOWZkOTI5
Zjc1MDZjNzU2ODY4MDY2MGI1YmRhN2FmYWUzM2UuLmY1OGI2MGE4MzcyNjJkMzc3Njg0NDI0MGQw
MTg5Mzk0NGYzZDIyNjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2RldGFjaGVkLWNv
bnRleHQuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2RldGFjaGVk
LWNvbnRleHQuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNCBAQAogCi0KIFBBU1MgYWNj
ZXNzaW5nIGEgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBmcm9tIGEgcmVtb3ZlZCBpZnJhbWUg
CiBQQVNTIGFjY2Vzc2luZyBhIFNlcnZpY2VXb3JrZXIgb2JqZWN0IGZyb20gYSByZW1vdmVkIGlm
cmFtZSAKIFBBU1MgYWNjZXNzaW5nIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyIG9uIGEgZGV0YWNo
ZWQgaWZyYW1lIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZGV0YWNoZWQtY29udGV4
dC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZGV0YWNoZWQtY29udGV4dC5odHRwcy5o
dG1sCmluZGV4IDVhZTRkZThjYzgxZTBjMzY1MGVhYWY2YjU2NTYxOTNkNGEyY2Y4YjAuLmY5NjM3
MGQyMDEwMDBkMjBhOTUwMTY2ZGNjZjJjYWY3MmJkNDczYzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL2RldGFjaGVkLWNvbnRleHQuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9kZXRhY2hlZC1jb250ZXh0Lmh0dHBzLmh0bWwKQEAgLTU5LDYgKzU5LDcgQEAgcHJvbWlz
ZV90ZXN0KHQgPT4gewogICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgIGFzc2VydF9lcXVh
bHMocmVzb2x2ZWRDb3VudCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICdtZXRob2RzIGNh
bGxlZCBvbiBhIGRldGFjaGVkIHJlZ2lzdHJhdGlvbiBzaG91bGQgbm90IHJlc29sdmUnKTsKKyAg
ICAgICAgICBmcmFtZS5yZW1vdmUoKTsKICAgICAgICAgfSkKICAgfSwgJ2FjY2Vzc2luZyBhIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gZnJvbSBhIHJlbW92ZWQgaWZyYW1lJyk7CiAKQEAgLTEw
Miw2ICsxMDMsNyBAQCBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMo
CiAgICAgICAgICAgICBnZXRfbmF2aWdhdG9yKCkuc2VydmljZVdvcmtlciwKICAgICAgICAgICAg
IGlmcmFtZS5jb250ZW50V2luZG93Lm5hdmlnYXRvci5zZXJ2aWNlV29ya2VyKTsKKyAgICAgICAg
aWZyYW1lLnJlbW92ZSgpOwogICAgICAgfSk7CiAgIH0sICdhY2Nlc3NpbmcgbmF2aWdhdG9yLnNl
cnZpY2VXb3JrZXIgb24gYSBkZXRhY2hlZCBpZnJhbWUnKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377958</attachid>
            <date>2019-09-03 23:31:37 -0700</date>
            <delta_ts>2019-09-05 00:12:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201430-20190904083135.patch</filename>
            <type>text/plain</type>
            <size>52087</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGRmNzIwM2RkMjRhYTJk
ODUzMTg1YzFmN2YwN2ViNmU5MDZiMWFmYy4uMzQ2Mjc2ODViNjc4Mjg4OWNmNGQ3YjBlOGE0OTNj
YTVjMzhiOTJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTA5LTAzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uIHRvIG1ha2UgU1dDbGllbnRDb25uZWN0aW9uIG1vbm8tdGhyZWFk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE0MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNX
Q2xpZW50Q29ubmVjdGlvbiBSZWZDb3VudGVkLgorICAgICAgICBBZGQgYSBXb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24gZGVkaWNhdGVkIHRvIGJlIHVzZWQgYnkgd29ya2VyL3NlcnZpY2Ugd29ya2Vy
IGNvbnRleHRzLgorICAgICAgICBTaW1wbGlmeSBTZXJ2aWNlV29ya2VyQ29udGFpbmVyIGxvZ2lj
IGJhc2VkIG9uIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGlu
ZyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpzd0NsaWVudENv
bm5lY3Rpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29y
ZTo6U1dDbGllbnRDb25uZWN0aW9uOjpmYWlsZWRGZXRjaGluZ1NjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTV0NsaWVudENvbm5lY3Rpb246OnBvc3RUYXNrRm9ySm9iKToKKyAgICAgICAgKiB3
b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFp
blRocmVhZENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6cmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
c2NoZWR1bGVKb2IpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6bm90aWZ5UmVnaXN0cmF0aW9uSXNTZXR0bGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6OmpvYkZpbmlzaGVkTG9hZGluZ1Nj
cmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpub3RpZnlG
YWlsZWRGZXRjaGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjplbnN1cmVTV0NsaWVudENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6c3RvcCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlckZldGNoUmVzdWx0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyRmV0
Y2hSZXN1bHQ6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNl
L1dvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjp+V29ya2VyU1dDbGllbnRD
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
bWF0Y2hSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uOjpnZXRSZWdpc3RyYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xp
ZW50Q29ubmVjdGlvbjo6d2hlblJlZ2lzdHJhdGlvblJlYWR5KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6YWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklu
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6cmVt
b3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5l
Y3Rpb246OnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6bWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3Rl
cmVkRm9yT3JpZ2luIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJT
V0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6
ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJT
V0NsaWVudENvbm5lY3Rpb246OmlzVGhyb3R0bGVhYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNl
cnZlcik6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1dvcmtlclNXQ2xpZW50Q29ubmVjdGlv
bi5oOiBBZGRlZC4KKwogMjAxOS0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJDb3JlXSBSZXNvdXJjZSB1c2FnZSBhY2NvdW50aW5nIHNob3Vs
ZCBhY2NlcHQgbm9uIEtFUk5fU1VDQ0VTUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBkNDA1ODE3OGM5ODdl
MGU4ZjgxM2YyMmQ4ZDE1YzFhNjY5Y2Q1YmRkLi5mZmEzM2Y1ZDk3Y2M1ZGQ3YWRjNWQ5ODQ3MTMw
ODI3NGMxMWQ5MmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjQ4Nyw2ICsyNDg3LDcgQEAgd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcAogd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCiB3b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMuY3BwCiB3b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKK3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENv
bm5lY3Rpb24uY3BwCiAKIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJEZWJ1
Z2dhYmxlLmNwcAogd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckZldGNoLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDBiNmY0NjQ5NjUyNzc0ODJiZDA1MmFiZWQ4MDg0OWNjNTc1M2YyYzkuLjYwNDlhMmIy
MmI4NjA0M2EyZDFmOTc4OTY1MmIyMzA5OGRlZTgxNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTczMTksNiArNzMxOSw4IEBA
CiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJERiAvKiBXcml0YWJsZVN0cmVhbS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gV3JpdGFibGVTdHJlYW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUEwODI5OTIyOTMyRUY0MDA4NDI2RTAgLyogRmVhdHVyZVBvbGljeS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZWF0dXJlUG9saWN5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4MjlCMjI5MzJFRjQwMDg0MjZFMCAvKiBGZWF0dXJl
UG9saWN5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZlYXR1cmVQ
b2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUEwOThCQzIzMUU5MUQx
MDBGNEZGRjAgLyogV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQTA5OEJFMjMxRTkxRDEwMEY0RkZGMCAvKiBXb3Jr
ZXJTV0NsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQxQTFCMDBEMUU1MjY1NkUwMDdGMzc2OSAvKiBMaWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMaWJXZWJSVENQcm92aWRlci5jcHA7IHBh
dGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MUExQjAxQTFFNTQyMzk2MDA3RjM3NjkgLyogSlNET01HdWFyZGVkT2JqZWN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NR3VhcmRlZE9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUExQjAxQjFFNTQyMzk2MDA3RjM3Njkg
LyogSlNET01HdWFyZGVkT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTRE9NR3VhcmRlZE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODkxOSw2ICsxODkyMSw4IEBACiAJCQkJNDZFRjE0MjYxRjk3QjdCQTAwQzJBNTI0IC8q
IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaWRsICovLAogCQkJCTQ2RUNCNjM2MUZEMEEzQkIw
MDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uY3BwICovLAogCQkJCTQ2RUNCNjM3MUZEMEEz
QkIwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24uaCAqLywKKwkJCQk0MUEwOThCQzIzMUU5
MUQxMDBGNEZGRjAgLyogV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcCAqLywKKwkJCQk0MUEw
OThCRTIzMUU5MUQxMDBGNEZGRjAgLyogV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IHNlcnZpY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBhOTcwYTdh
ZGE2NzVhMTZjZjE2ODcwZWMzZWIzYTZjMzRjZWRjMmY2Li45NzA4MzAyYmMwMTExODdhODg0NWI5
ODA1MjZhZmVkNjE1OWM1MzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcApAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9u
LmgiCiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2VyUmVwb3J0
aW5nUHJveHkuaCIKKyNpbmNsdWRlICJXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNs
dWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRBcmd1bWVudHMuaD4KQEAgLTQ3MCw2ICs0NzEs
MTMgQEAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIFdvcmtlckdsb2JhbFNjb3BlOjptZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcigpCiAgICAgcmV0dXJuICptX21lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOwogfQogCitXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24mIFdvcmtlckdsb2JhbFNj
b3BlOjpzd0NsaWVudENvbm5lY3Rpb24oKQoreworICAgIGlmICghbV9zd0NsaWVudENvbm5lY3Rp
b24pCisgICAgICAgIG1fc3dDbGllbnRDb25uZWN0aW9uID0gV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uOjpjcmVhdGUoKnRoaXMpOworICAgIHJldHVybiAqbV9zd0NsaWVudENvbm5lY3Rpb247Cit9
CisKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZUltYWdlQml0bWFwKEltYWdlQml0bWFw
OjpTb3VyY2UmJiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIEltYWdlQml0
bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBJbWFnZUJpdG1hcDo6Y3JlYXRlUHJvbWlz
ZSgqdGhpcywgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3ZlKHByb21p
c2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAppbmRleCAx
YjcxYzExYWNjNGE5MDBkOWJlMjFhNjUxNjYxOTMzNTIzNGM5ZWQwLi40NjkwOTNhNzhlZjQ1YjU2
Y2E3NDk4ZGM3NTZhZTM0OTU1NzAzNDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJHbG9iYWxTY29wZS5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFNjaGVkdWxlZEFjdGlvbjsK
IGNsYXNzIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJMb2NhdGlvbjsK
IGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKK2NsYXNzIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjsK
IGNsYXNzIFdvcmtlclRocmVhZDsKIAogbmFtZXNwYWNlIElEQkNsaWVudCB7CkBAIC03NSw2ICs3
Niw3IEBAIHB1YmxpYzoKIAogICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24mIGNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oKTsKICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgbWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKKyAgICBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24m
IHN3Q2xpZW50Q29ubmVjdGlvbigpOwogCiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2Ny
aXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFyU2NyaXB0KCkg
eyBtX3NjcmlwdCA9IG51bGxwdHI7IH0KQEAgLTIxNCw2ICsyMTYsNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5l
Y3Rpb247CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV91
bmlxdWVJZGVudGlmaWVyIHsgMSB9OworICAgIFJlZlB0cjxXb3JrZXJTV0NsaWVudENvbm5lY3Rp
b24+IG1fc3dDbGllbnRDb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0
aW9uLmNwcAppbmRleCBmZDE3MWE5M2I0YTFkMTRiZTUzMDc5YzRiZTYyM2VmMDQxZmM5NWIxLi44
NjBhODJhYmEyNjZlZmVmYTEyMDNmZmViZjhjNDQ3ZTM4NThkMDM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAt
NDcsOCArNDcsNiBAQCBTV0NsaWVudENvbm5lY3Rpb246On5TV0NsaWVudENvbm5lY3Rpb24oKSA9
IGRlZmF1bHQ7CiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzY2hlZHVsZUpvYihEb2N1bWVu
dE9yV29ya2VySWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGEmIGpvYkRhdGEpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLQogICAg
IGF1dG8gYWRkUmVzdWx0ID0gbV9zY2hlZHVsZWRKb2JTb3VyY2VzLmFkZChqb2JEYXRhLmlkZW50
aWZpZXIoKS5qb2JJZGVudGlmaWVyLCBjb250ZXh0SWRlbnRpZmllcik7CiAgICAgQVNTRVJUX1VO
VVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIApAQCAtNjIsNyArNjAsNyBA
QCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdv
cmtlckpvYklkZW50aWZpZXIgam9iSWRlbgogICAgIGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2
ZXIoeyB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGpvYklkZW50aWZpZXIgfSwgcmVn
aXN0cmF0aW9uS2V5LCB7IH0sIHsgfSwgeyB9LCAgZXJyb3IgfSk7CiB9CiAKLWJvb2wgU1dDbGll
bnRDb25uZWN0aW9uOjpwb3N0VGFza0ZvckpvYihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBq
b2JJZGVudGlmaWVyLCBJc0pvYkNvbXBsZXRlIGlzSm9iQ29tcGxldGUsIFdURjo6RnVuY3Rpb248
dm9pZChTZXJ2aWNlV29ya2VySm9iJik+JiYgdGFzaykKK2Jvb2wgU1dDbGllbnRDb25uZWN0aW9u
Ojpwb3N0VGFza0ZvckpvYihTZXJ2aWNlV29ya2VySm9iSWRlbnRpZmllciBqb2JJZGVudGlmaWVy
LCBJc0pvYkNvbXBsZXRlIGlzSm9iQ29tcGxldGUsIEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtl
ckpvYiYpPiYmIHRhc2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmlu
ZGV4IDI1MTkyNWJlOGFlNmE2NzU0MjFkY2ZlYWY1ODk0YTg0YzNiNDA0NDkuLjRmNmY3YWQyYzZi
YzRmZDdjNTBkM2E5ZThiMTA0MTkzMDFiM2JmMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTMyLDcgKzMyLDcgQEAK
ICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsMjMgKzUzLDIzIEBAIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
RGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiBzdHJ1Y3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGE7CiAKLWNsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTV0NsaWVudENvbm5lY3Rpb24+IHsKK2NsYXNzIFNXQ2xp
ZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNXQ2xpZW50Q29ubmVjdGlvbj4gewog
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNXQ2xpZW50Q29ubmVjdGlvbigp
OwogCi0gICAgdXNpbmcgUmVnaXN0cmF0aW9uQ2FsbGJhY2sgPSBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKKyAg
ICB1c2luZyBSZWdpc3RyYXRpb25DYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpPjsKICAgICB2aXJ0dWFsIHZv
aWQgbWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25z
dCBVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2smJikgPSAwOwogCi0gICAgdXNp
bmcgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4mJik+OworICAgIHVzaW5nIEdl
dFJlZ2lzdHJhdGlvbnNDYWxsYmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKT47CiAgICAgdmlydHVhbCB2b2lkIGdldFJl
Z2lzdHJhdGlvbnMoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNs
aWVudFVSTCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrJiYpID0gMDsKIAotICAgIHVzaW5nIFdo
ZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpPjsKLSAgICB2aXJ0dWFsIHZvaWQgd2hlblJlZ2lzdHJh
dGlvblJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xp
ZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSA9IDA7CisgICAgdXNpbmcg
V2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhJiYpPjsKKyAgICB2aXJ0dWFsIHZvaWQgd2hlblJlZ2lzdHJhdGlv
blJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNs
aWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2smJikgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bklkZW50aWZpZXIpID0gMDsKIAotICAgIHZvaWQgc2NoZWR1bGVKb2IoRG9jdW1lbnRPcldvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CisgICAgV0VCQ09SRV9F
WFBPUlQgdmlydHVhbCB2b2lkIHNjaGVkdWxlSm9iKERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogICAgIHZvaWQgZmFpbGVkRmV0Y2hpbmdT
Y3JpcHQoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25LZXkmLCBjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYpID0gMDsKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgPSAw
OwogCiAgICAgZW51bSBjbGFzcyBJc0pvYkNvbXBsZXRlIHsgTm8sIFllcyB9OwotICAgIGJvb2wg
cG9zdFRhc2tGb3JKb2IoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIElzSm9iQ29tcGxldGUs
IFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VySm9iJik+JiYpOworICAgIGJvb2wgcG9z
dFRhc2tGb3JKb2IoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIElzSm9iQ29tcGxldGUsIEZ1
bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckpvYiYpPiYmKTsKIAogICAgIEhhc2hNYXA8U2Vydmlj
ZVdvcmtlckpvYklkZW50aWZpZXIsIERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyPiBtX3NjaGVk
dWxlZEpvYlNvdXJjZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IDAzYjI3ZmI1ODAzNjkx
NzkxZTRlZDgyNTg3NjQ2OTk5YzZjMWY5NTIuLjk0OWJiZTVlM2VhZjdmOWMzMTVlOTJhMWI4YzYy
MDA0MzkwY2FmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJQcm92
aWRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1Njb3BlLmg+CkBAIC01
OSw2ICs2MCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3N0YXRpYyBpbmxpbmUgU1dD
bGllbnRDb25uZWN0aW9uJiBtYWluVGhyZWFkQ29ubmVjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpCit7CisgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCku
c2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKHNlc3Npb25JRCk7Cit9CisKIFdURl9N
QUtFX0lTT19BTExPQ0FURURfSU1QTChTZXJ2aWNlV29ya2VyQ29udGFpbmVyKTsKIAogU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6U2VydmljZVdvcmtlckNvbnRhaW5lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBOYXZpZ2F0b3JCYXNlJiBuYXZpZ2F0b3IpCkBAIC05NSwyNCArMTAx
LDE2IEBAIGF1dG8gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cmVhZHkoKSAtPiBSZWFkeVByb21p
c2UmCiAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZSkgewogICAgICAgICBtX3JlYWR5UHJvbWlzZSA9
IG1ha2VVbmlxdWU8UmVhZHlQcm9taXNlPigpOwogCi0gICAgICAgIGlmIChtX2lzU3RvcHBlZCB8
fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpCisgICAg
ICAgIGlmIChtX2lzU3RvcHBlZCkKICAgICAgICAgICAgIHJldHVybiAqbV9yZWFkeVByb21pc2U7
CiAKICAgICAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0g
ICAgICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigp
OwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb25uZWN0aW9uID0gbWFrZVJlZihlbnN1cmVT
V0NsaWVudENvbm5lY3Rpb24oKSksIHRvcE9yaWdpbiA9IGNvbnRleHQudG9wT3JpZ2luKCkuaXNv
bGF0ZWRDb3B5KCksIGNsaWVudFVSTCA9IGNvbnRleHQudXJsKCkuaXNvbGF0ZWRDb3B5KCksIGNv
bnRleHRJZGVudGlmaWVyXSgpIG11dGFibGUgewotICAgICAgICAgICAgY29ubmVjdGlvbi0+d2hl
blJlZ2lzdHJhdGlvblJlYWR5KHRvcE9yaWdpbiwgY2xpZW50VVJMLCBbY29udGV4dElkZW50aWZp
ZXJdKGF1dG8mJiByZWdpc3RyYXRpb25EYXRhKSB7Ci0gICAgICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRlbnRpZmllciwgW3JlZ2lzdHJhdGlv
bkRhdGEgPSBjcm9zc1RocmVhZENvcHkocmVnaXN0cmF0aW9uRGF0YSldKGF1dG8mIGNvbnRleHQp
IG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBhdXRvKiBzZXJ2aWNlV29ya2VyQ29udGFp
bmVyID0gY29udGV4dC5zZXJ2aWNlV29ya2VyQ29udGFpbmVyKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghc2VydmljZVdvcmtlckNvbnRhaW5lcikKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNlcnZpY2VXb3JrZXJDb250YWluZXIt
Pm1faXNTdG9wcGVkIHx8ICFjb250ZXh0LnNlc3Npb25JRCgpLmlzVmFsaWQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgICAgICBhdXRvIHJlZ2lz
dHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKGNvbnRleHQs
ICpzZXJ2aWNlV29ya2VyQ29udGFpbmVyLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKTsKLSAg
ICAgICAgICAgICAgICAgICAgc2VydmljZVdvcmtlckNvbnRhaW5lci0+bV9yZWFkeVByb21pc2Ut
PnJlc29sdmUoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgIH0pOworICAgICAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS53aGVuUmVn
aXN0cmF0aW9uUmVhZHkoY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCksIGNvbnRleHQudXJsKCks
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiByZWdpc3RyYXRp
b25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmIChtX2lzU3RvcHBlZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkpOworICAgICAgICAgICAgbV9yZWFk
eVByb21pc2UtPnJlc29sdmUoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKICAgICAgICAgfSk7CiAg
ICAgfQogICAgIHJldHVybiAqbV9yZWFkeVByb21pc2U7CkBAIC0yNTQsNjcgKzI1MiwzMyBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxlSm9iKHN0ZDo6dW5pcXVlX3B0cjxT
ZXJ2aWNlV29ya2VySm9iPiYmIGpvYgogICAgIEFTU0VSVCghbV9qb2JNYXAuY29udGFpbnMoam9i
SWRlbnRpZmllcikpOwogICAgIG1fam9iTWFwLmFkZChqb2JJZGVudGlmaWVyLCBPbmdvaW5nSm9i
IHsgV1RGTW92ZShqb2IpLCBtYWtlUGVuZGluZ0FjdGl2aXR5KCp0aGlzKSB9KTsKIAotICAgIGNh
bGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgY29udGV4dElkZW50
aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpLCBqb2JEYXRhID0gam9iRGF0YS5pc29s
YXRlZENvcHkoKV0gewotICAgICAgICBjb25uZWN0aW9uLT5zY2hlZHVsZUpvYihjb250ZXh0SWRl
bnRpZmllciwgam9iRGF0YSk7Ci0gICAgfSk7CisgICAgbV9zd0Nvbm5lY3Rpb24tPnNjaGVkdWxl
Sm9iKGNvbnRleHRJZGVudGlmaWVyKCksIGpvYkRhdGEpOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTdHJpbmcmIGNsaWVudFVSTCwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIGF1dG8qIGNvbnRleHQgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKG1faXNTdG9wcGVkIHx8ICFjb250ZXh0LT5z
ZXNzaW9uSUQoKS5pc1ZhbGlkKCkpIHsKKyAgICBpZiAobV9pc1N0b3BwZWQpIHsKICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0pOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgVVJMIHBhcnNlZFVSTCA9IGNvbnRleHQtPmNvbXBsZXRl
VVJMKGNsaWVudFVSTCk7Ci0gICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwocGFy
c2VkVVJMLCBjb250ZXh0LT51cmwoKSkpIHsKKyAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBVUkwgcGFyc2VkVVJMID0gY29udGV4dC5jb21wbGV0ZVVS
TChjbGllbnRVUkwpOworICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKHBhcnNl
ZFVSTCwgY29udGV4dC51cmwoKSkpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlv
biB7IFNlY3VyaXR5RXJyb3IsICJPcmlnaW4gb2YgY2xpZW50VVJMIGlzIG5vdCBjbGllbnQncyBv
cmlnaW4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBwZW5k
aW5nUHJvbWlzZUlkZW50aWZpZXIgPSArK21fbGFzdFBlbmRpbmdQcm9taXNlSWRlbnRpZmllcjsK
LSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RG
TW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOwotICAgIG1fcGVuZGlu
Z1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1By
b21pc2UpKTsKLQotICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRl
bnRpZmllcigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKGVu
c3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpKSwgdG9wT3JpZ2luID0gY29udGV4dC0+dG9wT3JpZ2lu
KCkuZGF0YSgpLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRVUkwgPSBwYXJzZWRVUkwuaXNvbGF0ZWRD
b3B5KCksIGNvbnRleHRJZGVudGlmaWVyLCBwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXJdKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGNvbm5lY3Rpb24tPm1hdGNoUmVnaXN0cmF0aW9uKFdURk1vdmUodG9w
T3JpZ2luKSwgcGFyc2VkVVJMLCBbY29udGV4dElkZW50aWZpZXIsIHBlbmRpbmdQcm9taXNlSWRl
bnRpZmllcl0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewotICAgICAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRlbnRpZmllciwgW3BlbmRpbmdQcm9t
aXNlSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRDb3B5KHJlc3VsdCldKGF1dG8mIGNv
bnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJDb250
YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIXNlcnZpY2VXb3JrZXJDb250YWluZXIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtlckNvbnRhaW5lci0+bV9pc1N0b3Bw
ZWQgfHwgIWNvbnRleHQuc2Vzc2lvbklEKCkuaXNWYWxpZCgpKQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBzZXJ2aWNlV29ya2VyQ29udGFpbmVyLT5kaWRG
aW5pc2hHZXRSZWdpc3RyYXRpb25SZXF1ZXN0KHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgV1RG
TW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0K
LQotdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkaWRGaW5pc2hHZXRSZWdpc3RyYXRpb25S
ZXF1ZXN0KHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgT3B0aW9uYWw8U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYgcmVzdWx0KQotewotI2lmbmRlZiBOREVCVUcKLSAg
ICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwot
I2VuZGlmCi0KLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbV9wZW5kaW5nUHJvbWlzZXMudGFr
ZShwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIpOwotICAgIGlmICghcGVuZGluZ1Byb21pc2UpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgcGVuZGluZ1Byb21p
c2UtPnByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgIHBlbmRp
bmdQcm9taXNlLT5wcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkubWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlP
cmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRhKCkgfSwgcGFyc2VkVVJMLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChtX2lzU3RvcHBlZCkK
KyAgICAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVnaXN0cmF0aW9uID0gU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwg
KnRoaXMsIFdURk1vdmUocmVzdWx0LnZhbHVlKCkpKTsKLSAgICBwZW5kaW5nUHJvbWlzZS0+cHJv
bWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4+KFdU
Rk1vdmUocmVnaXN0cmF0aW9uKSk7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAg
ICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbj4+KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3ZlKHJlc3VsdC52YWx1ZSgpKSkpOworICAgIH0p
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnVwZGF0ZVJlZ2lzdHJhdGlvblN0
YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwgY29uc3QgT3B0aW9uYWw8U2VydmljZVdv
cmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKQEAgLTMzMiw1MyArMjk2LDIxIEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkCiAKIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVn
aXN0cmF0aW9ucyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgYXV0byog
Y29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICBpZiAobV9pc1N0b3BwZWQg
fHwgIWNvbnRleHQtPnNlc3Npb25JRCgpLmlzVmFsaWQoKSkgeworICAgIGlmIChtX2lzU3RvcHBl
ZCkgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBwZW5kaW5nUHJv
bWlzZUlkZW50aWZpZXIgPSArK21fbGFzdFBlbmRpbmdQcm9taXNlSWRlbnRpZmllcjsKLSAgICBh
dXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShw
cm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykpOwotICAgIG1fcGVuZGluZ1Byb21p
c2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2Up
KTsKLQotICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmll
cigpOwotICAgIGF1dG8gY29udGV4dFVSTCA9IGNvbnRleHQtPnVybCgpOwotICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigp
KSwgdG9wT3JpZ2luID0gY29udGV4dC0+dG9wT3JpZ2luKCkuZGF0YSgpLmlzb2xhdGVkQ29weSgp
LCBjb250ZXh0VVJMID0gY29udGV4dFVSTC5pc29sYXRlZENvcHkoKSwgY29udGV4dElkZW50aWZp
ZXIsIHBlbmRpbmdQcm9taXNlSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKLSAgICAgICAgY29ubmVj
dGlvbi0+Z2V0UmVnaXN0cmF0aW9ucyhXVEZNb3ZlKHRvcE9yaWdpbiksIGNvbnRleHRVUkwsIFtj
b250ZXh0SWRlbnRpZmllciwgcGVuZGluZ1Byb21pc2VJZGVudGlmaWVyXSAoYXV0byYmIHJlZ2lz
dHJhdGlvbkRhdGFzKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ6OnBvc3RUYXNrVG8oY29udGV4dElkZW50aWZpZXIsIFtwZW5kaW5nUHJvbWlzZUlkZW50aWZp
ZXIsIHJlZ2lzdHJhdGlvbkRhdGFzID0gY3Jvc3NUaHJlYWRDb3B5KHJlZ2lzdHJhdGlvbkRhdGFz
KV0oYXV0byYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgYXV0byogc2Vydmlj
ZVdvcmtlckNvbnRhaW5lciA9IGNvbnRleHQuc2VydmljZVdvcmtlckNvbnRhaW5lcigpOwotICAg
ICAgICAgICAgICAgIGlmICghc2VydmljZVdvcmtlckNvbnRhaW5lcikKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlV29ya2VyQ29udGFpbmVy
LT5tX2lzU3RvcHBlZCB8fCAhY29udGV4dC5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJDb250
YWluZXItPmRpZEZpbmlzaEdldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0KHBlbmRpbmdQcm9taXNlSWRl
bnRpZmllciwgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhcykpOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmRp
ZEZpbmlzaEdldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0KHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRl
bnRpZmllciwgVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmIHJlZ2lzdHJh
dGlvbkRhdGFzKQotewotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVh
ZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCi0KLSAgICBhdXRvIHBlbmRp
bmdQcm9taXNlID0gbV9wZW5kaW5nUHJvbWlzZXMudGFrZShwZW5kaW5nUHJvbWlzZUlkZW50aWZp
ZXIpOwotICAgIGlmICghcGVuZGluZ1Byb21pc2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKS5p
c1ZhbGlkKCkpIHsKLSAgICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21pc2UtPnJlamVjdChFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAg
ICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBlbnN1cmVT
V0NsaWVudENvbm5lY3Rpb24oKS5nZXRSZWdpc3RyYXRpb25zKFNlY3VyaXR5T3JpZ2luRGF0YSB7
IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGNvbnRleHQudXJsKCksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAo
YXV0byYmIHJlZ2lzdHJhdGlvbkRhdGFzKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKG1faXNTdG9w
cGVkKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZWdpc3RyYXRpb25zID0gV1RG
OjptYXAoV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhcyksIFsmXSAoYXV0byYmIHJlZ2lzdHJhdGlv
bkRhdGEpIHsKLSAgICAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9y
Q3JlYXRlKCp0aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3ZlKHJl
Z2lzdHJhdGlvbkRhdGEpKTsKKyAgICAgICAgYXV0byByZWdpc3RyYXRpb25zID0gV1RGOjptYXAo
V1RGTW92ZShyZWdpc3RyYXRpb25EYXRhcyksIFsmXShhdXRvJiYgcmVnaXN0cmF0aW9uRGF0YSkg
eworICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmdldE9yQ3Jl
YXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlv
bkRhdGEpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMU2VxdWVu
Y2U8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+Pj4oV1RGTW92ZShyZWdp
c3RyYXRpb25zKSk7CiAgICAgfSk7Ci0KLSAgICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS0+cmVz
b2x2ZTxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4+
PihXVEZNb3ZlKHJlZ2lzdHJhdGlvbnMpKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpzdGFydE1lc3NhZ2VzKCkKQEAgLTQ4Nyw4ICs0MTksOCBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OnBvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2Fn
ZSwgU2VydgogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6Om5vdGlmeVJlZ2lzdHJhdGlv
bklzU2V0dGxlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXkpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbY29ubmVjdGlvbiA9IG1fc3dDb25uZWN0
aW9uLCByZWdpc3RyYXRpb25LZXkgPSByZWdpc3RyYXRpb25LZXkuaXNvbGF0ZWRDb3B5KCldIHsK
LSAgICAgICAgY29ubmVjdGlvbi0+ZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UocmVnaXN0
cmF0aW9uS2V5KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLCByZWdpc3RyYXRpb25LZXkgPSByZWdpc3RyYXRp
b25LZXkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24oc2Vz
c2lvbklEKS5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShyZWdpc3RyYXRpb25LZXkpOwog
ICAgIH0pOwogfQogCkBAIC01NDQsOCArNDc2LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYiYgam9iLCBjb24K
IAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExPV0VEKCJqb2JGaW5pc2hlZExvYWRp
bmdTY3JpcHQ6IFN1Y2Nlc3NmdWx5IGZpbmlzaGVkIGZldGNoaW5nIHNjcmlwdCBmb3Igam9iICUi
IFBSSXU2NCwgam9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKIAotICAgIGNhbGxPbk1haW5U
aHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iRGF0YUlkZW50aWZpZXIgPSBq
b2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9uS2V5ID0gam9iLmRhdGEoKS5yZWdp
c3RyYXRpb25LZXkoKS5pc29sYXRlZENvcHkoKSwgc2NyaXB0ID0gc2NyaXB0Lmlzb2xhdGVkQ29w
eSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0
ZWRDb3B5KCksIHJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQb2xpY3kuaXNvbGF0ZWRDb3B5KCld
IHsKLSAgICAgICAgY29ubmVjdGlvbi0+ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpv
YkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIHNjcmlwdCwgY29udGVudFNlY3VyaXR5
UG9saWN5LCByZWZlcnJlclBvbGljeSwgeyB9IH0pOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nl
c3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCksIGpvYkRhdGFJ
ZGVudGlmaWVyID0gam9iLmRhdGEoKS5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpv
Yi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCkuaXNvbGF0ZWRDb3B5KCksIHNjcmlwdCA9IHNjcmlw
dC5pc29sYXRlZENvcHkoKSwgY29udGVudFNlY3VyaXR5UG9saWN5ID0gY29udGVudFNlY3VyaXR5
UG9saWN5Lmlzb2xhdGVkQ29weSgpLCByZWZlcnJlclBvbGljeSA9IHJlZmVycmVyUG9saWN5Lmlz
b2xhdGVkQ29weSgpXSB7CisgICAgICAgIG1haW5UaHJlYWRDb25uZWN0aW9uKHNlc3Npb25JRCku
ZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3Ry
YXRpb25LZXksIHNjcmlwdCwgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwg
eyB9IH0pOwogICAgIH0pOwogfQogCkBAIC01NjcsOCArNDk5LDggQEAgdm9pZCBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImIGpv
YiwgY29uc3QKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpub3RpZnlGYWlsZWRGZXRj
aGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlv
biwgam9iSWRlbnRpZmllciA9IGpvYi5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpv
Yi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCkuaXNvbGF0ZWRDb3B5KCksIGVycm9yID0gZXJyb3Iu
aXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgY29ubmVjdGlvbi0+ZmFpbGVkRmV0Y2hpbmdTY3Jp
cHQoam9iSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCBlcnJvcik7CisgICAgY2FsbE9uTWFp
blRocmVhZChbc2Vzc2lvbklEID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQo
KSwgam9iSWRlbnRpZmllciA9IGpvYi5pZGVudGlmaWVyKCksIHJlZ2lzdHJhdGlvbktleSA9IGpv
Yi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCkuaXNvbGF0ZWRDb3B5KCksIGVycm9yID0gZXJyb3Iu
aXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbWFpblRocmVhZENvbm5lY3Rpb24oc2Vzc2lvbklE
KS5mYWlsZWRGZXRjaGluZ1NjcmlwdChqb2JJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIGVy
cm9yKTsKICAgICB9KTsKIH0KIApAQCAtNjA3LDEwICs1MzksMTEgQEAgU1dDbGllbnRDb25uZWN0
aW9uJiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjplbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKQog
ICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLmlzVmFsaWQoKSk7CiAgICAgaWYgKCFtX3N3
Q29ubmVjdGlvbikgewotICAgICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsK
LSAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoW3RoaXMsIHNlc3Npb25JRCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCldKCkgewotICAgICAgICAgICAgbV9zd0Nv
bm5lY3Rpb24gPSAmU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29y
a2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKLSAgICAgICAgfSk7CisgICAgICAg
IGF1dG8mIGNvbnRleHQgPSAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBpZiAo
aXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAgICAgICAgICAgbV9zd0Nvbm5lY3Rp
b24gPSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnN3Q2xpZW50Q29ubmVj
dGlvbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3N3Q29ubmVjdGlvbiA9ICZtYWlu
VGhyZWFkQ29ubmVjdGlvbihjb250ZXh0LnNlc3Npb25JRCgpKTsKICAgICB9CiAgICAgcmV0dXJu
ICptX3N3Q29ubmVjdGlvbjsKIH0KQEAgLTY1MSw3ICs1ODQsNiBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJDb250YWluZXI6OnN0b3AoKQogewogICAgIG1faXNTdG9wcGVkID0gdHJ1ZTsKICAgICByZW1v
dmVBbGxFdmVudExpc3RlbmVycygpOwotICAgIG1fcGVuZGluZ1Byb21pc2VzLmNsZWFyKCk7CiAg
ICAgbV9yZWFkeVByb21pc2UgPSBudWxscHRyOwogICAgIG1fbWVzc2FnZVF1ZXVlLmNsb3NlKCk7
CiAgICAgYXV0byBqb2JNYXAgPSBXVEZNb3ZlKG1fam9iTWFwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5oCmluZGV4
IGRiMjdmNDM3OGE1YjZmZDBiM2M0ZGQ3N2FiYTFjNzAwMDhmNmZhNWMuLmVjNTYzYTBhYjhmYWU3
N2ZkZjM2YTdkYTk2ZmYyNDEyZmRmYjBhYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuaApAQCAtMTA1LDkgKzEw
NSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2
aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgIHZvaWQgZGVzdHJveUpv
YihTZXJ2aWNlV29ya2VySm9iJik7CiAKLSAgICB2b2lkIGRpZEZpbmlzaEdldFJlZ2lzdHJhdGlv
blJlcXVlc3QodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIE9wdGlvbmFsPFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhPiYmKTsKLSAgICB2b2lkIGRpZEZpbmlzaEdldFJlZ2lzdHJhdGlv
bnNSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGE+JiYpOwotCiAgICAgRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIg
Y29udGV4dElkZW50aWZpZXIoKSBmaW5hbDsKIAogICAgIFNXQ2xpZW50Q29ubmVjdGlvbiYgZW5z
dXJlU1dDbGllbnRDb25uZWN0aW9uKCk7CkBAIC0xNDUsMjAgKzE0Miw2IEBAIHByaXZhdGU6CiAg
ICAgUmVmPFRocmVhZD4gbV9jcmVhdGlvblRocmVhZCB7IFRocmVhZDo6Y3VycmVudCgpIH07CiAj
ZW5kaWYKIAotICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlzZSB7Ci0gICAgICAgIFdURl9NQUtFX1NU
UlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgUGVuZGluZ1Byb21pc2UoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBSZWY8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDb250
YWluZXI+PiYmIHBlbmRpbmdBY3Rpdml0eSkKLSAgICAgICAgICAgIDogcHJvbWlzZShXVEZNb3Zl
KHByb21pc2UpKQotICAgICAgICAgICAgLCBwZW5kaW5nQWN0aXZpdHkoV1RGTW92ZShwZW5kaW5n
QWN0aXZpdHkpKQotICAgICAgICB7IH0KLQotICAgICAgICBSZWY8RGVmZXJyZWRQcm9taXNlPiBw
cm9taXNlOwotICAgICAgICBSZWY8UGVuZGluZ0FjdGl2aXR5PFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI+PiBwZW5kaW5nQWN0aXZpdHk7Ci0gICAgfTsKLQotICAgIHVpbnQ2NF90IG1fbGFzdFBlbmRp
bmdQcm9taXNlSWRlbnRpZmllciB7IDAgfTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnVu
aXF1ZV9wdHI8UGVuZGluZ1Byb21pc2U+PiBtX3BlbmRpbmdQcm9taXNlczsKLQogICAgIHVpbnQ2
NF90IG1fbGFzdE9uZ29pbmdTZXR0bGVkUmVnaXN0cmF0aW9uSWRlbnRpZmllciB7IDAgfTsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBtX29uZ29p
bmdTZXR0bGVkUmVnaXN0cmF0aW9uczsKICAgICBHZW5lcmljRXZlbnRRdWV1ZSBtX21lc3NhZ2VR
dWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyRmV0Y2hSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQuaAppbmRleCBlYzlmZmVlMTdjNjIwN2NhMDIxM2UzN2ZjMGFi
ZmFjY2JjYTBkMDY2Li4yMTNiZGZiYWE2NjFkNzlmNzJhYzFkMTE0MzFmY2JjMGUwYzQ4ZTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckZl
dGNoUmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJGZXRjaFJlc3VsdC5oCkBAIC00Miw2ICs0Miw4IEBAIHN0cnVjdCBTZXJ2aWNlV29ya2Vy
RmV0Y2hSZXN1bHQgewogICAgIFN0cmluZyByZWZlcnJlclBvbGljeTsKICAgICBSZXNvdXJjZUVy
cm9yIHNjcmlwdEVycm9yOwogCisgICAgU2VydmljZVdvcmtlckZldGNoUmVzdWx0IGlzb2xhdGVk
Q29weSgpIGNvbnN0IHsgcmV0dXJuIHsgam9iRGF0YUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbktl
eS5pc29sYXRlZENvcHkoKSwgc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBjb250ZW50U2VjdXJpdHlQ
b2xpY3kuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpLCBzY3Jp
cHRFcnJvci5pc29sYXRlZENvcHkoKSB9OyB9CisKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
PiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQm
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9X
b3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiNWM4ZTI3Yzg4MDM2NTMw
OTg4ZDU0YTY2M2VjNGNkNzdjYTk0YWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMCwwICsx
LDIxMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJTV0NsaWVudENvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKwor
I2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNo
UmVzdWx0LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIKKyNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uLmgiCisjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJU
aHJlYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXb3JrZXJTV0NsaWVudENvbm5lY3Rp
b246OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbihXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCisg
ICAgOiBtX3Nlc3Npb25JRChzY29wZS5zZXNzaW9uSUQoKSkKKyAgICAsIG1fdGhyZWFkKHNjb3Bl
LnRocmVhZCgpKQoreworfQorCitXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246On5Xb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb24oKQoreworICAgIGF1dG8gbWF0Y2hSZWdpc3RyYXRpb25zID0gV1RGTW92
ZShtX21hdGNoUmVnaXN0cmF0aW9uUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sg
OiBtYXRjaFJlZ2lzdHJhdGlvbnMudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisK
KyAgICBhdXRvIGdldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0cyA9IFdURk1vdmUobV9nZXRSZWdpc3Ry
YXRpb25zUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBnZXRSZWdpc3RyYXRp
b25zUmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKHsgfSk7CisKKyAgICBhdXRv
IHdoZW5SZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzID0gV1RGTW92ZShtX3doZW5SZWdpc3RyYXRp
b25SZWFkeVJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogd2hlblJlZ2lzdHJh
dGlvblJlYWR5UmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKHsgfSk7Cit9CisK
K3ZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjptYXRjaFJlZ2lzdHJhdGlvbihTZWN1cml0
eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBSZWdpc3RyYXRp
b25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
ID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBtX21hdGNoUmVnaXN0cmF0aW9uUmVx
dWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgdGhyZWFkID0gbV90aHJl
YWQuY29weVJlZigpLCByZXF1ZXN0SWRlbnRpZmllciwgdG9wT3JpZ2luID0gY3Jvc3NUaHJlYWRD
b3B5KFdURk1vdmUodG9wT3JpZ2luKSksIGNsaWVudFVSTCA9IGNyb3NzVGhyZWFkQ29weShjbGll
bnRVUkwpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdv
cmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Np
b24oc2Vzc2lvbklEKTsKKyAgICAgICAgY29ubmVjdGlvbi5tYXRjaFJlZ2lzdHJhdGlvbihXVEZN
b3ZlKHRvcE9yaWdpbiksIGNsaWVudFVSTCwgW3RocmVhZCA9IFdURk1vdmUodGhyZWFkKSwgcmVx
dWVzdElkZW50aWZpZXJdKGF1dG8mJiByZXN1bHQpIG11dGFibGUgeworICAgICAgICAgICAgdGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAg
ICAgIGF1dG8gY2FsbGJhY2sgPSBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLnN3
Q2xpZW50Q29ubmVjdGlvbigpLm1fbWF0Y2hSZWdpc3RyYXRpb25SZXF1ZXN0cy50YWtlKHJlcXVl
c3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlc3VsdCkp
OworICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAg
IH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6Z2V0UmVn
aXN0cmF0aW9ucyhTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xp
ZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2smJiBjYWxsYmFjaykKK3sKKyAgICB1aW50
NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVxdWVzdElkZW50aWZpZXI7CisgICAg
bV9nZXRSZWdpc3RyYXRpb25zUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Np
b25JRCwgdGhyZWFkID0gbV90aHJlYWQuY29weVJlZigpLCByZXF1ZXN0SWRlbnRpZmllciwgdG9w
T3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodG9wT3JpZ2luKSksIGNsaWVudFVSTCA9
IGNyb3NzVGhyZWFkQ29weShjbGllbnRVUkwpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBj
b25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29y
a2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAgY29ubmVjdGlvbi5n
ZXRSZWdpc3RyYXRpb25zKFdURk1vdmUodG9wT3JpZ2luKSwgY2xpZW50VVJMLCBbdGhyZWFkID0g
V1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIGRhdGEpIG11dGFibGUg
eworICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1ZXN0
SWRlbnRpZmllciwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShXVEZNb3ZlKGRhdGEpKV0gKGF1dG8m
IHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX2dldFJl
Z2lzdHJhdGlvbnNSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAg
ICAgICBjYWxsYmFjayhXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxv
b3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3Jr
ZXJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFdoZW5SZWdpc3Ry
YXRpb25SZWFkeUNhbGxiYWNrJiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgcmVxdWVzdElk
ZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVyOworICAgIG1fd2hlblJlZ2lzdHJh
dGlvblJlYWR5UmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNr
KSk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgdGhy
ZWFkID0gbV90aHJlYWQuY29weVJlZigpLCByZXF1ZXN0SWRlbnRpZmllciwgdG9wT3JpZ2luID0g
dG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjbGllbnRVUkwgPSBjcm9zc1RocmVhZENvcHkoY2xp
ZW50VVJMKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNz
aW9uKHNlc3Npb25JRCk7CisgICAgICAgIGNvbm5lY3Rpb24ud2hlblJlZ2lzdHJhdGlvblJlYWR5
KHRvcE9yaWdpbiwgY2xpZW50VVJMLCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0
SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICB0aHJlYWQt
PnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJZGVudGlmaWVyLCByZXN1bHQgPSBj
cm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX3doZW5SZWdpc3RyYXRpb25SZWFkeVJl
cXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNr
KFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0
TW9kZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyU1dDbGllbnRD
b25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgaWRlbnRpZmllcl0oKSBtdXRhYmxlIHsK
KyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xl
dG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKHNlc3Npb25JRCk7CisgICAg
ICAgIGNvbm5lY3Rpb24uYWRkU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKGlkZW50
aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6cmVt
b3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVyKFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vz
c2lvbklEID0gbV9zZXNzaW9uSUQsIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIGF1
dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICBjb25uZWN0
aW9uLnJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihpZGVudGlmaWVyKTsK
KyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OmRpZFJlc29sdmVS
ZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtl
eSkKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwga2V5
ID0gY3Jvc3NUaHJlYWRDb3B5KGtleSldKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8mIGNvbm5l
Y3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJD
b25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICBjb25uZWN0aW9uLmRpZFJl
c29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGtleSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBwb3J0
cywgY29uc3QgU2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRpZmllciYgc291cmNlKQoreworICAg
IGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24g
PSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0
aW9uRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgICAgIGNvbm5lY3Rpb24ucG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXIoZGVzdGluYXRpb24sIFdURk1vdmUocG9ydHMpLCBzb3VyY2UpOwor
ICAgIH0pOworfQorCitTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIFdvcmtlclNXQ2xpZW50
Q29ubmVjdGlvbjo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIoKSBjb25zdAoreworICAgIFNX
U2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBjYWxsT25NYWluVGhy
ZWFkQW5kV2FpdChbJl0geworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtl
clByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24o
bV9zZXNzaW9uSUQpOworICAgICAgICBpZGVudGlmaWVyID0gY29ubmVjdGlvbi5zZXJ2ZXJDb25u
ZWN0aW9uSWRlbnRpZmllcigpOworICAgIH0pOworICAgIHJldHVybiBpZGVudGlmaWVyOworfQor
Citib29sIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6bWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdp
c3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0Cit7CisgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklEID0g
bV9zZXNzaW9uSUQsIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8mIGNvbm5l
Y3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJD
b25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpOworICAgICAgICBjb25uZWN0aW9uLnN5bmNU
ZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllcik7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJp
dHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmIGRhdGEs
IGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYgaWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit7CisgICAgY2FsbE9uTWFpblRocmVh
ZChbc2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIHRvcE9yaWdpbiA9IHRvcE9yaWdpbi5pc29sYXRl
ZENvcHkoKSwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShkYXRhKSwgaWRlbnRpZmllciwgdXNlckFn
ZW50ID0gY3Jvc3NUaHJlYWRDb3B5KHVzZXJBZ2VudCldIHsKKyAgICAgICAgYXV0byYgY29ubmVj
dGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNv
bm5lY3Rpb25Gb3JTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgICAgIGNvbm5lY3Rpb24ucmVnaXN0
ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHRvcE9yaWdpbiwgZGF0YSwgaWRlbnRpZmllciwgdXNlckFn
ZW50KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnVucmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRlbnRpZmllcikKK3sKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OmZp
bmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0
JiByZXN1bHQpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklEID0gbV9zZXNzaW9u
SUQsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQpXSgpIG11dGFibGUgeworICAgICAg
ICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5z
ZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAgY29u
bmVjdGlvbi5maW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKHJlc3VsdCk7CisgICAgfSk7Cit9
CisKK2Jvb2wgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjppc1Rocm90dGxlYWJsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9u
Ojp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKK3sKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5l
Y3Rpb246OnNjaGVkdWxlSm9iKERvY3VtZW50T3JXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBkYXRhKQoreworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBpZGVudGlmaWVyLCBkYXRhID0gY3Jvc3NUaHJl
YWRDb3B5KGRhdGEpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2Vy
dmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZv
clNlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAgY29ubmVjdGlvbi5zY2hlZHVsZUpvYihpZGVu
dGlmaWVyLCBkYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rp
b246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKQorewor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYzU3ZjRmYTljMzY4Y2JhNzJhZWUwN2IzZGViMWNlMDE2OTRjNDYzMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENv
bm5lY3Rpb24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJTV0NsaWVudENvbm5lY3Rp
b24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsK
K2NsYXNzIFdvcmtlclRocmVhZDsKKworY2xhc3MgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uIGZp
bmFsIDogcHVibGljIFNXQ2xpZW50Q29ubmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJl
ZjxXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24+IGNyZWF0ZShXb3JrZXJHbG9iYWxTY29wZSYgc2Nv
cGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uIHsgc2Nv
cGUgfSk7IH0KKyAgICB+V29ya2VyU1dDbGllbnRDb25uZWN0aW9uKCk7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uKFdvcmtlckdsb2JhbFNjb3BlJik7
CisKKyAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKFNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9y
aWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYpIGZpbmFs
OworICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmln
aW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2smJikgZmlu
YWw7CisgICAgdm9pZCB3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVh
ZHlDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgZmluYWw7Cisg
ICAgdm9pZCByZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZGlkUmVzb2x2ZVJl
Z2lzdHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGZp
bmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgZGVzdGluYXRpb24sIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFNl
cnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJjZSkgZmluYWw7CisgICAgU1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpIGNvbnN0
IGZpbmFsOworICAgIGJvb2wgbWF5SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2lu
KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc3luY1Rl
cm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCBy
ZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdp
biwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBjb25zdCBPcHRpb25hbDxTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkg
ZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChEb2N1bWVudElk
ZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihj
b25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5hbDsKKyAgICBib29sIGlzVGhyb3R0
bGVhYmxlKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCkgZmlu
YWw7CisgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJikgZmluYWw7CisgICAgdm9pZCBzY2hlZHVsZUpvYihEb2N1bWVudE9yV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKSBmaW5hbDsKKworICAgIFBBTDo6U2Vz
c2lvbklEIG1fc2Vzc2lvbklEOworICAgIFJlZjxXb3JrZXJUaHJlYWQ+IG1fdGhyZWFkOworCisg
ICAgdWludDY0X3QgbV9sYXN0UmVxdWVzdElkZW50aWZpZXIgeyAwIH07CisgICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2s+IG1fbWF0Y2hSZWdpc3RyYXRpb25SZXF1ZXN0
czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2s+IG1fZ2V0
UmVnaXN0cmF0aW9uc1JlcXVlc3RzOworICAgIEhhc2hNYXA8dWludDY0X3QsIFdoZW5SZWdpc3Ry
YXRpb25SZWFkeUNhbGxiYWNrPiBtX3doZW5SZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
bGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggMzMyNzkzMzk1ZTBkOGM1NzFmZWEyODgxZjdi
NzFmYTY2NWQwYWU5NC4uZGQ4MmJiMWEwYTE1YmI4MDk5MWNlZDVhYzczZWQ0NzI3MzlhMmI1NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0xOTEsMTEgKzE5MSwxMSBAQCB2b2lkIFdlYlNXQ2xp
ZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBvcnQoV1RGOjpGdW5jdGlvbjx2b2lk
KCk+JiYgdGFzawogICAgIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKTsKIH0KIAotdm9p
ZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBTZWN1
cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJh
dGlvblJlYWR5Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9u
Ojp3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmln
aW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYm
IGNhbGxiYWNrKQogewogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSArK21fcHJldmlvdXNDYWxs
YmFja0lkZW50aWZpZXI7CiAgICAgbV9vbmdvaW5nUmVnaXN0cmF0aW9uUmVhZHlUYXNrcy5hZGQo
Y2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAgIGVuc3VyZUNvbm5lY3Rpb25BbmRT
ZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OldoZW5SZWdpc3RyYXRpb25SZWFk
eShjYWxsYmFja0lELCB0b3BPcmlnaW4uZGF0YSgpLCBjbGllbnRVUkwpKTsKKyAgICBlbnN1cmVD
b25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpXaGVuUmVn
aXN0cmF0aW9uUmVhZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2luLCBjbGllbnRVUkwpKTsKIH0KIAog
dm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJhdGlvblJlYWR5KHVpbnQ2NF90IGNh
bGxiYWNrSUQsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYgcmVnaXN0
cmF0aW9uRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNmRlYmQ4YWZmMTcwZDU0OGNhMGI0ODM3
MzI3MWM0ZWZiNDc3MWVjMS4uM2FmNDk1ZGNhOTQ0ZGVkYzkxZjU0M2NiZGQ2MTMxYjcwMzllYjky
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IG1hdGNoUmVnaXN0cmF0aW9uKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdp
biwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFJlZ2lzdHJhdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkTWF0Y2hSZWdpc3RyYXRpb24odWludDY0X3QgbWF0Y2hSZXF1ZXN0SWRlbnRp
ZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYp
OwogICAgIHZvaWQgZGlkR2V0UmVnaXN0cmF0aW9ucyh1aW50NjRfdCBtYXRjaFJlcXVlc3RJZGVu
dGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYp
OwotICAgIHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9u
UmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHdoZW5SZWdpc3RyYXRpb25SZWFkeShj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBj
bGllbnRVUkwsIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZv
aWQgcmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgY2FsbGJhY2tJRCwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJik7CiAKICAgICB2b2lkIGdldFJlZ2lzdHJhdGlvbnMo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVu
dFVSTCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrJiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggZjg1ZGMwMTk3ODg1OWUzZTljYWJmYTg2OTVjYWI0MzliMjA2YjU1
Ni4uMzIxYTg0N2NhMjdjOTlhMDhlOTdlNmQyMzQ5NjY3MjQ2NTc0MTNmYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTktMDktMDMgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEludHJvZHVjZSBXb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb24gdG8gbWFrZSBTV0NsaWVudENvbm5lY3Rpb24gbW9uby10aHJlYWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTQzMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBpbnNl
cnRlZCBpZnJhbWVzIHRvIG1ha2UgdGVzdCBvdXRwdXRzIG1vcmUgc3RhYmxlLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9hY3Rp
dmF0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2FjdGl2YXRpb24uaHR0cHMuaHRtbDoKKyAg
ICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L2RldGFjaGVkLWNvbnRleHQuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZGV0YWNoZWQtY29udGV4
dC5odHRwcy5odG1sOgorCiAyMDE5LTA5LTAxICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2RlKCkgc2hv
dWxkIHJldHVybiBhIHJlc29sdmVkIHByb21pc2UgZm9yIGRlY29kaW5nIG5vbiBiaXRtYXAgaW1h
Z2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9hY3RpdmF0aW9uLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2FjdGl2YXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0
CmluZGV4IDU1ZDc4NGI5OWZiZDJhNDc5YTQ2ZTBiYzJkOTdmNjlhMGZlOTJhNmUuLjczMzRkNmI3
YTdhYzQ0ZGExMTI4ZGY1ZDk0ZmY5ODU3MmU2MzI4NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL2FjdGl2YXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyL2FjdGl2YXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNCBAQAogCi0KIFBB
U1MgbG9zcyBvZiBjb250cm9sbGVlcyB0cmlnZ2VycyBhY3RpdmF0aW9uIAogUEFTUyBmaW5pc2hp
bmcgYSByZXF1ZXN0IHRyaWdnZXJzIGFjdGl2YXRpb24gCiBQQVNTIHNraXBXYWl0aW5nIGJ5cGFz
c2VzIG5vIGNvbnRyb2xsZWUgcmVxdWlyZW1lbnQgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9hY3RpdmF0aW9uLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9hY3RpdmF0aW9u
Lmh0dHBzLmh0bWwKaW5kZXggNTc1NTc1OGU1NzE2ZGJjNjA4ZTdlNzczYmY5YjgzYWIzZjJmN2U5
MS4uMDA3ZWNhYWQ3NmM5NTkzNWRkNTc0NzBjNjYwNTc1MzA1ZGM2YmFlMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvYWN0aXZhdGlvbi5odHRwcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL2FjdGl2YXRpb24uaHR0cHMuaHRtbApAQCAtMTEzLDEwICsxMTMsMTIgQEAgcHJvbWlz
ZV90ZXN0KHQgPT4gewogICAgIHZhciBzY29wZSA9ICdyZXNvdXJjZXMvc2tpcC13YWl0aW5nJzsK
ICAgICB2YXIgd29ya2VyX3VybCA9ICdyZXNvdXJjZXMvbWludC1uZXctd29ya2VyLnB5P3NraXAt
d2FpdGluZyc7CiAgICAgdmFyIHJlZ2lzdHJhdGlvbjsKKyAgICB2YXIgaWZyYW1lOwogICAgIHZh
ciBuZXdfd29ya2VyOwogICAgIHJldHVybiBzZXR1cF9hY3RpdmF0aW9uX3Rlc3QodCwgc2NvcGUs
IHdvcmtlcl91cmwpCiAgICAgICAudGhlbihyZXN1bHQgPT4gewogICAgICAgICAgIHJlZ2lzdHJh
dGlvbiA9IHJlc3VsdC5yZWdpc3RyYXRpb247CisgICAgICAgICAgaWZyYW1lID0gcmVzdWx0Lmlm
cmFtZTsKICAgICAgICAgICAvLyBGaW5pc2ggdGhlIHJlcXVlc3QuIFRoZSBpZnJhbWUgZG9lcyBu
b3QgbmVlZCB0byBiZSByZW1vdmVkIGJlY2F1c2UKICAgICAgICAgICAvLyBza2lwV2FpdGluZygp
IHdhcyBjYWxsZWQuCiAgICAgICAgICAgbmV3X3dvcmtlciA9IHJlZ2lzdHJhdGlvbi53YWl0aW5n
OwpAQCAtMTI2LDYgKzEyOCw4IEBAIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgfSkKICAg
ICAgIC50aGVuKCgpID0+IHsKICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJlZ2lzdHJhdGlvbi5h
Y3RpdmUsIG5ld193b3JrZXIpOworICAgICAgICAgIC8vIFJlbW92ZSB0aGUgaWZyYW1lLgorICAg
ICAgICAgIGlmcmFtZS5yZW1vdmUoKTsKICAgICAgICAgfSk7CiAgIH0sICdza2lwV2FpdGluZyBi
eXBhc3NlcyBubyBjb250cm9sbGVlIHJlcXVpcmVtZW50Jyk7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL2RldGFjaGVkLWNvbnRleHQuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXIvZGV0YWNoZWQtY29udGV4dC5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggZDgw
M2Y5ZmQ5MjlmNzUwNmM3NTY4NjgwNjYwYjViZGE3YWZhZTMzZS4uZjU4YjYwYTgzNzI2MmQzNzc2
ODQ0MjQwZDAxODkzOTQ0ZjNkMjI2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZGV0
YWNoZWQtY29udGV4dC5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
ZGV0YWNoZWQtY29udGV4dC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw0IEBACiAKLQog
UEFTUyBhY2Nlc3NpbmcgYSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uIGZyb20gYSByZW1vdmVk
IGlmcmFtZSAKIFBBU1MgYWNjZXNzaW5nIGEgU2VydmljZVdvcmtlciBvYmplY3QgZnJvbSBhIHJl
bW92ZWQgaWZyYW1lIAogUEFTUyBhY2Nlc3NpbmcgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIgb24g
YSBkZXRhY2hlZCBpZnJhbWUgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9kZXRhY2hl
ZC1jb250ZXh0Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9kZXRhY2hlZC1jb250ZXh0
Lmh0dHBzLmh0bWwKaW5kZXggNWFlNGRlOGNjODFlMGMzNjUwZWFhZjZiNTY1NjE5M2Q0YTJjZjhi
MC4uZjk2MzcwZDIwMTAwMGQyMGE5NTAxNjZkY2NmMmNhZjcyYmQ0NzNjMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvZGV0YWNoZWQtY29udGV4dC5odHRwcy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyL2RldGFjaGVkLWNvbnRleHQuaHR0cHMuaHRtbApAQCAtNTksNiArNTksNyBA
QCBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhyZXNvbHZlZENvdW50LCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgJ21l
dGhvZHMgY2FsbGVkIG9uIGEgZGV0YWNoZWQgcmVnaXN0cmF0aW9uIHNob3VsZCBub3QgcmVzb2x2
ZScpOworICAgICAgICAgIGZyYW1lLnJlbW92ZSgpOwogICAgICAgICB9KQogICB9LCAnYWNjZXNz
aW5nIGEgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBmcm9tIGEgcmVtb3ZlZCBpZnJhbWUnKTsK
IApAQCAtMTAyLDYgKzEwMyw3IEBAIHByb21pc2VfdGVzdCh0ID0+IHsKICAgICAgICAgYXNzZXJ0
X2VxdWFscygKICAgICAgICAgICAgIGdldF9uYXZpZ2F0b3IoKS5zZXJ2aWNlV29ya2VyLAogICAg
ICAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cubmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIpOwor
ICAgICAgICBpZnJhbWUucmVtb3ZlKCk7CiAgICAgICB9KTsKICAgfSwgJ2FjY2Vzc2luZyBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlciBvbiBhIGRldGFjaGVkIGlmcmFtZScpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378053</attachid>
            <date>2019-09-05 00:12:47 -0700</date>
            <delta_ts>2019-09-05 02:01:57 -0700</delta_ts>
            <desc>Win fix</desc>
            <filename>bug-201430-20190905091245.patch</filename>
            <type>text/plain</type>
            <size>52336</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYxMzQ3MGVlYjk3Yzg3
YzkyOTAxNWZhNDNjYjcyMTBjYjExNmU5Zi4uY2I3YmFlM2MwYjZhOGE1NThlOTY0NGY3ODQ3MzZh
ZmViNDEwMmNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE5LTA5LTA0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uIHRvIG1ha2UgU1dDbGllbnRDb25uZWN0aW9uIG1vbm8tdGhyZWFk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE0MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIE1ha2Ug
U1dDbGllbnRDb25uZWN0aW9uIFJlZkNvdW50ZWQuCisgICAgICAgIEFkZCBhIFdvcmtlclNXQ2xp
ZW50Q29ubmVjdGlvbiBkZWRpY2F0ZWQgdG8gYmUgdXNlZCBieSB3b3JrZXIvc2VydmljZSB3b3Jr
ZXIgY29udGV4dHMuCisgICAgICAgIFNpbXBsaWZ5IFNlcnZpY2VXb3JrZXJDb250YWluZXIgbG9n
aWMgYmFzZWQgb24gdGhpcyByZWZhY3RvcmluZy4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0
aW5nIHRlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6OnN3Q2xpZW50
Q29ubmVjdGlvbik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjpzY2hlZHVsZUpvYik6CisgICAgICAgIChXZWJD
b3JlOjpTV0NsaWVudENvbm5lY3Rpb246OmZhaWxlZEZldGNoaW5nU2NyaXB0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdFRhc2tGb3JKb2IpOgorICAgICAgICAq
IHdvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpt
YWluVGhyZWFkQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29u
dGFpbmVyOjpyZWFkeSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjpzY2hlZHVsZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ29udGFpbmVy
OjpnZXRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRh
aW5lcjo6dXBkYXRlUmVnaXN0cmF0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpub3RpZnlSZWdpc3RyYXRpb25Jc1NldHRsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6am9iRmluaXNoZWRMb2FkaW5n
U2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250YWluZXI6Om5vdGlm
eUZhaWxlZEZldGNoaW5nU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJD
b250YWluZXI6OmVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdG9wKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNvbnRhaW5lci5oOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJG
ZXRjaFJlc3VsdDo6aXNvbGF0ZWRDb3B5IGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246On5Xb3JrZXJTV0NsaWVu
dENvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9u
OjptYXRjaFJlZ2lzdHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENv
bm5lY3Rpb246OmdldFJlZ2lzdHJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dD
bGllbnRDb25uZWN0aW9uOjp3aGVuUmVnaXN0cmF0aW9uUmVhZHkpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpy
ZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlz
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29u
bmVjdGlvbjo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjptYXlIYXZlU2VydmljZVdvcmtlclJlZ2lz
dGVyZWRGb3JPcmlnaW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRD
b25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbjo6cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6dW5yZWdpc3RlclNlcnZpY2VX
b3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9u
OjpmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
clNXQ2xpZW50Q29ubmVjdGlvbjo6aXNUaHJvdHRsZWFibGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2IpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpzY2hlZHVsZUpvYklu
U2VydmVyKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0
aW9uLmg6IEFkZGVkLgorCiAyMDE5LTA5LTA0ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1
amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5dW0NsYW5nXSBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQuY3BwKDExMjIsMjApOiBlcnJvcjogY2Fubm90IGRlY29tcG9zZSB0aGlzIHR5cGU7ICdzdGQ6
OnR1cGxlX3NpemU8Y29uc3QgV1RGOjpLZXlWYWx1ZVBhaXI8V1RGOjpTdHJpbmcsIFdURjo6UmVm
UHRyPFdURjo6SlNPTkltcGw6OlZhbHVlLCBXVEY6OkR1bWJQdHJUcmFpdHM8V1RGOjpKU09OSW1w
bDo6VmFsdWU+ID4gPj46OnZhbHVlJyBpcyBub3QgYSB2YWxpZCBpbnRlZ3JhbCBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAppbmRleCBhZTY3YTViZGI0ZDI3ZDgyZjE2ZGM4Njk1ODg0ZGM3MWYzMmViMjdmLi4z
NmRjNzcwMDMyNDJlZDUxOTNhN2Q0NTczMTNkYjBlNWZiMDBlNDE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApA
QCAtMjQ5MCw2ICsyNDkwLDcgQEAgd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhLmNwcAogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkuY3BwCiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbk9wdGlvbnMu
Y3BwCiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKK3dvcmtl
cnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCiAKIHdvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJEZWJ1Z2dhYmxlLmNwcAogd29ya2Vycy9zZXJ2aWNlL2Nv
bnRleHQvU2VydmljZVdvcmtlckZldGNoLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNjOGJhOTliODY5NzI0ZmEwYjE0Mjcy
M2E4YzE2MmJiOGZhYTA3NTcuLjgxOTY0MzBiNjQ0NTUxMzIwMDUzODQwMGM3YjAwNDdkYTZhZDI1
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTczMjMsNiArNzMyMyw4IEBACiAJCTQxQTAyM0VEMUEzOURCNzkwMEY3MjJERiAv
KiBXcml0YWJsZVN0cmVhbS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV3JpdGFibGVTdHJl
YW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUEwODI5OTIyOTMyRUY0MDA4
NDI2RTAgLyogRmVhdHVyZVBvbGljeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGZWF0dXJlUG9saWN5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTA4MjlC
MjI5MzJFRjQwMDg0MjZFMCAvKiBGZWF0dXJlUG9saWN5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZlYXR1cmVQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0MUEwOThCQzIzMUU5MUQxMDBGNEZGRjAgLyogV29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclNX
Q2xpZW50Q29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxQTA5
OEJFMjMxRTkxRDEwMEY0RkZGMCAvKiBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxQTFCMDBEMUU1MjY1NkUwMDdGMzc2OSAvKiBM
aWJXZWJSVENQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMaWJXZWJSVENQcm92aWRlci5jcHA7IHBhdGggPSBsaWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MUExQjAxQTFFNTQyMzk2MDA3
RjM3NjkgLyogSlNET01HdWFyZGVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRE9NR3VhcmRlZE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MUExQjAxQjFFNTQyMzk2MDA3RjM3NjkgLyogSlNET01HdWFyZGVkT2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NR3VhcmRlZE9iamVjdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODkzNCw2ICsxODkzNiw4IEBACiAJCQkJ
NDZFRjE0MjYxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaWRs
ICovLAogCQkJCTQ2RUNCNjM2MUZEMEEzQkIwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rpb24u
Y3BwICovLAogCQkJCTQ2RUNCNjM3MUZEMEEzQkIwMDg4RTVBRCAvKiBTV0NsaWVudENvbm5lY3Rp
b24uaCAqLywKKwkJCQk0MUEwOThCQzIzMUU5MUQxMDBGNEZGRjAgLyogV29ya2VyU1dDbGllbnRD
b25uZWN0aW9uLmNwcCAqLywKKwkJCQk0MUEwOThCRTIzMUU5MUQxMDBGNEZGRjAgLyogV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHNlcnZpY2U7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmNwcAppbmRleCBhOTcwYTdhZGE2NzVhMTZjZjE2ODcwZWMzZWIzYTZjMzRjZWRj
MmY2Li45ZjcyYTkxNmIyY2I4ZDQ3MjE1MWUwMWVhNzYyMzA1Y2IxYmNjY2IyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNDcsNiArNDcsNyBA
QAogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyTmF2aWdhdG9y
LmgiCiAjaW5jbHVkZSAiV29ya2VyUmVwb3J0aW5nUHJveHkuaCIKKyNpbmNsdWRlICJXb3JrZXJT
V0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRMb2FkZXIuaCIKICNp
bmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRB
cmd1bWVudHMuaD4KQEAgLTQ3MCw2ICs0NzEsMTUgQEAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXImIFdvcmtlckdsb2JhbFNjb3BlOjptZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpCiAgICAg
cmV0dXJuICptX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOwogfQogCisjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQorV29ya2VyU1dDbGllbnRDb25uZWN0aW9uJiBXb3JrZXJHbG9iYWxTY29w
ZTo6c3dDbGllbnRDb25uZWN0aW9uKCkKK3sKKyAgICBpZiAoIW1fc3dDbGllbnRDb25uZWN0aW9u
KQorICAgICAgICBtX3N3Q2xpZW50Q29ubmVjdGlvbiA9IFdvcmtlclNXQ2xpZW50Q29ubmVjdGlv
bjo6Y3JlYXRlKCp0aGlzKTsKKyAgICByZXR1cm4gKm1fc3dDbGllbnRDb25uZWN0aW9uOworfQor
I2VuZGlmCisKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZUltYWdlQml0bWFwKEltYWdl
Qml0bWFwOjpTb3VyY2UmJiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9wdGlvbnMsIElt
YWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBJbWFnZUJpdG1hcDo6Y3JlYXRl
UHJvbWlzZSgqdGhpcywgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKG9wdGlvbnMpLCBXVEZNb3Zl
KHByb21pc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xv
YmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaApp
bmRleCAxYjcxYzExYWNjNGE5MDBkOWJlMjFhNjUxNjYxOTMzNTIzNGM5ZWQwLi5kNjA2ZTRlZTY5
NDhiZTE5Yzg4MDhiYTVmMjlmNWU1MjVmN2JiNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFNjaGVkdWxlZEFj
dGlvbjsKIGNsYXNzIFdvcmtlckluc3BlY3RvckNvbnRyb2xsZXI7CiBjbGFzcyBXb3JrZXJMb2Nh
dGlvbjsKIGNsYXNzIFdvcmtlck5hdmlnYXRvcjsKK2NsYXNzIFdvcmtlclNXQ2xpZW50Q29ubmVj
dGlvbjsKIGNsYXNzIFdvcmtlclRocmVhZDsKIAogbmFtZXNwYWNlIElEQkNsaWVudCB7CkBAIC03
NSw2ICs3Niw5IEBAIHB1YmxpYzoKIAogICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24m
IGNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ciYgbWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCisgICAgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uJiBzd0NsaWVudENvbm5lY3Rpb24oKTsK
KyNlbmRpZgogCiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgeyByZXR1cm4g
bV9zY3JpcHQuZ2V0KCk7IH0KICAgICB2b2lkIGNsZWFyU2NyaXB0KCkgeyBtX3NjcmlwdCA9IG51
bGxwdHI7IH0KQEAgLTIxNCw2ICsyMTgsOSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXb3JrZXJD
YWNoZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyPiBtX21lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV91bmlxdWVJZGVudGlmaWVy
IHsgMSB9OworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBSZWZQdHI8V29ya2VyU1dD
bGllbnRDb25uZWN0aW9uPiBtX3N3Q2xpZW50Q29ubmVjdGlvbjsKKyNlbmRpZgogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCBmZDE3MWE5M2I0YTFkMTRiZTUzMDc5
YzRiZTYyM2VmMDQxZmM5NWIxLi44NjBhODJhYmEyNjZlZmVmYTEyMDNmZmViZjhjNDQ3ZTM4NThk
MDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGll
bnRDb25uZWN0aW9uLmNwcApAQCAtNDcsOCArNDcsNiBAQCBTV0NsaWVudENvbm5lY3Rpb246On5T
V0NsaWVudENvbm5lY3Rpb24oKSA9IGRlZmF1bHQ7CiAKIHZvaWQgU1dDbGllbnRDb25uZWN0aW9u
OjpzY2hlZHVsZUpvYihEb2N1bWVudE9yV29ya2VySWRlbnRpZmllciBjb250ZXh0SWRlbnRpZmll
ciwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLQogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zY2hlZHVsZWRKb2JTb3Vy
Y2VzLmFkZChqb2JEYXRhLmlkZW50aWZpZXIoKS5qb2JJZGVudGlmaWVyLCBjb250ZXh0SWRlbnRp
Zmllcik7CiAgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5
KTsKIApAQCAtNjIsNyArNjAsNyBAQCB2b2lkIFNXQ2xpZW50Q29ubmVjdGlvbjo6ZmFpbGVkRmV0
Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIgam9iSWRlbgogICAgIGZpbmlz
aEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoeyB7IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKCks
IGpvYklkZW50aWZpZXIgfSwgcmVnaXN0cmF0aW9uS2V5LCB7IH0sIHsgfSwgeyB9LCAgZXJyb3Ig
fSk7CiB9CiAKLWJvb2wgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0VGFza0ZvckpvYihTZXJ2aWNl
V29ya2VySm9iSWRlbnRpZmllciBqb2JJZGVudGlmaWVyLCBJc0pvYkNvbXBsZXRlIGlzSm9iQ29t
cGxldGUsIFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VySm9iJik+JiYgdGFzaykKK2Jv
b2wgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0VGFza0ZvckpvYihTZXJ2aWNlV29ya2VySm9iSWRl
bnRpZmllciBqb2JJZGVudGlmaWVyLCBJc0pvYkNvbXBsZXRlIGlzSm9iQ29tcGxldGUsIEZ1bmN0
aW9uPHZvaWQoU2VydmljZVdvcmtlckpvYiYpPiYmIHRhc2spCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NX
Q2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDI1MTkyNWJlOGFlNmE2NzU0MjFkY2ZlYWY1ODk0YTg0
YzNiNDA0NDkuLjRmNmY3YWQyYzZiYzRmZDdjNTBkM2E5ZThiMTA0MTkzMDFiM2JmMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9u
LmgKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVHlwZXMuaCIKICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTMsMjMgKzUzLDIzIEBA
IHN0cnVjdCBTZXJ2aWNlV29ya2VyRGF0YTsKIHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1
bHQ7CiBzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE7CiAKLWNsYXNzIFNXQ2xp
ZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTV0NsaWVudENvbm5l
Y3Rpb24+IHsKK2NsYXNzIFNXQ2xpZW50Q29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNX
Q2xpZW50Q29ubmVjdGlvbj4gewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
flNXQ2xpZW50Q29ubmVjdGlvbigpOwogCi0gICAgdXNpbmcgUmVnaXN0cmF0aW9uQ2FsbGJhY2sg
PSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGE+JiYpPjsKKyAgICB1c2luZyBSZWdpc3RyYXRpb25DYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+
JiYpPjsKICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hSZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5E
YXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgUmVnaXN0cmF0aW9uQ2FsbGJh
Y2smJikgPSAwOwogCi0gICAgdXNpbmcgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrID0gV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YT4mJik+OworICAgIHVzaW5nIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjayA9IENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKT47CiAg
ICAgdmlydHVhbCB2b2lkIGdldFJlZ2lzdHJhdGlvbnMoU2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9w
T3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrJiYp
ID0gMDsKIAotICAgIHVzaW5nIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNrID0gV1RGOjpG
dW5jdGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpPjsKLSAgICB2aXJ0
dWFsIHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiB0b3BP
cmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFj
ayYmKSA9IDA7CisgICAgdXNpbmcgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2sgPSBGdW5j
dGlvbjx2b2lkKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpPjsKKyAgICB2aXJ0dWFs
IHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgdG9w
T3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJh
Y2smJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGFkZFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSW5TZXJ2ZXIoU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpID0gMDsKIAotICAgIHZvaWQgc2NoZWR1
bGVKb2IoRG9jdW1lbnRPcldvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIHNjaGVkdWxlSm9iKERvY3Vt
ZW50T3JXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogICAg
IHZvaWQgZmFpbGVkRmV0Y2hpbmdTY3JpcHQoU2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3Qg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpID0gMDsKQEAgLTExMSw3ICsxMTEsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJikgPSAwOwogCiAgICAgZW51bSBjbGFzcyBJc0pvYkNvbXBsZXRlIHsg
Tm8sIFllcyB9OwotICAgIGJvb2wgcG9zdFRhc2tGb3JKb2IoU2VydmljZVdvcmtlckpvYklkZW50
aWZpZXIsIElzSm9iQ29tcGxldGUsIFdURjo6RnVuY3Rpb248dm9pZChTZXJ2aWNlV29ya2VySm9i
Jik+JiYpOworICAgIGJvb2wgcG9zdFRhc2tGb3JKb2IoU2VydmljZVdvcmtlckpvYklkZW50aWZp
ZXIsIElzSm9iQ29tcGxldGUsIEZ1bmN0aW9uPHZvaWQoU2VydmljZVdvcmtlckpvYiYpPiYmKTsK
IAogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlckpvYklkZW50aWZpZXIsIERvY3VtZW50T3JXb3Jr
ZXJJZGVudGlmaWVyPiBtX3NjaGVkdWxlZEpvYlNvdXJjZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
CmluZGV4IDAzYjI3ZmI1ODAzNjkxNzkxZTRlZDgyNTg3NjQ2OTk5YzZjMWY5NTIuLjk0OWJiZTVl
M2VhZjdmOWMzMTVlOTJhMWI4YzYyMDA0MzkwY2FmMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAg
LTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1
ZGUgIlNlcnZpY2VXb3JrZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJUaHJl
YWQuaCIKKyNpbmNsdWRlICJXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVk
ZSA8d3RmL1Njb3BlLmg+CkBAIC01OSw2ICs2MCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3N0YXRpYyBpbmxpbmUgU1dDbGllbnRDb25uZWN0aW9uJiBtYWluVGhyZWFkQ29ubmVjdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCit7CisgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJQ
cm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKHNl
c3Npb25JRCk7Cit9CisKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChTZXJ2aWNlV29ya2Vy
Q29udGFpbmVyKTsKIAogU2VydmljZVdvcmtlckNvbnRhaW5lcjo6U2VydmljZVdvcmtlckNvbnRh
aW5lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBOYXZpZ2F0b3JCYXNlJiBuYXZp
Z2F0b3IpCkBAIC05NSwyNCArMTAxLDE2IEBAIGF1dG8gU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
cmVhZHkoKSAtPiBSZWFkeVByb21pc2UmCiAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZSkgewogICAg
ICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWU8UmVhZHlQcm9taXNlPigpOwogCi0gICAg
ICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9u
SUQoKS5pc1ZhbGlkKCkpCisgICAgICAgIGlmIChtX2lzU3RvcHBlZCkKICAgICAgICAgICAgIHJl
dHVybiAqbV9yZWFkeVByb21pc2U7CiAKICAgICAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7Ci0gICAgICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0aGlz
LT5jb250ZXh0SWRlbnRpZmllcigpOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtjb25uZWN0
aW9uID0gbWFrZVJlZihlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKSksIHRvcE9yaWdpbiA9IGNv
bnRleHQudG9wT3JpZ2luKCkuaXNvbGF0ZWRDb3B5KCksIGNsaWVudFVSTCA9IGNvbnRleHQudXJs
KCkuaXNvbGF0ZWRDb3B5KCksIGNvbnRleHRJZGVudGlmaWVyXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgY29ubmVjdGlvbi0+d2hlblJlZ2lzdHJhdGlvblJlYWR5KHRvcE9yaWdpbiwgY2xpZW50
VVJMLCBbY29udGV4dElkZW50aWZpZXJdKGF1dG8mJiByZWdpc3RyYXRpb25EYXRhKSB7Ci0gICAg
ICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRl
bnRpZmllciwgW3JlZ2lzdHJhdGlvbkRhdGEgPSBjcm9zc1RocmVhZENvcHkocmVnaXN0cmF0aW9u
RGF0YSldKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgICAgICBhdXRv
KiBzZXJ2aWNlV29ya2VyQ29udGFpbmVyID0gY29udGV4dC5zZXJ2aWNlV29ya2VyQ29udGFpbmVy
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc2VydmljZVdvcmtlckNvbnRhaW5lcikKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNl
cnZpY2VXb3JrZXJDb250YWluZXItPm1faXNTdG9wcGVkIHx8ICFjb250ZXh0LnNlc3Npb25JRCgp
LmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAg
ICAgICAgICAgICBhdXRvIHJlZ2lzdHJhdGlvbiA9IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246
OmdldE9yQ3JlYXRlKGNvbnRleHQsICpzZXJ2aWNlV29ya2VyQ29udGFpbmVyLCBXVEZNb3ZlKHJl
Z2lzdHJhdGlvbkRhdGEpKTsKLSAgICAgICAgICAgICAgICAgICAgc2VydmljZVdvcmtlckNvbnRh
aW5lci0+bV9yZWFkeVByb21pc2UtPnJlc29sdmUoV1RGTW92ZShyZWdpc3RyYXRpb24pKTsKLSAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOworICAgICAgICBlbnN1cmVTV0NsaWVu
dENvbm5lY3Rpb24oKS53aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29udGV4dC50b3BPcmlnaW4oKS5k
YXRhKCksIGNvbnRleHQudXJsKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyldKGF1dG8mJiByZWdpc3RyYXRpb25EYXRhKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGlmICht
X2lzU3RvcHBlZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGF1dG8g
cmVnaXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUocmVnaXN0cmF0aW9uRGF0YSkp
OworICAgICAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoV1RGTW92ZShyZWdpc3RyYXRp
b24pKTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIHJldHVybiAqbV9yZWFkeVByb21pc2U7CkBA
IC0yNTQsNjcgKzI1MiwzMyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnNjaGVkdWxl
Sm9iKHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iPiYmIGpvYgogICAgIEFTU0VSVCgh
bV9qb2JNYXAuY29udGFpbnMoam9iSWRlbnRpZmllcikpOwogICAgIG1fam9iTWFwLmFkZChqb2JJ
ZGVudGlmaWVyLCBPbmdvaW5nSm9iIHsgV1RGTW92ZShqb2IpLCBtYWtlUGVuZGluZ0FjdGl2aXR5
KCp0aGlzKSB9KTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29u
bmVjdGlvbiwgY29udGV4dElkZW50aWZpZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpLCBq
b2JEYXRhID0gam9iRGF0YS5pc29sYXRlZENvcHkoKV0gewotICAgICAgICBjb25uZWN0aW9uLT5z
Y2hlZHVsZUpvYihjb250ZXh0SWRlbnRpZmllciwgam9iRGF0YSk7Ci0gICAgfSk7CisgICAgbV9z
d0Nvbm5lY3Rpb24tPnNjaGVkdWxlSm9iKGNvbnRleHRJZGVudGlmaWVyKCksIGpvYkRhdGEpOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBT
dHJpbmcmIGNsaWVudFVSTCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAg
IGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKG1faXNT
dG9wcGVkIHx8ICFjb250ZXh0LT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpIHsKKyAgICBpZiAobV9p
c1N0b3BwZWQpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVVJMIHBhcnNlZFVS
TCA9IGNvbnRleHQtPmNvbXBsZXRlVVJMKGNsaWVudFVSTCk7Ci0gICAgaWYgKCFwcm90b2NvbEhv
c3RBbmRQb3J0QXJlRXF1YWwocGFyc2VkVVJMLCBjb250ZXh0LT51cmwoKSkpIHsKKyAgICBhdXRv
JiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBVUkwgcGFyc2VkVVJM
ID0gY29udGV4dC5jb21wbGV0ZVVSTChjbGllbnRVUkwpOworICAgIGlmICghcHJvdG9jb2xIb3N0
QW5kUG9ydEFyZUVxdWFsKHBhcnNlZFVSTCwgY29udGV4dC51cmwoKSkpIHsKICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJPcmlnaW4gb2YgY2xpZW50
VVJMIGlzIG5vdCBjbGllbnQncyBvcmlnaW4iX3MgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICB1aW50NjRfdCBwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIgPSArK21fbGFzdFBlbmRp
bmdQcm9taXNlSWRlbnRpZmllcjsKLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1
ZTxQZW5kaW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgq
dGhpcykpOwotICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZp
ZXIsIFdURk1vdmUocGVuZGluZ1Byb21pc2UpKTsKLQotICAgIGF1dG8gY29udGV4dElkZW50aWZp
ZXIgPSB0aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nv
bm5lY3Rpb24gPSBtYWtlUmVmKGVuc3VyZVNXQ2xpZW50Q29ubmVjdGlvbigpKSwgdG9wT3JpZ2lu
ID0gY29udGV4dC0+dG9wT3JpZ2luKCkuZGF0YSgpLmlzb2xhdGVkQ29weSgpLCBwYXJzZWRVUkwg
PSBwYXJzZWRVUkwuaXNvbGF0ZWRDb3B5KCksIGNvbnRleHRJZGVudGlmaWVyLCBwZW5kaW5nUHJv
bWlzZUlkZW50aWZpZXJdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbm5lY3Rpb24tPm1hdGNoUmVn
aXN0cmF0aW9uKFdURk1vdmUodG9wT3JpZ2luKSwgcGFyc2VkVVJMLCBbY29udGV4dElkZW50aWZp
ZXIsIHBlbmRpbmdQcm9taXNlSWRlbnRpZmllcl0gKGF1dG8mJiByZXN1bHQpIG11dGFibGUgewot
ICAgICAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cG9zdFRhc2tUbyhjb250ZXh0SWRl
bnRpZmllciwgW3BlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgcmVzdWx0ID0gY3Jvc3NUaHJlYWRD
b3B5KHJlc3VsdCldKGF1dG8mIGNvbnRleHQpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGF1
dG8qIHNlcnZpY2VXb3JrZXJDb250YWluZXIgPSBjb250ZXh0LnNlcnZpY2VXb3JrZXJDb250YWlu
ZXIoKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNlcnZpY2VXb3JrZXJDb250YWluZXIpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBpZiAoc2VydmljZVdvcmtl
ckNvbnRhaW5lci0+bV9pc1N0b3BwZWQgfHwgIWNvbnRleHQuc2Vzc2lvbklEKCkuaXNWYWxpZCgp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBzZXJ2aWNl
V29ya2VyQ29udGFpbmVyLT5kaWRGaW5pc2hHZXRSZWdpc3RyYXRpb25SZXF1ZXN0KHBlbmRpbmdQ
cm9taXNlSWRlbnRpZmllciwgV1RGTW92ZShyZXN1bHQpKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICB9KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpkaWRG
aW5pc2hHZXRSZWdpc3RyYXRpb25SZXF1ZXN0KHVpbnQ2NF90IHBlbmRpbmdQcm9taXNlSWRlbnRp
ZmllciwgT3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYgcmVzdWx0KQot
ewotI2lmbmRlZiBOREVCVUcKLSAgICBBU1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAm
VGhyZWFkOjpjdXJyZW50KCkpOwotI2VuZGlmCi0KLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0g
bV9wZW5kaW5nUHJvbWlzZXMudGFrZShwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIpOwotICAgIGlm
ICghcGVuZGluZ1Byb21pc2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzU3RvcHBl
ZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpIHsK
LSAgICAgICAgcGVuZGluZ1Byb21pc2UtPnByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghcmVz
dWx0KSB7Ci0gICAgICAgIHBlbmRpbmdQcm9taXNlLT5wcm9taXNlLT5yZXNvbHZlKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCkubWF0Y2hS
ZWdpc3RyYXRpb24oU2VjdXJpdHlPcmlnaW5EYXRhIHsgY29udGV4dC50b3BPcmlnaW4oKS5kYXRh
KCkgfSwgcGFyc2VkVVJMLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChtX2lzU3RvcHBlZCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVn
aXN0cmF0aW9uID0gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0T3JDcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKnRoaXMsIFdURk1vdmUocmVzdWx0LnZhbHVlKCkpKTsKLSAg
ICBwZW5kaW5nUHJvbWlzZS0+cHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbj4+KFdURk1vdmUocmVnaXN0cmF0aW9uKSk7CisgICAgICAgIGlmICgh
cmVzdWx0KSB7CisgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZhY2U8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbj4+KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246Omdl
dE9yQ3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlzLCBXVEZNb3ZlKHJlc3Vs
dC52YWx1ZSgpKSkpOworICAgIH0pOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6
OnVwZGF0ZVJlZ2lzdHJhdGlvblN0YXRlKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlm
aWVyIGlkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25TdGF0ZSBzdGF0ZSwgY29u
c3QgT3B0aW9uYWw8U2VydmljZVdvcmtlckRhdGE+JiBzZXJ2aWNlV29ya2VyRGF0YSkKQEAgLTMz
Miw1MyArMjk2LDIxIEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6dXBkYXRlUmVnaXN0
cmF0aW9uU3RhdGUoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkCiAKIHZvaWQgU2VydmljZVdv
cmtlckNvbnRhaW5lcjo6Z2V0UmVnaXN0cmF0aW9ucyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiB7Ci0gICAgYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
LSAgICBpZiAobV9pc1N0b3BwZWQgfHwgIWNvbnRleHQtPnNlc3Npb25JRCgpLmlzVmFsaWQoKSkg
eworICAgIGlmIChtX2lzU3RvcHBlZCkgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICB1aW50NjRfdCBwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIgPSArK21fbGFzdFBlbmRpbmdQcm9t
aXNlSWRlbnRpZmllcjsKLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbWFrZVVuaXF1ZTxQZW5k
aW5nUHJvbWlzZT4oV1RGTW92ZShwcm9taXNlKSwgbWFrZVBlbmRpbmdBY3Rpdml0eSgqdGhpcykp
OwotICAgIG1fcGVuZGluZ1Byb21pc2VzLmFkZChwZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIFdU
Rk1vdmUocGVuZGluZ1Byb21pc2UpKTsKLQotICAgIGF1dG8gY29udGV4dElkZW50aWZpZXIgPSB0
aGlzLT5jb250ZXh0SWRlbnRpZmllcigpOwotICAgIGF1dG8gY29udGV4dFVSTCA9IGNvbnRleHQt
PnVybCgpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtYWtlUmVmKGVuc3Vy
ZVNXQ2xpZW50Q29ubmVjdGlvbigpKSwgdG9wT3JpZ2luID0gY29udGV4dC0+dG9wT3JpZ2luKCku
ZGF0YSgpLmlzb2xhdGVkQ29weSgpLCBjb250ZXh0VVJMID0gY29udGV4dFVSTC5pc29sYXRlZENv
cHkoKSwgY29udGV4dElkZW50aWZpZXIsIHBlbmRpbmdQcm9taXNlSWRlbnRpZmllcl0oKSBtdXRh
YmxlIHsKLSAgICAgICAgY29ubmVjdGlvbi0+Z2V0UmVnaXN0cmF0aW9ucyhXVEZNb3ZlKHRvcE9y
aWdpbiksIGNvbnRleHRVUkwsIFtjb250ZXh0SWRlbnRpZmllciwgcGVuZGluZ1Byb21pc2VJZGVu
dGlmaWVyXSAoYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGFzKSBtdXRhYmxlIHsKLSAgICAgICAgICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnBvc3RUYXNrVG8oY29udGV4dElkZW50aWZpZXIsIFtw
ZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIsIHJlZ2lzdHJhdGlvbkRhdGFzID0gY3Jvc3NUaHJlYWRD
b3B5KHJlZ2lzdHJhdGlvbkRhdGFzKV0oYXV0byYgY29udGV4dCkgbXV0YWJsZSB7Ci0gICAgICAg
ICAgICAgICAgYXV0byogc2VydmljZVdvcmtlckNvbnRhaW5lciA9IGNvbnRleHQuc2VydmljZVdv
cmtlckNvbnRhaW5lcigpOwotICAgICAgICAgICAgICAgIGlmICghc2VydmljZVdvcmtlckNvbnRh
aW5lcikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGlmIChz
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLT5tX2lzU3RvcHBlZCB8fCAhY29udGV4dC5zZXNzaW9uSUQo
KS5pc1ZhbGlkKCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
ICAgIHNlcnZpY2VXb3JrZXJDb250YWluZXItPmRpZEZpbmlzaEdldFJlZ2lzdHJhdGlvbnNSZXF1
ZXN0KHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhcykp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfQotCi12b2lkIFNlcnZp
Y2VXb3JrZXJDb250YWluZXI6OmRpZEZpbmlzaEdldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0KHVpbnQ2
NF90IHBlbmRpbmdQcm9taXNlSWRlbnRpZmllciwgVmVjdG9yPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhPiYmIHJlZ2lzdHJhdGlvbkRhdGFzKQotewotI2lmbmRlZiBOREVCVUcKLSAgICBB
U1NFUlQobV9jcmVhdGlvblRocmVhZC5wdHIoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkpOwotI2Vu
ZGlmCi0KLSAgICBhdXRvIHBlbmRpbmdQcm9taXNlID0gbV9wZW5kaW5nUHJvbWlzZXMudGFrZShw
ZW5kaW5nUHJvbWlzZUlkZW50aWZpZXIpOwotICAgIGlmICghcGVuZGluZ1Byb21pc2UpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChtX2lzU3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZXNzaW9uSUQoKS5pc1ZhbGlkKCkpIHsKLSAgICAgICAgcGVuZGluZ1Byb21pc2Ut
PnByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9KTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KKyAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBlbnN1cmVTV0NsaWVudENvbm5lY3Rpb24oKS5nZXRSZWdpc3RyYXRpb25z
KFNlY3VyaXR5T3JpZ2luRGF0YSB7IGNvbnRleHQudG9wT3JpZ2luKCkuZGF0YSgpIH0sIGNvbnRl
eHQudXJsKCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGFzKSBtdXRhYmxlIHsK
KyAgICAgICAgaWYgKG1faXNTdG9wcGVkKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0
byByZWdpc3RyYXRpb25zID0gV1RGOjptYXAoV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhcyksIFsm
XSAoYXV0byYmIHJlZ2lzdHJhdGlvbkRhdGEpIHsKLSAgICAgICAgcmV0dXJuIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCp0aGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCksICp0aGlzLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKTsKKyAgICAgICAgYXV0byByZWdp
c3RyYXRpb25zID0gV1RGOjptYXAoV1RGTW92ZShyZWdpc3RyYXRpb25EYXRhcyksIFsmXShhdXRv
JiYgcmVnaXN0cmF0aW9uRGF0YSkgeworICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb246OmdldE9yQ3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICp0aGlz
LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbkRhdGEpKTsKKyAgICAgICAgfSk7CisgICAgICAgIHByb21p
c2UtPnJlc29sdmU8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb24+Pj4oV1RGTW92ZShyZWdpc3RyYXRpb25zKSk7CiAgICAgfSk7Ci0KLSAgICBwZW5kaW5n
UHJvbWlzZS0+cHJvbWlzZS0+cmVzb2x2ZTxJRExTZXF1ZW5jZTxJRExJbnRlcmZhY2U8U2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbj4+PihXVEZNb3ZlKHJlZ2lzdHJhdGlvbnMpKTsKIH0KIAogdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpzdGFydE1lc3NhZ2VzKCkKQEAgLTQ4Nyw4ICs0MTks
OCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnBvc3RNZXNzYWdlKE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydgogCiB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWlu
ZXI6Om5vdGlmeVJlZ2lzdHJhdGlvbklzU2V0dGxlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbY29u
bmVjdGlvbiA9IG1fc3dDb25uZWN0aW9uLCByZWdpc3RyYXRpb25LZXkgPSByZWdpc3RyYXRpb25L
ZXkuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgY29ubmVjdGlvbi0+ZGlkUmVzb2x2ZVJlZ2lz
dHJhdGlvblByb21pc2UocmVnaXN0cmF0aW9uS2V5KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtz
ZXNzaW9uSUQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLCByZWdpc3Ry
YXRpb25LZXkgPSByZWdpc3RyYXRpb25LZXkuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbWFp
blRocmVhZENvbm5lY3Rpb24oc2Vzc2lvbklEKS5kaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlz
ZShyZWdpc3RyYXRpb25LZXkpOwogICAgIH0pOwogfQogCkBAIC01NDQsOCArNDc2LDggQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQoU2Vydmlj
ZVdvcmtlckpvYiYgam9iLCBjb24KIAogICAgIENPTlRBSU5FUl9SRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJqb2JGaW5pc2hlZExvYWRpbmdTY3JpcHQ6IFN1Y2Nlc3NmdWx5IGZpbmlzaGVkIGZldGNo
aW5nIHNjcmlwdCBmb3Igam9iICUiIFBSSXU2NCwgam9iLmlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5lY3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwg
am9iRGF0YUlkZW50aWZpZXIgPSBqb2IuZGF0YSgpLmlkZW50aWZpZXIoKSwgcmVnaXN0cmF0aW9u
S2V5ID0gam9iLmRhdGEoKS5yZWdpc3RyYXRpb25LZXkoKS5pc29sYXRlZENvcHkoKSwgc2NyaXB0
ID0gc2NyaXB0Lmlzb2xhdGVkQ29weSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb250ZW50
U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyUG9saWN5ID0gcmVmZXJyZXJQ
b2xpY3kuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgY29ubmVjdGlvbi0+ZmluaXNoRmV0Y2hp
bmdTY3JpcHRJblNlcnZlcih7IGpvYkRhdGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIHNj
cmlwdCwgY29udGVudFNlY3VyaXR5UG9saWN5LCByZWZlcnJlclBvbGljeSwgeyB9IH0pOworICAg
IGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2Vzc2lvbklEKCksIGpvYkRhdGFJZGVudGlmaWVyID0gam9iLmRhdGEoKS5pZGVudGlmaWVyKCks
IHJlZ2lzdHJhdGlvbktleSA9IGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCkuaXNvbGF0ZWRD
b3B5KCksIHNjcmlwdCA9IHNjcmlwdC5pc29sYXRlZENvcHkoKSwgY29udGVudFNlY3VyaXR5UG9s
aWN5ID0gY29udGVudFNlY3VyaXR5UG9saWN5Lmlzb2xhdGVkQ29weSgpLCByZWZlcnJlclBvbGlj
eSA9IHJlZmVycmVyUG9saWN5Lmlzb2xhdGVkQ29weSgpXSB7CisgICAgICAgIG1haW5UaHJlYWRD
b25uZWN0aW9uKHNlc3Npb25JRCkuZmluaXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcih7IGpvYkRh
dGFJZGVudGlmaWVyLCByZWdpc3RyYXRpb25LZXksIHNjcmlwdCwgY29udGVudFNlY3VyaXR5UG9s
aWN5LCByZWZlcnJlclBvbGljeSwgeyB9IH0pOwogICAgIH0pOwogfQogCkBAIC01NjcsOCArNDk5
LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JGYWlsZWRMb2FkaW5nU2NyaXB0
KFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwgY29uc3QKIAogdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFp
bmVyOjpub3RpZnlGYWlsZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiBqb2IsIGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIGNhbGxPbk1haW5UaHJlYWQoW2Nvbm5l
Y3Rpb24gPSBtX3N3Q29ubmVjdGlvbiwgam9iSWRlbnRpZmllciA9IGpvYi5pZGVudGlmaWVyKCks
IHJlZ2lzdHJhdGlvbktleSA9IGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCkuaXNvbGF0ZWRD
b3B5KCksIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRDb3B5KCldIHsKLSAgICAgICAgY29ubmVjdGlv
bi0+ZmFpbGVkRmV0Y2hpbmdTY3JpcHQoam9iSWRlbnRpZmllciwgcmVnaXN0cmF0aW9uS2V5LCBl
cnJvcik7CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklEID0gc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5zZXNzaW9uSUQoKSwgam9iSWRlbnRpZmllciA9IGpvYi5pZGVudGlmaWVyKCks
IHJlZ2lzdHJhdGlvbktleSA9IGpvYi5kYXRhKCkucmVnaXN0cmF0aW9uS2V5KCkuaXNvbGF0ZWRD
b3B5KCksIGVycm9yID0gZXJyb3IuaXNvbGF0ZWRDb3B5KCldIHsKKyAgICAgICAgbWFpblRocmVh
ZENvbm5lY3Rpb24oc2Vzc2lvbklEKS5mYWlsZWRGZXRjaGluZ1NjcmlwdChqb2JJZGVudGlmaWVy
LCByZWdpc3RyYXRpb25LZXksIGVycm9yKTsKICAgICB9KTsKIH0KIApAQCAtNjA3LDEwICs1Mzks
MTEgQEAgU1dDbGllbnRDb25uZWN0aW9uJiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjplbnN1cmVT
V0NsaWVudENvbm5lY3Rpb24oKQogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
OwogICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlc3Npb25JRCgpLmlzVmFs
aWQoKSk7CiAgICAgaWYgKCFtX3N3Q29ubmVjdGlvbikgewotICAgICAgICBBU1NFUlQoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoW3Ro
aXMsIHNlc3Npb25JRCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2Vzc2lvbklEKCldKCkg
ewotICAgICAgICAgICAgbV9zd0Nvbm5lY3Rpb24gPSAmU2VydmljZVdvcmtlclByb3ZpZGVyOjpz
aW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsK
LSAgICAgICAgfSk7CisgICAgICAgIGF1dG8mIGNvbnRleHQgPSAqc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgICAgICBpZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpKQorICAg
ICAgICAgICAgbV9zd0Nvbm5lY3Rpb24gPSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNv
bnRleHQpLnN3Q2xpZW50Q29ubmVjdGlvbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X3N3Q29ubmVjdGlvbiA9ICZtYWluVGhyZWFkQ29ubmVjdGlvbihjb250ZXh0LnNlc3Npb25JRCgp
KTsKICAgICB9CiAgICAgcmV0dXJuICptX3N3Q29ubmVjdGlvbjsKIH0KQEAgLTY1MSw3ICs1ODQs
NiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnN0b3AoKQogewogICAgIG1faXNTdG9w
cGVkID0gdHJ1ZTsKICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwotICAgIG1fcGVuZGlu
Z1Byb21pc2VzLmNsZWFyKCk7CiAgICAgbV9yZWFkeVByb21pc2UgPSBudWxscHRyOwogICAgIG1f
bWVzc2FnZVF1ZXVlLmNsb3NlKCk7CiAgICAgYXV0byBqb2JNYXAgPSBXVEZNb3ZlKG1fam9iTWFw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckNvbnRhaW5lci5oCmluZGV4IGRiMjdmNDM3OGE1YjZmZDBiM2M0ZGQ3N2FiYTFjNzAwMDhm
NmZhNWMuLmVjNTYzYTBhYjhmYWU3N2ZkZjM2YTdkYTk2ZmYyNDEyZmRmYjBhYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250
YWluZXIuaApAQCAtMTA1LDkgKzEwNSw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlGYWls
ZWRGZXRjaGluZ1NjcmlwdChTZXJ2aWNlV29ya2VySm9iJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
OwogICAgIHZvaWQgZGVzdHJveUpvYihTZXJ2aWNlV29ya2VySm9iJik7CiAKLSAgICB2b2lkIGRp
ZEZpbmlzaEdldFJlZ2lzdHJhdGlvblJlcXVlc3QodWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIs
IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiYmKTsKLSAgICB2b2lkIGRp
ZEZpbmlzaEdldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0KHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVy
LCBWZWN0b3I8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+JiYpOwotCiAgICAgRG9jdW1l
bnRPcldvcmtlcklkZW50aWZpZXIgY29udGV4dElkZW50aWZpZXIoKSBmaW5hbDsKIAogICAgIFNX
Q2xpZW50Q29ubmVjdGlvbiYgZW5zdXJlU1dDbGllbnRDb25uZWN0aW9uKCk7CkBAIC0xNDUsMjAg
KzE0Miw2IEBAIHByaXZhdGU6CiAgICAgUmVmPFRocmVhZD4gbV9jcmVhdGlvblRocmVhZCB7IFRo
cmVhZDo6Y3VycmVudCgpIH07CiAjZW5kaWYKIAotICAgIHN0cnVjdCBQZW5kaW5nUHJvbWlzZSB7
Ci0gICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgUGVuZGlu
Z1Byb21pc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWY8UGVuZGluZ0FjdGl2
aXR5PFNlcnZpY2VXb3JrZXJDb250YWluZXI+PiYmIHBlbmRpbmdBY3Rpdml0eSkKLSAgICAgICAg
ICAgIDogcHJvbWlzZShXVEZNb3ZlKHByb21pc2UpKQotICAgICAgICAgICAgLCBwZW5kaW5nQWN0
aXZpdHkoV1RGTW92ZShwZW5kaW5nQWN0aXZpdHkpKQotICAgICAgICB7IH0KLQotICAgICAgICBS
ZWY8RGVmZXJyZWRQcm9taXNlPiBwcm9taXNlOwotICAgICAgICBSZWY8UGVuZGluZ0FjdGl2aXR5
PFNlcnZpY2VXb3JrZXJDb250YWluZXI+PiBwZW5kaW5nQWN0aXZpdHk7Ci0gICAgfTsKLQotICAg
IHVpbnQ2NF90IG1fbGFzdFBlbmRpbmdQcm9taXNlSWRlbnRpZmllciB7IDAgfTsKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBzdGQ6OnVuaXF1ZV9wdHI8UGVuZGluZ1Byb21pc2U+PiBtX3BlbmRpbmdQ
cm9taXNlczsKLQogICAgIHVpbnQ2NF90IG1fbGFzdE9uZ29pbmdTZXR0bGVkUmVnaXN0cmF0aW9u
SWRlbnRpZmllciB7IDAgfTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5PiBtX29uZ29pbmdTZXR0bGVkUmVnaXN0cmF0aW9uczsKICAgICBHZW5lcmlj
RXZlbnRRdWV1ZSBtX21lc3NhZ2VRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaAppbmRleCBlYzlmZmVl
MTdjNjIwN2NhMDIxM2UzN2ZjMGFiZmFjY2JjYTBkMDY2Li4yMTNiZGZiYWE2NjFkNzlmNzJhYzFk
MTE0MzFmY2JjMGUwYzQ4ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oCkBAIC00Miw2ICs0Miw4IEBA
IHN0cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQgewogICAgIFN0cmluZyByZWZlcnJlclBv
bGljeTsKICAgICBSZXNvdXJjZUVycm9yIHNjcmlwdEVycm9yOwogCisgICAgU2VydmljZVdvcmtl
ckZldGNoUmVzdWx0IGlzb2xhdGVkQ29weSgpIGNvbnN0IHsgcmV0dXJuIHsgam9iRGF0YUlkZW50
aWZpZXIsIHJlZ2lzdHJhdGlvbktleS5pc29sYXRlZENvcHkoKSwgc2NyaXB0Lmlzb2xhdGVkQ29w
eSgpLCBjb250ZW50U2VjdXJpdHlQb2xpY3kuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyUG9saWN5
Lmlzb2xhdGVkQ29weSgpLCBzY3JpcHRFcnJvci5pc29sYXRlZENvcHkoKSB9OyB9CisKICAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmRiNWM4ZTI3Yzg4MDM2NTMwOTg4ZDU0YTY2M2VjNGNkNzdjYTk0YWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRDb25u
ZWN0aW9uLmNwcApAQCAtMCwwICsxLDIxMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaCIKKworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlckpv
YkRhdGEuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgiCisjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUu
aCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitX
b3JrZXJTV0NsaWVudENvbm5lY3Rpb246OldvcmtlclNXQ2xpZW50Q29ubmVjdGlvbihXb3JrZXJH
bG9iYWxTY29wZSYgc2NvcGUpCisgICAgOiBtX3Nlc3Npb25JRChzY29wZS5zZXNzaW9uSUQoKSkK
KyAgICAsIG1fdGhyZWFkKHNjb3BlLnRocmVhZCgpKQoreworfQorCitXb3JrZXJTV0NsaWVudENv
bm5lY3Rpb246On5Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24oKQoreworICAgIGF1dG8gbWF0Y2hS
ZWdpc3RyYXRpb25zID0gV1RGTW92ZShtX21hdGNoUmVnaXN0cmF0aW9uUmVxdWVzdHMpOworICAg
IGZvciAoYXV0byYgY2FsbGJhY2sgOiBtYXRjaFJlZ2lzdHJhdGlvbnMudmFsdWVzKCkpCisgICAg
ICAgIGNhbGxiYWNrKHsgfSk7CisKKyAgICBhdXRvIGdldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0cyA9
IFdURk1vdmUobV9nZXRSZWdpc3RyYXRpb25zUmVxdWVzdHMpOworICAgIGZvciAoYXV0byYgY2Fs
bGJhY2sgOiBnZXRSZWdpc3RyYXRpb25zUmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAgIGNhbGxi
YWNrKHsgfSk7CisKKyAgICBhdXRvIHdoZW5SZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzID0gV1RG
TW92ZShtX3doZW5SZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzKTsKKyAgICBmb3IgKGF1dG8mIGNh
bGxiYWNrIDogd2hlblJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHMudmFsdWVzKCkpCisgICAgICAg
IGNhbGxiYWNrKHsgfSk7Cit9CisKK3ZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjptYXRj
aFJlZ2lzdHJhdGlvbihTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYg
Y2xpZW50VVJMLCBSZWdpc3RyYXRpb25DYWxsYmFjayYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2
NF90IHJlcXVlc3RJZGVudGlmaWVyID0gKyttX2xhc3RSZXF1ZXN0SWRlbnRpZmllcjsKKyAgICBt
X21hdGNoUmVnaXN0cmF0aW9uUmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlmaWVyLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Np
b25JRCwgdGhyZWFkID0gbV90aHJlYWQuY29weVJlZigpLCByZXF1ZXN0SWRlbnRpZmllciwgdG9w
T3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodG9wT3JpZ2luKSksIGNsaWVudFVSTCA9
IGNyb3NzVGhyZWFkQ29weShjbGllbnRVUkwpXSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBj
b25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29y
a2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAgY29ubmVjdGlvbi5t
YXRjaFJlZ2lzdHJhdGlvbihXVEZNb3ZlKHRvcE9yaWdpbiksIGNsaWVudFVSTCwgW3RocmVhZCA9
IFdURk1vdmUodGhyZWFkKSwgcmVxdWVzdElkZW50aWZpZXJdKGF1dG8mJiByZXN1bHQpIG11dGFi
bGUgeworICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtyZXF1
ZXN0SWRlbnRpZmllciwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpXSAoYXV0byYgc2NvcGUpIG11
dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gY2FsbGJhY2sgPSBkb3duY2FzdDxXb3JrZXJH
bG9iYWxTY29wZT4oc2NvcGUpLnN3Q2xpZW50Q29ubmVjdGlvbigpLm1fbWF0Y2hSZWdpc3RyYXRp
b25SZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBjYWxs
YmFjayhXVEZNb3ZlKHJlc3VsdCkpOworICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVm
YXVsdE1vZGUoKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlclNXQ2xp
ZW50Q29ubmVjdGlvbjo6Z2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0eU9yaWdpbkRhdGEmJiB0b3BP
cmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3RyYXRpb25zQ2FsbGJhY2smJiBj
YWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciA9ICsrbV9sYXN0UmVx
dWVzdElkZW50aWZpZXI7CisgICAgbV9nZXRSZWdpc3RyYXRpb25zUmVxdWVzdHMuYWRkKHJlcXVl
c3RJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgdGhyZWFkID0gbV90aHJlYWQuY29weVJlZigpLCBy
ZXF1ZXN0SWRlbnRpZmllciwgdG9wT3JpZ2luID0gY3Jvc3NUaHJlYWRDb3B5KFdURk1vdmUodG9w
T3JpZ2luKSksIGNsaWVudFVSTCA9IGNyb3NzVGhyZWFkQ29weShjbGllbnRVUkwpXSgpIG11dGFi
bGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpz
aW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsK
KyAgICAgICAgY29ubmVjdGlvbi5nZXRSZWdpc3RyYXRpb25zKFdURk1vdmUodG9wT3JpZ2luKSwg
Y2xpZW50VVJMLCBbdGhyZWFkID0gV1RGTW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0o
YXV0byYmIGRhdGEpIG11dGFibGUgeworICAgICAgICAgICAgdGhyZWFkLT5ydW5Mb29wKCkucG9z
dFRhc2tGb3JNb2RlKFtyZXF1ZXN0SWRlbnRpZmllciwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShX
VEZNb3ZlKGRhdGEpKV0gKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBh
dXRvIGNhbGxiYWNrID0gZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5zd0NsaWVu
dENvbm5lY3Rpb24oKS5tX2dldFJlZ2lzdHJhdGlvbnNSZXF1ZXN0cy50YWtlKHJlcXVlc3RJZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKGRhdGEpKTsKKyAgICAg
ICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAg
ICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3RyYXRp
b25SZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBj
bGllbnRVUkwsIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNrJiYgY2FsbGJhY2spCit7Cisg
ICAgdWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIgPSArK21fbGFzdFJlcXVlc3RJZGVudGlmaWVy
OworICAgIG1fd2hlblJlZ2lzdHJhdGlvblJlYWR5UmVxdWVzdHMuYWRkKHJlcXVlc3RJZGVudGlm
aWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9u
SUQgPSBtX3Nlc3Npb25JRCwgdGhyZWFkID0gbV90aHJlYWQuY29weVJlZigpLCByZXF1ZXN0SWRl
bnRpZmllciwgdG9wT3JpZ2luID0gdG9wT3JpZ2luLmlzb2xhdGVkQ29weSgpLCBjbGllbnRVUkwg
PSBjcm9zc1RocmVhZENvcHkoY2xpZW50VVJMKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYg
Y29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdv
cmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKHNlc3Npb25JRCk7CisgICAgICAgIGNvbm5lY3Rpb24u
d2hlblJlZ2lzdHJhdGlvblJlYWR5KHRvcE9yaWdpbiwgY2xpZW50VVJMLCBbdGhyZWFkID0gV1RG
TW92ZSh0aHJlYWQpLCByZXF1ZXN0SWRlbnRpZmllcl0oYXV0byYmIHJlc3VsdCkgbXV0YWJsZSB7
CisgICAgICAgICAgICB0aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3JlcXVlc3RJ
ZGVudGlmaWVyLCByZXN1bHQgPSBjcm9zc1RocmVhZENvcHkoV1RGTW92ZShyZXN1bHQpKV0gKGF1
dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNhbGxiYWNrID0gZG93
bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5zd0NsaWVudENvbm5lY3Rpb24oKS5tX3do
ZW5SZWdpc3RyYXRpb25SZWFkeVJlcXVlc3RzLnRha2UocmVxdWVzdElkZW50aWZpZXIpOworICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVzdWx0KSk7CisgICAgICAgICAgICB9LCBX
b3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjphZGRTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgaWRl
bnRpZmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNz
aW9uKHNlc3Npb25JRCk7CisgICAgICAgIGNvbm5lY3Rpb24uYWRkU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkluU2VydmVyKGlkZW50aWZpZXIpOworICAgIH0pOworfQorCit2b2lkIFdvcmtlclNX
Q2xpZW50Q29ubmVjdGlvbjo6cmVtb3ZlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkluU2VydmVy
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
Y2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIGlkZW50aWZpZXJdKCkg
bXV0YWJsZSB7CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9u
SUQpOworICAgICAgICBjb25uZWN0aW9uLnJlbW92ZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25J
blNlcnZlcihpZGVudGlmaWVyKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0NsaWVudENv
bm5lY3Rpb246OmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIGtleSkKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFtzZXNzaW9u
SUQgPSBtX3Nlc3Npb25JRCwga2V5ID0gY3Jvc3NUaHJlYWRDb3B5KGtleSldKCkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmds
ZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
ICAgICBjb25uZWN0aW9uLmRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGtleSk7CisgICAg
fSk7Cit9CisKK3ZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2Vy
dmljZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmllciBkZXN0aW5hdGlvbiwgTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmJiBwb3J0cywgY29uc3QgU2VydmljZVdvcmtlck9yQ2xpZW50SWRlbnRp
ZmllciYgc291cmNlKQoreworICAgIGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSB7CisgICAg
ICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigp
LnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihtX3Nlc3Npb25JRCk7CisgICAgICAg
IGNvbm5lY3Rpb24ucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoZGVzdGluYXRpb24sIFdURk1v
dmUocG9ydHMpLCBzb3VyY2UpOworICAgIH0pOworfQorCitTV1NlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6c2VydmVyQ29ubmVjdGlvbklkZW50aWZp
ZXIoKSBjb25zdAoreworICAgIFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgaWRlbnRpZmll
cjsKKyAgICBjYWxsT25NYWluVGhyZWFkQW5kV2FpdChbJl0geworICAgICAgICBhdXRvJiBjb25u
ZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2Vy
Q29ubmVjdGlvbkZvclNlc3Npb24obV9zZXNzaW9uSUQpOworICAgICAgICBpZGVudGlmaWVyID0g
Y29ubmVjdGlvbi5zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcigpOworICAgIH0pOworICAgIHJl
dHVybiBpZGVudGlmaWVyOworfQorCitib29sIFdvcmtlclNXQ2xpZW50Q29ubmVjdGlvbjo6bWF5
SGF2ZVNlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYpIGNvbnN0Cit7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK3ZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29y
a2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgY2FsbE9uTWFp
blRocmVhZChbc2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7
CisgICAgICAgIGF1dG8mIGNvbm5lY3Rpb24gPSBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmds
ZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uRm9yU2Vzc2lvbihzZXNzaW9uSUQpOworICAg
ICAgICBjb25uZWN0aW9uLnN5bmNUZXJtaW5hdGVXb3JrZXIoaWRlbnRpZmllcik7CisgICAgfSk7
Cit9CisKK3ZvaWQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpyZWdpc3RlclNlcnZpY2VXb3Jr
ZXJDbGllbnQoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdv
cmtlckNsaWVudERhdGEmIGRhdGEsIGNvbnN0IE9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25JZGVudGlmaWVyPiYgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCit7
CisgICAgY2FsbE9uTWFpblRocmVhZChbc2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIHRvcE9yaWdp
biA9IHRvcE9yaWdpbi5pc29sYXRlZENvcHkoKSwgZGF0YSA9IGNyb3NzVGhyZWFkQ29weShkYXRh
KSwgaWRlbnRpZmllciwgdXNlckFnZW50ID0gY3Jvc3NUaHJlYWRDb3B5KHVzZXJBZ2VudCldIHsK
KyAgICAgICAgYXV0byYgY29ubmVjdGlvbiA9IFNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xl
dG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb25Gb3JTZXNzaW9uKHNlc3Npb25JRCk7CisgICAg
ICAgIGNvbm5lY3Rpb24ucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KHRvcE9yaWdpbiwgZGF0
YSwgaWRlbnRpZmllciwgdXNlckFnZW50KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJTV0Ns
aWVudENvbm5lY3Rpb246OnVucmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50KERvY3VtZW50SWRl
bnRpZmllcikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBXb3JrZXJT
V0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChb
c2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIHJlc3VsdCA9IGNyb3NzVGhyZWFkQ29weShyZXN1bHQp
XSgpIG11dGFibGUgeworICAgICAgICBhdXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclBy
b3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vz
c2lvbklEKTsKKyAgICAgICAgY29ubmVjdGlvbi5maW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVy
KHJlc3VsdCk7CisgICAgfSk7Cit9CisKK2Jvb2wgV29ya2VyU1dDbGllbnRDb25uZWN0aW9uOjpp
c1Rocm90dGxlYWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV29y
a2VyU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKK3sKK30KKwordm9p
ZCBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iKERvY3VtZW50T3JXb3JrZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBkYXRhKQor
eworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Nlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBpZGVudGlm
aWVyLCBkYXRhID0gY3Jvc3NUaHJlYWRDb3B5KGRhdGEpXSgpIG11dGFibGUgeworICAgICAgICBh
dXRvJiBjb25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2
aWNlV29ya2VyQ29ubmVjdGlvbkZvclNlc3Npb24oc2Vzc2lvbklEKTsKKyAgICAgICAgY29ubmVj
dGlvbi5zY2hlZHVsZUpvYihpZGVudGlmaWVyLCBkYXRhKTsKKyAgICB9KTsKK30KKwordm9pZCBX
b3JrZXJTV0NsaWVudENvbm5lY3Rpb246OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2Vydmlj
ZVdvcmtlckpvYkRhdGEmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGllbnRD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvV29ya2VyU1dDbGll
bnRDb25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU3ZjRmYTljMzY4Y2JhNzJhZWUwN2IzZGViMWNl
MDE2OTRjNDYzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9Xb3JrZXJTV0NsaWVudENvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNs
dWRlICJTV0NsaWVudENvbm5lY3Rpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBXb3JrZXJHbG9iYWxTY29wZTsKK2NsYXNzIFdvcmtlclRocmVhZDsKKworY2xhc3MgV29ya2Vy
U1dDbGllbnRDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFNXQ2xpZW50Q29ubmVjdGlvbiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24+IGNyZWF0ZShX
b3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV29ya2VyU1dD
bGllbnRDb25uZWN0aW9uIHsgc2NvcGUgfSk7IH0KKyAgICB+V29ya2VyU1dDbGllbnRDb25uZWN0
aW9uKCk7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgV29ya2VyU1dDbGllbnRDb25uZWN0aW9u
KFdvcmtlckdsb2JhbFNjb3BlJik7CisKKyAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKFNlY3Vy
aXR5T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFJlZ2lzdHJh
dGlvbkNhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhTZWN1cml0
eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBHZXRSZWdpc3Ry
YXRpb25zQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCB3aGVuUmVnaXN0cmF0aW9uUmVhZHko
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJM
LCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIGFkZFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JblNlcnZlcihTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcikgZmluYWw7CisgICAgdm9pZCByZW1vdmVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uSW5TZXJ2ZXIoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblByb21pc2UoY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VX
b3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgZGVzdGluYXRpb24sIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJPckNsaWVudElkZW50aWZpZXImIHNvdXJj
ZSkgZmluYWw7CisgICAgU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllcigpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgbWF5SGF2ZVNlcnZpY2VXb3Jr
ZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYpIGNvbnN0IGZp
bmFsOworICAgIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CisgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoY29uc3QgU2Vj
dXJpdHlPcmlnaW4mIHRvcE9yaWdpbiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudERhdGEmLCBj
b25zdCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcj4mLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCkgZmluYWw7CisgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdv
cmtlckNsaWVudChEb2N1bWVudElkZW50aWZpZXIpIGZpbmFsOworICAgIHZvaWQgZmluaXNoRmV0
Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKSBmaW5h
bDsKKyAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCB1cGRh
dGVUaHJvdHRsZVN0YXRlKCkgZmluYWw7CisgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CisgICAgdm9pZCBzY2hlZHVsZUpvYihE
b2N1bWVudE9yV29ya2VySWRlbnRpZmllciwgY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKSBm
aW5hbDsKKworICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOworICAgIFJlZjxXb3JrZXJU
aHJlYWQ+IG1fdGhyZWFkOworCisgICAgdWludDY0X3QgbV9sYXN0UmVxdWVzdElkZW50aWZpZXIg
eyAwIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmF0aW9uQ2FsbGJhY2s+IG1fbWF0
Y2hSZWdpc3RyYXRpb25SZXF1ZXN0czsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBHZXRSZWdpc3Ry
YXRpb25zQ2FsbGJhY2s+IG1fZ2V0UmVnaXN0cmF0aW9uc1JlcXVlc3RzOworICAgIEhhc2hNYXA8
dWludDY0X3QsIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxiYWNrPiBtX3doZW5SZWdpc3RyYXRp
b25SZWFkeVJlcXVlc3RzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggOTY1YWRh
ZDQzYTc1MzQwNDFkMzQxMmI2N2M4MDFiY2I1OGYzYWZjZS4uZTc1ZWVmYWQxNTQ3M2E3MGFjZWRi
YTgyNjMzYjA1NDQ1MDFhMjJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCkBAIC0xOTAsMTEgKzE5
MCwxMSBAQCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cnVuT3JEZWxheVRhc2tGb3JJbXBv
cnQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzawogICAgIGluaXRpYWxpemVDb25uZWN0aW9u
SWZOZWVkZWQoKTsKIH0KIAotdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OndoZW5SZWdpc3Ry
YXRpb25SZWFkeShjb25zdCBTZWN1cml0eU9yaWdpbiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNs
aWVudFVSTCwgV2hlblJlZ2lzdHJhdGlvblJlYWR5Q2FsbGJhY2smJiBjYWxsYmFjaykKK3ZvaWQg
V2ViU1dDbGllbnRDb25uZWN0aW9uOjp3aGVuUmVnaXN0cmF0aW9uUmVhZHkoY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBXaGVuUmVnaXN0
cmF0aW9uUmVhZHlDYWxsYmFjayYmIGNhbGxiYWNrKQogewogICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSArK21fcHJldmlvdXNDYWxsYmFja0lkZW50aWZpZXI7CiAgICAgbV9vbmdvaW5nUmVnaXN0
cmF0aW9uUmVhZHlUYXNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOwotICAg
IGVuc3VyZUNvbm5lY3Rpb25BbmRTZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246
OldoZW5SZWdpc3RyYXRpb25SZWFkeShjYWxsYmFja0lELCB0b3BPcmlnaW4uZGF0YSgpLCBjbGll
bnRVUkwpKTsKKyAgICBlbnN1cmVDb25uZWN0aW9uQW5kU2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpXaGVuUmVnaXN0cmF0aW9uUmVhZHkoY2FsbGJhY2tJRCwgdG9wT3JpZ2lu
LCBjbGllbnRVUkwpKTsKIH0KIAogdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnJlZ2lzdHJh
dGlvblJlYWR5KHVpbnQ2NF90IGNhbGxiYWNrSUQsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdp
c3RyYXRpb25EYXRhJiYgcmVnaXN0cmF0aW9uRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNmRl
YmQ4YWZmMTcwZDU0OGNhMGI0ODM3MzI3MWM0ZWZiNDc3MWVjMS4uM2FmNDk1ZGNhOTQ0ZGVkYzkx
ZjU0M2NiZGQ2MTMxYjcwMzllYjkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTg1LDcgKzg1LDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIG1hdGNoUmVnaXN0cmF0aW9uKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIHRvcE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFJlZ2lzdHJhdGlv
bkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkTWF0Y2hSZWdpc3RyYXRpb24odWludDY0
X3QgbWF0Y2hSZXF1ZXN0SWRlbnRpZmllciwgT3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGE+JiYpOwogICAgIHZvaWQgZGlkR2V0UmVnaXN0cmF0aW9ucyh1aW50
NjRfdCBtYXRjaFJlcXVlc3RJZGVudGlmaWVyLCBWZWN0b3I8V2ViQ29yZTo6U2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbkRhdGE+JiYpOwotICAgIHZvaWQgd2hlblJlZ2lzdHJhdGlvblJlYWR5KGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50
VVJMLCBXaGVuUmVnaXN0cmF0aW9uUmVhZHlDYWxsYmFjayYmKSBmaW5hbDsKKyAgICB2b2lkIHdo
ZW5SZWdpc3RyYXRpb25SZWFkeShjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHRv
cE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIFdoZW5SZWdpc3RyYXRpb25SZWFkeUNhbGxi
YWNrJiYpIGZpbmFsOwogICAgIHZvaWQgcmVnaXN0cmF0aW9uUmVhZHkodWludDY0X3QgY2FsbGJh
Y2tJRCwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJik7CiAKICAgICB2
b2lkIGdldFJlZ2lzdHJhdGlvbnMoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3Jp
Z2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrJiYpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggYWVhNWU1OGVlZTcyNDZjZTYx
YWRiMWE1ZjBiNjIwYzY1ODBkNDg0Ny4uZDY4Mzg0YjYyZmZiMTQxNWE2MDk2NDc0N2E2MTZiZTMy
MTMwNTYxZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTktMDktMDQgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAg
IEludHJvZHVjZSBXb3JrZXJTV0NsaWVudENvbm5lY3Rpb24gdG8gbWFrZSBTV0NsaWVudENvbm5l
Y3Rpb24gbW9uby10aHJlYWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMTQzMAorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4u
CisKKyAgICAgICAgUmVtb3ZlIGluc2VydGVkIGlmcmFtZXMgdG8gbWFrZSB0ZXN0IG91dHB1dHMg
bW9yZSBzdGFibGUuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL2FjdGl2YXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvYWN0
aXZhdGlvbi5odHRwcy5odG1sOgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXIvZGV0YWNoZWQtY29udGV4dC5odHRwcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci9kZXRhY2hlZC1jb250ZXh0Lmh0dHBzLmh0bWw6CisKIDIwMTktMDktMDQgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBNYWtlIFByb21p
c2UgaW1wbGVtZW50YXRpb24gZmFzdGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9h
Y3RpdmF0aW9uLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2FjdGl2YXRp
b24uaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDU1ZDc4NGI5OWZiZDJhNDc5YTQ2ZTBiYzJkOTdm
NjlhMGZlOTJhNmUuLjczMzRkNmI3YTdhYzQ0ZGExMTI4ZGY1ZDk0ZmY5ODU3MmU2MzI4NzggMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2FjdGl2YXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2FjdGl2YXRpb24uaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0xLDUgKzEsNCBAQAogCi0KIFBBU1MgbG9zcyBvZiBjb250cm9sbGVlcyB0cmlnZ2VycyBhY3Rp
dmF0aW9uIAogUEFTUyBmaW5pc2hpbmcgYSByZXF1ZXN0IHRyaWdnZXJzIGFjdGl2YXRpb24gCiBQ
QVNTIHNraXBXYWl0aW5nIGJ5cGFzc2VzIG5vIGNvbnRyb2xsZWUgcmVxdWlyZW1lbnQgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9hY3RpdmF0aW9uLmh0dHBzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci9hY3RpdmF0aW9uLmh0dHBzLmh0bWwKaW5kZXggNTc1NTc1OGU1NzE2ZGJjNjA4
ZTdlNzczYmY5YjgzYWIzZjJmN2U5MS4uMDA3ZWNhYWQ3NmM5NTkzNWRkNTc0NzBjNjYwNTc1MzA1
ZGM2YmFlMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvYWN0aXZhdGlvbi5odHRwcy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2FjdGl2YXRpb24uaHR0cHMuaHRtbApAQCAtMTEz
LDEwICsxMTMsMTIgQEAgcHJvbWlzZV90ZXN0KHQgPT4gewogICAgIHZhciBzY29wZSA9ICdyZXNv
dXJjZXMvc2tpcC13YWl0aW5nJzsKICAgICB2YXIgd29ya2VyX3VybCA9ICdyZXNvdXJjZXMvbWlu
dC1uZXctd29ya2VyLnB5P3NraXAtd2FpdGluZyc7CiAgICAgdmFyIHJlZ2lzdHJhdGlvbjsKKyAg
ICB2YXIgaWZyYW1lOwogICAgIHZhciBuZXdfd29ya2VyOwogICAgIHJldHVybiBzZXR1cF9hY3Rp
dmF0aW9uX3Rlc3QodCwgc2NvcGUsIHdvcmtlcl91cmwpCiAgICAgICAudGhlbihyZXN1bHQgPT4g
ewogICAgICAgICAgIHJlZ2lzdHJhdGlvbiA9IHJlc3VsdC5yZWdpc3RyYXRpb247CisgICAgICAg
ICAgaWZyYW1lID0gcmVzdWx0LmlmcmFtZTsKICAgICAgICAgICAvLyBGaW5pc2ggdGhlIHJlcXVl
c3QuIFRoZSBpZnJhbWUgZG9lcyBub3QgbmVlZCB0byBiZSByZW1vdmVkIGJlY2F1c2UKICAgICAg
ICAgICAvLyBza2lwV2FpdGluZygpIHdhcyBjYWxsZWQuCiAgICAgICAgICAgbmV3X3dvcmtlciA9
IHJlZ2lzdHJhdGlvbi53YWl0aW5nOwpAQCAtMTI2LDYgKzEyOCw4IEBAIHByb21pc2VfdGVzdCh0
ID0+IHsKICAgICAgICAgfSkKICAgICAgIC50aGVuKCgpID0+IHsKICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHJlZ2lzdHJhdGlvbi5hY3RpdmUsIG5ld193b3JrZXIpOworICAgICAgICAgIC8vIFJl
bW92ZSB0aGUgaWZyYW1lLgorICAgICAgICAgIGlmcmFtZS5yZW1vdmUoKTsKICAgICAgICAgfSk7
CiAgIH0sICdza2lwV2FpdGluZyBieXBhc3NlcyBubyBjb250cm9sbGVlIHJlcXVpcmVtZW50Jyk7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2RldGFjaGVkLWNvbnRleHQuaHR0cHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZGV0YWNoZWQtY29udGV4dC5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggZDgwM2Y5ZmQ5MjlmNzUwNmM3NTY4NjgwNjYwYjViZGE3YWZhZTMz
ZS4uZjU4YjYwYTgzNzI2MmQzNzc2ODQ0MjQwZDAxODkzOTQ0ZjNkMjI2MCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXIvZGV0YWNoZWQtY29udGV4dC5odHRwcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXIvZGV0YWNoZWQtY29udGV4dC5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTEsNSArMSw0IEBACiAKLQogUEFTUyBhY2Nlc3NpbmcgYSBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uIGZyb20gYSByZW1vdmVkIGlmcmFtZSAKIFBBU1MgYWNjZXNzaW5nIGEgU2VydmljZVdv
cmtlciBvYmplY3QgZnJvbSBhIHJlbW92ZWQgaWZyYW1lIAogUEFTUyBhY2Nlc3NpbmcgbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIgb24gYSBkZXRhY2hlZCBpZnJhbWUgCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci9kZXRhY2hlZC1jb250ZXh0Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9kZXRhY2hlZC1jb250ZXh0Lmh0dHBzLmh0bWwKaW5kZXggNWFlNGRlOGNjODFlMGMzNjUw
ZWFhZjZiNTY1NjE5M2Q0YTJjZjhiMC4uZjk2MzcwZDIwMTAwMGQyMGE5NTAxNjZkY2NmMmNhZjcy
YmQ0NzNjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvZGV0YWNoZWQtY29udGV4dC5o
dHRwcy5odG1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL2RldGFjaGVkLWNvbnRleHQuaHR0cHMu
aHRtbApAQCAtNTksNiArNTksNyBAQCBwcm9taXNlX3Rlc3QodCA9PiB7CiAgICAgICAudGhlbigo
KSA9PiB7CiAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhyZXNvbHZlZENvdW50LCAwLAogICAgICAg
ICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgY2FsbGVkIG9uIGEgZGV0YWNoZWQgcmVnaXN0cmF0
aW9uIHNob3VsZCBub3QgcmVzb2x2ZScpOworICAgICAgICAgIGZyYW1lLnJlbW92ZSgpOwogICAg
ICAgICB9KQogICB9LCAnYWNjZXNzaW5nIGEgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiBmcm9t
IGEgcmVtb3ZlZCBpZnJhbWUnKTsKIApAQCAtMTAyLDYgKzEwMyw3IEBAIHByb21pc2VfdGVzdCh0
ID0+IHsKICAgICAgICAgYXNzZXJ0X2VxdWFscygKICAgICAgICAgICAgIGdldF9uYXZpZ2F0b3Io
KS5zZXJ2aWNlV29ya2VyLAogICAgICAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cubmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIpOworICAgICAgICBpZnJhbWUucmVtb3ZlKCk7CiAgICAgICB9KTsK
ICAgfSwgJ2FjY2Vzc2luZyBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlciBvbiBhIGRldGFjaGVkIGlm
cmFtZScpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>