<?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>189707</bug_id>
          
          <creation_ts>2018-09-18 13:27:54 -0700</creation_ts>
          <short_desc>Implement sender/receiver getStats</short_desc>
          <delta_ts>2018-09-20 18:34:45 -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>WebRTC</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1460702</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-18 13:27:54 -0700</bug_when>
    <thetext>Implement sender/receiver getStats</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460712</commentid>
    <comment_count>1</comment_count>
      <attachid>350045</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-18 13:41:09 -0700</bug_when>
    <thetext>Created attachment 350045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460716</commentid>
    <comment_count>2</comment_count>
      <attachid>350045</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2018-09-18 13:49:45 -0700</bug_when>
    <thetext>Comment on attachment 350045
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=350045&amp;action=review

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:272
&gt; +    auto transceiver = RTCRtpTransceiver::create(RTCRtpSender::create(*this, &quot;video&quot;, { }, WTFMove(senderBackend)), receiver.copyRef(), nullptr);

Nit: &quot;video&quot;_s

&gt; Source/WebCore/Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:295
&gt; +    auto transceiver = RTCRtpTransceiver::create(RTCRtpSender::create(*this, &quot;audio&quot;, { }, WTFMove(senderBackend)), receiver.copyRef(), nullptr);

Nit: &quot;audio&quot;_s</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460759</commentid>
    <comment_count>3</comment_count>
      <attachid>350061</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-18 14:45:40 -0700</bug_when>
    <thetext>Created attachment 350061
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460772</commentid>
    <comment_count>4</comment_count>
      <attachid>350064</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-18 15:05:01 -0700</bug_when>
    <thetext>Created attachment 350064
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460972</commentid>
    <comment_count>5</comment_count>
      <attachid>350064</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-19 08:54:16 -0700</bug_when>
    <thetext>Comment on attachment 350064
Patch for landing

Clearing flags on attachment: 350064

Committed r236207: &lt;https://trac.webkit.org/changeset/236207&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460973</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-19 08:54:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460974</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-19 08:55:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/44604401&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461646</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2018-09-20 18:34:45 -0700</bug_when>
    <thetext>*** Bug 186248 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350045</attachid>
            <date>2018-09-18 13:41:09 -0700</date>
            <delta_ts>2018-09-18 14:45:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189707-20180918134108.patch</filename>
            <type>text/plain</type>
            <size>43149</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM0NDc2YmEzYzY1MTE4
MTJhMjY0OGJkMTA1N2RlZWMyMTgzYzI5OC4uNTIyZmI5YTFlZmE0YWI0Zjc3ZmM5ZWExMjMxNTA4
MDA0ZjA4NTMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA5LTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2VuZGVy
L3JlY2VpdmVyIGdldFN0YXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODk3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3Igc2VuZGVyIGFuZCByZWNlaXZlciBnZXRTdGF0cy4K
KyAgICAgICAgQWxzbyBhZGQgc3VwcG9ydCBmb3IgcGVlciBjb25uZWN0aW9uIHNlbGVjdG9yIHBh
cmFtZXRlci4KKworICAgICAgICBBZGQgdGhlIHBsdW1iaW5nIG9mIHRoZSBzZWxlY3RvciB0byBM
aWJXZWJSVENNZWRpYUVuZHBvaW50LgorICAgICAgICBUaGVuIG1ha2UgdXNlIG9mIGxpYndlYnJ0
YyBvdmVybG9hZGVkIG1ldGhvZHMgdG8gcmV0cmlldmUgdGhlIHJpZ2h0IHN0YXRzLgorCisgICAg
ICAgIENvdmVyZWQgYnkgdXBkYXRlZC9yZWJhc2VkIHRlc3RzLgorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJU
Q1BlZXJDb25uZWN0aW9uOjpnZXRTdGF0cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OlJUQ1J0cFJl
Y2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpnZXRTdGF0cyk6Cisg
ICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6UlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSVENS
dHBSZWNlaXZlcjo6YmFja2VuZCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENS
dHBSZWNlaXZlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6UlRDUnRwU2VuZGVyOjpSVENSdHBTZW5kZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UlRDUnRwU2VuZGVyOjpnZXRTdGF0cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNl
bmRlci5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENNZWRpYUVu
ZHBvaW50OjpnZXRTdGF0cyk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmJhY2tlbmRGcm9tUlRQU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjp2aWRlb1JlY2VpdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXVkaW9SZWNlaXZlcik6
CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6
YWRkVW5pZmllZFBsYW5UcmFuc2NlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6bmV3UmVtb3RlVHJhbnNjZWl2ZXIpOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oOgorCiAyMDE4LTA5LTE4ICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgUlRDUnRwUmVjZWl2
ZXIgZ2V0Q29udHJpYnV0aW5nU291cmNlcy9nZXRTeW5jaHJvbml6YXRpb25Tb3VyY2VzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaAppbmRleCAwNmU5MjcyMmZkYzRjNTE0MGQ5MDJmNGQyY2E0ODRhNWEzMjEz
NzQ3Li42NTIxNzY1MjQ0MzRkMjhmNDE3ZTZhM2IyNjcyMThhYmEzNzhlYTNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJSVENTZXNzaW9uRGVzY3Jp
cHRpb24uaCIKICNpbmNsdWRlICJSVENTaWduYWxpbmdTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9M
b2dnZXJIZWxwZXIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTY4LDggKzY5LDkgQEAgdXNpbmcgU3RhdHNQcm9taXNlID0gRE9NUHJvbWlz
ZURlZmVycmVkPElETEludGVyZmFjZTxSVENTdGF0c1JlcG9ydD4+OwogdXNpbmcgQ3JlYXRlUGVl
ckNvbm5lY3Rpb25CYWNrZW5kID0gc3RkOjp1bmlxdWVfcHRyPFBlZXJDb25uZWN0aW9uQmFja2Vu
ZD4gKCopKFJUQ1BlZXJDb25uZWN0aW9uJik7CiAKIGNsYXNzIFBlZXJDb25uZWN0aW9uQmFja2Vu
ZAorICAgIDogcHVibGljIENhbk1ha2VXZWFrUHRyPFBlZXJDb25uZWN0aW9uQmFja2VuZD4KICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICA6IHByaXZhdGUgTG9nZ2VySGVscGVyCisgICAg
LCBwcml2YXRlIExvZ2dlckhlbHBlcgogI2VuZGlmCiB7CiBwdWJsaWM6CkBAIC05OCw3ICsxMDAs
OSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2V0Q29uZmlndXJhdGlvbihNZWRpYUVu
ZHBvaW50Q29uZmlndXJhdGlvbiYmKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3RhdHMo
TWVkaWFTdHJlYW1UcmFjayosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRTdGF0cyhSVENSdHBTZW5kZXImLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKFJUQ1J0cFJlY2VpdmVyJiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJikgPSAwOwogCiAgICAgdmlydHVhbCBFeGNlcHRpb25PcjxSZWY8UlRDUnRw
U2VuZGVyPj4gYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayYsIFZlY3RvcjxTdHJpbmc+JiYpOwog
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVUcmFjayhSVENSdHBTZW5kZXImKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlv
bi5jcHAKaW5kZXggYmEyZWU1NjIxMWUzMDk0ZTE4ODYyZDU4ZDQ4NWE4ZTJjMDMyNjBhYS4uZWU5
MDA3NTYwM2NmNzU0ZjQzNTEyMGM1MzM3MGM0NzYyMGVkZmU4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAK
QEAgLTMyOCw3ICszMjgsMTkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUlRDUGVlckNvbm5lY3Rpb246
OnNldENvbmZpZ3VyYXRpb24oUlRDQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3UKIAogdm9pZCBSVENQ
ZWVyQ29ubmVjdGlvbjo6Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayogc2VsZWN0b3IsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBtX2JhY2tlbmQtPmdldFN0YXRzKHNl
bGVjdG9yLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBpZiAoc2VsZWN0b3IpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiB0cmFuc2NlaXZlciA6IG1fdHJhbnNjZWl2ZXJTZXQtPmxpc3QoKSkgeworICAg
ICAgICAgICAgaWYgKHRyYW5zY2VpdmVyLT5zZW5kZXIoKS50cmFjaygpID09IHNlbGVjdG9yKSB7
CisgICAgICAgICAgICAgICAgbV9iYWNrZW5kLT5nZXRTdGF0cyh0cmFuc2NlaXZlci0+c2VuZGVy
KCksIFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICgmdHJhbnNjZWl2ZXItPnJlY2VpdmVyKCkudHJhY2soKSA9
PSBzZWxlY3RvcikgeworICAgICAgICAgICAgICAgIG1fYmFja2VuZC0+Z2V0U3RhdHModHJhbnNj
ZWl2ZXItPnJlY2VpdmVyKCksIFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBtX2JhY2tlbmQtPmdl
dFN0YXRzKFdURk1vdmUocHJvbWlzZSkpOwogfQogCiBFeGNlcHRpb25PcjxSZWY8UlRDRGF0YUNo
YW5uZWw+PiBSVENQZWVyQ29ubmVjdGlvbjo6Y3JlYXRlRGF0YUNoYW5uZWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgU3RyaW5nJiYgbGFiZWwsIFJUQ0RhdGFDaGFubmVsSW5pdCYm
IG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24uaWRsCmluZGV4IDFmNDM1OWI5NWIyMDQwMWZjMWRlMmY1Njll
YThlZjlmZDgxNGY3ZmIuLmYzMjI2MmIwMWEwOTE2N2RiMDRmNmYxMzIzNTBhZjZiYTBhYWZhZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNv
bm5lY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24uaWRsCkBAIC0xMzgsNyArMTM4LDYgQEAgdHlwZWRlZiBSVENSdHBUcmFu
c2NlaXZlckRpcmVjdGlvbiBSdHBUcmFuc2NlaXZlckRpcmVjdGlvbjsKIAogCiAgICAgLy8gOC4y
IFN0YXRpc3RpY3MgQVBJCi0gICAgLy8gRklYTUUgMTY5NjQ0OiB8c2VsZWN0b3J8IG1heSBnbyBh
d2F5IGluIGEgZnV0dXJlIHZlcnNpb24gb2YgdGhlIHNwZWMKICAgICBQcm9taXNlPFJUQ1N0YXRz
UmVwb3J0PiBnZXRTdGF0cyhvcHRpb25hbCBNZWRpYVN0cmVhbVRyYWNrPyBzZWxlY3RvciA9IG51
bGwpOwogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwUmVjZWl2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBSZWNlaXZlci5jcHAKaW5kZXggNThmNDJjYWQ3NmNkYTY0YjdmNTU1MzcwNjJlMWI4MDQ4
MmZhN2IyOC4uZmIwMWU5Y2ZjOWY2M2UxYjk2MzNiZTgwMDI5NzFiZjFkNjhhZGVkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZl
ci5jcHAKQEAgLTM1LDkgKzM1LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUlRDUnRw
UmVjZWl2ZXI6OlJUQ1J0cFJlY2VpdmVyKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNrLCBz
dGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmIGJhY2tlbmQpCitSVENSdHBS
ZWNlaXZlcjo6UlRDUnRwUmVjZWl2ZXIoUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBjb25uZWN0aW9u
LCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJl
Y2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKQogICAgIDogbV90cmFjayhXVEZNb3ZlKHRyYWNrKSkK
ICAgICAsIG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQpKQorICAgICwgbV9jb25uZWN0aW9uKG1h
a2VXZWFrUHRyKCZjb25uZWN0aW9uKSkKIHsKIH0KIApAQCAtNTAsNiArNTEsMTUgQEAgdm9pZCBS
VENSdHBSZWNlaXZlcjo6c3RvcCgpCiAgICAgbV90cmFjay0+c3RvcFRyYWNrKE1lZGlhU3RyZWFt
VHJhY2s6OlN0b3BNb2RlOjpQb3N0RXZlbnQpOwogfQogCit2b2lkIFJUQ1J0cFJlY2VpdmVyOjpn
ZXRTdGF0cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2Nvbm5lY3Rpb24tPmdldFN0YXRzKCp0aGlz
LCBXVEZNb3ZlKHByb21pc2UpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFdFQl9SVEMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmgKaW5kZXggNTMyZTJjMDI3ZGJhZDk1NTFmMGRkMDFm
NjM3Mzc3YjJkYmU4YmQ0ZC4uYjRmZWU2MGFmYzE4YmQ1OTZlMTZjNDA4MGQwY2Y2MDhlNDA0MWM0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBS
ZWNlaXZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuaApAQCAtMzksMTIgKzM5LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
Y2xhc3MgUGVlckNvbm5lY3Rpb25CYWNrZW5kOwogCiBjbGFzcyBSVENSdHBSZWNlaXZlciA6IHB1
YmxpYyBSZWZDb3VudGVkPFJUQ1J0cFJlY2VpdmVyPiwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSAg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZShSZWY8TWVk
aWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFj
a2VuZD4mJiBiYWNrZW5kKQorICAgIHN0YXRpYyBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZShQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQmIGNvbm5lY3Rpb24sIFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYm
IHRyYWNrLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmIGJhY2tlbmQp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSVENSdHBSZWNlaXZlcihXVEZN
b3ZlKHRyYWNrKSwgV1RGTW92ZShiYWNrZW5kKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBSVENSdHBSZWNlaXZlcihjb25uZWN0aW9uLCBXVEZNb3ZlKHRyYWNrKSwgV1RGTW92ZShi
YWNrZW5kKSkpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcCgpOwpAQCAtNTYsMTEgKzU3LDE1IEBA
IHB1YmxpYzoKIAogICAgIE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKCkgeyByZXR1cm4gbV90cmFj
ay5nZXQoKTsgfQogCisgICAgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kKiBiYWNrZW5kKCkgeyByZXR1
cm4gbV9iYWNrZW5kLmdldCgpOyB9CisgICAgdm9pZCBnZXRTdGF0cyhSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmKTsKKwogcHJpdmF0ZToKLSAgICBSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1U
cmFjaz4mJiwgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJik7CisgICAg
UlRDUnRwUmVjZWl2ZXIoUGVlckNvbm5lY3Rpb25CYWNrZW5kJiwgUmVmPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tlbmQ+JiYpOwogCiAgICAg
UmVmPE1lZGlhU3RyZWFtVHJhY2s+IG1fdHJhY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0
cFJlY2VpdmVyQmFja2VuZD4gbV9iYWNrZW5kOworICAgIFdlYWtQdHI8UGVlckNvbm5lY3Rpb25C
YWNrZW5kPiBtX2Nvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVy
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIu
aWRsCmluZGV4IDlmNTNkNWQ1Mzg4MjI0ODhhZDFkNjVlNWE2OGY4NGJjZDJjODhlYWMuLjlkODU2
NWE3NmQwZGE5MGQ3MzhmY2M2ZGJlNTRjMGZkYTM3NGM2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaWRsCkBAIC00MSw0
ICs0MSw1IEBACiAgICAgLy8gRklYTUUgMTY5NjYyOiBtaXNzaW5nIGdldENhcGFiaWxpdGllcwog
ICAgIHNlcXVlbmNlPFJUQ1J0cENvbnRyaWJ1dGluZ1NvdXJjZT4gZ2V0Q29udHJpYnV0aW5nU291
cmNlcygpOwogICAgIHNlcXVlbmNlPFJUQ1J0cFN5bmNocm9uaXphdGlvblNvdXJjZT4gZ2V0U3lu
Y2hyb25pemF0aW9uU291cmNlcygpOworICAgIFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IGdldFN0
YXRzKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENSdHBTZW5kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENSdHBTZW5kZXIuY3BwCmluZGV4IDdlYmRkZDk3MDgxMzNlNDNlYTMxMjE5MmQxODQwMmUwYzBh
MDc2ZWMuLmM3Y2EyYjRmMjdkOTk1OWZiMzExNTU0NDdiMWE5ZjZlNTc1Mzc3N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAK
QEAgLTM3LDIyICszNywyMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxSVENSdHBT
ZW5kZXI+IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYmIHRyYWNr
LCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRw
U2VuZGVyQmFja2VuZD4mJiBiYWNrZW5kKQorUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVy
OjpjcmVhdGUoUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBjb25uZWN0aW9uLCBSZWY8TWVkaWFTdHJl
YW1UcmFjaz4mJiB0cmFjaywgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1
bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKIHsKLSAgICBhdXRvIHNl
bmRlciA9IGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFN0cmluZyh0cmFjay0+a2luZCgpKSwg
V1RGTW92ZShtZWRpYVN0cmVhbUlkcyksIFdURk1vdmUoYmFja2VuZCkpKTsKKyAgICBhdXRvIHNl
bmRlciA9IGFkb3B0UmVmKCpuZXcgUlRDUnRwU2VuZGVyKGNvbm5lY3Rpb24sIFN0cmluZyh0cmFj
ay0+a2luZCgpKSwgV1RGTW92ZShtZWRpYVN0cmVhbUlkcyksIFdURk1vdmUoYmFja2VuZCkpKTsK
ICAgICBzZW5kZXItPnNldFRyYWNrKFdURk1vdmUodHJhY2spKTsKICAgICByZXR1cm4gc2VuZGVy
OwogfQogCi1SZWY8UlRDUnRwU2VuZGVyPiBSVENSdHBTZW5kZXI6OmNyZWF0ZShTdHJpbmcmJiB0
cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0
cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCitSZWY8UlRDUnRwU2VuZGVyPiBSVENS
dHBTZW5kZXI6OmNyZWF0ZShQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIGNvbm5lY3Rpb24sIFN0cmlu
ZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlx
dWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBSVENSdHBTZW5kZXIoV1RGTW92ZSh0cmFja0tpbmQpLCBXVEZNb3ZlKG1lZGlh
U3RyZWFtSWRzKSwgV1RGTW92ZShiYWNrZW5kKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFJUQ1J0cFNlbmRlcihjb25uZWN0aW9uLCBXVEZNb3ZlKHRyYWNrS2luZCksIFdURk1vdmUobWVk
aWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiB9CiAKLVJUQ1J0cFNlbmRlcjo6UlRD
UnRwU2VuZGVyKFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVh
bUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKK1JU
Q1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKFBlZXJDb25uZWN0aW9uQmFja2VuZCYgY29ubmVjdGlv
biwgU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBz
dGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJiBiYWNrZW5kKQogICAgIDogbV90
cmFja0tpbmQoV1RGTW92ZSh0cmFja0tpbmQpKQogICAgICwgbV9tZWRpYVN0cmVhbUlkcyhXVEZN
b3ZlKG1lZGlhU3RyZWFtSWRzKSkKICAgICAsIG1fYmFja2VuZChXVEZNb3ZlKGJhY2tlbmQpKQor
ICAgICwgbV9jb25uZWN0aW9uKG1ha2VXZWFrUHRyKCZjb25uZWN0aW9uKSkKIHsKICAgICBBU1NF
UlQoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2ViUlRDVW5pZmll
ZFBsYW5FbmFibGVkKCkgfHwgbV9iYWNrZW5kKTsKIH0KQEAgLTExMCw2ICsxMTEsMTUgQEAgdm9p
ZCBSVENSdHBTZW5kZXI6OnNldFBhcmFtZXRlcnMoY29uc3QgUlRDUnRwU2VuZFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIERPTVByb20KICAgICByZXR1cm4gbV9iYWNrZW5kLT5zZXRQYXJhbWV0ZXJz
KHBhcmFtZXRlcnMsIFdURk1vdmUocHJvbWlzZSkpOwogfQogCit2b2lkIFJUQ1J0cFNlbmRlcjo6
Z2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGlmICghbV9j
b25uZWN0aW9uKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jb25uZWN0aW9uLT5nZXRTdGF0cygqdGhp
cywgV1RGTW92ZShwcm9taXNlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDUnRwU2VuZGVyLmgKaW5kZXggMjBiYmZkZTE4YzI4NzU0M2ZmNTFmNDNjNWRk
NzlhZTIzZWUxZDMwMC4uNDlhYWQzZTMzNDRmZGU2YWNjYTQ2ZWRjOWFhZTY4N2QzMWU3N2Q2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRl
ci5oCkBAIC0zOSwxMCArMzksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CisKIGNsYXNzIFJUQ1J0cFNlbmRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFJUQ1J0cFNlbmRlcj4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8UlRDUnRwU2VuZGVyPiBjcmVhdGUoUmVmPE1lZGlhU3RyZWFtVHJhY2s+
JiYsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENS
dHBTZW5kZXJCYWNrZW5kPiYmKTsKLSAgICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3JlYXRl
KFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYpOworICAgIHN0YXRpYyBSZWY8UlRD
UnRwU2VuZGVyPiBjcmVhdGUoUGVlckNvbm5lY3Rpb25CYWNrZW5kJiwgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+JiYsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0
cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4g
Y3JlYXRlKFBlZXJDb25uZWN0aW9uQmFja2VuZCYsIFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9y
PFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJh
Y2tlbmQ+JiYpOwogCiAgICAgTWVkaWFTdHJlYW1UcmFjayogdHJhY2soKSB7IHJldHVybiBtX3Ry
YWNrLmdldCgpOyB9CiAKQEAgLTY0LDE0ICs2NiwxNyBAQCBwdWJsaWM6CiAKICAgICBSVENSdHBT
ZW5kZXJCYWNrZW5kKiBiYWNrZW5kKCkgeyByZXR1cm4gbV9iYWNrZW5kLmdldCgpOyB9CiAKKyAg
ICB2b2lkIGdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworCiBwcml2YXRlOgotICAg
IFJUQ1J0cFNlbmRlcihTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFT
dHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmKTsKKyAgICBS
VENSdHBTZW5kZXIoUGVlckNvbm5lY3Rpb25CYWNrZW5kJiwgU3RyaW5nJiYgdHJhY2tLaW5kLCBW
ZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2Vu
ZGVyQmFja2VuZD4mJik7CiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gbV90cmFjazsK
ICAgICBTdHJpbmcgbV90cmFja0lkOwogICAgIFN0cmluZyBtX3RyYWNrS2luZDsKICAgICBWZWN0
b3I8U3RyaW5nPiBtX21lZGlhU3RyZWFtSWRzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBT
ZW5kZXJCYWNrZW5kPiBtX2JhY2tlbmQ7CisgICAgV2Vha1B0cjxQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ+IG1fY29ubmVjdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbAppbmRl
eCA5MWY2NWIzMjM5NjdkN2E1ZWE4M2MxZDY3YWFhYTNhYjc5YjJmZWUwLi4wOWNkYjhlMzQ1OTkz
Y2U5OGQ2YmQzNTljYzJiMzY2YzdlZTIxMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCkBAIC00Miw0ICs0Miw1IEBACiAg
ICAgUlRDUnRwU2VuZFBhcmFtZXRlcnMgZ2V0UGFyYW1ldGVycygpOwogICAgIFByb21pc2U8dm9p
ZD4gc2V0UGFyYW1ldGVycyhSVENSdHBTZW5kUGFyYW1ldGVycyBwYXJhbWV0ZXJzKTsKICAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gUHJvbWlzZTx2b2lkPiByZXBsYWNlVHJh
Y2soTWVkaWFTdHJlYW1UcmFjaz8gd2l0aFRyYWNrKTsKKyAgICBQcm9taXNlPFJUQ1N0YXRzUmVw
b3J0PiBnZXRTdGF0cygpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRw
b2ludC5jcHAKaW5kZXggYjI1YjU2NGYyYmU3MWFlMmVhNWRiMGU5ZDM5ZmJkZmRiOGUwN2UyOC4u
Y2QwMDM1MzgzOGMyZjc2NzMzOTBkM2MyNDI4ZGMwZWY0MGM0Njg4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFF
bmRwb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmRvQ3JlYXRlQW5zd2VyKCkKICAgICBtX2JhY2tlbmQt
PkNyZWF0ZUFuc3dlcigmbV9jcmVhdGVTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZlciwgbnVsbHB0
cik7CiB9CiAKLXZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2V0U3RhdHMoTWVkaWFTdHJl
YW1UcmFjayosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgTGliV2ViUlRD
TWVkaWFFbmRwb2ludDo6Z2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBX
VEY6OkZ1bmN0aW9uPHZvaWQocnRjOjpzY29wZWRfcmVmcHRyPExpYldlYlJUQ1N0YXRzQ29sbGVj
dG9yPiYmKT4mJiBnZXRTdGF0c0Z1bmN0aW9uKQogewogICAgIGF1dG8gY29sbGVjdG9yID0gTGli
V2ViUlRDU3RhdHNDb2xsZWN0b3I6OmNyZWF0ZShbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYmIHJlcG9ydCkgbXV0YWJsZSB7
CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0yODcsOSArMjg3LDMyIEBAIHZv
aWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExJbnRlcmZh
Y2U8UlRDU3RhdHNSZXBvcnQ+PihyZXBvcnQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0pOwotICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENT
aWduYWxpbmdUaHJlYWQoW3RoaXMsIGNvbGxlY3RvciA9IFdURk1vdmUoY29sbGVjdG9yKV0gewor
ICAgIExpYldlYlJUQ1Byb3ZpZGVyOjpjYWxsT25XZWJSVENTaWduYWxpbmdUaHJlYWQoW2dldFN0
YXRzRnVuY3Rpb24gPSBXVEZNb3ZlKGdldFN0YXRzRnVuY3Rpb24pLCBjb2xsZWN0b3IgPSBXVEZN
b3ZlKGNvbGxlY3RvcildKCkgbXV0YWJsZSB7CisgICAgICAgIGdldFN0YXRzRnVuY3Rpb24oV1RG
TW92ZShjb2xsZWN0b3IpKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBv
aW50OjpnZXRTdGF0cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgZ2V0
U3RhdHMoV1RGTW92ZShwcm9taXNlKSwgW3RoaXNdKGF1dG8mJiBjb2xsZWN0b3IpIHsKKyAgICAg
ICAgaWYgKG1fYmFja2VuZCkKKyAgICAgICAgICAgIG1fYmFja2VuZC0+R2V0U3RhdHMoV1RGTW92
ZShjb2xsZWN0b3IpKTsKKyAgICB9KTsKK30KKwordm9pZCBMaWJXZWJSVENNZWRpYUVuZHBvaW50
OjpnZXRTdGF0cyh3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNlJiByZWNlaXZlciwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGdldFN0YXRzKFdURk1vdmUocHJvbWlz
ZSksIFt0aGlzLCByZWNlaXZlciA9IHJ0Yzo6c2NvcGVkX3JlZnB0cjx3ZWJydGM6OlJ0cFJlY2Vp
dmVySW50ZXJmYWNlPigmcmVjZWl2ZXIpXShhdXRvJiYgY29sbGVjdG9yKSBtdXRhYmxlIHsKKyAg
ICAgICAgaWYgKG1fYmFja2VuZCkKKyAgICAgICAgICAgIG1fYmFja2VuZC0+R2V0U3RhdHMoV1RG
TW92ZShyZWNlaXZlciksIFdURk1vdmUoY29sbGVjdG9yKSk7CisgICAgfSk7Cit9CisKK3ZvaWQg
TGliV2ViUlRDTWVkaWFFbmRwb2ludDo6Z2V0U3RhdHMod2VicnRjOjpSdHBTZW5kZXJJbnRlcmZh
Y2UmIHNlbmRlciwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGdldFN0
YXRzKFdURk1vdmUocHJvbWlzZSksIFt0aGlzLCBzZW5kZXIgPSBydGM6OnNjb3BlZF9yZWZwdHI8
d2VicnRjOjpSdHBTZW5kZXJJbnRlcmZhY2U+KCZzZW5kZXIpXShhdXRvJiYgY29sbGVjdG9yKSAg
bXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2JhY2tlbmQpCi0gICAgICAgICAgICBtX2JhY2tlbmQt
PkdldFN0YXRzKGNvbGxlY3Rvci5nZXQoKSk7CisgICAgICAgICAgICBtX2JhY2tlbmQtPkdldFN0
YXRzKFdURk1vdmUoc2VuZGVyKSwgV1RGTW92ZShjb2xsZWN0b3IpKTsKICAgICB9KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDTWVkaWFFbmRwb2ludC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5oCmluZGV4IDE3N2U3YWExNDNm
NjdkOWMyNjk3NTE3MGU3ODVjNDM2NDBkYzM5Y2QuLmVmYjUxMTMxMjU4NGE1OWQ3MGE0NmNjY2Vl
MDQ3N2IxMjViYTJhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50
LmgKQEAgLTU1LDExICs1NSwxMSBAQCBjbGFzcyBTZXRTZXNzaW9uRGVzY3JpcHRpb25PYnNlcnZl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCiBjbGFzcyBMaWJXZWJSVENQcm92aWRlcjsK
IGNsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDsKIGNsYXNzIExpYldlYlJUQ1J0
cFJlY2VpdmVyQmFja2VuZDsKIGNsYXNzIExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDsK
K2NsYXNzIExpYldlYlJUQ1N0YXRzQ29sbGVjdG9yOwogY2xhc3MgTWVkaWFTdHJlYW1UcmFjazsK
IGNsYXNzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjsKIApAQCAtODIsNyArODIsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkb1NldFJlbW90ZURlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYp
OwogICAgIHZvaWQgZG9DcmVhdGVPZmZlcihjb25zdCBSVENPZmZlck9wdGlvbnMmKTsKICAgICB2
b2lkIGRvQ3JlYXRlQW5zd2VyKCk7Ci0gICAgdm9pZCBnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNr
KiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBnZXRTdGF0cyhSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIGdldFN0YXRzKHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRl
cmZhY2UmLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKyAgICB2b2lkIGdldFN0YXRzKHdlYnJ0
Yzo6UnRwU2VuZGVySW50ZXJmYWNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRlRGF0YUNoYW5uZWwoY29u
c3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0Jik7CiAgICAgYm9vbCBhZGRJY2VD
YW5kaWRhdGUod2VicnRjOjpJY2VDYW5kaWRhdGVJbnRlcmZhY2UmIGNhbmRpZGF0ZSkgeyByZXR1
cm4gbV9iYWNrZW5kLT5BZGRJY2VDYW5kaWRhdGUoJmNhbmRpZGF0ZSk7IH0KIApAQCAtMTQ4LDYg
KzE1MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydExvZ2dpbmdTdGF0cygpOwogICAgIHZv
aWQgc3RvcExvZ2dpbmdTdGF0cygpOwogCisgICAgdm9pZCBnZXRTdGF0cyhSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQocnRjOjpzY29wZWRfcmVmcHRyPExpYldlYlJU
Q1N0YXRzQ29sbGVjdG9yPiYmKT4mJik7CisKICAgICBNZWRpYVN0cmVhbSYgbWVkaWFTdHJlYW1G
cm9tUlRDU3RyZWFtKHdlYnJ0Yzo6TWVkaWFTdHJlYW1JbnRlcmZhY2UmKTsKIAogICAgIHZvaWQg
QWRkUmVmKCkgY29uc3QgeyByZWYoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggM2M0Zjk5YTViMzJmNmZhZmQ4YWYz
NTQyYzRlYWJlMmJlMDEzNDk3OC4uNDk3ZmRhZTVhMTM5MTRjNWNlNWFmMmM4ZjliODk5MTRjNjk5
YmExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3
ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQuY3BwCkBAIC0xMjksOSArMTI5LDM3IEBAIGJvb2wgTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpzZXRDb25maWd1cmF0aW9uKE1lZGlhRW5kcG9pbnRDb25maWd1cmF0aW9u
CiAgICAgcmV0dXJuIG1fZW5kcG9pbnQtPnNldENvbmZpZ3VyYXRpb24ocGFnZS0+bGliV2ViUlRD
UHJvdmlkZXIoKSwgY29uZmlndXJhdGlvbkZyb21NZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbihX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiB9CiAKLXZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiB0cmFjaywgUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICBtX2VuZHBv
aW50LT5nZXRTdGF0cyh0cmFjaywgV1RGTW92ZShwcm9taXNlKSk7CisgICAgbV9lbmRwb2ludC0+
Z2V0U3RhdHMoV1RGTW92ZShwcm9taXNlKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgTGliV2ViUlRD
UnRwU2VuZGVyQmFja2VuZCYgYmFja2VuZEZyb21SVFBTZW5kZXIoUlRDUnRwU2VuZGVyJiBzZW5k
ZXIpCit7CisgICAgQVNTRVJUKCFzZW5kZXIuaXNTdG9wcGVkKCkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kJj4oKnNlbmRlci5iYWNrZW5kKCkpOwor
fQorCit2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Z2V0U3RhdHMoUlRDUnRw
U2VuZGVyJiBzZW5kZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICB3
ZWJydGM6OlJ0cFNlbmRlckludGVyZmFjZSogcnRjU2VuZGVyID0gc2VuZGVyLmJhY2tlbmQoKSA/
IGJhY2tlbmRGcm9tUlRQU2VuZGVyKHNlbmRlcikucnRjU2VuZGVyKCkgOiBudWxscHRyOworCisg
ICAgaWYgKCFydGNTZW5kZXIpIHsKKyAgICAgICAgbV9lbmRwb2ludC0+Z2V0U3RhdHMoV1RGTW92
ZShwcm9taXNlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9lbmRwb2ludC0+Z2V0
U3RhdHMoKnJ0Y1NlbmRlciwgV1RGTW92ZShwcm9taXNlKSk7Cit9CisKK3ZvaWQgTGliV2ViUlRD
UGVlckNvbm5lY3Rpb25CYWNrZW5kOjpnZXRTdGF0cyhSVENSdHBSZWNlaXZlciYgcmVjZWl2ZXIs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICB3ZWJydGM6OlJ0cFJlY2Vp
dmVySW50ZXJmYWNlKiBydGNSZWNlaXZlciA9IHJlY2VpdmVyLmJhY2tlbmQoKSA/IHN0YXRpY19j
YXN0PExpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZCo+KHJlY2VpdmVyLmJhY2tlbmQoKSktPnJ0
Y1JlY2VpdmVyKCkgOiBudWxscHRyOworCisgICAgaWYgKCFydGNSZWNlaXZlcikgeworICAgICAg
ICBtX2VuZHBvaW50LT5nZXRTdGF0cyhXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBtX2VuZHBvaW50LT5nZXRTdGF0cygqcnRjUmVjZWl2ZXIsIFdURk1vdmUo
cHJvbWlzZSkpOwogfQogCiB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZG9T
ZXRMb2NhbERlc2NyaXB0aW9uKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCkBA
IC0yMDEsMTIgKzIyOSwxMiBAQCB2b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6
ZG9BZGRJY2VDYW5kaWRhdGUoUlRDSWNlQ2FuZGlkYXRlJiBjYW5kaWRhdAogICAgIGFkZEljZUNh
bmRpZGF0ZVN1Y2NlZWRlZCgpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZjxSVENSdHBSZWNlaXZl
cj4gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8UlRD
UnRwUmVjZWl2ZXJCYWNrZW5kPiYmIGJhY2tlbmQpCitSZWY8UlRDUnRwUmVjZWl2ZXI+IExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoUmVmPFJl
YWx0aW1lTWVkaWFTb3VyY2U+JiYgc291cmNlLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2
ZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiB7CiAgICAgYXV0byByZW1vdGVUcmFja1ByaXZhdGUgPSBN
ZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKFdURk1vdmUoc291cmNlKSwgU3RyaW5nIHsg
c291cmNlLT5pZCgpIH0pOwotICAgIGF1dG8gcmVtb3RlVHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNr
OjpjcmVhdGUoY29udGV4dCwgV1RGTW92ZShyZW1vdGVUcmFja1ByaXZhdGUpKTsKKyAgICBhdXRv
IHJlbW90ZVRyYWNrID0gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKCptX3BlZXJDb25uZWN0aW9u
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShyZW1vdGVUcmFja1ByaXZhdGUpKTsK
IAotICAgIHJldHVybiBSVENSdHBSZWNlaXZlcjo6Y3JlYXRlKFdURk1vdmUocmVtb3RlVHJhY2sp
LCBXVEZNb3ZlKGJhY2tlbmQpKTsKKyAgICByZXR1cm4gUlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZSgq
dGhpcywgV1RGTW92ZShyZW1vdGVUcmFjayksIFdURk1vdmUoYmFja2VuZCkpOwogfQogCiBzdGF0
aWMgaW5saW5lIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjcmVhdGVFbXB0eVNvdXJjZShjb25z
dCBTdHJpbmcmIHRyYWNrS2luZCwgU3RyaW5nJiYgdHJhY2tJZCkKQEAgLTIyMCw3ICsyNDgsNyBA
QCBzdGF0aWMgaW5saW5lIFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiBjcmVhdGVFbXB0eVNvdXJj
ZShjb25zdCBTdHJpbmcmIHRyYWNrS2luZAogCiBSZWY8UlRDUnRwUmVjZWl2ZXI+IExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlUmVjZWl2ZXIoY29uc3QgU3RyaW5nJiB0cmFj
a0tpbmQsIGNvbnN0IFN0cmluZyYgdHJhY2tJZCkKIHsKLSAgICBhdXRvIHJlY2VpdmVyID0gY3Jl
YXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBjcmVhdGVFbXB0eVNvdXJjZSh0cmFja0tpbmQsIFN0cmluZyh0cmFja0lkKSksIG51
bGxwdHIpOworICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShjcmVh
dGVFbXB0eVNvdXJjZSh0cmFja0tpbmQsIFN0cmluZyh0cmFja0lkKSksIG51bGxwdHIpOwogICAg
IG1fcGVuZGluZ1JlY2VpdmVycy5hcHBlbmQocmVjZWl2ZXIuY29weVJlZigpKTsKICAgICByZXR1
cm4gcmVjZWl2ZXI7CiB9CkBAIC0yMzgsMTAgKzI2NiwxMCBAQCBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OlZpZGVvUmVjZWl2ZXIgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5k
Ojp2aQogICAgICAgICB9CiAgICAgfQogICAgIGF1dG8gc291cmNlID0gUmVhbHRpbWVJbmNvbWlu
Z1ZpZGVvU291cmNlOjpjcmVhdGUobnVsbHB0ciwgV1RGTW92ZSh0cmFja0lkKSk7Ci0gICAgYXV0
byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKCptX3BlZXJDb25uZWN0aW9uLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgc291cmNlLmNvcHlSZWYoKSwgbnVsbHB0cik7CisgICAg
YXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKHNvdXJjZS5jb3B5UmVmKCks
IG51bGxwdHIpOwogCiAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Ci0gICAgYXV0byB0cmFu
c2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUo
InZpZGVvIiwgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigp
LCBudWxscHRyKTsKKyAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNy
ZWF0ZShSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgInZpZGVvIiwgeyB9LCBXVEZNb3ZlKHNl
bmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsKICAgICB0cmFuc2Nl
aXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0aW9uLmFk
ZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMjYxLDEwICsyODksMTAg
QEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBdWRpb1JlY2VpdmVyIExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXUKICAgICAgICAgfQogICAgIH0KICAgICBhdXRvIHNv
dXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1v
dmUodHJhY2tJZCkpOwotICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJj
ZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNvdXJjZS5jb3B5
UmVmKCksIG51bGxwdHIpOworICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNv
dXJjZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAogICAgIGF1dG8gc2VuZGVyQmFja2Vu
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51
bGxwdHIpOwotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRl
KFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJhdWRpbyIsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5k
KSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZlciA9
IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJh
dWRpbyIsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwg
bnVsbHB0cik7CiAgICAgdHJhbnNjZWl2ZXItPmRpc2FibGVTZW5kaW5nRGlyZWN0aW9uKCk7CiAg
ICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7
CiAKQEAgLTMxNSwxMyArMzQzLDYgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpyZW1vdGVEZXNjcmlwdGlvbigKICAgICByZXR1
cm4gbV9lbmRwb2ludC0+cmVtb3RlRGVzY3JpcHRpb24oKTsKIH0KIAotc3RhdGljIGlubGluZSBM
aWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kJiBiYWNrZW5kRnJvbVJUUFNlbmRlcihSVENSdHBTZW5k
ZXImIHNlbmRlcikKLXsKLSAgICBBU1NFUlQoIXNlbmRlci5pc1N0b3BwZWQoKSk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmPigqc2VuZGVyLmJhY2tl
bmQoKSk7Ci19Ci0KLQogc3RhdGljIGlubGluZSBSZWZQdHI8UlRDUnRwU2VuZGVyPiBmaW5kRXhp
c3RpbmdTZW5kZXIoY29uc3QgVmVjdG9yPHN0ZDo6cmVmZXJlbmNlX3dyYXBwZXI8UlRDUnRwU2Vu
ZGVyPj4mIHNlbmRlcnMsIExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmIHNlbmRlckJhY2tlbmQp
CiB7CiAgICAgQVNTRVJUKHNlbmRlckJhY2tlbmQucnRjU2VuZGVyKCkpOwpAQCAtMzQ3LDggKzM2
OCw4IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmFkZFRyYWNrKE1lZGlhU3RyCiAKICAgICAgICAgYXV0byB0cmFuc2NlaXZl
ckJhY2tlbmQgPSBtX2VuZHBvaW50LT50cmFuc2NlaXZlckJhY2tlbmRGcm9tU2VuZGVyKCpzZW5k
ZXJCYWNrZW5kKTsKIAotICAgICAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRl
KG1ha2VSZWYodHJhY2spLCBXVEZNb3ZlKG1lZGlhU3RyZWFtSWRzKSwgV1RGTW92ZShzZW5kZXJC
YWNrZW5kKSk7Ci0gICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJj
ZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNyZWF0ZUVtcHR5
U291cmNlKHRyYWNrLmtpbmQoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSwgdHJhbnNj
ZWl2ZXJCYWNrZW5kLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSk7CisgICAgICAgIGF1dG8gc2Vu
ZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIG1ha2VSZWYodHJhY2spLCBXVEZNb3Zl
KG1lZGlhU3RyZWFtSWRzKSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CisgICAgICAgIGF1dG8g
cmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShjcmVhdGVFbXB0eVNvdXJjZSh0cmFj
ay5raW5kKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSksIHRyYW5zY2VpdmVyQmFja2Vu
ZC0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCkpOwogICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0g
UlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShzZW5kZXIuY29weVJlZigpLCBXVEZNb3ZlKHJlY2Vp
dmVyKSwgV1RGTW92ZSh0cmFuc2NlaXZlckJhY2tlbmQpKTsKICAgICAgICAgbV9wZWVyQ29ubmVj
dGlvbi5hZGRJbnRlcm5hbFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKICAgICAg
ICAgcmV0dXJuIFdURk1vdmUoc2VuZGVyKTsKQEAgLTM3Myw3ICszOTQsNyBAQCBFeGNlcHRpb25P
cjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRU
cmFjayhNZWRpYVN0cgogICAgICAgICBTdHJpbmcgdHJhY2tJZCA9IGNyZWF0ZUNhbm9uaWNhbFVV
SURTdHJpbmcoKTsKIAogICAgICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5p
cXVlPExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKLSAgICAgICAg
YXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShtYWtlUmVmKHRyYWNrKSwgVmVj
dG9yPFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsK
KyAgICAgICAgYXV0byBuZXdTZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgbWFr
ZVJlZih0cmFjayksIFZlY3RvcjxTdHJpbmc+IHsgbWVkaWFTdHJlYW1JZHMgfSwgV1RGTW92ZShz
ZW5kZXJCYWNrZW5kKSk7CiAgICAgICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlcih0
cmFja0tpbmQsIHRyYWNrSWQpOwogICAgICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJh
bnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKG5ld1NlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpLCBu
dWxscHRyKTsKIApAQCAtMzk0LDggKzQxNSw4IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFu
c2NlaXZlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVW5pZmllZFBsCiAg
ICAgaWYgKCFiYWNrZW5kcykKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nl
c3NFcnJvciwgIlVuYWJsZSB0byBhZGQgdHJhbnNjZWl2ZXIiX3MgfTsKIAotICAgIGF1dG8gc2Vu
ZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoV1RGTW92ZSh0cmFja09yS2luZCksIFZlY3RvcjxT
dHJpbmc+IHsgfSwgV1RGTW92ZShiYWNrZW5kcy0+c2VuZGVyQmFja2VuZCkpOwotICAgIGF1dG8g
cmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIGNyZWF0ZUVtcHR5U291cmNlKHNlbmRlci0+dHJhY2tLaW5k
KCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSksIFdURk1vdmUoYmFja2VuZHMtPnJlY2Vp
dmVyQmFja2VuZCkpOworICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRo
aXMsIFdURk1vdmUodHJhY2tPcktpbmQpLCBWZWN0b3I8U3RyaW5nPiB7IH0sIFdURk1vdmUoYmFj
a2VuZHMtPnNlbmRlckJhY2tlbmQpKTsKKyAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2
ZXJGb3JTb3VyY2UoY3JlYXRlRW1wdHlTb3VyY2Uoc2VuZGVyLT50cmFja0tpbmQoKSwgY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpKSwgV1RGTW92ZShiYWNrZW5kcy0+cmVjZWl2ZXJCYWNrZW5k
KSk7CiAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RG
TW92ZShzZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSwgV1RGTW92ZShiYWNrZW5kcy0+dHJhbnNj
ZWl2ZXJCYWNrZW5kKSk7CiAgICAgbV9wZWVyQ29ubmVjdGlvbi5hZGRJbnRlcm5hbFRyYW5zY2Vp
dmVyKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIFdURk1vdmUodHJhbnNjZWl2
ZXIpOwpAQCAtNDA3LDcgKzQyOCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZl
cj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJhbnNjZWl2CiAgICAgICAg
IHJldHVybiBhZGRVbmlmaWVkUGxhblRyYW5zY2VpdmVyKFN0cmluZyB7IHRyYWNrS2luZCB9LCBp
bml0KTsKIAogICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2Vi
UlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwotICAgIGF1dG8gbmV3U2VuZGVy
ID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+
KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRw
U2VuZGVyOjpjcmVhdGUoKnRoaXMsIFN0cmluZyh0cmFja0tpbmQpLCBWZWN0b3I8U3RyaW5nPigp
LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKICAgICByZXR1cm4gY29tcGxldGVBZGRUcmFuc2Nl
aXZlcihXVEZNb3ZlKG5ld1NlbmRlciksIGluaXQsIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KSwgdHJhY2tLaW5kKTsKIH0KIApAQCAtNDE4LDcgKzQzOSw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxS
VENSdHBUcmFuc2NlaXZlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRkVHJh
bnNjZWl2CiAKICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKICAgICBhdXRvJiBiYWNrZW5k
ID0gKnNlbmRlckJhY2tlbmQ7Ci0gICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0
ZSh0cmFjay5jb3B5UmVmKCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2Vu
ZCkpOworICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIHRyYWNr
LmNvcHlSZWYoKSwgVmVjdG9yPFN0cmluZz4oKSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAg
ICAgaWYgKCFtX2VuZHBvaW50LT5hZGRUcmFjayhiYWNrZW5kLCB0cmFjaywgVmVjdG9yPFN0cmlu
Zz4geyB9KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRBY2Nlc3NFcnJvciwg
IlVuYWJsZSB0byBhZGQgdHJhY2siX3MgfTsKIApAQCAtNDQxLDggKzQ2Miw4IEBAIFJUQ1J0cFRy
YW5zY2VpdmVyKiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmV4aXN0aW5nVHJhbnNj
ZWl2ZXIoV1RGOjpGdW5jCiAKIFJUQ1J0cFRyYW5zY2VpdmVyJiBMaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6Om5ld1JlbW90ZVRyYW5zY2VpdmVyKHN0ZDo6dW5pcXVlX3B0cjxMaWJXZWJS
VENSdHBUcmFuc2NlaXZlckJhY2tlbmQ+JiYgdHJhbnNjZWl2ZXJCYWNrZW5kLCBSZWY8UmVhbHRp
bWVNZWRpYVNvdXJjZT4mJiByZWNlaXZlclNvdXJjZSkKIHsKLSAgICBhdXRvIHNlbmRlciA9IFJU
Q1J0cFNlbmRlcjo6Y3JlYXRlKHJlY2VpdmVyU291cmNlLT50eXBlKCkgPT0gUmVhbHRpbWVNZWRp
YVNvdXJjZTo6VHlwZTo6QXVkaW8gPyAiYXVkaW8iX3MgOiAidmlkZW8iX3MsIFZlY3RvcjxTdHJp
bmc+IHsgfSwgdHJhbnNjZWl2ZXJCYWNrZW5kLT5jcmVhdGVTZW5kZXJCYWNrZW5kKCp0aGlzLCBu
dWxscHRyKSk7Ci0gICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKCpt
X3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgV1RGTW92ZShyZWNlaXZl
clNvdXJjZSksIHRyYW5zY2VpdmVyQmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCkpOwor
ICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIHJlY2VpdmVyU291
cmNlLT50eXBlKCkgPT0gUmVhbHRpbWVNZWRpYVNvdXJjZTo6VHlwZTo6QXVkaW8gPyAiYXVkaW8i
X3MgOiAidmlkZW8iX3MsIFZlY3RvcjxTdHJpbmc+IHsgfSwgdHJhbnNjZWl2ZXJCYWNrZW5kLT5j
cmVhdGVTZW5kZXJCYWNrZW5kKCp0aGlzLCBudWxscHRyKSk7CisgICAgYXV0byByZWNlaXZlciA9
IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKFdURk1vdmUocmVjZWl2ZXJTb3VyY2UpLCB0cmFuc2Nl
aXZlckJhY2tlbmQtPmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpKTsKICAgICBhdXRvIHRyYW5zY2Vp
dmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUo
cmVjZWl2ZXIpLCBXVEZNb3ZlKHRyYW5zY2VpdmVyQmFja2VuZCkpOwogICAgIG1fcGVlckNvbm5l
Y3Rpb24uYWRkSW50ZXJuYWxUcmFuc2NlaXZlcih0cmFuc2NlaXZlci5jb3B5UmVmKCkpOwogICAg
IHJldHVybiB0cmFuc2NlaXZlci5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXggMWY2ODUwZDE3NTIzMjVhMTE0Yjc5NDQ3
NDVhYjE1ZjI0N2FlMTljMy4uNWVjNzkxODA2MDIyNzgwNzFmM2Y3MzI4ZDUzZmE4Y2RlZjE2ODcz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmgKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIlBlZXJDb25uZWN0aW9uQmFja2Vu
ZC5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4K
IAogbmFtZXNwYWNlIHdlYnJ0YyB7CiBjbGFzcyBJY2VDYW5kaWRhdGVJbnRlcmZhY2U7CkBAIC00
MCw2ICszOSw3IEBAIGNsYXNzIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ7CiBjbGFzcyBMaWJXZWJS
VENQcm92aWRlcjsKIGNsYXNzIExpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZDsKIGNsYXNz
IFJUQ1J0cFJlY2VpdmVyOworY2xhc3MgUlRDUnRwUmVjZWl2ZXJCYWNrZW5kOwogY2xhc3MgUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uOwogY2xhc3MgUlRDU3RhdHNSZXBvcnQ7CiBjbGFzcyBSZWFsdGlt
ZUluY29taW5nQXVkaW9Tb3VyY2U7CkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFJlYWx0aW1lTWVk
aWFTb3VyY2U7CiBjbGFzcyBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U7CiBjbGFzcyBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U7CiAKLWNsYXNzIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQsIHB1YmxpYyBDYW5N
YWtlV2Vha1B0cjxMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+IHsKK2NsYXNzIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZCBmaW5hbCA6IHB1YmxpYyBQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIExpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZChSVENQZWVyQ29ubmVjdGlvbiYsIExpYldlYlJUQ1By
b3ZpZGVyJik7CkBAIC02Nyw3ICs2Nyw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1N0b3AoKSBm
aW5hbDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5uZWxIYW5kbGVyPiBjcmVhdGVE
YXRhQ2hhbm5lbEhhbmRsZXIoY29uc3QgU3RyaW5nJiwgY29uc3QgUlRDRGF0YUNoYW5uZWxJbml0
JikgZmluYWw7CiAgICAgYm9vbCBzZXRDb25maWd1cmF0aW9uKE1lZGlhRW5kcG9pbnRDb25maWd1
cmF0aW9uJiYpIGZpbmFsOwotICAgIHZvaWQgZ2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayosIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYpIGZpbmFsOworICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVy
cmVkUHJvbWlzZT4mJikgZmluYWw7CisgICAgdm9pZCBnZXRTdGF0cyhSVENSdHBTZW5kZXImLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFN0YXRzKFJUQ1J0cFJl
Y2VpdmVyJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgZmluYWw7CiAKICAgICBSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uPiBsb2NhbERlc2NyaXB0aW9uKCkgY29uc3QgZmluYWw7CiAgICAg
UmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gY3VycmVudExvY2FsRGVzY3JpcHRpb24oKSBj
b25zdCBmaW5hbDsKQEAgLTExNiw2ICsxMTgsOCBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiAgICAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2VpdmVyPj4gYWRkVW5p
ZmllZFBsYW5UcmFuc2NlaXZlcihUJiYgdHJhY2tPcktpbmQsIGNvbnN0IFJUQ1J0cFRyYW5zY2Vp
dmVySW5pdCYpOwogCisgICAgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGVSZWNlaXZlckZvclNv
dXJjZShSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4mJiwgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJl
Y2VpdmVyQmFja2VuZD4mJik7CisKICAgICBSZWY8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4gbV9l
bmRwb2ludDsKICAgICBib29sIG1faXNMb2NhbERlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsKICAg
ICBib29sIG1faXNSZW1vdGVEZXNjcmlwdGlvblNldCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBS
ZWNlaXZlckJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCmluZGV4IGZkMGQ5NWVjMzI5NzVj
MTZhNTNjNDgxMmYxMzc5YWU3MzQzMWJhZTcuLjMxMjQzMjNkMzQ2ZjEwNTNiM2Y3MTRkY2ZmYWQ0
MjlkMDBhYjRlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVyQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFJlY2VpdmVy
QmFja2VuZC5oCkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCisgICAg
d2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZSogcnRjUmVjZWl2ZXIoKSB7IHJldHVybiBtX3J0
Y1JlY2VpdmVyLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgUlRDUnRwUGFyYW1ldGVycyBnZXRQ
YXJhbWV0ZXJzKCkgZmluYWw7CiAgICAgVmVjdG9yPFJUQ1J0cENvbnRyaWJ1dGluZ1NvdXJjZT4g
Z2V0Q29udHJpYnV0aW5nU291cmNlcygpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRjMjI3MmEwY2E0
NTk4ZDQ5YjgwYzg3MTlkY2M1NjA2N2YwZDZhMDQuLjQzMWQwYzAwYzE5ZWU1YzZiZjYxYzNiNThi
NmMxZTFiZTA5MjJiMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0wOS0xOCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHNlbmRlci9y
ZWNlaXZlciBnZXRTdGF0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTg5NzA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiB3ZWJydGMvdmlkZW8tc3RhdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
YnJ0Yy92aWRlby1zdGF0cy5odG1sOgorCiAyMDE4LTA5LTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVzdCB3ZWJydGMvdmlkZW8tbXV0ZS5o
dG1sIGlzIGZsYWt5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNmY4MzA4MTdm
YWEyYzVjZGQ2NjkxMmRmNzQ0MmVhZTZiNDdmOTU1ZS4uOGNiZWI5MTlmM2ZmNDE5MTQ4NzMzYTVi
NjM2NmQ1MmI4Y2RmY2UxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTgtMDktMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBzZW5kZXIvcmVjZWl2ZXIgZ2V0U3RhdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTcwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRTdGF0cy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5kZXItZ2V0U3RhdHMuaHR0
cHMtZXhwZWN0ZWQudHh0OgorCiAyMDE4LTA5LTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgUlRDUnRwUmVjZWl2ZXIgZ2V0Q29udHJpYnV0
aW5nU291cmNlcy9nZXRTeW5jaHJvbml6YXRpb25Tb3VyY2VzCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZl
ci1nZXRTdGF0cy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRTdGF0cy5odHRwcy1l
eHBlY3RlZC50eHQKaW5kZXggZWNiODhhMmZkZWMwMjEyMDJiNWRiYjUwNGE5MGUxM2Q0NzllZWQ4
Mi4uNGVlNzdhNDI3MGEyNjNkMzJmNmI5ZGUwZGFmMTQxNjAyYjY2YjljMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRw
UmVjZWl2ZXItZ2V0U3RhdHMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFN0
YXRzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAotRkFJTCByZWNlaXZlci5n
ZXRTdGF0cygpIHZpYSBhZGRUcmFuc2NlaXZlciBzaG91bGQgcmV0dXJuIHN0YXRzIHJlcG9ydCBj
b250YWluaW5nIGluYm91bmQtcnRwIHN0YXRzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVj
dGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcmVjZWl2ZXIuZ2V0U3RhdHMgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAncmVjZWl2ZXIuZ2V0U3RhdHMoKScsICdyZWNlaXZlci5nZXRT
dGF0cycgaXMgdW5kZWZpbmVkKSIKLUZBSUwgcmVjZWl2ZXIuZ2V0U3RhdHMoKSB2aWEgYWRkVHJh
Y2sgc2hvdWxkIHJldHVybiBzdGF0cyByZXBvcnQgY29udGFpbmluZyBpbmJvdW5kLXJ0cCBzdGF0
cyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJU
eXBlRXJyb3I6IHJlY2VpdmVyLmdldFN0YXRzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JlY2Vp
dmVyLmdldFN0YXRzKCknLCAncmVjZWl2ZXIuZ2V0U3RhdHMnIGlzIHVuZGVmaW5lZCkiCitGQUlM
IHJlY2VpdmVyLmdldFN0YXRzKCkgdmlhIGFkZFRyYW5zY2VpdmVyIHNob3VsZCByZXR1cm4gc3Rh
dHMgcmVwb3J0IGNvbnRhaW5pbmcgaW5ib3VuZC1ydHAgc3RhdHMgYXNzZXJ0X3RydWU6IEV4cGVj
dCBzdGF0c1JlcG9ydCB0byBjb250YWluIHN0YXRzIG9iamVjdCBvZiB0eXBlIGluYm91bmQtcnRw
IGV4cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlMIHJlY2VpdmVyLmdldFN0YXRzKCkgdmlhIGFk
ZFRyYWNrIHNob3VsZCByZXR1cm4gc3RhdHMgcmVwb3J0IGNvbnRhaW5pbmcgaW5ib3VuZC1ydHAg
c3RhdHMgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkubWVkaWFUeXBlIHRvIGJlIHN0
cmluZyBleHBlY3RlZCAic3RyaW5nIiBidXQgZ290ICJ1bmRlZmluZWQiCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0
cFNlbmRlci1nZXRTdGF0cy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5kZXItZ2V0U3RhdHMuaHR0
cHMtZXhwZWN0ZWQudHh0CmluZGV4IDhiYmMzOGUyMTA1Nzg2MWYyMmQ2Y2VkNjM0M2FhMjFmODU3
NmYyMjEuLjhlOThlNDU1NjkxMDM3NmNiODA3OWMyN2Q0MGNkMzljYThlNDUxYjkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JU
Q1J0cFNlbmRlci1nZXRTdGF0cy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLWdldFN0
YXRzLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAotRkFJTCBzZW5kZXIuZ2V0
U3RhdHMoKSB2aWEgYWRkVHJhbnNjZWl2ZXIgc2hvdWxkIHJldHVybiBzdGF0cyByZXBvcnQgY29u
dGFpbmluZyBvdXRib3VuZC1ydHAgc3RhdHMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0
aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzZW5kZXIuZ2V0U3RhdHMgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnc2VuZGVyLmdldFN0YXRzKCknLCAnc2VuZGVyLmdldFN0YXRzJyBp
cyB1bmRlZmluZWQpIgotRkFJTCBzZW5kZXIuZ2V0U3RhdHMoKSB2aWEgYWRkVHJhY2sgc2hvdWxk
IHJldHVybiBzdGF0cyByZXBvcnQgY29udGFpbmluZyBvdXRib3VuZC1ydHAgc3RhdHMgcHJvbWlz
ZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9y
OiBzZW5kZXIuZ2V0U3RhdHMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc2VuZGVyLmdldFN0YXRz
KCknLCAnc2VuZGVyLmdldFN0YXRzJyBpcyB1bmRlZmluZWQpIgorRkFJTCBzZW5kZXIuZ2V0U3Rh
dHMoKSB2aWEgYWRkVHJhbnNjZWl2ZXIgc2hvdWxkIHJldHVybiBzdGF0cyByZXBvcnQgY29udGFp
bmluZyBvdXRib3VuZC1ydHAgc3RhdHMgYXNzZXJ0X3RydWU6IEV4cGVjdCBzdGF0c1JlcG9ydCB0
byBjb250YWluIHN0YXRzIG9iamVjdCBvZiB0eXBlIG91dGJvdW5kLXJ0cCBleHBlY3RlZCB0cnVl
IGdvdCBmYWxzZQorRkFJTCBzZW5kZXIuZ2V0U3RhdHMoKSB2aWEgYWRkVHJhY2sgc2hvdWxkIHJl
dHVybiBzdGF0cyByZXBvcnQgY29udGFpbmluZyBvdXRib3VuZC1ydHAgc3RhdHMgYXNzZXJ0X2Vx
dWFsczogRXhwZWN0IGRpY3Rpb25hcnkudHJhY2tJZCB0byBiZSBzdHJpbmcgZXhwZWN0ZWQgInN0
cmluZyIgYnV0IGdvdCAidW5kZWZpbmVkIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJy
dGMvdmlkZW8tc3RhdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXN0
YXRzLWV4cGVjdGVkLnR4dAppbmRleCAyNDJhNGE1MzcxYWU3OTc2OWU4MmY1NDA0MGUwNGUxMDYy
OTNlNzY1Li5lZjFiMjI3Y2VhZmU4MmVlYjZiMDRlNDYxZTJjYjNmOGMwMmI5ZWY1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tc3RhdHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zdGF0cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw1IEBA
CiAKIFBBU1MgQmFzaWMgdmlkZW8gc3RhdHMgCitQQVNTIFNlbmRlciBzdGF0cyAKK1BBU1MgUmVj
ZWl2ZXIgc3RhdHMgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zdGF0
cy5odG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXN0YXRzLmh0bWwKaW5kZXggNTJhNzY2
YTZmNWI1ZWFiMGU1N2MxMmU0ODA5YjIzNTE3YzY5MjczOC4uODI4NmNhNzVhYmRiZTFhNGIzODQ5
ZGM1MGUwYjBkNDkwMTQyMjBlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVv
LXN0YXRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXN0YXRzLmh0bWwKQEAg
LTk2LDU1ICs5Niw3NiBAQCBmdW5jdGlvbiBjaGVja091dGJvdW5kRnJhbWVzTnVtYmVySW5jcmVh
c2VkKGZpcnN0Q29ubmVjdGlvbiwgc3RhdHNGaXJzdENvbm5lY3RpbwogfQogCiB2YXIgZmlyc3RD
b25uZWN0aW9uLCBzZWNvbmRDb25uZWN0aW9uOwotcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Citw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKIAotICAg
IHZhciBsb2NhbFN0cmVhbSwgcmVtb3RlU3RyZWFtOwotICAgIHJldHVybiBuYXZpZ2F0b3IubWVk
aWFEZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB0cnVlfSkudGhlbigoc3RyZWFtKSA9PiB7
Ci0gICAgICAgIGxvY2FsU3RyZWFtID0gc3RyZWFtOwotICAgICAgICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMo
KGNvbm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24gPSBjb25u
ZWN0aW9uOwotICAgICAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhzdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKVswXSwgc3RyZWFtKTsKLSAgICAgICAgICAgIH0sIChjb25uZWN0aW9u
KSA9PiB7Ci0gICAgICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb247Ci0g
ICAgICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+
IHsKLSAgICAgICAgICAgICAgICAgICAgcmVtb3RlU3RyZWFtID0gdHJhY2tFdmVudC5zdHJlYW1z
WzBdOwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRl
c3QgdGltZWQgb3V0IiksIDUwMDApOworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2
aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogdHJ1ZX0pOworICAgIGF3
YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29u
bmVjdGlvbnMoKGNvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbiA9
IGNvbm5lY3Rpb247CisgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxT
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICB9LCAoY29u
bmVjdGlvbikgPT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb247
CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZp
ZGVvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rp
b24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OworICAgICAgICAgICAgfTsKICAgICAgICAgfSk7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgIHJldHVybiBnZXRPdXRib3VuZFJUUFN0YXRzKGZpcnN0Q29ubmVjdGlvbik7Ci0gICAgfSku
dGhlbigoc3RhdHMpID0+IHsKLSAgICAgICAgYXNzZXJ0X3RydWUoISFzdGF0cywgIm91dGJvdW5k
LXJ0cCBzdGF0cyBzaG91bGQgbm90IGJlIG51bGwiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoTnVt
YmVyLmlzSW50ZWdlcihzdGF0cy5mcmFtZXNFbmNvZGVkKSwgImZyYW1lc0VuY29kZWQgc2hvdWxk
IGJlIGFuIGludGVnZXIiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoTnVtYmVyLmlzSW50ZWdlcihz
dGF0cy5xcFN1bSksICJvdXRib3VuZCBxcFN1bSBzaG91bGQgYmUgYW4gaW50ZWdlciIpOwotICAg
ICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2Ygc3RhdHMudGltZXN0YW1wID09PSAibnVtYmVyIiwgInRp
bWVzdGFtcCBzaG91bGQgYmUgYSBkb3VibGUiKTsKLSAgICAgICAgc3RhdHNGaXJzdENvbm5lY3Rp
b24gPSBzdGF0czsKLSAgICAgICAgcmV0dXJuIGdldEluYm91bmRSVFBTdGF0cyhzZWNvbmRDb25u
ZWN0aW9uKTsKLSAgICB9KS50aGVuKChzdGF0cykgPT4gewotICAgICAgICBhc3NlcnRfdHJ1ZSgh
IXN0YXRzLCAiaW5ib3VuZC1ydHAgc3RhdHMgc2hvdWxkIG5vdCBiZSBudWxsIik7Ci0gICAgICAg
IGFzc2VydF90cnVlKE51bWJlci5pc0ludGVnZXIoc3RhdHMuZnJhbWVzRGVjb2RlZCksICJmcmFt
ZXNEZWNvZGVkIHNob3VsZCBiZSBhbiBpbnRlZ2VyIik7Ci0gICAgICAgIGFzc2VydF90cnVlKE51
bWJlci5pc0ludGVnZXIoc3RhdHMucXBTdW0pLCAiaW5ib3VuZCBxcFN1bSBzaG91bGQgYmUgYW4g
aW50ZWdlciIpOwotICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2Ygc3RhdHMudGltZXN0YW1wID09
PSAibnVtYmVyIiwgInRpbWVzdGFtcCBzaG91bGQgYmUgYSBkb3VibGUiKTsKLSAgICAgICAgc3Rh
dHNTZWNvbmRDb25uZWN0aW9uID0gc3RhdHM7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAg
IHJldHVybiBjaGVja0luYm91bmRGcmFtZXNOdW1iZXJJbmNyZWFzZWQoc2Vjb25kQ29ubmVjdGlv
biwgc3RhdHNTZWNvbmRDb25uZWN0aW9uLCAwKTsKLSAgICB9KS50aGVuKCgpID0+IHsKLSAgICAg
ICAgcmV0dXJuIGNoZWNrT3V0Ym91bmRGcmFtZXNOdW1iZXJJbmNyZWFzZWQoZmlyc3RDb25uZWN0
aW9uLCBzdGF0c0ZpcnN0Q29ubmVjdGlvbiwgMCk7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAg
ICAgIHJldHVybiBnZXRTdGF0c1R5cGUoZmlyc3RDb25uZWN0aW9uKTsKLSAgICB9KS50aGVuKCh0
eXBlcykgPT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHR5cGVzLCBbImNhbmRpZGF0
ZS1wYWlyIiwgImNlcnRpZmljYXRlIiwgIm91dGJvdW5kLXJ0cCIsICJ0cmFjayJdKTsKLSAgICB9
KS50aGVuKCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldFN0YXRzVHlwZShzZWNvbmRDb25uZWN0
aW9uKTsKLSAgICB9KS50aGVuKCh0eXBlcykgPT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHR5cGVzLCBbImNhbmRpZGF0ZS1wYWlyIiwgImNlcnRpZmljYXRlIiwgImluYm91bmQtcnRw
IiwgInRyYWNrIl0pOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1l
ZCBvdXQiKSwgNTAwMCk7CiAgICAgfSk7CisKKyAgICBsZXQgc3RhdHMgPSBhd2FpdCBnZXRPdXRi
b3VuZFJUUFN0YXRzKGZpcnN0Q29ubmVjdGlvbik7CisgICAgYXNzZXJ0X3RydWUoISFzdGF0cywg
Im91dGJvdW5kLXJ0cCBzdGF0cyBzaG91bGQgbm90IGJlIG51bGwiKTsKKyAgICBhc3NlcnRfdHJ1
ZShOdW1iZXIuaXNJbnRlZ2VyKHN0YXRzLmZyYW1lc0VuY29kZWQpLCAiZnJhbWVzRW5jb2RlZCBz
aG91bGQgYmUgYW4gaW50ZWdlciIpOworICAgIGFzc2VydF90cnVlKE51bWJlci5pc0ludGVnZXIo
c3RhdHMucXBTdW0pLCAib3V0Ym91bmQgcXBTdW0gc2hvdWxkIGJlIGFuIGludGVnZXIiKTsKKyAg
ICBhc3NlcnRfdHJ1ZSh0eXBlb2Ygc3RhdHMudGltZXN0YW1wID09PSAibnVtYmVyIiwgInRpbWVz
dGFtcCBzaG91bGQgYmUgYSBkb3VibGUiKTsKKyAgICBzdGF0c0ZpcnN0Q29ubmVjdGlvbiA9IHN0
YXRzOworCisgICAgc3RhdHMgPSBhd2FpdCBnZXRJbmJvdW5kUlRQU3RhdHMoc2Vjb25kQ29ubmVj
dGlvbik7CisgICAgYXNzZXJ0X3RydWUoISFzdGF0cywgImluYm91bmQtcnRwIHN0YXRzIHNob3Vs
ZCBub3QgYmUgbnVsbCIpOworICAgIGFzc2VydF90cnVlKE51bWJlci5pc0ludGVnZXIoc3RhdHMu
ZnJhbWVzRGVjb2RlZCksICJmcmFtZXNEZWNvZGVkIHNob3VsZCBiZSBhbiBpbnRlZ2VyIik7Cisg
ICAgYXNzZXJ0X3RydWUoTnVtYmVyLmlzSW50ZWdlcihzdGF0cy5xcFN1bSksICJpbmJvdW5kIHFw
U3VtIHNob3VsZCBiZSBhbiBpbnRlZ2VyIik7CisgICAgYXNzZXJ0X3RydWUodHlwZW9mIHN0YXRz
LnRpbWVzdGFtcCA9PT0gIm51bWJlciIsICJ0aW1lc3RhbXAgc2hvdWxkIGJlIGEgZG91YmxlIik7
CisgICAgc3RhdHNTZWNvbmRDb25uZWN0aW9uID0gc3RhdHM7CisKKyAgICBhd2FpdCBjaGVja0lu
Ym91bmRGcmFtZXNOdW1iZXJJbmNyZWFzZWQoc2Vjb25kQ29ubmVjdGlvbiwgc3RhdHNTZWNvbmRD
b25uZWN0aW9uLCAwKTsKKyAgICBhd2FpdCBjaGVja091dGJvdW5kRnJhbWVzTnVtYmVySW5jcmVh
c2VkKGZpcnN0Q29ubmVjdGlvbiwgc3RhdHNGaXJzdENvbm5lY3Rpb24sIDApOworCisgICAgbGV0
IHR5cGVzID0gYXdhaXQgZ2V0U3RhdHNUeXBlKGZpcnN0Q29ubmVjdGlvbik7CisgICAgYXNzZXJ0
X2FycmF5X2VxdWFscyh0eXBlcywgWyJjYW5kaWRhdGUtcGFpciIsICJjZXJ0aWZpY2F0ZSIsICJp
bmJvdW5kLXJ0cCIsICJvdXRib3VuZC1ydHAiLCAidHJhY2siXSk7CisKKyAgICB0eXBlcyA9IGF3
YWl0IGdldFN0YXRzVHlwZShzZWNvbmRDb25uZWN0aW9uKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1
YWxzKHR5cGVzLCBbImNhbmRpZGF0ZS1wYWlyIiwgImNlcnRpZmljYXRlIiwgImluYm91bmQtcnRw
IiwgIm91dGJvdW5kLXJ0cCIsICJ0cmFjayJdKTsKIH0sICJCYXNpYyB2aWRlbyBzdGF0cyIpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZXBvcnQgPSBhd2Fp
dCBmaXJzdENvbm5lY3Rpb24uZ2V0U2VuZGVycygpWzBdLmdldFN0YXRzKCk7CisgICAgY2hlY2tT
dGF0c1JlcG9ydEl0ZXJhdG9yKHJlcG9ydCk7CisgICAgdmFyIGluc3RhdHMsIG91dHN0YXRzOwor
ICAgIHJlcG9ydC5mb3JFYWNoKChzdGF0SXRlbSkgPT4geworICAgICAgICBpZiAoc3RhdEl0ZW0u
dHlwZSA9PT0gIm91dGJvdW5kLXJ0cCIpCisgICAgICAgICAgICBvdXRzdGF0cyA9IHN0YXRJdGVt
OworICAgICAgICBlbHNlIGlmIChzdGF0SXRlbS50eXBlID09PSAiaW5ib3VuZC1ydHAiKQorICAg
ICAgICAgICAgaW5zdGF0cyA9IHN0YXRJdGVtOworICAgIH0pOworICAgIGFzc2VydF90cnVlKCEh
b3V0c3RhdHMpOworICAgIGFzc2VydF9mYWxzZSghIWluc3RhdHMpOworfSwgIlNlbmRlciBzdGF0
cyIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZXBvcnQg
PSBhd2FpdCBzZWNvbmRDb25uZWN0aW9uLmdldFJlY2VpdmVycygpWzBdLmdldFN0YXRzKCk7Cisg
ICAgY2hlY2tTdGF0c1JlcG9ydEl0ZXJhdG9yKHJlcG9ydCk7CisgICAgdmFyIGluc3RhdHMsIG91
dHN0YXRzOworICAgIHJlcG9ydC5mb3JFYWNoKChzdGF0SXRlbSkgPT4geworICAgICAgICBpZiAo
c3RhdEl0ZW0udHlwZSA9PT0gIm91dGJvdW5kLXJ0cCIpCisgICAgICAgICAgICBvdXRzdGF0cyA9
IHN0YXRJdGVtOworICAgICAgICBlbHNlIGlmIChzdGF0SXRlbS50eXBlID09PSAiaW5ib3VuZC1y
dHAiKQorICAgICAgICAgICAgaW5zdGF0cyA9IHN0YXRJdGVtOworICAgIH0pOworICAgIGFzc2Vy
dF9mYWxzZSghIW91dHN0YXRzKTsKKyAgICBhc3NlcnRfdHJ1ZSghIWluc3RhdHMpOworfSwgIlJl
Y2VpdmVyIHN0YXRzIik7CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350061</attachid>
            <date>2018-09-18 14:45:40 -0700</date>
            <delta_ts>2018-09-18 15:02:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189707-20180918144539.patch</filename>
            <type>text/plain</type>
            <size>43146</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM0NDc2YmEzYzY1MTE4
MTJhMjY0OGJkMTA1N2RlZWMyMTgzYzI5OC4uNWJiZTVmNWY5OWVhMDRlYTJiMGM5YWE3NTQzNzhm
ZDhkZDhhZGU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA5LTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2VuZGVy
L3JlY2VpdmVyIGdldFN0YXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODk3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlbmRlciBhbmQgcmVjZWl2ZXIgZ2V0U3RhdHMuCisg
ICAgICAgIEFsc28gYWRkIHN1cHBvcnQgZm9yIHBlZXIgY29ubmVjdGlvbiBzZWxlY3RvciBwYXJh
bWV0ZXIuCisKKyAgICAgICAgQWRkIHRoZSBwbHVtYmluZyBvZiB0aGUgc2VsZWN0b3IgdG8gTGli
V2ViUlRDTWVkaWFFbmRwb2ludC4KKyAgICAgICAgVGhlbiBtYWtlIHVzZSBvZiBsaWJ3ZWJydGMg
b3ZlcmxvYWRlZCBtZXRob2RzIHRvIHJldHJpZXZlIHRoZSByaWdodCBzdGF0cy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IHVwZGF0ZWQvcmViYXNlZCB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6Z2V0U3RhdHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJl
Y2VpdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpSVENSdHBSZWNl
aXZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcjo6Z2V0U3RhdHMpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
UmVjZWl2ZXI6OmJhY2tlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNlbmRlcjo6Z2V0U3RhdHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2VuZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6Z2V0U3RhdHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpnZXRTdGF0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpiYWNrZW5kRnJvbVJUUFNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVSZWNlaXZlckZvclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFk
ZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld1JlbW90ZVRyYW5zY2VpdmVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaDoKKwogMjAxOC0wOS0xOCAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFJUQ1J0cFJlY2VpdmVy
IGdldENvbnRyaWJ1dGluZ1NvdXJjZXMvZ2V0U3luY2hyb25pemF0aW9uU291cmNlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgKaW5kZXggMDZlOTI3MjJmZGM0YzUxNDBkOTAyZjRkMmNhNDg0YTVhMzIxMzc0
Ny4uNjUyMTc2NTI0NDM0ZDI4ZjQxN2U2YTNiMjY3MjE4YWJhMzc4ZWEzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uLmgiCiAjaW5jbHVkZSAiUlRDU2lnbmFsaW5nU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvTG9n
Z2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC02OCw4ICs2OSw5IEBAIHVzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21pc2VE
ZWZlcnJlZDxJRExJbnRlcmZhY2U8UlRDU3RhdHNSZXBvcnQ+PjsKIHVzaW5nIENyZWF0ZVBlZXJD
b25uZWN0aW9uQmFja2VuZCA9IHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+
ICgqKShSVENQZWVyQ29ubmVjdGlvbiYpOwogCiBjbGFzcyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQK
KyAgICA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+CiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgOiBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwg
cHJpdmF0ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgogewogcHVibGljOgpAQCAtOTgsNyArMTAwLDkg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNldENvbmZpZ3VyYXRpb24oTWVkaWFFbmRw
b2ludENvbmZpZ3VyYXRpb24mJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKE1l
ZGlhU3RyZWFtVHJhY2sqLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0U3RhdHMoUlRDUnRwU2VuZGVyJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhSVENSdHBSZWNlaXZlciYsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYpID0gMDsKIAogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNl
bmRlcj4+IGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smLCBWZWN0b3I8U3RyaW5nPiYmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJikgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IGJhMmVlNTYyMTFlMzA5NGUxODg2MmQ1OGQ0ODVhOGUyYzAzMjYwYWEuLmVlOTAw
NzU2MDNjZjc1NGY0MzUxMjBjNTMzNzBjNDc2MjBlZGZlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBA
IC0zMjgsNyArMzI4LDE5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1BlZXJDb25uZWN0aW9uOjpz
ZXRDb25maWd1cmF0aW9uKFJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1CiAKIHZvaWQgUlRDUGVl
ckNvbm5lY3Rpb246OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqIHNlbGVjdG9yLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgbV9iYWNrZW5kLT5nZXRTdGF0cyhzZWxl
Y3RvciwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgaWYgKHNlbGVjdG9yKSB7CisgICAgICAgIGZv
ciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX3RyYW5zY2VpdmVyU2V0LT5saXN0KCkpIHsKKyAgICAg
ICAgICAgIGlmICh0cmFuc2NlaXZlci0+c2VuZGVyKCkudHJhY2soKSA9PSBzZWxlY3Rvcikgewor
ICAgICAgICAgICAgICAgIG1fYmFja2VuZC0+Z2V0U3RhdHModHJhbnNjZWl2ZXItPnNlbmRlcigp
LCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoJnRyYW5zY2VpdmVyLT5yZWNlaXZlcigpLnRyYWNrKCkgPT0g
c2VsZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBtX2JhY2tlbmQtPmdldFN0YXRzKHRyYW5zY2Vp
dmVyLT5yZWNlaXZlcigpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbV9iYWNrZW5kLT5nZXRT
dGF0cyhXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPFJUQ0RhdGFDaGFu
bmVsPj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFN0cmluZyYmIGxhYmVsLCBSVENEYXRhQ2hhbm5lbEluaXQmJiBv
cHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmlkbAppbmRleCAxZjQzNTliOTViMjA0MDFmYzFkZTJmNTY5ZWE4
ZWY5ZmQ4MTRmN2ZiLi5mMzIyNjJiMDFhMDkxNjdkYjA0ZjZmMTMyMzUwYWY2YmEwYWFmYWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmlkbApAQCAtMTM4LDcgKzEzOCw2IEBAIHR5cGVkZWYgUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24gUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247CiAKIAogICAgIC8vIDguMiBT
dGF0aXN0aWNzIEFQSQotICAgIC8vIEZJWE1FIDE2OTY0NDogfHNlbGVjdG9yfCBtYXkgZ28gYXdh
eSBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBzcGVjCiAgICAgUHJvbWlzZTxSVENTdGF0c1Jl
cG9ydD4gZ2V0U3RhdHMob3B0aW9uYWwgTWVkaWFTdHJlYW1UcmFjaz8gc2VsZWN0b3IgPSBudWxs
KTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUmVjZWl2ZXIuY3BwCmluZGV4IDU4ZjQyY2FkNzZjZGE2NGI3ZjU1NTM3MDYyZTFiODA0ODJm
YTdiMjguLmZiMDFlOWNmYzlmNjNlMWI5NjMzYmU4MDAyOTcxYmYxZDY4YWRlZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIu
Y3BwCkBAIC0zNSw5ICszNSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJUQ1J0cFJl
Y2VpdmVyOjpSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKQorUlRDUnRwUmVj
ZWl2ZXI6OlJUQ1J0cFJlY2VpdmVyKFBlZXJDb25uZWN0aW9uQmFja2VuZCYgY29ubmVjdGlvbiwg
UmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNl
aXZlckJhY2tlbmQ+JiYgYmFja2VuZCkKICAgICA6IG1fdHJhY2soV1RGTW92ZSh0cmFjaykpCiAg
ICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKKyAgICAsIG1fY29ubmVjdGlvbihtYWtl
V2Vha1B0cigmY29ubmVjdGlvbikpCiB7CiB9CiAKQEAgLTUwLDYgKzUxLDE1IEBAIHZvaWQgUlRD
UnRwUmVjZWl2ZXI6OnN0b3AoKQogICAgIG1fdHJhY2stPnN0b3BUcmFjayhNZWRpYVN0cmVhbVRy
YWNrOjpTdG9wTW9kZTo6UG9zdEV2ZW50KTsKIH0KIAordm9pZCBSVENSdHBSZWNlaXZlcjo6Z2V0
U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGlmICghbV9jb25u
ZWN0aW9uKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jb25uZWN0aW9uLT5nZXRTdGF0cygqdGhpcywg
V1RGTW92ZShwcm9taXNlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBSZWNlaXZlci5oCmluZGV4IDUzMmUyYzAyN2RiYWQ5NTUxZjBkZDAxZjYz
NzM3N2IyZGJlOGJkNGQuLmI0ZmVlNjBhZmMxOGJkNTk2ZTE2YzQwODBkMGNmNjA4ZTQwNDFjNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJl
Y2VpdmVyLmgKQEAgLTM5LDEyICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZDsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxSVENSdHBSZWNlaXZlcj4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGUoUmVmPE1lZGlh
U3RyZWFtVHJhY2s+JiYgdHJhY2ssIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tl
bmQ+JiYgYmFja2VuZCkKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGUoUGVl
ckNvbm5lY3Rpb25CYWNrZW5kJiBjb25uZWN0aW9uLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0
cmFjaywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGTW92
ZSh0cmFjayksIFdURk1vdmUoYmFja2VuZCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUlRDUnRwUmVjZWl2ZXIoY29ubmVjdGlvbiwgV1RGTW92ZSh0cmFjayksIFdURk1vdmUoYmFj
a2VuZCkpKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3AoKTsKQEAgLTU2LDExICs1NywxNSBAQCBw
dWJsaWM6CiAKICAgICBNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaygpIHsgcmV0dXJuIG1fdHJhY2su
Z2V0KCk7IH0KIAorICAgIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCogYmFja2VuZCgpIHsgcmV0dXJu
IG1fYmFja2VuZC5nZXQoKTsgfQorICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CisKIHByaXZhdGU6Ci0gICAgUlRDUnRwUmVjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tlbmQ+JiYpOworICAgIFJU
Q1J0cFJlY2VpdmVyKFBlZXJDb25uZWN0aW9uQmFja2VuZCYsIFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmKTsKIAogICAgIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiBtX3RyYWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBS
ZWNlaXZlckJhY2tlbmQ+IG1fYmFja2VuZDsKKyAgICBXZWFrUHRyPFBlZXJDb25uZWN0aW9uQmFj
a2VuZD4gbV9jb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlk
bAppbmRleCA5ZjUzZDVkNTM4ODIyNDg4YWQxZDY1ZTVhNjhmODRiY2QyYzg4ZWFjLi45ZDg1NjVh
NzZkMGRhOTBkNzM4ZmNjNmRiZTU0YzBmZGEzNzRjNjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlkbApAQCAtNDEsNCAr
NDEsNSBAQAogICAgIC8vIEZJWE1FIDE2OTY2MjogbWlzc2luZyBnZXRDYXBhYmlsaXRpZXMKICAg
ICBzZXF1ZW5jZTxSVENSdHBDb250cmlidXRpbmdTb3VyY2U+IGdldENvbnRyaWJ1dGluZ1NvdXJj
ZXMoKTsKICAgICBzZXF1ZW5jZTxSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2U+IGdldFN5bmNo
cm9uaXphdGlvblNvdXJjZXMoKTsKKyAgICBQcm9taXNlPFJUQ1N0YXRzUmVwb3J0PiBnZXRTdGF0
cygpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmNwcAppbmRleCA3ZWJkZGQ5NzA4MTMzZTQzZWEzMTIxOTJkMTg0MDJlMGMwYTA3
NmVjLi5jN2NhMmI0ZjI3ZDk5NTlmYjMxMTU1NDQ3YjFhOWY2ZTU3NTM3NzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCkBA
IC0zNywyMiArMzcsMjMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8UlRDUnRwU2Vu
ZGVyPiBSVENSdHBTZW5kZXI6OmNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywg
VmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNl
bmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKK1JlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6
Y3JlYXRlKFBlZXJDb25uZWN0aW9uQmFja2VuZCYgY29ubmVjdGlvbiwgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5p
cXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiB7Ci0gICAgYXV0byBzZW5k
ZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJpbmcodHJhY2stPmtpbmQoKSksIFdU
Rk1vdmUobWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CisgICAgYXV0byBzZW5k
ZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihjb25uZWN0aW9uLCBTdHJpbmcodHJhY2st
PmtpbmQoKSksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiAg
ICAgc2VuZGVyLT5zZXRUcmFjayhXVEZNb3ZlKHRyYWNrKSk7CiAgICAgcmV0dXJuIHNlbmRlcjsK
IH0KIAotUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJh
Y2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8
UlRDUnRwU2VuZGVyQmFja2VuZD4mJiBiYWNrZW5kKQorUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRw
U2VuZGVyOjpjcmVhdGUoUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBjb25uZWN0aW9uLCBTdHJpbmcm
JiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVl
X3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdURk1vdmUodHJhY2tLaW5kKSwgV1RGTW92ZShtZWRpYVN0
cmVhbUlkcyksIFdURk1vdmUoYmFja2VuZCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
VENSdHBTZW5kZXIoY29ubmVjdGlvbiwgV1RGTW92ZSh0cmFja0tpbmQpLCBXVEZNb3ZlKG1lZGlh
U3RyZWFtSWRzKSwgV1RGTW92ZShiYWNrZW5kKSkpOwogfQogCi1SVENSdHBTZW5kZXI6OlJUQ1J0
cFNlbmRlcihTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1J
ZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCitSVENS
dHBTZW5kZXI6OlJUQ1J0cFNlbmRlcihQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIGNvbm5lY3Rpb24s
IFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKICAgICA6IG1fdHJh
Y2tLaW5kKFdURk1vdmUodHJhY2tLaW5kKSkKICAgICAsIG1fbWVkaWFTdHJlYW1JZHMoV1RGTW92
ZShtZWRpYVN0cmVhbUlkcykpCiAgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKKyAg
ICAsIG1fY29ubmVjdGlvbihtYWtlV2Vha1B0cigmY29ubmVjdGlvbikpCiB7CiAgICAgQVNTRVJU
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQ
bGFuRW5hYmxlZCgpIHx8IG1fYmFja2VuZCk7CiB9CkBAIC0xMTAsNiArMTExLDE1IEBAIHZvaWQg
UlRDUnRwU2VuZGVyOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBET01Qcm9tCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+c2V0UGFyYW1ldGVycyhw
YXJhbWV0ZXJzLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAordm9pZCBSVENSdHBTZW5kZXI6Omdl
dFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoIW1fY29u
bmVjdGlvbikgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY29ubmVjdGlvbi0+Z2V0U3RhdHMoKnRoaXMs
IFdURk1vdmUocHJvbWlzZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlci5oCmluZGV4IDIwYmJmZGUxOGMyODc1NDNmZjUxZjQzYzVkZDc5
YWUyM2VlMWQzMDAuLjQ5YWFkM2UzMzQ0ZmRlNmFjY2E0NmVkYzlhYWU2ODdkMzFlNzdkNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIu
aApAQCAtMzksMTAgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOworCiBjbGFzcyBSVENSdHBTZW5kZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxSVENSdHBTZW5kZXI+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYm
LCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRw
U2VuZGVyQmFja2VuZD4mJik7Ci0gICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShT
dHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6
dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1J0
cFNlbmRlcj4gY3JlYXRlKFBlZXJDb25uZWN0aW9uQmFja2VuZCYsIFJlZjxNZWRpYVN0cmVhbVRy
YWNrPiYmLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8
UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7CisgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNy
ZWF0ZShQZWVyQ29ubmVjdGlvbkJhY2tlbmQmLCBTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxT
dHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNr
ZW5kPiYmKTsKIAogICAgIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKCkgeyByZXR1cm4gbV90cmFj
ay5nZXQoKTsgfQogCkBAIC02NCwxNCArNjYsMTcgQEAgcHVibGljOgogCiAgICAgUlRDUnRwU2Vu
ZGVyQmFja2VuZCogYmFja2VuZCgpIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQogCisgICAg
dm9pZCBnZXRTdGF0cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKwogcHJpdmF0ZToKLSAgICBS
VENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3Ry
ZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7CisgICAgUlRD
UnRwU2VuZGVyKFBlZXJDb25uZWN0aW9uQmFja2VuZCYsIFN0cmluZyYmIHRyYWNrS2luZCwgVmVj
dG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRl
ckJhY2tlbmQ+JiYpOwogCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IG1fdHJhY2s7CiAg
ICAgU3RyaW5nIG1fdHJhY2tJZDsKICAgICBTdHJpbmcgbV90cmFja0tpbmQ7CiAgICAgVmVjdG9y
PFN0cmluZz4gbV9tZWRpYVN0cmVhbUlkczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2Vu
ZGVyQmFja2VuZD4gbV9iYWNrZW5kOworICAgIFdlYWtQdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5k
PiBtX2Nvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwKaW5kZXgg
OTFmNjViMzIzOTY3ZDdhNWVhODNjMWQ2N2FhYWEzYWI3OWIyZmVlMC4uMDljZGI4ZTM0NTk5M2Nl
OThkNmJkMzU5Y2MyYjM2NmM3ZWUyMTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbApAQCAtNDIsNCArNDIsNSBAQAogICAg
IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKTsKICAgICBQcm9taXNlPHZvaWQ+
IHNldFBhcmFtZXRlcnMoUlRDUnRwU2VuZFBhcmFtZXRlcnMgcGFyYW1ldGVycyk7CiAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8dm9pZD4gcmVwbGFjZVRyYWNr
KE1lZGlhU3RyZWFtVHJhY2s/IHdpdGhUcmFjayk7CisgICAgUHJvbWlzZTxSVENTdGF0c1JlcG9y
dD4gZ2V0U3RhdHMoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9p
bnQuY3BwCmluZGV4IGIyNWI1NjRmMmJlNzFhZTJlYTVkYjBlOWQzOWZiZGZkYjhlMDdlMjguLmNk
MDAzNTM4MzhjMmY3NjczMzkwZDNjMjQyOGRjMGVmNDBjNDY4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBM
aWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0NyZWF0ZUFuc3dlcigpCiAgICAgbV9iYWNrZW5kLT5D
cmVhdGVBbnN3ZXIoJm1fY3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIG51bGxwdHIp
OwogfQogCi12b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRzKE1lZGlhU3RyZWFt
VHJhY2sqLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgV1RG
OjpGdW5jdGlvbjx2b2lkKHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENTdGF0c0NvbGxlY3Rv
cj4mJik+JiYgZ2V0U3RhdHNGdW5jdGlvbikKIHsKICAgICBhdXRvIGNvbGxlY3RvciA9IExpYldl
YlJUQ1N0YXRzQ29sbGVjdG9yOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiByZXBvcnQpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMjg3LDkgKzI4NywzMiBAQCB2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmCiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNl
PFJUQ1N0YXRzUmVwb3J0Pj4ocmVwb3J0LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9KTsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2ln
bmFsaW5nVGhyZWFkKFt0aGlzLCBjb2xsZWN0b3IgPSBXVEZNb3ZlKGNvbGxlY3RvcildIHsKKyAg
ICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFtnZXRTdGF0
c0Z1bmN0aW9uID0gV1RGTW92ZShnZXRTdGF0c0Z1bmN0aW9uKSwgY29sbGVjdG9yID0gV1RGTW92
ZShjb2xsZWN0b3IpXSgpIG11dGFibGUgeworICAgICAgICBnZXRTdGF0c0Z1bmN0aW9uKFdURk1v
dmUoY29sbGVjdG9yKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6Z2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGdldFN0
YXRzKFdURk1vdmUocHJvbWlzZSksIFt0aGlzXShhdXRvJiYgY29sbGVjdG9yKSB7CisgICAgICAg
IGlmIChtX2JhY2tlbmQpCisgICAgICAgICAgICBtX2JhY2tlbmQtPkdldFN0YXRzKFdURk1vdmUo
Y29sbGVjdG9yKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
Z2V0U3RhdHMod2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZSYgcmVjZWl2ZXIsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBnZXRTdGF0cyhXVEZNb3ZlKHByb21pc2Up
LCBbdGhpcywgcmVjZWl2ZXIgPSBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZl
ckludGVyZmFjZT4oJnJlY2VpdmVyKV0oYXV0byYmIGNvbGxlY3RvcikgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChtX2JhY2tlbmQpCisgICAgICAgICAgICBtX2JhY2tlbmQtPkdldFN0YXRzKFdURk1v
dmUocmVjZWl2ZXIpLCBXVEZNb3ZlKGNvbGxlY3RvcikpOworICAgIH0pOworfQorCit2b2lkIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRzKHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNl
JiBzZW5kZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBnZXRTdGF0
cyhXVEZNb3ZlKHByb21pc2UpLCBbdGhpcywgc2VuZGVyID0gcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNlPigmc2VuZGVyKV0oYXV0byYmIGNvbGxlY3RvcikgIG11
dGFibGUgewogICAgICAgICBpZiAobV9iYWNrZW5kKQotICAgICAgICAgICAgbV9iYWNrZW5kLT5H
ZXRTdGF0cyhjb2xsZWN0b3IuZ2V0KCkpOworICAgICAgICAgICAgbV9iYWNrZW5kLT5HZXRTdGF0
cyhXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUoY29sbGVjdG9yKSk7CiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ01lZGlhRW5kcG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAppbmRleCAxNzdlN2FhMTQzZjY3
ZDljMjY5NzUxNzBlNzg1YzQzNjQwZGMzOWNkLi5lZmI1MTEzMTI1ODRhNTlkNzBhNDZjY2NlZTA0
NzdiMTI1YmEyYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5o
CkBAIC01NSwxMSArNTUsMTEgQEAgY2xhc3MgU2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgTGliV2ViUlRDUHJvdmlkZXI7CiBj
bGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CiBjbGFzcyBMaWJXZWJSVENSdHBS
ZWNlaXZlckJhY2tlbmQ7CiBjbGFzcyBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ7Citj
bGFzcyBMaWJXZWJSVENTdGF0c0NvbGxlY3RvcjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBj
bGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb247CiAKQEAgLTgyLDcgKzgyLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mKTsK
ICAgICB2b2lkIGRvQ3JlYXRlT2ZmZXIoY29uc3QgUlRDT2ZmZXJPcHRpb25zJik7CiAgICAgdm9p
ZCBkb0NyZWF0ZUFuc3dlcigpOwotICAgIHZvaWQgZ2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayos
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CisgICAgdm9pZCBnZXRTdGF0cyh3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJm
YWNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBnZXRTdGF0cyh3ZWJydGM6
OlJ0cFNlbmRlckludGVyZmFjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpOwogICAgIGJvb2wgYWRkSWNlQ2Fu
ZGlkYXRlKHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlJiBjYW5kaWRhdGUpIHsgcmV0dXJu
IG1fYmFja2VuZC0+QWRkSWNlQ2FuZGlkYXRlKCZjYW5kaWRhdGUpOyB9CiAKQEAgLTE0OCw2ICsx
NTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRMb2dnaW5nU3RhdHMoKTsKICAgICB2b2lk
IHN0b3BMb2dnaW5nU3RhdHMoKTsKIAorICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiwgV1RGOjpGdW5jdGlvbjx2b2lkKHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENT
dGF0c0NvbGxlY3Rvcj4mJik+JiYpOworCiAgICAgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtRnJv
bVJUQ1N0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJik7CiAKICAgICB2b2lkIEFk
ZFJlZigpIGNvbnN0IHsgcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDNjNGY5OWE1YjMyZjZmYWZkOGFmMzU0
MmM0ZWFiZTJiZTAxMzQ5NzguLjQyMDUzYjBjNjgxMzc3NmYyYTNjOTM4ZmE1Mzc3NGU1ZDFlYTQx
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcApAQCAtMTI5LDkgKzEyOSwzNyBAQCBib29sIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6c2V0Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbgog
ICAgIHJldHVybiBtX2VuZHBvaW50LT5zZXRDb25maWd1cmF0aW9uKHBhZ2UtPmxpYldlYlJUQ1By
b3ZpZGVyKCksIGNvbmZpZ3VyYXRpb25Gcm9tTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkpOwogfQogCi12b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpn
ZXRTdGF0cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgbV9lbmRwb2lu
dC0+Z2V0U3RhdHModHJhY2ssIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fZW5kcG9pbnQtPmdl
dFN0YXRzKFdURk1vdmUocHJvbWlzZSkpOworfQorCitzdGF0aWMgaW5saW5lIExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQmIGJhY2tlbmRGcm9tUlRQU2VuZGVyKFJUQ1J0cFNlbmRlciYgc2VuZGVy
KQoreworICAgIEFTU0VSVCghc2VuZGVyLmlzU3RvcHBlZCgpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCY+KCpzZW5kZXIuYmFja2VuZCgpKTsKK30K
Kwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzKFJUQ1J0cFNl
bmRlciYgc2VuZGVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgd2Vi
cnRjOjpSdHBTZW5kZXJJbnRlcmZhY2UqIHJ0Y1NlbmRlciA9IHNlbmRlci5iYWNrZW5kKCkgPyBi
YWNrZW5kRnJvbVJUUFNlbmRlcihzZW5kZXIpLnJ0Y1NlbmRlcigpIDogbnVsbHB0cjsKKworICAg
IGlmICghcnRjU2VuZGVyKSB7CisgICAgICAgIG1fZW5kcG9pbnQtPmdldFN0YXRzKFdURk1vdmUo
cHJvbWlzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZW5kcG9pbnQtPmdldFN0
YXRzKCpydGNTZW5kZXIsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6Z2V0U3RhdHMoUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgd2VicnRjOjpSdHBSZWNlaXZl
ckludGVyZmFjZSogcnRjUmVjZWl2ZXIgPSByZWNlaXZlci5iYWNrZW5kKCkgPyBzdGF0aWNfY2Fz
dDxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQqPihyZWNlaXZlci5iYWNrZW5kKCkpLT5ydGNS
ZWNlaXZlcigpIDogbnVsbHB0cjsKKworICAgIGlmICghcnRjUmVjZWl2ZXIpIHsKKyAgICAgICAg
bV9lbmRwb2ludC0+Z2V0U3RhdHMoV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgbV9lbmRwb2ludC0+Z2V0U3RhdHMoKnJ0Y1JlY2VpdmVyLCBXVEZNb3ZlKHBy
b21pc2UpKTsKIH0KIAogdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvU2V0
TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpAQCAt
MjAxLDEyICsyMjksMTIgQEAgdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRv
QWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYgY2FuZGlkYXQKICAgICBhZGRJY2VDYW5k
aWRhdGVTdWNjZWVkZWQoKTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8UlRDUnRwUmVjZWl2ZXI+
IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0
cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKQorUmVmPFJUQ1J0cFJlY2VpdmVyPiBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKFJlZjxSZWFs
dGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVy
QmFja2VuZD4mJiBiYWNrZW5kKQogewogICAgIGF1dG8gcmVtb3RlVHJhY2tQcml2YXRlID0gTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShXVEZNb3ZlKHNvdXJjZSksIFN0cmluZyB7IHNv
dXJjZS0+aWQoKSB9KTsKLSAgICBhdXRvIHJlbW90ZVRyYWNrID0gTWVkaWFTdHJlYW1UcmFjazo6
Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUocmVtb3RlVHJhY2tQcml2YXRlKSk7CisgICAgYXV0byBy
ZW1vdGVUcmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSgqbV9wZWVyQ29ubmVjdGlvbi5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUocmVtb3RlVHJhY2tQcml2YXRlKSk7CiAK
LSAgICByZXR1cm4gUlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlbW90ZVRyYWNrKSwg
V1RGTW92ZShiYWNrZW5kKSk7CisgICAgcmV0dXJuIFJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUoKnRo
aXMsIFdURk1vdmUocmVtb3RlVHJhY2spLCBXVEZNb3ZlKGJhY2tlbmQpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRlRW1wdHlTb3VyY2UoY29uc3Qg
U3RyaW5nJiB0cmFja0tpbmQsIFN0cmluZyYmIHRyYWNrSWQpCkBAIC0yMjAsNyArMjQ4LDcgQEAg
c3RhdGljIGlubGluZSBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRlRW1wdHlTb3VyY2Uo
Y29uc3QgU3RyaW5nJiB0cmFja0tpbmQKIAogUmVmPFJUQ1J0cFJlY2VpdmVyPiBMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKGNvbnN0IFN0cmluZyYgdHJhY2tL
aW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQpCiB7Ci0gICAgYXV0byByZWNlaXZlciA9IGNyZWF0
ZVJlY2VpdmVyRm9yU291cmNlKCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgY3JlYXRlRW1wdHlTb3VyY2UodHJhY2tLaW5kLCBTdHJpbmcodHJhY2tJZCkpLCBudWxs
cHRyKTsKKyAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoY3JlYXRl
RW1wdHlTb3VyY2UodHJhY2tLaW5kLCBTdHJpbmcodHJhY2tJZCkpLCBudWxscHRyKTsKICAgICBt
X3BlbmRpbmdSZWNlaXZlcnMuYXBwZW5kKHJlY2VpdmVyLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJu
IHJlY2VpdmVyOwogfQpAQCAtMjM4LDEwICsyNjYsMTAgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpWaWRlb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6
dmkKICAgICAgICAgfQogICAgIH0KICAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOwotICAgIGF1dG8g
cmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHNvdXJjZS5jb3B5UmVmKCksIG51bGxwdHIpOworICAgIGF1
dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShzb3VyY2UuY29weVJlZigpLCBu
dWxscHRyKTsKIAogICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwotICAgIGF1dG8gdHJhbnNj
ZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJ2
aWRlbyIsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwg
bnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVh
dGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJ2aWRlbyJfcywgeyB9LCBXVEZNb3ZlKHNl
bmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsKICAgICB0cmFuc2Nl
aXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0aW9uLmFk
ZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMjYxLDEwICsyODksMTAg
QEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBdWRpb1JlY2VpdmVyIExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXUKICAgICAgICAgfQogICAgIH0KICAgICBhdXRvIHNv
dXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1v
dmUodHJhY2tJZCkpOwotICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJj
ZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNvdXJjZS5jb3B5
UmVmKCksIG51bGxwdHIpOworICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNv
dXJjZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAogICAgIGF1dG8gc2VuZGVyQmFja2Vu
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51
bGxwdHIpOwotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRl
KFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJhdWRpbyIsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5k
KSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZlciA9
IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJh
dWRpbyJfLCB7IH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpLCByZWNlaXZlci5jb3B5UmVmKCks
IG51bGxwdHIpOwogICAgIHRyYW5zY2VpdmVyLT5kaXNhYmxlU2VuZGluZ0RpcmVjdGlvbigpOwog
ICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFuc2NlaXZlcikp
OwogCkBAIC0zMTUsMTMgKzM0Myw2IEBAIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVtb3RlRGVzY3JpcHRpb24oCiAgICAgcmV0
dXJuIG1fZW5kcG9pbnQtPnJlbW90ZURlc2NyaXB0aW9uKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYgYmFja2VuZEZyb21SVFBTZW5kZXIoUlRDUnRwU2Vu
ZGVyJiBzZW5kZXIpCi17Ci0gICAgQVNTRVJUKCFzZW5kZXIuaXNTdG9wcGVkKCkpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kJj4oKnNlbmRlci5iYWNr
ZW5kKCkpOwotfQotCi0KIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFJUQ1J0cFNlbmRlcj4gZmluZEV4
aXN0aW5nU2VuZGVyKGNvbnN0IFZlY3RvcjxzdGQ6OnJlZmVyZW5jZV93cmFwcGVyPFJUQ1J0cFNl
bmRlcj4+JiBzZW5kZXJzLCBMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kJiBzZW5kZXJCYWNrZW5k
KQogewogICAgIEFTU0VSVChzZW5kZXJCYWNrZW5kLnJ0Y1NlbmRlcigpKTsKQEAgLTM0Nyw4ICsz
NjgsOCBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwU2VuZGVyPj4gTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjphZGRUcmFjayhNZWRpYVN0cgogCiAgICAgICAgIGF1dG8gdHJhbnNjZWl2
ZXJCYWNrZW5kID0gbV9lbmRwb2ludC0+dHJhbnNjZWl2ZXJCYWNrZW5kRnJvbVNlbmRlcigqc2Vu
ZGVyQmFja2VuZCk7CiAKLSAgICAgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0
ZShtYWtlUmVmKHRyYWNrKSwgV1RGTW92ZShtZWRpYVN0cmVhbUlkcyksIFdURk1vdmUoc2VuZGVy
QmFja2VuZCkpOwotICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3Vy
Y2UoKm1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjcmVhdGVFbXB0
eVNvdXJjZSh0cmFjay5raW5kKCksIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSksIHRyYW5z
Y2VpdmVyQmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCkpOworICAgICAgICBhdXRvIHNl
bmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBtYWtlUmVmKHRyYWNrKSwgV1RGTW92
ZShtZWRpYVN0cmVhbUlkcyksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOworICAgICAgICBhdXRv
IHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoY3JlYXRlRW1wdHlTb3VyY2UodHJh
Y2sua2luZCgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLCB0cmFuc2NlaXZlckJhY2tl
bmQtPmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpKTsKICAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9
IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoc2VuZGVyLmNvcHlSZWYoKSwgV1RGTW92ZShyZWNl
aXZlciksIFdURk1vdmUodHJhbnNjZWl2ZXJCYWNrZW5kKSk7CiAgICAgICAgIG1fcGVlckNvbm5l
Y3Rpb24uYWRkSW50ZXJuYWxUcmFuc2NlaXZlcihXVEZNb3ZlKHRyYW5zY2VpdmVyKSk7CiAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKHNlbmRlcik7CkBAIC0zNzMsNyArMzk0LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPFJUQ1J0cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YWRk
VHJhY2soTWVkaWFTdHIKICAgICAgICAgU3RyaW5nIHRyYWNrSWQgPSBjcmVhdGVDYW5vbmljYWxV
VUlEU3RyaW5nKCk7CiAKICAgICAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3Vu
aXF1ZTxMaWJXZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Ci0gICAgICAg
IGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUobWFrZVJlZih0cmFjayksIFZl
Y3RvcjxTdHJpbmc+IHsgbWVkaWFTdHJlYW1JZHMgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7
CisgICAgICAgIGF1dG8gbmV3U2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsIG1h
a2VSZWYodHJhY2spLCBWZWN0b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdURk1vdmUo
c2VuZGVyQmFja2VuZCkpOwogICAgICAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXIo
dHJhY2tLaW5kLCB0cmFja0lkKTsKICAgICAgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRy
YW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShuZXdTZW5kZXIpLCBXVEZNb3ZlKHJlY2VpdmVyKSwg
bnVsbHB0cik7CiAKQEAgLTM5NCw4ICs0MTUsOCBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJh
bnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFVuaWZpZWRQbAog
ICAgIGlmICghYmFja2VuZHMpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNj
ZXNzRXJyb3IsICJVbmFibGUgdG8gYWRkIHRyYW5zY2VpdmVyIl9zIH07CiAKLSAgICBhdXRvIHNl
bmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFdURk1vdmUodHJhY2tPcktpbmQpLCBWZWN0b3I8
U3RyaW5nPiB7IH0sIFdURk1vdmUoYmFja2VuZHMtPnNlbmRlckJhY2tlbmQpKTsKLSAgICBhdXRv
IHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoKm1fcGVlckNvbm5lY3Rpb24uc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjcmVhdGVFbXB0eVNvdXJjZShzZW5kZXItPnRyYWNrS2lu
ZCgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLCBXVEZNb3ZlKGJhY2tlbmRzLT5yZWNl
aXZlckJhY2tlbmQpKTsKKyAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0
aGlzLCBXVEZNb3ZlKHRyYWNrT3JLaW5kKSwgVmVjdG9yPFN0cmluZz4geyB9LCBXVEZNb3ZlKGJh
Y2tlbmRzLT5zZW5kZXJCYWNrZW5kKSk7CisgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2Vp
dmVyRm9yU291cmNlKGNyZWF0ZUVtcHR5U291cmNlKHNlbmRlci0+dHJhY2tLaW5kKCksIGNyZWF0
ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSksIFdURk1vdmUoYmFja2VuZHMtPnJlY2VpdmVyQmFja2Vu
ZCkpOwogICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdU
Rk1vdmUoc2VuZGVyKSwgV1RGTW92ZShyZWNlaXZlciksIFdURk1vdmUoYmFja2VuZHMtPnRyYW5z
Y2VpdmVyQmFja2VuZCkpOwogICAgIG1fcGVlckNvbm5lY3Rpb24uYWRkSW50ZXJuYWxUcmFuc2Nl
aXZlcih0cmFuc2NlaXZlci5jb3B5UmVmKCkpOwogICAgIHJldHVybiBXVEZNb3ZlKHRyYW5zY2Vp
dmVyKTsKQEAgLTQwNyw3ICs0MjgsNyBAQCBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2
ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRyYW5zY2VpdgogICAgICAg
ICByZXR1cm4gYWRkVW5pZmllZFBsYW5UcmFuc2NlaXZlcihTdHJpbmcgeyB0cmFja0tpbmQgfSwg
aW5pdCk7CiAKICAgICBhdXRvIHNlbmRlckJhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPExpYldl
YlJUQ1J0cFNlbmRlckJhY2tlbmQ+KCp0aGlzLCBudWxscHRyKTsKLSAgICBhdXRvIG5ld1NlbmRl
ciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKFN0cmluZyh0cmFja0tpbmQpLCBWZWN0b3I8U3RyaW5n
PigpLCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKKyAgICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0
cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBTdHJpbmcodHJhY2tLaW5kKSwgVmVjdG9yPFN0cmluZz4o
KSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CiAgICAgcmV0dXJuIGNvbXBsZXRlQWRkVHJhbnNj
ZWl2ZXIoV1RGTW92ZShuZXdTZW5kZXIpLCBpbml0LCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCksIHRyYWNrS2luZCk7CiB9CiAKQEAgLTQxOCw3ICs0MzksNyBAQCBFeGNlcHRpb25PcjxSZWY8
UlRDUnRwVHJhbnNjZWl2ZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFkZFRy
YW5zY2VpdgogCiAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7CiAgICAgYXV0byYgYmFja2Vu
ZCA9ICpzZW5kZXJCYWNrZW5kOwotICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVh
dGUodHJhY2suY29weVJlZigpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRlckJhY2tl
bmQpKTsKKyAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCB0cmFj
ay5jb3B5UmVmKCksIFZlY3RvcjxTdHJpbmc+KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwog
ICAgIGlmICghbV9lbmRwb2ludC0+YWRkVHJhY2soYmFja2VuZCwgdHJhY2ssIFZlY3RvcjxTdHJp
bmc+IHsgfSkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3Is
ICJVbmFibGUgdG8gYWRkIHRyYWNrIl9zIH07CiAKQEAgLTQ0MSw4ICs0NjIsOCBAQCBSVENSdHBU
cmFuc2NlaXZlciogTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpleGlzdGluZ1RyYW5z
Y2VpdmVyKFdURjo6RnVuYwogCiBSVENSdHBUcmFuc2NlaXZlciYgTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpuZXdSZW1vdGVUcmFuc2NlaXZlcihzdGQ6OnVuaXF1ZV9wdHI8TGliV2Vi
UlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kPiYmIHRyYW5zY2VpdmVyQmFja2VuZCwgUmVmPFJlYWx0
aW1lTWVkaWFTb3VyY2U+JiYgcmVjZWl2ZXJTb3VyY2UpCiB7Ci0gICAgYXV0byBzZW5kZXIgPSBS
VENSdHBTZW5kZXI6OmNyZWF0ZShyZWNlaXZlclNvdXJjZS0+dHlwZSgpID09IFJlYWx0aW1lTWVk
aWFTb3VyY2U6OlR5cGU6OkF1ZGlvID8gImF1ZGlvIl9zIDogInZpZGVvIl9zLCBWZWN0b3I8U3Ry
aW5nPiB7IH0sIHRyYW5zY2VpdmVyQmFja2VuZC0+Y3JlYXRlU2VuZGVyQmFja2VuZCgqdGhpcywg
bnVsbHB0cikpOwotICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZSgq
bV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUocmVjZWl2
ZXJTb3VyY2UpLCB0cmFuc2NlaXZlckJhY2tlbmQtPmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpKTsK
KyAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCByZWNlaXZlclNv
dXJjZS0+dHlwZSgpID09IFJlYWx0aW1lTWVkaWFTb3VyY2U6OlR5cGU6OkF1ZGlvID8gImF1ZGlv
Il9zIDogInZpZGVvIl9zLCBWZWN0b3I8U3RyaW5nPiB7IH0sIHRyYW5zY2VpdmVyQmFja2VuZC0+
Y3JlYXRlU2VuZGVyQmFja2VuZCgqdGhpcywgbnVsbHB0cikpOworICAgIGF1dG8gcmVjZWl2ZXIg
PSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShXVEZNb3ZlKHJlY2VpdmVyU291cmNlKSwgdHJhbnNj
ZWl2ZXJCYWNrZW5kLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSk7CiAgICAgYXV0byB0cmFuc2Nl
aXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoV1RGTW92ZShzZW5kZXIpLCBXVEZNb3Zl
KHJlY2VpdmVyKSwgV1RGTW92ZSh0cmFuc2NlaXZlckJhY2tlbmQpKTsKICAgICBtX3BlZXJDb25u
ZWN0aW9uLmFkZEludGVybmFsVHJhbnNjZWl2ZXIodHJhbnNjZWl2ZXIuY29weVJlZigpKTsKICAg
ICByZXR1cm4gdHJhbnNjZWl2ZXIuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldl
YlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IDFmNjg1MGQxNzUyMzI1YTExNGI3OTQ0
NzQ1YWIxNWYyNDdhZTE5YzMuLjVlYzc5MTgwNjAyMjc4MDcxZjNmNzMyOGQ1M2ZhOGNkZWYxNjg3
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFj
a2VuZC5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+
CiAKIG5hbWVzcGFjZSB3ZWJydGMgewogY2xhc3MgSWNlQ2FuZGlkYXRlSW50ZXJmYWNlOwpAQCAt
NDAsNiArMzksNyBAQCBjbGFzcyBMaWJXZWJSVENNZWRpYUVuZHBvaW50OwogY2xhc3MgTGliV2Vi
UlRDUHJvdmlkZXI7CiBjbGFzcyBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ7CiBjbGFz
cyBSVENSdHBSZWNlaXZlcjsKK2NsYXNzIFJUQ1J0cFJlY2VpdmVyQmFja2VuZDsKIGNsYXNzIFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbjsKIGNsYXNzIFJUQ1N0YXRzUmVwb3J0OwogY2xhc3MgUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlOwpAQCAtNDgsNyArNDgsNyBAQCBjbGFzcyBSZWFsdGltZU1l
ZGlhU291cmNlOwogY2xhc3MgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOwogY2xhc3MgUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOwogCi1jbGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlv
bkJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25CYWNrZW5kLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kPiB7CitjbGFzcyBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQgZmluYWwgOiBwdWJsaWMgUGVlckNvbm5lY3Rpb25C
YWNrZW5kIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQoUlRDUGVlckNvbm5lY3Rpb24mLCBMaWJXZWJSVENQ
cm92aWRlciYpOwpAQCAtNjcsNyArNjcsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9TdG9wKCkg
ZmluYWw7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gY3JlYXRl
RGF0YUNoYW5uZWxIYW5kbGVyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5p
dCYpIGZpbmFsOwogICAgIGJvb2wgc2V0Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmln
dXJhdGlvbiYmKSBmaW5hbDsKLSAgICB2b2lkIGdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFN0YXRzKFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpIGZpbmFsOworICAgIHZvaWQgZ2V0U3RhdHMoUlRDUnRwU2VuZGVyJiwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJikgZmluYWw7CisgICAgdm9pZCBnZXRTdGF0cyhSVENSdHBS
ZWNlaXZlciYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpIGZpbmFsOwogCiAgICAgUmVmUHRyPFJU
Q1Nlc3Npb25EZXNjcmlwdGlvbj4gbG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0IGZpbmFsOwogICAg
IFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IGN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCkg
Y29uc3QgZmluYWw7CkBAIC0xMTYsNiArMTE4LDggQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogICAgIEV4Y2VwdGlvbk9yPFJlZjxSVENSdHBUcmFuc2NlaXZlcj4+IGFkZFVu
aWZpZWRQbGFuVHJhbnNjZWl2ZXIoVCYmIHRyYWNrT3JLaW5kLCBjb25zdCBSVENSdHBUcmFuc2Nl
aXZlckluaXQmKTsKIAorICAgIFJlZjxSVENSdHBSZWNlaXZlcj4gY3JlYXRlUmVjZWl2ZXJGb3JT
b3VyY2UoUmVmPFJlYWx0aW1lTWVkaWFTb3VyY2U+JiYsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBS
ZWNlaXZlckJhY2tlbmQ+JiYpOworCiAgICAgUmVmPExpYldlYlJUQ01lZGlhRW5kcG9pbnQ+IG1f
ZW5kcG9pbnQ7CiAgICAgYm9vbCBtX2lzTG9jYWxEZXNjcmlwdGlvblNldCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX2lzUmVtb3RlRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRw
UmVjZWl2ZXJCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaAppbmRleCBmZDBkOTVlYzMyOTc1
YzE2YTUzYzQ4MTJmMTM3OWFlNzM0MzFiYWU3Li4zMTI0MzIzZDM0NmYxMDUzYjNmNzE0ZGNmZmFk
NDI5ZDAwYWI0ZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBSZWNlaXZl
ckJhY2tlbmQuaApAQCAtNDUsNiArNDUsOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAg
IHdlYnJ0Yzo6UnRwUmVjZWl2ZXJJbnRlcmZhY2UqIHJ0Y1JlY2VpdmVyKCkgeyByZXR1cm4gbV9y
dGNSZWNlaXZlci5nZXQoKTsgfQorCiBwcml2YXRlOgogICAgIFJUQ1J0cFBhcmFtZXRlcnMgZ2V0
UGFyYW1ldGVycygpIGZpbmFsOwogICAgIFZlY3RvcjxSVENSdHBDb250cmlidXRpbmdTb3VyY2U+
IGdldENvbnRyaWJ1dGluZ1NvdXJjZXMoKSBjb25zdCBmaW5hbDsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YzIyNzJhMGNh
NDU5OGQ0OWI4MGM4NzE5ZGNjNTYwNjdmMGQ2YTA0Li4zOTE3MjVmMDBhZTdiZDNlNzcxY2Q3MGYz
ODZhODg4Y2FlOWMxZTI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDktMTggIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBzZW5kZXIv
cmVjZWl2ZXIgZ2V0U3RhdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE4OTcwNworCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKwor
ICAgICAgICAqIHdlYnJ0Yy92aWRlby1zdGF0cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2Vi
cnRjL3ZpZGVvLXN0YXRzLmh0bWw6CisKIDIwMTgtMDktMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIExheW91dCBUZXN0IHdlYnJ0Yy92aWRlby1tdXRlLmh0
bWwgaXMgZmxha3kuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA2ZjgzMDgxN2Zh
YTJjNWNkZDY2OTEyZGY3NDQyZWFlNmI0N2Y5NTVlLi43NWEyN2M0NmMzYjcxNzFlMDc3M2VjOTU3
OWU2N2QwZjJiNWUyMDU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxOC0wOS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IHNlbmRlci9yZWNlaXZlciBnZXRTdGF0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg5NzA3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dl
YnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRTdGF0cy5odHRwcy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5kZXItZ2V0U3RhdHMuaHR0cHMt
ZXhwZWN0ZWQudHh0OgorCiAyMDE4LTA5LTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgUlRDUnRwUmVjZWl2ZXIgZ2V0Q29udHJpYnV0aW5n
U291cmNlcy9nZXRTeW5jaHJvbml6YXRpb25Tb3VyY2VzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1n
ZXRTdGF0cy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRTdGF0cy5odHRwcy1leHBl
Y3RlZC50eHQKaW5kZXggZWNiODhhMmZkZWMwMjEyMDJiNWRiYjUwNGE5MGUxM2Q0NzllZWQ4Mi4u
NGVlNzdhNDI3MGEyNjNkMzJmNmI5ZGUwZGFmMTQxNjAyYjY2YjljMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUmVj
ZWl2ZXItZ2V0U3RhdHMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJlY2VpdmVyLWdldFN0YXRz
Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAotRkFJTCByZWNlaXZlci5nZXRT
dGF0cygpIHZpYSBhZGRUcmFuc2NlaXZlciBzaG91bGQgcmV0dXJuIHN0YXRzIHJlcG9ydCBjb250
YWluaW5nIGluYm91bmQtcnRwIHN0YXRzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogcmVjZWl2ZXIuZ2V0U3RhdHMgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAncmVjZWl2ZXIuZ2V0U3RhdHMoKScsICdyZWNlaXZlci5nZXRTdGF0
cycgaXMgdW5kZWZpbmVkKSIKLUZBSUwgcmVjZWl2ZXIuZ2V0U3RhdHMoKSB2aWEgYWRkVHJhY2sg
c2hvdWxkIHJldHVybiBzdGF0cyByZXBvcnQgY29udGFpbmluZyBpbmJvdW5kLXJ0cCBzdGF0cyBw
cm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rpb24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBl
RXJyb3I6IHJlY2VpdmVyLmdldFN0YXRzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3JlY2VpdmVy
LmdldFN0YXRzKCknLCAncmVjZWl2ZXIuZ2V0U3RhdHMnIGlzIHVuZGVmaW5lZCkiCitGQUlMIHJl
Y2VpdmVyLmdldFN0YXRzKCkgdmlhIGFkZFRyYW5zY2VpdmVyIHNob3VsZCByZXR1cm4gc3RhdHMg
cmVwb3J0IGNvbnRhaW5pbmcgaW5ib3VuZC1ydHAgc3RhdHMgYXNzZXJ0X3RydWU6IEV4cGVjdCBz
dGF0c1JlcG9ydCB0byBjb250YWluIHN0YXRzIG9iamVjdCBvZiB0eXBlIGluYm91bmQtcnRwIGV4
cGVjdGVkIHRydWUgZ290IGZhbHNlCitGQUlMIHJlY2VpdmVyLmdldFN0YXRzKCkgdmlhIGFkZFRy
YWNrIHNob3VsZCByZXR1cm4gc3RhdHMgcmVwb3J0IGNvbnRhaW5pbmcgaW5ib3VuZC1ydHAgc3Rh
dHMgYXNzZXJ0X2VxdWFsczogRXhwZWN0IGRpY3Rpb25hcnkubWVkaWFUeXBlIHRvIGJlIHN0cmlu
ZyBleHBlY3RlZCAic3RyaW5nIiBidXQgZ290ICJ1bmRlZmluZWQiCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFNl
bmRlci1nZXRTdGF0cy5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBTZW5kZXItZ2V0U3RhdHMuaHR0cHMt
ZXhwZWN0ZWQudHh0CmluZGV4IDhiYmMzOGUyMTA1Nzg2MWYyMmQ2Y2VkNjM0M2FhMjFmODU3NmYy
MjEuLjhlOThlNDU1NjkxMDM3NmNiODA3OWMyN2Q0MGNkMzljYThlNDUxYjkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0
cFNlbmRlci1nZXRTdGF0cy5odHRwcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLWdldFN0YXRz
Lmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIAotRkFJTCBzZW5kZXIuZ2V0U3Rh
dHMoKSB2aWEgYWRkVHJhbnNjZWl2ZXIgc2hvdWxkIHJldHVybiBzdGF0cyByZXBvcnQgY29udGFp
bmluZyBvdXRib3VuZC1ydHAgc3RhdHMgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9u
IHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBzZW5kZXIuZ2V0U3RhdHMgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnc2VuZGVyLmdldFN0YXRzKCknLCAnc2VuZGVyLmdldFN0YXRzJyBpcyB1
bmRlZmluZWQpIgotRkFJTCBzZW5kZXIuZ2V0U3RhdHMoKSB2aWEgYWRkVHJhY2sgc2hvdWxkIHJl
dHVybiBzdGF0cyByZXBvcnQgY29udGFpbmluZyBvdXRib3VuZC1ydHAgc3RhdHMgcHJvbWlzZV90
ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlwZUVycm9yOiBz
ZW5kZXIuZ2V0U3RhdHMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnc2VuZGVyLmdldFN0YXRzKCkn
LCAnc2VuZGVyLmdldFN0YXRzJyBpcyB1bmRlZmluZWQpIgorRkFJTCBzZW5kZXIuZ2V0U3RhdHMo
KSB2aWEgYWRkVHJhbnNjZWl2ZXIgc2hvdWxkIHJldHVybiBzdGF0cyByZXBvcnQgY29udGFpbmlu
ZyBvdXRib3VuZC1ydHAgc3RhdHMgYXNzZXJ0X3RydWU6IEV4cGVjdCBzdGF0c1JlcG9ydCB0byBj
b250YWluIHN0YXRzIG9iamVjdCBvZiB0eXBlIG91dGJvdW5kLXJ0cCBleHBlY3RlZCB0cnVlIGdv
dCBmYWxzZQorRkFJTCBzZW5kZXIuZ2V0U3RhdHMoKSB2aWEgYWRkVHJhY2sgc2hvdWxkIHJldHVy
biBzdGF0cyByZXBvcnQgY29udGFpbmluZyBvdXRib3VuZC1ydHAgc3RhdHMgYXNzZXJ0X2VxdWFs
czogRXhwZWN0IGRpY3Rpb25hcnkudHJhY2tJZCB0byBiZSBzdHJpbmcgZXhwZWN0ZWQgInN0cmlu
ZyIgYnV0IGdvdCAidW5kZWZpbmVkIgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMv
dmlkZW8tc3RhdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXN0YXRz
LWV4cGVjdGVkLnR4dAppbmRleCAyNDJhNGE1MzcxYWU3OTc2OWU4MmY1NDA0MGUwNGUxMDYyOTNl
NzY1Li5lZjFiMjI3Y2VhZmU4MmVlYjZiMDRlNDYxZTJjYjNmOGMwMmI5ZWY1IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tc3RhdHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL3dlYnJ0Yy92aWRlby1zdGF0cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw1IEBACiAK
IFBBU1MgQmFzaWMgdmlkZW8gc3RhdHMgCitQQVNTIFNlbmRlciBzdGF0cyAKK1BBU1MgUmVjZWl2
ZXIgc3RhdHMgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zdGF0cy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXN0YXRzLmh0bWwKaW5kZXggNTJhNzY2YTZm
NWI1ZWFiMGU1N2MxMmU0ODA5YjIzNTE3YzY5MjczOC4uODI4NmNhNzVhYmRiZTFhNGIzODQ5ZGM1
MGUwYjBkNDkwMTQyMjBlMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXN0
YXRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXN0YXRzLmh0bWwKQEAgLTk2
LDU1ICs5Niw3NiBAQCBmdW5jdGlvbiBjaGVja091dGJvdW5kRnJhbWVzTnVtYmVySW5jcmVhc2Vk
KGZpcnN0Q29ubmVjdGlvbiwgc3RhdHNGaXJzdENvbm5lY3RpbwogfQogCiB2YXIgZmlyc3RDb25u
ZWN0aW9uLCBzZWNvbmRDb25uZWN0aW9uOwotcHJvbWlzZV90ZXN0KCh0ZXN0KSA9PiB7Citwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAg
ICAgICAgIHRlc3RSdW5uZXIuc2V0VXNlck1lZGlhUGVybWlzc2lvbih0cnVlKTsKIAotICAgIHZh
ciBsb2NhbFN0cmVhbSwgcmVtb3RlU3RyZWFtOwotICAgIHJldHVybiBuYXZpZ2F0b3IubWVkaWFE
ZXZpY2VzLmdldFVzZXJNZWRpYSh7IHZpZGVvOiB0cnVlfSkudGhlbigoc3RyZWFtKSA9PiB7Ci0g
ICAgICAgIGxvY2FsU3RyZWFtID0gc3RyZWFtOwotICAgICAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4gewotICAgICAgICAgICAgY3JlYXRlQ29ubmVjdGlvbnMoKGNv
bm5lY3Rpb24pID0+IHsKLSAgICAgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24gPSBjb25uZWN0
aW9uOwotICAgICAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbi5hZGRUcmFjayhzdHJlYW0uZ2V0
VmlkZW9UcmFja3MoKVswXSwgc3RyZWFtKTsKLSAgICAgICAgICAgIH0sIChjb25uZWN0aW9uKSA9
PiB7Ci0gICAgICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb247Ci0gICAg
ICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5vbnRyYWNrID0gKHRyYWNrRXZlbnQpID0+IHsK
LSAgICAgICAgICAgICAgICAgICAgcmVtb3RlU3RyZWFtID0gdHJhY2tFdmVudC5zdHJlYW1zWzBd
OwotICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3Qg
dGltZWQgb3V0IiksIDUwMDApOworICAgIGNvbnN0IGxvY2FsU3RyZWFtID0gYXdhaXQgbmF2aWdh
dG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogdHJ1ZX0pOworICAgIGF3YWl0
IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgY3JlYXRlQ29ubmVj
dGlvbnMoKGNvbm5lY3Rpb24pID0+IHsKKyAgICAgICAgICAgIGZpcnN0Q29ubmVjdGlvbiA9IGNv
bm5lY3Rpb247CisgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2sobG9jYWxTdHJl
YW0uZ2V0VmlkZW9UcmFja3MoKVswXSwgbG9jYWxTdHJlYW0pOworICAgICAgICB9LCAoY29ubmVj
dGlvbikgPT4geworICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbiA9IGNvbm5lY3Rpb247Cisg
ICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3RyZWFtLmdldFZpZGVv
VHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24u
b250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwor
ICAgICAgICAgICAgfTsKICAgICAgICAgfSk7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAg
IHJldHVybiBnZXRPdXRib3VuZFJUUFN0YXRzKGZpcnN0Q29ubmVjdGlvbik7Ci0gICAgfSkudGhl
bigoc3RhdHMpID0+IHsKLSAgICAgICAgYXNzZXJ0X3RydWUoISFzdGF0cywgIm91dGJvdW5kLXJ0
cCBzdGF0cyBzaG91bGQgbm90IGJlIG51bGwiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoTnVtYmVy
LmlzSW50ZWdlcihzdGF0cy5mcmFtZXNFbmNvZGVkKSwgImZyYW1lc0VuY29kZWQgc2hvdWxkIGJl
IGFuIGludGVnZXIiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUoTnVtYmVyLmlzSW50ZWdlcihzdGF0
cy5xcFN1bSksICJvdXRib3VuZCBxcFN1bSBzaG91bGQgYmUgYW4gaW50ZWdlciIpOwotICAgICAg
ICBhc3NlcnRfdHJ1ZSh0eXBlb2Ygc3RhdHMudGltZXN0YW1wID09PSAibnVtYmVyIiwgInRpbWVz
dGFtcCBzaG91bGQgYmUgYSBkb3VibGUiKTsKLSAgICAgICAgc3RhdHNGaXJzdENvbm5lY3Rpb24g
PSBzdGF0czsKLSAgICAgICAgcmV0dXJuIGdldEluYm91bmRSVFBTdGF0cyhzZWNvbmRDb25uZWN0
aW9uKTsKLSAgICB9KS50aGVuKChzdGF0cykgPT4gewotICAgICAgICBhc3NlcnRfdHJ1ZSghIXN0
YXRzLCAiaW5ib3VuZC1ydHAgc3RhdHMgc2hvdWxkIG5vdCBiZSBudWxsIik7Ci0gICAgICAgIGFz
c2VydF90cnVlKE51bWJlci5pc0ludGVnZXIoc3RhdHMuZnJhbWVzRGVjb2RlZCksICJmcmFtZXNE
ZWNvZGVkIHNob3VsZCBiZSBhbiBpbnRlZ2VyIik7Ci0gICAgICAgIGFzc2VydF90cnVlKE51bWJl
ci5pc0ludGVnZXIoc3RhdHMucXBTdW0pLCAiaW5ib3VuZCBxcFN1bSBzaG91bGQgYmUgYW4gaW50
ZWdlciIpOwotICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2Ygc3RhdHMudGltZXN0YW1wID09PSAi
bnVtYmVyIiwgInRpbWVzdGFtcCBzaG91bGQgYmUgYSBkb3VibGUiKTsKLSAgICAgICAgc3RhdHNT
ZWNvbmRDb25uZWN0aW9uID0gc3RhdHM7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAgIHJl
dHVybiBjaGVja0luYm91bmRGcmFtZXNOdW1iZXJJbmNyZWFzZWQoc2Vjb25kQ29ubmVjdGlvbiwg
c3RhdHNTZWNvbmRDb25uZWN0aW9uLCAwKTsKLSAgICB9KS50aGVuKCgpID0+IHsKLSAgICAgICAg
cmV0dXJuIGNoZWNrT3V0Ym91bmRGcmFtZXNOdW1iZXJJbmNyZWFzZWQoZmlyc3RDb25uZWN0aW9u
LCBzdGF0c0ZpcnN0Q29ubmVjdGlvbiwgMCk7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAg
IHJldHVybiBnZXRTdGF0c1R5cGUoZmlyc3RDb25uZWN0aW9uKTsKLSAgICB9KS50aGVuKCh0eXBl
cykgPT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKHR5cGVzLCBbImNhbmRpZGF0ZS1w
YWlyIiwgImNlcnRpZmljYXRlIiwgIm91dGJvdW5kLXJ0cCIsICJ0cmFjayJdKTsKLSAgICB9KS50
aGVuKCgpID0+IHsKLSAgICAgICAgcmV0dXJuIGdldFN0YXRzVHlwZShzZWNvbmRDb25uZWN0aW9u
KTsKLSAgICB9KS50aGVuKCh0eXBlcykgPT4gewotICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHR5cGVzLCBbImNhbmRpZGF0ZS1wYWlyIiwgImNlcnRpZmljYXRlIiwgImluYm91bmQtcnRwIiwg
InRyYWNrIl0pOworICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgiVGVzdCB0aW1lZCBv
dXQiKSwgNTAwMCk7CiAgICAgfSk7CisKKyAgICBsZXQgc3RhdHMgPSBhd2FpdCBnZXRPdXRib3Vu
ZFJUUFN0YXRzKGZpcnN0Q29ubmVjdGlvbik7CisgICAgYXNzZXJ0X3RydWUoISFzdGF0cywgIm91
dGJvdW5kLXJ0cCBzdGF0cyBzaG91bGQgbm90IGJlIG51bGwiKTsKKyAgICBhc3NlcnRfdHJ1ZShO
dW1iZXIuaXNJbnRlZ2VyKHN0YXRzLmZyYW1lc0VuY29kZWQpLCAiZnJhbWVzRW5jb2RlZCBzaG91
bGQgYmUgYW4gaW50ZWdlciIpOworICAgIGFzc2VydF90cnVlKE51bWJlci5pc0ludGVnZXIoc3Rh
dHMucXBTdW0pLCAib3V0Ym91bmQgcXBTdW0gc2hvdWxkIGJlIGFuIGludGVnZXIiKTsKKyAgICBh
c3NlcnRfdHJ1ZSh0eXBlb2Ygc3RhdHMudGltZXN0YW1wID09PSAibnVtYmVyIiwgInRpbWVzdGFt
cCBzaG91bGQgYmUgYSBkb3VibGUiKTsKKyAgICBzdGF0c0ZpcnN0Q29ubmVjdGlvbiA9IHN0YXRz
OworCisgICAgc3RhdHMgPSBhd2FpdCBnZXRJbmJvdW5kUlRQU3RhdHMoc2Vjb25kQ29ubmVjdGlv
bik7CisgICAgYXNzZXJ0X3RydWUoISFzdGF0cywgImluYm91bmQtcnRwIHN0YXRzIHNob3VsZCBu
b3QgYmUgbnVsbCIpOworICAgIGFzc2VydF90cnVlKE51bWJlci5pc0ludGVnZXIoc3RhdHMuZnJh
bWVzRGVjb2RlZCksICJmcmFtZXNEZWNvZGVkIHNob3VsZCBiZSBhbiBpbnRlZ2VyIik7CisgICAg
YXNzZXJ0X3RydWUoTnVtYmVyLmlzSW50ZWdlcihzdGF0cy5xcFN1bSksICJpbmJvdW5kIHFwU3Vt
IHNob3VsZCBiZSBhbiBpbnRlZ2VyIik7CisgICAgYXNzZXJ0X3RydWUodHlwZW9mIHN0YXRzLnRp
bWVzdGFtcCA9PT0gIm51bWJlciIsICJ0aW1lc3RhbXAgc2hvdWxkIGJlIGEgZG91YmxlIik7Cisg
ICAgc3RhdHNTZWNvbmRDb25uZWN0aW9uID0gc3RhdHM7CisKKyAgICBhd2FpdCBjaGVja0luYm91
bmRGcmFtZXNOdW1iZXJJbmNyZWFzZWQoc2Vjb25kQ29ubmVjdGlvbiwgc3RhdHNTZWNvbmRDb25u
ZWN0aW9uLCAwKTsKKyAgICBhd2FpdCBjaGVja091dGJvdW5kRnJhbWVzTnVtYmVySW5jcmVhc2Vk
KGZpcnN0Q29ubmVjdGlvbiwgc3RhdHNGaXJzdENvbm5lY3Rpb24sIDApOworCisgICAgbGV0IHR5
cGVzID0gYXdhaXQgZ2V0U3RhdHNUeXBlKGZpcnN0Q29ubmVjdGlvbik7CisgICAgYXNzZXJ0X2Fy
cmF5X2VxdWFscyh0eXBlcywgWyJjYW5kaWRhdGUtcGFpciIsICJjZXJ0aWZpY2F0ZSIsICJpbmJv
dW5kLXJ0cCIsICJvdXRib3VuZC1ydHAiLCAidHJhY2siXSk7CisKKyAgICB0eXBlcyA9IGF3YWl0
IGdldFN0YXRzVHlwZShzZWNvbmRDb25uZWN0aW9uKTsKKyAgICBhc3NlcnRfYXJyYXlfZXF1YWxz
KHR5cGVzLCBbImNhbmRpZGF0ZS1wYWlyIiwgImNlcnRpZmljYXRlIiwgImluYm91bmQtcnRwIiwg
Im91dGJvdW5kLXJ0cCIsICJ0cmFjayJdKTsKIH0sICJCYXNpYyB2aWRlbyBzdGF0cyIpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZXBvcnQgPSBhd2FpdCBm
aXJzdENvbm5lY3Rpb24uZ2V0U2VuZGVycygpWzBdLmdldFN0YXRzKCk7CisgICAgY2hlY2tTdGF0
c1JlcG9ydEl0ZXJhdG9yKHJlcG9ydCk7CisgICAgdmFyIGluc3RhdHMsIG91dHN0YXRzOworICAg
IHJlcG9ydC5mb3JFYWNoKChzdGF0SXRlbSkgPT4geworICAgICAgICBpZiAoc3RhdEl0ZW0udHlw
ZSA9PT0gIm91dGJvdW5kLXJ0cCIpCisgICAgICAgICAgICBvdXRzdGF0cyA9IHN0YXRJdGVtOwor
ICAgICAgICBlbHNlIGlmIChzdGF0SXRlbS50eXBlID09PSAiaW5ib3VuZC1ydHAiKQorICAgICAg
ICAgICAgaW5zdGF0cyA9IHN0YXRJdGVtOworICAgIH0pOworICAgIGFzc2VydF90cnVlKCEhb3V0
c3RhdHMpOworICAgIGFzc2VydF9mYWxzZSghIWluc3RhdHMpOworfSwgIlNlbmRlciBzdGF0cyIp
OworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZXBvcnQgPSBh
d2FpdCBzZWNvbmRDb25uZWN0aW9uLmdldFJlY2VpdmVycygpWzBdLmdldFN0YXRzKCk7CisgICAg
Y2hlY2tTdGF0c1JlcG9ydEl0ZXJhdG9yKHJlcG9ydCk7CisgICAgdmFyIGluc3RhdHMsIG91dHN0
YXRzOworICAgIHJlcG9ydC5mb3JFYWNoKChzdGF0SXRlbSkgPT4geworICAgICAgICBpZiAoc3Rh
dEl0ZW0udHlwZSA9PT0gIm91dGJvdW5kLXJ0cCIpCisgICAgICAgICAgICBvdXRzdGF0cyA9IHN0
YXRJdGVtOworICAgICAgICBlbHNlIGlmIChzdGF0SXRlbS50eXBlID09PSAiaW5ib3VuZC1ydHAi
KQorICAgICAgICAgICAgaW5zdGF0cyA9IHN0YXRJdGVtOworICAgIH0pOworICAgIGFzc2VydF9m
YWxzZSghIW91dHN0YXRzKTsKKyAgICBhc3NlcnRfdHJ1ZSghIWluc3RhdHMpOworfSwgIlJlY2Vp
dmVyIHN0YXRzIik7CiAgICAgICAgIDwvc2NyaXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350064</attachid>
            <date>2018-09-18 15:05:01 -0700</date>
            <delta_ts>2018-09-19 08:54:16 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-189707-20180918150500.patch</filename>
            <type>text/plain</type>
            <size>43147</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MDk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODM0NDc2YmEzYzY1MTE4
MTJhMjY0OGJkMTA1N2RlZWMyMTgzYzI5OC4uNWJiZTVmNWY5OWVhMDRlYTJiMGM5YWE3NTQzNzhm
ZDhkZDhhZGU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDE4LTA5LTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2VuZGVy
L3JlY2VpdmVyIGdldFN0YXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODk3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHNlbmRlciBhbmQgcmVjZWl2ZXIgZ2V0U3RhdHMuCisg
ICAgICAgIEFsc28gYWRkIHN1cHBvcnQgZm9yIHBlZXIgY29ubmVjdGlvbiBzZWxlY3RvciBwYXJh
bWV0ZXIuCisKKyAgICAgICAgQWRkIHRoZSBwbHVtYmluZyBvZiB0aGUgc2VsZWN0b3IgdG8gTGli
V2ViUlRDTWVkaWFFbmRwb2ludC4KKyAgICAgICAgVGhlbiBtYWtlIHVzZSBvZiBsaWJ3ZWJydGMg
b3ZlcmxvYWRlZCBtZXRob2RzIHRvIHJldHJpZXZlIHRoZSByaWdodCBzdGF0cy4KKworICAgICAg
ICBDb3ZlcmVkIGJ5IHVwZGF0ZWQvcmViYXNlZCB0ZXN0cy4KKworICAgICAgICAqIE1vZHVsZXMv
bWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmg6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENQ
ZWVyQ29ubmVjdGlvbjo6Z2V0U3RhdHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJl
Y2VpdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpSVENSdHBSZWNl
aXZlcik6CisgICAgICAgIChXZWJDb3JlOjpSVENSdHBSZWNlaXZlcjo6Z2V0U3RhdHMpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UlRDUnRw
UmVjZWl2ZXI6OmJhY2tlbmQpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRw
UmVjZWl2ZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJUQ1J0cFNlbmRlcjo6UlRDUnRwU2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJUQ1J0cFNlbmRlcjo6Z2V0U3RhdHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2VuZGVyLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5k
ZXIuaWRsOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q01lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDTWVkaWFFbmRw
b2ludDo6Z2V0U3RhdHMpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpnZXRTdGF0cyk6CisgICAg
ICAgIChXZWJDb3JlOjpiYWNrZW5kRnJvbVJUUFNlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVSZWNlaXZlckZvclNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVy
Q29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okxp
YldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6dmlkZW9SZWNlaXZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmF1ZGlvUmVjZWl2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFk
ZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXZlcik6CisgICAgICAgIChXZWJDb3JlOjpM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5ld1JlbW90ZVRyYW5zY2VpdmVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVj
dGlvbkJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9M
aWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQuaDoKKwogMjAxOC0wOS0xOCAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFJUQ1J0cFJlY2VpdmVy
IGdldENvbnRyaWJ1dGluZ1NvdXJjZXMvZ2V0U3luY2hyb25pemF0aW9uU291cmNlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmgKaW5kZXggMDZlOTI3MjJmZGM0YzUxNDBkOTAyZjRkMmNhNDg0YTVhMzIxMzc0
Ny4uNjUyMTc2NTI0NDM0ZDI4ZjQxN2U2YTNiMjY3MjE4YWJhMzc4ZWEzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uLmgiCiAjaW5jbHVkZSAiUlRDU2lnbmFsaW5nU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvTG9n
Z2VySGVscGVyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC02OCw4ICs2OSw5IEBAIHVzaW5nIFN0YXRzUHJvbWlzZSA9IERPTVByb21pc2VE
ZWZlcnJlZDxJRExJbnRlcmZhY2U8UlRDU3RhdHNSZXBvcnQ+PjsKIHVzaW5nIENyZWF0ZVBlZXJD
b25uZWN0aW9uQmFja2VuZCA9IHN0ZDo6dW5pcXVlX3B0cjxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+
ICgqKShSVENQZWVyQ29ubmVjdGlvbiYpOwogCiBjbGFzcyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQK
KyAgICA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQZWVyQ29ubmVjdGlvbkJhY2tlbmQ+CiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgOiBwcml2YXRlIExvZ2dlckhlbHBlcgorICAgICwg
cHJpdmF0ZSBMb2dnZXJIZWxwZXIKICNlbmRpZgogewogcHVibGljOgpAQCAtOTgsNyArMTAwLDkg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHNldENvbmZpZ3VyYXRpb24oTWVkaWFFbmRw
b2ludENvbmZpZ3VyYXRpb24mJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGdldFN0YXRzKE1l
ZGlhU3RyZWFtVHJhY2sqLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0U3RhdHMoUlRDUnRwU2VuZGVyJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBnZXRTdGF0cyhSVENSdHBSZWNlaXZlciYsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYpID0gMDsKIAogICAgIHZpcnR1YWwgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNl
bmRlcj4+IGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2smLCBWZWN0b3I8U3RyaW5nPiYmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlVHJhY2soUlRDUnRwU2VuZGVyJikgeyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IGJhMmVlNTYyMTFlMzA5NGUxODg2MmQ1OGQ0ODVhOGUyYzAzMjYwYWEuLmVlOTAw
NzU2MDNjZjc1NGY0MzUxMjBjNTMzNzBjNDc2MjBlZGZlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uY3BwCkBA
IC0zMjgsNyArMzI4LDE5IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFJUQ1BlZXJDb25uZWN0aW9uOjpz
ZXRDb25maWd1cmF0aW9uKFJUQ0NvbmZpZ3VyYXRpb24mJiBjb25maWd1CiAKIHZvaWQgUlRDUGVl
ckNvbm5lY3Rpb246OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqIHNlbGVjdG9yLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgbV9iYWNrZW5kLT5nZXRTdGF0cyhzZWxl
Y3RvciwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgaWYgKHNlbGVjdG9yKSB7CisgICAgICAgIGZv
ciAoYXV0byYgdHJhbnNjZWl2ZXIgOiBtX3RyYW5zY2VpdmVyU2V0LT5saXN0KCkpIHsKKyAgICAg
ICAgICAgIGlmICh0cmFuc2NlaXZlci0+c2VuZGVyKCkudHJhY2soKSA9PSBzZWxlY3Rvcikgewor
ICAgICAgICAgICAgICAgIG1fYmFja2VuZC0+Z2V0U3RhdHModHJhbnNjZWl2ZXItPnNlbmRlcigp
LCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoJnRyYW5zY2VpdmVyLT5yZWNlaXZlcigpLnRyYWNrKCkgPT0g
c2VsZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBtX2JhY2tlbmQtPmdldFN0YXRzKHRyYW5zY2Vp
dmVyLT5yZWNlaXZlcigpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgbV9iYWNrZW5kLT5nZXRT
dGF0cyhXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPFJUQ0RhdGFDaGFu
bmVsPj4gUlRDUGVlckNvbm5lY3Rpb246OmNyZWF0ZURhdGFDaGFubmVsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIFN0cmluZyYmIGxhYmVsLCBSVENEYXRhQ2hhbm5lbEluaXQmJiBv
cHRpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLmlkbAppbmRleCAxZjQzNTliOTViMjA0MDFmYzFkZTJmNTY5ZWE4
ZWY5ZmQ4MTRmN2ZiLi5mMzIyNjJiMDFhMDkxNjdkYjA0ZjZmMTMyMzUwYWY2YmEwYWFmYWU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Bl
ZXJDb25uZWN0aW9uLmlkbApAQCAtMTM4LDcgKzEzOCw2IEBAIHR5cGVkZWYgUlRDUnRwVHJhbnNj
ZWl2ZXJEaXJlY3Rpb24gUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247CiAKIAogICAgIC8vIDguMiBT
dGF0aXN0aWNzIEFQSQotICAgIC8vIEZJWE1FIDE2OTY0NDogfHNlbGVjdG9yfCBtYXkgZ28gYXdh
eSBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIHRoZSBzcGVjCiAgICAgUHJvbWlzZTxSVENTdGF0c1Jl
cG9ydD4gZ2V0U3RhdHMob3B0aW9uYWwgTWVkaWFTdHJlYW1UcmFjaz8gc2VsZWN0b3IgPSBudWxs
KTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFJlY2VpdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwUmVjZWl2ZXIuY3BwCmluZGV4IDU4ZjQyY2FkNzZjZGE2NGI3ZjU1NTM3MDYyZTFiODA0ODJm
YTdiMjguLmZiMDFlOWNmYzlmNjNlMWI5NjMzYmU4MDAyOTcxYmYxZDY4YWRlZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVjZWl2ZXIu
Y3BwCkBAIC0zNSw5ICszNSwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJUQ1J0cFJl
Y2VpdmVyOjpSVENSdHBSZWNlaXZlcihSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKQorUlRDUnRwUmVj
ZWl2ZXI6OlJUQ1J0cFJlY2VpdmVyKFBlZXJDb25uZWN0aW9uQmFja2VuZCYgY29ubmVjdGlvbiwg
UmVmPE1lZGlhU3RyZWFtVHJhY2s+JiYgdHJhY2ssIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNl
aXZlckJhY2tlbmQ+JiYgYmFja2VuZCkKICAgICA6IG1fdHJhY2soV1RGTW92ZSh0cmFjaykpCiAg
ICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKKyAgICAsIG1fY29ubmVjdGlvbihtYWtl
V2Vha1B0cigmY29ubmVjdGlvbikpCiB7CiB9CiAKQEAgLTUwLDYgKzUxLDE1IEBAIHZvaWQgUlRD
UnRwUmVjZWl2ZXI6OnN0b3AoKQogICAgIG1fdHJhY2stPnN0b3BUcmFjayhNZWRpYVN0cmVhbVRy
YWNrOjpTdG9wTW9kZTo6UG9zdEV2ZW50KTsKIH0KIAordm9pZCBSVENSdHBSZWNlaXZlcjo6Z2V0
U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGlmICghbV9jb25u
ZWN0aW9uKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9jb25uZWN0aW9uLT5nZXRTdGF0cygqdGhpcywg
V1RGTW92ZShwcm9taXNlKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJfUlRDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9SVENSdHBSZWNlaXZlci5oCmluZGV4IDUzMmUyYzAyN2RiYWQ5NTUxZjBkZDAxZjYz
NzM3N2IyZGJlOGJkNGQuLmI0ZmVlNjBhZmMxOGJkNTk2ZTE2YzQwODBkMGNmNjA4ZTQwNDFjNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwUmVj
ZWl2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJl
Y2VpdmVyLmgKQEAgLTM5LDEyICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIFBlZXJDb25uZWN0aW9uQmFja2VuZDsKIAogY2xhc3MgUlRDUnRwUmVjZWl2ZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxSVENSdHBSZWNlaXZlcj4sIHB1YmxpYyBTY3JpcHRXcmFwcGFibGUgIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGUoUmVmPE1lZGlh
U3RyZWFtVHJhY2s+JiYgdHJhY2ssIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tl
bmQ+JiYgYmFja2VuZCkKKyAgICBzdGF0aWMgUmVmPFJUQ1J0cFJlY2VpdmVyPiBjcmVhdGUoUGVl
ckNvbm5lY3Rpb25CYWNrZW5kJiBjb25uZWN0aW9uLCBSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0
cmFjaywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUlRDUnRwUmVjZWl2ZXIoV1RGTW92
ZSh0cmFjayksIFdURk1vdmUoYmFja2VuZCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUlRDUnRwUmVjZWl2ZXIoY29ubmVjdGlvbiwgV1RGTW92ZSh0cmFjayksIFdURk1vdmUoYmFj
a2VuZCkpKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3AoKTsKQEAgLTU2LDExICs1NywxNSBAQCBw
dWJsaWM6CiAKICAgICBNZWRpYVN0cmVhbVRyYWNrJiB0cmFjaygpIHsgcmV0dXJuIG1fdHJhY2su
Z2V0KCk7IH0KIAorICAgIFJUQ1J0cFJlY2VpdmVyQmFja2VuZCogYmFja2VuZCgpIHsgcmV0dXJu
IG1fYmFja2VuZC5nZXQoKTsgfQorICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlz
ZT4mJik7CisKIHByaXZhdGU6Ci0gICAgUlRDUnRwUmVjZWl2ZXIoUmVmPE1lZGlhU3RyZWFtVHJh
Y2s+JiYsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBSZWNlaXZlckJhY2tlbmQ+JiYpOworICAgIFJU
Q1J0cFJlY2VpdmVyKFBlZXJDb25uZWN0aW9uQmFja2VuZCYsIFJlZjxNZWRpYVN0cmVhbVRyYWNr
PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwUmVjZWl2ZXJCYWNrZW5kPiYmKTsKIAogICAgIFJl
ZjxNZWRpYVN0cmVhbVRyYWNrPiBtX3RyYWNrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBS
ZWNlaXZlckJhY2tlbmQ+IG1fYmFja2VuZDsKKyAgICBXZWFrUHRyPFBlZXJDb25uZWN0aW9uQmFj
a2VuZD4gbV9jb25uZWN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBSZWNlaXZlci5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlk
bAppbmRleCA5ZjUzZDVkNTM4ODIyNDg4YWQxZDY1ZTVhNjhmODRiY2QyYzg4ZWFjLi45ZDg1NjVh
NzZkMGRhOTBkNzM4ZmNjNmRiZTU0YzBmZGEzNzRjNjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFJlY2VpdmVyLmlkbApAQCAtNDEsNCAr
NDEsNSBAQAogICAgIC8vIEZJWE1FIDE2OTY2MjogbWlzc2luZyBnZXRDYXBhYmlsaXRpZXMKICAg
ICBzZXF1ZW5jZTxSVENSdHBDb250cmlidXRpbmdTb3VyY2U+IGdldENvbnRyaWJ1dGluZ1NvdXJj
ZXMoKTsKICAgICBzZXF1ZW5jZTxSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2U+IGdldFN5bmNo
cm9uaXphdGlvblNvdXJjZXMoKTsKKyAgICBQcm9taXNlPFJUQ1N0YXRzUmVwb3J0PiBnZXRTdGF0
cygpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UlRDUnRwU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
UnRwU2VuZGVyLmNwcAppbmRleCA3ZWJkZGQ5NzA4MTMzZTQzZWEzMTIxOTJkMTg0MDJlMGMwYTA3
NmVjLi5jN2NhMmI0ZjI3ZDk5NTlmYjMxMTU1NDQ3YjFhOWY2ZTU3NTM3NzdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuY3BwCkBA
IC0zNywyMiArMzcsMjMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8UlRDUnRwU2Vu
ZGVyPiBSVENSdHBTZW5kZXI6OmNyZWF0ZShSZWY8TWVkaWFTdHJlYW1UcmFjaz4mJiB0cmFjaywg
VmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNl
bmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKK1JlZjxSVENSdHBTZW5kZXI+IFJUQ1J0cFNlbmRlcjo6
Y3JlYXRlKFBlZXJDb25uZWN0aW9uQmFja2VuZCYgY29ubmVjdGlvbiwgUmVmPE1lZGlhU3RyZWFt
VHJhY2s+JiYgdHJhY2ssIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5p
cXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiB7Ci0gICAgYXV0byBzZW5k
ZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihTdHJpbmcodHJhY2stPmtpbmQoKSksIFdU
Rk1vdmUobWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CisgICAgYXV0byBzZW5k
ZXIgPSBhZG9wdFJlZigqbmV3IFJUQ1J0cFNlbmRlcihjb25uZWN0aW9uLCBTdHJpbmcodHJhY2st
PmtpbmQoKSksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKGJhY2tlbmQpKSk7CiAg
ICAgc2VuZGVyLT5zZXRUcmFjayhXVEZNb3ZlKHRyYWNrKSk7CiAgICAgcmV0dXJuIHNlbmRlcjsK
IH0KIAotUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRwU2VuZGVyOjpjcmVhdGUoU3RyaW5nJiYgdHJh
Y2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8
UlRDUnRwU2VuZGVyQmFja2VuZD4mJiBiYWNrZW5kKQorUmVmPFJUQ1J0cFNlbmRlcj4gUlRDUnRw
U2VuZGVyOjpjcmVhdGUoUGVlckNvbm5lY3Rpb25CYWNrZW5kJiBjb25uZWN0aW9uLCBTdHJpbmcm
JiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVl
X3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUlRDUnRwU2VuZGVyKFdURk1vdmUodHJhY2tLaW5kKSwgV1RGTW92ZShtZWRpYVN0
cmVhbUlkcyksIFdURk1vdmUoYmFja2VuZCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
VENSdHBTZW5kZXIoY29ubmVjdGlvbiwgV1RGTW92ZSh0cmFja0tpbmQpLCBXVEZNb3ZlKG1lZGlh
U3RyZWFtSWRzKSwgV1RGTW92ZShiYWNrZW5kKSkpOwogfQogCi1SVENSdHBTZW5kZXI6OlJUQ1J0
cFNlbmRlcihTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1J
ZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmIGJhY2tlbmQpCitSVENS
dHBTZW5kZXI6OlJUQ1J0cFNlbmRlcihQZWVyQ29ubmVjdGlvbkJhY2tlbmQmIGNvbm5lY3Rpb24s
IFN0cmluZyYmIHRyYWNrS2luZCwgVmVjdG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3Rk
Ojp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRlckJhY2tlbmQ+JiYgYmFja2VuZCkKICAgICA6IG1fdHJh
Y2tLaW5kKFdURk1vdmUodHJhY2tLaW5kKSkKICAgICAsIG1fbWVkaWFTdHJlYW1JZHMoV1RGTW92
ZShtZWRpYVN0cmVhbUlkcykpCiAgICAgLCBtX2JhY2tlbmQoV1RGTW92ZShiYWNrZW5kKSkKKyAg
ICAsIG1fY29ubmVjdGlvbihtYWtlV2Vha1B0cigmY29ubmVjdGlvbikpCiB7CiAgICAgQVNTRVJU
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYlJUQ1VuaWZpZWRQ
bGFuRW5hYmxlZCgpIHx8IG1fYmFja2VuZCk7CiB9CkBAIC0xMTAsNiArMTExLDE1IEBAIHZvaWQg
UlRDUnRwU2VuZGVyOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBET01Qcm9tCiAgICAgcmV0dXJuIG1fYmFja2VuZC0+c2V0UGFyYW1ldGVycyhw
YXJhbWV0ZXJzLCBXVEZNb3ZlKHByb21pc2UpKTsKIH0KIAordm9pZCBSVENSdHBTZW5kZXI6Omdl
dFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBpZiAoIW1fY29u
bmVjdGlvbikgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fY29ubmVjdGlvbi0+Z2V0U3RhdHMoKnRoaXMs
IFdURk1vdmUocHJvbWlzZSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCX1JUQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1J0cFNlbmRlci5oCmluZGV4IDIwYmJmZGUxOGMyODc1NDNmZjUxZjQzYzVkZDc5
YWUyM2VlMWQzMDAuLjQ5YWFkM2UzMzQ0ZmRlNmFjY2E0NmVkYzlhYWU2ODdkMzFlNzdkNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIu
aApAQCAtMzksMTAgKzM5LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUGVl
ckNvbm5lY3Rpb25CYWNrZW5kOworCiBjbGFzcyBSVENSdHBTZW5kZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxSVENSdHBTZW5kZXI+LCBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFJUQ1J0cFNlbmRlcj4gY3JlYXRlKFJlZjxNZWRpYVN0cmVhbVRyYWNrPiYm
LCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRw
U2VuZGVyQmFja2VuZD4mJik7Ci0gICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNyZWF0ZShT
dHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxTdHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6
dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNrZW5kPiYmKTsKKyAgICBzdGF0aWMgUmVmPFJUQ1J0
cFNlbmRlcj4gY3JlYXRlKFBlZXJDb25uZWN0aW9uQmFja2VuZCYsIFJlZjxNZWRpYVN0cmVhbVRy
YWNrPiYmLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3RyZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8
UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7CisgICAgc3RhdGljIFJlZjxSVENSdHBTZW5kZXI+IGNy
ZWF0ZShQZWVyQ29ubmVjdGlvbkJhY2tlbmQmLCBTdHJpbmcmJiB0cmFja0tpbmQsIFZlY3RvcjxT
dHJpbmc+JiYgbWVkaWFTdHJlYW1JZHMsIHN0ZDo6dW5pcXVlX3B0cjxSVENSdHBTZW5kZXJCYWNr
ZW5kPiYmKTsKIAogICAgIE1lZGlhU3RyZWFtVHJhY2sqIHRyYWNrKCkgeyByZXR1cm4gbV90cmFj
ay5nZXQoKTsgfQogCkBAIC02NCwxNCArNjYsMTcgQEAgcHVibGljOgogCiAgICAgUlRDUnRwU2Vu
ZGVyQmFja2VuZCogYmFja2VuZCgpIHsgcmV0dXJuIG1fYmFja2VuZC5nZXQoKTsgfQogCisgICAg
dm9pZCBnZXRTdGF0cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKKwogcHJpdmF0ZToKLSAgICBS
VENSdHBTZW5kZXIoU3RyaW5nJiYgdHJhY2tLaW5kLCBWZWN0b3I8U3RyaW5nPiYmIG1lZGlhU3Ry
ZWFtSWRzLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2VuZGVyQmFja2VuZD4mJik7CisgICAgUlRD
UnRwU2VuZGVyKFBlZXJDb25uZWN0aW9uQmFja2VuZCYsIFN0cmluZyYmIHRyYWNrS2luZCwgVmVj
dG9yPFN0cmluZz4mJiBtZWRpYVN0cmVhbUlkcywgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFNlbmRl
ckJhY2tlbmQ+JiYpOwogCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IG1fdHJhY2s7CiAg
ICAgU3RyaW5nIG1fdHJhY2tJZDsKICAgICBTdHJpbmcgbV90cmFja0tpbmQ7CiAgICAgVmVjdG9y
PFN0cmluZz4gbV9tZWRpYVN0cmVhbUlkczsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRwU2Vu
ZGVyQmFja2VuZD4gbV9iYWNrZW5kOworICAgIFdlYWtQdHI8UGVlckNvbm5lY3Rpb25CYWNrZW5k
PiBtX2Nvbm5lY3Rpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNlbmRlci5pZGwKaW5kZXgg
OTFmNjViMzIzOTY3ZDdhNWVhODNjMWQ2N2FhYWEzYWI3OWIyZmVlMC4uMDljZGI4ZTM0NTk5M2Nl
OThkNmJkMzU5Y2MyYjM2NmM3ZWUyMTIyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTZW5kZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU2VuZGVyLmlkbApAQCAtNDIsNCArNDIsNSBAQAogICAg
IFJUQ1J0cFNlbmRQYXJhbWV0ZXJzIGdldFBhcmFtZXRlcnMoKTsKICAgICBQcm9taXNlPHZvaWQ+
IHNldFBhcmFtZXRlcnMoUlRDUnRwU2VuZFBhcmFtZXRlcnMgcGFyYW1ldGVycyk7CiAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFByb21pc2U8dm9pZD4gcmVwbGFjZVRyYWNr
KE1lZGlhU3RyZWFtVHJhY2s/IHdpdGhUcmFjayk7CisgICAgUHJvbWlzZTxSVENTdGF0c1JlcG9y
dD4gZ2V0U3RhdHMoKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9p
bnQuY3BwCmluZGV4IGIyNWI1NjRmMmJlNzFhZTJlYTVkYjBlOWQzOWZiZGZkYjhlMDdlMjguLmNk
MDAzNTM4MzhjMmY3NjczMzkwZDNjMjQyOGRjMGVmNDBjNDY4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5k
cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuY3BwCkBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBM
aWJXZWJSVENNZWRpYUVuZHBvaW50Ojpkb0NyZWF0ZUFuc3dlcigpCiAgICAgbV9iYWNrZW5kLT5D
cmVhdGVBbnN3ZXIoJm1fY3JlYXRlU2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXIsIG51bGxwdHIp
OwogfQogCi12b2lkIExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRzKE1lZGlhU3RyZWFt
VHJhY2sqLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIExpYldlYlJUQ01l
ZGlhRW5kcG9pbnQ6OmdldFN0YXRzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgV1RG
OjpGdW5jdGlvbjx2b2lkKHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENTdGF0c0NvbGxlY3Rv
cj4mJik+JiYgZ2V0U3RhdHNGdW5jdGlvbikKIHsKICAgICBhdXRvIGNvbGxlY3RvciA9IExpYldl
YlJUQ1N0YXRzQ29sbGVjdG9yOjpjcmVhdGUoW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mJiByZXBvcnQpIG11dGFibGUgewog
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMjg3LDkgKzI4NywzMiBAQCB2b2lk
IExpYldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRzKE1lZGlhU3RyZWFtVHJhY2sqLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmCiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMSW50ZXJmYWNl
PFJUQ1N0YXRzUmVwb3J0Pj4ocmVwb3J0LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9KTsKLSAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2ln
bmFsaW5nVGhyZWFkKFt0aGlzLCBjb2xsZWN0b3IgPSBXVEZNb3ZlKGNvbGxlY3RvcildIHsKKyAg
ICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2ViUlRDU2lnbmFsaW5nVGhyZWFkKFtnZXRTdGF0
c0Z1bmN0aW9uID0gV1RGTW92ZShnZXRTdGF0c0Z1bmN0aW9uKSwgY29sbGVjdG9yID0gV1RGTW92
ZShjb2xsZWN0b3IpXSgpIG11dGFibGUgeworICAgICAgICBnZXRTdGF0c0Z1bmN0aW9uKFdURk1v
dmUoY29sbGVjdG9yKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2lu
dDo6Z2V0U3RhdHMoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQoreworICAgIGdldFN0
YXRzKFdURk1vdmUocHJvbWlzZSksIFt0aGlzXShhdXRvJiYgY29sbGVjdG9yKSB7CisgICAgICAg
IGlmIChtX2JhY2tlbmQpCisgICAgICAgICAgICBtX2JhY2tlbmQtPkdldFN0YXRzKFdURk1vdmUo
Y29sbGVjdG9yKSk7CisgICAgfSk7Cit9CisKK3ZvaWQgTGliV2ViUlRDTWVkaWFFbmRwb2ludDo6
Z2V0U3RhdHMod2VicnRjOjpSdHBSZWNlaXZlckludGVyZmFjZSYgcmVjZWl2ZXIsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBnZXRTdGF0cyhXVEZNb3ZlKHByb21pc2Up
LCBbdGhpcywgcmVjZWl2ZXIgPSBydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpSdHBSZWNlaXZl
ckludGVyZmFjZT4oJnJlY2VpdmVyKV0oYXV0byYmIGNvbGxlY3RvcikgbXV0YWJsZSB7CisgICAg
ICAgIGlmIChtX2JhY2tlbmQpCisgICAgICAgICAgICBtX2JhY2tlbmQtPkdldFN0YXRzKFdURk1v
dmUocmVjZWl2ZXIpLCBXVEZNb3ZlKGNvbGxlY3RvcikpOworICAgIH0pOworfQorCit2b2lkIExp
YldlYlJUQ01lZGlhRW5kcG9pbnQ6OmdldFN0YXRzKHdlYnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNl
JiBzZW5kZXIsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBnZXRTdGF0
cyhXVEZNb3ZlKHByb21pc2UpLCBbdGhpcywgc2VuZGVyID0gcnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6UnRwU2VuZGVySW50ZXJmYWNlPigmc2VuZGVyKV0oYXV0byYmIGNvbGxlY3RvcikgIG11
dGFibGUgewogICAgICAgICBpZiAobV9iYWNrZW5kKQotICAgICAgICAgICAgbV9iYWNrZW5kLT5H
ZXRTdGF0cyhjb2xsZWN0b3IuZ2V0KCkpOworICAgICAgICAgICAgbV9iYWNrZW5kLT5HZXRTdGF0
cyhXVEZNb3ZlKHNlbmRlciksIFdURk1vdmUoY29sbGVjdG9yKSk7CiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ01lZGlhRW5kcG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ01lZGlhRW5kcG9pbnQuaAppbmRleCAxNzdlN2FhMTQzZjY3
ZDljMjY5NzUxNzBlNzg1YzQzNjQwZGMzOWNkLi5lZmI1MTEzMTI1ODRhNTlkNzBhNDZjY2NlZTA0
NzdiMTI1YmEyYTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENNZWRpYUVuZHBvaW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDTWVkaWFFbmRwb2ludC5o
CkBAIC01NSwxMSArNTUsMTEgQEAgY2xhc3MgU2V0U2Vzc2lvbkRlc2NyaXB0aW9uT2JzZXJ2ZXI7
CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLQogY2xhc3MgTGliV2ViUlRDUHJvdmlkZXI7CiBj
bGFzcyBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ7CiBjbGFzcyBMaWJXZWJSVENSdHBS
ZWNlaXZlckJhY2tlbmQ7CiBjbGFzcyBMaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQ7Citj
bGFzcyBMaWJXZWJSVENTdGF0c0NvbGxlY3RvcjsKIGNsYXNzIE1lZGlhU3RyZWFtVHJhY2s7CiBj
bGFzcyBSVENTZXNzaW9uRGVzY3JpcHRpb247CiAKQEAgLTgyLDcgKzgyLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgZG9TZXRSZW1vdGVEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mKTsK
ICAgICB2b2lkIGRvQ3JlYXRlT2ZmZXIoY29uc3QgUlRDT2ZmZXJPcHRpb25zJik7CiAgICAgdm9p
ZCBkb0NyZWF0ZUFuc3dlcigpOwotICAgIHZvaWQgZ2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayos
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVk
UHJvbWlzZT4mJik7CisgICAgdm9pZCBnZXRTdGF0cyh3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJm
YWNlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7CisgICAgdm9pZCBnZXRTdGF0cyh3ZWJydGM6
OlJ0cFNlbmRlckludGVyZmFjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0ZURhdGFDaGFubmVsKGNvbnN0
IFN0cmluZyYsIGNvbnN0IFJUQ0RhdGFDaGFubmVsSW5pdCYpOwogICAgIGJvb2wgYWRkSWNlQ2Fu
ZGlkYXRlKHdlYnJ0Yzo6SWNlQ2FuZGlkYXRlSW50ZXJmYWNlJiBjYW5kaWRhdGUpIHsgcmV0dXJu
IG1fYmFja2VuZC0+QWRkSWNlQ2FuZGlkYXRlKCZjYW5kaWRhdGUpOyB9CiAKQEAgLTE0OCw2ICsx
NTAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRMb2dnaW5nU3RhdHMoKTsKICAgICB2b2lk
IHN0b3BMb2dnaW5nU3RhdHMoKTsKIAorICAgIHZvaWQgZ2V0U3RhdHMoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiwgV1RGOjpGdW5jdGlvbjx2b2lkKHJ0Yzo6c2NvcGVkX3JlZnB0cjxMaWJXZWJSVENT
dGF0c0NvbGxlY3Rvcj4mJik+JiYpOworCiAgICAgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtRnJv
bVJUQ1N0cmVhbSh3ZWJydGM6Ok1lZGlhU3RyZWFtSW50ZXJmYWNlJik7CiAKICAgICB2b2lkIEFk
ZFJlZigpIGNvbnN0IHsgcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDNjNGY5OWE1YjMyZjZmYWZkOGFmMzU0
MmM0ZWFiZTJiZTAxMzQ5NzguLjYwNWYyZTc3MGFmNWRhMTNiYzQyODY3YTliMDlkZTYyMmE0YmNj
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25C
YWNrZW5kLmNwcApAQCAtMTI5LDkgKzEyOSwzNyBAQCBib29sIExpYldlYlJUQ1BlZXJDb25uZWN0
aW9uQmFja2VuZDo6c2V0Q29uZmlndXJhdGlvbihNZWRpYUVuZHBvaW50Q29uZmlndXJhdGlvbgog
ICAgIHJldHVybiBtX2VuZHBvaW50LT5zZXRDb25maWd1cmF0aW9uKHBhZ2UtPmxpYldlYlJUQ1By
b3ZpZGVyKCksIGNvbmZpZ3VyYXRpb25Gcm9tTWVkaWFFbmRwb2ludENvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkpOwogfQogCi12b2lkIExpYldlYlJUQ1BlZXJDb25uZWN0aW9u
QmFja2VuZDo6Z2V0U3RhdHMoTWVkaWFTdHJlYW1UcmFjayogdHJhY2ssIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpn
ZXRTdGF0cyhSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgbV9lbmRwb2lu
dC0+Z2V0U3RhdHModHJhY2ssIFdURk1vdmUocHJvbWlzZSkpOworICAgIG1fZW5kcG9pbnQtPmdl
dFN0YXRzKFdURk1vdmUocHJvbWlzZSkpOworfQorCitzdGF0aWMgaW5saW5lIExpYldlYlJUQ1J0
cFNlbmRlckJhY2tlbmQmIGJhY2tlbmRGcm9tUlRQU2VuZGVyKFJUQ1J0cFNlbmRlciYgc2VuZGVy
KQoreworICAgIEFTU0VSVCghc2VuZGVyLmlzU3RvcHBlZCgpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCY+KCpzZW5kZXIuYmFja2VuZCgpKTsKK30K
Kwordm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmdldFN0YXRzKFJUQ1J0cFNl
bmRlciYgc2VuZGVyLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgd2Vi
cnRjOjpSdHBTZW5kZXJJbnRlcmZhY2UqIHJ0Y1NlbmRlciA9IHNlbmRlci5iYWNrZW5kKCkgPyBi
YWNrZW5kRnJvbVJUUFNlbmRlcihzZW5kZXIpLnJ0Y1NlbmRlcigpIDogbnVsbHB0cjsKKworICAg
IGlmICghcnRjU2VuZGVyKSB7CisgICAgICAgIG1fZW5kcG9pbnQtPmdldFN0YXRzKFdURk1vdmUo
cHJvbWlzZSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fZW5kcG9pbnQtPmdldFN0
YXRzKCpydGNTZW5kZXIsIFdURk1vdmUocHJvbWlzZSkpOworfQorCit2b2lkIExpYldlYlJUQ1Bl
ZXJDb25uZWN0aW9uQmFja2VuZDo6Z2V0U3RhdHMoUlRDUnRwUmVjZWl2ZXImIHJlY2VpdmVyLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit7CisgICAgd2VicnRjOjpSdHBSZWNlaXZl
ckludGVyZmFjZSogcnRjUmVjZWl2ZXIgPSByZWNlaXZlci5iYWNrZW5kKCkgPyBzdGF0aWNfY2Fz
dDxMaWJXZWJSVENSdHBSZWNlaXZlckJhY2tlbmQqPihyZWNlaXZlci5iYWNrZW5kKCkpLT5ydGNS
ZWNlaXZlcigpIDogbnVsbHB0cjsKKworICAgIGlmICghcnRjUmVjZWl2ZXIpIHsKKyAgICAgICAg
bV9lbmRwb2ludC0+Z2V0U3RhdHMoV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgbV9lbmRwb2ludC0+Z2V0U3RhdHMoKnJ0Y1JlY2VpdmVyLCBXVEZNb3ZlKHBy
b21pc2UpKTsKIH0KIAogdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRvU2V0
TG9jYWxEZXNjcmlwdGlvbihSVENTZXNzaW9uRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uKQpAQCAt
MjAxLDEyICsyMjksMTIgQEAgdm9pZCBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmRv
QWRkSWNlQ2FuZGlkYXRlKFJUQ0ljZUNhbmRpZGF0ZSYgY2FuZGlkYXQKICAgICBhZGRJY2VDYW5k
aWRhdGVTdWNjZWVkZWQoKTsKIH0KIAotc3RhdGljIGlubGluZSBSZWY8UlRDUnRwUmVjZWl2ZXI+
IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0
cFJlY2VpdmVyQmFja2VuZD4mJiBiYWNrZW5kKQorUmVmPFJUQ1J0cFJlY2VpdmVyPiBMaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKFJlZjxSZWFs
dGltZU1lZGlhU291cmNlPiYmIHNvdXJjZSwgc3RkOjp1bmlxdWVfcHRyPFJUQ1J0cFJlY2VpdmVy
QmFja2VuZD4mJiBiYWNrZW5kKQogewogICAgIGF1dG8gcmVtb3RlVHJhY2tQcml2YXRlID0gTWVk
aWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShXVEZNb3ZlKHNvdXJjZSksIFN0cmluZyB7IHNv
dXJjZS0+aWQoKSB9KTsKLSAgICBhdXRvIHJlbW90ZVRyYWNrID0gTWVkaWFTdHJlYW1UcmFjazo6
Y3JlYXRlKGNvbnRleHQsIFdURk1vdmUocmVtb3RlVHJhY2tQcml2YXRlKSk7CisgICAgYXV0byBy
ZW1vdGVUcmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSgqbV9wZWVyQ29ubmVjdGlvbi5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFdURk1vdmUocmVtb3RlVHJhY2tQcml2YXRlKSk7CiAK
LSAgICByZXR1cm4gUlRDUnRwUmVjZWl2ZXI6OmNyZWF0ZShXVEZNb3ZlKHJlbW90ZVRyYWNrKSwg
V1RGTW92ZShiYWNrZW5kKSk7CisgICAgcmV0dXJuIFJUQ1J0cFJlY2VpdmVyOjpjcmVhdGUoKnRo
aXMsIFdURk1vdmUocmVtb3RlVHJhY2spLCBXVEZNb3ZlKGJhY2tlbmQpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRlRW1wdHlTb3VyY2UoY29uc3Qg
U3RyaW5nJiB0cmFja0tpbmQsIFN0cmluZyYmIHRyYWNrSWQpCkBAIC0yMjAsNyArMjQ4LDcgQEAg
c3RhdGljIGlubGluZSBSZWY8UmVhbHRpbWVNZWRpYVNvdXJjZT4gY3JlYXRlRW1wdHlTb3VyY2Uo
Y29uc3QgU3RyaW5nJiB0cmFja0tpbmQKIAogUmVmPFJUQ1J0cFJlY2VpdmVyPiBMaWJXZWJSVENQ
ZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZVJlY2VpdmVyKGNvbnN0IFN0cmluZyYgdHJhY2tL
aW5kLCBjb25zdCBTdHJpbmcmIHRyYWNrSWQpCiB7Ci0gICAgYXV0byByZWNlaXZlciA9IGNyZWF0
ZVJlY2VpdmVyRm9yU291cmNlKCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgY3JlYXRlRW1wdHlTb3VyY2UodHJhY2tLaW5kLCBTdHJpbmcodHJhY2tJZCkpLCBudWxs
cHRyKTsKKyAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoY3JlYXRl
RW1wdHlTb3VyY2UodHJhY2tLaW5kLCBTdHJpbmcodHJhY2tJZCkpLCBudWxscHRyKTsKICAgICBt
X3BlbmRpbmdSZWNlaXZlcnMuYXBwZW5kKHJlY2VpdmVyLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJu
IHJlY2VpdmVyOwogfQpAQCAtMjM4LDEwICsyNjYsMTAgQEAgTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kOjpWaWRlb1JlY2VpdmVyIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6
dmkKICAgICAgICAgfQogICAgIH0KICAgICBhdXRvIHNvdXJjZSA9IFJlYWx0aW1lSW5jb21pbmdW
aWRlb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1vdmUodHJhY2tJZCkpOwotICAgIGF1dG8g
cmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIHNvdXJjZS5jb3B5UmVmKCksIG51bGxwdHIpOworICAgIGF1
dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJjZShzb3VyY2UuY29weVJlZigpLCBu
dWxscHRyKTsKIAogICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwotICAgIGF1dG8gdHJhbnNj
ZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJ2
aWRlbyIsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSksIHJlY2VpdmVyLmNvcHlSZWYoKSwg
bnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZlciA9IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVh
dGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJ2aWRlbyJfcywgeyB9LCBXVEZNb3ZlKHNl
bmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigpLCBudWxscHRyKTsKICAgICB0cmFuc2Nl
aXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsKICAgICBtX3BlZXJDb25uZWN0aW9uLmFk
ZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIpKTsKIApAQCAtMjYxLDEwICsyODksMTAg
QEAgTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpBdWRpb1JlY2VpdmVyIExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6YXUKICAgICAgICAgfQogICAgIH0KICAgICBhdXRvIHNv
dXJjZSA9IFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZTo6Y3JlYXRlKG51bGxwdHIsIFdURk1v
dmUodHJhY2tJZCkpOwotICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNvdXJj
ZSgqbV9wZWVyQ29ubmVjdGlvbi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHNvdXJjZS5jb3B5
UmVmKCksIG51bGxwdHIpOworICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNlaXZlckZvclNv
dXJjZShzb3VyY2UuY29weVJlZigpLCBudWxscHRyKTsKIAogICAgIGF1dG8gc2VuZGVyQmFja2Vu
ZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51
bGxwdHIpOwotICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRl
KFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCJhdWRpbyIsIHsgfSwgV1RGTW92ZShzZW5kZXJCYWNrZW5k
KSksIHJlY2VpdmVyLmNvcHlSZWYoKSwgbnVsbHB0cik7CisgICAgYXV0byB0cmFuc2NlaXZlciA9
IFJUQ1J0cFRyYW5zY2VpdmVyOjpjcmVhdGUoUlRDUnRwU2VuZGVyOjpjcmVhdGUoKnRoaXMsICJh
dWRpbyJfcywgeyB9LCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKSwgcmVjZWl2ZXIuY29weVJlZigp
LCBudWxscHRyKTsKICAgICB0cmFuc2NlaXZlci0+ZGlzYWJsZVNlbmRpbmdEaXJlY3Rpb24oKTsK
ICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZFRyYW5zY2VpdmVyKFdURk1vdmUodHJhbnNjZWl2ZXIp
KTsKIApAQCAtMzE1LDEzICszNDMsNiBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBM
aWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnJlbW90ZURlc2NyaXB0aW9uKAogICAgIHJl
dHVybiBtX2VuZHBvaW50LT5yZW1vdGVEZXNjcmlwdGlvbigpOwogfQogCi1zdGF0aWMgaW5saW5l
IExpYldlYlJUQ1J0cFNlbmRlckJhY2tlbmQmIGJhY2tlbmRGcm9tUlRQU2VuZGVyKFJUQ1J0cFNl
bmRlciYgc2VuZGVyKQotewotICAgIEFTU0VSVCghc2VuZGVyLmlzU3RvcHBlZCgpKTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCY+KCpzZW5kZXIuYmFj
a2VuZCgpKTsKLX0KLQotCiBzdGF0aWMgaW5saW5lIFJlZlB0cjxSVENSdHBTZW5kZXI+IGZpbmRF
eGlzdGluZ1NlbmRlcihjb25zdCBWZWN0b3I8c3RkOjpyZWZlcmVuY2Vfd3JhcHBlcjxSVENSdHBT
ZW5kZXI+PiYgc2VuZGVycywgTGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZCYgc2VuZGVyQmFja2Vu
ZCkKIHsKICAgICBBU1NFUlQoc2VuZGVyQmFja2VuZC5ydGNTZW5kZXIoKSk7CkBAIC0zNDcsOCAr
MzY4LDggQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFNlbmRlcj4+IExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6YWRkVHJhY2soTWVkaWFTdHIKIAogICAgICAgICBhdXRvIHRyYW5zY2Vp
dmVyQmFja2VuZCA9IG1fZW5kcG9pbnQtPnRyYW5zY2VpdmVyQmFja2VuZEZyb21TZW5kZXIoKnNl
bmRlckJhY2tlbmQpOwogCi0gICAgICAgIGF1dG8gc2VuZGVyID0gUlRDUnRwU2VuZGVyOjpjcmVh
dGUobWFrZVJlZih0cmFjayksIFdURk1vdmUobWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKHNlbmRl
ckJhY2tlbmQpKTsKLSAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291
cmNlKCptX3BlZXJDb25uZWN0aW9uLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY3JlYXRlRW1w
dHlTb3VyY2UodHJhY2sua2luZCgpLCBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLCB0cmFu
c2NlaXZlckJhY2tlbmQtPmNyZWF0ZVJlY2VpdmVyQmFja2VuZCgpKTsKKyAgICAgICAgYXV0byBz
ZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgbWFrZVJlZih0cmFjayksIFdURk1v
dmUobWVkaWFTdHJlYW1JZHMpLCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsKKyAgICAgICAgYXV0
byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKGNyZWF0ZUVtcHR5U291cmNlKHRy
YWNrLmtpbmQoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSwgdHJhbnNjZWl2ZXJCYWNr
ZW5kLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSk7CiAgICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIg
PSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKHNlbmRlci5jb3B5UmVmKCksIFdURk1vdmUocmVj
ZWl2ZXIpLCBXVEZNb3ZlKHRyYW5zY2VpdmVyQmFja2VuZCkpOwogICAgICAgICBtX3BlZXJDb25u
ZWN0aW9uLmFkZEludGVybmFsVHJhbnNjZWl2ZXIoV1RGTW92ZSh0cmFuc2NlaXZlcikpOwogICAg
ICAgICByZXR1cm4gV1RGTW92ZShzZW5kZXIpOwpAQCAtMzczLDcgKzM5NCw3IEBAIEV4Y2VwdGlv
bk9yPFJlZjxSVENSdHBTZW5kZXI+PiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmFk
ZFRyYWNrKE1lZGlhU3RyCiAgICAgICAgIFN0cmluZyB0cmFja0lkID0gY3JlYXRlQ2Fub25pY2Fs
VVVJRFN0cmluZygpOwogCiAgICAgICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91
bmlxdWU8TGliV2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwotICAgICAg
ICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKG1ha2VSZWYodHJhY2spLCBW
ZWN0b3I8U3RyaW5nPiB7IG1lZGlhU3RyZWFtSWRzIH0sIFdURk1vdmUoc2VuZGVyQmFja2VuZCkp
OworICAgICAgICBhdXRvIG5ld1NlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3JlYXRlKCp0aGlzLCBt
YWtlUmVmKHRyYWNrKSwgVmVjdG9yPFN0cmluZz4geyBtZWRpYVN0cmVhbUlkcyB9LCBXVEZNb3Zl
KHNlbmRlckJhY2tlbmQpKTsKICAgICAgICAgYXV0byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVy
KHRyYWNrS2luZCwgdHJhY2tJZCk7CiAgICAgICAgIGF1dG8gdHJhbnNjZWl2ZXIgPSBSVENSdHBU
cmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUobmV3U2VuZGVyKSwgV1RGTW92ZShyZWNlaXZlciks
IG51bGxwdHIpOwogCkBAIC0zOTQsOCArNDE1LDggQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRy
YW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRVbmlmaWVkUGwK
ICAgICBpZiAoIWJhY2tlbmRzKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFj
Y2Vzc0Vycm9yLCAiVW5hYmxlIHRvIGFkZCB0cmFuc2NlaXZlciJfcyB9OwogCi0gICAgYXV0byBz
ZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShXVEZNb3ZlKHRyYWNrT3JLaW5kKSwgVmVjdG9y
PFN0cmluZz4geyB9LCBXVEZNb3ZlKGJhY2tlbmRzLT5zZW5kZXJCYWNrZW5kKSk7Ci0gICAgYXV0
byByZWNlaXZlciA9IGNyZWF0ZVJlY2VpdmVyRm9yU291cmNlKCptX3BlZXJDb25uZWN0aW9uLnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY3JlYXRlRW1wdHlTb3VyY2Uoc2VuZGVyLT50cmFja0tp
bmQoKSwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSwgV1RGTW92ZShiYWNrZW5kcy0+cmVj
ZWl2ZXJCYWNrZW5kKSk7CisgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgq
dGhpcywgV1RGTW92ZSh0cmFja09yS2luZCksIFZlY3RvcjxTdHJpbmc+IHsgfSwgV1RGTW92ZShi
YWNrZW5kcy0+c2VuZGVyQmFja2VuZCkpOworICAgIGF1dG8gcmVjZWl2ZXIgPSBjcmVhdGVSZWNl
aXZlckZvclNvdXJjZShjcmVhdGVFbXB0eVNvdXJjZShzZW5kZXItPnRyYWNrS2luZCgpLCBjcmVh
dGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpLCBXVEZNb3ZlKGJhY2tlbmRzLT5yZWNlaXZlckJhY2tl
bmQpKTsKICAgICBhdXRvIHRyYW5zY2VpdmVyID0gUlRDUnRwVHJhbnNjZWl2ZXI6OmNyZWF0ZShX
VEZNb3ZlKHNlbmRlciksIFdURk1vdmUocmVjZWl2ZXIpLCBXVEZNb3ZlKGJhY2tlbmRzLT50cmFu
c2NlaXZlckJhY2tlbmQpKTsKICAgICBtX3BlZXJDb25uZWN0aW9uLmFkZEludGVybmFsVHJhbnNj
ZWl2ZXIodHJhbnNjZWl2ZXIuY29weVJlZigpKTsKICAgICByZXR1cm4gV1RGTW92ZSh0cmFuc2Nl
aXZlcik7CkBAIC00MDcsNyArNDI4LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFJUQ1J0cFRyYW5zY2Vp
dmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRUcmFuc2NlaXYKICAgICAg
ICAgcmV0dXJuIGFkZFVuaWZpZWRQbGFuVHJhbnNjZWl2ZXIoU3RyaW5nIHsgdHJhY2tLaW5kIH0s
IGluaXQpOwogCiAgICAgYXV0byBzZW5kZXJCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxMaWJX
ZWJSVENSdHBTZW5kZXJCYWNrZW5kPigqdGhpcywgbnVsbHB0cik7Ci0gICAgYXV0byBuZXdTZW5k
ZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZShTdHJpbmcodHJhY2tLaW5kKSwgVmVjdG9yPFN0cmlu
Zz4oKSwgV1RGTW92ZShzZW5kZXJCYWNrZW5kKSk7CisgICAgYXV0byBuZXdTZW5kZXIgPSBSVENS
dHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgU3RyaW5nKHRyYWNrS2luZCksIFZlY3RvcjxTdHJpbmc+
KCksIFdURk1vdmUoc2VuZGVyQmFja2VuZCkpOwogICAgIHJldHVybiBjb21wbGV0ZUFkZFRyYW5z
Y2VpdmVyKFdURk1vdmUobmV3U2VuZGVyKSwgaW5pdCwgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmlu
ZygpLCB0cmFja0tpbmQpOwogfQogCkBAIC00MTgsNyArNDM5LDcgQEAgRXhjZXB0aW9uT3I8UmVm
PFJUQ1J0cFRyYW5zY2VpdmVyPj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjphZGRU
cmFuc2NlaXYKIAogICAgIGF1dG8gc2VuZGVyQmFja2VuZCA9IHN0ZDo6bWFrZV91bmlxdWU8TGli
V2ViUlRDUnRwU2VuZGVyQmFja2VuZD4oKnRoaXMsIG51bGxwdHIpOwogICAgIGF1dG8mIGJhY2tl
bmQgPSAqc2VuZGVyQmFja2VuZDsKLSAgICBhdXRvIHNlbmRlciA9IFJUQ1J0cFNlbmRlcjo6Y3Jl
YXRlKHRyYWNrLmNvcHlSZWYoKSwgVmVjdG9yPFN0cmluZz4oKSwgV1RGTW92ZShzZW5kZXJCYWNr
ZW5kKSk7CisgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgdHJh
Y2suY29weVJlZigpLCBWZWN0b3I8U3RyaW5nPigpLCBXVEZNb3ZlKHNlbmRlckJhY2tlbmQpKTsK
ICAgICBpZiAoIW1fZW5kcG9pbnQtPmFkZFRyYWNrKGJhY2tlbmQsIHRyYWNrLCBWZWN0b3I8U3Ry
aW5nPiB7IH0pKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9y
LCAiVW5hYmxlIHRvIGFkZCB0cmFjayJfcyB9OwogCkBAIC00NDEsOCArNDYyLDggQEAgUlRDUnRw
VHJhbnNjZWl2ZXIqIExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6ZXhpc3RpbmdUcmFu
c2NlaXZlcihXVEY6OkZ1bmMKIAogUlRDUnRwVHJhbnNjZWl2ZXImIExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6bmV3UmVtb3RlVHJhbnNjZWl2ZXIoc3RkOjp1bmlxdWVfcHRyPExpYldl
YlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZD4mJiB0cmFuc2NlaXZlckJhY2tlbmQsIFJlZjxSZWFs
dGltZU1lZGlhU291cmNlPiYmIHJlY2VpdmVyU291cmNlKQogewotICAgIGF1dG8gc2VuZGVyID0g
UlRDUnRwU2VuZGVyOjpjcmVhdGUocmVjZWl2ZXJTb3VyY2UtPnR5cGUoKSA9PSBSZWFsdGltZU1l
ZGlhU291cmNlOjpUeXBlOjpBdWRpbyA/ICJhdWRpbyJfcyA6ICJ2aWRlbyJfcywgVmVjdG9yPFN0
cmluZz4geyB9LCB0cmFuc2NlaXZlckJhY2tlbmQtPmNyZWF0ZVNlbmRlckJhY2tlbmQoKnRoaXMs
IG51bGxwdHIpKTsKLSAgICBhdXRvIHJlY2VpdmVyID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2Uo
Km1fcGVlckNvbm5lY3Rpb24uc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBXVEZNb3ZlKHJlY2Vp
dmVyU291cmNlKSwgdHJhbnNjZWl2ZXJCYWNrZW5kLT5jcmVhdGVSZWNlaXZlckJhY2tlbmQoKSk7
CisgICAgYXV0byBzZW5kZXIgPSBSVENSdHBTZW5kZXI6OmNyZWF0ZSgqdGhpcywgcmVjZWl2ZXJT
b3VyY2UtPnR5cGUoKSA9PSBSZWFsdGltZU1lZGlhU291cmNlOjpUeXBlOjpBdWRpbyA/ICJhdWRp
byJfcyA6ICJ2aWRlbyJfcywgVmVjdG9yPFN0cmluZz4geyB9LCB0cmFuc2NlaXZlckJhY2tlbmQt
PmNyZWF0ZVNlbmRlckJhY2tlbmQoKnRoaXMsIG51bGxwdHIpKTsKKyAgICBhdXRvIHJlY2VpdmVy
ID0gY3JlYXRlUmVjZWl2ZXJGb3JTb3VyY2UoV1RGTW92ZShyZWNlaXZlclNvdXJjZSksIHRyYW5z
Y2VpdmVyQmFja2VuZC0+Y3JlYXRlUmVjZWl2ZXJCYWNrZW5kKCkpOwogICAgIGF1dG8gdHJhbnNj
ZWl2ZXIgPSBSVENSdHBUcmFuc2NlaXZlcjo6Y3JlYXRlKFdURk1vdmUoc2VuZGVyKSwgV1RGTW92
ZShyZWNlaXZlciksIFdURk1vdmUodHJhbnNjZWl2ZXJCYWNrZW5kKSk7CiAgICAgbV9wZWVyQ29u
bmVjdGlvbi5hZGRJbnRlcm5hbFRyYW5zY2VpdmVyKHRyYW5zY2VpdmVyLmNvcHlSZWYoKSk7CiAg
ICAgcmV0dXJuIHRyYW5zY2VpdmVyLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAppbmRleCAxZjY4NTBkMTc1MjMyNWExMTRiNzk0
NDc0NWFiMTVmMjQ3YWUxOWMzLi41ZWM3OTE4MDYwMjI3ODA3MWYzZjczMjhkNTNmYThjZGVmMTY4
NzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiUGVlckNvbm5lY3Rpb25CYWNr
ZW5kLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCiBuYW1lc3BhY2Ugd2VicnRjIHsKIGNsYXNzIEljZUNhbmRpZGF0ZUludGVyZmFjZTsKQEAg
LTQwLDYgKzM5LDcgQEAgY2xhc3MgTGliV2ViUlRDTWVkaWFFbmRwb2ludDsKIGNsYXNzIExpYldl
YlJUQ1Byb3ZpZGVyOwogY2xhc3MgTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kOwogY2xh
c3MgUlRDUnRwUmVjZWl2ZXI7CitjbGFzcyBSVENSdHBSZWNlaXZlckJhY2tlbmQ7CiBjbGFzcyBS
VENTZXNzaW9uRGVzY3JpcHRpb247CiBjbGFzcyBSVENTdGF0c1JlcG9ydDsKIGNsYXNzIFJlYWx0
aW1lSW5jb21pbmdBdWRpb1NvdXJjZTsKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgUmVhbHRpbWVN
ZWRpYVNvdXJjZTsKIGNsYXNzIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTsKIGNsYXNzIFJl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTsKIAotY2xhc3MgTGliV2ViUlRDUGVlckNvbm5lY3Rp
b25CYWNrZW5kIGZpbmFsIDogcHVibGljIFBlZXJDb25uZWN0aW9uQmFja2VuZCwgcHVibGljIENh
bk1ha2VXZWFrUHRyPExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZD4geworY2xhc3MgTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kIGZpbmFsIDogcHVibGljIFBlZXJDb25uZWN0aW9u
QmFja2VuZCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgTGli
V2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kKFJUQ1BlZXJDb25uZWN0aW9uJiwgTGliV2ViUlRD
UHJvdmlkZXImKTsKQEAgLTY3LDcgKzY3LDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRvU3RvcCgp
IGZpbmFsOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSVENEYXRhQ2hhbm5lbEhhbmRsZXI+IGNyZWF0
ZURhdGFDaGFubmVsSGFuZGxlcihjb25zdCBTdHJpbmcmLCBjb25zdCBSVENEYXRhQ2hhbm5lbElu
aXQmKSBmaW5hbDsKICAgICBib29sIHNldENvbmZpZ3VyYXRpb24oTWVkaWFFbmRwb2ludENvbmZp
Z3VyYXRpb24mJikgZmluYWw7Ci0gICAgdm9pZCBnZXRTdGF0cyhNZWRpYVN0cmVhbVRyYWNrKiwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJikgZmluYWw7CisgICAgdm9pZCBnZXRTdGF0cyhSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmKSBmaW5hbDsKKyAgICB2b2lkIGdldFN0YXRzKFJUQ1J0cFNlbmRlciYs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpIGZpbmFsOworICAgIHZvaWQgZ2V0U3RhdHMoUlRDUnRw
UmVjZWl2ZXImLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKSBmaW5hbDsKIAogICAgIFJlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IGxvY2FsRGVzY3JpcHRpb24oKSBjb25zdCBmaW5hbDsKICAg
ICBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigp
IGNvbnN0IGZpbmFsOwpAQCAtMTE2LDYgKzExOCw4IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KICAgICBFeGNlcHRpb25PcjxSZWY8UlRDUnRwVHJhbnNjZWl2ZXI+PiBhZGRV
bmlmaWVkUGxhblRyYW5zY2VpdmVyKFQmJiB0cmFja09yS2luZCwgY29uc3QgUlRDUnRwVHJhbnNj
ZWl2ZXJJbml0Jik7CiAKKyAgICBSZWY8UlRDUnRwUmVjZWl2ZXI+IGNyZWF0ZVJlY2VpdmVyRm9y
U291cmNlKFJlZjxSZWFsdGltZU1lZGlhU291cmNlPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8UlRDUnRw
UmVjZWl2ZXJCYWNrZW5kPiYmKTsKKwogICAgIFJlZjxMaWJXZWJSVENNZWRpYUVuZHBvaW50PiBt
X2VuZHBvaW50OwogICAgIGJvb2wgbV9pc0xvY2FsRGVzY3JpcHRpb25TZXQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9pc1JlbW90ZURlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0
cFJlY2VpdmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgKaW5kZXggZmQwZDk1ZWMzMjk3
NWMxNmE1M2M0ODEyZjEzNzlhZTczNDMxYmFlNy4uMzEyNDMyM2QzNDZmMTA1M2IzZjcxNGRjZmZh
ZDQyOWQwMGFiNGU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2ZXJCYWNrZW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwUmVjZWl2
ZXJCYWNrZW5kLmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAg
ICB3ZWJydGM6OlJ0cFJlY2VpdmVySW50ZXJmYWNlKiBydGNSZWNlaXZlcigpIHsgcmV0dXJuIG1f
cnRjUmVjZWl2ZXIuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBSVENSdHBQYXJhbWV0ZXJzIGdl
dFBhcmFtZXRlcnMoKSBmaW5hbDsKICAgICBWZWN0b3I8UlRDUnRwQ29udHJpYnV0aW5nU291cmNl
PiBnZXRDb250cmlidXRpbmdTb3VyY2VzKCkgY29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGMyMjcyYTBj
YTQ1OThkNDliODBjODcxOWRjYzU2MDY3ZjBkNmEwNC4uMzkxNzI1ZjAwYWU3YmQzZTc3MWNkNzBm
Mzg2YTg4OGNhZTljMWUyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE4LTA5LTE4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgc2VuZGVy
L3JlY2VpdmVyIGdldFN0YXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODk3MDcKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgKiB3ZWJydGMvdmlkZW8tc3RhdHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
YnJ0Yy92aWRlby1zdGF0cy5odG1sOgorCiAyMDE4LTA5LTE4ICBZb3Vlbm4gRmFibGV0ICA8eW91
ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBMYXlvdXQgVGVzdCB3ZWJydGMvdmlkZW8tbXV0ZS5o
dG1sIGlzIGZsYWt5LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNmY4MzA4MTdm
YWEyYzVjZGQ2NjkxMmRmNzQ0MmVhZTZiNDdmOTU1ZS4uNzVhMjdjNDZjM2I3MTcxZTA3NzNlYzk1
NzllNjdkMGYyYjVlMjA1NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTgtMDktMTggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgor
CisgICAgICAgIEltcGxlbWVudCBzZW5kZXIvcmVjZWl2ZXIgZ2V0U3RhdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4OTcwNworCisgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93
ZWJydGMvUlRDUnRwUmVjZWl2ZXItZ2V0U3RhdHMuaHR0cHMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLWdldFN0YXRzLmh0dHBz
LWV4cGVjdGVkLnR4dDoKKwogMjAxOC0wOS0xOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IFJUQ1J0cFJlY2VpdmVyIGdldENvbnRyaWJ1dGlu
Z1NvdXJjZXMvZ2V0U3luY2hyb25pemF0aW9uU291cmNlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUmVjZWl2ZXIt
Z2V0U3RhdHMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwUmVjZWl2ZXItZ2V0U3RhdHMuaHR0cHMtZXhw
ZWN0ZWQudHh0CmluZGV4IGVjYjg4YTJmZGVjMDIxMjAyYjVkYmI1MDRhOTBlMTNkNDc5ZWVkODIu
LjRlZTc3YTQyNzBhMjYzZDMyZjZiOWRlMGRhZjE0MTYwMmI2NmI5YzIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFJl
Y2VpdmVyLWdldFN0YXRzLmh0dHBzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBSZWNlaXZlci1nZXRTdGF0
cy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiAKLUZBSUwgcmVjZWl2ZXIuZ2V0
U3RhdHMoKSB2aWEgYWRkVHJhbnNjZWl2ZXIgc2hvdWxkIHJldHVybiBzdGF0cyByZXBvcnQgY29u
dGFpbmluZyBpbmJvdW5kLXJ0cCBzdGF0cyBwcm9taXNlX3Rlc3Q6IFVuaGFuZGxlZCByZWplY3Rp
b24gd2l0aCB2YWx1ZTogb2JqZWN0ICJUeXBlRXJyb3I6IHJlY2VpdmVyLmdldFN0YXRzIGlzIG5v
dCBhIGZ1bmN0aW9uLiAoSW4gJ3JlY2VpdmVyLmdldFN0YXRzKCknLCAncmVjZWl2ZXIuZ2V0U3Rh
dHMnIGlzIHVuZGVmaW5lZCkiCi1GQUlMIHJlY2VpdmVyLmdldFN0YXRzKCkgdmlhIGFkZFRyYWNr
IHNob3VsZCByZXR1cm4gc3RhdHMgcmVwb3J0IGNvbnRhaW5pbmcgaW5ib3VuZC1ydHAgc3RhdHMg
cHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiVHlw
ZUVycm9yOiByZWNlaXZlci5nZXRTdGF0cyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdyZWNlaXZl
ci5nZXRTdGF0cygpJywgJ3JlY2VpdmVyLmdldFN0YXRzJyBpcyB1bmRlZmluZWQpIgorRkFJTCBy
ZWNlaXZlci5nZXRTdGF0cygpIHZpYSBhZGRUcmFuc2NlaXZlciBzaG91bGQgcmV0dXJuIHN0YXRz
IHJlcG9ydCBjb250YWluaW5nIGluYm91bmQtcnRwIHN0YXRzIGFzc2VydF90cnVlOiBFeHBlY3Qg
c3RhdHNSZXBvcnQgdG8gY29udGFpbiBzdGF0cyBvYmplY3Qgb2YgdHlwZSBpbmJvdW5kLXJ0cCBl
eHBlY3RlZCB0cnVlIGdvdCBmYWxzZQorRkFJTCByZWNlaXZlci5nZXRTdGF0cygpIHZpYSBhZGRU
cmFjayBzaG91bGQgcmV0dXJuIHN0YXRzIHJlcG9ydCBjb250YWluaW5nIGluYm91bmQtcnRwIHN0
YXRzIGFzc2VydF9lcXVhbHM6IEV4cGVjdCBkaWN0aW9uYXJ5Lm1lZGlhVHlwZSB0byBiZSBzdHJp
bmcgZXhwZWN0ZWQgInN0cmluZyIgYnV0IGdvdCAidW5kZWZpbmVkIgogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENSdHBT
ZW5kZXItZ2V0U3RhdHMuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJydGMvUlRDUnRwU2VuZGVyLWdldFN0YXRzLmh0dHBz
LWV4cGVjdGVkLnR4dAppbmRleCA4YmJjMzhlMjEwNTc4NjFmMjJkNmNlZDYzNDNhYTIxZjg1NzZm
MjIxLi44ZTk4ZTQ1NTY5MTAzNzZjYjgwNzljMjdkNDBjZDM5Y2E4ZTQ1MWI5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnJ0Yy9SVENS
dHBTZW5kZXItZ2V0U3RhdHMuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjL1JUQ1J0cFNlbmRlci1nZXRTdGF0
cy5odHRwcy1leHBlY3RlZC50eHQKQEAgLTEsNCArMSw0IEBACiAKLUZBSUwgc2VuZGVyLmdldFN0
YXRzKCkgdmlhIGFkZFRyYW5zY2VpdmVyIHNob3VsZCByZXR1cm4gc3RhdHMgcmVwb3J0IGNvbnRh
aW5pbmcgb3V0Ym91bmQtcnRwIHN0YXRzIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlv
biB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjogc2VuZGVyLmdldFN0YXRzIGlzIG5vdCBh
IGZ1bmN0aW9uLiAoSW4gJ3NlbmRlci5nZXRTdGF0cygpJywgJ3NlbmRlci5nZXRTdGF0cycgaXMg
dW5kZWZpbmVkKSIKLUZBSUwgc2VuZGVyLmdldFN0YXRzKCkgdmlhIGFkZFRyYWNrIHNob3VsZCBy
ZXR1cm4gc3RhdHMgcmVwb3J0IGNvbnRhaW5pbmcgb3V0Ym91bmQtcnRwIHN0YXRzIHByb21pc2Vf
dGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIlR5cGVFcnJvcjog
c2VuZGVyLmdldFN0YXRzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ3NlbmRlci5nZXRTdGF0cygp
JywgJ3NlbmRlci5nZXRTdGF0cycgaXMgdW5kZWZpbmVkKSIKK0ZBSUwgc2VuZGVyLmdldFN0YXRz
KCkgdmlhIGFkZFRyYW5zY2VpdmVyIHNob3VsZCByZXR1cm4gc3RhdHMgcmVwb3J0IGNvbnRhaW5p
bmcgb3V0Ym91bmQtcnRwIHN0YXRzIGFzc2VydF90cnVlOiBFeHBlY3Qgc3RhdHNSZXBvcnQgdG8g
Y29udGFpbiBzdGF0cyBvYmplY3Qgb2YgdHlwZSBvdXRib3VuZC1ydHAgZXhwZWN0ZWQgdHJ1ZSBn
b3QgZmFsc2UKK0ZBSUwgc2VuZGVyLmdldFN0YXRzKCkgdmlhIGFkZFRyYWNrIHNob3VsZCByZXR1
cm4gc3RhdHMgcmVwb3J0IGNvbnRhaW5pbmcgb3V0Ym91bmQtcnRwIHN0YXRzIGFzc2VydF9lcXVh
bHM6IEV4cGVjdCBkaWN0aW9uYXJ5LnRyYWNrSWQgdG8gYmUgc3RyaW5nIGV4cGVjdGVkICJzdHJp
bmciIGJ1dCBnb3QgInVuZGVmaW5lZCIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRj
L3ZpZGVvLXN0YXRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zdGF0
cy1leHBlY3RlZC50eHQKaW5kZXggMjQyYTRhNTM3MWFlNzk3NjllODJmNTQwNDBlMDRlMTA2Mjkz
ZTc2NS4uZWYxYjIyN2NlYWZlODJlZWI2YjA0ZTQ2MWUyY2IzZjhjMDJiOWVmNSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvd2VicnRjL3ZpZGVvLXN0YXRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlv
dXRUZXN0cy93ZWJydGMvdmlkZW8tc3RhdHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNSBAQAog
CiBQQVNTIEJhc2ljIHZpZGVvIHN0YXRzIAorUEFTUyBTZW5kZXIgc3RhdHMgCitQQVNTIFJlY2Vp
dmVyIHN0YXRzIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvdmlkZW8tc3RhdHMu
aHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zdGF0cy5odG1sCmluZGV4IDUyYTc2NmE2
ZjViNWVhYjBlNTdjMTJlNDgwOWIyMzUxN2M2OTI3MzguLjgyODZjYTc1YWJkYmUxYTRiMzg0OWRj
NTBlMGIwZDQ5MDE0MjIwZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1z
dGF0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy92aWRlby1zdGF0cy5odG1sCkBAIC05
Niw1NSArOTYsNzYgQEAgZnVuY3Rpb24gY2hlY2tPdXRib3VuZEZyYW1lc051bWJlckluY3JlYXNl
ZChmaXJzdENvbm5lY3Rpb24sIHN0YXRzRmlyc3RDb25uZWN0aW8KIH0KIAogdmFyIGZpcnN0Q29u
bmVjdGlvbiwgc2Vjb25kQ29ubmVjdGlvbjsKLXByb21pc2VfdGVzdCgodGVzdCkgPT4geworcHJv
bWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQog
ICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CiAKLSAgICB2
YXIgbG9jYWxTdHJlYW0sIHJlbW90ZVN0cmVhbTsKLSAgICByZXR1cm4gbmF2aWdhdG9yLm1lZGlh
RGV2aWNlcy5nZXRVc2VyTWVkaWEoeyB2aWRlbzogdHJ1ZX0pLnRoZW4oKHN0cmVhbSkgPT4gewot
ICAgICAgICBsb2NhbFN0cmVhbSA9IHN0cmVhbTsKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNl
KChyZXNvbHZlLCByZWplY3QpID0+IHsKLSAgICAgICAgICAgIGNyZWF0ZUNvbm5lY3Rpb25zKChj
b25uZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uID0gY29ubmVj
dGlvbjsKLSAgICAgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24uYWRkVHJhY2soc3RyZWFtLmdl
dFZpZGVvVHJhY2tzKClbMF0sIHN0cmVhbSk7Ci0gICAgICAgICAgICB9LCAoY29ubmVjdGlvbikg
PT4gewotICAgICAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24gPSBjb25uZWN0aW9uOwotICAg
ICAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24ub250cmFjayA9ICh0cmFja0V2ZW50KSA9PiB7
Ci0gICAgICAgICAgICAgICAgICAgIHJlbW90ZVN0cmVhbSA9IHRyYWNrRXZlbnQuc3RyZWFtc1sw
XTsKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICAgICAgICAgIH07Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KCJUZXN0
IHRpbWVkIG91dCIpLCA1MDAwKTsKKyAgICBjb25zdCBsb2NhbFN0cmVhbSA9IGF3YWl0IG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHsgdmlkZW86IHRydWV9KTsKKyAgICBhd2Fp
dCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGNyZWF0ZUNvbm5l
Y3Rpb25zKChjb25uZWN0aW9uKSA9PiB7CisgICAgICAgICAgICBmaXJzdENvbm5lY3Rpb24gPSBj
b25uZWN0aW9uOworICAgICAgICAgICAgZmlyc3RDb25uZWN0aW9uLmFkZFRyYWNrKGxvY2FsU3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKClbMF0sIGxvY2FsU3RyZWFtKTsKKyAgICAgICAgfSwgKGNvbm5l
Y3Rpb24pID0+IHsKKyAgICAgICAgICAgIHNlY29uZENvbm5lY3Rpb24gPSBjb25uZWN0aW9uOwor
ICAgICAgICAgICAgc2Vjb25kQ29ubmVjdGlvbi5hZGRUcmFjayhsb2NhbFN0cmVhbS5nZXRWaWRl
b1RyYWNrcygpWzBdLCBsb2NhbFN0cmVhbSk7CisgICAgICAgICAgICBzZWNvbmRDb25uZWN0aW9u
Lm9udHJhY2sgPSAodHJhY2tFdmVudCkgPT4geworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsK
KyAgICAgICAgICAgIH07CiAgICAgICAgIH0pOwotICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAg
ICByZXR1cm4gZ2V0T3V0Ym91bmRSVFBTdGF0cyhmaXJzdENvbm5lY3Rpb24pOwotICAgIH0pLnRo
ZW4oKHN0YXRzKSA9PiB7Ci0gICAgICAgIGFzc2VydF90cnVlKCEhc3RhdHMsICJvdXRib3VuZC1y
dHAgc3RhdHMgc2hvdWxkIG5vdCBiZSBudWxsIik7Ci0gICAgICAgIGFzc2VydF90cnVlKE51bWJl
ci5pc0ludGVnZXIoc3RhdHMuZnJhbWVzRW5jb2RlZCksICJmcmFtZXNFbmNvZGVkIHNob3VsZCBi
ZSBhbiBpbnRlZ2VyIik7Ci0gICAgICAgIGFzc2VydF90cnVlKE51bWJlci5pc0ludGVnZXIoc3Rh
dHMucXBTdW0pLCAib3V0Ym91bmQgcXBTdW0gc2hvdWxkIGJlIGFuIGludGVnZXIiKTsKLSAgICAg
ICAgYXNzZXJ0X3RydWUodHlwZW9mIHN0YXRzLnRpbWVzdGFtcCA9PT0gIm51bWJlciIsICJ0aW1l
c3RhbXAgc2hvdWxkIGJlIGEgZG91YmxlIik7Ci0gICAgICAgIHN0YXRzRmlyc3RDb25uZWN0aW9u
ID0gc3RhdHM7Ci0gICAgICAgIHJldHVybiBnZXRJbmJvdW5kUlRQU3RhdHMoc2Vjb25kQ29ubmVj
dGlvbik7Ci0gICAgfSkudGhlbigoc3RhdHMpID0+IHsKLSAgICAgICAgYXNzZXJ0X3RydWUoISFz
dGF0cywgImluYm91bmQtcnRwIHN0YXRzIHNob3VsZCBub3QgYmUgbnVsbCIpOwotICAgICAgICBh
c3NlcnRfdHJ1ZShOdW1iZXIuaXNJbnRlZ2VyKHN0YXRzLmZyYW1lc0RlY29kZWQpLCAiZnJhbWVz
RGVjb2RlZCBzaG91bGQgYmUgYW4gaW50ZWdlciIpOwotICAgICAgICBhc3NlcnRfdHJ1ZShOdW1i
ZXIuaXNJbnRlZ2VyKHN0YXRzLnFwU3VtKSwgImluYm91bmQgcXBTdW0gc2hvdWxkIGJlIGFuIGlu
dGVnZXIiKTsKLSAgICAgICAgYXNzZXJ0X3RydWUodHlwZW9mIHN0YXRzLnRpbWVzdGFtcCA9PT0g
Im51bWJlciIsICJ0aW1lc3RhbXAgc2hvdWxkIGJlIGEgZG91YmxlIik7Ci0gICAgICAgIHN0YXRz
U2Vjb25kQ29ubmVjdGlvbiA9IHN0YXRzOwotICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAgICBy
ZXR1cm4gY2hlY2tJbmJvdW5kRnJhbWVzTnVtYmVySW5jcmVhc2VkKHNlY29uZENvbm5lY3Rpb24s
IHN0YXRzU2Vjb25kQ29ubmVjdGlvbiwgMCk7Ci0gICAgfSkudGhlbigoKSA9PiB7Ci0gICAgICAg
IHJldHVybiBjaGVja091dGJvdW5kRnJhbWVzTnVtYmVySW5jcmVhc2VkKGZpcnN0Q29ubmVjdGlv
biwgc3RhdHNGaXJzdENvbm5lY3Rpb24sIDApOwotICAgIH0pLnRoZW4oKCkgPT4gewotICAgICAg
ICByZXR1cm4gZ2V0U3RhdHNUeXBlKGZpcnN0Q29ubmVjdGlvbik7Ci0gICAgfSkudGhlbigodHlw
ZXMpID0+IHsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyh0eXBlcywgWyJjYW5kaWRhdGUt
cGFpciIsICJjZXJ0aWZpY2F0ZSIsICJvdXRib3VuZC1ydHAiLCAidHJhY2siXSk7Ci0gICAgfSku
dGhlbigoKSA9PiB7Ci0gICAgICAgIHJldHVybiBnZXRTdGF0c1R5cGUoc2Vjb25kQ29ubmVjdGlv
bik7Ci0gICAgfSkudGhlbigodHlwZXMpID0+IHsKLSAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyh0eXBlcywgWyJjYW5kaWRhdGUtcGFpciIsICJjZXJ0aWZpY2F0ZSIsICJpbmJvdW5kLXJ0cCIs
ICJ0cmFjayJdKTsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoIlRlc3QgdGltZWQg
b3V0IiksIDUwMDApOwogICAgIH0pOworCisgICAgbGV0IHN0YXRzID0gYXdhaXQgZ2V0T3V0Ym91
bmRSVFBTdGF0cyhmaXJzdENvbm5lY3Rpb24pOworICAgIGFzc2VydF90cnVlKCEhc3RhdHMsICJv
dXRib3VuZC1ydHAgc3RhdHMgc2hvdWxkIG5vdCBiZSBudWxsIik7CisgICAgYXNzZXJ0X3RydWUo
TnVtYmVyLmlzSW50ZWdlcihzdGF0cy5mcmFtZXNFbmNvZGVkKSwgImZyYW1lc0VuY29kZWQgc2hv
dWxkIGJlIGFuIGludGVnZXIiKTsKKyAgICBhc3NlcnRfdHJ1ZShOdW1iZXIuaXNJbnRlZ2VyKHN0
YXRzLnFwU3VtKSwgIm91dGJvdW5kIHFwU3VtIHNob3VsZCBiZSBhbiBpbnRlZ2VyIik7CisgICAg
YXNzZXJ0X3RydWUodHlwZW9mIHN0YXRzLnRpbWVzdGFtcCA9PT0gIm51bWJlciIsICJ0aW1lc3Rh
bXAgc2hvdWxkIGJlIGEgZG91YmxlIik7CisgICAgc3RhdHNGaXJzdENvbm5lY3Rpb24gPSBzdGF0
czsKKworICAgIHN0YXRzID0gYXdhaXQgZ2V0SW5ib3VuZFJUUFN0YXRzKHNlY29uZENvbm5lY3Rp
b24pOworICAgIGFzc2VydF90cnVlKCEhc3RhdHMsICJpbmJvdW5kLXJ0cCBzdGF0cyBzaG91bGQg
bm90IGJlIG51bGwiKTsKKyAgICBhc3NlcnRfdHJ1ZShOdW1iZXIuaXNJbnRlZ2VyKHN0YXRzLmZy
YW1lc0RlY29kZWQpLCAiZnJhbWVzRGVjb2RlZCBzaG91bGQgYmUgYW4gaW50ZWdlciIpOworICAg
IGFzc2VydF90cnVlKE51bWJlci5pc0ludGVnZXIoc3RhdHMucXBTdW0pLCAiaW5ib3VuZCBxcFN1
bSBzaG91bGQgYmUgYW4gaW50ZWdlciIpOworICAgIGFzc2VydF90cnVlKHR5cGVvZiBzdGF0cy50
aW1lc3RhbXAgPT09ICJudW1iZXIiLCAidGltZXN0YW1wIHNob3VsZCBiZSBhIGRvdWJsZSIpOwor
ICAgIHN0YXRzU2Vjb25kQ29ubmVjdGlvbiA9IHN0YXRzOworCisgICAgYXdhaXQgY2hlY2tJbmJv
dW5kRnJhbWVzTnVtYmVySW5jcmVhc2VkKHNlY29uZENvbm5lY3Rpb24sIHN0YXRzU2Vjb25kQ29u
bmVjdGlvbiwgMCk7CisgICAgYXdhaXQgY2hlY2tPdXRib3VuZEZyYW1lc051bWJlckluY3JlYXNl
ZChmaXJzdENvbm5lY3Rpb24sIHN0YXRzRmlyc3RDb25uZWN0aW9uLCAwKTsKKworICAgIGxldCB0
eXBlcyA9IGF3YWl0IGdldFN0YXRzVHlwZShmaXJzdENvbm5lY3Rpb24pOworICAgIGFzc2VydF9h
cnJheV9lcXVhbHModHlwZXMsIFsiY2FuZGlkYXRlLXBhaXIiLCAiY2VydGlmaWNhdGUiLCAiaW5i
b3VuZC1ydHAiLCAib3V0Ym91bmQtcnRwIiwgInRyYWNrIl0pOworCisgICAgdHlwZXMgPSBhd2Fp
dCBnZXRTdGF0c1R5cGUoc2Vjb25kQ29ubmVjdGlvbik7CisgICAgYXNzZXJ0X2FycmF5X2VxdWFs
cyh0eXBlcywgWyJjYW5kaWRhdGUtcGFpciIsICJjZXJ0aWZpY2F0ZSIsICJpbmJvdW5kLXJ0cCIs
ICJvdXRib3VuZC1ydHAiLCAidHJhY2siXSk7CiB9LCAiQmFzaWMgdmlkZW8gc3RhdHMiKTsKKwor
cHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVwb3J0ID0gYXdhaXQg
Zmlyc3RDb25uZWN0aW9uLmdldFNlbmRlcnMoKVswXS5nZXRTdGF0cygpOworICAgIGNoZWNrU3Rh
dHNSZXBvcnRJdGVyYXRvcihyZXBvcnQpOworICAgIHZhciBpbnN0YXRzLCBvdXRzdGF0czsKKyAg
ICByZXBvcnQuZm9yRWFjaCgoc3RhdEl0ZW0pID0+IHsKKyAgICAgICAgaWYgKHN0YXRJdGVtLnR5
cGUgPT09ICJvdXRib3VuZC1ydHAiKQorICAgICAgICAgICAgb3V0c3RhdHMgPSBzdGF0SXRlbTsK
KyAgICAgICAgZWxzZSBpZiAoc3RhdEl0ZW0udHlwZSA9PT0gImluYm91bmQtcnRwIikKKyAgICAg
ICAgICAgIGluc3RhdHMgPSBzdGF0SXRlbTsKKyAgICB9KTsKKyAgICBhc3NlcnRfdHJ1ZSghIW91
dHN0YXRzKTsKKyAgICBhc3NlcnRfZmFsc2UoISFpbnN0YXRzKTsKK30sICJTZW5kZXIgc3RhdHMi
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVwb3J0ID0g
YXdhaXQgc2Vjb25kQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKVswXS5nZXRTdGF0cygpOworICAg
IGNoZWNrU3RhdHNSZXBvcnRJdGVyYXRvcihyZXBvcnQpOworICAgIHZhciBpbnN0YXRzLCBvdXRz
dGF0czsKKyAgICByZXBvcnQuZm9yRWFjaCgoc3RhdEl0ZW0pID0+IHsKKyAgICAgICAgaWYgKHN0
YXRJdGVtLnR5cGUgPT09ICJvdXRib3VuZC1ydHAiKQorICAgICAgICAgICAgb3V0c3RhdHMgPSBz
dGF0SXRlbTsKKyAgICAgICAgZWxzZSBpZiAoc3RhdEl0ZW0udHlwZSA9PT0gImluYm91bmQtcnRw
IikKKyAgICAgICAgICAgIGluc3RhdHMgPSBzdGF0SXRlbTsKKyAgICB9KTsKKyAgICBhc3NlcnRf
ZmFsc2UoISFvdXRzdGF0cyk7CisgICAgYXNzZXJ0X3RydWUoISFpbnN0YXRzKTsKK30sICJSZWNl
aXZlciBzdGF0cyIpOwogICAgICAgICA8L3NjcmlwdD4KICAgICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>