<?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>193693</bug_id>
          
          <creation_ts>2019-01-22 15:54:40 -0800</creation_ts>
          <short_desc>Resync libwebrtc with latest M72 branch</short_desc>
          <delta_ts>2019-01-24 15:56:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1497044</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-22 15:54:40 -0800</bug_when>
    <thetext>Some additional bugs were fixed that are useful for unified plan support and video conferencing, including:
- legacy endpoints mid support
- bandwidth estimation with several senders
- stream id handling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497049</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-22 15:57:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/47463803&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497050</commentid>
    <comment_count>2</comment_count>
      <attachid>359795</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-22 15:58:17 -0800</bug_when>
    <thetext>Created attachment 359795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497067</commentid>
    <comment_count>3</comment_count>
      <attachid>359799</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-22 16:12:23 -0800</bug_when>
    <thetext>Created attachment 359799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497175</commentid>
    <comment_count>4</comment_count>
      <attachid>359799</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-01-22 19:48:24 -0800</bug_when>
    <thetext>Comment on attachment 359799
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497198</commentid>
    <comment_count>5</comment_count>
      <attachid>359799</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-22 20:43:00 -0800</bug_when>
    <thetext>Comment on attachment 359799
Patch

Clearing flags on attachment: 359799

Committed r240320: &lt;https://trac.webkit.org/changeset/240320&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1497199</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-22 20:43:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1498006</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-01-24 15:56:13 -0800</bug_when>
    <thetext>*** Bug 192247 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359795</attachid>
            <date>2019-01-22 15:58:17 -0800</date>
            <delta_ts>2019-01-22 16:12:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193693-20190122155816.patch</filename>
            <type>text/plain</type>
            <size>63870</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA5OGNiNjIxMmUxODc2NTZmN2I0NmIxNzZjZTYzZjU3OTZmMDgyMDc5Li5mY2Mw
YjY1ZmYzYmJiOGVhZTRiZDA2ZjUxNWMzMDNkNDBlOTlkNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOS0wMS0yMiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzeW5jIGxpYndlYnJ0YyB3aXRo
IGxhdGVzdCBNNzIgYnJhbmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTM2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgbGlid2VicnRjIHVwIHRvIGxhdGVzdCBNNzIgYnJhbmNoIHRvIGZp
eCBzb21lIGlkZW50aWZpZWQgaXNzdWVzOgorICAgICAgICAtIEJhZCBiYW5kd2lkdGggZXN0aW1h
dGlvbiBpbiBjYXNlIG9mIG11bHRpcGxlIHRyYW5zY2VpdmVycworICAgICAgICAtIG1pZCBoYW5k
bGluZyBmb3IgbGVnYWN5IGVuZHBvaW50cworICAgICAgICAtIG1zaWQgaGFuZGxpbmcgZm9yIHVw
ZGF0aW5nIG1lZGlhc3RyZWFtcyBhY2NvcmRpbmdseS4KKworICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2Uu
Y2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJv
bC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfdW5pdHRlc3QuY2M6CisgICAgICAg
ICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9zZW5kX3NpZGVf
Y29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvcGMvanNlcHNlc3Npb25kZXNjcmlwdGlvbl91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3Vy
Y2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Bj
L21lZGlhc2Vzc2lvbl91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uLmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2pzZXBfdW5p
dHRlc3QuY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9tZWRp
YV91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9u
X3J0cF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNj
cmlwdGlvbi5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlv
bi5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwLmNjOgorICAgICAgICAq
IFNvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwX3VuaXR0ZXN0LmNjOgorICAgICAgICAqIFNvdXJj
ZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oOgorICAgICAgICAqIFNv
dXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ246CisKIDIwMTktMDEtMTcgIFRydWl0dCBTYXZlbGwg
IDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjQwMTI0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9i
d2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5jYwppbmRleCA0
ODk0Yzk4NjNiNjgzNjExM2M1ZTEzYmJhYzM5ZDQ4OTJjZTcwOWU5Li5hNzZhZGIwMWM2OTk3ZWNh
NmRiMDBmN2IzMzA2YjYwNDA0NWU5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL2RlbGF5X2Jhc2VkX2J3ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5
X2Jhc2VkX2J3ZS5jYwpAQCAtNDYsOCArNDYsNiBAQCBjb25zdGV4cHIgc2l6ZV90IGtEZWZhdWx0
VHJlbmRsaW5lV2luZG93U2l6ZSA9IDIwOwogY29uc3RleHByIGRvdWJsZSBrRGVmYXVsdFRyZW5k
bGluZVNtb290aGluZ0NvZWZmID0gMC45OwogY29uc3RleHByIGRvdWJsZSBrRGVmYXVsdFRyZW5k
bGluZVRocmVzaG9sZEdhaW4gPSA0LjA7CiAKLWNvbnN0ZXhwciBpbnQga01heENvbnNlY3V0aXZl
RmFpbGVkTG9va3VwcyA9IDU7Ci0KIGNvbnN0IGNoYXIga0J3ZVdpbmRvd1NpemVJblBhY2tldHNF
eHBlcmltZW50W10gPQogICAgICJXZWJSVEMtQndlV2luZG93U2l6ZUluUGFja2V0cyI7CiAKQEAg
LTk0LDcgKzkyLDYgQEAgRGVsYXlCYXNlZEJ3ZTo6RGVsYXlCYXNlZEJ3ZShSdGNFdmVudExvZyog
ZXZlbnRfbG9nKQogICAgICAgICAgICAgICA6IGtEZWZhdWx0VHJlbmRsaW5lV2luZG93U2l6ZSks
CiAgICAgICB0cmVuZGxpbmVfc21vb3RoaW5nX2NvZWZmXyhrRGVmYXVsdFRyZW5kbGluZVNtb290
aGluZ0NvZWZmKSwKICAgICAgIHRyZW5kbGluZV90aHJlc2hvbGRfZ2Fpbl8oa0RlZmF1bHRUcmVu
ZGxpbmVUaHJlc2hvbGRHYWluKSwKLSAgICAgIGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tz
XygwKSwKICAgICAgIHByZXZfYml0cmF0ZV8oRGF0YVJhdGU6Olplcm8oKSksCiAgICAgICBwcmV2
X3N0YXRlXyhCYW5kd2lkdGhVc2FnZTo6a0J3Tm9ybWFsKSB7CiAgIFJUQ19MT0coTFNfSU5GTykK
QEAgLTE0Nyw0MyArMTQ0LDEyIEBAIERlbGF5QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndl
OjpJbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAogICB9CiAKICAgaWYgKGRlbGF5ZWRfZmVl
ZGJhY2spIHsKLSAgICBUaW1lc3RhbXAgYXJyaXZhbF90aW1lID0gVGltZXN0YW1wOjpQbHVzSW5m
aW5pdHkoKTsKLSAgICBpZiAocGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5iYWNrKCkuYXJyaXZhbF90
aW1lX21zID4gMCkKLSAgICAgIGFycml2YWxfdGltZSA9Ci0gICAgICAgICAgVGltZXN0YW1wOjpt
cyhwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLmJhY2soKS5hcnJpdmFsX3RpbWVfbXMpOwotICAgIHJl
dHVybiBPbkRlbGF5ZWRGZWVkYmFjayhhcnJpdmFsX3RpbWUpOwotCi0gIH0gZWxzZSB7Ci0gICAg
Y29uc2VjdXRpdmVfZGVsYXllZF9mZWVkYmFja3NfID0gMDsKLSAgICByZXR1cm4gTWF5YmVVcGRh
dGVFc3RpbWF0ZShhY2tlZF9iaXRyYXRlLCBwcm9iZV9iaXRyYXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlY292ZXJlZF9mcm9tX292ZXJ1c2UsIGF0X3RpbWUpOwotICB9Ci0g
IHJldHVybiBSZXN1bHQoKTsKLX0KLQotRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IERlbGF5QmFzZWRC
d2U6Ok9uRGVsYXllZEZlZWRiYWNrKFRpbWVzdGFtcCByZWNlaXZlX3RpbWUpIHsKLSAgKytjb25z
ZWN1dGl2ZV9kZWxheWVkX2ZlZWRiYWNrc187Ci0gIGlmIChjb25zZWN1dGl2ZV9kZWxheWVkX2Zl
ZWRiYWNrc18gPj0ga01heENvbnNlY3V0aXZlRmFpbGVkTG9va3VwcykgewotICAgIGNvbnNlY3V0
aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXyA9IDA7Ci0gICAgcmV0dXJuIE9uTG9uZ0ZlZWRiYWNrRGVs
YXkocmVjZWl2ZV90aW1lKTsKKyAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy8xMDEyNSk6IERl
c2lnbiBhIGJldHRlciBtZWNoYW5pc20gdG8gc2FmZS1ndWFyZAorICAgIC8vIGFnYWluc3QgYnVp
bGRpbmcgdmVyeSBsYXJnZSBuZXR3b3JrIHF1ZXVlcy4KKyAgICByZXR1cm4gUmVzdWx0KCk7CiAg
IH0KLSAgcmV0dXJuIFJlc3VsdCgpOwotfQotCi1EZWxheUJhc2VkQndlOjpSZXN1bHQgRGVsYXlC
YXNlZEJ3ZTo6T25Mb25nRmVlZGJhY2tEZWxheSgKLSAgICBUaW1lc3RhbXAgYXJyaXZhbF90aW1l
KSB7Ci0gIC8vIEVzdGltYXRlIHNob3VsZCBhbHdheXMgYmUgdmFsaWQgc2luY2UgYSBzdGFydCBi
aXRyYXRlIGFsd2F5cyBpcyBzZXQgaW4gdGhlCi0gIC8vIENhbGwgY29uc3RydWN0b3IuIEFuIGFs
dGVybmF0aXZlIHdvdWxkIGJlIHRvIHJldHVybiBhbiBlbXB0eSBSZXN1bHQgaGVyZSwKLSAgLy8g
b3IgdG8gZXN0aW1hdGUgdGhlIHRocm91Z2hwdXQgYmFzZWQgb24gdGhlIGZlZWRiYWNrIHdlIHJl
Y2VpdmVkLgotICBSVENfRENIRUNLKHJhdGVfY29udHJvbF8uVmFsaWRFc3RpbWF0ZSgpKTsKLSAg
cmF0ZV9jb250cm9sXy5TZXRFc3RpbWF0ZShyYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCkg
LyAyLCBhcnJpdmFsX3RpbWUpOwotICBSZXN1bHQgcmVzdWx0OwotICByZXN1bHQudXBkYXRlZCA9
IHRydWU7Ci0gIHJlc3VsdC5wcm9iZSA9IGZhbHNlOwotICByZXN1bHQudGFyZ2V0X2JpdHJhdGUg
PSByYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7Ci0gIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIkxvbmcgZmVlZGJhY2sgZGVsYXkgZGV0ZWN0ZWQsIHJlZHVjaW5nIEJXRSB0byAiCi0gICAg
ICAgICAgICAgICAgICAgICAgPDwgVG9TdHJpbmcocmVzdWx0LnRhcmdldF9iaXRyYXRlKTsKLSAg
cmV0dXJuIHJlc3VsdDsKKyAgcmV0dXJuIE1heWJlVXBkYXRlRXN0aW1hdGUoYWNrZWRfYml0cmF0
ZSwgcHJvYmVfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcmVk
X2Zyb21fb3ZlcnVzZSwgYXRfdGltZSk7CiB9CiAKIHZvaWQgRGVsYXlCYXNlZEJ3ZTo6SW5jb21p
bmdQYWNrZXRGZWVkYmFjaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVs
YXlfYmFzZWRfYndlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5o
CmluZGV4IDYxNmM1YjA4OTZiZGYyZmUwMzQ5MGI3NDhlYTBjZTM0MTllOGRhYzYuLmVhZDYwZjMw
MTJhMzk5YjY3NGRlYTI3YzljMjIxMDMyMjE1MzNiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9kZWxheV9iYXNlZF9id2UuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBEZWxheUJhc2VkQndl
IHsKICAgICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBhY2tlZF9iaXRyYXRlLAogICAgICAg
YWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IHByb2JlX2JpdHJhdGUsCiAgICAgICBUaW1lc3RhbXAg
YXRfdGltZSk7Ci0gIFJlc3VsdCBPbkRlbGF5ZWRGZWVkYmFjayhUaW1lc3RhbXAgcmVjZWl2ZV90
aW1lKTsKICAgdm9pZCBPblJ0dFVwZGF0ZShUaW1lRGVsdGEgYXZnX3J0dCk7CiAgIGJvb2wgTGF0
ZXN0RXN0aW1hdGUoc3RkOjp2ZWN0b3I8dWludDMyX3Q+KiBzc3JjcywgRGF0YVJhdGUqIGJpdHJh
dGUpIGNvbnN0OwogICB2b2lkIFNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZSBzdGFydF9iaXRyYXRl
KTsKQEAgLTYwLDcgKzU5LDYgQEAgY2xhc3MgRGVsYXlCYXNlZEJ3ZSB7CiAgIGZyaWVuZCBjbGFz
cyBHb29nQ2NTdGF0ZVByaW50ZXI7CiAgIHZvaWQgSW5jb21pbmdQYWNrZXRGZWVkYmFjayhjb25z
dCBQYWNrZXRGZWVkYmFjayYgcGFja2V0X2ZlZWRiYWNrLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpOwotICBSZXN1bHQgT25Mb25nRmVlZGJhY2tEZWxh
eShUaW1lc3RhbXAgYXJyaXZhbF90aW1lKTsKICAgUmVzdWx0IE1heWJlVXBkYXRlRXN0aW1hdGUo
YWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja2VkX2JpdHJhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBwcm9iZV9iaXRyYXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlcXVlc3RfcHJvYmUsCkBAIC04MSw3ICs3
OSw2IEBAIGNsYXNzIERlbGF5QmFzZWRCd2UgewogICBzaXplX3QgdHJlbmRsaW5lX3dpbmRvd19z
aXplXzsKICAgZG91YmxlIHRyZW5kbGluZV9zbW9vdGhpbmdfY29lZmZfOwogICBkb3VibGUgdHJl
bmRsaW5lX3RocmVzaG9sZF9nYWluXzsKLSAgaW50IGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJh
Y2tzXzsKICAgRGF0YVJhdGUgcHJldl9iaXRyYXRlXzsKICAgQmFuZHdpZHRoVXNhZ2UgcHJldl9z
dGF0ZV87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3
b3JrX2NvbnRyb2wuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19j
b250cm9sLmNjCmluZGV4IDQzNzY5NTNiN2NjMWNmNDkzNWMyMmFiMmE4N2RlOTBlZmMwZTllMzYu
Ljk4MmRkMDVkNDdjMDM5MjMzNDQwZTFkNmU4NDkyODVlZmVlMmY1MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5jYwpAQCAtMzk0LDE1
ICszOTQsOSBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6
T25UcmFuc3BvcnRMb3NzUmVwb3J0KAogTmV0d29ya0NvbnRyb2xVcGRhdGUgR29vZ0NjTmV0d29y
a0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKAogICAgIFRyYW5zcG9ydFBh
Y2tldHNGZWVkYmFjayByZXBvcnQpIHsKICAgaWYgKHJlcG9ydC5wYWNrZXRfZmVlZGJhY2tzLmVt
cHR5KCkpIHsKLSAgICBEZWxheUJhc2VkQndlOjpSZXN1bHQgcmVzdWx0ID0gZGVsYXlfYmFzZWRf
YndlXy0+T25EZWxheWVkRmVlZGJhY2soCi0gICAgICAgIHJlcG9ydC5zZW5kbGVzc19hcnJpdmFs
X3RpbWVzLmJhY2soKSk7Ci0gICAgTmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRlOwotICAgIGlm
IChyZXN1bHQudXBkYXRlZCkgewotICAgICAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5VcGRhdGVE
ZWxheUJhc2VkRXN0aW1hdGUocmVwb3J0LmZlZWRiYWNrX3RpbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudGFyZ2V0X2JpdHJh
dGUpOwotICAgICAgTWF5YmVUcmlnZ2VyT25OZXR3b3JrQ2hhbmdlZCgmdXBkYXRlLCByZXBvcnQu
ZmVlZGJhY2tfdGltZSk7Ci0gICAgfQotICAgIHJldHVybiB1cGRhdGU7CisgICAgLy8gVE9ETyhi
dWdzLndlYnJ0Yy5vcmcvMTAxMjUpOiBEZXNpZ24gYSBiZXR0ZXIgbWVjaGFuaXNtIHRvIHNhZmUt
Z3VhcmQKKyAgICAvLyBhZ2FpbnN0IGJ1aWxkaW5nIHZlcnkgbGFyZ2UgbmV0d29yayBxdWV1ZXMu
CisgICAgcmV0dXJuIE5ldHdvcmtDb250cm9sVXBkYXRlKCk7CiAgIH0KIAogICBpZiAoY29uZ2Vz
dGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sX3VuaXR0ZXN0LmNjCmlu
ZGV4IGZlY2QxYjMyZDQ2NGJjYWIwNGFhZjM3YWNiZjBlNDliNDBhMTNhYmMuLmVlMmE2YzIyYTdi
NmIyYTlmMDBhMzAzNTZhNDk5ZWZkOGFkMTNjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbF91bml0dGVzdC5jYwpAQCAt
MTkzLDc0ICsxOTMsNiBAQCBURVNUX0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBQcm9i
ZU9uUm91dGVDaGFuZ2UpIHsKICAgdXBkYXRlID0gY29udHJvbGxlcl8tPk9uUHJvY2Vzc0ludGVy
dmFsKERlZmF1bHRJbnRlcnZhbCgpKTsKIH0KIAotLy8gRXN0aW1hdGVkIGJpdHJhdGUgcmVkdWNl
ZCB3aGVuIHRoZSBmZWVkYmFja3MgYXJyaXZlIHdpdGggc3VjaCBhIGxvbmcgZGVsYXksCi0vLyB0
aGF0IHRoZSBzZW5kLXRpbWUtaGlzdG9yeSBubyBsb25nZXIgaG9sZHMgdGhlIGZlZWRiYWNrZWQg
cGFja2V0cy4KLVRFU1RfRihHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIExvbmdGZWVkYmFj
a0RlbGF5cykgewotICBUYXJnZXRCaXRyYXRlVHJhY2tpbmdTZXR1cCgpOwotICBjb25zdCB3ZWJy
dGM6OlBhY2VkUGFja2V0SW5mbyBrUGFjaW5nSW5mbzAoMCwgNSwgMjAwMCk7Ci0gIGNvbnN0IHdl
YnJ0Yzo6UGFjZWRQYWNrZXRJbmZvIGtQYWNpbmdJbmZvMSgxLCA4LCA0MDAwKTsKLSAgY29uc3Qg
aW50NjRfdCBrRmVlZGJhY2tUaW1lb3V0TXMgPSA2MDAwMTsKLSAgY29uc3QgaW50IGtNYXhDb25z
ZWN1dGl2ZUZhaWxlZExvb2t1cHMgPSA1OwotICBmb3IgKGludCBpID0gMDsgaSA8IGtNYXhDb25z
ZWN1dGl2ZUZhaWxlZExvb2t1cHM7ICsraSkgewotICAgIHN0ZDo6dmVjdG9yPFBhY2tldFJlc3Vs
dD4gcGFja2V0czsKLSAgICBwYWNrZXRzLnB1c2hfYmFjayhDcmVhdGVSZXN1bHQoaSAqIDEwMCwg
MiAqIGkgKiAxMDAsIDE1MDAsIGtQYWNpbmdJbmZvMCkpOwotICAgIHBhY2tldHMucHVzaF9iYWNr
KAotICAgICAgICBDcmVhdGVSZXN1bHQoaSAqIDEwMCArIDEwLCAyICogaSAqIDEwMCArIDEwLCAx
NTAwLCBrUGFjaW5nSW5mbzApKTsKLSAgICBwYWNrZXRzLnB1c2hfYmFjaygKLSAgICAgICAgQ3Jl
YXRlUmVzdWx0KGkgKiAxMDAgKyAyMCwgMiAqIGkgKiAxMDAgKyAyMCwgMTUwMCwga1BhY2luZ0lu
Zm8wKSk7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soCi0gICAgICAgIENyZWF0ZVJlc3VsdChpICog
MTAwICsgMzAsIDIgKiBpICogMTAwICsgMzAsIDE1MDAsIGtQYWNpbmdJbmZvMSkpOwotICAgIHBh
Y2tldHMucHVzaF9iYWNrKAotICAgICAgICBDcmVhdGVSZXN1bHQoaSAqIDEwMCArIDQwLCAyICog
aSAqIDEwMCArIDQwLCAxNTAwLCBrUGFjaW5nSW5mbzEpKTsKLQotICAgIFRyYW5zcG9ydFBhY2tl
dHNGZWVkYmFjayBmZWVkYmFjazsKLSAgICBmb3IgKFBhY2tldFJlc3VsdCYgcGFja2V0IDogcGFj
a2V0cykgewotICAgICAgY29udHJvbGxlcl8tPk9uU2VudFBhY2tldChwYWNrZXQuc2VudF9wYWNr
ZXQpOwotICAgICAgZmVlZGJhY2suc2VuZGxlc3NfYXJyaXZhbF90aW1lcy5wdXNoX2JhY2socGFj
a2V0LnJlY2VpdmVfdGltZSk7Ci0gICAgfQotCi0gICAgZmVlZGJhY2suZmVlZGJhY2tfdGltZSA9
IHBhY2tldHNbMF0ucmVjZWl2ZV90aW1lOwotICAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtG
ZWVkYmFja1RpbWVvdXRNcyk7Ci0gICAgU2VudFBhY2tldCBsYXRlcl9wYWNrZXQ7Ci0gICAgbGF0
ZXJfcGFja2V0LnNlbmRfdGltZSA9IFRpbWVzdGFtcDo6bXMoa0ZlZWRiYWNrVGltZW91dE1zICsg
aSAqIDIwMCArIDQwKTsKLSAgICBsYXRlcl9wYWNrZXQuc2l6ZSA9IERhdGFTaXplOjpieXRlcygx
NTAwKTsKLSAgICBsYXRlcl9wYWNrZXQucGFjaW5nX2luZm8gPSBrUGFjaW5nSW5mbzE7Ci0gICAg
Y29udHJvbGxlcl8tPk9uU2VudFBhY2tldChsYXRlcl9wYWNrZXQpOwotCi0gICAgT25VcGRhdGUo
Y29udHJvbGxlcl8tPk9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKGZlZWRiYWNrKSk7Ci0gIH0K
LSAgT25VcGRhdGUoY29udHJvbGxlcl8tPk9uUHJvY2Vzc0ludGVydmFsKERlZmF1bHRJbnRlcnZh
bCgpKSk7Ci0KLSAgRVhQRUNUX0VRKGtJbml0aWFsQml0cmF0ZUticHMgLyAyLCB0YXJnZXRfYml0
cmF0ZV8tPmticHMoKSk7Ci0KLSAgLy8gVGVzdCB3aXRoIGZlZWRiYWNrIHRoYXQgaXNuJ3QgbGF0
ZSBlbm91Z2ggdG8gdGltZSBvdXQuCi0gIHsKLSAgICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+
IHBhY2tldHM7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soQ3JlYXRlUmVzdWx0KDEwMCwgMjAwLCAx
NTAwLCBrUGFjaW5nSW5mbzApKTsKLSAgICBwYWNrZXRzLnB1c2hfYmFjayhDcmVhdGVSZXN1bHQo
MTEwLCAyMTAsIDE1MDAsIGtQYWNpbmdJbmZvMCkpOwotICAgIHBhY2tldHMucHVzaF9iYWNrKENy
ZWF0ZVJlc3VsdCgxMjAsIDIyMCwgMTUwMCwga1BhY2luZ0luZm8wKSk7Ci0gICAgcGFja2V0cy5w
dXNoX2JhY2soQ3JlYXRlUmVzdWx0KDEzMCwgMjMwLCAxNTAwLCBrUGFjaW5nSW5mbzEpKTsKLSAg
ICBwYWNrZXRzLnB1c2hfYmFjayhDcmVhdGVSZXN1bHQoMTQwLCAyNDAsIDE1MDAsIGtQYWNpbmdJ
bmZvMSkpOwotCi0gICAgZm9yIChjb25zdCBQYWNrZXRSZXN1bHQmIHBhY2tldCA6IHBhY2tldHMp
Ci0gICAgICBjb250cm9sbGVyXy0+T25TZW50UGFja2V0KHBhY2tldC5zZW50X3BhY2tldCk7Ci0K
LSAgICBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2sgZmVlZGJhY2s7Ci0gICAgZmVlZGJhY2suZmVl
ZGJhY2tfdGltZSA9IHBhY2tldHNbMF0ucmVjZWl2ZV90aW1lOwotICAgIGZlZWRiYWNrLnBhY2tl
dF9mZWVkYmFja3MgPSBwYWNrZXRzOwotCi0gICAgQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa0Zl
ZWRiYWNrVGltZW91dE1zIC0gMSk7Ci0KLSAgICBTZW50UGFja2V0IGxhdGVyX3BhY2tldDsKLSAg
ICBsYXRlcl9wYWNrZXQuc2VuZF90aW1lID0gVGltZXN0YW1wOjptcyhrRmVlZGJhY2tUaW1lb3V0
TXMgKyAyNDApOwotICAgIGxhdGVyX3BhY2tldC5zaXplID0gRGF0YVNpemU6OmJ5dGVzKDE1MDAp
OwotICAgIGxhdGVyX3BhY2tldC5wYWNpbmdfaW5mbyA9IGtQYWNpbmdJbmZvMTsKLSAgICBjb250
cm9sbGVyXy0+T25TZW50UGFja2V0KGxhdGVyX3BhY2tldCk7Ci0KLSAgICBPblVwZGF0ZShjb250
cm9sbGVyXy0+T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2soZmVlZGJhY2spKTsKLSAgfQotfQot
CiAvLyBCYW5kd2lkdGggZXN0aW1hdGlvbiBpcyB1cGRhdGVkIHdoZW4gZmVlZGJhY2tzIGFyZSBy
ZWNlaXZlZC4KIC8vIEZlZWRiYWNrcyB3aGljaCBzaG93IGFuIGluY3JlYXNpbmcgZGVsYXkgY2F1
c2UgdGhlIGVzdGltYXRpb24gdG8gYmUgcmVkdWNlZC4KIFRFU1RfRihHb29nQ2NOZXR3b3JrQ29u
dHJvbGxlclRlc3QsIFVwZGF0ZXNEZWxheUJhc2VkRXN0aW1hdGUpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0
LmNjCmluZGV4IDVmNThmMjFjZGY4OTQ2YzRhYzhmYTg4NTQ1NDYwNmM0Yjc1NjNlZjkuLjBmMzdl
MGViM2NlZGI1Yzk5NWJmNTg2Nzc1Mzk5ODEwNzRlMDI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVzdC5j
YwpAQCAtMzQ0LDk3ICszNDQsNiBAQCBURVNUX0YoTGVnYWN5U2VuZFNpZGVDb25nZXN0aW9uQ29u
dHJvbGxlclRlc3QsIFByb2JlT25Sb3V0ZUNoYW5nZSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIwICoga0luaXRpYWxCaXRyYXRlQnBzKTsKIH0KIAotLy8gRXN0aW1h
dGVkIGJpdHJhdGUgcmVkdWNlZCB3aGVuIHRoZSBmZWVkYmFja3MgYXJyaXZlIHdpdGggc3VjaCBh
IGxvbmcgZGVsYXksCi0vLyB0aGF0IHRoZSBzZW5kLXRpbWUtaGlzdG9yeSBubyBsb25nZXIgaG9s
ZHMgdGhlIGZlZWRiYWNrZWQgcGFja2V0cy4KLVRFU1RfRihMZWdhY3lTZW5kU2lkZUNvbmdlc3Rp
b25Db250cm9sbGVyVGVzdCwgTG9uZ0ZlZWRiYWNrRGVsYXlzKSB7Ci0gIFRhcmdldEJpdHJhdGVU
cmFja2luZ1NldHVwKCk7Ci0KLSAgY29uc3QgaW50NjRfdCBrRmVlZGJhY2tUaW1lb3V0TXMgPSA2
MDAwMTsKLSAgY29uc3QgaW50IGtNYXhDb25zZWN1dGl2ZUZhaWxlZExvb2t1cHMgPSA1OwotICBm
b3IgKGludCBpID0gMDsgaSA8IGtNYXhDb25zZWN1dGl2ZUZhaWxlZExvb2t1cHM7ICsraSkgewot
ICAgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBwYWNrZXRzOwotICAgIHBhY2tldHMucHVz
aF9iYWNrKAotICAgICAgICBQYWNrZXRGZWVkYmFjayhpICogMTAwLCAyICogaSAqIDEwMCwgMCwg
MTUwMCwga1BhY2luZ0luZm8wKSk7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soCi0gICAgICAgIFBh
Y2tldEZlZWRiYWNrKGkgKiAxMDAgKyAxMCwgMiAqIGkgKiAxMDAgKyAxMCwgMSwgMTUwMCwga1Bh
Y2luZ0luZm8wKSk7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soCi0gICAgICAgIFBhY2tldEZlZWRi
YWNrKGkgKiAxMDAgKyAyMCwgMiAqIGkgKiAxMDAgKyAyMCwgMiwgMTUwMCwga1BhY2luZ0luZm8w
KSk7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soCi0gICAgICAgIFBhY2tldEZlZWRiYWNrKGkgKiAx
MDAgKyAzMCwgMiAqIGkgKiAxMDAgKyAzMCwgMywgMTUwMCwga1BhY2luZ0luZm8xKSk7Ci0gICAg
cGFja2V0cy5wdXNoX2JhY2soCi0gICAgICAgIFBhY2tldEZlZWRiYWNrKGkgKiAxMDAgKyA0MCwg
MiAqIGkgKiAxMDAgKyA0MCwgNCwgMTUwMCwga1BhY2luZ0luZm8xKSk7Ci0KLSAgICBmb3IgKGNv
bnN0IFBhY2tldEZlZWRiYWNrJiBwYWNrZXQgOiBwYWNrZXRzKQotICAgICAgT25TZW50UGFja2V0
KHBhY2tldCk7Ci0KLSAgICBydGNwOjpUcmFuc3BvcnRGZWVkYmFjayBmZWVkYmFjazsKLSAgICBm
ZWVkYmFjay5TZXRCYXNlKHBhY2tldHNbMF0uc2VxdWVuY2VfbnVtYmVyLAotICAgICAgICAgICAg
ICAgICAgICAgcGFja2V0c1swXS5hcnJpdmFsX3RpbWVfbXMgKiAxMDAwKTsKLQotICAgIGZvciAo
Y29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tldCA6IHBhY2tldHMpIHsKLSAgICAgIEVYUEVDVF9U
UlVFKGZlZWRiYWNrLkFkZFJlY2VpdmVkUGFja2V0KHBhY2tldC5zZXF1ZW5jZV9udW1iZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXQuYXJyaXZh
bF90aW1lX21zICogMTAwMCkpOwotICAgIH0KLQotICAgIGZlZWRiYWNrLkJ1aWxkKCk7Ci0KLSAg
ICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa0ZlZWRiYWNrVGltZW91dE1zKTsKLSAg
ICBQYWNrZXRGZWVkYmFjayBsYXRlcl9wYWNrZXQoa0ZlZWRiYWNrVGltZW91dE1zICsgaSAqIDEw
MCArIDQwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRmVlZGJhY2tUaW1lb3V0
TXMgKyBpICogMjAwICsgNDAsIDUsIDE1MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtQYWNpbmdJbmZvMSk7Ci0gICAgT25TZW50UGFja2V0KGxhdGVyX3BhY2tldCk7Ci0KLSAg
ICBjb250cm9sbGVyXy0+T25UcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7Ci0KLSAgICAvLyBD
aGVjayB0aGF0IHBhY2tldHMgaGF2ZSB0aW1lZCBvdXQuCi0gICAgZm9yIChQYWNrZXRGZWVkYmFj
ayYgcGFja2V0IDogcGFja2V0cykgewotICAgICAgcGFja2V0LnNlbmRfdGltZV9tcyA9IFBhY2tl
dEZlZWRiYWNrOjprTm9TZW5kVGltZTsKLSAgICAgIHBhY2tldC5wYXlsb2FkX3NpemUgPSAwOwot
ICAgICAgcGFja2V0LnBhY2luZ19pbmZvID0gUGFjZWRQYWNrZXRJbmZvKCk7Ci0gICAgfQotICAg
IENvbXBhcmVQYWNrZXRGZWVkYmFja1ZlY3RvcnMocGFja2V0cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJfLT5HZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3Rvcigp
KTsKLSAgfQotCi0gIGNvbnRyb2xsZXJfLT5Qcm9jZXNzKCk7Ci0KLSAgRVhQRUNUX0VRKGtJbml0
aWFsQml0cmF0ZUJwcyAvIDIsIHRhcmdldF9iaXRyYXRlX2Jwc18pOwotCi0gIC8vIFRlc3Qgd2l0
aCBmZWVkYmFjayB0aGF0IGlzbid0IGxhdGUgZW5vdWdoIHRvIHRpbWUgb3V0LgotICB7Ci0gICAg
c3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IHBhY2tldHM7Ci0gICAgcGFja2V0cy5wdXNoX2Jh
Y2soUGFja2V0RmVlZGJhY2soMTAwLCAyMDAsIDAsIDE1MDAsIGtQYWNpbmdJbmZvMCkpOwotICAg
IHBhY2tldHMucHVzaF9iYWNrKFBhY2tldEZlZWRiYWNrKDExMCwgMjEwLCAxLCAxNTAwLCBrUGFj
aW5nSW5mbzApKTsKLSAgICBwYWNrZXRzLnB1c2hfYmFjayhQYWNrZXRGZWVkYmFjaygxMjAsIDIy
MCwgMiwgMTUwMCwga1BhY2luZ0luZm8wKSk7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soUGFja2V0
RmVlZGJhY2soMTMwLCAyMzAsIDMsIDE1MDAsIGtQYWNpbmdJbmZvMSkpOwotICAgIHBhY2tldHMu
cHVzaF9iYWNrKFBhY2tldEZlZWRiYWNrKDE0MCwgMjQwLCA0LCAxNTAwLCBrUGFjaW5nSW5mbzEp
KTsKLQotICAgIGZvciAoY29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tldCA6IHBhY2tldHMpCi0g
ICAgICBPblNlbnRQYWNrZXQocGFja2V0KTsKLQotICAgIHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNr
IGZlZWRiYWNrOwotICAgIGZlZWRiYWNrLlNldEJhc2UocGFja2V0c1swXS5zZXF1ZW5jZV9udW1i
ZXIsCi0gICAgICAgICAgICAgICAgICAgICBwYWNrZXRzWzBdLmFycml2YWxfdGltZV9tcyAqIDEw
MDApOwotCi0gICAgZm9yIChjb25zdCBQYWNrZXRGZWVkYmFjayYgcGFja2V0IDogcGFja2V0cykg
ewotICAgICAgRVhQRUNUX1RSVUUoZmVlZGJhY2suQWRkUmVjZWl2ZWRQYWNrZXQocGFja2V0LnNl
cXVlbmNlX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhY2tldC5hcnJpdmFsX3RpbWVfbXMgKiAxMDAwKSk7Ci0gICAgfQotCi0gICAgZmVlZGJh
Y2suQnVpbGQoKTsKLQotICAgIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrRmVlZGJh
Y2tUaW1lb3V0TXMgLSAxKTsKLSAgICBQYWNrZXRGZWVkYmFjayBsYXRlcl9wYWNrZXQoa0ZlZWRi
YWNrVGltZW91dE1zICsgMTQwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRmVl
ZGJhY2tUaW1lb3V0TXMgKyAyNDAsIDUsIDE1MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtQYWNpbmdJbmZvMSk7Ci0gICAgT25TZW50UGFja2V0KGxhdGVyX3BhY2tldCk7Ci0K
LSAgICBjb250cm9sbGVyXy0+T25UcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7Ci0gICAgQ29t
cGFyZVBhY2tldEZlZWRiYWNrVmVjdG9ycyhwYWNrZXRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udHJvbGxlcl8tPkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCkpOwot
ICB9Ci19Ci0KIC8vIEJhbmR3aWR0aCBlc3RpbWF0aW9uIGlzIHVwZGF0ZWQgd2hlbiBmZWVkYmFj
a3MgYXJlIHJlY2VpdmVkLgogLy8gRmVlZGJhY2tzIHdoaWNoIHNob3cgYW4gaW5jcmVhc2luZyBk
ZWxheSBjYXVzZSB0aGUgZXN0aW1hdGlvbiB0byBiZSByZWR1Y2VkLgogVEVTVF9GKExlZ2FjeVNl
bmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXJUZXN0LCBVcGRhdGVzRGVsYXlCYXNlZEVzdGltYXRl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9qc2Vwc2Vzc2lvbmRlc2NyaXB0aW9uX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHNlc3Npb25kZXNjcmlwdGlvbl91bml0
dGVzdC5jYwppbmRleCBkOWUyNTg4YTU1MTc5ZjQyYTY1MGMzYzRkOTAzMTUyM2UzMzhlMjI4Li4x
YzgyMzI2NWMzN2VjNzA2YTQ4N2M4MjI1YWM0Yzg2MzRkY2I4MWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2Vwc2Vzc2lvbmRlc2Ny
aXB0aW9uX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL2pzZXBzZXNzaW9uZGVzY3JpcHRpb25fdW5pdHRlc3QuY2MKQEAgLTYwLDE2
ICs2MCwxNiBAQCBzdGF0aWMgY3JpY2tldDo6U2Vzc2lvbkRlc2NyaXB0aW9uKiBDcmVhdGVDcmlj
a2V0U2Vzc2lvbkRlc2NyaXB0aW9uKCkgewogICB2aWRlby0+QWRkQ29kZWMoY3JpY2tldDo6Vmlk
ZW9Db2RlYygxMjAsICJWUDgiKSk7CiAgIGRlc2MtPkFkZENvbnRlbnQoY3JpY2tldDo6Q05fVklE
RU8sIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCB2aWRlby5yZWxlYXNlKCkpOwogCi0gIEVYUEVD
VF9UUlVFKGRlc2MtPkFkZFRyYW5zcG9ydEluZm8oY3JpY2tldDo6VHJhbnNwb3J0SW5mbygKKyAg
ZGVzYy0+QWRkVHJhbnNwb3J0SW5mbyhjcmlja2V0OjpUcmFuc3BvcnRJbmZvKAogICAgICAgY3Jp
Y2tldDo6Q05fQVVESU8sCiAgICAgICBjcmlja2V0OjpUcmFuc3BvcnREZXNjcmlwdGlvbigKICAg
ICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSwga0NhbmRpZGF0ZVVmcmFnVm9pY2Us
IGtDYW5kaWRhdGVQd2RWb2ljZSwKLSAgICAgICAgICBjcmlja2V0OjpJQ0VNT0RFX0ZVTEwsIGNy
aWNrZXQ6OkNPTk5FQ1RJT05ST0xFX05PTkUsIE5VTEwpKSkpOwotICBFWFBFQ1RfVFJVRShkZXNj
LT5BZGRUcmFuc3BvcnRJbmZvKGNyaWNrZXQ6OlRyYW5zcG9ydEluZm8oCisgICAgICAgICAgY3Jp
Y2tldDo6SUNFTU9ERV9GVUxMLCBjcmlja2V0OjpDT05ORUNUSU9OUk9MRV9OT05FLCBOVUxMKSkp
OworICBkZXNjLT5BZGRUcmFuc3BvcnRJbmZvKGNyaWNrZXQ6OlRyYW5zcG9ydEluZm8oCiAgICAg
ICBjcmlja2V0OjpDTl9WSURFTywKICAgICAgIGNyaWNrZXQ6OlRyYW5zcG9ydERlc2NyaXB0aW9u
KAogICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpLCBrQ2FuZGlkYXRlVWZyYWdW
aWRlbywga0NhbmRpZGF0ZVB3ZFZpZGVvLAotICAgICAgICAgIGNyaWNrZXQ6OklDRU1PREVfRlVM
TCwgY3JpY2tldDo6Q09OTkVDVElPTlJPTEVfTk9ORSwgTlVMTCkpKSk7CisgICAgICAgICAgY3Jp
Y2tldDo6SUNFTU9ERV9GVUxMLCBjcmlja2V0OjpDT05ORUNUSU9OUk9MRV9OT05FLCBOVUxMKSkp
OwogICByZXR1cm4gZGVzYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmNjCmluZGV4IDI2M2Yz
NjkzZGI1N2I5NWI5NWM5ZDFlMjNlNjhkYjE0YzNmOWE4ZDkuLmNjZTdkMjJkZGJmODU3ZGI1ZTg1
MDhhNTYzN2QwNDFhNDcyYzNiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uY2MKQEAgLTE3OTks
MTQgKzE3OTksMTIgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZFRy
YW5zcG9ydE9mZmVyKAogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG5l
d190ZGVzYygKICAgICAgIHRyYW5zcG9ydF9kZXNjX2ZhY3RvcnlfLT5DcmVhdGVPZmZlcih0cmFu
c3BvcnRfb3B0aW9ucywgY3VycmVudF90ZGVzYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpY2VfY3JlZGVudGlhbHMpKTsKLSAgYm9vbCByZXQgPQotICAgICAg
KG5ld190ZGVzYy5nZXQoKSAhPSBOVUxMICYmCi0gICAgICAgb2ZmZXJfZGVzYy0+QWRkVHJhbnNw
b3J0SW5mbyhUcmFuc3BvcnRJbmZvKGNvbnRlbnRfbmFtZSwgKm5ld190ZGVzYykpKTsKLSAgaWYg
KCFyZXQpIHsKKyAgaWYgKCFuZXdfdGRlc2MpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAi
RmFpbGVkIHRvIEFkZFRyYW5zcG9ydE9mZmVyLCBjb250ZW50IG5hbWU9IgogICAgICAgICAgICAg
ICAgICAgICAgIDw8IGNvbnRlbnRfbmFtZTsKICAgfQotICByZXR1cm4gcmV0OworICBvZmZlcl9k
ZXNjLT5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oY29udGVudF9uYW1lLCAqbmV3X3Rk
ZXNjKSk7CisgIHJldHVybiB0cnVlOwogfQogCiBUcmFuc3BvcnREZXNjcmlwdGlvbiogTWVkaWFT
ZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVUcmFuc3BvcnRBbnN3ZXIoCkBAIC0xODMx
LDEyICsxODI5LDcgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZFRy
YW5zcG9ydEFuc3dlcigKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAg
IGNvbnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uJiB0cmFuc3BvcnRfZGVzYywKICAgICBTZXNzaW9u
RGVzY3JpcHRpb24qIGFuc3dlcl9kZXNjKSBjb25zdCB7Ci0gIGlmICghYW5zd2VyX2Rlc2MtPkFk
ZFRyYW5zcG9ydEluZm8oCi0gICAgICAgICAgVHJhbnNwb3J0SW5mbyhjb250ZW50X25hbWUsIHRy
YW5zcG9ydF9kZXNjKSkpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIEFk
ZFRyYW5zcG9ydEFuc3dlciwgY29udGVudCBuYW1lPSIKLSAgICAgICAgICAgICAgICAgICAgICA8
PCBjb250ZW50X25hbWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9CisgIGFuc3dlcl9kZXNjLT5B
ZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oY29udGVudF9uYW1lLCB0cmFuc3BvcnRfZGVz
YykpOwogICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3Vu
aXR0ZXN0LmNjCmluZGV4IDIwOThlYzA4MTk0M2U4ZTRjMjZlZTcwNDQ5N2M5YmQzNmY0MTBiZjUu
LmZiYzQwMzUzOWY3ZGQ1M2E3NzBmODE1OTIyODE2MGI3NmM2NGQyYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbl91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9tZWRpYXNlc3Npb25fdW5pdHRlc3QuY2MKQEAgLTQyNiwxNCArNDI2LDE0IEBAIGNsYXNz
IE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gZGVzYzsKICAgICBp
ZiAoaGFzX2N1cnJlbnRfZGVzYykgewogICAgICAgY3VycmVudF9kZXNjLnJlc2V0KG5ldyBTZXNz
aW9uRGVzY3JpcHRpb24oKSk7Ci0gICAgICBFWFBFQ1RfVFJVRShjdXJyZW50X2Rlc2MtPkFkZFRy
YW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbygKKyAgICAgIGN1cnJlbnRfZGVzYy0+QWRkVHJhbnNw
b3J0SW5mbyhUcmFuc3BvcnRJbmZvKAogICAgICAgICAgICJhdWRpbyIsCi0gICAgICAgICAgVHJh
bnNwb3J0RGVzY3JpcHRpb24oY3VycmVudF9hdWRpb191ZnJhZywgY3VycmVudF9hdWRpb19wd2Qp
KSkpOwotICAgICAgRVhQRUNUX1RSVUUoY3VycmVudF9kZXNjLT5BZGRUcmFuc3BvcnRJbmZvKFRy
YW5zcG9ydEluZm8oCisgICAgICAgICAgVHJhbnNwb3J0RGVzY3JpcHRpb24oY3VycmVudF9hdWRp
b191ZnJhZywgY3VycmVudF9hdWRpb19wd2QpKSk7CisgICAgICBjdXJyZW50X2Rlc2MtPkFkZFRy
YW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbygKICAgICAgICAgICAidmlkZW8iLAotICAgICAgICAg
IFRyYW5zcG9ydERlc2NyaXB0aW9uKGN1cnJlbnRfdmlkZW9fdWZyYWcsIGN1cnJlbnRfdmlkZW9f
cHdkKSkpKTsKLSAgICAgIEVYUEVDVF9UUlVFKGN1cnJlbnRfZGVzYy0+QWRkVHJhbnNwb3J0SW5m
byhUcmFuc3BvcnRJbmZvKAotICAgICAgICAgICJkYXRhIiwgVHJhbnNwb3J0RGVzY3JpcHRpb24o
Y3VycmVudF9kYXRhX3VmcmFnLCBjdXJyZW50X2RhdGFfcHdkKSkpKTsKKyAgICAgICAgICBUcmFu
c3BvcnREZXNjcmlwdGlvbihjdXJyZW50X3ZpZGVvX3VmcmFnLCBjdXJyZW50X3ZpZGVvX3B3ZCkp
KTsKKyAgICAgIGN1cnJlbnRfZGVzYy0+QWRkVHJhbnNwb3J0SW5mbyhUcmFuc3BvcnRJbmZvKAor
ICAgICAgICAgICJkYXRhIiwgVHJhbnNwb3J0RGVzY3JpcHRpb24oY3VycmVudF9kYXRhX3VmcmFn
LCBjdXJyZW50X2RhdGFfcHdkKSkpOwogICAgIH0KICAgICBpZiAob2ZmZXIpIHsKICAgICAgIGRl
c2MucmVzZXQoZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMsIGN1cnJlbnRfZGVzYy5nZXQoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cGVlcmNvbm5lY3Rpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5jYwppbmRleCBlZThhOTA5ZTAzZTg2ZmRmYzMwYjIzOWNj
YjU0MDEyM2ExNGEzNTg4Li4xMzA3ZWY2ZWFjMWRkZmJhZmZmZTllNjllNzhiYjY0MzIzMjE2NzNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9wZWVyY29ubmVjdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5jYwpAQCAtNjQ5LDYgKzY0OSwyNSBAQCBEYXRh
TWVzc2FnZVR5cGUgVG9XZWJydGNEYXRhTWVzc2FnZVR5cGUoY3JpY2tldDo6RGF0YU1lc3NhZ2VU
eXBlIHR5cGUpIHsKICAgcmV0dXJuIERhdGFNZXNzYWdlVHlwZTo6a0NvbnRyb2w7CiB9CiAKKy8v
IEZpbmQgYSBuZXcgTUlEIHRoYXQgaXMgbm90IGFscmVhZHkgaW4gfHVzZWRfbWlkc3wsIHRoZW4g
YWRkIGl0IHRvIHx1c2VkX21pZHN8CisvLyBhbmQgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIGl0Lgor
Ly8gR2VuZXJhdGVkIE1JRHMgc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiAzIGJ5dGVzIGxvbmcgdG8g
dGFrZSB1cCBsZXNzIHNwYWNlIGluCisvLyB0aGUgUlRQIHBhY2tldC4KK2NvbnN0IHN0ZDo6c3Ry
aW5nJiBBbGxvY2F0ZU1pZChzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIHVzZWRfbWlkcykgeworICBS
VENfRENIRUNLKHVzZWRfbWlkcyk7CisgIC8vIFdlJ3JlIGJvcmluZzoganVzdCBnZW5lcmF0ZSBN
SURzIDAsIDEsIDIsIC4uLgorICBzaXplX3QgaSA9IDA7CisgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5n
Pjo6aXRlcmF0b3IgaXQ7CisgIGJvb2wgaW5zZXJ0ZWQ7CisgIGRvIHsKKyAgICBzdGQ6OnN0cmlu
ZyBtaWQgPSBydGM6OlRvU3RyaW5nKGkrKyk7CisgICAgYXV0byBpbnNlcnRfcmVzdWx0ID0gdXNl
ZF9taWRzLT5pbnNlcnQobWlkKTsKKyAgICBpdCA9IGluc2VydF9yZXN1bHQuZmlyc3Q7CisgICAg
aW5zZXJ0ZWQgPSBpbnNlcnRfcmVzdWx0LnNlY29uZDsKKyAgfSB3aGlsZSAoIWluc2VydGVkKTsK
KyAgcmV0dXJuICppdDsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIC8vIFVwb24gY29tcGxldGlv
biwgcG9zdHMgYSB0YXNrIHRvIGV4ZWN1dGUgdGhlIGNhbGxiYWNrIG9mIHRoZQpAQCAtMjIzMSw2
ICsyMjUwLDU2IEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0aW9uOjpBcHBseUxvY2FsRGVzY3JpcHRp
b24oCiAgIHJldHVybiBSVENFcnJvcjo6T0soKTsKIH0KIAorLy8gVGhlIFNEUCBwYXJzZXIgdXNl
ZCB0byBwb3B1bGF0ZSB0aGVzZSB2YWx1ZXMgYnkgZGVmYXVsdCBmb3IgdGhlICdjb250ZW50Cisv
LyBuYW1lJyBpZiBhbiBhPW1pZCBsaW5lIHdhcyBhYnNlbnQuCitzdGF0aWMgYWJzbDo6c3RyaW5n
X3ZpZXcgR2V0RGVmYXVsdE1pZEZvclBsYW5CKGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBl
KSB7CisgIHN3aXRjaCAobWVkaWFfdHlwZSkgeworICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQ
RV9BVURJTzoKKyAgICAgIHJldHVybiBjcmlja2V0OjpDTl9BVURJTzsKKyAgICBjYXNlIGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfVklERU86CisgICAgICByZXR1cm4gY3JpY2tldDo6Q05fVklERU87Cisg
ICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE6CisgICAgICByZXR1cm4gY3JpY2tldDo6
Q05fREFUQTsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gIiI7Cit9CisKK3Zv
aWQgUGVlckNvbm5lY3Rpb246OkZpbGxJbk1pc3NpbmdSZW1vdGVNaWRzKAorICAgIGNyaWNrZXQ6
OlNlc3Npb25EZXNjcmlwdGlvbiogcmVtb3RlX2Rlc2NyaXB0aW9uKSB7CisgIFJUQ19EQ0hFQ0so
cmVtb3RlX2Rlc2NyaXB0aW9uKTsKKyAgY29uc3QgY3JpY2tldDo6Q29udGVudEluZm9zJiBsb2Nh
bF9jb250ZW50cyA9CisgICAgICAobG9jYWxfZGVzY3JpcHRpb24oKSA/IGxvY2FsX2Rlc2NyaXB0
aW9uKCktPmRlc2NyaXB0aW9uKCktPmNvbnRlbnRzKCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogY3JpY2tldDo6Q29udGVudEluZm9zKCkpOworICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4g
dXNlZF9taWRzID0gc2Vlbl9taWRzXzsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW1vdGVf
ZGVzY3JpcHRpb24tPmNvbnRlbnRzKCkuc2l6ZSgpOyArK2kpIHsKKyAgICBjcmlja2V0OjpDb250
ZW50SW5mbyYgY29udGVudCA9IHJlbW90ZV9kZXNjcmlwdGlvbi0+Y29udGVudHMoKVtpXTsKKyAg
ICBpZiAoIWNvbnRlbnQubmFtZS5lbXB0eSgpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9Cisg
ICAgYWJzbDo6c3RyaW5nX3ZpZXcgbmV3X21pZDsKKyAgICBhYnNsOjpzdHJpbmdfdmlldyBzb3Vy
Y2VfZXhwbGFuYXRpb247CisgICAgaWYgKElzVW5pZmllZFBsYW4oKSkgeworICAgICAgaWYgKGkg
PCBsb2NhbF9jb250ZW50cy5zaXplKCkpIHsKKyAgICAgICAgbmV3X21pZCA9IGxvY2FsX2NvbnRl
bnRzW2ldLm5hbWU7CisgICAgICAgIHNvdXJjZV9leHBsYW5hdGlvbiA9ICJmcm9tIHRoZSBtYXRj
aGluZyBsb2NhbCBtZWRpYSBzZWN0aW9uIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG5ld19t
aWQgPSBBbGxvY2F0ZU1pZCgmdXNlZF9taWRzKTsKKyAgICAgICAgc291cmNlX2V4cGxhbmF0aW9u
ID0gImdlbmVyYXRlZCBqdXN0IG5vdyI7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIG5l
d19taWQgPSBHZXREZWZhdWx0TWlkRm9yUGxhbkIoY29udGVudC5tZWRpYV9kZXNjcmlwdGlvbigp
LT50eXBlKCkpOworICAgICAgc291cmNlX2V4cGxhbmF0aW9uID0gInRvIG1hdGNoIHByZS1leGlz
dGluZyBiZWhhdmlvciI7CisgICAgfQorICAgIGNvbnRlbnQubmFtZSA9IHN0ZDo6c3RyaW5nKG5l
d19taWQpOworICAgIHJlbW90ZV9kZXNjcmlwdGlvbi0+dHJhbnNwb3J0X2luZm9zKClbaV0uY29u
dGVudF9uYW1lID0KKyAgICAgICAgc3RkOjpzdHJpbmcobmV3X21pZCk7CisgICAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiU2V0UmVtb3RlRGVzY3JpcHRpb246IFJlbW90ZSBtZWRpYSBzZWN0aW9uIGF0
IGk9IiA8PCBpCisgICAgICAgICAgICAgICAgICAgICA8PCAiIGlzIG1pc3NpbmcgYW4gYT1taWQg
bGluZS4gRmlsbGluZyBpbiB0aGUgdmFsdWUgJyIKKyAgICAgICAgICAgICAgICAgICAgIDw8IG5l
d19taWQgPDwgIicgIiA8PCBzb3VyY2VfZXhwbGFuYXRpb24gPDwgIi4iOworICB9Cit9CisKIHZv
aWQgUGVlckNvbm5lY3Rpb246OlNldFJlbW90ZURlc2NyaXB0aW9uKAogICAgIFNldFNlc3Npb25E
ZXNjcmlwdGlvbk9ic2VydmVyKiBvYnNlcnZlciwKICAgICBTZXNzaW9uRGVzY3JpcHRpb25JbnRl
cmZhY2UqIGRlc2MpIHsKQEAgLTIyNzEsNiArMjM0MCwxMCBAQCB2b2lkIFBlZXJDb25uZWN0aW9u
OjpTZXRSZW1vdGVEZXNjcmlwdGlvbigKICAgICBSZXBvcnRTZHBGb3JtYXRSZWNlaXZlZCgqZGVz
Yyk7CiAgIH0KIAorICAvLyBIYW5kbGUgcmVtb3RlIGRlc2NyaXB0aW9ucyBtaXNzaW5nIGE9bWlk
IGxpbmVzIGZvciBpbnRlcm9wIHdpdGggbGVnYWN5IGVuZAorICAvLyBwb2ludHMuCisgIEZpbGxJ
bk1pc3NpbmdSZW1vdGVNaWRzKGRlc2MtPmRlc2NyaXB0aW9uKCkpOworCiAgIFJUQ0Vycm9yIGVy
cm9yID0gVmFsaWRhdGVTZXNzaW9uRGVzY3JpcHRpb24oZGVzYy5nZXQoKSwgY3JpY2tldDo6Q1Nf
UkVNT1RFKTsKICAgaWYgKCFlcnJvci5vaygpKSB7CiAgICAgc3RkOjpzdHJpbmcgZXJyb3JfbWVz
c2FnZSA9IEdldFNldERlc2NyaXB0aW9uRXJyb3JNZXNzYWdlKApAQCAtMjQ1Niw1MSArMjUyOSwz
MiBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6QXBwbHlSZW1vdGVEZXNjcmlwdGlvbigKICAg
ICAgIGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBtZWRpYV9kZXNjID0gY29udGVudC0+
bWVkaWFfZGVzY3JpcHRpb24oKTsKICAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGxvY2Fs
X2RpcmVjdGlvbiA9CiAgICAgICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25SZXZlcnNlZCht
ZWRpYV9kZXNjLT5kaXJlY3Rpb24oKSk7Ci0gICAgICAvLyBGcm9tIHRoZSBXZWJSVEMgc3BlY2lm
aWNhdGlvbiwgc3RlcHMgMi4yLjguNS82IG9mIHNlY3Rpb24gNC40LjEuNiAiU2V0Ci0gICAgICAv
LyB0aGUgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOiBJZiBkaXJlY3Rpb24gaXMgc2VuZHJlY3Ygb3Ig
cmVjdm9ubHksIGFuZAotICAgICAgLy8gdHJhbnNjZWl2ZXIncyBjdXJyZW50IGRpcmVjdGlvbiBp
cyBuZWl0aGVyIHNlbmRyZWN2IG5vciByZWN2b25seSwKLSAgICAgIC8vIHByb2Nlc3MgdGhlIGFk
ZGl0aW9uIG9mIGEgcmVtb3RlIHRyYWNrIGZvciB0aGUgbWVkaWEgZGVzY3JpcHRpb24uCi0gICAg
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gc3RyZWFtX2lkczsKLSAgICAgIGlmICghbWVkaWFf
ZGVzYy0+c3RyZWFtcygpLmVtcHR5KCkpIHsKLSAgICAgICAgLy8gVGhlIHJlbW90ZSBkZXNjcmlw
dGlvbiBoYXMgc2lnbmFsZWQgdGhlIHN0cmVhbSBJRHMuCi0gICAgICAgIHN0cmVhbV9pZHMgPSBt
ZWRpYV9kZXNjLT5zdHJlYW1zKClbMF0uc3RyZWFtX2lkcygpOwotICAgICAgfQotICAgICAgaWYg
KFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uSGFzUmVjdihsb2NhbF9kaXJlY3Rpb24pICYmCi0gICAg
ICAgICAgKCF0cmFuc2NlaXZlci0+ZmlyZWRfZGlyZWN0aW9uKCkgfHwKLSAgICAgICAgICAgIVJ0
cFRyYW5zY2VpdmVyRGlyZWN0aW9uSGFzUmVjdigqdHJhbnNjZWl2ZXItPmZpcmVkX2RpcmVjdGlv
bigpKSkpIHsKLSAgICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUHJvY2Vzc2luZyB0aGUgYWRk
aXRpb24gb2YgYSBuZXcgdHJhY2sgZm9yIE1JRD0iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
PDwgY29udGVudC0+bmFtZSA8PCAiIChhZGRlZCB0byAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgR2V0U3RyZWFtSWRzU3RyaW5nKHN0cmVhbV9pZHMpIDw8ICIpLiI7Ci0KLSAgICAgICAg
c3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtSW50ZXJmYWNlPj4gbWVk
aWFfc3RyZWFtczsKLSAgICAgICAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyYgc3RyZWFtX2lkIDog
c3RyZWFtX2lkcykgewotICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbUlu
dGVyZmFjZT4gc3RyZWFtID0KLSAgICAgICAgICAgICAgcmVtb3RlX3N0cmVhbXNfLT5maW5kKHN0
cmVhbV9pZCk7Ci0gICAgICAgICAgaWYgKCFzdHJlYW0pIHsKLSAgICAgICAgICAgIHN0cmVhbSA9
IE1lZGlhU3RyZWFtUHJveHk6OkNyZWF0ZShydGM6OlRocmVhZDo6Q3VycmVudCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhU3RyZWFtOjpDcmVh
dGUoc3RyZWFtX2lkKSk7Ci0gICAgICAgICAgICByZW1vdGVfc3RyZWFtc18tPkFkZFN0cmVhbShz
dHJlYW0pOwotICAgICAgICAgICAgYWRkZWRfc3RyZWFtcy5wdXNoX2JhY2soc3RyZWFtKTsKLSAg
ICAgICAgICB9Ci0gICAgICAgICAgbWVkaWFfc3RyZWFtcy5wdXNoX2JhY2soc3RyZWFtKTsKKyAg
ICAgIC8vIFJvdWdobHkgdGhlIHNhbWUgYXMgc3RlcHMgMi4yLjguNiBvZiBzZWN0aW9uIDQuNC4x
LjYgIlNldCB0aGUKKyAgICAgIC8vIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjogU2V0IHRoZSBhc3Nv
Y2lhdGVkIHJlbW90ZSBzdHJlYW1zIGdpdmVuCisgICAgICAvLyB0cmFuc2NlaXZlci5bW1JlY2Vp
dmVyXV0sIG1zaWRzLCBhZGRMaXN0LCBhbmQgcmVtb3ZlTGlzdCIuCisgICAgICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vd2VicnRjLXBjLyNzZXQtdGhlLXJ0Y3Nlc3Npb25kZXNjcmlwdGlvbgor
ICAgICAgaWYgKFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uSGFzUmVjdihsb2NhbF9kaXJlY3Rpb24p
KSB7CisgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBzdHJlYW1faWRzOworICAgICAg
ICBpZiAoIW1lZGlhX2Rlc2MtPnN0cmVhbXMoKS5lbXB0eSgpKSB7CisgICAgICAgICAgLy8gVGhl
IHJlbW90ZSBkZXNjcmlwdGlvbiBoYXMgc2lnbmFsZWQgdGhlIHN0cmVhbSBJRHMuCisgICAgICAg
ICAgc3RyZWFtX2lkcyA9IG1lZGlhX2Rlc2MtPnN0cmVhbXMoKVswXS5zdHJlYW1faWRzKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgLy8gU3BlY2lhbCBjYXNlOiAiYT1tc2lkIiBtaXNzaW5nLCB1c2Ug
cmFuZG9tIHN0cmVhbSBJRC4KLSAgICAgICAgaWYgKG1lZGlhX3N0cmVhbXMuZW1wdHkoKSAmJgot
ICAgICAgICAgICAgIShyZW1vdGVfZGVzY3JpcHRpb24oKS0+ZGVzY3JpcHRpb24oKS0+bXNpZF9z
aWduYWxpbmcoKSAmCi0gICAgICAgICAgICAgIGNyaWNrZXQ6OmtNc2lkU2lnbmFsaW5nTWVkaWFT
ZWN0aW9uKSkgewotICAgICAgICAgIGlmICghbWlzc2luZ19tc2lkX2RlZmF1bHRfc3RyZWFtXykg
ewotICAgICAgICAgICAgbWlzc2luZ19tc2lkX2RlZmF1bHRfc3RyZWFtXyA9IE1lZGlhU3RyZWFt
UHJveHk6OkNyZWF0ZSgKLSAgICAgICAgICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLAot
ICAgICAgICAgICAgICAgIE1lZGlhU3RyZWFtOjpDcmVhdGUocnRjOjpDcmVhdGVSYW5kb21VdWlk
KCkpKTsKLSAgICAgICAgICAgIGFkZGVkX3N0cmVhbXMucHVzaF9iYWNrKG1pc3NpbmdfbXNpZF9k
ZWZhdWx0X3N0cmVhbV8pOwotICAgICAgICAgIH0KLSAgICAgICAgICBtZWRpYV9zdHJlYW1zLnB1
c2hfYmFjayhtaXNzaW5nX21zaWRfZGVmYXVsdF9zdHJlYW1fKTsKKyAgICAgICAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiUHJvY2Vzc2luZyB0aGUgTVNJRHMgZm9yIE1JRD0iIDw8IGNvbnRlbnQtPm5h
bWUKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICgiIDw8IEdldFN0cmVhbUlkc1N0cmlu
ZyhzdHJlYW1faWRzKSA8PCAiKS4iOworICAgICAgICBTZXRBc3NvY2lhdGVkUmVtb3RlU3RyZWFt
cyh0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+cmVjZWl2ZXJfaW50ZXJuYWwoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkcywgJmFkZGVkX3N0cmVhbXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZW1vdmVkX3N0cmVhbXMpOworICAg
ICAgICAvLyBGcm9tIHRoZSBXZWJSVEMgc3BlY2lmaWNhdGlvbiwgc3RlcHMgMi4yLjguNS82IG9m
IHNlY3Rpb24gNC40LjEuNgorICAgICAgICAvLyAiU2V0IHRoZSBSVENTZXNzaW9uRGVzY3JpcHRp
b246IElmIGRpcmVjdGlvbiBpcyBzZW5kcmVjdiBvciByZWN2b25seSwKKyAgICAgICAgLy8gYW5k
IHRyYW5zY2VpdmVyJ3MgY3VycmVudCBkaXJlY3Rpb24gaXMgbmVpdGhlciBzZW5kcmVjdiBub3Ig
cmVjdm9ubHksCisgICAgICAgIC8vIHByb2Nlc3MgdGhlIGFkZGl0aW9uIG9mIGEgcmVtb3RlIHRy
YWNrIGZvciB0aGUgbWVkaWEgZGVzY3JpcHRpb24uCisgICAgICAgIGlmICghdHJhbnNjZWl2ZXIt
PmZpcmVkX2RpcmVjdGlvbigpIHx8CisgICAgICAgICAgICAhUnRwVHJhbnNjZWl2ZXJEaXJlY3Rp
b25IYXNSZWN2KCp0cmFuc2NlaXZlci0+ZmlyZWRfZGlyZWN0aW9uKCkpKSB7CisgICAgICAgICAg
UlRDX0xPRyhMU19JTkZPKQorICAgICAgICAgICAgICA8PCAiUHJvY2Vzc2luZyB0aGUgYWRkaXRp
b24gb2YgYSByZW1vdGUgdHJhY2sgZm9yIE1JRD0iCisgICAgICAgICAgICAgIDw8IGNvbnRlbnQt
Pm5hbWUgPDwgIi4iOworICAgICAgICAgIG5vd19yZWNlaXZpbmdfdHJhbnNjZWl2ZXJzLnB1c2hf
YmFjayh0cmFuc2NlaXZlcik7CiAgICAgICAgIH0KLSAgICAgICAgLy8gVGhpcyB3aWxsIGFkZCB0
aGUgcmVtb3RlIHRyYWNrIHRvIHRoZSBzdHJlYW1zLgotICAgICAgICAvLyBUT0RPKGhib3MpOiBX
aGVuIHdlIHJlbW92ZSByZW1vdGVfc3RyZWFtcygpLCB1c2Ugc2V0X3N0cmVhbV9pZHMoKQotICAg
ICAgICAvLyBpbnN0ZWFkLiBodHRwczovL2NyYnVnLmNvbS93ZWJydGMvOTQ4MAotICAgICAgICB0
cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+cmVjZWl2ZXJfaW50ZXJuYWwoKS0+U2V0U3RyZWFtcyht
ZWRpYV9zdHJlYW1zKTsKLSAgICAgICAgbm93X3JlY2VpdmluZ190cmFuc2NlaXZlcnMucHVzaF9i
YWNrKHRyYW5zY2VpdmVyKTsKICAgICAgIH0KICAgICAgIC8vIDIuMi44LjEuNzogSWYgZGlyZWN0
aW9uIGlzICJzZW5kb25seSIgb3IgImluYWN0aXZlIiwgYW5kIHRyYW5zY2VpdmVyJ3MKICAgICAg
IC8vIFtbRmlyZWREaXJlY3Rpb25dXSBzbG90IGlzIGVpdGhlciAic2VuZHJlY3YiIG9yICJyZWN2
b25seSIsIHByb2Nlc3MgdGhlCkBAIC0yNjQzLDYgKzI2OTcsNDYgQEAgUlRDRXJyb3IgUGVlckNv
bm5lY3Rpb246OkFwcGx5UmVtb3RlRGVzY3JpcHRpb24oCiAgIHJldHVybiBSVENFcnJvcjo6T0so
KTsKIH0KIAordm9pZCBQZWVyQ29ubmVjdGlvbjo6U2V0QXNzb2NpYXRlZFJlbW90ZVN0cmVhbXMo
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPFJ0cFJlY2VpdmVySW50ZXJuYWw+IHJlY2VpdmVyLAor
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgc3RyZWFtX2lkcywKKyAgICBzdGQ6
OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiogYWRkZWRf
c3RyZWFtcywKKyAgICBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1J
bnRlcmZhY2U+PiogcmVtb3ZlZF9zdHJlYW1zKSB7CisgIHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVk
X3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+IG1lZGlhX3N0cmVhbXM7CisgIGZvciAoY29u
c3Qgc3RkOjpzdHJpbmcmIHN0cmVhbV9pZCA6IHN0cmVhbV9pZHMpIHsKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+IHN0cmVhbSA9CisgICAgICAgIHJlbW90ZV9z
dHJlYW1zXy0+ZmluZChzdHJlYW1faWQpOworICAgIGlmICghc3RyZWFtKSB7CisgICAgICBzdHJl
YW0gPSBNZWRpYVN0cmVhbVByb3h5OjpDcmVhdGUocnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVN0cmVhbTo6Q3JlYXRl
KHN0cmVhbV9pZCkpOworICAgICAgcmVtb3RlX3N0cmVhbXNfLT5BZGRTdHJlYW0oc3RyZWFtKTsK
KyAgICAgIGFkZGVkX3N0cmVhbXMtPnB1c2hfYmFjayhzdHJlYW0pOworICAgIH0KKyAgICBtZWRp
YV9zdHJlYW1zLnB1c2hfYmFjayhzdHJlYW0pOworICB9CisgIC8vIFNwZWNpYWwgY2FzZTogImE9
bXNpZCIgbWlzc2luZywgdXNlIHJhbmRvbSBzdHJlYW0gSUQuCisgIGlmIChtZWRpYV9zdHJlYW1z
LmVtcHR5KCkgJiYKKyAgICAgICEocmVtb3RlX2Rlc2NyaXB0aW9uKCktPmRlc2NyaXB0aW9uKCkt
Pm1zaWRfc2lnbmFsaW5nKCkgJgorICAgICAgICBjcmlja2V0OjprTXNpZFNpZ25hbGluZ01lZGlh
U2VjdGlvbikpIHsKKyAgICBpZiAoIW1pc3NpbmdfbXNpZF9kZWZhdWx0X3N0cmVhbV8pIHsKKyAg
ICAgIG1pc3NpbmdfbXNpZF9kZWZhdWx0X3N0cmVhbV8gPSBNZWRpYVN0cmVhbVByb3h5OjpDcmVh
dGUoCisgICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwgTWVkaWFTdHJlYW06OkNyZWF0
ZShydGM6OkNyZWF0ZVJhbmRvbVV1aWQoKSkpOworICAgICAgYWRkZWRfc3RyZWFtcy0+cHVzaF9i
YWNrKG1pc3NpbmdfbXNpZF9kZWZhdWx0X3N0cmVhbV8pOworICAgIH0KKyAgICBtZWRpYV9zdHJl
YW1zLnB1c2hfYmFjayhtaXNzaW5nX21zaWRfZGVmYXVsdF9zdHJlYW1fKTsKKyAgfQorICBzdGQ6
OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiBwcmV2aW91
c19zdHJlYW1zID0KKyAgICAgIHJlY2VpdmVyLT5zdHJlYW1zKCk7CisgIC8vIFNldFN0cmVhbXMo
KSB3aWxsIGFkZC9yZW1vdmUgdGhlIHJlY2VpdmVyJ3MgdHJhY2sgdG8vZnJvbSB0aGUgc3RyZWFt
cy4gVGhpcworICAvLyBkaWZmZXJzIGZyb20gdGhlIHNwZWMgLSB0aGUgc3BlYyB1c2VzIGFuICJh
ZGRMaXN0IiBhbmQgInJlbW92ZUxpc3QiIHRvCisgIC8vIHVwZGF0ZSB0aGUgc3RyZWFtLXRyYWNr
IHJlbGF0aW9uc2hpcHMgaW4gYSBsYXRlciBzdGVwLiBXZSBkbyB0aGlzIGVhcmxpZXIsCisgIC8v
IGNoYW5naW5nIHRoZSBvcmRlciBvZiB0aGluZ3MsIGJ1dCB0aGUgZW5kLXJlc3VsdCBpcyB0aGUg
c2FtZS4KKyAgLy8gVE9ETyhoYm9zKTogV2hlbiB3ZSByZW1vdmUgcmVtb3RlX3N0cmVhbXMoKSwg
dXNlIHNldF9zdHJlYW1faWRzKCkKKyAgLy8gaW5zdGVhZC4gaHR0cHM6Ly9jcmJ1Zy5jb20vd2Vi
cnRjLzk0ODAKKyAgcmVjZWl2ZXItPlNldFN0cmVhbXMobWVkaWFfc3RyZWFtcyk7CisgIFJlbW92
ZVJlbW90ZVN0cmVhbXNJZkVtcHR5KHByZXZpb3VzX3N0cmVhbXMsIHJlbW92ZWRfc3RyZWFtcyk7
Cit9CisKIHZvaWQgUGVlckNvbm5lY3Rpb246OlByb2Nlc3NSZW1vdmFsT2ZSZW1vdGVUcmFjaygK
ICAgICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwVHJhbnNjZWl2ZXJQcm94eVdpdGhJbnRlcm5hbDxS
dHBUcmFuc2NlaXZlcj4+CiAgICAgICAgIHRyYW5zY2VpdmVyLApAQCAtMjY1MSwxOSArMjc0NSwy
NSBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpQcm9jZXNzUmVtb3ZhbE9mUmVtb3RlVHJhY2soCiAg
IFJUQ19EQ0hFQ0sodHJhbnNjZWl2ZXItPm1pZCgpKTsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAi
UHJvY2Vzc2luZyB0aGUgcmVtb3ZhbCBvZiBhIHRyYWNrIGZvciBNSUQ9IgogICAgICAgICAgICAg
ICAgICAgIDw8ICp0cmFuc2NlaXZlci0+bWlkKCk7Ci0gIHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVk
X3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+IG1lZGlhX3N0cmVhbXMgPQorICBzdGQ6OnZl
Y3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiBwcmV2aW91c19z
dHJlYW1zID0KICAgICAgIHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5yZWNlaXZlcl9pbnRlcm5h
bCgpLT5zdHJlYW1zKCk7CiAgIC8vIFRoaXMgd2lsbCByZW1vdmUgdGhlIHJlbW90ZSB0cmFjayBm
cm9tIHRoZSBzdHJlYW1zLgogICB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+cmVjZWl2ZXJfaW50
ZXJuYWwoKS0+c2V0X3N0cmVhbV9pZHMoe30pOwogICByZW1vdmVfbGlzdC0+cHVzaF9iYWNrKHRy
YW5zY2VpdmVyKTsKLSAgLy8gUmVtb3ZlIGFueSBzdHJlYW1zIHRoYXQgbm8gbG9uZ2VyIGhhdmUg
dHJhY2tzLgotICAvLyBUT0RPKGh0dHBzOi8vY3JidWcuY29tL3dlYnJ0Yy85NDgwKTogV2hlbiB3
ZSB1c2Ugc3RyZWFtIElEcyBpbnN0ZWFkCi0gIC8vIG9mIHN0cmVhbXMsIHNlZSBpZiB0aGUgc3Ry
ZWFtIHdhcyByZW1vdmVkIGJ5IGNoZWNraW5nIGlmIHRoaXMgd2FzIHRoZQotICAvLyBsYXN0IHJl
Y2VpdmVyIHdpdGggdGhhdCBzdHJlYW0gSUQuCi0gIGZvciAoY29uc3QgYXV0byYgc3RyZWFtIDog
bWVkaWFfc3RyZWFtcykgewotICAgIGlmIChzdHJlYW0tPkdldEF1ZGlvVHJhY2tzKCkuZW1wdHko
KSAmJiBzdHJlYW0tPkdldFZpZGVvVHJhY2tzKCkuZW1wdHkoKSkgewotICAgICAgcmVtb3RlX3N0
cmVhbXNfLT5SZW1vdmVTdHJlYW0oc3RyZWFtKTsKLSAgICAgIHJlbW92ZWRfc3RyZWFtcy0+cHVz
aF9iYWNrKHN0cmVhbSk7CisgIFJlbW92ZVJlbW90ZVN0cmVhbXNJZkVtcHR5KHByZXZpb3VzX3N0
cmVhbXMsIHJlbW92ZWRfc3RyZWFtcyk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OlJlbW92
ZVJlbW90ZVN0cmVhbXNJZkVtcHR5KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVk
X3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+JiByZW1vdGVfc3RyZWFtcywKKyAgICBzdGQ6
OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiogcmVtb3Zl
ZF9zdHJlYW1zKSB7CisgIC8vIFRPRE8oaHR0cHM6Ly9jcmJ1Zy5jb20vd2VicnRjLzk0ODApOiBX
aGVuIHdlIHVzZSBzdHJlYW0gSURzIGluc3RlYWQgb2YKKyAgLy8gc3RyZWFtcywgc2VlIGlmIHRo
ZSBzdHJlYW0gd2FzIHJlbW92ZWQgYnkgY2hlY2tpbmcgaWYgdGhpcyB3YXMgdGhlIGxhc3QKKyAg
Ly8gcmVjZWl2ZXIgd2l0aCB0aGF0IHN0cmVhbSBJRC4KKyAgZm9yIChhdXRvIHJlbW90ZV9zdHJl
YW0gOiByZW1vdGVfc3RyZWFtcykgeworICAgIGlmIChyZW1vdGVfc3RyZWFtLT5HZXRBdWRpb1Ry
YWNrcygpLmVtcHR5KCkgJiYKKyAgICAgICAgcmVtb3RlX3N0cmVhbS0+R2V0VmlkZW9UcmFja3Mo
KS5lbXB0eSgpKSB7CisgICAgICByZW1vdGVfc3RyZWFtc18tPlJlbW92ZVN0cmVhbShyZW1vdGVf
c3RyZWFtKTsKKyAgICAgIHJlbW92ZWRfc3RyZWFtcy0+cHVzaF9iYWNrKHJlbW90ZV9zdHJlYW0p
OwogICAgIH0KICAgfQogfQpAQCAtMzkwOCwyNSArNDAwOCw2IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b246OkdldE9wdGlvbnNGb3JQbGFuQk9mZmVyKAogICAgICAgICAgICAgICAgICAgICAgIG9mZmVy
X2Fuc3dlcl9vcHRpb25zLm51bV9zaW11bGNhc3RfbGF5ZXJzKTsKIH0KIAotLy8gRmluZCBhIG5l
dyBNSUQgdGhhdCBpcyBub3QgYWxyZWFkeSBpbiB8dXNlZF9taWRzfCwgdGhlbiBhZGQgaXQgdG8g
fHVzZWRfbWlkc3wKLS8vIGFuZCByZXR1cm4gYSByZWZlcmVuY2UgdG8gaXQuCi0vLyBHZW5lcmF0
ZWQgTUlEcyBzaG91bGQgYmUgbm8gbW9yZSB0aGFuIDMgYnl0ZXMgbG9uZyB0byB0YWtlIHVwIGxl
c3Mgc3BhY2UgaW4KLS8vIHRoZSBSVFAgcGFja2V0Lgotc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5n
JiBBbGxvY2F0ZU1pZChzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIHVzZWRfbWlkcykgewotICBSVENf
RENIRUNLKHVzZWRfbWlkcyk7Ci0gIC8vIFdlJ3JlIGJvcmluZzoganVzdCBnZW5lcmF0ZSBNSURz
IDAsIDEsIDIsIC4uLgotICBzaXplX3QgaSA9IDA7Ci0gIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPjo6
aXRlcmF0b3IgaXQ7Ci0gIGJvb2wgaW5zZXJ0ZWQ7Ci0gIGRvIHsKLSAgICBzdGQ6OnN0cmluZyBt
aWQgPSBydGM6OlRvU3RyaW5nKGkrKyk7Ci0gICAgYXV0byBpbnNlcnRfcmVzdWx0ID0gdXNlZF9t
aWRzLT5pbnNlcnQobWlkKTsKLSAgICBpdCA9IGluc2VydF9yZXN1bHQuZmlyc3Q7Ci0gICAgaW5z
ZXJ0ZWQgPSBpbnNlcnRfcmVzdWx0LnNlY29uZDsKLSAgfSB3aGlsZSAoIWluc2VydGVkKTsKLSAg
cmV0dXJuICppdDsKLX0KLQogc3RhdGljIGNyaWNrZXQ6Ok1lZGlhRGVzY3JpcHRpb25PcHRpb25z
CiBHZXRNZWRpYURlc2NyaXB0aW9uT3B0aW9uc0ZvclRyYW5zY2VpdmVyKAogICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxSdHBUcmFuc2NlaXZlclByb3h5V2l0aEludGVybmFsPFJ0cFRyYW5zY2VpdmVy
Pj4KQEAgLTYwODYsNiArNjE2NywyMSBAQCBib29sIFBlZXJDb25uZWN0aW9uOjpIYXNSdGNwTXV4
RW5hYmxlZChjb25zdCBjcmlja2V0OjpDb250ZW50SW5mbyogY29udGVudCkgewogICByZXR1cm4g
Y29udGVudC0+bWVkaWFfZGVzY3JpcHRpb24oKS0+cnRjcF9tdXgoKTsKIH0KIAorc3RhdGljIFJU
Q0Vycm9yIFZhbGlkYXRlTWlkcyhjb25zdCBjcmlja2V0OjpTZXNzaW9uRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uKSB7CisgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtaWRzOworICBmb3IgKGNvbnN0
IGNyaWNrZXQ6OkNvbnRlbnRJbmZvJiBjb250ZW50IDogZGVzY3JpcHRpb24uY29udGVudHMoKSkg
eworICAgIGlmIChjb250ZW50Lm5hbWUuZW1wdHkoKSkgeworICAgICAgTE9HX0FORF9SRVRVUk5f
RVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJBIG1lZGlhIHNlY3Rpb24gaXMgbWlzc2luZyBhIE1JRCBhdHRyaWJ1dGUuIik7
CisgICAgfQorICAgIGlmICghbWlkcy5pbnNlcnQoY29udGVudC5uYW1lKS5zZWNvbmQpIHsKKyAg
ICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiRHVwbGljYXRlIGE9bWlkIHZhbHVlICciICsg
Y29udGVudC5uYW1lICsgIicuIik7CisgICAgfQorICB9CisgIHJldHVybiBSVENFcnJvcjo6T0so
KTsKK30KKwogUlRDRXJyb3IgUGVlckNvbm5lY3Rpb246OlZhbGlkYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uKAogICAgIGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSogc2Rlc2MsCiAgICAg
Y3JpY2tldDo6Q29udGVudFNvdXJjZSBzb3VyY2UpIHsKQEAgLTYxMDUsNiArNjIwMSwxMSBAQCBS
VENFcnJvciBQZWVyQ29ubmVjdGlvbjo6VmFsaWRhdGVTZXNzaW9uRGVzY3JpcHRpb24oCiAgICAg
ICAgICJDYWxsZWQgaW4gd3Jvbmcgc3RhdGU6ICIgKyBHZXRTaWduYWxpbmdTdGF0ZVN0cmluZyhz
aWduYWxpbmdfc3RhdGUoKSkpOwogICB9CiAKKyAgUlRDRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZU1p
ZHMoKnNkZXNjLT5kZXNjcmlwdGlvbigpKTsKKyAgaWYgKCFlcnJvci5vaygpKSB7CisgICAgcmV0
dXJuIGVycm9yOworICB9CisKICAgLy8gVmVyaWZ5IGNyeXB0byBzZXR0aW5ncy4KICAgc3RkOjpz
dHJpbmcgY3J5cHRvX2Vycm9yOwogICBpZiAod2VicnRjX3Nlc3Npb25fZGVzY19mYWN0b3J5Xy0+
U2Rlc1BvbGljeSgpID09IGNyaWNrZXQ6OlNFQ19SRVFVSVJFRCB8fApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25u
ZWN0aW9uLmgKaW5kZXggMTgxMGYxYzJiY2QyNmUzMjhiNmY4NWVhYmM3OGEzOGNmMGRmNTVjOC4u
NmQ3NTg0ZDRlNWZkMDQ3MTg1MTQwYTIxNTA2NTU2YmMwMjQwNmU2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVy
Y29ubmVjdGlvbi5oCkBAIC00NzIsNiArNDcyLDE0IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uIDog
cHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAgICAgICAgICAgdHJhbnNjZWl2ZXIsCiAg
ICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UqIHNkZXNjKSBjb25zdDsKIAor
ICAvLyBSdW5zIHRoZSBhbGdvcml0aG0gKipzZXQgdGhlIGFzc29jaWF0ZWQgcmVtb3RlIHN0cmVh
bXMqKiBzcGVjaWZpZWQgaW4KKyAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1wYy8j
c2V0LWFzc29jaWF0ZWQtcmVtb3RlLXN0cmVhbXMuCisgIHZvaWQgU2V0QXNzb2NpYXRlZFJlbW90
ZVN0cmVhbXMoCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwUmVjZWl2ZXJJbnRlcm5hbD4g
cmVjZWl2ZXIsCisgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHN0cmVhbV9p
ZHMsCisgICAgICBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRl
cmZhY2U+PiogYWRkZWRfc3RyZWFtcywKKyAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+KiByZW1vdmVkX3N0cmVhbXMpOworCiAgIC8vIFJ1
bnMgdGhlIGFsZ29yaXRobSAqKnByb2Nlc3MgdGhlIHJlbW92YWwgb2YgYSByZW1vdGUgdHJhY2sq
KiBzcGVjaWZpZWQgaW4KICAgLy8gdGhlIFdlYlJUQyBzcGVjaWZpY2F0aW9uLgogICAvLyBUaGlz
IG1ldGhvZCB3aWxsIHVwZGF0ZSB0aGUgZm9sbG93aW5nIGxpc3RzOgpAQCAtNDg2LDYgKzQ5NCwx
MSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVybmFs
LAogICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPFJ0cFRyYW5zY2VpdmVySW50
ZXJmYWNlPj4qIHJlbW92ZV9saXN0LAogICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVm
cHRyPE1lZGlhU3RyZWFtSW50ZXJmYWNlPj4qIHJlbW92ZWRfc3RyZWFtcyk7CiAKKyAgdm9pZCBS
ZW1vdmVSZW1vdGVTdHJlYW1zSWZFbXB0eSgKKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Yzo6
c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+JgorICAgICAgICAgIHJlbW90ZV9z
dHJlYW1zLAorICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFt
SW50ZXJmYWNlPj4qIHJlbW92ZWRfc3RyZWFtcyk7CisKICAgdm9pZCBPbk5lZ290aWF0aW9uTmVl
ZGVkKCk7CiAKICAgYm9vbCBJc0Nsb3NlZCgpIGNvbnN0IHsKQEAgLTY0OSw2ICs2NjIsMTIgQEAg
Y2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKICAg
ICByZXR1cm4gY29uZmlndXJhdGlvbl8uc2RwX3NlbWFudGljcyA9PSBTZHBTZW1hbnRpY3M6OmtV
bmlmaWVkUGxhbjsKICAgfQogCisgIC8vIFRoZSBvZmZlci9hbnN3ZXIgbWFjaGluZXJ5IGFzc3Vt
ZXMgdGhlIG1lZGlhIHNlY3Rpb24gTUlEIGlzIHByZXNlbnQgYW5kCisgIC8vIHVuaXF1ZS4gVG8g
c3VwcG9ydCBsZWdhY3kgZW5kIHBvaW50cyB0aGF0IGRvIG5vdCBzdXBwbHkgYT1taWQgbGluZXMs
IHRoaXMKKyAgLy8gbWV0aG9kIHdpbGwgbW9kaWZ5IHRoZSBzZXNzaW9uIGRlc2NyaXB0aW9uIHRv
IGFkZCBNSURzIGdlbmVyYXRlZCBhY2NvcmRpbmcKKyAgLy8gdG8gdGhlIFNEUCBzZW1hbnRpY3Mu
CisgIHZvaWQgRmlsbEluTWlzc2luZ1JlbW90ZU1pZHMoY3JpY2tldDo6U2Vzc2lvbkRlc2NyaXB0
aW9uKiByZW1vdGVfZGVzY3JpcHRpb24pOworCiAgIC8vIElzIHRoZXJlIGFuIFJ0cFNlbmRlciBv
ZiB0aGUgZ2l2ZW4gdHlwZT8KICAgYm9vbCBIYXNSdHBTZW5kZXIoY3JpY2tldDo6TWVkaWFUeXBl
IHR5cGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9qc2VwX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fanNl
cF91bml0dGVzdC5jYwppbmRleCBmMGM5MTExODg1Y2E3YjI5NTc3MWQ2YWI5MjcwMmEyNDRjNDYy
MjcxLi43YTA0NDc0Nzg3NmE1ZWRiMWZhNDYwMWU1ZDUzNGMyNDliNzFhNzY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVj
dGlvbl9qc2VwX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2pzZXBfdW5pdHRlc3QuY2MKQEAgLTE2MDQs
NCArMTYwNCwxMTAgQEAgVEVTVF9GKFBlZXJDb25uZWN0aW9uSnNlcFRlc3QsIE9uZVZpZGVvVW5p
ZmllZFBsYW5Ub1R3b1ZpZGVvUGxhbkJGYWlscykgewogICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBl
OjpJTlZBTElEX1BBUkFNRVRFUiwgZXJyb3IudHlwZSgpKTsKIH0KIAorLy8gUmVtb3ZlcyB0aGUg
UlRQIGhlYWRlciBleHRlbnNpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBVUkkgZnJvbSB0
aGUgbWVkaWEKKy8vIGRlc2NyaXB0aW9uLgorc3RhdGljIHZvaWQgUmVtb3ZlUnRwSGVhZGVyRXh0
ZW5zaW9uQnlVcmkoCisgICAgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIG1lZGlhX2Rlc2NyaXB0
aW9uLAorICAgIGFic2w6OnN0cmluZ192aWV3IHVyaSkgeworICBzdGQ6OnZlY3RvcjxSdHBFeHRl
bnNpb24+IGhlYWRlcl9leHRlbnNpb25zID0KKyAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uLT5ydHBf
aGVhZGVyX2V4dGVuc2lvbnMoKTsKKyAgaGVhZGVyX2V4dGVuc2lvbnMuZXJhc2Uoc3RkOjpyZW1v
dmVfaWYoCisgICAgICBoZWFkZXJfZXh0ZW5zaW9ucy5iZWdpbigpLCBoZWFkZXJfZXh0ZW5zaW9u
cy5lbmQoKSwKKyAgICAgIFt1cmldKGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uKSB7IHJl
dHVybiBleHRlbnNpb24udXJpID09IHVyaTsgfSkpOworICBtZWRpYV9kZXNjcmlwdGlvbi0+c2V0
X3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyhoZWFkZXJfZXh0ZW5zaW9ucyk7Cit9CisKKy8vIFRyYW5z
Zm9ybXMgYSBzZXNzaW9uIGRlc2NyaXB0aW9uIHRvIGVtdWxhdGUgYSBsZWdhY3kgZW5kcG9pbnQg
d2hpY2ggZG9lcyBub3QKKy8vIHN1cHBvcnQgYT1taWQsIEJVTkRMRSwgYW5kIHRoZSBNSUQgaGVh
ZGVyIGV4dGVuc2lvbi4KK3N0YXRpYyB2b2lkIENsZWFyTWlkcyhTZXNzaW9uRGVzY3JpcHRpb25J
bnRlcmZhY2UqIHNkZXNjKSB7CisgIGNyaWNrZXQ6OlNlc3Npb25EZXNjcmlwdGlvbiogZGVzYyA9
IHNkZXNjLT5kZXNjcmlwdGlvbigpOworICBkZXNjLT5SZW1vdmVHcm91cEJ5TmFtZShjcmlja2V0
OjpHUk9VUF9UWVBFX0JVTkRMRSk7CisgIGNyaWNrZXQ6OkNvbnRlbnRJbmZvKiBhdWRpb19jb250
ZW50ID0gY3JpY2tldDo6R2V0Rmlyc3RBdWRpb0NvbnRlbnQoZGVzYyk7CisgIGlmIChhdWRpb19j
b250ZW50KSB7CisgICAgZGVzYy0+R2V0VHJhbnNwb3J0SW5mb0J5TmFtZShhdWRpb19jb250ZW50
LT5uYW1lKS0+Y29udGVudF9uYW1lID0gIiI7CisgICAgYXVkaW9fY29udGVudC0+bmFtZSA9ICIi
OworICAgIFJlbW92ZVJ0cEhlYWRlckV4dGVuc2lvbkJ5VXJpKGF1ZGlvX2NvbnRlbnQtPm1lZGlh
X2Rlc2NyaXB0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwRXh0
ZW5zaW9uOjprTWlkVXJpKTsKKyAgfQorICBjcmlja2V0OjpDb250ZW50SW5mbyogdmlkZW9fY29u
dGVudCA9IGNyaWNrZXQ6OkdldEZpcnN0VmlkZW9Db250ZW50KGRlc2MpOworICBpZiAodmlkZW9f
Y29udGVudCkgeworICAgIGRlc2MtPkdldFRyYW5zcG9ydEluZm9CeU5hbWUodmlkZW9fY29udGVu
dC0+bmFtZSktPmNvbnRlbnRfbmFtZSA9ICIiOworICAgIHZpZGVvX2NvbnRlbnQtPm5hbWUgPSAi
IjsKKyAgICBSZW1vdmVSdHBIZWFkZXJFeHRlbnNpb25CeVVyaSh2aWRlb19jb250ZW50LT5tZWRp
YV9kZXNjcmlwdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cEV4
dGVuc2lvbjo6a01pZFVyaSk7CisgIH0KK30KKworLy8gVGVzdCB0aGF0IG5lZ290aWF0aW9uIHdv
cmtzIHdpdGggbGVnYWN5IGVuZHBvaW50cyB3aGljaCBkbyBub3Qgc3VwcG9ydCBhPW1pZC4KK1RF
U1RfRihQZWVyQ29ubmVjdGlvbkpzZXBUZXN0LCBMZWdhY3lOb01pZEF1ZGlvT25seU9mZmVyKSB7
CisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgY2FsbGVyLT5BZGRB
dWRpb1RyYWNrKCJhdWRpbyIpOworICBhdXRvIGNhbGxlZSA9IENyZWF0ZVBlZXJDb25uZWN0aW9u
KCk7CisgIGNhbGxlZS0+QWRkQXVkaW9UcmFjaygiYXVkaW8iKTsKKworICBhdXRvIG9mZmVyID0g
Y2FsbGVyLT5DcmVhdGVPZmZlcigpOworICBDbGVhck1pZHMob2ZmZXIuZ2V0KCkpOworCisgIEFT
U0VSVF9UUlVFKGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24oc3RkOjptb3ZlKG9mZmVyKSkp
OworICBFWFBFQ1RfVFJVRShjYWxsZWUtPlNldExvY2FsRGVzY3JpcHRpb24oY2FsbGVlLT5DcmVh
dGVBbnN3ZXIoKSkpOworfQorVEVTVF9GKFBlZXJDb25uZWN0aW9uSnNlcFRlc3QsIExlZ2FjeU5v
TWlkQXVkaW9WaWRlb09mZmVyKSB7CisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rp
b24oKTsKKyAgY2FsbGVyLT5BZGRBdWRpb1RyYWNrKCJhdWRpbyIpOworICBjYWxsZXItPkFkZFZp
ZGVvVHJhY2soInZpZGVvIik7CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24o
KTsKKyAgY2FsbGVlLT5BZGRBdWRpb1RyYWNrKCJhdWRpbyIpOworICBjYWxsZWUtPkFkZFZpZGVv
VHJhY2soInZpZGVvIik7CisKKyAgYXV0byBvZmZlciA9IGNhbGxlci0+Q3JlYXRlT2ZmZXIoKTsK
KyAgQ2xlYXJNaWRzKG9mZmVyLmdldCgpKTsKKworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldFJl
bW90ZURlc2NyaXB0aW9uKHN0ZDo6bW92ZShvZmZlcikpKTsKKyAgRVhQRUNUX1RSVUUoY2FsbGVl
LT5TZXRMb2NhbERlc2NyaXB0aW9uKGNhbGxlZS0+Q3JlYXRlQW5zd2VyKCkpKTsKK30KK1RFU1Rf
RihQZWVyQ29ubmVjdGlvbkpzZXBUZXN0LCBMZWdhY3lOb01pZEF1ZGlvT25seUFuc3dlcikgewor
ICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CisgIGNhbGxlci0+QWRkQXVk
aW9UcmFjaygiYXVkaW8iKTsKKyAgYXV0byBjYWxsZWUgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigp
OworICBjYWxsZWUtPkFkZEF1ZGlvVHJhY2soImF1ZGlvIik7CisKKyAgQVNTRVJUX1RSVUUoY2Fs
bGVlLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyQW5kU2V0QXNMb2Nh
bCgpKSk7CisKKyAgYXV0byBhbnN3ZXIgPSBjYWxsZWUtPkNyZWF0ZUFuc3dlcigpOworICBDbGVh
ck1pZHMoYW5zd2VyLmdldCgpKTsKKworICBFWFBFQ1RfVFJVRShjYWxsZXItPlNldFJlbW90ZURl
c2NyaXB0aW9uKHN0ZDo6bW92ZShhbnN3ZXIpKSk7Cit9CitURVNUX0YoUGVlckNvbm5lY3Rpb25K
c2VwVGVzdCwgTGVnYWN5Tm9NaWRBdWRpb1ZpZGVvQW5zd2VyKSB7CisgIGF1dG8gY2FsbGVyID0g
Q3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgY2FsbGVyLT5BZGRBdWRpb1RyYWNrKCJhdWRpbyIp
OworICBjYWxsZXItPkFkZFZpZGVvVHJhY2soInZpZGVvIik7CisgIGF1dG8gY2FsbGVlID0gQ3Jl
YXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgY2FsbGVlLT5BZGRBdWRpb1RyYWNrKCJhdWRpbyIpOwor
ICBjYWxsZWUtPkFkZFZpZGVvVHJhY2soInZpZGVvIik7CisKKyAgQVNTRVJUX1RSVUUoY2FsbGVl
LT5TZXRSZW1vdGVEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyQW5kU2V0QXNMb2NhbCgp
KSk7CisKKyAgYXV0byBhbnN3ZXIgPSBjYWxsZWUtPkNyZWF0ZUFuc3dlcigpOworICBDbGVhck1p
ZHMoYW5zd2VyLmdldCgpKTsKKworICBBU1NFUlRfVFJVRShjYWxsZXItPlNldFJlbW90ZURlc2Ny
aXB0aW9uKHN0ZDo6bW92ZShhbnN3ZXIpKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBTZXRMb2NhbERl
c2NyaXB0aW9uIGZhaWxzIGlmIGE9bWlkIGxpbmVzIGFyZSBtaXNzaW5nLgorVEVTVF9GKFBlZXJD
b25uZWN0aW9uSnNlcFRlc3QsIFNldExvY2FsRGVzY3JpcHRpb25GYWlsc01pc3NpbmdNaWQpIHsK
KyAgYXV0byBjYWxsZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigpOworICBjYWxsZXItPkFkZEF1
ZGlvVHJhY2soImF1ZGlvIik7CisKKyAgYXV0byBvZmZlciA9IGNhbGxlci0+Q3JlYXRlT2ZmZXIo
KTsKKyAgQ2xlYXJNaWRzKG9mZmVyLmdldCgpKTsKKworICBzdGQ6OnN0cmluZyBlcnJvcjsKKyAg
QVNTRVJUX0ZBTFNFKGNhbGxlci0+U2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om1vdmUob2ZmZXIp
LCAmZXJyb3IpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgIkZhaWxlZCB0byBzZXQgbG9jYWwgb2Zm
ZXIgc2RwOiBBIG1lZGlhIHNlY3Rpb24gaXMgbWlzc2luZyBhIE1JRCAiCisgICAgICAiYXR0cmli
dXRlLiIsCisgICAgICBlcnJvcik7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uX21lZGlhX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fbWVkaWFfdW5pdHRlc3QuY2MKaW5kZXgg
NmFmMGM5ODg3ZTZlMmRmZTRhMWMwN2NhZDIyMGViZDEyMGU1NjQ4Ni4uMjVhZWE5ODI4NDk3ZWMx
MGU5YzQyNTYxMDZjMzM3YTk4YjA4ZTc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fbWVkaWFfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVl
cmNvbm5lY3Rpb25fbWVkaWFfdW5pdHRlc3QuY2MKQEAgLTEwODQsNiArMTA4NCwyMiBAQCBURVNU
X1AoUGVlckNvbm5lY3Rpb25NZWRpYVRlc3QsIFJlT2ZmZXJIYXNTYW1lTWlkc0FzRmlyc3RPZmZl
cikgewogICAgICAgICAgICAgY3JpY2tldDo6R2V0Rmlyc3RWaWRlb0NvbnRlbnQocmVvZmZlci0+
ZGVzY3JpcHRpb24oKSktPm5hbWUpOwogfQogCisvLyBUZXN0IHRoYXQgU2V0UmVtb3RlRGVzY3Jp
cHRpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGVyZSBhcmUgdHdvIG09IHNlY3Rpb25zCisvLyB3
aXRoIHRoZSBzYW1lIE1JRCB2YWx1ZS4KK1RFU1RfUChQZWVyQ29ubmVjdGlvbk1lZGlhVGVzdCwg
U2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsc1dpdGhEdXBsaWNhdGVNaWRzKSB7CisgIGF1dG8gY2Fs
bGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQXVkaW9WaWRlbygpOworICBhdXRvIGNhbGxl
ZSA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlvVmlkZW8oKTsKKworICBhdXRvIG9mZmVy
ID0gY2FsbGVyLT5DcmVhdGVPZmZlcigpOworICBSZW5hbWVDb250ZW50KG9mZmVyLT5kZXNjcmlw
dGlvbigpLCBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCAic2FtZSIpOworICBSZW5hbWVDb250
ZW50KG9mZmVyLT5kZXNjcmlwdGlvbigpLCBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCAic2Ft
ZSIpOworCisgIHN0ZDo6c3RyaW5nIGVycm9yOworICBFWFBFQ1RfRkFMU0UoY2FsbGVlLT5TZXRS
ZW1vdGVEZXNjcmlwdGlvbihzdGQ6Om1vdmUob2ZmZXIpLCAmZXJyb3IpKTsKKyAgRVhQRUNUX0VR
KGVycm9yLAorICAgICAgICAgICAgIkZhaWxlZCB0byBzZXQgcmVtb3RlIG9mZmVyIHNkcDogRHVw
bGljYXRlIGE9bWlkIHZhbHVlICdzYW1lJy4iKTsKK30KKwogVEVTVF9QKFBlZXJDb25uZWN0aW9u
TWVkaWFUZXN0LAogICAgICAgIENvbWJpbmVkQXVkaW9WaWRlb0J3ZUNvbmZpZ1Byb3BhZ2F0ZWRU
b01lZGlhRW5naW5lKSB7CiAgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b25fcnRwX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fcnRwX3VuaXR0ZXN0LmNjCmluZGV4IDcwOTg0NzBiYWFl
ZWU5OGQwZTc0YTZmYzcwNzRhODc2MTFmOTU5NmIuLjBiMTg1OWFiNzIzYzBkNDUwMTc1NjZlYTAx
ZmNmZTQyMTg2Njk3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX3J0cF91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9y
dHBfdW5pdHRlc3QuY2MKQEAgLTQ1NSw2ICs0NTUsMzMgQEAgVEVTVF9GKFBlZXJDb25uZWN0aW9u
UnRwVGVzdFVuaWZpZWRQbGFuLAogICBFWFBFQ1RfRVEoMXUsIGNhbGxlZS0+b2JzZXJ2ZXIoKS0+
cmVtb3ZlX3RyYWNrX2V2ZW50c18uc2l6ZSgpKTsKIH0KIAorVEVTVF9GKFBlZXJDb25uZWN0aW9u
UnRwVGVzdFVuaWZpZWRQbGFuLCBDaGFuZ2VNc2lkV2hpbGVSZWNlaXZpbmcpIHsKKyAgYXV0byBj
YWxsZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigpOworICBjYWxsZXItPkFkZEF1ZGlvVHJhY2so
ImF1ZGlvX3RyYWNrIiwgeyJzdHJlYW0xIn0pOworICBhdXRvIGNhbGxlZSA9IENyZWF0ZVBlZXJD
b25uZWN0aW9uKCk7CisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24o
Y2FsbGVyLT5DcmVhdGVPZmZlcigpKSk7CisKKyAgQVNTRVJUX0VRKDF1LCBjYWxsZWUtPm9ic2Vy
dmVyKCktPm9uX3RyYWNrX3RyYW5zY2VpdmVyc18uc2l6ZSgpKTsKKyAgYXV0byB0cmFuc2NlaXZl
ciA9IGNhbGxlZS0+b2JzZXJ2ZXIoKS0+b25fdHJhY2tfdHJhbnNjZWl2ZXJzX1swXTsKKyAgQVNT
RVJUX0VRKDF1LCB0cmFuc2NlaXZlci0+cmVjZWl2ZXIoKS0+c3RyZWFtcygpLnNpemUoKSk7Cisg
IEVYUEVDVF9FUSgic3RyZWFtMSIsIHRyYW5zY2VpdmVyLT5yZWNlaXZlcigpLT5zdHJlYW1zKClb
MF0tPmlkKCkpOworCisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0TG9jYWxEZXNjcmlwdGlvbihj
YWxsZWUtPkNyZWF0ZUFuc3dlcigpKSk7CisKKyAgLy8gQ2hhbmdlIHRoZSBzdHJlYW0gSUQgaW4g
dGhlIG9mZmVyLgorICAvLyBUT0RPKGh0dHBzOi8vY3JidWcuY29tL3dlYnJ0Yy8xMDEyOSk6IFdo
ZW4gUnRwU2VuZGVySW50ZXJmYWNlOjpTZXRTdHJlYW1zCisgIC8vIGlzIHN1cHBvcnRlZCwgdGhp
cyBjYW4gdXNlIHRoYXQgaW5zdGVhZCBvZiBtdW5naW5nIHRoZSBTRFAuCisgIGF1dG8gb2ZmZXIg
PSBjYWxsZXItPkNyZWF0ZU9mZmVyKCk7CisgIGF1dG8gY29udGVudHMgPSBvZmZlci0+ZGVzY3Jp
cHRpb24oKS0+Y29udGVudHMoKTsKKyAgQVNTRVJUX0VRKDF1LCBjb250ZW50cy5zaXplKCkpOwor
ICBhdXRvJiBzdHJlYW1fcGFyYW1zID0gY29udGVudHNbMF0ubWVkaWFfZGVzY3JpcHRpb24oKS0+
bXV0YWJsZV9zdHJlYW1zKCk7CisgIEFTU0VSVF9FUSgxdSwgc3RyZWFtX3BhcmFtcy5zaXplKCkp
OworICBzdHJlYW1fcGFyYW1zWzBdLnNldF9zdHJlYW1faWRzKHsic3RyZWFtMiJ9KTsKKyAgQVNT
RVJUX1RSVUUoY2FsbGVlLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihzdGQ6Om1vdmUob2ZmZXIpKSk7
CisgIEFTU0VSVF9FUSgxdSwgdHJhbnNjZWl2ZXItPnJlY2VpdmVyKCktPnN0cmVhbXMoKS5zaXpl
KCkpOworICBFWFBFQ1RfRVEoInN0cmVhbTIiLCB0cmFuc2NlaXZlci0+cmVjZWl2ZXIoKS0+c3Ry
ZWFtcygpWzBdLT5pZCgpKTsKK30KKwogLy8gVGhlc2UgdGVzdHMgZXhhbWluZSB0aGUgc3RhdGUg
b2YgdGhlIHBlZXIgY29ubmVjdGlvbiBhcyBhIHJlc3VsdCBvZgogLy8gcGVyZm9ybWluZyBTZXRS
ZW1vdGVEZXNjcmlwdGlvbigpLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb24uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb24uY2MK
aW5kZXggM2E5YjE4ZWU2OTE5YjM3ZmY1OTQwZWU2MDY0ZWNjYjdiNDZhOGQ0ZC4uMzM0NjAxMmRi
YjAzM2JmMWE0MTgxZDkyMjU1ZmMzZmYzMWU1Zjg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25k
ZXNjcmlwdGlvbi5jYwpAQCAtMTk2LDEyICsxOTYsOCBAQCBib29sIFNlc3Npb25EZXNjcmlwdGlv
bjo6UmVtb3ZlQ29udGVudEJ5TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgewogICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2Vzc2lvbkRlc2NyaXB0aW9uOjpBZGRUcmFuc3BvcnRJbmZv
KGNvbnN0IFRyYW5zcG9ydEluZm8mIHRyYW5zcG9ydF9pbmZvKSB7Ci0gIGlmIChHZXRUcmFuc3Bv
cnRJbmZvQnlOYW1lKHRyYW5zcG9ydF9pbmZvLmNvbnRlbnRfbmFtZSkgIT0gTlVMTCkgewotICAg
IHJldHVybiBmYWxzZTsKLSAgfQordm9pZCBTZXNzaW9uRGVzY3JpcHRpb246OkFkZFRyYW5zcG9y
dEluZm8oY29uc3QgVHJhbnNwb3J0SW5mbyYgdHJhbnNwb3J0X2luZm8pIHsKICAgdHJhbnNwb3J0
X2luZm9zXy5wdXNoX2JhY2sodHJhbnNwb3J0X2luZm8pOwotICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ym9vbCBTZXNzaW9uRGVzY3JpcHRpb246OlJlbW92ZVRyYW5zcG9ydEluZm9CeU5hbWUoY29uc3Qg
c3RkOjpzdHJpbmcmIG5hbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgKaW5k
ZXggMzgyOTE0ODRjZDhjYjRlODg4ODczN2E3OGQ2YjBmODIxNTRlODBmNC4uM2E5OGRjZWIyOTcy
OGVmMDhjMGYyMGFjMDQ2NjRiMGE4OTVhNmJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2Ny
aXB0aW9uLmgKQEAgLTQ0Nyw4ICs0NDcsNyBAQCBjbGFzcyBTZXNzaW9uRGVzY3JpcHRpb24gewog
ICAgIHRyYW5zcG9ydF9pbmZvc18gPSB0cmFuc3BvcnRfaW5mb3M7CiAgIH0KICAgLy8gQWRkcyBh
IFRyYW5zcG9ydEluZm8gdG8gdGhpcyBkZXNjcmlwdGlvbi4KLSAgLy8gUmV0dXJucyBmYWxzZSBp
ZiBhIFRyYW5zcG9ydEluZm8gd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLgotICBi
b29sIEFkZFRyYW5zcG9ydEluZm8oY29uc3QgVHJhbnNwb3J0SW5mbyYgdHJhbnNwb3J0X2luZm8p
OworICB2b2lkIEFkZFRyYW5zcG9ydEluZm8oY29uc3QgVHJhbnNwb3J0SW5mbyYgdHJhbnNwb3J0
X2luZm8pOwogICBib29sIFJlbW92ZVRyYW5zcG9ydEluZm9CeU5hbWUoY29uc3Qgc3RkOjpzdHJp
bmcmIG5hbWUpOwogCiAgIC8vIEdyb3VwIGFjY2Vzc29ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcC5jYwppbmRl
eCAwY2Q2YmVjZWVmYTM3N2RmZmU3ZjkzNGI5ZTViOTY2MzUwNDZjNTQ1Li4wY2FhYTEyMGJhYTJk
MzM4ZTk0NjZjNTM3MTVmMjg4MDZhYTU3YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHAuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwLmNjCkBAIC0yMzYz
LDIwICsyMzYzLDYgQEAgc3RhdGljIEMqIFBhcnNlQ29udGVudERlc2NyaXB0aW9uKGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dmVjdG9yPEpzZXBJY2VDYW5kaWRhdGUqPiogY2FuZGlkYXRlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlNkcFBhcnNlRXJyb3IqIGVycm9yKSB7CiAgIEMq
IG1lZGlhX2Rlc2MgPSBuZXcgQygpOwotICBzd2l0Y2ggKG1lZGlhX3R5cGUpIHsKLSAgICBjYXNl
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86Ci0gICAgICAqY29udGVudF9uYW1lID0gY3JpY2tl
dDo6Q05fQVVESU87Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
VklERU86Ci0gICAgICAqY29udGVudF9uYW1lID0gY3JpY2tldDo6Q05fVklERU87Ci0gICAgICBi
cmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQToKLSAgICAgICpjb250ZW50
X25hbWUgPSBjcmlja2V0OjpDTl9EQVRBOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgICBicmVhazsKLSAgfQogICBpZiAoIVBhcnNlQ29u
dGVudChtZXNzYWdlLCBtZWRpYV90eXBlLCBtbGluZV9pbmRleCwgcHJvdG9jb2wsIHBheWxvYWRf
dHlwZXMsCiAgICAgICAgICAgICAgICAgICAgIHBvcywgY29udGVudF9uYW1lLCBidW5kbGVfb25s
eSwgbXNpZF9zaWduYWxpbmcsIG1lZGlhX2Rlc2MsCiAgICAgICAgICAgICAgICAgICAgIHRyYW5z
cG9ydCwgY2FuZGlkYXRlcywgZXJyb3IpKSB7CkBAIC0yNTU5LDE0ICsyNTQ1LDcgQEAgYm9vbCBQ
YXJzZU1lZGlhRGVzY3JpcHRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE1lZGlhUHJvdG9jb2xUeXBlOjpr
UnRwLAogICAgICAgICAgICAgICAgICAgICAgY29udGVudF9yZWplY3RlZCwgYnVuZGxlX29ubHks
IGNvbnRlbnQucmVsZWFzZSgpKTsKICAgICAvLyBDcmVhdGUgVHJhbnNwb3J0SW5mbyB3aXRoIHRo
ZSBtZWRpYSBsZXZlbCAiaWNlLXB3ZCIgYW5kICJpY2UtdWZyYWciLgotICAgIFRyYW5zcG9ydElu
Zm8gdHJhbnNwb3J0X2luZm8oY29udGVudF9uYW1lLCB0cmFuc3BvcnQpOwotCi0gICAgaWYgKCFk
ZXNjLT5BZGRUcmFuc3BvcnRJbmZvKHRyYW5zcG9ydF9pbmZvKSkgewotICAgICAgcnRjOjpTdHJp
bmdCdWlsZGVyIGRlc2NyaXB0aW9uOwotICAgICAgZGVzY3JpcHRpb24gPDwgIkZhaWxlZCB0byBB
ZGRUcmFuc3BvcnRJbmZvIHdpdGggY29udGVudCBuYW1lOiAiCi0gICAgICAgICAgICAgICAgICA8
PCBjb250ZW50X25hbWU7Ci0gICAgICByZXR1cm4gUGFyc2VGYWlsZWQoIiIsIGRlc2NyaXB0aW9u
LnN0cigpLCBlcnJvcik7Ci0gICAgfQorICAgIGRlc2MtPkFkZFRyYW5zcG9ydEluZm8oVHJhbnNw
b3J0SW5mbyhjb250ZW50X25hbWUsIHRyYW5zcG9ydCkpOwogICB9CiAKICAgZGVzYy0+c2V0X21z
aWRfc2lnbmFsaW5nKG1zaWRfc2lnbmFsaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcF91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcF91bml0
dGVzdC5jYwppbmRleCA2Nzc1OTU3NDk4ZmQ5Y2YyMGQ4MTQyYmZiMjE5YTI2Nzk2MmUwYzkyLi5m
ZjdmOTAzYWFiYTAwMjZlNmViY2M1MTQ4OGY3NmU5NDczODJmZDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHBfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
d2VicnRjc2RwX3VuaXR0ZXN0LmNjCkBAIC0yNSw2ICsyNSw4IEBACiAjaW5jbHVkZSAicnRjX2Jh
c2UvbWVzc2FnZWRpZ2VzdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5o
IgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogI2lmZGVmIFdFQlJUQ19BTkRST0lECiAjaW5j
bHVkZSAicGMvdGVzdC9hbmRyb2lkdGVzdGluaXRpYWxpemVyLmgiCkBAIC0zNCwyNCArMzYsMjYg
QEAKIHVzaW5nIGNyaWNrZXQ6OkF1ZGlvQ29kZWM7CiB1c2luZyBjcmlja2V0OjpBdWRpb0NvbnRl
bnREZXNjcmlwdGlvbjsKIHVzaW5nIGNyaWNrZXQ6OkNhbmRpZGF0ZTsKK3VzaW5nIGNyaWNrZXQ6
OkNvbnRlbnRHcm91cDsKIHVzaW5nIGNyaWNrZXQ6OkNvbnRlbnRJbmZvOwogdXNpbmcgY3JpY2tl
dDo6Q3J5cHRvUGFyYW1zOwotdXNpbmcgY3JpY2tldDo6Q29udGVudEdyb3VwOwogdXNpbmcgY3Jp
Y2tldDo6RGF0YUNvZGVjOwogdXNpbmcgY3JpY2tldDo6RGF0YUNvbnRlbnREZXNjcmlwdGlvbjsK
IHVzaW5nIGNyaWNrZXQ6OklDRV9DQU5ESURBVEVfQ09NUE9ORU5UX1JUQ1A7CiB1c2luZyBjcmlj
a2V0OjpJQ0VfQ0FORElEQVRFX0NPTVBPTkVOVF9SVFA7CiB1c2luZyBjcmlja2V0OjprRmVjU3Ny
Y0dyb3VwU2VtYW50aWNzOwogdXNpbmcgY3JpY2tldDo6TE9DQUxfUE9SVF9UWVBFOwordXNpbmcg
Y3JpY2tldDo6TWVkaWFQcm90b2NvbFR5cGU7CiB1c2luZyBjcmlja2V0OjpSRUxBWV9QT1JUX1RZ
UEU7CiB1c2luZyBjcmlja2V0OjpTZXNzaW9uRGVzY3JpcHRpb247Ci11c2luZyBjcmlja2V0OjpN
ZWRpYVByb3RvY29sVHlwZTsKIHVzaW5nIGNyaWNrZXQ6OlN0cmVhbVBhcmFtczsKIHVzaW5nIGNy
aWNrZXQ6OlNUVU5fUE9SVF9UWVBFOwogdXNpbmcgY3JpY2tldDo6VHJhbnNwb3J0RGVzY3JpcHRp
b247CiB1c2luZyBjcmlja2V0OjpUcmFuc3BvcnRJbmZvOwogdXNpbmcgY3JpY2tldDo6VmlkZW9D
b2RlYzsKIHVzaW5nIGNyaWNrZXQ6OlZpZGVvQ29udGVudERlc2NyaXB0aW9uOwordXNpbmcgOjp0
ZXN0aW5nOjpFbGVtZW50c0FyZTsKK3VzaW5nIDo6dGVzdGluZzo6RmllbGQ7CiB1c2luZyB3ZWJy
dGM6OkljZUNhbmRpZGF0ZUNvbGxlY3Rpb247CiB1c2luZyB3ZWJydGM6OkljZUNhbmRpZGF0ZUlu
dGVyZmFjZTsKIHVzaW5nIHdlYnJ0Yzo6SnNlcEljZUNhbmRpZGF0ZTsKQEAgLTkxNSwxMCArOTE5
LDEwIEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAg
ZGVzY18uQWRkQ29udGVudChrVmlkZW9Db250ZW50TmFtZSwgTWVkaWFQcm90b2NvbFR5cGU6OmtS
dHAsIHZpZGVvX2Rlc2NfKTsKIAogICAgIC8vIFRyYW5zcG9ydEluZm8KLSAgICBFWFBFQ1RfVFJV
RShkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oCi0gICAgICAgIGtBdWRpb0Nv
bnRlbnROYW1lLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZyYWdWb2ljZSwga1B3ZFZvaWNlKSkp
KTsKLSAgICBFWFBFQ1RfVFJVRShkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8o
Ci0gICAgICAgIGtWaWRlb0NvbnRlbnROYW1lLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZyYWdW
aWRlbywga1B3ZFZpZGVvKSkpKTsKKyAgICBkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9y
dEluZm8oCisgICAgICAgIGtBdWRpb0NvbnRlbnROYW1lLCBUcmFuc3BvcnREZXNjcmlwdGlvbihr
VWZyYWdWb2ljZSwga1B3ZFZvaWNlKSkpOworICAgIGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJh
bnNwb3J0SW5mbygKKyAgICAgICAga1ZpZGVvQ29udGVudE5hbWUsIFRyYW5zcG9ydERlc2NyaXB0
aW9uKGtVZnJhZ1ZpZGVvLCBrUHdkVmlkZW8pKSk7CiAKICAgICAvLyB2NCBob3N0CiAgICAgaW50
IHBvcnQgPSAxMjM0OwpAQCAtMTExMiw4ICsxMTE2LDggQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBhdWRpb190cmFja18yLnNzcmNzLnB1c2hfYmFj
ayhrQXVkaW9UcmFjazJTc3JjKTsKICAgICBhdWRpb19kZXNjXzItPkFkZFN0cmVhbShhdWRpb190
cmFja18yKTsKICAgICBkZXNjXy5BZGRDb250ZW50KGtBdWRpb0NvbnRlbnROYW1lMiwgTWVkaWFQ
cm90b2NvbFR5cGU6OmtSdHAsIGF1ZGlvX2Rlc2NfMik7Ci0gICAgRVhQRUNUX1RSVUUoZGVzY18u
QWRkVHJhbnNwb3J0SW5mbyhUcmFuc3BvcnRJbmZvKAotICAgICAgICBrQXVkaW9Db250ZW50TmFt
ZTIsIFRyYW5zcG9ydERlc2NyaXB0aW9uKGtVZnJhZ1ZvaWNlMiwga1B3ZFZvaWNlMikpKSk7Cisg
ICAgZGVzY18uQWRkVHJhbnNwb3J0SW5mbyhUcmFuc3BvcnRJbmZvKAorICAgICAgICBrQXVkaW9D
b250ZW50TmFtZTIsIFRyYW5zcG9ydERlc2NyaXB0aW9uKGtVZnJhZ1ZvaWNlMiwga1B3ZFZvaWNl
MikpKTsKICAgICAvLyBWaWRlbyB0cmFjayAyLCBpbiBzdHJlYW0gMi4KICAgICBWaWRlb0NvbnRl
bnREZXNjcmlwdGlvbiogdmlkZW9fZGVzY18yID0gQ3JlYXRlVmlkZW9Db250ZW50RGVzY3JpcHRp
b24oKTsKICAgICBTdHJlYW1QYXJhbXMgdmlkZW9fdHJhY2tfMjsKQEAgLTExMjMsOCArMTEyNyw4
IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgdmlk
ZW9fdHJhY2tfMi5zc3Jjcy5wdXNoX2JhY2soa1ZpZGVvVHJhY2syU3NyYyk7CiAgICAgdmlkZW9f
ZGVzY18yLT5BZGRTdHJlYW0odmlkZW9fdHJhY2tfMik7CiAgICAgZGVzY18uQWRkQ29udGVudChr
VmlkZW9Db250ZW50TmFtZTIsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCB2aWRlb19kZXNjXzIp
OwotICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbygK
LSAgICAgICAga1ZpZGVvQ29udGVudE5hbWUyLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZyYWdW
aWRlbzIsIGtQd2RWaWRlbzIpKSkpOworICAgIGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNw
b3J0SW5mbygKKyAgICAgICAga1ZpZGVvQ29udGVudE5hbWUyLCBUcmFuc3BvcnREZXNjcmlwdGlv
bihrVWZyYWdWaWRlbzIsIGtQd2RWaWRlbzIpKSk7CiAKICAgICAvLyBWaWRlbyB0cmFjayAzLCBp
biBzdHJlYW0gMi4KICAgICBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiogdmlkZW9fZGVzY18zID0g
Q3JlYXRlVmlkZW9Db250ZW50RGVzY3JpcHRpb24oKTsKQEAgLTExMzUsOCArMTEzOSw4IEBAIGNs
YXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgdmlkZW9fdHJh
Y2tfMy5zc3Jjcy5wdXNoX2JhY2soa1ZpZGVvVHJhY2szU3NyYyk7CiAgICAgdmlkZW9fZGVzY18z
LT5BZGRTdHJlYW0odmlkZW9fdHJhY2tfMyk7CiAgICAgZGVzY18uQWRkQ29udGVudChrVmlkZW9D
b250ZW50TmFtZTMsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCB2aWRlb19kZXNjXzMpOwotICAg
IEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbygKLSAgICAg
ICAga1ZpZGVvQ29udGVudE5hbWUzLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZyYWdWaWRlbzMs
IGtQd2RWaWRlbzMpKSkpOworICAgIGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0SW5m
bygKKyAgICAgICAga1ZpZGVvQ29udGVudE5hbWUzLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZy
YWdWaWRlbzMsIGtQd2RWaWRlbzMpKSk7CiAgICAgZGVzY18uc2V0X21zaWRfc2lnbmFsaW5nKGNy
aWNrZXQ6OmtNc2lkU2lnbmFsaW5nTWVkaWFTZWN0aW9uKTsKIAogICAgIEFTU0VSVF9UUlVFKGpk
ZXNjXy5Jbml0aWFsaXplKGRlc2NfLkNvcHkoKSwgamRlc2NfLnNlc3Npb25faWQoKSwKQEAgLTEx
NzksOCArMTE4Myw4IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAgICAgYXVkaW9fdHJhY2tfMi5zc3Jjcy5wdXNoX2JhY2soa0F1ZGlvVHJhY2syU3NyYyk7
CiAgICAgYXVkaW9fZGVzY18yLT5BZGRTdHJlYW0oYXVkaW9fdHJhY2tfMik7CiAgICAgZGVzY18u
QWRkQ29udGVudChrQXVkaW9Db250ZW50TmFtZTIsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCBh
dWRpb19kZXNjXzIpOwotICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJh
bnNwb3J0SW5mbygKLSAgICAgICAga0F1ZGlvQ29udGVudE5hbWUyLCBUcmFuc3BvcnREZXNjcmlw
dGlvbihrVWZyYWdWb2ljZTIsIGtQd2RWb2ljZTIpKSkpOworICAgIGRlc2NfLkFkZFRyYW5zcG9y
dEluZm8oVHJhbnNwb3J0SW5mbygKKyAgICAgICAga0F1ZGlvQ29udGVudE5hbWUyLCBUcmFuc3Bv
cnREZXNjcmlwdGlvbihrVWZyYWdWb2ljZTIsIGtQd2RWb2ljZTIpKSk7CiAKICAgICAvLyBBdWRp
byB0cmFjayAzIGhhcyBubyBzdHJlYW0gaWRzLgogICAgIEF1ZGlvQ29udGVudERlc2NyaXB0aW9u
KiBhdWRpb19kZXNjXzMgPSBDcmVhdGVBdWRpb0NvbnRlbnREZXNjcmlwdGlvbigpOwpAQCAtMTE5
MSw4ICsxMTk1LDggQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKICAgICBhdWRpb190cmFja18zLnNzcmNzLnB1c2hfYmFjayhrQXVkaW9UcmFjazNTc3JjKTsK
ICAgICBhdWRpb19kZXNjXzMtPkFkZFN0cmVhbShhdWRpb190cmFja18zKTsKICAgICBkZXNjXy5B
ZGRDb250ZW50KGtBdWRpb0NvbnRlbnROYW1lMywgTWVkaWFQcm90b2NvbFR5cGU6OmtSdHAsIGF1
ZGlvX2Rlc2NfMyk7Ci0gICAgRVhQRUNUX1RSVUUoZGVzY18uQWRkVHJhbnNwb3J0SW5mbyhUcmFu
c3BvcnRJbmZvKAotICAgICAgICBrQXVkaW9Db250ZW50TmFtZTMsIFRyYW5zcG9ydERlc2NyaXB0
aW9uKGtVZnJhZ1ZvaWNlMywga1B3ZFZvaWNlMykpKSk7CisgICAgZGVzY18uQWRkVHJhbnNwb3J0
SW5mbyhUcmFuc3BvcnRJbmZvKAorICAgICAgICBrQXVkaW9Db250ZW50TmFtZTMsIFRyYW5zcG9y
dERlc2NyaXB0aW9uKGtVZnJhZ1ZvaWNlMywga1B3ZFZvaWNlMykpKTsKICAgICBkZXNjXy5zZXRf
bXNpZF9zaWduYWxpbmcobXNpZF9zaWduYWxpbmcpOwogICAgIEFTU0VSVF9UUlVFKGpkZXNjXy5J
bml0aWFsaXplKGRlc2NfLkNvcHkoKSwgamRlc2NfLnNlc3Npb25faWQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqZGVzY18uc2Vzc2lvbl92ZXJzaW9uKCkpKTsKQEAgLTE0
NjQsNyArMTQ2OCw3IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjID0KICAgICAgICAgY29uc3RfY2FzdDxT
ZXNzaW9uRGVzY3JpcHRpb24qPihqZGVzYy0+ZGVzY3JpcHRpb24oKSk7CiAgICAgZGVzYy0+UmVt
b3ZlVHJhbnNwb3J0SW5mb0J5TmFtZShjb250ZW50X25hbWUpOwotICAgIEVYUEVDVF9UUlVFKGRl
c2MtPkFkZFRyYW5zcG9ydEluZm8odHJhbnNwb3J0X2luZm8pKTsKKyAgICBkZXNjLT5BZGRUcmFu
c3BvcnRJbmZvKHRyYW5zcG9ydF9pbmZvKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpk
ZXNjXy5udW1iZXJfb2ZfbWVkaWFzZWN0aW9ucygpOyArK2kpIHsKICAgICAgIGNvbnN0IEljZUNh
bmRpZGF0ZUNvbGxlY3Rpb24qIGNjID0gamRlc2NfLmNhbmRpZGF0ZXMoaSk7CiAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IGNjLT5jb3VudCgpOyArK2opIHsKQEAgLTE1MDMsMTYgKzE1MDcs
MTYgQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBk
ZXNjXy5SZW1vdmVUcmFuc3BvcnRJbmZvQnlOYW1lKGtBdWRpb0NvbnRlbnROYW1lKTsKICAgICBk
ZXNjXy5SZW1vdmVUcmFuc3BvcnRJbmZvQnlOYW1lKGtWaWRlb0NvbnRlbnROYW1lKTsKICAgICBy
dGM6OlNTTEZpbmdlcnByaW50IGZpbmdlcnByaW50KHJ0Yzo6RElHRVNUX1NIQV8xLCBrSWRlbnRp
dHlEaWdlc3QpOwotICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNw
b3J0SW5mbygKKyAgICBkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oCiAgICAg
ICAgIGtBdWRpb0NvbnRlbnROYW1lLAogICAgICAgICBUcmFuc3BvcnREZXNjcmlwdGlvbihzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSwga1VmcmFnVm9pY2UsIGtQd2RWb2ljZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6SUNFTU9ERV9GVUxMLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmlja2V0OjpDT05ORUNUSU9OUk9MRV9OT05FLCAmZmluZ2VycHJp
bnQpKSkpOwotICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0
SW5mbygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6Q09OTkVDVElPTlJP
TEVfTk9ORSwgJmZpbmdlcnByaW50KSkpOworICAgIGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJh
bnNwb3J0SW5mbygKICAgICAgICAga1ZpZGVvQ29udGVudE5hbWUsCiAgICAgICAgIFRyYW5zcG9y
dERlc2NyaXB0aW9uKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpLCBrVWZyYWdWaWRlbywga1B3
ZFZpZGVvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpJQ0VNT0RFX0ZV
TEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkNPTk5FQ1RJT05ST0xF
X05PTkUsICZmaW5nZXJwcmludCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
aWNrZXQ6OkNPTk5FQ1RJT05ST0xFX05PTkUsICZmaW5nZXJwcmludCkpKTsKICAgfQogCiAgIHZv
aWQgQWRkRXh0bWFwKGJvb2wgZW5jcnlwdGVkKSB7CkBAIC0xNjI5LDggKzE2MzMsOCBAQCBjbGFz
cyBXZWJSdGNTZHBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIGRhdGFfZGVzY18t
PkFkZENvZGVjKGNvZGVjKTsKICAgICBkZXNjXy5BZGRDb250ZW50KGtEYXRhQ29udGVudE5hbWUs
IE1lZGlhUHJvdG9jb2xUeXBlOjprU2N0cCwKICAgICAgICAgICAgICAgICAgICAgIGRhdGEucmVs
ZWFzZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9y
dEluZm8oCi0gICAgICAgIGtEYXRhQ29udGVudE5hbWUsIFRyYW5zcG9ydERlc2NyaXB0aW9uKGtV
ZnJhZ0RhdGEsIGtQd2REYXRhKSkpKTsKKyAgICBkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5z
cG9ydEluZm8oCisgICAgICAgIGtEYXRhQ29udGVudE5hbWUsIFRyYW5zcG9ydERlc2NyaXB0aW9u
KGtVZnJhZ0RhdGEsIGtQd2REYXRhKSkpOwogICB9CiAKICAgdm9pZCBBZGRSdHBEYXRhQ2hhbm5l
bCgpIHsKQEAgLTE2NDksOCArMTY1Myw4IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAgICAgICAgICAiaW5saW5lOkZ2TGN2VTJQM1pX
bVF4Z1BBZ2NEdTdabDl2ZnRZRWxGT2pFemhXczUiLCAiIikpOwogICAgIGRhdGFfZGVzY18tPnNl
dF9wcm90b2NvbChjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKTsKICAgICBkZXNjXy5BZGRD
b250ZW50KGtEYXRhQ29udGVudE5hbWUsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCBkYXRhLnJl
bGVhc2UoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVzY18uQWRkVHJhbnNwb3J0SW5mbyhUcmFuc3Bv
cnRJbmZvKAotICAgICAgICBrRGF0YUNvbnRlbnROYW1lLCBUcmFuc3BvcnREZXNjcmlwdGlvbihr
VWZyYWdEYXRhLCBrUHdkRGF0YSkpKSk7CisgICAgZGVzY18uQWRkVHJhbnNwb3J0SW5mbyhUcmFu
c3BvcnRJbmZvKAorICAgICAgICBrRGF0YUNvbnRlbnROYW1lLCBUcmFuc3BvcnREZXNjcmlwdGlv
bihrVWZyYWdEYXRhLCBrUHdkRGF0YSkpKTsKICAgfQogCiAgIGJvb2wgVGVzdERlc2VyaWFsaXpl
RGlyZWN0aW9uKFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbikgewpAQCAtMjMwMCw5
ICsyMzA0LDcgQEAgVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2VyaWFsaXplU2Vzc2lvbkRlc2Ny
aXB0aW9uV2l0aG91dFJ0cG1hcCkgewogICBKc2VwU2Vzc2lvbkRlc2NyaXB0aW9uIGpkZXNjKGtE
dW1teVR5cGUpOwogICBFWFBFQ1RfVFJVRShTZHBEZXNlcmlhbGl6ZShrU2RwTm9SdHBtYXBTdHJp
bmcsICZqZGVzYykpOwogICBjcmlja2V0OjpBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYXVkaW8g
PQotICAgICAgamRlc2MuZGVzY3JpcHRpb24oKQotICAgICAgICAgIC0+R2V0Q29udGVudERlc2Ny
aXB0aW9uQnlOYW1lKGNyaWNrZXQ6OkNOX0FVRElPKQotICAgICAgICAgIC0+YXNfYXVkaW8oKTsK
KyAgICAgIGNyaWNrZXQ6OkdldEZpcnN0QXVkaW9Db250ZW50RGVzY3JpcHRpb24oamRlc2MuZGVz
Y3JpcHRpb24oKSk7CiAgIEF1ZGlvQ29kZWNzIHJlZl9jb2RlY3M7CiAgIC8vIFRoZSBjb2RlY3Mg
aW4gdGhlIEF1ZGlvQ29udGVudERlc2NyaXB0aW9uIHNob3VsZCBiZSBpbiB0aGUgc2FtZSBvcmRl
ciBhcwogICAvLyB0aGUgcGF5bG9hZCB0eXBlcyAoPGZtdD5zKSBvbiB0aGUgbT0gbGluZS4KQEAg
LTIzMjUsOSArMjMyNyw3IEBAIFRFU1RfRihXZWJSdGNTZHBUZXN0LCBEZXNlcmlhbGl6ZVNlc3Np
b25EZXNjcmlwdGlvbldpdGhvdXRSdHBtYXBCdXRXaXRoRm10cCkgewogICBKc2VwU2Vzc2lvbkRl
c2NyaXB0aW9uIGpkZXNjKGtEdW1teVR5cGUpOwogICBFWFBFQ1RfVFJVRShTZHBEZXNlcmlhbGl6
ZShrU2RwTm9SdHBtYXBTdHJpbmcsICZqZGVzYykpOwogICBjcmlja2V0OjpBdWRpb0NvbnRlbnRE
ZXNjcmlwdGlvbiogYXVkaW8gPQotICAgICAgamRlc2MuZGVzY3JpcHRpb24oKQotICAgICAgICAg
IC0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKGNyaWNrZXQ6OkNOX0FVRElPKQotICAgICAg
ICAgIC0+YXNfYXVkaW8oKTsKKyAgICAgIGNyaWNrZXQ6OkdldEZpcnN0QXVkaW9Db250ZW50RGVz
Y3JpcHRpb24oamRlc2MuZGVzY3JpcHRpb24oKSk7CiAKICAgY3JpY2tldDo6QXVkaW9Db2RlYyBn
NzI5ID0gYXVkaW8tPmNvZGVjcygpWzBdOwogICBFWFBFQ1RfRVEoIkc3MjkiLCBnNzI5Lm5hbWUp
OwpAQCAtMjkyNCwxNSArMjkyNCwxMSBAQCBURVNUX0YoV2ViUnRjU2RwVGVzdCwgRGVzZXJpYWxp
emVTZHBXaXRoQ29uZmVyZW5jZUZsYWcpIHsKIAogICAvLyBWZXJpZnkKICAgY3JpY2tldDo6QXVk
aW9Db250ZW50RGVzY3JpcHRpb24qIGF1ZGlvID0KLSAgICAgIGpkZXNjLmRlc2NyaXB0aW9uKCkK
LSAgICAgICAgICAtPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZShjcmlja2V0OjpDTl9BVURJ
TykKLSAgICAgICAgICAtPmFzX2F1ZGlvKCk7CisgICAgICBjcmlja2V0OjpHZXRGaXJzdEF1ZGlv
Q29udGVudERlc2NyaXB0aW9uKGpkZXNjLmRlc2NyaXB0aW9uKCkpOwogICBFWFBFQ1RfVFJVRShh
dWRpby0+Y29uZmVyZW5jZV9tb2RlKCkpOwogCiAgIGNyaWNrZXQ6OlZpZGVvQ29udGVudERlc2Ny
aXB0aW9uKiB2aWRlbyA9Ci0gICAgICBqZGVzYy5kZXNjcmlwdGlvbigpCi0gICAgICAgICAgLT5H
ZXRDb250ZW50RGVzY3JpcHRpb25CeU5hbWUoY3JpY2tldDo6Q05fVklERU8pCi0gICAgICAgICAg
LT5hc192aWRlbygpOworICAgICAgY3JpY2tldDo6R2V0Rmlyc3RWaWRlb0NvbnRlbnREZXNjcmlw
dGlvbihqZGVzYy5kZXNjcmlwdGlvbigpKTsKICAgRVhQRUNUX1RSVUUodmlkZW8tPmNvbmZlcmVu
Y2VfbW9kZSgpKTsKIH0KIApAQCAtMjk0NywxNSArMjk0MywxMSBAQCBURVNUX0YoV2ViUnRjU2Rw
VGVzdCwgU2VyaWFsaXplU2RwV2l0aENvbmZlcmVuY2VGbGFnKSB7CiAKICAgLy8gVmVyaWZ5Lgog
ICBjcmlja2V0OjpBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYXVkaW8gPQotICAgICAgamRlc2Mu
ZGVzY3JpcHRpb24oKQotICAgICAgICAgIC0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKGNy
aWNrZXQ6OkNOX0FVRElPKQotICAgICAgICAgIC0+YXNfYXVkaW8oKTsKKyAgICAgIGNyaWNrZXQ6
OkdldEZpcnN0QXVkaW9Db250ZW50RGVzY3JpcHRpb24oamRlc2MuZGVzY3JpcHRpb24oKSk7CiAg
IEVYUEVDVF9UUlVFKGF1ZGlvLT5jb25mZXJlbmNlX21vZGUoKSk7CiAKICAgY3JpY2tldDo6Vmlk
ZW9Db250ZW50RGVzY3JpcHRpb24qIHZpZGVvID0KLSAgICAgIGpkZXNjLmRlc2NyaXB0aW9uKCkK
LSAgICAgICAgICAtPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZShjcmlja2V0OjpDTl9WSURF
TykKLSAgICAgICAgICAtPmFzX3ZpZGVvKCk7CisgICAgICBjcmlja2V0OjpHZXRGaXJzdFZpZGVv
Q29udGVudERlc2NyaXB0aW9uKGpkZXNjLmRlc2NyaXB0aW9uKCkpOwogICBFWFBFQ1RfVFJVRSh2
aWRlby0+Y29uZmVyZW5jZV9tb2RlKCkpOwogfQogCkBAIC0zOTA5LDMgKzM5MDEsMTkgQEAgVEVT
VF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2VyaWFsaXplRW1wdHlTZXNzaW9uTmFtZSkgewogICBSZXBs
YWNlKCJzPS1cclxuIiwgInM9IFxyXG4iLCAmc2RwKTsKICAgRVhQRUNUX1RSVUUoU2RwRGVzZXJp
YWxpemUoc2RwLCAmanNlcF9kZXNjKSk7CiB9CisKKy8vIFRlc3QgdGhhdCB0aGUgY29udGVudCBu
YW1lIGlzIGVtcHR5IGlmIHRoZSBtZWRpYSBzZWN0aW9uIGRvZXMgbm90IGhhdmUgYW4KKy8vIGE9
bWlkIGxpbmUuCitURVNUX0YoV2ViUnRjU2RwVGVzdCwgUGFyc2VOb01pZCkgeworICBzdGQ6OnN0
cmluZyBzZHAgPSBrU2RwU3RyaW5nOworICBSZXBsYWNlKCJhPW1pZDphdWRpb19jb250ZW50X25h
bWVcclxuIiwgIiIsICZzZHApOworICBSZXBsYWNlKCJhPW1pZDp2aWRlb19jb250ZW50X25hbWVc
clxuIiwgIiIsICZzZHApOworCisgIEpzZXBTZXNzaW9uRGVzY3JpcHRpb24gb3V0cHV0KGtEdW1t
eVR5cGUpOworICBTZHBQYXJzZUVycm9yIGVycm9yOworICBBU1NFUlRfVFJVRSh3ZWJydGM6OlNk
cERlc2VyaWFsaXplKHNkcCwgJm91dHB1dCwgJmVycm9yKSk7CisKKyAgRVhQRUNUX1RIQVQob3V0
cHV0LmRlc2NyaXB0aW9uKCktPmNvbnRlbnRzKCksCisgICAgICAgICAgICAgIEVsZW1lbnRzQXJl
KEZpZWxkKCJuYW1lIiwgJmNyaWNrZXQ6OkNvbnRlbnRJbmZvOjpuYW1lLCAiIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZpZWxkKCJuYW1lIiwgJmNyaWNrZXQ6OkNvbnRlbnRJbmZvOjpu
YW1lLCAiIikpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRl
L21ldHJpY3MuaAppbmRleCBmMDBlY2YyNjIyYWVmZDgxNzcxNzA4NmI2M2FiNGViNGQ5YjMzOTI5
Li5jYmVmYTM3YmQxYjVjZGVkNzY4OTAxNmU1M2MxMTFlNTdhYjZjNmY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9tZXRyaWNzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oCkBAIC0xMzMsNyArMTMz
LDcgQEAKIC8vIFRPRE8ocWluZ3NpKTogUmVmYWN0b3IgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24gZ2l2ZW4gYnkgUnRjSGlzdG9ncmFtLAogLy8gd2hpY2ggaXMgYWxyZWFkeSBzcGFyc2UsIGFu
ZCByZW1vdmUgdGhlIGJvdW5kYXJ5IGFyZ3VtZW50IGZyb20gdGhlIG1hY3JvLgogI2RlZmluZSBS
VENfSElTVE9HUkFNX0VOVU1FUkFUSU9OX1NQQVJTRShuYW1lLCBzYW1wbGUsIGJvdW5kYXJ5KSBc
Ci0gIFJUQ19ISVNUT0dSQU1fQ09NTU9OX0JMT0NLKCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgUlRDX0hJU1RPR1JBTV9DT01NT05fQkxPQ0tfU0xPVyggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgbmFtZSwgc2FtcGxlLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICB3ZWJydGM6Om1ldHJpY3M6
OlNwYXJzZUhpc3RvZ3JhbUZhY3RvcnlHZXRFbnVtZXJhdGlvbihuYW1lLCBib3VuZGFyeSkpCiAK
QEAgLTE0OCw3ICsxNDgsNyBAQAogLy8gSGlzdG9ncmFtIGZvciBlbnVtZXJhdG9ycyAoZXZlbmx5
IHNwYWNlZCBidWNrZXRzKS4KIC8vIHxib3VuZGFyeXwgc2hvdWxkIGJlIGFib3ZlIHRoZSBtYXgg
ZW51bWVyYXRvciBzYW1wbGUuCiAjZGVmaW5lIFJUQ19ISVNUT0dSQU1fRU5VTUVSQVRJT04obmFt
ZSwgc2FtcGxlLCBib3VuZGFyeSkgXAotICBSVENfSElTVE9HUkFNX0NPTU1PTl9CTE9DSyggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgUlRDX0hJU1RPR1JBTV9DT01NT05fQkxPQ0tf
U0xPVyggICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICBuYW1lLCBzYW1wbGUsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgd2VicnRjOjptZXRyaWNz
OjpIaXN0b2dyYW1GYWN0b3J5R2V0RW51bWVyYXRpb24obmFtZSwgYm91bmRhcnkpKQogCkBAIC0x
NzUsNyArMTc1LDYgQEAKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgfSB3aGlsZSAoMCkKIAotLy8g
RGVwcmVjYXRlZC4KIC8vIFRoZSBoaXN0b2dyYW0gaXMgY29uc3RydWN0ZWQvZm91bmQgZm9yIGVh
Y2ggY2FsbC4KIC8vIE1heSBiZSB1c2VkIGZvciBoaXN0b2dyYW1zIHdpdGggaW5mcmVxdWVudCB1
cGRhdGVzLmAKICNkZWZpbmUgUlRDX0hJU1RPR1JBTV9DT01NT05fQkxPQ0tfU0xPVyhuYW1lLCBz
YW1wbGUsIGZhY3RvcnlfZ2V0X2ludm9jYXRpb24pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL0JVSUxELmduIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KaW5kZXggYjUz
ZDczMGFlMDdlMDZmODAwNGUzNTUzNmNhZTcyMmExYTVhNmVjNi4uMjhmYjY5MGNlYzVlYzJmNjdh
NzgwMzI2NDE2YTBhZWQ0Zjc4ZTY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KQEAgLTE4MSw2ICsxODEs
NyBAQCBydGNfc291cmNlX3NldCgidmlkZW9fc3RyZWFtX2VuY29kZXJfaW1wbCIpIHsKICAgICAi
Li4vY29tbW9uX3ZpZGVvOmNvbW1vbl92aWRlbyIsCiAgICAgIi4uL21vZHVsZXMvdmlkZW9fY29k
aW5nIiwKICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxpdHki
LAorICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp3ZWJydGNfdnA5X2hlbHBlcnMiLAogICAg
ICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpjcml0aWNhbHNlY3Rpb24i
LAogICAgICIuLi9ydGNfYmFzZTpsb2dnaW5nIiwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359799</attachid>
            <date>2019-01-22 16:12:23 -0800</date>
            <delta_ts>2019-01-22 20:43:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193693-20190122161222.patch</filename>
            <type>text/plain</type>
            <size>65548</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCA5OGNiNjIxMmUxODc2NTZmN2I0NmIxNzZjZTYzZjU3OTZmMDgyMDc5Li5mY2Mw
YjY1ZmYzYmJiOGVhZTRiZDA2ZjUxNWMzMDNkNDBlOTlkNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOS0wMS0yMiAgWW91ZW5uIEZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVzeW5jIGxpYndlYnJ0YyB3aXRo
IGxhdGVzdCBNNzIgYnJhbmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTM2OTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVcGRhdGUgbGlid2VicnRjIHVwIHRvIGxhdGVzdCBNNzIgYnJhbmNoIHRvIGZp
eCBzb21lIGlkZW50aWZpZWQgaXNzdWVzOgorICAgICAgICAtIEJhZCBiYW5kd2lkdGggZXN0aW1h
dGlvbiBpbiBjYXNlIG9mIG11bHRpcGxlIHRyYW5zY2VpdmVycworICAgICAgICAtIG1pZCBoYW5k
bGluZyBmb3IgbGVnYWN5IGVuZHBvaW50cworICAgICAgICAtIG1zaWQgaGFuZGxpbmcgZm9yIHVw
ZGF0aW5nIG1lZGlhc3RyZWFtcyBhY2NvcmRpbmdseS4KKworICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9id2Uu
Y2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxl
ci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvbW9k
dWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJv
bC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfdW5pdHRlc3QuY2M6CisgICAgICAg
ICogU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9zZW5kX3NpZGVf
Y29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0LmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJy
dGMvcGMvanNlcHNlc3Npb25kZXNjcmlwdGlvbl91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3Vy
Y2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3Bj
L21lZGlhc2Vzc2lvbl91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3Bl
ZXJjb25uZWN0aW9uLmNjOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b24uaDoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2pzZXBfdW5p
dHRlc3QuY2M6CisgICAgICAgICogU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9tZWRp
YV91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9u
X3J0cF91bml0dGVzdC5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNj
cmlwdGlvbi5jYzoKKyAgICAgICAgKiBTb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlv
bi5oOgorICAgICAgICAqIFNvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwLmNjOgorICAgICAgICAq
IFNvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwX3VuaXR0ZXN0LmNjOgorICAgICAgICAqIFNvdXJj
ZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oOgorICAgICAgICAqIFNv
dXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ246CisKIDIwMTktMDEtMTcgIFRydWl0dCBTYXZlbGwg
IDx0c2F2ZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MjQwMTI0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9kZWxheV9iYXNlZF9i
d2UuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVz
L2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5jYwppbmRleCA0
ODk0Yzk4NjNiNjgzNjExM2M1ZTEzYmJhYzM5ZDQ4OTJjZTcwOWU5Li5hNzZhZGIwMWM2OTk3ZWNh
NmRiMDBmN2IzMzA2YjYwNDA0NWU5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29n
X2NjL2RlbGF5X2Jhc2VkX2J3ZS5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5
X2Jhc2VkX2J3ZS5jYwpAQCAtNDYsOCArNDYsNiBAQCBjb25zdGV4cHIgc2l6ZV90IGtEZWZhdWx0
VHJlbmRsaW5lV2luZG93U2l6ZSA9IDIwOwogY29uc3RleHByIGRvdWJsZSBrRGVmYXVsdFRyZW5k
bGluZVNtb290aGluZ0NvZWZmID0gMC45OwogY29uc3RleHByIGRvdWJsZSBrRGVmYXVsdFRyZW5k
bGluZVRocmVzaG9sZEdhaW4gPSA0LjA7CiAKLWNvbnN0ZXhwciBpbnQga01heENvbnNlY3V0aXZl
RmFpbGVkTG9va3VwcyA9IDU7Ci0KIGNvbnN0IGNoYXIga0J3ZVdpbmRvd1NpemVJblBhY2tldHNF
eHBlcmltZW50W10gPQogICAgICJXZWJSVEMtQndlV2luZG93U2l6ZUluUGFja2V0cyI7CiAKQEAg
LTk0LDcgKzkyLDYgQEAgRGVsYXlCYXNlZEJ3ZTo6RGVsYXlCYXNlZEJ3ZShSdGNFdmVudExvZyog
ZXZlbnRfbG9nKQogICAgICAgICAgICAgICA6IGtEZWZhdWx0VHJlbmRsaW5lV2luZG93U2l6ZSks
CiAgICAgICB0cmVuZGxpbmVfc21vb3RoaW5nX2NvZWZmXyhrRGVmYXVsdFRyZW5kbGluZVNtb290
aGluZ0NvZWZmKSwKICAgICAgIHRyZW5kbGluZV90aHJlc2hvbGRfZ2Fpbl8oa0RlZmF1bHRUcmVu
ZGxpbmVUaHJlc2hvbGRHYWluKSwKLSAgICAgIGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJhY2tz
XygwKSwKICAgICAgIHByZXZfYml0cmF0ZV8oRGF0YVJhdGU6Olplcm8oKSksCiAgICAgICBwcmV2
X3N0YXRlXyhCYW5kd2lkdGhVc2FnZTo6a0J3Tm9ybWFsKSB7CiAgIFJUQ19MT0coTFNfSU5GTykK
QEAgLTE0Nyw0MyArMTQ0LDEyIEBAIERlbGF5QmFzZWRCd2U6OlJlc3VsdCBEZWxheUJhc2VkQndl
OjpJbmNvbWluZ1BhY2tldEZlZWRiYWNrVmVjdG9yKAogICB9CiAKICAgaWYgKGRlbGF5ZWRfZmVl
ZGJhY2spIHsKLSAgICBUaW1lc3RhbXAgYXJyaXZhbF90aW1lID0gVGltZXN0YW1wOjpQbHVzSW5m
aW5pdHkoKTsKLSAgICBpZiAocGFja2V0X2ZlZWRiYWNrX3ZlY3Rvci5iYWNrKCkuYXJyaXZhbF90
aW1lX21zID4gMCkKLSAgICAgIGFycml2YWxfdGltZSA9Ci0gICAgICAgICAgVGltZXN0YW1wOjpt
cyhwYWNrZXRfZmVlZGJhY2tfdmVjdG9yLmJhY2soKS5hcnJpdmFsX3RpbWVfbXMpOwotICAgIHJl
dHVybiBPbkRlbGF5ZWRGZWVkYmFjayhhcnJpdmFsX3RpbWUpOwotCi0gIH0gZWxzZSB7Ci0gICAg
Y29uc2VjdXRpdmVfZGVsYXllZF9mZWVkYmFja3NfID0gMDsKLSAgICByZXR1cm4gTWF5YmVVcGRh
dGVFc3RpbWF0ZShhY2tlZF9iaXRyYXRlLCBwcm9iZV9iaXRyYXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlY292ZXJlZF9mcm9tX292ZXJ1c2UsIGF0X3RpbWUpOwotICB9Ci0g
IHJldHVybiBSZXN1bHQoKTsKLX0KLQotRGVsYXlCYXNlZEJ3ZTo6UmVzdWx0IERlbGF5QmFzZWRC
d2U6Ok9uRGVsYXllZEZlZWRiYWNrKFRpbWVzdGFtcCByZWNlaXZlX3RpbWUpIHsKLSAgKytjb25z
ZWN1dGl2ZV9kZWxheWVkX2ZlZWRiYWNrc187Ci0gIGlmIChjb25zZWN1dGl2ZV9kZWxheWVkX2Zl
ZWRiYWNrc18gPj0ga01heENvbnNlY3V0aXZlRmFpbGVkTG9va3VwcykgewotICAgIGNvbnNlY3V0
aXZlX2RlbGF5ZWRfZmVlZGJhY2tzXyA9IDA7Ci0gICAgcmV0dXJuIE9uTG9uZ0ZlZWRiYWNrRGVs
YXkocmVjZWl2ZV90aW1lKTsKKyAgICAvLyBUT0RPKGJ1Z3Mud2VicnRjLm9yZy8xMDEyNSk6IERl
c2lnbiBhIGJldHRlciBtZWNoYW5pc20gdG8gc2FmZS1ndWFyZAorICAgIC8vIGFnYWluc3QgYnVp
bGRpbmcgdmVyeSBsYXJnZSBuZXR3b3JrIHF1ZXVlcy4KKyAgICByZXR1cm4gUmVzdWx0KCk7CiAg
IH0KLSAgcmV0dXJuIFJlc3VsdCgpOwotfQotCi1EZWxheUJhc2VkQndlOjpSZXN1bHQgRGVsYXlC
YXNlZEJ3ZTo6T25Mb25nRmVlZGJhY2tEZWxheSgKLSAgICBUaW1lc3RhbXAgYXJyaXZhbF90aW1l
KSB7Ci0gIC8vIEVzdGltYXRlIHNob3VsZCBhbHdheXMgYmUgdmFsaWQgc2luY2UgYSBzdGFydCBi
aXRyYXRlIGFsd2F5cyBpcyBzZXQgaW4gdGhlCi0gIC8vIENhbGwgY29uc3RydWN0b3IuIEFuIGFs
dGVybmF0aXZlIHdvdWxkIGJlIHRvIHJldHVybiBhbiBlbXB0eSBSZXN1bHQgaGVyZSwKLSAgLy8g
b3IgdG8gZXN0aW1hdGUgdGhlIHRocm91Z2hwdXQgYmFzZWQgb24gdGhlIGZlZWRiYWNrIHdlIHJl
Y2VpdmVkLgotICBSVENfRENIRUNLKHJhdGVfY29udHJvbF8uVmFsaWRFc3RpbWF0ZSgpKTsKLSAg
cmF0ZV9jb250cm9sXy5TZXRFc3RpbWF0ZShyYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCkg
LyAyLCBhcnJpdmFsX3RpbWUpOwotICBSZXN1bHQgcmVzdWx0OwotICByZXN1bHQudXBkYXRlZCA9
IHRydWU7Ci0gIHJlc3VsdC5wcm9iZSA9IGZhbHNlOwotICByZXN1bHQudGFyZ2V0X2JpdHJhdGUg
PSByYXRlX2NvbnRyb2xfLkxhdGVzdEVzdGltYXRlKCk7Ci0gIFJUQ19MT0coTFNfV0FSTklORykg
PDwgIkxvbmcgZmVlZGJhY2sgZGVsYXkgZGV0ZWN0ZWQsIHJlZHVjaW5nIEJXRSB0byAiCi0gICAg
ICAgICAgICAgICAgICAgICAgPDwgVG9TdHJpbmcocmVzdWx0LnRhcmdldF9iaXRyYXRlKTsKLSAg
cmV0dXJuIHJlc3VsdDsKKyAgcmV0dXJuIE1heWJlVXBkYXRlRXN0aW1hdGUoYWNrZWRfYml0cmF0
ZSwgcHJvYmVfYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcmVk
X2Zyb21fb3ZlcnVzZSwgYXRfdGltZSk7CiB9CiAKIHZvaWQgRGVsYXlCYXNlZEJ3ZTo6SW5jb21p
bmdQYWNrZXRGZWVkYmFjaygKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZGVs
YXlfYmFzZWRfYndlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2RlbGF5X2Jhc2VkX2J3ZS5o
CmluZGV4IDYxNmM1YjA4OTZiZGYyZmUwMzQ5MGI3NDhlYTBjZTM0MTllOGRhYzYuLmVhZDYwZjMw
MTJhMzk5YjY3NGRlYTI3YzljMjIxMDMyMjE1MzNiMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9s
bGVyL2dvb2dfY2MvZGVsYXlfYmFzZWRfYndlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19j
Yy9kZWxheV9iYXNlZF9id2UuaApAQCAtNDksNyArNDksNiBAQCBjbGFzcyBEZWxheUJhc2VkQndl
IHsKICAgICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBhY2tlZF9iaXRyYXRlLAogICAgICAg
YWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IHByb2JlX2JpdHJhdGUsCiAgICAgICBUaW1lc3RhbXAg
YXRfdGltZSk7Ci0gIFJlc3VsdCBPbkRlbGF5ZWRGZWVkYmFjayhUaW1lc3RhbXAgcmVjZWl2ZV90
aW1lKTsKICAgdm9pZCBPblJ0dFVwZGF0ZShUaW1lRGVsdGEgYXZnX3J0dCk7CiAgIGJvb2wgTGF0
ZXN0RXN0aW1hdGUoc3RkOjp2ZWN0b3I8dWludDMyX3Q+KiBzc3JjcywgRGF0YVJhdGUqIGJpdHJh
dGUpIGNvbnN0OwogICB2b2lkIFNldFN0YXJ0Qml0cmF0ZShEYXRhUmF0ZSBzdGFydF9iaXRyYXRl
KTsKQEAgLTYwLDcgKzU5LDYgQEAgY2xhc3MgRGVsYXlCYXNlZEJ3ZSB7CiAgIGZyaWVuZCBjbGFz
cyBHb29nQ2NTdGF0ZVByaW50ZXI7CiAgIHZvaWQgSW5jb21pbmdQYWNrZXRGZWVkYmFjayhjb25z
dCBQYWNrZXRGZWVkYmFjayYgcGFja2V0X2ZlZWRiYWNrLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGltZXN0YW1wIGF0X3RpbWUpOwotICBSZXN1bHQgT25Mb25nRmVlZGJhY2tEZWxh
eShUaW1lc3RhbXAgYXJyaXZhbF90aW1lKTsKICAgUmVzdWx0IE1heWJlVXBkYXRlRXN0aW1hdGUo
YWJzbDo6b3B0aW9uYWw8RGF0YVJhdGU+IGFja2VkX2JpdHJhdGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic2w6Om9wdGlvbmFsPERhdGFSYXRlPiBwcm9iZV9iaXRyYXRlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlcXVlc3RfcHJvYmUsCkBAIC04MSw3ICs3
OSw2IEBAIGNsYXNzIERlbGF5QmFzZWRCd2UgewogICBzaXplX3QgdHJlbmRsaW5lX3dpbmRvd19z
aXplXzsKICAgZG91YmxlIHRyZW5kbGluZV9zbW9vdGhpbmdfY29lZmZfOwogICBkb3VibGUgdHJl
bmRsaW5lX3RocmVzaG9sZF9nYWluXzsKLSAgaW50IGNvbnNlY3V0aXZlX2RlbGF5ZWRfZmVlZGJh
Y2tzXzsKICAgRGF0YVJhdGUgcHJldl9iaXRyYXRlXzsKICAgQmFuZHdpZHRoVXNhZ2UgcHJldl9z
dGF0ZV87CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3
b3JrX2NvbnRyb2wuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19j
b250cm9sLmNjCmluZGV4IDQzNzY5NTNiN2NjMWNmNDkzNWMyMmFiMmE4N2RlOTBlZmMwZTllMzYu
Ljk4MmRkMDVkNDdjMDM5MjMzNDQwZTFkNmU4NDkyODVlZmVlMmY1MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2wuY2MKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9u
X2NvbnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbC5jYwpAQCAtMzk0LDE1
ICszOTQsOSBAQCBOZXR3b3JrQ29udHJvbFVwZGF0ZSBHb29nQ2NOZXR3b3JrQ29udHJvbGxlcjo6
T25UcmFuc3BvcnRMb3NzUmVwb3J0KAogTmV0d29ya0NvbnRyb2xVcGRhdGUgR29vZ0NjTmV0d29y
a0NvbnRyb2xsZXI6Ok9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKAogICAgIFRyYW5zcG9ydFBh
Y2tldHNGZWVkYmFjayByZXBvcnQpIHsKICAgaWYgKHJlcG9ydC5wYWNrZXRfZmVlZGJhY2tzLmVt
cHR5KCkpIHsKLSAgICBEZWxheUJhc2VkQndlOjpSZXN1bHQgcmVzdWx0ID0gZGVsYXlfYmFzZWRf
YndlXy0+T25EZWxheWVkRmVlZGJhY2soCi0gICAgICAgIHJlcG9ydC5zZW5kbGVzc19hcnJpdmFs
X3RpbWVzLmJhY2soKSk7Ci0gICAgTmV0d29ya0NvbnRyb2xVcGRhdGUgdXBkYXRlOwotICAgIGlm
IChyZXN1bHQudXBkYXRlZCkgewotICAgICAgYmFuZHdpZHRoX2VzdGltYXRpb25fLT5VcGRhdGVE
ZWxheUJhc2VkRXN0aW1hdGUocmVwb3J0LmZlZWRiYWNrX3RpbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQudGFyZ2V0X2JpdHJh
dGUpOwotICAgICAgTWF5YmVUcmlnZ2VyT25OZXR3b3JrQ2hhbmdlZCgmdXBkYXRlLCByZXBvcnQu
ZmVlZGJhY2tfdGltZSk7Ci0gICAgfQotICAgIHJldHVybiB1cGRhdGU7CisgICAgLy8gVE9ETyhi
dWdzLndlYnJ0Yy5vcmcvMTAxMjUpOiBEZXNpZ24gYSBiZXR0ZXIgbWVjaGFuaXNtIHRvIHNhZmUt
Z3VhcmQKKyAgICAvLyBhZ2FpbnN0IGJ1aWxkaW5nIHZlcnkgbGFyZ2UgbmV0d29yayBxdWV1ZXMu
CisgICAgcmV0dXJuIE5ldHdvcmtDb250cm9sVXBkYXRlKCk7CiAgIH0KIAogICBpZiAoY29uZ2Vz
dGlvbl93aW5kb3dfcHVzaGJhY2tfY29udHJvbGxlcl8pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfdW5pdHRlc3QuY2MgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25f
Y29udHJvbGxlci9nb29nX2NjL2dvb2dfY2NfbmV0d29ya19jb250cm9sX3VuaXR0ZXN0LmNjCmlu
ZGV4IGZlY2QxYjMyZDQ2NGJjYWIwNGFhZjM3YWNiZjBlNDliNDBhMTNhYmMuLmVlMmE2YzIyYTdi
NmIyYTlmMDBhMzAzNTZhNDk5ZWZkOGFkMTNjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy
L2dvb2dfY2MvZ29vZ19jY19uZXR3b3JrX2NvbnRyb2xfdW5pdHRlc3QuY2MKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0aW9uX2Nv
bnRyb2xsZXIvZ29vZ19jYy9nb29nX2NjX25ldHdvcmtfY29udHJvbF91bml0dGVzdC5jYwpAQCAt
MTkzLDc0ICsxOTMsNiBAQCBURVNUX0YoR29vZ0NjTmV0d29ya0NvbnRyb2xsZXJUZXN0LCBQcm9i
ZU9uUm91dGVDaGFuZ2UpIHsKICAgdXBkYXRlID0gY29udHJvbGxlcl8tPk9uUHJvY2Vzc0ludGVy
dmFsKERlZmF1bHRJbnRlcnZhbCgpKTsKIH0KIAotLy8gRXN0aW1hdGVkIGJpdHJhdGUgcmVkdWNl
ZCB3aGVuIHRoZSBmZWVkYmFja3MgYXJyaXZlIHdpdGggc3VjaCBhIGxvbmcgZGVsYXksCi0vLyB0
aGF0IHRoZSBzZW5kLXRpbWUtaGlzdG9yeSBubyBsb25nZXIgaG9sZHMgdGhlIGZlZWRiYWNrZWQg
cGFja2V0cy4KLVRFU1RfRihHb29nQ2NOZXR3b3JrQ29udHJvbGxlclRlc3QsIExvbmdGZWVkYmFj
a0RlbGF5cykgewotICBUYXJnZXRCaXRyYXRlVHJhY2tpbmdTZXR1cCgpOwotICBjb25zdCB3ZWJy
dGM6OlBhY2VkUGFja2V0SW5mbyBrUGFjaW5nSW5mbzAoMCwgNSwgMjAwMCk7Ci0gIGNvbnN0IHdl
YnJ0Yzo6UGFjZWRQYWNrZXRJbmZvIGtQYWNpbmdJbmZvMSgxLCA4LCA0MDAwKTsKLSAgY29uc3Qg
aW50NjRfdCBrRmVlZGJhY2tUaW1lb3V0TXMgPSA2MDAwMTsKLSAgY29uc3QgaW50IGtNYXhDb25z
ZWN1dGl2ZUZhaWxlZExvb2t1cHMgPSA1OwotICBmb3IgKGludCBpID0gMDsgaSA8IGtNYXhDb25z
ZWN1dGl2ZUZhaWxlZExvb2t1cHM7ICsraSkgewotICAgIHN0ZDo6dmVjdG9yPFBhY2tldFJlc3Vs
dD4gcGFja2V0czsKLSAgICBwYWNrZXRzLnB1c2hfYmFjayhDcmVhdGVSZXN1bHQoaSAqIDEwMCwg
MiAqIGkgKiAxMDAsIDE1MDAsIGtQYWNpbmdJbmZvMCkpOwotICAgIHBhY2tldHMucHVzaF9iYWNr
KAotICAgICAgICBDcmVhdGVSZXN1bHQoaSAqIDEwMCArIDEwLCAyICogaSAqIDEwMCArIDEwLCAx
NTAwLCBrUGFjaW5nSW5mbzApKTsKLSAgICBwYWNrZXRzLnB1c2hfYmFjaygKLSAgICAgICAgQ3Jl
YXRlUmVzdWx0KGkgKiAxMDAgKyAyMCwgMiAqIGkgKiAxMDAgKyAyMCwgMTUwMCwga1BhY2luZ0lu
Zm8wKSk7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soCi0gICAgICAgIENyZWF0ZVJlc3VsdChpICog
MTAwICsgMzAsIDIgKiBpICogMTAwICsgMzAsIDE1MDAsIGtQYWNpbmdJbmZvMSkpOwotICAgIHBh
Y2tldHMucHVzaF9iYWNrKAotICAgICAgICBDcmVhdGVSZXN1bHQoaSAqIDEwMCArIDQwLCAyICog
aSAqIDEwMCArIDQwLCAxNTAwLCBrUGFjaW5nSW5mbzEpKTsKLQotICAgIFRyYW5zcG9ydFBhY2tl
dHNGZWVkYmFjayBmZWVkYmFjazsKLSAgICBmb3IgKFBhY2tldFJlc3VsdCYgcGFja2V0IDogcGFj
a2V0cykgewotICAgICAgY29udHJvbGxlcl8tPk9uU2VudFBhY2tldChwYWNrZXQuc2VudF9wYWNr
ZXQpOwotICAgICAgZmVlZGJhY2suc2VuZGxlc3NfYXJyaXZhbF90aW1lcy5wdXNoX2JhY2socGFj
a2V0LnJlY2VpdmVfdGltZSk7Ci0gICAgfQotCi0gICAgZmVlZGJhY2suZmVlZGJhY2tfdGltZSA9
IHBhY2tldHNbMF0ucmVjZWl2ZV90aW1lOwotICAgIEFkdmFuY2VUaW1lTWlsbGlzZWNvbmRzKGtG
ZWVkYmFja1RpbWVvdXRNcyk7Ci0gICAgU2VudFBhY2tldCBsYXRlcl9wYWNrZXQ7Ci0gICAgbGF0
ZXJfcGFja2V0LnNlbmRfdGltZSA9IFRpbWVzdGFtcDo6bXMoa0ZlZWRiYWNrVGltZW91dE1zICsg
aSAqIDIwMCArIDQwKTsKLSAgICBsYXRlcl9wYWNrZXQuc2l6ZSA9IERhdGFTaXplOjpieXRlcygx
NTAwKTsKLSAgICBsYXRlcl9wYWNrZXQucGFjaW5nX2luZm8gPSBrUGFjaW5nSW5mbzE7Ci0gICAg
Y29udHJvbGxlcl8tPk9uU2VudFBhY2tldChsYXRlcl9wYWNrZXQpOwotCi0gICAgT25VcGRhdGUo
Y29udHJvbGxlcl8tPk9uVHJhbnNwb3J0UGFja2V0c0ZlZWRiYWNrKGZlZWRiYWNrKSk7Ci0gIH0K
LSAgT25VcGRhdGUoY29udHJvbGxlcl8tPk9uUHJvY2Vzc0ludGVydmFsKERlZmF1bHRJbnRlcnZh
bCgpKSk7Ci0KLSAgRVhQRUNUX0VRKGtJbml0aWFsQml0cmF0ZUticHMgLyAyLCB0YXJnZXRfYml0
cmF0ZV8tPmticHMoKSk7Ci0KLSAgLy8gVGVzdCB3aXRoIGZlZWRiYWNrIHRoYXQgaXNuJ3QgbGF0
ZSBlbm91Z2ggdG8gdGltZSBvdXQuCi0gIHsKLSAgICBzdGQ6OnZlY3RvcjxQYWNrZXRSZXN1bHQ+
IHBhY2tldHM7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soQ3JlYXRlUmVzdWx0KDEwMCwgMjAwLCAx
NTAwLCBrUGFjaW5nSW5mbzApKTsKLSAgICBwYWNrZXRzLnB1c2hfYmFjayhDcmVhdGVSZXN1bHQo
MTEwLCAyMTAsIDE1MDAsIGtQYWNpbmdJbmZvMCkpOwotICAgIHBhY2tldHMucHVzaF9iYWNrKENy
ZWF0ZVJlc3VsdCgxMjAsIDIyMCwgMTUwMCwga1BhY2luZ0luZm8wKSk7Ci0gICAgcGFja2V0cy5w
dXNoX2JhY2soQ3JlYXRlUmVzdWx0KDEzMCwgMjMwLCAxNTAwLCBrUGFjaW5nSW5mbzEpKTsKLSAg
ICBwYWNrZXRzLnB1c2hfYmFjayhDcmVhdGVSZXN1bHQoMTQwLCAyNDAsIDE1MDAsIGtQYWNpbmdJ
bmZvMSkpOwotCi0gICAgZm9yIChjb25zdCBQYWNrZXRSZXN1bHQmIHBhY2tldCA6IHBhY2tldHMp
Ci0gICAgICBjb250cm9sbGVyXy0+T25TZW50UGFja2V0KHBhY2tldC5zZW50X3BhY2tldCk7Ci0K
LSAgICBUcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2sgZmVlZGJhY2s7Ci0gICAgZmVlZGJhY2suZmVl
ZGJhY2tfdGltZSA9IHBhY2tldHNbMF0ucmVjZWl2ZV90aW1lOwotICAgIGZlZWRiYWNrLnBhY2tl
dF9mZWVkYmFja3MgPSBwYWNrZXRzOwotCi0gICAgQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa0Zl
ZWRiYWNrVGltZW91dE1zIC0gMSk7Ci0KLSAgICBTZW50UGFja2V0IGxhdGVyX3BhY2tldDsKLSAg
ICBsYXRlcl9wYWNrZXQuc2VuZF90aW1lID0gVGltZXN0YW1wOjptcyhrRmVlZGJhY2tUaW1lb3V0
TXMgKyAyNDApOwotICAgIGxhdGVyX3BhY2tldC5zaXplID0gRGF0YVNpemU6OmJ5dGVzKDE1MDAp
OwotICAgIGxhdGVyX3BhY2tldC5wYWNpbmdfaW5mbyA9IGtQYWNpbmdJbmZvMTsKLSAgICBjb250
cm9sbGVyXy0+T25TZW50UGFja2V0KGxhdGVyX3BhY2tldCk7Ci0KLSAgICBPblVwZGF0ZShjb250
cm9sbGVyXy0+T25UcmFuc3BvcnRQYWNrZXRzRmVlZGJhY2soZmVlZGJhY2spKTsKLSAgfQotfQot
CiAvLyBCYW5kd2lkdGggZXN0aW1hdGlvbiBpcyB1cGRhdGVkIHdoZW4gZmVlZGJhY2tzIGFyZSBy
ZWNlaXZlZC4KIC8vIEZlZWRiYWNrcyB3aGljaCBzaG93IGFuIGluY3JlYXNpbmcgZGVsYXkgY2F1
c2UgdGhlIGVzdGltYXRpb24gdG8gYmUgcmVkdWNlZC4KIFRFU1RfRihHb29nQ2NOZXR3b3JrQ29u
dHJvbGxlclRlc3QsIFVwZGF0ZXNEZWxheUJhc2VkRXN0aW1hdGUpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv
bl9jb250cm9sbGVyL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2Mg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl
c3Rpb25fY29udHJvbGxlci9zZW5kX3NpZGVfY29uZ2VzdGlvbl9jb250cm9sbGVyX3VuaXR0ZXN0
LmNjCmluZGV4IDVmNThmMjFjZGY4OTQ2YzRhYzhmYTg4NTQ1NDYwNmM0Yjc1NjNlZjkuLjBmMzdl
MGViM2NlZGI1Yzk5NWJmNTg2Nzc1Mzk5ODEwNzRlMDI2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250
cm9sbGVyL3NlbmRfc2lkZV9jb25nZXN0aW9uX2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvbW9kdWxlcy9jb25nZXN0
aW9uX2NvbnRyb2xsZXIvc2VuZF9zaWRlX2Nvbmdlc3Rpb25fY29udHJvbGxlcl91bml0dGVzdC5j
YwpAQCAtMzQ0LDk3ICszNDQsNiBAQCBURVNUX0YoTGVnYWN5U2VuZFNpZGVDb25nZXN0aW9uQ29u
dHJvbGxlclRlc3QsIFByb2JlT25Sb3V0ZUNoYW5nZSkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIwICoga0luaXRpYWxCaXRyYXRlQnBzKTsKIH0KIAotLy8gRXN0aW1h
dGVkIGJpdHJhdGUgcmVkdWNlZCB3aGVuIHRoZSBmZWVkYmFja3MgYXJyaXZlIHdpdGggc3VjaCBh
IGxvbmcgZGVsYXksCi0vLyB0aGF0IHRoZSBzZW5kLXRpbWUtaGlzdG9yeSBubyBsb25nZXIgaG9s
ZHMgdGhlIGZlZWRiYWNrZWQgcGFja2V0cy4KLVRFU1RfRihMZWdhY3lTZW5kU2lkZUNvbmdlc3Rp
b25Db250cm9sbGVyVGVzdCwgTG9uZ0ZlZWRiYWNrRGVsYXlzKSB7Ci0gIFRhcmdldEJpdHJhdGVU
cmFja2luZ1NldHVwKCk7Ci0KLSAgY29uc3QgaW50NjRfdCBrRmVlZGJhY2tUaW1lb3V0TXMgPSA2
MDAwMTsKLSAgY29uc3QgaW50IGtNYXhDb25zZWN1dGl2ZUZhaWxlZExvb2t1cHMgPSA1OwotICBm
b3IgKGludCBpID0gMDsgaSA8IGtNYXhDb25zZWN1dGl2ZUZhaWxlZExvb2t1cHM7ICsraSkgewot
ICAgIHN0ZDo6dmVjdG9yPFBhY2tldEZlZWRiYWNrPiBwYWNrZXRzOwotICAgIHBhY2tldHMucHVz
aF9iYWNrKAotICAgICAgICBQYWNrZXRGZWVkYmFjayhpICogMTAwLCAyICogaSAqIDEwMCwgMCwg
MTUwMCwga1BhY2luZ0luZm8wKSk7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soCi0gICAgICAgIFBh
Y2tldEZlZWRiYWNrKGkgKiAxMDAgKyAxMCwgMiAqIGkgKiAxMDAgKyAxMCwgMSwgMTUwMCwga1Bh
Y2luZ0luZm8wKSk7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soCi0gICAgICAgIFBhY2tldEZlZWRi
YWNrKGkgKiAxMDAgKyAyMCwgMiAqIGkgKiAxMDAgKyAyMCwgMiwgMTUwMCwga1BhY2luZ0luZm8w
KSk7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soCi0gICAgICAgIFBhY2tldEZlZWRiYWNrKGkgKiAx
MDAgKyAzMCwgMiAqIGkgKiAxMDAgKyAzMCwgMywgMTUwMCwga1BhY2luZ0luZm8xKSk7Ci0gICAg
cGFja2V0cy5wdXNoX2JhY2soCi0gICAgICAgIFBhY2tldEZlZWRiYWNrKGkgKiAxMDAgKyA0MCwg
MiAqIGkgKiAxMDAgKyA0MCwgNCwgMTUwMCwga1BhY2luZ0luZm8xKSk7Ci0KLSAgICBmb3IgKGNv
bnN0IFBhY2tldEZlZWRiYWNrJiBwYWNrZXQgOiBwYWNrZXRzKQotICAgICAgT25TZW50UGFja2V0
KHBhY2tldCk7Ci0KLSAgICBydGNwOjpUcmFuc3BvcnRGZWVkYmFjayBmZWVkYmFjazsKLSAgICBm
ZWVkYmFjay5TZXRCYXNlKHBhY2tldHNbMF0uc2VxdWVuY2VfbnVtYmVyLAotICAgICAgICAgICAg
ICAgICAgICAgcGFja2V0c1swXS5hcnJpdmFsX3RpbWVfbXMgKiAxMDAwKTsKLQotICAgIGZvciAo
Y29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tldCA6IHBhY2tldHMpIHsKLSAgICAgIEVYUEVDVF9U
UlVFKGZlZWRiYWNrLkFkZFJlY2VpdmVkUGFja2V0KHBhY2tldC5zZXF1ZW5jZV9udW1iZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXQuYXJyaXZh
bF90aW1lX21zICogMTAwMCkpOwotICAgIH0KLQotICAgIGZlZWRiYWNrLkJ1aWxkKCk7Ci0KLSAg
ICBjbG9ja18uQWR2YW5jZVRpbWVNaWxsaXNlY29uZHMoa0ZlZWRiYWNrVGltZW91dE1zKTsKLSAg
ICBQYWNrZXRGZWVkYmFjayBsYXRlcl9wYWNrZXQoa0ZlZWRiYWNrVGltZW91dE1zICsgaSAqIDEw
MCArIDQwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRmVlZGJhY2tUaW1lb3V0
TXMgKyBpICogMjAwICsgNDAsIDUsIDE1MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtQYWNpbmdJbmZvMSk7Ci0gICAgT25TZW50UGFja2V0KGxhdGVyX3BhY2tldCk7Ci0KLSAg
ICBjb250cm9sbGVyXy0+T25UcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7Ci0KLSAgICAvLyBD
aGVjayB0aGF0IHBhY2tldHMgaGF2ZSB0aW1lZCBvdXQuCi0gICAgZm9yIChQYWNrZXRGZWVkYmFj
ayYgcGFja2V0IDogcGFja2V0cykgewotICAgICAgcGFja2V0LnNlbmRfdGltZV9tcyA9IFBhY2tl
dEZlZWRiYWNrOjprTm9TZW5kVGltZTsKLSAgICAgIHBhY2tldC5wYXlsb2FkX3NpemUgPSAwOwot
ICAgICAgcGFja2V0LnBhY2luZ19pbmZvID0gUGFjZWRQYWNrZXRJbmZvKCk7Ci0gICAgfQotICAg
IENvbXBhcmVQYWNrZXRGZWVkYmFja1ZlY3RvcnMocGFja2V0cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRyb2xsZXJfLT5HZXRUcmFuc3BvcnRGZWVkYmFja1ZlY3Rvcigp
KTsKLSAgfQotCi0gIGNvbnRyb2xsZXJfLT5Qcm9jZXNzKCk7Ci0KLSAgRVhQRUNUX0VRKGtJbml0
aWFsQml0cmF0ZUJwcyAvIDIsIHRhcmdldF9iaXRyYXRlX2Jwc18pOwotCi0gIC8vIFRlc3Qgd2l0
aCBmZWVkYmFjayB0aGF0IGlzbid0IGxhdGUgZW5vdWdoIHRvIHRpbWUgb3V0LgotICB7Ci0gICAg
c3RkOjp2ZWN0b3I8UGFja2V0RmVlZGJhY2s+IHBhY2tldHM7Ci0gICAgcGFja2V0cy5wdXNoX2Jh
Y2soUGFja2V0RmVlZGJhY2soMTAwLCAyMDAsIDAsIDE1MDAsIGtQYWNpbmdJbmZvMCkpOwotICAg
IHBhY2tldHMucHVzaF9iYWNrKFBhY2tldEZlZWRiYWNrKDExMCwgMjEwLCAxLCAxNTAwLCBrUGFj
aW5nSW5mbzApKTsKLSAgICBwYWNrZXRzLnB1c2hfYmFjayhQYWNrZXRGZWVkYmFjaygxMjAsIDIy
MCwgMiwgMTUwMCwga1BhY2luZ0luZm8wKSk7Ci0gICAgcGFja2V0cy5wdXNoX2JhY2soUGFja2V0
RmVlZGJhY2soMTMwLCAyMzAsIDMsIDE1MDAsIGtQYWNpbmdJbmZvMSkpOwotICAgIHBhY2tldHMu
cHVzaF9iYWNrKFBhY2tldEZlZWRiYWNrKDE0MCwgMjQwLCA0LCAxNTAwLCBrUGFjaW5nSW5mbzEp
KTsKLQotICAgIGZvciAoY29uc3QgUGFja2V0RmVlZGJhY2smIHBhY2tldCA6IHBhY2tldHMpCi0g
ICAgICBPblNlbnRQYWNrZXQocGFja2V0KTsKLQotICAgIHJ0Y3A6OlRyYW5zcG9ydEZlZWRiYWNr
IGZlZWRiYWNrOwotICAgIGZlZWRiYWNrLlNldEJhc2UocGFja2V0c1swXS5zZXF1ZW5jZV9udW1i
ZXIsCi0gICAgICAgICAgICAgICAgICAgICBwYWNrZXRzWzBdLmFycml2YWxfdGltZV9tcyAqIDEw
MDApOwotCi0gICAgZm9yIChjb25zdCBQYWNrZXRGZWVkYmFjayYgcGFja2V0IDogcGFja2V0cykg
ewotICAgICAgRVhQRUNUX1RSVUUoZmVlZGJhY2suQWRkUmVjZWl2ZWRQYWNrZXQocGFja2V0LnNl
cXVlbmNlX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhY2tldC5hcnJpdmFsX3RpbWVfbXMgKiAxMDAwKSk7Ci0gICAgfQotCi0gICAgZmVlZGJh
Y2suQnVpbGQoKTsKLQotICAgIGNsb2NrXy5BZHZhbmNlVGltZU1pbGxpc2Vjb25kcyhrRmVlZGJh
Y2tUaW1lb3V0TXMgLSAxKTsKLSAgICBQYWNrZXRGZWVkYmFjayBsYXRlcl9wYWNrZXQoa0ZlZWRi
YWNrVGltZW91dE1zICsgMTQwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrRmVl
ZGJhY2tUaW1lb3V0TXMgKyAyNDAsIDUsIDE1MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtQYWNpbmdJbmZvMSk7Ci0gICAgT25TZW50UGFja2V0KGxhdGVyX3BhY2tldCk7Ci0K
LSAgICBjb250cm9sbGVyXy0+T25UcmFuc3BvcnRGZWVkYmFjayhmZWVkYmFjayk7Ci0gICAgQ29t
cGFyZVBhY2tldEZlZWRiYWNrVmVjdG9ycyhwYWNrZXRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29udHJvbGxlcl8tPkdldFRyYW5zcG9ydEZlZWRiYWNrVmVjdG9yKCkpOwot
ICB9Ci19Ci0KIC8vIEJhbmR3aWR0aCBlc3RpbWF0aW9uIGlzIHVwZGF0ZWQgd2hlbiBmZWVkYmFj
a3MgYXJlIHJlY2VpdmVkLgogLy8gRmVlZGJhY2tzIHdoaWNoIHNob3cgYW4gaW5jcmVhc2luZyBk
ZWxheSBjYXVzZSB0aGUgZXN0aW1hdGlvbiB0byBiZSByZWR1Y2VkLgogVEVTVF9GKExlZ2FjeVNl
bmRTaWRlQ29uZ2VzdGlvbkNvbnRyb2xsZXJUZXN0LCBVcGRhdGVzRGVsYXlCYXNlZEVzdGltYXRl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9qc2Vwc2Vzc2lvbmRlc2NyaXB0aW9uX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvanNlcHNlc3Npb25kZXNjcmlwdGlvbl91bml0
dGVzdC5jYwppbmRleCBkOWUyNTg4YTU1MTc5ZjQyYTY1MGMzYzRkOTAzMTUyM2UzMzhlMjI4Li4x
YzgyMzI2NWMzN2VjNzA2YTQ4N2M4MjI1YWM0Yzg2MzRkY2I4MWRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9qc2Vwc2Vzc2lvbmRlc2Ny
aXB0aW9uX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2Uvd2VicnRjL3BjL2pzZXBzZXNzaW9uZGVzY3JpcHRpb25fdW5pdHRlc3QuY2MKQEAgLTYwLDE2
ICs2MCwxNiBAQCBzdGF0aWMgY3JpY2tldDo6U2Vzc2lvbkRlc2NyaXB0aW9uKiBDcmVhdGVDcmlj
a2V0U2Vzc2lvbkRlc2NyaXB0aW9uKCkgewogICB2aWRlby0+QWRkQ29kZWMoY3JpY2tldDo6Vmlk
ZW9Db2RlYygxMjAsICJWUDgiKSk7CiAgIGRlc2MtPkFkZENvbnRlbnQoY3JpY2tldDo6Q05fVklE
RU8sIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCB2aWRlby5yZWxlYXNlKCkpOwogCi0gIEVYUEVD
VF9UUlVFKGRlc2MtPkFkZFRyYW5zcG9ydEluZm8oY3JpY2tldDo6VHJhbnNwb3J0SW5mbygKKyAg
ZGVzYy0+QWRkVHJhbnNwb3J0SW5mbyhjcmlja2V0OjpUcmFuc3BvcnRJbmZvKAogICAgICAgY3Jp
Y2tldDo6Q05fQVVESU8sCiAgICAgICBjcmlja2V0OjpUcmFuc3BvcnREZXNjcmlwdGlvbigKICAg
ICAgICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSwga0NhbmRpZGF0ZVVmcmFnVm9pY2Us
IGtDYW5kaWRhdGVQd2RWb2ljZSwKLSAgICAgICAgICBjcmlja2V0OjpJQ0VNT0RFX0ZVTEwsIGNy
aWNrZXQ6OkNPTk5FQ1RJT05ST0xFX05PTkUsIE5VTEwpKSkpOwotICBFWFBFQ1RfVFJVRShkZXNj
LT5BZGRUcmFuc3BvcnRJbmZvKGNyaWNrZXQ6OlRyYW5zcG9ydEluZm8oCisgICAgICAgICAgY3Jp
Y2tldDo6SUNFTU9ERV9GVUxMLCBjcmlja2V0OjpDT05ORUNUSU9OUk9MRV9OT05FLCBOVUxMKSkp
OworICBkZXNjLT5BZGRUcmFuc3BvcnRJbmZvKGNyaWNrZXQ6OlRyYW5zcG9ydEluZm8oCiAgICAg
ICBjcmlja2V0OjpDTl9WSURFTywKICAgICAgIGNyaWNrZXQ6OlRyYW5zcG9ydERlc2NyaXB0aW9u
KAogICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpLCBrQ2FuZGlkYXRlVWZyYWdW
aWRlbywga0NhbmRpZGF0ZVB3ZFZpZGVvLAotICAgICAgICAgIGNyaWNrZXQ6OklDRU1PREVfRlVM
TCwgY3JpY2tldDo6Q09OTkVDVElPTlJPTEVfTk9ORSwgTlVMTCkpKSk7CisgICAgICAgICAgY3Jp
Y2tldDo6SUNFTU9ERV9GVUxMLCBjcmlja2V0OjpDT05ORUNUSU9OUk9MRV9OT05FLCBOVUxMKSkp
OwogICByZXR1cm4gZGVzYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmNjIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uLmNjCmluZGV4IDI2M2Yz
NjkzZGI1N2I5NWI5NWM5ZDFlMjNlNjhkYjE0YzNmOWE4ZDkuLmNjZTdkMjJkZGJmODU3ZGI1ZTg1
MDhhNTYzN2QwNDFhNDcyYzNiNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9tZWRpYXNlc3Npb24uY2MKQEAgLTE3OTks
MTQgKzE3OTksMTIgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZFRy
YW5zcG9ydE9mZmVyKAogICBzdGQ6OnVuaXF1ZV9wdHI8VHJhbnNwb3J0RGVzY3JpcHRpb24+IG5l
d190ZGVzYygKICAgICAgIHRyYW5zcG9ydF9kZXNjX2ZhY3RvcnlfLT5DcmVhdGVPZmZlcih0cmFu
c3BvcnRfb3B0aW9ucywgY3VycmVudF90ZGVzYywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpY2VfY3JlZGVudGlhbHMpKTsKLSAgYm9vbCByZXQgPQotICAgICAg
KG5ld190ZGVzYy5nZXQoKSAhPSBOVUxMICYmCi0gICAgICAgb2ZmZXJfZGVzYy0+QWRkVHJhbnNw
b3J0SW5mbyhUcmFuc3BvcnRJbmZvKGNvbnRlbnRfbmFtZSwgKm5ld190ZGVzYykpKTsKLSAgaWYg
KCFyZXQpIHsKKyAgaWYgKCFuZXdfdGRlc2MpIHsKICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAi
RmFpbGVkIHRvIEFkZFRyYW5zcG9ydE9mZmVyLCBjb250ZW50IG5hbWU9IgogICAgICAgICAgICAg
ICAgICAgICAgIDw8IGNvbnRlbnRfbmFtZTsKICAgfQotICByZXR1cm4gcmV0OworICBvZmZlcl9k
ZXNjLT5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oY29udGVudF9uYW1lLCAqbmV3X3Rk
ZXNjKSk7CisgIHJldHVybiB0cnVlOwogfQogCiBUcmFuc3BvcnREZXNjcmlwdGlvbiogTWVkaWFT
ZXNzaW9uRGVzY3JpcHRpb25GYWN0b3J5OjpDcmVhdGVUcmFuc3BvcnRBbnN3ZXIoCkBAIC0xODMx
LDEyICsxODI5LDcgQEAgYm9vbCBNZWRpYVNlc3Npb25EZXNjcmlwdGlvbkZhY3Rvcnk6OkFkZFRy
YW5zcG9ydEFuc3dlcigKICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY29udGVudF9uYW1lLAogICAg
IGNvbnN0IFRyYW5zcG9ydERlc2NyaXB0aW9uJiB0cmFuc3BvcnRfZGVzYywKICAgICBTZXNzaW9u
RGVzY3JpcHRpb24qIGFuc3dlcl9kZXNjKSBjb25zdCB7Ci0gIGlmICghYW5zd2VyX2Rlc2MtPkFk
ZFRyYW5zcG9ydEluZm8oCi0gICAgICAgICAgVHJhbnNwb3J0SW5mbyhjb250ZW50X25hbWUsIHRy
YW5zcG9ydF9kZXNjKSkpIHsKLSAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIEFk
ZFRyYW5zcG9ydEFuc3dlciwgY29udGVudCBuYW1lPSIKLSAgICAgICAgICAgICAgICAgICAgICA8
PCBjb250ZW50X25hbWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9CisgIGFuc3dlcl9kZXNjLT5B
ZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oY29udGVudF9uYW1lLCB0cmFuc3BvcnRfZGVz
YykpOwogICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3VuaXR0ZXN0LmNjIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvbWVkaWFzZXNzaW9uX3Vu
aXR0ZXN0LmNjCmluZGV4IDIwOThlYzA4MTk0M2U4ZTRjMjZlZTcwNDQ5N2M5YmQzNmY0MTBiZjUu
LmZiYzQwMzUzOWY3ZGQ1M2E3NzBmODE1OTIyODE2MGI3NmM2NGQyYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL21lZGlhc2Vzc2lvbl91
bml0dGVzdC5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0
Yy9wYy9tZWRpYXNlc3Npb25fdW5pdHRlc3QuY2MKQEAgLTQyNiwxNCArNDI2LDE0IEBAIGNsYXNz
IE1lZGlhU2Vzc2lvbkRlc2NyaXB0aW9uRmFjdG9yeVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNlc3Npb25EZXNjcmlwdGlvbj4gZGVzYzsKICAgICBp
ZiAoaGFzX2N1cnJlbnRfZGVzYykgewogICAgICAgY3VycmVudF9kZXNjLnJlc2V0KG5ldyBTZXNz
aW9uRGVzY3JpcHRpb24oKSk7Ci0gICAgICBFWFBFQ1RfVFJVRShjdXJyZW50X2Rlc2MtPkFkZFRy
YW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbygKKyAgICAgIGN1cnJlbnRfZGVzYy0+QWRkVHJhbnNw
b3J0SW5mbyhUcmFuc3BvcnRJbmZvKAogICAgICAgICAgICJhdWRpbyIsCi0gICAgICAgICAgVHJh
bnNwb3J0RGVzY3JpcHRpb24oY3VycmVudF9hdWRpb191ZnJhZywgY3VycmVudF9hdWRpb19wd2Qp
KSkpOwotICAgICAgRVhQRUNUX1RSVUUoY3VycmVudF9kZXNjLT5BZGRUcmFuc3BvcnRJbmZvKFRy
YW5zcG9ydEluZm8oCisgICAgICAgICAgVHJhbnNwb3J0RGVzY3JpcHRpb24oY3VycmVudF9hdWRp
b191ZnJhZywgY3VycmVudF9hdWRpb19wd2QpKSk7CisgICAgICBjdXJyZW50X2Rlc2MtPkFkZFRy
YW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbygKICAgICAgICAgICAidmlkZW8iLAotICAgICAgICAg
IFRyYW5zcG9ydERlc2NyaXB0aW9uKGN1cnJlbnRfdmlkZW9fdWZyYWcsIGN1cnJlbnRfdmlkZW9f
cHdkKSkpKTsKLSAgICAgIEVYUEVDVF9UUlVFKGN1cnJlbnRfZGVzYy0+QWRkVHJhbnNwb3J0SW5m
byhUcmFuc3BvcnRJbmZvKAotICAgICAgICAgICJkYXRhIiwgVHJhbnNwb3J0RGVzY3JpcHRpb24o
Y3VycmVudF9kYXRhX3VmcmFnLCBjdXJyZW50X2RhdGFfcHdkKSkpKTsKKyAgICAgICAgICBUcmFu
c3BvcnREZXNjcmlwdGlvbihjdXJyZW50X3ZpZGVvX3VmcmFnLCBjdXJyZW50X3ZpZGVvX3B3ZCkp
KTsKKyAgICAgIGN1cnJlbnRfZGVzYy0+QWRkVHJhbnNwb3J0SW5mbyhUcmFuc3BvcnRJbmZvKAor
ICAgICAgICAgICJkYXRhIiwgVHJhbnNwb3J0RGVzY3JpcHRpb24oY3VycmVudF9kYXRhX3VmcmFn
LCBjdXJyZW50X2RhdGFfcHdkKSkpOwogICAgIH0KICAgICBpZiAob2ZmZXIpIHsKICAgICAgIGRl
c2MucmVzZXQoZjFfLkNyZWF0ZU9mZmVyKG9wdGlvbnMsIGN1cnJlbnRfZGVzYy5nZXQoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
cGVlcmNvbm5lY3Rpb24uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dl
YnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5jYwppbmRleCBlZThhOTA5ZTAzZTg2ZmRmYzMwYjIzOWNj
YjU0MDEyM2ExNGEzNTg4Li4xMzA3ZWY2ZWFjMWRkZmJhZmZmZTllNjllNzhiYjY0MzIzMjE2NzNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9w
Yy9wZWVyY29ubmVjdGlvbi5jYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbi5jYwpAQCAtNjQ5LDYgKzY0OSwyNSBAQCBEYXRh
TWVzc2FnZVR5cGUgVG9XZWJydGNEYXRhTWVzc2FnZVR5cGUoY3JpY2tldDo6RGF0YU1lc3NhZ2VU
eXBlIHR5cGUpIHsKICAgcmV0dXJuIERhdGFNZXNzYWdlVHlwZTo6a0NvbnRyb2w7CiB9CiAKKy8v
IEZpbmQgYSBuZXcgTUlEIHRoYXQgaXMgbm90IGFscmVhZHkgaW4gfHVzZWRfbWlkc3wsIHRoZW4g
YWRkIGl0IHRvIHx1c2VkX21pZHN8CisvLyBhbmQgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIGl0Lgor
Ly8gR2VuZXJhdGVkIE1JRHMgc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiAzIGJ5dGVzIGxvbmcgdG8g
dGFrZSB1cCBsZXNzIHNwYWNlIGluCisvLyB0aGUgUlRQIHBhY2tldC4KK2NvbnN0IHN0ZDo6c3Ry
aW5nJiBBbGxvY2F0ZU1pZChzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIHVzZWRfbWlkcykgeworICBS
VENfRENIRUNLKHVzZWRfbWlkcyk7CisgIC8vIFdlJ3JlIGJvcmluZzoganVzdCBnZW5lcmF0ZSBN
SURzIDAsIDEsIDIsIC4uLgorICBzaXplX3QgaSA9IDA7CisgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5n
Pjo6aXRlcmF0b3IgaXQ7CisgIGJvb2wgaW5zZXJ0ZWQ7CisgIGRvIHsKKyAgICBzdGQ6OnN0cmlu
ZyBtaWQgPSBydGM6OlRvU3RyaW5nKGkrKyk7CisgICAgYXV0byBpbnNlcnRfcmVzdWx0ID0gdXNl
ZF9taWRzLT5pbnNlcnQobWlkKTsKKyAgICBpdCA9IGluc2VydF9yZXN1bHQuZmlyc3Q7CisgICAg
aW5zZXJ0ZWQgPSBpbnNlcnRfcmVzdWx0LnNlY29uZDsKKyAgfSB3aGlsZSAoIWluc2VydGVkKTsK
KyAgcmV0dXJuICppdDsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIC8vIFVwb24gY29tcGxldGlv
biwgcG9zdHMgYSB0YXNrIHRvIGV4ZWN1dGUgdGhlIGNhbGxiYWNrIG9mIHRoZQpAQCAtMjIzMSw2
ICsyMjUwLDU2IEBAIFJUQ0Vycm9yIFBlZXJDb25uZWN0aW9uOjpBcHBseUxvY2FsRGVzY3JpcHRp
b24oCiAgIHJldHVybiBSVENFcnJvcjo6T0soKTsKIH0KIAorLy8gVGhlIFNEUCBwYXJzZXIgdXNl
ZCB0byBwb3B1bGF0ZSB0aGVzZSB2YWx1ZXMgYnkgZGVmYXVsdCBmb3IgdGhlICdjb250ZW50Cisv
LyBuYW1lJyBpZiBhbiBhPW1pZCBsaW5lIHdhcyBhYnNlbnQuCitzdGF0aWMgYWJzbDo6c3RyaW5n
X3ZpZXcgR2V0RGVmYXVsdE1pZEZvclBsYW5CKGNyaWNrZXQ6Ok1lZGlhVHlwZSBtZWRpYV90eXBl
KSB7CisgIHN3aXRjaCAobWVkaWFfdHlwZSkgeworICAgIGNhc2UgY3JpY2tldDo6TUVESUFfVFlQ
RV9BVURJTzoKKyAgICAgIHJldHVybiBjcmlja2V0OjpDTl9BVURJTzsKKyAgICBjYXNlIGNyaWNr
ZXQ6Ok1FRElBX1RZUEVfVklERU86CisgICAgICByZXR1cm4gY3JpY2tldDo6Q05fVklERU87Cisg
ICAgY2FzZSBjcmlja2V0OjpNRURJQV9UWVBFX0RBVEE6CisgICAgICByZXR1cm4gY3JpY2tldDo6
Q05fREFUQTsKKyAgfQorICBSVENfTk9UUkVBQ0hFRCgpOworICByZXR1cm4gIiI7Cit9CisKK3Zv
aWQgUGVlckNvbm5lY3Rpb246OkZpbGxJbk1pc3NpbmdSZW1vdGVNaWRzKAorICAgIGNyaWNrZXQ6
OlNlc3Npb25EZXNjcmlwdGlvbiogcmVtb3RlX2Rlc2NyaXB0aW9uKSB7CisgIFJUQ19EQ0hFQ0so
cmVtb3RlX2Rlc2NyaXB0aW9uKTsKKyAgY29uc3QgY3JpY2tldDo6Q29udGVudEluZm9zJiBsb2Nh
bF9jb250ZW50cyA9CisgICAgICAobG9jYWxfZGVzY3JpcHRpb24oKSA/IGxvY2FsX2Rlc2NyaXB0
aW9uKCktPmRlc2NyaXB0aW9uKCktPmNvbnRlbnRzKCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDogY3JpY2tldDo6Q29udGVudEluZm9zKCkpOworICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4g
dXNlZF9taWRzID0gc2Vlbl9taWRzXzsKKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZW1vdGVf
ZGVzY3JpcHRpb24tPmNvbnRlbnRzKCkuc2l6ZSgpOyArK2kpIHsKKyAgICBjcmlja2V0OjpDb250
ZW50SW5mbyYgY29udGVudCA9IHJlbW90ZV9kZXNjcmlwdGlvbi0+Y29udGVudHMoKVtpXTsKKyAg
ICBpZiAoIWNvbnRlbnQubmFtZS5lbXB0eSgpKSB7CisgICAgICBjb250aW51ZTsKKyAgICB9Cisg
ICAgYWJzbDo6c3RyaW5nX3ZpZXcgbmV3X21pZDsKKyAgICBhYnNsOjpzdHJpbmdfdmlldyBzb3Vy
Y2VfZXhwbGFuYXRpb247CisgICAgaWYgKElzVW5pZmllZFBsYW4oKSkgeworICAgICAgaWYgKGkg
PCBsb2NhbF9jb250ZW50cy5zaXplKCkpIHsKKyAgICAgICAgbmV3X21pZCA9IGxvY2FsX2NvbnRl
bnRzW2ldLm5hbWU7CisgICAgICAgIHNvdXJjZV9leHBsYW5hdGlvbiA9ICJmcm9tIHRoZSBtYXRj
aGluZyBsb2NhbCBtZWRpYSBzZWN0aW9uIjsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG5ld19t
aWQgPSBBbGxvY2F0ZU1pZCgmdXNlZF9taWRzKTsKKyAgICAgICAgc291cmNlX2V4cGxhbmF0aW9u
ID0gImdlbmVyYXRlZCBqdXN0IG5vdyI7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIG5l
d19taWQgPSBHZXREZWZhdWx0TWlkRm9yUGxhbkIoY29udGVudC5tZWRpYV9kZXNjcmlwdGlvbigp
LT50eXBlKCkpOworICAgICAgc291cmNlX2V4cGxhbmF0aW9uID0gInRvIG1hdGNoIHByZS1leGlz
dGluZyBiZWhhdmlvciI7CisgICAgfQorICAgIGNvbnRlbnQubmFtZSA9IHN0ZDo6c3RyaW5nKG5l
d19taWQpOworICAgIHJlbW90ZV9kZXNjcmlwdGlvbi0+dHJhbnNwb3J0X2luZm9zKClbaV0uY29u
dGVudF9uYW1lID0KKyAgICAgICAgc3RkOjpzdHJpbmcobmV3X21pZCk7CisgICAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiU2V0UmVtb3RlRGVzY3JpcHRpb246IFJlbW90ZSBtZWRpYSBzZWN0aW9uIGF0
IGk9IiA8PCBpCisgICAgICAgICAgICAgICAgICAgICA8PCAiIGlzIG1pc3NpbmcgYW4gYT1taWQg
bGluZS4gRmlsbGluZyBpbiB0aGUgdmFsdWUgJyIKKyAgICAgICAgICAgICAgICAgICAgIDw8IG5l
d19taWQgPDwgIicgIiA8PCBzb3VyY2VfZXhwbGFuYXRpb24gPDwgIi4iOworICB9Cit9CisKIHZv
aWQgUGVlckNvbm5lY3Rpb246OlNldFJlbW90ZURlc2NyaXB0aW9uKAogICAgIFNldFNlc3Npb25E
ZXNjcmlwdGlvbk9ic2VydmVyKiBvYnNlcnZlciwKICAgICBTZXNzaW9uRGVzY3JpcHRpb25JbnRl
cmZhY2UqIGRlc2MpIHsKQEAgLTIyNzEsNiArMjM0MCwxMCBAQCB2b2lkIFBlZXJDb25uZWN0aW9u
OjpTZXRSZW1vdGVEZXNjcmlwdGlvbigKICAgICBSZXBvcnRTZHBGb3JtYXRSZWNlaXZlZCgqZGVz
Yyk7CiAgIH0KIAorICAvLyBIYW5kbGUgcmVtb3RlIGRlc2NyaXB0aW9ucyBtaXNzaW5nIGE9bWlk
IGxpbmVzIGZvciBpbnRlcm9wIHdpdGggbGVnYWN5IGVuZAorICAvLyBwb2ludHMuCisgIEZpbGxJ
bk1pc3NpbmdSZW1vdGVNaWRzKGRlc2MtPmRlc2NyaXB0aW9uKCkpOworCiAgIFJUQ0Vycm9yIGVy
cm9yID0gVmFsaWRhdGVTZXNzaW9uRGVzY3JpcHRpb24oZGVzYy5nZXQoKSwgY3JpY2tldDo6Q1Nf
UkVNT1RFKTsKICAgaWYgKCFlcnJvci5vaygpKSB7CiAgICAgc3RkOjpzdHJpbmcgZXJyb3JfbWVz
c2FnZSA9IEdldFNldERlc2NyaXB0aW9uRXJyb3JNZXNzYWdlKApAQCAtMjQ1Niw1MSArMjUyOSwz
MiBAQCBSVENFcnJvciBQZWVyQ29ubmVjdGlvbjo6QXBwbHlSZW1vdGVEZXNjcmlwdGlvbigKICAg
ICAgIGNvbnN0IE1lZGlhQ29udGVudERlc2NyaXB0aW9uKiBtZWRpYV9kZXNjID0gY29udGVudC0+
bWVkaWFfZGVzY3JpcHRpb24oKTsKICAgICAgIFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGxvY2Fs
X2RpcmVjdGlvbiA9CiAgICAgICAgICAgUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb25SZXZlcnNlZCht
ZWRpYV9kZXNjLT5kaXJlY3Rpb24oKSk7Ci0gICAgICAvLyBGcm9tIHRoZSBXZWJSVEMgc3BlY2lm
aWNhdGlvbiwgc3RlcHMgMi4yLjguNS82IG9mIHNlY3Rpb24gNC40LjEuNiAiU2V0Ci0gICAgICAv
LyB0aGUgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOiBJZiBkaXJlY3Rpb24gaXMgc2VuZHJlY3Ygb3Ig
cmVjdm9ubHksIGFuZAotICAgICAgLy8gdHJhbnNjZWl2ZXIncyBjdXJyZW50IGRpcmVjdGlvbiBp
cyBuZWl0aGVyIHNlbmRyZWN2IG5vciByZWN2b25seSwKLSAgICAgIC8vIHByb2Nlc3MgdGhlIGFk
ZGl0aW9uIG9mIGEgcmVtb3RlIHRyYWNrIGZvciB0aGUgbWVkaWEgZGVzY3JpcHRpb24uCi0gICAg
ICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gc3RyZWFtX2lkczsKLSAgICAgIGlmICghbWVkaWFf
ZGVzYy0+c3RyZWFtcygpLmVtcHR5KCkpIHsKLSAgICAgICAgLy8gVGhlIHJlbW90ZSBkZXNjcmlw
dGlvbiBoYXMgc2lnbmFsZWQgdGhlIHN0cmVhbSBJRHMuCi0gICAgICAgIHN0cmVhbV9pZHMgPSBt
ZWRpYV9kZXNjLT5zdHJlYW1zKClbMF0uc3RyZWFtX2lkcygpOwotICAgICAgfQotICAgICAgaWYg
KFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uSGFzUmVjdihsb2NhbF9kaXJlY3Rpb24pICYmCi0gICAg
ICAgICAgKCF0cmFuc2NlaXZlci0+ZmlyZWRfZGlyZWN0aW9uKCkgfHwKLSAgICAgICAgICAgIVJ0
cFRyYW5zY2VpdmVyRGlyZWN0aW9uSGFzUmVjdigqdHJhbnNjZWl2ZXItPmZpcmVkX2RpcmVjdGlv
bigpKSkpIHsKLSAgICAgICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUHJvY2Vzc2luZyB0aGUgYWRk
aXRpb24gb2YgYSBuZXcgdHJhY2sgZm9yIE1JRD0iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
PDwgY29udGVudC0+bmFtZSA8PCAiIChhZGRlZCB0byAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgR2V0U3RyZWFtSWRzU3RyaW5nKHN0cmVhbV9pZHMpIDw8ICIpLiI7Ci0KLSAgICAgICAg
c3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFtSW50ZXJmYWNlPj4gbWVk
aWFfc3RyZWFtczsKLSAgICAgICAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyYgc3RyZWFtX2lkIDog
c3RyZWFtX2lkcykgewotICAgICAgICAgIHJ0Yzo6c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbUlu
dGVyZmFjZT4gc3RyZWFtID0KLSAgICAgICAgICAgICAgcmVtb3RlX3N0cmVhbXNfLT5maW5kKHN0
cmVhbV9pZCk7Ci0gICAgICAgICAgaWYgKCFzdHJlYW0pIHsKLSAgICAgICAgICAgIHN0cmVhbSA9
IE1lZGlhU3RyZWFtUHJveHk6OkNyZWF0ZShydGM6OlRocmVhZDo6Q3VycmVudCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhU3RyZWFtOjpDcmVh
dGUoc3RyZWFtX2lkKSk7Ci0gICAgICAgICAgICByZW1vdGVfc3RyZWFtc18tPkFkZFN0cmVhbShz
dHJlYW0pOwotICAgICAgICAgICAgYWRkZWRfc3RyZWFtcy5wdXNoX2JhY2soc3RyZWFtKTsKLSAg
ICAgICAgICB9Ci0gICAgICAgICAgbWVkaWFfc3RyZWFtcy5wdXNoX2JhY2soc3RyZWFtKTsKKyAg
ICAgIC8vIFJvdWdobHkgdGhlIHNhbWUgYXMgc3RlcHMgMi4yLjguNiBvZiBzZWN0aW9uIDQuNC4x
LjYgIlNldCB0aGUKKyAgICAgIC8vIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjogU2V0IHRoZSBhc3Nv
Y2lhdGVkIHJlbW90ZSBzdHJlYW1zIGdpdmVuCisgICAgICAvLyB0cmFuc2NlaXZlci5bW1JlY2Vp
dmVyXV0sIG1zaWRzLCBhZGRMaXN0LCBhbmQgcmVtb3ZlTGlzdCIuCisgICAgICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vd2VicnRjLXBjLyNzZXQtdGhlLXJ0Y3Nlc3Npb25kZXNjcmlwdGlvbgor
ICAgICAgaWYgKFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uSGFzUmVjdihsb2NhbF9kaXJlY3Rpb24p
KSB7CisgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBzdHJlYW1faWRzOworICAgICAg
ICBpZiAoIW1lZGlhX2Rlc2MtPnN0cmVhbXMoKS5lbXB0eSgpKSB7CisgICAgICAgICAgLy8gVGhl
IHJlbW90ZSBkZXNjcmlwdGlvbiBoYXMgc2lnbmFsZWQgdGhlIHN0cmVhbSBJRHMuCisgICAgICAg
ICAgc3RyZWFtX2lkcyA9IG1lZGlhX2Rlc2MtPnN0cmVhbXMoKVswXS5zdHJlYW1faWRzKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgLy8gU3BlY2lhbCBjYXNlOiAiYT1tc2lkIiBtaXNzaW5nLCB1c2Ug
cmFuZG9tIHN0cmVhbSBJRC4KLSAgICAgICAgaWYgKG1lZGlhX3N0cmVhbXMuZW1wdHkoKSAmJgot
ICAgICAgICAgICAgIShyZW1vdGVfZGVzY3JpcHRpb24oKS0+ZGVzY3JpcHRpb24oKS0+bXNpZF9z
aWduYWxpbmcoKSAmCi0gICAgICAgICAgICAgIGNyaWNrZXQ6OmtNc2lkU2lnbmFsaW5nTWVkaWFT
ZWN0aW9uKSkgewotICAgICAgICAgIGlmICghbWlzc2luZ19tc2lkX2RlZmF1bHRfc3RyZWFtXykg
ewotICAgICAgICAgICAgbWlzc2luZ19tc2lkX2RlZmF1bHRfc3RyZWFtXyA9IE1lZGlhU3RyZWFt
UHJveHk6OkNyZWF0ZSgKLSAgICAgICAgICAgICAgICBydGM6OlRocmVhZDo6Q3VycmVudCgpLAot
ICAgICAgICAgICAgICAgIE1lZGlhU3RyZWFtOjpDcmVhdGUocnRjOjpDcmVhdGVSYW5kb21VdWlk
KCkpKTsKLSAgICAgICAgICAgIGFkZGVkX3N0cmVhbXMucHVzaF9iYWNrKG1pc3NpbmdfbXNpZF9k
ZWZhdWx0X3N0cmVhbV8pOwotICAgICAgICAgIH0KLSAgICAgICAgICBtZWRpYV9zdHJlYW1zLnB1
c2hfYmFjayhtaXNzaW5nX21zaWRfZGVmYXVsdF9zdHJlYW1fKTsKKyAgICAgICAgUlRDX0xPRyhM
U19JTkZPKSA8PCAiUHJvY2Vzc2luZyB0aGUgTVNJRHMgZm9yIE1JRD0iIDw8IGNvbnRlbnQtPm5h
bWUKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICgiIDw8IEdldFN0cmVhbUlkc1N0cmlu
ZyhzdHJlYW1faWRzKSA8PCAiKS4iOworICAgICAgICBTZXRBc3NvY2lhdGVkUmVtb3RlU3RyZWFt
cyh0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+cmVjZWl2ZXJfaW50ZXJuYWwoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2lkcywgJmFkZGVkX3N0cmVhbXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZW1vdmVkX3N0cmVhbXMpOworICAg
ICAgICAvLyBGcm9tIHRoZSBXZWJSVEMgc3BlY2lmaWNhdGlvbiwgc3RlcHMgMi4yLjguNS82IG9m
IHNlY3Rpb24gNC40LjEuNgorICAgICAgICAvLyAiU2V0IHRoZSBSVENTZXNzaW9uRGVzY3JpcHRp
b246IElmIGRpcmVjdGlvbiBpcyBzZW5kcmVjdiBvciByZWN2b25seSwKKyAgICAgICAgLy8gYW5k
IHRyYW5zY2VpdmVyJ3MgY3VycmVudCBkaXJlY3Rpb24gaXMgbmVpdGhlciBzZW5kcmVjdiBub3Ig
cmVjdm9ubHksCisgICAgICAgIC8vIHByb2Nlc3MgdGhlIGFkZGl0aW9uIG9mIGEgcmVtb3RlIHRy
YWNrIGZvciB0aGUgbWVkaWEgZGVzY3JpcHRpb24uCisgICAgICAgIGlmICghdHJhbnNjZWl2ZXIt
PmZpcmVkX2RpcmVjdGlvbigpIHx8CisgICAgICAgICAgICAhUnRwVHJhbnNjZWl2ZXJEaXJlY3Rp
b25IYXNSZWN2KCp0cmFuc2NlaXZlci0+ZmlyZWRfZGlyZWN0aW9uKCkpKSB7CisgICAgICAgICAg
UlRDX0xPRyhMU19JTkZPKQorICAgICAgICAgICAgICA8PCAiUHJvY2Vzc2luZyB0aGUgYWRkaXRp
b24gb2YgYSByZW1vdGUgdHJhY2sgZm9yIE1JRD0iCisgICAgICAgICAgICAgIDw8IGNvbnRlbnQt
Pm5hbWUgPDwgIi4iOworICAgICAgICAgIG5vd19yZWNlaXZpbmdfdHJhbnNjZWl2ZXJzLnB1c2hf
YmFjayh0cmFuc2NlaXZlcik7CiAgICAgICAgIH0KLSAgICAgICAgLy8gVGhpcyB3aWxsIGFkZCB0
aGUgcmVtb3RlIHRyYWNrIHRvIHRoZSBzdHJlYW1zLgotICAgICAgICAvLyBUT0RPKGhib3MpOiBX
aGVuIHdlIHJlbW92ZSByZW1vdGVfc3RyZWFtcygpLCB1c2Ugc2V0X3N0cmVhbV9pZHMoKQotICAg
ICAgICAvLyBpbnN0ZWFkLiBodHRwczovL2NyYnVnLmNvbS93ZWJydGMvOTQ4MAotICAgICAgICB0
cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+cmVjZWl2ZXJfaW50ZXJuYWwoKS0+U2V0U3RyZWFtcyht
ZWRpYV9zdHJlYW1zKTsKLSAgICAgICAgbm93X3JlY2VpdmluZ190cmFuc2NlaXZlcnMucHVzaF9i
YWNrKHRyYW5zY2VpdmVyKTsKICAgICAgIH0KICAgICAgIC8vIDIuMi44LjEuNzogSWYgZGlyZWN0
aW9uIGlzICJzZW5kb25seSIgb3IgImluYWN0aXZlIiwgYW5kIHRyYW5zY2VpdmVyJ3MKICAgICAg
IC8vIFtbRmlyZWREaXJlY3Rpb25dXSBzbG90IGlzIGVpdGhlciAic2VuZHJlY3YiIG9yICJyZWN2
b25seSIsIHByb2Nlc3MgdGhlCkBAIC0yNjQzLDYgKzI2OTcsNDYgQEAgUlRDRXJyb3IgUGVlckNv
bm5lY3Rpb246OkFwcGx5UmVtb3RlRGVzY3JpcHRpb24oCiAgIHJldHVybiBSVENFcnJvcjo6T0so
KTsKIH0KIAordm9pZCBQZWVyQ29ubmVjdGlvbjo6U2V0QXNzb2NpYXRlZFJlbW90ZVN0cmVhbXMo
CisgICAgcnRjOjpzY29wZWRfcmVmcHRyPFJ0cFJlY2VpdmVySW50ZXJuYWw+IHJlY2VpdmVyLAor
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgc3RyZWFtX2lkcywKKyAgICBzdGQ6
OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiogYWRkZWRf
c3RyZWFtcywKKyAgICBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1J
bnRlcmZhY2U+PiogcmVtb3ZlZF9zdHJlYW1zKSB7CisgIHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVk
X3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+IG1lZGlhX3N0cmVhbXM7CisgIGZvciAoY29u
c3Qgc3RkOjpzdHJpbmcmIHN0cmVhbV9pZCA6IHN0cmVhbV9pZHMpIHsKKyAgICBydGM6OnNjb3Bl
ZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+IHN0cmVhbSA9CisgICAgICAgIHJlbW90ZV9z
dHJlYW1zXy0+ZmluZChzdHJlYW1faWQpOworICAgIGlmICghc3RyZWFtKSB7CisgICAgICBzdHJl
YW0gPSBNZWRpYVN0cmVhbVByb3h5OjpDcmVhdGUocnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVN0cmVhbTo6Q3JlYXRl
KHN0cmVhbV9pZCkpOworICAgICAgcmVtb3RlX3N0cmVhbXNfLT5BZGRTdHJlYW0oc3RyZWFtKTsK
KyAgICAgIGFkZGVkX3N0cmVhbXMtPnB1c2hfYmFjayhzdHJlYW0pOworICAgIH0KKyAgICBtZWRp
YV9zdHJlYW1zLnB1c2hfYmFjayhzdHJlYW0pOworICB9CisgIC8vIFNwZWNpYWwgY2FzZTogImE9
bXNpZCIgbWlzc2luZywgdXNlIHJhbmRvbSBzdHJlYW0gSUQuCisgIGlmIChtZWRpYV9zdHJlYW1z
LmVtcHR5KCkgJiYKKyAgICAgICEocmVtb3RlX2Rlc2NyaXB0aW9uKCktPmRlc2NyaXB0aW9uKCkt
Pm1zaWRfc2lnbmFsaW5nKCkgJgorICAgICAgICBjcmlja2V0OjprTXNpZFNpZ25hbGluZ01lZGlh
U2VjdGlvbikpIHsKKyAgICBpZiAoIW1pc3NpbmdfbXNpZF9kZWZhdWx0X3N0cmVhbV8pIHsKKyAg
ICAgIG1pc3NpbmdfbXNpZF9kZWZhdWx0X3N0cmVhbV8gPSBNZWRpYVN0cmVhbVByb3h5OjpDcmVh
dGUoCisgICAgICAgICAgcnRjOjpUaHJlYWQ6OkN1cnJlbnQoKSwgTWVkaWFTdHJlYW06OkNyZWF0
ZShydGM6OkNyZWF0ZVJhbmRvbVV1aWQoKSkpOworICAgICAgYWRkZWRfc3RyZWFtcy0+cHVzaF9i
YWNrKG1pc3NpbmdfbXNpZF9kZWZhdWx0X3N0cmVhbV8pOworICAgIH0KKyAgICBtZWRpYV9zdHJl
YW1zLnB1c2hfYmFjayhtaXNzaW5nX21zaWRfZGVmYXVsdF9zdHJlYW1fKTsKKyAgfQorICBzdGQ6
OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiBwcmV2aW91
c19zdHJlYW1zID0KKyAgICAgIHJlY2VpdmVyLT5zdHJlYW1zKCk7CisgIC8vIFNldFN0cmVhbXMo
KSB3aWxsIGFkZC9yZW1vdmUgdGhlIHJlY2VpdmVyJ3MgdHJhY2sgdG8vZnJvbSB0aGUgc3RyZWFt
cy4gVGhpcworICAvLyBkaWZmZXJzIGZyb20gdGhlIHNwZWMgLSB0aGUgc3BlYyB1c2VzIGFuICJh
ZGRMaXN0IiBhbmQgInJlbW92ZUxpc3QiIHRvCisgIC8vIHVwZGF0ZSB0aGUgc3RyZWFtLXRyYWNr
IHJlbGF0aW9uc2hpcHMgaW4gYSBsYXRlciBzdGVwLiBXZSBkbyB0aGlzIGVhcmxpZXIsCisgIC8v
IGNoYW5naW5nIHRoZSBvcmRlciBvZiB0aGluZ3MsIGJ1dCB0aGUgZW5kLXJlc3VsdCBpcyB0aGUg
c2FtZS4KKyAgLy8gVE9ETyhoYm9zKTogV2hlbiB3ZSByZW1vdmUgcmVtb3RlX3N0cmVhbXMoKSwg
dXNlIHNldF9zdHJlYW1faWRzKCkKKyAgLy8gaW5zdGVhZC4gaHR0cHM6Ly9jcmJ1Zy5jb20vd2Vi
cnRjLzk0ODAKKyAgcmVjZWl2ZXItPlNldFN0cmVhbXMobWVkaWFfc3RyZWFtcyk7CisgIFJlbW92
ZVJlbW90ZVN0cmVhbXNJZkVtcHR5KHByZXZpb3VzX3N0cmVhbXMsIHJlbW92ZWRfc3RyZWFtcyk7
Cit9CisKIHZvaWQgUGVlckNvbm5lY3Rpb246OlByb2Nlc3NSZW1vdmFsT2ZSZW1vdGVUcmFjaygK
ICAgICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwVHJhbnNjZWl2ZXJQcm94eVdpdGhJbnRlcm5hbDxS
dHBUcmFuc2NlaXZlcj4+CiAgICAgICAgIHRyYW5zY2VpdmVyLApAQCAtMjY1MSwxOSArMjc0NSwy
NSBAQCB2b2lkIFBlZXJDb25uZWN0aW9uOjpQcm9jZXNzUmVtb3ZhbE9mUmVtb3RlVHJhY2soCiAg
IFJUQ19EQ0hFQ0sodHJhbnNjZWl2ZXItPm1pZCgpKTsKICAgUlRDX0xPRyhMU19JTkZPKSA8PCAi
UHJvY2Vzc2luZyB0aGUgcmVtb3ZhbCBvZiBhIHRyYWNrIGZvciBNSUQ9IgogICAgICAgICAgICAg
ICAgICAgIDw8ICp0cmFuc2NlaXZlci0+bWlkKCk7Ci0gIHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVk
X3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+IG1lZGlhX3N0cmVhbXMgPQorICBzdGQ6OnZl
Y3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiBwcmV2aW91c19z
dHJlYW1zID0KICAgICAgIHRyYW5zY2VpdmVyLT5pbnRlcm5hbCgpLT5yZWNlaXZlcl9pbnRlcm5h
bCgpLT5zdHJlYW1zKCk7CiAgIC8vIFRoaXMgd2lsbCByZW1vdmUgdGhlIHJlbW90ZSB0cmFjayBm
cm9tIHRoZSBzdHJlYW1zLgogICB0cmFuc2NlaXZlci0+aW50ZXJuYWwoKS0+cmVjZWl2ZXJfaW50
ZXJuYWwoKS0+c2V0X3N0cmVhbV9pZHMoe30pOwogICByZW1vdmVfbGlzdC0+cHVzaF9iYWNrKHRy
YW5zY2VpdmVyKTsKLSAgLy8gUmVtb3ZlIGFueSBzdHJlYW1zIHRoYXQgbm8gbG9uZ2VyIGhhdmUg
dHJhY2tzLgotICAvLyBUT0RPKGh0dHBzOi8vY3JidWcuY29tL3dlYnJ0Yy85NDgwKTogV2hlbiB3
ZSB1c2Ugc3RyZWFtIElEcyBpbnN0ZWFkCi0gIC8vIG9mIHN0cmVhbXMsIHNlZSBpZiB0aGUgc3Ry
ZWFtIHdhcyByZW1vdmVkIGJ5IGNoZWNraW5nIGlmIHRoaXMgd2FzIHRoZQotICAvLyBsYXN0IHJl
Y2VpdmVyIHdpdGggdGhhdCBzdHJlYW0gSUQuCi0gIGZvciAoY29uc3QgYXV0byYgc3RyZWFtIDog
bWVkaWFfc3RyZWFtcykgewotICAgIGlmIChzdHJlYW0tPkdldEF1ZGlvVHJhY2tzKCkuZW1wdHko
KSAmJiBzdHJlYW0tPkdldFZpZGVvVHJhY2tzKCkuZW1wdHkoKSkgewotICAgICAgcmVtb3RlX3N0
cmVhbXNfLT5SZW1vdmVTdHJlYW0oc3RyZWFtKTsKLSAgICAgIHJlbW92ZWRfc3RyZWFtcy0+cHVz
aF9iYWNrKHN0cmVhbSk7CisgIFJlbW92ZVJlbW90ZVN0cmVhbXNJZkVtcHR5KHByZXZpb3VzX3N0
cmVhbXMsIHJlbW92ZWRfc3RyZWFtcyk7Cit9CisKK3ZvaWQgUGVlckNvbm5lY3Rpb246OlJlbW92
ZVJlbW90ZVN0cmVhbXNJZkVtcHR5KAorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVk
X3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+JiByZW1vdGVfc3RyZWFtcywKKyAgICBzdGQ6
OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRlcmZhY2U+PiogcmVtb3Zl
ZF9zdHJlYW1zKSB7CisgIC8vIFRPRE8oaHR0cHM6Ly9jcmJ1Zy5jb20vd2VicnRjLzk0ODApOiBX
aGVuIHdlIHVzZSBzdHJlYW0gSURzIGluc3RlYWQgb2YKKyAgLy8gc3RyZWFtcywgc2VlIGlmIHRo
ZSBzdHJlYW0gd2FzIHJlbW92ZWQgYnkgY2hlY2tpbmcgaWYgdGhpcyB3YXMgdGhlIGxhc3QKKyAg
Ly8gcmVjZWl2ZXIgd2l0aCB0aGF0IHN0cmVhbSBJRC4KKyAgZm9yIChhdXRvIHJlbW90ZV9zdHJl
YW0gOiByZW1vdGVfc3RyZWFtcykgeworICAgIGlmIChyZW1vdGVfc3RyZWFtLT5HZXRBdWRpb1Ry
YWNrcygpLmVtcHR5KCkgJiYKKyAgICAgICAgcmVtb3RlX3N0cmVhbS0+R2V0VmlkZW9UcmFja3Mo
KS5lbXB0eSgpKSB7CisgICAgICByZW1vdGVfc3RyZWFtc18tPlJlbW92ZVN0cmVhbShyZW1vdGVf
c3RyZWFtKTsKKyAgICAgIHJlbW92ZWRfc3RyZWFtcy0+cHVzaF9iYWNrKHJlbW90ZV9zdHJlYW0p
OwogICAgIH0KICAgfQogfQpAQCAtMzkwOCwyNSArNDAwOCw2IEBAIHZvaWQgUGVlckNvbm5lY3Rp
b246OkdldE9wdGlvbnNGb3JQbGFuQk9mZmVyKAogICAgICAgICAgICAgICAgICAgICAgIG9mZmVy
X2Fuc3dlcl9vcHRpb25zLm51bV9zaW11bGNhc3RfbGF5ZXJzKTsKIH0KIAotLy8gRmluZCBhIG5l
dyBNSUQgdGhhdCBpcyBub3QgYWxyZWFkeSBpbiB8dXNlZF9taWRzfCwgdGhlbiBhZGQgaXQgdG8g
fHVzZWRfbWlkc3wKLS8vIGFuZCByZXR1cm4gYSByZWZlcmVuY2UgdG8gaXQuCi0vLyBHZW5lcmF0
ZWQgTUlEcyBzaG91bGQgYmUgbm8gbW9yZSB0aGFuIDMgYnl0ZXMgbG9uZyB0byB0YWtlIHVwIGxl
c3Mgc3BhY2UgaW4KLS8vIHRoZSBSVFAgcGFja2V0Lgotc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5n
JiBBbGxvY2F0ZU1pZChzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIHVzZWRfbWlkcykgewotICBSVENf
RENIRUNLKHVzZWRfbWlkcyk7Ci0gIC8vIFdlJ3JlIGJvcmluZzoganVzdCBnZW5lcmF0ZSBNSURz
IDAsIDEsIDIsIC4uLgotICBzaXplX3QgaSA9IDA7Ci0gIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPjo6
aXRlcmF0b3IgaXQ7Ci0gIGJvb2wgaW5zZXJ0ZWQ7Ci0gIGRvIHsKLSAgICBzdGQ6OnN0cmluZyBt
aWQgPSBydGM6OlRvU3RyaW5nKGkrKyk7Ci0gICAgYXV0byBpbnNlcnRfcmVzdWx0ID0gdXNlZF9t
aWRzLT5pbnNlcnQobWlkKTsKLSAgICBpdCA9IGluc2VydF9yZXN1bHQuZmlyc3Q7Ci0gICAgaW5z
ZXJ0ZWQgPSBpbnNlcnRfcmVzdWx0LnNlY29uZDsKLSAgfSB3aGlsZSAoIWluc2VydGVkKTsKLSAg
cmV0dXJuICppdDsKLX0KLQogc3RhdGljIGNyaWNrZXQ6Ok1lZGlhRGVzY3JpcHRpb25PcHRpb25z
CiBHZXRNZWRpYURlc2NyaXB0aW9uT3B0aW9uc0ZvclRyYW5zY2VpdmVyKAogICAgIHJ0Yzo6c2Nv
cGVkX3JlZnB0cjxSdHBUcmFuc2NlaXZlclByb3h5V2l0aEludGVybmFsPFJ0cFRyYW5zY2VpdmVy
Pj4KQEAgLTYwODYsNiArNjE2NywyMSBAQCBib29sIFBlZXJDb25uZWN0aW9uOjpIYXNSdGNwTXV4
RW5hYmxlZChjb25zdCBjcmlja2V0OjpDb250ZW50SW5mbyogY29udGVudCkgewogICByZXR1cm4g
Y29udGVudC0+bWVkaWFfZGVzY3JpcHRpb24oKS0+cnRjcF9tdXgoKTsKIH0KIAorc3RhdGljIFJU
Q0Vycm9yIFZhbGlkYXRlTWlkcyhjb25zdCBjcmlja2V0OjpTZXNzaW9uRGVzY3JpcHRpb24mIGRl
c2NyaXB0aW9uKSB7CisgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtaWRzOworICBmb3IgKGNvbnN0
IGNyaWNrZXQ6OkNvbnRlbnRJbmZvJiBjb250ZW50IDogZGVzY3JpcHRpb24uY29udGVudHMoKSkg
eworICAgIGlmIChjb250ZW50Lm5hbWUuZW1wdHkoKSkgeworICAgICAgTE9HX0FORF9SRVRVUk5f
RVJST1IoUlRDRXJyb3JUeXBlOjpJTlZBTElEX1BBUkFNRVRFUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJBIG1lZGlhIHNlY3Rpb24gaXMgbWlzc2luZyBhIE1JRCBhdHRyaWJ1dGUuIik7
CisgICAgfQorICAgIGlmICghbWlkcy5pbnNlcnQoY29udGVudC5uYW1lKS5zZWNvbmQpIHsKKyAg
ICAgIExPR19BTkRfUkVUVVJOX0VSUk9SKFJUQ0Vycm9yVHlwZTo6SU5WQUxJRF9QQVJBTUVURVIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAiRHVwbGljYXRlIGE9bWlkIHZhbHVlICciICsg
Y29udGVudC5uYW1lICsgIicuIik7CisgICAgfQorICB9CisgIHJldHVybiBSVENFcnJvcjo6T0so
KTsKK30KKwogUlRDRXJyb3IgUGVlckNvbm5lY3Rpb246OlZhbGlkYXRlU2Vzc2lvbkRlc2NyaXB0
aW9uKAogICAgIGNvbnN0IFNlc3Npb25EZXNjcmlwdGlvbkludGVyZmFjZSogc2Rlc2MsCiAgICAg
Y3JpY2tldDo6Q29udGVudFNvdXJjZSBzb3VyY2UpIHsKQEAgLTYxMDUsNiArNjIwMSwxMSBAQCBS
VENFcnJvciBQZWVyQ29ubmVjdGlvbjo6VmFsaWRhdGVTZXNzaW9uRGVzY3JpcHRpb24oCiAgICAg
ICAgICJDYWxsZWQgaW4gd3Jvbmcgc3RhdGU6ICIgKyBHZXRTaWduYWxpbmdTdGF0ZVN0cmluZyhz
aWduYWxpbmdfc3RhdGUoKSkpOwogICB9CiAKKyAgUlRDRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZU1p
ZHMoKnNkZXNjLT5kZXNjcmlwdGlvbigpKTsKKyAgaWYgKCFlcnJvci5vaygpKSB7CisgICAgcmV0
dXJuIGVycm9yOworICB9CisKICAgLy8gVmVyaWZ5IGNyeXB0byBzZXR0aW5ncy4KICAgc3RkOjpz
dHJpbmcgY3J5cHRvX2Vycm9yOwogICBpZiAod2VicnRjX3Nlc3Npb25fZGVzY19mYWN0b3J5Xy0+
U2Rlc1BvbGljeSgpID09IGNyaWNrZXQ6OlNFQ19SRVFVSVJFRCB8fApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJjb25u
ZWN0aW9uLmgKaW5kZXggMTgxMGYxYzJiY2QyNmUzMjhiNmY4NWVhYmM3OGEzOGNmMGRmNTVjOC4u
NmQ3NTg0ZDRlNWZkMDQ3MTg1MTQwYTIxNTA2NTU2YmMwMjQwNmU2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVy
Y29ubmVjdGlvbi5oCkBAIC00NzIsNiArNDcyLDE0IEBAIGNsYXNzIFBlZXJDb25uZWN0aW9uIDog
cHVibGljIFBlZXJDb25uZWN0aW9uSW50ZXJuYWwsCiAgICAgICAgICAgdHJhbnNjZWl2ZXIsCiAg
ICAgICBjb25zdCBTZXNzaW9uRGVzY3JpcHRpb25JbnRlcmZhY2UqIHNkZXNjKSBjb25zdDsKIAor
ICAvLyBSdW5zIHRoZSBhbGdvcml0aG0gKipzZXQgdGhlIGFzc29jaWF0ZWQgcmVtb3RlIHN0cmVh
bXMqKiBzcGVjaWZpZWQgaW4KKyAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYnJ0Yy1wYy8j
c2V0LWFzc29jaWF0ZWQtcmVtb3RlLXN0cmVhbXMuCisgIHZvaWQgU2V0QXNzb2NpYXRlZFJlbW90
ZVN0cmVhbXMoCisgICAgICBydGM6OnNjb3BlZF9yZWZwdHI8UnRwUmVjZWl2ZXJJbnRlcm5hbD4g
cmVjZWl2ZXIsCisgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIHN0cmVhbV9p
ZHMsCisgICAgICBzdGQ6OnZlY3RvcjxydGM6OnNjb3BlZF9yZWZwdHI8TWVkaWFTdHJlYW1JbnRl
cmZhY2U+PiogYWRkZWRfc3RyZWFtcywKKyAgICAgIHN0ZDo6dmVjdG9yPHJ0Yzo6c2NvcGVkX3Jl
ZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+KiByZW1vdmVkX3N0cmVhbXMpOworCiAgIC8vIFJ1
bnMgdGhlIGFsZ29yaXRobSAqKnByb2Nlc3MgdGhlIHJlbW92YWwgb2YgYSByZW1vdGUgdHJhY2sq
KiBzcGVjaWZpZWQgaW4KICAgLy8gdGhlIFdlYlJUQyBzcGVjaWZpY2F0aW9uLgogICAvLyBUaGlz
IG1ldGhvZCB3aWxsIHVwZGF0ZSB0aGUgZm9sbG93aW5nIGxpc3RzOgpAQCAtNDg2LDYgKzQ5NCwx
MSBAQCBjbGFzcyBQZWVyQ29ubmVjdGlvbiA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkludGVybmFs
LAogICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPFJ0cFRyYW5zY2VpdmVySW50
ZXJmYWNlPj4qIHJlbW92ZV9saXN0LAogICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVm
cHRyPE1lZGlhU3RyZWFtSW50ZXJmYWNlPj4qIHJlbW92ZWRfc3RyZWFtcyk7CiAKKyAgdm9pZCBS
ZW1vdmVSZW1vdGVTdHJlYW1zSWZFbXB0eSgKKyAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHJ0Yzo6
c2NvcGVkX3JlZnB0cjxNZWRpYVN0cmVhbUludGVyZmFjZT4+JgorICAgICAgICAgIHJlbW90ZV9z
dHJlYW1zLAorICAgICAgc3RkOjp2ZWN0b3I8cnRjOjpzY29wZWRfcmVmcHRyPE1lZGlhU3RyZWFt
SW50ZXJmYWNlPj4qIHJlbW92ZWRfc3RyZWFtcyk7CisKICAgdm9pZCBPbk5lZ290aWF0aW9uTmVl
ZGVkKCk7CiAKICAgYm9vbCBJc0Nsb3NlZCgpIGNvbnN0IHsKQEAgLTY0OSw2ICs2NjIsMTIgQEAg
Y2xhc3MgUGVlckNvbm5lY3Rpb24gOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25JbnRlcm5hbCwKICAg
ICByZXR1cm4gY29uZmlndXJhdGlvbl8uc2RwX3NlbWFudGljcyA9PSBTZHBTZW1hbnRpY3M6OmtV
bmlmaWVkUGxhbjsKICAgfQogCisgIC8vIFRoZSBvZmZlci9hbnN3ZXIgbWFjaGluZXJ5IGFzc3Vt
ZXMgdGhlIG1lZGlhIHNlY3Rpb24gTUlEIGlzIHByZXNlbnQgYW5kCisgIC8vIHVuaXF1ZS4gVG8g
c3VwcG9ydCBsZWdhY3kgZW5kIHBvaW50cyB0aGF0IGRvIG5vdCBzdXBwbHkgYT1taWQgbGluZXMs
IHRoaXMKKyAgLy8gbWV0aG9kIHdpbGwgbW9kaWZ5IHRoZSBzZXNzaW9uIGRlc2NyaXB0aW9uIHRv
IGFkZCBNSURzIGdlbmVyYXRlZCBhY2NvcmRpbmcKKyAgLy8gdG8gdGhlIFNEUCBzZW1hbnRpY3Mu
CisgIHZvaWQgRmlsbEluTWlzc2luZ1JlbW90ZU1pZHMoY3JpY2tldDo6U2Vzc2lvbkRlc2NyaXB0
aW9uKiByZW1vdGVfZGVzY3JpcHRpb24pOworCiAgIC8vIElzIHRoZXJlIGFuIFJ0cFNlbmRlciBv
ZiB0aGUgZ2l2ZW4gdHlwZT8KICAgYm9vbCBIYXNSdHBTZW5kZXIoY3JpY2tldDo6TWVkaWFUeXBl
IHR5cGUpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9qc2VwX3VuaXR0ZXN0LmNjIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fanNl
cF91bml0dGVzdC5jYwppbmRleCBmMGM5MTExODg1Y2E3YjI5NTc3MWQ2YWI5MjcwMmEyNDRjNDYy
MjcxLi43YTA0NDc0Nzg3NmE1ZWRiMWZhNDYwMWU1ZDUzNGMyNDliNzFhNzY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVj
dGlvbl9qc2VwX3VuaXR0ZXN0LmNjCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX2pzZXBfdW5pdHRlc3QuY2MKQEAgLTE2MDQs
NCArMTYwNCwxMTAgQEAgVEVTVF9GKFBlZXJDb25uZWN0aW9uSnNlcFRlc3QsIE9uZVZpZGVvVW5p
ZmllZFBsYW5Ub1R3b1ZpZGVvUGxhbkJGYWlscykgewogICBFWFBFQ1RfRVEoUlRDRXJyb3JUeXBl
OjpJTlZBTElEX1BBUkFNRVRFUiwgZXJyb3IudHlwZSgpKTsKIH0KIAorLy8gUmVtb3ZlcyB0aGUg
UlRQIGhlYWRlciBleHRlbnNpb24gYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBVUkkgZnJvbSB0
aGUgbWVkaWEKKy8vIGRlc2NyaXB0aW9uLgorc3RhdGljIHZvaWQgUmVtb3ZlUnRwSGVhZGVyRXh0
ZW5zaW9uQnlVcmkoCisgICAgTWVkaWFDb250ZW50RGVzY3JpcHRpb24qIG1lZGlhX2Rlc2NyaXB0
aW9uLAorICAgIGFic2w6OnN0cmluZ192aWV3IHVyaSkgeworICBzdGQ6OnZlY3RvcjxSdHBFeHRl
bnNpb24+IGhlYWRlcl9leHRlbnNpb25zID0KKyAgICAgIG1lZGlhX2Rlc2NyaXB0aW9uLT5ydHBf
aGVhZGVyX2V4dGVuc2lvbnMoKTsKKyAgaGVhZGVyX2V4dGVuc2lvbnMuZXJhc2Uoc3RkOjpyZW1v
dmVfaWYoCisgICAgICBoZWFkZXJfZXh0ZW5zaW9ucy5iZWdpbigpLCBoZWFkZXJfZXh0ZW5zaW9u
cy5lbmQoKSwKKyAgICAgIFt1cmldKGNvbnN0IFJ0cEV4dGVuc2lvbiYgZXh0ZW5zaW9uKSB7IHJl
dHVybiBleHRlbnNpb24udXJpID09IHVyaTsgfSkpOworICBtZWRpYV9kZXNjcmlwdGlvbi0+c2V0
X3J0cF9oZWFkZXJfZXh0ZW5zaW9ucyhoZWFkZXJfZXh0ZW5zaW9ucyk7Cit9CisKKy8vIFRyYW5z
Zm9ybXMgYSBzZXNzaW9uIGRlc2NyaXB0aW9uIHRvIGVtdWxhdGUgYSBsZWdhY3kgZW5kcG9pbnQg
d2hpY2ggZG9lcyBub3QKKy8vIHN1cHBvcnQgYT1taWQsIEJVTkRMRSwgYW5kIHRoZSBNSUQgaGVh
ZGVyIGV4dGVuc2lvbi4KK3N0YXRpYyB2b2lkIENsZWFyTWlkcyhTZXNzaW9uRGVzY3JpcHRpb25J
bnRlcmZhY2UqIHNkZXNjKSB7CisgIGNyaWNrZXQ6OlNlc3Npb25EZXNjcmlwdGlvbiogZGVzYyA9
IHNkZXNjLT5kZXNjcmlwdGlvbigpOworICBkZXNjLT5SZW1vdmVHcm91cEJ5TmFtZShjcmlja2V0
OjpHUk9VUF9UWVBFX0JVTkRMRSk7CisgIGNyaWNrZXQ6OkNvbnRlbnRJbmZvKiBhdWRpb19jb250
ZW50ID0gY3JpY2tldDo6R2V0Rmlyc3RBdWRpb0NvbnRlbnQoZGVzYyk7CisgIGlmIChhdWRpb19j
b250ZW50KSB7CisgICAgZGVzYy0+R2V0VHJhbnNwb3J0SW5mb0J5TmFtZShhdWRpb19jb250ZW50
LT5uYW1lKS0+Y29udGVudF9uYW1lID0gIiI7CisgICAgYXVkaW9fY29udGVudC0+bmFtZSA9ICIi
OworICAgIFJlbW92ZVJ0cEhlYWRlckV4dGVuc2lvbkJ5VXJpKGF1ZGlvX2NvbnRlbnQtPm1lZGlh
X2Rlc2NyaXB0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnRwRXh0
ZW5zaW9uOjprTWlkVXJpKTsKKyAgfQorICBjcmlja2V0OjpDb250ZW50SW5mbyogdmlkZW9fY29u
dGVudCA9IGNyaWNrZXQ6OkdldEZpcnN0VmlkZW9Db250ZW50KGRlc2MpOworICBpZiAodmlkZW9f
Y29udGVudCkgeworICAgIGRlc2MtPkdldFRyYW5zcG9ydEluZm9CeU5hbWUodmlkZW9fY29udGVu
dC0+bmFtZSktPmNvbnRlbnRfbmFtZSA9ICIiOworICAgIHZpZGVvX2NvbnRlbnQtPm5hbWUgPSAi
IjsKKyAgICBSZW1vdmVSdHBIZWFkZXJFeHRlbnNpb25CeVVyaSh2aWRlb19jb250ZW50LT5tZWRp
YV9kZXNjcmlwdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ0cEV4
dGVuc2lvbjo6a01pZFVyaSk7CisgIH0KK30KKworLy8gVGVzdCB0aGF0IG5lZ290aWF0aW9uIHdv
cmtzIHdpdGggbGVnYWN5IGVuZHBvaW50cyB3aGljaCBkbyBub3Qgc3VwcG9ydCBhPW1pZC4KK1RF
U1RfRihQZWVyQ29ubmVjdGlvbkpzZXBUZXN0LCBMZWdhY3lOb01pZEF1ZGlvT25seU9mZmVyKSB7
CisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgY2FsbGVyLT5BZGRB
dWRpb1RyYWNrKCJhdWRpbyIpOworICBhdXRvIGNhbGxlZSA9IENyZWF0ZVBlZXJDb25uZWN0aW9u
KCk7CisgIGNhbGxlZS0+QWRkQXVkaW9UcmFjaygiYXVkaW8iKTsKKworICBhdXRvIG9mZmVyID0g
Y2FsbGVyLT5DcmVhdGVPZmZlcigpOworICBDbGVhck1pZHMob2ZmZXIuZ2V0KCkpOworCisgIEFT
U0VSVF9UUlVFKGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24oc3RkOjptb3ZlKG9mZmVyKSkp
OworICBFWFBFQ1RfVFJVRShjYWxsZWUtPlNldExvY2FsRGVzY3JpcHRpb24oY2FsbGVlLT5DcmVh
dGVBbnN3ZXIoKSkpOworfQorVEVTVF9GKFBlZXJDb25uZWN0aW9uSnNlcFRlc3QsIExlZ2FjeU5v
TWlkQXVkaW9WaWRlb09mZmVyKSB7CisgIGF1dG8gY2FsbGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rp
b24oKTsKKyAgY2FsbGVyLT5BZGRBdWRpb1RyYWNrKCJhdWRpbyIpOworICBjYWxsZXItPkFkZFZp
ZGVvVHJhY2soInZpZGVvIik7CisgIGF1dG8gY2FsbGVlID0gQ3JlYXRlUGVlckNvbm5lY3Rpb24o
KTsKKyAgY2FsbGVlLT5BZGRBdWRpb1RyYWNrKCJhdWRpbyIpOworICBjYWxsZWUtPkFkZFZpZGVv
VHJhY2soInZpZGVvIik7CisKKyAgYXV0byBvZmZlciA9IGNhbGxlci0+Q3JlYXRlT2ZmZXIoKTsK
KyAgQ2xlYXJNaWRzKG9mZmVyLmdldCgpKTsKKworICBBU1NFUlRfVFJVRShjYWxsZWUtPlNldFJl
bW90ZURlc2NyaXB0aW9uKHN0ZDo6bW92ZShvZmZlcikpKTsKKyAgRVhQRUNUX1RSVUUoY2FsbGVl
LT5TZXRMb2NhbERlc2NyaXB0aW9uKGNhbGxlZS0+Q3JlYXRlQW5zd2VyKCkpKTsKK30KK1RFU1Rf
RihQZWVyQ29ubmVjdGlvbkpzZXBUZXN0LCBMZWdhY3lOb01pZEF1ZGlvT25seUFuc3dlcikgewor
ICBhdXRvIGNhbGxlciA9IENyZWF0ZVBlZXJDb25uZWN0aW9uKCk7CisgIGNhbGxlci0+QWRkQXVk
aW9UcmFjaygiYXVkaW8iKTsKKyAgYXV0byBjYWxsZWUgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigp
OworICBjYWxsZWUtPkFkZEF1ZGlvVHJhY2soImF1ZGlvIik7CisKKyAgQVNTRVJUX1RSVUUoY2Fs
bGVlLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyQW5kU2V0QXNMb2Nh
bCgpKSk7CisKKyAgYXV0byBhbnN3ZXIgPSBjYWxsZWUtPkNyZWF0ZUFuc3dlcigpOworICBDbGVh
ck1pZHMoYW5zd2VyLmdldCgpKTsKKworICBFWFBFQ1RfVFJVRShjYWxsZXItPlNldFJlbW90ZURl
c2NyaXB0aW9uKHN0ZDo6bW92ZShhbnN3ZXIpKSk7Cit9CitURVNUX0YoUGVlckNvbm5lY3Rpb25K
c2VwVGVzdCwgTGVnYWN5Tm9NaWRBdWRpb1ZpZGVvQW5zd2VyKSB7CisgIGF1dG8gY2FsbGVyID0g
Q3JlYXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgY2FsbGVyLT5BZGRBdWRpb1RyYWNrKCJhdWRpbyIp
OworICBjYWxsZXItPkFkZFZpZGVvVHJhY2soInZpZGVvIik7CisgIGF1dG8gY2FsbGVlID0gQ3Jl
YXRlUGVlckNvbm5lY3Rpb24oKTsKKyAgY2FsbGVlLT5BZGRBdWRpb1RyYWNrKCJhdWRpbyIpOwor
ICBjYWxsZWUtPkFkZFZpZGVvVHJhY2soInZpZGVvIik7CisKKyAgQVNTRVJUX1RSVUUoY2FsbGVl
LT5TZXRSZW1vdGVEZXNjcmlwdGlvbihjYWxsZXItPkNyZWF0ZU9mZmVyQW5kU2V0QXNMb2NhbCgp
KSk7CisKKyAgYXV0byBhbnN3ZXIgPSBjYWxsZWUtPkNyZWF0ZUFuc3dlcigpOworICBDbGVhck1p
ZHMoYW5zd2VyLmdldCgpKTsKKworICBBU1NFUlRfVFJVRShjYWxsZXItPlNldFJlbW90ZURlc2Ny
aXB0aW9uKHN0ZDo6bW92ZShhbnN3ZXIpKSk7Cit9CisKKy8vIFRlc3QgdGhhdCBTZXRMb2NhbERl
c2NyaXB0aW9uIGZhaWxzIGlmIGE9bWlkIGxpbmVzIGFyZSBtaXNzaW5nLgorVEVTVF9GKFBlZXJD
b25uZWN0aW9uSnNlcFRlc3QsIFNldExvY2FsRGVzY3JpcHRpb25GYWlsc01pc3NpbmdNaWQpIHsK
KyAgYXV0byBjYWxsZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigpOworICBjYWxsZXItPkFkZEF1
ZGlvVHJhY2soImF1ZGlvIik7CisKKyAgYXV0byBvZmZlciA9IGNhbGxlci0+Q3JlYXRlT2ZmZXIo
KTsKKyAgQ2xlYXJNaWRzKG9mZmVyLmdldCgpKTsKKworICBzdGQ6OnN0cmluZyBlcnJvcjsKKyAg
QVNTRVJUX0ZBTFNFKGNhbGxlci0+U2V0TG9jYWxEZXNjcmlwdGlvbihzdGQ6Om1vdmUob2ZmZXIp
LCAmZXJyb3IpKTsKKyAgRVhQRUNUX0VRKAorICAgICAgIkZhaWxlZCB0byBzZXQgbG9jYWwgb2Zm
ZXIgc2RwOiBBIG1lZGlhIHNlY3Rpb24gaXMgbWlzc2luZyBhIE1JRCAiCisgICAgICAiYXR0cmli
dXRlLiIsCisgICAgICBlcnJvcik7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3BlZXJj
b25uZWN0aW9uX21lZGlhX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fbWVkaWFfdW5pdHRlc3QuY2MKaW5kZXgg
NmFmMGM5ODg3ZTZlMmRmZTRhMWMwN2NhZDIyMGViZDEyMGU1NjQ4Ni4uMjVhZWE5ODI4NDk3ZWMx
MGU5YzQyNTYxMDZjMzM3YTk4YjA4ZTc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fbWVkaWFfdW5pdHRlc3Qu
Y2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVl
cmNvbm5lY3Rpb25fbWVkaWFfdW5pdHRlc3QuY2MKQEAgLTEwODQsNiArMTA4NCwyMiBAQCBURVNU
X1AoUGVlckNvbm5lY3Rpb25NZWRpYVRlc3QsIFJlT2ZmZXJIYXNTYW1lTWlkc0FzRmlyc3RPZmZl
cikgewogICAgICAgICAgICAgY3JpY2tldDo6R2V0Rmlyc3RWaWRlb0NvbnRlbnQocmVvZmZlci0+
ZGVzY3JpcHRpb24oKSktPm5hbWUpOwogfQogCisvLyBUZXN0IHRoYXQgU2V0UmVtb3RlRGVzY3Jp
cHRpb24gcmV0dXJucyBhbiBlcnJvciBpZiB0aGVyZSBhcmUgdHdvIG09IHNlY3Rpb25zCisvLyB3
aXRoIHRoZSBzYW1lIE1JRCB2YWx1ZS4KK1RFU1RfUChQZWVyQ29ubmVjdGlvbk1lZGlhVGVzdCwg
U2V0UmVtb3RlRGVzY3JpcHRpb25GYWlsc1dpdGhEdXBsaWNhdGVNaWRzKSB7CisgIGF1dG8gY2Fs
bGVyID0gQ3JlYXRlUGVlckNvbm5lY3Rpb25XaXRoQXVkaW9WaWRlbygpOworICBhdXRvIGNhbGxl
ZSA9IENyZWF0ZVBlZXJDb25uZWN0aW9uV2l0aEF1ZGlvVmlkZW8oKTsKKworICBhdXRvIG9mZmVy
ID0gY2FsbGVyLT5DcmVhdGVPZmZlcigpOworICBSZW5hbWVDb250ZW50KG9mZmVyLT5kZXNjcmlw
dGlvbigpLCBjcmlja2V0OjpNRURJQV9UWVBFX0FVRElPLCAic2FtZSIpOworICBSZW5hbWVDb250
ZW50KG9mZmVyLT5kZXNjcmlwdGlvbigpLCBjcmlja2V0OjpNRURJQV9UWVBFX1ZJREVPLCAic2Ft
ZSIpOworCisgIHN0ZDo6c3RyaW5nIGVycm9yOworICBFWFBFQ1RfRkFMU0UoY2FsbGVlLT5TZXRS
ZW1vdGVEZXNjcmlwdGlvbihzdGQ6Om1vdmUob2ZmZXIpLCAmZXJyb3IpKTsKKyAgRVhQRUNUX0VR
KGVycm9yLAorICAgICAgICAgICAgIkZhaWxlZCB0byBzZXQgcmVtb3RlIG9mZmVyIHNkcDogRHVw
bGljYXRlIGE9bWlkIHZhbHVlICdzYW1lJy4iKTsKK30KKwogVEVTVF9QKFBlZXJDb25uZWN0aW9u
TWVkaWFUZXN0LAogICAgICAgIENvbWJpbmVkQXVkaW9WaWRlb0J3ZUNvbmZpZ1Byb3BhZ2F0ZWRU
b01lZGlhRW5naW5lKSB7CiAgIFJUQ0NvbmZpZ3VyYXRpb24gY29uZmlnOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvcGVlcmNvbm5lY3Rp
b25fcnRwX3VuaXR0ZXN0LmNjIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93
ZWJydGMvcGMvcGVlcmNvbm5lY3Rpb25fcnRwX3VuaXR0ZXN0LmNjCmluZGV4IDcwOTg0NzBiYWFl
ZWU5OGQwZTc0YTZmYzcwNzRhODc2MTFmOTU5NmIuLjBiMTg1OWFiNzIzYzBkNDUwMTc1NjZlYTAx
ZmNmZTQyMTg2Njk3YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3BjL3BlZXJjb25uZWN0aW9uX3J0cF91bml0dGVzdC5jYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9wZWVyY29ubmVjdGlvbl9y
dHBfdW5pdHRlc3QuY2MKQEAgLTQ1NSw2ICs0NTUsMzMgQEAgVEVTVF9GKFBlZXJDb25uZWN0aW9u
UnRwVGVzdFVuaWZpZWRQbGFuLAogICBFWFBFQ1RfRVEoMXUsIGNhbGxlZS0+b2JzZXJ2ZXIoKS0+
cmVtb3ZlX3RyYWNrX2V2ZW50c18uc2l6ZSgpKTsKIH0KIAorVEVTVF9GKFBlZXJDb25uZWN0aW9u
UnRwVGVzdFVuaWZpZWRQbGFuLCBDaGFuZ2VNc2lkV2hpbGVSZWNlaXZpbmcpIHsKKyAgYXV0byBj
YWxsZXIgPSBDcmVhdGVQZWVyQ29ubmVjdGlvbigpOworICBjYWxsZXItPkFkZEF1ZGlvVHJhY2so
ImF1ZGlvX3RyYWNrIiwgeyJzdHJlYW0xIn0pOworICBhdXRvIGNhbGxlZSA9IENyZWF0ZVBlZXJD
b25uZWN0aW9uKCk7CisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0UmVtb3RlRGVzY3JpcHRpb24o
Y2FsbGVyLT5DcmVhdGVPZmZlcigpKSk7CisKKyAgQVNTRVJUX0VRKDF1LCBjYWxsZWUtPm9ic2Vy
dmVyKCktPm9uX3RyYWNrX3RyYW5zY2VpdmVyc18uc2l6ZSgpKTsKKyAgYXV0byB0cmFuc2NlaXZl
ciA9IGNhbGxlZS0+b2JzZXJ2ZXIoKS0+b25fdHJhY2tfdHJhbnNjZWl2ZXJzX1swXTsKKyAgQVNT
RVJUX0VRKDF1LCB0cmFuc2NlaXZlci0+cmVjZWl2ZXIoKS0+c3RyZWFtcygpLnNpemUoKSk7Cisg
IEVYUEVDVF9FUSgic3RyZWFtMSIsIHRyYW5zY2VpdmVyLT5yZWNlaXZlcigpLT5zdHJlYW1zKClb
MF0tPmlkKCkpOworCisgIEFTU0VSVF9UUlVFKGNhbGxlZS0+U2V0TG9jYWxEZXNjcmlwdGlvbihj
YWxsZWUtPkNyZWF0ZUFuc3dlcigpKSk7CisKKyAgLy8gQ2hhbmdlIHRoZSBzdHJlYW0gSUQgaW4g
dGhlIG9mZmVyLgorICAvLyBUT0RPKGh0dHBzOi8vY3JidWcuY29tL3dlYnJ0Yy8xMDEyOSk6IFdo
ZW4gUnRwU2VuZGVySW50ZXJmYWNlOjpTZXRTdHJlYW1zCisgIC8vIGlzIHN1cHBvcnRlZCwgdGhp
cyBjYW4gdXNlIHRoYXQgaW5zdGVhZCBvZiBtdW5naW5nIHRoZSBTRFAuCisgIGF1dG8gb2ZmZXIg
PSBjYWxsZXItPkNyZWF0ZU9mZmVyKCk7CisgIGF1dG8gY29udGVudHMgPSBvZmZlci0+ZGVzY3Jp
cHRpb24oKS0+Y29udGVudHMoKTsKKyAgQVNTRVJUX0VRKDF1LCBjb250ZW50cy5zaXplKCkpOwor
ICBhdXRvJiBzdHJlYW1fcGFyYW1zID0gY29udGVudHNbMF0ubWVkaWFfZGVzY3JpcHRpb24oKS0+
bXV0YWJsZV9zdHJlYW1zKCk7CisgIEFTU0VSVF9FUSgxdSwgc3RyZWFtX3BhcmFtcy5zaXplKCkp
OworICBzdHJlYW1fcGFyYW1zWzBdLnNldF9zdHJlYW1faWRzKHsic3RyZWFtMiJ9KTsKKyAgQVNT
RVJUX1RSVUUoY2FsbGVlLT5TZXRSZW1vdGVEZXNjcmlwdGlvbihzdGQ6Om1vdmUob2ZmZXIpKSk7
CisgIEFTU0VSVF9FUSgxdSwgdHJhbnNjZWl2ZXItPnJlY2VpdmVyKCktPnN0cmVhbXMoKS5zaXpl
KCkpOworICBFWFBFQ1RfRVEoInN0cmVhbTIiLCB0cmFuc2NlaXZlci0+cmVjZWl2ZXIoKS0+c3Ry
ZWFtcygpWzBdLT5pZCgpKTsKK30KKwogLy8gVGhlc2UgdGVzdHMgZXhhbWluZSB0aGUgc3RhdGUg
b2YgdGhlIHBlZXIgY29ubmVjdGlvbiBhcyBhIHJlc3VsdCBvZgogLy8gcGVyZm9ybWluZyBTZXRS
ZW1vdGVEZXNjcmlwdGlvbigpLgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb24uY2MgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy9zZXNzaW9uZGVzY3JpcHRpb24uY2MK
aW5kZXggM2E5YjE4ZWU2OTE5YjM3ZmY1OTQwZWU2MDY0ZWNjYjdiNDZhOGQ0ZC4uMzM0NjAxMmRi
YjAzM2JmMWE0MTgxZDkyMjU1ZmMzZmYzMWU1Zjg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmNjCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25k
ZXNjcmlwdGlvbi5jYwpAQCAtMTk2LDEyICsxOTYsOCBAQCBib29sIFNlc3Npb25EZXNjcmlwdGlv
bjo6UmVtb3ZlQ29udGVudEJ5TmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkgewogICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgU2Vzc2lvbkRlc2NyaXB0aW9uOjpBZGRUcmFuc3BvcnRJbmZv
KGNvbnN0IFRyYW5zcG9ydEluZm8mIHRyYW5zcG9ydF9pbmZvKSB7Ci0gIGlmIChHZXRUcmFuc3Bv
cnRJbmZvQnlOYW1lKHRyYW5zcG9ydF9pbmZvLmNvbnRlbnRfbmFtZSkgIT0gTlVMTCkgewotICAg
IHJldHVybiBmYWxzZTsKLSAgfQordm9pZCBTZXNzaW9uRGVzY3JpcHRpb246OkFkZFRyYW5zcG9y
dEluZm8oY29uc3QgVHJhbnNwb3J0SW5mbyYgdHJhbnNwb3J0X2luZm8pIHsKICAgdHJhbnNwb3J0
X2luZm9zXy5wdXNoX2JhY2sodHJhbnNwb3J0X2luZm8pOwotICByZXR1cm4gdHJ1ZTsKIH0KIAog
Ym9vbCBTZXNzaW9uRGVzY3JpcHRpb246OlJlbW92ZVRyYW5zcG9ydEluZm9CeU5hbWUoY29uc3Qg
c3RkOjpzdHJpbmcmIG5hbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3Nlc3Npb25kZXNjcmlwdGlvbi5oIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgKaW5k
ZXggMzgyOTE0ODRjZDhjYjRlODg4ODczN2E3OGQ2YjBmODIxNTRlODBmNC4uM2E5OGRjZWIyOTcy
OGVmMDhjMGYyMGFjMDQ2NjRiMGE4OTVhNmJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2NyaXB0aW9uLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvc2Vzc2lvbmRlc2Ny
aXB0aW9uLmgKQEAgLTQ0Nyw4ICs0NDcsNyBAQCBjbGFzcyBTZXNzaW9uRGVzY3JpcHRpb24gewog
ICAgIHRyYW5zcG9ydF9pbmZvc18gPSB0cmFuc3BvcnRfaW5mb3M7CiAgIH0KICAgLy8gQWRkcyBh
IFRyYW5zcG9ydEluZm8gdG8gdGhpcyBkZXNjcmlwdGlvbi4KLSAgLy8gUmV0dXJucyBmYWxzZSBp
ZiBhIFRyYW5zcG9ydEluZm8gd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLgotICBi
b29sIEFkZFRyYW5zcG9ydEluZm8oY29uc3QgVHJhbnNwb3J0SW5mbyYgdHJhbnNwb3J0X2luZm8p
OworICB2b2lkIEFkZFRyYW5zcG9ydEluZm8oY29uc3QgVHJhbnNwb3J0SW5mbyYgdHJhbnNwb3J0
X2luZm8pOwogICBib29sIFJlbW92ZVRyYW5zcG9ydEluZm9CeU5hbWUoY29uc3Qgc3RkOjpzdHJp
bmcmIG5hbWUpOwogCiAgIC8vIEdyb3VwIGFjY2Vzc29ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcC5jYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcC5jYwppbmRl
eCAwY2Q2YmVjZWVmYTM3N2RmZmU3ZjkzNGI5ZTViOTY2MzUwNDZjNTQ1Li4wY2FhYTEyMGJhYTJk
MzM4ZTk0NjZjNTM3MTVmMjg4MDZhYTU3YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHAuY2MKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMvd2VicnRjc2RwLmNjCkBAIC0yMzYz
LDIwICsyMzYzLDYgQEAgc3RhdGljIEMqIFBhcnNlQ29udGVudERlc2NyaXB0aW9uKGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dmVjdG9yPEpzZXBJY2VDYW5kaWRhdGUqPiogY2FuZGlkYXRlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWJydGM6OlNkcFBhcnNlRXJyb3IqIGVycm9yKSB7CiAgIEMq
IG1lZGlhX2Rlc2MgPSBuZXcgQygpOwotICBzd2l0Y2ggKG1lZGlhX3R5cGUpIHsKLSAgICBjYXNl
IGNyaWNrZXQ6Ok1FRElBX1RZUEVfQVVESU86Ci0gICAgICAqY29udGVudF9uYW1lID0gY3JpY2tl
dDo6Q05fQVVESU87Ci0gICAgICBicmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVf
VklERU86Ci0gICAgICAqY29udGVudF9uYW1lID0gY3JpY2tldDo6Q05fVklERU87Ci0gICAgICBi
cmVhazsKLSAgICBjYXNlIGNyaWNrZXQ6Ok1FRElBX1RZUEVfREFUQToKLSAgICAgICpjb250ZW50
X25hbWUgPSBjcmlja2V0OjpDTl9EQVRBOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAg
ICAgIFJUQ19OT1RSRUFDSEVEKCk7Ci0gICAgICBicmVhazsKLSAgfQogICBpZiAoIVBhcnNlQ29u
dGVudChtZXNzYWdlLCBtZWRpYV90eXBlLCBtbGluZV9pbmRleCwgcHJvdG9jb2wsIHBheWxvYWRf
dHlwZXMsCiAgICAgICAgICAgICAgICAgICAgIHBvcywgY29udGVudF9uYW1lLCBidW5kbGVfb25s
eSwgbXNpZF9zaWduYWxpbmcsIG1lZGlhX2Rlc2MsCiAgICAgICAgICAgICAgICAgICAgIHRyYW5z
cG9ydCwgY2FuZGlkYXRlcywgZXJyb3IpKSB7CkBAIC0yNTU5LDE0ICsyNTQ1LDcgQEAgYm9vbCBQ
YXJzZU1lZGlhRGVzY3JpcHRpb24oY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IE1lZGlhUHJvdG9jb2xUeXBlOjpr
UnRwLAogICAgICAgICAgICAgICAgICAgICAgY29udGVudF9yZWplY3RlZCwgYnVuZGxlX29ubHks
IGNvbnRlbnQucmVsZWFzZSgpKTsKICAgICAvLyBDcmVhdGUgVHJhbnNwb3J0SW5mbyB3aXRoIHRo
ZSBtZWRpYSBsZXZlbCAiaWNlLXB3ZCIgYW5kICJpY2UtdWZyYWciLgotICAgIFRyYW5zcG9ydElu
Zm8gdHJhbnNwb3J0X2luZm8oY29udGVudF9uYW1lLCB0cmFuc3BvcnQpOwotCi0gICAgaWYgKCFk
ZXNjLT5BZGRUcmFuc3BvcnRJbmZvKHRyYW5zcG9ydF9pbmZvKSkgewotICAgICAgcnRjOjpTdHJp
bmdCdWlsZGVyIGRlc2NyaXB0aW9uOwotICAgICAgZGVzY3JpcHRpb24gPDwgIkZhaWxlZCB0byBB
ZGRUcmFuc3BvcnRJbmZvIHdpdGggY29udGVudCBuYW1lOiAiCi0gICAgICAgICAgICAgICAgICA8
PCBjb250ZW50X25hbWU7Ci0gICAgICByZXR1cm4gUGFyc2VGYWlsZWQoIiIsIGRlc2NyaXB0aW9u
LnN0cigpLCBlcnJvcik7Ci0gICAgfQorICAgIGRlc2MtPkFkZFRyYW5zcG9ydEluZm8oVHJhbnNw
b3J0SW5mbyhjb250ZW50X25hbWUsIHRyYW5zcG9ydCkpOwogICB9CiAKICAgZGVzYy0+c2V0X21z
aWRfc2lnbmFsaW5nKG1zaWRfc2lnbmFsaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcF91bml0dGVzdC5jYyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3BjL3dlYnJ0Y3NkcF91bml0
dGVzdC5jYwppbmRleCA2Nzc1OTU3NDk4ZmQ5Y2YyMGQ4MTQyYmZiMjE5YTI2Nzk2MmUwYzkyLi5m
ZjdmOTAzYWFiYTAwMjZlNmViY2M1MTQ4OGY3NmU5NDczODJmZDc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9wYy93ZWJydGNzZHBfdW5pdHRl
c3QuY2MKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvcGMv
d2VicnRjc2RwX3VuaXR0ZXN0LmNjCkBAIC0yNSw2ICsyNSw4IEBACiAjaW5jbHVkZSAicnRjX2Jh
c2UvbWVzc2FnZWRpZ2VzdC5oIgogI2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ2VuY29kZS5oIgog
I2luY2x1ZGUgInJ0Y19iYXNlL3N0cmluZ3V0aWxzLmgiCisjaW5jbHVkZSAidGVzdC9nbW9jay5o
IgorI2luY2x1ZGUgInRlc3QvZ3Rlc3QuaCIKIAogI2lmZGVmIFdFQlJUQ19BTkRST0lECiAjaW5j
bHVkZSAicGMvdGVzdC9hbmRyb2lkdGVzdGluaXRpYWxpemVyLmgiCkBAIC0zNCwyNCArMzYsMjYg
QEAKIHVzaW5nIGNyaWNrZXQ6OkF1ZGlvQ29kZWM7CiB1c2luZyBjcmlja2V0OjpBdWRpb0NvbnRl
bnREZXNjcmlwdGlvbjsKIHVzaW5nIGNyaWNrZXQ6OkNhbmRpZGF0ZTsKK3VzaW5nIGNyaWNrZXQ6
OkNvbnRlbnRHcm91cDsKIHVzaW5nIGNyaWNrZXQ6OkNvbnRlbnRJbmZvOwogdXNpbmcgY3JpY2tl
dDo6Q3J5cHRvUGFyYW1zOwotdXNpbmcgY3JpY2tldDo6Q29udGVudEdyb3VwOwogdXNpbmcgY3Jp
Y2tldDo6RGF0YUNvZGVjOwogdXNpbmcgY3JpY2tldDo6RGF0YUNvbnRlbnREZXNjcmlwdGlvbjsK
IHVzaW5nIGNyaWNrZXQ6OklDRV9DQU5ESURBVEVfQ09NUE9ORU5UX1JUQ1A7CiB1c2luZyBjcmlj
a2V0OjpJQ0VfQ0FORElEQVRFX0NPTVBPTkVOVF9SVFA7CiB1c2luZyBjcmlja2V0OjprRmVjU3Ny
Y0dyb3VwU2VtYW50aWNzOwogdXNpbmcgY3JpY2tldDo6TE9DQUxfUE9SVF9UWVBFOwordXNpbmcg
Y3JpY2tldDo6TWVkaWFQcm90b2NvbFR5cGU7CiB1c2luZyBjcmlja2V0OjpSRUxBWV9QT1JUX1RZ
UEU7CiB1c2luZyBjcmlja2V0OjpTZXNzaW9uRGVzY3JpcHRpb247Ci11c2luZyBjcmlja2V0OjpN
ZWRpYVByb3RvY29sVHlwZTsKIHVzaW5nIGNyaWNrZXQ6OlN0cmVhbVBhcmFtczsKIHVzaW5nIGNy
aWNrZXQ6OlNUVU5fUE9SVF9UWVBFOwogdXNpbmcgY3JpY2tldDo6VHJhbnNwb3J0RGVzY3JpcHRp
b247CiB1c2luZyBjcmlja2V0OjpUcmFuc3BvcnRJbmZvOwogdXNpbmcgY3JpY2tldDo6VmlkZW9D
b2RlYzsKIHVzaW5nIGNyaWNrZXQ6OlZpZGVvQ29udGVudERlc2NyaXB0aW9uOwordXNpbmcgOjp0
ZXN0aW5nOjpFbGVtZW50c0FyZTsKK3VzaW5nIDo6dGVzdGluZzo6RmllbGQ7CiB1c2luZyB3ZWJy
dGM6OkljZUNhbmRpZGF0ZUNvbGxlY3Rpb247CiB1c2luZyB3ZWJydGM6OkljZUNhbmRpZGF0ZUlu
dGVyZmFjZTsKIHVzaW5nIHdlYnJ0Yzo6SnNlcEljZUNhbmRpZGF0ZTsKQEAgLTkxNSwxMCArOTE5
LDEwIEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAg
ZGVzY18uQWRkQ29udGVudChrVmlkZW9Db250ZW50TmFtZSwgTWVkaWFQcm90b2NvbFR5cGU6OmtS
dHAsIHZpZGVvX2Rlc2NfKTsKIAogICAgIC8vIFRyYW5zcG9ydEluZm8KLSAgICBFWFBFQ1RfVFJV
RShkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oCi0gICAgICAgIGtBdWRpb0Nv
bnRlbnROYW1lLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZyYWdWb2ljZSwga1B3ZFZvaWNlKSkp
KTsKLSAgICBFWFBFQ1RfVFJVRShkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8o
Ci0gICAgICAgIGtWaWRlb0NvbnRlbnROYW1lLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZyYWdW
aWRlbywga1B3ZFZpZGVvKSkpKTsKKyAgICBkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9y
dEluZm8oCisgICAgICAgIGtBdWRpb0NvbnRlbnROYW1lLCBUcmFuc3BvcnREZXNjcmlwdGlvbihr
VWZyYWdWb2ljZSwga1B3ZFZvaWNlKSkpOworICAgIGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJh
bnNwb3J0SW5mbygKKyAgICAgICAga1ZpZGVvQ29udGVudE5hbWUsIFRyYW5zcG9ydERlc2NyaXB0
aW9uKGtVZnJhZ1ZpZGVvLCBrUHdkVmlkZW8pKSk7CiAKICAgICAvLyB2NCBob3N0CiAgICAgaW50
IHBvcnQgPSAxMjM0OwpAQCAtMTExMiw4ICsxMTE2LDggQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6
IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBhdWRpb190cmFja18yLnNzcmNzLnB1c2hfYmFj
ayhrQXVkaW9UcmFjazJTc3JjKTsKICAgICBhdWRpb19kZXNjXzItPkFkZFN0cmVhbShhdWRpb190
cmFja18yKTsKICAgICBkZXNjXy5BZGRDb250ZW50KGtBdWRpb0NvbnRlbnROYW1lMiwgTWVkaWFQ
cm90b2NvbFR5cGU6OmtSdHAsIGF1ZGlvX2Rlc2NfMik7Ci0gICAgRVhQRUNUX1RSVUUoZGVzY18u
QWRkVHJhbnNwb3J0SW5mbyhUcmFuc3BvcnRJbmZvKAotICAgICAgICBrQXVkaW9Db250ZW50TmFt
ZTIsIFRyYW5zcG9ydERlc2NyaXB0aW9uKGtVZnJhZ1ZvaWNlMiwga1B3ZFZvaWNlMikpKSk7Cisg
ICAgZGVzY18uQWRkVHJhbnNwb3J0SW5mbyhUcmFuc3BvcnRJbmZvKAorICAgICAgICBrQXVkaW9D
b250ZW50TmFtZTIsIFRyYW5zcG9ydERlc2NyaXB0aW9uKGtVZnJhZ1ZvaWNlMiwga1B3ZFZvaWNl
MikpKTsKICAgICAvLyBWaWRlbyB0cmFjayAyLCBpbiBzdHJlYW0gMi4KICAgICBWaWRlb0NvbnRl
bnREZXNjcmlwdGlvbiogdmlkZW9fZGVzY18yID0gQ3JlYXRlVmlkZW9Db250ZW50RGVzY3JpcHRp
b24oKTsKICAgICBTdHJlYW1QYXJhbXMgdmlkZW9fdHJhY2tfMjsKQEAgLTExMjMsOCArMTEyNyw4
IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgdmlk
ZW9fdHJhY2tfMi5zc3Jjcy5wdXNoX2JhY2soa1ZpZGVvVHJhY2syU3NyYyk7CiAgICAgdmlkZW9f
ZGVzY18yLT5BZGRTdHJlYW0odmlkZW9fdHJhY2tfMik7CiAgICAgZGVzY18uQWRkQ29udGVudChr
VmlkZW9Db250ZW50TmFtZTIsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCB2aWRlb19kZXNjXzIp
OwotICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbygK
LSAgICAgICAga1ZpZGVvQ29udGVudE5hbWUyLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZyYWdW
aWRlbzIsIGtQd2RWaWRlbzIpKSkpOworICAgIGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNw
b3J0SW5mbygKKyAgICAgICAga1ZpZGVvQ29udGVudE5hbWUyLCBUcmFuc3BvcnREZXNjcmlwdGlv
bihrVWZyYWdWaWRlbzIsIGtQd2RWaWRlbzIpKSk7CiAKICAgICAvLyBWaWRlbyB0cmFjayAzLCBp
biBzdHJlYW0gMi4KICAgICBWaWRlb0NvbnRlbnREZXNjcmlwdGlvbiogdmlkZW9fZGVzY18zID0g
Q3JlYXRlVmlkZW9Db250ZW50RGVzY3JpcHRpb24oKTsKQEAgLTExMzUsOCArMTEzOSw4IEBAIGNs
YXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CiAgICAgdmlkZW9fdHJh
Y2tfMy5zc3Jjcy5wdXNoX2JhY2soa1ZpZGVvVHJhY2szU3NyYyk7CiAgICAgdmlkZW9fZGVzY18z
LT5BZGRTdHJlYW0odmlkZW9fdHJhY2tfMyk7CiAgICAgZGVzY18uQWRkQ29udGVudChrVmlkZW9D
b250ZW50TmFtZTMsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCB2aWRlb19kZXNjXzMpOwotICAg
IEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0SW5mbygKLSAgICAg
ICAga1ZpZGVvQ29udGVudE5hbWUzLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZyYWdWaWRlbzMs
IGtQd2RWaWRlbzMpKSkpOworICAgIGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0SW5m
bygKKyAgICAgICAga1ZpZGVvQ29udGVudE5hbWUzLCBUcmFuc3BvcnREZXNjcmlwdGlvbihrVWZy
YWdWaWRlbzMsIGtQd2RWaWRlbzMpKSk7CiAgICAgZGVzY18uc2V0X21zaWRfc2lnbmFsaW5nKGNy
aWNrZXQ6OmtNc2lkU2lnbmFsaW5nTWVkaWFTZWN0aW9uKTsKIAogICAgIEFTU0VSVF9UUlVFKGpk
ZXNjXy5Jbml0aWFsaXplKGRlc2NfLkNvcHkoKSwgamRlc2NfLnNlc3Npb25faWQoKSwKQEAgLTEx
NzksOCArMTE4Myw4IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAgICAgYXVkaW9fdHJhY2tfMi5zc3Jjcy5wdXNoX2JhY2soa0F1ZGlvVHJhY2syU3NyYyk7
CiAgICAgYXVkaW9fZGVzY18yLT5BZGRTdHJlYW0oYXVkaW9fdHJhY2tfMik7CiAgICAgZGVzY18u
QWRkQ29udGVudChrQXVkaW9Db250ZW50TmFtZTIsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCBh
dWRpb19kZXNjXzIpOwotICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJh
bnNwb3J0SW5mbygKLSAgICAgICAga0F1ZGlvQ29udGVudE5hbWUyLCBUcmFuc3BvcnREZXNjcmlw
dGlvbihrVWZyYWdWb2ljZTIsIGtQd2RWb2ljZTIpKSkpOworICAgIGRlc2NfLkFkZFRyYW5zcG9y
dEluZm8oVHJhbnNwb3J0SW5mbygKKyAgICAgICAga0F1ZGlvQ29udGVudE5hbWUyLCBUcmFuc3Bv
cnREZXNjcmlwdGlvbihrVWZyYWdWb2ljZTIsIGtQd2RWb2ljZTIpKSk7CiAKICAgICAvLyBBdWRp
byB0cmFjayAzIGhhcyBubyBzdHJlYW0gaWRzLgogICAgIEF1ZGlvQ29udGVudERlc2NyaXB0aW9u
KiBhdWRpb19kZXNjXzMgPSBDcmVhdGVBdWRpb0NvbnRlbnREZXNjcmlwdGlvbigpOwpAQCAtMTE5
MSw4ICsxMTk1LDggQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
IHsKICAgICBhdWRpb190cmFja18zLnNzcmNzLnB1c2hfYmFjayhrQXVkaW9UcmFjazNTc3JjKTsK
ICAgICBhdWRpb19kZXNjXzMtPkFkZFN0cmVhbShhdWRpb190cmFja18zKTsKICAgICBkZXNjXy5B
ZGRDb250ZW50KGtBdWRpb0NvbnRlbnROYW1lMywgTWVkaWFQcm90b2NvbFR5cGU6OmtSdHAsIGF1
ZGlvX2Rlc2NfMyk7Ci0gICAgRVhQRUNUX1RSVUUoZGVzY18uQWRkVHJhbnNwb3J0SW5mbyhUcmFu
c3BvcnRJbmZvKAotICAgICAgICBrQXVkaW9Db250ZW50TmFtZTMsIFRyYW5zcG9ydERlc2NyaXB0
aW9uKGtVZnJhZ1ZvaWNlMywga1B3ZFZvaWNlMykpKSk7CisgICAgZGVzY18uQWRkVHJhbnNwb3J0
SW5mbyhUcmFuc3BvcnRJbmZvKAorICAgICAgICBrQXVkaW9Db250ZW50TmFtZTMsIFRyYW5zcG9y
dERlc2NyaXB0aW9uKGtVZnJhZ1ZvaWNlMywga1B3ZFZvaWNlMykpKTsKICAgICBkZXNjXy5zZXRf
bXNpZF9zaWduYWxpbmcobXNpZF9zaWduYWxpbmcpOwogICAgIEFTU0VSVF9UUlVFKGpkZXNjXy5J
bml0aWFsaXplKGRlc2NfLkNvcHkoKSwgamRlc2NfLnNlc3Npb25faWQoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqZGVzY18uc2Vzc2lvbl92ZXJzaW9uKCkpKTsKQEAgLTE0
NjQsNyArMTQ2OCw3IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CiAgICAgU2Vzc2lvbkRlc2NyaXB0aW9uKiBkZXNjID0KICAgICAgICAgY29uc3RfY2FzdDxT
ZXNzaW9uRGVzY3JpcHRpb24qPihqZGVzYy0+ZGVzY3JpcHRpb24oKSk7CiAgICAgZGVzYy0+UmVt
b3ZlVHJhbnNwb3J0SW5mb0J5TmFtZShjb250ZW50X25hbWUpOwotICAgIEVYUEVDVF9UUlVFKGRl
c2MtPkFkZFRyYW5zcG9ydEluZm8odHJhbnNwb3J0X2luZm8pKTsKKyAgICBkZXNjLT5BZGRUcmFu
c3BvcnRJbmZvKHRyYW5zcG9ydF9pbmZvKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpk
ZXNjXy5udW1iZXJfb2ZfbWVkaWFzZWN0aW9ucygpOyArK2kpIHsKICAgICAgIGNvbnN0IEljZUNh
bmRpZGF0ZUNvbGxlY3Rpb24qIGNjID0gamRlc2NfLmNhbmRpZGF0ZXMoaSk7CiAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IGNjLT5jb3VudCgpOyArK2opIHsKQEAgLTE1MDMsMTYgKzE1MDcs
MTYgQEAgY2xhc3MgV2ViUnRjU2RwVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKICAgICBk
ZXNjXy5SZW1vdmVUcmFuc3BvcnRJbmZvQnlOYW1lKGtBdWRpb0NvbnRlbnROYW1lKTsKICAgICBk
ZXNjXy5SZW1vdmVUcmFuc3BvcnRJbmZvQnlOYW1lKGtWaWRlb0NvbnRlbnROYW1lKTsKICAgICBy
dGM6OlNTTEZpbmdlcnByaW50IGZpbmdlcnByaW50KHJ0Yzo6RElHRVNUX1NIQV8xLCBrSWRlbnRp
dHlEaWdlc3QpOwotICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNw
b3J0SW5mbygKKyAgICBkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9ydEluZm8oCiAgICAg
ICAgIGtBdWRpb0NvbnRlbnROYW1lLAogICAgICAgICBUcmFuc3BvcnREZXNjcmlwdGlvbihzdGQ6
OnZlY3RvcjxzdGQ6OnN0cmluZz4oKSwga1VmcmFnVm9pY2UsIGtQd2RWb2ljZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6SUNFTU9ERV9GVUxMLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmlja2V0OjpDT05ORUNUSU9OUk9MRV9OT05FLCAmZmluZ2VycHJp
bnQpKSkpOwotICAgIEVYUEVDVF9UUlVFKGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJhbnNwb3J0
SW5mbygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JpY2tldDo6Q09OTkVDVElPTlJP
TEVfTk9ORSwgJmZpbmdlcnByaW50KSkpOworICAgIGRlc2NfLkFkZFRyYW5zcG9ydEluZm8oVHJh
bnNwb3J0SW5mbygKICAgICAgICAga1ZpZGVvQ29udGVudE5hbWUsCiAgICAgICAgIFRyYW5zcG9y
dERlc2NyaXB0aW9uKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPigpLCBrVWZyYWdWaWRlbywga1B3
ZFZpZGVvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmlja2V0OjpJQ0VNT0RFX0ZV
TEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyaWNrZXQ6OkNPTk5FQ1RJT05ST0xF
X05PTkUsICZmaW5nZXJwcmludCkpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
aWNrZXQ6OkNPTk5FQ1RJT05ST0xFX05PTkUsICZmaW5nZXJwcmludCkpKTsKICAgfQogCiAgIHZv
aWQgQWRkRXh0bWFwKGJvb2wgZW5jcnlwdGVkKSB7CkBAIC0xNjI5LDggKzE2MzMsOCBAQCBjbGFz
cyBXZWJSdGNTZHBUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgewogICAgIGRhdGFfZGVzY18t
PkFkZENvZGVjKGNvZGVjKTsKICAgICBkZXNjXy5BZGRDb250ZW50KGtEYXRhQ29udGVudE5hbWUs
IE1lZGlhUHJvdG9jb2xUeXBlOjprU2N0cCwKICAgICAgICAgICAgICAgICAgICAgIGRhdGEucmVs
ZWFzZSgpKTsKLSAgICBFWFBFQ1RfVFJVRShkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5zcG9y
dEluZm8oCi0gICAgICAgIGtEYXRhQ29udGVudE5hbWUsIFRyYW5zcG9ydERlc2NyaXB0aW9uKGtV
ZnJhZ0RhdGEsIGtQd2REYXRhKSkpKTsKKyAgICBkZXNjXy5BZGRUcmFuc3BvcnRJbmZvKFRyYW5z
cG9ydEluZm8oCisgICAgICAgIGtEYXRhQ29udGVudE5hbWUsIFRyYW5zcG9ydERlc2NyaXB0aW9u
KGtVZnJhZ0RhdGEsIGtQd2REYXRhKSkpOwogICB9CiAKICAgdm9pZCBBZGRSdHBEYXRhQ2hhbm5l
bCgpIHsKQEAgLTE2NDksOCArMTY1Myw4IEBAIGNsYXNzIFdlYlJ0Y1NkcFRlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdCB7CiAgICAgICAgICAgICAgICAgICAgICAiaW5saW5lOkZ2TGN2VTJQM1pX
bVF4Z1BBZ2NEdTdabDl2ZnRZRWxGT2pFemhXczUiLCAiIikpOwogICAgIGRhdGFfZGVzY18tPnNl
dF9wcm90b2NvbChjcmlja2V0OjprTWVkaWFQcm90b2NvbFNhdnBmKTsKICAgICBkZXNjXy5BZGRD
b250ZW50KGtEYXRhQ29udGVudE5hbWUsIE1lZGlhUHJvdG9jb2xUeXBlOjprUnRwLCBkYXRhLnJl
bGVhc2UoKSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVzY18uQWRkVHJhbnNwb3J0SW5mbyhUcmFuc3Bv
cnRJbmZvKAotICAgICAgICBrRGF0YUNvbnRlbnROYW1lLCBUcmFuc3BvcnREZXNjcmlwdGlvbihr
VWZyYWdEYXRhLCBrUHdkRGF0YSkpKSk7CisgICAgZGVzY18uQWRkVHJhbnNwb3J0SW5mbyhUcmFu
c3BvcnRJbmZvKAorICAgICAgICBrRGF0YUNvbnRlbnROYW1lLCBUcmFuc3BvcnREZXNjcmlwdGlv
bihrVWZyYWdEYXRhLCBrUHdkRGF0YSkpKTsKICAgfQogCiAgIGJvb2wgVGVzdERlc2VyaWFsaXpl
RGlyZWN0aW9uKFJ0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIGRpcmVjdGlvbikgewpAQCAtMjMwMCw5
ICsyMzA0LDcgQEAgVEVTVF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2VyaWFsaXplU2Vzc2lvbkRlc2Ny
aXB0aW9uV2l0aG91dFJ0cG1hcCkgewogICBKc2VwU2Vzc2lvbkRlc2NyaXB0aW9uIGpkZXNjKGtE
dW1teVR5cGUpOwogICBFWFBFQ1RfVFJVRShTZHBEZXNlcmlhbGl6ZShrU2RwTm9SdHBtYXBTdHJp
bmcsICZqZGVzYykpOwogICBjcmlja2V0OjpBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYXVkaW8g
PQotICAgICAgamRlc2MuZGVzY3JpcHRpb24oKQotICAgICAgICAgIC0+R2V0Q29udGVudERlc2Ny
aXB0aW9uQnlOYW1lKGNyaWNrZXQ6OkNOX0FVRElPKQotICAgICAgICAgIC0+YXNfYXVkaW8oKTsK
KyAgICAgIGNyaWNrZXQ6OkdldEZpcnN0QXVkaW9Db250ZW50RGVzY3JpcHRpb24oamRlc2MuZGVz
Y3JpcHRpb24oKSk7CiAgIEF1ZGlvQ29kZWNzIHJlZl9jb2RlY3M7CiAgIC8vIFRoZSBjb2RlY3Mg
aW4gdGhlIEF1ZGlvQ29udGVudERlc2NyaXB0aW9uIHNob3VsZCBiZSBpbiB0aGUgc2FtZSBvcmRl
ciBhcwogICAvLyB0aGUgcGF5bG9hZCB0eXBlcyAoPGZtdD5zKSBvbiB0aGUgbT0gbGluZS4KQEAg
LTIzMjUsOSArMjMyNyw3IEBAIFRFU1RfRihXZWJSdGNTZHBUZXN0LCBEZXNlcmlhbGl6ZVNlc3Np
b25EZXNjcmlwdGlvbldpdGhvdXRSdHBtYXBCdXRXaXRoRm10cCkgewogICBKc2VwU2Vzc2lvbkRl
c2NyaXB0aW9uIGpkZXNjKGtEdW1teVR5cGUpOwogICBFWFBFQ1RfVFJVRShTZHBEZXNlcmlhbGl6
ZShrU2RwTm9SdHBtYXBTdHJpbmcsICZqZGVzYykpOwogICBjcmlja2V0OjpBdWRpb0NvbnRlbnRE
ZXNjcmlwdGlvbiogYXVkaW8gPQotICAgICAgamRlc2MuZGVzY3JpcHRpb24oKQotICAgICAgICAg
IC0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKGNyaWNrZXQ6OkNOX0FVRElPKQotICAgICAg
ICAgIC0+YXNfYXVkaW8oKTsKKyAgICAgIGNyaWNrZXQ6OkdldEZpcnN0QXVkaW9Db250ZW50RGVz
Y3JpcHRpb24oamRlc2MuZGVzY3JpcHRpb24oKSk7CiAKICAgY3JpY2tldDo6QXVkaW9Db2RlYyBn
NzI5ID0gYXVkaW8tPmNvZGVjcygpWzBdOwogICBFWFBFQ1RfRVEoIkc3MjkiLCBnNzI5Lm5hbWUp
OwpAQCAtMjkyNCwxNSArMjkyNCwxMSBAQCBURVNUX0YoV2ViUnRjU2RwVGVzdCwgRGVzZXJpYWxp
emVTZHBXaXRoQ29uZmVyZW5jZUZsYWcpIHsKIAogICAvLyBWZXJpZnkKICAgY3JpY2tldDo6QXVk
aW9Db250ZW50RGVzY3JpcHRpb24qIGF1ZGlvID0KLSAgICAgIGpkZXNjLmRlc2NyaXB0aW9uKCkK
LSAgICAgICAgICAtPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZShjcmlja2V0OjpDTl9BVURJ
TykKLSAgICAgICAgICAtPmFzX2F1ZGlvKCk7CisgICAgICBjcmlja2V0OjpHZXRGaXJzdEF1ZGlv
Q29udGVudERlc2NyaXB0aW9uKGpkZXNjLmRlc2NyaXB0aW9uKCkpOwogICBFWFBFQ1RfVFJVRShh
dWRpby0+Y29uZmVyZW5jZV9tb2RlKCkpOwogCiAgIGNyaWNrZXQ6OlZpZGVvQ29udGVudERlc2Ny
aXB0aW9uKiB2aWRlbyA9Ci0gICAgICBqZGVzYy5kZXNjcmlwdGlvbigpCi0gICAgICAgICAgLT5H
ZXRDb250ZW50RGVzY3JpcHRpb25CeU5hbWUoY3JpY2tldDo6Q05fVklERU8pCi0gICAgICAgICAg
LT5hc192aWRlbygpOworICAgICAgY3JpY2tldDo6R2V0Rmlyc3RWaWRlb0NvbnRlbnREZXNjcmlw
dGlvbihqZGVzYy5kZXNjcmlwdGlvbigpKTsKICAgRVhQRUNUX1RSVUUodmlkZW8tPmNvbmZlcmVu
Y2VfbW9kZSgpKTsKIH0KIApAQCAtMjk0NywxNSArMjk0MywxMSBAQCBURVNUX0YoV2ViUnRjU2Rw
VGVzdCwgU2VyaWFsaXplU2RwV2l0aENvbmZlcmVuY2VGbGFnKSB7CiAKICAgLy8gVmVyaWZ5Lgog
ICBjcmlja2V0OjpBdWRpb0NvbnRlbnREZXNjcmlwdGlvbiogYXVkaW8gPQotICAgICAgamRlc2Mu
ZGVzY3JpcHRpb24oKQotICAgICAgICAgIC0+R2V0Q29udGVudERlc2NyaXB0aW9uQnlOYW1lKGNy
aWNrZXQ6OkNOX0FVRElPKQotICAgICAgICAgIC0+YXNfYXVkaW8oKTsKKyAgICAgIGNyaWNrZXQ6
OkdldEZpcnN0QXVkaW9Db250ZW50RGVzY3JpcHRpb24oamRlc2MuZGVzY3JpcHRpb24oKSk7CiAg
IEVYUEVDVF9UUlVFKGF1ZGlvLT5jb25mZXJlbmNlX21vZGUoKSk7CiAKICAgY3JpY2tldDo6Vmlk
ZW9Db250ZW50RGVzY3JpcHRpb24qIHZpZGVvID0KLSAgICAgIGpkZXNjLmRlc2NyaXB0aW9uKCkK
LSAgICAgICAgICAtPkdldENvbnRlbnREZXNjcmlwdGlvbkJ5TmFtZShjcmlja2V0OjpDTl9WSURF
TykKLSAgICAgICAgICAtPmFzX3ZpZGVvKCk7CisgICAgICBjcmlja2V0OjpHZXRGaXJzdFZpZGVv
Q29udGVudERlc2NyaXB0aW9uKGpkZXNjLmRlc2NyaXB0aW9uKCkpOwogICBFWFBFQ1RfVFJVRSh2
aWRlby0+Y29uZmVyZW5jZV9tb2RlKCkpOwogfQogCkBAIC0zOTA5LDMgKzM5MDEsMTkgQEAgVEVT
VF9GKFdlYlJ0Y1NkcFRlc3QsIERlc2VyaWFsaXplRW1wdHlTZXNzaW9uTmFtZSkgewogICBSZXBs
YWNlKCJzPS1cclxuIiwgInM9IFxyXG4iLCAmc2RwKTsKICAgRVhQRUNUX1RSVUUoU2RwRGVzZXJp
YWxpemUoc2RwLCAmanNlcF9kZXNjKSk7CiB9CisKKy8vIFRlc3QgdGhhdCB0aGUgY29udGVudCBu
YW1lIGlzIGVtcHR5IGlmIHRoZSBtZWRpYSBzZWN0aW9uIGRvZXMgbm90IGhhdmUgYW4KKy8vIGE9
bWlkIGxpbmUuCitURVNUX0YoV2ViUnRjU2RwVGVzdCwgUGFyc2VOb01pZCkgeworICBzdGQ6OnN0
cmluZyBzZHAgPSBrU2RwU3RyaW5nOworICBSZXBsYWNlKCJhPW1pZDphdWRpb19jb250ZW50X25h
bWVcclxuIiwgIiIsICZzZHApOworICBSZXBsYWNlKCJhPW1pZDp2aWRlb19jb250ZW50X25hbWVc
clxuIiwgIiIsICZzZHApOworCisgIEpzZXBTZXNzaW9uRGVzY3JpcHRpb24gb3V0cHV0KGtEdW1t
eVR5cGUpOworICBTZHBQYXJzZUVycm9yIGVycm9yOworICBBU1NFUlRfVFJVRSh3ZWJydGM6OlNk
cERlc2VyaWFsaXplKHNkcCwgJm91dHB1dCwgJmVycm9yKSk7CisKKyAgRVhQRUNUX1RIQVQob3V0
cHV0LmRlc2NyaXB0aW9uKCktPmNvbnRlbnRzKCksCisgICAgICAgICAgICAgIEVsZW1lbnRzQXJl
KEZpZWxkKCJuYW1lIiwgJmNyaWNrZXQ6OkNvbnRlbnRJbmZvOjpuYW1lLCAiIiksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZpZWxkKCJuYW1lIiwgJmNyaWNrZXQ6OkNvbnRlbnRJbmZvOjpu
YW1lLCAiIikpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRlL21ldHJpY3MuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3N5c3RlbV93cmFwcGVycy9pbmNsdWRl
L21ldHJpY3MuaAppbmRleCBmMDBlY2YyNjIyYWVmZDgxNzcxNzA4NmI2M2FiNGViNGQ5YjMzOTI5
Li5jYmVmYTM3YmQxYjVjZGVkNzY4OTAxNmU1M2MxMTFlNTdhYjZjNmY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3dlYnJ0Yy9zeXN0ZW1fd3JhcHBlcnMv
aW5jbHVkZS9tZXRyaWNzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS93ZWJydGMvc3lzdGVtX3dyYXBwZXJzL2luY2x1ZGUvbWV0cmljcy5oCkBAIC0xMzMsNyArMTMz
LDcgQEAKIC8vIFRPRE8ocWluZ3NpKTogUmVmYWN0b3IgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRp
b24gZ2l2ZW4gYnkgUnRjSGlzdG9ncmFtLAogLy8gd2hpY2ggaXMgYWxyZWFkeSBzcGFyc2UsIGFu
ZCByZW1vdmUgdGhlIGJvdW5kYXJ5IGFyZ3VtZW50IGZyb20gdGhlIG1hY3JvLgogI2RlZmluZSBS
VENfSElTVE9HUkFNX0VOVU1FUkFUSU9OX1NQQVJTRShuYW1lLCBzYW1wbGUsIGJvdW5kYXJ5KSBc
Ci0gIFJUQ19ISVNUT0dSQU1fQ09NTU9OX0JMT0NLKCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgUlRDX0hJU1RPR1JBTV9DT01NT05fQkxPQ0tfU0xPVyggICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgbmFtZSwgc2FtcGxlLCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICB3ZWJydGM6Om1ldHJpY3M6
OlNwYXJzZUhpc3RvZ3JhbUZhY3RvcnlHZXRFbnVtZXJhdGlvbihuYW1lLCBib3VuZGFyeSkpCiAK
QEAgLTE0OCw3ICsxNDgsNyBAQAogLy8gSGlzdG9ncmFtIGZvciBlbnVtZXJhdG9ycyAoZXZlbmx5
IHNwYWNlZCBidWNrZXRzKS4KIC8vIHxib3VuZGFyeXwgc2hvdWxkIGJlIGFib3ZlIHRoZSBtYXgg
ZW51bWVyYXRvciBzYW1wbGUuCiAjZGVmaW5lIFJUQ19ISVNUT0dSQU1fRU5VTUVSQVRJT04obmFt
ZSwgc2FtcGxlLCBib3VuZGFyeSkgXAotICBSVENfSElTVE9HUkFNX0NPTU1PTl9CTE9DSyggICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgUlRDX0hJU1RPR1JBTV9DT01NT05fQkxPQ0tf
U0xPVyggICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICBuYW1lLCBzYW1wbGUsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgd2VicnRjOjptZXRyaWNz
OjpIaXN0b2dyYW1GYWN0b3J5R2V0RW51bWVyYXRpb24obmFtZSwgYm91bmRhcnkpKQogCkBAIC0x
NzUsNyArMTc1LDYgQEAKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgfSB3aGlsZSAoMCkKIAotLy8g
RGVwcmVjYXRlZC4KIC8vIFRoZSBoaXN0b2dyYW0gaXMgY29uc3RydWN0ZWQvZm91bmQgZm9yIGVh
Y2ggY2FsbC4KIC8vIE1heSBiZSB1c2VkIGZvciBoaXN0b2dyYW1zIHdpdGggaW5mcmVxdWVudCB1
cGRhdGVzLmAKICNkZWZpbmUgUlRDX0hJU1RPR1JBTV9DT01NT05fQkxPQ0tfU0xPVyhuYW1lLCBz
YW1wbGUsIGZhY3RvcnlfZ2V0X2ludm9jYXRpb24pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uvd2VicnRjL3ZpZGVvL0JVSUxELmduIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KaW5kZXggYjUz
ZDczMGFlMDdlMDZmODAwNGUzNTUzNmNhZTcyMmExYTVhNmVjNi4uMjhmYjY5MGNlYzVlYzJmNjdh
NzgwMzI2NDE2YTBhZWQ0Zjc4ZTY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvbGlid2VicnRjL1NvdXJjZS93ZWJydGMvdmlkZW8vQlVJTEQuZ24KQEAgLTE4MSw2ICsxODEs
NyBAQCBydGNfc291cmNlX3NldCgidmlkZW9fc3RyZWFtX2VuY29kZXJfaW1wbCIpIHsKICAgICAi
Li4vY29tbW9uX3ZpZGVvOmNvbW1vbl92aWRlbyIsCiAgICAgIi4uL21vZHVsZXMvdmlkZW9fY29k
aW5nIiwKICAgICAiLi4vbW9kdWxlcy92aWRlb19jb2Rpbmc6dmlkZW9fY29kaW5nX3V0aWxpdHki
LAorICAgICIuLi9tb2R1bGVzL3ZpZGVvX2NvZGluZzp3ZWJydGNfdnA5X2hlbHBlcnMiLAogICAg
ICIuLi9ydGNfYmFzZTpjaGVja3MiLAogICAgICIuLi9ydGNfYmFzZTpjcml0aWNhbHNlY3Rpb24i
LAogICAgICIuLi9ydGNfYmFzZTpsb2dnaW5nIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CmluZGV4IGIxN2NkODUxY2QwZWVmMGQyNTljMzcwMGI3MDU5MjdiMzdmMTZiMWYuLjY2MDJlZTJm
NmY2MjgyZjcxY2ZlODEzMmNjMWIxMzY4YWNhODA3ZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTAxLTIyICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBSZXN5bmMgbGlid2VicnRjIHdpdGggbGF0ZXN0IE03
MiBicmFuY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MzY5MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDc0NjM4MDM+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
d2VicnRjL1JUQ1J0cFRyYW5zY2VpdmVyLmh0dHBzLWV4cGVjdGVkLnR4dDoKKwogMjAxOS0wMS0x
OCAgQWxpIEp1bWEgIDxhanVtYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRmV0Y2hSZXNwb25z
ZTo6dXJsIHNob3VsZCByZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBmb3IgdGFpbnRlZCByZXNwb25z
ZXMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvd2VicnRjL1JUQ1J0cFRyYW5zY2VpdmVyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFRyYW5zY2Vp
dmVyLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBlOGRmOWIxYjA3NzUyMTI1MGQxNjEzNjY4Yjdl
NmRjNDQ0ZGUyNmJhLi45MmJjZjBlMTBkNWIyYmUyNzFkYzQ1YTAyN2JkZTNiNWFmZjU2YzRmIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy9SVENSdHBUcmFuc2NlaXZlci5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwVHJhbnNjZWl2
ZXIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC04LDcgKzgsNyBAQCBQQVNTIGNoZWNrQWRkVHJhbnNj
ZWl2ZXJXaXRoRGlyZWN0aW9uCiBQQVNTIGNoZWNrQWRkVHJhbnNjZWl2ZXJXaXRoU2V0UmVtb3Rl
T2ZmZXJTZW5kaW5nIAogUEFTUyBjaGVja0FkZFRyYW5zY2VpdmVyV2l0aFNldFJlbW90ZU9mZmVy
Tm9TZW5kIAogUEFTUyBjaGVja0FkZFRyYW5zY2VpdmVyQmFkS2luZCAKLUZBSUwgY2hlY2tOb01p
ZE9mZmVyIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmpl
Y3QgIkludmFsaWRBY2Nlc3NFcnJvcjogRmFpbGVkIHRvIHNldCByZW1vdGUgb2ZmZXIgc2RwOiBU
aGUgQlVORExFIGdyb3VwIGNvbnRhaW5zIE1JRDowIG1hdGNoaW5nIG5vIG09IHNlY3Rpb24uIgor
UEFTUyBjaGVja05vTWlkT2ZmZXIgCiBQQVNTIGNoZWNrU2V0RGlyZWN0aW9uIAogUEFTUyBjaGVj
a0N1cnJlbnREaXJlY3Rpb24gCiBQQVNTIGNoZWNrU2VuZHJlY3ZXaXRoTm9TZW5kVHJhY2sgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>