<?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>144189</bug_id>
          
          <creation_ts>2015-04-24 23:55:05 -0700</creation_ts>
          <short_desc>REGRESSION(r183288): Made js/sort-with-side-effecting-comparisons.html time out in debug builds (Requested by ap on #webkit).</short_desc>
          <delta_ts>2015-04-24 23:58:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>144013</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1088498</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-24 23:55:05 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/183288 broke the build:
Made js/sort-with-side-effecting-comparisons.html time out in debug builds (Requested by ap on #webkit).

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

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

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

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088504</commentid>
    <comment_count>2</comment_count>
      <attachid>251615</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-24 23:58:23 -0700</bug_when>
    <thetext>Comment on attachment 251615
ROLLOUT of r183288

Clearing flags on attachment: 251615

Committed r183308: &lt;http://trac.webkit.org/changeset/183308&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088505</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-24 23:58:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251615</attachid>
            <date>2015-04-24 23:55:34 -0700</date>
            <delta_ts>2015-04-24 23:58:23 -0700</delta_ts>
            <desc>ROLLOUT of r183288</desc>
            <filename>bug-144189-20150424235429.patch</filename>
            <type>text/plain</type>
            <size>103539</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NDYwMjUxMjZjZWIyNTBjYzRhYzliNzk1N2U1YzlkNmY4YjMxY2MwLi4yYjI3YWRiM2RjMzgyYmNh
ZDE3ZjU5ODNjMTE4YzM5ZmJiMWE0NWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNS0wNC0yNCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4MzI4OC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDE4OQorCisgICAg
ICAgIE1hZGUganMvc29ydC13aXRoLXNpZGUtZWZmZWN0aW5nLWNvbXBhcmlzb25zLmh0bWwgdGlt
ZSBvdXQgaW4KKyAgICAgICAgZGVidWcgYnVpbGRzIChSZXF1ZXN0ZWQgYnkgYXAgb24gI3dlYmtp
dCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJJdCBzaG91bGRu
J3QgdGFrZSAxODQ2IGxpbmVzIG9mIGNvZGUgYW5kIDUgRklYTUVzIHRvIHNvcnQgYW4KKyAgICAg
ICAgYXJyYXkuIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0MDEzCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzE4MzI4
OAorCiAyMDE1LTA0LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQ1JBU0ggaW4gb3BlcmF0aW9uQ3JlYXRlRGlyZWN0QXJndW1lbnRzRHVyaW5nRXhpdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmlu
ZGV4IGEwNjY3MDg0NmRkMWE0NTJiMTAyNGUzNWZmZTAzOTA5MTgzMmRhMmIuLjljMzU5NzRjZGIz
MTY3MWFjMzkzZmZmY2JkMjU4NjQwMDYzYWU4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUt
MDQtMjQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODMyODguCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQxODkKKworICAgICAgICBNYWRlIGpzL3NvcnQt
d2l0aC1zaWRlLWVmZmVjdGluZy1jb21wYXJpc29ucy5odG1sIHRpbWUgb3V0IGluCisgICAgICAg
IGRlYnVnIGJ1aWxkcyAoUmVxdWVzdGVkIGJ5IGFwIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJl
dmVydGVkIGNoYW5nZXNldDoKKworICAgICAgICAiSXQgc2hvdWxkbid0IHRha2UgMTg0NiBsaW5l
cyBvZiBjb2RlIGFuZCA1IEZJWE1FcyB0byBzb3J0IGFuCisgICAgICAgIGFycmF5LiIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDAxMworICAgICAg
ICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xODMyODgKKwogMjAxNS0wNC0yMSAg
R2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEl0IHNob3VsZG4n
dCB0YWtlIDE4NDYgbGluZXMgb2YgY29kZSBhbmQgNSBGSVhNRXMgdG8gc29ydCBhbiBhcnJheS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5
cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXkucHJvdG90eXBlLmpz
CmluZGV4IGU3NTY0MTE0NGQzMjRmYTM3M2U2MzVjNGE2N2U3ODMzZGQ1OWI5NTUuLmQyNGRlOTY1
NGNiNmU1OWUxYWMyMzdjNDU3ZTQyNmU0NTkxZWEyZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9BcnJheS5wcm90b3R5cGUuanMKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5LnByb3RvdHlwZS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjc3LDE4NSArMjc3LDMgQEAg
ZnVuY3Rpb24gaW5jbHVkZXMoc2VhcmNoRWxlbWVudCAvKiwgZnJvbUluZGV4Ki8pIHsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwogfQotCi1mdW5jdGlvbiBzb3J0KGNvbXBhcmF0b3IpCi17Ci0g
ICAgInVzZSBzdHJpY3QiOwotCi0gICAgZnVuY3Rpb24gbWluKGEsIGIpCi0gICAgewotICAgICAg
ICByZXR1cm4gYSA8IGIgPyBhIDogYjsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzdHJpbmdDb21w
YXJhdG9yKGEsIGIpCi0gICAgewotICAgICAgICB2YXIgYVN0cmluZyA9IEBTdHJpbmcoYSk7Ci0g
ICAgICAgIHZhciBiU3RyaW5nID0gQFN0cmluZyhiKTsKLQotICAgICAgICB2YXIgYUxlbmd0aCA9
IGFTdHJpbmcubGVuZ3RoOwotICAgICAgICB2YXIgYkxlbmd0aCA9IGJTdHJpbmcubGVuZ3RoOwot
ICAgICAgICB2YXIgbGVuZ3RoID0gbWluKGFMZW5ndGgsIGJMZW5ndGgpOwotCi0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBhQ2hhckNv
ZGUgPSBhU3RyaW5nLkBjaGFyQ29kZUF0KGkpOwotICAgICAgICAgICAgdmFyIGJDaGFyQ29kZSA9
IGJTdHJpbmcuQGNoYXJDb2RlQXQoaSk7Ci0KLSAgICAgICAgICAgIGlmIChhQ2hhckNvZGUgPT0g
YkNoYXJDb2RlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAo
YUNoYXJDb2RlIDwgYkNoYXJDb2RlKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLQotICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYUxlbmd0aCA9PSBi
TGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgaWYgKGFMZW5ndGggPCBi
TGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgICAgIHJldHVybiAxOwotICAg
IH0KLQotICAgIC8vIE1vdmUgdW5kZWZpbmVkcyBhbmQgaG9sZXMgdG8gdGhlIGVuZCBvZiBhIHNw
YXJzZSBhcnJheS4gUmVzdWx0IGlzIFt2YWx1ZXMuLi4sIHVuZGVmaW5lZHMuLi4sIGhvbGVzLi4u
XS4KLSAgICBmdW5jdGlvbiBjb21wYWN0U3BhcnNlKGFycmF5LCBkc3QsIHNyYywgbGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgdmFyIHZhbHVlcyA9IFsgXTsKLSAgICAgICAgdmFyIHNlZW4gPSB7IH07
Ci0gICAgICAgIHZhciB2YWx1ZUNvdW50ID0gMDsKLSAgICAgICAgdmFyIHVuZGVmaW5lZENvdW50
ID0gMDsKLQotICAgICAgICAvLyBDbGVhbiB1cCBhZnRlciB0aGUgaW4tcHJvZ3Jlc3Mgbm9uLXNw
YXJzZSBjb21wYWN0aW9uIHRoYXQgZmFpbGVkLgotICAgICAgICBmb3IgKHZhciBpID0gZHN0OyBp
IDwgc3JjOyArK2kpCi0gICAgICAgICAgICBkZWxldGUgYXJyYXlbaV07Ci0KLSAgICAgICAgZm9y
ICh2YXIgb2JqZWN0ID0gYXJyYXk7IG9iamVjdDsgb2JqZWN0ID0gQE9iamVjdC5AZ2V0UHJvdG90
eXBlT2Yob2JqZWN0KSkgewotICAgICAgICAgICAgdmFyIHByb3BlcnR5TmFtZXMgPSBAT2JqZWN0
LkBnZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHByb3BlcnR5TmFtZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIg
aW5kZXggPSBwcm9wZXJ0eU5hbWVzW2ldOwotICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IGxl
bmd0aCkgeyAvLyBFeGNsdWRlIG5vbi1udW1lcmljIHByb3BlcnRpZXMgYW5kIHByb3BlcnRpZXMg
cGFzdCBsZW5ndGguCi0gICAgICAgICAgICAgICAgICAgIGlmIChzZWVuW2luZGV4XSkgLy8gRXhj
bHVkZSBkdXBsaWNhdGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICAgICAgICAgIHNlZW5baW5kZXhdID0gMTsKLQotICAgICAgICAgICAgICAgICAgICB2
YXIgdmFsdWUgPSBhcnJheVtpbmRleF07Ci0gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhcnJh
eVtpbmRleF07Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICsrdW5kZWZpbmVkQ291bnQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgIGFycmF5W3ZhbHVlQ291bnQrK10gPSB2YWx1ZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHZhciBpID0gdmFs
dWVDb3VudDsgaSA8IHZhbHVlQ291bnQgKyB1bmRlZmluZWRDb3VudDsgKytpKQotICAgICAgICAg
ICAgYXJyYXlbaV0gPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgcmV0dXJuIHZhbHVlQ291bnQ7Ci0g
ICAgfQotCi0gICAgLy8gTW92ZSB1bmRlZmluZWRzIGFuZCBob2xlcyB0byB0aGUgZW5kIG9mIGFu
IGFycmF5LiBSZXN1bHQgaXMgW3ZhbHVlcy4uLiwgdW5kZWZpbmVkcy4uLiwgaG9sZXMuLi5dLgot
ICAgIGZ1bmN0aW9uIGNvbXBhY3QoYXJyYXksIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHZhciBo
b2xlQ291bnQgPSAwOwotCi0gICAgICAgIGZvciAodmFyIGRzdCA9IDAsIHNyYyA9IDA7IHNyYyA8
IGxlbmd0aDsgKytzcmMpIHsKLSAgICAgICAgICAgIGlmICghKHNyYyBpbiBhcnJheSkpIHsKLSAg
ICAgICAgICAgICAgICArK2hvbGVDb3VudDsKLSAgICAgICAgICAgICAgICBpZiAoaG9sZUNvdW50
IDwgMjU2KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gY29tcGFjdFNwYXJzZShhcnJheSwgZHN0LCBzcmMsIGxlbmd0aCk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIHZhciB2YWx1ZSA9IGFycmF5W3NyY107Ci0gICAgICAgICAgICBp
ZiAodmFsdWUgPT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGFycmF5W2RzdCsrXSA9IHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHZh
bHVlQ291bnQgPSBkc3Q7Ci0gICAgICAgIHZhciB1bmRlZmluZWRDb3VudCA9IGxlbmd0aCAtIHZh
bHVlQ291bnQgLSBob2xlQ291bnQ7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IHZhbHVlQ291bnQ7
IGkgPCB2YWx1ZUNvdW50ICsgdW5kZWZpbmVkQ291bnQ7ICsraSkKLSAgICAgICAgICAgIGFycmF5
W2ldID0gdW5kZWZpbmVkOwotCi0gICAgICAgIGZvciAodmFyIGkgPSB2YWx1ZUNvdW50ICsgdW5k
ZWZpbmVkQ291bnQ7IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRlbGV0ZSBhcnJheVtp
XTsKLQotICAgICAgICByZXR1cm4gdmFsdWVDb3VudDsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBt
ZXJnZShkc3QsIHNyYywgc3JjSW5kZXgsIHNyY0VuZCwgd2lkdGgsIGNvbXBhcmF0b3IpCi0gICAg
ewotICAgICAgICB2YXIgbGVmdCA9IHNyY0luZGV4OwotICAgICAgICB2YXIgbGVmdEVuZCA9IG1p
bihsZWZ0ICsgd2lkdGgsIHNyY0VuZCk7Ci0gICAgICAgIHZhciByaWdodCA9IGxlZnRFbmQ7Ci0g
ICAgICAgIHZhciByaWdodEVuZCA9IG1pbihyaWdodCArIHdpZHRoLCBzcmNFbmQpOwotCi0gICAg
ICAgIGZvciAodmFyIGRzdEluZGV4ID0gbGVmdDsgZHN0SW5kZXggPCByaWdodEVuZDsgKytkc3RJ
bmRleCkgewotICAgICAgICAgICAgaWYgKHJpZ2h0IDwgcmlnaHRFbmQpIHsKLSAgICAgICAgICAg
ICAgICBpZiAobGVmdCA+PSBsZWZ0RW5kIHx8IGNvbXBhcmF0b3Ioc3JjW2xlZnRdLCBzcmNbcmln
aHRdKSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgZHN0W2RzdEluZGV4XSA9IHNyY1tyaWdo
dCsrXTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkc3RbZHN0SW5kZXhdID0gc3JjW2xlZnQrK107
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBtZXJnZVNvcnQoYXJyYXksIHZhbHVl
Q291bnQsIGNvbXBhcmF0b3IpCi0gICAgewotICAgICAgICB2YXIgYnVmZmVyID0gWyBdOwotICAg
ICAgICBidWZmZXIubGVuZ3RoID0gdmFsdWVDb3VudDsKLQotICAgICAgICB2YXIgZHN0ID0gYnVm
ZmVyOwotICAgICAgICB2YXIgc3JjID0gYXJyYXk7Ci0gICAgICAgIGZvciAodmFyIHdpZHRoID0g
MTsgd2lkdGggPCB2YWx1ZUNvdW50OyB3aWR0aCAqPSAyKSB7Ci0gICAgICAgICAgICBmb3IgKHZh
ciBzcmNJbmRleCA9IDA7IHNyY0luZGV4IDwgdmFsdWVDb3VudDsgc3JjSW5kZXggKz0gMiAqIHdp
ZHRoKQotICAgICAgICAgICAgICAgIG1lcmdlKGRzdCwgc3JjLCBzcmNJbmRleCwgdmFsdWVDb3Vu
dCwgd2lkdGgsIGNvbXBhcmF0b3IpOwotCi0gICAgICAgICAgICB2YXIgdG1wID0gc3JjOwotICAg
ICAgICAgICAgc3JjID0gZHN0OwotICAgICAgICAgICAgZHN0ID0gdG1wOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKHNyYyAhPSBhcnJheSkgewotICAgICAgICAgICAgZm9yKHZhciBpID0gMDsg
aSA8IHZhbHVlQ291bnQ7IGkrKykKLSAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHNyY1tpXTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNvbXBhcmF0b3JTb3J0KGFycmF5LCBj
b21wYXJhdG9yKQotICAgIHsKLSAgICAgICAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA+Pj4g
MDsKLQotICAgICAgICAvLyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIEZpcmVmb3ggYW5kIENocm9t
ZSwgZG8gbm90aGluZyBvYnNlcnZhYmxlCi0gICAgICAgIC8vIHRvIHRoZSB0YXJnZXQgYXJyYXkg
aWYgaXQgaGFzIDAgb3IgMSBzb3J0YWJsZSBwcm9wZXJ0aWVzLgotICAgICAgICBpZiAobGVuZ3Ro
IDwgMikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgdmFsdWVDb3VudCA9IGNv
bXBhY3QoYXJyYXksIGxlbmd0aCk7Ci0gICAgICAgIG1lcmdlU29ydChhcnJheSwgdmFsdWVDb3Vu
dCwgY29tcGFyYXRvcik7Ci0gICAgfQotCi0gICAgaWYgKHRoaXMgPT09IG51bGwpCi0gICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuc29ydCByZXF1aXJlcyB0aGF0
IHx0aGlzfCBub3QgYmUgbnVsbCIpOwotCi0gICAgaWYgKHRoaXMgPT09IHVuZGVmaW5lZCkKLSAg
ICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5zb3J0IHJlcXVpcmVz
IHRoYXQgfHRoaXN8IG5vdCBiZSB1bmRlZmluZWQiKTsKLQotICAgIGlmICh0eXBlb2YgdGhpcyA9
PSAic3RyaW5nIikKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkF0dGVtcHRlZCB0byBh
c3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuIik7Ci0KLSAgICBpZiAodHlwZW9mIGNvbXBhcmF0
b3IgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgIGNvbXBhcmF0b3IgPSBzdHJpbmdDb21wYXJhdG9y
OwotCi0gICAgdmFyIGFycmF5ID0gQE9iamVjdCh0aGlzKTsKLSAgICBjb21wYXJhdG9yU29ydChh
cnJheSwgY29tcGFyYXRvcik7Ci0gICAgcmV0dXJuIGFycmF5OwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCAy
NDVlZmYzYjdkZDM5ZTdjN2FjOWNkYmQ0ODkxNDUwMmNiZDc4YTQ4Li4wYjk2MjdiMzcwZmZjNjk4
ZjM5YmRiMmU3ZGEzOTgwNzU3OWUyYTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtMTAxLDYgKzEwMSw3IEBA
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZUV4
ZWN1dGFibGVJbnRlcm5hbChjb25zdCBTCiAgICAgICAgIAogICAgICAgICBpZiAoY2xvc2VkVmFy
aWFibGUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT51bmRlZmluZWRLZXl3b3JkLmltcGwoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3ZtLnByb3BlcnR5
TmFtZXMtPmlzUHJpdmF0ZU5hbWUoY2xvc2VkVmFyaWFibGUuZ2V0KCkpKTsKICAgICB9CiAgICAg
Ym9keS0+b3ZlcnJpZGVOYW1lKG5hbWUpOwogICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRl
KCZtX3ZtLCBzb3VyY2UsIGJvZHksIGtpbmQsIFdURjo6bW92ZShzb3VyY2VPdmVycmlkZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGFmOWFjNmYx
Mjk1MjYxZDYyNmVjMmRiNjZkNzQ3ZDQyYzBjMzYzYTcuLjJmZGZhMzBhNTA4YmQwOWQ5OWVkN2Nl
ODljMzVjNTJkZWRkNGJiYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKQEAgLTI0OSw2ICsyNDksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKTsKICAgICB9CiAKKyAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0
dXJuIG1fdW5saW5rZWRDb2RlLT5pc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKTsgfQorCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZJbnN0cnVjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0
aW9ucy5zaXplKCk7IH0KICAgICBSZWZDb3VudGVkQXJyYXk8SW5zdHJ1Y3Rpb24+JiBpbnN0cnVj
dGlvbnMoKSB7IHJldHVybiBtX2luc3RydWN0aW9uczsgfQogICAgIGNvbnN0IFJlZkNvdW50ZWRB
cnJheTxJbnN0cnVjdGlvbj4mIGluc3RydWN0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1
Y3Rpb25zOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5s
aW5rZWRDb2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmNwcAppbmRleCAxYThkZjYxMDUxYTRhZWYwNDExOTFmZjAyZGFkZGRmOWQx
ZDA1NGQ5Li4zNWUwZjkwODJjMmJkZWExY2M0YmZlMWMzY2Y1NjdiMTBmZjMxMmE4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKQEAgLTI0MSw2ICsyNDEsNyBAQCBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxv
Y2soVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQ29kZVR5cGUgY29kZQogICAgICwgbV9n
bG9iYWxPYmplY3RSZWdpc3RlcihWaXJ0dWFsUmVnaXN0ZXIoKSkKICAgICAsIG1fbmVlZHNGdWxs
U2NvcGVDaGFpbihpbmZvLm5lZWRzQWN0aXZhdGlvbigpKQogICAgICwgbV91c2VzRXZhbChpbmZv
LnVzZXNFdmFsKCkpCisgICAgLCBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihmYWxzZSkKICAg
ICAsIG1faXNTdHJpY3RNb2RlKGluZm8uaXNTdHJpY3RNb2RlKCkpCiAgICAgLCBtX2lzQ29uc3Ry
dWN0b3IoaW5mby5pc0NvbnN0cnVjdG9yKCkpCiAgICAgLCBtX2hhc0NhcHR1cmVkVmFyaWFibGVz
KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRD
b2RlQmxvY2suaAppbmRleCBiMjk3NGZmYzJiOGE2OWE4OThmMWYxMzQ1YTM5Y2I3MmY0YjJjYWI1
Li4xZGVjNWZiNzgwYzU2NWVjYTBjZDhiMjEyODk2NWMwYzFhYjgwZjc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMzQ0
LDYgKzM0NCw5IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBqdW1wVGFyZ2V0KGludCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gbV9qdW1wVGFyZ2V0c1tpbmRleF07IH0KICAgICB1bnNpZ25lZCBsYXN0
SnVtcFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fanVtcFRhcmdldHMubGFzdCgpOyB9CiAKKyAg
ICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbjsgfQorICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KKwogICAgIGJvb2wgaXNCdWlsdGlu
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lzQnVpbHRpbkZ1bmN0aW9uOyB9CiAKICAgICBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8Q29uc3RydWN0b3JLaW5kPihtX2NvbnN0cnVjdG9yS2luZCk7IH0KQEAgLTUzMyw2ICs1MzYs
NyBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9uZWVkc0Z1bGxTY29wZUNoYWluIDogMTsK
ICAgICB1bnNpZ25lZCBtX3VzZXNFdmFsIDogMTsKKyAgICB1bnNpZ25lZCBtX2lzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbiA6IDE7CiAgICAgdW5zaWduZWQgbV9pc1N0cmljdE1vZGUgOiAxOwogICAg
IHVuc2lnbmVkIG1faXNDb25zdHJ1Y3RvciA6IDE7CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJl
ZFZhcmlhYmxlcyA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDIyMzI1ZjMyODVhOTEzZTE3OTI5
YmM2YWQwM2FiNWZhZDA5MDZhMDIuLjRjN2NlMmQ5NWU1NjIwMDZjOTM2Zjc3MDYwYThlM2FjODQ5
MjljMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNjAzLDYgKzI2MDMsMTEgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd0V4cHJlc3Npb25Ub29EZWVwRXhjZXB0aW9u
KCkKICAgICByZXR1cm4gbmV3VGVtcG9yYXJ5KCk7CiB9CiAKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbikKK3sKKyAgICBtX2NvZGVCbG9jay0+c2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGlz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbik7Cit9CisKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omlz
QXJndW1lbnROdW1iZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBhcmd1bWVudE51bWJl
cikKIHsKICAgICBSZWdpc3RlcklEKiByZWdpc3RlcklEID0gdmFyaWFibGUoaWRlbnQpLmxvY2Fs
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKaW5kZXggMTU1NjJlZTdiMzZkMzM4MTYzNzBmOWIzMmI0OTlmZmVjZGJk
MDNlZi4uMmU1OTAzOWQzYTQ4NGEzNDcyODE0NDBlZWY5YzFiODE5ZjcyNjVkYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuaApAQCAtMjc2LDYgKzI3Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wg
aXNBcmd1bWVudE51bWJlcihjb25zdCBJZGVudGlmaWVyJiwgaW50KTsKIAorICAgICAgICB2b2lk
IHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlv
bik7CisKICAgICAgICAgVmFyaWFibGUgdmFyaWFibGUoY29uc3QgSWRlbnRpZmllciYpOwogICAg
ICAgICAKICAgICAgICAgLy8gSWdub3JlcyB0aGUgcG9zc2liaWxpdHkgb2YgaW50ZXJ2ZW5pbmcg
c2NvcGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwCmluZGV4IDUyOGVlM2I4NTU3NjY3MjZiNDhhMGY4NDU0NDNjMDIwMmMzMDEy
ZGIuLjk5YzBlZDEwNjg5OTBlMGQ4OGVlNTljMTc2ZjBlMDQ5NGU1Y2UyYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAg
LTI4MjEsNiArMjgyMSwyMiBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFJldHVybihyMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICAvLyBJZiB0aGVy
ZSBpcyBhIHJldHVybiBzdGF0bWVudCwgYW5kIGl0IGlzIHRoZSBvbmx5IHN0YXRlbWVudCBpbiB0
aGUgZnVuY3Rpb24sIGNoZWNrIGlmIHRoaXMgaXMgYSBudW1lcmljIGNvbXBhcmUuCisgICAgaWYg
KHN0YXRpY19jYXN0PEJsb2NrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCktPnNpbmdsZVN0YXRlbWVu
dCgpKSB7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiByZXR1cm5WYWx1ZUV4cHJlc3Npb24gPSBy
ZXR1cm5Ob2RlLT52YWx1ZSgpOworICAgICAgICBpZiAocmV0dXJuVmFsdWVFeHByZXNzaW9uICYm
IHJldHVyblZhbHVlRXhwcmVzc2lvbi0+aXNTdWJ0cmFjdCgpKSB7CisgICAgICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbGhzRXhwcmVzc2lvbiA9IHN0YXRpY19jYXN0PFN1Yk5vZGUqPihyZXR1cm5W
YWx1ZUV4cHJlc3Npb24pLT5saHMoKTsKKyAgICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiByaHNF
eHByZXNzaW9uID0gc3RhdGljX2Nhc3Q8U3ViTm9kZSo+KHJldHVyblZhbHVlRXhwcmVzc2lvbikt
PnJocygpOworICAgICAgICAgICAgaWYgKGxoc0V4cHJlc3Npb24tPmlzUmVzb2x2ZU5vZGUoKQor
ICAgICAgICAgICAgICAgICYmIHJoc0V4cHJlc3Npb24tPmlzUmVzb2x2ZU5vZGUoKQorICAgICAg
ICAgICAgICAgICYmIGdlbmVyYXRvci5pc0FyZ3VtZW50TnVtYmVyKHN0YXRpY19jYXN0PFJlc29s
dmVOb2RlKj4obGhzRXhwcmVzc2lvbiktPmlkZW50aWZpZXIoKSwgMCkKKyAgICAgICAgICAgICAg
ICAmJiBnZW5lcmF0b3IuaXNBcmd1bWVudE51bWJlcihzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+
KHJoc0V4cHJlc3Npb24pLT5pZGVudGlmaWVyKCksIDEpKSB7CisgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgZ2VuZXJhdG9yLnNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbih0cnVl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH0KIAogLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmNEZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggMTQzNmYwMjRiYzdl
OTUxMTA0MjQwZjMxN2Q0OTdhZDViMjQxZjY5ZS4uNmFlMmVkN2ZkNTJhZmM3Mzc5ZmJkM2JjMWFk
YTExZmM4NThhMjBkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTQ4MSw2
ICs0ODEsMTcgQEAgdm9pZCBIZWFwOjphZGRSZWZlcmVuY2UoSlNDZWxsKiBjZWxsLCBBcnJheUJ1
ZmZlciogYnVmZmVyKQogICAgIH0KIH0KIAordm9pZCBIZWFwOjpwdXNoVGVtcFNvcnRWZWN0b3Io
VmVjdG9yPFZhbHVlU3RyaW5nUGFpciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+KiB0ZW1wVmVj
dG9yKQoreworICAgIG1fdGVtcFNvcnRpbmdWZWN0b3JzLmFwcGVuZCh0ZW1wVmVjdG9yKTsKK30K
Kwordm9pZCBIZWFwOjpwb3BUZW1wU29ydFZlY3RvcihWZWN0b3I8VmFsdWVTdHJpbmdQYWlyLCAw
LCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4qIHRlbXBWZWN0b3IpCit7CisgICAgQVNTRVJUX1VOVVNF
RCh0ZW1wVmVjdG9yLCB0ZW1wVmVjdG9yID09IG1fdGVtcFNvcnRpbmdWZWN0b3JzLmxhc3QoKSk7
CisgICAgbV90ZW1wU29ydGluZ1ZlY3RvcnMucmVtb3ZlTGFzdCgpOworfQorCiB2b2lkIEhlYXA6
OmhhcnZlc3RXZWFrUmVmZXJlbmNlcygpCiB7CiAgICAgbV9zbG90VmlzaXRvci5oYXJ2ZXN0V2Vh
a1JlZmVyZW5jZXMoKTsKQEAgLTU2MCw2ICs1NzEsNyBAQCB2b2lkIEhlYXA6Om1hcmtSb290cyhk
b3VibGUgZ2NTdGFydFRpbWUsIHZvaWQqIHN0YWNrT3JpZ2luLCB2b2lkKiBzdGFja1RvcCwgTWFj
aAogICAgICAgICB2aXNpdFNtYWxsU3RyaW5ncygpOwogICAgICAgICB2aXNpdENvbnNlcnZhdGl2
ZVJvb3RzKGNvbnNlcnZhdGl2ZVJvb3RzKTsKICAgICAgICAgdmlzaXRQcm90ZWN0ZWRPYmplY3Rz
KGhlYXBSb290VmlzaXRvcik7CisgICAgICAgIHZpc2l0VGVtcFNvcnRWZWN0b3JzKGhlYXBSb290
VmlzaXRvcik7CiAgICAgICAgIHZpc2l0QXJndW1lbnRCdWZmZXJzKGhlYXBSb290VmlzaXRvcik7
CiAgICAgICAgIHZpc2l0RXhjZXB0aW9uKGhlYXBSb290VmlzaXRvcik7CiAgICAgICAgIHZpc2l0
U3Ryb25nSGFuZGxlcyhoZWFwUm9vdFZpc2l0b3IpOwpAQCAtNjk4LDYgKzcxMCwyMyBAQCB2b2lk
IEhlYXA6OnZpc2l0UHJvdGVjdGVkT2JqZWN0cyhIZWFwUm9vdFZpc2l0b3ImIGhlYXBSb290Vmlz
aXRvcikKICAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFuZERyYWluKCk7CiB9CiAKK3ZvaWQgSGVh
cDo6dmlzaXRUZW1wU29ydFZlY3RvcnMoSGVhcFJvb3RWaXNpdG9yJiBoZWFwUm9vdFZpc2l0b3Ip
Cit7CisgICAgR0NQSEFTRShWaXNpdFRlbXBTb3J0VmVjdG9ycyk7CisKKyAgICBmb3IgKGF1dG8q
IHZlY3RvciA6IG1fdGVtcFNvcnRpbmdWZWN0b3JzKSB7CisgICAgICAgIGZvciAoYXV0byYgdmFs
dWVTdHJpbmdQYWlyIDogKnZlY3RvcikgeworICAgICAgICAgICAgaWYgKHZhbHVlU3RyaW5nUGFp
ci5maXJzdCkKKyAgICAgICAgICAgICAgICBoZWFwUm9vdFZpc2l0b3IudmlzaXQoJnZhbHVlU3Ry
aW5nUGFpci5maXJzdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoT3B0aW9uczo6bG9n
R0MoKSA9PSBHQ0xvZ2dpbmc6OlZlcmJvc2UpCisgICAgICAgIGRhdGFMb2coIlRlbXAgU29ydCBW
ZWN0b3JzOlxuIiwgbV9zbG90VmlzaXRvcik7CisKKyAgICBtX3Nsb3RWaXNpdG9yLmRvbmF0ZUFu
ZERyYWluKCk7Cit9CisKIHZvaWQgSGVhcDo6dmlzaXRBcmd1bWVudEJ1ZmZlcnMoSGVhcFJvb3RW
aXNpdG9yJiB2aXNpdG9yKQogewogICAgIEdDUEhBU0UoTWFya2luZ0FyZ3VtZW50QnVmZmVycyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKaW5kZXggZDNlOTY4ODYwNjYxNzM2NGM1MGE3ODUz
ZWMxYzhhYTE4YjE2YTBlNy4uM2UwYzA1MWZmNDNlMDFmNGJkYTA4YzBkNWE5NmIyODRiMTc3YzI5
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaApAQCAtNzUsNiArNzUsNyBAQCBjbGFzcyBX
b3JrbGlzdDsKIAogc3RhdGljIHZvaWQqIGNvbnN0IHpvbWJpZmllZEJpdHMgPSByZWludGVycHJl
dF9jYXN0PHZvaWQqPigweGRlYWRiZWVmKTsKIAordHlwZWRlZiBzdGQ6OnBhaXI8SlNWYWx1ZSwg
V1RGOjpTdHJpbmc+IFZhbHVlU3RyaW5nUGFpcjsKIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8SlND
ZWxsKj4gUHJvdGVjdENvdW50U2V0OwogdHlwZWRlZiBIYXNoQ291bnRlZFNldDxjb25zdCBjaGFy
Kj4gVHlwZUNvdW50U2V0OwogCkBAIC0xODUsNiArMTg2LDkgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0ZDo6dW5pcXVlX3B0cjxUeXBlQ291bnRTZXQ+IG9iamVjdFR5cGVDb3Vu
dHMoKTsKICAgICB2b2lkIHNob3dTdGF0aXN0aWNzKCk7CiAKKyAgICB2b2lkIHB1c2hUZW1wU29y
dFZlY3RvcihWZWN0b3I8VmFsdWVTdHJpbmdQYWlyLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4q
KTsKKyAgICB2b2lkIHBvcFRlbXBTb3J0VmVjdG9yKFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXIsIDAs
IFVuc2FmZVZlY3Rvck92ZXJmbG93PiopOworCiAgICAgSGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1
ZmZlcio+JiBtYXJrTGlzdFNldCgpOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaFByb3RlY3RlZENlbGwoRnVu
Y3RvciYpOwpAQCAtMjk2LDYgKzMwMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2aXNpdENvbXBp
bGVyV29ya2xpc3RXZWFrUmVmZXJlbmNlcygpOwogICAgIHZvaWQgcmVtb3ZlRGVhZENvbXBpbGVy
V29ya2xpc3RFbnRyaWVzKCk7CiAgICAgdm9pZCB2aXNpdFByb3RlY3RlZE9iamVjdHMoSGVhcFJv
b3RWaXNpdG9yJik7CisgICAgdm9pZCB2aXNpdFRlbXBTb3J0VmVjdG9ycyhIZWFwUm9vdFZpc2l0
b3ImKTsKICAgICB2b2lkIHZpc2l0QXJndW1lbnRCdWZmZXJzKEhlYXBSb290VmlzaXRvciYpOwog
ICAgIHZvaWQgdmlzaXRFeGNlcHRpb24oSGVhcFJvb3RWaXNpdG9yJik7CiAgICAgdm9pZCB2aXNp
dFN0cm9uZ0hhbmRsZXMoSGVhcFJvb3RWaXNpdG9yJik7CkBAIC0zNjYsNiArMzcxLDcgQEAgcHJp
dmF0ZToKICAgICBIYXNoU2V0PGNvbnN0IEpTQ2VsbCo+IG1fY29weWluZ1JlbWVtYmVyZWRTZXQ7
CiAKICAgICBQcm90ZWN0Q291bnRTZXQgbV9wcm90ZWN0ZWRWYWx1ZXM7CisgICAgVmVjdG9yPFZl
Y3RvcjxWYWx1ZVN0cmluZ1BhaXIsIDAsIFVuc2FmZVZlY3Rvck92ZXJmbG93Pio+IG1fdGVtcFNv
cnRpbmdWZWN0b3JzOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoU2V0PE1hcmtlZEFyZ3VtZW50
QnVmZmVyKj4+IG1fbWFya0xpc3RTZXQ7CiAKICAgICBNYWNoaW5lVGhyZWFkcyBtX21hY2hpbmVU
aHJlYWRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDRmOTNi
Nzg2M2Q5ZTRmNGMxNDg0ZmY1MzE2NTA3MzhkMWU2NzdkOWEuLjMyZDI1MGNhN2NjNTNmNGJlYTYx
ZjYxYjZkYWJmZTY0YmNiYzY4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKQEAgLTI4OCw2ICsyODgsNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SW5uZXIoKQogICAgICAgICBmZWF0dXJlcyB8PSBNb2RpZmllZEFyZ3VtZW50c0ZlYXR1cmU7CiAg
ICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4gY2xvc2VkVmFyaWFibGVzOwogICAgIGlmICht
X3BhcnNpbmdCdWlsdGluKSB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjYXB0dXJlZFZhcmlh
Ymxlcy5zaXplKCkpOwogICAgICAgICBJZGVudGlmaWVyU2V0IHVzZWRWYXJpYWJsZXM7CiAgICAg
ICAgIHNjb3BlLT5nZXRVc2VkVmFyaWFibGVzKHVzZWRWYXJpYWJsZXMpOwogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIHZhcmlhYmxlIDogdXNlZFZhcmlhYmxlcykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDQwNzc3NDMyMmI5
ZDZlNTgxNjM5MWY1MDc5YjAxZTg2YzlkYWQ4ZTAuLjhlNjE3NTE1ZDkxMjliMWMxNjgzZGU4Mjgy
N2NlZjRmYjE0NThiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheVByb3RvdHlwZS5jcHAKQEAgLTU0LDYgKzU0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBhcnJheVByb3RvRnVuY1B1c2goRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUmV2ZXJzZShFeGVjU3RhdGUqKTsKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTaGlmdChFeGVjU3RhdGUqKTsKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUq
KTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNTb3J0KEV4ZWNT
dGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGlj
ZShFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNVblNoaWZ0KEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJh
eVByb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKik7CkBAIC02OSw2ICs3MCwyMSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRW50cmllcyhFeGVjU3RhdGUqKTsK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc051bWVyaWNDb21wYXJl
RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxs
VHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxEYXRhKQoreworICAgIGlmIChjYWxsVHlwZSAhPSBD
YWxsVHlwZUpTKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkV4ZWN1dGFibGU7CisgICAgSlNT
Y29wZSogc2NvcGUgPSBjYWxsRGF0YS5qcy5zY29wZTsKKworICAgIEpTT2JqZWN0KiBlcnJvciA9
IGV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24oZXhlYywganNDYXN0PEpTRnVuY3Rpb24q
PihmdW5jdGlvbiksIHNjb3BlLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKGVycm9yKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yQ2Fs
bCgpLT5pc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIEFycmF5UHJvdG90eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogY29uc3QgQ2xhc3NJbmZvIEFycmF5UHJvdG90eXBlOjpzX2luZm8gPSB7IkFycmF5Iiwg
JkpTQXJyYXk6OnNfaW5mbywgJmFycmF5UHJvdG90eXBlVGFibGUsIENSRUFURV9NRVRIT0RfVEFC
TEUoQXJyYXlQcm90b3R5cGUpfTsKQEAgLTYzOCw2ICs2NTQsMTU1IEBAIGlubGluZSBKU1ZhbHVl
IGdldE9ySG9sZShKU09iamVjdCogb2JqLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3Bl
cnR5TmFtZSkKICAgICByZXR1cm4gSlNWYWx1ZSgpOwogfQogCitzdGF0aWMgYm9vbCBhdHRlbXB0
RmFzdFNvcnQoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iaiwgSlNWYWx1ZSBmdW5j
dGlvbiwgQ2FsbERhdGEmIGNhbGxEYXRhLCBDYWxsVHlwZSYgY2FsbFR5cGUpCit7CisgICAgaWYg
KHRoaXNPYmotPmNsYXNzSW5mbygpICE9IEpTQXJyYXk6OmluZm8oKQorICAgICAgICB8fCBhc0Fy
cmF5KHRoaXNPYmopLT5oYXNTcGFyc2VNYXAoKQorICAgICAgICB8fCBzaG91bGRVc2VTbG93UHV0
KHRoaXNPYmotPmluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIGlmIChpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSkpCisgICAgICAgIGFzQXJyYXkodGhpc09iaiktPnNvcnROdW1lcmljKGV4ZWMs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEpOworICAgIGVsc2UgaWYgKGNhbGxUeXBlICE9
IENhbGxUeXBlTm9uZSkKKyAgICAgICAgYXNBcnJheSh0aGlzT2JqKS0+c29ydChleGVjLCBmdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBlbHNlCisgICAgICAgIGFzQXJyYXkodGhp
c09iaiktPnNvcnQoZXhlYyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHBl
cmZvcm1TbG93U29ydChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqLCB1bnNpZ25l
ZCBsZW5ndGgsIEpTVmFsdWUgZnVuY3Rpb24sIENhbGxEYXRhJiBjYWxsRGF0YSwgQ2FsbFR5cGUm
IGNhbGxUeXBlKQoreworICAgIC8vICJNaW4iIHNvcnQuIE5vdCB0aGUgZmFzdGVzdCwgYnV0IGRl
ZmluaXRlbHkgbGVzcyBjb2RlIHRoYW4gaGVhcHNvcnQKKyAgICAvLyBvciBxdWlja3NvcnQsIGFu
ZCBtdWNoIGxlc3Mgc3dhcHBpbmcgdGhhbiBidWJibGVzb3J0L2luc2VydGlvbnNvcnQuCisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aCAtIDE7ICsraSkgeworICAgICAgICBKU1Zh
bHVlIGlPYmogPSBnZXRPckhvbGUodGhpc09iaiwgZXhlYywgaSk7CisgICAgICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgdW5z
aWduZWQgdGhlbWluID0gaTsKKyAgICAgICAgSlNWYWx1ZSBtaW5PYmogPSBpT2JqOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGogPSBpICsgMTsgaiA8IGxlbmd0aDsgKytqKSB7CisgICAgICAgICAg
ICBKU1ZhbHVlIGpPYmogPSBnZXRPckhvbGUodGhpc09iaiwgZXhlYywgaik7CisgICAgICAgICAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgZG91YmxlIGNvbXBhcmVSZXN1bHQ7CisgICAgICAgICAgICBpZiAoIWpP
YmopCisgICAgICAgICAgICAgICAgY29tcGFyZVJlc3VsdCA9IDE7CisgICAgICAgICAgICBlbHNl
IGlmICghbWluT2JqKQorICAgICAgICAgICAgICAgIGNvbXBhcmVSZXN1bHQgPSAtMTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGpPYmouaXNVbmRlZmluZWQoKSkKKyAgICAgICAgICAgICAgICBjb21w
YXJlUmVzdWx0ID0gMTsgLy8gZG9uJ3QgY2hlY2sgbWluT2JqIGJlY2F1c2UgdGhlcmUncyBubyBu
ZWVkIHRvIGRpZmZlcmVudGlhdGUgPT0gKDApIGZyb20gPiAoMSkKKyAgICAgICAgICAgIGVsc2Ug
aWYgKG1pbk9iai5pc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgIGNvbXBhcmVSZXN1bHQg
PSAtMTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgewor
ICAgICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGw7CisgICAgICAgICAgICAgICAg
bC5hcHBlbmQoak9iaik7CisgICAgICAgICAgICAgICAgbC5hcHBlbmQobWluT2JqKTsKKyAgICAg
ICAgICAgICAgICBjb21wYXJlUmVzdWx0ID0gY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBsKS50b051bWJlcihleGVjKTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIGNvbXBhcmVSZXN1bHQgPSBjb2RlUG9pbnRDb21wYXJl
TGVzc1RoYW4oak9iai50b1dURlN0cmluZ0lubGluZShleGVjKSwgbWluT2JqLnRvV1RGU3RyaW5n
SW5saW5lKGV4ZWMpKSA/IC0xIDogMTsKKworICAgICAgICAgICAgaWYgKGNvbXBhcmVSZXN1bHQg
PCAwKSB7CisgICAgICAgICAgICAgICAgdGhlbWluID0gajsKKyAgICAgICAgICAgICAgICBtaW5P
YmogPSBqT2JqOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIFN3YXAgdGhl
bWluIGFuZCBpCisgICAgICAgIGlmICh0aGVtaW4gPiBpKSB7CisgICAgICAgICAgICBpZiAobWlu
T2JqKSB7CisgICAgICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSkt
PnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaSwgbWluT2JqLCB0cnVlKTsKKyAgICAgICAgICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4
ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgaSkpIHsKKyAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpT2JqKSB7CisgICAgICAgICAgICAgICAgdGhp
c09iai0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywg
dGhlbWluLCBpT2JqLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoIXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0
eUJ5SW5kZXgodGhpc09iaiwgZXhlYywgdGhlbWluKSkgeworICAgICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNPYmpl
Y3QqIHRoaXNPYmogPSBleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgU3RyaWN0TW9kZSku
dG9PYmplY3QoZXhlYyk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gZ2V0TGVuZ3RoKGV4ZWMsIHRo
aXNPYmopOworICAgIGlmICghbGVuZ3RoIHx8IGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmopOworCisgICAgSlNWYWx1ZSBmdW5jdGlv
biA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKworICAgIGlm
IChhdHRlbXB0RmFzdFNvcnQoZXhlYywgdGhpc09iaiwgZnVuY3Rpb24sIGNhbGxEYXRhLCBjYWxs
VHlwZSkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhpc09iaik7CisgICAgCisg
ICAgLy8gQXNzdW1lIHRoYXQgZm9yIHNtYWxsLWlzaCBhcnJheXMsIGRvaW5nIHRoZSBzbG93IHNv
cnQgZGlyZWN0bHkgaXMgYmV0dGVyLgorICAgIGlmIChsZW5ndGggPCAxMDAwKQorICAgICAgICBy
ZXR1cm4gcGVyZm9ybVNsb3dTb3J0KGV4ZWMsIHRoaXNPYmosIGxlbmd0aCwgZnVuY3Rpb24sIGNh
bGxEYXRhLCBjYWxsVHlwZSkgPyBKU1ZhbHVlOjplbmNvZGUodGhpc09iaikgOiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IEpTR2xvYmFsT2JqZWN0OjpjcmVhdGUoCisgICAgICAgIGV4ZWMtPnZtKCksIEpTR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+dm0oKSwganNOdWxsKCkpKTsKKyAgICBK
U0FycmF5KiBmbGF0QXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBudWxscHRyKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgCisgICAgUHJv
cGVydHlOYW1lQXJyYXkgbmFtZUFycmF5KGV4ZWMpOworICAgIHRoaXNPYmotPm1ldGhvZFRhYmxl
KGV4ZWMtPnZtKCkpLT5nZXRQcm9wZXJ0eU5hbWVzKHRoaXNPYmosIGV4ZWMsIG5hbWVBcnJheSwg
RW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBp
ZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CisKKyAgICBWZWN0b3I8dWludDMyX3QsIDAsIFVuc2FmZVZlY3Rvck92
ZXJmbG93PiBrZXlzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmFtZUFycmF5LnNpemUo
KTsgKytpKSB7CisgICAgICAgIFByb3BlcnR5TmFtZSBuYW1lID0gbmFtZUFycmF5W2ldOworICAg
ICAgICBPcHRpb25hbDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgobmFtZSk7
CisgICAgICAgIGlmICghb3B0aW9uYWxJbmRleCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIHVpbnQzMl90IGluZGV4ID0gb3B0aW9uYWxJbmRleC52YWx1ZSgpOworICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gZ2V0T3JIb2xlKHRoaXNPYmosIGV4ZWMsIGluZGV4KTsKKyAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICBrZXlzLmFwcGVuZChpbmRleCk7CisgICAgICAgIGZsYXRBcnJheS0+
cHVzaChleGVjLCB2YWx1ZSk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQor
ICAgIAorICAgIGlmICghYXR0ZW1wdEZhc3RTb3J0KGV4ZWMsIGZsYXRBcnJheSwgZnVuY3Rpb24s
IGNhbGxEYXRhLCBjYWxsVHlwZSkKKyAgICAgICAgJiYgIXBlcmZvcm1TbG93U29ydChleGVjLCBm
bGF0QXJyYXksIGZsYXRBcnJheS0+bGVuZ3RoKCksIGZ1bmN0aW9uLCBjYWxsRGF0YSwgY2FsbFR5
cGUpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga2V5cy5zaXplKCk7ICsraSkgeworICAgICAg
ICBzaXplX3QgaW5kZXggPSBrZXlzW2ldOworICAgICAgICBpZiAoaW5kZXggPCBmbGF0QXJyYXkt
Pmxlbmd0aCgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICBpZiAo
IXRoaXNPYmotPm1ldGhvZFRhYmxlKGV4ZWMtPnZtKCkpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
dGhpc09iaiwgZXhlYywgaW5kZXgpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBmb3IgKHNpemVfdCBpID0gZmxhdEFycmF5LT5sZW5ndGgoKTsgaS0tOykg
eworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gZ2V0T3JIb2xlKGZsYXRBcnJheSwgZXhlYywgaSk7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHZhbHVlKTsKKyAgICAgICAgdGhpc09iai0+bWV0aG9k
VGFibGUoZXhlYy0+dm0oKSktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgaSwgdmFsdWUsIHRy
dWUpOworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKyAgICAKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRoaXNPYmopOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5UHJvdG9GdW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyAx
NS40LjQuMTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCmluZGV4IDY4YWFlM2E3MmE5NDY3NmE4YjEwODFmYjZlM2NlOWExYWRkYTFjYmQu
LmQxNmMzZjYzYjM1OGM2ZGE3MzkxMDNkMDk1NDkzYzJkMzA0NmY1ZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjY5LDEy
ICsyNjksOSBAQAogICAgIG1hY3JvKG9iamVjdEdldE93blByb3BlcnR5U3ltYm9scykgXAogICAg
IG1hY3JvKE51bWJlcikgXAogICAgIG1hY3JvKEFycmF5KSBcCi0gICAgbWFjcm8oU3RyaW5nKSBc
CiAgICAgbWFjcm8oYWJzKSBcCiAgICAgbWFjcm8oZmxvb3IpIFwKICAgICBtYWNybyhpc0Zpbml0
ZSkgXAotICAgIG1hY3JvKGdldFByb3RvdHlwZU9mKSBcCi0gICAgbWFjcm8oZ2V0T3duUHJvcGVy
dHlOYW1lcykgXAogICAgIG1hY3JvKFR5cGVFcnJvcikgXAogICAgIG1hY3JvKHVuZGVmaW5lZCkg
XAogICAgIG1hY3JvKEJ1aWx0aW5Mb2cpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAKaW5kZXggZjBkZjAyOWFjNGFmMjAzNDdiNTNmZjlkZGVmZmUwZDc0Y2QyN2Qx
NC4uNzY1MTRkNDgwY2U3ZDAyZmQzY2VlMDMxMTgxNGUxNjJhM2M3OTUyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNs
dWRlICJSZWplY3QuaCIKKyNpbmNsdWRlIDx3dGYvQVZMVHJlZS5oPgogI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC05OTMsNiArOTk0LDUyMSBA
QCBib29sIEpTQXJyYXk6OnVuc2hpZnRDb3VudFdpdGhBbnlJbmRleGluZ1R5cGUoRXhlY1N0YXRl
KiBleGVjLCB1bnNpZ25lZCBzdGFydEluZAogICAgIH0KIH0KIAorc3RhdGljIGludCBjb21wYXJl
TnVtYmVyc0ZvclFTb3J0V2l0aEludDMyKGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCit7
CisgICAgaW50MzJfdCBpYSA9IHN0YXRpY19jYXN0PGNvbnN0IEpTVmFsdWUqPihhKS0+YXNJbnQz
MigpOworICAgIGludDMyX3QgaWIgPSBzdGF0aWNfY2FzdDxjb25zdCBKU1ZhbHVlKj4oYiktPmFz
SW50MzIoKTsKKyAgICByZXR1cm4gaWEgLSBpYjsKK30KKworc3RhdGljIGludCBjb21wYXJlTnVt
YmVyc0ZvclFTb3J0V2l0aERvdWJsZShjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQorewor
ICAgIGRvdWJsZSBkYSA9ICpzdGF0aWNfY2FzdDxjb25zdCBkb3VibGUqPihhKTsKKyAgICBkb3Vi
bGUgZGIgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgZG91YmxlKj4oYik7CisgICAgcmV0dXJuIChkYSA+
IGRiKSAtIChkYSA8IGRiKTsKK30KKworc3RhdGljIGludCBjb21wYXJlTnVtYmVyc0ZvclFTb3J0
KGNvbnN0IHZvaWQqIGEsIGNvbnN0IHZvaWQqIGIpCit7CisgICAgZG91YmxlIGRhID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgSlNWYWx1ZSo+KGEpLT5hc051bWJlcigpOworICAgIGRvdWJsZSBkYiA9IHN0
YXRpY19jYXN0PGNvbnN0IEpTVmFsdWUqPihiKS0+YXNOdW1iZXIoKTsKKyAgICByZXR1cm4gKGRh
ID4gZGIpIC0gKGRhIDwgZGIpOworfQorCitzdGF0aWMgaW50IGNvbXBhcmVCeVN0cmluZ1BhaXJG
b3JRU29ydChjb25zdCB2b2lkKiBhLCBjb25zdCB2b2lkKiBiKQoreworICAgIGNvbnN0IFZhbHVl
U3RyaW5nUGFpciogdmEgPSBzdGF0aWNfY2FzdDxjb25zdCBWYWx1ZVN0cmluZ1BhaXIqPihhKTsK
KyAgICBjb25zdCBWYWx1ZVN0cmluZ1BhaXIqIHZiID0gc3RhdGljX2Nhc3Q8Y29uc3QgVmFsdWVT
dHJpbmdQYWlyKj4oYik7CisgICAgcmV0dXJuIGNvZGVQb2ludENvbXBhcmUodmEtPnNlY29uZCwg
dmItPnNlY29uZCk7Cit9CisKK3RlbXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5nVHlw
ZT4KK3ZvaWQgSlNBcnJheTo6c29ydE51bWVyaWNWZWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBj
YWxsRGF0YSkKK3sKKyAgICBBU1NFUlQoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50
MzIgfHwgYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91YmxlIHx8IGFycmF5SW5kZXhp
bmdUeXBlID09IEFycmF5V2l0aENvbnRpZ3VvdXMgfHwgYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJy
YXlXaXRoQXJyYXlTdG9yYWdlKTsKKyAgICAKKyAgICB1bnNpZ25lZCBsZW5ndGhOb3RJbmNsdWRp
bmdVbmRlZmluZWQ7CisgICAgdW5zaWduZWQgbmV3UmVsZXZhbnRMZW5ndGg7CisgICAgY29tcGFj
dEZvclNvcnRpbmc8YXJyYXlJbmRleGluZ1R5cGU+KAorICAgICAgICBsZW5ndGhOb3RJbmNsdWRp
bmdVbmRlZmluZWQsCisgICAgICAgIG5ld1JlbGV2YW50TGVuZ3RoKTsKKyAgICAKKyAgICBDb250
aWd1b3VzSlNWYWx1ZXMgZGF0YSA9IGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKTsK
KyAgICAKKyAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoQXJyYXlTdG9yYWdl
ICYmIGFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcC5nZXQoKSkgeworICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZXhlYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
aWYgKCFsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBib29sIGFsbFZhbHVlc0FyZU51bWJlcnMgPSB0cnVlOworICAgIHN3aXRjaCAoYXJyYXlJ
bmRleGluZ1R5cGUpIHsKKyAgICBjYXNlIEFycmF5V2l0aEludDMyOgorICAgIGNhc2UgQXJyYXlX
aXRoRG91YmxlOgorICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdSZWxldmFudExlbmd0aDsgKytpKSB7CisgICAg
ICAgICAgICBpZiAoIWRhdGFbaV0uaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGFsbFZh
bHVlc0FyZU51bWJlcnMgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgaWYgKCFh
bGxWYWx1ZXNBcmVOdW1iZXJzKQorICAgICAgICByZXR1cm4gc29ydChleGVjLCBjb21wYXJlRnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisgICAgCisgICAgLy8gRm9yIG51bWVyaWMgY29t
cGFyaXNvbiwgd2hpY2ggaXMgZmFzdCwgcXNvcnQgaXMgZmFzdGVyIHRoYW4gbWVyZ2Vzb3J0LiBX
ZQorICAgIC8vIGFsc28gZG9uJ3QgcmVxdWlyZSBtZXJnZXNvcnQncyBzdGFiaWxpdHksIHNpbmNl
IHRoZXJlJ3Mgbm8gdXNlciB2aXNpYmxlCisgICAgLy8gc2lkZS1lZmZlY3QgZnJvbSBzd2FwcGlu
ZyB0aGUgb3JkZXIgb2YgZXF1YWwgcHJpbWl0aXZlIHZhbHVlcy4KKyAgICBpbnQgKCpjb21wYXJl
KShjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCopOworICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5
cGUpIHsKKyAgICBjYXNlIEFycmF5V2l0aEludDMyOgorICAgICAgICBjb21wYXJlID0gY29tcGFy
ZU51bWJlcnNGb3JRU29ydFdpdGhJbnQzMjsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIAorICAg
IGNhc2UgQXJyYXlXaXRoRG91YmxlOgorICAgICAgICBjb21wYXJlID0gY29tcGFyZU51bWJlcnNG
b3JRU29ydFdpdGhEb3VibGU7CisgICAgICAgIEFTU0VSVChzaXplb2YoV3JpdGVCYXJyaWVyPFVu
a25vd24+KSA9PSBzaXplb2YoZG91YmxlKSk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAg
ICBkZWZhdWx0OgorICAgICAgICBjb21wYXJlID0gY29tcGFyZU51bWJlcnNGb3JRU29ydDsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIEFTU0VSVChkYXRhLmxlbmd0aCgpID49IG5ld1JlbGV2
YW50TGVuZ3RoKTsKKyAgICBxc29ydChkYXRhLmRhdGEoKSwgbmV3UmVsZXZhbnRMZW5ndGgsIHNp
emVvZihXcml0ZUJhcnJpZXI8VW5rbm93bj4pLCBjb21wYXJlKTsKKyAgICByZXR1cm47Cit9CisK
K3ZvaWQgSlNBcnJheTo6c29ydE51bWVyaWMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGNvbXBh
cmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJiBjYWxsRGF0YSkK
K3sKKyAgICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOworCisgICAgc3dpdGNoIChp
bmRleGluZ1R5cGUoKSkgeworICAgIGNhc2UgQXJyYXlDbGFzczoKKyAgICBjYXNlIEFycmF5V2l0
aFVuZGVjaWRlZDoKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBjYXNlIEFycmF5V2l0
aEludDMyOgorICAgICAgICBzb3J0TnVtZXJpY1ZlY3RvcjxBcnJheVdpdGhJbnQzMj4oZXhlYywg
Y29tcGFyZUZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEpOworICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgorICAgICAgICBzb3J0TnVtZXJpY1Zl
Y3RvcjxBcnJheVdpdGhEb3VibGU+KGV4ZWMsIGNvbXBhcmVGdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBjYXNlIEFycmF5V2l0aENv
bnRpZ3VvdXM6CisgICAgICAgIHNvcnROdW1lcmljVmVjdG9yPEFycmF5V2l0aENvbnRpZ3VvdXM+
KGV4ZWMsIGNvbXBhcmVGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICAgICAgcmV0
dXJuOworCisgICAgY2FzZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6CisgICAgICAgIHNvcnROdW1l
cmljVmVjdG9yPEFycmF5V2l0aEFycmF5U3RvcmFnZT4oZXhlYywgY29tcGFyZUZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEpOworICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIGRlZmF1
bHQ6CisgICAgICAgIGRhdGFMb2coIkluZGV4aW5nIHR5cGU6ICIsIGluZGV4aW5nVHlwZSgpLCAi
XG4iKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KK30KKwordGVtcGxhdGUgPEluZGV4aW5nVHlwZT4gc3RydWN0IENvbnRpZ3Vv
dXNUeXBlQWNjZXNzb3IgeworICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IFR5cGU7
CisgICAgc3RhdGljIEpTVmFsdWUgZ2V0QXNWYWx1ZShDb250aWd1b3VzRGF0YTxUeXBlPiBkYXRh
LCBzaXplX3QgaSkgeyByZXR1cm4gZGF0YVtpXS5nZXQoKTsgfQorICAgIHN0YXRpYyB2b2lkIHNl
dFdpdGhWYWx1ZShWTSYgdm0sIEpTQXJyYXkqIHRoaXNWYWx1ZSwgQ29udGlndW91c0RhdGE8VHlw
ZT4gZGF0YSwgc2l6ZV90IGksIEpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBkYXRhW2ld
LnNldCh2bSwgdGhpc1ZhbHVlLCB2YWx1ZSk7CisgICAgfQorICAgIHN0YXRpYyB2b2lkIHJlcGxh
Y2VEYXRhUmVmZXJlbmNlKENvbnRpZ3VvdXNEYXRhPFR5cGU+KiBvdXREYXRhLCBDb250aWd1b3Vz
SlNWYWx1ZXMgaW5EYXRhKQorICAgIHsKKyAgICAgICAgKm91dERhdGEgPSBpbkRhdGE7CisgICAg
fQorfTsKKwordGVtcGxhdGUgPD4gc3RydWN0IENvbnRpZ3VvdXNUeXBlQWNjZXNzb3I8QXJyYXlX
aXRoRG91YmxlPiB7CisgICAgdHlwZWRlZiBkb3VibGUgVHlwZTsKKyAgICBzdGF0aWMgSlNWYWx1
ZSBnZXRBc1ZhbHVlKENvbnRpZ3VvdXNEYXRhPFR5cGU+IGRhdGEsIHNpemVfdCBpKSB7IEFTU0VS
VChkYXRhW2ldID09IGRhdGFbaV0pOyByZXR1cm4gSlNWYWx1ZShKU1ZhbHVlOjpFbmNvZGVBc0Rv
dWJsZSwgZGF0YVtpXSk7IH0KKyAgICBzdGF0aWMgdm9pZCBzZXRXaXRoVmFsdWUoVk0mLCBKU0Fy
cmF5KiwgQ29udGlndW91c0RhdGE8VHlwZT4gZGF0YSwgc2l6ZV90IGksIEpTVmFsdWUgdmFsdWUp
CisgICAgeworICAgICAgICBkYXRhW2ldID0gdmFsdWUuYXNOdW1iZXIoKTsKKyAgICB9CisgICAg
c3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCByZXBsYWNlRGF0YVJlZmVyZW5jZShD
b250aWd1b3VzRGF0YTxUeXBlPiosIENvbnRpZ3VvdXNKU1ZhbHVlcykKKyAgICB7CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSgwLCAiSW5jb25zaXN0ZW50IGluZGV4aW5nIHR5
cGVzIGR1cmluZyBjb21wYWN0IGFycmF5IHNvcnQuIik7CisgICAgfQorfTsKKworCit0ZW1wbGF0
ZTxJbmRleGluZ1R5cGUgYXJyYXlJbmRleGluZ1R5cGUsIHR5cGVuYW1lIFN0b3JhZ2VUeXBlPgor
dm9pZCBKU0FycmF5Ojpzb3J0Q29tcGFjdGVkVmVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgQ29udGln
dW91c0RhdGE8U3RvcmFnZVR5cGU+IGRhdGEsIHVuc2lnbmVkIHJlbGV2YW50TGVuZ3RoKQorewor
ICAgIGlmICghcmVsZXZhbnRMZW5ndGgpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworCisgICAgLy8gQ29udmVydGluZyBKYXZhU2NyaXB0IHZhbHVlcyB0
byBzdHJpbmdzIGNhbiBiZSBleHBlbnNpdmUsIHNvIHdlIGRvIGl0IG9uY2UgdXAgZnJvbnQgYW5k
IHNvcnQgYmFzZWQgb24gdGhhdC4KKyAgICAvLyBUaGlzIGlzIGEgY29uc2lkZXJhYmxlIGltcHJv
dmVtZW50IG92ZXIgZG9pbmcgaXQgdHdpY2UgcGVyIGNvbXBhcmlzb24sIHRob3VnaCBpdCByZXF1
aXJlcyBhIGxhcmdlIHRlbXBvcmFyeQorICAgIC8vIGJ1ZmZlci4gQmVzaWRlcywgdGhpcyBwcm90
ZWN0cyB1cyBmcm9tIGNyYXNoaW5nIGlmIHNvbWUgb2JqZWN0cyBoYXZlIGN1c3RvbSB0b1N0cmlu
ZyBtZXRob2RzIHRoYXQgcmV0dXJuCisgICAgLy8gcmFuZG9tIG9yIG90aGVyd2lzZSBjaGFuZ2lu
ZyByZXN1bHRzLCBlZmZlY3RpdmVseSBtYWtpbmcgY29tcGFyZSBmdW5jdGlvbiBpbmNvbnNpc3Rl
bnQuCisgICAgICAgIAorICAgIFZlY3RvcjxWYWx1ZVN0cmluZ1BhaXIsIDAsIFVuc2FmZVZlY3Rv
ck92ZXJmbG93PiB2YWx1ZXMocmVsZXZhbnRMZW5ndGgpOworICAgIGlmICghdmFsdWVzLmJlZ2lu
KCkpIHsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgICAgICAKKyAgICBIZWFwOjpoZWFwKHRoaXMpLT5wdXNoVGVtcFNvcnRW
ZWN0b3IoJnZhbHVlcyk7CisgICAgICAgIAorICAgIGJvb2wgaXNTb3J0aW5nUHJpbWl0aXZlVmFs
dWVzID0gdHJ1ZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVsZXZhbnRMZW5ndGg7
IGkrKykgeworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gQ29udGlndW91c1R5cGVBY2Nlc3Nvcjxh
cnJheUluZGV4aW5nVHlwZT46OmdldEFzVmFsdWUoZGF0YSwgaSk7CisgICAgICAgIEFTU0VSVChh
cnJheUluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQzMiB8fCB2YWx1ZS5pc0ludDMyKCkpOwor
ICAgICAgICBBU1NFUlQoIXZhbHVlLmlzVW5kZWZpbmVkKCkpOworICAgICAgICB2YWx1ZXNbaV0u
Zmlyc3QgPSB2YWx1ZTsKKyAgICAgICAgaWYgKGFycmF5SW5kZXhpbmdUeXBlICE9IEFycmF5V2l0
aERvdWJsZSAmJiBhcnJheUluZGV4aW5nVHlwZSAhPSBBcnJheVdpdGhJbnQzMikKKyAgICAgICAg
ICAgIGlzU29ydGluZ1ByaW1pdGl2ZVZhbHVlcyA9IGlzU29ydGluZ1ByaW1pdGl2ZVZhbHVlcyAm
JiB2YWx1ZS5pc1ByaW1pdGl2ZSgpOworICAgIH0KKyAgICAgICAgCisgICAgLy8gRklYTUU6IFRo
ZSBmb2xsb3dpbmcgbG9vcCBjb250aW51ZXMgdG8gY2FsbCB0b1N0cmluZyBvbiBzdWJzZXF1ZW50
IHZhbHVlcyBldmVuIGFmdGVyCisgICAgLy8gYSB0b1N0cmluZyBjYWxsIHJhaXNlcyBhbiBleGNl
cHRpb24uCisgICAgICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVsZXZhbnRMZW5n
dGg7IGkrKykKKyAgICAgICAgdmFsdWVzW2ldLnNlY29uZCA9IHZhbHVlc1tpXS5maXJzdC50b1dU
RlN0cmluZ0lubGluZShleGVjKTsKKyAgICAgICAgCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKSB7CisgICAgICAgIEhlYXA6OmhlYXAodGhpcyktPnBvcFRlbXBTb3J0VmVjdG9yKCZ2YWx1
ZXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICAvLyBGSVhNRTogU2lu
Y2Ugd2Ugc29ydCBieSBzdHJpbmcgdmFsdWUsIGEgZmFzdCBhbGdvcml0aG0gbWlnaHQgYmUgdG8g
dXNlIGEgcmFkaXggc29ydC4gVGhhdCB3b3VsZCBiZSBPKE4pIHJhdGhlcgorICAgIC8vIHRoYW4g
TyhOIGxvZyBOKS4KKyAgICAgICAgCisjaWYgSEFWRShNRVJHRVNPUlQpCisgICAgaWYgKGlzU29y
dGluZ1ByaW1pdGl2ZVZhbHVlcykKKyAgICAgICAgcXNvcnQodmFsdWVzLmJlZ2luKCksIHZhbHVl
cy5zaXplKCksIHNpemVvZihWYWx1ZVN0cmluZ1BhaXIpLCBjb21wYXJlQnlTdHJpbmdQYWlyRm9y
UVNvcnQpOworICAgIGVsc2UKKyAgICAgICAgbWVyZ2Vzb3J0KHZhbHVlcy5iZWdpbigpLCB2YWx1
ZXMuc2l6ZSgpLCBzaXplb2YoVmFsdWVTdHJpbmdQYWlyKSwgY29tcGFyZUJ5U3RyaW5nUGFpckZv
clFTb3J0KTsKKyNlbHNlCisgICAgLy8gRklYTUU6IFRoZSBxc29ydCBsaWJyYXJ5IGZ1bmN0aW9u
IGlzIGxpa2VseSB0byBub3QgYmUgYSBzdGFibGUgc29ydC4KKyAgICAvLyBFQ01BU2NyaXB0LTI2
MiBkb2VzIG5vdCBzcGVjaWZ5IGEgc3RhYmxlIHNvcnQsIGJ1dCBpbiBwcmFjdGljZSwgYnJvd3Nl
cnMgcGVyZm9ybSBhIHN0YWJsZSBzb3J0LgorICAgIHFzb3J0KHZhbHVlcy5iZWdpbigpLCB2YWx1
ZXMuc2l6ZSgpLCBzaXplb2YoVmFsdWVTdHJpbmdQYWlyKSwgY29tcGFyZUJ5U3RyaW5nUGFpckZv
clFTb3J0KTsKKyNlbmRpZgorICAgIAorICAgIC8vIElmIHRoZSB0b1N0cmluZyBmdW5jdGlvbiBj
aGFuZ2VkIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IG9yIHZlY3RvciBzdG9yYWdlLAorICAgIC8v
IGluY3JlYXNlIHRoZSBsZW5ndGggdG8gaGFuZGxlIHRoZSBvcmlnbmFsIG51bWJlciBvZiBhY3R1
YWwgdmFsdWVzLgorICAgIHN3aXRjaCAoYXJyYXlJbmRleGluZ1R5cGUpIHsKKyAgICBjYXNlIEFy
cmF5V2l0aEludDMyOgorICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgorICAgIGNhc2UgQXJyYXlX
aXRoQ29udGlndW91czoKKyAgICAgICAgZW5zdXJlTGVuZ3RoKHZtLCByZWxldmFudExlbmd0aCk7
CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFn
ZToKKyAgICAgICAgaWYgKGFycmF5U3RvcmFnZSgpLT52ZWN0b3JMZW5ndGgoKSA8IHJlbGV2YW50
TGVuZ3RoKSB7CisgICAgICAgICAgICBpbmNyZWFzZVZlY3Rvckxlbmd0aChleGVjLT52bSgpLCBy
ZWxldmFudExlbmd0aCk7CisgICAgICAgICAgICBDb250aWd1b3VzVHlwZUFjY2Vzc29yPGFycmF5
SW5kZXhpbmdUeXBlPjo6cmVwbGFjZURhdGFSZWZlcmVuY2UoJmRhdGEsIGFycmF5U3RvcmFnZSgp
LT52ZWN0b3IoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFycmF5U3RvcmFnZSgpLT5sZW5n
dGgoKSA8IHJlbGV2YW50TGVuZ3RoKQorICAgICAgICAgICAgYXJyYXlTdG9yYWdlKCktPnNldExl
bmd0aChyZWxldmFudExlbmd0aCk7CisgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICBkZWZh
dWx0OgorICAgICAgICBDUkFTSCgpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVsZXZhbnRMZW5ndGg7IGkrKykKKyAgICAgICAgQ29udGlndW91c1R5cGVBY2Nlc3Nvcjxh
cnJheUluZGV4aW5nVHlwZT46OnNldFdpdGhWYWx1ZSh2bSwgdGhpcywgZGF0YSwgaSwgdmFsdWVz
W2ldLmZpcnN0KTsKKyAgICAKKyAgICBIZWFwOjpoZWFwKHRoaXMpLT5wb3BUZW1wU29ydFZlY3Rv
cigmdmFsdWVzKTsKK30KKwordm9pZCBKU0FycmF5Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkpOworICAgIAorICAgIHN3aXRjaCAo
aW5kZXhpbmdUeXBlKCkpIHsKKyAgICBjYXNlIEFycmF5Q2xhc3M6CisgICAgY2FzZSBBcnJheVdp
dGhVbmRlY2lkZWQ6CisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgY2FzZSBBcnJheVdp
dGhJbnQzMjogeworICAgICAgICB1bnNpZ25lZCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7
CisgICAgICAgIHVuc2lnbmVkIG5ld1JlbGV2YW50TGVuZ3RoOworICAgICAgICBjb21wYWN0Rm9y
U29ydGluZzxBcnJheVdpdGhJbnQzMj4oCisgICAgICAgICAgICBsZW5ndGhOb3RJbmNsdWRpbmdV
bmRlZmluZWQsIG5ld1JlbGV2YW50TGVuZ3RoKTsKKyAgICAgICAgCisgICAgICAgIHNvcnRDb21w
YWN0ZWRWZWN0b3I8QXJyYXlXaXRoSW50MzI+KAorICAgICAgICAgICAgZXhlYywgbV9idXR0ZXJm
bHktPmNvbnRpZ3VvdXNJbnQzMigpLCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIEFycmF5V2l0aERvdWJsZTog
eworICAgICAgICB1bnNpZ25lZCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7CisgICAgICAg
IHVuc2lnbmVkIG5ld1JlbGV2YW50TGVuZ3RoOworICAgICAgICBjb21wYWN0Rm9yU29ydGluZzxB
cnJheVdpdGhEb3VibGU+KAorICAgICAgICAgICAgbGVuZ3RoTm90SW5jbHVkaW5nVW5kZWZpbmVk
LCBuZXdSZWxldmFudExlbmd0aCk7CisgICAgICAgIAorICAgICAgICBzb3J0Q29tcGFjdGVkVmVj
dG9yPEFycmF5V2l0aERvdWJsZT4oCisgICAgICAgICAgICBleGVjLCBtX2J1dHRlcmZseS0+Y29u
dGlndW91c0RvdWJsZSgpLCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIEFycmF5V2l0aENvbnRpZ3VvdXM6IHsK
KyAgICAgICAgdW5zaWduZWQgbGVuZ3RoTm90SW5jbHVkaW5nVW5kZWZpbmVkOworICAgICAgICB1
bnNpZ25lZCBuZXdSZWxldmFudExlbmd0aDsKKyAgICAgICAgY29tcGFjdEZvclNvcnRpbmc8QXJy
YXlXaXRoQ29udGlndW91cz4oCisgICAgICAgICAgICBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmlu
ZWQsIG5ld1JlbGV2YW50TGVuZ3RoKTsKKyAgICAgICAgCisgICAgICAgIHNvcnRDb21wYWN0ZWRW
ZWN0b3I8QXJyYXlXaXRoQ29udGlndW91cz4oCisgICAgICAgICAgICBleGVjLCBtX2J1dHRlcmZs
eS0+Y29udGlndW91cygpLCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgICAgICAKKyAgICBjYXNlIEFycmF5V2l0aEFycmF5U3RvcmFnZTog
eworICAgICAgICB1bnNpZ25lZCBsZW5ndGhOb3RJbmNsdWRpbmdVbmRlZmluZWQ7CisgICAgICAg
IHVuc2lnbmVkIG5ld1JlbGV2YW50TGVuZ3RoOworICAgICAgICBjb21wYWN0Rm9yU29ydGluZzxB
cnJheVdpdGhBcnJheVN0b3JhZ2U+KAorICAgICAgICAgICAgbGVuZ3RoTm90SW5jbHVkaW5nVW5k
ZWZpbmVkLCBuZXdSZWxldmFudExlbmd0aCk7CisgICAgICAgIEFycmF5U3RvcmFnZSogc3RvcmFn
ZSA9IG1fYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKKyAgICAgICAgQVNTRVJUKCFzdG9yYWdl
LT5tX3NwYXJzZU1hcCk7CisgICAgICAgIAorICAgICAgICBzb3J0Q29tcGFjdGVkVmVjdG9yPEFy
cmF5V2l0aEFycmF5U3RvcmFnZT4oZXhlYywgc3RvcmFnZS0+dmVjdG9yKCksIGxlbmd0aE5vdElu
Y2x1ZGluZ1VuZGVmaW5lZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgICAgIAorICAg
IGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
fQorCitzdHJ1Y3QgQVZMVHJlZU5vZGVGb3JBcnJheUNvbXBhcmUgeworICAgIEpTVmFsdWUgdmFs
dWU7CisKKyAgICAvLyBDaGlsZCBwb2ludGVycy4gIFRoZSBoaWdoIGJpdCBvZiBndCBpcyByb2Ji
ZWQgYW5kIHVzZWQgYXMgdGhlCisgICAgLy8gYmFsYW5jZSBmYWN0b3Igc2lnbi4gIFRoZSBoaWdo
IGJpdCBvZiBsdCBpcyByb2JiZWQgYW5kIHVzZWQgYXMKKyAgICAvLyB0aGUgbWFnbml0dWRlIG9m
IHRoZSBiYWxhbmNlIGZhY3Rvci4KKyAgICBpbnQzMl90IGd0OworICAgIGludDMyX3QgbHQ7Cit9
OworCitzdHJ1Y3QgQVZMVHJlZUFic3RyYWN0b3JGb3JBcnJheUNvbXBhcmUgeworICAgIHR5cGVk
ZWYgaW50MzJfdCBoYW5kbGU7IC8vIEhhbmRsZSBpcyBhbiBpbmRleCBpbnRvIG1fbm9kZXMgdmVj
dG9yLgorICAgIHR5cGVkZWYgSlNWYWx1ZSBrZXk7CisgICAgdHlwZWRlZiBpbnQzMl90IHNpemU7
CisKKyAgICBWZWN0b3I8QVZMVHJlZU5vZGVGb3JBcnJheUNvbXBhcmUsIDAsIFVuc2FmZVZlY3Rv
ck92ZXJmbG93PiBtX25vZGVzOworICAgIEV4ZWNTdGF0ZSogbV9leGVjOworICAgIEpTVmFsdWUg
bV9jb21wYXJlRnVuY3Rpb247CisgICAgQ2FsbFR5cGUgbV9jb21wYXJlQ2FsbFR5cGU7CisgICAg
Y29uc3QgQ2FsbERhdGEqIG1fY29tcGFyZUNhbGxEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
YWNoZWRDYWxsPiBtX2NhY2hlZENhbGw7CisKKyAgICBoYW5kbGUgZ2V0X2xlc3MoaGFuZGxlIGgp
IHsgcmV0dXJuIG1fbm9kZXNbaF0ubHQgJiAweDdGRkZGRkZGOyB9CisgICAgdm9pZCBzZXRfbGVz
cyhoYW5kbGUgaCwgaGFuZGxlIGxoKSB7IG1fbm9kZXNbaF0ubHQgJj0gMHg4MDAwMDAwMDsgbV9u
b2Rlc1toXS5sdCB8PSBsaDsgfQorICAgIGhhbmRsZSBnZXRfZ3JlYXRlcihoYW5kbGUgaCkgeyBy
ZXR1cm4gbV9ub2Rlc1toXS5ndCAmIDB4N0ZGRkZGRkY7IH0KKyAgICB2b2lkIHNldF9ncmVhdGVy
KGhhbmRsZSBoLCBoYW5kbGUgZ2gpIHsgbV9ub2Rlc1toXS5ndCAmPSAweDgwMDAwMDAwOyBtX25v
ZGVzW2hdLmd0IHw9IGdoOyB9CisKKyAgICBpbnQgZ2V0X2JhbGFuY2VfZmFjdG9yKGhhbmRsZSBo
KQorICAgIHsKKyAgICAgICAgaWYgKG1fbm9kZXNbaF0uZ3QgJiAweDgwMDAwMDAwKQorICAgICAg
ICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
bm9kZXNbaF0ubHQpID4+IDMxOworICAgIH0KKworICAgIHZvaWQgc2V0X2JhbGFuY2VfZmFjdG9y
KGhhbmRsZSBoLCBpbnQgYmYpCisgICAgeworICAgICAgICBpZiAoYmYgPT0gMCkgeworICAgICAg
ICAgICAgbV9ub2Rlc1toXS5sdCAmPSAweDdGRkZGRkZGOworICAgICAgICAgICAgbV9ub2Rlc1to
XS5ndCAmPSAweDdGRkZGRkZGOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV9ub2Rl
c1toXS5sdCB8PSAweDgwMDAwMDAwOworICAgICAgICAgICAgaWYgKGJmIDwgMCkKKyAgICAgICAg
ICAgICAgICBtX25vZGVzW2hdLmd0IHw9IDB4ODAwMDAwMDA7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgbV9ub2Rlc1toXS5ndCAmPSAweDdGRkZGRkZGOworICAgICAgICB9Cisg
ICAgfQorCisgICAgaW50IGNvbXBhcmVfa2V5X2tleShrZXkgdmEsIGtleSB2YikKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghdmEuaXNVbmRlZmluZWQoKSk7CisgICAgICAgIEFTU0VSVCghdmIuaXNV
bmRlZmluZWQoKSk7CisKKyAgICAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm4gMTsKKworICAgICAgICBkb3VibGUgY29tcGFyZVJlc3VsdDsKKyAgICAg
ICAgaWYgKG1fY2FjaGVkQ2FsbCkgeworICAgICAgICAgICAgbV9jYWNoZWRDYWxsLT5zZXRUaGlz
KGpzVW5kZWZpbmVkKCkpOworICAgICAgICAgICAgbV9jYWNoZWRDYWxsLT5zZXRBcmd1bWVudCgw
LCB2YSk7CisgICAgICAgICAgICBtX2NhY2hlZENhbGwtPnNldEFyZ3VtZW50KDEsIHZiKTsKKyAg
ICAgICAgICAgIGNvbXBhcmVSZXN1bHQgPSBtX2NhY2hlZENhbGwtPmNhbGwoKS50b051bWJlciht
X2V4ZWMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJndW1lbnRzOworICAgICAgICAgICAgYXJndW1lbnRzLmFwcGVuZCh2YSk7CisgICAgICAg
ICAgICBhcmd1bWVudHMuYXBwZW5kKHZiKTsKKyAgICAgICAgICAgIGNvbXBhcmVSZXN1bHQgPSBj
YWxsKG1fZXhlYywgbV9jb21wYXJlRnVuY3Rpb24sIG1fY29tcGFyZUNhbGxUeXBlLCAqbV9jb21w
YXJlQ2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGFyZ3VtZW50cykudG9OdW1iZXIobV9leGVjKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gKGNvbXBhcmVSZXN1bHQgPCAwKSA/IC0xIDogMTsg
Ly8gTm90IHBhc3NpbmcgZXF1YWxpdHkgdGhyb3VnaCwgYmVjYXVzZSB3ZSBuZWVkIHRvIHN0b3Jl
IGFsbCB2YWx1ZXMsIGV2ZW4gaWYgZXF1aXZhbGVudC4KKyAgICB9CisKKyAgICBpbnQgY29tcGFy
ZV9rZXlfbm9kZShrZXkgaywgaGFuZGxlIGgpIHsgcmV0dXJuIGNvbXBhcmVfa2V5X2tleShrLCBt
X25vZGVzW2hdLnZhbHVlKTsgfQorICAgIGludCBjb21wYXJlX25vZGVfbm9kZShoYW5kbGUgaDEs
IGhhbmRsZSBoMikgeyByZXR1cm4gY29tcGFyZV9rZXlfa2V5KG1fbm9kZXNbaDFdLnZhbHVlLCBt
X25vZGVzW2gyXS52YWx1ZSk7IH0KKworICAgIHN0YXRpYyBoYW5kbGUgbnVsbCgpIHsgcmV0dXJu
IDB4N0ZGRkZGRkY7IH0KK307CisKK3RlbXBsYXRlPEluZGV4aW5nVHlwZSBhcnJheUluZGV4aW5n
VHlwZT4KK3ZvaWQgSlNBcnJheTo6c29ydFZlY3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
Y29tcGFyZUZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmIGNhbGxE
YXRhKQoreworICAgIEFTU0VSVCghaW5TcGFyc2VJbmRleGluZ01vZGUoKSk7CisgICAgQVNTRVJU
KGFycmF5SW5kZXhpbmdUeXBlID09IGluZGV4aW5nVHlwZSgpKTsKKyAgICAKKyAgICAvLyBGSVhN
RTogVGhpcyBpZ25vcmVzIGV4Y2VwdGlvbnMgcmFpc2VkIGluIHRoZSBjb21wYXJlIGZ1bmN0aW9u
IG9yIGluIHRvTnVtYmVyLgorICAgICAgICAKKyAgICAvLyBUaGUgbWF4aW11bSB0cmVlIGRlcHRo
IGlzIGNvbXBpbGVkIGluIC0gYnV0IHRoZSBjYWxsZXIgaXMgY2xlYXJseSB1cCB0byBubyBnb29k
CisgICAgLy8gaWYgYSBsYXJnZXIgYXJyYXkgaXMgcGFzc2VkLgorICAgIEFTU0VSVChtX2J1dHRl
cmZseS0+cHVibGljTGVuZ3RoKCkgPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCkpKTsKKyAgICBpZiAobV9idXR0ZXJmbHktPnB1YmxpY0xlbmd0
aCgpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCkpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JM
ZW5ndGggPSByZWxldmFudExlbmd0aDxhcnJheUluZGV4aW5nVHlwZT4oKTsKKyAgICB1bnNpZ25l
ZCBub2RlQ291bnQgPSB1c2VkVmVjdG9yTGVuZ3RoOworICAgICAgICAKKyAgICBpZiAoIW5vZGVD
b3VudCkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBBVkxUcmVlPEFWTFRyZWVBYnN0
cmFjdG9yRm9yQXJyYXlDb21wYXJlLCA0ND4gdHJlZTsgLy8gRGVwdGggNDQgaXMgZW5vdWdoIGZv
ciAyXjMxIGl0ZW1zCisgICAgdHJlZS5hYnN0cmFjdG9yKCkubV9leGVjID0gZXhlYzsKKyAgICB0
cmVlLmFic3RyYWN0b3IoKS5tX2NvbXBhcmVGdW5jdGlvbiA9IGNvbXBhcmVGdW5jdGlvbjsKKyAg
ICB0cmVlLmFic3RyYWN0b3IoKS5tX2NvbXBhcmVDYWxsVHlwZSA9IGNhbGxUeXBlOworICAgIHRy
ZWUuYWJzdHJhY3RvcigpLm1fY29tcGFyZUNhbGxEYXRhID0gJmNhbGxEYXRhOworICAgIHRyZWUu
YWJzdHJhY3RvcigpLm1fbm9kZXMuZ3Jvdyhub2RlQ291bnQpOworCisgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlSlMpCisgICAgICAgIHRyZWUuYWJzdHJhY3RvcigpLm1fY2FjaGVkQ2FsbCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkQ2FsbD4oZXhlYywganNDYXN0PEpTRnVuY3Rpb24qPihj
b21wYXJlRnVuY3Rpb24pLCAyKTsKKworICAgIGlmICghdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rl
cy5iZWdpbigpKSB7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCisgICAgLy8gRklYTUU6IElmIHRoZSBjb21wYXJl
IGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBhcnJheSwgdGhlIHZlY3RvciwgbWFwLCBldGMuIGNvdWxk
IGJlIG1vZGlmaWVkCisgICAgLy8gcmlnaHQgb3V0IGZyb20gdW5kZXIgdXMgd2hpbGUgd2UncmUg
YnVpbGRpbmcgdGhlIHRyZWUgaGVyZS4KKyAgICAgICAgCisgICAgdW5zaWduZWQgbnVtRGVmaW5l
ZCA9IDA7CisgICAgdW5zaWduZWQgbnVtVW5kZWZpbmVkID0gMDsKKyAgICAKKyAgICAvLyBJdGVy
YXRlIG92ZXIgdGhlIGFycmF5LCBpZ25vcmluZyBtaXNzaW5nIHZhbHVlcywgY291bnRpbmcgdW5k
ZWZpbmVkIG9uZXMsIGFuZCBpbnNlcnRpbmcgYWxsIG90aGVyIG9uZXMgaW50byB0aGUgdHJlZS4K
KyAgICBmb3IgKDsgbnVtRGVmaW5lZCA8IHVzZWRWZWN0b3JMZW5ndGg7ICsrbnVtRGVmaW5lZCkg
eworICAgICAgICBpZiAobnVtRGVmaW5lZCA+PSBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkp
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgSlNWYWx1ZSB2ID0gZ2V0SG9seUluZGV4UXVp
Y2tseShudW1EZWZpbmVkKTsKKyAgICAgICAgaWYgKCF2IHx8IHYuaXNVbmRlZmluZWQoKSkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB0cmVlLmFic3RyYWN0b3IoKS5tX25vZGVzW251bURl
ZmluZWRdLnZhbHVlID0gdjsKKyAgICAgICAgdHJlZS5pbnNlcnQobnVtRGVmaW5lZCk7CisgICAg
fQorICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7IGkgPCB1c2VkVmVjdG9yTGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgaWYgKGkgPj0gbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEpTVmFsdWUgdiA9IGdldEhvbHlJbmRleFF1aWNr
bHkoaSk7CisgICAgICAgIGlmICh2KSB7CisgICAgICAgICAgICBpZiAodi5pc1VuZGVmaW5lZCgp
KQorICAgICAgICAgICAgICAgICsrbnVtVW5kZWZpbmVkOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgdHJlZS5hYnN0cmFjdG9yKCkubV9ub2Rlc1tudW1EZWZpbmVkXS52YWx1
ZSA9IHY7CisgICAgICAgICAgICAgICAgdHJlZS5pbnNlcnQobnVtRGVmaW5lZCk7CisgICAgICAg
ICAgICAgICAgKytudW1EZWZpbmVkOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIHVuc2lnbmVkIG5ld1VzZWRWZWN0b3JMZW5ndGggPSBudW1EZWZpbmVkICsgbnVt
VW5kZWZpbmVkOworICAgICAgICAKKyAgICAvLyBUaGUgYXJyYXkgc2l6ZSBtYXkgaGF2ZSBjaGFu
Z2VkLiBGaWd1cmUgb3V0IHRoZSBuZXcgYm91bmRzLgorICAgIHVuc2lnbmVkIG5ld2VzdFVzZWRW
ZWN0b3JMZW5ndGggPSBjdXJyZW50UmVsZXZhbnRMZW5ndGgoKTsKKyAgICAgICAgCisgICAgdW5z
aWduZWQgZWxlbWVudHNUb0V4dHJhY3RUaHJlc2hvbGQgPSBtaW4obWluKG5ld2VzdFVzZWRWZWN0
b3JMZW5ndGgsIG51bURlZmluZWQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odHJlZS5hYnN0cmFj
dG9yKCkubV9ub2Rlcy5zaXplKCkpKTsKKyAgICB1bnNpZ25lZCB1bmRlZmluZWRFbGVtZW50c1Ro
cmVzaG9sZCA9IG1pbihuZXdlc3RVc2VkVmVjdG9yTGVuZ3RoLCBuZXdVc2VkVmVjdG9yTGVuZ3Ro
KTsKKyAgICB1bnNpZ25lZCBjbGVhckVsZW1lbnRzVGhyZXNob2xkID0gbWluKG5ld2VzdFVzZWRW
ZWN0b3JMZW5ndGgsIHVzZWRWZWN0b3JMZW5ndGgpOworICAgICAgICAKKyAgICAvLyBDb3B5IHRo
ZSB2YWx1ZXMgYmFjayBpbnRvIG1fc3RvcmFnZS4KKyAgICBBVkxUcmVlPEFWTFRyZWVBYnN0cmFj
dG9yRm9yQXJyYXlDb21wYXJlLCA0ND46Okl0ZXJhdG9yIGl0ZXI7CisgICAgaXRlci5zdGFydF9p
dGVyX2xlYXN0KHRyZWUpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGVsZW1lbnRzVG9FeHRyYWN0VGhyZXNob2xkOyArK2kpIHsKKyAgICAg
ICAgQVNTRVJUKGkgPCBidXR0ZXJmbHkoKS0+dmVjdG9yTGVuZ3RoKCkpOworICAgICAgICBpZiAo
aW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91YmxlKQorICAgICAgICAgICAgYnV0dGVyZmx5
KCktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNbKml0
ZXJdLnZhbHVlLmFzTnVtYmVyKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN1cnJlbnRJ
bmRleGluZ0RhdGEoKVtpXS5zZXQodm0sIHRoaXMsIHRyZWUuYWJzdHJhY3RvcigpLm1fbm9kZXNb
Kml0ZXJdLnZhbHVlKTsKKyAgICAgICAgKytpdGVyOworICAgIH0KKyAgICAvLyBQdXQgdW5kZWZp
bmVkIHZhbHVlcyBiYWNrIGluLgorICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKKyAgICBj
YXNlIEFycmF5V2l0aEludDMyOgorICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOgorICAgICAgICBB
U1NFUlQoZWxlbWVudHNUb0V4dHJhY3RUaHJlc2hvbGQgPT0gdW5kZWZpbmVkRWxlbWVudHNUaHJl
c2hvbGQpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gZWxlbWVudHNUb0V4dHJhY3RUaHJlc2hvbGQ7IGkgPCB1bmRlZmlu
ZWRFbGVtZW50c1RocmVzaG9sZDsgKytpKSB7CisgICAgICAgICAgICBBU1NFUlQoaSA8IGJ1dHRl
cmZseSgpLT52ZWN0b3JMZW5ndGgoKSk7CisgICAgICAgICAgICBjdXJyZW50SW5kZXhpbmdEYXRh
KClbaV0uc2V0VW5kZWZpbmVkKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBFbnN1cmUg
dGhhdCB1bnVzZWQgdmFsdWVzIGluIHRoZSB2ZWN0b3IgYXJlIHplcm9lZCBvdXQuCisgICAgZm9y
ICh1bnNpZ25lZCBpID0gdW5kZWZpbmVkRWxlbWVudHNUaHJlc2hvbGQ7IGkgPCBjbGVhckVsZW1l
bnRzVGhyZXNob2xkOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKGkgPCBidXR0ZXJmbHkoKS0+dmVj
dG9yTGVuZ3RoKCkpOworICAgICAgICBpZiAoaW5kZXhpbmdUeXBlKCkgPT0gQXJyYXlXaXRoRG91
YmxlKQorICAgICAgICAgICAgYnV0dGVyZmx5KCktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBO
YU47CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGN1cnJlbnRJbmRleGluZ0RhdGEoKVtpXS5j
bGVhcigpOworICAgIH0KKyAgICAKKyAgICBpZiAoaGFzQW55QXJyYXlTdG9yYWdlKGluZGV4aW5n
VHlwZSgpKSkKKyAgICAgICAgYXJyYXlTdG9yYWdlKCktPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSBu
ZXdVc2VkVmVjdG9yTGVuZ3RoOworfQorCit2b2lkIEpTQXJyYXk6OnNvcnQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUgY2FsbFR5cGUsIGNvbnN0IENh
bGxEYXRhJiBjYWxsRGF0YSkKK3sKKyAgICBBU1NFUlQoIWluU3BhcnNlSW5kZXhpbmdNb2RlKCkp
OworICAgIAorICAgIHN3aXRjaCAoaW5kZXhpbmdUeXBlKCkpIHsKKyAgICBjYXNlIEFycmF5Q2xh
c3M6CisgICAgY2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6CisgICAgICAgIHJldHVybjsKKyAgICAg
ICAgCisgICAgY2FzZSBBcnJheVdpdGhJbnQzMjoKKyAgICAgICAgc29ydFZlY3RvcjxBcnJheVdp
dGhJbnQzMj4oZXhlYywgY29tcGFyZUZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEpOworICAg
ICAgICByZXR1cm47CisKKyAgICBjYXNlIEFycmF5V2l0aERvdWJsZToKKyAgICAgICAgc29ydFZl
Y3RvcjxBcnJheVdpdGhEb3VibGU+KGV4ZWMsIGNvbXBhcmVGdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FzZSBBcnJheVdpdGhDb250aWd1b3Vz
OgorICAgICAgICBzb3J0VmVjdG9yPEFycmF5V2l0aENvbnRpZ3VvdXM+KGV4ZWMsIGNvbXBhcmVG
dW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICAgICAgcmV0dXJuOworCisgICAgY2Fz
ZSBBcnJheVdpdGhBcnJheVN0b3JhZ2U6CisgICAgICAgIHNvcnRWZWN0b3I8QXJyYXlXaXRoQXJy
YXlTdG9yYWdlPihleGVjLCBjb21wYXJlRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9CisKIHZvaWQgSlNBcnJheTo6ZmlsbEFyZ0xp
c3QoRXhlY1N0YXRlKiBleGVjLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncykKIHsKICAgICB1
bnNpZ25lZCBpID0gMDsKQEAgLTExMjMsNCArMTYzOSw5NSBAQCB2b2lkIEpTQXJyYXk6OmNvcHlU
b0FyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIFZpcnR1YWxSZWdpc3RlciBmaXJzdEVsZW1lbnRE
ZXN0LAogICAgIH0KIH0KIAordGVtcGxhdGU8SW5kZXhpbmdUeXBlIGFycmF5SW5kZXhpbmdUeXBl
Pgordm9pZCBKU0FycmF5Ojpjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25lZCYgbnVtRGVmaW5lZCwg
dW5zaWduZWQmIG5ld1JlbGV2YW50TGVuZ3RoKQoreworICAgIEFTU0VSVCghaW5TcGFyc2VJbmRl
eGluZ01vZGUoKSk7CisgICAgQVNTRVJUKGFycmF5SW5kZXhpbmdUeXBlID09IGluZGV4aW5nVHlw
ZSgpKTsKKworICAgIHVuc2lnbmVkIG15UmVsZXZhbnRMZW5ndGggPSByZWxldmFudExlbmd0aDxh
cnJheUluZGV4aW5nVHlwZT4oKTsKKyAgICAKKyAgICBudW1EZWZpbmVkID0gMDsKKyAgICB1bnNp
Z25lZCBudW1VbmRlZmluZWQgPSAwOworICAgICAgICAKKyAgICBmb3IgKDsgbnVtRGVmaW5lZCA8
IG15UmVsZXZhbnRMZW5ndGg7ICsrbnVtRGVmaW5lZCkgeworICAgICAgICBBU1NFUlQobnVtRGVm
aW5lZCA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CisgICAgICAgIGlmIChhcnJheUlu
ZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhJbnQzMikgeworICAgICAgICAgICAgSlNWYWx1ZSB2ID0g
bV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNJbnQzMigpW251bURlZmluZWRdLmdldCgpOworICAgICAg
ICAgICAgaWYgKCF2KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQVNTRVJU
KHYuaXNJbnQzMigpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAg
IGlmIChhcnJheUluZGV4aW5nVHlwZSA9PSBBcnJheVdpdGhEb3VibGUpIHsKKyAgICAgICAgICAg
IGRvdWJsZSB2ID0gbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtudW1EZWZpbmVkXTsK
KyAgICAgICAgICAgIGlmICh2ICE9IHYpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlIHYgPSBpbmRleGluZ0Rh
dGE8YXJyYXlJbmRleGluZ1R5cGU+KClbbnVtRGVmaW5lZF0uZ2V0KCk7CisgICAgICAgIGlmICgh
diB8fCB2LmlzVW5kZWZpbmVkKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAg
IAorICAgIGZvciAodW5zaWduZWQgaSA9IG51bURlZmluZWQ7IGkgPCBteVJlbGV2YW50TGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkp
OworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoSW50MzIpIHsKKyAg
ICAgICAgICAgIEpTVmFsdWUgdiA9IG1fYnV0dGVyZmx5LT5jb250aWd1b3VzSW50MzIoKVtpXS5n
ZXQoKTsKKyAgICAgICAgICAgIGlmICghdikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIEFTU0VSVCh2LmlzSW50MzIoKSk7CisgICAgICAgICAgICBBU1NFUlQobnVtRGVm
aW5lZCA8IG1fYnV0dGVyZmx5LT52ZWN0b3JMZW5ndGgoKSk7CisgICAgICAgICAgICBtX2J1dHRl
cmZseS0+Y29udGlndW91c0ludDMyKClbbnVtRGVmaW5lZCsrXS5zZXRXaXRob3V0V3JpdGVCYXJy
aWVyKHYpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGFy
cmF5SW5kZXhpbmdUeXBlID09IEFycmF5V2l0aERvdWJsZSkgeworICAgICAgICAgICAgZG91Ymxl
IHYgPSBtX2J1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpW2ldOworICAgICAgICAgICAgaWYg
KHYgIT0gdikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEFTU0VSVChu
dW1EZWZpbmVkIDwgbV9idXR0ZXJmbHktPnZlY3Rvckxlbmd0aCgpKTsKKyAgICAgICAgICAgIG1f
YnV0dGVyZmx5LT5jb250aWd1b3VzRG91YmxlKClbbnVtRGVmaW5lZCsrXSA9IHY7CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBKU1ZhbHVlIHYgPSBpbmRleGluZ0Rh
dGE8YXJyYXlJbmRleGluZ1R5cGU+KClbaV0uZ2V0KCk7CisgICAgICAgIGlmICh2KSB7CisgICAg
ICAgICAgICBpZiAodi5pc1VuZGVmaW5lZCgpKQorICAgICAgICAgICAgICAgICsrbnVtVW5kZWZp
bmVkOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKG51bURlZmlu
ZWQgPCBtX2J1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIGluZGV4
aW5nRGF0YTxhcnJheUluZGV4aW5nVHlwZT4oKVtudW1EZWZpbmVkKytdLnNldFdpdGhvdXRXcml0
ZUJhcnJpZXIodik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgICAgIAor
ICAgIG5ld1JlbGV2YW50TGVuZ3RoID0gbnVtRGVmaW5lZCArIG51bVVuZGVmaW5lZDsKKyAgICAK
KyAgICBpZiAoaGFzQW55QXJyYXlTdG9yYWdlKGFycmF5SW5kZXhpbmdUeXBlKSkKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoIWFycmF5U3RvcmFnZSgpLT5tX3NwYXJzZU1hcCk7CisgICAgCisgICAg
c3dpdGNoIChhcnJheUluZGV4aW5nVHlwZSkgeworICAgIGNhc2UgQXJyYXlXaXRoSW50MzI6Cisg
ICAgY2FzZSBBcnJheVdpdGhEb3VibGU6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG51bURlZmlu
ZWQgPT0gbmV3UmVsZXZhbnRMZW5ndGgpOworICAgICAgICBicmVhazsKKyAgICAgICAgCisgICAg
ZGVmYXVsdDoKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtRGVmaW5lZDsgaSA8IG5ld1Jl
bGV2YW50TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIEFTU0VSVChpIDwgbV9idXR0ZXJmbHkt
PnZlY3Rvckxlbmd0aCgpKTsKKyAgICAgICAgICAgIGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5n
VHlwZT4oKVtpXS5zZXRVbmRlZmluZWQoKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgZm9yICh1bnNpZ25lZCBpID0gbmV3UmVsZXZhbnRMZW5ndGg7IGkgPCBteVJlbGV2
YW50TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKGkgPCBtX2J1dHRlcmZseS0+dmVjdG9y
TGVuZ3RoKCkpOworICAgICAgICBpZiAoYXJyYXlJbmRleGluZ1R5cGUgPT0gQXJyYXlXaXRoRG91
YmxlKQorICAgICAgICAgICAgbV9idXR0ZXJmbHktPmNvbnRpZ3VvdXNEb3VibGUoKVtpXSA9IFBO
YU47CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZGV4aW5nRGF0YTxhcnJheUluZGV4aW5n
VHlwZT4oKVtpXS5jbGVhcigpOworICAgIH0KKworICAgIGlmIChoYXNBbnlBcnJheVN0b3JhZ2Uo
YXJyYXlJbmRleGluZ1R5cGUpKQorICAgICAgICBhcnJheVN0b3JhZ2UoKS0+bV9udW1WYWx1ZXNJ
blZlY3RvciA9IG5ld1JlbGV2YW50TGVuZ3RoOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCA2MjA4YmE4MWEyYjRkZjU3
ZDUzMDFlNGM4OWI5MzQ1MzkzN2FkMjExLi5hYWJkNTViMjI0YmUwMjUyZjNlMDhjZmZhZGMzNDIz
NDAxZDBhOWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCkBAIC03
MCw2ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgLy8gT0sgdG8gdXNlIG9uIG5ldyBhcnJheXMsIGJ1
dCBub3QgaWYgaXQgbWlnaHQgYmUgYSBSZWdFeHBNYXRjaEFycmF5LgogICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgc2V0TGVuZ3RoKEV4ZWNTdGF0ZSosIHVuc2lnbmVkLCBib29sIHRocm93RXhj
ZXB0aW9uID0gZmFsc2UpOwogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzb3J0KEV4ZWNT
dGF0ZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc29ydChFeGVjU3RhdGUqLCBKU1Zh
bHVlIGNvbXBhcmVGdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJik7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBzb3J0TnVtZXJpYyhFeGVjU3RhdGUqLCBKU1ZhbHVlIGNvbXBh
cmVGdW5jdGlvbiwgQ2FsbFR5cGUsIGNvbnN0IENhbGxEYXRhJik7CisKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHB1c2goRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CiAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSBwb3AoRXhlY1N0YXRlKik7CiAKQEAgLTE1OSw4ICsxNjMsMjAgQEAgcHJp
dmF0ZToKICAgICBib29sIHVuc2hpZnRDb3VudFdpdGhBcnJheVN0b3JhZ2UoRXhlY1N0YXRlKiwg
dW5zaWduZWQgc3RhcnRJbmRleCwgdW5zaWduZWQgY291bnQsIEFycmF5U3RvcmFnZSopOwogICAg
IGJvb2wgdW5zaGlmdENvdW50U2xvd0Nhc2UoVk0mLCBib29sLCB1bnNpZ25lZCk7CiAKKyAgICB0
ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlPgorICAgIHZvaWQgc29ydE51bWVyaWNW
ZWN0b3IoRXhlY1N0YXRlKiwgSlNWYWx1ZSBjb21wYXJlRnVuY3Rpb24sIENhbGxUeXBlLCBjb25z
dCBDYWxsRGF0YSYpOworICAgICAgICAKKyAgICB0ZW1wbGF0ZTxJbmRleGluZ1R5cGUgaW5kZXhp
bmdUeXBlLCB0eXBlbmFtZSBTdG9yYWdlVHlwZT4KKyAgICB2b2lkIHNvcnRDb21wYWN0ZWRWZWN0
b3IoRXhlY1N0YXRlKiwgQ29udGlndW91c0RhdGE8U3RvcmFnZVR5cGU+LCB1bnNpZ25lZCByZWxl
dmFudExlbmd0aCk7CisgICAgICAgIAorICAgIHRlbXBsYXRlPEluZGV4aW5nVHlwZSBpbmRleGlu
Z1R5cGU+CisgICAgdm9pZCBzb3J0VmVjdG9yKEV4ZWNTdGF0ZSosIEpTVmFsdWUgY29tcGFyZUZ1
bmN0aW9uLCBDYWxsVHlwZSwgY29uc3QgQ2FsbERhdGEmKTsKKwogICAgIGJvb2wgc2V0TGVuZ3Ro
V2l0aEFycmF5U3RvcmFnZShFeGVjU3RhdGUqLCB1bnNpZ25lZCBuZXdMZW5ndGgsIGJvb2wgdGhy
b3dFeGNlcHRpb24sIEFycmF5U3RvcmFnZSopOwogICAgIHZvaWQgc2V0TGVuZ3RoV3JpdGFibGUo
RXhlY1N0YXRlKiwgYm9vbCB3cml0YWJsZSk7CisgICAgICAgIAorICAgIHRlbXBsYXRlPEluZGV4
aW5nVHlwZSBpbmRleGluZ1R5cGU+CisgICAgdm9pZCBjb21wYWN0Rm9yU29ydGluZyh1bnNpZ25l
ZCYgbnVtRGVmaW5lZCwgdW5zaWduZWQmIG5ld1JlbGV2YW50TGVuZ3RoKTsKIH07CiAKIGlubGlu
ZSBCdXR0ZXJmbHkqIGNyZWF0ZUNvbnRpZ3VvdXNBcnJheUJ1dHRlcmZseShWTSYgdm0sIEpTQ2Vs
bCogaW50ZW5kZWRPd25lciwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCYgdmVjdG9yTGVuZ3Ro
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CmluZGV4IDM4ZGQ1Yzg3MmYwY2Y0ZjU1ZTVjZDQ0ODBjODkwMTU1NWMyNzcwZjguLjBiYTAyNDRi
YTlkNzQxOTJhMjRlMjQ2NjE3NzdhZDRlYjVjNWE4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQ0NSwxMSArNDQ1LDggQEAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUs
IGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPkJ1aWx0aW5Mb2dQcml2YXRlTmFtZSwgYnVpbHRpbkxvZywgRG9udEVudW0g
fCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0u
cHJvcGVydHlOYW1lcy0+QXJyYXlQcml2YXRlTmFtZSwgYXJyYXlDb25zdHJ1Y3RvciwgRG9udEVu
dW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
dm0ucHJvcGVydHlOYW1lcy0+TnVtYmVyUHJpdmF0ZU5hbWUsIG51bWJlckNvbnN0cnVjdG9yLCBE
b250RW51bSB8IERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5TdHJpbmdQcml2YXRlTmFtZSwgc3RyaW5nQ29uc3RydWN0
b3IsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmFic1ByaXZhdGVOYW1lLCBwcml2YXRlRnVuY0Fi
cywgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9w
ZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+Zmxvb3JQcml2YXRlTmFtZSwgcHJpdmF0ZUZ1bmNG
bG9vciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+Z2V0UHJvdG90eXBlT2ZQcml2YXRlTmFtZSwg
cHJpdmF0ZUZ1bmNGbG9vciwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAg
ICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+Z2V0T3duUHJvcGVydHlO
YW1lc1ByaXZhdGVOYW1lLCBwcml2YXRlRnVuY0Zsb29yLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5pc0Zpbml0ZVByaXZhdGVOYW1lLCBwcml2YXRlRnVuY0lzRmluaXRlLCBEb250RW51bSB8IERv
bnREZWxldGUgfCBSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5hcnJheUl0ZXJhdGlvbktpbmRLZXlQcml2YXRlTmFtZSwganNOdW1iZXIoQXJy
YXlJdGVyYXRlS2V5KSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAg
ICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YXJyYXlJdGVyYXRpb25LaW5k
VmFsdWVQcml2YXRlTmFtZSwganNOdW1iZXIoQXJyYXlJdGVyYXRlVmFsdWUpLCBEb250RW51bSB8
IERvbnREZWxldGUgfCBSZWFkT25seSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMGNjMzBiZjk4ZTkxMWExOWFlOWVh
NzVkZThjODY5MWJkMWM4NTBlYy4uMTI0NWUxY2E2ZmQzMzBjNzU5OGFiNWE3YzU3MGVlZjMwMDlm
OGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcApAQCAtOTYsOSArOTYsNiBAQCB2b2lkIE9iamVjdENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE9iagog
CiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPnJ1bnRpbWVGbGFncygpLmlzU3ltYm9sRGlzYWJsZWQo
KSkKICAgICAgICAgSlNDX05BVElWRV9GVU5DVElPTigiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwg
b2JqZWN0Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eVN5bWJvbHMsIERvbnRFbnVtLCAxKTsKLQot
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Z2V0UHJvdG90eXBlT2ZQ
cml2YXRlTmFtZSwgb2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiwgRG9udEVudW0sIDEp
OwotICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+Z2V0T3duUHJvcGVy
dHlOYW1lc1ByaXZhdGVOYW1lLCBvYmplY3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5TmFtZXMs
IERvbnRFbnVtLCAxKTsKIH0KIAogYm9vbCBPYmplY3RDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVy
dHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZSwgUHJvcGVydHlTbG90ICZzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYudmN4cHJvai9XVEYudmN4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHBy
b2oKaW5kZXggYTM0MjQ3ZTcxMDY4MWYwOTY2OWEyMTYyMDJjMjE2ZmM5Njc3MTQwMC4uNmFhNDcz
ZGZlNjdhZDRkMjk1YWIzODdiZjdkMWJjNGRiZDFiZDhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9XVEYudmN4cHJvai9XVEYudmN4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi52Y3hwcm9qL1dU
Ri52Y3hwcm9qCkBAIC0xNjMsNiArMTYzLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHd0ZlxBc3NlcnRpb25zLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlx3dGZcQXRv
bWljcy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEF1dG9kcmFpbmVkUG9v
bC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cd3RmXEFWTFRyZWUuaCIgLz4KICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxCYWcuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHd0ZlxCYWdUb0hhc2hNYXAuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHd0ZlxCaXRtYXAuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ov
V1RGLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2ou
ZmlsdGVycwppbmRleCBjZDkyYTMxY2Q3YjdiYjQ0ZGFmMTVkZmFkOGQzZTUxOWNiZjI4MjFlLi5m
YWUxMDY5MjYzYWU3ODJmNWI1ODUzZDViMTMyMTczOWQyMzVhM2ZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL1dURi52Y3hwcm9qL1dURi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL1dURi9X
VEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCkBAIC0zODEsNiArMzgxLDkgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxBdG9taWNzLmgiPgogICAgICAgPEZpbHRlcj53dGY8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0
ZlxBVkxUcmVlLmgiPgorICAgICAgPEZpbHRlcj53dGY8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVk
ZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHd0ZlxCaXRtYXAuaCI+CiAgICAgICA8Rmls
dGVyPnd0ZjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjIwZDU4ZDNmYmUyYzc5NGJmYmQ0MDZkYjJjNDQ1YTJi
ODA5ZGY5MC4uYTAzODc4M2RmMjYwODM3Zjc0YzY5YTIwZDY3MjMzNWU1MmRkMzgyOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDcsNiArMTA3LDcgQEAK
IAkJQThBNDczODYxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNUIxNTFBODI1QTAwNDEy
M0ZGIC8qIEFzc2VydGlvbnMuY3BwICovOyB9OwogCQlBOEE0NzM4NzE1MUE4MjVCMDA0MTIzRkYg
LyogQXNzZXJ0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCAqLzsgfTsKIAkJ
QThBNDczODgxNTFBODI1QjAwNDEyM0ZGIC8qIEF0b21pY3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QTQ3MjVEMTUxQTgyNUEwMDQxMjNGRiAvKiBB
dG9taWNzLmggKi87IH07CisJCUE4QTQ3Mzg5MTUxQTgyNUIwMDQxMjNGRiAvKiBBVkxUcmVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEE0NzI1RTE1
MUE4MjVBMDA0MTIzRkYgLyogQVZMVHJlZS5oICovOyB9OwogCQlBOEE0NzM4QTE1MUE4MjVCMDA0
MTIzRkYgLyogQml0bWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEE0NzI1RjE1MUE4MjVBMDA0MTIzRkYgLyogQml0bWFwLmggKi87IH07CiAJCUE4
QTQ3MzhCMTUxQTgyNUIwMDQxMjNGRiAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThBNDcyNjAxNTFBODI1QTAwNDEyM0ZGIC8q
IEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCUE4QTQ3MzhDMTUxQTgyNUIwMDQxMjNGRiAvKiBCaXRW
ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QTQ3MjYxMTUxQTgyNUEwMDQxMjNGRiAvKiBCaXRWZWN0b3IuaCAqLzsgfTsKQEAgLTM5MSw2ICsz
OTIsNyBAQAogCQlBOEE0NzI1QjE1MUE4MjVBMDA0MTIzRkYgLyogQXNzZXJ0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3NlcnRpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNUMxNTFBODI1QTAwNDEyM0ZGIC8qIEFzc2Vy
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXNzZXJ0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzI1RDE1MUE4MjVBMDA0MTIzRkYgLyog
QXRvbWljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdG9taWNzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QTQ3MjVFMTUxQTgyNUEwMDQxMjNGRiAvKiBB
VkxUcmVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFWTFRyZWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNUYxNTFBODI1QTAwNDEyM0ZGIC8qIEJp
dG1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCaXRtYXAuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThBNDcyNjAxNTFBODI1QTAwNDEyM0ZGIC8qIEJpdFZl
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRWZWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEE0NzI2MTE1MUE4MjVBMDA0MTIz
RkYgLyogQml0VmVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdFZl
Y3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjk0LDYgKzY5Niw3IEBACiAJ
CQkJQThBNDcyNUQxNTFBODI1QTAwNDEyM0ZGIC8qIEF0b21pY3MuaCAqLywKIAkJCQkxNDY5NDE5
QTE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggKi8sCiAJCQkJMTQ2OTQxOUIx
NkVBQjEwQTAwMjRFMTQ2IC8qIEF1dG9kcmFpbmVkUG9vbE1hYy5tbSAqLywKKwkJCQlBOEE0NzI1
RTE1MUE4MjVBMDA0MTIzRkYgLyogQVZMVHJlZS5oICovLAogCQkJCTBGQjE0RTE4MTgwRkEyMTgw
MDlCNkI0RCAvKiBCYWcuaCAqLywKIAkJCQkwRkIxNEUxQTE4MTBFMURBMDA5QjZCNEQgLyogQmFn
VG9IYXNoTWFwLmggKi8sCiAJCQkJQThBNDcyNUYxNTFBODI1QTAwNDEyM0ZGIC8qIEJpdG1hcC5o
ICovLApAQCAtMTAzNiw2ICsxMDM5LDcgQEAKIAkJCQlBOEE0NzQzODE1MUE4MjVCMDA0MTIzRkYg
LyogQXRvbWljU3RyaW5nSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEOEY0MEIxNzZDMkI0
NzAwMDJEODY1IC8qIEF0b21pY1N0cmluZ1RhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDY5
NDE5QzE2RUFCMTBBMDAyNEUxNDYgLyogQXV0b2RyYWluZWRQb29sLmggaW4gSGVhZGVycyAqLywK
KwkJCQlBOEE0NzM4OTE1MUE4MjVCMDA0MTIzRkYgLyogQVZMVHJlZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODEzNDAxMzkxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDczQTkxNTFBODI1QjAwNDEyM0ZGIC8qIGJpZ251bS1kdG9hLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEE0NzNBQjE1MUE4MjVCMDA0MTIzRkYgLyogYmlnbnVtLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0FWTFRyZWUuaCBiL1NvdXJjZS9XVEYv
d3RmL0FWTFRyZWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTBlNDlmMWM4N2M0N2I3OTgwMzJhMTBkMjVjOWZj
NDA4OTFlOTczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvQVZMVHJlZS5oCkBA
IC0wLDAgKzEsOTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBCYXNlZCBvbiBBYnN0cmFjdCBBVkwgVHJlZSBUZW1w
bGF0ZSB2MS41IGJ5IFdhbHQgS2FyYXMKKyAqIDxodHRwOi8vZ2VvY2l0aWVzLmNvbS93a2FyYXMv
Z2VuX2NwcC9hdmxfdHJlZS5odG1sPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgQVZMX1RSRUVfSF8KKyNkZWZpbmUgQVZMX1RSRUVfSF8KKwor
I2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCisvLyBIZXJlIGlzIHRoZSByZWZlcmVuY2UgY2xhc3MgZm9yIEJTZXQuCisvLwor
Ly8gY2xhc3MgQlNldAorLy8gICB7CisvLyAgIHB1YmxpYzoKKy8vCisvLyAgICAgY2xhc3MgQU5Z
X2JpdHJlZgorLy8gICAgICAgeworLy8gICAgICAgcHVibGljOgorLy8gICAgICAgICBvcGVyYXRv
ciBib29sICgpOworLy8gICAgICAgICB2b2lkIG9wZXJhdG9yID0gKGJvb2wgYik7CisvLyAgICAg
ICB9OworLy8KKy8vICAgICAvLyBEb2VzIG5vdCBoYXZlIHRvIGluaXRpYWxpemUgYml0cy4KKy8v
ICAgICBCU2V0KCk7CisvLworLy8gICAgIC8vIE11c3QgcmV0dXJuIGEgdmFsaWQgdmFsdWUgZm9y
IGluZGV4IHdoZW4gMCA8PSBpbmRleCA8IG1heERlcHRoCisvLyAgICAgQU5ZX2JpdHJlZiBvcGVy
YXRvciBbXSAodW5zaWduZWQgaW5kZXgpOworLy8KKy8vICAgICAvLyBTZXQgYWxsIGJpdHMgdG8g
MS4KKy8vICAgICB2b2lkIHNldCgpOworLy8KKy8vICAgICAvLyBTZXQgYWxsIGJpdHMgdG8gMC4K
Ky8vICAgICB2b2lkIHJlc2V0KCk7CisvLyAgIH07CisKK3RlbXBsYXRlPHVuc2lnbmVkIG1heERl
cHRoPgorY2xhc3MgQVZMVHJlZURlZmF1bHRCU2V0IHsKK3B1YmxpYzoKKyAgICBib29sJiBvcGVy
YXRvcltdKHVuc2lnbmVkIGkpIHsgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaSA8
IG1heERlcHRoKTsgcmV0dXJuIG1fZGF0YVtpXTsgfQorICAgIHZvaWQgc2V0KCkgeyBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbWF4RGVwdGg7ICsraSkgbV9kYXRhW2ldID0gdHJ1ZTsgfQorICAg
IHZvaWQgcmVzZXQoKSB7IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXhEZXB0aDsgKytpKSBt
X2RhdGFbaV0gPSBmYWxzZTsgfQorCitwcml2YXRlOgorICAgIHN0ZDo6YXJyYXk8Ym9vbCwgbWF4
RGVwdGg+IG1fZGF0YTsKK307CisKKy8vIEhvdyB0byBkZXRlcm1pbmUgbWF4RGVwdGg6CisvLyBk
ICBNaW5pbXVtIG51bWJlciBvZiBub2RlcworLy8gMiAgMgorLy8gMyAgNAorLy8gNCAgNworLy8g
NSAgMTIKKy8vIDYgIDIwCisvLyA3ICAzMworLy8gOCAgNTQKKy8vIDkgIDg4CisvLyAxMCAxNDMK
Ky8vIDExIDIzMgorLy8gMTIgMzc2CisvLyAxMyA2MDkKKy8vIDE0IDk4NgorLy8gMTUgMSw1OTYK
Ky8vIDE2IDIsNTgzCisvLyAxNyA0LDE4MAorLy8gMTggNiw3NjQKKy8vIDE5IDEwLDk0NQorLy8g
MjAgMTcsNzEwCisvLyAyMSAyOCw2NTYKKy8vIDIyIDQ2LDM2NworLy8gMjMgNzUsMDI0CisvLyAy
NCAxMjEsMzkyCisvLyAyNSAxOTYsNDE3CisvLyAyNiAzMTcsODEwCisvLyAyNyA1MTQsMjI4Cisv
LyAyOCA4MzIsMDM5CisvLyAyOSAxLDM0NiwyNjgKKy8vIDMwIDIsMTc4LDMwOAorLy8gMzEgMyw1
MjQsNTc3CisvLyAzMiA1LDcwMiw4ODYKKy8vIDMzIDksMjI3LDQ2NAorLy8gMzQgMTQsOTMwLDM1
MQorLy8gMzUgMjQsMTU3LDgxNgorLy8gMzYgMzksMDg4LDE2OAorLy8gMzcgNjMsMjQ1LDk4NQor
Ly8gMzggMTAyLDMzNCwxNTQKKy8vIDM5IDE2NSw1ODAsMTQwCisvLyA0MCAyNjcsOTE0LDI5NQor
Ly8gNDEgNDMzLDQ5NCw0MzYKKy8vIDQyIDcwMSw0MDgsNzMyCisvLyA0MyAxLDEzNCw5MDMsMTY5
CisvLyA0NCAxLDgzNiwzMTEsOTAyCisvLyA0NSAyLDk3MSwyMTUsMDcyCisvLworLy8gRS5nLiwg
aWYsIGluIGEgcGFydGljdWxhciBpbnN0YW50aWF0aW9uLCB0aGUgbWF4aW11bSBudW1iZXIgb2Yg
bm9kZXMgaW4gYSB0cmVlIGluc3RhbmNlIGlzIDEsMDAwLDAwMCwgdGhlIG1heGltdW0gZGVwdGgg
c2hvdWxkIGJlIDI4LgorLy8gWW91IHBpY2sgMjggYmVjYXVzZSBNTigyOCkgaXMgODMyLDAzOSwg
d2hpY2ggaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDEsMDAwLDAwMCwgYW5kIE1OKDI5KSBpcyAx
LDM0NiwyNjgsIHdoaWNoIGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAxLDAwMCwwMDAuCisKK3Rl
bXBsYXRlIDxjbGFzcyBBYnN0cmFjdG9yLCB1bnNpZ25lZCBtYXhEZXB0aCA9IDMyLCBjbGFzcyBC
U2V0ID0gQVZMVHJlZURlZmF1bHRCU2V0PG1heERlcHRoPj4KK2NsYXNzIEFWTFRyZWUgeworcHVi
bGljOgorCisgICAgdHlwZWRlZiB0eXBlbmFtZSBBYnN0cmFjdG9yOjprZXkga2V5OworICAgIHR5
cGVkZWYgdHlwZW5hbWUgQWJzdHJhY3Rvcjo6aGFuZGxlIGhhbmRsZTsKKyAgICB0eXBlZGVmIHR5
cGVuYW1lIEFic3RyYWN0b3I6OnNpemUgc2l6ZTsKKworICAgIGVudW0gU2VhcmNoVHlwZSB7Cisg
ICAgICAgIEVRVUFMID0gMSwKKyAgICAgICAgTEVTUyA9IDIsCisgICAgICAgIEdSRUFURVIgPSA0
LAorICAgICAgICBMRVNTX0VRVUFMID0gRVFVQUwgfCBMRVNTLAorICAgICAgICBHUkVBVEVSX0VR
VUFMID0gRVFVQUwgfCBHUkVBVEVSCisgICAgfTsKKworCisgICAgQWJzdHJhY3RvciYgYWJzdHJh
Y3RvcigpIHsgcmV0dXJuIGFiczsgfQorCisgICAgaW5saW5lIGhhbmRsZSBpbnNlcnQoaGFuZGxl
IGgpOworCisgICAgaW5saW5lIGhhbmRsZSBzZWFyY2goa2V5IGssIFNlYXJjaFR5cGUgc3QgPSBF
UVVBTCk7CisgICAgaW5saW5lIGhhbmRsZSBzZWFyY2hfbGVhc3QoKTsKKyAgICBpbmxpbmUgaGFu
ZGxlIHNlYXJjaF9ncmVhdGVzdCgpOworCisgICAgaW5saW5lIGhhbmRsZSByZW1vdmUoa2V5IGsp
OworCisgICAgaW5saW5lIGhhbmRsZSBzdWJzdChoYW5kbGUgbmV3X25vZGUpOworCisgICAgdm9p
ZCBwdXJnZSgpIHsgYWJzLnJvb3QgPSBudWxsKCk7IH0KKworICAgIGJvb2wgaXNfZW1wdHkoKSB7
IHJldHVybiBhYnMucm9vdCA9PSBudWxsKCk7IH0KKworICAgIEFWTFRyZWUoKSB7IGFicy5yb290
ID0gbnVsbCgpOyB9CisKKyAgICBjbGFzcyBJdGVyYXRvciB7CisgICAgcHVibGljOgorCisgICAg
ICAgIC8vIEluaXRpYWxpemUgZGVwdGggdG8gaW52YWxpZCB2YWx1ZSwgdG8gaW5kaWNhdGUgaXRl
cmF0b3IgaXMKKyAgICAgICAgLy8gaW52YWxpZC4gICAoRGVwdGggaXMgemVyby1iYXNlLikKKyAg
ICAgICAgSXRlcmF0b3IoKSB7IGRlcHRoID0gfjBVOyB9CisKKyAgICAgICAgdm9pZCBzdGFydF9p
dGVyKEFWTFRyZWUgJnRyZWUsIGtleSBrLCBTZWFyY2hUeXBlIHN0ID0gRVFVQUwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIE1hc2sgb2YgaGlnaCBiaXQgaW4gYW4gaW50LgorICAgICAgICAg
ICAgY29uc3QgaW50IE1BU0tfSElHSF9CSVQgPSAoaW50KSB+ICgofiAodW5zaWduZWQpIDApID4+
IDEpOworCisgICAgICAgICAgICAvLyBTYXZlIHRoZSB0cmVlIHRoYXQgd2UncmUgZ29pbmcgdG8g
aXRlcmF0ZSB0aHJvdWdoIGluIGEKKyAgICAgICAgICAgIC8vIG1lbWJlciB2YXJpYWJsZS4KKyAg
ICAgICAgICAgIHRyZWVfID0gJnRyZWU7CisKKyAgICAgICAgICAgIGludCBjbXAsIHRhcmdldF9j
bXA7CisgICAgICAgICAgICBoYW5kbGUgaCA9IHRyZWVfLT5hYnMucm9vdDsKKyAgICAgICAgICAg
IHVuc2lnbmVkIGQgPSAwOworCisgICAgICAgICAgICBkZXB0aCA9IH4wVTsKKworICAgICAgICAg
ICAgaWYgKGggPT0gbnVsbCgpKQorICAgICAgICAgICAgICAvLyBUcmVlIGlzIGVtcHR5LgorICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChzdCAmIExFU1MpCisgICAgICAg
ICAgICAgIC8vIEtleSBjYW4gYmUgZ3JlYXRlciB0aGFuIGtleSBvZiBzdGFydGluZyBub2RlLgor
ICAgICAgICAgICAgICB0YXJnZXRfY21wID0gMTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0ICYg
R1JFQVRFUikKKyAgICAgICAgICAgICAgLy8gS2V5IGNhbiBiZSBsZXNzIHRoYW4ga2V5IG9mIHN0
YXJ0aW5nIG5vZGUuCisgICAgICAgICAgICAgIHRhcmdldF9jbXAgPSAtMTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgLy8gS2V5IG11c3QgYmUgc2FtZSBhcyBrZXkgb2Ygc3RhcnRp
bmcgbm9kZS4KKyAgICAgICAgICAgICAgdGFyZ2V0X2NtcCA9IDA7CisKKyAgICAgICAgICAgIGZv
ciAoOzspIHsKKyAgICAgICAgICAgICAgICBjbXAgPSBjbXBfa19uKGssIGgpOworICAgICAgICAg
ICAgICAgIGlmIChjbXAgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3QgJiBFUVVB
TCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gRXF1YWwgbm9kZSB3YXMgc291Z2h0IGFu
ZCBmb3VuZCBhcyBzdGFydGluZyBub2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGgg
PSBkOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgY21wID0gLXRhcmdldF9jbXA7CisgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmICh0YXJnZXRfY21wICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCEoKGNtcCBeIHRhcmdldF9jbXApICYgTUFTS19ISUdIX0JJVCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNtcCBhbmQgdGFyZ2V0X2NtcCBhcmUgYm90aCBuZWdhdGl2ZSBvciBib3Ro
IHBvc2l0aXZlLgorICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGggPSBkOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGggPSBjbXAg
PCAwID8gZ2V0X2x0KGgpIDogZ2V0X2d0KGgpOworICAgICAgICAgICAgICAgIGlmIChoID09IG51
bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgYnJhbmNo
W2RdID0gY21wID4gMDsKKyAgICAgICAgICAgICAgICBwYXRoX2hbZCsrXSA9IGg7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHN0YXJ0X2l0ZXJfbGVhc3QoQVZMVHJl
ZSAmdHJlZSkKKyAgICAgICAgeworICAgICAgICAgICAgdHJlZV8gPSAmdHJlZTsKKworICAgICAg
ICAgICAgaGFuZGxlIGggPSB0cmVlXy0+YWJzLnJvb3Q7CisKKyAgICAgICAgICAgIGRlcHRoID0g
fjBVOworCisgICAgICAgICAgICBicmFuY2gucmVzZXQoKTsKKworICAgICAgICAgICAgd2hpbGUg
KGggIT0gbnVsbCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRlcHRoICE9IH4wVSkKKyAgICAg
ICAgICAgICAgICAgICAgcGF0aF9oW2RlcHRoXSA9IGg7CisgICAgICAgICAgICAgICAgZGVwdGgr
KzsKKyAgICAgICAgICAgICAgICBoID0gZ2V0X2x0KGgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgdm9pZCBzdGFydF9pdGVyX2dyZWF0ZXN0KEFWTFRyZWUgJnRyZWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHRyZWVfID0gJnRyZWU7CisKKyAgICAgICAgICAgIGhhbmRs
ZSBoID0gdHJlZV8tPmFicy5yb290OworCisgICAgICAgICAgICBkZXB0aCA9IH4wVTsKKworICAg
ICAgICAgICAgYnJhbmNoLnNldCgpOworCisgICAgICAgICAgICB3aGlsZSAoaCAhPSBudWxsKCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoZGVwdGggIT0gfjBVKQorICAgICAgICAgICAgICAgICAg
ICBwYXRoX2hbZGVwdGhdID0gaDsKKyAgICAgICAgICAgICAgICBkZXB0aCsrOworICAgICAgICAg
ICAgICAgIGggPSBnZXRfZ3QoaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBoYW5kbGUgb3BlcmF0b3IqKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGRlcHRoID09
IH4wVSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbCgpOworCisgICAgICAgICAgICByZXR1
cm4gZGVwdGggPT0gMCA/IHRyZWVfLT5hYnMucm9vdCA6IHBhdGhfaFtkZXB0aCAtIDFdOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBvcGVyYXRvcisrKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGRlcHRoICE9IH4wVSkgeworICAgICAgICAgICAgICAgIGhhbmRsZSBoID0gZ2V0X2d0
KCoqdGhpcyk7CisgICAgICAgICAgICAgICAgaWYgKGggPT0gbnVsbCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXB0aCA9PSAwKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGggPSB+MFU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICBkZXB0aC0tOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChi
cmFuY2hbZGVwdGhdKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICBicmFuY2hbZGVwdGhdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcGF0aF9oW2Rl
cHRoKytdID0gaDsKKyAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgaCA9IGdldF9sdChoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICho
ID09IG51bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyYW5jaFtkZXB0aF0gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGhfaFtkZXB0aCsrXSA9IGg7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG9w
ZXJhdG9yLS0oKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZGVwdGggIT0gfjBVKSB7Cisg
ICAgICAgICAgICAgICAgaGFuZGxlIGggPSBnZXRfbHQoKip0aGlzKTsKKyAgICAgICAgICAgICAg
ICBpZiAoaCA9PSBudWxsKCkpCisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChkZXB0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGVwdGggPSB+MFU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBkZXB0aC0tOwor
ICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICghYnJhbmNoW2RlcHRoXSk7CisgICAgICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJyYW5jaFtkZXB0aF0gPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgcGF0aF9oW2RlcHRoKytdID0gaDsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGdldF9ndChoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID09IG51bGwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaFtkZXB0
aF0gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9oW2RlcHRoKytdID0gaDsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHZvaWQgb3BlcmF0b3IrKyhpbnQpIHsgKysoKnRoaXMpOyB9
CisgICAgICAgIHZvaWQgb3BlcmF0b3ItLShpbnQpIHsgLS0oKnRoaXMpOyB9CisKKyAgICBwcm90
ZWN0ZWQ6CisKKyAgICAgICAgLy8gVHJlZSBiZWluZyBpdGVyYXRlZCBvdmVyLgorICAgICAgICBB
VkxUcmVlICp0cmVlXzsKKworICAgICAgICAvLyBSZWNvcmRzIGEgcGF0aCBpbnRvIHRoZSB0cmVl
LiAgSWYgYnJhbmNoW25dIGlzIHRydWUsIGluZGljYXRlcworICAgICAgICAvLyB0YWtlIGdyZWF0
ZXIgYnJhbmNoIGZyb20gdGhlIG50aCBub2RlIGluIHRoZSBwYXRoLCBvdGhlcndpc2UKKyAgICAg
ICAgLy8gdGFrZSB0aGUgbGVzcyBicmFuY2guICBicmFuY2hbMF0gZ2l2ZXMgYnJhbmNoIGZyb20g
cm9vdCwgYW5kCisgICAgICAgIC8vIHNvIG9uLgorICAgICAgICBCU2V0IGJyYW5jaDsKKworICAg
ICAgICAvLyBaZXJvLWJhc2VkIGRlcHRoIG9mIHBhdGggaW50byB0cmVlLgorICAgICAgICB1bnNp
Z25lZCBkZXB0aDsKKworICAgICAgICAvLyBIYW5kbGVzIG9mIG5vZGVzIGluIHBhdGggZnJvbSBy
b290IHRvIGN1cnJlbnQgbm9kZSAocmV0dXJuZWQgYnkgKikuCisgICAgICAgIGhhbmRsZSBwYXRo
X2hbbWF4RGVwdGggLSAxXTsKKworICAgICAgICBpbnQgY21wX2tfbihrZXkgaywgaGFuZGxlIGgp
IHsgcmV0dXJuIHRyZWVfLT5hYnMuY29tcGFyZV9rZXlfbm9kZShrLCBoKTsgfQorICAgICAgICBp
bnQgY21wX25fbihoYW5kbGUgaDEsIGhhbmRsZSBoMikgeyByZXR1cm4gdHJlZV8tPmFicy5jb21w
YXJlX25vZGVfbm9kZShoMSwgaDIpOyB9CisgICAgICAgIGhhbmRsZSBnZXRfbHQoaGFuZGxlIGgp
IHsgcmV0dXJuIHRyZWVfLT5hYnMuZ2V0X2xlc3MoaCk7IH0KKyAgICAgICAgaGFuZGxlIGdldF9n
dChoYW5kbGUgaCkgeyByZXR1cm4gdHJlZV8tPmFicy5nZXRfZ3JlYXRlcihoKTsgfQorICAgICAg
ICBoYW5kbGUgbnVsbCgpIHsgcmV0dXJuIHRyZWVfLT5hYnMubnVsbCgpOyB9CisgICAgfTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIGZ3ZF9pdGVyPgorICAgIGJvb2wgYnVpbGQoZndkX2l0ZXIg
cCwgc2l6ZSBudW1fbm9kZXMpCisgICAgeworICAgICAgICBpZiAobnVtX25vZGVzID09IDApIHsK
KyAgICAgICAgICAgIGFicy5yb290ID0gbnVsbCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKworICAgICAgICAvLyBHaXZlcyBwYXRoIHRvIHN1YnRyZWUgYmVpbmcgYnVp
bHQuICBJZiBicmFuY2hbTl0gaXMgZmFsc2UsIGJyYW5jaAorICAgICAgICAvLyBsZXNzIGZyb20g
dGhlIG5vZGUgYXQgZGVwdGggTiwgaWYgdHJ1ZSBicmFuY2ggZ3JlYXRlci4KKyAgICAgICAgQlNl
dCBicmFuY2g7CisKKyAgICAgICAgLy8gSWYgcmVtW05dIGlzIHRydWUsIHRoZW4gZm9yIHRoZSBj
dXJyZW50IHN1YnRyZWUgYXQgZGVwdGggTiwgaXQncworICAgICAgICAvLyBncmVhdGVyIHN1YnRy
ZWUgaGFzIG9uZSBtb3JlIG5vZGUgdGhhbiBpdCdzIGxlc3Mgc3VidHJlZS4KKyAgICAgICAgQlNl
dCByZW07CisKKyAgICAgICAgICAgIC8vIERlcHRoIG9mIHJvb3Qgbm9kZSBvZiBjdXJyZW50IHN1
YnRyZWUuCisgICAgICAgIHVuc2lnbmVkIGRlcHRoID0gMDsKKworICAgICAgICAgICAgLy8gTnVt
YmVyIG9mIG5vZGVzIGluIGN1cnJlbnQgc3VidHJlZS4KKyAgICAgICAgc2l6ZSBudW1fc3ViID0g
bnVtX25vZGVzOworCisgICAgICAgIC8vIFRoZSBhbGdvcml0aG0gcmVsaWVzIG9uIGEgc3RhY2sg
b2Ygbm9kZXMgd2hvc2UgbGVzcyBzdWJ0cmVlIGhhcworICAgICAgICAvLyBiZWVuIGJ1aWx0LCBi
dXQgd2hvc2UgcmlnaHQgc3VidHJlZSBoYXMgbm90IHlldCBiZWVuIGJ1aWx0LiAgVGhlCisgICAg
ICAgIC8vIHN0YWNrIGlzIGltcGxlbWVudGVkIGFzIGxpbmtlZCBsaXN0LiAgVGhlIG5vZGVzIGFy
ZSBsaW5rZWQKKyAgICAgICAgLy8gdG9nZXRoZXIgYnkgaGF2aW5nIHRoZSAiZ3JlYXRlciIgaGFu
ZGxlIG9mIGEgbm9kZSBzZXQgdG8gdGhlCisgICAgICAgIC8vIG5leHQgbm9kZSBpbiB0aGUgbGlz
dC4gICJsZXNzX3BhcmVudCIgaXMgdGhlIGhhbmRsZSBvZiB0aGUgZmlyc3QKKyAgICAgICAgLy8g
bm9kZSBpbiB0aGUgbGlzdC4KKyAgICAgICAgaGFuZGxlIGxlc3NfcGFyZW50ID0gbnVsbCgpOwor
CisgICAgICAgIC8vIGggaXMgcm9vdCBvZiBjdXJyZW50IHN1YnRyZWUsIGNoaWxkIGlzIG9uZSBv
ZiBpdHMgY2hpbGRyZW4uCisgICAgICAgIGhhbmRsZSBoLCBjaGlsZDsKKworICAgICAgICBmb3Ig
KDs7KSB7CisgICAgICAgICAgICB3aGlsZSAobnVtX3N1YiA+IDIpIHsKKyAgICAgICAgICAgICAg
ICAvLyBTdWJ0cmFjdCBvbmUgZm9yIHJvb3Qgb2Ygc3VidHJlZS4KKyAgICAgICAgICAgICAgICBu
dW1fc3ViLS07CisgICAgICAgICAgICAgICAgcmVtW2RlcHRoXSA9ICEhKG51bV9zdWIgJiAxKTsK
KyAgICAgICAgICAgICAgICBicmFuY2hbZGVwdGgrK10gPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBudW1fc3ViID4+PSAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobnVtX3N1
YiA9PSAyKSB7CisgICAgICAgICAgICAgICAgLy8gQnVpbGQgYSBzdWJ0cmVlIHdpdGggdHdvIG5v
ZGVzLCBzbGFudGluZyB0byBncmVhdGVyLgorICAgICAgICAgICAgICAgIC8vIEkgYXJiaXRyYXJp
bHkgY2hvc2UgdG8gYWx3YXlzIGhhdmUgdGhlIGV4dHJhIG5vZGUgaW4gdGhlCisgICAgICAgICAg
ICAgICAgLy8gZ3JlYXRlciBzdWJ0cmVlIHdoZW4gdGhlcmUgaXMgYW4gb2RkIG51bWJlciBvZiBu
b2RlcyB0bworICAgICAgICAgICAgICAgIC8vIHNwbGl0IGJldHdlZW4gdGhlIHR3byBzdWJ0cmVl
cy4KKworICAgICAgICAgICAgICAgIGggPSAqcDsKKyAgICAgICAgICAgICAgICBwKys7CisgICAg
ICAgICAgICAgICAgY2hpbGQgPSAqcDsKKyAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAg
ICAgICAgc2V0X2x0KGNoaWxkLCBudWxsKCkpOworICAgICAgICAgICAgICAgIHNldF9ndChjaGls
ZCwgbnVsbCgpKTsKKyAgICAgICAgICAgICAgICBzZXRfYmYoY2hpbGQsIDApOworICAgICAgICAg
ICAgICAgIHNldF9ndChoLCBjaGlsZCk7CisgICAgICAgICAgICAgICAgc2V0X2x0KGgsIG51bGwo
KSk7CisgICAgICAgICAgICAgICAgc2V0X2JmKGgsIDEpOworICAgICAgICAgICAgfSBlbHNlIHsg
Ly8gbnVtX3N1YiA9PSAxCisgICAgICAgICAgICAgICAgLy8gQnVpbGQgYSBzdWJ0cmVlIHdpdGgg
b25lIG5vZGUuCisKKyAgICAgICAgICAgICAgICBoID0gKnA7CisgICAgICAgICAgICAgICAgcCsr
OworICAgICAgICAgICAgICAgIHNldF9sdChoLCBudWxsKCkpOworICAgICAgICAgICAgICAgIHNl
dF9ndChoLCBudWxsKCkpOworICAgICAgICAgICAgICAgIHNldF9iZihoLCAwKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgd2hpbGUgKGRlcHRoKSB7CisgICAgICAgICAgICAgICAgZGVw
dGgtLTsKKyAgICAgICAgICAgICAgICBpZiAoIWJyYW5jaFtkZXB0aF0pCisgICAgICAgICAgICAg
ICAgICAgIC8vIFdlJ3ZlIGNvbXBsZXRlZCBhIGxlc3Mgc3VidHJlZS4KKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBXZSd2ZSBjb21wbGV0ZWQgYSBncmVh
dGVyIHN1YnRyZWUsIHNvIGF0dGFjaCBpdCB0bworICAgICAgICAgICAgICAgIC8vIGl0cyBwYXJl
bnQgKHRoYXQgaXMgbGVzcyB0aGFuIGl0KS4gIFdlIHBvcCB0aGUgcGFyZW50CisgICAgICAgICAg
ICAgICAgLy8gb2ZmIHRoZSBzdGFjayBvZiBsZXNzIHBhcmVudHMuCisgICAgICAgICAgICAgICAg
Y2hpbGQgPSBoOworICAgICAgICAgICAgICAgIGggPSBsZXNzX3BhcmVudDsKKyAgICAgICAgICAg
ICAgICBsZXNzX3BhcmVudCA9IGdldF9ndChoKTsKKyAgICAgICAgICAgICAgICBzZXRfZ3QoaCwg
Y2hpbGQpOworICAgICAgICAgICAgICAgIC8vIG51bV9zdWIgPSAyICogKG51bV9zdWIgLSByZW1b
ZGVwdGhdKSArIHJlbVtkZXB0aF0gKyAxCisgICAgICAgICAgICAgICAgbnVtX3N1YiA8PD0gMTsK
KyAgICAgICAgICAgICAgICBudW1fc3ViICs9IDEgLSByZW1bZGVwdGhdOworICAgICAgICAgICAg
ICAgIGlmIChudW1fc3ViICYgKG51bV9zdWIgLSAxKSkKKyAgICAgICAgICAgICAgICAgICAgLy8g
bnVtX3N1YiBpcyBub3QgYSBwb3dlciBvZiAyCisgICAgICAgICAgICAgICAgICAgIHNldF9iZiho
LCAwKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIC8vIG51bV9z
dWIgaXMgYSBwb3dlciBvZiAyCisgICAgICAgICAgICAgICAgICAgIHNldF9iZihoLCAxKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG51bV9zdWIgPT0gbnVtX25vZGVzKQorICAg
ICAgICAgICAgICAgIC8vIFdlJ3ZlIGNvbXBsZXRlZCB0aGUgZnVsbCB0cmVlLgorICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAvLyBUaGUgc3VidHJlZSB3ZSd2ZSBjb21wbGV0
ZWQgaXMgdGhlIGxlc3Mgc3VidHJlZSBvZiB0aGUKKyAgICAgICAgICAgIC8vIG5leHQgbm9kZSBp
biB0aGUgc2VxdWVuY2UuCisKKyAgICAgICAgICAgIGNoaWxkID0gaDsKKyAgICAgICAgICAgIGgg
PSAqcDsKKyAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIHNldF9sdChoLCBjaGlsZCk7CisK
KyAgICAgICAgICAgIC8vIFB1dCBoIGludG8gc3RhY2sgb2YgbGVzcyBwYXJlbnRzLgorICAgICAg
ICAgICAgc2V0X2d0KGgsIGxlc3NfcGFyZW50KTsKKyAgICAgICAgICAgIGxlc3NfcGFyZW50ID0g
aDsKKworICAgICAgICAgICAgLy8gUHJvY2VlZCB0byBjcmVhdGluZyBncmVhdGVyIHRoYW4gc3Vi
dHJlZSBvZiBoLgorICAgICAgICAgICAgYnJhbmNoW2RlcHRoXSA9IHRydWU7CisgICAgICAgICAg
ICBudW1fc3ViICs9IHJlbVtkZXB0aCsrXTsKKworICAgICAgICB9IC8vIGVuZCBmb3IgKDs7KQor
CisgICAgICAgIGFicy5yb290ID0gaDsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKworICAgIGZyaWVuZCBjbGFzcyBJdGVyYXRvcjsKKworICAgIC8vIENyZWF0
ZSBhIGNsYXNzIHdob3NlIHNvbGUgcHVycG9zZSBpcyB0byB0YWtlIGFkdmFudGFnZSBvZgorICAg
IC8vIHRoZSAiZW1wdHkgbWVtYmVyIiBvcHRpbWl6YXRpb24uCisgICAgc3RydWN0IGFic19wbHVz
X3Jvb3QgOiBwdWJsaWMgQWJzdHJhY3RvciB7CisgICAgICAgIC8vIFRoZSBoYW5kbGUgb2YgdGhl
IHJvb3QgZWxlbWVudCBpbiB0aGUgQVZMIHRyZWUuCisgICAgICAgIGhhbmRsZSByb290OworICAg
IH07CisKKyAgICBhYnNfcGx1c19yb290IGFiczsKKworCisgICAgaGFuZGxlIGdldF9sdChoYW5k
bGUgaCkgeyByZXR1cm4gYWJzLmdldF9sZXNzKGgpOyB9CisgICAgdm9pZCBzZXRfbHQoaGFuZGxl
IGgsIGhhbmRsZSBsaCkgeyBhYnMuc2V0X2xlc3MoaCwgbGgpOyB9CisKKyAgICBoYW5kbGUgZ2V0
X2d0KGhhbmRsZSBoKSB7IHJldHVybiBhYnMuZ2V0X2dyZWF0ZXIoaCk7IH0KKyAgICB2b2lkIHNl
dF9ndChoYW5kbGUgaCwgaGFuZGxlIGdoKSB7IGFicy5zZXRfZ3JlYXRlcihoLCBnaCk7IH0KKwor
ICAgIGludCBnZXRfYmYoaGFuZGxlIGgpIHsgcmV0dXJuIGFicy5nZXRfYmFsYW5jZV9mYWN0b3Io
aCk7IH0KKyAgICB2b2lkIHNldF9iZihoYW5kbGUgaCwgaW50IGJmKSB7IGFicy5zZXRfYmFsYW5j
ZV9mYWN0b3IoaCwgYmYpOyB9CisKKyAgICBpbnQgY21wX2tfbihrZXkgaywgaGFuZGxlIGgpIHsg
cmV0dXJuIGFicy5jb21wYXJlX2tleV9ub2RlKGssIGgpOyB9CisgICAgaW50IGNtcF9uX24oaGFu
ZGxlIGgxLCBoYW5kbGUgaDIpIHsgcmV0dXJuIGFicy5jb21wYXJlX25vZGVfbm9kZShoMSwgaDIp
OyB9CisKKyAgICBoYW5kbGUgbnVsbCgpIHsgcmV0dXJuIGFicy5udWxsKCk7IH0KKworcHJpdmF0
ZToKKworICAgIC8vIEJhbGFuY2VzIHN1YnRyZWUsIHJldHVybnMgaGFuZGxlIG9mIHJvb3Qgbm9k
ZSBvZiBzdWJ0cmVlCisgICAgLy8gYWZ0ZXIgYmFsYW5jaW5nLgorICAgIGhhbmRsZSBiYWxhbmNl
KGhhbmRsZSBiYWxfaCkKKyAgICB7CisgICAgICAgIGhhbmRsZSBkZWVwX2g7CisKKyAgICAgICAg
Ly8gRWl0aGVyIHRoZSAiZ3JlYXRlciB0aGFuIiBvciB0aGUgImxlc3MgdGhhbiIgc3VidHJlZSBv
ZgorICAgICAgICAvLyB0aGlzIG5vZGUgaGFzIHRvIGJlIDIgbGV2ZWxzIGRlZXBlciAob3IgZWxz
ZSBpdCB3b3VsZG4ndAorICAgICAgICAvLyBuZWVkIGJhbGFuY2luZykuCisKKyAgICAgICAgaWYg
KGdldF9iZihiYWxfaCkgPiAwKSB7CisgICAgICAgICAgICAvLyAiR3JlYXRlciB0aGFuIiBzdWJ0
cmVlIGlzIGRlZXBlci4KKworICAgICAgICAgICAgZGVlcF9oID0gZ2V0X2d0KGJhbF9oKTsKKwor
ICAgICAgICAgICAgaWYgKGdldF9iZihkZWVwX2gpIDwgMCkgeworICAgICAgICAgICAgICAgIGhh
bmRsZSBvbGRfaCA9IGJhbF9oOworICAgICAgICAgICAgICAgIGJhbF9oID0gZ2V0X2x0KGRlZXBf
aCk7CisKKyAgICAgICAgICAgICAgICBzZXRfZ3Qob2xkX2gsIGdldF9sdChiYWxfaCkpOworICAg
ICAgICAgICAgICAgIHNldF9sdChkZWVwX2gsIGdldF9ndChiYWxfaCkpOworICAgICAgICAgICAg
ICAgIHNldF9sdChiYWxfaCwgb2xkX2gpOworICAgICAgICAgICAgICAgIHNldF9ndChiYWxfaCwg
ZGVlcF9oKTsKKworICAgICAgICAgICAgICAgIGludCBiZiA9IGdldF9iZihiYWxfaCk7CisgICAg
ICAgICAgICAgICAgaWYgKGJmICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJmID4g
MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2JmKG9sZF9oLCAtMSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBzZXRfYmYoZGVlcF9oLCAwKTsKKyAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldF9iZihkZWVwX2gsIDEpOworICAg
ICAgICAgICAgICAgICAgICAgICAgc2V0X2JmKG9sZF9oLCAwKTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBzZXRfYmYoYmFsX2gsIDApOworICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNldF9iZihvbGRfaCwgMCk7CisgICAg
ICAgICAgICAgICAgICAgIHNldF9iZihkZWVwX2gsIDApOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2V0X2d0KGJhbF9oLCBnZXRfbHQo
ZGVlcF9oKSk7CisgICAgICAgICAgICAgICAgc2V0X2x0KGRlZXBfaCwgYmFsX2gpOworICAgICAg
ICAgICAgICAgIGlmIChnZXRfYmYoZGVlcF9oKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAg
IHNldF9iZihkZWVwX2gsIC0xKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0X2JmKGJhbF9oLCAx
KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzZXRfYmYo
ZGVlcF9oLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0X2JmKGJhbF9oLCAwKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYmFsX2ggPSBkZWVwX2g7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyAiTGVzcyB0aGFuIiBzdWJ0cmVl
IGlzIGRlZXBlci4KKworICAgICAgICAgICAgZGVlcF9oID0gZ2V0X2x0KGJhbF9oKTsKKworICAg
ICAgICAgICAgaWYgKGdldF9iZihkZWVwX2gpID4gMCkgeworICAgICAgICAgICAgICAgIGhhbmRs
ZSBvbGRfaCA9IGJhbF9oOworICAgICAgICAgICAgICAgIGJhbF9oID0gZ2V0X2d0KGRlZXBfaCk7
CisgICAgICAgICAgICAgICAgc2V0X2x0KG9sZF9oLCBnZXRfZ3QoYmFsX2gpKTsKKyAgICAgICAg
ICAgICAgICBzZXRfZ3QoZGVlcF9oLCBnZXRfbHQoYmFsX2gpKTsKKyAgICAgICAgICAgICAgICBz
ZXRfZ3QoYmFsX2gsIG9sZF9oKTsKKyAgICAgICAgICAgICAgICBzZXRfbHQoYmFsX2gsIGRlZXBf
aCk7CisKKyAgICAgICAgICAgICAgICBpbnQgYmYgPSBnZXRfYmYoYmFsX2gpOworICAgICAgICAg
ICAgICAgIGlmIChiZiAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChiZiA8IDApIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHNldF9iZihvbGRfaCwgMSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBzZXRfYmYoZGVlcF9oLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldF9iZihkZWVwX2gsIC0xKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNldF9iZihvbGRfaCwgMCk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgc2V0X2JmKGJhbF9oLCAwKTsKKyAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzZXRfYmYob2xkX2gsIDApOworICAgICAgICAg
ICAgICAgICAgICBzZXRfYmYoZGVlcF9oLCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNldF9sdChiYWxfaCwgZ2V0X2d0KGRlZXBf
aCkpOworICAgICAgICAgICAgICAgIHNldF9ndChkZWVwX2gsIGJhbF9oKTsKKyAgICAgICAgICAg
ICAgICBpZiAoZ2V0X2JmKGRlZXBfaCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBzZXRf
YmYoZGVlcF9oLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0X2JmKGJhbF9oLCAtMSk7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0X2JmKGRlZXBf
aCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHNldF9iZihiYWxfaCwgMCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJhbF9oID0gZGVlcF9oOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJhbF9oOworICAgIH0KKworfTsKKwordGVtcGxh
dGUgPGNsYXNzIEFic3RyYWN0b3IsIHVuc2lnbmVkIG1heERlcHRoLCBjbGFzcyBCU2V0PgoraW5s
aW5lIHR5cGVuYW1lIEFWTFRyZWU8QWJzdHJhY3RvciwgbWF4RGVwdGgsIEJTZXQ+OjpoYW5kbGUK
K0FWTFRyZWU8QWJzdHJhY3RvciwgbWF4RGVwdGgsIEJTZXQ+OjppbnNlcnQoaGFuZGxlIGgpCit7
CisgICAgc2V0X2x0KGgsIG51bGwoKSk7CisgICAgc2V0X2d0KGgsIG51bGwoKSk7CisgICAgc2V0
X2JmKGgsIDApOworCisgICAgaWYgKGFicy5yb290ID09IG51bGwoKSkKKyAgICAgICAgYWJzLnJv
b3QgPSBoOworICAgIGVsc2UgeworICAgICAgICAvLyBMYXN0IHVuYmFsYW5jZWQgbm9kZSBlbmNv
dW50ZXJlZCBpbiBzZWFyY2ggZm9yIGluc2VydGlvbiBwb2ludC4KKyAgICAgICAgaGFuZGxlIHVu
YmFsID0gbnVsbCgpOworICAgICAgICAvLyBQYXJlbnQgb2YgbGFzdCB1bmJhbGFuY2VkIG5vZGUu
CisgICAgICAgIGhhbmRsZSBwYXJlbnRfdW5iYWwgPSBudWxsKCk7CisgICAgICAgIC8vIEJhbGFu
Y2UgZmFjdG9yIG9mIGxhc3QgdW5iYWxhbmNlZCBub2RlLgorICAgICAgICBpbnQgdW5iYWxfYmY7
CisKKyAgICAgICAgLy8gWmVyby1iYXNlZCBkZXB0aCBpbiB0cmVlLgorICAgICAgICB1bnNpZ25l
ZCBkZXB0aCA9IDAsIHVuYmFsX2RlcHRoID0gMDsKKworICAgICAgICAvLyBSZWNvcmRzIGEgcGF0
aCBpbnRvIHRoZSB0cmVlLiAgSWYgYnJhbmNoW25dIGlzIHRydWUsIGluZGljYXRlcworICAgICAg
ICAvLyB0YWtlIGdyZWF0ZXIgYnJhbmNoIGZyb20gdGhlIG50aCBub2RlIGluIHRoZSBwYXRoLCBv
dGhlcndpc2UKKyAgICAgICAgLy8gdGFrZSB0aGUgbGVzcyBicmFuY2guICBicmFuY2hbMF0gZ2l2
ZXMgYnJhbmNoIGZyb20gcm9vdCwgYW5kCisgICAgICAgIC8vIHNvIG9uLgorICAgICAgICBCU2V0
IGJyYW5jaDsKKworICAgICAgICBoYW5kbGUgaGggPSBhYnMucm9vdDsKKyAgICAgICAgaGFuZGxl
IHBhcmVudCA9IG51bGwoKTsKKyAgICAgICAgaW50IGNtcDsKKworICAgICAgICBkbyB7CisgICAg
ICAgICAgICBpZiAoZ2V0X2JmKGhoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgdW5iYWwgPSBo
aDsKKyAgICAgICAgICAgICAgICBwYXJlbnRfdW5iYWwgPSBwYXJlbnQ7CisgICAgICAgICAgICAg
ICAgdW5iYWxfZGVwdGggPSBkZXB0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNtcCA9
IGNtcF9uX24oaCwgaGgpOworICAgICAgICAgICAgaWYgKGNtcCA9PSAwKQorICAgICAgICAgICAg
ICAgIC8vIER1cGxpY2F0ZSBrZXkuCisgICAgICAgICAgICAgICAgcmV0dXJuIGhoOworICAgICAg
ICAgICAgcGFyZW50ID0gaGg7CisgICAgICAgICAgICBoaCA9IGNtcCA8IDAgPyBnZXRfbHQoaGgp
IDogZ2V0X2d0KGhoKTsKKyAgICAgICAgICAgIGJyYW5jaFtkZXB0aCsrXSA9IGNtcCA+IDA7Cisg
ICAgICAgIH0gd2hpbGUgKGhoICE9IG51bGwoKSk7CisKKyAgICAgICAgLy8gIEFkZCBub2RlIHRv
IGluc2VydCBhcyBsZWFmIG9mIHRyZWUuCisgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAg
ICAgc2V0X2x0KHBhcmVudCwgaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldF9ndChw
YXJlbnQsIGgpOworCisgICAgICAgIGRlcHRoID0gdW5iYWxfZGVwdGg7CisKKyAgICAgICAgaWYg
KHVuYmFsID09IG51bGwoKSkKKyAgICAgICAgICAgIGhoID0gYWJzLnJvb3Q7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgY21wID0gYnJhbmNoW2RlcHRoKytdID8gMSA6IC0xOworICAgICAg
ICAgICAgdW5iYWxfYmYgPSBnZXRfYmYodW5iYWwpOworICAgICAgICAgICAgaWYgKGNtcCA8IDAp
CisgICAgICAgICAgICAgICAgdW5iYWxfYmYtLTsKKyAgICAgICAgICAgIGVsc2UgIC8vIGNtcCA+
IDAKKyAgICAgICAgICAgICAgICB1bmJhbF9iZisrOworICAgICAgICAgICAgaGggPSBjbXAgPCAw
ID8gZ2V0X2x0KHVuYmFsKSA6IGdldF9ndCh1bmJhbCk7CisgICAgICAgICAgICBpZiAoKHVuYmFs
X2JmICE9IC0yKSAmJiAodW5iYWxfYmYgIT0gMikpIHsKKyAgICAgICAgICAgICAgICAvLyBObyBy
ZWJhbGFuY2luZyBvZiB0cmVlIGlzIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgICAgICBzZXRfYmYo
dW5iYWwsIHVuYmFsX2JmKTsKKyAgICAgICAgICAgICAgICB1bmJhbCA9IG51bGwoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChoaCAhPSBudWxsKCkpCisgICAgICAg
ICAgICB3aGlsZSAoaCAhPSBoaCkgeworICAgICAgICAgICAgICAgIGNtcCA9IGJyYW5jaFtkZXB0
aCsrXSA/IDEgOiAtMTsKKyAgICAgICAgICAgICAgICBpZiAoY21wIDwgMCkgeworICAgICAgICAg
ICAgICAgICAgICBzZXRfYmYoaGgsIC0xKTsKKyAgICAgICAgICAgICAgICAgICAgaGggPSBnZXRf
bHQoaGgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIGNtcCA+IDAKKyAgICAgICAgICAg
ICAgICAgICAgc2V0X2JmKGhoLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgaGggPSBnZXRfZ3Qo
aGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICBpZiAodW5i
YWwgIT0gbnVsbCgpKSB7CisgICAgICAgICAgICB1bmJhbCA9IGJhbGFuY2UodW5iYWwpOworICAg
ICAgICAgICAgaWYgKHBhcmVudF91bmJhbCA9PSBudWxsKCkpCisgICAgICAgICAgICAgICAgYWJz
LnJvb3QgPSB1bmJhbDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGRlcHRo
ID0gdW5iYWxfZGVwdGggLSAxOworICAgICAgICAgICAgICAgIGNtcCA9IGJyYW5jaFtkZXB0aF0g
PyAxIDogLTE7CisgICAgICAgICAgICAgICAgaWYgKGNtcCA8IDApCisgICAgICAgICAgICAgICAg
ICAgIHNldF9sdChwYXJlbnRfdW5iYWwsIHVuYmFsKTsKKyAgICAgICAgICAgICAgICBlbHNlICAv
LyBjbXAgPiAwCisgICAgICAgICAgICAgICAgICAgIHNldF9ndChwYXJlbnRfdW5iYWwsIHVuYmFs
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBoOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgQWJzdHJhY3RvciwgdW5zaWduZWQgbWF4RGVwdGgsIGNsYXNzIEJT
ZXQ+CitpbmxpbmUgdHlwZW5hbWUgQVZMVHJlZTxBYnN0cmFjdG9yLCBtYXhEZXB0aCwgQlNldD46
OmhhbmRsZQorQVZMVHJlZTxBYnN0cmFjdG9yLCBtYXhEZXB0aCwgQlNldD46OnNlYXJjaChrZXkg
aywgdHlwZW5hbWUgQVZMVHJlZTxBYnN0cmFjdG9yLCBtYXhEZXB0aCwgQlNldD46OlNlYXJjaFR5
cGUgc3QpCit7CisgICAgY29uc3QgaW50IE1BU0tfSElHSF9CSVQgPSAoaW50KSB+ICgofiAodW5z
aWduZWQpIDApID4+IDEpOworCisgICAgaW50IGNtcCwgdGFyZ2V0X2NtcDsKKyAgICBoYW5kbGUg
bWF0Y2hfaCA9IG51bGwoKTsKKyAgICBoYW5kbGUgaCA9IGFicy5yb290OworCisgICAgaWYgKHN0
ICYgTEVTUykKKyAgICAgICAgdGFyZ2V0X2NtcCA9IDE7CisgICAgZWxzZSBpZiAoc3QgJiBHUkVB
VEVSKQorICAgICAgICB0YXJnZXRfY21wID0gLTE7CisgICAgZWxzZQorICAgICAgICB0YXJnZXRf
Y21wID0gMDsKKworICAgIHdoaWxlIChoICE9IG51bGwoKSkgeworICAgICAgICBjbXAgPSBjbXBf
a19uKGssIGgpOworICAgICAgICBpZiAoY21wID09IDApIHsKKyAgICAgICAgICAgIGlmIChzdCAm
IEVRVUFMKSB7CisgICAgICAgICAgICAgICAgbWF0Y2hfaCA9IGg7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjbXAgPSAtdGFyZ2V0X2NtcDsKKyAg
ICAgICAgfSBlbHNlIGlmICh0YXJnZXRfY21wICE9IDApCisgICAgICAgICAgICBpZiAoISgoY21w
IF4gdGFyZ2V0X2NtcCkgJiBNQVNLX0hJR0hfQklUKSkKKyAgICAgICAgICAgICAgICAvLyBjbXAg
YW5kIHRhcmdldF9jbXAgYXJlIGJvdGggcG9zaXRpdmUgb3IgYm90aCBuZWdhdGl2ZS4KKyAgICAg
ICAgICAgICAgICBtYXRjaF9oID0gaDsKKyAgICAgICAgaCA9IGNtcCA8IDAgPyBnZXRfbHQoaCkg
OiBnZXRfZ3QoaCk7CisgICAgfQorCisgICAgcmV0dXJuIG1hdGNoX2g7Cit9CisKK3RlbXBsYXRl
IDxjbGFzcyBBYnN0cmFjdG9yLCB1bnNpZ25lZCBtYXhEZXB0aCwgY2xhc3MgQlNldD4KK2lubGlu
ZSB0eXBlbmFtZSBBVkxUcmVlPEFic3RyYWN0b3IsIG1heERlcHRoLCBCU2V0Pjo6aGFuZGxlCitB
VkxUcmVlPEFic3RyYWN0b3IsIG1heERlcHRoLCBCU2V0Pjo6c2VhcmNoX2xlYXN0KCkKK3sKKyAg
ICBoYW5kbGUgaCA9IGFicy5yb290LCBwYXJlbnQgPSBudWxsKCk7CisKKyAgICB3aGlsZSAoaCAh
PSBudWxsKCkpIHsKKyAgICAgICAgcGFyZW50ID0gaDsKKyAgICAgICAgaCA9IGdldF9sdChoKTsK
KyAgICB9CisKKyAgICByZXR1cm4gcGFyZW50OworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQWJzdHJh
Y3RvciwgdW5zaWduZWQgbWF4RGVwdGgsIGNsYXNzIEJTZXQ+CitpbmxpbmUgdHlwZW5hbWUgQVZM
VHJlZTxBYnN0cmFjdG9yLCBtYXhEZXB0aCwgQlNldD46OmhhbmRsZQorQVZMVHJlZTxBYnN0cmFj
dG9yLCBtYXhEZXB0aCwgQlNldD46OnNlYXJjaF9ncmVhdGVzdCgpCit7CisgICAgaGFuZGxlIGgg
PSBhYnMucm9vdCwgcGFyZW50ID0gbnVsbCgpOworCisgICAgd2hpbGUgKGggIT0gbnVsbCgpKSB7
CisgICAgICAgIHBhcmVudCA9IGg7CisgICAgICAgIGggPSBnZXRfZ3QoaCk7CisgICAgfQorCisg
ICAgcmV0dXJuIHBhcmVudDsKK30KKwordGVtcGxhdGUgPGNsYXNzIEFic3RyYWN0b3IsIHVuc2ln
bmVkIG1heERlcHRoLCBjbGFzcyBCU2V0PgoraW5saW5lIHR5cGVuYW1lIEFWTFRyZWU8QWJzdHJh
Y3RvciwgbWF4RGVwdGgsIEJTZXQ+OjpoYW5kbGUKK0FWTFRyZWU8QWJzdHJhY3RvciwgbWF4RGVw
dGgsIEJTZXQ+OjpyZW1vdmUoa2V5IGspCit7CisgICAgLy8gWmVyby1iYXNlZCBkZXB0aCBpbiB0
cmVlLgorICAgIHVuc2lnbmVkIGRlcHRoID0gMCwgcm1fZGVwdGg7CisKKyAgICAvLyBSZWNvcmRz
IGEgcGF0aCBpbnRvIHRoZSB0cmVlLiAgSWYgYnJhbmNoW25dIGlzIHRydWUsIGluZGljYXRlcwor
ICAgIC8vIHRha2UgZ3JlYXRlciBicmFuY2ggZnJvbSB0aGUgbnRoIG5vZGUgaW4gdGhlIHBhdGgs
IG90aGVyd2lzZQorICAgIC8vIHRha2UgdGhlIGxlc3MgYnJhbmNoLiAgYnJhbmNoWzBdIGdpdmVz
IGJyYW5jaCBmcm9tIHJvb3QsIGFuZAorICAgIC8vIHNvIG9uLgorICAgIEJTZXQgYnJhbmNoOwor
CisgICAgaGFuZGxlIGggPSBhYnMucm9vdDsKKyAgICBoYW5kbGUgcGFyZW50ID0gbnVsbCgpLCBj
aGlsZDsKKyAgICBpbnQgY21wLCBjbXBfc2hvcnRlbmVkX3N1Yl93aXRoX3BhdGggPSAwOworCisg
ICAgZm9yICg7OykgeworICAgICAgICBpZiAoaCA9PSBudWxsKCkpCisgICAgICAgICAgICAvLyBO
byBub2RlIGluIHRyZWUgd2l0aCBnaXZlbiBrZXkuCisgICAgICAgICAgICByZXR1cm4gbnVsbCgp
OworICAgICAgICBjbXAgPSBjbXBfa19uKGssIGgpOworICAgICAgICBpZiAoY21wID09IDApCisg
ICAgICAgICAgICAvLyBGb3VuZCBub2RlIHRvIHJlbW92ZS4KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBwYXJlbnQgPSBoOworICAgICAgICBoID0gY21wIDwgMCA/IGdldF9sdChoKSA6IGdl
dF9ndChoKTsKKyAgICAgICAgYnJhbmNoW2RlcHRoKytdID0gY21wID4gMDsKKyAgICAgICAgY21w
X3Nob3J0ZW5lZF9zdWJfd2l0aF9wYXRoID0gY21wOworICAgIH0KKyAgICBoYW5kbGUgcm0gPSBo
OworICAgIGhhbmRsZSBwYXJlbnRfcm0gPSBwYXJlbnQ7CisgICAgcm1fZGVwdGggPSBkZXB0aDsK
KworICAgIC8vIElmIHRoZSBub2RlIHRvIHJlbW92ZSBpcyBub3QgYSBsZWFmIG5vZGUsIHdlIG5l
ZWQgdG8gZ2V0IGEKKyAgICAvLyBsZWFmIG5vZGUsIG9yIGEgbm9kZSB3aXRoIGEgc2luZ2xlIGxl
YWYgYXMgaXRzIGNoaWxkLCB0byBwdXQKKyAgICAvLyBpbiB0aGUgcGxhY2Ugb2YgdGhlIG5vZGUg
dG8gcmVtb3ZlLiAgV2Ugd2lsbCBnZXQgdGhlIGdyZWF0ZXN0CisgICAgLy8gbm9kZSBpbiB0aGUg
bGVzcyBzdWJ0cmVlIChvZiB0aGUgbm9kZSB0byByZW1vdmUpLCBvciB0aGUgbGVhc3QKKyAgICAv
LyBub2RlIGluIHRoZSBncmVhdGVyIHN1YnRyZWUuICBXZSB0YWtlIHRoZSBsZWFmIG5vZGUgZnJv
bSB0aGUKKyAgICAvLyBkZWVwZXIgc3VidHJlZSwgaWYgdGhlcmUgaXMgb25lLgorCisgICAgaWYg
KGdldF9iZihoKSA8IDApIHsKKyAgICAgICAgY2hpbGQgPSBnZXRfbHQoaCk7CisgICAgICAgIGJy
YW5jaFtkZXB0aF0gPSBmYWxzZTsKKyAgICAgICAgY21wID0gLTE7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgY2hpbGQgPSBnZXRfZ3QoaCk7CisgICAgICAgIGJyYW5jaFtkZXB0aF0gPSB0cnVlOwor
ICAgICAgICBjbXAgPSAxOworICAgIH0KKyAgICBkZXB0aCsrOworCisgICAgaWYgKGNoaWxkICE9
IG51bGwoKSkgeworICAgICAgICBjbXAgPSAtY21wOworICAgICAgICBkbyB7CisgICAgICAgICAg
ICBwYXJlbnQgPSBoOworICAgICAgICAgICAgaCA9IGNoaWxkOworICAgICAgICAgICAgaWYgKGNt
cCA8IDApIHsKKyAgICAgICAgICAgICAgICBjaGlsZCA9IGdldF9sdChoKTsKKyAgICAgICAgICAg
ICAgICBicmFuY2hbZGVwdGhdID0gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGNoaWxkID0gZ2V0X2d0KGgpOworICAgICAgICAgICAgICAgIGJyYW5jaFtkZXB0
aF0gPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVwdGgrKzsKKyAgICAgICAg
fSB3aGlsZSAoY2hpbGQgIT0gbnVsbCgpKTsKKworICAgICAgICBpZiAocGFyZW50ID09IHJtKQor
ICAgICAgICAgICAgLy8gT25seSB3ZW50IHRocm91Z2ggZG8gbG9vcCBvbmNlLiAgRGVsZXRlZCBu
b2RlIHdpbGwgYmUgcmVwbGFjZWQKKyAgICAgICAgICAgIC8vIGluIHRoZSB0cmVlIHN0cnVjdHVy
ZSBieSBvbmUgb2YgaXRzIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyAgICAgICAgICAgIGNtcF9zaG9y
dGVuZWRfc3ViX3dpdGhfcGF0aCA9IC1jbXA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNt
cF9zaG9ydGVuZWRfc3ViX3dpdGhfcGF0aCA9IGNtcDsKKworICAgICAgICAvLyBHZXQgdGhlIGhh
bmRsZSBvZiB0aGUgb3Bwb3NpdGUgY2hpbGQsIHdoaWNoIG1heSBub3QgYmUgbnVsbC4KKyAgICAg
ICAgY2hpbGQgPSBjbXAgPiAwID8gZ2V0X2x0KGgpIDogZ2V0X2d0KGgpOworICAgIH0KKworICAg
IGlmIChwYXJlbnQgPT0gbnVsbCgpKQorICAgICAgICAvLyBUaGVyZSB3ZXJlIG9ubHkgMSBvciAy
IG5vZGVzIGluIHRoaXMgdHJlZS4KKyAgICAgICAgYWJzLnJvb3QgPSBjaGlsZDsKKyAgICBlbHNl
IGlmIChjbXBfc2hvcnRlbmVkX3N1Yl93aXRoX3BhdGggPCAwKQorICAgICAgICBzZXRfbHQocGFy
ZW50LCBjaGlsZCk7CisgICAgZWxzZQorICAgICAgICBzZXRfZ3QocGFyZW50LCBjaGlsZCk7CisK
KyAgICAvLyAicGF0aCIgaXMgdGhlIHBhcmVudCBvZiB0aGUgc3VidHJlZSBiZWluZyBlbGltaW5h
dGVkIG9yIHJlZHVjZWQKKyAgICAvLyBmcm9tIGEgZGVwdGggb2YgMiB0byAxLiAgSWYgInBhdGgi
IGlzIHRoZSBub2RlIHRvIGJlIHJlbW92ZWQsIHdlCisgICAgLy8gc2V0IHBhdGggdG8gdGhlIG5v
ZGUgd2UncmUgYWJvdXQgdG8gcG9rZSBpbnRvIHRoZSBwb3NpdGlvbiBvZiB0aGUKKyAgICAvLyBu
b2RlIHRvIGJlIHJlbW92ZWQuCisgICAgaGFuZGxlIHBhdGggPSBwYXJlbnQgPT0gcm0gPyBoIDog
cGFyZW50OworCisgICAgaWYgKGggIT0gcm0pIHsKKyAgICAgICAgLy8gUG9rZSBpbiB0aGUgcmVw
bGFjZW1lbnQgZm9yIHRoZSBub2RlIHRvIGJlIHJlbW92ZWQuCisgICAgICAgIHNldF9sdChoLCBn
ZXRfbHQocm0pKTsKKyAgICAgICAgc2V0X2d0KGgsIGdldF9ndChybSkpOworICAgICAgICBzZXRf
YmYoaCwgZ2V0X2JmKHJtKSk7CisgICAgICAgIGlmIChwYXJlbnRfcm0gPT0gbnVsbCgpKQorICAg
ICAgICAgICAgYWJzLnJvb3QgPSBoOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlcHRo
ID0gcm1fZGVwdGggLSAxOworICAgICAgICAgICAgaWYgKGJyYW5jaFtkZXB0aF0pCisgICAgICAg
ICAgICAgICAgc2V0X2d0KHBhcmVudF9ybSwgaCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgc2V0X2x0KHBhcmVudF9ybSwgaCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAocGF0aCAhPSBudWxsKCkpIHsKKyAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcG9yYXJ5IGxpbmtl
ZCBsaXN0IGZyb20gdGhlIHBhcmVudCBvZiB0aGUgcGF0aCBub2RlCisgICAgICAgIC8vIHRvIHRo
ZSByb290IG5vZGUuCisgICAgICAgIGggPSBhYnMucm9vdDsKKyAgICAgICAgcGFyZW50ID0gbnVs
bCgpOworICAgICAgICBkZXB0aCA9IDA7CisgICAgICAgIHdoaWxlIChoICE9IHBhdGgpIHsKKyAg
ICAgICAgICAgIGlmIChicmFuY2hbZGVwdGgrK10pIHsKKyAgICAgICAgICAgICAgICBjaGlsZCA9
IGdldF9ndChoKTsKKyAgICAgICAgICAgICAgICBzZXRfZ3QoaCwgcGFyZW50KTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2hpbGQgPSBnZXRfbHQoaCk7CisgICAgICAg
ICAgICAgICAgc2V0X2x0KGgsIHBhcmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBw
YXJlbnQgPSBoOworICAgICAgICAgICAgaCA9IGNoaWxkOworICAgICAgICB9CisKKyAgICAgICAg
Ly8gQ2xpbWIgZnJvbSB0aGUgcGF0aCBub2RlIHRvIHRoZSByb290IG5vZGUgdXNpbmcgdGhlIGxp
bmtlZAorICAgICAgICAvLyBsaXN0LCByZXN0b3JpbmcgdGhlIHRyZWUgc3RydWN0dXJlIGFuZCBy
ZWJhbGFuY2luZyBhcyBuZWNlc3NhcnkuCisgICAgICAgIGJvb2wgcmVkdWNlZF9kZXB0aCA9IHRy
dWU7CisgICAgICAgIGludCBiZjsKKyAgICAgICAgY21wID0gY21wX3Nob3J0ZW5lZF9zdWJfd2l0
aF9wYXRoOworICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBpZiAocmVkdWNlZF9kZXB0
aCkgeworICAgICAgICAgICAgICAgIGJmID0gZ2V0X2JmKGgpOworICAgICAgICAgICAgICAgIGlm
IChjbXAgPCAwKQorICAgICAgICAgICAgICAgICAgICBiZisrOworICAgICAgICAgICAgICAgIGVs
c2UgIC8vIGNtcCA+IDAKKyAgICAgICAgICAgICAgICAgICAgYmYtLTsKKyAgICAgICAgICAgICAg
ICBpZiAoKGJmID09IC0yKSB8fCAoYmYgPT0gMikpIHsKKyAgICAgICAgICAgICAgICAgICAgaCA9
IGJhbGFuY2UoaCk7CisgICAgICAgICAgICAgICAgICAgIGJmID0gZ2V0X2JmKGgpOworICAgICAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXRfYmYoaCwgYmYpOworICAg
ICAgICAgICAgICAgIHJlZHVjZWRfZGVwdGggPSAoYmYgPT0gMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAocGFyZW50ID09IG51bGwoKSkKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNoaWxkID0gaDsKKyAgICAgICAgICAgIGggPSBwYXJlbnQ7CisgICAgICAg
ICAgICBjbXAgPSBicmFuY2hbLS1kZXB0aF0gPyAxIDogLTE7CisgICAgICAgICAgICBpZiAoY21w
IDwgMCkgICAgeworICAgICAgICAgICAgICAgIHBhcmVudCA9IGdldF9sdChoKTsKKyAgICAgICAg
ICAgICAgICBzZXRfbHQoaCwgY2hpbGQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBwYXJlbnQgPSBnZXRfZ3QoaCk7CisgICAgICAgICAgICAgICAgc2V0X2d0KGgsIGNo
aWxkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBhYnMucm9vdCA9IGg7Cisg
ICAgfQorCisgICAgcmV0dXJuIHJtOworfQorCit0ZW1wbGF0ZSA8Y2xhc3MgQWJzdHJhY3Rvciwg
dW5zaWduZWQgbWF4RGVwdGgsIGNsYXNzIEJTZXQ+CitpbmxpbmUgdHlwZW5hbWUgQVZMVHJlZTxB
YnN0cmFjdG9yLCBtYXhEZXB0aCwgQlNldD46OmhhbmRsZQorQVZMVHJlZTxBYnN0cmFjdG9yLCBt
YXhEZXB0aCwgQlNldD46OnN1YnN0KGhhbmRsZSBuZXdfbm9kZSkKK3sKKyAgICBoYW5kbGUgaCA9
IGFicy5yb290OworICAgIGhhbmRsZSBwYXJlbnQgPSBudWxsKCk7CisgICAgaW50IGNtcCwgbGFz
dF9jbXA7CisKKyAgICAvKiBTZWFyY2ggZm9yIG5vZGUgYWxyZWFkeSBpbiB0cmVlIHdpdGggc2Ft
ZSBrZXkuICovCisgICAgZm9yICg7OykgeworICAgICAgICBpZiAoaCA9PSBudWxsKCkpCisgICAg
ICAgICAgICAvKiBObyBub2RlIGluIHRyZWUgd2l0aCBzYW1lIGtleSBhcyBuZXcgbm9kZS4gKi8K
KyAgICAgICAgICAgIHJldHVybiBudWxsKCk7CisgICAgICAgIGNtcCA9IGNtcF9uX24obmV3X25v
ZGUsIGgpOworICAgICAgICBpZiAoY21wID09IDApCisgICAgICAgICAgICAvKiBGb3VuZCB0aGUg
bm9kZSB0byBzdWJzdGl0dXRlIG5ldyBvbmUgZm9yLiAqLworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGxhc3RfY21wID0gY21wOworICAgICAgICBwYXJlbnQgPSBoOworICAgICAgICBoID0g
Y21wIDwgMCA/IGdldF9sdChoKSA6IGdldF9ndChoKTsKKyAgICB9CisKKyAgICAvKiBDb3B5IHRy
ZWUgaG91c2VrZWVwaW5nIGZpZWxkcyBmcm9tIG5vZGUgaW4gdHJlZSB0byBuZXcgbm9kZS4gKi8K
KyAgICBzZXRfbHQobmV3X25vZGUsIGdldF9sdChoKSk7CisgICAgc2V0X2d0KG5ld19ub2RlLCBn
ZXRfZ3QoaCkpOworICAgIHNldF9iZihuZXdfbm9kZSwgZ2V0X2JmKGgpKTsKKworICAgIGlmIChw
YXJlbnQgPT0gbnVsbCgpKQorICAgICAgICAvKiBOZXcgbm9kZSBpcyBhbHNvIG5ldyByb290LiAq
LworICAgICAgICBhYnMucm9vdCA9IG5ld19ub2RlOworICAgIGVsc2UgeworICAgICAgICAvKiBN
YWtlIHBhcmVudCBwb2ludCB0byBuZXcgbm9kZS4gKi8KKyAgICAgICAgaWYgKGxhc3RfY21wIDwg
MCkKKyAgICAgICAgICAgIHNldF9sdChwYXJlbnQsIG5ld19ub2RlKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc2V0X2d0KHBhcmVudCwgbmV3X25vZGUpOworICAgIH0KKworICAgIHJldHVy
biBoOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAyMzY0ZGNlMjk0
MjE0ZjU4MmVmOTBlODQxMzcwOTU4NzQwY2FhMThkLi44NjIzYmFjYTBjYWQ0NjI3NWUwZjkzNzZh
ZTAwN2ZmMWQ0MzA5NTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMSw1ICsxLDYgQEAKIHNl
dChXVEZfSEVBREVSUwogICAgIEFTQ0lJQ1R5cGUuaAorICAgIEFWTFRyZWUuaAogICAgIEFzc2Vy
dGlvbnMuaAogICAgIEF0b21pY3MuaAogICAgIEJhZy5oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzhkNGQzMTRhODk3NDZm
NWQzMjM3M2Q1ZGVlOGQ4ODk5MGQwMjA5Ni4uMGIxYjU3ZTFjYzAzZmY2OTU4ZmVkMGMyZGMwODRh
Yjg2YmYwOGNlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTI0ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTgzMjg4LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ0MTg5CisKKyAgICAgICAgTWFkZSBqcy9zb3J0LXdpdGgtc2lkZS1lZmZlY3Rp
bmctY29tcGFyaXNvbnMuaHRtbCB0aW1lIG91dCBpbgorICAgICAgICBkZWJ1ZyBidWlsZHMgKFJl
cXVlc3RlZCBieSBhcCBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6
CisKKyAgICAgICAgIkl0IHNob3VsZG4ndCB0YWtlIDE4NDYgbGluZXMgb2YgY29kZSBhbmQgNSBG
SVhNRXMgdG8gc29ydCBhbgorICAgICAgICBhcnJheS4iCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwMTMKKyAgICAgICAgaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMTgzMjg4CisKIDIwMTUtMDQtMjQgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgcGFyc2luZyBzdXBw
b3J0IGZvciBmb250LXN5bnRoZXNpcyBDU1MgcHJvcGVydHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2pzL2FycmF5LWhvbGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2FycmF5LWhv
bGVzLWV4cGVjdGVkLnR4dAppbmRleCA0NjhiYWYxYzk1N2IwMDJlNWZlMzJhNzI5NDg3OWQ3ZjZi
ZDMxY2RlLi5jY2I0NTUwMmM4YzRlNDU5MjgzZWIxYWIyMjBhNDNjZmJkMDU3YTgzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9qcy9hcnJheS1ob2xlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvanMvYXJyYXktaG9sZXMtZXhwZWN0ZWQudHh0CkBAIC0zNiw3ICszNiw3IEBAIFBBU1Mg
c2hvd0hvbGVzKFswLCAsIDJdLmNvbmNhdChbMywgLCA1XSkpIGlzICdbMCwgcGVla2Fib28sIDIs
IDMsIHBlZWthYm9vLCA1XScKIFBBU1Mgc2hvd0hvbGVzKFswLCAsIDIsIDNdLnJldmVyc2UoKSkg
aXMgJ1szLCAyLCBwZWVrYWJvbywgMF0nCiBQQVNTIGEgPSBbMCwgLCAyLCAzXTsgYS5zaGlmdCgp
OyBzaG93SG9sZXMoYSkgaXMgJ1twZWVrYWJvbywgMiwgM10nCiBQQVNTIHNob3dIb2xlcyhbMCwg
LCAyLCAzXS5zbGljZSgwLCAzKSkgaXMgJ1swLCBwZWVrYWJvbywgMl0nCi1QQVNTIHNob3dIb2xl
cyhbMCwgLCAyLCAzXS5zb3J0KCkpIGlzICdbMCwgMiwgMywgcGVla2Fib29dJworUEFTUyBzaG93
SG9sZXMoWzAsICwgMiwgM10uc29ydCgpKSBpcyAnWzAsIDIsIDMsIGhvbGVdJwogUEFTUyBzaG93
SG9sZXMoWzAsIHVuZGVmaW5lZCwgMiwgM10uc29ydCgpKSBpcyAnWzAsIDIsIDMsIHVuZGVmaW5l
ZF0nCiBQQVNTIGEgPSBbMCwgLCAyLCAzXTsgYS5zcGxpY2UoMiwgMywgNSwgNik7IHNob3dIb2xl
cyhhKSBpcyAnWzAsIGhvbGUsIDUsIDZdJwogUEFTUyBhID0gWzAsICwgMiwgM107IGEudW5zaGlm
dCg0KTsgc2hvd0hvbGVzKGEpIGlzICdbNCwgMCwgcGVla2Fib28sIDIsIDNdJwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvYXJyYXktc29ydC1zcGFyc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvYXJyYXktc29ydC1zcGFyc2UtZXhwZWN0ZWQudHh0CmluZGV4IGRmNmMwNmEzZWZm
OTk1NmJhZDM0MDlhY2Y2NDJkZTY2MzcxNjQxNGUuLjUwNzQwMzUyZmE3MGEwNmY4ZTBjOTJkZjRm
ODJlMmZjMDE3YTIxNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2FycmF5LXNvcnQtc3Bh
cnNlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJheS1zb3J0LXNwYXJzZS1l
eHBlY3RlZC50eHQKQEAgLTUsMTEgKzUsNiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBQ
QVNTIHRlc3RTb3J0KFssdW5kZWZpbmVkLDAsMV0pIGlzIHRydWUKIFBBU1MgdGVzdFNvcnQoe2xl
bmd0aDo0LDE6dW5kZWZpbmVkLDI6MCwzOjF9KSBpcyB0cnVlCi1QQVNTIDAgaW4gYXJyYXkgaXMg
dHJ1ZQotUEFTUyAxIGluIGFycmF5IGlzIGZhbHNlCi1QQVNTIDAgaW4gYXJyYXkgaXMgdHJ1ZQot
UEFTUyAxIGluIGFycmF5IGlzIGZhbHNlCi1QQVNTIDIgaW4gYXJyYXkgaXMgZmFsc2UKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvY29tcGFyZWZuLXNvcnQtc3RhYmlsaXR5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2pzL2NvbXBhcmVmbi1zb3J0LXN0YWJpbGl0eS1leHBlY3RlZC50eHQKaW5kZXgg
MmRmMDBmZTBhMWM5NDVkMzdmZTBlYWQzMWI3ZThiMWIxOWNmNTkxYi4uNDE3ZWY3OWE5ODM3ZmVk
NWFmZjI4MWEzYWQ4ZTZiYjY4Njg1OWE4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvY29t
cGFyZWZuLXNvcnQtc3RhYmlsaXR5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9j
b21wYXJlZm4tc29ydC1zdGFiaWxpdHktZXhwZWN0ZWQudHh0CkBAIC0zLDIwNiArMywxNCBAQCBU
aGlzIHRlc3RzIHRoYXQgc29ydChjb21wYXJlRm4pIGlzIGEgc3RhYmxlIHNvcnQuCiBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFy
cmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtp
XSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMg
b25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNb
aV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1Q
QVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBh
cnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlb
aV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlz
IG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVz
W2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQot
UEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1Mg
YXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5
W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBp
cyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25l
c1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0K
LVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNT
IGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJh
eVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0g
aXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9u
ZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ld
Ci1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFT
UyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJy
YXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ld
IGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBv
bmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tp
XQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBB
U1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFy
cmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtp
XSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMg
b25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNb
aV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1Q
QVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBh
cnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlb
aV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlz
IG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVz
W2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQot
UEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1Mg
YXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5
W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBp
cyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25l
c1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0K
LVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNT
IGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJh
eVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9uZXNbaV0KLVBBU1MgYXJyYXlbaV0g
aXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ldCi1QQVNTIGFycmF5W2ldIGlzIG9u
ZXNbaV0KLVBBU1MgYXJyYXlbaV0gaXMgb25lc1tpXQotUEFTUyBhcnJheVtpXSBpcyBvbmVzW2ld
Ci1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGld
IGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5
W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0K
LVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0g
aXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlb
Y291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQot
UEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBp
cyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtj
b3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1Q
QVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlz
IHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2Nv
dW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBB
U1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMg
dHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291
bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFT
UyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0
d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3Vu
dCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNT
IGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3
b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50
ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1Mg
YXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdv
c1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQg
KyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBh
cnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29z
W2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCAr
IGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFy
cmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3Nb
aV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsg
aV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJy
YXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tp
XQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBp
XSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJh
eVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ld
Ci1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGld
IGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5
W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0K
LVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0g
aXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlb
Y291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQot
UEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBp
cyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtj
b3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1Q
QVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlz
IHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2Nv
dW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBB
U1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMg
dHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291
bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFT
UyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0
d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3Vu
dCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNT
IGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3
b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50
ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1Mg
YXJyYXlbY291bnQgKyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdv
c1tpXQotUEFTUyBhcnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQg
KyBpXSBpcyB0d29zW2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQotUEFTUyBh
cnJheVtjb3VudCArIGldIGlzIHR3b3NbaV0KLVBBU1MgYXJyYXlbY291bnQgKyBpXSBpcyB0d29z
W2ldCi1QQVNTIGFycmF5W2NvdW50ICsgaV0gaXMgdHdvc1tpXQorUEFTUyBhcnJbMF0gaXMgc29y
dEFyclswXQorUEFTUyBhcnJbMV0gaXMgc29ydEFyclsyXQorUEFTUyBhcnJbMl0gaXMgc29ydEFy
clsxXQorUEFTUyBhcnJbM10gaXMgc29ydEFyclszXQorUEFTUyBhcnJbMF0gaXMgc29ydEFyclsw
XQorUEFTUyBhcnJbMV0gaXMgc29ydEFyclsyXQorUEFTUyBhcnJbMl0gaXMgc29ydEFyclsxXQor
UEFTUyBhcnJbM10gaXMgc29ydEFyclszXQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXkt
cHJvdG90eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL2Fy
cmF5LXByb3RvdHlwZS1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAppbmRleCBjYjVlOGNmNGIwZDgw
NDhhNzQ2MTJjOWNhOTQ0M2JlMDI1MDlhNGFiLi4zN2U3NjFlOTA2MGE4ZTlhOGY5ZmZjMjgzMzZj
MTNlZWU3ZTJlYmI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9kb20vYXJyYXktcHJvdG90
eXBlLXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9hcnJh
eS1wcm90b3R5cGUtcHJvcGVydGllcy1leHBlY3RlZC50eHQKQEAgLTEyLDcgKzEyLDcgQEAgUEFT
UyBBcnJheS5wcm90b3R5cGUucHVzaC5jYWxsKHVuZGVmaW5lZCwge30pIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IHVuZGVmaW4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnJldmVyc2UuY2FsbCh1
bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4g
b2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90b3R5cGUucmV2ZXJzZS5jYWxsKHVuZGVmaW5l
ZCknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnNoaWZ0LmNhbGwodW5kZWZpbmVkKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGlu
ZyAnQXJyYXkucHJvdG90eXBlLnNoaWZ0LmNhbGwodW5kZWZpbmVkKScpLgogUEFTUyBBcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdBcnJheS5wcm90
b3R5cGUuc2xpY2UuY2FsbCh1bmRlZmluZWQsIDAsIDEpJykuCi1QQVNTIEFycmF5LnByb3RvdHlw
ZS5zb3J0LmNhbGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5w
cm90b3R5cGUuc29ydCByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgdW5kZWZpbmVkLgorUEFT
UyBBcnJheS5wcm90b3R5cGUuc29ydC5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0FycmF5LnBy
b3RvdHlwZS5zb3J0LmNhbGwodW5kZWZpbmVkKScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuc3Bs
aWNlLmNhbGwodW5kZWZpbmVkLCAwLCAxKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRl
ZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnNwbGlj
ZS5jYWxsKHVuZGVmaW5lZCwgMCwgMSknKS4KIFBBU1MgQXJyYXkucHJvdG90eXBlLnVuc2hpZnQu
Y2FsbCh1bmRlZmluZWQsIHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiB1bmRlZmluZWQg
aXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAnQXJyYXkucHJvdG90eXBlLnVuc2hpZnQuY2Fs
bCh1bmRlZmluZWQsIHt9KScpLgogUEFTUyBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbCh1bmRl
ZmluZWQsIHRvU3RyaW5nKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBBcnJheS5wcm90b3R5
cGUuZXZlcnkgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIHVuZGVmaW5lZC4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1ob2xlcy5qcyBiL0xheW91dFRl
c3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1ob2xlcy5qcwppbmRleCAwMDI3ZGM0YzczNzgxMzAy
MzE4MWY0ODBhNjg1NmY4NDZlOGQ3MzNlLi4yNTdhMDYyNjFlZTZhMTY5MzAyOWY0YWNiMjJkOTk2
YWJhMzBiYWRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyYXkt
aG9sZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FycmF5LWhvbGVzLmpz
CkBAIC04Nyw3ICs4Nyw3IEBAIHNob3VsZEJlKCJzaG93SG9sZXMoWzAsICwgMl0uY29uY2F0KFsz
LCAsIDVdKSkiLCAiJ1swLCBwZWVrYWJvbywgMiwgMywgcGVla2Fib28sCiBzaG91bGRCZSgic2hv
d0hvbGVzKFswLCAsIDIsIDNdLnJldmVyc2UoKSkiLCAiJ1szLCAyLCBwZWVrYWJvbywgMF0nIik7
CiBzaG91bGRCZSgiYSA9IFswLCAsIDIsIDNdOyBhLnNoaWZ0KCk7IHNob3dIb2xlcyhhKSIsICIn
W3BlZWthYm9vLCAyLCAzXSciKTsKIHNob3VsZEJlKCJzaG93SG9sZXMoWzAsICwgMiwgM10uc2xp
Y2UoMCwgMykpIiwgIidbMCwgcGVla2Fib28sIDJdJyIpOwotc2hvdWxkQmUoInNob3dIb2xlcyhb
MCwgLCAyLCAzXS5zb3J0KCkpIiwgIidbMCwgMiwgMywgcGVla2Fib29dJyIpOworc2hvdWxkQmUo
InNob3dIb2xlcyhbMCwgLCAyLCAzXS5zb3J0KCkpIiwgIidbMCwgMiwgMywgaG9sZV0nIik7CiBz
aG91bGRCZSgic2hvd0hvbGVzKFswLCB1bmRlZmluZWQsIDIsIDNdLnNvcnQoKSkiLCAiJ1swLCAy
LCAzLCB1bmRlZmluZWRdJyIpOwogc2hvdWxkQmUoImEgPSBbMCwgLCAyLCAzXTsgYS5zcGxpY2Uo
MiwgMywgNSwgNik7IHNob3dIb2xlcyhhKSIsICInWzAsIGhvbGUsIDUsIDZdJyIpOwogc2hvdWxk
QmUoImEgPSBbMCwgLCAyLCAzXTsgYS51bnNoaWZ0KDQpOyBzaG93SG9sZXMoYSkiLCAiJ1s0LCAw
LCBwZWVrYWJvbywgMiwgM10nIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvYXJyYXktc29ydC1zcGFyc2UuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMv
YXJyYXktc29ydC1zcGFyc2UuanMKaW5kZXggODg1NGQ5Y2FiYmZlMWFhMWMzNGU5ZDc4NDUzMmJm
OWVhZTkyN2VmMy4uZmM1ZTgzMTZlODY5MzYyODQ0YWVlODkwZDQ1YjFiYzg4MmRjNDZkZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2FycmF5LXNvcnQtc3BhcnNlLmpz
CisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJheS1zb3J0LXNwYXJzZS5qcwpA
QCAtMTAsMTQgKzEwLDMgQEAgZnVuY3Rpb24gdGVzdFNvcnQoeCkKIAogc2hvdWxkQmVUcnVlKCJ0
ZXN0U29ydChbLHVuZGVmaW5lZCwwLDFdKSIpOwogc2hvdWxkQmVUcnVlKCJ0ZXN0U29ydCh7bGVu
Z3RoOjQsMTp1bmRlZmluZWQsMjowLDM6MX0pIik7Ci0KLXZhciBhcnJheSA9IFsgLCB1bmRlZmlu
ZWQgXTsKLWFycmF5LnNvcnQoKTsKLXNob3VsZEJlVHJ1ZSgiMCBpbiBhcnJheSIpOwotc2hvdWxk
QmVGYWxzZSgiMSBpbiBhcnJheSIpOwotCi12YXIgYXJyYXkgPSBbICwgMSwgLCBdOwotYXJyYXku
c29ydCgpOwotc2hvdWxkQmVUcnVlKCIwIGluIGFycmF5Iik7Ci1zaG91bGRCZUZhbHNlKCIxIGlu
IGFycmF5Iik7Ci1zaG91bGRCZUZhbHNlKCIyIGluIGFycmF5Iik7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvY29tcGFyZWZuLXNvcnQtc3RhYmlsaXR5LmpzIGIvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2NvbXBhcmVmbi1zb3J0LXN0YWJpbGl0eS5qcwppbmRl
eCAyNjdhZjFkMDliMTMwMGE0ODNjNjA5OTYzOTZhYzBlYzg5OWFiOWI1Li41Y2RhYjEwNGY4NDRj
NDMwNjk3ZGRhM2JmMjhkZWM1NDRjY2Q5MDBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvY29tcGFyZWZuLXNvcnQtc3RhYmlsaXR5LmpzCisrKyBiL0xheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9jb21wYXJlZm4tc29ydC1zdGFiaWxpdHkuanMKQEAgLTIsMjUgKzIs
MzAgQEAgZGVzY3JpcHRpb24oCiAiVGhpcyB0ZXN0cyB0aGF0IHNvcnQoY29tcGFyZUZuKSBpcyBh
IHN0YWJsZSBzb3J0LiIKICk7CiAKLXZhciBjb3VudCA9IDEwMDsKLQotdmFyIG9uZXMgPSBbXTsK
LWZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKLQlvbmVzLnB1c2gobmV3IE51bWJlcigx
KSk7CitmdW5jdGlvbiBjbG9uZShzb3VyY2UsIHRhcmdldCkgeworICAgIGZvciAoaSA9IDA7IGkg
PCBzb3VyY2UubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdGFyZ2V0W2ldID0gc291cmNlW2ldOwor
ICAgIH0KK30KIAotdmFyIHR3b3MgPSBbXTsKLWZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkKLQl0d29zLnB1c2gobmV3IE51bWJlcigyKSk7Cit2YXIgYXJyID0gW107CithcnJbMF0gPSBu
ZXcgTnVtYmVyKDEpOworYXJyWzFdID0gbmV3IE51bWJlcigyKTsKK2FyclsyXSA9IG5ldyBOdW1i
ZXIoMSk7CithcnJbM10gPSBuZXcgTnVtYmVyKDIpOwogCi12YXIgYXJyYXkgPSBbXTsKLWZvciAo
dmFyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotCWFycmF5LnB1c2gob25lc1tpXSk7Ci0JYXJy
YXkucHVzaCh0d29zW2ldKTsKLX0KK3ZhciBzb3J0QXJyID0gW107CitjbG9uZShhcnIsIHNvcnRB
cnIpOworc29ydEFyci5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1cm4gYSAtIGI7IH0pOwogCi1h
cnJheS5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1cm4gYSAtIGI7IH0pOwotZm9yICh2YXIgaSA9
IDA7IGkgPCBjb3VudDsgKytpKQotCXNob3VsZEJlKCdhcnJheVtpXScsICdvbmVzW2ldJyk7Citz
aG91bGRCZSgnYXJyWzBdJywgJ3NvcnRBcnJbMF0nKTsKK3Nob3VsZEJlKCdhcnJbMV0nLCAnc29y
dEFyclsyXScpOworc2hvdWxkQmUoJ2FyclsyXScsICdzb3J0QXJyWzFdJyk7CitzaG91bGRCZSgn
YXJyWzNdJywgJ3NvcnRBcnJbM10nKTsKIAotZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KQotCXNob3VsZEJlKCdhcnJheVtjb3VudCArIGldJywgJ3R3b3NbaV0nKTsKKy8vIEp1c3QgdHJ5
IGFnYWluLi4uCitzb3J0QXJyLnNvcnQoZnVuY3Rpb24oYSxiKSB7IHJldHVybiBhIC0gYjsgfSk7
CitzaG91bGRCZSgnYXJyWzBdJywgJ3NvcnRBcnJbMF0nKTsKK3Nob3VsZEJlKCdhcnJbMV0nLCAn
c29ydEFyclsyXScpOworc2hvdWxkQmUoJ2FyclsyXScsICdzb3J0QXJyWzFdJyk7CitzaG91bGRC
ZSgnYXJyWzNdJywgJ3NvcnRBcnJbM10nKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>