<?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>260353</bug_id>
          
          <creation_ts>2023-08-17 09:50:14 -0700</creation_ts>
          <short_desc>REGRESSION(266929@main): Regressions</short_desc>
          <delta_ts>2023-08-17 10:02:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>260147</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>webkit-bug-importer</cc>
    
    <cc>yijia_huang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1971850</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-08-17 09:50:14 -0700</bug_when>
    <thetext>https://commits.webkit.org/266929@main introduced a regression:
Regressions

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>1971852</commentid>
    <comment_count>1</comment_count>
      <attachid>467310</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2023-08-17 09:50:20 -0700</bug_when>
    <thetext>Created attachment 467310
REVERT of 266929@main

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 revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert 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>1971853</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-08-17 10:01:03 -0700</bug_when>
    <thetext>Committed 267004@main (757b491f1725): &lt;https://commits.webkit.org/267004@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 467310.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1971854</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2023-08-17 10:02:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/114033201&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>467310</attachid>
            <date>2023-08-17 09:50:20 -0700</date>
            <delta_ts>2023-08-17 10:01:03 -0700</delta_ts>
            <desc>REVERT of 266929@main</desc>
            <filename>bug-260353-20230817165019.patch</filename>
            <type>text/plain</type>
            <size>145469</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSAzNmI1MzE1YmZmZDE2OTc3NjA0ZTE1M2E4NDU0OWNkZmNiOTc2NjcxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBUaHUsIDE3IEF1ZyAyMDIzIDE2OjUwOjE3ICswMDAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIDI2NjkyOUBtYWluLgogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI2MDM1MwoKUmVncmVzc2lvbnMKClJldmVydGVkIGNoYW5nZXNl
dDoKCiJbSlNDXSBJbnRyb2R1Y2Ugd3loYXNoIHRvIFN0cmluZ0ltcGwiCmh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNjAxNDcKaHR0cHM6Ly9jb21taXRzLndlYmtpdC5v
cmcvMjY2OTI5QG1haW4KLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFi
bGUgICAgICAgfCAyNTYgKystLS0tLS0tLQogLi4uL3J1bnRpbWUvSlNDQnl0ZWNvZGVDYWNoZVZl
cnNpb24uY3BwLmluICAgIHwgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwICAgICAgfCAgIDYgKy0KIC4uLi9ydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVzY3Jp
cHRvci5oICAgICAgICB8ICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9s
bGFyVk0uY3BwICAgIHwgIDMwICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNw
ZWN0b3IuY3BwICAgfCAgIDQgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL2hhc2hlci5w
eSAgICAgICAgICB8IDIxNiArLS0tLS0tLQogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiAgICAgIHwgIDEyIC0KIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0ICAg
ICAgICAgICAgICAgICB8ICAgMyAtCiBTb3VyY2UvV1RGL3d0Zi9IYXNoZXIuaCAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDYgKy0KIFNvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAgICAg
ICAgICAgICAgICB8ICAgNiArLQogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoLmggICAg
ICAgICAgICAgIHwgICA4ICstCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2hlci5oICAg
ICAgICAgICAgfCAyNzkgKysrKysrKysrLS0KIFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFz
aGVySW5saW5lcy5oICAgICB8IDExNiAtLS0tLQogU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmggICAgICAgICAgICAgIHwgICA0ICstCiBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N1cGVyRmFz
dEhhc2guaCAgICAgICAgICAgfCAyNTQgLS0tLS0tLS0tLQogU291cmNlL1dURi93dGYvdGV4dC9X
WUhhc2guaCAgICAgICAgICAgICAgICAgIHwgMzM3IC0tLS0tLS0tLS0tLS0KIFNvdXJjZS9XVEYv
d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uY3BwICAgICB8ICAgNyArLQogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9IYXNoZXIucG0gICAgIHwgMjE4ICsrLS0tLS0tCiAuLi4vc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAgICAgfCAgIDQgKy0KIC4uLi9jb250
ZW50ZXh0ZW5zaW9ucy9ERkFNaW5pbWl6ZXIuY3BwICAgICAgICB8ICAgNCArLQogLi4uL2NvbnRl
bnRleHRlbnNpb25zL0hhc2hhYmxlQWN0aW9uTGlzdC5oICAgIHwgICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcCAgfCAgIDQgKy0KIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaCB8ICAgNCArLQogVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dCAgICAgICAgICAgIHwgICAyIC0KIC4uLi9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAxMCArLQogLi4uL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1N0cmluZ0hhc2hlci5jcHAgIHwgNDY3ICsrKysrKysrKysrKysrKystLQog
Li4uL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N1cGVyRmFzdEhhc2guY3BwIHwgNDY0IC0tLS0t
LS0tLS0tLS0tLS0tCiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XWUhhc2guY3BwICAg
ICAgfCAgOTggLS0tLQogMjkgZmlsZXMgY2hhbmdlZCwgODM4IGluc2VydGlvbnMoKyksIDE5OTMg
ZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdIYXNoZXJJbmxpbmVzLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV1RGL3d0Zi90ZXh0
L1N1cGVyRmFzdEhhc2guaAogZGVsZXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XVEYvd3RmL3RleHQv
V1lIYXNoLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9TdXBlckZhc3RIYXNoLmNwcAogZGVsZXRlIG1vZGUgMTAwNjQ0IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1dZSGFzaC5jcHAKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvY3JlYXRlX2hhc2hfdGFibGUgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hf
dGFibGUKaW5kZXggNDQxY2ZjMTU4MTg0Li5lMjY0NWI0MjlkOTkgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvY3JlYXRlX2hhc2hfdGFibGUKQEAgLTUsNyArNSw3IEBACiAjIChjKSAyMDAwLTIwMDIg
YnkgSGFycmkgUG9ydGVuIDxwb3J0ZW5Aa2RlLm9yZz4gYW5kCiAjICAgICAgICAgICAgICAgICAg
RGF2aWQgRmF1cmUgPGZhdXJlQGtkZS5vcmc+CiAjIE1vZGlmaWVkIChjKSAyMDA0IGJ5IE5pa29s
YXMgWmltbWVybWFubiA8d2lsZGZveEBrZGUub3JnPgotIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAy
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNy0y
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIyBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0y
NCw3ICsyNCw2IEBACiAgCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwotdXNlIGJpZ2ludDsK
IHVzZSBHZXRvcHQ6OkxvbmcgcXcoOmNvbmZpZyBwYXNzX3Rocm91Z2gpOwogCiBteSAkZmlsZSA9
IHNoaWZ0IEBBUkdWIG9yIGRpZSgiTXVzdCBwcm92aWRlIHNvdXJjZSBmaWxlIGFzIGZpbmFsIGFy
Z3VtZW50LiIpOwpAQCAtNDcsOCArNDYsNiBAQCBteSAkcGVmZWN0SGFzaFNpemU7CiBteSAkY29t
cGFjdFNpemU7CiBteSAkY29tcGFjdEhhc2hTaXplTWFzazsKIG15ICRiYW5uZXIgPSAwOwotbXkg
JG1hc2s2NCA9IDIqKjY0IC0gMTsKLW15ICRtYXNrMzIgPSAyKiozMiAtIDE7CiBzdWIgY2FsY1Bl
cmZlY3RIYXNoU2l6ZSgpOwogc3ViIGNhbGNDb21wYWN0SGFzaFNpemUoKTsKIHN1YiBvdXRwdXQo
KTsKQEAgLTE5NywyMDkgKzE5NCw2MCBAQCBzdWIgY2FsY0NvbXBhY3RIYXNoU2l6ZSgpCiAgICAg
fQogfQogCi1zdWIgZmluYWxpemVBbmRNYXNrVG9wOEJpdHMoJCkgewotICAgIG15ICgkdmFsdWUp
ID0gQF87Ci0KLSAgICAkdmFsdWUgJj0gJG1hc2szMjsKLQotICAgICMgRm9yY2UgImF2YWxhbmNo
aW5nIiBvZiBsb3dlciAzMiBiaXRzCi0gICAgJHZhbHVlIF49IGxlZnRTaGlmdCgkdmFsdWUsIDMp
OwotICAgICR2YWx1ZSArPSAoJHZhbHVlID4+IDUpOwotICAgICR2YWx1ZSA9ICgkdmFsdWUgJiAk
bWFzazMyKTsKLSAgICAkdmFsdWUgXj0gKGxlZnRTaGlmdCgkdmFsdWUsIDIpICYgJG1hc2szMik7
Ci0gICAgJHZhbHVlICs9ICgkdmFsdWUgPj4gMTUpOwotICAgICR2YWx1ZSA9ICR2YWx1ZSAmICRt
YXNrMzI7Ci0gICAgJHZhbHVlIF49IChsZWZ0U2hpZnQoJHZhbHVlLCAxMCkgJiAkbWFzazMyKTsK
LQotICAgICMgU2F2ZSA4IGJpdHMgZm9yIFN0cmluZ0ltcGwgdG8gdXNlIGFzIGZsYWdzLgotICAg
ICR2YWx1ZSAmPSAweGZmZmZmZjsKLQotICAgICMgVGhpcyBhdm9pZHMgZXZlciByZXR1cm5pbmcg
YSBoYXNoIGNvZGUgb2YgMCwgc2luY2UgdGhhdCBpcyB1c2VkIHRvCi0gICAgIyBzaWduYWwgImhh
c2ggbm90IGNvbXB1dGVkIHlldCIuIFNldHRpbmcgdGhlIGhpZ2ggYml0IG1haW50YWlucwotICAg
ICMgcmVhc29uYWJsZSBmaWRlbGl0eSB0byBhIGhhc2ggY29kZSBvZiAwIGJlY2F1c2UgaXQgaXMg
bGlrZWx5IHRvIHlpZWxkCi0gICAgIyBleGFjdGx5IDAgd2hlbiBoYXNoIGxvb2t1cCBtYXNrcyBv
dXQgdGhlIGhpZ2ggYml0cy4KLSAgICAkdmFsdWUgPSAoMHg4MDAwMDAwMCA+PiA4KSBpZiAoJHZh
bHVlID09IDApOwotCi0gICAgcmV0dXJuICR2YWx1ZTsKLX0KLQogIyBQYXVsIEhzaWVoJ3MgU3Vw
ZXJGYXN0SGFzaAogIyBodHRwOi8vd3d3LmF6aWxsaW9ubW9ua2V5cy5jb20vcWVkL2hhc2guaHRt
bAotc3ViIHN1cGVyRmFzdEhhc2ggewotICAgIG15IEBjaGFycyA9IEBfOwotCi0gICAgIyBUaGlz
IGhhc2ggaXMgZGVzaWduZWQgdG8gd29yayBvbiAxNi1iaXQgY2h1bmtzIGF0IGEgdGltZS4gQnV0
IHNpbmNlIHRoZSBub3JtYWwgY2FzZQotICAgICMgKGFib3ZlKSBpcyB0byBoYXNoIFVURi0xNiBj
aGFyYWN0ZXJzLCB3ZSBqdXN0IHRyZWF0IHRoZSA4LWJpdCBjaGFycyBhcyBpZiB0aGV5Ci0gICAg
IyB3ZXJlIDE2LWJpdCBjaHVua3MsIHdoaWNoIHNob3VsZCBnaXZlIG1hdGNoaW5nIHJlc3VsdHMK
LQotICAgIG15ICRoYXNoID0gMHg5ZTM3NzliOTsKLSAgICBteSAkbCAgICA9IHNjYWxhciBAY2hh
cnM7ICNJIHdpc2ggdGhpcyB3YXMgaW4gUnVieSAtLS0gTWFrcwotICAgIG15ICRyZW0gID0gJGwg
JiAxOwotICAgICRsID0gJGwgPj4gMTsKLQotICAgIG15ICRzID0gMDsKLQotICAgICMgTWFpbiBs
b29wCi0gICAgZm9yICg7ICRsID4gMDsgJGwtLSkgewotICAgICAgICAkaGFzaCAgICs9IG9yZCgk
Y2hhcnNbJHNdKTsKLSAgICAgICAgbXkgJHRtcCA9IGxlZnRTaGlmdChvcmQoJGNoYXJzWyRzKzFd
KSwgMTEpIF4gJGhhc2g7Ci0gICAgICAgICRoYXNoICAgPSAobGVmdFNoaWZ0KCRoYXNoLCAxNikg
JiAkbWFzazMyKSBeICR0bXA7Ci0gICAgICAgICRzICs9IDI7Ci0gICAgICAgICRoYXNoICs9ICRo
YXNoID4+IDExOwotICAgICAgICAkaGFzaCAmPSAkbWFzazMyOwotICAgIH0KLQotICAgICMgSGFu
ZGxlIGVuZCBjYXNlCi0gICAgaWYgKCRyZW0gIT0gMCkgewotICAgICAgICAkaGFzaCArPSBvcmQo
JGNoYXJzWyRzXSk7Ci0gICAgICAgICRoYXNoIF49IChsZWZ0U2hpZnQoJGhhc2gsIDExKSAmICRt
YXNrMzIpOwotICAgICAgICAkaGFzaCArPSAkaGFzaCA+PiAxNzsKLSAgICB9Ci0KLSAgICByZXR1
cm4gZmluYWxpemVBbmRNYXNrVG9wOEJpdHMoJGhhc2gpOwotfQotCi1zdWIgdWludDY0X2FkZCgk
JCkgewotICAgIG15ICgkYSwgJGIpID0gQF87Ci0gICAgbXkgJHN1bSA9ICRhICsgJGI7Ci0gICAg
cmV0dXJuICRzdW0gJiAkbWFzazY0OwotfQotCi1zdWIgdWludDY0X211bHRpKCQkKSB7Ci0gICAg
bXkgKCRhLCAkYikgPSBAXzsKLSAgICBteSAkcHJvZHVjdCA9ICRhICogJGI7Ci0gICAgcmV0dXJu
ICRwcm9kdWN0ICYgJG1hc2s2NDsKLX0KLQotc3ViIHd5bXVtKCQkKSB7Ci0gICAgbXkgKCRBLCAk
QikgPSBAXzsKLQotICAgIG15ICRoYSA9ICRBID4+IDMyOwotICAgIG15ICRoYiA9ICRCID4+IDMy
OwotICAgIG15ICRsYSA9ICRBICYgJG1hc2szMjsKLSAgICBteSAkbGIgPSAkQiAmICRtYXNrMzI7
Ci0gICAgbXkgJGhpOwotICAgIG15ICRsbzsKLSAgICBteSAkcmggPSB1aW50NjRfbXVsdGkoJGhh
LCAkaGIpOwotICAgIG15ICRybTAgPSB1aW50NjRfbXVsdGkoJGhhLCAkbGIpOwotICAgIG15ICRy
bTEgPSB1aW50NjRfbXVsdGkoJGhiLCAkbGEpOwotICAgIG15ICRybCA9IHVpbnQ2NF9tdWx0aSgk
bGEsICRsYik7Ci0gICAgbXkgJHQgPSB1aW50NjRfYWRkKCRybCwgKCRybTAgPDwgMzIpKTsKLSAg
ICBteSAkYyA9IGludCgkdCA8ICRybCk7Ci0KLSAgICAkbG8gPSB1aW50NjRfYWRkKCR0LCAoJHJt
MSA8PCAzMikpOwotICAgICRjICs9IGludCgkbG8gPCAkdCk7Ci0gICAgJGhpID0gdWludDY0X2Fk
ZCgkcmgsIHVpbnQ2NF9hZGQoKCRybTAgPj4gMzIpLCB1aW50NjRfYWRkKCgkcm0xID4+IDMyKSwg
JGMpKSk7Ci0KLSAgICByZXR1cm4gKCRsbywgJGhpKTsKLX07Ci0KLXN1YiB3eW1peCgkJCkgewot
ICAgIG15ICgkQSwgJEIpID0gQF87Ci0gICAgKCRBLCAkQikgPSB3eW11bSgkQSwgJEIpOwotICAg
IHJldHVybiAkQSBeICRCOwotfQotCi1zdWIgY29udmVydDMyQml0VG82NEJpdCgkKSB7Ci0gICAg
bXkgKCR2KSA9IEBfOwotICAgIG15ICgkbWFzazEpID0gMjgxNDcwNjgxODA4ODk1OyAgICMgMHgw
MDAwX2ZmZmZfMDAwMF9mZmZmCi0gICAgJHYgPSAoJHYgfCAoJHYgPDwgMTYpKSAmICRtYXNrMTsK
LSAgICBteSAoJG1hc2syKSA9IDcxNzc3MjE0Mjk0NTg5Njk1OyAjIDB4MDBmZl8wMGZmXzAwZmZf
MDBmZgotICAgIHJldHVybiAoJHYgfCAoJHYgPDwgOCkpICYgJG1hc2syOwotfQotCi1zdWIgY29u
dmVydDE2Qml0VG8zMkJpdCgkKSB7Ci0gICAgbXkgKCR2KSA9IEBfOwotICAgIHJldHVybiAoJHYg
fCAoJHYgPDwgOCkpICYgMHgwMGZmXzAwZmY7Ci19Ci0KLXN1YiB3eWhhc2ggewotICAgICMgaHR0
cHM6Ly9naXRodWIuY29tL3dhbmd5aS1mdWRhbi93eWhhc2gKLSAgICBteSBAY2hhcnMgPSBAXzsK
LSAgICBteSAkY2hhckNvdW50ID0gc2NhbGFyIEBjaGFyczsKLSAgICBteSAkYnl0ZUNvdW50ID0g
JGNoYXJDb3VudCA8PCAxOwotICAgIG15ICRjaGFySW5kZXggPSAwOwotICAgIG15ICRzZWVkID0g
MDsKLSAgICBteSBAc2VjcmV0ID0gKCAxMTU2MjQ2MTQxMDY3OTk0MDE0MywgMTY2NDYyODgwODY1
MDA5MTEzMjMsIDEwMjg1MjEzMjMwNjU4Mjc1MDQzLCA2Mzg0MjQ1ODc1NTg4NjgwODk5ICk7Ci0g
ICAgbXkgJG1vdmUxID0gKCgkYnl0ZUNvdW50ID4+IDMpIDw8IDIpID4+IDE7Ci0KLSAgICAkc2Vl
ZCBePSB3eW1peCgkc2VlZCBeICRzZWNyZXRbMF0sICRzZWNyZXRbMV0pOwotICAgIG15ICRhID0g
MDsKLSAgICBteSAkYiA9IDA7Ci0KLSAgICBsb2NhbCAqYzJpID0gc3ViIHsKLSAgICAgICAgbXkg
KCRpKSA9IEBfOwotICAgICAgICByZXR1cm4gb3JkKCRjaGFyc1skaV0pOwotICAgIH07Ci0KLSAg
ICBsb2NhbCAqd3lyOCA9IHN1YiB7Ci0gICAgICAgIG15ICgkaSkgPSBAXzsKLSAgICAgICAgbXkg
JHYgPSBjMmkoJGkpIHwgKGMyaSgkaSArIDEpIDw8IDgpIHwgKGMyaSgkaSArIDIpIDw8IDE2KSB8
IChjMmkoJGkgKyAzKSA8PCAyNCk7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0MzJCaXRUbzY0Qml0
KCR2KTsKLSAgICB9OwotCi0gICAgbG9jYWwgKnd5cjQgPSBzdWIgewotICAgICAgICBteSAoJGkp
ID0gQF87Ci0gICAgICAgIG15ICR2ID0gYzJpKCRpKSB8IChjMmkoJGkgKyAxKSA8PCA4KTsKLSAg
ICAgICAgcmV0dXJuIGNvbnZlcnQxNkJpdFRvMzJCaXQoJHYpOwotICAgIH07Ci0KLSAgICBsb2Nh
bCAqd3lyMiA9IHN1YiB7Ci0gICAgICAgIG15ICgkaSkgPSBAXzsKLSAgICAgICAgcmV0dXJuIGMy
aSgkaSkgPDwgMTY7Ci0gICAgfTsKLQotICAgIGlmICgkYnl0ZUNvdW50IDw9IDE2KSB7Ci0gICAg
ICAgIGlmICgkYnl0ZUNvdW50ID49IDQpIHsKLSAgICAgICAgICAgICRhID0gKHd5cjQoJGNoYXJJ
bmRleCkgPDwgMzIpIHwgd3lyNCgkY2hhckluZGV4ICsgJG1vdmUxKTsKLSAgICAgICAgICAgICRj
aGFySW5kZXggPSAkY2hhckluZGV4ICsgJGNoYXJDb3VudCAtIDI7Ci0gICAgICAgICAgICAkYiA9
ICh3eXI0KCRjaGFySW5kZXgpIDw8IDMyKSB8IHd5cjQoJGNoYXJJbmRleCAtICRtb3ZlMSk7Ci0g
ICAgICAgIH0gZWxzaWYgKCRieXRlQ291bnQgPiAwKSB7Ci0gICAgICAgICAgICAkYSA9IHd5cjIo
JGNoYXJJbmRleCk7Ci0gICAgICAgICAgICAkYiA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAkYSA9ICRiID0gMDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG15
ICRpID0gJGJ5dGVDb3VudDsKLSAgICAgICAgaWYgKCRpID4gNDgpIHsKLSAgICAgICAgICAgIG15
ICRzZWUxID0gJHNlZWQ7Ci0gICAgICAgICAgICBteSAkc2VlMiA9ICRzZWVkOwotICAgICAgICAg
ICAgZG8gewotICAgICAgICAgICAgICAgICRzZWVkID0gd3ltaXgod3lyOCgkY2hhckluZGV4KSBe
ICRzZWNyZXRbMV0sIHd5cjgoJGNoYXJJbmRleCArIDQpIF4gJHNlZWQpOwotICAgICAgICAgICAg
ICAgICRzZWUxID0gd3ltaXgod3lyOCgkY2hhckluZGV4ICsgOCkgXiAkc2VjcmV0WzJdLCB3eXI4
KCRjaGFySW5kZXggKyAxMikgXiAkc2VlMSk7Ci0gICAgICAgICAgICAgICAgJHNlZTIgPSB3eW1p
eCh3eXI4KCRjaGFySW5kZXggKyAxNikgXiAkc2VjcmV0WzNdLCB3eXI4KCRjaGFySW5kZXggKyAy
MCkgXiAkc2VlMik7Ci0gICAgICAgICAgICAgICAgJGNoYXJJbmRleCArPSAyNDsKLSAgICAgICAg
ICAgICAgICAkaSAtPSA0ODsKLSAgICAgICAgICAgIH0gd2hpbGUgKCRpID4gNDgpOwotICAgICAg
ICAgICAgJHNlZWQgXj0gJHNlZTEgXiAkc2VlMjsKLSAgICAgICAgfQotICAgICAgICB3aGlsZSAo
JGkgPiAxNikgewotICAgICAgICAgICAgJHNlZWQgPSB3eW1peCh3eXI4KCRjaGFySW5kZXgpIF4g
JHNlY3JldFsxXSwgd3lyOCgkY2hhckluZGV4ICsgNCkgXiAkc2VlZCk7Ci0gICAgICAgICAgICAk
aSAtPSAxNjsKLSAgICAgICAgICAgICRjaGFySW5kZXggKz0gODsKLSAgICAgICAgfQotICAgICAg
ICBteSAkbW92ZTIgPSAkaSA+PiAxOwotICAgICAgICAkYSA9IHd5cjgoJGNoYXJJbmRleCArICRt
b3ZlMiAtIDgpOwotICAgICAgICAkYiA9IHd5cjgoJGNoYXJJbmRleCArICRtb3ZlMiAtIDQpOwot
ICAgIH0KLSAgICAkYSBePSAkc2VjcmV0WzFdOwotICAgICRiIF49ICRzZWVkOwotCi0gICAgKCRh
LCAkYikgPSB3eW11bSgkYSwgJGIpOwotICAgIG15ICRoYXNoID0gd3ltaXgoJGEgXiAkc2VjcmV0
WzBdIF4gJGJ5dGVDb3VudCwgJGIgXiAkc2VjcmV0WzFdKSAmICRtYXNrMzI7Ci0KLSAgICByZXR1
cm4gZmluYWxpemVBbmRNYXNrVG9wOEJpdHMoJGhhc2gpOwotfQotCiBzdWIgaGFzaFZhbHVlKCQp
IHsKLSAgICBteSAkc3RyaW5nID0gJF9bMF07Ci0gICAgbXkgQGNoYXJzID0gc3BsaXQoLyAqLywg
JHN0cmluZyk7Ci0gICAgbXkgJGNoYXJDb3VudCA9IHNjYWxhciBAY2hhcnM7Ci0gICAgaWYgKCRj
aGFyQ291bnQgPD0gNDgpIHsKLSAgICAgICAgcmV0dXJuIHN1cGVyRmFzdEhhc2goQGNoYXJzKTsK
LSAgICB9Ci0gICAgcmV0dXJuIHd5aGFzaChAY2hhcnMpOworICBteSBAY2hhcnMgPSBzcGxpdCgv
ICovLCAkX1swXSk7CisKKyAgIyBUaGlzIGhhc2ggaXMgZGVzaWduZWQgdG8gd29yayBvbiAxNi1i
aXQgY2h1bmtzIGF0IGEgdGltZS4gQnV0IHNpbmNlIHRoZSBub3JtYWwgY2FzZQorICAjIChhYm92
ZSkgaXMgdG8gaGFzaCBVVEYtMTYgY2hhcmFjdGVycywgd2UganVzdCB0cmVhdCB0aGUgOC1iaXQg
Y2hhcnMgYXMgaWYgdGhleQorICAjIHdlcmUgMTYtYml0IGNodW5rcywgd2hpY2ggc2hvdWxkIGdp
dmUgbWF0Y2hpbmcgcmVzdWx0cworCisgIG15ICRFWFAyXzMyID0gNDI5NDk2NzI5NjsKKworICBt
eSAkaGFzaCA9IDB4OWUzNzc5Yjk7CisgIG15ICRsICAgID0gc2NhbGFyIEBjaGFyczsgI0kgd2lz
aCB0aGlzIHdhcyBpbiBSdWJ5IC0tLSBNYWtzCisgIG15ICRyZW0gID0gJGwgJiAxOworICAkbCA9
ICRsID4+IDE7CisKKyAgbXkgJHMgPSAwOworCisgICMgTWFpbiBsb29wCisgIGZvciAoOyAkbCA+
IDA7ICRsLS0pIHsKKyAgICAkaGFzaCAgICs9IG9yZCgkY2hhcnNbJHNdKTsKKyAgICBteSAkdG1w
ID0gbGVmdFNoaWZ0KG9yZCgkY2hhcnNbJHMrMV0pLCAxMSkgXiAkaGFzaDsKKyAgICAkaGFzaCAg
ID0gKGxlZnRTaGlmdCgkaGFzaCwgMTYpJSAkRVhQMl8zMikgXiAkdG1wOworICAgICRzICs9IDI7
CisgICAgJGhhc2ggKz0gJGhhc2ggPj4gMTE7CisgICAgJGhhc2ggJT0gJEVYUDJfMzI7CisgIH0K
KworICAjIEhhbmRsZSBlbmQgY2FzZQorICBpZiAoJHJlbSAhPSAwKSB7CisgICAgJGhhc2ggKz0g
b3JkKCRjaGFyc1skc10pOworICAgICRoYXNoIF49IChsZWZ0U2hpZnQoJGhhc2gsIDExKSUgJEVY
UDJfMzIpOworICAgICRoYXNoICs9ICRoYXNoID4+IDE3OworICB9CisKKyAgIyBGb3JjZSAiYXZh
bGFuY2hpbmciIG9mIGZpbmFsIDEyNyBiaXRzCisgICRoYXNoIF49IGxlZnRTaGlmdCgkaGFzaCwg
Myk7CisgICRoYXNoICs9ICgkaGFzaCA+PiA1KTsKKyAgJGhhc2ggPSAoJGhhc2glICRFWFAyXzMy
KTsKKyAgJGhhc2ggXj0gKGxlZnRTaGlmdCgkaGFzaCwgMiklICRFWFAyXzMyKTsKKyAgJGhhc2gg
Kz0gKCRoYXNoID4+IDE1KTsKKyAgJGhhc2ggPSAkaGFzaCUgJEVYUDJfMzI7CisgICRoYXNoIF49
IChsZWZ0U2hpZnQoJGhhc2gsIDEwKSUgJEVYUDJfMzIpOworCisgICMgU2F2ZSA4IGJpdHMgZm9y
IFN0cmluZ0ltcGwgdG8gdXNlIGFzIGZsYWdzLgorICAkaGFzaCAmPSAweGZmZmZmZjsKKworICAj
IFRoaXMgYXZvaWRzIGV2ZXIgcmV0dXJuaW5nIGEgaGFzaCBjb2RlIG9mIDAsIHNpbmNlIHRoYXQg
aXMgdXNlZCB0bworICAjIHNpZ25hbCAiaGFzaCBub3QgY29tcHV0ZWQgeWV0Ii4gU2V0dGluZyB0
aGUgaGlnaCBiaXQgbWFpbnRhaW5zCisgICMgcmVhc29uYWJsZSBmaWRlbGl0eSB0byBhIGhhc2gg
Y29kZSBvZiAwIGJlY2F1c2UgaXQgaXMgbGlrZWx5IHRvIHlpZWxkCisgICMgZXhhY3RseSAwIHdo
ZW4gaGFzaCBsb29rdXAgbWFza3Mgb3V0IHRoZSBoaWdoIGJpdHMuCisgICRoYXNoID0gKDB4ODAw
MDAwMDAgPj4gOCkgaWYgKCRoYXNoID09IDApOworCisgIHJldHVybiAkaGFzaDsKIH0KIAogc3Vi
IG91dHB1dCgpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0J5dGVjb2RlQ2FjaGVWZXJzaW9uLmNwcC5pbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0J5dGVjb2RlQ2FjaGVWZXJzaW9uLmNwcC5pbgppbmRleCBmNGY4ZWI3NDY3ZmYuLjMy
ZDJjNWQ5NTQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
Qnl0ZWNvZGVDYWNoZVZlcnNpb24uY3BwLmluCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0J5dGVjb2RlQ2FjaGVWZXJzaW9uLmNwcC5pbgpAQCAtMiw2ICsyLDYgQEAKICNp
bmNsdWRlICJKU0NCeXRlY29kZUNhY2hlVmVyc2lvbi5oIgogCiAjaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3VwZXJGYXN0SGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0hhc2hlci5oPgogCi1jb25zdCB1aW50MzJfdCBKU0NCeXRlY29kZUNhY2hlVmVyc2lv
biA9IFN1cGVyRmFzdEhhc2g6OmNvbXB1dGVIYXNoKENBQ0hFRF9UWVBFU19DS1NVTSk7Citjb25z
dCB1aW50MzJfdCBKU0NCeXRlY29kZUNhY2hlVmVyc2lvbiA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0
ZUhhc2goQ0FDSEVEX1RZUEVTX0NLU1VNKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuY3BwCmluZGV4IGFiZmI4NjZlMTcyOS4uMGM1MDJlMzFiMzQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogIENv
cHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCi0gKiAgQ29weXJp
Z2h0IChDKSAyMDAzLTIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogIENv
cHlyaWdodCAoQykgMjAwMy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yOTksNyArMjk5LDcgQEAgTkVWRVJfSU5MSU5FIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggTk9UX1RBSUxfQ0FMTEVEIHZvaWQgcmVwb3J0WmFwcGVkQ2VsbEFu
ZENyYXMKICAgICBNYXJrZWRCbG9jayogZm91bmRCbG9jayA9IG51bGxwdHI7CiAgICAgaWYgKGZv
dW5kQmxvY2tIYW5kbGUpIHsKICAgICAgICAgZm91bmRCbG9jayA9ICZmb3VuZEJsb2NrSGFuZGxl
LT5ibG9jaygpOwotICAgICAgICBzdWJzcGFjZUhhc2ggPSBTdXBlckZhc3RIYXNoOjpjb21wdXRl
SGFzaChmb3VuZEJsb2NrSGFuZGxlLT5zdWJzcGFjZSgpLT5uYW1lKCkpOworICAgICAgICBzdWJz
cGFjZUhhc2ggPSBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoKGZvdW5kQmxvY2tIYW5kbGUtPnN1
YnNwYWNlKCktPm5hbWUoKSk7CiAgICAgICAgIGNlbGxTaXplID0gZm91bmRCbG9ja0hhbmRsZS0+
Y2VsbFNpemUoKTsKIAogICAgICAgICB2YXJpb3VzU3RhdGUgfD0gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGZvdW5kQmxvY2tIYW5kbGUtPmlzRnJlZUxpc3RlZCgpKSA8PCAwOwpAQCAtMzM1LDcgKzMz
NSw3IEBAIE5FVkVSX0lOTElORSBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIE5PVF9UQUlMX0NBTExF
RCB2b2lkIHJlcG9ydFphcHBlZENlbGxBbmRDcmFzCiAgICAgICAgICAgICByZXR1cm4gSXRlcmF0
aW9uU3RhdHVzOjpDb250aW51ZTsKICAgICAgICAgfSk7CiAgICAgICAgIGlmIChmb3VuZFByZWNp
c2VBbGxvY2F0aW9uKSB7Ci0gICAgICAgICAgICBzdWJzcGFjZUhhc2ggPSBTdXBlckZhc3RIYXNo
Ojpjb21wdXRlSGFzaChmb3VuZFByZWNpc2VBbGxvY2F0aW9uLT5zdWJzcGFjZSgpLT5uYW1lKCkp
OworICAgICAgICAgICAgc3Vic3BhY2VIYXNoID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaChm
b3VuZFByZWNpc2VBbGxvY2F0aW9uLT5zdWJzcGFjZSgpLT5uYW1lKCkpOwogICAgICAgICAgICAg
Y2VsbFNpemUgPSBmb3VuZFByZWNpc2VBbGxvY2F0aW9uLT5jZWxsU2l6ZSgpOwogCiAgICAgICAg
ICAgICB2YXJpb3VzU3RhdGUgfD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGlzRnJlZUxpc3RlZCkg
PDwgMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yLmgKaW5kZXggYzU3MzNkMWRjNWMyLi44ZjQ4NDIzNjIyZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlT2JqZWN0RGVz
Y3JpcHRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBsYXRlT2Jq
ZWN0RGVzY3JpcHRvci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgotICogQ29weXJpZ2h0IChD
KSAyMDE5LTIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNyArOTcsNyBAQCBpbmxpbmUgVGVtcGxhdGVPYmplY3RE
ZXNjcmlwdG9yOjpUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IoRW1wdHlWYWx1ZVRhZykKIAogaW5s
aW5lIHVuc2lnbmVkIFRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y2FsY3VsYXRlSGFzaChjb25z
dCBTdHJpbmdWZWN0b3ImIHJhd1N0cmluZ3MpCiB7Ci0gICAgU3VwZXJGYXN0SGFzaCBoYXNoZXI7
CisgICAgU3RyaW5nSGFzaGVyIGhhc2hlcjsKICAgICBmb3IgKGNvbnN0IFN0cmluZyYgc3RyaW5n
IDogcmF3U3RyaW5ncykgewogICAgICAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQogICAgICAgICAg
ICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0cmluZy5sZW5n
dGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJW
TS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKaW5kZXgg
NWNmMDRkM2EzNjViLi43ZTU1ZmQzNzA3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9KU0RvbGxhclZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvSlNEb2xsYXJWTS5jcHAKQEAgLTc0NCwxMSArNzQ0LDE1IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X1NFVFRFUih0ZXN0U3RhdGljQWNjZXNzb3JQdXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0CiAgICAgcmV0dXJuIHRoaXNPYmplY3QtPnB1dERpcmVjdCh2bSwgUHJvcGVydHlOYW1l
KElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0ZXN0RmllbGQiX3MpKSwgSlNWYWx1ZTo6ZGVj
b2RlKHZhbHVlKSk7CiB9CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBz
dGF0aWNDdXN0b21BY2Nlc3NvclRhYmxlSW5kZXhbNV0gPSB7Ci0gICAgeyAwLCA0IH0sCitzdGF0
aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggc3RhdGljQ3VzdG9tQWNjZXNzb3JUYWJs
ZUluZGV4WzldID0geworICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IDIs
IC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IDAsIDggfSwKKyAgICB7IC0xLCAtMSB9LAor
ICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKICAgICB7IDEsIC0xIH0sCiB9OwogCkBA
IC03NTksNyArNzYzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBIYXNoVGFibGVWYWx1ZSBzdGF0
aWNDdXN0b21BY2Nlc3NvclRhYmxlVmFsdWVzWzNdID0gewogfTsKIAogc3RhdGljIGNvbnN0IHN0
cnVjdCBIYXNoVGFibGUgc3RhdGljQ3VzdG9tQWNjZXNzb3JUYWJsZSA9Ci0gICAgeyAzLCAzLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6Q3VzdG9tQWNjZXNzb3IsIG51bGxwdHIsIHN0YXRpY0N1c3Rv
bUFjY2Vzc29yVGFibGVWYWx1ZXMsIHN0YXRpY0N1c3RvbUFjY2Vzc29yVGFibGVJbmRleCB9Owor
ICAgIHsgMywgNywgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkN1c3RvbUFjY2Vzc29yLCBudWxscHRy
LCBzdGF0aWNDdXN0b21BY2Nlc3NvclRhYmxlVmFsdWVzLCBzdGF0aWNDdXN0b21BY2Nlc3NvclRh
YmxlSW5kZXggfTsKIAogY2xhc3MgU3RhdGljQ3VzdG9tQWNjZXNzb3IgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CkBAIC04NDAs
MTIgKzg0NCwxNSBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIodGVzdFN0YXRpY1ZhbHVlUHV0
dGVyU2V0RmxhZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIHJldHVybiB0aGlzT2Jq
ZWN0LT5wdXREaXJlY3Qodm0sIFByb3BlcnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZt
LCAidGVzdFN0YXRpY1ZhbHVlU2V0dGVyQ2FsbGVkIl9zKSksIGpzQm9vbGVhbih0cnVlKSk7CiB9
CiAKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBzdGF0aWNDdXN0b21WYWx1
ZVRhYmxlSW5kZXhbNV0gPSB7Ci0gICAgeyAxLCA0IH0sCitzdGF0aWMgY29uc3Qgc3RydWN0IENv
bXBhY3RIYXNoSW5kZXggc3RhdGljQ3VzdG9tVmFsdWVUYWJsZUluZGV4WzhdID0geworICAgIHsg
MSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEg
fSwKKyAgICB7IDMsIC0xIH0sCiAgICAgeyAyLCAtMSB9LAogICAgIHsgMCwgLTEgfSwKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgMywgLTEgfSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFz
aFRhYmxlVmFsdWUgc3RhdGljQ3VzdG9tVmFsdWVUYWJsZVZhbHVlc1s0XSA9IHsKQEAgLTg1Niw3
ICs4NjMsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hUYWJsZVZhbHVlIHN0YXRpY0N1c3Rv
bVZhbHVlVGFibGVWYWx1ZXNbNF0gPSB7CiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IEhhc2hU
YWJsZSBzdGF0aWNDdXN0b21WYWx1ZVRhYmxlID0KLSAgICB7IDQsIDMsIFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpDdXN0b21WYWx1ZSwgbnVsbHB0ciwgc3RhdGljQ3VzdG9tVmFsdWVUYWJsZVZhbHVl
cywgc3RhdGljQ3VzdG9tVmFsdWVUYWJsZUluZGV4IH07CisgICAgeyA0LCA3LCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6Q3VzdG9tVmFsdWUsIG51bGxwdHIsIHN0YXRpY0N1c3RvbVZhbHVlVGFibGVW
YWx1ZXMsIHN0YXRpY0N1c3RvbVZhbHVlVGFibGVJbmRleCB9OwogCiBjbGFzcyBTdGF0aWNDdXN0
b21WYWx1ZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB1c2luZyBCYXNlID0gSlNO
b25GaW5hbE9iamVjdDsKQEAgLTkzNCwxMiArOTQxLDE1IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihzdGF0aWNEb250RGVsZXRlRG9udEVudW1NZXRob2QsIChKU0dsb2JhbE9iamVjdCosIENh
bGxGCiAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgY29uc3Qg
c3RydWN0IENvbXBhY3RIYXNoSW5kZXggc3RhdGljRG9udERlbGV0ZURvbnRFbnVtVGFibGVJbmRl
eFs1XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCBzdGF0aWNEb250
RGVsZXRlRG9udEVudW1UYWJsZUluZGV4WzhdID0gewogICAgIHsgMCwgLTEgfSwKLSAgICB7IDEs
IDQgfSwKKyAgICB7IDEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAog
ICAgIHsgLTEsIC0xIH0sCiAgICAgeyAyLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAt
MSwgLTEgfSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxlVmFsdWUgc3RhdGlj
RG9udERlbGV0ZURvbnRFbnVtVGFibGVWYWx1ZXNbM10gPSB7CkBAIC05NDksNyArOTU5LDcgQEAg
c3RhdGljIGNvbnN0IHN0cnVjdCBIYXNoVGFibGVWYWx1ZSBzdGF0aWNEb250RGVsZXRlRG9udEVu
dW1UYWJsZVZhbHVlc1szXSA9IHsKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgSGFzaFRhYmxl
IHN0YXRpY0RvbnREZWxldGVEb250RW51bVRhYmxlID0KLSAgICB7IDMsIDMsIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlLCBudWxscHRy
LCBzdGF0aWNEb250RGVsZXRlRG9udEVudW1UYWJsZVZhbHVlcywgc3RhdGljRG9udERlbGV0ZURv
bnRFbnVtVGFibGVJbmRleCB9OworICAgIHsgMywgNywgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUsIG51bGxwdHIsIHN0YXRpY0RvbnRE
ZWxldGVEb250RW51bVRhYmxlVmFsdWVzLCBzdGF0aWNEb250RGVsZXRlRG9udEVudW1UYWJsZUlu
ZGV4IH07CiAKIGNsYXNzIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhvdXRDb3JyZWN0U2xv
dFN0YXR1cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICB1c2luZyBCYXNlID0gSlNO
b25GaW5hbE9iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9W
TUluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3Iu
Y3BwCmluZGV4IGM2NTA0MzhlN2FjNC4uOWVjYjBjNjgyYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdG9vbHMvVk1JbnNwZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90b29scy9WTUluc3BlY3Rvci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE3LTIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02OTcsNyArNjk3LDcgQEAgdm9pZCBW
TUluc3BlY3Rvcjo6ZHVtcFN1YnNwYWNlSGFzaGVzKFZNKiB2bSkKICAgICB1bnNpZ25lZCBjb3Vu
dCA9IDA7CiAgICAgdm0tPmhlYXAub2JqZWN0U3BhY2UoKS5mb3JFYWNoU3Vic3BhY2UoWyZdIChj
b25zdCBTdWJzcGFjZSYgc3Vic3BhY2UpIC0+IEl0ZXJhdGlvblN0YXR1cyB7CiAgICAgICAgIGNv
bnN0IGNoYXIqIG5hbWUgPSBzdWJzcGFjZS5uYW1lKCk7Ci0gICAgICAgIHVuc2lnbmVkIGhhc2gg
PSBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaChuYW1lKTsKKyAgICAgICAgdW5zaWduZWQgaGFz
aCA9IFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2gobmFtZSk7CiAgICAgICAgIHZvaWQqIGhhc2hB
c1B0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaGFz
aCkpOwogICAgICAgICBkYXRhTG9nTG4oIiAgICBbIiwgY291bnQrKywgIl0gIiwgbmFtZSwgIiBI
YXNoOiIsIFJhd1BvaW50ZXIoaGFzaEFzUHRyKSk7CiAgICAgICAgIHJldHVybiBJdGVyYXRpb25T
dGF0dXM6OkNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
aGFzaGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvaGFzaGVyLnB5CmluZGV4IGQz
YjY2YzM4MWRkNS4uZTk1MzY1ZTYyYzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9oYXNoZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvaGFzaGVy
LnB5CkBAIC00LDcgKzQsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kZXJzIENhcmxzc29u
IDxhbmRlcnNjYUBtYWMuY29tPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgU2FtdWVsIFdl
aW5pZyA8c2FtQHdlYmtpdC5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1
cnlha292IDxhcEB3ZWJraXQub3JnPgotIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdo
dCAoQykgMjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KICMgQ29weXJpZ2h0
IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCkBAIC0yNiw0NSArMjYsMTIgQEAKICMgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKICMgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCiAKLW1hc2s2NCA9IDIqKjY0IC0gMQotbWFzazMyID0gMioq
MzIgLSAxCi1zZWNyZXQgPSBbMTE1NjI0NjE0MTA2Nzk5NDAxNDMsIDE2NjQ2Mjg4MDg2NTAwOTEx
MzIzLCAxMDI4NTIxMzIzMDY1ODI3NTA0MywgNjM4NDI0NTg3NTU4ODY4MDg5OV0KIAogZGVmIHN0
cmluZ0hhc2goc3RyKToKLSAgICBzdHJMZW4gPSBsZW4oc3RyKQotICAgIGlmIHN0ckxlbiA8PSA0
ODoKLSAgICAgICAgcmV0dXJuIHN1cGVyRmFzdEhhc2goc3RyKQotICAgIHJldHVybiB3eWhhc2go
c3RyKQotCi0KLWRlZiBmaW5hbGl6ZUFuZE1hc2tUb3A4Qml0cyh2YWx1ZSk6Ci0gICAgdmFsdWUg
Jj0gbWFzazMyCi0KLSAgICAjIEZvcmNlICJhdmFsYW5jaGluZyIgb2YgbG93ZXIgMzIgYml0cwot
ICAgIHZhbHVlIF49ICh2YWx1ZSA8PCAzKQotICAgIHZhbHVlICs9ICh2YWx1ZSA+PiA1KQotICAg
IHZhbHVlICY9IG1hc2szMgotICAgIHZhbHVlIF49ICgodmFsdWUgPDwgMikgJiBtYXNrMzIpCi0g
ICAgdmFsdWUgKz0gKHZhbHVlID4+IDE1KQotICAgIHZhbHVlICY9IG1hc2szMgotICAgIHZhbHVl
IF49ICgodmFsdWUgPDwgMTApICYgbWFzazMyKQotCi0gICAgIyBTYXZlIDggYml0cyBmb3IgU3Ry
aW5nSW1wbCB0byB1c2UgYXMgZmxhZ3MuCi0gICAgdmFsdWUgJj0gMHhmZmZmZmYKLQotICAgICMg
VGhpcyBhdm9pZHMgZXZlciByZXR1cm5pbmcgYSBoYXNoIGNvZGUgb2YgMCwgc2luY2UgdGhhdCBp
cyB1c2VkIHRvCi0gICAgIyBzaWduYWwgImhhc2ggbm90IGNvbXB1dGVkIHlldCIuIFNldHRpbmcg
dGhlIGhpZ2ggYml0IG1haW50YWlucwotICAgICMgcmVhc29uYWJsZSBmaWRlbGl0eSB0byBhIGhh
c2ggY29kZSBvZiAwIGJlY2F1c2UgaXQgaXMgbGlrZWx5IHRvIHlpZWxkCi0gICAgIyBleGFjdGx5
IDAgd2hlbiBoYXNoIGxvb2t1cCBtYXNrcyBvdXQgdGhlIGhpZ2ggYml0cy4KLSAgICBpZiBub3Qg
dmFsdWU6Ci0gICAgICAgIHZhbHVlID0gMHg4MDAwMDAKLSAgICByZXR1cm4gdmFsdWUKLQotCi1k
ZWYgc3VwZXJGYXN0SGFzaChzdHIpOgogICAgICMgSW1wbGVtZW50cyBQYXVsIEhzaWVoJ3MgU3Vw
ZXJGYXN0SGFzaCAtIGh0dHA6Ly93d3cuYXppbGxpb25tb25rZXlzLmNvbS9xZWQvaGFzaC5odG1s
CiAgICAgIyBMQ2hhciBkYXRhIGlzIGludGVycHJldGVkIGFzIExhdGluLTEtZW5jb2RlZCAoemVy
byBleHRlbmRlZCB0byAxNiBiaXRzKS4KICAgICBzdHJpbmdIYXNoaW5nU3RhcnRWYWx1ZSA9IDB4
OUUzNzc5QjkKKyAgICB0d29UbzMyID0gNDI5NDk2NzI5NgogCiAgICAgaGFzaCA9IHN0cmluZ0hh
c2hpbmdTdGFydFZhbHVlCiAKQEAgLTc0LDE3NCArNDEsMzEgQEAgZGVmIHN1cGVyRmFzdEhhc2go
c3RyKToKIAogICAgICMgTWFpbiBsb29wCiAgICAgd2hpbGUgY2hhcmFjdGVyUGFpcnMgPiAwOgot
ICAgICAgICBoYXNoICs9IG9yZChzdHJbMF0pCisgICAgICAgIGhhc2ggPSBoYXNoICsgb3JkKHN0
clswXSkKICAgICAgICAgdG1wID0gKG9yZChzdHJbMV0pIDw8IDExKSBeIGhhc2gKLSAgICAgICAg
aGFzaCA9ICgoaGFzaCA8PCAxNikgJiBtYXNrMzIpIF4gdG1wCisgICAgICAgIGhhc2ggPSAoKGhh
c2ggPDwgMTYpICUgdHdvVG8zMikgXiB0bXAKICAgICAgICAgc3RyID0gc3RyWzI6XQotICAgICAg
ICBoYXNoICs9IChoYXNoID4+IDExKQotICAgICAgICBoYXNoICY9IG1hc2szMgorICAgICAgICBo
YXNoID0gaGFzaCArIChoYXNoID4+IDExKQorICAgICAgICBoYXNoID0gaGFzaCAlIHR3b1RvMzIK
ICAgICAgICAgY2hhcmFjdGVyUGFpcnMgPSBjaGFyYWN0ZXJQYWlycyAtIDEKIAogICAgICMgSGFu
ZGxlIGVuZCBjYXNlCiAgICAgaWYgcmVtYWluZGVyOgotICAgICAgICBoYXNoICs9IG9yZChzdHJb
MF0pCi0gICAgICAgIGhhc2ggXj0gKChoYXNoIDw8IDExKSAmIG1hc2szMikKLSAgICAgICAgaGFz
aCArPSAoaGFzaCA+PiAxNykKLQotICAgIHJldHVybiBmaW5hbGl6ZUFuZE1hc2tUb3A4Qml0cyho
YXNoKQotCi0KLWRlZiB3eWhhc2goc3RyaW5nKToKLSAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS93
YW5neWktZnVkYW4vd3loYXNoCi0gICAgZGVmIGFkZDY0KGEsIGIpOgotICAgICAgICByZXR1cm4g
KGEgKyBiKSAmIG1hc2s2NAotCi0gICAgZGVmIG11bHRpNjQoYSwgYik6Ci0gICAgICAgIHJldHVy
biBhICogYiAmIG1hc2s2NAotCi0gICAgZGVmIHd5bXVtKEEsIEIpOgotICAgICAgICBoYSA9IEEg
Pj4gMzIKLSAgICAgICAgaGIgPSBCID4+IDMyCi0gICAgICAgIGxhID0gQSAmIG1hc2szMgotICAg
ICAgICBsYiA9IEIgJiBtYXNrMzIKLSAgICAgICAgcmggPSBtdWx0aTY0KGhhLCBoYikKLSAgICAg
ICAgcm0wID0gbXVsdGk2NChoYSwgbGIpCi0gICAgICAgIHJtMSA9IG11bHRpNjQoaGIsIGxhKQot
ICAgICAgICBybCA9IG11bHRpNjQobGEsIGxiKQotICAgICAgICB0ID0gYWRkNjQocmwsIChybTAg
PDwgMzIpKQotICAgICAgICBjID0gaW50KHQgPCBybCkKLQotICAgICAgICBsbyA9IGFkZDY0KHQs
IChybTEgPDwgMzIpKQotICAgICAgICBjICs9IGludChsbyA8IHQpCi0gICAgICAgIGhpID0gYWRk
NjQocmgsIGFkZDY0KChybTAgPj4gMzIpLCBhZGQ2NCgocm0xID4+IDMyKSwgYykpKQotICAgICAg
ICByZXR1cm4gbG8sIGhpCi0KLSAgICBkZWYgd3ltaXgoQSwgQik6Ci0gICAgICAgIEEsIEIgPSB3
eW11bShBLCBCKQotICAgICAgICByZXR1cm4gQSBeIEIKLQotICAgIGRlZiBjb252ZXJ0MzJCaXRU
bzY0Qml0KHYpOgotICAgICAgICB2ID0gKHYgfCAodiA8PCAxNikpICYgMHgwMDAwX2ZmZmZfMDAw
MF9mZmZmCi0gICAgICAgIHJldHVybiAodiB8ICh2IDw8IDgpKSAmIDB4MDBmZl8wMGZmXzAwZmZf
MDBmZgotCi0gICAgZGVmIGNvbnZlcnQxNkJpdFRvMzJCaXQodik6Ci0gICAgICAgIHJldHVybiAo
diB8ICh2IDw8IDgpKSAmIDB4MDBmZl8wMGZmCi0KLSAgICBjaGFyQ291bnQgPSBsZW4oc3RyaW5n
KQotICAgIGJ5dGVDb3VudCA9IGNoYXJDb3VudCA8PCAxCi0gICAgY2hhckluZGV4ID0gMAotICAg
IHNlZWQgPSAwCi0gICAgbW92ZTEgPSAoKGJ5dGVDb3VudCA+PiAzKSA8PCAyKSA+PiAxCi0KLSAg
ICBzZWVkIF49IHd5bWl4KHNlZWQgXiBzZWNyZXRbMF0sIHNlY3JldFsxXSkKLSAgICBhID0gMAot
ICAgIGIgPSAwCi0KLSAgICBkZWYgYzJpKGkpOgotICAgICAgICByZXR1cm4gb3JkKHN0cmluZ1tp
XSkKLQotICAgIGRlZiB3eXI4KGkpOgotICAgICAgICB2ID0gYzJpKGkpIHwgKGMyaShpICsgMSkg
PDwgOCkgfCAoYzJpKGkgKyAyKSA8PCAxNikgfCAoYzJpKGkgKyAzKSA8PCAyNCkKLSAgICAgICAg
cmV0dXJuIGNvbnZlcnQzMkJpdFRvNjRCaXQodikKLQotICAgIGRlZiB3eXI0KGkpOgotICAgICAg
ICB2ID0gYzJpKGkpIHwgKGMyaShpICsgMSkgPDwgOCkKLSAgICAgICAgcmV0dXJuIGNvbnZlcnQx
NkJpdFRvMzJCaXQodikKLQotICAgIGRlZiB3eXIyKGkpOgotICAgICAgICByZXR1cm4gYzJpKGkp
IDw8IDE2Ci0KLSAgICBpZiBieXRlQ291bnQgPD0gMTY6Ci0gICAgICAgIGlmIGJ5dGVDb3VudCA+
PSA0OgotICAgICAgICAgICAgYSA9ICh3eXI0KGNoYXJJbmRleCkgPDwgMzIpIHwgd3lyNChjaGFy
SW5kZXggKyBtb3ZlMSkKLSAgICAgICAgICAgIGNoYXJJbmRleCA9IGNoYXJJbmRleCArIGNoYXJD
b3VudCAtIDIKLSAgICAgICAgICAgIGIgPSAod3lyNChjaGFySW5kZXgpIDw8IDMyKSB8IHd5cjQo
Y2hhckluZGV4IC0gbW92ZTEpCi0gICAgICAgIGVsaWYgYnl0ZUNvdW50ID4gMDoKLSAgICAgICAg
ICAgIGEgPSB3eXIyKGNoYXJJbmRleCkKLSAgICAgICAgICAgIGIgPSAwCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBhID0gYiA9IDAKLSAgICBlbHNlOgotICAgICAgICBpID0gYnl0ZUNvdW50
Ci0gICAgICAgIGlmIGkgPiA0ODoKLSAgICAgICAgICAgIHNlZTEgPSBzZWVkCi0gICAgICAgICAg
ICBzZWUyID0gc2VlZAotICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICBz
ZWVkID0gd3ltaXgod3lyOChjaGFySW5kZXgpIF4gc2VjcmV0WzFdLCB3eXI4KGNoYXJJbmRleCAr
IDQpIF4gc2VlZCkKLSAgICAgICAgICAgICAgICBzZWUxID0gd3ltaXgod3lyOChjaGFySW5kZXgg
KyA4KSBeIHNlY3JldFsyXSwgd3lyOChjaGFySW5kZXggKyAxMikgXiBzZWUxKQotICAgICAgICAg
ICAgICAgIHNlZTIgPSB3eW1peCh3eXI4KGNoYXJJbmRleCArIDE2KSBeIHNlY3JldFszXSwgd3ly
OChjaGFySW5kZXggKyAyMCkgXiBzZWUyKQotICAgICAgICAgICAgICAgIGNoYXJJbmRleCArPSAy
NAotICAgICAgICAgICAgICAgIGkgLT0gNDgKLSAgICAgICAgICAgICAgICBpZiBpIDw9IDQ4Ogot
ICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgc2VlZCBePSBzZWUxIF4gc2Vl
MgotICAgICAgICB3aGlsZSBpID4gMTY6Ci0gICAgICAgICAgICBzZWVkID0gd3ltaXgod3lyOChj
aGFySW5kZXgpIF4gc2VjcmV0WzFdLCB3eXI4KGNoYXJJbmRleCArIDQpIF4gc2VlZCkKLSAgICAg
ICAgICAgIGkgLT0gMTYKLSAgICAgICAgICAgIGNoYXJJbmRleCArPSA4Ci0gICAgICAgIG1vdmUy
ID0gaSA+PiAxCi0gICAgICAgIGEgPSB3eXI4KGNoYXJJbmRleCArIG1vdmUyIC0gOCkKLSAgICAg
ICAgYiA9IHd5cjgoY2hhckluZGV4ICsgbW92ZTIgLSA0KQotICAgIGEgXj0gc2VjcmV0WzFdCi0g
ICAgYiBePSBzZWVkCi0KLSAgICAoYSwgYikgPSB3eW11bShhLCBiKQotICAgIGhhc2hWYWx1ZSA9
IHd5bWl4KGEgXiBzZWNyZXRbMF0gXiBieXRlQ291bnQsIGIgXiBzZWNyZXRbMV0pICYgbWFzazMy
Ci0KLSAgICByZXR1cm4gZmluYWxpemVBbmRNYXNrVG9wOEJpdHMoaGFzaFZhbHVlKQotCi0KLWRl
ZiBjZWlsaW5nVG9Qb3dlck9mMih2KToKLSAgICB2IC09IDEKLSAgICB2IHw9IHYgPj4gMQotICAg
IHYgfD0gdiA+PiAyCi0gICAgdiB8PSB2ID4+IDQKLSAgICB2IHw9IHYgPj4gOAotICAgIHYgfD0g
diA+PiAxNgotICAgIHYgKz0gMQotICAgIHJldHVybiB2Ci0KKyAgICAgICAgaGFzaCA9IGhhc2gg
KyBvcmQoc3RyWzBdKQorICAgICAgICBoYXNoID0gaGFzaCBeICgoaGFzaCA8PCAxMSkgJSB0d29U
bzMyKQorICAgICAgICBoYXNoID0gaGFzaCArIChoYXNoID4+IDE3KQogCi0jIFRoaXMgaXMgdXNl
ZCB0byBjb21wdXRlIENvbXBhY3RIYXNoSW5kZXggaW4gSlNEb2xsYXJWTS5jcHAsCi0jIHdoZXJl
IHRoZSBpbmRleE1hc2sgaW4gdGhlIGNvcnJlc3BvbmRpbmcgSGFzaFRhYmxlIHNob3VsZAotIyBi
ZSBudW1FbnRyaWVzIC0gMS4KLWRlZiBjcmVhdGVIYXNoVGFibGUoa2V5cywgaGFzaFRhYmxlTmFt
ZSwgY29tcGFjdFNpemU9MCk6Ci0gICAgdGFibGUgPSB7fQotICAgIGxpbmtzID0ge30KLSAgICBp
ZiBjb21wYWN0U2l6ZSA9PSAwOgotICAgICAgICBjb21wYWN0U2l6ZSA9IGNlaWxpbmdUb1Bvd2Vy
T2YyKGxlbihrZXlzKSkKKyAgICBoYXNoID0gaGFzaCBeIChoYXNoIDw8IDMpCisgICAgaGFzaCA9
IGhhc2ggKyAoaGFzaCA+PiA1KQorICAgIGhhc2ggPSBoYXNoICUgdHdvVG8zMgorICAgIGhhc2gg
PSBoYXNoIF4gKChoYXNoIDw8IDIpICUgdHdvVG8zMikKKyAgICBoYXNoID0gaGFzaCArIChoYXNo
ID4+IDE1KQorICAgIGhhc2ggPSBoYXNoICUgdHdvVG8zMgorICAgIGhhc2ggPSBoYXNoIF4gKCho
YXNoIDw8IDEwKSAlIHR3b1RvMzIpCiAKLSAgICBtYXhEZXB0aCA9IDAKLSAgICBjb2xsaXNpb25z
ID0gMAotICAgIG51bUVudHJpZXMgPSBjb21wYWN0U2l6ZQotICAgIHByaW50KG51bUVudHJpZXMp
CisgICAgaGFzaCA9IGhhc2ggJiAweGZmZmZmZgogCi0gICAgaSA9IDAKLSAgICBmb3Iga2V5IGlu
IGtleXM6Ci0gICAgICAgIGRlcHRoID0gMAotICAgICAgICBoYXNoVmFsdWUgPSBzdHJpbmdIYXNo
KGtleSkgJSBudW1FbnRyaWVzCi0gICAgICAgIHdoaWxlIGhhc2hWYWx1ZSBpbiB0YWJsZToKLSAg
ICAgICAgICAgIGlmIGhhc2hWYWx1ZSBpbiBsaW5rczoKLSAgICAgICAgICAgICAgICBoYXNoVmFs
dWUgPSBsaW5rc1toYXNoVmFsdWVdCi0gICAgICAgICAgICAgICAgZGVwdGggKz0gMQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjb2xsaXNpb25zICs9IDEKLSAgICAgICAgICAg
ICAgICBsaW5rc1toYXNoVmFsdWVdID0gY29tcGFjdFNpemUKLSAgICAgICAgICAgICAgICBoYXNo
VmFsdWUgPSBjb21wYWN0U2l6ZQotICAgICAgICAgICAgICAgIGNvbXBhY3RTaXplICs9IDEKLSAg
ICAgICAgdGFibGVbaGFzaFZhbHVlXSA9IGkKLSAgICAgICAgaSArPSAxCi0gICAgICAgIGlmIGRl
cHRoID4gbWF4RGVwdGg6Ci0gICAgICAgICAgICBtYXhEZXB0aCA9IGRlcHRoCisgICAgaWYgbm90
IGhhc2g6CisgICAgICAgIGhhc2ggPSAweDgwMDAwMAogCi0gICAgc3RyaW5nID0gInN0YXRpYyBj
b25zdCBzdHJ1Y3QgQ29tcGFjdEhhc2hJbmRleCB7fVt7fV0gPSB7e1xuIi5mb3JtYXQoaGFzaFRh
YmxlTmFtZSwgY29tcGFjdFNpemUpCi0gICAgZm9yIGkgaW4gcmFuZ2UoY29tcGFjdFNpemUpOgot
ICAgICAgICBUID0gLTEKLSAgICAgICAgaWYgaSBpbiB0YWJsZToKLSAgICAgICAgICAgIFQgPSB0
YWJsZVtpXQotICAgICAgICBMID0gLTEKLSAgICAgICAgaWYgaSBpbiBsaW5rczoKLSAgICAgICAg
ICAgIEwgPSBsaW5rc1tpXQotICAgICAgICBzdHJpbmcgKz0gJyAgICB7eyB7fSwge30gfX0sXG4n
LmZvcm1hdChULCBMKQotICAgIHN0cmluZyArPSAnfTtcblxuJwotICAgIHJldHVybiBzdHJpbmcK
KyAgICByZXR1cm4gaGFzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggNzhiYzE4YTFjMDBiLi4xMGRlNGY2NTM0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODQ2LDEwICs4NDYsNyBAQAogCQlGRUMyNkJGMzI4OURC
QkQzMDA2MzlBNTkgLyogRnVuY3Rpb25QdHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFQzI2QkYyMjg5REJCRDMwMDYzOUE1OSAvKiBGdW5jdGlvblB0
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZF
REFDRDNEMTYzMEY4M0YwMEM2OTYzNCAvKiBTdGFja1N0YXRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFREFDRDNCMTYzMEY4M0YwMEM2OTYzNCAv
KiBTdGFja1N0YXRzLmNwcCAqLzsgfTsKIAkJRkVFQTRERjkyMTZEN0JFNDAwQUMwNjAyIC8qIFN0
YWNrUG9pbnRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRUVBNERGODIxNkQ3QkU0MDBBQzA2MDIgLyogU3RhY2tQb2ludGVyLmNwcCAqLzsgfTsK
LQkJRkY0MUFDNjcyQTc5QzlCQTAwQUMwRkE1IC8qIFdZSGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY0MUFDNjYyQTc5QzlCOTAwQUMwRkE1IC8q
IFdZSGFzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZGODk1RjExMjgyQUI5NjQwMEU3QkFFOCAvKiBDb21wYWN0UmVmUHRyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjg5NUYxMDI4MkFCOTY0MDBF
N0JBRTggLyogQ29tcGFjdFJlZlB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07Ci0JCUZGOENCNDAxMkE4OEMwRDMwMDRBRjQ5OCAvKiBTdXBlckZhc3RI
YXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjhD
QjQwMDJBODhDMEQzMDA0QUY0OTggLyogU3VwZXJGYXN0SGFzaC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUZGOENCNDAzMkE4OEMxMjUwMDRBRjQ5
OCAvKiBTdHJpbmdIYXNoZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRjhDQjQwMjJBODhDMTI1MDA0QUY0OTggLyogU3RyaW5nSGFzaGVy
SW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUZGOTEwRTk4Mjk3OUZFNkYwMEQxQTI0RCAvKiBGaXhlZEJpdFZlY3Rvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkY5MTBFOTcyOTc5RkU2RjAw
RDFBMjREIC8qIEZpeGVkQml0VmVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkZFRTQ2RjQyODI1REY4MDAwM0JDOTgxIC8qIENvbXBhY3RQ
dHIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGRUU0
NkYzMjgyNURGODAwMDNCQzk4MSAvKiBDb21wYWN0UHRyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAq
LwpAQCAtMTc5MywxMCArMTc5MCw3IEBACiAJCUZFRUE0REY4MjE2RDdCRTQwMEFDMDYwMiAvKiBT
dGFja1BvaW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3Rh
Y2tQb2ludGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkVGMjk1QkYyMEI0
OURDQjAwQ0YyODNBIC8qIFVURjhDb252ZXJzaW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVVRGOENvbnZlcnNpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGRjBBNDM2NTg4OTU0RjNDQjA3REJFQ0EgLyogU3RkTGlzdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdGRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUZGNDFBQzY2MkE3OUM5QjkwMEFDMEZBNSAvKiBXWUhhc2guaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV1lIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZGODk1RjEwMjgyQUI5NjQwMEU3QkFFOCAvKiBDb21wYWN0UmVmUHRyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBhY3RSZWZQdHIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJRkY4Q0I0MDAyQTg4QzBEMzAwNEFGNDk4IC8qIFN1cGVyRmFzdEhh
c2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VwZXJGYXN0SGFzaC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRjhDQjQwMjJBODhDMTI1MDA0QUY0OTggLyog
U3RyaW5nSGFzaGVySW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dHJpbmdIYXNoZXJJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGOTEw
RTk3Mjk3OUZFNkYwMEQxQTI0RCAvKiBGaXhlZEJpdFZlY3Rvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGaXhlZEJpdFZlY3Rvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRkVFNDZGMzI4MjVERjgwMDAzQkM5ODEgLyogQ29tcGFjdFB0ci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wYWN0UHRyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCkBAIC0yNTA2LDcg
KzI1MDAsNiBAQAogCQkJCTdDRDRDMjZGMUUyQzgyQjkwMDkyOTQ3MCAvKiBTdHJpbmdDb25jYXRl
bmF0ZU51bWJlcnMuaCAqLywKIAkJCQlBOEE0NzMyNzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5n
SGFzaC5oICovLAogCQkJCTkzM0Q2MzE5MUZDQjZBQjkwMDMyRUNENiAvKiBTdHJpbmdIYXNoZXIu
aCAqLywKLQkJCQlGRjhDQjQwMjJBODhDMTI1MDA0QUY0OTggLyogU3RyaW5nSGFzaGVySW5saW5l
cy5oICovLAogCQkJCUE4QTQ3MzI4MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdJbXBsLmNwcCAq
LywKIAkJCQlBOEE0NzMyOTE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nSW1wbC5oICovLAogCQkJ
CUE4QTQ3MzJBMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdPcGVyYXRvcnMuaCAqLywKQEAgLTI1
MTUsNyArMjUwOCw2IEBACiAJCQkJQ0QwMDM2MEQyMTUwMUY3ODAwRjRFRDRDIC8qIFN0cmluZ1Rv
SW50ZWdlckNvbnZlcnNpb24uaCAqLywKIAkJCQk5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyog
U3RyaW5nVmlldy5jcHAgKi8sCiAJCQkJMUE2RUIxREYxODdEMEJEMzAwMzAxMjZGIC8qIFN0cmlu
Z1ZpZXcuaCAqLywKLQkJCQlGRjhDQjQwMDJBODhDMEQzMDA0QUY0OTggLyogU3VwZXJGYXN0SGFz
aC5oICovLAogCQkJCUY3MkJCREIxMDdGQTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAq
LywKIAkJCQk3MEVDQTYwQjFCMDI0MjY4MDA0NDk3MzkgLyogU3ltYm9sSW1wbC5oICovLAogCQkJ
CTcwQTk5M0ZDMUFENzE1MTMwMEZBNjE1QiAvKiBTeW1ib2xSZWdpc3RyeS5jcHAgKi8sCkBAIC0y
NTMwLDcgKzI1MjIsNiBAQAogCQkJCUZFRjI5NUJGMjBCNDlEQ0IwMENGMjgzQSAvKiBVVEY4Q29u
dmVyc2lvbkVycm9yLmggKi8sCiAJCQkJQThBNDczMkQxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0
cmluZy5jcHAgKi8sCiAJCQkJQThBNDczMkUxNTFBODI1QjAwNDEyM0ZGIC8qIFdURlN0cmluZy5o
ICovLAotCQkJCUZGNDFBQzY2MkE3OUM5QjkwMEFDMEZBNSAvKiBXWUhhc2guaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gdGV4dDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMzA1LDcg
KzMyOTYsNiBAQAogCQkJCURERjMwN0NEMjdDMDg2REYwMDZBNTI2RiAvKiBTdHJpbmdIYXNoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlERDNEQzk4MjI3QTRCRjhFMDA3RTVCNjEgLyogU3RyaW5nSGFz
aER1bXBDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQlEREYzMDdDOTI3QzA4NkRGMDA2QTUy
NkYgLyogU3RyaW5nSGFzaGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlGRjhDQjQwMzJBODhDMTI1
MDA0QUY0OTggLyogU3RyaW5nSGFzaGVySW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRERG
MzA3Q0IyN0MwODZERjAwNkE1MjZGIC8qIFN0cmluZ0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CURERjMwN0Q3MjdDMDg2REYwMDZBNTI2RiAvKiBTdHJpbmdPcGVyYXRvcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCURERjMwN0M3MjdDMDg2REYwMDZBNTI2RiAvKiBTdHJpbmdQYXJzaW5nQnVmZmVy
LmggaW4gSGVhZGVycyAqLywKQEAgLTMzMTQsNyArMzMwNCw2IEBACiAJCQkJRERGMzA3QzUyN0Mw
ODZERjAwNkE1MjZGIC8qIFN0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCURERjMwN0U0MjdDMDg2REYwMDZBNTI2RiAvKiBTdHJpbmdWaWV3LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlEREYzMDczRTI3QzA4NkNEMDA2QTUyNkYgLyogc3RydG9kLmggaW4gSGVhZGVy
cyAqLywKLQkJCQlGRjhDQjQwMTJBODhDMEQzMDA0QUY0OTggLyogU3VwZXJGYXN0SGFzaC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJREQzREM4OUEyN0E0QkY4RTAwN0U1QjYxIC8qIFN1c3BlbmRhYmxl
V29ya1F1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlEREYzMDdEQTI3QzA4NkRGMDA2QTUyNkYg
LyogU3ltYm9sSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRERGMzA3RUMyN0MwODZERjAwNkE1
MjZGIC8qIFN5bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLywKQEAgLTMzOTgsNyArMzM4Nyw2
IEBACiAJCQkJRTM2QkE5REYyOUUyNzVEQjAwMzAwMDU3IC8qIFdURlByb2Nlc3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUREM0RDOTdEMjdBNEJGOEUwMDdFNUI2MSAvKiBXVEZTZW1hcGhvcmUuaCBp
biBIZWFkZXJzICovLAogCQkJCURERjMwN0MyMjdDMDg2REYwMDZBNTI2RiAvKiBXVEZTdHJpbmcu
aCBpbiBIZWFkZXJzICovLAotCQkJCUZGNDFBQzY3MkE3OUM5QkEwMEFDMEZBNSAvKiBXWUhhc2gu
aCBpbiBIZWFkZXJzICovLAogCQkJCURERjMwNkVBMjdDMDg2NTQwMDZBNTI2RiAvKiBYUENTUEku
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAwODhiNjc3NDZjYTAuLjhmMmQxNWE4
OTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTM5Miw5ICszOTIsNiBAQCBzZXQoV1RGX1BV
QkxJQ19IRUFERVJTCiAgICAgdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaAogICAgIHRl
eHQvU3RyaW5nSGFzaC5oCiAgICAgdGV4dC9TdHJpbmdIYXNoZXIuaAotICAgIHRleHQvU3RyaW5n
SGFzaGVySW5saW5lcy5oCi0gICAgdGV4dC9TdXBlckZhc3RIYXNoLmgKLSAgICB0ZXh0L1dZSGFz
aC5oCiAgICAgdGV4dC9TdHJpbmdJbXBsLmgKICAgICB0ZXh0L1N0cmluZ09wZXJhdG9ycy5oCiAg
ICAgdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0hhc2hlci5oIGIvU291cmNlL1dURi93dGYvSGFzaGVyLmgKaW5kZXggNDA0NDkwOWRiY2U3Li5j
YmNmMWU5YTk0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hlci5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL0hhc2hlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNi0yMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMjYsNyArMjYsNyBAQAogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N1cGVyRmFzdEhhc2guaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoZXIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTY3LDcgKzY3LDcgQEAg
cHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTdXBlckZhc3RIYXNoIG1fdW5kZXJseWlu
Z0hhc2hlcjsKKyAgICBTdHJpbmdIYXNoZXIgbV91bmRlcmx5aW5nSGFzaGVyOwogfTsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyPiBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf
dW5zaWduZWQ8VW5zaWduZWRJbnRlZ2VyPjo6dmFsdWUgJiYgc2l6ZW9mKFVuc2lnbmVkSW50ZWdl
cikgPT0gc2l6ZW9mKHVpbnQ2NF90KSwgdm9pZD4gYWRkKEhhc2hlciYgaGFzaGVyLCBVbnNpZ25l
ZEludGVnZXIgaW50ZWdlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmlu
Zy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuY3BwCmluZGV4IDkwOGQ1YjJiNmIz
ZS4uODhmY2Y2MjE4OTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDAzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMSw3ICszMSw3
IEBACiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL05l
dmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29tbW9uLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvU3VwZXJGYXN0SGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2hlci5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtMTM3LDcgKzEzNyw3IEBAIHVuc2ln
bmVkIENTdHJpbmc6Omhhc2goKSBjb25zdAogewogICAgIGlmIChpc051bGwoKSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgU3VwZXJGYXN0SGFzaCBoYXNoZXI7CisgICAgU3RyaW5nSGFzaGVyIGhh
c2hlcjsKICAgICBmb3IgKGNvbnN0IGNoYXIqIHB0ciA9IGRhdGEoKTsgKnB0cjsgKytwdHIpCiAg
ICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIoKnB0cik7CiAgICAgcmV0dXJuIGhhc2hlci5oYXNo
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2guaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaC5oCmluZGV4IGZiMzJkM2IzNWI0Zi4uZjc3MDgzZDgz
MzI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2guaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0hhc2guaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDYtMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQKKyAq
IENvcHlyaWdodCAoQykgMjAwNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZAog
ICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDA5LiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTEwOSw4ICsxMDksOCBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICB9OwogCiAgICAgc3RydWN0IEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaCB7Cisg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgICAgIHN0cnVjdCBGb2xkQ2FzZSB7Ci0g
ICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgICAgICAgICAgc3RhdGljIGlubGlu
ZSBVQ2hhciBjb252ZXJ0KFQgY2hhcmFjdGVyKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIHJldHVybiB0b0FTQ0lJTG93ZXIoY2hhcmFjdGVyKTsKQEAgLTExOSw3ICsxMTksNyBAQCBu
YW1lc3BhY2UgV1RGIHsKIAogICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBVQ2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
U3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0czxVQ2hhciwgRm9sZENhc2U+
KGRhdGEsIGxlbmd0aCk7CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpjb21wdXRl
SGFzaEFuZE1hc2tUb3A4Qml0czxVQ2hhciwgRm9sZENhc2U8VUNoYXI+PihkYXRhLCBsZW5ndGgp
OwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU3RyaW5nSW1wbCYg
c3RyaW5nKQpAQCAtMTM2LDcgKzEzNiw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IExDaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5k
TWFza1RvcDhCaXRzPExDaGFyLCBGb2xkQ2FzZT4oZGF0YSwgbGVuZ3RoKTsKKyAgICAgICAgICAg
IHJldHVybiBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPExDaGFyLCBG
b2xkQ2FzZTxMQ2hhcj4+KGRhdGEsIGxlbmd0aCk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGhhc2goY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3Ro
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoZXIuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaGVyLmgKaW5kZXggN2I2YWY4MjcyODFkLi4wNDE1ZTBm
MWU2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaGVyLmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdIYXNoZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBw
YXJvZ2EuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTIxLDMxICsyMSwyOCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPHVuaWNvZGUvdXR5cGVzLmg+CiAjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9MQ2hhci5oPgogCiBu
YW1lc3BhY2UgV1RGIHsKIAotLy8gR29sZGVuIHJhdGlvLiBBcmJpdHJhcnkgc3RhcnQgdmFsdWUg
dG8gYXZvaWQgbWFwcGluZyBhbGwgemVyb3MgdG8gYSBoYXNoIHZhbHVlIG9mIHplcm8uCi1zdGF0
aWMgY29uc3RleHByIHVuc2lnbmVkIHN0cmluZ0hhc2hpbmdTdGFydFZhbHVlID0gMHg5RTM3NzlC
OVU7CisvLyBQYXVsIEhzaWVoJ3MgU3VwZXJGYXN0SGFzaAorLy8gaHR0cDovL3d3dy5hemlsbGlv
bm1vbmtleXMuY29tL3FlZC9oYXNoLmh0bWwKKworLy8gTENoYXIgZGF0YSBpcyBpbnRlcnByZXRl
ZCBhcyBMYXRpbi0xLWVuY29kZWQgKHplcm8tZXh0ZW5kZWQgdG8gMTYgYml0cykuCiAKLWNsYXNz
IFN1cGVyRmFzdEhhc2g7Ci1jbGFzcyBXWUhhc2g7CisvLyBOT1RFOiBUaGUgaGFzaCBjb21wdXRh
dGlvbiBoZXJlIG11c3Qgc3RheSBpbiBzeW5jIHdpdGggdGhlIGNyZWF0ZV9oYXNoX3RhYmxlIHNj
cmlwdCBpbgorLy8gSmF2YVNjcmlwdENvcmUgYW5kIHRoZSBDb2RlR2VuZXJhdG9ySlMucG0gc2Ny
aXB0IGluIFdlYkNvcmUuCisKKy8vIEdvbGRlbiByYXRpby4gQXJiaXRyYXJ5IHN0YXJ0IHZhbHVl
IHRvIGF2b2lkIG1hcHBpbmcgYWxsIHplcm9zIHRvIGEgaGFzaCB2YWx1ZSBvZiB6ZXJvLgorc3Rh
dGljIGNvbnN0ZXhwciBjb25zdCB1bnNpZ25lZCBzdHJpbmdIYXNoaW5nU3RhcnRWYWx1ZSA9IDB4
OUUzNzc5QjlVOwogCiBjbGFzcyBTdHJpbmdIYXNoZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmxhZ0NvdW50
ID0gODsgLy8gU2F2ZSA4IGJpdHMgZm9yIFN0cmluZ0ltcGwgdG8gdXNlIGFzIGZsYWdzLgotICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWFza0hhc2ggPSAoMVUgPDwgKHNpemVvZih1bnNp
Z25lZCkgKiA4IC0gZmxhZ0NvdW50KSkgLSAxOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgbnVtYmVyT2ZDaGFyYWN0ZXJzSW5MYXJnZXN0QnVsa0ZvcldZSGFzaCA9IDI0OyAvLyBEb24n
dCBjaGFuZ2UgdGhpcyB2YWx1ZS4gSXQncyBmaXhlZCBmb3IgV1loYXNoIGFsZ29yaXRobS4KLQot
ICAgIC8vIFRoaW5ncyBuZWVkIHRvIGRvIHRvIHVwZGF0ZSB0aGlzIHRocmVzaG9sZDoKLSAgICAv
LyAxLiBUaGlzIHRocmVzaG9sZCBtdXN0IHN0YXkgaW4gc3luYyB3aXRoIHRoZSB0aHJlc2hvbGQg
aW4gdGhlIHNjcmlwdHMgY3JlYXRlX2hhc2hfdGFibGUsIEhhc2hlci5wbSwgYW5kIGhhc2hlci5w
eS4KLSAgICAvLyAyLiBSdW4gc2NyaXB0IGBydW4tYmluZGluZ3MtdGVzdHMgLS1yZXNldC1yZXN1
bHRzYCB0byB1cGRhdGUgYWxsIENvbXBhY3RIYXNoSW5kZXgncyB1bmRlciBwYXRoIGBXZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9gLgotICAgIC8vIDMuIE1hbnVhbGx5IHVwZGF0ZSBh
bGwgQ29tcGFjdEhhc2hJbmRleCdzIGluIEpTRG9sbGFyVk0uY3BwIGJ5IHVzaW5nIGNyZWF0ZUhh
c2hUYWJsZSBpbiBoYXNoZXIucHkuCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBzbWFs
bFN0cmluZ1RocmVzaG9sZCA9IG51bWJlck9mQ2hhcmFjdGVyc0luTGFyZ2VzdEJ1bGtGb3JXWUhh
c2ggKiAyOworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgZmxhZ0NvdW50ID0g
ODsgLy8gU2F2ZSA4IGJpdHMgZm9yIFN0cmluZ0ltcGwgdG8gdXNlIGFzIGZsYWdzLgorICAgIHN0
YXRpYyBjb25zdGV4cHIgY29uc3QgdW5zaWduZWQgbWFza0hhc2ggPSAoMVUgPDwgKHNpemVvZih1
bnNpZ25lZCkgKiA4IC0gZmxhZ0NvdW50KSkgLSAxOwogCiAgICAgc3RydWN0IERlZmF1bHRDb252
ZXJ0ZXIgewogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KQEAgLTU3LDIwICs1
NCwxNzkgQEAgcHVibGljOgogCiAgICAgU3RyaW5nSGFzaGVyKCkgPSBkZWZhdWx0OwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyID0gRGVmYXVsdENvbnZlcnRl
cj4KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVIYXNoQW5kTWFza1RvcDhC
aXRzKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGNoYXJhY3RlckNvdW50KTsKKyAgICAvLyBUaGUg
aGFzaGVyIGhhc2hlcyB0d28gY2hhcmFjdGVycyBhdCBhIHRpbWUsIGFuZCB0aHVzIGFuICJhbGln
bmVkIiBoYXNoZXIgaXMgb25lCisgICAgLy8gd2hlcmUgYW4gZXZlbiBudW1iZXIgb2YgY2hhcmFj
dGVycyBoYXZlIGJlZW4gYWRkZWQuIENhbGxlcnMgdGhhdCBhbHdheXMgYWRkCisgICAgLy8gY2hh
cmFjdGVycyB0d28gYXQgYSB0aW1lIGNhbiB1c2UgdGhlICJhc3N1bWluZyBhbGlnbmVkIiBmdW5j
dGlvbnMuCisgICAgdm9pZCBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKFVDaGFyIGEsIFVD
aGFyIGIpCisgICAgeworICAgICAgICBBU1NFUlQoIW1faGFzUGVuZGluZ0NoYXJhY3Rlcik7Cisg
ICAgICAgIG1faGFzaCA9IGNhbGN1bGF0ZVdpdGhUd29DaGFyYWN0ZXJzKG1faGFzaCwgYSwgYik7
CisgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdW5zaWduZWQgY2hhcmFjdGVyQ291
bnQ+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjb21wdXRlTGl0ZXJhbEhhc2hBbmRN
YXNrVG9wOEJpdHMoY29uc3QgVCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSk7CisgICAg
dm9pZCBhZGRDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgaWYgKG1f
aGFzUGVuZGluZ0NoYXJhY3RlcikgeworICAgICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVy
ID0gZmFsc2U7CisgICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1fcGVu
ZGluZ0NoYXJhY3RlciwgY2hhcmFjdGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogCi0gICAgdm9pZCBhZGRDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKTsKKyAgICAgICAgbV9w
ZW5kaW5nQ2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0
ZXIgPSB0cnVlOworICAgIH0KIAotICAgIHVuc2lnbmVkIGhhc2hXaXRoVG9wOEJpdHNNYXNrZWQo
KTsKKyAgICB2b2lkIGFkZENoYXJhY3RlcnMoVUNoYXIgYSwgVUNoYXIgYikKKyAgICB7CisgICAg
ICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAg
ICAgICAgICAgbV9oYXNQZW5kaW5nQ2hhcmFjdGVyID0gZmFsc2U7CisjZW5kaWYKKyAgICAgICAg
ICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQobV9wZW5kaW5nQ2hhcmFjdGVyLCBhKTsK
KyAgICAgICAgICAgIG1fcGVuZGluZ0NoYXJhY3RlciA9IGI7CisjaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICAgICAgICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IHRydWU7CisjZW5kaWYKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBT
dXBlckZhc3RIYXNoOwotICAgIGZyaWVuZCBjbGFzcyBXWUhhc2g7CisgICAgICAgIGFkZENoYXJh
Y3RlcnNBc3N1bWluZ0FsaWduZWQoYSwgYik7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQ29udmVydGVyPiB2b2lkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWdu
ZWQoY29uc3QgVCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KCFtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpOworCisgICAgICAgIGJvb2wgcmVtYWluZGVyID0gbGVu
Z3RoICYgMTsKKyAgICAgICAgbGVuZ3RoID4+PSAxOworCisgICAgICAgIHdoaWxlIChsZW5ndGgt
LSkgeworICAgICAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChDb252ZXJ0ZXI6
OmNvbnZlcnQoZGF0YVswXSksIENvbnZlcnRlcjo6Y29udmVydChkYXRhWzFdKSk7CisgICAgICAg
ICAgICBkYXRhICs9IDI7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVtYWluZGVyKQorICAg
ICAgICAgICAgYWRkQ2hhcmFjdGVyKENvbnZlcnRlcjo6Y29udmVydCgqZGF0YSkpOworICAgIH0K
KworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxp
Z25lZChjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAgICBhZGRD
aGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkPFQsIERlZmF1bHRDb252ZXJ0ZXI+KGRhdGEsIGxlbmd0
aCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVy
PiB2b2lkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQoY29uc3QgVCogZGF0YSkKKyAgICB7
CisgICAgICAgIEFTU0VSVCghbV9oYXNQZW5kaW5nQ2hhcmFjdGVyKTsKKworICAgICAgICB3aGls
ZSAoVCBhID0gKmRhdGErKykgeworICAgICAgICAgICAgVCBiID0gKmRhdGErKzsKKyAgICAgICAg
ICAgIGlmICghYikgeworICAgICAgICAgICAgICAgIGFkZENoYXJhY3RlcihDb252ZXJ0ZXI6OmNv
bnZlcnQoYSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChDb252ZXJ0ZXI6OmNvbnZlcnQoYSks
IENvbnZlcnRlcjo6Y29udmVydChiKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQoY29uc3QgVCog
ZGF0YSkKKyAgICB7CisgICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQ8VCwgRGVm
YXVsdENvbnZlcnRlcj4oZGF0YSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgQ29udmVydGVyPiB2b2lkIGFkZENoYXJhY3RlcnMoY29uc3QgVCogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgaWYgKCFsZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAg
IG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IGZhbHNlOworICAgICAgICAgICAgYWRkQ2hhcmFjdGVy
c0Fzc3VtaW5nQWxpZ25lZChtX3BlbmRpbmdDaGFyYWN0ZXIsIENvbnZlcnRlcjo6Y29udmVydCgq
ZGF0YSsrKSk7CisgICAgICAgICAgICAtLWxlbmd0aDsKKyAgICAgICAgfQorICAgICAgICBhZGRD
aGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkPFQsIENvbnZlcnRlcj4oZGF0YSwgbGVuZ3RoKTsKKyAg
ICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZENoYXJhY3RlcnMoY29uc3Qg
VCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgYWRkQ2hhcmFjdGVyczxU
LCBEZWZhdWx0Q29udmVydGVyPihkYXRhLCBsZW5ndGgpOworICAgIH0KKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnZlcnRlcj4gdm9pZCBhZGRDaGFyYWN0ZXJzKGNvbnN0
IFQqIGRhdGEpCisgICAgeworICAgICAgICBpZiAobV9oYXNQZW5kaW5nQ2hhcmFjdGVyICYmICpk
YXRhKSB7CisgICAgICAgICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQobV9wZW5kaW5nQ2hhcmFjdGVyLCBD
b252ZXJ0ZXI6OmNvbnZlcnQoKmRhdGErKykpOworICAgICAgICB9CisgICAgICAgIGFkZENoYXJh
Y3RlcnNBc3N1bWluZ0FsaWduZWQ8VCwgQ29udmVydGVyPihkYXRhKTsKKyAgICB9CisKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIGFkZENoYXJhY3RlcnMoY29uc3QgVCogZGF0YSkKKyAg
ICB7CisgICAgICAgIGFkZENoYXJhY3RlcnM8VCwgRGVmYXVsdENvbnZlcnRlcj4oZGF0YSk7Cisg
ICAgfQorCisgICAgdW5zaWduZWQgaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gZmluYWxpemVBbmRNYXNrVG9wOEJpdHMocHJvY2Vzc1BlbmRpbmdD
aGFyYWN0ZXIoKSk7CisgICAgfQorCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gZmluYWxpemUocHJvY2Vzc1BlbmRpbmdDaGFyYWN0ZXIoKSk7CisgICAg
fQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyPiBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNvbnN0IFQqIGRh
dGEsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVybiBmaW5hbGl6ZUFuZE1h
c2tUb3A4Qml0cyhjb21wdXRlSGFzaEltcGw8VCwgQ29udmVydGVyPihkYXRhLCBsZW5ndGgpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb252ZXJ0ZXI+IHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY29uc3Qg
VCogZGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBmaW5hbGl6ZUFuZE1hc2tUb3A4Qml0cyhj
b21wdXRlSGFzaEltcGw8VCwgQ29udmVydGVyPihkYXRhKSk7CisgICAgfQorCisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjb21wdXRlSGFzaEFuZE1h
c2tUb3A4Qml0cyhjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCisgICAgeworICAgICAg
ICByZXR1cm4gY29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHM8VCwgRGVmYXVsdENvbnZlcnRlcj4o
ZGF0YSwgbGVuZ3RoKTsKKyAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNvbnN0IFQqIGRh
dGEpCisgICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHM8VCwg
RGVmYXVsdENvbnZlcnRlcj4oZGF0YSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgQ29udmVydGVyPiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVI
YXNoKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7CisgICAgICAgIHJldHVy
biBmaW5hbGl6ZShjb21wdXRlSGFzaEltcGw8VCwgQ29udmVydGVyPihkYXRhLCBsZW5ndGgpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb252ZXJ0ZXI+IHN0
YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY29tcHV0ZUhhc2goY29uc3QgVCogZGF0YSkKKyAgICB7
CisgICAgICAgIHJldHVybiBmaW5hbGl6ZShjb21wdXRlSGFzaEltcGw8VCwgQ29udmVydGVyPihk
YXRhKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIGNvbnN0ZXhw
ciB1bnNpZ25lZCBjb21wdXRlSGFzaChjb25zdCBUKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgpCisg
ICAgeworICAgICAgICByZXR1cm4gY29tcHV0ZUhhc2g8VCwgRGVmYXVsdENvbnZlcnRlcj4oZGF0
YSwgbGVuZ3RoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGNvbXB1dGVIYXNoKGNvbnN0IFQqIGRhdGEpCisgICAgeworICAgICAg
ICByZXR1cm4gY29tcHV0ZUhhc2g8VCwgRGVmYXVsdENvbnZlcnRlcj4oZGF0YSk7CisgICAgfQor
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+Cisg
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjb21wdXRlTGl0ZXJhbEhhc2goY29uc3QgVCAo
JmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCisgICAgeworICAgICAgICByZXR1cm4gY29t
cHV0ZUhhc2g8VCwgRGVmYXVsdENvbnZlcnRlcj4oY2hhcmFjdGVycywgY2hhcmFjdGVyc0NvdW50
IC0gMSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdW5zaWduZWQgY2hhcmFj
dGVyc0NvdW50PgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY29tcHV0ZUxpdGVyYWxI
YXNoQW5kTWFza1RvcDhCaXRzKGNvbnN0IFQgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJzQ291bnRd
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPFQsIERl
ZmF1bHRDb252ZXJ0ZXI+KGNoYXJhY3RlcnMsIGNoYXJhY3RlcnNDb3VudCAtIDEpOworICAgIH0K
KworcHJpdmF0ZToKICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQg
YXZhbGFuY2hlQml0cyh1bnNpZ25lZCBoYXNoKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgcmVz
dWx0ID0gaGFzaDsKQEAgLTg0LDEyICsyNDAsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgZmluYWxpemUodW5zaWduZWQgaGFzaCkKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIGZpbmFsaXplKHVuc2lnbmVkIGhhc2gpCiAgICAgewogICAgICAgICByZXR1cm4gYXZvaWRa
ZXJvKGF2YWxhbmNoZUJpdHMoaGFzaCkpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgc3Rh
dGljIGNvbnN0ZXhwciB1bnNpZ25lZCBmaW5hbGl6ZUFuZE1hc2tUb3A4Qml0cyh1bnNpZ25lZCBo
YXNoKQorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgZmluYWxpemVBbmRNYXNrVG9wOEJp
dHModW5zaWduZWQgaGFzaCkKICAgICB7CiAgICAgICAgIC8vIFJlc2VydmluZyBzcGFjZSBmcm9t
IHRoZSBoaWdoIGJpdHMgZm9yIGZsYWdzIHByZXNlcnZlcyBtb3N0IG9mIHRoZSBoYXNoJ3MKICAg
ICAgICAgLy8gdmFsdWUsIHNpbmNlIGhhc2ggbG9va3VwIHR5cGljYWxseSBtYXNrcyBvdXQgdGhl
IGhpZ2ggYml0cyBhbnl3YXkuCkBAIC0xMDcsMTQgKzI2Myw3MSBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gMHg4MDAwMDAwMCA+PiBmbGFnQ291bnQ7CiAgICAgfQogCi0gICAgYm9vbCBtX3Bl
bmRpbmdIYXNoVmFsdWUgeyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZQcm9jZXNz
ZWRDaGFyYWN0ZXJzIHsgMCB9OwotICAgIHVpbnQ2NF90IG1fc2VlZCB7IDAgfTsKLSAgICB1aW50
NjRfdCBtX3NlZTEgeyAwIH07Ci0gICAgdWludDY0X3QgbV9zZWUyIHsgMCB9OworICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgY2FsY3VsYXRlV2l0aFJlbWFpbmluZ0xhc3RDaGFyYWN0ZXIo
dW5zaWduZWQgaGFzaCwgdW5zaWduZWQgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgdW5zaWdu
ZWQgcmVzdWx0ID0gaGFzaDsKKworICAgICAgICByZXN1bHQgKz0gY2hhcmFjdGVyOworICAgICAg
ICByZXN1bHQgXj0gcmVzdWx0IDw8IDExOworICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+IDE3
OworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNhbGN1bGF0ZVdpdGhUd29DaGFyYWN0ZXJzKHVuc2ln
bmVkIGhhc2gsIHVuc2lnbmVkIGZpcnN0Q2hhcmFjdGVyLCB1bnNpZ25lZCBzZWNvbmRDaGFyYWN0
ZXIpCisgICAgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBoYXNoOworCisgICAgICAgIHJl
c3VsdCArPSBmaXJzdENoYXJhY3RlcjsKKyAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCA8PCAxNikg
XiAoKHNlY29uZENoYXJhY3RlciA8PCAxMSkgXiByZXN1bHQpOworICAgICAgICByZXN1bHQgKz0g
cmVzdWx0ID4+IDExOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyPgorICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgY29tcHV0ZUhhc2hJbXBsKGNvbnN0IFQqIGNoYXJhY3RlcnMsIHVuc2lnbmVk
IGxlbmd0aCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IHN0cmluZ0hhc2hpbmdT
dGFydFZhbHVlOworICAgICAgICBib29sIHJlbWFpbmRlciA9IGxlbmd0aCAmIDE7CisgICAgICAg
IGxlbmd0aCA+Pj0gMTsKKworICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHsKKyAgICAgICAgICAg
IHJlc3VsdCA9IGNhbGN1bGF0ZVdpdGhUd29DaGFyYWN0ZXJzKHJlc3VsdCwgQ29udmVydGVyOjpj
b252ZXJ0KGNoYXJhY3RlcnNbMF0pLCBDb252ZXJ0ZXI6OmNvbnZlcnQoY2hhcmFjdGVyc1sxXSkp
OworICAgICAgICAgICAgY2hhcmFjdGVycyArPSAyOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KHJlbWFpbmRlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVXaXRoUmVtYWluaW5nTGFz
dENoYXJhY3RlcihyZXN1bHQsIENvbnZlcnRlcjo6Y29udmVydChjaGFyYWN0ZXJzWzBdKSk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgQ29udmVydGVyPgorICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY29tcHV0
ZUhhc2hJbXBsKGNvbnN0IFQqIGNoYXJhY3RlcnMpCisgICAgeworICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBzdHJpbmdIYXNoaW5nU3RhcnRWYWx1ZTsKKyAgICAgICAgd2hpbGUgKFQgYSA9ICpj
aGFyYWN0ZXJzKyspIHsKKyAgICAgICAgICAgIFQgYiA9ICpjaGFyYWN0ZXJzKys7CisgICAgICAg
ICAgICBpZiAoIWIpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZVdpdGhSZW1haW5p
bmdMYXN0Q2hhcmFjdGVyKHJlc3VsdCwgQ29udmVydGVyOjpjb252ZXJ0KGEpKTsKKyAgICAgICAg
ICAgIHJlc3VsdCA9IGNhbGN1bGF0ZVdpdGhUd29DaGFyYWN0ZXJzKHJlc3VsdCwgQ29udmVydGVy
Ojpjb252ZXJ0KGEpLCBDb252ZXJ0ZXI6OmNvbnZlcnQoYikpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdW5zaWduZWQgcHJvY2Vzc1BlbmRpbmdDaGFy
YWN0ZXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9oYXNoOwor
CisgICAgICAgIC8vIEhhbmRsZSBlbmQgY2FzZS4KKyAgICAgICAgaWYgKG1faGFzUGVuZGluZ0No
YXJhY3RlcikKKyAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVXaXRoUmVtYWluaW5nTGFzdENo
YXJhY3RlcihyZXN1bHQsIG1fcGVuZGluZ0NoYXJhY3Rlcik7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQogCi0gICAgdW5zaWduZWQgbV9idWZmZXJTaXplIHsgMCB9OwotICAgIHN0ZDo6
YXJyYXk8VUNoYXIsIHNtYWxsU3RyaW5nVGhyZXNob2xkPiBtX2J1ZmZlcjsKKyAgICB1bnNpZ25l
ZCBtX2hhc2ggeyBzdHJpbmdIYXNoaW5nU3RhcnRWYWx1ZSB9OworICAgIFVDaGFyIG1fcGVuZGlu
Z0NoYXJhY3RlciB7IDAgfTsKKyAgICBib29sIG1faGFzUGVuZGluZ0NoYXJhY3RlciB7IGZhbHNl
IH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSGFzaGVySW5saW5lcy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdI
YXNoZXJJbmxpbmVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiYzFkMGIyNGQ3
Ni4uMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSGFzaGVySW5s
aW5lcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUg
R05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
LSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
LSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SGFzaGVyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3VwZXJGYXN0SGFzaC5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dZSGFzaC5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQ29udmVydGVyPgotY29uc3RleHByIHVuc2lnbmVkIFN0cmluZ0hhc2hl
cjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoY29uc3QgVCogZGF0YSwgdW5zaWduZWQgY2hh
cmFjdGVyQ291bnQpCi17Ci0gICAgaWYgKExJS0VMWShjaGFyYWN0ZXJDb3VudCA8PSBzbWFsbFN0
cmluZ1RocmVzaG9sZCkpCi0gICAgICAgIHJldHVybiBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0czxULCBDb252ZXJ0ZXI+KGRhdGEsIGNoYXJhY3RlckNvdW50KTsKLSAg
ICByZXR1cm4gV1lIYXNoOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0czxULCBDb252ZXJ0ZXI+
KGRhdGEsIGNoYXJhY3RlckNvdW50KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdW5zaWdu
ZWQgY2hhcmFjdGVyQ291bnQ+Ci1jb25zdGV4cHIgdW5zaWduZWQgU3RyaW5nSGFzaGVyOjpjb21w
dXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9wOEJpdHMoY29uc3QgVCAoJmNoYXJhY3RlcnMpW2NoYXJh
Y3RlckNvdW50XSkKLXsKLSAgICBjb25zdGV4cHIgdW5zaWduZWQgY2hhcmFjdGVyQ291bnRXaXRo
b3V0TnVsbCA9IGNoYXJhY3RlckNvdW50IC0gMTsKLSAgICBpZiBjb25zdGV4cHIgKExJS0VMWShj
aGFyYWN0ZXJDb3VudFdpdGhvdXROdWxsIDw9IHNtYWxsU3RyaW5nVGhyZXNob2xkKSkKLSAgICAg
ICAgcmV0dXJuIFN1cGVyRmFzdEhhc2g6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPFQ+KGNo
YXJhY3RlcnMsIGNoYXJhY3RlckNvdW50V2l0aG91dE51bGwpOwotICAgIHJldHVybiBXWUhhc2g6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzPFQ+KGNoYXJhY3RlcnMsIGNoYXJhY3RlckNvdW50
V2l0aG91dE51bGwpOwotfQotCi1pbmxpbmUgdm9pZCBTdHJpbmdIYXNoZXI6OmFkZENoYXJhY3Rl
cihVQ2hhciBjaGFyYWN0ZXIpCi17Ci0gICAgaWYgKG1fYnVmZmVyU2l6ZSA9PSBzbWFsbFN0cmlu
Z1RocmVzaG9sZCkgewotICAgICAgICAvLyBUaGlzIGFsZ29yaXRobSBtdXN0IHN0YXkgaW4gc3lu
YyB3aXRoIFdZSGFzaDo6aGFzaCBmdW5jdGlvbi4KLSAgICAgICAgaWYgKCFtX3BlbmRpbmdIYXNo
VmFsdWUpIHsKLSAgICAgICAgICAgIG1fc2VlZCA9IFdZSGFzaDo6aW5pdFNlZWQoKTsKLSAgICAg
ICAgICAgIG1fc2VlMSA9IG1fc2VlZDsKLSAgICAgICAgICAgIG1fc2VlMiA9IG1fc2VlZDsKLSAg
ICAgICAgICAgIG1fcGVuZGluZ0hhc2hWYWx1ZSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAg
VUNoYXIqIHAgPSBtX2J1ZmZlci5kYXRhKCk7Ci0gICAgICAgIHdoaWxlIChtX2J1ZmZlclNpemUg
Pj0gMjQpIHsKLSAgICAgICAgICAgIFdZSGFzaDo6Y29uc3VtZTI0Q2hhcmFjdGVycyhwLCBXWUhh
c2g6OlJlYWRlcjE2Qml0PFVDaGFyPjo6d3lyOCwgbV9zZWVkLCBtX3NlZTEsIG1fc2VlMik7Ci0g
ICAgICAgICAgICBwICs9IDI0OwotICAgICAgICAgICAgbV9idWZmZXJTaXplIC09IDI0OwotICAg
ICAgICB9Ci0gICAgICAgIEFTU0VSVCghbV9idWZmZXJTaXplKTsKLSAgICAgICAgbV9udW1iZXJP
ZlByb2Nlc3NlZENoYXJhY3RlcnMgKz0gc21hbGxTdHJpbmdUaHJlc2hvbGQ7Ci0gICAgfQotCi0g
ICAgQVNTRVJUKG1fYnVmZmVyU2l6ZSA8IHNtYWxsU3RyaW5nVGhyZXNob2xkKTsKLSAgICBtX2J1
ZmZlclttX2J1ZmZlclNpemUrK10gPSBjaGFyYWN0ZXI7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCBT
dHJpbmdIYXNoZXI6Omhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKQotewotICAgIHVuc2lnbmVkIGhh
c2hWYWx1ZTsKLSAgICBpZiAoIW1fcGVuZGluZ0hhc2hWYWx1ZSkgewotICAgICAgICBBU1NFUlQo
bV9idWZmZXJTaXplIDw9IHNtYWxsU3RyaW5nVGhyZXNob2xkKTsKLSAgICAgICAgaGFzaFZhbHVl
ID0gU3VwZXJGYXN0SGFzaDo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHM8VUNoYXI+KG1fYnVm
ZmVyLmRhdGEoKSwgbV9idWZmZXJTaXplKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBUaGlz
IGFsZ29yaXRobSBtdXN0IHN0YXkgaW4gc3luYyB3aXRoIFdZSGFzaDo6aGFzaCBmdW5jdGlvbi4K
LSAgICAgICAgYXV0byB3eXI4ID0gV1lIYXNoOjpSZWFkZXIxNkJpdDxVQ2hhcj46Ond5cjg7Ci0g
ICAgICAgIHVuc2lnbmVkIGkgPSBtX2J1ZmZlclNpemU7Ci0gICAgICAgIGlmIChpIDw9IDI0KQot
ICAgICAgICAgICAgbV9zZWVkIF49IG1fc2VlMSBeIG1fc2VlMjsKLSAgICAgICAgVUNoYXIqIHAg
PSBtX2J1ZmZlci5kYXRhKCk7Ci0gICAgICAgIFdZSGFzaDo6aGFuZGxlR3JlYXRlclRoYW44Q2hh
cmFjdGVyc0Nhc2UocCwgaSwgd3lyOCwgbV9zZWVkLCBtX3NlZTEsIG1fc2VlMik7Ci0KLSAgICAg
ICAgdWludDY0X3QgYSA9IDA7Ci0gICAgICAgIHVpbnQ2NF90IGIgPSAwOwotICAgICAgICBpZiAo
bV9idWZmZXJTaXplID49IDgpIHsKLSAgICAgICAgICAgIGEgPSB3eXI4KHAgKyBpIC0gOCk7Ci0g
ICAgICAgICAgICBiID0gd3lyOChwICsgaSAtIDQpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgVUNoYXIgdG1wWzhdOwotICAgICAgICAgICAgdW5zaWduZWQgYnVmZmVySW5kZXggPSBz
bWFsbFN0cmluZ1RocmVzaG9sZCAtICg4IC0gaSk7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IHRtcEluZGV4ID0gMDsgdG1wSW5kZXggPCA4OyB0bXBJbmRleCsrKSB7Ci0gICAgICAgICAgICAg
ICAgdG1wW3RtcEluZGV4XSA9IG1fYnVmZmVyW2J1ZmZlckluZGV4XTsKLSAgICAgICAgICAgICAg
ICBidWZmZXJJbmRleCA9IChidWZmZXJJbmRleCArIDEpICUgc21hbGxTdHJpbmdUaHJlc2hvbGQ7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFVDaGFyKiB0bXBQdHIgPSB0bXA7Ci0gICAg
ICAgICAgICBhID0gd3lyOCh0bXBQdHIpOwotICAgICAgICAgICAgYiA9IHd5cjgodG1wUHRyICsg
NCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCB1aW50NjRfdCB0b3RhbEJ5dGVDb3VudCA9
IChzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9udW1iZXJPZlByb2Nlc3NlZENoYXJhY3RlcnMpICsg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fYnVmZmVyU2l6ZSkpIDw8IDE7Ci0gICAgICAgIGhhc2hW
YWx1ZSA9IFN0cmluZ0hhc2hlcjo6ZmluYWxpemVBbmRNYXNrVG9wOEJpdHMoV1lIYXNoOjpoYW5k
bGVFbmRDYXNlKGEsIGIsIG1fc2VlZCwgdG90YWxCeXRlQ291bnQpKTsKLQotICAgICAgICBtX3Bl
bmRpbmdIYXNoVmFsdWUgPSBmYWxzZTsKLSAgICAgICAgbV9udW1iZXJPZlByb2Nlc3NlZENoYXJh
Y3RlcnMgPSBtX3NlZWQgPSBtX3NlZTEgPSBtX3NlZTIgPSAwOwotICAgIH0KLSAgICBtX2J1ZmZl
clNpemUgPSAwOwotICAgIHJldHVybiBoYXNoVmFsdWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCi11c2luZyBXVEY6OlN0cmluZ0hhc2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKaW5k
ZXggNGJjNjRiOTUwYTJkLi4wY2Q2MTI1MzFlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5o
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChr
bm9sbEBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NvbnZlcnNpb25Nb2RlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVmZmVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29tbW9uLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaGVySW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1VURjhDb252ZXJzaW9uRXJyb3IuaD4KICNp
bmNsdWRlIDx3dGYvdW5pY29kZS9VVEY4Q29udmVyc2lvbi5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N1cGVyRmFzdEhhc2guaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Vw
ZXJGYXN0SGFzaC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDZmNDBiYzRmODAu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N1cGVyRmFzdEhhc2guaAor
KysgL2Rldi9udWxsCkBAIC0xLDI1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1
LTIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDEwIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoZXIuaD4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLS8vIFBhdWwgSHNpZWgncyBTdXBlckZhc3RIYXNoCi0vLyBodHRwOi8vd3d3LmF6aWxsaW9u
bW9ua2V5cy5jb20vcWVkL2hhc2guaHRtbAotCi0vLyBMQ2hhciBkYXRhIGlzIGludGVycHJldGVk
IGFzIExhdGluLTEtZW5jb2RlZCAoemVyby1leHRlbmRlZCB0byAxNiBiaXRzKS4KLQotLy8gTk9U
RTogVGhlIGhhc2ggY29tcHV0YXRpb24gaGVyZSBtdXN0IHN0YXkgaW4gc3luYyB3aXRoIHRoZSBj
cmVhdGVfaGFzaF90YWJsZSBzY3JpcHQgaW4KLS8vIEphdmFTY3JpcHRDb3JlIGFuZCB0aGUgQ29k
ZUdlbmVyYXRvckpTLnBtIHNjcmlwdCBpbiBXZWJDb3JlLgotCi1jbGFzcyBTdXBlckZhc3RIYXNo
IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGZsYWdDb3VudCA9IFN0cmluZ0hhc2hlcjo6ZmxhZ0NvdW50OwotICAg
IHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWFza0hhc2ggPSBTdHJpbmdIYXNoZXI6Om1hc2tI
YXNoOwotICAgIHR5cGVkZWYgU3RyaW5nSGFzaGVyOjpEZWZhdWx0Q29udmVydGVyIERlZmF1bHRD
b252ZXJ0ZXI7Ci0KLSAgICBTdXBlckZhc3RIYXNoKCkgPSBkZWZhdWx0OwotCi0gICAgLy8gVGhl
IGhhc2hlciBoYXNoZXMgdHdvIGNoYXJhY3RlcnMgYXQgYSB0aW1lLCBhbmQgdGh1cyBhbiAiYWxp
Z25lZCIgaGFzaGVyIGlzIG9uZQotICAgIC8vIHdoZXJlIGFuIGV2ZW4gbnVtYmVyIG9mIGNoYXJh
Y3RlcnMgaGF2ZSBiZWVuIGFkZGVkLiBDYWxsZXJzIHRoYXQgYWx3YXlzIGFkZAotICAgIC8vIGNo
YXJhY3RlcnMgdHdvIGF0IGEgdGltZSBjYW4gdXNlIHRoZSAiYXNzdW1pbmcgYWxpZ25lZCIgZnVu
Y3Rpb25zLgotICAgIHZvaWQgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChVQ2hhciBhLCBV
Q2hhciBiKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpOwot
ICAgICAgICBtX2hhc2ggPSBjYWxjdWxhdGVXaXRoVHdvQ2hhcmFjdGVycyhtX2hhc2gsIGEsIGIp
OwotICAgIH0KLQotICAgIHZvaWQgYWRkQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKLSAgICB7
Ci0gICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIG1faGFz
UGVuZGluZ0NoYXJhY3RlciA9IGZhbHNlOwotICAgICAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3Vt
aW5nQWxpZ25lZChtX3BlbmRpbmdDaGFyYWN0ZXIsIGNoYXJhY3Rlcik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtX3BlbmRpbmdDaGFyYWN0ZXIgPSBjaGFyYWN0
ZXI7Ci0gICAgICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IHRydWU7Ci0gICAgfQotCi0gICAg
dm9pZCBhZGRDaGFyYWN0ZXJzKFVDaGFyIGEsIFVDaGFyIGIpCi0gICAgewotICAgICAgICBpZiAo
bV9oYXNQZW5kaW5nQ2hhcmFjdGVyKSB7Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgICAg
IG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IGZhbHNlOwotI2VuZGlmCi0gICAgICAgICAgICBhZGRD
aGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG1fcGVuZGluZ0NoYXJhY3RlciwgYSk7Ci0gICAgICAg
ICAgICBtX3BlbmRpbmdDaGFyYWN0ZXIgPSBiOwotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAg
ICAgICBtX2hhc1BlbmRpbmdDaGFyYWN0ZXIgPSB0cnVlOwotI2VuZGlmCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVk
KGEsIGIpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnZl
cnRlciA9IERlZmF1bHRDb252ZXJ0ZXI+Ci0gICAgdm9pZCBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdB
bGlnbmVkKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCghbV9oYXNQZW5kaW5nQ2hhcmFjdGVyKTsKLQotICAgICAgICBib29sIHJlbWFpbmRlciA9
IGxlbmd0aCAmIDE7Ci0gICAgICAgIGxlbmd0aCA+Pj0gMTsKLQotICAgICAgICB3aGlsZSAobGVu
Z3RoLS0pIHsKLSAgICAgICAgICAgIGFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQoQ29udmVy
dGVyOjpjb252ZXJ0KGRhdGFbMF0pLCBDb252ZXJ0ZXI6OmNvbnZlcnQoZGF0YVsxXSkpOwotICAg
ICAgICAgICAgZGF0YSArPSAyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlbWFpbmRlcikK
LSAgICAgICAgICAgIGFkZENoYXJhY3RlcihDb252ZXJ0ZXI6OmNvbnZlcnQoKmRhdGEpKTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb252ZXJ0ZXIgPSBEZWZh
dWx0Q29udmVydGVyPgotICAgIHZvaWQgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChjb25z
dCBUKiBkYXRhKQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2hhc1BlbmRpbmdDaGFyYWN0ZXIp
OwotCi0gICAgICAgIHdoaWxlIChUIGEgPSAqZGF0YSsrKSB7Ci0gICAgICAgICAgICBUIGIgPSAq
ZGF0YSsrOwotICAgICAgICAgICAgaWYgKCFiKSB7Ci0gICAgICAgICAgICAgICAgYWRkQ2hhcmFj
dGVyKENvbnZlcnRlcjo6Y29udmVydChhKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBhZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKENvbnZl
cnRlcjo6Y29udmVydChhKSwgQ29udmVydGVyOjpjb252ZXJ0KGIpKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnZlcnRlciA9IERlZmF1
bHRDb252ZXJ0ZXI+Ci0gICAgdm9pZCBhZGRDaGFyYWN0ZXJzKGNvbnN0IFQqIGRhdGEsIHVuc2ln
bmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIGlmICghbGVuZ3RoKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBpZiAobV9oYXNQZW5kaW5nQ2hhcmFjdGVyKSB7Ci0gICAgICAgICAgICBt
X2hhc1BlbmRpbmdDaGFyYWN0ZXIgPSBmYWxzZTsKLSAgICAgICAgICAgIGFkZENoYXJhY3RlcnNB
c3N1bWluZ0FsaWduZWQobV9wZW5kaW5nQ2hhcmFjdGVyLCBDb252ZXJ0ZXI6OmNvbnZlcnQoKmRh
dGErKykpOwotICAgICAgICAgICAgLS1sZW5ndGg7Ci0gICAgICAgIH0KLSAgICAgICAgYWRkQ2hh
cmFjdGVyc0Fzc3VtaW5nQWxpZ25lZDxULCBDb252ZXJ0ZXI+KGRhdGEsIGxlbmd0aCk7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyID0gRGVmYXVs
dENvbnZlcnRlcj4KLSAgICB2b2lkIGFkZENoYXJhY3RlcnMoY29uc3QgVCogZGF0YSkKLSAgICB7
Ci0gICAgICAgIGlmIChtX2hhc1BlbmRpbmdDaGFyYWN0ZXIgJiYgKmRhdGEpIHsKLSAgICAgICAg
ICAgIG1faGFzUGVuZGluZ0NoYXJhY3RlciA9IGZhbHNlOwotICAgICAgICAgICAgYWRkQ2hhcmFj
dGVyc0Fzc3VtaW5nQWxpZ25lZChtX3BlbmRpbmdDaGFyYWN0ZXIsIENvbnZlcnRlcjo6Y29udmVy
dCgqZGF0YSsrKSk7Ci0gICAgICAgIH0KLSAgICAgICAgYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxp
Z25lZDxULCBDb252ZXJ0ZXI+KGRhdGEpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGhhc2hXaXRo
VG9wOEJpdHNNYXNrZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hl
cjo6ZmluYWxpemVBbmRNYXNrVG9wOEJpdHMocHJvY2Vzc1BlbmRpbmdDaGFyYWN0ZXIoKSk7Ci0g
ICAgfQotCi0gICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
U3RyaW5nSGFzaGVyOjpmaW5hbGl6ZShwcm9jZXNzUGVuZGluZ0NoYXJhY3RlcigpKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDb252ZXJ0ZXIgPSBEZWZhdWx0
Q29udmVydGVyPgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY29tcHV0ZUhhc2hBbmRN
YXNrVG9wOEJpdHMoY29uc3QgVCogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6ZmluYWxpemVBbmRNYXNrVG9wOEJpdHMoY29tcHV0ZUhh
c2hJbXBsPFQsIENvbnZlcnRlcj4oZGF0YSwgbGVuZ3RoKSk7Ci0gICAgfQotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyID0gRGVmYXVsdENvbnZlcnRlcj4KLSAg
ICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGNv
bnN0IFQqIGRhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpmaW5hbGl6
ZUFuZE1hc2tUb3A4Qml0cyhjb21wdXRlSGFzaEltcGw8VCwgQ29udmVydGVyPihkYXRhKSk7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyID0gRGVm
YXVsdENvbnZlcnRlcj4KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVIYXNo
KGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBT
dHJpbmdIYXNoZXI6OmZpbmFsaXplKGNvbXB1dGVIYXNoSW1wbDxULCBDb252ZXJ0ZXI+KGRhdGEs
IGxlbmd0aCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENv
bnZlcnRlciA9IERlZmF1bHRDb252ZXJ0ZXI+Ci0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBjb21wdXRlSGFzaChjb25zdCBUKiBkYXRhKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cmlu
Z0hhc2hlcjo6ZmluYWxpemUoY29tcHV0ZUhhc2hJbXBsPFQsIENvbnZlcnRlcj4oZGF0YSkpOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHVuc2lnbmVkIGNoYXJhY3RlcnNDb3Vu
dD4KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVMaXRlcmFsSGFzaChjb25z
dCBUICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBjb21wdXRlSGFzaDxUPihjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzQ291bnQgLSAxKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB1bnNpZ25lZCBjaGFyYWN0ZXJzQ291bnQ+Ci0g
ICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBjb21wdXRlTGl0ZXJhbEhhc2hBbmRNYXNrVG9w
OEJpdHMoY29uc3QgVCAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pCi0gICAgewotICAg
ICAgICByZXR1cm4gY29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHM8VD4oY2hhcmFjdGVycywgY2hh
cmFjdGVyc0NvdW50IC0gMSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBjb25zdGV4
cHIgdW5zaWduZWQgY2FsY3VsYXRlV2l0aFJlbWFpbmluZ0xhc3RDaGFyYWN0ZXIodW5zaWduZWQg
aGFzaCwgdW5zaWduZWQgY2hhcmFjdGVyKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0
ID0gaGFzaDsKLQotICAgICAgICByZXN1bHQgKz0gY2hhcmFjdGVyOwotICAgICAgICByZXN1bHQg
Xj0gcmVzdWx0IDw8IDExOwotICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+IDE3OwotCi0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgY29u
c3RleHByIHVuc2lnbmVkIGNhbGN1bGF0ZVdpdGhUd29DaGFyYWN0ZXJzKHVuc2lnbmVkIGhhc2gs
IHVuc2lnbmVkIGZpcnN0Q2hhcmFjdGVyLCB1bnNpZ25lZCBzZWNvbmRDaGFyYWN0ZXIpCi0gICAg
ewotICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBoYXNoOwotCi0gICAgICAgIHJlc3VsdCArPSBm
aXJzdENoYXJhY3RlcjsKLSAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCA8PCAxNikgXiAoKHNlY29u
ZENoYXJhY3RlciA8PCAxMSkgXiByZXN1bHQpOwotICAgICAgICByZXN1bHQgKz0gcmVzdWx0ID4+
IDExOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyPgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgY29tcHV0ZUhhc2hJbXBsKGNvbnN0IFQqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkK
LSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IHN0cmluZ0hhc2hpbmdTdGFydFZhbHVl
OwotICAgICAgICBib29sIHJlbWFpbmRlciA9IGxlbmd0aCAmIDE7Ci0gICAgICAgIGxlbmd0aCA+
Pj0gMTsKLQotICAgICAgICB3aGlsZSAobGVuZ3RoLS0pIHsKLSAgICAgICAgICAgIHJlc3VsdCA9
IGNhbGN1bGF0ZVdpdGhUd29DaGFyYWN0ZXJzKHJlc3VsdCwgQ29udmVydGVyOjpjb252ZXJ0KGNo
YXJhY3RlcnNbMF0pLCBDb252ZXJ0ZXI6OmNvbnZlcnQoY2hhcmFjdGVyc1sxXSkpOwotICAgICAg
ICAgICAgY2hhcmFjdGVycyArPSAyOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlbWFpbmRl
cikKLSAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVXaXRoUmVtYWluaW5nTGFzdENoYXJhY3Rl
cihyZXN1bHQsIENvbnZlcnRlcjo6Y29udmVydChjaGFyYWN0ZXJzWzBdKSk7Ci0gICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUg
Q29udmVydGVyPgotICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgY29tcHV0ZUhhc2hJbXBs
KGNvbnN0IFQqIGNoYXJhY3RlcnMpCi0gICAgewotICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBz
dHJpbmdIYXNoaW5nU3RhcnRWYWx1ZTsKLSAgICAgICAgd2hpbGUgKFQgYSA9ICpjaGFyYWN0ZXJz
KyspIHsKLSAgICAgICAgICAgIFQgYiA9ICpjaGFyYWN0ZXJzKys7Ci0gICAgICAgICAgICBpZiAo
IWIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGN1bGF0ZVdpdGhSZW1haW5pbmdMYXN0Q2hh
cmFjdGVyKHJlc3VsdCwgQ29udmVydGVyOjpjb252ZXJ0KGEpKTsKLSAgICAgICAgICAgIHJlc3Vs
dCA9IGNhbGN1bGF0ZVdpdGhUd29DaGFyYWN0ZXJzKHJlc3VsdCwgQ29udmVydGVyOjpjb252ZXJ0
KGEpLCBDb252ZXJ0ZXI6OmNvbnZlcnQoYikpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBy
ZXN1bHQ7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgcHJvY2Vzc1BlbmRpbmdDaGFyYWN0ZXIoKSBj
b25zdAotICAgIHsKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gbV9oYXNoOwotCi0gICAgICAg
IC8vIEhhbmRsZSBlbmQgY2FzZS4KLSAgICAgICAgaWYgKG1faGFzUGVuZGluZ0NoYXJhY3RlcikK
LSAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVXaXRoUmVtYWluaW5nTGFzdENoYXJhY3Rlcihy
ZXN1bHQsIG1fcGVuZGluZ0NoYXJhY3Rlcik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotCi0gICAgdW5zaWduZWQgbV9oYXNoIHsgc3RyaW5nSGFzaGluZ1N0YXJ0VmFsdWUgfTsKLSAg
ICBVQ2hhciBtX3BlbmRpbmdDaGFyYWN0ZXIgeyAwIH07Ci0gICAgYm9vbCBtX2hhc1BlbmRpbmdD
aGFyYWN0ZXIgeyBmYWxzZSB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCi0KLXVzaW5nIFdU
Rjo6U3VwZXJGYXN0SGFzaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1lIYXNo
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dZSGFzaC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA5ZmU0NDgzZDVhMDAuLjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dZSGFzaC5oCisrKyAvZGV2L251bGwKQEAgLTEsMzM3ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0vKiAKLSAqIExpY2Vuc2UgaGVhZGVyIGZyb20gd3loYXNoIGh0dHBz
Oi8vZ2l0aHViLmNvbS93YW5neWktZnVkYW4vd3loYXNoL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKLSAq
IAotICogVGhpcyBpcyBmcmVlIGFuZCB1bmVuY3VtYmVyZWQgc29mdHdhcmUgcmVsZWFzZWQgaW50
byB0aGUgcHVibGljIGRvbWFpbi4KLSAqCi0gKiBBbnlvbmUgaXMgZnJlZSB0byBjb3B5LCBtb2Rp
ZnksIHB1Ymxpc2gsIHVzZSwgY29tcGlsZSwgc2VsbCwgb3IKLSAqIGRpc3RyaWJ1dGUgdGhpcyBz
b2Z0d2FyZSwgZWl0aGVyIGluIHNvdXJjZSBjb2RlIGZvcm0gb3IgYXMgYSBjb21waWxlZAotICog
YmluYXJ5LCBmb3IgYW55IHB1cnBvc2UsIGNvbW1lcmNpYWwgb3Igbm9uLWNvbW1lcmNpYWwsIGFu
ZCBieSBhbnkKLSAqIG1lYW5zLgotICoKLSAqIEluIGp1cmlzZGljdGlvbnMgdGhhdCByZWNvZ25p
emUgY29weXJpZ2h0IGxhd3MsIHRoZSBhdXRob3Igb3IgYXV0aG9ycwotICogb2YgdGhpcyBzb2Z0
d2FyZSBkZWRpY2F0ZSBhbnkgYW5kIGFsbCBjb3B5cmlnaHQgaW50ZXJlc3QgaW4gdGhlCi0gKiBz
b2Z0d2FyZSB0byB0aGUgcHVibGljIGRvbWFpbi4gV2UgbWFrZSB0aGlzIGRlZGljYXRpb24gZm9y
IHRoZSBiZW5lZml0Ci0gKiBvZiB0aGUgcHVibGljIGF0IGxhcmdlIGFuZCB0byB0aGUgZGV0cmlt
ZW50IG9mIG91ciBoZWlycyBhbmQKLSAqIHN1Y2Nlc3NvcnMuIFdlIGludGVuZCB0aGlzIGRlZGlj
YXRpb24gdG8gYmUgYW4gb3ZlcnQgYWN0IG9mCi0gKiByZWxpbnF1aXNobWVudCBpbiBwZXJwZXR1
aXR5IG9mIGFsbCBwcmVzZW50IGFuZCBmdXR1cmUgcmlnaHRzIHRvIHRoaXMKLSAqIHNvZnR3YXJl
IHVuZGVyIGNvcHlyaWdodCBsYXcuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLSAqIE1F
UkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO
RlJJTkdFTUVOVC4KLSAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCi0gKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKLSAqIEFSSVNJTkcgRlJP
TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBP
UgotICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSA8d3RmL0ludDEyOC5oPgotI2luY2x1ZGUgPHd0Zi9VbmFsaWduZWRBY2Nl
c3MuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoZXIuaD4KLQotbmFtZXNwYWNlIFdU
RiB7Ci0KLS8vIGh0dHBzOi8vZ2l0aHViLmNvbS93YW5neWktZnVkYW4vd3loYXNoCi1jbGFzcyBX
WUhhc2ggewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIHN0YXRp
YyBjb25zdGV4cHIgYm9vbCBmb3JjZUNvbnZlcnRJblJlYWQgPSBmYWxzZTsKLSAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIGZsYWdDb3VudCA9IFN0cmluZ0hhc2hlcjo6ZmxhZ0NvdW50Owot
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbWFza0hhc2ggPSBTdHJpbmdIYXNoZXI6Om1h
c2tIYXNoOwotICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3Qgc2VjcmV0WzRdID0geyAweGEw
NzYxZDY0NzhiZDY0MmZ1bGwsIDB4ZTcwMzdlZDFhMGI0MjhkYnVsbCwgMHg4ZWJjNmFmMDljODhj
NmUzdWxsLCAweDU4OTk2NWNjNzUzNzRjYzN1bGwgfTsKLSAgICB0eXBlZGVmIFN0cmluZ0hhc2hl
cjo6RGVmYXVsdENvbnZlcnRlciBEZWZhdWx0Q29udmVydGVyOwotCi0gICAgV1lIYXNoKCkgPSBk
ZWZhdWx0OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udmVydGVyID0g
RGVmYXVsdENvbnZlcnRlcj4KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVI
YXNoQW5kTWFza1RvcDhCaXRzKGNvbnN0IFQqIGRhdGEsIHVuc2lnbmVkIGNoYXJhY3RlckNvdW50
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6ZmluYWxpemVBbmRNYXNrVG9w
OEJpdHMoY29tcHV0ZUhhc2hJbXBsPFQsIENvbnZlcnRlcj4oZGF0YSwgY2hhcmFjdGVyQ291bnQp
KTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgZnJpZW5kIGNsYXNzIFN0cmluZ0hhc2hlcjsKLQot
ICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCB3eXJvdCh1aW50NjRf
dCB4KQotICAgIHsKLSAgICAgICAgcmV0dXJuICh4ID4+IDMyKSB8ICh4IDw8IDMyKTsKLSAgICB9
Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBjb25zdGV4cHIgdm9pZCB3eW11bSh1aW50NjRf
dCogQSwgdWludDY0X3QqIEIpCi0gICAgewotICAgICAgICBVSW50MTI4IHIgPSBzdGF0aWNfY2Fz
dDxVSW50MTI4PigqQSkgKiAqQjsKLSAgICAgICAgKkEgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
cik7Ci0gICAgICAgICpCID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHIgPj4gNjQpOwotICAgIH0K
LQotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCB3eW1peCh1aW50
NjRfdCBBLCB1aW50NjRfdCBCKQotICAgIHsKLSAgICAgICAgd3ltdW0oJkEsICZCKTsKLSAgICAg
ICAgcmV0dXJuIEEgXiBCOwotICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBiaWdFbmRpYW5Ub0xpdHRsZUVuZGlhbjgodWludDY0X3QgdikKLSAgICB7
Ci0gICAgICAgIHJldHVybiAoKCh2ID4+IDU2KSAmIDB4ZmYpIHwgKCh2ID4+IDQwKSAmIDB4ZmYw
MCkgfCAoKHYgPj4gMjQpICYgMHhmZjAwMDApIHwgKCh2ID4+IDgpICYgMHhmZjAwMDAwMCkKLSAg
ICAgICAgICAgIHwgKCh2IDw8IDgpICYgMHhmZjAwMDAwMDAwKSB8ICgodiA8PCAyNCkgJiAweGZm
MDAwMDAwMDAwMCkgfCAoKHYgPDwgNDApICYgMHhmZjAwMDAwMDAwMDAwMCkgfCAoKHYgPDwgNTYp
ICYgMHhmZjAwMDAwMDAwMDAwMDAwKSk7Ci0gICAgfQotCi0gICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgY29uc3RleHByIHVpbnQzMl90IGJpZ0VuZGlhblRvTGl0dGxlRW5kaWFuNCh1aW50MzJfdCB2
KQotICAgIHsKLSAgICAgICAgcmV0dXJuICgoKHYgPj4gMjQpICYgMHhmZikgfCAoKHYgPj4gOCkg
JiAweGZmMDApIHwgKCh2IDw8IDgpICYgMHhmZjAwMDApIHwgKCh2IDw8IDI0KSAmIDB4ZmYwMDAw
MDApKTsKLSAgICB9Ci0KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3QgYmlnRW5kaWFuVG9MaXR0bGVFbmRpYW4yKHVpbnQxNl90IHYpCi0gICAgewotICAgICAgICBy
ZXR1cm4gKCh2ID4+IDgpICYgMHhmZikgfCAoKHYgPDwgOCkgJiAweGZmMDApOwotICAgIH0KLQot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnZlcnRlciA9IERlZmF1bHRDb252
ZXJ0ZXI+Ci0gICAgc3RydWN0IFJlYWRlcjE2Qml0IHsKLSAgICAgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgY29uc3RleHByIGJvb2wgaGFzRGVmYXVsdENvbnZlcnRlcigpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBzdGQ6OmlzX3NhbWU8Q29udmVydGVyLCBEZWZhdWx0Q29udmVydGVy
Pjo6dmFsdWU7Ci0gICAgICAgIH0KLQotICAgICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBjb25z
dGV4cHIgdWludDMyX3QgY29udmVydChjb25zdCBUIHApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBDb252ZXJ0ZXI6OmNvbnZlcnQoc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHApKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRf
dCB3eXIzKGNvbnN0IFQqIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQo
c2l6ZW9mKFQpID09IDIpOwotICAgICAgICAgICAgdWludDE2X3QgdiA9IGNvbnZlcnQocFswXSk7
Ci0gICAgICAgICAgICB1aW50NjRfdCBmaXJzdEJ5dGUgPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2
KTsKLSAgICAgICAgICAgIHVpbnQ2NF90IHNlY29uZEJ5dGUgPSBzdGF0aWNfY2FzdDx1aW50OF90
Pih2ID4+IDgpOwotICAgICAgICAgICAgLy8gU2luY2UgaXQncyBvbmx5IHVzZWQgZm9yIG9uZSBj
aGFyYWN0ZXIgKDE2IGJpdHMpIGNhc2UsCi0gICAgICAgICAgICAvLyB0aGlzIGFsaWducyB3aXRo
IHRoZSBvcmlnaW5hbCBhbGdvcml0aG0gd2hpY2ggY29weSBpbgotICAgICAgICAgICAgLy8gYmln
IGVuZGlhbiBubyBtYXR0ZXIgd2hhdCBjdXJyZW50IENQVShCSUdfRU5ESUFOKSBpcy4KLSAgICAg
ICAgICAgIHJldHVybiAoZmlyc3RCeXRlIDw8IDE2KSB8IChzZWNvbmRCeXRlIDw8IDgpIHwgc2Vj
b25kQnl0ZTsKLSAgICAgICAgfQotCi0gICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCB3eXI0V2l0aENvbnZlcnQoY29uc3QgVCogcCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihjb252ZXJ0KHBbMF0pKQotICAg
ICAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihjb252ZXJ0KHBbMV0pKSA8PCAx
Nik7Ci0gICAgICAgIH0KLQotICAgICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBjb25zdGV4cHIg
dWludDY0X3Qgd3lyNChjb25zdCBUKiBwKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWNf
YXNzZXJ0KHNpemVvZihUKSA9PSAyKTsKLSAgICAgICAgICAgIGlmIChzdGQ6OmlzX2NvbnN0YW50
X2V2YWx1YXRlZCgpIHx8IGZvcmNlQ29udmVydEluUmVhZCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gd3lyNFdpdGhDb252ZXJ0KHApOwotICAgICAgICAgICAgdWludDMyX3QgdmFsdWUgPSB1bmFs
aWduZWRMb2FkPHVpbnQzMl90PihwKTsKLSNpZiBDUFUoQklHX0VORElBTikKLSAgICAgICAgICAg
IHZhbHVlID0gYmlnRW5kaWFuVG9MaXR0bGVFbmRpYW40KHZhbHVlKTsKLSNlbmRpZgotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9Ci0KLSAgICAgICAgQUxXQVlTX0lOTElORSBz
dGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHd5cjhXaXRoQ29udmVydChjb25zdCBUKiBwKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNvbnZlcnQo
cFswXSkpCi0gICAgICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNvbnZlcnQo
cFsxXSkpIDw8IDE2KQotICAgICAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihj
b252ZXJ0KHBbMl0pKSA8PCAzMikKLSAgICAgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50
NjRfdD4oY29udmVydChwWzNdKSkgPDwgNDgpOwotICAgICAgICB9Ci0KLSAgICAgICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHd5cjgoY29uc3QgVCogcCkKLSAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gMik7Ci0gICAgICAg
ICAgICBpZiAoc3RkOjppc19jb25zdGFudF9ldmFsdWF0ZWQoKSB8fCBmb3JjZUNvbnZlcnRJblJl
YWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHd5cjhXaXRoQ29udmVydChwKTsKLSAgICAgICAg
ICAgIHVpbnQ2NF90IHZhbHVlID0gdW5hbGlnbmVkTG9hZDx1aW50NjRfdD4ocCk7Ci0jaWYgQ1BV
KEJJR19FTkRJQU4pCi0gICAgICAgICAgICB2YWx1ZSA9IGJpZ0VuZGlhblRvTGl0dGxlRW5kaWFu
OCh2YWx1ZSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgfQot
ICAgIH07Ci0KLSAgICAvLyBMQ2hhciBkYXRhIGlzIGludGVycHJldGVkIGFzIExhdGluLTEtZW5j
b2RlZCAoemVyby1leHRlbmRlZCB0byAxNiBiaXRzKS4KLSAgICAvLyBUbyBtYXRjaCB0aGUgaGFz
aCB2YWx1ZSBvZiBVQ2hhciB3aXRoIHNhbWUgY29udGVudCwgZXh0ZW5kIDE2IGJpdHMgKDB4ZmYp
Ci0gICAgLy8gdG8gMzIgYml0cyAoMHgwMGZmKS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBDb252ZXJ0ZXIgPSBEZWZhdWx0Q29udmVydGVyPgotICAgIHN0cnVjdCBSZWFkZXI4
Qml0IHsKLSAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgY29uc3RleHByIGJvb2wgaGFzRGVm
YXVsdENvbnZlcnRlcigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmlzX3Nh
bWU8Q29udmVydGVyLCBEZWZhdWx0Q29udmVydGVyPjo6dmFsdWU7Ci0gICAgICAgIH0KLQotICAg
ICAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY29udmVydChjb25z
dCBUIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBDb252ZXJ0ZXI6OmNvbnZlcnQo
c3RhdGljX2Nhc3Q8dWludDhfdD4ocCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgQUxXQVlTX0lO
TElORSBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHd5cjMoY29uc3QgVCogcCkKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVCkgPT0gMSk7Ci0gICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNvbnZlcnQocFswXSkpIDw8IDE2OwotICAg
ICAgICB9Ci0KLSAgICAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90
IHd5cjRXaXRoQ29udmVydChjb25zdCBUKiBwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNvbnZlcnQocFswXSkpCi0gICAgICAgICAgICAgICAg
fCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNvbnZlcnQocFsxXSkpIDw8IDE2KTsKLSAgICAgICAg
fQotCi0gICAgICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCB3eXI0
KGNvbnN0IFQqIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KFQpID09IDEpOwotICAgICAgICAgICAgaWYgKHN0ZDo6aXNfY29uc3RhbnRfZXZhbHVhdGVkKCkg
fHwgZm9yY2VDb252ZXJ0SW5SZWFkKQotICAgICAgICAgICAgICAgIHJldHVybiB3eXI0V2l0aENv
bnZlcnQocCk7Ci0gICAgICAgICAgICAvLyBDb3B5IDE2IGJpdHMgYW5kIGV4dGVuZHMgdG8gMzIg
Yml0cy4KLSAgICAgICAgICAgIHVpbnQxNl90IHYxNiA9IHVuYWxpZ25lZExvYWQ8dWludDE2X3Q+
KHApOwotI2lmIENQVShCSUdfRU5ESUFOKQotICAgICAgICAgICAgdjE2ID0gYmlnRW5kaWFuVG9M
aXR0bGVFbmRpYW4yKHYxNik7Ci0jZW5kaWYKLSAgICAgICAgICAgIHVpbnQzMl90IHYzMiA9IHN0
YXRpY19jYXN0PHVpbnQzMl90Pih2MTYpOwotICAgICAgICAgICAgcmV0dXJuICh2MzIgfCAodjMy
IDw8IDgpKSAmIDB4MDBmZjAwZmZVTDsKLSAgICAgICAgfQotCi0gICAgICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCB3eXI4V2l0aENvbnZlcnQoY29uc3QgVCogcCkK
LSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihjb252
ZXJ0KHBbMF0pKQotICAgICAgICAgICAgICAgIHwgKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihjb252
ZXJ0KHBbMV0pKSA8PCAxNikKLSAgICAgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50NjRf
dD4oY29udmVydChwWzJdKSkgPDwgMzIpCi0gICAgICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KGNvbnZlcnQocFszXSkpIDw8IDQ4KTsKLSAgICAgICAgfQotCi0gICAgICAgIEFM
V0FZU19JTkxJTkUgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCB3eXI4KGNvbnN0IFQqIHApCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFQpID09IDEpOwotICAg
ICAgICAgICAgaWYgKHN0ZDo6aXNfY29uc3RhbnRfZXZhbHVhdGVkKCkgfHwgZm9yY2VDb252ZXJ0
SW5SZWFkKQotICAgICAgICAgICAgICAgIHJldHVybiB3eXI4V2l0aENvbnZlcnQocCk7Ci0gICAg
ICAgICAgICAvLyBDb3B5IDMyIGJpdHMgYW5kIEV4dGVuZHMgdG8gNjQgYml0cy4KLSAgICAgICAg
ICAgIHVpbnQzMl90IHYzMiA9IHVuYWxpZ25lZExvYWQ8dWludDMyX3Q+KHApOwotI2lmIENQVShC
SUdfRU5ESUFOKQotICAgICAgICAgICAgdjMyID0gYmlnRW5kaWFuVG9MaXR0bGVFbmRpYW40KHYz
Mik7Ci0jZW5kaWYKLSAgICAgICAgICAgIHVpbnQ2NF90IHY2NCA9IHN0YXRpY19jYXN0PHVpbnQ2
NF90Pih2MzIpOwotICAgICAgICAgICAgdjY0ID0gKHY2NCB8ICh2NjQgPDwgMTYpKSAmIDB4MDAw
MGZmZmYwMDAwZmZmZlVMTDsKLSAgICAgICAgICAgIHJldHVybiAodjY0IHwgKHY2NCA8PCA4KSkg
JiAweDAwZmYwMGZmMDBmZjAwZmZVTEw7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgQUxXQVlT
X0lOTElORSBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGluaXRTZWVkKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB3eW1peChzZWNyZXRbMF0sIHNlY3JldFsxXSk7Ci0gICAgfQotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgUmVhZDhGdW5jdG9yPgotICAgIEFMV0FZU19JTkxJ
TkUgc3RhdGljIGNvbnN0ZXhwciB2b2lkIGNvbnN1bWUyNENoYXJhY3RlcnMoY29uc3QgVCogcCwg
Y29uc3QgUmVhZDhGdW5jdG9yJiB3eXI4LCB1aW50NjRfdCYgc2VlZCwgdWludDY0X3QmIHNlZTEs
IHVpbnQ2NF90JiBzZWUyKQotICAgIHsKLSAgICAgICAgc2VlZCA9IHd5bWl4KHd5cjgocCkgXiBz
ZWNyZXRbMV0sIHd5cjgocCArIDQpIF4gc2VlZCk7Ci0gICAgICAgIHNlZTEgPSB3eW1peCh3eXI4
KHAgKyA4KSBeIHNlY3JldFsyXSwgd3lyOChwICsgMTIpIF4gc2VlMSk7Ci0gICAgICAgIHNlZTIg
PSB3eW1peCh3eXI4KHAgKyAxNikgXiBzZWNyZXRbM10sIHd5cjgocCArIDIwKSBeIHNlZTIpOwot
ICAgIH0KLQotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBoYW5k
bGVFbmRDYXNlKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIGNvbnN0IHVpbnQ2NF90IHNlZWQsIGNv
bnN0IHVpbnQ2NF90IGJ5dGVDb3VudCkKLSAgICB7Ci0gICAgICAgIGEgXj0gc2VjcmV0WzFdOwot
ICAgICAgICBiIF49IHNlZWQ7Ci0KLSAgICAgICAgd3ltdW0oJmEsICZiKTsKLSAgICAgICAgcmV0
dXJuIHd5bWl4KGEgXiBzZWNyZXRbMF0gXiBieXRlQ291bnQsIGIgXiBzZWNyZXRbMV0pOwotICAg
IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJlYWQ4RnVuY3Rvcj4KLSAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBjb25zdGV4cHIgdm9pZCBoYW5kbGVHcmVhdGVyVGhhbjhD
aGFyYWN0ZXJzQ2FzZShUKiYgcCwgdW5zaWduZWQmIGksIGNvbnN0IFJlYWQ4RnVuY3RvciYgd3ly
OCwgdWludDY0X3QmIHNlZWQsIHVpbnQ2NF90IHNlZTEsIHVpbnQ2NF90IHNlZTIpCi0gICAgewot
ICAgICAgICBpZiAoVU5MSUtFTFkoaSA+IDI0KSkgewotICAgICAgICAgICAgZG8gewotICAgICAg
ICAgICAgICAgIGNvbnN1bWUyNENoYXJhY3RlcnMocCwgd3lyOCwgc2VlZCwgc2VlMSwgc2VlMik7
Ci0gICAgICAgICAgICAgICAgcCArPSAyNDsKLSAgICAgICAgICAgICAgICBpIC09IDI0OwotICAg
ICAgICAgICAgfSB3aGlsZSAoTElLRUxZKGkgPiAyNCkpOwotICAgICAgICAgICAgc2VlZCBePSBz
ZWUxIF4gc2VlMjsKLSAgICAgICAgfQotICAgICAgICB3aGlsZSAoVU5MSUtFTFkoaSA+IDgpKSB7
Ci0gICAgICAgICAgICBzZWVkID0gd3ltaXgod3lyOChwKSBeIHNlY3JldFsxXSwgd3lyOChwICsg
NCkgXiBzZWVkKTsKLSAgICAgICAgICAgIGkgLT0gODsKLSAgICAgICAgICAgIHAgKz0gODsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFJlYWRl
cj4KLSAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgaGFzaChjb25z
dCBUKiBwLCBjb25zdCB1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudCkKLSAgICB7Ci0gICAgICAgIGF1
dG8gd3lyMyA9IFJlYWRlcjo6d3lyMzsKLSAgICAgICAgYXV0byB3eXI0ID0gUmVhZGVyOjp3eXI0
OwotICAgICAgICBhdXRvIHd5cjggPSBSZWFkZXI6Ond5cjg7Ci0KLSAgICAgICAgaWYgY29uc3Rl
eHByICghUmVhZGVyOjpoYXNEZWZhdWx0Q29udmVydGVyKCkpIHsKLSAgICAgICAgICAgIHd5cjQg
PSBSZWFkZXI6Ond5cjRXaXRoQ29udmVydDsKLSAgICAgICAgICAgIHd5cjggPSBSZWFkZXI6Ond5
cjhXaXRoQ29udmVydDsKLSAgICAgICAgfQotCi0gICAgICAgIHVpbnQ2NF90IGEgPSAwOwotICAg
ICAgICB1aW50NjRfdCBiID0gMDsKLSAgICAgICAgY29uc3QgdWludDY0X3QgYnl0ZUNvdW50ID0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNoYXJhY3RlckNvdW50KSA8PCAxOwotICAgICAgICB1aW50
NjRfdCBzZWVkID0gaW5pdFNlZWQoKTsKLQotICAgICAgICBpZiAoTElLRUxZKGNoYXJhY3RlckNv
dW50IDw9IDgpKSB7Ci0gICAgICAgICAgICBpZiAoTElLRUxZKGNoYXJhY3RlckNvdW50ID49IDIp
KSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgdWludDY0X3Qgb2Zmc2V0ID0gKChieXRlQ291bnQg
Pj4gMykgPDwgMikgPj4gMTsKLSAgICAgICAgICAgICAgICBhID0gKHd5cjQocCkgPDwgMzIpIHwg
d3lyNChwICsgb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICBwICs9IGNoYXJhY3RlckNvdW50IC0g
MjsKLSAgICAgICAgICAgICAgICBiID0gKHd5cjQocCkgPDwgMzIpIHwgd3lyNChwIC0gb2Zmc2V0
KTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoTElLRUxZKGNoYXJhY3RlckNvdW50ID4gMCkpIHsK
LSAgICAgICAgICAgICAgICBhID0gd3lyMyhwKTsKLSAgICAgICAgICAgICAgICBiID0gMDsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYSA9IDA7Ci0gICAgICAgICAgICAg
ICAgYiA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBpID0gY2hhcmFjdGVyQ291bnQ7Ci0gICAgICAgICAgICBoYW5kbGVHcmVhdGVyVGhh
bjhDaGFyYWN0ZXJzQ2FzZShwLCBpLCB3eXI4LCBzZWVkLCBzZWVkLCBzZWVkKTsKLSAgICAgICAg
ICAgIGEgPSB3eXI4KHAgKyBpIC0gOCk7Ci0gICAgICAgICAgICBiID0gd3lyOChwICsgaSAtIDQp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBoYW5kbGVFbmRDYXNlKGEsIGIsIHNlZWQsIGJ5
dGVDb3VudCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29u
dmVydGVyID0gRGVmYXVsdENvbnZlcnRlcj4KLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVk
IGNvbXB1dGVIYXNoSW1wbChjb25zdCBUKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBjaGFyYWN0ZXJD
b3VudCkKLSAgICB7Ci0gICAgICAgIGlmIGNvbnN0ZXhwciAoc2l6ZW9mKFQpID09IDIpCi0gICAg
ICAgICAgICByZXR1cm4gaGFzaDxULCBSZWFkZXIxNkJpdDxULCBDb252ZXJ0ZXI+PihjaGFyYWN0
ZXJzLCBjaGFyYWN0ZXJDb3VudCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBo
YXNoPFQsIFJlYWRlcjhCaXQ8VCwgQ29udmVydGVyPj4oY2hhcmFjdGVycywgY2hhcmFjdGVyQ291
bnQpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdURgotCi11c2luZyBXVEY6OldZSGFz
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24uY3Bw
IGIvU291cmNlL1dURi93dGYvdW5pY29kZS9VVEY4Q29udmVyc2lvbi5jcHAKaW5kZXggYThiZDA5
ZThlNDZmLi40ODc1NzZmYTJkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUv
VVRGOENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaWNvZGUvVVRGOENvbnZl
cnNpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNy0yMDIz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MCBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvVVRGOENvbnZlcnNpb24u
aD4KIAogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nSGFzaGVySW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2hlci5oPgog
I2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKIG5hbWVzcGFjZSBXVEY6
OlVuaWNvZGUgewpAQCAtMTQ2LDggKzE0Niw3IEBAIHVuc2lnbmVkIGNhbGN1bGF0ZVN0cmluZ0hh
c2hBbmRMZW5ndGhGcm9tVVRGOE1hc2tpbmdUb3A4Qml0cyhjb25zdCBjaGFyKiBkYXRhLCBjCiAg
ICAgICAgICAgICB1dGYxNkxlbmd0aCsrOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
QVNTRVJUKFVfSVNfU1VQUExFTUVOVEFSWShjaGFyYWN0ZXIpKTsKLSAgICAgICAgICAgIHN0cmlu
Z0hhc2hlci5hZGRDaGFyYWN0ZXIoVTE2X0xFQUQoY2hhcmFjdGVyKSk7Ci0gICAgICAgICAgICBz
dHJpbmdIYXNoZXIuYWRkQ2hhcmFjdGVyKFUxNl9UUkFJTChjaGFyYWN0ZXIpKTsKKyAgICAgICAg
ICAgIHN0cmluZ0hhc2hlci5hZGRDaGFyYWN0ZXJzKFUxNl9MRUFEKGNoYXJhY3RlciksIFUxNl9U
UkFJTChjaGFyYWN0ZXIpKTsKICAgICAgICAgICAgIHV0ZjE2TGVuZ3RoICs9IDI7CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0hh
c2hlci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSGFzaGVyLnBtCmluZGV4
IGJiOWMxYWFmZGU3OS4uY2IwZDE5MzczOTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0hhc2hlci5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0hhc2hlci5wbQpAQCAtMiw3ICsyLDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA2IEFu
ZGVycyBDYXJsc3NvbiA8YW5kZXJzY2FAbWFjLmNvbT4KICMgQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYg
QWxleGV5IFByb3NrdXJ5YWtvdiA8YXBAd2Via2l0Lm9yZz4KLSMgQ29weXJpZ2h0IChDKSAyMDA2
LTIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBtY2MuaWQuYXU+
CiAjIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQpAQCAtMjcsMjE5ICsyNyw2NyBAQAogcGFja2FnZSBI
YXNoZXI7CiAKIHVzZSBzdHJpY3Q7Ci11c2UgYmlnaW50OwotCi1teSAkbWFzazY0ID0gMioqNjQg
LSAxOwotbXkgJG1hc2szMiA9IDIqKjMyIC0gMTsKIAogc3ViIGxlZnRTaGlmdCgkJCkgewogICAg
IG15ICgkdmFsdWUsICRkaXN0YW5jZSkgPSBAXzsKICAgICByZXR1cm4gKCgkdmFsdWUgPDwgJGRp
c3RhbmNlKSAmIDB4RkZGRkZGRkYpOwogfQogCi1zdWIgZmluYWxpemVBbmRNYXNrVG9wOEJpdHMo
JCkgewotICAgIG15ICgkdmFsdWUpID0gQF87Ci0KLSAgICAkdmFsdWUgJj0gJG1hc2szMjsKLQot
ICAgICMgRm9yY2UgImF2YWxhbmNoaW5nIiBvZiBsb3dlciAzMiBiaXRzCi0gICAgJHZhbHVlIF49
IGxlZnRTaGlmdCgkdmFsdWUsIDMpOwotICAgICR2YWx1ZSArPSAoJHZhbHVlID4+IDUpOwotICAg
ICR2YWx1ZSA9ICgkdmFsdWUgJiAkbWFzazMyKTsKLSAgICAkdmFsdWUgXj0gKGxlZnRTaGlmdCgk
dmFsdWUsIDIpICYgJG1hc2szMik7Ci0gICAgJHZhbHVlICs9ICgkdmFsdWUgPj4gMTUpOwotICAg
ICR2YWx1ZSA9ICR2YWx1ZSAmICRtYXNrMzI7Ci0gICAgJHZhbHVlIF49IChsZWZ0U2hpZnQoJHZh
bHVlLCAxMCkgJiAkbWFzazMyKTsKLQotICAgICMgU2F2ZSA4IGJpdHMgZm9yIFN0cmluZ0ltcGwg
dG8gdXNlIGFzIGZsYWdzLgotICAgICR2YWx1ZSAmPSAweGZmZmZmZjsKLQotICAgICMgVGhpcyBh
dm9pZHMgZXZlciByZXR1cm5pbmcgYSBoYXNoIGNvZGUgb2YgMCwgc2luY2UgdGhhdCBpcyB1c2Vk
IHRvCi0gICAgIyBzaWduYWwgImhhc2ggbm90IGNvbXB1dGVkIHlldCIuIFNldHRpbmcgdGhlIGhp
Z2ggYml0IG1haW50YWlucwotICAgICMgcmVhc29uYWJsZSBmaWRlbGl0eSB0byBhIGhhc2ggY29k
ZSBvZiAwIGJlY2F1c2UgaXQgaXMgbGlrZWx5IHRvIHlpZWxkCi0gICAgIyBleGFjdGx5IDAgd2hl
biBoYXNoIGxvb2t1cCBtYXNrcyBvdXQgdGhlIGhpZ2ggYml0cy4KLSAgICAkdmFsdWUgPSAoMHg4
MDAwMDAwMCA+PiA4KSBpZiAoJHZhbHVlID09IDApOwotCi0gICAgcmV0dXJuICR2YWx1ZTsKLX0K
LQogIyBQYXVsIEhzaWVoJ3MgU3VwZXJGYXN0SGFzaAogIyBodHRwOi8vd3d3LmF6aWxsaW9ubW9u
a2V5cy5jb20vcWVkL2hhc2guaHRtbAotc3ViIHN1cGVyRmFzdEhhc2ggewotICAgIG15IEBjaGFy
cyA9IEBfOworc3ViIEdlbmVyYXRlSGFzaFZhbHVlCit7CisgICAgbXkgQGNoYXJzID0gc3BsaXQo
LyAqLywgJF9bMF0pOwogCiAgICAgIyBUaGlzIGhhc2ggaXMgZGVzaWduZWQgdG8gd29yayBvbiAx
Ni1iaXQgY2h1bmtzIGF0IGEgdGltZS4gQnV0IHNpbmNlIHRoZSBub3JtYWwgY2FzZQogICAgICMg
KGFib3ZlKSBpcyB0byBoYXNoIFVURi0xNiBjaGFyYWN0ZXJzLCB3ZSBqdXN0IHRyZWF0IHRoZSA4
LWJpdCBjaGFycyBhcyBpZiB0aGV5CiAgICAgIyB3ZXJlIDE2LWJpdCBjaHVua3MsIHdoaWNoIHNo
b3VsZCBnaXZlIG1hdGNoaW5nIHJlc3VsdHMKLQorICAgIAorICAgIG15ICRFWFAyXzMyID0gNDI5
NDk2NzI5NjsKKyAgICAKICAgICBteSAkaGFzaCA9IDB4OWUzNzc5Yjk7CiAgICAgbXkgJGwgICAg
PSBzY2FsYXIgQGNoYXJzOyAjSSB3aXNoIHRoaXMgd2FzIGluIFJ1YnkgLS0tIE1ha3MKICAgICBt
eSAkcmVtICA9ICRsICYgMTsKICAgICAkbCA9ICRsID4+IDE7Ci0KKyAgICAKICAgICBteSAkcyA9
IDA7Ci0KKyAgICAKICAgICAjIE1haW4gbG9vcAogICAgIGZvciAoOyAkbCA+IDA7ICRsLS0pIHsK
ICAgICAgICAgJGhhc2ggICArPSBvcmQoJGNoYXJzWyRzXSk7CiAgICAgICAgIG15ICR0bXAgPSBs
ZWZ0U2hpZnQob3JkKCRjaGFyc1skcysxXSksIDExKSBeICRoYXNoOwotICAgICAgICAkaGFzaCAg
ID0gKGxlZnRTaGlmdCgkaGFzaCwgMTYpICYgJG1hc2szMikgXiAkdG1wOworICAgICAgICAkaGFz
aCAgID0gKGxlZnRTaGlmdCgkaGFzaCwgMTYpJSAkRVhQMl8zMikgXiAkdG1wOwogICAgICAgICAk
cyArPSAyOwogICAgICAgICAkaGFzaCArPSAkaGFzaCA+PiAxMTsKLSAgICAgICAgJGhhc2ggJj0g
JG1hc2szMjsKKyAgICAgICAgJGhhc2ggJT0gJEVYUDJfMzI7CiAgICAgfQotCisgICAgCiAgICAg
IyBIYW5kbGUgZW5kIGNhc2UKICAgICBpZiAoJHJlbSAhPSAwKSB7CiAgICAgICAgICRoYXNoICs9
IG9yZCgkY2hhcnNbJHNdKTsKLSAgICAgICAgJGhhc2ggXj0gKGxlZnRTaGlmdCgkaGFzaCwgMTEp
ICYgJG1hc2szMik7CisgICAgICAgICRoYXNoIF49IChsZWZ0U2hpZnQoJGhhc2gsIDExKSUgJEVY
UDJfMzIpOwogICAgICAgICAkaGFzaCArPSAkaGFzaCA+PiAxNzsKICAgICB9Ci0KLSAgICByZXR1
cm4gZmluYWxpemVBbmRNYXNrVG9wOEJpdHMoJGhhc2gpOwotfQotCi1zdWIgdWludDY0X2FkZCgk
JCkgewotICAgIG15ICgkYSwgJGIpID0gQF87Ci0gICAgbXkgJHN1bSA9ICRhICsgJGI7Ci0gICAg
cmV0dXJuICRzdW0gJiAkbWFzazY0OwotfQotCi1zdWIgdWludDY0X211bHRpKCQkKSB7Ci0gICAg
bXkgKCRhLCAkYikgPSBAXzsKLSAgICBteSAkcHJvZHVjdCA9ICRhICogJGI7Ci0gICAgcmV0dXJu
ICRwcm9kdWN0ICYgJG1hc2s2NDsKLX0KLQotc3ViIHd5bXVtKCQkKSB7Ci0gICAgbXkgKCRBLCAk
QikgPSBAXzsKLQotICAgIG15ICRoYSA9ICRBID4+IDMyOwotICAgIG15ICRoYiA9ICRCID4+IDMy
OwotICAgIG15ICRsYSA9ICRBICYgJG1hc2szMjsKLSAgICBteSAkbGIgPSAkQiAmICRtYXNrMzI7
Ci0gICAgbXkgJGhpOwotICAgIG15ICRsbzsKLSAgICBteSAkcmggPSB1aW50NjRfbXVsdGkoJGhh
LCAkaGIpOwotICAgIG15ICRybTAgPSB1aW50NjRfbXVsdGkoJGhhLCAkbGIpOwotICAgIG15ICRy
bTEgPSB1aW50NjRfbXVsdGkoJGhiLCAkbGEpOwotICAgIG15ICRybCA9IHVpbnQ2NF9tdWx0aSgk
bGEsICRsYik7Ci0gICAgbXkgJHQgPSB1aW50NjRfYWRkKCRybCwgKCRybTAgPDwgMzIpKTsKLSAg
ICBteSAkYyA9IGludCgkdCA8ICRybCk7Ci0KLSAgICAkbG8gPSB1aW50NjRfYWRkKCR0LCAoJHJt
MSA8PCAzMikpOwotICAgICRjICs9IGludCgkbG8gPCAkdCk7Ci0gICAgJGhpID0gdWludDY0X2Fk
ZCgkcmgsIHVpbnQ2NF9hZGQoKCRybTAgPj4gMzIpLCB1aW50NjRfYWRkKCgkcm0xID4+IDMyKSwg
JGMpKSk7Ci0KLSAgICByZXR1cm4gKCRsbywgJGhpKTsKLX07Ci0KLXN1YiB3eW1peCgkJCkgewot
ICAgIG15ICgkQSwgJEIpID0gQF87Ci0gICAgKCRBLCAkQikgPSB3eW11bSgkQSwgJEIpOwotICAg
IHJldHVybiAkQSBeICRCOwotfQotCi1zdWIgY29udmVydDMyQml0VG82NEJpdCgkKSB7Ci0gICAg
bXkgKCR2KSA9IEBfOwotICAgIG15ICgkbWFzazEpID0gMjgxNDcwNjgxODA4ODk1OyAgICMgMHgw
MDAwX2ZmZmZfMDAwMF9mZmZmCi0gICAgJHYgPSAoJHYgfCAoJHYgPDwgMTYpKSAmICRtYXNrMTsK
LSAgICBteSAoJG1hc2syKSA9IDcxNzc3MjE0Mjk0NTg5Njk1OyAjIDB4MDBmZl8wMGZmXzAwZmZf
MDBmZgotICAgIHJldHVybiAoJHYgfCAoJHYgPDwgOCkpICYgJG1hc2syOwotfQotCi1zdWIgY29u
dmVydDE2Qml0VG8zMkJpdCgkKSB7Ci0gICAgbXkgKCR2KSA9IEBfOwotICAgIHJldHVybiAoJHYg
fCAoJHYgPDwgOCkpICYgMHgwMGZmXzAwZmY7Ci19Ci0KLXN1YiB3eWhhc2ggewotICAgICMgaHR0
cHM6Ly9naXRodWIuY29tL3dhbmd5aS1mdWRhbi93eWhhc2gKLSAgICBteSBAY2hhcnMgPSBAXzsK
LSAgICBteSAkY2hhckNvdW50ID0gc2NhbGFyIEBjaGFyczsKLSAgICBteSAkYnl0ZUNvdW50ID0g
JGNoYXJDb3VudCA8PCAxOwotICAgIG15ICRjaGFySW5kZXggPSAwOwotICAgIG15ICRzZWVkID0g
MDsKLSAgICBteSBAc2VjcmV0ID0gKCAxMTU2MjQ2MTQxMDY3OTk0MDE0MywgMTY2NDYyODgwODY1
MDA5MTEzMjMsIDEwMjg1MjEzMjMwNjU4Mjc1MDQzLCA2Mzg0MjQ1ODc1NTg4NjgwODk5ICk7Ci0g
ICAgbXkgJG1vdmUxID0gKCgkYnl0ZUNvdW50ID4+IDMpIDw8IDIpID4+IDE7Ci0KLSAgICAkc2Vl
ZCBePSB3eW1peCgkc2VlZCBeICRzZWNyZXRbMF0sICRzZWNyZXRbMV0pOwotICAgIG15ICRhID0g
MDsKLSAgICBteSAkYiA9IDA7Ci0KLSAgICBsb2NhbCAqYzJpID0gc3ViIHsKLSAgICAgICAgbXkg
KCRpKSA9IEBfOwotICAgICAgICByZXR1cm4gb3JkKCRjaGFyc1skaV0pOwotICAgIH07Ci0KLSAg
ICBsb2NhbCAqd3lyOCA9IHN1YiB7Ci0gICAgICAgIG15ICgkaSkgPSBAXzsKLSAgICAgICAgbXkg
JHYgPSBjMmkoJGkpIHwgKGMyaSgkaSArIDEpIDw8IDgpIHwgKGMyaSgkaSArIDIpIDw8IDE2KSB8
IChjMmkoJGkgKyAzKSA8PCAyNCk7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0MzJCaXRUbzY0Qml0
KCR2KTsKLSAgICB9OwotCi0gICAgbG9jYWwgKnd5cjQgPSBzdWIgewotICAgICAgICBteSAoJGkp
ID0gQF87Ci0gICAgICAgIG15ICR2ID0gYzJpKCRpKSB8IChjMmkoJGkgKyAxKSA8PCA4KTsKLSAg
ICAgICAgcmV0dXJuIGNvbnZlcnQxNkJpdFRvMzJCaXQoJHYpOwotICAgIH07Ci0KLSAgICBsb2Nh
bCAqd3lyMiA9IHN1YiB7Ci0gICAgICAgIG15ICgkaSkgPSBAXzsKLSAgICAgICAgcmV0dXJuIGMy
aSgkaSkgPDwgMTY7Ci0gICAgfTsKLQotICAgIGlmICgkYnl0ZUNvdW50IDw9IDE2KSB7Ci0gICAg
ICAgIGlmICgkYnl0ZUNvdW50ID49IDQpIHsKLSAgICAgICAgICAgICRhID0gKHd5cjQoJGNoYXJJ
bmRleCkgPDwgMzIpIHwgd3lyNCgkY2hhckluZGV4ICsgJG1vdmUxKTsKLSAgICAgICAgICAgICRj
aGFySW5kZXggPSAkY2hhckluZGV4ICsgJGNoYXJDb3VudCAtIDI7Ci0gICAgICAgICAgICAkYiA9
ICh3eXI0KCRjaGFySW5kZXgpIDw8IDMyKSB8IHd5cjQoJGNoYXJJbmRleCAtICRtb3ZlMSk7Ci0g
ICAgICAgIH0gZWxzaWYgKCRieXRlQ291bnQgPiAwKSB7Ci0gICAgICAgICAgICAkYSA9IHd5cjIo
JGNoYXJJbmRleCk7Ci0gICAgICAgICAgICAkYiA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAkYSA9ICRiID0gMDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIG15
ICRpID0gJGJ5dGVDb3VudDsKLSAgICAgICAgaWYgKCRpID4gNDgpIHsKLSAgICAgICAgICAgIG15
ICRzZWUxID0gJHNlZWQ7Ci0gICAgICAgICAgICBteSAkc2VlMiA9ICRzZWVkOwotICAgICAgICAg
ICAgZG8gewotICAgICAgICAgICAgICAgICRzZWVkID0gd3ltaXgod3lyOCgkY2hhckluZGV4KSBe
ICRzZWNyZXRbMV0sIHd5cjgoJGNoYXJJbmRleCArIDQpIF4gJHNlZWQpOwotICAgICAgICAgICAg
ICAgICRzZWUxID0gd3ltaXgod3lyOCgkY2hhckluZGV4ICsgOCkgXiAkc2VjcmV0WzJdLCB3eXI4
KCRjaGFySW5kZXggKyAxMikgXiAkc2VlMSk7Ci0gICAgICAgICAgICAgICAgJHNlZTIgPSB3eW1p
eCh3eXI4KCRjaGFySW5kZXggKyAxNikgXiAkc2VjcmV0WzNdLCB3eXI4KCRjaGFySW5kZXggKyAy
MCkgXiAkc2VlMik7Ci0gICAgICAgICAgICAgICAgJGNoYXJJbmRleCArPSAyNDsKLSAgICAgICAg
ICAgICAgICAkaSAtPSA0ODsKLSAgICAgICAgICAgIH0gd2hpbGUgKCRpID4gNDgpOwotICAgICAg
ICAgICAgJHNlZWQgXj0gJHNlZTEgXiAkc2VlMjsKLSAgICAgICAgfQotICAgICAgICB3aGlsZSAo
JGkgPiAxNikgewotICAgICAgICAgICAgJHNlZWQgPSB3eW1peCh3eXI4KCRjaGFySW5kZXgpIF4g
JHNlY3JldFsxXSwgd3lyOCgkY2hhckluZGV4ICsgNCkgXiAkc2VlZCk7Ci0gICAgICAgICAgICAk
aSAtPSAxNjsKLSAgICAgICAgICAgICRjaGFySW5kZXggKz0gODsKLSAgICAgICAgfQotICAgICAg
ICBteSAkbW92ZTIgPSAkaSA+PiAxOwotICAgICAgICAkYSA9IHd5cjgoJGNoYXJJbmRleCArICRt
b3ZlMiAtIDgpOwotICAgICAgICAkYiA9IHd5cjgoJGNoYXJJbmRleCArICRtb3ZlMiAtIDQpOwot
ICAgIH0KLSAgICAkYSBePSAkc2VjcmV0WzFdOwotICAgICRiIF49ICRzZWVkOwotCi0gICAgKCRh
LCAkYikgPSB3eW11bSgkYSwgJGIpOwotICAgIG15ICRoYXNoID0gd3ltaXgoJGEgXiAkc2VjcmV0
WzBdIF4gJGJ5dGVDb3VudCwgJGIgXiAkc2VjcmV0WzFdKSAmICRtYXNrMzI7Ci0KLSAgICByZXR1
cm4gZmluYWxpemVBbmRNYXNrVG9wOEJpdHMoJGhhc2gpOwotfQotCi1zdWIgR2VuZXJhdGVIYXNo
VmFsdWUoJCkgewotICAgIG15ICRzdHJpbmcgPSAkX1swXTsKLSAgICBteSBAY2hhcnMgPSBzcGxp
dCgvICovLCAkc3RyaW5nKTsKLSAgICBteSAkY2hhckNvdW50ID0gc2NhbGFyIEBjaGFyczsKLSAg
ICBpZiAoJGNoYXJDb3VudCA8PSA0OCkgewotICAgICAgICByZXR1cm4gc3VwZXJGYXN0SGFzaChA
Y2hhcnMpOwotICAgIH0KLSAgICByZXR1cm4gd3loYXNoKEBjaGFycyk7CisgICAgCisgICAgIyBG
b3JjZSAiYXZhbGFuY2hpbmciIG9mIGZpbmFsIDEyNyBiaXRzCisgICAgJGhhc2ggXj0gbGVmdFNo
aWZ0KCRoYXNoLCAzKTsKKyAgICAkaGFzaCArPSAoJGhhc2ggPj4gNSk7CisgICAgJGhhc2ggPSAo
JGhhc2glICRFWFAyXzMyKTsKKyAgICAkaGFzaCBePSAobGVmdFNoaWZ0KCRoYXNoLCAyKSUgJEVY
UDJfMzIpOworICAgICRoYXNoICs9ICgkaGFzaCA+PiAxNSk7CisgICAgJGhhc2ggPSAkaGFzaCUg
JEVYUDJfMzI7CisgICAgJGhhc2ggXj0gKGxlZnRTaGlmdCgkaGFzaCwgMTApJSAkRVhQMl8zMik7
CisgICAgCisgICAgIyBTYXZlIDggYml0cyBmb3IgU3RyaW5nSW1wbCB0byB1c2UgYXMgZmxhZ3Mu
CisgICAgJGhhc2ggJj0gMHhmZmZmZmY7CisgICAgCisgICAgIyBUaGlzIGF2b2lkcyBldmVyIHJl
dHVybmluZyBhIGhhc2ggY29kZSBvZiAwLCBzaW5jZSB0aGF0IGlzIHVzZWQgdG8KKyAgICAjIHNp
Z25hbCAiaGFzaCBub3QgY29tcHV0ZWQgeWV0Ii4gU2V0dGluZyB0aGUgaGlnaCBiaXQgbWFpbnRh
aW5zCisgICAgIyByZWFzb25hYmxlIGZpZGVsaXR5IHRvIGEgaGFzaCBjb2RlIG9mIDAgYmVjYXVz
ZSBpdCBpcyBsaWtlbHkgdG8geWllbGQKKyAgICAjIGV4YWN0bHkgMCB3aGVuIGhhc2ggbG9va3Vw
IG1hc2tzIG91dCB0aGUgaGlnaCBiaXRzLgorICAgICRoYXNoID0gKDB4ODAwMDAwMDAgPj4gOCkg
aWYgKCRoYXNoID09IDApOworICAgIAorICAgIHJldHVybiAkaGFzaDsKIH0KIAogMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9i
YWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggMzMwYTVmMzVlZGVhLi5jMmQwMTc0Y2VmOWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
bG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC00MDEsNyArNDAxLDcgQEAgc3RhdGljIGNv
bnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXhb
MjY4XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEg
fSwKLSAgICB7IC0xLCAtMSB9LAorICAgIHsgNTAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAg
ICB7IC0xLCAtMSB9LAogICAgIHsgMTIsIC0xIH0sCkBAIC00NzksNyArNDc5LDcgQEAgc3RhdGlj
IGNvbnN0IHN0cnVjdCBDb21wYWN0SGFzaEluZGV4IEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5k
ZXhbMjY4XSA9IHsKICAgICB7IC0xLCAtMSB9LAogICAgIHsgMTAsIC0xIH0sCiAgICAgeyAtMSwg
LTEgfSwKLSAgICB7IDUwLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwK
ICAgICB7IC0xLCAtMSB9LAogICAgIHsgNTIsIDI2NCB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvREZBTWluaW1pemVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NvbnRlbnRleHRlbnNpb25zL0RGQU1pbmltaXplci5jcHAKaW5kZXggMzExOTgxOTIzMjI1Li5m
MjJlOGQ1ZWEzYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0RGQU1pbmltaXplci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
REZBTWluaW1pemVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MDEsNyArNDAxLDcgQEAgc3RydWN0IEFjdGlvbktleSB7CiAgICAg
ICAgICwgYWN0aW9uc0xlbmd0aChhY3Rpb25zTGVuZ3RoKQogICAgICAgICAsIHN0YXRlKFZhbGlk
KQogICAgIHsKLSAgICAgICAgU3VwZXJGYXN0SGFzaCBoYXNoZXI7CisgICAgICAgIFN0cmluZ0hh
c2hlciBoYXNoZXI7CiAgICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVk
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUNoYXIqPigmZGZhLT5hY3Rpb25zW2FjdGlvbnNTdGFy
dF0pLCBhY3Rpb25zTGVuZ3RoICogc2l6ZW9mKHVpbnQ2NF90KSAvIHNpemVvZihVQ2hhcikpOwog
ICAgICAgICBoYXNoID0gaGFzaGVyLmhhc2goKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9IYXNoYWJsZUFjdGlvbkxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0hhc2hhYmxlQWN0aW9uTGlzdC5oCmluZGV4IDliOGQ0
OWIwNzU3ZC4uNDA2MDgyMjU1NzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9IYXNoYWJsZUFjdGlvbkxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250
ZW50ZXh0ZW5zaW9ucy9IYXNoYWJsZUFjdGlvbkxpc3QuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBI
YXNoYWJsZUFjdGlvbkxpc3QgewogICAgICAgICAsIHN0YXRlKFZhbGlkKQogICAgIHsKICAgICAg
ICAgc3RkOjpzb3J0KGFjdGlvbnMuYmVnaW4oKSwgYWN0aW9ucy5lbmQoKSk7Ci0gICAgICAgIFN1
cGVyRmFzdEhhc2ggaGFzaGVyOworICAgICAgICBTdHJpbmdIYXNoZXIgaGFzaGVyOwogICAgICAg
ICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChyZWludGVycHJldF9jYXN0PGNv
bnN0IFVDaGFyKj4oYWN0aW9ucy5kYXRhKCkpLCBhY3Rpb25zLnNpemUoKSAqIHNpemVvZih1aW50
NjRfdCkgLyBzaXplb2YoVUNoYXIpKTsKICAgICAgICAgaGFzaCA9IGhhc2hlci5oYXNoKCk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFz
aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TaGFyZWRTdHJpbmdIYXNoLmNwcAppbmRl
eCA0ZTVmYzIxYmRhNjAuLmE4NGYzNTljMzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAKQEAgLTMsNyArMyw3IEBACiAgKiAgICAgICAgICAgKEMp
IDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKLSAqIENvcHlyaWdodCAoQykg
MjAwNC0yMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIwNSw3ICsyMDUsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgbmVlZHNUcmFpbGluZ1NsYXNoKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KIHN0YXRpYyBB
TFdBWVNfSU5MSU5FIFNoYXJlZFN0cmluZ0hhc2ggY29tcHV0ZVNoYXJlZFN0cmluZ0hhc2hJbmxp
bmUoY29uc3QgQ2hhcmFjdGVyVHlwZSogdXJsLCB1bnNpZ25lZCBsZW5ndGgpCiB7Ci0gICAgcmV0
dXJuIEFscmVhZHlIYXNoZWQ6OmF2b2lkRGVsZXRlZFZhbHVlKFN1cGVyRmFzdEhhc2g6OmNvbXB1
dGVIYXNoKHVybCwgbGVuZ3RoKSk7CisgICAgcmV0dXJuIEFscmVhZHlIYXNoZWQ6OmF2b2lkRGVs
ZXRlZFZhbHVlKFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2godXJsLCBsZW5ndGgpKTsKIH0KIAog
U2hhcmVkU3RyaW5nSGFzaCBjb21wdXRlU2hhcmVkU3RyaW5nSGFzaChjb25zdCBTdHJpbmcmIHVy
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2Fj
aGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaAppbmRl
eCBkNmU1YTQ1ODNhNjEuLmU2MDllZjBhZTc0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1dpZHRoQ2FjaGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw3ICs2MCw3IEBAIHByaXZhdGU6CiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChsZW5ndGggPD0gc19jYXBhY2l0eSk7CiAKLSAgICAgICAg
ICAgIFN1cGVyRmFzdEhhc2ggaGFzaGVyOworICAgICAgICAgICAgU3RyaW5nSGFzaGVyIGhhc2hl
cjsKIAogICAgICAgICAgICAgYm9vbCByZW1haW5kZXIgPSBsZW5ndGggJiAxOwogICAgICAgICAg
ICAgbGVuZ3RoID4+PSAxOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxp
c3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggODRmYjQ5
NWZmMDg0Li4yMzZiNDkxYzM2NWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAt
MTAzLDggKzEwMyw2IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0cy9XVEYvU3RyaW5n
Q29tbW9uLmNwcAogICAgIFRlc3RzL1dURi9TdHJpbmdDb25jYXRlbmF0ZS5jcHAKICAgICBUZXN0
cy9XVEYvU3RyaW5nSGFzaGVyLmNwcAotICAgIFRlc3RzL1dURi9TdXBlckZhc3RIYXNoLmNwcAot
ICAgIFRlc3RzL1dURi9XWUhhc2guY3BwCiAgICAgVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCiAg
ICAgVGVzdHMvV1RGL1N0cmluZ09wZXJhdG9ycy5jcHAKICAgICBUZXN0cy9XVEYvU3RyaW5nUGFy
c2luZ0J1ZmZlci5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTliN2E5ODU1MWU3Li5h
MTg3MjJjMDQ1YjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zLDcgKzMsNyBAQAogCWFy
Y2hpdmVWZXJzaW9uID0gMTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDUx
OworCW9iamVjdFZlcnNpb24gPSA1NDsKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dy
ZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwpAQCAtMTI2OCw5ICsxMjY4LDcgQEAKIAkJRkVDMkE4NTQy
NENFOTc1RjAwQURCQzM1IC8qIERpc2FsbG93Vk1FbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUMyQTg1MzI0Q0U5NzRFMDBBREJDMzUgLyog
RGlzYWxsb3dWTUVudHJ5LmNwcCAqLzsgfTsKIAkJRkVDMkE4NTYyNENFQjY1RjAwQURCQzM1IC8q
IFByb3BlcnR5U2xvdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRUMyQTg1NTI0Q0VCNjVGMDBBREJDMzUgLyogUHJvcGVydHlTbG90LmNwcCAqLzsg
fTsKIAkJRkYxMEFBRjkyODMxQjFFNjAwQjk4NzVCIC8qIENvbXBhY3RQdHIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkYxMEFBRjgyODMxQjFFNjAw
Qjk4NzVCIC8qIENvbXBhY3RQdHIuY3BwICovOyB9OwotCQlGRjQxQUM3MDJBNzlDQUEwMDBBQzBG
QTUgLyogV1lIYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZGNDFBQzY4MkE3OUNBQTAwMEFDMEZBNSAvKiBXWUhhc2guY3BwICovOyB9OwogCQlG
RjVEMENCNDI4MzIyMUFEMDBGMzI3OEEgLyogQ29tcGFjdFJlZlB0ci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRjVEMENCMzI4MzIyMUFEMDBGMzI3
OEEgLyogQ29tcGFjdFJlZlB0ci5jcHAgKi87IH07Ci0JCUZGOENCNDBDMkE4OEMxNTIwMDRBRjQ5
OCAvKiBTdXBlckZhc3RIYXNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZGOENCNDA0MkE4OEMxNTIwMDRBRjQ5OCAvKiBTdXBlckZhc3RIYXNoLmNw
cCAqLzsgfTsKIAkJRkY5MTBFQTUyOTdBMEQxMTAwRDFBMjREIC8qIEZpeGVkQml0VmVjdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGOTEwRTlE
Mjk3QTBEMTEwMEQxQTI0RCAvKiBGaXhlZEJpdFZlY3Rvci5jcHAgKi87IH07CiAvKiBFbmQgUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KIApAQCAtMzYwNCw5ICszNjAyLDcgQEAKIAkJRkVDMkE4NTUy
NENFQjY1RjAwQURCQzM1IC8qIFByb3BlcnR5U2xvdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcm9wZXJ0eVNsb3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlGRjEwQUFGODI4MzFCMUU2MDBCOTg3NUIgLyogQ29tcGFjdFB0ci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21wYWN0UHRyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkYyNTk0MkEyODM0QjdBNzAwNjg5MkQ2IC8qIEFsaWduZWRS
ZWZMb2dnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWxpZ25lZFJlZkxv
Z2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRjQxQUM2ODJBNzlDQUEwMDBB
QzBGQTUgLyogV1lIYXNoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdZSGFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZGNUQwQ0IzMjgzMjIx
QUQwMEYzMjc4QSAvKiBDb21wYWN0UmVmUHRyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENvbXBhY3RSZWZQdHIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlGRjhDQjQwNDJBODhDMTUyMDA0QUY0OTggLyogU3VwZXJGYXN0SGFzaC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXBlckZhc3RIYXNoLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkY5MTBFOUQyOTdBMEQxMTAwRDFBMjREIC8qIEZpeGVk
Qml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpeGVk
Qml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxl
UmVmZXJlbmNlIHNlY3Rpb24gKi8KIApAQCAtNTI1OCw3ICs1MjU0LDYgQEAKIAkJCQlFM0EyNEZE
QjI4Q0FCNzVCMDA4RDgxMEIgLyogU3RyaW5nU2VhcmNoLmNwcCAqLywKIAkJCQk5MzMyRUY5MzI2
NDlCQjY4MDA5RjVENkQgLyogU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgKi8sCiAJCQkJ
N0M3NEQ0MkQxODgyMjhGMzAwRTVFRDU3IC8qIFN0cmluZ1ZpZXcuY3BwICovLAotCQkJCUZGOENC
NDA0MkE4OEMxNTIwMDRBRjQ5OCAvKiBTdXBlckZhc3RIYXNoLmNwcCAqLywKIAkJCQk5MzZFNEFF
MzI4MjFCQjZEMDAyMDg2NTQgLyogU3VzcGVuZGFibGVXb3JrUXVldWVUZXN0cy5jcHAgKi8sCiAJ
CQkJNTU5N0Y4MzQxRDk1OTZDODAwNjZCQzIxIC8qIFN5bmNocm9uaXplZEZpeGVkUXVldWUuY3Bw
ICovLAogCQkJCTkzMjlBQTI4MURFM0Y4MUUwMDNBQkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5j
cHAgKi8sCkBAIC01Mjc4LDcgKzUyNzMsNiBAQAogCQkJCUUzODg4ODcwMjBDOTA5ODEwMEU2MzJC
QyAvKiBXb3JrZXJQb29sLmNwcCAqLywKIAkJCQk3QUE2QTE1MTFBQUMwQjMxMDAyQjJFRDMgLyog
V29ya1F1ZXVlLmNwcCAqLywKIAkJCQkyNjVBRjU0RjE1RDFFNDhBMDBCMENCNEEgLyogV1RGU3Ry
aW5nLmNwcCAqLywKLQkJCQlGRjQxQUM2ODJBNzlDQUEwMDBBQzBGQTUgLyogV1lIYXNoLmNwcCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gV1RGOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTYyMzQsNyArNjIyOCw2IEBACiAJCQkJRTNBMjRGREMyOENBQjc1QjAwOEQ4MTBCIC8qIFN0cmlu
Z1NlYXJjaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMyRUY5NDI2NDlCQjY4MDA5RjVENkQg
LyogU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
REYzQTFEMEE1OTBDMDBGRUJDRjMgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQlGRjhDQjQwQzJBODhDMTUyMDA0QUY0OTggLyogU3VwZXJGYXN0SGFzaC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5MzZFNEFFNDI4MjFCQjZEMDAyMDg2NTQgLyogU3VzcGVuZGFibGVXb3JrUXVl
dWVUZXN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1NTk3RjgzNjFEOTU5NkM4MDA2NkJDMjEg
LyogU3luY2hyb25pemVkRml4ZWRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzREY0
MDFEMEE1OTBDMDBGRUJDRjMgLyogVGVzdHNDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtNjI2Miw3ICs2MjU1LDYgQEAKIAkJCQk1N0MzRkE2NjFGN0MyNDhGMDA5RDRCODAgLyogV2Vh
a1B0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NkJCRUExQjI1Rjk4MzU3MDBENDk4N0EgLyog
V29ya1F1ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNERjYzMUQwQTU5MEMwMEZFQkNG
MyAvKiBXVEZTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkY0MUFDNzAyQTc5Q0FBMDAw
QUMwRkE1IC8qIFdZSGFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0hhc2hlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9TdHJpbmdIYXNoZXIuY3BwCmluZGV4IDIyMjljZTU5NjI4ZC4uMzFkMTEy
NGI1ZjFiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdI
YXNoZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0hhc2hl
ci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjQsNDUgKzI0LDQ0MiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoZXJJbmxpbmVzLmg+CisKKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoZXIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCitzdGF0aWMg
Y29uc3QgTENoYXIgbnVsbExDaGFyc1syXSA9IHsgMCwgMCB9Oworc3RhdGljIGNvbnN0IFVDaGFy
IG51bGxVQ2hhcnNbMl0gPSB7IDAsIDAgfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVtcHR5
U3RyaW5nSGFzaCA9IDB4NEVDODg5RVU7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgc2luZ2xlTnVs
bENoYXJhY3Rlckhhc2ggPSAweDNEM0FCRjQ0VTsKKworc3RhdGljIGNvbnN0IExDaGFyIHRlc3RB
TENoYXJzWzZdID0geyAweDQxLCAweDk1LCAweEZGLCAweDUwLCAweDAxLCAwIH07CitzdGF0aWMg
Y29uc3QgVUNoYXIgdGVzdEFVQ2hhcnNbNl0gPSB7IDB4NDEsIDB4OTUsIDB4RkYsIDB4NTAsIDB4
MDEsIDAgfTsKK3N0YXRpYyBjb25zdCBVQ2hhciB0ZXN0QlVDaGFyc1s2XSA9IHsgMHg0MSwgMHg5
NSwgMHhGRkZGLCAweDEwODAsIDB4MDEsIDAgfTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRl
c3RBSGFzaDEgPSAweEVBMzJCMDA0Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRlc3RBSGFzaDIg
PSAweDkzRjBGNzFFOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRlc3RBSGFzaDMgPSAweENCNjA5
RUIxOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRlc3RBSGFzaDQgPSAweDc5ODRBNzA2Oworc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHRlc3RBSGFzaDUgPSAweDA0Mjc1NjFGOworCitzdGF0aWMgY29u
c3QgdW5zaWduZWQgdGVzdEJIYXNoMSA9IDB4RUEzMkIwMDQ7CitzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgdGVzdEJIYXNoMiA9IDB4OTNGMEY3MUU7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgdGVzdEJI
YXNoMyA9IDB4NTlFQjFCMkM7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgdGVzdEJIYXNoNCA9IDB4
QTdCQ0NDMEE7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgdGVzdEJIYXNoNSA9IDB4NzkyMDE2NDk7
CisKIFRFU1QoV1RGLCBTdHJpbmdIYXNoZXIpCiB7Ci0gICAgYXV0byBnZW5lcmF0ZUxDaGFyQXJy
YXkgPSBbJl0oc2l6ZV90IHNpemUpIHsKLSAgICAgICAgYXV0byBhcnJheSA9IHN0ZDo6dW5pcXVl
X3B0cjxMQ2hhcltdPihuZXcgTENoYXJbc2l6ZV0pOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgICAgIGFycmF5W2ldID0gaTsKLSAgICAgICAgcmV0
dXJuIGFycmF5OwotICAgIH07Ci0KLSAgICBhdXRvIGdlbmVyYXRlVUNoYXJBcnJheSA9IFsmXShz
aXplX3Qgc2l6ZSkgewotICAgICAgICBhdXRvIGFycmF5ID0gc3RkOjp1bmlxdWVfcHRyPFVDaGFy
W10+KG5ldyBVQ2hhcltzaXplXSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKQotICAgICAgICAgICAgYXJyYXlbaV0gPSBpOwotICAgICAgICByZXR1cm4gYXJyYXk7
Ci0gICAgfTsKLQotICAgIFN0cmluZ0hhc2hlciBoYXNoOwotICAgIHVuc2lnbmVkIG1heDhCaXQg
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ4X3Q+OjptYXgoKTsKLSAgICBmb3IgKHNpemVfdCBz
aXplID0gMDsgc2l6ZSA8PSBtYXg4Qml0OyBzaXplKyspIHsKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPExDaGFyW10+IGFycjEgPSBnZW5lcmF0ZUxDaGFyQXJyYXkoc2l6ZSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxVQ2hhcltdPiBhcnIyID0gZ2VuZXJhdGVVQ2hhckFycmF5KHNpemUpOwot
ICAgICAgICB1bnNpZ25lZCBsZWZ0ID0gU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhhcnIxLmdldCgpLCBzaXplKTsKLSAgICAgICAgdW5zaWduZWQgcmlnaHQgPSBTdHJp
bmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGFycjIuZ2V0KCksIHNpemUpOwot
ICAgICAgICBBU1NFUlRfRVEobGVmdCwgcmlnaHQpOwotCi0gICAgICAgIHVuc2lnbmVkIHJlc3Vs
dCA9IFdZSGFzaDo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMoYXJyMS5nZXQoKSwgc2l6ZSk7
Ci0gICAgICAgIGlmIChzaXplIDw9IFN0cmluZ0hhc2hlcjo6c21hbGxTdHJpbmdUaHJlc2hvbGQp
Ci0gICAgICAgICAgICByZXN1bHQgPSBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cyhhcnIxLmdldCgpLCBzaXplKTsKLSAgICAgICAgQVNTRVJUX0VRKGxlZnQsIHJlc3Vs
dCk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAg
ICAgICBoYXNoLmFkZENoYXJhY3RlcihhcnIyLmdldCgpW2ldKTsKLSAgICAgICAgdW5zaWduZWQg
cmVzdWx0MSA9IGhhc2guaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpOwotICAgICAgICBBU1NFUlRf
RVEocmVzdWx0LCByZXN1bHQxKTsKLSAgICB9CisgICAgU3RyaW5nSGFzaGVyIGhhc2hlcjsKKwor
ICAgIC8vIFRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBoYXNoZXIuCisgICAgQVNTRVJUX0VRKGVt
cHR5U3RyaW5nSGFzaCwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5n
SGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKK30KKwor
VEVTVChXVEYsIFN0cmluZ0hhc2hlcl9hZGRDaGFyYWN0ZXIpCit7CisgICAgU3RyaW5nSGFzaGVy
IGhhc2hlcjsKKworICAgIC8vIEhhc2hpbmcgYSBzaW5nbGUgY2hhcmFjdGVyLgorICAgIGhhc2hl
ciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIoMCk7CisgICAgQVNT
RVJUX0VRKHNpbmdsZU51bGxDaGFyYWN0ZXJIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NF
UlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rlckhhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRo
VG9wOEJpdHNNYXNrZWQoKSk7CisKKyAgICAvLyBIYXNoaW5nIGZpdmUgY2hhcmFjdGVycywgY2hl
Y2tpbmcgdGhlIGludGVybWVkaWF0ZSBzdGF0ZSBhZnRlciBlYWNoIGlzIGFkZGVkLgorICAgIGhh
c2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIodGVzdEFVQ2hh
cnNbMF0pOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gxLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBB
U1NFUlRfRVEodGVzdEFIYXNoMSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01h
c2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RBVUNoYXJzWzFdKTsKKyAgICBB
U1NFUlRfRVEodGVzdEFIYXNoMiwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RB
SGFzaDIgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAg
aGFzaGVyLmFkZENoYXJhY3Rlcih0ZXN0QVVDaGFyc1syXSk7CisgICAgQVNTRVJUX0VRKHRlc3RB
SGFzaDMsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzICYgMHhGRkZG
RkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFy
YWN0ZXIodGVzdEFVQ2hhcnNbM10pOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g0LCBoYXNoZXIu
aGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFz
aFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RBVUNo
YXJzWzRdKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhhc2goKSk7CisgICAg
QVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNN
YXNrZWQoKSk7CisKKyAgICAvLyBIYXNoaW5nIGEgc2Vjb25kIHNldCBvZiBmaXZlIGNoYXJhY3Rl
cnMsIGluY2x1ZGluZyBub24tTGF0aW4tMSBjaGFyYWN0ZXJzLgorICAgIGhhc2hlciA9IFN0cmlu
Z0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIodGVzdEJVQ2hhcnNbMF0pOworICAg
IEFTU0VSVF9FUSh0ZXN0Qkhhc2gxLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVz
dEJIYXNoMSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAg
ICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RCVUNoYXJzWzFdKTsKKyAgICBBU1NFUlRfRVEodGVz
dEJIYXNoMiwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDIgJiAweEZG
RkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyLmFkZENo
YXJhY3Rlcih0ZXN0QlVDaGFyc1syXSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDMsIGhhc2hl
ci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2gzICYgMHhGRkZGRkYsIGhhc2hlci5o
YXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIodGVzdEJV
Q2hhcnNbM10pOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g0LCBoYXNoZXIuaGFzaCgpKTsKKyAg
ICBBU1NFUlRfRVEodGVzdEJIYXNoNCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0
c01hc2tlZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RCVUNoYXJzWzRdKTsKKyAg
ICBBU1NFUlRfRVEodGVzdEJIYXNoNSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRl
c3RCSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Cit9
CisKK1RFU1QoV1RGLCBTdHJpbmdIYXNoZXJfYWRkQ2hhcmFjdGVycykKK3sKKyAgICBTdHJpbmdI
YXNoZXIgaGFzaGVyOworCisgICAgLy8gSGFzaGluZyB6ZXJvIGNoYXJhY3RlcnMuCisgICAgaGFz
aGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoc3RhdGljX2Nh
c3Q8TENoYXIqPigwKSwgMCk7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCwgaGFzaGVy
Lmhhc2goKSk7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCAmIDB4RkZGRkZGLCBoYXNo
ZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIo
KTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhudWxsTENoYXJzLCAwKTsKKyAgICBBU1NFUlRf
RVEoZW1wdHlTdHJpbmdIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlT
dHJpbmdIYXNoICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwor
ICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51
bGxMQ2hhcnMpOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkp
OworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hX
aXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAg
aGFzaGVyLmFkZENoYXJhY3RlcnMoc3RhdGljX2Nhc3Q8VUNoYXIqPigwKSwgMCk7CisgICAgQVNT
RVJUX0VRKGVtcHR5U3RyaW5nSGFzaCwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKGVt
cHR5U3RyaW5nSGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgp
KTsKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVy
cyhudWxsVUNoYXJzLCAwKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoLCBoYXNoZXIu
aGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIGhhc2hl
ci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigp
OworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51bGxVQ2hhcnMpOworICAgIEFTU0VSVF9FUShl
bXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmlu
Z0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisKKyAg
ICAvLyBIYXNoaW5nIG9uZSBjaGFyYWN0ZXIuCisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7
CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMobnVsbExDaGFycywgMSk7CisgICAgQVNTRVJUX0VR
KHNpbmdsZU51bGxDaGFyYWN0ZXJIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEo
c2luZ2xlTnVsbENoYXJhY3Rlckhhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJp
dHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFk
ZENoYXJhY3RlcnMobnVsbFVDaGFycywgMSk7CisgICAgQVNTRVJUX0VRKHNpbmdsZU51bGxDaGFy
YWN0ZXJIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJh
Y3Rlckhhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisK
KyAgICAvLyBIYXNoaW5nIGZpdmUgY2hhcmFjdGVycywgYWxsIGF0IG9uY2UuCisgICAgaGFzaGVy
ID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFMQ2hhcnMs
IDUpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NF
UlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tl
ZCgpKTsKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFj
dGVycyh0ZXN0QUxDaGFycyk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNo
KCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0
aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhh
c2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBVUNoYXJzLCA1KTsKKyAgICBBU1NFUlRfRVEodGVzdEFI
YXNoNSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZGRkZG
RiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0gU3RyaW5n
SGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFVQ2hhcnMpOworICAgIEFT
U0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFI
YXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBo
YXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVD
aGFycywgNSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAg
IEFTU0VSVF9FUSh0ZXN0Qkhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRz
TWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzKHRlc3RCVUNoYXJzKTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSwgaGFzaGVy
Lmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhh
c2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisKKyAgICAvLyBIYXNoaW5nIGZpdmUgY2hhcmFjdGVy
cywgaW4gZ3JvdXBzIG9mIHR3bywgdGhlbiB0aGUgbGFzdCBvbmUuCisgICAgaGFzaGVyID0gU3Ry
aW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFMQ2hhcnMsIDIpOwor
ICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gyLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEo
dGVzdEFIYXNoMiAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsK
KyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycyArIDIsIDIpOworICAgIEFTU0VS
VF9FUSh0ZXN0QUhhc2g0LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNo
NCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNo
ZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycyArIDQsIDEpOworICAgIEFTU0VSVF9FUSh0ZXN0
QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZG
RkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBTdHJp
bmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycywgMik7Cisg
ICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFMQ2hhcnMgKyAyLCAyKTsKKyAgICBoYXNoZXIu
YWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycyArIDQpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1
LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBo
YXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNo
ZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QVVDaGFycywgMik7CisgICAgQVNT
RVJUX0VRKHRlc3RBSGFzaDIsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhh
c2gyICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhh
c2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBVUNoYXJzICsgMiwgMik7CisgICAgQVNTRVJUX0VRKHRl
c3RBSGFzaDQsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g0ICYgMHhG
RkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzKHRlc3RBVUNoYXJzICsgNCwgMSk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUs
IGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhh
c2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hl
cigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBVUNoYXJzLCAyKTsKKyAgICBoYXNo
ZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QVVDaGFycyArIDIsIDIpOworICAgIGhhc2hlci5hZGRDaGFy
YWN0ZXJzKHRlc3RBVUNoYXJzICsgNCk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hl
ci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5o
YXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOwor
ICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RCVUNoYXJzLCAyKTsKKyAgICBBU1NFUlRfRVEo
dGVzdEJIYXNoMiwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDIgJiAw
eEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyLmFk
ZENoYXJhY3RlcnModGVzdEJVQ2hhcnMgKyAyLCAyKTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNo
NCwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDQgJiAweEZGRkZGRiwg
aGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyLmFkZENoYXJhY3Rl
cnModGVzdEJVQ2hhcnMgKyA0LCAxKTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSwgaGFzaGVy
Lmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhh
c2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7Cisg
ICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEJVQ2hhcnMsIDIpOworICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzKHRlc3RCVUNoYXJzICsgMiwgMik7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMo
dGVzdEJVQ2hhcnMgKyA0KTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSwgaGFzaGVyLmhhc2go
KSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRo
VG9wOEJpdHNNYXNrZWQoKSk7CisKKyAgICAvLyBIYXNoaW5nIGZpdmUgY2hhcmFjdGVycywgdGhl
IGZpcnN0IHRocmVlLCB0aGVuIHRoZSBsYXN0IHR3by4KKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNo
ZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycywgMyk7CisgICAgQVNT
RVJUX0VRKHRlc3RBSGFzaDMsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhh
c2gzICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhh
c2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBTENoYXJzICsgMywgMik7CisgICAgQVNTRVJUX0VRKHRl
c3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhG
RkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0
cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBTENoYXJzLCAzKTsK
KyAgICBBU1NFUlRfRVEodGVzdEFIYXNoMywgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VR
KHRlc3RBSGFzaDMgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7
CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFMQ2hhcnMgKyAzKTsKKyAgICBBU1NFUlRf
RVEodGVzdEFIYXNoNSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUg
JiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVy
ID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFVQ2hhcnMs
IDMpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NF
UlRfRVEodGVzdEFIYXNoMyAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tl
ZCgpKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QVVDaGFycyArIDMsIDIpOworICAg
IEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVz
dEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAg
ICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0
QVVDaGFycywgMyk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDMsIGhhc2hlci5oYXNoKCkpOwor
ICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhC
aXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBVUNoYXJzICsgMywg
Mik7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VS
VF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2Vk
KCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0
ZXJzKHRlc3RCVUNoYXJzLCAzKTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNoMywgaGFzaGVyLmhh
c2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDMgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hX
aXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEJVQ2hh
cnMgKyAzLCAyKTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSwgaGFzaGVyLmhhc2goKSk7Cisg
ICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJp
dHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFk
ZENoYXJhY3RlcnModGVzdEJVQ2hhcnMsIDMpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRl
c3RCVUNoYXJzICsgMyk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUsIGhhc2hlci5oYXNoKCkp
OworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRv
cDhCaXRzTWFza2VkKCkpOworCisgICAgLy8gSGFzaGluZyB6ZXJvIGNoYXJhY3RlcnMgYWZ0ZXIg
aGFzaGluZyBvdGhlciBjaGFyYWN0ZXJzLgorICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOwor
ICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51bGxMQ2hhcnMsIDApOworICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzKG51bGxMQ2hhcnMsIDApOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gs
IGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZG
RiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgCisgICAgaGFzaGVyID0g
U3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFMQ2hhcnMsIDEp
OworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51bGxMQ2hhcnMsIDApOworICAgIEFTU0VSVF9F
USh0ZXN0QUhhc2gxLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoMSAm
IDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICAKKyAgICBo
YXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxD
aGFycywgMik7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMobnVsbExDaGFycywgMCk7CisgICAg
QVNTRVJUX0VRKHRlc3RBSGFzaDIsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0
QUhhc2gyICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworCisg
ICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVz
dEFVQ2hhcnMsIDMpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51bGxMQ2hhcnMsIDApOwor
ICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEo
dGVzdEFIYXNoMyAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsK
KworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJz
KHRlc3RBTENoYXJzLCA0KTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhudWxsTENoYXJzLCAw
KTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNCwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJU
X0VRKHRlc3RBSGFzaDQgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQo
KSk7CisgICAgCisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENo
YXJhY3RlcnModGVzdEFMQ2hhcnMsIDUpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51bGxM
Q2hhcnMsIDApOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAg
ICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0
c01hc2tlZCgpKTsKK30KKworVEVTVChXVEYsIFN0cmluZ0hhc2hlcl9hZGRDaGFyYWN0ZXJzQXNz
dW1pbmdBbGlnbmVkKQoreworICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7CisKKyAgICAvLyBIYXNo
aW5nIHplcm8gY2hhcmFjdGVycy4KKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBo
YXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChzdGF0aWNfY2FzdDxMQ2hhcio+KDAp
LCAwKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAg
ICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRv
cDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hl
ci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG51bGxMQ2hhcnMsIDApOworICAgIEFTU0VS
VF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUShlbXB0
eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7
CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNB
c3N1bWluZ0FsaWduZWQoc3RhdGljX2Nhc3Q8VUNoYXIqPigwKSwgMCk7CisgICAgQVNTRVJUX0VR
KGVtcHR5U3RyaW5nSGFzaCwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKGVtcHR5U3Ry
aW5nSGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAg
ICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3Vt
aW5nQWxpZ25lZChudWxsVUNoYXJzLCAwKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNo
LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZG
RkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmlu
Z0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG51bGxV
Q2hhcnMpOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkpOwor
ICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRo
VG9wOEJpdHNNYXNrZWQoKSk7CisKKyAgICAvLyBIYXNoaW5nIG9uZSBjaGFyYWN0ZXIuCisgICAg
aGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWlu
Z0FsaWduZWQobnVsbExDaGFycywgMSk7CisgICAgQVNTRVJUX0VRKHNpbmdsZU51bGxDaGFyYWN0
ZXJIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rl
ckhhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAg
aGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWlu
Z0FsaWduZWQobnVsbFVDaGFycywgMSk7CisgICAgQVNTRVJUX0VRKHNpbmdsZU51bGxDaGFyYWN0
ZXJIYXNoLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rl
ckhhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisKKyAg
ICAvLyBIYXNoaW5nIGZpdmUgY2hhcmFjdGVycywgYWxsIGF0IG9uY2UuCisgICAgaGFzaGVyID0g
U3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQo
dGVzdEFMQ2hhcnMsIDUpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgp
KTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhU
b3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNo
ZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QUxDaGFycyk7CisgICAgQVNTRVJU
X0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1
ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hl
ciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGln
bmVkKHRlc3RBVUNoYXJzLCA1KTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhh
c2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hX
aXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAg
aGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEFVQ2hhcnMpOworICAgIEFT
U0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFI
YXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBo
YXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5n
QWxpZ25lZCh0ZXN0QlVDaGFycywgNSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUsIGhhc2hl
ci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5o
YXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOwor
ICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RCVUNoYXJzKTsKKyAg
ICBBU1NFUlRfRVEodGVzdEJIYXNoNSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRl
c3RCSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisK
KyAgICAvLyBIYXNoaW5nIGZpdmUgY2hhcmFjdGVycywgaW4gZ3JvdXBzIG9mIHR3bywgdGhlbiB0
aGUgbGFzdCBvbmUuCisgICAgaGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFk
ZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEFMQ2hhcnMsIDIpOworICAgIEFTU0VSVF9F
USh0ZXN0QUhhc2gyLCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoMiAm
IDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIu
YWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QUxDaGFycyArIDIsIDIpOworICAgIEFT
U0VSVF9FUSh0ZXN0QUhhc2g0LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFI
YXNoNCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBo
YXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QUxDaGFycyArIDQsIDEpOwor
ICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEo
dGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsK
KyAgICBoYXNoZXIgPSBTdHJpbmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fz
c3VtaW5nQWxpZ25lZCh0ZXN0QUxDaGFycywgMik7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNB
c3N1bWluZ0FsaWduZWQodGVzdEFMQ2hhcnMgKyAyLCAyKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFj
dGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QUxDaGFycyArIDQpOworICAgIEFTU0VSVF9FUSh0ZXN0
QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKKyAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZG
RkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKKyAgICBoYXNoZXIgPSBTdHJp
bmdIYXNoZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0
QVVDaGFycywgMik7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDIsIGhhc2hlci5oYXNoKCkpOwor
ICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gyICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhC
aXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRl
c3RBVUNoYXJzICsgMiwgMik7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDQsIGhhc2hlci5oYXNo
KCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g0ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0
aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGln
bmVkKHRlc3RBVUNoYXJzICsgNCwgMSk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hl
ci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5o
YXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOwor
ICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RBVUNoYXJzLCAyKTsK
KyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QVVDaGFycyArIDIs
IDIpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RBVUNoYXJz
ICsgNCk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFT
U0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFz
a2VkKCkpOworICAgIGhhc2hlciA9IFN0cmluZ0hhc2hlcigpOworICAgIGhhc2hlci5hZGRDaGFy
YWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RCVUNoYXJzLCAyKTsKKyAgICBBU1NFUlRfRVEodGVz
dEJIYXNoMiwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDIgJiAweEZG
RkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVyLmFkZENo
YXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEJVQ2hhcnMgKyAyLCAyKTsKKyAgICBBU1NFUlRf
RVEodGVzdEJIYXNoNCwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDQg
JiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFzaGVy
LmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEJVQ2hhcnMgKyA0LCAxKTsKKyAgICBB
U1NFUlRfRVEodGVzdEJIYXNoNSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RC
SGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAg
aGFzaGVyID0gU3RyaW5nSGFzaGVyKCk7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWlu
Z0FsaWduZWQodGVzdEJVQ2hhcnMsIDIpOworICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1p
bmdBbGlnbmVkKHRlc3RCVUNoYXJzICsgMiwgMik7CisgICAgaGFzaGVyLmFkZENoYXJhY3RlcnNB
c3N1bWluZ0FsaWduZWQodGVzdEJVQ2hhcnMgKyA0KTsKKyAgICBBU1NFUlRfRVEodGVzdEJIYXNo
NSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUgJiAweEZGRkZGRiwg
aGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisKKyAgICAvLyBIYXNoaW5nIGZpdmUg
Y2hhcmFjdGVycywgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb25lIGF0IGEgdGltZSwKKyAgICAvLyB0
aGVuIHR3byBtb3JlLCB0aGVuIHRoZSBsYXN0IG9uZS4KKyAgICBoYXNoZXIgPSBTdHJpbmdIYXNo
ZXIoKTsKKyAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RCVUNoYXJzWzBdKTsKKyAgICBBU1NF
UlRfRVEodGVzdEJIYXNoMSwgaGFzaGVyLmhhc2goKSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFz
aDEgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7CisgICAgaGFz
aGVyLmFkZENoYXJhY3Rlcih0ZXN0QlVDaGFyc1sxXSk7CisgICAgQVNTRVJUX0VRKHRlc3RCSGFz
aDIsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2gyICYgMHhGRkZGRkYs
IGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAgIGhhc2hlci5hZGRDaGFyYWN0
ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RCVUNoYXJzWzJdLCB0ZXN0QlVDaGFyc1szXSk7CisgICAg
QVNTRVJUX0VRKHRlc3RCSGFzaDQsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0ZXN0
Qkhhc2g0ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOworICAg
IGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RCVUNoYXJzICsgNCk7Cisg
ICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUsIGhhc2hlci5oYXNoKCkpOworICAgIEFTU0VSVF9FUSh0
ZXN0Qkhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwor
fQorCitURVNUKFdURiwgU3RyaW5nSGFzaGVyX2NvbXB1dGVIYXNoKQoreworICAgIEFTU0VSVF9F
UShlbXB0eVN0cmluZ0hhc2gsIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2goc3RhdGljX2Nhc3Q8
TENoYXIqPigwKSwgMCkpOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIFN0cmluZ0hh
c2hlcjo6Y29tcHV0ZUhhc2gobnVsbExDaGFycywgMCkpOworICAgIEFTU0VSVF9FUShlbXB0eVN0
cmluZ0hhc2gsIFN0cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2goc3RhdGljX2Nhc3Q8VUNoYXIqPigw
KSwgMCkpOworICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIFN0cmluZ0hhc2hlcjo6Y29t
cHV0ZUhhc2gobnVsbFVDaGFycywgMCkpOworCisgICAgQVNTRVJUX0VRKHNpbmdsZU51bGxDaGFy
YWN0ZXJIYXNoLCBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoKG51bGxMQ2hhcnMsIDEpKTsKKyAg
ICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rlckhhc2gsIFN0cmluZ0hhc2hlcjo6Y29tcHV0
ZUhhc2gobnVsbFVDaGFycywgMSkpOworCisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIFN0cmlu
Z0hhc2hlcjo6Y29tcHV0ZUhhc2godGVzdEFMQ2hhcnMsIDUpKTsKKyAgICBBU1NFUlRfRVEodGVz
dEFIYXNoNSwgU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaCh0ZXN0QVVDaGFycywgNSkpOworICAg
IEFTU0VSVF9FUSh0ZXN0Qkhhc2g1LCBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoKHRlc3RCVUNo
YXJzLCA1KSk7Cit9CisKK1RFU1QoV1RGLCBTdHJpbmdIYXNoZXJfY29tcHV0ZUhhc2hBbmRNYXNr
VG9wOEJpdHMpCit7CisgICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCAmIDB4RkZGRkZGLCBT
dHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHN0YXRpY19jYXN0PExDaGFy
Kj4oMCksIDApKTsKKyAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIFN0
cmluZ0hhc2hlcjo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHMobnVsbExDaGFycywgMCkpOwor
ICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgU3RyaW5nSGFzaGVyOjpj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhzdGF0aWNfY2FzdDxVQ2hhcio+KDApLCAwKSk7Cisg
ICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCAmIDB4RkZGRkZGLCBTdHJpbmdIYXNoZXI6OmNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG51bGxVQ2hhcnMsIDApKTsKKworICAgIEFTU0VSVF9F
UShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCAmIDB4RkZGRkZGLCBTdHJpbmdIYXNoZXI6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKG51bGxMQ2hhcnMsIDEpKTsKKyAgICBBU1NFUlRfRVEoc2lu
Z2xlTnVsbENoYXJhY3Rlckhhc2ggJiAweEZGRkZGRiwgU3RyaW5nSGFzaGVyOjpjb21wdXRlSGFz
aEFuZE1hc2tUb3A4Qml0cyhudWxsVUNoYXJzLCAxKSk7CisKKyAgICBBU1NFUlRfRVEodGVzdEFI
YXNoNSAmIDB4RkZGRkZGLCBTdHJpbmdIYXNoZXI6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRz
KHRlc3RBTENoYXJzLCA1KSk7CisgICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZGRkZGRiwg
U3RyaW5nSGFzaGVyOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyh0ZXN0QVVDaGFycywgNSkp
OworICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1ICYgMHhGRkZGRkYsIFN0cmluZ0hhc2hlcjo6Y29t
cHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHModGVzdEJVQ2hhcnMsIDUpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvU3VwZXJGYXN0SGFzaC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dXBlckZhc3RIYXNoLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRiYmU4Zjli
OWYyLi4wMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3Vw
ZXJGYXN0SGFzaC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NjQgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMy0yMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N1cGVyRmFz
dEhhc2guaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgY29uc3QgTENo
YXIgbnVsbExDaGFyc1syXSA9IHsgMCwgMCB9Owotc3RhdGljIGNvbnN0IFVDaGFyIG51bGxVQ2hh
cnNbMl0gPSB7IDAsIDAgfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVtcHR5U3RyaW5nSGFz
aCA9IDB4NEVDODg5RVU7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2luZ2xlTnVsbENoYXJhY3Rl
ckhhc2ggPSAweDNEM0FCRjQ0VTsKLQotc3RhdGljIGNvbnN0IExDaGFyIHRlc3RBTENoYXJzWzZd
ID0geyAweDQxLCAweDk1LCAweEZGLCAweDUwLCAweDAxLCAwIH07Ci1zdGF0aWMgY29uc3QgVUNo
YXIgdGVzdEFVQ2hhcnNbNl0gPSB7IDB4NDEsIDB4OTUsIDB4RkYsIDB4NTAsIDB4MDEsIDAgfTsK
LXN0YXRpYyBjb25zdCBVQ2hhciB0ZXN0QlVDaGFyc1s2XSA9IHsgMHg0MSwgMHg5NSwgMHhGRkZG
LCAweDEwODAsIDB4MDEsIDAgfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRlc3RBSGFzaDEg
PSAweEVBMzJCMDA0Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRlc3RBSGFzaDIgPSAweDkzRjBG
NzFFOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRlc3RBSGFzaDMgPSAweENCNjA5RUIxOwotc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHRlc3RBSGFzaDQgPSAweDc5ODRBNzA2Owotc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHRlc3RBSGFzaDUgPSAweDA0Mjc1NjFGOwotCi1zdGF0aWMgY29uc3QgdW5zaWdu
ZWQgdGVzdEJIYXNoMSA9IDB4RUEzMkIwMDQ7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgdGVzdEJI
YXNoMiA9IDB4OTNGMEY3MUU7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgdGVzdEJIYXNoMyA9IDB4
NTlFQjFCMkM7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgdGVzdEJIYXNoNCA9IDB4QTdCQ0NDMEE7
Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgdGVzdEJIYXNoNSA9IDB4NzkyMDE2NDk7Ci0KLVRFU1Qo
V1RGLCBTdXBlckZhc3RIYXNoKQotewotICAgIFN1cGVyRmFzdEhhc2ggaGFzaGVyOwotCi0gICAg
Ly8gVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGhhc2hlci4KLSAgICBBU1NFUlRfRVEoZW1wdHlT
dHJpbmdIYXNoLCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNo
ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotfQotCi1URVNU
KFdURiwgU3VwZXJGYXN0SGFzaF9hZGRDaGFyYWN0ZXIpCi17Ci0gICAgU3VwZXJGYXN0SGFzaCBo
YXNoZXI7Ci0KLSAgICAvLyBIYXNoaW5nIGEgc2luZ2xlIGNoYXJhY3Rlci4KLSAgICBoYXNoZXIg
PSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcigwKTsKLSAgICBBU1NF
UlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rlckhhc2gsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VS
VF9FUShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhU
b3A4Qml0c01hc2tlZCgpKTsKLQotICAgIC8vIEhhc2hpbmcgZml2ZSBjaGFyYWN0ZXJzLCBjaGVj
a2luZyB0aGUgaW50ZXJtZWRpYXRlIHN0YXRlIGFmdGVyIGVhY2ggaXMgYWRkZWQuCi0gICAgaGFz
aGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXIodGVzdEFVQ2hh
cnNbMF0pOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gxLCBoYXNoZXIuaGFzaCgpKTsKLSAgICBB
U1NFUlRfRVEodGVzdEFIYXNoMSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01h
c2tlZCgpKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RBVUNoYXJzWzFdKTsKLSAgICBB
U1NFUlRfRVEodGVzdEFIYXNoMiwgaGFzaGVyLmhhc2goKSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RB
SGFzaDIgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAg
aGFzaGVyLmFkZENoYXJhY3Rlcih0ZXN0QVVDaGFyc1syXSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RB
SGFzaDMsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzICYgMHhGRkZG
RkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlci5hZGRDaGFy
YWN0ZXIodGVzdEFVQ2hhcnNbM10pOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g0LCBoYXNoZXIu
aGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFz
aFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RBVUNo
YXJzWzRdKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhhc2goKSk7Ci0gICAg
QVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNN
YXNrZWQoKSk7Ci0KLSAgICAvLyBIYXNoaW5nIGEgc2Vjb25kIHNldCBvZiBmaXZlIGNoYXJhY3Rl
cnMsIGluY2x1ZGluZyBub24tTGF0aW4tMSBjaGFyYWN0ZXJzLgotICAgIGhhc2hlciA9IFN1cGVy
RmFzdEhhc2goKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RCVUNoYXJzWzBdKTsKLSAg
ICBBU1NFUlRfRVEodGVzdEJIYXNoMSwgaGFzaGVyLmhhc2goKSk7Ci0gICAgQVNTRVJUX0VRKHRl
c3RCSGFzaDEgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0g
ICAgaGFzaGVyLmFkZENoYXJhY3Rlcih0ZXN0QlVDaGFyc1sxXSk7Ci0gICAgQVNTRVJUX0VRKHRl
c3RCSGFzaDIsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2gyICYgMHhG
RkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXIodGVzdEJVQ2hhcnNbMl0pOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2gzLCBoYXNo
ZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEJIYXNoMyAmIDB4RkZGRkZGLCBoYXNoZXIu
aGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RC
VUNoYXJzWzNdKTsKLSAgICBBU1NFUlRfRVEodGVzdEJIYXNoNCwgaGFzaGVyLmhhc2goKSk7Ci0g
ICAgQVNTRVJUX0VRKHRlc3RCSGFzaDQgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJp
dHNNYXNrZWQoKSk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3Rlcih0ZXN0QlVDaGFyc1s0XSk7Ci0g
ICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0
ZXN0Qkhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwot
fQotCi1URVNUKFdURiwgU3VwZXJGYXN0SGFzaF9hZGRDaGFyYWN0ZXJzKQotewotICAgIFN1cGVy
RmFzdEhhc2ggaGFzaGVyOwotCi0gICAgLy8gSGFzaGluZyB6ZXJvIGNoYXJhY3RlcnMuCi0gICAg
aGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHN0YXRp
Y19jYXN0PExDaGFyKj4oMCksIDApOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhh
c2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwg
aGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAgaGFzaGVyID0gU3VwZXJGYXN0
SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51bGxMQ2hhcnMsIDApOwotICAgIEFT
U0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUShl
bXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQo
KSk7Ci0gICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0
ZXJzKG51bGxMQ2hhcnMpOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5o
YXNoKCkpOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVy
Lmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgp
OwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHN0YXRpY19jYXN0PFVDaGFyKj4oMCksIDApOwot
ICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VS
VF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNN
YXNrZWQoKSk7Ci0gICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzKG51bGxVQ2hhcnMsIDApOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gs
IGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZG
RiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAgaGFzaGVyID0gU3VwZXJG
YXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51bGxVQ2hhcnMpOwotICAgIEFT
U0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUShl
bXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQo
KSk7Ci0KLSAgICAvLyBIYXNoaW5nIG9uZSBjaGFyYWN0ZXIuCi0gICAgaGFzaGVyID0gU3VwZXJG
YXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51bGxMQ2hhcnMsIDEpOwotICAg
IEFTU0VSVF9FUShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCwgaGFzaGVyLmhhc2goKSk7Ci0gICAg
QVNTRVJUX0VRKHNpbmdsZU51bGxDaGFyYWN0ZXJIYXNoICYgMHhGRkZGRkYsIGhhc2hlci5oYXNo
V2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlciA9IFN1cGVyRmFzdEhhc2goKTsKLSAg
ICBoYXNoZXIuYWRkQ2hhcmFjdGVycyhudWxsVUNoYXJzLCAxKTsKLSAgICBBU1NFUlRfRVEoc2lu
Z2xlTnVsbENoYXJhY3Rlckhhc2gsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUShzaW5n
bGVOdWxsQ2hhcmFjdGVySGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01h
c2tlZCgpKTsKLQotICAgIC8vIEhhc2hpbmcgZml2ZSBjaGFyYWN0ZXJzLCBhbGwgYXQgb25jZS4K
LSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnMo
dGVzdEFMQ2hhcnMsIDUpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgp
KTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhU
b3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFz
aGVyLmFkZENoYXJhY3RlcnModGVzdEFMQ2hhcnMpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1
LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBo
YXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIgPSBTdXBlckZhc3RI
YXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFVQ2hhcnMsIDUpOwotICAgIEFT
U0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEFI
YXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBo
YXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFV
Q2hhcnMpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBB
U1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01h
c2tlZCgpKTsKLSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENo
YXJhY3RlcnModGVzdEJVQ2hhcnMsIDUpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1LCBoYXNo
ZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIu
aGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7
Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEJVQ2hhcnMpOwotICAgIEFTU0VSVF9FUSh0
ZXN0Qkhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSAmIDB4
RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLQotICAgIC8vIEhhc2hp
bmcgZml2ZSBjaGFyYWN0ZXJzLCBpbiBncm91cHMgb2YgdHdvLCB0aGVuIHRoZSBsYXN0IG9uZS4K
LSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnMo
dGVzdEFMQ2hhcnMsIDIpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gyLCBoYXNoZXIuaGFzaCgp
KTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoMiAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhU
b3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycyAr
IDIsIDIpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g0LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBB
U1NFUlRfRVEodGVzdEFIYXNoNCAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01h
c2tlZCgpKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycyArIDQsIDEpOwot
ICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEo
dGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsK
LSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnMo
dGVzdEFMQ2hhcnMsIDIpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBTENoYXJzICsg
MiwgMik7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFMQ2hhcnMgKyA0KTsKLSAgICBB
U1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhhc2goKSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RB
SGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAg
aGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RB
VUNoYXJzLCAyKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoMiwgaGFzaGVyLmhhc2goKSk7Ci0g
ICAgQVNTRVJUX0VRKHRlc3RBSGFzaDIgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJp
dHNNYXNrZWQoKSk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFVQ2hhcnMgKyAyLCAy
KTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNCwgaGFzaGVyLmhhc2goKSk7Ci0gICAgQVNTRVJU
X0VRKHRlc3RBSGFzaDQgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQo
KSk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFVQ2hhcnMgKyA0LCAxKTsKLSAgICBB
U1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhhc2goKSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RB
SGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAg
aGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RB
VUNoYXJzLCAyKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QVVDaGFycyArIDIsIDIp
OwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBVUNoYXJzICsgNCk7Ci0gICAgQVNTRVJU
X0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1
ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hl
ciA9IFN1cGVyRmFzdEhhc2goKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFy
cywgMik7Ci0gICAgQVNTRVJUX0VRKHRlc3RCSGFzaDIsIGhhc2hlci5oYXNoKCkpOwotICAgIEFT
U0VSVF9FUSh0ZXN0Qkhhc2gyICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFz
a2VkKCkpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RCVUNoYXJzICsgMiwgMik7Ci0g
ICAgQVNTRVJUX0VRKHRlc3RCSGFzaDQsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0
ZXN0Qkhhc2g0ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwot
ICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RCVUNoYXJzICsgNCwgMSk7Ci0gICAgQVNTRVJU
X0VRKHRlc3RCSGFzaDUsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1
ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hl
ciA9IFN1cGVyRmFzdEhhc2goKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFy
cywgMik7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEJVQ2hhcnMgKyAyLCAyKTsKLSAg
ICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFycyArIDQpOwotICAgIEFTU0VSVF9FUSh0
ZXN0Qkhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSAmIDB4
RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLQotICAgIC8vIEhhc2hp
bmcgZml2ZSBjaGFyYWN0ZXJzLCB0aGUgZmlyc3QgdGhyZWUsIHRoZW4gdGhlIGxhc3QgdHdvLgot
ICAgIGhhc2hlciA9IFN1cGVyRmFzdEhhc2goKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0
ZXN0QUxDaGFycywgMyk7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDMsIGhhc2hlci5oYXNoKCkp
OwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRv
cDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBTENoYXJzICsg
MywgMik7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOwotICAgIEFT
U0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFz
a2VkKCkpOwotICAgIGhhc2hlciA9IFN1cGVyRmFzdEhhc2goKTsKLSAgICBoYXNoZXIuYWRkQ2hh
cmFjdGVycyh0ZXN0QUxDaGFycywgMyk7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDMsIGhhc2hl
ci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzICYgMHhGRkZGRkYsIGhhc2hlci5o
YXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RB
TENoYXJzICsgMyk7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOwot
ICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhC
aXRzTWFza2VkKCkpOwotICAgIGhhc2hlciA9IFN1cGVyRmFzdEhhc2goKTsKLSAgICBoYXNoZXIu
YWRkQ2hhcmFjdGVycyh0ZXN0QVVDaGFycywgMyk7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDMs
IGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzICYgMHhGRkZGRkYsIGhh
c2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJz
KHRlc3RBVUNoYXJzICsgMywgMik7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5o
YXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNo
V2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlciA9IFN1cGVyRmFzdEhhc2goKTsKLSAg
ICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QVVDaGFycywgMyk7Ci0gICAgQVNTRVJUX0VRKHRl
c3RBSGFzaDMsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gzICYgMHhG
RkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzKHRlc3RBVUNoYXJzICsgMywgMik7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUs
IGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIGhh
c2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlciA9IFN1cGVyRmFzdEhh
c2goKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFycywgMyk7Ci0gICAgQVNT
RVJUX0VRKHRlc3RCSGFzaDMsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhh
c2gzICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhh
c2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RCVUNoYXJzICsgMywgMik7Ci0gICAgQVNTRVJUX0VRKHRl
c3RCSGFzaDUsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1ICYgMHhG
RkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlciA9IFN1
cGVyRmFzdEhhc2goKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QlVDaGFycywgMyk7
Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEJVQ2hhcnMgKyAzKTsKLSAgICBBU1NFUlRf
RVEodGVzdEJIYXNoNSwgaGFzaGVyLmhhc2goKSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RCSGFzaDUg
JiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0KLSAgICAvLyBI
YXNoaW5nIHplcm8gY2hhcmFjdGVycyBhZnRlciBoYXNoaW5nIG90aGVyIGNoYXJhY3RlcnMuCi0g
ICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51
bGxMQ2hhcnMsIDApOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51bGxMQ2hhcnMsIDApOwot
ICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VS
VF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNN
YXNrZWQoKSk7Ci0KLSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFk
ZENoYXJhY3RlcnModGVzdEFMQ2hhcnMsIDEpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKG51
bGxMQ2hhcnMsIDApOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gxLCBoYXNoZXIuaGFzaCgpKTsK
LSAgICBBU1NFUlRfRVEodGVzdEFIYXNoMSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4
Qml0c01hc2tlZCgpKTsKLQotICAgIGhhc2hlciA9IFN1cGVyRmFzdEhhc2goKTsKLSAgICBoYXNo
ZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycywgMik7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3Rl
cnMobnVsbExDaGFycywgMCk7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDIsIGhhc2hlci5oYXNo
KCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gyICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0
aFRvcDhCaXRzTWFza2VkKCkpOwotCi0gICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAg
IGhhc2hlci5hZGRDaGFyYWN0ZXJzKHRlc3RBVUNoYXJzLCAzKTsKLSAgICBoYXNoZXIuYWRkQ2hh
cmFjdGVycyhudWxsTENoYXJzLCAwKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoMywgaGFzaGVy
Lmhhc2goKSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDMgJiAweEZGRkZGRiwgaGFzaGVyLmhh
c2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0KLSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7
Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnModGVzdEFMQ2hhcnMsIDQpOwotICAgIGhhc2hlci5h
ZGRDaGFyYWN0ZXJzKG51bGxMQ2hhcnMsIDApOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g0LCBo
YXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNCAmIDB4RkZGRkZGLCBoYXNo
ZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLQotICAgIGhhc2hlciA9IFN1cGVyRmFzdEhh
c2goKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVycyh0ZXN0QUxDaGFycywgNSk7Ci0gICAgaGFz
aGVyLmFkZENoYXJhY3RlcnMobnVsbExDaGFycywgMCk7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFz
aDUsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1ICYgMHhGRkZGRkYs
IGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotfQotCi1URVNUKFdURiwgU3VwZXJG
YXN0SGFzaF9hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKQotewotICAgIFN1cGVyRmFzdEhh
c2ggaGFzaGVyOwotCi0gICAgLy8gSGFzaGluZyB6ZXJvIGNoYXJhY3RlcnMuCi0gICAgaGFzaGVy
ID0gU3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGln
bmVkKHN0YXRpY19jYXN0PExDaGFyKj4oMCksIDApOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmlu
Z0hhc2gsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAw
eEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAgaGFzaGVyID0g
U3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVk
KG51bGxMQ2hhcnMsIDApOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5o
YXNoKCkpOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVy
Lmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgp
OwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHN0YXRpY19jYXN0PFVD
aGFyKj4oMCksIDApOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNo
KCkpOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhh
c2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwot
ICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG51bGxVQ2hhcnMsIDApOwot
ICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VS
VF9FUShlbXB0eVN0cmluZ0hhc2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNN
YXNrZWQoKSk7Ci0gICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG51bGxVQ2hhcnMpOwotICAgIEFTU0VSVF9FUShlbXB0
eVN0cmluZ0hhc2gsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hh
c2ggJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0KLSAgICAv
LyBIYXNoaW5nIG9uZSBjaGFyYWN0ZXIuCi0gICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwot
ICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKG51bGxMQ2hhcnMsIDEpOwot
ICAgIEFTU0VSVF9FUShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCwgaGFzaGVyLmhhc2goKSk7Ci0g
ICAgQVNTRVJUX0VRKHNpbmdsZU51bGxDaGFyYWN0ZXJIYXNoICYgMHhGRkZGRkYsIGhhc2hlci5o
YXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlciA9IFN1cGVyRmFzdEhhc2goKTsK
LSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZChudWxsVUNoYXJzLCAxKTsK
LSAgICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rlckhhc2gsIGhhc2hlci5oYXNoKCkpOwot
ICAgIEFTU0VSVF9FUShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCAmIDB4RkZGRkZGLCBoYXNoZXIu
aGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLQotICAgIC8vIEhhc2hpbmcgZml2ZSBjaGFyYWN0
ZXJzLCBhbGwgYXQgb25jZS4KLSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFz
aGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEFMQ2hhcnMsIDUpOwotICAgIEFT
U0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEFI
YXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBo
YXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWlu
Z0FsaWduZWQodGVzdEFMQ2hhcnMpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIu
aGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFz
aFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0g
ICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEFVQ2hhcnMsIDUpOwot
ICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEo
dGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsK
LSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnNB
c3N1bWluZ0FsaWduZWQodGVzdEFVQ2hhcnMpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBo
YXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZGRkZGLCBoYXNo
ZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNo
KCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEJVQ2hhcnMs
IDUpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NF
UlRfRVEodGVzdEJIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tl
ZCgpKTsKLSAgICBoYXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJh
Y3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEJVQ2hhcnMpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhh
c2g1LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSAmIDB4RkZGRkZG
LCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLQotICAgIC8vIEhhc2hpbmcgZml2
ZSBjaGFyYWN0ZXJzLCBpbiBncm91cHMgb2YgdHdvLCB0aGVuIHRoZSBsYXN0IG9uZS4KLSAgICBo
YXNoZXIgPSBTdXBlckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWlu
Z0FsaWduZWQodGVzdEFMQ2hhcnMsIDIpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2gyLCBoYXNo
ZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoMiAmIDB4RkZGRkZGLCBoYXNoZXIu
aGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3Vt
aW5nQWxpZ25lZCh0ZXN0QUxDaGFycyArIDIsIDIpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g0
LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNCAmIDB4RkZGRkZGLCBo
YXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVy
c0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QUxDaGFycyArIDQsIDEpOwotICAgIEFTU0VSVF9FUSh0ZXN0
QUhhc2g1LCBoYXNoZXIuaGFzaCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSAmIDB4RkZG
RkZGLCBoYXNoZXIuaGFzaFdpdGhUb3A4Qml0c01hc2tlZCgpKTsKLSAgICBoYXNoZXIgPSBTdXBl
ckZhc3RIYXNoKCk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVz
dEFMQ2hhcnMsIDIpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRl
c3RBTENoYXJzICsgMiwgMik7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWdu
ZWQodGVzdEFMQ2hhcnMgKyA0KTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhh
c2goKSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hX
aXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAg
IGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RBVUNoYXJzLCAyKTsKLSAg
ICBBU1NFUlRfRVEodGVzdEFIYXNoMiwgaGFzaGVyLmhhc2goKSk7Ci0gICAgQVNTRVJUX0VRKHRl
c3RBSGFzaDIgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0g
ICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEFVQ2hhcnMgKyAyLCAy
KTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNCwgaGFzaGVyLmhhc2goKSk7Ci0gICAgQVNTRVJU
X0VRKHRlc3RBSGFzaDQgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQo
KSk7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVzdEFVQ2hhcnMg
KyA0LCAxKTsKLSAgICBBU1NFUlRfRVEodGVzdEFIYXNoNSwgaGFzaGVyLmhhc2goKSk7Ci0gICAg
QVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZGRkZGRiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNN
YXNrZWQoKSk7Ci0gICAgaGFzaGVyID0gU3VwZXJGYXN0SGFzaCgpOwotICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RBVUNoYXJzLCAyKTsKLSAgICBoYXNoZXIuYWRk
Q2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0QVVDaGFycyArIDIsIDIpOwotICAgIGhhc2hl
ci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RBVUNoYXJzICsgNCk7Ci0gICAgQVNT
RVJUX0VRKHRlc3RBSGFzaDUsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhh
c2g1ICYgMHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhh
c2hlciA9IFN1cGVyRmFzdEhhc2goKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5n
QWxpZ25lZCh0ZXN0QlVDaGFycywgMik7Ci0gICAgQVNTRVJUX0VRKHRlc3RCSGFzaDIsIGhhc2hl
ci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2gyICYgMHhGRkZGRkYsIGhhc2hlci5o
YXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1p
bmdBbGlnbmVkKHRlc3RCVUNoYXJzICsgMiwgMik7Ci0gICAgQVNTRVJUX0VRKHRlc3RCSGFzaDQs
IGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g0ICYgMHhGRkZGRkYsIGhh
c2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJz
QXNzdW1pbmdBbGlnbmVkKHRlc3RCVUNoYXJzICsgNCwgMSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RC
SGFzaDUsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1ICYgMHhGRkZG
RkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlciA9IFN1cGVy
RmFzdEhhc2goKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25lZCh0ZXN0
QlVDaGFycywgMik7Ci0gICAgaGFzaGVyLmFkZENoYXJhY3RlcnNBc3N1bWluZ0FsaWduZWQodGVz
dEJVQ2hhcnMgKyAyLCAyKTsKLSAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyc0Fzc3VtaW5nQWxpZ25l
ZCh0ZXN0QlVDaGFycyArIDQpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1LCBoYXNoZXIuaGFz
aCgpKTsKLSAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSAmIDB4RkZGRkZGLCBoYXNoZXIuaGFzaFdp
dGhUb3A4Qml0c01hc2tlZCgpKTsKLQotICAgIC8vIEhhc2hpbmcgZml2ZSBjaGFyYWN0ZXJzLCBm
aXJzdCB0d28gY2hhcmFjdGVycyBvbmUgYXQgYSB0aW1lLAotICAgIC8vIHRoZW4gdHdvIG1vcmUs
IHRoZW4gdGhlIGxhc3Qgb25lLgotICAgIGhhc2hlciA9IFN1cGVyRmFzdEhhc2goKTsKLSAgICBo
YXNoZXIuYWRkQ2hhcmFjdGVyKHRlc3RCVUNoYXJzWzBdKTsKLSAgICBBU1NFUlRfRVEodGVzdEJI
YXNoMSwgaGFzaGVyLmhhc2goKSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RCSGFzaDEgJiAweEZGRkZG
RiwgaGFzaGVyLmhhc2hXaXRoVG9wOEJpdHNNYXNrZWQoKSk7Ci0gICAgaGFzaGVyLmFkZENoYXJh
Y3Rlcih0ZXN0QlVDaGFyc1sxXSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RCSGFzaDIsIGhhc2hlci5o
YXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2gyICYgMHhGRkZGRkYsIGhhc2hlci5oYXNo
V2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzQXNzdW1pbmdB
bGlnbmVkKHRlc3RCVUNoYXJzWzJdLCB0ZXN0QlVDaGFyc1szXSk7Ci0gICAgQVNTRVJUX0VRKHRl
c3RCSGFzaDQsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g0ICYgMHhG
RkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotICAgIGhhc2hlci5hZGRD
aGFyYWN0ZXJzQXNzdW1pbmdBbGlnbmVkKHRlc3RCVUNoYXJzICsgNCk7Ci0gICAgQVNTRVJUX0VR
KHRlc3RCSGFzaDUsIGhhc2hlci5oYXNoKCkpOwotICAgIEFTU0VSVF9FUSh0ZXN0Qkhhc2g1ICYg
MHhGRkZGRkYsIGhhc2hlci5oYXNoV2l0aFRvcDhCaXRzTWFza2VkKCkpOwotfQotCi1URVNUKFdU
RiwgU3VwZXJGYXN0SGFzaF9jb21wdXRlSGFzaCkKLXsKLSAgICBBU1NFUlRfRVEoZW1wdHlTdHJp
bmdIYXNoLCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaChzdGF0aWNfY2FzdDxMQ2hhcio+KDAp
LCAwKSk7Ci0gICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5nSGFzaCwgU3VwZXJGYXN0SGFzaDo6Y29t
cHV0ZUhhc2gobnVsbExDaGFycywgMCkpOwotICAgIEFTU0VSVF9FUShlbXB0eVN0cmluZ0hhc2gs
IFN1cGVyRmFzdEhhc2g6OmNvbXB1dGVIYXNoKHN0YXRpY19jYXN0PFVDaGFyKj4oMCksIDApKTsK
LSAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoLCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFz
aChudWxsVUNoYXJzLCAwKSk7Ci0KLSAgICBBU1NFUlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rlckhh
c2gsIFN1cGVyRmFzdEhhc2g6OmNvbXB1dGVIYXNoKG51bGxMQ2hhcnMsIDEpKTsKLSAgICBBU1NF
UlRfRVEoc2luZ2xlTnVsbENoYXJhY3Rlckhhc2gsIFN1cGVyRmFzdEhhc2g6OmNvbXB1dGVIYXNo
KG51bGxVQ2hhcnMsIDEpKTsKLQotICAgIEFTU0VSVF9FUSh0ZXN0QUhhc2g1LCBTdXBlckZhc3RI
YXNoOjpjb21wdXRlSGFzaCh0ZXN0QUxDaGFycywgNSkpOwotICAgIEFTU0VSVF9FUSh0ZXN0QUhh
c2g1LCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaCh0ZXN0QVVDaGFycywgNSkpOwotICAgIEFT
U0VSVF9FUSh0ZXN0Qkhhc2g1LCBTdXBlckZhc3RIYXNoOjpjb21wdXRlSGFzaCh0ZXN0QlVDaGFy
cywgNSkpOwotfQotCi1URVNUKFdURiwgU3VwZXJGYXN0SGFzaF9jb21wdXRlSGFzaEFuZE1hc2tU
b3A4Qml0cykKLXsKLSAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIFN1
cGVyRmFzdEhhc2g6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHN0YXRpY19jYXN0PExDaGFy
Kj4oMCksIDApKTsKLSAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIFN1
cGVyRmFzdEhhc2g6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG51bGxMQ2hhcnMsIDApKTsK
LSAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIFN1cGVyRmFzdEhhc2g6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKHN0YXRpY19jYXN0PFVDaGFyKj4oMCksIDApKTsK
LSAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoICYgMHhGRkZGRkYsIFN1cGVyRmFzdEhhc2g6
OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG51bGxVQ2hhcnMsIDApKTsKLQotICAgIEFTU0VS
VF9FUShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCAmIDB4RkZGRkZGLCBTdXBlckZhc3RIYXNoOjpj
b21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhudWxsTENoYXJzLCAxKSk7Ci0gICAgQVNTRVJUX0VR
KHNpbmdsZU51bGxDaGFyYWN0ZXJIYXNoICYgMHhGRkZGRkYsIFN1cGVyRmFzdEhhc2g6OmNvbXB1
dGVIYXNoQW5kTWFza1RvcDhCaXRzKG51bGxVQ2hhcnMsIDEpKTsKLQotICAgIEFTU0VSVF9FUSh0
ZXN0QUhhc2g1ICYgMHhGRkZGRkYsIFN1cGVyRmFzdEhhc2g6OmNvbXB1dGVIYXNoQW5kTWFza1Rv
cDhCaXRzKHRlc3RBTENoYXJzLCA1KSk7Ci0gICAgQVNTRVJUX0VRKHRlc3RBSGFzaDUgJiAweEZG
RkZGRiwgU3VwZXJGYXN0SGFzaDo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJpdHModGVzdEFVQ2hh
cnMsIDUpKTsKLSAgICBBU1NFUlRfRVEodGVzdEJIYXNoNSAmIDB4RkZGRkZGLCBTdXBlckZhc3RI
YXNoOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyh0ZXN0QlVDaGFycywgNSkpOwotfQotCi19
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9XWUhhc2guY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
V1lIYXNoLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJiNmI1MDI4OGFjLi4w
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1lIYXNoLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMtMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XWUhhc2guaD4KLQotI2luY2x1ZGUg
PGNzdGRpbz4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1zdGF0aWMgY29uc3QgTENo
YXIgbnVsbExDaGFyc1syXSA9IHsgMCwgMCB9Owotc3RhdGljIGNvbnN0IFVDaGFyIG51bGxVQ2hh
cnNbMl0gPSB7IDAsIDAgfTsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGVtcHR5U3RyaW5nSGFz
aCA9IDE0NzU4NDY1Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNpbmdsZU51bGxDaGFyYWN0ZXJI
YXNoID0gODU0NDUyMjsKLQotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4cGVjdGVkWzI1Nl0gPSB7
Ci0gICAgMTQ3NTg0NjUsIDg1NDQ1MjIsIDExNDA0MTY0LCA4NjE0OTQsIDgxNDc0ODIsIDE1MTgw
NDgxLCA1ODEyMzgyLCA2Mjk3ODE4LCAxMzgzMDgyMSwgMjA1MTE0NiwgMTMwMzI1MzYsIDExMzA5
Nzk4LCA0NDI0MDUsCi0gICAgMTY2NjExNzAsIDcyMTE5MDgsIDEyMDYwMTY4LCAxMDY3MTg3NCwg
MTc4NzQ4NCwgMzgyMDA1MSwgNjIwNjMxMSwgNDMyNTgwMSwgMTA3Njc0NiwgMTA4ODk0NTcsIDEy
MTM5OTEzLCA2ODA4MTI5LCAxNDk0OTgyNCwKLSAgICAxMDA5ODE2NiwgMTQ3NjYxMjMsIDEwODAy
NzkzLCAxMTQxOTU2MCwgMTEyOTUzMjAsIDgyMTkyMjMsIDYxMjg4NDgsIDE2MjI2ODg4LCAxMjY1
Mjk1OSwgNTI4MzYwOSwgNDM3NTM4NSwgMTYzNjIzNTMsIDI5MTY0NjIsCi0gICAgOTgyMTQ4Nywg
MTUxNjQzMiwgOTIzNjIyOSwgNzQ2MzQ4NywgMzkyNzkzLCAxMDMwMjY2MywgMTQwNjQ3MzEsIDE1
MzE0NjQzLCAxMzQ4NTk2OCwgMTM1MjQ3ODAsIDI5Mzc0NTYsIDY5MzEwNDAsIDk5MDE2MDQsCi0g
ICAgODI0MDQ5NiwgMTYzMTQyMTQsIDE4OTQ2NTYsIDQwMDUyNDUsIDIwNjU0NjUsIDk3MzcyOTQs
IDM3NDM5NzgsIDI5OTA3NzQsIDE1ODMxMTQ2LCAzMDIyODYxLCAxMzIxNDU1NywgNTg4NDkyNCwg
MjU2NTYxOSwKLSAgICAxMDE2MDY1NCwgODMyMzEyMiwgMTExMDA3NTQsIDE1MzM5NTQ4LCA1NDQ2
NzcxLCA0MjAzMDYyLCAyMzc2MDQ0LCAzNzU5OTk2LCAxOTEyNjE3LCA3NTA4MDQsIDE1Njk3OTMy
LCAxNDcxOTcxMiwgMjkzOTA5NSwKLSAgICA3MTcyMDU3LCAxMDg5NTIwMywgNDAwNDU3MSwgOTIw
MTI0LCA3NzYwMDYsIDY4NjY0MTIsIDM3OTc0MTgsIDE1MjMyNTUwLCA4NjY0MDQ4LCAzMjMyMDQs
IDU1MjM0MzcsIDI3OTgwMDMsIDQ5ODQxMTAsIDE2MTQyMzYsCi0gICAgMjc5NTc0MywgMTA0MzUx
MzQsIDMwMzE3MzIsIDExODc1NzU4LCA4NjE1MjIwLCAyNTc1NzU0LCAzODgzNDkzLCAxMDEwMjIx
MSwgMTAyOTc2MzMsIDEzMzczMzU3LCAzMzIwNTY1LCA4MDU1NjYsIDMzNDMyMjcsCi0gICAgNDcw
MjQyMywgNDAzNDUyMywgMTUwOTk5MTMsIDgwNjQyNTEsIDE5NDU5MTYsIDk3NDE5NzcsIDIwMTI1
NTksIDMxODE1OTMsIDMyMDc3NjQsIDE0MTQyMjUzLCAxMDQ0MjIyMywgMTE0MTE4NDYsIDE2NTI1
OTUwLAotICAgIDk5NTc5MDMsIDEyMzAxNDM1LCAxNTY2OTkwMywgMTEyNDQyMjQsIDE0MjA3NDk0
LCA4OTkzNjA2LCA5MDYyNTUzLCAxNTIwMzY0MiwgOTczNDg3MiwgMjA3NzIxLCAxNDY4MzY2Mywg
MzM4Mjg5NywgMTE3ODA1NDQsCi0gICAgOTI0NjIxOCwgMTQ4NjQ1OTEsIDI0NTcyNDEsIDkwNzc5
NTIsIDc2MDU2ODIsIDMyMTUxNDcsIDExMzYwMzM5LCAxMjk0MzU3OCwgNTM3NjM1NywgOTE0Mzcx
OSwgMTU3MTAwNzIsIDE0MTYxMjk4LCA3NTU4MTU2LAotICAgIDE3NzM5NTAsIDEzNTY0NjcxLCA2
MzY1NjMzLCAyODgxNjE2LCA5Mzc3ODIsIDE1MTAwODg5LCA1Njc5MjMsIDEzODM3MDc0LCA2MTg3
Mzk0LCA1NzgxNDk3LCAxMTYzNjQ2MywgNTkyNTYyNywgMTE4Njc2MTYsCi0gICAgMTQzMzIzNjUs
IDEzNjU0MTA3LCA4ODI4MzMyLCAxMzg0ODU1NiwgMTQyNzkyMTgsIDQzMjQ2MDUsIDk2MTU2NCwg
MTA2Nzg2MDksIDQ2NzEzOTksIDc4OTg1MDksIDc1OTEzODEsIDkyMDc1MDgsIDEyMjQ1MDU1LAot
ICAgIDg3NDg4NTMsIDEwNDI5MjcsIDEwNjk4OTIwLCAyNTYzNjQsIDE1NjAwODksIDU5NTkyMjgs
IDEyMzE0MTMwLCA5MDMzMDUyLCAxNTMyMDA1OCwgMTI3MDU0ODksIDYxNjAwNjMsIDEzMDc2Mzks
IDExMDY1OTU0LAotICAgIDY5NDM1MjIsIDMyMzUzNzcsIDg1NzAzMDEsIDEzNDU3MzEwLCA5ODM5
NTU4LCA1NjQ2ODAzLCAyNjU4NDUsIDI2MTEwNDIsIDE3NTIwNTksIDc1MTM1OTAsIDgyMDc3NTMs
IDIyNzgxNzAsIDQzMDM1ODAsIDk1NjYxMzQsCi0gICAgNTU1MTc0MiwgMjkyMTE0MywgODM3NDk4
OSwgMTE5Njk1NjEsIDI4NzE1NzksIDEwODEwNDM1LCA3MTIwMTYyLCAxMjc3NjIzNiwgMTI1NDc0
OTIsIDExNjUzNzQyLCAxMzIyMjM5NCwgNTQxMTkxOSwgODU3ODg4LAotICAgIDExNzE1OCwgMTEz
ODcwMSwgMTI0NTg1MDYsIDg3NDc4OTYsIDU4NzAzNjMsIDc5OTEzMDQsIDMxMTQ3MzUsIDE1Nzgz
Mjk3LCAxMTEyNTExNiwgNjIzOTI0OSwgMTE2NTY4OTAsIDExMzUwNTAyLCAxMzg4MjcwNCwKLSAg
ICA3NTA3Mzk5LCAxMTg5NjEzNCwgMzAxNTI4MywgOTM2ODI2MywgMTMwMTc2NTMsIDc1MTcyNjgs
IDYxMDI3NTEsIDI0OTg2ODEsIDEzMDM1OTQyLCAxMDM5MDIyLCAxMzE3NjQxMCwgNjAxMzM3OSwg
NzI4OTM5OCwKLSAgICAxNjU4ODI4MiwgMTYyNTI4NTIsIDE1OTk4ODc4LCA3NDY1NzEzLCA2OTU4
Njc5LCA5MDQzODQ4LCA5MTkwMDk0LCA0NjY1NzE0LCA1MjY3MjkzLCAxNjMzMzU4OCwgMjUzNDkx
LCAyMjk0NDMxLCAxMDA0NDQ0MywKLSAgICA2NjQyMzU5LCA4MTEwNzQ4LCAxNDMzNTgyNywgODAx
MDU0MywgOTAyNTM1MCwgMzY0NTA5NSwgMTU5NDk2NjUKLX07Ci0KLVRFU1QoV1RGLCBXWUhhc2hl
cl9jb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cykKLXsKLSAgICBhdXRvIGdlbmVyYXRlTENoYXJB
cnJheSA9IFsmXShzaXplX3Qgc2l6ZSkgewotICAgICAgICBhdXRvIGFycmF5ID0gc3RkOjp1bmlx
dWVfcHRyPExDaGFyW10+KG5ldyBMQ2hhcltzaXplXSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgaSsrKQotICAgICAgICAgICAgYXJyYXlbaV0gPSBpOwotICAgICAgICBy
ZXR1cm4gYXJyYXk7Ci0gICAgfTsKLQotICAgIGF1dG8gZ2VuZXJhdGVVQ2hhckFycmF5ID0gWyZd
KHNpemVfdCBzaXplKSB7Ci0gICAgICAgIGF1dG8gYXJyYXkgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNo
YXJbXT4obmV3IFVDaGFyW3NpemVdKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyBpKyspCi0gICAgICAgICAgICBhcnJheVtpXSA9IGk7Ci0gICAgICAgIHJldHVybiBhcnJh
eTsKLSAgICB9OwotCi0gICAgdW5zaWduZWQgbWF4OEJpdCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDhfdD46Om1heCgpOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSAwOyBzaXplIDw9IG1heDhC
aXQ7IHNpemUrKykgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8TENoYXJbXT4gYXJyMSA9IGdl
bmVyYXRlTENoYXJBcnJheShzaXplKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFVDaGFyW10+
IGFycjIgPSBnZW5lcmF0ZVVDaGFyQXJyYXkoc2l6ZSk7Ci0gICAgICAgIHVuc2lnbmVkIGxlZnQg
PSBXWUhhc2g6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKGFycjEuZ2V0KCksIHNpemUpOwot
ICAgICAgICB1bnNpZ25lZCByaWdodCA9IFdZSGFzaDo6Y29tcHV0ZUhhc2hBbmRNYXNrVG9wOEJp
dHMoYXJyMi5nZXQoKSwgc2l6ZSk7Ci0gICAgICAgIEFTU0VSVF9FUShsZWZ0LCByaWdodCk7Ci0g
ICAgICAgIEFTU0VSVF9FUShsZWZ0LCBleHBlY3RlZFtzaXplXSk7Ci0gICAgfQotCi0gICAgQVNT
RVJUX0VRKGVtcHR5U3RyaW5nSGFzaCwgV1lIYXNoOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0
cyhzdGF0aWNfY2FzdDxMQ2hhcio+KDApLCAwKSk7Ci0gICAgQVNTRVJUX0VRKGVtcHR5U3RyaW5n
SGFzaCwgV1lIYXNoOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhzdGF0aWNfY2FzdDxVQ2hh
cio+KDApLCAwKSk7Ci0KLSAgICBBU1NFUlRfRVEoZW1wdHlTdHJpbmdIYXNoLCBXWUhhc2g6OmNv
bXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG51bGxMQ2hhcnMsIDApKTsKLSAgICBBU1NFUlRfRVEo
ZW1wdHlTdHJpbmdIYXNoLCBXWUhhc2g6OmNvbXB1dGVIYXNoQW5kTWFza1RvcDhCaXRzKG51bGxV
Q2hhcnMsIDApKTsKLQotICAgIEFTU0VSVF9FUShzaW5nbGVOdWxsQ2hhcmFjdGVySGFzaCwgV1lI
YXNoOjpjb21wdXRlSGFzaEFuZE1hc2tUb3A4Qml0cyhudWxsTENoYXJzLCAxKSk7Ci0gICAgQVNT
RVJUX0VRKHNpbmdsZU51bGxDaGFyYWN0ZXJIYXNoLCBXWUhhc2g6OmNvbXB1dGVIYXNoQW5kTWFz
a1RvcDhCaXRzKG51bGxVQ2hhcnMsIDEpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>