<?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>176672</bug_id>
          
          <creation_ts>2017-09-10 11:55:38 -0700</creation_ts>
          <short_desc>[iOS DnD] Support DataTransfer.getData and DataTransfer.setData when dragging or dropping</short_desc>
          <delta_ts>2017-09-12 18:05:33 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>176664</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1347260</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-10 11:55:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/34353723&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347267</commentid>
    <comment_count>1</comment_count>
      <attachid>320400</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-10 13:01:09 -0700</bug_when>
    <thetext>Created attachment 320400
Depends on https://webkit.org/b/176664</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347805</commentid>
    <comment_count>2</comment_count>
      <attachid>320518</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-09-11 22:11:14 -0700</bug_when>
    <thetext>Created attachment 320518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348139</commentid>
    <comment_count>3</comment_count>
      <attachid>320518</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-12 18:05:31 -0700</bug_when>
    <thetext>Comment on attachment 320518
Patch

Clearing flags on attachment: 320518

Committed r221952: &lt;http://trac.webkit.org/changeset/221952&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348140</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-12 18:05:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320400</attachid>
            <date>2017-09-10 13:01:09 -0700</date>
            <delta_ts>2017-09-11 22:11:12 -0700</delta_ts>
            <desc>Depends on https://webkit.org/b/176664</desc>
            <filename>bug-176672-20170910130108.patch</filename>
            <type>text/plain</type>
            <size>33729</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDhjMjgwNTNkNzY5Y2Jl
YTE3NjM2YjJkZGZjNTBiMGVhODUwNzY2My4uMjAzZGE4ZTUwZDJhYzQ4MDZiZmEzNDYyN2U2ZjI2
MjE4MzYyNDIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxNy0wOS0xMSAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TIERuRF0g
U3VwcG9ydCBEYXRhVHJhbnNmZXIuZ2V0RGF0YSBhbmQgRGF0YVRyYW5zZmVyLnNldERhdGEgd2hl
biBkcmFnZ2luZyBvciBkcm9wcGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc2NjcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDM1MzcyMz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlcyBz
ZXZlcmFsIHR3ZWFrcyB0byBzdXBwb3J0IERhdGFUcmFuc2Zlci5nZXREYXRhIGFuZCBEYXRhVHJh
bnNmZXIuc2V0RGF0YSB3aGVuIGRyYWdnaW5nIGFuZCBkcm9wcGluZyBvbiBpT1MuCisgICAgICAg
IFNlZSBwZXItbWV0aG9kIGNoYW5nZXMgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4gVGhpcyBwYXRj
aCBhbHNvIHJlbmFtZXMgc29tZSBvbGQgdmFyaWFibGUgYW5kIHByb3BlcnR5IG5hbWVzCisgICAg
ICAgIGFsb25nIHRoZSB3YXksIHNvIHRoZXkgbm8gbG9uZ2VyIHJlZmVyZW5jZSAiZGF0YSBpbnRl
cmFjdGlvbiIsIGFuZCBpbnN0ZWFkIHJlZmVyIHRvIHRoZSBmZWF0dXJlIGJ5IGl0cyBwb3N0LVdX
REMKKyAgICAgICAgbmFtZS4KKworICAgICAgICBOZXcgdGVzdDogRGF0YUludGVyYWN0aW9uVGVz
dHMuRXh0ZXJuYWxTb3VyY2VJbmxpbmVUZXh0VG9GaWxlSW5wdXQKKyAgICAgICAgTW9kaWZpZWQ6
IERhdGFJbnRlcmFjdGlvblRlc3RzLkNhblN0YXJ0RHJhZ09uRGl2V2l0aERyYWdnYWJsZUF0dHJp
YnV0ZQorICAgICAgICAgICAgICAgICAgRGF0YUludGVyYWN0aW9uVGVzdHMuU2luZ2xlUGxhaW5U
ZXh0VVJMVHlwZUlkZW50aWZpZXJzCisgICAgICAgICAgICAgICAgICBEYXRhSW50ZXJhY3Rpb25U
ZXN0cy5TaW5nbGVQbGFpblRleHRXb3JkVHlwZUlkZW50aWZpZXJzCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5cGVGcm9tSFRNTENsaXBi
b2FyZFR5cGUpOgorCisgICAgICAgIEluIGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSwg
bWFwIHRoZSAidGV4dC9wbGFpbiIgTUlNRSB0eXBlIHRvIHRoZSAicHVibGljLnBsYWluLXRleHQi
IFVUSS4gUHJldmlvdXNseSwKKyAgICAgICAgdGhpcyBjb3JyZXNwb25kZWQgdG8gInB1YmxpYy50
ZXh0Iiwgd2hpY2ggaXMgaW5jb3JyZWN0LCBzaW5jZSAicHVibGljLnRleHQiIGFsc28gaW5jbHVk
ZXMgbm9uLXBsYWluLXRleHQgdHlwZXMKKyAgICAgICAgc3VjaCBhcyAicHVibGljLmh0bWwiLCB0
aGVyZWJ5IGNvbmZ1c2luZyBOU0l0ZW1Qcm92aWRlcnMuIEltcG9ydGFudGx5LCB0aGlzIG1ha2Vz
IGl0IHNvIHRoYXQgcGxhaW4gdGV4dCBzdHJpbmdzCisgICAgICAgIHdyaXR0ZW4gdmlhIERhdGFU
cmFuc2Zlci5zZXREYXRhKCkgY2FuIGFjdHVhbGx5IGJlIHJlYWQgYmFjayBhcyBhIGNvY29hIHZh
bHVlLCBzaW5jZSAicHVibGljLnBsYWluLXRleHQiIGlzIG9uZQorICAgICAgICBvZiB0aGUgVVRJ
cyBpbiArW05TU3RyaW5nIHJlYWRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyXS4K
KworICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTdHJpbmcpOgorCisgICAgICAg
IEluc3RlYWQgb2Ygd3JpdGluZyB7IHR5cGUgOiBkYXRhIH0gdG8gdGhlIHBhc3RlYm9hcmQsIHdy
aXRlIHsgY29jb2FUeXBlIDogZGF0YSB9LiBJdCBhcHBlYXJzIHRoYXQgdGhpcyB3YXMKKyAgICAg
ICAgY2hhbmdlZCB1bmludGVudGlvbmFsbHkgaW4gcjE1NjU4OCB3aGVuIHVwc3RyZWFtaW5nIHRo
ZSBpT1MgcGFzdGVib2FyZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcyBtYWRlIGFwcGFyZW50IGJ5
CisgICAgICAgIGhvdyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKCkgcmVxdWVzdHMgdGhlIGNvY29h
IFVUSSBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLCBidXQgUGFzdGVib2FyZDo6d3JpdGVT
dHJpbmcoKQorICAgICAgICBzZW5kcyB0aGUgTUlNRSB0eXBlLgorCisgICAgICAgICogcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6ZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorCisgICAgICAgIFdoZW4gd3JpdGlu
ZyBwbGFpbiB0ZXh0IG9yIGEgVVJMLCBzcGVjaWZ5IHRoYXQgdGhlIGl0ZW0gd2FudHMgaW5saW5l
IHN0eWxlIHJlcHJlc2VudGF0aW9uLiBUaGlzIHByZXZlbnRzIG9kZCBhbmQKKyAgICAgICAgdW5l
eHBlY3RlZCBiZWhhdmlvcnMgKGZvciBpbnN0YW5jZSwgYmVpbmcgYWJsZSB0byBkcmFnIHBsYWlu
IHRleHQgaW50byB0aGUgRmlsZXMgYXBwIGFzIGEgZmlsZSksIGJ1dCBpdCBhbHNvCisgICAgICAg
IG1ha2VzIGdldERhdGEoKSBub3QgYmFpbCBhbmQgcmV0dXJuIHRoZSBudWxsIHN0cmluZyBvbiBk
cm9wLCBkdWUgdG8gZm9yRmlsZURyYWcoKSBiZWluZyB0cnVlIGluCisgICAgICAgIERhdGFUcmFu
c2Zlcjo6Z2V0RGF0YSgpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xp
c3QgaW5pdF0pOgorICAgICAgICAodWlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSk6CisgICAg
ICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGl0ZW1Qcm92aWRlcl0p
OgorCisgICAgICAgIFNldCB0aGUgcHJlZmVycmVkIHByZXNlbnRhdGlvbiBzdHlsZSB3aGVuIGdl
bmVyYXRpbmcgYW4gaXRlbSBwcm92aWRlciBmcm9tIGEgcmVnaXN0cmF0aW9uIGxpc3QuCisKKyAg
ICAgICAgKCtbV2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdCBlbXB0eUxvYWRSZXN1bHRdKToKKyAg
ICAgICAgKCtbV2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdCBsb2FkUmVzdWx0V2l0aEZpbGVVUkxN
YXA6cHJlc2VudGF0aW9uU3R5bGU6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlckxvYWRS
ZXN1bHQgaW5pdFdpdGhGaWxlVVJMTWFwOnByZXNlbnRhdGlvblN0eWxlOl0pOgorICAgICAgICAo
LVtXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IGZpbGVVUkxGb3JUeXBlOl0pOgorICAgICAgICAo
LVtXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IGxvYWRlZEZpbGVVUkxzXSk6CisgICAgICAgICgt
W1dlYkl0ZW1Qcm92aWRlckxvYWRSZXN1bHQgbG9hZGVkVHlwZUlkZW50aWZpZXJzXSk6CisKKyAg
ICAgICAgSW50cm9kdWNlIFdlYkl0ZW1Qcm92aWRlckxvYWRSZXN1bHQsIGFuIG9iamVjdCB0aGF0
IGVuY2Fwc3VsYXRlcyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBjb250ZW50
cyBvZgorICAgICAgICBhbiBOU0l0ZW1Qcm92aWRlciBkcm9wcGVkIGluIHdlYiBjb250ZW50LiBQ
cmV2aW91c2x5LCBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIG1haW50YWluZWQgYW4gYXJyYXkg
b2YKKyAgICAgICAgZGljdGlvbmFyaWVzIG9mIFVUSSA9PiBmaWxlIFVSTCwgd2hlcmUgZWFjaCBk
aWN0aW9uYXJ5IHJlcHJlc2VudHMgd2hlcmUgdGhlIGRyb3BwZWQgZGF0YSBmb3IgYSBnaXZlbiBp
dGVtCisgICAgICAgIHByb3ZpZGVyIGxpdmVzLiBOb3cgdGhhdCB3ZSBhZGRpdGlvbmFsbHkgbmVl
ZCB0byByZW1lbWJlciAoZm9yIGVhY2ggaXRlbSBwcm92aWRlcikgd2hldGhlciB3ZSBzaG91bGQg
Y29uc2lkZXIKKyAgICAgICAgaXRzIGRhdGEgYXMgYSBmaWxlIHVwbG9hZCwgaXQncyBtb3JlIGhl
bHBmdWwgdG8gaGF2ZSBhIHNlcGFyYXRlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlICJsb2FkIHJl
c3VsdHMiIG9mIGEKKyAgICAgICAgZHJvcHBlZCBpdGVtIHByb3ZpZGVyLgorCisgICAgICAgICgt
W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgaW5pdF0pOgorICAgICAgICAoLVtXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOgorICAgICAgICAoLVtXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQgX3ByZUxvYWRlZERhdGFDb25mb3JtaW5nVG9UeXBlOmZvckl0ZW1Q
cm92aWRlckF0SW5kZXg6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQg
ZHJvcHBlZEZpbGVVUkxzXSk6CisKKyAgICAgICAgUmVzcGVjdCBpdGVtIHByb3ZpZGVyIGxvYWQg
cmVzdWx0cyB0aGF0IHNob3VsZCBub3QgYmUgZXhwb3NlZCBhcyBhIGZpbGUgdG8gdGhlIHBhZ2Uu
CisKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBudW1iZXJPZkZpbGVzXSk6
CisKKyAgICAgICAgUmVzcGVjdCBpdGVtIHByb3ZpZGVycyB3aXRoIFVJUHJlZmVycmVkUHJlc2Vu
dGF0aW9uU3R5bGVJbmxpbmUgYnkgbm90IGNvdW50aW5nIHRoZW0gdG93YXJkcyB0aGUgbnVtYmVy
IG9mIGZpbGVzLgorCisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgZG9BZnRl
ckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6c3luY2hyb25vdXNUaW1lb3V0Ol0p
OgorCisgICAgICAgIEFkanVzdCBmb3IgdGhlIHRyYW5zaXRpb24gZnJvbSBhbiBhcnJheSBvZiBk
aWN0aW9uYXJpZXMgcmVwcmVzZW50aW5nIGxvYWRlZCBpdGVtIHByb3ZpZGVycyB0byBhbiBhcnJh
eSBvZgorICAgICAgICBXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0cy4KKworICAgICAgICAoLVtX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGZpbGVVUkxzRm9yRGF0YUludGVyYWN0aW9uXSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMgY29uc3QpOgorCisgICAgICAgIERyYWdE
YXRhOjpjb250YWluc0ZpbGVzIHByZXZpb3VzbHkgb25seSBjb25zaWRlcmVkIHdoZXRoZXIgb3Ig
bm90IHBhcnRpY3VsYXIgVVRJcyBhcHBlYXIgaW4gdGhlIHBhc3RlYm9hcmQuIEluCisgICAgICAg
IHRoZSBjYXNlIG9mIE1hYywgdGhpcyBpcyBOU0ZpbGVzUHJvbWlzZVBib2FyZFR5cGUgYW5kIE5T
RmlsZW5hbWVzUGJvYXJkVHlwZSwgYnV0IGluIHRoZSBjYXNlIG9mIGlPUywgdGhpcyBpcyBhCisg
ICAgICAgIG11Y2ggYnJvYWRlciBjYXRlZ29yeSAoYW55dGhpbmcgY29uZm9ybWluZyB0byAicHVi
bGljLmNvbnRlbnQiKSwgc2luY2UgZmlsZXMgYXJlIG5vdCBleHBvc2VkIGV4cGxpY2l0bHkgYXMK
KyAgICAgICAgInByb21pc2UiIG9yICJmaWxlIiB0eXBlcyBpbiB0aGUgbGlzdCBvZiByZWdpc3Rl
cmVkIFVUSXMuIFRoaXMgY2F1c2VkIHVzIHRvIGFsd2F5cyBiYWlsIGluCisgICAgICAgIERhdGFU
cmFuc2Zlci5nZXREYXRhKCkgb24gZHJvcCBvbiBpT1MsIHNpbmNlIHdlIHdpbGwgYWx3YXlzIGJl
bGlldmUgdGhlcmUncyBhIGZpbGUgb24gdGhlIHBhc3RlYm9hcmQgaWYgdGhlcmUncworICAgICAg
ICBhbnl0aGluZyBjb25mb3JtaW5nIHRvICJwdWJsaWMuY29udGVudCIgYXQgYWxsLgorCisgICAg
ICAgIFRvIGZpeCB0aGlzIGFuZCBzaW1wbGlmeSB0aGUgY29kZSBhdCB0aGUgc2FtZSB0aW1lLCB3
ZSBzaW1wbHkgcmVwbGFjZSB0aGUgY3VycmVudGx5IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAg
IERyYWdEYXRhOjpjb250YWluc0ZpbGVzIHRvIHJldHVybiB0cnVlIGlmZiB0aGUgbnVtYmVyIG9m
IGZpbGVzIGlzIG5vbnplcm8uIE9uIE1hYywgRHJhZ0RhdGE6Om51bWJlck9mRmlsZXMKKyAgICAg
ICAgY2hlY2tzIHRoZSBzYW1lIFVUSXMgYXMgRHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMgKE5TRmls
ZXNQcm9taXNlUGJvYXJkVHlwZSBhbmQgTlNGaWxlbmFtZXNQYm9hcmRUeXBlKSwgYnV0CisgICAg
ICAgIGFkZGl0aW9uYWxseSBjb3VudHMgdGhlIG51bWJlciBvZiBmaWxlIFVSTHMgY29ycmVzcG9u
ZGluZyB0byB0aG9zZSBVVElzLgorCisgICAgICAgIE9uIGlPUywgdGhlIGltcGxlbWVudGF0aW9u
IG9mIG51bWJlck9mRmlsZXMgaXMgbmV3IHRvIGlPUyAxMSwgYW5kIHJlbGV2YW50IG9ubHkgaW4g
dGhlIGRyYWcgYW5kIGRyb3AgZmxvdy4KKyAgICAgICAgUHJldmlvdXNseSwgd2Ugd291bGQgY29u
c2lkZXIgYW4gaXRlbSBwcm92aWRlciB0byAiY29udGFpbiIgYSBmaWxlIGlmIGl0IGhhZCBhIFVU
SSBjb25mb3JtaW5nIHRvIG9uZSBvZiB0aGUgVVRJcworICAgICAgICBhY2NlcHRhYmxlIGZvciBk
cmFnIGFuZCBkcm9wIChhdCB0aGUgdGltZSBvZiB3cml0aW5nLCB0aGVzZSBhcmUgWyJwdWJsaWMu
Y29udGVudCIsICJwdWJsaWMuemlwIiwKKyAgICAgICAgInB1YmxpYy5mb2xkZXIiXSkuIFdpdGgg
dGhpcyBwYXRjaCwgYW55dGhpbmcgY29uZm9ybWluZyB0byB0aGVzZSBVVElzIHdpbGwgY29udGlu
dWUgdG8gYmUgcmVwcmVzZW50ZWQgYXMgZmlsZXMsCisgICAgICAgIGJ1dCBpbXBvcnRhbnRseSwg
aWYgYW4gaXRlbSBwcm92aWRlciBpbmRpY2F0ZXMgdGhhdCBpdCBzaG91bGQgYmUgcmVwcmVzZW50
ZWQgaW5saW5lIChpLmUuIGEgcGxhaW4gdGV4dAorICAgICAgICBzZWxlY3Rpb24pLCB0aGVuIHdl
IGRvbid0IGNvbnNpZGVyIHRoYXQgaXRlbSBwcm92aWRlciBhcyB2ZW5kaW5nIGEgZmlsZS4gVGhp
cyBhbGxvd3MgdXMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgorICAgICAgICBjYXNlcyB3aGVyZSB3
ZSBhcmUgZHJhZ2dpbmcgYSBwbGFpbiB0ZXh0IHNlbGVjdGlvbiBvdmVyIGEgZmlsZSBpbnB1dCwg
YW5kIHdoZW4gd2UgYXJlIGRyYWdnaW5nIGEgcGxhaW4gdGV4dCBmaWxlLgorICAgICAgICBJbiBi
b3RoIGNhc2VzLCAicHVibGljLnBsYWluLXRleHQiIGlzIG9mZmVyZWQgYXMgYSByZWdpc3RlcmVk
IFVUSSwgYnV0IGluIHRoZSBmb3JtZXIsIHRoZSBpdGVtIHByb3ZpZGVyIHNob3VsZAorICAgICAg
ICBpbmRpY2F0ZSB0aGF0IGlubGluZSBwcmVzZW50YXRpb24gc3R5bGUgaXMgcHJlZmVycmVkLiBS
ZWZlciB0byA8cmRhcjovL3Byb2JsZW0vMzIyMDI1NDI+IGZvciBtb3JlIGRldGFpbHMuCisKIDIw
MTctMDktMDcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0RpcmVjdG9yeSBVcGxvYWRdIEV4dGVuZCBkcmFnIGFuZCBkcm9wIHN1cHBvcnQgdG8gaU9T
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgK
aW5kZXggOWE4OGU3OGU0OWU5NTBmMTJlZjEzMjcwZGYyNDEzZjc0MTQ0MTEwZC4uYWNjY2ZiMDM5
M2ZkODQ2YzY1YTI3N2ZkODBhN2E1MGE0MTg5OWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaApAQCAtNTUsNyArNTUsNyBAQCBOU19B
U1NVTUVfTk9OTlVMTF9CRUdJTgogLSAodm9pZClzZXRJdGVtczooTlNBcnJheTxOU0RpY3Rpb25h
cnkgKj4gKilpdGVtczsKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNC
eUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXg7CiBAcHJvcGVydHkgKHJl
YWRvbmx5LCBub25hdG9taWMpIE5TSW50ZWdlciBudW1iZXJPZkZpbGVzOwotQHByb3BlcnR5IChy
ZWFkb25seSwgbm9uYXRvbWljKSBOU0FycmF5PE5TVVJMICo+ICpmaWxlVVJMc0ZvckRhdGFJbnRl
cmFjdGlvbjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAq
PiAqZHJvcHBlZEZpbGVVUkxzOwogLSAodm9pZCl1cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmll
cnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBlczsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCA3MzE3ODJjY2M4NjI3ODNkNGYy
ZDkyMWViZGM1OWIxNmE2YmQ5MjFiLi5hZTRlMmFiNzVhZmY1NDY1YTU3MDg5YmU3YWY1YmU3NWM3
MzZiOTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQpAQCAtMzI2LDcgKzMyNiw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGNvY29hVHlw
ZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgLy8gSWdu
b3JlIGFueSB0cmFpbGluZyBjaGFyc2V0IC0gSlMgc3RyaW5ncyBhcmUgVW5pY29kZSwgd2hpY2gg
ZW5jYXBzdWxhdGVzIHRoZSBjaGFyc2V0IGlzc3VlLgogICAgIGlmICh0eXBlID09ICJ0ZXh0L3Bs
YWluIikKLSAgICAgICAgcmV0dXJuIChOU1N0cmluZyAqKWtVVFR5cGVUZXh0OworICAgICAgICBy
ZXR1cm4gKE5TU3RyaW5nICopa1VUVHlwZVBsYWluVGV4dDsKIAogICAgIC8vIFNwZWNpYWwgY2Fz
ZSBiZWNhdXNlIFVUSSBkb2Vzbid0IHdvcmsgd2l0aCBDb2NvYSdzIFVSTCB0eXBlLgogICAgIGlm
ICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0IikKQEAgLTQxOCw3ICs0MTgsNyBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRh
KQogICAgIGlmICghY29jb2FUeXBlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPndyaXRlVG9QYXN0ZWJvYXJkKHR5cGUs
IGRhdGEsIG1fcGFzdGVib2FyZE5hbWUpOworICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0
ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3RlYm9hcmQoY29jb2FUeXBlLmdldCgpLCBkYXRh
LCBtX3Bhc3RlYm9hcmROYW1lKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlw
ZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFz
dGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3Rl
Ym9hcmRJT1MubW0KaW5kZXggOTFmNmM5YTkxZjQ3MmNkZDBiNTc4ZDFlNTFjYWMyYzAzZjRiNzYz
YS4uYWI5ZjFhMDA2MDZmNzUwNWUwOWYzMmI4NWNlMDMyMjVkNDMzYjYxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBA
IC05NywxMSArOTcsMTEgQEAgaW50IFBsYXRmb3JtUGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygp
CiAKIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFzdGVib2FyZDo6ZmlsZW5hbWVzRm9yRGF0YUlu
dGVyYWN0aW9uKCkKIHsKLSAgICBpZiAoIVttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihmaWxlVVJMc0ZvckRhdGFJbnRlcmFjdGlvbildKQorICAgIGlmICghW21fcGFz
dGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGRyb3BwZWRGaWxlVVJMcyldKQog
ICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gZmlsZW5hbWVzOwotICAg
IGZvciAoTlNVUkwgKmZpbGVVUkwgaW4gW21fcGFzdGVib2FyZCBmaWxlVVJMc0ZvckRhdGFJbnRl
cmFjdGlvbl0pCisgICAgZm9yIChOU1VSTCAqZmlsZVVSTCBpbiBbbV9wYXN0ZWJvYXJkIGRyb3Bw
ZWRGaWxlVVJMc10pCiAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQoZmlsZVVSTC5wYXRoKTsKIAog
ICAgIHJldHVybiBmaWxlbmFtZXM7CkBAIC0zNDQsNiArMzQ0LDcgQEAgdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKICNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAw
MDAKICAgICBhdXRvIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgPSBhZG9wdE5TKFtbV2ViSXRl
bVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgYWxsb2NdIGluaXRdKTsKKyAgICBbcmVwcmVz
ZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBOU1N0cmluZyAqcGFzdGVib2Fy
ZFR5cGVBc05TU3RyaW5nID0gcGFzdGVib2FyZFR5cGU7CiAgICAgaWYgKCF0ZXh0LmlzRW1wdHko
KSAmJiBwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcubGVuZ3RoKSB7CkBAIC0zODEsNiArMzgyLDcg
QEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVy
bCkKIHsKICNpZiBfX0lQSE9ORV9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICAg
ICBhdXRvIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0ZXIgPSBhZG9wdE5TKFtbV2ViSXRlbVByb3Zp
ZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgYWxsb2NdIGluaXRdKTsKKyAgICBbcmVwcmVzZW50YXRp
b25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQ
cmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAgICBpZiAoTlNVUkwgKm5zVVJMID0gdXJsLnVy
bCkgewogICAgICAgICBpZiAoIXVybC50aXRsZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAppbmRl
eCBiOTJhMjc0MGU1OWE1MmUzYTQwNjJmMWU1NWIxM2Q3NjZlNzkwOTk0Li4yNzVlYTQ1ZmI4NmUw
YWM0OGViOGM5ODlkMjQwNzI0NWU3M2M0MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgKQEAgLTMyLDYgKzMy
LDEyIEBACiAKIHN0cnVjdCBDR1NpemU7CiAKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdl
YlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKSB7CisgICAgV2ViUHJlZmVycmVkUHJlc2VudGF0
aW9uU3R5bGVVbnNwZWNpZmllZCwKKyAgICBXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlu
bGluZSwKKyAgICBXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnQKK307CisK
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIC8qISBBIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJh
dGlvbkluZm8gcmVwcmVzZW50cyBhIHNpbmdsZSBjYWxsIHRvIHJlZ2lzdGVyIHNvbWV0aGluZyB0
byBhbiBpdGVtIHByb3ZpZGVyLgpAQCAtNjQsNiArNzAsOCBAQCBXRUJDT1JFX0VYUE9SVCBAaW50
ZXJmYWNlIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IDogTlNPYmplY3QKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqc3VnZ2VzdGVkTmFtZTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVsbGFibGUpIFVJSXRlbVByb3ZpZGVyICppdGVt
UHJvdmlkZXI7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBXZWJQcmVmZXJyZWRQcmVzZW50YXRp
b25TdHlsZSBwcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTsKKwogLSAoTlNVSW50ZWdlciludW1i
ZXJPZkl0ZW1zOwogLSAobnVsbGFibGUgV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyAq
KWl0ZW1BdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4OwogLSAodm9pZCllbnVtZXJhdGVJdGVtczoo
dm9pZCheKShXZWJJdGVtUHJvdmlkZXJSZWdpc3RyYXRpb25JbmZvICppdGVtLCBOU1VJbnRlZ2Vy
IGluZGV4KSlibG9jazsKQEAgLTgxLDcgKzg5LDcgQEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFj
ZSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIDogTlNPYmplY3Q8QWJzdHJhY3RQYXN0ZWJvYXIK
IEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNJbnRlZ2VyIGNoYW5nZUNvdW50Owog
CiAvLyBUaGlzIHdpbGwgb25seSBiZSBub24tZW1wdHkgd2hlbiBhbiBvcGVyYXRpb24gaXMgYmVp
bmcgcGVyZm9ybWVkLgotQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0FycmF5PE5T
VVJMICo+ICpmaWxlVVJMc0ZvckRhdGFJbnRlcmFjdGlvbjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHks
IG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAqPiAqZHJvcHBlZEZpbGVVUkxzOwogCiBAcHJvcGVy
dHkgKHJlYWRvbmx5LCBub25hdG9taWMpIEJPT0wgaGFzUGVuZGluZ09wZXJhdGlvbjsKIC0gKHZv
aWQpaW5jcmVtZW50UGVuZGluZ09wZXJhdGlvbkNvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCA4
Mjk2NTU5ZWEzZDFhY2Q1YjIxZDk4NzdiNDA1M2Q5OTI4NDFhOWU4Li40YjljM2E1N2VhMGFhYzI4
MzY5YjE5Y2RlZTBkN2U5ZjMzOGE5M2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtMTA3LDYgKzEw
Nyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0p
IHsKICAgICAgICAgX3JlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwogICAgICAgICBfcHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZSA9IENHU2l6
ZVplcm87CisgICAgICAgIF9wcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSA9IFdlYlByZWZlcnJl
ZFByZXNlbnRhdGlvblN0eWxlVW5zcGVjaWZpZWQ7CiAgICAgfQogCiAgICAgcmV0dXJuIHNlbGY7
CkBAIC0xNDgsNiArMTQ5LDIxIEBAIC0gKHZvaWQpZW51bWVyYXRlSXRlbXM6KHZvaWQgKF4pKFdl
Ykl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gKiwgTlNVSW50ZWdlcikpCiAgICAgICAgIGJs
b2NrKFtzZWxmIGl0ZW1BdEluZGV4OmluZGV4XSwgaW5kZXgpOwogfQogCitzdGF0aWMgVUlQcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZSB1aVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKFdlYlBy
ZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlIHN0eWxlKQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsK
KyAgICBjYXNlIFdlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlVW5zcGVjaWZpZWQ6CisgICAg
ICAgIHJldHVybiBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlVW5zcGVjaWZpZWQ7CisgICAg
Y2FzZSBXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZToKKyAgICAgICAgcmV0dXJu
IFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmU7CisgICAgY2FzZSBXZWJQcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnQ6CisgICAgICAgIHJldHVybiBVSVByZWZlcnJl
ZFByZXNlbnRhdGlvblN0eWxlQXR0YWNobWVudDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIFVJUHJlZmVycmVkUHJlc2VudGF0aW9u
U3R5bGVVbnNwZWNpZmllZDsKKyAgICB9Cit9CisKIC0gKFVJSXRlbVByb3ZpZGVyICopaXRlbVBy
b3ZpZGVyCiB7CiAgICAgaWYgKCFzZWxmLm51bWJlck9mSXRlbXMpCkBAIC0xNzEsNiArMTg3LDcg
QEAgLSAoVUlJdGVtUHJvdmlkZXIgKilpdGVtUHJvdmlkZXIKICAgICB9CiAgICAgW2l0ZW1Qcm92
aWRlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TaXplOnNlbGYucHJlZmVycmVkUHJlc2VudGF0
aW9uU2l6ZV07CiAgICAgW2l0ZW1Qcm92aWRlciBzZXRTdWdnZXN0ZWROYW1lOnNlbGYuc3VnZ2Vz
dGVkTmFtZV07CisgICAgW2l0ZW1Qcm92aWRlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHls
ZTp1aVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKHNlbGYucHJlZmVycmVkUHJlc2VudGF0aW9u
U3R5bGUpXTsKICAgICByZXR1cm4gaXRlbVByb3ZpZGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKQEAg
LTE5Myw2ICsyMTAsNjAgQEAgLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogCiBAZW5kCiAKK0Bp
bnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdCA6IE5TT2JqZWN0CisKKysgKGluc3Rh
bmNldHlwZSlsb2FkUmVzdWx0V2l0aEZpbGVVUkxNYXA6KFR5cGVUb0ZpbGVVUkxNYXAgKilmaWxl
VVJMcyBwcmVzZW50YXRpb25TdHlsZTooVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSlwcmVz
ZW50YXRpb25TdHlsZTsKKysgKGluc3RhbmNldHlwZSllbXB0eUxvYWRSZXN1bHQ7CisKKy0gKE5T
VVJMICopZmlsZVVSTEZvclR5cGU6KE5TU3RyaW5nICopdHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNBcnJheTxOU1VSTCAqPiAqbG9hZGVkRmlsZVVSTHM7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmxvYWRlZFR5cGVJ
ZGVudGlmaWVyczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBjYW5CZVJl
cHJlc2VudGVkQXNGaWxlVXBsb2FkOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJJdGVt
UHJvdmlkZXJMb2FkUmVzdWx0IHsKKyAgICBSZXRhaW5QdHI8VHlwZVRvRmlsZVVSTE1hcD4gX2Zp
bGVVUkxzOworfQorCisrIChpbnN0YW5jZXR5cGUpZW1wdHlMb2FkUmVzdWx0Cit7CisgICAgcmV0
dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoRmlsZVVSTE1hcDpAeyB9IHByZXNlbnRhdGlvblN0
eWxlOlVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVVbnNwZWNpZmllZF0gYXV0b3JlbGVhc2Vd
OworfQorCisrIChpbnN0YW5jZXR5cGUpbG9hZFJlc3VsdFdpdGhGaWxlVVJMTWFwOihUeXBlVG9G
aWxlVVJMTWFwICopZmlsZVVSTHMgcHJlc2VudGF0aW9uU3R5bGU6KFVJUHJlZmVycmVkUHJlc2Vu
dGF0aW9uU3R5bGUpcHJlc2VudGF0aW9uU3R5bGUKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxv
Y10gaW5pdFdpdGhGaWxlVVJMTWFwOmZpbGVVUkxzIHByZXNlbnRhdGlvblN0eWxlOnByZXNlbnRh
dGlvblN0eWxlXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZp
bGVVUkxNYXA6KFR5cGVUb0ZpbGVVUkxNYXAgKilmaWxlVVJMcyBwcmVzZW50YXRpb25TdHlsZToo
VUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSlwcmVzZW50YXRpb25TdHlsZQoreworICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX2Zp
bGVVUkxzID0gZmlsZVVSTHM7CisgICAgX2NhbkJlUmVwcmVzZW50ZWRBc0ZpbGVVcGxvYWQgPSBw
cmVzZW50YXRpb25TdHlsZSAhPSBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lOwor
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TVVJMICopZmlsZVVSTEZvclR5cGU6KE5TU3Ry
aW5nICopdHlwZQoreworICAgIHJldHVybiBbX2ZpbGVVUkxzIG9iamVjdEZvcktleTp0eXBlXTsK
K30KKworLSAoTlNBcnJheTxOU1VSTCAqPiAqKWxvYWRlZEZpbGVVUkxzCit7CisgICAgcmV0dXJu
IFtfZmlsZVVSTHMgYWxsVmFsdWVzXTsKK30KKworLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWxv
YWRlZFR5cGVJZGVudGlmaWVycworeworICAgIHJldHVybiBbX2ZpbGVVUkxzIGFsbEtleXNdOwor
fQorCitAZW5kCisKIEBpbnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCAoKQogCiBA
cHJvcGVydHkgKG5vbmF0b21pYykgTlNJbnRlZ2VyIG51bWJlck9mSXRlbXM7CkBAIC0yMDQsMTAg
KzI3NSwxMCBAQCBAZW5kCiBAaW1wbGVtZW50YXRpb24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZCB7CiAgICAgLy8gRklYTUU6IFRoZXNlIGl2YXJzIHNob3VsZCBiZSByZWZhY3RvcmVkIHRvIGJl
IFZlY3RvcjxSZXRhaW5QdHI8VHlwZT4+IGluc3RlYWQgb2YgZ2VuZXJpYyBOU0FycmF5cy4KICAg
ICBSZXRhaW5QdHI8TlNBcnJheT4gX2l0ZW1Qcm92aWRlcnM7Ci0gICAgUmV0YWluUHRyPE5TQXJy
YXk+IF9jYWNoZWRUeXBlSWRlbnRpZmllcnM7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IF90eXBl
VG9GaWxlVVJMTWFwczsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gX3N1cHBvcnRlZFR5cGVJZGVu
dGlmaWVyczsKICAgICBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xp
c3Q+IF9zdGFnZWRSZWdpc3RyYXRpb25JbmZvTGlzdDsKKworICAgIFZlY3RvcjxSZXRhaW5QdHI8
V2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdD4+IF9sb2FkUmVzdWx0czsKIH0KIAogKyAoaW5zdGFu
Y2V0eXBlKXNoYXJlZEluc3RhbmNlCkBAIC0yMjYsOSArMjk3LDkgQEAgLSAoaW5zdGFuY2V0eXBl
KWluaXQKICAgICAgICAgX2l0ZW1Qcm92aWRlcnMgPSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10g
aW5pdF0pOwogICAgICAgICBfY2hhbmdlQ291bnQgPSAwOwogICAgICAgICBfcGVuZGluZ09wZXJh
dGlvbkNvdW50ID0gMDsKLSAgICAgICAgX3R5cGVUb0ZpbGVVUkxNYXBzID0gYWRvcHROUyhbW05T
QXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVycyA9
IG5pbDsKICAgICAgICAgX3N0YWdlZFJlZ2lzdHJhdGlvbkluZm9MaXN0ID0gbmlsOworICAgICAg
ICBfbG9hZFJlc3VsdHMgPSB7IH07CiAgICAgfQogICAgIHJldHVybiBzZWxmOwogfQpAQCAtMjQ1
LDkgKzMxNiw2IEBAIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNCeUZp
ZGVsaXR5Rm9ySXRlbUF0SW5kZXg6KE5TVUludGVnZXIpaW5kCiAKIC0gKE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilwYXN0ZWJvYXJkVHlwZXMKIHsKLSAgICBpZiAoX2NhY2hlZFR5cGVJZGVudGlmaWVy
cykKLSAgICAgICAgcmV0dXJuIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMuZ2V0KCk7Ci0KICAgICBO
U011dGFibGVTZXQ8TlNTdHJpbmcgKj4gKmFsbFR5cGVzID0gW05TTXV0YWJsZVNldCBzZXRdOwog
ICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICphbGxUeXBlc0luT3JkZXIgPSBbTlNNdXRh
YmxlQXJyYXkgYXJyYXldOwogICAgIGZvciAoVUlJdGVtUHJvdmlkZXIgKnByb3ZpZGVyIGluIF9p
dGVtUHJvdmlkZXJzLmdldCgpKSB7CkBAIC0yNTksOCArMzI3LDcgQEAgLSAoTlNBcnJheTxOU1N0
cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlcwogICAgICAgICAgICAgW2FsbFR5cGVzSW5PcmRlciBh
ZGRPYmplY3Q6dHlwZUlkZW50aWZpZXJdOwogICAgICAgICB9CiAgICAgfQotICAgIF9jYWNoZWRU
eXBlSWRlbnRpZmllcnMgPSBhbGxUeXBlc0luT3JkZXI7Ci0gICAgcmV0dXJuIF9jYWNoZWRUeXBl
SWRlbnRpZmllcnMuZ2V0KCk7CisgICAgcmV0dXJuIGFsbFR5cGVzSW5PcmRlcjsKIH0KIAogLSAo
TlNBcnJheTxfX2tpbmRvZiBOU0l0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKQEAgLTI3
NiwxMyArMzQzLDYgQEAgLSAodm9pZClzZXRJdGVtUHJvdmlkZXJzOihOU0FycmF5PF9fa2luZG9m
IE5TSXRlbVByb3ZpZGVyICo+ICopaXRlbVByb3ZpZGVycwogCiAgICAgX2l0ZW1Qcm92aWRlcnMg
PSBpdGVtUHJvdmlkZXJzOwogICAgIF9jaGFuZ2VDb3VudCsrOwotICAgIF9jYWNoZWRUeXBlSWRl
bnRpZmllcnMgPSBuaWw7Ci0gICAgX3N0YWdlZFJlZ2lzdHJhdGlvbkluZm9MaXN0ID0gbmlsOwot
Ci0gICAgTlNNdXRhYmxlQXJyYXkgKnR5cGVUb0ZpbGVVUkxNYXBzID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5Oml0ZW1Qcm92aWRlcnMuY291bnRdOwotICAgIFtpdGVtUHJvdmlk
ZXJzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOlt0eXBlVG9GaWxlVVJMTWFwc10gKFVJSXRl
bVByb3ZpZGVyICosIE5TVUludGVnZXIsIEJPT0wgKikgewotICAgICAgICBbdHlwZVRvRmlsZVVS
TE1hcHMgYWRkT2JqZWN0OkB7IH1dOwotICAgIH1dOwogfQogCiAtIChOU0ludGVnZXIpbnVtYmVy
T2ZJdGVtcwpAQCAtMjkyLDE4ICszNTIsMTggQEAgLSAoTlNJbnRlZ2VyKW51bWJlck9mSXRlbXMK
IAogLSAoTlNEYXRhICopX3ByZUxvYWRlZERhdGFDb25mb3JtaW5nVG9UeXBlOihOU1N0cmluZyAq
KXR5cGVJZGVudGlmaWVyIGZvckl0ZW1Qcm92aWRlckF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXgK
IHsKLSAgICBpZiAoW190eXBlVG9GaWxlVVJMTWFwcyBjb3VudF0gIT0gW19pdGVtUHJvdmlkZXJz
IGNvdW50XSkgeworICAgIGlmIChfbG9hZFJlc3VsdHMuc2l6ZSgpICE9IFtfaXRlbVByb3ZpZGVy
cyBjb3VudF0pIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVy
biBuaWw7CiAgICAgfQogCi0gICAgVHlwZVRvRmlsZVVSTE1hcCAqdHlwZVRvRmlsZVVSTE1hcCA9
IFtfdHlwZVRvRmlsZVVSTE1hcHMgb2JqZWN0QXRJbmRleDppbmRleF07Ci0gICAgZm9yIChOU1N0
cmluZyAqbG9hZGVkVHlwZSBpbiB0eXBlVG9GaWxlVVJMTWFwKSB7CisgICAgV2ViSXRlbVByb3Zp
ZGVyTG9hZFJlc3VsdCAqbG9hZFJlc3VsdCA9IF9sb2FkUmVzdWx0c1tpbmRleF0uZ2V0KCk7Cisg
ICAgZm9yIChOU1N0cmluZyAqbG9hZGVkVHlwZSBpbiBsb2FkUmVzdWx0LmxvYWRlZFR5cGVJZGVu
dGlmaWVycykgewogICAgICAgICBpZiAoIVVUVHlwZUNvbmZvcm1zVG8oKENGU3RyaW5nUmVmKWxv
YWRlZFR5cGUsIChDRlN0cmluZ1JlZil0eXBlSWRlbnRpZmllcikpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IGxvYWRlZCBkYXRhIHJlbGV2YW50IGZv
ciB0aGlzIFVUSSB0eXBlIG9udG8gZGlzaywgc28gdGhlcmUncyBubyBuZWVkIHRvIGFzayB0aGUg
VUlJdGVtUHJvdmlkZXIgZm9yIHRoZSBzYW1lIGRhdGEgYWdhaW4uCi0gICAgICAgIGlmIChOU0Rh
dGEgKnJlc3VsdCA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOnR5cGVUb0ZpbGVVUkxN
YXBbbG9hZGVkVHlwZV0gb3B0aW9uczpOU0RhdGFSZWFkaW5nTWFwcGVkSWZTYWZlIGVycm9yOm5p
bF0pCisgICAgICAgIGlmIChOU0RhdGEgKnJlc3VsdCA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50
c09mVVJMOltsb2FkUmVzdWx0IGZpbGVVUkxGb3JUeXBlOmxvYWRlZFR5cGVdIG9wdGlvbnM6TlNE
YXRhUmVhZGluZ01hcHBlZElmU2FmZSBlcnJvcjpuaWxdKQogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAgICAgcmV0dXJuIG5pbDsKQEAgLTM4MCwxMSArNDQwLDEzIEBAIC0gKE5T
SW50ZWdlciljaGFuZ2VDb3VudAogICAgIHJldHVybiBfY2hhbmdlQ291bnQ7CiB9CiAKLS0gKE5T
QXJyYXk8TlNVUkwgKj4gKilmaWxlVVJMc0ZvckRhdGFJbnRlcmFjdGlvbgorLSAoTlNBcnJheTxO
U1VSTCAqPiAqKWRyb3BwZWRGaWxlVVJMcwogewogICAgIE5TTXV0YWJsZUFycmF5PE5TVVJMICo+
ICpmaWxlVVJMcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgZm9yIChUeXBlVG9GaWxl
VVJMTWFwICp0eXBlVG9GaWxlVVJMTWFwIGluIF90eXBlVG9GaWxlVVJMTWFwcy5nZXQoKSkKLSAg
ICAgICAgW2ZpbGVVUkxzIGFkZE9iamVjdHNGcm9tQXJyYXk6W3R5cGVUb0ZpbGVVUkxNYXAgYWxs
VmFsdWVzXV07CisgICAgZm9yIChhdXRvIGxvYWRSZXN1bHQgOiBfbG9hZFJlc3VsdHMpIHsKKyAg
ICAgICAgaWYgKFtsb2FkUmVzdWx0IGNhbkJlUmVwcmVzZW50ZWRBc0ZpbGVVcGxvYWRdKQorICAg
ICAgICAgICAgW2ZpbGVVUkxzIGFkZE9iamVjdHNGcm9tQXJyYXk6W2xvYWRSZXN1bHQgbG9hZGVk
RmlsZVVSTHNdXTsKKyAgICB9CiAgICAgcmV0dXJuIGZpbGVVUkxzOwogfQogCkBAIC00MDMsNiAr
NDY1LDkgQEAgLSAoTlNJbnRlZ2VyKW51bWJlck9mRmlsZXMKICAgICBOU0FycmF5ICpzdXBwb3J0
ZWRGaWxlVHlwZXMgPSBQYXN0ZWJvYXJkOjpzdXBwb3J0ZWRGaWxlVXBsb2FkUGFzdGVib2FyZFR5
cGVzKCk7CiAgICAgTlNJbnRlZ2VyIG51bWJlck9mRmlsZXMgPSAwOwogICAgIGZvciAoVUlJdGVt
UHJvdmlkZXIgKml0ZW1Qcm92aWRlciBpbiBfaXRlbVByb3ZpZGVycy5nZXQoKSkgeworICAgICAg
ICBpZiAoaXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlID09IFVJUHJlZmVy
cmVkUHJlc2VudGF0aW9uU3R5bGVJbmxpbmUpCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAg
ICAgICBmb3IgKE5TU3RyaW5nICppZGVudGlmaWVyIGluIGl0ZW1Qcm92aWRlci5yZWdpc3RlcmVk
VHlwZUlkZW50aWZpZXJzKSB7CiAgICAgICAgICAgICBpZiAoIXR5cGVDb25mb3Jtc1RvVHlwZXMo
aWRlbnRpZmllciwgc3VwcG9ydGVkRmlsZVR5cGVzKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTQ1OSwyMiArNTI0LDI0IEBAIC0gKHZvaWQpZG9BZnRlckxvYWRpbmdQcm92aWRlZENv
bnRlbnRJbnRvRmlsZVVSTHM6KFdlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spCiAKIC0gKHZv
aWQpZG9BZnRlckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6KFdlYkl0ZW1Qcm92
aWRlckZpbGVMb2FkQmxvY2spYWN0aW9uIHN5bmNocm9ub3VzVGltZW91dDooTlNUaW1lSW50ZXJ2
YWwpc3luY2hyb25vdXNUaW1lb3V0CiB7CisgICAgX2xvYWRSZXN1bHRzLmNsZWFyKCk7CisKICAg
ICBhdXRvIGNoYW5nZUNvdW50QmVmb3JlTG9hZGluZyA9IF9jaGFuZ2VDb3VudDsKLSAgICBhdXRv
IHR5cGVUb0ZpbGVVUkxNYXBzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aENhcGFjaXR5OltfaXRlbVByb3ZpZGVycyBjb3VudF1dKTsKKyAgICBhdXRvIGxvYWRSZXN1
bHRzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Oltf
aXRlbVByb3ZpZGVycyBjb3VudF1dKTsKIAogICAgIC8vIEZpcnN0LCBmaWd1cmUgb3V0IHdoaWNo
IGl0ZW0gcHJvdmlkZXJzIHdlIHdhbnQgdG8gdHJ5IGFuZCBsb2FkIGZpbGVzIGZyb20uCiAgICAg
YXV0byBpdGVtUHJvdmlkZXJzVG9Mb2FkID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CiAgICAgYXV0byB0eXBlSWRlbnRpZmllcnNUb0xvYWQgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIGluZGljZXNPZml0ZW1Qcm92aWRl
cnNUb0xvYWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBS
ZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZD4gcHJvdGVjdGVkU2VsZiA9IHNlbGY7
Ci0gICAgW19pdGVtUHJvdmlkZXJzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOltwcm90ZWN0
ZWRTZWxmLCBpdGVtUHJvdmlkZXJzVG9Mb2FkLCB0eXBlSWRlbnRpZmllcnNUb0xvYWQsIGluZGlj
ZXNPZml0ZW1Qcm92aWRlcnNUb0xvYWQsIHR5cGVUb0ZpbGVVUkxNYXBzXSAoVUlJdGVtUHJvdmlk
ZXIgKml0ZW1Qcm92aWRlciwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCAqKSB7CisgICAgW19pdGVt
UHJvdmlkZXJzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOltwcm90ZWN0ZWRTZWxmLCBpdGVt
UHJvdmlkZXJzVG9Mb2FkLCB0eXBlSWRlbnRpZmllcnNUb0xvYWQsIGluZGljZXNPZml0ZW1Qcm92
aWRlcnNUb0xvYWQsIGxvYWRSZXN1bHRzXSAoVUlJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciwg
TlNVSW50ZWdlciBpbmRleCwgQk9PTCAqKSB7CiAgICAgICAgIE5TU3RyaW5nICp0eXBlSWRlbnRp
ZmllclRvTG9hZCA9IFtwcm90ZWN0ZWRTZWxmIHR5cGVJZGVudGlmaWVyVG9Mb2FkRm9yUmVnaXN0
ZXJlZFR5cGVJZGVudGZpZXJzOml0ZW1Qcm92aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJz
XTsKICAgICAgICAgaWYgKHR5cGVJZGVudGlmaWVyVG9Mb2FkKSB7CiAgICAgICAgICAgICBbaXRl
bVByb3ZpZGVyc1RvTG9hZCBhZGRPYmplY3Q6aXRlbVByb3ZpZGVyXTsKICAgICAgICAgICAgIFt0
eXBlSWRlbnRpZmllcnNUb0xvYWQgYWRkT2JqZWN0OnR5cGVJZGVudGlmaWVyVG9Mb2FkXTsKICAg
ICAgICAgICAgIFtpbmRpY2VzT2ZpdGVtUHJvdmlkZXJzVG9Mb2FkIGFkZE9iamVjdDpAKGluZGV4
KV07CiAgICAgICAgIH0KLSAgICAgICAgW3R5cGVUb0ZpbGVVUkxNYXBzIGFkZE9iamVjdDpAeyB9
XTsKKyAgICAgICAgW2xvYWRSZXN1bHRzIGFkZE9iamVjdDpbV2ViSXRlbVByb3ZpZGVyTG9hZFJl
c3VsdCBlbXB0eUxvYWRSZXN1bHRdXTsKICAgICB9XTsKIAogICAgIGlmICghW2l0ZW1Qcm92aWRl
cnNUb0xvYWQgY291bnRdKSB7CkBAIC00OTAsMTUgKzU1NywxNyBAQCAtICh2b2lkKWRvQWZ0ZXJM
b2FkaW5nUHJvdmlkZWRDb250ZW50SW50b0ZpbGVVUkxzOihXZWJJdGVtUHJvdmlkZXJGaWxlTG9h
ZEJsb2NrKQogICAgICAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IHR5cGVJZGVudGlmaWVyID0gW3R5
cGVJZGVudGlmaWVyc1RvTG9hZCBvYmplY3RBdEluZGV4OmluZGV4XTsKICAgICAgICAgTlNVSW50
ZWdlciBpbmRleEluSXRlbVByb3ZpZGVyQXJyYXkgPSBbW2luZGljZXNPZml0ZW1Qcm92aWRlcnNU
b0xvYWQgb2JqZWN0QXRJbmRleDppbmRleF0gdW5zaWduZWRJbnRlZ2VyVmFsdWVdOwogICAgICAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IHN1Z2dlc3RlZE5hbWUgPSBbaXRlbVByb3ZpZGVyIHN1Z2dl
c3RlZE5hbWVdOworICAgICAgICBhdXRvIHByZXNlbnRhdGlvblN0eWxlID0gW2l0ZW1Qcm92aWRl
ciBwcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZV07CiAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2Vu
dGVyKGZpbGVMb2FkaW5nR3JvdXAuZ2V0KCkpOwogICAgICAgICBkaXNwYXRjaF9ncm91cF9lbnRl
cihzeW5jaHJvbm91c0ZpbGVMb2FkaW5nR3JvdXAuZ2V0KCkpOwotICAgICAgICBbaXRlbVByb3Zp
ZGVyIGxvYWRGaWxlUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjp0eXBlSWRlbnRpZmll
ci5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpbc3luY2hyb25vdXNGaWxlTG9hZGluZ0dyb3VwLCBz
ZXRGaWxlVVJMc0xvY2ssIGluZGV4SW5JdGVtUHJvdmlkZXJBcnJheSwgc3VnZ2VzdGVkTmFtZSwg
dHlwZUlkZW50aWZpZXIsIHR5cGVUb0ZpbGVVUkxNYXBzLCBmaWxlTG9hZGluZ0dyb3VwXSAoTlNV
UkwgKnVybCwgTlNFcnJvciAqKSB7CisgICAgICAgIFtpdGVtUHJvdmlkZXIgbG9hZEZpbGVSZXBy
ZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyLmdldCgpIGNvbXBsZXRp
b25IYW5kbGVyOltzeW5jaHJvbm91c0ZpbGVMb2FkaW5nR3JvdXAsIHNldEZpbGVVUkxzTG9jaywg
aW5kZXhJbkl0ZW1Qcm92aWRlckFycmF5LCBzdWdnZXN0ZWROYW1lLCB0eXBlSWRlbnRpZmllciwg
bG9hZFJlc3VsdHMsIGZpbGVMb2FkaW5nR3JvdXAsIHByZXNlbnRhdGlvblN0eWxlXSAoTlNVUkwg
KnVybCwgTlNFcnJvciAqKSB7CiAgICAgICAgICAgICAvLyBBZnRlciBleGVjdXRpbmcgdGhpcyBj
b21wbGV0aW9uIGJsb2NrLCBVSUtpdCByZW1vdmVzIHRoZSBmaWxlIGF0IHRoZSBnaXZlbiBVUkwu
IEhvd2V2ZXIsIHdlIG5lZWQgdGhpcyBkYXRhIHRvIHBlcnNpc3QgbG9uZ2VyIGZvciB0aGUgd2Vi
IGNvbnRlbnQgcHJvY2Vzcy4KICAgICAgICAgICAgIC8vIFRvIGFkZHJlc3MgdGhpcywgd2UgaGFy
ZCBsaW5rIHRoZSBnaXZlbiBVUkwgdG8gYSBuZXcgdGVtcG9yYXJ5IGZpbGUgaW4gdGhlIHRlbXBv
cmFyeSBkaXJlY3RvcnkuIFRoaXMgZm9sbG93cyB0aGUgc2FtZSBmbG93IGFzIHJlZ3VsYXIgZmls
ZSB1cGxvYWQsIGluCiAgICAgICAgICAgICAvLyBXS0ZpbGVVcGxvYWRQYW5lbC5tbS4gVGhlIHRl
bXBvcmFyeSBmaWxlcyBhcmUgY2xlYW5lZCB1cCBieSB0aGUgc3lzdGVtIGF0IGEgbGF0ZXIgdGlt
ZS4KICAgICAgICAgICAgIGlmIChOU1VSTCAqZGVzdGluYXRpb24gPSBsaW5rVGVtcG9yYXJ5SXRl
bVByb3ZpZGVyRmlsZXNUb0Ryb3BTdGFnaW5nRGlyZWN0b3J5KHVybCwgc3VnZ2VzdGVkTmFtZS5n
ZXQoKSwgdHlwZUlkZW50aWZpZXIuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgV2ViSXRlbVBy
b3ZpZGVyTG9hZFJlc3VsdCAqbG9hZFJlc3VsdCA9IFtXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0
IGxvYWRSZXN1bHRXaXRoRmlsZVVSTE1hcDpAeyB0eXBlSWRlbnRpZmllci5nZXQoKSA6IGRlc3Rp
bmF0aW9uIH0gcHJlc2VudGF0aW9uU3R5bGU6cHJlc2VudGF0aW9uU3R5bGVdOwogICAgICAgICAg
ICAgICAgIFtzZXRGaWxlVVJMc0xvY2sgbG9ja107Ci0gICAgICAgICAgICAgICAgW3R5cGVUb0Zp
bGVVUkxNYXBzIHNldE9iamVjdDpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmRl
c3RpbmF0aW9uIGZvcktleTp0eXBlSWRlbnRpZmllci5nZXQoKV0gYXRJbmRleGVkU3Vic2NyaXB0
OmluZGV4SW5JdGVtUHJvdmlkZXJBcnJheV07CisgICAgICAgICAgICAgICAgW2xvYWRSZXN1bHRz
IHNldE9iamVjdDpsb2FkUmVzdWx0IGF0SW5kZXhlZFN1YnNjcmlwdDppbmRleEluSXRlbVByb3Zp
ZGVyQXJyYXldOwogICAgICAgICAgICAgICAgIFtzZXRGaWxlVVJMc0xvY2sgdW5sb2NrXTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2xlYXZlKGZpbGVMb2FkaW5n
R3JvdXAuZ2V0KCkpOwpAQCAtNTA3LDExICs1NzYsMTMgQEAgLSAodm9pZClkb0FmdGVyTG9hZGlu
Z1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRCbG9j
aykKICAgICB9CiAKICAgICBSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZD4gcmV0
YWluZWRTZWxmID0gc2VsZjsKLSAgICBhdXRvIGl0ZW1Mb2FkQ29tcGxldGlvbiA9IFtyZXRhaW5l
ZFNlbGYsIHN5bmNocm9ub3VzRmlsZUxvYWRpbmdHcm91cCwgZmlsZUxvYWRpbmdHcm91cCwgdHlw
ZVRvRmlsZVVSTE1hcHMsIGNvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihhY3Rpb24pLCBj
aGFuZ2VDb3VudEJlZm9yZUxvYWRpbmddIHsKLSAgICAgICAgaWYgKGNoYW5nZUNvdW50QmVmb3Jl
TG9hZGluZyA9PSByZXRhaW5lZFNlbGYtPl9jaGFuZ2VDb3VudCkKLSAgICAgICAgICAgIHJldGFp
bmVkU2VsZi0+X3R5cGVUb0ZpbGVVUkxNYXBzID0gdHlwZVRvRmlsZVVSTE1hcHM7CisgICAgYXV0
byBpdGVtTG9hZENvbXBsZXRpb24gPSBbcmV0YWluZWRTZWxmLCBzeW5jaHJvbm91c0ZpbGVMb2Fk
aW5nR3JvdXAsIGZpbGVMb2FkaW5nR3JvdXAsIGxvYWRSZXN1bHRzLCBjb21wbGV0aW9uQmxvY2sg
PSBtYWtlQmxvY2tQdHIoYWN0aW9uKSwgY2hhbmdlQ291bnRCZWZvcmVMb2FkaW5nXSB7CisgICAg
ICAgIGlmIChjaGFuZ2VDb3VudEJlZm9yZUxvYWRpbmcgPT0gcmV0YWluZWRTZWxmLT5fY2hhbmdl
Q291bnQpIHsKKyAgICAgICAgICAgIGZvciAoV2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdCAqbG9h
ZFJlc3VsdCBpbiBsb2FkUmVzdWx0cy5nZXQoKSkKKyAgICAgICAgICAgICAgICByZXRhaW5lZFNl
bGYtPl9sb2FkUmVzdWx0cy5hcHBlbmQobG9hZFJlc3VsdCk7CisgICAgICAgIH0KIAotICAgICAg
ICBjb21wbGV0aW9uQmxvY2soW3JldGFpbmVkU2VsZiBmaWxlVVJMc0ZvckRhdGFJbnRlcmFjdGlv
bl0pOworICAgICAgICBjb21wbGV0aW9uQmxvY2soW3JldGFpbmVkU2VsZiBkcm9wcGVkRmlsZVVS
THNdKTsKICAgICB9OwogCiAgICAgaWYgKHN5bmNocm9ub3VzVGltZW91dCA+IDAgJiYgIWRpc3Bh
dGNoX2dyb3VwX3dhaXQoc3luY2hyb25vdXNGaWxlTG9hZGluZ0dyb3VwLmdldCgpLCBkaXNwYXRj
aF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBzeW5jaHJvbm91c1RpbWVvdXQgKiBOU0VDX1BFUl9T
RUMpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRh
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tCmluZGV4
IDhlNTZiNWZhOWQzOTNmYWJlMWZjMmU5NmFmYzZiMzUyY2IzZjE4YzIuLjhmZjQxMzJkZTYyMzY5
NWU5Zjk4YzgwMWRiZTdiMDE4NjM3NzBhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9EcmFnRGF0YU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvRHJhZ0RhdGFNYWMubW0KQEAgLTE2MCwxNyArMTYwLDcgQEAgYm9vbCBEcmFnRGF0YTo6Y29u
dGFpbnNDb2xvcigpIGNvbnN0CiAKIGJvb2wgRHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMoKSBjb25z
dAogewotICAgIE5TQXJyYXkgKnN1cHBvcnRlZEZpbGVUeXBlcyA9IFBhc3RlYm9hcmQ6OnN1cHBv
cnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKTsKLSAgICBWZWN0b3I8U3RyaW5nPiB0eXBl
czsKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPmdldFR5
cGVzKHR5cGVzLCBtX3Bhc3RlYm9hcmROYW1lKTsKLSAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBl
cykgewotICAgICAgICBhdXRvIGNmVHlwZSA9IHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAg
ICAgZm9yIChOU1N0cmluZyAqZmlsZVR5cGUgaW4gc3VwcG9ydGVkRmlsZVR5cGVzKSB7Ci0gICAg
ICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbyhjZlR5cGUuZ2V0KCksIChDRlN0cmluZ1JlZilm
aWxlVHlwZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBudW1iZXJPZkZpbGVzKCk7CiB9CiAKIHVu
c2lnbmVkIERyYWdEYXRhOjpudW1iZXJPZkZpbGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA3MjYxOWVkMGY3YjIxOWI3NmQwZjFl
YzQ1MjIyMWU1ZDcxNDcxZDQ2Li5iYjRhMDUwOWQwZDk2ZDA3YjFhMWQwMGVmNTA1YjQ3ZWMxYmE5
ZTM3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTctMDktMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBEbkRdIFN1cHBvcnQgRGF0YVRyYW5zZmVyLmdldERh
dGEgYW5kIERhdGFUcmFuc2Zlci5zZXREYXRhIHdoZW4gZHJhZ2dpbmcgb3IgZHJvcHBpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjY3MgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzQzNTM3MjM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuZXcgdGVzdHMgYW5kIHR3ZWFrcyBleGlzdGlu
ZyBEYXRhSW50ZXJhY3Rpb25UZXN0cyB0byBjb3ZlciB0aGUgdHdlYWtzIG1hZGUgaW4gdGhpcyBw
YXRjaC4KKyAgICAgICAgU2luZ2xlUGxhaW5UZXh0VVJMVHlwZUlkZW50aWZpZXJzOiBWZXJpZnkg
dGhhdCBpbmxpbmUgcHJlc2VudGF0aW9uIHN0eWxlIGlzIHJlcXVlc3RlZCB3aGVuIGRyYWdnaW5n
IHBsYWludGV4dC4KKyAgICAgICAgU2luZ2xlUGxhaW5UZXh0V29yZFR5cGVJZGVudGlmaWVyczog
VmVyaWZ5IHRoYXQgaW5saW5lIHByZXNlbnRhdGlvbiBzdHlsZSBpcyByZXF1ZXN0ZWQgd2hlbiBk
cmFnZ2luZyBhIGxpbmsuCisgICAgICAgIEV4dGVybmFsU291cmNlSW5saW5lVGV4dFRvRmlsZUlu
cHV0OgorICAgICAgICAgICAgICAgIFZlcmlmeSB0aGF0IGFuIGl0ZW0gcHJvdmlkZXIgbWFya2Vk
IGFzIHByZWZlcnJpbmcgaW5saW5lIHByZXNlbnRhdGlvbiBkb2VzIG5vdCB0cmlnZ2VyIGZpbGUg
dXBsb2FkcyBieQorICAgICAgICAgICAgICAgIGRyYWdnaW5nIGEgcGllY2Ugb2YgaW5saW5lIHRl
eHQgaW50byBhIGZpbGUgaW5wdXQuCisgICAgICAgIENhblN0YXJ0RHJhZ09uRGl2V2l0aERyYWdn
YWJsZUF0dHJpYnV0ZToKKyAgICAgICAgICAgICAgICBWZXJpZnkgdGhhdCBEYXRhVHJhbnNmZXIu
c2V0RGF0YSBhbmQgRGF0YVRyYW5zZmVyLmdldERhdGEgd29yayBhcyBleHBlY3RlZCBieSBtb3Zp
bmcgYSBkcmFnZ2FibGUgZGl2LgorICAgICAgICAgICAgICAgIFRoZSB0ZXN0IGhhcm5lc3Mgd3Jp
dGVzIHRoZSBpZCBvZiB0aGUgZHJhZ2dhYmxlIGRpdiB2aWEgdGhlIERhdGFUcmFuc2ZlciwgYW5k
IHVwb24gZHJvcCwgcmVhZHMgdGhlIGlkCisgICAgICAgICAgICAgICAgYmFjayB0byBmaWd1cmUg
b3V0IHdoaWNoIGVsZW1lbnQgdG8gYXBwZW5kIHRvIHRoZSBkcm9wIGRlc3RpbmF0aW9uLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNy0wOS0xMCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIERuRF0gRWxlbWVu
dHMgaW4gdGhlIERPTSB3aXRoIHRoZSBgZHJhZ2dhYmxlYCBhdHRyaWJ1dGUgc2hvdWxkIGJlIGRy
YWdnYWJsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUlu
dGVyYWN0aW9uVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50
ZXJhY3Rpb25UZXN0cy5tbQppbmRleCA2MzQxMjZjODgyMDRmODJkN2Q1NTQyNzQ0NjRkMzc5YjBh
M2NiY2Q0Li5mOTU2ZjA0ZDQwNTU0NTVmNWM0YjVhNzc0MWIzZjkzOGM0ZmU1YmVjIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0
cy5tbQpAQCAtNDAzLDEwICs0MDMsMTIgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgU2lu
Z2xlUGxhaW5UZXh0V29yZFR5cGVJZGVudGlmaWVycykKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAic291cmNlLnNlbGVjdGlvbkVuZCA9IHNvdXJjZS52YWx1ZS5s
ZW5ndGgiXTsKICAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1h
a2UoMTAwLCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKIAotICAgIE5TQXJyYXkgKnJl
Z2lzdGVyZWRUeXBlcyA9IFtbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92
aWRlcnNdLmZpcnN0T2JqZWN0IHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnNdOworICAgIE5TSXRl
bVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNvdXJj
ZUl0ZW1Qcm92aWRlcnNdLmZpcnN0T2JqZWN0OworICAgIE5TQXJyYXkgKnJlZ2lzdGVyZWRUeXBl
cyA9IFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyc107CiAgICAgRVhQRUNU
X0VRKDFVTCwgcmVnaXN0ZXJlZFR5cGVzLmNvdW50KTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoWyhO
U1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IFVURjhTdHJpbmddLCBbcmVnaXN0ZXJlZFR5
cGVzLmZpcnN0T2JqZWN0IFVURjhTdHJpbmddKTsKICAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNvdXJjZS52YWx1ZSJdLmxlbmd0aCwgMFVMKTsK
KyAgICBFWFBFQ1RfRVEoVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZSwgaXRlbVBy
b3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEo
InBuZXVtb25vdWx0cmFtaWNyb3Njb3BpY3NpbGljb3ZvbGNhbm9jb25pb3NpcyIsIFt3ZWJWaWV3
IGVkaXRvclZhbHVlXS5VVEY4U3RyaW5nKTsKIH0KIApAQCAtNDIyLDExICs0MjQsMTMgQEAgVEVT
VChEYXRhSW50ZXJhY3Rpb25UZXN0cywgU2luZ2xlUGxhaW5UZXh0VVJMVHlwZUlkZW50aWZpZXJz
KQogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2Uuc2Vs
ZWN0aW9uRW5kID0gc291cmNlLnZhbHVlLmxlbmd0aCJdOwogICAgIFtkYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAs
IDMwMCldOwogCi0gICAgTlNBcnJheSAqcmVnaXN0ZXJlZFR5cGVzID0gW1tkYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3Igc291cmNlSXRlbVByb3ZpZGVyc10uZmlyc3RPYmplY3QgcmVnaXN0ZXJlZFR5
cGVJZGVudGlmaWVyc107CisgICAgTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciA9IFtkYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3Igc291cmNlSXRlbVByb3ZpZGVyc10uZmlyc3RPYmplY3Q7Cisg
ICAgTlNBcnJheSAqcmVnaXN0ZXJlZFR5cGVzID0gW2l0ZW1Qcm92aWRlciByZWdpc3RlcmVkVHlw
ZUlkZW50aWZpZXJzXTsKICAgICBFWFBFQ1RfRVEoMlVMLCByZWdpc3RlcmVkVHlwZXMuY291bnQp
OwogICAgIEVYUEVDVF9XS19TVFJFUShbKE5TU3RyaW5nICopa1VUVHlwZVVSTCBVVEY4U3RyaW5n
XSwgW3JlZ2lzdGVyZWRUeXBlcy5maXJzdE9iamVjdCBVVEY4U3RyaW5nXSk7CiAgICAgRVhQRUNU
X1dLX1NUUkVRKFsoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCBVVEY4U3RyaW5nXSwg
W3JlZ2lzdGVyZWRUeXBlcy5sYXN0T2JqZWN0IFVURjhTdHJpbmddKTsKICAgICBFWFBFQ1RfRVEo
MFVMLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic291cmNlLnZhbHVl
Il0ubGVuZ3RoKTsKKyAgICBFWFBFQ1RfRVEoVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlu
bGluZSwgaXRlbVByb3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKTsKICAgICBFWFBF
Q1RfV0tfU1RSRVEoImh0dHBzOi8vd2Via2l0Lm9yZy8iLCBbd2ViVmlldyBlZGl0b3JWYWx1ZV0u
VVRGOFN0cmluZyk7CiB9CiAKQEAgLTUzMiw5ICs1MzYsMTMgQEAgVEVTVChEYXRhSW50ZXJhY3Rp
b25UZXN0cywgQ2FuU3RhcnREcmFnT25EaXZXaXRoRHJhZ2dhYmxlQXR0cmlidXRlKQogICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImN1c3RvbS1kcmFnZ2FibGUt
ZGl2Il07CiAKICAgICBhdXRvIGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tE
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3Lmdl
dCgpXSk7Ci0gICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtl
KDEwMCwgMTAwKSB0bzpDR1BvaW50TWFrZSgyNTAsIDEwMCldOworICAgIFtkYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDEwMCkgdG86Q0dQb2ludE1ha2Uo
MTAwLCAyNTApXTsKIAogICAgIEVYUEVDVF9HVChbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNv
dXJjZUl0ZW1Qcm92aWRlcnNdLmNvdW50LCAwVUwpOworICAgIE5TSXRlbVByb3ZpZGVyICppdGVt
UHJvdmlkZXIgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRlcnNd
LmZpcnN0T2JqZWN0OworICAgIEVYUEVDVF9FUShVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxl
SW5saW5lLCBpdGVtUHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOworICAgIEVY
UEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCIhIWRlc3Rp
bmF0aW9uLnF1ZXJ5U2VsZWN0b3IoJyNpdGVtJykiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAi
UEFTUyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtLnRleHRD
b250ZW50Il0pOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBFeHRlcm5hbFNvdXJj
ZVBsYWluVGV4dFRvSUZyYW1lKQpAQCAtNTU2LDYgKzU2NCwyMiBAQCBURVNUKERhdGFJbnRlcmFj
dGlvblRlc3RzLCBFeHRlcm5hbFNvdXJjZVBsYWluVGV4dFRvSUZyYW1lKQogICAgIGNoZWNrRHJh
Z0NhcmV0UmVjdElzQ29udGFpbmVkSW5SZWN0KFtzaW11bGF0b3IgbGFzdEtub3duRHJhZ0NhcmV0
UmVjdF0sIENHUmVjdE1ha2UoY29udGFpbmVyTGVmdCwgY29udGFpbmVyVG9wLCBjb250YWluZXJX
aWR0aCwgY29udGFpbmVySGVpZ2h0KSk7CiB9CiAKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMs
IEV4dGVybmFsU291cmNlSW5saW5lVGV4dFRvRmlsZUlucHV0KQoreworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAiZmlsZS11cGxvYWRpbmciXTsKKworICAgIGF1dG8gc2ltdWxhdGVkSXRlbVBy
b3ZpZGVyID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3Np
bXVsYXRlZEl0ZW1Qcm92aWRlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZl
cnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lXTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVy
IHJlZ2lzdGVyT2JqZWN0OkAiVGhpcyBpdGVtIHByb3ZpZGVyIHJlcXVlc3RlZCBpbmxpbmUgcHJl
c2VudGF0aW9uIHN0eWxlLiIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9u
VmlzaWJpbGl0eUFsbF07CisKKyAgICBhdXRvIGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFk
b3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3
ZWJWaWV3LmdldCgpXSk7CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRFeHRlcm5h
bEl0ZW1Qcm92aWRlcnM6QFsgc2ltdWxhdGVkSXRlbVByb3ZpZGVyLmdldCgpIF1dOworICAgIFtk
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgyMDAsIDEwMCkgdG86
Q0dQb2ludE1ha2UoMTAwLCAxMDApXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm91dHB1dC52YWx1ZSJdKTsKK30KKwog
VEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRXh0ZXJuYWxTb3VyY2VKU09OVG9GaWxlSW5wdXQp
CiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320518</attachid>
            <date>2017-09-11 22:11:14 -0700</date>
            <delta_ts>2017-09-12 18:05:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176672-20170911221113.patch</filename>
            <type>text/plain</type>
            <size>33717</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxOTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjU4ODYzYTI1ZmI1NDRm
ZjcwNDliOTEyOWU1OTM2MWY4MTE0Mzc3OC4uYjQzYWNlOGJkNmY2YmM1Njg0ZjNlMzUwYjE3MDdj
MjhjNDYyMDRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxNy0wOS0xMiAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TIERuRF0g
U3VwcG9ydCBEYXRhVHJhbnNmZXIuZ2V0RGF0YSBhbmQgRGF0YVRyYW5zZmVyLnNldERhdGEgd2hl
biBkcmFnZ2luZyBvciBkcm9wcGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc2NjcyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDM1MzcyMz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlcyBz
ZXZlcmFsIHR3ZWFrcyB0byBzdXBwb3J0IERhdGFUcmFuc2Zlci5nZXREYXRhIGFuZCBEYXRhVHJh
bnNmZXIuc2V0RGF0YSB3aGVuIGRyYWdnaW5nIGFuZCBkcm9wcGluZyBvbiBpT1MuCisgICAgICAg
IFNlZSBwZXItbWV0aG9kIGNoYW5nZXMgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4gVGhpcyBwYXRj
aCBhbHNvIHJlbmFtZXMgc29tZSBvbGQgdmFyaWFibGUgYW5kIHByb3BlcnR5IG5hbWVzCisgICAg
ICAgIGFsb25nIHRoZSB3YXksIHNvIHRoZXkgbm8gbG9uZ2VyIHJlZmVyZW5jZSAiZGF0YSBpbnRl
cmFjdGlvbiIsIGFuZCBpbnN0ZWFkIHJlZmVyIHRvIHRoZSBmZWF0dXJlIGJ5IGl0cyBwb3N0LVdX
REMKKyAgICAgICAgbmFtZS4KKworICAgICAgICBOZXcgdGVzdDogRGF0YUludGVyYWN0aW9uVGVz
dHMuRXh0ZXJuYWxTb3VyY2VJbmxpbmVUZXh0VG9GaWxlSW5wdXQKKyAgICAgICAgTW9kaWZpZWQ6
IERhdGFJbnRlcmFjdGlvblRlc3RzLkNhblN0YXJ0RHJhZ09uRGl2V2l0aERyYWdnYWJsZUF0dHJp
YnV0ZQorICAgICAgICAgICAgICAgICAgRGF0YUludGVyYWN0aW9uVGVzdHMuU2luZ2xlUGxhaW5U
ZXh0VVJMVHlwZUlkZW50aWZpZXJzCisgICAgICAgICAgICAgICAgICBEYXRhSW50ZXJhY3Rpb25U
ZXN0cy5TaW5nbGVQbGFpblRleHRXb3JkVHlwZUlkZW50aWZpZXJzCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1Bh
c3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpjb2NvYVR5cGVGcm9tSFRNTENsaXBi
b2FyZFR5cGUpOgorCisgICAgICAgIEluIGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSwg
bWFwIHRoZSAidGV4dC9wbGFpbiIgTUlNRSB0eXBlIHRvIHRoZSAicHVibGljLnBsYWluLXRleHQi
IFVUSS4gUHJldmlvdXNseSwKKyAgICAgICAgdGhpcyBjb3JyZXNwb25kZWQgdG8gInB1YmxpYy50
ZXh0Iiwgd2hpY2ggaXMgaW5jb3JyZWN0LCBzaW5jZSAicHVibGljLnRleHQiIGFsc28gaW5jbHVk
ZXMgbm9uLXBsYWluLXRleHQgdHlwZXMKKyAgICAgICAgc3VjaCBhcyAicHVibGljLmh0bWwiLCB0
aGVyZWJ5IGNvbmZ1c2luZyBOU0l0ZW1Qcm92aWRlcnMuIEltcG9ydGFudGx5LCB0aGlzIG1ha2Vz
IGl0IHNvIHRoYXQgcGxhaW4gdGV4dCBzdHJpbmdzCisgICAgICAgIHdyaXR0ZW4gdmlhIERhdGFU
cmFuc2Zlci5zZXREYXRhKCkgY2FuIGFjdHVhbGx5IGJlIHJlYWQgYmFjayBhcyBhIGNvY29hIHZh
bHVlLCBzaW5jZSAicHVibGljLnBsYWluLXRleHQiIGlzIG9uZQorICAgICAgICBvZiB0aGUgVVRJ
cyBpbiArW05TU3RyaW5nIHJlYWRhYmxlVHlwZUlkZW50aWZpZXJzRm9ySXRlbVByb3ZpZGVyXS4K
KworICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTdHJpbmcpOgorCisgICAgICAg
IEluc3RlYWQgb2Ygd3JpdGluZyB7IHR5cGUgOiBkYXRhIH0gdG8gdGhlIHBhc3RlYm9hcmQsIHdy
aXRlIHsgY29jb2FUeXBlIDogZGF0YSB9LiBJdCBhcHBlYXJzIHRoYXQgdGhpcyB3YXMKKyAgICAg
ICAgY2hhbmdlZCB1bmludGVudGlvbmFsbHkgaW4gcjE1NjU4OCB3aGVuIHVwc3RyZWFtaW5nIHRo
ZSBpT1MgcGFzdGVib2FyZCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcyBtYWRlIGFwcGFyZW50IGJ5
CisgICAgICAgIGhvdyBQYXN0ZWJvYXJkOjpyZWFkU3RyaW5nKCkgcmVxdWVzdHMgdGhlIGNvY29h
IFVUSSBmcm9tIHRoZSBwbGF0Zm9ybSBwYXN0ZWJvYXJkLCBidXQgUGFzdGVib2FyZDo6d3JpdGVT
dHJpbmcoKQorICAgICAgICBzZW5kcyB0aGUgTUlNRSB0eXBlLgorCisgICAgICAgICogcGxhdGZv
cm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRm
b3JtUGFzdGVib2FyZDo6ZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgorCisgICAgICAgIFdoZW4gd3JpdGlu
ZyBwbGFpbiB0ZXh0IG9yIGEgVVJMLCBzcGVjaWZ5IHRoYXQgdGhlIGl0ZW0gd2FudHMgaW5saW5l
IHN0eWxlIHJlcHJlc2VudGF0aW9uLiBUaGlzIHByZXZlbnRzIG9kZCBhbmQKKyAgICAgICAgdW5l
eHBlY3RlZCBiZWhhdmlvcnMgKGZvciBpbnN0YW5jZSwgYmVpbmcgYWJsZSB0byBkcmFnIHBsYWlu
IHRleHQgaW50byB0aGUgRmlsZXMgYXBwIGFzIGEgZmlsZSksIGJ1dCBpdCBhbHNvCisgICAgICAg
IG1ha2VzIGdldERhdGEoKSBub3QgYmFpbCBhbmQgcmV0dXJuIHRoZSBudWxsIHN0cmluZyBvbiBk
cm9wLCBkdWUgdG8gZm9yRmlsZURyYWcoKSBiZWluZyB0cnVlIGluCisgICAgICAgIERhdGFUcmFu
c2Zlcjo6Z2V0RGF0YSgpLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRl
clBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xp
c3QgaW5pdF0pOgorICAgICAgICAodWlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSk6CisgICAg
ICAgICgtW1dlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm9MaXN0IGl0ZW1Qcm92aWRlcl0p
OgorCisgICAgICAgIFNldCB0aGUgcHJlZmVycmVkIHByZXNlbnRhdGlvbiBzdHlsZSB3aGVuIGdl
bmVyYXRpbmcgYW4gaXRlbSBwcm92aWRlciBmcm9tIGEgcmVnaXN0cmF0aW9uIGxpc3QuCisKKyAg
ICAgICAgKCtbV2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdCBlbXB0eUxvYWRSZXN1bHRdKToKKyAg
ICAgICAgKCtbV2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdCBsb2FkUmVzdWx0V2l0aEZpbGVVUkxN
YXA6cHJlc2VudGF0aW9uU3R5bGU6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlckxvYWRS
ZXN1bHQgaW5pdFdpdGhGaWxlVVJMTWFwOnByZXNlbnRhdGlvblN0eWxlOl0pOgorICAgICAgICAo
LVtXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IGZpbGVVUkxGb3JUeXBlOl0pOgorICAgICAgICAo
LVtXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IGxvYWRlZEZpbGVVUkxzXSk6CisgICAgICAgICgt
W1dlYkl0ZW1Qcm92aWRlckxvYWRSZXN1bHQgbG9hZGVkVHlwZUlkZW50aWZpZXJzXSk6CisKKyAg
ICAgICAgSW50cm9kdWNlIFdlYkl0ZW1Qcm92aWRlckxvYWRSZXN1bHQsIGFuIG9iamVjdCB0aGF0
IGVuY2Fwc3VsYXRlcyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVwcmVzZW50IHRoZSBjb250ZW50
cyBvZgorICAgICAgICBhbiBOU0l0ZW1Qcm92aWRlciBkcm9wcGVkIGluIHdlYiBjb250ZW50LiBQ
cmV2aW91c2x5LCBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIG1haW50YWluZWQgYW4gYXJyYXkg
b2YKKyAgICAgICAgZGljdGlvbmFyaWVzIG9mIFVUSSA9PiBmaWxlIFVSTCwgd2hlcmUgZWFjaCBk
aWN0aW9uYXJ5IHJlcHJlc2VudHMgd2hlcmUgdGhlIGRyb3BwZWQgZGF0YSBmb3IgYSBnaXZlbiBp
dGVtCisgICAgICAgIHByb3ZpZGVyIGxpdmVzLiBOb3cgdGhhdCB3ZSBhZGRpdGlvbmFsbHkgbmVl
ZCB0byByZW1lbWJlciAoZm9yIGVhY2ggaXRlbSBwcm92aWRlcikgd2hldGhlciB3ZSBzaG91bGQg
Y29uc2lkZXIKKyAgICAgICAgaXRzIGRhdGEgYXMgYSBmaWxlIHVwbG9hZCwgaXQncyBtb3JlIGhl
bHBmdWwgdG8gaGF2ZSBhIHNlcGFyYXRlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlICJsb2FkIHJl
c3VsdHMiIG9mIGEKKyAgICAgICAgZHJvcHBlZCBpdGVtIHByb3ZpZGVyLgorCisgICAgICAgICgt
W1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgaW5pdF0pOgorICAgICAgICAoLVtXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkIHBhc3RlYm9hcmRUeXBlc10pOgorICAgICAgICAoLVtXZWJJdGVtUHJv
dmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1Qcm92aWRlcnM6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Q
cm92aWRlclBhc3RlYm9hcmQgX3ByZUxvYWRlZERhdGFDb25mb3JtaW5nVG9UeXBlOmZvckl0ZW1Q
cm92aWRlckF0SW5kZXg6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQg
ZHJvcHBlZEZpbGVVUkxzXSk6CisKKyAgICAgICAgUmVzcGVjdCBpdGVtIHByb3ZpZGVyIGxvYWQg
cmVzdWx0cyB0aGF0IHNob3VsZCBub3QgYmUgZXhwb3NlZCBhcyBhIGZpbGUgdG8gdGhlIHBhZ2Uu
CisKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBudW1iZXJPZkZpbGVzXSk6
CisKKyAgICAgICAgUmVzcGVjdCBpdGVtIHByb3ZpZGVycyB3aXRoIFVJUHJlZmVycmVkUHJlc2Vu
dGF0aW9uU3R5bGVJbmxpbmUgYnkgbm90IGNvdW50aW5nIHRoZW0gdG93YXJkcyB0aGUgbnVtYmVy
IG9mIGZpbGVzLgorCisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgZG9BZnRl
ckxvYWRpbmdQcm92aWRlZENvbnRlbnRJbnRvRmlsZVVSTHM6c3luY2hyb25vdXNUaW1lb3V0Ol0p
OgorCisgICAgICAgIEFkanVzdCBmb3IgdGhlIHRyYW5zaXRpb24gZnJvbSBhbiBhcnJheSBvZiBk
aWN0aW9uYXJpZXMgcmVwcmVzZW50aW5nIGxvYWRlZCBpdGVtIHByb3ZpZGVycyB0byBhbiBhcnJh
eSBvZgorICAgICAgICBXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0cy4KKworICAgICAgICAoLVtX
ZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIGZpbGVVUkxzRm9yRGF0YUludGVyYWN0aW9uXSk6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL0RyYWdEYXRhTWFjLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMgY29uc3QpOgorCisgICAgICAgIERyYWdE
YXRhOjpjb250YWluc0ZpbGVzIHByZXZpb3VzbHkgb25seSBjb25zaWRlcmVkIHdoZXRoZXIgb3Ig
bm90IHBhcnRpY3VsYXIgVVRJcyBhcHBlYXIgaW4gdGhlIHBhc3RlYm9hcmQuIEluCisgICAgICAg
IHRoZSBjYXNlIG9mIE1hYywgdGhpcyBpcyBOU0ZpbGVzUHJvbWlzZVBib2FyZFR5cGUgYW5kIE5T
RmlsZW5hbWVzUGJvYXJkVHlwZSwgYnV0IGluIHRoZSBjYXNlIG9mIGlPUywgdGhpcyBpcyBhCisg
ICAgICAgIG11Y2ggYnJvYWRlciBjYXRlZ29yeSAoYW55dGhpbmcgY29uZm9ybWluZyB0byAicHVi
bGljLmNvbnRlbnQiKSwgc2luY2UgZmlsZXMgYXJlIG5vdCBleHBvc2VkIGV4cGxpY2l0bHkgYXMK
KyAgICAgICAgInByb21pc2UiIG9yICJmaWxlIiB0eXBlcyBpbiB0aGUgbGlzdCBvZiByZWdpc3Rl
cmVkIFVUSXMuIFRoaXMgY2F1c2VkIHVzIHRvIGFsd2F5cyBiYWlsIGluCisgICAgICAgIERhdGFU
cmFuc2Zlci5nZXREYXRhKCkgb24gZHJvcCBvbiBpT1MsIHNpbmNlIHdlIHdpbGwgYWx3YXlzIGJl
bGlldmUgdGhlcmUncyBhIGZpbGUgb24gdGhlIHBhc3RlYm9hcmQgaWYgdGhlcmUncworICAgICAg
ICBhbnl0aGluZyBjb25mb3JtaW5nIHRvICJwdWJsaWMuY29udGVudCIgYXQgYWxsLgorCisgICAg
ICAgIFRvIGZpeCB0aGlzIGFuZCBzaW1wbGlmeSB0aGUgY29kZSBhdCB0aGUgc2FtZSB0aW1lLCB3
ZSBzaW1wbHkgcmVwbGFjZSB0aGUgY3VycmVudGx5IGltcGxlbWVudGF0aW9uIG9mCisgICAgICAg
IERyYWdEYXRhOjpjb250YWluc0ZpbGVzIHRvIHJldHVybiB0cnVlIGlmZiB0aGUgbnVtYmVyIG9m
IGZpbGVzIGlzIG5vbnplcm8uIE9uIE1hYywgRHJhZ0RhdGE6Om51bWJlck9mRmlsZXMKKyAgICAg
ICAgY2hlY2tzIHRoZSBzYW1lIFVUSXMgYXMgRHJhZ0RhdGE6OmNvbnRhaW5zRmlsZXMgKE5TRmls
ZXNQcm9taXNlUGJvYXJkVHlwZSBhbmQgTlNGaWxlbmFtZXNQYm9hcmRUeXBlKSwgYnV0CisgICAg
ICAgIGFkZGl0aW9uYWxseSBjb3VudHMgdGhlIG51bWJlciBvZiBmaWxlIFVSTHMgY29ycmVzcG9u
ZGluZyB0byB0aG9zZSBVVElzLgorCisgICAgICAgIE9uIGlPUywgdGhlIGltcGxlbWVudGF0aW9u
IG9mIG51bWJlck9mRmlsZXMgaXMgbmV3IHRvIGlPUyAxMSwgYW5kIHJlbGV2YW50IG9ubHkgaW4g
dGhlIGRyYWcgYW5kIGRyb3AgZmxvdy4KKyAgICAgICAgUHJldmlvdXNseSwgd2Ugd291bGQgY29u
c2lkZXIgYW4gaXRlbSBwcm92aWRlciB0byAiY29udGFpbiIgYSBmaWxlIGlmIGl0IGhhZCBhIFVU
SSBjb25mb3JtaW5nIHRvIG9uZSBvZiB0aGUgVVRJcworICAgICAgICBhY2NlcHRhYmxlIGZvciBk
cmFnIGFuZCBkcm9wIChhdCB0aGUgdGltZSBvZiB3cml0aW5nLCB0aGVzZSBhcmUgWyJwdWJsaWMu
Y29udGVudCIsICJwdWJsaWMuemlwIiwKKyAgICAgICAgInB1YmxpYy5mb2xkZXIiXSkuIFdpdGgg
dGhpcyBwYXRjaCwgYW55dGhpbmcgY29uZm9ybWluZyB0byB0aGVzZSBVVElzIHdpbGwgY29udGlu
dWUgdG8gYmUgcmVwcmVzZW50ZWQgYXMgZmlsZXMsCisgICAgICAgIGJ1dCBpbXBvcnRhbnRseSwg
aWYgYW4gaXRlbSBwcm92aWRlciBpbmRpY2F0ZXMgdGhhdCBpdCBzaG91bGQgYmUgcmVwcmVzZW50
ZWQgaW5saW5lIChpLmUuIGEgcGxhaW4gdGV4dAorICAgICAgICBzZWxlY3Rpb24pLCB0aGVuIHdl
IGRvbid0IGNvbnNpZGVyIHRoYXQgaXRlbSBwcm92aWRlciBhcyB2ZW5kaW5nIGEgZmlsZS4gVGhp
cyBhbGxvd3MgdXMgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgorICAgICAgICBjYXNlcyB3aGVyZSB3
ZSBhcmUgZHJhZ2dpbmcgYSBwbGFpbiB0ZXh0IHNlbGVjdGlvbiBvdmVyIGEgZmlsZSBpbnB1dCwg
YW5kIHdoZW4gd2UgYXJlIGRyYWdnaW5nIGEgcGxhaW4gdGV4dCBmaWxlLgorICAgICAgICBJbiBi
b3RoIGNhc2VzLCAicHVibGljLnBsYWluLXRleHQiIGlzIG9mZmVyZWQgYXMgYSByZWdpc3RlcmVk
IFVUSSwgYnV0IGluIHRoZSBmb3JtZXIsIHRoZSBpdGVtIHByb3ZpZGVyIHNob3VsZAorICAgICAg
ICBpbmRpY2F0ZSB0aGF0IGlubGluZSBwcmVzZW50YXRpb24gc3R5bGUgaXMgcHJlZmVycmVkLiBS
ZWZlciB0byA8cmRhcjovL3Byb2JsZW0vMzIyMDI1NDI+IGZvciBtb3JlIGRldGFpbHMuCisKIDIw
MTctMDktMTEgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPUyBXSzJdIFN1cHBvcnQgdGFwcGluZyB0byBhZGQgaXRlbXMgdG8gdGhlIGN1cnJlbnQg
ZHJhZyBzZXNzaW9uIGluIHdlYiBjb250ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKaW5kZXggOWE4OGU3OGU0OWU5NTBmMTJlZjEzMjcw
ZGYyNDEzZjc0MTQ0MTEwZC4uYWNjY2ZiMDM5M2ZkODQ2YzY1YTI3N2ZkODBhN2E1MGE0MTg5OWZi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVi
b2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9h
cmQuaApAQCAtNTUsNyArNTUsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogLSAodm9pZClz
ZXRJdGVtczooTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilpdGVtczsKIC0gKE5TQXJyYXk8TlNT
dHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6KE5TVUlu
dGVnZXIpaW5kZXg7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5TSW50ZWdlciBu
dW1iZXJPZkZpbGVzOwotQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0FycmF5PE5T
VVJMICo+ICpmaWxlVVJMc0ZvckRhdGFJbnRlcmFjdGlvbjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHks
IG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAqPiAqZHJvcHBlZEZpbGVVUkxzOwogLSAodm9pZCl1
cGRhdGVTdXBwb3J0ZWRUeXBlSWRlbnRpZmllcnM6KE5TQXJyYXk8TlNTdHJpbmcgKj4gKil0eXBl
czsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3Rl
Ym9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5t
bQppbmRleCAzMWIwNDgyMzYwYTkwYmUyYWFkNjQwZTZhMTgwZDU5ZTZmNzdlMzkzLi5iNDhkMWEw
MjgwOWMwZGEwZmY3ZjNlMDY2MzQxYzZlZjBjOWMwMDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyBS
ZXRhaW5QdHI8TlNTdHJpbmc+IGNvY29hVHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBT
dHJpbmcmIHR5cGUpCiB7CiAgICAgLy8gSWdub3JlIGFueSB0cmFpbGluZyBjaGFyc2V0IC0gSlMg
c3RyaW5ncyBhcmUgVW5pY29kZSwgd2hpY2ggZW5jYXBzdWxhdGVzIHRoZSBjaGFyc2V0IGlzc3Vl
LgogICAgIGlmICh0eXBlID09ICJ0ZXh0L3BsYWluIikKLSAgICAgICAgcmV0dXJuIChOU1N0cmlu
ZyAqKWtVVFR5cGVUZXh0OworICAgICAgICByZXR1cm4gKE5TU3RyaW5nICopa1VUVHlwZVBsYWlu
VGV4dDsKIAogICAgIC8vIFNwZWNpYWwgY2FzZSBiZWNhdXNlIFVUSSBkb2Vzbid0IHdvcmsgd2l0
aCBDb2NvYSdzIFVSTCB0eXBlLgogICAgIGlmICh0eXBlID09ICJ0ZXh0L3VyaS1saXN0IikKQEAg
LTQyMyw3ICs0MjMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgIGlmICghY29jb2FUeXBlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5
KCktPndyaXRlVG9QYXN0ZWJvYXJkKHR5cGUsIGRhdGEsIG1fcGFzdGVib2FyZE5hbWUpOworICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+d3JpdGVUb1Bhc3Rl
Ym9hcmQoY29jb2FUeXBlLmdldCgpLCBkYXRhLCBtX3Bhc3RlYm9hcmROYW1lKTsKIH0KIAogVmVj
dG9yPFN0cmluZz4gUGFzdGVib2FyZDo6dHlwZXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggOTFmNmM5YTkxZjQ3
MmNkZDBiNTc4ZDFlNTFjYWMyYzAzZjRiNzYzYS4uYWI5ZjFhMDA2MDZmNzUwNWUwOWYzMmI4NWNl
MDMyMjVkNDMzYjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bs
YXRmb3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC05NywxMSArOTcsMTEgQEAgaW50IFBsYXRmb3Jt
UGFzdGVib2FyZDo6bnVtYmVyT2ZGaWxlcygpCiAKIFZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtUGFz
dGVib2FyZDo6ZmlsZW5hbWVzRm9yRGF0YUludGVyYWN0aW9uKCkKIHsKLSAgICBpZiAoIVttX3Bh
c3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihmaWxlVVJMc0ZvckRhdGFJbnRl
cmFjdGlvbildKQorICAgIGlmICghW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGRyb3BwZWRGaWxlVVJMcyldKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgVmVj
dG9yPFN0cmluZz4gZmlsZW5hbWVzOwotICAgIGZvciAoTlNVUkwgKmZpbGVVUkwgaW4gW21fcGFz
dGVib2FyZCBmaWxlVVJMc0ZvckRhdGFJbnRlcmFjdGlvbl0pCisgICAgZm9yIChOU1VSTCAqZmls
ZVVSTCBpbiBbbV9wYXN0ZWJvYXJkIGRyb3BwZWRGaWxlVVJMc10pCiAgICAgICAgIGZpbGVuYW1l
cy5hcHBlbmQoZmlsZVVSTC5wYXRoKTsKIAogICAgIHJldHVybiBmaWxlbmFtZXM7CkBAIC0zNDQs
NiArMzQ0LDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICNpZiBfX0lQSE9ORV9PU19W
RVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICAgICBhdXRvIHJlcHJlc2VudGF0aW9uc1Rv
UmVnaXN0ZXIgPSBhZG9wdE5TKFtbV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Qg
YWxsb2NdIGluaXRdKTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJy
ZWRQcmVzZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07
CiAKICAgICBOU1N0cmluZyAqcGFzdGVib2FyZFR5cGVBc05TU3RyaW5nID0gcGFzdGVib2FyZFR5
cGU7CiAgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSAmJiBwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcu
bGVuZ3RoKSB7CkBAIC0zODEsNiArMzgyLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRVUkwmIHVybCkKIHsKICNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAwMDAKICAgICBhdXRvIHJlcHJlc2VudGF0aW9uc1RvUmVnaXN0
ZXIgPSBhZG9wdE5TKFtbV2ViSXRlbVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3QgYWxsb2Nd
IGluaXRdKTsKKyAgICBbcmVwcmVzZW50YXRpb25zVG9SZWdpc3RlciBzZXRQcmVmZXJyZWRQcmVz
ZW50YXRpb25TdHlsZTpXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZV07CiAKICAg
ICBpZiAoTlNVUkwgKm5zVVJMID0gdXJsLnVybCkgewogICAgICAgICBpZiAoIXVybC50aXRsZS5p
c0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0
ZW1Qcm92aWRlclBhc3RlYm9hcmQuaAppbmRleCBiOTJhMjc0MGU1OWE1MmUzYTQwNjJmMWU1NWIx
M2Q3NjZlNzkwOTk0Li4yNzVlYTQ1ZmI4NmUwYWM0OGViOGM5ODlkMjQwNzI0NWU3M2M0MGU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFz
dGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlk
ZXJQYXN0ZWJvYXJkLmgKQEAgLTMyLDYgKzMyLDEyIEBACiAKIHN0cnVjdCBDR1NpemU7CiAKK3R5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKSB7
CisgICAgV2ViUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVVbnNwZWNpZmllZCwKKyAgICBXZWJQ
cmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZSwKKyAgICBXZWJQcmVmZXJyZWRQcmVzZW50
YXRpb25TdHlsZUF0dGFjaG1lbnQKK307CisKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIC8q
ISBBIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8gcmVwcmVzZW50cyBhIHNpbmdsZSBj
YWxsIHRvIHJlZ2lzdGVyIHNvbWV0aGluZyB0byBhbiBpdGVtIHByb3ZpZGVyLgpAQCAtNjQsNiAr
NzAsOCBAQCBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJh
dGlvbkluZm9MaXN0IDogTlNPYmplY3QKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0
cmluZyAqc3VnZ2VzdGVkTmFtZTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgbnVs
bGFibGUpIFVJSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXI7CiAKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljKSBXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSBwcmVmZXJyZWRQcmVzZW50YXRpb25T
dHlsZTsKKwogLSAoTlNVSW50ZWdlciludW1iZXJPZkl0ZW1zOwogLSAobnVsbGFibGUgV2ViSXRl
bVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mbyAqKWl0ZW1BdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4
OwogLSAodm9pZCllbnVtZXJhdGVJdGVtczoodm9pZCheKShXZWJJdGVtUHJvdmlkZXJSZWdpc3Ry
YXRpb25JbmZvICppdGVtLCBOU1VJbnRlZ2VyIGluZGV4KSlibG9jazsKQEAgLTgxLDcgKzg5LDcg
QEAgV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIDog
TlNPYmplY3Q8QWJzdHJhY3RQYXN0ZWJvYXIKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21p
YykgTlNJbnRlZ2VyIGNoYW5nZUNvdW50OwogCiAvLyBUaGlzIHdpbGwgb25seSBiZSBub24tZW1w
dHkgd2hlbiBhbiBvcGVyYXRpb24gaXMgYmVpbmcgcGVyZm9ybWVkLgotQHByb3BlcnR5IChyZWFk
b25seSwgbm9uYXRvbWljKSBOU0FycmF5PE5TVVJMICo+ICpmaWxlVVJMc0ZvckRhdGFJbnRlcmFj
dGlvbjsKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNBcnJheTxOU1VSTCAqPiAq
ZHJvcHBlZEZpbGVVUkxzOwogCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIEJPT0wg
aGFzUGVuZGluZ09wZXJhdGlvbjsKIC0gKHZvaWQpaW5jcmVtZW50UGVuZGluZ09wZXJhdGlvbkNv
dW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVBy
b3ZpZGVyUGFzdGVib2FyZC5tbQppbmRleCAxYWYxM2Q0NmRmYmJmMmQ5ZjRiODdjMDc1MmYzOTll
ODcyMGY3ZDI2Li40YjljM2E1N2VhMGFhYzI4MzY5YjE5Y2RlZTBkN2U5ZjMzOGE5M2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbQpAQCAtMTA3LDYgKzEwNyw3IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAg
ICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKICAgICAgICAgX3JlcHJlc2VudGF0aW9ucyA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBfcHJlZmVy
cmVkUHJlc2VudGF0aW9uU2l6ZSA9IENHU2l6ZVplcm87CisgICAgICAgIF9wcmVmZXJyZWRQcmVz
ZW50YXRpb25TdHlsZSA9IFdlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlVW5zcGVjaWZpZWQ7
CiAgICAgfQogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xNDgsNiArMTQ5LDIxIEBAIC0gKHZvaWQp
ZW51bWVyYXRlSXRlbXM6KHZvaWQgKF4pKFdlYkl0ZW1Qcm92aWRlclJlZ2lzdHJhdGlvbkluZm8g
KiwgTlNVSW50ZWdlcikpCiAgICAgICAgIGJsb2NrKFtzZWxmIGl0ZW1BdEluZGV4OmluZGV4XSwg
aW5kZXgpOwogfQogCitzdGF0aWMgVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSB1aVByZWZl
cnJlZFByZXNlbnRhdGlvblN0eWxlKFdlYlByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlIHN0eWxl
KQoreworICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICBjYXNlIFdlYlByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlVW5zcGVjaWZpZWQ6CisgICAgICAgIHJldHVybiBVSVByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlVW5zcGVjaWZpZWQ7CisgICAgY2FzZSBXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25T
dHlsZUlubGluZToKKyAgICAgICAgcmV0dXJuIFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVJ
bmxpbmU7CisgICAgY2FzZSBXZWJQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUF0dGFjaG1lbnQ6
CisgICAgICAgIHJldHVybiBVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlQXR0YWNobWVudDsK
KyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGVVbnNwZWNpZmllZDsKKyAgICB9Cit9CisK
IC0gKFVJSXRlbVByb3ZpZGVyICopaXRlbVByb3ZpZGVyCiB7CiAgICAgaWYgKCFzZWxmLm51bWJl
ck9mSXRlbXMpCkBAIC0xNzEsNiArMTg3LDcgQEAgLSAoVUlJdGVtUHJvdmlkZXIgKilpdGVtUHJv
dmlkZXIKICAgICB9CiAgICAgW2l0ZW1Qcm92aWRlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25T
aXplOnNlbGYucHJlZmVycmVkUHJlc2VudGF0aW9uU2l6ZV07CiAgICAgW2l0ZW1Qcm92aWRlciBz
ZXRTdWdnZXN0ZWROYW1lOnNlbGYuc3VnZ2VzdGVkTmFtZV07CisgICAgW2l0ZW1Qcm92aWRlciBz
ZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTp1aVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxl
KHNlbGYucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpXTsKICAgICByZXR1cm4gaXRlbVByb3Zp
ZGVyLmF1dG9yZWxlYXNlKCk7CiB9CiAKQEAgLTE5Myw2ICsyMTAsNjAgQEAgLSAoTlNTdHJpbmcg
KilkZXNjcmlwdGlvbgogCiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViSXRlbVByb3ZpZGVyTG9hZFJl
c3VsdCA6IE5TT2JqZWN0CisKKysgKGluc3RhbmNldHlwZSlsb2FkUmVzdWx0V2l0aEZpbGVVUkxN
YXA6KFR5cGVUb0ZpbGVVUkxNYXAgKilmaWxlVVJMcyBwcmVzZW50YXRpb25TdHlsZTooVUlQcmVm
ZXJyZWRQcmVzZW50YXRpb25TdHlsZSlwcmVzZW50YXRpb25TdHlsZTsKKysgKGluc3RhbmNldHlw
ZSllbXB0eUxvYWRSZXN1bHQ7CisKKy0gKE5TVVJMICopZmlsZVVSTEZvclR5cGU6KE5TU3RyaW5n
ICopdHlwZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxOU1VSTCAq
PiAqbG9hZGVkRmlsZVVSTHM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJy
YXk8TlNTdHJpbmcgKj4gKmxvYWRlZFR5cGVJZGVudGlmaWVyczsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQk9PTCBjYW5CZVJlcHJlc2VudGVkQXNGaWxlVXBsb2FkOworCitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IHsKKyAgICBSZXRh
aW5QdHI8VHlwZVRvRmlsZVVSTE1hcD4gX2ZpbGVVUkxzOworfQorCisrIChpbnN0YW5jZXR5cGUp
ZW1wdHlMb2FkUmVzdWx0Cit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoRmls
ZVVSTE1hcDpAeyB9IHByZXNlbnRhdGlvblN0eWxlOlVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5
bGVVbnNwZWNpZmllZF0gYXV0b3JlbGVhc2VdOworfQorCisrIChpbnN0YW5jZXR5cGUpbG9hZFJl
c3VsdFdpdGhGaWxlVVJMTWFwOihUeXBlVG9GaWxlVVJMTWFwICopZmlsZVVSTHMgcHJlc2VudGF0
aW9uU3R5bGU6KFVJUHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpcHJlc2VudGF0aW9uU3R5bGUK
K3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhGaWxlVVJMTWFwOmZpbGVVUkxz
IHByZXNlbnRhdGlvblN0eWxlOnByZXNlbnRhdGlvblN0eWxlXSBhdXRvcmVsZWFzZV07Cit9CisK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZpbGVVUkxNYXA6KFR5cGVUb0ZpbGVVUkxNYXAgKilm
aWxlVVJMcyBwcmVzZW50YXRpb25TdHlsZTooVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSlw
cmVzZW50YXRpb25TdHlsZQoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgX2ZpbGVVUkxzID0gZmlsZVVSTHM7CisgICAgX2NhbkJl
UmVwcmVzZW50ZWRBc0ZpbGVVcGxvYWQgPSBwcmVzZW50YXRpb25TdHlsZSAhPSBVSVByZWZlcnJl
ZFByZXNlbnRhdGlvblN0eWxlSW5saW5lOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5T
VVJMICopZmlsZVVSTEZvclR5cGU6KE5TU3RyaW5nICopdHlwZQoreworICAgIHJldHVybiBbX2Zp
bGVVUkxzIG9iamVjdEZvcktleTp0eXBlXTsKK30KKworLSAoTlNBcnJheTxOU1VSTCAqPiAqKWxv
YWRlZEZpbGVVUkxzCit7CisgICAgcmV0dXJuIFtfZmlsZVVSTHMgYWxsVmFsdWVzXTsKK30KKwor
LSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKWxvYWRlZFR5cGVJZGVudGlmaWVycworeworICAgIHJl
dHVybiBbX2ZpbGVVUkxzIGFsbEtleXNdOworfQorCitAZW5kCisKIEBpbnRlcmZhY2UgV2ViSXRl
bVByb3ZpZGVyUGFzdGVib2FyZCAoKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgTlNJbnRlZ2Vy
IG51bWJlck9mSXRlbXM7CkBAIC0yMDQsMTAgKzI3NSwxMCBAQCBAZW5kCiBAaW1wbGVtZW50YXRp
b24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB7CiAgICAgLy8gRklYTUU6IFRoZXNlIGl2YXJz
IHNob3VsZCBiZSByZWZhY3RvcmVkIHRvIGJlIFZlY3RvcjxSZXRhaW5QdHI8VHlwZT4+IGluc3Rl
YWQgb2YgZ2VuZXJpYyBOU0FycmF5cy4KICAgICBSZXRhaW5QdHI8TlNBcnJheT4gX2l0ZW1Qcm92
aWRlcnM7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IF9jYWNoZWRUeXBlSWRlbnRpZmllcnM7Ci0g
ICAgUmV0YWluUHRyPE5TQXJyYXk+IF90eXBlVG9GaWxlVVJMTWFwczsKICAgICBSZXRhaW5QdHI8
TlNBcnJheT4gX3N1cHBvcnRlZFR5cGVJZGVudGlmaWVyczsKICAgICBSZXRhaW5QdHI8V2ViSXRl
bVByb3ZpZGVyUmVnaXN0cmF0aW9uSW5mb0xpc3Q+IF9zdGFnZWRSZWdpc3RyYXRpb25JbmZvTGlz
dDsKKworICAgIFZlY3RvcjxSZXRhaW5QdHI8V2ViSXRlbVByb3ZpZGVyTG9hZFJlc3VsdD4+IF9s
b2FkUmVzdWx0czsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlCkBAIC0yMjYs
OSArMjk3LDkgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXQKICAgICAgICAgX2l0ZW1Qcm92aWRlcnMg
PSBhZG9wdE5TKFtbTlNBcnJheSBhbGxvY10gaW5pdF0pOwogICAgICAgICBfY2hhbmdlQ291bnQg
PSAwOwogICAgICAgICBfcGVuZGluZ09wZXJhdGlvbkNvdW50ID0gMDsKLSAgICAgICAgX3R5cGVU
b0ZpbGVVUkxNYXBzID0gYWRvcHROUyhbW05TQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICAgICAg
X3N1cHBvcnRlZFR5cGVJZGVudGlmaWVycyA9IG5pbDsKICAgICAgICAgX3N0YWdlZFJlZ2lzdHJh
dGlvbkluZm9MaXN0ID0gbmlsOworICAgICAgICBfbG9hZFJlc3VsdHMgPSB7IH07CiAgICAgfQog
ICAgIHJldHVybiBzZWxmOwogfQpAQCAtMjQ1LDkgKzMxNiw2IEBAIC0gKE5TQXJyYXk8TlNTdHJp
bmcgKj4gKilwYXN0ZWJvYXJkVHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXg6KE5TVUludGVn
ZXIpaW5kCiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXMKIHsKLSAg
ICBpZiAoX2NhY2hlZFR5cGVJZGVudGlmaWVycykKLSAgICAgICAgcmV0dXJuIF9jYWNoZWRUeXBl
SWRlbnRpZmllcnMuZ2V0KCk7Ci0KICAgICBOU011dGFibGVTZXQ8TlNTdHJpbmcgKj4gKmFsbFR5
cGVzID0gW05TTXV0YWJsZVNldCBzZXRdOwogICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+
ICphbGxUeXBlc0luT3JkZXIgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwogICAgIGZvciAoVUlJ
dGVtUHJvdmlkZXIgKnByb3ZpZGVyIGluIF9pdGVtUHJvdmlkZXJzLmdldCgpKSB7CkBAIC0yNTks
OCArMzI3LDcgQEAgLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlcwogICAg
ICAgICAgICAgW2FsbFR5cGVzSW5PcmRlciBhZGRPYmplY3Q6dHlwZUlkZW50aWZpZXJdOwogICAg
ICAgICB9CiAgICAgfQotICAgIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMgPSBhbGxUeXBlc0luT3Jk
ZXI7Ci0gICAgcmV0dXJuIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMuZ2V0KCk7CisgICAgcmV0dXJu
IGFsbFR5cGVzSW5PcmRlcjsKIH0KIAogLSAoTlNBcnJheTxfX2tpbmRvZiBOU0l0ZW1Qcm92aWRl
ciAqPiAqKWl0ZW1Qcm92aWRlcnMKQEAgLTI3NiwxMiArMzQzLDYgQEAgLSAodm9pZClzZXRJdGVt
UHJvdmlkZXJzOihOU0FycmF5PF9fa2luZG9mIE5TSXRlbVByb3ZpZGVyICo+ICopaXRlbVByb3Zp
ZGVycwogCiAgICAgX2l0ZW1Qcm92aWRlcnMgPSBpdGVtUHJvdmlkZXJzOwogICAgIF9jaGFuZ2VD
b3VudCsrOwotICAgIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMgPSBuaWw7Ci0KLSAgICBOU011dGFi
bGVBcnJheSAqdHlwZVRvRmlsZVVSTE1hcHMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2Fw
YWNpdHk6aXRlbVByb3ZpZGVycy5jb3VudF07Ci0gICAgW2l0ZW1Qcm92aWRlcnMgZW51bWVyYXRl
T2JqZWN0c1VzaW5nQmxvY2s6W3R5cGVUb0ZpbGVVUkxNYXBzXSAoVUlJdGVtUHJvdmlkZXIgKiwg
TlNVSW50ZWdlciwgQk9PTCAqKSB7Ci0gICAgICAgIFt0eXBlVG9GaWxlVVJMTWFwcyBhZGRPYmpl
Y3Q6QHsgfV07Ci0gICAgfV07CiB9CiAKIC0gKE5TSW50ZWdlciludW1iZXJPZkl0ZW1zCkBAIC0y
OTEsMTggKzM1MiwxOCBAQCAtIChOU0ludGVnZXIpbnVtYmVyT2ZJdGVtcwogCiAtIChOU0RhdGEg
KilfcHJlTG9hZGVkRGF0YUNvbmZvcm1pbmdUb1R5cGU6KE5TU3RyaW5nICopdHlwZUlkZW50aWZp
ZXIgZm9ySXRlbVByb3ZpZGVyQXRJbmRleDooTlNVSW50ZWdlcilpbmRleAogewotICAgIGlmIChb
X3R5cGVUb0ZpbGVVUkxNYXBzIGNvdW50XSAhPSBbX2l0ZW1Qcm92aWRlcnMgY291bnRdKSB7Cisg
ICAgaWYgKF9sb2FkUmVzdWx0cy5zaXplKCkgIT0gW19pdGVtUHJvdmlkZXJzIGNvdW50XSkgewog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9
CiAKLSAgICBUeXBlVG9GaWxlVVJMTWFwICp0eXBlVG9GaWxlVVJMTWFwID0gW190eXBlVG9GaWxl
VVJMTWFwcyBvYmplY3RBdEluZGV4OmluZGV4XTsKLSAgICBmb3IgKE5TU3RyaW5nICpsb2FkZWRU
eXBlIGluIHR5cGVUb0ZpbGVVUkxNYXApIHsKKyAgICBXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0
ICpsb2FkUmVzdWx0ID0gX2xvYWRSZXN1bHRzW2luZGV4XS5nZXQoKTsKKyAgICBmb3IgKE5TU3Ry
aW5nICpsb2FkZWRUeXBlIGluIGxvYWRSZXN1bHQubG9hZGVkVHlwZUlkZW50aWZpZXJzKSB7CiAg
ICAgICAgIGlmICghVVRUeXBlQ29uZm9ybXNUbygoQ0ZTdHJpbmdSZWYpbG9hZGVkVHlwZSwgKENG
U3RyaW5nUmVmKXR5cGVJZGVudGlmaWVyKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIC8vIFdlJ3ZlIGFscmVhZHkgbG9hZGVkIGRhdGEgcmVsZXZhbnQgZm9yIHRoaXMgVVRJIHR5
cGUgb250byBkaXNrLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gYXNrIHRoZSBVSUl0ZW1Qcm92aWRl
ciBmb3IgdGhlIHNhbWUgZGF0YSBhZ2Fpbi4KLSAgICAgICAgaWYgKE5TRGF0YSAqcmVzdWx0ID0g
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6dHlwZVRvRmlsZVVSTE1hcFtsb2FkZWRUeXBl
XSBvcHRpb25zOk5TRGF0YVJlYWRpbmdNYXBwZWRJZlNhZmUgZXJyb3I6bmlsXSkKKyAgICAgICAg
aWYgKE5TRGF0YSAqcmVzdWx0ID0gW05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6W2xvYWRS
ZXN1bHQgZmlsZVVSTEZvclR5cGU6bG9hZGVkVHlwZV0gb3B0aW9uczpOU0RhdGFSZWFkaW5nTWFw
cGVkSWZTYWZlIGVycm9yOm5pbF0pCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
ICAgICByZXR1cm4gbmlsOwpAQCAtMzc5LDExICs0NDAsMTMgQEAgLSAoTlNJbnRlZ2VyKWNoYW5n
ZUNvdW50CiAgICAgcmV0dXJuIF9jaGFuZ2VDb3VudDsKIH0KIAotLSAoTlNBcnJheTxOU1VSTCAq
PiAqKWZpbGVVUkxzRm9yRGF0YUludGVyYWN0aW9uCistIChOU0FycmF5PE5TVVJMICo+ICopZHJv
cHBlZEZpbGVVUkxzCiB7CiAgICAgTlNNdXRhYmxlQXJyYXk8TlNVUkwgKj4gKmZpbGVVUkxzID0g
W05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBmb3IgKFR5cGVUb0ZpbGVVUkxNYXAgKnR5cGVU
b0ZpbGVVUkxNYXAgaW4gX3R5cGVUb0ZpbGVVUkxNYXBzLmdldCgpKQotICAgICAgICBbZmlsZVVS
THMgYWRkT2JqZWN0c0Zyb21BcnJheTpbdHlwZVRvRmlsZVVSTE1hcCBhbGxWYWx1ZXNdXTsKKyAg
ICBmb3IgKGF1dG8gbG9hZFJlc3VsdCA6IF9sb2FkUmVzdWx0cykgeworICAgICAgICBpZiAoW2xv
YWRSZXN1bHQgY2FuQmVSZXByZXNlbnRlZEFzRmlsZVVwbG9hZF0pCisgICAgICAgICAgICBbZmls
ZVVSTHMgYWRkT2JqZWN0c0Zyb21BcnJheTpbbG9hZFJlc3VsdCBsb2FkZWRGaWxlVVJMc11dOwor
ICAgIH0KICAgICByZXR1cm4gZmlsZVVSTHM7CiB9CiAKQEAgLTQwMiw2ICs0NjUsOSBAQCAtIChO
U0ludGVnZXIpbnVtYmVyT2ZGaWxlcwogICAgIE5TQXJyYXkgKnN1cHBvcnRlZEZpbGVUeXBlcyA9
IFBhc3RlYm9hcmQ6OnN1cHBvcnRlZEZpbGVVcGxvYWRQYXN0ZWJvYXJkVHlwZXMoKTsKICAgICBO
U0ludGVnZXIgbnVtYmVyT2ZGaWxlcyA9IDA7CiAgICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqaXRl
bVByb3ZpZGVyIGluIF9pdGVtUHJvdmlkZXJzLmdldCgpKSB7CisgICAgICAgIGlmIChpdGVtUHJv
dmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gVUlQcmVmZXJyZWRQcmVzZW50YXRp
b25TdHlsZUlubGluZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIGZvciAoTlNT
dHJpbmcgKmlkZW50aWZpZXIgaW4gaXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmll
cnMpIHsKICAgICAgICAgICAgIGlmICghdHlwZUNvbmZvcm1zVG9UeXBlcyhpZGVudGlmaWVyLCBz
dXBwb3J0ZWRGaWxlVHlwZXMpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDU4LDIy
ICs1MjQsMjQgQEAgLSAodm9pZClkb0FmdGVyTG9hZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxl
VVJMczooV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRCbG9jaykKIAogLSAodm9pZClkb0FmdGVyTG9h
ZGluZ1Byb3ZpZGVkQ29udGVudEludG9GaWxlVVJMczooV2ViSXRlbVByb3ZpZGVyRmlsZUxvYWRC
bG9jaylhY3Rpb24gc3luY2hyb25vdXNUaW1lb3V0OihOU1RpbWVJbnRlcnZhbClzeW5jaHJvbm91
c1RpbWVvdXQKIHsKKyAgICBfbG9hZFJlc3VsdHMuY2xlYXIoKTsKKwogICAgIGF1dG8gY2hhbmdl
Q291bnRCZWZvcmVMb2FkaW5nID0gX2NoYW5nZUNvdW50OwotICAgIGF1dG8gdHlwZVRvRmlsZVVS
TE1hcHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6
W19pdGVtUHJvdmlkZXJzIGNvdW50XV0pOworICAgIGF1dG8gbG9hZFJlc3VsdHMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6W19pdGVtUHJvdmlkZXJz
IGNvdW50XV0pOwogCiAgICAgLy8gRmlyc3QsIGZpZ3VyZSBvdXQgd2hpY2ggaXRlbSBwcm92aWRl
cnMgd2Ugd2FudCB0byB0cnkgYW5kIGxvYWQgZmlsZXMgZnJvbS4KICAgICBhdXRvIGl0ZW1Qcm92
aWRlcnNUb0xvYWQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAg
ICBhdXRvIHR5cGVJZGVudGlmaWVyc1RvTG9hZCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOwogICAgIGF1dG8gaW5kaWNlc09maXRlbVByb3ZpZGVyc1RvTG9hZCA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIFJldGFpblB0cjxXZWJJ
dGVtUHJvdmlkZXJQYXN0ZWJvYXJkPiBwcm90ZWN0ZWRTZWxmID0gc2VsZjsKLSAgICBbX2l0ZW1Q
cm92aWRlcnMgZW51bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6W3Byb3RlY3RlZFNlbGYsIGl0ZW1Q
cm92aWRlcnNUb0xvYWQsIHR5cGVJZGVudGlmaWVyc1RvTG9hZCwgaW5kaWNlc09maXRlbVByb3Zp
ZGVyc1RvTG9hZCwgdHlwZVRvRmlsZVVSTE1hcHNdIChVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3Zp
ZGVyLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MICopIHsKKyAgICBbX2l0ZW1Qcm92aWRlcnMgZW51
bWVyYXRlT2JqZWN0c1VzaW5nQmxvY2s6W3Byb3RlY3RlZFNlbGYsIGl0ZW1Qcm92aWRlcnNUb0xv
YWQsIHR5cGVJZGVudGlmaWVyc1RvTG9hZCwgaW5kaWNlc09maXRlbVByb3ZpZGVyc1RvTG9hZCwg
bG9hZFJlc3VsdHNdIChVSUl0ZW1Qcm92aWRlciAqaXRlbVByb3ZpZGVyLCBOU1VJbnRlZ2VyIGlu
ZGV4LCBCT09MICopIHsKICAgICAgICAgTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyVG9Mb2FkID0g
W3Byb3RlY3RlZFNlbGYgdHlwZUlkZW50aWZpZXJUb0xvYWRGb3JSZWdpc3RlcmVkVHlwZUlkZW50
ZmllcnM6aXRlbVByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnNdOwogICAgICAgICBp
ZiAodHlwZUlkZW50aWZpZXJUb0xvYWQpIHsKICAgICAgICAgICAgIFtpdGVtUHJvdmlkZXJzVG9M
b2FkIGFkZE9iamVjdDppdGVtUHJvdmlkZXJdOwogICAgICAgICAgICAgW3R5cGVJZGVudGlmaWVy
c1RvTG9hZCBhZGRPYmplY3Q6dHlwZUlkZW50aWZpZXJUb0xvYWRdOwogICAgICAgICAgICAgW2lu
ZGljZXNPZml0ZW1Qcm92aWRlcnNUb0xvYWQgYWRkT2JqZWN0OkAoaW5kZXgpXTsKICAgICAgICAg
fQotICAgICAgICBbdHlwZVRvRmlsZVVSTE1hcHMgYWRkT2JqZWN0OkB7IH1dOworICAgICAgICBb
bG9hZFJlc3VsdHMgYWRkT2JqZWN0OltXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0IGVtcHR5TG9h
ZFJlc3VsdF1dOwogICAgIH1dOwogCiAgICAgaWYgKCFbaXRlbVByb3ZpZGVyc1RvTG9hZCBjb3Vu
dF0pIHsKQEAgLTQ4OSwxNSArNTU3LDE3IEBAIC0gKHZvaWQpZG9BZnRlckxvYWRpbmdQcm92aWRl
ZENvbnRlbnRJbnRvRmlsZVVSTHM6KFdlYkl0ZW1Qcm92aWRlckZpbGVMb2FkQmxvY2spCiAgICAg
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gdHlwZUlkZW50aWZpZXIgPSBbdHlwZUlkZW50aWZpZXJz
VG9Mb2FkIG9iamVjdEF0SW5kZXg6aW5kZXhdOwogICAgICAgICBOU1VJbnRlZ2VyIGluZGV4SW5J
dGVtUHJvdmlkZXJBcnJheSA9IFtbaW5kaWNlc09maXRlbVByb3ZpZGVyc1RvTG9hZCBvYmplY3RB
dEluZGV4OmluZGV4XSB1bnNpZ25lZEludGVnZXJWYWx1ZV07CiAgICAgICAgIFJldGFpblB0cjxO
U1N0cmluZz4gc3VnZ2VzdGVkTmFtZSA9IFtpdGVtUHJvdmlkZXIgc3VnZ2VzdGVkTmFtZV07Cisg
ICAgICAgIGF1dG8gcHJlc2VudGF0aW9uU3R5bGUgPSBbaXRlbVByb3ZpZGVyIHByZWZlcnJlZFBy
ZXNlbnRhdGlvblN0eWxlXTsKICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfZW50ZXIoZmlsZUxvYWRp
bmdHcm91cC5nZXQoKSk7CiAgICAgICAgIGRpc3BhdGNoX2dyb3VwX2VudGVyKHN5bmNocm9ub3Vz
RmlsZUxvYWRpbmdHcm91cC5nZXQoKSk7Ci0gICAgICAgIFtpdGVtUHJvdmlkZXIgbG9hZEZpbGVS
ZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyLmdldCgpIGNvbXBs
ZXRpb25IYW5kbGVyOltzeW5jaHJvbm91c0ZpbGVMb2FkaW5nR3JvdXAsIHNldEZpbGVVUkxzTG9j
aywgaW5kZXhJbkl0ZW1Qcm92aWRlckFycmF5LCBzdWdnZXN0ZWROYW1lLCB0eXBlSWRlbnRpZmll
ciwgdHlwZVRvRmlsZVVSTE1hcHMsIGZpbGVMb2FkaW5nR3JvdXBdIChOU1VSTCAqdXJsLCBOU0Vy
cm9yICopIHsKKyAgICAgICAgW2l0ZW1Qcm92aWRlciBsb2FkRmlsZVJlcHJlc2VudGF0aW9uRm9y
VHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6W3N5
bmNocm9ub3VzRmlsZUxvYWRpbmdHcm91cCwgc2V0RmlsZVVSTHNMb2NrLCBpbmRleEluSXRlbVBy
b3ZpZGVyQXJyYXksIHN1Z2dlc3RlZE5hbWUsIHR5cGVJZGVudGlmaWVyLCBsb2FkUmVzdWx0cywg
ZmlsZUxvYWRpbmdHcm91cCwgcHJlc2VudGF0aW9uU3R5bGVdIChOU1VSTCAqdXJsLCBOU0Vycm9y
ICopIHsKICAgICAgICAgICAgIC8vIEFmdGVyIGV4ZWN1dGluZyB0aGlzIGNvbXBsZXRpb24gYmxv
Y2ssIFVJS2l0IHJlbW92ZXMgdGhlIGZpbGUgYXQgdGhlIGdpdmVuIFVSTC4gSG93ZXZlciwgd2Ug
bmVlZCB0aGlzIGRhdGEgdG8gcGVyc2lzdCBsb25nZXIgZm9yIHRoZSB3ZWIgY29udGVudCBwcm9j
ZXNzLgogICAgICAgICAgICAgLy8gVG8gYWRkcmVzcyB0aGlzLCB3ZSBoYXJkIGxpbmsgdGhlIGdp
dmVuIFVSTCB0byBhIG5ldyB0ZW1wb3JhcnkgZmlsZSBpbiB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9y
eS4gVGhpcyBmb2xsb3dzIHRoZSBzYW1lIGZsb3cgYXMgcmVndWxhciBmaWxlIHVwbG9hZCwgaW4K
ICAgICAgICAgICAgIC8vIFdLRmlsZVVwbG9hZFBhbmVsLm1tLiBUaGUgdGVtcG9yYXJ5IGZpbGVz
IGFyZSBjbGVhbmVkIHVwIGJ5IHRoZSBzeXN0ZW0gYXQgYSBsYXRlciB0aW1lLgogICAgICAgICAg
ICAgaWYgKE5TVVJMICpkZXN0aW5hdGlvbiA9IGxpbmtUZW1wb3JhcnlJdGVtUHJvdmlkZXJGaWxl
c1RvRHJvcFN0YWdpbmdEaXJlY3RvcnkodXJsLCBzdWdnZXN0ZWROYW1lLmdldCgpLCB0eXBlSWRl
bnRpZmllci5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBXZWJJdGVtUHJvdmlkZXJMb2FkUmVz
dWx0ICpsb2FkUmVzdWx0ID0gW1dlYkl0ZW1Qcm92aWRlckxvYWRSZXN1bHQgbG9hZFJlc3VsdFdp
dGhGaWxlVVJMTWFwOkB7IHR5cGVJZGVudGlmaWVyLmdldCgpIDogZGVzdGluYXRpb24gfSBwcmVz
ZW50YXRpb25TdHlsZTpwcmVzZW50YXRpb25TdHlsZV07CiAgICAgICAgICAgICAgICAgW3NldEZp
bGVVUkxzTG9jayBsb2NrXTsKLSAgICAgICAgICAgICAgICBbdHlwZVRvRmlsZVVSTE1hcHMgc2V0
T2JqZWN0OltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6ZGVzdGluYXRpb24gZm9y
S2V5OnR5cGVJZGVudGlmaWVyLmdldCgpXSBhdEluZGV4ZWRTdWJzY3JpcHQ6aW5kZXhJbkl0ZW1Q
cm92aWRlckFycmF5XTsKKyAgICAgICAgICAgICAgICBbbG9hZFJlc3VsdHMgc2V0T2JqZWN0Omxv
YWRSZXN1bHQgYXRJbmRleGVkU3Vic2NyaXB0OmluZGV4SW5JdGVtUHJvdmlkZXJBcnJheV07CiAg
ICAgICAgICAgICAgICAgW3NldEZpbGVVUkxzTG9jayB1bmxvY2tdOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZGlzcGF0Y2hfZ3JvdXBfbGVhdmUoZmlsZUxvYWRpbmdHcm91cC5nZXQoKSk7
CkBAIC01MDYsMTEgKzU3NiwxMyBAQCAtICh2b2lkKWRvQWZ0ZXJMb2FkaW5nUHJvdmlkZWRDb250
ZW50SW50b0ZpbGVVUkxzOihXZWJJdGVtUHJvdmlkZXJGaWxlTG9hZEJsb2NrKQogICAgIH0KIAog
ICAgIFJldGFpblB0cjxXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkPiByZXRhaW5lZFNlbGYgPSBz
ZWxmOwotICAgIGF1dG8gaXRlbUxvYWRDb21wbGV0aW9uID0gW3JldGFpbmVkU2VsZiwgc3luY2hy
b25vdXNGaWxlTG9hZGluZ0dyb3VwLCBmaWxlTG9hZGluZ0dyb3VwLCB0eXBlVG9GaWxlVVJMTWFw
cywgY29tcGxldGlvbkJsb2NrID0gbWFrZUJsb2NrUHRyKGFjdGlvbiksIGNoYW5nZUNvdW50QmVm
b3JlTG9hZGluZ10gewotICAgICAgICBpZiAoY2hhbmdlQ291bnRCZWZvcmVMb2FkaW5nID09IHJl
dGFpbmVkU2VsZi0+X2NoYW5nZUNvdW50KQotICAgICAgICAgICAgcmV0YWluZWRTZWxmLT5fdHlw
ZVRvRmlsZVVSTE1hcHMgPSB0eXBlVG9GaWxlVVJMTWFwczsKKyAgICBhdXRvIGl0ZW1Mb2FkQ29t
cGxldGlvbiA9IFtyZXRhaW5lZFNlbGYsIHN5bmNocm9ub3VzRmlsZUxvYWRpbmdHcm91cCwgZmls
ZUxvYWRpbmdHcm91cCwgbG9hZFJlc3VsdHMsIGNvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0
cihhY3Rpb24pLCBjaGFuZ2VDb3VudEJlZm9yZUxvYWRpbmddIHsKKyAgICAgICAgaWYgKGNoYW5n
ZUNvdW50QmVmb3JlTG9hZGluZyA9PSByZXRhaW5lZFNlbGYtPl9jaGFuZ2VDb3VudCkgeworICAg
ICAgICAgICAgZm9yIChXZWJJdGVtUHJvdmlkZXJMb2FkUmVzdWx0ICpsb2FkUmVzdWx0IGluIGxv
YWRSZXN1bHRzLmdldCgpKQorICAgICAgICAgICAgICAgIHJldGFpbmVkU2VsZi0+X2xvYWRSZXN1
bHRzLmFwcGVuZChsb2FkUmVzdWx0KTsKKyAgICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRpb25C
bG9jayhbcmV0YWluZWRTZWxmIGZpbGVVUkxzRm9yRGF0YUludGVyYWN0aW9uXSk7CisgICAgICAg
IGNvbXBsZXRpb25CbG9jayhbcmV0YWluZWRTZWxmIGRyb3BwZWRGaWxlVVJMc10pOwogICAgIH07
CiAKICAgICBpZiAoc3luY2hyb25vdXNUaW1lb3V0ID4gMCAmJiAhZGlzcGF0Y2hfZ3JvdXBfd2Fp
dChzeW5jaHJvbm91c0ZpbGVMb2FkaW5nR3JvdXAuZ2V0KCksIGRpc3BhdGNoX3RpbWUoRElTUEFU
Q0hfVElNRV9OT1csIHN5bmNocm9ub3VzVGltZW91dCAqIE5TRUNfUEVSX1NFQykpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvRHJhZ0RhdGFNYWMubW0KaW5kZXggOGU1NmI1ZmE5ZDM5
M2ZhYmUxZmMyZTk2YWZjNmIzNTJjYjNmMThjMi4uOGZmNDEzMmRlNjIzNjk1ZTlmOThjODAxZGJl
N2IwMTg2Mzc3MGExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0Ry
YWdEYXRhTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9EcmFnRGF0YU1h
Yy5tbQpAQCAtMTYwLDE3ICsxNjAsNyBAQCBib29sIERyYWdEYXRhOjpjb250YWluc0NvbG9yKCkg
Y29uc3QKIAogYm9vbCBEcmFnRGF0YTo6Y29udGFpbnNGaWxlcygpIGNvbnN0CiB7Ci0gICAgTlNB
cnJheSAqc3VwcG9ydGVkRmlsZVR5cGVzID0gUGFzdGVib2FyZDo6c3VwcG9ydGVkRmlsZVVwbG9h
ZFBhc3RlYm9hcmRUeXBlcygpOwotICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIHBsYXRm
b3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+Z2V0VHlwZXModHlwZXMsIG1f
cGFzdGVib2FyZE5hbWUpOwotICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzKSB7Ci0gICAgICAg
IGF1dG8gY2ZUeXBlID0gdHlwZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICBmb3IgKE5TU3Ry
aW5nICpmaWxlVHlwZSBpbiBzdXBwb3J0ZWRGaWxlVHlwZXMpIHsKLSAgICAgICAgICAgIGlmIChV
VFR5cGVDb25mb3Jtc1RvKGNmVHlwZS5nZXQoKSwgKENGU3RyaW5nUmVmKWZpbGVUeXBlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG51bWJlck9mRmlsZXMoKTsKIH0KIAogdW5zaWduZWQgRHJhZ0Rh
dGE6Om51bWJlck9mRmlsZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViNWMxZDliZjliNGYwODY1NDMxZmFhODlkMjE5ODU1MGJm
ZjFkMjkuLjVlNTRjZDcxNzlkMjQ2MDUzZmQxNDdmMjAxYmJjYmJiOTA5ZDE4ZTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAxNy0wOS0xMiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbaU9TIERuRF0gU3VwcG9ydCBEYXRhVHJhbnNmZXIuZ2V0RGF0YSBhbmQgRGF0YVRy
YW5zZmVyLnNldERhdGEgd2hlbiBkcmFnZ2luZyBvciBkcm9wcGluZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NjcyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8zNDM1MzcyMz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRzIG5ldyB0ZXN0cyBhbmQgdHdlYWtzIGV4aXN0aW5nIERhdGFJbnRlcmFj
dGlvblRlc3RzIHRvIGNvdmVyIHRoZSB0d2Vha3MgbWFkZSBpbiB0aGlzIHBhdGNoLgorICAgICAg
ICBTaW5nbGVQbGFpblRleHRVUkxUeXBlSWRlbnRpZmllcnM6IFZlcmlmeSB0aGF0IGlubGluZSBw
cmVzZW50YXRpb24gc3R5bGUgaXMgcmVxdWVzdGVkIHdoZW4gZHJhZ2dpbmcgcGxhaW50ZXh0Lgor
ICAgICAgICBTaW5nbGVQbGFpblRleHRXb3JkVHlwZUlkZW50aWZpZXJzOiBWZXJpZnkgdGhhdCBp
bmxpbmUgcHJlc2VudGF0aW9uIHN0eWxlIGlzIHJlcXVlc3RlZCB3aGVuIGRyYWdnaW5nIGEgbGlu
ay4KKyAgICAgICAgRXh0ZXJuYWxTb3VyY2VJbmxpbmVUZXh0VG9GaWxlSW5wdXQ6CisgICAgICAg
ICAgICAgICAgVmVyaWZ5IHRoYXQgYW4gaXRlbSBwcm92aWRlciBtYXJrZWQgYXMgcHJlZmVycmlu
ZyBpbmxpbmUgcHJlc2VudGF0aW9uIGRvZXMgbm90IHRyaWdnZXIgZmlsZSB1cGxvYWRzIGJ5Cisg
ICAgICAgICAgICAgICAgZHJhZ2dpbmcgYSBwaWVjZSBvZiBpbmxpbmUgdGV4dCBpbnRvIGEgZmls
ZSBpbnB1dC4KKyAgICAgICAgQ2FuU3RhcnREcmFnT25EaXZXaXRoRHJhZ2dhYmxlQXR0cmlidXRl
OgorICAgICAgICAgICAgICAgIFZlcmlmeSB0aGF0IERhdGFUcmFuc2Zlci5zZXREYXRhIGFuZCBE
YXRhVHJhbnNmZXIuZ2V0RGF0YSB3b3JrIGFzIGV4cGVjdGVkIGJ5IG1vdmluZyBhIGRyYWdnYWJs
ZSBkaXYuCisgICAgICAgICAgICAgICAgVGhlIHRlc3QgaGFybmVzcyB3cml0ZXMgdGhlIGlkIG9m
IHRoZSBkcmFnZ2FibGUgZGl2IHZpYSB0aGUgRGF0YVRyYW5zZmVyLCBhbmQgdXBvbiBkcm9wLCBy
ZWFkcyB0aGUgaWQKKyAgICAgICAgICAgICAgICBiYWNrIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZWxl
bWVudCB0byBhcHBlbmQgdG8gdGhlIGRyb3AgZGVzdGluYXRpb24uCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDE3LTA5LTExICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgV0syXSBTdXBwb3J0IHRhcHBpbmcgdG8g
YWRkIGl0ZW1zIHRvIHRoZSBjdXJyZW50IGRyYWcgc2Vzc2lvbiBpbiB3ZWIgY29udGVudApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVz
dHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0
cy5tbQppbmRleCA1ZDU1YzAxNDU0ODcxMjA2YWIwOTcxYzFkYTYyOWNmZDAxMzU1ODNlLi44NWQ5
NjRmNGZkNzdlMjYwY2ZiMzkwY2E0MjYxNmM1MzBjNTkwMGY2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAtNDAz
LDEwICs0MDMsMTIgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgU2luZ2xlUGxhaW5UZXh0
V29yZFR5cGVJZGVudGlmaWVycykKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAic291cmNlLnNlbGVjdGlvbkVuZCA9IHNvdXJjZS52YWx1ZS5sZW5ndGgiXTsKICAg
ICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAwLCA1MCkg
dG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKIAotICAgIE5TQXJyYXkgKnJlZ2lzdGVyZWRUeXBl
cyA9IFtbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRlcnNdLmZpcnN0
T2JqZWN0IHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnNdOworICAgIE5TSXRlbVByb3ZpZGVyICpp
dGVtUHJvdmlkZXIgPSBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRl
cnNdLmZpcnN0T2JqZWN0OworICAgIE5TQXJyYXkgKnJlZ2lzdGVyZWRUeXBlcyA9IFtpdGVtUHJv
dmlkZXIgcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyc107CiAgICAgRVhQRUNUX0VRKDFVTCwgcmVn
aXN0ZXJlZFR5cGVzLmNvdW50KTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoWyhOU1N0cmluZyAqKWtV
VFR5cGVVVEY4UGxhaW5UZXh0IFVURjhTdHJpbmddLCBbcmVnaXN0ZXJlZFR5cGVzLmZpcnN0T2Jq
ZWN0IFVURjhTdHJpbmddKTsKICAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAInNvdXJjZS52YWx1ZSJdLmxlbmd0aCwgMFVMKTsKKyAgICBFWFBFQ1Rf
RVEoVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZSwgaXRlbVByb3ZpZGVyLnByZWZl
cnJlZFByZXNlbnRhdGlvblN0eWxlKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoInBuZXVtb25vdWx0
cmFtaWNyb3Njb3BpY3NpbGljb3ZvbGNhbm9jb25pb3NpcyIsIFt3ZWJWaWV3IGVkaXRvclZhbHVl
XS5VVEY4U3RyaW5nKTsKIH0KIApAQCAtNDIyLDExICs0MjQsMTMgQEAgVEVTVChEYXRhSW50ZXJh
Y3Rpb25UZXN0cywgU2luZ2xlUGxhaW5UZXh0VVJMVHlwZUlkZW50aWZpZXJzKQogICAgIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2Uuc2VsZWN0aW9uRW5kID0g
c291cmNlLnZhbHVlLmxlbmd0aCJdOwogICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVu
RnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwogCi0g
ICAgTlNBcnJheSAqcmVnaXN0ZXJlZFR5cGVzID0gW1tkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
c291cmNlSXRlbVByb3ZpZGVyc10uZmlyc3RPYmplY3QgcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVy
c107CisgICAgTlNJdGVtUHJvdmlkZXIgKml0ZW1Qcm92aWRlciA9IFtkYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3Igc291cmNlSXRlbVByb3ZpZGVyc10uZmlyc3RPYmplY3Q7CisgICAgTlNBcnJheSAq
cmVnaXN0ZXJlZFR5cGVzID0gW2l0ZW1Qcm92aWRlciByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJz
XTsKICAgICBFWFBFQ1RfRVEoMlVMLCByZWdpc3RlcmVkVHlwZXMuY291bnQpOwogICAgIEVYUEVD
VF9XS19TVFJFUShbKE5TU3RyaW5nICopa1VUVHlwZVVSTCBVVEY4U3RyaW5nXSwgW3JlZ2lzdGVy
ZWRUeXBlcy5maXJzdE9iamVjdCBVVEY4U3RyaW5nXSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKFso
TlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCBVVEY4U3RyaW5nXSwgW3JlZ2lzdGVyZWRU
eXBlcy5sYXN0T2JqZWN0IFVURjhTdHJpbmddKTsKICAgICBFWFBFQ1RfRVEoMFVMLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic291cmNlLnZhbHVlIl0ubGVuZ3RoKTsK
KyAgICBFWFBFQ1RfRVEoVUlQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZUlubGluZSwgaXRlbVBy
b3ZpZGVyLnByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEo
Imh0dHBzOi8vd2Via2l0Lm9yZy8iLCBbd2ViVmlldyBlZGl0b3JWYWx1ZV0uVVRGOFN0cmluZyk7
CiB9CiAKQEAgLTUzMiw5ICs1MzYsMTMgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ2Fu
U3RhcnREcmFnT25EaXZXaXRoRHJhZ2dhYmxlQXR0cmlidXRlKQogICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAImN1c3RvbS1kcmFnZ2FibGUtZGl2Il07CiAKICAg
ICBhdXRvIGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7Ci0gICAg
W2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgMTAwKSB0
bzpDR1BvaW50TWFrZSgyNTAsIDEwMCldOworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Ig
cnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDEwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAyNTApXTsK
IAogICAgIEVYUEVDVF9HVChbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92
aWRlcnNdLmNvdW50LCAwVUwpOworICAgIE5TSXRlbVByb3ZpZGVyICppdGVtUHJvdmlkZXIgPSBb
ZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRlcnNdLmZpcnN0T2JqZWN0
OworICAgIEVYUEVDVF9FUShVSVByZWZlcnJlZFByZXNlbnRhdGlvblN0eWxlSW5saW5lLCBpdGVt
UHJvdmlkZXIucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUpOworICAgIEVYUEVDVF9UUlVFKFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCIhIWRlc3RpbmF0aW9uLnF1ZXJ5
U2VsZWN0b3IoJyNpdGVtJykiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAiUEFTUyIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtLnRleHRDb250ZW50Il0pOwog
fQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBFeHRlcm5hbFNvdXJjZVBsYWluVGV4dFRv
SUZyYW1lKQpAQCAtNTU2LDYgKzU2NCwyMiBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBF
eHRlcm5hbFNvdXJjZVBsYWluVGV4dFRvSUZyYW1lKQogICAgIGNoZWNrRHJhZ0NhcmV0UmVjdElz
Q29udGFpbmVkSW5SZWN0KFtzaW11bGF0b3IgbGFzdEtub3duRHJhZ0NhcmV0UmVjdF0sIENHUmVj
dE1ha2UoY29udGFpbmVyTGVmdCwgY29udGFpbmVyVG9wLCBjb250YWluZXJXaWR0aCwgY29udGFp
bmVySGVpZ2h0KSk7CiB9CiAKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEV4dGVybmFsU291
cmNlSW5saW5lVGV4dFRvRmlsZUlucHV0KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAi
ZmlsZS11cGxvYWRpbmciXTsKKworICAgIGF1dG8gc2ltdWxhdGVkSXRlbVByb3ZpZGVyID0gYWRv
cHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW3NpbXVsYXRlZEl0ZW1Q
cm92aWRlciBzZXRQcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZTpVSVByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlSW5saW5lXTsKKyAgICBbc2ltdWxhdGVkSXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2Jq
ZWN0OkAiVGhpcyBpdGVtIHByb3ZpZGVyIHJlcXVlc3RlZCBpbmxpbmUgcHJlc2VudGF0aW9uIHN0
eWxlLiIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFs
bF07CisKKyAgICBhdXRvIGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgp
XSk7CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRl
cnM6QFsgc2ltdWxhdGVkSXRlbVByb3ZpZGVyLmdldCgpIF1dOworICAgIFtkYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgyMDAsIDEwMCkgdG86Q0dQb2ludE1ha2Uo
MTAwLCAxMDApXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAIm91dHB1dC52YWx1ZSJdKTsKK30KKwogVEVTVChEYXRhSW50
ZXJhY3Rpb25UZXN0cywgRXh0ZXJuYWxTb3VyY2VKU09OVG9GaWxlSW5wdXQpCiB7CiAgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>