<?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>179126</bug_id>
          
          <creation_ts>2017-11-01 10:40:56 -0700</creation_ts>
          <short_desc>Split JobQueue logic out of SWServerRegistration</short_desc>
          <delta_ts>2017-11-15 12:30:22 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1366903</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 10:40:56 -0700</bug_when>
    <thetext>Split JobQueue logic out of SWServerRegistration to match the Service Workers specification more closely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366941</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-11-01 11:26:24 -0700</bug_when>
    <thetext>We should probably reuse the registration key and maybe rename it to scope url key since both maps will have the same key</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366970</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 12:05:33 -0700</bug_when>
    <thetext>Will try to keep the patch as small as possible. We can do more refactoring in follow-ups (e.g. getting rid of the background thread).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366971</commentid>
    <comment_count>3</comment_count>
      <attachid>325609</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 12:07:55 -0700</bug_when>
    <thetext>Created attachment 325609
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366973</commentid>
    <comment_count>4</comment_count>
      <attachid>325610</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 12:09:34 -0700</bug_when>
    <thetext>Created attachment 325610
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366977</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-01 12:12:35 -0700</bug_when>
    <thetext>Attachment 325610 did not pass style-queue:


ERROR: Source/WebCore/workers/service/server/SWServerJobQueue.h:52:  The parameter name &quot;data&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367000</commentid>
    <comment_count>6</comment_count>
      <attachid>325616</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 12:55:09 -0700</bug_when>
    <thetext>Created attachment 325616
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367015</commentid>
    <comment_count>7</comment_count>
      <attachid>325621</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 13:24:34 -0700</bug_when>
    <thetext>Created attachment 325621
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367021</commentid>
    <comment_count>8</comment_count>
      <attachid>325624</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 13:38:50 -0700</bug_when>
    <thetext>Created attachment 325624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367057</commentid>
    <comment_count>9</comment_count>
      <attachid>325634</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 14:32:15 -0700</bug_when>
    <thetext>Created attachment 325634
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367058</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 14:32:38 -0700</bug_when>
    <thetext>Had to rebaseline because of Brady&apos;s patch that just landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367081</commentid>
    <comment_count>11</comment_count>
      <attachid>325634</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 15:32:47 -0700</bug_when>
    <thetext>Comment on attachment 325634
Patch

Clearing flags on attachment: 325634

Committed r224301: &lt;https://trac.webkit.org/changeset/224301&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367082</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-11-01 15:32:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372168</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:30:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/35567575&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325609</attachid>
            <date>2017-11-01 12:07:55 -0700</date>
            <delta_ts>2017-11-01 12:09:34 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>178794_SW_Client_postMessage_wip.patch</filename>
            <type>text/plain</type>
            <size>56022</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2Jhc2lj
LVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVz
c2FnZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggN2QxMjIzNTQ3NWYuLmMwOTU1ZjgzNGE3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKLVBBU1M6IFN0YXR1cyBj
b2RlIGlzIDIwMAotUEFTUzogU3RhdHVzIHRleHQgaXMgV29ya2VyIHJlY2VpdmVkIHRoZSBtZXNz
YWdlIGV2ZW50LiBtZXNzYWdlRXZlbnQub3JpZ2luIHdhcyBodHRwczovLzEyNy4wLjAuMTo4NDQz
Ci1QQVNTOiBTb3VyY2UgaXMgU2VydmljZSB3b3JrZXIKK1BBU1M6IENsaWVudCByZWNlaXZlZCBt
ZXNzYWdlIGZyb20gc2VydmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MworUEFTUzogUmVjZWl2ZWQgbWVzc2FnZSAnTWVzc2FnZSAxJyBmcm9tIG9yaWdpbiAnaHR0cHM6
Ly8xMjcuMC4wLjE6ODQ0MycKK1BBU1M6IENsaWVudCByZWNlaXZlZCBtZXNzYWdlIGZyb20gc2Vy
dmljZSB3b3JrZXIsIG9yaWdpbjogaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0MworUEFTUzogUmVjZWl2
ZWQgbWVzc2FnZSAnTWVzc2FnZSAyJyBmcm9tIG9yaWdpbiAnaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
MycKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCmluZGV4IDg0Mzk1YjJhNmQzLi45NDhjODI0
OTQ2YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2Uv
cmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1T
ZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdlLXdvcmtlci5qcwpAQCAtMSwxNCArMSw0IEBACi1sZXQg
cmVzcG9uc2VUb1NlbmQgPSB7IHN0YXR1czogNDA0LCBzdGF0dXNUZXh0OiAiTm90IEZvdW5kIiB9
OwotCiBzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKLSAgICBy
ZXNwb25zZVRvU2VuZCA9IGV2ZW50LmRhdGE7Ci0gICAgcmVzcG9uc2VUb1NlbmQuc3RhdHVzVGV4
dCArPSAiIG1lc3NhZ2VFdmVudC5vcmlnaW4gd2FzICIgKyBldmVudC5vcmlnaW47CisgICAgZXZl
bnQuc291cmNlLnBvc3RNZXNzYWdlKCJSZWNlaXZlZCBtZXNzYWdlICciICsgZXZlbnQuZGF0YSAr
ICInIGZyb20gb3JpZ2luICciICsgZXZlbnQub3JpZ2luICsgIiciKTsKIH0pOwogCi1zZWxmLmFk
ZEV2ZW50TGlzdGVuZXIoImZldGNoIiwgKGV2ZW50KSA9PiB7Ci0gICAgaWYgKGV2ZW50LnJlcXVl
c3QudXJsLmluZGV4T2YoInRlc3QxIikgIT09IC0xKSB7Ci0gICAgICAgIGV2ZW50LnJlc3BvbmRX
aXRoKG5ldyBSZXNwb25zZShudWxsLCByZXNwb25zZVRvU2VuZCkpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotICAgIGV2ZW50LnJlc3BvbmRXaXRoKFJlc3BvbnNlLmVycm9yKCkpOwotfSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvYmFzaWMtU2VydmljZVdvcmtlci1wb3N0TWVzc2FnZS5qcyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RN
ZXNzYWdlLmpzCmluZGV4IDk2YTQxY2EwODY4Li4xZjBhNjMwNDRiZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2UuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3Jr
ZXJzL3NlcnZpY2UvcmVzb3VyY2VzL2Jhc2ljLVNlcnZpY2VXb3JrZXItcG9zdE1lc3NhZ2UuanMK
QEAgLTEsMzcgKzEsMTQgQEAKLWZ1bmN0aW9uIGRvbmUoKQotewotICAgIGZpbmlzaFNXVGVzdCgp
OwotfQotCi1hc3luYyBmdW5jdGlvbiB0ZXN0KCkKLXsKLSAgICB0cnkgewotICAgICAgICBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcigicmVzb3VyY2VzL2Jhc2ljLVNlcnZp
Y2VXb3JrZXItcG9zdE1lc3NhZ2Utd29ya2VyLmpzIiwgeyB9KTsKLQotICAgICAgICBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKHsgc3RhdHVzOiAyMDAsIHN0
YXR1c1RleHQ6ICJXb3JrZXIgcmVjZWl2ZWQgdGhlIG1lc3NhZ2UgZXZlbnQuIiB9KTsKLQotICAg
ICAgICBsZXQgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCgidGVzdDEiKTsKLSAgICAgICAgaWYgKHJl
c3BvbnNlLnN0YXR1cyA9PSAyMDApCi0gICAgICAgICAgICBsb2coIlBBU1M6IFN0YXR1cyBjb2Rl
IGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb2co
IkZBSUw6IFN0YXR1cyBjb2RlIGlzICIgKyByZXNwb25zZS5zdGF0dXMpOwotCi0gICAgICAgIGlm
IChyZXNwb25zZS5zdGF0dXNUZXh0LnN0YXJ0c1dpdGgoIldvcmtlciByZWNlaXZlZCB0aGUgbWVz
c2FnZSIpKQotICAgICAgICAgICAgbG9nKCJQQVNTOiBTdGF0dXMgdGV4dCBpcyAiICsgcmVzcG9u
c2Uuc3RhdHVzVGV4dCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvZygiRkFJTDogU3Rh
dHVzIHRleHQgaXMgIiArIHJlc3BvbnNlLnN0YXR1c1RleHQpOwotCi0gICAgICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICBsZXQgc291cmNlID0gaW50ZXJuYWxzLmZldGNo
UmVzcG9uc2VTb3VyY2UocmVzcG9uc2UpOwotICAgICAgICAgICAgaWYgKHNvdXJjZSA9PT0gIlNl
cnZpY2Ugd29ya2VyIikKLSAgICAgICAgICAgICAgICBsb2coIlBBU1M6IFNvdXJjZSBpcyAiICsg
c291cmNlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsb2coIkZBSUw6IFNv
dXJjZSBpcyAiICsgc291cmNlKTsKLSAgICAgICAgfQotICAgIH0gY2F0Y2goZSkgewotICAgICAg
ICBsb2coIkdvdCBleGNlcHRpb246ICIgKyBlKTsKLSAgICB9Ci0gICAgZmluaXNoU1dUZXN0KCk7
Ci19Ci0KLXRlc3QoKTsKK3ZhciBtZXNzYWdlTnVtYmVyID0gMTsKK25hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgeworICAg
IGxvZygiUEFTUzogQ2xpZW50IHJlY2VpdmVkIG1lc3NhZ2UgZnJvbSBzZXJ2aWNlIHdvcmtlciwg
b3JpZ2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICBsb2coIlBBU1M6ICIgKyBldmVudC5kYXRh
KTsKKyAgICBpZiAobWVzc2FnZU51bWJlciA9PSAxKSB7CisgICAgICAgIGV2ZW50LnNvdXJjZS5w
b3N0TWVzc2FnZSgiTWVzc2FnZSAyIik7CisgICAgICAgIG1lc3NhZ2VOdW1iZXIrKzsKKyAgICB9
IGVsc2UKKyAgICAgICAgZmluaXNoU1dUZXN0KCk7Cit9KTsKKworbmF2aWdhdG9yLnNlcnZpY2VX
b3JrZXIucmVnaXN0ZXIoInJlc291cmNlcy9iYXNpYy1TZXJ2aWNlV29ya2VyLXBvc3RNZXNzYWdl
LXdvcmtlci5qcyIsIHsgfSkudGhlbihmdW5jdGlvbigpIHsKKyAgICBuYXZpZ2F0b3Iuc2Vydmlj
ZVdvcmtlci5jb250cm9sbGVyLnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiKTsKK30pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0
MDAwOGRjMmQzLi5lMzMwYzUzMjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjI3Niw2ICsyMjc2LDcgQEAKIAkJODM3OTY0
Q0YxRjhEQjY5RDAwMjE4RUEwIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25JT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4Mzc5NjRDRTFGOERCNjlBMDAy
MThFQTAgLyogR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbSAqLzsgfTsKIAkJODM3QTgwMTMxRTFF
MTI3MzAwMDI2QjlGIC8qIExvY2FsaXphYmxlLnN0cmluZ3NkaWN0IGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBODAxMTFFMUUxMjczMDAwMjZCOUYg
LyogTG9jYWxpemFibGUuc3RyaW5nc2RpY3QgKi87IH07CiAJCTgzN0I3RDIwMURDM0Y1NTAwMEQw
NTFGQyAvKiBWYWxpZGF0aW9uQnViYmxlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODM3QjdEMUYxREMzRjU0QzAwRDA1MUZDIC8qIFZhbGlkYXRp
b25CdWJibGVJT1MubW0gKi87IH07CisJCTgzN0Q0NjI3MUZBMkE4Q0UwMDU0RTFGQSAvKiBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODM3RDQ2MjUxRkEyQThDNTAwNTRFMUZBIC8qIFNlcnZpY2VXb3Jr
ZXJDbGllbnRJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODM3RkIzNDUxRjlFQTA2RDAwRDBGQzMxIC8qIEV4dGVuZGFibGVNZXNz
YWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzN0ZCMzQwMUY5RUEwNjYwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87
IH07CiAJCTgzODZBOTZEMTlGNjFCMkUwMEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzODZBOTZDMTlGNjFCMkUw
MEUxRUM0QSAvKiBTdHlsZUJ1aWxkZXIuaCAqLzsgfTsKIAkJODM4ODY3MzUxRDEzQkE1RjAwMzY5
N0QwIC8qIFJlbmRlck9iamVjdEVudW1zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4Mzg4NjczNDFEMTNCQTU5MDAzNjk3RDAgLyogUmVuZGVyT2JqZWN0
RW51bXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtOTU5NSw2ICs5NTk2LDcgQEAKIAkJODM3OTY0Q0UxRjhEQjY5QTAwMjE4RUEwIC8qIEdlb2xv
Y2F0aW9uUG9zaXRpb25JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBHZW9sb2NhdGlvblBvc2l0aW9uSU9TLm1tOyBwYXRoID0gTW9kdWxlcy9nZW9sb2NhdGlv
bi9pb3MvR2VvbG9jYXRpb25Qb3NpdGlvbklPUy5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09U
OyB9OwogCQk4MzdBODAxMjFFMUUxMjczMDAwMjZCOUYgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Quc3RyaW5nc2Rp
Y3Q7IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJp
bmdzZGljdDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk4MzdCN0QxRjFEQzNGNTRD
MDBEMDUxRkMgLyogVmFsaWRhdGlvbkJ1YmJsZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFZhbGlkYXRpb25CdWJibGVJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTgzN0Q0NjI1MUZBMkE4QzUwMDU0RTFGQSAvKiBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2
aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzdERkIzNDFFQkZFQTcwMDA2MDEzODUgLyogRWxlbWVudENTU0lubGluZVN0eWxlLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFbGVtZW50Q1NTSW5saW5lU3R5bGUuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzdGQjM0MDFGOUVBMDY2MDBEMEZDMzEgLyogRXh0ZW5k
YWJsZU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzN0ZC
MzQyMUY5RUEwNjcwMEQwRkMzMSAvKiBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTczODgsNiArMTczOTAsNyBAQAogCQkJ
CTQ2RUYxNDIxMUY5N0I3QkEwMEMyQTUyNCAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50cy5jcHAgKi8s
CiAJCQkJNDZFRjE0MjIxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRzLmgg
Ki8sCiAJCQkJNDZFRjE0MjMxRjk3QjdCQTAwQzJBNTI0IC8qIFNlcnZpY2VXb3JrZXJDbGllbnRz
LmlkbCAqLywKKwkJCQk4MzdENDYyNTFGQTJBOEM1MDA1NEUxRkEgLyogU2VydmljZVdvcmtlckNs
aWVudElkZW50aWZpZXIuaCAqLywKIAkJCQk4MzY5RkRGQjFGQTEwMkNCMDBDMUZGMUYgLyogU2Vy
dmljZVdvcmtlckNsaWVudFR5cGUuaCAqLywKIAkJCQk4MzY5RkRGOTFGQTEwMkNBMDBDMUZGMUYg
LyogU2VydmljZVdvcmtlckNsaWVudFR5cGUuaWRsICovLAogCQkJCTUxRjE3NTU4MUYzRUJDMEMw
MEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCAqLywKQEAgLTI2NTcyLDYgKzI2
NTc1LDcgQEAKIAkJCQlBMUVENzc4RDFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDQ0MyQjUxNDE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDQ0MyQjUxNjE1RjYxMzA2MDA0OENERDYgLyogRGV2aWNlQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJODM3RDQ2MjcxRkEyQThDRTAwNTRFMUZBIC8q
IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUZC
MUE1NzEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNlTW90aW9uQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMUVBRjk3RTEyMTQzNUE0MDBFN0MxQkYgLyogRGV2aWNlTW90aW9uQ2xpZW50SU9T
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUZCMUE1OTEyMEE1RDA2MDBEQzAyQTAgLyogRGV2aWNl
TW90aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCBhNjMxYjljYTI4OS4uMzJkZWEyOTMyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtNDM0LDEyICs0MzQsMjMgQEAgc3RhdGljIHZvaWQgcHJpbnROYXZpZ2F0aW9uRXJyb3JNZXNz
YWdlKEZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiBhY3RpdmVVUkwsIGNvbnMKIAogdWludDY0X3Qg
RG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCi1IYXNoU2V0PERvY3VtZW50Kj4m
IERvY3VtZW50OjphbGxEb2N1bWVudHMoKQorc3RhdGljIERvY3VtZW50OjpJZGVudGlmaWVyIGdl
bmVyYXRlRG9jdW1lbnRJZGVudGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaFNldDxEb2N1bWVudCo+PiBkb2N1bWVudHM7CisgICAgc3RhdGljIHVpbnQ2NF90IGlkZW50
aWZpZXIgPSAwOworICAgIHJldHVybiArK2lkZW50aWZpZXI7Cit9CisKK2F1dG8gRG9jdW1lbnQ6
OmFsbERvY3VtZW50c01hcCgpIC0+IERvY3VtZW50c01hcCYKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8SGFzaE1hcDxJZGVudGlmaWVyLCBEb2N1bWVudCo+PiBkb2N1bWVudHM7CiAgICAg
cmV0dXJuIGRvY3VtZW50czsKIH0KIAorYXV0byBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkgLT4g
RG9jdW1lbnRzTWFwOjpWYWx1ZXNJdGVyYXRvclJhbmdlCit7CisgICAgcmV0dXJuIGFsbERvY3Vt
ZW50c01hcCgpLnZhbHVlcygpOworfQorCiBzdGF0aWMgaW5saW5lIGludCBjdXJyZW50T3JpZW50
YXRpb24oRnJhbWUqIGZyYW1lKQogewogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMpCkBA
IC00OTYsOCArNTA3LDEwIEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IFVSTCYgdXJsLCB1bnNpZ25lZCBkb2N1bWVudENsYXNzZXMsIHVuc2lnCiAgICAgLCBtX2lzU3lu
dGhlc2l6ZWQoY29uc3RydWN0aW9uRmxhZ3MgJiBTeW50aGVzaXplZCkKICAgICAsIG1faXNOb25S
ZW5kZXJlZFBsYWNlaG9sZGVyKGNvbnN0cnVjdGlvbkZsYWdzICYgTm9uUmVuZGVyZWRQbGFjZWhv
bGRlcikKICAgICAsIG1fb3JpZW50YXRpb25Ob3RpZmllcihjdXJyZW50T3JpZW50YXRpb24oZnJh
bWUpKQorICAgICwgbV9pZGVudGlmaWVyKGdlbmVyYXRlRG9jdW1lbnRJZGVudGlmaWVyKCkpCiB7
Ci0gICAgYWxsRG9jdW1lbnRzKCkuYWRkKHRoaXMpOworICAgIGF1dG8gYWRkUmVzdWx0ID0gYWxs
RG9jdW1lbnRzTWFwKCkuYWRkKG1faWRlbnRpZmllciwgdGhpcyk7CisgICAgQVNTRVJUX1VOVVNF
RChhZGRSZXN1bHQsIGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIC8vIFdlIGRlcGVuZCBv
biB0aGUgdXJsIGdldHRpbmcgaW1tZWRpYXRlbHkgc2V0IGluIHN1YmZyYW1lcywgYnV0IHdlCiAg
ICAgLy8gYWxzbyBkZXBlbmQgb24gdGhlIHVybCBOT1QgZ2V0dGluZyBpbW1lZGlhdGVseSBzZXQg
aW4gb3BlbmVkIHdpbmRvd3MuCkBAIC01NDcsNyArNTYwLDggQEAgUmVmPERvY3VtZW50PiBEb2N1
bWVudDo6Y3JlYXRlKERvY3VtZW50JiBjb250ZXh0RG9jdW1lbnQpCiAKIERvY3VtZW50Ojp+RG9j
dW1lbnQoKQogewotICAgIGFsbERvY3VtZW50cygpLnJlbW92ZSh0aGlzKTsKKyAgICBib29sIHdh
c1JlbW92ZWQgPSBhbGxEb2N1bWVudHNNYXAoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHdhc1JlbW92ZWQsIHdhc1JlbW92ZWQpOwogCiAgICAgQVNTRVJUKCFyZW5k
ZXJWaWV3KCkpOwogICAgIEFTU0VSVChtX3BhZ2VDYWNoZVN0YXRlICE9IEluUGFnZUNhY2hlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKaW5kZXggNDg4ZTEyYzYyNmYuLjNlYTllMDQyMmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtMzQ3LDcgKzM0NywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJl
bW92ZWRMYXN0UmVmKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgSGFzaFNldDxEb2N1
bWVudCo+JiBhbGxEb2N1bWVudHMoKTsKKyAgICB1c2luZyBJZGVudGlmaWVyID0gdWludDY0X3Q7
CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVy
OyB9CisKKyAgICB1c2luZyBEb2N1bWVudHNNYXAgPSBIYXNoTWFwPElkZW50aWZpZXIsIERvY3Vt
ZW50Kj47CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIERvY3VtZW50c01hcDo6VmFsdWVzSXRl
cmF0b3JSYW5nZSBhbGxEb2N1bWVudHMoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRG9j
dW1lbnRzTWFwJiBhbGxEb2N1bWVudHNNYXAoKTsKIAogICAgIE1lZGlhUXVlcnlNYXRjaGVyJiBt
ZWRpYVF1ZXJ5TWF0Y2hlcigpOwogCkBAIC0xODI5LDYgKzE4MzQsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9ncmFudFN0b3JhZ2VBY2Nlc3NPdmVycmlkZSB7IGZhbHNlIH07CiAKICAgICBSZWZQ
dHI8RG9jdW1lbnRUaW1lbGluZT4gbV90aW1lbGluZTsKKyAgICBJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKIH07CiAKIEVsZW1lbnQqIGV2ZW50VGFyZ2V0RWxlbWVudEZvckRvY3VtZW50KERvY3Vt
ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
aW5kZXggOTJlOTA1OWI5YTAuLjEzYjFkYjRiNTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJO
b0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgpAQCAtNDUsNiArNDYsNyBAQAog
I2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJXb3JrZXJHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2lu
Y2x1ZGUgIldvcmtlclRocmVhZC5oIgogI2luY2x1ZGUgPGhlYXAvU3Ryb25nSW5saW5lcy5oPgog
I2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaD4KQEAgLTUyNSw0ICs1MjcsMTgg
QEAgSlNDOjpFeGVjU3RhdGUqIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmV4ZWNTdGF0ZSgpCiAg
ICAgcmV0dXJuIGV4ZWNTdGF0ZUZyb21Xb3JrZXJHbG9iYWxTY29wZSh3b3JrZXJHbG9iYWxTY29w
ZSk7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCitTZXJ2aWNlV29ya2VyQ29udGFp
bmVyKiBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXJ2aWNlV29ya2VyQ29udGFpbmVyKCkKK3sK
KyAgICBOYXZpZ2F0b3JCYXNlKiBuYXZpZ2F0b3IgPSBudWxscHRyOworICAgIGlmIChpczxEb2N1
bWVudD4oKnRoaXMpKSB7CisgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxEb2N1
bWVudD4oKnRoaXMpLmRvbVdpbmRvdygpKQorICAgICAgICAgICAgbmF2aWdhdG9yID0gd2luZG93
LT5uYXZpZ2F0b3IoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbmF2aWdhdG9yID0gJmRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPigqdGhpcykubmF2aWdhdG9yKCk7CisKKyAgICByZXR1cm4gbmF2
aWdhdG9yID8gbmF2aWdhdG9yLT5zZXJ2aWNlV29ya2VyKCkgOiBudWxscHRyOworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oCmluZGV4IDI2NmY0OWFlZWMwLi41MjE4YmU4NTIzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCkBAIC02OCw2ICs2OCwxMCBA
QCBjbGFzcyBTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3MgVVJM
OwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorY2xhc3MgU2VydmljZVdvcmtlckNvbnRh
aW5lcjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgSURCQ2xpZW50IHsKIGNsYXNzIElEQkNvbm5lY3Rp
b25Qcm94eTsKIH0KQEAgLTIzNCw2ICsyMzgsOCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogICAgIHVpbnQ2NF90IHNlbGVjdGVkU2VydmljZVdvcmtlcklkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CiAgICAgdm9pZCBz
ZXRTZWxlY3RlZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKHVpbnQ2NF90IGlkZW50aWZpZXIpIHsg
bV9zZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KKworICAgIFNlcnZpY2VX
b3JrZXJDb250YWluZXIqIHNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKICNlbmRpZgogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ci5jcHAKaW5kZXggMTc5NjRlYWQ2MDQuLjBjZjlhODE2NDJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCkBAIC02OSw3ICs2OSw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXI6OnBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOb3RT
dXBwb3J0ZWRFcnJvciwgQVNDSUlMaXRlcmFsKCJQYXNzaW5nIE1lc3NhZ2VQb3J0IG9iamVjdHMg
dG8gcG9zdE1lc3NhZ2UgaXMgbm90IHlldCBzdXBwb3J0ZWQiKSB9OwogCiAgICAgYXV0byYgc3dD
b25uZWN0aW9uID0gU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29y
a2VyQ29ubmVjdGlvbkZvclNlc3Npb24oY29udGV4dC5zZXNzaW9uSUQoKSk7Ci0gICAgc3dDb25u
ZWN0aW9uLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUobV9pZGVudGlmaWVy
LCBtZXNzYWdlLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0Lm9yaWdpbigpKTsKKyAgICBz
d0Nvbm5lY3Rpb24ucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShtX2lkZW50
aWZpZXIsIG1lc3NhZ2UucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnRleHQpOwogCiAgICAgcmV0
dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ2xpZW50LmNwcAppbmRleCBjZDMwMWQwODgyMy4uZDM1ZWY1ZTE0Y2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
ckNsaWVudC5jcHAKQEAgLTI4LDE0ICsyOCwyNyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJNZXNzYWdl
UG9ydC5oIgorI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIKKyNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisj
aW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVGhyZWFkLmgi
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU2VydmljZVdvcmtlckNsaWVudDo6U2VydmljZVdv
cmtlckNsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBUeXBlIHR5cGUpCitT
ZXJ2aWNlV29ya2VyQ2xpZW50OjpTZXJ2aWNlV29ya2VyQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIFR5cGUgdHlwZSkK
ICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQorICAgICwgbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKIH0KIAorU2VydmljZVdv
cmtlckNsaWVudDo6flNlcnZpY2VXb3JrZXJDbGllbnQoKQoreworfQorCiBTdHJpbmcgU2Vydmlj
ZVdvcmtlckNsaWVudDo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4geyB9OwpAQCAtNDgsMTQg
KzYxLDM2IEBAIGF1dG8gU2VydmljZVdvcmtlckNsaWVudDo6ZnJhbWVUeXBlKCkgY29uc3QgLT4g
RnJhbWVUeXBlCiAKIFN0cmluZyBTZXJ2aWNlV29ya2VyQ2xpZW50OjppZCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gbV9pZGVudGlmaWVyLnRvU3RyaW5nKCk7CiB9CiAK
LUV4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJDbGllbnQ6OnBvc3RNZXNzYWdlKEpTQzo6
RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2UsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6
OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNlcnZpY2VXb3JrZXJD
bGllbnQ6OnBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEpTQzo6
SlNWYWx1ZSBtZXNzYWdlVmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4m
JiB0cmFuc2ZlcikKIHsKLSAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7Ci0gICAgVU5VU0VEX1BB
UkFNKHRyYW5zZmVyKTsKLSAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiY2xpZW50LnBvc3RNZXNzYWdlKCkgaXMgbm90IHlldCBzdXBwb3J0ZWQi
KSB9OworICAgIGF1dG8qIGV4ZWNTdGF0ZSA9IGNvbnRleHQuZXhlY1N0YXRlKCk7CisgICAgQVNT
RVJUKGV4ZWNTdGF0ZSk7CisKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7
CisgICAgYXV0byBtZXNzYWdlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKmV4ZWNT
dGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKHRyYW5zZmVyKSwgcG9ydHMsIFNlcmlhbGl6YXRp
b25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSk7CisgICAgaWYgKG1lc3NhZ2UuaGFzRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAg
IC8vIERpc2VudGFuZ2xlIHRoZSBwb3J0IGluIHByZXBhcmF0aW9uIGZvciBzZW5kaW5nIGl0IHRv
IHRoZSByZW1vdGUgY29udGV4dC4KKyAgICBhdXRvIGNoYW5uZWxzT3JFeGNlcHRpb24gPSBNZXNz
YWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhXVEZNb3ZlKHBvcnRzKSk7CisgICAgaWYgKGNoYW5u
ZWxzT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBjaGFubmVsc09y
RXhjZXB0aW9uLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIC8vIEZJWE1FOiBTdXBwb3J0IHNl
bmRpbmcgdGhlIGNoYW5uZWxzLgorICAgIGF1dG8gY2hhbm5lbHMgPSBjaGFubmVsc09yRXhjZXB0
aW9uLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmIChjaGFubmVscyAmJiAhY2hhbm5lbHMt
PmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9y
LCBBU0NJSUxpdGVyYWwoIlBhc3NpbmcgTWVzc2FnZVBvcnQgb2JqZWN0cyB0byBwb3N0TWVzc2Fn
ZSBpcyBub3QgeWV0IHN1cHBvcnRlZCIpIH07CisKKyAgICB1aW50NjRfdCBzb3VyY2VJZGVudGlm
aWVyID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS50aHJlYWQo
KS5pZGVudGlmaWVyKCk7CisgICAgY2FsbE9uTWFpblRocmVhZChbbWVzc2FnZSA9IG1lc3NhZ2Uu
cmVsZWFzZVJldHVyblZhbHVlKCksIGRlc3RpbmF0aW9uSWRlbnRpZmllciA9IG1faWRlbnRpZmll
ciwgc291cmNlSWRlbnRpZmllciwgc291cmNlT3JpZ2luID0gY29udGV4dC5vcmlnaW4oKS5pc29s
YXRlZENvcHkoKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0g
U1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICAgICAg
Y29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmln
aW4pOworICAgIH0pOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyQ2xpZW50LmgKaW5kZXggNjliOTFlMDhhMzkuLjZkNDc5NWZmNGMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmgKQEAg
LTI5LDE5ICsyOSwyMyBAQAogCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNsaWVudFR5cGUuaCIKICNp
bmNsdWRlIDxoZWFwL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewotY2xhc3MgRXhlY1N0YXRlOwogY2xhc3MgSlNWYWx1ZTsKIH0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CisKIGNsYXNz
IFNlcnZpY2VXb3JrZXJDbGllbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxTZXJ2aWNlV29ya2VyQ2xp
ZW50PiwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1YmxpYzoKKyAgICB1
c2luZyBJZGVudGlmaWVyID0gU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CisKICAgICB1
c2luZyBUeXBlID0gU2VydmljZVdvcmtlckNsaWVudFR5cGU7CiAgICAgZW51bSBjbGFzcyBGcmFt
ZVR5cGUgewogICAgICAgICBBdXhpbGlhcnksCkBAIC01MCwyMSArNTQsMjQgQEAgcHVibGljOgog
ICAgICAgICBOb25lCiAgICAgfTsKIAotICAgIHN0YXRpYyBSZWY8U2VydmljZVdvcmtlckNsaWVu
dD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFR5cGUgdHlwZSkKKyAg
ICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJDbGllbnQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBUeXBlIHR5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJ2aWNlV29ya2VyQ2xpZW50
KGNvbnRleHQsIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdv
cmtlckNsaWVudChjb250ZXh0LCBpZGVudGlmaWVyLCB0eXBlKSk7CiAgICAgfQogCisgICAgflNl
cnZpY2VXb3JrZXJDbGllbnQoKTsKKwogICAgIFN0cmluZyB1cmwoKSBjb25zdDsKICAgICBGcmFt
ZVR5cGUgZnJhbWVUeXBlKCkgY29uc3Q7CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4g
bV90eXBlOyB9CiAgICAgU3RyaW5nIGlkKCkgY29uc3Q7CiAKLSAgICBFeGNlcHRpb25Pcjx2b2lk
PiBwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlLCBWZWN0
b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIpOworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHBvc3RNZXNzYWdlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBKU0M6OkpTVmFs
dWUgbWVzc2FnZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVy
KTsKIAogcHJvdGVjdGVkOgotICAgIFNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFR5cGUpOworICAgIFNlcnZpY2VXb3JrZXJDbGllbnQoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IElkZW50aWZpZXImLCBUeXBlKTsKIAorICAgIElkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogICAgIFR5cGUgbV90eXBlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCmluZGV4IGY3ZTRh
OThkZTIwLi5kOGFjYWM5OTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50LmlkbApAQCAtMzUsNyArMzUsNyBAQAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZSB0eXBlOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CiAKLSAgICBbQ2FsbFdpdGg9U2NyaXB0U3Rh
dGUsIE1heVRocm93RXhjZXB0aW9uXSB2b2lkIHBvc3RNZXNzYWdlKGFueSBtZXNzYWdlLCBvcHRp
b25hbCBzZXF1ZW5jZTxvYmplY3Q+IHRyYW5zZmVyID0gW10pOworICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBwb3N0TWVzc2FnZShh
bnkgbWVzc2FnZSwgb3B0aW9uYWwgc2VxdWVuY2U8b2JqZWN0PiB0cmFuc2ZlciA9IFtdKTsKIH07
CiAKIGVudW0gRnJhbWVUeXBlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE0NjQ4NTI4ZTE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnRJ
ZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIHsKKyAgICB1aW50NjRfdCBz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0SWRlbnRpZmllcjsKKworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZzo6bnVtYmVyKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSArICItIiArICBTdHJp
bmc6Om51bWJlcihzY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcik7IH0KK307CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uLmNwcAppbmRleCAyNTkxOWFiMWEzOS4uYWJmZGFjYjM3NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTI5LDI1ICsyOSwxMSBAQAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgotI2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250
YWluZXIuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgotI2luY2x1ZGUgIldvcmtl
ck5hdmlnYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBTZXJ2aWNlV29y
a2VyQ29udGFpbmVyKiBjb250YWluZXJGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCi17Ci0gICAgTmF2aWdhdG9yQmFzZSogbmF2aWdhdG9y
ID0gbnVsbHB0cjsKLSAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiB3aW5kb3cgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCkuZG9tV2luZG93KCkp
Ci0gICAgICAgICAgICBuYXZpZ2F0b3IgPSB3aW5kb3ctPm5hdmlnYXRvcigpOwotICAgIH0gZWxz
ZQotICAgICAgICBuYXZpZ2F0b3IgPSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRl
eHQpLm5hdmlnYXRvcigpOwotCi0gICAgcmV0dXJuIG5hdmlnYXRvciA/IG5hdmlnYXRvci0+c2Vy
dmljZVdvcmtlcigpIDogbnVsbHB0cjsKLX0KLQogU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmIHJlZ2lzdHJhdGlvbkRhdGEpCiAgICAg
OiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3JlZ2lzdHJhdGlvbkRhdGEoV1RG
TW92ZShyZWdpc3RyYXRpb25EYXRhKSkKQEAgLTk0LDcgKzgwLDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjp1bnJlZ2lzdGVyKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGNvbnRhaW5lciA9IGNvbnRh
aW5lckZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKmNvbnRleHQpOworICAgIGF1dG8qIGNvbnRh
aW5lciA9IGNvbnRleHQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKICAgICBpZiAoIWNvbnRh
aW5lcikgewogICAgICAgICBwcm9taXNlLT5yZWplY3QoRXhjZXB0aW9uKEludmFsaWRTdGF0ZUVy
cm9yKSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcAppbmRleCA0NmQy
OTkwZTI5Ni4uZTcxNDQzYjAwMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5jcHAKQEAgLTMyLDgg
KzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TZXJ2aWNlV29ya2VyV2luZG93Q2xp
ZW50OjpTZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpCi0gICAgOiBTZXJ2aWNlV29ya2VyQ2xpZW50KGNvbnRleHQsIFR5cGU6OldpbmRvdykK
K1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6OlNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKKyAgICA6IFNlcnZpY2VXb3JrZXJDbGllbnQoY29udGV4dCwgaWRlbnRpZmllciwgVHlwZTo6
V2luZG93KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvU2VydmljZVdvcmtlcldpbmRvd0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaAppbmRleCA4M2M4MGUyODA3Yi4uM2Uy
ZjM5NTZhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyV2luZG93Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQuaApAQCAtMzYsOSArMzYsOSBAQCBjbGFzcyBE
ZWZlcnJlZFByb21pc2U7CiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQgZmluYWwg
OiBwdWJsaWMgU2VydmljZVdvcmtlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxT
ZXJ2aWNlV29ya2VyV2luZG93Q2xpZW50PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKKyAgICBzdGF0aWMgUmVmPFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VydmljZVdvcmtl
cldpbmRvd0NsaWVudChjb250ZXh0KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNl
cnZpY2VXb3JrZXJXaW5kb3dDbGllbnQoY29udGV4dCwgaWRlbnRpZmllcikpOwogICAgIH0KIAog
ICAgIFZpc2liaWxpdHlTdGF0ZSB2aXNpYmlsaXR5U3RhdGUoKSBjb25zdDsKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgbmF2aWdhdGUoY29uc3QgU3RyaW5nJiB1cmwsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYpOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIFNlcnZpY2VXb3Jr
ZXJXaW5kb3dDbGllbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IElkZW50aWZpZXIm
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5k
ZXggNjc4YjkyYjQzNjAuLjk0NmIzZmQ1NjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAt
NTksMTQgKzU5LDE0IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSogU1dDb250ZXh0TWFuYWdl
cjo6c2VydmljZVdvcmtlclRocmVhZFByb3h5KHVpbnQ2NF90IHNlCiAgICAgcmV0dXJuIG1fd29y
a2VyTWFwLmdldChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU1dDb250ZXh0
TWFuYWdlcjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgU1dDb250ZXh0TWFuYWdlcjo6
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlv
blNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1l
c3NhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBhdXRvKiBzZXJ2aWNlV29y
a2VyID0gbV93b3JrZXJNYXAuZ2V0KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBhdXRv
KiBzZXJ2aWNlV29ya2VyID0gbV93b3JrZXJNYXAuZ2V0KGRlc3RpbmF0aW9uU2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogICAgIGlmICghc2VydmljZVdvcmtlcikKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHZhbGlkIE1lc3NhZ2VQb3J0Q2hhbm5lbHMu
Ci0gICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZShXVEZNb3ZlKG1lc3NhZ2UpLCBudWxscHRyLCBzb3VyY2VPcmlnaW4pOworICAg
IHNlcnZpY2VXb3JrZXItPnRocmVhZCgpLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUoV1RGTW92ZShtZXNzYWdlKSwgbnVsbHB0ciwgc291cmNlSWRlbnRpZmllciwgc291cmNl
T3JpZ2luKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmlu
ZGV4IGNkY2NhY2MxYTA3Li45ZDYyNDAwZDQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtMzQs
NiArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0
VmFsdWU7CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiAKIGNsYXNzIFNX
Q29udGV4dE1hbmFnZXIgewogcHVibGljOgpAQCAtNDIsNiArNDMsOCBAQCBwdWJsaWM6CiAgICAg
Y2xhc3MgQ29ubmVjdGlvbiB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Db25uZWN0
aW9uKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyQ2xpZW50KGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJiBkZXN0aW5hdGlv
bklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0
X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luKSA9IDA7CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlv
bihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJik7CkBAIC00OSw3ICs1Miw3IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyVGhyZWFk
KFJlZjxTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eSogc2VydmljZVdvcmtlclRocmVhZFByb3h5KHVpbnQ2NF90
KSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4p
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGll
bnRJZGVudGlmaWVyJiBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdp
bik7CiAKIHByaXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggY2Y3OGU5MTkwMmIuLjZhZGViYmYyZDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29y
a2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlcldp
bmRvd0NsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckxvYWRlclByb3h5LmgiCiAjaW5jbHVkZSAi
V29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC05OSwx
MiArMTAwLDEzIEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cG9zdEZldGNoVGFzayhSZWY8
U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYgY2xpZW50CiAgICAgfSwgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cG9zdE1l
c3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmIG1lc3NhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4mJiBj
aGFubmVscywgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoUmVmPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4mJiBtZXNzYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+JiYgY2hhbm5lbHMsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVy
JiBzb3VyY2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKLSAgICBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NoYW5uZWxzID0gV1RGTW92ZShjaGFu
bmVscyksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VPcmlnaW4gPSBzb3VyY2VP
cmlnaW4uaXNvbGF0ZWRDb3B5KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBt
dXRhYmxlIHsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHRhc2soW2NoYW5uZWxz
ID0gV1RGTW92ZShjaGFubmVscyksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VJ
ZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4gPSBzb3VyY2VPcmlnaW4uaXNvbGF0ZWRDb3B5KCldIChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgYXV0byYg
c2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KTsKICAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmds
ZVBvcnRzKHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShjaGFubmVscykpOwotICAg
ICAgICBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFeHRlbmRhYmxlTWVz
c2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIFdURk1vdmUobWVzc2FnZSksIHNvdXJj
ZU9yaWdpbikpOworICAgICAgICBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291cmNlIHNvdXJjZSA9
IFJlZlB0cjxTZXJ2aWNlV29ya2VyQ2xpZW50PiB7IFNlcnZpY2VXb3JrZXJXaW5kb3dDbGllbnQ6
OmNyZWF0ZShjb250ZXh0LCBzb3VyY2VJZGVudGlmaWVyKSB9OworICAgICAgICBzZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUuZGlzcGF0Y2hFdmVudChFeHRlbmRhYmxlTWVzc2FnZUV2ZW50OjpjcmVh
dGUoV1RGTW92ZShwb3J0cyksIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgeyB9LCBX
VEZNb3ZlKHNvdXJjZSkpKTsKICAgICAgICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLnRocmVh
ZCgpLndvcmtlck9iamVjdFByb3h5KCkuY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfSk7CiAg
ICAgcnVuTG9vcCgpLnBvc3RUYXNrKFdURk1vdmUodGFzaykpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oCmluZGV4IDMzNzMxMzljMmI1Li4yNGYxNTI2ZjdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWw7CiBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU7CiBjbGFzcyBXb3JrZXJMb2FkZXJQcm94eTsKIGNsYXNzIFdv
cmtlck9iamVjdFByb3h5Oworc3RydWN0IFNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyOwog
c3RydWN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTsKIAogdXNpbmcgTWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXkgPSBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4sIDE+
OwpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgV29ya2VyT2JqZWN0UHJveHkmIHdvcmtl
ck9iamVjdFByb3h5KCkgY29uc3QgeyByZXR1cm4gbV93b3JrZXJPYmplY3RQcm94eTsgfQogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwb3N0RmV0Y2hUYXNrKFJlZjxTZXJ2aWNlV29ya2VyRmV0
Y2g6OkNsaWVudD4mJiwgUmVzb3VyY2VSZXF1ZXN0JiYsIEZldGNoT3B0aW9ucyYmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUo
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgc3RkOjp1bmlxdWVfcHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbEFycmF5PiYmLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIHN0ZDo6dW5pcXVlX3B0cjxNZXNzYWdlUG9ydENoYW5u
ZWxBcnJheT4mJiwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogcHJvdGVjdGVkOgogICAg
IFJlZjxXb3JrZXJHbG9iYWxTY29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29u
c3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRCeXBh
c3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4mJiB0
b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbiwgUEFMOjpTZXNzaW9uSUQpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0Ns
aWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDhlOTNjNWUwNmM5Li5kNjI3NWY1OGI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0NsaWVu
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMjgsNyArMjgsMTAgQEAKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uRGF0YS5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJDb250YWluZXIuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySm9iRGF0YS5oIgogCkBAIC0xMDksNiArMTEyLDM1
IEBAIHZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpzdGFydFNjcmlwdEZldGNoRm9yU2VydmVyKHVp
bnQ2NF90IGpvYklkZW50aWZpZXIpCiAgICAgam9iLT5zdGFydFNjcmlwdEZldGNoKCk7CiB9CiAK
K3ZvaWQgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dCh1aW50NjRfdCBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICAv
LyBGSVhNRTogY2xpZW50SWRlbnRpZmllciBjYW4gb25seSBpZGVudGlmeSBhIERvY3VtZW50IGF0
IHRoZSBtb21lbnQuCisgICAgYXV0byogZGVzdGluYXRpb25Eb2N1bWVudCA9IERvY3VtZW50Ojph
bGxEb2N1bWVudHNNYXAoKS5nZXQoZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRl
bnRpZmllcik7CisgICAgaWYgKCFkZXN0aW5hdGlvbkRvY3VtZW50KSB7CisgICAgICAgIFdURkxv
Z0Fsd2F5cygiQ291bGQgbm90IGZpbmQgY2xpZW50IGRvY3VtZW50IHdpdGggdGhlIGdpdmVuIGlk
ZW50aWZpZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIGNvbnRhaW5l
ciA9IGRlc3RpbmF0aW9uRG9jdW1lbnQtPnNlcnZpY2VXb3JrZXJDb250YWluZXIoKTsKKyAgICBp
ZiAoIWNvbnRhaW5lcikgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIHNl
cnZpY2Ugd29ya2VyIGNvbnRhaW5lciBmb3IgY2xpZW50IGRvY3VtZW50Iik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogUGFzcyBpbiBwb3J0cy4KKyAgICBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7CisKKyAgICBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VF
dmVudFNvdXJjZT4gc291cmNlOworICAgIGlmIChkZXN0aW5hdGlvbkRvY3VtZW50LT5zZWxlY3Rl
ZFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKCkgPT0gc291cmNlU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpIHsKKyAgICAgICAgQVNTRVJUKGNvbnRhaW5lci0+Y29udHJvbGxlcigpLT5pZGVudGlmaWVy
KCkgPT0gc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIpOworICAgICAgICBzb3VyY2UgPSBN
ZXNzYWdlRXZlbnRTb3VyY2UgeyBSZWZQdHI8U2VydmljZVdvcmtlcj4geyBjb250YWluZXItPmNv
bnRyb2xsZXIoKSB9IH07CisgICAgfSBlbHNlCisgICAgICAgIHNvdXJjZSA9IE1lc3NhZ2VFdmVu
dFNvdXJjZSB7IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiB7IFNlcnZpY2VXb3JrZXI6OmNyZWF0ZSgq
ZGVzdGluYXRpb25Eb2N1bWVudCwgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIpIH0gfTsK
KworICAgIGF1dG8gbWVzc2FnZUV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShw
b3J0cyksIFdURk1vdmUobWVzc2FnZSksIHNvdXJjZU9yaWdpbiwgeyB9LCBXVEZNb3ZlKHNvdXJj
ZSkpOworICAgIGNvbnRhaW5lci0+ZGlzcGF0Y2hFdmVudChtZXNzYWdlRXZlbnQpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xp
ZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA1MDhhNThhNDlmMi4uYzYxYTYxZTc2YjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV0Ns
aWVudENvbm5lY3Rpb24uaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hl
ZHVsZUpvYihTZXJ2aWNlV29ya2VySm9iJik7CiAgICAgdm9pZCBmaW5pc2hlZEZldGNoaW5nU2Ny
aXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGZhaWxlZEZl
dGNoaW5nU2NyaXB0KFNlcnZpY2VXb3JrZXJKb2ImLCBjb25zdCBSZXNvdXJjZUVycm9yJik7Ci0g
ICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWlu
dDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25T
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc291cmNlKSA9IDA7CiAKICAgICB2aXJ0dWFsIHVpbnQ2NF90
IGlkZW50aWZpZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGhhc1NlcnZpY2VXb3Jr
ZXJSZWdpc3RlcmVkRm9yT3JpZ2luKGNvbnN0IFNlY3VyaXR5T3JpZ2luJikgY29uc3QgPSAwOwpA
QCAtNTksNiArNTksNyBAQCBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWdp
c3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdW5y
ZWdpc3RyYXRpb25Kb2JSZXNvbHZlZEluU2VydmVyKHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGJv
b2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RhcnRT
Y3JpcHRGZXRjaEZvclNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRl
c3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIFJlZjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgc2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYp
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CmluZGV4IDRhZmU3ZTdlMjFjLi4zOWUwZjg5NWRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxpbmdDb25zdHJhaW50cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlYXJjaFBvcHVwTWVudS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
ZXh0SW5kaWNhdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1pbmdGdW5jdGlvbi5oPgpAQCAt
MTkwMSw2ICsxOTAyLDI3IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdSZXF1ZXN0
RGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBUZXh0Q2hlY2tpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCit2b2lkIEFyZ3VtZW50Q29kZXI8
U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlciwg
Y29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAg
ZW5jb2RlciA8PCBpZGVudGlmaWVyLnNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIDw8IGlkZW50
aWZpZXIuc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI7Cit9CisKK2Jvb2wgQXJndW1l
bnRDb2RlcjxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj46OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyLCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAg
ICB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgdWludDY0X3Qgc2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXI7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcikpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlkZW50aWZpZXIgPSB7IHNlcnZlckNvbm5lY3Rp
b25JZGVudGlmaWVyLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllciB9OworICAgIHJl
dHVybiB0cnVlOworfQorI2VuZGlmCisKIHZvaWQgQXJndW1lbnRDb2RlcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0
JiByZXN1bHQpCiB7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKHJlc3VsdC50eXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggMWMyZGM3MDc5
MDMuLjMwOGU5MmU1YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuaApAQCAtMTU3LDYgKzE1NywxMCBAQCBzdHJ1Y3QgTWVkaWFDb25zdHJhaW50czsK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIHVzaW5nIElEQktleVBhdGggPSBWYXJpYW50
PFN0cmluZywgVmVjdG9yPFN0cmluZz4+OwogI2VuZGlmCisKKyNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CisjZW5kaWYKIH0K
IAogbmFtZXNwYWNlIElQQyB7CkBAIC00NzcsNiArNDgxLDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVxdWVzdERhdGE+IHsKICAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlRleHRDaGVja2luZ1JlcXVlc3RE
YXRhJik7CiB9OwogCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQordGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4g
eworICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNsaWVudElkZW50aWZpZXImKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyJik7Cit9OworI2VuZGlm
CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VGV4dENoZWNraW5n
UmVzdWx0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdSZXN1bHQmKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdSZXN1bHQ+IGRlY29kZShEZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGZjMWM1ZjA3NWJiLi4wMDY0MzZmNjUxZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0V4Y2VwdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VydmljZVdvcmtlckpvYkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhLmg+CkBAIC0xMDgsOSArMTA5LDEwIEBAIHZvaWQgV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uOjpzdGFydEZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllciwgdWludDY0X3Qg
c2VydmljCiAgICAgc2VuZFRvQ29udGV4dFByb2Nlc3MoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjpTdGFydEZldGNoKGlkZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVy
LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucykpOwogfQogCi12b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3ZvaWQgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVp
bnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2NyaXB0RXhlY3V0aW9uQ29udGV4
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIHNlbmRUb0Nv
bnRleHRQcm9jZXNzKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6UG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgbWVzc2FnZSwgc291cmNlT3JpZ2luKSk7CisgICAgU2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXIgc291cmNlSWRlbnRpZmllciB7IGlkZW50aWZpZXIoKSwgc291cmNlU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIgfTsKKyAgICBzZW5kVG9Db250ZXh0UHJvY2VzcyhNZXNzYWdl
czo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyR2xvYmFsU2NvcGUgeyBkZXN0aW5hdGlvblNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBtZXNz
YWdlLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4gfSk7CiB9CiAKIHZvaWQgV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uOjpkaWRSZWNlaXZlRmV0Y2hSZXNwb25zZSh1aW50NjRfdCBmZXRjaElk
ZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTM4LDYgKzE0
MCwxMSBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6ZGlkTm90SGFuZGxlRmV0Y2godWlu
dDY0X3QgZmV0Y2hJZGVudGlmaWVyKQogICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJ
ZGVudGlmaWVyKTsKIH0KIAordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnBvc3RNZXNzYWdl
VG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgdWlu
dDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ2xpZW50Q29ubmVjdGlvbjo6UG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQgeyBkZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgc291cmNlT3JpZ2luIH0pOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIFdlYlNX
U2VydmVyQ29ubmVjdGlvbjo6c2VuZFRvQ29udGV4dFByb2Nlc3MoVSYmIG1lc3NhZ2UpCiB7CiAg
ICAgaWYgKCFtX2NvbnRleHRDb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oIGIvU291
cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5oCmluZGV4IDI5MjZlODNlNDMxLi42MDM5N2U5N2MxNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24uaApAQCAtNTcsNiArNTcsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
aWRGYWlsRmV0Y2godWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZE5vdEhh
bmRsZUZldGNoKHVpbnQ2NF90IGZldGNoSWRlbnRpZmllcik7CiAKKyAgICB2b2lkIHBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2NyaXB0RXhlY3V0
aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwg
dWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291
cmNlT3JpZ2luKTsKKwogcHJpdmF0ZToKICAgICAvLyBJbXBsZW1lbnQgU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24gKE1lc3NhZ2VzIHRvIHRoZSBjbGllbnQgV2ViUHJvY2VzcykKICAgICB2b2lkIHJlamVj
dEpvYkluQ2xpZW50KHVpbnQ2NF90IGpvYklkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OkV4Y2Vw
dGlvbkRhdGEmKSBmaW5hbDsKQEAgLTY2LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
c3RhcnRGZXRjaCh1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJD
b3JlOjpGZXRjaE9wdGlvbnMmKTsKIAotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZSh1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7Cisg
ICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRl
c3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgbWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2NyaXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKTsKIAogICAgIC8vIE1lc3NhZ2VzIHRvIHRo
ZSBTVyBjb250ZXh0IFdlYlByb2Nlc3MKICAgICB2b2lkIHN0YXJ0U2VydmljZVdvcmtlckNvbnRl
eHQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhJikgZmluYWw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAz
YjIwNDVjNjQ0NC4uZGU1MTVkOTBiZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJTV1NlcnZlckNvbm5lY3Rpb24gewogICAgIEZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIo
c3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCByZXN1bHQpCiAKICAgICBT
dGFydEZldGNoKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6
OkZldGNoT3B0aW9ucyBvcHRpb25zKQotICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVy
ZW5jZSBtZXNzYWdlLCBTdHJpbmcgc291cmNlT3JpZ2luKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3Jh
Z2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmNwcAppbmRleCA4NzY0Y2QwNzAyZC4uZWNkNTE3MDc4
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3Mu
Y3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRhLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJDbGllbnRJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0Nyb3NzVGhyZWFkVGFzay5oPgpAQCAtNDM1
LDYgKzQzNiwxMiBAQCB2b2lkIFN0b3JhZ2VQcm9jZXNzOjpkaWRGaW5pc2hGZXRjaCh1aW50NjRf
dCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0XwogICAgICAgICBjb25uZWN0aW9u
LT5kaWRGaW5pc2hGZXRjaChmZXRjaElkZW50aWZpZXIpOwogfQogCit2b2lkIFN0b3JhZ2VQcm9j
ZXNzOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBTZXJ2aWNlV29ya2Vy
Q2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sKKyAgICBpZiAoYXV0byogY29ubmVjdGlv
biA9IG1fc3dTZXJ2ZXJDb25uZWN0aW9ucy5nZXQoZGVzdGluYXRpb25JZGVudGlmaWVyLnNlcnZl
ckNvbm5lY3Rpb25JZGVudGlmaWVyKSkKKyAgICAgICAgY29ubmVjdGlvbi0+cG9zdE1lc3NhZ2VU
b1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVudGlmaWVyLnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRJZGVudGlmaWVyLCBtZXNzYWdlLCBzb3VyY2VTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgc291cmNlT3JpZ2luKTsKK30KKwogdm9pZCBTdG9yYWdlUHJvY2Vzczo6cmVnaXN0ZXJTV1Nl
cnZlckNvbm5lY3Rpb24oV2ViU1dTZXJ2ZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogewogICAg
IEFTU0VSVCghbV9zd1NlcnZlckNvbm5lY3Rpb25zLmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRp
ZmllcigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3Jh
Z2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNz
LmgKaW5kZXggYWE4NjQ1Yjc3MWMuLmVjNWUwOGM4NzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5oCkBAIC0zNyw2ICszNyw3IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBTV1NlcnZlcjsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7
CitzdHJ1Y3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI7CiBzdHJ1Y3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleTsKIH0KIApAQCAtMTI1LDYgKzEyNiw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRGaW5pc2hGZXRjaCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZEZhaWxGZXRjaCh1aW50
NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVudGlmaWVy
KTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZUZldGNoKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpOworCisgICAgdm9pZCBwb3N0TWVz
c2FnZVRvU2VydmljZVdvcmtlckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xp
ZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlmaWVyLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbik7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKICAgICBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBpbmRleGVk
RGF0YWJhc2VPcmlnaW5zKGNvbnN0IFN0cmluZyYgcGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2VQcm9jZXNzL1N0b3JhZ2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9TdG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAz
MzkyYWY3MTVkMS4uYWIwOGZjZDEwYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFn
ZVByb2Nlc3MvU3RvcmFnZVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9T
dG9yYWdlUHJvY2Vzcy9TdG9yYWdlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDYsNSArNDYsNiBA
QCBtZXNzYWdlcyAtPiBTdG9yYWdlUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkUmVj
ZWl2ZUZldGNoUmVzcG9uc2UodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IGZldGNoSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSkKICAgICBEaWRSZWNlaXZlRmV0Y2hEYXRhKHVpbnQ2NF90IHNlcnZlckNvbm5lY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
LCBpbnQ2NF90IGVuY29kZWREYXRhTGVuZ3RoKQogICAgIERpZEZpbmlzaEZldGNoKHVpbnQ2NF90
IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIpCisg
ICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0aW9uSWRlbnRpZmllciwgSVBDOjpEYXRh
UmVmZXJlbmNlIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBTdHJpbmcgc291cmNlT3JpZ2luKQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRl
eCAzMDg2ZWE0ZmMwZS4uZTU0MTg4YjU1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMzUs
NiArMzUsOCBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
IldlYlNXT3JpZ2luVGFibGUuaCIKICNpbmNsdWRlICJXZWJTV1NlcnZlckNvbm5lY3Rpb25NZXNz
YWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlckZldGNoUmVzdWx0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySm9iRGF0YS5oPgpAQCAtNjgsOSAr
NzAsMTMgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmZpbmlzaEZldGNoaW5nU2NyaXB0
SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGMKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OkZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIocmVzdWx0KSk7
CiB9CiAKLXZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIHNjcmlwdFZhbHVlLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9y
aWdpbikKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdv
cmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3RpbmF0aW9uU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgc2NyaXB0VmFsdWUsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIHNvdXJjZSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSB7IHNjcmlwdFZhbHVlLT5kYXRhKCkg
fSwgc291cmNlT3JpZ2luKSk7CisgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBwb3N0aW5n
IG1lc3NhZ2VzIGZyb20gd29ya2Vycy4KKyAgICBpZiAoIWlzPERvY3VtZW50Pihzb3VyY2UpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rp
b246OlBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoZGVzdGluYXRpb25TZXJ2
aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIHsgc2NyaXB0VmFsdWUtPmRh
dGEoKSB9LCBkb3duY2FzdDxEb2N1bWVudD4oc291cmNlKS5pZGVudGlmaWVyKCksIHNvdXJjZS5v
cmlnaW4oKSkpOwogfQogCiBib29sIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6aGFzU2VydmljZVdv
cmtlclJlZ2lzdGVyZWRGb3JPcmlnaW4oY29uc3QgU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikgY29u
c3QKQEAgLTkyLDYgKzk4LDExIEBAIFJlZjxTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g+IFdlYlNX
Q2xpZW50Q29ubmVjdGlvbjo6c3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2VyCiAgICAgcmV0dXJu
IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Y3JlYXRlKHByb3ZpZGVyLCBXVEZNb3ZlKGxvYWRl
ciksIGlkZW50aWZpZXIsIG1fY29ubmVjdGlvbi5nZXQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwog
fQogCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3Jr
ZXJDbGllbnQodWludDY0X3QgZGVzdGluYXRpb25TY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCB1aW50NjRfdCBzb3VyY2VT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCit7Cisg
ICAgU1dDbGllbnRDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChk
ZXN0aW5hdGlvblNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVjdG9yKCkpLCBzb3VyY2VTZXJ2aWNlV29ya2VySWRl
bnRpZmllciwgc291cmNlT3JpZ2luKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNl
bmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDFjZDI5
Mjk5ZTNmLi4yN2NkYmEyYTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTU2LDcgKzU2LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJKb2JEYXRhJikgZmluYWw7CiAgICAgdm9pZCBmaW5pc2hGZXRjaGluZ1Njcmlw
dEluU2VydmVyKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpIGZpbmFs
OwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRf
dCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOworICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSh1aW50NjRfdCBkZXN0aW5hdGlvblNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiYmLCBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzb3VyY2UpIGZpbmFsOwogCiAg
ICAgdm9pZCBkaXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC02NCw2
ICs2NCw4IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RlcmVkRm9y
T3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJikgY29uc3QgZmluYWw7CiAgICAg
UmVmPFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaD4gc3RhcnRGZXRjaChXZWJTZXJ2aWNlV29ya2Vy
UHJvdmlkZXImLCBSZWY8V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI+JiYsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6Q2FsbGJhY2smJik7CiAKKyAgICB2b2lk
IHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xpZW50KHVpbnQ2NF90IGRlc3RpbmF0aW9uU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dElkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
bWVzc2FnZSwgdWludDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlU3RvcmFn
ZUpvYihjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggMTE1NWQxYmFhZDguLjkxMWNmMTAyZTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0zMCw2ICszMCw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlNXQ2xpZW50Q29ubmVjdGlvbiB7CiAgICAgU3RhcnRTY3JpcHRGZXRjaEZv
clNlcnZlcih1aW50NjRfdCBqb2JJZGVudGlmaWVyKQogCiAgICAgU2V0U1dPcmlnaW5UYWJsZVNo
YXJlZE1lbW9yeShXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SGFuZGxlIGhhbmRsZSkKKyAgICBQb3N0
TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudCh1aW50NjRfdCBkZXN0aW5hdGlvblNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSwgdWlu
dDY0X3Qgc291cmNlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIFN0cmluZyBzb3VyY2VPcmlnaW4p
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggM2QwYjI3ZDljZGIuLjA3OWEyOGYwYzg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xMzAsOSArMTMwLDE0IEBAIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2godWludDY0X3Qgc2VydmVy
Q29ubmVjdGlvbklkZW50aWZpCiAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT50aHJlYWQo
KS5wb3N0RmV0Y2hUYXNrKFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShvcHRpb25zKSk7CiB9CiAKLXZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VPcmlnaW4pCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpw
b3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IGRlc3RpbmF0aW9u
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgbWVzc2Fn
ZSwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXImIHNvdXJjZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luKQogewotICAgIFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoc2VydmljZVdv
cmtlcklkZW50aWZpZXIsIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQobWVzc2FnZS52ZWN0
b3IoKSksIHNvdXJjZU9yaWdpbik7CisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCku
cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZShkZXN0aW5hdGlvblNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KG1lc3NhZ2UudmVj
dG9yKCkpLCBzb3VyY2VJZGVudGlmaWVyLCBzb3VyY2VPcmlnaW4pOworfQorCit2b2lkIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVu
dChjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25JZGVudGlm
aWVyLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2UsIHVpbnQ2NF90IHNvdXJj
ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKK3sK
KyAgICBtX2Nvbm5lY3Rpb25Ub1N0b3JhZ2VQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdl
UHJvY2Vzczo6UG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoZGVzdGluYXRpb25JZGVu
dGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyBtZXNzYWdlLT5kYXRhKCkgfSwgc291cmNlU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIHNvdXJjZU9yaWdpbiksIDApOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCAwNDZkMjI2
M2I2NC4uMmRhMDk2YzE2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAt
NDEsMTkgKzQxLDIyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZTsKIAotY2xhc3MgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gOiBwdWJsaWMg
V2ViQ29yZTo6U1dDb250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKK2NsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogCi0gICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luKTsKLQogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmKTsKIAorICAgIC8vIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb24uCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgZGVzdGluYXRpb25J
ZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIG1lc3NhZ2Us
IHVpbnQ2NF90IHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikgZmluYWw7CisKKyAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBzdGFy
dFNlcnZpY2VXb3JrZXIodWludDY0X3Qgc2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYpOwogICAgIHZvaWQgc3RhcnRGZXRj
aCh1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgdWludDY0X3QgZmV0Y2hJZGVu
dGlmaWVyLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmKTsKKyAgICB2b2lkIHBvc3RNZXNz
YWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3QgZGVzdGluYXRpb25TZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBtZXNzYWdlLCBjb25z
dCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYgc291cmNlSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pOwogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlv
bj4gbV9jb25uZWN0aW9uVG9TdG9yYWdlUHJvY2VzczsKICAgICB1aW50NjRfdCBtX3BhZ2VJRCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
aW5kZXggNWQ3MmQxYjVmODMuLjk0YjhlMDMxYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQAogbWVzc2FnZXMg
LT4gV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gewogICAgIFN0YXJ0U2VydmljZVdvcmtl
cih1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciwgc3RydWN0IFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YSBjb250ZXh0RGF0YSkKICAgICBTdGFydEZldGNoKHVpbnQ2
NF90IHNlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBmZXRjaElkZW50aWZpZXIs
IHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyBvcHRpb25zKQotICAgIFBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlLCBTdHJpbmcgc291cmNlT3Jp
Z2luKQorICAgIFBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUodWludDY0X3Qg
ZGVzdGluYXRpb25TZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlIG1l
c3NhZ2UsIHN0cnVjdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciBzb3Vy
Y2VJZGVudGlmaWVyLCBTdHJpbmcgc291cmNlT3JpZ2luKQogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325610</attachid>
            <date>2017-11-01 12:09:34 -0700</date>
            <delta_ts>2017-11-01 12:55:09 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>split_SW_JobQueues_2_wip.patch</filename>
            <type>text/plain</type>
            <size>48177</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL1NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS9w
b3N0bWVzc2FnZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvU2VydmljZVdvcmtlckds
b2JhbFNjb3BlL3Bvc3RtZXNzYWdlLmh0dHBzLmh0bWwKaW5kZXggMTcwNDZlZWRjNmIuLjc2N2Q3
OTFkNjFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2aWNlV29ya2VyR2xvYmFs
U2NvcGUvcG9zdG1lc3NhZ2UuaHR0cHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9TZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUvcG9zdG1lc3NhZ2UuaHR0cHMuaHRtbApAQCAtNTMsNyArNTMs
NyBAQCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24odCkgewogICAgICAgICAgIHJldHVybiBuYXZpZ2F0
b3Iuc2VydmljZVdvcmtlci5yZWdpc3RlcihzY3JpcHQyLCB7c2NvcGU6IHNjb3BlfSk7CiAgICAg
ICAgIH0pCiAgICAgICAudGhlbihmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgcmV0dXJuIHdhaXRf
Zm9yX3N0YXRlKHQsIHIuaW5zdGFsbGluZywgJ2luc3RhbGxlZCcpOworICAgICAgICAgIHJldHVy
biB3YWl0X2Zvcl9zdGF0ZSh0LCByLmluc3RhbGxpbmcsICdhY3RpdmF0ZWQnKTsKICAgICAgICAg
fSkKICAgICAgIC50aGVuKGZ1bmN0aW9uKCkgewogICAgICAgICAgIHZhciBjaGFubmVsID0gbmV3
IE1lc3NhZ2VDaGFubmVsKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9tdWx0aS1n
bG9iYWxzL3VybC1wYXJzaW5nLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L211bHRpLWdsb2JhbHMvdXJsLXBhcnNpbmcuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDE0YjE5
NGFmMzg1Li5jZTBiOTlhNzZhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvbXVsdGkt
Z2xvYmFscy91cmwtcGFyc2luZy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvbXVsdGktZ2xvYmFscy91cmwtcGFyc2luZy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEs
NiArMSw2IEBACiAKIAogUEFTUyByZWdpc3RlciBzaG91bGQgdXNlIHRoZSByZWxldmFudCBnbG9i
YWwgb2YgdGhlIG9iamVjdCBpdCB3YXMgY2FsbGVkIG9uIHRvIHJlc29sdmUgdGhlIHNjcmlwdCBV
UkwgYW5kIHRoZSBkZWZhdWx0IHNjb3BlIFVSTCAKLUZBSUwgcmVnaXN0ZXIgc2hvdWxkIHVzZSB0
aGUgcmVsZXZhbnQgZ2xvYmFsIG9mIHRoZSBvYmplY3QgaXQgd2FzIGNhbGxlZCBvbiB0byByZXNv
bHZlIHRoZSBzY3JpcHQgVVJMIGFuZCB0aGUgZ2l2ZW4gc2NvcGUgVVJMIGFzc2VydF9lcXVhbHM6
IHRoZSBnaXZlbiBzY29wZSBVUkwgc2hvdWxkIGJlIHBhcnNlZCBhZ2FpbnN0IHRoZSByZWxldmFu
dCBnbG9iYWwgZXhwZWN0ZWQgImh0dHBzOi8vbG9jYWxob3N0Ojk0NDMvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyL211bHRpLWdsb2JhbHMvcmVsZXZhbnQvc2NvcGUiIGJ1dCBnb3QgImh0
dHBzOi8vbG9jYWxob3N0Ojk0NDMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL211bHRp
LWdsb2JhbHMvcmVsZXZhbnQvIgorUEFTUyByZWdpc3RlciBzaG91bGQgdXNlIHRoZSByZWxldmFu
dCBnbG9iYWwgb2YgdGhlIG9iamVjdCBpdCB3YXMgY2FsbGVkIG9uIHRvIHJlc29sdmUgdGhlIHNj
cmlwdCBVUkwgYW5kIHRoZSBnaXZlbiBzY29wZSBVUkwgCiBGQUlMIGdldFJlZ2lzdHJhdGlvbiBz
aG91bGQgdXNlIHRoZSByZWxldmFudCBnbG9iYWwgb2YgdGhlIG9iamVjdCBpdCB3YXMgY2FsbGVk
IG9uIHRvIHJlc29sdmUgdGhlIHNjcmlwdCBVUkwgYXNzZXJ0X25vdF9lcXVhbHM6IHRoZSByZWdp
c3RyYXRpb24gZnJvbSB0aGUgb3RoZXIgZnJhbWUgc2hvdWxkIG5vdCBiZSBudWxsIGdvdCBkaXNh
bGxvd2VkIHZhbHVlIG51bGwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVnaXN0
cmF0aW9uLWJhc2ljLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZ2lz
dHJhdGlvbi1iYXNpYy5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggMDkyMGRiNjFiZWYuLjYyOWVh
ZDYxZTliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZWdpc3RyYXRpb24tYmFzaWMu
aHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZ2lzdHJhdGlvbi1i
YXNpYy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAKIFBBU1MgUmVnaXN0ZXJp
bmcgbm9ybWFsIHNjb3BlIAotRkFJTCBSZWdpc3RlcmluZyBzY29wZSB3aXRoIGZyYWdtZW50IGFz
c2VydF9lcXVhbHM6IEEgZnJhZ21lbnQgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSBzY29wZSBleHBl
Y3RlZCAiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0My9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvcmVzb3VyY2VzL3JlZ2lzdHJhdGlvbi9zY29wZS13aXRoLWZyYWdtZW50IiBidXQgZ290ICJo
dHRwczovL2xvY2FsaG9zdDo5NDQzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNv
dXJjZXMvcmVnaXN0cmF0aW9uL25vcm1hbCIKK1BBU1MgUmVnaXN0ZXJpbmcgc2NvcGUgd2l0aCBm
cmFnbWVudCAKIFBBU1MgUmVnaXN0ZXJpbmcgc2FtZSBzY29wZSBhcyB0aGUgc2NyaXB0IGRpcmVj
dG9yeSAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVnaXN0cmF0aW9uLXNjb3Bl
Lmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZ2lzdHJhdGlvbi1zY29w
ZS5odHRwcy1leHBlY3RlZC50eHQKaW5kZXggODVmMDhmYzlmMWYuLmQ0YTVhYjFhODZiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZWdpc3RyYXRpb24tc2NvcGUuaHR0cHMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3JlZ2lzdHJhdGlvbi1zY29wZS5odHRwcy1l
eHBlY3RlZC50eHQKQEAgLTIsOSArMiw5IEBACiBQQVNTIFNjb3BlIGluY2x1ZGluZyBVUkwtZW5j
b2RlZCBzbGFzaCAKIFBBU1MgU2NvcGUgaW5jbHVkaW5nIFVSTC1lbmNvZGVkIGJhY2tzbGFzaCAK
IFBBU1MgU2NvcGUgaW5jbHVkaW5nIFVSTC1lbmNvZGVkIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIAot
RkFJTCBTY29wZSBpbmNsdWRpbmcgbm9uLWVzY2FwZWQgbXVsdGlieXRlIGNoYXJhY3RlcnMgYXNz
ZXJ0X2VxdWFsczogTm9uLVVSTC1lbmNvZGVkIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIHNob3VsZCBi
ZSBhdmFpbGFibGUuIGV4cGVjdGVkICJodHRwczovL2xvY2FsaG9zdDo5NDQzL3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvJUVGJUJEJTkzJUVGJUJEJTgzJUVGJUJEJThG
JUVGJUJEJTkwJUVGJUJEJTg1L25vbi1lc2NhcGVkLW11bHRpYnl0ZS1jaGFyYWN0ZXItc2NvcGUi
IGJ1dCBnb3QgImh0dHBzOi8vbG9jYWxob3N0Ojk0NDMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyL3Jlc291cmNlcy8lZWYlYmQlOTMlZWYlYmQlODMlZWYlYmQlOGYlZWYlYmQlOTAlZWYl
YmQlODUvZXNjYXBlZC1tdWx0aWJ5dGUtY2hhcmFjdGVyLXNjb3BlIgotRkFJTCBTY29wZSBpbmNs
dWRpbmcgc2VsZi1yZWZlcmVuY2UgYXNzZXJ0X2VxdWFsczogU2NvcGUgaW5jbHVkaW5nIHNlbGYt
cmVmZXJlbmNlIHNob3VsZCBiZSBub3JtYWxpemVkLiBleHBlY3RlZCAiaHR0cHM6Ly9sb2NhbGhv
c3Q6OTQ0My9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvcmVzb3VyY2VzL3Njb3BlL3Nl
bGYtcmVmZXJlbmNlLWluLXNjb3BlIiBidXQgZ290ICJodHRwczovL2xvY2FsaG9zdDo5NDQzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvJWVmJWJkJTkzJWVmJWJkJTgz
JWVmJWJkJThmJWVmJWJkJTkwJWVmJWJkJTg1L2VzY2FwZWQtbXVsdGlieXRlLWNoYXJhY3Rlci1z
Y29wZSIKLUZBSUwgU2NvcGUgaW5jbHVkaW5nIHBhcmVudC1yZWZlcmVuY2UgYXNzZXJ0X2VxdWFs
czogU2NvcGUgaW5jbHVkaW5nIHBhcmVudC1yZWZlcmVuY2Ugc2hvdWxkIGJlIG5vcm1hbGl6ZWQu
IGV4cGVjdGVkICJodHRwczovL2xvY2FsaG9zdDo5NDQzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci9yZXNvdXJjZXMvc2NvcGUvcGFyZW50LXJlZmVyZW5jZS1pbi1zY29wZSIgYnV0IGdv
dCAiaHR0cHM6Ly9sb2NhbGhvc3Q6OTQ0My9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
cmVzb3VyY2VzLyVlZiViZCU5MyVlZiViZCU4MyVlZiViZCU4ZiVlZiViZCU5MCVlZiViZCU4NS9l
c2NhcGVkLW11bHRpYnl0ZS1jaGFyYWN0ZXItc2NvcGUiCi1GQUlMIFNjb3BlIGluY2x1ZGluZyBj
b25zZWN1dGl2ZSBzbGFzaGVzIGFzc2VydF9lcXVhbHM6IFNob3VsZCBzdWNjZXNzZnVsbHkgYmUg
cmVnaXN0ZXJlZC4gZXhwZWN0ZWQgImh0dHBzOi8vbG9jYWxob3N0Ojk0NDMvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyL3Jlc291cmNlcy9zY29wZS8vLy9jb25zZWN1dGl2ZS1zbGFzaGVz
LWluLXNjb3BlIiBidXQgZ290ICJodHRwczovL2xvY2FsaG9zdDo5NDQzL3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvJWVmJWJkJTkzJWVmJWJkJTgzJWVmJWJkJThmJWVm
JWJkJTkwJWVmJWJkJTg1L2VzY2FwZWQtbXVsdGlieXRlLWNoYXJhY3Rlci1zY29wZSIKK1BBU1Mg
U2NvcGUgaW5jbHVkaW5nIG5vbi1lc2NhcGVkIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIAorUEFTUyBT
Y29wZSBpbmNsdWRpbmcgc2VsZi1yZWZlcmVuY2UgCitQQVNTIFNjb3BlIGluY2x1ZGluZyBwYXJl
bnQtcmVmZXJlbmNlIAorUEFTUyBTY29wZSBpbmNsdWRpbmcgY29uc2VjdXRpdmUgc2xhc2hlcyAK
IEZBSUwgU2NvcGUgVVJMIGlzIHNhbWUtb3JpZ2luIGZpbGVzeXN0ZW06IFVSTCBhc3NlcnRfdGhy
b3dzOiBSZWdpc3RlcmluZyB3aXRoIHRoZSBzY29wZSB0aGF0IGhhcyBzYW1lLW9yaWdpbiBmaWxl
c3lzdGVtOiBVUkwgc2hvdWxkIGZhaWwgd2l0aCBTZWN1cml0eUVycm9yLiBmdW5jdGlvbiAiZnVu
Y3Rpb24gKCkgeyB0aHJvdyBlIH0iIHRocmV3IG9iamVjdCAiVHlwZUVycm9yOiBTY29wZSBVUkwg
cHJvdmlkZWQgdG8gc2VydmljZVdvcmtlci5yZWdpc3RlcigpIG11c3QgYmUgZWl0aGVyIEhUVFAg
b3IgSFRUUFMiIHRoYXQgaXMgbm90IGEgRE9NRXhjZXB0aW9uIFNlY3VyaXR5RXJyb3I6IHByb3Bl
cnR5ICJjb2RlIiBpcyBlcXVhbCB0byB1bmRlZmluZWQsIGV4cGVjdGVkIDE4CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyL3NlcnZpY2V3b3JrZXJvYmplY3Qtc2NyaXB0dXJsLmh0dHBz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3NlcnZpY2V3b3JrZXJvYmplY3Qtc2Ny
aXB0dXJsLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAwMmM2YTVmMGRkYi4uYjZlNzMxZDMxMTAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3NlcnZpY2V3b3JrZXJvYmplY3Qtc2NyaXB0
dXJsLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9zZXJ2aWNld29y
a2Vyb2JqZWN0LXNjcmlwdHVybC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNSArMSw1IEBACiAK
IFBBU1MgVmVyaWZ5IHRoZSBzY3JpcHRVUkwgcHJvcGVydHk6IHJlbGF0aXZlIAotUEFTUyBWZXJp
ZnkgdGhlIHNjcmlwdFVSTCBwcm9wZXJ0eTogd2l0aC1mcmFnbWVudCAKK0ZBSUwgVmVyaWZ5IHRo
ZSBzY3JpcHRVUkwgcHJvcGVydHk6IHdpdGgtZnJhZ21lbnQgYXNzZXJ0X2VxdWFsczogUmV0dXJu
ZWQgU2VydmljZVdvcmtlciBvYmplY3Qgc2hvdWxkIGhhdmUgc2NyaXB0VVJMIGV4cGVjdGVkICJo
dHRwczovL2xvY2FsaG9zdDo5NDQzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNv
dXJjZXMvZW1wdHktd29ya2VyLmpzIiBidXQgZ290ICJodHRwczovL2xvY2FsaG9zdDo5NDQzL3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9yZXNvdXJjZXMvZW1wdHktd29ya2VyLmpzI3Jl
ZiIKIFBBU1MgVmVyaWZ5IHRoZSBzY3JpcHRVUkwgcHJvcGVydHk6IGFic29sdXRlIAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9za2lwLXdhaXRpbmcuaHR0cHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXIvc2tpcC13YWl0aW5nLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRl
eCBlM2UwNWQwOTdiMy4uYTdkNDY1ODRmMzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2Vy
L3NraXAtd2FpdGluZy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIv
c2tpcC13YWl0aW5nLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBU
ZXN0IHNraXBXYWl0aW5nIHdpdGggYm90aCBhY3RpdmUgYW5kIHdhaXRpbmcgd29ya2VycyBwcm9t
aXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJy
b3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnd2FpdGluZ193b3JrZXIuc2Ny
aXB0VVJMJykiCitGQUlMIFRlc3Qgc2tpcFdhaXRpbmcgd2l0aCBib3RoIGFjdGl2ZSBhbmQgd2Fp
dGluZyB3b3JrZXJzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVl
OiBvYmplY3QgIlR5cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdh
Y3RpdmF0ZWRfd29ya2VyLnNjcmlwdFVSTCcpIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci91bnJlZ2lzdGVyLWNvbnRyb2xsZXIuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXIvdW5yZWdpc3Rlci1jb250cm9sbGVyLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCBm
MGJlZjM4MmRiZi4uZjllYjI1NWIyYzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3Vu
cmVnaXN0ZXItY29udHJvbGxlci5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvdW5yZWdpc3Rlci1jb250cm9sbGVyLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsx
LDYgQEAKIAogCiBGQUlMIFVucmVnaXN0ZXIgZG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGNvbnRy
b2xsZXIgYXNzZXJ0X3VucmVhY2hlZDogdW5leHBlY3RlZCByZWplY3Rpb246IGFzc2VydF90cnVl
OiBkb2N1bWVudCBzaG91bGQgbG9hZCB3aXRoIGEgY29udHJvbGxlciBleHBlY3RlZCB0cnVlIGdv
dCBmYWxzZSBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKLUZBSUwgVW5yZWdpc3RlciBwcmV2ZW50
cyBjb250cm9sIG9mIHN1YnNlcXVlbnQgbmF2aWdhdGlvbnMgYXNzZXJ0X3VucmVhY2hlZDogdW5l
eHBlY3RlZCByZWplY3Rpb246IGFzc2VydF9lcXVhbHM6IHJlcXVlc3RzIHNob3VsZCBub3QgYmUg
aW50ZXJjZXB0ZWQgZXhwZWN0ZWQgImEgc2ltcGxlIHRleHQgZmlsZVxuIiBidXQgZ290ICJFUlJP
UiIgUmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCitQQVNTIFVucmVnaXN0ZXIgcHJldmVudHMgY29u
dHJvbCBvZiBzdWJzZXF1ZW50IG5hdmlnYXRpb25zIAogUEFTUyBVbnJlZ2lzdGVyIHByZXZlbnRz
IG5ldyBjb250cm9sbGVlIGV2ZW4gaWYgcmVnaXN0cmF0aW9uIGlzIHN0aWxsIGluIHVzZSAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCBjNzZmNzhiMzgyMy4uYzJhNDAzM2NjMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC0yMTc0LDYgKzIxNzQsNyBAQCB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRN
YW5hZ2VyLmNwcAogCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5j
cHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCit3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDA3OGEzYWI1MGM0Li4zOGI0YmE1M2YzYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE2OCw2ICsyMTY4
LDcgQEAKIAkJODMwNzg0QjIxQzUyRUUyQzAwMTA0RDFEIC8qIFhNTERvY3VtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA3ODRCMTFDNTJFRTE5
MDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4MzBBMzZCRDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3VzZUV2
ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODMwQTM2QkIxREFDNUZBNzAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCAqLzsgfTsKIAkJ
ODMxMDJCMjcxRjlFQUREOTAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMDJCMjMxRjlF
QURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovOyB9OworCQk4MzEx
QzAwMzFGQUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1
IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4MzEyMEM3MTFDNTZGM0ZCMDAxQ0IxMTIgLyogSFRNTERhdGFFbGVt
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzRC
ODZBNzFDNTZFODNBMDBGM0YwRTMgLyogSFRNTERhdGFFbGVtZW50LmggKi87IH07CiAJCTgzMjE1
MDdFMUYyN0VBMUIwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjE1MDdCMUYyN0VBMTUwMDk1QjEzNiAv
KiBOYXZpZ2F0b3JCZWFjb24uaCAqLzsgfTsKIAkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1IC8q
IFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVFbGVt
ZW50QmFzZS5oICovOyB9OwpAQCAtOTM3Myw2ICs5Mzc0LDggQEAKIAkJODMwQTM2QkIxREFDNUZB
NzAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4MzEwMkIyMzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzEwMkIyNTFGOUVBREMyMDBFNDA0
QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpv
YlF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2VydmVy
Sm9iUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzExQzAwMjFGQUEy
RTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTgzMUM0NkMzMUY5RUU1RTAwMEVCRDQ1MCAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnRD
dXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRh
YmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
ODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8qIEhUTUxEYXRhRWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4MzIxNTA3QTFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdh
dG9yQmVhY29uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvckJlYWNvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEzMiw2ICsxNzEzNSw4IEBACiAJCQkJNTE3
QTUyRkYxRjQ3OENDRTAwRENEQzBBIC8qIFNXQ2xpZW50Q29ubmVjdGlvbi5oICovLAogCQkJCTUx
N0E1MkVGMUY0NzUzNTkwMERDREMwQSAvKiBTV1NlcnZlci5jcHAgKi8sCiAJCQkJNTE3QTUyRUUx
RjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVyLmggKi8sCisJCQkJODMxMUMwMDAxRkFBMkU4OTAw
RTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuY3BwICovLAorCQkJCTgzMTFDMDAyMUZBQTJFODkw
MEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi8sCiAJCQkJNTFGNjQ1OTUxRjRBNjg2MTAw
QjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCAqLywKIAkJCQk1MUY2NDU5NDFGNEE2
ODRGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCAqLywKIAkJCQk1MTdBNTM0MzFG
NTBDMTYxMDBEQ0RDMEEgLyogU1dTZXJ2ZXJXb3JrZXIuY3BwICovLApAQCAtMjc0NjEsNiArMjc0
NjYsNyBAQAogCQkJCTFBRTJBQTMxMEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxIUkVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBODVCMTkwMEExQjE4QTIwMEQ4Qzg3QyAvKiBKU0hUTUxI
dG1sRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0OTE4QzkwQkZFQTA1MDAwOUQ2MzE2
IC8qIEpTSFRNTElGcmFtZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMTFDMDAzMUZB
QTJFOTUwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUUyQUE5ODBBMUNERDJEMDBCNDJCMjUgLyogSlNIVE1MSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODBFN0U5NzBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MSW5wdXRFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4MzZCMDk1NjFGNUYzNEQ5MDAzQzM3MDIgLyogSlNIVE1M
SW5wdXRFbGVtZW50RW50cmllc0FQSS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGZiYTY1MDMx
MjViLi5iYjU5YWQxYzFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlICJTV1NlcnZlckpvYlF1ZXVlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uaCIKICNpbmNsdWRlICJTV1NlcnZlcldvcmtlci5oIgogI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJDb250ZXh0RGF0YS5oIgpAQCAtNTcsNiArNTgsNyBAQCBTV1NlcnZlcjo6flNX
U2VydmVyKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5lY3Rpb25zLmlzRW1wdHkoKSk7
CiAgICAgUkVMRUFTRV9BU1NFUlQobV9yZWdpc3RyYXRpb25zLmlzRW1wdHkoKSk7CisgICAgUkVM
RUFTRV9BU1NFUlQobV9qb2JRdWV1ZXMuaXNFbXB0eSgpKTsKIAogICAgIEFTU0VSVChtX3Rhc2tR
dWV1ZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX3Rhc2tSZXBseVF1ZXVlLmlzRW1wdHkoKSk7
CkBAIC02OCw2ICs3MCwyNSBAQCBTV1NlcnZlcjo6flNXU2VydmVyKCkKICAgICBBU1NFUlQoIW1f
dGFza1RocmVhZCk7CiB9CiAKK1NXU2VydmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcjo6Z2V0UmVn
aXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlv
bktleSkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9yZWdp
c3RyYXRpb25zLmdldChyZWdpc3RyYXRpb25LZXkpOworfQorCit2b2lkIFNXU2VydmVyOjphZGRS
ZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lz
dHJhdGlvbikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvIGtleSA9
IHJlZ2lzdHJhdGlvbi0+a2V5KCk7CisgICAgbV9yZWdpc3RyYXRpb25zLmFkZChrZXksIFdURk1v
dmUocmVnaXN0cmF0aW9uKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6OnJlbW92ZVJlZ2lzdHJhdGlv
bihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCit7
CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgbV9yZWdpc3RyYXRpb25zLnJlbW92
ZShyZWdpc3RyYXRpb25LZXkpOworfQorCiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzY2hl
ZHVsZUpvYkluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQogewog
ICAgIExPRyhTZXJ2aWNlV29ya2VyLCAiU2NoZWR1bGluZyBTZXJ2aWNlV29ya2VyIGpvYiAlIiBQ
Ukl1NjQgIi0lIiBQUkl1NjQgIiBpbiBzZXJ2ZXIiLCBqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlm
aWVyKCksIGpvYkRhdGEuaWRlbnRpZmllcigpKTsKQEAgLTEwMiw5ICsxMjMsOSBAQCB2b2lkIFNX
U2VydmVyOjpzY2hlZHVsZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSkK
IHsKICAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhqb2JEYXRhLmNvbm5lY3Rpb25J
ZGVudGlmaWVyKCkpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0gbV9yZWdpc3RyYXRpb25zLmFkZChq
b2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
am9iUXVldWVzLmFkZChqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBudWxscHRyKTsKICAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPigqdGhpcywgam9iRGF0YS5yZWdp
c3RyYXRpb25LZXkoKSk7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1h
a2VfdW5pcXVlPFNXU2VydmVySm9iUXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktl
eSgpKTsKIAogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIApAQCAtMTU2LDI3
ICsxNzcsMjcgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmUKIAogICAgIEFTU0VSVChtX2Nvbm5l
Y3Rpb25zLmNvbnRhaW5zKHJlc3VsdC5jb25uZWN0aW9uSWRlbnRpZmllcikpOwogCi0gICAgYXV0
byByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KHJlc3VsdC5yZWdpc3RyYXRpb25L
ZXkpOwotICAgIGlmICghcmVnaXN0cmF0aW9uKQorICAgIGF1dG8gam9iUXVldWUgPSBtX2pvYlF1
ZXVlcy5nZXQocmVzdWx0LnJlZ2lzdHJhdGlvbktleSk7CisgICAgaWYgKCFqb2JRdWV1ZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmF0aW9uLT5zY3JpcHRGZXRjaEZpbmlzaGVkKGNv
bm5lY3Rpb24sIHJlc3VsdCk7CisgICAgam9iUXVldWUtPnNjcmlwdEZldGNoRmluaXNoZWQoY29u
bmVjdGlvbiwgcmVzdWx0KTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxl
ZFRvU3RhcnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMo
Y29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICAKLSAgICBpZiAoYXV0byogcmVnaXN0cmF0
aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICByZWdp
c3RyYXRpb24tPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbm5lY3Rpb24sIHdvcmtlcklE
LCBtZXNzYWdlKTsKKyAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVn
aXN0cmF0aW9uS2V5KSkKKyAgICAgICAgam9iUXVldWUtPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KGNvbm5lY3Rpb24sIHdvcmtlcklELCBtZXNzYWdlKTsKIH0KIAogdm9pZCBTV1NlcnZlcjo6
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCB1aW50NjRfdCBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQogewogICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25z
LmNvbnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CiAKLSAgICBpZiAoYXV0byogcmVn
aXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAg
ICByZWdpc3RyYXRpb24tPnNjcmlwdENvbnRleHRTdGFydGVkKGNvbm5lY3Rpb24sIGlkZW50aWZp
ZXIsIHdvcmtlcklEKTsKKyAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQo
cmVnaXN0cmF0aW9uS2V5KSkKKyAgICAgICAgam9iUXVldWUtPnNjcmlwdENvbnRleHRTdGFydGVk
KGNvbm5lY3Rpb24sIGlkZW50aWZpZXIsIHdvcmtlcklEKTsKIH0KIAogUmVmPFNXU2VydmVyV29y
a2VyPiBTV1NlcnZlcjo6Y3JlYXRlV29ya2VyKENvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSwgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBXb3JrZXJUeXBlIHR5cGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggYzk2Njlk
YWMwYTMuLmE0OWM2MjM5MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlci5oCkBAIC00MCw2ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAorY2xhc3MgU1dTZXJ2ZXJKb2JRdWV1ZTsKIGNsYXNzIFNXU2VydmVyUmVnaXN0cmF0
aW9uOwogY2xhc3MgU1dTZXJ2ZXJXb3JrZXI7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKQEAgLTgw
LDYgKzgxLDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTV1NlcnZlcigpOwogICAg
IFdFQkNPUkVfRVhQT1JUIH5TV1NlcnZlcigpOwogCisgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24q
IGdldFJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7Cisg
ICAgdm9pZCBhZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0
aW9uPiYmKTsKKyAgICB2b2lkIHJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5Jik7CisKICAgICB2b2lkIHNjaGVkdWxlSm9iKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJik7CiAgICAgdm9pZCByZWplY3RKb2IoY29uc3QgU2VydmljZVdvcmtlckpv
YkRhdGEmLCBjb25zdCBFeGNlcHRpb25EYXRhJik7CiAgICAgdm9pZCByZXNvbHZlUmVnaXN0cmF0
aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbkRhdGEmKTsKQEAgLTEwNCw2ICsxMDksNyBAQCBwcml2YXRlOgogCiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgQ29ubmVjdGlvbio+IG1fY29ubmVjdGlvbnM7CiAgICAgSGFzaE1hcDxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdp
c3RyYXRpb24+PiBtX3JlZ2lzdHJhdGlvbnM7CisgICAgSGFzaE1hcDxTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJKb2JRdWV1ZT4+IG1fam9iUXVl
dWVzOwogCiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxTV1NlcnZlcldvcmtlcj4+IG1fd29ya2Vy
c0J5SUQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi5lOTVmMzdiZDMwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKQEAgLTAsMCArMSwy
OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU1dTZXJ2
ZXJKb2JRdWV1ZS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorCisjaW5jbHVkZSAi
RXhjZXB0aW9uRGF0YS5oIgorI2luY2x1ZGUgIlNXU2VydmVyLmgiCisjaW5jbHVkZSAiU1dTZXJ2
ZXJXb3JrZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlLmgiCisjaW5j
bHVkZSAiV29ya2VyVHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NXU2VydmVySm9i
UXVldWU6OlNXU2VydmVySm9iUXVldWUoU1dTZXJ2ZXImIHNlcnZlciwgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQorICAgIDogbV9qb2JUaW1lcigqdGhpcywgJlNXU2Vy
dmVySm9iUXVldWU6OnN0YXJ0TmV4dEpvYikKKyAgICAsIG1fc2VydmVyKHNlcnZlcikKKyAgICAs
IG1fcmVnaXN0cmF0aW9uS2V5KGtleSkKK3sKK30KKworU1dTZXJ2ZXJKb2JRdWV1ZTo6flNXU2Vy
dmVySm9iUXVldWUoKQoreworICAgIEFTU0VSVChtX2pvYlF1ZXVlLmlzRW1wdHkoKSk7Cit9CisK
K3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZW5xdWV1ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYgam9iRGF0YSkKK3sKKyAgICAvLyBGSVhNRTogUGVyIHRoZSBzcGVjLCBjaGVjayBpZiB0
aGlzIGpvYiBpcyBlcXVpdmFsZW50IHRvIHRoZSBsYXN0IGpvYiBvbiB0aGUgcXVldWUuCisgICAg
Ly8gSWYgaXQgaXMsIHN0YWNrIGl0IGFsb25nIHdpdGggdGhhdCBqb2IuCisKKyAgICBtX2pvYlF1
ZXVlLmFwcGVuZChqb2JEYXRhKTsKKworICAgIGlmIChtX2N1cnJlbnRKb2IpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghbV9qb2JUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX2pvYlRp
bWVyLnN0YXJ0T25lU2hvdCgwX3MpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlw
dEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEpvYiAmJiBtX2N1cnJlbnRKb2ItPmlkZW50aWZp
ZXIoKSA9PSByZXN1bHQuam9iSWRlbnRpZmllcik7CisKKyAgICBpZiAoIXJlc3VsdC5zY3JpcHRF
cnJvci5pc051bGwoKSkgeworICAgICAgICByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEg
eyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgbV9jdXJyZW50Sm9iLT5z
Y3JpcHRVUkwuc3RyaW5nKCksICIgZmV0Y2ggcmVzdWx0ZWQgaW4gZXJyb3I6ICIsIHJlc3VsdC5z
Y3JpcHRFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSB9KTsKKworICAgICAgICAvLyBJZiBu
ZXdlc3RXb3JrZXIgaXMgbnVsbCwgaW52b2tlIENsZWFyIFJlZ2lzdHJhdGlvbiBhbGdvcml0aG0g
cGFzc2luZyB0aGlzIHJlZ2lzdHJhdGlvbiBhcyBpdHMgYXJndW1lbnQuCisgICAgICAgIC8vIEZJ
WE1FOiBXZSBkb24ndCBoYXZlICJjbGVhciByZWdpc3RyYXRpb24iIHlldC4KKworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IElmIHRoZSBzY3JpcHQgZGF0YSBtYXRjaGVz
IGJ5dGUtZm9yLWJ5dGUgd2l0aCB0aGUgZXhpc3RpbmcgbmV3ZXN0V29ya2VyLAorICAgIC8vIHRo
ZW4gcmVzb2x2ZSBhbmQgZmluaXNoIHRoZSBqb2Igd2l0aG91dCBkb2luZyBhbnl0aGluZyBmdXJ0
aGVyLgorCisgICAgLy8gRklYTUU6IFN1cHBvcnQgdGhlIHByb3BlciB3b3JrZXIgdHlwZSAoY2xh
c3NpYyB2cyBtb2R1bGUpCisgICAgbV9zZXJ2ZXIuY3JlYXRlV29ya2VyKGNvbm5lY3Rpb24sIG1f
cmVnaXN0cmF0aW9uS2V5LCBtX2N1cnJlbnRKb2ItPnNjcmlwdFVSTCwgcmVzdWx0LnNjcmlwdCwg
V29ya2VyVHlwZTo6Q2xhc3NpYyk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0
Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcm
IHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBVTlVTRURfUEFSQU0od29ya2VySUQpOworCisgICAgcmVqZWN0Q3VycmVu
dEpvYihFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtZXNzYWdlIH0pOworfQorCit2b2lk
IFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyOjpDb25uZWN0
aW9uJiwgdWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFVOVVNFRF9QQVJBTShpZGVudGlmaWVyKTsK
KyAgICBVTlVTRURfUEFSQU0od29ya2VySUQpOworCisgICAgbV9zZXJ2ZXIucG9zdFRhc2soY3Jl
YXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZUN1cnJl
bnRSZWdpc3RyYXRpb25Kb2JPbk1haW5UaGVhZCkpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVl
dWU6OnN0YXJ0TmV4dEpvYigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoIW1fY3VycmVudEpvYik7CisgICAgQVNTRVJUKCFtX2pvYlF1ZXVlLmlzRW1wdHkoKSk7
CisKKyAgICBtX2N1cnJlbnRKb2IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2JE
YXRhPihtX2pvYlF1ZXVlLnRha2VGaXJzdCgpLmlzb2xhdGVkQ29weSgpKTsKKworICAgIHN3aXRj
aCAobV9jdXJyZW50Sm9iLT50eXBlKSB7CisgICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6
UmVnaXN0ZXI6CisgICAgICAgIG1fc2VydmVyLnBvc3RUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iLCAqbV9jdXJyZW50Sm9i
KSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJl
Z2lzdGVyOgorICAgICAgICBtX3NlcnZlci5wb3N0VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2so
KnRoaXMsICZTV1NlcnZlckpvYlF1ZXVlOjpydW5VbnJlZ2lzdGVySm9iLCAqbV9jdXJyZW50Sm9i
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rl
cik7CisKKyAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpvYi5z
Y3JpcHRVUkwpKQorICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVh
ZChFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJTY3JpcHQgVVJM
IGlzIG5vdCBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSIpIH0pOworCisgICAgLy8gSWYgdGhlIG9y
aWdpbiBvZiBqb2LigJlzIHNjcmlwdCB1cmwgaXMgbm90IGpvYuKAmXMgcmVmZXJyZXIncyBvcmln
aW4sIHRoZW46CisgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoam9iLnNjcmlw
dFVSTCwgam9iLmNsaWVudENyZWF0aW9uVVJMKSkKKyAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhF
eGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiU2NyaXB0IG9yaWdpbiBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJpbmcgY2xp
ZW50J3Mgb3JpZ2luIikgfSk7CisKKyAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2Nv
cGUgdXJsIGlzIG5vdCBqb2LigJlzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgorICAgIGlmICgh
cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGpvYi5zY29wZVVSTCwgam9iLmNsaWVudENyZWF0
aW9uVVJMKSkKKyAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQo
RXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiU2NvcGUgb3JpZ2lu
IGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3RlcmluZyBjbGllbnQncyBvcmlnaW4iKSB9KTsKKwor
ICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBub3QgbnVsbCAoaW4gb3VyIHBhcmxhbmNlICJlbXB0
eSIpLCB0aGVuOgorICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdp
c3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2V0
SXNVbmluc3RhbGxpbmcoZmFsc2UpOworICAgICAgICBhdXRvKiBuZXdlc3RXb3JrZXIgPSByZWdp
c3RyYXRpb24tPmdldE5ld2VzdFdvcmtlcigpOworICAgICAgICBpZiAobmV3ZXN0V29ya2VyICYm
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoam9iLnNjcmlwdFVSTCwgbmV3ZXN0V29y
a2VyLT5zY3JpcHRVUkwoKSkgJiYgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2Fj
aGUgPT0gcmVnaXN0cmF0aW9uLT51cGRhdGVWaWFDYWNoZSgpKSB7CisgICAgICAgICAgICByZXNv
bHZlV2l0aFJlZ2lzdHJhdGlvbk9uTWFpblRocmVhZCgqcmVnaXN0cmF0aW9uKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gbmV3UmVn
aXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9yZWdp
c3RyYXRpb25LZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iu
c2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwpOworICAgICAgICBtX3NlcnZlci5hZGRSZWdpc3RyYXRp
b24oV1RGTW92ZShuZXdSZWdpc3RyYXRpb24pKTsKKyAgICB9CisKKyAgICBydW5VcGRhdGVKb2Io
am9iKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5VbnJlZ2lzdGVySm9iKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisKKyAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2NvcGUgdXJsIGlzIG5vdCBq
b2IncyBjbGllbnQncyBvcmlnaW4sIHRoZW46CisgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWwoam9iLnNjb3BlVVJMLCBqb2IuY2xpZW50Q3JlYXRpb25VUkwpKQorICAgICAgICBy
ZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgU2Vj
dXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJPcmlnaW4gb2Ygc2NvcGUgVVJMIGRvZXMgbm90IG1h
dGNoIHRoZSBjbGllbnQncyBvcmlnaW4iKSB9KTsKKworICAgIC8vIExldCByZWdpc3RyYXRpb24g
YmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nICJHZXQgUmVnaXN0cmF0aW9uIiBhbGdvcml0aG0gcGFz
c2luZyBqb2LigJlzIHNjb3BlIHVybCBhcyB0aGUgYXJndW1lbnQuCisgICAgYXV0byogcmVnaXN0
cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKKwor
ICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBudWxsLCB0aGVuOgorICAgIGlmICghcmVnaXN0cmF0
aW9uKSB7CisgICAgICAgIC8vIEludm9rZSBSZXNvbHZlIEpvYiBQcm9taXNlIHdpdGggam9iIGFu
ZCBmYWxzZS4KKyAgICAgICAgcmVzb2x2ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRo
cmVhZChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTZXQgcmVnaXN0
cmF0aW9u4oCZcyB1bmluc3RhbGxpbmcgZmxhZy4KKyAgICByZWdpc3RyYXRpb24tPnNldElzVW5p
bnN0YWxsaW5nKHRydWUpOworCisgICAgLy8gSW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ugd2l0
aCBqb2IgYW5kIHRydWUuCisgICAgcmVzb2x2ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFp
blRocmVhZCh0cnVlKTsKKworICAgIC8vIEZJWE1FOiBJbnZva2UgVHJ5IENsZWFyIFJlZ2lzdHJh
dGlvbiB3aXRoIHJlZ2lzdHJhdGlvbi4KKyAgICBtX3NlcnZlci5yZW1vdmVSZWdpc3RyYXRpb24o
bV9yZWdpc3RyYXRpb25LZXkpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blVwZGF0
ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQoreworICAgIGF1dG8qIHJlZ2lz
dHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CisK
KyAgICAvLyBJZiByZWdpc3RyYXRpb24gaXMgbnVsbCAoaW4gb3VyIHBhcmxhbmNlICJlbXB0eSIp
IG9yIHJlZ2lzdHJhdGlvbuKAmXMgdW5pbnN0YWxsaW5nIGZsYWcgaXMgc2V0LCB0aGVuOgorICAg
IGlmICghcmVnaXN0cmF0aW9uKQorICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9u
TWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkNhbm5v
dCB1cGRhdGUgYSBudWxsL25vbmV4aXN0ZW50IHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiIp
IH0pOworICAgIGlmIChyZWdpc3RyYXRpb24tPmlzVW5pbnN0YWxsaW5nKCkpCisgICAgICAgIHJl
dHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBUeXBl
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0ZSBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lz
dHJhdGlvbiB0aGF0IGlzIHVuaW5zdGFsbGluZyIpIH0pOworCisgICAgLy8gSWYgam9i4oCZcyBq
b2IgdHlwZSBpcyB1cGRhdGUsIGFuZCBuZXdlc3RXb3JrZXLigJlzIHNjcmlwdCB1cmwgZG9lcyBu
b3QgZXF1YWwgam9i4oCZcyBzY3JpcHQgdXJsIHdpdGggdGhlIGV4Y2x1ZGUgZnJhZ21lbnRzIGZs
YWcgc2V0LCB0aGVuOgorICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+Z2V0
TmV3ZXN0V29ya2VyKCk7CisgICAgaWYgKG5ld2VzdFdvcmtlciAmJiAhZXF1YWxJZ25vcmluZ0Zy
YWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgp
KSkKKyAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0
aW9uRGF0YSB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBkYXRlIGEgc2Vydmlj
ZSB3b3JrZXIgd2l0aCBhIHJlcXVlc3RlZCBzY3JpcHQgVVJMIHdob3NlIG5ld2VzdCB3b3JrZXIg
aGFzIGEgZGlmZmVyZW50IHNjcmlwdCBVUkwiKSB9KTsKKworICAgIHN0YXJ0U2NyaXB0RmV0Y2hG
cm9tTWFpblRocmVhZCgpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlamVjdFdpdGhF
eGNlcHRpb25Pbk1haW5UaHJlYWQoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKQorewor
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fc2VydmVyLnBvc3RUYXNrUmVwbHko
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVqZWN0Q3Vy
cmVudEpvYiwgZXhjZXB0aW9uKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2
ZVdpdGhSZWdpc3RyYXRpb25Pbk1haW5UaHJlYWQoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lz
dHJhdGlvbikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBtX3NlcnZlci5w
b3N0VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVySm9iUXVl
dWU6OnJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iLCByZWdpc3RyYXRpb24uZGF0YSgpKSk7
Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZUN1cnJlbnRSZWdpc3RyYXRpb25K
b2JPbk1haW5UaGVhZCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgYXV0
byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9u
S2V5KTsKKyAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKKyAgICByZXNvbHZlV2l0aFJlZ2lzdHJh
dGlvbk9uTWFpblRocmVhZCgqcmVnaXN0cmF0aW9uKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1
ZXVlOjpyZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0T25NYWluVGhyZWFkKGJvb2wgdW5y
ZWdpc3RyYXRpb25SZXN1bHQpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
bV9zZXJ2ZXIucG9zdFRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTV1Nl
cnZlckpvYlF1ZXVlOjpyZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iLCB1bnJlZ2lzdHJh
dGlvblJlc3VsdCkpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnN0YXJ0U2NyaXB0RmV0
Y2hGcm9tTWFpblRocmVhZCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAg
bV9zZXJ2ZXIucG9zdFRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTV1Nl
cnZlckpvYlF1ZXVlOjpzdGFydFNjcmlwdEZldGNoRm9yQ3VycmVudEpvYikpOworfQorCit2b2lk
IFNXU2VydmVySm9iUXVldWU6OnJlamVjdEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0aW9uRGF0YSYg
ZXhjZXB0aW9uRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChtX2N1cnJlbnRKb2IpOworCisgICAgbV9zZXJ2ZXIucmVqZWN0Sm9iKCptX2N1cnJlbnRKb2Is
IGV4Y2VwdGlvbkRhdGEpOworCisgICAgZmluaXNoQ3VycmVudEpvYigpOworfQorCit2b2lkIFNX
U2VydmVySm9iUXVldWU6OnJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiBkYXRhKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEpvYik7CisgICAgQVNTRVJUKG1fY3VycmVudEpv
Yi0+dHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOworCisgICAgbV9zZXJ2
ZXIucmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYigqbV9jdXJyZW50Sm9iLCBkYXRhKTsKKworICAgIGZp
bmlzaEN1cnJlbnRKb2IoKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZlQ3Vy
cmVudFVucmVnaXN0cmF0aW9uSm9iKGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsKKyAgICBB
U1NFUlQobV9jdXJyZW50Sm9iLT50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJlZ2lz
dGVyKTsKKworICAgIG1fc2VydmVyLnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYigqbV9jdXJyZW50
Sm9iLCBtX3JlZ2lzdHJhdGlvbktleSwgdW5yZWdpc3RyYXRpb25SZXN1bHQpOworCisgICAgZmlu
aXNoQ3VycmVudEpvYigpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnN0YXJ0U2NyaXB0
RmV0Y2hGb3JDdXJyZW50Sm9iKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChtX2N1cnJlbnRKb2IpOworCisgICAgbV9zZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaCgq
bV9jdXJyZW50Sm9iKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpmaW5pc2hDdXJyZW50
Sm9iKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2N1cnJl
bnRKb2IpOworICAgIEFTU0VSVCghbV9qb2JUaW1lci5pc0FjdGl2ZSgpKTsKKworICAgIG1fY3Vy
cmVudEpvYiA9IG51bGxwdHI7CisgICAgaWYgKG1fam9iUXVldWUuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzdGFydE5leHRKb2IoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGVmMTk4NjM3NzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJTV1NlcnZlci5oIgor
I2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKyNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTV1Nl
cnZlckpvYlF1ZXVlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTV1NlcnZlckpvYlF1ZXVlKFNX
U2VydmVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOworICAgIFNXU2Vy
dmVySm9iUXVldWUoY29uc3QgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKSA9IGRlbGV0ZTsKKyAgICB+
U1dTZXJ2ZXJKb2JRdWV1ZSgpOworCisgICAgdm9pZCBlbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJik7CisgICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpD
b25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7CisgICAgdm9pZCBz
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9pZCBzY3JpcHRD
b250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgd29ya2VySUQpOworCitwcml2YXRlOgorICAgIHZvaWQgam9iVGltZXJG
aXJlZCgpOworICAgIHZvaWQgc3RhcnROZXh0Sm9iKCk7CisgICAgdm9pZCByZWplY3RDdXJyZW50
Sm9iKGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIHJlc29sdmVDdXJyZW50UmVnaXN0
cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiBkYXRhKTsKKyAg
ICB2b2lkIHJlc29sdmVDdXJyZW50VW5yZWdpc3RyYXRpb25Kb2IoYm9vbCB1bnJlZ2lzdHJhdGlv
blJlc3VsdCk7CisgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoRm9yQ3VycmVudEpvYigpOworICAg
IHZvaWQgZmluaXNoQ3VycmVudEpvYigpOworCisgICAgdm9pZCBydW5SZWdpc3RlckpvYihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOworICAgIHZvaWQgcnVuVW5yZWdpc3RlckpvYihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOworICAgIHZvaWQgcnVuVXBkYXRlSm9iKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhJik7CisKKyAgICB2b2lkIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1h
aW5UaHJlYWQoY29uc3QgRXhjZXB0aW9uRGF0YSYpOworICAgIHZvaWQgcmVzb2x2ZVdpdGhSZWdp
c3RyYXRpb25Pbk1haW5UaHJlYWQoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKKyAgICB2b2lkIHJl
c29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iT25NYWluVGhlYWQoKTsKKyAgICB2b2lkIHJlc29s
dmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQoYm9vbCk7CisgICAgdm9pZCBz
dGFydFNjcmlwdEZldGNoRnJvbU1haW5UaHJlYWQoKTsKKyAgICBib29sIGlzRW1wdHkoKTsKKwor
ICAgIERlcXVlPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBtX2pvYlF1ZXVlOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iRGF0YT4gbV9jdXJyZW50Sm9iOworCisgICAgVGltZXIg
bV9qb2JUaW1lcjsKKyAgICBTV1NlcnZlciYgbV9zZXJ2ZXI7CisgICAgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lz
dHJhdGlvbi5jcHAKaW5kZXggMzQzNmI2ZmNlNTUuLjA4MmY1ZjZjNTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmNwcApAQCAtMzksOTUgKzM5LDE3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVy
JiBzZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSkKLSAgICA6
IG1fam9iVGltZXIoKnRoaXMsICZTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c3RhcnROZXh0Sm9iKQot
ICAgICwgbV9zZXJ2ZXIoc2VydmVyKQotICAgICwgbV9yZWdpc3RyYXRpb25LZXkoa2V5KQorU1dT
ZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0
ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNjcmlwdFVSTCkKKyAg
ICA6IG1fcmVnaXN0cmF0aW9uS2V5KGtleSkKKyAgICAsIG1fdXBkYXRlVmlhQ2FjaGUodXBkYXRl
VmlhQ2FjaGUpCisgICAgLCBtX3Njb3BlVVJMKHNjb3BlVVJMLmlzb2xhdGVkQ29weSgpKQorICAg
ICwgbV9zY3JpcHRVUkwoc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpKQogeworICAgIG1fc2NvcGVV
UkwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiB9CiAKIFNXU2VydmVyUmVnaXN0cmF0aW9u
Ojp+U1dTZXJ2ZXJSZWdpc3RyYXRpb24oKQogewotICAgIEFTU0VSVChtX2pvYlF1ZXVlLmlzRW1w
dHkoKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmVucXVldWVKb2IoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCi17Ci0gICAgLy8gRklYTUU6IFBlciB0aGUg
c3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMgZXF1aXZhbGVudCB0byB0aGUgbGFzdCBqb2Igb24g
dGhlIHF1ZXVlLgotICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9uZyB3aXRoIHRoYXQgam9i
LgotCi0gICAgbV9qb2JRdWV1ZS5hcHBlbmQoam9iRGF0YSk7Ci0KLSAgICBpZiAobV9jdXJyZW50
Sm9iKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fam9iVGltZXIuaXNBY3RpdmUoKSkK
LSAgICAgICAgbV9qb2JUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKLX0KLQotdm9pZCBTV1NlcnZl
clJlZ2lzdHJhdGlvbjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCi17Ci0g
ICAgQVNTRVJUKG1fY3VycmVudEpvYiAmJiBtX2N1cnJlbnRKb2ItPmlkZW50aWZpZXIoKSA9PSBy
ZXN1bHQuam9iSWRlbnRpZmllcik7Ci0KLSAgICBpZiAoIXJlc3VsdC5zY3JpcHRFcnJvci5pc051
bGwoKSkgewotICAgICAgICByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3du
RXJyb3IsIG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgbV9jdXJyZW50Sm9iLT5zY3JpcHRVUkwu
c3RyaW5nKCksICIgZmV0Y2ggcmVzdWx0ZWQgaW4gZXJyb3I6ICIsIHJlc3VsdC5zY3JpcHRFcnJv
ci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSB9KTsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIG5l
d2VzdFdvcmtlciBpcyBudWxsLCBpbnZva2UgQ2xlYXIgUmVnaXN0cmF0aW9uIGFsZ29yaXRobSBw
YXNzaW5nIHRoaXMgcmVnaXN0cmF0aW9uIGFzIGl0cyBhcmd1bWVudC4KLSAgICAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGhhdmUgImNsZWFyIHJlZ2lzdHJhdGlvbiIgeWV0LgotCi0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBtX2xhc3RVcGRhdGVUaW1lID0gY3VycmVudFRpbWUoKTsKLSAg
ICAKLSAgICAvLyBGSVhNRTogSWYgdGhlIHNjcmlwdCBkYXRhIG1hdGNoZXMgYnl0ZS1mb3ItYnl0
ZSB3aXRoIHRoZSBleGlzdGluZyBuZXdlc3RXb3JrZXIsCi0gICAgLy8gdGhlbiByZXNvbHZlIGFu
ZCBmaW5pc2ggdGhlIGpvYiB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGZ1cnRoZXIuCi0KLSAgICAv
LyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdvcmtlciB0eXBlIChjbGFzc2ljIHZzIG1vZHVs
ZSkKLSAgICBtX3NlcnZlci5jcmVhdGVXb3JrZXIoY29ubmVjdGlvbiwgbV9yZWdpc3RyYXRpb25L
ZXksIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCBXb3JrZXJUeXBlOjpD
bGFzc2ljKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NyaXB0Q29udGV4dEZh
aWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHdvcmtlcklE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgVU5VU0VEX1BBUkFNKHdvcmtlcklEKTsK
LQotICAgIHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFVua25vd25FcnJvciwgbWVz
c2FnZSB9KTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NyaXB0Q29udGV4dFN0
YXJ0ZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIHdvcmtlcklEKQotewotICAgIFVOVVNFRF9QQVJBTSh3b3JrZXJJRCk7Ci0gICAgcmVz
b2x2ZUN1cnJlbnRSZWdpc3RyYXRpb25Kb2IoU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEg
eyBtX3JlZ2lzdHJhdGlvbktleSwgaWRlbnRpZmllciwgbV9zY29wZVVSTCwgbV9zY3JpcHRVUkws
IG1fdXBkYXRlVmlhQ2FjaGUudmFsdWVfb3IoU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpJ
bXBvcnRzKSB9KTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c3RhcnROZXh0Sm9i
KCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVCghbV9jdXJyZW50
Sm9iKTsKLSAgICBBU1NFUlQoIW1fam9iUXVldWUuaXNFbXB0eSgpKTsKLQotICAgIG1fY3VycmVu
dEpvYiA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+KG1fam9iUXVldWUu
dGFrZUZpcnN0KCkuaXNvbGF0ZWRDb3B5KCkpOwotCi0gICAgc3dpdGNoIChtX2N1cnJlbnRKb2It
PnR5cGUpIHsKLSAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKLSAgICAg
ICAgbV9zZXJ2ZXIucG9zdFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OnJ1blJlZ2lzdGVySm9iLCAqbV9jdXJyZW50Sm9iKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJlZ2lzdGVyOgotICAg
ICAgICBtX3NlcnZlci5wb3N0VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTV1Nl
cnZlclJlZ2lzdHJhdGlvbjo6cnVuVW5yZWdpc3RlckpvYiwgKm1fY3VycmVudEpvYikpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LX0KLQotYm9vbCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6aXNFbXB0eSgpCi17Ci0gICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7Ci0KLSAgICAvLyBIYXZpbmcgb3Igbm90LWhhdmluZyBhbiBtX3Vw
ZGF0ZVZpYUNhY2hlIGZsYWcgaXMgY3VycmVudGx5Ci0gICAgLy8gdGhlIHNpZ25hbCBhcyB0byB3
aGV0aGVyIG9yIG5vdCB0aGlzIGlzIGFuIGVtcHR5IChpLmUuICJuZXciKSByZWdpc3RyYXRpb24u
Ci0gICAgLy8gVGhlcmUgd2lsbCBiZSBhIG1vcmUgZXhwbGljaXQgc2lnbmFsIGluIHRoZSBuZWFy
IGZ1dHVyZS4KLSAgICByZXR1cm4gIW1fdXBkYXRlVmlhQ2FjaGU7CiB9CiAKIFNXU2VydmVyV29y
a2VyKiBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6Z2V0TmV3ZXN0V29ya2VyKCkKQEAgLTE0MSwxNjMg
KzYzLDExIEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6Z2V0TmV3ZXN0
V29ya2VyKCkKICAgICByZXR1cm4gbV9hY3RpdmVXb3JrZXIuZ2V0KCk7CiB9CiAKLXZvaWQgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb246OnJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJiBqb2IpCi17Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKGpv
Yi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rlcik7Ci0KLSAgICBpZiAoIXNo
b3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpvYi5zY3JpcHRVUkwpKQotICAgICAg
ICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsg
U2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJTY3JpcHQgVVJMIGlzIG5vdCBwb3RlbnRpYWxs
eSB0cnVzdHdvcnRoeSIpIH0pOwotCi0gICAgLy8gSWYgdGhlIG9yaWdpbiBvZiBqb2LigJlzIHNj
cmlwdCB1cmwgaXMgbm90IGpvYuKAmXMgcmVmZXJyZXIncyBvcmlnaW4sIHRoZW46Ci0gICAgaWYg
KCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoam9iLnNjcmlwdFVSTCwgam9iLmNsaWVudENy
ZWF0aW9uVVJMKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJl
YWQoRXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiU2NyaXB0IG9y
aWdpbiBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJpbmcgY2xpZW50J3Mgb3JpZ2luIikgfSk7
Ci0KLSAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2NvcGUgdXJsIGlzIG5vdCBqb2Li
gJlzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgotICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9y
dEFyZUVxdWFsKGpvYi5zY29wZVVSTCwgam9iLmNsaWVudENyZWF0aW9uVVJMKSkKLSAgICAgICAg
cmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFNl
Y3VyaXR5RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiU2NvcGUgb3JpZ2luIGRvZXMgbm90IG1hdGNoIHRo
ZSByZWdpc3RlcmluZyBjbGllbnQncyBvcmlnaW4iKSB9KTsKLQotICAgIC8vIElmIHJlZ2lzdHJh
dGlvbiBpcyBub3QgbnVsbCAoaW4gb3VyIHBhcmxhbmNlICJlbXB0eSIpLCB0aGVuOgotICAgIGlm
ICghaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChtX3VwZGF0ZVZpYUNhY2hlKTsKLQotICAg
ICAgICBtX3VuaW5zdGFsbGluZyA9IGZhbHNlOwotICAgICAgICBhdXRvKiBuZXdlc3RXb3JrZXIg
PSBnZXROZXdlc3RXb3JrZXIoKTsKLSAgICAgICAgaWYgKG5ld2VzdFdvcmtlciAmJiBlcXVhbEln
bm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGpvYi5zY3JpcHRVUkwsIG5ld2VzdFdvcmtlci0+c2Ny
aXB0VVJMKCkpICYmIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlID09ICpt
X3VwZGF0ZVZpYUNhY2hlKSB7Ci0gICAgICAgICAgICByZXNvbHZlV2l0aFJlZ2lzdHJhdGlvbk9u
TWFpblRocmVhZCgpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgbV9zY29wZVVSTCA9IGpvYi5zY29wZVVSTC5pc29sYXRlZENvcHkoKTsKLSAg
ICAgICAgbV9zY29wZVVSTC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICAgICAgbV9z
Y3JpcHRVUkwgPSBqb2Iuc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgpOwotICAgICAgICBtX3VwZGF0
ZVZpYUNhY2hlID0gam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGU7Ci0gICAg
fQotCi0gICAgcnVuVXBkYXRlSm9iKGpvYik7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnJ1blVucmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKLXsK
LSAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2NvcGUgdXJsIGlzIG5vdCBqb2IncyBj
bGllbnQncyBvcmlnaW4sIHRoZW46Ci0gICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1
YWwoam9iLnNjb3BlVVJMLCBqb2IuY2xpZW50Q3JlYXRpb25VUkwpKQotICAgICAgICByZXR1cm4g
cmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlF
cnJvciwgQVNDSUlMaXRlcmFsKCJPcmlnaW4gb2Ygc2NvcGUgVVJMIGRvZXMgbm90IG1hdGNoIHRo
ZSBjbGllbnQncyBvcmlnaW4iKSB9KTsKLQotICAgIC8vIExldCByZWdpc3RyYXRpb24gYmUgdGhl
IHJlc3VsdCBvZiBydW5uaW5nICJHZXQgUmVnaXN0cmF0aW9uIiBhbGdvcml0aG0gcGFzc2luZyBq
b2LigJlzIHNjb3BlIHVybCBhcyB0aGUgYXJndW1lbnQuCi0gICAgLy8gSWYgcmVnaXN0cmF0aW9u
IGlzIG51bGwsIHRoZW46Ci0gICAgaWYgKGlzRW1wdHkoKSB8fCBtX3VuaW5zdGFsbGluZykgewot
ICAgICAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQgZmFsc2Uu
Ci0gICAgICAgIHJlc29sdmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQoZmFs
c2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gU2V0IHJlZ2lzdHJhdGlvbuKA
mXMgdW5pbnN0YWxsaW5nIGZsYWcuCi0gICAgbV91bmluc3RhbGxpbmcgPSB0cnVlOwotCi0gICAg
Ly8gSW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ugd2l0aCBqb2IgYW5kIHRydWUuCi0gICAgcmVz
b2x2ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRocmVhZCh0cnVlKTsKLQotICAgIC8v
IEZJWE1FOiBJbnZva2UgVHJ5IENsZWFyIFJlZ2lzdHJhdGlvbiB3aXRoIHJlZ2lzdHJhdGlvbi4K
LX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZp
Y2VXb3JrZXJKb2JEYXRhJiBqb2IpCi17Ci0gICAgLy8gSWYgcmVnaXN0cmF0aW9uIGlzIG51bGwg
KGluIG91ciBwYXJsYW5jZSAiZW1wdHkiKSBvciByZWdpc3RyYXRpb27igJlzIHVuaW5zdGFsbGlu
ZyBmbGFnIGlzIHNldCwgdGhlbjoKLSAgICBpZiAoaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
cmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9y
LCBBU0NJSUxpdGVyYWwoIkNhbm5vdCB1cGRhdGUgYSBudWxsL25vbmV4aXN0ZW50IHNlcnZpY2Ug
d29ya2VyIHJlZ2lzdHJhdGlvbiIpIH0pOwotICAgIGlmIChtX3VuaW5zdGFsbGluZykKLSAgICAg
ICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7
IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBkYXRlIGEgc2VydmljZSB3b3JrZXIg
cmVnaXN0cmF0aW9uIHRoYXQgaXMgdW5pbnN0YWxsaW5nIikgfSk7Ci0KLSAgICAvLyBJZiBqb2Li
gJlzIGpvYiB0eXBlIGlzIHVwZGF0ZSwgYW5kIG5ld2VzdFdvcmtlcuKAmXMgc2NyaXB0IHVybCBk
b2VzIG5vdCBlcXVhbCBqb2LigJlzIHNjcmlwdCB1cmwgd2l0aCB0aGUgZXhjbHVkZSBmcmFnbWVu
dHMgZmxhZyBzZXQsIHRoZW46Ci0gICAgYXV0byogbmV3ZXN0V29ya2VyID0gZ2V0TmV3ZXN0V29y
a2VyKCk7Ci0gICAgaWYgKG5ld2VzdFdvcmtlciAmJiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpKSkKLSAgICAg
ICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7
IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBkYXRlIGEgc2VydmljZSB3b3JrZXIg
d2l0aCBhIHJlcXVlc3RlZCBzY3JpcHQgVVJMIHdob3NlIG5ld2VzdCB3b3JrZXIgaGFzIGEgZGlm
ZmVyZW50IHNjcmlwdCBVUkwiKSB9KTsKLQotICAgIHN0YXJ0U2NyaXB0RmV0Y2hGcm9tTWFpblRo
cmVhZCgpOwotfQotCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpyZWplY3RXaXRoRXhjZXB0
aW9uT25NYWluVGhyZWFkKGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikKLXsKLSAgICBB
U1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBtX3NlcnZlci5wb3N0VGFza1JlcGx5KGNyZWF0
ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpyZWplY3RDdXJy
ZW50Sm9iLCBleGNlcHRpb24pKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cmVz
b2x2ZVdpdGhSZWdpc3RyYXRpb25Pbk1haW5UaHJlYWQoKQotewotICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwotICAgIG1fc2VydmVyLnBvc3RUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJlc29sdmVDdXJyZW50UmVnaXN0cmF0
aW9uSm9iLCBkYXRhKCkpKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cmVzb2x2
ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRocmVhZChib29sIHVucmVnaXN0cmF0aW9u
UmVzdWx0KQotewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIG1fc2VydmVyLnBv
c3RUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OnJlc29sdmVDdXJyZW50VW5yZWdpc3RyYXRpb25Kb2IsIHVucmVnaXN0cmF0aW9uUmVz
dWx0KSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnN0YXJ0U2NyaXB0RmV0Y2hG
cm9tTWFpblRocmVhZCgpCi17Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9z
ZXJ2ZXIucG9zdFRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTV1NlcnZl
clJlZ2lzdHJhdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2IpKTsKLX0KLQotdm9p
ZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cmVqZWN0Q3VycmVudEpvYihjb25zdCBFeGNlcHRpb25E
YXRhJiBleGNlcHRpb25EYXRhKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
QVNTRVJUKG1fY3VycmVudEpvYik7Ci0KLSAgICBtX3NlcnZlci5yZWplY3RKb2IoKm1fY3VycmVu
dEpvYiwgZXhjZXB0aW9uRGF0YSk7Ci0KLSAgICBmaW5pc2hDdXJyZW50Sm9iKCk7Ci19Ci0KLXZv
aWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiBkYXRhKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYik7Ci0gICAgQVNTRVJUKG1f
Y3VycmVudEpvYi0+dHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwotCi0g
ICAgbV9zZXJ2ZXIucmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYigqbV9jdXJyZW50Sm9iLCBkYXRhKTsK
LQotICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlv
bjo6cmVzb2x2ZUN1cnJlbnRVbnJlZ2lzdHJhdGlvbkpvYihib29sIHVucmVnaXN0cmF0aW9uUmVz
dWx0KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fY3VycmVu
dEpvYik7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYi0+dHlwZSA9PSBTZXJ2aWNlV29ya2VySm9i
VHlwZTo6VW5yZWdpc3Rlcik7Ci0KLSAgICBtX3NlcnZlci5yZXNvbHZlVW5yZWdpc3RyYXRpb25K
b2IoKm1fY3VycmVudEpvYiwgbV9yZWdpc3RyYXRpb25LZXksIHVucmVnaXN0cmF0aW9uUmVzdWx0
KTsKLQotICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2IoKQotewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYik7Ci0KLSAgICBtX3NlcnZlci5z
dGFydFNjcmlwdEZldGNoKCptX2N1cnJlbnRKb2IpOwotfQotCi12b2lkIFNXU2VydmVyUmVnaXN0
cmF0aW9uOjpmaW5pc2hDdXJyZW50Sm9iKCkKLXsKLSAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsK
LSAgICBBU1NFUlQoIW1fam9iVGltZXIuaXNBY3RpdmUoKSk7Ci0KLSAgICBtX2N1cnJlbnRKb2Ig
PSBudWxscHRyOwotICAgIGlmIChtX2pvYlF1ZXVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgc3RhcnROZXh0Sm9iKCk7Ci19Ci0KIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpkYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4geyBt
X3JlZ2lzdHJhdGlvbktleSwgaWRlbnRpZmllcigpLCBtX3Njb3BlVVJMLCBtX3NjcmlwdFVSTCwg
bV91cGRhdGVWaWFDYWNoZS52YWx1ZV9vcihTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU6Oklt
cG9ydHMpIH07CisgICAgcmV0dXJuIHsgbV9yZWdpc3RyYXRpb25LZXksIGlkZW50aWZpZXIoKSwg
bV9zY29wZVVSTCwgbV9zY3JpcHRVUkwsIG1fdXBkYXRlVmlhQ2FjaGUgfTsKIH0KIAotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggMzVkN2Y1ZjE2MzAuLjdhZDRiYzUwMDMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5oCkBAIC0yOCw2OCArMjgsNDcgQEAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAKICNpbmNsdWRlICJTV1NlcnZlci5oIgotI2luY2x1ZGUgIlNlcnZpY2VX
b3JrZXJKb2JEYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEu
aCIKLSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9JZGVudGlmaWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1dTZXJ2
ZXI7CiBjbGFzcyBTV1NlcnZlcldvcmtlcjsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0
IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKIAogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24g
OiBwdWJsaWMgVGhyZWFkU2FmZUlkZW50aWZpZWQ8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYsIGNvbnN0
IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKLSAgICBTV1NlcnZlclJlZ2lzdHJhdGlv
bihjb25zdCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpID0gZGVsZXRlOworICAgIFNXU2VydmVyUmVn
aXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29y
a2VyVXBkYXRlVmlhQ2FjaGUsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0
VVJMKTsKICAgICB+U1dTZXJ2ZXJSZWdpc3RyYXRpb24oKTsKIAotICAgIHZvaWQgZW5xdWV1ZUpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5p
c2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3Vs
dCYpOwogICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5l
Y3Rpb24mLCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwog
ICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKICAgICAKLSAgICBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYXRp
b25LZXk7IH0KIAotcHJpdmF0ZToKLSAgICB2b2lkIGpvYlRpbWVyRmlyZWQoKTsKLSAgICB2b2lk
IHN0YXJ0TmV4dEpvYigpOwotICAgIHZvaWQgcmVqZWN0Q3VycmVudEpvYihjb25zdCBFeGNlcHRp
b25EYXRhJik7Ci0gICAgdm9pZCByZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYihjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYpOwotICAgIHZvaWQgcmVzb2x2ZUN1cnJlbnRV
bnJlZ2lzdHJhdGlvbkpvYihib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLSAgICB2b2lkIHN0
YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKCk7Ci0gICAgdm9pZCBmaW5pc2hDdXJyZW50Sm9i
KCk7CisgICAgU1dTZXJ2ZXJXb3JrZXIqIGdldE5ld2VzdFdvcmtlcigpOworICAgIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhIGRhdGEoKSBjb25zdDsKIAotICAgIHZvaWQgcnVuUmVnaXN0
ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKLSAgICB2b2lkIHJ1blVucmVnaXN0
ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKLSAgICB2b2lkIHJ1blVwZGF0ZUpv
Yihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOworICAgIGJvb2wgaXNVbmluc3RhbGxpbmco
KSBjb25zdCB7IHJldHVybiBtX3VuaW5zdGFsbGluZzsgfQorICAgIHZvaWQgc2V0SXNVbmluc3Rh
bGxpbmcoYm9vbCB2YWx1ZSkgeyBtX3VuaW5zdGFsbGluZyA9IHZhbHVlOyB9CiAKLSAgICB2b2lk
IHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoY29uc3QgRXhjZXB0aW9uRGF0YSYpOwot
ICAgIHZvaWQgcmVzb2x2ZVdpdGhSZWdpc3RyYXRpb25Pbk1haW5UaHJlYWQoKTsKLSAgICB2b2lk
IHJlc29sdmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQoYm9vbCk7Ci0gICAg
dm9pZCBzdGFydFNjcmlwdEZldGNoRnJvbU1haW5UaHJlYWQoKTsKLSAgICBib29sIGlzRW1wdHko
KTsKLSAgICBTV1NlcnZlcldvcmtlciogZ2V0TmV3ZXN0V29ya2VyKCk7CisgICAgdm9pZCBzZXRM
YXN0VXBkYXRlVGltZShkb3VibGUgdGltZSkgeyBtX2xhc3RVcGRhdGVUaW1lID0gdGltZTsgfQor
ICAgIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGVWaWFDYWNoZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdXBkYXRlVmlhQ2FjaGU7IH0KIAotICAgIERlcXVlPFNlcnZpY2VXb3JrZXJKb2JE
YXRhPiBtX2pvYlF1ZXVlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iRGF0
YT4gbV9jdXJyZW50Sm9iOworcHJpdmF0ZToKKyAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5IG1fcmVnaXN0cmF0aW9uS2V5OworICAgIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSBt
X3VwZGF0ZVZpYUNhY2hlOworICAgIFVSTCBtX3Njb3BlVVJMOworICAgIFVSTCBtX3NjcmlwdFVS
TDsKIAogICAgIGJvb2wgbV91bmluc3RhbGxpbmcgeyBmYWxzZSB9OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTV1NlcnZlcldvcmtlcj4gbV9pbnN0YWxsaW5nV29ya2VyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxTV1NlcnZlcldvcmtlcj4gbV93YWl0aW5nV29ya2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxTV1NlcnZlcldvcmtlcj4gbV9hY3RpdmVXb3JrZXI7Ci0gICAgVVJMIG1fc2NvcGVVUkw7Ci0g
ICAgVVJMIG1fc2NyaXB0VVJMOwotICAgIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclVwZGF0
ZVZpYUNhY2hlPiBtX3VwZGF0ZVZpYUNhY2hlOwotICAgIAotICAgIGRvdWJsZSBtX2xhc3RVcGRh
dGVUaW1lIHsgMCB9OwogCi0gICAgVGltZXIgbV9qb2JUaW1lcjsKLSAgICBTV1NlcnZlciYgbV9z
ZXJ2ZXI7Ci0gICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktl
eTsKKyAgICBkb3VibGUgbV9sYXN0VXBkYXRlVGltZSB7IDAgfTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325616</attachid>
            <date>2017-11-01 12:55:09 -0700</date>
            <delta_ts>2017-11-01 13:24:34 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>split_SW_JobQueues_2_wip.patch</filename>
            <type>text/plain</type>
            <size>40999</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3NraXAtd2FpdGluZy5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci9za2lwLXdhaXRpbmcuaHR0cHMtZXhwZWN0ZWQudHh0
CmluZGV4IGUzZTA1ZDA5N2IzLi5hN2Q0NjU4NGYzNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXIvc2tpcC13YWl0aW5nLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci9za2lwLXdhaXRpbmcuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsMyBAQAogCi1G
QUlMIFRlc3Qgc2tpcFdhaXRpbmcgd2l0aCBib3RoIGFjdGl2ZSBhbmQgd2FpdGluZyB3b3JrZXJz
IHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5
cGVFcnJvcjogbnVsbCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd3YWl0aW5nX3dvcmtl
ci5zY3JpcHRVUkwnKSIKK0ZBSUwgVGVzdCBza2lwV2FpdGluZyB3aXRoIGJvdGggYWN0aXZlIGFu
ZCB3YWl0aW5nIHdvcmtlcnMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGgg
dmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRp
bmcgJ2FjdGl2YXRlZF93b3JrZXIuc2NyaXB0VVJMJykiCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyL3VucmVnaXN0ZXItY29udHJvbGxlci5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLWNvbnRyb2xsZXIuaHR0cHMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGYwYmVmMzgyZGJmLi5mOWViMjU1YjJjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXIvdW5yZWdpc3Rlci1jb250cm9sbGVyLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci91bnJlZ2lzdGVyLWNvbnRyb2xsZXIuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0x
LDYgKzEsNiBAQAogCiAKIEZBSUwgVW5yZWdpc3RlciBkb2VzIG5vdCBhZmZlY3QgZXhpc3Rpbmcg
Y29udHJvbGxlciBhc3NlcnRfdW5yZWFjaGVkOiB1bmV4cGVjdGVkIHJlamVjdGlvbjogYXNzZXJ0
X3RydWU6IGRvY3VtZW50IHNob3VsZCBsb2FkIHdpdGggYSBjb250cm9sbGVyIGV4cGVjdGVkIHRy
dWUgZ290IGZhbHNlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQotRkFJTCBVbnJlZ2lzdGVyIHBy
ZXZlbnRzIGNvbnRyb2wgb2Ygc3Vic2VxdWVudCBuYXZpZ2F0aW9ucyBhc3NlcnRfdW5yZWFjaGVk
OiB1bmV4cGVjdGVkIHJlamVjdGlvbjogYXNzZXJ0X2VxdWFsczogcmVxdWVzdHMgc2hvdWxkIG5v
dCBiZSBpbnRlcmNlcHRlZCBleHBlY3RlZCAiYSBzaW1wbGUgdGV4dCBmaWxlXG4iIGJ1dCBnb3Qg
IkVSUk9SIiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BBU1MgVW5yZWdpc3RlciBwcmV2ZW50
cyBjb250cm9sIG9mIHN1YnNlcXVlbnQgbmF2aWdhdGlvbnMgCiBQQVNTIFVucmVnaXN0ZXIgcHJl
dmVudHMgbmV3IGNvbnRyb2xsZWUgZXZlbiBpZiByZWdpc3RyYXRpb24gaXMgc3RpbGwgaW4gdXNl
IAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IGM3NmY3OGIzODIzLi5jMmE0MDMzY2MwNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTIxNzQsNiArMjE3NCw3IEBAIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29u
dGV4dE1hbmFnZXIuY3BwCiAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0
aW9uLmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKK3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
V29ya2VyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMDc4YTNhYjUwYzQuLjM4YjRiYTUzZjNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMTY4LDYg
KzIxNjgsNyBAQAogCQk4MzA3ODRCMjFDNTJFRTJDMDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMDc4NEIxMUM1
MkVFMTkwMDEwNEQxRCAvKiBYTUxEb2N1bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTgzMEEzNkJEMURBQzVGQUQwMDZEN0QwOSAvKiBKU01v
dXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzBBMzZCQjFEQUM1RkE3MDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oICovOyB9
OwogCQk4MzEwMkIyNzFGOUVBREQ5MDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzEwMkIy
MzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmggKi87IH07CisJ
CTgzMTFDMDAzMUZBQTJFOTUwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzExQzAwMjFGQUEyRTg5MDBF
M0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTgzMTIwQzcxMUM1NkYzRkIwMDFDQjExMiAvKiBIVE1MRGF0
YUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDgzNEI4NkE3MUM1NkU4M0EwMEYzRjBFMyAvKiBIVE1MRGF0YUVsZW1lbnQuaCAqLzsgfTsKIAkJ
ODMyMTUwN0UxRjI3RUExQjAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMyMTUwN0IxRjI3RUExNTAwOTVC
MTM2IC8qIE5hdmlnYXRvckJlYWNvbi5oICovOyB9OwogCQk4MzJCODQzNDE5RDhFNTUxMDBCMjYw
NTUgLyogU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4MzJCODQzMzE5RDhFNTUxMDBCMjYwNTUgLyogU1ZHQW5pbWF0
ZUVsZW1lbnRCYXNlLmggKi87IH07CkBAIC05MzczLDYgKzkzNzQsOCBAQAogCQk4MzBBMzZCQjFE
QUM1RkE3MDA2RDdEMDkgLyogSlNNb3VzZUV2ZW50SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01vdXNlRXZlbnRJbml0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZl
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFeHRlbmRhYmxlTWVzc2Fn
ZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMTAyQjI1MUY5RUFEQzIw
MEU0MDRCOSAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODMxMUMwMDAxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2Vy
dmVySm9iUXVldWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1dT
ZXJ2ZXJKb2JRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMTFDMDAy
MUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNXU2VydmVySm9iUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODMxQzQ2QzMxRjlFRTVFMDAwRUJENDUwIC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4
dGVuZGFibGVNZXNzYWdlRXZlbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzFEMUYyOTFDNTZFQ0EwMDBGNUY2QzAgLyogSFRNTERhdGFFbGVtZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxEYXRhRWxlbWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMjE1MDdBMUYyN0VBMTUwMDk1QjEzNiAvKiBO
YXZpZ2F0b3JCZWFjb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmF2aWdhdG9yQmVhY29uLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MTMyLDYgKzE3MTM1LDggQEAKIAkJ
CQk1MTdBNTJGRjFGNDc4Q0NFMDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmggKi8sCiAJ
CQkJNTE3QTUyRUYxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVyLmNwcCAqLywKIAkJCQk1MTdB
NTJFRTFGNDc1MzU5MDBEQ0RDMEEgLyogU1dTZXJ2ZXIuaCAqLywKKwkJCQk4MzExQzAwMDFGQUEy
RTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8sCisJCQkJODMxMUMwMDIxRkFB
MkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLywKIAkJCQk1MUY2NDU5NTFGNEE2
ODYxMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwICovLAogCQkJCTUxRjY0NTk0
MUY0QTY4NEYwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlvbi5oICovLAogCQkJCTUxN0E1
MzQzMUY1MEMxNjEwMERDREMwQSAvKiBTV1NlcnZlcldvcmtlci5jcHAgKi8sCkBAIC0yNzQ2MSw2
ICsyNzQ2Niw3IEBACiAJCQkJMUFFMkFBMzEwQTFDREFCNDAwQjQyQjI1IC8qIEpTSFRNTEhSRWxl
bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIxOTAwQTFCMThBMjAwRDhDODdDIC8qIEpT
SFRNTEh0bWxFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQ5MThDOTBCRkVBMDUwMDA5
RDYzMTYgLyogSlNIVE1MSUZyYW1lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJODMxMUMw
MDMxRkFBMkU5NTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRTJBQTk4MEExQ0REMkQwMEI0MkIyNSAvKiBKU0hUTUxJbWFnZUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4MEU3RTk3MEExQTgzRTMwMDdGQjhDNSAvKiBKU0hUTUxJbnB1dEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNkIwOTU2MUY1RjM0RDkwMDNDMzcwMiAvKiBK
U0hUTUxJbnB1dEVsZW1lbnRFbnRyaWVzQVBJLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggZmJh
NjUwMzEyNWIuLmJiNTlhZDFjMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRpb25EYXRhLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgorI2luY2x1ZGUgIlNXU2VydmVySm9iUXVldWUuaCIKICNpbmNsdWRlICJTV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oIgogI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCiAjaW5jbHVk
ZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRhLmgiCkBAIC01Nyw2ICs1OCw3IEBAIFNXU2VydmVy
Ojp+U1dTZXJ2ZXIoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKG1fY29ubmVjdGlvbnMuaXNFbXB0
eSgpKTsKICAgICBSRUxFQVNFX0FTU0VSVChtX3JlZ2lzdHJhdGlvbnMuaXNFbXB0eSgpKTsKKyAg
ICBSRUxFQVNFX0FTU0VSVChtX2pvYlF1ZXVlcy5pc0VtcHR5KCkpOwogCiAgICAgQVNTRVJUKG1f
dGFza1F1ZXVlLmlzRW1wdHkoKSk7CiAgICAgQVNTRVJUKG1fdGFza1JlcGx5UXVldWUuaXNFbXB0
eSgpKTsKQEAgLTY4LDYgKzcwLDI1IEBAIFNXU2VydmVyOjp+U1dTZXJ2ZXIoKQogICAgIEFTU0VS
VCghbV90YXNrVGhyZWFkKTsKIH0KIAorU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyOjpn
ZXRSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0
cmF0aW9uS2V5KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIHJldHVybiBt
X3JlZ2lzdHJhdGlvbnMuZ2V0KHJlZ2lzdHJhdGlvbktleSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXI6
OmFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYg
cmVnaXN0cmF0aW9uKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8g
a2V5ID0gcmVnaXN0cmF0aW9uLT5rZXkoKTsKKyAgICBtX3JlZ2lzdHJhdGlvbnMuYWRkKGtleSwg
V1RGTW92ZShyZWdpc3RyYXRpb24pKTsKK30KKwordm9pZCBTV1NlcnZlcjo6cmVtb3ZlUmVnaXN0
cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktl
eSkKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBtX3JlZ2lzdHJhdGlvbnMu
cmVtb3ZlKHJlZ2lzdHJhdGlvbktleSk7Cit9CisKIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246
OnNjaGVkdWxlSm9iSW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEp
CiB7CiAgICAgTE9HKFNlcnZpY2VXb3JrZXIsICJTY2hlZHVsaW5nIFNlcnZpY2VXb3JrZXIgam9i
ICUiIFBSSXU2NCAiLSUiIFBSSXU2NCAiIGluIHNlcnZlciIsIGpvYkRhdGEuY29ubmVjdGlvbklk
ZW50aWZpZXIoKSwgam9iRGF0YS5pZGVudGlmaWVyKCkpOwpAQCAtMTAyLDkgKzEyMyw5IEBAIHZv
aWQgU1dTZXJ2ZXI6OnNjaGVkdWxlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JE
YXRhKQogewogICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGpvYkRhdGEuY29ubmVj
dGlvbklkZW50aWZpZXIoKSkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX3JlZ2lzdHJhdGlvbnMu
YWRkKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9qb2JRdWV1ZXMuYWRkKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIG51bGxwdHIpOwog
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBqb2JEYXRh
LnJlZ2lzdHJhdGlvbktleSgpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U1dTZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0
aW9uS2V5KCkpOwogCiAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogCkBAIC0x
NTYsMjcgKzE3NywyNyBAQCB2b2lkIFNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKENvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJGZQogCiAgICAgQVNTRVJUKG1f
Y29ubmVjdGlvbnMuY29udGFpbnMocmVzdWx0LmNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiAKLSAg
ICBhdXRvIHJlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQocmVzdWx0LnJlZ2lzdHJh
dGlvbktleSk7Ci0gICAgaWYgKCFyZWdpc3RyYXRpb24pCisgICAgYXV0byBqb2JRdWV1ZSA9IG1f
am9iUXVldWVzLmdldChyZXN1bHQucmVnaXN0cmF0aW9uS2V5KTsKKyAgICBpZiAoIWpvYlF1ZXVl
KQogICAgICAgICByZXR1cm47CiAKLSAgICByZWdpc3RyYXRpb24tPnNjcmlwdEZldGNoRmluaXNo
ZWQoY29ubmVjdGlvbiwgcmVzdWx0KTsKKyAgICBqb2JRdWV1ZS0+c2NyaXB0RmV0Y2hGaW5pc2hl
ZChjb25uZWN0aW9uLCByZXN1bHQpOwogfQogCiB2b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0
RmFpbGVkVG9TdGFydChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFN0cmluZyYgd29ya2VySUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250
YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkpOwogICAgIAotICAgIGlmIChhdXRvKiByZWdp
c3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCi0gICAgICAg
IHJlZ2lzdHJhdGlvbi0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29ubmVjdGlvbiwgd29y
a2VySUQsIG1lc3NhZ2UpOworICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdl
dChyZWdpc3RyYXRpb25LZXkpKQorICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dEZhaWxl
ZFRvU3RhcnQoY29ubmVjdGlvbiwgd29ya2VySUQsIG1lc3NhZ2UpOwogfQogCiB2b2lkIFNXU2Vy
dmVyOjpzY3JpcHRDb250ZXh0U3RhcnRlZChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpCiB7CiAgICAgQVNTRVJUKG1fY29ubmVj
dGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKIAotICAgIGlmIChhdXRv
KiByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCi0g
ICAgICAgIHJlZ2lzdHJhdGlvbi0+c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29ubmVjdGlvbiwgaWRl
bnRpZmllciwgd29ya2VySUQpOworICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVz
LmdldChyZWdpc3RyYXRpb25LZXkpKQorICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dFN0
YXJ0ZWQoY29ubmVjdGlvbiwgaWRlbnRpZmllciwgd29ya2VySUQpOwogfQogCiBSZWY8U1dTZXJ2
ZXJXb3JrZXI+IFNXU2VydmVyOjpjcmVhdGVXb3JrZXIoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBj
OTY2OWRhYzBhMy4uYTQ5YzYyMzkxYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBTV1NlcnZlckpvYlF1ZXVlOwogY2xhc3MgU1dTZXJ2ZXJSZWdp
c3RyYXRpb247CiBjbGFzcyBTV1NlcnZlcldvcmtlcjsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwpA
QCAtODAsNiArODEsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyKCk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgflNXU2VydmVyKCk7CiAKKyAgICBTV1NlcnZlclJlZ2lzdHJh
dGlvbiogZ2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
KTsKKyAgICB2b2lkIGFkZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdp
c3RyYXRpb24+JiYpOworICAgIHZvaWQgcmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKKwogICAgIHZvaWQgc2NoZWR1bGVKb2IoY29uc3QgU2Vy
dmljZVdvcmtlckpvYkRhdGEmKTsKICAgICB2b2lkIHJlamVjdEpvYihjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYsIGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKICAgICB2b2lkIHJlc29sdmVSZWdp
c3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YSYpOwpAQCAtMTA0LDYgKzEwOSw3IEBAIHByaXZhdGU6CiAKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBDb25uZWN0aW9uKj4gbV9jb25uZWN0aW9uczsKICAgICBIYXNo
TWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZl
clJlZ2lzdHJhdGlvbj4+IG1fcmVnaXN0cmF0aW9uczsKKyAgICBIYXNoTWFwPFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlckpvYlF1ZXVlPj4gbV9q
b2JRdWV1ZXM7CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmPFNXU2VydmVyV29ya2VyPj4gbV93
b3JrZXJzQnlJRDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLmIzYmRkMjhlMWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMCww
ICsxLDI5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
V1NlcnZlckpvYlF1ZXVlLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNs
dWRlICJFeGNlcHRpb25EYXRhLmgiCisjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKKyNpbmNsdWRlICJT
V1NlcnZlcldvcmtlci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
U2VydmljZVdvcmtlckZldGNoUmVzdWx0LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCIK
KyNpbmNsdWRlICJXb3JrZXJUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1dTZXJ2
ZXJKb2JRdWV1ZTo6U1dTZXJ2ZXJKb2JRdWV1ZShTV1NlcnZlciYgc2VydmVyLCBjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCisgICAgOiBtX2pvYlRpbWVyKCp0aGlzLCAm
U1dTZXJ2ZXJKb2JRdWV1ZTo6c3RhcnROZXh0Sm9iKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQor
ICAgICwgbV9yZWdpc3RyYXRpb25LZXkoa2V5KQoreworfQorCitTV1NlcnZlckpvYlF1ZXVlOjp+
U1dTZXJ2ZXJKb2JRdWV1ZSgpCit7CisgICAgQVNTRVJUKG1fam9iUXVldWUuaXNFbXB0eSgpKTsK
K30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjplbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiBqb2JEYXRhKQoreworICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWMsIGNoZWNr
IGlmIHRoaXMgam9iIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGxhc3Qgam9iIG9uIHRoZSBxdWV1ZS4K
KyAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4KKworICAgIG1f
am9iUXVldWUuYXBwZW5kKGpvYkRhdGEpOworCisgICAgaWYgKG1fY3VycmVudEpvYikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFtX2pvYlRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1f
am9iVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6
c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0JiByZXN1bHQpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50Sm9iICYmIG1fY3VycmVudEpvYi0+aWRl
bnRpZmllcigpID09IHJlc3VsdC5qb2JJZGVudGlmaWVyKTsKKworICAgIGlmICghcmVzdWx0LnNj
cmlwdEVycm9yLmlzTnVsbCgpKSB7CisgICAgICAgIHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9u
RGF0YSB7IFVua25vd25FcnJvciwgbWFrZVN0cmluZygiU2NyaXB0IFVSTCAiLCBtX2N1cnJlbnRK
b2ItPnNjcmlwdFVSTC5zdHJpbmcoKSwgIiBmZXRjaCByZXN1bHRlZCBpbiBlcnJvcjogIiwgcmVz
dWx0LnNjcmlwdEVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpIH0pOworCisgICAgICAgIC8v
IElmIG5ld2VzdFdvcmtlciBpcyBudWxsLCBpbnZva2UgQ2xlYXIgUmVnaXN0cmF0aW9uIGFsZ29y
aXRobSBwYXNzaW5nIHRoaXMgcmVnaXN0cmF0aW9uIGFzIGl0cyBhcmd1bWVudC4KKyAgICAgICAg
Ly8gRklYTUU6IFdlIGRvbid0IGhhdmUgImNsZWFyIHJlZ2lzdHJhdGlvbiIgeWV0LgorCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogSWYgdGhlIHNjcmlwdCBkYXRhIG1h
dGNoZXMgYnl0ZS1mb3ItYnl0ZSB3aXRoIHRoZSBleGlzdGluZyBuZXdlc3RXb3JrZXIsCisgICAg
Ly8gdGhlbiByZXNvbHZlIGFuZCBmaW5pc2ggdGhlIGpvYiB3aXRob3V0IGRvaW5nIGFueXRoaW5n
IGZ1cnRoZXIuCisKKyAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdvcmtlciB0eXBl
IChjbGFzc2ljIHZzIG1vZHVsZSkKKyAgICBtX3NlcnZlci5jcmVhdGVXb3JrZXIoY29ubmVjdGlv
biwgbV9yZWdpc3RyYXRpb25LZXksIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLCByZXN1bHQuc2Ny
aXB0LCBXb3JrZXJUeXBlOjpDbGFzc2ljKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpz
Y3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0
cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIFVOVVNFRF9QQVJBTSh3b3JrZXJJRCk7CisKKyAgICByZWplY3RD
dXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1lc3NhZ2UgfSk7Cit9CisK
K3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXI6OkNv
bm5lY3Rpb24mLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgVU5VU0VEX1BBUkFNKGlkZW50aWZp
ZXIpOworICAgIFVOVVNFRF9QQVJBTSh3b3JrZXJJRCk7CisKKyAgICBtX3NlcnZlci5wb3N0VGFz
ayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZl
Q3VycmVudFJlZ2lzdHJhdGlvbkpvYk9uTWFpblRoZWFkKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJK
b2JRdWV1ZTo6c3RhcnROZXh0Sm9iKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVCghbV9jdXJyZW50Sm9iKTsKKyAgICBBU1NFUlQoIW1fam9iUXVldWUuaXNFbXB0
eSgpKTsKKworICAgIG1fY3VycmVudEpvYiA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtl
ckpvYkRhdGE+KG1fam9iUXVldWUudGFrZUZpcnN0KCkuaXNvbGF0ZWRDb3B5KCkpOworCisgICAg
c3dpdGNoIChtX2N1cnJlbnRKb2ItPnR5cGUpIHsKKyAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpSZWdpc3RlcjoKKyAgICAgICAgbV9zZXJ2ZXIucG9zdFRhc2soY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IsICptX2N1cnJl
bnRKb2IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5cGU6
OlVucmVnaXN0ZXI6CisgICAgICAgIG1fc2VydmVyLnBvc3RUYXNrKGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygqdGhpcywgJlNXU2VydmVySm9iUXVldWU6OnJ1blVucmVnaXN0ZXJKb2IsICptX2N1cnJl
bnRKb2IpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoam9iLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJl
Z2lzdGVyKTsKKworICAgIGlmICghc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHko
am9iLnNjcmlwdFVSTCkpCisgICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWlu
VGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIlNjcmlw
dCBVUkwgaXMgbm90IHBvdGVudGlhbGx5IHRydXN0d29ydGh5IikgfSk7CisKKyAgICAvLyBJZiB0
aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2NyaXB0IHVybCBpcyBub3Qgam9i4oCZcyByZWZlcnJlcidz
IG9yaWdpbiwgdGhlbjoKKyAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChqb2Iu
c2NyaXB0VVJMLCBqb2IuY2xpZW50Q3JlYXRpb25VUkwpKQorICAgICAgICByZXR1cm4gcmVqZWN0
V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwg
QVNDSUlMaXRlcmFsKCJTY3JpcHQgb3JpZ2luIGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3Rlcmlu
ZyBjbGllbnQncyBvcmlnaW4iKSB9KTsKKworICAgIC8vIElmIHRoZSBvcmlnaW4gb2Ygam9i4oCZ
cyBzY29wZSB1cmwgaXMgbm90IGpvYuKAmXMgcmVmZXJyZXIncyBvcmlnaW4sIHRoZW46CisgICAg
aWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoam9iLnNjb3BlVVJMLCBqb2IuY2xpZW50
Q3JlYXRpb25VUkwpKQorICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRo
cmVhZChFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJTY29wZSBv
cmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIHJlZ2lzdGVyaW5nIGNsaWVudCdzIG9yaWdpbiIpIH0p
OworCisgICAgLy8gSWYgcmVnaXN0cmF0aW9uIGlzIG5vdCBudWxsIChpbiBvdXIgcGFybGFuY2Ug
ImVtcHR5IiksIHRoZW46CisgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdl
dFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSkpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9u
LT5zZXRJc1VuaW5zdGFsbGluZyhmYWxzZSk7CisgICAgICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9
IHJlZ2lzdHJhdGlvbi0+Z2V0TmV3ZXN0V29ya2VyKCk7CisgICAgICAgIGlmIChuZXdlc3RXb3Jr
ZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdl
c3RXb3JrZXItPnNjcmlwdFVSTCgpKSAmJiBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVW
aWFDYWNoZSA9PSByZWdpc3RyYXRpb24tPnVwZGF0ZVZpYUNhY2hlKCkpIHsKKyAgICAgICAgICAg
IHJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25NYWluVGhyZWFkKCpyZWdpc3RyYXRpb24pOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBu
ZXdSZWdpc3RyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPiht
X3JlZ2lzdHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUs
IGpvYi5zY29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CisgICAgICAgIG1fc2VydmVyLmFkZFJlZ2lz
dHJhdGlvbihXVEZNb3ZlKG5ld1JlZ2lzdHJhdGlvbikpOworICAgIH0KKworICAgIHJ1blVwZGF0
ZUpvYihqb2IpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blVucmVnaXN0ZXJKb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKworICAgIC8vIElmIHRoZSBvcmlnaW4gb2Ygam9i4oCZcyBzY29wZSB1cmwgaXMg
bm90IGpvYidzIGNsaWVudCdzIG9yaWdpbiwgdGhlbjoKKyAgICBpZiAoIXByb3RvY29sSG9zdEFu
ZFBvcnRBcmVFcXVhbChqb2Iuc2NvcGVVUkwsIGpvYi5jbGllbnRDcmVhdGlvblVSTCkpCisgICAg
ICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEg
eyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIk9yaWdpbiBvZiBzY29wZSBVUkwgZG9lcyBu
b3QgbWF0Y2ggdGhlIGNsaWVudCdzIG9yaWdpbiIpIH0pOworCisgICAgLy8gTGV0IHJlZ2lzdHJh
dGlvbiBiZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgIkdldCBSZWdpc3RyYXRpb24iIGFsZ29yaXRo
bSBwYXNzaW5nIGpvYuKAmXMgc2NvcGUgdXJsIGFzIHRoZSBhcmd1bWVudC4KKyAgICBhdXRvKiBy
ZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkp
OworCisgICAgLy8gSWYgcmVnaXN0cmF0aW9uIGlzIG51bGwsIHRoZW46CisgICAgaWYgKCFyZWdp
c3RyYXRpb24pIHsKKyAgICAgICAgLy8gSW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ugd2l0aCBq
b2IgYW5kIGZhbHNlLgorICAgICAgICByZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0T25N
YWluVGhyZWFkKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFNldCBy
ZWdpc3RyYXRpb27igJlzIHVuaW5zdGFsbGluZyBmbGFnLgorICAgIHJlZ2lzdHJhdGlvbi0+c2V0
SXNVbmluc3RhbGxpbmcodHJ1ZSk7CisKKyAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJvbWlz
ZSB3aXRoIGpvYiBhbmQgdHJ1ZS4KKyAgICByZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0
T25NYWluVGhyZWFkKHRydWUpOworCisgICAgLy8gRklYTUU6IEludm9rZSBUcnkgQ2xlYXIgUmVn
aXN0cmF0aW9uIHdpdGggcmVnaXN0cmF0aW9uLgorfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6
OnJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQoreworICAgIGF1
dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlv
bktleSk7CisKKyAgICAvLyBJZiByZWdpc3RyYXRpb24gaXMgbnVsbCAoaW4gb3VyIHBhcmxhbmNl
ICJlbXB0eSIpIG9yIHJlZ2lzdHJhdGlvbuKAmXMgdW5pbnN0YWxsaW5nIGZsYWcgaXMgc2V0LCB0
aGVuOgorICAgIGlmICghcmVnaXN0cmF0aW9uKQorICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4
Y2VwdGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVy
YWwoIkNhbm5vdCB1cGRhdGUgYSBudWxsL25vbmV4aXN0ZW50IHNlcnZpY2Ugd29ya2VyIHJlZ2lz
dHJhdGlvbiIpIH0pOworICAgIGlmIChyZWdpc3RyYXRpb24tPmlzVW5pbnN0YWxsaW5nKCkpCisg
ICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRh
dGEgeyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0ZSBhIHNlcnZpY2Ugd29y
a2VyIHJlZ2lzdHJhdGlvbiB0aGF0IGlzIHVuaW5zdGFsbGluZyIpIH0pOworCisgICAgLy8gSWYg
am9i4oCZcyBqb2IgdHlwZSBpcyB1cGRhdGUsIGFuZCBuZXdlc3RXb3JrZXLigJlzIHNjcmlwdCB1
cmwgZG9lcyBub3QgZXF1YWwgam9i4oCZcyBzY3JpcHQgdXJsIHdpdGggdGhlIGV4Y2x1ZGUgZnJh
Z21lbnRzIGZsYWcgc2V0LCB0aGVuOgorICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IHJlZ2lzdHJh
dGlvbi0+Z2V0TmV3ZXN0V29ya2VyKCk7CisgICAgaWYgKG5ld2VzdFdvcmtlciAmJiAhZXF1YWxJ
Z25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXItPnNj
cmlwdFVSTCgpKSkKKyAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJl
YWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBkYXRl
IGEgc2VydmljZSB3b3JrZXIgd2l0aCBhIHJlcXVlc3RlZCBzY3JpcHQgVVJMIHdob3NlIG5ld2Vz
dCB3b3JrZXIgaGFzIGEgZGlmZmVyZW50IHNjcmlwdCBVUkwiKSB9KTsKKworICAgIHN0YXJ0U2Ny
aXB0RmV0Y2hGcm9tTWFpblRocmVhZCgpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJl
amVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0
aW9uKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fc2VydmVyLnBvc3RU
YXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJKb2JRdWV1ZTo6
cmVqZWN0Q3VycmVudEpvYiwgZXhjZXB0aW9uKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6cmVzb2x2ZVdpdGhSZWdpc3RyYXRpb25Pbk1haW5UaHJlYWQoU1dTZXJ2ZXJSZWdpc3RyYXRp
b24mIHJlZ2lzdHJhdGlvbikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBt
X3NlcnZlci5wb3N0VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2Vy
dmVySm9iUXVldWU6OnJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iLCByZWdpc3RyYXRpb24u
ZGF0YSgpKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZUN1cnJlbnRSZWdp
c3RyYXRpb25Kb2JPbk1haW5UaGVhZCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CisgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVn
aXN0cmF0aW9uS2V5KTsKKyAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKKyAgICByZXNvbHZlV2l0
aFJlZ2lzdHJhdGlvbk9uTWFpblRocmVhZCgqcmVnaXN0cmF0aW9uKTsKK30KKwordm9pZCBTV1Nl
cnZlckpvYlF1ZXVlOjpyZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0T25NYWluVGhyZWFk
KGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgbV9zZXJ2ZXIucG9zdFRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iLCB1
bnJlZ2lzdHJhdGlvblJlc3VsdCkpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnN0YXJ0
U2NyaXB0RmV0Y2hGcm9tTWFpblRocmVhZCgpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgbV9zZXJ2ZXIucG9zdFRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRo
aXMsICZTV1NlcnZlckpvYlF1ZXVlOjpzdGFydFNjcmlwdEZldGNoRm9yQ3VycmVudEpvYikpOwor
fQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlamVjdEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0
aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOworCisgICAgbV9zZXJ2ZXIucmVqZWN0Sm9iKCptX2N1
cnJlbnRKb2IsIGV4Y2VwdGlvbkRhdGEpOworCisgICAgZmluaXNoQ3VycmVudEpvYigpOworfQor
Cit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iKGNv
bnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiBkYXRhKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEpvYik7CisgICAgQVNTRVJUKG1f
Y3VycmVudEpvYi0+dHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOworCisg
ICAgbV9zZXJ2ZXIucmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYigqbV9jdXJyZW50Sm9iLCBkYXRhKTsK
KworICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpy
ZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iKGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQp
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50Sm9i
KTsKKyAgICBBU1NFUlQobV9jdXJyZW50Sm9iLT50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBl
OjpVbnJlZ2lzdGVyKTsKKworICAgIG1fc2VydmVyLnJlc29sdmVVbnJlZ2lzdHJhdGlvbkpvYigq
bV9jdXJyZW50Sm9iLCBtX3JlZ2lzdHJhdGlvbktleSwgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwor
CisgICAgZmluaXNoQ3VycmVudEpvYigpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnN0
YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOworCisgICAgbV9zZXJ2ZXIuc3RhcnRTY3Jp
cHRGZXRjaCgqbV9jdXJyZW50Sm9iKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpmaW5p
c2hDdXJyZW50Sm9iKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChtX2N1cnJlbnRKb2IpOworICAgIEFTU0VSVCghbV9qb2JUaW1lci5pc0FjdGl2ZSgpKTsKKwor
ICAgIG1fY3VycmVudEpvYiA9IG51bGxwdHI7CisgICAgaWYgKG1fam9iUXVldWUuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBzdGFydE5leHRKb2IoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1
ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9i
UXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2UxYmM1YWQ0
NmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVySm9iUXVldWUuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJTV1Nl
cnZlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJKb2JEYXRhLmgiCisjaW5jbHVkZSAiVGlt
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTV1NlcnZlckpvYlF1ZXVlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBTV1NlcnZlckpv
YlF1ZXVlKFNXU2VydmVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOwor
ICAgIFNXU2VydmVySm9iUXVldWUoY29uc3QgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKSA9IGRlbGV0
ZTsKKyAgICB+U1dTZXJ2ZXJKb2JRdWV1ZSgpOworCisgICAgdm9pZCBlbnF1ZXVlSm9iKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7CisgICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKFNX
U2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7Cisg
ICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlvbiYs
IGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CisgICAgdm9p
ZCBzY3JpcHRDb250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpOworCitwcml2YXRlOgorICAgIHZvaWQg
am9iVGltZXJGaXJlZCgpOworICAgIHZvaWQgc3RhcnROZXh0Sm9iKCk7CisgICAgdm9pZCByZWpl
Y3RDdXJyZW50Sm9iKGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIHJlc29sdmVDdXJy
ZW50UmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJik7
CisgICAgdm9pZCByZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iKGJvb2wgdW5yZWdpc3Ry
YXRpb25SZXN1bHQpOworICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2IoKTsK
KyAgICB2b2lkIGZpbmlzaEN1cnJlbnRKb2IoKTsKKworICAgIHZvaWQgcnVuUmVnaXN0ZXJKb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKKyAgICB2b2lkIHJ1blVucmVnaXN0ZXJKb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKKyAgICB2b2lkIHJ1blVwZGF0ZUpvYihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOworCisgICAgdm9pZCByZWplY3RXaXRoRXhjZXB0aW9u
T25NYWluVGhyZWFkKGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIHJlc29sdmVXaXRo
UmVnaXN0cmF0aW9uT25NYWluVGhyZWFkKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CisgICAgdm9p
ZCByZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYk9uTWFpblRoZWFkKCk7CisgICAgdm9pZCBy
ZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0T25NYWluVGhyZWFkKGJvb2wpOworICAgIHZv
aWQgc3RhcnRTY3JpcHRGZXRjaEZyb21NYWluVGhyZWFkKCk7CisgICAgYm9vbCBpc0VtcHR5KCk7
CisKKyAgICBEZXF1ZTxTZXJ2aWNlV29ya2VySm9iRGF0YT4gbV9qb2JRdWV1ZTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpvYkRhdGE+IG1fY3VycmVudEpvYjsKKworICAgIFRp
bWVyIG1fam9iVGltZXI7CisgICAgU1dTZXJ2ZXImIG1fc2VydmVyOworICAgIFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJS
ZWdpc3RyYXRpb24uY3BwCmluZGV4IDM0MzZiNmZjZTU1Li4wODJmNWY2YzU1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTM5LDk1ICszOSwxNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1Nl
cnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkpCi0g
ICAgOiBtX2pvYlRpbWVyKCp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnN0YXJ0TmV4dEpv
YikKLSAgICAsIG1fc2VydmVyKHNlcnZlcikKLSAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KGtleSkK
K1NXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1
cGRhdGVWaWFDYWNoZSwgY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwp
CisgICAgOiBtX3JlZ2lzdHJhdGlvbktleShrZXkpCisgICAgLCBtX3VwZGF0ZVZpYUNhY2hlKHVw
ZGF0ZVZpYUNhY2hlKQorICAgICwgbV9zY29wZVVSTChzY29wZVVSTC5pc29sYXRlZENvcHkoKSkK
KyAgICAsIG1fc2NyaXB0VVJMKHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKSkKIHsKKyAgICBtX3Nj
b3BlVVJMLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogfQogCiBTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6flNXU2VydmVyUmVnaXN0cmF0aW9uKCkKIHsKLSAgICBBU1NFUlQobV9qb2JRdWV1ZS5p
c0VtcHR5KCkpOwotfQotCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjplbnF1ZXVlSm9iKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQotewotICAgIC8vIEZJWE1FOiBQZXIg
dGhlIHNwZWMsIGNoZWNrIGlmIHRoaXMgam9iIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGxhc3Qgam9i
IG9uIHRoZSBxdWV1ZS4KLSAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0
IGpvYi4KLQotICAgIG1fam9iUXVldWUuYXBwZW5kKGpvYkRhdGEpOwotCi0gICAgaWYgKG1fY3Vy
cmVudEpvYikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2pvYlRpbWVyLmlzQWN0aXZl
KCkpCi0gICAgICAgIG1fam9iVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7Ci19Ci0KLXZvaWQgU1dT
ZXJ2ZXJSZWdpc3RyYXRpb246OnNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQot
ewotICAgIEFTU0VSVChtX2N1cnJlbnRKb2IgJiYgbV9jdXJyZW50Sm9iLT5pZGVudGlmaWVyKCkg
PT0gcmVzdWx0LmpvYklkZW50aWZpZXIpOwotCi0gICAgaWYgKCFyZXN1bHQuc2NyaXB0RXJyb3Iu
aXNOdWxsKCkpIHsKLSAgICAgICAgcmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVW5r
bm93bkVycm9yLCBtYWtlU3RyaW5nKCJTY3JpcHQgVVJMICIsIG1fY3VycmVudEpvYi0+c2NyaXB0
VVJMLnN0cmluZygpLCAiIGZldGNoIHJlc3VsdGVkIGluIGVycm9yOiAiLCByZXN1bHQuc2NyaXB0
RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSkgfSk7Ci0gICAgICAgIAotICAgICAgICAvLyBJ
ZiBuZXdlc3RXb3JrZXIgaXMgbnVsbCwgaW52b2tlIENsZWFyIFJlZ2lzdHJhdGlvbiBhbGdvcml0
aG0gcGFzc2luZyB0aGlzIHJlZ2lzdHJhdGlvbiBhcyBpdHMgYXJndW1lbnQuCi0gICAgICAgIC8v
IEZJWE1FOiBXZSBkb24ndCBoYXZlICJjbGVhciByZWdpc3RyYXRpb24iIHlldC4KLQotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9sYXN0VXBkYXRlVGltZSA9IGN1cnJlbnRUaW1lKCk7
Ci0gICAgCi0gICAgLy8gRklYTUU6IElmIHRoZSBzY3JpcHQgZGF0YSBtYXRjaGVzIGJ5dGUtZm9y
LWJ5dGUgd2l0aCB0aGUgZXhpc3RpbmcgbmV3ZXN0V29ya2VyLAotICAgIC8vIHRoZW4gcmVzb2x2
ZSBhbmQgZmluaXNoIHRoZSBqb2Igd2l0aG91dCBkb2luZyBhbnl0aGluZyBmdXJ0aGVyLgotCi0g
ICAgLy8gRklYTUU6IFN1cHBvcnQgdGhlIHByb3BlciB3b3JrZXIgdHlwZSAoY2xhc3NpYyB2cyBt
b2R1bGUpCi0gICAgbV9zZXJ2ZXIuY3JlYXRlV29ya2VyKGNvbm5lY3Rpb24sIG1fcmVnaXN0cmF0
aW9uS2V5LCBtX2N1cnJlbnRKb2ItPnNjcmlwdFVSTCwgcmVzdWx0LnNjcmlwdCwgV29ya2VyVHlw
ZTo6Q2xhc3NpYyk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiB3b3Jr
ZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIFVOVVNFRF9QQVJBTSh3b3JrZXJJ
RCk7Ci0KLSAgICByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3Is
IG1lc3NhZ2UgfSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjcmlwdENvbnRl
eHRTdGFydGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgdWludDY0X3QgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiB3b3JrZXJJRCkKLXsKLSAgICBVTlVTRURfUEFSQU0od29ya2VySUQpOwotICAg
IHJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhIHsgbV9yZWdpc3RyYXRpb25LZXksIGlkZW50aWZpZXIsIG1fc2NvcGVVUkwsIG1fc2NyaXB0
VVJMLCBtX3VwZGF0ZVZpYUNhY2hlLnZhbHVlX29yKFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNo
ZTo6SW1wb3J0cykgfSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnN0YXJ0TmV4
dEpvYigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoIW1fY3Vy
cmVudEpvYik7Ci0gICAgQVNTRVJUKCFtX2pvYlF1ZXVlLmlzRW1wdHkoKSk7Ci0KLSAgICBtX2N1
cnJlbnRKb2IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2JEYXRhPihtX2pvYlF1
ZXVlLnRha2VGaXJzdCgpLmlzb2xhdGVkQ29weSgpKTsKLQotICAgIHN3aXRjaCAobV9jdXJyZW50
Sm9iLT50eXBlKSB7Ci0gICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI6Ci0g
ICAgICAgIG1fc2VydmVyLnBvc3RUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNX
U2VydmVyUmVnaXN0cmF0aW9uOjpydW5SZWdpc3RlckpvYiwgKm1fY3VycmVudEpvYikpOwotICAg
ICAgICByZXR1cm47Ci0gICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VW5yZWdpc3RlcjoK
LSAgICAgICAgbV9zZXJ2ZXIucG9zdFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAm
U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJ1blVucmVnaXN0ZXJKb2IsICptX2N1cnJlbnRKb2IpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci19Ci0KLWJvb2wgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmlzRW1wdHkoKQotewotICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgLy8gSGF2aW5nIG9yIG5vdC1oYXZpbmcgYW4g
bV91cGRhdGVWaWFDYWNoZSBmbGFnIGlzIGN1cnJlbnRseQotICAgIC8vIHRoZSBzaWduYWwgYXMg
dG8gd2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBlbXB0eSAoaS5lLiAibmV3IikgcmVnaXN0cmF0
aW9uLgotICAgIC8vIFRoZXJlIHdpbGwgYmUgYSBtb3JlIGV4cGxpY2l0IHNpZ25hbCBpbiB0aGUg
bmVhciBmdXR1cmUuCi0gICAgcmV0dXJuICFtX3VwZGF0ZVZpYUNhY2hlOwogfQogCiBTV1NlcnZl
cldvcmtlciogU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmdldE5ld2VzdFdvcmtlcigpCkBAIC0xNDEs
MTYzICs2MywxMSBAQCBTV1NlcnZlcldvcmtlciogU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmdldE5l
d2VzdFdvcmtlcigpCiAgICAgcmV0dXJuIG1fYWN0aXZlV29ya2VyLmdldCgpOwogfQogCi12b2lk
IFNXU2VydmVyUmVnaXN0cmF0aW9uOjpydW5SZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYgam9iKQotewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VS
VChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwotCi0gICAgaWYg
KCFzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0VVJMKSkKLSAg
ICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0
YSB7IFNlY3VyaXR5RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiU2NyaXB0IFVSTCBpcyBub3QgcG90ZW50
aWFsbHkgdHJ1c3R3b3J0aHkiKSB9KTsKLQotICAgIC8vIElmIHRoZSBvcmlnaW4gb2Ygam9i4oCZ
cyBzY3JpcHQgdXJsIGlzIG5vdCBqb2LigJlzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgotICAg
IGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGpvYi5zY3JpcHRVUkwsIGpvYi5jbGll
bnRDcmVhdGlvblVSTCkpCi0gICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWlu
VGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIlNjcmlw
dCBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIHJlZ2lzdGVyaW5nIGNsaWVudCdzIG9yaWdpbiIp
IH0pOwotCi0gICAgLy8gSWYgdGhlIG9yaWdpbiBvZiBqb2LigJlzIHNjb3BlIHVybCBpcyBub3Qg
am9i4oCZcyByZWZlcnJlcidzIG9yaWdpbiwgdGhlbjoKLSAgICBpZiAoIXByb3RvY29sSG9zdEFu
ZFBvcnRBcmVFcXVhbChqb2Iuc2NvcGVVUkwsIGpvYi5jbGllbnRDcmVhdGlvblVSTCkpCi0gICAg
ICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEg
eyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIlNjb3BlIG9yaWdpbiBkb2VzIG5vdCBtYXRj
aCB0aGUgcmVnaXN0ZXJpbmcgY2xpZW50J3Mgb3JpZ2luIikgfSk7Ci0KLSAgICAvLyBJZiByZWdp
c3RyYXRpb24gaXMgbm90IG51bGwgKGluIG91ciBwYXJsYW5jZSAiZW1wdHkiKSwgdGhlbjoKLSAg
ICBpZiAoIWlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQobV91cGRhdGVWaWFDYWNoZSk7Ci0K
LSAgICAgICAgbV91bmluc3RhbGxpbmcgPSBmYWxzZTsKLSAgICAgICAgYXV0byogbmV3ZXN0V29y
a2VyID0gZ2V0TmV3ZXN0V29ya2VyKCk7Ci0gICAgICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXIt
PnNjcmlwdFVSTCgpKSAmJiBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSA9
PSAqbV91cGRhdGVWaWFDYWNoZSkgewotICAgICAgICAgICAgcmVzb2x2ZVdpdGhSZWdpc3RyYXRp
b25Pbk1haW5UaHJlYWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIG1fc2NvcGVVUkwgPSBqb2Iuc2NvcGVVUkwuaXNvbGF0ZWRDb3B5KCk7
Ci0gICAgICAgIG1fc2NvcGVVUkwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgICAg
IG1fc2NyaXB0VVJMID0gam9iLnNjcmlwdFVSTC5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgbV91
cGRhdGVWaWFDYWNoZSA9IGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlOwot
ICAgIH0KLQotICAgIHJ1blVwZGF0ZUpvYihqb2IpOwotfQotCi12b2lkIFNXU2VydmVyUmVnaXN0
cmF0aW9uOjpydW5VbnJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2Ip
Ci17Ci0gICAgLy8gSWYgdGhlIG9yaWdpbiBvZiBqb2LigJlzIHNjb3BlIHVybCBpcyBub3Qgam9i
J3MgY2xpZW50J3Mgb3JpZ2luLCB0aGVuOgotICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFy
ZUVxdWFsKGpvYi5zY29wZVVSTCwgam9iLmNsaWVudENyZWF0aW9uVVJMKSkKLSAgICAgICAgcmV0
dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFNlY3Vy
aXR5RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiT3JpZ2luIG9mIHNjb3BlIFVSTCBkb2VzIG5vdCBtYXRj
aCB0aGUgY2xpZW50J3Mgb3JpZ2luIikgfSk7Ci0KLSAgICAvLyBMZXQgcmVnaXN0cmF0aW9uIGJl
IHRoZSByZXN1bHQgb2YgcnVubmluZyAiR2V0IFJlZ2lzdHJhdGlvbiIgYWxnb3JpdGhtIHBhc3Np
bmcgam9i4oCZcyBzY29wZSB1cmwgYXMgdGhlIGFyZ3VtZW50LgotICAgIC8vIElmIHJlZ2lzdHJh
dGlvbiBpcyBudWxsLCB0aGVuOgotICAgIGlmIChpc0VtcHR5KCkgfHwgbV91bmluc3RhbGxpbmcp
IHsKLSAgICAgICAgLy8gSW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ugd2l0aCBqb2IgYW5kIGZh
bHNlLgotICAgICAgICByZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0T25NYWluVGhyZWFk
KGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFNldCByZWdpc3RyYXRp
b27igJlzIHVuaW5zdGFsbGluZyBmbGFnLgotICAgIG1fdW5pbnN0YWxsaW5nID0gdHJ1ZTsKLQot
ICAgIC8vIEludm9rZSBSZXNvbHZlIEpvYiBQcm9taXNlIHdpdGggam9iIGFuZCB0cnVlLgotICAg
IHJlc29sdmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQodHJ1ZSk7Ci0KLSAg
ICAvLyBGSVhNRTogSW52b2tlIFRyeSBDbGVhciBSZWdpc3RyYXRpb24gd2l0aCByZWdpc3RyYXRp
b24uCi19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJ1blVwZGF0ZUpvYihjb25zdCBT
ZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQotewotICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBu
dWxsIChpbiBvdXIgcGFybGFuY2UgImVtcHR5Iikgb3IgcmVnaXN0cmF0aW9u4oCZcyB1bmluc3Rh
bGxpbmcgZmxhZyBpcyBzZXQsIHRoZW46Ci0gICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVF
cnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBkYXRlIGEgbnVsbC9ub25leGlzdGVudCBzZXJ2
aWNlIHdvcmtlciByZWdpc3RyYXRpb24iKSB9KTsKLSAgICBpZiAobV91bmluc3RhbGxpbmcpCi0g
ICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRh
dGEgeyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0ZSBhIHNlcnZpY2Ugd29y
a2VyIHJlZ2lzdHJhdGlvbiB0aGF0IGlzIHVuaW5zdGFsbGluZyIpIH0pOwotCi0gICAgLy8gSWYg
am9i4oCZcyBqb2IgdHlwZSBpcyB1cGRhdGUsIGFuZCBuZXdlc3RXb3JrZXLigJlzIHNjcmlwdCB1
cmwgZG9lcyBub3QgZXF1YWwgam9i4oCZcyBzY3JpcHQgdXJsIHdpdGggdGhlIGV4Y2x1ZGUgZnJh
Z21lbnRzIGZsYWcgc2V0LCB0aGVuOgotICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IGdldE5ld2Vz
dFdvcmtlcigpOwotICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgIWVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIoam9iLnNjcmlwdFVSTCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSkpCi0g
ICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRh
dGEgeyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0ZSBhIHNlcnZpY2Ugd29y
a2VyIHdpdGggYSByZXF1ZXN0ZWQgc2NyaXB0IFVSTCB3aG9zZSBuZXdlc3Qgd29ya2VyIGhhcyBh
IGRpZmZlcmVudCBzY3JpcHQgVVJMIikgfSk7Ci0KLSAgICBzdGFydFNjcmlwdEZldGNoRnJvbU1h
aW5UaHJlYWQoKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cmVqZWN0V2l0aEV4
Y2VwdGlvbk9uTWFpblRocmVhZChjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pCi17Ci0g
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9zZXJ2ZXIucG9zdFRhc2tSZXBseShj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cmVqZWN0
Q3VycmVudEpvYiwgZXhjZXB0aW9uKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246
OnJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25NYWluVGhyZWFkKCkKLXsKLSAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKLSAgICBtX3NlcnZlci5wb3N0VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhy
ZWFkVGFzaygqdGhpcywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpyZXNvbHZlQ3VycmVudFJlZ2lz
dHJhdGlvbkpvYiwgZGF0YSgpKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJl
c29sdmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQoYm9vbCB1bnJlZ2lzdHJh
dGlvblJlc3VsdCkKLXsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBtX3NlcnZl
ci5wb3N0VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVyUmVn
aXN0cmF0aW9uOjpyZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iLCB1bnJlZ2lzdHJhdGlv
blJlc3VsdCkpOwotfQotCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzdGFydFNjcmlwdEZl
dGNoRnJvbU1haW5UaHJlYWQoKQotewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAg
IG1fc2VydmVyLnBvc3RUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dT
ZXJ2ZXJSZWdpc3RyYXRpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKSk7Ci19Ci0K
LXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJlamVjdEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0
aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwotCi0gICAgbV9zZXJ2ZXIucmVqZWN0Sm9iKCptX2N1
cnJlbnRKb2IsIGV4Y2VwdGlvbkRhdGEpOwotCi0gICAgZmluaXNoQ3VycmVudEpvYigpOwotfQot
Ci12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpyZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpv
Yihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYgZGF0YSkKLXsKLSAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwotICAgIEFTU0VS
VChtX2N1cnJlbnRKb2ItPnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyKTsK
LQotICAgIG1fc2VydmVyLnJlc29sdmVSZWdpc3RyYXRpb25Kb2IoKm1fY3VycmVudEpvYiwgZGF0
YSk7Ci0KLSAgICBmaW5pc2hDdXJyZW50Sm9iKCk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OnJlc29sdmVDdXJyZW50VW5yZWdpc3RyYXRpb25Kb2IoYm9vbCB1bnJlZ2lzdHJhdGlv
blJlc3VsdCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2N1
cnJlbnRKb2IpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2ItPnR5cGUgPT0gU2VydmljZVdvcmtl
ckpvYlR5cGU6OlVucmVnaXN0ZXIpOwotCi0gICAgbV9zZXJ2ZXIucmVzb2x2ZVVucmVnaXN0cmF0
aW9uSm9iKCptX2N1cnJlbnRKb2IsIG1fcmVnaXN0cmF0aW9uS2V5LCB1bnJlZ2lzdHJhdGlvblJl
c3VsdCk7Ci0KLSAgICBmaW5pc2hDdXJyZW50Sm9iKCk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdp
c3RyYXRpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKCkKLXsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwotCi0gICAgbV9zZXJ2
ZXIuc3RhcnRTY3JpcHRGZXRjaCgqbV9jdXJyZW50Sm9iKTsKLX0KLQotdm9pZCBTV1NlcnZlclJl
Z2lzdHJhdGlvbjo6ZmluaXNoQ3VycmVudEpvYigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudEpv
Yik7Ci0gICAgQVNTRVJUKCFtX2pvYlRpbWVyLmlzQWN0aXZlKCkpOwotCi0gICAgbV9jdXJyZW50
Sm9iID0gbnVsbHB0cjsKLSAgICBpZiAobV9qb2JRdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHN0YXJ0TmV4dEpvYigpOwotfQotCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uRGF0YSBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHsgbV9yZWdpc3RyYXRpb25LZXksIGlkZW50aWZpZXIoKSwgbV9zY29wZVVSTCwgbV9zY3JpcHRV
UkwsIG1fdXBkYXRlVmlhQ2FjaGUudmFsdWVfb3IoU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hl
OjpJbXBvcnRzKSB9OworICAgIHJldHVybiB7IG1fcmVnaXN0cmF0aW9uS2V5LCBpZGVudGlmaWVy
KCksIG1fc2NvcGVVUkwsIG1fc2NyaXB0VVJMLCBtX3VwZGF0ZVZpYUNhY2hlIH07CiB9CiAKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IDM1ZDdmNWYxNjMwLi43YWQ0YmM1MDAzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clJlZ2lzdHJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaApAQCAtMjgsNjggKzI4LDQ3IEBACiAjaWYgRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQogCiAjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKLSNpbmNsdWRlICJTZXJ2
aWNlV29ya2VySm9iRGF0YS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhLmgiCi0jaW5jbHVkZSAiVGltZXIuaCIKLSNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNs
dWRlIDx3dGYvSWRlbnRpZmllZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNX
U2VydmVyOwogY2xhc3MgU1dTZXJ2ZXJXb3JrZXI7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKIHN0
cnVjdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQ7CiAKIGNsYXNzIFNXU2VydmVyUmVnaXN0cmF0
aW9uIDogcHVibGljIFRocmVhZFNhZmVJZGVudGlmaWVkPFNXU2VydmVyUmVnaXN0cmF0aW9uPiB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU1dTZXJ2ZXJSZWdpc3RyYXRpb24oU1dTZXJ2ZXImLCBj
b25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7Ci0gICAgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24oY29uc3QgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKSA9IGRlbGV0ZTsKKyAgICBTV1NlcnZl
clJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgU2Vydmlj
ZVdvcmtlclVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBVUkwmIHNj
cmlwdFVSTCk7CiAgICAgflNXU2VydmVyUmVnaXN0cmF0aW9uKCk7CiAKLSAgICB2b2lkIGVucXVl
dWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKICAgICB2b2lkIHNjcmlwdEZldGNo
RmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hS
ZXN1bHQmKTsKICAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpD
b25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KTsKICAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwg
dWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCk7CiAgICAgCi0gICAg
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgZGF0YSgpIGNvbnN0OworICAgIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnaXN0
cmF0aW9uS2V5OyB9CiAKLXByaXZhdGU6Ci0gICAgdm9pZCBqb2JUaW1lckZpcmVkKCk7Ci0gICAg
dm9pZCBzdGFydE5leHRKb2IoKTsKLSAgICB2b2lkIHJlamVjdEN1cnJlbnRKb2IoY29uc3QgRXhj
ZXB0aW9uRGF0YSYpOwotICAgIHZvaWQgcmVzb2x2ZUN1cnJlbnRSZWdpc3RyYXRpb25Kb2IoY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmKTsKLSAgICB2b2lkIHJlc29sdmVDdXJy
ZW50VW5yZWdpc3RyYXRpb25Kb2IoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7Ci0gICAgdm9p
ZCBzdGFydFNjcmlwdEZldGNoRm9yQ3VycmVudEpvYigpOwotICAgIHZvaWQgZmluaXNoQ3VycmVu
dEpvYigpOworICAgIFNXU2VydmVyV29ya2VyKiBnZXROZXdlc3RXb3JrZXIoKTsKKyAgICBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBkYXRhKCkgY29uc3Q7CiAKLSAgICB2b2lkIHJ1blJl
Z2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7Ci0gICAgdm9pZCBydW5VbnJl
Z2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7Ci0gICAgdm9pZCBydW5VcGRh
dGVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKKyAgICBib29sIGlzVW5pbnN0YWxs
aW5nKCkgY29uc3QgeyByZXR1cm4gbV91bmluc3RhbGxpbmc7IH0KKyAgICB2b2lkIHNldElzVW5p
bnN0YWxsaW5nKGJvb2wgdmFsdWUpIHsgbV91bmluc3RhbGxpbmcgPSB2YWx1ZTsgfQogCi0gICAg
dm9pZCByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKGNvbnN0IEV4Y2VwdGlvbkRhdGEm
KTsKLSAgICB2b2lkIHJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25NYWluVGhyZWFkKCk7Ci0gICAg
dm9pZCByZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0T25NYWluVGhyZWFkKGJvb2wpOwot
ICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZyb21NYWluVGhyZWFkKCk7Ci0gICAgYm9vbCBpc0Vt
cHR5KCk7Ci0gICAgU1dTZXJ2ZXJXb3JrZXIqIGdldE5ld2VzdFdvcmtlcigpOworICAgIHZvaWQg
c2V0TGFzdFVwZGF0ZVRpbWUoZG91YmxlIHRpbWUpIHsgbV9sYXN0VXBkYXRlVGltZSA9IHRpbWU7
IH0KKyAgICBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUgdXBkYXRlVmlhQ2FjaGUoKSBjb25z
dCB7IHJldHVybiBtX3VwZGF0ZVZpYUNhY2hlOyB9CiAKLSAgICBEZXF1ZTxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YT4gbV9qb2JRdWV1ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpv
YkRhdGE+IG1fY3VycmVudEpvYjsKK3ByaXZhdGU6CisgICAgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKKyAgICBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2Fj
aGUgbV91cGRhdGVWaWFDYWNoZTsKKyAgICBVUkwgbV9zY29wZVVSTDsKKyAgICBVUkwgbV9zY3Jp
cHRVUkw7CiAKICAgICBib29sIG1fdW5pbnN0YWxsaW5nIHsgZmFsc2UgfTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1dTZXJ2ZXJXb3JrZXI+IG1faW5zdGFsbGluZ1dvcmtlcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1dTZXJ2ZXJXb3JrZXI+IG1fd2FpdGluZ1dvcmtlcjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8U1dTZXJ2ZXJXb3JrZXI+IG1fYWN0aXZlV29ya2VyOwotICAgIFVSTCBtX3Njb3BlVVJM
OwotICAgIFVSTCBtX3NjcmlwdFVSTDsKLSAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJV
cGRhdGVWaWFDYWNoZT4gbV91cGRhdGVWaWFDYWNoZTsKLSAgICAKLSAgICBkb3VibGUgbV9sYXN0
VXBkYXRlVGltZSB7IDAgfTsKIAotICAgIFRpbWVyIG1fam9iVGltZXI7Ci0gICAgU1dTZXJ2ZXIm
IG1fc2VydmVyOwotICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRp
b25LZXk7CisgICAgZG91YmxlIG1fbGFzdFVwZGF0ZVRpbWUgeyAwIH07CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325621</attachid>
            <date>2017-11-01 13:24:34 -0700</date>
            <delta_ts>2017-11-01 13:38:49 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>split_SW_JobQueues_2_wip.patch</filename>
            <type>text/plain</type>
            <size>46884</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0ZXItY29udHJvbGxlci5odHRw
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLWNvbnRyb2xsZXIu
aHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IGYwYmVmMzgyZGJmLi5mOWViMjU1YjJjMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci1jb250cm9sbGVyLmh0dHBzLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91bnJlZ2lzdGVyLWNvbnRyb2xsZXIuaHR0
cHMtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogCiAKIEZBSUwgVW5yZWdpc3RlciBkb2Vz
IG5vdCBhZmZlY3QgZXhpc3RpbmcgY29udHJvbGxlciBhc3NlcnRfdW5yZWFjaGVkOiB1bmV4cGVj
dGVkIHJlamVjdGlvbjogYXNzZXJ0X3RydWU6IGRvY3VtZW50IHNob3VsZCBsb2FkIHdpdGggYSBj
b250cm9sbGVyIGV4cGVjdGVkIHRydWUgZ290IGZhbHNlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29k
ZQotRkFJTCBVbnJlZ2lzdGVyIHByZXZlbnRzIGNvbnRyb2wgb2Ygc3Vic2VxdWVudCBuYXZpZ2F0
aW9ucyBhc3NlcnRfdW5yZWFjaGVkOiB1bmV4cGVjdGVkIHJlamVjdGlvbjogYXNzZXJ0X2VxdWFs
czogcmVxdWVzdHMgc2hvdWxkIG5vdCBiZSBpbnRlcmNlcHRlZCBleHBlY3RlZCAiYSBzaW1wbGUg
dGV4dCBmaWxlXG4iIGJ1dCBnb3QgIkVSUk9SIiBSZWFjaGVkIHVucmVhY2hhYmxlIGNvZGUKK1BB
U1MgVW5yZWdpc3RlciBwcmV2ZW50cyBjb250cm9sIG9mIHN1YnNlcXVlbnQgbmF2aWdhdGlvbnMg
CiBQQVNTIFVucmVnaXN0ZXIgcHJldmVudHMgbmV3IGNvbnRyb2xsZWUgZXZlbiBpZiByZWdpc3Ry
YXRpb24gaXMgc3RpbGwgaW4gdXNlIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci91
bnJlZ2lzdGVyLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyL3VucmVnaXN0
ZXIuaHR0cHMtZXhwZWN0ZWQudHh0CmluZGV4IDI5MWNjYzY2ZDBiLi42ZGFlOGI2ZTdmYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci5odHRwcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXIvdW5yZWdpc3Rlci5odHRwcy1leHBlY3RlZC50eHQKQEAg
LTEsNCArMSw0IEBACiAKLVBBU1MgVW5yZWdpc3RlciB0d2ljZSAKLUZBSUwgUmVnaXN0ZXIgdGhl
biB1bnJlZ2lzdGVyIGFzc2VydF91bnJlYWNoZWQ6IHVuZXhwZWN0ZWQgcmVqZWN0aW9uOiBhc3Nl
cnRfZXF1YWxzOiB1bnJlZ2lzdHJhdGlvbiBzaG91bGQgcmVzb2x2ZSB3aXRoIHRydWUgZXhwZWN0
ZWQgdHJ1ZSBidXQgZ290IGZhbHNlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBVbnJl
Z2lzdGVyIHR3aWNlIGFzc2VydF91bnJlYWNoZWQ6IHVuZXhwZWN0ZWQgcmVqZWN0aW9uOiBhc3Nl
cnRfZXF1YWxzOiB1bnJlZ2lzdGVyaW5nIHR3aWNlIHNob3VsZCByZXNvbHZlIHdpdGggZmFsc2Ug
ZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorUEFT
UyBSZWdpc3RlciB0aGVuIHVucmVnaXN0ZXIgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYzc2Zjc4YjM4
MjMuLmMyYTQwMzNjYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMjE3NCw2ICsyMTc0LDcgQEAgd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKIAogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV0NsaWVudENvbm5lY3Rpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyLmNwcAord29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNw
cAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKIHdvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNzhhM2FiNTBjNC4u
MzhiNGJhNTNmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTIxNjgsNiArMjE2OCw3IEBACiAJCTgzMDc4NEIyMUM1MkVFMkMw
MDEwNEQxRCAvKiBYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODMwNzg0QjExQzUyRUUxOTAwMTA0RDFEIC8qIFhNTERvY3VtZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwQTM2
QkQxREFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEEzNkJCMURBQzVGQTcwMDZEN0QwOSAv
KiBKU01vdXNlRXZlbnRJbml0LmggKi87IH07CiAJCTgzMTAyQjI3MUY5RUFERDkwMEU0MDRCOSAv
KiBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuaCAqLzsgfTsKKwkJODMxMUMwMDMxRkFBMkU5NTAwRTNDOEU1IC8qIFNX
U2VydmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMxMjBDNzEx
QzU2RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2RTgzQTAwRjNGMEUzIC8qIEhU
TUxEYXRhRWxlbWVudC5oICovOyB9OwogCQk4MzIxNTA3RTFGMjdFQTFCMDA5NUIxMzYgLyogTmF2
aWdhdG9yQmVhY29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4MzIxNTA3QjFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggKi87IH07
CiAJCTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4NDMzMTlE
OEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsgfTsKQEAgLTkzNzMs
NiArOTM3NCw4IEBACiAJCTgzMEEzNkJCMURBQzVGQTcwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJ
bml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW91c2VFdmVudEluaXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMDJCMjMxRjlFQURDMjAwRTQwNEI5
IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODMxMDJCMjUxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFi
bGVNZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzExQzAw
MDFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9i
UXVldWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFDNDZDMzFGOUVFNUUwMDBFQkQ0
NTAgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMUQxRjI5MUM1NkVDQTAwMEY1RjZDMCAv
KiBIVE1MRGF0YUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSFRNTERhdGFFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMy
MTUwN0ExRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBOYXZpZ2F0b3JCZWFjb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTcxMzIsNiArMTcxMzUsOCBAQAogCQkJCTUxN0E1MkZGMUY0NzhDQ0UwMERDREMwQSAvKiBT
V0NsaWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyog
U1dTZXJ2ZXIuY3BwICovLAogCQkJCTUxN0E1MkVFMUY0NzUzNTkwMERDREMwQSAvKiBTV1NlcnZl
ci5oICovLAorCQkJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVl
LmNwcCAqLywKKwkJCQk4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1
ZS5oICovLAogCQkJCTUxRjY0NTk1MUY0QTY4NjEwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJh
dGlvbi5jcHAgKi8sCiAJCQkJNTFGNjQ1OTQxRjRBNjg0RjAwQjU0REVEIC8qIFNXU2VydmVyUmVn
aXN0cmF0aW9uLmggKi8sCiAJCQkJNTE3QTUzNDMxRjUwQzE2MTAwRENEQzBBIC8qIFNXU2VydmVy
V29ya2VyLmNwcCAqLywKQEAgLTI3NDYxLDYgKzI3NDY2LDcgQEAKIAkJCQkxQUUyQUEzMTBBMUNE
QUI0MDBCNDJCMjUgLyogSlNIVE1MSFJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTg1
QjE5MDBBMUIxOEEyMDBEOEM4N0MgLyogSlNIVE1MSHRtbEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNDkxOEM5MEJGRUEwNTAwMDlENjMxNiAvKiBKU0hUTUxJRnJhbWVFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk4MzExQzAwMzFGQUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2ZXJK
b2JRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFBOTgwQTFDREQyRDAwQjQyQjI1IC8q
IEpTSFRNTEltYWdlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTdFOTcwQTFBODNF
MzAwN0ZCOEM1IC8qIEpTSFRNTElucHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM2
QjA5NTYxRjVGMzREOTAwM0MzNzAyIC8qIEpTSFRNTElucHV0RWxlbWVudEVudHJpZXNBUEkuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmluZGV4IGNjNzdlODgyYjYyLi40NzYyOTE4
MzFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtMjQ0LDggKzI0NCw4IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlckNvbnRhaW5lcjo6am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3Jr
ZXJKb2ImIGpvYiwKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcHJvcGVyIHNlbGVjdGlvbiBv
ZiBzZXJ2aWNlIHdvcmtlcnMuCiAgICAgYXV0byogYWN0aXZlU2VydmljZVdvcmtlciA9IGNvbnRl
eHQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKTsKLSAgICBpZiAoIWFjdGl2ZVNlcnZpY2VXb3JrZXIg
fHwgYWN0aXZlU2VydmljZVdvcmtlci0+aWRlbnRpZmllcigpICE9IGRhdGEuaWRlbnRpZmllcikg
ewotICAgICAgICBjb250ZXh0LT5zZXRBY3RpdmVTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXI6
OmNyZWF0ZSgqY29udGV4dCwgZGF0YS5pZGVudGlmaWVyLCBkYXRhLnNjcmlwdFVSTCkpOworICAg
IGlmICghYWN0aXZlU2VydmljZVdvcmtlciB8fCBhY3RpdmVTZXJ2aWNlV29ya2VyLT5pZGVudGlm
aWVyKCkgIT0gZGF0YS5hY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgeworICAgICAgICBj
b250ZXh0LT5zZXRBY3RpdmVTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXI6OmNyZWF0ZSgqY29u
dGV4dCwgZGF0YS5hY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZGF0YS5zY3JpcHRVUkwp
KTsKICAgICAgICAgYWN0aXZlU2VydmljZVdvcmtlciA9IGNvbnRleHQtPmFjdGl2ZVNlcnZpY2VX
b3JrZXIoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwCmluZGV4IDZj
NjdhYTY1N2I5Li42ODc5NGQ0MmQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3Bw
CkBAIC0zNSw2ICszNSw3IEBAIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25zCiAgICAgcmV0dXJuIHsK
ICAgICAgICAga2V5Lmlzb2xhdGVkQ29weSgpLAogICAgICAgICBpZGVudGlmaWVyLAorICAgICAg
ICBhY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllciwKICAgICAgICAgc2NvcGVVUkwuaXNvbGF0
ZWRDb3B5KCksCiAgICAgICAgIHNjcmlwdFVSTC5pc29sYXRlZENvcHkoKSwKICAgICAgICAgdXBk
YXRlVmlhQ2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgKaW5kZXggNzRjOTVmMTE1NWQu
LmRjNTVmNjZjODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaApAQCAtMzYsNiArMzYs
NyBAQCBlbnVtIGNsYXNzIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTsKIHN0cnVjdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7CiAgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSBrZXk7CiAgICAgdWludDY0X3QgaWRlbnRpZmllcjsKKyAgICB1aW50NjRfdCBhY3RpdmVT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcjsgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBwYXJ0
IG9mIHJlZ2lzdHJhdGlvbkRhdGEuCiAgICAgVVJMIHNjb3BlVVJMOwogICAgIFVSTCBzY3JpcHRV
Ukw7CiAgICAgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlOwpAQCAt
NTAsNyArNTEsNyBAQCBzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgewogdGVt
cGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIgPDwga2V5IDw8
IGlkZW50aWZpZXIgPDwgc2NvcGVVUkwgPDwgc2NyaXB0VVJMIDw8IHVwZGF0ZVZpYUNhY2hlOwor
ICAgIGVuY29kZXIgPDwga2V5IDw8IGlkZW50aWZpZXIgPDwgYWN0aXZlU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgPDwgc2NvcGVVUkwgPDwgc2NyaXB0VVJMIDw8IHVwZGF0ZVZpYUNhY2hlOwogfQog
CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtNjYsNiArNjcsMTEgQEAgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGE6OmRlY28KICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBhY3RpdmVTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IGFjdGl2ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
OworICAgIGlmICghYWN0aXZlU2VydmljZVdvcmtlcklkZW50aWZpZXIpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKICAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gc2NvcGVVUkw7CiAgICAg
ZGVjb2RlciA+PiBzY29wZVVSTDsKICAgICBpZiAoIXNjb3BlVVJMKQpAQCAtODEsNyArODcsNyBA
QCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhPiBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YTo6ZGVjbwogICAgIGlmICghdXBkYXRlVmlhQ2FjaGUpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4geyB7IFdURk1vdmUoKmtleSks
IFdURk1vdmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpzY29wZVVSTCksIFdURk1vdmUoKnNjcmlw
dFVSTCksIFdURk1vdmUoKnVwZGF0ZVZpYUNhY2hlKSB9IH07CisgICAgcmV0dXJuIHsgeyBXVEZN
b3ZlKCprZXkpLCBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqYWN0aXZlU2VydmljZVdv
cmtlcklkZW50aWZpZXIpLCBXVEZNb3ZlKCpzY29wZVVSTCksIFdURk1vdmUoKnNjcmlwdFVSTCks
IFdURk1vdmUoKnVwZGF0ZVZpYUNhY2hlKSB9IH07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cAppbmRleCBmYmE2NTAzMTI1Yi4uM2VhNzk4NDM2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIK
ICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiU1dTZXJ2ZXJKb2JRdWV1ZS5oIgogI2lu
Y2x1ZGUgIlNXU2VydmVyUmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIu
aCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKQEAgLTU3LDYgKzU4LDcg
QEAgU1dTZXJ2ZXI6On5TV1NlcnZlcigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25uZWN0
aW9ucy5pc0VtcHR5KCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKG1fcmVnaXN0cmF0aW9ucy5pc0Vt
cHR5KCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fam9iUXVldWVzLmlzRW1wdHkoKSk7CiAKICAg
ICBBU1NFUlQobV90YXNrUXVldWUuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV90YXNrUmVwbHlR
dWV1ZS5pc0VtcHR5KCkpOwpAQCAtNjgsNiArNzAsMjUgQEAgU1dTZXJ2ZXI6On5TV1NlcnZlcigp
CiAgICAgQVNTRVJUKCFtX3Rhc2tUaHJlYWQpOwogfQogCitTV1NlcnZlclJlZ2lzdHJhdGlvbiog
U1dTZXJ2ZXI6OmdldFJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiByZWdpc3RyYXRpb25LZXkpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cisg
ICAgcmV0dXJuIG1fcmVnaXN0cmF0aW9ucy5nZXQocmVnaXN0cmF0aW9uS2V5KTsKK30KKwordm9p
ZCBTV1NlcnZlcjo6YWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lz
dHJhdGlvbj4mJiByZWdpc3RyYXRpb24pCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CisgICAgYXV0byBrZXkgPSByZWdpc3RyYXRpb24tPmtleSgpOworICAgIG1fcmVnaXN0cmF0aW9u
cy5hZGQoa2V5LCBXVEZNb3ZlKHJlZ2lzdHJhdGlvbikpOworfQorCit2b2lkIFNXU2VydmVyOjpy
ZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXN0cmF0aW9uS2V5KQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fcmVn
aXN0cmF0aW9ucy5yZW1vdmUocmVnaXN0cmF0aW9uS2V5KTsKK30KKwogdm9pZCBTV1NlcnZlcjo6
Q29ubmVjdGlvbjo6c2NoZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0
YSYgam9iRGF0YSkKIHsKICAgICBMT0coU2VydmljZVdvcmtlciwgIlNjaGVkdWxpbmcgU2Vydmlj
ZVdvcmtlciBqb2IgJSIgUFJJdTY0ICItJSIgUFJJdTY0ICIgaW4gc2VydmVyIiwgam9iRGF0YS5j
b25uZWN0aW9uSWRlbnRpZmllcigpLCBqb2JEYXRhLmlkZW50aWZpZXIoKSk7CkBAIC04Niw5ICsx
MDcsOSBAQCB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9T
dGFydChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cgogICAgIG1fc2VydmVyLnNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KCp0aGlzLCByZWdpc3RyYXRpb25LZXksIHdvcmtlcklELCBtZXNzYWdl
KTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQo
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCB1aW50
NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQordm9pZCBTV1NlcnZlcjo6
Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCkKIHsKLSAgICBtX3NlcnZlci5zY3JpcHRDb250
ZXh0U3RhcnRlZCgqdGhpcywgcmVnaXN0cmF0aW9uS2V5LCBpZGVudGlmaWVyLCB3b3JrZXJJRCk7
CisgICAgbV9zZXJ2ZXIuc2NyaXB0Q29udGV4dFN0YXJ0ZWQoKnRoaXMsIHJlZ2lzdHJhdGlvbktl
eSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHdvcmtlcklEKTsKIH0KIAogU1dTZXJ2ZXI6OlNX
U2VydmVyKCkKQEAgLTEwMiw5ICsxMjMsOSBAQCB2b2lkIFNXU2VydmVyOjpzY2hlZHVsZUpvYihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSkKIHsKICAgICBBU1NFUlQobV9jb25u
ZWN0aW9ucy5jb250YWlucyhqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsKIAotICAg
IGF1dG8gcmVzdWx0ID0gbV9yZWdpc3RyYXRpb25zLmFkZChqb2JEYXRhLnJlZ2lzdHJhdGlvbktl
eSgpLCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fam9iUXVldWVzLmFkZChqb2JEYXRh
LnJlZ2lzdHJhdGlvbktleSgpLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkp
Ci0gICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2Vy
dmVyUmVnaXN0cmF0aW9uPigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVySm9i
UXVldWU+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKIAogICAgIEFTU0VSVChy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIApAQCAtMTU2LDI3ICsxNzcsMjcgQEAgdm9pZCBTV1Nl
cnZlcjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBT
ZXJ2aWNlV29ya2VyRmUKIAogICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHJlc3Vs
dC5jb25uZWN0aW9uSWRlbnRpZmllcikpOwogCi0gICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3Jl
Z2lzdHJhdGlvbnMuZ2V0KHJlc3VsdC5yZWdpc3RyYXRpb25LZXkpOwotICAgIGlmICghcmVnaXN0
cmF0aW9uKQorICAgIGF1dG8gam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVzdWx0LnJlZ2lz
dHJhdGlvbktleSk7CisgICAgaWYgKCFqb2JRdWV1ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
cmVnaXN0cmF0aW9uLT5zY3JpcHRGZXRjaEZpbmlzaGVkKGNvbm5lY3Rpb24sIHJlc3VsdCk7Cisg
ICAgam9iUXVldWUtPnNjcmlwdEZldGNoRmluaXNoZWQoY29ubmVjdGlvbiwgcmVzdWx0KTsKIH0K
IAogdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5LCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
CiAgICAgQVNTRVJUKG1fY29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVy
KCkpKTsKICAgICAKLSAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25z
LmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICByZWdpc3RyYXRpb24tPnNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KGNvbm5lY3Rpb24sIHdvcmtlcklELCBtZXNzYWdlKTsKKyAgICBpZiAo
YXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKKyAgICAg
ICAgam9iUXVldWUtPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbm5lY3Rpb24sIHdvcmtl
cklELCBtZXNzYWdlKTsKIH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQo
Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSYgcmVnaXN0cmF0aW9uS2V5LCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdv
cmtlcklEKQordm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoQ29ubmVjdGlvbiYg
Y29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0
aW9uS2V5LCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3
b3JrZXJJRCkKIHsKICAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9u
LmlkZW50aWZpZXIoKSkpOwogCi0gICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0
cmF0aW9ucy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKLSAgICAgICAgcmVnaXN0cmF0aW9uLT5zY3Jp
cHRDb250ZXh0U3RhcnRlZChjb25uZWN0aW9uLCBpZGVudGlmaWVyLCB3b3JrZXJJRCk7CisgICAg
aWYgKGF1dG8qIGpvYlF1ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCisg
ICAgICAgIGpvYlF1ZXVlLT5zY3JpcHRDb250ZXh0U3RhcnRlZChjb25uZWN0aW9uLCBzZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgd29ya2VySUQpOwogfQogCiBSZWY8U1dTZXJ2ZXJXb3JrZXI+IFNX
U2VydmVyOjpjcmVhdGVXb3JrZXIoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBzY3JpcHQsIFdvcmtlclR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCBjOTY2OWRhYzBhMy4u
ZTc3ODZlMzAxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBTV1NlcnZlckpvYlF1ZXVlOwogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb247CiBj
bGFzcyBTV1NlcnZlcldvcmtlcjsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwpAQCAtNTUsNyArNTYs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkNvbm5lY3Rpb24o
KTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBjb25zdCBTdHJpbmcmIHdv
cmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgd29ya2VySUQpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBXRUJD
T1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVyJiwgdWludDY0X3QgaWRlbnRpZmllcik7CkBA
IC04MCw2ICs4MSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dTZXJ2ZXIoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB+U1dTZXJ2ZXIoKTsKIAorICAgIFNXU2VydmVyUmVnaXN0cmF0
aW9uKiBnZXRSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYp
OworICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lz
dHJhdGlvbj4mJik7CisgICAgdm9pZCByZW1vdmVSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYpOworCiAgICAgdm9pZCBzY2hlZHVsZUpvYihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYpOwogICAgIHZvaWQgcmVqZWN0Sm9iKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwogICAgIHZvaWQgcmVzb2x2ZVJlZ2lz
dHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNvbnN0IFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhJik7CkBAIC0xMDAsMTAgKzEwNSwxMSBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29y
a2VyRmV0Y2hSZXN1bHQmKTsKICAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KENv
bm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgU3Ry
aW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKLSAgICB2b2lkIHNjcmlwdENv
bnRleHRTdGFydGVkKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5JiwgdWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCk7CisgICAg
dm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHdvcmtlcklEKTsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIENvbm5lY3Rpb24q
PiBtX2Nvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktl
eSwgc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPj4gbV9yZWdpc3RyYXRpb25z
OworICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVySm9iUXVldWU+PiBtX2pvYlF1ZXVlczsKIAogICAgIEhhc2hNYXA8U3RyaW5n
LCBSZWY8U1dTZXJ2ZXJXb3JrZXI+PiBtX3dvcmtlcnNCeUlEOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGVmNWVmYTk2YzEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVySm9iUXVldWUuY3BwCkBAIC0wLDAgKzEsMjkwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNXU2VydmVySm9iUXVldWUuaCIKKworI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKKyNpbmNsdWRl
ICJTV1NlcnZlci5oIgorI2luY2x1ZGUgIlNXU2VydmVyV29ya2VyLmgiCisjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQuaCIKKyNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJVcGRhdGVWaWFDYWNoZS5oIgorI2luY2x1ZGUgIldvcmtlclR5cGUuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitTV1NlcnZlckpvYlF1ZXVlOjpTV1NlcnZlckpvYlF1ZXVlKFNX
U2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSkK
KyAgICA6IG1fam9iVGltZXIoKnRoaXMsICZTV1NlcnZlckpvYlF1ZXVlOjpzdGFydE5leHRKb2Ip
CisgICAgLCBtX3NlcnZlcihzZXJ2ZXIpCisgICAgLCBtX3JlZ2lzdHJhdGlvbktleShrZXkpCit7
Cit9CisKK1NXU2VydmVySm9iUXVldWU6On5TV1NlcnZlckpvYlF1ZXVlKCkKK3sKKyAgICBBU1NF
UlQobV9qb2JRdWV1ZS5pc0VtcHR5KCkpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OmVu
cXVldWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCit7CisgICAgLy8g
RklYTUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMgZXF1aXZhbGVudCB0byB0
aGUgbGFzdCBqb2Igb24gdGhlIHF1ZXVlLgorICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBhbG9u
ZyB3aXRoIHRoYXQgam9iLgorCisgICAgbV9qb2JRdWV1ZS5hcHBlbmQoam9iRGF0YSk7CisKKyAg
ICBpZiAobV9jdXJyZW50Sm9iKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fam9iVGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9qb2JUaW1lci5zdGFydE9uZVNob3QoMF9zKTsKK30K
Kwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmIHJl
c3VsdCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2N1cnJl
bnRKb2IgJiYgbV9jdXJyZW50Sm9iLT5pZGVudGlmaWVyKCkgPT0gcmVzdWx0LmpvYklkZW50aWZp
ZXIpOworCisgICAgaWYgKCFyZXN1bHQuc2NyaXB0RXJyb3IuaXNOdWxsKCkpIHsKKyAgICAgICAg
cmVqZWN0Q3VycmVudEpvYihFeGNlcHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5n
KCJTY3JpcHQgVVJMICIsIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLnN0cmluZygpLCAiIGZldGNo
IHJlc3VsdGVkIGluIGVycm9yOiAiLCByZXN1bHQuc2NyaXB0RXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24oKSkgfSk7CisKKyAgICAgICAgLy8gSWYgbmV3ZXN0V29ya2VyIGlzIG51bGwsIGludm9r
ZSBDbGVhciBSZWdpc3RyYXRpb24gYWxnb3JpdGhtIHBhc3NpbmcgdGhpcyByZWdpc3RyYXRpb24g
YXMgaXRzIGFyZ3VtZW50LgorICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgaGF2ZSAiY2xlYXIg
cmVnaXN0cmF0aW9uIiB5ZXQuCisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJ
WE1FOiBJZiB0aGUgc2NyaXB0IGRhdGEgbWF0Y2hlcyBieXRlLWZvci1ieXRlIHdpdGggdGhlIGV4
aXN0aW5nIG5ld2VzdFdvcmtlciwKKyAgICAvLyB0aGVuIHJlc29sdmUgYW5kIGZpbmlzaCB0aGUg
am9iIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZnVydGhlci4KKworICAgIC8vIEZJWE1FOiBTdXBw
b3J0IHRoZSBwcm9wZXIgd29ya2VyIHR5cGUgKGNsYXNzaWMgdnMgbW9kdWxlKQorICAgIG1fc2Vy
dmVyLmNyZWF0ZVdvcmtlcihjb25uZWN0aW9uLCBtX3JlZ2lzdHJhdGlvbktleSwgbV9jdXJyZW50
Sm9iLT5zY3JpcHRVUkwsIHJlc3VsdC5zY3JpcHQsIFdvcmtlclR5cGU6OkNsYXNzaWMpOworfQor
Cit2b2lkIFNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2Vy
dmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgVU5VU0VEX1BBUkFN
KHdvcmtlcklEKTsKKworICAgIHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFVua25v
d25FcnJvciwgbWVzc2FnZSB9KTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRD
b250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgVU5VU0VEX1BBUkFNKHdvcmtlcklEKTsKKworICAgIG1fc2VydmVy
LnBvc3RUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVySm9iUXVldWU6
OnJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iT25NYWluVGhlYWQsIHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c3RhcnROZXh0Sm9iKCkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghbV9jdXJyZW50Sm9i
KTsKKyAgICBBU1NFUlQoIW1fam9iUXVldWUuaXNFbXB0eSgpKTsKKworICAgIG1fY3VycmVudEpv
YiA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+KG1fam9iUXVldWUudGFr
ZUZpcnN0KCkuaXNvbGF0ZWRDb3B5KCkpOworCisgICAgc3dpdGNoIChtX2N1cnJlbnRKb2ItPnR5
cGUpIHsKKyAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3RlcjoKKyAgICAgICAg
bV9zZXJ2ZXIucG9zdFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJK
b2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IsICptX2N1cnJlbnRKb2IpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5cGU6OlVucmVnaXN0ZXI6CisgICAgICAgIG1f
c2VydmVyLnBvc3RUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVySm9i
UXVldWU6OnJ1blVucmVnaXN0ZXJKb2IsICptX2N1cnJlbnRKb2IpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQg
U1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmIGpvYikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoam9i
LnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyKTsKKworICAgIGlmICghc2hv
dWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoam9iLnNjcmlwdFVSTCkpCisgICAgICAg
IHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBT
ZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIlNjcmlwdCBVUkwgaXMgbm90IHBvdGVudGlhbGx5
IHRydXN0d29ydGh5IikgfSk7CisKKyAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2Ny
aXB0IHVybCBpcyBub3Qgam9i4oCZcyByZWZlcnJlcidzIG9yaWdpbiwgdGhlbjoKKyAgICBpZiAo
IXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChqb2Iuc2NyaXB0VVJMLCBqb2IuY2xpZW50Q3Jl
YXRpb25VUkwpKQorICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVh
ZChFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJTY3JpcHQgb3Jp
Z2luIGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3RlcmluZyBjbGllbnQncyBvcmlnaW4iKSB9KTsK
KworICAgIC8vIElmIHRoZSBvcmlnaW4gb2Ygam9i4oCZcyBzY29wZSB1cmwgaXMgbm90IGpvYuKA
mXMgcmVmZXJyZXIncyBvcmlnaW4sIHRoZW46CisgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWwoam9iLnNjb3BlVVJMLCBqb2IuY2xpZW50Q3JlYXRpb25VUkwpKQorICAgICAgICBy
ZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgU2Vj
dXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJTY29wZSBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhl
IHJlZ2lzdGVyaW5nIGNsaWVudCdzIG9yaWdpbiIpIH0pOworCisgICAgLy8gSWYgcmVnaXN0cmF0
aW9uIGlzIG5vdCBudWxsIChpbiBvdXIgcGFybGFuY2UgImVtcHR5IiksIHRoZW46CisgICAgaWYg
KGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJh
dGlvbktleSkpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLT5zZXRJc1VuaW5zdGFsbGluZyhmYWxz
ZSk7CisgICAgICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+Z2V0TmV3ZXN0
V29ya2VyKCk7CisgICAgICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdt
ZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpKSAm
JiBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSA9PSByZWdpc3RyYXRpb24t
PnVwZGF0ZVZpYUNhY2hlKCkpIHsKKyAgICAgICAgICAgIHJlc29sdmVXaXRoUmVnaXN0cmF0aW9u
T25NYWluVGhyZWFkKCpyZWdpc3RyYXRpb24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBuZXdSZWdpc3RyYXRpb24gPSBzdGQ6Om1h
a2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3JlZ2lzdHJhdGlvbktleSwgam9iLnJl
Z2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5zY29wZVVSTCwgam9iLnNjcmlw
dFVSTCk7CisgICAgICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlvbihXVEZNb3ZlKG5ld1JlZ2lz
dHJhdGlvbikpOworICAgIH0KKworICAgIHJ1blVwZGF0ZUpvYihqb2IpOworfQorCit2b2lkIFNX
U2VydmVySm9iUXVldWU6OnJ1blVucmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmIGpvYikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIElmIHRo
ZSBvcmlnaW4gb2Ygam9i4oCZcyBzY29wZSB1cmwgaXMgbm90IGpvYidzIGNsaWVudCdzIG9yaWdp
biwgdGhlbjoKKyAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChqb2Iuc2NvcGVV
UkwsIGpvYi5jbGllbnRDcmVhdGlvblVSTCkpCisgICAgICAgIHJldHVybiByZWplY3RXaXRoRXhj
ZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCBBU0NJSUxp
dGVyYWwoIk9yaWdpbiBvZiBzY29wZSBVUkwgZG9lcyBub3QgbWF0Y2ggdGhlIGNsaWVudCdzIG9y
aWdpbiIpIH0pOworCisgICAgLy8gTGV0IHJlZ2lzdHJhdGlvbiBiZSB0aGUgcmVzdWx0IG9mIHJ1
bm5pbmcgIkdldCBSZWdpc3RyYXRpb24iIGFsZ29yaXRobSBwYXNzaW5nIGpvYuKAmXMgc2NvcGUg
dXJsIGFzIHRoZSBhcmd1bWVudC4KKyAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5n
ZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOworCisgICAgLy8gSWYgcmVnaXN0cmF0
aW9uIGlzIG51bGwsIHRoZW46CisgICAgaWYgKCFyZWdpc3RyYXRpb24pIHsKKyAgICAgICAgLy8g
SW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ugd2l0aCBqb2IgYW5kIGZhbHNlLgorICAgICAgICBy
ZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0T25NYWluVGhyZWFkKGZhbHNlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFNldCByZWdpc3RyYXRpb27igJlzIHVuaW5zdGFs
bGluZyBmbGFnLgorICAgIHJlZ2lzdHJhdGlvbi0+c2V0SXNVbmluc3RhbGxpbmcodHJ1ZSk7CisK
KyAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQgdHJ1ZS4KKyAg
ICByZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0T25NYWluVGhyZWFkKHRydWUpOworCisg
ICAgLy8gRklYTUU6IEludm9rZSBUcnkgQ2xlYXIgUmVnaXN0cmF0aW9uIHdpdGggcmVnaXN0cmF0
aW9uLgorfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2
aWNlV29ya2VySm9iRGF0YSYgam9iKQoreworICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2Vy
dmVyLmdldFJlZ2lzdHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSk7CisKKyAgICAvLyBJZiByZWdp
c3RyYXRpb24gaXMgbnVsbCAoaW4gb3VyIHBhcmxhbmNlICJlbXB0eSIpIG9yIHJlZ2lzdHJhdGlv
buKAmXMgdW5pbnN0YWxsaW5nIGZsYWcgaXMgc2V0LCB0aGVuOgorICAgIGlmICghcmVnaXN0cmF0
aW9uKQorICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNl
cHRpb25EYXRhIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCB1cGRhdGUgYSBudWxs
L25vbmV4aXN0ZW50IHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiIpIH0pOworICAgIGlmIChy
ZWdpc3RyYXRpb24tPmlzVW5pbnN0YWxsaW5nKCkpCisgICAgICAgIHJldHVybiByZWplY3RXaXRo
RXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiQ2Fubm90IHVwZGF0ZSBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiB0aGF0IGlz
IHVuaW5zdGFsbGluZyIpIH0pOworCisgICAgLy8gSWYgam9i4oCZcyBqb2IgdHlwZSBpcyB1cGRh
dGUsIGFuZCBuZXdlc3RXb3JrZXLigJlzIHNjcmlwdCB1cmwgZG9lcyBub3QgZXF1YWwgam9i4oCZ
cyBzY3JpcHQgdXJsIHdpdGggdGhlIGV4Y2x1ZGUgZnJhZ21lbnRzIGZsYWcgc2V0LCB0aGVuOgor
ICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IHJlZ2lzdHJhdGlvbi0+Z2V0TmV3ZXN0V29ya2VyKCk7
CisgICAgaWYgKG5ld2VzdFdvcmtlciAmJiAhZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmll
cihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpKSkKKyAgICAgICAgcmV0
dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVF
cnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBkYXRlIGEgc2VydmljZSB3b3JrZXIgd2l0aCBh
IHJlcXVlc3RlZCBzY3JpcHQgVVJMIHdob3NlIG5ld2VzdCB3b3JrZXIgaGFzIGEgZGlmZmVyZW50
IHNjcmlwdCBVUkwiKSB9KTsKKworICAgIHN0YXJ0U2NyaXB0RmV0Y2hGcm9tTWFpblRocmVhZCgp
OworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5U
aHJlYWQoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uKQoreworICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOworICAgIG1fc2VydmVyLnBvc3RUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVqZWN0Q3VycmVudEpvYiwgZXhjZXB0
aW9uKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZVdpdGhSZWdpc3RyYXRp
b25Pbk1haW5UaHJlYWQoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mIHJlZ2lzdHJhdGlvbikKK3sKKyAg
ICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBtX3NlcnZlci5wb3N0VGFza1JlcGx5KGNy
ZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVySm9iUXVldWU6OnJlc29sdmVDdXJy
ZW50UmVnaXN0cmF0aW9uSm9iLCByZWdpc3RyYXRpb24uZGF0YSgpKSk7Cit9CisKK3ZvaWQgU1dT
ZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZUN1cnJlbnRSZWdpc3RyYXRpb25Kb2JPbk1haW5UaGVhZCh1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKyAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3RyYXRp
b24obV9yZWdpc3RyYXRpb25LZXkpOworICAgIEFTU0VSVChyZWdpc3RyYXRpb24pOworICAgIHJl
Z2lzdHJhdGlvbi0+c2V0QWN0aXZlU2VydmljZVdvcmtlcklkZW50aWZpZXIoc2VydmljZVdvcmtl
cklkZW50aWZpZXIpOworICAgIHJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25NYWluVGhyZWFkKCpy
ZWdpc3RyYXRpb24pOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlc29sdmVXaXRoVW5y
ZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBtX3NlcnZlci5wb3N0VGFza1Jl
cGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVySm9iUXVldWU6OnJlc29s
dmVDdXJyZW50VW5yZWdpc3RyYXRpb25Kb2IsIHVucmVnaXN0cmF0aW9uUmVzdWx0KSk7Cit9CisK
K3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c3RhcnRTY3JpcHRGZXRjaEZyb21NYWluVGhyZWFkKCkK
K3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBtX3NlcnZlci5wb3N0VGFza1Jl
cGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVySm9iUXVldWU6OnN0YXJ0
U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6
cmVqZWN0Q3VycmVudEpvYihjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEpvYik7CisK
KyAgICBtX3NlcnZlci5yZWplY3RKb2IoKm1fY3VycmVudEpvYiwgZXhjZXB0aW9uRGF0YSk7CisK
KyAgICBmaW5pc2hDdXJyZW50Sm9iKCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVz
b2x2ZUN1cnJlbnRSZWdpc3RyYXRpb25Kb2IoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bkRhdGEmIGRhdGEpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
bV9jdXJyZW50Sm9iKTsKKyAgICBBU1NFUlQobV9jdXJyZW50Sm9iLT50eXBlID09IFNlcnZpY2VX
b3JrZXJKb2JUeXBlOjpSZWdpc3Rlcik7CisKKyAgICBtX3NlcnZlci5yZXNvbHZlUmVnaXN0cmF0
aW9uSm9iKCptX2N1cnJlbnRKb2IsIGRhdGEpOworCisgICAgZmluaXNoQ3VycmVudEpvYigpOwor
fQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlc29sdmVDdXJyZW50VW5yZWdpc3RyYXRpb25K
b2IoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOworICAgIEFTU0VSVChtX2N1cnJlbnRKb2It
PnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVucmVnaXN0ZXIpOworCisgICAgbV9zZXJ2
ZXIucmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKCptX2N1cnJlbnRKb2IsIG1fcmVnaXN0cmF0aW9u
S2V5LCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CisKKyAgICBmaW5pc2hDdXJyZW50Sm9iKCk7Cit9
CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2Io
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEpv
Yik7CisKKyAgICBtX3NlcnZlci5zdGFydFNjcmlwdEZldGNoKCptX2N1cnJlbnRKb2IpOworfQor
Cit2b2lkIFNXU2VydmVySm9iUXVldWU6OmZpbmlzaEN1cnJlbnRKb2IoKQoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEpvYik7CisgICAgQVNTRVJU
KCFtX2pvYlRpbWVyLmlzQWN0aXZlKCkpOworCisgICAgbV9jdXJyZW50Sm9iID0gbnVsbHB0cjsK
KyAgICBpZiAobV9qb2JRdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN0
YXJ0TmV4dEpvYigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi40MDk1YjNiZmZkMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCkBAIC0w
LDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKKworI2luY2x1ZGUgIlNXU2VydmVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdv
cmtlckpvYkRhdGEuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNXU2VydmVySm9iUXVldWUgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IFNXU2VydmVySm9iUXVldWUoU1dTZXJ2ZXImLCBjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisgICAgU1dTZXJ2ZXJKb2JRdWV1ZShjb25zdCBT
V1NlcnZlclJlZ2lzdHJhdGlvbiYpID0gZGVsZXRlOworICAgIH5TV1NlcnZlckpvYlF1ZXVlKCk7
CisKKyAgICB2b2lkIGVucXVldWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKKyAg
ICB2b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBT
ZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRU
b1N0YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNXU2Vy
dmVyOjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgd29ya2VySUQpOworCitwcml2YXRlOgorICAgIHZvaWQgam9iVGltZXJGaXJlZCgp
OworICAgIHZvaWQgc3RhcnROZXh0Sm9iKCk7CisgICAgdm9pZCByZWplY3RDdXJyZW50Sm9iKGNv
bnN0IEV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIHJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9u
Sm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJik7CisgICAgdm9pZCByZXNv
bHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iKGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwor
ICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2IoKTsKKyAgICB2b2lkIGZpbmlz
aEN1cnJlbnRKb2IoKTsKKworICAgIHZvaWQgcnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmKTsKKyAgICB2b2lkIHJ1blVucmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmKTsKKyAgICB2b2lkIHJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYpOworCisgICAgdm9pZCByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKGNv
bnN0IEV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIHJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25N
YWluVGhyZWFkKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CisgICAgdm9pZCByZXNvbHZlQ3VycmVu
dFJlZ2lzdHJhdGlvbkpvYk9uTWFpblRoZWFkKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKKyAgICB2b2lkIHJlc29sdmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJl
YWQoYm9vbCk7CisgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoRnJvbU1haW5UaHJlYWQoKTsKKyAg
ICBib29sIGlzRW1wdHkoKTsKKworICAgIERlcXVlPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBtX2pv
YlF1ZXVlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iRGF0YT4gbV9jdXJy
ZW50Sm9iOworCisgICAgVGltZXIgbV9qb2JUaW1lcjsKKyAgICBTV1NlcnZlciYgbV9zZXJ2ZXI7
CisgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMzQzNmI2ZmNlNTUuLmNjMjdj
ODY1NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzksOTUgKzM5LDE3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVy
UmVnaXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25LZXkmIGtleSkKLSAgICA6IG1fam9iVGltZXIoKnRoaXMsICZTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6c3RhcnROZXh0Sm9iKQotICAgICwgbV9zZXJ2ZXIoc2VydmVyKQotICAgICwgbV9yZWdp
c3RyYXRpb25LZXkoa2V5KQorU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0
aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtl
clVwZGF0ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25z
dCBVUkwmIHNjcmlwdFVSTCkKKyAgICA6IG1fcmVnaXN0cmF0aW9uS2V5KGtleSkKKyAgICAsIG1f
dXBkYXRlVmlhQ2FjaGUodXBkYXRlVmlhQ2FjaGUpCisgICAgLCBtX3Njb3BlVVJMKHNjb3BlVVJM
Lmlzb2xhdGVkQ29weSgpKQorICAgICwgbV9zY3JpcHRVUkwoc2NyaXB0VVJMLmlzb2xhdGVkQ29w
eSgpKQogeworICAgIG1fc2NvcGVVUkwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiB9CiAK
IFNXU2VydmVyUmVnaXN0cmF0aW9uOjp+U1dTZXJ2ZXJSZWdpc3RyYXRpb24oKQogewotICAgIEFT
U0VSVChtX2pvYlF1ZXVlLmlzRW1wdHkoKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRp
b246OmVucXVldWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCi17Ci0g
ICAgLy8gRklYTUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMgZXF1aXZhbGVu
dCB0byB0aGUgbGFzdCBqb2Igb24gdGhlIHF1ZXVlLgotICAgIC8vIElmIGl0IGlzLCBzdGFjayBp
dCBhbG9uZyB3aXRoIHRoYXQgam9iLgotCi0gICAgbV9qb2JRdWV1ZS5hcHBlbmQoam9iRGF0YSk7
Ci0KLSAgICBpZiAobV9jdXJyZW50Sm9iKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1f
am9iVGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9qb2JUaW1lci5zdGFydE9uZVNob3QoMF9z
KTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChT
V1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZldGNo
UmVzdWx0JiByZXN1bHQpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYiAmJiBtX2N1cnJlbnRK
b2ItPmlkZW50aWZpZXIoKSA9PSByZXN1bHQuam9iSWRlbnRpZmllcik7Ci0KLSAgICBpZiAoIXJl
c3VsdC5zY3JpcHRFcnJvci5pc051bGwoKSkgewotICAgICAgICByZWplY3RDdXJyZW50Sm9iKEV4
Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgbV9j
dXJyZW50Sm9iLT5zY3JpcHRVUkwuc3RyaW5nKCksICIgZmV0Y2ggcmVzdWx0ZWQgaW4gZXJyb3I6
ICIsIHJlc3VsdC5zY3JpcHRFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSB9KTsKLSAgICAg
ICAgCi0gICAgICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBudWxsLCBpbnZva2UgQ2xlYXIgUmVn
aXN0cmF0aW9uIGFsZ29yaXRobSBwYXNzaW5nIHRoaXMgcmVnaXN0cmF0aW9uIGFzIGl0cyBhcmd1
bWVudC4KLSAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IGhhdmUgImNsZWFyIHJlZ2lzdHJhdGlv
biIgeWV0LgotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2xhc3RVcGRhdGVUaW1l
ID0gY3VycmVudFRpbWUoKTsKLSAgICAKLSAgICAvLyBGSVhNRTogSWYgdGhlIHNjcmlwdCBkYXRh
IG1hdGNoZXMgYnl0ZS1mb3ItYnl0ZSB3aXRoIHRoZSBleGlzdGluZyBuZXdlc3RXb3JrZXIsCi0g
ICAgLy8gdGhlbiByZXNvbHZlIGFuZCBmaW5pc2ggdGhlIGpvYiB3aXRob3V0IGRvaW5nIGFueXRo
aW5nIGZ1cnRoZXIuCi0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdvcmtlciB0
eXBlIChjbGFzc2ljIHZzIG1vZHVsZSkKLSAgICBtX3NlcnZlci5jcmVhdGVXb3JrZXIoY29ubmVj
dGlvbiwgbV9yZWdpc3RyYXRpb25LZXksIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLCByZXN1bHQu
c2NyaXB0LCBXb3JrZXJUeXBlOjpDbGFzc2ljKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBj
b25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgVU5V
U0VEX1BBUkFNKHdvcmtlcklEKTsKLQotICAgIHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0
YSB7IFVua25vd25FcnJvciwgbWVzc2FnZSB9KTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJh
dGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCB1aW50NjRf
dCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQotewotICAgIFVOVVNFRF9QQVJB
TSh3b3JrZXJJRCk7Ci0gICAgcmVzb2x2ZUN1cnJlbnRSZWdpc3RyYXRpb25Kb2IoU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRhdGEgeyBtX3JlZ2lzdHJhdGlvbktleSwgaWRlbnRpZmllciwgbV9z
Y29wZVVSTCwgbV9zY3JpcHRVUkwsIG1fdXBkYXRlVmlhQ2FjaGUudmFsdWVfb3IoU2VydmljZVdv
cmtlclVwZGF0ZVZpYUNhY2hlOjpJbXBvcnRzKSB9KTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lz
dHJhdGlvbjo6c3RhcnROZXh0Sm9iKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIEFTU0VSVCghbV9jdXJyZW50Sm9iKTsKLSAgICBBU1NFUlQoIW1fam9iUXVldWUuaXNFbXB0
eSgpKTsKLQotICAgIG1fY3VycmVudEpvYiA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtl
ckpvYkRhdGE+KG1fam9iUXVldWUudGFrZUZpcnN0KCkuaXNvbGF0ZWRDb3B5KCkpOwotCi0gICAg
c3dpdGNoIChtX2N1cnJlbnRKb2ItPnR5cGUpIHsKLSAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpSZWdpc3RlcjoKLSAgICAgICAgbV9zZXJ2ZXIucG9zdFRhc2soY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJ1blJlZ2lzdGVySm9iLCAqbV9j
dXJyZW50Sm9iKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JU
eXBlOjpVbnJlZ2lzdGVyOgotICAgICAgICBtX3NlcnZlci5wb3N0VGFzayhjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cnVuVW5yZWdpc3RlckpvYiwg
Km1fY3VycmVudEpvYikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotYm9vbCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6aXNF
bXB0eSgpCi17Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0KLSAgICAvLyBIYXZpbmcg
b3Igbm90LWhhdmluZyBhbiBtX3VwZGF0ZVZpYUNhY2hlIGZsYWcgaXMgY3VycmVudGx5Ci0gICAg
Ly8gdGhlIHNpZ25hbCBhcyB0byB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzIGFuIGVtcHR5IChpLmUu
ICJuZXciKSByZWdpc3RyYXRpb24uCi0gICAgLy8gVGhlcmUgd2lsbCBiZSBhIG1vcmUgZXhwbGlj
aXQgc2lnbmFsIGluIHRoZSBuZWFyIGZ1dHVyZS4KLSAgICByZXR1cm4gIW1fdXBkYXRlVmlhQ2Fj
aGU7CiB9CiAKIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6Z2V0TmV3ZXN0
V29ya2VyKCkKQEAgLTE0MSwxNjMgKzYzLDExIEBAIFNXU2VydmVyV29ya2VyKiBTV1NlcnZlclJl
Z2lzdHJhdGlvbjo6Z2V0TmV3ZXN0V29ya2VyKCkKICAgICByZXR1cm4gbV9hY3RpdmVXb3JrZXIu
Z2V0KCk7CiB9CiAKLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJ1blJlZ2lzdGVySm9iKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCi17Ci0gICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7Ci0gICAgQVNTRVJUKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdp
c3Rlcik7Ci0KLSAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpv
Yi5zY3JpcHRVUkwpKQotICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRo
cmVhZChFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJTY3JpcHQg
VVJMIGlzIG5vdCBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSIpIH0pOwotCi0gICAgLy8gSWYgdGhl
IG9yaWdpbiBvZiBqb2LigJlzIHNjcmlwdCB1cmwgaXMgbm90IGpvYuKAmXMgcmVmZXJyZXIncyBv
cmlnaW4sIHRoZW46Ci0gICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoam9iLnNj
cmlwdFVSTCwgam9iLmNsaWVudENyZWF0aW9uVVJMKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdFdp
dGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiU2NyaXB0IG9yaWdpbiBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJpbmcg
Y2xpZW50J3Mgb3JpZ2luIikgfSk7Ci0KLSAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMg
c2NvcGUgdXJsIGlzIG5vdCBqb2LigJlzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgotICAgIGlm
ICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGpvYi5zY29wZVVSTCwgam9iLmNsaWVudENy
ZWF0aW9uVVJMKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJl
YWQoRXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiU2NvcGUgb3Jp
Z2luIGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3RlcmluZyBjbGllbnQncyBvcmlnaW4iKSB9KTsK
LQotICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBub3QgbnVsbCAoaW4gb3VyIHBhcmxhbmNlICJl
bXB0eSIpLCB0aGVuOgotICAgIGlmICghaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVChtX3Vw
ZGF0ZVZpYUNhY2hlKTsKLQotICAgICAgICBtX3VuaW5zdGFsbGluZyA9IGZhbHNlOwotICAgICAg
ICBhdXRvKiBuZXdlc3RXb3JrZXIgPSBnZXROZXdlc3RXb3JrZXIoKTsKLSAgICAgICAgaWYgKG5l
d2VzdFdvcmtlciAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGpvYi5zY3JpcHRV
UkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCkpICYmIGpvYi5yZWdpc3RyYXRpb25PcHRpb25z
LnVwZGF0ZVZpYUNhY2hlID09ICptX3VwZGF0ZVZpYUNhY2hlKSB7Ci0gICAgICAgICAgICByZXNv
bHZlV2l0aFJlZ2lzdHJhdGlvbk9uTWFpblRocmVhZCgpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9zY29wZVVSTCA9IGpvYi5zY29wZVVS
TC5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgbV9zY29wZVVSTC5yZW1vdmVGcmFnbWVudElkZW50
aWZpZXIoKTsKLSAgICAgICAgbV9zY3JpcHRVUkwgPSBqb2Iuc2NyaXB0VVJMLmlzb2xhdGVkQ29w
eSgpOwotICAgICAgICBtX3VwZGF0ZVZpYUNhY2hlID0gam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMu
dXBkYXRlVmlhQ2FjaGU7Ci0gICAgfQotCi0gICAgcnVuVXBkYXRlSm9iKGpvYik7Ci19Ci0KLXZv
aWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJ1blVucmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYikKLXsKLSAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2Nv
cGUgdXJsIGlzIG5vdCBqb2IncyBjbGllbnQncyBvcmlnaW4sIHRoZW46Ci0gICAgaWYgKCFwcm90
b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoam9iLnNjb3BlVVJMLCBqb2IuY2xpZW50Q3JlYXRpb25V
UkwpKQotICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNl
cHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJPcmlnaW4gb2Ygc2NvcGUg
VVJMIGRvZXMgbm90IG1hdGNoIHRoZSBjbGllbnQncyBvcmlnaW4iKSB9KTsKLQotICAgIC8vIExl
dCByZWdpc3RyYXRpb24gYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nICJHZXQgUmVnaXN0cmF0aW9u
IiBhbGdvcml0aG0gcGFzc2luZyBqb2LigJlzIHNjb3BlIHVybCBhcyB0aGUgYXJndW1lbnQuCi0g
ICAgLy8gSWYgcmVnaXN0cmF0aW9uIGlzIG51bGwsIHRoZW46Ci0gICAgaWYgKGlzRW1wdHkoKSB8
fCBtX3VuaW5zdGFsbGluZykgewotICAgICAgICAvLyBJbnZva2UgUmVzb2x2ZSBKb2IgUHJvbWlz
ZSB3aXRoIGpvYiBhbmQgZmFsc2UuCi0gICAgICAgIHJlc29sdmVXaXRoVW5yZWdpc3RyYXRpb25S
ZXN1bHRPbk1haW5UaHJlYWQoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gU2V0IHJlZ2lzdHJhdGlvbuKAmXMgdW5pbnN0YWxsaW5nIGZsYWcuCi0gICAgbV91bmluc3Rh
bGxpbmcgPSB0cnVlOwotCi0gICAgLy8gSW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ugd2l0aCBq
b2IgYW5kIHRydWUuCi0gICAgcmVzb2x2ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRo
cmVhZCh0cnVlKTsKLQotICAgIC8vIEZJWE1FOiBJbnZva2UgVHJ5IENsZWFyIFJlZ2lzdHJhdGlv
biB3aXRoIHJlZ2lzdHJhdGlvbi4KLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cnVu
VXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCi17Ci0gICAgLy8gSWYg
cmVnaXN0cmF0aW9uIGlzIG51bGwgKGluIG91ciBwYXJsYW5jZSAiZW1wdHkiKSBvciByZWdpc3Ry
YXRpb27igJlzIHVuaW5zdGFsbGluZyBmbGFnIGlzIHNldCwgdGhlbjoKLSAgICBpZiAoaXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNl
cHRpb25EYXRhIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCB1cGRhdGUgYSBudWxs
L25vbmV4aXN0ZW50IHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiIpIH0pOwotICAgIGlmICht
X3VuaW5zdGFsbGluZykKLSAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5U
aHJlYWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBk
YXRlIGEgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9uIHRoYXQgaXMgdW5pbnN0YWxsaW5nIikg
fSk7Ci0KLSAgICAvLyBJZiBqb2LigJlzIGpvYiB0eXBlIGlzIHVwZGF0ZSwgYW5kIG5ld2VzdFdv
cmtlcuKAmXMgc2NyaXB0IHVybCBkb2VzIG5vdCBlcXVhbCBqb2LigJlzIHNjcmlwdCB1cmwgd2l0
aCB0aGUgZXhjbHVkZSBmcmFnbWVudHMgZmxhZyBzZXQsIHRoZW46Ci0gICAgYXV0byogbmV3ZXN0
V29ya2VyID0gZ2V0TmV3ZXN0V29ya2VyKCk7Ci0gICAgaWYgKG5ld2VzdFdvcmtlciAmJiAhZXF1
YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXIt
PnNjcmlwdFVSTCgpKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5U
aHJlYWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBk
YXRlIGEgc2VydmljZSB3b3JrZXIgd2l0aCBhIHJlcXVlc3RlZCBzY3JpcHQgVVJMIHdob3NlIG5l
d2VzdCB3b3JrZXIgaGFzIGEgZGlmZmVyZW50IHNjcmlwdCBVUkwiKSB9KTsKLQotICAgIHN0YXJ0
U2NyaXB0RmV0Y2hGcm9tTWFpblRocmVhZCgpOwotfQotCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0
aW9uOjpyZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKGNvbnN0IEV4Y2VwdGlvbkRhdGEm
IGV4Y2VwdGlvbikKLXsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBtX3NlcnZl
ci5wb3N0VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVyUmVn
aXN0cmF0aW9uOjpyZWplY3RDdXJyZW50Sm9iLCBleGNlcHRpb24pKTsKLX0KLQotdm9pZCBTV1Nl
cnZlclJlZ2lzdHJhdGlvbjo6cmVzb2x2ZVdpdGhSZWdpc3RyYXRpb25Pbk1haW5UaHJlYWQoKQot
ewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIG1fc2VydmVyLnBvc3RUYXNrUmVw
bHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJl
c29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iLCBkYXRhKCkpKTsKLX0KLQotdm9pZCBTV1NlcnZl
clJlZ2lzdHJhdGlvbjo6cmVzb2x2ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRocmVh
ZChib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQotewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwotICAgIG1fc2VydmVyLnBvc3RUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0
aGlzLCAmU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJlc29sdmVDdXJyZW50VW5yZWdpc3RyYXRpb25K
b2IsIHVucmVnaXN0cmF0aW9uUmVzdWx0KSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnN0YXJ0U2NyaXB0RmV0Y2hGcm9tTWFpblRocmVhZCgpCi17Ci0gICAgQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7Ci0gICAgbV9zZXJ2ZXIucG9zdFRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVh
ZFRhc2soKnRoaXMsICZTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvckN1
cnJlbnRKb2IpKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cmVqZWN0Q3VycmVu
dEpvYihjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb25EYXRhKQotewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYik7Ci0KLSAgICBtX3NlcnZl
ci5yZWplY3RKb2IoKm1fY3VycmVudEpvYiwgZXhjZXB0aW9uRGF0YSk7Ci0KLSAgICBmaW5pc2hD
dXJyZW50Sm9iKCk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJlc29sdmVDdXJy
ZW50UmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJiBk
YXRhKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fY3VycmVu
dEpvYik7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYi0+dHlwZSA9PSBTZXJ2aWNlV29ya2VySm9i
VHlwZTo6UmVnaXN0ZXIpOwotCi0gICAgbV9zZXJ2ZXIucmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYigq
bV9jdXJyZW50Sm9iLCBkYXRhKTsKLQotICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKLX0KLQotdm9p
ZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cmVzb2x2ZUN1cnJlbnRVbnJlZ2lzdHJhdGlvbkpvYihi
b29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYik7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYi0+dHlw
ZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VW5yZWdpc3Rlcik7Ci0KLSAgICBtX3NlcnZlci5y
ZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2IoKm1fY3VycmVudEpvYiwgbV9yZWdpc3RyYXRpb25LZXks
IHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLQotICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKLX0KLQot
dm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2Io
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fY3VycmVudEpv
Yik7Ci0KLSAgICBtX3NlcnZlci5zdGFydFNjcmlwdEZldGNoKCptX2N1cnJlbnRKb2IpOwotfQot
Ci12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpmaW5pc2hDdXJyZW50Sm9iKCkKLXsKLSAgICBB
U1NFUlQobV9jdXJyZW50Sm9iKTsKLSAgICBBU1NFUlQoIW1fam9iVGltZXIuaXNBY3RpdmUoKSk7
Ci0KLSAgICBtX2N1cnJlbnRKb2IgPSBudWxscHRyOwotICAgIGlmIChtX2pvYlF1ZXVlLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhcnROZXh0Sm9iKCk7Ci19Ci0KIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpkYXRhKCkgY29u
c3QKIHsKLSAgICByZXR1cm4geyBtX3JlZ2lzdHJhdGlvbktleSwgaWRlbnRpZmllcigpLCBtX3Nj
b3BlVVJMLCBtX3NjcmlwdFVSTCwgbV91cGRhdGVWaWFDYWNoZS52YWx1ZV9vcihTZXJ2aWNlV29y
a2VyVXBkYXRlVmlhQ2FjaGU6OkltcG9ydHMpIH07CisgICAgcmV0dXJuIHsgbV9yZWdpc3RyYXRp
b25LZXksIGlkZW50aWZpZXIoKSwgbV9hY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgbV9z
Y29wZVVSTCwgbV9zY3JpcHRVUkwsIG1fdXBkYXRlVmlhQ2FjaGUgfTsKIH0KIAotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVn
aXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmgKaW5kZXggMzVkN2Y1ZjE2MzAuLjhlMDcwYjVkYmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5oCkBAIC0yOCw2OCArMjgsNDcgQEAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAKICNpbmNsdWRlICJTV1NlcnZlci5oIgotI2luY2x1ZGUgIlNlcnZpY2VXb3Jr
ZXJKb2JEYXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIK
LSNpbmNsdWRlICJUaW1lci5oIgotI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9JZGVudGlmaWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU1dTZXJ2ZXI7
CiBjbGFzcyBTV1NlcnZlcldvcmtlcjsKIHN0cnVjdCBFeGNlcHRpb25EYXRhOwogc3RydWN0IFNl
cnZpY2VXb3JrZXJGZXRjaFJlc3VsdDsKIAogY2xhc3MgU1dTZXJ2ZXJSZWdpc3RyYXRpb24gOiBw
dWJsaWMgVGhyZWFkU2FmZUlkZW50aWZpZWQ8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+IHsKIHB1Ymxp
YzoKLSAgICBleHBsaWNpdCBTV1NlcnZlclJlZ2lzdHJhdGlvbihTV1NlcnZlciYsIGNvbnN0IFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKLSAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbihj
b25zdCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYpID0gZGVsZXRlOworICAgIFNXU2VydmVyUmVnaXN0
cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmLCBTZXJ2aWNlV29ya2Vy
VXBkYXRlVmlhQ2FjaGUsIGNvbnN0IFVSTCYgc2NvcGVVUkwsIGNvbnN0IFVSTCYgc2NyaXB0VVJM
KTsKICAgICB+U1dTZXJ2ZXJSZWdpc3RyYXRpb24oKTsKIAotICAgIHZvaWQgZW5xdWV1ZUpvYihj
b25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwotICAgIHZvaWQgc2NyaXB0RmV0Y2hGaW5pc2hl
ZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYp
OwotICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rp
b24mLCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAg
IHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCB1aW50NjRf
dCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKLSAgICAKLSAgICBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YSBkYXRhKCkgY29uc3Q7CisgICAgY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYga2V5KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYXRpb25L
ZXk7IH0KIAotcHJpdmF0ZToKLSAgICB2b2lkIGpvYlRpbWVyRmlyZWQoKTsKLSAgICB2b2lkIHN0
YXJ0TmV4dEpvYigpOwotICAgIHZvaWQgcmVqZWN0Q3VycmVudEpvYihjb25zdCBFeGNlcHRpb25E
YXRhJik7Ci0gICAgdm9pZCByZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYpOwotICAgIHZvaWQgcmVzb2x2ZUN1cnJlbnRVbnJl
Z2lzdHJhdGlvbkpvYihib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKLSAgICB2b2lkIHN0YXJ0
U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKCk7Ci0gICAgdm9pZCBmaW5pc2hDdXJyZW50Sm9iKCk7
Ci0KLSAgICB2b2lkIHJ1blJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7
Ci0gICAgdm9pZCBydW5VbnJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7
Ci0gICAgdm9pZCBydW5VcGRhdGVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKLQot
ICAgIHZvaWQgcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChjb25zdCBFeGNlcHRpb25E
YXRhJik7Ci0gICAgdm9pZCByZXNvbHZlV2l0aFJlZ2lzdHJhdGlvbk9uTWFpblRocmVhZCgpOwot
ICAgIHZvaWQgcmVzb2x2ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRocmVhZChib29s
KTsKLSAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGcm9tTWFpblRocmVhZCgpOwotICAgIGJvb2wg
aXNFbXB0eSgpOwogICAgIFNXU2VydmVyV29ya2VyKiBnZXROZXdlc3RXb3JrZXIoKTsKKyAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBkYXRhKCkgY29uc3Q7CisKKyAgICBib29sIGlz
VW5pbnN0YWxsaW5nKCkgY29uc3QgeyByZXR1cm4gbV91bmluc3RhbGxpbmc7IH0KKyAgICB2b2lk
IHNldElzVW5pbnN0YWxsaW5nKGJvb2wgdmFsdWUpIHsgbV91bmluc3RhbGxpbmcgPSB2YWx1ZTsg
fQogCi0gICAgRGVxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+IG1fam9iUXVldWU7Ci0gICAgc3Rk
Ojp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBtX2N1cnJlbnRKb2I7CisgICAgdm9p
ZCBzZXRMYXN0VXBkYXRlVGltZShkb3VibGUgdGltZSkgeyBtX2xhc3RVcGRhdGVUaW1lID0gdGlt
ZTsgfQorICAgIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRhdGVWaWFDYWNoZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdXBkYXRlVmlhQ2FjaGU7IH0KKworICAgIHZvaWQgc2V0QWN0aXZlU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIodWludDY0X3QgaWRlbnRpZmllcikgeyBtX2FjdGl2ZVNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQorCitwcml2YXRlOgorICAgIFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CisgICAgU2VydmljZVdv
cmtlclVwZGF0ZVZpYUNhY2hlIG1fdXBkYXRlVmlhQ2FjaGU7CisgICAgVVJMIG1fc2NvcGVVUkw7
CisgICAgVVJMIG1fc2NyaXB0VVJMOwogCiAgICAgYm9vbCBtX3VuaW5zdGFsbGluZyB7IGZhbHNl
IH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyV29ya2VyPiBtX2luc3RhbGxpbmdXb3Jr
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyV29ya2VyPiBtX3dhaXRpbmdXb3JrZXI7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyV29ya2VyPiBtX2FjdGl2ZVdvcmtlcjsKLSAg
ICBVUkwgbV9zY29wZVVSTDsKLSAgICBVUkwgbV9zY3JpcHRVUkw7Ci0gICAgc3RkOjpvcHRpb25h
bDxTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGU+IG1fdXBkYXRlVmlhQ2FjaGU7Ci0gICAgCi0g
ICAgZG91YmxlIG1fbGFzdFVwZGF0ZVRpbWUgeyAwIH07CiAKLSAgICBUaW1lciBtX2pvYlRpbWVy
OwotICAgIFNXU2VydmVyJiBtX3NlcnZlcjsKLSAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
S2V5IG1fcmVnaXN0cmF0aW9uS2V5OworICAgIHVpbnQ2NF90IG1fYWN0aXZlU2VydmljZVdvcmtl
cklkZW50aWZpZXIgeyAwIH07CisKKyAgICBkb3VibGUgbV9sYXN0VXBkYXRlVGltZSB7IDAgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325624</attachid>
            <date>2017-11-01 13:38:50 -0700</date>
            <delta_ts>2017-11-01 14:32:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179126-20171101133849.patch</filename>
            <type>text/plain</type>
            <size>49391</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0Mjc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDJlYWRkY2VlYjU1Y2I1
M2ZlYjM3M2FkM2MzYjZjMjgzMTk0YWQzYy4uZDkwYmFmMmExMjhlZWFmYmQyZmM3MjM0N2IzMTdi
YzMwNTg0MTdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTExLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgSm9iUXVldWUgbG9n
aWMgb3V0IG9mIFNXU2VydmVyUmVnaXN0cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkxMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBKb2JRdWV1ZSBsb2dpYyBvdXQgb2YgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24gYW5kIGludG8gYSBTV1NlcnZlckpvYlF1ZXVlIGNsYXNzIHRvIG1hdGNo
IHRoZSBTZXJ2aWNlIFdvcmtlcnMKKyAgICAgICAgc3BlY2lmaWNhdGlvbiBtb3JlIGNsb3NlbHku
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOjpkZWNv
ZGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6On5TV1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjph
ZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlbW92ZVJlZ2lz
dHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0
Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNjaGVkdWxlSm9i
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVySm9iUXVldWU6OlNXU2VydmVySm9iUXVldWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6flNXU2VydmVySm9iUXVldWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6ZW5xdWV1ZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnN0YXJ0TmV4dEpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5VbnJlZ2lzdGVySm9iKToKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVySm9iUXVldWU6OnJ1blVwZGF0ZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlckpvYlF1ZXVlOjpyZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25N
YWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJlc29sdmVD
dXJyZW50UmVnaXN0cmF0aW9uSm9iT25NYWluVGhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpzdGFydFNjcmlwdEZldGNo
RnJvbU1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cmVq
ZWN0Q3VycmVudEpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpyZXNv
bHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjpyZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iKToKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVySm9iUXVldWU6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OmZpbmlzaEN1cnJlbnRKb2IpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oOiBBZGRlZC4K
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lz
dHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6flNXU2Vy
dmVyUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9u
OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6
a2V5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjppc1Vu
aW5zdGFsbGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlv
bjo6c2V0SXNVbmluc3RhbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OnNldExhc3RVcGRhdGVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVn
aXN0cmF0aW9uOjp1cGRhdGVWaWFDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlclJlZ2lzdHJhdGlvbjo6c2V0QWN0aXZlU2VydmljZVdvcmtlcklkZW50aWZpZXIpOgorCiAy
MDE3LTExLTAxICBFbWlsaW8gQ29ib3Mgw4FsdmFyZXogIDxlbWlsaW9AY3Jpc2FsLmlvPgogCiAg
ICAgICAgIEZpeCBDb250aW51YXRpb25DaGFpbk5vZGU6Omluc2VydEFmdGVyIGFzc2VydGlvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggYzc2Zjc4YjM4MjNlOGEzNGNiZTAzNGQ4OTgwMGY3N2RkYTI0MWEx
MS4uYzJhNDAzM2NjMDdmYTU2YmYwMzYxYTQyMjRmN2Y2YWY5YTMzYmUzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKQEAgLTIxNzQsNiArMjE3NCw3IEBAIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuY3BwCiAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dDbGllbnRDb25uZWN0aW9u
LmNwcAogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKK3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uY3BwCiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29y
a2VyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMDc4YTNhYjUwYzRhZjY4MWVjZGFjNDk1MzU4MzljZGI3NDY4NzZjZS4u
MDY3YWFlZWRhZjJlYmQ3MWUxMmU3ZDVkNDBmYWZiYzU2MmQ0YjViYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE2OCw2ICsy
MTY4LDcgQEAKIAkJODMwNzg0QjIxQzUyRUUyQzAwMTA0RDFEIC8qIFhNTERvY3VtZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzA3ODRCMTFDNTJF
RTE5MDAxMDREMUQgLyogWE1MRG9jdW1lbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4MzBBMzZCRDFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3Vz
ZUV2ZW50SW5pdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODMwQTM2QkIxREFDNUZBNzAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCAqLzsgfTsK
IAkJODMxMDJCMjcxRjlFQUREOTAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMDJCMjMx
RjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovOyB9OworCQk4
MzExQzAwMzFGQUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODMxMUMwMDIxRkFBMkU4OTAwRTND
OEU1IC8qIFNXU2VydmVySm9iUXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4MzEyMEM3MTFDNTZGM0ZCMDAxQ0IxMTIgLyogSFRNTERhdGFF
bGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MzRCODZBNzFDNTZFODNBMDBGM0YwRTMgLyogSFRNTERhdGFFbGVtZW50LmggKi87IH07CiAJCTgz
MjE1MDdFMUYyN0VBMUIwMDk1QjEzNiAvKiBOYXZpZ2F0b3JCZWFjb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMjE1MDdCMUYyN0VBMTUwMDk1QjEz
NiAvKiBOYXZpZ2F0b3JCZWFjb24uaCAqLzsgfTsKIAkJODMyQjg0MzQxOUQ4RTU1MTAwQjI2MDU1
IC8qIFNWR0FuaW1hdGVFbGVtZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODMyQjg0MzMxOUQ4RTU1MTAwQjI2MDU1IC8qIFNWR0FuaW1hdGVF
bGVtZW50QmFzZS5oICovOyB9OwpAQCAtOTM3Myw2ICs5Mzc0LDggQEAKIAkJODMwQTM2QkIxREFD
NUZBNzAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNb3VzZUV2ZW50SW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk4MzEwMkIyMzFGOUVBREMyMDBFNDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzEwMkIyNTFGOUVBREMyMDBF
NDA0QjkgLyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZl
ckpvYlF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNXU2Vy
dmVySm9iUXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzExQzAwMjFG
QUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTgzMUM0NkMzMUY5RUU1RTAwMEVCRDQ1MCAvKiBKU0V4dGVuZGFibGVNZXNzYWdlRXZl
bnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFeHRl
bmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODMxRDFGMjkxQzU2RUNBMDAwRjVGNkMwIC8qIEhUTUxEYXRhRWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MRGF0YUVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzIxNTA3QTFGMjdFQTE1MDA5NUIxMzYgLyogTmF2
aWdhdG9yQmVhY29uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5hdmlnYXRvckJlYWNvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzEzMiw2ICsxNzEzNSw4IEBACiAJCQkJ
NTE3QTUyRkYxRjQ3OENDRTAwRENEQzBBIC8qIFNXQ2xpZW50Q29ubmVjdGlvbi5oICovLAogCQkJ
CTUxN0E1MkVGMUY0NzUzNTkwMERDREMwQSAvKiBTV1NlcnZlci5jcHAgKi8sCiAJCQkJNTE3QTUy
RUUxRjQ3NTM1OTAwRENEQzBBIC8qIFNXU2VydmVyLmggKi8sCisJCQkJODMxMUMwMDAxRkFBMkU4
OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVldWUuY3BwICovLAorCQkJCTgzMTFDMDAyMUZBQTJF
ODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi8sCiAJCQkJNTFGNjQ1OTUxRjRBNjg2
MTAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0cmF0aW9uLmNwcCAqLywKIAkJCQk1MUY2NDU5NDFG
NEE2ODRGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCAqLywKIAkJCQk1MTdBNTM0
MzFGNTBDMTYxMDBEQ0RDMEEgLyogU1dTZXJ2ZXJXb3JrZXIuY3BwICovLApAQCAtMjkyODgsNiAr
MjkyOTMsNyBAQAogCQkJCTUxN0E1MzFEMUY0QjUzQjEwMERDREMwQSAvKiBTV0NsaWVudENvbm5l
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NjU4REM5MUZBMjRCODcwMEY3REQ1NCAvKiBT
V0NvbnRleHRNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTJGMDFGNDc1MzVCMDBE
Q0RDMEEgLyogU1dTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTgzMTFDMDAzMUZBQTJFOTUw
MEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUY2NDU5
NzFGNEE2ODZGMDBCNTRERUQgLyogU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxN0E1MzQ2MUY1MEMxN0YwMERDREMwQSAvKiBTV1NlcnZlcldvcmtlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTE4MDgxMTcxNkZDRjlDQjAwQjgwRDA3IC8qIFN5bmNocm9ub3VzTG9h
ZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBjYzc3ZTg4
MmI2MmU4MzMyNGVjYjRhZmNkMmVhY2RjNjM3ZGIwNDliLi40NzYyOTE4MzFhOWI4MDM5MGJlODNh
M2FjZDAzYTQ5MzUxMjQxYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCkBAIC0yNDQsOCArMjQ0LDgg
QEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGFpbmVyOjpqb2JSZXNvbHZlZFdpdGhSZWdpc3RyYXRp
b24oU2VydmljZVdvcmtlckpvYiYgam9iLAogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBwcm9w
ZXIgc2VsZWN0aW9uIG9mIHNlcnZpY2Ugd29ya2Vycy4KICAgICBhdXRvKiBhY3RpdmVTZXJ2aWNl
V29ya2VyID0gY29udGV4dC0+YWN0aXZlU2VydmljZVdvcmtlcigpOwotICAgIGlmICghYWN0aXZl
U2VydmljZVdvcmtlciB8fCBhY3RpdmVTZXJ2aWNlV29ya2VyLT5pZGVudGlmaWVyKCkgIT0gZGF0
YS5pZGVudGlmaWVyKSB7Ci0gICAgICAgIGNvbnRleHQtPnNldEFjdGl2ZVNlcnZpY2VXb3JrZXIo
U2VydmljZVdvcmtlcjo6Y3JlYXRlKCpjb250ZXh0LCBkYXRhLmlkZW50aWZpZXIsIGRhdGEuc2Ny
aXB0VVJMKSk7CisgICAgaWYgKCFhY3RpdmVTZXJ2aWNlV29ya2VyIHx8IGFjdGl2ZVNlcnZpY2VX
b3JrZXItPmlkZW50aWZpZXIoKSAhPSBkYXRhLmFjdGl2ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KSB7CisgICAgICAgIGNvbnRleHQtPnNldEFjdGl2ZVNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtl
cjo6Y3JlYXRlKCpjb250ZXh0LCBkYXRhLmFjdGl2ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBk
YXRhLnNjcmlwdFVSTCkpOwogICAgICAgICBhY3RpdmVTZXJ2aWNlV29ya2VyID0gY29udGV4dC0+
YWN0aXZlU2VydmljZVdvcmtlcigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YS5jcHAKaW5kZXggNmM2N2FhNjU3YjkzM2JkNTgwOGNhOGZmNjkzYTNlZGMzNTJmYTlhNi4uNjg3
OTRkNDJkNWRlODNhOGVkN2YxZTQ5ZTZhZTFmYmU5NWZlODIwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEuY3BwCkBAIC0zNSw2ICszNSw3IEBAIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25EYXRhIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOjppc29sYXRlZENvcHkoKSBjb25z
CiAgICAgcmV0dXJuIHsKICAgICAgICAga2V5Lmlzb2xhdGVkQ29weSgpLAogICAgICAgICBpZGVu
dGlmaWVyLAorICAgICAgICBhY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllciwKICAgICAgICAg
c2NvcGVVUkwuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIHNjcmlwdFVSTC5pc29sYXRlZENvcHko
KSwKICAgICAgICAgdXBkYXRlVmlhQ2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgKaW5k
ZXggNzRjOTVmMTE1NWQzYWY2MTEyYTU2NzQyMTU1OGNjZDgwYjk4MDVkZS4uZGM1NWY2NmM4NjNj
ZjEyYmM5ZjhiMDA5OTIzZmZiOTUwMmM4NzAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
LmgKQEAgLTM2LDYgKzM2LDcgQEAgZW51bSBjbGFzcyBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2Fj
aGU7CiBzdHJ1Y3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEgewogICAgIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkga2V5OwogICAgIHVpbnQ2NF90IGlkZW50aWZpZXI7CisgICAg
dWludDY0X3QgYWN0aXZlU2VydmljZVdvcmtlcklkZW50aWZpZXI7IC8vIEZJWE1FOiBUaGlzIHNo
b3VsZCBub3QgYmUgcGFydCBvZiByZWdpc3RyYXRpb25EYXRhLgogICAgIFVSTCBzY29wZVVSTDsK
ICAgICBVUkwgc2NyaXB0VVJMOwogICAgIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSB1cGRh
dGVWaWFDYWNoZTsKQEAgLTUwLDcgKzUxLDcgQEAgc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhIHsKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBl
bmNvZGVyIDw8IGtleSA8PCBpZGVudGlmaWVyIDw8IHNjb3BlVVJMIDw8IHNjcmlwdFVSTCA8PCB1
cGRhdGVWaWFDYWNoZTsKKyAgICBlbmNvZGVyIDw8IGtleSA8PCBpZGVudGlmaWVyIDw8IGFjdGl2
ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIDw8IHNjb3BlVVJMIDw8IHNjcmlwdFVSTCA8PCB1cGRh
dGVWaWFDYWNoZTsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTY2LDYgKzY3LDEx
IEBAIHN0ZDo6b3B0aW9uYWw8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhOjpkZWNvCiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCisgICAgc3RkOjpvcHRpb25hbDx1aW50NjRfdD4gYWN0
aXZlU2VydmljZVdvcmtlcklkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBhY3RpdmVTZXJ2aWNl
V29ya2VySWRlbnRpZmllcjsKKyAgICBpZiAoIWFjdGl2ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCiAgICAgc3RkOjpvcHRpb25hbDxVUkw+
IHNjb3BlVVJMOwogICAgIGRlY29kZXIgPj4gc2NvcGVVUkw7CiAgICAgaWYgKCFzY29wZVVSTCkK
QEAgLTgxLDcgKzg3LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YT4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE6OmRlY28KICAgICBpZiAoIXVwZGF0
ZVZpYUNhY2hlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHsg
eyBXVEZNb3ZlKCprZXkpLCBXVEZNb3ZlKCppZGVudGlmaWVyKSwgV1RGTW92ZSgqc2NvcGVVUkwp
LCBXVEZNb3ZlKCpzY3JpcHRVUkwpLCBXVEZNb3ZlKCp1cGRhdGVWaWFDYWNoZSkgfSB9OworICAg
IHJldHVybiB7IHsgV1RGTW92ZSgqa2V5KSwgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUo
KmFjdGl2ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSwgV1RGTW92ZSgqc2NvcGVVUkwpLCBXVEZN
b3ZlKCpzY3JpcHRVUkwpLCBXVEZNb3ZlKCp1cGRhdGVWaWFDYWNoZSkgfSB9OwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlci5jcHAKaW5kZXggZmJhNjUwMzEyNWJhYzkyNTc4ZTFkM2IyZTNkN2UwNmQx
MDFlZWVkMy4uM2VhNzk4NDM2NWEzM2U1MzEzYmUwY2JiNjhlM2M4NTczNzA1ZjVmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uRGF0YS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJTV1NlcnZl
ckpvYlF1ZXVlLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaCIKICNpbmNsdWRl
ICJTV1NlcnZlcldvcmtlci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YS5o
IgpAQCAtNTcsNiArNTgsNyBAQCBTV1NlcnZlcjo6flNXU2VydmVyKCkKIHsKICAgICBSRUxFQVNF
X0FTU0VSVChtX2Nvbm5lY3Rpb25zLmlzRW1wdHkoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9y
ZWdpc3RyYXRpb25zLmlzRW1wdHkoKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9qb2JRdWV1ZXMu
aXNFbXB0eSgpKTsKIAogICAgIEFTU0VSVChtX3Rhc2tRdWV1ZS5pc0VtcHR5KCkpOwogICAgIEFT
U0VSVChtX3Rhc2tSZXBseVF1ZXVlLmlzRW1wdHkoKSk7CkBAIC02OCw2ICs3MCwyNSBAQCBTV1Nl
cnZlcjo6flNXU2VydmVyKCkKICAgICBBU1NFUlQoIW1fdGFza1RocmVhZCk7CiB9CiAKK1NXU2Vy
dmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmIHJlZ2lzdHJhdGlvbktleSkKK3sKKyAgICBBU1NFUlQoIWlz
TWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4gbV9yZWdpc3RyYXRpb25zLmdldChyZWdpc3RyYXRp
b25LZXkpOworfQorCit2b2lkIFNXU2VydmVyOjphZGRSZWdpc3RyYXRpb24oc3RkOjp1bmlxdWVf
cHRyPFNXU2VydmVyUmVnaXN0cmF0aW9uPiYmIHJlZ2lzdHJhdGlvbikKK3sKKyAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvIGtleSA9IHJlZ2lzdHJhdGlvbi0+a2V5KCk7Cisg
ICAgbV9yZWdpc3RyYXRpb25zLmFkZChrZXksIFdURk1vdmUocmVnaXN0cmF0aW9uKSk7Cit9CisK
K3ZvaWQgU1dTZXJ2ZXI6OnJlbW92ZVJlZ2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXkpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CisgICAgbV9yZWdpc3RyYXRpb25zLnJlbW92ZShyZWdpc3RyYXRpb25LZXkpOworfQor
CiB2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzY2hlZHVsZUpvYkluU2VydmVyKGNvbnN0IFNl
cnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQogewogICAgIExPRyhTZXJ2aWNlV29ya2VyLCAi
U2NoZWR1bGluZyBTZXJ2aWNlV29ya2VyIGpvYiAlIiBQUkl1NjQgIi0lIiBQUkl1NjQgIiBpbiBz
ZXJ2ZXIiLCBqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCksIGpvYkRhdGEuaWRlbnRpZmll
cigpKTsKQEAgLTg2LDkgKzEwNyw5IEBAIHZvaWQgU1dTZXJ2ZXI6OkNvbm5lY3Rpb246OnNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyCiAgICAgbV9z
ZXJ2ZXIuc2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoKnRoaXMsIHJlZ2lzdHJhdGlvbktleSwg
d29ya2VySUQsIG1lc3NhZ2UpOwogfQogCi12b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzY3Jp
cHRDb250ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdp
c3RyYXRpb25LZXksIHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgd29ya2VySUQp
Cit2b2lkIFNXU2VydmVyOjpDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0U3RhcnRlZChjb25zdCBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIHVpbnQ2NF90IHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQogewotICAgIG1f
c2VydmVyLnNjcmlwdENvbnRleHRTdGFydGVkKCp0aGlzLCByZWdpc3RyYXRpb25LZXksIGlkZW50
aWZpZXIsIHdvcmtlcklEKTsKKyAgICBtX3NlcnZlci5zY3JpcHRDb250ZXh0U3RhcnRlZCgqdGhp
cywgcmVnaXN0cmF0aW9uS2V5LCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgd29ya2VySUQpOwog
fQogCiBTV1NlcnZlcjo6U1dTZXJ2ZXIoKQpAQCAtMTAyLDkgKzEyMyw5IEBAIHZvaWQgU1dTZXJ2
ZXI6OnNjaGVkdWxlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQogewog
ICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKGpvYkRhdGEuY29ubmVjdGlvbklkZW50
aWZpZXIoKSkpOwogCi0gICAgYXV0byByZXN1bHQgPSBtX3JlZ2lzdHJhdGlvbnMuYWRkKGpvYkRh
dGEucmVnaXN0cmF0aW9uS2V5KCksIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9qb2JR
dWV1ZXMuYWRkKGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCksIG51bGxwdHIpOwogICAgIGlmIChy
ZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6
bWFrZV91bmlxdWU8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+KCp0aGlzLCBqb2JEYXRhLnJlZ2lzdHJh
dGlvbktleSgpKTsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U1dTZXJ2ZXJKb2JRdWV1ZT4oKnRoaXMsIGpvYkRhdGEucmVnaXN0cmF0aW9uS2V5KCkp
OwogCiAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogCkBAIC0xNTYsMjcgKzE3
NywyNyBAQCB2b2lkIFNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKENvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJGZQogCiAgICAgQVNTRVJUKG1fY29ubmVjdGlv
bnMuY29udGFpbnMocmVzdWx0LmNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiAKLSAgICBhdXRvIHJl
Z2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQocmVzdWx0LnJlZ2lzdHJhdGlvbktleSk7
Ci0gICAgaWYgKCFyZWdpc3RyYXRpb24pCisgICAgYXV0byBqb2JRdWV1ZSA9IG1fam9iUXVldWVz
LmdldChyZXN1bHQucmVnaXN0cmF0aW9uS2V5KTsKKyAgICBpZiAoIWpvYlF1ZXVlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICByZWdpc3RyYXRpb24tPnNjcmlwdEZldGNoRmluaXNoZWQoY29ubmVj
dGlvbiwgcmVzdWx0KTsKKyAgICBqb2JRdWV1ZS0+c2NyaXB0RmV0Y2hGaW5pc2hlZChjb25uZWN0
aW9uLCByZXN1bHQpOwogfQogCiB2b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9T
dGFydChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25u
ZWN0aW9uLmlkZW50aWZpZXIoKSkpOwogICAgIAotICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24g
PSBtX3JlZ2lzdHJhdGlvbnMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCi0gICAgICAgIHJlZ2lzdHJh
dGlvbi0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoY29ubmVjdGlvbiwgd29ya2VySUQsIG1l
c3NhZ2UpOworICAgIGlmIChhdXRvKiBqb2JRdWV1ZSA9IG1fam9iUXVldWVzLmdldChyZWdpc3Ry
YXRpb25LZXkpKQorICAgICAgICBqb2JRdWV1ZS0+c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQo
Y29ubmVjdGlvbiwgd29ya2VySUQsIG1lc3NhZ2UpOwogfQogCi12b2lkIFNXU2VydmVyOjpzY3Jp
cHRDb250ZXh0U3RhcnRlZChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIHVpbnQ2NF90IGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgd29ya2VySUQpCit2b2lkIFNXU2VydmVyOjpzY3JpcHRDb250ZXh0U3Rh
cnRlZChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiByZWdpc3RyYXRpb25LZXksIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQogewogICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNv
bnRhaW5zKGNvbm5lY3Rpb24uaWRlbnRpZmllcigpKSk7CiAKLSAgICBpZiAoYXV0byogcmVnaXN0
cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChyZWdpc3RyYXRpb25LZXkpKQotICAgICAgICBy
ZWdpc3RyYXRpb24tPnNjcmlwdENvbnRleHRTdGFydGVkKGNvbm5lY3Rpb24sIGlkZW50aWZpZXIs
IHdvcmtlcklEKTsKKyAgICBpZiAoYXV0byogam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVn
aXN0cmF0aW9uS2V5KSkKKyAgICAgICAgam9iUXVldWUtPnNjcmlwdENvbnRleHRTdGFydGVkKGNv
bm5lY3Rpb24sIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCB3b3JrZXJJRCk7CiB9CiAKIFJlZjxT
V1NlcnZlcldvcmtlcj4gU1dTZXJ2ZXI6OmNyZWF0ZVdvcmtlcihDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRpb25LZXks
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgV29ya2VyVHlwZSB0eXBlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmlu
ZGV4IGM5NjY5ZGFjMGEzZmQzOWE2YTFkOGY4YjYzNmIyYTE4ZWY1NWE0MmEuLmU3Nzg2ZTMwMWRl
NTRjNDRjNTVmYjc5YWQ2ZjM3ZTkyNDVhMzA0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKQEAgLTQwLDYgKzQwLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTV1NlcnZlckpvYlF1ZXVlOwogY2xhc3MgU1dTZXJ2
ZXJSZWdpc3RyYXRpb247CiBjbGFzcyBTV1NlcnZlcldvcmtlcjsKIHN0cnVjdCBFeGNlcHRpb25E
YXRhOwpAQCAtNTUsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgfkNvbm5lY3Rpb24oKTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlw
dENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
LCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHdvcmtlcklEKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0U3Rh
cnRlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgdWludDY0X3Qgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpOwogCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICBXRUJDT1JFX0VYUE9SVCBDb25uZWN0aW9uKFNXU2VydmVyJiwgdWludDY0
X3QgaWRlbnRpZmllcik7CkBAIC04MCw2ICs4MSwxMCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgU1dTZXJ2ZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+U1dTZXJ2ZXIoKTsKIAorICAg
IFNXU2VydmVyUmVnaXN0cmF0aW9uKiBnZXRSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSYpOworICAgIHZvaWQgYWRkUmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVl
X3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4mJik7CisgICAgdm9pZCByZW1vdmVSZWdpc3RyYXRp
b24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOworCiAgICAgdm9pZCBzY2hl
ZHVsZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwogICAgIHZvaWQgcmVqZWN0Sm9i
KGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiwgY29uc3QgRXhjZXB0aW9uRGF0YSYpOwogICAg
IHZvaWQgcmVzb2x2ZVJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYs
IGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJik7CkBAIC0xMDAsMTAgKzEwNSwx
MSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKENvbm5lY3Rpb24m
LCBjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKICAgICB2b2lkIHNjcmlwdENvbnRl
eHRGYWlsZWRUb1N0YXJ0KENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsK
LSAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKENvbm5lY3Rpb24mLCBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgdWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiB3b3JrZXJJRCk7CisgICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChDb25uZWN0aW9uJiwg
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIHVpbnQ2NF90IHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKTsKIAogICAgIEhhc2hNYXA8dWlu
dDY0X3QsIENvbm5lY3Rpb24qPiBtX2Nvbm5lY3Rpb25zOwogICAgIEhhc2hNYXA8U2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVyUmVnaXN0cmF0aW9u
Pj4gbV9yZWdpc3RyYXRpb25zOworICAgIEhhc2hNYXA8U2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleSwgc3RkOjp1bmlxdWVfcHRyPFNXU2VydmVySm9iUXVldWU+PiBtX2pvYlF1ZXVlczsKIAog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8U1dTZXJ2ZXJXb3JrZXI+PiBtX3dvcmtlcnNCeUlEOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVySm9iUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlckpvYlF1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTEzODFiYTBhNTYzNDMzYzY3Y2U4NzMy
NWY5MTBmODRkNDBhZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcApAQCAtMCwwICsxLDI5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTV1NlcnZlckpvYlF1
ZXVlLmgiCisKKyNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCisKKyNpbmNsdWRlICJFeGNlcHRp
b25EYXRhLmgiCisjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKKyNpbmNsdWRlICJTV1NlcnZlcldvcmtl
ci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckZldGNoUmVzdWx0LmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEu
aCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUuaCIKKyNpbmNsdWRlICJX
b3JrZXJUeXBlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1dTZXJ2ZXJKb2JRdWV1ZTo6
U1dTZXJ2ZXJKb2JRdWV1ZShTV1NlcnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5JiBrZXkpCisgICAgOiBtX2pvYlRpbWVyKCp0aGlzLCAmU1dTZXJ2ZXJKb2JR
dWV1ZTo6c3RhcnROZXh0Sm9iKQorICAgICwgbV9zZXJ2ZXIoc2VydmVyKQorICAgICwgbV9yZWdp
c3RyYXRpb25LZXkoa2V5KQoreworfQorCitTV1NlcnZlckpvYlF1ZXVlOjp+U1dTZXJ2ZXJKb2JR
dWV1ZSgpCit7CisgICAgQVNTRVJUKG1fam9iUXVldWUuaXNFbXB0eSgpKTsKK30KKwordm9pZCBT
V1NlcnZlckpvYlF1ZXVlOjplbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBq
b2JEYXRhKQoreworICAgIC8vIEZJWE1FOiBQZXIgdGhlIHNwZWMsIGNoZWNrIGlmIHRoaXMgam9i
IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGxhc3Qgam9iIG9uIHRoZSBxdWV1ZS4KKyAgICAvLyBJZiBp
dCBpcywgc3RhY2sgaXQgYWxvbmcgd2l0aCB0aGF0IGpvYi4KKworICAgIG1fam9iUXVldWUuYXBw
ZW5kKGpvYkRhdGEpOworCisgICAgaWYgKG1fY3VycmVudEpvYikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFtX2pvYlRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fam9iVGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6c2NyaXB0RmV0Y2hG
aW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdv
cmtlckZldGNoUmVzdWx0JiByZXN1bHQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQobV9jdXJyZW50Sm9iICYmIG1fY3VycmVudEpvYi0+aWRlbnRpZmllcigpID09
IHJlc3VsdC5qb2JJZGVudGlmaWVyKTsKKworICAgIGlmICghcmVzdWx0LnNjcmlwdEVycm9yLmlz
TnVsbCgpKSB7CisgICAgICAgIHJlamVjdEN1cnJlbnRKb2IoRXhjZXB0aW9uRGF0YSB7IFVua25v
d25FcnJvciwgbWFrZVN0cmluZygiU2NyaXB0IFVSTCAiLCBtX2N1cnJlbnRKb2ItPnNjcmlwdFVS
TC5zdHJpbmcoKSwgIiBmZXRjaCByZXN1bHRlZCBpbiBlcnJvcjogIiwgcmVzdWx0LnNjcmlwdEVy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpIH0pOworCisgICAgICAgIC8vIElmIG5ld2VzdFdv
cmtlciBpcyBudWxsLCBpbnZva2UgQ2xlYXIgUmVnaXN0cmF0aW9uIGFsZ29yaXRobSBwYXNzaW5n
IHRoaXMgcmVnaXN0cmF0aW9uIGFzIGl0cyBhcmd1bWVudC4KKyAgICAgICAgLy8gRklYTUU6IFdl
IGRvbid0IGhhdmUgImNsZWFyIHJlZ2lzdHJhdGlvbiIgeWV0LgorCisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBGSVhNRTogSWYgdGhlIHNjcmlwdCBkYXRhIG1hdGNoZXMgYnl0ZS1m
b3ItYnl0ZSB3aXRoIHRoZSBleGlzdGluZyBuZXdlc3RXb3JrZXIsCisgICAgLy8gdGhlbiByZXNv
bHZlIGFuZCBmaW5pc2ggdGhlIGpvYiB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGZ1cnRoZXIuCisK
KyAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdvcmtlciB0eXBlIChjbGFzc2ljIHZz
IG1vZHVsZSkKKyAgICBtX3NlcnZlci5jcmVhdGVXb3JrZXIoY29ubmVjdGlvbiwgbV9yZWdpc3Ry
YXRpb25LZXksIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLCByZXN1bHQuc2NyaXB0LCBXb3JrZXJU
eXBlOjpDbGFzc2ljKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0
RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgd29ya2Vy
SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIFVOVVNFRF9QQVJBTSh3b3JrZXJJRCk7CisKKyAgICByZWplY3RDdXJyZW50Sm9iKEV4
Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1lc3NhZ2UgfSk7Cit9CisKK3ZvaWQgU1dTZXJ2
ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCB1
aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIFVOVVNFRF9QQVJBTSh3b3JrZXJJ
RCk7CisKKyAgICBtX3NlcnZlci5wb3N0VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMs
ICZTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYk9uTWFpblRo
ZWFkLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVl
dWU6OnN0YXJ0TmV4dEpvYigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoIW1fY3VycmVudEpvYik7CisgICAgQVNTRVJUKCFtX2pvYlF1ZXVlLmlzRW1wdHkoKSk7
CisKKyAgICBtX2N1cnJlbnRKb2IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2JE
YXRhPihtX2pvYlF1ZXVlLnRha2VGaXJzdCgpLmlzb2xhdGVkQ29weSgpKTsKKworICAgIHN3aXRj
aCAobV9jdXJyZW50Sm9iLT50eXBlKSB7CisgICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6
UmVnaXN0ZXI6CisgICAgICAgIG1fc2VydmVyLnBvc3RUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iLCAqbV9jdXJyZW50Sm9i
KSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJl
Z2lzdGVyOgorICAgICAgICBtX3NlcnZlci5wb3N0VGFzayhjcmVhdGVDcm9zc1RocmVhZFRhc2so
KnRoaXMsICZTV1NlcnZlckpvYlF1ZXVlOjpydW5VbnJlZ2lzdGVySm9iLCAqbV9jdXJyZW50Sm9i
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blJlZ2lzdGVySm9iKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKGpvYi50eXBlID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpSZWdpc3Rl
cik7CisKKyAgICBpZiAoIXNob3VsZFRyZWF0QXNQb3RlbnRpYWxseVRydXN0d29ydGh5KGpvYi5z
Y3JpcHRVUkwpKQorICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVh
ZChFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJTY3JpcHQgVVJM
IGlzIG5vdCBwb3RlbnRpYWxseSB0cnVzdHdvcnRoeSIpIH0pOworCisgICAgLy8gSWYgdGhlIG9y
aWdpbiBvZiBqb2LigJlzIHNjcmlwdCB1cmwgaXMgbm90IGpvYuKAmXMgcmVmZXJyZXIncyBvcmln
aW4sIHRoZW46CisgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoam9iLnNjcmlw
dFVSTCwgam9iLmNsaWVudENyZWF0aW9uVVJMKSkKKyAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhF
eGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiU2NyaXB0IG9yaWdpbiBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJpbmcgY2xp
ZW50J3Mgb3JpZ2luIikgfSk7CisKKyAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2Nv
cGUgdXJsIGlzIG5vdCBqb2LigJlzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgorICAgIGlmICgh
cHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGpvYi5zY29wZVVSTCwgam9iLmNsaWVudENyZWF0
aW9uVVJMKSkKKyAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQo
RXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiU2NvcGUgb3JpZ2lu
IGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3RlcmluZyBjbGllbnQncyBvcmlnaW4iKSB9KTsKKwor
ICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBub3QgbnVsbCAoaW4gb3VyIHBhcmxhbmNlICJlbXB0
eSIpLCB0aGVuOgorICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5nZXRSZWdp
c3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi0+c2V0
SXNVbmluc3RhbGxpbmcoZmFsc2UpOworICAgICAgICBhdXRvKiBuZXdlc3RXb3JrZXIgPSByZWdp
c3RyYXRpb24tPmdldE5ld2VzdFdvcmtlcigpOworICAgICAgICBpZiAobmV3ZXN0V29ya2VyICYm
IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoam9iLnNjcmlwdFVSTCwgbmV3ZXN0V29y
a2VyLT5zY3JpcHRVUkwoKSkgJiYgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2Fj
aGUgPT0gcmVnaXN0cmF0aW9uLT51cGRhdGVWaWFDYWNoZSgpKSB7CisgICAgICAgICAgICByZXNv
bHZlV2l0aFJlZ2lzdHJhdGlvbk9uTWFpblRocmVhZCgqcmVnaXN0cmF0aW9uKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGF1dG8gbmV3UmVn
aXN0cmF0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTV1NlcnZlclJlZ2lzdHJhdGlvbj4obV9yZWdp
c3RyYXRpb25LZXksIGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlLCBqb2Iu
c2NvcGVVUkwsIGpvYi5zY3JpcHRVUkwpOworICAgICAgICBtX3NlcnZlci5hZGRSZWdpc3RyYXRp
b24oV1RGTW92ZShuZXdSZWdpc3RyYXRpb24pKTsKKyAgICB9CisKKyAgICBydW5VcGRhdGVKb2Io
am9iKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5VbnJlZ2lzdGVySm9iKGNvbnN0
IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisKKyAgICAvLyBJZiB0aGUgb3JpZ2luIG9mIGpvYuKAmXMgc2NvcGUgdXJsIGlzIG5vdCBq
b2IncyBjbGllbnQncyBvcmlnaW4sIHRoZW46CisgICAgaWYgKCFwcm90b2NvbEhvc3RBbmRQb3J0
QXJlRXF1YWwoam9iLnNjb3BlVVJMLCBqb2IuY2xpZW50Q3JlYXRpb25VUkwpKQorICAgICAgICBy
ZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgU2Vj
dXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJPcmlnaW4gb2Ygc2NvcGUgVVJMIGRvZXMgbm90IG1h
dGNoIHRoZSBjbGllbnQncyBvcmlnaW4iKSB9KTsKKworICAgIC8vIExldCByZWdpc3RyYXRpb24g
YmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nICJHZXQgUmVnaXN0cmF0aW9uIiBhbGdvcml0aG0gcGFz
c2luZyBqb2LigJlzIHNjb3BlIHVybCBhcyB0aGUgYXJndW1lbnQuCisgICAgYXV0byogcmVnaXN0
cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKKwor
ICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBudWxsLCB0aGVuOgorICAgIGlmICghcmVnaXN0cmF0
aW9uIHx8IHJlZ2lzdHJhdGlvbi0+aXNVbmluc3RhbGxpbmcoKSkgeworICAgICAgICAvLyBJbnZv
a2UgUmVzb2x2ZSBKb2IgUHJvbWlzZSB3aXRoIGpvYiBhbmQgZmFsc2UuCisgICAgICAgIHJlc29s
dmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQoZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgLy8gU2V0IHJlZ2lzdHJhdGlvbuKAmXMgdW5pbnN0YWxsaW5n
IGZsYWcuCisgICAgcmVnaXN0cmF0aW9uLT5zZXRJc1VuaW5zdGFsbGluZyh0cnVlKTsKKworICAg
IC8vIEludm9rZSBSZXNvbHZlIEpvYiBQcm9taXNlIHdpdGggam9iIGFuZCB0cnVlLgorICAgIHJl
c29sdmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQodHJ1ZSk7CisKKyAgICAv
LyBGSVhNRTogSW52b2tlIFRyeSBDbGVhciBSZWdpc3RyYXRpb24gd2l0aCByZWdpc3RyYXRpb24u
Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VX
b3JrZXJKb2JEYXRhJiBqb2IpCit7CisgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIu
Z2V0UmVnaXN0cmF0aW9uKG1fcmVnaXN0cmF0aW9uS2V5KTsKKworICAgIC8vIElmIHJlZ2lzdHJh
dGlvbiBpcyBudWxsIChpbiBvdXIgcGFybGFuY2UgImVtcHR5Iikgb3IgcmVnaXN0cmF0aW9u4oCZ
cyB1bmluc3RhbGxpbmcgZmxhZyBpcyBzZXQsIHRoZW46CisgICAgaWYgKCFyZWdpc3RyYXRpb24p
CisgICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlv
bkRhdGEgeyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0ZSBhIG51bGwvbm9u
ZXhpc3RlbnQgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9uIikgfSk7CisgICAgaWYgKHJlZ2lz
dHJhdGlvbi0+aXNVbmluc3RhbGxpbmcoKSkKKyAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNl
cHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFs
KCJDYW5ub3QgdXBkYXRlIGEgc2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9uIHRoYXQgaXMgdW5p
bnN0YWxsaW5nIikgfSk7CisKKyAgICAvLyBJZiBqb2LigJlzIGpvYiB0eXBlIGlzIHVwZGF0ZSwg
YW5kIG5ld2VzdFdvcmtlcuKAmXMgc2NyaXB0IHVybCBkb2VzIG5vdCBlcXVhbCBqb2LigJlzIHNj
cmlwdCB1cmwgd2l0aCB0aGUgZXhjbHVkZSBmcmFnbWVudHMgZmxhZyBzZXQsIHRoZW46CisgICAg
YXV0byogbmV3ZXN0V29ya2VyID0gcmVnaXN0cmF0aW9uLT5nZXROZXdlc3RXb3JrZXIoKTsKKyAg
ICBpZiAobmV3ZXN0V29ya2VyICYmICFlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGpv
Yi5zY3JpcHRVUkwsIG5ld2VzdFdvcmtlci0+c2NyaXB0VVJMKCkpKQorICAgICAgICByZXR1cm4g
cmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9y
LCBBU0NJSUxpdGVyYWwoIkNhbm5vdCB1cGRhdGUgYSBzZXJ2aWNlIHdvcmtlciB3aXRoIGEgcmVx
dWVzdGVkIHNjcmlwdCBVUkwgd2hvc2UgbmV3ZXN0IHdvcmtlciBoYXMgYSBkaWZmZXJlbnQgc2Ny
aXB0IFVSTCIpIH0pOworCisgICAgc3RhcnRTY3JpcHRGZXRjaEZyb21NYWluVGhyZWFkKCk7Cit9
CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVh
ZChjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pCit7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CisgICAgbV9zZXJ2ZXIucG9zdFRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRh
c2soKnRoaXMsICZTV1NlcnZlckpvYlF1ZXVlOjpyZWplY3RDdXJyZW50Sm9iLCBleGNlcHRpb24p
KTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZlV2l0aFJlZ2lzdHJhdGlvbk9u
TWFpblRocmVhZChTV1NlcnZlclJlZ2lzdHJhdGlvbiYgcmVnaXN0cmF0aW9uKQoreworICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fc2VydmVyLnBvc3RUYXNrUmVwbHkoY3JlYXRl
Q3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZUN1cnJlbnRS
ZWdpc3RyYXRpb25Kb2IsIHJlZ2lzdHJhdGlvbi5kYXRhKCkpKTsKK30KKwordm9pZCBTV1NlcnZl
ckpvYlF1ZXVlOjpyZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYk9uTWFpblRoZWFkKHVpbnQ2
NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOworICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lzdHJhdGlvbiht
X3JlZ2lzdHJhdGlvbktleSk7CisgICAgQVNTRVJUKHJlZ2lzdHJhdGlvbik7CisgICAgcmVnaXN0
cmF0aW9uLT5zZXRBY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllcihzZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CisgICAgcmVzb2x2ZVdpdGhSZWdpc3RyYXRpb25Pbk1haW5UaHJlYWQoKnJlZ2lz
dHJhdGlvbik7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZVdpdGhVbnJlZ2lz
dHJhdGlvblJlc3VsdE9uTWFpblRocmVhZChib29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQorewor
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fc2VydmVyLnBvc3RUYXNrUmVwbHko
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZUN1
cnJlbnRVbnJlZ2lzdHJhdGlvbkpvYiwgdW5yZWdpc3RyYXRpb25SZXN1bHQpKTsKK30KKwordm9p
ZCBTV1NlcnZlckpvYlF1ZXVlOjpzdGFydFNjcmlwdEZldGNoRnJvbU1haW5UaHJlYWQoKQorewor
ICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fc2VydmVyLnBvc3RUYXNrUmVwbHko
Y3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJKb2JRdWV1ZTo6c3RhcnRTY3Jp
cHRGZXRjaEZvckN1cnJlbnRKb2IpKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZWpl
Y3RDdXJyZW50Sm9iKGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbkRhdGEpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsKKworICAg
IG1fc2VydmVyLnJlamVjdEpvYigqbV9jdXJyZW50Sm9iLCBleGNlcHRpb25EYXRhKTsKKworICAg
IGZpbmlzaEN1cnJlbnRKb2IoKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZl
Q3VycmVudFJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0
YSYgZGF0YSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2N1
cnJlbnRKb2IpOworICAgIEFTU0VSVChtX2N1cnJlbnRKb2ItPnR5cGUgPT0gU2VydmljZVdvcmtl
ckpvYlR5cGU6OlJlZ2lzdGVyKTsKKworICAgIG1fc2VydmVyLnJlc29sdmVSZWdpc3RyYXRpb25K
b2IoKm1fY3VycmVudEpvYiwgZGF0YSk7CisKKyAgICBmaW5pc2hDdXJyZW50Sm9iKCk7Cit9CisK
K3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZUN1cnJlbnRVbnJlZ2lzdHJhdGlvbkpvYihi
b29sIHVucmVnaXN0cmF0aW9uUmVzdWx0KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKG1fY3VycmVudEpvYik7CisgICAgQVNTRVJUKG1fY3VycmVudEpvYi0+dHlw
ZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VW5yZWdpc3Rlcik7CisKKyAgICBtX3NlcnZlci5y
ZXNvbHZlVW5yZWdpc3RyYXRpb25Kb2IoKm1fY3VycmVudEpvYiwgbV9yZWdpc3RyYXRpb25LZXks
IHVucmVnaXN0cmF0aW9uUmVzdWx0KTsKKworICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKK30KKwor
dm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpzdGFydFNjcmlwdEZldGNoRm9yQ3VycmVudEpvYigpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsK
KworICAgIG1fc2VydmVyLnN0YXJ0U2NyaXB0RmV0Y2goKm1fY3VycmVudEpvYik7Cit9CisKK3Zv
aWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZmluaXNoQ3VycmVudEpvYigpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsKKyAgICBBU1NFUlQoIW1f
am9iVGltZXIuaXNBY3RpdmUoKSk7CisKKyAgICBtX2N1cnJlbnRKb2IgPSBudWxscHRyOworICAg
IGlmIChtX2pvYlF1ZXVlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3RhcnRO
ZXh0Sm9iKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA5NWIzYmZmZDBh
YTU3YWM4OGFlMzhhMzRkNDZjMDY3ZTEzZWJhNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oCkBAIC0wLDAg
KzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKKworI2luY2x1ZGUgIlNXU2VydmVyLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtl
ckpvYkRhdGEuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNXU2VydmVySm9iUXVldWUgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFNXU2VydmVySm9iUXVldWUoU1dTZXJ2ZXImLCBjb25zdCBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uS2V5Jik7CisgICAgU1dTZXJ2ZXJKb2JRdWV1ZShjb25zdCBTV1Nl
cnZlclJlZ2lzdHJhdGlvbiYpID0gZGVsZXRlOworICAgIH5TV1NlcnZlckpvYlF1ZXVlKCk7CisK
KyAgICB2b2lkIGVucXVldWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKKyAgICB2
b2lkIHNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBTZXJ2
aWNlV29ya2VyRmV0Y2hSZXN1bHQmKTsKKyAgICB2b2lkIHNjcmlwdENvbnRleHRGYWlsZWRUb1N0
YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKKyAgICB2b2lkIHNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVy
OjpDb25uZWN0aW9uJiwgdWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgd29ya2VySUQpOworCitwcml2YXRlOgorICAgIHZvaWQgam9iVGltZXJGaXJlZCgpOwor
ICAgIHZvaWQgc3RhcnROZXh0Sm9iKCk7CisgICAgdm9pZCByZWplY3RDdXJyZW50Sm9iKGNvbnN0
IEV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIHJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9i
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJik7CisgICAgdm9pZCByZXNvbHZl
Q3VycmVudFVucmVnaXN0cmF0aW9uSm9iKGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOworICAg
IHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2IoKTsKKyAgICB2b2lkIGZpbmlzaEN1
cnJlbnRKb2IoKTsKKworICAgIHZvaWQgcnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGEmKTsKKyAgICB2b2lkIHJ1blVucmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtl
ckpvYkRhdGEmKTsKKyAgICB2b2lkIHJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9i
RGF0YSYpOworCisgICAgdm9pZCByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKGNvbnN0
IEV4Y2VwdGlvbkRhdGEmKTsKKyAgICB2b2lkIHJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25NYWlu
VGhyZWFkKFNXU2VydmVyUmVnaXN0cmF0aW9uJik7CisgICAgdm9pZCByZXNvbHZlQ3VycmVudFJl
Z2lzdHJhdGlvbkpvYk9uTWFpblRoZWFkKHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKKyAgICB2b2lkIHJlc29sdmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQo
Ym9vbCk7CisgICAgdm9pZCBzdGFydFNjcmlwdEZldGNoRnJvbU1haW5UaHJlYWQoKTsKKyAgICBi
b29sIGlzRW1wdHkoKTsKKworICAgIERlcXVlPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBtX2pvYlF1
ZXVlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTZXJ2aWNlV29ya2VySm9iRGF0YT4gbV9jdXJyZW50
Sm9iOworCisgICAgVGltZXIgbV9qb2JUaW1lcjsKKyAgICBTV1NlcnZlciYgbV9zZXJ2ZXI7Cisg
ICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJSZWdpc3RyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKaW5kZXggMzQzNmI2ZmNlNTUzNTZlMTNiYWJl
ZTU3OGY4OWQ2OTVhMzI5MGMzYS4uY2MyN2M4NjU0YzZlZTA1YTllM2NkNWQ1MjgzMTM1YTE2Mjdh
N2JkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9T
V1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5jcHAKQEAgLTM5LDk1ICszOSwxNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJl
Z2lzdHJhdGlvbihTV1NlcnZlciYgc2VydmVyLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0
aW9uS2V5JiBrZXkpCi0gICAgOiBtX2pvYlRpbWVyKCp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnN0YXJ0TmV4dEpvYikKLSAgICAsIG1fc2VydmVyKHNlcnZlcikKLSAgICAsIG1fcmVnaXN0
cmF0aW9uS2V5KGtleSkKK1NXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lzdHJhdGlv
bihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXksIFNlcnZpY2VXb3JrZXJV
cGRhdGVWaWFDYWNoZSB1cGRhdGVWaWFDYWNoZSwgY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3Qg
VVJMJiBzY3JpcHRVUkwpCisgICAgOiBtX3JlZ2lzdHJhdGlvbktleShrZXkpCisgICAgLCBtX3Vw
ZGF0ZVZpYUNhY2hlKHVwZGF0ZVZpYUNhY2hlKQorICAgICwgbV9zY29wZVVSTChzY29wZVVSTC5p
c29sYXRlZENvcHkoKSkKKyAgICAsIG1fc2NyaXB0VVJMKHNjcmlwdFVSTC5pc29sYXRlZENvcHko
KSkKIHsKKyAgICBtX3Njb3BlVVJMLnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogfQogCiBT
V1NlcnZlclJlZ2lzdHJhdGlvbjo6flNXU2VydmVyUmVnaXN0cmF0aW9uKCkKIHsKLSAgICBBU1NF
UlQobV9qb2JRdWV1ZS5pc0VtcHR5KCkpOwotfQotCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9u
OjplbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2JEYXRhKQotewotICAg
IC8vIEZJWE1FOiBQZXIgdGhlIHNwZWMsIGNoZWNrIGlmIHRoaXMgam9iIGlzIGVxdWl2YWxlbnQg
dG8gdGhlIGxhc3Qgam9iIG9uIHRoZSBxdWV1ZS4KLSAgICAvLyBJZiBpdCBpcywgc3RhY2sgaXQg
YWxvbmcgd2l0aCB0aGF0IGpvYi4KLQotICAgIG1fam9iUXVldWUuYXBwZW5kKGpvYkRhdGEpOwot
Ci0gICAgaWYgKG1fY3VycmVudEpvYikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2pv
YlRpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fam9iVGltZXIuc3RhcnRPbmVTaG90KDBfcyk7
Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjcmlwdEZldGNoRmluaXNoZWQoU1dT
ZXJ2ZXI6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJl
c3VsdCYgcmVzdWx0KQotewotICAgIEFTU0VSVChtX2N1cnJlbnRKb2IgJiYgbV9jdXJyZW50Sm9i
LT5pZGVudGlmaWVyKCkgPT0gcmVzdWx0LmpvYklkZW50aWZpZXIpOwotCi0gICAgaWYgKCFyZXN1
bHQuc2NyaXB0RXJyb3IuaXNOdWxsKCkpIHsKLSAgICAgICAgcmVqZWN0Q3VycmVudEpvYihFeGNl
cHRpb25EYXRhIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJTY3JpcHQgVVJMICIsIG1fY3Vy
cmVudEpvYi0+c2NyaXB0VVJMLnN0cmluZygpLCAiIGZldGNoIHJlc3VsdGVkIGluIGVycm9yOiAi
LCByZXN1bHQuc2NyaXB0RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24oKSkgfSk7Ci0gICAgICAg
IAotICAgICAgICAvLyBJZiBuZXdlc3RXb3JrZXIgaXMgbnVsbCwgaW52b2tlIENsZWFyIFJlZ2lz
dHJhdGlvbiBhbGdvcml0aG0gcGFzc2luZyB0aGlzIHJlZ2lzdHJhdGlvbiBhcyBpdHMgYXJndW1l
bnQuCi0gICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBoYXZlICJjbGVhciByZWdpc3RyYXRpb24i
IHlldC4KLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9sYXN0VXBkYXRlVGltZSA9
IGN1cnJlbnRUaW1lKCk7Ci0gICAgCi0gICAgLy8gRklYTUU6IElmIHRoZSBzY3JpcHQgZGF0YSBt
YXRjaGVzIGJ5dGUtZm9yLWJ5dGUgd2l0aCB0aGUgZXhpc3RpbmcgbmV3ZXN0V29ya2VyLAotICAg
IC8vIHRoZW4gcmVzb2x2ZSBhbmQgZmluaXNoIHRoZSBqb2Igd2l0aG91dCBkb2luZyBhbnl0aGlu
ZyBmdXJ0aGVyLgotCi0gICAgLy8gRklYTUU6IFN1cHBvcnQgdGhlIHByb3BlciB3b3JrZXIgdHlw
ZSAoY2xhc3NpYyB2cyBtb2R1bGUpCi0gICAgbV9zZXJ2ZXIuY3JlYXRlV29ya2VyKGNvbm5lY3Rp
b24sIG1fcmVnaXN0cmF0aW9uS2V5LCBtX2N1cnJlbnRKb2ItPnNjcmlwdFVSTCwgcmVzdWx0LnNj
cmlwdCwgV29ya2VyVHlwZTo6Q2xhc3NpYyk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29u
c3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIFVOVVNF
RF9QQVJBTSh3b3JrZXJJRCk7Ci0KLSAgICByZWplY3RDdXJyZW50Sm9iKEV4Y2VwdGlvbkRhdGEg
eyBVbmtub3duRXJyb3IsIG1lc3NhZ2UgfSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRp
b246OnNjcmlwdENvbnRleHRTdGFydGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgdWludDY0X3Qg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCkKLXsKLSAgICBVTlVTRURfUEFSQU0o
d29ya2VySUQpOwotICAgIHJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iKFNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25EYXRhIHsgbV9yZWdpc3RyYXRpb25LZXksIGlkZW50aWZpZXIsIG1fc2Nv
cGVVUkwsIG1fc2NyaXB0VVJMLCBtX3VwZGF0ZVZpYUNhY2hlLnZhbHVlX29yKFNlcnZpY2VXb3Jr
ZXJVcGRhdGVWaWFDYWNoZTo6SW1wb3J0cykgfSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OnN0YXJ0TmV4dEpvYigpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBBU1NFUlQoIW1fY3VycmVudEpvYik7Ci0gICAgQVNTRVJUKCFtX2pvYlF1ZXVlLmlzRW1wdHko
KSk7Ci0KLSAgICBtX2N1cnJlbnRKb2IgPSBzdGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJK
b2JEYXRhPihtX2pvYlF1ZXVlLnRha2VGaXJzdCgpLmlzb2xhdGVkQ29weSgpKTsKLQotICAgIHN3
aXRjaCAobV9jdXJyZW50Sm9iLT50eXBlKSB7Ci0gICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlw
ZTo6UmVnaXN0ZXI6Ci0gICAgICAgIG1fc2VydmVyLnBvc3RUYXNrKGNyZWF0ZUNyb3NzVGhyZWFk
VGFzaygqdGhpcywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpydW5SZWdpc3RlckpvYiwgKm1fY3Vy
cmVudEpvYikpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlw
ZTo6VW5yZWdpc3RlcjoKLSAgICAgICAgbV9zZXJ2ZXIucG9zdFRhc2soY3JlYXRlQ3Jvc3NUaHJl
YWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJ1blVucmVnaXN0ZXJKb2IsICpt
X2N1cnJlbnRKb2IpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLWJvb2wgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmlzRW1w
dHkoKQotewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotCi0gICAgLy8gSGF2aW5nIG9y
IG5vdC1oYXZpbmcgYW4gbV91cGRhdGVWaWFDYWNoZSBmbGFnIGlzIGN1cnJlbnRseQotICAgIC8v
IHRoZSBzaWduYWwgYXMgdG8gd2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBlbXB0eSAoaS5lLiAi
bmV3IikgcmVnaXN0cmF0aW9uLgotICAgIC8vIFRoZXJlIHdpbGwgYmUgYSBtb3JlIGV4cGxpY2l0
IHNpZ25hbCBpbiB0aGUgbmVhciBmdXR1cmUuCi0gICAgcmV0dXJuICFtX3VwZGF0ZVZpYUNhY2hl
OwogfQogCiBTV1NlcnZlcldvcmtlciogU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmdldE5ld2VzdFdv
cmtlcigpCkBAIC0xNDEsMTYzICs2MywxMSBAQCBTV1NlcnZlcldvcmtlciogU1dTZXJ2ZXJSZWdp
c3RyYXRpb246OmdldE5ld2VzdFdvcmtlcigpCiAgICAgcmV0dXJuIG1fYWN0aXZlV29ya2VyLmdl
dCgpOwogfQogCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpydW5SZWdpc3RlckpvYihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQotewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkpOwotICAgIEFTU0VSVChqb2IudHlwZSA9PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0
ZXIpOwotCi0gICAgaWYgKCFzaG91bGRUcmVhdEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iu
c2NyaXB0VVJMKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJl
YWQoRXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiU2NyaXB0IFVS
TCBpcyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3b3J0aHkiKSB9KTsKLQotICAgIC8vIElmIHRoZSBv
cmlnaW4gb2Ygam9i4oCZcyBzY3JpcHQgdXJsIGlzIG5vdCBqb2LigJlzIHJlZmVycmVyJ3Mgb3Jp
Z2luLCB0aGVuOgotICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGpvYi5zY3Jp
cHRVUkwsIGpvYi5jbGllbnRDcmVhdGlvblVSTCkpCi0gICAgICAgIHJldHVybiByZWplY3RXaXRo
RXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCBBU0NJ
SUxpdGVyYWwoIlNjcmlwdCBvcmlnaW4gZG9lcyBub3QgbWF0Y2ggdGhlIHJlZ2lzdGVyaW5nIGNs
aWVudCdzIG9yaWdpbiIpIH0pOwotCi0gICAgLy8gSWYgdGhlIG9yaWdpbiBvZiBqb2LigJlzIHNj
b3BlIHVybCBpcyBub3Qgam9i4oCZcyByZWZlcnJlcidzIG9yaWdpbiwgdGhlbjoKLSAgICBpZiAo
IXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChqb2Iuc2NvcGVVUkwsIGpvYi5jbGllbnRDcmVh
dGlvblVSTCkpCi0gICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFk
KEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIlNjb3BlIG9yaWdp
biBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnaXN0ZXJpbmcgY2xpZW50J3Mgb3JpZ2luIikgfSk7Ci0K
LSAgICAvLyBJZiByZWdpc3RyYXRpb24gaXMgbm90IG51bGwgKGluIG91ciBwYXJsYW5jZSAiZW1w
dHkiKSwgdGhlbjoKLSAgICBpZiAoIWlzRW1wdHkoKSkgewotICAgICAgICBBU1NFUlQobV91cGRh
dGVWaWFDYWNoZSk7Ci0KLSAgICAgICAgbV91bmluc3RhbGxpbmcgPSBmYWxzZTsKLSAgICAgICAg
YXV0byogbmV3ZXN0V29ya2VyID0gZ2V0TmV3ZXN0V29ya2VyKCk7Ci0gICAgICAgIGlmIChuZXdl
c3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJM
LCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgpKSAmJiBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51
cGRhdGVWaWFDYWNoZSA9PSAqbV91cGRhdGVWaWFDYWNoZSkgewotICAgICAgICAgICAgcmVzb2x2
ZVdpdGhSZWdpc3RyYXRpb25Pbk1haW5UaHJlYWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fc2NvcGVVUkwgPSBqb2Iuc2NvcGVVUkwu
aXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgIG1fc2NvcGVVUkwucmVtb3ZlRnJhZ21lbnRJZGVudGlm
aWVyKCk7Ci0gICAgICAgIG1fc2NyaXB0VVJMID0gam9iLnNjcmlwdFVSTC5pc29sYXRlZENvcHko
KTsKLSAgICAgICAgbV91cGRhdGVWaWFDYWNoZSA9IGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVw
ZGF0ZVZpYUNhY2hlOwotICAgIH0KLQotICAgIHJ1blVwZGF0ZUpvYihqb2IpOwotfQotCi12b2lk
IFNXU2VydmVyUmVnaXN0cmF0aW9uOjpydW5VbnJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3Jr
ZXJKb2JEYXRhJiBqb2IpCi17Ci0gICAgLy8gSWYgdGhlIG9yaWdpbiBvZiBqb2LigJlzIHNjb3Bl
IHVybCBpcyBub3Qgam9iJ3MgY2xpZW50J3Mgb3JpZ2luLCB0aGVuOgotICAgIGlmICghcHJvdG9j
b2xIb3N0QW5kUG9ydEFyZUVxdWFsKGpvYi5zY29wZVVSTCwgam9iLmNsaWVudENyZWF0aW9uVVJM
KSkKLSAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0
aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiT3JpZ2luIG9mIHNjb3BlIFVS
TCBkb2VzIG5vdCBtYXRjaCB0aGUgY2xpZW50J3Mgb3JpZ2luIikgfSk7Ci0KLSAgICAvLyBMZXQg
cmVnaXN0cmF0aW9uIGJlIHRoZSByZXN1bHQgb2YgcnVubmluZyAiR2V0IFJlZ2lzdHJhdGlvbiIg
YWxnb3JpdGhtIHBhc3Npbmcgam9i4oCZcyBzY29wZSB1cmwgYXMgdGhlIGFyZ3VtZW50LgotICAg
IC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBudWxsLCB0aGVuOgotICAgIGlmIChpc0VtcHR5KCkgfHwg
bV91bmluc3RhbGxpbmcpIHsKLSAgICAgICAgLy8gSW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ug
d2l0aCBqb2IgYW5kIGZhbHNlLgotICAgICAgICByZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVz
dWx0T25NYWluVGhyZWFkKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8v
IFNldCByZWdpc3RyYXRpb27igJlzIHVuaW5zdGFsbGluZyBmbGFnLgotICAgIG1fdW5pbnN0YWxs
aW5nID0gdHJ1ZTsKLQotICAgIC8vIEludm9rZSBSZXNvbHZlIEpvYiBQcm9taXNlIHdpdGggam9i
IGFuZCB0cnVlLgotICAgIHJlc29sdmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJl
YWQodHJ1ZSk7Ci0KLSAgICAvLyBGSVhNRTogSW52b2tlIFRyeSBDbGVhciBSZWdpc3RyYXRpb24g
d2l0aCByZWdpc3RyYXRpb24uCi19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJ1blVw
ZGF0ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iKQotewotICAgIC8vIElmIHJl
Z2lzdHJhdGlvbiBpcyBudWxsIChpbiBvdXIgcGFybGFuY2UgImVtcHR5Iikgb3IgcmVnaXN0cmF0
aW9u4oCZcyB1bmluc3RhbGxpbmcgZmxhZyBpcyBzZXQsIHRoZW46Ci0gICAgaWYgKGlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0
aW9uRGF0YSB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBkYXRlIGEgbnVsbC9u
b25leGlzdGVudCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24iKSB9KTsKLSAgICBpZiAobV91
bmluc3RhbGxpbmcpCi0gICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhy
ZWFkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0
ZSBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiB0aGF0IGlzIHVuaW5zdGFsbGluZyIpIH0p
OwotCi0gICAgLy8gSWYgam9i4oCZcyBqb2IgdHlwZSBpcyB1cGRhdGUsIGFuZCBuZXdlc3RXb3Jr
ZXLigJlzIHNjcmlwdCB1cmwgZG9lcyBub3QgZXF1YWwgam9i4oCZcyBzY3JpcHQgdXJsIHdpdGgg
dGhlIGV4Y2x1ZGUgZnJhZ21lbnRzIGZsYWcgc2V0LCB0aGVuOgotICAgIGF1dG8qIG5ld2VzdFdv
cmtlciA9IGdldE5ld2VzdFdvcmtlcigpOwotICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgIWVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoam9iLnNjcmlwdFVSTCwgbmV3ZXN0V29ya2VyLT5z
Y3JpcHRVUkwoKSkpCi0gICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhy
ZWFkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0
ZSBhIHNlcnZpY2Ugd29ya2VyIHdpdGggYSByZXF1ZXN0ZWQgc2NyaXB0IFVSTCB3aG9zZSBuZXdl
c3Qgd29ya2VyIGhhcyBhIGRpZmZlcmVudCBzY3JpcHQgVVJMIikgfSk7Ci0KLSAgICBzdGFydFNj
cmlwdEZldGNoRnJvbU1haW5UaHJlYWQoKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlv
bjo6cmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChjb25zdCBFeGNlcHRpb25EYXRhJiBl
eGNlcHRpb24pCi17Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Ci0gICAgbV9zZXJ2ZXIu
cG9zdFRhc2tSZXBseShjcmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTV1NlcnZlclJlZ2lz
dHJhdGlvbjo6cmVqZWN0Q3VycmVudEpvYiwgZXhjZXB0aW9uKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OnJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25NYWluVGhyZWFkKCkKLXsK
LSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBtX3NlcnZlci5wb3N0VGFza1JlcGx5
KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpyZXNv
bHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYiwgZGF0YSgpKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJS
ZWdpc3RyYXRpb246OnJlc29sdmVXaXRoVW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQo
Ym9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKLXsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKLSAgICBtX3NlcnZlci5wb3N0VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhp
cywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpyZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9i
LCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkpOwotfQotCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9u
OjpzdGFydFNjcmlwdEZldGNoRnJvbU1haW5UaHJlYWQoKQotewotICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwotICAgIG1fc2VydmVyLnBvc3RUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRU
YXNrKCp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JDdXJy
ZW50Sm9iKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJlamVjdEN1cnJlbnRK
b2IoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKLXsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwotCi0gICAgbV9zZXJ2ZXIu
cmVqZWN0Sm9iKCptX2N1cnJlbnRKb2IsIGV4Y2VwdGlvbkRhdGEpOwotCi0gICAgZmluaXNoQ3Vy
cmVudEpvYigpOwotfQotCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpyZXNvbHZlQ3VycmVu
dFJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYgZGF0
YSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2N1cnJlbnRK
b2IpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2ItPnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5
cGU6OlJlZ2lzdGVyKTsKLQotICAgIG1fc2VydmVyLnJlc29sdmVSZWdpc3RyYXRpb25Kb2IoKm1f
Y3VycmVudEpvYiwgZGF0YSk7Ci0KLSAgICBmaW5pc2hDdXJyZW50Sm9iKCk7Ci19Ci0KLXZvaWQg
U1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJlc29sdmVDdXJyZW50VW5yZWdpc3RyYXRpb25Kb2IoYm9v
bCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2ItPnR5cGUg
PT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVucmVnaXN0ZXIpOwotCi0gICAgbV9zZXJ2ZXIucmVz
b2x2ZVVucmVnaXN0cmF0aW9uSm9iKCptX2N1cnJlbnRKb2IsIG1fcmVnaXN0cmF0aW9uS2V5LCB1
bnJlZ2lzdHJhdGlvblJlc3VsdCk7Ci0KLSAgICBmaW5pc2hDdXJyZW50Sm9iKCk7Ci19Ci0KLXZv
aWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKCkK
LXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2Ip
OwotCi0gICAgbV9zZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaCgqbV9jdXJyZW50Sm9iKTsKLX0KLQot
dm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6ZmluaXNoQ3VycmVudEpvYigpCi17Ci0gICAgQVNT
RVJUKG1fY3VycmVudEpvYik7Ci0gICAgQVNTRVJUKCFtX2pvYlRpbWVyLmlzQWN0aXZlKCkpOwot
Ci0gICAgbV9jdXJyZW50Sm9iID0gbnVsbHB0cjsKLSAgICBpZiAobV9qb2JRdWV1ZS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXJ0TmV4dEpvYigpOwotfQotCiBTZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YSBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6ZGF0YSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIHsgbV9yZWdpc3RyYXRpb25LZXksIGlkZW50aWZpZXIoKSwgbV9zY29w
ZVVSTCwgbV9zY3JpcHRVUkwsIG1fdXBkYXRlVmlhQ2FjaGUudmFsdWVfb3IoU2VydmljZVdvcmtl
clVwZGF0ZVZpYUNhY2hlOjpJbXBvcnRzKSB9OworICAgIHJldHVybiB7IG1fcmVnaXN0cmF0aW9u
S2V5LCBpZGVudGlmaWVyKCksIG1fYWN0aXZlU2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1fc2Nv
cGVVUkwsIG1fc2NyaXB0VVJMLCBtX3VwZGF0ZVZpYUNhY2hlIH07CiB9CiAKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lz
dHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clJlZ2lzdHJhdGlvbi5oCmluZGV4IDM1ZDdmNWYxNjMwNzY4Njg0ZTYzNWExY2JiZTA0NjVhNTk4
Y2M0M2EuLjhlMDcwYjVkYmU1ZDM5M2M0YTE1Yzk2YzhjMjUwMjY5MzMwYzE3YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyUmVnaXN0cmF0aW9uLmgKQEAgLTI4LDY4ICsyOCw0NyBAQAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKIAogI2luY2x1ZGUgIlNXU2VydmVyLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtl
ckpvYkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgot
I2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3Rm
L0lkZW50aWZpZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTV1NlcnZlcjsK
IGNsYXNzIFNXU2VydmVyV29ya2VyOwogc3RydWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgU2Vy
dmljZVdvcmtlckZldGNoUmVzdWx0OwogCiBjbGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbiA6IHB1
YmxpYyBUaHJlYWRTYWZlSWRlbnRpZmllZDxTV1NlcnZlclJlZ2lzdHJhdGlvbj4gewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFNXU2VydmVyUmVnaXN0cmF0aW9uKFNXU2VydmVyJiwgY29uc3QgU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpOwotICAgIFNXU2VydmVyUmVnaXN0cmF0aW9uKGNv
bnN0IFNXU2VydmVyUmVnaXN0cmF0aW9uJikgPSBkZWxldGU7CisgICAgU1dTZXJ2ZXJSZWdpc3Ry
YXRpb24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJV
cGRhdGVWaWFDYWNoZSwgY29uc3QgVVJMJiBzY29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwp
OwogICAgIH5TV1NlcnZlclJlZ2lzdHJhdGlvbigpOwogCi0gICAgdm9pZCBlbnF1ZXVlSm9iKGNv
bnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7Ci0gICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVk
KFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7
Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlv
biYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAg
dm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpOwotICAgIAotICAgIFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25EYXRhIGRhdGEoKSBjb25zdDsKKyAgICBjb25zdCBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkoKSBjb25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktl
eTsgfQogCi1wcml2YXRlOgotICAgIHZvaWQgam9iVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc3Rh
cnROZXh0Sm9iKCk7Ci0gICAgdm9pZCByZWplY3RDdXJyZW50Sm9iKGNvbnN0IEV4Y2VwdGlvbkRh
dGEmKTsKLSAgICB2b2lkIHJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJik7Ci0gICAgdm9pZCByZXNvbHZlQ3VycmVudFVucmVn
aXN0cmF0aW9uSm9iKGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpOwotICAgIHZvaWQgc3RhcnRT
Y3JpcHRGZXRjaEZvckN1cnJlbnRKb2IoKTsKLSAgICB2b2lkIGZpbmlzaEN1cnJlbnRKb2IoKTsK
LQotICAgIHZvaWQgcnVuUmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsK
LSAgICB2b2lkIHJ1blVucmVnaXN0ZXJKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsK
LSAgICB2b2lkIHJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwotCi0g
ICAgdm9pZCByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKGNvbnN0IEV4Y2VwdGlvbkRh
dGEmKTsKLSAgICB2b2lkIHJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25NYWluVGhyZWFkKCk7Ci0g
ICAgdm9pZCByZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0T25NYWluVGhyZWFkKGJvb2wp
OwotICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZyb21NYWluVGhyZWFkKCk7Ci0gICAgYm9vbCBp
c0VtcHR5KCk7CiAgICAgU1dTZXJ2ZXJXb3JrZXIqIGdldE5ld2VzdFdvcmtlcigpOworICAgIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIGRhdGEoKSBjb25zdDsKKworICAgIGJvb2wgaXNV
bmluc3RhbGxpbmcoKSBjb25zdCB7IHJldHVybiBtX3VuaW5zdGFsbGluZzsgfQorICAgIHZvaWQg
c2V0SXNVbmluc3RhbGxpbmcoYm9vbCB2YWx1ZSkgeyBtX3VuaW5zdGFsbGluZyA9IHZhbHVlOyB9
CiAKLSAgICBEZXF1ZTxTZXJ2aWNlV29ya2VySm9iRGF0YT4gbV9qb2JRdWV1ZTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpvYkRhdGE+IG1fY3VycmVudEpvYjsKKyAgICB2b2lk
IHNldExhc3RVcGRhdGVUaW1lKGRvdWJsZSB0aW1lKSB7IG1fbGFzdFVwZGF0ZVRpbWUgPSB0aW1l
OyB9CisgICAgU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlKCkgY29u
c3QgeyByZXR1cm4gbV91cGRhdGVWaWFDYWNoZTsgfQorCisgICAgdm9pZCBzZXRBY3RpdmVTZXJ2
aWNlV29ya2VySWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlmaWVyKSB7IG1fYWN0aXZlU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CisKK3ByaXZhdGU6CisgICAgU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKKyAgICBTZXJ2aWNlV29y
a2VyVXBkYXRlVmlhQ2FjaGUgbV91cGRhdGVWaWFDYWNoZTsKKyAgICBVUkwgbV9zY29wZVVSTDsK
KyAgICBVUkwgbV9zY3JpcHRVUkw7CiAKICAgICBib29sIG1fdW5pbnN0YWxsaW5nIHsgZmFsc2Ug
fTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJXb3JrZXI+IG1faW5zdGFsbGluZ1dvcmtl
cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJXb3JrZXI+IG1fd2FpdGluZ1dvcmtlcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJXb3JrZXI+IG1fYWN0aXZlV29ya2VyOwotICAg
IFVSTCBtX3Njb3BlVVJMOwotICAgIFVSTCBtX3NjcmlwdFVSTDsKLSAgICBzdGQ6Om9wdGlvbmFs
PFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZT4gbV91cGRhdGVWaWFDYWNoZTsKLSAgICAKLSAg
ICBkb3VibGUgbV9sYXN0VXBkYXRlVGltZSB7IDAgfTsKIAotICAgIFRpbWVyIG1fam9iVGltZXI7
Ci0gICAgU1dTZXJ2ZXImIG1fc2VydmVyOwotICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkgbV9yZWdpc3RyYXRpb25LZXk7CisgICAgdWludDY0X3QgbV9hY3RpdmVTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciB7IDAgfTsKKworICAgIGRvdWJsZSBtX2xhc3RVcGRhdGVUaW1lIHsgMCB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325634</attachid>
            <date>2017-11-01 14:32:15 -0700</date>
            <delta_ts>2017-11-01 15:32:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179126-20171101143215.patch</filename>
            <type>text/plain</type>
            <size>50162</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0Mjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI5ZTUwMDZjYTAxZjU1
ODg4NGQxYzQ1MjgwNTBjMmQyMjgxMzg2Mi4uNDcyMzM4ZTI0NDQ5NGIwZDYzZjg3Yzg3MmY3ZDc3
ZGE0Y2M3MDRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTExLTAxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU3BsaXQgSm9iUXVldWUgbG9n
aWMgb3V0IG9mIFNXU2VydmVyUmVnaXN0cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzkxMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBKb2JRdWV1ZSBsb2dpYyBvdXQgb2YgU1dTZXJ2
ZXJSZWdpc3RyYXRpb24gYW5kIGludG8gYSBTV1NlcnZlckpvYlF1ZXVlIGNsYXNzIHRvIG1hdGNo
IHRoZSBTZXJ2aWNlIFdvcmtlcnMKKyAgICAgICAgc3BlY2lmaWNhdGlvbiBtb3JlIGNsb3NlbHku
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRhaW5lcjo6
am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE6Omlzb2xhdGVkQ29weSBjb25zdCk6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmg6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhOjpkZWNv
ZGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6On5TV1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlcjo6Z2V0UmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjph
ZGRSZWdpc3RyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnJlbW92ZVJlZ2lz
dHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0
Q29udGV4dFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OnNjaGVkdWxlSm9i
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlNXU2VydmVySm9iUXVldWU6OlNXU2VydmVySm9iUXVldWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6flNXU2VydmVySm9iUXVldWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6ZW5xdWV1ZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlckpvYlF1ZXVlOjpzY3JpcHRGZXRjaEZpbmlzaGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnNjcmlwdENvbnRleHRTdGFydGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnN0YXJ0TmV4dEpvYik6CisgICAgICAgIChX
ZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5SZWdpc3RlckpvYik6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpydW5VbnJlZ2lzdGVySm9iKToKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVySm9iUXVldWU6OnJ1blVwZGF0ZUpvYik6CisgICAgICAgIChXZWJDb3JlOjpT
V1NlcnZlckpvYlF1ZXVlOjpyZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25N
YWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OnJlc29sdmVD
dXJyZW50UmVnaXN0cmF0aW9uSm9iT25NYWluVGhlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dT
ZXJ2ZXJKb2JRdWV1ZTo6cmVzb2x2ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpzdGFydFNjcmlwdEZldGNo
RnJvbU1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJKb2JRdWV1ZTo6cmVq
ZWN0Q3VycmVudEpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpvYlF1ZXVlOjpyZXNv
bHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlckpv
YlF1ZXVlOjpyZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iKToKKyAgICAgICAgKFdlYkNv
cmU6OlNXU2VydmVySm9iUXVldWU6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNXU2VydmVySm9iUXVldWU6OmZpbmlzaEN1cnJlbnRKb2IpOgorICAg
ICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5oOiBBZGRlZC4K
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjpTV1NlcnZlclJlZ2lz
dHJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6flNXU2Vy
dmVyUmVnaXN0cmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9u
OjpkYXRhIGNvbnN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
UmVnaXN0cmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlvbjo6
a2V5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVnaXN0cmF0aW9uOjppc1Vu
aW5zdGFsbGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclJlZ2lzdHJhdGlv
bjo6c2V0SXNVbmluc3RhbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OnNldExhc3RVcGRhdGVUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyUmVn
aXN0cmF0aW9uOjp1cGRhdGVWaWFDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTV1Nl
cnZlclJlZ2lzdHJhdGlvbjo6c2V0QWN0aXZlU2VydmljZVdvcmtlcklkZW50aWZpZXIpOgorCiAy
MDE3LTExLTAxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIGlu
bmVyVGV4dC0+cmVuZGVyQm94KCkgY2FuIGJlIG51bGwgaW4gSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNldFNlbGVjdGlvblJhbmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGM3NmY3OGIzODIzZThh
MzRjYmUwMzRkODk4MDBmNzdkZGEyNDFhMTEuLmMyYTQwMzNjYzA3ZmE1NmJmMDM2MWE0MjI0Zjdm
NmFmOWEzM2JlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0yMTc0LDYgKzIxNzQsNyBAQCB3b3JrZXJz
L3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAogCiB3b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXQ2xpZW50Q29ubmVjdGlvbi5jcHAKIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwCit3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuY3BwCiB3
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAogd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA3OGEzYWI1MGM0YWY2ODFl
Y2RhYzQ5NTM1ODM5Y2RiNzQ2ODc2Y2UuLjA2N2FhZWVkYWYyZWJkNzFlMTJlN2Q1ZDQwZmFmYmM1
NjJkNGI1YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTIxNjgsNiArMjE2OCw3IEBACiAJCTgzMDc4NEIyMUM1MkVFMkMwMDEw
NEQxRCAvKiBYTUxEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODMwNzg0QjExQzUyRUUxOTAwMTA0RDFEIC8qIFhNTERvY3VtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMwQTM2QkQx
REFDNUZBRDAwNkQ3RDA5IC8qIEpTTW91c2VFdmVudEluaXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMEEzNkJCMURBQzVGQTcwMDZEN0QwOSAvKiBK
U01vdXNlRXZlbnRJbml0LmggKi87IH07CiAJCTgzMTAyQjI3MUY5RUFERDkwMEU0MDRCOSAvKiBK
U0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgzMTAyQjIzMUY5RUFEQzIwMEU0MDRCOSAvKiBKU0V4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuaCAqLzsgfTsKKwkJODMxMUMwMDMxRkFBMkU5NTAwRTNDOEU1IC8qIFNXU2Vy
dmVySm9iUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDgzMTFDMDAyMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODMxMjBDNzExQzU2
RjNGQjAwMUNCMTEyIC8qIEhUTUxEYXRhRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODM0Qjg2QTcxQzU2RTgzQTAwRjNGMEUzIC8qIEhUTUxE
YXRhRWxlbWVudC5oICovOyB9OwogCQk4MzIxNTA3RTFGMjdFQTFCMDA5NUIxMzYgLyogTmF2aWdh
dG9yQmVhY29uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4MzIxNTA3QjFGMjdFQTE1MDA5NUIxMzYgLyogTmF2aWdhdG9yQmVhY29uLmggKi87IH07CiAJ
CTgzMkI4NDM0MTlEOEU1NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzMkI4NDMzMTlEOEU1
NTEwMEIyNjA1NSAvKiBTVkdBbmltYXRlRWxlbWVudEJhc2UuaCAqLzsgfTsKQEAgLTkzNzMsNiAr
OTM3NCw4IEBACiAJCTgzMEEzNkJCMURBQzVGQTcwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTW91c2VFdmVudEluaXQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMxMDJCMjMxRjlFQURDMjAwRTQwNEI5IC8q
IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0V4dGVuZGFibGVNZXNzYWdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJODMxMDJCMjUxRjlFQURDMjAwRTQwNEI5IC8qIEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V4dGVuZGFibGVN
ZXNzYWdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MzExQzAwMDFG
QUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTV1NlcnZlckpvYlF1ZXVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJODMxMUMwMDIxRkFBMkU4OTAwRTNDOEU1IC8qIFNXU2VydmVySm9iUXVl
dWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1dTZXJ2ZXJKb2JRdWV1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4MzFDNDZDMzFGOUVFNUUwMDBFQkQ0NTAg
LyogSlNFeHRlbmRhYmxlTWVzc2FnZUV2ZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudEN1c3RvbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzMUQxRjI5MUM1NkVDQTAwMEY1RjZDMCAvKiBI
VE1MRGF0YUVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SFRNTERhdGFFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODMyMTUw
N0ExRjI3RUExNTAwOTVCMTM2IC8qIE5hdmlnYXRvckJlYWNvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBOYXZpZ2F0b3JCZWFjb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTcxMzIsNiArMTcxMzUsOCBAQAogCQkJCTUxN0E1MkZGMUY0NzhDQ0UwMERDREMwQSAvKiBTV0Ns
aWVudENvbm5lY3Rpb24uaCAqLywKIAkJCQk1MTdBNTJFRjFGNDc1MzU5MDBEQ0RDMEEgLyogU1dT
ZXJ2ZXIuY3BwICovLAogCQkJCTUxN0E1MkVFMUY0NzUzNTkwMERDREMwQSAvKiBTV1NlcnZlci5o
ICovLAorCQkJCTgzMTFDMDAwMUZBQTJFODkwMEUzQzhFNSAvKiBTV1NlcnZlckpvYlF1ZXVlLmNw
cCAqLywKKwkJCQk4MzExQzAwMjFGQUEyRTg5MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5o
ICovLAogCQkJCTUxRjY0NTk1MUY0QTY4NjEwMEI1NERFRCAvKiBTV1NlcnZlclJlZ2lzdHJhdGlv
bi5jcHAgKi8sCiAJCQkJNTFGNjQ1OTQxRjRBNjg0RjAwQjU0REVEIC8qIFNXU2VydmVyUmVnaXN0
cmF0aW9uLmggKi8sCiAJCQkJNTE3QTUzNDMxRjUwQzE2MTAwRENEQzBBIC8qIFNXU2VydmVyV29y
a2VyLmNwcCAqLywKQEAgLTI5Mjg4LDYgKzI5MjkzLDcgQEAKIAkJCQk1MTdBNTMxRDFGNEI1M0Ix
MDBEQ0RDMEEgLyogU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NjY1
OERDOTFGQTI0Qjg3MDBGN0RENTQgLyogU1dDb250ZXh0TWFuYWdlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTE3QTUyRjAxRjQ3NTM1QjAwRENEQzBBIC8qIFNXU2VydmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQk4MzExQzAwMzFGQUEyRTk1MDBFM0M4RTUgLyogU1dTZXJ2ZXJKb2JRdWV1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFGNjQ1OTcxRjRBNjg2RjAwQjU0REVEIC8qIFNXU2VydmVyUmVn
aXN0cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTdBNTM0NjFGNTBDMTdGMDBEQ0RDMEEg
LyogU1dTZXJ2ZXJXb3JrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxODA4MTE3MTZGQ0Y5Q0Iw
MEI4MEQwNyAvKiBTeW5jaHJvbm91c0xvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNv
bnRhaW5lci5jcHAKaW5kZXggY2M3N2U4ODJiNjJlODMzMjRlY2I0YWZjZDJlYWNkYzYzN2RiMDQ5
Yi4uNDc2MjkxODMxYTliODAzOTBiZTgzYTNhY2QwM2E0OTM1MTI0MWEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFp
bmVyLmNwcApAQCAtMjQ0LDggKzI0NCw4IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6
am9iUmVzb2x2ZWRXaXRoUmVnaXN0cmF0aW9uKFNlcnZpY2VXb3JrZXJKb2ImIGpvYiwKIAogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgcHJvcGVyIHNlbGVjdGlvbiBvZiBzZXJ2aWNlIHdvcmtlcnMu
CiAgICAgYXV0byogYWN0aXZlU2VydmljZVdvcmtlciA9IGNvbnRleHQtPmFjdGl2ZVNlcnZpY2VX
b3JrZXIoKTsKLSAgICBpZiAoIWFjdGl2ZVNlcnZpY2VXb3JrZXIgfHwgYWN0aXZlU2VydmljZVdv
cmtlci0+aWRlbnRpZmllcigpICE9IGRhdGEuaWRlbnRpZmllcikgewotICAgICAgICBjb250ZXh0
LT5zZXRBY3RpdmVTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXI6OmNyZWF0ZSgqY29udGV4dCwg
ZGF0YS5pZGVudGlmaWVyLCBkYXRhLnNjcmlwdFVSTCkpOworICAgIGlmICghYWN0aXZlU2Vydmlj
ZVdvcmtlciB8fCBhY3RpdmVTZXJ2aWNlV29ya2VyLT5pZGVudGlmaWVyKCkgIT0gZGF0YS5hY3Rp
dmVTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgeworICAgICAgICBjb250ZXh0LT5zZXRBY3RpdmVT
ZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXI6OmNyZWF0ZSgqY29udGV4dCwgZGF0YS5hY3RpdmVT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZGF0YS5zY3JpcHRVUkwpKTsKICAgICAgICAgYWN0aXZl
U2VydmljZVdvcmtlciA9IGNvbnRleHQtPmFjdGl2ZVNlcnZpY2VXb3JrZXIoKTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuY3BwCmluZGV4IDZjNjdhYTY1N2I5MzNiZDU4MDhj
YThmZjY5M2EzZWRjMzUyZmE5YTYuLjY4Nzk0ZDQyZDVkZTgzYThlZDdmMWU0OWU2YWUxZmJlOTVm
ZTgyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyUmVnaXN0cmF0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmNwcApAQCAtMzUsNiArMzUsNyBA
QCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YTo6aXNvbGF0ZWRDb3B5KCkgY29ucwogICAgIHJldHVybiB7CiAgICAgICAgIGtleS5pc29s
YXRlZENvcHkoKSwKICAgICAgICAgaWRlbnRpZmllciwKKyAgICAgICAgYWN0aXZlU2VydmljZVdv
cmtlcklkZW50aWZpZXIsCiAgICAgICAgIHNjb3BlVVJMLmlzb2xhdGVkQ29weSgpLAogICAgICAg
ICBzY3JpcHRVUkwuaXNvbGF0ZWRDb3B5KCksCiAgICAgICAgIHVwZGF0ZVZpYUNhY2hlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbkRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uRGF0YS5oCmluZGV4IDc0Yzk1ZjExNTVkM2FmNjExMmE1Njc0MjE1NThj
Y2Q4MGI5ODA1ZGUuLmRjNTVmNjZjODYzY2YxMmJjOWY4YjAwOTkyM2ZmYjk1MDJjODcwM2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oCkBAIC0zNiw2ICszNiw3IEBAIGVudW0gY2xhc3Mg
U2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOwogc3RydWN0IFNlcnZpY2VXb3JrZXJSZWdpc3Ry
YXRpb25EYXRhIHsKICAgICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IGtleTsKICAgICB1
aW50NjRfdCBpZGVudGlmaWVyOworICAgIHVpbnQ2NF90IGFjdGl2ZVNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyOyAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIHBhcnQgb2YgcmVnaXN0cmF0aW9u
RGF0YS4KICAgICBVUkwgc2NvcGVVUkw7CiAgICAgVVJMIHNjcmlwdFVSTDsKICAgICBTZXJ2aWNl
V29ya2VyVXBkYXRlVmlhQ2FjaGUgdXBkYXRlVmlhQ2FjaGU7CkBAIC01MCw3ICs1MSw3IEBAIHN0
cnVjdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSB7CiB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogdm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgZW5jb2RlciA8PCBrZXkgPDwgaWRlbnRpZmllciA8PCBz
Y29wZVVSTCA8PCBzY3JpcHRVUkwgPDwgdXBkYXRlVmlhQ2FjaGU7CisgICAgZW5jb2RlciA8PCBr
ZXkgPDwgaWRlbnRpZmllciA8PCBhY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllciA8PCBzY29w
ZVVSTCA8PCBzY3JpcHRVUkwgPDwgdXBkYXRlVmlhQ2FjaGU7CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+CkBAIC02Niw2ICs2NywxMSBAQCBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhPiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YTo6ZGVjbwogICAg
IGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAorICAgIHN0
ZDo6b3B0aW9uYWw8dWludDY0X3Q+IGFjdGl2ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOworICAg
IGRlY29kZXIgPj4gYWN0aXZlU2VydmljZVdvcmtlcklkZW50aWZpZXI7CisgICAgaWYgKCFhY3Rp
dmVTZXJ2aWNlV29ya2VySWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KwogICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBzY29wZVVSTDsKICAgICBkZWNvZGVyID4+IHNjb3Bl
VVJMOwogICAgIGlmICghc2NvcGVVUkwpCkBAIC04MSw3ICs4Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGE+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhOjpkZWNvCiAgICAgaWYgKCF1cGRhdGVWaWFDYWNoZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHJldHVybiB7IHsgV1RGTW92ZSgqa2V5KSwgV1RGTW92ZSgqaWRlbnRp
ZmllciksIFdURk1vdmUoKnNjb3BlVVJMKSwgV1RGTW92ZSgqc2NyaXB0VVJMKSwgV1RGTW92ZSgq
dXBkYXRlVmlhQ2FjaGUpIH0gfTsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKmtleSksIFdURk1v
dmUoKmlkZW50aWZpZXIpLCBXVEZNb3ZlKCphY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllciks
IFdURk1vdmUoKnNjb3BlVVJMKSwgV1RGTW92ZSgqc2NyaXB0VVJMKSwgV1RGTW92ZSgqdXBkYXRl
VmlhQ2FjaGUpIH0gfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IGVmMjc4NzU1
ZjA3NWNmNzY5MWM2YzJmM2FjNDZlYzgyYzJlYzFhYjQuLmU2Zjc3N2Q3ODE4ODM0NzRlOGI2NGJm
MTI1ZWI3YzlhMWRiOTdhYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkRhdGEuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCisjaW5jbHVkZSAiU1dTZXJ2ZXJKb2JRdWV1ZS5oIgogI2luY2x1ZGUgIlNXU2VydmVy
UmVnaXN0cmF0aW9uLmgiCiAjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKICNpbmNsdWRlICJT
ZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKQEAgLTU3LDYgKzU4LDcgQEAgU1dTZXJ2ZXI6On5T
V1NlcnZlcigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQobV9jb25uZWN0aW9ucy5pc0VtcHR5KCkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKG1fcmVnaXN0cmF0aW9ucy5pc0VtcHR5KCkpOworICAgIFJF
TEVBU0VfQVNTRVJUKG1fam9iUXVldWVzLmlzRW1wdHkoKSk7CiAKICAgICBBU1NFUlQobV90YXNr
UXVldWUuaXNFbXB0eSgpKTsKICAgICBBU1NFUlQobV90YXNrUmVwbHlRdWV1ZS5pc0VtcHR5KCkp
OwpAQCAtNjgsNiArNzAsMjUgQEAgU1dTZXJ2ZXI6On5TV1NlcnZlcigpCiAgICAgQVNTRVJUKCFt
X3Rhc2tUaHJlYWQpOwogfQogCitTV1NlcnZlclJlZ2lzdHJhdGlvbiogU1dTZXJ2ZXI6OmdldFJl
Z2lzdHJhdGlvbihjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiByZWdpc3RyYXRp
b25LZXkpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgcmV0dXJuIG1fcmVn
aXN0cmF0aW9ucy5nZXQocmVnaXN0cmF0aW9uS2V5KTsKK30KKwordm9pZCBTV1NlcnZlcjo6YWRk
UmVnaXN0cmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4mJiByZWdp
c3RyYXRpb24pCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byBrZXkg
PSByZWdpc3RyYXRpb24tPmtleSgpOworICAgIG1fcmVnaXN0cmF0aW9ucy5hZGQoa2V5LCBXVEZN
b3ZlKHJlZ2lzdHJhdGlvbikpOworfQorCit2b2lkIFNXU2VydmVyOjpyZW1vdmVSZWdpc3RyYXRp
b24oY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5KQor
eworICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIG1fcmVnaXN0cmF0aW9ucy5yZW1v
dmUocmVnaXN0cmF0aW9uS2V5KTsKK30KKwogdm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2No
ZWR1bGVKb2JJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSkKIHsK
ICAgICBMT0coU2VydmljZVdvcmtlciwgIlNjaGVkdWxpbmcgU2VydmljZVdvcmtlciBqb2IgJSIg
UFJJdTY0ICItJSIgUFJJdTY0ICIgaW4gc2VydmVyIiwgam9iRGF0YS5jb25uZWN0aW9uSWRlbnRp
ZmllcigpLCBqb2JEYXRhLmlkZW50aWZpZXIoKSk7CkBAIC04Niw5ICsxMDcsOSBAQCB2b2lkIFNX
U2VydmVyOjpDb25uZWN0aW9uOjpzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cgogICAgIG1fc2VydmVyLnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KCp0aGlzLCByZWdpc3RyYXRpb25LZXksIHdvcmtlcklELCBtZXNzYWdlKTsKIH0KIAotdm9pZCBT
V1NlcnZlcjo6Q29ubmVjdGlvbjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgU2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCB1aW50NjRfdCBpZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQordm9pZCBTV1NlcnZlcjo6Q29ubmVjdGlvbjo6c2Ny
aXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVn
aXN0cmF0aW9uS2V5LCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB3b3JrZXJJRCkKIHsKLSAgICBtX3NlcnZlci5zY3JpcHRDb250ZXh0U3RhcnRlZCgqdGhp
cywgcmVnaXN0cmF0aW9uS2V5LCBpZGVudGlmaWVyLCB3b3JrZXJJRCk7CisgICAgbV9zZXJ2ZXIu
c2NyaXB0Q29udGV4dFN0YXJ0ZWQoKnRoaXMsIHJlZ2lzdHJhdGlvbktleSwgc2VydmljZVdvcmtl
cklkZW50aWZpZXIsIHdvcmtlcklEKTsKIH0KIAogU1dTZXJ2ZXI6OlNXU2VydmVyKCkKQEAgLTEw
Miw5ICsxMjMsOSBAQCB2b2lkIFNXU2VydmVyOjpzY2hlZHVsZUpvYihjb25zdCBTZXJ2aWNlV29y
a2VySm9iRGF0YSYgam9iRGF0YSkKIHsKICAgICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlu
cyhqb2JEYXRhLmNvbm5lY3Rpb25JZGVudGlmaWVyKCkpKTsKIAotICAgIGF1dG8gcmVzdWx0ID0g
bV9yZWdpc3RyYXRpb25zLmFkZChqb2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpLCBudWxscHRyKTsK
KyAgICBhdXRvIHJlc3VsdCA9IG1fam9iUXVldWVzLmFkZChqb2JEYXRhLnJlZ2lzdHJhdGlvbktl
eSgpLCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9u
PigqdGhpcywgam9iRGF0YS5yZWdpc3RyYXRpb25LZXkoKSk7CisgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVySm9iUXVldWU+KCp0aGlzLCBq
b2JEYXRhLnJlZ2lzdHJhdGlvbktleSgpKTsKIAogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3It
PnZhbHVlKTsKIApAQCAtMTU2LDI3ICsxNzcsMjcgQEAgdm9pZCBTV1NlcnZlcjo6c2NyaXB0RmV0
Y2hGaW5pc2hlZChDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBTZXJ2aWNlV29ya2VyRmUK
IAogICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25zLmNvbnRhaW5zKHJlc3VsdC5jb25uZWN0aW9uSWRl
bnRpZmllcikpOwogCi0gICAgYXV0byByZWdpc3RyYXRpb24gPSBtX3JlZ2lzdHJhdGlvbnMuZ2V0
KHJlc3VsdC5yZWdpc3RyYXRpb25LZXkpOwotICAgIGlmICghcmVnaXN0cmF0aW9uKQorICAgIGF1
dG8gam9iUXVldWUgPSBtX2pvYlF1ZXVlcy5nZXQocmVzdWx0LnJlZ2lzdHJhdGlvbktleSk7Cisg
ICAgaWYgKCFqb2JRdWV1ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcmVnaXN0cmF0aW9uLT5z
Y3JpcHRGZXRjaEZpbmlzaGVkKGNvbm5lY3Rpb24sIHJlc3VsdCk7CisgICAgam9iUXVldWUtPnNj
cmlwdEZldGNoRmluaXNoZWQoY29ubmVjdGlvbiwgcmVzdWx0KTsKIH0KIAogdm9pZCBTV1NlcnZl
cjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBT
dHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1f
Y29ubmVjdGlvbnMuY29udGFpbnMoY29ubmVjdGlvbi5pZGVudGlmaWVyKCkpKTsKICAgICAKLSAg
ICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gbV9yZWdpc3RyYXRpb25zLmdldChyZWdpc3RyYXRp
b25LZXkpKQotICAgICAgICByZWdpc3RyYXRpb24tPnNjcmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0
KGNvbm5lY3Rpb24sIHdvcmtlcklELCBtZXNzYWdlKTsKKyAgICBpZiAoYXV0byogam9iUXVldWUg
PSBtX2pvYlF1ZXVlcy5nZXQocmVnaXN0cmF0aW9uS2V5KSkKKyAgICAgICAgam9iUXVldWUtPnNj
cmlwdENvbnRleHRGYWlsZWRUb1N0YXJ0KGNvbm5lY3Rpb24sIHdvcmtlcklELCBtZXNzYWdlKTsK
IH0KIAotdm9pZCBTV1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoQ29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9u
S2V5LCB1aW50NjRfdCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQordm9pZCBT
V1NlcnZlcjo6c2NyaXB0Q29udGV4dFN0YXJ0ZWQoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCB1aW50NjRf
dCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCkKIHsKICAg
ICBBU1NFUlQobV9jb25uZWN0aW9ucy5jb250YWlucyhjb25uZWN0aW9uLmlkZW50aWZpZXIoKSkp
OwogCi0gICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fcmVnaXN0cmF0aW9ucy5nZXQocmVn
aXN0cmF0aW9uS2V5KSkKLSAgICAgICAgcmVnaXN0cmF0aW9uLT5zY3JpcHRDb250ZXh0U3RhcnRl
ZChjb25uZWN0aW9uLCBpZGVudGlmaWVyLCB3b3JrZXJJRCk7CisgICAgaWYgKGF1dG8qIGpvYlF1
ZXVlID0gbV9qb2JRdWV1ZXMuZ2V0KHJlZ2lzdHJhdGlvbktleSkpCisgICAgICAgIGpvYlF1ZXVl
LT5zY3JpcHRDb250ZXh0U3RhcnRlZChjb25uZWN0aW9uLCBzZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgd29ya2VySUQpOwogfQogCiBSZWY8U1dTZXJ2ZXJXb3JrZXI+IFNXU2VydmVyOjp1cGRhdGVX
b3JrZXIoQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYgcmVnaXN0cmF0aW9uS2V5LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIFdvcmtlclR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaAppbmRleCAxZDY4NTk3MTk5MDdiOWYyNTBjNmVlN2U5NjIz
MzIzY2Y1NzFjZTAxLi4zYmQ1N2Q0ZTgwNzVmZTc2YTZkYmNiNmU0MGM0NGFkNDBiYWMwZDkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5o
CkBAIC00MCw2ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgU1dTZXJ2
ZXJKb2JRdWV1ZTsKIGNsYXNzIFNXU2VydmVyUmVnaXN0cmF0aW9uOwogY2xhc3MgU1dTZXJ2ZXJX
b3JrZXI7CiBzdHJ1Y3QgRXhjZXB0aW9uRGF0YTsKQEAgLTU1LDcgKzU2LDcgQEAgcHVibGljOgog
ICAgICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Db25uZWN0aW9uKCk7CiAKICAgICAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKTsKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzY3JpcHRDb250
ZXh0U3RhcnRlZChjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiwgdWludDY0X3Qg
aWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3b3JrZXJJRCk7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbktleSYsIHVpbnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHdvcmtlcklEKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgQ29u
bmVjdGlvbihTV1NlcnZlciYsIHVpbnQ2NF90IGlkZW50aWZpZXIpOwpAQCAtODAsNiArODEsMTAg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNXU2VydmVyKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgflNXU2VydmVyKCk7CiAKKyAgICBTV1NlcnZlclJlZ2lzdHJhdGlvbiogZ2V0UmVnaXN0
cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKKyAgICB2b2lkIGFk
ZFJlZ2lzdHJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2ZXJSZWdpc3RyYXRpb24+JiYpOwor
ICAgIHZvaWQgcmVtb3ZlUmVnaXN0cmF0aW9uKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmKTsKKwogICAgIHZvaWQgc2NoZWR1bGVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRh
dGEmKTsKICAgICB2b2lkIHJlamVjdEpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYsIGNv
bnN0IEV4Y2VwdGlvbkRhdGEmKTsKICAgICB2b2lkIHJlc29sdmVSZWdpc3RyYXRpb25Kb2IoY29u
c3QgU2VydmljZVdvcmtlckpvYkRhdGEmLCBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
RGF0YSYpOwpAQCAtMTAwLDEwICsxMDUsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2NyaXB0
RmV0Y2hGaW5pc2hlZChDb25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0
Jik7CiAgICAgdm9pZCBzY3JpcHRDb250ZXh0RmFpbGVkVG9TdGFydChDb25uZWN0aW9uJiwgY29u
c3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChD
b25uZWN0aW9uJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYsIHVpbnQ2NF90
IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgd29ya2VySUQpOworICAgIHZvaWQgc2NyaXB0Q29u
dGV4dFN0YXJ0ZWQoQ29ubmVjdGlvbiYsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25L
ZXkmLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3b3Jr
ZXJJRCk7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb25uZWN0aW9uKj4gbV9jb25uZWN0aW9u
czsKICAgICBIYXNoTWFwPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6dW5pcXVl
X3B0cjxTV1NlcnZlclJlZ2lzdHJhdGlvbj4+IG1fcmVnaXN0cmF0aW9uczsKKyAgICBIYXNoTWFw
PFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXksIHN0ZDo6dW5pcXVlX3B0cjxTV1NlcnZlckpv
YlF1ZXVlPj4gbV9qb2JRdWV1ZXM7CiAKICAgICBIYXNoTWFwPFN0cmluZywgUmVmPFNXU2VydmVy
V29ya2VyPj4gbV93b3JrZXJzQnlJRDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1ZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjIwMzQ1ZjI5NTRlYjdhMTJkNDk0MTNjMjQ5NzZlZGRkZmQ2ZGQyNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJKb2JRdWV1
ZS5jcHAKQEAgLTAsMCArMSwyOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU1dTZXJ2ZXJKb2JRdWV1ZS5oIgorCisjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQorCisjaW5jbHVkZSAiRXhjZXB0aW9uRGF0YS5oIgorI2luY2x1ZGUgIlNXU2VydmVyLmgi
CisjaW5jbHVkZSAiU1dTZXJ2ZXJXb3JrZXIuaCIKKyNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdC5oIgorI2luY2x1ZGUgIlNlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhLmgiCisjaW5jbHVkZSAiU2VydmljZVdvcmtlclVwZGF0
ZVZpYUNhY2hlLmgiCisjaW5jbHVkZSAiV29ya2VyVHlwZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1NXU2VydmVySm9iUXVldWU6OlNXU2VydmVySm9iUXVldWUoU1dTZXJ2ZXImIHNlcnZl
ciwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYga2V5KQorICAgIDogbV9qb2JU
aW1lcigqdGhpcywgJlNXU2VydmVySm9iUXVldWU6OnN0YXJ0TmV4dEpvYikKKyAgICAsIG1fc2Vy
dmVyKHNlcnZlcikKKyAgICAsIG1fcmVnaXN0cmF0aW9uS2V5KGtleSkKK3sKK30KKworU1dTZXJ2
ZXJKb2JRdWV1ZTo6flNXU2VydmVySm9iUXVldWUoKQoreworICAgIEFTU0VSVChtX2pvYlF1ZXVl
LmlzRW1wdHkoKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6ZW5xdWV1ZUpvYihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9iRGF0YSkKK3sKKyAgICAvLyBGSVhNRTogUGVyIHRo
ZSBzcGVjLCBjaGVjayBpZiB0aGlzIGpvYiBpcyBlcXVpdmFsZW50IHRvIHRoZSBsYXN0IGpvYiBv
biB0aGUgcXVldWUuCisgICAgLy8gSWYgaXQgaXMsIHN0YWNrIGl0IGFsb25nIHdpdGggdGhhdCBq
b2IuCisKKyAgICBtX2pvYlF1ZXVlLmFwcGVuZChqb2JEYXRhKTsKKworICAgIGlmIChtX2N1cnJl
bnRKb2IpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9qb2JUaW1lci5pc0FjdGl2ZSgp
KQorICAgICAgICBtX2pvYlRpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOworfQorCit2b2lkIFNXU2Vy
dmVySm9iUXVldWU6OnNjcmlwdEZldGNoRmluaXNoZWQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYgcmVzdWx0KQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3VycmVudEpvYiAmJiBtX2N1
cnJlbnRKb2ItPmlkZW50aWZpZXIoKSA9PSByZXN1bHQuam9iSWRlbnRpZmllcik7CisKKyAgICBp
ZiAoIXJlc3VsdC5zY3JpcHRFcnJvci5pc051bGwoKSkgeworICAgICAgICByZWplY3RDdXJyZW50
Sm9iKEV4Y2VwdGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwg
IiwgbV9jdXJyZW50Sm9iLT5zY3JpcHRVUkwuc3RyaW5nKCksICIgZmV0Y2ggcmVzdWx0ZWQgaW4g
ZXJyb3I6ICIsIHJlc3VsdC5zY3JpcHRFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSB9KTsK
KworICAgICAgICAvLyBJZiBuZXdlc3RXb3JrZXIgaXMgbnVsbCwgaW52b2tlIENsZWFyIFJlZ2lz
dHJhdGlvbiBhbGdvcml0aG0gcGFzc2luZyB0aGlzIHJlZ2lzdHJhdGlvbiBhcyBpdHMgYXJndW1l
bnQuCisgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBoYXZlICJjbGVhciByZWdpc3RyYXRpb24i
IHlldC4KKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IElmIHRoZSBz
Y3JpcHQgZGF0YSBtYXRjaGVzIGJ5dGUtZm9yLWJ5dGUgd2l0aCB0aGUgZXhpc3RpbmcgbmV3ZXN0
V29ya2VyLAorICAgIC8vIHRoZW4gcmVzb2x2ZSBhbmQgZmluaXNoIHRoZSBqb2Igd2l0aG91dCBk
b2luZyBhbnl0aGluZyBmdXJ0aGVyLgorCisgICAgLy8gRklYTUU6IFN1cHBvcnQgdGhlIHByb3Bl
ciB3b3JrZXIgdHlwZSAoY2xhc3NpYyB2cyBtb2R1bGUpCisgICAgbV9zZXJ2ZXIudXBkYXRlV29y
a2VyKGNvbm5lY3Rpb24sIG1fcmVnaXN0cmF0aW9uS2V5LCBtX2N1cnJlbnRKb2ItPnNjcmlwdFVS
TCwgcmVzdWx0LnNjcmlwdCwgV29ya2VyVHlwZTo6Q2xhc3NpYyk7Cit9CisKK3ZvaWQgU1dTZXJ2
ZXJKb2JRdWV1ZTo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rp
b24mLCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogSW5zdGFsbCBoYXMgZmFp
bGVkLiBSdW4gdGhlIGluc3RhbGwgZmFpbGVkIHN1YnN0ZXBzCisgICAgLy8gUnVuIHRoZSBVcGRh
dGUgV29ya2VyIFN0YXRlIGFsZ29yaXRobSBwYXNzaW5nIHJlZ2lzdHJhdGlvbuKAmXMgaW5zdGFs
bGluZyB3b3JrZXIgYW5kIHJlZHVuZGFudCBhcyB0aGUgYXJndW1lbnRzLgorICAgIC8vIFJ1biB0
aGUgVXBkYXRlIFJlZ2lzdHJhdGlvbiBTdGF0ZSBhbGdvcml0aG0gcGFzc2luZyByZWdpc3RyYXRp
b24sICJpbnN0YWxsaW5nIiBhbmQgbnVsbCBhcyB0aGUgYXJndW1lbnRzLgorICAgIC8vIElmIG5l
d2VzdFdvcmtlciBpcyBudWxsLCBpbnZva2UgQ2xlYXIgUmVnaXN0cmF0aW9uIGFsZ29yaXRobSBw
YXNzaW5nIHJlZ2lzdHJhdGlvbiBhcyBpdHMgYXJndW1lbnQuCisKKyAgICBVTlVTRURfUEFSQU0o
d29ya2VySUQpOworICAgIFVOVVNFRF9QQVJBTShtZXNzYWdlKTsKK30KKwordm9pZCBTV1NlcnZl
ckpvYlF1ZXVlOjpzY3JpcHRDb250ZXh0U3RhcnRlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIHVp
bnQ2NF90IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHdvcmtlcklEKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgVU5VU0VEX1BBUkFNKHdvcmtlcklE
KTsKKworICAgIG1fc2VydmVyLnBvc3RUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywg
JlNXU2VydmVySm9iUXVldWU6OnJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iT25NYWluVGhl
YWQsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1
ZTo6c3RhcnROZXh0Sm9iKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVCghbV9jdXJyZW50Sm9iKTsKKyAgICBBU1NFUlQoIW1fam9iUXVldWUuaXNFbXB0eSgpKTsK
KworICAgIG1fY3VycmVudEpvYiA9IHN0ZDo6bWFrZV91bmlxdWU8U2VydmljZVdvcmtlckpvYkRh
dGE+KG1fam9iUXVldWUudGFrZUZpcnN0KCkuaXNvbGF0ZWRDb3B5KCkpOworCisgICAgc3dpdGNo
IChtX2N1cnJlbnRKb2ItPnR5cGUpIHsKKyAgICBjYXNlIFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpS
ZWdpc3RlcjoKKyAgICAgICAgbV9zZXJ2ZXIucG9zdFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNr
KCp0aGlzLCAmU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IsICptX2N1cnJlbnRKb2Ip
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU2VydmljZVdvcmtlckpvYlR5cGU6OlVucmVn
aXN0ZXI6CisgICAgICAgIG1fc2VydmVyLnBvc3RUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygq
dGhpcywgJlNXU2VydmVySm9iUXVldWU6OnJ1blVucmVnaXN0ZXJKb2IsICptX2N1cnJlbnRKb2Ip
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJKb2JRdWV1ZTo6cnVuUmVnaXN0ZXJKb2IoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoam9iLnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVy
KTsKKworICAgIGlmICghc2hvdWxkVHJlYXRBc1BvdGVudGlhbGx5VHJ1c3R3b3J0aHkoam9iLnNj
cmlwdFVSTCkpCisgICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFk
KEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIlNjcmlwdCBVUkwg
aXMgbm90IHBvdGVudGlhbGx5IHRydXN0d29ydGh5IikgfSk7CisKKyAgICAvLyBJZiB0aGUgb3Jp
Z2luIG9mIGpvYuKAmXMgc2NyaXB0IHVybCBpcyBub3Qgam9i4oCZcyByZWZlcnJlcidzIG9yaWdp
biwgdGhlbjoKKyAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVhbChqb2Iuc2NyaXB0
VVJMLCBqb2IuY2xpZW50Q3JlYXRpb25VUkwpKQorICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4
Y2VwdGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlM
aXRlcmFsKCJTY3JpcHQgb3JpZ2luIGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3RlcmluZyBjbGll
bnQncyBvcmlnaW4iKSB9KTsKKworICAgIC8vIElmIHRoZSBvcmlnaW4gb2Ygam9i4oCZcyBzY29w
ZSB1cmwgaXMgbm90IGpvYuKAmXMgcmVmZXJyZXIncyBvcmlnaW4sIHRoZW46CisgICAgaWYgKCFw
cm90b2NvbEhvc3RBbmRQb3J0QXJlRXF1YWwoam9iLnNjb3BlVVJMLCBqb2IuY2xpZW50Q3JlYXRp
b25VUkwpKQorICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFpblRocmVhZChF
eGNlcHRpb25EYXRhIHsgU2VjdXJpdHlFcnJvciwgQVNDSUlMaXRlcmFsKCJTY29wZSBvcmlnaW4g
ZG9lcyBub3QgbWF0Y2ggdGhlIHJlZ2lzdGVyaW5nIGNsaWVudCdzIG9yaWdpbiIpIH0pOworCisg
ICAgLy8gSWYgcmVnaXN0cmF0aW9uIGlzIG5vdCBudWxsIChpbiBvdXIgcGFybGFuY2UgImVtcHR5
IiksIHRoZW46CisgICAgaWYgKGF1dG8qIHJlZ2lzdHJhdGlvbiA9IG1fc2VydmVyLmdldFJlZ2lz
dHJhdGlvbihtX3JlZ2lzdHJhdGlvbktleSkpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLT5zZXRJ
c1VuaW5zdGFsbGluZyhmYWxzZSk7CisgICAgICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IHJlZ2lz
dHJhdGlvbi0+Z2V0TmV3ZXN0V29ya2VyKCk7CisgICAgICAgIGlmIChuZXdlc3RXb3JrZXIgJiYg
ZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3Jr
ZXItPnNjcmlwdFVSTCgpKSAmJiBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNo
ZSA9PSByZWdpc3RyYXRpb24tPnVwZGF0ZVZpYUNhY2hlKCkpIHsKKyAgICAgICAgICAgIHJlc29s
dmVXaXRoUmVnaXN0cmF0aW9uT25NYWluVGhyZWFkKCpyZWdpc3RyYXRpb24pOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBuZXdSZWdp
c3RyYXRpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNXU2VydmVyUmVnaXN0cmF0aW9uPihtX3JlZ2lz
dHJhdGlvbktleSwgam9iLnJlZ2lzdHJhdGlvbk9wdGlvbnMudXBkYXRlVmlhQ2FjaGUsIGpvYi5z
Y29wZVVSTCwgam9iLnNjcmlwdFVSTCk7CisgICAgICAgIG1fc2VydmVyLmFkZFJlZ2lzdHJhdGlv
bihXVEZNb3ZlKG5ld1JlZ2lzdHJhdGlvbikpOworICAgIH0KKworICAgIHJ1blVwZGF0ZUpvYihq
b2IpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJ1blVucmVnaXN0ZXJKb2IoY29uc3Qg
U2VydmljZVdvcmtlckpvYkRhdGEmIGpvYikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKKworICAgIC8vIElmIHRoZSBvcmlnaW4gb2Ygam9i4oCZcyBzY29wZSB1cmwgaXMgbm90IGpv
YidzIGNsaWVudCdzIG9yaWdpbiwgdGhlbjoKKyAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRB
cmVFcXVhbChqb2Iuc2NvcGVVUkwsIGpvYi5jbGllbnRDcmVhdGlvblVSTCkpCisgICAgICAgIHJl
dHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBTZWN1
cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIk9yaWdpbiBvZiBzY29wZSBVUkwgZG9lcyBub3QgbWF0
Y2ggdGhlIGNsaWVudCdzIG9yaWdpbiIpIH0pOworCisgICAgLy8gTGV0IHJlZ2lzdHJhdGlvbiBi
ZSB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgIkdldCBSZWdpc3RyYXRpb24iIGFsZ29yaXRobSBwYXNz
aW5nIGpvYuKAmXMgc2NvcGUgdXJsIGFzIHRoZSBhcmd1bWVudC4KKyAgICBhdXRvKiByZWdpc3Ry
YXRpb24gPSBtX3NlcnZlci5nZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOworCisg
ICAgLy8gSWYgcmVnaXN0cmF0aW9uIGlzIG51bGwsIHRoZW46CisgICAgaWYgKCFyZWdpc3RyYXRp
b24gfHwgcmVnaXN0cmF0aW9uLT5pc1VuaW5zdGFsbGluZygpKSB7CisgICAgICAgIC8vIEludm9r
ZSBSZXNvbHZlIEpvYiBQcm9taXNlIHdpdGggam9iIGFuZCBmYWxzZS4KKyAgICAgICAgcmVzb2x2
ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRocmVhZChmYWxzZSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBTZXQgcmVnaXN0cmF0aW9u4oCZcyB1bmluc3RhbGxpbmcg
ZmxhZy4KKyAgICByZWdpc3RyYXRpb24tPnNldElzVW5pbnN0YWxsaW5nKHRydWUpOworCisgICAg
Ly8gSW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ugd2l0aCBqb2IgYW5kIHRydWUuCisgICAgcmVz
b2x2ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRocmVhZCh0cnVlKTsKKworICAgIC8v
IEZJWE1FOiBJbnZva2UgVHJ5IENsZWFyIFJlZ2lzdHJhdGlvbiB3aXRoIHJlZ2lzdHJhdGlvbi4K
K30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpydW5VcGRhdGVKb2IoY29uc3QgU2VydmljZVdv
cmtlckpvYkRhdGEmIGpvYikKK3sKKyAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBtX3NlcnZlci5n
ZXRSZWdpc3RyYXRpb24obV9yZWdpc3RyYXRpb25LZXkpOworCisgICAgLy8gSWYgcmVnaXN0cmF0
aW9uIGlzIG51bGwgKGluIG91ciBwYXJsYW5jZSAiZW1wdHkiKSBvciByZWdpc3RyYXRpb27igJlz
IHVuaW5zdGFsbGluZyBmbGFnIGlzIHNldCwgdGhlbjoKKyAgICBpZiAoIXJlZ2lzdHJhdGlvbikK
KyAgICAgICAgcmV0dXJuIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9u
RGF0YSB7IFR5cGVFcnJvciwgQVNDSUlMaXRlcmFsKCJDYW5ub3QgdXBkYXRlIGEgbnVsbC9ub25l
eGlzdGVudCBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24iKSB9KTsKKyAgICBpZiAocmVnaXN0
cmF0aW9uLT5pc1VuaW5zdGFsbGluZygpKQorICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEV4Y2Vw
dGlvbk9uTWFpblRocmVhZChFeGNlcHRpb25EYXRhIHsgVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCB1cGRhdGUgYSBzZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24gdGhhdCBpcyB1bmlu
c3RhbGxpbmciKSB9KTsKKworICAgIC8vIElmIGpvYuKAmXMgam9iIHR5cGUgaXMgdXBkYXRlLCBh
bmQgbmV3ZXN0V29ya2Vy4oCZcyBzY3JpcHQgdXJsIGRvZXMgbm90IGVxdWFsIGpvYuKAmXMgc2Ny
aXB0IHVybCB3aXRoIHRoZSBleGNsdWRlIGZyYWdtZW50cyBmbGFnIHNldCwgdGhlbjoKKyAgICBh
dXRvKiBuZXdlc3RXb3JrZXIgPSByZWdpc3RyYXRpb24tPmdldE5ld2VzdFdvcmtlcigpOworICAg
IGlmIChuZXdlc3RXb3JrZXIgJiYgIWVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoam9i
LnNjcmlwdFVSTCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSkpCisgICAgICAgIHJldHVybiBy
ZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJyb3Is
IEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0ZSBhIHNlcnZpY2Ugd29ya2VyIHdpdGggYSByZXF1
ZXN0ZWQgc2NyaXB0IFVSTCB3aG9zZSBuZXdlc3Qgd29ya2VyIGhhcyBhIGRpZmZlcmVudCBzY3Jp
cHQgVVJMIikgfSk7CisKKyAgICBzdGFydFNjcmlwdEZldGNoRnJvbU1haW5UaHJlYWQoKTsKK30K
Kwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFk
KGNvbnN0IEV4Y2VwdGlvbkRhdGEmIGV4Y2VwdGlvbikKK3sKKyAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKKyAgICBtX3NlcnZlci5wb3N0VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFz
aygqdGhpcywgJlNXU2VydmVySm9iUXVldWU6OnJlamVjdEN1cnJlbnRKb2IsIGV4Y2VwdGlvbikp
OworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlc29sdmVXaXRoUmVnaXN0cmF0aW9uT25N
YWluVGhyZWFkKFNXU2VydmVyUmVnaXN0cmF0aW9uJiByZWdpc3RyYXRpb24pCit7CisgICAgQVNT
RVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgbV9zZXJ2ZXIucG9zdFRhc2tSZXBseShjcmVhdGVD
cm9zc1RocmVhZFRhc2soKnRoaXMsICZTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZlQ3VycmVudFJl
Z2lzdHJhdGlvbkpvYiwgcmVnaXN0cmF0aW9uLmRhdGEoKSkpOworfQorCit2b2lkIFNXU2VydmVy
Sm9iUXVldWU6OnJlc29sdmVDdXJyZW50UmVnaXN0cmF0aW9uSm9iT25NYWluVGhlYWQodWludDY0
X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgYXV0byogcmVnaXN0cmF0aW9uID0gbV9zZXJ2ZXIuZ2V0UmVnaXN0cmF0aW9uKG1f
cmVnaXN0cmF0aW9uS2V5KTsKKyAgICBBU1NFUlQocmVnaXN0cmF0aW9uKTsKKyAgICByZWdpc3Ry
YXRpb24tPnNldEFjdGl2ZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKTsKKyAgICByZXNvbHZlV2l0aFJlZ2lzdHJhdGlvbk9uTWFpblRocmVhZCgqcmVnaXN0
cmF0aW9uKTsKK30KKwordm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZlV2l0aFVucmVnaXN0
cmF0aW9uUmVzdWx0T25NYWluVGhyZWFkKGJvb2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgbV9zZXJ2ZXIucG9zdFRhc2tSZXBseShj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZlQ3Vy
cmVudFVucmVnaXN0cmF0aW9uSm9iLCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkpOworfQorCit2b2lk
IFNXU2VydmVySm9iUXVldWU6OnN0YXJ0U2NyaXB0RmV0Y2hGcm9tTWFpblRocmVhZCgpCit7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgbV9zZXJ2ZXIucG9zdFRhc2tSZXBseShj
cmVhdGVDcm9zc1RocmVhZFRhc2soKnRoaXMsICZTV1NlcnZlckpvYlF1ZXVlOjpzdGFydFNjcmlw
dEZldGNoRm9yQ3VycmVudEpvYikpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlamVj
dEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhjZXB0aW9uRGF0YSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOworCisgICAg
bV9zZXJ2ZXIucmVqZWN0Sm9iKCptX2N1cnJlbnRKb2IsIGV4Y2VwdGlvbkRhdGEpOworCisgICAg
ZmluaXNoQ3VycmVudEpvYigpOworfQorCit2b2lkIFNXU2VydmVySm9iUXVldWU6OnJlc29sdmVD
dXJyZW50UmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
JiBkYXRhKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fY3Vy
cmVudEpvYik7CisgICAgQVNTRVJUKG1fY3VycmVudEpvYi0+dHlwZSA9PSBTZXJ2aWNlV29ya2Vy
Sm9iVHlwZTo6UmVnaXN0ZXIpOworCisgICAgbV9zZXJ2ZXIucmVzb2x2ZVJlZ2lzdHJhdGlvbkpv
YigqbV9jdXJyZW50Sm9iLCBkYXRhKTsKKworICAgIGZpbmlzaEN1cnJlbnRKb2IoKTsKK30KKwor
dm9pZCBTV1NlcnZlckpvYlF1ZXVlOjpyZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iKGJv
b2wgdW5yZWdpc3RyYXRpb25SZXN1bHQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQobV9jdXJyZW50Sm9iKTsKKyAgICBBU1NFUlQobV9jdXJyZW50Sm9iLT50eXBl
ID09IFNlcnZpY2VXb3JrZXJKb2JUeXBlOjpVbnJlZ2lzdGVyKTsKKworICAgIG1fc2VydmVyLnJl
c29sdmVVbnJlZ2lzdHJhdGlvbkpvYigqbV9jdXJyZW50Sm9iLCBtX3JlZ2lzdHJhdGlvbktleSwg
dW5yZWdpc3RyYXRpb25SZXN1bHQpOworCisgICAgZmluaXNoQ3VycmVudEpvYigpOworfQorCit2
b2lkIFNXU2VydmVySm9iUXVldWU6OnN0YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKCkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwor
CisgICAgbV9zZXJ2ZXIuc3RhcnRTY3JpcHRGZXRjaCgqbV9jdXJyZW50Sm9iKTsKK30KKwordm9p
ZCBTV1NlcnZlckpvYlF1ZXVlOjpmaW5pc2hDdXJyZW50Sm9iKCkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOworICAgIEFTU0VSVCghbV9q
b2JUaW1lci5pc0FjdGl2ZSgpKTsKKworICAgIG1fY3VycmVudEpvYiA9IG51bGxwdHI7CisgICAg
aWYgKG1fam9iUXVldWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGFydE5l
eHRKb2IoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVySm9iUXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDk1YjNiZmZkMGFh
NTdhYzg4YWUzOGEzNGQ0NmMwNjdlMTNlYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlckpvYlF1ZXVlLmgKQEAgLTAsMCAr
MSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQorCisjaW5jbHVkZSAiU1dTZXJ2ZXIuaCIKKyNpbmNsdWRlICJTZXJ2aWNlV29ya2Vy
Sm9iRGF0YS5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1dTZXJ2ZXJKb2JRdWV1ZSB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgU1dTZXJ2ZXJKb2JRdWV1ZShTV1NlcnZlciYsIGNvbnN0IFNlcnZpY2VX
b3JrZXJSZWdpc3RyYXRpb25LZXkmKTsKKyAgICBTV1NlcnZlckpvYlF1ZXVlKGNvbnN0IFNXU2Vy
dmVyUmVnaXN0cmF0aW9uJikgPSBkZWxldGU7CisgICAgflNXU2VydmVySm9iUXVldWUoKTsKKwor
ICAgIHZvaWQgZW5xdWV1ZUpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOworICAgIHZv
aWQgc2NyaXB0RmV0Y2hGaW5pc2hlZChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFNlcnZp
Y2VXb3JrZXJGZXRjaFJlc3VsdCYpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dEZhaWxlZFRvU3Rh
cnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25zdCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOworICAgIHZvaWQgc2NyaXB0Q29udGV4dFN0YXJ0ZWQoU1dTZXJ2ZXI6
OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiB3b3JrZXJJRCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBqb2JUaW1lckZpcmVkKCk7Cisg
ICAgdm9pZCBzdGFydE5leHRKb2IoKTsKKyAgICB2b2lkIHJlamVjdEN1cnJlbnRKb2IoY29uc3Qg
RXhjZXB0aW9uRGF0YSYpOworICAgIHZvaWQgcmVzb2x2ZUN1cnJlbnRSZWdpc3RyYXRpb25Kb2Io
Y29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmKTsKKyAgICB2b2lkIHJlc29sdmVD
dXJyZW50VW5yZWdpc3RyYXRpb25Kb2IoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7CisgICAg
dm9pZCBzdGFydFNjcmlwdEZldGNoRm9yQ3VycmVudEpvYigpOworICAgIHZvaWQgZmluaXNoQ3Vy
cmVudEpvYigpOworCisgICAgdm9pZCBydW5SZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYpOworICAgIHZvaWQgcnVuVW5yZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYpOworICAgIHZvaWQgcnVuVXBkYXRlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JE
YXRhJik7CisKKyAgICB2b2lkIHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoY29uc3Qg
RXhjZXB0aW9uRGF0YSYpOworICAgIHZvaWQgcmVzb2x2ZVdpdGhSZWdpc3RyYXRpb25Pbk1haW5U
aHJlYWQoU1dTZXJ2ZXJSZWdpc3RyYXRpb24mKTsKKyAgICB2b2lkIHJlc29sdmVDdXJyZW50UmVn
aXN0cmF0aW9uSm9iT25NYWluVGhlYWQodWludDY0X3Qgc2VydmljZVdvcmtlcklkZW50aWZpZXIp
OworICAgIHZvaWQgcmVzb2x2ZVdpdGhVbnJlZ2lzdHJhdGlvblJlc3VsdE9uTWFpblRocmVhZChi
b29sKTsKKyAgICB2b2lkIHN0YXJ0U2NyaXB0RmV0Y2hGcm9tTWFpblRocmVhZCgpOworICAgIGJv
b2wgaXNFbXB0eSgpOworCisgICAgRGVxdWU8U2VydmljZVdvcmtlckpvYkRhdGE+IG1fam9iUXVl
dWU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNlcnZpY2VXb3JrZXJKb2JEYXRhPiBtX2N1cnJlbnRK
b2I7CisKKyAgICBUaW1lciBtX2pvYlRpbWVyOworICAgIFNXU2VydmVyJiBtX3NlcnZlcjsKKyAg
ICBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9uS2V5OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclJlZ2lzdHJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcAppbmRleCBhYWNhZDRkN2RkZDBlODcxMGMxMmI2
ZjMyNmMwNzhiNDkzMmU1OTQ5Li5jYzI3Yzg2NTRjNmVlMDVhOWUzY2Q1ZDUyODMxMzVhMTYyN2E3
YmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyUmVnaXN0cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzksOTkgKzM5LDE3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVn
aXN0cmF0aW9uKFNXU2VydmVyJiBzZXJ2ZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25LZXkmIGtleSkKLSAgICA6IG1fam9iVGltZXIoKnRoaXMsICZTV1NlcnZlclJlZ2lzdHJhdGlv
bjo6c3RhcnROZXh0Sm9iKQotICAgICwgbV9zZXJ2ZXIoc2VydmVyKQotICAgICwgbV9yZWdpc3Ry
YXRpb25LZXkoa2V5KQorU1dTZXJ2ZXJSZWdpc3RyYXRpb246OlNXU2VydmVyUmVnaXN0cmF0aW9u
KGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkmIGtleSwgU2VydmljZVdvcmtlclVw
ZGF0ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlLCBjb25zdCBVUkwmIHNjb3BlVVJMLCBjb25zdCBV
UkwmIHNjcmlwdFVSTCkKKyAgICA6IG1fcmVnaXN0cmF0aW9uS2V5KGtleSkKKyAgICAsIG1fdXBk
YXRlVmlhQ2FjaGUodXBkYXRlVmlhQ2FjaGUpCisgICAgLCBtX3Njb3BlVVJMKHNjb3BlVVJMLmlz
b2xhdGVkQ29weSgpKQorICAgICwgbV9zY3JpcHRVUkwoc2NyaXB0VVJMLmlzb2xhdGVkQ29weSgp
KQogeworICAgIG1fc2NvcGVVUkwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiB9CiAKIFNX
U2VydmVyUmVnaXN0cmF0aW9uOjp+U1dTZXJ2ZXJSZWdpc3RyYXRpb24oKQogewotICAgIEFTU0VS
VChtX2pvYlF1ZXVlLmlzRW1wdHkoKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246
OmVucXVldWVKb2IoY29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmIGpvYkRhdGEpCi17Ci0gICAg
Ly8gRklYTUU6IFBlciB0aGUgc3BlYywgY2hlY2sgaWYgdGhpcyBqb2IgaXMgZXF1aXZhbGVudCB0
byB0aGUgbGFzdCBqb2Igb24gdGhlIHF1ZXVlLgotICAgIC8vIElmIGl0IGlzLCBzdGFjayBpdCBh
bG9uZyB3aXRoIHRoYXQgam9iLgotCi0gICAgbV9qb2JRdWV1ZS5hcHBlbmQoam9iRGF0YSk7Ci0K
LSAgICBpZiAobV9jdXJyZW50Sm9iKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fam9i
VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgbV9qb2JUaW1lci5zdGFydE9uZVNob3QoMF9zKTsK
LX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6c2NyaXB0RmV0Y2hGaW5pc2hlZChTV1Nl
cnZlcjo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0JiByZXN1bHQpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYiAmJiBtX2N1cnJlbnRKb2It
PmlkZW50aWZpZXIoKSA9PSByZXN1bHQuam9iSWRlbnRpZmllcik7Ci0KLSAgICBpZiAoIXJlc3Vs
dC5zY3JpcHRFcnJvci5pc051bGwoKSkgewotICAgICAgICByZWplY3RDdXJyZW50Sm9iKEV4Y2Vw
dGlvbkRhdGEgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIlNjcmlwdCBVUkwgIiwgbV9jdXJy
ZW50Sm9iLT5zY3JpcHRVUkwuc3RyaW5nKCksICIgZmV0Y2ggcmVzdWx0ZWQgaW4gZXJyb3I6ICIs
IHJlc3VsdC5zY3JpcHRFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKSB9KTsKLSAgICAgICAg
Ci0gICAgICAgIC8vIElmIG5ld2VzdFdvcmtlciBpcyBudWxsLCBpbnZva2UgQ2xlYXIgUmVnaXN0
cmF0aW9uIGFsZ29yaXRobSBwYXNzaW5nIHRoaXMgcmVnaXN0cmF0aW9uIGFzIGl0cyBhcmd1bWVu
dC4KLSAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IGhhdmUgImNsZWFyIHJlZ2lzdHJhdGlvbiIg
eWV0LgotCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2xhc3RVcGRhdGVUaW1lID0g
Y3VycmVudFRpbWUoKTsKLSAgICAKLSAgICAvLyBGSVhNRTogSWYgdGhlIHNjcmlwdCBkYXRhIG1h
dGNoZXMgYnl0ZS1mb3ItYnl0ZSB3aXRoIHRoZSBleGlzdGluZyBuZXdlc3RXb3JrZXIsCi0gICAg
Ly8gdGhlbiByZXNvbHZlIGFuZCBmaW5pc2ggdGhlIGpvYiB3aXRob3V0IGRvaW5nIGFueXRoaW5n
IGZ1cnRoZXIuCi0KLSAgICAvLyBGSVhNRTogU3VwcG9ydCB0aGUgcHJvcGVyIHdvcmtlciB0eXBl
IChjbGFzc2ljIHZzIG1vZHVsZSkKLSAgICBtX3NlcnZlci51cGRhdGVXb3JrZXIoY29ubmVjdGlv
biwgbV9yZWdpc3RyYXRpb25LZXksIG1fY3VycmVudEpvYi0+c2NyaXB0VVJMLCByZXN1bHQuc2Ny
aXB0LCBXb3JrZXJUeXBlOjpDbGFzc2ljKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlv
bjo6c2NyaXB0Q29udGV4dEZhaWxlZFRvU3RhcnQoU1dTZXJ2ZXI6OkNvbm5lY3Rpb24mLCBjb25z
dCBTdHJpbmcmIHdvcmtlcklELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgLy8gRklY
TUU6IEluc3RhbGwgaGFzIGZhaWxlZC4gUnVuIHRoZSBpbnN0YWxsIGZhaWxlZCBzdWJzdGVwcwot
ICAgIC8vIFJ1biB0aGUgVXBkYXRlIFdvcmtlciBTdGF0ZSBhbGdvcml0aG0gcGFzc2luZyByZWdp
c3RyYXRpb27igJlzIGluc3RhbGxpbmcgd29ya2VyIGFuZCByZWR1bmRhbnQgYXMgdGhlIGFyZ3Vt
ZW50cy4KLSAgICAvLyBSdW4gdGhlIFVwZGF0ZSBSZWdpc3RyYXRpb24gU3RhdGUgYWxnb3JpdGht
IHBhc3NpbmcgcmVnaXN0cmF0aW9uLCAiaW5zdGFsbGluZyIgYW5kIG51bGwgYXMgdGhlIGFyZ3Vt
ZW50cy4KLSAgICAvLyBJZiBuZXdlc3RXb3JrZXIgaXMgbnVsbCwgaW52b2tlIENsZWFyIFJlZ2lz
dHJhdGlvbiBhbGdvcml0aG0gcGFzc2luZyByZWdpc3RyYXRpb24gYXMgaXRzIGFyZ3VtZW50Lgot
Ci0gICAgVU5VU0VEX1BBUkFNKHdvcmtlcklEKTsKLSAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7
Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnNjcmlwdENvbnRleHRTdGFydGVkKFNX
U2VydmVyOjpDb25uZWN0aW9uJiwgdWludDY0X3QgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB3
b3JrZXJJRCkKLXsKLSAgICBVTlVTRURfUEFSQU0od29ya2VySUQpOwotICAgIHJlc29sdmVDdXJy
ZW50UmVnaXN0cmF0aW9uSm9iKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIHsgbV9yZWdp
c3RyYXRpb25LZXksIGlkZW50aWZpZXIsIG1fc2NvcGVVUkwsIG1fc2NyaXB0VVJMLCBtX3VwZGF0
ZVZpYUNhY2hlLnZhbHVlX29yKFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZTo6SW1wb3J0cykg
fSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnN0YXJ0TmV4dEpvYigpCi17Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoIW1fY3VycmVudEpvYik7Ci0g
ICAgQVNTRVJUKCFtX2pvYlF1ZXVlLmlzRW1wdHkoKSk7Ci0KLSAgICBtX2N1cnJlbnRKb2IgPSBz
dGQ6Om1ha2VfdW5pcXVlPFNlcnZpY2VXb3JrZXJKb2JEYXRhPihtX2pvYlF1ZXVlLnRha2VGaXJz
dCgpLmlzb2xhdGVkQ29weSgpKTsKLQotICAgIHN3aXRjaCAobV9jdXJyZW50Sm9iLT50eXBlKSB7
Ci0gICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXI6Ci0gICAgICAgIG1fc2Vy
dmVyLnBvc3RUYXNrKGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVyUmVnaXN0
cmF0aW9uOjpydW5SZWdpc3RlckpvYiwgKm1fY3VycmVudEpvYikpOwotICAgICAgICByZXR1cm47
Ci0gICAgY2FzZSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6VW5yZWdpc3RlcjoKLSAgICAgICAgbV9z
ZXJ2ZXIucG9zdFRhc2soY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJSZWdp
c3RyYXRpb246OnJ1blVucmVnaXN0ZXJKb2IsICptX2N1cnJlbnRKb2IpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19Ci0KLWJv
b2wgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmlzRW1wdHkoKQotewotICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwotCi0gICAgLy8gSGF2aW5nIG9yIG5vdC1oYXZpbmcgYW4gbV91cGRhdGVWaWFD
YWNoZSBmbGFnIGlzIGN1cnJlbnRseQotICAgIC8vIHRoZSBzaWduYWwgYXMgdG8gd2hldGhlciBv
ciBub3QgdGhpcyBpcyBhbiBlbXB0eSAoaS5lLiAibmV3IikgcmVnaXN0cmF0aW9uLgotICAgIC8v
IFRoZXJlIHdpbGwgYmUgYSBtb3JlIGV4cGxpY2l0IHNpZ25hbCBpbiB0aGUgbmVhciBmdXR1cmUu
Ci0gICAgcmV0dXJuICFtX3VwZGF0ZVZpYUNhY2hlOwogfQogCiBTV1NlcnZlcldvcmtlciogU1dT
ZXJ2ZXJSZWdpc3RyYXRpb246OmdldE5ld2VzdFdvcmtlcigpCkBAIC0xNDUsMTYzICs2MywxMSBA
QCBTV1NlcnZlcldvcmtlciogU1dTZXJ2ZXJSZWdpc3RyYXRpb246OmdldE5ld2VzdFdvcmtlcigp
CiAgICAgcmV0dXJuIG1fYWN0aXZlV29ya2VyLmdldCgpOwogfQogCi12b2lkIFNXU2VydmVyUmVn
aXN0cmF0aW9uOjpydW5SZWdpc3RlckpvYihjb25zdCBTZXJ2aWNlV29ya2VySm9iRGF0YSYgam9i
KQotewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChqb2IudHlwZSA9
PSBTZXJ2aWNlV29ya2VySm9iVHlwZTo6UmVnaXN0ZXIpOwotCi0gICAgaWYgKCFzaG91bGRUcmVh
dEFzUG90ZW50aWFsbHlUcnVzdHdvcnRoeShqb2Iuc2NyaXB0VVJMKSkKLSAgICAgICAgcmV0dXJu
IHJlamVjdFdpdGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiU2NyaXB0IFVSTCBpcyBub3QgcG90ZW50aWFsbHkgdHJ1c3R3
b3J0aHkiKSB9KTsKLQotICAgIC8vIElmIHRoZSBvcmlnaW4gb2Ygam9i4oCZcyBzY3JpcHQgdXJs
IGlzIG5vdCBqb2LigJlzIHJlZmVycmVyJ3Mgb3JpZ2luLCB0aGVuOgotICAgIGlmICghcHJvdG9j
b2xIb3N0QW5kUG9ydEFyZUVxdWFsKGpvYi5zY3JpcHRVUkwsIGpvYi5jbGllbnRDcmVhdGlvblVS
TCkpCi0gICAgICAgIHJldHVybiByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2Vw
dGlvbkRhdGEgeyBTZWN1cml0eUVycm9yLCBBU0NJSUxpdGVyYWwoIlNjcmlwdCBvcmlnaW4gZG9l
cyBub3QgbWF0Y2ggdGhlIHJlZ2lzdGVyaW5nIGNsaWVudCdzIG9yaWdpbiIpIH0pOwotCi0gICAg
Ly8gSWYgdGhlIG9yaWdpbiBvZiBqb2LigJlzIHNjb3BlIHVybCBpcyBub3Qgam9i4oCZcyByZWZl
cnJlcidzIG9yaWdpbiwgdGhlbjoKLSAgICBpZiAoIXByb3RvY29sSG9zdEFuZFBvcnRBcmVFcXVh
bChqb2Iuc2NvcGVVUkwsIGpvYi5jbGllbnRDcmVhdGlvblVSTCkpCi0gICAgICAgIHJldHVybiBy
ZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBTZWN1cml0eUVy
cm9yLCBBU0NJSUxpdGVyYWwoIlNjb3BlIG9yaWdpbiBkb2VzIG5vdCBtYXRjaCB0aGUgcmVnaXN0
ZXJpbmcgY2xpZW50J3Mgb3JpZ2luIikgfSk7Ci0KLSAgICAvLyBJZiByZWdpc3RyYXRpb24gaXMg
bm90IG51bGwgKGluIG91ciBwYXJsYW5jZSAiZW1wdHkiKSwgdGhlbjoKLSAgICBpZiAoIWlzRW1w
dHkoKSkgewotICAgICAgICBBU1NFUlQobV91cGRhdGVWaWFDYWNoZSk7Ci0KLSAgICAgICAgbV91
bmluc3RhbGxpbmcgPSBmYWxzZTsKLSAgICAgICAgYXV0byogbmV3ZXN0V29ya2VyID0gZ2V0TmV3
ZXN0V29ya2VyKCk7Ci0gICAgICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgZXF1YWxJZ25vcmluZ0Zy
YWdtZW50SWRlbnRpZmllcihqb2Iuc2NyaXB0VVJMLCBuZXdlc3RXb3JrZXItPnNjcmlwdFVSTCgp
KSAmJiBqb2IucmVnaXN0cmF0aW9uT3B0aW9ucy51cGRhdGVWaWFDYWNoZSA9PSAqbV91cGRhdGVW
aWFDYWNoZSkgewotICAgICAgICAgICAgcmVzb2x2ZVdpdGhSZWdpc3RyYXRpb25Pbk1haW5UaHJl
YWQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1fc2NvcGVVUkwgPSBqb2Iuc2NvcGVVUkwuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgICAgIG1f
c2NvcGVVUkwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgICAgIG1fc2NyaXB0VVJM
ID0gam9iLnNjcmlwdFVSTC5pc29sYXRlZENvcHkoKTsKLSAgICAgICAgbV91cGRhdGVWaWFDYWNo
ZSA9IGpvYi5yZWdpc3RyYXRpb25PcHRpb25zLnVwZGF0ZVZpYUNhY2hlOwotICAgIH0KLQotICAg
IHJ1blVwZGF0ZUpvYihqb2IpOwotfQotCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpydW5V
bnJlZ2lzdGVySm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJiBqb2IpCi17Ci0gICAgLy8g
SWYgdGhlIG9yaWdpbiBvZiBqb2LigJlzIHNjb3BlIHVybCBpcyBub3Qgam9iJ3MgY2xpZW50J3Mg
b3JpZ2luLCB0aGVuOgotICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVxdWFsKGpvYi5z
Y29wZVVSTCwgam9iLmNsaWVudENyZWF0aW9uVVJMKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdFdp
dGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFNlY3VyaXR5RXJyb3IsIEFT
Q0lJTGl0ZXJhbCgiT3JpZ2luIG9mIHNjb3BlIFVSTCBkb2VzIG5vdCBtYXRjaCB0aGUgY2xpZW50
J3Mgb3JpZ2luIikgfSk7Ci0KLSAgICAvLyBMZXQgcmVnaXN0cmF0aW9uIGJlIHRoZSByZXN1bHQg
b2YgcnVubmluZyAiR2V0IFJlZ2lzdHJhdGlvbiIgYWxnb3JpdGhtIHBhc3Npbmcgam9i4oCZcyBz
Y29wZSB1cmwgYXMgdGhlIGFyZ3VtZW50LgotICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBudWxs
LCB0aGVuOgotICAgIGlmIChpc0VtcHR5KCkgfHwgbV91bmluc3RhbGxpbmcpIHsKLSAgICAgICAg
Ly8gSW52b2tlIFJlc29sdmUgSm9iIFByb21pc2Ugd2l0aCBqb2IgYW5kIGZhbHNlLgotICAgICAg
ICByZXNvbHZlV2l0aFVucmVnaXN0cmF0aW9uUmVzdWx0T25NYWluVGhyZWFkKGZhbHNlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFNldCByZWdpc3RyYXRpb27igJlzIHVuaW5z
dGFsbGluZyBmbGFnLgotICAgIG1fdW5pbnN0YWxsaW5nID0gdHJ1ZTsKLQotICAgIC8vIEludm9r
ZSBSZXNvbHZlIEpvYiBQcm9taXNlIHdpdGggam9iIGFuZCB0cnVlLgotICAgIHJlc29sdmVXaXRo
VW5yZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQodHJ1ZSk7Ci0KLSAgICAvLyBGSVhNRTog
SW52b2tlIFRyeSBDbGVhciBSZWdpc3RyYXRpb24gd2l0aCByZWdpc3RyYXRpb24uCi19Ci0KLXZv
aWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJ1blVwZGF0ZUpvYihjb25zdCBTZXJ2aWNlV29ya2Vy
Sm9iRGF0YSYgam9iKQotewotICAgIC8vIElmIHJlZ2lzdHJhdGlvbiBpcyBudWxsIChpbiBvdXIg
cGFybGFuY2UgImVtcHR5Iikgb3IgcmVnaXN0cmF0aW9u4oCZcyB1bmluc3RhbGxpbmcgZmxhZyBp
cyBzZXQsIHRoZW46Ci0gICAgaWYgKGlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdFdp
dGhFeGNlcHRpb25Pbk1haW5UaHJlYWQoRXhjZXB0aW9uRGF0YSB7IFR5cGVFcnJvciwgQVNDSUlM
aXRlcmFsKCJDYW5ub3QgdXBkYXRlIGEgbnVsbC9ub25leGlzdGVudCBzZXJ2aWNlIHdvcmtlciBy
ZWdpc3RyYXRpb24iKSB9KTsKLSAgICBpZiAobV91bmluc3RhbGxpbmcpCi0gICAgICAgIHJldHVy
biByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0ZSBhIHNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJh
dGlvbiB0aGF0IGlzIHVuaW5zdGFsbGluZyIpIH0pOwotCi0gICAgLy8gSWYgam9i4oCZcyBqb2Ig
dHlwZSBpcyB1cGRhdGUsIGFuZCBuZXdlc3RXb3JrZXLigJlzIHNjcmlwdCB1cmwgZG9lcyBub3Qg
ZXF1YWwgam9i4oCZcyBzY3JpcHQgdXJsIHdpdGggdGhlIGV4Y2x1ZGUgZnJhZ21lbnRzIGZsYWcg
c2V0LCB0aGVuOgotICAgIGF1dG8qIG5ld2VzdFdvcmtlciA9IGdldE5ld2VzdFdvcmtlcigpOwot
ICAgIGlmIChuZXdlc3RXb3JrZXIgJiYgIWVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIo
am9iLnNjcmlwdFVSTCwgbmV3ZXN0V29ya2VyLT5zY3JpcHRVUkwoKSkpCi0gICAgICAgIHJldHVy
biByZWplY3RXaXRoRXhjZXB0aW9uT25NYWluVGhyZWFkKEV4Y2VwdGlvbkRhdGEgeyBUeXBlRXJy
b3IsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHVwZGF0ZSBhIHNlcnZpY2Ugd29ya2VyIHdpdGggYSBy
ZXF1ZXN0ZWQgc2NyaXB0IFVSTCB3aG9zZSBuZXdlc3Qgd29ya2VyIGhhcyBhIGRpZmZlcmVudCBz
Y3JpcHQgVVJMIikgfSk7Ci0KLSAgICBzdGFydFNjcmlwdEZldGNoRnJvbU1haW5UaHJlYWQoKTsK
LX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cmVqZWN0V2l0aEV4Y2VwdGlvbk9uTWFp
blRocmVhZChjb25zdCBFeGNlcHRpb25EYXRhJiBleGNlcHRpb24pCi17Ci0gICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7Ci0gICAgbV9zZXJ2ZXIucG9zdFRhc2tSZXBseShjcmVhdGVDcm9zc1Ro
cmVhZFRhc2soKnRoaXMsICZTV1NlcnZlclJlZ2lzdHJhdGlvbjo6cmVqZWN0Q3VycmVudEpvYiwg
ZXhjZXB0aW9uKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJlc29sdmVXaXRo
UmVnaXN0cmF0aW9uT25NYWluVGhyZWFkKCkKLXsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgp
KTsKLSAgICBtX3NlcnZlci5wb3N0VGFza1JlcGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhp
cywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpyZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYiwg
ZGF0YSgpKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJlc29sdmVXaXRoVW5y
ZWdpc3RyYXRpb25SZXN1bHRPbk1haW5UaHJlYWQoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkK
LXsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKLSAgICBtX3NlcnZlci5wb3N0VGFza1Jl
cGx5KGNyZWF0ZUNyb3NzVGhyZWFkVGFzaygqdGhpcywgJlNXU2VydmVyUmVnaXN0cmF0aW9uOjpy
ZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iLCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkpOwot
fQotCi12b2lkIFNXU2VydmVyUmVnaXN0cmF0aW9uOjpzdGFydFNjcmlwdEZldGNoRnJvbU1haW5U
aHJlYWQoKQotewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwotICAgIG1fc2VydmVyLnBv
c3RUYXNrUmVwbHkoY3JlYXRlQ3Jvc3NUaHJlYWRUYXNrKCp0aGlzLCAmU1dTZXJ2ZXJSZWdpc3Ry
YXRpb246OnN0YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKSk7Ci19Ci0KLXZvaWQgU1dTZXJ2
ZXJSZWdpc3RyYXRpb246OnJlamVjdEN1cnJlbnRKb2IoY29uc3QgRXhjZXB0aW9uRGF0YSYgZXhj
ZXB0aW9uRGF0YSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVCht
X2N1cnJlbnRKb2IpOwotCi0gICAgbV9zZXJ2ZXIucmVqZWN0Sm9iKCptX2N1cnJlbnRKb2IsIGV4
Y2VwdGlvbkRhdGEpOwotCi0gICAgZmluaXNoQ3VycmVudEpvYigpOwotfQotCi12b2lkIFNXU2Vy
dmVyUmVnaXN0cmF0aW9uOjpyZXNvbHZlQ3VycmVudFJlZ2lzdHJhdGlvbkpvYihjb25zdCBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYgZGF0YSkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwotICAgIEFTU0VSVChtX2N1cnJlbnRK
b2ItPnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlJlZ2lzdGVyKTsKLQotICAgIG1fc2Vy
dmVyLnJlc29sdmVSZWdpc3RyYXRpb25Kb2IoKm1fY3VycmVudEpvYiwgZGF0YSk7Ci0KLSAgICBm
aW5pc2hDdXJyZW50Sm9iKCk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnJlc29s
dmVDdXJyZW50VW5yZWdpc3RyYXRpb25Kb2IoYm9vbCB1bnJlZ2lzdHJhdGlvblJlc3VsdCkKLXsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwot
ICAgIEFTU0VSVChtX2N1cnJlbnRKb2ItPnR5cGUgPT0gU2VydmljZVdvcmtlckpvYlR5cGU6OlVu
cmVnaXN0ZXIpOwotCi0gICAgbV9zZXJ2ZXIucmVzb2x2ZVVucmVnaXN0cmF0aW9uSm9iKCptX2N1
cnJlbnRKb2IsIG1fcmVnaXN0cmF0aW9uS2V5LCB1bnJlZ2lzdHJhdGlvblJlc3VsdCk7Ci0KLSAg
ICBmaW5pc2hDdXJyZW50Sm9iKCk7Ci19Ci0KLXZvaWQgU1dTZXJ2ZXJSZWdpc3RyYXRpb246OnN0
YXJ0U2NyaXB0RmV0Y2hGb3JDdXJyZW50Sm9iKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIEFTU0VSVChtX2N1cnJlbnRKb2IpOwotCi0gICAgbV9zZXJ2ZXIuc3RhcnRTY3Jp
cHRGZXRjaCgqbV9jdXJyZW50Sm9iKTsKLX0KLQotdm9pZCBTV1NlcnZlclJlZ2lzdHJhdGlvbjo6
ZmluaXNoQ3VycmVudEpvYigpCi17Ci0gICAgQVNTRVJUKG1fY3VycmVudEpvYik7Ci0gICAgQVNT
RVJUKCFtX2pvYlRpbWVyLmlzQWN0aXZlKCkpOwotCi0gICAgbV9jdXJyZW50Sm9iID0gbnVsbHB0
cjsKLSAgICBpZiAobV9qb2JRdWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHN0YXJ0TmV4dEpvYigpOwotfQotCiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSBTV1Nl
cnZlclJlZ2lzdHJhdGlvbjo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHsgbV9yZWdpc3Ry
YXRpb25LZXksIGlkZW50aWZpZXIoKSwgbV9zY29wZVVSTCwgbV9zY3JpcHRVUkwsIG1fdXBkYXRl
VmlhQ2FjaGUudmFsdWVfb3IoU2VydmljZVdvcmtlclVwZGF0ZVZpYUNhY2hlOjpJbXBvcnRzKSB9
OworICAgIHJldHVybiB7IG1fcmVnaXN0cmF0aW9uS2V5LCBpZGVudGlmaWVyKCksIG1fYWN0aXZl
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIG1fc2NvcGVVUkwsIG1fc2NyaXB0VVJMLCBtX3VwZGF0
ZVZpYUNhY2hlIH07CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclJlZ2lzdHJhdGlvbi5oCmluZGV4IDM1ZDdm
NWYxNjMwNzY4Njg0ZTYzNWExY2JiZTA0NjVhNTk4Y2M0M2EuLjhlMDcwYjVkYmU1ZDM5M2M0YTE1
Yzk2YzhjMjUwMjY5MzMwYzE3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyUmVnaXN0cmF0aW9uLmgKQEAgLTI4LDY4
ICsyOCw0NyBAQAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIAogI2luY2x1ZGUgIlNXU2Vy
dmVyLmgiCi0jaW5jbHVkZSAiU2VydmljZVdvcmtlckpvYkRhdGEuaCIKICNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVk
ZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0lkZW50aWZpZWQuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBTV1NlcnZlcjsKIGNsYXNzIFNXU2VydmVyV29ya2VyOwogc3Ry
dWN0IEV4Y2VwdGlvbkRhdGE7CiBzdHJ1Y3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0OwogCiBj
bGFzcyBTV1NlcnZlclJlZ2lzdHJhdGlvbiA6IHB1YmxpYyBUaHJlYWRTYWZlSWRlbnRpZmllZDxT
V1NlcnZlclJlZ2lzdHJhdGlvbj4gewogcHVibGljOgotICAgIGV4cGxpY2l0IFNXU2VydmVyUmVn
aXN0cmF0aW9uKFNXU2VydmVyJiwgY29uc3QgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYp
OwotICAgIFNXU2VydmVyUmVnaXN0cmF0aW9uKGNvbnN0IFNXU2VydmVyUmVnaXN0cmF0aW9uJikg
PSBkZWxldGU7CisgICAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24oY29uc3QgU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbktleSYsIFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNoZSwgY29uc3QgVVJMJiBz
Y29wZVVSTCwgY29uc3QgVVJMJiBzY3JpcHRVUkwpOwogICAgIH5TV1NlcnZlclJlZ2lzdHJhdGlv
bigpOwogCi0gICAgdm9pZCBlbnF1ZXVlSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJKb2JEYXRhJik7
Ci0gICAgdm9pZCBzY3JpcHRGZXRjaEZpbmlzaGVkKFNXU2VydmVyOjpDb25uZWN0aW9uJiwgY29u
c3QgU2VydmljZVdvcmtlckZldGNoUmVzdWx0Jik7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0RmFp
bGVkVG9TdGFydChTV1NlcnZlcjo6Q29ubmVjdGlvbiYsIGNvbnN0IFN0cmluZyYgd29ya2VySUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7Ci0gICAgdm9pZCBzY3JpcHRDb250ZXh0U3RhcnRlZChT
V1NlcnZlcjo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
d29ya2VySUQpOwotICAgIAotICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhIGRhdGEo
KSBjb25zdDsKKyAgICBjb25zdCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JiBrZXkoKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lzdHJhdGlvbktleTsgfQogCi1wcml2YXRlOgotICAgIHZvaWQg
am9iVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc3RhcnROZXh0Sm9iKCk7Ci0gICAgdm9pZCByZWpl
Y3RDdXJyZW50Sm9iKGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKLSAgICB2b2lkIHJlc29sdmVDdXJy
ZW50UmVnaXN0cmF0aW9uSm9iKGNvbnN0IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRhJik7
Ci0gICAgdm9pZCByZXNvbHZlQ3VycmVudFVucmVnaXN0cmF0aW9uSm9iKGJvb2wgdW5yZWdpc3Ry
YXRpb25SZXN1bHQpOwotICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRjaEZvckN1cnJlbnRKb2IoKTsK
LSAgICB2b2lkIGZpbmlzaEN1cnJlbnRKb2IoKTsKLQotICAgIHZvaWQgcnVuUmVnaXN0ZXJKb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKLSAgICB2b2lkIHJ1blVucmVnaXN0ZXJKb2Io
Y29uc3QgU2VydmljZVdvcmtlckpvYkRhdGEmKTsKLSAgICB2b2lkIHJ1blVwZGF0ZUpvYihjb25z
dCBTZXJ2aWNlV29ya2VySm9iRGF0YSYpOwotCi0gICAgdm9pZCByZWplY3RXaXRoRXhjZXB0aW9u
T25NYWluVGhyZWFkKGNvbnN0IEV4Y2VwdGlvbkRhdGEmKTsKLSAgICB2b2lkIHJlc29sdmVXaXRo
UmVnaXN0cmF0aW9uT25NYWluVGhyZWFkKCk7Ci0gICAgdm9pZCByZXNvbHZlV2l0aFVucmVnaXN0
cmF0aW9uUmVzdWx0T25NYWluVGhyZWFkKGJvb2wpOwotICAgIHZvaWQgc3RhcnRTY3JpcHRGZXRj
aEZyb21NYWluVGhyZWFkKCk7Ci0gICAgYm9vbCBpc0VtcHR5KCk7CiAgICAgU1dTZXJ2ZXJXb3Jr
ZXIqIGdldE5ld2VzdFdvcmtlcigpOworICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EYXRh
IGRhdGEoKSBjb25zdDsKKworICAgIGJvb2wgaXNVbmluc3RhbGxpbmcoKSBjb25zdCB7IHJldHVy
biBtX3VuaW5zdGFsbGluZzsgfQorICAgIHZvaWQgc2V0SXNVbmluc3RhbGxpbmcoYm9vbCB2YWx1
ZSkgeyBtX3VuaW5zdGFsbGluZyA9IHZhbHVlOyB9CiAKLSAgICBEZXF1ZTxTZXJ2aWNlV29ya2Vy
Sm9iRGF0YT4gbV9qb2JRdWV1ZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VydmljZVdvcmtlckpv
YkRhdGE+IG1fY3VycmVudEpvYjsKKyAgICB2b2lkIHNldExhc3RVcGRhdGVUaW1lKGRvdWJsZSB0
aW1lKSB7IG1fbGFzdFVwZGF0ZVRpbWUgPSB0aW1lOyB9CisgICAgU2VydmljZVdvcmtlclVwZGF0
ZVZpYUNhY2hlIHVwZGF0ZVZpYUNhY2hlKCkgY29uc3QgeyByZXR1cm4gbV91cGRhdGVWaWFDYWNo
ZTsgfQorCisgICAgdm9pZCBzZXRBY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllcih1aW50NjRf
dCBpZGVudGlmaWVyKSB7IG1fYWN0aXZlU2VydmljZVdvcmtlcklkZW50aWZpZXIgPSBpZGVudGlm
aWVyOyB9CisKK3ByaXZhdGU6CisgICAgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSBtX3Jl
Z2lzdHJhdGlvbktleTsKKyAgICBTZXJ2aWNlV29ya2VyVXBkYXRlVmlhQ2FjaGUgbV91cGRhdGVW
aWFDYWNoZTsKKyAgICBVUkwgbV9zY29wZVVSTDsKKyAgICBVUkwgbV9zY3JpcHRVUkw7CiAKICAg
ICBib29sIG1fdW5pbnN0YWxsaW5nIHsgZmFsc2UgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dT
ZXJ2ZXJXb3JrZXI+IG1faW5zdGFsbGluZ1dvcmtlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dT
ZXJ2ZXJXb3JrZXI+IG1fd2FpdGluZ1dvcmtlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1dTZXJ2
ZXJXb3JrZXI+IG1fYWN0aXZlV29ya2VyOwotICAgIFVSTCBtX3Njb3BlVVJMOwotICAgIFVSTCBt
X3NjcmlwdFVSTDsKLSAgICBzdGQ6Om9wdGlvbmFsPFNlcnZpY2VXb3JrZXJVcGRhdGVWaWFDYWNo
ZT4gbV91cGRhdGVWaWFDYWNoZTsKLSAgICAKLSAgICBkb3VibGUgbV9sYXN0VXBkYXRlVGltZSB7
IDAgfTsKIAotICAgIFRpbWVyIG1fam9iVGltZXI7Ci0gICAgU1dTZXJ2ZXImIG1fc2VydmVyOwot
ICAgIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkgbV9yZWdpc3RyYXRpb25LZXk7CisgICAg
dWludDY0X3QgbV9hY3RpdmVTZXJ2aWNlV29ya2VySWRlbnRpZmllciB7IDAgfTsKKworICAgIGRv
dWJsZSBtX2xhc3RVcGRhdGVUaW1lIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>