<?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>235103</bug_id>
          
          <creation_ts>2022-01-12 02:31:47 -0800</creation_ts>
          <short_desc>[:has() pseudo-class] Collect invalidation selectors for child invalidation</short_desc>
          <delta_ts>2022-01-12 23:33:17 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1830052</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-12 02:31:47 -0800</bug_when>
    <thetext>Collect selectors we can use to test if :has status actually changed before invalidating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830055</commentid>
    <comment_count>1</comment_count>
      <attachid>448920</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-12 02:39:15 -0800</bug_when>
    <thetext>Created attachment 448920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830093</commentid>
    <comment_count>2</comment_count>
      <attachid>448934</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-12 05:10:57 -0800</bug_when>
    <thetext>Created attachment 448934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830467</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-12 23:32:58 -0800</bug_when>
    <thetext>Committed r287973 (246002@main): &lt;https://commits.webkit.org/246002@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 448934.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1830469</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-12 23:33:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/87533906&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448920</attachid>
            <date>2022-01-12 02:39:15 -0800</date>
            <delta_ts>2022-01-12 05:10:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235103-20220112123914.patch</filename>
            <type>text/plain</type>
            <size>20717</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y5M2U5NjE0MDJmOWVj
MmQ3NjVkY2YxODZhNjNiOTY4NWMyZmU4Ny4uMmNjMjU1OWU2Mzc1ZTk4MDQxOWRkODYxZGYzODNm
NzMwNWI3ZGE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIyLTAxLTEyICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gQ29sbGVjdCBpbnZhbGlkYXRpb24gc2VsZWN0b3JzIGZvciBjaGlsZCBpbnZhbGlkYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTEw
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbGxl
Y3Qgc2VsZWN0b3JzIHdlIGNhbiB1c2UgdG8gdGVzdCBpZiA6aGFzIHN0YXR1cyBhY3R1YWxseSBj
aGFuZ2VkIGJlZm9yZSBpbnZhbGlkYXRpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2Vzbid0
IHlldCB1c2UgdGhlLAorCisgICAgICAgICogc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OkNoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjpp
bnZhbGlkYXRlRm9yQ2hhbmdlZEVsZW1lbnQpOgorCisgICAgICAgIFVzZSB0aGUgcHNldWRvIGNs
YXNzIGludmFsaWRhdGlvbiBrZXlzIGZvciBsb29raW5nIHVwIDpoYXMgc2VsZWN0b3JzIHRvbwor
ICAgICAgICBpbnN0ZWFkIG9mIGhhdmluZyBhIGN1c3RvbSBtZWNoYW5pc20gZm9yIGRvaW5nIHRo
ZSBzYW1lIHRoaW5nLgorCisgICAgICAgICogc3R5bGUvUHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlk
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6Om1ha2VQc2V1ZG9DbGFzc0ludmFs
aWRhdGlvbktleXMpOgorICAgICAgICAqIHN0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0
aW9uLmg6CisgICAgICAgICogc3R5bGUvUnVsZUZlYXR1cmUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlJ1bGVGZWF0dXJlU2V0OjpyZWN1cnNpdmVseUNvbGxlY3RGZWF0dXJlc0Zyb21T
ZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6bWFrZVBzZXVkb0NsYXNzSW52YWxp
ZGF0aW9uS2V5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6Y29s
bGVjdEZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6
YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6Y2xlYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCk6Cisg
ICAgICAgICogc3R5bGUvUnVsZUZlYXR1cmUuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNjb3Bl
UnVsZVNldHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlNjb3BlUnVsZVNldHM6OmNv
bGxlY3RGZWF0dXJlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGVSdWxl
U2V0czo6aGFzUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6U2NvcGVSdWxlU2V0czo6dGFnSW52YWxpZGF0aW9uUnVsZVNldHMg
Y29uc3QpOiBEZWxldGVkLgorCisgICAgICAgIFdlIGRvbid0IG5lZWQga2VlcCBhcm91bmQgdGFn
IHJ1bGUgc2V0cyBhbnltb3JlLgorCisgICAgICAgICogc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRz
Lmg6CisKIDIwMjItMDEtMDkgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBzdXBwb3J0IGZvciBEaXJlY3QyRCAvIEZUVwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCmluZGV4IDZmODAzNTAxMjVhMzk3
YTFkNjMyNzY5MDJlZjkyYzRmODRhYzBlNmQuLmUzNjZiNjRhOTE1YTdkOGY0MmI2ZTFkZDA3ZDZh
NDBmMGE4YmU5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0NoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUlu
dmFsaWRhdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkVsZW1lbnRUcmF2
ZXJzYWwuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJQc2V1ZG9D
bGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNs
dWRlICJTbG90QXNzaWdubWVudC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKQEAgLTQ0
LDQxICs0NSwyNiBAQCB2b2lkIENoaWxkQ2hhbmdlSW52YWxpZGF0aW9uOjppbnZhbGlkYXRlRm9y
Q2hhbmdlZEVsZW1lbnQoRWxlbWVudCYgY2hhbmdlZEVsZW1lbgogCiAgICAgYm9vbCBpc0Rlc2Nl
bmRhbnQgPSBjaGFuZ2VkRWxlbWVudC5wYXJlbnRFbGVtZW50KCkgIT0gJnBhcmVudEVsZW1lbnQo
KTsKIAorICAgIGF1dG8gY2FuQWZmZWN0QW5jZXN0b3JzID0gWyZdKE1hdGNoRWxlbWVudCBtYXRj
aEVsZW1lbnQpIHsKKyAgICAgICAgaWYgKCFpc0Rlc2NlbmRhbnQpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG1hdGNoRWxlbWVudCA9PSBNYXRjaEVsZW1lbnQ6Okhh
c0Rlc2NlbmRhbnQKKyAgICAgICAgICAgIHx8IG1hdGNoRWxlbWVudCA9PSBNYXRjaEVsZW1lbnQ6
Okhhc1NpYmxpbmdEZXNjZW5kYW50CisgICAgICAgICAgICB8fCBtYXRjaEVsZW1lbnQgPT0gTWF0
Y2hFbGVtZW50OjpIYXNOb25TdWJqZWN0OworICAgIH07CisKICAgICBhdXRvIGFkZEhhc0ludmFs
aWRhdGlvbiA9IFsmXShjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGludmFsaWRh
dGlvblJ1bGVTZXRzKSAgewogICAgICAgICBpZiAoIWludmFsaWRhdGlvblJ1bGVTZXRzKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBmb3IgKGF1dG8mIGludmFsaWRhdGlvblJ1bGVTZXQg
OiAqaW52YWxpZGF0aW9uUnVsZVNldHMpIHsKLSAgICAgICAgICAgIGlmICghaXNIYXNQc2V1ZG9D
bGFzc01hdGNoRWxlbWVudChpbnZhbGlkYXRpb25SdWxlU2V0Lm1hdGNoRWxlbWVudCkpCisgICAg
ICAgICAgICBpZiAoIWNhbkFmZmVjdEFuY2VzdG9ycyhpbnZhbGlkYXRpb25SdWxlU2V0Lm1hdGNo
RWxlbWVudCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAoaXNE
ZXNjZW5kYW50KSB7Ci0gICAgICAgICAgICAgICAgLy8gRWxlbWVudHMgZGVlcGVyIGluIHRoZSB0
cmVlIGNhbid0IGFmZmVjdCBhbnl0aGluZyBleGNlcHQgd2hlbiA6aGFzKCkgc2VsZWN0b3IgdXNl
cyBkZXNjZW5kYW50IGNvbWJpbmF0b3IuCi0gICAgICAgICAgICAgICAgaWYgKGludmFsaWRhdGlv
blJ1bGVTZXQubWF0Y2hFbGVtZW50ICE9IE1hdGNoRWxlbWVudDo6SGFzRGVzY2VuZGFudCAmJiBp
bnZhbGlkYXRpb25SdWxlU2V0Lm1hdGNoRWxlbWVudCAhPSBNYXRjaEVsZW1lbnQ6Okhhc05vblN1
YmplY3QpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQogICAg
ICAgICAgICAgSW52YWxpZGF0b3I6OmFkZFRvTWF0Y2hFbGVtZW50UnVsZVNldHMobWF0Y2hFbGVt
ZW50UnVsZVNldHMsIGludmFsaWRhdGlvblJ1bGVTZXQpOwogICAgICAgICB9CiAgICAgfTsKIAot
ICAgIGF1dG8gdGFnTmFtZSA9IGNoYW5nZWRFbGVtZW50LmxvY2FsTmFtZSgpLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCk7Ci0gICAgYWRkSGFzSW52YWxpZGF0aW9uKHJ1bGVTZXRzLnRhZ0ludmFs
aWRhdGlvblJ1bGVTZXRzKHRhZ05hbWUpKTsKLQotICAgIGlmIChjaGFuZ2VkRWxlbWVudC5oYXNJ
RCgpKQotICAgICAgICBhZGRIYXNJbnZhbGlkYXRpb24ocnVsZVNldHMuaWRJbnZhbGlkYXRpb25S
dWxlU2V0cyhjaGFuZ2VkRWxlbWVudC5pZEZvclN0eWxlUmVzb2x1dGlvbigpKSk7Ci0KLSAgICBp
ZiAoY2hhbmdlZEVsZW1lbnQuaGFzQXR0cmlidXRlcygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYg
YXR0cmlidXRlIDogY2hhbmdlZEVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKLSAgICAg
ICAgICAgIGF1dG8gYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZS5sb2NhbE5hbWUoKS5jb252ZXJ0
VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgICAgICAgICAgYWRkSGFzSW52YWxpZGF0aW9uKHJ1bGVT
ZXRzLmF0dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzKGF0dHJpYnV0ZU5hbWUpKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGlmIChjaGFuZ2VkRWxlbWVudC5oYXNDbGFzcygpKSB7Ci0gICAg
ICAgIGF1dG8gY291bnQgPSBjaGFuZ2VkRWxlbWVudC5jbGFzc05hbWVzKCkuc2l6ZSgpOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIGF1
dG8mIGNsYXNzTmFtZSA9IGNoYW5nZWRFbGVtZW50LmNsYXNzTmFtZXMoKVtpXTsKLSAgICAgICAg
ICAgIGFkZEhhc0ludmFsaWRhdGlvbihydWxlU2V0cy5jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRz
KGNsYXNzTmFtZSkpOwotICAgICAgICB9Ci0gICAgfQorICAgIGZvciAoYXV0byBrZXkgOiBtYWtl
UHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXlzKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hhcywg
Y2hhbmdlZEVsZW1lbnQpKQorICAgICAgICBhZGRIYXNJbnZhbGlkYXRpb24ocnVsZVNldHMuaGFz
UHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhrZXkpKTsKIAogICAgIEludmFsaWRhdG9y
OjppbnZhbGlkYXRlV2l0aE1hdGNoRWxlbWVudFJ1bGVTZXRzKGNoYW5nZWRFbGVtZW50LCBtYXRj
aEVsZW1lbnRSdWxlU2V0cyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Q
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Q
c2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKaW5kZXggNmQxMWRlNmI1NWJlMWRmOGFm
YzhlNGZlZDgwOWRmNjA1NzlhMmNlZC4uZWE5YzhhZGU0ODQ5YzNmMjUxNTYzNDI5MDBhYzY4Mjg4
OTFjNzQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xhc3NDaGFu
Z2VJbnZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogbmFtZXNwYWNlIFN0eWxlIHsKIAotc3RhdGljIFZlY3RvcjxQc2V1ZG9DbGFzc0ludmFs
aWRhdGlvbktleSwgND4gbWFrZVBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5cyhDU1NTZWxlY3Rv
cjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzLCBjb25zdCBFbGVtZW50JiBlbGVtZW50KQor
VmVjdG9yPFBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5LCA0PiBtYWtlUHNldWRvQ2xhc3NJbnZh
bGlkYXRpb25LZXlzKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3MsIGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgVmVjdG9yPFBzZXVkb0NsYXNzSW52YWxpZGF0
aW9uS2V5LCA0PiBrZXlzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1
ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRv
Q2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uaAppbmRleCA5Yzk0MWM3YTIxNmExNDkwYmRmNmJmNjJi
ZTk2Y2EwMWQyMjUwNzg4Li5lNzAwNDgxN2Y4OTE5YTRiMmM1NTY5ZmU2NTNjYmNmZGMwNmQ5MDI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFs
aWRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52
YWxpZGF0aW9uLmgKQEAgLTUzLDYgKzUzLDggQEAgcHJpdmF0ZToKICAgICBJbnZhbGlkYXRvcjo6
TWF0Y2hFbGVtZW50UnVsZVNldHMgbV9hZnRlckNoYW5nZVJ1bGVTZXRzOwogfTsKIAorVmVjdG9y
PFBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5LCA0PiBtYWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRp
b25LZXlzKENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIGNvbnN0IEVsZW1lbnQmKTsKKwog
aW5saW5lIHZvaWQgZW1wbGFjZShzdGQ6Om9wdGlvbmFsPFBzZXVkb0NsYXNzQ2hhbmdlSW52YWxp
ZGF0aW9uPiYgaW52YWxpZGF0aW9uLCBFbGVtZW50JiBlbGVtZW50LCBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8c3RkOjpwYWlyPENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIGJvb2w+PiBwc2V1
ZG9DbGFzc2VzKQogewogICAgIGludmFsaWRhdGlvbi5lbXBsYWNlKGVsZW1lbnQsIHBzZXVkb0Ns
YXNzZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuY3BwCmluZGV4IDEyZTBlZDQxMTFk
MGUwZDYyODYyZTg3YTBlZjNmYzc3NTI3MmIwNmIuLjZiYzkyMmFiNGE2NmI0OGU0MWE2NDM0NmU4
MmVmYzc2NDQ3MmM0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0
dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKQEAgLTIx
NiwxMyArMjE2LDEwIEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29sbGVjdEZl
YXR1cmVzRnJvbVNlbGVjdG9yKFNlbGVjdG9yRmVhdHVyZXMmIHNlCiAgICAgICAgICAgICBpZiAo
bWF0Y2hFbGVtZW50ID09IE1hdGNoRWxlbWVudDo6UGFyZW50IHx8IG1hdGNoRWxlbWVudCA9PSBN
YXRjaEVsZW1lbnQ6OkFuY2VzdG9yKQogICAgICAgICAgICAgICAgIGlkc01hdGNoaW5nQW5jZXN0
b3JzSW5SdWxlcy5hZGQoc2VsZWN0b3ItPnZhbHVlKCkpOwogICAgICAgICAgICAgZWxzZSBpZiAo
aXNIYXNQc2V1ZG9DbGFzc01hdGNoRWxlbWVudChtYXRjaEVsZW1lbnQpKQotICAgICAgICAgICAg
ICAgIHNlbGVjdG9yRmVhdHVyZXMuaWRzLmFwcGVuZCh7IHNlbGVjdG9yLT52YWx1ZSgpLCBtYXRj
aEVsZW1lbnQsIGlzTmVnYXRpb24gfSk7CisgICAgICAgICAgICAgICAgc2VsZWN0b3JGZWF0dXJl
cy5pZHMuYXBwZW5kKHsgc2VsZWN0b3IsIG1hdGNoRWxlbWVudCwgaXNOZWdhdGlvbiB9KTsKICAg
ICAgICAgfSBlbHNlIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3Mp
Ci0gICAgICAgICAgICBzZWxlY3RvckZlYXR1cmVzLmNsYXNzZXMuYXBwZW5kKHsgc2VsZWN0b3It
PnZhbHVlKCksIG1hdGNoRWxlbWVudCwgaXNOZWdhdGlvbiB9KTsKLSAgICAgICAgZWxzZSBpZiAo
c2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlRhZykgewotICAgICAgICAgICAgaWYg
KGlzSGFzUHNldWRvQ2xhc3NNYXRjaEVsZW1lbnQobWF0Y2hFbGVtZW50KSkKLSAgICAgICAgICAg
ICAgICBzZWxlY3RvckZlYXR1cmVzLnRhZ3MuYXBwZW5kKHsgc2VsZWN0b3ItPnRhZ0xvd2VyY2Fz
ZUxvY2FsTmFtZSgpLCBtYXRjaEVsZW1lbnQsIGlzTmVnYXRpb24gfSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoc2VsZWN0b3ItPmlzQXR0cmlidXRlU2VsZWN0b3IoKSkgeworICAgICAgICAgICAgc2Vs
ZWN0b3JGZWF0dXJlcy5jbGFzc2VzLmFwcGVuZCh7IHNlbGVjdG9yLCBtYXRjaEVsZW1lbnQsIGlz
TmVnYXRpb24gfSk7CisgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yLT5pc0F0dHJpYnV0ZVNlbGVj
dG9yKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGNhbm9uaWNhbExvY2FsTmFtZSA9IHNlbGVjdG9y
LT5hdHRyaWJ1dGVDYW5vbmljYWxMb2NhbE5hbWUoKTsKICAgICAgICAgICAgIGF1dG8mIGxvY2Fs
TmFtZSA9IHNlbGVjdG9yLT5hdHRyaWJ1dGUoKS5sb2NhbE5hbWUoKTsKICAgICAgICAgICAgIGF0
dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZXNJblJ1bGVzLmFkZChjYW5vbmljYWxMb2NhbE5hbWUp
OwpAQCAtMjU3LDYgKzI1NCw5IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnJlY3Vyc2l2ZWx5Q29s
bGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKFNlbGVjdG9yRmVhdHVyZXMmIHNlCiAgICAgICAgICAg
ICAgICAgaWYgKCFzZWxlY3RvckZlYXR1cmVzLmhhc1NpYmxpbmdTZWxlY3RvciAmJiBzZWxlY3Rv
ci0+aXNTaWJsaW5nU2VsZWN0b3IoKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JGZWF0
dXJlcy5oYXNTaWJsaW5nU2VsZWN0b3IgPSB0cnVlOwogICAgICAgICAgICAgICAgIHJlY3Vyc2l2
ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKHNlbGVjdG9yRmVhdHVyZXMsICpzdWJTZWxl
Y3Rvciwgc3ViU2VsZWN0b3JNYXRjaEVsZW1lbnQsIHN1YlNlbGVjdG9ySXNOZWdhdGlvbik7CisK
KyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoKCkgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzICYmIHNlbGVjdG9yLT5wc2V1ZG9DbGFzc1R5cGUoKSA9PSBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NIYXMpCisgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yRmVhdHVyZXMuaGFz
UHNldWRvQ2xhc3Nlcy5hcHBlbmQoeyBzdWJTZWxlY3Rvciwgc3ViU2VsZWN0b3JNYXRjaEVsZW1l
bnQsIGlzTmVnYXRpb24gfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjc2LDEy
ICsyNzYsOCBAQCBQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleSBtYWtlUHNldWRvQ2xhc3NJbnZh
bGlkYXRpb25LZXkoQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYQogICAgIH07CiB9OwogCi1zdGF0aWMg
UHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXkgbWFrZVBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5
KGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikKK3N0YXRpYyBQc2V1ZG9DbGFzc0ludmFsaWRh
dGlvbktleSBtYWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXkoQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5cGUsIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcikK
IHsKLSAgICBBU1NFUlQoc2VsZWN0b3IubWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3MpOwotCi0gICAgYXV0byBwc2V1ZG9DbGFzc1R5cGUgPSBzZWxlY3Rvci5wc2V1ZG9DbGFzc1R5
cGUoKTsKLQogICAgIEF0b21TdHJpbmcgY2xhc3NOYW1lOwogICAgIEF0b21TdHJpbmcgdGFnTmFt
ZTsKICAgICBmb3IgKGF1dG8qIHNpbXBsZVNlbGVjdG9yID0gc2VsZWN0b3IuZmlyc3RJbkNvbXBv
dW5kKCk7IHNpbXBsZVNlbGVjdG9yOyBzaW1wbGVTZWxlY3RvciA9IHNpbXBsZVNlbGVjdG9yLT50
YWdIaXN0b3J5KCkpIHsKQEAgLTMwMyw3ICsyOTksNyBAQCBzdGF0aWMgUHNldWRvQ2xhc3NJbnZh
bGlkYXRpb25LZXkgbWFrZVBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5KGNvbnN0IENTU1NlbGVj
dAogICAgIGlmICghdGFnTmFtZS5pc0VtcHR5KCkgJiYgdGFnTmFtZSAhPSBzdGFyQXRvbSgpKQog
ICAgICAgICByZXR1cm4gbWFrZVBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5KHBzZXVkb0NsYXNz
VHlwZSwgSW52YWxpZGF0aW9uS2V5VHlwZTo6VGFnLCB0YWdOYW1lKTsKIAotICAgIHJldHVybiBt
YWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXkoc2VsZWN0b3IucHNldWRvQ2xhc3NUeXBlKCks
IEludmFsaWRhdGlvbktleVR5cGU6OlVuaXZlcnNhbCk7CisgICAgcmV0dXJuIG1ha2VQc2V1ZG9D
bGFzc0ludmFsaWRhdGlvbktleShwc2V1ZG9DbGFzc1R5cGUsIEludmFsaWRhdGlvbktleVR5cGU6
OlVuaXZlcnNhbCk7CiB9OwogCiB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMo
Y29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQpAQCAtMzE3LDcgKzMxMyw5IEBAIHZvaWQgUnVsZUZl
YXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCiAKICAg
ICBhdXRvIGFkZFRvTWFwID0gWyZdKGF1dG8mIG1hcCwgYXV0byYgZW50cmllcywgYXV0byBob3N0
QWZmZWN0aW5nTmFtZXMpIHsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IGVudHJpZXMpIHsK
LSAgICAgICAgICAgIGF1dG8mIFtuYW1lLCBtYXRjaEVsZW1lbnQsIGlzTmVnYXRpb25dID0gZW50
cnk7CisgICAgICAgICAgICBhdXRvJiBbc2VsZWN0b3IsIG1hdGNoRWxlbWVudCwgaXNOZWdhdGlv
bl0gPSBlbnRyeTsKKyAgICAgICAgICAgIGF1dG8gbmFtZSA9IHNlbGVjdG9yLT5tYXRjaCgpID09
IENTU1NlbGVjdG9yOjpUYWcgPyBzZWxlY3Rvci0+dGFnTG93ZXJjYXNlTG9jYWxOYW1lKCkgOiBz
ZWxlY3Rvci0+dmFsdWUoKTsKKwogICAgICAgICAgICAgbWFwLmVuc3VyZShuYW1lLCBbXSB7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8UnVsZUZlYXR1cmVWZWN0b3I+KCk7CiAg
ICAgICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZCh7IHJ1bGVEYXRhLCBtYXRjaEVs
ZW1lbnQsIGlzTmVnYXRpb24gfSk7CkBAIC0zMzEsNyArMzI5LDYgQEAgdm9pZCBSdWxlRmVhdHVy
ZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKICAgICAgICAg
fQogICAgIH07CiAKLSAgICBhZGRUb01hcCh0YWdSdWxlcywgc2VsZWN0b3JGZWF0dXJlcy50YWdz
LCBudWxscHRyKTsKICAgICBhZGRUb01hcChpZFJ1bGVzLCBzZWxlY3RvckZlYXR1cmVzLmlkcywg
bnVsbHB0cik7CiAgICAgYWRkVG9NYXAoY2xhc3NSdWxlcywgc2VsZWN0b3JGZWF0dXJlcy5jbGFz
c2VzLCAmY2xhc3Nlc0FmZmVjdGluZ0hvc3QpOwogCkBAIC0zNDcsNyArMzQ0LDcgQEAgdm9pZCBS
dWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkK
IAogICAgIGZvciAoYXV0byYgZW50cnkgOiBzZWxlY3RvckZlYXR1cmVzLnBzZXVkb0NsYXNzZXMp
IHsKICAgICAgICAgYXV0byBbc2VsZWN0b3IsIG1hdGNoRWxlbWVudCwgaXNOZWdhdGlvbl0gPSBl
bnRyeTsKLSAgICAgICAgcHNldWRvQ2xhc3NSdWxlcy5lbnN1cmUobWFrZVBzZXVkb0NsYXNzSW52
YWxpZGF0aW9uS2V5KCpzZWxlY3RvciksIFtdIHsKKyAgICAgICAgcHNldWRvQ2xhc3NSdWxlcy5l
bnN1cmUobWFrZVBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5KHNlbGVjdG9yLT5wc2V1ZG9DbGFz
c1R5cGUoKSwgKnNlbGVjdG9yKSwgW10gewogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8
VmVjdG9yPFJ1bGVGZWF0dXJlPj4oKTsKICAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVlLT5hcHBl
bmQoeyBydWxlRGF0YSwgbWF0Y2hFbGVtZW50LCBpc05lZ2F0aW9uIH0pOwogCkBAIC0zNTcsNiAr
MzU0LDE2IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlcyhjb25zdCBSdWxl
RGF0YSYgcnVsZURhdGEpCiAKICAgICAgICAgc2V0VXNlc01hdGNoRWxlbWVudChtYXRjaEVsZW1l
bnQpOwogICAgIH0KKworICAgIGZvciAoYXV0byYgZW50cnkgOiBzZWxlY3RvckZlYXR1cmVzLmhh
c1BzZXVkb0NsYXNzZXMpIHsKKyAgICAgICAgYXV0byBbc2VsZWN0b3IsIG1hdGNoRWxlbWVudCwg
aXNOZWdhdGlvbl0gPSBlbnRyeTsKKyAgICAgICAgLy8gVGhlIHNlbGVjdG9yIGFyZ3VtZW50IHBv
aW50cyB0byBhIHNlbGVjdG9yIGluc2lkZSA6aGFzKCkgc2VsZWN0b3IgbGlzdCBpbnN0ZWFkIG9m
IDpoYXMoKSBpdHNlbGYuCisgICAgICAgIGhhc1BzZXVkb0NsYXNzUnVsZXMuZW5zdXJlKG1ha2VQ
c2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleShDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NIYXMsICpz
ZWxlY3RvciksIFtdIHsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPFZlY3RvcjxSdWxl
RmVhdHVyZVdpdGhJbnZhbGlkYXRpb25TZWxlY3Rvcj4+KCk7CisgICAgICAgIH0pLml0ZXJhdG9y
LT52YWx1ZS0+YXBwZW5kKHsgcnVsZURhdGEsIG1hdGNoRWxlbWVudCwgaXNOZWdhdGlvbiwgc2Vs
ZWN0b3IgfSk7CisKKyAgICAgICAgc2V0VXNlc01hdGNoRWxlbWVudChtYXRjaEVsZW1lbnQpOwor
ICAgIH0KIH0KIAogdm9pZCBSdWxlRmVhdHVyZVNldDo6YWRkKGNvbnN0IFJ1bGVGZWF0dXJlU2V0
JiBvdGhlcikKQEAgLTM3Nyw3ICszODQsNiBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29u
c3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogICAgICAgICB9CiAgICAgfTsKIAotICAgIGFkZE1h
cCh0YWdSdWxlcywgb3RoZXIudGFnUnVsZXMpOwogICAgIGFkZE1hcChpZFJ1bGVzLCBvdGhlci5p
ZFJ1bGVzKTsKIAogICAgIGFkZE1hcChjbGFzc1J1bGVzLCBvdGhlci5jbGFzc1J1bGVzKTsKQEAg
LTM5MCw2ICszOTYsOCBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1
cmVTZXQmIG90aGVyKQogICAgIHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0LmFkZChvdGhlci5w
c2V1ZG9DbGFzc2VzQWZmZWN0aW5nSG9zdC5iZWdpbigpLCBvdGhlci5wc2V1ZG9DbGFzc2VzQWZm
ZWN0aW5nSG9zdC5lbmQoKSk7CiAgICAgcHNldWRvQ2xhc3NUeXBlcy5hZGQob3RoZXIucHNldWRv
Q2xhc3NUeXBlcy5iZWdpbigpLCBvdGhlci5wc2V1ZG9DbGFzc1R5cGVzLmVuZCgpKTsKIAorICAg
IGFkZE1hcChoYXNQc2V1ZG9DbGFzc1J1bGVzLCBvdGhlci5oYXNQc2V1ZG9DbGFzc1J1bGVzKTsK
KwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdXNlZE1hdGNoRWxlbWVudHMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIHVzZWRNYXRjaEVsZW1lbnRzW2ldID0gdXNlZE1hdGNoRWxlbWVudHNbaV0g
fHwgb3RoZXIudXNlZE1hdGNoRWxlbWVudHNbaV07CiAKQEAgLTQxMyw5ICs0MjEsOSBAQCB2b2lk
IFJ1bGVGZWF0dXJlU2V0OjpjbGVhcigpCiAgICAgY29udGVudEF0dHJpYnV0ZU5hbWVzSW5SdWxl
cy5jbGVhcigpOwogICAgIHNpYmxpbmdSdWxlcy5jbGVhcigpOwogICAgIHVuY29tbW9uQXR0cmli
dXRlUnVsZXMuY2xlYXIoKTsKLSAgICB0YWdSdWxlcy5jbGVhcigpOwogICAgIGlkUnVsZXMuY2xl
YXIoKTsKICAgICBjbGFzc1J1bGVzLmNsZWFyKCk7CisgICAgaGFzUHNldWRvQ2xhc3NSdWxlcy5j
bGVhcigpOwogICAgIGNsYXNzZXNBZmZlY3RpbmdIb3N0LmNsZWFyKCk7CiAgICAgYXR0cmlidXRl
UnVsZXMuY2xlYXIoKTsKICAgICBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdC5jbGVhcigpOwpAQCAt
NDMwLDggKzQzOCw2IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OnNocmlua1RvRml0KCkKIHsKICAg
ICBzaWJsaW5nUnVsZXMuc2hyaW5rVG9GaXQoKTsKICAgICB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVz
LnNocmlua1RvRml0KCk7Ci0gICAgZm9yIChhdXRvJiBydWxlcyA6IHRhZ1J1bGVzLnZhbHVlcygp
KQotICAgICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGVzIDog
aWRSdWxlcy52YWx1ZXMoKSkKICAgICAgICAgcnVsZXMtPnNocmlua1RvRml0KCk7CiAgICAgZm9y
IChhdXRvJiBydWxlcyA6IGNsYXNzUnVsZXMudmFsdWVzKCkpCkBAIC00NDAsNiArNDQ2LDggQEAg
dm9pZCBSdWxlRmVhdHVyZVNldDo6c2hyaW5rVG9GaXQoKQogICAgICAgICBydWxlcy0+c2hyaW5r
VG9GaXQoKTsKICAgICBmb3IgKGF1dG8mIHJ1bGVzIDogcHNldWRvQ2xhc3NSdWxlcy52YWx1ZXMo
KSkKICAgICAgICAgcnVsZXMtPnNocmlua1RvRml0KCk7CisgICAgZm9yIChhdXRvJiBydWxlcyA6
IGhhc1BzZXVkb0NsYXNzUnVsZXMudmFsdWVzKCkpCisgICAgICAgIHJ1bGVzLT5zaHJpbmtUb0Zp
dCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBTdHlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvUnVsZUZlYXR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJl
LmgKaW5kZXggZDg0MDZmODhkNDYyZTU2NGRjYTQxMzE2N2EzNDg0OTNjZDA1ZTYzZS4uOWE3NmVm
ZjI0ZjU4OWY4NTFiMGFmNTRkNDIxNzYzOWExNTRlZTRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxl
RmVhdHVyZS5oCkBAIC0xMDUsMTEgKzEwNSwxMiBAQCBzdHJ1Y3QgUnVsZUZlYXR1cmVTZXQgewog
ICAgIFZlY3RvcjxSdWxlQW5kU2VsZWN0b3I+IHNpYmxpbmdSdWxlczsKICAgICBWZWN0b3I8UnVs
ZUFuZFNlbGVjdG9yPiB1bmNvbW1vbkF0dHJpYnV0ZVJ1bGVzOwogCi0gICAgSGFzaE1hcDxBdG9t
U3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZUZlYXR1cmVWZWN0b3I+PiB0YWdSdWxlczsKICAg
ICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxSdWxlRmVhdHVyZVZlY3Rvcj4+
IGlkUnVsZXM7CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8UnVsZUZl
YXR1cmVWZWN0b3I+PiBjbGFzc1J1bGVzOwogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxSdWxlRmVhdHVyZVdpdGhJbnZhbGlkYXRpb25TZWxlY3Rvcj4+PiBh
dHRyaWJ1dGVSdWxlczsKICAgICBIYXNoTWFwPFBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5LCBz
dGQ6OnVuaXF1ZV9wdHI8UnVsZUZlYXR1cmVWZWN0b3I+PiBwc2V1ZG9DbGFzc1J1bGVzOworICAg
IEhhc2hNYXA8UHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXksIHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8UnVsZUZlYXR1cmVXaXRoSW52YWxpZGF0aW9uU2VsZWN0b3I+Pj4gaGFzUHNldWRvQ2xhc3NS
dWxlczsKKwogICAgIEhhc2hTZXQ8QXRvbVN0cmluZz4gY2xhc3Nlc0FmZmVjdGluZ0hvc3Q7CiAg
ICAgSGFzaFNldDxBdG9tU3RyaW5nPiBhdHRyaWJ1dGVzQWZmZWN0aW5nSG9zdDsKICAgICBIYXNo
U2V0PENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUsIEludEhhc2g8Q1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzVHlwZT4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8Q1NTU2VsZWN0b3I6OlBz
ZXVkb0NsYXNzVHlwZT4+IHBzZXVkb0NsYXNzZXNBZmZlY3RpbmdIb3N0OwpAQCAtMTIxLDE2ICsx
MjIsMjQgQEAgc3RydWN0IFJ1bGVGZWF0dXJlU2V0IHsKICAgICBib29sIHVzZXNGaXJzdExldHRl
clJ1bGVzIHsgZmFsc2UgfTsKIAogcHJpdmF0ZToKKyAgICBzdHJ1Y3QgSW52YWxpZGF0aW9uRmVh
dHVyZSB7CisgICAgICAgIGNvbnN0IENTU1NlbGVjdG9yJiBzZWxlY3RvcjsKKyAgICAgICAgTWF0
Y2hFbGVtZW50IG1hdGNoRWxlbWVudCA9IE1hdGNoRWxlbWVudDo6U3ViamVjdDsKKyAgICAgICAg
SXNOZWdhdGlvbiBpc05lZ2F0aW9uOworICAgIH07CisKICAgICBzdHJ1Y3QgU2VsZWN0b3JGZWF0
dXJlcyB7CiAgICAgICAgIGJvb2wgaGFzU2libGluZ1NlbGVjdG9yIHsgZmFsc2UgfTsKIAotICAg
ICAgICBWZWN0b3I8c3RkOjp0dXBsZTxBdG9tU3RyaW5nLCBNYXRjaEVsZW1lbnQsIElzTmVnYXRp
b24+LCAzMj4gdGFnczsKLSAgICAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8QXRvbVN0cmluZywgTWF0
Y2hFbGVtZW50LCBJc05lZ2F0aW9uPiwgMzI+IGlkczsKLSAgICAgICAgVmVjdG9yPHN0ZDo6dHVw
bGU8QXRvbVN0cmluZywgTWF0Y2hFbGVtZW50LCBJc05lZ2F0aW9uPiwgMzI+IGNsYXNzZXM7Ci0g
ICAgICAgIFZlY3RvcjxzdGQ6OnR1cGxlPGNvbnN0IENTU1NlbGVjdG9yKiwgTWF0Y2hFbGVtZW50
LCBJc05lZ2F0aW9uPiwgMzI+IGF0dHJpYnV0ZXM7Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnR1cGxl
PGNvbnN0IENTU1NlbGVjdG9yKiwgTWF0Y2hFbGVtZW50LCBJc05lZ2F0aW9uPiwgMzI+IHBzZXVk
b0NsYXNzZXM7CisgICAgICAgIHVzaW5nIEludmFsaWRhdGlvbkZlYXR1cmUgPSBzdGQ6OnR1cGxl
PGNvbnN0IENTU1NlbGVjdG9yKiwgTWF0Y2hFbGVtZW50LCBJc05lZ2F0aW9uPjsKKworICAgICAg
ICBWZWN0b3I8SW52YWxpZGF0aW9uRmVhdHVyZT4gaWRzOworICAgICAgICBWZWN0b3I8SW52YWxp
ZGF0aW9uRmVhdHVyZT4gY2xhc3NlczsKKyAgICAgICAgVmVjdG9yPEludmFsaWRhdGlvbkZlYXR1
cmU+IGF0dHJpYnV0ZXM7CisgICAgICAgIFZlY3RvcjxJbnZhbGlkYXRpb25GZWF0dXJlPiBwc2V1
ZG9DbGFzc2VzOworICAgICAgICBWZWN0b3I8SW52YWxpZGF0aW9uRmVhdHVyZT4gaGFzUHNldWRv
Q2xhc3NlczsKICAgICB9OwotICAgIHZvaWQgcmVjdXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNGcm9t
U2VsZWN0b3IoU2VsZWN0b3JGZWF0dXJlcyYsIGNvbnN0IENTU1NlbGVjdG9yJiwgTWF0Y2hFbGVt
ZW50ID0gTWF0Y2hFbGVtZW50OjpTdWJqZWN0LCBJc05lZ2F0aW9uID0gIElzTmVnYXRpb246Ok5v
KTsKKyAgICB2b2lkIHJlY3Vyc2l2ZWx5Q29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKFNlbGVj
dG9yRmVhdHVyZXMmLCBjb25zdCBDU1NTZWxlY3RvciYsIE1hdGNoRWxlbWVudCA9IE1hdGNoRWxl
bWVudDo6U3ViamVjdCwgSXNOZWdhdGlvbiA9IElzTmVnYXRpb246Ok5vKTsKIH07CiAKIGJvb2wg
aXNIYXNQc2V1ZG9DbGFzc01hdGNoRWxlbWVudChNYXRjaEVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKaW5kZXggNDg0OTc4YzQ3ZjIzYzMwZjk2
OWJiNDVhMWIzZGZkYjZmNzA4M2I0ZS4uOGU4YzkyNTQ0YWExYmRkNzlkNDY1Y2M4NjIwNzBiYTVj
ZDlhMGE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVT
ZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3Bw
CkBAIC0yMjEsMTEgKzIyMSwxMSBAQCB2b2lkIFNjb3BlUnVsZVNldHM6OmNvbGxlY3RGZWF0dXJl
cygpIGNvbnN0CiAgICAgbV9zaWJsaW5nUnVsZVNldCA9IG1ha2VSdWxlU2V0KG1fZmVhdHVyZXMu
c2libGluZ1J1bGVzKTsKICAgICBtX3VuY29tbW9uQXR0cmlidXRlUnVsZVNldCA9IG1ha2VSdWxl
U2V0KG1fZmVhdHVyZXMudW5jb21tb25BdHRyaWJ1dGVSdWxlcyk7CiAKLSAgICBtX3RhZ0ludmFs
aWRhdGlvblJ1bGVTZXRzLmNsZWFyKCk7CiAgICAgbV9pZEludmFsaWRhdGlvblJ1bGVTZXRzLmNs
ZWFyKCk7CiAgICAgbV9jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzLmNsZWFyKCk7CiAgICAgbV9h
dHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0cy5jbGVhcigpOwogICAgIG1fcHNldWRvQ2xhc3NJ
bnZhbGlkYXRpb25SdWxlU2V0cy5jbGVhcigpOworICAgIG1faGFzUHNldWRvQ2xhc3NJbnZhbGlk
YXRpb25SdWxlU2V0cy5jbGVhcigpOwogCiAgICAgbV9jYWNoZWRIYXNDb21wbGV4U2VsZWN0b3Jz
Rm9yU3R5bGVBdHRyaWJ1dGUgPSBzdGQ6Om51bGxvcHQ7CiAKQEAgLTI3MiwxMSArMjcyLDYgQEAg
c3RhdGljIFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogZW5zdXJlSW52YWxpZGF0aW9uUnVs
ZVNldHMoY29uc3QgS2V5VHlwZSYga2UKICAgICB9KS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CiB9
CiAKLWNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogU2NvcGVSdWxlU2V0czo6dGFn
SW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYgdGFnTmFtZSkgY29uc3QKLXsK
LSAgICByZXR1cm4gZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHModGFnTmFtZSwgbV90YWdJbnZh
bGlkYXRpb25SdWxlU2V0cywgbV9mZWF0dXJlcy50YWdSdWxlcyk7Ci19Ci0KIGNvbnN0IFZlY3Rv
cjxJbnZhbGlkYXRpb25SdWxlU2V0PiogU2NvcGVSdWxlU2V0czo6aWRJbnZhbGlkYXRpb25SdWxl
U2V0cyhjb25zdCBBdG9tU3RyaW5nJiBpZCkgY29uc3QKIHsKICAgICByZXR1cm4gZW5zdXJlSW52
YWxpZGF0aW9uUnVsZVNldHMoaWQsIG1faWRJbnZhbGlkYXRpb25SdWxlU2V0cywgbV9mZWF0dXJl
cy5pZFJ1bGVzKTsKQEAgLTI5Nyw2ICsyOTIsMTEgQEAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlv
blJ1bGVTZXQ+KiBTY29wZVJ1bGVTZXRzOjpwc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXQK
ICAgICByZXR1cm4gZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMocHNldWRvQ2xhc3NLZXksIG1f
cHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cywgbV9mZWF0dXJlcy5wc2V1ZG9DbGFzc1J1
bGVzKTsKIH0KIAorY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBTY29wZVJ1bGVT
ZXRzOjpoYXNQc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IFBzZXVkb0NsYXNz
SW52YWxpZGF0aW9uS2V5JiBrZXkpIGNvbnN0Cit7CisgICAgcmV0dXJuIGVuc3VyZUludmFsaWRh
dGlvblJ1bGVTZXRzKGtleSwgbV9oYXNQc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzLCBt
X2ZlYXR1cmVzLmhhc1BzZXVkb0NsYXNzUnVsZXMpOworfQorCiBib29sIFNjb3BlUnVsZVNldHM6
Omhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0CiB7CiAgICAgYXV0
byBjb21wdXRlID0gWyZdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
U2NvcGVSdWxlU2V0cy5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRz
LmgKaW5kZXggOTgxOGI4NGM0YTBiN2U5ZjY3OGNmZDViOTM4MGViYmRjYTViNDVlZS4uNmJkOTE5
OGU2ZGFjZWRjYTQ3YmQ3OTMyZGJhMzU1ZTk0NjUwNTM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmgKQEAgLTYyLDEzICs2MiwxMSBAQCBwdWJsaWM6CiAgICAg
UnVsZVNldCogc2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fc2libGluZ1J1bGVTZXQuZ2V0KCk7
IH0KICAgICBSdWxlU2V0KiB1bmNvbW1vbkF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5j
b21tb25BdHRyaWJ1dGVSdWxlU2V0LmdldCgpOyB9CiAKLSAgICBjb25zdCBWZWN0b3I8SW52YWxp
ZGF0aW9uUnVsZVNldD4qIHRhZ0ludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcm
KSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGlkSW52YWxp
ZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogICAgIGNvbnN0IFZlY3Rv
cjxJbnZhbGlkYXRpb25SdWxlU2V0PiogY2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBB
dG9tU3RyaW5nJikgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
KiBhdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7
CiAgICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBwc2V1ZG9DbGFzc0ludmFs
aWRhdGlvblJ1bGVTZXRzKGNvbnN0IFBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5JikgY29uc3Q7
Ci0KLSAgICBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGludmFsaWRhdGlvblJ1
bGVTZXRzRm9yQ2hpbGRDaGFuZ2UoY29uc3QgRWxlbWVudCYpOworICAgIGNvbnN0IFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0PiogaGFzUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0cyhj
b25zdCBQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleSYpIGNvbnN0OwogCiAgICAgYm9vbCBoYXND
b21wbGV4U2VsZWN0b3JzRm9yU3R5bGVBdHRyaWJ1dGUoKSBjb25zdDsKIApAQCAtMTAxLDExICs5
OSwxMSBAQCBwcml2YXRlOgogICAgIG11dGFibGUgUnVsZUZlYXR1cmVTZXQgbV9mZWF0dXJlczsK
ICAgICBtdXRhYmxlIFJlZlB0cjxSdWxlU2V0PiBtX3NpYmxpbmdSdWxlU2V0OwogICAgIG11dGFi
bGUgUmVmUHRyPFJ1bGVTZXQ+IG1fdW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0OwotICAgIG11dGFi
bGUgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlv
blJ1bGVTZXQ+Pj4gbV90YWdJbnZhbGlkYXRpb25SdWxlU2V0czsKICAgICBtdXRhYmxlIEhhc2hN
YXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0
Pj4+IG1faWRJbnZhbGlkYXRpb25SdWxlU2V0czsKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0
cmluZywgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fY2xh
c3NJbnZhbGlkYXRpb25SdWxlU2V0czsKICAgICBtdXRhYmxlIEhhc2hNYXA8QXRvbVN0cmluZywg
c3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0Pj4+IG1fYXR0cmlidXRl
SW52YWxpZGF0aW9uUnVsZVNldHM7CiAgICAgbXV0YWJsZSBIYXNoTWFwPFBzZXVkb0NsYXNzSW52
YWxpZGF0aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
Pj4gbV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzOworICAgIG11dGFibGUgSGFzaE1h
cDxQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxJbnZh
bGlkYXRpb25SdWxlU2V0Pj4+IG1faGFzUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25SdWxlU2V0czsK
IAogICAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxib29sPiBtX2NhY2hlZEhhc0NvbXBsZXhTZWxl
Y3RvcnNGb3JTdHlsZUF0dHJpYnV0ZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448934</attachid>
            <date>2022-01-12 05:10:57 -0800</date>
            <delta_ts>2022-01-12 23:32:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235103-20220112151055.patch</filename>
            <type>text/plain</type>
            <size>20467</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3ODMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y5M2U5NjE0MDJmOWVj
MmQ3NjVkY2YxODZhNjNiOTY4NWMyZmU4Ny4uOWYyMGRjY2MzOGU1MzRhNDM3MDI4NDI1MTVhYjg0
NzlkMTE5N2U5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDIyLTAxLTEyICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBbOmhhcygpIHBzZXVkby1j
bGFzc10gQ29sbGVjdCBpbnZhbGlkYXRpb24gc2VsZWN0b3JzIGZvciBjaGlsZCBpbnZhbGlkYXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNTEw
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbGxl
Y3Qgc2VsZWN0b3JzIHdlIGNhbiB1c2UgdG8gdGVzdCBpZiA6aGFzIHN0YXR1cyBhY3R1YWxseSBj
aGFuZ2VkIGJlZm9yZSBpbnZhbGlkYXRpbmcuCisKKyAgICAgICAgVGhpcyBwYXRjaCBkb2Vzbid0
IHlldCB1c2UgdGhlIHRoZSBzZWxlY3Rvci4KKworICAgICAgICAqIHN0eWxlL0NoaWxkQ2hhbmdl
SW52YWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpDaGlsZENoYW5nZUlu
dmFsaWRhdGlvbjo6aW52YWxpZGF0ZUZvckNoYW5nZWRFbGVtZW50KToKKworICAgICAgICBVc2Ug
dGhlIHBzZXVkbyBjbGFzcyBpbnZhbGlkYXRpb24ga2V5cyBmb3IgbG9va2luZyB1cCA6aGFzIHNl
bGVjdG9ycyB0b28KKyAgICAgICAgaW5zdGVhZCBvZiBoYXZpbmcgYSBjdXN0b20gbWVjaGFuaXNt
IGZvciBkb2luZyB0aGUgc2FtZSB0aGluZy4KKworICAgICAgICAqIHN0eWxlL1BzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjptYWtlUHNl
dWRvQ2xhc3NJbnZhbGlkYXRpb25LZXlzKToKKyAgICAgICAgKiBzdHlsZS9Qc2V1ZG9DbGFzc0No
YW5nZUludmFsaWRhdGlvbi5oOgorICAgICAgICAqIHN0eWxlL1J1bGVGZWF0dXJlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpSdWxlRmVhdHVyZVNldDo6cmVjdXJzaXZlbHlDb2xsZWN0
RmVhdHVyZXNGcm9tU2VsZWN0b3IpOgorCisgICAgICAgIEFsd2F5cyByZXR1cm4gYSBzZWxlY3Rv
ciBmb3IgY29uc2lzdGVuY3kuCisKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjptYWtlUHNldWRv
Q2xhc3NJbnZhbGlkYXRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0
dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVG
ZWF0dXJlU2V0OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlJ1bGVGZWF0dXJlU2V0
OjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6UnVsZUZlYXR1cmVTZXQ6OnNocmlu
a1RvRml0KToKKyAgICAgICAgKiBzdHlsZS9SdWxlRmVhdHVyZS5oOgorICAgICAgICAqIHN0eWxl
L1N0eWxlU2NvcGVSdWxlU2V0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6U2NvcGVS
dWxlU2V0czo6Y29sbGVjdEZlYXR1cmVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
OjpTY29wZVJ1bGVTZXRzOjpoYXNQc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpTY29wZVJ1bGVTZXRzOjp0YWdJbnZhbGlkYXRp
b25SdWxlU2V0cyBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgV2UgZG9uJ3QgbmVlZCBrZWVw
IGFyb3VuZCB0YWcgcnVsZSBzZXRzIGFueW1vcmUuCisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVNj
b3BlUnVsZVNldHMuaDoKKwogMjAyMi0wMS0wOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHN1cHBvcnQgZm9yIERpcmVjdDJEIC8gRlRXCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9DaGlsZENoYW5nZUludmFsaWRhdGlvbi5jcHAKaW5kZXggNmY4
MDM1MDEyNWEzOTdhMWQ2MzI3NjkwMmVmOTJjNGY4NGFjMGU2ZC4uZTM2NmI2NGE5MTVhN2Q4ZjQy
YjZlMWRkMDdkNmE0MGYwYThiZTkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
Q2hpbGRDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0No
aWxkQ2hhbmdlSW52YWxpZGF0aW9uLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAi
RWxlbWVudFRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgorI2luY2x1
ZGUgIlBzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgogI2luY2x1ZGUgIlNsb3RBc3NpZ25tZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZl
ci5oIgpAQCAtNDQsNDEgKzQ1LDI2IEBAIHZvaWQgQ2hpbGRDaGFuZ2VJbnZhbGlkYXRpb246Omlu
dmFsaWRhdGVGb3JDaGFuZ2VkRWxlbWVudChFbGVtZW50JiBjaGFuZ2VkRWxlbWVuCiAKICAgICBi
b29sIGlzRGVzY2VuZGFudCA9IGNoYW5nZWRFbGVtZW50LnBhcmVudEVsZW1lbnQoKSAhPSAmcGFy
ZW50RWxlbWVudCgpOwogCisgICAgYXV0byBjYW5BZmZlY3RBbmNlc3RvcnMgPSBbJl0oTWF0Y2hF
bGVtZW50IG1hdGNoRWxlbWVudCkgeworICAgICAgICBpZiAoIWlzRGVzY2VuZGFudCkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gbWF0Y2hFbGVtZW50ID09IE1hdGNo
RWxlbWVudDo6SGFzRGVzY2VuZGFudAorICAgICAgICAgICAgfHwgbWF0Y2hFbGVtZW50ID09IE1h
dGNoRWxlbWVudDo6SGFzU2libGluZ0Rlc2NlbmRhbnQKKyAgICAgICAgICAgIHx8IG1hdGNoRWxl
bWVudCA9PSBNYXRjaEVsZW1lbnQ6Okhhc05vblN1YmplY3Q7CisgICAgfTsKKwogICAgIGF1dG8g
YWRkSGFzSW52YWxpZGF0aW9uID0gWyZdKGNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0
PiogaW52YWxpZGF0aW9uUnVsZVNldHMpICB7CiAgICAgICAgIGlmICghaW52YWxpZGF0aW9uUnVs
ZVNldHMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGZvciAoYXV0byYgaW52YWxpZGF0
aW9uUnVsZVNldCA6ICppbnZhbGlkYXRpb25SdWxlU2V0cykgewotICAgICAgICAgICAgaWYgKCFp
c0hhc1BzZXVkb0NsYXNzTWF0Y2hFbGVtZW50KGludmFsaWRhdGlvblJ1bGVTZXQubWF0Y2hFbGVt
ZW50KSkKKyAgICAgICAgICAgIGlmICghY2FuQWZmZWN0QW5jZXN0b3JzKGludmFsaWRhdGlvblJ1
bGVTZXQubWF0Y2hFbGVtZW50KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
ICAgIGlmIChpc0Rlc2NlbmRhbnQpIHsKLSAgICAgICAgICAgICAgICAvLyBFbGVtZW50cyBkZWVw
ZXIgaW4gdGhlIHRyZWUgY2FuJ3QgYWZmZWN0IGFueXRoaW5nIGV4Y2VwdCB3aGVuIDpoYXMoKSBz
ZWxlY3RvciB1c2VzIGRlc2NlbmRhbnQgY29tYmluYXRvci4KLSAgICAgICAgICAgICAgICBpZiAo
aW52YWxpZGF0aW9uUnVsZVNldC5tYXRjaEVsZW1lbnQgIT0gTWF0Y2hFbGVtZW50OjpIYXNEZXNj
ZW5kYW50ICYmIGludmFsaWRhdGlvblJ1bGVTZXQubWF0Y2hFbGVtZW50ICE9IE1hdGNoRWxlbWVu
dDo6SGFzTm9uU3ViamVjdCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICB9CiAgICAgICAgICAgICBJbnZhbGlkYXRvcjo6YWRkVG9NYXRjaEVsZW1lbnRSdWxlU2V0
cyhtYXRjaEVsZW1lbnRSdWxlU2V0cywgaW52YWxpZGF0aW9uUnVsZVNldCk7CiAgICAgICAgIH0K
ICAgICB9OwogCi0gICAgYXV0byB0YWdOYW1lID0gY2hhbmdlZEVsZW1lbnQubG9jYWxOYW1lKCku
Y29udmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICBhZGRIYXNJbnZhbGlkYXRpb24ocnVsZVNl
dHMudGFnSW52YWxpZGF0aW9uUnVsZVNldHModGFnTmFtZSkpOwotCi0gICAgaWYgKGNoYW5nZWRF
bGVtZW50Lmhhc0lEKCkpCi0gICAgICAgIGFkZEhhc0ludmFsaWRhdGlvbihydWxlU2V0cy5pZElu
dmFsaWRhdGlvblJ1bGVTZXRzKGNoYW5nZWRFbGVtZW50LmlkRm9yU3R5bGVSZXNvbHV0aW9uKCkp
KTsKLQotICAgIGlmIChjaGFuZ2VkRWxlbWVudC5oYXNBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAg
Zm9yIChhdXRvJiBhdHRyaWJ1dGUgOiBjaGFuZ2VkRWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0b3Io
KSkgewotICAgICAgICAgICAgYXV0byBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLmxvY2FsTmFt
ZSgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7Ci0gICAgICAgICAgICBhZGRIYXNJbnZhbGlk
YXRpb24ocnVsZVNldHMuYXR0cmlidXRlSW52YWxpZGF0aW9uUnVsZVNldHMoYXR0cmlidXRlTmFt
ZSkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGNoYW5nZWRFbGVtZW50Lmhhc0NsYXNz
KCkpIHsKLSAgICAgICAgYXV0byBjb3VudCA9IGNoYW5nZWRFbGVtZW50LmNsYXNzTmFtZXMoKS5z
aXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAg
ICAgICAgICAgYXV0byYgY2xhc3NOYW1lID0gY2hhbmdlZEVsZW1lbnQuY2xhc3NOYW1lcygpW2ld
OwotICAgICAgICAgICAgYWRkSGFzSW52YWxpZGF0aW9uKHJ1bGVTZXRzLmNsYXNzSW52YWxpZGF0
aW9uUnVsZVNldHMoY2xhc3NOYW1lKSk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgZm9yIChhdXRv
IGtleSA6IG1ha2VQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleXMoQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzSGFzLCBjaGFuZ2VkRWxlbWVudCkpCisgICAgICAgIGFkZEhhc0ludmFsaWRhdGlvbihy
dWxlU2V0cy5oYXNQc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKGtleSkpOwogCiAgICAg
SW52YWxpZGF0b3I6OmludmFsaWRhdGVXaXRoTWF0Y2hFbGVtZW50UnVsZVNldHMoY2hhbmdlZEVs
ZW1lbnQsIG1hdGNoRWxlbWVudFJ1bGVTZXRzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmNwcAppbmRleCA2ZDExZGU2
YjU1YmUxZGY4YWZjOGU0ZmVkODA5ZGY2MDU3OWEyY2VkLi5lYTljOGFkZTQ4NDljM2YyNTE1NjM0
MjkwMGFjNjgyODg5MWM3NDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Qc2V1
ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
UHNldWRvQ2xhc3NDaGFuZ2VJbnZhbGlkYXRpb24uY3BwCkBAIC0zMiw3ICszMiw3IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgU3R5bGUgewogCi1zdGF0aWMgVmVjdG9yPFBzZXVk
b0NsYXNzSW52YWxpZGF0aW9uS2V5LCA0PiBtYWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXlz
KENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUgcHNldWRvQ2xhc3MsIGNvbnN0IEVsZW1lbnQm
IGVsZW1lbnQpCitWZWN0b3I8UHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXksIDQ+IG1ha2VQc2V1
ZG9DbGFzc0ludmFsaWRhdGlvbktleXMoQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1
ZG9DbGFzcywgY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKICAgICBWZWN0b3I8UHNldWRvQ2xh
c3NJbnZhbGlkYXRpb25LZXksIDQ+IGtleXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1BzZXVkb0NsYXNzQ2hhbmdlSW52YWxpZGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9Qc2V1ZG9DbGFzc0NoYW5nZUludmFsaWRhdGlvbi5oCmluZGV4IDljOTQxYzdhMjE2YTE0
OTBiZGY2YmY2MmJlOTZjYTAxZDIyNTA3ODguLmU3MDA0ODE3Zjg5MTlhNGIyYzU1NjlmZTY1M2Ni
Y2ZkYzA2ZDkwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1BzZXVkb0NsYXNz
Q2hhbmdlSW52YWxpZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUHNldWRvQ2xh
c3NDaGFuZ2VJbnZhbGlkYXRpb24uaApAQCAtNTMsNiArNTMsOCBAQCBwcml2YXRlOgogICAgIElu
dmFsaWRhdG9yOjpNYXRjaEVsZW1lbnRSdWxlU2V0cyBtX2FmdGVyQ2hhbmdlUnVsZVNldHM7CiB9
OwogCitWZWN0b3I8UHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXksIDQ+IG1ha2VQc2V1ZG9DbGFz
c0ludmFsaWRhdGlvbktleXMoQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgY29uc3QgRWxl
bWVudCYpOworCiBpbmxpbmUgdm9pZCBlbXBsYWNlKHN0ZDo6b3B0aW9uYWw8UHNldWRvQ2xhc3ND
aGFuZ2VJbnZhbGlkYXRpb24+JiBpbnZhbGlkYXRpb24sIEVsZW1lbnQmIGVsZW1lbnQsIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwg
Ym9vbD4+IHBzZXVkb0NsYXNzZXMpCiB7CiAgICAgaW52YWxpZGF0aW9uLmVtcGxhY2UoZWxlbWVu
dCwgcHNldWRvQ2xhc3Nlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxl
RmVhdHVyZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9SdWxlRmVhdHVyZS5jcHAKaW5kZXgg
MTJlMGVkNDExMWQwZTBkNjI4NjJlODdhMGVmM2ZjNzc1MjcyYjA2Yi4uYzlhZjdmZTA2NzVkMWM5
OTE4OTk2MTY0ZmQ0ZTliMzBjZmUxOTYwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvUnVsZUZlYXR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJl
LmNwcApAQCAtMjE2LDEzICsyMTYsMTAgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6cmVjdXJzaXZl
bHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoU2VsZWN0b3JGZWF0dXJlcyYgc2UKICAgICAg
ICAgICAgIGlmIChtYXRjaEVsZW1lbnQgPT0gTWF0Y2hFbGVtZW50OjpQYXJlbnQgfHwgbWF0Y2hF
bGVtZW50ID09IE1hdGNoRWxlbWVudDo6QW5jZXN0b3IpCiAgICAgICAgICAgICAgICAgaWRzTWF0
Y2hpbmdBbmNlc3RvcnNJblJ1bGVzLmFkZChzZWxlY3Rvci0+dmFsdWUoKSk7CiAgICAgICAgICAg
ICBlbHNlIGlmIChpc0hhc1BzZXVkb0NsYXNzTWF0Y2hFbGVtZW50KG1hdGNoRWxlbWVudCkpCi0g
ICAgICAgICAgICAgICAgc2VsZWN0b3JGZWF0dXJlcy5pZHMuYXBwZW5kKHsgc2VsZWN0b3ItPnZh
bHVlKCksIG1hdGNoRWxlbWVudCwgaXNOZWdhdGlvbiB9KTsKKyAgICAgICAgICAgICAgICBzZWxl
Y3RvckZlYXR1cmVzLmlkcy5hcHBlbmQoeyBzZWxlY3RvciwgbWF0Y2hFbGVtZW50LCBpc05lZ2F0
aW9uIH0pOwogICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdG9yLT5tYXRjaCgpID09IENTU1NlbGVj
dG9yOjpDbGFzcykKLSAgICAgICAgICAgIHNlbGVjdG9yRmVhdHVyZXMuY2xhc3Nlcy5hcHBlbmQo
eyBzZWxlY3Rvci0+dmFsdWUoKSwgbWF0Y2hFbGVtZW50LCBpc05lZ2F0aW9uIH0pOwotICAgICAg
ICBlbHNlIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NTZWxlY3Rvcjo6VGFnKSB7Ci0gICAg
ICAgICAgICBpZiAoaXNIYXNQc2V1ZG9DbGFzc01hdGNoRWxlbWVudChtYXRjaEVsZW1lbnQpKQot
ICAgICAgICAgICAgICAgIHNlbGVjdG9yRmVhdHVyZXMudGFncy5hcHBlbmQoeyBzZWxlY3Rvci0+
dGFnTG93ZXJjYXNlTG9jYWxOYW1lKCksIG1hdGNoRWxlbWVudCwgaXNOZWdhdGlvbiB9KTsKLSAg
ICAgICAgfSBlbHNlIGlmIChzZWxlY3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7CisgICAg
ICAgICAgICBzZWxlY3RvckZlYXR1cmVzLmNsYXNzZXMuYXBwZW5kKHsgc2VsZWN0b3IsIG1hdGNo
RWxlbWVudCwgaXNOZWdhdGlvbiB9KTsKKyAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3ItPmlzQXR0
cmlidXRlU2VsZWN0b3IoKSkgewogICAgICAgICAgICAgYXV0byYgY2Fub25pY2FsTG9jYWxOYW1l
ID0gc2VsZWN0b3ItPmF0dHJpYnV0ZUNhbm9uaWNhbExvY2FsTmFtZSgpOwogICAgICAgICAgICAg
YXV0byYgbG9jYWxOYW1lID0gc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpOwogICAg
ICAgICAgICAgYXR0cmlidXRlQ2Fub25pY2FsTG9jYWxOYW1lc0luUnVsZXMuYWRkKGNhbm9uaWNh
bExvY2FsTmFtZSk7CkBAIC0yNTcsNiArMjU0LDkgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6cmVj
dXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoU2VsZWN0b3JGZWF0dXJlcyYgc2UK
ICAgICAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yRmVhdHVyZXMuaGFzU2libGluZ1NlbGVjdG9y
ICYmIHNlbGVjdG9yLT5pc1NpYmxpbmdTZWxlY3RvcigpKQogICAgICAgICAgICAgICAgICAgICBz
ZWxlY3RvckZlYXR1cmVzLmhhc1NpYmxpbmdTZWxlY3RvciA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgcmVjdXJzaXZlbHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3Ioc2VsZWN0b3JGZWF0dXJl
cywgKnN1YlNlbGVjdG9yLCBzdWJTZWxlY3Rvck1hdGNoRWxlbWVudCwgc3ViU2VsZWN0b3JJc05l
Z2F0aW9uKTsKKworICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci0+bWF0Y2goKSA9PSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3MgJiYgc2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgpID09IENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hhcykKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JG
ZWF0dXJlcy5oYXNQc2V1ZG9DbGFzc2VzLmFwcGVuZCh7IHN1YlNlbGVjdG9yLCBzdWJTZWxlY3Rv
ck1hdGNoRWxlbWVudCwgaXNOZWdhdGlvbiB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
CkBAIC0yNzYsMTIgKzI3Niw4IEBAIFBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5IG1ha2VQc2V1
ZG9DbGFzc0ludmFsaWRhdGlvbktleShDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhCiAgICAgfTsKIH07
CiAKLXN0YXRpYyBQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleSBtYWtlUHNldWRvQ2xhc3NJbnZh
bGlkYXRpb25LZXkoY29uc3QgQ1NTU2VsZWN0b3ImIHNlbGVjdG9yKQorc3RhdGljIFBzZXVkb0Ns
YXNzSW52YWxpZGF0aW9uS2V5IG1ha2VQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleShDU1NTZWxl
Y3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVkb0NsYXNzVHlwZSwgY29uc3QgQ1NTU2VsZWN0b3Im
IHNlbGVjdG9yKQogewotICAgIEFTU0VSVChzZWxlY3Rvci5tYXRjaCgpID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzcyk7Ci0KLSAgICBhdXRvIHBzZXVkb0NsYXNzVHlwZSA9IHNlbGVjdG9yLnBz
ZXVkb0NsYXNzVHlwZSgpOwotCiAgICAgQXRvbVN0cmluZyBjbGFzc05hbWU7CiAgICAgQXRvbVN0
cmluZyB0YWdOYW1lOwogICAgIGZvciAoYXV0byogc2ltcGxlU2VsZWN0b3IgPSBzZWxlY3Rvci5m
aXJzdEluQ29tcG91bmQoKTsgc2ltcGxlU2VsZWN0b3I7IHNpbXBsZVNlbGVjdG9yID0gc2ltcGxl
U2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgewpAQCAtMzAzLDcgKzI5OSw3IEBAIHN0YXRpYyBQc2V1
ZG9DbGFzc0ludmFsaWRhdGlvbktleSBtYWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXkoY29u
c3QgQ1NTU2VsZWN0CiAgICAgaWYgKCF0YWdOYW1lLmlzRW1wdHkoKSAmJiB0YWdOYW1lICE9IHN0
YXJBdG9tKCkpCiAgICAgICAgIHJldHVybiBtYWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXko
cHNldWRvQ2xhc3NUeXBlLCBJbnZhbGlkYXRpb25LZXlUeXBlOjpUYWcsIHRhZ05hbWUpOwogCi0g
ICAgcmV0dXJuIG1ha2VQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleShzZWxlY3Rvci5wc2V1ZG9D
bGFzc1R5cGUoKSwgSW52YWxpZGF0aW9uS2V5VHlwZTo6VW5pdmVyc2FsKTsKKyAgICByZXR1cm4g
bWFrZVBzZXVkb0NsYXNzSW52YWxpZGF0aW9uS2V5KHBzZXVkb0NsYXNzVHlwZSwgSW52YWxpZGF0
aW9uS2V5VHlwZTo6VW5pdmVyc2FsKTsKIH07CiAKIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxl
Y3RGZWF0dXJlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEpCkBAIC0zMTcsNyArMzEzLDkgQEAg
dm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBydWxl
RGF0YSkKIAogICAgIGF1dG8gYWRkVG9NYXAgPSBbJl0oYXV0byYgbWFwLCBhdXRvJiBlbnRyaWVz
LCBhdXRvIGhvc3RBZmZlY3RpbmdOYW1lcykgewogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
ZW50cmllcykgewotICAgICAgICAgICAgYXV0byYgW25hbWUsIG1hdGNoRWxlbWVudCwgaXNOZWdh
dGlvbl0gPSBlbnRyeTsKKyAgICAgICAgICAgIGF1dG8mIFtzZWxlY3RvciwgbWF0Y2hFbGVtZW50
LCBpc05lZ2F0aW9uXSA9IGVudHJ5OworICAgICAgICAgICAgYXV0byYgbmFtZSA9IHNlbGVjdG9y
LT52YWx1ZSgpOworCiAgICAgICAgICAgICBtYXAuZW5zdXJlKG5hbWUsIFtdIHsKICAgICAgICAg
ICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxSdWxlRmVhdHVyZVZlY3Rvcj4oKTsKICAgICAgICAg
ICAgIH0pLml0ZXJhdG9yLT52YWx1ZS0+YXBwZW5kKHsgcnVsZURhdGEsIG1hdGNoRWxlbWVudCwg
aXNOZWdhdGlvbiB9KTsKQEAgLTMzMSw3ICszMjksNiBAQCB2b2lkIFJ1bGVGZWF0dXJlU2V0Ojpj
b2xsZWN0RmVhdHVyZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogICAgICAgICB9CiAgICAg
fTsKIAotICAgIGFkZFRvTWFwKHRhZ1J1bGVzLCBzZWxlY3RvckZlYXR1cmVzLnRhZ3MsIG51bGxw
dHIpOwogICAgIGFkZFRvTWFwKGlkUnVsZXMsIHNlbGVjdG9yRmVhdHVyZXMuaWRzLCBudWxscHRy
KTsKICAgICBhZGRUb01hcChjbGFzc1J1bGVzLCBzZWxlY3RvckZlYXR1cmVzLmNsYXNzZXMsICZj
bGFzc2VzQWZmZWN0aW5nSG9zdCk7CiAKQEAgLTM0Nyw3ICszNDQsNyBAQCB2b2lkIFJ1bGVGZWF0
dXJlU2V0Ojpjb2xsZWN0RmVhdHVyZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhKQogCiAgICAg
Zm9yIChhdXRvJiBlbnRyeSA6IHNlbGVjdG9yRmVhdHVyZXMucHNldWRvQ2xhc3NlcykgewogICAg
ICAgICBhdXRvIFtzZWxlY3RvciwgbWF0Y2hFbGVtZW50LCBpc05lZ2F0aW9uXSA9IGVudHJ5Owot
ICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZShtYWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRp
b25LZXkoKnNlbGVjdG9yKSwgW10geworICAgICAgICBwc2V1ZG9DbGFzc1J1bGVzLmVuc3VyZSht
YWtlUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXkoc2VsZWN0b3ItPnBzZXVkb0NsYXNzVHlwZSgp
LCAqc2VsZWN0b3IpLCBbXSB7CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuaXF1ZTxWZWN0b3I8
UnVsZUZlYXR1cmU+PigpOwogICAgICAgICB9KS5pdGVyYXRvci0+dmFsdWUtPmFwcGVuZCh7IHJ1
bGVEYXRhLCBtYXRjaEVsZW1lbnQsIGlzTmVnYXRpb24gfSk7CiAKQEAgLTM1Nyw2ICszNTQsMTYg
QEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6Y29sbGVjdEZlYXR1cmVzKGNvbnN0IFJ1bGVEYXRhJiBy
dWxlRGF0YSkKIAogICAgICAgICBzZXRVc2VzTWF0Y2hFbGVtZW50KG1hdGNoRWxlbWVudCk7CiAg
ICAgfQorCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IHNlbGVjdG9yRmVhdHVyZXMuaGFzUHNldWRv
Q2xhc3NlcykgeworICAgICAgICBhdXRvIFtzZWxlY3RvciwgbWF0Y2hFbGVtZW50LCBpc05lZ2F0
aW9uXSA9IGVudHJ5OworICAgICAgICAvLyBUaGUgc2VsZWN0b3IgYXJndW1lbnQgcG9pbnRzIHRv
IGEgc2VsZWN0b3IgaW5zaWRlIDpoYXMoKSBzZWxlY3RvciBsaXN0IGluc3RlYWQgb2YgOmhhcygp
IGl0c2VsZi4KKyAgICAgICAgaGFzUHNldWRvQ2xhc3NSdWxlcy5lbnN1cmUobWFrZVBzZXVkb0Ns
YXNzSW52YWxpZGF0aW9uS2V5KENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc0hhcywgKnNlbGVjdG9y
KSwgW10geworICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8VmVjdG9yPFJ1bGVGZWF0dXJl
V2l0aEludmFsaWRhdGlvblNlbGVjdG9yPj4oKTsKKyAgICAgICAgfSkuaXRlcmF0b3ItPnZhbHVl
LT5hcHBlbmQoeyBydWxlRGF0YSwgbWF0Y2hFbGVtZW50LCBpc05lZ2F0aW9uLCBzZWxlY3RvciB9
KTsKKworICAgICAgICBzZXRVc2VzTWF0Y2hFbGVtZW50KG1hdGNoRWxlbWVudCk7CisgICAgfQog
fQogCiB2b2lkIFJ1bGVGZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVy
KQpAQCAtMzc3LDcgKzM4NCw2IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxl
RmVhdHVyZVNldCYgb3RoZXIpCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgYWRkTWFwKHRhZ1J1
bGVzLCBvdGhlci50YWdSdWxlcyk7CiAgICAgYWRkTWFwKGlkUnVsZXMsIG90aGVyLmlkUnVsZXMp
OwogCiAgICAgYWRkTWFwKGNsYXNzUnVsZXMsIG90aGVyLmNsYXNzUnVsZXMpOwpAQCAtMzkwLDYg
KzM5Niw4IEBAIHZvaWQgUnVsZUZlYXR1cmVTZXQ6OmFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYg
b3RoZXIpCiAgICAgcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3QuYWRkKG90aGVyLnBzZXVkb0Ns
YXNzZXNBZmZlY3RpbmdIb3N0LmJlZ2luKCksIG90aGVyLnBzZXVkb0NsYXNzZXNBZmZlY3RpbmdI
b3N0LmVuZCgpKTsKICAgICBwc2V1ZG9DbGFzc1R5cGVzLmFkZChvdGhlci5wc2V1ZG9DbGFzc1R5
cGVzLmJlZ2luKCksIG90aGVyLnBzZXVkb0NsYXNzVHlwZXMuZW5kKCkpOwogCisgICAgYWRkTWFw
KGhhc1BzZXVkb0NsYXNzUnVsZXMsIG90aGVyLmhhc1BzZXVkb0NsYXNzUnVsZXMpOworCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB1c2VkTWF0Y2hFbGVtZW50cy5zaXplKCk7ICsraSkKICAg
ICAgICAgdXNlZE1hdGNoRWxlbWVudHNbaV0gPSB1c2VkTWF0Y2hFbGVtZW50c1tpXSB8fCBvdGhl
ci51c2VkTWF0Y2hFbGVtZW50c1tpXTsKIApAQCAtNDEzLDkgKzQyMSw5IEBAIHZvaWQgUnVsZUZl
YXR1cmVTZXQ6OmNsZWFyKCkKICAgICBjb250ZW50QXR0cmlidXRlTmFtZXNJblJ1bGVzLmNsZWFy
KCk7CiAgICAgc2libGluZ1J1bGVzLmNsZWFyKCk7CiAgICAgdW5jb21tb25BdHRyaWJ1dGVSdWxl
cy5jbGVhcigpOwotICAgIHRhZ1J1bGVzLmNsZWFyKCk7CiAgICAgaWRSdWxlcy5jbGVhcigpOwog
ICAgIGNsYXNzUnVsZXMuY2xlYXIoKTsKKyAgICBoYXNQc2V1ZG9DbGFzc1J1bGVzLmNsZWFyKCk7
CiAgICAgY2xhc3Nlc0FmZmVjdGluZ0hvc3QuY2xlYXIoKTsKICAgICBhdHRyaWJ1dGVSdWxlcy5j
bGVhcigpOwogICAgIGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0LmNsZWFyKCk7CkBAIC00MzAsOCAr
NDM4LDYgQEAgdm9pZCBSdWxlRmVhdHVyZVNldDo6c2hyaW5rVG9GaXQoKQogewogICAgIHNpYmxp
bmdSdWxlcy5zaHJpbmtUb0ZpdCgpOwogICAgIHVuY29tbW9uQXR0cmlidXRlUnVsZXMuc2hyaW5r
VG9GaXQoKTsKLSAgICBmb3IgKGF1dG8mIHJ1bGVzIDogdGFnUnVsZXMudmFsdWVzKCkpCi0gICAg
ICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgpOwogICAgIGZvciAoYXV0byYgcnVsZXMgOiBpZFJ1bGVz
LnZhbHVlcygpKQogICAgICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsKICAgICBmb3IgKGF1dG8m
IHJ1bGVzIDogY2xhc3NSdWxlcy52YWx1ZXMoKSkKQEAgLTQ0MCw2ICs0NDYsOCBAQCB2b2lkIFJ1
bGVGZWF0dXJlU2V0OjpzaHJpbmtUb0ZpdCgpCiAgICAgICAgIHJ1bGVzLT5zaHJpbmtUb0ZpdCgp
OwogICAgIGZvciAoYXV0byYgcnVsZXMgOiBwc2V1ZG9DbGFzc1J1bGVzLnZhbHVlcygpKQogICAg
ICAgICBydWxlcy0+c2hyaW5rVG9GaXQoKTsKKyAgICBmb3IgKGF1dG8mIHJ1bGVzIDogaGFzUHNl
dWRvQ2xhc3NSdWxlcy52YWx1ZXMoKSkKKyAgICAgICAgcnVsZXMtPnNocmlua1RvRml0KCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9SdWxlRmVhdHVyZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvUnVsZUZlYXR1cmUuaAppbmRl
eCBkODQwNmY4OGQ0NjJlNTY0ZGNhNDEzMTY3YTM0ODQ5M2NkMDVlNjNlLi5kMzA0MTY3MThmNzgy
YTI1OTUzM2M1MjA5ZjBjYmEwY2QwODEyYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9SdWxlRmVhdHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1J1bGVGZWF0dXJl
LmgKQEAgLTEwNSwxMSArMTA1LDEyIEBAIHN0cnVjdCBSdWxlRmVhdHVyZVNldCB7CiAgICAgVmVj
dG9yPFJ1bGVBbmRTZWxlY3Rvcj4gc2libGluZ1J1bGVzOwogICAgIFZlY3RvcjxSdWxlQW5kU2Vs
ZWN0b3I+IHVuY29tbW9uQXR0cmlidXRlUnVsZXM7CiAKLSAgICBIYXNoTWFwPEF0b21TdHJpbmcs
IHN0ZDo6dW5pcXVlX3B0cjxSdWxlRmVhdHVyZVZlY3Rvcj4+IHRhZ1J1bGVzOwogICAgIEhhc2hN
YXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFJ1bGVGZWF0dXJlVmVjdG9yPj4gaWRSdWxl
czsKICAgICBIYXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxSdWxlRmVhdHVyZVZl
Y3Rvcj4+IGNsYXNzUnVsZXM7CiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPFJ1bGVGZWF0dXJlV2l0aEludmFsaWRhdGlvblNlbGVjdG9yPj4+IGF0dHJpYnV0
ZVJ1bGVzOwogICAgIEhhc2hNYXA8UHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXksIHN0ZDo6dW5p
cXVlX3B0cjxSdWxlRmVhdHVyZVZlY3Rvcj4+IHBzZXVkb0NsYXNzUnVsZXM7CisgICAgSGFzaE1h
cDxQc2V1ZG9DbGFzc0ludmFsaWRhdGlvbktleSwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxSdWxl
RmVhdHVyZVdpdGhJbnZhbGlkYXRpb25TZWxlY3Rvcj4+PiBoYXNQc2V1ZG9DbGFzc1J1bGVzOwor
CiAgICAgSGFzaFNldDxBdG9tU3RyaW5nPiBjbGFzc2VzQWZmZWN0aW5nSG9zdDsKICAgICBIYXNo
U2V0PEF0b21TdHJpbmc+IGF0dHJpYnV0ZXNBZmZlY3RpbmdIb3N0OwogICAgIEhhc2hTZXQ8Q1NT
U2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSwgSW50SGFzaDxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NUeXBlPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxDU1NTZWxlY3Rvcjo6UHNldWRvQ2xh
c3NUeXBlPj4gcHNldWRvQ2xhc3Nlc0FmZmVjdGluZ0hvc3Q7CkBAIC0xMjQsMTMgKzEyNSwxNSBA
QCBwcml2YXRlOgogICAgIHN0cnVjdCBTZWxlY3RvckZlYXR1cmVzIHsKICAgICAgICAgYm9vbCBo
YXNTaWJsaW5nU2VsZWN0b3IgeyBmYWxzZSB9OwogCi0gICAgICAgIFZlY3RvcjxzdGQ6OnR1cGxl
PEF0b21TdHJpbmcsIE1hdGNoRWxlbWVudCwgSXNOZWdhdGlvbj4sIDMyPiB0YWdzOwotICAgICAg
ICBWZWN0b3I8c3RkOjp0dXBsZTxBdG9tU3RyaW5nLCBNYXRjaEVsZW1lbnQsIElzTmVnYXRpb24+
LCAzMj4gaWRzOwotICAgICAgICBWZWN0b3I8c3RkOjp0dXBsZTxBdG9tU3RyaW5nLCBNYXRjaEVs
ZW1lbnQsIElzTmVnYXRpb24+LCAzMj4gY2xhc3NlczsKLSAgICAgICAgVmVjdG9yPHN0ZDo6dHVw
bGU8Y29uc3QgQ1NTU2VsZWN0b3IqLCBNYXRjaEVsZW1lbnQsIElzTmVnYXRpb24+LCAzMj4gYXR0
cmlidXRlczsKLSAgICAgICAgVmVjdG9yPHN0ZDo6dHVwbGU8Y29uc3QgQ1NTU2VsZWN0b3IqLCBN
YXRjaEVsZW1lbnQsIElzTmVnYXRpb24+LCAzMj4gcHNldWRvQ2xhc3NlczsKKyAgICAgICAgdXNp
bmcgSW52YWxpZGF0aW9uRmVhdHVyZSA9IHN0ZDo6dHVwbGU8Y29uc3QgQ1NTU2VsZWN0b3IqLCBN
YXRjaEVsZW1lbnQsIElzTmVnYXRpb24+OworCisgICAgICAgIFZlY3RvcjxJbnZhbGlkYXRpb25G
ZWF0dXJlPiBpZHM7CisgICAgICAgIFZlY3RvcjxJbnZhbGlkYXRpb25GZWF0dXJlPiBjbGFzc2Vz
OworICAgICAgICBWZWN0b3I8SW52YWxpZGF0aW9uRmVhdHVyZT4gYXR0cmlidXRlczsKKyAgICAg
ICAgVmVjdG9yPEludmFsaWRhdGlvbkZlYXR1cmU+IHBzZXVkb0NsYXNzZXM7CisgICAgICAgIFZl
Y3RvcjxJbnZhbGlkYXRpb25GZWF0dXJlPiBoYXNQc2V1ZG9DbGFzc2VzOwogICAgIH07Ci0gICAg
dm9pZCByZWN1cnNpdmVseUNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3RvcihTZWxlY3RvckZlYXR1
cmVzJiwgY29uc3QgQ1NTU2VsZWN0b3ImLCBNYXRjaEVsZW1lbnQgPSBNYXRjaEVsZW1lbnQ6OlN1
YmplY3QsIElzTmVnYXRpb24gPSAgSXNOZWdhdGlvbjo6Tm8pOworICAgIHZvaWQgcmVjdXJzaXZl
bHlDb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoU2VsZWN0b3JGZWF0dXJlcyYsIGNvbnN0IENT
U1NlbGVjdG9yJiwgTWF0Y2hFbGVtZW50ID0gTWF0Y2hFbGVtZW50OjpTdWJqZWN0LCBJc05lZ2F0
aW9uID0gSXNOZWdhdGlvbjo6Tm8pOwogfTsKIAogYm9vbCBpc0hhc1BzZXVkb0NsYXNzTWF0Y2hF
bGVtZW50KE1hdGNoRWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVNjb3BlUnVsZVNldHMuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1
bGVTZXRzLmNwcAppbmRleCA0ODQ5NzhjNDdmMjNjMzBmOTY5YmI0NWExYjNkZmRiNmY3MDgzYjRl
Li44ZThjOTI1NDRhYTFiZGQ3OWQ0NjVjYzg2MjA3MGJhNWNkOWEwYTdmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlU2NvcGVSdWxlU2V0cy5jcHAKQEAgLTIyMSwxMSArMjIxLDExIEBA
IHZvaWQgU2NvcGVSdWxlU2V0czo6Y29sbGVjdEZlYXR1cmVzKCkgY29uc3QKICAgICBtX3NpYmxp
bmdSdWxlU2V0ID0gbWFrZVJ1bGVTZXQobV9mZWF0dXJlcy5zaWJsaW5nUnVsZXMpOwogICAgIG1f
dW5jb21tb25BdHRyaWJ1dGVSdWxlU2V0ID0gbWFrZVJ1bGVTZXQobV9mZWF0dXJlcy51bmNvbW1v
bkF0dHJpYnV0ZVJ1bGVzKTsKIAotICAgIG1fdGFnSW52YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIo
KTsKICAgICBtX2lkSW52YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKICAgICBtX2NsYXNzSW52
YWxpZGF0aW9uUnVsZVNldHMuY2xlYXIoKTsKICAgICBtX2F0dHJpYnV0ZUludmFsaWRhdGlvblJ1
bGVTZXRzLmNsZWFyKCk7CiAgICAgbV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzLmNs
ZWFyKCk7CisgICAgbV9oYXNQc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzLmNsZWFyKCk7
CiAKICAgICBtX2NhY2hlZEhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHlsZUF0dHJpYnV0ZSA9IHN0
ZDo6bnVsbG9wdDsKIApAQCAtMjcyLDExICsyNzIsNiBAQCBzdGF0aWMgVmVjdG9yPEludmFsaWRh
dGlvblJ1bGVTZXQ+KiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBLZXlUeXBlJiBr
ZQogICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAotY29uc3QgVmVjdG9yPEludmFs
aWRhdGlvblJ1bGVTZXQ+KiBTY29wZVJ1bGVTZXRzOjp0YWdJbnZhbGlkYXRpb25SdWxlU2V0cyhj
b25zdCBBdG9tU3RyaW5nJiB0YWdOYW1lKSBjb25zdAotewotICAgIHJldHVybiBlbnN1cmVJbnZh
bGlkYXRpb25SdWxlU2V0cyh0YWdOYW1lLCBtX3RhZ0ludmFsaWRhdGlvblJ1bGVTZXRzLCBtX2Zl
YXR1cmVzLnRhZ1J1bGVzKTsKLX0KLQogY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
KiBTY29wZVJ1bGVTZXRzOjppZEludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcm
IGlkKSBjb25zdAogewogICAgIHJldHVybiBlbnN1cmVJbnZhbGlkYXRpb25SdWxlU2V0cyhpZCwg
bV9pZEludmFsaWRhdGlvblJ1bGVTZXRzLCBtX2ZlYXR1cmVzLmlkUnVsZXMpOwpAQCAtMjk3LDYg
KzI5MiwxMSBAQCBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIFNjb3BlUnVsZVNl
dHM6OnBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldAogICAgIHJldHVybiBlbnN1cmVJbnZh
bGlkYXRpb25SdWxlU2V0cyhwc2V1ZG9DbGFzc0tleSwgbV9wc2V1ZG9DbGFzc0ludmFsaWRhdGlv
blJ1bGVTZXRzLCBtX2ZlYXR1cmVzLnBzZXVkb0NsYXNzUnVsZXMpOwogfQogCitjb25zdCBWZWN0
b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIFNjb3BlUnVsZVNldHM6Omhhc1BzZXVkb0NsYXNzSW52
YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgUHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXkmIGtleSkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZW5zdXJlSW52YWxpZGF0aW9uUnVsZVNldHMoa2V5LCBtX2hh
c1BzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMsIG1fZmVhdHVyZXMuaGFzUHNldWRvQ2xh
c3NSdWxlcyk7Cit9CisKIGJvb2wgU2NvcGVSdWxlU2V0czo6aGFzQ29tcGxleFNlbGVjdG9yc0Zv
clN0eWxlQXR0cmlidXRlKCkgY29uc3QKIHsKICAgICBhdXRvIGNvbXB1dGUgPSBbJl0gewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVTY29wZVJ1bGVTZXRzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMuaAppbmRleCA5ODE4Yjg0YzRhMGI3
ZTlmNjc4Y2ZkNWI5MzgwZWJiZGNhNWI0NWVlLi42YmQ5MTk4ZTZkYWNlZGNhNDdiZDc5MzJkYmEz
NTVlOTQ2NTA1MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3Bl
UnVsZVNldHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVNjb3BlUnVsZVNldHMu
aApAQCAtNjIsMTMgKzYyLDExIEBAIHB1YmxpYzoKICAgICBSdWxlU2V0KiBzaWJsaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zaWJsaW5nUnVsZVNldC5nZXQoKTsgfQogICAgIFJ1bGVTZXQqIHVuY29t
bW9uQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gbV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQu
Z2V0KCk7IH0KIAotICAgIGNvbnN0IFZlY3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogdGFnSW52
YWxpZGF0aW9uUnVsZVNldHMoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0OwogICAgIGNvbnN0IFZl
Y3RvcjxJbnZhbGlkYXRpb25SdWxlU2V0PiogaWRJbnZhbGlkYXRpb25SdWxlU2V0cyhjb25zdCBB
dG9tU3RyaW5nJikgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+
KiBjbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKICAg
ICBjb25zdCBWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4qIGF0dHJpYnV0ZUludmFsaWRhdGlv
blJ1bGVTZXRzKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8SW52
YWxpZGF0aW9uUnVsZVNldD4qIHBzZXVkb0NsYXNzSW52YWxpZGF0aW9uUnVsZVNldHMoY29uc3Qg
UHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXkmKSBjb25zdDsKLQotICAgIGNvbnN0IFZlY3RvcjxJ
bnZhbGlkYXRpb25SdWxlU2V0PiogaW52YWxpZGF0aW9uUnVsZVNldHNGb3JDaGlsZENoYW5nZShj
b25zdCBFbGVtZW50Jik7CisgICAgY29uc3QgVmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+KiBo
YXNQc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzKGNvbnN0IFBzZXVkb0NsYXNzSW52YWxp
ZGF0aW9uS2V5JikgY29uc3Q7CiAKICAgICBib29sIGhhc0NvbXBsZXhTZWxlY3RvcnNGb3JTdHls
ZUF0dHJpYnV0ZSgpIGNvbnN0OwogCkBAIC0xMDEsMTEgKzk5LDExIEBAIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBSdWxlRmVhdHVyZVNldCBtX2ZlYXR1cmVzOwogICAgIG11dGFibGUgUmVmUHRyPFJ1
bGVTZXQ+IG1fc2libGluZ1J1bGVTZXQ7CiAgICAgbXV0YWJsZSBSZWZQdHI8UnVsZVNldD4gbV91
bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQ7Ci0gICAgbXV0YWJsZSBIYXNoTWFwPEF0b21TdHJpbmcs
IHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+PiBtX3RhZ0ludmFs
aWRhdGlvblJ1bGVTZXRzOwogICAgIG11dGFibGUgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9pZEludmFsaWRhdGlvblJ1
bGVTZXRzOwogICAgIG11dGFibGUgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9jbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRz
OwogICAgIG11dGFibGUgSGFzaE1hcDxBdG9tU3RyaW5nLCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9hdHRyaWJ1dGVJbnZhbGlkYXRpb25SdWxlU2V0czsK
ICAgICBtdXRhYmxlIEhhc2hNYXA8UHNldWRvQ2xhc3NJbnZhbGlkYXRpb25LZXksIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8SW52YWxpZGF0aW9uUnVsZVNldD4+PiBtX3BzZXVkb0NsYXNzSW52YWxp
ZGF0aW9uUnVsZVNldHM7CisgICAgbXV0YWJsZSBIYXNoTWFwPFBzZXVkb0NsYXNzSW52YWxpZGF0
aW9uS2V5LCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPEludmFsaWRhdGlvblJ1bGVTZXQ+Pj4gbV9o
YXNQc2V1ZG9DbGFzc0ludmFsaWRhdGlvblJ1bGVTZXRzOwogCiAgICAgbXV0YWJsZSBzdGQ6Om9w
dGlvbmFsPGJvb2w+IG1fY2FjaGVkSGFzQ29tcGxleFNlbGVjdG9yc0ZvclN0eWxlQXR0cmlidXRl
OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>