<?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>235280</bug_id>
          
          <creation_ts>2022-01-16 11:58:24 -0800</creation_ts>
          <short_desc>[libpas] medium directory lookup should bail if begin_index is zero to catch races with expendable memory decommit (cherry pick 434465bfb8e0c285d6763cf6aa0e04982199f824)</short_desc>
          <delta_ts>2022-01-20 18:44:09 -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>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1831316</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2022-01-16 11:58:24 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831317</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2022-01-16 11:58:41 -0800</bug_when>
    <thetext>&lt;rdar://87249133&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831318</commentid>
    <comment_count>2</comment_count>
      <attachid>449285</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2022-01-16 12:06:45 -0800</bug_when>
    <thetext>Created attachment 449285
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831635</commentid>
    <comment_count>3</comment_count>
      <attachid>449285</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-18 01:06:37 -0800</bug_when>
    <thetext>Comment on attachment 449285
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1831938</commentid>
    <comment_count>4</comment_count>
      <attachid>449461</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2022-01-18 20:28:15 -0800</bug_when>
    <thetext>Created attachment 449461
better patch

When I tested the previous patch against the tests in the updated libpas (bug 235347), I found a bunch of issues. This fixes all of them, I think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832627</commentid>
    <comment_count>5</comment_count>
      <attachid>449461</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-20 17:02:39 -0800</bug_when>
    <thetext>Comment on attachment 449461
better patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832650</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2022-01-20 18:44:09 -0800</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/288342/webkit</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449285</attachid>
            <date>2022-01-16 12:06:45 -0800</date>
            <delta_ts>2022-01-18 20:28:15 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>31505</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODA3MikKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDIyLTAxLTE2ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2xpYnBhc10gbWVkaXVtIGRpcmVj
dG9yeSBsb29rdXAgc2hvdWxkIGJhaWwgaWYgYmVnaW5faW5kZXggaXMgemVybyB0byBjYXRjaCBy
YWNlcyB3aXRoIGV4cGVuZGFibGUgbWVtb3J5IGRlY29tbWl0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJJ3ZlIGJlZW4gc2VlaW5nIGNyYXNoZXMgaW4g
cGFzX3NlZ3JlZ2F0ZWRfaGVhcF9lbnN1cmVfYWxsb2NhdG9yX2luZGV4IHdoZXJlIHRoZSBkaXJl
Y3RvcnkgdGhhdCBpcworICAgICAgICBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGRvZXNuJ3QgbWF0
Y2ggdGhlIHNpemUuIFRoZSBtb3N0IGxpa2VseSByZWFzb24gd2h5IHRoaXMgaXMgaGFwcGVuaW5n
IGlzIHRoYXQKKyAgICAgICAgdGhlIG1lZGl1bSBkaXJlY3RvcnkgbG9va3VwIHJhY2VkIHdpdGgg
ZXhwZW5kYWJsZSBtZW1vcnkgZGVjb21taXQgYW5kIHJldHVybmVkIHRoZSB3cm9uZyBkaXJlY3Rv
cnkuCisgICAgICAgIFRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaGFwcGVucywgSSBhZGRlZCBhIGJ1
bmNoIG9mIHRlc3RzIHRvIEV4cGVuZGFibGVNZW1vcnlUZXN0cy4gVGhpcyBjaGFuZ2UKKyAgICAg
ICAgaW5jbHVkZXMgdmFyaW91cyBzbWFsbCBmaXhlcyAobGlrZSByZW1vdmluZyBhc3NlcnRpb25z
KSB0aGF0IHdlcmUgZm91bmQgYnkgZG9pbmcgc3VjaCB0ZXN0aW5nLCBhbmQgaXQKKyAgICAgICAg
YWxzbyBpbmNsdWRlcyBhIHRlc3QgYW5kIGEgY2hhbmdlIHRoYXQgSSB0aGluayBleGFjdGx5IGNh
dGNoZXMgd2hhdCBpcyBnb2luZyBvbjoKKworICAgICAgICAtIEV4cGVuZGFibGUgbWVtb3J5IGlz
IGRlY29tbWl0dGVkIHNvIHRoYXQgdGhlIG1lZGl1bSBsb29rdXAgc2VlcyBiZWdpbl9pbmRleCA9
PSAwLCBidXQgZW5kX2luZGV4CisgICAgICAgICAgc3RpbGwgaGFzIGl0cyBvcmlnaW5hbCB2YWx1
ZS4gVGhpcyB3aWxsIGNhdXNlIGl0IHRvIHJldHVybiBhIHR1cGxlIHRoYXQgaXMgZm9yIGEgdG9v
LWxhcmdlIHNpemUKKyAgICAgICAgICBjbGFzcy4KKyAgICAgICAgLSBTb21lIG90aGVyIHRocmVh
ZCByZW1hdGVyaWFsaXplcyB0aGUgZXhwZW5kYWJsZSBtZW1vcnkgcmlnaHQgYWZ0ZXIgdGhlIG1l
ZGl1bSBsb29rdXAgZmluaXNoZXMsIGJ1dAorICAgICAgICAgIGJlZm9yZSBpdCBsb2FkcyB0aGUg
ZGlyZWN0b3J5LgorICAgICAgICAtIFRoZSBtZWRpdW0gbG9va3VwIGZpbmFsbHkgbG9hZHMgdGhl
IGRpcmVjdG9yeSBmcm9tIHRoZSB0dXBsZSwgYW5kIG5vdyBzZWVzIGEgbm9uLU5VTEwgZGlyZWN0
b3J5LCBzbworICAgICAgICAgIGl0IHRoaW5rcyB0aGF0IGV2ZXJ5dGhpbmcgaXMgZmluZS4KKwor
ICAgICAgICBUaGlzIHJhY2UgYmFyZWx5ICJ3b3JrcyIgc2luY2U6CisKKyAgICAgICAgLSBBbnkg
b3RoZXIgZmllbGQgaW4gdGhlIG1lZGl1bSB0dXBsZSBiZWluZyB6ZXJvIHdvdWxkIGNhdXNlIHRo
ZSBtZWRpdW0gbG9va3VwIHRvIGZhaWwsIHdoaWNoIHdvdWxkCisgICAgICAgICAgdGhlbiBjYXVz
ZSBhIHNsb3cgcGF0aCB0aGF0IHJlbWF0ZXJpYWxpemVzIGV4cGVuZGFibGUgbWVtb3J5IHVuZGVy
IGEgbG9jay4KKyAgICAgICAgLSBSZW1hdGVyaWFsaXphdGlvbiBvZiBleHBlbmRhYmxlIG1lbW9y
eSBhZGp1c3RzIHRoZSBtdXRhdGlvbiBjb3VudCwgc28gdGhpcyByYWNlIHdvdWxkIG9ubHkgZ28K
KyAgICAgICAgICB1bmRldGVjdGVkIGlmIHRoZSByZW1hdGVyaWFsaXphdGlvbiBoYXBwZW5lZCBh
ZnRlciB0aGUgbWVkaXVtIGxvb2t1cCBzZWFyY2ggYnV0IGJlZm9yZSB3aGVuIHRoZQorICAgICAg
ICAgIG1lZGl1bSBsb29rdXAgbG9hZHMgdGhlIGRpcmVjdG9yeS4KKworICAgICAgICBUaGUgc29s
dXRpb24gaXMgdG8ganVzdCBoYXZlIHRoZSBtZWRpdW0gbG9va3VwIGZhaWwgaWYgYmVnaW5faW5k
ZXggPT0gMC4gQmVnaW5faW5kZXggY2FuIG5ldmVyCisgICAgICAgIGxlZ2l0aW1hdGVseSBiZSB6
ZXJvLCBiZWNhdXNlIHRoZXJlJ3Mgbm8gd2F5IHRoYXQgYSBzaXplIGNsYXNzIHdvdWxkIHdhbnQg
dG8gYmUgcmVzcG9uc2libGUgZm9yIGJvdGgKKyAgICAgICAgaW5kZXggMCAoaS5lLiB0aGUgemVy
by1ieXRlIG9iamVjdCkgYW5kIG9iamVjdHMgYmlnIGVub3VnaCB0byByZXF1aXJlIG1lZGl1bSBs
b29rdXAuCisKKyAgICAgICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9ibWFsbG9jX2hlYXAuYzoKKyAg
ICAgICAgKGJtYWxsb2NfZmxleF9oZWFwX3JlZl9nZXRfaGVhcCk6CisgICAgICAgIChibWFsbG9j
X2F1eGlsaWFyeV9oZWFwX3JlZl9nZXRfaGVhcCk6CisgICAgICAgIChibWFsbG9jX2dldF9oZWFw
KToKKyAgICAgICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9ibWFsbG9jX2hlYXAuaDoKKyAgICAgICAg
KiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNfZXhwZW5kYWJsZV9tZW1vcnkuYzoKKyAgICAgICAgKHBh
c19leHBlbmRhYmxlX21lbW9yeV9jb21taXRfaWZfbmVjZXNzYXJ5KToKKyAgICAgICAgKHNjYXZl
bmdlX2ltcGwpOgorICAgICAgICAocGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlKToKKyAg
ICAgICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNfZXhwZW5kYWJsZV9tZW1vcnkuaDoKKyAgICAg
ICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNfc2NhdmVuZ2VyLmM6CisgICAgICAgIChoYW5kbGVf
ZXhwZW5kYWJsZV9tZW1vcnkpOgorICAgICAgICAoc2NhdmVuZ2VyX3RocmVhZF9tYWluKToKKyAg
ICAgICAgKHBhc19zY2F2ZW5nZXJfZGVjb21taXRfZXhwZW5kYWJsZV9tZW1vcnkpOgorICAgICAg
ICAocGFzX3NjYXZlbmdlcl9mYWtlX2RlY29tbWl0X2V4cGVuZGFibGVfbWVtb3J5KToKKyAgICAg
ICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNfc2NhdmVuZ2VyLmg6CisgICAgICAgICogbGlicGFz
L3NyYy9saWJwYXMvcGFzX3NlZ3JlZ2F0ZWRfaGVhcC5jOgorICAgICAgICAobWVkaXVtX2RpcmVj
dG9yeV90dXBsZV9mb3JfaW5kZXhfaW1wbCk6CisgICAgICAgIChwYXNfc2VncmVnYXRlZF9oZWFw
X21lZGl1bV9kaXJlY3RvcnlfdHVwbGVfZm9yX2luZGV4KToKKyAgICAgICAgKHBhc19zZWdyZWdh
dGVkX2hlYXBfbWVkaXVtX2FsbG9jYXRvcl9pbmRleF9mb3JfaW5kZXgpOgorICAgICAgICAocmVj
b21wdXRlX3NpemVfbG9va3VwKToKKyAgICAgICAgKHJlbWF0ZXJpYWxpemVfc2l6ZV9sb29rdXBf
c2V0X21lZGl1bV9kaXJlY3RvcnlfdHVwbGUpOgorICAgICAgICAoY2hlY2tfc2l6ZV9sb29rdXBf
cmVjb21wdXRhdGlvbl9zZXRfbWVkaXVtX2RpcmVjdG9yeV90dXBsZSk6CisgICAgICAgIChwYXNf
c2VncmVnYXRlZF9oZWFwX2Vuc3VyZV9zaXplX2RpcmVjdG9yeV9mb3Jfc2l6ZSk6CisgICAgICAg
ICogbGlicGFzL3NyYy9saWJwYXMvcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9pbmxpbmVzLmg6CisgICAg
ICAgIChwYXNfc2VncmVnYXRlZF9oZWFwX3RvdWNoX2xvb2t1cF90YWJsZXMpOgorICAgICAgICAq
IGxpYnBhcy9zcmMvdGVzdC9FeHBlbmRhYmxlTWVtb3J5VGVzdHMuY3BwOgorICAgICAgICAoc3Rk
Ojp0ZXN0UmFnZSk6CisgICAgICAgIChzdGQ6OnRlc3RSZW1hdGVyaWFsaXplQWZ0ZXJTZWFyY2hP
ZkRlY29tbWl0dGVkKToKKyAgICAgICAgKGFkZEV4cGVuZGFibGVNZW1vcnlUZXN0cyk6CisKIDIw
MjItMDEtMTQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4gYW5kIE1pa2hhaWwg
Ui4gR2FkZWxoYSAgPG1pa2hhaWxAaWdhbGlhLmNvbT4KIAogICAgICAgICBbSlNDXSBGaXggTGlu
dXggNjRiaXQgY29tcGlsYXRpb24KSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGli
cGFzL2JtYWxsb2NfaGVhcC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9z
cmMvbGlicGFzL2JtYWxsb2NfaGVhcC5jCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2UvYm1h
bGxvYy9saWJwYXMvc3JjL2xpYnBhcy9ibWFsbG9jX2hlYXAuYwkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTktMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJwYXNfZGVhbGxvY2F0ZS5oIgogI2luY2x1ZGUgInBh
c19lbnN1cmVfaGVhcF9mb3JjZWRfaW50b19yZXNlcnZlZF9tZW1vcnkuaCIKICNpbmNsdWRlICJw
YXNfZ2V0X2FsbG9jYXRpb25fc2l6ZS5oIgorI2luY2x1ZGUgInBhc19nZXRfaGVhcC5oIgogCiBQ
QVNfQkVHSU5fRVhURVJOX0M7CiAKQEAgLTI3MSw2ICsyNzIsMTIgQEAgdm9pZCogYm1hbGxvY19y
ZWFsbG9jYXRlX2ZsZXgocGFzX3ByaW1pdAogICAgIHJldHVybiBibWFsbG9jX3JlYWxsb2NhdGVf
ZmxleF9pbmxpbmUoaGVhcF9yZWYsIG9sZF9wdHIsIG5ld19zaXplKTsKIH0KIAorcGFzX2hlYXAq
IGJtYWxsb2NfZmxleF9oZWFwX3JlZl9nZXRfaGVhcChwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBo
ZWFwX3JlZikKK3sKKyAgICByZXR1cm4gcGFzX2Vuc3VyZV9oZWFwKCZoZWFwX3JlZi0+YmFzZSwg
cGFzX3ByaW1pdGl2ZV9oZWFwX3JlZl9raW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmJtYWxsb2NfaGVhcF9jb25maWcsICZibWFsbG9jX2ZsZXhfcnVudGltZV9jb25maWcuYmFzZSk7
Cit9CisKIFBBU19ORVZFUl9JTkxJTkUgdm9pZCogYm1hbGxvY190cnlfYWxsb2NhdGVfYXV4aWxp
YXJ5X3dpdGhfYWxpZ25tZW50X2Nhc3VhbCgKICAgICBwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBo
ZWFwX3JlZiwgc2l6ZV90IHNpemUsIHNpemVfdCBhbGlnbm1lbnQpCiB7CkBAIC0zMzcsNiArMzQ0
LDEyIEBAIHZvaWQqIGJtYWxsb2NfcmVhbGxvY2F0ZV9hdXhpbGlhcnkodm9pZCoKICAgICByZXR1
cm4gYm1hbGxvY19yZWFsbG9jYXRlX2F1eGlsaWFyeV9pbmxpbmUob2xkX3B0ciwgaGVhcF9yZWYs
IG5ld19zaXplLCBmcmVlX21vZGUpOwogfQogCitwYXNfaGVhcCogYm1hbGxvY19hdXhpbGlhcnlf
aGVhcF9yZWZfZ2V0X2hlYXAocGFzX3ByaW1pdGl2ZV9oZWFwX3JlZiogaGVhcF9yZWYpCit7Cisg
ICAgcmV0dXJuIHBhc19lbnN1cmVfaGVhcCgmaGVhcF9yZWYtPmJhc2UsIHBhc19wcmltaXRpdmVf
aGVhcF9yZWZfa2luZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZibWFsbG9jX2hlYXBf
Y29uZmlnLCAmYm1hbGxvY19wcmltaXRpdmVfcnVudGltZV9jb25maWcuYmFzZSk7Cit9CisKIHZv
aWQgYm1hbGxvY19kZWFsbG9jYXRlKHZvaWQqIHB0cikKIHsKICAgICBibWFsbG9jX2RlYWxsb2Nh
dGVfaW5saW5lKHB0cik7CkBAIC0zNjEsNiArMzc0LDExIEBAIHNpemVfdCBibWFsbG9jX2dldF9h
bGxvY2F0aW9uX3NpemUodm9pZCoKICAgICByZXR1cm4gcGFzX2dldF9hbGxvY2F0aW9uX3NpemUo
cHRyLCBCTUFMTE9DX0hFQVBfQ09ORklHKTsKIH0KIAorcGFzX2hlYXAqIGJtYWxsb2NfZ2V0X2hl
YXAodm9pZCogcHRyKQoreworICAgIHJldHVybiBwYXNfZ2V0X2hlYXAocHRyLCBCTUFMTE9DX0hF
QVBfQ09ORklHKTsKK30KKwogUEFTX0VORF9FWFRFUk5fQzsKIAogI2VuZGlmIC8qIFBBU19FTkFC
TEVfQk1BTExPQyAqLwpJbmRleDogU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvYm1h
bGxvY19oZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJw
YXMvYm1hbGxvY19oZWFwLmgJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvbGlicGFzL2JtYWxsb2NfaGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDYgKzk2LDgg
QEAgUEFTX0FQSSB2b2lkKiBibWFsbG9jX2FsbG9jYXRlX2ZsZXhfd2l0aAogUEFTX0JBUEkgdm9p
ZCogYm1hbGxvY190cnlfcmVhbGxvY2F0ZV9mbGV4KHBhc19wcmltaXRpdmVfaGVhcF9yZWYqIGhl
YXBfcmVmLCB2b2lkKiBvbGRfcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUEFTX0JBUEkgdm9pZCog
Ym1hbGxvY19yZWFsbG9jYXRlX2ZsZXgocGFzX3ByaW1pdGl2ZV9oZWFwX3JlZiogaGVhcF9yZWYs
IHZvaWQqIG9sZF9wdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiAKK1BBU19BUEkgcGFzX2hlYXAqIGJt
YWxsb2NfZmxleF9oZWFwX3JlZl9nZXRfaGVhcChwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBoZWFw
X3JlZik7CisKIFBBU19BUEkgdm9pZCogYm1hbGxvY190cnlfYWxsb2NhdGVfYXV4aWxpYXJ5KHBh
c19wcmltaXRpdmVfaGVhcF9yZWYqIGhlYXBfcmVmLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUpOwogUEFTX0FQSSB2b2lkKiBibWFsbG9j
X2FsbG9jYXRlX2F1eGlsaWFyeShwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBoZWFwX3JlZiwKQEAg
LTEyMiw2ICsxMjQsOCBAQCBQQVNfQVBJIHZvaWQqIGJtYWxsb2NfcmVhbGxvY2F0ZV9hdXhpbGlh
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ld19z
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc19yZWFs
bG9jYXRlX2ZyZWVfbW9kZSBmcmVlX21vZGUpOwogCitQQVNfQVBJIHBhc19oZWFwKiBibWFsbG9j
X2F1eGlsaWFyeV9oZWFwX3JlZl9nZXRfaGVhcChwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBoZWFw
X3JlZik7CisKIFBBU19BUEkgdm9pZCBibWFsbG9jX2RlYWxsb2NhdGUodm9pZCopOwogCiBQQVNf
QVBJIHBhc19oZWFwKiBibWFsbG9jX2ZvcmNlX2F1eGlsaWFyeV9oZWFwX2ludG9fcmVzZXJ2ZWRf
bWVtb3J5KHBhc19wcmltaXRpdmVfaGVhcF9yZWYqIGhlYXBfcmVmLApAQCAtMTI5LDYgKzEzMyw3
IEBAIFBBU19BUEkgcGFzX2hlYXAqIGJtYWxsb2NfZm9yY2VfYXV4aWxpYXIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dWludHB0cl90IGVuZCk7CiAKIFBBU19CQVBJIHNpemVfdCBibWFsbG9jX2hlYXBfcmVmX2dldF90
eXBlX3NpemUocGFzX2hlYXBfcmVmKiBoZWFwX3JlZik7CitQQVNfQVBJIHBhc19oZWFwKiBibWFs
bG9jX2dldF9oZWFwKHZvaWQqIHB0cik7CiBQQVNfQkFQSSBzaXplX3QgYm1hbGxvY19nZXRfYWxs
b2NhdGlvbl9zaXplKHZvaWQqIHB0cik7CiAKIFBBU19FTkRfRVhURVJOX0M7CkluZGV4OiBTb3Vy
Y2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfZXhwZW5kYWJsZV9tZW1vcnkuYwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfZXhwZW5kYWJs
ZV9tZW1vcnkuYwkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL2JtYWxsb2MvbGlicGFzL3Ny
Yy9saWJwYXMvcGFzX2V4cGVuZGFibGVfbWVtb3J5LmMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjIwLDggKzIy
MCwxMCBAQCBib29sIHBhc19leHBlbmRhYmxlX21lbW9yeV9jb21taXRfaWZfbmVjCiAgICAgfQog
CiAgICAgUEFTX0FTU0VSVChmaXJzdF92ZXJzaW9uID49IGhlYWRlcl92ZXJzaW9uKTsKLSAgICBQ
QVNfQVNTRVJUKGxhc3RfdmVyc2lvbiA+PSBoZWFkZXJfdmVyc2lvbik7Ci0gICAgUEFTX0FTU0VS
VChmaXJzdF92ZXJzaW9uID4gaGVhZGVyX3ZlcnNpb24gfHwgbGFzdF92ZXJzaW9uID4gaGVhZGVy
X3ZlcnNpb24pOworCisgICAgLyogV2UnZCBsaWtlIHRvIGFzc2VydCB0aGF0IGxhc3RfdmVyc2lv
biA+PSBoZWFkZXJfdmVyc2lvbiwgZXhjZXB0IHRoYXQgaXQncyBwb3NzaWJsZSBmb3Igc29tZW9u
ZSB0bworICAgICAgIGRvIGEgY29tbWl0X2lmX25lY2Vzc2FyeSBvbiB0aGUgcHJlZml4IG9mIHRo
aXMgb2JqZWN0LCBhbmQgdGhlbiBub3QgdXBkYXRlIGxhc3RfdmVyc2lvbi4gU28sCisgICAgICAg
bGFzdF92ZXJzaW9uIGNvdWxkIGJlIHN0dWNrIGFyYml0cmFyaWx5IGluIHRoZSBwYXN0LiAqLwog
CiAgICAgbmV3X3ZlcnNpb24gPSBQQVNfTUFYKGZpcnN0X3ZlcnNpb24sIGxhc3RfdmVyc2lvbik7
CiAgICAgbmV3X3N0YXRlID0gcGFzX2V4cGVuZGFibGVfbWVtb3J5X3N0YXRlX2NyZWF0ZShQQVNf
RVhQRU5EQUJMRV9NRU1PUllfU1RBVEVfS0lORF9KVVNUX1VTRUQsIG5ld192ZXJzaW9uKTsKQEAg
LTI0OSw5ICsyNTEsOSBAQCBkb25lOgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9v
bCBzY2F2ZW5nZV9pbXBsKHBhc19leHBlbmRhYmxlX21lbW9yeSogaGVhZGVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICB2b2lkKiBwYXlsb2FkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2Vfa2luZCBzY2F2ZW5nZV9raW5kKQorc3Rh
dGljIFBBU19BTFdBWVNfSU5MSU5FIGJvb2wgc2NhdmVuZ2VfaW1wbChwYXNfZXhwZW5kYWJsZV9t
ZW1vcnkqIGhlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCogcGF5bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX2tpbmQgc2NhdmVuZ2Vfa2luZCkK
IHsKICAgICBzaXplX3QgaW5kZXg7CiAgICAgc2l6ZV90IGluZGV4X2VuZDsKQEAgLTMxMiw3ICsz
MTQsOCBAQCBzdGF0aWMgYm9vbCBzY2F2ZW5nZV9pbXBsKHBhc19leHBlbmRhYmxlCiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgUEFTX0FTU0VSVChzY2F2ZW5nZV9raW5kID09IHBhc19leHBl
bmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWQpOworICAgICAgICAgICAgICAgIFBBU19BU1NF
UlQoc2NhdmVuZ2Vfa2luZCA9PSBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2VfZm9yY2Vk
CisgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzY2F2ZW5nZV9raW5kID09IHBhc19leHBl
bmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWRfZmFrZSk7CiAgICAgICAgICAgICAgICAgaWYg
KGtpbmQgPCBQQVNfRVhQRU5EQUJMRV9NRU1PUllfU1RBVEVfS0lORF9KVVNUX1VTRUQpCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIFBBU19URVNUSU5HX0FTU0VS
VChraW5kIDw9IFBBU19FWFBFTkRBQkxFX01FTU9SWV9TVEFURV9LSU5EX01BWF9KVVNUX1VTRUQp
OwpAQCAtMzI3LDggKzMzMCwxMCBAQCBzdGF0aWMgYm9vbCBzY2F2ZW5nZV9pbXBsKHBhc19leHBl
bmRhYmxlCiAgICAgICAgICAgIG1lbW9yeS4gU28sIGl0IG1pZ2h0IGhhcHBlbiBhZnRlciB3ZSBo
YXZlIGFscmVhZHkgZGVjb21taXR0ZWQsIG9yIGRlY2lkZWQgdG8gZGVjb21taXQuICovCiAgICAg
ICAgIHBhc19zdG9yZV9zdG9yZV9mZW5jZSgpOwogCi0gICAgICAgIHBhc19wYWdlX21hbGxvY19k
ZWNvbW1pdF9hc3ltbWV0cmljKChjaGFyKilwYXlsb2FkICsgaW5kZXggKiBQQVNfRVhQRU5EQUJM
RV9NRU1PUllfUEFHRV9TSVpFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAob3RoZXJfaW5kZXggLSBpbmRleCkgKiBQQVNfRVhQRU5EQUJMRV9NRU1PUllfUEFH
RV9TSVpFKTsKKyAgICAgICAgaWYgKHNjYXZlbmdlX2tpbmQgIT0gcGFzX2V4cGVuZGFibGVfbWVt
b3J5X3NjYXZlbmdlX2ZvcmNlZF9mYWtlKSB7CisgICAgICAgICAgICBwYXNfcGFnZV9tYWxsb2Nf
ZGVjb21taXRfYXN5bW1ldHJpYygoY2hhciopcGF5bG9hZCArIGluZGV4ICogUEFTX0VYUEVOREFC
TEVfTUVNT1JZX1BBR0VfU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChvdGhlcl9pbmRleCAtIGluZGV4KSAqIFBBU19FWFBFTkRBQkxFX01FTU9S
WV9QQUdFX1NJWkUpOworICAgICAgICB9CiAKICAgICAgICAgLyogQXQgdGhpcyBwb2ludCwgYW55
IG9mIHRoZSBwYWdlcyBpbiB0aGlzIHJhbmdlIGNvdWxkIGdldCBkZWNvbW1pdHRlZCwgYnV0IGl0
IHdvbid0IG5lY2Vzc2FyaWx5CiAgICAgICAgICAgIGhhcHBlbiBpbW1lZGlhdGVseS4gQW55IHdy
aXRlIHRvIHRoZXNlIHBhZ2VzIHdpbGwgY2FuY2VsIHRoZSBkZWNvbW1pdCwgb3IgdW5kbyBpdCBp
ZiBpdCdzIGFscmVhZHkKQEAgLTM2Miw5ICszNjcsNiBAQCBzdGF0aWMgYm9vbCBzY2F2ZW5nZV9p
bXBsKHBhc19leHBlbmRhYmxlCiAgICAgICAgIGluZGV4ID0gb3RoZXJfaW5kZXggLSAxOwogICAg
IH0KIAotICAgIGlmIChzY2F2ZW5nZV9raW5kID09IHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2
ZW5nZV9mb3JjZWQpCi0gICAgICAgIFBBU19BU1NFUlQoIXJlc3VsdCk7Ci0KICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC0zNzIsMTMgKzM3NCwxOCBAQCBib29sIHBhc19leHBlbmRhYmxlX21l
bW9yeV9zY2F2ZW5nZShwYXNfCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
b2lkKiBwYXlsb2FkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzX2V4
cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX2tpbmQga2luZCkKIHsKLSAgICBzd2l0Y2ggKGtpbmQp
IHsKLSAgICBjYXNlIHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9wZXJpb2RpYzoKKyAg
ICBib29sIHJlc3VsdDsKKyAgICAKKyAgICBpZiAoa2luZCA9PSBwYXNfZXhwZW5kYWJsZV9tZW1v
cnlfc2NhdmVuZ2VfcGVyaW9kaWMpIHsKKyAgICAgICAgLyogU3BlY2lhbGl6ZSBmb3IgdGhpcyBj
YXNlLiBXZSB3YW50IHRoZSBzY2F2ZW5nZXIgdG8gYmUgZmFzdC4gKi8KICAgICAgICAgcmV0dXJu
IHNjYXZlbmdlX2ltcGwoaGVhZGVyLCBwYXlsb2FkLCBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2Nh
dmVuZ2VfcGVyaW9kaWMpOwotICAgIGNhc2UgcGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdl
X2ZvcmNlZDoKLSAgICAgICAgcmV0dXJuIHNjYXZlbmdlX2ltcGwoaGVhZGVyLCBwYXlsb2FkLCBw
YXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2VfZm9yY2VkKTsKICAgICB9Ci0gICAgUEFTX0FT
U0VSVCghIlNob3VsZCBub3QgYmUgcmVhY2hlZCIpOworCisgICAgUEFTX0FTU0VSVChraW5kID09
IHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWQKKyAgICAgICAgICAgICAgIHx8
IGtpbmQgPT0gcGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX2ZvcmNlZF9mYWtlKTsKKwor
ICAgIHJlc3VsdCA9IHNjYXZlbmdlX2ltcGwoaGVhZGVyLCBwYXlsb2FkLCBraW5kKTsKKyAgICBQ
QVNfQVNTRVJUKCFyZXN1bHQpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNl
L2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2V4cGVuZGFibGVfbWVtb3J5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2V4cGVuZGFibGVf
bWVtb3J5LmgJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMv
bGlicGFzL3Bhc19leHBlbmRhYmxlX21lbW9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYxLDggKzYxLDE1
IEBAIGVudW0gcGFzX2V4cGVuZGFibGVfbWVtb3J5X3RvdWNoX2tpbmQgewogdHlwZWRlZiBlbnVt
IHBhc19leHBlbmRhYmxlX21lbW9yeV90b3VjaF9raW5kIHBhc19leHBlbmRhYmxlX21lbW9yeV90
b3VjaF9raW5kOwogCiBlbnVtIHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9raW5kIHsK
KyAgICAvKiBEZWNvbW1pdHMgb25seSB0aGluZ3MgdGhhdCBoYXZlbid0IGJlZW4gdXNlZCByZWNl
bnRseSwgYW5kIGRvZXMgdGhlIGNvdW50IGluY3JlbWVudCB0aGF0IGFsbG93cyB1cworICAgICAg
IHRvIHRlbGwgdGhhdCBzb21ldGhpbmcgaGFzbid0IGJlZW4gdXNlZCByZWNlbnRseS4gKi8KICAg
ICBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2VfcGVyaW9kaWMsCi0gICAgcGFzX2V4cGVu
ZGFibGVfbWVtb3J5X3NjYXZlbmdlX2ZvcmNlZAorCisgICAgLyogRGVjb21taXRzIGV2ZXJ5dGhp
bmcgdGhhdCBpdCBjYW4uICovCisgICAgcGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX2Zv
cmNlZCwKKworICAgIC8qIFByZXRlbmRzIHRvIGRlY29tbWl0IGV2ZXJ5dGhpbmcgdGhhdCBpdCBj
YW4gd2l0aG91dCBtYWtpbmcgYW55IHN5c2NhbGxzICh1c2VmdWwgZm9yIHRlc3RpbmcpLiAqLwor
ICAgIHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWRfZmFrZSwKIH07CiAKIHR5
cGVkZWYgZW51bSBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2Vfa2luZCBwYXNfZXhwZW5k
YWJsZV9tZW1vcnlfc2NhdmVuZ2Vfa2luZDsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9z
cmMvbGlicGFzL3Bhc19zY2F2ZW5nZXIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9s
aWJwYXMvc3JjL2xpYnBhcy9wYXNfc2NhdmVuZ2VyLmMJKHJldmlzaW9uIDI4Nzk2NykKKysrIFNv
dXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zY2F2ZW5nZXIuYwkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTktMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTktMjAyMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTEzMyw2ICsxMzMsMTYgQEAgc3RhdGljIHZvaWQgdGltZWRfd2FpdChwdGhyZWFk
X2NvbmRfdCogYwogICAgICAgICBwcmludGYoIldva2UgdXAgZnJvbSB0aW1lZCB3YWl0IGF0ICUu
MmxmLlxuIiwgZ2V0X3RpbWVfaW5fbWlsbGlzZWNvbmRzKCkpOwogfQogCitzdGF0aWMgYm9vbCBo
YW5kbGVfZXhwZW5kYWJsZV9tZW1vcnkocGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX2tp
bmQga2luZCkKK3sKKyAgICBib29sIHNob3VsZF9nb19hZ2FpbiA9IGZhbHNlOworICAgIHBhc19o
ZWFwX2xvY2tfbG9jaygpOworICAgIHNob3VsZF9nb19hZ2FpbiB8PSBwYXNfY29tcGFjdF9leHBl
bmRhYmxlX21lbW9yeV9zY2F2ZW5nZShraW5kKTsKKyAgICBzaG91bGRfZ29fYWdhaW4gfD0gcGFz
X2xhcmdlX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlKGtpbmQpOworICAgIHBhc19oZWFwX2xv
Y2tfdW5sb2NrKCk7CisgICAgcmV0dXJuIHNob3VsZF9nb19hZ2FpbjsKK30KKwogc3RhdGljIHZv
aWQqIHNjYXZlbmdlcl90aHJlYWRfbWFpbih2b2lkKiBhcmcpCiB7CiAgICAgcGFzX3NjYXZlbmdl
cl9kYXRhKiBkYXRhOwpAQCAtMjAwLDEwICsyMTAsNyBAQCBzdGF0aWMgdm9pZCogc2NhdmVuZ2Vy
X3RocmVhZF9tYWluKHZvaWQqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcGFzX2RlYWxsb2NhdG9yX3NjYXZlbmdlX2ZsdXNoX2xvZ19pZl9jbGVhbl9hY3Rpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzX2xvY2tfaXNf
bm90X2hlbGQpOwogCi0gICAgICAgIHBhc19oZWFwX2xvY2tfbG9jaygpOwotICAgICAgICBzaG91
bGRfZ29fYWdhaW4gfD0gcGFzX2NvbXBhY3RfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2UocGFz
X2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX3BlcmlvZGljKTsKLSAgICAgICAgc2hvdWxkX2dv
X2FnYWluIHw9IHBhc19sYXJnZV9leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZShwYXNfZXhwZW5k
YWJsZV9tZW1vcnlfc2NhdmVuZ2VfcGVyaW9kaWMpOwotICAgICAgICBwYXNfaGVhcF9sb2NrX3Vu
bG9jaygpOworICAgICAgICBzaG91bGRfZ29fYWdhaW4gfD0gaGFuZGxlX2V4cGVuZGFibGVfbWVt
b3J5KHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9wZXJpb2RpYyk7CiAKICAgICAgICAg
LyogRm9yIHRoZSBwdXJwb3NlcyBvZiBwZXJmb3JtYW5jZSB0dW5pbmcsIGFzIHdlbGwgYXMgc29t
ZSBvZiB0aGUgc2NhdmVuZ2VyIHRlc3RzLCB0aGUgZXBvY2gKICAgICAgICAgICAgaXMgdGltZSBp
biBuYW5vc2Vjb25kcy4KQEAgLTQ3OCwxMCArNDg1LDEyIEBAIHZvaWQgcGFzX3NjYXZlbmdlcl9j
bGVhcl9hbGxfY2FjaGVzKHZvaWQKIAogdm9pZCBwYXNfc2NhdmVuZ2VyX2RlY29tbWl0X2V4cGVu
ZGFibGVfbWVtb3J5KHZvaWQpCiB7Ci0gICAgcGFzX2hlYXBfbG9ja19sb2NrKCk7Ci0gICAgcGFz
X2NvbXBhY3RfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2UocGFzX2V4cGVuZGFibGVfbWVtb3J5
X3NjYXZlbmdlX2ZvcmNlZCk7Ci0gICAgcGFzX2xhcmdlX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZl
bmdlKHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWQpOwotICAgIHBhc19oZWFw
X2xvY2tfdW5sb2NrKCk7CisgICAgaGFuZGxlX2V4cGVuZGFibGVfbWVtb3J5KHBhc19leHBlbmRh
YmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWQpOworfQorCit2b2lkIHBhc19zY2F2ZW5nZXJfZmFr
ZV9kZWNvbW1pdF9leHBlbmRhYmxlX21lbW9yeSh2b2lkKQoreworICAgIGhhbmRsZV9leHBlbmRh
YmxlX21lbW9yeShwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2VfZm9yY2VkX2Zha2UpOwog
fQogCiBzaXplX3QgcGFzX3NjYXZlbmdlcl9kZWNvbW1pdF9mcmVlX21lbW9yeSh2b2lkKQpJbmRl
eDogU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3NjYXZlbmdlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zY2F2ZW5nZXIu
aAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMv
cGFzX3NjYXZlbmdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoYykgMjAxOS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoYykgMjAxOS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAzLDYgKzEwMyw3IEBAIFBBU19B
UEkgdm9pZCBwYXNfc2NhdmVuZ2VyX2NsZWFyX2FsbF9ub24KIFBBU19BUEkgdm9pZCBwYXNfc2Nh
dmVuZ2VyX2NsZWFyX2FsbF9jYWNoZXNfZXhjZXB0X3JlbW90ZV90bGNzKHZvaWQpOwogUEFTX0FQ
SSB2b2lkIHBhc19zY2F2ZW5nZXJfY2xlYXJfYWxsX2NhY2hlcyh2b2lkKTsKIFBBU19BUEkgdm9p
ZCBwYXNfc2NhdmVuZ2VyX2RlY29tbWl0X2V4cGVuZGFibGVfbWVtb3J5KHZvaWQpOworUEFTX0FQ
SSB2b2lkIHBhc19zY2F2ZW5nZXJfZmFrZV9kZWNvbW1pdF9leHBlbmRhYmxlX21lbW9yeSh2b2lk
KTsgLyogVXNlZnVsIGZvciB0ZXN0aW5nLiAqLwogUEFTX0FQSSBzaXplX3QgcGFzX3NjYXZlbmdl
cl9kZWNvbW1pdF9mcmVlX21lbW9yeSh2b2lkKTsKIAogUEFTX0FQSSB2b2lkIHBhc19zY2F2ZW5n
ZXJfcnVuX3N5bmNocm9ub3VzbHlfbm93KHZvaWQpOwpJbmRleDogU291cmNlL2JtYWxsb2MvbGli
cGFzL3NyYy9saWJwYXMvcGFzX3NlZ3JlZ2F0ZWRfaGVhcC5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zZWdyZWdhdGVkX2hlYXAuYwkocmV2aXNp
b24gMjg3OTY3KQorKysgU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3NlZ3Jl
Z2F0ZWRfaGVhcC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoYykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoYykgMjAxOC0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzc4LDYgKzM3OCwxNSBAQCBtZWRpdW1f
ZGlyZWN0b3J5X3R1cGxlX2Zvcl9pbmRleF9pbXBsKAogICAgICAgICB9CiAKICAgICAgICAgYmVn
aW5faW5kZXggPSBkaXJlY3RvcnktPmJlZ2luX2luZGV4OworCisgICAgICAgIC8qIFRoaXMgaXMg
bmVjZXNzYXJ5IHRvIGd1YXJkIGFnYWluc3QgdGhlIG1lZGl1bSB0dXBsZSBhcnJheSBiZWluZyBk
ZWNvbW1pdHRlZCBhdCB0aGUgd3JvbmcgdGltZSwKKyAgICAgICAgICAgb3IgdGhlIHR1cGxlIHN0
cmFkZGxpbmcgcGFnZSBib3VuZGFyeSwgbGVhZGluZyB0byB0aGUgYmVnaW4gaW5kZXggYmVpbmcg
emVybyBhbmQgdGhlIGVuZF9pbmRleAorICAgICAgICAgICBoYXZpbmcgaXRzIG9yaWdpbmFsIHZh
bHVlLiAqLworICAgICAgICBpZiAoIWJlZ2luX2luZGV4KSB7CisgICAgICAgICAgICByZXN1bHQu
dHVwbGUgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAg
ICAgICAKICAgICAgICAgZW5kX2luZGV4ID0gZGlyZWN0b3J5LT5lbmRfaW5kZXg7CiAgICAgICAg
IAogICAgICAgICByZXN1bHQuZGVwZW5kZW5jeSArPSBiZWdpbl9pbmRleCArIGVuZF9pbmRleDsK
QEAgLTQ0OCw2ICs0NTcsOCBAQCBwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9kaXJlY3Rvcnlf
dHVwCiAgICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fc2l6ZV9kaXJlY3Rvcnlfc2VhcmNo
X21vZGUgc2VhcmNoX21vZGUsCiAgICAgcGFzX2xvY2tfaG9sZF9tb2RlIGhlYXBfbG9ja19ob2xk
X21vZGUpCiB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgIAog
ICAgIHBhc19zZWdyZWdhdGVkX2hlYXBfcmFyZV9kYXRhKiByYXJlX2RhdGE7CiAgICAgcGFzX211
dGF0aW9uX2NvdW50IHNhdmVkX2NvdW50OwogICAgIHBhc19zZWdyZWdhdGVkX2hlYXBfbWVkaXVt
X2RpcmVjdG9yeV90dXBsZSogbWVkaXVtX2RpcmVjdG9yaWVzOwpAQCAtNDc4LDggKzQ4OSwxMSBA
QCBwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9kaXJlY3RvcnlfdHVwCiAgICAgICAgIHJhcmVf
ZGF0YSwgbWVkaXVtX2RpcmVjdG9yaWVzLCBudW1fbWVkaXVtX2RpcmVjdG9yaWVzLCBpbmRleCwg
c2VhcmNoX21vZGUpOwogICAgIAogICAgIGlmIChwYXNfbXV0YXRpb25fY291bnRfbWF0Y2hlc193
aXRoX2RlcGVuZGVuY3koCi0gICAgICAgICAgICAmcmFyZV9kYXRhLT5tdXRhdGlvbl9jb3VudCwg
c2F2ZWRfY291bnQsIHJlc3VsdC5kZXBlbmRlbmN5KSkKKyAgICAgICAgICAgICZyYXJlX2RhdGEt
Pm11dGF0aW9uX2NvdW50LCBzYXZlZF9jb3VudCwgcmVzdWx0LmRlcGVuZGVuY3kpKSB7CisgICAg
ICAgIGlmICh2ZXJib3NlICYmICFyZXN1bHQudHVwbGUpCisgICAgICAgICAgICBwYXNfbG9nKCJk
aWQgbm90IGZpbmQgdHVwbGVcbiIpOwogICAgICAgICByZXR1cm4gcmVzdWx0LnR1cGxlOworICAg
IH0KICAgICAKICAgICByZXR1cm4gbWVkaXVtX2RpcmVjdG9yeV90dXBsZV9mb3JfaW5kZXhfd2l0
aF9sb2NrKAogICAgICAgICBoZWFwLCBpbmRleCwgc2VhcmNoX21vZGUsIHBhc19sb2NrX2lzX25v
dF9oZWxkKTsKQEAgLTQ5MSwxMyArNTA1LDIwIEBAIHVuc2lnbmVkIHBhc19zZWdyZWdhdGVkX2hl
YXBfbWVkaXVtX2FsbG8KICAgICBwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9zaXplX2RpcmVj
dG9yeV9zZWFyY2hfbW9kZSBzZWFyY2hfbW9kZSwKICAgICBwYXNfbG9ja19ob2xkX21vZGUgaGVh
cF9sb2NrX2hvbGRfbW9kZSkKIHsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFs
c2U7CisgICAgCiAgICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fZGlyZWN0b3J5X3R1cGxl
KiBtZWRpdW1fZGlyZWN0b3J5OwogICAgIAogICAgIG1lZGl1bV9kaXJlY3RvcnkgPSBwYXNfc2Vn
cmVnYXRlZF9oZWFwX21lZGl1bV9kaXJlY3RvcnlfdHVwbGVfZm9yX2luZGV4KAogICAgICAgICBo
ZWFwLCBpbmRleCwgc2VhcmNoX21vZGUsIGhlYXBfbG9ja19ob2xkX21vZGUpOwogICAgIAotICAg
IGlmIChtZWRpdW1fZGlyZWN0b3J5KQotICAgICAgICByZXR1cm4gbWVkaXVtX2RpcmVjdG9yeS0+
YWxsb2NhdG9yX2luZGV4OworICAgIGlmIChtZWRpdW1fZGlyZWN0b3J5KSB7CisgICAgICAgIHVu
c2lnbmVkIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0ID0gbWVkaXVtX2RpcmVjdG9yeS0+YWxsb2Nh
dG9yX2luZGV4OworICAgICAgICBpZiAodmVyYm9zZSAmJiAhcmVzdWx0KQorICAgICAgICAgICAg
cGFzX2xvZygiZm91bmQgbnVsbCBhbGxvY2F0b3IgaW5kZXhcbiIpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KICAgICAKICAgICByZXR1cm4gMDsKIH0KQEAgLTcwNiw2ICs3MjcsNyBA
QCBzdGF0aWMgdm9pZCByZWNvbXB1dGVfc2l6ZV9sb29rdXAocGFzX3NlCiAgICAgICAgICAgICB0
dXBsZS5hbGxvY2F0b3JfaW5kZXggPSAwOwogICAgICAgICBQQVNfQVNTRVJUKHR1cGxlLmFsbG9j
YXRvcl9pbmRleCAhPSAocGFzX2FsbG9jYXRvcl9pbmRleClVSU5UX01BWCk7CiAgICAgICAgIHR1
cGxlLmJlZ2luX2luZGV4ID0gcGFzX3NlZ3JlZ2F0ZWRfc2l6ZV9kaXJlY3RvcnlfbWluX2luZGV4
KGRpcmVjdG9yeSk7CisgICAgICAgIFBBU19BU1NFUlQodHVwbGUuYmVnaW5faW5kZXgpOwogICAg
ICAgICB0dXBsZS5lbmRfaW5kZXggPSAodW5zaWduZWQpcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9pbmRl
eF9mb3Jfc2l6ZShkaXJlY3RvcnktPm9iamVjdF9zaXplLCAqY29uZmlnKTsKICAgICAgICAgCiAg
ICAgICAgIHNldF9tZWRpdW1fZGlyZWN0b3J5X3R1cGxlKG1lZGl1bV90dXBsZV9pbmRleCwgJnR1
cGxlLCBhcmcpOwpAQCAtNzU1LDYgKzc3Nyw3IEBAIHN0YXRpYyB2b2lkIHJlbWF0ZXJpYWxpemVf
c2l6ZV9sb29rdXBfc2UKICAgICAKICAgICB0dXBsZXMgPSBwYXNfc2VncmVnYXRlZF9oZWFwX21l
ZGl1bV9kaXJlY3RvcnlfdHVwbGVfcHRyX2xvYWQoJmRhdGEtPm1lZGl1bV9kaXJlY3Rvcmllcyk7
CiAgICAgUEFTX0FTU0VSVCh0dXBsZXMpOworICAgIFBBU19BU1NFUlQodHVwbGUtPmJlZ2luX2lu
ZGV4KTsKICAgICB0dXBsZXNbbWVkaXVtX3R1cGxlX2luZGV4XSA9ICp0dXBsZTsKIH0KIApAQCAt
MTA4Nyw2ICsxMTEwLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfc2l6ZV9sb29rdXBfcmVjb21wdXRh
dAogCiAgICAgZGF0YSA9IGFyZzsKIAorICAgIFBBU19BU1NFUlQodmFsdWUtPmJlZ2luX2luZGV4
KTsKICAgICBQQVNfQVNTRVJUKG1lZGl1bV90dXBsZV9pbmRleCA9PSBkYXRhLT5udW1fbWVkaXVt
X2RpcmVjdG9yaWVzKTsKICAgICBQQVNfQVNTRVJUKCh1bnNpZ25lZCkobWVkaXVtX3R1cGxlX2lu
ZGV4ICsgMXUpID09IG1lZGl1bV90dXBsZV9pbmRleCArIDF1KTsKICAgICBkYXRhLT5udW1fbWVk
aXVtX2RpcmVjdG9yaWVzID0gKHVuc2lnbmVkKShtZWRpdW1fdHVwbGVfaW5kZXggKyAxdSk7CkBA
IC0xNDM5LDYgKzE0NjMsNyBAQCBwYXNfc2VncmVnYXRlZF9oZWFwX2Vuc3VyZV9zaXplX2RpcmVj
dG9yCiAgICAgICAgICAgICAgICAgYmVnaW5faW5kZXggPSBpbmRleCArIDE7CiAgICAgICAgICAg
ICAgICAgUEFTX0FTU0VSVCgocGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fZGlyZWN0b3J5X2lu
ZGV4KWJlZ2luX2luZGV4ID09IGJlZ2luX2luZGV4KTsKICAgICAgICAgICAgICAgICBtZWRpdW1f
dHVwbGUtPmJlZ2luX2luZGV4ID0gKHBhc19zZWdyZWdhdGVkX2hlYXBfbWVkaXVtX2RpcmVjdG9y
eV9pbmRleCliZWdpbl9pbmRleDsKKyAgICAgICAgICAgICAgICBQQVNfQVNTRVJUKG1lZGl1bV90
dXBsZS0+YmVnaW5faW5kZXgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9kaXJlY3RvcnlfdHVwbGUqIG1lZGl1bV9kaXJl
Y3RvcmllczsKICAgICAgICAgICAgICAgICBzaXplX3QgbWVkaXVtX3R1cGxlX2luZGV4OwpAQCAt
MTg4NSw2ICsxOTEwLDcgQEAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9lbnN1cmVfc2l6ZV9kaXJlY3Rv
cgogICAgICAgICAgICAgICAgICAgICAmbmV4dF90dXBsZS0+ZGlyZWN0b3J5KSA9PSByZXN1bHQp
IHsKICAgICAgICAgICAgICAgICBzaXplX3QgYmVnaW5faW5kZXg7CiAgICAgICAgICAgICAgICAg
YmVnaW5faW5kZXggPSBQQVNfTUlOKGluZGV4LCAoc2l6ZV90KW5leHRfdHVwbGUtPmJlZ2luX2lu
ZGV4KTsKKyAgICAgICAgICAgICAgICBQQVNfQVNTRVJUKGJlZ2luX2luZGV4KTsKICAgICAgICAg
ICAgICAgICBQQVNfQVNTRVJUKChwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9kaXJlY3Rvcnlf
aW5kZXgpYmVnaW5faW5kZXggPT0gYmVnaW5faW5kZXgpOwogICAgICAgICAgICAgICAgIG5leHRf
dHVwbGUtPmJlZ2luX2luZGV4ID0gKHBhc19zZWdyZWdhdGVkX2hlYXBfbWVkaXVtX2RpcmVjdG9y
eV9pbmRleCliZWdpbl9pbmRleDsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xOTc2LDcgKzIw
MDIsOCBAQCBwYXNfc2VncmVnYXRlZF9oZWFwX2Vuc3VyZV9zaXplX2RpcmVjdG9yCiAgICAgICAg
ICAgICAgICAgICAgIHBhc19sb2coIkluIHJhcmVfZGF0YSA9ICVwLCBJbnN0YWxsaW5nIG1lZGl1
bSB0dXBsZSAlenUuLi4lenVcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFyZV9k
YXRhLCBpbmRleCwgbWVkaXVtX2luc3RhbGxfaW5kZXgpOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIFBBU19BU1NFUlQoaW5kZXgpOwogICAg
ICAgICAgICAgICAgIG1lZGl1bV9kaXJlY3RvcnktPmJlZ2luX2luZGV4ID0gKHBhc19zZWdyZWdh
dGVkX2hlYXBfbWVkaXVtX2RpcmVjdG9yeV9pbmRleClpbmRleDsKICAgICAgICAgICAgICAgICBt
ZWRpdW1fZGlyZWN0b3J5LT5lbmRfaW5kZXggPQogICAgICAgICAgICAgICAgICAgICAocGFzX3Nl
Z3JlZ2F0ZWRfaGVhcF9tZWRpdW1fZGlyZWN0b3J5X2luZGV4KW1lZGl1bV9pbnN0YWxsX2luZGV4
OwpJbmRleDogU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX3NlZ3JlZ2F0ZWRf
aGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bh
c19zZWdyZWdhdGVkX2hlYXAuaAkocmV2aXNpb24gMjg3OTY3KQorKysgU291cmNlL2JtYWxsb2Mv
bGlicGFzL3NyYy9saWJwYXMvcGFzX3NlZ3JlZ2F0ZWRfaGVhcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTgsNyArMTE4LDEwIEBAIHN0cnVjdCBwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9kaXJl
Y3QKICAgICAKICAgICAvKiBUaGlzIGlzIHRoZSBgaW5kZXhgIHdlIHdvdWxkIHVzZSB0byBkbyBh
IGxvb2t1cC4gQSBtZWRpdW0gZGlyZWN0b3J5IHR1cGxlIHJlcHJlc2VudHMgYQogICAgICAgIGNv
bnRpZ3VvdXMgcmFuZ2Ugb2YgaW5kaWNlcyB0aGF0IG1hcCB0byBhIHNpbmdsZSBkaXJlY3Rvcnku
ICovCi0gICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fZGlyZWN0b3J5X2luZGV4IGJlZ2lu
X2luZGV4OyAvKiBpbmNsdXNpdmUgKi8KKyAgICBwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9k
aXJlY3RvcnlfaW5kZXggYmVnaW5faW5kZXg7IC8qIGluY2x1c2l2ZSwgYnV0IGNhbm5vdCBiZSB6
ZXJvLCBzbyB3ZSBjYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldGVjdCByYWNlcyAod2UgY291bGQgcmVsYXggdGhpcyBp
ZiB3ZSBqdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtYWRlIHRoaXMgImJlZ2luX2luZGV4X3BsdXNfb25lIiBvciBzb21l
dGhpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxpa2UgdGhhdCkgKi8KICAgICBwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1
bV9kaXJlY3RvcnlfaW5kZXggZW5kX2luZGV4OyAvKiBpbmNsdXNpdmUgKi8KIH07CiAKSW5kZXg6
IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zZWdyZWdhdGVkX2hlYXBfaW5s
aW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bh
c19zZWdyZWdhdGVkX2hlYXBfaW5saW5lcy5oCShyZXZpc2lvbiAyODc5NjcpCisrKyBTb3VyY2Uv
Ym1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfc2VncmVnYXRlZF9oZWFwX2lubGluZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTgt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTgtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgUEFTX0FMV0FZU19JTkxJ
TkUgYm9vbCBwYXNfc2VncmVnCiAgICAgICAgIHR1cGxlcyA9IHBhc19zZWdyZWdhdGVkX2hlYXBf
bWVkaXVtX2RpcmVjdG9yeV90dXBsZV9wdHJfbG9hZCgKICAgICAgICAgICAgICZkYXRhW3Bhc19k
ZXBlbmQobnVtX21lZGl1bV9kaXJlY3RvcmllcyldLm1lZGl1bV9kaXJlY3Rvcmllcyk7CiAKLSAg
ICAgICAgaWYgKHR1cGxlcykgeworICAgICAgICBpZiAobnVtX21lZGl1bV9kaXJlY3Rvcmllcykg
ewogICAgICAgICAgICAgcmVzdWx0IHw9IHBhc19jb21wYWN0X2V4cGVuZGFibGVfbWVtb3J5X3Rv
dWNoKAogICAgICAgICAgICAgICAgIHR1cGxlcywKICAgICAgICAgICAgICAgICBudW1fbWVkaXVt
X2RpcmVjdG9yaWVzICogc2l6ZW9mKHBhc19zZWdyZWdhdGVkX2hlYXBfbWVkaXVtX2RpcmVjdG9y
eV90dXBsZSksCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL3Rlc3QvRXhwZW5kYWJs
ZU1lbW9yeVRlc3RzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3Jj
L3Rlc3QvRXhwZW5kYWJsZU1lbW9yeVRlc3RzLmNwcAkocmV2aXNpb24gMjg3OTY3KQorKysgU291
cmNlL2JtYWxsb2MvbGlicGFzL3NyYy90ZXN0L0V4cGVuZGFibGVNZW1vcnlUZXN0cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAyMS0yMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjgsMTEgKzI4LDEzIEBACiAjaWYgUEFTX0VOQUJMRV9CTUFMTE9DCiAKICNp
bmNsdWRlICJibWFsbG9jX2hlYXAuaCIKKyNpbmNsdWRlICJibWFsbG9jX2hlYXBfY29uZmlnLmgi
CiAjaW5jbHVkZSA8Y29uZGl0aW9uX3ZhcmlhYmxlPgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1
ZGUgInBhc19jb21wYWN0X2V4cGVuZGFibGVfbWVtb3J5LmgiCiAjaW5jbHVkZSAicGFzX2xhcmdl
X2V4cGVuZGFibGVfbWVtb3J5LmgiCiAjaW5jbHVkZSAicGFzX3NlZ3JlZ2F0ZWRfaGVhcC5oIgor
I2luY2x1ZGUgPHRocmVhZD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtMjEyLDYgKzIx
NCw5NiBAQCB2b2lkIHRlc3RTb01hbnlIZWFwcygpCiAgICAgQ0hFQ0socGFzX3NlZ3JlZ2F0ZWRf
aGVhcF9udW1fc2l6ZV9sb29rdXBfcmVtYXRlcmlhbGl6YXRpb25zKTsKIH0KIAordm9pZCB0ZXN0
UmFnZSh1bnNpZ25lZCBudW1IZWFwcywgZnVuY3Rpb248dW5zaWduZWQodW5zaWduZWQpPiBhbGxv
Y2F0aW9uU2l6ZSwgdW5zaWduZWQgbnVtVGhyZWFkcywKKyAgICAgICAgICAgICAgdW5zaWduZWQg
Y291bnQsIGZ1bmN0aW9uPHZvaWQoKT4gc2xlZXApCit7CisgICAgdGhyZWFkKiB0aHJlYWRzID0g
bmV3IHRocmVhZFtudW1UaHJlYWRzXTsKKyAgICBwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBoZWFw
cyA9IG5ldyBwYXNfcHJpbWl0aXZlX2hlYXBfcmVmW251bUhlYXBzXTsKKworICAgIGZvciAodW5z
aWduZWQgaSA9IG51bUhlYXBzOyBpLS07KQorICAgICAgICBoZWFwc1tpXSA9IEJNQUxMT0NfRkxF
WF9IRUFQX1JFRl9JTklUSUFMSVpFUihuZXcgYm1hbGxvY190eXBlKEJNQUxMT0NfVFlQRV9JTklU
SUFMSVpFUigxLCAxLCAidGVzdCIpKSk7CisKKyAgICBtdXRleCBsb2NrOworICAgIHVuc2lnbmVk
IG51bVRocmVhZHNEb25lID0gMDsKKworICAgIGZvciAodW5zaWduZWQgaSA9IG51bVRocmVhZHM7
IGktLTspIHsKKyAgICAgICAgdGhyZWFkc1tpXSA9IHRocmVhZChbJl0gKCkgeworICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGNvdW50OyArK2opIHsKKyAgICAgICAgICAgICAg
ICBwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBoZWFwID0gaGVhcHMgKyBkZXRlcm1pbmlzdGljUmFu
ZG9tTnVtYmVyKG51bUhlYXBzKTsKKyAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGFsbG9j
YXRpb25TaXplKGopOworICAgICAgICAgICAgICAgIHZvaWQqIHB0ciA9IGJtYWxsb2NfYWxsb2Nh
dGVfZmxleChoZWFwLCBzaXplKTsKKyAgICAgICAgICAgICAgICBDSEVDSyhwdHIpOworICAgICAg
ICAgICAgICAgIENIRUNLX0dSRUFURVJfRVFVQUwoYm1hbGxvY19nZXRfYWxsb2NhdGlvbl9zaXpl
KHB0ciksIHNpemUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRVUFMKGJtYWxsb2NfZ2V0X2hl
YXAocHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBibWFsbG9jX2ZsZXhfaGVhcF9y
ZWZfZ2V0X2hlYXAoaGVhcCkpOworICAgICAgICAgICAgICAgIGJtYWxsb2NfZGVhbGxvY2F0ZShw
dHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9ja19ndWFyZDxtdXRleD4gbG9ja2Vy
KGxvY2spOworICAgICAgICAgICAgbnVtVGhyZWFkc0RvbmUrKzsKKyAgICAgICAgfSk7CisgICAg
fQorCisgICAgd2hpbGUgKG51bVRocmVhZHNEb25lIDwgbnVtVGhyZWFkcykgeworICAgICAgICBw
YXNfc2NhdmVuZ2VyX2RlY29tbWl0X2V4cGVuZGFibGVfbWVtb3J5KCk7CisgICAgICAgIHNsZWVw
KCk7CisgICAgfQorfQorCit2b2lkIHRlc3RSZW1hdGVyaWFsaXplQWZ0ZXJTZWFyY2hPZkRlY29t
bWl0dGVkKCkKK3sKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGluaXRpYWxTaXplID0g
MTY7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzaXplID0gMTA3NTI7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzb21lT3RoZXJTaXplID0gNTAwMDsKKyAgICAKKyAgICBw
YXNfcHJpbWl0aXZlX2hlYXBfcmVmIGhlYXBSZWYgPSBCTUFMTE9DX0ZMRVhfSEVBUF9SRUZfSU5J
VElBTElaRVIoCisgICAgICAgIG5ldyBibWFsbG9jX3R5cGUoQk1BTExPQ19UWVBFX0lOSVRJQUxJ
WkVSKDEsIDEsICJ0ZXN0IikpKTsKKyAgICBwYXNfaGVhcCogaGVhcCA9IGJtYWxsb2NfZmxleF9o
ZWFwX3JlZl9nZXRfaGVhcCgmaGVhcFJlZik7CisKKyAgICB2b2lkKiBwdHIgPSBibWFsbG9jX2Fs
bG9jYXRlX2ZsZXgoJmhlYXBSZWYsIGluaXRpYWxTaXplKTsKKyAgICBDSEVDS19FUVVBTChibWFs
bG9jX2dldF9hbGxvY2F0aW9uX3NpemUocHRyKSwgaW5pdGlhbFNpemUpOworICAgIENIRUNLX0VR
VUFMKGJtYWxsb2NfZ2V0X2hlYXAocHRyKSwgaGVhcCk7CisgICAgQ0hFQ0tfRVFVQUwoaGVhcFJl
Zi5jYWNoZWRfaW5kZXgsIHBhc19zZWdyZWdhdGVkX2hlYXBfaW5kZXhfZm9yX3NpemUoaW5pdGlh
bFNpemUsIEJNQUxMT0NfSEVBUF9DT05GSUcpKTsKKworICAgIHB0ciA9IGJtYWxsb2NfYWxsb2Nh
dGVfZmxleCgmaGVhcFJlZiwgc2l6ZSk7CisgICAgQ0hFQ0tfRVFVQUwoYm1hbGxvY19nZXRfYWxs
b2NhdGlvbl9zaXplKHB0ciksIHNpemUpOworICAgIENIRUNLX0VRVUFMKGJtYWxsb2NfZ2V0X2hl
YXAocHRyKSwgaGVhcCk7CisKKyAgICBwYXNfc2VncmVnYXRlZF92aWV3IHZpZXcgPSBwYXNfc2Vn
cmVnYXRlZF92aWV3X2Zvcl9vYmplY3QoCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0
cl90PihwdHIpLCAmYm1hbGxvY19oZWFwX2NvbmZpZyk7CisgICAgcGFzX3NlZ3JlZ2F0ZWRfc2l6
ZV9kaXJlY3RvcnkqIGRpcmVjdG9yeSA9IHBhc19zZWdyZWdhdGVkX3ZpZXdfZ2V0X3NpemVfZGly
ZWN0b3J5KHZpZXcpOworCisgICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fZGlyZWN0b3J5
X3R1cGxlKiB0dXBsZSA9CisgICAgICAgIHBhc19zZWdyZWdhdGVkX2hlYXBfbWVkaXVtX2RpcmVj
dG9yeV90dXBsZV9mb3JfaW5kZXgoCisgICAgICAgICAgICAmaGVhcC0+c2VncmVnYXRlZF9oZWFw
LAorICAgICAgICAgICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9pbmRleF9mb3Jfc2l6ZShzaXplLCBC
TUFMTE9DX0hFQVBfQ09ORklHKSwKKyAgICAgICAgICAgIHBhc19zZWdyZWdhdGVkX2hlYXBfbWVk
aXVtX3NpemVfZGlyZWN0b3J5X3NlYXJjaF93aXRoaW5fc2l6ZV9jbGFzc19wcm9ncmVzc2lvbiwK
KyAgICAgICAgICAgIHBhc19sb2NrX2lzX25vdF9oZWxkKTsKKworICAgIENIRUNLKHR1cGxlKTsK
KyAgICBDSEVDS19FUVVBTChwYXNfY29tcGFjdF9hdG9taWNfc2VncmVnYXRlZF9zaXplX2RpcmVj
dG9yeV9wdHJfbG9hZCgmdHVwbGUtPmRpcmVjdG9yeSksCisgICAgICAgICAgICAgICAgZGlyZWN0
b3J5KTsKKworICAgIHBhc19zY2F2ZW5nZXJfZmFrZV9kZWNvbW1pdF9leHBlbmRhYmxlX21lbW9y
eSgpOworCisgICAgdHVwbGUtPmJlZ2luX2luZGV4ID0gMDsKKworICAgIHBhc19zZWdyZWdhdGVk
X2hlYXBfbWVkaXVtX2RpcmVjdG9yeV90dXBsZSogc29tZU90aGVyVHVwbGUgPQorICAgICAgICBw
YXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9kaXJlY3RvcnlfdHVwbGVfZm9yX2luZGV4KAorICAg
ICAgICAgICAgJmhlYXAtPnNlZ3JlZ2F0ZWRfaGVhcCwKKyAgICAgICAgICAgIHBhc19zZWdyZWdh
dGVkX2hlYXBfaW5kZXhfZm9yX3NpemUoc29tZU90aGVyU2l6ZSwgQk1BTExPQ19IRUFQX0NPTkZJ
RyksCisgICAgICAgICAgICBwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9zaXplX2RpcmVjdG9y
eV9zZWFyY2hfd2l0aGluX3NpemVfY2xhc3NfcHJvZ3Jlc3Npb24sCisgICAgICAgICAgICBwYXNf
bG9ja19pc19ub3RfaGVsZCk7CisKKyAgICBpZiAoc29tZU90aGVyVHVwbGUpIHsKKyAgICAgICAg
Y291dCA8PCAiVW5leHBlY3RlZGx5IGZvdW5kIGEgdHVwbGU6ICIgPDwgc29tZU90aGVyVHVwbGUg
PDwgIlxuIjsKKyAgICAgICAgY291dCA8PCAiSXQgcG9pbnRzIGF0IGRpcmVjdG9yeSA9ICIKKyAg
ICAgICAgICAgICA8PCBwYXNfY29tcGFjdF9hdG9taWNfc2VncmVnYXRlZF9zaXplX2RpcmVjdG9y
eV9wdHJfbG9hZCgmc29tZU90aGVyVHVwbGUtPmRpcmVjdG9yeSkgPDwgIlxuIjsKKyAgICAgICAg
Y291dCA8PCAiT3VyIG9yaWdpbmFsIGRpcmVjdG9yeSBpcyA9ICIgPDwgZGlyZWN0b3J5IDw8ICJc
biI7CisgICAgfQorICAgIAorICAgIENIRUNLKCFzb21lT3RoZXJUdXBsZSk7Cit9CisKIH0gLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQogCiAjZW5kaWYgLy8gUEFTX0VOQUJMRV9CTUFMTE9DCkBAIC0y
MjIsNiArMzE0LDE5IEBAIHZvaWQgYWRkRXhwZW5kYWJsZU1lbW9yeVRlc3RzKCkKICAgICBBRERf
VEVTVCh0ZXN0U3luY2hyb25vdXNTY2F2ZW5naW5nRXhwZW5kc0V4cGVuZGFibGVNZW1vcnkoKSk7
CiAgICAgQUREX1RFU1QodGVzdFNjYXZlbmdlckV4cGVuZHNFeHBlbmRhYmxlTWVtb3J5KCkpOwog
ICAgIEFERF9URVNUKHRlc3RTb01hbnlIZWFwcygpKTsKKyAgICBBRERfVEVTVCh0ZXN0UmFnZSgx
MCwgW10gKHVuc2lnbmVkKSB7IHJldHVybiBkZXRlcm1pbmlzdGljUmFuZG9tTnVtYmVyKDEwMDAw
MCk7IH0sIDEwLCAxMDAwMDAsIFtdICgpIHsgc2NoZWRfeWllbGQoKTsgfSkpOworICAgIEFERF9U
RVNUKHRlc3RSYWdlKDEwLCBbXSAodW5zaWduZWQgaikgeyByZXR1cm4gZGV0ZXJtaW5pc3RpY1Jh
bmRvbU51bWJlcihqKTsgfSwgMiwgMTAwMDAwMCwgW10gKCkgeyBzY2hlZF95aWVsZCgpOyB9KSk7
CisgICAgQUREX1RFU1QodGVzdFJhZ2UoMTAsIFtdICh1bnNpZ25lZCBqKSB7IHJldHVybiBqOyB9
LCAxMCwgMTAwMDAwLCBbXSAoKSB7IHNjaGVkX3lpZWxkKCk7IH0pKTsKKyAgICBBRERfVEVTVCh0
ZXN0UmFnZSgxMDAwLCBbXSAodW5zaWduZWQpIHsgcmV0dXJuIGRldGVybWluaXN0aWNSYW5kb21O
dW1iZXIoMTAwMDAwKTsgfSwgMTAsIDEwMDAwMCwgW10gKCkgeyBzY2hlZF95aWVsZCgpOyB9KSk7
CisgICAgQUREX1RFU1QodGVzdFJhZ2UoMTAwMCwgW10gKHVuc2lnbmVkIGopIHsgcmV0dXJuIGRl
dGVybWluaXN0aWNSYW5kb21OdW1iZXIoaik7IH0sIDIsIDEwMDAwMDAsIFtdICgpIHsgc2NoZWRf
eWllbGQoKTsgfSkpOworICAgIEFERF9URVNUKHRlc3RSYWdlKDEwMDAsIFtdICh1bnNpZ25lZCBq
KSB7IHJldHVybiBqOyB9LCAxMCwgMTAwMDAwLCBbXSAoKSB7IHNjaGVkX3lpZWxkKCk7IH0pKTsK
KyAgICBBRERfVEVTVCh0ZXN0UmFnZSgxMCwgW10gKHVuc2lnbmVkKSB7IHJldHVybiBkZXRlcm1p
bmlzdGljUmFuZG9tTnVtYmVyKDEwMDAwMCk7IH0sIDIsIDEwMDAwMDAsIFtdICgpIHsgc2NoZWRf
eWllbGQoKTsgfSkpOworICAgIEFERF9URVNUKHRlc3RSYWdlKDEwLCBbXSAodW5zaWduZWQgaikg
eyByZXR1cm4gZGV0ZXJtaW5pc3RpY1JhbmRvbU51bWJlcihqKTsgfSwgMTAsIDEwMDAwMCwgW10g
KCkgeyB1c2xlZXAoMSk7IH0pKTsKKyAgICBBRERfVEVTVCh0ZXN0UmFnZSgxMCwgW10gKHVuc2ln
bmVkIGopIHsgcmV0dXJuIGo7IH0sIDEsIDEwMDAwMCwgW10gKCkgeyB1c2xlZXAoMSk7IH0pKTsK
KyAgICBBRERfVEVTVCh0ZXN0UmFnZSgxMDAwLCBbXSAodW5zaWduZWQpIHsgcmV0dXJuIGRldGVy
bWluaXN0aWNSYW5kb21OdW1iZXIoMTAwMDAwKTsgfSwgMiwgMTAwMDAwMCwgW10gKCkgeyB1c2xl
ZXAoMSk7IH0pKTsKKyAgICBBRERfVEVTVCh0ZXN0UmFnZSgxMDAwLCBbXSAodW5zaWduZWQgaikg
eyByZXR1cm4gZGV0ZXJtaW5pc3RpY1JhbmRvbU51bWJlcihqKTsgfSwgMiwgMTAwMDAwMCwgW10g
KCkgeyB1c2xlZXAoMSk7IH0pKTsKKyAgICBBRERfVEVTVCh0ZXN0UmFnZSgxMDAwLCBbXSAodW5z
aWduZWQgaikgeyByZXR1cm4gajsgfSwgMTAsIDEwMDAwMCwgW10gKCkgeyB1c2xlZXAoMSk7IH0p
KTsKKyAgICBBRERfVEVTVCh0ZXN0UmVtYXRlcmlhbGl6ZUFmdGVyU2VhcmNoT2ZEZWNvbW1pdHRl
ZCgpKTsKICNlbmRpZiAvLyBQQVNfRU5BQkxFX0JNQUxMT0MKIH0KIAo=
</data>
<flag name="review"
          id="475329"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="475385"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449461</attachid>
            <date>2022-01-18 20:28:15 -0800</date>
            <delta_ts>2022-01-20 17:02:39 -0800</delta_ts>
            <desc>better patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>54479</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1h
bGxvYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDIyLTAxLTE2ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2xpYnBhc10gbWVkaXVtIGRpcmVj
dG9yeSBsb29rdXAgc2hvdWxkIGJhaWwgaWYgYmVnaW5faW5kZXggaXMgemVybyB0byBjYXRjaCBy
YWNlcyB3aXRoIGV4cGVuZGFibGUgbWVtb3J5IGRlY29tbWl0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzUyODAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJJ3ZlIGJlZW4gc2VlaW5nIGNyYXNoZXMgaW4g
cGFzX3NlZ3JlZ2F0ZWRfaGVhcF9lbnN1cmVfYWxsb2NhdG9yX2luZGV4IHdoZXJlIHRoZSBkaXJl
Y3RvcnkgdGhhdCBpcworICAgICAgICBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGRvZXNuJ3QgbWF0
Y2ggdGhlIHNpemUuIFRoZSBtb3N0IGxpa2VseSByZWFzb24gd2h5IHRoaXMgaXMgaGFwcGVuaW5n
IGlzIHRoYXQKKyAgICAgICAgdGhlIG1lZGl1bSBkaXJlY3RvcnkgbG9va3VwIHJhY2VkIHdpdGgg
ZXhwZW5kYWJsZSBtZW1vcnkgZGVjb21taXQgYW5kIHJldHVybmVkIHRoZSB3cm9uZyBkaXJlY3Rv
cnkuCisgICAgICAgIFRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaGFwcGVucywgSSBhZGRlZCBhIGJ1
bmNoIG9mIHRlc3RzIHRvIEV4cGVuZGFibGVNZW1vcnlUZXN0cy4gVGhpcyBjaGFuZ2UKKyAgICAg
ICAgaW5jbHVkZXMgdmFyaW91cyBzbWFsbCBmaXhlcyAobGlrZSByZW1vdmluZyBhc3NlcnRpb25z
KSB0aGF0IHdlcmUgZm91bmQgYnkgZG9pbmcgc3VjaCB0ZXN0aW5nLCBhbmQgaXQKKyAgICAgICAg
YWxzbyBpbmNsdWRlcyBhIHRlc3QgYW5kIGEgY2hhbmdlIHRoYXQgSSB0aGluayBleGFjdGx5IGNh
dGNoZXMgd2hhdCBpcyBnb2luZyBvbjoKKworICAgICAgICAtIEV4cGVuZGFibGUgbWVtb3J5IGlz
IGRlY29tbWl0dGVkIHNvIHRoYXQgdGhlIG1lZGl1bSBsb29rdXAgc2VlcyBiZWdpbl9pbmRleCA9
PSAwLCBidXQgZW5kX2luZGV4CisgICAgICAgICAgc3RpbGwgaGFzIGl0cyBvcmlnaW5hbCB2YWx1
ZS4gVGhpcyB3aWxsIGNhdXNlIGl0IHRvIHJldHVybiBhIHR1cGxlIHRoYXQgaXMgZm9yIGEgdG9v
LWxhcmdlIHNpemUKKyAgICAgICAgICBjbGFzcy4KKyAgICAgICAgLSBTb21lIG90aGVyIHRocmVh
ZCByZW1hdGVyaWFsaXplcyB0aGUgZXhwZW5kYWJsZSBtZW1vcnkgcmlnaHQgYWZ0ZXIgdGhlIG1l
ZGl1bSBsb29rdXAgZmluaXNoZXMsIGJ1dAorICAgICAgICAgIGJlZm9yZSBpdCBsb2FkcyB0aGUg
ZGlyZWN0b3J5LgorICAgICAgICAtIFRoZSBtZWRpdW0gbG9va3VwIGZpbmFsbHkgbG9hZHMgdGhl
IGRpcmVjdG9yeSBmcm9tIHRoZSB0dXBsZSwgYW5kIG5vdyBzZWVzIGEgbm9uLU5VTEwgZGlyZWN0
b3J5LCBzbworICAgICAgICAgIGl0IHRoaW5rcyB0aGF0IGV2ZXJ5dGhpbmcgaXMgZmluZS4KKwor
ICAgICAgICBUaGlzIHJhY2UgYmFyZWx5ICJ3b3JrcyIgc2luY2U6CisKKyAgICAgICAgLSBBbnkg
b3RoZXIgZmllbGQgaW4gdGhlIG1lZGl1bSB0dXBsZSBiZWluZyB6ZXJvIHdvdWxkIGNhdXNlIHRo
ZSBtZWRpdW0gbG9va3VwIHRvIGZhaWwsIHdoaWNoIHdvdWxkCisgICAgICAgICAgdGhlbiBjYXVz
ZSBhIHNsb3cgcGF0aCB0aGF0IHJlbWF0ZXJpYWxpemVzIGV4cGVuZGFibGUgbWVtb3J5IHVuZGVy
IGEgbG9jay4KKyAgICAgICAgLSBSZW1hdGVyaWFsaXphdGlvbiBvZiBleHBlbmRhYmxlIG1lbW9y
eSBhZGp1c3RzIHRoZSBtdXRhdGlvbiBjb3VudCwgc28gdGhpcyByYWNlIHdvdWxkIG9ubHkgZ28K
KyAgICAgICAgICB1bmRldGVjdGVkIGlmIHRoZSByZW1hdGVyaWFsaXphdGlvbiBoYXBwZW5lZCBh
ZnRlciB0aGUgbWVkaXVtIGxvb2t1cCBzZWFyY2ggYnV0IGJlZm9yZSB3aGVuIHRoZQorICAgICAg
ICAgIG1lZGl1bSBsb29rdXAgbG9hZHMgdGhlIGRpcmVjdG9yeS4KKworICAgICAgICBUaGUgc29s
dXRpb24gaXMgdG8ganVzdCBoYXZlIHRoZSBtZWRpdW0gbG9va3VwIGZhaWwgaWYgYmVnaW5faW5k
ZXggPT0gMC4gQmVnaW5faW5kZXggY2FuIG5ldmVyCisgICAgICAgIGxlZ2l0aW1hdGVseSBiZSB6
ZXJvLCBiZWNhdXNlIHRoZXJlJ3Mgbm8gd2F5IHRoYXQgYSBzaXplIGNsYXNzIHdvdWxkIHdhbnQg
dG8gYmUgcmVzcG9uc2libGUgZm9yIGJvdGgKKyAgICAgICAgaW5kZXggMCAoaS5lLiB0aGUgemVy
by1ieXRlIG9iamVjdCkgYW5kIG9iamVjdHMgYmlnIGVub3VnaCB0byByZXF1aXJlIG1lZGl1bSBs
b29rdXAuCisKKyAgICAgICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9ibWFsbG9jX2hlYXAuYzoKKyAg
ICAgICAgKGJtYWxsb2NfZmxleF9oZWFwX3JlZl9nZXRfaGVhcCk6CisgICAgICAgIChibWFsbG9j
X2F1eGlsaWFyeV9oZWFwX3JlZl9nZXRfaGVhcCk6CisgICAgICAgIChibWFsbG9jX2dldF9oZWFw
KToKKyAgICAgICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9ibWFsbG9jX2hlYXAuaDoKKyAgICAgICAg
KiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNfZXhwZW5kYWJsZV9tZW1vcnkuYzoKKyAgICAgICAgKHBh
c19leHBlbmRhYmxlX21lbW9yeV9jb21taXRfaWZfbmVjZXNzYXJ5KToKKyAgICAgICAgKHNjYXZl
bmdlX2ltcGwpOgorICAgICAgICAocGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlKToKKyAg
ICAgICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNfZXhwZW5kYWJsZV9tZW1vcnkuaDoKKyAgICAg
ICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNfc2NhdmVuZ2VyLmM6CisgICAgICAgIChoYW5kbGVf
ZXhwZW5kYWJsZV9tZW1vcnkpOgorICAgICAgICAoc2NhdmVuZ2VyX3RocmVhZF9tYWluKToKKyAg
ICAgICAgKHBhc19zY2F2ZW5nZXJfZGVjb21taXRfZXhwZW5kYWJsZV9tZW1vcnkpOgorICAgICAg
ICAocGFzX3NjYXZlbmdlcl9mYWtlX2RlY29tbWl0X2V4cGVuZGFibGVfbWVtb3J5KToKKyAgICAg
ICAgKiBsaWJwYXMvc3JjL2xpYnBhcy9wYXNfc2NhdmVuZ2VyLmg6CisgICAgICAgICogbGlicGFz
L3NyYy9saWJwYXMvcGFzX3NlZ3JlZ2F0ZWRfaGVhcC5jOgorICAgICAgICAobWVkaXVtX2RpcmVj
dG9yeV90dXBsZV9mb3JfaW5kZXhfaW1wbCk6CisgICAgICAgIChwYXNfc2VncmVnYXRlZF9oZWFw
X21lZGl1bV9kaXJlY3RvcnlfdHVwbGVfZm9yX2luZGV4KToKKyAgICAgICAgKHBhc19zZWdyZWdh
dGVkX2hlYXBfbWVkaXVtX2FsbG9jYXRvcl9pbmRleF9mb3JfaW5kZXgpOgorICAgICAgICAocmVj
b21wdXRlX3NpemVfbG9va3VwKToKKyAgICAgICAgKHJlbWF0ZXJpYWxpemVfc2l6ZV9sb29rdXBf
c2V0X21lZGl1bV9kaXJlY3RvcnlfdHVwbGUpOgorICAgICAgICAoY2hlY2tfc2l6ZV9sb29rdXBf
cmVjb21wdXRhdGlvbl9zZXRfbWVkaXVtX2RpcmVjdG9yeV90dXBsZSk6CisgICAgICAgIChwYXNf
c2VncmVnYXRlZF9oZWFwX2Vuc3VyZV9zaXplX2RpcmVjdG9yeV9mb3Jfc2l6ZSk6CisgICAgICAg
ICogbGlicGFzL3NyYy9saWJwYXMvcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9pbmxpbmVzLmg6CisgICAg
ICAgIChwYXNfc2VncmVnYXRlZF9oZWFwX3RvdWNoX2xvb2t1cF90YWJsZXMpOgorICAgICAgICAq
IGxpYnBhcy9zcmMvdGVzdC9FeHBlbmRhYmxlTWVtb3J5VGVzdHMuY3BwOgorICAgICAgICAoc3Rk
Ojp0ZXN0UmFnZSk6CisgICAgICAgIChzdGQ6OnRlc3RSZW1hdGVyaWFsaXplQWZ0ZXJTZWFyY2hP
ZkRlY29tbWl0dGVkKToKKyAgICAgICAgKGFkZEV4cGVuZGFibGVNZW1vcnlUZXN0cyk6CisKIDIw
MjItMDEtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBVc2UgYysrMmEgaW5zdGVhZCBvZiBnbnUrKzJhIGZvciBDb2NvYSBidWlsZHMKSW5k
ZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL2JtYWxsb2NfaGVhcC5jCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL2JtYWxsb2NfaGVhcC5j
CShyZXZpc2lvbiAyODgxNzkpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9i
bWFsbG9jX2hlYXAuYwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKGMpIDIwMTktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTktMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJwYXNfZGVhbGxvY2F0ZS5oIgogI2luY2x1ZGUgInBhc19lbnN1cmVfaGVhcF9mb3JjZWRfaW50
b19yZXNlcnZlZF9tZW1vcnkuaCIKICNpbmNsdWRlICJwYXNfZ2V0X2FsbG9jYXRpb25fc2l6ZS5o
IgorI2luY2x1ZGUgInBhc19nZXRfaGVhcC5oIgogCiBQQVNfQkVHSU5fRVhURVJOX0M7CiAKQEAg
LTI3MSw2ICsyNzIsMTIgQEAgdm9pZCogYm1hbGxvY19yZWFsbG9jYXRlX2ZsZXgocGFzX3ByaW1p
dAogICAgIHJldHVybiBibWFsbG9jX3JlYWxsb2NhdGVfZmxleF9pbmxpbmUoaGVhcF9yZWYsIG9s
ZF9wdHIsIG5ld19zaXplKTsKIH0KIAorcGFzX2hlYXAqIGJtYWxsb2NfZmxleF9oZWFwX3JlZl9n
ZXRfaGVhcChwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBoZWFwX3JlZikKK3sKKyAgICByZXR1cm4g
cGFzX2Vuc3VyZV9oZWFwKCZoZWFwX3JlZi0+YmFzZSwgcGFzX3ByaW1pdGl2ZV9oZWFwX3JlZl9r
aW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJtYWxsb2NfaGVhcF9jb25maWcsICZi
bWFsbG9jX2ZsZXhfcnVudGltZV9jb25maWcuYmFzZSk7Cit9CisKIFBBU19ORVZFUl9JTkxJTkUg
dm9pZCogYm1hbGxvY190cnlfYWxsb2NhdGVfYXV4aWxpYXJ5X3dpdGhfYWxpZ25tZW50X2Nhc3Vh
bCgKICAgICBwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBoZWFwX3JlZiwgc2l6ZV90IHNpemUsIHNp
emVfdCBhbGlnbm1lbnQpCiB7CkBAIC0zMzcsNiArMzQ0LDEyIEBAIHZvaWQqIGJtYWxsb2NfcmVh
bGxvY2F0ZV9hdXhpbGlhcnkodm9pZCoKICAgICByZXR1cm4gYm1hbGxvY19yZWFsbG9jYXRlX2F1
eGlsaWFyeV9pbmxpbmUob2xkX3B0ciwgaGVhcF9yZWYsIG5ld19zaXplLCBmcmVlX21vZGUpOwog
fQogCitwYXNfaGVhcCogYm1hbGxvY19hdXhpbGlhcnlfaGVhcF9yZWZfZ2V0X2hlYXAocGFzX3By
aW1pdGl2ZV9oZWFwX3JlZiogaGVhcF9yZWYpCit7CisgICAgcmV0dXJuIHBhc19lbnN1cmVfaGVh
cCgmaGVhcF9yZWYtPmJhc2UsIHBhc19wcmltaXRpdmVfaGVhcF9yZWZfa2luZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZibWFsbG9jX2hlYXBfY29uZmlnLCAmYm1hbGxvY19wcmltaXRp
dmVfcnVudGltZV9jb25maWcuYmFzZSk7Cit9CisKIHZvaWQgYm1hbGxvY19kZWFsbG9jYXRlKHZv
aWQqIHB0cikKIHsKICAgICBibWFsbG9jX2RlYWxsb2NhdGVfaW5saW5lKHB0cik7CkBAIC0zNjEs
NiArMzc0LDExIEBAIHNpemVfdCBibWFsbG9jX2dldF9hbGxvY2F0aW9uX3NpemUodm9pZCoKICAg
ICByZXR1cm4gcGFzX2dldF9hbGxvY2F0aW9uX3NpemUocHRyLCBCTUFMTE9DX0hFQVBfQ09ORklH
KTsKIH0KIAorcGFzX2hlYXAqIGJtYWxsb2NfZ2V0X2hlYXAodm9pZCogcHRyKQoreworICAgIHJl
dHVybiBwYXNfZ2V0X2hlYXAocHRyLCBCTUFMTE9DX0hFQVBfQ09ORklHKTsKK30KKwogUEFTX0VO
RF9FWFRFUk5fQzsKIAogI2VuZGlmIC8qIFBBU19FTkFCTEVfQk1BTExPQyAqLwpJbmRleDogU291
cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvYm1hbGxvY19oZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvYm1hbGxvY19oZWFwLmgJKHJldmlz
aW9uIDI4ODE3OSkKKysrIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL2JtYWxsb2Nf
aGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
YykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMp
IDIwMjEtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTk2LDYgKzk2LDggQEAgUEFTX0FQSSB2b2lkKiBibWFsbG9j
X2FsbG9jYXRlX2ZsZXhfd2l0aAogUEFTX0JBUEkgdm9pZCogYm1hbGxvY190cnlfcmVhbGxvY2F0
ZV9mbGV4KHBhc19wcmltaXRpdmVfaGVhcF9yZWYqIGhlYXBfcmVmLCB2b2lkKiBvbGRfcHRyLCBz
aXplX3QgbmV3X3NpemUpOwogUEFTX0JBUEkgdm9pZCogYm1hbGxvY19yZWFsbG9jYXRlX2ZsZXgo
cGFzX3ByaW1pdGl2ZV9oZWFwX3JlZiogaGVhcF9yZWYsIHZvaWQqIG9sZF9wdHIsIHNpemVfdCBu
ZXdfc2l6ZSk7CiAKK1BBU19BUEkgcGFzX2hlYXAqIGJtYWxsb2NfZmxleF9oZWFwX3JlZl9nZXRf
aGVhcChwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBoZWFwX3JlZik7CisKIFBBU19BUEkgdm9pZCog
Ym1hbGxvY190cnlfYWxsb2NhdGVfYXV4aWxpYXJ5KHBhc19wcmltaXRpdmVfaGVhcF9yZWYqIGhl
YXBfcmVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHNpemUpOwogUEFTX0FQSSB2b2lkKiBibWFsbG9jX2FsbG9jYXRlX2F1eGlsaWFyeShwYXNf
cHJpbWl0aXZlX2hlYXBfcmVmKiBoZWFwX3JlZiwKQEAgLTEyMiw2ICsxMjQsOCBAQCBQQVNfQVBJ
IHZvaWQqIGJtYWxsb2NfcmVhbGxvY2F0ZV9hdXhpbGlhCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ld19zaXplLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhc19yZWFsbG9jYXRlX2ZyZWVfbW9kZSBmcmVlX21v
ZGUpOwogCitQQVNfQVBJIHBhc19oZWFwKiBibWFsbG9jX2F1eGlsaWFyeV9oZWFwX3JlZl9nZXRf
aGVhcChwYXNfcHJpbWl0aXZlX2hlYXBfcmVmKiBoZWFwX3JlZik7CisKIFBBU19BUEkgdm9pZCBi
bWFsbG9jX2RlYWxsb2NhdGUodm9pZCopOwogCiBQQVNfQVBJIHBhc19oZWFwKiBibWFsbG9jX2Zv
cmNlX2F1eGlsaWFyeV9oZWFwX2ludG9fcmVzZXJ2ZWRfbWVtb3J5KHBhc19wcmltaXRpdmVfaGVh
cF9yZWYqIGhlYXBfcmVmLApAQCAtMTI5LDYgKzEzMyw3IEBAIFBBU19BUEkgcGFzX2hlYXAqIGJt
YWxsb2NfZm9yY2VfYXV4aWxpYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludHB0cl90IGVuZCk7CiAKIFBBU19C
QVBJIHNpemVfdCBibWFsbG9jX2hlYXBfcmVmX2dldF90eXBlX3NpemUocGFzX2hlYXBfcmVmKiBo
ZWFwX3JlZik7CitQQVNfQVBJIHBhc19oZWFwKiBibWFsbG9jX2dldF9oZWFwKHZvaWQqIHB0cik7
CiBQQVNfQkFQSSBzaXplX3QgYm1hbGxvY19nZXRfYWxsb2NhdGlvbl9zaXplKHZvaWQqIHB0cik7
CiAKIFBBU19FTkRfRVhURVJOX0M7CkluZGV4OiBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xp
YnBhcy9wYXNfZXhwZW5kYWJsZV9tZW1vcnkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxv
Yy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfZXhwZW5kYWJsZV9tZW1vcnkuYwkocmV2aXNpb24gMjg4
MTc5KQorKysgU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFzX2V4cGVuZGFibGVf
bWVtb3J5LmMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
YykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsMTcgQEAKICNpbmNsdWRlICJwYXNfaGVh
cF9sb2NrLmgiCiAjaW5jbHVkZSAicGFzX3BhZ2VfbWFsbG9jLmgiCiAKK3Bhc19leHBlbmRhYmxl
X21lbW9yeV9zdGF0ZV92ZXJzaW9uIHBhc19leHBlbmRhYmxlX21lbW9yeV92ZXJzaW9uX2NvdW50
ZXIgPSAxOworCitwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc3RhdGVfdmVyc2lvbiBwYXNfZXhwZW5k
YWJsZV9tZW1vcnlfc3RhdGVfdmVyc2lvbl9uZXh0KHZvaWQpCit7CisgICAgcGFzX2V4cGVuZGFi
bGVfbWVtb3J5X3N0YXRlX3ZlcnNpb24gcmVzdWx0OworICAgIHBhc19oZWFwX2xvY2tfYXNzZXJ0
X2hlbGQoKTsKKyAgICByZXN1bHQgPSArK3Bhc19leHBlbmRhYmxlX21lbW9yeV92ZXJzaW9uX2Nv
dW50ZXI7CisgICAgUEFTX0FTU0VSVChyZXN1bHQgPiAxKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCiB2b2lkIHBhc19leHBlbmRhYmxlX21lbW9yeV9jb25zdHJ1Y3QocGFzX2V4cGVuZGFibGVf
bWVtb3J5KiBtZW1vcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHNpemUpCiB7CkBAIC00Myw3ICs1NCw3IEBAIHZvaWQgcGFzX2V4cGVuZGFibGVfbWVtb3J5
X2NvbnN0cnVjdChwYXMKICAgICBtZW1vcnktPnNpemUgPSAodW5zaWduZWQpc2l6ZTsKIAogICAg
IFBBU19BU1NFUlQocGFzX2lzX2FsaWduZWQoc2l6ZSwgUEFTX0VYUEVOREFCTEVfTUVNT1JZX1BB
R0VfU0laRSkpOwotICAgIAorCiAgICAgZm9yIChpbmRleCA9IHNpemUgLyBQQVNfRVhQRU5EQUJM
RV9NRU1PUllfUEFHRV9TSVpFOyBpbmRleC0tOykgewogICAgICAgICBtZW1vcnktPnN0YXRlc1tp
bmRleF0gPQogICAgICAgICAgICAgcGFzX2V4cGVuZGFibGVfbWVtb3J5X3N0YXRlX2NyZWF0ZShQ
QVNfRVhQRU5EQUJMRV9NRU1PUllfU1RBVEVfS0lORF9ERUNPTU1JVFRFRCwgMSk7CkBAIC0yMjAs
MTAgKzIzMSwxMiBAQCBib29sIHBhc19leHBlbmRhYmxlX21lbW9yeV9jb21taXRfaWZfbmVjCiAg
ICAgfQogCiAgICAgUEFTX0FTU0VSVChmaXJzdF92ZXJzaW9uID49IGhlYWRlcl92ZXJzaW9uKTsK
LSAgICBQQVNfQVNTRVJUKGxhc3RfdmVyc2lvbiA+PSBoZWFkZXJfdmVyc2lvbik7Ci0gICAgUEFT
X0FTU0VSVChmaXJzdF92ZXJzaW9uID4gaGVhZGVyX3ZlcnNpb24gfHwgbGFzdF92ZXJzaW9uID4g
aGVhZGVyX3ZlcnNpb24pOwogCi0gICAgbmV3X3ZlcnNpb24gPSBQQVNfTUFYKGZpcnN0X3ZlcnNp
b24sIGxhc3RfdmVyc2lvbik7CisgICAgLyogV2UnZCBsaWtlIHRvIGFzc2VydCB0aGF0IGxhc3Rf
dmVyc2lvbiA+PSBoZWFkZXJfdmVyc2lvbiwgZXhjZXB0IHRoYXQgaXQncyBwb3NzaWJsZSBmb3Ig
c29tZW9uZSB0bworICAgICAgIGRvIGEgY29tbWl0X2lmX25lY2Vzc2FyeSBvbiB0aGUgcHJlZml4
IG9mIHRoaXMgb2JqZWN0LCBhbmQgdGhlbiBub3QgdXBkYXRlIGxhc3RfdmVyc2lvbi4gU28sCisg
ICAgICAgbGFzdF92ZXJzaW9uIGNvdWxkIGJlIHN0dWNrIGFyYml0cmFyaWx5IGluIHRoZSBwYXN0
LiAqLworCisgICAgbmV3X3ZlcnNpb24gPSBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc3RhdGVfdmVy
c2lvbl9uZXh0KCk7CiAgICAgbmV3X3N0YXRlID0gcGFzX2V4cGVuZGFibGVfbWVtb3J5X3N0YXRl
X2NyZWF0ZShQQVNfRVhQRU5EQUJMRV9NRU1PUllfU1RBVEVfS0lORF9KVVNUX1VTRUQsIG5ld192
ZXJzaW9uKTsKIAogICAgIGhlYWRlci0+c3RhdGVzW2ZpcnN0XSA9IG5ld19zdGF0ZTsKQEAgLTIz
OSw3ICsyNTIsNyBAQCBpZ25vcmVfbGFzdF9wYWdlOgogCiAgICAgUEFTX0FTU0VSVChmaXJzdF92
ZXJzaW9uID4gaGVhZGVyX3ZlcnNpb24pOwogCi0gICAgbmV3X3ZlcnNpb24gPSBmaXJzdF92ZXJz
aW9uOworICAgIG5ld192ZXJzaW9uID0gcGFzX2V4cGVuZGFibGVfbWVtb3J5X3N0YXRlX3ZlcnNp
b25fbmV4dCgpOwogICAgIG5ld19zdGF0ZSA9IHBhc19leHBlbmRhYmxlX21lbW9yeV9zdGF0ZV9j
cmVhdGUoUEFTX0VYUEVOREFCTEVfTUVNT1JZX1NUQVRFX0tJTkRfSlVTVF9VU0VELCBuZXdfdmVy
c2lvbik7CiAKICAgICBoZWFkZXItPnN0YXRlc1tmaXJzdF0gPSBuZXdfc3RhdGU7CkBAIC0yNDks
MTYgKzI2MiwxOSBAQCBkb25lOgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBz
Y2F2ZW5nZV9pbXBsKHBhc19leHBlbmRhYmxlX21lbW9yeSogaGVhZGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkKiBwYXlsb2FkLAotICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2Vfa2luZCBzY2F2ZW5nZV9raW5kKQorc3RhdGlj
IFBBU19BTFdBWVNfSU5MSU5FIGJvb2wgc2NhdmVuZ2VfaW1wbChwYXNfZXhwZW5kYWJsZV9tZW1v
cnkqIGhlYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZCogcGF5bG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX2tpbmQgc2NhdmVuZ2Vfa2luZCkKIHsK
ICAgICBzaXplX3QgaW5kZXg7CiAgICAgc2l6ZV90IGluZGV4X2VuZDsKICAgICBib29sIHJlc3Vs
dDsKKyAgICBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc3RhdGVfdmVyc2lvbiBkZWNvbW1pdF92ZXJz
aW9uOwogICAgIAogICAgIHBhc19oZWFwX2xvY2tfYXNzZXJ0X2hlbGQoKTsKIAorICAgIGRlY29t
bWl0X3ZlcnNpb24gPSBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc3RhdGVfdmVyc2lvbl9uZXh0KCk7
CisKICAgICBQQVNfQVNTRVJUKGhlYWRlci0+c2l6ZSk7CiAgICAgUEFTX0FTU0VSVChwYXNfaXNf
YWxpZ25lZChoZWFkZXItPnNpemUsIFBBU19FWFBFTkRBQkxFX01FTU9SWV9QQUdFX1NJWkUpKTsK
ICAgICBQQVNfQVNTRVJUKGhlYWRlci0+YnVtcCA8IGhlYWRlci0+c2l6ZSk7CkBAIC0zMTIsMTQg
KzMyOCwxNSBAQCBzdGF0aWMgYm9vbCBzY2F2ZW5nZV9pbXBsKHBhc19leHBlbmRhYmxlCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgUEFTX0FTU0VSVChzY2F2ZW5nZV9raW5kID09IHBhc19l
eHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWQpOworICAgICAgICAgICAgICAgIFBBU19B
U1NFUlQoc2NhdmVuZ2Vfa2luZCA9PSBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2VfZm9y
Y2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzY2F2ZW5nZV9raW5kID09IHBhc19l
eHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWRfZmFrZSk7CiAgICAgICAgICAgICAgICAg
aWYgKGtpbmQgPCBQQVNfRVhQRU5EQUJMRV9NRU1PUllfU1RBVEVfS0lORF9KVVNUX1VTRUQpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIFBBU19URVNUSU5HX0FT
U0VSVChraW5kIDw9IFBBU19FWFBFTkRBQkxFX01FTU9SWV9TVEFURV9LSU5EX01BWF9KVVNUX1VT
RUQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaGVhZGVyLT5zdGF0ZXNbb3RoZXJfaW5k
ZXhdID0gcGFzX2V4cGVuZGFibGVfbWVtb3J5X3N0YXRlX2NyZWF0ZSgKICAgICAgICAgICAgICAg
ICBQQVNfRVhQRU5EQUJMRV9NRU1PUllfU1RBVEVfS0lORF9ERUNPTU1JVFRFRCwKLSAgICAgICAg
ICAgICAgICBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc3RhdGVfZ2V0X3ZlcnNpb24oc3RhdGUpICsg
MSk7CisgICAgICAgICAgICAgICAgZGVjb21taXRfdmVyc2lvbik7CiAgICAgICAgIH0KIAogICAg
ICAgICAvKiBNYWtlIHN1cmUgdGhhdCBieSB0aGUgdGltZSB3ZSBkZWNvbW1pdCwgbm9ib2R5IGNh
biBsaWUgYWJvdXQgdXNpbmcgdGhlIHN0dWZmIHdlIGFyZSBkZWNvbW1pdHRpbmcuCkBAIC0zMjcs
OCArMzQ0LDEwIEBAIHN0YXRpYyBib29sIHNjYXZlbmdlX2ltcGwocGFzX2V4cGVuZGFibGUKICAg
ICAgICAgICAgbWVtb3J5LiBTbywgaXQgbWlnaHQgaGFwcGVuIGFmdGVyIHdlIGhhdmUgYWxyZWFk
eSBkZWNvbW1pdHRlZCwgb3IgZGVjaWRlZCB0byBkZWNvbW1pdC4gKi8KICAgICAgICAgcGFzX3N0
b3JlX3N0b3JlX2ZlbmNlKCk7CiAKLSAgICAgICAgcGFzX3BhZ2VfbWFsbG9jX2RlY29tbWl0X2Fz
eW1tZXRyaWMoKGNoYXIqKXBheWxvYWQgKyBpbmRleCAqIFBBU19FWFBFTkRBQkxFX01FTU9SWV9Q
QUdFX1NJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChv
dGhlcl9pbmRleCAtIGluZGV4KSAqIFBBU19FWFBFTkRBQkxFX01FTU9SWV9QQUdFX1NJWkUpOwor
ICAgICAgICBpZiAoc2NhdmVuZ2Vfa2luZCAhPSBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVu
Z2VfZm9yY2VkX2Zha2UpIHsKKyAgICAgICAgICAgIHBhc19wYWdlX21hbGxvY19kZWNvbW1pdF9h
c3ltbWV0cmljKChjaGFyKilwYXlsb2FkICsgaW5kZXggKiBQQVNfRVhQRU5EQUJMRV9NRU1PUllf
UEFHRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKG90aGVyX2luZGV4IC0gaW5kZXgpICogUEFTX0VYUEVOREFCTEVfTUVNT1JZX1BBR0VfU0la
RSk7CisgICAgICAgIH0KIAogICAgICAgICAvKiBBdCB0aGlzIHBvaW50LCBhbnkgb2YgdGhlIHBh
Z2VzIGluIHRoaXMgcmFuZ2UgY291bGQgZ2V0IGRlY29tbWl0dGVkLCBidXQgaXQgd29uJ3QgbmVj
ZXNzYXJpbHkKICAgICAgICAgICAgaGFwcGVuIGltbWVkaWF0ZWx5LiBBbnkgd3JpdGUgdG8gdGhl
c2UgcGFnZXMgd2lsbCBjYW5jZWwgdGhlIGRlY29tbWl0LCBvciB1bmRvIGl0IGlmIGl0J3MgYWxy
ZWFkeQpAQCAtMzYyLDkgKzM4MSw2IEBAIHN0YXRpYyBib29sIHNjYXZlbmdlX2ltcGwocGFzX2V4
cGVuZGFibGUKICAgICAgICAgaW5kZXggPSBvdGhlcl9pbmRleCAtIDE7CiAgICAgfQogCi0gICAg
aWYgKHNjYXZlbmdlX2tpbmQgPT0gcGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX2ZvcmNl
ZCkKLSAgICAgICAgUEFTX0FTU0VSVCghcmVzdWx0KTsKLQogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTM3MiwxMyArMzg4LDE4IEBAIGJvb2wgcGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZl
bmdlKHBhc18KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHBheWxv
YWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNfZXhwZW5kYWJsZV9t
ZW1vcnlfc2NhdmVuZ2Vfa2luZCBraW5kKQogewotICAgIHN3aXRjaCAoa2luZCkgewotICAgIGNh
c2UgcGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX3BlcmlvZGljOgorICAgIGJvb2wgcmVz
dWx0OworICAgIAorICAgIGlmIChraW5kID09IHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5n
ZV9wZXJpb2RpYykgeworICAgICAgICAvKiBTcGVjaWFsaXplIGZvciB0aGlzIGNhc2UuIFdlIHdh
bnQgdGhlIHNjYXZlbmdlciB0byBiZSBmYXN0LiAqLwogICAgICAgICByZXR1cm4gc2NhdmVuZ2Vf
aW1wbChoZWFkZXIsIHBheWxvYWQsIHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9wZXJp
b2RpYyk7Ci0gICAgY2FzZSBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2VfZm9yY2VkOgot
ICAgICAgICByZXR1cm4gc2NhdmVuZ2VfaW1wbChoZWFkZXIsIHBheWxvYWQsIHBhc19leHBlbmRh
YmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWQpOwogICAgIH0KLSAgICBQQVNfQVNTRVJUKCEiU2hv
dWxkIG5vdCBiZSByZWFjaGVkIik7CisKKyAgICBQQVNfQVNTRVJUKGtpbmQgPT0gcGFzX2V4cGVu
ZGFibGVfbWVtb3J5X3NjYXZlbmdlX2ZvcmNlZAorICAgICAgICAgICAgICAgfHwga2luZCA9PSBw
YXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2VfZm9yY2VkX2Zha2UpOworCisgICAgcmVzdWx0
ID0gc2NhdmVuZ2VfaW1wbChoZWFkZXIsIHBheWxvYWQsIGtpbmQpOworICAgIFBBU19BU1NFUlQo
IXJlc3VsdCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9s
aWJwYXMvc3JjL2xpYnBhcy9wYXNfZXhwZW5kYWJsZV9tZW1vcnkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfZXhwZW5kYWJsZV9tZW1vcnkuaAko
cmV2aXNpb24gMjg4MTc5KQorKysgU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMvcGFz
X2V4cGVuZGFibGVfbWVtb3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChjKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoYykgMjAyMS0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsNiArNTMsOCBAQCBzdHJ1Y3Qg
cGFzX2V4cGVuZGFibGVfbWVtb3J5IHsKIAogI2RlZmluZSBQQVNfRVhQRU5EQUJMRV9NRU1PUllf
UEFHRV9TSVpFIDE2Mzg0bHUKIAorUEFTX0FQSSBleHRlcm4gcGFzX2V4cGVuZGFibGVfbWVtb3J5
X3N0YXRlX3ZlcnNpb24gcGFzX2V4cGVuZGFibGVfbWVtb3J5X3ZlcnNpb25fY291bnRlcjsKKwog
ZW51bSBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfdG91Y2hfa2luZCB7CiAgICAgcGFzX2V4cGVuZGFi
bGVfbWVtb3J5X3RvdWNoX3RvX25vdGVfdXNlLAogICAgIHBhc19leHBlbmRhYmxlX21lbW9yeV90
b3VjaF90b19jb21taXRfaWZfbmVjZXNzYXJ5CkBAIC02MSw4ICs2MywxNSBAQCBlbnVtIHBhc19l
eHBlbmRhYmxlX21lbW9yeV90b3VjaF9raW5kIHsKIHR5cGVkZWYgZW51bSBwYXNfZXhwZW5kYWJs
ZV9tZW1vcnlfdG91Y2hfa2luZCBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfdG91Y2hfa2luZDsKIAog
ZW51bSBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2Vfa2luZCB7CisgICAgLyogRGVjb21t
aXRzIG9ubHkgdGhpbmdzIHRoYXQgaGF2ZW4ndCBiZWVuIHVzZWQgcmVjZW50bHksIGFuZCBkb2Vz
IHRoZSBjb3VudCBpbmNyZW1lbnQgdGhhdCBhbGxvd3MgdXMKKyAgICAgICB0byB0ZWxsIHRoYXQg
c29tZXRoaW5nIGhhc24ndCBiZWVuIHVzZWQgcmVjZW50bHkuICovCiAgICAgcGFzX2V4cGVuZGFi
bGVfbWVtb3J5X3NjYXZlbmdlX3BlcmlvZGljLAotICAgIHBhc19leHBlbmRhYmxlX21lbW9yeV9z
Y2F2ZW5nZV9mb3JjZWQKKworICAgIC8qIERlY29tbWl0cyBldmVyeXRoaW5nIHRoYXQgaXQgY2Fu
LiAqLworICAgIHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWQsCisKKyAgICAv
KiBQcmV0ZW5kcyB0byBkZWNvbW1pdCBldmVyeXRoaW5nIHRoYXQgaXQgY2FuIHdpdGhvdXQgbWFr
aW5nIGFueSBzeXNjYWxscyAodXNlZnVsIGZvciB0ZXN0aW5nKS4gKi8KKyAgICBwYXNfZXhwZW5k
YWJsZV9tZW1vcnlfc2NhdmVuZ2VfZm9yY2VkX2Zha2UsCiB9OwogCiB0eXBlZGVmIGVudW0gcGFz
X2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX2tpbmQgcGFzX2V4cGVuZGFibGVfbWVtb3J5X3Nj
YXZlbmdlX2tpbmQ7CkBAIC03OSw2ICs4OCw4IEBAIHBhc19leHBlbmRhYmxlX21lbW9yeV9zdGF0
ZV9nZXRfdmVyc2lvbigKICAgICByZXR1cm4gc3RhdGUgPj4gUEFTX0VYUEVOREFCTEVfTUVNT1JZ
X1NUQVRFX05VTV9LSU5EX0JJVFM7CiB9CiAKK1BBU19BUEkgcGFzX2V4cGVuZGFibGVfbWVtb3J5
X3N0YXRlX3ZlcnNpb24gcGFzX2V4cGVuZGFibGVfbWVtb3J5X3N0YXRlX3ZlcnNpb25fbmV4dCh2
b2lkKTsKKwogc3RhdGljIGlubGluZSBwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc3RhdGUgcGFzX2V4
cGVuZGFibGVfbWVtb3J5X3N0YXRlX2NyZWF0ZSgKICAgICBwYXNfZXhwZW5kYWJsZV9tZW1vcnlf
c3RhdGVfa2luZCBraW5kLAogICAgIHBhc19leHBlbmRhYmxlX21lbW9yeV9zdGF0ZV92ZXJzaW9u
IHZlcnNpb24pCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfc2Nh
dmVuZ2VyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvbGlicGFzL3NyYy9saWJwYXMv
cGFzX3NjYXZlbmdlci5jCShyZXZpc2lvbiAyODgxNzkpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJw
YXMvc3JjL2xpYnBhcy9wYXNfc2NhdmVuZ2VyLmMJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAyMDE5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChjKSAyMDE5LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMzMsNiAr
MTMzLDE2IEBAIHN0YXRpYyB2b2lkIHRpbWVkX3dhaXQocHRocmVhZF9jb25kX3QqIGMKICAgICAg
ICAgcHJpbnRmKCJXb2tlIHVwIGZyb20gdGltZWQgd2FpdCBhdCAlLjJsZi5cbiIsIGdldF90aW1l
X2luX21pbGxpc2Vjb25kcygpKTsKIH0KIAorc3RhdGljIGJvb2wgaGFuZGxlX2V4cGVuZGFibGVf
bWVtb3J5KHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9raW5kIGtpbmQpCit7CisgICAg
Ym9vbCBzaG91bGRfZ29fYWdhaW4gPSBmYWxzZTsKKyAgICBwYXNfaGVhcF9sb2NrX2xvY2soKTsK
KyAgICBzaG91bGRfZ29fYWdhaW4gfD0gcGFzX2NvbXBhY3RfZXhwZW5kYWJsZV9tZW1vcnlfc2Nh
dmVuZ2Uoa2luZCk7CisgICAgc2hvdWxkX2dvX2FnYWluIHw9IHBhc19sYXJnZV9leHBlbmRhYmxl
X21lbW9yeV9zY2F2ZW5nZShraW5kKTsKKyAgICBwYXNfaGVhcF9sb2NrX3VubG9jaygpOworICAg
IHJldHVybiBzaG91bGRfZ29fYWdhaW47Cit9CisKIHN0YXRpYyB2b2lkKiBzY2F2ZW5nZXJfdGhy
ZWFkX21haW4odm9pZCogYXJnKQogewogICAgIHBhc19zY2F2ZW5nZXJfZGF0YSogZGF0YTsKQEAg
LTIwMCwxMCArMjEwLDcgQEAgc3RhdGljIHZvaWQqIHNjYXZlbmdlcl90aHJlYWRfbWFpbih2b2lk
KgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc19kZWFsbG9j
YXRvcl9zY2F2ZW5nZV9mbHVzaF9sb2dfaWZfY2xlYW5fYWN0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc19sb2NrX2lzX25vdF9oZWxkKTsKIAotICAg
ICAgICBwYXNfaGVhcF9sb2NrX2xvY2soKTsKLSAgICAgICAgc2hvdWxkX2dvX2FnYWluIHw9IHBh
c19jb21wYWN0X2V4cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlKHBhc19leHBlbmRhYmxlX21lbW9y
eV9zY2F2ZW5nZV9wZXJpb2RpYyk7Ci0gICAgICAgIHNob3VsZF9nb19hZ2FpbiB8PSBwYXNfbGFy
Z2VfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVuZ2UocGFzX2V4cGVuZGFibGVfbWVtb3J5X3NjYXZl
bmdlX3BlcmlvZGljKTsKLSAgICAgICAgcGFzX2hlYXBfbG9ja191bmxvY2soKTsKKyAgICAgICAg
c2hvdWxkX2dvX2FnYWluIHw9IGhhbmRsZV9leHBlbmRhYmxlX21lbW9yeShwYXNfZXhwZW5kYWJs
ZV9tZW1vcnlfc2NhdmVuZ2VfcGVyaW9kaWMpOwogCiAgICAgICAgIC8qIEZvciB0aGUgcHVycG9z
ZXMgb2YgcGVyZm9ybWFuY2UgdHVuaW5nLCBhcyB3ZWxsIGFzIHNvbWUgb2YgdGhlIHNjYXZlbmdl
ciB0ZXN0cywgdGhlIGVwb2NoCiAgICAgICAgICAgIGlzIHRpbWUgaW4gbmFub3NlY29uZHMuCkBA
IC00NzgsMTAgKzQ4NSwxMiBAQCB2b2lkIHBhc19zY2F2ZW5nZXJfY2xlYXJfYWxsX2NhY2hlcyh2
b2lkCiAKIHZvaWQgcGFzX3NjYXZlbmdlcl9kZWNvbW1pdF9leHBlbmRhYmxlX21lbW9yeSh2b2lk
KQogewotICAgIHBhc19oZWFwX2xvY2tfbG9jaygpOwotICAgIHBhc19jb21wYWN0X2V4cGVuZGFi
bGVfbWVtb3J5X3NjYXZlbmdlKHBhc19leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZV9mb3JjZWQp
OwotICAgIHBhc19sYXJnZV9leHBlbmRhYmxlX21lbW9yeV9zY2F2ZW5nZShwYXNfZXhwZW5kYWJs
ZV9tZW1vcnlfc2NhdmVuZ2VfZm9yY2VkKTsKLSAgICBwYXNfaGVhcF9sb2NrX3VubG9jaygpOwor
ICAgIGhhbmRsZV9leHBlbmRhYmxlX21lbW9yeShwYXNfZXhwZW5kYWJsZV9tZW1vcnlfc2NhdmVu
Z2VfZm9yY2VkKTsKK30KKwordm9pZCBwYXNfc2NhdmVuZ2VyX2Zha2VfZGVjb21taXRfZXhwZW5k
YWJsZV9tZW1vcnkodm9pZCkKK3sKKyAgICBoYW5kbGVfZXhwZW5kYWJsZV9tZW1vcnkocGFzX2V4
cGVuZGFibGVfbWVtb3J5X3NjYXZlbmdlX2ZvcmNlZF9mYWtlKTsKIH0KIAogc2l6ZV90IHBhc19z
Y2F2ZW5nZXJfZGVjb21taXRfZnJlZV9tZW1vcnkodm9pZCkKSW5kZXg6IFNvdXJjZS9ibWFsbG9j
L2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zY2F2ZW5nZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Ym1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfc2NhdmVuZ2VyLmgJKHJldmlzaW9uIDI4ODE3
OSkKKysrIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zY2F2ZW5nZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTkt
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTktMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTEwMyw2ICsxMDMsNyBAQCBQQVNfQVBJIHZvaWQgcGFzX3NjYXZl
bmdlcl9jbGVhcl9hbGxfbm9uCiBQQVNfQVBJIHZvaWQgcGFzX3NjYXZlbmdlcl9jbGVhcl9hbGxf
Y2FjaGVzX2V4Y2VwdF9yZW1vdGVfdGxjcyh2b2lkKTsKIFBBU19BUEkgdm9pZCBwYXNfc2NhdmVu
Z2VyX2NsZWFyX2FsbF9jYWNoZXModm9pZCk7CiBQQVNfQVBJIHZvaWQgcGFzX3NjYXZlbmdlcl9k
ZWNvbW1pdF9leHBlbmRhYmxlX21lbW9yeSh2b2lkKTsKK1BBU19BUEkgdm9pZCBwYXNfc2NhdmVu
Z2VyX2Zha2VfZGVjb21taXRfZXhwZW5kYWJsZV9tZW1vcnkodm9pZCk7IC8qIFVzZWZ1bCBmb3Ig
dGVzdGluZy4gKi8KIFBBU19BUEkgc2l6ZV90IHBhc19zY2F2ZW5nZXJfZGVjb21taXRfZnJlZV9t
ZW1vcnkodm9pZCk7CiAKIFBBU19BUEkgdm9pZCBwYXNfc2NhdmVuZ2VyX3J1bl9zeW5jaHJvbm91
c2x5X25vdyh2b2lkKTsKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bh
c19zZWdyZWdhdGVkX2hlYXAuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9saWJwYXMv
c3JjL2xpYnBhcy9wYXNfc2VncmVnYXRlZF9oZWFwLmMJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNv
dXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zZWdyZWdhdGVkX2hlYXAuYwkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTgt
MjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ3LDYgKzQ3LDExIEBACiAKIHVuc2lnbmVkIHBhc19zZWdyZWdhdGVk
X2hlYXBfbnVtX3NpemVfbG9va3VwX3JlbWF0ZXJpYWxpemF0aW9uczsKIAorc3RhdGljIHZvaWQg
Y2hlY2tfc2l6ZV9sb29rdXBfcmVjb21wdXRhdGlvbl9pZl9hcHByb3ByaWF0ZShwYXNfc2VncmVn
YXRlZF9oZWFwKiBoZWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXNfaGVhcF9jb25maWcqIGNvbmZpZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
KmNhY2hlZF9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogd2hlcmUpOworCiBzdGF0aWMgc2l6ZV90IG1p
bl9vYmplY3Rfc2l6ZV9mb3JfaGVhcF9jb25maWcocGFzX2hlYXBfY29uZmlnKiBjb25maWcpCiB7
CiAgICAgcGFzX3NlZ3JlZ2F0ZWRfcGFnZV9jb25maWdfdmFyaWFudCBzZWdyZWdhdGVkX3Zhcmlh
bnQ7CkBAIC0zNzgsNiArMzgzLDE1IEBAIG1lZGl1bV9kaXJlY3RvcnlfdHVwbGVfZm9yX2luZGV4
X2ltcGwoCiAgICAgICAgIH0KIAogICAgICAgICBiZWdpbl9pbmRleCA9IGRpcmVjdG9yeS0+YmVn
aW5faW5kZXg7CisKKyAgICAgICAgLyogVGhpcyBpcyBuZWNlc3NhcnkgdG8gZ3VhcmQgYWdhaW5z
dCB0aGUgbWVkaXVtIHR1cGxlIGFycmF5IGJlaW5nIGRlY29tbWl0dGVkIGF0IHRoZSB3cm9uZyB0
aW1lLAorICAgICAgICAgICBvciB0aGUgdHVwbGUgc3RyYWRkbGluZyBwYWdlIGJvdW5kYXJ5LCBs
ZWFkaW5nIHRvIHRoZSBiZWdpbiBpbmRleCBiZWluZyB6ZXJvIGFuZCB0aGUgZW5kX2luZGV4Cisg
ICAgICAgICAgIGhhdmluZyBpdHMgb3JpZ2luYWwgdmFsdWUuICovCisgICAgICAgIGlmICghYmVn
aW5faW5kZXgpIHsKKyAgICAgICAgICAgIHJlc3VsdC50dXBsZSA9IE5VTEw7CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBlbmRfaW5kZXgg
PSBkaXJlY3RvcnktPmVuZF9pbmRleDsKICAgICAgICAgCiAgICAgICAgIHJlc3VsdC5kZXBlbmRl
bmN5ICs9IGJlZ2luX2luZGV4ICsgZW5kX2luZGV4OwpAQCAtNDQ4LDYgKzQ2Miw4IEBAIHBhc19z
ZWdyZWdhdGVkX2hlYXBfbWVkaXVtX2RpcmVjdG9yeV90dXAKICAgICBwYXNfc2VncmVnYXRlZF9o
ZWFwX21lZGl1bV9zaXplX2RpcmVjdG9yeV9zZWFyY2hfbW9kZSBzZWFyY2hfbW9kZSwKICAgICBw
YXNfbG9ja19ob2xkX21vZGUgaGVhcF9sb2NrX2hvbGRfbW9kZSkKIHsKKyAgICBzdGF0aWMgY29u
c3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgCiAgICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9y
YXJlX2RhdGEqIHJhcmVfZGF0YTsKICAgICBwYXNfbXV0YXRpb25fY291bnQgc2F2ZWRfY291bnQ7
CiAgICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fZGlyZWN0b3J5X3R1cGxlKiBtZWRpdW1f
ZGlyZWN0b3JpZXM7CkBAIC00NzgsOCArNDk0LDExIEBAIHBhc19zZWdyZWdhdGVkX2hlYXBfbWVk
aXVtX2RpcmVjdG9yeV90dXAKICAgICAgICAgcmFyZV9kYXRhLCBtZWRpdW1fZGlyZWN0b3JpZXMs
IG51bV9tZWRpdW1fZGlyZWN0b3JpZXMsIGluZGV4LCBzZWFyY2hfbW9kZSk7CiAgICAgCiAgICAg
aWYgKHBhc19tdXRhdGlvbl9jb3VudF9tYXRjaGVzX3dpdGhfZGVwZW5kZW5jeSgKLSAgICAgICAg
ICAgICZyYXJlX2RhdGEtPm11dGF0aW9uX2NvdW50LCBzYXZlZF9jb3VudCwgcmVzdWx0LmRlcGVu
ZGVuY3kpKQorICAgICAgICAgICAgJnJhcmVfZGF0YS0+bXV0YXRpb25fY291bnQsIHNhdmVkX2Nv
dW50LCByZXN1bHQuZGVwZW5kZW5jeSkpIHsKKyAgICAgICAgaWYgKHZlcmJvc2UgJiYgIXJlc3Vs
dC50dXBsZSkKKyAgICAgICAgICAgIHBhc19sb2coImRpZCBub3QgZmluZCB0dXBsZVxuIik7CiAg
ICAgICAgIHJldHVybiByZXN1bHQudHVwbGU7CisgICAgfQogICAgIAogICAgIHJldHVybiBtZWRp
dW1fZGlyZWN0b3J5X3R1cGxlX2Zvcl9pbmRleF93aXRoX2xvY2soCiAgICAgICAgIGhlYXAsIGlu
ZGV4LCBzZWFyY2hfbW9kZSwgcGFzX2xvY2tfaXNfbm90X2hlbGQpOwpAQCAtNDkxLDEzICs1MTAs
MjAgQEAgdW5zaWduZWQgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fYWxsbwogICAgIHBhc19z
ZWdyZWdhdGVkX2hlYXBfbWVkaXVtX3NpemVfZGlyZWN0b3J5X3NlYXJjaF9tb2RlIHNlYXJjaF9t
b2RlLAogICAgIHBhc19sb2NrX2hvbGRfbW9kZSBoZWFwX2xvY2tfaG9sZF9tb2RlKQogeworICAg
IHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2UgPSBmYWxzZTsKKyAgICAKICAgICBwYXNfc2VncmVn
YXRlZF9oZWFwX21lZGl1bV9kaXJlY3RvcnlfdHVwbGUqIG1lZGl1bV9kaXJlY3Rvcnk7CiAgICAg
CiAgICAgbWVkaXVtX2RpcmVjdG9yeSA9IHBhc19zZWdyZWdhdGVkX2hlYXBfbWVkaXVtX2RpcmVj
dG9yeV90dXBsZV9mb3JfaW5kZXgoCiAgICAgICAgIGhlYXAsIGluZGV4LCBzZWFyY2hfbW9kZSwg
aGVhcF9sb2NrX2hvbGRfbW9kZSk7CiAgICAgCi0gICAgaWYgKG1lZGl1bV9kaXJlY3RvcnkpCi0g
ICAgICAgIHJldHVybiBtZWRpdW1fZGlyZWN0b3J5LT5hbGxvY2F0b3JfaW5kZXg7CisgICAgaWYg
KG1lZGl1bV9kaXJlY3RvcnkpIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0OworICAgICAgICBy
ZXN1bHQgPSBtZWRpdW1fZGlyZWN0b3J5LT5hbGxvY2F0b3JfaW5kZXg7CisgICAgICAgIGlmICh2
ZXJib3NlICYmICFyZXN1bHQpCisgICAgICAgICAgICBwYXNfbG9nKCJmb3VuZCBudWxsIGFsbG9j
YXRvciBpbmRleFxuIik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogICAgIAogICAg
IHJldHVybiAwOwogfQpAQCAtNjQ5LDYgKzY3NSw4IEBAIHN0YXRpYyB2b2lkIHJlY29tcHV0ZV9z
aXplX2xvb2t1cChwYXNfc2UKICAgICAgICAgc2l6ZV90IGluZGV4OwogICAgICAgICBwYXNfYWxs
b2NhdG9yX2luZGV4IGFsbG9jYXRvcl9pbmRleDsKICAgICAgICAgcGFzX3NlZ3JlZ2F0ZWRfc2l6
ZV9kaXJlY3RvcnlfZGF0YSogZGF0YTsKKyAgICAgICAgc2l6ZV90IGV4dHJhX2luZGV4X2Zvcl9h
bGxvY2F0b3I7CisgICAgICAgIGJvb2wgaGF2ZV9leHRyYV9pbmRleF9mb3JfYWxsb2NhdG9yOwog
CiAgICAgICAgIGRhdGEgPSBwYXNfc2VncmVnYXRlZF9zaXplX2RpcmVjdG9yeV9kYXRhX3B0cl9s
b2FkKCZkaXJlY3RvcnktPmRhdGEpOwogICAgICAgICBpZiAoZGF0YSkKQEAgLTY1OCwzOCArNjg2
LDUwIEBAIHN0YXRpYyB2b2lkIHJlY29tcHV0ZV9zaXplX2xvb2t1cChwYXNfc2UKIAogICAgICAg
ICBQQVNfQVNTRVJUKGFsbG9jYXRvcl9pbmRleCAhPSAocGFzX2FsbG9jYXRvcl9pbmRleClVSU5U
X01BWCk7CiAKLSAgICAgICAgaWYgKHBhc19zZWdyZWdhdGVkX3NpemVfZGlyZWN0b3J5X21pbl9p
bmRleChkaXJlY3RvcnkpID09IFVJTlRfTUFYKSB7Ci0gICAgICAgICAgICAvKiBXZSBub3cga25v
dyB0aGF0IHRoaXMgZGlyZWN0b3J5IGlzIG5vdCBpbiB0aGUgc2l6ZSBkaXJlY3RvcnkgdGFibGUs
IGJlY2F1cyB0aGUgbWluX2luZGV4IGlzCi0gICAgICAgICAgICAgICBVSU5UX01BWC4gQnV0IGl0
J3MgcG9zc2libGUgdGhhdCB3ZSd2ZSBwdXQgdGhlIGJhc2ljIHNpemUgZGlyZWN0b3J5IGludG8g
dGhlIGFsbG9jYXRvcl9pbmRleAotICAgICAgICAgICAgICAgdGFibGUgZXZlbiB0aG91Z2ggd2Ug
aGF2ZW4ndCBwdXQgaXQgaW50byB0aGUgc2l6ZSBkaXJlY3RvcnkgdGFibGUgYmVjYXVzZSBhcnJh
eSBhbGxvY2F0aW9uIGNvdWxkCi0gICAgICAgICAgICAgICBmaW5kIHRoZSBiYXNpYyBzaXplIGRp
cmVjdG9yeSBieSBsb29raW5nIGF0IHRoZSBiYXNpYyBkaXJlY3RvcnkgcG9pbnRlciBhbmQgdGhl
bgotICAgICAgICAgICAgICAgZW5zdXJlX3NpemVfbG9va3VwIGFuZCBzdGFzaCB0aGUgYWxsb2Nh
dG9yX2luZGV4IGluIHRoZSBhbGxvY2F0b3JfaW5kZXggdGFibGUuICovCi0gICAgICAgICAgICBp
ZiAoZGlyZWN0b3J5LT5iYXNlLmlzX2Jhc2ljX3NpemVfZGlyZWN0b3J5Ci0gICAgICAgICAgICAg
ICAgJiYgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9jYWNoZWRfaW5kZXhfaXNfc2V0KGNhY2hlZF9pbmRl
eCkpIHsKLSAgICAgICAgICAgICAgICBpbmRleCA9IHBhc19zZWdyZWdhdGVkX2hlYXBfZ2V0X2Nh
Y2hlZF9pbmRleChoZWFwLCBjYWNoZWRfaW5kZXgsIGNvbmZpZyk7Ci0gICAgICAgICAgICAgICAg
aWYgKGluZGV4IDwgaGVhcC0+c21hbGxfaW5kZXhfdXBwZXJfYm91bmQpCisgICAgICAgIGhhdmVf
ZXh0cmFfaW5kZXhfZm9yX2FsbG9jYXRvciA9IGZhbHNlOworICAgICAgICBleHRyYV9pbmRleF9m
b3JfYWxsb2NhdG9yID0gMDsKKyAgICAgICAgaWYgKGFsbG9jYXRvcl9pbmRleAorICAgICAgICAg
ICAgJiYgZGlyZWN0b3J5LT5iYXNlLmlzX2Jhc2ljX3NpemVfZGlyZWN0b3J5CisgICAgICAgICAg
ICAmJiBwYXNfc2VncmVnYXRlZF9oZWFwX2NhY2hlZF9pbmRleF9pc19zZXQoY2FjaGVkX2luZGV4
KSkgeworICAgICAgICAgICAgaW5kZXggPSBwYXNfc2VncmVnYXRlZF9oZWFwX2dldF9jYWNoZWRf
aW5kZXgoaGVhcCwgY2FjaGVkX2luZGV4LCBjb25maWcpOworICAgICAgICAgICAgaWYgKGluZGV4
IDwgaGVhcC0+c21hbGxfaW5kZXhfdXBwZXJfYm91bmQpIHsKKyAgICAgICAgICAgICAgICAvKiBJ
dCdzIHBvc3NpYmxlIHRoYXQgd2UndmUgcHV0IHRoZSBiYXNpYyBzaXplIGRpcmVjdG9yeSBpbnRv
IHRoZSBhbGxvY2F0b3JfaW5kZXggdGFibGUgZXZlbgorICAgICAgICAgICAgICAgICAgIHRob3Vn
aCB3ZSBoYXZlbid0IHB1dCBpdCBpbnRvIHRoZSBzaXplIGRpcmVjdG9yeSB0YWJsZSBiZWNhdXNl
IGFycmF5IGFsbG9jYXRpb24gY291bGQKKyAgICAgICAgICAgICAgICAgICBmaW5kIHRoZSBiYXNp
YyBzaXplIGRpcmVjdG9yeSBieSBsb29raW5nIGF0IHRoZSBiYXNpYyBkaXJlY3RvcnkgcG9pbnRl
ciBhbmQgdGhlbgorICAgICAgICAgICAgICAgICAgIGVuc3VyZV9zaXplX2xvb2t1cCBhbmQgc3Rh
c2ggdGhlIGFsbG9jYXRvcl9pbmRleCBpbiB0aGUgYWxsb2NhdG9yX2luZGV4IHRhYmxlLiAqLwor
ICAgICAgICAgICAgICAgIGhhdmVfZXh0cmFfaW5kZXhfZm9yX2FsbG9jYXRvciA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgZXh0cmFfaW5kZXhfZm9yX2FsbG9jYXRvciA9IGluZGV4OworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAocGFzX3NlZ3JlZ2F0ZWRf
c2l6ZV9kaXJlY3RvcnlfbWluX2luZGV4KGRpcmVjdG9yeSkgIT0gVUlOVF9NQVgpIHsKKyAgICAg
ICAgICAgIFBBU19BU1NFUlQocGFzX3NlZ3JlZ2F0ZWRfc2l6ZV9kaXJlY3RvcnlfbWluX2luZGV4
KGRpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICAgICAgICAgPD0gcGFzX3NlZ3JlZ2F0ZWRfaGVh
cF9pbmRleF9mb3Jfc2l6ZShkaXJlY3RvcnktPm9iamVjdF9zaXplLCAqY29uZmlnKSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGZvciAoaW5kZXggPSBwYXNfc2VncmVnYXRlZF9zaXplX2Rp
cmVjdG9yeV9taW5faW5kZXgoZGlyZWN0b3J5KTsKKyAgICAgICAgICAgICAgICAgaW5kZXggPCBQ
QVNfTUlOKHBhc19zZWdyZWdhdGVkX2hlYXBfaW5kZXhfZm9yX3NpemUoZGlyZWN0b3J5LT5vYmpl
Y3Rfc2l6ZSwgKmNvbmZpZykgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVhcC0+c21hbGxfaW5kZXhfdXBwZXJfYm91bmQpOworICAgICAgICAgICAgICAgICBpbmRleCsr
KSB7CisgICAgICAgICAgICAgICAgc2V0X2luZGV4X3RvX3NtYWxsX3NpemVfZGlyZWN0b3J5KGlu
ZGV4LCBkaXJlY3RvcnksIGFyZyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
aWYgKGFsbG9jYXRvcl9pbmRleCkgewogICAgICAgICAgICAgICAgICAgICBzZXRfaW5kZXhfdG9f
c21hbGxfYWxsb2NhdG9yX2luZGV4KGluZGV4LCBhbGxvY2F0b3JfaW5kZXgsIGFyZyk7CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZV9leHRyYV9pbmRl
eF9mb3JfYWxsb2NhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBleHRyYV9pbmRleF9m
b3JfYWxsb2NhdG9yID09IGluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV9leHRy
YV9pbmRleF9mb3JfYWxsb2NhdG9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChwYXNfc2Vn
cmVnYXRlZF9oZWFwX2luZGV4X2Zvcl9zaXplKGRpcmVjdG9yeS0+b2JqZWN0X3NpemUsICpjb25m
aWcpCisgICAgICAgICAgICAgICAgPj0gaGVhcC0+c21hbGxfaW5kZXhfdXBwZXJfYm91bmQpIHsK
KyAgICAgICAgICAgICAgICBzaXplX2RpcmVjdG9yeV9taW5faGVhcF9hZGQoCisgICAgICAgICAg
ICAgICAgICAgICZtaW5faGVhcCwgZGlyZWN0b3J5LCAmcGFzX2xhcmdlX3V0aWxpdHlfZnJlZV9o
ZWFwX2FsbG9jYXRpb25fY29uZmlnKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAg
ICAgIFBBU19BU1NFUlQocGFzX3NlZ3JlZ2F0ZWRfc2l6ZV9kaXJlY3RvcnlfbWluX2luZGV4KGRp
cmVjdG9yeSkKLSAgICAgICAgICAgICAgICAgICA8PSBwYXNfc2VncmVnYXRlZF9oZWFwX2luZGV4
X2Zvcl9zaXplKGRpcmVjdG9yeS0+b2JqZWN0X3NpemUsICpjb25maWcpKTsKLQotICAgICAgICBm
b3IgKGluZGV4ID0gcGFzX3NlZ3JlZ2F0ZWRfc2l6ZV9kaXJlY3RvcnlfbWluX2luZGV4KGRpcmVj
dG9yeSk7Ci0gICAgICAgICAgICAgaW5kZXggPCBQQVNfTUlOKHBhc19zZWdyZWdhdGVkX2hlYXBf
aW5kZXhfZm9yX3NpemUoZGlyZWN0b3J5LT5vYmplY3Rfc2l6ZSwgKmNvbmZpZykgKyAxLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwLT5zbWFsbF9pbmRleF91cHBlcl9ib3VuZCk7
Ci0gICAgICAgICAgICAgaW5kZXgrKykgewotICAgICAgICAgICAgc2V0X2luZGV4X3RvX3NtYWxs
X3NpemVfZGlyZWN0b3J5KGluZGV4LCBkaXJlY3RvcnksIGFyZyk7Ci0KLSAgICAgICAgICAgIGlm
IChhbGxvY2F0b3JfaW5kZXgpCi0gICAgICAgICAgICAgICAgc2V0X2luZGV4X3RvX3NtYWxsX2Fs
bG9jYXRvcl9pbmRleChpbmRleCwgYWxsb2NhdG9yX2luZGV4LCBhcmcpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKHBhc19zZWdyZWdhdGVkX2hlYXBfaW5kZXhfZm9yX3NpemUoZGlyZWN0b3J5
LT5vYmplY3Rfc2l6ZSwgKmNvbmZpZykKLSAgICAgICAgICAgID49IGhlYXAtPnNtYWxsX2luZGV4
X3VwcGVyX2JvdW5kKQotICAgICAgICAgICAgc2l6ZV9kaXJlY3RvcnlfbWluX2hlYXBfYWRkKCZt
aW5faGVhcCwgZGlyZWN0b3J5LCAmcGFzX2xhcmdlX3V0aWxpdHlfZnJlZV9oZWFwX2FsbG9jYXRp
b25fY29uZmlnKTsKKyAgICAgICAgCisgICAgICAgIGlmIChoYXZlX2V4dHJhX2luZGV4X2Zvcl9h
bGxvY2F0b3IpCisgICAgICAgICAgICBzZXRfaW5kZXhfdG9fc21hbGxfYWxsb2NhdG9yX2luZGV4
KGV4dHJhX2luZGV4X2Zvcl9hbGxvY2F0b3IsIGFsbG9jYXRvcl9pbmRleCwgYXJnKTsKICAgICB9
CiAKICAgICBmb3IgKG1lZGl1bV90dXBsZV9pbmRleCA9IDA7CkBAIC03MDYsNiArNzQ2LDcgQEAg
c3RhdGljIHZvaWQgcmVjb21wdXRlX3NpemVfbG9va3VwKHBhc19zZQogICAgICAgICAgICAgdHVw
bGUuYWxsb2NhdG9yX2luZGV4ID0gMDsKICAgICAgICAgUEFTX0FTU0VSVCh0dXBsZS5hbGxvY2F0
b3JfaW5kZXggIT0gKHBhc19hbGxvY2F0b3JfaW5kZXgpVUlOVF9NQVgpOwogICAgICAgICB0dXBs
ZS5iZWdpbl9pbmRleCA9IHBhc19zZWdyZWdhdGVkX3NpemVfZGlyZWN0b3J5X21pbl9pbmRleChk
aXJlY3RvcnkpOworICAgICAgICBQQVNfQVNTRVJUKHR1cGxlLmJlZ2luX2luZGV4KTsKICAgICAg
ICAgdHVwbGUuZW5kX2luZGV4ID0gKHVuc2lnbmVkKXBhc19zZWdyZWdhdGVkX2hlYXBfaW5kZXhf
Zm9yX3NpemUoZGlyZWN0b3J5LT5vYmplY3Rfc2l6ZSwgKmNvbmZpZyk7CiAgICAgICAgIAogICAg
ICAgICBzZXRfbWVkaXVtX2RpcmVjdG9yeV90dXBsZShtZWRpdW1fdHVwbGVfaW5kZXgsICZ0dXBs
ZSwgYXJnKTsKQEAgLTc1NSw2ICs3OTYsNyBAQCBzdGF0aWMgdm9pZCByZW1hdGVyaWFsaXplX3Np
emVfbG9va3VwX3NlCiAgICAgCiAgICAgdHVwbGVzID0gcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRp
dW1fZGlyZWN0b3J5X3R1cGxlX3B0cl9sb2FkKCZkYXRhLT5tZWRpdW1fZGlyZWN0b3JpZXMpOwog
ICAgIFBBU19BU1NFUlQodHVwbGVzKTsKKyAgICBQQVNfQVNTRVJUKHR1cGxlLT5iZWdpbl9pbmRl
eCk7CiAgICAgdHVwbGVzW21lZGl1bV90dXBsZV9pbmRleF0gPSAqdHVwbGU7CiB9CiAKQEAgLTgw
OSwxOCArODUxLDE5IEBAIHBhc19zZWdyZWdhdGVkX2hlYXBfZW5zdXJlX2FsbG9jYXRvcl9pbmQK
IAogICAgIHJlbWF0ZXJpYWxpemVfc2l6ZV9sb29rdXBfaWZfbmVjZXNzYXJ5KGhlYXAsIGNvbmZp
ZywgY2FjaGVkX2luZGV4KTsKIAorICAgIGNoZWNrX3NpemVfbG9va3VwX3JlY29tcHV0YXRpb25f
aWZfYXBwcm9wcmlhdGUoCisgICAgICAgIGhlYXAsIGNvbmZpZywgY2FjaGVkX2luZGV4LCAic3Rh
cnQgb2YgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9lbnN1cmVfYWxsb2NhdG9yX2luZGV4Iik7CisKICAg
ICBwYXJlbnRfaGVhcCA9IHBhc19oZWFwX2Zvcl9zZWdyZWdhdGVkX2hlYXAoaGVhcCk7CiAgICAg
CiAgICAgUEFTX0FTU0VSVChzaXplIDw9IGRpcmVjdG9yeS0+b2JqZWN0X3NpemUpOwogICAgIFBB
U19BU1NFUlQoIXBhc19oZWFwX2NvbmZpZ19pc191dGlsaXR5KGNvbmZpZykpOwogICAgIAotICAg
IGlmICh2ZXJib3NlKSB7Ci0gICAgICAgIHByaW50ZigiSW4gcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9l
bnN1cmVfYWxsb2NhdG9yX2luZGV4XG4iKTsKLSAgICAgICAgcHJpbnRmKCJzaXplID0gJXp1XG4i
LCBzaXplKTsKLSAgICB9CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIHBhc19sb2coIiVwOiBJ
biBwYXNfc2VncmVnYXRlZF9oZWFwX2Vuc3VyZV9hbGxvY2F0b3JfaW5kZXgsIHNpemUgPSAlenVc
biIsIHB0aHJlYWRfc2VsZigpLCBzaXplKTsKICAgICBpbmRleCA9IHBhc19zZWdyZWdhdGVkX2hl
YXBfaW5kZXhfZm9yX3NpemUoc2l6ZSwgKmNvbmZpZyk7CiAgICAgaWYgKHZlcmJvc2UpCi0gICAg
ICAgIHByaW50ZigiaW5kZXggPSAlenVcbiIsIGluZGV4KTsKKyAgICAgICAgcGFzX2xvZygiaW5k
ZXggPSAlenVcbiIsIGluZGV4KTsKIAogICAgIGFsbG9jYXRvcl9pbmRleCA9CiAgICAgICAgIHBh
c19zZWdyZWdhdGVkX3NpemVfZGlyZWN0b3J5X2RhdGFfcHRyX2xvYWQoJmRpcmVjdG9yeS0+ZGF0
YSktPmFsbG9jYXRvcl9pbmRleDsKQEAgLTgyOSwxNCArODcyLDE0IEBAIHBhc19zZWdyZWdhdGVk
X2hlYXBfZW5zdXJlX2FsbG9jYXRvcl9pbmQKICAgICBQQVNfQVNTRVJUKGFsbG9jYXRvcl9pbmRl
eCA8ICh1bnNpZ25lZCkocGFzX2FsbG9jYXRvcl9pbmRleClVSU5UX01BWCk7CiAgICAgCiAgICAg
aWYgKHZlcmJvc2UpCi0gICAgICAgIHByaW50ZigiYWxsb2NhdG9yX2luZGV4ID0gJXVcbiIsIGFs
bG9jYXRvcl9pbmRleCk7CisgICAgICAgIHBhc19sb2coImFsbG9jYXRvcl9pbmRleCA9ICV1XG4i
LCBhbGxvY2F0b3JfaW5kZXgpOwogICAgIAogICAgIGRpZF9jYWNoZV9hbGxvY2F0b3JfaW5kZXgg
PSBmYWxzZTsKICAgICAKICAgICBpZiAocGFzX3NlZ3JlZ2F0ZWRfaGVhcF9pbmRleF9pc19jYWNo
ZWRfaW5kZXhfYW5kX2NhY2hlZF9pbmRleF9pc19zZXQoaGVhcCwgY2FjaGVkX2luZGV4LCBpbmRl
eCwgY29uZmlnKQogICAgICAgICAmJiBwYXJlbnRfaGVhcCAmJiBwYXJlbnRfaGVhcC0+aGVhcF9y
ZWYpIHsKICAgICAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgICAgIHByaW50ZigicGFzX3Nl
Z3JlZ2F0ZWRfaGVhcF9lbnN1cmVfYWxsb2NhdG9yX2luZGV4X2Zvcl9zaXplX2RpcmVjdG9yeTog
IgorICAgICAgICAgICAgcGFzX2xvZygicGFzX3NlZ3JlZ2F0ZWRfaGVhcF9lbnN1cmVfYWxsb2Nh
dG9yX2luZGV4X2Zvcl9zaXplX2RpcmVjdG9yeTogIgogICAgICAgICAgICAgICAgICAgICJDYWNo
aW5nIGFzIGNhY2hlZCBpbmRleCFcbiIpOwogICAgICAgICB9CiAgICAgICAgIFBBU19BU1NFUlQo
IXBhcmVudF9oZWFwLT5oZWFwX3JlZi0+YWxsb2NhdG9yX2luZGV4IHx8CkBAIC04NzUsNiArOTE4
LDkgQEAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9lbnN1cmVfYWxsb2NhdG9yX2luZAogICAgICAgICBt
ZWRpdW1fZGlyZWN0b3J5LT5hbGxvY2F0b3JfaW5kZXggPSAocGFzX2FsbG9jYXRvcl9pbmRleClh
bGxvY2F0b3JfaW5kZXg7CiAgICAgfQogICAgIAorICAgIGNoZWNrX3NpemVfbG9va3VwX3JlY29t
cHV0YXRpb25faWZfYXBwcm9wcmlhdGUoCisgICAgICAgIGhlYXAsIGNvbmZpZywgY2FjaGVkX2lu
ZGV4LCAiZW5kIG9mIHBhc19zZWdyZWdhdGVkX2hlYXBfZW5zdXJlX2FsbG9jYXRvcl9pbmRleCIp
OworCiAgICAgcmV0dXJuIGFsbG9jYXRvcl9pbmRleDsKIH0KIApAQCAtMTA4Nyw2ICsxMTMzLDcg
QEAgc3RhdGljIHZvaWQgY2hlY2tfc2l6ZV9sb29rdXBfcmVjb21wdXRhdAogCiAgICAgZGF0YSA9
IGFyZzsKIAorICAgIFBBU19BU1NFUlQodmFsdWUtPmJlZ2luX2luZGV4KTsKICAgICBQQVNfQVNT
RVJUKG1lZGl1bV90dXBsZV9pbmRleCA9PSBkYXRhLT5udW1fbWVkaXVtX2RpcmVjdG9yaWVzKTsK
ICAgICBQQVNfQVNTRVJUKCh1bnNpZ25lZCkobWVkaXVtX3R1cGxlX2luZGV4ICsgMXUpID09IG1l
ZGl1bV90dXBsZV9pbmRleCArIDF1KTsKICAgICBkYXRhLT5udW1fbWVkaXVtX2RpcmVjdG9yaWVz
ID0gKHVuc2lnbmVkKShtZWRpdW1fdHVwbGVfaW5kZXggKyAxdSk7CkBAIC0xMTQ0LDkgKzExOTEs
MzAgQEAgc3RhdGljIHZvaWQgY2hlY2tfc2l6ZV9sb29rdXBfcmVjb21wdXRhdAogICAgIH0KIH0K
IAorc3RhdGljIGJvb2wgY2hlY2tfc2l6ZV9sb29rdXBfcmVjb21wdXRhdGlvbl9kdW1wX2RpcmVj
dG9yeShwYXNfc2VncmVnYXRlZF9oZWFwKiBoZWFwLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNfc2VncmVnYXRlZF9zaXplX2Rp
cmVjdG9yeSogZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBhcmcpCit7CisgICAgUEFTX1VOVVNFRF9QQVJB
TShoZWFwKTsKKyAgICBQQVNfQVNTRVJUKCFhcmcpOworCisgICAgcGFzX2xvZygiICAgICIpOwor
ICAgIHBhc19zZWdyZWdhdGVkX3NpemVfZGlyZWN0b3J5X2R1bXBfcmVmZXJlbmNlKGRpcmVjdG9y
eSwgJnBhc19sb2dfc3RyZWFtLmJhc2UpOworICAgIHBhc19sb2coIjogbWluX2luZGV4ID0gJXUs
IG9iamVjdF9zaXplID0gJXUsIGFsbG9jYXRvcl9pbmRleCA9ICV1IiwKKyAgICAgICAgICAgIHBh
c19zZWdyZWdhdGVkX3NpemVfZGlyZWN0b3J5X21pbl9pbmRleChkaXJlY3RvcnkpLAorICAgICAg
ICAgICAgZGlyZWN0b3J5LT5vYmplY3Rfc2l6ZSwKKyAgICAgICAgICAgIHBhc19zZWdyZWdhdGVk
X3NpemVfZGlyZWN0b3J5X2dldF90bGNfYWxsb2NhdG9yX2luZGV4KGRpcmVjdG9yeSkpOworICAg
IGlmIChkaXJlY3RvcnktPmJhc2UuaXNfYmFzaWNfc2l6ZV9kaXJlY3RvcnkpCisgICAgICAgIHBh
c19sb2coIiwgaXMgYmFzaWMiKTsKKyAgICBwYXNfbG9nKCJcbiIpOworICAgIAorICAgIHJldHVy
biB0cnVlOworfQorCiBzdGF0aWMgdm9pZCBjaGVja19zaXplX2xvb2t1cF9yZWNvbXB1dGF0aW9u
KHBhc19zZWdyZWdhdGVkX2hlYXAqIGhlYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBhc19oZWFwX2NvbmZpZyogY29uZmlnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqY2FjaGVkX2luZGV4KQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqY2FjaGVk
X2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiB3aGVyZSkKIHsKICAgICBjaGVja19zaXplX2xvb2t1cF9yZWNvbXB1dGF0aW9uX2Rh
dGEgZGF0YTsKICAgICBzaXplX3QgYml0dmVjdG9yX3NpemU7CkBAIC0xMjA5LDEyICsxMjc3LDM5
IEBAIHN0YXRpYyB2b2lkIGNoZWNrX3NpemVfbG9va3VwX3JlY29tcHV0YXQKICAgICAgICAgY2hl
Y2tfc2l6ZV9sb29rdXBfcmVjb21wdXRhdGlvbl9kaWRfYmVjb21lX25vdF9hbGxfZ29vZCgmZGF0
YSk7CiAgICAgfQogCisgICAgaWYgKCFkYXRhLmlzX2FsbF9nb29kKSB7CisgICAgICAgIHBhc19o
ZWFwKiBwYXJlbnRfaGVhcDsKKyAgICAgICAgcGFzX2xvZygiRW5jb3VudGVyZWQgc2l6ZSByZWNv
bXB1dGF0aW9uIGZhaWx1cmUgZm9yIGhlYXAgJXAgKCVzLCAiLAorICAgICAgICAgICAgICAgIGhl
YXAsIHBhc19oZWFwX2NvbmZpZ19raW5kX2dldF9zdHJpbmcoY29uZmlnLT5raW5kKSk7CisgICAg
ICAgIHBhcmVudF9oZWFwID0gcGFzX2hlYXBfZm9yX3NlZ3JlZ2F0ZWRfaGVhcChoZWFwKTsKKyAg
ICAgICAgaWYgKHBhcmVudF9oZWFwKQorICAgICAgICAgICAgY29uZmlnLT5kdW1wX3R5cGUocGFy
ZW50X2hlYXAtPnR5cGUsICZwYXNfbG9nX3N0cmVhbS5iYXNlKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgcGFzX2xvZygibm8gdHlwZSIpOworICAgICAgICBwYXNfbG9nKCIpIGF0ICVzLlxu
Iiwgd2hlcmUpOworCisgICAgICAgIHBhc19sb2coIkRpcmVjdG9yaWVzOlxuIik7CisgICAgICAg
IHBhc19zZWdyZWdhdGVkX2hlYXBfZm9yX2VhY2hfc2l6ZV9kaXJlY3RvcnkoaGVhcCwgY2hlY2tf
c2l6ZV9sb29rdXBfcmVjb21wdXRhdGlvbl9kdW1wX2RpcmVjdG9yeSwgTlVMTCk7CisgICAgfQor
CiAgICAgUEFTX0FTU0VSVChkYXRhLmlzX2FsbF9nb29kKTsKIAogICAgIHBhc19sYXJnZV91dGls
aXR5X2ZyZWVfaGVhcF9kZWFsbG9jYXRlKGRhdGEuc2Vlbl9pbmRleF90b19zbWFsbF9hbGxvY2F0
b3JfaW5kZXgsIGJpdHZlY3Rvcl9zaXplKTsKICAgICBwYXNfbGFyZ2VfdXRpbGl0eV9mcmVlX2hl
YXBfZGVhbGxvY2F0ZShkYXRhLnNlZW5faW5kZXhfdG9fc21hbGxfc2l6ZV9kaXJlY3RvcnksIGJp
dHZlY3Rvcl9zaXplKTsKIH0KIAorc3RhdGljIHZvaWQgY2hlY2tfc2l6ZV9sb29rdXBfcmVjb21w
dXRhdGlvbl9pZl9hcHByb3ByaWF0ZShwYXNfc2VncmVnYXRlZF9oZWFwKiBoZWFwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNf
aGVhcF9jb25maWcqIGNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgKmNhY2hlZF9pbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogd2hlcmUpCit7CisgICAgaWYgKCFQQVNfRU5BQkxFX1RFU1RJTkcpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAocGFzX2hlYXBfY29uZmlnX2lzX3V0aWxpdHkoY29uZmlnKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGNoZWNrX3NpemVfbG9va3VwX3JlY29tcHV0YXRpb24oaGVhcCwgY29u
ZmlnLCBjYWNoZWRfaW5kZXgsIHdoZXJlKTsKK30KKwogcGFzX3NlZ3JlZ2F0ZWRfc2l6ZV9kaXJl
Y3RvcnkqCiBwYXNfc2VncmVnYXRlZF9oZWFwX2Vuc3VyZV9zaXplX2RpcmVjdG9yeV9mb3Jfc2l6
ZSgKICAgICBwYXNfc2VncmVnYXRlZF9oZWFwKiBoZWFwLApAQCAtMTI4OCw2ICsxMzgzLDExIEBA
IHBhc19zZWdyZWdhdGVkX2hlYXBfZW5zdXJlX3NpemVfZGlyZWN0b3IKIAogICAgIHJlbWF0ZXJp
YWxpemVfc2l6ZV9sb29rdXBfaWZfbmVjZXNzYXJ5KGhlYXAsIGNvbmZpZywgY2FjaGVkX2luZGV4
KTsKIAorICAgIGlzX3V0aWxpdHkgPSBwYXNfaGVhcF9jb25maWdfaXNfdXRpbGl0eShjb25maWcp
OworCisgICAgY2hlY2tfc2l6ZV9sb29rdXBfcmVjb21wdXRhdGlvbl9pZl9hcHByb3ByaWF0ZSgK
KyAgICAgICAgaGVhcCwgY29uZmlnLCBjYWNoZWRfaW5kZXgsICJzdGFydCBvZiBwYXNfc2VncmVn
YXRlZF9oZWFwX2Vuc3VyZV9zaXplX2RpcmVjdG9yeV9mb3Jfc2l6ZSIpOworCiAgICAgcGFyZW50
X2hlYXAgPSBwYXNfaGVhcF9mb3Jfc2VncmVnYXRlZF9oZWFwKGhlYXApOwogCiAgICAgaW5kZXgg
PSBwYXNfc2VncmVnYXRlZF9oZWFwX2luZGV4X2Zvcl9zaXplKHNpemUsICpjb25maWcpOwpAQCAt
MTMzNyw4ICsxNDM3LDYgQEAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9lbnN1cmVfc2l6ZV9kaXJlY3Rv
cgogICAgICAgICB8fCBwYXNfaXNfYWxpZ25lZChyZXN1bHQtPm9iamVjdF9zaXplLCBwYXNfc2Vn
cmVnYXRlZF9zaXplX2RpcmVjdG9yeV9hbGlnbm1lbnQocmVzdWx0KSkKICAgICAgICAgfHwgcGFz
X3NlZ3JlZ2F0ZWRfc2l6ZV9kaXJlY3RvcnlfaXNfYml0Zml0KHJlc3VsdCkpOwogCi0gICAgaXNf
dXRpbGl0eSA9IHBhc19oZWFwX2NvbmZpZ19pc191dGlsaXR5KGNvbmZpZyk7Ci0KICAgICBpZiAo
dmVyYm9zZSkKICAgICAgICAgcGFzX2xvZygiU21hbGwgaW5kZXggdXBwZXIgYm91bmQgPSAldVxu
IiwgaGVhcC0+c21hbGxfaW5kZXhfdXBwZXJfYm91bmQpOwogICAgIApAQCAtMTQzOSw2ICsxNTM3
LDcgQEAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9lbnN1cmVfc2l6ZV9kaXJlY3RvcgogICAgICAgICAg
ICAgICAgIGJlZ2luX2luZGV4ID0gaW5kZXggKyAxOwogICAgICAgICAgICAgICAgIFBBU19BU1NF
UlQoKHBhc19zZWdyZWdhdGVkX2hlYXBfbWVkaXVtX2RpcmVjdG9yeV9pbmRleCliZWdpbl9pbmRl
eCA9PSBiZWdpbl9pbmRleCk7CiAgICAgICAgICAgICAgICAgbWVkaXVtX3R1cGxlLT5iZWdpbl9p
bmRleCA9IChwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9kaXJlY3RvcnlfaW5kZXgpYmVnaW5f
aW5kZXg7CisgICAgICAgICAgICAgICAgUEFTX0FTU0VSVChtZWRpdW1fdHVwbGUtPmJlZ2luX2lu
ZGV4KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcGFzX3NlZ3JlZ2F0
ZWRfaGVhcF9tZWRpdW1fZGlyZWN0b3J5X3R1cGxlKiBtZWRpdW1fZGlyZWN0b3JpZXM7CiAgICAg
ICAgICAgICAgICAgc2l6ZV90IG1lZGl1bV90dXBsZV9pbmRleDsKQEAgLTE2MTIsOCArMTcxMSw4
IEBAIHBhc19zZWdyZWdhdGVkX2hlYXBfZW5zdXJlX3NpemVfZGlyZWN0b3IKICAgICAgICAgICAg
IGRvdWJsZSBieXRlc19kaXJ0aWVkX3Blcl9vYmplY3RfYnlfY2FuZGlkYXRlOwogICAgICAgICAK
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJvYmpl
Y3Rfc2l6ZSA9ICVsdVxuIiwgb2JqZWN0X3NpemUpOwotICAgICAgICAgICAgICAgIHByaW50Zigi
Y2FuZGlkYXRlLT5vYmplY3Rfc2l6ZSA9ICV1XG4iLCBjYW5kaWRhdGUtPm9iamVjdF9zaXplKTsK
KyAgICAgICAgICAgICAgICBwYXNfbG9nKCJvYmplY3Rfc2l6ZSA9ICVsdVxuIiwgb2JqZWN0X3Np
emUpOworICAgICAgICAgICAgICAgIHBhc19sb2coImNhbmRpZGF0ZS0+b2JqZWN0X3NpemUgPSAl
dVxuIiwgY2FuZGlkYXRlLT5vYmplY3Rfc2l6ZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChjYW5kaWRhdGUtPmJhc2UucGFnZV9jb25maWdfa2luZCAhPSBwYXNfc2VncmVnYXRl
ZF9wYWdlX2NvbmZpZ19raW5kX251bGwpIHsKQEAgLTE3MDksNyArMTgwOCw3IEBAIHBhc19zZWdy
ZWdhdGVkX2hlYXBfZW5zdXJlX3NpemVfZGlyZWN0b3IKICAgICAgICAgICAgICAgICBiZXN0X3Bh
Z2VfY29uZmlnLAogICAgICAgICAgICAgICAgIGNyZWF0aW9uX21vZGUpOwogICAgICAgICAgICAg
aWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJDcmVhdGVkIHNpemUgY2xhc3Mg
PSAlcFxuIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICBwYXNfbG9nKCJDcmVhdGVkIHNpemUg
Y2xhc3MgPSAlcFxuIiwgcmVzdWx0KTsKIAogICAgICAgICAgICAgYmFzaWNfc2l6ZV9kaXJlY3Rv
cnlfYW5kX2hlYWQgPSBwYXNfY29tcGFjdF9hdG9taWNfc2VncmVnYXRlZF9zaXplX2RpcmVjdG9y
eV9wdHJfbG9hZCgKICAgICAgICAgICAgICAgICAmaGVhcC0+YmFzaWNfc2l6ZV9kaXJlY3Rvcnlf
YW5kX2hlYWQpOwpAQCAtMTczNCw3ICsxODMzLDcgQEAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9lbnN1
cmVfc2l6ZV9kaXJlY3RvcgogICAgICAgICAgICAgcGFzX3NlZ3JlZ2F0ZWRfc2l6ZV9kaXJlY3Rv
cnkqIGRpcmVjdG9yeTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHZlcmJvc2UpIHsK
LSAgICAgICAgICAgICAgICBwcmludGYoInBhc19zZWdyZWdhdGVkX2hlYXBfZW5zdXJlX3NpemVf
ZGlyZWN0b3J5X2Zvcl9zaXplOiAiCisgICAgICAgICAgICAgICAgcGFzX2xvZygicGFzX3NlZ3Jl
Z2F0ZWRfaGVhcF9lbnN1cmVfc2l6ZV9kaXJlY3RvcnlfZm9yX3NpemU6ICIKICAgICAgICAgICAg
ICAgICAgICAgICAgIkNhY2hpbmcgYXMgYmFzaWMgc2l6ZSBjbGFzcyFcbiIpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgZGlyZWN0b3J5ID0gcGFzX2NvbXBhY3RfYXRvbWljX3NlZ3JlZ2F0
ZWRfc2l6ZV9kaXJlY3RvcnlfcHRyX2xvYWQoCkBAIC0xNzgyLDggKzE4ODEsOCBAQCBwYXNfc2Vn
cmVnYXRlZF9oZWFwX2Vuc3VyZV9zaXplX2RpcmVjdG9yCiAgICAgICAgICAgICByZXN1bHQtPmJh
c2UuaXNfYmFzaWNfc2l6ZV9kaXJlY3RvcnkgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgICAgICAgICBwcmludGYoInBhc19zZWdy
ZWdhdGVkX2hlYXBfZW5zdXJlX3NpemVfZGlyZWN0b3J5X2Zvcl9jb3VudDogIgotICAgICAgICAg
ICAgICAgICAgICAgICAiTk9UIGNhY2hpbmcgYXMgYmFzaWMgc2l6ZSBjbGFzcyFcbiIpOworICAg
ICAgICAgICAgICAgIHBhc19sb2coInBhc19zZWdyZWdhdGVkX2hlYXBfZW5zdXJlX3NpemVfZGly
ZWN0b3J5X2Zvcl9jb3VudDogIgorICAgICAgICAgICAgICAgICAgICAgICAgIk5PVCBjYWNoaW5n
IGFzIGJhc2ljIHNpemUgY2xhc3MhXG4iKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBA
IC0xODg1LDYgKzE5ODQsNyBAQCBwYXNfc2VncmVnYXRlZF9oZWFwX2Vuc3VyZV9zaXplX2RpcmVj
dG9yCiAgICAgICAgICAgICAgICAgICAgICZuZXh0X3R1cGxlLT5kaXJlY3RvcnkpID09IHJlc3Vs
dCkgewogICAgICAgICAgICAgICAgIHNpemVfdCBiZWdpbl9pbmRleDsKICAgICAgICAgICAgICAg
ICBiZWdpbl9pbmRleCA9IFBBU19NSU4oaW5kZXgsIChzaXplX3QpbmV4dF90dXBsZS0+YmVnaW5f
aW5kZXgpOworICAgICAgICAgICAgICAgIFBBU19BU1NFUlQoYmVnaW5faW5kZXgpOwogICAgICAg
ICAgICAgICAgIFBBU19BU1NFUlQoKHBhc19zZWdyZWdhdGVkX2hlYXBfbWVkaXVtX2RpcmVjdG9y
eV9pbmRleCliZWdpbl9pbmRleCA9PSBiZWdpbl9pbmRleCk7CiAgICAgICAgICAgICAgICAgbmV4
dF90dXBsZS0+YmVnaW5faW5kZXggPSAocGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fZGlyZWN0
b3J5X2luZGV4KWJlZ2luX2luZGV4OwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTE5NzYsNyAr
MjA3Niw4IEBAIHBhc19zZWdyZWdhdGVkX2hlYXBfZW5zdXJlX3NpemVfZGlyZWN0b3IKICAgICAg
ICAgICAgICAgICAgICAgcGFzX2xvZygiSW4gcmFyZV9kYXRhID0gJXAsIEluc3RhbGxpbmcgbWVk
aXVtIHR1cGxlICV6dS4uLiV6dVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXJl
X2RhdGEsIGluZGV4LCBtZWRpdW1faW5zdGFsbF9pbmRleCk7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgUEFTX0FTU0VSVChpbmRleCk7CiAg
ICAgICAgICAgICAgICAgbWVkaXVtX2RpcmVjdG9yeS0+YmVnaW5faW5kZXggPSAocGFzX3NlZ3Jl
Z2F0ZWRfaGVhcF9tZWRpdW1fZGlyZWN0b3J5X2luZGV4KWluZGV4OwogICAgICAgICAgICAgICAg
IG1lZGl1bV9kaXJlY3RvcnktPmVuZF9pbmRleCA9CiAgICAgICAgICAgICAgICAgICAgIChwYXNf
c2VncmVnYXRlZF9oZWFwX21lZGl1bV9kaXJlY3RvcnlfaW5kZXgpbWVkaXVtX2luc3RhbGxfaW5k
ZXg7CkBAIC0yMDE0LDggKzIxMTUsOCBAQCBwYXNfc2VncmVnYXRlZF9oZWFwX2Vuc3VyZV9zaXpl
X2RpcmVjdG9yCiAgICAgICAgICAgICAgICAgICAgPT0gcmVzdWx0KTsKICAgICB9CiAKLSAgICBp
ZiAoUEFTX0VOQUJMRV9URVNUSU5HICYmICFpc191dGlsaXR5KQotICAgICAgICBjaGVja19zaXpl
X2xvb2t1cF9yZWNvbXB1dGF0aW9uKGhlYXAsIGNvbmZpZywgY2FjaGVkX2luZGV4KTsKKyAgICBj
aGVja19zaXplX2xvb2t1cF9yZWNvbXB1dGF0aW9uX2lmX2FwcHJvcHJpYXRlKAorICAgICAgICBo
ZWFwLCBjb25maWcsIGNhY2hlZF9pbmRleCwgImVuZCBvZiBwYXNfc2VncmVnYXRlZF9oZWFwX2Vu
c3VyZV9zaXplX2RpcmVjdG9yeV9mb3Jfc2l6ZSIpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
SW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zZWdyZWdhdGVkX2hl
YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNf
c2VncmVnYXRlZF9oZWFwLmgJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvbGlicGFzL3Bhc19zZWdyZWdhdGVkX2hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE4LDcgKzExOCwxMCBAQCBzdHJ1Y3QgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fZGlyZWN0
CiAgICAgCiAgICAgLyogVGhpcyBpcyB0aGUgYGluZGV4YCB3ZSB3b3VsZCB1c2UgdG8gZG8gYSBs
b29rdXAuIEEgbWVkaXVtIGRpcmVjdG9yeSB0dXBsZSByZXByZXNlbnRzIGEKICAgICAgICBjb250
aWd1b3VzIHJhbmdlIG9mIGluZGljZXMgdGhhdCBtYXAgdG8gYSBzaW5nbGUgZGlyZWN0b3J5LiAq
LwotICAgIHBhc19zZWdyZWdhdGVkX2hlYXBfbWVkaXVtX2RpcmVjdG9yeV9pbmRleCBiZWdpbl9p
bmRleDsgLyogaW5jbHVzaXZlICovCisgICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fZGly
ZWN0b3J5X2luZGV4IGJlZ2luX2luZGV4OyAvKiBpbmNsdXNpdmUsIGJ1dCBjYW5ub3QgYmUgemVy
bywgc28gd2UgY2FuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXRlY3QgcmFjZXMgKHdlIGNvdWxkIHJlbGF4IHRoaXMgaWYg
d2UganVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFkZSB0aGlzICJiZWdpbl9pbmRleF9wbHVzX29uZSIgb3Igc29tZXRo
aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaWtlIHRoYXQpICovCiAgICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1f
ZGlyZWN0b3J5X2luZGV4IGVuZF9pbmRleDsgLyogaW5jbHVzaXZlICovCiB9OwogCkluZGV4OiBT
b3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfc2VncmVnYXRlZF9zaXplX2RpcmVj
dG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bh
c19zZWdyZWdhdGVkX3NpemVfZGlyZWN0b3J5LmgJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNvdXJj
ZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc19zZWdyZWdhdGVkX3NpemVfZGlyZWN0b3J5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChjKSAy
MDE4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChj
KSAyMDE4LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0zMDUsNiArMzA1LDE2IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBwYXNfc2VncmVnYXRlZF9zaXplX2QKICAgICByZXR1cm4gZGF0YSAmJiBkYXRhLT5hbGxvY2F0
b3JfaW5kZXg7CiB9CiAKK3N0YXRpYyBpbmxpbmUgcGFzX2FsbG9jYXRvcl9pbmRleCBwYXNfc2Vn
cmVnYXRlZF9zaXplX2RpcmVjdG9yeV9nZXRfdGxjX2FsbG9jYXRvcl9pbmRleCgKKyAgICBwYXNf
c2VncmVnYXRlZF9zaXplX2RpcmVjdG9yeSogZGlyZWN0b3J5KQoreworICAgIHBhc19zZWdyZWdh
dGVkX3NpemVfZGlyZWN0b3J5X2RhdGEqIGRhdGE7CisgICAgZGF0YSA9IHBhc19zZWdyZWdhdGVk
X3NpemVfZGlyZWN0b3J5X2RhdGFfcHRyX2xvYWQoJmRpcmVjdG9yeS0+ZGF0YSk7CisgICAgaWYg
KGRhdGEpCisgICAgICAgIHJldHVybiBkYXRhLT5hbGxvY2F0b3JfaW5kZXg7CisgICAgcmV0dXJu
IDA7Cit9CisKIC8qIENhbGwgd2l0aCBoZWFwIGxvY2sgaGVsZC4gKi8KIFBBU19BUEkgdm9pZCBw
YXNfc2VncmVnYXRlZF9zaXplX2RpcmVjdG9yeV9jcmVhdGVfdGxjX3ZpZXdfY2FjaGUoCiAgICAg
cGFzX3NlZ3JlZ2F0ZWRfc2l6ZV9kaXJlY3RvcnkqIGRpcmVjdG9yeSk7CkluZGV4OiBTb3VyY2Uv
Ym1hbGxvYy9saWJwYXMvc3JjL2xpYnBhcy9wYXNfdHJ5X2FsbG9jYXRlX3ByaW1pdGl2ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvbGlicGFzL3Bhc190cnlfYWxs
b2NhdGVfcHJpbWl0aXZlLmgJKHJldmlzaW9uIDI4ODE3OSkKKysrIFNvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvbGlicGFzL3Bhc190cnlfYWxsb2NhdGVfcHJpbWl0aXZlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDE3ICs4MCwyMCBAQCBwYXNfdHJ5X2FsbG9jYXRlX3ByaW1pdGl2ZV9pbXBsX2Nh
c3VhbF9jCiAgICAgLyogSGF2ZSBhIGZhc3QgcGF0aCBmb3Igd2hlbiB5b3UgYWxsb2NhdGUgc29t
ZSBzaXplIGFsbCB0aGUgdGltZSBvcgogICAgICAgIG1vc3Qgb2YgdGhlIHRpbWUuIFRoaXMgc2F2
ZXMgYm90aCB0aW1lIGFuZCBzcGFjZS4gVGhlIHNwYWNlIHNhdmluZ3MgYXJlCiAgICAgICAgdGhl
IG1vcmUgaW50ZXJlc3RpbmcgcGFydCwgc2luY2UgKi8KKworICAgIGlmICh2ZXJib3NlKQorICAg
ICAgICBwYXNfbG9nKCIlcDogZ2V0dGluZyBhbGxvY2F0b3IgaW5kZXguXG4iLCBwdGhyZWFkX3Nl
bGYoKSk7CiAgICAgCiAgICAgaWYgKGluZGV4ID09IGhlYXBfcmVmLT5jYWNoZWRfaW5kZXgpIHsK
ICAgICAgICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICBwcmludGYoIkZvdW5kIGNhY2hlZCBp
bmRleC5cbiIpOworICAgICAgICAgICAgcGFzX2xvZygiRm91bmQgY2FjaGVkIGluZGV4LlxuIik7
CiAgICAgICAgIGFsbG9jYXRvcl9pbmRleCA9IGhlYXBfcmVmLT5iYXNlLmFsbG9jYXRvcl9pbmRl
eDsKICAgICB9IGVsc2UgewogICAgICAgICBwYXNfaGVhcCogaGVhcDsKICAgICAgICAgcGFzX3Nl
Z3JlZ2F0ZWRfaGVhcCogc2VncmVnYXRlZF9oZWFwOwogICAgICAgICAKICAgICAgICAgaWYgKHZl
cmJvc2UpCi0gICAgICAgICAgICBwcmludGYoIlVzaW5nIGZ1bGwgbG9va3VwLlxuIik7CisgICAg
ICAgICAgICBwYXNfbG9nKCJVc2luZyBmdWxsIGxvb2t1cC5cbiIpOwogCiAgICAgICAgIGhlYXAg
PSBwYXNfZW5zdXJlX2hlYXAoJmhlYXBfcmVmLT5iYXNlLCBwYXNfcHJpbWl0aXZlX2hlYXBfcmVm
X2tpbmQsIGNvbmZpZy5jb25maWdfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJ1bnRpbWVfY29uZmlnKTsKQEAgLTEwMiwxMCArMTA1LDE4IEBAIHBhc190cnlfYWxsb2NhdGVf
cHJpbWl0aXZlX2ltcGxfY2FzdWFsX2MKICAgICB9CiAgICAgCiAgICAgaWYgKHZlcmJvc2UpCi0g
ICAgICAgIHByaW50ZigiYWxsb2NhdG9yX2luZGV4ID0gJXVcbiIsIGFsbG9jYXRvcl9pbmRleCk7
CisgICAgICAgIHBhc19sb2coImFsbG9jYXRvcl9pbmRleCA9ICV1XG4iLCBhbGxvY2F0b3JfaW5k
ZXgpOworCisgICAgLyogQ29vbCBmYWN0OiB0aGVyZSBjb3VsZCBiZSBhIHJhY2Ugd2hlcmUgdGhl
IGFsbG9jYXRvcl9pbmRleCB3ZSBnZXQgaXMgMCAoaS5lLiB1bnNlbGVjdGVkKSBldmVuIHRob3Vn
aAorICAgICAgIGF0IHRoaXMgcG9pbnQsIHRoZSBkaXJlY3RvcnkgaGFzIGFscmVhZHkgaW5pdGlh
bGl6ZWQgdGhlIGFsbG9jYXRvcl9pbmRleC4gVGhhdCdzIGJlY2F1c2UgYmV0d2VlbiB3aGVuCisg
ICAgICAgd2UgZ290IHRoZSBhbGxvY2F0b3JfaW5kZXggYWJvdmUgYW5kIG5vdywgc29tZSBvdGhl
ciB0aHJlYWQgY291bGQgaGF2ZSBhbHJlYWR5IGluaXRpYWxpemVkIHRoZQorICAgICAgIGRpcmVj
dG9yeSdzIGFsbG9jYXRvcl9pbmRleC4gKi8KICAgICAKICAgICBhbGxvY2F0b3IgPSBwYXNfdGhy
ZWFkX2xvY2FsX2NhY2hlX2dldF9sb2NhbF9hbGxvY2F0b3JfaWZfY2FuX3NldF9jYWNoZV9mb3Jf
cG9zc2libHlfdW5pbml0aWFsaXplZF9pbmRleCgKICAgICAgICAgYWxsb2NhdG9yX2luZGV4LCBj
b25maWcuY29uZmlnX3B0cik7CisKKyAgICBpZiAodmVyYm9zZSAmJiAhYWxsb2NhdG9yLmRpZF9z
dWNjZWVkKQorICAgICAgICBwYXNfbG9nKCIlcDogRmFpbGVkIHRvIHF1aWNrbHkgZ2V0IHRoZSBh
bGxvY2F0b3IsIGFsbG9jYXRvcl9pbmRleCA9ICV1LlxuIiwgcHRocmVhZF9zZWxmKCksIGFsbG9j
YXRvcl9pbmRleCk7CiAgICAgCiAgICAgLyogVGhpcyBzaG91bGQgYmUgc3BlY2lhbGl6ZWQgb3V0
IGluIHRoZSBub24tYWxpZ25tZW50IGNhc2UgYmVjYXVzZSBvZiBBTFdBWVNfSU5MSU5FIGFuZAog
ICAgICAgIGFsaWdubWVudCBiZWluZyB0aGUgY29uc3RhbnQgMS4gKi8KQEAgLTE0NSwxNCArMTU2
LDE0IEBAIHBhc190cnlfYWxsb2NhdGVfcHJpbWl0aXZlX2ltcGxfaW5saW5lX28KICAgICAKICAg
ICBpZiAoaW5kZXggPT0gaGVhcF9yZWYtPmNhY2hlZF9pbmRleCkgewogICAgICAgICBpZiAodmVy
Ym9zZSkKLSAgICAgICAgICAgIHByaW50ZigiRm91bmQgY2FjaGVkIGluZGV4LlxuIik7CisgICAg
ICAgICAgICBwYXNfbG9nKCJGb3VuZCBjYWNoZWQgaW5kZXguXG4iKTsKICAgICAgICAgYWxsb2Nh
dG9yX2luZGV4ID0gaGVhcF9yZWYtPmJhc2UuYWxsb2NhdG9yX2luZGV4OwogICAgIH0gZWxzZSB7
CiAgICAgICAgIHBhc19oZWFwKiBoZWFwOwogICAgICAgICBwYXNfc2VncmVnYXRlZF9oZWFwKiBz
ZWdyZWdhdGVkX2hlYXA7CiAgICAgICAgIAogICAgICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAg
ICAgIHByaW50ZigiVXNpbmcgZnVsbCBsb29rdXAuXG4iKTsKKyAgICAgICAgICAgIHBhc19sb2co
IlVzaW5nIGZ1bGwgbG9va3VwLlxuIik7CiAKICAgICAgICAgaGVhcCA9IGhlYXBfcmVmLT5iYXNl
LmhlYXA7CiAgICAgICAgIGlmICghaGVhcCkKQEAgLTE2NCw3ICsxNzUsNyBAQCBwYXNfdHJ5X2Fs
bG9jYXRlX3ByaW1pdGl2ZV9pbXBsX2lubGluZV9vCiAgICAgfQogICAgIAogICAgIGlmICh2ZXJi
b3NlKQotICAgICAgICBwcmludGYoImFsbG9jYXRvcl9pbmRleCA9ICV1XG4iLCBhbGxvY2F0b3Jf
aW5kZXgpOworICAgICAgICBwYXNfbG9nKCJhbGxvY2F0b3JfaW5kZXggPSAldVxuIiwgYWxsb2Nh
dG9yX2luZGV4KTsKIAogICAgIGNhY2hlID0gcGFzX3RocmVhZF9sb2NhbF9jYWNoZV90cnlfZ2V0
KCk7CiAgICAgaWYgKFBBU19VTkxJS0VMWSghY2FjaGUpKQpAQCAtMTczLDkgKzE4NCwxMiBAQCBw
YXNfdHJ5X2FsbG9jYXRlX3ByaW1pdGl2ZV9pbXBsX2lubGluZV9vCiAgICAgYWxsb2NhdG9yID0K
ICAgICAgICAgcGFzX3RocmVhZF9sb2NhbF9jYWNoZV90cnlfZ2V0X2xvY2FsX2FsbG9jYXRvcl9v
cl91bnNlbGVjdGVkX2Zvcl91bmluaXRpYWxpemVkX2luZGV4KAogICAgICAgICAgICAgY2FjaGUs
IGFsbG9jYXRvcl9pbmRleCk7Ci0gICAgaWYgKFBBU19VTkxJS0VMWSghYWxsb2NhdG9yLmRpZF9z
dWNjZWVkKSkKKyAgICBpZiAoUEFTX1VOTElLRUxZKCFhbGxvY2F0b3IuZGlkX3N1Y2NlZWQpKSB7
CisgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAgICAgICAgcGFzX2xvZygiQ291bGQgbm90IHF1
aWNrbHkgZ2V0IHRoZSBhbGxvY2F0b3IuXG4iKTsKICAgICAgICAgcmV0dXJuIHBhc19hbGxvY2F0
aW9uX3Jlc3VsdF9jcmVhdGVfZmFpbHVyZSgpOwotICAgIAorICAgIH0KKwogICAgIC8qIFRoaXMg
c2hvdWxkIGJlIHNwZWNpYWxpemVkIG91dCBpbiB0aGUgbm9uLWFsaWdubWVudCBjYXNlIGJlY2F1
c2Ugb2YgQUxXQVlTX0lOTElORSBhbmQKICAgICAgICBhbGlnbm1lbnQgYmVpbmcgdGhlIGNvbnN0
YW50IDEuICovCiAgICAgaWYgKFBBU19VTkxJS0VMWSgKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2xp
YnBhcy9zcmMvdGVzdC9FeHBlbmRhYmxlTWVtb3J5VGVzdHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9FeHBlbmRhYmxlTWVtb3J5VGVzdHMuY3BwCShy
ZXZpc2lvbiAyODgxNzkpCisrKyBTb3VyY2UvYm1hbGxvYy9saWJwYXMvc3JjL3Rlc3QvRXhwZW5k
YWJsZU1lbW9yeVRlc3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKGMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChjKSAyMDIxLTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxMSArMjgsMTQgQEAKICNpZiBQ
QVNfRU5BQkxFX0JNQUxMT0MKIAogI2luY2x1ZGUgImJtYWxsb2NfaGVhcC5oIgorI2luY2x1ZGUg
ImJtYWxsb2NfaGVhcF9jb25maWcuaCIKICNpbmNsdWRlIDxjb25kaXRpb25fdmFyaWFibGU+CiAj
aW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSAicGFzX2NvbXBhY3RfZXhwZW5kYWJsZV9tZW1vcnku
aCIKICNpbmNsdWRlICJwYXNfbGFyZ2VfZXhwZW5kYWJsZV9tZW1vcnkuaCIKICNpbmNsdWRlICJw
YXNfc2VncmVnYXRlZF9oZWFwLmgiCisjaW5jbHVkZSAicGFzX3NlZ3JlZ2F0ZWRfc2l6ZV9kaXJl
Y3RvcnlfaW5saW5lcy5oIgorI2luY2x1ZGUgPHRocmVhZD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIApAQCAtMjEyLDYgKzIxNSwxMjcgQEAgdm9pZCB0ZXN0U29NYW55SGVhcHMoKQogICAgIENI
RUNLKHBhc19zZWdyZWdhdGVkX2hlYXBfbnVtX3NpemVfbG9va3VwX3JlbWF0ZXJpYWxpemF0aW9u
cyk7CiB9CiAKK3ZvaWQgdGVzdFJhZ2UodW5zaWduZWQgbnVtSGVhcHMsIGZ1bmN0aW9uPHVuc2ln
bmVkKHVuc2lnbmVkKT4gYWxsb2NhdGlvblNpemUsIHVuc2lnbmVkIG51bVRocmVhZHMsCisgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNvdW50LCBmdW5jdGlvbjx2b2lkKCk+IHNsZWVwKQoreworICAg
IHRocmVhZCogdGhyZWFkcyA9IG5ldyB0aHJlYWRbbnVtVGhyZWFkc107CisgICAgcGFzX3ByaW1p
dGl2ZV9oZWFwX3JlZiogaGVhcHMgPSBuZXcgcGFzX3ByaW1pdGl2ZV9oZWFwX3JlZltudW1IZWFw
c107CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1IZWFwczsgaS0tOykKKyAgICAgICAgaGVh
cHNbaV0gPSBCTUFMTE9DX0ZMRVhfSEVBUF9SRUZfSU5JVElBTElaRVIobmV3IGJtYWxsb2NfdHlw
ZShCTUFMTE9DX1RZUEVfSU5JVElBTElaRVIoMSwgMSwgInRlc3QiKSkpOworCisgICAgbXV0ZXgg
bG9jazsKKyAgICB1bnNpZ25lZCBudW1UaHJlYWRzRG9uZSA9IDA7CisKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBudW1UaHJlYWRzOyBpLS07KSB7CisgICAgICAgIHRocmVhZHNbaV0gPSB0aHJlYWQo
WyZdICgpIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBjb3VudDsgKytq
KSB7CisgICAgICAgICAgICAgICAgcGFzX3ByaW1pdGl2ZV9oZWFwX3JlZiogaGVhcCA9IGhlYXBz
ICsgZGV0ZXJtaW5pc3RpY1JhbmRvbU51bWJlcihudW1IZWFwcyk7CisgICAgICAgICAgICAgICAg
c2l6ZV90IHNpemUgPSBhbGxvY2F0aW9uU2l6ZShqKTsKKyAgICAgICAgICAgICAgICB2b2lkKiBw
dHIgPSBibWFsbG9jX2FsbG9jYXRlX2ZsZXgoaGVhcCwgc2l6ZSk7CisgICAgICAgICAgICAgICAg
Q0hFQ0socHRyKTsKKyAgICAgICAgICAgICAgICBDSEVDS19HUkVBVEVSX0VRVUFMKGJtYWxsb2Nf
Z2V0X2FsbG9jYXRpb25fc2l6ZShwdHIpLCBzaXplKTsKKyAgICAgICAgICAgICAgICBDSEVDS19F
UVVBTChibWFsbG9jX2dldF9oZWFwKHB0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym1hbGxvY19mbGV4X2hlYXBfcmVmX2dldF9oZWFwKGhlYXApKTsKKyAgICAgICAgICAgICAgICBi
bWFsbG9jX2RlYWxsb2NhdGUocHRyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvY2tf
Z3VhcmQ8bXV0ZXg+IGxvY2tlcihsb2NrKTsKKyAgICAgICAgICAgIG51bVRocmVhZHNEb25lKys7
CisgICAgICAgIH0pOworICAgIH0KKworICAgIHdoaWxlIChudW1UaHJlYWRzRG9uZSA8IG51bVRo
cmVhZHMpIHsKKyAgICAgICAgcGFzX3NjYXZlbmdlcl9kZWNvbW1pdF9leHBlbmRhYmxlX21lbW9y
eSgpOworICAgICAgICBzbGVlcCgpOworICAgIH0KK30KKwordm9pZCB0ZXN0UmVtYXRlcmlhbGl6
ZUFmdGVyU2VhcmNoT2ZEZWNvbW1pdHRlZCgpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBpbml0aWFsU2l6ZSA9IDE2OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc2l6
ZSA9IDEwNzUyOworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc29tZU90aGVyU2l6ZSA9
IDUwMDA7CisgICAgCisgICAgcGFzX3ByaW1pdGl2ZV9oZWFwX3JlZiBoZWFwUmVmID0gQk1BTExP
Q19GTEVYX0hFQVBfUkVGX0lOSVRJQUxJWkVSKAorICAgICAgICBuZXcgYm1hbGxvY190eXBlKEJN
QUxMT0NfVFlQRV9JTklUSUFMSVpFUigxLCAxLCAidGVzdCIpKSk7CisgICAgcGFzX2hlYXAqIGhl
YXAgPSBibWFsbG9jX2ZsZXhfaGVhcF9yZWZfZ2V0X2hlYXAoJmhlYXBSZWYpOworCisgICAgdm9p
ZCogcHRyID0gYm1hbGxvY19hbGxvY2F0ZV9mbGV4KCZoZWFwUmVmLCBpbml0aWFsU2l6ZSk7Cisg
ICAgQ0hFQ0tfRVFVQUwoYm1hbGxvY19nZXRfYWxsb2NhdGlvbl9zaXplKHB0ciksIGluaXRpYWxT
aXplKTsKKyAgICBDSEVDS19FUVVBTChibWFsbG9jX2dldF9oZWFwKHB0ciksIGhlYXApOworICAg
IENIRUNLX0VRVUFMKGhlYXBSZWYuY2FjaGVkX2luZGV4LCBwYXNfc2VncmVnYXRlZF9oZWFwX2lu
ZGV4X2Zvcl9zaXplKGluaXRpYWxTaXplLCBCTUFMTE9DX0hFQVBfQ09ORklHKSk7CisKKyAgICBw
dHIgPSBibWFsbG9jX2FsbG9jYXRlX2ZsZXgoJmhlYXBSZWYsIHNpemUpOworICAgIENIRUNLX0VR
VUFMKGJtYWxsb2NfZ2V0X2FsbG9jYXRpb25fc2l6ZShwdHIpLCBzaXplKTsKKyAgICBDSEVDS19F
UVVBTChibWFsbG9jX2dldF9oZWFwKHB0ciksIGhlYXApOworCisgICAgcGFzX3NlZ3JlZ2F0ZWRf
dmlldyB2aWV3ID0gcGFzX3NlZ3JlZ2F0ZWRfdmlld19mb3Jfb2JqZWN0KAorICAgICAgICByZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocHRyKSwgJmJtYWxsb2NfaGVhcF9jb25maWcpOworICAg
IHBhc19zZWdyZWdhdGVkX3NpemVfZGlyZWN0b3J5KiBkaXJlY3RvcnkgPSBwYXNfc2VncmVnYXRl
ZF92aWV3X2dldF9zaXplX2RpcmVjdG9yeSh2aWV3KTsKKworICAgIHBhc19zZWdyZWdhdGVkX2hl
YXBfbWVkaXVtX2RpcmVjdG9yeV90dXBsZSogdHVwbGUgPQorICAgICAgICBwYXNfc2VncmVnYXRl
ZF9oZWFwX21lZGl1bV9kaXJlY3RvcnlfdHVwbGVfZm9yX2luZGV4KAorICAgICAgICAgICAgJmhl
YXAtPnNlZ3JlZ2F0ZWRfaGVhcCwKKyAgICAgICAgICAgIHBhc19zZWdyZWdhdGVkX2hlYXBfaW5k
ZXhfZm9yX3NpemUoc2l6ZSwgQk1BTExPQ19IRUFQX0NPTkZJRyksCisgICAgICAgICAgICBwYXNf
c2VncmVnYXRlZF9oZWFwX21lZGl1bV9zaXplX2RpcmVjdG9yeV9zZWFyY2hfd2l0aGluX3NpemVf
Y2xhc3NfcHJvZ3Jlc3Npb24sCisgICAgICAgICAgICBwYXNfbG9ja19pc19ub3RfaGVsZCk7CisK
KyAgICBDSEVDSyh0dXBsZSk7CisgICAgQ0hFQ0tfRVFVQUwocGFzX2NvbXBhY3RfYXRvbWljX3Nl
Z3JlZ2F0ZWRfc2l6ZV9kaXJlY3RvcnlfcHRyX2xvYWQoJnR1cGxlLT5kaXJlY3RvcnkpLAorICAg
ICAgICAgICAgICAgIGRpcmVjdG9yeSk7CisKKyAgICBwYXNfc2NhdmVuZ2VyX2Zha2VfZGVjb21t
aXRfZXhwZW5kYWJsZV9tZW1vcnkoKTsKKworICAgIHR1cGxlLT5iZWdpbl9pbmRleCA9IDA7CisK
KyAgICBwYXNfc2VncmVnYXRlZF9oZWFwX21lZGl1bV9kaXJlY3RvcnlfdHVwbGUqIHNvbWVPdGhl
clR1cGxlID0KKyAgICAgICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9tZWRpdW1fZGlyZWN0b3J5X3R1
cGxlX2Zvcl9pbmRleCgKKyAgICAgICAgICAgICZoZWFwLT5zZWdyZWdhdGVkX2hlYXAsCisgICAg
ICAgICAgICBwYXNfc2VncmVnYXRlZF9oZWFwX2luZGV4X2Zvcl9zaXplKHNvbWVPdGhlclNpemUs
IEJNQUxMT0NfSEVBUF9DT05GSUcpLAorICAgICAgICAgICAgcGFzX3NlZ3JlZ2F0ZWRfaGVhcF9t
ZWRpdW1fc2l6ZV9kaXJlY3Rvcnlfc2VhcmNoX3dpdGhpbl9zaXplX2NsYXNzX3Byb2dyZXNzaW9u
LAorICAgICAgICAgICAgcGFzX2xvY2tfaXNfbm90X2hlbGQpOworCisgICAgaWYgKHNvbWVPdGhl
clR1cGxlKSB7CisgICAgICAgIGNvdXQgPDwgIlVuZXhwZWN0ZWRseSBmb3VuZCBhIHR1cGxlOiAi
IDw8IHNvbWVPdGhlclR1cGxlIDw8ICJcbiI7CisgICAgICAgIGNvdXQgPDwgIkl0IHBvaW50cyBh
dCBkaXJlY3RvcnkgPSAiCisgICAgICAgICAgICAgPDwgcGFzX2NvbXBhY3RfYXRvbWljX3NlZ3Jl
Z2F0ZWRfc2l6ZV9kaXJlY3RvcnlfcHRyX2xvYWQoJnNvbWVPdGhlclR1cGxlLT5kaXJlY3Rvcnkp
IDw8ICJcbiI7CisgICAgICAgIGNvdXQgPDwgIk91ciBvcmlnaW5hbCBkaXJlY3RvcnkgaXMgPSAi
IDw8IGRpcmVjdG9yeSA8PCAiXG4iOworICAgIH0KKyAgICAKKyAgICBDSEVDSyghc29tZU90aGVy
VHVwbGUpOworfQorCit2b2lkIHRlc3RCYXNpY1NpemVDbGFzcyh1bnNpZ25lZCBmaXJzdFNpemUs
IHVuc2lnbmVkIHNlY29uZFNpemUpCit7CisgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJv
c2UgPSBmYWxzZTsKKyAgICAKKyAgICBwYXNfcHJpbWl0aXZlX2hlYXBfcmVmIGhlYXBSZWYgPSBC
TUFMTE9DX0ZMRVhfSEVBUF9SRUZfSU5JVElBTElaRVIoCisgICAgICAgIG5ldyBibWFsbG9jX3R5
cGUoQk1BTExPQ19UWVBFX0lOSVRJQUxJWkVSKDEsIDEsICJ0ZXN0IikpKTsKKworICAgIGlmICh2
ZXJib3NlKQorICAgICAgICBjb3V0IDw8ICJBbGxvY2F0aW5nICIgPDwgZmlyc3RTaXplIDw8ICJc
biI7CisgICAgdm9pZCogcHRyID0gYm1hbGxvY19hbGxvY2F0ZV9mbGV4KCZoZWFwUmVmLCBmaXJz
dFNpemUpOworICAgIGlmICh2ZXJib3NlKQorICAgICAgICBjb3V0IDw8ICJBbGxvY2F0aW5nICIg
PDwgc2Vjb25kU2l6ZSA8PCAiXG4iOworICAgIGJtYWxsb2NfYWxsb2NhdGVfZmxleCgmaGVhcFJl
Ziwgc2Vjb25kU2l6ZSk7CisKKyAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgY291dCA8PCAiRG9p
bmcgc29tZSBjaGVja3MuXG4iOworICAgIENIRUNLKHBhc190aHJlYWRfbG9jYWxfY2FjaGVfdHJ5
X2dldCgpKTsKKyAgICBDSEVDS19FUVVBTChoZWFwUmVmLmNhY2hlZF9pbmRleCwgcGFzX3NlZ3Jl
Z2F0ZWRfaGVhcF9pbmRleF9mb3Jfc2l6ZShmaXJzdFNpemUsIEJNQUxMT0NfSEVBUF9DT05GSUcp
KTsKKyAgICBDSEVDSyhoZWFwUmVmLmJhc2UuYWxsb2NhdG9yX2luZGV4KTsKKyAgICBDSEVDSyhw
YXNfdGhyZWFkX2xvY2FsX2NhY2hlX3RyeV9nZXRfbG9jYWxfYWxsb2NhdG9yX29yX3Vuc2VsZWN0
ZWRfZm9yX3VuaW5pdGlhbGl6ZWRfaW5kZXgoCisgICAgICAgICAgICAgIHBhc190aHJlYWRfbG9j
YWxfY2FjaGVfdHJ5X2dldCgpLCBoZWFwUmVmLmJhc2UuYWxsb2NhdG9yX2luZGV4KS5kaWRfc3Vj
Y2VlZCk7CisgICAgaWYgKHZlcmJvc2UpCisgICAgICAgIGNvdXQgPDwgIkRpZCBzb21lIGNoZWNr
cy5cbiI7CisKKyAgICBwYXNfc2VncmVnYXRlZF92aWV3IHZpZXcgPSBwYXNfc2VncmVnYXRlZF92
aWV3X2Zvcl9vYmplY3QoCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwdHIp
LCAmYm1hbGxvY19oZWFwX2NvbmZpZyk7CisgICAgcGFzX3NlZ3JlZ2F0ZWRfc2l6ZV9kaXJlY3Rv
cnkqIGRpcmVjdG9yeSA9IHBhc19zZWdyZWdhdGVkX3ZpZXdfZ2V0X3NpemVfZGlyZWN0b3J5KHZp
ZXcpOworICAgIHBhc19zZWdyZWdhdGVkX3NpemVfZGlyZWN0b3J5X3NlbGVjdF9hbGxvY2F0b3Io
CisgICAgICAgIGRpcmVjdG9yeSwgZmlyc3RTaXplLCBwYXNfYXZvaWRfc2l6ZV9sb29rdXAsICZi
bWFsbG9jX2hlYXBfY29uZmlnLCAmaGVhcFJlZi5jYWNoZWRfaW5kZXgpOworfQorCiB9IC8vIGFu
b255bW91cyBuYW1lc3BhY2UKIAogI2VuZGlmIC8vIFBBU19FTkFCTEVfQk1BTExPQwpAQCAtMjE5
LDkgKzM0MywyNiBAQCB2b2lkIHRlc3RTb01hbnlIZWFwcygpCiB2b2lkIGFkZEV4cGVuZGFibGVN
ZW1vcnlUZXN0cygpCiB7CiAjaWYgUEFTX0VOQUJMRV9CTUFMTE9DCisgICAgRm9yY2VUTEFzIGZv
cmNlVExBczsKKyAgICAKICAgICBBRERfVEVTVCh0ZXN0U3luY2hyb25vdXNTY2F2ZW5naW5nRXhw
ZW5kc0V4cGVuZGFibGVNZW1vcnkoKSk7CiAgICAgQUREX1RFU1QodGVzdFNjYXZlbmdlckV4cGVu
ZHNFeHBlbmRhYmxlTWVtb3J5KCkpOwogICAgIEFERF9URVNUKHRlc3RTb01hbnlIZWFwcygpKTsK
KyAgICBBRERfVEVTVCh0ZXN0UmFnZSgxMCwgW10gKHVuc2lnbmVkKSB7IHJldHVybiBkZXRlcm1p
bmlzdGljUmFuZG9tTnVtYmVyKDEwMDAwMCk7IH0sIDEwLCAxMDAwMDAsIFtdICgpIHsgc2NoZWRf
eWllbGQoKTsgfSkpOworICAgIEFERF9URVNUKHRlc3RSYWdlKDEwLCBbXSAodW5zaWduZWQgaikg
eyByZXR1cm4gZGV0ZXJtaW5pc3RpY1JhbmRvbU51bWJlcihqKTsgfSwgMiwgMTAwMDAwMCwgW10g
KCkgeyBzY2hlZF95aWVsZCgpOyB9KSk7CisgICAgQUREX1RFU1QodGVzdFJhZ2UoMTAsIFtdICh1
bnNpZ25lZCBqKSB7IHJldHVybiBqOyB9LCAxMCwgMTAwMDAwLCBbXSAoKSB7IHNjaGVkX3lpZWxk
KCk7IH0pKTsKKyAgICBBRERfVEVTVCh0ZXN0UmFnZSgxMCwgW10gKHVuc2lnbmVkIGopIHsgcmV0
dXJuIGo7IH0sIDEsIDEwMDAwMDAsIFtdICgpIHsgc2NoZWRfeWllbGQoKTsgfSkpOworICAgIEFE
RF9URVNUKHRlc3RSYWdlKDEwMDAsIFtdICh1bnNpZ25lZCkgeyByZXR1cm4gZGV0ZXJtaW5pc3Rp
Y1JhbmRvbU51bWJlcigxMDAwMDApOyB9LCAxMCwgMTAwMDAwLCBbXSAoKSB7IHNjaGVkX3lpZWxk
KCk7IH0pKTsKKyAgICBBRERfVEVTVCh0ZXN0UmFnZSgxMDAwLCBbXSAodW5zaWduZWQgaikgeyBy
ZXR1cm4gZGV0ZXJtaW5pc3RpY1JhbmRvbU51bWJlcihqKTsgfSwgMiwgMTAwMDAwMCwgW10gKCkg
eyBzY2hlZF95aWVsZCgpOyB9KSk7CisgICAgQUREX1RFU1QodGVzdFJhZ2UoMTAwMCwgW10gKHVu
c2lnbmVkIGopIHsgcmV0dXJuIGo7IH0sIDEwLCAxMDAwMDAsIFtdICgpIHsgc2NoZWRfeWllbGQo
KTsgfSkpOworICAgIEFERF9URVNUKHRlc3RSYWdlKDEwLCBbXSAodW5zaWduZWQpIHsgcmV0dXJu
IGRldGVybWluaXN0aWNSYW5kb21OdW1iZXIoMTAwMDAwKTsgfSwgMiwgMTAwMDAwMCwgW10gKCkg
eyBzY2hlZF95aWVsZCgpOyB9KSk7CisgICAgQUREX1RFU1QodGVzdFJhZ2UoMTAsIFtdICh1bnNp
Z25lZCBqKSB7IHJldHVybiBkZXRlcm1pbmlzdGljUmFuZG9tTnVtYmVyKGopOyB9LCAxMCwgMTAw
MDAwLCBbXSAoKSB7IHVzbGVlcCgxKTsgfSkpOworICAgIEFERF9URVNUKHRlc3RSYWdlKDEwLCBb
XSAodW5zaWduZWQgaikgeyByZXR1cm4gajsgfSwgMSwgMTAwMDAwLCBbXSAoKSB7IHVzbGVlcCgx
KTsgfSkpOworICAgIEFERF9URVNUKHRlc3RSYWdlKDEwMDAsIFtdICh1bnNpZ25lZCkgeyByZXR1
cm4gZGV0ZXJtaW5pc3RpY1JhbmRvbU51bWJlcigxMDAwMDApOyB9LCAyLCAxMDAwMDAwLCBbXSAo
KSB7IHVzbGVlcCgxKTsgfSkpOworICAgIEFERF9URVNUKHRlc3RSYWdlKDEwMDAsIFtdICh1bnNp
Z25lZCBqKSB7IHJldHVybiBkZXRlcm1pbmlzdGljUmFuZG9tTnVtYmVyKGopOyB9LCAyLCAxMDAw
MDAwLCBbXSAoKSB7IHVzbGVlcCgxKTsgfSkpOworICAgIEFERF9URVNUKHRlc3RSYWdlKDEwMDAs
IFtdICh1bnNpZ25lZCBqKSB7IHJldHVybiBqOyB9LCAxMCwgMTAwMDAwLCBbXSAoKSB7IHVzbGVl
cCgxKTsgfSkpOworICAgIEFERF9URVNUKHRlc3RSZW1hdGVyaWFsaXplQWZ0ZXJTZWFyY2hPZkRl
Y29tbWl0dGVkKCkpOworICAgIEFERF9URVNUKHRlc3RCYXNpY1NpemVDbGFzcygwLCAxNikpOwog
I2VuZGlmIC8vIFBBU19FTkFCTEVfQk1BTExPQwogfQogCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9s
aWJwYXMvc3JjL3Rlc3QvVGVzdEhhcm5lc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFs
bG9jL2xpYnBhcy9zcmMvdGVzdC9UZXN0SGFybmVzcy5jcHAJKHJldmlzaW9uIDI4ODE3OSkKKysr
IFNvdXJjZS9ibWFsbG9jL2xpYnBhcy9zcmMvdGVzdC9UZXN0SGFybmVzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDggQEAKIAogI2luY2x1ZGUgIlZlcmlmaWVyLmgiCiAjaW5jbHVk
ZSA8YXRvbWljPgorI2luY2x1ZGUgImJtYWxsb2NfaGVhcF9jb25maWcuaCIKKyNpbmNsdWRlICJo
b3RiaXRfaGVhcF9jb25maWcuaCIKICNpbmNsdWRlICJpc29faGVhcF9jb25maWcuaCIKICNpbmNs
dWRlICJpc29fdGVzdF9oZWFwX2NvbmZpZy5oIgogI2luY2x1ZGUgImppdF9oZWFwLmgiCkBAIC0x
MDMsNiArMTA1LDggQEAgUnVudGltZUNvbmZpZ1Rlc3RTY29wZTo6UnVudGltZUNvbmZpZ1Rlcwog
ICAgICAgICAgICAgRk9SX0VBQ0hfUlVOVElNRV9DT05GSUcoaXNvX3Rlc3QsIHNldFVwKTsKICAg
ICAgICAgICAgIEZPUl9FQUNIX1JVTlRJTUVfQ09ORklHKG1pbmFsaWduMzIsIHNldFVwKTsKICAg
ICAgICAgICAgIEZPUl9FQUNIX1JVTlRJTUVfQ09ORklHKHBhZ2VzaXplNjRrLCBzZXRVcCk7Cisg
ICAgICAgICAgICBGT1JfRUFDSF9SVU5USU1FX0NPTkZJRyhibWFsbG9jLCBzZXRVcCk7CisgICAg
ICAgICAgICBGT1JfRUFDSF9SVU5USU1FX0NPTkZJRyhob3RiaXQsIHNldFVwKTsKICAgICAgICAg
ICAgIHNldFVwKHBhc191dGlsaXR5X2hlYXBfcnVudGltZV9jb25maWcpOwogICAgICAgICAgICAg
c2V0VXAoaml0X2hlYXBfcnVudGltZV9jb25maWcpOwogICAgICAgICB9KQo=
</data>
<flag name="review"
          id="475717"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>