<?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>174434</bug_id>
          
          <creation_ts>2017-07-12 13:39:46 -0700</creation_ts>
          <short_desc>REGRESSION(r219361): Huge PLUM memory regression on iOS (Requested by kling on #webkit).</short_desc>
          <delta_ts>2017-07-12 16:48:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Performance, Regression</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174140</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>cdumez</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1328210</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-12 13:39:46 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/219361 broke the build:
Huge PLUM memory regression on iOS (Requested by kling on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328212</commentid>
    <comment_count>1</comment_count>
      <attachid>315279</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-12 13:39:59 -0700</bug_when>
    <thetext>Created attachment 315279
ROLLOUT of r219361

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328213</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-07-12 13:40:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/33265549&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328214</commentid>
    <comment_count>3</comment_count>
      <attachid>315279</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-12 13:43:41 -0700</bug_when>
    <thetext>Comment on attachment 315279
ROLLOUT of r219361

Clearing flags on attachment: 315279

Committed r219421: &lt;http://trac.webkit.org/changeset/219421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328215</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-07-12 13:43:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328218</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-12 13:47:22 -0700</bug_when>
    <thetext>Do you have any data I can look at to understand what the regression was?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328221</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2017-07-12 13:56:22 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #5)
&gt; Do you have any data I can look at to understand what the regression was?

There are some Apple-internal links in the radar: &lt;rdar://problem/33265549&gt;

It&apos;s not really overflowing with information though. :/

Based on the nature of your patch, my guess would be DOM leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1328292</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-07-12 16:48:11 -0700</bug_when>
    <thetext>(In reply to Andreas Kling from comment #6)
&gt; (In reply to Sam Weinig from comment #5)
&gt; &gt; Do you have any data I can look at to understand what the regression was?
&gt; 
&gt; There are some Apple-internal links in the radar: &lt;rdar://problem/33265549&gt;
&gt; 
&gt; It&apos;s not really overflowing with information though. :/
&gt; 
&gt; Based on the nature of your patch, my guess would be DOM leak.

Yeah, as soon as I asked, I realized it must be a leak. Sorry :(.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>315279</attachid>
            <date>2017-07-12 13:39:59 -0700</date>
            <delta_ts>2017-07-12 13:43:41 -0700</delta_ts>
            <desc>ROLLOUT of r219361</desc>
            <filename>bug-174434-20170712163959.patch</filename>
            <type>text/plain</type>
            <size>74072</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5NDIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTk2M2U5OTA4YTQ3MjA1
NzUyMDBlYTMxZmQ0ODI4MDk3MzIxMGMxYS4uMmE1NDk3YjdiOGI4ZDM1OTg0MDExMzdiOTRmMTI2
N2Q3NmMxMDA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA3LTEyICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMjE5MzYxLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc0NDM0CisKKyAgICAgICAgSHVnZSBQTFVNIG1lbW9yeSByZWdyZXNz
aW9uIG9uIGlPUyAoUmVxdWVzdGVkIGJ5IGtsaW5nIG9uCisgICAgICAgICN3ZWJraXQpLgorCisg
ICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW1dlYklETF0gQ29udmVydCBN
dXRhdGlvbkNhbGxiYWNrIHRvIGJlIGEgbm9ybWFsIGdlbmVyYXRlCisgICAgICAgIGNhbGxiYWNr
IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MTQw
CisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIxOTM2MQorCiAyMDE3
LTA3LTEyICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFtNZWRpYVN0cmVhbV0gYSBjYXB0dXJlIHNvdXJjZSBmYWlsdXJlIHNob3VsZCBlbmQgdGhlIE1l
ZGlhU3RyZWFtVHJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzM3MjZhNTJlMDJjYjJiODEy
Y2EyOGZiYTFhOTBkM2I0Njc0MmYzNi4uYmRjMTdjODY5MmRjM2I3NjJhNGFjY2ZkNzRmYTUxOGE3
MjkzMGJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ2NCw3ICs0NjQsNiBAQCBzZXQoV2Vi
Q29yZV9OT05fU1ZHX0lETF9GSUxFUwogICAgIGRvbS9NZXNzYWdlUG9ydC5pZGwKICAgICBkb20v
TW91c2VFdmVudC5pZGwKICAgICBkb20vTW91c2VFdmVudEluaXQuaWRsCi0gICAgZG9tL011dGF0
aW9uQ2FsbGJhY2suaWRsCiAgICAgZG9tL011dGF0aW9uRXZlbnQuaWRsCiAgICAgZG9tL011dGF0
aW9uT2JzZXJ2ZXIuaWRsCiAgICAgZG9tL011dGF0aW9uUmVjb3JkLmlkbApAQCAtMTIxMCw2ICsx
MjA5LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNo
YW5uZWxDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNNZXNzYWdlRXZlbnRDdXN0b20uY3Bw
CiAgICAgYmluZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9q
cy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCiAgICAgYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU05vZGVJdGVyYXRvckN1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5t
YWtlCmluZGV4IDIxZjE1ZjY2ZWE5ZDFkZDI2YmI3YmFjMjNmNzIwMWM4OWJjMGNmYTAuLmUxYWNh
ZjRlMTcxNzJjY2NiMjFjM2UwNGU4MDU0MTE1NjY4MjMxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtMzk5LDcgKzM5OSw2IEBAIEpTX0JJTkRJTkdfSURMUyA9IFwKICAgICAk
KFdlYkNvcmUpL2RvbS9NZXNzYWdlUG9ydC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL01vdXNl
RXZlbnQuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9Nb3VzZUV2ZW50SW5pdC5pZGwgXAotICAg
ICQoV2ViQ29yZSkvZG9tL011dGF0aW9uQ2FsbGJhY2suaWRsIFwKICAgICAkKFdlYkNvcmUpL2Rv
bS9NdXRhdGlvbkV2ZW50LmlkbCBcCiAgICAgJChXZWJDb3JlKS9kb20vTXV0YXRpb25PYnNlcnZl
ci5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL011dGF0aW9uUmVjb3JkLmlkbCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYURldmljZXNS
ZXF1ZXN0LmNwcAppbmRleCBjMTE4MjdmYjRiZTAwNmQzMTc0NWZmNGY5ZmQ0MTJmNjVkZTI3MWIw
Li4xOGUyNTk3OWU0MDM1ODNlN2ZmNDcyOGU2MDZiYWU2YWZmMDE3M2U4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVx
dWVzdC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0Ojpjb250
ZXh0RGVzdHJveWVkKCkKICAgICBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6Y29udGV4dERl
c3Ryb3llZCgpOwogfQogCi12b2lkIE1lZGlhRGV2aWNlc1JlcXVlc3Q6OmZpbHRlckRldmljZUxp
c3QoVmVjdG9yPFJlZjxNZWRpYURldmljZUluZm8+PiYgZGV2aWNlcykKK3ZvaWQgTWVkaWFEZXZp
Y2VzUmVxdWVzdDo6ZmlsdGVyRGV2aWNlTGlzdChWZWN0b3I8UmVmUHRyPE1lZGlhRGV2aWNlSW5m
bz4+JiBkZXZpY2VzKQogewogI2lmICFQTEFURk9STShDT0NPQSkKICAgICBVTlVTRURfUEFSQU0o
ZGV2aWNlcyk7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgTWVkaWFEZXZpY2VzUmVxdWVzdDo6Zmls
dGVyRGV2aWNlTGlzdChWZWN0b3I8UmVmPE1lZGlhRGV2aWNlSW5mbz4+JiBkZXZpY2VzCiAKICAg
ICBpbnQgY2FtZXJhQ291bnQgPSAwOwogICAgIGludCBtaWNyb3Bob25lQ291bnQgPSAwOwotICAg
IGRldmljZXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGNvbnN0IFJlZjxNZWRpYURldmljZUluZm8+
JiBkZXZpY2UpIC0+IGJvb2wgeworICAgIGRldmljZXMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdKGNv
bnN0IFJlZlB0cjxNZWRpYURldmljZUluZm8+JiBkZXZpY2UpIC0+IGJvb2wgewogICAgICAgICBp
ZiAoZGV2aWNlLT5raW5kKCkgPT0gTWVkaWFEZXZpY2VJbmZvOjpLaW5kOjpWaWRlb2lucHV0ICYm
ICsrY2FtZXJhQ291bnQgPiBkZWZhdWx0Q2FtZXJhQ291bnQpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgaWYgKGRldmljZS0+a2luZCgpID09IE1lZGlhRGV2aWNlSW5mbzo6S2lu
ZDo6QXVkaW9pbnB1dCAmJiArK21pY3JvcGhvbmVDb3VudCA+IGRlZmF1bHRNaWNyb3Bob25lQ291
bnQpCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBNZWRpYURldmljZXNSZXF1ZXN0OjpzdGFydCgp
CiAgICAgICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgZG9jdW1lbnQuc2V0RGV2aWNlSURIYXNoU2Fs
dChkZXZpY2VJZGVudGlmaWVySGFzaFNhbHQpOwogCi0gICAgICAgIFZlY3RvcjxSZWY8TWVkaWFE
ZXZpY2VJbmZvPj4gZGV2aWNlczsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYURldmljZUlu
Zm8+PiBkZXZpY2VzOwogICAgICAgICBmb3IgKGF1dG8mIGRldmljZUluZm8gOiBjYXB0dXJlRGV2
aWNlcykgewogICAgICAgICAgICAgYXV0byBsYWJlbCA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAg
ICAgICBpZiAob3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyB8fCBkb2N1bWVudC5oYXNIYWRBY3Rp
dmVNZWRpYVN0cmVhbVRyYWNrKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhRGV2aWNlc1JlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oCmluZGV4IDMzYWJiZDY3NTliZWNl
ZGQzOTVhOGU1Y2NlNjNjOTNlMjgyZTk0ODIuLjRhZjAxN2RkNDY5NDM0YWUxYjc0NjRmMzJkNTRj
MTdlYzMwNDQ2MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFEZXZpY2VzUmVxdWVzdC5oCkBAIC01MSw3ICs1MSw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBmaW5hbDsKIAotICAgIHZvaWQgZmlsdGVy
RGV2aWNlTGlzdChWZWN0b3I8UmVmPE1lZGlhRGV2aWNlSW5mbz4+Jik7CisgICAgdm9pZCBmaWx0
ZXJEZXZpY2VMaXN0KFZlY3RvcjxSZWZQdHI8TWVkaWFEZXZpY2VJbmZvPj4mKTsKIAogICAgIE1l
ZGlhRGV2aWNlczo6RW51bWVyYXRlRGV2aWNlc1Byb21pc2UgbV9wcm9taXNlOwogICAgIFJlZlB0
cjxNZWRpYURldmljZXNSZXF1ZXN0PiBtX3Byb3RlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5M2VjODYxOTRmNGY4NGU1
NGQ3NmMwZjQ5ZDJlNzZlODc2MjNjYTJmLi5iODQzYzE3NDJmYTVhMzJjZTU5M2I0M2MyY2U5ZWIy
OTA1YjZiMWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0zMjU2LDggKzMyNTYsNiBAQAogCQk3QzkzRjM0RTFBQTZCRjA3MDBB
OThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0QzFBQTZCRjA3MDBBOThCQUIgLyogQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJN0M5REJGRUQxQTlDNDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFj
aG1lbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDOURCRkVCMUE5QzQ5QjEwMDBENkIyNSAvKiBKU0hUTUxBdHRhY2htZW50RWxlbWVu
dC5jcHAgKi87IH07CiAJCTdDOURCRkVFMUE5QzQ5QjEwMDBENkIyNSAvKiBKU0hUTUxBdHRhY2ht
ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M5REJGRUMxQTlDNDlCMTAwMEQ2QjI1IC8qIEpTSFRNTEF0dGFjaG1lbnRFbGVtZW50Lmgg
Ki87IH07Ci0JCTdDQUNCNjA1MUYxNTM1QUQwMDA3MTAxQyAvKiBKU011dGF0aW9uQ2FsbGJhY2su
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NBQ0I2
MDMxRjE1MzVBQzAwMDcxMDFDIC8qIEpTTXV0YXRpb25DYWxsYmFjay5jcHAgKi87IH07Ci0JCTdD
QUNCNjA2MUYxNTM1QUQwMDA3MTAxQyAvKiBKU011dGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQUNCNjA0MUYxNTM1QUMwMDA3
MTAxQyAvKiBKU011dGF0aW9uQ2FsbGJhY2suaCAqLzsgfTsKIAkJN0NCNUNBM0YxRTUyNUM3MTAw
RkFFRjEzIC8qIE1lZGlhUXVlcnlFeHByZXNzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjVDQTNEMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRp
YVF1ZXJ5RXhwcmVzc2lvbi5jcHAgKi87IH07CiAJCTdDQjVDQTQwMUU1MjVDNzMwMEZBRUYxMyAv
KiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0NCNUNBM0UxRTUyNUM2QzAwRkFFRjEzIC8qIE1lZGlhUXVlcnlFeHBy
ZXNzaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0NCQTVCQTcxRjBCNEJERTAwMzRENzQ1IC8qIEpTRE9NQ29udmVydFdlYkdMLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQkE1QkE2MUYwQjRC
REUwMDM0RDc0NSAvKiBKU0RPTUNvbnZlcnRXZWJHTC5jcHAgKi87IH07CkBAIC02MDU4LDYgKzYw
NTYsOCBAQAogCQlDNkYwOTAyQzE0MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjA5
MDI0MTQzMjdENEYwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXIuY3BwICovOyB9OwogCQlD
NkYwOTAyRDE0MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkYwOTAyNTE0MzI3RDRGMDA2
ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyLmggKi87IH07CiAJCUM2RjA5MTdGMTQzQTJCQjkw
MDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGMDkxN0UxNDNBMkJCOTAwNjg1ODQ5IC8q
IEpTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgKi87IH07CisJCUM2RjQyMEEyMTZCNzE2NEUw
MDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZGNDIwQTAxNkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0
YXRpb25DYWxsYmFjay5jcHAgKi87IH07CisJCUM2RjQyMEEzMTZCNzE2NEUwMDUyQTlGMiAvKiBK
U011dGF0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEM2RjQyMEExMTZCNzE2NEUwMDUyQTlGMiAvKiBKU011dGF0aW9uQ2FsbGJhY2su
aCAqLzsgfTsKIAkJQzkwMjZCNjUxQjFDRjVGRTAwMUQ5OUE3IC8qIEpTTWVkaWFSZW1vdGVDb250
cm9scy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
OTAyNkI2MzFCMUNGNUFCMDAxRDk5QTcgLyogSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcCAqLzsg
fTsKIAkJQzkwMjdGNDExQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDOTAyN0YzRjFCMUQwQUQy
MDBCRkJGRUYgLyogTWVkaWFTZXNzaW9uLmNwcCAqLzsgfTsKIAkJQzkwMjdGNDIxQjFEMEFEMjAw
QkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzkwMjdGNDAxQjFEMEFEMjAwQkZCRkVGIC8qIE1lZGlhU2Vzc2lvbi5o
ICovOyB9OwpAQCAtMTEzMjksOSArMTEzMjksNiBAQAogCQk3QzlEQkZFQTFBOUM0ODlGMDAwRDZC
MjUgLyogSFRNTEF0dGFjaG1lbnRFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1MQXR0YWNobWVudEVsZW1l
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzlEQkZFQjFBOUM0OUIxMDAw
RDZCMjUgLyogSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MQXR0YWNobWVudEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QzlEQkZFQzFBOUM0OUIxMDAwRDZCMjUgLyogSlNIVE1MQXR0
YWNobWVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1M
QXR0YWNobWVudEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0NBQ0I2
MDMxRjE1MzVBQzAwMDcxMDFDIC8qIEpTTXV0YXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0FDQjYwNDFGMTUzNUFDMDAwNzEwMUMgLyogSlNNdXRh
dGlvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRp
b25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3Q0FDQjYwNzFGMTUz
NURGMDAwNzEwMUMgLyogTXV0YXRpb25DYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gTXV0YXRpb25DYWxsYmFj
ay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDQjVDQTNEMUU1MjVDNkMwMEZB
RUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBNZWRpYVF1ZXJ5RXhwcmVzc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdDQjVDQTNFMUU1MjVDNkMwMEZBRUYxMyAvKiBNZWRpYVF1ZXJ5RXhwcmVz
c2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVF1ZXJ5RXhwcmVz
c2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Q0JBNUJBNjFGMEI0QkRFMDAz
NEQ3NDUgLyogSlNET01Db252ZXJ0V2ViR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01D
b252ZXJ0V2ViR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1NzIsNiAr
MTQ1NjksOCBAQAogCQlDNkYwOTAyNDE0MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2Vy
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTXV0YXRpb25P
YnNlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RjA5MDI1MTQzMjdE
NEYwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNNdXRhdGlvbk9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUM2RjA5MTdFMTQzQTJCQjkwMDY4NTg0OSAvKiBKU011dGF0aW9uT2JzZXJ2ZXJDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNdXRhdGlvbk9i
c2VydmVyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzZGNDIwQTAx
NkI3MTY0RTAwNTJBOUYyIC8qIEpTTXV0YXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU011dGF0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDNkY0MjBBMTE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlv
bkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTXV0YXRpb25D
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDOTAyNkI2MzFCMUNGNUFC
MDAxRDk5QTcgLyogSlNNZWRpYVJlbW90ZUNvbnRyb2xzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVkaWFSZW1vdGVDb250cm9scy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM5MDI2QjY0MUIxQ0Y1QUIwMDFEOTlBNyAvKiBKU01lZGlhUmVt
b3RlQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYVJl
bW90ZUNvbnRyb2xzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM5MDI3RjNFMUIx
RDBBQjkwMEJGQkZFRiAvKiBNZWRpYVNlc3Npb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE1lZGlhU2Vzc2lvbi5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjA2Miw4ICsyMjA2MSw2IEBACiAJCQkJ
QkM2NDY0OTYxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwLmggKi8sCiAJCQkJNjVE
RjMxRTUwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTRWxlbWVudC5jcHAgKi8sCiAJCQkJNjVERjMxRTYw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTRWxlbWVudC5oICovLAotCQkJCTdDQUNCNjAzMUYxNTM1QUMw
MDA3MTAxQyAvKiBKU011dGF0aW9uQ2FsbGJhY2suY3BwICovLAotCQkJCTdDQUNCNjA0MUYxNTM1
QUMwMDA3MTAxQyAvKiBKU011dGF0aW9uQ2FsbGJhY2suaCAqLywKIAkJCQlDNkYwOTAyNDE0MzI3
RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyLmNwcCAqLywKIAkJCQlDNkYwOTAyNTE0
MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9ic2VydmVyLmggKi8sCiAJCQkJQzZGMDhGQzcx
NDMxMDAwRDAwNjg1ODQ5IC8qIEpTTXV0YXRpb25SZWNvcmQuY3BwICovLApAQCAtMjM5NDcsNiAr
MjM5NDQsOCBAQAogCQkJCTkzQjcwRDRFMDlFQjBDN0MwMDlEODQ2OCAvKiBKU0V2ZW50TGlzdGVu
ZXIuaCAqLywKIAkJCQk5MzVGNDU0MDBGN0MzQjVGMDBEN0MxRkIgLyogSlNMYXp5RXZlbnRMaXN0
ZW5lci5jcHAgKi8sCiAJCQkJOTM1RjQ1NDEwRjdDM0I1RjAwRDdDMUZCIC8qIEpTTGF6eUV2ZW50
TGlzdGVuZXIuaCAqLywKKwkJCQlDNkY0MjBBMDE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlv
bkNhbGxiYWNrLmNwcCAqLywKKwkJCQlDNkY0MjBBMTE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRh
dGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJQkNBMzc4QkEwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVk
dWxlZEFjdGlvbi5jcHAgKi8sCiAJCQkJQkNBMzc4QkIwRDE1RjY0MjAwQjc5M0Q2IC8qIFNjaGVk
dWxlZEFjdGlvbi5oICovLAogCQkJKTsKQEAgLTI1ODAyLDcgKzI1ODAxLDYgQEAKIAkJCQk4NTAz
MUIzMTBBNDRFRkM3MDBGOTkyRTAgLyogTW91c2VSZWxhdGVkRXZlbnQuY3BwICovLAogCQkJCTg1
MDMxQjMyMEE0NEVGQzcwMEY5OTJFMCAvKiBNb3VzZVJlbGF0ZWRFdmVudC5oICovLAogCQkJCUM2
RjA5MDAxMTQzMjdCNjEwMDY4NTg0OSAvKiBNdXRhdGlvbkNhbGxiYWNrLmggKi8sCi0JCQkJN0NB
Q0I2MDcxRjE1MzVERjAwMDcxMDFDIC8qIE11dGF0aW9uQ2FsbGJhY2suaWRsICovLAogCQkJCTg1
MDMxQjMzMEE0NEVGQzcwMEY5OTJFMCAvKiBNdXRhdGlvbkV2ZW50LmNwcCAqLywKIAkJCQk4NTAz
MUIzNDBBNDRFRkM3MDBGOTkyRTAgLyogTXV0YXRpb25FdmVudC5oICovLAogCQkJCTkzRUVDMUYz
MDlDMjg3NzcwMEM1MTVEMSAvKiBNdXRhdGlvbkV2ZW50LmlkbCAqLywKQEAgLTI3MDg1LDcgKzI3
MDgzLDYgQEAKIAkJCQlDRDE5QTI2ODFBMTNFNzAwMDA4RDY1MEUgLyogRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2RkNCNjE4MUE3MDgyMEUwMEM1QTIxRSAv
KiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzJEQjMxMUE2
NzgwQTgwMEM2OTdDNSAvKiBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdDQUNCNjA2MUYxNTM1QUQwMDA3MTAxQyAvKiBKU011dGF0aW9uQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0FERkM3MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRp
b25BbHRlcm5hdGl2ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0VDQURGQzkxNTM3NzhGRjAwRTM3
MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUQwQkQ0RjVEMTQw
ODg1MEYwMDY4MzlCNiAvKiBEaWN0YXRpb25Db21tYW5kSU9TLmggaW4gSGVhZGVycyAqLywKQEAg
LTI4MTI1LDYgKzI4MTIyLDcgQEAKIAkJCQkyRDZGM0U5NTFDMUY4NTU1MDA2MURCRDQgLyogSlNN
b2NrUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NjYyOUQxMDlEQTJCNDgwMDk2
MzNBNSAvKiBKU01vdXNlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzMEEzNkJEMURBQzVG
QUQwMDZEN0QwOSAvKiBKU01vdXNlRXZlbnRJbml0LmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkY0
MjBBMzE2QjcxNjRFMDA1MkE5RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NURGMzFGQzA5RDFDQzYwMDAwQkUzMjUgLyogSlNNdXRhdGlvbkV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNkYwOTAyRDE0MzI3RDRGMDA2ODU4NDkgLyogSlNNdXRhdGlvbk9i
c2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkYwOEZDQTE0MzEwMDBEMDA2ODU4NDkgLyog
SlNNdXRhdGlvblJlY29yZC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDM3Miw3ICszMDM3MCw4IEBA
CiAJCTFDMDlEMDUwMUUzMUMzMjkwMDcyNUYxOCAvKiBsaWJQQUwuYSAqLyA9IHsKIAkJCWlzYSA9
IFBCWFJlZmVyZW5jZVByb3h5OwogCQkJZmlsZVR5cGUgPSBhcmNoaXZlLmFyOwotCQkJcGF0aCA9
IGxpYlBBTC5hOworCQkJbmFtZSA9IGxpYlBBTC5hOworCQkJcGF0aCA9IGxpYi5hOwogCQkJcmVt
b3RlUmVmID0gMUMwOUQwNEYxRTMxQzMyOTAwNzI1RjE4IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLzsKIAkJCXNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7CiAJCX07CkBAIC0zMjEw
OCw3ICszMjEwNyw2IEBACiAJCQkJMDcyNzdFNTIxN0QwMThDQzAwMTU1MzREIC8qIEpTTWVkaWFT
dHJlYW1UcmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTVDREFGNzFFNkNFMERFMDA0RjEx
RUUgLyogSlNNZWRpYVN0cmVhbVRyYWNrQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3
Mjc3RTU0MTdEMDE4Q0MwMDE1NTM0RCAvKiBKU01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgaW4g
U291cmNlcyAqLywKLQkJCQk3Q0FDQjYwNTFGMTUzNUFEMDAwNzEwMUMgLyogSlNNdXRhdGlvbkNh
bGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzMkNDMEQ0MURGRkQ2NjcwMDRDMEY5RiAv
KiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzg3QzQ2
OTFCRkJERjZGMDA2RENEN0YgLyogSlNNZWRpYVRyYWNrU3VwcG9ydGVkQ29uc3RyYWludHMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTEwNzQwMEQwRTc3QkRDMDAwMzNBRjI0IC8qIEpTTWVzc2Fn
ZUNoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMjExOSw2ICszMjExNyw3IEBACiAJCQkJ
RTFBREVENDcwRTc2QjhERDAwNEExQTVFIC8qIEpTTWVzc2FnZVBvcnRDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTg2NjI5RDIwOURBMkI0ODAwOTYzM0E1IC8qIEpTTW91c2VFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4MzBBMzZCQzFEQUM1RkFEMDA2RDdEMDkgLyogSlNNb3Vz
ZUV2ZW50SW5pdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDNkY0MjBBMjE2QjcxNjRFMDA1MkE5
RjIgLyogSlNNdXRhdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REYzMUZC
MDlEMUNDNjAwMDBCRTMyNSAvKiBKU011dGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQzZGMDkwMkMxNDMyN0Q0RjAwNjg1ODQ5IC8qIEpTTXV0YXRpb25PYnNlcnZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDNkYwOTE3RjE0M0EyQkI5MDA2ODU4NDkgLyogSlNNdXRhdGlvbk9i
c2VydmVyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvSURMVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL0lETFR5cGVz
LmgKaW5kZXggMThiM2Q0ZTYwNGVmYWZjYjAzOTJhZjNmODA3YjA1ZmRhMjk2NmFhMS4uZDBkZjll
Zjg3NmE5N2Y5YTRhOGM2ODQ3NTBkMDg4ZDFhNGU4ODUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvSURMVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9J
RExUeXBlcy5oCkBAIC02Miw5ICs2Miw2IEBAIHN0cnVjdCBJRExUeXBlIHsKICAgICB1c2luZyBQ
YXJhbWV0ZXJUeXBlID0gVDsKICAgICB1c2luZyBOdWxsYWJsZVBhcmFtZXRlclR5cGUgPSBzdGQ6
Om9wdGlvbmFsPEltcGxlbWVudGF0aW9uVHlwZT47CiAKLSAgICB1c2luZyBJbm5lclBhcmFtZXRl
clR5cGUgPSBUOwotICAgIHVzaW5nIE51bGxhYmxlSW5uZXJQYXJhbWV0ZXJUeXBlID0gc3RkOjpv
cHRpb25hbDxJbXBsZW1lbnRhdGlvblR5cGU+OwotCiAgICAgdXNpbmcgTnVsbGFibGVUeXBlID0g
c3RkOjpvcHRpb25hbDxJbXBsZW1lbnRhdGlvblR5cGU+OwogICAgIHN0YXRpYyBOdWxsYWJsZVR5
cGUgbnVsbFZhbHVlKCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAgICAgc3RhdGljIGJvb2wg
aXNOdWxsVmFsdWUoY29uc3QgTnVsbGFibGVUeXBlJiB2YWx1ZSkgeyByZXR1cm4gIXZhbHVlOyB9
CkBAIC0xNTYsOSArMTUzLDYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IElETFdyYXBw
ZXIgOiBJRExUeXBlPFJlZlB0cjxUPj4gewogICAgIHVzaW5nIFBhcmFtZXRlclR5cGUgPSBUJjsK
ICAgICB1c2luZyBOdWxsYWJsZVBhcmFtZXRlclR5cGUgPSBUKjsKIAotICAgIHVzaW5nIElubmVy
UGFyYW1ldGVyVHlwZSA9IFJlZjxUPjsKLSAgICB1c2luZyBOdWxsYWJsZUlubmVyUGFyYW1ldGVy
VHlwZSA9IFJlZlB0cjxUPjsKLQogICAgIHVzaW5nIE51bGxhYmxlVHlwZSA9IFJlZlB0cjxUPjsK
ICAgICBzdGF0aWMgaW5saW5lIHN0ZDo6bnVsbHB0cl90IG51bGxWYWx1ZSgpIHsgcmV0dXJuIG51
bGxwdHI7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgaW5saW5lIGJvb2wgaXNO
dWxsVmFsdWUoVSYmIHZhbHVlKSB7IHJldHVybiAhdmFsdWU7IH0KQEAgLTE4Miw5ICsxNzYsNiBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMTnVsbGFibGUgOiBJRExUeXBlPHR5cGVu
YW1lIFQ6Ok51bGxhYmxlVHlwZT4gewogICAgIHVzaW5nIFBhcmFtZXRlclR5cGUgPSB0eXBlbmFt
ZSBUOjpOdWxsYWJsZVBhcmFtZXRlclR5cGU7CiAgICAgdXNpbmcgTnVsbGFibGVQYXJhbWV0ZXJU
eXBlID0gdHlwZW5hbWUgVDo6TnVsbGFibGVQYXJhbWV0ZXJUeXBlOwogCi0gICAgdXNpbmcgSW5u
ZXJQYXJhbWV0ZXJUeXBlID0gdHlwZW5hbWUgVDo6TnVsbGFibGVJbm5lclBhcmFtZXRlclR5cGU7
Ci0gICAgdXNpbmcgTnVsbGFibGVJbm5lclBhcmFtZXRlclR5cGUgPSB0eXBlbmFtZSBUOjpOdWxs
YWJsZUlubmVyUGFyYW1ldGVyVHlwZTsKLQogICAgIHVzaW5nIE51bGxhYmxlVHlwZSA9IHR5cGVu
YW1lIFQ6Ok51bGxhYmxlVHlwZTsKICAgICBzdGF0aWMgaW5saW5lIGF1dG8gbnVsbFZhbHVlKCkg
LT4gZGVjbHR5cGUoVDo6bnVsbFZhbHVlKCkpIHsgcmV0dXJuIFQ6Om51bGxWYWx1ZSgpOyB9CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIGlubGluZSBib29sIGlzTnVsbFZhbHVlKFUm
JiB2YWx1ZSkgeyByZXR1cm4gVDo6aXNOdWxsVmFsdWUoc3RkOjpmb3J3YXJkPFU+KHZhbHVlKSk7
IH0KQEAgLTE5NCw4ICsxODUsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSURMTnVs
bGFibGUgOiBJRExUeXBlPHR5cGVuYW1lIFQ6Ok51bGxhYmxlVHlwZT4gewogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IElETFNlcXVlbmNlIDogSURMVHlwZTxWZWN0b3I8dHlwZW5hbWUgVDo6
SW1wbGVtZW50YXRpb25UeXBlPj4gewogICAgIHVzaW5nIElubmVyVHlwZSA9IFQ7CiAKLSAgICB1
c2luZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgVmVjdG9yPHR5cGVuYW1lIFQ6OklubmVyUGFyYW1l
dGVyVHlwZT4mOwotICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHR5cGVuYW1lIFQ6OklubmVyUGFyYW1ldGVyVHlwZT4+JjsKKyAgICB1
c2luZyBQYXJhbWV0ZXJUeXBlID0gY29uc3QgVmVjdG9yPHR5cGVuYW1lIFQ6OkltcGxlbWVudGF0
aW9uVHlwZT4mOworICAgIHVzaW5nIE51bGxhYmxlUGFyYW1ldGVyVHlwZSA9IGNvbnN0IHN0ZDo6
b3B0aW9uYWw8VmVjdG9yPHR5cGVuYW1lIFQ6OkltcGxlbWVudGF0aW9uVHlwZT4+JjsKIH07CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBJRExGcm96ZW5BcnJheSA6IElETFR5cGU8VmVj
dG9yPHR5cGVuYW1lIFQ6OkltcGxlbWVudGF0aW9uVHlwZT4+IHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAppbmRleCA2NGJjNDI2NWE4ZDVlNjU5OTIz
M2U0NDI0MmViNTdiNTAyMDM1MDBjLi42NTVlYWY0NGM4M2QxMjU1OTM4MDhkNzMyMjc5MDkyZmMy
ZTdlMDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNr
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEu
Y3BwCkBAIC0zOSw3ICszOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAgICAgCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUpTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBjYWxsYmFjaywgSlNWYWx1
ZSB0aGlzVmFsdWUsIE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgbWV0
aG9kLCBQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1lLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4m
IHJldHVybmVkRXhjZXB0aW9uKQorSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJh
Y2soSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGNhbGxiYWNrLCBN
YXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgQ2FsbGJhY2tUeXBlIG1ldGhvZCwgUHJvcGVydHlO
YW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2Vw
dGlvbikKIHsKICAgICBBU1NFUlQoY2FsbGJhY2spOwogCkBAIC03OSw4ICs3OSw4IEBAIEpTVmFs
dWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIEpTT2JqZWN0CiAKICAgICByZXR1cm5lZEV4Y2VwdGlvbiA9IG51bGxwdHI7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBjb250ZXh0LT5pc0RvY3VtZW50KCkKLSAgICAgICAgPyBKU01h
aW5UaHJlYWRFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChleGVjLCBKU0M6OlByb2ZpbGluZ1JlYXNv
bjo6T3RoZXIsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncywg
cmV0dXJuZWRFeGNlcHRpb24pCi0gICAgICAgIDogSlNDOjpwcm9maWxlZENhbGwoZXhlYywgSlND
OjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0
aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICAgICAgPyBKU01haW5UaHJl
YWRFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChleGVjLCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3Ro
ZXIsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGNhbGxiYWNrLCBhcmdzLCByZXR1cm5l
ZEV4Y2VwdGlvbikKKyAgICAgICAgOiBKU0M6OnByb2ZpbGVkQ2FsbChleGVjLCBKU0M6OlByb2Zp
bGluZ1JlYXNvbjo6T3RoZXIsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGNhbGxiYWNr
LCBhcmdzLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENhbGxGdW5jdGlvbihjb29raWUsIGNvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAppbmRleCBkZGY5ODE5YTg4ZTU5NWNkZjJkNmM2
ZWNmZDkyNjQ5YWFkYmFkZTNlLi4zZWE5OTBlNTY4YzQwNWZiYTFmNWE1OGZkN2VjOWYxODU2Zjky
Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgKQEAg
LTY0LDcgKzY0LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAgICAgfQogICAgIAotICAgIHN0YXRp
YyBKU0M6OkpTVmFsdWUgaW52b2tlQ2FsbGJhY2soSlNET01HbG9iYWxPYmplY3QmLCBKU0M6OkpT
T2JqZWN0KiBjYWxsYmFjaywgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpNYXJrZWRBcmd1
bWVudEJ1ZmZlciYsIENhbGxiYWNrVHlwZSwgSlNDOjpQcm9wZXJ0eU5hbWUgZnVuY3Rpb25OYW1l
LCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBzdGF0
aWMgSlNDOjpKU1ZhbHVlIGludm9rZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpK
U09iamVjdCogY2FsbGJhY2ssIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImLCBDYWxsYmFja1R5
cGUsIEpTQzo6UHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiAKIHByaXZhdGU6CiAgICAgSlNDOjpXZWFrPEpTRE9N
R2xvYmFsT2JqZWN0PiBtX2dsb2JhbE9iamVjdDsKQEAgLTgzLDEzICs4MywxMyBAQCBwdWJsaWM6
CiAKICAgICBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaygpIHsgcmV0dXJuIG1fY2FsbGJhY2suZ2V0
KCk7IH0KIAotICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0M6OkpTVmFsdWUgdGhp
c1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUgY2Fs
bGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCisgICAgSlNDOjpKU1ZhbHVlIGludm9rZUNh
bGxiYWNrKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBjYWxs
YmFja1R5cGUsIEpTQzo6UHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlNDOjpF
eGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8qIGdsb2Jh
bE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBpZiAoIWdsb2JhbE9iamVj
dCkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tE
YXRhOjppbnZva2VDYWxsYmFjaygqZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaygpLCB0aGlzVmFsdWUs
IGFyZ3MsIGNhbGxiYWNrVHlwZSwgZnVuY3Rpb25OYW1lLCByZXR1cm5lZEV4Y2VwdGlvbik7Cisg
ICAgICAgIHJldHVybiBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soKmdsb2JhbE9iamVj
dCwgY2FsbGJhY2soKSwgYXJncywgY2FsbGJhY2tUeXBlLCBmdW5jdGlvbk5hbWUsIHJldHVybmVk
RXhjZXB0aW9uKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMDYsMTMgKzEwNiwxMyBAQCBwdWJs
aWM6CiAKICAgICBKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaygpIHsgcmV0dXJuIG1fY2FsbGJhY2su
Z2V0KCk7IH0KIAotICAgIEpTQzo6SlNWYWx1ZSBpbnZva2VDYWxsYmFjayhKU0M6OkpTVmFsdWUg
dGhpc1ZhbHVlLCBKU0M6Ok1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBDYWxsYmFja1R5cGUg
Y2FsbGJhY2tUeXBlLCBKU0M6OlByb3BlcnR5TmFtZSBmdW5jdGlvbk5hbWUsIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pCisgICAgSlNDOjpKU1ZhbHVlIGludm9r
ZUNhbGxiYWNrKEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIENhbGxiYWNrVHlwZSBj
YWxsYmFja1R5cGUsIEpTQzo6UHJvcGVydHlOYW1lIGZ1bmN0aW9uTmFtZSwgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikKICAgICB7CiAgICAgICAgIGF1dG8qIGds
b2JhbE9iamVjdCA9IHRoaXMtPmdsb2JhbE9iamVjdCgpOwogICAgICAgICBpZiAoIWdsb2JhbE9i
amVjdCkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAgICAgcmV0dXJuIEpTQ2FsbGJh
Y2tEYXRhOjppbnZva2VDYWxsYmFjaygqZ2xvYmFsT2JqZWN0LCBjYWxsYmFjaygpLCB0aGlzVmFs
dWUsIGFyZ3MsIGNhbGxiYWNrVHlwZSwgZnVuY3Rpb25OYW1lLCByZXR1cm5lZEV4Y2VwdGlvbik7
CisgICAgICAgIHJldHVybiBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soKmdsb2JhbE9i
amVjdCwgY2FsbGJhY2soKSwgYXJncywgY2FsbGJhY2tUeXBlLCBmdW5jdGlvbk5hbWUsIHJldHVy
bmVkRXhjZXB0aW9uKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMThjZDQ1ZjY1
MDY0ZjA3MjhiZTQzMzY0YjdmZWZiN2Y3MDRkMjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcApAQCAtMCwwICsxLDEw
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU011
dGF0aW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIkpTRE9NQ29udmVydEludGVyZmFjZS5oIgor
I2luY2x1ZGUgIkpTRE9NQ29udmVydFNlcXVlbmNlcy5oIgorI2luY2x1ZGUgIkpTRE9NR2xvYmFs
T2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAi
SlNNYWluVGhyZWFkRXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSlNNdXRh
dGlvbk9ic2VydmVyLmgiCisjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5oIgorI2luY2x1ZGUg
IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWtJbmxpbmVzLmg+
CisjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitKU011dGF0aW9uQ2FsbGJhY2s6OkpTTXV0YXRpb25DYWxs
YmFjayhKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CisgICAgOiBBY3RpdmVET01DYWxsYmFjayhnbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKKyAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBtX2lzb2xhdGVkV29y
bGQoZ2xvYmFsT2JqZWN0LT53b3JsZCgpKQoreworfQorCitKU011dGF0aW9uQ2FsbGJhY2s6On5K
U011dGF0aW9uQ2FsbGJhY2soKQoreworfQorCit2b2lkIEpTTXV0YXRpb25DYWxsYmFjazo6Y2Fs
bChjb25zdCBWZWN0b3I8UmVmPE11dGF0aW9uUmVjb3JkPj4mIG11dGF0aW9ucywgTXV0YXRpb25P
YnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWY8SlNNdXRhdGlvbkNhbGxiYWNrPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrKG1faXNvbGF0ZWRXb3JsZC0+dm0oKSk7
CisKKyAgICBpZiAoIW1fY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWUg
Y2FsbGJhY2sgPSBtX2NhbGxiYWNrLmdldCgpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGJhY2ssIGNhbGxEYXRhKTsKKyAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29u
dGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkp
OworCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxP
YmplY3QoY29udGV4dCwgbV9pc29sYXRlZFdvcmxkKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKworICAgIEpTVmFsdWUganNPYnNlcnZlciA9IHRv
SlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBvYnNlcnZlcik7CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmdzOworICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMU2VxdWVuY2U8SURMSW50ZXJmYWNl
PE11dGF0aW9uUmVjb3JkPj4+KCpleGVjLCAqZ2xvYmFsT2JqZWN0LCBtdXRhdGlvbnMpKTsKKyAg
ICBhcmdzLmFwcGVuZChqc09ic2VydmVyKTsKKworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBjb29raWUgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlv
bkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKworICAgIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpwcm9maWxl
ZENhbGwoZXhlYywgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBjYWxsYmFjaywgY2FsbFR5
cGUsIGNhbGxEYXRhLCBqc09ic2VydmVyLCBhcmdzLCBleGNlcHRpb24pOworCisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCBjb250ZXh0KTsKKwor
ICAgIGlmIChleGNlcHRpb24pCisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBleGNlcHRp
b24pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YjM5MWZhYTkzNWNl
YmVmMzQ0YmU4MzFiOTIwMmI4OThiMWU4YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suaApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWN0aXZlRE9NQ2FsbGJhY2su
aCIKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJNdXRhdGlvbkNhbGxi
YWNrLmgiCisjaW5jbHVkZSA8aGVhcC9XZWFrLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU09iamVj
dC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEpTRE9NR2xvYmFsT2JqZWN0Owor
CitjbGFzcyBKU011dGF0aW9uQ2FsbGJhY2sgZmluYWwgOiBwdWJsaWMgTXV0YXRpb25DYWxsYmFj
aywgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEpT
TXV0YXRpb25DYWxsYmFjaz4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSlNNdXRhdGlvbkNhbGxiYWNrKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIH5KU011dGF0aW9uQ2FsbGJhY2soKTsKKworICAgIHZvaWQgY2FsbChj
b25zdCBWZWN0b3I8UmVmPE11dGF0aW9uUmVjb3JkPj4mLCBNdXRhdGlvbk9ic2VydmVyKikgb3Zl
cnJpZGU7CisgICAgYm9vbCBjYW5JbnZva2VDYWxsYmFjaygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIEFjdGl2ZURPTUNhbGxiYWNrOjpjYW5JbnZva2VDYWxsYmFjaygpOyB9CisKK3ByaXZhdGU6
CisgICAgSlNNdXRhdGlvbkNhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBKU0RPTUds
b2JhbE9iamVjdCopOworCisgICAgbXV0YWJsZSBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gbV9j
YWxsYmFjazsKKyAgICBSZWY8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29ybGQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCA5NDE0N2I4ODUyY2Yz
YTMwMDNkNjIyNjg4YjZmZjE4MzE4MTQ5M2U5Li4zM2M1NTA5YWU3ZTIwYjMxMzUyYmU4MmEzMThk
ZWNhOTBhZDQyZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKQEAgLTMyLDEyICszMiwzOSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTTXV0YXRpb25PYnNlcnZlci5oIgogCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JCYXNlLmgiCisj
aW5jbHVkZSAiSlNNdXRhdGlvbkNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgi
CisjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3Iu
aD4KKyNpbmNsdWRlIDxydW50aW1lL1ByaXZhdGVOYW1lLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIoRXhlY1N0YXRlJiBleGVjKQoreworICAgIFZN
JiB2bSA9IGV4ZWMudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAoZXhlYy5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKCZleGVjLCBzY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
JmV4ZWMpKTsKKworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLnVuY2hlY2tlZEFyZ3VtZW50
KDApLmdldE9iamVjdCgpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIGlmICghb2JqZWN0
IHx8IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkg
PT0gQ2FsbFR5cGU6Ok5vbmUpCisgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9y
KGV4ZWMsIHNjb3BlLCAwLCAiY2FsbGJhY2siLCAiTXV0YXRpb25PYnNlcnZlciIsIG51bGxwdHIs
ICJNdXRhdGlvbkNhbGxiYWNrIik7CisKKyAgICBhdXRvKiBqc0NvbnN0cnVjdG9yID0ganNDYXN0
PEpTRE9NQ29uc3RydWN0b3JCYXNlKj4oZXhlYy5qc0NhbGxlZSgpKTsKKyAgICBhdXRvIGNhbGxi
YWNrID0gSlNNdXRhdGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBqc0NvbnN0cnVjdG9yLT5n
bG9iYWxPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGpzT2JzZXJ2ZXIgPSBhc09iamVjdCh0b0pT
TmV3bHlDcmVhdGVkKCZleGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgTXV0YXRp
b25PYnNlcnZlcjo6Y3JlYXRlKFdURk1vdmUoY2FsbGJhY2spKSkpOworICAgIFByaXZhdGVOYW1l
IHByb3BlcnR5TmFtZTsKKyAgICBqc09ic2VydmVyLT5wdXREaXJlY3Qodm0sIHByb3BlcnR5TmFt
ZSwgb2JqZWN0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzT2JzZXJ2ZXIpOworfQor
CiBib29sIEpTTXV0YXRpb25PYnNlcnZlck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290
cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQogewogICAgIGZvciAoYXV0byogbm9kZSA6IGpzQ2FzdDxKU011dGF0aW9uT2JzZXJ2
ZXIqPihoYW5kbGUuc2xvdCgpLT5hc0NlbGwoKSktPndyYXBwZWQoKS5vYnNlcnZlZE5vZGVzKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5w
bQppbmRleCBjOWUwNTdlMzdhMDc0ZWZmYWI2YzFlYWIwNTExNjg2YjcwMTIwNWM2Li43MGRkM2Q1
OTVlN2VlNzE0ZGIxMjg4OGYxZDExZmQ4Yzc1NWJhNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCkBAIC0xMjAsNyArMTIwLDYgQEAg
bXkgJGlkbEZpbGVzOwogbXkgJGNhY2hlZEludGVyZmFjZXMgPSB7fTsKIG15ICRjYWNoZWRFeHRl
cm5hbERpY3Rpb25hcmllcyA9IHt9OwogbXkgJGNhY2hlZEV4dGVybmFsRW51bWVyYXRpb25zID0g
e307Ci1teSAkY2FjaGVkVHlwZXMgPSB7fTsKIAogc3ViIGFzc2VydAogewpAQCAtMzcwLDIwICsz
NjksNiBAQCBzdWIgUGFyc2VJbnRlcmZhY2UKICAgICBkaWUoIkNvdWxkIE5PVCBmaW5kIGludGVy
ZmFjZSBkZWZpbml0aW9uIGZvciAkaW50ZXJmYWNlTmFtZSBpbiAkZmlsZW5hbWUiKTsKIH0KIAot
c3ViIFBhcnNlVHlwZQotewotICAgIG15ICgkb2JqZWN0LCAkdHlwZVN0cmluZykgPSBAXzsKLQot
ICAgIHJldHVybiAkY2FjaGVkVHlwZXMtPnskdHlwZVN0cmluZ30gaWYgZXhpc3RzKCRjYWNoZWRU
eXBlcy0+eyR0eXBlU3RyaW5nfSk7Ci0KLSAgICBteSAkcGFyc2VyID0gSURMUGFyc2VyLT5uZXco
MSk7Ci0gICAgbXkgJHR5cGUgPSAkcGFyc2VyLT5QYXJzZVR5cGUoJHR5cGVTdHJpbmcsICRpZGxB
dHRyaWJ1dGVzKTsKLQotICAgICRjYWNoZWRUeXBlcy0+eyR0eXBlU3RyaW5nfSA9ICR0eXBlOwot
Ci0gICAgcmV0dXJuICR0eXBlOwotfQotCiAjIEhlbHBlcnMgZm9yIGFsbCBDb2RlR2VuZXJhdG9y
KioqLnBtIG1vZHVsZXMKIAogc3ViIElzTnVtZXJpY1R5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggNmVjZTNiZTY3YzI5
NTU4NzdlN2U1YTU5MTEzYjM4NDRlMWQ2Y2IxMC4uOTUwM2I4NGUxN2Y3NGViNjdhMWYyODkxZDU2
YTYwNDAxNjc0NDgzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTU5OSwxMCArNTk5LDEwIEBAIHN1YiBHZW5lcmF0ZU5h
bWVkR2V0dGVyTGFtYmRhCiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byBnZXR0
ZXJGdW5jdG9yID0gW10gKGF1dG8mIHRoaXNPYmplY3QsIGF1dG8gcHJvcGVydHlOYW1lKSAtPiAk
e3JldHVyblR5cGV9IHtcbiIpOwogCi0gICAgbXkgQGFyZ3VtZW50cyA9IEdlbmVyYXRlQ2FsbFdp
dGhVc2luZ1JlZmVyZW5jZXMoJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDYWxsV2l0aH0sICRvdXRwdXRBcnJheSwgInN0ZDo6bnVsbG9wdCIsICJ0aGlzT2JqZWN0
IiwgIiAgICAgICAgIik7Ci0gICAgcHVzaChAYXJndW1lbnRzLCAicHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSIpOworICAgIG15IEBhcmdzID0gR2VuZXJhdGVDYWxsV2l0
aFVzaW5nUmVmZXJlbmNlcygkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NhbGxXaXRofSwgJG91dHB1dEFycmF5LCAic3RkOjpudWxsb3B0IiwgInRoaXNPYmplY3Qi
LCAiICAgICAgICAiKTsKKyAgICBwdXNoKEBhcmdzLCAicHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSIpOwogCi0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBh
dXRvIHJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLiR7bmFtZWRHZXR0ZXJGdW5jdGlvbk5h
bWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsKKyAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgICAgIGF1dG8gcmVzdWx0ID0gdGhpc09iamVjdC53cmFwcGVkKCkuJHtu
YW1lZEdldHRlckZ1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3MpIC4gIik7XG4iKTsK
ICAgICAKICAgICBpZiAoJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntNYXlUaHJvd0V4Y2VwdGlvbn0pIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKVxuIik7CkBAIC01ODA4LDcgKzU4MDgsNiBA
QCBzdWIgR2VuZXJhdGVDYWxsYmFja0hlYWRlckNvbnRlbnQKICAgICBwdXNoKEAkY29udGVudFJl
ZiwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25z
dCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSBpZiBAeyRjb25zdGFudHN9OwogCiAgICAgcHVz
aChAJGNvbnRlbnRSZWYsICIgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgJHtuYW1l
fSYpIGNvbnN0IG92ZXJyaWRlO1xuXG4iKSBpZiAkaW50ZXJmYWNlT3JDYWxsYmFjay0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q2FsbGJhY2tOZWVkc09wZXJhdG9yRXF1YWx9OwotICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgIHZpcnR1YWwgYm9vbCBjYW5JbnZva2UoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBBY3RpdmVET01DYWxsYmFjazo6Y2FuSW52b2tlQ2FsbGJhY2soKTsgfVxuXG4iKSBp
ZiAkaW50ZXJmYWNlT3JDYWxsYmFjay0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbGJhY2tOZWVk
c0Nhbkludm9rZX07CiAKICAgICAjIE9wZXJhdGlvbnMKICAgICBteSAkbnVtT3BlcmF0aW9ucyA9
IEB7JG9wZXJhdGlvbnN9OwpAQCAtNTgxNiwxNCArNTgxNSw2IEBAIHN1YiBHZW5lcmF0ZUNhbGxi
YWNrSGVhZGVyQ29udGVudAogICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIlxuICAgIC8vIEZ1
bmN0aW9uc1xuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskb3BlcmF0aW9u
c30pIHsKICAgICAgICAgICAgIG15IEBhcmd1bWVudHMgPSAoKTsKLQotICAgICAgICAgICAgbXkg
JGNhbGxiYWNrVGhpc09iamVjdCA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nh
bGxiYWNrVGhpc09iamVjdH07Ci0gICAgICAgICAgICBpZiAoJGNhbGxiYWNrVGhpc09iamVjdCkg
ewotICAgICAgICAgICAgICAgIG15ICR0aGlzT2JqZWN0VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5Q
YXJzZVR5cGUoJGNhbGxiYWNrVGhpc09iamVjdCk7Ci0gICAgICAgICAgICAgICAgbXkgJElETFR5
cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2VPckNhbGxiYWNrLCAkdGhpc09iamVjdFR5cGUpOwot
ICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgInR5cGVuYW1lICR7SURMVHlwZX06OlBh
cmFtZXRlclR5cGUgdGhpc09iamVjdCIpOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBm
b3JlYWNoIG15ICRhcmd1bWVudCAoQHskb3BlcmF0aW9uLT5hcmd1bWVudHN9KSB7CiAgICAgICAg
ICAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2VPckNhbGxiYWNrLCAk
YXJndW1lbnQtPnR5cGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgInR5cGVu
YW1lICR7SURMVHlwZX06OlBhcmFtZXRlclR5cGUgIiAuICRhcmd1bWVudC0+bmFtZSk7CkBAIC01
OTU1LDMxICs1OTQ2LDE1IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250
ZW50CiAgICAgICAgICAgICAjIEZJWE1FOiBDaGFuZ2UgdGhlIGRlZmF1bHQgbmFtZSAodXNlZCBm
b3IgY2FsbGJhY2sgZnVuY3Rpb25zKSB0byBzb21ldGhpbmcgb3RoZXIgdGhhbiBoYW5kbGVFdmVu
dC4gSXQgbWFrZXMgbGl0dGxlIHNlbnNlLgogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9
ICRvcGVyYXRpb24tPm5hbWUgfHwgImhhbmRsZUV2ZW50IjsKIAotICAgICAgICAgICAgbXkgQGFy
Z3VtZW50cyA9ICgpOwotCi0gICAgICAgICAgICBteSAkdGhpc1ZhbHVlID0gImpzVW5kZWZpbmVk
KCkiOwotCi0gICAgICAgICAgICBteSAkY2FsbGJhY2tUaGlzT2JqZWN0ID0gJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbGJhY2tUaGlzT2JqZWN0fTsKLSAgICAgICAgICAgIGlm
ICgkY2FsbGJhY2tUaGlzT2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgbXkgJHRoaXNPYmplY3RU
eXBlID0gJGNvZGVHZW5lcmF0b3ItPlBhcnNlVHlwZSgkY2FsbGJhY2tUaGlzT2JqZWN0KTsKLQot
ICAgICAgICAgICAgICAgIEFkZFRvSW5jbHVkZXNGb3JJRExUeXBlKCR0aGlzT2JqZWN0VHlwZSwg
JGluY2x1ZGVzUmVmLCAxKTsKLSAgICAgICAgICAgICAgICBteSAkSURMVHlwZSA9IEdldElETFR5
cGUoJGludGVyZmFjZU9yQ2FsbGJhY2ssICR0aGlzT2JqZWN0VHlwZSk7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAYXJndW1lbnRzLCAidHlwZW5hbWUgJHtJRExUeXBlfTo6UGFyYW1ldGVyVHlwZSB0
aGlzT2JqZWN0Iik7Ci0KLSAgICAgICAgICAgICAgICBteSAkdGhpc09iamVjdEFyZ3VtZW50ID0g
SURMQXJndW1lbnQtPm5ldygpOwotICAgICAgICAgICAgICAgICR0aGlzT2JqZWN0QXJndW1lbnQt
PnR5cGUoJHRoaXNPYmplY3RUeXBlKTsKLQotICAgICAgICAgICAgICAgICR0aGlzVmFsdWUgPSBO
YXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJHRoaXNPYmplY3RBcmd1bWVudCwgJGludGVy
ZmFjZU9yQ2FsbGJhY2ssICJ0aGlzT2JqZWN0IiwgImdsb2JhbE9iamVjdCIpOwotICAgICAgICAg
ICAgfQotCisgICAgICAgICAgICBteSBAYXJncyA9ICgpOwogICAgICAgICAgICAgZm9yZWFjaCBt
eSAkYXJndW1lbnQgKEB7JG9wZXJhdGlvbi0+YXJndW1lbnRzfSkgewogICAgICAgICAgICAgICAg
IEFkZFRvSW5jbHVkZXNGb3JJRExUeXBlKCRhcmd1bWVudC0+dHlwZSwgJGluY2x1ZGVzUmVmLCAx
KTsKKwogICAgICAgICAgICAgICAgIG15ICRJRExUeXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNl
T3JDYWxsYmFjaywgJGFyZ3VtZW50LT50eXBlKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBhcmd1
bWVudHMsICJ0eXBlbmFtZSAke0lETFR5cGV9OjpQYXJhbWV0ZXJUeXBlICIgLiAkYXJndW1lbnQt
Pm5hbWUpOworICAgICAgICAgICAgICAgIHB1c2goQGFyZ3MsICJ0eXBlbmFtZSAke0lETFR5cGV9
OjpQYXJhbWV0ZXJUeXBlICIgLiAkYXJndW1lbnQtPm5hbWUpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiR7bmF0aXZlUmV0dXJu
VHlwZX0gJHtjbGFzc05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3Vt
ZW50cykgLiAiKVxuIik7CisgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiR7bmF0aXZl
UmV0dXJuVHlwZX0gJHtjbGFzc05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwg
QGFyZ3MpIC4gIilcbiIpOwogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICJ7XG4iKTsK
IAogICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBuZWVkZWQgZm9yIE5vZGVGaWx0ZXIsIHdo
aWNoIHdvcmtzIGV2ZW4gZm9yIGRpc2Nvbm5lY3RlZCBpZnJhbWVzLiBXZSBzaG91bGQgaW52ZXN0
aWdhdGUKQEAgLTU5OTUsOCArNTk3MCw2IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50
YXRpb25Db250ZW50CiAgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7XG4iKTsKIAogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIg
ICAgYXV0byYgc3RhdGUgPSAqZ2xvYmFsT2JqZWN0Lmdsb2JhbEV4ZWMoKTtcbiIpOwotCi0gICAg
ICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9ICR7dGhp
c1ZhbHVlfTtcbiIpOwogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJncztcbiIpOwogCiAgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1
bWVudCAoQHskb3BlcmF0aW9uLT5hcmd1bWVudHN9KSB7CkBAIC02MDA3LDEwICs1OTgwLDEwIEBA
IHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW50CiAKICAgICAgICAgICAg
IG15ICRjYWxsYmFja0ludm9jYXRpb247CiAgICAgICAgICAgICBpZiAocmVmKCRpbnRlcmZhY2VP
ckNhbGxiYWNrKSBlcSAiSURMQ2FsbGJhY2tGdW5jdGlvbiIpIHsKLSAgICAgICAgICAgICAgICAk
Y2FsbGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigp
LCByZXR1cm5lZEV4Y2VwdGlvbikiOworICAgICAgICAgICAgICAgICRjYWxsYmFja0ludm9jYXRp
b24gPSAibV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbikiOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBteSAkY2FsbGJhY2tUeXBlID0gJG51
bU9wZXJhdGlvbnMgPiAxID8gIk9iamVjdCIgOiAiRnVuY3Rpb25Pck9iamVjdCI7Ci0gICAgICAg
ICAgICAgICAgJGNhbGxiYWNrSW52b2NhdGlvbiA9ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRo
aXNWYWx1ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6JHtjYWxsYmFja1R5
cGV9LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgXCIke2Z1bmN0aW9uTmFtZX1cIiksIHJl
dHVybmVkRXhjZXB0aW9uKSI7CisgICAgICAgICAgICAgICAgJGNhbGxiYWNrSW52b2NhdGlvbiA9
ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5
cGU6OiR7Y2FsbGJhY2tUeXBlfSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIFwiJHtmdW5j
dGlvbk5hbWV9XCIpLCByZXR1cm5lZEV4Y2VwdGlvbikiOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoJG9wZXJhdGlvbi0+dHlwZS0+bmFtZSBlcSAidm9pZCIpIHsKQEAgLTYwNDUs
MTEgKzYwMTgsMTIgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbnQK
ICAgICAgICAgfQogICAgIH0KIAorICAgICMgdG9KUygpIGltcGxlbWVudGF0aW9uLgogICAgIHB1
c2goQCRjb250ZW50UmVmLCAiSlNDOjpKU1ZhbHVlIHRvSlMoJHtuYW1lfSYgaW1wbClcbiIpOwog
ICAgIHB1c2goQCRjb250ZW50UmVmLCAie1xuIik7CiAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIg
ICAgaWYgKCFzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0mPihpbXBsKS5jYWxsYmFja0RhdGEoKSlc
biIpOwogICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICAgICByZXR1cm4ganNOdWxsKCk7XG5c
biIpOwotICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIHJldHVybiBzdGF0aWNfY2FzdDwke2Ns
YXNzTmFtZX0mPihpbXBsKS5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTtcbiIpOworICAgIHB1
c2goQCRjb250ZW50UmVmLCAiICAgIHJldHVybiBzdGF0aWNfY2FzdDwke2NsYXNzTmFtZX0mPihp
bXBsKS5jYWxsYmFja0RhdGEoKS0+Y2FsbGJhY2soKTtcblxuIik7CiAgICAgcHVzaChAJGNvbnRl
bnRSZWYsICJ9XG5cbiIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4IDM3YTc2Yjc5NmFkOWRhM2QxNDZlMTQxYmQ0
NzBlZDcxMTMwNmExN2EuLjQ1NjQ1MmY5NmQ4MGY0Njg5YjAzZDdlMjNjMGI2MGMxYjgzNTZlZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRl
cy5qc29uCkBAIC0zMSwxNSArMzEsOSBAQAogICAgICAgICAiQ2FjaGVkQXR0cmlidXRlIjogewog
ICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0KICAgICAgICAgfSwK
LSAgICAgICAgIkNhbGxiYWNrTmVlZHNDYW5JbnZva2UiOiB7Ci0gICAgICAgICAgICAiY29udGV4
dHNBbGxvd2VkIjogWyJjYWxsYmFjay1mdW5jdGlvbiJdCi0gICAgICAgIH0sCiAgICAgICAgICJD
YWxsYmFja05lZWRzT3BlcmF0b3JFcXVhbCI6IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImNhbGxiYWNrLWZ1bmN0aW9uIl0KICAgICAgICAgfSwKLSAgICAgICAgIkNhbGxiYWNr
VGhpc09iamVjdCI6IHsKLSAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImNhbGxiYWNr
LWZ1bmN0aW9uIiwgIm9wZXJhdGlvbiJdCi0gICAgICAgIH0sCiAgICAgICAgICJDYWxsV2l0aCI6
IHsKICAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImF0dHJpYnV0ZSIsICJvcGVyYXRp
b24iXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIkRvY3VtZW50IiwgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQiLCAiU2NyaXB0U3RhdGUiLCAiR2xvYmFsT2JqZWN0IiwgIkFjdGl2ZVdpbmRvdyIs
ICJGaXJzdFdpbmRvdyIsICJSZXNwb25zaWJsZURvY3VtZW50IiwgIldvcmxkIl0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KaW5kZXggN2M4NjdkNjZkZDU5
YTk4ZTFhZjRiZDZkMDg1YzU3NmMxYmNmYTlmZi4uZDJkNGU4NjliODA3NGY5Mzk2MWNkMDVjMzMz
MzZiYzc4NDY3N2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQ
YXJzZXIucG0KQEAgLTM0NiwzMCArMzQ2LDYgQEAgc3ViIFBhcnNlCiAgICAgcmV0dXJuICRkb2N1
bWVudDsKIH0KIAotc3ViIFBhcnNlVHlwZQotewotICAgIG15ICgkc2VsZiwgJHR5cGUsICRpZGxB
dHRyaWJ1dGVzKSA9IEBfOwotCi0gICAgJHNlbGYtPntMaW5lfSA9ICR0eXBlOwotICAgICRzZWxm
LT57RG9jdW1lbnRDb250ZW50fSA9ICR0eXBlOwotICAgICRzZWxmLT57RXh0ZW5kZWRBdHRyaWJ1
dGVNYXB9ID0gJGlkbEF0dHJpYnV0ZXM7Ci0KLSAgICBhZGRCdWlsdGluVHlwZWRlZnMoKTsKLQot
ICAgIG15ICRyZXN1bHQ7Ci0KLSAgICAkc2VsZi0+Z2V0VG9rZW4oKTsKLSAgICBldmFsIHsKLSAg
ICAgICAgJHJlc3VsdCA9ICRzZWxmLT5wYXJzZVR5cGUoKTsKLQotICAgICAgICBteSAkbmV4dCA9
ICRzZWxmLT5uZXh0VG9rZW4oKTsKLSAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkbmV4
dCwgRW1wdHlUb2tlbik7Ci0gICAgfTsKLSAgICBhc3NlcnQgJEAgLiAiIHBhcnNpbmcgdHlwZSAk
e3R5cGV9IiBpZiAkQDsKLQotICAgIHJldHVybiAkcmVzdWx0OwotfQotCiBzdWIgbmV4dFRva2Vu
CiB7CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
LmNwcAppbmRleCBhMzNkOTY1YjdiMmFhYjNjZTk2N2IyYmEwOWFlYjBiZjNiOTNlN2M5Li45ZjY3
NWJiZTAwY2YxOTY0NDg3YTZiNDQwZmJjNzkyZGUxMzA3YTBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrRnVuY3Rpb24uY3BwCkBAIC02NCwxMiArNjQsMTEgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlw
ZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrRnVu
Y3Rpb24KIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpn
bG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRl
ZmluZWQoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5k
KHRvSlM8SURMTG9uZz4oYXJndW1lbnQpKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VD
YWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1
bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBhdXRvIGpzUmVz
dWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAg
aWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUs
IHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6
RXhjZXB0aW9uVGhyb3duOwpAQCAtODcsNiArODYsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhUZXN0
Q2FsbGJhY2tGdW5jdGlvbiYgaW1wbCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEpTVGVzdENhbGxiYWNrRnVuY3Rpb24mPihpbXBsKS5jYWxsYmFj
a0RhdGEoKS0+Y2FsbGJhY2soKTsKKwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvblJldGhyb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmNwcAppbmRleCAzZDUxYjU1
YjcyM2FiNDcwMTE2YzY3YjVhOWZkYzdlNTVkY2VmYWRmLi42YzMyZWUwY2M0ZDE0OWMyODhlOGZl
N2VlYTIyOTNmODc2ZDk1OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uUmV0aHJvdy5jcHAKQEAgLTY3LDEyICs2NywxMSBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
bgogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8mIHN0YXRlID0gKmdsb2Jh
bE9iamVjdC5nbG9iYWxFeGVjKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9K
UzxJRExTZXF1ZW5jZTxJRExMb25nPj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgYXJndW1lbnQpKTsK
IAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBh
dXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpT
Q2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVy
bmVkRXhjZXB0aW9uKTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFj
ayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmll
cigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAg
ICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAg
ICB0aHJvd0V4Y2VwdGlvbigmc3RhdGUsIHRocm93U2NvcGUsIHJldHVybmVkRXhjZXB0aW9uKTsK
QEAgLTkxLDYgKzkwLDcgQEAgSlNDOjpKU1ZhbHVlIHRvSlMoVGVzdENhbGxiYWNrRnVuY3Rpb25S
ZXRocm93JiBpbXBsKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cmPihpbXBsKS5jYWxsYmFja0Rh
dGEoKS0+Y2FsbGJhY2soKTsKKwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJh
Y2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjM4NmMwZTEwYjkzMjRmMWEzYjA5OTljNWJi
YjY5MjVhNjFlN2Q4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBA
QAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHBy
b2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5k
aW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmgiCi0KLSNpbmNsdWRlICJK
U0RPTUNvbnZlcnRJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJKU0RPTUNvbnZlcnRTZXF1ZW5jZXMu
aCIKLSNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCi0jaW5jbHVkZSAiSlNET01H
bG9iYWxPYmplY3QuaCIKLSNpbmNsdWRlICJKU1Rlc3ROb2RlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgotI2luY2x1
ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBKU0M7Ci0KLW5hbWVzcGFj
ZSBXZWJDb3JlIHsKLQotSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0OjpKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoSlNPYmplY3QqIGNhbGxiYWNrLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotICAgIDogVGVzdENhbGxiYWNrRnVuY3Rpb25X
aXRoVGhpc09iamVjdCgpCi0gICAgLCBBY3RpdmVET01DYWxsYmFjayhnbG9iYWxPYmplY3QtPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAsIG1fZGF0YShuZXcgSlNDYWxsYmFja0RhdGFT
dHJvbmcoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCwgdGhpcykpCi17Ci19Ci0KLUpTVGVzdENhbGxi
YWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdDo6fkpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhp
c09iamVjdCgpCi17Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKTsKLSAgICAvLyBXaGVuIHRoZSBjb250ZXh0IGlzIGRlc3Ryb3ll
ZCwgYWxsIHRhc2tzIHdpdGggYSByZWZlcmVuY2UgdG8gYSBjYWxsYmFjawotICAgIC8vIHNob3Vs
ZCBiZSBkZWxldGVkLiBTbyBpZiB0aGUgY29udGV4dCBpcyAwLCB3ZSBhcmUgb24gdGhlIGNvbnRl
eHQgdGhyZWFkLgotICAgIGlmICghY29udGV4dCB8fCBjb250ZXh0LT5pc0NvbnRleHRUaHJlYWQo
KSkKLSAgICAgICAgZGVsZXRlIG1fZGF0YTsKLSAgICBlbHNlCi0gICAgICAgIGNvbnRleHQtPnBv
c3RUYXNrKERlbGV0ZUNhbGxiYWNrRGF0YVRhc2sobV9kYXRhKSk7Ci0jaWZuZGVmIE5ERUJVRwot
ICAgIG1fZGF0YSA9IG51bGxwdHI7Ci0jZW5kaWYKLX0KLQotQ2FsbGJhY2tSZXN1bHQ8dHlwZW5h
bWUgSURMVm9pZDo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFRoaXNPYmplY3Q6OmhhbmRsZUV2ZW50KHR5cGVuYW1lIElETEludGVyZmFjZTxUZXN0Tm9kZT46
OlBhcmFtZXRlclR5cGUgdGhpc09iamVjdCwgdHlwZW5hbWUgSURMU2VxdWVuY2U8SURMSW50ZXJm
YWNlPFRlc3ROb2RlPj46OlBhcmFtZXRlclR5cGUgcGFyYW1ldGVyKQotewotICAgIGlmICghY2Fu
SW52b2tlQ2FsbGJhY2soKSkKLSAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6VW5h
YmxlVG9FeGVjdXRlOwotCi0gICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09i
amVjdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7Ci0KLSAgICBhdXRvJiBnbG9iYWxPYmplY3QgPSAq
bV9kYXRhLT5nbG9iYWxPYmplY3QoKTsKLSAgICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC52bSgp
OwotCi0gICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwotICAgIGF1dG8mIHN0YXRlID0gKmdsb2Jh
bE9iamVjdC5nbG9iYWxFeGVjKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSB0b0pTPElETElu
dGVyZmFjZTxUZXN0Tm9kZT4+KHN0YXRlLCBnbG9iYWxPYmplY3QsIHRoaXNPYmplY3QpOwotICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQodG9KUzxJRExTZXF1
ZW5jZTxJRExJbnRlcmZhY2U8VGVzdE5vZGU+Pj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgcGFyYW1l
dGVyKSk7Ci0KLSAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247
Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tE
YXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0
aW9uKTsKLSAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKLSAgICAgICAgcmVwb3J0RXhjZXB0
aW9uKCZzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwotICAgICAgICByZXR1cm4gQ2FsbGJhY2tS
ZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247Ci0gICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19
Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKFRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3Qm
IGltcGwpCi17Ci0gICAgaWYgKCFzdGF0aWNfY2FzdDxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFRoaXNPYmplY3QmPihpbXBsKS5jYWxsYmFja0RhdGEoKSkKLSAgICAgICAgcmV0dXJuIGpzTnVs
bCgpOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRo
VGhpc09iamVjdCY+KGltcGwpLmNhbGxiYWNrRGF0YSgpLT5jYWxsYmFjaygpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbldpdGhUaGlzT2JqZWN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYTlk
ZWI3MDE3ODQ2ZGM4OWE2YTUwOWU4MWY1MDE3YjViNGMwNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
V2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCi0gICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVy
YXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKLQotICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0g
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLQotICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0qLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIkFjdGl2ZURPTUNhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSURMVHlw
ZXMuaCIKLSNpbmNsdWRlICJKU0NhbGxiYWNrRGF0YS5oIgotI2luY2x1ZGUgIlRlc3RDYWxsYmFj
a0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhp
c09iamVjdCBmaW5hbCA6IHB1YmxpYyBUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0
LCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8SlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0PiBjcmVhdGUoSlNDOjpKU09iamVjdCog
Y2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmpl
Y3QoY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0K
LQotICAgIHZpcnR1YWwgfkpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdCgpOwot
ICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBjYWxsYmFja0RhdGEoKSB7IHJldHVybiBtX2RhdGE7
IH0KLQotICAgIC8vIEZ1bmN0aW9ucwotICAgIHZpcnR1YWwgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5h
bWUgSURMVm9pZDo6SW1wbGVtZW50YXRpb25UeXBlPiBoYW5kbGVFdmVudCh0eXBlbmFtZSBJRExJ
bnRlcmZhY2U8VGVzdE5vZGU+OjpQYXJhbWV0ZXJUeXBlIHRoaXNPYmplY3QsIHR5cGVuYW1lIElE
TFNlcXVlbmNlPElETEludGVyZmFjZTxUZXN0Tm9kZT4+OjpQYXJhbWV0ZXJUeXBlIHBhcmFtZXRl
cikgb3ZlcnJpZGU7Ci0KLXByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhU
aGlzT2JqZWN0KEpTQzo6SlNPYmplY3QqLCBKU0RPTUdsb2JhbE9iamVjdCopOwotCi0gICAgSlND
YWxsYmFja0RhdGFTdHJvbmcqIG1fZGF0YTsKLX07Ci0KLUpTQzo6SlNWYWx1ZSB0b0pTKFRlc3RD
YWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QmKTsKLWlubGluZSBKU0M6OkpTVmFsdWUgdG9K
UyhUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KiBpbXBsKSB7IHJldHVybiBpbXBs
ID8gdG9KUygqaW1wbCkgOiBKU0M6OmpzTnVsbCgpOyB9Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZz
LmNwcAppbmRleCBhYmRjN2EyZDBkNzAwMTlmOTJmYzE5YWNiYzAyMjFhZGRmMTdiM2U4Li5jNTI4
MmQ1YTRkYTgyMGUyODRmYTI0NmVjZDU4YzYxMjc5N2MyZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldp
dGhUeXBlZGVmcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuY3BwCkBAIC02NywxMyArNjcs
MTIgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVm9pZDo6SW1wbGVtZW50YXRpb25UeXBl
PiBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFQKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOwotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMU2VxdWVuY2U8SURMTnVsbGFibGU8SURM
TG9uZz4+PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBzZXF1ZW5jZUFyZykpOwogICAgIGFyZ3MuYXBw
ZW5kKHRvSlM8SURMTG9uZz4obG9uZ0FyZykpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRp
b24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1Zh
bHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRp
ZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwgSWRlbnRpZmllcigp
LCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7CiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICAgICAg
cmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAtODgsNiArODcs
NyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcyYg
aW1wbCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMmPihpbXBsKS5jYWxsYmFja0RhdGEo
KS0+Y2FsbGJhY2soKTsKKwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcAppbmRleCBlMmI1ZjQ2YTNlYWZlZDMwMWRjYTk2MGQw
ZWQ2NmQxNTY0OGIxYzg4Li4wNmMwZTZmYmMwMzcxODY2YTkxN2MxZjM0ZmI0ZDRjZGE0ZmM5ZmJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVyZmFjZS5jcHAKQEAgLTM1LDcgKzM1LDYg
QEAKICNpbmNsdWRlICJKU0RPTUdsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTRE9NU3RyaW5n
TGlzdC5oIgogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIKLSNpbmNsdWRlICJKU1Rlc3RPYmouaCIK
ICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oPgpA
QCAtMTY5LDExICsxNjgsMTAgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVm9pZDo6SW1w
bGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2EKIAogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmplY3QuZ2xvYmFs
RXhlYygpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IHJl
dHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBh
cmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnZtLCAiY2FsbGJhY2tXaXRoTm9QYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7
CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJh
Y2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY2FsbGJhY2tXaXRo
Tm9QYXJhbSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
KSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsK
ICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAt
MTk0LDEyICsxOTIsMTEgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMVm9pZDo6SW1wbGVt
ZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZTo6Y2EKIAogICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmplY3QuZ2xvYmFsRXhl
YygpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMRmxvYXQzMkFycmF5
PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBhcnJheVBhcmFtKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6
OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFj
ayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjYWxsYmFja1dpdGhBcnJheVBhcmFtIiksIHJl
dHVybmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2Fs
bGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
dm0sICJjYWxsYmFja1dpdGhBcnJheVBhcmFtIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBp
ZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZzdGF0ZSwg
cmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpF
eGNlcHRpb25UaHJvd247CkBAIC0yMjAsMTMgKzIxNywxMiBAQCBDYWxsYmFja1Jlc3VsdDx0eXBl
bmFtZSBJRExWb2lkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNl
OjpjYQogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8mIHN0YXRlID0gKmds
b2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVm
aW5lZCgpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQo
dG9KUzxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4oc3Rh
dGUsIGdsb2JhbE9iamVjdCwgc3J6UGFyYW0pKTsKICAgICBhcmdzLmFwcGVuZCh0b0pTPElETERP
TVN0cmluZz4oc3RhdGUsIHN0clBhcmFtKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFs
dWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmll
cjo6ZnJvbVN0cmluZygmdm0sICJjYWxsYmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJh
bSIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAiY2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0iKSwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2VwdGlvbikgewogICAgICAgICBy
ZXBvcnRFeGNlcHRpb24oJnN0YXRlLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgICAgIHJldHVy
biBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsKQEAgLTI0NywxMiArMjQzLDEx
IEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFZvaWQ6OkltcGxlbWVudGF0aW9uVHlwZT4g
SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhCiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7
CiAgICAgYXV0byYgc3RhdGUgPSAqZ2xvYmFsT2JqZWN0Lmdsb2JhbEV4ZWMoKTsKLSAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIg
YXJnczsKICAgICBhcmdzLmFwcGVuZCh0b0pTPElETEludGVyZmFjZTxET01TdHJpbmdMaXN0Pj4o
c3RhdGUsIGdsb2JhbE9iamVjdCwgbGlzdFBhcmFtKSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4
Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0
aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjYWxsYmFja1dpdGhTdHJpbmdMaXN0IiksIHJldHVy
bmVkRXhjZXB0aW9uKTsKKyAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJh
Y2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0s
ICJjYWxsYmFja1dpdGhTdHJpbmdMaXN0IiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAo
cmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZzdGF0ZSwgcmV0
dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNl
cHRpb25UaHJvd247CkBAIC0yNzMsMTIgKzI2OCwxMSBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFt
ZSBJRExWb2lkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlOjpj
YQogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8mIHN0YXRlID0gKmdsb2Jh
bE9iamVjdC5nbG9iYWxFeGVjKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9K
UzxJRExCb29sZWFuPihib29sUGFyYW0pKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9u
PiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBtX2RhdGEtPmludm9rZUNhbGxiYWNrKHRoaXNWYWx1
ZSwgYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKCZ2bSwgImNhbGxiYWNrV2l0aEJvb2xlYW4iKSwgcmV0dXJuZWRFeGNlcHRp
b24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNh
bGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgImNhbGxiYWNr
V2l0aEJvb2xlYW4iKSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgIGlmIChyZXR1cm5lZEV4Y2Vw
dGlvbikgewogICAgICAgICByZXBvcnRFeGNlcHRpb24oJnN0YXRlLCByZXR1cm5lZEV4Y2VwdGlv
bik7CiAgICAgICAgIHJldHVybiBDYWxsYmFja1Jlc3VsdFR5cGU6OkV4Y2VwdGlvblRocm93bjsK
QEAgLTI5OSwxMyArMjkzLDEyIEBAIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETFZvaWQ6Oklt
cGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmNhCiAKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayh2bSk7CiAgICAgYXV0byYgc3RhdGUgPSAqZ2xvYmFsT2JqZWN0Lmdsb2Jh
bEV4ZWMoKTsKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZCh0b0pTPElETExvbmc+KGxv
bmdQYXJhbSkpOwogICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMSW50ZXJmYWNlPFRlc3ROb2RlPj4o
c3RhdGUsIGdsb2JhbE9iamVjdCwgdGVzdE5vZGVQYXJhbSkpOwogCiAgICAgTmFrZWRQdHI8SlND
OjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJh
Y2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY2FsbGJhY2tSZXF1aXJlc1RoaXNUb1Bhc3Mi
KSwgcmV0dXJuZWRFeGNlcHRpb24pOworICAgIG1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywg
SlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgImNhbGxiYWNrUmVxdWlyZXNUaGlzVG9QYXNzIiksIHJldHVybmVkRXhjZXB0aW9u
KTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9u
KCZzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1
bHRUeXBlOjpFeGNlcHRpb25UaHJvd247CkBAIC0zMjYsMTEgKzMxOSwxMCBAQCBDYWxsYmFja1Jl
c3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2Fs
bGJhY2tJbnRlcmZhYwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8mIHN0
YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBqc1VuZGVmaW5lZCgpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAKICAgICBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0gICAgYXV0byBqc1Jl
c3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNr
RGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAi
Y2FsbGJhY2tXaXRoQVJldHVyblZhbHVlIiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBhdXRv
IGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6
Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY2FsbGJh
Y2tXaXRoQVJldHVyblZhbHVlIiksIHJldHVybmVkRXhjZXB0aW9uKTsKICAgICBpZiAocmV0dXJu
ZWRFeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZzdGF0ZSwgcmV0dXJuZWRF
eGNlcHRpb24pOwogICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25U
aHJvd247CkBAIC0zNTQsMTIgKzM0NiwxMSBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExE
T01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4gSlNUZXN0Q2FsbGJhY2tJbnRlcmZhYwogCiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9iamVj
dC5nbG9iYWxFeGVjKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwog
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9KUzxJRExF
bnVtZXJhdGlvbjxUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OkVudW0+PihzdGF0ZSwgZW51bVBhcmFt
KSk7CiAKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gcmV0dXJuZWRFeGNlcHRpb247Ci0g
ICAgYXV0byBqc1Jlc3VsdCA9IG1fZGF0YS0+aW52b2tlQ2FsbGJhY2sodGhpc1ZhbHVlLCBhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAiY2FsbGJhY2tUaGF0UmV0aHJvd3NFeGNlcHRpb25zIiksIHJldHVybmVkRXhj
ZXB0aW9uKTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayhhcmdz
LCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpPYmplY3QsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcoJnZtLCAiY2FsbGJhY2tUaGF0UmV0aHJvd3NFeGNlcHRpb25zIiksIHJldHVybmVkRXhj
ZXB0aW9uKTsKICAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKICAgICAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHRocm93RXhjZXB0aW9u
KCZzdGF0ZSwgdGhyb3dTY29wZSwgcmV0dXJuZWRFeGNlcHRpb24pOwpAQCAtMzgxLDQxICszNzIs
MTEgQEAgQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlv
blR5cGU+IEpTVGVzdENhbGxiYWNrSW50ZXJmYWMKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKHZt
KTsKICAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpOwotICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0ganNVbmRlZmluZWQoKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZl
ciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMRGljdGlvbmFyeTxUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2U6OkRpY3Rpb25hcnk+PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCBkaWN0aW9uYXJ5UGFy
YW0pKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsK
LSAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRhLT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFy
Z3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZygmdm0sICJjYWxsYmFja1RoYXRTa2lwc0ludm9rZUNoZWNrIiksIHJldHVybmVkRXhj
ZXB0aW9uKTsKLSAgICBpZiAocmV0dXJuZWRFeGNlcHRpb24pIHsKLSAgICAgICAgcmVwb3J0RXhj
ZXB0aW9uKCZzdGF0ZSwgcmV0dXJuZWRFeGNlcHRpb24pOwotICAgICAgICByZXR1cm4gQ2FsbGJh
Y2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247Ci0gICAgIH0KLQotICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIGpzUmVzdWx0KTsKLSAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duKTsK
LSAgICByZXR1cm4gV1RGTW92ZShyZXR1cm5WYWx1ZSk7Ci19Ci0KLUNhbGxiYWNrUmVzdWx0PHR5
cGVuYW1lIElETERPTVN0cmluZzo6SW1wbGVtZW50YXRpb25UeXBlPiBKU1Rlc3RDYWxsYmFja0lu
dGVyZmFjZTo6Y2FsbGJhY2tXaXRoVGhpc09iamVjdCh0eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVz
dE5vZGU+OjpQYXJhbWV0ZXJUeXBlIHRoaXNPYmplY3QsIHR5cGVuYW1lIElETEludGVyZmFjZTxU
ZXN0T2JqPjo6UGFyYW1ldGVyVHlwZSB0ZXN0T2JqUGFyYW0pCi17Ci0gICAgaWYgKCFjYW5JbnZv
a2VDYWxsYmFjaygpKQotICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpVbmFibGVU
b0V4ZWN1dGU7Ci0KLSAgICBSZWY8SlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwotCi0gICAgYXV0byYgZ2xvYmFsT2JqZWN0ID0gKm1fZGF0YS0+Z2xvYmFsT2Jq
ZWN0KCk7Ci0gICAgYXV0byYgdm0gPSBnbG9iYWxPYmplY3Qudm0oKTsKLQotICAgIEpTTG9ja0hv
bGRlciBsb2NrKHZtKTsKLSAgICBhdXRvJiBzdGF0ZSA9ICpnbG9iYWxPYmplY3QuZ2xvYmFsRXhl
YygpOwotICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gdG9KUzxJRExJbnRlcmZhY2U8VGVzdE5vZGU+
PihzdGF0ZSwgZ2xvYmFsT2JqZWN0LCB0aGlzT2JqZWN0KTsKLSAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmdzOwotICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pihz
dGF0ZSwgZ2xvYmFsT2JqZWN0LCB0ZXN0T2JqUGFyYW0pKTsKLQotICAgIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiByZXR1cm5lZEV4Y2VwdGlvbjsKLSAgICBhdXRvIGpzUmVzdWx0ID0gbV9kYXRh
LT5pbnZva2VDYWxsYmFjayh0aGlzVmFsdWUsIGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFj
a1R5cGU6Ok9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sICJjYWxsYmFja1dpdGhU
aGlzT2JqZWN0IiksIHJldHVybmVkRXhjZXB0aW9uKTsKKyAgICBhdXRvIGpzUmVzdWx0ID0gbV9k
YXRhLT5pbnZva2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpP
YmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCAiY2FsbGJhY2tUaGF0U2tpcHNJbnZv
a2VDaGVjayIpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
KSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIHJldHVybmVkRXhjZXB0aW9uKTsK
ICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpAQCAt
NDMzLDYgKzM5NCw3IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKFRlc3RDYWxsYmFja0ludGVyZmFjZSYg
aW1wbCkKICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEpTVGVzdENhbGxiYWNrSW50ZXJmYWNlJj4oaW1wbCkuY2FsbGJhY2tEYXRhKCktPmNhbGxiYWNr
KCk7CisKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UuaAppbmRleCAxOTk3ZGIxYTY2YjM1ZmFjZmE2MDZmODgxOTliYjlmZGI1MTA5ZTg2
Li4yNWVmMDRhZWI4YTM0NjI1MGQ0NGU3MzAyZjQ5MWY1Y2E1NWVlOWY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaApAQCAtNTYsNyArNTYsNiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9u
VHlwZT4gY2FsbGJhY2tXaXRoQVJldHVyblZhbHVlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBD
YWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExET01TdHJpbmc6OkltcGxlbWVudGF0aW9uVHlwZT4g
Y2FsbGJhY2tUaGF0UmV0aHJvd3NFeGNlcHRpb25zKHR5cGVuYW1lIElETEVudW1lcmF0aW9uPFRl
c3RDYWxsYmFja0ludGVyZmFjZTo6RW51bT46OlBhcmFtZXRlclR5cGUgZW51bVBhcmFtKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHR5cGVuYW1lIElETERPTVN0cmluZzo6
SW1wbGVtZW50YXRpb25UeXBlPiBjYWxsYmFja1RoYXRTa2lwc0ludm9rZUNoZWNrKHR5cGVuYW1l
IElETERpY3Rpb25hcnk8VGVzdENhbGxiYWNrSW50ZXJmYWNlOjpEaWN0aW9uYXJ5Pjo6UGFyYW1l
dGVyVHlwZSBkaWN0aW9uYXJ5UGFyYW0pIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgQ2FsbGJhY2tS
ZXN1bHQ8dHlwZW5hbWUgSURMRE9NU3RyaW5nOjpJbXBsZW1lbnRhdGlvblR5cGU+IGNhbGxiYWNr
V2l0aFRoaXNPYmplY3QodHlwZW5hbWUgSURMSW50ZXJmYWNlPFRlc3ROb2RlPjo6UGFyYW1ldGVy
VHlwZSB0aGlzT2JqZWN0LCB0eXBlbmFtZSBJRExJbnRlcmZhY2U8VGVzdE9iaj46OlBhcmFtZXRl
clR5cGUgdGVzdE9ialBhcmFtKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBKU1Rlc3RDYWxs
YmFja0ludGVyZmFjZShKU0M6OkpTT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lk
Q2FsbGJhY2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IDhkOWM1NWEwZjAyODZk
YzYwZmIwNGRjMTFmYzA4YTljMzg1MjM4ZjUuLjEzYTM0ZWQxYTkzZjU5NDUzNWMxYTI1YjE1YTE0
YTg2YTBkYWEzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uLmNw
cApAQCAtNzQsNyArNzQsNiBAQCBDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSBJRExWb2lkOjpJbXBs
ZW1lbnRhdGlvblR5cGU+IEpTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uOgogCiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sodm0pOwogICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxF
eGVjKCk7Ci0gICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOwogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQodG9KUzxJRExGbG9hdDMyQXJy
YXk+KHN0YXRlLCBnbG9iYWxPYmplY3QsIGFycmF5UGFyYW0pKTsKICAgICBhcmdzLmFwcGVuZCh0
b0pTPElETFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PihzdGF0
ZSwgZ2xvYmFsT2JqZWN0LCBzcnpQYXJhbSkpOwpAQCAtODQsNyArODMsNyBAQCBDYWxsYmFja1Jl
c3VsdDx0eXBlbmFtZSBJRExWb2lkOjpJbXBsZW1lbnRhdGlvblR5cGU+IEpTVGVzdFZvaWRDYWxs
YmFja0Z1bmN0aW9uOgogICAgIGFyZ3MuYXBwZW5kKHRvSlM8SURMSW50ZXJmYWNlPFRlc3ROb2Rl
Pj4oc3RhdGUsIGdsb2JhbE9iamVjdCwgdGVzdE5vZGVQYXJhbSkpOwogCiAgICAgTmFrZWRQdHI8
SlNDOjpFeGNlcHRpb24+IHJldHVybmVkRXhjZXB0aW9uOwotICAgIG1fZGF0YS0+aW52b2tlQ2Fs
bGJhY2sodGhpc1ZhbHVlLCBhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5j
dGlvbiwgSWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CisgICAgbV9kYXRhLT5pbnZv
a2VDYWxsYmFjayhhcmdzLCBKU0NhbGxiYWNrRGF0YTo6Q2FsbGJhY2tUeXBlOjpGdW5jdGlvbiwg
SWRlbnRpZmllcigpLCByZXR1cm5lZEV4Y2VwdGlvbik7CiAgICAgaWYgKHJldHVybmVkRXhjZXB0
aW9uKSB7CiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbigmc3RhdGUsIHJldHVybmVkRXhjZXB0aW9u
KTsKICAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6RXhjZXB0aW9uVGhyb3duOwpA
QCAtOTksNiArOTgsNyBAQCBKU0M6OkpTVmFsdWUgdG9KUyhUZXN0Vm9pZENhbGxiYWNrRnVuY3Rp
b24mIGltcGwpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxKU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbiY+KGltcGwpLmNhbGxiYWNrRGF0YSgpLT5j
YWxsYmFjaygpOworCiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbGJhY2tGdW5jdGlvbldp
dGhUaGlzT2JqZWN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmlkbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNjE2YWI4NmVmOGUwMjg4YjJiMmRkOTFhZGI4YWZiNjIxYmM1ZDQ5ZS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVj
dC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVsKLSAgICBDYWxsYmFja1RoaXNPYmplY3Q9VGVz
dE5vZGUKLV0gY2FsbGJhY2sgVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdCA9IHZv
aWQgKHNlcXVlbmNlPFRlc3ROb2RlPiBwYXJhbWV0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsYmFja0ludGVyZmFjZS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrSW50ZXJmYWNl
LmlkbAppbmRleCBlMjRjN2JiYjU4NWJkNGNjMzhkY2E0NjFjNTRjYWFmOGM0MTdkNjhhLi42Mzgw
ZWVmZjJhOTgzYzZmMzM3MTdhZjZlNTU0NzYxNTk3Njc4Y2EyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrSW50ZXJmYWNlLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxiYWNrSW50
ZXJmYWNlLmlkbApAQCAtNTIsNSArNTIsNCBAQCBkaWN0aW9uYXJ5IFRlc3RDYWxsYmFja0ludGVy
ZmFjZURpY3Rpb25hcnkgewogICAgIERPTVN0cmluZyBjYWxsYmFja1dpdGhBUmV0dXJuVmFsdWUo
KTsKICAgICBbUmV0aHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIGNhbGxiYWNrVGhhdFJldGhyb3dz
RXhjZXB0aW9ucyhUZXN0Q2FsbGJhY2tJbnRlcmZhY2VFbnVtIGVudW1QYXJhbSk7CiAgICAgW1Nr
aXBDYWxsYmFja0ludm9rZUNoZWNrXSBET01TdHJpbmcgY2FsbGJhY2tUaGF0U2tpcHNJbnZva2VD
aGVjayhUZXN0Q2FsbGJhY2tJbnRlcmZhY2VEaWN0aW9uYXJ5IGRpY3Rpb25hcnlQYXJhbSk7Ci0g
ICAgW0NhbGxiYWNrVGhpc09iamVjdD1UZXN0Tm9kZV0gRE9NU3RyaW5nIGNhbGxiYWNrV2l0aFRo
aXNPYmplY3QoVGVzdE9iaiB0ZXN0T2JqUGFyYW0pOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Gb250RmFjZVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlU2V0
LmgKaW5kZXggZWVhNmRmZTU3MDZhOThmNTNkYTE2MmU0OGZiMWI0OWRjM2M2OGNiMy4uZTg0ZDA5
NWVjY2JkYWIwMDc4NjgwMTRiMjM4NjIyMDQyY2UxMzk4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGYWNlU2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
U2V0LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgUGVuZGluZ1Byb21pc2Uo
TG9hZFByb21pc2UmJik7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIFZlY3RvcjxSZWY8Rm9udEZh
Y2U+PiBmYWNlczsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxGb250RmFjZT4+IGZhY2VzOwogICAg
ICAgICBMb2FkUHJvbWlzZSBwcm9taXNlOwogICAgICAgICBib29sIGhhc1JlYWNoZWRUZXJtaW5h
bFN0YXRlIHsgZmFsc2UgfTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkNhbGxiYWNr
LmgKaW5kZXggMzc1MTE3ODU0ZGQ3NTZkMGFiNWYyNjUyMTQ0OGI1ZTVmZDBiNmNmMS4uZmJjMzVj
ZTI3NDM3OTM3NzU3Mjk0ZjcyN2VmMzFhMDYwNzI4YmFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL011dGF0aW9uQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0
YXRpb25DYWxsYmFjay5oCkBAIC0zMCw3ICszMCw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5j
bHVkZSAiQ2FsbGJhY2tSZXN1bHQuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC00NCw4ICs0Myw4
IEBAIGNsYXNzIE11dGF0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvbkNh
bGxiYWNrPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TXV0YXRpb25DYWxsYmFjaygpIHsgfQog
Ci0gICAgdmlydHVhbCBDYWxsYmFja1Jlc3VsdDx2b2lkPiBoYW5kbGVFdmVudChNdXRhdGlvbk9i
c2VydmVyJiwgY29uc3QgVmVjdG9yPFJlZjxNdXRhdGlvblJlY29yZD4+JiwgTXV0YXRpb25PYnNl
cnZlciYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgY2FuSW52b2tlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBjYWxsKGNvbnN0IFZlY3RvcjxSZWY8TXV0YXRpb25SZWNvcmQ+PiYsIE11
dGF0aW9uT2JzZXJ2ZXIqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNhbkludm9rZUNhbGxiYWNr
KCkgY29uc3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uQ2FsbGJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uQ2FsbGJhY2suaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
NDczOTQ0NGY1ZDJkODkzMGI4MTkxZTMwNTViZmY3ODlmYzU4MWQ1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bkNhbGxiYWNrLmlkbAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci1bCi0gICAgQ2FsbGJhY2tOZWVkc0Nhbkludm9rZSwKLSAgICBDYWxsYmFja1RoaXNPYmplY3Q9
TXV0YXRpb25PYnNlcnZlcgotXSBjYWxsYmFjayBNdXRhdGlvbkNhbGxiYWNrID0gdm9pZCAoc2Vx
dWVuY2U8TXV0YXRpb25SZWNvcmQ+IG11dGF0aW9ucywgTXV0YXRpb25PYnNlcnZlciBvYnNlcnZl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5kZXggNjI1NzQ1OTlh
ZjViNjRhM2Q0Yjk1ZmNiZGFmM2VhZmE2N2E1ODk0Yi4uMGI0YjFmOTBkNjgyOTFkOGE0ZjkyMDZi
ODBhOWM2OWRmMWM4MDkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9u
T2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNw
cApAQCAtMjA5LDcgKzIwOSw3IEBAIEhhc2hTZXQ8Tm9kZSo+IE11dGF0aW9uT2JzZXJ2ZXI6Om9i
c2VydmVkTm9kZXMoKSBjb25zdAogCiBib29sIE11dGF0aW9uT2JzZXJ2ZXI6OmNhbkRlbGl2ZXIo
KQogewotICAgIHJldHVybiBtX2NhbGxiYWNrLT5jYW5JbnZva2UoKTsKKyAgICByZXR1cm4gbV9j
YWxsYmFjay0+Y2FuSW52b2tlQ2FsbGJhY2soKTsKIH0KIAogdm9pZCBNdXRhdGlvbk9ic2VydmVy
OjpkZWxpdmVyKCkKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6OmRl
bGl2ZXIoKQogICAgIFZlY3RvcjxSZWY8TXV0YXRpb25SZWNvcmQ+PiByZWNvcmRzOwogICAgIHJl
Y29yZHMuc3dhcChtX3JlY29yZHMpOwogCi0gICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQoKnRo
aXMsIHJlY29yZHMsICp0aGlzKTsKKyAgICBtX2NhbGxiYWNrLT5jYWxsKHJlY29yZHMsIHRoaXMp
OwogfQogCiB2b2lkIE11dGF0aW9uT2JzZXJ2ZXI6Om5vdGlmeU11dGF0aW9uT2JzZXJ2ZXJzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmlkbAppbmRleCA4ZjIzODRlOWYxNTI3
MmJmZjkwNmM2N2UxYWE0YWEzZDBkMjAxYzc0Li43ZTAzYjM0NTIxZTUyMDQ4NzU2MjExMTFiNWJm
MWNlM2MwOTdkN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuaWRsCkBA
IC0yOSw3ICsyOSw3IEBACiAgKi8KIAogWwotICAgIENvbnN0cnVjdG9yKE11dGF0aW9uQ2FsbGJh
Y2sgY2FsbGJhY2spLAorICAgIEN1c3RvbUNvbnN0cnVjdG9yKE11dGF0aW9uQ2FsbGJhY2sgY2Fs
bGJhY2spLAogICAgIEN1c3RvbUlzUmVhY2hhYmxlLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NW
VGFibGUsCiAgICAgTGVnYWN5V2luZG93QWxpYXM9V2ViS2l0TXV0YXRpb25PYnNlcnZlciwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFj
ay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmgK
aW5kZXggYjFkNmVhZmMxMDFjYzI1YWMyNzRhMGE1M2NjOTUyMjMxZTc5N2MyZi4uNTliYTdiMDI2
YzFkOTAzN2UzNjhmMjk4NmNiYjQzYWYxZTU1NTEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNrLmgKQEAgLTM5LDcgKzM5LDcgQEAg
Y2xhc3MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeTsKIGNsYXNzIEludGVyc2VjdGlvbk9ic2Vy
dmVyQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxi
YWNrPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFj
aygpIHsgfQotICAgIHZpcnR1YWwgQ2FsbGJhY2tSZXN1bHQ8dm9pZD4gaGFuZGxlRXZlbnQoY29u
c3QgVmVjdG9yPFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Pj4mLCBJbnRlcnNlY3Rpb25P
YnNlcnZlciYpID0gMDsKKyAgICB2aXJ0dWFsIENhbGxiYWNrUmVzdWx0PHZvaWQ+IGhhbmRsZUV2
ZW50KGNvbnN0IFZlY3RvcjxSZWZQdHI8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4+JiwgSW50
ZXJzZWN0aW9uT2JzZXJ2ZXImKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggNDc4NzY4MGFkYmM3MjAxNDU0ODdmMTk0NjA4NWYxYTI5MmY2Nzc2NC4uYzczZDAwZWQy
NGVhMGIyNWNkMzk3MGU5MzY4NWVhZTkxMWRjZDJmOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDE3LTA3LTEyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE5MzYxLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0NDM0CisKKyAgICAgICAgSHVnZSBQTFVN
IG1lbW9yeSByZWdyZXNzaW9uIG9uIGlPUyAoUmVxdWVzdGVkIGJ5IGtsaW5nIG9uCisgICAgICAg
ICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiW1dl
YklETF0gQ29udmVydCBNdXRhdGlvbkNhbGxiYWNrIHRvIGJlIGEgbm9ybWFsIGdlbmVyYXRlCisg
ICAgICAgIGNhbGxiYWNrIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc0MTQwCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzIxOTM2MQorCiAyMDE3LTA3LTEyICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gYSBjYXB0dXJlIHNvdXJjZSBmYWlsdXJlIHNo
b3VsZCBlbmQgdGhlIE1lZGlhU3RyZWFtVHJhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlv
bi1vYnNlcnZlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKaW5kZXggMjBhMjMxMzlmMDVkNDA2
YTUwNTBkNWY5NmMwMjcwMzMyODFlYzRmMi4uNGE2MzA3NjNlN2I0NDZlODVjNDY0MDM3YzQ2MWU5
NWI4MDMyZmU3YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNl
cnZlci9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1vYnNlcnZlci1jb25z
dHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTgsMTAgKzgsMTAgQEAgUEFTUyB0eXBlb2YgV2ViS2l0
TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZSBpcyAiZnVuY3Rpb24iCiBQQVNTIHR5
cGVvZiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5kaXNjb25uZWN0IGlzICJmdW5j
dGlvbiIKIFBBU1MgdHlwZW9mIG9ic2VydmVyLm9ic2VydmUgaXMgImZ1bmN0aW9uIgogUEFTUyB0
eXBlb2Ygb2JzZXJ2ZXIuZGlzY29ubmVjdCBpcyAiZnVuY3Rpb24iCi1QQVNTIG5ldyBNdXRhdGlv
bk9ic2VydmVyKHsgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKCkge30gfSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2NhbGxiYWNrJykgdG8gdGhlIE11dGF0aW9uT2JzZXJ2
ZXIgY29uc3RydWN0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBuZXcgTXV0YXRpb25PYnNl
cnZlcih7fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2NhbGxiYWNr
JykgdG8gdGhlIE11dGF0aW9uT2JzZXJ2ZXIgY29uc3RydWN0b3IgbXVzdCBiZSBhIGZ1bmN0aW9u
LgotUEFTUyBuZXcgTXV0YXRpb25PYnNlcnZlcig0MikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogQXJndW1lbnQgMSAoJ2NhbGxiYWNrJykgdG8gdGhlIE11dGF0aW9uT2JzZXJ2ZXIgY29uc3Ry
dWN0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLgotUEFTUyBuZXcgTXV0YXRpb25PYnNlcnZlcigiZm9v
IikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQXJndW1lbnQgMSAoJ2NhbGxiYWNrJykgdG8g
dGhlIE11dGF0aW9uT2JzZXJ2ZXIgY29uc3RydWN0b3IgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFT
UyBuZXcgTXV0YXRpb25PYnNlcnZlcih7IGhhbmRsZUV2ZW50OiBmdW5jdGlvbigpIHt9IH0pIHRo
cmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdjYWxsYmFjaycpIHRvIHRoZSBN
dXRhdGlvbk9ic2VydmVyIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTXV0YXRp
b25DYWxsYmFjay4KK1BBU1MgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoe30pIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IEFyZ3VtZW50IDEgKCdjYWxsYmFjaycpIHRvIHRoZSBNdXRhdGlvbk9ic2Vy
dmVyIGNvbnN0cnVjdG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTXV0YXRpb25DYWxsYmFjay4K
K1BBU1MgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoNDIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IEFyZ3VtZW50IDEgKCdjYWxsYmFjaycpIHRvIHRoZSBNdXRhdGlvbk9ic2VydmVyIGNvbnN0cnVj
dG9yIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgTXV0YXRpb25DYWxsYmFjay4KK1BBU1MgbmV3IE11
dGF0aW9uT2JzZXJ2ZXIoImZvbyIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEFyZ3VtZW50
IDEgKCdjYWxsYmFjaycpIHRvIHRoZSBNdXRhdGlvbk9ic2VydmVyIGNvbnN0cnVjdG9yIG11c3Qg
YmUgYW4gaW5zdGFuY2Ugb2YgTXV0YXRpb25DYWxsYmFjay4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>