<?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>249492</bug_id>
          
          <creation_ts>2022-12-16 11:50:42 -0800</creation_ts>
          <short_desc>REGRESSION(258008@main): Broke internal build</short_desc>
          <delta_ts>2022-12-16 12:56:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>215275</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>justin_michaud</cc>
    
    <cc>tom</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1920017</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-12-16 11:50:42 -0800</bug_when>
    <thetext>https://commits.webkit.org/5ee0680f666939490e0bb03f07ba1ce6088609ec introduced a regression:
Broke internal build

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>1920019</commentid>
    <comment_count>1</comment_count>
      <attachid>464078</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-12-16 11:50:49 -0800</bug_when>
    <thetext>Created attachment 464078
REVERT of 5ee0680f666939490e0bb03f07ba1ce6088609ec

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>1920029</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-12-16 12:21:21 -0800</bug_when>
    <thetext>Committed 258010@main (31146057f911): &lt;https://commits.webkit.org/258010@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 464078.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1920030</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-12-16 12:22:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/103456361&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464078</attachid>
            <date>2022-12-16 11:50:49 -0800</date>
            <delta_ts>2022-12-16 12:21:21 -0800</delta_ts>
            <desc>REVERT of 5ee0680f666939490e0bb03f07ba1ce6088609ec</desc>
            <filename>bug-249492-20221216115048.patch</filename>
            <type>text/plain</type>
            <size>1246993</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">RnJvbSAxYTNjN2EzMDE2MjI0MzMwZDhjODlmZGRhNTQ0MTg0ZGRlNTA0YjNmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDb21taXQgUXVldWUgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3Jn
PgpEYXRlOiBGcmksIDE2IERlYyAyMDIyIDExOjUwOjQ2IC0wODAwClN1YmplY3Q6IFtQQVRDSF0g
VW5yZXZpZXdlZCwgcmV2ZXJ0aW5nCiByNWVlMDY4MGY2NjY5Mzk0OTBlMGJiMDNmMDdiYTFjZTYw
ODg2MDllYy4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDk0OTIK
CkJyb2tlIGludGVybmFsIGJ1aWxkCgpSZXZlcnRlZCBjaGFuZ2VzZXQ6CgoiW0pTQ11bV0FTTV0g
QWRkIHN1cHBvcnQgZm9yIFdlYkFzc2VtYmx5IHRhaWwgY2FsbHMuIgpodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1Mjc1Cmh0dHBzOi8vY29tbWl0cy53ZWJraXQub3Jn
LzVlZTA2ODBmNjY2OTM5NDkwZTBiYjAzZjA3YmExY2U2MDg4NjA5ZWMKLS0tCiAuLi4vYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaCAgICAgICAgICAgfCAgICAgNyAtCiAuLi4vYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaCAgICAgICAgICAgfCAgICAgNSAtCiAuLi4vYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyUklTQ1Y2NC5oICAgICAgICAgfCAgICAxMCAtCiAuLi4vYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0LmggICAgICAgICAgfCAgICAxNCAtCiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvYWlyL0FpckNvZGUuY3BwICAgICAgfCAgICAgNiArLQogLi4uL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiAgIHwgICAgNDAgLQogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIHwgICAgIDQgKy0KIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggICB8ICAgICAyICstCiAuLi4vbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gICAgICAgICAgICAgfCAgICAxMiAtCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtICAgfCAgIDIxNyAtCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oICAgfCAgICAgMSAtCiAuLi4vd2Fz
bS9XYXNtQWlySVJHZW5lcmF0b3IzMl82NC5jcHAgICAgICAgICAgfCAgICAzOCArLQogLi4uL3dh
c20vV2FzbUFpcklSR2VuZXJhdG9yNjQuY3BwICAgICAgICAgICAgIHwgICAxMTcgKy0KIC4uLi93
YXNtL1dhc21BaXJJUkdlbmVyYXRvckJhc2UuaCAgICAgICAgICAgICB8ICAgMjU2ICstCiAuLi4v
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAgfCAgIDM2MyArLQogLi4u
L3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggICAgICAgICAgICAgIHwgICAxMDIgKy0KIC4u
Li93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5jcHAgICB8ICAgICA2IC0KIC4u
Li93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oICAgICB8ICAgICA2IC0KIC4u
Li9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oICB8ICAgIDUzICstCiAu
Li4vd2FzbS9XYXNtSVJHZW5lcmF0b3JIZWxwZXJzLmggICAgICAgICAgICAgfCAgICAyOSAtCiAu
Li4vd2FzbS9XYXNtTExJbnRHZW5lcmF0b3IuY3BwICAgICAgICAgICAgICAgfCAgIDEzNyArLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5jcHAgIHwgICAgMzkgLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5oICAgIHwgICAgIDYgLQog
Li4uL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggICAgICAgICAgICAgIHwgICAgIDUgLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAgIHwgICAgMjggLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5oICAgIHwgICAgIDQgLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwICAgIHwgICAgIDMgLQog
Li4uL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgICAgICAgICAgIHwgICAgIDMgLQog
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vd2FzbS5qc29uICAgICAgICAgIHwgICAgIDIgLQog
VG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cyAgICAgICAgICAgIHwgICAgIDQgLQog
SlNUZXN0cy93YXNtLnlhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDcgLQog
SlNUZXN0cy93YXNtL3RhaWwtY2FsbC1zcGVjLWhhcm5lc3MuanMgICAgICAgIHwgICAgMzggLQog
Li4uL3RhaWwtY2FsbC1zcGVjLWhhcm5lc3MvYXN5bmNfaW5kZXguanMgICAgIHwgICA0MjYgLQog
Li4uL3dhc20vdGFpbC1jYWxsLXNwZWMtaGFybmVzcy9zeW5jX2luZGV4LmpzIHwgICAzODcgLQog
Li4uL3RhaWwtY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMuanMgIHwgICAzODQgLQog
Li4uL3dhc20tbW9kdWxlLWJ1aWxkZXIuanMgICAgICAgICAgICAgICAgICAgIHwgICA1ODMgLQog
SlNUZXN0cy93YXNtL3RhaWwtY2FsbC1zcGVjLWhhcm5lc3Mvd2FzdC5qcyAgIHwgMjk3NzcgLS0t
LS0tLS0tLS0tLS0tLQogLi4uL3dhc20vdGFpbC1jYWxsLXNwZWMtdGVzdHMvdGFpbF9jYWxsLndh
c3QgIHwgICAyMDIgLQogLi4uL3RhaWwtY2FsbC1zcGVjLXRlc3RzL3RhaWxfY2FsbC53YXN0Lmpz
ICAgIHwgICAxMzIgLQogLi4uL3RhaWxfY2FsbF9pbmRpcmVjdC53YXN0ICAgICAgICAgICAgICAg
ICAgIHwgICA1MzYgLQogLi4uL3RhaWxfY2FsbF9pbmRpcmVjdC53YXN0LmpzICAgICAgICAgICAg
ICAgIHwgICAyMzIgLQogSlNUZXN0cy93YXNtL3RhaWwtY2FsbC90YWlsLWNhbGwuanMgICAgICAg
ICAgIHwgICA5ODEgLQogSlNUZXN0cy93YXNtL3dhc20uanNvbiAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgIDIgLQogNDMgZmlsZXMgY2hhbmdlZCwgMjgxIGluc2VydGlvbnMoKyksIDM0OTI1
IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS90YWlsLWNhbGwt
c3BlYy1oYXJuZXNzLmpzCiBkZWxldGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL3RhaWwtY2Fs
bC1zcGVjLWhhcm5lc3MvYXN5bmNfaW5kZXguanMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBKU1Rlc3Rz
L3dhc20vdGFpbC1jYWxsLXNwZWMtaGFybmVzcy9zeW5jX2luZGV4LmpzCiBkZWxldGUgbW9kZSAx
MDA2NDQgSlNUZXN0cy93YXNtL3RhaWwtY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMu
anMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vdGFpbC1jYWxsLXNwZWMtaGFybmVz
cy93YXNtLW1vZHVsZS1idWlsZGVyLmpzCiBkZWxldGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93YXNt
L3RhaWwtY2FsbC1zcGVjLWhhcm5lc3Mvd2FzdC5qcwogZGVsZXRlIG1vZGUgMTAwNjQ0IEpTVGVz
dHMvd2FzbS90YWlsLWNhbGwtc3BlYy10ZXN0cy90YWlsX2NhbGwud2FzdAogZGVsZXRlIG1vZGUg
MTAwNjQ0IEpTVGVzdHMvd2FzbS90YWlsLWNhbGwtc3BlYy10ZXN0cy90YWlsX2NhbGwud2FzdC5q
cwogZGVsZXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS90YWlsLWNhbGwtc3BlYy10ZXN0cy90
YWlsX2NhbGxfaW5kaXJlY3Qud2FzdAogZGVsZXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS90
YWlsLWNhbGwtc3BlYy10ZXN0cy90YWlsX2NhbGxfaW5kaXJlY3Qud2FzdC5qcwogZGVsZXRlIG1v
ZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS90YWlsLWNhbGwvdGFpbC1jYWxsLmpzCgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaApp
bmRleCBjODc5ZmU5MWM0ZmUuLjViZmM2ZjkwNWQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgKQEAgLTQxMzksMTMg
KzQxMzksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmxhYmVs
SWdub3JpbmdXYXRjaHBvaW50cygpLCBDYWxsOjpMaW5rYWJsZU5lYXIpOwogICAgIH0KIAotICAg
IEFMV0FZU19JTkxJTkUgQ2FsbCB0aHJlYWRTYWZlUGF0Y2hhYmxlTmVhclRhaWxDYWxsKCkKLSAg
ICB7Ci0gICAgICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsID0gbV9hc3NlbWJsZXIubGFiZWwoKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYigpOwotICAgICAgICByZXR1cm4gQ2FsbChsYWJlbCwgQ2Fs
bDo6TGlua2FibGVOZWFyVGFpbCk7Ci0gICAgfQotCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHJl
dCgpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5yZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKaW5kZXggM2Fi
OTE5MGVmZjAxLi5lZTU2ZjBkZWFhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCkBAIC0yNjI0LDExICsyNjI0LDYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5ibHgoZGF0YVRlbXBS
ZWdpc3RlciksIENhbGw6OkxpbmthYmxlTmVhcik7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElO
RSBDYWxsIHRocmVhZFNhZmVQYXRjaGFibGVOZWFyVGFpbENhbGwoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYigpLCBDYWxsOjpMaW5rYWJsZU5lYXJUYWlsKTsKLSAg
ICB9Ci0KICAgICBBTFdBWVNfSU5MSU5FIENhbGwgY2FsbChQdHJUYWcpCiAgICAgewogICAgICAg
ICBtb3ZlRml4ZWRXaWR0aEVuY29kaW5nKFRydXN0ZWRJbW0zMigwKSwgZGF0YVRlbXBSZWdpc3Rl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyUklTQ1Y2NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlclJJU0NWNjQuaAppbmRleCBhNjJhZmIzZjI4MzcuLmQ4MTBjODFiODcwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclJJU0NW
NjQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
UklTQ1Y2NC5oCkBAIC0xOTk2LDE2ICsxOTk2LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
Q2FsbChsYWJlbCwgQ2FsbDo6TGlua2FibGVOZWFyKTsKICAgICB9CiAKLSAgICBDYWxsIHRocmVh
ZFNhZmVQYXRjaGFibGVOZWFyVGFpbENhbGwoKQotICAgIHsKLSAgICAgICAgYXV0byBsYWJlbCA9
IG1fYXNzZW1ibGVyLmxhYmVsKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm5lYXJDYWxsUGxhY2Vo
b2xkZXIoCi0gICAgICAgICAgICBbJl0gewotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmph
bEluc24oUklTQ1Y2NFJlZ2lzdGVyczo6emVybywgSW1tOjpKPDA+KCkpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIHJldHVybiBDYWxsKGxhYmVsLCBDYWxsOjpMaW5rYWJsZU5lYXJUYWlsKTsK
LSAgICB9Ci0KICAgICB2b2lkIHJldCgpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5qYWxy
SW5zbihSSVNDVjY0UmVnaXN0ZXJzOjp6ZXJvLCBSSVNDVjY0UmVnaXN0ZXJzOjp4MSwgSW1tOjpJ
PDA+KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlclg4Nl82NC5oCmluZGV4IDdhNGZiZmNhMmI3MS4uNWFkN2UyZTBkNTk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
XzY0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4Nl82NC5oCkBAIC0yOTMsMjAgKzI5Myw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBDYWxsIHRocmVhZFNhZmVQYXRjaGFibGVOZWFyVGFpbENhbGwo
KQotICAgIHsKLSAgICAgICAgY29uc3Qgc2l6ZV90IG5lYXJDYWxsT3Bjb2RlU2l6ZSA9IDE7Ci0g
ICAgICAgIGNvbnN0IHNpemVfdCBuZWFyQ2FsbFJlbGF0aXZlTG9jYXRpb25TaXplID0gc2l6ZW9m
KGludDMyX3QpOwotICAgICAgICAvLyBXZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgMzItYml0IG5l
YXIgY2FsbCBpbW1lZGlhdGUgaXMgMzItYml0IGFsaWduZWQuCi0gICAgICAgIHNpemVfdCBjb2Rl
U2l6ZSA9IG1fYXNzZW1ibGVyLmNvZGVTaXplKCk7Ci0gICAgICAgIHNpemVfdCBhbGlnbmVkU2l6
ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZjxuZWFyQ2FsbFJlbGF0aXZlTG9jYXRpb25TaXpl
Pihjb2RlU2l6ZSArIG5lYXJDYWxsT3Bjb2RlU2l6ZSk7Ci0gICAgICAgIGVtaXROb3BzKGFsaWdu
ZWRTaXplIC0gKGNvZGVTaXplICsgbmVhckNhbGxPcGNvZGVTaXplKSk7Ci0gICAgICAgIERhdGFM
YWJlbFB0ciBsYWJlbCA9IERhdGFMYWJlbFB0cih0aGlzKTsKLSAgICAgICAgQ2FsbCByZXN1bHQg
PSBuZWFyVGFpbENhbGwoKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChsYWJlbCwgZGlmZmVyZW5j
ZUJldHdlZW4obGFiZWwsIHJlc3VsdCkgPT0gKG5lYXJDYWxsT3Bjb2RlU2l6ZSArIG5lYXJDYWxs
UmVsYXRpdmVMb2NhdGlvblNpemUpKTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0K
ICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIg
c3JjLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZElt
bVB0cihkZXN0Lm1fcHRyKSwgc2NyYXRjaFJlZ2lzdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyQ29kZS5jcHAKaW5kZXggOGNmMTg2Y2QzZTU1Li43YmUyMDY1NmRlOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQ29kZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmNwcApAQCAtNDUsMTIgKzQ1LDgg
QEAgY29uc3QgY2hhciogY29uc3QgdGllck5hbWUgPSAiQWlyICI7CiBzdGF0aWMgdm9pZCBkZWZh
dWx0UHJvbG9ndWVHZW5lcmF0b3IoQ0NhbGxIZWxwZXJzJiBqaXQsIENvZGUmIGNvZGUpCiB7CiAg
ICAgaml0LmVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0KLSAgICAvLyBOT1RFOiBvbiBBUk02NCwg
aWYgdGhlIGNhbGxlZSBzYXZlcyBoYXZlIGJpZ2dlciBvZmZzZXRzIGR1ZSB0byBhIHBvdGVudGlh
bCB0YWlsIGNhbGwsCi0gICAgLy8gdGhlIG1hY3JvIGFzc2VtYmxlciBtaWdodCBhc3NlcnQgc2Ny
YXRjaCByZWdpc3RlciB1c2FnZSBvbiBzdG9yZSBvcGVyYXRpb25zIGVtaXR0ZWQgYnkgZW1pdFNh
dmUuCi0gICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlSWYgYWxsb3dTY3JhdGNoKGpp
dCwgaXNBUk02NCgpIHx8IGlzQVJNNjRFKCkgfHwgaXNBUk0oKSk7Ci0KICAgICBpZiAoY29kZS5m
cmFtZVNpemUoKSkgeworICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2VJZiBh
bGxvd1NjcmF0Y2goaml0LCBpc0FSTTY0KCkgfHwgaXNBUk0oKSk7CiAgICAgICAgIGppdC5zdWJQ
dHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihjb2RlLmZyYW1lU2l6ZSgpKSwgTWFjcm9B
c3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgppbmRleCBiYzBkM2Y5Yzcw
MmQuLjVlOTU1ZTExOGEyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0LnJiCkBAIC0xNTA4LDEwICsxNTA4LDYgQEAgb3AgOndhc21fdHJhbXBvbGlu
ZV93YXNtX2NhbGxfaW5kaXJlY3QKIG9wIDp3YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX2luZGly
ZWN0X25vX3Rscwogb3AgOndhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmCiBvcCA6d2FzbV90
cmFtcG9saW5lX3dhc21fY2FsbF9yZWZfbm9fdGxzCi1vcCA6d2FzbV90cmFtcG9saW5lX3dhc21f
dGFpbF9jYWxsCi1vcCA6d2FzbV90cmFtcG9saW5lX3dhc21fdGFpbF9jYWxsX25vX3Rscwotb3Ag
Ondhc21fdHJhbXBvbGluZV93YXNtX3RhaWxfY2FsbF9pbmRpcmVjdAotb3AgOndhc21fdHJhbXBv
bGluZV93YXNtX3RhaWxfY2FsbF9pbmRpcmVjdF9ub190bHMKIAogZW5kX3NlY3Rpb24gOk5hdGl2
ZUhlbHBlcnMKIApAQCAtMTcwOCwyMiArMTcwNCw2IEBAIG9wIDpjYWxsX25vX3RscywKICAgICAg
ICAgbnVtYmVyT2ZTdGFja0FyZ3M6IHVuc2lnbmVkLAogICAgIH0KIAotb3AgOnRhaWxfY2FsbCwK
LSAgICBhcmdzOiB7Ci0gICAgICAgIGZ1bmN0aW9uSW5kZXg6IHVuc2lnbmVkLAotICAgICAgICBz
dGFja09mZnNldDogdW5zaWduZWQsCi0gICAgICAgIG51bWJlck9mQ2FsbGVlU3RhY2tBcmdzOiB1
bnNpZ25lZCwKLSAgICAgICAgbnVtYmVyT2ZDYWxsZXJTdGFja0FyZ3M6IHVuc2lnbmVkLAotICAg
IH0KLQotb3AgOnRhaWxfY2FsbF9ub190bHMsCi0gICAgYXJnczogewotICAgICAgICBmdW5jdGlv
bkluZGV4OiB1bnNpZ25lZCwKLSAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAgICAg
ICBudW1iZXJPZkNhbGxlZVN0YWNrQXJnczogdW5zaWduZWQsCi0gICAgICAgIG51bWJlck9mQ2Fs
bGVyU3RhY2tBcmdzOiB1bnNpZ25lZCwKLSAgICB9Ci0KIG9wIDpjYWxsX2luZGlyZWN0LAogICAg
IGFyZ3M6IHsKICAgICAgICAgZnVuY3Rpb25JbmRleDogVmlydHVhbFJlZ2lzdGVyLApAQCAtMTc0
MiwyNiArMTcyMiw2IEBAIG9wIDpjYWxsX2luZGlyZWN0X25vX3RscywKICAgICAgICAgdGFibGVJ
bmRleDogdW5zaWduZWQsCiAgICAgfQogCi1vcCA6dGFpbF9jYWxsX2luZGlyZWN0LAotICAgIGFy
Z3M6IHsKLSAgICAgICAgZnVuY3Rpb25JbmRleDogVmlydHVhbFJlZ2lzdGVyLAotICAgICAgICBz
aWduYXR1cmVJbmRleDogdW5zaWduZWQsCi0gICAgICAgIHN0YWNrT2Zmc2V0OiB1bnNpZ25lZCwK
LSAgICAgICAgbnVtYmVyT2ZDYWxsZWVTdGFja0FyZ3M6IHVuc2lnbmVkLAotICAgICAgICBudW1i
ZXJPZkNhbGxlclN0YWNrQXJnczogdW5zaWduZWQsCi0gICAgICAgIHRhYmxlSW5kZXg6IHVuc2ln
bmVkLAotICAgIH0KLQotb3AgOnRhaWxfY2FsbF9pbmRpcmVjdF9ub190bHMsCi0gICAgYXJnczog
ewotICAgICAgICBmdW5jdGlvbkluZGV4OiBWaXJ0dWFsUmVnaXN0ZXIsCi0gICAgICAgIHNpZ25h
dHVyZUluZGV4OiB1bnNpZ25lZCwKLSAgICAgICAgc3RhY2tPZmZzZXQ6IHVuc2lnbmVkLAotICAg
ICAgICBudW1iZXJPZkNhbGxlZVN0YWNrQXJnczogdW5zaWduZWQsCi0gICAgICAgIG51bWJlck9m
Q2FsbGVyU3RhY2tBcmdzOiB1bnNpZ25lZCwKLSAgICAgICAgdGFibGVJbmRleDogdW5zaWduZWQs
Ci0gICAgfQotCiBvcCA6Y2FsbF9yZWYsCiAgICAgYXJnczogewogICAgICAgICBmdW5jdGlvblJl
ZmVyZW5jZTogVmlydHVhbFJlZ2lzdGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9B
c3NlbWJseUhlbHBlcnMuY3BwCmluZGV4IGYyMmEwMzkyNDY1MC4uZWI4ODY5MDFiNDk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuY3BwCkBAIC0xMjg3
LDEwICsxMjg3LDEwIEBAIHZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0U2F2ZShjb25zdCBSZWdp
c3RlckF0T2Zmc2V0TGlzdCYgbGlzdCkKICAgICBzcG9vbGVyLmZpbmFsaXplRlBSKCk7CiB9CiAK
LXZvaWQgQXNzZW1ibHlIZWxwZXJzOjplbWl0UmVzdG9yZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0
TGlzdCYgbGlzdCwgR1BSUmVnIGJhc2VHUFIpCit2b2lkIEFzc2VtYmx5SGVscGVyczo6ZW1pdFJl
c3RvcmUoY29uc3QgUmVnaXN0ZXJBdE9mZnNldExpc3QmIGxpc3QpCiB7CiAgICAgSklUX0NPTU1F
TlQoKnRoaXMsICJlbWl0UmVzdG9yZSAiLCBsaXN0KTsKLSAgICBMb2FkUmVnU3Bvb2xlciBzcG9v
bGVyKCp0aGlzLCBiYXNlR1BSKTsKKyAgICBMb2FkUmVnU3Bvb2xlciBzcG9vbGVyKCp0aGlzLCBm
cmFtZVBvaW50ZXJSZWdpc3Rlcik7CiAKICAgICBzaXplX3QgcmVnaXN0ZXJDb3VudCA9IGxpc3Qu
cmVnaXN0ZXJDb3VudCgpOwogICAgIHNpemVfdCBpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDIxODkyOTc5M2JhNi4uNTYyNzAzMGFmOTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTMz
Nyw3ICszMzcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBlbWl0U2F2ZShjb25zdCBS
ZWdpc3RlckF0T2Zmc2V0TGlzdCYpOwotICAgIHZvaWQgZW1pdFJlc3RvcmUoY29uc3QgUmVnaXN0
ZXJBdE9mZnNldExpc3QmLCBHUFJSZWcgPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Cisg
ICAgdm9pZCBlbWl0UmVzdG9yZShjb25zdCBSZWdpc3RlckF0T2Zmc2V0TGlzdCYpOwogCiAgICAg
dm9pZCBlbWl0U2F2ZUNhbGxlZVNhdmVzRm9yKGNvbnN0IFJlZ2lzdGVyQXRPZmZzZXRMaXN0KiBj
YWxsZWVTYXZlcyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KaW5kZXggNzY2NWFkZjZhMWQxLi5jZWVkZTk5ZWI0Yjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KQEAgLTI3NzYsMTggKzI3NzYsNiBAQCBfd2FzbV90cmFtcG9saW5lX3dhc21fY2Fs
bF9pbmRpcmVjdF93aWRlMzI6CiBfd2FzbV90cmFtcG9saW5lX3dhc21fY2FsbF9pbmRpcmVjdF9u
b190bHNfd2lkZTMyOgogX3dhc21fdHJhbXBvbGluZV93YXNtX2NhbGxfcmVmX3dpZGUzMjoKIF93
YXNtX3RyYW1wb2xpbmVfd2FzbV9jYWxsX3JlZl9ub190bHNfd2lkZTMyOgotX3dhc21fdHJhbXBv
bGluZV93YXNtX3RhaWxfY2FsbDoKLV93YXNtX3RyYW1wb2xpbmVfd2FzbV90YWlsX2NhbGxfbm9f
dGxzOgotX3dhc21fdHJhbXBvbGluZV93YXNtX3RhaWxfY2FsbF9pbmRpcmVjdDoKLV93YXNtX3Ry
YW1wb2xpbmVfd2FzbV90YWlsX2NhbGxfaW5kaXJlY3Rfbm9fdGxzOgotX3dhc21fdHJhbXBvbGlu
ZV93YXNtX3RhaWxfY2FsbF93aWRlMTY6Ci1fd2FzbV90cmFtcG9saW5lX3dhc21fdGFpbF9jYWxs
X25vX3Rsc193aWRlMTY6Ci1fd2FzbV90cmFtcG9saW5lX3dhc21fdGFpbF9jYWxsX2luZGlyZWN0
X3dpZGUxNjoKLV93YXNtX3RyYW1wb2xpbmVfd2FzbV90YWlsX2NhbGxfaW5kaXJlY3Rfbm9fdGxz
X3dpZGUxNjoKLV93YXNtX3RyYW1wb2xpbmVfd2FzbV90YWlsX2NhbGxfd2lkZTMyOgotX3dhc21f
dHJhbXBvbGluZV93YXNtX3RhaWxfY2FsbF9ub190bHNfd2lkZTMyOgotX3dhc21fdHJhbXBvbGlu
ZV93YXNtX3RhaWxfY2FsbF9pbmRpcmVjdF93aWRlMzI6Ci1fd2FzbV90cmFtcG9saW5lX3dhc21f
dGFpbF9jYWxsX2luZGlyZWN0X25vX3Rsc193aWRlMzI6CiAgICAgY3Jhc2goKQogCiBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJBc3NlbWJseS5hc20gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvV2ViQXNzZW1ibHkuYXNtCmluZGV4IDRlYjhlMGZm
NjlhNy4uNWViMTIzNTg3ZmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvV2ViQXNzZW1ibHkuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9XZWJB
c3NlbWJseS5hc20KQEAgLTI3Myw1MyArMjczLDYgQEAgbWFjcm8gcmVzdG9yZUNhbGxlZVNhdmVz
VXNlZEJ5V2FzbSgpCiAgICAgZW5kCiBlbmQKIAotbWFjcm8gcHJlc2VydmVHUFJzVXNlZEJ5VGFp
bENhbGwoZ3ByMCwgZ3ByMSkKLSAgICBpZiBBUk02NCBvciBBUk02NEUKLSAgICAgICAgc3RvcmVw
YWlycSBncHIwLCBncHIxLCBDb2RlQmxvY2tbc3BdCi0gICAgZWxzaWYgQVJNdjcgb3IgWDg2XzY0
IG9yIFJJU0NWNjQKLSAgICAgICAgc3RvcmVwIGdwcjAsIENvZGVCbG9ja1tzcF0KLSAgICAgICAg
c3RvcmVwIGdwcjEsIENhbGxlZVtzcF0KLSAgICBlbHNlCi0gICAgICAgIGVycm9yCi0gICAgZW5k
Ci1lbmQKLQotbWFjcm8gcmVzdG9yZUdQUnNVc2VkQnlUYWlsQ2FsbChncHIwLCBncHIxKQotICAg
IGlmIEFSTTY0IG9yIEFSTTY0RQotICAgICAgICBsb2FkcGFpcnEgQ29kZUJsb2NrW3NwXSwgZ3By
MCwgZ3ByMQotICAgIGVsc2lmIEFSTXY3IG9yIFg4Nl82NCBvciBSSVNDVjY0Ci0gICAgICAgIGxv
YWRwIENvZGVCbG9ja1tzcF0sIGdwcjAKLSAgICAgICAgbG9hZHAgQ2FsbGVlW3NwXSwgZ3ByMQot
ICAgIGVsc2UKLSAgICAgICAgZXJyb3IKLSAgICBlbmQKLWVuZAotCi1tYWNybyBwcmVzZXJ2ZVJl
dHVybkFkZHJlc3Moc2NyYXRjaCkKLWlmIFg4Nl82NAotICAgIGxvYWRwIFJldHVyblBDW2Nmcl0s
IHNjcmF0Y2gKLSAgICBzdG9yZXAgc2NyYXRjaCwgUmV0dXJuUENbc3BdCi1lbHNpZiBBUk02NCBv
ciBBUk02NEUgb3IgQVJNdjcgb3IgUklTQ1Y2NAotICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIGxy
Ci1lbmQKLWlmIEFSTTY0RQotICAgIGFkZHAgMTYsIGNmciwgc2NyYXRjaAotICAgIHVudGFnUmV0
dXJuQWRkcmVzcyBzY3JhdGNoCi1lbmQKLWVuZAotCi1tYWNybyB1c2VQcmV2aW91c0ZyYW1lKCkK
LSAgICBpZiBBUk02NCBvciBBUk02NEUKLSAgICAgICAgbG9hZHBhaXJxIC1QdHJTaXplW2Nmcl0s
IFBCLCBjZnIKLSAgICBlbHNpZiBBUk12NyBvciBYODZfNjQgb3IgUklTQ1Y2NAotICAgICAgICBs
b2FkcCAtUHRyU2l6ZVtjZnJdLCBQQgotICAgICAgICBsb2FkcCBbY2ZyXSwgY2ZyCi0gICAgZWxz
ZQotICAgICAgICBlcnJvcgotICAgIGVuZAotZW5kCi0KLQogbWFjcm8gbG9hZFdhc21JbnN0YW5j
ZUZyb21UTFNUbyhyZWcpCiBpZiAgSEFWRV9GQVNUX1RMUwogICAgIHRsc19sb2FkcCBXVEZfV0FT
TV9DT05URVhUX0tFWSwgcmVnCkBAIC0xMTkzLDE2MCArMTE0Niw2IEBAIGVuZAogICAgICAgICBl
bmQpCiBlbmQKIAotbWFjcm8gc2xvd1BhdGhGb3JXYXNtVGFpbENhbGwoY3R4LCBzbG93UGF0aCwg
c3RvcmVXYXNtSW5zdGFuY2UpCi0gICAgY2FsbFdhc21DYWxsU2xvd1BhdGgoCi0gICAgICAgIHNs
b3dQYXRoLAotICAgICAgICAjIGNhbGxlZSBpcyByMCBhbmQgdGFyZ2V0V2FzbUluc3RhbmNlIGlz
IHIxCi0gICAgICAgIG1hY3JvIChjYWxsZWUsIHRhcmdldFdhc21JbnN0YW5jZSkKLSAgICAgICAg
ICAgIG1vdmUgY2FsbGVlLCB3czAKLQotICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKLQotICAgICAgICAgICAgIyB0aGUgY2Fs
bCBtaWdodCB0aHJvdyAoZS5nLiBpbmRpcmVjdCBjYWxsIHdpdGggYmFkIHNpZ25hdHVyZSkKLSAg
ICAgICAgICAgIGJ0cHogdGFyZ2V0V2FzbUluc3RhbmNlLCAudGhyb3cKLQotICAgICAgICAgICAg
d2dldHUoY3R4LCBtX3N0YWNrT2Zmc2V0LCB3czEpCi0gICAgICAgICAgICBtdWxpIFNsb3RTaXpl
LCB3czEKLQotaWYgQVJNdjcKLSAgICAgICAgICAgIHN1YnAgY2ZyLCB3czEsIHdzMQotICAgICAg
ICAgICAgbW92ZSB3czEsIHNwCi1lbHNlCi0gICAgICAgICAgICBzdWJwIGNmciwgd3MxLCBzcAot
ZW5kCi0KLSAgICAgICAgICAgIHN0b3JlV2FzbUluc3RhbmNlKHRhcmdldFdhc21JbnN0YW5jZSkK
LSAgICAgICAgICAgIHJlbG9hZE1lbW9yeVJlZ2lzdGVyc0Zyb21JbnN0YW5jZSh0YXJnZXRXYXNt
SW5zdGFuY2UsIHdhMCwgd2ExKQotCi0gICAgICAgICAgICB3Z2V0dShjdHgsIG1fbnVtYmVyT2ZD
YWxsZWVTdGFja0FyZ3MsIHdzMSkKLQotICAgICAgICAgICAgIyBXZSBtYWtlIHN1cmUgYXJndW1l
bnRzIHJlZ2lzdGVycyBhcmUgbG9hZGVkIGZyb20gdGhlIHN0YWNrIGJlZm9yZSBzaHVmZmxpbmcg
dGhlIGZyYW1lLgotaWYgQVJNNjQgb3IgQVJNNjRFCi0gICAgICAgICAgICBsZWFwIFtzcCwgd3Mx
LCA4XSwgd3MxCi0gICAgICAgICAgICBmb3JFYWNoQXJndW1lbnRKU1IobWFjcm8gKG9mZnNldCwg
Z3ByMSwgZ3ByMikKLSAgICAgICAgICAgICAgICBsb2FkcGFpcnEgQ2FsbEZyYW1lSGVhZGVyU2l6
ZSArIDggKyBvZmZzZXRbd3MxXSwgZ3ByMSwgZ3ByMgotICAgICAgICAgICAgZW5kKQotZWxzaWYg
SlNWQUxVRTY0Ci0gICAgICAgICAgICBmb3JFYWNoQXJndW1lbnRKU1IobWFjcm8gKG9mZnNldCwg
Z3ByKQotICAgICAgICAgICAgICAgIGxvYWRxIENhbGxGcmFtZUhlYWRlclNpemUgKyA4ICsgb2Zm
c2V0W3NwLCB3czEsIDhdLCBncHIKLSAgICAgICAgICAgIGVuZCkKLWVsc2UKLSAgICAgICAgICAg
IGZvckVhY2hBcmd1bWVudEpTUihtYWNybyAob2Zmc2V0LCBncHJNc3csIGdwTHN3KQotICAgICAg
ICAgICAgICAgIGxvYWQyaWEgQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIDggKyBvZmZzZXRbc3AsIHdz
MSwgOF0sIGdwTHN3LCBncHJNc3cKLSAgICAgICAgICAgIGVuZCkKLWVuZAotaWYgQVJNNjQgb3Ig
QVJNNjRFCi0gICAgICAgICAgICBmb3JFYWNoQXJndW1lbnRGUFIobWFjcm8gKG9mZnNldCwgZnBy
MSwgZnByMikKLSAgICAgICAgICAgICAgICBsb2FkcGFpcmQgQ2FsbEZyYW1lSGVhZGVyU2l6ZSAr
IDggKyBvZmZzZXRbd3MxXSwgZnByMSwgZnByMgotICAgICAgICAgICAgZW5kKQotZWxzZQotICAg
ICAgICAgICAgZm9yRWFjaEFyZ3VtZW50RlBSKG1hY3JvIChvZmZzZXQsIGZwcikKLSAgICAgICAg
ICAgICAgICBsb2FkZCBDYWxsRnJhbWVIZWFkZXJTaXplICsgOCArIG9mZnNldFtzcCwgd3MxLCA4
XSwgZnByCi0gICAgICAgICAgICBlbmQpCi1lbmQKLQotICAgICAgICAgICAgIyBXZSBuZWVkIFBD
IHRvIGxvYWQgaW5mb3JtYXRpb24gZnJvbSB0aGUgY29udGV4dAotICAgICAgICAgICAgIyBhbmQg
dHdvIHNjcmF0Y2ggcmVnaXN0ZXJzIHRvIHBlcmZvcm0gdGhlIGNvcHkuCi0KLSAgICAgICAgICAg
IHByZXNlcnZlR1BSc1VzZWRCeVRhaWxDYWxsKHdhMCwgd2ExKQotCi0gICAgICAgICAgICAjIFBy
ZXNlcnZlIFBDCi0gICAgICAgICAgICBtb3ZlIFBDLCB3czEKLQotICAgICAgICAgICAgIyBSZWxv
YWQgUEMKLSAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCi0KLSAgICAgICAgICAgICMgQ29tcHV0ZSBvbGQgc3RhY2sgc2l6ZQot
ICAgICAgICAgICAgd2dldHUoY3R4LCBtX251bWJlck9mQ2FsbGVyU3RhY2tBcmdzLCB3YTApCi0g
ICAgICAgICAgICBtdWxpIFNsb3RTaXplLCB3YTAKLSAgICAgICAgICAgIGFkZGkgQ2FsbEZyYW1l
SGVhZGVyU2l6ZSArIFN0YWNrQWxpZ25tZW50IC0gMSwgd2EwCi0gICAgICAgICAgICBhbmRpIH5T
dGFja0FsaWdubWVudE1hc2ssIHdhMAotCi0gICAgICAgICAgICAjIENvbXB1dGUgbmV3IHN0YWNr
IHNpemUKLSAgICAgICAgICAgIHdnZXR1KGN0eCwgbV9udW1iZXJPZkNhbGxlZVN0YWNrQXJncywg
d2ExKQotICAgICAgICAgICAgbXVsaSBTbG90U2l6ZSwgd2ExCi0gICAgICAgICAgICBhZGRpIENh
bGxGcmFtZUhlYWRlclNpemUgKyBTdGFja0FsaWdubWVudCAtIDEsIHdhMQotICAgICAgICAgICAg
YW5kaSB+U3RhY2tBbGlnbm1lbnRNYXNrLCB3YTEKLQotICAgICAgICAgICAgIyBDb21wdXRlIG5l
dyBzdGFjayBwb2ludGVyCi0gICAgICAgICAgICBhZGRwIGNmciwgd2EwCi0gICAgICAgICAgICBz
dWJwIHdhMSAsIHdhMAotCi0gICAgICAgICAgICAjIFJlc3RvcmUgUEMKLSAgICAgICAgICAgIG1v
dmUgd3MxLCBQQwotCi0gICAgICAgICAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3Mod3MxKQotICAg
ICAgICAgICAgdXNlUHJldmlvdXNGcmFtZSgpCi0KLWlmIEFSTXY3Ci0gICAgICAgICAgICBhZGRp
IFNsb3RTaXplLCB3YTEKLWVuZAotICAgICAgICAgICAgLmNvcHlMb29wOgotaWYgSlNWQUxVRTY0
Ci0gICAgICAgICAgICAgc3ViaSBNYWNoaW5lUmVnaXN0ZXJTaXplLCB3YTEKLSAgICAgICAgICAg
ICBsb2FkcSBbc3AsIHdhMSwgMV0sIHdzMQotICAgICAgICAgICAgIHN0b3JlcSB3czEsIFt3YTAs
IHdhMSwgMV0KLWVsc2UKLSAgICAgICAgICAgICBzdWJpIFB0clNpemUsIHdhMQotICAgICAgICAg
ICAgIGxvYWRwIFtzcCwgd2ExLCAxXSwgd3MxCi0gICAgICAgICAgICAgc3RvcmVwIHdzMSwgW3dh
MCwgd2ExLCAxXQotZW5kCi0gICAgICAgICAgICAgYnRpbnogd2ExLCAuY29weUxvb3AKLQotICAg
ICAgICAgICAgbW92ZSB3YTAsIHdzMQotICAgICAgICAgICAgcmVzdG9yZUdQUnNVc2VkQnlUYWls
Q2FsbCh3YTAsIHdhMSkKLQotICAgICAgICAgICAgIyBXZSBhcmUgZG9uZSBjb3B5aW5nIHRoZSBj
YWxsZWUncyBzdGFjayBhcmd1bWVudHMgdG8gdGhlaXIgZmluYWwgcG9zaXRpb24uCi0gICAgICAg
ICAgICAjIHdzMSBpcyB0aGUgbmV3IHN0YWNrIHBvaW50ZXIuCi0gICAgICAgICAgICAjIGNmciBp
cyB0aGUgY2FsbGVyJ3MgY2FsbGVyJ3MgZnJhbWUgcG9pbnRlci4KLQotaWYgWDg2XzY0Ci0gICAg
ICAgICAgICBhZGRwIFB0clNpemUsIHdzMSwgc3AKLWVsc2lmIEFSTXY3Ci0gICAgICAgICAgICBh
ZGRwIENhbGxlckZyYW1lQW5kUENTaXplLCB3czEKLSAgICAgICAgICAgIG1vdmUgd3MxLCBzcAot
ZWxzaWYgQVJNNjQgb3IgQVJNNjRFIG9yIFJJU0NWNjQKLSAgICAgICAgICAgIGFkZHAgQ2FsbGVy
RnJhbWVBbmRQQ1NpemUsIHdzMSwgc3AKLWVsc2UKLSAgICAgICAgICAgIGVycm9yCi1lbmQKLQot
ICAgICAgICAgICAgY3R4KG1hY3JvKG9wY29kZU5hbWUsIG9wY29kZVN0cnVjdCwgc2l6ZSkKLSAg
ICAgICAgICAgICAgICBtYWNybyBqdW1wTmFycm93KCkKLSAgICAgICAgICAgICAgICAgICAgaWYg
QVJNNjRFCi0gICAgICAgICAgICAgICAgICAgICAgICBsZWFwIEpTQ0NvbmZpZyArIGNvbnN0ZXhw
ciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChjb25zdGV4cHIgR2F0ZTo6JW9wY29k
ZU5hbWUlKSAqIFB0clNpemUsIHdzMQotICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFd
LCBOYXRpdmVUb0pJVEdhdGVQdHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKLSAgICAgICAg
ICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9w
Y29kZU5hbWUlOgotICAgICAgICAgICAgICAgICAgICBqbXAgd3MwLCBKU0VudHJ5U2xvd1BhdGhQ
dHJUYWcKLSAgICAgICAgICAgICAgICBlbmQKLQotICAgICAgICAgICAgICAgIG1hY3JvIGp1bXBX
aWRlMTYoKQotICAgICAgICAgICAgICAgICAgICBpZiBBUk02NEUKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxlYXAgSlNDQ29uZmlnICsgY29uc3RleHByIEpTQzo6b2Zmc2V0T2ZKU0NDb25maWdH
YXRlTWFwICsgKGNvbnN0ZXhwciBHYXRlOjolb3Bjb2RlTmFtZSVfd2lkZTE2KSAqIFB0clNpemUs
IHdzMQotICAgICAgICAgICAgICAgICAgICAgICAgam1wIFt3czFdLCBOYXRpdmVUb0pJVEdhdGVQ
dHJUYWcgIyBKU0VudHJ5U2xvd1BhdGhQdHJUYWcKLSAgICAgICAgICAgICAgICAgICAgZW5kCi0g
ICAgICAgICAgICAgICAgICAgIF93YXNtX3RyYW1wb2xpbmVfJW9wY29kZU5hbWUlX3dpZGUxNjoK
LSAgICAgICAgICAgICAgICAgICAgam1wIHdzMCwgSlNFbnRyeVNsb3dQYXRoUHRyVGFnCi0gICAg
ICAgICAgICAgICAgZW5kCi0KLSAgICAgICAgICAgICAgICBtYWNybyBqdW1wV2lkZTMyKCkKLSAg
ICAgICAgICAgICAgICAgICAgaWYgQVJNNjRFCi0gICAgICAgICAgICAgICAgICAgICAgICBsZWFw
IEpTQ0NvbmZpZyArIGNvbnN0ZXhwciBKU0M6Om9mZnNldE9mSlNDQ29uZmlnR2F0ZU1hcCArIChj
b25zdGV4cHIgR2F0ZTo6JW9wY29kZU5hbWUlX3dpZGUzMikgKiBQdHJTaXplLCB3czEKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGptcCBbd3MxXSwgTmF0aXZlVG9KSVRHYXRlUHRyVGFnICMgSlNF
bnRyeVNsb3dQYXRoUHRyVGFnCi0gICAgICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAg
ICAgICAgICBfd2FzbV90cmFtcG9saW5lXyVvcGNvZGVOYW1lJV93aWRlMzI6Ci0gICAgICAgICAg
ICAgICAgICAgIGptcCB3czAsIEpTRW50cnlTbG93UGF0aFB0clRhZwotICAgICAgICAgICAgICAg
IGVuZAotCi0gICAgICAgICAgICAgICAgc2l6ZShqdW1wTmFycm93LCBqdW1wV2lkZTE2LCBqdW1w
V2lkZTMyLCBtYWNybyAoZ2VuKSBnZW4oKSBlbmQpCi0gICAgICAgICAgICBlbmQpCi0gICAgLnRo
cm93OgotICAgIHJlc3RvcmVTdGF0ZUFmdGVyQ0NhbGwoKQotICAgIGRpc3BhdGNoKGN0eCkKLSAg
ICBlbmQpCi1lbmQKLQogdW5wcmVmaXhlZFdhc21PcCh3YXNtX2NhbGwsIFdhc21DYWxsLCBtYWNy
byhjdHgpCiAgICAgc2xvd1BhdGhGb3JXYXNtQ2FsbChjdHgsIF9zbG93X3BhdGhfd2FzbV9jYWxs
LCBzdG9yZVdhc21JbnN0YW5jZVRvVExTKQogZW5kKQpAQCAtMTM3MSwyMiArMTE3MCw2IEBAIHdh
c21PcChjYWxsX3JlZl9ub190bHMsIFdhc21DYWxsUmVmTm9UbHMsIG1hY3JvKGN0eCkKICAgICBz
bG93UGF0aEZvcldhc21DYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX2NhbGxfcmVmX25vX3Rscywg
bWFjcm8odGFyZ2V0SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5zdGFuY2UsIHdhc21JbnN0YW5jZSBl
bmQpCiBlbmQpCiAKLXdhc21PcCh0YWlsX2NhbGwsIFdhc21UYWlsQ2FsbCwgbWFjcm8oY3R4KQot
ICAgIHNsb3dQYXRoRm9yV2FzbVRhaWxDYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNtX3RhaWxfY2Fs
bCwgc3RvcmVXYXNtSW5zdGFuY2VUb1RMUykKLWVuZCkKLQotd2FzbU9wKHRhaWxfY2FsbF9ub190
bHMsIFdhc21UYWlsQ2FsbE5vVGxzLCBtYWNybyhjdHgpCi0gICAgc2xvd1BhdGhGb3JXYXNtVGFp
bENhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fdGFpbF9jYWxsX25vX3RscywgbWFjcm8odGFyZ2V0
SW5zdGFuY2UpIG1vdmUgdGFyZ2V0SW5zdGFuY2UsIHdhc21JbnN0YW5jZSBlbmQpCi1lbmQpCi0K
LXdhc21PcCh0YWlsX2NhbGxfaW5kaXJlY3QsIFdhc21UYWlsQ2FsbEluZGlyZWN0LCBtYWNybyhj
dHgpCi0gICAgc2xvd1BhdGhGb3JXYXNtVGFpbENhbGwoY3R4LCBfc2xvd19wYXRoX3dhc21fdGFp
bF9jYWxsX2luZGlyZWN0LCBzdG9yZVdhc21JbnN0YW5jZVRvVExTKQotZW5kKQotCi13YXNtT3Ao
dGFpbF9jYWxsX2luZGlyZWN0X25vX3RscywgV2FzbVRhaWxDYWxsSW5kaXJlY3ROb1RscywgbWFj
cm8oY3R4KQotICAgIHNsb3dQYXRoRm9yV2FzbVRhaWxDYWxsKGN0eCwgX3Nsb3dfcGF0aF93YXNt
X3RhaWxfY2FsbF9pbmRpcmVjdF9ub190bHMsIG1hY3JvKHRhcmdldEluc3RhbmNlKSBtb3ZlIHRh
cmdldEluc3RhbmNlLCB3YXNtSW5zdGFuY2UgZW5kKQotZW5kKQotCiB3YXNtT3AoY3VycmVudF9t
ZW1vcnksIFdhc21DdXJyZW50TWVtb3J5LCBtYWNybyhjdHgpCiAgICAgbG9hZHAgV2FzbTo6SW5z
dGFuY2U6Om1fbWVtb3J5W3dhc21JbnN0YW5jZV0sIHQwCiAgICAgbG9hZHAgV2FzbTo6TWVtb3J5
OjptX2hhbmRsZVt0MF0sIHQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zTGlzdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
c0xpc3QuaAppbmRleCA3NThiMDVhZGM0ZDkuLjExNjI2ZTU3MjU5YyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01NjAsNyArNTYwLDYgQEAgYm9v
bCBjYW5Vc2VXZWJBc3NlbWJseUZhc3RNZW1vcnkoKTsKICAgICB2KEJvb2wsIHVzZVdlYkFzc2Vt
Ymx5R0MsIGZhbHNlLCBOb3JtYWwsICJBbGxvdyBnYyB0eXBlcyBmcm9tIHRoZSB3YXNtIGdjIHBy
b3Bvc2FsLiIpIFwKICAgICB2KEJvb2wsIGZvcmNlQWxsRnVuY3Rpb25zVG9Vc2VTSU1ELCBmYWxz
ZSwgTm9ybWFsLCAiRm9yY2UgYWxsIGZ1bmN0aW9ucyB0byBhY3QgY29uc2VydmF0aXZlbHkgdy5y
LnQgZnAvdmVjdG9yIHJlZ2lzdGVycyBmb3IgdGVzdGluZy4iKSBcCiAgICAgdihCb29sLCB1c2VX
ZWJBc3NlbWJseVNJTUQsIGlzQVJNNjQoKSwgTm9ybWFsLCAiQWxsb3cgdGhlIG5ldyBzaW1kIGlu
c3RydWN0aW9ucyBhbmQgdHlwZXMgZnJvbSB0aGUgd2FzbSBzaW1kIHNwZWMuIikgXAotICAgIHYo
Qm9vbCwgdXNlV2ViQXNzZW1ibHlUYWlsQ2FsbHMsIGZhbHNlLCBOb3JtYWwsICJBbGxvdyB0aGUg
bmV3IGluc3RydWN0aW9ucyBmcm9tIHRoZSB3YXNtIHRhaWwgY2FsbHMgc3BlYy4iKSBcCiAKIAog
ZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IzMl82NC5jcHAKaW5kZXggN2Q0NjA0NzY4ODk0Li4z
YzJiZWEzNWNiY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21B
aXJJUkdlbmVyYXRvcjMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtQWlySVJHZW5lcmF0b3IzMl82NC5jcHAKQEAgLTI2MSw4ICsyNjEsNyBAQCBwdWJsaWM6CiAg
ICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkUmV0aHJvdyh1bnNpZ25lZCwg
Q29udHJvbFR5cGUmKTsKIAogICAgIC8vIENhbGxzCi0gICAgQ2FsbFBhdGNocG9pbnREYXRhIFdB
Uk5fVU5VU0VEX1JFVFVSTiBlbWl0Q2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayosIEIzOjpUeXBl
LCBjb25zdCBSZXN1bHRMaXN0JiwgY29uc3QgVmVjdG9yPFR5cGVkVG1wPiYgdG1wQXJncywgY29u
c3QgQ2FsbEluZm9ybWF0aW9uJiwgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiBwYXRjaEFyZ3MgPSB7
IH0pOwotICAgIENhbGxQYXRjaHBvaW50RGF0YSBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdFRhaWxD
YWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKiwgY29uc3QgQ2hlY2tlZDxpbnQzMl90PiYgdGFpbENh
bGxTdGFja09mZnNldEZyb21GUCwgY29uc3QgVmVjdG9yPEFyZ3VtZW50TG9jYXRpb24+JiwgY29u
c3QgVmVjdG9yPFR5cGVkVG1wPiYgdG1wQXJncywgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiBwYXRj
aEFyZ3MgPSB7IH0pOworICAgIHN0ZDo6cGFpcjxCMzo6UGF0Y2hwb2ludFZhbHVlKiwgUGF0Y2hw
b2ludEV4Y2VwdGlvbkhhbmRsZT4gV0FSTl9VTlVTRURfUkVUVVJOIGVtaXRDYWxsUGF0Y2hwb2lu
dChCYXNpY0Jsb2NrKiwgY29uc3QgVHlwZURlZmluaXRpb24mLCBjb25zdCBSZXN1bHRMaXN0JiBy
ZXN1bHRzLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBWZWN0b3I8Q29uc3Ry
YWluZWRUbXA+IGV4dHJhQXJncyA9IHsgfSk7CiAKICAgICBQYXJ0aWFsUmVzdWx0IGFkZFNoaWZ0
KFR5cGUsIEIzOjpBaXI6Ok9wY29kZSwgRXhwcmVzc2lvblR5cGUgdmFsdWUsIEV4cHJlc3Npb25U
eXBlIHNoaWZ0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsKICAgICBQYXJ0aWFsUmVzdWx0IGFk
ZFNoaWZ0NjQoQjM6OkFpcjo6T3Bjb2RlLCBFeHByZXNzaW9uVHlwZSB2YWx1ZSwgRXhwcmVzc2lv
blR5cGUgc2hpZnQsIEV4cHJlc3Npb25UeXBlJiByZXN1bHQpOwpAQCAtMTExNywzMSArMTExNiwz
NCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yMzI6OmFkZFJldGhyb3codW5zaWduZWQsIENvbnRyb2xU
eXBlJiBkYXRhKSAtPiBQYXJ0aWFsUmVzdWx0CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotYXV0byBB
aXJJUkdlbmVyYXRvcjMyOjplbWl0Q2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jaypibG9jaywgQjM6
OlR5cGUgcmV0dXJuVHlwZSwgY29uc3QgUmVzdWx0TGlzdCYgcmVzdWx0cywgY29uc3QgVmVjdG9y
PFR5cGVkVG1wPiYgdG1wQXJncywgY29uc3QgQ2FsbEluZm9ybWF0aW9uJiB3YXNtQ2FsbGVlSW5m
bywgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiBwYXRjaEFyZ3MpIC0+IENhbGxQYXRjaHBvaW50RGF0
YQorc3RkOjpwYWlyPEIzOjpQYXRjaHBvaW50VmFsdWUqLCBQYXRjaHBvaW50RXhjZXB0aW9uSGFu
ZGxlPiBBaXJJUkdlbmVyYXRvcjMyOjplbWl0Q2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayogYmxv
Y2ssIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIGNvbnN0IFJlc3VsdExpc3QmIHJl
c3VsdHMsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFZlY3RvcjxDb25zdHJh
aW5lZFRtcD4gcGF0Y2hBcmdzKQogewotICAgIGF1dG8qIHBhdGNocG9pbnQgPSBhZGRQYXRjaHBv
aW50KHJldHVyblR5cGUpOworICAgIGF1dG8qIHBhdGNocG9pbnQgPSBhZGRQYXRjaHBvaW50KHRv
QjNSZXN1bHRUeXBlKCZzaWduYXR1cmUpKTsKICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRl
c1Bpbm5lZCA9IHRydWU7CiAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRy
dWU7CiAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckVhcmx5KFJlZ2lzdGVyU2V0QnVpbGRlcjo6bWFj
cm9DbG9iYmVyZWRSZWdpc3RlcnMoKSk7CiAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUmVn
aXN0ZXJTZXRCdWlsZGVyOjpyZWdpc3RlcnNUb1NhdmVGb3JKU0NhbGwoUmVnaXN0ZXJTZXRCdWls
ZGVyOjphbGxTY2FsYXJSZWdpc3RlcnMoKSkpOwogCi0gICAgQVNTRVJUKHdhc21DYWxsZWVJbmZv
LnBhcmFtcy5zaXplKCkgPT0gdG1wQXJncy5zaXplKCkpOwotICAgIEFTU0VSVCh3YXNtQ2FsbGVl
SW5mby5yZXN1bHRzLnNpemUoKSA9PSByZXN1bHRzLnNpemUoKSk7CisgICAgQ2FsbEluZm9ybWF0
aW9uIGxvY2F0aW9ucyA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpLmNhbGxJbmZvcm1hdGlvbkZv
cihzaWduYXR1cmUpOworICAgIG1fY29kZS5yZXF1ZXN0Q2FsbEFyZ0FyZWFTaXplSW5CeXRlcyhX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCBsb2NhdGlvbnMu
aGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKSk7CisKKyAgICBBU1NFUlQobG9jYXRp
b25zLnBhcmFtcy5zaXplKCkgPT0gYXJncy5zaXplKCkpOworICAgIEFTU0VSVChsb2NhdGlvbnMu
cmVzdWx0cy5zaXplKCkgPT0gcmVzdWx0cy5zaXplKCkpOwogCiAgICAgLy8gT24gMzItYml0IHBs
YXRmb3JtcywgNjQtYml0IGludGVnZXIgdHlwZXMgYXJlIHBhc3NlZCBhcyB0d28gMzItYml0IHZh
bHVlcwogICAgIHNpemVfdCBvZmZzZXQgPSBwYXRjaEFyZ3Muc2l6ZSgpOwotICAgIHNpemVfdCBw
YXNzZWRBcmdzID0gdG1wQXJncy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRtcEFyZ3Muc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKHRtcEFyZ3NbaV0uaXNHUFBhaXIo
KSkKKyAgICBzaXplX3QgcGFzc2VkQXJncyA9IGFyZ3Muc2l6ZSgpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChhcmdzW2ldLmlz
R1BQYWlyKCkpCiAgICAgICAgICAgICArK3Bhc3NlZEFyZ3M7CiAgICAgfQogICAgIENoZWNrZWQ8
c2l6ZV90PiBuZXdTaXplID0gY2hlY2tlZFN1bTxzaXplX3Q+KHBhdGNoQXJncy5zaXplKCksIHBh
c3NlZEFyZ3MpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFuZXdTaXplLmhhc092ZXJmbG93ZWQoKSk7
CiAgICAgcGF0Y2hBcmdzLmdyb3cobmV3U2l6ZSk7CiAgICAgdW5zaWduZWQgaiA9IDA7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRtcEFyZ3Muc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
Y29uc3QgVHlwZWRUbXAmIGFyZyA9IHRtcEFyZ3NbaV07Ci0gICAgICAgIGF1dG8mIGxvYyA9IHdh
c21DYWxsZWVJbmZvLnBhcmFtc1tpXS5sb2NhdGlvbjsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgYXJncy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUeXBlZFRtcCYgYXJnID0g
YXJnc1tpXTsKKyAgICAgICAgYXV0byYgbG9jID0gbG9jYXRpb25zLnBhcmFtc1tpXS5sb2NhdGlv
bjsKICAgICAgICAgaWYgKGFyZy5pc0dQUGFpcigpKSB7CiAgICAgICAgICAgICBCMzo6VmFsdWVS
ZXAgdmFsdWVSZXBMbyA9IGxvYy5pc0dQUigpID8gQjM6OlZhbHVlUmVwKGxvYy5qc3IoKS5wYXls
b2FkR1BSKCkpIDogQjM6OlZhbHVlUmVwOjpzdGFja0FyZ3VtZW50KGxvYy5vZmZzZXRGcm9tU1Ao
KSk7CiAgICAgICAgICAgICBCMzo6VmFsdWVSZXAgdmFsdWVSZXBIaSA9IGxvYy5pc0dQUigpID8g
QjM6OlZhbHVlUmVwKGxvYy5qc3IoKS50YWdHUFIoKSkgOiBCMzo6VmFsdWVSZXA6OnN0YWNrQXJn
dW1lbnQobG9jLm9mZnNldEZyb21TUCgpICsgNCk7CkBAIC0xMTU5LDcgKzExNjEsNyBAQCBhdXRv
IEFpcklSR2VuZXJhdG9yMzI6OmVtaXRDYWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKmJsb2NrLCBC
Mzo6VHlwZSByZXR1cm5UeXBlLAogICAgICAgICBWZWN0b3I8QjM6OlZhbHVlUmVwLCAxPiByZXN1
bHRDb25zdHJhaW50czsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJlc3VsdHMu
c2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIGNvbnN0IFR5cGVkVG1wJiByZXN1bHQgPSByZXN1
bHRzW2ldOwotICAgICAgICAgICAgYXV0byYgbG9jID0gd2FzbUNhbGxlZUluZm8ucmVzdWx0c1tp
XS5sb2NhdGlvbjsKKyAgICAgICAgICAgIGF1dG8mIGxvYyA9IGxvY2F0aW9ucy5yZXN1bHRzW2ld
LmxvY2F0aW9uOwogICAgICAgICAgICAgaWYgKHJlc3VsdC5pc0dQUGFpcigpKSB7CiAgICAgICAg
ICAgICAgICAgcGF0Y2hSZXN1bHRzLmFwcGVuZChUeXBlZFRtcCB7IHJlc3VsdC5sbygpLCBUeXBl
czo6STMyIH0pOwogICAgICAgICAgICAgICAgIHBhdGNoUmVzdWx0cy5hcHBlbmQoVHlwZWRUbXAg
eyByZXN1bHQuaGkoKSwgVHlwZXM6OkkzMiB9KTsKQEAgLTExNzgsMTYgKzExODAsNiBAQCBhdXRv
IEFpcklSR2VuZXJhdG9yMzI6OmVtaXRDYWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKmJsb2NrLCBC
Mzo6VHlwZSByZXR1cm5UeXBlLAogICAgIHJldHVybiB7IHBhdGNocG9pbnQsIGV4Y2VwdGlvbkhh
bmRsZSB9OwogfQogCi1hdXRvIEFpcklSR2VuZXJhdG9yMzI6OmVtaXRUYWlsQ2FsbFBhdGNocG9p
bnQoQmFzaWNCbG9jayogYmxvY2ssIGNvbnN0IENoZWNrZWQ8aW50MzJfdD4mIHRhaWxDYWxsU3Rh
Y2tPZmZzZXRGcm9tRlAsIGNvbnN0IFZlY3RvcjxBcmd1bWVudExvY2F0aW9uPiYgY29uc3RyYWlu
ZWRBcmdMb2NhdGlvbnMsIGNvbnN0IFZlY3RvcjxUeXBlZFRtcD4mIHRtcEFyZ3MsIFZlY3RvcjxD
b25zdHJhaW5lZFRtcD4gcGF0Y2hBcmdzKSAtPiBDYWxsUGF0Y2hwb2ludERhdGEKLXsKLSAgICBV
TlVTRURfUEFSQU0oYmxvY2spOwotICAgIFVOVVNFRF9QQVJBTSh0YWlsQ2FsbFN0YWNrT2Zmc2V0
RnJvbUZQKTsKLSAgICBVTlVTRURfUEFSQU0oY29uc3RyYWluZWRBcmdMb2NhdGlvbnMpOwotICAg
IFVOVVNFRF9QQVJBTSh0bXBBcmdzKTsKLSAgICBVTlVTRURfUEFSQU0ocGF0Y2hBcmdzKTsKLSAg
ICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLX0KLQogdm9pZCBBaXJJUkdlbmVyYXRvcjMy
OjpzYW5pdGl6ZUF0b21pY1Jlc3VsdChFeHRBdG9taWNPcFR5cGUgb3AsIFR5cGVkVG1wIHNvdXJj
ZSwgVHlwZWRUbXAgZGVzdCkKIHsKICAgICBBU1NFUlQoc291cmNlLnR5cGUoKSA9PSBkZXN0LnR5
cGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJH
ZW5lcmF0b3I2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5l
cmF0b3I2NC5jcHAKaW5kZXggNWIzNzc4OTZkYjMxLi4xMzdiZjZmMzIzNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJUkdlbmVyYXRvcjY0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3I2NC5jcHAKQEAg
LTUzMSw4ICs1MzEsNyBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkUmV0aHJvdyh1bnNpZ25lZCwgQ29udHJvbFR5cGUmKTsKIAogICAgIC8vIENhbGxz
Ci0gICAgQ2FsbFBhdGNocG9pbnREYXRhIFdBUk5fVU5VU0VEX1JFVFVSTiBlbWl0Q2FsbFBhdGNo
cG9pbnQoQmFzaWNCbG9jayosIEIzOjpUeXBlLCBjb25zdCBSZXN1bHRMaXN0JiwgY29uc3QgVmVj
dG9yPFR5cGVkVG1wPiYgdG1wQXJncywgY29uc3QgQ2FsbEluZm9ybWF0aW9uJiwgVmVjdG9yPENv
bnN0cmFpbmVkVG1wPiBwYXRjaEFyZ3MgPSB7IH0pOwotICAgIENhbGxQYXRjaHBvaW50RGF0YSBX
QVJOX1VOVVNFRF9SRVRVUk4gZW1pdFRhaWxDYWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKiwgY29u
c3QgQ2hlY2tlZDxpbnQzMl90PiYgdGFpbENhbGxTdGFja09mZnNldEZyb21GUCwgY29uc3QgVmVj
dG9yPEFyZ3VtZW50TG9jYXRpb24+JiwgY29uc3QgVmVjdG9yPFR5cGVkVG1wPiYgdG1wQXJncywg
VmVjdG9yPENvbnN0cmFpbmVkVG1wPiBwYXRjaEFyZ3MgPSB7IH0pOworICAgIHN0ZDo6cGFpcjxC
Mzo6UGF0Y2hwb2ludFZhbHVlKiwgUGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4gV0FSTl9VTlVT
RURfUkVUVVJOIGVtaXRDYWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKiwgY29uc3QgVHlwZURlZmlu
aXRpb24mLCBjb25zdCBSZXN1bHRMaXN0JiByZXN1bHRzLCBjb25zdCBWZWN0b3I8VHlwZWRUbXA+
JiBhcmdzLCBWZWN0b3I8Q29uc3RyYWluZWRUbXA+IGV4dHJhQXJncyA9IHsgfSk7CiAKICAgICBQ
YXJ0aWFsUmVzdWx0IGFkZFNoaWZ0KFR5cGUsIEIzOjpBaXI6Ok9wY29kZSwgRXhwcmVzc2lvblR5
cGUgdmFsdWUsIEV4cHJlc3Npb25UeXBlIHNoaWZ0LCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KTsK
ICAgICBQYXJ0aWFsUmVzdWx0IGFkZEludGVnZXJTdWIoQjM6OkFpcjo6T3Bjb2RlLCBFeHByZXNz
aW9uVHlwZSBsaHMsIEV4cHJlc3Npb25UeXBlIHJocywgRXhwcmVzc2lvblR5cGUmIHJlc3VsdCk7
CkBAIC0xODU3LDExICsxODU2LDYgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjY0OjphZGRSZXR1cm4o
Y29uc3QgQ29udHJvbERhdGEmIGRhdGEsIGNvbnN0IFN0YWNrJiByZXR1cm5WYWwKICAgICBCMzo6
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaCA9IGFkZFBhdGNocG9pbnQoQjM6OlZvaWQpOwogICAgIHBh
dGNoLT5zZXRHZW5lcmF0b3IoW10gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgYXV0byBjYWxsZWVTYXZlcyA9
IHBhcmFtcy5jb2RlKCkuY2FsbGVlU2F2ZVJlZ2lzdGVyQXRPZmZzZXRMaXN0KCk7Ci0KLSAgICAg
ICAgLy8gTk9URTogb24gQVJNNjQsIGlmIHRoZSBjYWxsZWUgc2F2ZXMgaGF2ZSBiaWdnZXIgb2Zm
c2V0cyBkdWUgdG8gYSBwb3RlbnRpYWwgdGFpbCBjYWxsLAotICAgICAgICAvLyB0aGUgbWFjcm8g
YXNzZW1ibGVyIG1pZ2h0IGFzc2VydCBzY3JhdGNoIHJlZ2lzdGVyIHVzYWdlIG9uIGxvYWQgb3Bl
cmF0aW9ucyBlbWl0dGVkIGJ5IGVtaXRSZXN0b3JlLgotICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCBpc0FSTTY0KCkgfHwgaXNBUk02NEUo
KSk7Ci0KICAgICAgICAgaml0LmVtaXRSZXN0b3JlKGNhbGxlZVNhdmVzKTsKICAgICAgICAgaml0
LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CiAgICAgICAgIGppdC5yZXQoKTsKQEAgLTE5MzgsMjgg
KzE5MzIsMjkgQEAgYXV0byBBaXJJUkdlbmVyYXRvcjY0OjphZGRSZXRocm93KHVuc2lnbmVkLCBD
b250cm9sVHlwZSYgZGF0YSkgLT4gUGFydGlhbFJlc3VsdAogICAgIHJldHVybiB7IH07CiB9CiAK
LWF1dG8gQWlySVJHZW5lcmF0b3I2NDo6ZW1pdENhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJs
b2NrLCBCMzo6VHlwZSByZXR1cm5UeXBlLCBjb25zdCBSZXN1bHRMaXN0JiByZXN1bHRzLCBjb25z
dCBWZWN0b3I8VHlwZWRUbXA+JiB0bXBBcmdzLCBjb25zdCBDYWxsSW5mb3JtYXRpb24mIHdhc21D
YWxsZWVJbmZvLCBWZWN0b3I8Q29uc3RyYWluZWRUbXA+IHBhdGNoQXJncykgLT4gQ2FsbFBhdGNo
cG9pbnREYXRhCitzdGQ6OnBhaXI8QjM6OlBhdGNocG9pbnRWYWx1ZSosIFBhdGNocG9pbnRFeGNl
cHRpb25IYW5kbGU+IEFpcklSR2VuZXJhdG9yNjQ6OmVtaXRDYWxsUGF0Y2hwb2ludChCYXNpY0Js
b2NrKiBibG9jaywgY29uc3QgVHlwZURlZmluaXRpb24mIHNpZ25hdHVyZSwgY29uc3QgUmVzdWx0
TGlzdCYgcmVzdWx0cywgY29uc3QgVmVjdG9yPFR5cGVkVG1wPiYgYXJncywgVmVjdG9yPENvbnN0
cmFpbmVkVG1wPiBwYXRjaEFyZ3MpCiB7Ci0gICAgYXV0byogcGF0Y2hwb2ludCA9IGFkZFBhdGNo
cG9pbnQocmV0dXJuVHlwZSk7CisgICAgYXV0byogcGF0Y2hwb2ludCA9IGFkZFBhdGNocG9pbnQo
dG9CM1Jlc3VsdFR5cGUoJnNpZ25hdHVyZSkpOwogICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3Jp
dGVzUGlubmVkID0gdHJ1ZTsKICAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0g
dHJ1ZTsKICAgICBwYXRjaHBvaW50LT5jbG9iYmVyRWFybHkoUmVnaXN0ZXJTZXRCdWlsZGVyOjpt
YWNyb0Nsb2JiZXJlZFJlZ2lzdGVycygpKTsKICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShS
ZWdpc3RlclNldEJ1aWxkZXI6OnJlZ2lzdGVyc1RvU2F2ZUZvckpTQ2FsbChtX3Byb2MudXNlc1NJ
TUQoKSA/IFJlZ2lzdGVyU2V0QnVpbGRlcjo6YWxsUmVnaXN0ZXJzKCkgOiBSZWdpc3RlclNldEJ1
aWxkZXI6OmFsbFNjYWxhclJlZ2lzdGVycygpKSk7CiAKKyAgICBDYWxsSW5mb3JtYXRpb24gbG9j
YXRpb25zID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCkuY2FsbEluZm9ybWF0aW9uRm9yKHNpZ25h
dHVyZSk7CisgICAgbV9jb2RlLnJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5dGVzKFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIGxvY2F0aW9ucy5oZWFkZXJB
bmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMpKTsKKwogICAgIHNpemVfdCBvZmZzZXQgPSBwYXRj
aEFyZ3Muc2l6ZSgpOwotICAgIENoZWNrZWQ8c2l6ZV90PiBuZXdTaXplID0gY2hlY2tlZFN1bTxz
aXplX3Q+KHBhdGNoQXJncy5zaXplKCksIHRtcEFyZ3Muc2l6ZSgpKTsKKyAgICBDaGVja2VkPHNp
emVfdD4gbmV3U2l6ZSA9IGNoZWNrZWRTdW08c2l6ZV90PihwYXRjaEFyZ3Muc2l6ZSgpLCBhcmdz
LnNpemUoKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIW5ld1NpemUuaGFzT3ZlcmZsb3dlZCgpKTsK
IAogICAgIHBhdGNoQXJncy5ncm93KG5ld1NpemUpOwotICAgIGNvbnN0IFZlY3RvcjxBcmd1bWVu
dExvY2F0aW9uPiAmY29uc3RyYWluZWRBcmdMb2NhdGlvbnMgPSB3YXNtQ2FsbGVlSW5mby5wYXJh
bXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRtcEFyZ3Muc2l6ZSgpOyArK2kpCi0g
ICAgICAgIHBhdGNoQXJnc1tpICsgb2Zmc2V0XSA9IENvbnN0cmFpbmVkVG1wKHRtcEFyZ3NbaV0s
IGNvbnN0cmFpbmVkQXJnTG9jYXRpb25zW2ldKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYXJncy5zaXplKCk7ICsraSkKKyAgICAgICAgcGF0Y2hBcmdzW2kgKyBvZmZzZXRdID0gQ29u
c3RyYWluZWRUbXAoYXJnc1tpXSwgbG9jYXRpb25zLnBhcmFtc1tpXS5sb2NhdGlvbik7CiAKLSAg
ICBjb25zdCBWZWN0b3I8QXJndW1lbnRMb2NhdGlvbiwgMT4gJmNvbnN0cmFpbmVkUmVzdWx0TG9j
YXRpb25zID0gd2FzbUNhbGxlZUluZm8ucmVzdWx0czsKICAgICBpZiAocGF0Y2hwb2ludC0+dHlw
ZSgpICE9IEIzOjpWb2lkKSB7CiAgICAgICAgIFZlY3RvcjxCMzo6VmFsdWVSZXAsIDE+IHJlc3Vs
dENvbnN0cmFpbnRzOwotICAgICAgICBmb3IgKGF1dG8gcmVzdWx0TG9jYXRpb24gOiBjb25zdHJh
aW5lZFJlc3VsdExvY2F0aW9ucykKLSAgICAgICAgICAgIHJlc3VsdENvbnN0cmFpbnRzLmFwcGVu
ZChCMzo6VmFsdWVSZXAocmVzdWx0TG9jYXRpb24ubG9jYXRpb24pKTsKKyAgICAgICAgZm9yIChh
dXRvIHZhbHVlTG9jYXRpb24gOiBsb2NhdGlvbnMucmVzdWx0cykKKyAgICAgICAgICAgIHJlc3Vs
dENvbnN0cmFpbnRzLmFwcGVuZChCMzo6VmFsdWVSZXAodmFsdWVMb2NhdGlvbi5sb2NhdGlvbikp
OwogICAgICAgICBwYXRjaHBvaW50LT5yZXN1bHRDb25zdHJhaW50cyA9IFdURk1vdmUocmVzdWx0
Q29uc3RyYWludHMpOwogICAgIH0KICAgICBQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlIGV4Y2Vw
dGlvbkhhbmRsZSA9IHByZXBhcmVQYXRjaHBvaW50Rm9yRXhjZXB0aW9ucyhwYXRjaHBvaW50LCBw
YXRjaEFyZ3MpOwpAQCAtMTk2Nyw5NSArMTk2Miw3IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I2NDo6
ZW1pdENhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJsb2NrLCBCMzo6VHlwZSByZXR1cm5UeXBl
CiAgICAgcmV0dXJuIHsgcGF0Y2hwb2ludCwgZXhjZXB0aW9uSGFuZGxlIH07CiB9CiAKLWF1dG8g
QWlySVJHZW5lcmF0b3I2NDo6ZW1pdFRhaWxDYWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKiBibG9j
aywgY29uc3QgQ2hlY2tlZDxpbnQzMl90PiYgdGFpbENhbGxTdGFja09mZnNldEZyb21GUCwgY29u
c3QgVmVjdG9yPEFyZ3VtZW50TG9jYXRpb24+JiBjb25zdHJhaW5lZEFyZ0xvY2F0aW9ucywgY29u
c3QgVmVjdG9yPFR5cGVkVG1wPiYgdG1wQXJncywgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiBwYXRj
aEFyZ3MpIC0+IENhbGxQYXRjaHBvaW50RGF0YQotewotICAgIC8vICAgIExheW91dCBvZiBzdGFj
ayByaWdodCBiZWZvcmUgdGFpbCBjYWxsIEYgLT4gRwotICAgIC8vCi0gICAgLy8KLSAgICAvLyAg
ICB8ICAgICAgICAgIC4uLi4uLiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAu
Li4uLi4gICAgICAgICAgICB8Ci0gICAgLy8gICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rIDwtLSAweDU1MDFmZjRmZjAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8LS0gMHg1NTAx
ZmY0ZmYwCi0gICAgLy8gICAgfCAgICAgICAgICAgRi5hcmdOICAgICAgICAgICB8ICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0+ICAg
ICAgIHwgICAgICAgICAgIEcuYXJnTSAgICAgICAgICAgfCAgICB8Ci0gICAgLy8gICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgIHwgbG93ZXIgYWRkcmVzcyAgICAgICAgICAgICAg
ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKyAgICB8IGxvd2VyIGFkZHJlc3MKLSAgICAvLyAgICB8ICAgICAgICAgICBGLmFy
ZzEgICAgICAgICAgIHwgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgYXJnMSAgICAgICAgICAgICB8
ICAgIHYKLSAgICAvLyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgfCAgICAgICAgICAg
Ri5hcmcwICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIGFyZzAgICAgICAgICAg
ICAgfAotICAgIC8vICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAvLyAgICB8ICAgICAgICAgICBG
LnRoaXMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgdGhpcycgICAgICAgICAg
ICB8Ci0gICAgLy8gICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgIC8vICAgIHwgYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIEEuQy5JLlQuJyAgICAgICAg
IHwKLSAgICAvLyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgfCAgRi5jYWxsZWUgKGFr
YSBGLCB1bnVzZWQgaW4gd2FzbSkgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIEcuY2FsbGVlICAgICAgICAgICAg
fAotICAgIC8vICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAvLyAgICB8ICAgICAgICBGLmNvZGVC
bG9jayAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNodWZmbGVTdGFj
a0FyZ3MuLi4pICAgICAgICAgICAgICAgICAgfCAgICAgICAgRy5jb2RlQmxvY2sgICAgICAgICB8
Ci0gICAgLy8gICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgIC8vICAgIHwgcmV0dXJuLWFkZHJlc3Mg
YWZ0ZXIgRiAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgcmV0dXJuLWFkZHJlc3MgYWZ0ZXIgRiAgIHwK
LSAgICAvLyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIFNQIGF0IEcgcHJvbG9ndWUgLT4gKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgfCAgICAgICAgICBGLmNhbGxl
ci5GUCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgRi5jYWxsZXIuRlAgICAgICAgfAot
ICAgIC8vICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgPC0gRi5GUCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICBHLkZQIGFmdGVyIEcgcHJvbG9ndWUtPiArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAvLyAgICB8ICAgICAgICAgIGNhbGxlZSBz
YXZlcyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICBjYWxsZWUgc2F2ZXMgICAgICB8Ci0g
ICAgLy8gICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgPC0tLS0rICAgYXJnTSB0
byBHICAtLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgIC8vICAgIHwgICAgICAgICAgRi5sb2NhbDAg
ICAgICAgICAgfCAgICAgICAgfCAgIC4uLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIEcubG9jYWwwICAgICAgICAgIHwKLSAg
ICAvLyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgIHwgICBhcmcwIHRv
IEcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgfCAgICAgICAgICBGLmxvY2FsMSAg
ICAgICAgICB8ICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgRy5sb2NhbDEgICAgICAgICAgfAotICAg
IC8vICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAvLyAgICB8ICAgICAgICAgIEYubG9jYWxOICAg
ICAgICAgIHwgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICBHLmxvY2FsTSAgICAgICAgICB8Ci0gICAg
Ly8gICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18ICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgIC8vICAgIHwgICAgICAgICAgLi4uLi4uICAgICAg
ICAgICAgfCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIC4uLi4uLiAgICAgICAgICAgIHwKLSAgICAv
LyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgIDwtIFNQIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTUCBhZnRlciBHIHByb2xvZ3VlLT4gKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8Ci0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICArLSBOZXcgdG1wIHN0YWNrIHNsb3RzIGFyZSBldmVudHVhbGx5IGFsbG9jYXRlZCBo
ZXJlCi0gICAgLy8KLSAgICAvLyAgU2VlIGh0dHBzOi8vbGVhbmluZ3RlY2guY29tL2ZhbnRhc3Rp
Yy10YWlsLWNhbGxzLWFuZC1ob3ctdG8taW1wbGVtZW50LXRoZW0vIGZvciBhIG1vcmUgaW4tZGVw
dGggZXhwbGFuYXRpb24uCi0KLSAgICBhdXRvIHNodWZmbGVTdGFja0FyZyA9IFt0aGlzLCBibG9j
aywgdGFpbENhbGxTdGFja09mZnNldEZyb21GUF0gKFRtcCB0bXAsIGludDMyX3Qgb2Zmc2V0RnJv
bVNQKSAtPiB2b2lkIHsKLSAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiBvZmZzZXRGcm9tRlAgPSB0
YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQICsgb2Zmc2V0RnJvbVNQOwotCi0gICAgICAgIGlmIChv
ZmZzZXRGcm9tRlAgPCAwKSB7Ci0gICAgICAgICAgICBTdGFja1Nsb3QqIHN0YWNrU2xvdCA9IG1f
Y29kZS5hZGRTdGFja1Nsb3Qoc2l6ZW9mKFJlZ2lzdGVyKSwgU3RhY2tTbG90S2luZDo6TG9ja2Vk
KTsKLSAgICAgICAgICAgIHN0YWNrU2xvdC0+c2V0T2Zmc2V0RnJvbUZQKG9mZnNldEZyb21GUCk7
Ci0gICAgICAgICAgICBhcHBlbmQoYmxvY2ssIHRtcC5pc0dQKCkgPyBNb3ZlIDogTW92ZURvdWJs
ZSwgdG1wLCBBcmc6OnN0YWNrKHN0YWNrU2xvdCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgYXBwZW5kKGJsb2NrLCB0bXAuaXNHUCgpID8gTW92ZSA6IE1vdmVE
b3VibGUsIHRtcCwgQXJnOjphZGRyKFRtcChHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciksIG9m
ZnNldEZyb21GUCkpOwotICAgIH07Ci0KLSAgICBhdXRvIHRtcCA9IGc2NCgpOwotCi0gICAgYXBw
ZW5kKGJsb2NrLCBNb3ZlLCBBcmc6OmFkZHIoVG1wKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50
ZXJSZWdpc3RlciksIENhbGxGcmFtZTo6cmV0dXJuUENPZmZzZXQoKSksIHRtcCk7Ci0gICAgc2h1
ZmZsZVN0YWNrQXJnKHRtcCwgLXN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihSZWdpc3Rlcikp
KTsKLQotICAgIGFwcGVuZChibG9jaywgTW92ZSwgQXJnOjphZGRyKFRtcChNYWNyb0Fzc2VtYmxl
cjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIpKSwgdG1wKTsKLQotICAgIGF1dG8qIHBhdGNocG9pbnQg
PSBhZGRQYXRjaHBvaW50KEIzOjpWb2lkKTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnRlcm1p
bmFsID0gdHJ1ZTsKLSAgICBwYXRjaHBvaW50LT5lZmZlY3RzLnJlYWRzUGlubmVkID0gdHJ1ZTsK
LSAgICBwYXRjaHBvaW50LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7Ci0KLSAgICBSZWdp
c3RlclNldEJ1aWxkZXIgY2xvYmJlcnM7Ci0gICAgY2xvYmJlcnMubWVyZ2UoUmVnaXN0ZXJTZXRC
dWlsZGVyOjpjYWxsZWVTYXZlUmVnaXN0ZXJzKCkpOwotICAgIGNsb2JiZXJzLmV4Y2x1ZGUoUmVn
aXN0ZXJTZXRCdWlsZGVyOjpzdGFja1JlZ2lzdGVycygpKTsKLSAgICBwYXRjaHBvaW50LT5jbG9i
YmVyKGNsb2JiZXJzKTsKLSAgICBwYXRjaHBvaW50LT5jbG9iYmVyRWFybHkoUmVnaXN0ZXJTZXRC
dWlsZGVyOjptYWNyb0Nsb2JiZXJlZFJlZ2lzdGVycygpKTsKLQotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCB0bXBBcmdzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFR5cGVkVG1wIHRtcCA9
IHRtcEFyZ3NbaV07Ci0gICAgICAgIGlmIChjb25zdHJhaW5lZEFyZ0xvY2F0aW9uc1tpXS5sb2Nh
dGlvbi5pc1N0YWNrQXJndW1lbnQoKSkgewotICAgICAgICAgICAgc2h1ZmZsZVN0YWNrQXJnKHRt
cCwgY29uc3RyYWluZWRBcmdMb2NhdGlvbnNbaV0ubG9jYXRpb24ub2Zmc2V0RnJvbVNQKCkpOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgcGF0Y2hBcmdzLmFwcGVu
ZChDb25zdHJhaW5lZFRtcCh0bXAsIGNvbnN0cmFpbmVkQXJnTG9jYXRpb25zW2ldKSk7Ci0gICAg
fQotICAgIFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGUgZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFy
ZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKHBhdGNocG9pbnQsIHBhdGNoQXJncyk7Ci0KLSAgICBw
YXRjaEFyZ3MuYXBwZW5kKHsgdG1wLCBCMzo6VmFsdWVSZXAoTWFjcm9Bc3NlbWJsZXI6OmZyYW1l
UG9pbnRlclJlZ2lzdGVyKSB9KTsKLQotICAgIGVtaXRQYXRjaHBvaW50KGJsb2NrLCBwYXRjaHBv
aW50LCBUbXAgeyB9LCBXVEZNb3ZlKHBhdGNoQXJncykpOwotCi0gICAgcmV0dXJuIHsgcGF0Y2hw
b2ludCwgZXhjZXB0aW9uSGFuZGxlIH07Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEludFR5cGU+
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW50VHlwZT4KIHZvaWQgQWlySVJHZW5lcmF0b3I2NDo6ZW1p
dE1vZE9yRGl2KGJvb2wgaXNEaXYsIEV4cHJlc3Npb25UeXBlIGxocywgRXhwcmVzc2lvblR5cGUg
cmhzLCBFeHByZXNzaW9uVHlwZSYgcmVzdWx0KQogewogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9m
KEludFR5cGUpID09IDQgfHwgc2l6ZW9mKEludFR5cGUpID09IDgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yQmFzZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yQmFzZS5oCmluZGV4IDhlODg1
MWM1YmM5MS4uMTY5YjQ1MGY4MzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQWlySVJHZW5lcmF0b3JCYXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUFpcklSR2VuZXJhdG9yQmFzZS5oCkBAIC0xMDEsOCArMTAxLDYgQEAgc3RydWN0
IEFpcklSR2VuZXJhdG9yQmFzZSB7CiAgICAgLy8gUmVsYXRlZCB0eXBlcwogCiAgICAgdXNpbmcg
UmVzdWx0TGlzdCA9IFZlY3RvcjxFeHByZXNzaW9uVHlwZSwgOD47Ci0gICAgdXNpbmcgQ2FsbFR5
cGUgPSBDYWxsTGlua0luZm86OkNhbGxUeXBlOwotICAgIHVzaW5nIENhbGxQYXRjaHBvaW50RGF0
YSA9IHN0ZDo6cGFpcjxCMzo6UGF0Y2hwb2ludFZhbHVlKiwgUGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZT47CiAKICAgICBzdHJ1Y3QgQ29udHJvbERhdGEgewogICAgICAgICBDb250cm9sRGF0YShC
Mzo6T3JpZ2luLCBCbG9ja1NpZ25hdHVyZSByZXN1bHQsIFJlc3VsdExpc3QgcmVzdWx0VG1wcywg
QmxvY2tUeXBlIHR5cGUsIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiwgQmFzaWNCbG9jayogc3Bl
Y2lhbCA9IG51bGxwdHIpCkBAIC0yNjksNyArMjY3LDcgQEAgc3RydWN0IEFpcklSR2VuZXJhdG9y
QmFzZSB7CiAKICAgICB1c2luZyBDb250cm9sVHlwZSA9IENvbnRyb2xEYXRhOwogCi0gICAgdXNp
bmcgUGFyc2VyVHlwZXMgPSBGdW5jdGlvblBhcnNlclR5cGVzPENvbnRyb2xUeXBlLCBFeHByZXNz
aW9uVHlwZSwgQ2FsbFR5cGU+OworICAgIHVzaW5nIFBhcnNlclR5cGVzID0gRnVuY3Rpb25QYXJz
ZXJUeXBlczxDb250cm9sVHlwZSwgRXhwcmVzc2lvblR5cGU+OwogCiAgICAgdXNpbmcgQ29udHJv
bEVudHJ5ID0gdHlwZW5hbWUgUGFyc2VyVHlwZXM6OkNvbnRyb2xFbnRyeTsKICAgICB1c2luZyBD
b250cm9sU3RhY2sgPSB0eXBlbmFtZSBQYXJzZXJUeXBlczo6Q29udHJvbFN0YWNrOwpAQCAtMjk2
LDEyICsyOTQsNiBAQCBzdHJ1Y3QgQWlySVJHZW5lcmF0b3JCYXNlIHsKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgQ29uc3RyYWluZWRUbXAoRXhwcmVzc2lvblR5cGUgdG1wLCBBcmd1
bWVudExvY2F0aW9uIGxvYykKLSAgICAgICAgICAgIDogdG1wKHRtcCkKLSAgICAgICAgICAgICwg
cmVwKGxvYy5sb2NhdGlvbikKLSAgICAgICAgewotICAgICAgICB9Ci0KICAgICAgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhdG1wOyB9CiAKICAgICAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CkBAIC00NjIsMTAgKzQ1NCwxMCBAQCBzdHJ1
Y3QgQWlySVJHZW5lcmF0b3JCYXNlIHsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBlbmRUb3BMZXZlbChCbG9ja1NpZ25hdHVyZSwgY29uc3QgU3RhY2smKSB7IHJldHVybiB7
IH07IH0KIAogICAgIC8vIENhbGxzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRV
Uk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzLCBDYWxsVHlw
ZSA9IENhbGxUeXBlOjpDYWxsKTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVS
TiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRp
b24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzLCBD
YWxsVHlwZSA9IENhbGxUeXBlOjpDYWxsKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlv
biYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwor
ICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1bnNp
Z25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQgV0FS
Tl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8
RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKLSAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBlbWl0SW5kaXJlY3RDYWxsKEV4cHJlc3Npb25UeXBl
IGNhbGxlZUluc3RhbmNlLCBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlLCBjb25zdCBUeXBlRGVm
aW5pdGlvbiYsIGNvbnN0IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3Qm
LCBDYWxsVHlwZSA9IENhbGxUeXBlOjpDYWxsKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBlbWl0SW5kaXJlY3RDYWxsKEV4cHJlc3Npb25UeXBlIGNhbGxlZUluc3RhbmNl
LCBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIGNvbnN0
IFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmKTsKICAgICBQYXJ0aWFs
UmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogICAgIFBhcnRpYWxS
ZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENyYXNoKCk7CiAKQEAgLTUyMSw2ICs1MTMsNyBA
QCBzdHJ1Y3QgQWlySVJHZW5lcmF0b3JCYXNlIHsKICAgICB9CiAKIHByb3RlY3RlZDoKKyAgICBC
Mzo6VHlwZSB0b0IzUmVzdWx0VHlwZShCbG9ja1NpZ25hdHVyZSByZXR1cm5UeXBlKTsKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgdmFsaWRhdGVJbnN0KEluc3QmIGluc3QpCiAgICAgewogICAgICAg
ICBpZiAoQVNTRVJUX0VOQUJMRUQpIHsKQEAgLTg4MCwxMSArODczLDYgQEAgcHVibGljOgogICAg
IEdQUlJlZyBtX3dhc21Db250ZXh0SW5zdGFuY2VHUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAgICAg
R1BSUmVnIG1fcHJvbG9ndWVXYXNtQ29udGV4dEdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBi
b29sIG1fbWFrZXNDYWxscyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21ha2VzVGFpbENhbGxzIHsg
ZmFsc2UgfTsKLQotICAgIC8vIFRoaXMgdHJhY2tzIHRoZSBtYXhpbXVtIHN0YWNrIG9mZnNldCBm
b3IgYSB0YWlsIGNhbGwsIHRvIGJlIHVzZWQgaW4gdGhlIHN0YWNrIG92ZXJmbG93IGNoZWNrLgot
ICAgIENoZWNrZWQ8aW50MzJfdD4gbV90YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQIHsgMCB9Owot
CiAgICAgc3RkOjpvcHRpb25hbDxib29sPiBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzOwogCiAgICAg
SGFzaE1hcDxCbG9ja1NpZ25hdHVyZSwgQjM6OlR5cGU+IG1fdHVwbGVNYXA7CkBAIC0xMDI1LDcg
KzEwMTMsNiBAQCBBaXJJUkdlbmVyYXRvckJhc2U8RGVyaXZlZCwgRXhwcmVzc2lvblR5cGU+OjpB
aXJJUkdlbmVyYXRvckJhc2UoY29uc3QgTW9kdWxlSW5mbwogCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGNvbnN0IENoZWNrZWQ8aW50MzJfdD4gd2FzbUZyYW1lU2l6ZSA9IG1fY29kZS5mcmFtZVNp
emUoKTsKLSAgICAgICAgICAgIGNvbnN0IENoZWNrZWQ8aW50MzJfdD4gd2FzbVRhaWxDYWxsRnJh
bWVTaXplID0gLW1fdGFpbENhbGxTdGFja09mZnNldEZyb21GUDsKICAgICAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIG1pbmltdW1QYXJlbnRDaGVja1NpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCAxMDI0KTsKICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGV4dHJhRnJhbWVTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25t
ZW50Qnl0ZXMoKSwgc3RkOjptYXg8dWludDMyX3Q+KAogICAgICAgICAgICAgICAgIC8vIFRoaXMg
YWxsb3dzIHVzIHRvIGVsaWRlIHN0YWNrIGNoZWNrcyBmb3IgZnVuY3Rpb25zIHRoYXQgYXJlIHRl
cm1pbmFsIG5vZGVzIGluIHRoZSBjYWxsCkBAIC0xMDQwLDIxICsxMDI3LDkgQEAgQWlySVJHZW5l
cmF0b3JCYXNlPERlcml2ZWQsIEV4cHJlc3Npb25UeXBlPjo6QWlySVJHZW5lcmF0b3JCYXNlKGNv
bnN0IE1vZHVsZUluZm8KICAgICAgICAgICAgICAgICAvLyBzdGFjayB0aGF0IHN1Y2ggYSBzdHVi
IHdvdWxkIHVzZS4KICAgICAgICAgICAgICAgICBDaGVja2VkPHVpbnQzMl90PihtX21heE51bUpT
Q2FsbEFyZ3VtZW50cykgKiBzaXplb2YoUmVnaXN0ZXIpICsganNDYWxsaW5nQ29udmVudGlvbigp
LmhlYWRlclNpemVJbkJ5dGVzCiAgICAgICAgICAgICApKTsKLSAgICAgICAgICAgIGludDMyX3Qg
Y2hlY2tTaXplID0gd2FzbUZyYW1lU2l6ZS52YWx1ZSgpOwotICAgICAgICAgICAgYm9vbCBmcmFt
ZVNpemVOZWVkc092ZXJmbG93Q2hlY2sgPSBjaGVja1NpemUgPj0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4obWluaW11bVBhcmVudENoZWNrU2l6ZSk7Ci0gICAgICAgICAgICBib29sIG5lZWRzT3ZlcmZs
b3dDaGVjayA9IGZyYW1lU2l6ZU5lZWRzT3ZlcmZsb3dDaGVjazsKLQotICAgICAgICAgICAgaWYg
KG1fbWFrZXNDYWxscykgewotICAgICAgICAgICAgICAgIG5lZWRzT3ZlcmZsb3dDaGVjayA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgY2hlY2tTaXplID0gY2hlY2tlZFN1bTxpbnQzMl90PihjaGVj
a1NpemUsIGV4dHJhRnJhbWVTaXplKS52YWx1ZSgpOwotICAgICAgICAgICAgfSBlbHNlIGlmICht
X21ha2VzVGFpbENhbGxzKSB7Ci0gICAgICAgICAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiB0YWls
Q2FsbENoZWNrU2l6ZSA9IHN0ZDo6bWF4PENoZWNrZWQ8aW50MzJfdD4+KHdhc21UYWlsQ2FsbEZy
YW1lU2l6ZSArIGV4dHJhRnJhbWVTaXplLCAwKTsKLSAgICAgICAgICAgICAgICBjaGVja1NpemUg
PSBmcmFtZVNpemVOZWVkc092ZXJmbG93Q2hlY2sgPyBzdGQ6Om1heDxDaGVja2VkPGludDMyX3Q+
Pih0YWlsQ2FsbENoZWNrU2l6ZSwgd2FzbUZyYW1lU2l6ZSkudmFsdWUoKSA6IHRhaWxDYWxsQ2hl
Y2tTaXplLnZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgbmVlZHNPdmVyZmxvd0NoZWNrID0gbmVl
ZHNPdmVyZmxvd0NoZWNrIHx8IGNoZWNrU2l6ZSA+PSBzdGF0aWNfY2FzdDxpbnQzMl90PihtaW5p
bXVtUGFyZW50Q2hlY2tTaXplKTsKLSAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgY29uc3Qg
aW50MzJfdCBjaGVja1NpemUgPSBtX21ha2VzQ2FsbHMgPyAod2FzbUZyYW1lU2l6ZSArIGV4dHJh
RnJhbWVTaXplKS52YWx1ZSgpIDogd2FzbUZyYW1lU2l6ZS52YWx1ZSgpOwogICAgICAgICAgICAg
Ym9vbCBuZWVkVW5kZXJmbG93Q2hlY2sgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY2hlY2tTaXpl
KSA+IE9wdGlvbnM6OnJlc2VydmVkWm9uZVNpemUoKTsKLSAgICAgICAgICAgIG5lZWRzT3ZlcmZs
b3dDaGVjayA9IG5lZWRzT3ZlcmZsb3dDaGVjayB8fCBuZWVkVW5kZXJmbG93Q2hlY2s7CisgICAg
ICAgICAgICBib29sIG5lZWRzT3ZlcmZsb3dDaGVjayA9IG1fbWFrZXNDYWxscyB8fCB3YXNtRnJh
bWVTaXplID49IHN0YXRpY19jYXN0PGludDMyX3Q+KG1pbmltdW1QYXJlbnRDaGVja1NpemUpIHx8
IG5lZWRVbmRlcmZsb3dDaGVjazsKICAgICAgICAgICAgIGJvb2wgbWF5SGF2ZUV4Y2VwdGlvbkhh
bmRsZXJzID0gIW1faGFzRXhjZXB0aW9uSGFuZGxlcnMgfHwgbV9oYXNFeGNlcHRpb25IYW5kbGVy
cy52YWx1ZSgpOwogCiAgICAgICAgICAgICBpZiAoKG5lZWRzT3ZlcmZsb3dDaGVjayB8fCBtX3Vz
ZXNJbnN0YW5jZVZhbHVlIHx8IG1heUhhdmVFeGNlcHRpb25IYW5kbGVycykgJiYgQ29udGV4dDo6
dXNlRmFzdFRMUygpKQpAQCAtMzEwNSw3OSArMzA4MCwyMyBAQCBhdXRvIEFpcklSR2VuZXJhdG9y
QmFzZTxEZXJpdmVkLCBFeHByZXNzaW9uVHlwZT46OmFkZEVuZFRvVW5yZWFjaGFibGUoQ29udHJv
bEVudAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBFeHByZXNzaW9u
VHlwZT4KLWF1dG8gQWlySVJHZW5lcmF0b3JCYXNlPERlcml2ZWQsIEV4cHJlc3Npb25UeXBlPjo6
YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2ln
bmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRz
LCBDYWxsVHlwZSBjYWxsVHlwZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRv
ckJhc2U8RGVyaXZlZCwgRXhwcmVzc2lvblR5cGU+OjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAg
ICBib29sIGlzVGFpbENhbGwgPSBjYWxsVHlwZSA9PSBDYWxsVHlwZTo6VGFpbENhbGw7Ci0gICAg
QVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlOjpDYWxsIHx8IGlzVGFpbENhbGwpOwogICAgIEFT
U0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFyZ3VtZW50Q291bnQoKSA9
PSBhcmdzLnNpemUoKSk7CiAKLSAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdh
c21DYWxsaW5nQ29udmVudGlvbigpOwotICAgIENhbGxJbmZvcm1hdGlvbiB3YXNtQ2FsbGVlSW5m
byA9IGNhbGxpbmdDb252ZW50aW9uLmNhbGxJbmZvcm1hdGlvbkZvcihzaWduYXR1cmUsIENhbGxS
b2xlOjpDYWxsZXIpOwotICAgIENoZWNrZWQ8aW50MzJfdD4gY2FsbGVlU3RhY2tTaXplID0gV1RG
Ojpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0ZXMoKSwgd2FzbUNhbGxlZUlu
Zm8uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKTsKLSAgICBDaGVja2VkPGludDMy
X3Q+IHRhaWxDYWxsU3RhY2tPZmZzZXRGcm9tRlA7Ci0KLSAgICBpZiAoaXNUYWlsQ2FsbCkgewot
ICAgICAgICBtX21ha2VzVGFpbENhbGxzID0gdHJ1ZTsKLQotICAgICAgICBjb25zdCBUeXBlSW5k
ZXggY2FsbGVyVHlwZUluZGV4ID0gbV9pbmZvLmludGVybmFsRnVuY3Rpb25UeXBlSW5kaWNlc1tt
X2Z1bmN0aW9uSW5kZXhdOwotICAgICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgY2FsbGVyVHlw
ZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChjYWxsZXJUeXBlSW5kZXgpOwotICAg
ICAgICBDYWxsSW5mb3JtYXRpb24gd2FzbUNhbGxlckluZm8gPSBjYWxsaW5nQ29udmVudGlvbi5j
YWxsSW5mb3JtYXRpb25Gb3IoY2FsbGVyVHlwZURlZmluaXRpb24sIENhbGxSb2xlOjpDYWxsZWUp
OwotICAgICAgICBDaGVja2VkPGludDMyX3Q+IGNhbGxlclN0YWNrU2l6ZSA9IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHdhc21DYWxsZXJJbmZvLmhlYWRl
ckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcyk7Ci0gICAgICAgIHRhaWxDYWxsU3RhY2tPZmZz
ZXRGcm9tRlAgPSBjYWxsZXJTdGFja1NpemUgLSBjYWxsZWVTdGFja1NpemU7CisgICAgbV9tYWtl
c0NhbGxzID0gdHJ1ZTsKIAotICAgICAgICBtX3RhaWxDYWxsU3RhY2tPZmZzZXRGcm9tRlAgPSBz
dGQ6Om1pbihtX3RhaWxDYWxsU3RhY2tPZmZzZXRGcm9tRlAsIHRhaWxDYWxsU3RhY2tPZmZzZXRG
cm9tRlApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbWFrZXNDYWxscyA9IHRydWU7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1
cmU+KCktPnJldHVybkNvdW50KCk7ICsraSkKLSAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHRt
cEZvclR5cGUoc2lnbmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpLT5yZXR1cm5UeXBlKGkp
KSk7Ci0gICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXM8RnVu
Y3Rpb25TaWduYXR1cmU+KCktPnJldHVybkNvdW50KCk7ICsraSkKKyAgICAgICAgcmVzdWx0cy5h
cHBlbmQodG1wRm9yVHlwZShzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPnJldHVy
blR5cGUoaSkpKTsKIAogICAgIFZlY3RvcjxVbmxpbmtlZFdhc21Ub1dhc21DYWxsPiogdW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbHMgPSAmbV91bmxpbmtlZFdhc21Ub1dhc21DYWxsczsKIAotICAgIGF1
dG8gZW1pdFVubGlua2VkV2FzbVRvV2FzbUNhbGwgPSBbJiwgdGhpc10oQ2FsbFBhdGNocG9pbnRE
YXRhIGRhdGEpIC0+IHZvaWQgewotICAgICAgICBDYWxsUGF0Y2hwb2ludERhdGE6OmZpcnN0X3R5
cGUgcGF0Y2hwb2ludCA9IGRhdGEuZmlyc3Q7Ci0gICAgICAgIENhbGxQYXRjaHBvaW50RGF0YTo6
c2Vjb25kX3R5cGUgaGFuZGxlID0gZGF0YS5zZWNvbmQ7Ci0gICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcihbdGhpcywgaGFuZGxlLCB1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgZnVuY3Rp
b25JbmRleCwgaXNUYWlsQ2FsbCwgdGFpbENhbGxTdGFja09mZnNldEZyb21GUF0oQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewot
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOwotICAgICAgICAgICAgaWYgKGlzVGFpbENhbGwpCi0gICAgICAgICAgICAgICAgcHJlcGFy
ZUZvclRhaWxDYWxsKGppdCwgcGFyYW1zLCB0YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQKTsKLSAg
ICAgICAgICAgIGhhbmRsZS5nZW5lcmF0ZShqaXQsIHBhcmFtcywgdGhpcyk7Ci0gICAgICAgICAg
ICBKSVRfQ09NTUVOVChqaXQsICJXYXNtIHRvIHdhc20gdW5saW5rZWQgZnVuY3Rpb24gY2FsbCBw
YXRjaHBvaW50Iik7Ci0gICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGlzVGFp
bENhbGwgPyBqaXQudGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJUYWlsQ2FsbCgpIDogaml0LnRocmVh
ZFNhZmVQYXRjaGFibGVOZWFyQ2FsbCgpOwotICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFt1
bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY2FsbCwgZnVuY3Rpb25JbmRleF0oTGlua0J1ZmZlciYg
bGlua0J1ZmZlcikgewotICAgICAgICAgICAgICAgIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLT5h
cHBlbmQoeyBsaW5rQnVmZmVyLmxvY2F0aW9uT2ZOZWFyQ2FsbDxXYXNtRW50cnlQdHJUYWc+KGNh
bGwpLCBmdW5jdGlvbkluZGV4IH0pOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAg
IH07Ci0KLSAgICBhdXRvIGVtaXRDYWxsVG9FbWJlZGRlciA9IFsmLCB0aGlzXShDYWxsUGF0Y2hw
b2ludERhdGEgZGF0YSkgLT4gdm9pZCB7Ci0gICAgICAgIENhbGxQYXRjaHBvaW50RGF0YTo6Zmly
c3RfdHlwZSBwYXRjaHBvaW50ID0gZGF0YS5maXJzdDsKLSAgICAgICAgQ2FsbFBhdGNocG9pbnRE
YXRhOjpzZWNvbmRfdHlwZSBoYW5kbGUgPSBkYXRhLnNlY29uZDsKLSAgICAgICAgLy8gV2UgbmVl
ZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlubmVkIHJlZ2lzdGVycyBzaW5jZSB3ZSBtaWdo
dCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KLSAgICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5
IGFzc3VtZSB3ZSBjb3VsZCBiZSBjYWxsaW5nIHRvIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBj
aGVja2luZy4KLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCBoYXZlIHRvIGRvIHRoaXM6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIxODEKLSAgICAgICAg
cGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUo
TWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKLSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKFt0aGlzLCBoYW5kbGUsIGlzVGFpbENhbGwsIHRhaWxDYWxsU3RhY2tPZmZzZXRGcm9t
RlBdKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1z
JiBwYXJhbXMpIHsKLSAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBh
bGxvd1NjcmF0Y2goaml0KTsKLSAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQotICAgICAgICAg
ICAgICAgIHByZXBhcmVGb3JUYWlsQ2FsbChqaXQsIHBhcmFtcywgdGFpbENhbGxTdGFja09mZnNl
dEZyb21GUCk7Ci0gICAgICAgICAgICBoYW5kbGUuZ2VuZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMp
OwotICAgICAgICAgICAgSklUX0NPTU1FTlQoaml0LCAiV2FzbSB0byBlbWJlZGRlciBpbXBvcnRl
ZCBmdW5jdGlvbiBjYWxsIHBhdGNocG9pbnQiKTsKLSAgICAgICAgICAgIGlmIChpc1RhaWxDYWxs
KQotICAgICAgICAgICAgICAgIGppdC5mYXJKdW1wKHBhcmFtc1swXS5ncHIoKSwgV2FzbUVudHJ5
UHRyVGFnKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBqaXQuY2FsbChwYXJh
bXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChwYXJhbXMudmFsdWUoKS0+dHlwZSgpKV0uZ3By
KCksIFdhc21FbnRyeVB0clRhZyk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBtX3Byb2Mu
cmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0ZXMoY2FsbGVlU3RhY2tTaXplKTsKLQotICAgIGF1
dG8gY3VycmVudEluc3RhbmNlID0gc2VsZigpLmdQdHIoKTsKLSAgICBhcHBlbmQoTW92ZSwgaW5z
dGFuY2VWYWx1ZSgpLCBjdXJyZW50SW5zdGFuY2UpOwotCiAgICAgaWYgKG1faW5mby5pc0ltcG9y
dGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpKSB7CiAgICAg
ICAgIG1fbWF4TnVtSlNDYWxsQXJndW1lbnRzID0gc3RkOjptYXgobV9tYXhOdW1KU0NhbGxBcmd1
bWVudHMsIHN0YXRpY19jYXN0PHVpbnQzMl90PihhcmdzLnNpemUoKSkpOwogCisgICAgICAgIGF1
dG8gY3VycmVudEluc3RhbmNlID0gc2VsZigpLmdQdHIoKTsKKyAgICAgICAgYXBwZW5kKE1vdmUs
IGluc3RhbmNlVmFsdWUoKSwgY3VycmVudEluc3RhbmNlKTsKKwogICAgICAgICBhdXRvIHRhcmdl
dEluc3RhbmNlID0gc2VsZigpLmdQdHIoKTsKIAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgYmV0dGVyIGlzZWwgaGVyZS4KQEAgLTMxODgsNTkgKzMxMDcsODcgQEAgYXV0byBBaXJJ
UkdlbmVyYXRvckJhc2U8RGVyaXZlZCwgRXhwcmVzc2lvblR5cGU+OjphZGRDYWxsKHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXgKIAogICAgICAgICBCYXNpY0Jsb2NrKiBpc1dhc21CbG9jayA9IG1fY29k
ZS5hZGRCbG9jaygpOwogICAgICAgICBCYXNpY0Jsb2NrKiBpc0VtYmVkZGVyQmxvY2sgPSBtX2Nv
ZGUuYWRkQmxvY2soKTsKKyAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gbV9jb2Rl
LmFkZEJsb2NrKCk7CisKICAgICAgICAgYXBwZW5kKERlcml2ZWQ6OkJyYW5jaFRlc3RQdHIsIEFy
Zzo6cmVzQ29uZChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybyksIHRhcmdldEluc3RhbmNlLCB0YXJn
ZXRJbnN0YW5jZSk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5zZXRTdWNjZXNzb3JzKGlzV2Fz
bUJsb2NrLCBpc0VtYmVkZGVyQmxvY2spOwogCi0gICAgICAgIGF1dG8ganVtcERlc3RpbmF0aW9u
ID0gc2VsZigpLmdQdHIoKTsKLSAgICAgICAgYXBwZW5kKGlzRW1iZWRkZXJCbG9jaywgTW92ZSwg
QXJnOjpiaWdJbW0oSW5zdGFuY2U6Om9mZnNldE9mV2FzbVRvRW1iZWRkZXJTdHViKGZ1bmN0aW9u
SW5kZXgpKSwganVtcERlc3RpbmF0aW9uKTsKLSAgICAgICAgYXBwZW5kKGlzRW1iZWRkZXJCbG9j
aywgRGVyaXZlZDo6QWRkUHRyLCBpbnN0YW5jZVZhbHVlKCksIGp1bXBEZXN0aW5hdGlvbik7Ci0g
ICAgICAgIGFwcGVuZChpc0VtYmVkZGVyQmxvY2ssIE1vdmUsIEFyZzo6YWRkcihqdW1wRGVzdGlu
YXRpb24pLCBqdW1wRGVzdGluYXRpb24pOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIHBh
aXIgPSBzZWxmKCkuZW1pdENhbGxQYXRjaHBvaW50KGlzV2FzbUJsb2NrLCBzaWduYXR1cmUsIHJl
c3VsdHMsIGFyZ3MpOworICAgICAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9IHBhaXIuZmlyc3Q7
CisgICAgICAgICAgICBhdXRvIGV4Y2VwdGlvbkhhbmRsZSA9IHBhaXIuc2Vjb25kOworICAgICAg
ICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlubmVkIHJlZ2lzdGVy
cyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KKyAgICAgICAgICAgIC8v
IFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UgY291bGQgYmUgY2FsbGluZyB0byBzb21ldGhp
bmcgdGhhdCBpcyBib3VuZHMgY2hlY2tpbmcuCisgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkbid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjE4MQorICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVk
UmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsK
KworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXSAoQ0NhbGxI
ZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykg
eworICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1Nj
cmF0Y2goaml0KTsKKyAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUuZ2VuZXJhdGUoaml0
LCBwYXJhbXMsIHRoaXMpOworICAgICAgICAgICAgICAgIEpJVF9DT01NRU5UKGppdCwgIlVubGlu
a2VkIHdhc20gdG8gd2FzbSBpbXBvcnRlZCBmdW5jdGlvbiBjYWxsIHBhdGNocG9pbnQiKTsKKyAg
ICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZlUGF0
Y2hhYmxlTmVhckNhbGwoKTsKKyAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rhc2soW3VubGlu
a2VkV2FzbVRvV2FzbUNhbGxzLCBjYWxsLCBmdW5jdGlvbkluZGV4XSAoTGlua0J1ZmZlciYgbGlu
a0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICB1bmxpbmtlZFdhc21Ub1dhc21DYWxscy0+
YXBwZW5kKHsgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8V2FzbUVudHJ5UHRyVGFnPihj
YWxsKSwgZnVuY3Rpb25JbmRleCB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IH0pOwogCi0gICAgICAgIGlmIChpc1RhaWxDYWxsKSB7Ci0gICAgICAgICAgICBlbWl0VW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbChzZWxmKCkuZW1pdFRhaWxDYWxsUGF0Y2hwb2ludChpc1dhc21CbG9j
aywgdGFpbENhbGxTdGFja09mZnNldEZyb21GUCwgd2FzbUNhbGxlZUluZm8ucGFyYW1zLCBhcmdz
KSk7Ci0gICAgICAgICAgICBlbWl0Q2FsbFRvRW1iZWRkZXIoc2VsZigpLmVtaXRUYWlsQ2FsbFBh
dGNocG9pbnQoaXNFbWJlZGRlckJsb2NrLCB0YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQLCB3YXNt
Q2FsbGVlSW5mby5wYXJhbXMsIGFyZ3MsIHsgeyBqdW1wRGVzdGluYXRpb24sIEIzOjpWYWx1ZVJl
cChHUFJJbmZvOjpub25QcmVzZXJ2ZWROb25Bcmd1bWVudEdQUjApIH0gfSkpOwotICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIGFwcGVuZChpc1dhc21CbG9jaywgSnVtcCk7Cisg
ICAgICAgICAgICBpc1dhc21CbG9jay0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24pOwogICAg
ICAgICB9CiAKLSAgICAgICAgZW1pdFVubGlua2VkV2FzbVRvV2FzbUNhbGwoc2VsZigpLmVtaXRD
YWxsUGF0Y2hwb2ludChpc1dhc21CbG9jaywgc2VsZigpLnRvQjNSZXN1bHRUeXBlKCZzaWduYXR1
cmUpLCByZXN1bHRzLCBhcmdzLCB3YXNtQ2FsbGVlSW5mbykpOwotICAgICAgICBlbWl0Q2FsbFRv
RW1iZWRkZXIoc2VsZigpLmVtaXRDYWxsUGF0Y2hwb2ludChpc0VtYmVkZGVyQmxvY2ssIHNlbGYo
KS50b0IzUmVzdWx0VHlwZSgmc2lnbmF0dXJlKSwgcmVzdWx0cywgYXJncywgd2FzbUNhbGxlZUlu
Zm8sIHsgeyBqdW1wRGVzdGluYXRpb24sIEIzOjpWYWx1ZVJlcChHUFJJbmZvOjpub25QcmVzZXJ2
ZWROb25Bcmd1bWVudEdQUjApIH0gfSkpOworICAgICAgICB7CisgICAgICAgICAgICBhdXRvIGp1
bXBEZXN0aW5hdGlvbiA9IHNlbGYoKS5nUHRyKCk7CisgICAgICAgICAgICBhcHBlbmQoaXNFbWJl
ZGRlckJsb2NrLCBNb3ZlLCBBcmc6OmJpZ0ltbShJbnN0YW5jZTo6b2Zmc2V0T2ZXYXNtVG9FbWJl
ZGRlclN0dWIoZnVuY3Rpb25JbmRleCkpLCBqdW1wRGVzdGluYXRpb24pOworICAgICAgICAgICAg
YXBwZW5kKGlzRW1iZWRkZXJCbG9jaywgRGVyaXZlZDo6QWRkUHRyLCBpbnN0YW5jZVZhbHVlKCks
IGp1bXBEZXN0aW5hdGlvbik7CisgICAgICAgICAgICBhcHBlbmQoaXNFbWJlZGRlckJsb2NrLCBN
b3ZlLCBBcmc6OmFkZHIoanVtcERlc3RpbmF0aW9uKSwganVtcERlc3RpbmF0aW9uKTsKKworICAg
ICAgICAgICAgVmVjdG9yPENvbnN0cmFpbmVkVG1wPiBqdW1wQXJnczsKKyAgICAgICAgICAgIGp1
bXBBcmdzLmFwcGVuZCh7IGp1bXBEZXN0aW5hdGlvbiwgQjM6OlZhbHVlUmVwOjpTb21lUmVnaXN0
ZXIgfSk7CisgICAgICAgICAgICBhdXRvIHBhaXIgPSBzZWxmKCkuZW1pdENhbGxQYXRjaHBvaW50
KGlzRW1iZWRkZXJCbG9jaywgc2lnbmF0dXJlLCByZXN1bHRzLCBhcmdzLCBXVEZNb3ZlKGp1bXBB
cmdzKSk7CisgICAgICAgICAgICBhdXRvKiBwYXRjaHBvaW50ID0gcGFpci5maXJzdDsKKyAgICAg
ICAgICAgIGF1dG8gZXhjZXB0aW9uSGFuZGxlID0gcGFpci5zZWNvbmQ7CisKKyAgICAgICAgICAg
IC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBpbm5lZCByZWdpc3RlcnMgc2lu
Y2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCisgICAgICAgICAgICAvLyBXZSBw
ZXNzaW1pc3RpY2FsbHkgYXNzdW1lIHdlIGNvdWxkIGJlIGNhbGxpbmcgdG8gc29tZXRoaW5nIHRo
YXQgaXMgYm91bmRzIGNoZWNraW5nLgorICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZG4n
dCBoYXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzIxODEKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lz
dGVySW5mbzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAg
ICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChq
aXQpOworICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS5nZW5lcmF0ZShqaXQsIHBhcmFt
cywgdGhpcyk7CisgICAgICAgICAgICAgICAgSklUX0NPTU1FTlQoaml0LCAiV2FzbSB0byBlbWJl
ZGRlciBpbXBvcnRlZCBmdW5jdGlvbiBjYWxsIHBhdGNocG9pbnQiKTsKKyAgICAgICAgICAgICAg
ICBqaXQuY2FsbChwYXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChwYXJhbXMudmFsdWUo
KS0+dHlwZSgpKV0uZ3ByKCksIFdhc21FbnRyeVB0clRhZyk7CisgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgYXBwZW5kKGlzRW1iZWRkZXJCbG9jaywgSnVtcCk7CisgICAgICAgICAgICBp
c0VtYmVkZGVyQmxvY2stPnNldFN1Y2Nlc3NvcnMoY29udGludWF0aW9uKTsKKyAgICAgICAgfQog
Ci0gICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IG1fY29kZS5hZGRCbG9jaygpOwog
ICAgICAgICBtX2N1cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKLSAgICAgICAgYXBwZW5kKGlz
RW1iZWRkZXJCbG9jaywgSnVtcCk7Ci0gICAgICAgIGlzRW1iZWRkZXJCbG9jay0+c2V0U3VjY2Vz
c29ycyhjb250aW51YXRpb24pOwotICAgICAgICBhcHBlbmQoaXNXYXNtQmxvY2ssIEp1bXApOwot
ICAgICAgICBpc1dhc21CbG9jay0+c2V0U3VjY2Vzc29ycyhjb250aW51YXRpb24pOwotCiAgICAg
ICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90aGVyIFdlYkFzc2VtYmx5IGlu
c3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91ciBNZW1vcnkuCiAgICAgICAg
IHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZ
ZXMsIG1faW5mby5tZW1vcnksIGN1cnJlbnRJbnN0YW5jZSwgY29udGludWF0aW9uKTsKLQotICAg
ICAgICByZXR1cm4geyB9OwotCi0gICAgfSAvLyBpc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rp
b25JbmRleFNwYWNlCi0KLSAgICBpZiAoaXNUYWlsQ2FsbCkgewotICAgICAgICBlbWl0VW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbChzZWxmKCkuZW1pdFRhaWxDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRC
bG9jaywgdGFpbENhbGxTdGFja09mZnNldEZyb21GUCwgd2FzbUNhbGxlZUluZm8ucGFyYW1zLCBh
cmdzKSk7Ci0gICAgICAgIHJldHVybiB7IH07CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXV0byBw
YWlyID0gc2VsZigpLmVtaXRDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgc2lnbmF0dXJl
LCByZXN1bHRzLCBhcmdzKTsKKyAgICAgICAgYXV0byogcGF0Y2hwb2ludCA9IHBhaXIuZmlyc3Q7
CisgICAgICAgIGF1dG8gZXhjZXB0aW9uSGFuZGxlID0gcGFpci5zZWNvbmQ7CisgICAgICAgIC8v
IFdlIG5lZWQgdG8gY2xvYmJlciB0aGUgc2l6ZSByZWdpc3RlciBzaW5jZSB0aGUgTExJbnQgYWx3
YXlzIGJvdW5kcyBjaGVja3MKKyAgICAgICAgaWYgKHNlbGYoKS51c2VTaWduYWxpbmdNZW1vcnko
KSB8fCBtX2luZm8ubWVtb3J5LmlzU2hhcmVkKCkpCisgICAgICAgICAgICBwYXRjaHBvaW50LT5j
bG9iYmVyTGF0ZShSZWdpc3RlclNldEJ1aWxkZXIoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5i
b3VuZHNDaGVja2luZ1NpemVSZWdpc3RlcikpOworICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5l
cmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2Vu
ZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJl
Z2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICBleGNlcHRpb25IYW5k
bGUuZ2VuZXJhdGUoaml0LCBwYXJhbXMsIHRoaXMpOworICAgICAgICAgICAgSklUX0NPTU1FTlQo
aml0LCAiVW5saW5rZWQgd2FzbSB0byB3YXNtIG5vbi1pbXBvcnRlZCBmdW5jdGlvbiBjYWxsIHBh
dGNocG9pbnQiKTsKKyAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRo
cmVhZFNhZmVQYXRjaGFibGVOZWFyQ2FsbCgpOworICAgICAgICAgICAgaml0LmFkZExpbmtUYXNr
KFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY2FsbCwgZnVuY3Rpb25JbmRleF0gKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICB1bmxpbmtlZFdhc21Ub1dhc21DYWxs
cy0+YXBwZW5kKHsgbGlua0J1ZmZlci5sb2NhdGlvbk9mTmVhckNhbGw8V2FzbUVudHJ5UHRyVGFn
PihjYWxsKSwgZnVuY3Rpb25JbmRleCB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsK
ICAgICB9CiAKLSAgICBhdXRvIGRhdGEgPSBzZWxmKCkuZW1pdENhbGxQYXRjaHBvaW50KG1fY3Vy
cmVudEJsb2NrLCBzZWxmKCkudG9CM1Jlc3VsdFR5cGUoJnNpZ25hdHVyZSksIHJlc3VsdHMsIGFy
Z3MsIHdhc21DYWxsZWVJbmZvKTsKLSAgICBhdXRvKiBwYXRjaHBvaW50ID0gZGF0YS5maXJzdDsK
LQotICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciB0aGUgc2l6ZSByZWdpc3RlciBzaW5jZSB0aGUg
TExJbnQgYWx3YXlzIGJvdW5kcyBjaGVja3MKLSAgICBpZiAoc2VsZigpLnVzZVNpZ25hbGluZ01l
bW9yeSgpIHx8IG1faW5mby5tZW1vcnkuaXNTaGFyZWQoKSkKLSAgICAgICAgcGF0Y2hwb2ludC0+
Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXRCdWlsZGVyIHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQo
KS5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3RlciB9KTsKLQotICAgIGVtaXRVbmxpbmtlZFdhc21U
b1dhc21DYWxsKFdURk1vdmUoZGF0YSkpOwotCi0gICAgaWYgKG1faW5mby5jYWxsQ2FuQ2xvYmJl
ckluc3RhbmNlKGZ1bmN0aW9uSW5kZXgpKQotICAgICAgICBzZWxmKCkucmVzdG9yZVdlYkFzc2Vt
Ymx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGltaXQ6OlllcywgbV9pbmZvLm1lbW9y
eSwgY3VycmVudEluc3RhbmNlLCBtX2N1cnJlbnRCbG9jayk7Ci0KICAgICByZXR1cm4geyB9Owog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBFeHByZXNzaW9uVHlwZT4K
LWF1dG8gQWlySVJHZW5lcmF0b3JCYXNlPERlcml2ZWQsIEV4cHJlc3Npb25UeXBlPjo6YWRkQ2Fs
bEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBvcmln
aW5hbFNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYg
cmVzdWx0cywgQ2FsbFR5cGUgY2FsbFR5cGUpIC0+IFBhcnRpYWxSZXN1bHQKK2F1dG8gQWlySVJH
ZW5lcmF0b3JCYXNlPERlcml2ZWQsIEV4cHJlc3Npb25UeXBlPjo6YWRkQ2FsbEluZGlyZWN0KHVu
c2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBvcmlnaW5hbFNpZ25hdHVy
ZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cykgLT4g
UGFydGlhbFJlc3VsdAogewogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJncy50
YWtlTGFzdCgpOwogICAgIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUgPSBvcmlnaW5h
bFNpZ25hdHVyZS5leHBhbmQoKTsKQEAgLTMyNDgsNiArMzE5NSw3IEBAIGF1dG8gQWlySVJHZW5l
cmF0b3JCYXNlPERlcml2ZWQsIEV4cHJlc3Npb25UeXBlPjo6YWRkQ2FsbEluZGlyZWN0KHVuc2ln
bmVkIHRhYmxlCiAgICAgQVNTRVJUKG1faW5mby50YWJsZUNvdW50KCkgPiB0YWJsZUluZGV4KTsK
ICAgICBBU1NFUlQobV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4XS50eXBlKCkgPT0gVGFibGVFbGVt
ZW50VHlwZTo6RnVuY3JlZik7CiAKKyAgICBtX21ha2VzQ2FsbHMgPSB0cnVlOwogICAgIC8vIE5v
dGU6IGNhbGwgaW5kaXJlY3QgY2FuIGNhbGwgZWl0aGVyIFdlYkFzc2VtYmx5RnVuY3Rpb24gb3Ig
V2ViQXNzZW1ibHlXcmFwcGVyRnVuY3Rpb24uIEJlY2F1c2UKICAgICAvLyBXZWJBc3NlbWJseVdy
YXBwZXJGdW5jdGlvbiBpcyBsaWtlIGNhbGxpbmcgaW50byB0aGUgZW1iZWRkZXIsIHdlIGNvbnNl
cnZhdGl2ZWx5IGFzc3VtZSBhbGwgY2FsbCBpbmRpcmVjdHMKICAgICAvLyBjYW4gYmUgdG8gdGhl
IGVtYmVkZGVyIGZvciBvdXIgc3RhY2sgY2hlY2sgY2FsY3VsYXRpb24uCkBAIC0zMzEyLDcgKzMy
NjAsNyBAQCBhdXRvIEFpcklSR2VuZXJhdG9yQmFzZTxEZXJpdmVkLCBFeHByZXNzaW9uVHlwZT46
OmFkZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZQogICAgIGF1dG8gY2FsbGVlSW5zdGFuY2Ug
PSBzZWxmKCkuZ1B0cigpOwogICAgIGFwcGVuZChNb3ZlLCBBcmc6OmluZGV4KGluc3RhbmNlc0J1
ZmZlciwgY2FsbGVlSW5kZXgsIHNpemVvZih2b2lkKiksIDApLCBjYWxsZWVJbnN0YW5jZSk7CiAK
LSAgICByZXR1cm4gc2VsZigpLmVtaXRJbmRpcmVjdENhbGwoY2FsbGVlSW5zdGFuY2UsIGNhbGxl
ZUNvZGUsIHNpZ25hdHVyZSwgYXJncywgcmVzdWx0cywgY2FsbFR5cGUpOworICAgIHJldHVybiBz
ZWxmKCkuZW1pdEluZGlyZWN0Q2FsbChjYWxsZWVJbnN0YW5jZSwgY2FsbGVlQ29kZSwgc2lnbmF0
dXJlLCBhcmdzLCByZXN1bHRzKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIERlcml2ZWQsIHR5
cGVuYW1lIEV4cHJlc3Npb25UeXBlPgpAQCAtMzMzOSwxNyArMzI4Nyw4IEBAIGF1dG8gQWlySVJH
ZW5lcmF0b3JCYXNlPERlcml2ZWQsIEV4cHJlc3Npb25UeXBlPjo6YWRkQ2FsbFJlZihjb25zdCBU
eXBlRGVmaW5pdGlvCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIEV4
cHJlc3Npb25UeXBlPgotYXV0byBBaXJJUkdlbmVyYXRvckJhc2U8RGVyaXZlZCwgRXhwcmVzc2lv
blR5cGU+OjplbWl0SW5kaXJlY3RDYWxsKEV4cHJlc3Npb25UeXBlIGNhbGxlZUluc3RhbmNlLCBF
eHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJl
LCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRz
LCBDYWxsVHlwZSBjYWxsVHlwZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBBaXJJUkdlbmVyYXRv
ckJhc2U8RGVyaXZlZCwgRXhwcmVzc2lvblR5cGU+OjplbWl0SW5kaXJlY3RDYWxsKEV4cHJlc3Np
b25UeXBlIGNhbGxlZUluc3RhbmNlLCBFeHByZXNzaW9uVHlwZSBjYWxsZWVDb2RlLCBjb25zdCBU
eXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBh
cmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0aWFsUmVzdWx0CiB7Ci0gICAgYm9vbCBp
c1RhaWxDYWxsID0gY2FsbFR5cGUgPT0gQ2FsbFR5cGU6OlRhaWxDYWxsOwotICAgIEFTU0VSVChj
YWxsVHlwZSA9PSBDYWxsVHlwZTo6Q2FsbCB8fCBpc1RhaWxDYWxsKTsKLQotICAgIGNvbnN0IGF1
dG8mIGNhbGxpbmdDb252ZW50aW9uID0gd2FzbUNhbGxpbmdDb252ZW50aW9uKCk7Ci0gICAgQ2Fs
bEluZm9ybWF0aW9uIHdhc21DYWxsZWVJbmZvID0gY2FsbGluZ0NvbnZlbnRpb24uY2FsbEluZm9y
bWF0aW9uRm9yKHNpZ25hdHVyZSwgQ2FsbFJvbGU6OkNhbGxlcik7Ci0gICAgQ2hlY2tlZDxpbnQz
Ml90PiBjYWxsZWVTdGFja1NpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGln
bm1lbnRCeXRlcygpLCB3YXNtQ2FsbGVlSW5mby5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6ZUlu
Qnl0ZXMpOwotCi0gICAgbV9wcm9jLnJlcXVlc3RDYWxsQXJnQXJlYVNpemVJbkJ5dGVzKGNhbGxl
ZVN0YWNrU2l6ZSk7Ci0KICAgICBhdXRvIGN1cnJlbnRJbnN0YW5jZSA9IHNlbGYoKS5nUHRyKCk7
CiAgICAgYXBwZW5kKE1vdmUsIGluc3RhbmNlVmFsdWUoKSwgY3VycmVudEluc3RhbmNlKTsKIApA
QCAtMzQwMCwzNiArMzMzOSwxNSBAQCBhdXRvIEFpcklSR2VuZXJhdG9yQmFzZTxEZXJpdmVkLCBF
eHByZXNzaW9uVHlwZT46OmVtaXRJbmRpcmVjdENhbGwoRXhwcmVzc2lvblR5cAogCiAgICAgYXBw
ZW5kKE1vdmUsIEFyZzo6YWRkcihjYWxsZWVDb2RlKSwgY2FsbGVlQ29kZSk7CiAKLSAgICBpZiAo
aXNUYWlsQ2FsbCkgewotICAgICAgICBtX21ha2VzVGFpbENhbGxzID0gdHJ1ZTsKLQotICAgICAg
ICBjb25zdCBUeXBlSW5kZXggY2FsbGVyVHlwZUluZGV4ID0gbV9pbmZvLmludGVybmFsRnVuY3Rp
b25UeXBlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdOwotICAgICAgICBjb25zdCBUeXBlRGVmaW5p
dGlvbiYgY2FsbGVyVHlwZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChjYWxsZXJU
eXBlSW5kZXgpOwotICAgICAgICBDYWxsSW5mb3JtYXRpb24gd2FzbUNhbGxlckluZm8gPSBjYWxs
aW5nQ29udmVudGlvbi5jYWxsSW5mb3JtYXRpb25Gb3IoY2FsbGVyVHlwZURlZmluaXRpb24sIENh
bGxSb2xlOjpDYWxsZWUpOwotICAgICAgICBDaGVja2VkPGludDMyX3Q+IGNhbGxlclN0YWNrU2l6
ZSA9IFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHdhc21D
YWxsZXJJbmZvLmhlYWRlckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcyk7Ci0gICAgICAgIENo
ZWNrZWQ8aW50MzJfdD4gdGFpbENhbGxTdGFja09mZnNldEZyb21GUCA9IGNhbGxlclN0YWNrU2l6
ZSAtIGNhbGxlZVN0YWNrU2l6ZTsKLSAgICAgICAgbV90YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQ
ID0gc3RkOjptaW4obV90YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQLCB0YWlsQ2FsbFN0YWNrT2Zm
c2V0RnJvbUZQKTsKLQotICAgICAgICBhdXRvIGRhdGEgPSBzZWxmKCkuZW1pdFRhaWxDYWxsUGF0
Y2hwb2ludChtX2N1cnJlbnRCbG9jaywgdGFpbENhbGxTdGFja09mZnNldEZyb21GUCwgd2FzbUNh
bGxlZUluZm8ucGFyYW1zLCBhcmdzLCB7IHsgY2FsbGVlQ29kZSwgQjM6OlZhbHVlUmVwKEdQUklu
Zm86Om5vblByZXNlcnZlZE5vbkFyZ3VtZW50R1BSMCkgfSB9KTsKLSAgICAgICAgYXV0byBwYXRj
aHBvaW50ID0gZGF0YS5maXJzdDsKLSAgICAgICAgYXV0byBleGNlcHRpb25IYW5kbGUgPSBkYXRh
LnNlY29uZDsKLSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9LCB0aGlzXShDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7Ci0gICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7Ci0gICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwoaml0LCBwYXJhbXMsIHRh
aWxDYWxsU3RhY2tPZmZzZXRGcm9tRlApOwotICAgICAgICAgICAgZXhjZXB0aW9uSGFuZGxlLmdl
bmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKLSAgICAgICAgICAgIGppdC5mYXJKdW1wKHBhcmFt
c1swXS5ncHIoKSwgV2FzbUVudHJ5UHRyVGFnKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVy
biB7IH07Ci0gICAgfQotCi0gICAgbV9tYWtlc0NhbGxzID0gdHJ1ZTsKKyAgICBWZWN0b3I8Q29u
c3RyYWluZWRUbXA+IGV4dHJhQXJnczsKKyAgICBleHRyYUFyZ3MuYXBwZW5kKGNhbGxlZUNvZGUp
OwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS5hczxGdW5jdGlvblNp
Z25hdHVyZT4oKS0+cmV0dXJuQ291bnQoKTsgKytpKQogICAgICAgICByZXN1bHRzLmFwcGVuZCh0
bXBGb3JUeXBlKHNpZ25hdHVyZS5hczxGdW5jdGlvblNpZ25hdHVyZT4oKS0+cmV0dXJuVHlwZShp
KSkpOwogCi0gICAgYXV0byBkYXRhID0gc2VsZigpLmVtaXRDYWxsUGF0Y2hwb2ludChtX2N1cnJl
bnRCbG9jaywgc2VsZigpLnRvQjNSZXN1bHRUeXBlKCZzaWduYXR1cmUpLCByZXN1bHRzLCBhcmdz
LCB3YXNtQ2FsbGVlSW5mbywgeyB7IGNhbGxlZUNvZGUsIEIzOjpWYWx1ZVJlcDo6U29tZVJlZ2lz
dGVyIH0gfSk7Ci0gICAgYXV0byogcGF0Y2hwb2ludCA9IGRhdGEuZmlyc3Q7Ci0gICAgYXV0byBl
eGNlcHRpb25IYW5kbGUgPSBkYXRhLnNlY29uZDsKKyAgICBhdXRvIHBhaXIgPSBzZWxmKCkuZW1p
dENhbGxQYXRjaHBvaW50KG1fY3VycmVudEJsb2NrLCBzaWduYXR1cmUsIHJlc3VsdHMsIGFyZ3Ms
IFdURk1vdmUoZXh0cmFBcmdzKSk7CisgICAgYXV0byogcGF0Y2hwb2ludCA9IHBhaXIuZmlyc3Q7
CisgICAgYXV0byBleGNlcHRpb25IYW5kbGUgPSBwYWlyLnNlY29uZDsKIAogICAgIC8vIFdlIG5l
ZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50aWFsIHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWln
aHQgYmUgbGVhdmluZyB0aGUgaW5zdGFuY2UuCiAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFz
c3VtZSB3ZSdyZSBhbHdheXMgY2FsbGluZyBzb21ldGhpbmcgdGhhdCBpcyBib3VuZHMgY2hlY2tp
bmcgc28KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9y
LmNwcAppbmRleCA1NmI2M2M2MGRmZWIuLmZlOTNiMjNlM2I2NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcApAQCAtOTksNyArOTksNiBA
QCBjbGFzcyBCM0lSR2VuZXJhdG9yIHsKIHB1YmxpYzoKICAgICB1c2luZyBFeHByZXNzaW9uVHlw
ZSA9IFZhcmlhYmxlKjsKICAgICB1c2luZyBSZXN1bHRMaXN0ID0gVmVjdG9yPEV4cHJlc3Npb25U
eXBlLCA4PjsKLSAgICB1c2luZyBDYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q2FsbFR5cGU7CiAK
ICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGllclN1cHBvcnRzU0lNRCA9IHRydWU7CiAKQEAg
LTU5OCwxNCArNTk3LDEzIEBAIHB1YmxpYzoKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VE
X1JFVFVSTiBlbmRUb3BMZXZlbChCbG9ja1NpZ25hdHVyZSwgY29uc3QgU3RhY2smKSB7IHJldHVy
biB7IH07IH0KIAogICAgIC8vIENhbGxzCi0gICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9S
RVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBjYWxsZWVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24m
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzLCBDYWxs
VHlwZSA9IENhbGxUeXBlOjpDYWxsKTsKLSAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JF
VFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlwZURlZmlu
aXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRz
LCBDYWxsVHlwZSA9IENhbGxUeXBlOjpDYWxsKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRDYWxsKHVpbnQzMl90IGNhbGxlZUluZGV4LCBjb25zdCBUeXBlRGVmaW5p
dGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMp
OworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxJbmRpcmVjdCh1
bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNz
aW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpOwogICAgIFBhcnRpYWxSZXN1bHQg
V0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGxSZWYoY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0
b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKICAgICBQYXJ0
aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRVbnJlYWNoYWJsZSgpOwogICAgIFBhcnRp
YWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENyYXNoKCk7Ci0gICAgUGFydGlhbFJlc3Vs
dCBXQVJOX1VOVVNFRF9SRVRVUk4gZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSogY2FsbGVlSW5zdGFu
Y2UsIFZhbHVlKiBjYWxsZWVDb2RlLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIGNvbnN0IFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmLCBDYWxsVHlwZSA9IENhbGxUeXBl
OjpDYWxsKTsKLSAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBjcmVhdGVDYWxsUGF0Y2hwb2ludChC
YXNpY0Jsb2NrKiwgQjM6OlR5cGUsIGNvbnN0IENhbGxJbmZvcm1hdGlvbiYsIGNvbnN0IFZlY3Rv
cjxFeHByZXNzaW9uVHlwZT4mIHRtcEFyZ3MsIGNvbnN0IFNjb3BlZExhbWJkYTx2b2lkKFBhdGNo
cG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+JiBwYXRjaHBvaW50
RnVuY3Rvcik7Ci0gICAgQjM6OlBhdGNocG9pbnRWYWx1ZSogY3JlYXRlVGFpbENhbGxQYXRjaHBv
aW50KEJhc2ljQmxvY2sqLCBjb25zdCBWZWN0b3I8QXJndW1lbnRMb2NhdGlvbj4mLCBjb25zdCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiB0bXBBcmdzLCBjb25zdCBDaGVja2VkPGludDMyX3Q+JiB0
YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChQYXRjaHBv
aW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4pPiYgcGF0Y2hwb2ludEZ1
bmN0b3IpOworICAgIFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGVtaXRJbmRpcmVj
dENhbGwoVmFsdWUqIGNhbGxlZUluc3RhbmNlLCBWYWx1ZSogY2FsbGVlQ29kZSwgY29uc3QgVHlw
ZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0Jik7
CisgICAgQjM6OlZhbHVlKiBjcmVhdGVDYWxsUGF0Y2hwb2ludChCYXNpY0Jsb2NrKiwgT3JpZ2lu
LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIGNv
bnN0IFNjb3BlZExhbWJkYTx2b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhj
ZXB0aW9uSGFuZGxlPik+JiBwYXRjaHBvaW50RnVuY3Rvcik7CiAKICAgICB2b2lkIGR1bXAoY29u
c3QgQ29udHJvbFN0YWNrJiwgY29uc3QgU3RhY2sqIGV4cHJlc3Npb25TdGFjayk7CiAgICAgdm9p
ZCBzZXRQYXJzZXIoRnVuY3Rpb25QYXJzZXI8QjNJUkdlbmVyYXRvcj4qIHBhcnNlcikgeyBtX3Bh
cnNlciA9IHBhcnNlcjsgfTsKQEAgLTc3MiwxMSArNzcwLDYgQEAgcHJpdmF0ZToKICAgICBHUFJS
ZWcgbV9ib3VuZHNDaGVja2luZ1NpemVHUFIgeyBJbnZhbGlkR1BSUmVnIH07CiAgICAgR1BSUmVn
IG1fd2FzbUNvbnRleHRJbnN0YW5jZUdQUiB7IEludmFsaWRHUFJSZWcgfTsKICAgICBib29sIG1f
bWFrZXNDYWxscyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX21ha2VzVGFpbENhbGxzIHsgZmFsc2Ug
fTsKLQotICAgIC8vIFRoaXMgdHJhY2tzIHRoZSBtYXhpbXVtIHN0YWNrIG9mZnNldCBmb3IgYSB0
YWlsIGNhbGwsIHRvIGJlIHVzZWQgaW4gdGhlIHN0YWNrIG92ZXJmbG93IGNoZWNrLgotICAgIENo
ZWNrZWQ8aW50MzJfdD4gbV90YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQIHsgMCB9OwotCiAgICAg
c3RkOjpvcHRpb25hbDxib29sPiBtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzOwogCiAgICAgVmFsdWUq
IG1faW5zdGFuY2VWYWx1ZSB7IG51bGxwdHIgfTsgLy8gQWx3YXlzIHVzZSB0aGUgYWNjZXNzb3Ig
YmVsb3cgdG8gZW5zdXJlIHRoZSBpbnN0YW5jZSB2YWx1ZSBpcyBtYXRlcmlhbGl6ZWQgd2hlbiB1
c2VkLgpAQCAtOTQ4LDcgKzk0MSw2IEBAIEIzSVJHZW5lcmF0b3I6OkIzSVJHZW5lcmF0b3IoY29u
c3QgTW9kdWxlSW5mb3JtYXRpb24mIGluZm8sIFByb2NlZHVyZSYgcHJvY2VkdXJlCiAgICAgICAg
IHN0YWNrT3ZlcmZsb3dDaGVjay0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKICAgICAgICAg
c3RhY2tPdmVyZmxvd0NoZWNrLT5zZXRHZW5lcmF0b3IoWz0sIHRoaXNdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAg
ICAgICAgICBjb25zdCBDaGVja2VkPGludDMyX3Q+IHdhc21GcmFtZVNpemUgPSBwYXJhbXMucHJv
YygpLmZyYW1lU2l6ZSgpOwotICAgICAgICAgICAgY29uc3QgQ2hlY2tlZDxpbnQzMl90PiB3YXNt
VGFpbENhbGxGcmFtZVNpemUgPSAtbV90YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQOwogICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgbWluaW11bVBhcmVudENoZWNrU2l6ZSA9IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIDEwMjQpOwogICAgICAgICAgICAg
Y29uc3QgdW5zaWduZWQgZXh0cmFGcmFtZVNpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yo
c3RhY2tBbGlnbm1lbnRCeXRlcygpLCBzdGQ6Om1heDx1aW50MzJfdD4oCiAgICAgICAgICAgICAg
ICAgLy8gVGhpcyBhbGxvd3MgdXMgdG8gZWxpZGUgc3RhY2sgY2hlY2tzIGZvciBmdW5jdGlvbnMg
dGhhdCBhcmUgdGVybWluYWwgbm9kZXMgaW4gdGhlIGNhbGwKQEAgLTk2MywyMiArOTU1LDkgQEAg
QjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihjb25zdCBNb2R1bGVJbmZvcm1hdGlvbiYgaW5m
bywgUHJvY2VkdXJlJiBwcm9jZWR1cmUKICAgICAgICAgICAgICAgICAvLyBzdGFjayB0aGF0IHN1
Y2ggYSBzdHViIHdvdWxkIHVzZS4KICAgICAgICAgICAgICAgICBDaGVja2VkPHVpbnQzMl90Piht
X21heE51bUpTQ2FsbEFyZ3VtZW50cykgKiBzaXplb2YoUmVnaXN0ZXIpICsgSlNDYWxsaW5nQ29u
dmVudGlvbjo6aGVhZGVyU2l6ZUluQnl0ZXMKICAgICAgICAgICAgICkpOwotCi0gICAgICAgICAg
ICBpbnQzMl90IGNoZWNrU2l6ZSA9IHdhc21GcmFtZVNpemUudmFsdWUoKTsKLSAgICAgICAgICAg
IGJvb2wgZnJhbWVTaXplTmVlZHNPdmVyZmxvd0NoZWNrID0gY2hlY2tTaXplID49IHN0YXRpY19j
YXN0PGludDMyX3Q+KG1pbmltdW1QYXJlbnRDaGVja1NpemUpOwotICAgICAgICAgICAgYm9vbCBu
ZWVkc092ZXJmbG93Q2hlY2sgPSBmcmFtZVNpemVOZWVkc092ZXJmbG93Q2hlY2s7Ci0KLSAgICAg
ICAgICAgIGlmIChtX21ha2VzQ2FsbHMpIHsKLSAgICAgICAgICAgICAgICBuZWVkc092ZXJmbG93
Q2hlY2sgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNoZWNrU2l6ZSA9IGNoZWNrZWRTdW08aW50
MzJfdD4oY2hlY2tTaXplLCBleHRyYUZyYW1lU2l6ZSkudmFsdWUoKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAobV9tYWtlc1RhaWxDYWxscykgewotICAgICAgICAgICAgICAgIENoZWNrZWQ8aW50
MzJfdD4gdGFpbENhbGxDaGVja1NpemUgPSBzdGQ6Om1heDxDaGVja2VkPGludDMyX3Q+Pih3YXNt
VGFpbENhbGxGcmFtZVNpemUgKyBleHRyYUZyYW1lU2l6ZSwgMCk7Ci0gICAgICAgICAgICAgICAg
Y2hlY2tTaXplID0gZnJhbWVTaXplTmVlZHNPdmVyZmxvd0NoZWNrID8gc3RkOjptYXg8Q2hlY2tl
ZDxpbnQzMl90Pj4odGFpbENhbGxDaGVja1NpemUsIHdhc21GcmFtZVNpemUpLnZhbHVlKCkgOiB0
YWlsQ2FsbENoZWNrU2l6ZS52YWx1ZSgpOwotICAgICAgICAgICAgICAgIG5lZWRzT3ZlcmZsb3dD
aGVjayA9IG5lZWRzT3ZlcmZsb3dDaGVjayB8fCBjaGVja1NpemUgPj0gc3RhdGljX2Nhc3Q8aW50
MzJfdD4obWluaW11bVBhcmVudENoZWNrU2l6ZSk7Ci0gICAgICAgICAgICB9Ci0KKyAgICAgICAg
ICAgIGNvbnN0IGludDMyX3QgY2hlY2tTaXplID0gbV9tYWtlc0NhbGxzID8gKHdhc21GcmFtZVNp
emUgKyBleHRyYUZyYW1lU2l6ZSkudmFsdWUoKSA6IHdhc21GcmFtZVNpemUudmFsdWUoKTsKICAg
ICAgICAgICAgIGJvb2wgbmVlZFVuZGVyZmxvd0NoZWNrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGNoZWNrU2l6ZSkgPiBPcHRpb25zOjpyZXNlcnZlZFpvbmVTaXplKCk7Ci0gICAgICAgICAgICBu
ZWVkc092ZXJmbG93Q2hlY2sgPSBuZWVkc092ZXJmbG93Q2hlY2sgfHwgbmVlZFVuZGVyZmxvd0No
ZWNrOworICAgICAgICAgICAgYm9vbCBuZWVkc092ZXJmbG93Q2hlY2sgPSBtX21ha2VzQ2FsbHMg
fHwgd2FzbUZyYW1lU2l6ZSA+PSBzdGF0aWNfY2FzdDxpbnQzMl90PihtaW5pbXVtUGFyZW50Q2hl
Y2tTaXplKSB8fCBuZWVkVW5kZXJmbG93Q2hlY2s7CiAKICAgICAgICAgICAgIC8vIFRoaXMgYWxs
b3dzIGxlYWYgZnVuY3Rpb25zIHRvIG5vdCBkbyBzdGFjayBjaGVja3MgaWYgdGhlaXIgZnJhbWUg
c2l6ZSBpcyB3aXRoaW4KICAgICAgICAgICAgIC8vIGNlcnRhaW4gbGltaXRzIHNpbmNlIHRoZWly
IGNhbGxlciB3b3VsZCBoYXZlIGFscmVhZHkgZG9uZSB0aGUgY2hlY2suCkBAIC0xMzgwLDEwICsx
MzU5LDggQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDcmFzaCgpIC0+IFBhcnRpYWxSZXN1bHQK
ICAgICByZXR1cm4geyB9OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENh
bGwoVmFsdWUqIGNhbGxlZUluc3RhbmNlLCBWYWx1ZSogY2FsbGVlQ29kZSwgY29uc3QgVHlwZURl
ZmluaXRpb24mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywg
UmVzdWx0TGlzdCYgcmVzdWx0cywgQ2FsbFR5cGUgY2FsbFR5cGUpIC0+IFBhcnRpYWxSZXN1bHQK
K2F1dG8gQjNJUkdlbmVyYXRvcjo6ZW1pdEluZGlyZWN0Q2FsbChWYWx1ZSogY2FsbGVlSW5zdGFu
Y2UsIFZhbHVlKiBjYWxsZWVDb2RlLCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKSAtPiBQYXJ0
aWFsUmVzdWx0CiB7Ci0gICAgYm9vbCBpc1RhaWxDYWxsID0gY2FsbFR5cGUgPT0gQ2FsbFR5cGU6
OlRhaWxDYWxsOwotICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Q2FsbCB8fCBpc1Rh
aWxDYWxsKTsKICAgICAvLyBEbyBhIGNvbnRleHQgc3dpdGNoIGlmIG5lZWRlZC4KICAgICB7CiAg
ICAgICAgIEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IG1fcHJvYy5hZGRCbG9jaygpOwpAQCAt
MTQzMCw0MSArMTQwNywxMSBAQCBhdXRvIEIzSVJHZW5lcmF0b3I6OmVtaXRJbmRpcmVjdENhbGwo
VmFsdWUqIGNhbGxlZUluc3RhbmNlLCBWYWx1ZSogY2FsbGVlQ29kZSwgYwogICAgICAgICBtX2N1
cnJlbnRCbG9jayA9IGNvbnRpbnVhdGlvbjsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvJiBjYWxs
aW5nQ29udmVudGlvbiA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpOwotICAgIENhbGxJbmZvcm1h
dGlvbiB3YXNtQ2FsbGVlSW5mbyA9IGNhbGxpbmdDb252ZW50aW9uLmNhbGxJbmZvcm1hdGlvbkZv
cihzaWduYXR1cmUsIENhbGxSb2xlOjpDYWxsZXIpOwotICAgIENoZWNrZWQ8aW50MzJfdD4gY2Fs
bGVlU3RhY2tTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50Qnl0
ZXMoKSwgd2FzbUNhbGxlZUluZm8uaGVhZGVyQW5kQXJndW1lbnRTdGFja1NpemVJbkJ5dGVzKTsK
LSAgICBjb25zdCBWZWN0b3I8QXJndW1lbnRMb2NhdGlvbj4mIGxvY2F0aW9ucyA9IHdhc21DYWxs
ZWVJbmZvLnBhcmFtczsKLQotICAgIG1fcHJvYy5yZXF1ZXN0Q2FsbEFyZ0FyZWFTaXplSW5CeXRl
cyhjYWxsZWVTdGFja1NpemUpOwotCi0gICAgaWYgKGlzVGFpbENhbGwpIHsKLSAgICAgICAgbV9t
YWtlc1RhaWxDYWxscyA9IHRydWU7Ci0KLSAgICAgICAgY29uc3QgVHlwZUluZGV4IGNhbGxlclR5
cGVJbmRleCA9IG1faW5mby5pbnRlcm5hbEZ1bmN0aW9uVHlwZUluZGljZXNbbV9mdW5jdGlvbklu
ZGV4XTsKLSAgICAgICAgY29uc3QgVHlwZURlZmluaXRpb24mIGNhbGxlclR5cGVEZWZpbml0aW9u
ID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY2FsbGVyVHlwZUluZGV4KTsKLSAgICAgICAgQ2FsbElu
Zm9ybWF0aW9uIHdhc21DYWxsZXJJbmZvID0gY2FsbGluZ0NvbnZlbnRpb24uY2FsbEluZm9ybWF0
aW9uRm9yKGNhbGxlclR5cGVEZWZpbml0aW9uLCBDYWxsUm9sZTo6Q2FsbGVlKTsKLSAgICAgICAg
Q2hlY2tlZDxpbnQzMl90PiBjYWxsZXJTdGFja1NpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxl
T2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCB3YXNtQ2FsbGVySW5mby5oZWFkZXJBbmRBcmd1bWVu
dFN0YWNrU2l6ZUluQnl0ZXMpOwotICAgICAgICBDaGVja2VkPGludDMyX3Q+IHRhaWxDYWxsU3Rh
Y2tPZmZzZXRGcm9tRlAgPSBjYWxsZXJTdGFja1NpemUgLSBjYWxsZWVTdGFja1NpemU7Ci0gICAg
ICAgIG1fdGFpbENhbGxTdGFja09mZnNldEZyb21GUCA9IHN0ZDo6bWluKG1fdGFpbENhbGxTdGFj
a09mZnNldEZyb21GUCwgdGFpbENhbGxTdGFja09mZnNldEZyb21GUCk7Ci0KLSAgICAgICAgY3Jl
YXRlVGFpbENhbGxQYXRjaHBvaW50KG1fY3VycmVudEJsb2NrLCBsb2NhdGlvbnMsIGFyZ3MsIHRh
aWxDYWxsU3RhY2tPZmZzZXRGcm9tRlAsCi0gICAgICAgICAgICBzY29wZWRMYW1iZGFSZWY8dm9p
ZChQYXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4pPihbPSwg
dGhpc10oUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsKLSAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5h
cHBlbmQoY2FsbGVlQ29kZSwgVmFsdWVSZXAoR1BSSW5mbzo6d2FzbVNjcmF0Y2hHUFIwKSk7Ci0g
ICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt0aGlzLCB0YWlsQ2FsbFN0
YWNrT2Zmc2V0RnJvbUZQLCBoYW5kbGVdKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAgICAgICAgICAgICAgICAgQWxs
b3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwotICAgICAgICAg
ICAgICAgICAgICBwcmVwYXJlRm9yVGFpbENhbGwoaml0LCBwYXJhbXMsIHRhaWxDYWxsU3RhY2tP
ZmZzZXRGcm9tRlApOwotICAgICAgICAgICAgICAgICAgICBoYW5kbGUtPmdlbmVyYXRlKGppdCwg
cGFyYW1zLCB0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgaml0LmZhckp1bXAocGFyYW1zWzBd
LmdwcigpLCBXYXNtRW50cnlQdHJUYWcpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgfSkpOwotICAgICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIG1fbWFrZXNDYWxscyA9
IHRydWU7Ci0KICAgICBCMzo6VHlwZSByZXR1cm5UeXBlID0gdG9CM1Jlc3VsdFR5cGUoJnNpZ25h
dHVyZSk7Ci0gICAgVmFsdWUqIGNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChtX2N1
cnJlbnRCbG9jaywgcmV0dXJuVHlwZSwgd2FzbUNhbGxlZUluZm8sIGFyZ3MsCi0gICAgICAgIHNj
b3BlZExhbWJkYVJlZjx2b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0
aW9uSGFuZGxlPik+KFs9LCB0aGlzXShQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQsIEJveDxQ
YXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBoYW5kbGUpIC0+IHZvaWQgeworICAgIFZhbHVlKiBj
YWxsUmVzdWx0ID0gY3JlYXRlQ2FsbFBhdGNocG9pbnQobV9jdXJyZW50QmxvY2ssIG9yaWdpbigp
LCBzaWduYXR1cmUsIGFyZ3MsCisgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNocG9p
bnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9LCB0aGlzXSAoUGF0
Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4g
aGFuZGxlKSAtPiB2b2lkIHsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVz
UGlubmVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5u
ZWQgPSB0cnVlOwogICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRp
YWwgcGlubmVkIHJlZ2lzdGVycyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5j
ZS4KICAgICAgICAgICAgIC8vIFdlIHBlc3NpbWlzdGljYWxseSBhc3N1bWUgd2UncmUgYWx3YXlz
IGNhbGxpbmcgc29tZXRoaW5nIHRoYXQgaXMgYm91bmRzIGNoZWNraW5nIHNvCiAgICAgICAgICAg
ICAvLyBiZWNhdXNlIHRoZSB3YXNtLT53YXNtIHRodW5rIHVuY29uZGl0aW9uYWxseSBvdmVycmlk
ZXMgdGhlIHNpemUgcmVnaXN0ZXJzLgpAQCAtMzU5NiwxMSArMzU0Myw2IEBAIGF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkUmV0dXJuKGNvbnN0IENvbnRyb2xEYXRhJiwgY29uc3QgU3RhY2smIHJldHVy
blZhbHVlcykgLT4KICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNoID0gbV9wcm9jLmFkZDxQYXRj
aHBvaW50VmFsdWU+KEIzOjpWb2lkLCBvcmlnaW4oKSk7CiAgICAgcGF0Y2gtPnNldEdlbmVyYXRv
cihbXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJh
bXMmIHBhcmFtcykgewogICAgICAgICBhdXRvIGNhbGxlZVNhdmVzID0gcGFyYW1zLmNvZGUoKS5j
YWxsZWVTYXZlUmVnaXN0ZXJBdE9mZnNldExpc3QoKTsKLQotICAgICAgICAvLyBOT1RFOiBvbiBB
Uk02NCwgaWYgdGhlIGNhbGxlZSBzYXZlcyBoYXZlIGJpZ2dlciBvZmZzZXRzIGR1ZSB0byBhIHBv
dGVudGlhbCB0YWlsIGNhbGwsCi0gICAgICAgIC8vIHRoZSBtYWNybyBhc3NlbWJsZXIgbWlnaHQg
YXNzZXJ0IHNjcmF0Y2ggcmVnaXN0ZXIgdXNhZ2Ugb24gbG9hZCBvcGVyYXRpb25zIGVtaXR0ZWQg
YnkgZW1pdFJlc3RvcmUuCi0gICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZUlm
IGFsbG93U2NyYXRjaChqaXQsIGlzQVJNNjQoKSB8fCBpc0FSTTY0RSgpKTsKLQogICAgICAgICBq
aXQuZW1pdFJlc3RvcmUoY2FsbGVlU2F2ZXMpOwogICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBp
bG9ndWUoKTsKICAgICAgICAgaml0LnJldCgpOwpAQCAtMzcyOCwyOCArMzY3MCwyOSBAQCBhdXRv
IEIzSVJHZW5lcmF0b3I6OmFkZEVuZFRvVW5yZWFjaGFibGUoQ29udHJvbEVudHJ5JiBlbnRyeSwg
Y29uc3QgU3RhY2smIGV4cHJlcwogfQogCiAKLUIzOjpQYXRjaHBvaW50VmFsdWUqIEIzSVJHZW5l
cmF0b3I6OmNyZWF0ZUNhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJsb2NrLCBCMzo6VHlwZSBy
ZXR1cm5UeXBlLCBjb25zdCBDYWxsSW5mb3JtYXRpb24mIHdhc21DYWxsZWVJbmZvLCBjb25zdCBW
ZWN0b3I8RXhwcmVzc2lvblR5cGU+JiB0bXBBcmdzLCBjb25zdCBTY29wZWRMYW1iZGE8dm9pZChQ
YXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4pPiYgcGF0Y2hw
b2ludEZ1bmN0b3IpCitCMzo6VmFsdWUqIEIzSVJHZW5lcmF0b3I6OmNyZWF0ZUNhbGxQYXRjaHBv
aW50KEJhc2ljQmxvY2sqIGJsb2NrLCBPcmlnaW4gb3JpZ2luLCBjb25zdCBUeXBlRGVmaW5pdGlv
biYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBjb25zdCBTY29wZWRM
YW1iZGE8dm9pZChQYXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRs
ZT4pPiYgcGF0Y2hwb2ludEZ1bmN0b3IpCiB7Ci0gICAgVmVjdG9yPEIzOjpDb25zdHJhaW5lZFZh
bHVlPiBjb25zdHJhaW5lZFBhdGNoQXJnczsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
dG1wQXJncy5zaXplKCk7ICsraSkKLSAgICAgICAgY29uc3RyYWluZWRQYXRjaEFyZ3MuYXBwZW5k
KEIzOjpDb25zdHJhaW5lZFZhbHVlKGdldChibG9jaywgdG1wQXJnc1tpXSksIHdhc21DYWxsZWVJ
bmZvLnBhcmFtc1tpXSkpOworICAgIFZlY3RvcjxCMzo6Q29uc3RyYWluZWRWYWx1ZT4gY29uc3Ry
YWluZWRBcmd1bWVudHM7CisgICAgQ2FsbEluZm9ybWF0aW9uIHdhc21DYWxsSW5mbyA9IHdhc21D
YWxsaW5nQ29udmVudGlvbigpLmNhbGxJbmZvcm1hdGlvbkZvcihzaWduYXR1cmUpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgKytpKQorICAgICAgICBjb25zdHJh
aW5lZEFyZ3VtZW50cy5hcHBlbmQoQjM6OkNvbnN0cmFpbmVkVmFsdWUoZ2V0KGJsb2NrLCBhcmdz
W2ldKSwgd2FzbUNhbGxJbmZvLnBhcmFtc1tpXSkpOworCisgICAgbV9wcm9jLnJlcXVlc3RDYWxs
QXJnQXJlYVNpemVJbkJ5dGVzKFdURjo6cm91bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVu
dEJ5dGVzKCksIHdhc21DYWxsSW5mby5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMp
KTsKIAogICAgIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUg
PSBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT46OmNyZWF0ZShtX2hhc0V4Y2VwdGlvbkhh
bmRsZXJzKTsKIAotICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fcHJvYy5hZGQ8
UGF0Y2hwb2ludFZhbHVlPihyZXR1cm5UeXBlLCBvcmlnaW4oKSk7Ci0gICAgcGF0Y2hwb2ludC0+
ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOwotICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVh
ZHNQaW5uZWQgPSB0cnVlOworICAgIEIzOjpUeXBlIHJldHVyblR5cGUgPSB0b0IzUmVzdWx0VHlw
ZSgmc2lnbmF0dXJlKTsKKyAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX3Byb2Mu
YWRkPFBhdGNocG9pbnRWYWx1ZT4ocmV0dXJuVHlwZSwgb3JpZ2luKTsKICAgICBwYXRjaHBvaW50
LT5jbG9iYmVyRWFybHkoUmVnaXN0ZXJTZXRCdWlsZGVyOjptYWNyb0Nsb2JiZXJlZFJlZ2lzdGVy
cygpKTsKICAgICBwYXRjaHBvaW50LT5jbG9iYmVyTGF0ZShSZWdpc3RlclNldEJ1aWxkZXI6OnJl
Z2lzdGVyc1RvU2F2ZUZvckpTQ2FsbChtX3Byb2MudXNlc1NJTUQoKSA/IFJlZ2lzdGVyU2V0QnVp
bGRlcjo6YWxsUmVnaXN0ZXJzKCkgOiBSZWdpc3RlclNldEJ1aWxkZXI6OmFsbFNjYWxhclJlZ2lz
dGVycygpKSk7CiAgICAgcGF0Y2hwb2ludEZ1bmN0b3IocGF0Y2hwb2ludCwgZXhjZXB0aW9uSGFu
ZGxlKTsKLSAgICBwYXRjaHBvaW50LT5hcHBlbmRWZWN0b3IoY29uc3RyYWluZWRQYXRjaEFyZ3Mp
OworICAgIHBhdGNocG9pbnQtPmFwcGVuZFZlY3Rvcihjb25zdHJhaW5lZEFyZ3VtZW50cyk7CiAK
ICAgICAqZXhjZXB0aW9uSGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKGJs
b2NrLCBwYXRjaHBvaW50KTsKIAotICAgIGNvbnN0IFZlY3RvcjxBcmd1bWVudExvY2F0aW9uLCAx
PiAmY29uc3RyYWluZWRSZXN1bHRMb2NhdGlvbnMgPSB3YXNtQ2FsbGVlSW5mby5yZXN1bHRzOwog
ICAgIGlmIChyZXR1cm5UeXBlICE9IEIzOjpWb2lkKSB7CiAgICAgICAgIFZlY3RvcjxCMzo6VmFs
dWVSZXAsIDE+IHJlc3VsdENvbnN0cmFpbnRzOwotICAgICAgICBmb3IgKGF1dG8gdmFsdWVMb2Nh
dGlvbiA6IGNvbnN0cmFpbmVkUmVzdWx0TG9jYXRpb25zKQorICAgICAgICBmb3IgKGF1dG8gdmFs
dWVMb2NhdGlvbiA6IHdhc21DYWxsSW5mby5yZXN1bHRzKQogICAgICAgICAgICAgcmVzdWx0Q29u
c3RyYWludHMuYXBwZW5kKEIzOjpWYWx1ZVJlcCh2YWx1ZUxvY2F0aW9uLmxvY2F0aW9uKSk7CiAg
ICAgICAgIHBhdGNocG9pbnQtPnJlc3VsdENvbnN0cmFpbnRzID0gV1RGTW92ZShyZXN1bHRDb25z
dHJhaW50cyk7CiAgICAgfQpAQCAtMzc1NywxNTkgKzM3MDAsMTIgQEAgQjM6OlBhdGNocG9pbnRW
YWx1ZSogQjNJUkdlbmVyYXRvcjo6Y3JlYXRlQ2FsbFBhdGNocG9pbnQoQmFzaWNCbG9jayogYmxv
Y2ssIEIzOjoKICAgICByZXR1cm4gcGF0Y2hwb2ludDsKIH0KIAotQjM6OlBhdGNocG9pbnRWYWx1
ZSogQjNJUkdlbmVyYXRvcjo6Y3JlYXRlVGFpbENhbGxQYXRjaHBvaW50KEJhc2ljQmxvY2sqIGJs
b2NrLCBjb25zdCBWZWN0b3I8QXJndW1lbnRMb2NhdGlvbj4mIGNvbnN0cmFpbmVkQXJnTG9jYXRp
b25zLCBjb25zdCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiB0bXBBcmdzLCBjb25zdCBDaGVja2Vk
PGludDMyX3Q+JiB0YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQLCBjb25zdCBTY29wZWRMYW1iZGE8
dm9pZChQYXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhhbmRsZT4pPiYg
cGF0Y2hwb2ludEZ1bmN0b3IpCi17Ci0gICAgLy8gICAgTGF5b3V0IG9mIHN0YWNrIHJpZ2h0IGJl
Zm9yZSB0YWlsIGNhbGwgRiAtPiBHCi0gICAgLy8KLSAgICAvLwotICAgIC8vICAgIHwgICAgICAg
ICAgLi4uLi4uICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIC4uLi4uLiAgICAg
ICAgICAgIHwKLSAgICAvLyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tIDB4
NTUwMWZmNGZmMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDwtLSAweDU1MDFmZjRmZjAKLSAg
ICAvLyAgICB8ICAgICAgICAgICBGLmFyZ04gICAgICAgICAgIHwgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLT4gICAgICAgfCAgICAg
ICAgICAgRy5hcmdNICAgICAgICAgICB8ICAgIHwKLSAgICAvLyAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsgICAgfCBsb3dlciBhZGRyZXNzICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
ICAgIHwgbG93ZXIgYWRkcmVzcwotICAgIC8vICAgIHwgICAgICAgICAgIEYuYXJnMSAgICAgICAg
ICAgfCAgICB2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICBhcmcxICAgICAgICAgICAgIHwgICAgdgotICAg
IC8vICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAvLyAgICB8ICAgICAgICAgICBGLmFyZzAgICAg
ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgYXJnMCAgICAgICAgICAgICB8Ci0gICAg
Ly8gICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgIC8vICAgIHwgICAgICAgICAgIEYudGhpcyAgICAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB0aGlzJyAgICAgICAgICAgIHwKLSAgICAv
LyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgfCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgQS5DLkkuVC4nICAgICAgICAgfAotICAgIC8v
ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICAvLyAgICB8ICBGLmNhbGxlZSAoYWthIEYsIHVudXNl
ZCBpbiB3YXNtKSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgRy5jYWxsZWUgICAgICAgICAgICB8Ci0gICAgLy8g
ICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKwotICAgIC8vICAgIHwgICAgICAgIEYuY29kZUJsb2NrICAgICAg
ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2h1ZmZsZVN0YWNrQXJncy4uLikg
ICAgICAgICAgICAgICAgICB8ICAgICAgICBHLmNvZGVCbG9jayAgICAgICAgIHwKLSAgICAvLyAg
ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgfCByZXR1cm4tYWRkcmVzcyBhZnRlciBGICAg
ICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICByZXR1cm4tYWRkcmVzcyBhZnRlciBGICAgfAotICAgIC8vICAg
ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICAgICAgU1AgYXQgRyBwcm9sb2d1ZSAtPiArLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsKLSAgICAvLyAgICB8ICAgICAgICAgIEYuY2FsbGVyLkZQICAgICAg
IHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgICAgICAgICBGLmNhbGxlci5GUCAgICAgICB8Ci0gICAgLy8gICAg
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICA8LSBGLkZQICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgIEcuRlAgYWZ0ZXIgRyBwcm9sb2d1ZS0+ICstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotICAgIC8vICAgIHwgICAgICAgICAgY2FsbGVlIHNhdmVzICAgICAg
fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8ICAgICAgICAgIGNhbGxlZSBzYXZlcyAgICAgIHwKLSAgICAvLyAgICAr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgICA8LS0tLSsgICBhcmdNIHRvIEcgIC0tLS0t
LS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCi0gICAgLy8gICAgfCAgICAgICAgICBGLmxvY2FsMCAgICAgICAgICB8
ICAgICAgICB8ICAgLi4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgICAgICAgRy5sb2NhbDAgICAgICAgICAgfAotICAgIC8vICAgICst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgfCAgIGFyZzAgdG8gRyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLSAgICAvLyAgICB8ICAgICAgICAgIEYubG9jYWwxICAgICAgICAgIHwg
ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICAgICAgICBHLmxvY2FsMSAgICAgICAgICB8Ci0gICAgLy8gICAgKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKwotICAgIC8vICAgIHwgICAgICAgICAgRi5sb2NhbE4gICAgICAgICAgfCAg
ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgICAgICAgIEcubG9jYWxNICAgICAgICAgIHwKLSAgICAvLyAgICArLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCi0gICAgLy8gICAgfCAgICAgICAgICAuLi4uLi4gICAgICAgICAgICB8ICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgLi4uLi4uICAgICAgICAgICAgfAotICAgIC8vICAgICstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAgPC0gU1AgfCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNQIGFmdGVyIEcgcHJvbG9ndWUtPiArLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICst
IE5ldyB0bXAgc3RhY2sgc2xvdHMgYXJlIGV2ZW50dWFsbHkgYWxsb2NhdGVkIGhlcmUKLSAgICAv
LwotICAgIC8vICBTZWUgaHR0cHM6Ly9sZWFuaW5ndGVjaC5jb20vZmFudGFzdGljLXRhaWwtY2Fs
bHMtYW5kLWhvdy10by1pbXBsZW1lbnQtdGhlbS8gZm9yIGEgbW9yZSBpbi1kZXB0aCBleHBsYW5h
dGlvbi4KLQotICAgIGF1dG8gc2h1ZmZsZVN0YWNrQXJnID0gW3RoaXMsIGJsb2NrLCB0YWlsQ2Fs
bFN0YWNrT2Zmc2V0RnJvbUZQXShWYWx1ZSogdmFsdWUsIGludDMyX3Qgb2Zmc2V0RnJvbVNQKSB7
Ci0gICAgICAgIENoZWNrZWQ8aW50MzJfdD4gb2Zmc2V0RnJvbUZQID0gdGFpbENhbGxTdGFja09m
ZnNldEZyb21GUCArIG9mZnNldEZyb21TUDsKLQotICAgICAgICBpZiAob2Zmc2V0RnJvbUZQIDwg
MCkgewotICAgICAgICAgICAgQWlyOjpTdGFja1Nsb3QqIHN0YWNrU2xvdCA9IG1fcHJvYy5hZGRT
dGFja1Nsb3Qoc2l6ZW9mKFJlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzdGFja1Nsb3QtPnNldE9m
ZnNldEZyb21GUChvZmZzZXRGcm9tRlApOwotICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBi
bG9jay0+YXBwZW5kTmV3PFNsb3RCYXNlVmFsdWU+KG1fcHJvYywgT3JpZ2luKCksIHN0YWNrU2xv
dCk7Ci0gICAgICAgICAgICBibG9jay0+YXBwZW5kTmV3PEIzOjpNZW1vcnlWYWx1ZT4obV9wcm9j
LCBCMzo6U3RvcmUsIE9yaWdpbigpLCB2YWx1ZSwgYWRkcmVzcyk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBCMzo6VmFsdWUqIGFkZHJlc3MgPSBibG9jay0+YXBw
ZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QWRkLCBPcmlnaW4oKSwgZnJhbWVQb2ludGVy
KCksIGNvbnN0YW50KHBvaW50ZXJUeXBlKCksIG9mZnNldEZyb21GUCkpOwotICAgICAgICBibG9j
ay0+YXBwZW5kTmV3PEIzOjpNZW1vcnlWYWx1ZT4obV9wcm9jLCBCMzo6U3RvcmUsIE9yaWdpbigp
LCB2YWx1ZSwgYWRkcmVzcyk7Ci0gICAgfTsKLQotICAgIFZhbHVlKiByZXR1cm5BZGRyZXNzID0g
YmxvY2stPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4obV9wcm9jLCBCMzo6TG9hZCwgcG9pbnRlclR5
cGUoKSwgb3JpZ2luKCksIGZyYW1lUG9pbnRlcigpLCBzYWZlQ2FzdDxpbnQzMl90PihDYWxsRnJh
bWU6OnJldHVyblBDT2Zmc2V0KCkpKTsKLSAgICBzaHVmZmxlU3RhY2tBcmcocmV0dXJuQWRkcmVz
cywgLXN0YXRpY19jYXN0PGludDMyX3Q+KHNpemVvZihSZWdpc3RlcikpKTsKLSAgICBWYWx1ZSog
cHJldmlvdXNGcmFtZVBvaW50ZXIgPSBibG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3By
b2MsIExvYWQsIHBvaW50ZXJUeXBlKCksIG9yaWdpbigpLCBmcmFtZVBvaW50ZXIoKSk7Ci0KLSAg
ICBWZWN0b3I8QjM6OkNvbnN0cmFpbmVkVmFsdWU+IGNvbnN0cmFpbmVkQXJndW1lbnRzOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0bXBBcmdzLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
IGlmIChjb25zdHJhaW5lZEFyZ0xvY2F0aW9uc1tpXS5sb2NhdGlvbi5pc1N0YWNrQXJndW1lbnQo
KSkgewotICAgICAgICAgICAgc2h1ZmZsZVN0YWNrQXJnKGdldChibG9jaywgdG1wQXJnc1tpXSks
IGNvbnN0cmFpbmVkQXJnTG9jYXRpb25zW2ldLmxvY2F0aW9uLm9mZnNldEZyb21TUCgpKTsKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0cmFpbmVkQXJndW1l
bnRzLmFwcGVuZChCMzo6Q29uc3RyYWluZWRWYWx1ZShnZXQoYmxvY2ssIHRtcEFyZ3NbaV0pLCBj
b25zdHJhaW5lZEFyZ0xvY2F0aW9uc1tpXSkpOwotICAgIH0KLSAgICBjb25zdHJhaW5lZEFyZ3Vt
ZW50cy5hcHBlbmQoQjM6OkNvbnN0cmFpbmVkVmFsdWUocHJldmlvdXNGcmFtZVBvaW50ZXIsIFZh
bHVlUmVwKE1hY3JvQXNzZW1ibGVyOjpmcmFtZVBvaW50ZXJSZWdpc3RlcikpKTsKLQotICAgIEJv
eDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPiBleGNlcHRpb25IYW5kbGUgPSBCb3g8UGF0Y2hw
b2ludEV4Y2VwdGlvbkhhbmRsZT46OmNyZWF0ZShtX2hhc0V4Y2VwdGlvbkhhbmRsZXJzKTsKLQot
ICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fcHJvYy5hZGQ8UGF0Y2hwb2ludFZh
bHVlPihCMzo6Vm9pZCwgb3JpZ2luKCkpOwotCi0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy50ZXJt
aW5hbCA9IHRydWU7Ci0gICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVl
OwotICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOwotCi0gICAgUmVn
aXN0ZXJTZXRCdWlsZGVyIGNsb2JiZXJzOwotICAgIGNsb2JiZXJzLm1lcmdlKFJlZ2lzdGVyU2V0
QnVpbGRlcjo6Y2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKLSAgICBjbG9iYmVycy5leGNsdWRlKFJl
Z2lzdGVyU2V0QnVpbGRlcjo6c3RhY2tSZWdpc3RlcnMoKSk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xv
YmJlcihjbG9iYmVycyk7Ci0gICAgcGF0Y2hwb2ludC0+Y2xvYmJlckVhcmx5KFJlZ2lzdGVyU2V0
QnVpbGRlcjo6bWFjcm9DbG9iYmVyZWRSZWdpc3RlcnMoKSk7Ci0KLSAgICBwYXRjaHBvaW50RnVu
Y3RvcihwYXRjaHBvaW50LCBleGNlcHRpb25IYW5kbGUpOwotICAgIHBhdGNocG9pbnQtPmFwcGVu
ZFZlY3RvcihXVEZNb3ZlKGNvbnN0cmFpbmVkQXJndW1lbnRzKSk7Ci0KLSAgICAqZXhjZXB0aW9u
SGFuZGxlID0gcHJlcGFyZVBhdGNocG9pbnRGb3JFeGNlcHRpb25zKGJsb2NrLCBwYXRjaHBvaW50
KTsKLQotICAgIGJsb2NrLT5hcHBlbmQocGF0Y2hwb2ludCk7Ci0gICAgcmV0dXJuIHBhdGNocG9p
bnQ7Ci19Ci0KLWF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50MzJfdCBmdW5jdGlvbklu
ZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvblR5
cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzLCBDYWxsVHlwZSBjYWxsVHlwZSkgLT4gUGFy
dGlhbFJlc3VsdAorYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1bmN0aW9u
SW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9u
VHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAg
ICBib29sIGlzVGFpbENhbGwgPSBjYWxsVHlwZSA9PSBDYWxsVHlwZTo6VGFpbENhbGw7Ci0gICAg
QVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlOjpDYWxsIHx8IGlzVGFpbENhbGwpOwogICAgIEFT
U0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFyZ3VtZW50Q291bnQoKSA9
PSBhcmdzLnNpemUoKSk7CiAKLSAgICBjb25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdh
c21DYWxsaW5nQ29udmVudGlvbigpOwotICAgIENoZWNrZWQ8aW50MzJfdD4gdGFpbENhbGxTdGFj
a09mZnNldEZyb21GUDsKLSAgICBDYWxsSW5mb3JtYXRpb24gd2FzbUNhbGxlZUluZm8gPSBjYWxs
aW5nQ29udmVudGlvbi5jYWxsSW5mb3JtYXRpb25Gb3Ioc2lnbmF0dXJlLCBDYWxsUm9sZTo6Q2Fs
bGVyKTsKLSAgICBDaGVja2VkPGludDMyX3Q+IGNhbGxlZVN0YWNrU2l6ZSA9IFdURjo6cm91bmRV
cFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHdhc21DYWxsZWVJbmZvLmhlYWRl
ckFuZEFyZ3VtZW50U3RhY2tTaXplSW5CeXRlcyk7Ci0KLSAgICBCMzo6VHlwZSByZXR1cm5UeXBl
OwotICAgIFZhbHVlKiBqdW1wRGVzdGluYXRpb24gPSBudWxscHRyOwotCi0gICAgaWYgKGlzVGFp
bENhbGwpIHsKLSAgICAgICAgbV9tYWtlc1RhaWxDYWxscyA9IHRydWU7Ci0KLSAgICAgICAgY29u
c3QgVHlwZUluZGV4IGNhbGxlclR5cGVJbmRleCA9IG1faW5mby5pbnRlcm5hbEZ1bmN0aW9uVHlw
ZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKLSAgICAgICAgY29uc3QgVHlwZURlZmluaXRpb24m
IGNhbGxlclR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY2FsbGVyVHlwZUlu
ZGV4KTsKLSAgICAgICAgQ2FsbEluZm9ybWF0aW9uIHdhc21DYWxsZXJJbmZvID0gY2FsbGluZ0Nv
bnZlbnRpb24uY2FsbEluZm9ybWF0aW9uRm9yKGNhbGxlclR5cGVEZWZpbml0aW9uLCBDYWxsUm9s
ZTo6Q2FsbGVlKTsKLSAgICAgICAgQ2hlY2tlZDxpbnQzMl90PiBjYWxsZXJTdGFja1NpemUgPSBX
VEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRCeXRlcygpLCB3YXNtQ2FsbGVy
SW5mby5oZWFkZXJBbmRBcmd1bWVudFN0YWNrU2l6ZUluQnl0ZXMpOwotICAgICAgICB0YWlsQ2Fs
bFN0YWNrT2Zmc2V0RnJvbUZQID0gY2FsbGVyU3RhY2tTaXplIC0gY2FsbGVlU3RhY2tTaXplOwot
Ci0gICAgICAgIG1fdGFpbENhbGxTdGFja09mZnNldEZyb21GUCA9IHN0ZDo6bWluKG1fdGFpbENh
bGxTdGFja09mZnNldEZyb21GUCwgdGFpbENhbGxTdGFja09mZnNldEZyb21GUCk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgbV9tYWtlc0NhbGxzID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuVHlwZSA9
IHRvQjNSZXN1bHRUeXBlKCZzaWduYXR1cmUpOwotICAgIH0KLQotICAgIFZlY3RvcjxVbmxpbmtl
ZFdhc21Ub1dhc21DYWxsPiogdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHMgPSAmbV91bmxpbmtlZFdh
c21Ub1dhc21DYWxsczsKLQotICAgIGF1dG8gZW1pdFVubGlua2VkV2FzbVRvV2FzbUNhbGwgPSBb
JiwgdGhpc10oUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsKLSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2Vu
ZXJhdG9yKFt0aGlzLCBoYW5kbGUsIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBmdW5jdGlvbklu
ZGV4LCBpc1RhaWxDYWxsLCB0YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQXShDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7Ci0gICAg
ICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7
Ci0gICAgICAgICAgICBpZiAoaXNUYWlsQ2FsbCkKLSAgICAgICAgICAgICAgICBwcmVwYXJlRm9y
VGFpbENhbGwoaml0LCBwYXJhbXMsIHRhaWxDYWxsU3RhY2tPZmZzZXRGcm9tRlApOwotICAgICAg
ICAgICAgaGFuZGxlLT5nZW5lcmF0ZShqaXQsIHBhcmFtcywgdGhpcyk7Ci0gICAgICAgICAgICBD
Q2FsbEhlbHBlcnM6OkNhbGwgY2FsbCA9IGlzVGFpbENhbGwgPyBqaXQudGhyZWFkU2FmZVBhdGNo
YWJsZU5lYXJUYWlsQ2FsbCgpIDogaml0LnRocmVhZFNhZmVQYXRjaGFibGVOZWFyQ2FsbCgpOwot
ICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY2Fs
bCwgZnVuY3Rpb25JbmRleF0oTGlua0J1ZmZlciYgbGlua0J1ZmZlcikgewotICAgICAgICAgICAg
ICAgIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLT5hcHBlbmQoeyBsaW5rQnVmZmVyLmxvY2F0aW9u
T2ZOZWFyQ2FsbDxXYXNtRW50cnlQdHJUYWc+KGNhbGwpLCBmdW5jdGlvbkluZGV4IH0pOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBhdXRvIGVtaXRDYWxsVG9F
bWJlZGRlciA9IFsmLCB0aGlzXShQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQsIEJveDxQYXRj
aHBvaW50RXhjZXB0aW9uSGFuZGxlPiBoYW5kbGUpIC0+IHZvaWQgewotICAgICAgICBwYXRjaHBv
aW50LT5hcHBlbmQoanVtcERlc3RpbmF0aW9uLCBWYWx1ZVJlcChHUFJJbmZvOjp3YXNtU2NyYXRj
aEdQUjApKTsKLSAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlu
bmVkIHJlZ2lzdGVycyBzaW5jZSB3ZSBtaWdodCBiZSBsZWF2aW5nIHRoZSBpbnN0YW5jZS4KLSAg
ICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSBjb3VsZCBiZSBjYWxsaW5nIHRv
IHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZy4KLSAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZG4ndCBoYXZlIHRvIGRvIHRoaXM6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzIxODEKLSAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVk
UmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsK
LSAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFt0aGlzLCBoYW5kbGUsIHJldHVyblR5
cGUsIGlzVGFpbENhbGwsIHRhaWxDYWxsU3RhY2tPZmZzZXRGcm9tRlBdKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKLSAgICAg
ICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsK
LSAgICAgICAgICAgIGlmIChpc1RhaWxDYWxsKQotICAgICAgICAgICAgICAgIHByZXBhcmVGb3JU
YWlsQ2FsbChqaXQsIHBhcmFtcywgdGFpbENhbGxTdGFja09mZnNldEZyb21GUCk7Ci0gICAgICAg
ICAgICBoYW5kbGUtPmdlbmVyYXRlKGppdCwgcGFyYW1zLCB0aGlzKTsKLSAgICAgICAgICAgIGlm
IChpc1RhaWxDYWxsKQotICAgICAgICAgICAgICAgIGppdC5mYXJKdW1wKHBhcmFtc1swXS5ncHIo
KSwgV2FzbUVudHJ5UHRyVGFnKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBq
aXQuY2FsbChwYXJhbXNbcGFyYW1zLnByb2MoKS5yZXN1bHRDb3VudChyZXR1cm5UeXBlKV0uZ3By
KCksIFdhc21FbnRyeVB0clRhZyk7Ci0gICAgICAgIH0pOwotICAgIH07CisgICAgbV9tYWtlc0Nh
bGxzID0gdHJ1ZTsKKyAgICBCMzo6VHlwZSByZXR1cm5UeXBlID0gdG9CM1Jlc3VsdFR5cGUoJnNp
Z25hdHVyZSk7CiAKICAgICBhdXRvIGZpbGxSZXN1bHRzID0gWyZdIChWYWx1ZSogY2FsbFJlc3Vs
dCkgewogICAgICAgICBBU1NFUlQocmV0dXJuVHlwZSA9PSBjYWxsUmVzdWx0LT50eXBlKCkpOwpA
QCAtMzkzMiw3ICszNzI4LDcgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXQKICAgICAgICAgfQog
ICAgIH07CiAKLSAgICBtX3Byb2MucmVxdWVzdENhbGxBcmdBcmVhU2l6ZUluQnl0ZXMoY2FsbGVl
U3RhY2tTaXplKTsKKyAgICBWZWN0b3I8VW5saW5rZWRXYXNtVG9XYXNtQ2FsbD4qIHVubGlua2Vk
V2FzbVRvV2FzbUNhbGxzID0gJm1fdW5saW5rZWRXYXNtVG9XYXNtQ2FsbHM7CiAKICAgICBpZiAo
bV9pbmZvLmlzSW1wb3J0ZWRGdW5jdGlvbkZyb21GdW5jdGlvbkluZGV4U3BhY2UoZnVuY3Rpb25J
bmRleCkpIHsKICAgICAgICAgbV9tYXhOdW1KU0NhbGxBcmd1bWVudHMgPSBzdGQ6Om1heChtX21h
eE51bUpTQ2FsbEFyZ3VtZW50cywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGFyZ3Muc2l6ZSgpKSk7
CkBAIC0zOTQ0LDg2ICszNzQwLDk3IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbCh1aW50
MzJfdCBmdW5jdGlvbkluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0CiAKICAgICAg
ICAgQmFzaWNCbG9jayogaXNXYXNtQmxvY2sgPSBtX3Byb2MuYWRkQmxvY2soKTsKICAgICAgICAg
QmFzaWNCbG9jayogaXNFbWJlZGRlckJsb2NrID0gbV9wcm9jLmFkZEJsb2NrKCk7CisgICAgICAg
IEJhc2ljQmxvY2sqIGNvbnRpbnVhdGlvbiA9IG1fcHJvYy5hZGRCbG9jaygpOwogICAgICAgICBt
X2N1cnJlbnRCbG9jay0+YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgQjM6OkJyYW5jaCwg
b3JpZ2luKCksIGlzV2FzbUNhbGwsIEZyZXF1ZW50ZWRCbG9jayhpc1dhc21CbG9jayksIEZyZXF1
ZW50ZWRCbG9jayhpc0VtYmVkZGVyQmxvY2spKTsKIAotICAgICAgICBQYXRjaHBvaW50VmFsdWUq
IHdhc21DYWxsUmVzdWx0ID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKGlzVGFpbENhbGwpIHsKLSAg
ICAgICAgICAgIHdhc21DYWxsUmVzdWx0ID0gY3JlYXRlVGFpbENhbGxQYXRjaHBvaW50KGlzV2Fz
bUJsb2NrLCB3YXNtQ2FsbGVlSW5mby5wYXJhbXMsIGFyZ3MsIHRhaWxDYWxsU3RhY2tPZmZzZXRG
cm9tRlAsCi0gICAgICAgICAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hwb2ludFZh
bHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4oZW1pdFVubGlua2VkV2FzbVRv
V2FzbUNhbGwpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHdhc21DYWxsUmVzdWx0
ID0gY3JlYXRlQ2FsbFBhdGNocG9pbnQoaXNXYXNtQmxvY2ssIHJldHVyblR5cGUsIHdhc21DYWxs
ZWVJbmZvLCBhcmdzLAotICAgICAgICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNo
cG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KGVtaXRVbmxpbmtl
ZFdhc21Ub1dhc21DYWxsKSk7Ci0gICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGNsb2JiZXIgYWxs
IHBvdGVudGlhbCBwaW5uZWQgcmVnaXN0ZXJzIHNpbmNlIHdlIG1pZ2h0IGJlIGxlYXZpbmcgdGhl
IGluc3RhbmNlLgotICAgICAgICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSBj
b3VsZCBiZSBjYWxsaW5nIHRvIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZy4KLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0byBkbyB0aGlzOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgxCi0gICAgICAgICAgICB3YXNt
Q2FsbFJlc3VsdC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS50b1NhdmUo
TWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKLSAgICAgICAgfQorICAgICAgICBWYWx1ZSog
d2FzbUNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChpc1dhc21CbG9jaywgb3JpZ2lu
KCksIHNpZ25hdHVyZSwgYXJncywKKyAgICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBh
dGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9LCB0aGlz
XSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlvbkhh
bmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50LT5lZmZl
Y3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZm
ZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBj
bG9iYmVyIGFsbCBwb3RlbnRpYWwgcGlubmVkIHJlZ2lzdGVycyBzaW5jZSB3ZSBtaWdodCBiZSBs
ZWF2aW5nIHRoZSBpbnN0YW5jZS4KKyAgICAgICAgICAgICAgICAvLyBXZSBwZXNzaW1pc3RpY2Fs
bHkgYXNzdW1lIHdlIGNvdWxkIGJlIGNhbGxpbmcgdG8gc29tZXRoaW5nIHRoYXQgaXMgYm91bmRz
IGNoZWNraW5nLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgaGF2ZSB0
byBkbyB0aGlzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMTgx
CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlckxhdGUoUGlubmVkUmVnaXN0ZXJJ
bmZvOjpnZXQoKS50b1NhdmUoTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmcpKTsKKyAgICAgICAg
ICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3RoaXMsIGhhbmRsZSwgdW5saW5rZWRX
YXNtVG9XYXNtQ2FsbHMsIGZ1bmN0aW9uSW5kZXhdIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
QjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAg
ICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKyAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlLT5nZW5lcmF0ZShqaXQsIHBhcmFtcywgdGhpcyk7Cisg
ICAgICAgICAgICAgICAgICAgIENDYWxsSGVscGVyczo6Q2FsbCBjYWxsID0gaml0LnRocmVhZFNh
ZmVQYXRjaGFibGVOZWFyQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICBqaXQuYWRkTGlua1Rh
c2soW3VubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBjYWxsLCBmdW5jdGlvbkluZGV4XSAoTGlua0J1
ZmZlciYgbGlua0J1ZmZlcikgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5saW5rZWRXYXNt
VG9XYXNtQ2FsbHMtPmFwcGVuZCh7IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxsPFdhc21F
bnRyeVB0clRhZz4oY2FsbCksIGZ1bmN0aW9uSW5kZXggfSk7CisgICAgICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSkpOworICAgICAgICBVcHNp
bG9uVmFsdWUqIHdhc21DYWxsUmVzdWx0VXBzaWxvbiA9IHJldHVyblR5cGUgPT0gQjM6OlZvaWQg
PyBudWxscHRyIDogaXNXYXNtQmxvY2stPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KG1fcHJvYywg
b3JpZ2luKCksIHdhc21DYWxsUmVzdWx0KTsKKyAgICAgICAgaXNXYXNtQmxvY2stPmFwcGVuZE5l
d0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG9yaWdpbigpLCBjb250aW51YXRpb24pOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBMZXQncyByZW1vdmUgdGhpcyBpbmRpcmVjdGlvbiBieSBjcmVhdGlu
ZyBhIFBJQyBmcmllbmRseSBJQwogICAgICAgICAvLyBmb3IgY2FsbHMgb3V0IHRvIHRoZSBlbWJl
ZGRlci4gVGhpcyBzaG91bGRuJ3QgYmUgdGhhdCBoYXJkIHRvIGRvLiBXZSBjb3VsZCBwcm9iYWJs
eQogICAgICAgICAvLyBpbXBsZW1lbnQgdGhlIElDIHRvIGJlIG92ZXIgQ29udGV4dCouCiAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAzNzUKLSAg
ICAgICAganVtcERlc3RpbmF0aW9uID0gaXNFbWJlZGRlckJsb2NrLT5hcHBlbmROZXc8TWVtb3J5
VmFsdWU+KG1fcHJvYywKKyAgICAgICAgVmFsdWUqIGp1bXBEZXN0aW5hdGlvbiA9IGlzRW1iZWRk
ZXJCbG9jay0+YXBwZW5kTmV3PE1lbW9yeVZhbHVlPihtX3Byb2MsCiAgICAgICAgICAgICBMb2Fk
LCBwb2ludGVyVHlwZSgpLCBvcmlnaW4oKSwgaW5zdGFuY2VWYWx1ZSgpLCBzYWZlQ2FzdDxpbnQz
Ml90PihJbnN0YW5jZTo6b2Zmc2V0T2ZXYXNtVG9FbWJlZGRlclN0dWIoZnVuY3Rpb25JbmRleCkp
KTsKIAotICAgICAgICBpZiAoaXNUYWlsQ2FsbCkgewotICAgICAgICAgICAgY3JlYXRlVGFpbENh
bGxQYXRjaHBvaW50KGlzRW1iZWRkZXJCbG9jaywgd2FzbUNhbGxlZUluZm8ucGFyYW1zLCBhcmdz
LCB0YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQLAotICAgICAgICAgICAgICAgIHNjb3BlZExhbWJk
YVJlZjx2b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxl
Pik+KGVtaXRDYWxsVG9FbWJlZGRlcikpOwotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgfQotCi0gICAgICAgIFZhbHVlKiBlbWJlZGRlckNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0
Y2hwb2ludChpc0VtYmVkZGVyQmxvY2ssIHJldHVyblR5cGUsIHdhc21DYWxsZWVJbmZvLCBhcmdz
LAotICAgICAgICAgICAgc2NvcGVkTGFtYmRhUmVmPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94
PFBhdGNocG9pbnRFeGNlcHRpb25IYW5kbGU+KT4oZW1pdENhbGxUb0VtYmVkZGVyKSk7CisgICAg
ICAgIFZhbHVlKiBlbWJlZGRlckNhbGxSZXN1bHQgPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChpc0Vt
YmVkZGVyQmxvY2ssIG9yaWdpbigpLCBzaWduYXR1cmUsIGFyZ3MsCisgICAgICAgICAgICBzY29w
ZWRMYW1iZGFSZWY8dm9pZChQYXRjaHBvaW50VmFsdWUqLCBCb3g8UGF0Y2hwb2ludEV4Y2VwdGlv
bkhhbmRsZT4pPihbPSwgdGhpc10gKFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCwgQm94PFBh
dGNocG9pbnRFeGNlcHRpb25IYW5kbGU+IGhhbmRsZSkgLT4gdm9pZCB7CisgICAgICAgICAgICAg
ICAgcGF0Y2hwb2ludC0+ZWZmZWN0cy53cml0ZXNQaW5uZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIHBhdGNocG9pbnQtPmVmZmVjdHMucmVhZHNQaW5uZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIHBhdGNocG9pbnQtPmFwcGVuZChqdW1wRGVzdGluYXRpb24sIFZhbHVlUmVwOjpTb21lUmVn
aXN0ZXIpOworICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2xvYmJlciBhbGwgcG90ZW50
aWFsIHBpbm5lZCByZWdpc3RlcnMgc2luY2Ugd2UgbWlnaHQgYmUgbGVhdmluZyB0aGUgaW5zdGFu
Y2UuCisgICAgICAgICAgICAgICAgLy8gV2UgcGVzc2ltaXN0aWNhbGx5IGFzc3VtZSB3ZSBjb3Vs
ZCBiZSBjYWxsaW5nIHRvIHNvbWV0aGluZyB0aGF0IGlzIGJvdW5kcyBjaGVja2luZy4KKyAgICAg
ICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE4MQorICAgICAgICAgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkudG9TYXZl
KE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+c2V0R2VuZXJhdG9yKFt0aGlzLCBoYW5kbGUsIHJldHVyblR5cGVdIChDQ2FsbEhlbHBlcnMm
IGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0
Y2goaml0KTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5nZW5lcmF0ZShqaXQsIHBhcmFt
cywgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIGppdC5jYWxsKHBhcmFtc1twYXJhbXMucHJv
YygpLnJlc3VsdENvdW50KHJldHVyblR5cGUpXS5ncHIoKSwgV2FzbUVudHJ5UHRyVGFnKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pKTsKKyAgICAgICAgVXBzaWxvblZhbHVl
KiBlbWJlZGRlckNhbGxSZXN1bHRVcHNpbG9uID0gcmV0dXJuVHlwZSA9PSBCMzo6Vm9pZCA/IG51
bGxwdHIgOiBpc0VtYmVkZGVyQmxvY2stPmFwcGVuZE5ldzxVcHNpbG9uVmFsdWU+KG1fcHJvYywg
b3JpZ2luKCksIGVtYmVkZGVyQ2FsbFJlc3VsdCk7CisgICAgICAgIGlzRW1iZWRkZXJCbG9jay0+
YXBwZW5kTmV3Q29udHJvbFZhbHVlKG1fcHJvYywgSnVtcCwgb3JpZ2luKCksIGNvbnRpbnVhdGlv
bik7CiAKLSAgICAgICAgQmFzaWNCbG9jayogY29udGludWF0aW9uID0gbV9wcm9jLmFkZEJsb2Nr
KCk7CiAgICAgICAgIG1fY3VycmVudEJsb2NrID0gY29udGludWF0aW9uOwogCiAgICAgICAgIGlm
IChyZXR1cm5UeXBlICE9IEIzOjpWb2lkKSB7Ci0gICAgICAgICAgICBVcHNpbG9uVmFsdWUqIHdh
c21DYWxsUmVzdWx0VXBzaWxvbiA9IGlzV2FzbUJsb2NrLT5hcHBlbmROZXc8VXBzaWxvblZhbHVl
PihtX3Byb2MsIG9yaWdpbigpLCB3YXNtQ2FsbFJlc3VsdCk7Ci0gICAgICAgICAgICBVcHNpbG9u
VmFsdWUqIGVtYmVkZGVyQ2FsbFJlc3VsdFVwc2lsb24gPSBpc0VtYmVkZGVyQmxvY2stPmFwcGVu
ZE5ldzxVcHNpbG9uVmFsdWU+KG1fcHJvYywgb3JpZ2luKCksIGVtYmVkZGVyQ2FsbFJlc3VsdCk7
CiAgICAgICAgICAgICBWYWx1ZSogcGhpID0gY29udGludWF0aW9uLT5hcHBlbmROZXc8VmFsdWU+
KG1fcHJvYywgUGhpLCByZXR1cm5UeXBlLCBvcmlnaW4oKSk7CiAgICAgICAgICAgICB3YXNtQ2Fs
bFJlc3VsdFVwc2lsb24tPnNldFBoaShwaGkpOwogICAgICAgICAgICAgZW1iZWRkZXJDYWxsUmVz
dWx0VXBzaWxvbi0+c2V0UGhpKHBoaSk7CiAgICAgICAgICAgICBmaWxsUmVzdWx0cyhwaGkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaXNXYXNtQmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZSht
X3Byb2MsIEp1bXAsIG9yaWdpbigpLCBjb250aW51YXRpb24pOwotICAgICAgICBpc0VtYmVkZGVy
QmxvY2stPmFwcGVuZE5ld0NvbnRyb2xWYWx1ZShtX3Byb2MsIEp1bXAsIG9yaWdpbigpLCBjb250
aW51YXRpb24pOwotCiAgICAgICAgIC8vIFRoZSBjYWxsIGNvdWxkIGhhdmUgYmVlbiB0byBhbm90
aGVyIFdlYkFzc2VtYmx5IGluc3RhbmNlLCBhbmQgLyBvciBjb3VsZCBoYXZlIG1vZGlmaWVkIG91
ciBNZW1vcnkuCiAgICAgICAgIHJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVD
YWNoZWRTdGFja0xpbWl0OjpZZXMsIG1faW5mby5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9w
cm9jLCBjb250aW51YXRpb24pOworICAgIH0gZWxzZSB7CiAKLSAgICAgICAgcmV0dXJuIHsgfTsK
LQotICAgIH0gLy8gaXNJbXBvcnRlZEZ1bmN0aW9uRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZQorICAg
ICAgICBWYWx1ZSogcGF0Y2ggPSBjcmVhdGVDYWxsUGF0Y2hwb2ludChtX2N1cnJlbnRCbG9jaywg
b3JpZ2luKCksIHNpZ25hdHVyZSwgYXJncywKKyAgICAgICAgICAgIHNjb3BlZExhbWJkYVJlZjx2
b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50RXhjZXB0aW9uSGFuZGxlPik+KFs9
LCB0aGlzXSAoUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50LCBCb3g8UGF0Y2hwb2ludEV4Y2Vw
dGlvbkhhbmRsZT4gaGFuZGxlKSAtPiB2b2lkIHsKKyAgICAgICAgICAgICAgICBwYXRjaHBvaW50
LT5lZmZlY3RzLndyaXRlc1Bpbm5lZCA9IHRydWU7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+ZWZmZWN0cy5yZWFkc1Bpbm5lZCA9IHRydWU7CiAKLSAgICBpZiAoaXNUYWlsQ2FsbCkgewot
ICAgICAgICBjcmVhdGVUYWlsQ2FsbFBhdGNocG9pbnQobV9jdXJyZW50QmxvY2ssIHdhc21DYWxs
ZWVJbmZvLnBhcmFtcywgYXJncywgdGFpbENhbGxTdGFja09mZnNldEZyb21GUCwKLSAgICAgICAg
ICAgIHNjb3BlZExhbWJkYVJlZjx2b2lkKFBhdGNocG9pbnRWYWx1ZSosIEJveDxQYXRjaHBvaW50
RXhjZXB0aW9uSGFuZGxlPik+KGVtaXRVbmxpbmtlZFdhc21Ub1dhc21DYWxsKSk7Ci0gICAgICAg
IHJldHVybiB7IH07CisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBjbG9iYmVyIHRoZSBz
aXplIHJlZ2lzdGVyIHNpbmNlIHRoZSBMTEludCBhbHdheXMgYm91bmRzIGNoZWNrcworICAgICAg
ICAgICAgICAgIGlmICh1c2VTaWduYWxpbmdNZW1vcnkoKSB8fCBtX2luZm8ubWVtb3J5LmlzU2hh
cmVkKCkpCisgICAgICAgICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXJMYXRlKFJlZ2lz
dGVyU2V0QnVpbGRlciB7IFBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KCkuYm91bmRzQ2hlY2tpbmdT
aXplUmVnaXN0ZXIgfSk7CisgICAgICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9y
KFt0aGlzLCBoYW5kbGUsIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLCBmdW5jdGlvbkluZGV4XSAo
Q0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBh
cmFtcykgeworICAgICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNh
Z2UgYWxsb3dTY3JhdGNoKGppdCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+Z2VuZXJh
dGUoaml0LCBwYXJhbXMsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBDQ2FsbEhlbHBlcnM6
OkNhbGwgY2FsbCA9IGppdC50aHJlYWRTYWZlUGF0Y2hhYmxlTmVhckNhbGwoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaml0LmFkZExpbmtUYXNrKFt1bmxpbmtlZFdhc21Ub1dhc21DYWxscywgY2Fs
bCwgZnVuY3Rpb25JbmRleF0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHVubGlua2VkV2FzbVRvV2FzbUNhbGxzLT5hcHBlbmQoeyBsaW5rQnVmZmVy
LmxvY2F0aW9uT2ZOZWFyQ2FsbDxXYXNtRW50cnlQdHJUYWc+KGNhbGwpLCBmdW5jdGlvbkluZGV4
IH0pOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0pKTsKKyAgICAgICAgZmlsbFJlc3VsdHMocGF0Y2gpOwogICAgIH0KIAotICAgIFBh
dGNocG9pbnRWYWx1ZSogY2FsbFJlc3VsdCA9IGNyZWF0ZUNhbGxQYXRjaHBvaW50KG1fY3VycmVu
dEJsb2NrLCByZXR1cm5UeXBlLCB3YXNtQ2FsbGVlSW5mbywgYXJncywKLSAgICAgICAgc2NvcGVk
TGFtYmRhUmVmPHZvaWQoUGF0Y2hwb2ludFZhbHVlKiwgQm94PFBhdGNocG9pbnRFeGNlcHRpb25I
YW5kbGU+KT4oZW1pdFVubGlua2VkV2FzbVRvV2FzbUNhbGwpKTsKLSAgICAvLyBXZSBuZWVkIHRv
IGNsb2JiZXIgdGhlIHNpemUgcmVnaXN0ZXIgc2luY2UgdGhlIExMSW50IGFsd2F5cyBib3VuZHMg
Y2hlY2tzCi0gICAgaWYgKHVzZVNpZ25hbGluZ01lbW9yeSgpIHx8IG1faW5mby5tZW1vcnkuaXNT
aGFyZWQoKSkKLSAgICAgICAgY2FsbFJlc3VsdC0+Y2xvYmJlckxhdGUoUmVnaXN0ZXJTZXRCdWls
ZGVyIHsgUGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQoKS5ib3VuZHNDaGVja2luZ1NpemVSZWdpc3Rl
ciB9KTsKLQotCi0gICAgZmlsbFJlc3VsdHMoY2FsbFJlc3VsdCk7Ci0KLSAgICBpZiAobV9pbmZv
LmNhbGxDYW5DbG9iYmVySW5zdGFuY2UoZnVuY3Rpb25JbmRleCkpCi0gICAgICAgIHJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0OjpZZXMsIG1faW5m
by5tZW1vcnksIGluc3RhbmNlVmFsdWUoKSwgbV9wcm9jLCBtX2N1cnJlbnRCbG9jayk7Ci0KICAg
ICByZXR1cm4geyB9OwogfQogCi1hdXRvIEIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCh1
bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgb3JpZ2luYWxTaWduYXR1
cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMsIENh
bGxUeXBlIGNhbGxUeXBlKSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIEIzSVJHZW5lcmF0b3I6OmFk
ZENhbGxJbmRpcmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYg
b3JpZ2luYWxTaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExp
c3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1bHQKIHsKICAgICBWYWx1ZSogY2FsbGVlSW5kZXgg
PSBnZXQoYXJncy50YWtlTGFzdCgpKTsKICAgICBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0
dXJlID0gb3JpZ2luYWxTaWduYXR1cmUuZXhwYW5kKCk7CiAgICAgQVNTRVJUKHNpZ25hdHVyZS5h
czxGdW5jdGlvblNpZ25hdHVyZT4oKS0+YXJndW1lbnRDb3VudCgpID09IGFyZ3Muc2l6ZSgpKTsK
IAorICAgIG1fbWFrZXNDYWxscyA9IHRydWU7CiAgICAgLy8gTm90ZTogY2FsbCBpbmRpcmVjdCBj
YW4gY2FsbCBlaXRoZXIgV2ViQXNzZW1ibHlGdW5jdGlvbiBvciBXZWJBc3NlbWJseVdyYXBwZXJG
dW5jdGlvbi4gQmVjYXVzZQogICAgIC8vIFdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9uIGlzIGxp
a2UgY2FsbGluZyBpbnRvIHRoZSBlbWJlZGRlciwgd2UgY29uc2VydmF0aXZlbHkgYXNzdW1lIGFs
bCBjYWxsIGluZGlyZWN0cwogICAgIC8vIGNhbiBiZSB0byB0aGUgZW1iZWRkZXIgZm9yIG91ciBz
dGFjayBjaGVjayBjYWxjdWxhdGlvbi4KQEAgLTQwOTcsNyArMzkwNCw3IEBAIGF1dG8gQjNJUkdl
bmVyYXRvcjo6YWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVE
ZWZpbml0aW9uJiBvCiAgICAgICAgIG1fY3VycmVudEJsb2NrLT5hcHBlbmROZXc8TWVtb3J5VmFs
dWU+KG1fcHJvYywgTG9hZCwgcG9pbnRlclR5cGUoKSwgb3JpZ2luKCksIGNhbGxhYmxlRnVuY3Rp
b24sCiAgICAgICAgICAgICBzYWZlQ2FzdDxpbnQzMl90PihXYXNtVG9XYXNtSW1wb3J0YWJsZUZ1
bmN0aW9uOjpvZmZzZXRPZkVudHJ5cG9pbnRMb2FkTG9jYXRpb24oKSkpKTsKIAotICAgIHJldHVy
biBlbWl0SW5kaXJlY3RDYWxsKGNhbGxlZUluc3RhbmNlLCBjYWxsZWVDb2RlLCBzaWduYXR1cmUs
IGFyZ3MsIHJlc3VsdHMsIGNhbGxUeXBlKTsKKyAgICByZXR1cm4gZW1pdEluZGlyZWN0Q2FsbChj
YWxsZWVJbnN0YW5jZSwgY2FsbGVlQ29kZSwgc2lnbmF0dXJlLCBhcmdzLCByZXN1bHRzKTsKIH0K
IAogYXV0byBCM0lSR2VuZXJhdG9yOjphZGRDYWxsUmVmKGNvbnN0IFR5cGVEZWZpbml0aW9uJiBv
cmlnaW5hbFNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVzdWx0TGlz
dCYgcmVzdWx0cykgLT4gUGFydGlhbFJlc3VsdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNhbGxpbmdDb252ZW50aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtQ2FsbGluZ0NvbnZlbnRpb24uaAppbmRleCA1NzQ3YjNiODY4NmUuLjllYWYz
YzQ3MTBlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxp
bmdDb252ZW50aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNhbGxp
bmdDb252ZW50aW9uLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgi
CiAjaW5jbHVkZSAiUmVnaXN0ZXJBdE9mZnNldExpc3QuaCIKICNpbmNsdWRlICJSZWdpc3RlclNl
dC5oIgotI2luY2x1ZGUgIlN0YWNrQWxpZ25tZW50LmgiCiAjaW5jbHVkZSAiV2FzbUZvcm1hdC5o
IgogI2luY2x1ZGUgIldhc21UeXBlRGVmaW5pdGlvbi5oIgogI2luY2x1ZGUgIldhc21UeXBlRGVm
aW5pdGlvbklubGluZXMuaCIKQEAgLTE0Niw5NSArMTQ1LDYgQEAgcHJpdmF0ZToKICAgICB9CiAK
IHB1YmxpYzoKLSAgICB1aW50MzJfdCBudW1iZXJPZlN0YWNrUmVzdWx0cyhjb25zdCBGdW5jdGlv
blNpZ25hdHVyZSYgc2lnbmF0dXJlKSBjb25zdAotICAgIHsKLSAgICAgICAgY29uc3QgdWludDMy
X3QgZ3ByQ291bnQgPSBqc3JBcmdzLnNpemUoKTsKLSAgICAgICAgY29uc3QgdWludDMyX3QgZnBy
Q291bnQgPSBmcHJBcmdzLnNpemUoKTsKLSAgICAgICAgdWludDMyX3QgZ3BySW5kZXggPSAwOwot
ICAgICAgICB1aW50MzJfdCBmcHJJbmRleCA9IDA7Ci0gICAgICAgIHVpbnQzMl90IHN0YWNrQ291
bnQgPSAwOwotICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVy
bkNvdW50KCk7IGkrKykgewotICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUucmV0dXJuVHlw
ZShpKS5raW5kKSB7Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6Ci0gICAgICAgICAg
ICBjYXNlIFR5cGVLaW5kOjpJNjQ6Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5y
ZWY6Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgotICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6UmVmTnVsbDoKLSAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKLSAg
ICAgICAgICAgICAgICBpZiAoZ3BySW5kZXggPCBncHJDb3VudCkKLSAgICAgICAgICAgICAgICAg
ICAgKytncHJJbmRleDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICsrc3RhY2tDb3VudDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
VHlwZUtpbmQ6OkYzMjoKLSAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKLSAgICAgICAg
ICAgIGNhc2UgVHlwZUtpbmQ6OlYxMjg6Ci0gICAgICAgICAgICAgICAgaWYgKGZwckluZGV4IDwg
ZnByQ291bnQpCi0gICAgICAgICAgICAgICAgICAgICsrZnBySW5kZXg7Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICArK3N0YWNrQ291bnQ7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgotICAgICAgICAgICAg
Y2FzZSBUeXBlS2luZDo6RnVuYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoK
LSAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkFycmF5OgotICAgICAgICAgICAgY2FzZSBUeXBl
S2luZDo6QXJyYXlyZWY6Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzFyZWY6Ci0gICAg
ICAgICAgICBjYXNlIFR5cGVLaW5kOjpTdWI6Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpS
ZWM6Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc3RhY2tDb3VudDsKLSAgICB9Ci0K
LSAgICB1aW50MzJfdCBudW1iZXJPZlN0YWNrQXJndW1lbnRzKGNvbnN0IEZ1bmN0aW9uU2lnbmF0
dXJlJiBzaWduYXR1cmUpIGNvbnN0Ci0gICAgewotICAgICAgICBjb25zdCB1aW50MzJfdCBncHJD
b3VudCA9IGpzckFyZ3Muc2l6ZSgpOwotICAgICAgICBjb25zdCB1aW50MzJfdCBmcHJDb3VudCA9
IGZwckFyZ3Muc2l6ZSgpOwotICAgICAgICB1aW50MzJfdCBncHJJbmRleCA9IDA7Ci0gICAgICAg
IHVpbnQzMl90IGZwckluZGV4ID0gMDsKLSAgICAgICAgdWludDMyX3Qgc3RhY2tDb3VudCA9IDA7
Ci0gICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3Vu
dCgpOyBpKyspIHsKLSAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLmFyZ3VtZW50VHlwZShp
KS5raW5kKSB7Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzI6Ci0gICAgICAgICAgICBj
YXNlIFR5cGVLaW5kOjpJNjQ6Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6
Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpGdW5jcmVmOgotICAgICAgICAgICAgY2FzZSBU
eXBlS2luZDo6UmVmTnVsbDoKLSAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZjoKLSAgICAg
ICAgICAgICAgICBpZiAoZ3BySW5kZXggPCBncHJDb3VudCkKLSAgICAgICAgICAgICAgICAgICAg
KytncHJJbmRleDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICsr
c3RhY2tDb3VudDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OkYzMjoKLSAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkY2NDoKLSAgICAgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OlYxMjg6Ci0gICAgICAgICAgICAgICAgaWYgKGZwckluZGV4IDwgZnBy
Q291bnQpCi0gICAgICAgICAgICAgICAgICAgICsrZnBySW5kZXg7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICArK3N0YWNrQ291bnQ7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpWb2lkOgotICAgICAgICAgICAgY2Fz
ZSBUeXBlS2luZDo6RnVuYzoKLSAgICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKLSAg
ICAgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkFycmF5OgotICAgICAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6QXJyYXlyZWY6Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpJMzFyZWY6Ci0gICAgICAg
ICAgICBjYXNlIFR5cGVLaW5kOjpTdWI6Ci0gICAgICAgICAgICBjYXNlIFR5cGVLaW5kOjpSZWM6
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc3RhY2tDb3VudDsKLSAgICB9Ci0KLSAg
ICB1aW50MzJfdCBudW1iZXJPZlN0YWNrVmFsdWVzKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJlJiBz
aWduYXR1cmUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjptYXgobnVtYmVyT2ZT
dGFja0FyZ3VtZW50cyhzaWduYXR1cmUpLCBudW1iZXJPZlN0YWNrUmVzdWx0cyhzaWduYXR1cmUp
KTsKLSAgICB9Ci0KICAgICBDYWxsSW5mb3JtYXRpb24gY2FsbEluZm9ybWF0aW9uRm9yKGNvbnN0
IFR5cGVEZWZpbml0aW9uJiB0eXBlLCBDYWxsUm9sZSByb2xlID0gQ2FsbFJvbGU6OkNhbGxlcikg
Y29uc3QKICAgICB7CiAgICAgICAgIGNvbnN0IGF1dG8mIHNpZ25hdHVyZSA9ICp0eXBlLmFzPEZ1
bmN0aW9uU2lnbmF0dXJlPigpOwpAQCAtMjQ1LDExICsxNTUsMTAgQEAgcHVibGljOgogICAgICAg
ICBib29sIGFyZ3VtZW50c09yUmVzdWx0c0luY2x1ZGVWMTI4ID0gZmFsc2U7CiAgICAgICAgIHNp
emVfdCBncEFyZ3VtZW50Q291bnQgPSAwOwogICAgICAgICBzaXplX3QgZnBBcmd1bWVudENvdW50
ID0gMDsKLSAgICAgICAgc2l6ZV90IGhlYWRlclNpemUgPSBoZWFkZXJTaXplSW5CeXRlcyArIHNp
emVvZihSZWdpc3Rlcik7CisgICAgICAgIHNpemVfdCBhcmdTdGFja09mZnNldCA9IGhlYWRlclNp
emVJbkJ5dGVzICsgc2l6ZW9mKFJlZ2lzdGVyKTsKICAgICAgICAgaWYgKHJvbGUgPT0gQ2FsbFJv
bGU6OkNhbGxlcikKLSAgICAgICAgICAgIGhlYWRlclNpemUgLT0gc2l6ZW9mKENhbGxlckZyYW1l
QW5kUEMpOworICAgICAgICAgICAgYXJnU3RhY2tPZmZzZXQgLT0gc2l6ZW9mKENhbGxlckZyYW1l
QW5kUEMpOwogCi0gICAgICAgIHNpemVfdCBhcmdTdGFja09mZnNldCA9IGhlYWRlclNpemU7CiAg
ICAgICAgIFZlY3RvcjxBcmd1bWVudExvY2F0aW9uPiBwYXJhbXMoc2lnbmF0dXJlLmFyZ3VtZW50
Q291bnQoKSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLmFyZ3Vt
ZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgICAgICBhcmd1bWVudHNJbmNsdWRlSTY0IHw9IHNp
Z25hdHVyZS5hcmd1bWVudFR5cGUoaSkuaXNJNjQoKTsKQEAgLTI1NywxMyArMTY2LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGFyZ3VtZW50c0luY2x1ZGVHQ1R5cGVJbmRleCB8PSBpc1JlZldp
dGhUeXBlSW5kZXgoc2lnbmF0dXJlLmFyZ3VtZW50VHlwZShpKSkgJiYgIVR5cGVJbmZvcm1hdGlv
bjo6Z2V0KHNpZ25hdHVyZS5hcmd1bWVudFR5cGUoaSkuaW5kZXgpLmlzPEZ1bmN0aW9uU2lnbmF0
dXJlPigpOwogICAgICAgICAgICAgcGFyYW1zW2ldID0gbWFyc2hhbGxMb2NhdGlvbihyb2xlLCBz
aWduYXR1cmUuYXJndW1lbnRUeXBlKGkpLCBncEFyZ3VtZW50Q291bnQsIGZwQXJndW1lbnRDb3Vu
dCwgYXJnU3RhY2tPZmZzZXQpOwogICAgICAgICB9Ci0gICAgICAgIHVpbnQzMl90IHN0YWNrQXJn
cyA9IGFyZ1N0YWNrT2Zmc2V0IC0gaGVhZGVyU2l6ZTsKICAgICAgICAgZ3BBcmd1bWVudENvdW50
ID0gMDsKICAgICAgICAgZnBBcmd1bWVudENvdW50ID0gMDsKKyAgICAgICAgc2l6ZV90IHJlc3Vs
dFN0YWNrT2Zmc2V0ID0gaGVhZGVyU2l6ZUluQnl0ZXMgKyBzaXplb2YoUmVnaXN0ZXIpOworICAg
ICAgICBpZiAocm9sZSA9PSBDYWxsUm9sZTo6Q2FsbGVyKQorICAgICAgICAgICAgcmVzdWx0U3Rh
Y2tPZmZzZXQgLT0gc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpOwogCi0gICAgICAgIHVpbnQzMl90
IHN0YWNrUmVzdWx0cyA9IG51bWJlck9mU3RhY2tSZXN1bHRzKHNpZ25hdHVyZSkgKiBzaXplb2Yo
UmVnaXN0ZXIpOwotICAgICAgICB1aW50MzJfdCBzdGFja0NvdW50QWxpZ25lZCA9IFdURjo6cm91
bmRVcFRvTXVsdGlwbGVPZihzdGFja0FsaWdubWVudEJ5dGVzKCksIHN0ZDo6bWF4KHN0YWNrQXJn
cywgc3RhY2tSZXN1bHRzKSk7Ci0gICAgICAgIHNpemVfdCByZXN1bHRTdGFja09mZnNldCA9IGhl
YWRlclNpemUgKyBzdGFja0NvdW50QWxpZ25lZCAtIHN0YWNrUmVzdWx0czsKICAgICAgICAgVmVj
dG9yPEFyZ3VtZW50TG9jYXRpb24sIDE+IHJlc3VsdHMoc2lnbmF0dXJlLnJldHVybkNvdW50KCkp
OwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgp
OyArK2kpIHsKICAgICAgICAgICAgIHJlc3VsdHNJbmNsdWRlSTY0IHw9IHNpZ25hdHVyZS5yZXR1
cm5UeXBlKGkpLmlzSTY0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAppbmRleCA1ODc0NDg5
NjdkOTEuLjA4OGI3OWU4Yjc4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZ1bmN0aW9uQ29kZUJsb2NrR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuY3BwCkBAIC02OSwx
MiArNjksNiBAQCB1bnNpZ25lZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6bnVtYmVyT2ZK
dW1wVGFibGVzKCkgY29uc3QKICAgICByZXR1cm4gbV9qdW1wVGFibGVzLnNpemUoKTsKIH0KIAot
dm9pZCBGdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvcjo6c2V0VGFpbENhbGwodWludDMyX3QgZnVu
Y3Rpb25JbmRleCwgYm9vbCBpc0ltcG9ydGVkRnVuY3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNl
KQotewotICAgIG1fdGFpbENhbGxTdWNjZXNzb3JzLnNldChmdW5jdGlvbkluZGV4KTsKLSAgICBz
ZXRUYWlsQ2FsbENsb2JiZXJzSW5zdGFuY2UoaXNJbXBvcnRlZEZ1bmN0aW9uRnJvbUZ1bmN0aW9u
SW5kZXhTcGFjZSk7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKICNlbmRpZiAv
LyBFTkFCTEUoV0VCQVNTRU1CTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL1dhc21GdW5jdGlvbkNvZGVCbG9ja0dlbmVyYXRvci5oCmluZGV4IGUxODJjYjAy
ODBjOS4uMDAzYzk5OGEyMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3IuaApAQCAtODMsMTAgKzgz
LDYgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGNvbnN0YW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fY29uc3RhbnRzOyB9CiAgICAgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
Y29uc3RhbnRSZWdpc3RlcnMoKSBjb25zdCB7IHJldHVybiBtX2NvbnN0YW50czsgfQogICAgIGNv
bnN0IFdhc21JbnN0cnVjdGlvblN0cmVhbSYgaW5zdHJ1Y3Rpb25zKCkgY29uc3QgeyByZXR1cm4g
Km1faW5zdHJ1Y3Rpb25zOyB9Ci0gICAgY29uc3QgQml0VmVjdG9yJiB0YWlsQ2FsbFN1Y2Nlc3Nv
cnMoKSBjb25zdCB7IHJldHVybiBtX3RhaWxDYWxsU3VjY2Vzc29yczsgfQotICAgIGJvb2wgdGFp
bENhbGxDbG9iYmVyc0luc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbV90YWlsQ2FsbENsb2JiZXJz
SW5zdGFuY2UgOyB9Ci0gICAgdm9pZCBzZXRUYWlsQ2FsbCh1aW50MzJfdCwgYm9vbCk7Ci0gICAg
dm9pZCBzZXRUYWlsQ2FsbENsb2JiZXJzSW5zdGFuY2UoYm9vbCB2YWx1ZSkgeyBtX3RhaWxDYWxs
Q2xvYmJlcnNJbnN0YW5jZSAgPSB2YWx1ZTsgfQogCiAgICAgdm9pZCBzZXROdW1WYXJzKHVuc2ln
bmVkIG51bVZhcnMpIHsgbV9udW1WYXJzID0gbnVtVmFyczsgfQogICAgIHZvaWQgc2V0TnVtQ2Fs
bGVlTG9jYWxzKHVuc2lnbmVkIG51bUNhbGxlZUxvY2FscykgeyBtX251bUNhbGxlZUxvY2FscyA9
IG51bUNhbGxlZUxvY2FsczsgfQpAQCAtMTM5LDcgKzEzNSw2IEBAIHByaXZhdGU6CiAgICAgLy8g
TnVtYmVyIG9mIFZpcnR1YWxSZWdpc3Rlci4gVGhlIG5hbWluZyBpcyB1bmZvcnR1bmF0ZSwgYnV0
IGhhcyB0byBtYXRjaCBVbmxpbmtlZENvZGVCbG9jawogICAgIHVuc2lnbmVkIG1fbnVtQ2FsbGVl
TG9jYWxzIHsgMCB9OwogICAgIHVpbnQzMl90IG1fbnVtQXJndW1lbnRzIHsgMCB9OwotICAgIGJv
b2wgbV90YWlsQ2FsbENsb2JiZXJzSW5zdGFuY2UgeyBmYWxzZSB9OwogICAgIFZlY3RvcjxUeXBl
PiBtX2NvbnN0YW50VHlwZXM7CiAgICAgVmVjdG9yPHVpbnQ2NF90PiBtX2NvbnN0YW50czsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8V2FzbUluc3RydWN0aW9uU3RyZWFtPiBtX2luc3RydWN0aW9uczsK
QEAgLTE1MCw3ICsxNDUsNiBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8V2FzbUluc3RydWN0aW9u
U3RyZWFtOjpPZmZzZXQsIExMSW50VGllclVwQ291bnRlcjo6T1NSRW50cnlEYXRhPiBtX3RpZXJV
cENvdW50ZXI7CiAgICAgVmVjdG9yPEp1bXBUYWJsZT4gbV9qdW1wVGFibGVzOwogICAgIFZlY3Rv
cjxVbmxpbmtlZEhhbmRsZXJJbmZvPiBtX2V4Y2VwdGlvbkhhbmRsZXJzOwotICAgIEJpdFZlY3Rv
ciBtX3RhaWxDYWxsU3VjY2Vzc29yczsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21GdW5jdGlvblBhcnNlci5oCmlu
ZGV4IGUwOGMwMTAyNDg1OS4uNjVmZmJlMjYyYzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRnVuY3Rpb25QYXJzZXIuaApAQCAtNjIsMTEgKzYyLDEwIEBAIHZvaWQg
c3BsaXRTdGFjayhCbG9ja1NpZ25hdHVyZSBvcmlnaW5hbFNpZ25hdHVyZSwgRW5jbG9zaW5nU3Rh
Y2smIGVuY2xvc2luZ1N0YWNrCiAgICAgZW5jbG9zaW5nU3RhY2suc2hyaW5rKG9mZnNldCk7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENvbnRyb2wsIHR5cGVuYW1lIEV4cHJlc3Npb24sIHR5cGVu
YW1lIENhbGw+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDb250cm9sLCB0eXBlbmFtZSBFeHByZXNzaW9u
Pgogc3RydWN0IEZ1bmN0aW9uUGFyc2VyVHlwZXMgewogICAgIHVzaW5nIENvbnRyb2xUeXBlID0g
Q29udHJvbDsKICAgICB1c2luZyBFeHByZXNzaW9uVHlwZSA9IEV4cHJlc3Npb247Ci0gICAgdXNp
bmcgQ2FsbFR5cGUgPSBDYWxsOwogCiAgICAgY2xhc3MgVHlwZWRFeHByZXNzaW9uIHsKICAgICBw
dWJsaWM6CkBAIC0xMTAsOSArMTA5LDggQEAgc3RydWN0IEZ1bmN0aW9uUGFyc2VyVHlwZXMgewog
fTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29udGV4dD4KLWNsYXNzIEZ1bmN0aW9uUGFyc2VyIDog
cHVibGljIFBhcnNlcjx2b2lkPiwgcHVibGljIEZ1bmN0aW9uUGFyc2VyVHlwZXM8dHlwZW5hbWUg
Q29udGV4dDo6Q29udHJvbFR5cGUsIHR5cGVuYW1lIENvbnRleHQ6OkV4cHJlc3Npb25UeXBlLCB0
eXBlbmFtZSBDb250ZXh0OjpDYWxsVHlwZT4geworY2xhc3MgRnVuY3Rpb25QYXJzZXIgOiBwdWJs
aWMgUGFyc2VyPHZvaWQ+LCBwdWJsaWMgRnVuY3Rpb25QYXJzZXJUeXBlczx0eXBlbmFtZSBDb250
ZXh0OjpDb250cm9sVHlwZSwgdHlwZW5hbWUgQ29udGV4dDo6RXhwcmVzc2lvblR5cGU+IHsKIHB1
YmxpYzoKLSAgICB1c2luZyBDYWxsVHlwZSA9IHR5cGVuYW1lIEZ1bmN0aW9uUGFyc2VyOjpDYWxs
VHlwZTsKICAgICB1c2luZyBDb250cm9sVHlwZSA9IHR5cGVuYW1lIEZ1bmN0aW9uUGFyc2VyOjpD
b250cm9sVHlwZTsKICAgICB1c2luZyBDb250cm9sRW50cnkgPSB0eXBlbmFtZSBGdW5jdGlvblBh
cnNlcjo6Q29udHJvbEVudHJ5OwogICAgIHVzaW5nIENvbnRyb2xTdGFjayA9IHR5cGVuYW1lIEZ1
bmN0aW9uUGFyc2VyOjpDb250cm9sU3RhY2s7CkBAIC0yMDkwLDkgKzIwODgsNiBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAKLSAgICBjYXNlIFRhaWxDYWxsOgotICAgICAgICBXQVNNX1BBUlNFUl9GQUlMX0lG
KCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVRhaWxDYWxscygpLCAid2FzbSB0YWlsIGNhbGxzIGFy
ZSBub3QgZW5hYmxlZCIpOwotICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIENhbGw6IHsK
ICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKICAgICAgICAgV0FTTV9GQUlMX0lGX0hF
TFBFUl9GQUlMUyhwYXJzZUZ1bmN0aW9uSW5kZXgoZnVuY3Rpb25JbmRleCkpOwpAQCAtMjExNiwy
NCArMjExMSw4IEBAIEZPUl9FQUNIX1dBU01fTUVNT1JZX1NUT1JFX09QKENSRUFURV9DQVNFKQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChjYWxsZWVTaWduYXR1cmUuYXJndW1lbnRDb3VudCgpID09
IGFyZ3Muc2l6ZSgpKTsKIAogICAgICAgICBSZXN1bHRMaXN0IHJlc3VsdHM7Ci0KLSAgICAgICAg
aWYgKG1fY3VycmVudE9wY29kZSA9PSBUYWlsQ2FsbCkgewotCi0gICAgICAgICAgICBjb25zdCBh
dXRvJiBjYWxsZXJTaWduYXR1cmUgPSAqbV9zaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+
KCk7Ci0KLSAgICAgICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoY2FsbGVlU2lnbmF0dXJlLnJl
dHVybkNvdW50KCkgIT0gY2FsbGVyU2lnbmF0dXJlLnJldHVybkNvdW50KCksICJ0YWlsIGNhbGwg
ZnVuY3Rpb24gaW5kZXggIiwgZnVuY3Rpb25JbmRleCwgIiB3aXRoIHJldHVybiBjb3VudCAiLCBj
YWxsZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKSwgIiwgYnV0IHRoZSBjYWxsZXIncyBzaWduYXR1
cmUgaGFzICIsIGNhbGxlclNpZ25hdHVyZS5yZXR1cm5Db3VudCgpLCAiIHJldHVybiB2YWx1ZXMi
KTsKLQotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNpZ25hdHVy
ZS5yZXR1cm5Db3VudCgpOyArK2kpCi0gICAgICAgICAgICAgICAgV0FTTV9WQUxJREFUT1JfRkFJ
TF9JRihjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSAhPSBjYWxsZXJTaWduYXR1cmUucmV0
dXJuVHlwZShpKSwgInRhaWwgY2FsbCBmdW5jdGlvbiBpbmRleCAiLCBmdW5jdGlvbkluZGV4LCAi
IHJldHVybiB0eXBlIG1pc21hdGNoOiAiICwgImV4cGVjdGVkICIsIGNhbGxlclNpZ25hdHVyZS5y
ZXR1cm5UeXBlKGkpLCAiLCBnb3QgIiwgY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSkpOwot
Ci0gICAgICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChhZGRDYWxsKGZ1bmN0aW9uSW5k
ZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCByZXN1bHRzLCBDYWxsVHlwZTo6VGFpbENhbGwpKTsK
LQotICAgICAgICAgICAgbV91bnJlYWNoYWJsZUJsb2NrcyA9IDE7Ci0KLSAgICAgICAgICAgIHJl
dHVybiB7IH07Ci0gICAgICAgIH0KLQogICAgICAgICBXQVNNX1RSWV9BRERfVE9fQ09OVEVYVChh
ZGRDYWxsKGZ1bmN0aW9uSW5kZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCByZXN1bHRzKSk7CisK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgPT0g
cmVzdWx0cy5zaXplKCkpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxs
ZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQpAQCAtMjE0Miw5ICsyMTIxLDYgQEAgRk9S
X0VBQ0hfV0FTTV9NRU1PUllfU1RPUkVfT1AoQ1JFQVRFX0NBU0UpCiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCi0gICAgY2FzZSBUYWlsQ2FsbEluZGlyZWN0OgotICAgICAgICBXQVNNX1BB
UlNFUl9GQUlMX0lGKCFPcHRpb25zOjp1c2VXZWJBc3NlbWJseVRhaWxDYWxscygpLCAid2FzbSB0
YWlsIGNhbGxzIGFyZSBub3QgZW5hYmxlZCIpOwotICAgICAgICBGQUxMVEhST1VHSDsKICAgICBj
YXNlIENhbGxJbmRpcmVjdDogewogICAgICAgICB1aW50MzJfdCBzaWduYXR1cmVJbmRleDsKICAg
ICAgICAgdWludDMyX3QgdGFibGVJbmRleDsKQEAgLTIxNzUsMjMgKzIxNTEsNiBAQCBGT1JfRUFD
SF9XQVNNX01FTU9SWV9TVE9SRV9PUChDUkVBVEVfQ0FTRSkKICAgICAgICAgbV9leHByZXNzaW9u
U3RhY2suc2hyaW5rKGZpcnN0QXJndW1lbnRJbmRleCk7CiAKICAgICAgICAgUmVzdWx0TGlzdCBy
ZXN1bHRzOwotCi0gICAgICAgIGlmIChtX2N1cnJlbnRPcGNvZGUgPT0gVGFpbENhbGxJbmRpcmVj
dCkgewotCi0gICAgICAgICAgICBjb25zdCBhdXRvJiBjYWxsZXJTaWduYXR1cmUgPSAqbV9zaWdu
YXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCk7Ci0KLSAgICAgICAgICAgIFdBU01fUEFSU0VS
X0ZBSUxfSUYoY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCkgIT0gY2FsbGVyU2lnbmF0dXJl
LnJldHVybkNvdW50KCksICJ0YWlsIGNhbGwgaW5kaXJlY3QgZnVuY3Rpb24gd2l0aCByZXR1cm4g
Y291bnQgIiwgY2FsbGVlU2lnbmF0dXJlLnJldHVybkNvdW50KCksICIsIGJ1dCB0aGUgY2FsbGVy
J3Mgc2lnbmF0dXJlIGhhcyAiLCBjYWxsZXJTaWduYXR1cmUucmV0dXJuQ291bnQoKSwgIiByZXR1
cm4gdmFsdWVzIik7Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjYWxs
ZWVTaWduYXR1cmUucmV0dXJuQ291bnQoKTsgKytpKQotICAgICAgICAgICAgICAgIFdBU01fVkFM
SURBVE9SX0ZBSUxfSUYoY2FsbGVlU2lnbmF0dXJlLnJldHVyblR5cGUoaSkgIT0gY2FsbGVyU2ln
bmF0dXJlLnJldHVyblR5cGUoaSksICJ0YWlsIGNhbGwgaW5kaXJlY3QgcmV0dXJuIHR5cGUgbWlz
bWF0Y2g6ICIgLCAiZXhwZWN0ZWQgIiwgY2FsbGVyU2lnbmF0dXJlLnJldHVyblR5cGUoaSksICIs
IGdvdCAiLCBjYWxsZWVTaWduYXR1cmUucmV0dXJuVHlwZShpKSk7Ci0KLSAgICAgICAgICAgIFdB
U01fVFJZX0FERF9UT19DT05URVhUKGFkZENhbGxJbmRpcmVjdCh0YWJsZUluZGV4LCB0eXBlRGVm
aW5pdGlvbiwgYXJncywgcmVzdWx0cywgQ2FsbFR5cGU6OlRhaWxDYWxsKSk7Ci0KLSAgICAgICAg
ICAgIG1fdW5yZWFjaGFibGVCbG9ja3MgPSAxOwotCi0gICAgICAgICAgICByZXR1cm4geyB9Owot
ICAgICAgICB9Ci0KICAgICAgICAgV0FTTV9UUllfQUREX1RPX0NPTlRFWFQoYWRkQ2FsbEluZGly
ZWN0KHRhYmxlSW5kZXgsIHR5cGVEZWZpbml0aW9uLCBhcmdzLCByZXN1bHRzKSk7CiAKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNhbGxlZVNpZ25hdHVyZS5yZXR1cm5Db3VudCgp
OyArK2kpCkBAIC0yNzIyLDkgKzI2ODEsNiBAQCBhdXRvIEZ1bmN0aW9uUGFyc2VyPENvbnRleHQ+
OjpwYXJzZVVucmVhY2hhYmxlRXhwcmVzc2lvbigpIC0+IFBhcnRpYWxSZXN1bHQKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBjYXNlIFRhaWxDYWxsSW5kaXJlY3Q6Ci0gICAgICAg
IFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VGFpbENhbGxzKCks
ICJ3YXNtIHRhaWwgY2FsbHMgYXJlIG5vdCBlbmFibGVkIik7Ci0gICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgQ2FsbEluZGlyZWN0OiB7CiAgICAgICAgIHVpbnQzMl90IHVudXNlZDsKICAg
ICAgICAgdWludDMyX3QgdW51c2VkMjsKQEAgLTI3NzYsOSArMjczMiw2IEBAIGF1dG8gRnVuY3Rp
b25QYXJzZXI8Q29udGV4dD46OnBhcnNlVW5yZWFjaGFibGVFeHByZXNzaW9uKCkgLT4gUGFydGlh
bFJlc3VsdAogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIGNhc2UgVGFpbENhbGw6
Ci0gICAgICAgIFdBU01fUEFSU0VSX0ZBSUxfSUYoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5VGFp
bENhbGxzKCksICJ3YXNtIHRhaWwgY2FsbHMgYXJlIG5vdCBlbmFibGVkIik7Ci0gICAgICAgIEZB
TExUSFJPVUdIOwogICAgIGNhc2UgQ2FsbDogewogICAgICAgICB1aW50MzJfdCBmdW5jdGlvbklu
ZGV4OwogICAgICAgICBXQVNNX0ZBSUxfSUZfSEVMUEVSX0ZBSUxTKHBhcnNlRnVuY3Rpb25JbmRl
eChmdW5jdGlvbkluZGV4KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtSVJHZW5lcmF0b3JIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtSVJHZW5lcmF0b3JIZWxwZXJzLmgKaW5kZXggZDQ5NDM0MWRhZjUxLi44N2IzZWZmN2EwOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21JUkdlbmVyYXRvckhl
bHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSVJHZW5lcmF0b3JI
ZWxwZXJzLmgKQEAgLTIyMCwzNSArMjIwLDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRDYXRj
aFByb2xvZ3VlU2hhcmVkKEIzOjpBaXI6OkNvZGUmIGNvZGUsIENDYWxsSGVscGVycyYgamkKICAg
ICBqaXQuYWRkUHRyKENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKC1jb2RlLmZyYW1lU2l6ZSgp
KSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVy
UmVnaXN0ZXIpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcHJlcGFyZUZvclRhaWxDYWxsKEND
YWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJh
bXMsIGNvbnN0IENoZWNrZWQ8aW50MzJfdD4mIHRhaWxDYWxsU3RhY2tPZmZzZXRGcm9tRlApCi17
Ci0gICAgQ2hlY2tlZDxpbnQzMl90PiBmcmFtZVNpemUgPSBwYXJhbXMuY29kZSgpLmZyYW1lU2l6
ZSgpOwotICAgIENoZWNrZWQ8aW50MzJfdD4gbmV3U3RhY2tPZmZzZXQgPSBmcmFtZVNpemUgKyB0
YWlsQ2FsbFN0YWNrT2Zmc2V0RnJvbUZQOwotCi0gICAgUmVnaXN0ZXJBdE9mZnNldExpc3QgY2Fs
bGVlU2F2ZXMgPSBwYXJhbXMuY29kZSgpLmNhbGxlZVNhdmVSZWdpc3RlckF0T2Zmc2V0TGlzdCgp
OwotCi0gICAgLy8gV2Ugd2lsbCB1c2Ugc3AtYmFzZWQgb2Zmc2V0cyBzaW5jZSB0aGUgZnJhbWUg
cG9pbnRlciBpcyBhbHJlYWR5IHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBmcmFtZS4KLSAgICBj
YWxsZWVTYXZlcy5hZGp1c3RPZmZzZXRzKGZyYW1lU2l6ZSk7Ci0gICAgaml0LmVtaXRSZXN0b3Jl
KGNhbGxlZVNhdmVzLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotCi0g
ICAgLy8gVGhlIHJldHVybiBQQyB3YXMgc2F2ZWQgb24gdGhlIHN0YWNrIGluIHRoZSB0YWlsIGNh
bGwgcGF0Y2hwb2ludC4KLSNpZiBDUFUoWDg2XzY0KQotICAgIG5ld1N0YWNrT2Zmc2V0IC09IENo
ZWNrZWQ8aW50MzJfdD4oc2l6ZW9mKFJlZ2lzdGVyKSk7Ci0jZWxpZiBDUFUoQVJNKSB8fCBDUFUo
QVJNNjQpIHx8IENQVShSSVNDVjY0KQotICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIG5ld1N0YWNrT2Zmc2V0
IC0gQ2hlY2tlZDxpbnQzMl90PihzaXplb2YoUmVnaXN0ZXIpKSksIE1hY3JvQXNzZW1ibGVyOjps
aW5rUmVnaXN0ZXIpOwotI2lmIENQVShBUk02NEUpCi0gICAgR1BSUmVnIGNhbGxlclNQID0gaml0
LnNjcmF0Y2hSZWdpc3RlcigpOwotICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihmcmFtZVNpemUgKyBDaGVja2VkPGludDMyX3Q+KHNpemVvZihDYWxsZXJGcmFtZUFu
ZFBDKSkpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIsIGNhbGxlclNQKTsK
LSAgICBqaXQudW50YWdQdHIoY2FsbGVyU1AsIE1hY3JvQXNzZW1ibGVyOjpsaW5rUmVnaXN0ZXIp
OwotICAgIGppdC52YWxpZGF0ZVVudGFnZ2VkUHRyKE1hY3JvQXNzZW1ibGVyOjpsaW5rUmVnaXN0
ZXIpOwotI2VuZGlmCi0jZWxzZQotICAgIFVOUkVBQ0hBQkxFX0ZPUl9QTEFURk9STSgpOwotI2Vu
ZGlmCi0KLSAgICBqaXQuYWRkUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIobmV3U3Rh
Y2tPZmZzZXQpLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotfQotCiB9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZ
X0IzSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVy
YXRvci5jcHAKaW5kZXggMzI2NTRlMjIwMzkxLi5mZDUxZjYyOTNjNzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludEdlbmVyYXRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50R2VuZXJhdG9yLmNwcApAQCAtNDcsNyAr
NDcsNiBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogY2xhc3MgTExJbnRHZW5l
cmF0b3IgOiBwdWJsaWMgQnl0ZWNvZGVHZW5lcmF0b3JCYXNlPEdlbmVyYXRvclRyYWl0cz4gewog
cHVibGljOgogICAgIHVzaW5nIEV4cHJlc3Npb25UeXBlID0gVmlydHVhbFJlZ2lzdGVyOwotICAg
IHVzaW5nIENhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpDYWxsVHlwZTsKIAogICAgIHN0YXRpYyBj
b25zdGV4cHIgYm9vbCB0aWVyU3VwcG9ydHNTSU1EID0gZmFsc2U7CiAKQEAgLTM1Nyw4ICszNTYs
OCBAQCBwdWJsaWM6CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gZW5kVG9w
TGV2ZWwoQmxvY2tTaWduYXR1cmUsIGNvbnN0IFN0YWNrJik7CiAKICAgICAvLyBDYWxscwotICAg
IFBhcnRpYWxSZXN1bHQgV0FSTl9VTlVTRURfUkVUVVJOIGFkZENhbGwodWludDMyX3QgY2FsbGVl
SW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJn
cywgUmVzdWx0TGlzdCYgcmVzdWx0cywgQ2FsbFR5cGUgPSBDYWxsVHlwZTo6Q2FsbCk7Ci0gICAg
UGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbEluZGlyZWN0KHVuc2lnbmVk
IHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBl
PiYgYXJncywgUmVzdWx0TGlzdCYgcmVzdWx0cywgQ2FsbFR5cGUgPSBDYWxsVHlwZTo6Q2FsbCk7
CisgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4gYWRkQ2FsbCh1aW50MzJfdCBj
YWxsZWVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+
JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzKTsKKyAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5V
U0VEX1JFVFVSTiBhZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFibGVJbmRleCwgY29uc3QgVHlw
ZURlZmluaXRpb24mLCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiBy
ZXN1bHRzKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBhZGRDYWxsUmVm
KGNvbnN0IFR5cGVEZWZpbml0aW9uJiwgVmVjdG9yPEV4cHJlc3Npb25UeXBlPiYgYXJncywgUmVz
dWx0TGlzdCYgcmVzdWx0cyk7CiAgICAgUGFydGlhbFJlc3VsdCBXQVJOX1VOVVNFRF9SRVRVUk4g
YWRkVW5yZWFjaGFibGUoKTsKICAgICBQYXJ0aWFsUmVzdWx0IFdBUk5fVU5VU0VEX1JFVFVSTiBh
ZGRDcmFzaCgpOwpAQCAtNjQyLDcgKzY0MSw3IEBAIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJ
bmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlCiAg
ICAgLy8gY2FsbCBmcmFtZSBoZWFkZXIKIAogICAgIC8vIFdlIG5lZWQgdG8gYWxsb2NhdGUgYXQg
bGVhc3Qgc3BhY2UgZm9yIGFsbCBHUFJzIGFuZCBGUFJzLgotICAgIC8vIFJldHVybiB2YWx1ZSBz
dGFjazAgaXMgYXQgc3RhY2tOIC0gc3RhY2tSZXR1cm5WYWx1ZXMKKyAgICAvLyBSZXR1cm4gdmFs
dWVzIHVzZSB0aGUgc2FtZSBhbGxvY2F0aW9uIGxheW91dC4KIAogICAgIGNvbnN0IGF1dG8gaW5p
dGlhbFN0YWNrU2l6ZSA9IG1fc3RhY2tTaXplOwogCkBAIC02NTAsMTcgKzY0OSw1OSBAQCBhdXRv
IExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoY29uc3QgRnVuY3Rpb25T
aWduYXR1cmUmIHNpZ25hdHVyZQogICAgIGNvbnN0IHVpbnQzMl90IGdwckNvdW50ID0gY2FsbGlu
Z0NvbnZlbnRpb24uanNyQXJncy5zaXplKCk7CiAgICAgY29uc3QgdWludDMyX3QgZnByQ291bnQg
PSBjYWxsaW5nQ29udmVudGlvbi5mcHJBcmdzLnNpemUoKTsKIAotICAgIHVpbnQzMl90IHN0YWNr
UmVzdWx0cyA9IGNhbGxpbmdDb252ZW50aW9uLm51bWJlck9mU3RhY2tSZXN1bHRzKHNpZ25hdHVy
ZSk7Ci0gICAgdWludDMyX3Qgc3RhY2tDb3VudEFsaWduZWQgPSBXVEY6OnJvdW5kVXBUb011bHRp
cGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgc3RkOjptYXgoY2FsbGluZ0NvbnZlbnRp
b24ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyhzaWduYXR1cmUpLCBzdGFja1Jlc3VsdHMpKTsKKyAg
ICB1aW50MzJfdCBzdGFja0NvdW50ID0gMDsKICAgICB1aW50MzJfdCBncHJJbmRleCA9IDA7CiAg
ICAgdWludDMyX3QgZnBySW5kZXggPSAwOwogICAgIHVpbnQzMl90IHN0YWNrSW5kZXggPSAwOwog
Ci0gICAgbV9zdGFja1NpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1l
bnRSZWdpc3RlcnMoKSwgbV9zdGFja1NpemUudmFsdWUoKSk7CisgICAgYXV0byBhbGxvY2F0ZVN0
YWNrUmVnaXN0ZXIgPSBbJl0oVHlwZSB0eXBlKSB7CisgICAgICAgIHN3aXRjaCAodHlwZS5raW5k
KSB7CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkkzMjoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6
STY0OgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpFeHRlcm5yZWY6CisgICAgICAgIGNhc2UgVHlw
ZUtpbmQ6OkZ1bmNyZWY6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlZk51bGw6CisgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OlJlZjoKKyAgICAgICAgICAgIGlmIChncHJJbmRleCA8IGdwckNvdW50
KQorICAgICAgICAgICAgICAgICsrZ3BySW5kZXg7CisgICAgICAgICAgICBlbHNlIGlmIChzdGFj
a0luZGV4KysgPj0gc3RhY2tDb3VudCkKKyAgICAgICAgICAgICAgICArK3N0YWNrQ291bnQ7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6RjMyOgorICAgICAgICBj
YXNlIFR5cGVLaW5kOjpGNjQ6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlYxMjg6CisgICAgICAg
ICAgICBpZiAoZnBySW5kZXggPCBmcHJDb3VudCkKKyAgICAgICAgICAgICAgICArK2ZwckluZGV4
OworICAgICAgICAgICAgZWxzZSBpZiAoc3RhY2tJbmRleCsrID49IHN0YWNrQ291bnQpCisgICAg
ICAgICAgICAgICAgKytzdGFja0NvdW50OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVHlwZUtpbmQ6OlZvaWQ6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OkZ1bmM6CisgICAgICAg
IGNhc2UgVHlwZUtpbmQ6OlN0cnVjdDoKKyAgICAgICAgY2FzZSBUeXBlS2luZDo6QXJyYXk6Cisg
ICAgICAgIGNhc2UgVHlwZUtpbmQ6OkFycmF5cmVmOgorICAgICAgICBjYXNlIFR5cGVLaW5kOjpJ
MzFyZWY6CisgICAgICAgIGNhc2UgVHlwZUtpbmQ6OlJlYzoKKyAgICAgICAgY2FzZSBUeXBlS2lu
ZDo6U3ViOgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgfQorICAgIH07CisKKworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUu
YXJndW1lbnRDb3VudCgpOyBpKyspCisgICAgICAgIGFsbG9jYXRlU3RhY2tSZWdpc3RlcihzaWdu
YXR1cmUuYXJndW1lbnRUeXBlKGkpKTsKKworICAgIGdwckluZGV4ID0gMDsKKyAgICBmcHJJbmRl
eCA9IDA7CisgICAgc3RhY2tJbmRleCA9IDA7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8
IHNpZ25hdHVyZS5yZXR1cm5Db3VudCgpOyBpKyspCisgICAgICAgIGFsbG9jYXRlU3RhY2tSZWdp
c3RlcihzaWduYXR1cmUucmV0dXJuVHlwZShpKSk7CisKICAgICAvLyBGSVhNRTogd2UgYXJlIGFs
bG9jYXRpbmcgdGhlIGV4dHJhIHNwYWNlIGZvciB0aGUgYXJndW1lbnQvcmV0dXJuIGNvdW50IGlu
IG9yZGVyIHRvIGF2b2lkIGludGVyZmVyZW5jZSwgYnV0IHdlIGNvdWxkIGRvIGJldHRlcgogICAg
IC8vIE5PVEU6IFdlIGluY3JlYXNlIGFyZyBjb3VudCBieSAxIGZvciB0aGUgY2FzZSBvZiBpbmRp
cmVjdCBjYWxscwotICAgIG1fc3RhY2tTaXplICs9IHN0ZDo6bWF4KHNpZ25hdHVyZS5hcmd1bWVu
dENvdW50KCkgKyAxLCBzaWduYXR1cmUucmV0dXJuQ291bnQoKSkgKyBncHJDb3VudCArIGZwckNv
dW50ICsgc3RhY2tDb3VudEFsaWduZWQgKyBDYWxsRnJhbWU6OmhlYWRlclNpemVJblJlZ2lzdGVy
cyArIDE7Ci0gICAgbV9zdGFja1NpemUgPSBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tB
bGlnbm1lbnRSZWdpc3RlcnMoKSwgbV9zdGFja1NpemUudmFsdWUoKSk7CisgICAgbV9zdGFja1Np
emUgKz0gc3RkOjptYXgoc2lnbmF0dXJlLmFyZ3VtZW50Q291bnQoKSArIDEsIHNpZ25hdHVyZS5y
ZXR1cm5Db3VudCgpKSArIGdwckNvdW50ICsgZnByQ291bnQgKyBzdGFja0NvdW50ICsgQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgKyAxOworICAgIGlmIChtX3N0YWNrU2l6ZS52YWx1
ZSgpICUgc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSkKKyAgICAgICAgKyttX3N0YWNrU2l6ZTsK
ICAgICBpZiAobV9tYXhTdGFja1NpemUgPCBtX3N0YWNrU2l6ZSkKICAgICAgICAgbV9tYXhTdGFj
a1NpemUgPSBtX3N0YWNrU2l6ZTsKIApAQCAtNjcxLDExICs3MTIsMTEgQEAgYXV0byBMTEludEdl
bmVyYXRvcjo6Y2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGNvbnN0IEZ1bmN0aW9uU2lnbmF0dXJl
JiBzaWduYXR1cmUKICAgICBjb25zdCB1bnNpZ25lZCBzdGFja09mZnNldCA9IG1fc3RhY2tTaXpl
OwogICAgIGNvbnN0IHVuc2lnbmVkIGJhc2UgPSBzdGFja09mZnNldCAtIENhbGxGcmFtZTo6aGVh
ZGVyU2l6ZUluUmVnaXN0ZXJzIC0gMTsKIAotICAgIGNvbnN0IHVpbnQzMl90IGdwckxpbWl0ID0g
YmFzZSAtIHN0YWNrQ291bnRBbGlnbmVkIC0gZ3ByQ291bnQ7CisgICAgY29uc3QgdWludDMyX3Qg
Z3ByTGltaXQgPSBiYXNlIC0gc3RhY2tDb3VudCAtIGdwckNvdW50OwogICAgIGNvbnN0IHVpbnQz
Ml90IGZwckxpbWl0ID0gZ3ByTGltaXQgLSBmcHJDb3VudDsKIAogICAgIHN0YWNrSW5kZXggPSBi
YXNlOwotICAgIGdwckluZGV4ID0gYmFzZSAtIHN0YWNrQ291bnRBbGlnbmVkOworICAgIGdwcklu
ZGV4ID0gYmFzZSAtIHN0YWNrQ291bnQ7CiAgICAgZnBySW5kZXggPSBncHJJbmRleCAtIGdwckNv
dW50OwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWduYXR1cmUuYXJndW1lbnRDb3Vu
dCgpOyBpKyspIHsKICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUuYXJndW1lbnRUeXBlKGkpLmtp
bmQpIHsKQEAgLTcxMCw4ICs3NTEsOCBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjpjYWxsSW5mb3Jt
YXRpb25Gb3JDYWxsZXIoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUmIHNpZ25hdHVyZQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgZ3BySW5kZXggPSBiYXNlIC0gc3RhY2tDb3VudEFsaWduZWQ7Ci0g
ICAgc3RhY2tJbmRleCA9IGdwckluZGV4ICsgc3RhY2tSZXN1bHRzOworICAgIHN0YWNrSW5kZXgg
PSBiYXNlOworICAgIGdwckluZGV4ID0gYmFzZSAtIHN0YWNrQ291bnQ7CiAgICAgZnBySW5kZXgg
PSBncHJJbmRleCAtIGdwckNvdW50OwogICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaWdu
YXR1cmUucmV0dXJuQ291bnQoKTsgaSsrKSB7CiAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLnJl
dHVyblR5cGUoaSkua2luZCkgewpAQCAtNzU3LDcgKzc5OCw3IEBAIGF1dG8gTExJbnRHZW5lcmF0
b3I6OmNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcihjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2ln
bmF0dXJlCiAgICAgICAgIH0KICAgICB9OwogCi0gICAgcmV0dXJuIExMSW50Q2FsbEluZm9ybWF0
aW9uIHsgc3RhY2tPZmZzZXQsIHN0YWNrQ291bnRBbGlnbmVkLCBXVEZNb3ZlKGFyZ3VtZW50cyks
IFdURk1vdmUoY29tbWl0UmVzdWx0cykgfTsKKyAgICByZXR1cm4gTExJbnRDYWxsSW5mb3JtYXRp
b24geyBzdGFja09mZnNldCwgc3RhY2tDb3VudCwgV1RGTW92ZShhcmd1bWVudHMpLCBXVEZNb3Zl
KGNvbW1pdFJlc3VsdHMpIH07CiB9CiAKIGF1dG8gTExJbnRHZW5lcmF0b3I6OmNhbGxJbmZvcm1h
dGlvbkZvckNhbGxlZShjb25zdCBGdW5jdGlvblNpZ25hdHVyZSYgc2lnbmF0dXJlKSAtPiBWZWN0
b3I8VmlydHVhbFJlZ2lzdGVyLCAyPgpAQCAtNzczLDExICs4MTQsOSBAQCBhdXRvIExMSW50R2Vu
ZXJhdG9yOjpjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZWUoY29uc3QgRnVuY3Rpb25TaWduYXR1cmUm
IHNpZ25hdHVyZQogCiAgICAgdWludDMyX3QgZ3BySW5kZXggPSAwOwogICAgIHVpbnQzMl90IGZw
ckluZGV4ID0gZ3ByQ291bnQ7CisgICAgdWludDMyX3Qgc3RhY2tJbmRleCA9IDE7CiAgICAgY29u
c3QgdWludDMyX3QgbWF4R1BSSW5kZXggPSBncHJDb3VudDsKICAgICBjb25zdCB1aW50MzJfdCBt
YXhGUFJJbmRleCA9IG1heEdQUkluZGV4ICsgZnByQ291bnQ7Ci0gICAgdWludDMyX3Qgc3RhY2tS
ZXN1bHRzID0gY2FsbGluZ0NvbnZlbnRpb24ubnVtYmVyT2ZTdGFja1Jlc3VsdHMoc2lnbmF0dXJl
KTsKLSAgICB1aW50MzJfdCBzdGFja0NvdW50QWxpZ25lZCA9IFdURjo6cm91bmRVcFRvTXVsdGlw
bGVPZihzdGFja0FsaWdubWVudFJlZ2lzdGVycygpLCBzdGQ6Om1heChjYWxsaW5nQ29udmVudGlv
bi5udW1iZXJPZlN0YWNrQXJndW1lbnRzKHNpZ25hdHVyZSksIHN0YWNrUmVzdWx0cykpOwotICAg
IHVpbnQzMl90IHN0YWNrSW5kZXggPSAxICsgc3RhY2tDb3VudEFsaWduZWQgLSBzdGFja1Jlc3Vs
dHM7CiAKICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnJldHVybkNvdW50
KCk7IGkrKykgewogICAgICAgICBzd2l0Y2ggKHNpZ25hdHVyZS5yZXR1cm5UeXBlKGkpLmtpbmQp
IHsKQEAgLTEzNjUsNDIgKzE0MDQsMjIgQEAgYXV0byBMTEludEdlbmVyYXRvcjo6ZW5kVG9wTGV2
ZWwoQmxvY2tTaWduYXR1cmUgc2lnbmF0dXJlLCBjb25zdCBTdGFjayYgZXhwcmVzc2kKICAgICBy
ZXR1cm4geyB9OwogfQogCi1hdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90IGZ1
bmN0aW9uSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxFeHBy
ZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMsIENhbGxUeXBlIGNhbGxUeXBl
KSAtPiBQYXJ0aWFsUmVzdWx0CithdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsKHVpbnQzMl90
IGZ1bmN0aW9uSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBzaWduYXR1cmUsIFZlY3RvcjxF
eHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3VsdHMpIC0+IFBhcnRpYWxSZXN1
bHQKIHsKLSAgICBib29sIGlzVGFpbENhbGwgPSBjYWxsVHlwZSA9PSBDYWxsVHlwZTo6VGFpbENh
bGw7Ci0gICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlOjpDYWxsIHx8IGlzVGFpbENhbGwp
OwogICAgIEFTU0VSVChzaWduYXR1cmUuYXM8RnVuY3Rpb25TaWduYXR1cmU+KCktPmFyZ3VtZW50
Q291bnQoKSA9PSBhcmdzLnNpemUoKSk7Ci0gICAgTExJbnRDYWxsSW5mb3JtYXRpb24gd2FzbUNh
bGxlZUluZm8gPSBjYWxsSW5mb3JtYXRpb25Gb3JDYWxsZXIoKnNpZ25hdHVyZS5hczxGdW5jdGlv
blNpZ25hdHVyZT4oKSk7Ci0KLSAgICB1bmlmeVZhbHVlc1dpdGhCbG9jayh3YXNtQ2FsbGVlSW5m
by5hcmd1bWVudHMsIGFyZ3MpOwotCi0gICAgaWYgKGlzVGFpbENhbGwpIHsKLSAgICAgICAgbV9j
b2RlQmxvY2stPnNldFRhaWxDYWxsKGZ1bmN0aW9uSW5kZXgsIG1faW5mby5pc0ltcG9ydGVkRnVu
Y3Rpb25Gcm9tRnVuY3Rpb25JbmRleFNwYWNlKGZ1bmN0aW9uSW5kZXgpKTsKLQotICAgICAgICBj
b25zdCBhdXRvJiBjYWxsaW5nQ29udmVudGlvbiA9IHdhc21DYWxsaW5nQ29udmVudGlvbigpOwot
ICAgICAgICBjb25zdCBUeXBlSW5kZXggY2FsbGVyVHlwZUluZGV4ID0gbV9pbmZvLmludGVybmFs
RnVuY3Rpb25UeXBlSW5kaWNlc1ttX2Z1bmN0aW9uSW5kZXhdOwotICAgICAgICBjb25zdCBUeXBl
RGVmaW5pdGlvbiYgY2FsbGVyVHlwZURlZmluaXRpb24gPSBUeXBlSW5mb3JtYXRpb246OmdldChj
YWxsZXJUeXBlSW5kZXgpOwotICAgICAgICB1aW50MzJfdCBjYWxsZXJTdGFja0FyZ3MgPSBXVEY6
OnJvdW5kVXBUb011bHRpcGxlT2Yoc3RhY2tBbGlnbm1lbnRSZWdpc3RlcnMoKSwgY2FsbGluZ0Nv
bnZlbnRpb24ubnVtYmVyT2ZTdGFja1ZhbHVlcygqY2FsbGVyVHlwZURlZmluaXRpb24uYXM8RnVu
Y3Rpb25TaWduYXR1cmU+KCkpKTsKLQotICAgICAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRMUygp
KQotICAgICAgICAgICAgV2FzbVRhaWxDYWxsOjplbWl0KHRoaXMsIGZ1bmN0aW9uSW5kZXgsIHdh
c21DYWxsZWVJbmZvLnN0YWNrT2Zmc2V0LCB3YXNtQ2FsbGVlSW5mby5udW1iZXJPZlN0YWNrQXJn
dW1lbnRzLCBjYWxsZXJTdGFja0FyZ3MpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBXYXNt
VGFpbENhbGxOb1Rsczo6ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4LCB3YXNtQ2FsbGVlSW5mby5z
dGFja09mZnNldCwgd2FzbUNhbGxlZUluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgY2FsbGVy
U3RhY2tBcmdzKTsKLQotICAgIH0gZWxzZSBpZiAoQ29udGV4dDo6dXNlRmFzdFRMUygpKQotICAg
ICAgICBXYXNtQ2FsbDo6ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4LCB3YXNtQ2FsbGVlSW5mby5z
dGFja09mZnNldCwgd2FzbUNhbGxlZUluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cyk7CisgICAg
TExJbnRDYWxsSW5mb3JtYXRpb24gaW5mbyA9IGNhbGxJbmZvcm1hdGlvbkZvckNhbGxlcigqc2ln
bmF0dXJlLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpKTsKKyAgICB1bmlmeVZhbHVlc1dpdGhCbG9j
ayhpbmZvLmFyZ3VtZW50cywgYXJncyk7CisgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkK
KyAgICAgICAgV2FzbUNhbGw6OmVtaXQodGhpcywgZnVuY3Rpb25JbmRleCwgaW5mby5zdGFja09m
ZnNldCwgaW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzKTsKICAgICBlbHNlCi0gICAgICAgIFdh
c21DYWxsTm9UbHM6OmVtaXQodGhpcywgZnVuY3Rpb25JbmRleCwgd2FzbUNhbGxlZUluZm8uc3Rh
Y2tPZmZzZXQsIHdhc21DYWxsZWVJbmZvLm51bWJlck9mU3RhY2tBcmd1bWVudHMpOwotCi0gICAg
d2FzbUNhbGxlZUluZm8uY29tbWl0UmVzdWx0cyhyZXN1bHRzKTsKKyAgICAgICAgV2FzbUNhbGxO
b1Rsczo6ZW1pdCh0aGlzLCBmdW5jdGlvbkluZGV4LCBpbmZvLnN0YWNrT2Zmc2V0LCBpbmZvLm51
bWJlck9mU3RhY2tBcmd1bWVudHMpOworICAgIGluZm8uY29tbWl0UmVzdWx0cyhyZXN1bHRzKTsK
IAogICAgIHJldHVybiB7IH07CiB9CiAKLWF1dG8gTExJbnRHZW5lcmF0b3I6OmFkZENhbGxJbmRp
cmVjdCh1bnNpZ25lZCB0YWJsZUluZGV4LCBjb25zdCBUeXBlRGVmaW5pdGlvbiYgc2lnbmF0dXJl
LCBWZWN0b3I8RXhwcmVzc2lvblR5cGU+JiBhcmdzLCBSZXN1bHRMaXN0JiByZXN1bHRzLCBDYWxs
VHlwZSBjYWxsVHlwZSkgLT4gUGFydGlhbFJlc3VsdAorYXV0byBMTEludEdlbmVyYXRvcjo6YWRk
Q2FsbEluZGlyZWN0KHVuc2lnbmVkIHRhYmxlSW5kZXgsIGNvbnN0IFR5cGVEZWZpbml0aW9uJiBz
aWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaW9uVHlwZT4mIGFyZ3MsIFJlc3VsdExpc3QmIHJlc3Vs
dHMpIC0+IFBhcnRpYWxSZXN1bHQKIHsKLSAgICBib29sIGlzVGFpbENhbGwgPSBjYWxsVHlwZSA9
PSBDYWxsVHlwZTo6VGFpbENhbGw7Ci0gICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlOjpD
YWxsIHx8IGlzVGFpbENhbGwpOwogICAgIEV4cHJlc3Npb25UeXBlIGNhbGxlZUluZGV4ID0gYXJn
cy50YWtlTGFzdCgpOwogCiAgICAgY29uc3QgYXV0byYgZnVuY3Rpb25TaWduYXR1cmUgPSAqc2ln
bmF0dXJlLmV4cGFuZCgpLmFzPEZ1bmN0aW9uU2lnbmF0dXJlPigpOwpAQCAtMTQwOCwyOSArMTQy
NywxMyBAQCBhdXRvIExMSW50R2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QodW5zaWduZWQgdGFi
bGVJbmRleCwgY29uc3QgVHlwZURlZmluaXRpb24mCiAgICAgQVNTRVJUKG1faW5mby50YWJsZUNv
dW50KCkgPiB0YWJsZUluZGV4KTsKICAgICBBU1NFUlQobV9pbmZvLnRhYmxlc1t0YWJsZUluZGV4
XS50eXBlKCkgPT0gVGFibGVFbGVtZW50VHlwZTo6RnVuY3JlZik7CiAKLSAgICBMTEludENhbGxJ
bmZvcm1hdGlvbiBjYWxsZWVJbmZvID0gY2FsbEluZm9ybWF0aW9uRm9yQ2FsbGVyKGZ1bmN0aW9u
U2lnbmF0dXJlKTsKLQotICAgIHVuaWZ5VmFsdWVzV2l0aEJsb2NrKGNhbGxlZUluZm8uYXJndW1l
bnRzLCBhcmdzKTsKLQotICAgIGlmIChpc1RhaWxDYWxsKSB7Ci0gICAgICAgIG1fY29kZUJsb2Nr
LT5zZXRUYWlsQ2FsbENsb2JiZXJzSW5zdGFuY2UodHJ1ZSk7Ci0KLSAgICAgICAgY29uc3QgYXV0
byYgY2FsbGluZ0NvbnZlbnRpb24gPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb24oKTsKLSAgICAgICAg
Y29uc3QgVHlwZUluZGV4IGNhbGxlclR5cGVJbmRleCA9IG1faW5mby5pbnRlcm5hbEZ1bmN0aW9u
VHlwZUluZGljZXNbbV9mdW5jdGlvbkluZGV4XTsKLSAgICAgICAgY29uc3QgVHlwZURlZmluaXRp
b24mIGNhbGxlclR5cGVEZWZpbml0aW9uID0gVHlwZUluZm9ybWF0aW9uOjpnZXQoY2FsbGVyVHlw
ZUluZGV4KTsKLSAgICAgICAgdWludDMyX3QgY2FsbGVyU3RhY2tBcmdzID0gV1RGOjpyb3VuZFVw
VG9NdWx0aXBsZU9mKHN0YWNrQWxpZ25tZW50UmVnaXN0ZXJzKCksIGNhbGxpbmdDb252ZW50aW9u
Lm51bWJlck9mU3RhY2tWYWx1ZXMoKmNhbGxlclR5cGVEZWZpbml0aW9uLmFzPEZ1bmN0aW9uU2ln
bmF0dXJlPigpKSk7Ci0KLSAgICAgICAgaWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKLSAgICAg
ICAgICAgIFdhc21UYWlsQ2FsbEluZGlyZWN0OjplbWl0KHRoaXMsIGNhbGxlZUluZGV4LCBtX2Nv
ZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGNhbGxlZUluZm8uc3RhY2tPZmZzZXQs
IGNhbGxlZUluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgY2FsbGVyU3RhY2tBcmdzLCB0YWJs
ZUluZGV4KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgV2FzbVRhaWxDYWxsSW5kaXJlY3RO
b1Rsczo6ZW1pdCh0aGlzLCBjYWxsZWVJbmRleCwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShz
aWduYXR1cmUpLCBjYWxsZWVJbmZvLnN0YWNrT2Zmc2V0LCBjYWxsZWVJbmZvLm51bWJlck9mU3Rh
Y2tBcmd1bWVudHMsIGNhbGxlclN0YWNrQXJncywgdGFibGVJbmRleCk7Ci0KLSAgICB9IGVsc2Ug
aWYgKENvbnRleHQ6OnVzZUZhc3RUTFMoKSkKLSAgICAgICAgV2FzbUNhbGxJbmRpcmVjdDo6ZW1p
dCh0aGlzLCBjYWxsZWVJbmRleCwgbV9jb2RlQmxvY2stPmFkZFNpZ25hdHVyZShzaWduYXR1cmUp
LCBjYWxsZWVJbmZvLnN0YWNrT2Zmc2V0LCBjYWxsZWVJbmZvLm51bWJlck9mU3RhY2tBcmd1bWVu
dHMsIHRhYmxlSW5kZXgpOworICAgIExMSW50Q2FsbEluZm9ybWF0aW9uIGluZm8gPSBjYWxsSW5m
b3JtYXRpb25Gb3JDYWxsZXIoZnVuY3Rpb25TaWduYXR1cmUpOworICAgIHVuaWZ5VmFsdWVzV2l0
aEJsb2NrKGluZm8uYXJndW1lbnRzLCBhcmdzKTsKKyAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRM
UygpKQorICAgICAgICBXYXNtQ2FsbEluZGlyZWN0OjplbWl0KHRoaXMsIGNhbGxlZUluZGV4LCBt
X2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNpZ25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGlu
Zm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywgdGFibGVJbmRleCk7CiAgICAgZWxzZQotICAgICAg
ICBXYXNtQ2FsbEluZGlyZWN0Tm9UbHM6OmVtaXQodGhpcywgY2FsbGVlSW5kZXgsIG1fY29kZUJs
b2NrLT5hZGRTaWduYXR1cmUoc2lnbmF0dXJlKSwgY2FsbGVlSW5mby5zdGFja09mZnNldCwgY2Fs
bGVlSW5mby5udW1iZXJPZlN0YWNrQXJndW1lbnRzLCB0YWJsZUluZGV4KTsKLQotICAgIGNhbGxl
ZUluZm8uY29tbWl0UmVzdWx0cyhyZXN1bHRzKTsKKyAgICAgICAgV2FzbUNhbGxJbmRpcmVjdE5v
VGxzOjplbWl0KHRoaXMsIGNhbGxlZUluZGV4LCBtX2NvZGVCbG9jay0+YWRkU2lnbmF0dXJlKHNp
Z25hdHVyZSksIGluZm8uc3RhY2tPZmZzZXQsIGluZm8ubnVtYmVyT2ZTdGFja0FyZ3VtZW50cywg
dGFibGVJbmRleCk7CisgICAgaW5mby5jb21taXRSZXN1bHRzKHJlc3VsdHMpOwogCiAgICAgcmV0
dXJuIHsgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21M
TEludFBsYW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUxMSW50UGxhbi5j
cHAKaW5kZXggYzhiMjg0MWY5ZmRhLi4xZWYwOWRlMGRlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uY3BwCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVk
ZSAiV2FzbUNhbGxlZS5oIgogI2luY2x1ZGUgIldhc21MTEludEdlbmVyYXRvci5oIgogI2luY2x1
ZGUgIldhc21UeXBlRGVmaW5pdGlvbklubGluZXMuaCIKLSNpbmNsdWRlIDx3dGYvR3JhcGhOb2Rl
V29ya2xpc3QuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIApAQCAtOTgs
MTQgKzk3LDYgQEAgdm9pZCBMTEludFBsYW46OmNvbXBpbGVGdW5jdGlvbih1aW50MzJfdCBmdW5j
dGlvbkluZGV4KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgTG9ja2VyIGxvY2tlciB7
IG1fbG9jayB9OwotCi0gICAgZm9yIChhdXRvIHN1Y2Nlc3NvciA6IHBhcnNlQW5kQ29tcGlsZVJl
c3VsdC0+Z2V0KCktPnRhaWxDYWxsU3VjY2Vzc29ycygpKQotICAgICAgICBhZGRUYWlsQ2FsbEVk
Z2UobV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpICsgcGFyc2VBbmRD
b21waWxlUmVzdWx0LT5nZXQoKS0+ZnVuY3Rpb25JbmRleCgpLCBzdWNjZXNzb3IpOwotCi0gICAg
aWYgKHBhcnNlQW5kQ29tcGlsZVJlc3VsdC0+Z2V0KCktPnRhaWxDYWxsQ2xvYmJlcnNJbnN0YW5j
ZSgpKQotICAgICAgICBtX21vZHVsZUluZm9ybWF0aW9uLT5hZGRDbG9iYmVyaW5nVGFpbENhbGwo
bV9tb2R1bGVJbmZvcm1hdGlvbi0+aW1wb3J0RnVuY3Rpb25Db3VudCgpICsgcGFyc2VBbmRDb21w
aWxlUmVzdWx0LT5nZXQoKS0+ZnVuY3Rpb25JbmRleCgpKTsKLQogICAgIG1fd2FzbUludGVybmFs
RnVuY3Rpb25zW2Z1bmN0aW9uSW5kZXhdID0gV1RGTW92ZSgqcGFyc2VBbmRDb21waWxlUmVzdWx0
KTsKIH0KIApAQCAtMTYwLDggKzE1MSw2IEBAIHZvaWQgTExJbnRQbGFuOjpkaWRDb21wbGV0ZUNv
bXBpbGF0aW9uKCkKIAogICAgICAgICBtX2VudHJ5VGh1bmtzID0gRklOQUxJWkVfQ09ERShsaW5r
QnVmZmVyLCBKSVRDb21waWxhdGlvblB0clRhZywgIldhc20gTExJbnQgZW50cnkgdGh1bmtzIik7
CiAgICAgICAgIG1fY2FsbGVlcyA9IG1fY2FsbGVlc1ZlY3Rvci5kYXRhKCk7Ci0gICAgICAgIGlm
ICghbV9tb2R1bGVJbmZvcm1hdGlvbi0+Y2xvYmJlcmluZ1RhaWxDYWxscygpLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIGNvbXB1dGVUcmFuc2l0aXZlVGFpbENhbGxzKCk7CiAgICAgfQogCiAgICAg
aWYgKG1fY29tcGlsZXJNb2RlID09IENvbXBpbGVyTW9kZTo6VmFsaWRhdGlvbikKQEAgLTI0OSwz
NCArMjM4LDYgQEAgYm9vbCBMTEludFBsYW46OmRpZFJlY2VpdmVGdW5jdGlvbkRhdGEodW5zaWdu
ZWQsIGNvbnN0IEZ1bmN0aW9uRGF0YSYpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgTExJ
bnRQbGFuOjphZGRUYWlsQ2FsbEVkZ2UodWludDMyX3QgY2FsbGVySW5kZXgsIHVpbnQzMl90IGNh
bGxlZUluZGV4KQotewotICAgIGF1dG8gaXQgPSBtX3RhaWxDYWxsR3JhcGguZmluZChjYWxsZWVJ
bmRleCk7Ci0gICAgaWYgKGl0ID09IG1fdGFpbENhbGxHcmFwaC5lbmQoKSkKLSAgICAgICAgaXQg
PSBtX3RhaWxDYWxsR3JhcGguYWRkKGNhbGxlZUluZGV4LCBUYWlsQ2FsbEdyYXBoOjpNYXBwZWRU
eXBlKCkpLml0ZXJhdG9yOwotICAgIGl0LT52YWx1ZS5hZGQoY2FsbGVySW5kZXgpOwotfQotCi12
b2lkIExMSW50UGxhbjo6Y29tcHV0ZVRyYW5zaXRpdmVUYWlsQ2FsbHMoKSBjb25zdAotewotICAg
IEdyYXBoTm9kZVdvcmtsaXN0PHVpbnQzMl90LCBIYXNoU2V0PHVpbnQzMl90LCBJbnRIYXNoPHVp
bnQzMl90PiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50MzJfdD4+PiB3
b3JrbGlzdDsKLQotICAgIGZvciAoYXV0byBjbG9iYmVyaW5nVGFpbENhbGwgOiBtX21vZHVsZUlu
Zm9ybWF0aW9uLT5jbG9iYmVyaW5nVGFpbENhbGxzKCkpCi0gICAgICAgIHdvcmtsaXN0LnB1c2go
Y2xvYmJlcmluZ1RhaWxDYWxsKTsKLQotICAgIHdoaWxlICh3b3JrbGlzdC5ub3RFbXB0eSgpKSB7
Ci0gICAgICAgIGF1dG8gbm9kZSA9IHdvcmtsaXN0LnBvcCgpOwotICAgICAgICBhdXRvIGl0ID0g
bV90YWlsQ2FsbEdyYXBoLmZpbmQobm9kZSk7Ci0gICAgICAgIGlmIChpdCA9PSBtX3RhaWxDYWxs
R3JhcGguZW5kKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZm9yIChjb25zdCBh
dXRvICZzdWNjZXNzb3IgOiBpdC0+dmFsdWUpIHsKLSAgICAgICAgICAgIGlmICh3b3JrbGlzdC5z
YXcoc3VjY2Vzc29yKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1f
bW9kdWxlSW5mb3JtYXRpb24tPmFkZENsb2JiZXJpbmdUYWlsQ2FsbChzdWNjZXNzb3IpOwotICAg
ICAgICAgICAgd29ya2xpc3QucHVzaChzdWNjZXNzb3IpOwotICAgICAgICB9Ci0gICAgfQotfQog
fSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21MTEludFBsYW4uaAppbmRleCBkYTA1
ZDVkZjczYjAuLmRhMjVkNGY0OGQwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV2FzbUxMSW50UGxhbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21MTEludFBsYW4uaApAQCAtNDIsOCArNDIsNiBAQCBjbGFzcyBTdHJlYW1pbmdDb21waWxlcjsK
IAogdXNpbmcgRW1iZWRkZXJFbnRyeXBvaW50Q2FsbGVlTWFwID0gSGFzaE1hcDx1aW50MzJfdCwg
UmVmUHRyPEVtYmVkZGVyRW50cnlwb2ludENhbGxlZT4sIERlZmF1bHRIYXNoPHVpbnQzMl90Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50MzJfdD4+OwogCi11c2luZyBU
YWlsQ2FsbEdyYXBoID0gSGFzaE1hcDx1aW50MzJfdCwgSGFzaFNldDx1aW50MzJfdCwgSW50SGFz
aDx1aW50MzJfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDMyX3Q+
PiwgSW50SGFzaDx1aW50MzJfdD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dWludDMyX3Q+PjsKLQogY2xhc3MgTExJbnRQbGFuIGZpbmFsIDogcHVibGljIEVudHJ5UGxhbiB7
CiAgICAgdXNpbmcgQmFzZSA9IEVudHJ5UGxhbjsKIApAQCAtODksMTQgKzg3LDEwIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBwcmVwYXJlSW1wbCgpIGZpbmFsOwogICAgIHZvaWQgZGlkQ29tcGxldGVD
b21waWxhdGlvbigpIFdURl9SRVFVSVJFU19MT0NLKG1fbG9jaykgZmluYWw7CiAKLSAgICB2b2lk
IGFkZFRhaWxDYWxsRWRnZSh1aW50MzJfdCwgdWludDMyX3QpOwotICAgIHZvaWQgY29tcHV0ZVRy
YW5zaXRpdmVUYWlsQ2FsbHMoKSBjb25zdDsKLQogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RnVuY3Rpb25Db2RlQmxvY2tHZW5lcmF0b3I+PiBtX3dhc21JbnRlcm5hbEZ1bmN0aW9uczsKICAg
ICBjb25zdCBSZWY8TExJbnRDYWxsZWU+KiBtX2NhbGxlZXMgeyBudWxscHRyIH07CiAgICAgVmVj
dG9yPFJlZjxMTEludENhbGxlZT4+IG1fY2FsbGVlc1ZlY3RvcjsKICAgICBFbWJlZGRlckVudHJ5
cG9pbnRDYWxsZWVNYXAgbV9lbWJlZGRlckNhbGxlZXM7Ci0gICAgVGFpbENhbGxHcmFwaCBtX3Rh
aWxDYWxsR3JhcGg7CiAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmPEpJVENvbXBpbGF0aW9uUHRy
VGFnPiBtX2VudHJ5VGh1bmtzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1vZHVsZUluZm9ybWF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtTW9kdWxlSW5mb3JtYXRpb24uaAppbmRleCA5N2RiNGNmMTBlZTYuLjBlNmIxOTcw
MDA3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUlu
Zm9ybWF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZUlu
Zm9ybWF0aW9uLmgKQEAgLTExNSwxMCArMTE1LDYgQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9u
IDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAg
ICAgICAgICA6IGl0LT52YWx1ZS5nZXRCcmFuY2hIaW50KGJyYW5jaE9mZnNldCk7CiAgICAgfQog
Ci0gICAgY29uc3QgQml0VmVjdG9yJiBjbG9iYmVyaW5nVGFpbENhbGxzKCkgY29uc3QgeyByZXR1
cm4gbV9jbG9iYmVyaW5nVGFpbENhbGxzOyB9Ci0gICAgYm9vbCBjYWxsQ2FuQ2xvYmJlckluc3Rh
bmNlKHVpbnQzMl90IGluZGV4KSBjb25zdCB7IHJldHVybiBtX2Nsb2JiZXJpbmdUYWlsQ2FsbHMu
Y29udGFpbnMoaW5kZXgpOyB9Ci0gICAgdm9pZCBhZGRDbG9iYmVyaW5nVGFpbENhbGwodWludDMy
X3QgaW5kZXgpIHsgbV9jbG9iYmVyaW5nVGFpbENhbGxzLnNldChpbmRleCk7IH0KLQogICAgIFZl
Y3RvcjxJbXBvcnQ+IGltcG9ydHM7CiAgICAgVmVjdG9yPFR5cGVJbmRleD4gaW1wb3J0RnVuY3Rp
b25UeXBlSW5kaWNlczsKICAgICBWZWN0b3I8VHlwZUluZGV4PiBpbnRlcm5hbEZ1bmN0aW9uVHlw
ZUluZGljZXM7CkBAIC0xNDYsNyArMTQyLDYgQEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPE1vZHVsZUluZm9ybWF0aW9uPiB7CiAgICAgQml0
VmVjdG9yIG1fZGVjbGFyZWRGdW5jdGlvbnM7CiAgICAgQml0VmVjdG9yIG1fZGVjbGFyZWRFeGNl
cHRpb25zOwogICAgIG11dGFibGUgQml0VmVjdG9yIG1fcmVmZXJlbmNlZEZ1bmN0aW9uczsKLSAg
ICBCaXRWZWN0b3IgbV9jbG9iYmVyaW5nVGFpbENhbGxzOwogfTsKIAogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAppbmRleCBlZWMzNzNjMjYyMjku
LjRiN2EzNmIyOGJiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bVNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQ
YXRocy5jcHAKQEAgLTcxNSwzNCArNzE1LDYgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChjYWxsX3Jl
Zl9ub190bHMpCiAgICAgcmV0dXJuIGRvV2FzbUNhbGxSZWYoY2FsbEZyYW1lLCBpbnN0YW5jZSwg
cmVmZXJlbmNlLCBpbnN0cnVjdGlvbi5tX3R5cGVJbmRleCk7CiB9CiAKLVdBU01fU0xPV19QQVRI
X0RFQ0wodGFpbF9jYWxsKQotewotICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwotICAgIGF1
dG8gaW5zdHJ1Y3Rpb24gPSBwYy0+YXM8V2FzbVRhaWxDYWxsPigpOwotICAgIHJldHVybiBkb1dh
c21DYWxsKGluc3RhbmNlLCBpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpOwotfQotCi1XQVNN
X1NMT1dfUEFUSF9ERUNMKHRhaWxfY2FsbF9ub190bHMpCi17Ci0gICAgVU5VU0VEX1BBUkFNKGNh
bGxGcmFtZSk7Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFpbENhbGxOb1Rs
cz4oKTsKLSAgICByZXR1cm4gZG9XYXNtQ2FsbChpbnN0YW5jZSwgaW5zdHJ1Y3Rpb24ubV9mdW5j
dGlvbkluZGV4KTsKLX0KLQotV0FTTV9TTE9XX1BBVEhfREVDTCh0YWlsX2NhbGxfaW5kaXJlY3Qp
Ci17Ci0gICAgYXV0byBpbnN0cnVjdGlvbiA9IHBjLT5hczxXYXNtVGFpbENhbGxJbmRpcmVjdD4o
KTsKLSAgICB1bnNpZ25lZCBmdW5jdGlvbkluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0
aW9uSW5kZXgpLnVuYm94ZWRJbnQzMigpOwotICAgIHJldHVybiBkb1dhc21DYWxsSW5kaXJlY3Qo
Y2FsbEZyYW1lLCBpbnN0YW5jZSwgZnVuY3Rpb25JbmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJsZUlu
ZGV4LCBpbnN0cnVjdGlvbi5tX3NpZ25hdHVyZUluZGV4KTsKLX0KLQotV0FTTV9TTE9XX1BBVEhf
REVDTCh0YWlsX2NhbGxfaW5kaXJlY3Rfbm9fdGxzKQotewotICAgIGF1dG8gaW5zdHJ1Y3Rpb24g
PSBwYy0+YXM8V2FzbVRhaWxDYWxsSW5kaXJlY3ROb1Rscz4oKTsKLSAgICB1bnNpZ25lZCBmdW5j
dGlvbkluZGV4ID0gUkVBRChpbnN0cnVjdGlvbi5tX2Z1bmN0aW9uSW5kZXgpLnVuYm94ZWRJbnQz
MigpOwotICAgIHJldHVybiBkb1dhc21DYWxsSW5kaXJlY3QoY2FsbEZyYW1lLCBpbnN0YW5jZSwg
ZnVuY3Rpb25JbmRleCwgaW5zdHJ1Y3Rpb24ubV90YWJsZUluZGV4LCBpbnN0cnVjdGlvbi5tX3Np
Z25hdHVyZUluZGV4KTsKLX0KLQogV0FTTV9TTE9XX1BBVEhfREVDTChzZXRfZ2xvYmFsX3JlZikK
IHsKICAgICBhdXRvIGluc3RydWN0aW9uID0gcGMtPmFzPFdhc21TZXRHbG9iYWxSZWY+KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmgKaW5kZXggYTA5MzFmYTAz
ZWIyLi41ODY0OGMwYjAyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xv
d1BhdGhzLmgKQEAgLTgyLDEwICs4Miw2IEBAIFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKGNh
bGxfaW5kaXJlY3QpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9pbmRpcmVjdF9u
b190bHMpOwogV0FTTV9TTE9XX1BBVEhfSElEREVOX0RFQ0woY2FsbF9yZWYpOwogV0FTTV9TTE9X
X1BBVEhfSElEREVOX0RFQ0woY2FsbF9yZWZfbm9fdGxzKTsKLVdBU01fU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHRhaWxfY2FsbCk7Ci1XQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTCh0YWlsX2NhbGxf
bm9fdGxzKTsKLVdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHRhaWxfY2FsbF9pbmRpcmVjdCk7
Ci1XQVNNX1NMT1dfUEFUSF9ISURERU5fREVDTCh0YWlsX2NhbGxfaW5kaXJlY3Rfbm9fdGxzKTsK
IFdBU01fU0xPV19QQVRIX0hJRERFTl9ERUNMKHNldF9nbG9iYWxfcmVmKTsKIFdBU01fU0xPV19Q
QVRIX0hJRERFTl9ERUNMKHNldF9nbG9iYWxfcmVmX3BvcnRhYmxlX2JpbmRpbmcpOwogV0FTTV9T
TE9XX1BBVEhfSElEREVOX0RFQ0wobWVtb3J5X2F0b21pY193YWl0MzIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCmluZGV4IDg1YTUzOTljNzE3Mi4uZmU0NWE0
MGUzNTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1RvV2Fz
bS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNUb1dhc20uY3BwCkBA
IC00MDUsOSArNDA1LDYgQEAgc3RkOjp1bmlxdWVfcHRyPEludGVybmFsRnVuY3Rpb24+IGNyZWF0
ZUpTVG9XYXNtV3JhcHBlcihDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QKICAgICAgICAgdW5saW5r
ZWRXYXNtVG9XYXNtQ2FsbHMtPmFwcGVuZCh7IGxpbmtCdWZmZXIubG9jYXRpb25PZk5lYXJDYWxs
PFdhc21FbnRyeVB0clRhZz4oY2FsbCksIGZ1bmN0aW9uSW5kZXhTcGFjZSB9KTsKICAgICB9KTsK
IAotICAgIC8vIFJlc3RvcmUgc3RhY2sgcG9pbnRlciBhZnRlciBjYWxsCi0gICAgaml0LmFkZFB0
cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC1zdGF0aWNfY2FzdDxpbnQzMl90Pih0b3Rh
bEZyYW1lU2l6ZSkpLCBNYWNyb0Fzc2VtYmxlcjo6ZnJhbWVQb2ludGVyUmVnaXN0ZXIsIE1hY3Jv
QXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0KICAgICBKSVRfQ09NTUVOVChqaXQs
ICJtYXJzaGFsbEpTUmVzdWx0Iik7CiAgICAgbWFyc2hhbGxKU1Jlc3VsdChqaXQsIHR5cGVEZWZp
bml0aW9uLCB3YXNtRnJhbWVDb252ZW50aW9uLCBzYXZlZFJlc3VsdFJlZ2lzdGVycyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rp
b24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHAKaW5kZXggZDJlMmRjNThkOGRhLi5iYmExYmRmZGY2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC00
MjUsOSArNDI1LDYgQEAgQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBXZWJBc3NlbWJseUZ1bmN0aW9u
Ojpqc0NhbGxFbnRyeXBvaW50U2xvdygpCiAgICAgaml0LmxvYWRQdHIoZW50cnlwb2ludExvYWRM
b2NhdGlvbigpLCBzY3JhdGNoSlNSLnBheWxvYWRHUFIoKSk7CiAgICAgaml0LmNhbGwoc2NyYXRj
aEpTUi5wYXlsb2FkR1BSKCksIFdhc21FbnRyeVB0clRhZyk7CiAKLSAgICAvLyBSZXN0b3JlIHN0
YWNrIHBvaW50ZXIgYWZ0ZXIgY2FsbAotICAgIGppdC5hZGRQdHIoTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMigtc3RhdGljX2Nhc3Q8aW50MzJfdD4odG90YWxGcmFtZVNpemUpKSwgTWFjcm9B
c3NlbWJsZXI6OmZyYW1lUG9pbnRlclJlZ2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6c3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOwotCiAgICAgbWFyc2hhbGxKU1Jlc3VsdChqaXQsIHR5cGVEZWZpbml0aW9u
LCB3YXNtQ2FsbEluZm8sIHNhdmVkUmVzdWx0UmVnaXN0ZXJzKTsKIAogICAgIEFTU0VSVCghUmVn
aXN0ZXJTZXRCdWlsZGVyOjpydW50aW1lVGFnUmVnaXN0ZXJzKCkuY29udGFpbnMoR1BSSW5mbzo6
bm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSLCBJZ25vcmVWZWN0b3JzKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS93YXNtLmpzb24KaW5kZXggYzkzNGRlMmI4ZmIyLi44OGU3N2FjZWEwYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL3dhc20uanNvbgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS93YXNtLmpzb24KQEAgLTEwMiw4ICsxMDIsNiBAQAogICAgICAg
ICAiZGF0YS5kcm9wIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImV4dHRhYmxlIiwgICAidmFs
dWUiOiAgMjUyLCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBh
cmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7
Im5hbWUiOiAic2VnbWVudF9pbmRleCIsICAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInNocmlu
a3MgdGhlIHNpemUgb2YgdGhlIHNlZ21lbnQgdG8gemVybyIsICJleHRlbmRlZE9wIjogOSB9LAog
ICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAg
ICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
ImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAgICAgICJjYWxsX2luZGlyZWN0
IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2YWx1ZSI6ICAxNywgInJldHVy
biI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAicGFyYW1ldGVyIjogWyJjYWxs
Il0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjogW3sibmFtZSI6ICJ0eXBlX2lu
ZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUiOiAidGFibGVfaW5kZXgiLCJ0
eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2FsbCBhIGZ1bmN0aW9uIGluZGly
ZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAotICAgICAgICAidGFpbF9jYWxsIjog
ICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTgsICJyZXR1
cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2Fs
bCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rp
b25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRhaWwgY2FsbCBhIGZ1bmN0aW9u
IGJ5IGl0cyBpbmRleCIgfSwKLSAgICAgICAgInRhaWxfY2FsbF9pbmRpcmVjdCI6ICB7ICJjYXRl
Z29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE5LCAicmV0dXJuIjogWyJjYWxsIl0sICAg
ICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAgICAgICAg
ICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVfaW5kZXgiLCAgICAgInR5cGUi
OiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIsInR5cGUiOiAidmFydWludDMy
In1dLCJkZXNjcmlwdGlvbiI6ICJpbmRpcmVjdCB0YWlsIGNhbGwgYSBmdW5jdGlvbiB3aXRoIGFu
IGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKICAgICAgICAgImNhbGxfcmVmIjogICAgICAgICAgICB7
ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDIwLCAicmV0dXJuIjogWyJjYWxs
Il0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNhbGwiXSwgICAgICAg
ICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rpb24gcmVmZXJlbmNlIiB9LAog
ICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVnb3J5IjogIm1lbW9yeSIsICAg
ICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBbImkzMiJdLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0
ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6ICJ2YXJ1aW50MzIifSwgeyJu
YW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1dLCAiZGVzY3JpcHRpb24iOiAi
bG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2FkOF91IjogICAgICAgICB7ICJj
YXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1LCAicmV0dXJuIjogWyJpMzIiXSwg
ICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImFkZHIiXSwgICAgICAgICAg
ICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZsYWdzIiwgICAgICAgICAgInR5
cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAgICJ0eXBlIjogInZhcnVpbnQz
MiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnkiIH0sCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzIGIvVG9vbHMvU2NyaXB0cy9ydW4tanNj
LXN0cmVzcy10ZXN0cwppbmRleCA2NTQyMjU0NGM4NWIuLmE1NWRhMzBjNjI3NyAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0cworKysgYi9Ub29scy9TY3JpcHRz
L3J1bi1qc2Mtc3RyZXNzLXRlc3RzCkBAIC0xOTU1LDEwICsxOTU1LDYgQEAgZGVmIHJ1bldlYkFz
c2VtYmx5U0lNRFNwZWNUZXN0KG1vZGUpCiAgICAgcnVuV2ViQXNzZW1ibHlTcGVjVGVzdEJhc2Uo
bW9kZSwgInNpbWQtc3BlYy1oYXJuZXNzIiwgIi1lYWdlciIsICItLXVzZVdlYkFzc2VtYmx5U0lN
RD10cnVlIiwgIi0tdXNlQkJRSklUPTEiLCAiLS11c2VXYXNtTExJbnQ9MSIsICItLXdhc21MTElu
dFRpZXJzVXBUb0JCUT0xIiwgIi0tdGhyZXNob2xkRm9yT01HT3B0aW1pemVBZnRlcldhcm1VcD0w
IiwgIi0tdGhyZXNob2xkRm9yT01HT3B0aW1pemVTb29uPTAiKQogZW5kCiAKLWRlZiBydW5XZWJB
c3NlbWJseVRhaWxDYWxsU3BlY1Rlc3QobW9kZSkKLSAgICBydW5XZWJBc3NlbWJseVNwZWNUZXN0
QmFzZShtb2RlLCAidGFpbC1jYWxsLXNwZWMtaGFybmVzcyIsIG5pbCwgIi0tdXNlV2ViQXNzZW1i
bHlUYWlsQ2FsbHM9dHJ1ZSIpCi1lbmQKLQogZGVmIHJ1bldlYkFzc2VtYmx5TG93RXhlY3V0YWJs
ZU1lbW9yeSgqb3B0aW9uYWxUZXN0U3BlY2lmaWNPcHRpb25zKQogICAgIHJldHVybiBpZiAhJGpp
dFRlc3RzCiAgICAgcmV0dXJuIGlmICEkaXNXYXNtUGxhdGZvcm0KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvd2FzbS55YW1sIGIvSlNUZXN0cy93YXNtLnlhbWwKaW5kZXggMTZhOGU1ZjBiODMyLi42YmQw
ZTNkNDU4ZWMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS55YW1sCisrKyBiL0pTVGVzdHMvd2Fz
bS55YW1sCkBAIC00MTgsMTMgKzQxOCw2IEBACiAtIHBhdGg6IHdhc20vc3BlYy10ZXN0cy9zaW1k
X3N0b3JlOF9sYW5lLndhc3QuanMKICAgY21kOiBydW5XZWJBc3NlbWJseVNJTURTcGVjVGVzdCA6
bm9ybWFsCiAKLS0gcGF0aDogd2FzbS90YWlsLWNhbGwKLSAgY21kOiBpZiAkYXJjaGl0ZWN0dXJl
ID09ICdhcm0nOyBza2lwOyBlbHNlIHJ1bldlYkFzc2VtYmx5U3VpdGUoIi0tdXNlV2ViQXNzZW1i
bHlUYWlsQ2FsbHM9dHJ1ZSIpOyBlbmQKLS0gcGF0aDogd2FzbS90YWlsLWNhbGwtc3BlYy10ZXN0
cy90YWlsX2NhbGwud2FzdC5qcwotICBjbWQ6IGlmICRhcmNoaXRlY3R1cmUgPT0gJ2FybSc7IHNr
aXA7IGVsc2UgcnVuV2ViQXNzZW1ibHlUYWlsQ2FsbFNwZWNUZXN0IDpub3JtYWw7IGVuZAotLSBw
YXRoOiB3YXNtL3RhaWwtY2FsbC1zcGVjLXRlc3RzL3RhaWxfY2FsbF9pbmRpcmVjdC53YXN0Lmpz
Ci0gIGNtZDogaWYgJGFyY2hpdGVjdHVyZSA9PSAnYXJtJzsgc2tpcDsgZWxzZSBydW5XZWJBc3Nl
bWJseVRhaWxDYWxsU3BlY1Rlc3QgOm5vcm1hbDsgZW5kCi0KIC0gcGF0aDogd2FzbS9tb2R1bGVz
L3J1bi1mcm9tLXdhc20ud2FzbQogICBjbWQ6IHJ1bldlYkFzc2VtYmx5CiAKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvd2FzbS90YWlsLWNhbGwtc3BlYy1oYXJuZXNzLmpzIGIvSlNUZXN0cy93YXNtL3Rh
aWwtY2FsbC1zcGVjLWhhcm5lc3MuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5
MTdhMTBjNjVhMC4uMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvd2FzbS90YWlsLWNhbGwtc3Bl
Yy1oYXJuZXNzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotInVzZSBzdHJpY3Qi
OwotCi0vLyBUaGlzIGlzIG91ciBuaWZ0eSB3YXkgdG8gbWFrZSBtb2R1bGVzIHN5bmNocm9ub3Vz
LgotbGV0IGFzc2VydDsKLWltcG9ydCgnLi9hc3NlcnQuanMnKS50aGVuKChtb2R1bGUpID0+IHsK
LSAgICBhc3NlcnQgPSBtb2R1bGU7Ci19LCAkdm0uY3Jhc2gpOwotZHJhaW5NaWNyb3Rhc2tzKCk7
Ci0KLWZ1bmN0aW9uIHRlc3QoZnVuYywgZGVzY3JpcHRpb24pIHsKLSAgICB0cnkgewotICAgICAg
ICBmdW5jKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBwcmludCgiVW5leHBlY3RlZCBl
eGNlcHRpb246IiwgZGVzY3JpcHRpb24pOwotICAgICAgICB0aHJvdyBlOwotICAgIH0KLX0KLQot
ZnVuY3Rpb24gcHJvbWlzZV90ZXN0KGZ1bmMsIGRlc2NyaXB0aW9uKSB7Ci0gICAgYXNzZXJ0LmFz
eW5jVGVzdChmdW5jKCkpOwotfTsKLQotbGV0IGFzc2VydF9lcXVhbHMgPSBhc3NlcnQuZXE7Ci1s
ZXQgYXNzZXJ0X3RydWUgPSAoeCkgPT4gYXNzZXJ0LmVxKHgsdHJ1ZSk7Ci1sZXQgYXNzZXJ0X2Zh
bHNlID0gKHgpID0+IGFzc2VydC5lcSh4LGZhbHNlKTsKLWxldCBhc3NlcnRfdW5yZWFjaGVkID0g
KCkgPT4gewotICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIGhhdmUgYmVlbiB1bnJlYWNoYWJs
ZSIpOwotfTsKLQotbGV0IGNvbnNvbGUgPSB7Ci0gICAgbG9nKC4uLmFyZ3MpIHsKLSAgICAgICAg
cHJpbnQoLi4uYXJncyk7Ci0gICAgfQotfTsKLQotbG9hZCgiLi90YWlsLWNhbGwtc3BlYy1oYXJu
ZXNzL3N5bmNfaW5kZXguanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7Ci1sb2FkKCIuL3RhaWwtY2Fs
bC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMuanMiLCAiY2FsbGVyIHJlbGF0aXZlIik7Ci1s
b2FkKCIuL3RhaWwtY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1tb2R1bGUtYnVpbGRlci5qcyIsICJj
YWxsZXIgcmVsYXRpdmUiKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS90YWlsLWNhbGwtc3Bl
Yy1oYXJuZXNzL2FzeW5jX2luZGV4LmpzIGIvSlNUZXN0cy93YXNtL3RhaWwtY2FsbC1zcGVjLWhh
cm5lc3MvYXN5bmNfaW5kZXguanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyMDAw
MTlhYzY5OS4uMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvd2FzbS90YWlsLWNhbGwtc3BlYy1o
YXJuZXNzL2FzeW5jX2luZGV4LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDI2ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgMjAxOCBXZWJBc3NlbWJseSBDb21tdW5pdHkgR3JvdXAgcGFydGljaXBh
bnRzCi0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIu
MCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBp
biBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vu
c2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3
IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIg
dGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhP
VVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBv
ciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2Ug
Z292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vu
c2UuCi0gKi8KLQotInVzZSBzdHJpY3QiOwotCi1sZXQgdGVzdE51bSA9IChmdW5jdGlvbigpIHsK
LSAgbGV0IGNvdW50ID0gMTsKLSAgcmV0dXJuIGZ1bmN0aW9uKCkgewotICAgIHJldHVybiBgIyR7
Y291bnQrK30gYDsKLSAgfTsKLX0pKCk7Ci0KLWZ1bmN0aW9uIHVuaXF1ZVRlc3QoZnVuYywgZGVz
YykgewotICB0ZXN0KGZ1bmMsIHRlc3ROdW0oKSArIGRlc2MpOwotfQotCi0vLyBXUFQncyBhc3Nl
cnRfdGhyb3cgdXNlcyBhIGxpc3Qgb2YgcHJlZGVmaW5lZCwgaGFyZGNvZGVkIGtub3duIGVycm9y
cy4gU2luY2UKLS8vIGl0IGlzIG5vdCBhd2FyZSBvZiB0aGUgV2ViQXNzZW1ibHkgZXJyb3IgdHlw
ZXMgKHlldCksIGltcGxlbWVudCBvdXIgb3duCi0vLyB2ZXJzaW9uLgotZnVuY3Rpb24gYXNzZXJ0
VGhyb3dzKGZ1bmMsIGVycikgewotICBsZXQgY2F1Z2h0ID0gZmFsc2U7Ci0gIHRyeSB7Ci0gICAg
ZnVuYygpOwotICB9IGNhdGNoIChlKSB7Ci0gICAgYXNzZXJ0X3RydWUoCi0gICAgICBlIGluc3Rh
bmNlb2YgZXJyLAotICAgICAgYGV4cGVjdGVkICR7ZXJyLm5hbWV9LCBvYnNlcnZlZCAke2UuY29u
c3RydWN0b3IubmFtZX1gCi0gICAgKTsKLSAgICBjYXVnaHQgPSB0cnVlOwotICB9Ci0gIGFzc2Vy
dF90cnVlKGNhdWdodCwgdGVzdE51bSgpICsgImFzc2VydFRocm93cyBtdXN0IGNhdGNoIGFueSBl
cnJvci4iKTsKLX0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqIFdBU1QgSEFSTkVTUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLWNvbnN0IEVYUEVDVF9JTlZBTElEID0g
ZmFsc2U7Ci0KLS8qIERBVEEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotbGV0IGV4dGVybnJlZnMgPSB7fTsK
LWxldCBleHRlcm5zeW0gPSBTeW1ib2woImV4dGVybnJlZiIpOwotZnVuY3Rpb24gZXh0ZXJucmVm
KHMpIHsKLSAgaWYgKCEgKHMgaW4gZXh0ZXJucmVmcykpIGV4dGVybnJlZnNbc10gPSB7W2V4dGVy
bnN5bV06IHN9OwotICByZXR1cm4gZXh0ZXJucmVmc1tzXTsKLX0KLWZ1bmN0aW9uIGlzX2V4dGVy
bnJlZih4KSB7Ci0gIHJldHVybiAoeCAhPT0gbnVsbCAmJiBleHRlcm5zeW0gaW4geCkgPyAxIDog
MDsKLX0KLWZ1bmN0aW9uIGlzX2Z1bmNyZWYoeCkgewotICByZXR1cm4gdHlwZW9mIHggPT09ICJm
dW5jdGlvbiIgPyAxIDogMDsKLX0KLWZ1bmN0aW9uIGVxX2V4dGVybnJlZih4LCB5KSB7Ci0gIHJl
dHVybiB4ID09PSB5ID8gMSA6IDA7Ci19Ci1mdW5jdGlvbiBlcV9mdW5jcmVmKHgsIHkpIHsKLSAg
cmV0dXJuIHggPT09IHkgPyAxIDogMDsKLX0KLQotLy8gRGVmYXVsdCBpbXBvcnRzLgotdmFyIHJl
Z2lzdHJ5ID0ge307Ci0KLS8vIEFsbCB0ZXN0cyBydW4gYXN5bmNocm9ub3VzbHkgYW5kIHJldHVy
biB0aGVpciByZXN1bHRzIGFzIHByb21pc2VzLiBUbyBlbnN1cmUKLS8vIHRoYXQgYWxsIHRlc3Rz
IGV4ZWN1dGUgaW4gdGhlIGNvcnJlY3Qgb3JkZXIsIHdlIGNoYWluIHRoZSBwcm9taXNlcyB0b2dl
dGhlcgotLy8gc28gdGhhdCBhIHRlc3QgaXMgb25seSBleGVjdXRlZCB3aGVuIGFsbCBwcmV2aW91
cyB0ZXN0cyBoYXZlIGZpbmlzaGVkIHRoZWlyCi0vLyBleGVjdXRpb24uCi1sZXQgY2hhaW4gPSBQ
cm9taXNlLnJlc29sdmUoKTsKLQotLy8gUmVzZXRzIHRoZSByZWdpc3RyeSBiZXR3ZWVuIHR3byBk
aWZmZXJlbnQgV1BUIHRlc3RzLgotZnVuY3Rpb24gcmVpbml0aWFsaXplUmVnaXN0cnkoKSB7Ci0g
IGlmICh0eXBlb2YgV2ViQXNzZW1ibHkgPT09ICJ1bmRlZmluZWQiKSByZXR1cm47Ci0KLSAgY2hh
aW4gPSBjaGFpbi50aGVuKF8gPT4gewotICAgIGxldCBzcGVjdGVzdCA9IHsKLSAgICAgIGV4dGVy
bnJlZjogZXh0ZXJucmVmLAotICAgICAgaXNfZXh0ZXJucmVmOiBpc19leHRlcm5yZWYsCi0gICAg
ICBpc19mdW5jcmVmOiBpc19mdW5jcmVmLAotICAgICAgZXFfZXh0ZXJucmVmOiBlcV9leHRlcm5y
ZWYsCi0gICAgICBlcV9mdW5jcmVmOiBlcV9mdW5jcmVmLAotICAgICAgcHJpbnQ6IGNvbnNvbGUu
bG9nLmJpbmQoY29uc29sZSksCi0gICAgICBwcmludF9pMzI6IGNvbnNvbGUubG9nLmJpbmQoY29u
c29sZSksCi0gICAgICBwcmludF9pMzJfZjMyOiBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAot
ICAgICAgcHJpbnRfZjY0X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKLSAgICAgIHBy
aW50X2YzMjogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKLSAgICAgIHByaW50X2Y2NDogY29u
c29sZS5sb2cuYmluZChjb25zb2xlKSwKLSAgICAgIGdsb2JhbF9pMzI6IDY2NiwKLSAgICAgIGds
b2JhbF9mMzI6IDY2NiwKLSAgICAgIGdsb2JhbF9mNjQ6IDY2NiwKLSAgICAgIHRhYmxlOiBuZXcg
V2ViQXNzZW1ibHkuVGFibGUoewotICAgICAgICBpbml0aWFsOiAxMCwKLSAgICAgICAgbWF4aW11
bTogMjAsCi0gICAgICAgIGVsZW1lbnQ6ICJhbnlmdW5jIgotICAgICAgfSksCi0gICAgICBtZW1v
cnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiAxLCBtYXhpbXVtOiAyIH0pCi0g
ICAgfTsKLSAgICBsZXQgaGFuZGxlciA9IHsKLSAgICAgIGdldCh0YXJnZXQsIHByb3ApIHsKLSAg
ICAgICAgcmV0dXJuIHByb3AgaW4gdGFyZ2V0ID8gdGFyZ2V0W3Byb3BdIDoge307Ci0gICAgICB9
Ci0gICAgfTsKLSAgICByZWdpc3RyeSA9IG5ldyBQcm94eSh7IHNwZWN0ZXN0IH0sIGhhbmRsZXIp
OwotICB9KTsKLQotICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9mIGV2
ZXJ5IGdlbmVyYXRlZCBqcyB0ZXN0IGZpbGUuIEJ5Ci0gIC8vIGFkZGluZyB0aGUgY2hhaW4gYXMg
YSBwcm9taXNlX3Rlc3QgaGVyZSB3ZSBtYWtlIHN1cmUgdGhhdCB0aGUgV1BUIGhhcm5lc3MKLSAg
Ly8gd2FpdHMgZm9yIGFsbCB0ZXN0cyBpbiB0aGUgY2hhaW4gdG8gZmluaXNoLgotICBwcm9taXNl
X3Rlc3QoXyA9PiBjaGFpbiwgdGVzdE51bSgpICsgIlJlaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBp
bXBvcnRzIik7Ci19Ci0KLXJlaW5pdGlhbGl6ZVJlZ2lzdHJ5KCk7Ci0KLS8qIFdBU1QgUE9MWUZJ
TEwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8KLQotZnVuY3Rpb24gYmluYXJ5KGJ5dGVzKSB7Ci0gIGxldCBidWZmZXIgPSBuZXcg
QXJyYXlCdWZmZXIoYnl0ZXMubGVuZ3RoKTsKLSAgbGV0IHZpZXcgPSBuZXcgVWludDhBcnJheShi
dWZmZXIpOwotICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7Ci0gICAg
dmlld1tpXSA9IGJ5dGVzLmNoYXJDb2RlQXQoaSk7Ci0gIH0KLSAgcmV0dXJuIGJ1ZmZlcjsKLX0K
LQotLyoqCi0gKiBSZXR1cm5zIGEgY29tcGlsZWQgbW9kdWxlLCBvciB0aHJvd3MgaWYgdGhlcmUg
d2FzIGFuIGVycm9yIGF0IGNvbXBpbGF0aW9uLgotICovCi1mdW5jdGlvbiBtb2R1bGUoYnl0ZXMs
IHZhbGlkID0gdHJ1ZSkgewotICBjb25zdCB0ZXN0ID0gdmFsaWQKLSAgICA/ICJUZXN0IHRoYXQg
V2ViQXNzZW1ibHkgY29tcGlsYXRpb24gc3VjY2VlZHMiCi0gICAgOiAiVGVzdCB0aGF0IFdlYkFz
c2VtYmx5IGNvbXBpbGF0aW9uIGZhaWxzIjsKLSAgY29uc3QgbG9jID0gbmV3IEVycm9yKCkuc3Rh
Y2sudG9TdHJpbmcoKS5yZXBsYWNlKCJFcnJvciIsICIiKTsKLSAgbGV0IGJ1ZmZlciA9IGJpbmFy
eShieXRlcyk7Ci0gIGxldCB2YWxpZGF0ZWQgPSBXZWJBc3NlbWJseS52YWxpZGF0ZShidWZmZXIp
OwotCi0gIHVuaXF1ZVRlc3QoXyA9PiB7Ci0gICAgYXNzZXJ0X2VxdWFscyh2YWxpZCwgdmFsaWRh
dGVkKTsKLSAgfSwgdGVzdCk7Ci0KLSAgY2hhaW4gPSBjaGFpbi50aGVuKF8gPT4gV2ViQXNzZW1i
bHkuY29tcGlsZShidWZmZXIpKS50aGVuKAotICAgIG1vZHVsZSA9PiB7Ci0gICAgICB1bmlxdWVU
ZXN0KF8gPT4gewotICAgICAgICBhc3NlcnRfdHJ1ZSh2YWxpZCwgbG9jKTsKLSAgICAgIH0sIHRl
c3QpOwotICAgICAgcmV0dXJuIG1vZHVsZTsKLSAgICB9LAotICAgIGVycm9yID0+IHsKLSAgICAg
IHVuaXF1ZVRlc3QoXyA9PiB7Ci0gICAgICAgIGFzc2VydF90cnVlKAotICAgICAgICAgICF2YWxp
ZCwKLSAgICAgICAgICBgV2ViQXNzZW1ibHkuY29tcGlsZSBmYWlsZWQgdW5leHBlY3RlZGx5IHdp
dGggJHtlcnJvcn0gYXQge2xvY31gCi0gICAgICAgICk7Ci0gICAgICB9LCB0ZXN0KTsKLSAgICB9
Ci0gICk7Ci0gIHJldHVybiBjaGFpbjsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0X2ludmFsaWQoYnl0
ZXMpIHsKLSAgbW9kdWxlKGJ5dGVzLCBFWFBFQ1RfSU5WQUxJRCk7Ci19Ci0KLWNvbnN0IGFzc2Vy
dF9tYWxmb3JtZWQgPSBhc3NlcnRfaW52YWxpZDsKLQotZnVuY3Rpb24gaW5zdGFuY2UoYnl0ZXMs
IGltcG9ydHMsIHZhbGlkID0gdHJ1ZSkgewotICBjb25zdCB0ZXN0ID0gdmFsaWQKLSAgICA/ICJU
ZXN0IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFudGlhdGlvbiBzdWNjZWVkcyIKLSAgICA6ICJUZXN0
IHRoYXQgV2ViQXNzZW1ibHkgaW5zdGFudGlhdGlvbiBmYWlscyI7Ci0gIGNvbnN0IGxvYyA9IG5l
dyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7Ci0gIGNoYWlu
ID0gUHJvbWlzZS5hbGwoW2ltcG9ydHMsIGNoYWluXSkKLSAgICAudGhlbih2YWx1ZXMgPT4gewot
ICAgICAgbGV0IGltcG9ydHMgPSB2YWx1ZXNbMF0gPyB2YWx1ZXNbMF0gOiByZWdpc3RyeTsKLSAg
ICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShiaW5hcnkoYnl0ZXMpLCBpbXBvcnRz
KTsKLSAgICB9KQotICAgIC50aGVuKAotICAgICAgcGFpciA9PiB7Ci0gICAgICAgIHVuaXF1ZVRl
c3QoXyA9PiB7Ci0gICAgICAgICAgYXNzZXJ0X3RydWUodmFsaWQsIGxvYyk7Ci0gICAgICAgIH0s
IHRlc3QpOwotICAgICAgICByZXR1cm4gcGFpci5pbnN0YW5jZTsKLSAgICAgIH0sCi0gICAgICBl
cnJvciA9PiB7Ci0gICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7Ci0gICAgICAgICAgYXNzZXJ0X3Ry
dWUoCi0gICAgICAgICAgICAhdmFsaWQsCi0gICAgICAgICAgICBgdW5leHBlY3RlZCBpbnN0YW50
aWF0aW9uIGVycm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xvY31gCi0gICAgICAgICAgKTsKLSAg
ICAgICAgfSwgdGVzdCk7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgIH0KLSAgICApOwot
ICByZXR1cm4gY2hhaW47Ci19Ci0KLWZ1bmN0aW9uIGV4cG9ydHMoaW5zdGFuY2UpIHsKLSAgcmV0
dXJuIGluc3RhbmNlLnRoZW4oaW5zdCA9PiB7Ci0gICAgcmV0dXJuIHsgbW9kdWxlOiBpbnN0LmV4
cG9ydHMsIHNwZWN0ZXN0OiByZWdpc3RyeS5zcGVjdGVzdCB9OwotICB9KTsKLX0KLQotZnVuY3Rp
b24gY2FsbChpbnN0YW5jZSwgbmFtZSwgYXJncykgewotICByZXR1cm4gUHJvbWlzZS5hbGwoW2lu
c3RhbmNlLCBjaGFpbl0pLnRoZW4odmFsdWVzID0+IHsKLSAgICByZXR1cm4gdmFsdWVzWzBdLmV4
cG9ydHNbbmFtZV0oLi4uYXJncyk7Ci0gIH0pOwotfQotCi1mdW5jdGlvbiBydW4oYWN0aW9uKSB7
Ci0gIGNvbnN0IHRlc3QgPSAiUnVuIGEgV2ViQXNzZW1ibHkgdGVzdCB3aXRob3V0IHNwZWNpYWwg
YXNzZXJ0aW9ucyI7Ci0gIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCku
cmVwbGFjZSgiRXJyb3IiLCAiIik7Ci0gIGNoYWluID0gUHJvbWlzZS5hbGwoW2NoYWluLCBhY3Rp
b24oKV0pCi0gICAgLnRoZW4oCi0gICAgICBfID0+IHsKLSAgICAgICAgdW5pcXVlVGVzdChfID0+
IHt9LCB0ZXN0KTsKLSAgICAgIH0sCi0gICAgICBlcnJvciA9PiB7Ci0gICAgICAgIHVuaXF1ZVRl
c3QoXyA9PiB7Ci0gICAgICAgICAgYXNzZXJ0X3RydWUoCi0gICAgICAgICAgICBmYWxzZSwKLSAg
ICAgICAgICAgIGB1bmV4cGVjdGVkIHJ1bnRpbWUgZXJyb3IsIG9ic2VydmVkICR7ZXJyb3J9ICR7
bG9jfWAKLSAgICAgICAgICApOwotICAgICAgICB9LCAicnVuIik7Ci0gICAgICB9Ci0gICAgKQot
ICAgIC8vIENsZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0
IGV4ZWN1dGVkLgotICAgIC5jYXRjaChfID0+IHt9KTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0X3Ry
YXAoYWN0aW9uKSB7Ci0gIGNvbnN0IHRlc3QgPSAiVGVzdCB0aGF0IGEgV2ViQXNzZW1ibHkgY29k
ZSB0cmFwcyI7Ci0gIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVw
bGFjZSgiRXJyb3IiLCAiIik7Ci0gIGNoYWluID0gUHJvbWlzZS5hbGwoW2NoYWluLCBhY3Rpb24o
KV0pCi0gICAgLnRoZW4oCi0gICAgICByZXN1bHQgPT4gewotICAgICAgICB1bmlxdWVUZXN0KF8g
PT4gewotICAgICAgICAgIGFzc2VydF90cnVlKGZhbHNlLCBsb2MpOwotICAgICAgICB9LCB0ZXN0
KTsKLSAgICAgIH0sCi0gICAgICBlcnJvciA9PiB7Ci0gICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7
Ci0gICAgICAgICAgYXNzZXJ0X3RydWUoCi0gICAgICAgICAgICBlcnJvciBpbnN0YW5jZW9mIFdl
YkFzc2VtYmx5LlJ1bnRpbWVFcnJvciwKLSAgICAgICAgICAgIGBleHBlY3RlZCBydW50aW1lIGVy
cm9yLCBvYnNlcnZlZCAke2Vycm9yfSAke2xvY31gCi0gICAgICAgICAgKTsKLSAgICAgICAgfSwg
dGVzdCk7Ci0gICAgICB9Ci0gICAgKQotICAgIC8vIENsZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0
aGF0IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgotICAgIC5jYXRjaChfID0+IHt9KTsK
LX0KLQotZnVuY3Rpb24gYXNzZXJ0X3JldHVybihhY3Rpb24sIC4uLmV4cGVjdGVkKSB7Ci0gIGNv
bnN0IHRlc3QgPSAiVGVzdCB0aGF0IGEgV2ViQXNzZW1ibHkgY29kZSByZXR1cm5zIGEgc3BlY2lm
aWMgcmVzdWx0IjsKLSAgY29uc3QgbG9jID0gbmV3IEVycm9yKCkuc3RhY2sudG9TdHJpbmcoKS5y
ZXBsYWNlKCJFcnJvciIsICIiKTsKLSAgY2hhaW4gPSBQcm9taXNlLmFsbChbYWN0aW9uKCksIGNo
YWluXSkKLSAgICAudGhlbigKLSAgICAgIHZhbHVlcyA9PiB7Ci0gICAgICAgIHVuaXF1ZVRlc3Qo
XyA9PiB7Ci0gICAgICAgICAgaWYgKGFjdHVhbCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAg
ICBhY3R1YWwgPSBbXTsKLSAgICAgICAgICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGFjdHVh
bCkpIHsKLSAgICAgICAgICAgIGFjdHVhbCA9IFthY3R1YWxdOwotICAgICAgICAgIH0KLSAgICAg
ICAgICBpZiAoYWN0dWFsLmxlbmd0aCAhPT0gZXhwZWN0ZWQubGVuZ3RoKSB7Ci0gICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoZXhwZWN0ZWQubGVuZ3RoICsgIiB2YWx1ZShzKSBleHBlY3RlZCwg
Z290ICIgKyBhY3R1YWwubGVuZ3RoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZm9yIChsZXQg
aSA9IDA7IGkgPCBhY3R1YWwubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZXhw
ZWN0ZWRbaV0pIHsKLSAgICAgICAgICAgICAgY2FzZSAibmFuOmNhbm9uaWNhbCI6Ci0gICAgICAg
ICAgICAgIGNhc2UgIm5hbjphcml0aG1ldGljIjoKLSAgICAgICAgICAgICAgY2FzZSAibmFuOmFu
eSI6Ci0gICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IEpTIGNhbid0IHJlbGlhYmx5IGRpc3Rp
bmd1aXNoIGRpZmZlcmVudCBOYU4gdmFsdWVzLAotICAgICAgICAgICAgICAgIC8vIHNvIHRoZXJl
J3Mgbm8gZ29vZCB3YXkgdG8gdGVzdCB0aGF0IGl0J3MgYSBjYW5vbmljYWwgTmFOLgotICAgICAg
ICAgICAgICAgIGFzc2VydF90cnVlKE51bWJlci5pc05hTihhY3R1YWxbaV0pLCBgZXhwZWN0ZWQg
TmFOLCBvYnNlcnZlZCAke2FjdHVhbFtpXX0uYCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgICBjYXNlICJyZWYuZnVuYyI6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0X3Ry
dWUodHlwZW9mIGFjdHVhbFtpXSA9PT0gImZ1bmN0aW9uIiwgYGV4cGVjdGVkIFdhc20gZnVuY3Rp
b24sIGdvdCAke2FjdHVhbFtpXX1gKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgIGNhc2UgInJlZi5leHRlcm4iOgotICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKGFj
dHVhbFtpXSAhPT0gbnVsbCwgYGV4cGVjdGVkIFdhc20gcmVmZXJlbmNlLCBnb3QgJHthY3R1YWxb
aV19YCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSwgbG9j
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0sIHRlc3QpOwotICAgICAg
fSwKLSAgICAgIGVycm9yID0+IHsKLSAgICAgICAgdW5pcXVlVGVzdChfID0+IHsKLSAgICAgICAg
ICBhc3NlcnRfdHJ1ZSgKLSAgICAgICAgICAgIGZhbHNlLAotICAgICAgICAgICAgYHVuZXhwZWN0
ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2ZWQgJHtlcnJvcn0gJHtsb2N9YAotICAgICAgICAgICk7
Ci0gICAgICAgIH0sIHRlc3QpOwotICAgICAgfQotICAgICkKLSAgICAvLyBDbGVhciBhbGwgZXhj
ZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KLSAgICAuY2F0
Y2goXyA9PiB7fSk7Ci19Ci0KLWxldCBTdGFja092ZXJmbG93OwotdHJ5IHsKLSAgKGZ1bmN0aW9u
IGYoKSB7Ci0gICAgMSArIGYoKTsKLSAgfSkoKTsKLX0gY2F0Y2ggKGUpIHsKLSAgU3RhY2tPdmVy
ZmxvdyA9IGUuY29uc3RydWN0b3I7Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydF9leGhhdXN0aW9uKGFj
dGlvbikgewotICBjb25zdCB0ZXN0ID0gIlRlc3QgdGhhdCBhIFdlYkFzc2VtYmx5IGNvZGUgZXho
YXV0cyB0aGUgc3RhY2sgc3BhY2UiOwotICBjb25zdCBsb2MgPSBuZXcgRXJyb3IoKS5zdGFjay50
b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwgIiIpOwotICBjaGFpbiA9IFByb21pc2UuYWxsKFth
Y3Rpb24oKSwgY2hhaW5dKQotICAgIC50aGVuKAotICAgICAgXyA9PiB7Ci0gICAgICAgIHVuaXF1
ZVRlc3QoXyA9PiB7Ci0gICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7Ci0gICAgICAg
IH0sIHRlc3QpOwotICAgICAgfSwKLSAgICAgIGVycm9yID0+IHsKLSAgICAgICAgdW5pcXVlVGVz
dChfID0+IHsKLSAgICAgICAgICBhc3NlcnRfdHJ1ZSgKLSAgICAgICAgICAgIGVycm9yIGluc3Rh
bmNlb2YgU3RhY2tPdmVyZmxvdywKLSAgICAgICAgICAgIGBleHBlY3RlZCBydW50aW1lIGVycm9y
LCBvYnNlcnZlZCAke2Vycm9yfSAke2xvY31gCi0gICAgICAgICAgKTsKLSAgICAgICAgfSwgdGVz
dCk7Ci0gICAgICB9Ci0gICAgKQotICAgIC8vIENsZWFyIGFsbCBleGNlcHRpb25zLCBzbyB0aGF0
IHN1YnNlcXVlbnQgdGVzdHMgZ2V0IGV4ZWN1dGVkLgotICAgIC5jYXRjaChfID0+IHt9KTsKLX0K
LQotZnVuY3Rpb24gYXNzZXJ0X3VubGlua2FibGUoYnl0ZXMpIHsKLSAgY29uc3QgdGVzdCA9ICJU
ZXN0IHRoYXQgYSBXZWJBc3NlbWJseSBtb2R1bGUgaXMgdW5saW5rYWJsZSI7Ci0gIGNvbnN0IGxv
YyA9IG5ldyBFcnJvcigpLnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7Ci0g
IGluc3RhbmNlKGJ5dGVzLCByZWdpc3RyeSwgRVhQRUNUX0lOVkFMSUQpCi0gICAgLnRoZW4oCi0g
ICAgICByZXN1bHQgPT4gewotICAgICAgICB1bmlxdWVUZXN0KF8gPT4gewotICAgICAgICAgIGFz
c2VydF90cnVlKAotICAgICAgICAgICAgcmVzdWx0IGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuTGlu
a0Vycm9yLAotICAgICAgICAgICAgYGV4cGVjdGVkIGxpbmsgZXJyb3IsIG9ic2VydmVkICR7cmVz
dWx0fSAke2xvY31gCi0gICAgICAgICAgKTsKLSAgICAgICAgfSwgdGVzdCk7Ci0gICAgICB9LAot
ICAgICAgXyA9PiB7Ci0gICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7Ci0gICAgICAgICAgYXNzZXJ0
X3RydWUoZmFsc2UsIGxvYyk7Ci0gICAgICAgIH0sIHRlc3QpOwotICAgICAgfQotICAgICkKLSAg
ICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdldCBl
eGVjdXRlZC4KLSAgICAuY2F0Y2goXyA9PiB7fSk7Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydF91bmlu
c3RhbnRpYWJsZShieXRlcykgewotICBjb25zdCB0ZXN0ID0gIlRlc3QgdGhhdCBhIFdlYkFzc2Vt
Ymx5IG1vZHVsZSBpcyB1bmluc3RhbnRpYWJsZSI7Ci0gIGNvbnN0IGxvYyA9IG5ldyBFcnJvcigp
LnN0YWNrLnRvU3RyaW5nKCkucmVwbGFjZSgiRXJyb3IiLCAiIik7Ci0gIGluc3RhbmNlKGJ5dGVz
LCByZWdpc3RyeSwgRVhQRUNUX0lOVkFMSUQpCi0gICAgLnRoZW4oCi0gICAgICByZXN1bHQgPT4g
ewotICAgICAgICB1bmlxdWVUZXN0KF8gPT4gewotICAgICAgICAgIGFzc2VydF90cnVlKAotICAg
ICAgICAgICAgcmVzdWx0IGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yLAotICAg
ICAgICAgICAgYGV4cGVjdGVkIGxpbmsgZXJyb3IsIG9ic2VydmVkICR7cmVzdWx0fSAke2xvY31g
Ci0gICAgICAgICAgKTsKLSAgICAgICAgfSwgdGVzdCk7Ci0gICAgICB9LAotICAgICAgXyA9PiB7
Ci0gICAgICAgIHVuaXF1ZVRlc3QoXyA9PiB7Ci0gICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2Us
IGxvYyk7Ci0gICAgICAgIH0sIHRlc3QpOwotICAgICAgfQotICAgICkKLSAgICAvLyBDbGVhciBh
bGwgZXhjZXB0aW9ucywgc28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KLSAg
ICAuY2F0Y2goXyA9PiB7fSk7Ci19Ci0KLWZ1bmN0aW9uIHJlZ2lzdGVyKG5hbWUsIGluc3RhbmNl
KSB7Ci0gIGNvbnN0IHRlc3QgPQotICAgICJUZXN0IHRoYXQgdGhlIGV4cG9ydHMgb2YgYSBXZWJB
c3NlbWJseSBtb2R1bGUgY2FuIGJlIHJlZ2lzdGVyZWQiOwotICBjb25zdCBsb2MgPSBuZXcgRXJy
b3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxhY2UoIkVycm9yIiwgIiIpOwotICBsZXQgc3RhY2sg
PSBuZXcgRXJyb3IoKTsKLSAgY2hhaW4gPSBQcm9taXNlLmFsbChbaW5zdGFuY2UsIGNoYWluXSkK
LSAgICAudGhlbigKLSAgICAgIHZhbHVlcyA9PiB7Ci0gICAgICAgIHJlZ2lzdHJ5W25hbWVdID0g
dmFsdWVzWzBdLmV4cG9ydHM7Ci0gICAgICB9LAotICAgICAgXyA9PiB7Ci0gICAgICAgIHVuaXF1
ZVRlc3QoXyA9PiB7Ci0gICAgICAgICAgYXNzZXJ0X3RydWUoZmFsc2UsIGxvYyk7Ci0gICAgICAg
IH0sIHRlc3QpOwotICAgICAgfQotICAgICkKLSAgICAvLyBDbGVhciBhbGwgZXhjZXB0aW9ucywg
c28gdGhhdCBzdWJzZXF1ZW50IHRlc3RzIGdldCBleGVjdXRlZC4KLSAgICAuY2F0Y2goXyA9PiB7
fSk7Ci19Ci0KLWZ1bmN0aW9uIGdldChpbnN0YW5jZSwgbmFtZSkgewotICBjb25zdCB0ZXN0ID0g
IlRlc3QgdGhhdCBhbiBleHBvcnQgb2YgYSBXZWJBc3NlbWJseSBpbnN0YW5jZSBjYW4gYmUgYWNx
dWlyZWQiOwotICBjb25zdCBsb2MgPSBuZXcgRXJyb3IoKS5zdGFjay50b1N0cmluZygpLnJlcGxh
Y2UoIkVycm9yIiwgIiIpOwotICBjaGFpbiA9IFByb21pc2UuYWxsKFtpbnN0YW5jZSwgY2hhaW5d
KS50aGVuKAotICAgIHZhbHVlcyA9PiB7Ci0gICAgICBsZXQgdiA9IHZhbHVlc1swXS5leHBvcnRz
W25hbWVdOwotICAgICAgcmV0dXJuICh2IGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuR2xvYmFsKSA/
IHYudmFsdWUgOiB2OwotICAgIH0sCi0gICAgXyA9PiB7Ci0gICAgICB1bmlxdWVUZXN0KF8gPT4g
ewotICAgICAgICBhc3NlcnRfdHJ1ZShmYWxzZSwgbG9jKTsKLSAgICAgIH0sIHRlc3QpOwotICAg
IH0KLSAgKTsKLSAgcmV0dXJuIGNoYWluOwotfQotCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
dGFpbC1jYWxsLXNwZWMtaGFybmVzcy9zeW5jX2luZGV4LmpzIGIvSlNUZXN0cy93YXNtL3RhaWwt
Y2FsbC1zcGVjLWhhcm5lc3Mvc3luY19pbmRleC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggN2VkOWYyOTE1OTdjLi4wMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy93YXNtL3RhaWwt
Y2FsbC1zcGVjLWhhcm5lc3Mvc3luY19pbmRleC5qcworKysgL2Rldi9udWxsCkBAIC0xLDM4NyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IDIwMTcgV2ViQXNzZW1ibHkgQ29tbXVuaXR5IEdyb3Vw
IHBhcnRpY2lwYW50cwotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwg
VmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmls
ZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRh
aW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgIGh0dHA6Ly93d3cuYXBhY2hl
Lm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBs
aWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1
dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMs
Ci0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVy
IGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmlj
IGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVy
IHRoZSBMaWNlbnNlLgotKi8KLQotJ3VzZSBzdHJpY3QnOwotCi1sZXQgdGVzdE51bSA9IChmdW5j
dGlvbigpIHsKLSAgICBsZXQgY291bnQgPSAxOwotICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgcmV0dXJuIGAjJHtjb3VudCsrfSBgOwotICAgIH0KLX0pKCk7Ci0KLS8vIFdQVCdzIGFz
c2VydF90aHJvdyB1c2VzIGEgbGlzdCBvZiBwcmVkZWZpbmVkLCBoYXJkY29kZWQga25vd24gZXJy
b3JzLiBTaW5jZQotLy8gaXQgaXMgbm90IGF3YXJlIG9mIHRoZSBXZWJBc3NlbWJseSBlcnJvciB0
eXBlcyAoeWV0KSwgaW1wbGVtZW50IG91ciBvd24KLS8vIHZlcnNpb24uCi1mdW5jdGlvbiBhc3Nl
cnRUaHJvd3MoZnVuYywgZXJyKSB7Ci0gICAgbGV0IGNhdWdodCA9IGZhbHNlOwotICAgIHRyeSB7
Ci0gICAgICAgIGZ1bmMoKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgYXNzZXJ0X3RydWUo
ZSBpbnN0YW5jZW9mIGVyciwgYGV4cGVjdGVkICR7ZXJyLm5hbWV9LCBvYnNlcnZlZCAke2UuY29u
c3RydWN0b3IubmFtZX1gKTsKLSAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKLSAgICB9Ci0gICAgYXNz
ZXJ0X3RydWUoY2F1Z2h0LCB0ZXN0TnVtKCkgKyAiYXNzZXJ0VGhyb3dzIG11c3QgY2F0Y2ggYW55
IGVycm9yLiIpCi19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqIFdBU1QgSEFSTkVTUyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLy8gRm9yIGFzc2VydGlvbnMgaW50ZXJu
YWwgdG8gb3VyIHRlc3QgaGFybmVzcy4KLWZ1bmN0aW9uIF9hc3NlcnQoeCkgewotICAgIGlmICgh
eCkgewotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFzc2VydGlvbiBmYWlsdXJlOiAke3h9YCk7
Ci0gICAgfQotfQotCi0vLyBBIHNpbXBsZSBzdW0gdHlwZSB0aGF0IGNhbiBlaXRoZXIgYmUgYSB2
YWxpZCBWYWx1ZSBvciBhbiBFcnJvci4KLWZ1bmN0aW9uIFJlc3VsdCh0eXBlLCBtYXliZVZhbHVl
KSB7Ci0gICAgdGhpcy52YWx1ZSA9IG1heWJlVmFsdWU7Ci0gICAgdGhpcy50eXBlID0gdHlwZTsK
LX07Ci0KLVJlc3VsdC5WQUxVRSA9ICdWQUxVRSc7Ci1SZXN1bHQuRVJST1IgPSAnRVJST1InOwot
Ci1mdW5jdGlvbiBWYWx1ZVJlc3VsdCh2YWwpIHsgcmV0dXJuIG5ldyBSZXN1bHQoUmVzdWx0LlZB
TFVFLCB2YWwpOyB9Ci1mdW5jdGlvbiBFcnJvclJlc3VsdChlcnIpIHsgcmV0dXJuIG5ldyBSZXN1
bHQoUmVzdWx0LkVSUk9SLCBlcnIpOyB9Ci0KLVJlc3VsdC5wcm90b3R5cGUuaXNFcnJvciA9IGZ1
bmN0aW9uKCkgeyByZXR1cm4gdGhpcy50eXBlID09PSBSZXN1bHQuRVJST1I7IH0KLQotY29uc3Qg
RVhQRUNUX0lOVkFMSUQgPSBmYWxzZTsKLQotLyogREFUQSAqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1sZXQg
ZXh0ZXJucmVmcyA9IHt9OwotbGV0IGV4dGVybnN5bSA9IFN5bWJvbCgiZXh0ZXJucmVmIik7Ci1m
dW5jdGlvbiBleHRlcm5yZWYocykgewotICBpZiAoISAocyBpbiBleHRlcm5yZWZzKSkgZXh0ZXJu
cmVmc1tzXSA9IHtbZXh0ZXJuc3ltXTogc307Ci0gIHJldHVybiBleHRlcm5yZWZzW3NdOwotfQot
ZnVuY3Rpb24gaXNfZXh0ZXJucmVmKHgpIHsKLSAgcmV0dXJuICh4ICE9PSBudWxsICYmIGV4dGVy
bnN5bSBpbiB4KSA/IDEgOiAwOwotfQotZnVuY3Rpb24gaXNfZnVuY3JlZih4KSB7Ci0gIHJldHVy
biB0eXBlb2YgeCA9PT0gImZ1bmN0aW9uIiA/IDEgOiAwOwotfQotZnVuY3Rpb24gZXFfZXh0ZXJu
cmVmKHgsIHkpIHsKLSAgcmV0dXJuIHggPT09IHkgPyAxIDogMDsKLX0KLWZ1bmN0aW9uIGVxX2Z1
bmNyZWYoeCwgeSkgewotICByZXR1cm4geCA9PT0geSA/IDEgOiAwOwotfQotCi1sZXQgJCQ7Ci0K
LS8vIERlZmF1bHQgaW1wb3J0cy4KLXZhciByZWdpc3RyeSA9IHt9OwotCi0vLyBSZXNldHMgdGhl
IHJlZ2lzdHJ5IGJldHdlZW4gdHdvIGRpZmZlcmVudCBXUFQgdGVzdHMuCi1mdW5jdGlvbiByZWlu
aXRpYWxpemVSZWdpc3RyeSgpIHsKLSAgICBpZiAodHlwZW9mIFdlYkFzc2VtYmx5ID09PSAndW5k
ZWZpbmVkJykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbGV0IHNwZWN0ZXN0ID0gewotICAgICAg
ICBleHRlcm5yZWY6IGV4dGVybnJlZiwKLSAgICAgICAgaXNfZXh0ZXJucmVmOiBpc19leHRlcm5y
ZWYsCi0gICAgICAgIGlzX2Z1bmNyZWY6IGlzX2Z1bmNyZWYsCi0gICAgICAgIGVxX2V4dGVybnJl
ZjogZXFfZXh0ZXJucmVmLAotICAgICAgICBlcV9mdW5jcmVmOiBlcV9mdW5jcmVmLAotICAgICAg
ICBwcmludDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKLSAgICAgICAgcHJpbnRfaTMyOiBj
b25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLAotICAgICAgICBwcmludF9pMzJfZjMyOiBjb25zb2xl
LmxvZy5iaW5kKGNvbnNvbGUpLAotICAgICAgICBwcmludF9mNjRfZjY0OiBjb25zb2xlLmxvZy5i
aW5kKGNvbnNvbGUpLAotICAgICAgICBwcmludF9mMzI6IGNvbnNvbGUubG9nLmJpbmQoY29uc29s
ZSksCi0gICAgICAgIHByaW50X2Y2NDogY29uc29sZS5sb2cuYmluZChjb25zb2xlKSwKLSAgICAg
ICAgZ2xvYmFsX2kzMjogNjY2LAotICAgICAgICBnbG9iYWxfZjMyOiA2NjYsCi0gICAgICAgIGds
b2JhbF9mNjQ6IDY2NiwKLSAgICAgICAgdGFibGU6IG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5p
dGlhbDogMTAsIG1heGltdW06IDIwLCBlbGVtZW50OiAnYW55ZnVuYyd9KSwKLSAgICAgICAgbWVt
b3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxLCBtYXhpbXVtOiAyfSkKLSAg
ICB9OwotICAgIGxldCBoYW5kbGVyID0gewotICAgICAgICBnZXQodGFyZ2V0LCBwcm9wKSB7Ci0g
ICAgICAgIHJldHVybiAocHJvcCBpbiB0YXJnZXQpID8gIHRhcmdldFtwcm9wXSA6IHt9OwotICAg
ICAgfQotICAgIH07Ci0gICAgcmVnaXN0cnkgPSBuZXcgUHJveHkoe3NwZWN0ZXN0fSwgaGFuZGxl
cik7Ci19Ci0KLXJlaW5pdGlhbGl6ZVJlZ2lzdHJ5KCk7Ci0KLS8qIFdBU1QgUE9MWUZJTEwgKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KLQotZnVuY3Rpb24gYmluYXJ5KGJ5dGVzKSB7Ci0gICAgbGV0IGJ1ZmZlciA9IG5ldyBBcnJh
eUJ1ZmZlcihieXRlcy5sZW5ndGgpOwotICAgIGxldCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVm
ZmVyKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIHZpZXdbaV0gPSBieXRlcy5jaGFyQ29kZUF0KGkpOwotICAgIH0KLSAgICByZXR1cm4gYnVm
ZmVyOwotfQotCi0vKioKLSAqIFJldHVybnMgYSBjb21waWxlZCBtb2R1bGUsIG9yIHRocm93cyBp
ZiB0aGVyZSB3YXMgYW4gZXJyb3IgYXQgY29tcGlsYXRpb24uCi0gKi8KLWZ1bmN0aW9uIG1vZHVs
ZShieXRlcywgdmFsaWQgPSB0cnVlKSB7Ci0gICAgbGV0IGJ1ZmZlciA9IGJpbmFyeShieXRlcyk7
Ci0gICAgbGV0IHZhbGlkYXRlZDsKLQotICAgIHRyeSB7Ci0gICAgICAgIHZhbGlkYXRlZCA9IFdl
YkFzc2VtYmx5LnZhbGlkYXRlKGJ1ZmZlcik7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYFdlYkFzc2VtYmx5LnZhbGlkYXRlIHRocm93cyAke3R5cGVvZiBlfTog
JHtlfSR7ZS5zdGFja31gKTsKLSAgICB9Ci0KLSAgICBpZiAodmFsaWRhdGVkICE9PSB2YWxpZCkg
ewotICAgICAgICAvLyBUcnkgdG8gZ2V0IGEgbW9yZSBwcmVjaXNlIGVycm9yIG1lc3NhZ2UgZnJv
bSB0aGUgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLgotICAgICAgICB0cnkgewotICAgICAgICAg
ICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZmZXIpOwotICAgICAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5LkNvbXBpbGVFcnJvcikK
LSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yKGBXZWJB
c3NlbWJseS52YWxpZGF0ZSBlcnJvcjogJHtlLnRvU3RyaW5nKCl9JHtlLnN0YWNrfVxuYCk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXZWJBc3Nl
bWJseS52YWxpZGF0ZSB0aHJvd3MgJHt0eXBlb2YgZX06ICR7ZX0ke2Uuc3RhY2t9YCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBXZWJBc3NlbWJseS52YWxpZGF0ZSB3YXMg
ZXhwZWN0ZWQgdG8gZmFpbCwgYnV0IGRpZG4ndGApOwotICAgIH0KLQotICAgIGxldCBtb2R1bGU7
Ci0gICAgdHJ5IHsKLSAgICAgICAgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWZm
ZXIpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBpZiAodmFsaWQpCi0gICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoJ1dlYkFzc2VtYmx5Lk1vZHVsZSBjdG9yIHVuZXhwZWN0ZWRseSB0aHJv
d3MgJHt0eXBlb2YgZX06ICR7ZX0ke2Uuc3RhY2t9Jyk7Ci0gICAgICAgIHRocm93IGU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIG1vZHVsZTsKLX0KLQotZnVuY3Rpb24gdW5pcXVlVGVzdChmdW5jLCBk
ZXNjKSB7Ci0gICAgdGVzdChmdW5jLCB0ZXN0TnVtKCkgKyBkZXNjKTsKLX0KLQotZnVuY3Rpb24g
YXNzZXJ0X2ludmFsaWQoYnl0ZXMpIHsKLSAgICB1bmlxdWVUZXN0KCgpID0+IHsKLSAgICAgICAg
dHJ5IHsKLSAgICAgICAgICAgIG1vZHVsZShieXRlcywgLyogdmFsaWQgKi8gZmFsc2UpOwotICAg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdkaWQgbm90IGZhaWwnKTsKLSAgICAgICAgfSBjYXRj
aChlKSB7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHku
Q29tcGlsZUVycm9yLCAiZXhwZWN0ZWQgaW52YWxpZCBmYWlsdXJlOiIpOwotICAgICAgICB9Ci0g
ICAgfSwgIkEgd2FzdCBtb2R1bGUgdGhhdCBzaG91bGQgYmUgaW52YWxpZCBvciBtYWxmb3JtZWQu
Iik7Ci19Ci0KLWNvbnN0IGFzc2VydF9tYWxmb3JtZWQgPSBhc3NlcnRfaW52YWxpZDsKLQotZnVu
Y3Rpb24gaW5zdGFuY2UoYnl0ZXMsIGltcG9ydHMgPSByZWdpc3RyeSwgdmFsaWQgPSB0cnVlKSB7
Ci0gICAgaWYgKGltcG9ydHMgaW5zdGFuY2VvZiBSZXN1bHQpIHsKLSAgICAgICAgaWYgKGltcG9y
dHMuaXNFcnJvcigpKQotICAgICAgICAgICAgcmV0dXJuIGltcG9ydHM7Ci0gICAgICAgIGltcG9y
dHMgPSBpbXBvcnRzLnZhbHVlOwotICAgIH0KLQotICAgIGxldCBlcnIgPSBudWxsOwotCi0gICAg
bGV0IG0sIGk7Ci0gICAgdHJ5IHsKLSAgICAgICAgbGV0IG0gPSBtb2R1bGUoYnl0ZXMpOwotICAg
ICAgICBpID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG0sIGltcG9ydHMpOwotICAgIH0gY2F0
Y2goZSkgewotICAgICAgICBlcnIgPSBlOwotICAgIH0KLQotICAgIGlmICh2YWxpZCkgewotICAg
ICAgICB1bmlxdWVUZXN0KCgpID0+IHsKLSAgICAgICAgICAgIGxldCBpbnN0YW50aWF0ZWQgPSBl
cnIgPT09IG51bGw7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShpbnN0YW50aWF0ZWQsIGVycik7
Ci0gICAgICAgIH0sICJtb2R1bGUgc3VjY2Vzc2Z1bGx5IGluc3RhbnRpYXRlZCIpOwotICAgIH0K
LQotICAgIHJldHVybiBlcnIgIT09IG51bGwgPyBFcnJvclJlc3VsdChlcnIpIDogVmFsdWVSZXN1
bHQoaSk7Ci19Ci0KLWZ1bmN0aW9uIHJlZ2lzdGVyKG5hbWUsIGluc3RhbmNlKSB7Ci0gICAgX2Fz
c2VydChpbnN0YW5jZSBpbnN0YW5jZW9mIFJlc3VsdCk7Ci0KLSAgICBpZiAoaW5zdGFuY2UuaXNF
cnJvcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICByZWdpc3RyeVtuYW1lXSA9IGluc3RhbmNl
LnZhbHVlLmV4cG9ydHM7Ci19Ci0KLWZ1bmN0aW9uIGNhbGwoaW5zdGFuY2UsIG5hbWUsIGFyZ3Mp
IHsKLSAgICBfYXNzZXJ0KGluc3RhbmNlIGluc3RhbmNlb2YgUmVzdWx0KTsKLQotICAgIGlmIChp
bnN0YW5jZS5pc0Vycm9yKCkpCi0gICAgICAgIHJldHVybiBpbnN0YW5jZTsKLQotICAgIGxldCBl
cnIgPSBudWxsOwotICAgIGxldCByZXN1bHQ7Ci0gICAgdHJ5IHsKLSAgICAgICAgcmVzdWx0ID0g
aW5zdGFuY2UudmFsdWUuZXhwb3J0c1tuYW1lXSguLi5hcmdzKTsKLSAgICB9IGNhdGNoKGUpIHsK
LSAgICAgICAgZXJyID0gZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZXJyICE9PSBudWxsID8gRXJy
b3JSZXN1bHQoZXJyKSA6IFZhbHVlUmVzdWx0KHJlc3VsdCk7Ci19OwotCi1mdW5jdGlvbiBnZXQo
aW5zdGFuY2UsIG5hbWUpIHsKLSAgICBfYXNzZXJ0KGluc3RhbmNlIGluc3RhbmNlb2YgUmVzdWx0
KTsKLQotICAgIGlmIChpbnN0YW5jZS5pc0Vycm9yKCkpCi0gICAgICAgIHJldHVybiBpbnN0YW5j
ZTsKLQotICAgIGxldCB2ID0gaW5zdGFuY2UudmFsdWUuZXhwb3J0c1tuYW1lXTsKLSAgICByZXR1
cm4gVmFsdWVSZXN1bHQoKHYgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5HbG9iYWwpID8gdi52YWx1
ZSA6IHYpOwotfQotCi1mdW5jdGlvbiBleHBvcnRzKGluc3RhbmNlKSB7Ci0gICAgX2Fzc2VydChp
bnN0YW5jZSBpbnN0YW5jZW9mIFJlc3VsdCk7Ci0KLSAgICBpZiAoaW5zdGFuY2UuaXNFcnJvcigp
KQotICAgICAgICByZXR1cm4gaW5zdGFuY2U7Ci0KLSAgICByZXR1cm4gVmFsdWVSZXN1bHQoeyBt
b2R1bGU6IGluc3RhbmNlLnZhbHVlLmV4cG9ydHMsIHNwZWN0ZXN0OiByZWdpc3RyeS5zcGVjdGVz
dCB9KTsKLX0KLQotZnVuY3Rpb24gcnVuKGFjdGlvbikgewotICAgIGxldCByZXN1bHQgPSBhY3Rp
b24oKTsKLQotICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KTsKLQotICAgIHVu
aXF1ZVRlc3QoKCkgPT4gewotICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkKLSAgICAgICAg
ICAgIHRocm93IHJlc3VsdC52YWx1ZTsKLSAgICB9LCAiQSB3YXN0IHRlc3QgdGhhdCBydW5zIHdp
dGhvdXQgYW55IHNwZWNpYWwgYXNzZXJ0aW9uLiIpOwotfQotCi1mdW5jdGlvbiBhc3NlcnRfdW5s
aW5rYWJsZShieXRlcykgewotICAgIGxldCByZXN1bHQgPSBpbnN0YW5jZShieXRlcywgcmVnaXN0
cnksIEVYUEVDVF9JTlZBTElEKTsKLQotICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVz
dWx0KTsKLQotICAgIHVuaXF1ZVRlc3QoKCkgPT4gewotICAgICAgICBhc3NlcnRfdHJ1ZShyZXN1
bHQuaXNFcnJvcigpLCAnZXhwZWN0ZWQgZXJyb3IgcmVzdWx0Jyk7Ci0gICAgICAgIGlmIChyZXN1
bHQuaXNFcnJvcigpKSB7Ci0gICAgICAgICAgICBsZXQgZSA9IHJlc3VsdC52YWx1ZTsKLSAgICAg
ICAgICAgIGFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBl
eHBlY3RlZCBsaW5rIGVycm9yLCBvYnNlcnZlZCAke2V9OmApOwotICAgICAgICB9Ci0gICAgfSwg
IkEgd2FzdCBtb2R1bGUgdGhhdCBpcyB1bmxpbmthYmxlLiIpOwotfQotCi1mdW5jdGlvbiBhc3Nl
cnRfdW5pbnN0YW50aWFibGUoYnl0ZXMpIHsKLSAgICBsZXQgcmVzdWx0ID0gaW5zdGFuY2UoYnl0
ZXMsIHJlZ2lzdHJ5LCBFWFBFQ1RfSU5WQUxJRCk7Ci0KLSAgICBfYXNzZXJ0KHJlc3VsdCBpbnN0
YW5jZW9mIFJlc3VsdCk7Ci0KLSAgICB1bmlxdWVUZXN0KCgpID0+IHsKLSAgICAgICAgYXNzZXJ0
X3RydWUocmVzdWx0LmlzRXJyb3IoKSwgJ2V4cGVjdGVkIGVycm9yIHJlc3VsdCcpOwotICAgICAg
ICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewotICAgICAgICAgICAgbGV0IGUgPSByZXN1bHQudmFs
dWU7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgV2ViQXNzZW1ibHkuUnVu
dGltZUVycm9yLCBgZXhwZWN0ZWQgcnVudGltZSBlcnJvciwgb2JzZXJ2ZWQgJHtlfTpgKTsKLSAg
ICAgICAgfQotICAgIH0sICJBIHdhc3QgbW9kdWxlIHRoYXQgaXMgdW5pbnN0YW50aWFibGUuIik7
Ci19Ci0KLWZ1bmN0aW9uIGFzc2VydF90cmFwKGFjdGlvbikgewotICAgIGxldCByZXN1bHQgPSBh
Y3Rpb24oKTsKLQotICAgIF9hc3NlcnQocmVzdWx0IGluc3RhbmNlb2YgUmVzdWx0KTsKLQotICAg
IHVuaXF1ZVRlc3QoKCkgPT4gewotICAgICAgICBhc3NlcnRfdHJ1ZShyZXN1bHQuaXNFcnJvcigp
LCAnZXhwZWN0ZWQgZXJyb3IgcmVzdWx0Jyk7Ci0gICAgICAgIGlmIChyZXN1bHQuaXNFcnJvcigp
KSB7Ci0gICAgICAgICAgICBsZXQgZSA9IHJlc3VsdC52YWx1ZTsKLSAgICAgICAgICAgIGFzc2Vy
dF90cnVlKGUgaW5zdGFuY2VvZiBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IsIGBleHBlY3RlZCBy
dW50aW1lIGVycm9yLCBvYnNlcnZlZCAke2V9OmApOwotICAgICAgICB9Ci0gICAgfSwgIkEgd2Fz
dCBtb2R1bGUgdGhhdCBtdXN0IHRyYXAgYXQgcnVudGltZS4iKTsKLX0KLQotbGV0IFN0YWNrT3Zl
cmZsb3c7Ci10cnkgeyAoZnVuY3Rpb24gZigpIHsgMSArIGYoKSB9KSgpIH0gY2F0Y2ggKGUpIHsg
U3RhY2tPdmVyZmxvdyA9IGUuY29uc3RydWN0b3IgfQotCi1mdW5jdGlvbiBhc3NlcnRfZXhoYXVz
dGlvbihhY3Rpb24pIHsKLSAgICBsZXQgcmVzdWx0ID0gYWN0aW9uKCk7Ci0KLSAgICBfYXNzZXJ0
KHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCk7Ci0KLSAgICB1bmlxdWVUZXN0KCgpID0+IHsKLSAg
ICAgICAgYXNzZXJ0X3RydWUocmVzdWx0LmlzRXJyb3IoKSwgJ2V4cGVjdGVkIGVycm9yIHJlc3Vs
dCcpOwotICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkgewotICAgICAgICAgICAgbGV0IGUg
PSByZXN1bHQudmFsdWU7Ci0gICAgICAgICAgICBhc3NlcnRfdHJ1ZShlIGluc3RhbmNlb2YgU3Rh
Y2tPdmVyZmxvdywgYGV4cGVjdGVkIHN0YWNrIG92ZXJmbG93IGVycm9yLCBvYnNlcnZlZCAke2V9
OmApOwotICAgICAgICB9Ci0gICAgfSwgIkEgd2FzdCBtb2R1bGUgdGhhdCBtdXN0IGV4aGF1c3Qg
dGhlIHN0YWNrIHNwYWNlLiIpOwotfQotCi1mdW5jdGlvbiBhc3NlcnRfcmV0dXJuKGFjdGlvbiwg
Li4uZXhwZWN0ZWQpIHsKLSAgICBsZXQgcmVzdWx0ID0gYWN0aW9uKCk7Ci0gICAgX2Fzc2VydChy
ZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpOwotCi0gICAgdW5pcXVlVGVzdCgoKSA9PiB7Ci0gICAg
ICAgIGFzc2VydF90cnVlKCFyZXN1bHQuaXNFcnJvcigpLCBgZXhwZWN0ZWQgc3VjY2VzcyByZXN1
bHQsIGdvdDogJHtyZXN1bHQudmFsdWV9LmApOwotICAgICAgICBsZXQgYWN0dWFsID0gcmVzdWx0
LnZhbHVlOwotICAgICAgICBpZiAoYWN0dWFsID09PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAg
IGFjdHVhbCA9IFtdOwotICAgICAgICB9IGVsc2UgaWYgKCFBcnJheS5pc0FycmF5KGFjdHVhbCkp
IHsKLSAgICAgICAgICAgIGFjdHVhbCA9IFthY3R1YWxdOwotICAgICAgICB9Ci0gICAgICAgIGlm
IChhY3R1YWwubGVuZ3RoICE9PSBleHBlY3RlZC5sZW5ndGgpIHsKLSAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihleHBlY3RlZC5sZW5ndGggKyAiIHZhbHVlKHMpIGV4cGVjdGVkLCBnb3QgIiAr
IGFjdHVhbC5sZW5ndGgpOwotICAgICAgICB9Ci0gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwg
YWN0dWFsLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoZXhwZWN0ZWRbaV0gaW5zdGFu
Y2VvZiBSZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWRbaV0uaXNFcnJvcigp
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRb
aV0gPSBleHBlY3RlZFtpXS52YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN3aXRj
aCAoZXhwZWN0ZWRbaV0pIHsKLSAgICAgICAgICAgICAgICBjYXNlICJuYW46Y2Fub25pY2FsIjoK
LSAgICAgICAgICAgICAgICBjYXNlICJuYW46YXJpdGhtZXRpYyI6Ci0gICAgICAgICAgICAgICAg
Y2FzZSAibmFuOmFueSI6Ci0gICAgICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBKUyBjYW4n
dCByZWxpYWJseSBkaXN0aW5ndWlzaCBkaWZmZXJlbnQgTmFOIHZhbHVlcywKLSAgICAgICAgICAg
ICAgICAgICAgLy8gc28gdGhlcmUncyBubyBnb29kIHdheSB0byB0ZXN0IHRoYXQgaXQncyBhIGNh
bm9uaWNhbCBOYU4uCi0gICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKE51bWJlci5pc05h
TihhY3R1YWxbaV0pLCBgZXhwZWN0ZWQgTmFOLCBvYnNlcnZlZCAke2FjdHVhbFtpXX0uYCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBjYXNlICJyZWYuZnVu
YyI6Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydF90cnVlKHR5cGVvZiBhY3R1YWxbaV0gPT09
ICJmdW5jdGlvbiIsIGBleHBlY3RlZCBXYXNtIGZ1bmN0aW9uLCBnb3QgJHthY3R1YWxbaV19YCk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBjYXNlICJyZWYu
ZXh0ZXJuIjoKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X3RydWUoYWN0dWFsW2ldICE9PSBu
dWxsLCBgZXhwZWN0ZWQgV2FzbSByZWZlcmVuY2UsIGdvdCAke2FjdHVhbFtpXX1gKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9LCAiQSB3YXN0IG1vZHVsZSB0aGF0IG11c3QgcmV0
dXJuIGEgcGFydGljdWxhciB2YWx1ZS4iKTsKLX0KLQotZnVuY3Rpb24gYXNzZXJ0X3JldHVybl9u
YW4oYWN0aW9uKSB7Ci0gICAgbGV0IHJlc3VsdCA9IGFjdGlvbigpOwotCi0gICAgX2Fzc2VydChy
ZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpOwotCi0gICAgdW5pcXVlVGVzdCgoKSA9PiB7Ci0gICAg
ICAgIGFzc2VydF90cnVlKCFyZXN1bHQuaXNFcnJvcigpLCAnZXhwZWN0ZWQgc3VjY2VzcyByZXN1
bHQnKTsKLSAgICAgICAgaWYgKCFyZXN1bHQuaXNFcnJvcigpKSB7Ci0gICAgICAgICAgICBhc3Nl
cnRfdHJ1ZShOdW1iZXIuaXNOYU4ocmVzdWx0LnZhbHVlKSwgYGV4cGVjdGVkIE5hTiwgb2JzZXJ2
ZWQgJHtyZXN1bHQudmFsdWV9LmApOwotICAgICAgICB9OwotICAgIH0sICJBIHdhc3QgbW9kdWxl
IHRoYXQgbXVzdCByZXR1cm4gTmFOLiIpOwotfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3Rh
aWwtY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMuanMgYi9KU1Rlc3RzL3dhc20vdGFp
bC1jYWxsLXNwZWMtaGFybmVzcy93YXNtLWNvbnN0YW50cy5qcwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDQzOWEyNWQ3ZGVhLi4wMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy93YXNt
L3RhaWwtY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1jb25zdGFudHMuanMKKysrIC9kZXYvbnVsbApA
QCAtMSwzODQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTUgdGhlIFY4IHByb2plY3QgYXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0KLS8vIEZsYWdzOiAtLWV4cG9zZS13YXNtCi0KLWxldCBob3N0cmVm
cyA9IHt9OwotbGV0IGhvc3RzeW0gPSBTeW1ib2woImhvc3RyZWYiKTsKLWZ1bmN0aW9uIGhvc3Ry
ZWYocykgewotICBpZiAoISAocyBpbiBob3N0cmVmcykpIGhvc3RyZWZzW3NdID0ge1tob3N0c3lt
XTogc307Ci0gIHJldHVybiBob3N0cmVmc1tzXTsKLX0KLQotZnVuY3Rpb24gYnl0ZXMoKSB7Ci0g
IHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYXJndW1lbnRzLmxlbmd0aCk7Ci0gIHZhciB2
aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1
bWVudHMubGVuZ3RoOyBpKyspIHsKLSAgICB2YXIgdmFsID0gYXJndW1lbnRzW2ldOwotICAgIGlm
ICgodHlwZW9mIHZhbCkgPT0gInN0cmluZyIpIHZhbCA9IHZhbC5jaGFyQ29kZUF0KDApOwotICAg
IHZpZXdbaV0gPSB2YWwgfCAwOwotICB9Ci0gIHJldHVybiBidWZmZXI7Ci19Ci0KLS8vIEhlYWRl
ciBkZWNsYXJhdGlvbiBjb25zdGFudHMKLXZhciBrV2FzbUgwID0gMDsKLXZhciBrV2FzbUgxID0g
MHg2MTsKLXZhciBrV2FzbUgyID0gMHg3MzsKLXZhciBrV2FzbUgzID0gMHg2ZDsKLQotdmFyIGtX
YXNtVjAgPSAweDE7Ci12YXIga1dhc21WMSA9IDA7Ci12YXIga1dhc21WMiA9IDA7Ci12YXIga1dh
c21WMyA9IDA7Ci0KLXZhciBrSGVhZGVyU2l6ZSA9IDg7Ci12YXIga1BhZ2VTaXplID0gNjU1MzY7
Ci0KLWZ1bmN0aW9uIGJ5dGVzV2l0aEhlYWRlcigpIHsKLSAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJh
eUJ1ZmZlcihrSGVhZGVyU2l6ZSArIGFyZ3VtZW50cy5sZW5ndGgpOwotICB2YXIgdmlldyA9IG5l
dyBVaW50OEFycmF5KGJ1ZmZlcik7Ci0gIHZpZXdbMF0gPSBrV2FzbUgwOwotICB2aWV3WzFdID0g
a1dhc21IMTsKLSAgdmlld1syXSA9IGtXYXNtSDI7Ci0gIHZpZXdbM10gPSBrV2FzbUgzOwotICB2
aWV3WzRdID0ga1dhc21WMDsKLSAgdmlld1s1XSA9IGtXYXNtVjE7Ci0gIHZpZXdbNl0gPSBrV2Fz
bVYyOwotICB2aWV3WzddID0ga1dhc21WMzsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyBpKyspIHsKLSAgICB2YXIgdmFsID0gYXJndW1lbnRzW2ldOwotICAgIGlmICgo
dHlwZW9mIHZhbCkgPT0gInN0cmluZyIpIHZhbCA9IHZhbC5jaGFyQ29kZUF0KDApOwotICAgIHZp
ZXdba0hlYWRlclNpemUgKyBpXSA9IHZhbCB8IDA7Ci0gIH0KLSAgcmV0dXJuIGJ1ZmZlcjsKLX0K
LQotbGV0IGtEZWNsTm9Mb2NhbHMgPSAwOwotCi0vLyBTZWN0aW9uIGRlY2xhcmF0aW9uIGNvbnN0
YW50cwotbGV0IGtVbmtub3duU2VjdGlvbkNvZGUgPSAwOwotbGV0IGtUeXBlU2VjdGlvbkNvZGUg
PSAxOyAgICAgIC8vIEZ1bmN0aW9uIHNpZ25hdHVyZSBkZWNsYXJhdGlvbnMKLWxldCBrSW1wb3J0
U2VjdGlvbkNvZGUgPSAyOyAgICAvLyBJbXBvcnQgZGVjbGFyYXRpb25zCi1sZXQga0Z1bmN0aW9u
U2VjdGlvbkNvZGUgPSAzOyAgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb25zCi1sZXQga1RhYmxlU2Vj
dGlvbkNvZGUgPSA0OyAgICAgLy8gSW5kaXJlY3QgZnVuY3Rpb24gdGFibGUgYW5kIG90aGVyIHRh
YmxlcwotbGV0IGtNZW1vcnlTZWN0aW9uQ29kZSA9IDU7ICAgIC8vIE1lbW9yeSBhdHRyaWJ1dGVz
Ci1sZXQga0dsb2JhbFNlY3Rpb25Db2RlID0gNjsgICAgLy8gR2xvYmFsIGRlY2xhcmF0aW9ucwot
bGV0IGtFeHBvcnRTZWN0aW9uQ29kZSA9IDc7ICAgIC8vIEV4cG9ydHMKLWxldCBrU3RhcnRTZWN0
aW9uQ29kZSA9IDg7ICAgICAvLyBTdGFydCBmdW5jdGlvbiBkZWNsYXJhdGlvbgotbGV0IGtFbGVt
ZW50U2VjdGlvbkNvZGUgPSA5OyAgLy8gRWxlbWVudHMgc2VjdGlvbgotbGV0IGtDb2RlU2VjdGlv
bkNvZGUgPSAxMDsgICAgICAvLyBGdW5jdGlvbiBjb2RlCi1sZXQga0RhdGFTZWN0aW9uQ29kZSA9
IDExOyAgICAgLy8gRGF0YSBzZWdtZW50cwotbGV0IGtOYW1lU2VjdGlvbkNvZGUgPSAxMjsgICAg
IC8vIE5hbWUgc2VjdGlvbiAoZW5jb2RlZCBhcyBzdHJpbmcpCi0KLS8vIE5hbWUgc2VjdGlvbiB0
eXBlcwotbGV0IGtNb2R1bGVOYW1lQ29kZSA9IDA7Ci1sZXQga0Z1bmN0aW9uTmFtZXNDb2RlID0g
MTsKLWxldCBrTG9jYWxOYW1lc0NvZGUgPSAyOwotCi1sZXQga1dhc21GdW5jdGlvblR5cGVGb3Jt
ID0gMHg2MDsKLWxldCBrV2FzbUZ1bmNSZWZ0aW9uVHlwZUZvcm0gPSAweDcwOwotCi1sZXQga1Jl
c2l6YWJsZU1heGltdW1GbGFnID0gMTsKLQotLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24gZmxhZ3MK
LWxldCBrRGVjbEZ1bmN0aW9uTmFtZSAgID0gMHgwMTsKLWxldCBrRGVjbEZ1bmN0aW9uSW1wb3J0
ID0gMHgwMjsKLWxldCBrRGVjbEZ1bmN0aW9uTG9jYWxzID0gMHgwNDsKLWxldCBrRGVjbEZ1bmN0
aW9uRXhwb3J0ID0gMHgwODsKLQotLy8gTG9jYWwgdHlwZXMKLWxldCBrV2FzbVN0bXQgPSAweDQw
OwotbGV0IGtXYXNtSTMyID0gMHg3ZjsKLWxldCBrV2FzbUk2NCA9IDB4N2U7Ci1sZXQga1dhc21G
MzIgPSAweDdkOwotbGV0IGtXYXNtRjY0ID0gMHg3YzsKLWxldCBrV2FzbVMxMjggPSAweDdiOwot
Ci1sZXQga0V4dGVybmFsRnVuY3Rpb24gPSAwOwotbGV0IGtFeHRlcm5hbFRhYmxlID0gMTsKLWxl
dCBrRXh0ZXJuYWxNZW1vcnkgPSAyOwotbGV0IGtFeHRlcm5hbEdsb2JhbCA9IDM7Ci0KLWxldCBr
VGFibGVaZXJvID0gMDsKLWxldCBrTWVtb3J5WmVybyA9IDA7Ci0KLS8vIFVzZWZ1bCBzaWduYXR1
cmVzCi1sZXQga1NpZ19pX2kgPSBtYWtlU2lnKFtrV2FzbUkzMl0sIFtrV2FzbUkzMl0pOwotbGV0
IGtTaWdfbF9sID0gbWFrZVNpZyhba1dhc21JNjRdLCBba1dhc21JNjRdKTsKLWxldCBrU2lnX2lf
bCA9IG1ha2VTaWcoW2tXYXNtSTY0XSwgW2tXYXNtSTMyXSk7Ci1sZXQga1NpZ19pX2lpID0gbWFr
ZVNpZyhba1dhc21JMzIsIGtXYXNtSTMyXSwgW2tXYXNtSTMyXSk7Ci1sZXQga1NpZ19pX2lpaSA9
IG1ha2VTaWcoW2tXYXNtSTMyLCBrV2FzbUkzMiwga1dhc21JMzJdLCBba1dhc21JMzJdKTsKLWxl
dCBrU2lnX2RfZGQgPSBtYWtlU2lnKFtrV2FzbUY2NCwga1dhc21GNjRdLCBba1dhc21GNjRdKTsK
LWxldCBrU2lnX2xfbGwgPSBtYWtlU2lnKFtrV2FzbUk2NCwga1dhc21JNjRdLCBba1dhc21JNjRd
KTsKLWxldCBrU2lnX2lfZGQgPSBtYWtlU2lnKFtrV2FzbUY2NCwga1dhc21GNjRdLCBba1dhc21J
MzJdKTsKLWxldCBrU2lnX3ZfdiA9IG1ha2VTaWcoW10sIFtdKTsKLWxldCBrU2lnX2lfdiA9IG1h
a2VTaWcoW10sIFtrV2FzbUkzMl0pOwotbGV0IGtTaWdfbF92ID0gbWFrZVNpZyhbXSwgW2tXYXNt
STY0XSk7Ci1sZXQga1NpZ19mX3YgPSBtYWtlU2lnKFtdLCBba1dhc21GNjRdKTsKLWxldCBrU2ln
X2RfdiA9IG1ha2VTaWcoW10sIFtrV2FzbUY2NF0pOwotbGV0IGtTaWdfdl9pID0gbWFrZVNpZyhb
a1dhc21JMzJdLCBbXSk7Ci1sZXQga1NpZ192X2lpID0gbWFrZVNpZyhba1dhc21JMzIsIGtXYXNt
STMyXSwgW10pOwotbGV0IGtTaWdfdl9paWkgPSBtYWtlU2lnKFtrV2FzbUkzMiwga1dhc21JMzIs
IGtXYXNtSTMyXSwgW10pOwotbGV0IGtTaWdfdl9sID0gbWFrZVNpZyhba1dhc21JNjRdLCBbXSk7
Ci1sZXQga1NpZ192X2QgPSBtYWtlU2lnKFtrV2FzbUY2NF0sIFtdKTsKLWxldCBrU2lnX3ZfZGQg
PSBtYWtlU2lnKFtrV2FzbUY2NCwga1dhc21GNjRdLCBbXSk7Ci1sZXQga1NpZ192X2RkaSA9IG1h
a2VTaWcoW2tXYXNtRjY0LCBrV2FzbUY2NCwga1dhc21JMzJdLCBbXSk7Ci1sZXQga1NpZ19zX3Yg
PSBtYWtlU2lnKFtdLCBba1dhc21TMTI4XSk7Ci0KLWZ1bmN0aW9uIG1ha2VTaWcocGFyYW1zLCBy
ZXN1bHRzKSB7Ci0gIHJldHVybiB7cGFyYW1zOiBwYXJhbXMsIHJlc3VsdHM6IHJlc3VsdHN9Owot
fQotCi1mdW5jdGlvbiBtYWtlU2lnX3ZfeCh4KSB7Ci0gIHJldHVybiBtYWtlU2lnKFt4XSwgW10p
OwotfQotCi1mdW5jdGlvbiBtYWtlU2lnX3ZfeHgoeCkgewotICByZXR1cm4gbWFrZVNpZyhbeCwg
eF0sIFtdKTsKLX0KLQotZnVuY3Rpb24gbWFrZVNpZ19yX3YocikgewotICByZXR1cm4gbWFrZVNp
ZyhbXSwgW3JdKTsKLX0KLQotZnVuY3Rpb24gbWFrZVNpZ19yX3gociwgeCkgewotICByZXR1cm4g
bWFrZVNpZyhbeF0sIFtyXSk7Ci19Ci0KLWZ1bmN0aW9uIG1ha2VTaWdfcl94eChyLCB4KSB7Ci0g
IHJldHVybiBtYWtlU2lnKFt4LCB4XSwgW3JdKTsKLX0KLQotLy8gT3Bjb2RlcwotbGV0IGtFeHBy
VW5yZWFjaGFibGUgPSAweDAwOwotbGV0IGtFeHByTm9wID0gMHgwMTsKLWxldCBrRXhwckJsb2Nr
ID0gMHgwMjsKLWxldCBrRXhwckxvb3AgPSAweDAzOwotbGV0IGtFeHBySWYgPSAweDA0OwotbGV0
IGtFeHByRWxzZSA9IDB4MDU7Ci1sZXQga0V4cHJUcnkgPSAweDA2OwotbGV0IGtFeHByQ2F0Y2gg
PSAweDA3OwotbGV0IGtFeHByVGhyb3cgPSAweDA4OwotbGV0IGtFeHByRW5kID0gMHgwYjsKLWxl
dCBrRXhwckJyID0gMHgwYzsKLWxldCBrRXhwckJySWYgPSAweDBkOwotbGV0IGtFeHByQnJUYWJs
ZSA9IDB4MGU7Ci1sZXQga0V4cHJSZXR1cm4gPSAweDBmOwotbGV0IGtFeHByQ2FsbEZ1bmN0aW9u
ID0gMHgxMDsKLWxldCBrRXhwckNhbGxJbmRpcmVjdCA9IDB4MTE7Ci1sZXQga0V4cHJEcm9wID0g
MHgxYTsKLWxldCBrRXhwclNlbGVjdCA9IDB4MWI7Ci1sZXQga0V4cHJHZXRMb2NhbCA9IDB4MjA7
Ci1sZXQga0V4cHJTZXRMb2NhbCA9IDB4MjE7Ci1sZXQga0V4cHJUZWVMb2NhbCA9IDB4MjI7Ci1s
ZXQga0V4cHJHZXRHbG9iYWwgPSAweDIzOwotbGV0IGtFeHByU2V0R2xvYmFsID0gMHgyNDsKLWxl
dCBrRXhwckkzMkNvbnN0ID0gMHg0MTsKLWxldCBrRXhwckk2NENvbnN0ID0gMHg0MjsKLWxldCBr
RXhwckYzMkNvbnN0ID0gMHg0MzsKLWxldCBrRXhwckY2NENvbnN0ID0gMHg0NDsKLWxldCBrRXhw
ckkzMkxvYWRNZW0gPSAweDI4OwotbGV0IGtFeHBySTY0TG9hZE1lbSA9IDB4Mjk7Ci1sZXQga0V4
cHJGMzJMb2FkTWVtID0gMHgyYTsKLWxldCBrRXhwckY2NExvYWRNZW0gPSAweDJiOwotbGV0IGtF
eHBySTMyTG9hZE1lbThTID0gMHgyYzsKLWxldCBrRXhwckkzMkxvYWRNZW04VSA9IDB4MmQ7Ci1s
ZXQga0V4cHJJMzJMb2FkTWVtMTZTID0gMHgyZTsKLWxldCBrRXhwckkzMkxvYWRNZW0xNlUgPSAw
eDJmOwotbGV0IGtFeHBySTY0TG9hZE1lbThTID0gMHgzMDsKLWxldCBrRXhwckk2NExvYWRNZW04
VSA9IDB4MzE7Ci1sZXQga0V4cHJJNjRMb2FkTWVtMTZTID0gMHgzMjsKLWxldCBrRXhwckk2NExv
YWRNZW0xNlUgPSAweDMzOwotbGV0IGtFeHBySTY0TG9hZE1lbTMyUyA9IDB4MzQ7Ci1sZXQga0V4
cHJJNjRMb2FkTWVtMzJVID0gMHgzNTsKLWxldCBrRXhwckkzMlN0b3JlTWVtID0gMHgzNjsKLWxl
dCBrRXhwckk2NFN0b3JlTWVtID0gMHgzNzsKLWxldCBrRXhwckYzMlN0b3JlTWVtID0gMHgzODsK
LWxldCBrRXhwckY2NFN0b3JlTWVtID0gMHgzOTsKLWxldCBrRXhwckkzMlN0b3JlTWVtOCA9IDB4
M2E7Ci1sZXQga0V4cHJJMzJTdG9yZU1lbTE2ID0gMHgzYjsKLWxldCBrRXhwckk2NFN0b3JlTWVt
OCA9IDB4M2M7Ci1sZXQga0V4cHJJNjRTdG9yZU1lbTE2ID0gMHgzZDsKLWxldCBrRXhwckk2NFN0
b3JlTWVtMzIgPSAweDNlOwotbGV0IGtFeHByTWVtb3J5U2l6ZSA9IDB4M2Y7Ci1sZXQga0V4cHJH
cm93TWVtb3J5ID0gMHg0MDsKLWxldCBrRXhwckkzMkVxeiA9IDB4NDU7Ci1sZXQga0V4cHJJMzJF
cSA9IDB4NDY7Ci1sZXQga0V4cHJJMzJOZSA9IDB4NDc7Ci1sZXQga0V4cHJJMzJMdFMgPSAweDQ4
OwotbGV0IGtFeHBySTMyTHRVID0gMHg0OTsKLWxldCBrRXhwckkzMkd0UyA9IDB4NGE7Ci1sZXQg
a0V4cHJJMzJHdFUgPSAweDRiOwotbGV0IGtFeHBySTMyTGVTID0gMHg0YzsKLWxldCBrRXhwckkz
MkxlVSA9IDB4NGQ7Ci1sZXQga0V4cHJJMzJHZVMgPSAweDRlOwotbGV0IGtFeHBySTMyR2VVID0g
MHg0ZjsKLWxldCBrRXhwckk2NEVxeiA9IDB4NTA7Ci1sZXQga0V4cHJJNjRFcSA9IDB4NTE7Ci1s
ZXQga0V4cHJJNjROZSA9IDB4NTI7Ci1sZXQga0V4cHJJNjRMdFMgPSAweDUzOwotbGV0IGtFeHBy
STY0THRVID0gMHg1NDsKLWxldCBrRXhwckk2NEd0UyA9IDB4NTU7Ci1sZXQga0V4cHJJNjRHdFUg
PSAweDU2OwotbGV0IGtFeHBySTY0TGVTID0gMHg1NzsKLWxldCBrRXhwckk2NExlVSA9IDB4NTg7
Ci1sZXQga0V4cHJJNjRHZVMgPSAweDU5OwotbGV0IGtFeHBySTY0R2VVID0gMHg1YTsKLWxldCBr
RXhwckYzMkVxID0gMHg1YjsKLWxldCBrRXhwckYzMk5lID0gMHg1YzsKLWxldCBrRXhwckYzMkx0
ID0gMHg1ZDsKLWxldCBrRXhwckYzMkd0ID0gMHg1ZTsKLWxldCBrRXhwckYzMkxlID0gMHg1ZjsK
LWxldCBrRXhwckYzMkdlID0gMHg2MDsKLWxldCBrRXhwckY2NEVxID0gMHg2MTsKLWxldCBrRXhw
ckY2NE5lID0gMHg2MjsKLWxldCBrRXhwckY2NEx0ID0gMHg2MzsKLWxldCBrRXhwckY2NEd0ID0g
MHg2NDsKLWxldCBrRXhwckY2NExlID0gMHg2NTsKLWxldCBrRXhwckY2NEdlID0gMHg2NjsKLWxl
dCBrRXhwckkzMkNseiA9IDB4Njc7Ci1sZXQga0V4cHJJMzJDdHogPSAweDY4OwotbGV0IGtFeHBy
STMyUG9wY250ID0gMHg2OTsKLWxldCBrRXhwckkzMkFkZCA9IDB4NmE7Ci1sZXQga0V4cHJJMzJT
dWIgPSAweDZiOwotbGV0IGtFeHBySTMyTXVsID0gMHg2YzsKLWxldCBrRXhwckkzMkRpdlMgPSAw
eDZkOwotbGV0IGtFeHBySTMyRGl2VSA9IDB4NmU7Ci1sZXQga0V4cHJJMzJSZW1TID0gMHg2ZjsK
LWxldCBrRXhwckkzMlJlbVUgPSAweDcwOwotbGV0IGtFeHBySTMyQW5kID0gMHg3MTsKLWxldCBr
RXhwckkzMklvciA9IDB4NzI7Ci1sZXQga0V4cHJJMzJYb3IgPSAweDczOwotbGV0IGtFeHBySTMy
U2hsID0gMHg3NDsKLWxldCBrRXhwckkzMlNoclMgPSAweDc1OwotbGV0IGtFeHBySTMyU2hyVSA9
IDB4NzY7Ci1sZXQga0V4cHJJMzJSb2wgPSAweDc3OwotbGV0IGtFeHBySTMyUm9yID0gMHg3ODsK
LWxldCBrRXhwckk2NENseiA9IDB4Nzk7Ci1sZXQga0V4cHJJNjRDdHogPSAweDdhOwotbGV0IGtF
eHBySTY0UG9wY250ID0gMHg3YjsKLWxldCBrRXhwckk2NEFkZCA9IDB4N2M7Ci1sZXQga0V4cHJJ
NjRTdWIgPSAweDdkOwotbGV0IGtFeHBySTY0TXVsID0gMHg3ZTsKLWxldCBrRXhwckk2NERpdlMg
PSAweDdmOwotbGV0IGtFeHBySTY0RGl2VSA9IDB4ODA7Ci1sZXQga0V4cHJJNjRSZW1TID0gMHg4
MTsKLWxldCBrRXhwckk2NFJlbVUgPSAweDgyOwotbGV0IGtFeHBySTY0QW5kID0gMHg4MzsKLWxl
dCBrRXhwckk2NElvciA9IDB4ODQ7Ci1sZXQga0V4cHJJNjRYb3IgPSAweDg1OwotbGV0IGtFeHBy
STY0U2hsID0gMHg4NjsKLWxldCBrRXhwckk2NFNoclMgPSAweDg3OwotbGV0IGtFeHBySTY0U2hy
VSA9IDB4ODg7Ci1sZXQga0V4cHJJNjRSb2wgPSAweDg5OwotbGV0IGtFeHBySTY0Um9yID0gMHg4
YTsKLWxldCBrRXhwckYzMkFicyA9IDB4OGI7Ci1sZXQga0V4cHJGMzJOZWcgPSAweDhjOwotbGV0
IGtFeHByRjMyQ2VpbCA9IDB4OGQ7Ci1sZXQga0V4cHJGMzJGbG9vciA9IDB4OGU7Ci1sZXQga0V4
cHJGMzJUcnVuYyA9IDB4OGY7Ci1sZXQga0V4cHJGMzJOZWFyZXN0SW50ID0gMHg5MDsKLWxldCBr
RXhwckYzMlNxcnQgPSAweDkxOwotbGV0IGtFeHByRjMyQWRkID0gMHg5MjsKLWxldCBrRXhwckYz
MlN1YiA9IDB4OTM7Ci1sZXQga0V4cHJGMzJNdWwgPSAweDk0OwotbGV0IGtFeHByRjMyRGl2ID0g
MHg5NTsKLWxldCBrRXhwckYzMk1pbiA9IDB4OTY7Ci1sZXQga0V4cHJGMzJNYXggPSAweDk3Owot
bGV0IGtFeHByRjMyQ29weVNpZ24gPSAweDk4OwotbGV0IGtFeHByRjY0QWJzID0gMHg5OTsKLWxl
dCBrRXhwckY2NE5lZyA9IDB4OWE7Ci1sZXQga0V4cHJGNjRDZWlsID0gMHg5YjsKLWxldCBrRXhw
ckY2NEZsb29yID0gMHg5YzsKLWxldCBrRXhwckY2NFRydW5jID0gMHg5ZDsKLWxldCBrRXhwckY2
NE5lYXJlc3RJbnQgPSAweDllOwotbGV0IGtFeHByRjY0U3FydCA9IDB4OWY7Ci1sZXQga0V4cHJG
NjRBZGQgPSAweGEwOwotbGV0IGtFeHByRjY0U3ViID0gMHhhMTsKLWxldCBrRXhwckY2NE11bCA9
IDB4YTI7Ci1sZXQga0V4cHJGNjREaXYgPSAweGEzOwotbGV0IGtFeHByRjY0TWluID0gMHhhNDsK
LWxldCBrRXhwckY2NE1heCA9IDB4YTU7Ci1sZXQga0V4cHJGNjRDb3B5U2lnbiA9IDB4YTY7Ci1s
ZXQga0V4cHJJMzJDb252ZXJ0STY0ID0gMHhhNzsKLWxldCBrRXhwckkzMlNDb252ZXJ0RjMyID0g
MHhhODsKLWxldCBrRXhwckkzMlVDb252ZXJ0RjMyID0gMHhhOTsKLWxldCBrRXhwckkzMlNDb252
ZXJ0RjY0ID0gMHhhYTsKLWxldCBrRXhwckkzMlVDb252ZXJ0RjY0ID0gMHhhYjsKLWxldCBrRXhw
ckk2NFNDb252ZXJ0STMyID0gMHhhYzsKLWxldCBrRXhwckk2NFVDb252ZXJ0STMyID0gMHhhZDsK
LWxldCBrRXhwckk2NFNDb252ZXJ0RjMyID0gMHhhZTsKLWxldCBrRXhwckk2NFVDb252ZXJ0RjMy
ID0gMHhhZjsKLWxldCBrRXhwckk2NFNDb252ZXJ0RjY0ID0gMHhiMDsKLWxldCBrRXhwckk2NFVD
b252ZXJ0RjY0ID0gMHhiMTsKLWxldCBrRXhwckYzMlNDb252ZXJ0STMyID0gMHhiMjsKLWxldCBr
RXhwckYzMlVDb252ZXJ0STMyID0gMHhiMzsKLWxldCBrRXhwckYzMlNDb252ZXJ0STY0ID0gMHhi
NDsKLWxldCBrRXhwckYzMlVDb252ZXJ0STY0ID0gMHhiNTsKLWxldCBrRXhwckYzMkNvbnZlcnRG
NjQgPSAweGI2OwotbGV0IGtFeHByRjY0U0NvbnZlcnRJMzIgPSAweGI3OwotbGV0IGtFeHByRjY0
VUNvbnZlcnRJMzIgPSAweGI4OwotbGV0IGtFeHByRjY0U0NvbnZlcnRJNjQgPSAweGI5OwotbGV0
IGtFeHByRjY0VUNvbnZlcnRJNjQgPSAweGJhOwotbGV0IGtFeHByRjY0Q29udmVydEYzMiA9IDB4
YmI7Ci1sZXQga0V4cHJJMzJSZWludGVycHJldEYzMiA9IDB4YmM7Ci1sZXQga0V4cHJJNjRSZWlu
dGVycHJldEY2NCA9IDB4YmQ7Ci1sZXQga0V4cHJGMzJSZWludGVycHJldEkzMiA9IDB4YmU7Ci1s
ZXQga0V4cHJGNjRSZWludGVycHJldEk2NCA9IDB4YmY7Ci0KLWxldCBrVHJhcFVucmVhY2hhYmxl
ICAgICAgICAgID0gMDsKLWxldCBrVHJhcE1lbU91dE9mQm91bmRzICAgICAgID0gMTsKLWxldCBr
VHJhcERpdkJ5WmVybyAgICAgICAgICAgID0gMjsKLWxldCBrVHJhcERpdlVucmVwcmVzZW50YWJs
ZSAgID0gMzsKLWxldCBrVHJhcFJlbUJ5WmVybyAgICAgICAgICAgID0gNDsKLWxldCBrVHJhcEZs
b2F0VW5yZXByZXNlbnRhYmxlID0gNTsKLWxldCBrVHJhcEZ1bmNJbnZhbGlkICAgICAgICAgID0g
NjsKLWxldCBrVHJhcEZ1bmNTaWdNaXNtYXRjaCAgICAgID0gNzsKLWxldCBrVHJhcEludmFsaWRJ
bmRleCAgICAgICAgID0gODsKLQotbGV0IGtUcmFwTXNncyA9IFsKLSAgInVucmVhY2hhYmxlIiwK
LSAgIm1lbW9yeSBhY2Nlc3Mgb3V0IG9mIGJvdW5kcyIsCi0gICJkaXZpZGUgYnkgemVybyIsCi0g
ICJkaXZpZGUgcmVzdWx0IHVucmVwcmVzZW50YWJsZSIsCi0gICJyZW1haW5kZXIgYnkgemVybyIs
Ci0gICJpbnRlZ2VyIHJlc3VsdCB1bnJlcHJlc2VudGFibGUiLAotICAiaW52YWxpZCBmdW5jdGlv
biIsCi0gICJmdW5jdGlvbiBzaWduYXR1cmUgbWlzbWF0Y2giLAotICAiaW52YWxpZCBpbmRleCBp
bnRvIGZ1bmN0aW9uIHRhYmxlIgotXTsKLQotZnVuY3Rpb24gYXNzZXJ0VHJhcHModHJhcCwgY29k
ZSkgewotICB0cnkgewotICAgIGlmICh0eXBlb2YgY29kZSA9PT0gJ2Z1bmN0aW9uJykgewotICAg
ICAgY29kZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICBldmFsKGNvZGUpOwotICAgIH0KLSAgfSBj
YXRjaCAoZSkgewotICAgIGFzc2VydEVxdWFscygnb2JqZWN0JywgdHlwZW9mIGUpOwotICAgIGFz
c2VydEVxdWFscyhrVHJhcE1zZ3NbdHJhcF0sIGUubWVzc2FnZSk7Ci0gICAgLy8gU3VjY2Vzcy4K
LSAgICByZXR1cm47Ci0gIH0KLSAgdGhyb3cgbmV3IE1qc1VuaXRBc3NlcnRpb25FcnJvcignRGlk
IG5vdCB0cmFwLCBleHBlY3RlZDogJyArIGtUcmFwTXNnc1t0cmFwXSk7Ci19Ci0KLWZ1bmN0aW9u
IGFzc2VydFdhc21UaHJvd3ModmFsdWUsIGNvZGUpIHsKLSAgYXNzZXJ0RXF1YWxzKCdudW1iZXIn
LCB0eXBlb2YgdmFsdWUpOwotICB0cnkgewotICAgIGlmICh0eXBlb2YgY29kZSA9PT0gJ2Z1bmN0
aW9uJykgewotICAgICAgY29kZSgpOwotICAgIH0gZWxzZSB7Ci0gICAgICBldmFsKGNvZGUpOwot
ICAgIH0KLSAgfSBjYXRjaCAoZSkgewotICAgIGFzc2VydEVxdWFscygnbnVtYmVyJywgdHlwZW9m
IGUpOwotICAgIGFzc2VydEVxdWFscyh2YWx1ZSwgZSk7Ci0gICAgLy8gU3VjY2Vzcy4KLSAgICBy
ZXR1cm47Ci0gIH0KLSAgdGhyb3cgbmV3IE1qc1VuaXRBc3NlcnRpb25FcnJvcignRGlkIG5vdCB0
aHJvdywgZXhwZWN0ZWQ6ICcgKyB2YWx1ZSk7Ci19CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
dGFpbC1jYWxsLXNwZWMtaGFybmVzcy93YXNtLW1vZHVsZS1idWlsZGVyLmpzIGIvSlNUZXN0cy93
YXNtL3RhaWwtY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1tb2R1bGUtYnVpbGRlci5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU4MWFmODhmYjk3Li4wMDAwMDAwMDAwMDAKLS0tIGEv
SlNUZXN0cy93YXNtL3RhaWwtY2FsbC1zcGVjLWhhcm5lc3Mvd2FzbS1tb2R1bGUtYnVpbGRlci5q
cworKysgL2Rldi9udWxsCkBAIC0xLDU4MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNiB0aGUg
VjggcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotLy8gVXNlZCBmb3IgZW5jb2Rpbmcg
ZjMyIGFuZCBkb3VibGUgY29uc3RhbnRzIHRvIGJpdHMuCi1sZXQgX19idWZmZXIgPSBuZXcgQXJy
YXlCdWZmZXIoOCk7Ci1sZXQgYnl0ZV92aWV3ID0gbmV3IEludDhBcnJheShfX2J1ZmZlcik7Ci1s
ZXQgZjMyX3ZpZXcgPSBuZXcgRmxvYXQzMkFycmF5KF9fYnVmZmVyKTsKLWxldCBmNjRfdmlldyA9
IG5ldyBGbG9hdDY0QXJyYXkoX19idWZmZXIpOwotCi1jbGFzcyBCaW5hcnkgZXh0ZW5kcyBBcnJh
eSB7Ci0gIGVtaXRfdTgodmFsKSB7Ci0gICAgdGhpcy5wdXNoKHZhbCk7Ci0gIH0KLQotICBlbWl0
X3UxNih2YWwpIHsKLSAgICB0aGlzLnB1c2godmFsICYgMHhmZik7Ci0gICAgdGhpcy5wdXNoKCh2
YWwgPj4gOCkgJiAweGZmKTsKLSAgfQotCi0gIGVtaXRfdTMyKHZhbCkgewotICAgIHRoaXMucHVz
aCh2YWwgJiAweGZmKTsKLSAgICB0aGlzLnB1c2goKHZhbCA+PiA4KSAmIDB4ZmYpOwotICAgIHRo
aXMucHVzaCgodmFsID4+IDE2KSAmIDB4ZmYpOwotICAgIHRoaXMucHVzaCgodmFsID4+IDI0KSAm
IDB4ZmYpOwotICB9Ci0KLSAgZW1pdF91MzJ2KHZhbCkgewotICAgIHdoaWxlICh0cnVlKSB7Ci0g
ICAgICBsZXQgdiA9IHZhbCAmIDB4ZmY7Ci0gICAgICB2YWwgPSB2YWwgPj4+IDc7Ci0gICAgICBp
ZiAodmFsID09IDApIHsKLSAgICAgICAgdGhpcy5wdXNoKHYpOwotICAgICAgICBicmVhazsKLSAg
ICAgIH0KLSAgICAgIHRoaXMucHVzaCh2IHwgMHg4MCk7Ci0gICAgfQotICB9Ci0KLSAgZW1pdF9i
eXRlcyhkYXRhKSB7Ci0gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7
Ci0gICAgICB0aGlzLnB1c2goZGF0YVtpXSAmIDB4ZmYpOwotICAgIH0KLSAgfQotCi0gIGVtaXRf
c3RyaW5nKHN0cmluZykgewotICAgIC8vIFdoZW4gdGVzdGluZyBpbGxlZ2FsIG5hbWVzLCB3ZSBw
YXNzIGEgYnl0ZSBhcnJheSBkaXJlY3RseS4KLSAgICBpZiAoc3RyaW5nIGluc3RhbmNlb2YgQXJy
YXkpIHsKLSAgICAgIHRoaXMuZW1pdF91MzJ2KHN0cmluZy5sZW5ndGgpOwotICAgICAgdGhpcy5l
bWl0X2J5dGVzKHN0cmluZyk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVGhpcyBp
cyB0aGUgaGFja3kgd2F5IHRvIGNvbnZlcnQgYSBKYXZhU2NyaXB0IHN0cmluZyB0byBhIFVURjgg
ZW5jb2RlZAotICAgIC8vIHN0cmluZyBvbmx5IGNvbnRhaW5pbmcgc2luZ2xlLWJ5dGUgY2hhcmFj
dGVycy4KLSAgICBsZXQgc3RyaW5nX3V0ZjggPSB1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQo
c3RyaW5nKSk7Ci0gICAgdGhpcy5lbWl0X3UzMnYoc3RyaW5nX3V0ZjgubGVuZ3RoKTsKLSAgICBm
b3IgKGxldCBpID0gMDsgaSA8IHN0cmluZ191dGY4Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICB0aGlz
LmVtaXRfdTgoc3RyaW5nX3V0ZjguY2hhckNvZGVBdChpKSk7Ci0gICAgfQotICB9Ci0KLSAgZW1p
dF9oZWFkZXIoKSB7Ci0gICAgdGhpcy5wdXNoKGtXYXNtSDAsIGtXYXNtSDEsIGtXYXNtSDIsIGtX
YXNtSDMsCi0gICAgICAgICAgICAgIGtXYXNtVjAsIGtXYXNtVjEsIGtXYXNtVjIsIGtXYXNtVjMp
OwotICB9Ci0KLSAgZW1pdF9zZWN0aW9uKHNlY3Rpb25fY29kZSwgY29udGVudF9nZW5lcmF0b3Ip
IHsKLSAgICAvLyBFbWl0IHNlY3Rpb24gbmFtZS4KLSAgICB0aGlzLmVtaXRfdTgoc2VjdGlvbl9j
b2RlKTsKLSAgICAvLyBFbWl0IHRoZSBzZWN0aW9uIHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlcjogaXRz
IGZ1bGwgbGVuZ3RoIGlzbid0IGtub3cgeWV0LgotICAgIGxldCBzZWN0aW9uID0gbmV3IEJpbmFy
eTsKLSAgICBjb250ZW50X2dlbmVyYXRvcihzZWN0aW9uKTsKLSAgICAvLyBFbWl0IHNlY3Rpb24g
bGVuZ3RoLgotICAgIHRoaXMuZW1pdF91MzJ2KHNlY3Rpb24ubGVuZ3RoKTsKLSAgICAvLyBDb3B5
IHRoZSB0ZW1wb3JhcnkgYnVmZmVyLgotICAgIGZvciAoY29uc3Qgc2VjdGlvbkJ5dGUgb2Ygc2Vj
dGlvbikgewotICAgICAgdGhpcy5wdXNoKHNlY3Rpb25CeXRlKTsKLSAgICB9Ci0gIH0KLX0KLQot
Y2xhc3MgV2FzbUZ1bmN0aW9uQnVpbGRlciB7Ci0gIGNvbnN0cnVjdG9yKG1vZHVsZSwgbmFtZSwg
dHlwZV9pbmRleCkgewotICAgIHRoaXMubW9kdWxlID0gbW9kdWxlOwotICAgIHRoaXMubmFtZSA9
IG5hbWU7Ci0gICAgdGhpcy50eXBlX2luZGV4ID0gdHlwZV9pbmRleDsKLSAgICB0aGlzLmJvZHkg
PSBbXTsKLSAgfQotCi0gIGV4cG9ydEFzKG5hbWUpIHsKLSAgICB0aGlzLm1vZHVsZS5hZGRFeHBv
cnQobmFtZSwgdGhpcy5pbmRleCk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLQotICBleHBvcnRG
dW5jKCkgewotICAgIHRoaXMuZXhwb3J0QXModGhpcy5uYW1lKTsKLSAgICByZXR1cm4gdGhpczsK
LSAgfQotCi0gIGFkZEJvZHkoYm9keSkgewotICAgIGZvciAobGV0IGIgb2YgYm9keSkgewotICAg
ICAgaWYgKHR5cGVvZiBiICE9ICdudW1iZXInKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2lu
dmFsaWQgYm9keSAoZW50cmllcyBoYXZlIHRvIGJlIG51bWJlcnMpOiAnICsgYm9keSk7Ci0gICAg
fQotICAgIHRoaXMuYm9keSA9IGJvZHkuc2xpY2UoKTsKLSAgICAvLyBBdXRvbWF0aWNhbGx5IGFk
ZCB0aGUgZW5kIGZvciB0aGUgZnVuY3Rpb24gYmxvY2sgdG8gdGhlIGJvZHkuCi0gICAgdGhpcy5i
b2R5LnB1c2goa0V4cHJFbmQpOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0KLSAgYWRkTG9jYWxz
KGxvY2FscykgewotICAgIHRoaXMubG9jYWxzID0gbG9jYWxzOwotICAgIHJldHVybiB0aGlzOwot
ICB9Ci0KLSAgZW5kKCkgewotICAgIHRoaXMuYm9keS5wdXNoKGtFeHByRW5kKTsKLSAgICByZXR1
cm4gdGhpcy5tb2R1bGU7Ci0gIH0KLX0KLQotY2xhc3MgV2FzbUdsb2JhbEJ1aWxkZXIgewotICBj
b25zdHJ1Y3Rvcihtb2R1bGUsIHR5cGUsIG11dGFibGUpIHsKLSAgICB0aGlzLm1vZHVsZSA9IG1v
ZHVsZTsKLSAgICB0aGlzLnR5cGUgPSB0eXBlOwotICAgIHRoaXMubXV0YWJsZSA9IG11dGFibGU7
Ci0gICAgdGhpcy5pbml0ID0gMDsKLSAgfQotCi0gIGV4cG9ydEFzKG5hbWUpIHsKLSAgICB0aGlz
Lm1vZHVsZS5leHBvcnRzLnB1c2goe25hbWU6IG5hbWUsIGtpbmQ6IGtFeHRlcm5hbEdsb2JhbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiB0aGlzLmluZGV4fSk7Ci0gICAg
cmV0dXJuIHRoaXM7Ci0gIH0KLX0KLQotY2xhc3MgV2FzbU1vZHVsZUJ1aWxkZXIgewotICBjb25z
dHJ1Y3RvcigpIHsKLSAgICB0aGlzLnR5cGVzID0gW107Ci0gICAgdGhpcy5pbXBvcnRzID0gW107
Ci0gICAgdGhpcy5leHBvcnRzID0gW107Ci0gICAgdGhpcy5nbG9iYWxzID0gW107Ci0gICAgdGhp
cy5mdW5jdGlvbnMgPSBbXTsKLSAgICB0aGlzLmZ1bmN0aW9uX3RhYmxlID0gW107Ci0gICAgdGhp
cy5mdW5jdGlvbl90YWJsZV9sZW5ndGggPSAwOwotICAgIHRoaXMuZnVuY3Rpb25fdGFibGVfaW5p
dHMgPSBbXTsKLSAgICB0aGlzLnNlZ21lbnRzID0gW107Ci0gICAgdGhpcy5leHBsaWNpdCA9IFtd
OwotICAgIHRoaXMubnVtX2ltcG9ydGVkX2Z1bmNzID0gMDsKLSAgICB0aGlzLm51bV9pbXBvcnRl
ZF9nbG9iYWxzID0gMDsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotCi0gIGFkZFN0YXJ0KHN0YXJ0
X2luZGV4KSB7Ci0gICAgdGhpcy5zdGFydF9pbmRleCA9IHN0YXJ0X2luZGV4OwotICAgIHJldHVy
biB0aGlzOwotICB9Ci0KLSAgYWRkTWVtb3J5KG1pbiwgbWF4LCBleHApIHsKLSAgICB0aGlzLm1l
bW9yeSA9IHttaW46IG1pbiwgbWF4OiBtYXgsIGV4cDogZXhwfTsKLSAgICByZXR1cm4gdGhpczsK
LSAgfQotCi0gIGFkZEV4cGxpY2l0U2VjdGlvbihieXRlcykgewotICAgIHRoaXMuZXhwbGljaXQu
cHVzaChieXRlcyk7Ci0gICAgcmV0dXJuIHRoaXM7Ci0gIH0KLQotICBzdHJpbmdUb0J5dGVzKG5h
bWUpIHsKLSAgICB2YXIgcmVzdWx0ID0gbmV3IEJpbmFyeSgpOwotICAgIHJlc3VsdC5lbWl0X3Uz
MnYobmFtZS5sZW5ndGgpOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZS5sZW5ndGg7IGkr
KykgewotICAgICAgcmVzdWx0LmVtaXRfdTgobmFtZS5jaGFyQ29kZUF0KGkpKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLSAgfQotCi0gIGFkZEN1c3RvbVNlY3Rpb24obmFtZSwgYnl0ZXMp
IHsKLSAgICBuYW1lID0gdGhpcy5zdHJpbmdUb0J5dGVzKG5hbWUpOwotICAgIHZhciBsZW5ndGgg
PSBuZXcgQmluYXJ5KCk7Ci0gICAgbGVuZ3RoLmVtaXRfdTMydihuYW1lLmxlbmd0aCArIGJ5dGVz
Lmxlbmd0aCk7Ci0gICAgdGhpcy5leHBsaWNpdC5wdXNoKFswLCAuLi5sZW5ndGgsIC4uLm5hbWUs
IC4uLmJ5dGVzXSk7Ci0gIH0KLQotICBhZGRUeXBlKHR5cGUpIHsKLSAgICAvLyBUT0RPOiBjYW5v
bmljYWxpemUgdHlwZXM/Ci0gICAgdGhpcy50eXBlcy5wdXNoKHR5cGUpOwotICAgIHJldHVybiB0
aGlzLnR5cGVzLmxlbmd0aCAtIDE7Ci0gIH0KLQotICBhZGRHbG9iYWwobG9jYWxfdHlwZSwgbXV0
YWJsZSkgewotICAgIGxldCBnbG9iID0gbmV3IFdhc21HbG9iYWxCdWlsZGVyKHRoaXMsIGxvY2Fs
X3R5cGUsIG11dGFibGUpOwotICAgIGdsb2IuaW5kZXggPSB0aGlzLmdsb2JhbHMubGVuZ3RoICsg
dGhpcy5udW1faW1wb3J0ZWRfZ2xvYmFsczsKLSAgICB0aGlzLmdsb2JhbHMucHVzaChnbG9iKTsK
LSAgICByZXR1cm4gZ2xvYjsKLSAgfQotCi0gIGFkZEZ1bmN0aW9uKG5hbWUsIHR5cGUpIHsKLSAg
ICBsZXQgdHlwZV9pbmRleCA9ICh0eXBlb2YgdHlwZSkgPT0gIm51bWJlciIgPyB0eXBlIDogdGhp
cy5hZGRUeXBlKHR5cGUpOwotICAgIGxldCBmdW5jID0gbmV3IFdhc21GdW5jdGlvbkJ1aWxkZXIo
dGhpcywgbmFtZSwgdHlwZV9pbmRleCk7Ci0gICAgZnVuYy5pbmRleCA9IHRoaXMuZnVuY3Rpb25z
Lmxlbmd0aCArIHRoaXMubnVtX2ltcG9ydGVkX2Z1bmNzOwotICAgIHRoaXMuZnVuY3Rpb25zLnB1
c2goZnVuYyk7Ci0gICAgcmV0dXJuIGZ1bmM7Ci0gIH0KLQotICBhZGRJbXBvcnQobW9kdWxlID0g
IiIsIG5hbWUsIHR5cGUpIHsKLSAgICBsZXQgdHlwZV9pbmRleCA9ICh0eXBlb2YgdHlwZSkgPT0g
Im51bWJlciIgPyB0eXBlIDogdGhpcy5hZGRUeXBlKHR5cGUpOwotICAgIHRoaXMuaW1wb3J0cy5w
dXNoKHttb2R1bGU6IG1vZHVsZSwgbmFtZTogbmFtZSwga2luZDoga0V4dGVybmFsRnVuY3Rpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVfaW5kZXh9KTsKLSAgICByZXR1cm4g
dGhpcy5udW1faW1wb3J0ZWRfZnVuY3MrKzsKLSAgfQotCi0gIGFkZEltcG9ydGVkR2xvYmFsKG1v
ZHVsZSA9ICIiLCBuYW1lLCB0eXBlKSB7Ci0gICAgbGV0IG8gPSB7bW9kdWxlOiBtb2R1bGUsIG5h
bWU6IG5hbWUsIGtpbmQ6IGtFeHRlcm5hbEdsb2JhbCwgdHlwZTogdHlwZSwKLSAgICAgICAgICAg
ICBtdXRhYmxlOiBmYWxzZX0KLSAgICB0aGlzLmltcG9ydHMucHVzaChvKTsKLSAgICByZXR1cm4g
dGhpcy5udW1faW1wb3J0ZWRfZ2xvYmFscysrOwotICB9Ci0KLSAgYWRkSW1wb3J0ZWRNZW1vcnko
bW9kdWxlID0gIiIsIG5hbWUsIGluaXRpYWwgPSAwLCBtYXhpbXVtKSB7Ci0gICAgbGV0IG8gPSB7
bW9kdWxlOiBtb2R1bGUsIG5hbWU6IG5hbWUsIGtpbmQ6IGtFeHRlcm5hbE1lbW9yeSwKLSAgICAg
ICAgICAgICBpbml0aWFsOiBpbml0aWFsLCBtYXhpbXVtOiBtYXhpbXVtfTsKLSAgICB0aGlzLmlt
cG9ydHMucHVzaChvKTsKLSAgICByZXR1cm4gdGhpczsKLSAgfQotCi0gIGFkZEltcG9ydGVkVGFi
bGUobW9kdWxlID0gIiIsIG5hbWUsIGluaXRpYWwsIG1heGltdW0pIHsKLSAgICBsZXQgbyA9IHtt
b2R1bGU6IG1vZHVsZSwgbmFtZTogbmFtZSwga2luZDoga0V4dGVybmFsVGFibGUsIGluaXRpYWw6
IGluaXRpYWwsCi0gICAgICAgICAgICAgbWF4aW11bTogbWF4aW11bX07Ci0gICAgdGhpcy5pbXBv
cnRzLnB1c2gobyk7Ci0gIH0KLQotICBhZGRFeHBvcnQobmFtZSwgaW5kZXgpIHsKLSAgICB0aGlz
LmV4cG9ydHMucHVzaCh7bmFtZTogbmFtZSwga2luZDoga0V4dGVybmFsRnVuY3Rpb24sIGluZGV4
OiBpbmRleH0pOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0KLSAgYWRkRXhwb3J0T2ZLaW5kKG5h
bWUsIGtpbmQsIGluZGV4KSB7Ci0gICAgdGhpcy5leHBvcnRzLnB1c2goe25hbWU6IG5hbWUsIGtp
bmQ6IGtpbmQsIGluZGV4OiBpbmRleH0pOwotICAgIHJldHVybiB0aGlzOwotICB9Ci0KLSAgYWRk
RGF0YVNlZ21lbnQoYWRkciwgZGF0YSwgaXNfZ2xvYmFsID0gZmFsc2UpIHsKLSAgICB0aGlzLnNl
Z21lbnRzLnB1c2goe2FkZHI6IGFkZHIsIGRhdGE6IGRhdGEsIGlzX2dsb2JhbDogaXNfZ2xvYmFs
fSk7Ci0gICAgcmV0dXJuIHRoaXMuc2VnbWVudHMubGVuZ3RoIC0gMTsKLSAgfQotCi0gIGV4cG9y
dE1lbW9yeUFzKG5hbWUpIHsKLSAgICB0aGlzLmV4cG9ydHMucHVzaCh7bmFtZTogbmFtZSwga2lu
ZDoga0V4dGVybmFsTWVtb3J5LCBpbmRleDogMH0pOwotICB9Ci0KLSAgYWRkRnVuY3Rpb25UYWJs
ZUluaXQoYmFzZSwgaXNfZ2xvYmFsLCBhcnJheSwgaXNfaW1wb3J0ID0gZmFsc2UpIHsKLSAgICB0
aGlzLmZ1bmN0aW9uX3RhYmxlX2luaXRzLnB1c2goe2Jhc2U6IGJhc2UsIGlzX2dsb2JhbDogaXNf
Z2xvYmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXk6IGFycmF5
fSk7Ci0gICAgaWYgKCFpc19nbG9iYWwpIHsKLSAgICAgIHZhciBsZW5ndGggPSBiYXNlICsgYXJy
YXkubGVuZ3RoOwotICAgICAgaWYgKGxlbmd0aCA+IHRoaXMuZnVuY3Rpb25fdGFibGVfbGVuZ3Ro
ICYmICFpc19pbXBvcnQpIHsKLSAgICAgICAgdGhpcy5mdW5jdGlvbl90YWJsZV9sZW5ndGggPSBs
ZW5ndGg7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0aGlzOwotICB9Ci0KLSAgYXBwZW5k
VG9UYWJsZShhcnJheSkgewotICAgIGZvciAobGV0IG4gb2YgYXJyYXkpIHsKLSAgICAgIGlmICh0
eXBlb2YgbiAhPSAnbnVtYmVyJykKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHRh
YmxlIChlbnRyaWVzIGhhdmUgdG8gYmUgbnVtYmVycyk6ICcgKyBhcnJheSk7Ci0gICAgfQotICAg
IHJldHVybiB0aGlzLmFkZEZ1bmN0aW9uVGFibGVJbml0KHRoaXMuZnVuY3Rpb25fdGFibGUubGVu
Z3RoLCBmYWxzZSwgYXJyYXkpOwotICB9Ci0KLSAgc2V0RnVuY3Rpb25UYWJsZUxlbmd0aChsZW5n
dGgpIHsKLSAgICB0aGlzLmZ1bmN0aW9uX3RhYmxlX2xlbmd0aCA9IGxlbmd0aDsKLSAgICByZXR1
cm4gdGhpczsKLSAgfQotCi0gIHRvQXJyYXkoZGVidWcgPSBmYWxzZSkgewotICAgIGxldCBiaW5h
cnkgPSBuZXcgQmluYXJ5OwotICAgIGxldCB3YXNtID0gdGhpczsKLQotICAgIC8vIEFkZCBoZWFk
ZXIKLSAgICBiaW5hcnkuZW1pdF9oZWFkZXIoKTsKLQotICAgIC8vIEFkZCB0eXBlIHNlY3Rpb24K
LSAgICBpZiAod2FzbS50eXBlcy5sZW5ndGggPiAwKSB7Ci0gICAgICBpZiAoZGVidWcpIHByaW50
KCJlbWl0dGluZyB0eXBlcyBAICIgKyBiaW5hcnkubGVuZ3RoKTsKLSAgICAgIGJpbmFyeS5lbWl0
X3NlY3Rpb24oa1R5cGVTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7Ci0gICAgICAgIHNlY3Rpb24u
ZW1pdF91MzJ2KHdhc20udHlwZXMubGVuZ3RoKTsKLSAgICAgICAgZm9yIChsZXQgdHlwZSBvZiB3
YXNtLnR5cGVzKSB7Ci0gICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtXYXNtRnVuY3Rpb25UeXBl
Rm9ybSk7Ci0gICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYodHlwZS5wYXJhbXMubGVuZ3RoKTsK
LSAgICAgICAgICBmb3IgKGxldCBwYXJhbSBvZiB0eXBlLnBhcmFtcykgewotICAgICAgICAgICAg
c2VjdGlvbi5lbWl0X3U4KHBhcmFtKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc2VjdGlvbi5l
bWl0X3UzMnYodHlwZS5yZXN1bHRzLmxlbmd0aCk7Ci0gICAgICAgICAgZm9yIChsZXQgcmVzdWx0
IG9mIHR5cGUucmVzdWx0cykgewotICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KHJlc3VsdCk7
Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICB9Ci0KLSAgICAvLyBBZGQg
aW1wb3J0cyBzZWN0aW9uCi0gICAgaWYgKHdhc20uaW1wb3J0cy5sZW5ndGggPiAwKSB7Ci0gICAg
ICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBpbXBvcnRzIEAgIiArIGJpbmFyeS5sZW5ndGgp
OwotICAgICAgYmluYXJ5LmVtaXRfc2VjdGlvbihrSW1wb3J0U2VjdGlvbkNvZGUsIHNlY3Rpb24g
PT4gewotICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLmltcG9ydHMubGVuZ3RoKTsKLSAg
ICAgICAgZm9yIChsZXQgaW1wIG9mIHdhc20uaW1wb3J0cykgewotICAgICAgICAgIHNlY3Rpb24u
ZW1pdF9zdHJpbmcoaW1wLm1vZHVsZSk7Ci0gICAgICAgICAgc2VjdGlvbi5lbWl0X3N0cmluZyhp
bXAubmFtZSB8fCAnJyk7Ci0gICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGltcC5raW5kKTsKLSAg
ICAgICAgICBpZiAoaW1wLmtpbmQgPT0ga0V4dGVybmFsRnVuY3Rpb24pIHsKLSAgICAgICAgICAg
IHNlY3Rpb24uZW1pdF91MzJ2KGltcC50eXBlKTsKLSAgICAgICAgICB9IGVsc2UgaWYgKGltcC5r
aW5kID09IGtFeHRlcm5hbEdsb2JhbCkgewotICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYo
aW1wLnR5cGUpOwotICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGltcC5tdXRhYmxlKTsKLSAg
ICAgICAgICB9IGVsc2UgaWYgKGltcC5raW5kID09IGtFeHRlcm5hbE1lbW9yeSkgewotICAgICAg
ICAgICAgdmFyIGhhc19tYXggPSAodHlwZW9mIGltcC5tYXhpbXVtKSAhPSAidW5kZWZpbmVkIjsK
LSAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChoYXNfbWF4ID8gMSA6IDApOyAvLyBmbGFncwot
ICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoaW1wLmluaXRpYWwpOyAvLyBpbml0aWFsCi0g
ICAgICAgICAgICBpZiAoaGFzX21heCkgc2VjdGlvbi5lbWl0X3UzMnYoaW1wLm1heGltdW0pOyAv
LyBtYXhpbXVtCi0gICAgICAgICAgfSBlbHNlIGlmIChpbXAua2luZCA9PSBrRXh0ZXJuYWxUYWJs
ZSkgewotICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtXYXNtRnVuY1JlZnRpb25UeXBlRm9y
bSk7Ci0gICAgICAgICAgICB2YXIgaGFzX21heCA9ICh0eXBlb2YgaW1wLm1heGltdW0pICE9ICJ1
bmRlZmluZWQiOwotICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGhhc19tYXggPyAxIDogMCk7
IC8vIGZsYWdzCi0gICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihpbXAuaW5pdGlhbCk7IC8v
IGluaXRpYWwKLSAgICAgICAgICAgIGlmIChoYXNfbWF4KSBzZWN0aW9uLmVtaXRfdTMydihpbXAu
bWF4aW11bSk7IC8vIG1heGltdW0KLSAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJ1bmtub3duL3Vuc3VwcG9ydGVkIGltcG9ydCBraW5kICIgKyBpbXAua2lu
ZCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICB9Ci0KLSAgICAvLyBB
ZGQgZnVuY3Rpb25zIGRlY2xhcmF0aW9ucwotICAgIGxldCBudW1fZnVuY3Rpb25fbmFtZXMgPSAw
OwotICAgIGxldCBuYW1lcyA9IGZhbHNlOwotICAgIGlmICh3YXNtLmZ1bmN0aW9ucy5sZW5ndGgg
PiAwKSB7Ci0gICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBmdW5jdGlvbiBkZWNscyBA
ICIgKyBiaW5hcnkubGVuZ3RoKTsKLSAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0Z1bmN0aW9u
U2VjdGlvbkNvZGUsIHNlY3Rpb24gPT4gewotICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNt
LmZ1bmN0aW9ucy5sZW5ndGgpOwotICAgICAgICBmb3IgKGxldCBmdW5jIG9mIHdhc20uZnVuY3Rp
b25zKSB7Ci0gICAgICAgICAgaWYgKGZ1bmMubmFtZSAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAg
ICAgICArK251bV9mdW5jdGlvbl9uYW1lczsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc2VjdGlv
bi5lbWl0X3UzMnYoZnVuYy50eXBlX2luZGV4KTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAg
fQotCi0gICAgLy8gQWRkIGZ1bmN0aW9uX3RhYmxlLgotICAgIGlmICh3YXNtLmZ1bmN0aW9uX3Rh
YmxlX2xlbmd0aCA+IDApIHsKLSAgICAgIGlmIChkZWJ1ZykgcHJpbnQoImVtaXR0aW5nIHRhYmxl
IEAgIiArIGJpbmFyeS5sZW5ndGgpOwotICAgICAgYmluYXJ5LmVtaXRfc2VjdGlvbihrVGFibGVT
ZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7Ci0gICAgICAgIHNlY3Rpb24uZW1pdF91OCgxKTsgIC8v
IG9uZSB0YWJsZSBlbnRyeQotICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa1dhc21GdW5jUmVmdGlv
blR5cGVGb3JtKTsKLSAgICAgICAgc2VjdGlvbi5lbWl0X3U4KDEpOwotICAgICAgICBzZWN0aW9u
LmVtaXRfdTMydih3YXNtLmZ1bmN0aW9uX3RhYmxlX2xlbmd0aCk7Ci0gICAgICAgIHNlY3Rpb24u
ZW1pdF91MzJ2KHdhc20uZnVuY3Rpb25fdGFibGVfbGVuZ3RoKTsKLSAgICAgIH0pOwotICAgIH0K
LQotICAgIC8vIEFkZCBtZW1vcnkgc2VjdGlvbgotICAgIGlmICh3YXNtLm1lbW9yeSAhPT0gdW5k
ZWZpbmVkKSB7Ci0gICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBtZW1vcnkgQCAiICsg
YmluYXJ5Lmxlbmd0aCk7Ci0gICAgICBiaW5hcnkuZW1pdF9zZWN0aW9uKGtNZW1vcnlTZWN0aW9u
Q29kZSwgc2VjdGlvbiA9PiB7Ci0gICAgICAgIHNlY3Rpb24uZW1pdF91OCgxKTsgIC8vIG9uZSBt
ZW1vcnkgZW50cnkKLSAgICAgICAgY29uc3QgaGFzX21heCA9IHdhc20ubWVtb3J5Lm1heCAhPT0g
dW5kZWZpbmVkOwotICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihoYXNfbWF4ID8ga1Jlc2l6YWJs
ZU1heGltdW1GbGFnIDogMCk7Ci0gICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20ubWVtb3J5
Lm1pbik7Ci0gICAgICAgIGlmIChoYXNfbWF4KSBzZWN0aW9uLmVtaXRfdTMydih3YXNtLm1lbW9y
eS5tYXgpOwotICAgICAgfSk7Ci0gICAgfQotCi0gICAgLy8gQWRkIGdsb2JhbCBzZWN0aW9uLgot
ICAgIGlmICh3YXNtLmdsb2JhbHMubGVuZ3RoID4gMCkgewotICAgICAgaWYgKGRlYnVnKSBwcmlu
dCAoImVtaXR0aW5nIGdsb2JhbHMgQCAiICsgYmluYXJ5Lmxlbmd0aCk7Ci0gICAgICBiaW5hcnku
ZW1pdF9zZWN0aW9uKGtHbG9iYWxTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7Ci0gICAgICAgIHNl
Y3Rpb24uZW1pdF91MzJ2KHdhc20uZ2xvYmFscy5sZW5ndGgpOwotICAgICAgICBmb3IgKGxldCBn
bG9iYWwgb2Ygd2FzbS5nbG9iYWxzKSB7Ci0gICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGdsb2Jh
bC50eXBlKTsKLSAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoZ2xvYmFsLm11dGFibGUpOwotICAg
ICAgICAgIGlmICgodHlwZW9mIGdsb2JhbC5pbml0X2luZGV4KSA9PSAidW5kZWZpbmVkIikgewot
ICAgICAgICAgICAgLy8gRW1pdCBhIGNvbnN0YW50IGluaXRpYWxpemVyLgotICAgICAgICAgICAg
c3dpdGNoIChnbG9iYWwudHlwZSkgewotICAgICAgICAgICAgY2FzZSBrV2FzbUkzMjoKLSAgICAg
ICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHBySTMyQ29uc3QpOwotICAgICAgICAgICAgICBz
ZWN0aW9uLmVtaXRfdTMydihnbG9iYWwuaW5pdCk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBrV2FzbUk2NDoKLSAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtF
eHBySTY0Q29uc3QpOwotICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihnbG9iYWwuaW5p
dCk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBrV2FzbUYzMjoKLSAg
ICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGtFeHByRjMyQ29uc3QpOwotICAgICAgICAgICAg
ICBmMzJfdmlld1swXSA9IGdsb2JhbC5pbml0OwotICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRf
dTgoYnl0ZV92aWV3WzBdKTsKLSAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmll
d1sxXSk7Ci0gICAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbMl0pOwotICAg
ICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzNdKTsKLSAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIGtXYXNtRjY0OgotICAgICAgICAgICAgICBzZWN0aW9u
LmVtaXRfdTgoa0V4cHJGNjRDb25zdCk7Ci0gICAgICAgICAgICAgIGY2NF92aWV3WzBdID0gZ2xv
YmFsLmluaXQ7Ci0gICAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbMF0pOwot
ICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzFdKTsKLSAgICAgICAgICAg
ICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1syXSk7Ci0gICAgICAgICAgICAgIHNlY3Rpb24u
ZW1pdF91OChieXRlX3ZpZXdbM10pOwotICAgICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0
ZV92aWV3WzRdKTsKLSAgICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KGJ5dGVfdmlld1s1XSk7
Ci0gICAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChieXRlX3ZpZXdbNl0pOwotICAgICAgICAg
ICAgICBzZWN0aW9uLmVtaXRfdTgoYnl0ZV92aWV3WzddKTsKLSAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEVtaXQg
YSBnbG9iYWwtaW5kZXggaW5pdGlhbGl6ZXIuCi0gICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgo
a0V4cHJHZXRHbG9iYWwpOwotICAgICAgICAgICAgc2VjdGlvbi5lbWl0X3UzMnYoZ2xvYmFsLmlu
aXRfaW5kZXgpOwotICAgICAgICAgIH0KLSAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJF
bmQpOyAgLy8gZW5kIG9mIGluaXQgZXhwcmVzc2lvbgotICAgICAgICB9Ci0gICAgICB9KTsKLSAg
ICB9Ci0KLSAgICAvLyBBZGQgZXhwb3J0IHRhYmxlLgotICAgIHZhciBtZW1fZXhwb3J0ID0gKHdh
c20ubWVtb3J5ICE9PSB1bmRlZmluZWQgJiYgd2FzbS5tZW1vcnkuZXhwKTsKLSAgICB2YXIgZXhw
b3J0c19jb3VudCA9IHdhc20uZXhwb3J0cy5sZW5ndGggKyAobWVtX2V4cG9ydCA/IDEgOiAwKTsK
LSAgICBpZiAoZXhwb3J0c19jb3VudCA+IDApIHsKLSAgICAgIGlmIChkZWJ1ZykgcHJpbnQoImVt
aXR0aW5nIGV4cG9ydHMgQCAiICsgYmluYXJ5Lmxlbmd0aCk7Ci0gICAgICBiaW5hcnkuZW1pdF9z
ZWN0aW9uKGtFeHBvcnRTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7Ci0gICAgICAgIHNlY3Rpb24u
ZW1pdF91MzJ2KGV4cG9ydHNfY291bnQpOwotICAgICAgICBmb3IgKGxldCBleHAgb2Ygd2FzbS5l
eHBvcnRzKSB7Ci0gICAgICAgICAgc2VjdGlvbi5lbWl0X3N0cmluZyhleHAubmFtZSk7Ci0gICAg
ICAgICAgc2VjdGlvbi5lbWl0X3U4KGV4cC5raW5kKTsKLSAgICAgICAgICBzZWN0aW9uLmVtaXRf
dTMydihleHAuaW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtZW1fZXhwb3J0KSB7Ci0g
ICAgICAgICAgc2VjdGlvbi5lbWl0X3N0cmluZygibWVtb3J5Iik7Ci0gICAgICAgICAgc2VjdGlv
bi5lbWl0X3U4KGtFeHRlcm5hbE1lbW9yeSk7Ci0gICAgICAgICAgc2VjdGlvbi5lbWl0X3U4KDAp
OwotICAgICAgICB9Ci0gICAgICB9KTsKLSAgICB9Ci0KLSAgICAvLyBBZGQgc3RhcnQgZnVuY3Rp
b24gc2VjdGlvbi4KLSAgICBpZiAod2FzbS5zdGFydF9pbmRleCAhPT0gdW5kZWZpbmVkKSB7Ci0g
ICAgICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBzdGFydCBmdW5jdGlvbiBAICIgKyBiaW5h
cnkubGVuZ3RoKTsKLSAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa1N0YXJ0U2VjdGlvbkNvZGUs
IHNlY3Rpb24gPT4gewotICAgICAgICBzZWN0aW9uLmVtaXRfdTMydih3YXNtLnN0YXJ0X2luZGV4
KTsKLSAgICAgIH0pOwotICAgIH0KLQotICAgIC8vIEFkZCB0YWJsZSBlbGVtZW50cy4KLSAgICBp
ZiAod2FzbS5mdW5jdGlvbl90YWJsZV9pbml0cy5sZW5ndGggPiAwKSB7Ci0gICAgICBpZiAoZGVi
dWcpIHByaW50KCJlbWl0dGluZyB0YWJsZSBAICIgKyBiaW5hcnkubGVuZ3RoKTsKLSAgICAgIGJp
bmFyeS5lbWl0X3NlY3Rpb24oa0VsZW1lbnRTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7Ci0gICAg
ICAgIHZhciBpbml0cyA9IHdhc20uZnVuY3Rpb25fdGFibGVfaW5pdHM7Ci0gICAgICAgIHNlY3Rp
b24uZW1pdF91MzJ2KGluaXRzLmxlbmd0aCk7Ci0KLSAgICAgICAgZm9yIChsZXQgaW5pdCBvZiBp
bml0cykgewotICAgICAgICAgIHNlY3Rpb24uZW1pdF91OCgwKTsgLy8gdGFibGUgaW5kZXgKLSAg
ICAgICAgICBpZiAoaW5pdC5pc19nbG9iYWwpIHsKLSAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91
OChrRXhwckdldEdsb2JhbCk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNlY3Rp
b24uZW1pdF91OChrRXhwckkzMkNvbnN0KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc2VjdGlv
bi5lbWl0X3UzMnYoaW5pdC5iYXNlKTsKLSAgICAgICAgICBzZWN0aW9uLmVtaXRfdTgoa0V4cHJF
bmQpOwotICAgICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KGluaXQuYXJyYXkubGVuZ3RoKTsKLSAg
ICAgICAgICBmb3IgKGxldCBpbmRleCBvZiBpbml0LmFycmF5KSB7Ci0gICAgICAgICAgICBzZWN0
aW9uLmVtaXRfdTMydihpbmRleCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9KTsK
LSAgICB9Ci0KLSAgICAvLyBBZGQgZnVuY3Rpb24gYm9kaWVzLgotICAgIGlmICh3YXNtLmZ1bmN0
aW9ucy5sZW5ndGggPiAwKSB7Ci0gICAgICAvLyBlbWl0IGZ1bmN0aW9uIGJvZGllcwotICAgICAg
aWYgKGRlYnVnKSBwcmludCgiZW1pdHRpbmcgY29kZSBAICIgKyBiaW5hcnkubGVuZ3RoKTsKLSAg
ICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0NvZGVTZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7Ci0g
ICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uZnVuY3Rpb25zLmxlbmd0aCk7Ci0gICAgICAg
IGZvciAobGV0IGZ1bmMgb2Ygd2FzbS5mdW5jdGlvbnMpIHsKLSAgICAgICAgICAvLyBGdW5jdGlv
biBib2R5IGxlbmd0aCB3aWxsIGJlIHBhdGNoZWQgbGF0ZXIuCi0gICAgICAgICAgbGV0IGxvY2Fs
X2RlY2xzID0gW107Ci0gICAgICAgICAgbGV0IGwgPSBmdW5jLmxvY2FsczsKLSAgICAgICAgICBp
ZiAobCAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICBsZXQgbG9jYWxfZGVjbHNfY291bnQg
PSAwOwotICAgICAgICAgICAgaWYgKGwuaTMyX2NvdW50ID4gMCkgewotICAgICAgICAgICAgICBs
b2NhbF9kZWNscy5wdXNoKHtjb3VudDogbC5pMzJfY291bnQsIHR5cGU6IGtXYXNtSTMyfSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobC5pNjRfY291bnQgPiAwKSB7Ci0gICAgICAg
ICAgICAgIGxvY2FsX2RlY2xzLnB1c2goe2NvdW50OiBsLmk2NF9jb3VudCwgdHlwZToga1dhc21J
NjR9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsLmYzMl9jb3VudCA+IDApIHsK
LSAgICAgICAgICAgICAgbG9jYWxfZGVjbHMucHVzaCh7Y291bnQ6IGwuZjMyX2NvdW50LCB0eXBl
OiBrV2FzbUYzMn0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGwuZjY0X2NvdW50
ID4gMCkgewotICAgICAgICAgICAgICBsb2NhbF9kZWNscy5wdXNoKHtjb3VudDogbC5mNjRfY291
bnQsIHR5cGU6IGtXYXNtRjY0fSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotCi0gICAg
ICAgICAgbGV0IGhlYWRlciA9IG5ldyBCaW5hcnk7Ci0gICAgICAgICAgaGVhZGVyLmVtaXRfdTMy
dihsb2NhbF9kZWNscy5sZW5ndGgpOwotICAgICAgICAgIGZvciAobGV0IGRlY2wgb2YgbG9jYWxf
ZGVjbHMpIHsKLSAgICAgICAgICAgIGhlYWRlci5lbWl0X3UzMnYoZGVjbC5jb3VudCk7Ci0gICAg
ICAgICAgICBoZWFkZXIuZW1pdF91OChkZWNsLnR5cGUpOwotICAgICAgICAgIH0KLQotICAgICAg
ICAgIHNlY3Rpb24uZW1pdF91MzJ2KGhlYWRlci5sZW5ndGggKyBmdW5jLmJvZHkubGVuZ3RoKTsK
LSAgICAgICAgICBzZWN0aW9uLmVtaXRfYnl0ZXMoaGVhZGVyKTsKLSAgICAgICAgICBzZWN0aW9u
LmVtaXRfYnl0ZXMoZnVuYy5ib2R5KTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfQotCi0g
ICAgLy8gQWRkIGRhdGEgc2VnbWVudHMuCi0gICAgaWYgKHdhc20uc2VnbWVudHMubGVuZ3RoID4g
MCkgewotICAgICAgaWYgKGRlYnVnKSBwcmludCgiZW1pdHRpbmcgZGF0YSBzZWdtZW50cyBAICIg
KyBiaW5hcnkubGVuZ3RoKTsKLSAgICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa0RhdGFTZWN0aW9u
Q29kZSwgc2VjdGlvbiA9PiB7Ci0gICAgICAgIHNlY3Rpb24uZW1pdF91MzJ2KHdhc20uc2VnbWVu
dHMubGVuZ3RoKTsKLSAgICAgICAgZm9yIChsZXQgc2VnIG9mIHdhc20uc2VnbWVudHMpIHsKLSAg
ICAgICAgICBzZWN0aW9uLmVtaXRfdTgoMCk7ICAvLyBsaW5lYXIgbWVtb3J5IGluZGV4IDAKLSAg
ICAgICAgICBpZiAoc2VnLmlzX2dsb2JhbCkgewotICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZXIg
aXMgYSBnbG9iYWwgdmFyaWFibGUKLSAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckdl
dEdsb2JhbCk7Ci0gICAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihzZWcuYWRkcik7Ci0gICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIGluaXRpYWxpemVyIGlzIGEgY29uc3RhbnQK
LSAgICAgICAgICAgIHNlY3Rpb24uZW1pdF91OChrRXhwckkzMkNvbnN0KTsKLSAgICAgICAgICAg
IHNlY3Rpb24uZW1pdF91MzJ2KHNlZy5hZGRyKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc2Vj
dGlvbi5lbWl0X3U4KGtFeHByRW5kKTsKLSAgICAgICAgICBzZWN0aW9uLmVtaXRfdTMydihzZWcu
ZGF0YS5sZW5ndGgpOwotICAgICAgICAgIHNlY3Rpb24uZW1pdF9ieXRlcyhzZWcuZGF0YSk7Ci0g
ICAgICAgIH0KLSAgICAgIH0pOwotICAgIH0KLQotICAgIC8vIEFkZCBhbnkgZXhwbGljaXRseSBh
ZGRlZCBzZWN0aW9ucwotICAgIGZvciAobGV0IGV4cCBvZiB3YXNtLmV4cGxpY2l0KSB7Ci0gICAg
ICBpZiAoZGVidWcpIHByaW50KCJlbWl0dGluZyBleHBsaWNpdCBAICIgKyBiaW5hcnkubGVuZ3Ro
KTsKLSAgICAgIGJpbmFyeS5lbWl0X2J5dGVzKGV4cCk7Ci0gICAgfQotCi0gICAgLy8gQWRkIGZ1
bmN0aW9uIG5hbWVzLgotICAgIGlmIChudW1fZnVuY3Rpb25fbmFtZXMgPiAwKSB7Ci0gICAgICBp
ZiAoZGVidWcpIHByaW50KCdlbWl0dGluZyBuYW1lcyBAICcgKyBiaW5hcnkubGVuZ3RoKTsKLSAg
ICAgIGJpbmFyeS5lbWl0X3NlY3Rpb24oa1Vua25vd25TZWN0aW9uQ29kZSwgc2VjdGlvbiA9PiB7
Ci0gICAgICAgIHNlY3Rpb24uZW1pdF9zdHJpbmcoJ25hbWUnKTsKLSAgICAgICAgc2VjdGlvbi5l
bWl0X3NlY3Rpb24oa0Z1bmN0aW9uTmFtZXNDb2RlLCBuYW1lX3NlY3Rpb24gPT4gewotICAgICAg
ICAgIG5hbWVfc2VjdGlvbi5lbWl0X3UzMnYobnVtX2Z1bmN0aW9uX25hbWVzKTsKLSAgICAgICAg
ICBmb3IgKGxldCBmdW5jIG9mIHdhc20uZnVuY3Rpb25zKSB7Ci0gICAgICAgICAgICBpZiAoZnVu
Yy5uYW1lID09PSB1bmRlZmluZWQpIGNvbnRpbnVlOwotICAgICAgICAgICAgbmFtZV9zZWN0aW9u
LmVtaXRfdTMydihmdW5jLmluZGV4KTsKLSAgICAgICAgICAgIG5hbWVfc2VjdGlvbi5lbWl0X3N0
cmluZyhmdW5jLm5hbWUpOwotICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICB9KTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gYmluYXJ5OwotICB9Ci0KLSAgdG9CdWZmZXIoZGVidWcgPSBmYWxz
ZSkgewotICAgIGxldCBieXRlcyA9IHRoaXMudG9BcnJheShkZWJ1Zyk7Ci0gICAgbGV0IGJ1ZmZl
ciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpOwotICAgIGxldCB2aWV3ID0gbmV3IFVp
bnQ4QXJyYXkoYnVmZmVyKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsg
aSsrKSB7Ci0gICAgICBsZXQgdmFsID0gYnl0ZXNbaV07Ci0gICAgICBpZiAoKHR5cGVvZiB2YWwp
ID09ICJzdHJpbmciKSB2YWwgPSB2YWwuY2hhckNvZGVBdCgwKTsKLSAgICAgIHZpZXdbaV0gPSB2
YWwgfCAwOwotICAgIH0KLSAgICByZXR1cm4gYnVmZmVyOwotICB9Ci0KLSAgaW5zdGFudGlhdGUo
ZmZpKSB7Ci0gICAgbGV0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUodGhpcy50b0J1
ZmZlcigpKTsKLSAgICBsZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9k
dWxlLCBmZmkpOwotICAgIHJldHVybiBpbnN0YW5jZTsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy93YXNtL3RhaWwtY2FsbC1zcGVjLWhhcm5lc3Mvd2FzdC5qcyBiL0pTVGVzdHMvd2FzbS90
YWlsLWNhbGwtc3BlYy1oYXJuZXNzL3dhc3QuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGI3YTY5YjQ4YmIzZC4uMDAwMDAwMDAwMDAwCi0tLSBhL0pTVGVzdHMvd2FzbS90YWlsLWNh
bGwtc3BlYy1oYXJuZXNzL3dhc3QuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOTc3NyArMCwwIEBA
Ci0vLyBETyBOT1QgRURJVC4gR2VuZXJhdGVkIGZyb20gV2ViQXNzZW1ibHkgc3BlYyBpbnRlcnBy
ZXRlcgotCi1sZXQgV2ViQXNzZW1ibHlUZXh0ID0gKGZ1bmN0aW9uKCkgewotICBsZXQgX3JlZ2lz
dHJ5ID0ge19fcHJvdG9fXzogbnVsbH07Ci0gIGZ1bmN0aW9uIG5vcm1hbGl6ZShmaWxlKSB7Ci0g
ICAgcmV0dXJuIGZpbGUuc3BsaXQoJy8nKS5yZXZlcnNlKClbMF0uc3BsaXQoJy4nKVswXTsKLSAg
fQotICBmdW5jdGlvbiByZXF1aXJlKGZpbGUpIHsKLSAgICBsZXQgbmFtZSA9IG5vcm1hbGl6ZShm
aWxlKTsKLSAgICBpZiAoIShuYW1lIGluIF9yZWdpc3RyeSkpIHsKLSAgICAgIHRocm93IG5ldyBF
cnJvcignbWlzc2luZyBtb2R1bGU6ICcgKyBuYW1lKQotICAgIH0gZWxzZSBpZiAodHlwZW9mIF9y
ZWdpc3RyeVtuYW1lXSA9PT0gJ2Z1bmN0aW9uJykgewotCi0KLSAgICAgIGxldCBmID0gX3JlZ2lz
dHJ5W25hbWVdOwotICAgICAgX3JlZ2lzdHJ5W25hbWVdID0gZnVuY3Rpb24oKSB7IHRocm93IG5l
dyBFcnJvcignY3ljbGljIG1vZHVsZTogJyArIG5hbWUpIH07Ci0gICAgICBfcmVnaXN0cnlbbmFt
ZV0gPSBmKCk7Ci0gICAgfQotICAgIHJldHVybiBfcmVnaXN0cnlbbmFtZV07Ci0gIH0KLQotCi0g
IF9yZWdpc3RyeVsnYXJyYW5nZSddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7
fTsKLS8vLy8vLy8vIHN0YXJ0IG9mIGFycmFuZ2UuanMgLy8vLy8vLy8KLS8vIEdlbmVyYXRlZCBi
eSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQotJ3Vz
ZSBzdHJpY3QnOwotCi12YXIgRjMyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Yz
MiIpOwotdmFyIEY2NCAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9mNjQiKTsKLXZh
ciBJMzIgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vaTMyIik7Ci12YXIgSTY0ICAg
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2k2NCIpOwotdmFyIExpYiAgICAgICAgICAg
ICAgICAgICAgID0gcmVxdWlyZSgiLi9saWIiKTsKLXZhciBMaXN0ICAgICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Ci12YXIgQmxvY2sgICAgICAg
ICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2siKTsKLXZhciBD
dXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJy
eSIpOwotdmFyIFR5cGVzICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi90eXBlcyIpOwot
dmFyIEJ1ZmZlciAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2J1ZmZlciIpOwotdmFyIERlY29kZSAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9kZWNv
ZGUiKTsKLXZhciBFbmNvZGUgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZW5jb2RlIik7
Ci12YXIgUHJpbnRmICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIv
anMvcHJpbnRmIik7Ci12YXIgU291cmNlICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3Nv
dXJjZSIpOwotdmFyICQkU3RyaW5nICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL3N0cmluZyIpOwotdmFyIFZhbHVlcyAgICAgICAgICAgICAgICAgID0gcmVxdWly
ZSgiLi92YWx1ZXMiKTsKLXZhciBDYW1sX2ludDMyICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9jYW1sX2ludDMyIik7Ci12YXIgUGVydmFzaXZlcyAgICAgICAgICAg
ICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVydmFzaXZlcyIpOwotdmFyIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfYnVp
bHRpbl9leGNlcHRpb25zIik7Ci0KLWZ1bmN0aW9uIGFkZF9oZXhfY2hhcihidWYsIGMpIHsKLSAg
cmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5icHJpbnRmKGJ1ZiwgLyogRm9ybWF0ICovWwotICAgICAg
ICAgICAgICAgICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAvKiAiXFwiICovOTIsCi0gICAgICAgICAgICAgICAgICAgICAgLyogSW50ICov
QmxvY2suX18oNCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfeCAqLzYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExpdF9wYWRkaW5nICovQmxvY2suX18oMCwgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWmVyb3MgKi8yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAotICAgICAgICAgICAgICAgICAgICAg
ICAgXSkKLSAgICAgICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAiXFwlMDJ4
IgotICAgICAgICAgICAgICAgIF0pLCBjKTsKLX0KLQotZnVuY3Rpb24gYWRkX2NoYXIoYnVmLCBj
KSB7Ci0gIGlmIChjIDwgLyogIiAiICovMzIgfHwgYyA+PSAvKiAiXDEyNyIgKi8xMjcpIHsKLSAg
ICByZXR1cm4gYWRkX2hleF9jaGFyKGJ1ZiwgYyk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgaWYgKGMg
PT09IC8qICJcIiIgKi8zNCB8fCBjID09PSAvKiAiXFwiICovOTIpIHsKLSAgICAgIEJ1ZmZlci5h
ZGRfY2hhcihidWYsIC8qICJcXCIgKi85Mik7Ci0gICAgfQotICAgIHJldHVybiBCdWZmZXIuYWRk
X2NoYXIoYnVmLCBjKTsKLSAgfQotfQotCi1mdW5jdGlvbiBzdHJpbmdfd2l0aChhZGRfY2hhciwg
cykgewotICB2YXIgYnVmID0gQnVmZmVyLmNyZWF0ZShDYW1sX2ludDMyLmltdWwoMywgcy5sZW5n
dGgpICsgMiB8IDApOwotICBCdWZmZXIuYWRkX2NoYXIoYnVmLCAvKiAiXCIiICovMzQpOwotICAk
JFN0cmluZy5pdGVyKEN1cnJ5Ll8xKGFkZF9jaGFyLCBidWYpLCBzKTsKLSAgQnVmZmVyLmFkZF9j
aGFyKGJ1ZiwgLyogIlwiIiAqLzM0KTsKLSAgcmV0dXJuIEJ1ZmZlci5jb250ZW50cyhidWYpOwot
fQotCi1mdW5jdGlvbiBsaXN0X29mX29wdChwYXJhbSkgewotICBpZiAocGFyYW0pIHsKLSAgICBy
ZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICBwYXJhbVswXSwKLSAgICAgICAgICAgIC8qIFtd
ICovMAotICAgICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIFtdICovMDsK
LSAgfQotfQotCi1mdW5jdGlvbiBicmVha19ieXRlcyhzKSB7Ci0gIHZhciBzcyA9IEN1cnJ5Ll8y
KExpYi4kJFN0cmluZ1svKiBicmVha3VwICovMF0sIHMsIDE2KTsKLSAgdmFyIGYgPSBmdW5jdGlv
biAocGFyYW0pIHsKLSAgICByZXR1cm4gLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0
aChhZGRfaGV4X2NoYXIsIHBhcmFtKV0pOwotICB9OwotICByZXR1cm4gTGlzdC5tYXAoZiwgc3Mp
OwotfQotCi1mdW5jdGlvbiBkZWNscyhraW5kLCB0cykgewotICB2YXIgaGVhZCA9IGtpbmQ7Ci0g
IHZhciBmID0gZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgcmV0dXJuIC8qIEF0b20gKi9CbG9jay5f
XygwLCBbVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUocGFyYW0pXSk7Ci0gIH07Ci0gIHZhciB4
cyA9IHRzOwotICBpZiAoeHMpIHsKLSAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAv
KiBOb2RlICovQmxvY2suX18oMSwgWwotICAgICAgICAgICAgICAgIGhlYWQsCi0gICAgICAgICAg
ICAgICAgTGlzdC5tYXAoZiwgeHMpCi0gICAgICAgICAgICAgIF0pLAotICAgICAgICAgICAgLyog
W10gKi8wCi0gICAgICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyogW10gKi8w
OwotICB9Ci19Ci0KLWZ1bmN0aW9uIGZ1bmNfdHlwZShwYXJhbSkgewotICByZXR1cm4gLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKLSAgICAgICAgICAgICJmdW5jIiwKLSAgICAgICAgICAgIFBlcnZh
c2l2ZXMuJGF0KGRlY2xzKCJwYXJhbSIsIHBhcmFtWzBdKSwgZGVjbHMoInJlc3VsdCIsIHBhcmFt
WzFdKSkKLSAgICAgICAgICBdKTsKLX0KLQotZnVuY3Rpb24gbGltaXRzKG5hdCwgcGFyYW0pIHsK
LSAgdmFyIHhzID0gbGlzdF9vZl9vcHQocGFyYW1bLyogbWF4ICovMV0pOwotICByZXR1cm4gJCRT
dHJpbmcuY29uY2F0KCIgIiwgLyogOjogKi9bCi0gICAgICAgICAgICAgIEN1cnJ5Ll8xKG5hdCwg
cGFyYW1bLyogbWluICovMF0pLAotICAgICAgICAgICAgICBMaXN0Lm1hcChuYXQsIHhzKQotICAg
ICAgICAgICAgXSk7Ci19Ci0KLWZ1bmN0aW9uIGdsb2JhbF90eXBlKHBhcmFtKSB7Ci0gIHZhciB0
ID0gcGFyYW1bMF07Ci0gIGlmIChwYXJhbVsxXSAhPT0gMCkgewotICAgIHJldHVybiAvKiBOb2Rl
ICovQmxvY2suX18oMSwgWwotICAgICAgICAgICAgICAibXV0IiwKLSAgICAgICAgICAgICAgLyog
OjogKi9bCi0gICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBlcy5zdHJp
bmdfb2ZfdmFsdWVfdHlwZSh0KV0pLAotICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAg
ICAgICAgICBdCi0gICAgICAgICAgICBdKTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyog
QXRvbSAqL0Jsb2NrLl9fKDAsIFtUeXBlcy5zdHJpbmdfb2ZfdmFsdWVfdHlwZSh0KV0pOwotICB9
Ci19Ci0KLWZ1bmN0aW9uIHRlc3RvcChfLCBfJDEpIHsKLSAgcmV0dXJuICJlcXoiOwotfQotCi1m
dW5jdGlvbiByZWxvcChfLCBwYXJhbSkgewotICBzd2l0Y2ggKHBhcmFtKSB7Ci0gICAgY2FzZSAw
IDogCi0gICAgICAgIHJldHVybiAiZXEiOwotICAgIGNhc2UgMSA6IAotICAgICAgICByZXR1cm4g
Im5lIjsKLSAgICBjYXNlIDIgOiAKLSAgICAgICAgcmV0dXJuICJsdF9zIjsKLSAgICBjYXNlIDMg
OiAKLSAgICAgICAgcmV0dXJuICJsdF91IjsKLSAgICBjYXNlIDQgOiAKLSAgICAgICAgcmV0dXJu
ICJndF9zIjsKLSAgICBjYXNlIDUgOiAKLSAgICAgICAgcmV0dXJuICJndF91IjsKLSAgICBjYXNl
IDYgOiAKLSAgICAgICAgcmV0dXJuICJsZV9zIjsKLSAgICBjYXNlIDcgOiAKLSAgICAgICAgcmV0
dXJuICJsZV91IjsKLSAgICBjYXNlIDggOiAKLSAgICAgICAgcmV0dXJuICJnZV9zIjsKLSAgICBj
YXNlIDkgOiAKLSAgICAgICAgcmV0dXJuICJnZV91IjsKLSAgICAKLSAgfQotfQotCi1mdW5jdGlv
biB1bm9wKF8sIHBhcmFtKSB7Ci0gIHN3aXRjaCAocGFyYW0pIHsKLSAgICBjYXNlIDAgOiAKLSAg
ICAgICAgcmV0dXJuICJjbHoiOwotICAgIGNhc2UgMSA6IAotICAgICAgICByZXR1cm4gImN0eiI7
Ci0gICAgY2FzZSAyIDogCi0gICAgICAgIHJldHVybiAicG9wY250IjsKLSAgICAKLSAgfQotfQot
Ci1mdW5jdGlvbiBiaW5vcChfLCBwYXJhbSkgewotICBzd2l0Y2ggKHBhcmFtKSB7Ci0gICAgY2Fz
ZSAwIDogCi0gICAgICAgIHJldHVybiAiYWRkIjsKLSAgICBjYXNlIDEgOiAKLSAgICAgICAgcmV0
dXJuICJzdWIiOwotICAgIGNhc2UgMiA6IAotICAgICAgICByZXR1cm4gIm11bCI7Ci0gICAgY2Fz
ZSAzIDogCi0gICAgICAgIHJldHVybiAiZGl2X3MiOwotICAgIGNhc2UgNCA6IAotICAgICAgICBy
ZXR1cm4gImRpdl91IjsKLSAgICBjYXNlIDUgOiAKLSAgICAgICAgcmV0dXJuICJyZW1fcyI7Ci0g
ICAgY2FzZSA2IDogCi0gICAgICAgIHJldHVybiAicmVtX3UiOwotICAgIGNhc2UgNyA6IAotICAg
ICAgICByZXR1cm4gImFuZCI7Ci0gICAgY2FzZSA4IDogCi0gICAgICAgIHJldHVybiAib3IiOwot
ICAgIGNhc2UgOSA6IAotICAgICAgICByZXR1cm4gInhvciI7Ci0gICAgY2FzZSAxMCA6IAotICAg
ICAgICByZXR1cm4gInNobCI7Ci0gICAgY2FzZSAxMSA6IAotICAgICAgICByZXR1cm4gInNocl9z
IjsKLSAgICBjYXNlIDEyIDogCi0gICAgICAgIHJldHVybiAic2hyX3UiOwotICAgIGNhc2UgMTMg
OiAKLSAgICAgICAgcmV0dXJuICJyb3RsIjsKLSAgICBjYXNlIDE0IDogCi0gICAgICAgIHJldHVy
biAicm90ciI7Ci0gICAgCi0gIH0KLX0KLQotZnVuY3Rpb24gY3Z0b3AoeHgsIHBhcmFtKSB7Ci0g
IHN3aXRjaCAocGFyYW0pIHsKLSAgICBjYXNlIDAgOiAKLSAgICAgICAgcmV0dXJuICJleHRlbmRf
cy9pMzIiOwotICAgIGNhc2UgMSA6IAotICAgICAgICByZXR1cm4gImV4dGVuZF91L2kzMiI7Ci0g
ICAgY2FzZSAyIDogCi0gICAgICAgIHJldHVybiAid3JhcC9pNjQiOwotICAgIGNhc2UgMyA6IAot
ICAgICAgICByZXR1cm4gInRydW5jX3MvZjMyIjsKLSAgICBjYXNlIDQgOiAKLSAgICAgICAgcmV0
dXJuICJ0cnVuY191L2YzMiI7Ci0gICAgY2FzZSA1IDogCi0gICAgICAgIHJldHVybiAidHJ1bmNf
cy9mNjQiOwotICAgIGNhc2UgNiA6IAotICAgICAgICByZXR1cm4gInRydW5jX3UvZjY0IjsKLSAg
ICBjYXNlIDcgOiAKLSAgICAgICAgcmV0dXJuICJyZWludGVycHJldC9mIiArIHh4OwotICAgIAot
ICB9Ci19Ci0KLWZ1bmN0aW9uIHRlc3RvcCQxKF8sIF8kMSkgewotICB0aHJvdyBbCi0gICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICBbCi0gICAg
ICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJl
dGVyL19idWlsZC9qc2xpYi9zcmMvYXJyYW5nZS5tbCIsCi0gICAgICAgICAgMTI4LAotICAgICAg
ICAgIDI3Ci0gICAgICAgIF0KLSAgICAgIF07Ci19Ci0KLWZ1bmN0aW9uIHJlbG9wJDEoXywgcGFy
YW0pIHsKLSAgc3dpdGNoIChwYXJhbSkgewotICAgIGNhc2UgMCA6IAotICAgICAgICByZXR1cm4g
ImVxIjsKLSAgICBjYXNlIDEgOiAKLSAgICAgICAgcmV0dXJuICJuZSI7Ci0gICAgY2FzZSAyIDog
Ci0gICAgICAgIHJldHVybiAibHQiOwotICAgIGNhc2UgMyA6IAotICAgICAgICByZXR1cm4gImd0
IjsKLSAgICBjYXNlIDQgOiAKLSAgICAgICAgcmV0dXJuICJsZSI7Ci0gICAgY2FzZSA1IDogCi0g
ICAgICAgIHJldHVybiAiZ2UiOwotICAgIAotICB9Ci19Ci0KLWZ1bmN0aW9uIHVub3AkMShfLCBw
YXJhbSkgewotICBzd2l0Y2ggKHBhcmFtKSB7Ci0gICAgY2FzZSAwIDogCi0gICAgICAgIHJldHVy
biAibmVnIjsKLSAgICBjYXNlIDEgOiAKLSAgICAgICAgcmV0dXJuICJhYnMiOwotICAgIGNhc2Ug
MiA6IAotICAgICAgICByZXR1cm4gImNlaWwiOwotICAgIGNhc2UgMyA6IAotICAgICAgICByZXR1
cm4gImZsb29yIjsKLSAgICBjYXNlIDQgOiAKLSAgICAgICAgcmV0dXJuICJ0cnVuYyI7Ci0gICAg
Y2FzZSA1IDogCi0gICAgICAgIHJldHVybiAibmVhcmVzdCI7Ci0gICAgY2FzZSA2IDogCi0gICAg
ICAgIHJldHVybiAic3FydCI7Ci0gICAgCi0gIH0KLX0KLQotZnVuY3Rpb24gYmlub3AkMShfLCBw
YXJhbSkgewotICBzd2l0Y2ggKHBhcmFtKSB7Ci0gICAgY2FzZSAwIDogCi0gICAgICAgIHJldHVy
biAiYWRkIjsKLSAgICBjYXNlIDEgOiAKLSAgICAgICAgcmV0dXJuICJzdWIiOwotICAgIGNhc2Ug
MiA6IAotICAgICAgICByZXR1cm4gIm11bCI7Ci0gICAgY2FzZSAzIDogCi0gICAgICAgIHJldHVy
biAiZGl2IjsKLSAgICBjYXNlIDQgOiAKLSAgICAgICAgcmV0dXJuICJtaW4iOwotICAgIGNhc2Ug
NSA6IAotICAgICAgICByZXR1cm4gIm1heCI7Ci0gICAgY2FzZSA2IDogCi0gICAgICAgIHJldHVy
biAiY29weXNpZ24iOwotICAgIAotICB9Ci19Ci0KLWZ1bmN0aW9uIGN2dG9wJDEoeHgsIHBhcmFt
KSB7Ci0gIHN3aXRjaCAocGFyYW0pIHsKLSAgICBjYXNlIDAgOiAKLSAgICAgICAgcmV0dXJuICJj
b252ZXJ0X3MvaTMyIjsKLSAgICBjYXNlIDEgOiAKLSAgICAgICAgcmV0dXJuICJjb252ZXJ0X3Uv
aTMyIjsKLSAgICBjYXNlIDIgOiAKLSAgICAgICAgcmV0dXJuICJjb252ZXJ0X3MvaTY0IjsKLSAg
ICBjYXNlIDMgOiAKLSAgICAgICAgcmV0dXJuICJjb252ZXJ0X3UvaTY0IjsKLSAgICBjYXNlIDQg
OiAKLSAgICAgICAgcmV0dXJuICJwcm9tb3RlL2YzMiI7Ci0gICAgY2FzZSA1IDogCi0gICAgICAg
IHJldHVybiAiZGVtb3RlL2Y2NCI7Ci0gICAgY2FzZSA2IDogCi0gICAgICAgIHJldHVybiAicmVp
bnRlcnByZXQvaSIgKyB4eDsKLSAgICAKLSAgfQotfQotCi1mdW5jdGlvbiBvcGVyKHBhcmFtLCBv
cCkgewotICB2YXIgZmxvYXRvcCA9IHBhcmFtWzFdOwotICB2YXIgaW50b3AgPSBwYXJhbVswXTsK
LSAgdmFyICRqczsKLSAgc3dpdGNoIChvcC50YWcgfCAwKSB7Ci0gICAgY2FzZSAwIDogCi0gICAg
ICAgICRqcyA9IEN1cnJ5Ll8yKGludG9wLCAiMzIiLCBvcFswXSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgMSA6IAotICAgICAgICAkanMgPSBDdXJyeS5fMihpbnRvcCwgIjY0Iiwgb3BbMF0p
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDIgOiAKLSAgICAgICAgJGpzID0gQ3VycnkuXzIo
ZmxvYXRvcCwgIjMyIiwgb3BbMF0pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDMgOiAKLSAg
ICAgICAgJGpzID0gQ3VycnkuXzIoZmxvYXRvcCwgIjY0Iiwgb3BbMF0pOwotICAgICAgICBicmVh
azsKLSAgICAKLSAgfQotICByZXR1cm4gVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUoVmFsdWVz
LnR5cGVfb2Yob3ApKSArICgiLiIgKyAkanMpOwotfQotCi12YXIgcGFydGlhbF9hcmcgPSAvKiB0
dXBsZSAqL1sKLSAgdW5vcCwKLSAgdW5vcCQxCi1dOwotCi1mdW5jdGlvbiB1bm9wJDIocGFyYW0p
IHsKLSAgcmV0dXJuIG9wZXIocGFydGlhbF9hcmcsIHBhcmFtKTsKLX0KLQotdmFyIHBhcnRpYWxf
YXJnJDEgPSAvKiB0dXBsZSAqL1sKLSAgYmlub3AsCi0gIGJpbm9wJDEKLV07Ci0KLWZ1bmN0aW9u
IGJpbm9wJDIocGFyYW0pIHsKLSAgcmV0dXJuIG9wZXIocGFydGlhbF9hcmckMSwgcGFyYW0pOwot
fQotCi12YXIgcGFydGlhbF9hcmckMiA9IC8qIHR1cGxlICovWwotICB0ZXN0b3AsCi0gIHRlc3Rv
cCQxCi1dOwotCi1mdW5jdGlvbiB0ZXN0b3AkMihwYXJhbSkgewotICByZXR1cm4gb3BlcihwYXJ0
aWFsX2FyZyQyLCBwYXJhbSk7Ci19Ci0KLXZhciBwYXJ0aWFsX2FyZyQzID0gLyogdHVwbGUgKi9b
Ci0gIHJlbG9wLAotICByZWxvcCQxCi1dOwotCi1mdW5jdGlvbiByZWxvcCQyKHBhcmFtKSB7Ci0g
IHJldHVybiBvcGVyKHBhcnRpYWxfYXJnJDMsIHBhcmFtKTsKLX0KLQotdmFyIHBhcnRpYWxfYXJn
JDQgPSAvKiB0dXBsZSAqL1sKLSAgY3Z0b3AsCi0gIGN2dG9wJDEKLV07Ci0KLWZ1bmN0aW9uIGN2
dG9wJDIocGFyYW0pIHsKLSAgcmV0dXJuIG9wZXIocGFydGlhbF9hcmckNCwgcGFyYW0pOwotfQot
Ci1mdW5jdGlvbiBtZW1fc2l6ZShwYXJhbSkgewotICBzd2l0Y2ggKHBhcmFtKSB7Ci0gICAgY2Fz
ZSAwIDogCi0gICAgICAgIHJldHVybiAiOCI7Ci0gICAgY2FzZSAxIDogCi0gICAgICAgIHJldHVy
biAiMTYiOwotICAgIGNhc2UgMiA6IAotICAgICAgICByZXR1cm4gIjMyIjsKLSAgICAKLSAgfQot
fQotCi1mdW5jdGlvbiBleHRlbnNpb24ocGFyYW0pIHsKLSAgaWYgKHBhcmFtICE9PSAwKSB7Ci0g
ICAgcmV0dXJuICJfdSI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuICJfcyI7Ci0gIH0KLX0K
LQotZnVuY3Rpb24gbWVtb3AobmFtZSwgcGFyYW0pIHsKLSAgdmFyIG9mZnNldCA9IHBhcmFtWy8q
IG9mZnNldCAqLzJdOwotICB2YXIgYWxpZ24gPSBwYXJhbVsvKiBhbGlnbiAqLzFdOwotICB2YXIg
dHkgPSBwYXJhbVsvKiB0eSAqLzBdOwotICByZXR1cm4gVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5
cGUodHkpICsgKCIuIiArIChuYW1lICsgKCgKLSAgICAgICAgICAgICAgICBvZmZzZXQgPyAiIG9m
ZnNldD0iICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBvZmZzZXQpIDogIiIKLSAgICAgICAg
ICAgICAgKSArICgKLSAgICAgICAgICAgICAgICAoMSA8PCBhbGlnbikgPT09IFR5cGVzLnNpemUo
dHkpID8gIiIgOiAiIGFsaWduPSIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIEN1cnJ5Ll8x
KEkzMi5vZl9pbnRfdSwgKDEgPDwgYWxpZ24pKSkKLSAgICAgICAgICAgICAgKSkpKTsKLX0KLQot
ZnVuY3Rpb24gbG9hZG9wKG9wKSB7Ci0gIHZhciBtYXRjaCA9IG9wWy8qIHN6ICovM107Ci0gIGlm
IChtYXRjaCkgewotICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMF07Ci0gICAgcmV0dXJuIG1lbW9w
KCJsb2FkIiArIChtZW1fc2l6ZShtYXRjaCQxWzBdKSArIGV4dGVuc2lvbihtYXRjaCQxWzFdKSks
IG9wKTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gbWVtb3AoImxvYWQiLCBvcCk7Ci0gIH0K
LX0KLQotZnVuY3Rpb24gc3RvcmVvcChvcCkgewotICB2YXIgbWF0Y2ggPSBvcFsvKiBzeiAqLzNd
OwotICBpZiAobWF0Y2gpIHsKLSAgICByZXR1cm4gbWVtb3AoInN0b3JlIiArIG1lbV9zaXplKG1h
dGNoWzBdKSwgb3ApOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBtZW1vcCgic3RvcmUiLCBv
cCk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gJCR2YXIoeCkgewotICByZXR1cm4gQ3VycnkuXzEoSTMy
LnRvX3N0cmluZ191LCB4Wy8qIGl0ICovMV0pOwotfQotCi1mdW5jdGlvbiBjb25zdG9wKHYpIHsK
LSAgcmV0dXJuIFR5cGVzLnN0cmluZ19vZl92YWx1ZV90eXBlKFZhbHVlcy50eXBlX29mKHZbLyog
aXQgKi8xXSkpICsgIi5jb25zdCI7Ci19Ci0KLWZ1bmN0aW9uIGluc3RyKGUpIHsKLSAgdmFyIG1h
dGNoID0gZVsvKiBpdCAqLzFdOwotICB2YXIgbWF0Y2gkMTsKLSAgaWYgKHR5cGVvZiBtYXRjaCA9
PT0gIm51bWJlciIpIHsKLSAgICBzd2l0Y2ggKG1hdGNoKSB7Ci0gICAgICBjYXNlIDAgOiAKLSAg
ICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAidW5yZWFjaGFibGUi
LAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgXTsKLSAgICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKLSAgICAg
ICAgICAgICJub3AiLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgXTsKLSAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgMiA6IAotICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBs
ZSAqL1sKLSAgICAgICAgICAgICJyZXR1cm4iLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAg
ICAgICAgXTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMyA6IAotICAgICAgICAgIG1h
dGNoJDEgPSAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICJkcm9wIiwKLSAgICAgICAgICAgIC8q
IFtdICovMAotICAgICAgICAgIF07Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDQgOiAK
LSAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAic2VsZWN0IiwK
LSAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgIF07Ci0gICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIDUgOiAKLSAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAg
ICAgICAiY3VycmVudF9tZW1vcnkiLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAg
XTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgNiA6IAotICAgICAgICAgIG1hdGNoJDEg
PSAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICJncm93X21lbW9yeSIsCi0gICAgICAgICAgICAv
KiBbXSAqLzAKLSAgICAgICAgICBdOwotICAgICAgICAgIGJyZWFrOwotICAgICAgCi0gICAgfQot
ICB9Ci0gIGVsc2UgewotICAgIHN3aXRjaCAobWF0Y2gudGFnIHwgMCkgewotICAgICAgY2FzZSAw
IDogCi0gICAgICAgICAgdmFyIGYgPSBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgIHJl
dHVybiAvKiBBdG9tICovQmxvY2suX18oMCwgW1R5cGVzLnN0cmluZ19vZl92YWx1ZV90eXBlKHBh
cmFtKV0pOwotICAgICAgICAgIH07Ci0gICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWwot
ICAgICAgICAgICAgImJsb2NrIiwKLSAgICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFw
KGYsIG1hdGNoWzBdKSwgTGlzdC5tYXAoaW5zdHIsIG1hdGNoWzFdKSkKLSAgICAgICAgICBdOwot
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgdmFyIGYkMSA9IGZ1
bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgcmV0dXJuIC8qIEF0b20gKi9CbG9jay5fXygw
LCBbVHlwZXMuc3RyaW5nX29mX3ZhbHVlX3R5cGUocGFyYW0pXSk7Ci0gICAgICAgICAgfTsKLSAg
ICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAibG9vcCIsCi0gICAg
ICAgICAgICBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1hcChmJDEsIG1hdGNoWzBdKSwgTGlzdC5tYXAo
aW5zdHIsIG1hdGNoWzFdKSkKLSAgICAgICAgICBdOwotICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSAyIDogCi0gICAgICAgICAgdmFyIGYkMiA9IGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAg
ICAgICAgcmV0dXJuIC8qIEF0b20gKi9CbG9jay5fXygwLCBbVHlwZXMuc3RyaW5nX29mX3ZhbHVl
X3R5cGUocGFyYW0pXSk7Ci0gICAgICAgICAgfTsKLSAgICAgICAgICBtYXRjaCQxID0gLyogdHVw
bGUgKi9bCi0gICAgICAgICAgICAiaWYiLAotICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoTGlz
dC5tYXAoZiQyLCBtYXRjaFswXSksIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgLyogTm9k
ZSAqL0Jsb2NrLl9fKDEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAidGhlbiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgTGlzdC5tYXAoaW5zdHIsIG1hdGNoWzFdKQotICAgICAgICAgICAgICAg
ICAgICBdKSwKLSAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAg
ICAvKiBOb2RlICovQmxvY2suX18oMSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgImVsc2Ui
LAotICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXAoaW5zdHIsIG1hdGNoWzJdKQotICAg
ICAgICAgICAgICAgICAgICAgIF0pLAotICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAg
ICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICBdKQotICAgICAgICAgIF07Ci0gICAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDMgOiAKLSAgICAgICAgICBtYXRjaCQxID0gLyogdHVw
bGUgKi9bCi0gICAgICAgICAgICAiYnIgIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0
Y2hbMF1bLyogaXQgKi8xXSksCi0gICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICBdOwot
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgbWF0Y2gkMSA9IC8q
IHR1cGxlICovWwotICAgICAgICAgICAgImJyX2lmICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5n
X3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAg
ICAgXTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgNSA6IAotICAgICAgICAgIHZhciB4
cyA9IFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzBdLCAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICBt
YXRjaFsxXSwKLSAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgXSk7Ci0g
ICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWwotICAgICAgICAgICAgImJyX3RhYmxlICIg
KyAkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcCgkJHZhciwgeHMpKSwKLSAgICAgICAgICAg
IC8qIFtdICovMAotICAgICAgICAgIF07Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDYg
OiAKLSAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAiY2FsbCAi
ICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXRjaFswXVsvKiBpdCAqLzFdKSwKLSAgICAg
ICAgICAgIC8qIFtdICovMAotICAgICAgICAgIF07Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIDcgOiAKLSAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAi
Y2FsbF9pbmRpcmVjdCAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXRjaFswXVsvKiBp
dCAqLzFdKSwKLSAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgIF07Ci0gICAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIDggOiAKLSAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9b
Ci0gICAgICAgICAgICAiZ2V0X2xvY2FsICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1h
dGNoWzBdWy8qIGl0ICovMV0pLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgXTsK
LSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgOSA6IAotICAgICAgICAgIG1hdGNoJDEgPSAv
KiB0dXBsZSAqL1sKLSAgICAgICAgICAgICJzZXRfbG9jYWwgIiArIEN1cnJ5Ll8xKEkzMi50b19z
dHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSksCi0gICAgICAgICAgICAvKiBbXSAqLzAKLSAg
ICAgICAgICBdOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAxMCA6IAotICAgICAgICAg
IG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICJ0ZWVfbG9jYWwgIiArIEN1cnJ5
Ll8xKEkzMi50b19zdHJpbmdfdSwgbWF0Y2hbMF1bLyogaXQgKi8xXSksCi0gICAgICAgICAgICAv
KiBbXSAqLzAKLSAgICAgICAgICBdOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAxMSA6
IAotICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICJnZXRfZ2xv
YmFsICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pLAot
ICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgXTsKLSAgICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgMTIgOiAKLSAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAg
ICAgICAic2V0X2dsb2JhbCAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBtYXRjaFswXVsv
KiBpdCAqLzFdKSwKLSAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgIF07Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIDEzIDogCi0gICAgICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxl
ICovWwotICAgICAgICAgICAgbG9hZG9wKG1hdGNoWzBdKSwKLSAgICAgICAgICAgIC8qIFtdICov
MAotICAgICAgICAgIF07Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDE0IDogCi0gICAg
ICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWwotICAgICAgICAgICAgc3RvcmVvcChtYXRjaFsw
XSksCi0gICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICBdOwotICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSAxNSA6IAotICAgICAgICAgIHZhciBsaXQgPSBtYXRjaFswXTsKLSAgICAg
ICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICBjb25zdG9wKGxpdCkgKyAo
IiAiICsgVmFsdWVzLnN0cmluZ19vZl92YWx1ZShsaXRbLyogaXQgKi8xXSkpLAotICAgICAgICAg
ICAgLyogW10gKi8wCi0gICAgICAgICAgXTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
MTYgOiAKLSAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICBDdXJy
eS5fMSh0ZXN0b3AkMiwgbWF0Y2hbMF0pLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAg
ICAgXTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMTcgOiAKLSAgICAgICAgICBtYXRj
aCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICBDdXJyeS5fMShyZWxvcCQyLCBtYXRjaFsw
XSksCi0gICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICBdOwotICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSAxOCA6IAotICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKLSAg
ICAgICAgICAgIEN1cnJ5Ll8xKHVub3AkMiwgbWF0Y2hbMF0pLAotICAgICAgICAgICAgLyogW10g
Ki8wCi0gICAgICAgICAgXTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMTkgOiAKLSAg
ICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICBDdXJyeS5fMShiaW5v
cCQyLCBtYXRjaFswXSksCi0gICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICBdOwotICAg
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAyMCA6IAotICAgICAgICAgIG1hdGNoJDEgPSAvKiB0
dXBsZSAqL1sKLSAgICAgICAgICAgIEN1cnJ5Ll8xKGN2dG9wJDIsIG1hdGNoWzBdKSwKLSAgICAg
ICAgICAgIC8qIFtdICovMAotICAgICAgICAgIF07Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAK
LSAgICB9Ci0gIH0KLSAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCi0gICAgICAgICAg
ICBtYXRjaCQxWzBdLAotICAgICAgICAgICAgbWF0Y2gkMVsxXQotICAgICAgICAgIF0pOwotfQot
Ci1mdW5jdGlvbiBmdW5jX3dpdGhfbmFtZShuYW1lLCBmKSB7Ci0gIHZhciBtYXRjaCA9IGZbLyog
aXQgKi8xXTsKLSAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCi0gICAgICAgICAgICAi
ZnVuYyIgKyBuYW1lLAotICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoLyogOjogKi9bCi0gICAg
ICAgICAgICAgICAgICAvKiBOb2RlICovQmxvY2suX18oMSwgWwotICAgICAgICAgICAgICAgICAg
ICAgICJ0eXBlICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWy8qIGZ0eXBlICov
MF1bLyogaXQgKi8xXSksCi0gICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAg
ICAgICAgICAgICAgIF0pLAotICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAg
ICAgICAgXSwgUGVydmFzaXZlcy4kYXQoZGVjbHMoImxvY2FsIiwgbWF0Y2hbLyogbG9jYWxzICov
MV0pLCBMaXN0Lm1hcChpbnN0ciwgbWF0Y2hbLyogYm9keSAqLzJdKSkpCi0gICAgICAgICAgXSk7
Ci19Ci0KLWZ1bmN0aW9uIGZ1bmMoZikgewotICByZXR1cm4gZnVuY193aXRoX25hbWUoIiIsIGYp
OwotfQotCi1mdW5jdGlvbiBzdGFydCh4KSB7Ci0gIHJldHVybiAvKiBOb2RlICovQmxvY2suX18o
MSwgWwotICAgICAgICAgICAgInN0YXJ0ICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIHhb
LyogaXQgKi8xXSksCi0gICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICBdKTsKLX0KLQot
ZnVuY3Rpb24gdGFibGUob2ZmLCBpLCB0YWIpIHsKLSAgdmFyIG1hdGNoID0gdGFiWy8qIGl0ICov
MV07Ci0gIHZhciBtYXRjaCQxID0gbWF0Y2hbLyogdHR5cGUgKi8wXTsKLSAgcmV0dXJuIC8qIE5v
ZGUgKi9CbG9jay5fXygxLCBbCi0gICAgICAgICAgICAidGFibGUgJCIgKyAoQ3VycnkuXzEoSTMy
LnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIG9mZiArIGkgfCAwKSkgKyAoIiAi
ICsgbGltaXRzKEkzMi50b19zdHJpbmdfdSwgbWF0Y2gkMVswXSkpKSwKLSAgICAgICAgICAgIC8q
IDo6ICovWwotICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW1R5cGVzLnN0cmlu
Z19vZl9lbGVtX3R5cGUobWF0Y2gkMVsxXSldKSwKLSAgICAgICAgICAgICAgLyogW10gKi8wCi0g
ICAgICAgICAgICBdCi0gICAgICAgICAgXSk7Ci19Ci0KLWZ1bmN0aW9uIG1lbW9yeShvZmYsIGks
IG1lbSkgewotICB2YXIgbWF0Y2ggPSBtZW1bLyogaXQgKi8xXTsKLSAgcmV0dXJuIC8qIE5vZGUg
Ki9CbG9jay5fXygxLCBbCi0gICAgICAgICAgICAibWVtb3J5ICQiICsgKEN1cnJ5Ll8xKEkzMi50
b19zdHJpbmdfdSwgQ3VycnkuXzEoSTMyLm9mX2ludF91LCBvZmYgKyBpIHwgMCkpICsgKCIgIiAr
IGxpbWl0cyhJMzIudG9fc3RyaW5nX3UsIG1hdGNoWy8qIG10eXBlICovMF1bMF0pKSksCi0gICAg
ICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICBdKTsKLX0KLQotZnVuY3Rpb24gc2VnbWVudCho
ZWFkLCBkYXQsIHNlZykgewotICB2YXIgbWF0Y2ggPSBzZWdbLyogaXQgKi8xXTsKLSAgcmV0dXJu
IC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCi0gICAgICAgICAgICBoZWFkLAotICAgICAgICAgICAg
LyogOjogKi9bCi0gICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbQ3VycnkuXzEo
STMyLnRvX3N0cmluZ191LCBtYXRjaFsvKiBpbmRleCAqLzBdWy8qIGl0ICovMV0pXSksCi0gICAg
ICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgIC8qIE5vZGUgKi9CbG9jay5fXygx
LCBbCi0gICAgICAgICAgICAgICAgICAgICJvZmZzZXQiLAotICAgICAgICAgICAgICAgICAgICBM
aXN0Lm1hcChpbnN0ciwgbWF0Y2hbLyogb2Zmc2V0ICovMV1bLyogaXQgKi8xXSkKLSAgICAgICAg
ICAgICAgICAgIF0pLAotICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGRhdCwgbWF0Y2hbLyogaW5p
dCAqLzJdKQotICAgICAgICAgICAgICBdCi0gICAgICAgICAgICBdCi0gICAgICAgICAgXSk7Ci19
Ci0KLWZ1bmN0aW9uIGVsZW1zKHNlZykgewotICByZXR1cm4gc2VnbWVudCgiZWxlbSIsIGZ1bmN0
aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICByZXR1cm4gTGlzdC5tYXAoZnVuY3Rpb24gKHBh
cmFtKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBBdG9tICovQmxvY2su
X18oMCwgW0N1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgcGFyYW1bLyogaXQgKi8xXSldKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKLSAgICAgICAgICAgIH0sIHNlZyk7Ci19
Ci0KLWZ1bmN0aW9uIGRhdGEoc2VnKSB7Ci0gIHJldHVybiBzZWdtZW50KCJkYXRhIiwgYnJlYWtf
Ynl0ZXMsIHNlZyk7Ci19Ci0KLWZ1bmN0aW9uIHR5cGVkZWYoaSwgdCkgewotICByZXR1cm4gLyog
Tm9kZSAqL0Jsb2NrLl9fKDEsIFsKLSAgICAgICAgICAgICJ0eXBlICQiICsgQ3VycnkuXzEoSTMy
LnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIGkpKSwKLSAgICAgICAgICAgIC8q
IDo6ICovWwotICAgICAgICAgICAgICBmdW5jX3R5cGUodCksCi0gICAgICAgICAgICAgIC8qIFtd
ICovMAotICAgICAgICAgICAgXQotICAgICAgICAgIF0pOwotfQotCi1mdW5jdGlvbiBpbXBvcnRf
a2luZChpLCBrKSB7Ci0gIHZhciBtYXRjaCA9IGtbLyogaXQgKi8xXTsKLSAgc3dpdGNoIChtYXRj
aC50YWcgfCAwKSB7Ci0gICAgY2FzZSAwIDogCi0gICAgICAgIHJldHVybiAvKiBOb2RlICovQmxv
Y2suX18oMSwgWwotICAgICAgICAgICAgICAgICAgImZ1bmMgJCIgKyBDdXJyeS5fMShJMzIudG9f
c3RyaW5nX3UsIEN1cnJ5Ll8xKEkzMi5vZl9pbnRfdSwgaSkpLAotICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAidHlwZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAs
IFtDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWzBdWy8qIGl0ICovMV0pXSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICAgICAg
XQotICAgICAgICAgICAgICAgICAgICAgIF0pLAotICAgICAgICAgICAgICAgICAgICAvKiBbXSAq
LzAKLSAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICBdKTsKLSAgICBjYXNlIDEg
OiAKLSAgICAgICAgcmV0dXJuIHRhYmxlKDAsIGksIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICov
Wy8qIHR0eXBlICovbWF0Y2hbMF1dLCBrWy8qIGF0ICovMF0pKTsKLSAgICBjYXNlIDIgOiAKLSAg
ICAgICAgcmV0dXJuIG1lbW9yeSgwLCBpLCBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1svKiBt
dHlwZSAqL21hdGNoWzBdXSwga1svKiBhdCAqLzBdKSk7Ci0gICAgY2FzZSAzIDogCi0gICAgICAg
IHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWwotICAgICAgICAgICAgICAgICAgImdsb2Jh
bCAkIiArIEN1cnJ5Ll8xKEkzMi50b19zdHJpbmdfdSwgQ3VycnkuXzEoSTMyLm9mX2ludF91LCBp
KSksCi0gICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsX3R5cGUobWF0Y2hbMF0pLAotICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAg
ICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICBdKTsKLSAgICAKLSAgfQotfQotCi1mdW5j
dGlvbiAkJGltcG9ydChpLCBpbSkgewotICB2YXIgbWF0Y2ggPSBpbVsvKiBpdCAqLzFdOwotICBy
ZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKLSAgICAgICAgICAgICJpbXBvcnQiLAotICAg
ICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBb
c3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoWy8qIG1vZHVsZV9uYW1lICovMF0pXSksCi0gICAg
ICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygw
LCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoWy8qIGl0ZW1fbmFtZSAqLzFdKV0pLAotICAg
ICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgaW1wb3J0X2tpbmQoaSwg
bWF0Y2hbLyogaWtpbmQgKi8yXSksCi0gICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAg
ICAgICAgICAgICBdCi0gICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIF0KLSAgICAgICAgICBd
KTsKLX0KLQotZnVuY3Rpb24gZXhwb3J0X2tpbmQoaykgewotICB2YXIgbWF0Y2ggPSBrWy8qIGl0
ICovMV07Ci0gIHN3aXRjaCAobWF0Y2gpIHsKLSAgICBjYXNlIDAgOiAKLSAgICAgICAgcmV0dXJu
ICJmdW5jIjsKLSAgICBjYXNlIDEgOiAKLSAgICAgICAgcmV0dXJuICJ0YWJsZSI7Ci0gICAgY2Fz
ZSAyIDogCi0gICAgICAgIHJldHVybiAibWVtb3J5IjsKLSAgICBjYXNlIDMgOiAKLSAgICAgICAg
cmV0dXJuICJnbG9iYWwiOwotICAgIAotICB9Ci19Ci0KLWZ1bmN0aW9uICQkZXhwb3J0KGV4KSB7
Ci0gIHZhciBtYXRjaCA9IGV4Wy8qIGl0ICovMV07Ci0gIHJldHVybiAvKiBOb2RlICovQmxvY2su
X18oMSwgWwotICAgICAgICAgICAgImV4cG9ydCIsCi0gICAgICAgICAgICAvKiA6OiAqL1sKLSAg
ICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0aChhZGRfY2hhciwg
bWF0Y2hbLyogbmFtZSAqLzBdKV0pLAotICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAg
ICAgICAgICAvKiBOb2RlICovQmxvY2suX18oMSwgWwotICAgICAgICAgICAgICAgICAgICBleHBv
cnRfa2luZChtYXRjaFsvKiBla2luZCAqLzFdKSwKLSAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCi0gICAgICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtDdXJyeS5f
MShJMzIudG9fc3RyaW5nX3UsIG1hdGNoWy8qIGl0ZW0gKi8yXVsvKiBpdCAqLzFdKV0pLAotICAg
ICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICBdCi0gICAg
ICAgICAgICAgICAgICBdKSwKLSAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAg
ICAgXQotICAgICAgICAgICAgXQotICAgICAgICAgIF0pOwotfQotCi1mdW5jdGlvbiB2YXJfb3B0
KHBhcmFtKSB7Ci0gIGlmIChwYXJhbSkgewotICAgIHJldHVybiAiICIgKyBwYXJhbVswXVsvKiBp
dCAqLzFdOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAiIjsKLSAgfQotfQotCi1mdW5jdGlv
biBpc19mdW5jX2ltcG9ydChpbSkgewotICB2YXIgbWF0Y2ggPSBpbVsvKiBpdCAqLzFdWy8qIGlr
aW5kICovMl1bLyogaXQgKi8xXTsKLSAgaWYgKG1hdGNoLnRhZykgewotICAgIHJldHVybiAvKiBm
YWxzZSAqLzA7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIHRydWUgKi8xOwotICB9Ci19
Ci0KLWZ1bmN0aW9uIGlzX3RhYmxlX2ltcG9ydChpbSkgewotICB2YXIgbWF0Y2ggPSBpbVsvKiBp
dCAqLzFdWy8qIGlraW5kICovMl1bLyogaXQgKi8xXTsKLSAgaWYgKG1hdGNoLnRhZyA9PT0gMSkg
ewotICAgIHJldHVybiAvKiB0cnVlICovMTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyog
ZmFsc2UgKi8wOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGlzX21lbW9yeV9pbXBvcnQoaW0pIHsKLSAg
dmFyIG1hdGNoID0gaW1bLyogaXQgKi8xXVsvKiBpa2luZCAqLzJdWy8qIGl0ICovMV07Ci0gIGlm
IChtYXRjaC50YWcgPT09IDIpIHsKLSAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gIH0KLSAgZWxz
ZSB7Ci0gICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgfQotfQotCi1mdW5jdGlvbiBpc19nbG9i
YWxfaW1wb3J0KGltKSB7Ci0gIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV1bLyogaWtpbmQgKi8y
XVsvKiBpdCAqLzFdOwotICBpZiAobWF0Y2gudGFnID09PSAzKSB7Ci0gICAgcmV0dXJuIC8qIHRy
dWUgKi8xOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAvKiBmYWxzZSAqLzA7Ci0gIH0KLX0K
LQotZnVuY3Rpb24gbW9kdWxlX3dpdGhfdmFyX29wdCh4X29wdCwgbSkgewotICB2YXIgZnVuY19p
bXBvcnRzID0gTGlzdC5maWx0ZXIoaXNfZnVuY19pbXBvcnQpKG1bLyogaXQgKi8xXVsvKiBpbXBv
cnRzICovOF0pOwotICB2YXIgdGFibGVfaW1wb3J0cyA9IExpc3QuZmlsdGVyKGlzX3RhYmxlX2lt
cG9ydCkobVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84XSk7Ci0gIHZhciBtZW1vcnlfaW1wb3J0
cyA9IExpc3QuZmlsdGVyKGlzX21lbW9yeV9pbXBvcnQpKG1bLyogaXQgKi8xXVsvKiBpbXBvcnRz
ICovOF0pOwotICB2YXIgZ2xvYmFsX2ltcG9ydHMgPSBMaXN0LmZpbHRlcihpc19nbG9iYWxfaW1w
b3J0KShtWy8qIGl0ICovMV1bLyogaW1wb3J0cyAqLzhdKTsKLSAgdmFyIHBhcnRpYWxfYXJnID0g
TGlzdC5sZW5ndGgodGFibGVfaW1wb3J0cyk7Ci0gIHZhciBmID0gZnVuY3Rpb24gKHBhcmFtLCBw
YXJhbSQxKSB7Ci0gICAgcmV0dXJuIHRhYmxlKHBhcnRpYWxfYXJnLCBwYXJhbSwgcGFyYW0kMSk7
Ci0gIH07Ci0gIHZhciBwYXJ0aWFsX2FyZyQxID0gTGlzdC5sZW5ndGgobWVtb3J5X2ltcG9ydHMp
OwotICB2YXIgZiQxID0gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxKSB7Ci0gICAgcmV0dXJuIG1l
bW9yeShwYXJ0aWFsX2FyZyQxLCBwYXJhbSwgcGFyYW0kMSk7Ci0gIH07Ci0gIHZhciBwYXJ0aWFs
X2FyZyQyID0gTGlzdC5sZW5ndGgoZ2xvYmFsX2ltcG9ydHMpOwotICB2YXIgZiQyID0gZnVuY3Rp
b24gKHBhcmFtLCBwYXJhbSQxKSB7Ci0gICAgdmFyIG9mZiA9IHBhcnRpYWxfYXJnJDI7Ci0gICAg
dmFyIGkgPSBwYXJhbTsKLSAgICB2YXIgZyA9IHBhcmFtJDE7Ci0gICAgdmFyIG1hdGNoID0gZ1sv
KiBpdCAqLzFdOwotICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWwotICAgICAgICAg
ICAgICAiZ2xvYmFsICQiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIu
b2ZfaW50X3UsIG9mZiArIGkgfCAwKSksCi0gICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAg
ICAgICAgICAgIGdsb2JhbF90eXBlKG1hdGNoWy8qIGd0eXBlICovMF0pLAotICAgICAgICAgICAg
ICAgIExpc3QubWFwKGluc3RyLCBtYXRjaFsvKiB2YWx1ZSAqLzFdWy8qIGl0ICovMV0pCi0gICAg
ICAgICAgICAgIF0KLSAgICAgICAgICAgIF0pOwotICB9OwotICB2YXIgcGFydGlhbF9hcmckMyA9
IExpc3QubGVuZ3RoKGZ1bmNfaW1wb3J0cyk7Ci0gIHZhciBmJDMgPSBmdW5jdGlvbiAocGFyYW0s
IHBhcmFtJDEpIHsKLSAgICB2YXIgb2ZmID0gcGFydGlhbF9hcmckMzsKLSAgICB2YXIgaSA9IHBh
cmFtOwotICAgIHZhciBmJDQgPSBwYXJhbSQxOwotICAgIHJldHVybiBmdW5jX3dpdGhfbmFtZSgi
ICQiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ191LCBDdXJyeS5fMShJMzIub2ZfaW50X3UsIG9m
ZiArIGkgfCAwKSksIGYkNCk7Ci0gIH07Ci0gIHZhciB4cyA9IGxpc3Rfb2Zfb3B0KG1bLyogaXQg
Ki8xXVsvKiBzdGFydCAqLzVdKTsKLSAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCi0g
ICAgICAgICAgICAibW9kdWxlIiArIHZhcl9vcHQoeF9vcHQpLAotICAgICAgICAgICAgUGVydmFz
aXZlcy4kYXQoTGlzdC5tYXBpKHR5cGVkZWYsIG1bLyogaXQgKi8xXVsvKiB0eXBlcyAqLzBdKSwg
UGVydmFzaXZlcy4kYXQoTGlzdC5tYXBpKCQkaW1wb3J0LCB0YWJsZV9pbXBvcnRzKSwgUGVydmFz
aXZlcy4kYXQoTGlzdC5tYXBpKCQkaW1wb3J0LCBtZW1vcnlfaW1wb3J0cyksIFBlcnZhc2l2ZXMu
JGF0KExpc3QubWFwaSgkJGltcG9ydCwgZ2xvYmFsX2ltcG9ydHMpLCBQZXJ2YXNpdmVzLiRhdChM
aXN0Lm1hcGkoJCRpbXBvcnQsIGZ1bmNfaW1wb3J0cyksIFBlcnZhc2l2ZXMuJGF0KExpc3QubWFw
aShmLCBtWy8qIGl0ICovMV1bLyogdGFibGVzICovMl0pLCBQZXJ2YXNpdmVzLiRhdChMaXN0Lm1h
cGkoZiQxLCBtWy8qIGl0ICovMV1bLyogbWVtb3JpZXMgKi8zXSksIFBlcnZhc2l2ZXMuJGF0KExp
c3QubWFwaShmJDIsIG1bLyogaXQgKi8xXVsvKiBnbG9iYWxzICovMV0pLCBQZXJ2YXNpdmVzLiRh
dChMaXN0Lm1hcGkoZiQzLCBtWy8qIGl0ICovMV1bLyogZnVuY3MgKi80XSksIFBlcnZhc2l2ZXMu
JGF0KExpc3QubWFwKCQkZXhwb3J0LCBtWy8qIGl0ICovMV1bLyogZXhwb3J0cyAqLzldKSwgUGVy
dmFzaXZlcy4kYXQoTGlzdC5tYXAoc3RhcnQsIHhzKSwgUGVydmFzaXZlcy4kYXQoTGlzdC5tYXAo
ZWxlbXMsIG1bLyogaXQgKi8xXVsvKiBlbGVtcyAqLzZdKSwgTGlzdC5tYXAoZGF0YSwgbVsvKiBp
dCAqLzFdWy8qIGRhdGEgKi83XSkpKSkpKSkpKSkpKSkKLSAgICAgICAgICBdKTsKLX0KLQotZnVu
Y3Rpb24gbW9kdWxlXyhwYXJhbSkgewotICByZXR1cm4gbW9kdWxlX3dpdGhfdmFyX29wdCgvKiBO
b25lICovMCwgcGFyYW0pOwotfQotCi1mdW5jdGlvbiBsaXRlcmFsKGxpdCkgewotICB2YXIgbWF0
Y2ggPSBsaXRbLyogaXQgKi8xXTsKLSAgc3dpdGNoIChtYXRjaC50YWcgfCAwKSB7Ci0gICAgY2Fz
ZSAwIDogCi0gICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWwotICAgICAgICAg
ICAgICAgICAgImkzMi5jb25zdCAiICsgQ3VycnkuXzEoSTMyLnRvX3N0cmluZ19zLCBtYXRjaFsw
XSksCi0gICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICBdKTsKLSAg
ICBjYXNlIDEgOiAKLSAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCi0gICAg
ICAgICAgICAgICAgICAiaTY0LmNvbnN0ICIgKyBDdXJyeS5fMShJNjQudG9fc3RyaW5nX3MsIG1h
dGNoWzBdKSwKLSAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgIF0p
OwotICAgIGNhc2UgMiA6IAotICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsK
LSAgICAgICAgICAgICAgICAgICJmMzIuY29uc3QgIiArIEN1cnJ5Ll8xKEYzMi50b19zdHJpbmcs
IG1hdGNoWzBdKSwKLSAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAg
IF0pOwotICAgIGNhc2UgMyA6IAotICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEs
IFsKLSAgICAgICAgICAgICAgICAgICJmNjQuY29uc3QgIiArIEN1cnJ5Ll8xKEY2NC50b19zdHJp
bmcsIG1hdGNoWzBdKSwKLSAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAg
ICAgIF0pOwotICAgIAotICB9Ci19Ci0KLWZ1bmN0aW9uIGRlZmluaXRpb24obW9kZSwgeF9vcHQs
IGRlZikgewotICB2YXIgbWF0Y2ggPSBkZWZbLyogaXQgKi8xXTsKLSAgdmFyIGV4aXQgPSAwOwot
ICBleGl0ID0gbW9kZSAhPT0gNTY0MTQ2MjA5ICYmICEobW9kZSA+PSA5ODMxNjcwODkgJiYgbWF0
Y2gudGFnKSA/IDEgOiAyOwotICBzd2l0Y2ggKGV4aXQpIHsKLSAgICBjYXNlIDEgOiAKLSAgICAg
ICAgdmFyIG1hdGNoJDEgPSBkZWZbLyogaXQgKi8xXTsKLSAgICAgICAgdmFyIG07Ci0gICAgICAg
IG0gPSBtYXRjaCQxLnRhZyA/IERlY29kZS5kZWNvZGUoIiIsIG1hdGNoJDFbMV0pIDogbWF0Y2gk
MVswXTsKLSAgICAgICAgcmV0dXJuIG1vZHVsZV93aXRoX3Zhcl9vcHQoeF9vcHQsIG0pOwotICAg
IGNhc2UgMiA6IAotICAgICAgICB2YXIgbWF0Y2gkMiA9IGRlZlsvKiBpdCAqLzFdOwotICAgICAg
ICB2YXIgYnM7Ci0gICAgICAgIGJzID0gbWF0Y2gkMi50YWcgPyBtYXRjaCQyWzFdIDogRW5jb2Rl
LmVuY29kZShtYXRjaCQyWzBdKTsKLSAgICAgICAgdmFyIHhfb3B0JDEgPSB4X29wdDsKLSAgICAg
ICAgdmFyIGJzJDEgPSBiczsKLSAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBb
Ci0gICAgICAgICAgICAgICAgICAibW9kdWxlIiArIHZhcl9vcHQoeF9vcHQkMSksCi0gICAgICAg
ICAgICAgICAgICBicmVha19ieXRlcyhicyQxKQotICAgICAgICAgICAgICAgIF0pOwotICAgIAot
ICB9Ci19Ci0KLWZ1bmN0aW9uIGFjY2Vzcyh4X29wdCwgbmFtZSkgewotICByZXR1cm4gJCRTdHJp
bmcuY29uY2F0KCIgIiwgLyogOjogKi9bCi0gICAgICAgICAgICAgIHZhcl9vcHQoeF9vcHQpLAot
ICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICBzdHJpbmdfd2l0aChhZGRf
Y2hhciwgbmFtZSksCi0gICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgIF0K
LSAgICAgICAgICAgIF0pOwotfQotCi1mdW5jdGlvbiBhY3Rpb24oYWN0KSB7Ci0gIHZhciBtYXRj
aCA9IGFjdFsvKiBpdCAqLzFdOwotICBpZiAobWF0Y2gudGFnKSB7Ci0gICAgcmV0dXJuIC8qIE5v
ZGUgKi9CbG9jay5fXygxLCBbCi0gICAgICAgICAgICAgICJnZXQiICsgYWNjZXNzKG1hdGNoWzBd
LCBtYXRjaFsxXSksCi0gICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgXSk7Ci0g
IH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCi0gICAgICAg
ICAgICAgICJpbnZva2UiICsgYWNjZXNzKG1hdGNoWzBdLCBtYXRjaFsxXSksCi0gICAgICAgICAg
ICAgIExpc3QubWFwKGxpdGVyYWwsIG1hdGNoWzJdKQotICAgICAgICAgICAgXSk7Ci0gIH0KLX0K
LQotZnVuY3Rpb24gc2NyaXB0KG1vZGUsIHNjcikgewotICByZXR1cm4gTGlzdC5tYXAoZnVuY3Rp
b24gKHBhcmFtKSB7Ci0gICAgICAgICAgICAgIHZhciBtb2RlJDEgPSBtb2RlOwotICAgICAgICAg
ICAgICB2YXIgY21kID0gcGFyYW07Ci0gICAgICAgICAgICAgIHZhciBtYXRjaCA9IGNtZFsvKiBp
dCAqLzFdOwotICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoLnRhZyB8IDApIHsKLSAgICAgICAg
ICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlZmluaXRpb24o
bW9kZSQxLCBtYXRjaFswXSwgbWF0Y2hbMV0pOwotICAgICAgICAgICAgICAgIGNhc2UgMSA6IAot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpc3RlciAiICsgKHN0cmluZ193aXRoKGFkZF9j
aGFyLCBtYXRjaFswXSkgKyB2YXJfb3B0KG1hdGNoWzFdKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKLSAg
ICAgICAgICAgICAgICBjYXNlIDIgOiAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlv
bihtYXRjaFswXSk7Ci0gICAgICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICAgICAg
ICAgIHZhciBtb2RlJDIgPSBtb2RlJDE7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBhc3MgPSBt
YXRjaFswXTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSBhc3NbLyogaXQgKi8x
XTsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQxLnRhZyB8IDApIHsKLSAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiYXNzZXJ0X21hbGZvcm1lZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmaW5pdGlvbigvKiBPcmlnaW5hbCAqLzk4MzE2NzA4OSwgLyogTm9uZSAqLzAsIG1hdGNoJDFb
MF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18o
MCwgW3N0cmluZ193aXRoKGFkZF9jaGFyLCBtYXRjaCQxWzFdKV0pLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBOb2Rl
ICovQmxvY2suX18oMSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFz
c2VydF9pbnZhbGlkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6
ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uKG1v
ZGUkMiwgLyogTm9uZSAqLzAsIG1hdGNoJDFbMF0pLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRoKGFkZF9jaGFyLCBtYXRj
aCQxWzFdKV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtd
ICovMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBOb2RlICovQmxvY2suX18oMSwgWwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImFzc2VydF9zb2Z0X2ludmFsaWQiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb24obW9kZSQyLCAvKiBOb25lICovMCwgbWF0Y2gk
MVswXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5f
XygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDMgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5v
ZGUgKi9CbG9jay5fXygxLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
YXNzZXJ0X3VubGlua2FibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRp
b24obW9kZSQyLCAvKiBOb25lICovMCwgbWF0Y2gkMVswXSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygwLCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIs
IG1hdGNoJDFbMV0pXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3RyYXAiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmluaXRpb24obW9kZSQyLCAvKiBOb25lICovMCwgbWF0Y2gkMVsw
XSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF0b20gKi9CbG9jay5fXygw
LCBbc3RyaW5nX3dpdGgoYWRkX2NoYXIsIG1hdGNoJDFbMV0pXSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDUgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUg
Ki9CbG9jay5fXygxLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNz
ZXJ0X3JldHVybiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKG1hdGNoJDFb
MF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcChsaXRl
cmFsLCBtYXRjaCQxWzFdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgNiA6IAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAq
L0Jsb2NrLl9fKDEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3Nl
cnRfcmV0dXJuX25hbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6
OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKG1hdGNo
JDFbMF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5vZGUgKi9CbG9jay5fXygxLCBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0X3RyYXAiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbihtYXRjaCQxWzBdKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogQXRvbSAqL0Jsb2NrLl9fKDAsIFtzdHJpbmdfd2l0aChhZGRf
Y2hhciwgbWF0Y2gkMVsxXSldKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOCA6IAotICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogTm9kZSAqL0Jsb2NrLl9fKDEsIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NlcnRfZXhoYXVzdGlvbiIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKG1hdGNoJDFbMF0pLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBBdG9tICovQmxvY2suX18oMCwgW3N0cmluZ193aXRo
KGFkZF9jaGFyLCBtYXRjaCQxWzFdKV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIDQgOiAKLSAgICAgICAgICAgICAg
ICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJn
L3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2FycmFuZ2UubWwiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDQzNSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxNAotICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAg
ICBdOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LCBz
Y3IpOwotfQotCi1leHBvcnRzLmluc3RyICAgPSBpbnN0cjsKLWV4cG9ydHMuZnVuYyAgICA9IGZ1
bmM7Ci1leHBvcnRzLm1vZHVsZV8gPSBtb2R1bGVfOwotZXhwb3J0cy5zY3JpcHQgID0gc2NyaXB0
OwotLyogRjMyIE5vdCBhIHB1cmUgbW9kdWxlICovCi0vLy8vLy8vLyBlbmQgb2YgYXJyYW5nZS5q
cyAvLy8vLy8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5Wydh
cnJheSddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8vLy8vLy8vIHN0
YXJ0IG9mIGFycmF5LmpzIC8vLy8vLy8vCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBDdXJyeSAgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKLXZhciBDYW1sX2FycmF5ICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9hcnJheSIpOwotdmFyIENhbWxfZXhjZXB0aW9ucyAg
ICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2V4Y2VwdGlvbnMiKTsKLXZhciBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKLQotZnVu
Y3Rpb24gaW5pdChsLCBmKSB7Ci0gIGlmIChsKSB7Ci0gICAgaWYgKGwgPCAwKSB7Ci0gICAgICB0
aHJvdyBbCi0gICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAotICAgICAgICAgICAgIkFycmF5LmluaXQiCi0gICAgICAgICAgXTsKLSAgICB9Ci0gICAg
ZWxzZSB7Ci0gICAgICB2YXIgcmVzID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChsLCBDdXJy
eS5fMShmLCAwKSk7Ci0gICAgICBmb3IodmFyIGkgPSAxICxpX2ZpbmlzaCA9IGwgLSAxIHwgMDsg
aSA8PSBpX2ZpbmlzaDsgKytpKXsKLSAgICAgICAgcmVzW2ldID0gQ3VycnkuXzEoZiwgaSk7Ci0g
ICAgICB9Ci0gICAgICByZXR1cm4gcmVzOwotICAgIH0KLSAgfQotICBlbHNlIHsKLSAgICByZXR1
cm4gLyogYXJyYXkgKi9bXTsKLSAgfQotfQotCi1mdW5jdGlvbiBtYWtlX21hdHJpeChzeCwgc3ks
IGluaXQpIHsKLSAgdmFyIHJlcyA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3Qoc3gsIC8qIGFy
cmF5ICovW10pOwotICBmb3IodmFyIHggPSAwICx4X2ZpbmlzaCA9IHN4IC0gMSB8IDA7IHggPD0g
eF9maW5pc2g7ICsreCl7Ci0gICAgcmVzW3hdID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChz
eSwgaW5pdCk7Ci0gIH0KLSAgcmV0dXJuIHJlczsKLX0KLQotZnVuY3Rpb24gY29weShhKSB7Ci0g
IHZhciBsID0gYS5sZW5ndGg7Ci0gIGlmIChsKSB7Ci0gICAgcmV0dXJuIENhbWxfYXJyYXkuY2Ft
bF9hcnJheV9zdWIoYSwgMCwgbCk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIGFycmF5
ICovW107Ci0gIH0KLX0KLQotZnVuY3Rpb24gYXBwZW5kKGExLCBhMikgewotICB2YXIgbDEgPSBh
MS5sZW5ndGg7Ci0gIGlmIChsMSkgewotICAgIGlmIChhMi5sZW5ndGgpIHsKLSAgICAgIHJldHVy
biBhMS5jb25jYXQoYTIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBDYW1sX2Fy
cmF5LmNhbWxfYXJyYXlfc3ViKGExLCAwLCBsMSk7Ci0gICAgfQotICB9Ci0gIGVsc2UgewotICAg
IHJldHVybiBjb3B5KGEyKTsKLSAgfQotfQotCi1mdW5jdGlvbiBzdWIoYSwgb2ZzLCBsZW4pIHsK
LSAgaWYgKGxlbiA8IDAgfHwgb2ZzID4gKGEubGVuZ3RoIC0gbGVuIHwgMCkpIHsKLSAgICB0aHJv
dyBbCi0gICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwK
LSAgICAgICAgICAiQXJyYXkuc3ViIgotICAgICAgICBdOwotICB9Ci0gIGVsc2UgewotICAgIHJl
dHVybiBDYW1sX2FycmF5LmNhbWxfYXJyYXlfc3ViKGEsIG9mcywgbGVuKTsKLSAgfQotfQotCi1m
dW5jdGlvbiBmaWxsKGEsIG9mcywgbGVuLCB2KSB7Ci0gIGlmIChvZnMgPCAwIHx8IGxlbiA8IDAg
fHwgb2ZzID4gKGEubGVuZ3RoIC0gbGVuIHwgMCkpIHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAiQXJy
YXkuZmlsbCIKLSAgICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICBmb3IodmFyIGkgPSBvZnMg
LGlfZmluaXNoID0gKG9mcyArIGxlbiB8IDApIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7
Ci0gICAgICBhW2ldID0gdjsKLSAgICB9Ci0gICAgcmV0dXJuIC8qICgpICovMDsKLSAgfQotfQot
Ci1mdW5jdGlvbiBibGl0KGExLCBvZnMxLCBhMiwgb2ZzMiwgbGVuKSB7Ci0gIGlmIChsZW4gPCAw
IHx8IG9mczEgPCAwIHx8IG9mczEgPiAoYTEubGVuZ3RoIC0gbGVuIHwgMCkgfHwgb2ZzMiA8IDAg
fHwgb2ZzMiA+IChhMi5sZW5ndGggLSBsZW4gfCAwKSkgewotICAgIHRocm93IFsKLSAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAotICAgICAgICAgICJB
cnJheS5ibGl0IgotICAgICAgICBdOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBDYW1sX2Fy
cmF5LmNhbWxfYXJyYXlfYmxpdChhMSwgb2ZzMSwgYTIsIG9mczIsIGxlbik7Ci0gIH0KLX0KLQot
ZnVuY3Rpb24gaXRlcihmLCBhKSB7Ci0gIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gYS5sZW5n
dGggLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKLSAgICBDdXJyeS5fMShmLCBhW2ldKTsK
LSAgfQotICByZXR1cm4gLyogKCkgKi8wOwotfQotCi1mdW5jdGlvbiBtYXAoZiwgYSkgewotICB2
YXIgbCA9IGEubGVuZ3RoOwotICBpZiAobCkgewotICAgIHZhciByID0gQ2FtbF9hcnJheS5jYW1s
X21ha2VfdmVjdChsLCBDdXJyeS5fMShmLCBhWzBdKSk7Ci0gICAgZm9yKHZhciBpID0gMSAsaV9m
aW5pc2ggPSBsIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7Ci0gICAgICByW2ldID0gQ3Vy
cnkuXzEoZiwgYVtpXSk7Ci0gICAgfQotICAgIHJldHVybiByOwotICB9Ci0gIGVsc2UgewotICAg
IHJldHVybiAvKiBhcnJheSAqL1tdOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJpKGYsIGEpIHsK
LSAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBhLmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlfZmlu
aXNoOyArK2kpewotICAgIEN1cnJ5Ll8yKGYsIGksIGFbaV0pOwotICB9Ci0gIHJldHVybiAvKiAo
KSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIG1hcGkoZiwgYSkgewotICB2YXIgbCA9IGEubGVuZ3RoOwot
ICBpZiAobCkgewotICAgIHZhciByID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChsLCBDdXJy
eS5fMihmLCAwLCBhWzBdKSk7Ci0gICAgZm9yKHZhciBpID0gMSAsaV9maW5pc2ggPSBsIC0gMSB8
IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7Ci0gICAgICByW2ldID0gQ3VycnkuXzIoZiwgaSwgYVtp
XSk7Ci0gICAgfQotICAgIHJldHVybiByOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAvKiBh
cnJheSAqL1tdOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHRvX2xpc3QoYSkgewotICB2YXIgX2kgPSBh
Lmxlbmd0aCAtIDEgfCAwOwotICB2YXIgX3JlcyA9IC8qIFtdICovMDsKLSAgd2hpbGUodHJ1ZSkg
ewotICAgIHZhciByZXMgPSBfcmVzOwotICAgIHZhciBpID0gX2k7Ci0gICAgaWYgKGkgPCAwKSB7
Ci0gICAgICByZXR1cm4gcmVzOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIF9yZXMgPSAvKiA6
OiAqL1sKLSAgICAgICAgYVtpXSwKLSAgICAgICAgcmVzCi0gICAgICBdOwotICAgICAgX2kgPSBp
IC0gMSB8IDA7Ci0gICAgICBjb250aW51ZSA7Ci0gICAgICAKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1
bmN0aW9uIGxpc3RfbGVuZ3RoKF9hY2N1LCBfcGFyYW0pIHsKLSAgd2hpbGUodHJ1ZSkgewotICAg
IHZhciBwYXJhbSA9IF9wYXJhbTsKLSAgICB2YXIgYWNjdSA9IF9hY2N1OwotICAgIGlmIChwYXJh
bSkgewotICAgICAgX3BhcmFtID0gcGFyYW1bMV07Ci0gICAgICBfYWNjdSA9IGFjY3UgKyAxIHwg
MDsKLSAgICAgIGNvbnRpbnVlIDsKLSAgICAgIAotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJl
dHVybiBhY2N1OwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gb2ZfbGlzdChsKSB7Ci0gIGlm
IChsKSB7Ci0gICAgdmFyIGEgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KGxpc3RfbGVuZ3Ro
KDAsIGwpLCBsWzBdKTsKLSAgICB2YXIgX2kgPSAxOwotICAgIHZhciBfcGFyYW0gPSBsWzFdOwot
ICAgIHdoaWxlKHRydWUpIHsKLSAgICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKLSAgICAgIHZhciBp
ID0gX2k7Ci0gICAgICBpZiAocGFyYW0pIHsKLSAgICAgICAgYVtpXSA9IHBhcmFtWzBdOwotICAg
ICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKLSAgICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAg
IGNvbnRpbnVlIDsKLSAgICAgICAgCi0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0
dXJuIGE7Ci0gICAgICB9Ci0gICAgfTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyogYXJy
YXkgKi9bXTsKLSAgfQotfQotCi1mdW5jdGlvbiBmb2xkX2xlZnQoZiwgeCwgYSkgewotICB2YXIg
ciA9IHg7Ci0gIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gYS5sZW5ndGggLSAxIHwgMDsgaSA8
PSBpX2ZpbmlzaDsgKytpKXsKLSAgICByID0gQ3VycnkuXzIoZiwgciwgYVtpXSk7Ci0gIH0KLSAg
cmV0dXJuIHI7Ci19Ci0KLWZ1bmN0aW9uIGZvbGRfcmlnaHQoZiwgYSwgeCkgewotICB2YXIgciA9
IHg7Ci0gIGZvcih2YXIgaSA9IGEubGVuZ3RoIC0gMSB8IDA7IGkgPj0gMDsgLS1pKXsKLSAgICBy
ID0gQ3VycnkuXzIoZiwgYVtpXSwgcik7Ci0gIH0KLSAgcmV0dXJuIHI7Ci19Ci0KLXZhciBCb3R0
b20gPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJBcnJheS5Cb3R0b20iKTsKLQotZnVuY3Rpb24g
c29ydChjbXAsIGEpIHsKLSAgdmFyIG1heHNvbiA9IGZ1bmN0aW9uIChsLCBpKSB7Ci0gICAgdmFy
IGkzMSA9ICgoaSArIGkgfCAwKSArIGkgfCAwKSArIDEgfCAwOwotICAgIHZhciB4ID0gaTMxOwot
ICAgIGlmICgoaTMxICsgMiB8IDApIDwgbCkgewotICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgYVtp
MzFdLCBhW2kzMSArIDEgfCAwXSkgPCAwKSB7Ci0gICAgICAgIHggPSBpMzEgKyAxIHwgMDsKLSAg
ICAgIH0KLSAgICAgIGlmIChDdXJyeS5fMihjbXAsIGFbeF0sIGFbaTMxICsgMiB8IDBdKSA8IDAp
IHsKLSAgICAgICAgeCA9IGkzMSArIDIgfCAwOwotICAgICAgfQotICAgICAgcmV0dXJuIHg7Ci0g
ICAgfQotICAgIGVsc2UgaWYgKChpMzEgKyAxIHwgMCkgPCBsICYmIEN1cnJ5Ll8yKGNtcCwgYVtp
MzFdLCBhW2kzMSArIDEgfCAwXSkgPCAwKSB7Ci0gICAgICByZXR1cm4gaTMxICsgMSB8IDA7Ci0g
ICAgfQotICAgIGVsc2UgaWYgKGkzMSA8IGwpIHsKLSAgICAgIHJldHVybiBpMzE7Ci0gICAgfQot
ICAgIGVsc2UgewotICAgICAgdGhyb3cgWwotICAgICAgICAgICAgQm90dG9tLAotICAgICAgICAg
ICAgaQotICAgICAgICAgIF07Ci0gICAgfQotICB9OwotICB2YXIgdHJpY2tsZSA9IGZ1bmN0aW9u
IChsLCBpLCBlKSB7Ci0gICAgdHJ5IHsKLSAgICAgIHZhciBsJDEgPSBsOwotICAgICAgdmFyIF9p
ID0gaTsKLSAgICAgIHZhciBlJDEgPSBlOwotICAgICAgd2hpbGUodHJ1ZSkgewotICAgICAgICB2
YXIgaSQxID0gX2k7Ci0gICAgICAgIHZhciBqID0gbWF4c29uKGwkMSwgaSQxKTsKLSAgICAgICAg
aWYgKEN1cnJ5Ll8yKGNtcCwgYVtqXSwgZSQxKSA+IDApIHsKLSAgICAgICAgICBhW2kkMV0gPSBh
W2pdOwotICAgICAgICAgIF9pID0gajsKLSAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAg
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgYVtpJDFdID0gZSQxOwotICAg
ICAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0gICAgfQotICAg
IGNhdGNoIChleG4pewotICAgICAgaWYgKGV4blswXSA9PT0gQm90dG9tKSB7Ci0gICAgICAgIGFb
ZXhuWzFdXSA9IGU7Ci0gICAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgICB9Ci0gICAgICBl
bHNlIHsKLSAgICAgICAgdGhyb3cgZXhuOwotICAgICAgfQotICAgIH0KLSAgfTsKLSAgdmFyIGJ1
YmJsZSA9IGZ1bmN0aW9uIChsLCBpKSB7Ci0gICAgdHJ5IHsKLSAgICAgIHZhciBsJDEgPSBsOwot
ICAgICAgdmFyIF9pID0gaTsKLSAgICAgIHdoaWxlKHRydWUpIHsKLSAgICAgICAgdmFyIGkkMSA9
IF9pOwotICAgICAgICB2YXIgaiA9IG1heHNvbihsJDEsIGkkMSk7Ci0gICAgICAgIGFbaSQxXSA9
IGFbal07Ci0gICAgICAgIF9pID0gajsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAg
ICAgIH07Ci0gICAgfQotICAgIGNhdGNoIChleG4pewotICAgICAgaWYgKGV4blswXSA9PT0gQm90
dG9tKSB7Ci0gICAgICAgIHJldHVybiBleG5bMV07Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAg
ICAgICAgdGhyb3cgZXhuOwotICAgICAgfQotICAgIH0KLSAgfTsKLSAgdmFyIHRyaWNrbGV1cCA9
IGZ1bmN0aW9uIChfaSwgZSkgewotICAgIHdoaWxlKHRydWUpIHsKLSAgICAgIHZhciBpID0gX2k7
Ci0gICAgICB2YXIgZmF0aGVyID0gKGkgLSAxIHwgMCkgLyAzIHwgMDsKLSAgICAgIGlmIChpID09
PSBmYXRoZXIpIHsKLSAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAgWwotICAgICAgICAgICAg
ICAgICJhcnJheS5tbCIsCi0gICAgICAgICAgICAgICAgMTY4LAotICAgICAgICAgICAgICAgIDQK
LSAgICAgICAgICAgICAgXQotICAgICAgICAgICAgXTsKLSAgICAgIH0KLSAgICAgIGlmIChDdXJy
eS5fMihjbXAsIGFbZmF0aGVyXSwgZSkgPCAwKSB7Ci0gICAgICAgIGFbaV0gPSBhW2ZhdGhlcl07
Ci0gICAgICAgIGlmIChmYXRoZXIgPiAwKSB7Ci0gICAgICAgICAgX2kgPSBmYXRoZXI7Ci0gICAg
ICAgICAgY29udGludWUgOwotICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgIGFbMF0gPSBlOwotICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgICAg
IH0KLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBhW2ldID0gZTsKLSAgICAgICAgcmV0
dXJuIC8qICgpICovMDsKLSAgICAgIH0KLSAgICB9OwotICB9OwotICB2YXIgbCA9IGEubGVuZ3Ro
OwotICBmb3IodmFyIGkgPSAoKGwgKyAxIHwgMCkgLyAzIHwgMCkgLSAxIHwgMDsgaSA+PSAwOyAt
LWkpewotICAgIHRyaWNrbGUobCwgaSwgYVtpXSk7Ci0gIH0KLSAgZm9yKHZhciBpJDEgPSBsIC0g
MSB8IDA7IGkkMSA+PSAyOyAtLWkkMSl7Ci0gICAgdmFyIGUgPSBhW2kkMV07Ci0gICAgYVtpJDFd
ID0gYVswXTsKLSAgICB0cmlja2xldXAoYnViYmxlKGkkMSwgMCksIGUpOwotICB9Ci0gIGlmIChs
ID4gMSkgewotICAgIHZhciBlJDEgPSBhWzFdOwotICAgIGFbMV0gPSBhWzBdOwotICAgIGFbMF0g
PSBlJDE7Ci0gICAgcmV0dXJuIC8qICgpICovMDsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4g
MDsKLSAgfQotfQotCi1mdW5jdGlvbiBzdGFibGVfc29ydChjbXAsIGEpIHsKLSAgdmFyIG1lcmdl
ID0gZnVuY3Rpb24gKHNyYzFvZnMsIHNyYzFsZW4sIHNyYzIsIHNyYzJvZnMsIHNyYzJsZW4sIGRz
dCwgZHN0b2ZzKSB7Ci0gICAgdmFyIHNyYzFyID0gc3JjMW9mcyArIHNyYzFsZW4gfCAwOwotICAg
IHZhciBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIHwgMDsKLSAgICB2YXIgX2kxID0gc3JjMW9m
czsKLSAgICB2YXIgX3MxID0gYVtzcmMxb2ZzXTsKLSAgICB2YXIgX2kyID0gc3JjMm9mczsKLSAg
ICB2YXIgX3MyID0gc3JjMltzcmMyb2ZzXTsKLSAgICB2YXIgX2QgPSBkc3RvZnM7Ci0gICAgd2hp
bGUodHJ1ZSkgewotICAgICAgdmFyIGQgPSBfZDsKLSAgICAgIHZhciBzMiA9IF9zMjsKLSAgICAg
IHZhciBpMiA9IF9pMjsKLSAgICAgIHZhciBzMSA9IF9zMTsKLSAgICAgIHZhciBpMSA9IF9pMTsK
LSAgICAgIGlmIChDdXJyeS5fMihjbXAsIHMxLCBzMikgPD0gMCkgewotICAgICAgICBkc3RbZF0g
PSBzMTsKLSAgICAgICAgdmFyIGkxJDEgPSBpMSArIDEgfCAwOwotICAgICAgICBpZiAoaTEkMSA8
IHNyYzFyKSB7Ci0gICAgICAgICAgX2QgPSBkICsgMSB8IDA7Ci0gICAgICAgICAgX3MxID0gYVtp
MSQxXTsKLSAgICAgICAgICBfaTEgPSBpMSQxOwotICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAg
ICAgICAKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gYmxpdChz
cmMyLCBpMiwgZHN0LCBkICsgMSB8IDAsIHNyYzJyIC0gaTIgfCAwKTsKLSAgICAgICAgfQotICAg
ICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGRzdFtkXSA9IHMyOwotICAgICAgICB2YXIgaTIk
MSA9IGkyICsgMSB8IDA7Ci0gICAgICAgIGlmIChpMiQxIDwgc3JjMnIpIHsKLSAgICAgICAgICBf
ZCA9IGQgKyAxIHwgMDsKLSAgICAgICAgICBfczIgPSBzcmMyW2kyJDFdOwotICAgICAgICAgIF9p
MiA9IGkyJDE7Ci0gICAgICAgICAgY29udGludWUgOwotICAgICAgICAgIAotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgIHJldHVybiBibGl0KGEsIGkxLCBkc3QsIGQgKyAxIHwg
MCwgc3JjMXIgLSBpMSB8IDApOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfTsKLSAgfTsKLSAg
dmFyIGlzb3J0dG8gPSBmdW5jdGlvbiAoc3Jjb2ZzLCBkc3QsIGRzdG9mcywgbGVuKSB7Ci0gICAg
Zm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytp
KXsKLSAgICAgIHZhciBlID0gYVtzcmNvZnMgKyBpIHwgMF07Ci0gICAgICB2YXIgaiA9IChkc3Rv
ZnMgKyBpIHwgMCkgLSAxIHwgMDsKLSAgICAgIHdoaWxlKGogPj0gZHN0b2ZzICYmIEN1cnJ5Ll8y
KGNtcCwgZHN0W2pdLCBlKSA+IDApIHsKLSAgICAgICAgZHN0W2ogKyAxIHwgMF0gPSBkc3Rbal07
Ci0gICAgICAgIGogPSBqIC0gMSB8IDA7Ci0gICAgICB9OwotICAgICAgZHN0W2ogKyAxIHwgMF0g
PSBlOwotICAgIH0KLSAgICByZXR1cm4gLyogKCkgKi8wOwotICB9OwotICB2YXIgc29ydHRvID0g
ZnVuY3Rpb24gKHNyY29mcywgZHN0LCBkc3RvZnMsIGxlbikgewotICAgIGlmIChsZW4gPD0gNSkg
ewotICAgICAgcmV0dXJuIGlzb3J0dG8oc3Jjb2ZzLCBkc3QsIGRzdG9mcywgbGVuKTsKLSAgICB9
Ci0gICAgZWxzZSB7Ci0gICAgICB2YXIgbDEgPSBsZW4gLyAyIHwgMDsKLSAgICAgIHZhciBsMiA9
IGxlbiAtIGwxIHwgMDsKLSAgICAgIHNvcnR0byhzcmNvZnMgKyBsMSB8IDAsIGRzdCwgZHN0b2Zz
ICsgbDEgfCAwLCBsMik7Ci0gICAgICBzb3J0dG8oc3Jjb2ZzLCBhLCBzcmNvZnMgKyBsMiB8IDAs
IGwxKTsKLSAgICAgIHJldHVybiBtZXJnZShzcmNvZnMgKyBsMiB8IDAsIGwxLCBkc3QsIGRzdG9m
cyArIGwxIHwgMCwgbDIsIGRzdCwgZHN0b2ZzKTsKLSAgICB9Ci0gIH07Ci0gIHZhciBsID0gYS5s
ZW5ndGg7Ci0gIGlmIChsIDw9IDUpIHsKLSAgICByZXR1cm4gaXNvcnR0bygwLCBhLCAwLCBsKTsK
LSAgfQotICBlbHNlIHsKLSAgICB2YXIgbDEgPSBsIC8gMiB8IDA7Ci0gICAgdmFyIGwyID0gbCAt
IGwxIHwgMDsKLSAgICB2YXIgdCA9IENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QobDIsIGFbMF0p
OwotICAgIHNvcnR0byhsMSwgdCwgMCwgbDIpOwotICAgIHNvcnR0bygwLCBhLCBsMiwgbDEpOwot
ICAgIHJldHVybiBtZXJnZShsMiwgbDEsIHQsIDAsIGwyLCBhLCAwKTsKLSAgfQotfQotCi12YXIg
Y3JlYXRlX21hdHJpeCA9IG1ha2VfbWF0cml4OwotCi12YXIgY29uY2F0ID0gQ2FtbF9hcnJheS5j
YW1sX2FycmF5X2NvbmNhdDsKLQotdmFyIGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0OwotCi1leHBv
cnRzLmluaXQgICAgICAgICAgPSBpbml0OwotZXhwb3J0cy5tYWtlX21hdHJpeCAgID0gbWFrZV9t
YXRyaXg7Ci1leHBvcnRzLmNyZWF0ZV9tYXRyaXggPSBjcmVhdGVfbWF0cml4OwotZXhwb3J0cy5h
cHBlbmQgICAgICAgID0gYXBwZW5kOwotZXhwb3J0cy5jb25jYXQgICAgICAgID0gY29uY2F0Owot
ZXhwb3J0cy5zdWIgICAgICAgICAgID0gc3ViOwotZXhwb3J0cy5jb3B5ICAgICAgICAgID0gY29w
eTsKLWV4cG9ydHMuZmlsbCAgICAgICAgICA9IGZpbGw7Ci1leHBvcnRzLmJsaXQgICAgICAgICAg
PSBibGl0OwotZXhwb3J0cy50b19saXN0ICAgICAgID0gdG9fbGlzdDsKLWV4cG9ydHMub2ZfbGlz
dCAgICAgICA9IG9mX2xpc3Q7Ci1leHBvcnRzLml0ZXIgICAgICAgICAgPSBpdGVyOwotZXhwb3J0
cy5tYXAgICAgICAgICAgID0gbWFwOwotZXhwb3J0cy5pdGVyaSAgICAgICAgID0gaXRlcmk7Ci1l
eHBvcnRzLm1hcGkgICAgICAgICAgPSBtYXBpOwotZXhwb3J0cy5mb2xkX2xlZnQgICAgID0gZm9s
ZF9sZWZ0OwotZXhwb3J0cy5mb2xkX3JpZ2h0ICAgID0gZm9sZF9yaWdodDsKLWV4cG9ydHMuc29y
dCAgICAgICAgICA9IHNvcnQ7Ci1leHBvcnRzLnN0YWJsZV9zb3J0ICAgPSBzdGFibGVfc29ydDsK
LWV4cG9ydHMuZmFzdF9zb3J0ICAgICA9IGZhc3Rfc29ydDsKLS8qIE5vIHNpZGUgZWZmZWN0ICov
Ci0vLy8vLy8vLyBlbmQgb2YgYXJyYXkuanMgLy8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsK
LSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnYXN0J10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhw
b3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgYXN0LmpzIC8vLy8vLy8vCi0vLyBHZW5lcmF0
ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUK
LSd1c2Ugc3RyaWN0JzsKLQotdmFyIExpYiAgICAgID0gcmVxdWlyZSgiLi9saWIiKTsKLXZhciBC
bG9jayAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwotdmFyIEN1cnJ5
ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Ci12YXIgQ2FtbF9vYmog
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9vYmoiKTsKLQotdmFyIEludE9wID0g
LyogbW9kdWxlICovW107Ci0KLXZhciBGbG9hdE9wID0gLyogbW9kdWxlICovW107Ci0KLWZ1bmN0
aW9uIGV4cG9ydF9raW5kX29mX2ltcG9ydF9raW5kKHBhcmFtKSB7Ci0gIHN3aXRjaCAocGFyYW0u
dGFnIHwgMCkgewotICAgIGNhc2UgMCA6IAotICAgICAgICByZXR1cm4gLyogRnVuY0V4cG9ydCAq
LzA7Ci0gICAgY2FzZSAxIDogCi0gICAgICAgIHJldHVybiAvKiBUYWJsZUV4cG9ydCAqLzE7Ci0g
ICAgY2FzZSAyIDogCi0gICAgICAgIHJldHVybiAvKiBNZW1vcnlFeHBvcnQgKi8yOwotICAgIGNh
c2UgMyA6IAotICAgICAgICByZXR1cm4gLyogR2xvYmFsRXhwb3J0ICovMzsKLSAgICAKLSAgfQot
fQotCi1mdW5jdGlvbiBpbXBvcnRfdHlwZShtLCBpbSkgewotICB2YXIgbWF0Y2ggPSBpbVsvKiBp
dCAqLzFdOwotICB2YXIgbWF0Y2gkMSA9IG1hdGNoWy8qIGlraW5kICovMl1bLyogaXQgKi8xXTsK
LSAgc3dpdGNoIChtYXRjaCQxLnRhZyB8IDApIHsKLSAgICBjYXNlIDAgOiAKLSAgICAgICAgcmV0
dXJuIC8qIEV4dGVybmFsRnVuY1R5cGUgKi9CbG9jay5fXygwLCBbQ3VycnkuXzIoTGliLkxpc3Qz
MlsvKiBudGggKi8xXSwgbVsvKiBpdCAqLzFdWy8qIHR5cGVzICovMF0sIG1hdGNoJDFbMF1bLyog
aXQgKi8xXSldKTsKLSAgICBjYXNlIDEgOiAKLSAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsVGFi
bGVUeXBlICovQmxvY2suX18oMSwgW21hdGNoJDFbMF1dKTsKLSAgICBjYXNlIDIgOiAKLSAgICAg
ICAgcmV0dXJuIC8qIEV4dGVybmFsTWVtb3J5VHlwZSAqL0Jsb2NrLl9fKDIsIFttYXRjaCQxWzBd
XSk7Ci0gICAgY2FzZSAzIDogCi0gICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEdsb2JhbFR5cGUg
Ki9CbG9jay5fXygzLCBbbWF0Y2gkMVswXV0pOwotICAgIAotICB9Ci19Ci0KLWZ1bmN0aW9uIGV4
cG9ydF90eXBlKG0sIGV4KSB7Ci0gIHZhciBtYXRjaCA9IGV4Wy8qIGl0ICovMV07Ci0gIHZhciBl
a2luZCA9IG1hdGNoWy8qIGVraW5kICovMV07Ci0gIHZhciBfaSA9IG1hdGNoWy8qIGl0ZW0gKi8y
XVsvKiBpdCAqLzFdOwotICB2YXIgX3BhcmFtID0gbVsvKiBpdCAqLzFdWy8qIGltcG9ydHMgKi84
XTsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKLSAgICB2YXIgaSA9
IF9pOwotICAgIGlmIChwYXJhbSkgewotICAgICAgdmFyIGltcyA9IHBhcmFtWzFdOwotICAgICAg
dmFyIGltID0gcGFyYW1bMF07Ci0gICAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChleHBvcnRf
a2luZF9vZl9pbXBvcnRfa2luZChpbVsvKiBpdCAqLzFdWy8qIGlraW5kICovMl1bLyogaXQgKi8x
XSksIGVraW5kWy8qIGl0ICovMV0pKSB7Ci0gICAgICAgIGlmIChpKSB7Ci0gICAgICAgICAgX3Bh
cmFtID0gaW1zOwotICAgICAgICAgIF9pID0gaSAtIDEgfCAwOwotICAgICAgICAgIGNvbnRpbnVl
IDsKLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1
cm4gaW1wb3J0X3R5cGUobSwgaW0pOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsK
LSAgICAgICAgX3BhcmFtID0gaW1zOwotICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgIAotICAg
ICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHZhciBtYXRjaCQxID0gZWtpbmRbLyogaXQg
Ki8xXTsKLSAgICAgIHN3aXRjaCAobWF0Y2gkMSkgewotICAgICAgICBjYXNlIDAgOiAKLSAgICAg
ICAgICAgIHJldHVybiAvKiBFeHRlcm5hbEZ1bmNUeXBlICovQmxvY2suX18oMCwgW0N1cnJ5Ll8y
KExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQgKi8xXVsvKiB0eXBlcyAqLzBdLCBDdXJy
eS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogZnVuY3MgKi80XSwg
aSlbLyogaXQgKi8xXVsvKiBmdHlwZSAqLzBdWy8qIGl0ICovMV0pXSk7Ci0gICAgICAgIGNhc2Ug
MSA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsVGFibGVUeXBlICovQmxvY2suX18o
MSwgW0N1cnJ5Ll8yKExpYi5MaXN0MzJbLyogbnRoICovMV0sIG1bLyogaXQgKi8xXVsvKiB0YWJs
ZXMgKi8yXSwgaSlbLyogaXQgKi8xXVsvKiB0dHlwZSAqLzBdXSk7Ci0gICAgICAgIGNhc2UgMiA6
IAotICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsTWVtb3J5VHlwZSAqL0Jsb2NrLl9fKDIs
IFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogbWVtb3Jp
ZXMgKi8zXSwgaSlbLyogaXQgKi8xXVsvKiBtdHlwZSAqLzBdXSk7Ci0gICAgICAgIGNhc2UgMyA6
IAotICAgICAgICAgICAgcmV0dXJuIC8qIEV4dGVybmFsR2xvYmFsVHlwZSAqL0Jsb2NrLl9fKDMs
IFtDdXJyeS5fMihMaWIuTGlzdDMyWy8qIG50aCAqLzFdLCBtWy8qIGl0ICovMV1bLyogZ2xvYmFs
cyAqLzFdLCBpKVsvKiBpdCAqLzFdWy8qIGd0eXBlICovMF1dKTsKLSAgICAgICAgCi0gICAgICB9
Ci0gICAgfQotICB9OwotfQotCi12YXIgSTMyT3AgPSAwOwotCi12YXIgSTY0T3AgPSAwOwotCi12
YXIgRjMyT3AgPSAwOwotCi12YXIgRjY0T3AgPSAwOwotCi12YXIgZW1wdHlfbW9kdWxlID0gLyog
cmVjb3JkICovWwotICAvKiB0eXBlcyA6IFtdICovMCwKLSAgLyogZ2xvYmFscyA6IFtdICovMCwK
LSAgLyogdGFibGVzIDogW10gKi8wLAotICAvKiBtZW1vcmllcyA6IFtdICovMCwKLSAgLyogZnVu
Y3MgOiBbXSAqLzAsCi0gIC8qIHN0YXJ0IDogTm9uZSAqLzAsCi0gIC8qIGVsZW1zIDogW10gKi8w
LAotICAvKiBkYXRhIDogW10gKi8wLAotICAvKiBpbXBvcnRzIDogW10gKi8wLAotICAvKiBleHBv
cnRzIDogW10gKi8wCi1dOwotCi1leHBvcnRzLkludE9wICAgICAgICAgICAgICAgICAgICAgID0g
SW50T3A7Ci1leHBvcnRzLkZsb2F0T3AgICAgICAgICAgICAgICAgICAgID0gRmxvYXRPcDsKLWV4
cG9ydHMuSTMyT3AgICAgICAgICAgICAgICAgICAgICAgPSBJMzJPcDsKLWV4cG9ydHMuSTY0T3Ag
ICAgICAgICAgICAgICAgICAgICAgPSBJNjRPcDsKLWV4cG9ydHMuRjMyT3AgICAgICAgICAgICAg
ICAgICAgICAgPSBGMzJPcDsKLWV4cG9ydHMuRjY0T3AgICAgICAgICAgICAgICAgICAgICAgPSBG
NjRPcDsKLWV4cG9ydHMuZW1wdHlfbW9kdWxlICAgICAgICAgICAgICAgPSBlbXB0eV9tb2R1bGU7
Ci1leHBvcnRzLmV4cG9ydF9raW5kX29mX2ltcG9ydF9raW5kID0gZXhwb3J0X2tpbmRfb2ZfaW1w
b3J0X2tpbmQ7Ci1leHBvcnRzLmltcG9ydF90eXBlICAgICAgICAgICAgICAgID0gaW1wb3J0X3R5
cGU7Ci1leHBvcnRzLmV4cG9ydF90eXBlICAgICAgICAgICAgICAgID0gZXhwb3J0X3R5cGU7Ci0v
KiBMaWIgTm90IGEgcHVyZSBtb2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBhc3QuanMgLy8vLy8v
Ly8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnYmlnYXJyYXkn
XSA9IGZ1bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBv
ZiBiaWdhcnJheS5qcyAvLy8vLy8vLwotJ3VzZSBzdHJpY3QnOwotCi12YXIgQ2FtbF9hcnJheSAg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXkiKTsKLXZhciBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKLQotZnVu
Y3Rpb24gZGltcygpIHsKLSAgdmFyIG4gPSBmdW5jdGlvbiAoKSB7Ci0gICAgICB0aHJvdyAiY2Ft
bF9iYV9udW1fZGltcyBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAg
ICB9KCk7Ci0gIHZhciBkID0gQ2FtbF9hcnJheS5jYW1sX21ha2VfdmVjdChuLCAwKTsKLSAgZm9y
KHZhciBpID0gMCAsaV9maW5pc2ggPSBuIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7Ci0g
ICAgZFtpXSA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGhyb3cgImNhbWxfYmFfZGltIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwotICAgICAgfSgpOwotICB9Ci0gIHJl
dHVybiBkOwotfQotCi1mdW5jdGlvbiBtYXBfZmlsZShfLCAkc3Rhcm9wdCRzdGFyLCBfJDEsIF8k
MiwgXyQzLCBfJDQpIHsKLSAgJHN0YXJvcHQkc3RhciA/ICRzdGFyb3B0JHN0YXJbMF0gOiAvKiBp
bnQ2NCAqL1sKLSAgICAgIC8qIGhpICovMCwKLSAgICAgIC8qIGxvICovMAotICAgIF07Ci0gIHJl
dHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9tYXBfZmlsZV9i
eXRlY29kZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAgICAg
ICB9KCk7Ci19Ci0KLXZhciBHZW5hcnJheSA9IC8qIG1vZHVsZSAqL1sKLSAgLyogZGltcyAqL2Rp
bXMsCi0gIC8qIG1hcF9maWxlICovbWFwX2ZpbGUKLV07Ci0KLWZ1bmN0aW9uIGNyZWF0ZShfLCBf
JDEsIF8kMikgewotICByZXR1cm4gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdGhyb3cgImNh
bWxfYmFfY3JlYXRlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwotICAg
ICAgICAgIH0oKTsKLX0KLQotZnVuY3Rpb24gb2ZfYXJyYXkoa2luZCwgbGF5b3V0LCBkYXRhKSB7
Ci0gIHZhciBiYSA9IGNyZWF0ZShraW5kLCBsYXlvdXQsIGRhdGEubGVuZ3RoKTsKLSAgbGF5b3V0
ICE9PSAwID8gMSA6IDA7Ci0gIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gZGF0YS5sZW5ndGgg
LSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKLSAgICAoZnVuY3Rpb24gKCkgewotICAgICAg
ICAgIHRocm93ICJjYW1sX2JhX3NldF8xIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQg
eWV0XG4iOwotICAgICAgICB9KCkpOwotICB9Ci0gIHJldHVybiBiYTsKLX0KLQotZnVuY3Rpb24g
bWFwX2ZpbGUkMShmZCwgcG9zLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltKSB7Ci0gIHJldHVy
biBtYXBfZmlsZShmZCwgcG9zLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgLyogaW50IGFycmF5ICov
W2RpbV0pOwotfQotCi12YXIgQXJyYXkxID0gLyogbW9kdWxlICovWwotICAvKiBjcmVhdGUgKi9j
cmVhdGUsCi0gIC8qIG9mX2FycmF5ICovb2ZfYXJyYXksCi0gIC8qIG1hcF9maWxlICovbWFwX2Zp
bGUkMQotXTsKLQotZnVuY3Rpb24gY3JlYXRlJDEoXywgXyQxLCBfJDIsIF8kMykgewotICByZXR1
cm4gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfY3JlYXRlIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwotICAgICAgICAgIH0oKTsKLX0KLQot
ZnVuY3Rpb24gc2xpY2VfbGVmdChfLCBfJDEpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgICAgIHRocm93ICJjYW1sX2JhX3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVz
Y3JpcHQgeWV0XG4iOwotICAgICAgICAgIH0oKTsKLX0KLQotZnVuY3Rpb24gc2xpY2VfcmlnaHQo
XywgXyQxKSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0aHJvdyAiY2Ft
bF9iYV9zbGljZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAg
ICAgICB9KCk7Ci19Ci0KLWZ1bmN0aW9uIG9mX2FycmF5JDEoa2luZCwgbGF5b3V0LCBkYXRhKSB7
Ci0gIHZhciBkaW0xID0gZGF0YS5sZW5ndGg7Ci0gIHZhciBkaW0yID0gZGltMSA/IGRhdGFbMF0u
bGVuZ3RoIDogMDsKLSAgdmFyIGJhID0gY3JlYXRlJDEoa2luZCwgbGF5b3V0LCBkaW0xLCBkaW0y
KTsKLSAgbGF5b3V0ICE9PSAwID8gMSA6IDA7Ci0gIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0g
ZGltMSAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpewotICAgIHZhciByb3cgPSBkYXRhW2ld
OwotICAgIGlmIChyb3cubGVuZ3RoICE9PSBkaW0yKSB7Ci0gICAgICB0aHJvdyBbCi0gICAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAotICAgICAgICAg
ICAgIkJpZ2FycmF5LkFycmF5Mi5vZl9hcnJheTogbm9uLXJlY3Rhbmd1bGFyIGRhdGEiCi0gICAg
ICAgICAgXTsKLSAgICB9Ci0gICAgZm9yKHZhciBqID0gMCAsal9maW5pc2ggPSBkaW0yIC0gMSB8
IDA7IGogPD0gal9maW5pc2g7ICsrail7Ci0gICAgICAoZnVuY3Rpb24gKCkgewotICAgICAgICAg
ICAgdGhyb3cgImNhbWxfYmFfc2V0XzIgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5
ZXRcbiI7Ci0gICAgICAgICAgfSgpKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIGJhOwotfQotCi1m
dW5jdGlvbiBtYXBfZmlsZSQyKGZkLCBwb3MsIGtpbmQsIGxheW91dCwgc2hhcmVkLCBkaW0xLCBk
aW0yKSB7Ci0gIHJldHVybiBtYXBfZmlsZShmZCwgcG9zLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwg
LyogaW50IGFycmF5ICovWwotICAgICAgICAgICAgICBkaW0xLAotICAgICAgICAgICAgICBkaW0y
Ci0gICAgICAgICAgICBdKTsKLX0KLQotdmFyIEFycmF5MiA9IC8qIG1vZHVsZSAqL1sKLSAgLyog
Y3JlYXRlICovY3JlYXRlJDEsCi0gIC8qIHNsaWNlX2xlZnQgKi9zbGljZV9sZWZ0LAotICAvKiBz
bGljZV9yaWdodCAqL3NsaWNlX3JpZ2h0LAotICAvKiBvZl9hcnJheSAqL29mX2FycmF5JDEsCi0g
IC8qIG1hcF9maWxlICovbWFwX2ZpbGUkMgotXTsKLQotZnVuY3Rpb24gY3JlYXRlJDIoXywgXyQx
LCBfJDIsIF8kMywgXyQ0KSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0
aHJvdyAiY2FtbF9iYV9jcmVhdGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRc
biI7Ci0gICAgICAgICAgfSgpOwotfQotCi1mdW5jdGlvbiBzbGljZV9sZWZ0XzEoXywgXyQxLCBf
JDIpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRocm93ICJjYW1sX2Jh
X3NsaWNlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwotICAgICAgICAg
IH0oKTsKLX0KLQotZnVuY3Rpb24gc2xpY2VfcmlnaHRfMShfLCBfJDEsIF8kMikgewotICByZXR1
cm4gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2xpY2Ugbm90IGlt
cGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Ci0gICAgICAgICAgfSgpOwotfQotCi1m
dW5jdGlvbiBzbGljZV9sZWZ0XzIoXywgXyQxKSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9zbGljZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xl
c2NyaXB0IHlldFxuIjsKLSAgICAgICAgICB9KCk7Ci19Ci0KLWZ1bmN0aW9uIHNsaWNlX3JpZ2h0
XzIoXywgXyQxKSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0aHJvdyAi
Y2FtbF9iYV9zbGljZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAg
ICAgICAgICB9KCk7Ci19Ci0KLWZ1bmN0aW9uIG9mX2FycmF5JDIoa2luZCwgbGF5b3V0LCBkYXRh
KSB7Ci0gIHZhciBkaW0xID0gZGF0YS5sZW5ndGg7Ci0gIHZhciBkaW0yID0gZGltMSA/IGRhdGFb
MF0ubGVuZ3RoIDogMDsKLSAgdmFyIGRpbTMgPSBkaW0yID8gZGF0YVswXVswXS5sZW5ndGggOiAw
OwotICB2YXIgYmEgPSBjcmVhdGUkMihraW5kLCBsYXlvdXQsIGRpbTEsIGRpbTIsIGRpbTMpOwot
ICBsYXlvdXQgIT09IDAgPyAxIDogMDsKLSAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBkaW0x
IC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7Ci0gICAgdmFyIHJvdyA9IGRhdGFbaV07Ci0g
ICAgaWYgKHJvdy5sZW5ndGggIT09IGRpbTIpIHsKLSAgICAgIHRocm93IFsKLSAgICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAi
QmlnYXJyYXkuQXJyYXkzLm9mX2FycmF5OiBub24tY3ViaWMgZGF0YSIKLSAgICAgICAgICBdOwot
ICAgIH0KLSAgICBmb3IodmFyIGogPSAwICxqX2ZpbmlzaCA9IGRpbTIgLSAxIHwgMDsgaiA8PSBq
X2ZpbmlzaDsgKytqKXsKLSAgICAgIHZhciBjb2wgPSByb3dbal07Ci0gICAgICBpZiAoY29sLmxl
bmd0aCAhPT0gZGltMykgewotICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAgICJCaWdhcnJh
eS5BcnJheTMub2ZfYXJyYXk6IG5vbi1jdWJpYyBkYXRhIgotICAgICAgICAgICAgXTsKLSAgICAg
IH0KLSAgICAgIGZvcih2YXIgayA9IDAgLGtfZmluaXNoID0gZGltMyAtIDEgfCAwOyBrIDw9IGtf
ZmluaXNoOyArK2spewotICAgICAgICAoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICB0aHJv
dyAiY2FtbF9iYV9zZXRfMyBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsK
LSAgICAgICAgICAgIH0oKSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0gIHJldHVybiBiYTsKLX0K
LQotZnVuY3Rpb24gbWFwX2ZpbGUkMyhmZCwgcG9zLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGlt
MSwgZGltMiwgZGltMykgewotICByZXR1cm4gbWFwX2ZpbGUoZmQsIHBvcywga2luZCwgbGF5b3V0
LCBzaGFyZWQsIC8qIGludCBhcnJheSAqL1sKLSAgICAgICAgICAgICAgZGltMSwKLSAgICAgICAg
ICAgICAgZGltMiwKLSAgICAgICAgICAgICAgZGltMwotICAgICAgICAgICAgXSk7Ci19Ci0KLXZh
ciBBcnJheTMgPSAvKiBtb2R1bGUgKi9bCi0gIC8qIGNyZWF0ZSAqL2NyZWF0ZSQyLAotICAvKiBz
bGljZV9sZWZ0XzEgKi9zbGljZV9sZWZ0XzEsCi0gIC8qIHNsaWNlX3JpZ2h0XzEgKi9zbGljZV9y
aWdodF8xLAotICAvKiBzbGljZV9sZWZ0XzIgKi9zbGljZV9sZWZ0XzIsCi0gIC8qIHNsaWNlX3Jp
Z2h0XzIgKi9zbGljZV9yaWdodF8yLAotICAvKiBvZl9hcnJheSAqL29mX2FycmF5JDIsCi0gIC8q
IG1hcF9maWxlICovbWFwX2ZpbGUkMwotXTsKLQotZnVuY3Rpb24gYXJyYXkxX29mX2dlbmFycmF5
KGEpIHsKLSAgaWYgKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGhyb3cgImNhbWxfYmFfbnVtX2Rp
bXMgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Ci0gICAgICB9KCkgPT09
IDEpIHsKLSAgICByZXR1cm4gYTsKLSAgfQotICBlbHNlIHsKLSAgICB0aHJvdyBbCi0gICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAi
QmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5IgotICAgICAgICBdOwotICB9Ci19Ci0KLWZ1bmN0
aW9uIGFycmF5Ml9vZl9nZW5hcnJheShhKSB7Ci0gIGlmIChmdW5jdGlvbiAoKSB7Ci0gICAgICAg
IHRocm93ICJjYW1sX2JhX251bV9kaW1zIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQg
eWV0XG4iOwotICAgICAgfSgpID09PSAyKSB7Ci0gICAgcmV0dXJuIGE7Ci0gIH0KLSAgZWxzZSB7
Ci0gICAgdGhyb3cgWwotICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRf
YXJndW1lbnQsCi0gICAgICAgICAgIkJpZ2FycmF5LmFycmF5Ml9vZl9nZW5hcnJheSIKLSAgICAg
ICAgXTsKLSAgfQotfQotCi1mdW5jdGlvbiBhcnJheTNfb2ZfZ2VuYXJyYXkoYSkgewotICBpZiAo
ZnVuY3Rpb24gKCkgewotICAgICAgICB0aHJvdyAiY2FtbF9iYV9udW1fZGltcyBub3QgaW1wbGVt
ZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAgIH0oKSA9PT0gMykgewotICAgIHJl
dHVybiBhOwotICB9Ci0gIGVsc2UgewotICAgIHRocm93IFsKLSAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAotICAgICAgICAgICJCaWdhcnJheS5hcnJh
eTNfb2ZfZ2VuYXJyYXkiCi0gICAgICAgIF07Ci0gIH0KLX0KLQotZnVuY3Rpb24gcmVzaGFwZV8x
KF8sIF8kMSkgewotICByZXR1cm4gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdGhyb3cgImNh
bWxfYmFfcmVzaGFwZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAg
ICAgICAgICB9KCk7Ci19Ci0KLWZ1bmN0aW9uIHJlc2hhcGVfMihfLCBfJDEsIF8kMikgewotICBy
ZXR1cm4gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfcmVzaGFwZSBu
b3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAgICAgICB9KCk7Ci19
Ci0KLWZ1bmN0aW9uIHJlc2hhcGVfMyhfLCBfJDEsIF8kMiwgXyQzKSB7Ci0gIHJldHVybiBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICB0aHJvdyAiY2FtbF9iYV9yZXNoYXBlIG5vdCBpbXBsZW1l
bnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwotICAgICAgICAgIH0oKTsKLX0KLQotdmFyIGZs
b2F0MzIgPSAvKiBGbG9hdDMyICovMDsKLQotdmFyIGZsb2F0NjQgPSAvKiBGbG9hdDY0ICovMTsK
LQotdmFyIGNvbXBsZXgzMiA9IC8qIENvbXBsZXgzMiAqLzEwOwotCi12YXIgY29tcGxleDY0ID0g
LyogQ29tcGxleDY0ICovMTE7Ci0KLXZhciBpbnQ4X3NpZ25lZCA9IC8qIEludDhfc2lnbmVkICov
MjsKLQotdmFyIGludDhfdW5zaWduZWQgPSAvKiBJbnQ4X3Vuc2lnbmVkICovMzsKLQotdmFyIGlu
dDE2X3NpZ25lZCA9IC8qIEludDE2X3NpZ25lZCAqLzQ7Ci0KLXZhciBpbnQxNl91bnNpZ25lZCA9
IC8qIEludDE2X3Vuc2lnbmVkICovNTsKLQotdmFyICQkaW50ID0gLyogSW50ICovODsKLQotdmFy
IGludDMyID0gLyogSW50MzIgKi82OwotCi12YXIgaW50NjQgPSAvKiBJbnQ2NCAqLzc7Ci0KLXZh
ciBuYXRpdmVpbnQgPSAvKiBOYXRpdmVpbnQgKi85OwotCi12YXIgJCRjaGFyID0gLyogQ2hhciAq
LzEyOwotCi12YXIgY19sYXlvdXQgPSAvKiBDX2xheW91dCAqLzA7Ci0KLXZhciBmb3J0cmFuX2xh
eW91dCA9IC8qIEZvcnRyYW5fbGF5b3V0ICovMTsKLQotZnVuY3Rpb24gcmVzaGFwZShfLCBfJDEp
IHsKLSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRocm93ICJjYW1sX2JhX3Jl
c2hhcGUgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Ci0gICAgICAgICAg
fSgpOwotfQotCi1leHBvcnRzLmZsb2F0MzIgICAgICAgICAgICA9IGZsb2F0MzI7Ci1leHBvcnRz
LmZsb2F0NjQgICAgICAgICAgICA9IGZsb2F0NjQ7Ci1leHBvcnRzLmNvbXBsZXgzMiAgICAgICAg
ICA9IGNvbXBsZXgzMjsKLWV4cG9ydHMuY29tcGxleDY0ICAgICAgICAgID0gY29tcGxleDY0Owot
ZXhwb3J0cy5pbnQ4X3NpZ25lZCAgICAgICAgPSBpbnQ4X3NpZ25lZDsKLWV4cG9ydHMuaW50OF91
bnNpZ25lZCAgICAgID0gaW50OF91bnNpZ25lZDsKLWV4cG9ydHMuaW50MTZfc2lnbmVkICAgICAg
ID0gaW50MTZfc2lnbmVkOwotZXhwb3J0cy5pbnQxNl91bnNpZ25lZCAgICAgPSBpbnQxNl91bnNp
Z25lZDsKLWV4cG9ydHMuJCRpbnQgICAgICAgICAgICAgID0gJCRpbnQ7Ci1leHBvcnRzLmludDMy
ICAgICAgICAgICAgICA9IGludDMyOwotZXhwb3J0cy5pbnQ2NCAgICAgICAgICAgICAgPSBpbnQ2
NDsKLWV4cG9ydHMubmF0aXZlaW50ICAgICAgICAgID0gbmF0aXZlaW50OwotZXhwb3J0cy4kJGNo
YXIgICAgICAgICAgICAgPSAkJGNoYXI7Ci1leHBvcnRzLmNfbGF5b3V0ICAgICAgICAgICA9IGNf
bGF5b3V0OwotZXhwb3J0cy5mb3J0cmFuX2xheW91dCAgICAgPSBmb3J0cmFuX2xheW91dDsKLWV4
cG9ydHMuR2VuYXJyYXkgICAgICAgICAgID0gR2VuYXJyYXk7Ci1leHBvcnRzLkFycmF5MSAgICAg
ICAgICAgICA9IEFycmF5MTsKLWV4cG9ydHMuQXJyYXkyICAgICAgICAgICAgID0gQXJyYXkyOwot
ZXhwb3J0cy5BcnJheTMgICAgICAgICAgICAgPSBBcnJheTM7Ci1leHBvcnRzLmFycmF5MV9vZl9n
ZW5hcnJheSA9IGFycmF5MV9vZl9nZW5hcnJheTsKLWV4cG9ydHMuYXJyYXkyX29mX2dlbmFycmF5
ID0gYXJyYXkyX29mX2dlbmFycmF5OwotZXhwb3J0cy5hcnJheTNfb2ZfZ2VuYXJyYXkgPSBhcnJh
eTNfb2ZfZ2VuYXJyYXk7Ci1leHBvcnRzLnJlc2hhcGUgICAgICAgICAgICA9IHJlc2hhcGU7Ci1l
eHBvcnRzLnJlc2hhcGVfMSAgICAgICAgICA9IHJlc2hhcGVfMTsKLWV4cG9ydHMucmVzaGFwZV8y
ICAgICAgICAgID0gcmVzaGFwZV8yOwotZXhwb3J0cy5yZXNoYXBlXzMgICAgICAgICAgPSByZXNo
YXBlXzM7Ci0vKiAgTm90IGEgcHVyZSBtb2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBiaWdhcnJh
eS5qcyAvLy8vLy8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5
WydibG9jayddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8vLy8vLy8v
IHN0YXJ0IG9mIGJsb2NrLmpzIC8vLy8vLy8vCi0ndXNlIHN0cmljdCc7Ci0KLQotZnVuY3Rpb24g
X18odGFnLCBibG9jaykgewotICBibG9jay50YWcgPSB0YWc7Ci0gIHJldHVybiBibG9jazsKLX0K
LQotZXhwb3J0cy5fXyA9IF9fOwotLyogTm8gc2lkZSBlZmZlY3QgKi8KLS8vLy8vLy8vIGVuZCBv
ZiBibG9jay5qcyAvLy8vLy8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3Jl
Z2lzdHJ5WydidWZmZXInXSA9IGZ1bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0v
Ly8vLy8vLyBzdGFydCBvZiBidWZmZXIuanMgLy8vLy8vLy8KLSd1c2Ugc3RyaWN0JzsKLQotdmFy
IFN5cyAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9zeXMiKTsKLXZhciBCeXRlcyAg
ICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0ZXMiKTsKLXZhciBDdXJyeSAgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKLXZhciAkJFN0cmluZyAgICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vc3RyaW5nIik7Ci12YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAg
PSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKLXZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9
IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKLXZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9
IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKLQotZnVuY3Rpb24gY3JlYXRl
KG4pIHsKLSAgdmFyIG4kMSA9IG4gPCAxID8gMSA6IG47Ci0gIHZhciBuJDIgPSBuJDEgPiBTeXMu
bWF4X3N0cmluZ19sZW5ndGggPyBTeXMubWF4X3N0cmluZ19sZW5ndGggOiBuJDE7Ci0gIHZhciBz
ID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKG4kMik7Ci0gIHJldHVybiAvKiByZWNv
cmQgKi9bCi0gICAgICAgICAgLyogYnVmZmVyICovcywKLSAgICAgICAgICAvKiBwb3NpdGlvbiAq
LzAsCi0gICAgICAgICAgLyogbGVuZ3RoICovbiQyLAotICAgICAgICAgIC8qIGluaXRpYWxfYnVm
ZmVyICovcwotICAgICAgICBdOwotfQotCi1mdW5jdGlvbiBjb250ZW50cyhiKSB7Ci0gIHJldHVy
biBCeXRlcy5zdWJfc3RyaW5nKGJbLyogYnVmZmVyICovMF0sIDAsIGJbLyogcG9zaXRpb24gKi8x
XSk7Ci19Ci0KLWZ1bmN0aW9uIHRvX2J5dGVzKGIpIHsKLSAgcmV0dXJuIEJ5dGVzLnN1YihiWy8q
IGJ1ZmZlciAqLzBdLCAwLCBiWy8qIHBvc2l0aW9uICovMV0pOwotfQotCi1mdW5jdGlvbiBzdWIo
Yiwgb2ZzLCBsZW4pIHsKLSAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiAoYlsvKiBw
b3NpdGlvbiAqLzFdIC0gbGVuIHwgMCkpIHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAiQnVmZmVyLnN1
YiIKLSAgICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gQnl0ZXMuc3ViX3N0cmlu
ZyhiWy8qIGJ1ZmZlciAqLzBdLCBvZnMsIGxlbik7Ci0gIH0KLX0KLQotZnVuY3Rpb24gYmxpdChz
cmMsIHNyY29mZiwgZHN0LCBkc3RvZmYsIGxlbikgewotICBpZiAobGVuIDwgMCB8fCBzcmNvZmYg
PCAwIHx8IHNyY29mZiA+IChzcmNbLyogcG9zaXRpb24gKi8xXSAtIGxlbiB8IDApIHx8IGRzdG9m
ZiA8IDAgfHwgZHN0b2ZmID4gKGRzdC5sZW5ndGggLSBsZW4gfCAwKSkgewotICAgIHRocm93IFsK
LSAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAotICAg
ICAgICAgICJCdWZmZXIuYmxpdCIKLSAgICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1
cm4gQnl0ZXMuYmxpdChzcmNbLyogYnVmZmVyICovMF0sIHNyY29mZiwgZHN0LCBkc3RvZmYsIGxl
bik7Ci0gIH0KLX0KLQotZnVuY3Rpb24gbnRoKGIsIG9mcykgewotICBpZiAob2ZzIDwgMCB8fCBv
ZnMgPj0gYlsvKiBwb3NpdGlvbiAqLzFdKSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgIkJ1ZmZlci5u
dGgiCi0gICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIGJbLyogYnVmZmVyICov
MF1bb2ZzXTsKLSAgfQotfQotCi1mdW5jdGlvbiBsZW5ndGgoYikgewotICByZXR1cm4gYlsvKiBw
b3NpdGlvbiAqLzFdOwotfQotCi1mdW5jdGlvbiBjbGVhcihiKSB7Ci0gIGJbLyogcG9zaXRpb24g
Ki8xXSA9IDA7Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIHJlc2V0KGIpIHsK
LSAgYlsvKiBwb3NpdGlvbiAqLzFdID0gMDsKLSAgYlsvKiBidWZmZXIgKi8wXSA9IGJbLyogaW5p
dGlhbF9idWZmZXIgKi8zXTsKLSAgYlsvKiBsZW5ndGggKi8yXSA9IGJbLyogYnVmZmVyICovMF0u
bGVuZ3RoOwotICByZXR1cm4gLyogKCkgKi8wOwotfQotCi1mdW5jdGlvbiByZXNpemUoYiwgbW9y
ZSkgewotICB2YXIgbGVuID0gYlsvKiBsZW5ndGggKi8yXTsKLSAgdmFyIG5ld19sZW4gPSBsZW47
Ci0gIHdoaWxlKChiWy8qIHBvc2l0aW9uICovMV0gKyBtb3JlIHwgMCkgPiBuZXdfbGVuKSB7Ci0g
ICAgbmV3X2xlbiA9IChuZXdfbGVuIDw8IDEpOwotICB9OwotICBpZiAobmV3X2xlbiA+IFN5cy5t
YXhfc3RyaW5nX2xlbmd0aCkgewotICAgIGlmICgoYlsvKiBwb3NpdGlvbiAqLzFdICsgbW9yZSB8
IDApIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCkgewotICAgICAgbmV3X2xlbiA9IFN5cy5tYXhf
c3RyaW5nX2xlbmd0aDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICB0aHJvdyBbCi0gICAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAotICAgICAgICAgICAgIkJ1ZmZl
ci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlciIKLSAgICAgICAgICBdOwotICAgIH0KLSAgfQotICB2
YXIgbmV3X2J1ZmZlciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhuZXdfbGVuKTsK
LSAgQnl0ZXMuYmxpdChiWy8qIGJ1ZmZlciAqLzBdLCAwLCBuZXdfYnVmZmVyLCAwLCBiWy8qIHBv
c2l0aW9uICovMV0pOwotICBiWy8qIGJ1ZmZlciAqLzBdID0gbmV3X2J1ZmZlcjsKLSAgYlsvKiBs
ZW5ndGggKi8yXSA9IG5ld19sZW47Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9u
IGFkZF9jaGFyKGIsIGMpIHsKLSAgdmFyIHBvcyA9IGJbLyogcG9zaXRpb24gKi8xXTsKLSAgaWYg
KHBvcyA+PSBiWy8qIGxlbmd0aCAqLzJdKSB7Ci0gICAgcmVzaXplKGIsIDEpOwotICB9Ci0gIGJb
LyogYnVmZmVyICovMF1bcG9zXSA9IGM7Ci0gIGJbLyogcG9zaXRpb24gKi8xXSA9IHBvcyArIDEg
fCAwOwotICByZXR1cm4gLyogKCkgKi8wOwotfQotCi1mdW5jdGlvbiBhZGRfc3Vic3RyaW5nKGIs
IHMsIG9mZnNldCwgbGVuKSB7Ci0gIGlmIChvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgKG9mZnNl
dCArIGxlbiB8IDApID4gcy5sZW5ndGgpIHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAiQnVmZmVyLmFk
ZF9zdWJzdHJpbmcvYWRkX3N1YmJ5dGVzIgotICAgICAgICBdOwotICB9Ci0gIHZhciBuZXdfcG9z
aXRpb24gPSBiWy8qIHBvc2l0aW9uICovMV0gKyBsZW4gfCAwOwotICBpZiAobmV3X3Bvc2l0aW9u
ID4gYlsvKiBsZW5ndGggKi8yXSkgewotICAgIHJlc2l6ZShiLCBsZW4pOwotICB9Ci0gIEJ5dGVz
LmJsaXRfc3RyaW5nKHMsIG9mZnNldCwgYlsvKiBidWZmZXIgKi8wXSwgYlsvKiBwb3NpdGlvbiAq
LzFdLCBsZW4pOwotICBiWy8qIHBvc2l0aW9uICovMV0gPSBuZXdfcG9zaXRpb247Ci0gIHJldHVy
biAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIGFkZF9zdWJieXRlcyhiLCBzLCBvZmZzZXQsIGxl
bikgewotICByZXR1cm4gYWRkX3N1YnN0cmluZyhiLCBDYW1sX3N0cmluZy5ieXRlc190b19zdHJp
bmcocyksIG9mZnNldCwgbGVuKTsKLX0KLQotZnVuY3Rpb24gYWRkX3N0cmluZyhiLCBzKSB7Ci0g
IHZhciBsZW4gPSBzLmxlbmd0aDsKLSAgdmFyIG5ld19wb3NpdGlvbiA9IGJbLyogcG9zaXRpb24g
Ki8xXSArIGxlbiB8IDA7Ci0gIGlmIChuZXdfcG9zaXRpb24gPiBiWy8qIGxlbmd0aCAqLzJdKSB7
Ci0gICAgcmVzaXplKGIsIGxlbik7Ci0gIH0KLSAgQnl0ZXMuYmxpdF9zdHJpbmcocywgMCwgYlsv
KiBidWZmZXIgKi8wXSwgYlsvKiBwb3NpdGlvbiAqLzFdLCBsZW4pOwotICBiWy8qIHBvc2l0aW9u
ICovMV0gPSBuZXdfcG9zaXRpb247Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9u
IGFkZF9ieXRlcyhiLCBzKSB7Ci0gIHJldHVybiBhZGRfc3RyaW5nKGIsIENhbWxfc3RyaW5nLmJ5
dGVzX3RvX3N0cmluZyhzKSk7Ci19Ci0KLWZ1bmN0aW9uIGFkZF9idWZmZXIoYiwgYnMpIHsKLSAg
cmV0dXJuIGFkZF9zdWJieXRlcyhiLCBic1svKiBidWZmZXIgKi8wXSwgMCwgYnNbLyogcG9zaXRp
b24gKi8xXSk7Ci19Ci0KLWZ1bmN0aW9uIGFkZF9jaGFubmVsKGIsIGljLCBsZW4pIHsKLSAgaWYg
KGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoKSB7Ci0gICAgdGhyb3cgWwot
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAg
ICAgICAgIkJ1ZmZlci5hZGRfY2hhbm5lbCIKLSAgICAgICAgXTsKLSAgfQotICBpZiAoKGJbLyog
cG9zaXRpb24gKi8xXSArIGxlbiB8IDApID4gYlsvKiBsZW5ndGggKi8yXSkgewotICAgIHJlc2l6
ZShiLCBsZW4pOwotICB9Ci0gIFBlcnZhc2l2ZXMucmVhbGx5X2lucHV0KGljLCBiWy8qIGJ1ZmZl
ciAqLzBdLCBiWy8qIHBvc2l0aW9uICovMV0sIGxlbik7Ci0gIGJbLyogcG9zaXRpb24gKi8xXSA9
IGJbLyogcG9zaXRpb24gKi8xXSArIGxlbiB8IDA7Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0K
LWZ1bmN0aW9uIG91dHB1dF9idWZmZXIob2MsIGIpIHsKLSAgcmV0dXJuIFBlcnZhc2l2ZXMub3V0
cHV0KG9jLCBiWy8qIGJ1ZmZlciAqLzBdLCAwLCBiWy8qIHBvc2l0aW9uICovMV0pOwotfQotCi1m
dW5jdGlvbiBjbG9zaW5nKHBhcmFtKSB7Ci0gIGlmIChwYXJhbSAhPT0gNDApIHsKLSAgICBpZiAo
cGFyYW0gIT09IDEyMykgewotICAgICAgdGhyb3cgWwotICAgICAgICAgICAgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICJidWZmZXIubWwiLAotICAgICAgICAgICAgICAxMTUsCi0gICAgICAgICAgICAgIDkKLSAgICAg
ICAgICAgIF0KLSAgICAgICAgICBdOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiAv
KiAifSIgKi8xMjU7Ci0gICAgfQotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAvKiAiKSIgKi80
MTsKLSAgfQotfQotCi1mdW5jdGlvbiBhZHZhbmNlX3RvX2Nsb3Npbmcob3BlbmluZywgY2xvc2lu
Zywgaywgcywgc3RhcnQpIHsKLSAgdmFyIF9rID0gazsKLSAgdmFyIF9pID0gc3RhcnQ7Ci0gIHZh
ciBsaW0gPSBzLmxlbmd0aDsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBpID0gX2k7Ci0gICAg
dmFyIGskMSA9IF9rOwotICAgIGlmIChpID49IGxpbSkgewotICAgICAgdGhyb3cgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOwotICAgIH0KLSAgICBlbHNlIGlmIChDYW1sX3N0cmlu
Zy5nZXQocywgaSkgPT09IG9wZW5pbmcpIHsKLSAgICAgIF9pID0gaSArIDEgfCAwOwotICAgICAg
X2sgPSBrJDEgKyAxIHwgMDsKLSAgICAgIGNvbnRpbnVlIDsKLSAgICAgIAotICAgIH0KLSAgICBl
bHNlIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgPT09IGNsb3NpbmcpIHsKLSAgICAgIGlmIChr
JDEpIHsKLSAgICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAgIF9rID0gayQxIC0gMSB8IDA7
Ci0gICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgCi0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAg
ICAgICAgcmV0dXJuIGk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgX2kgPSBp
ICsgMSB8IDA7Ci0gICAgICBjb250aW51ZSA7Ci0gICAgICAKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1
bmN0aW9uIGFkdmFuY2VfdG9fbm9uX2FscGhhKHMsIHN0YXJ0KSB7Ci0gIHZhciBfaSA9IHN0YXJ0
OwotICB2YXIgbGltID0gcy5sZW5ndGg7Ci0gIHdoaWxlKHRydWUpIHsKLSAgICB2YXIgaSA9IF9p
OwotICAgIGlmIChpID49IGxpbSkgewotICAgICAgcmV0dXJuIGxpbTsKLSAgICB9Ci0gICAgZWxz
ZSB7Ci0gICAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQocywgaSk7Ci0gICAgICB2YXIg
ZXhpdCA9IDA7Ci0gICAgICBpZiAobWF0Y2ggPj0gOTEpIHsKLSAgICAgICAgaWYgKG1hdGNoID49
IDk3KSB7Ci0gICAgICAgICAgaWYgKG1hdGNoID49IDEyMykgewotICAgICAgICAgICAgcmV0dXJu
IGk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXhpdCA9IDE7
Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG1hdGNoICE9PSA5NSkg
ewotICAgICAgICAgIHJldHVybiBpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgIGV4aXQgPSAxOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChtYXRjaCA+
PSA1OCkgewotICAgICAgICBpZiAobWF0Y2ggPj0gNjUpIHsKLSAgICAgICAgICBleGl0ID0gMTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAg
fQotICAgICAgfQotICAgICAgZWxzZSBpZiAobWF0Y2ggPj0gNDgpIHsKLSAgICAgICAgZXhpdCA9
IDE7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGk7Ci0gICAgICB9Ci0g
ICAgICBpZiAoZXhpdCA9PT0gMSkgewotICAgICAgICBfaSA9IGkgKyAxIHwgMDsKLSAgICAgICAg
Y29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIAotICAgIH0KLSAgfTsKLX0KLQot
ZnVuY3Rpb24gZmluZF9pZGVudChzLCBzdGFydCwgbGltKSB7Ci0gIGlmIChzdGFydCA+PSBsaW0p
IHsKLSAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7Ci0gIH0KLSAg
ZWxzZSB7Ci0gICAgdmFyIGMgPSBDYW1sX3N0cmluZy5nZXQocywgc3RhcnQpOwotICAgIHZhciBl
eGl0ID0gMDsKLSAgICBpZiAoYyAhPT0gNDApIHsKLSAgICAgIGlmIChjICE9PSAxMjMpIHsKLSAg
ICAgICAgdmFyIHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYShzLCBzdGFydCArIDEgfCAwKTsK
LSAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAgICQkU3RyaW5nLnN1
YihzLCBzdGFydCwgc3RvcCAtIHN0YXJ0IHwgMCksCi0gICAgICAgICAgICAgICAgc3RvcAotICAg
ICAgICAgICAgICBdOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGV4aXQgPSAxOwot
ICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIGV4aXQgPSAxOwotICAgIH0KLSAgICBp
ZiAoZXhpdCA9PT0gMSkgewotICAgICAgdmFyIG5ld19zdGFydCA9IHN0YXJ0ICsgMSB8IDA7Ci0g
ICAgICB2YXIgc3RvcCQxID0gYWR2YW5jZV90b19jbG9zaW5nKGMsIGNsb3NpbmcoYyksIDAsIHMs
IG5ld19zdGFydCk7Ci0gICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgICQk
U3RyaW5nLnN1YihzLCBuZXdfc3RhcnQsIChzdG9wJDEgLSBzdGFydCB8IDApIC0gMSB8IDApLAot
ICAgICAgICAgICAgICBzdG9wJDEgKyAxIHwgMAotICAgICAgICAgICAgXTsKLSAgICB9Ci0gICAg
Ci0gIH0KLX0KLQotZnVuY3Rpb24gYWRkX3N1YnN0aXR1dGUoYiwgZiwgcykgewotICB2YXIgbGlt
ID0gcy5sZW5ndGg7Ci0gIHZhciBfcHJldmlvdXMgPSAvKiAiICIgKi8zMjsKLSAgdmFyIF9pID0g
MDsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBpID0gX2k7Ci0gICAgdmFyIHByZXZpb3VzID0g
X3ByZXZpb3VzOwotICAgIGlmIChpIDwgbGltKSB7Ci0gICAgICB2YXIgY3VycmVudCA9IENhbWxf
c3RyaW5nLmdldChzLCBpKTsKLSAgICAgIGlmIChjdXJyZW50ICE9PSAzNikgewotICAgICAgICBp
ZiAocHJldmlvdXMgPT09IC8qICJcXCIgKi85MikgewotICAgICAgICAgIGFkZF9jaGFyKGIsIC8q
ICJcXCIgKi85Mik7Ci0gICAgICAgICAgYWRkX2NoYXIoYiwgY3VycmVudCk7Ci0gICAgICAgICAg
X2kgPSBpICsgMSB8IDA7Ci0gICAgICAgICAgX3ByZXZpb3VzID0gLyogIiAiICovMzI7Ci0gICAg
ICAgICAgY29udGludWUgOwotICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGN1cnJlbnQgIT09IDkyKSB7Ci0gICAgICAgICAgYWRkX2NoYXIoYiwgY3VycmVudCk7Ci0gICAg
ICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAgICAgX3ByZXZpb3VzID0gY3VycmVudDsKLSAg
ICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAgICAgX3ByZXZpb3VzID0gY3VycmVu
dDsKLSAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0K
LSAgICAgIGVsc2UgaWYgKHByZXZpb3VzID09PSAvKiAiXFwiICovOTIpIHsKLSAgICAgICAgYWRk
X2NoYXIoYiwgY3VycmVudCk7Ci0gICAgICAgIF9pID0gaSArIDEgfCAwOwotICAgICAgICBfcHJl
dmlvdXMgPSAvKiAiICIgKi8zMjsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAg
IH0KLSAgICAgIGVsc2UgewotICAgICAgICB2YXIgaiA9IGkgKyAxIHwgMDsKLSAgICAgICAgdmFy
IG1hdGNoID0gZmluZF9pZGVudChzLCBqLCBsaW0pOwotICAgICAgICBhZGRfc3RyaW5nKGIsIEN1
cnJ5Ll8xKGYsIG1hdGNoWzBdKSk7Ci0gICAgICAgIF9pID0gbWF0Y2hbMV07Ci0gICAgICAgIF9w
cmV2aW91cyA9IC8qICIgIiAqLzMyOwotICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgIAotICAg
ICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChwcmV2aW91cyA9PT0gLyogIlxcIiAqLzkyKSB7Ci0g
ICAgICByZXR1cm4gYWRkX2NoYXIoYiwgcHJldmlvdXMpOwotICAgIH0KLSAgICBlbHNlIHsKLSAg
ICAgIHJldHVybiAwOwotICAgIH0KLSAgfTsKLX0KLQotZXhwb3J0cy5jcmVhdGUgICAgICAgICA9
IGNyZWF0ZTsKLWV4cG9ydHMuY29udGVudHMgICAgICAgPSBjb250ZW50czsKLWV4cG9ydHMudG9f
Ynl0ZXMgICAgICAgPSB0b19ieXRlczsKLWV4cG9ydHMuc3ViICAgICAgICAgICAgPSBzdWI7Ci1l
eHBvcnRzLmJsaXQgICAgICAgICAgID0gYmxpdDsKLWV4cG9ydHMubnRoICAgICAgICAgICAgPSBu
dGg7Ci1leHBvcnRzLmxlbmd0aCAgICAgICAgID0gbGVuZ3RoOwotZXhwb3J0cy5jbGVhciAgICAg
ICAgICA9IGNsZWFyOwotZXhwb3J0cy5yZXNldCAgICAgICAgICA9IHJlc2V0OwotZXhwb3J0cy5h
ZGRfY2hhciAgICAgICA9IGFkZF9jaGFyOwotZXhwb3J0cy5hZGRfc3RyaW5nICAgICA9IGFkZF9z
dHJpbmc7Ci1leHBvcnRzLmFkZF9ieXRlcyAgICAgID0gYWRkX2J5dGVzOwotZXhwb3J0cy5hZGRf
c3Vic3RyaW5nICA9IGFkZF9zdWJzdHJpbmc7Ci1leHBvcnRzLmFkZF9zdWJieXRlcyAgID0gYWRk
X3N1YmJ5dGVzOwotZXhwb3J0cy5hZGRfc3Vic3RpdHV0ZSA9IGFkZF9zdWJzdGl0dXRlOwotZXhw
b3J0cy5hZGRfYnVmZmVyICAgICA9IGFkZF9idWZmZXI7Ci1leHBvcnRzLmFkZF9jaGFubmVsICAg
ID0gYWRkX2NoYW5uZWw7Ci1leHBvcnRzLm91dHB1dF9idWZmZXIgID0gb3V0cHV0X2J1ZmZlcjsK
LS8qIE5vIHNpZGUgZWZmZWN0ICovCi0vLy8vLy8vLyBlbmQgb2YgYnVmZmVyLmpzIC8vLy8vLy8v
Ci0gICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ2J5dGVzJ10gPSBm
dW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgYnl0
ZXMuanMgLy8vLy8vLy8KLSd1c2Ugc3RyaWN0JzsKLQotdmFyIENoYXIgICAgICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9jaGFyIik7Ci12YXIgTGlzdCAgICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL2xpc3QiKTsKLXZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUo
Ii4vY3VycnkiKTsKLXZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2Ft
bF9vYmoiKTsKLXZhciBDYW1sX2ludDMyICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9p
bnQzMiIpOwotdmFyIFBlcnZhc2l2ZXMgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9wZXJ2YXNp
dmVzIik7Ci12YXIgQ2FtbF9zdHJpbmcgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfc3Ry
aW5nIik7Ci12YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVp
bHRpbl9leGNlcHRpb25zIik7Ci0KLWZ1bmN0aW9uIG1ha2UobiwgYykgewotICB2YXIgcyA9IENh
bWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhuKTsKLSAgQ2FtbF9zdHJpbmcuY2FtbF9maWxs
X3N0cmluZyhzLCAwLCBuLCBjKTsKLSAgcmV0dXJuIHM7Ci19Ci0KLWZ1bmN0aW9uIGluaXQobiwg
ZikgewotICB2YXIgcyA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhuKTsKLSAgZm9y
KHZhciBpID0gMCAsaV9maW5pc2ggPSBuIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7Ci0g
ICAgc1tpXSA9IEN1cnJ5Ll8xKGYsIGkpOwotICB9Ci0gIHJldHVybiBzOwotfQotCi12YXIgZW1w
dHkgPSBbXTsKLQotZnVuY3Rpb24gY29weShzKSB7Ci0gIHZhciBsZW4gPSBzLmxlbmd0aDsKLSAg
dmFyIHIgPSBDYW1sX3N0cmluZy5jYW1sX2NyZWF0ZV9zdHJpbmcobGVuKTsKLSAgQ2FtbF9zdHJp
bmcuY2FtbF9ibGl0X2J5dGVzKHMsIDAsIHIsIDAsIGxlbik7Ci0gIHJldHVybiByOwotfQotCi1m
dW5jdGlvbiB0b19zdHJpbmcoYikgewotICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3Ry
aW5nKGNvcHkoYikpOwotfQotCi1mdW5jdGlvbiBvZl9zdHJpbmcocykgewotICByZXR1cm4gY29w
eShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpOwotfQotCi1mdW5jdGlvbiBzdWIocywg
b2ZzLCBsZW4pIHsKLSAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiAocy5sZW5ndGgg
LSBsZW4gfCAwKSkgewotICAgIHRocm93IFsKLSAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAotICAgICAgICAgICJTdHJpbmcuc3ViIC8gQnl0ZXMuc3Vi
IgotICAgICAgICBdOwotICB9Ci0gIGVsc2UgewotICAgIHZhciByID0gQ2FtbF9zdHJpbmcuY2Ft
bF9jcmVhdGVfc3RyaW5nKGxlbik7Ci0gICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X2J5dGVzKHMs
IG9mcywgciwgMCwgbGVuKTsKLSAgICByZXR1cm4gcjsKLSAgfQotfQotCi1mdW5jdGlvbiBzdWJf
c3RyaW5nKGIsIG9mcywgbGVuKSB7Ci0gIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJp
bmcoc3ViKGIsIG9mcywgbGVuKSk7Ci19Ci0KLWZ1bmN0aW9uIGV4dGVuZChzLCBsZWZ0LCByaWdo
dCkgewotICB2YXIgbGVuID0gKHMubGVuZ3RoICsgbGVmdCB8IDApICsgcmlnaHQgfCAwOwotICB2
YXIgciA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhsZW4pOwotICB2YXIgbWF0Y2gg
PSBsZWZ0IDwgMCA/IC8qIHR1cGxlICovWwotICAgICAgLWxlZnQgfCAwLAotICAgICAgMAotICAg
IF0gOiAvKiB0dXBsZSAqL1sKLSAgICAgIDAsCi0gICAgICBsZWZ0Ci0gICAgXTsKLSAgdmFyIGRz
dG9mZiA9IG1hdGNoWzFdOwotICB2YXIgc3Jjb2ZmID0gbWF0Y2hbMF07Ci0gIHZhciBjcHlsZW4g
PSBQZXJ2YXNpdmVzLm1pbihzLmxlbmd0aCAtIHNyY29mZiB8IDAsIGxlbiAtIGRzdG9mZiB8IDAp
OwotICBpZiAoY3B5bGVuID4gMCkgewotICAgIENhbWxfc3RyaW5nLmNhbWxfYmxpdF9ieXRlcyhz
LCBzcmNvZmYsIHIsIGRzdG9mZiwgY3B5bGVuKTsKLSAgfQotICByZXR1cm4gcjsKLX0KLQotZnVu
Y3Rpb24gZmlsbChzLCBvZnMsIGxlbiwgYykgewotICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8
IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgIlN0cmlu
Zy5maWxsIC8gQnl0ZXMuZmlsbCIKLSAgICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1
cm4gQ2FtbF9zdHJpbmcuY2FtbF9maWxsX3N0cmluZyhzLCBvZnMsIGxlbiwgYyk7Ci0gIH0KLX0K
LQotZnVuY3Rpb24gYmxpdChzMSwgb2ZzMSwgczIsIG9mczIsIGxlbikgewotICBpZiAobGVuIDwg
MCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gKHMxLmxlbmd0aCAtIGxlbiB8IDApIHx8IG9mczIgPCAw
IHx8IG9mczIgPiAoczIubGVuZ3RoIC0gbGVuIHwgMCkpIHsKLSAgICB0aHJvdyBbCi0gICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAi
Qnl0ZXMuYmxpdCIKLSAgICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gQ2FtbF9z
dHJpbmcuY2FtbF9ibGl0X2J5dGVzKHMxLCBvZnMxLCBzMiwgb2ZzMiwgbGVuKTsKLSAgfQotfQot
Ci1mdW5jdGlvbiBibGl0X3N0cmluZyhzMSwgb2ZzMSwgczIsIG9mczIsIGxlbikgewotICBpZiAo
bGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gKHMxLmxlbmd0aCAtIGxlbiB8IDApIHx8IG9m
czIgPCAwIHx8IG9mczIgPiAoczIubGVuZ3RoIC0gbGVuIHwgMCkpIHsKLSAgICB0aHJvdyBbCi0g
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAg
ICAgICAiU3RyaW5nLmJsaXQgLyBCeXRlcy5ibGl0X3N0cmluZyIKLSAgICAgICAgXTsKLSAgfQot
ICBlbHNlIHsKLSAgICByZXR1cm4gQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmluZyhzMSwgb2Zz
MSwgczIsIG9mczIsIGxlbik7Ci0gIH0KLX0KLQotZnVuY3Rpb24gaXRlcihmLCBhKSB7Ci0gIGZv
cih2YXIgaSA9IDAgLGlfZmluaXNoID0gYS5sZW5ndGggLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsg
KytpKXsKLSAgICBDdXJyeS5fMShmLCBhW2ldKTsKLSAgfQotICByZXR1cm4gLyogKCkgKi8wOwot
fQotCi1mdW5jdGlvbiBpdGVyaShmLCBhKSB7Ci0gIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0g
YS5sZW5ndGggLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKLSAgICBDdXJyeS5fMihmLCBp
LCBhW2ldKTsKLSAgfQotICByZXR1cm4gLyogKCkgKi8wOwotfQotCi1mdW5jdGlvbiBjb25jYXQo
c2VwLCBsKSB7Ci0gIGlmIChsKSB7Ci0gICAgdmFyIGhkID0gbFswXTsKLSAgICB2YXIgbnVtID0g
WzBdOwotICAgIHZhciBsZW4gPSBbMF07Ci0gICAgTGlzdC5pdGVyKGZ1bmN0aW9uIChzKSB7Ci0g
ICAgICAgICAgbnVtWzBdID0gbnVtWzBdICsgMSB8IDA7Ci0gICAgICAgICAgbGVuWzBdID0gbGVu
WzBdICsgcy5sZW5ndGggfCAwOwotICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgICAg
IH0sIGwpOwotICAgIHZhciByID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKGxlblsw
XSArIENhbWxfaW50MzIuaW11bChzZXAubGVuZ3RoLCBudW1bMF0gLSAxIHwgMCkgfCAwKTsKLSAg
ICBDYW1sX3N0cmluZy5jYW1sX2JsaXRfYnl0ZXMoaGQsIDAsIHIsIDAsIGhkLmxlbmd0aCk7Ci0g
ICAgdmFyIHBvcyA9IFtoZC5sZW5ndGhdOwotICAgIExpc3QuaXRlcihmdW5jdGlvbiAocykgewot
ICAgICAgICAgIENhbWxfc3RyaW5nLmNhbWxfYmxpdF9ieXRlcyhzZXAsIDAsIHIsIHBvc1swXSwg
c2VwLmxlbmd0aCk7Ci0gICAgICAgICAgcG9zWzBdID0gcG9zWzBdICsgc2VwLmxlbmd0aCB8IDA7
Ci0gICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X2J5dGVzKHMsIDAsIHIsIHBvc1swXSwg
cy5sZW5ndGgpOwotICAgICAgICAgIHBvc1swXSA9IHBvc1swXSArIHMubGVuZ3RoIHwgMDsKLSAg
ICAgICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgICAgICB9LCBsWzFdKTsKLSAgICByZXR1cm4g
cjsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gZW1wdHk7Ci0gIH0KLX0KLQotZnVuY3Rpb24g
Y2F0KGEsIGIpIHsKLSAgcmV0dXJuIGEuY29uY2F0KGIpOwotfQotCi1mdW5jdGlvbiBpc19zcGFj
ZShwYXJhbSkgewotICB2YXIgc3dpdGNoZXIgPSBwYXJhbSAtIDkgfCAwOwotICBpZiAoc3dpdGNo
ZXIgPiA0IHx8IHN3aXRjaGVyIDwgMCkgewotICAgIGlmIChzd2l0Y2hlciAhPT0gMjMpIHsKLSAg
ICAgIHJldHVybiAvKiBmYWxzZSAqLzA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJu
IC8qIHRydWUgKi8xOwotICAgIH0KLSAgfQotICBlbHNlIGlmIChzd2l0Y2hlciAhPT0gMikgewot
ICAgIHJldHVybiAvKiB0cnVlICovMTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyogZmFs
c2UgKi8wOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHRyaW0ocykgewotICB2YXIgbGVuID0gcy5sZW5n
dGg7Ci0gIHZhciBpID0gMDsKLSAgd2hpbGUoaSA8IGxlbiAmJiBpc19zcGFjZShzW2ldKSkgewot
ICAgIGkgPSBpICsgMSB8IDA7Ci0gIH07Ci0gIHZhciBqID0gbGVuIC0gMSB8IDA7Ci0gIHdoaWxl
KGogPj0gaSAmJiBpc19zcGFjZShzW2pdKSkgewotICAgIGogPSBqIC0gMSB8IDA7Ci0gIH07Ci0g
IGlmIChqID49IGkpIHsKLSAgICByZXR1cm4gc3ViKHMsIGksIChqIC0gaSB8IDApICsgMSB8IDAp
OwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBlbXB0eTsKLSAgfQotfQotCi1mdW5jdGlvbiBl
c2NhcGVkKHMpIHsKLSAgdmFyIG4gPSAwOwotICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IHMu
bGVuZ3RoIC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7Ci0gICAgdmFyIG1hdGNoID0gc1tp
XTsKLSAgICB2YXIgJGpzOwotICAgIGlmIChtYXRjaCA+PSAzMikgewotICAgICAgdmFyIHN3aXRj
aGVyID0gbWF0Y2ggLSAzNCB8IDA7Ci0gICAgICAkanMgPSBzd2l0Y2hlciA+IDU4IHx8IHN3aXRj
aGVyIDwgMCA/ICgKLSAgICAgICAgICBzd2l0Y2hlciA+PSA5MyA/IDQgOiAxCi0gICAgICAgICkg
OiAoCi0gICAgICAgICAgc3dpdGNoZXIgPiA1NyB8fCBzd2l0Y2hlciA8IDEgPyAyIDogMQotICAg
ICAgICApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRqcyA9IG1hdGNoID49IDExID8gKAot
ICAgICAgICAgIG1hdGNoICE9PSAxMyA/IDQgOiAyCi0gICAgICAgICkgOiAoCi0gICAgICAgICAg
bWF0Y2ggPj0gOCA/IDIgOiA0Ci0gICAgICAgICk7Ci0gICAgfQotICAgIG4gPSBuICsgJGpzIHwg
MDsKLSAgfQotICBpZiAobiA9PT0gcy5sZW5ndGgpIHsKLSAgICByZXR1cm4gY29weShzKTsKLSAg
fQotICBlbHNlIHsKLSAgICB2YXIgcyRwcmltZSA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0
cmluZyhuKTsKLSAgICBuID0gMDsKLSAgICBmb3IodmFyIGkkMSA9IDAgLGlfZmluaXNoJDEgPSBz
Lmxlbmd0aCAtIDEgfCAwOyBpJDEgPD0gaV9maW5pc2gkMTsgKytpJDEpewotICAgICAgdmFyIGMg
PSBzW2kkMV07Ci0gICAgICB2YXIgZXhpdCA9IDA7Ci0gICAgICBpZiAoYyA+PSAzNSkgewotICAg
ICAgICBpZiAoYyAhPT0gOTIpIHsKLSAgICAgICAgICBpZiAoYyA+PSAxMjcpIHsKLSAgICAgICAg
ICAgIGV4aXQgPSAxOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IHMkcHJpbWVbbl0gPSBjOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICBleGl0ID0gMjsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAo
YyA+PSAzMikgewotICAgICAgICBpZiAoYyA+PSAzNCkgewotICAgICAgICAgIGV4aXQgPSAyOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHMkcHJpbWVbbl0gPSBjOwotICAg
ICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChjID49IDE0KSB7Ci0gICAgICAgIGV4aXQg
PSAxOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHN3aXRjaCAoYykgewotICAgICAg
ICAgIGNhc2UgOCA6IAotICAgICAgICAgICAgICBzJHByaW1lW25dID0gLyogIlxcIiAqLzkyOwot
ICAgICAgICAgICAgICBuID0gbiArIDEgfCAwOwotICAgICAgICAgICAgICBzJHByaW1lW25dID0g
LyogImIiICovOTg7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgOSA6IAot
ICAgICAgICAgICAgICBzJHByaW1lW25dID0gLyogIlxcIiAqLzkyOwotICAgICAgICAgICAgICBu
ID0gbiArIDEgfCAwOwotICAgICAgICAgICAgICBzJHByaW1lW25dID0gLyogInQiICovMTE2Owot
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIDEwIDogCi0gICAgICAgICAgICAg
IHMkcHJpbWVbbl0gPSAvKiAiXFwiICovOTI7Ci0gICAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7
Ci0gICAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAibiIgKi8xMTA7Ci0gICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgIGNhc2UgMCA6IAotICAgICAgICAgIGNhc2UgMSA6IAotICAgICAg
ICAgIGNhc2UgMiA6IAotICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgIGNhc2UgNCA6IAot
ICAgICAgICAgIGNhc2UgNSA6IAotICAgICAgICAgIGNhc2UgNiA6IAotICAgICAgICAgIGNhc2Ug
NyA6IAotICAgICAgICAgIGNhc2UgMTEgOiAKLSAgICAgICAgICBjYXNlIDEyIDogCi0gICAgICAg
ICAgICAgIGV4aXQgPSAxOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIDEz
IDogCi0gICAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiXFwiICovOTI7Ci0gICAgICAgICAg
ICAgIG4gPSBuICsgMSB8IDA7Ci0gICAgICAgICAgICAgIHMkcHJpbWVbbl0gPSAvKiAiciIgKi8x
MTQ7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICB9
Ci0gICAgICBzd2l0Y2ggKGV4aXQpIHsKLSAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICBz
JHByaW1lW25dID0gLyogIlxcIiAqLzkyOwotICAgICAgICAgICAgbiA9IG4gKyAxIHwgMDsKLSAg
ICAgICAgICAgIHMkcHJpbWVbbl0gPSA0OCArIChjIC8gMTAwIHwgMCkgfCAwOwotICAgICAgICAg
ICAgbiA9IG4gKyAxIHwgMDsKLSAgICAgICAgICAgIHMkcHJpbWVbbl0gPSA0OCArIChjIC8gMTAg
fCAwKSAlIDEwIHwgMDsKLSAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7Ci0gICAgICAgICAgICBz
JHByaW1lW25dID0gNDggKyBjICUgMTAgfCAwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgMiA6IAotICAgICAgICAgICAgcyRwcmltZVtuXSA9IC8qICJcXCIgKi85MjsKLSAgICAg
ICAgICAgIG4gPSBuICsgMSB8IDA7Ci0gICAgICAgICAgICBzJHByaW1lW25dID0gYzsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIG4gPSBuICsgMSB8IDA7Ci0g
ICAgfQotICAgIHJldHVybiBzJHByaW1lOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG1hcChmLCBzKSB7
Ci0gIHZhciBsID0gcy5sZW5ndGg7Ci0gIGlmIChsKSB7Ci0gICAgdmFyIHIgPSBDYW1sX3N0cmlu
Zy5jYW1sX2NyZWF0ZV9zdHJpbmcobCk7Ci0gICAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBs
IC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7Ci0gICAgICByW2ldID0gQ3VycnkuXzEoZiwg
c1tpXSk7Ci0gICAgfQotICAgIHJldHVybiByOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBz
OwotICB9Ci19Ci0KLWZ1bmN0aW9uIG1hcGkoZiwgcykgewotICB2YXIgbCA9IHMubGVuZ3RoOwot
ICBpZiAobCkgewotICAgIHZhciByID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKGwp
OwotICAgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbCAtIDEgfCAwOyBpIDw9IGlfZmluaXNo
OyArK2kpewotICAgICAgcltpXSA9IEN1cnJ5Ll8yKGYsIGksIHNbaV0pOwotICAgIH0KLSAgICBy
ZXR1cm4gcjsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gczsKLSAgfQotfQotCi1mdW5jdGlv
biB1cHBlcmNhc2UocykgewotICByZXR1cm4gbWFwKENoYXIudXBwZXJjYXNlLCBzKTsKLX0KLQot
ZnVuY3Rpb24gbG93ZXJjYXNlKHMpIHsKLSAgcmV0dXJuIG1hcChDaGFyLmxvd2VyY2FzZSwgcyk7
Ci19Ci0KLWZ1bmN0aW9uIGFwcGx5MShmLCBzKSB7Ci0gIGlmIChzLmxlbmd0aCkgewotICAgIHZh
ciByID0gY29weShzKTsKLSAgICByWzBdID0gQ3VycnkuXzEoZiwgc1swXSk7Ci0gICAgcmV0dXJu
IHI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIHM7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY2Fw
aXRhbGl6ZShzKSB7Ci0gIHJldHVybiBhcHBseTEoQ2hhci51cHBlcmNhc2UsIHMpOwotfQotCi1m
dW5jdGlvbiB1bmNhcGl0YWxpemUocykgewotICByZXR1cm4gYXBwbHkxKENoYXIubG93ZXJjYXNl
LCBzKTsKLX0KLQotZnVuY3Rpb24gaW5kZXhfcmVjKHMsIGxpbSwgX2ksIGMpIHsKLSAgd2hpbGUo
dHJ1ZSkgewotICAgIHZhciBpID0gX2k7Ci0gICAgaWYgKGkgPj0gbGltKSB7Ci0gICAgICB0aHJv
dyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7Ci0gICAgfQotICAgIGVsc2UgaWYg
KHNbaV0gPT09IGMpIHsKLSAgICAgIHJldHVybiBpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAg
IF9pID0gaSArIDEgfCAwOwotICAgICAgY29udGludWUgOwotICAgICAgCi0gICAgfQotICB9Owot
fQotCi1mdW5jdGlvbiBpbmRleChzLCBjKSB7Ci0gIHJldHVybiBpbmRleF9yZWMocywgcy5sZW5n
dGgsIDAsIGMpOwotfQotCi1mdW5jdGlvbiBpbmRleF9mcm9tKHMsIGksIGMpIHsKLSAgdmFyIGwg
PSBzLmxlbmd0aDsKLSAgaWYgKGkgPCAwIHx8IGkgPiBsKSB7Ci0gICAgdGhyb3cgWwotICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAg
IlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbSIKLSAgICAgICAgXTsKLSAgfQot
ICBlbHNlIHsKLSAgICByZXR1cm4gaW5kZXhfcmVjKHMsIGwsIGksIGMpOwotICB9Ci19Ci0KLWZ1
bmN0aW9uIHJpbmRleF9yZWMocywgX2ksIGMpIHsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBp
ID0gX2k7Ci0gICAgaWYgKGkgPCAwKSB7Ci0gICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5ub3RfZm91bmQ7Ci0gICAgfQotICAgIGVsc2UgaWYgKHNbaV0gPT09IGMpIHsKLSAgICAg
IHJldHVybiBpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIF9pID0gaSAtIDEgfCAwOwotICAg
ICAgY29udGludWUgOwotICAgICAgCi0gICAgfQotICB9OwotfQotCi1mdW5jdGlvbiByaW5kZXgo
cywgYykgewotICByZXR1cm4gcmluZGV4X3JlYyhzLCBzLmxlbmd0aCAtIDEgfCAwLCBjKTsKLX0K
LQotZnVuY3Rpb24gcmluZGV4X2Zyb20ocywgaSwgYykgewotICBpZiAoaSA8IC0xIHx8IGkgPj0g
cy5sZW5ndGgpIHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0
ZXMucmluZGV4X2Zyb20iCi0gICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIHJp
bmRleF9yZWMocywgaSwgYyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY29udGFpbnNfZnJvbShzLCBp
LCBjKSB7Ci0gIHZhciBsID0gcy5sZW5ndGg7Ci0gIGlmIChpIDwgMCB8fCBpID4gbCkgewotICAg
IHRocm93IFsKLSAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3Vt
ZW50LAotICAgICAgICAgICJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zy
b20iCi0gICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgdHJ5IHsKLSAgICAgIGluZGV4X3Jl
YyhzLCBsLCBpLCBjKTsKLSAgICAgIHJldHVybiAvKiB0cnVlICovMTsKLSAgICB9Ci0gICAgY2F0
Y2ggKGV4bil7Ci0gICAgICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3Rf
Zm91bmQpIHsKLSAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgICAgIH0KLSAgICAgIGVs
c2UgewotICAgICAgICB0aHJvdyBleG47Ci0gICAgICB9Ci0gICAgfQotICB9Ci19Ci0KLWZ1bmN0
aW9uIGNvbnRhaW5zKHMsIGMpIHsKLSAgcmV0dXJuIGNvbnRhaW5zX2Zyb20ocywgMCwgYyk7Ci19
Ci0KLWZ1bmN0aW9uIHJjb250YWluc19mcm9tKHMsIGksIGMpIHsKLSAgaWYgKGkgPCAwIHx8IGkg
Pj0gcy5sZW5ndGgpIHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAiU3RyaW5nLnJjb250YWluc19mcm9t
IC8gQnl0ZXMucmNvbnRhaW5zX2Zyb20iCi0gICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAg
dHJ5IHsKLSAgICAgIHJpbmRleF9yZWMocywgaSwgYyk7Ci0gICAgICByZXR1cm4gLyogdHJ1ZSAq
LzE7Ci0gICAgfQotICAgIGNhdGNoIChleG4pewotICAgICAgaWYgKGV4biA9PT0gQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7Ci0gICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7
Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3cgZXhuOwotICAgICAgfQotICAg
IH0KLSAgfQotfQotCi12YXIgY29tcGFyZSA9IENhbWxfb2JqLmNhbWxfY29tcGFyZTsKLQotdmFy
IHVuc2FmZV90b19zdHJpbmcgPSBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmc7Ci0KLXZhciB1
bnNhZmVfb2Zfc3RyaW5nID0gQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nOwotCi1leHBvcnRz
Lm1ha2UgICAgICAgICAgICAgPSBtYWtlOwotZXhwb3J0cy5pbml0ICAgICAgICAgICAgID0gaW5p
dDsKLWV4cG9ydHMuZW1wdHkgICAgICAgICAgICA9IGVtcHR5OwotZXhwb3J0cy5jb3B5ICAgICAg
ICAgICAgID0gY29weTsKLWV4cG9ydHMub2Zfc3RyaW5nICAgICAgICA9IG9mX3N0cmluZzsKLWV4
cG9ydHMudG9fc3RyaW5nICAgICAgICA9IHRvX3N0cmluZzsKLWV4cG9ydHMuc3ViICAgICAgICAg
ICAgICA9IHN1YjsKLWV4cG9ydHMuc3ViX3N0cmluZyAgICAgICA9IHN1Yl9zdHJpbmc7Ci1leHBv
cnRzLmV4dGVuZCAgICAgICAgICAgPSBleHRlbmQ7Ci1leHBvcnRzLmZpbGwgICAgICAgICAgICAg
PSBmaWxsOwotZXhwb3J0cy5ibGl0ICAgICAgICAgICAgID0gYmxpdDsKLWV4cG9ydHMuYmxpdF9z
dHJpbmcgICAgICA9IGJsaXRfc3RyaW5nOwotZXhwb3J0cy5jb25jYXQgICAgICAgICAgID0gY29u
Y2F0OwotZXhwb3J0cy5jYXQgICAgICAgICAgICAgID0gY2F0OwotZXhwb3J0cy5pdGVyICAgICAg
ICAgICAgID0gaXRlcjsKLWV4cG9ydHMuaXRlcmkgICAgICAgICAgICA9IGl0ZXJpOwotZXhwb3J0
cy5tYXAgICAgICAgICAgICAgID0gbWFwOwotZXhwb3J0cy5tYXBpICAgICAgICAgICAgID0gbWFw
aTsKLWV4cG9ydHMudHJpbSAgICAgICAgICAgICA9IHRyaW07Ci1leHBvcnRzLmVzY2FwZWQgICAg
ICAgICAgPSBlc2NhcGVkOwotZXhwb3J0cy5pbmRleCAgICAgICAgICAgID0gaW5kZXg7Ci1leHBv
cnRzLnJpbmRleCAgICAgICAgICAgPSByaW5kZXg7Ci1leHBvcnRzLmluZGV4X2Zyb20gICAgICAg
PSBpbmRleF9mcm9tOwotZXhwb3J0cy5yaW5kZXhfZnJvbSAgICAgID0gcmluZGV4X2Zyb207Ci1l
eHBvcnRzLmNvbnRhaW5zICAgICAgICAgPSBjb250YWluczsKLWV4cG9ydHMuY29udGFpbnNfZnJv
bSAgICA9IGNvbnRhaW5zX2Zyb207Ci1leHBvcnRzLnJjb250YWluc19mcm9tICAgPSByY29udGFp
bnNfZnJvbTsKLWV4cG9ydHMudXBwZXJjYXNlICAgICAgICA9IHVwcGVyY2FzZTsKLWV4cG9ydHMu
bG93ZXJjYXNlICAgICAgICA9IGxvd2VyY2FzZTsKLWV4cG9ydHMuY2FwaXRhbGl6ZSAgICAgICA9
IGNhcGl0YWxpemU7Ci1leHBvcnRzLnVuY2FwaXRhbGl6ZSAgICAgPSB1bmNhcGl0YWxpemU7Ci1l
eHBvcnRzLmNvbXBhcmUgICAgICAgICAgPSBjb21wYXJlOwotZXhwb3J0cy51bnNhZmVfdG9fc3Ry
aW5nID0gdW5zYWZlX3RvX3N0cmluZzsKLWV4cG9ydHMudW5zYWZlX29mX3N0cmluZyA9IHVuc2Fm
ZV9vZl9zdHJpbmc7Ci0vKiBObyBzaWRlIGVmZmVjdCAqLwotLy8vLy8vLy8gZW5kIG9mIGJ5dGVz
LmpzIC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlb
J2NhbWxfYXJyYXknXSA9IGZ1bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8v
Ly8vLyBzdGFydCBvZiBjYW1sX2FycmF5LmpzIC8vLy8vLy8vCi0ndXNlIHN0cmljdCc7Ci0KLQot
ZnVuY3Rpb24gY2FtbF9hcnJheV9zdWIoeCwgb2Zmc2V0LCBsZW4pIHsKLSAgdmFyIHJlc3VsdCA9
IG5ldyBBcnJheShsZW4pOwotICB2YXIgaiA9IDA7Ci0gIHZhciBpID0gb2Zmc2V0OwotICB3aGls
ZShqIDwgbGVuKSB7Ci0gICAgcmVzdWx0W2pdID0geFtpXTsKLSAgICBqID0gaiArIDEgfCAwOwot
ICAgIGkgPSBpICsgMSB8IDA7Ci0gIH07Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZ1bmN0aW9u
IGxlbihfYWNjLCBfbCkgewotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIGwgPSBfbDsKLSAgICB2
YXIgYWNjID0gX2FjYzsKLSAgICBpZiAobCkgewotICAgICAgX2wgPSBsWzFdOwotICAgICAgX2Fj
YyA9IGxbMF0ubGVuZ3RoICsgYWNjIHwgMDsKLSAgICAgIGNvbnRpbnVlIDsKLSAgICAgIAotICAg
IH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBhY2M7Ci0gICAgfQotICB9OwotfQotCi1mdW5j
dGlvbiBmaWxsKGFyciwgX2ksIF9sKSB7Ci0gIHdoaWxlKHRydWUpIHsKLSAgICB2YXIgbCA9IF9s
OwotICAgIHZhciBpID0gX2k7Ci0gICAgaWYgKGwpIHsKLSAgICAgIHZhciB4ID0gbFswXTsKLSAg
ICAgIHZhciBsJDEgPSB4Lmxlbmd0aDsKLSAgICAgIHZhciBrID0gaTsKLSAgICAgIHZhciBqID0g
MDsKLSAgICAgIHdoaWxlKGogPCBsJDEpIHsKLSAgICAgICAgYXJyW2tdID0geFtqXTsKLSAgICAg
ICAgayA9IGsgKyAxIHwgMDsKLSAgICAgICAgaiA9IGogKyAxIHwgMDsKLSAgICAgIH07Ci0gICAg
ICBfbCA9IGxbMV07Ci0gICAgICBfaSA9IGs7Ci0gICAgICBjb250aW51ZSA7Ci0gICAgICAKLSAg
ICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgIH0KLSAgfTsKLX0K
LQotZnVuY3Rpb24gY2FtbF9hcnJheV9jb25jYXQobCkgewotICB2YXIgdiA9IGxlbigwLCBsKTsK
LSAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSh2KTsKLSAgZmlsbChyZXN1bHQsIDAsIGwpOwotICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1mdW5jdGlvbiBjYW1sX21ha2VfdmVjdChsZW4sIGluaXQpIHsK
LSAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKTsKLSAgZm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBs
ZW4gLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKLSAgICBiW2ldID0gaW5pdDsKLSAgfQot
ICByZXR1cm4gYjsKLX0KLQotZnVuY3Rpb24gY2FtbF9hcnJheV9ibGl0KGExLCBpMSwgYTIsIGky
LCBsZW4pIHsKLSAgaWYgKGkyIDw9IGkxKSB7Ci0gICAgZm9yKHZhciBqID0gMCAsal9maW5pc2gg
PSBsZW4gLSAxIHwgMDsgaiA8PSBqX2ZpbmlzaDsgKytqKXsKLSAgICAgIGEyW2ogKyBpMiB8IDBd
ID0gYTFbaiArIGkxIHwgMF07Ci0gICAgfQotICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gIH0KLSAg
ZWxzZSB7Ci0gICAgZm9yKHZhciBqJDEgPSBsZW4gLSAxIHwgMDsgaiQxID49IDA7IC0taiQxKXsK
LSAgICAgIGEyW2okMSArIGkyIHwgMF0gPSBhMVtqJDEgKyBpMSB8IDBdOwotICAgIH0KLSAgICBy
ZXR1cm4gLyogKCkgKi8wOwotICB9Ci19Ci0KLWV4cG9ydHMuY2FtbF9hcnJheV9zdWIgICAgPSBj
YW1sX2FycmF5X3N1YjsKLWV4cG9ydHMuY2FtbF9hcnJheV9jb25jYXQgPSBjYW1sX2FycmF5X2Nv
bmNhdDsKLWV4cG9ydHMuY2FtbF9tYWtlX3ZlY3QgICAgPSBjYW1sX21ha2VfdmVjdDsKLWV4cG9y
dHMuY2FtbF9hcnJheV9ibGl0ICAgPSBjYW1sX2FycmF5X2JsaXQ7Ci0vKiBObyBzaWRlIGVmZmVj
dCAqLwotLy8vLy8vLy8gZW5kIG9mIGNhbWxfYXJyYXkuanMgLy8vLy8vLy8KLSAgICByZXR1cm4g
ZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMn
XSA9IGZ1bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBv
ZiBjYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5qcyAvLy8vLy8vLwotJ3VzZSBzdHJpY3QnOwotCi0K
LXZhciBvdXRfb2ZfbWVtb3J5ID0gLyogdHVwbGUgKi9bCi0gICJPdXRfb2ZfbWVtb3J5IiwKLSAg
MAotXTsKLQotdmFyIHN5c19lcnJvciA9IC8qIHR1cGxlICovWwotICAiU3lzX2Vycm9yIiwKLSAg
LTEKLV07Ci0KLXZhciBmYWlsdXJlID0gLyogdHVwbGUgKi9bCi0gICJGYWlsdXJlIiwKLSAgLTIK
LV07Ci0KLXZhciBpbnZhbGlkX2FyZ3VtZW50ID0gLyogdHVwbGUgKi9bCi0gICJJbnZhbGlkX2Fy
Z3VtZW50IiwKLSAgLTMKLV07Ci0KLXZhciBlbmRfb2ZfZmlsZSA9IC8qIHR1cGxlICovWwotICAi
RW5kX29mX2ZpbGUiLAotICAtNAotXTsKLQotdmFyIGRpdmlzaW9uX2J5X3plcm8gPSAvKiB0dXBs
ZSAqL1sKLSAgIkRpdmlzaW9uX2J5X3plcm8iLAotICAtNQotXTsKLQotdmFyIG5vdF9mb3VuZCA9
IC8qIHR1cGxlICovWwotICAiTm90X2ZvdW5kIiwKLSAgLTYKLV07Ci0KLXZhciBtYXRjaF9mYWls
dXJlID0gLyogdHVwbGUgKi9bCi0gICJNYXRjaF9mYWlsdXJlIiwKLSAgLTcKLV07Ci0KLXZhciBz
dGFja19vdmVyZmxvdyA9IC8qIHR1cGxlICovWwotICAiU3RhY2tfb3ZlcmZsb3ciLAotICAtOAot
XTsKLQotdmFyIHN5c19ibG9ja2VkX2lvID0gLyogdHVwbGUgKi9bCi0gICJTeXNfYmxvY2tlZF9p
byIsCi0gIC05Ci1dOwotCi12YXIgYXNzZXJ0X2ZhaWx1cmUgPSAvKiB0dXBsZSAqL1sKLSAgIkFz
c2VydF9mYWlsdXJlIiwKLSAgLTEwCi1dOwotCi12YXIgdW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1
bGUgPSAvKiB0dXBsZSAqL1sKLSAgIlVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIiwKLSAgLTEx
Ci1dOwotCi1leHBvcnRzLm91dF9vZl9tZW1vcnkgICAgICAgICAgICAgID0gb3V0X29mX21lbW9y
eTsKLWV4cG9ydHMuc3lzX2Vycm9yICAgICAgICAgICAgICAgICAgPSBzeXNfZXJyb3I7Ci1leHBv
cnRzLmZhaWx1cmUgICAgICAgICAgICAgICAgICAgID0gZmFpbHVyZTsKLWV4cG9ydHMuaW52YWxp
ZF9hcmd1bWVudCAgICAgICAgICAgPSBpbnZhbGlkX2FyZ3VtZW50OwotZXhwb3J0cy5lbmRfb2Zf
ZmlsZSAgICAgICAgICAgICAgICA9IGVuZF9vZl9maWxlOwotZXhwb3J0cy5kaXZpc2lvbl9ieV96
ZXJvICAgICAgICAgICA9IGRpdmlzaW9uX2J5X3plcm87Ci1leHBvcnRzLm5vdF9mb3VuZCAgICAg
ICAgICAgICAgICAgID0gbm90X2ZvdW5kOwotZXhwb3J0cy5tYXRjaF9mYWlsdXJlICAgICAgICAg
ICAgICA9IG1hdGNoX2ZhaWx1cmU7Ci1leHBvcnRzLnN0YWNrX292ZXJmbG93ICAgICAgICAgICAg
ID0gc3RhY2tfb3ZlcmZsb3c7Ci1leHBvcnRzLnN5c19ibG9ja2VkX2lvICAgICAgICAgICAgID0g
c3lzX2Jsb2NrZWRfaW87Ci1leHBvcnRzLmFzc2VydF9mYWlsdXJlICAgICAgICAgICAgID0gYXNz
ZXJ0X2ZhaWx1cmU7Ci1leHBvcnRzLnVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlID0gdW5kZWZp
bmVkX3JlY3Vyc2l2ZV9tb2R1bGU7Ci0vKiBObyBzaWRlIGVmZmVjdCAqLwotLy8vLy8vLy8gZW5k
IG9mIGNhbWxfYnVpbHRpbl9leGNlcHRpb25zLmpzIC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9y
dHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ2NhbWxfYnl0ZXMnXSA9IGZ1bmN0aW9uKCkgewot
ICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBjYW1sX2J5dGVzLmpzIC8v
Ly8vLy8vCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJl
cXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKLQotZnVuY3Rpb24gZ2V0KHMsIGkp
IHsKLSAgaWYgKGkgPCAwIHx8IGkgPj0gcy5sZW5ndGgpIHsKLSAgICB0aHJvdyBbCi0gICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAi
aW5kZXggb3V0IG9mIGJvdW5kcyIKLSAgICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1
cm4gc1tpXTsKLSAgfQotfQotCi1leHBvcnRzLmdldCA9IGdldDsKLS8qIE5vIHNpZGUgZWZmZWN0
ICovCi0vLy8vLy8vLyBlbmQgb2YgY2FtbF9ieXRlcy5qcyAvLy8vLy8vLwotICAgIHJldHVybiBl
eHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydjYW1sX2V4Y2VwdGlvbnMnXSA9IGZ1bmN0
aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBjYW1sX2V4
Y2VwdGlvbnMuanMgLy8vLy8vLy8KLSd1c2Ugc3RyaWN0JzsKLQotCi12YXIgaWQgPSBbMF07Ci0K
LWZ1bmN0aW9uIGNhbWxfc2V0X29vX2lkKGIpIHsKLSAgYlsxXSA9IGlkWzBdOwotICBpZFswXSAr
PSAxOwotICByZXR1cm4gYjsKLX0KLQotZnVuY3Rpb24gZ2V0X2lkKCkgewotICBpZFswXSArPSAx
OwotICByZXR1cm4gaWRbMF07Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZShzdHIpIHsKLSAgdmFyIHZf
MDAxID0gZ2V0X2lkKC8qICgpICovMCk7Ci0gIHZhciB2ID0gLyogdHVwbGUgKi9bCi0gICAgc3Ry
LAotICAgIHZfMDAxCi0gIF07Ci0gIHYudGFnID0gMjQ4OwotICByZXR1cm4gdjsKLX0KLQotZXhw
b3J0cy5jYW1sX3NldF9vb19pZCA9IGNhbWxfc2V0X29vX2lkOwotZXhwb3J0cy5nZXRfaWQgICAg
ICAgICA9IGdldF9pZDsKLWV4cG9ydHMuY3JlYXRlICAgICAgICAgPSBjcmVhdGU7Ci0vKiBObyBz
aWRlIGVmZmVjdCAqLwotLy8vLy8vLy8gZW5kIG9mIGNhbWxfZXhjZXB0aW9ucy5qcyAvLy8vLy8v
LwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydjYW1sX2Zsb2F0
J10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQg
b2YgY2FtbF9mbG9hdC5qcyAvLy8vLy8vLwotJ3VzZSBzdHJpY3QnOwotCi0KLWZ1bmN0aW9uIGNh
bWxfaW50MzJfZmxvYXRfb2ZfYml0cyh4KSB7Ci0gIHZhciBpbnQzMiA9IG5ldyBJbnQzMkFycmF5
KC8qIGFycmF5ICovW3hdKTsKLSAgdmFyIGZsb2F0MzIgPSBuZXcgRmxvYXQzMkFycmF5KGludDMy
LmJ1ZmZlcik7Ci0gIHJldHVybiBmbG9hdDMyWzBdOwotfQotCi1mdW5jdGlvbiBjYW1sX2ludDMy
X2JpdHNfb2ZfZmxvYXQoeCkgewotICB2YXIgZmxvYXQzMiA9IG5ldyBGbG9hdDMyQXJyYXkoLyog
ZmxvYXQgYXJyYXkgKi9beF0pOwotICByZXR1cm4gbmV3IEludDMyQXJyYXkoZmxvYXQzMi5idWZm
ZXIpWzBdOwotfQotCi1mdW5jdGlvbiBjYW1sX2NsYXNzaWZ5X2Zsb2F0KHgpIHsKLSAgaWYgKGlz
RmluaXRlKHgpKSB7Ci0gICAgaWYgKE1hdGguYWJzKHgpID49IDIuMjI1MDczODU4NTA3MjAxNGUt
MzA4KSB7Ci0gICAgICByZXR1cm4gLyogRlBfbm9ybWFsICovMDsKLSAgICB9Ci0gICAgZWxzZSBp
ZiAoeCAhPT0gMCkgewotICAgICAgcmV0dXJuIC8qIEZQX3N1Ym5vcm1hbCAqLzE7Ci0gICAgfQot
ICAgIGVsc2UgewotICAgICAgcmV0dXJuIC8qIEZQX3plcm8gKi8yOwotICAgIH0KLSAgfQotICBl
bHNlIGlmIChpc05hTih4KSkgewotICAgIHJldHVybiAvKiBGUF9uYW4gKi80OwotICB9Ci0gIGVs
c2UgewotICAgIHJldHVybiAvKiBGUF9pbmZpbml0ZSAqLzM7Ci0gIH0KLX0KLQotZnVuY3Rpb24g
Y2FtbF9tb2RmX2Zsb2F0KHgpIHsKLSAgaWYgKGlzRmluaXRlKHgpKSB7Ci0gICAgdmFyIG5lZyA9
ICsoMSAvIHggPCAwKTsKLSAgICB2YXIgeCQxID0gTWF0aC5hYnMoeCk7Ci0gICAgdmFyIGkgPSBN
YXRoLmZsb29yKHgkMSk7Ci0gICAgdmFyIGYgPSB4JDEgLSBpOwotICAgIGlmIChuZWcpIHsKLSAg
ICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgLWYsCi0gICAgICAgICAgICAg
IC1pCi0gICAgICAgICAgICBdOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiAvKiB0
dXBsZSAqL1sKLSAgICAgICAgICAgICAgZiwKLSAgICAgICAgICAgICAgaQotICAgICAgICAgICAg
XTsKLSAgICB9Ci0gIH0KLSAgZWxzZSBpZiAoaXNOYU4oeCkpIHsKLSAgICByZXR1cm4gLyogdHVw
bGUgKi9bCi0gICAgICAgICAgICBOYU4sCi0gICAgICAgICAgICBOYU4KLSAgICAgICAgICBdOwot
ICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgIDEgLyB4
LAotICAgICAgICAgICAgeAotICAgICAgICAgIF07Ci0gIH0KLX0KLQotdmFyIGNhbWxfbGRleHBf
ZmxvYXQgPSAoIGZ1bmN0aW9uICh4LGV4cCkgewotICAgIGV4cCB8PSAwOwotICAgIGlmIChleHAg
PiAxMDIzKSB7Ci0gICAgICAgIGV4cCAtPSAxMDIzOwotICAgICAgICB4ICo9IE1hdGgucG93KDIs
IDEwMjMpOwotICAgICAgICBpZiAoZXhwID4gMTAyMykgeyAgLy8gaW4gY2FzZSB4IGlzIHN1Ym5v
cm1hbAotICAgICAgICAgICAgZXhwIC09IDEwMjM7Ci0gICAgICAgICAgICB4ICo9IE1hdGgucG93
KDIsIDEwMjMpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChleHAgPCAtMTAyMykgewotICAg
ICAgICBleHAgKz0gMTAyMzsKLSAgICAgICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7Ci0gICAg
fQotICAgIHggKj0gTWF0aC5wb3coMiwgZXhwKTsKLSAgICByZXR1cm4geDsKLX0KLSk7Ci0KLXZh
ciBjYW1sX2ZyZXhwX2Zsb2F0ID0gKGZ1bmN0aW9uICh4KSB7Ci0gICAgaWYgKCh4ID09IDApIHx8
ICFpc0Zpbml0ZSh4KSkgcmV0dXJuIFsgeCwgMF07Ci0gICAgdmFyIG5lZyA9IHggPCAwOwotICAg
IGlmIChuZWcpIHggPSAtIHg7Ci0gICAgdmFyIGV4cCA9IE1hdGguZmxvb3IoTWF0aC5MT0cyRSpN
YXRoLmxvZyh4KSkgKyAxOwotICAgIHggKj0gTWF0aC5wb3coMiwtZXhwKTsKLSAgICBpZiAoeCA8
IDAuNSkgeyB4ICo9IDI7IGV4cCAtPSAxOyB9Ci0gICAgaWYgKG5lZykgeCA9IC0geDsKLSAgICBy
ZXR1cm4gW3gsIGV4cF07Ci19Ci0pOwotCi1mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUoeCwg
eSkgewotICBpZiAoeCA9PT0geSkgewotICAgIHJldHVybiAwOwotICB9Ci0gIGVsc2UgaWYgKHgg
PCB5KSB7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIGVsc2UgaWYgKHggPiB5IHx8IHggPT09IHgp
IHsKLSAgICByZXR1cm4gMTsKLSAgfQotICBlbHNlIGlmICh5ID09PSB5KSB7Ci0gICAgcmV0dXJu
IC0xOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAwOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNh
bWxfY29weXNpZ25fZmxvYXQoeCwgeSkgewotICB2YXIgeCQxID0gTWF0aC5hYnMoeCk7Ci0gIHZh
ciB5JDEgPSB5ID09PSAwID8gMSAvIHkgOiB5OwotICBpZiAoeSQxIDwgMCkgewotICAgIHJldHVy
biAteCQxOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiB4JDE7Ci0gIH0KLX0KLQotZnVuY3Rp
b24gY2FtbF9leHBtMV9mbG9hdCh4KSB7Ci0gIHZhciB5ID0gTWF0aC5leHAoeCk7Ci0gIHZhciB6
ID0geSAtIDE7Ci0gIGlmIChNYXRoLmFicyh4KSA+IDEpIHsKLSAgICByZXR1cm4gejsKLSAgfQot
ICBlbHNlIGlmICh6ID09PSAwKSB7Ci0gICAgcmV0dXJuIHg7Ci0gIH0KLSAgZWxzZSB7Ci0gICAg
cmV0dXJuIHggKiB6IC8gTWF0aC5sb2coeSk7Ci0gIH0KLX0KLQotdmFyIGNhbWxfaHlwb3RfZmxv
YXQgPSAoIGZ1bmN0aW9uICh4LCB5KSB7Ci0gICAgdmFyIHgwID0gTWF0aC5hYnMoeCksIHkwID0g
TWF0aC5hYnMoeSk7Ci0gICAgdmFyIGEgPSBNYXRoLm1heCh4MCwgeTApLCBiID0gTWF0aC5taW4o
eDAseTApIC8gKGE/YToxKTsKLSAgICByZXR1cm4gYSAqIE1hdGguc3FydCgxICsgYipiKTsKLX0K
LSk7Ci0KLXZhciBjYW1sX2xvZzEwX2Zsb2F0ID0gKCBmdW5jdGlvbiAgKHgpIHsgCi0gICByZXR1
cm4gTWF0aC5MT0cxMEUgKiBNYXRoLmxvZyh4KTsgfQotKTsKLQotZXhwb3J0cy5jYW1sX2ludDMy
X2Zsb2F0X29mX2JpdHMgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHM7Ci1leHBvcnRzLmNhbWxf
aW50MzJfYml0c19vZl9mbG9hdCA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdDsKLWV4cG9ydHMu
Y2FtbF9jbGFzc2lmeV9mbG9hdCAgICAgID0gY2FtbF9jbGFzc2lmeV9mbG9hdDsKLWV4cG9ydHMu
Y2FtbF9tb2RmX2Zsb2F0ICAgICAgICAgID0gY2FtbF9tb2RmX2Zsb2F0OwotZXhwb3J0cy5jYW1s
X2xkZXhwX2Zsb2F0ICAgICAgICAgPSBjYW1sX2xkZXhwX2Zsb2F0OwotZXhwb3J0cy5jYW1sX2Zy
ZXhwX2Zsb2F0ICAgICAgICAgPSBjYW1sX2ZyZXhwX2Zsb2F0OwotZXhwb3J0cy5jYW1sX2Zsb2F0
X2NvbXBhcmUgICAgICAgPSBjYW1sX2Zsb2F0X2NvbXBhcmU7Ci1leHBvcnRzLmNhbWxfY29weXNp
Z25fZmxvYXQgICAgICA9IGNhbWxfY29weXNpZ25fZmxvYXQ7Ci1leHBvcnRzLmNhbWxfZXhwbTFf
ZmxvYXQgICAgICAgICA9IGNhbWxfZXhwbTFfZmxvYXQ7Ci1leHBvcnRzLmNhbWxfaHlwb3RfZmxv
YXQgICAgICAgICA9IGNhbWxfaHlwb3RfZmxvYXQ7Ci1leHBvcnRzLmNhbWxfbG9nMTBfZmxvYXQg
ICAgICAgICA9IGNhbWxfbG9nMTBfZmxvYXQ7Ci0vKiBjYW1sX2xkZXhwX2Zsb2F0IE5vdCBhIHB1
cmUgbW9kdWxlICovCi0vLy8vLy8vLyBlbmQgb2YgY2FtbF9mbG9hdC5qcyAvLy8vLy8vLwotICAg
IHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydjYW1sX2Zvcm1hdCddID0g
ZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8vLy8vLy8vIHN0YXJ0IG9mIGNh
bWxfZm9ybWF0LmpzIC8vLy8vLy8vCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBDdXJyeSAgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKLXZhciBDYW1sX2ludDMyICAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9pbnQzMiIpOwotdmFyIENhbWxfaW50NjQgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9jYW1sX2ludDY0Iik7Ci12YXIgQ2FtbF91dGlscyAgICAgICAgICAg
ICAgPSByZXF1aXJlKCIuL2NhbWxfdXRpbHMiKTsKLXZhciBDYW1sX3N0cmluZyAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKLXZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKLQotZnVuY3Rpb24gY2Ft
bF9mYWlsd2l0aChzKSB7Ci0gIHRocm93IFsKLSAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuZmFpbHVyZSwKLSAgICAgICAgcwotICAgICAgXTsKLX0KLQotZnVuY3Rpb24gcGFyc2VfZGln
aXQoYykgewotICBpZiAoYyA+PSA2NSkgewotICAgIGlmIChjID49IDk3KSB7Ci0gICAgICBpZiAo
YyA+PSAxMjMpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0g
ICAgICAgIHJldHVybiBjIC0gODcgfCAwOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChj
ID49IDkxKSB7Ci0gICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0
dXJuIGMgLSA1NSB8IDA7Ci0gICAgfQotICB9Ci0gIGVsc2UgaWYgKGMgPiA1NyB8fCBjIDwgNDgp
IHsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIGMgLSAvKiAiMCIg
Ki80OCB8IDA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gaW50X29mX3N0cmluZ19iYXNlKHBhcmFtKSB7
Ci0gIHN3aXRjaCAocGFyYW0pIHsKLSAgICBjYXNlIDAgOiAKLSAgICAgICAgcmV0dXJuIDg7Ci0g
ICAgY2FzZSAxIDogCi0gICAgICAgIHJldHVybiAxNjsKLSAgICBjYXNlIDIgOiAKLSAgICAgICAg
cmV0dXJuIDEwOwotICAgIGNhc2UgMyA6IAotICAgICAgICByZXR1cm4gMjsKLSAgICAKLSAgfQot
fQotCi1mdW5jdGlvbiBwYXJzZV9zaWduX2FuZF9iYXNlKHMpIHsKLSAgdmFyIHNpZ24gPSAxOwot
ICB2YXIgYmFzZSA9IC8qIERlYyAqLzI7Ci0gIHZhciBpID0gMDsKLSAgaWYgKHNbaV0gPT09ICIt
IikgewotICAgIHNpZ24gPSAtMTsKLSAgICBpID0gaSArIDEgfCAwOwotICB9Ci0gIHZhciBtYXRj
aCA9IHMuY2hhckNvZGVBdChpKTsKLSAgdmFyIG1hdGNoJDEgPSBzLmNoYXJDb2RlQXQoaSArIDEg
fCAwKTsKLSAgaWYgKG1hdGNoID09PSA0OCkgewotICAgIGlmIChtYXRjaCQxID49IDg5KSB7Ci0g
ICAgICBpZiAobWF0Y2gkMSAhPT0gOTgpIHsKLSAgICAgICAgaWYgKG1hdGNoJDEgIT09IDExMSkg
ewotICAgICAgICAgIGlmIChtYXRjaCQxID09PSAxMjApIHsKLSAgICAgICAgICAgIGJhc2UgPSAv
KiBIZXggKi8xOwotICAgICAgICAgICAgaSA9IGkgKyAyIHwgMDsKLSAgICAgICAgICB9Ci0gICAg
ICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgYmFzZSA9IC8qIE9j
dCAqLzA7Ci0gICAgICAgICAgaSA9IGkgKyAyIHwgMDsKLSAgICAgICAgfQotICAgICAgfQotICAg
ICAgZWxzZSB7Ci0gICAgICAgIGJhc2UgPSAvKiBCaW4gKi8zOwotICAgICAgICBpID0gaSArIDIg
fCAwOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChtYXRjaCQxICE9PSA2NikgewotICAg
ICAgaWYgKG1hdGNoJDEgIT09IDc5KSB7Ci0gICAgICAgIGlmIChtYXRjaCQxID49IDg4KSB7Ci0g
ICAgICAgICAgYmFzZSA9IC8qIEhleCAqLzE7Ci0gICAgICAgICAgaSA9IGkgKyAyIHwgMDsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBiYXNlID0g
LyogT2N0ICovMDsKLSAgICAgICAgaSA9IGkgKyAyIHwgMDsKLSAgICAgIH0KLSAgICB9Ci0gICAg
ZWxzZSB7Ci0gICAgICBiYXNlID0gLyogQmluICovMzsKLSAgICAgIGkgPSBpICsgMiB8IDA7Ci0g
ICAgfQotICB9Ci0gIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICBpLAotICAgICAgICAg
IHNpZ24sCi0gICAgICAgICAgYmFzZQotICAgICAgICBdOwotfQotCi1mdW5jdGlvbiBjYW1sX2lu
dF9vZl9zdHJpbmcocykgewotICB2YXIgbWF0Y2ggPSBwYXJzZV9zaWduX2FuZF9iYXNlKHMpOwot
ICB2YXIgaSA9IG1hdGNoWzBdOwotICB2YXIgYmFzZSA9IGludF9vZl9zdHJpbmdfYmFzZShtYXRj
aFsyXSk7Ci0gIHZhciB0aHJlc2hvbGQgPSA0Mjk0OTY3Mjk1OwotICB2YXIgbGVuID0gcy5sZW5n
dGg7Ci0gIHZhciBjID0gaSA8IGxlbiA/IHMuY2hhckNvZGVBdChpKSA6IC8qICJcMDAwIiAqLzA7
Ci0gIHZhciBkID0gcGFyc2VfZGlnaXQoYyk7Ci0gIGlmIChkIDwgMCB8fCBkID49IGJhc2UpIHsK
LSAgICB0aHJvdyBbCi0gICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwK
LSAgICAgICAgICAiaW50X29mX3N0cmluZyIKLSAgICAgICAgXTsKLSAgfQotICB2YXIgYXV4ID0g
ZnVuY3Rpb24gKF9hY2MsIF9rKSB7Ci0gICAgd2hpbGUodHJ1ZSkgewotICAgICAgdmFyIGsgPSBf
azsKLSAgICAgIHZhciBhY2MgPSBfYWNjOwotICAgICAgaWYgKGsgPT09IGxlbikgewotICAgICAg
ICByZXR1cm4gYWNjOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHZhciBhID0gcy5j
aGFyQ29kZUF0KGspOwotICAgICAgICBpZiAoYSA9PT0gLyogIl8iICovOTUpIHsKLSAgICAgICAg
ICBfayA9IGsgKyAxIHwgMDsKLSAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgCi0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgdmFyIHYgPSBwYXJzZV9kaWdpdChhKTsK
LSAgICAgICAgICBpZiAodiA8IDAgfHwgdiA+PSBiYXNlKSB7Ci0gICAgICAgICAgICB0aHJvdyBb
Ci0gICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAotICAg
ICAgICAgICAgICAgICAgImludF9vZl9zdHJpbmciCi0gICAgICAgICAgICAgICAgXTsKLSAgICAg
ICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgYWNjJDEgPSBiYXNlICog
YWNjICsgdjsKLSAgICAgICAgICAgIGlmIChhY2MkMSA+IHRocmVzaG9sZCkgewotICAgICAgICAg
ICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICJpbnRfb2Zfc3RyaW5nIgotICAgICAgICAg
ICAgICAgICAgXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICBfayA9IGsgKyAxIHwgMDsKLSAgICAgICAgICAgICAgX2FjYyA9IGFjYyQxOwotICAgICAg
ICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH07Ci0gIH07Ci0gIHZhciByZXMgPSBtYXRj
aFsxXSAqIGF1eChkLCBpICsgMSB8IDApOwotICB2YXIgb3JfcmVzID0gcmVzIHwgMDsKLSAgaWYg
KGJhc2UgPT09IDEwICYmIHJlcyAhPT0gb3JfcmVzKSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCi0gICAgICAgICAgImludF9vZl9zdHJp
bmciCi0gICAgICAgIF07Ci0gIH0KLSAgcmV0dXJuIG9yX3JlczsKLX0KLQotZnVuY3Rpb24gY2Ft
bF9pbnQ2NF9vZl9zdHJpbmcocykgewotICB2YXIgbWF0Y2ggPSBwYXJzZV9zaWduX2FuZF9iYXNl
KHMpOwotICB2YXIgaGJhc2UgPSBtYXRjaFsyXTsKLSAgdmFyIGkgPSBtYXRjaFswXTsKLSAgdmFy
IGJhc2UgPSBDYW1sX2ludDY0Lm9mX2ludDMyKGludF9vZl9zdHJpbmdfYmFzZShoYmFzZSkpOwot
ICB2YXIgc2lnbiA9IENhbWxfaW50NjQub2ZfaW50MzIobWF0Y2hbMV0pOwotICB2YXIgdGhyZXNo
b2xkOwotICBzd2l0Y2ggKGhiYXNlKSB7Ci0gICAgY2FzZSAwIDogCi0gICAgICAgIHRocmVzaG9s
ZCA9IC8qIGludDY0ICovWwotICAgICAgICAgIC8qIGhpICovNTM2ODcwOTExLAotICAgICAgICAg
IC8qIGxvICovNDI5NDk2NzI5NQotICAgICAgICBdOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IDEgOiAKLSAgICAgICAgdGhyZXNob2xkID0gLyogaW50NjQgKi9bCi0gICAgICAgICAgLyogaGkg
Ki8yNjg0MzU0NTUsCi0gICAgICAgICAgLyogbG8gKi80Mjk0OTY3Mjk1Ci0gICAgICAgIF07Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgMiA6IAotICAgICAgICB0aHJlc2hvbGQgPSAvKiBpbnQ2
NCAqL1sKLSAgICAgICAgICAvKiBoaSAqLzQyOTQ5NjcyOSwKLSAgICAgICAgICAvKiBsbyAqLzI1
NzY5ODAzNzcKLSAgICAgICAgXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAzIDogCi0gICAg
ICAgIHRocmVzaG9sZCA9IC8qIGludDY0ICovWwotICAgICAgICAgIC8qIGhpICovMjE0NzQ4MzY0
NywKLSAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyOTUKLSAgICAgICAgXTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgCi0gIH0KLSAgdmFyIGxlbiA9IHMubGVuZ3RoOwotICB2YXIgYyA9IGkgPCBsZW4g
PyBzLmNoYXJDb2RlQXQoaSkgOiAvKiAiXDAwMCIgKi8wOwotICB2YXIgZCA9IENhbWxfaW50NjQu
b2ZfaW50MzIocGFyc2VfZGlnaXQoYykpOwotICBpZiAoQ2FtbF9pbnQ2NC5sdChkLCAvKiBpbnQ2
NCAqL1sKLSAgICAgICAgICAvKiBoaSAqLzAsCi0gICAgICAgICAgLyogbG8gKi8wCi0gICAgICAg
IF0pIHx8IENhbWxfaW50NjQuZ2UoZCwgYmFzZSkpIHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKLSAgICAgICAgICAiaW50NjRfb2Zfc3Ry
aW5nIgotICAgICAgICBdOwotICB9Ci0gIHZhciBhdXggPSBmdW5jdGlvbiAoX2FjYywgX2spIHsK
LSAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICB2YXIgayA9IF9rOwotICAgICAgdmFyIGFjYyA9IF9h
Y2M7Ci0gICAgICBpZiAoayA9PT0gbGVuKSB7Ci0gICAgICAgIHJldHVybiBhY2M7Ci0gICAgICB9
Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdmFyIGEgPSBzLmNoYXJDb2RlQXQoayk7Ci0gICAgICAg
IGlmIChhID09PSAvKiAiXyIgKi85NSkgewotICAgICAgICAgIF9rID0gayArIDEgfCAwOwotICAg
ICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICB2YXIgdiA9IENhbWxfaW50NjQub2ZfaW50MzIocGFyc2VfZGlnaXQoYSkpOwot
ICAgICAgICAgIGlmIChDYW1sX2ludDY0Lmx0KHYsIC8qIGludDY0ICovWwotICAgICAgICAgICAg
ICAgICAgLyogaGkgKi8wLAotICAgICAgICAgICAgICAgICAgLyogbG8gKi8wCi0gICAgICAgICAg
ICAgICAgXSkgfHwgQ2FtbF9pbnQ2NC5nZSh2LCBiYXNlKSkgewotICAgICAgICAgICAgdGhyb3cg
WwotICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKLSAg
ICAgICAgICAgICAgICAgICJpbnQ2NF9vZl9zdHJpbmciCi0gICAgICAgICAgICAgICAgXTsKLSAg
ICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgYWNjJDEgPSBDYW1s
X2ludDY0LmFkZChDYW1sX2ludDY0Lm11bChiYXNlLCBhY2MpLCB2KTsKLSAgICAgICAgICAgIGlm
IChDYW1sX2ludDY0Lmd0KGFjYyQxLCB0aHJlc2hvbGQpKSB7Ci0gICAgICAgICAgICAgIHRocm93
IFsKLSAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwK
LSAgICAgICAgICAgICAgICAgICAgImludDY0X29mX3N0cmluZyIKLSAgICAgICAgICAgICAgICAg
IF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgX2sg
PSBrICsgMSB8IDA7Ci0gICAgICAgICAgICAgIF9hY2MgPSBhY2MkMTsKLSAgICAgICAgICAgICAg
Y29udGludWUgOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgIH0KLSAgICB9OwotICB9OwotICB2YXIgcmVzID0gQ2FtbF9pbnQ2NC5t
dWwoc2lnbiwgYXV4KGQsIGkgKyAxIHwgMCkpOwotICB2YXIgb3JfcmVzXzAwMCA9IC8qIGhpICov
cmVzWzBdIHwgLyogaGkgKi8wOwotICB2YXIgb3JfcmVzXzAwMSA9IC8qIGxvICovKHJlc1sxXSA+
Pj4gMCk7Ci0gIHZhciBvcl9yZXMgPSAvKiBpbnQ2NCAqL1sKLSAgICBvcl9yZXNfMDAwLAotICAg
IG9yX3Jlc18wMDEKLSAgXTsKLSAgaWYgKENhbWxfaW50NjQuZXEoYmFzZSwgLyogaW50NjQgKi9b
Ci0gICAgICAgICAgLyogaGkgKi8wLAotICAgICAgICAgIC8qIGxvICovMTAKLSAgICAgICAgXSkg
JiYgQ2FtbF9pbnQ2NC5uZXEocmVzLCBvcl9yZXMpKSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCi0gICAgICAgICAgImludDY0X29mX3N0
cmluZyIKLSAgICAgICAgXTsKLSAgfQotICByZXR1cm4gb3JfcmVzOwotfQotCi1mdW5jdGlvbiBp
bnRfb2ZfYmFzZShwYXJhbSkgewotICBzd2l0Y2ggKHBhcmFtKSB7Ci0gICAgY2FzZSAwIDogCi0g
ICAgICAgIHJldHVybiA4OwotICAgIGNhc2UgMSA6IAotICAgICAgICByZXR1cm4gMTY7Ci0gICAg
Y2FzZSAyIDogCi0gICAgICAgIHJldHVybiAxMDsKLSAgICAKLSAgfQotfQotCi1mdW5jdGlvbiBs
b3dlcmNhc2UoYykgewotICBpZiAoYyA+PSAvKiAiQSIgKi82NSAmJiBjIDw9IC8qICJaIiAqLzkw
IHx8IGMgPj0gLyogIlwxOTIiICovMTkyICYmIGMgPD0gLyogIlwyMTQiICovMjE0IHx8IGMgPj0g
LyogIlwyMTYiICovMjE2ICYmIGMgPD0gLyogIlwyMjIiICovMjIyKSB7Ci0gICAgcmV0dXJuIGMg
KyAzMiB8IDA7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIGM7Ci0gIH0KLX0KLQotZnVuY3Rp
b24gcGFyc2VfZm9ybWF0KGZtdCkgewotICB2YXIgbGVuID0gZm10Lmxlbmd0aDsKLSAgaWYgKGxl
biA+IDMxKSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgImZvcm1hdF9pbnQ6IGZvcm1hdCB0b28gbG9u
ZyIKLSAgICAgICAgXTsKLSAgfQotICB2YXIgZiA9IC8qIHJlY29yZCAqL1sKLSAgICAvKiBqdXN0
aWZ5ICovIisiLAotICAgIC8qIHNpZ25zdHlsZSAqLyItIiwKLSAgICAvKiBmaWx0ZXIgKi8iICIs
Ci0gICAgLyogYWx0ZXJuYXRlIDogZmFsc2UgKi8wLAotICAgIC8qIGJhc2UgOiBEZWMgKi8yLAot
ICAgIC8qIHNpZ25lZGNvbnYgOiBmYWxzZSAqLzAsCi0gICAgLyogd2lkdGggKi8wLAotICAgIC8q
IHVwcGVyY2FzZSA6IGZhbHNlICovMCwKLSAgICAvKiBzaWduICovMSwKLSAgICAvKiBwcmVjICov
LTEsCi0gICAgLyogY29udiAqLyJmIgotICBdOwotICB2YXIgX2kgPSAwOwotICB3aGlsZSh0cnVl
KSB7Ci0gICAgdmFyIGkgPSBfaTsKLSAgICBpZiAoaSA+PSBsZW4pIHsKLSAgICAgIHJldHVybiBm
OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHZhciBjID0gZm10LmNoYXJDb2RlQXQoaSk7Ci0g
ICAgICB2YXIgZXhpdCA9IDA7Ci0gICAgICBpZiAoYyA+PSA2OSkgewotICAgICAgICBpZiAoYyA+
PSA4OCkgewotICAgICAgICAgIGlmIChjID49IDEyMSkgewotICAgICAgICAgICAgZXhpdCA9IDE7
Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgc3dpdGNoIChjIC0g
ODggfCAwKSB7Ci0gICAgICAgICAgICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgICAgICAgZlsv
KiBiYXNlICovNF0gPSAvKiBIZXggKi8xOwotICAgICAgICAgICAgICAgICAgZlsvKiB1cHBlcmNh
c2UgKi83XSA9IC8qIHRydWUgKi8xOwotICAgICAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7
Ci0gICAgICAgICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDEz
IDogCi0gICAgICAgICAgICAgIGNhc2UgMTQgOiAKLSAgICAgICAgICAgICAgY2FzZSAxNSA6IAot
ICAgICAgICAgICAgICAgICAgZXhpdCA9IDU7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSAxMiA6IAotICAgICAgICAgICAgICBjYXNlIDE3IDogCi0gICAgICAg
ICAgICAgICAgICBleGl0ID0gNDsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIDIzIDogCi0gICAgICAgICAgICAgICAgICBmWy8qIGJhc2UgKi80XSA9IC8qIE9j
dCAqLzA7Ci0gICAgICAgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKLSAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgICAgICAgIGNhc2UgMjkgOiAKLSAgICAgICAgICAg
ICAgICAgIGZbLyogYmFzZSAqLzRdID0gLyogRGVjICovMjsKLSAgICAgICAgICAgICAgICAgIF9p
ID0gaSArIDEgfCAwOwotICAgICAgICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAg
ICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgICBj
YXNlIDMgOiAKLSAgICAgICAgICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgICAgIGNhc2UgNSA6
IAotICAgICAgICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAgICAgY2FzZSA3IDogCi0gICAg
ICAgICAgICAgIGNhc2UgOCA6IAotICAgICAgICAgICAgICBjYXNlIDkgOiAKLSAgICAgICAgICAg
ICAgY2FzZSAxMCA6IAotICAgICAgICAgICAgICBjYXNlIDExIDogCi0gICAgICAgICAgICAgIGNh
c2UgMTYgOiAKLSAgICAgICAgICAgICAgY2FzZSAxOCA6IAotICAgICAgICAgICAgICBjYXNlIDE5
IDogCi0gICAgICAgICAgICAgIGNhc2UgMjAgOiAKLSAgICAgICAgICAgICAgY2FzZSAyMSA6IAot
ICAgICAgICAgICAgICBjYXNlIDIyIDogCi0gICAgICAgICAgICAgIGNhc2UgMjQgOiAKLSAgICAg
ICAgICAgICAgY2FzZSAyNSA6IAotICAgICAgICAgICAgICBjYXNlIDI2IDogCi0gICAgICAgICAg
ICAgIGNhc2UgMjcgOiAKLSAgICAgICAgICAgICAgY2FzZSAyOCA6IAotICAgICAgICAgICAgICBj
YXNlIDMwIDogCi0gICAgICAgICAgICAgIGNhc2UgMzEgOiAKLSAgICAgICAgICAgICAgICAgIGV4
aXQgPSAxOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMzIg
OiAKLSAgICAgICAgICAgICAgICAgIGZbLyogYmFzZSAqLzRdID0gLyogSGV4ICovMTsKLSAgICAg
ICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOwotICAgICAgICAgICAgICAgICAgY29udGludWUg
OwotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKGMgPj0gNzIpIHsKLSAgICAgICAgICBleGl0ID0gMTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBmWy8qIHNpZ25lZGNvbnYgKi81XSA9
IC8qIHRydWUgKi8xOwotICAgICAgICAgIGZbLyogdXBwZXJjYXNlICovN10gPSAvKiB0cnVlICov
MTsKLSAgICAgICAgICBmWy8qIGNvbnYgKi8xMF0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGxvd2Vy
Y2FzZShjKSk7Ci0gICAgICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAgICAgY29udGludWUg
OwotICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAg
dmFyIHN3aXRjaGVyID0gYyAtIDMyIHwgMDsKLSAgICAgICAgaWYgKHN3aXRjaGVyID4gMjUgfHwg
c3dpdGNoZXIgPCAwKSB7Ci0gICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgc3dpdGNoIChzd2l0Y2hlcikgewotICAgICAgICAgICAgY2FzZSAz
IDogCi0gICAgICAgICAgICAgICAgZlsvKiBhbHRlcm5hdGUgKi8zXSA9IC8qIHRydWUgKi8xOwot
ICAgICAgICAgICAgICAgIF9pID0gaSArIDEgfCAwOwotICAgICAgICAgICAgICAgIGNvbnRpbnVl
IDsKLSAgICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgIGNhc2UgMTEgOiAKLSAg
ICAgICAgICAgICAgICBleGl0ID0gMjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgMTMgOiAKLSAgICAgICAgICAgICAgICBmWy8qIGp1c3RpZnkgKi8wXSA9ICItIjsK
LSAgICAgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKLSAgICAgICAgICAgICAgICBjb250aW51
ZSA7Ci0gICAgICAgICAgICAgICAgY2FzZSAxNCA6IAotICAgICAgICAgICAgICAgIGZbLyogcHJl
YyAqLzldID0gMDsKLSAgICAgICAgICAgICAgICB2YXIgaiA9IGkgKyAxIHwgMDsKLSAgICAgICAg
ICAgICAgICB3aGlsZSgoZnVuY3Rpb24oail7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgdmFyIHcgPSBmbXQuY2hhckNvZGVB
dChqKSAtIC8qICIwIiAqLzQ4IHwgMDsKLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKyh3
ID49IDAgJiYgdyA8PSA5KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICB9KGopKSgpKSB7Ci0gICAgICAgICAgICAgICAgICBmWy8qIHByZWMgKi85XSA9IChDYW1s
X2ludDMyLmltdWwoZlsvKiBwcmVjICovOV0sIDEwKSArIGZtdC5jaGFyQ29kZUF0KGopIHwgMCkg
LSAvKiAiMCIgKi80OCB8IDA7Ci0gICAgICAgICAgICAgICAgICBqID0gaiArIDEgfCAwOwotICAg
ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICAgICAgX2kgPSBqOwotICAgICAgICAgICAgICAg
IGNvbnRpbnVlIDsKLSAgICAgICAgICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAgIGNhc2Ug
MiA6IAotICAgICAgICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgICBjYXNlIDUgOiAKLSAgICAg
ICAgICAgIGNhc2UgNiA6IAotICAgICAgICAgICAgY2FzZSA3IDogCi0gICAgICAgICAgICBjYXNl
IDggOiAKLSAgICAgICAgICAgIGNhc2UgOSA6IAotICAgICAgICAgICAgY2FzZSAxMCA6IAotICAg
ICAgICAgICAgY2FzZSAxMiA6IAotICAgICAgICAgICAgY2FzZSAxNSA6IAotICAgICAgICAgICAg
ICAgIGV4aXQgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAx
NiA6IAotICAgICAgICAgICAgICAgIGZbLyogZmlsdGVyICovMl0gPSAiMCI7Ci0gICAgICAgICAg
ICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAgICAgICAgICAgY29udGludWUgOwotICAgICAg
ICAgICAgICAgIGNhc2UgMTcgOiAKLSAgICAgICAgICAgIGNhc2UgMTggOiAKLSAgICAgICAgICAg
IGNhc2UgMTkgOiAKLSAgICAgICAgICAgIGNhc2UgMjAgOiAKLSAgICAgICAgICAgIGNhc2UgMjEg
OiAKLSAgICAgICAgICAgIGNhc2UgMjIgOiAKLSAgICAgICAgICAgIGNhc2UgMjMgOiAKLSAgICAg
ICAgICAgIGNhc2UgMjQgOiAKLSAgICAgICAgICAgIGNhc2UgMjUgOiAKLSAgICAgICAgICAgICAg
ICBleGl0ID0gMzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgc3dpdGNoIChleGl0KSB7Ci0gICAgICAg
IGNhc2UgMSA6IAotICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAgICAgICBjb250
aW51ZSA7Ci0gICAgICAgICAgICBjYXNlIDIgOiAKLSAgICAgICAgICAgIGZbLyogc2lnbnN0eWxl
ICovMV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpOwotICAgICAgICAgICAgX2kgPSBpICsgMSB8
IDA7Ci0gICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICBjYXNlIDMgOiAKLSAgICAg
ICAgICAgIGZbLyogd2lkdGggKi82XSA9IDA7Ci0gICAgICAgICAgICB2YXIgaiQxID0gaTsKLSAg
ICAgICAgICAgIHdoaWxlKChmdW5jdGlvbihqJDEpewotICAgICAgICAgICAgICAgIHJldHVybiBm
dW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICB2YXIgdyA9IGZtdC5jaGFyQ29kZUF0KGok
MSkgLSAvKiAiMCIgKi80OCB8IDA7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gKyh3ID49IDAg
JiYgdyA8PSA5KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfShqJDEpKSgp
KSB7Ci0gICAgICAgICAgICAgIGZbLyogd2lkdGggKi82XSA9IChDYW1sX2ludDMyLmltdWwoZlsv
KiB3aWR0aCAqLzZdLCAxMCkgKyBmbXQuY2hhckNvZGVBdChqJDEpIHwgMCkgLSAvKiAiMCIgKi80
OCB8IDA7Ci0gICAgICAgICAgICAgIGokMSA9IGokMSArIDEgfCAwOwotICAgICAgICAgICAgfTsK
LSAgICAgICAgICAgIF9pID0gaiQxOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAg
ICAgY2FzZSA0IDogCi0gICAgICAgICAgICBmWy8qIHNpZ25lZGNvbnYgKi81XSA9IC8qIHRydWUg
Ki8xOwotICAgICAgICAgICAgZlsvKiBiYXNlICovNF0gPSAvKiBEZWMgKi8yOwotICAgICAgICAg
ICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICBj
YXNlIDUgOiAKLSAgICAgICAgICAgIGZbLyogc2lnbmVkY29udiAqLzVdID0gLyogdHJ1ZSAqLzE7
Ci0gICAgICAgICAgICBmWy8qIGNvbnYgKi8xMF0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpOwot
ICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAgICAgICBjb250aW51ZSA7Ci0gICAg
ICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIGZpbmlzaF9mb3Jt
YXR0aW5nKHBhcmFtLCByYXdidWZmZXIpIHsKLSAgdmFyIGp1c3RpZnkgPSBwYXJhbVsvKiBqdXN0
aWZ5ICovMF07Ci0gIHZhciBzaWduc3R5bGUgPSBwYXJhbVsvKiBzaWduc3R5bGUgKi8xXTsKLSAg
dmFyIGZpbHRlciA9IHBhcmFtWy8qIGZpbHRlciAqLzJdOwotICB2YXIgYWx0ZXJuYXRlID0gcGFy
YW1bLyogYWx0ZXJuYXRlICovM107Ci0gIHZhciBiYXNlID0gcGFyYW1bLyogYmFzZSAqLzRdOwot
ICB2YXIgc2lnbmVkY29udiA9IHBhcmFtWy8qIHNpZ25lZGNvbnYgKi81XTsKLSAgdmFyIHdpZHRo
ID0gcGFyYW1bLyogd2lkdGggKi82XTsKLSAgdmFyIHVwcGVyY2FzZSA9IHBhcmFtWy8qIHVwcGVy
Y2FzZSAqLzddOwotICB2YXIgc2lnbiA9IHBhcmFtWy8qIHNpZ24gKi84XTsKLSAgdmFyIGxlbiA9
IHJhd2J1ZmZlci5sZW5ndGg7Ci0gIGlmIChzaWduZWRjb252ICYmIChzaWduIDwgMCB8fCBzaWdu
c3R5bGUgIT09ICItIikpIHsKLSAgICBsZW4gPSBsZW4gKyAxIHwgMDsKLSAgfQotICBpZiAoYWx0
ZXJuYXRlKSB7Ci0gICAgaWYgKGJhc2UpIHsKLSAgICAgIGlmIChiYXNlID09PSAvKiBIZXggKi8x
KSB7Ci0gICAgICAgIGxlbiA9IGxlbiArIDIgfCAwOwotICAgICAgfQotICAgICAgCi0gICAgfQot
ICAgIGVsc2UgewotICAgICAgbGVuID0gbGVuICsgMSB8IDA7Ci0gICAgfQotICB9Ci0gIHZhciBi
dWZmZXIgPSAiIjsKLSAgaWYgKGp1c3RpZnkgPT09ICIrIiAmJiBmaWx0ZXIgPT09ICIgIikgewot
ICAgIGZvcih2YXIgaSA9IGxlbiAsaV9maW5pc2ggPSB3aWR0aCAtIDEgfCAwOyBpIDw9IGlfZmlu
aXNoOyArK2kpewotICAgICAgYnVmZmVyID0gYnVmZmVyICsgZmlsdGVyOwotICAgIH0KLSAgfQot
ICBpZiAoc2lnbmVkY29udikgewotICAgIGlmIChzaWduIDwgMCkgewotICAgICAgYnVmZmVyID0g
YnVmZmVyICsgIi0iOwotICAgIH0KLSAgICBlbHNlIGlmIChzaWduc3R5bGUgIT09ICItIikgewot
ICAgICAgYnVmZmVyID0gYnVmZmVyICsgc2lnbnN0eWxlOwotICAgIH0KLSAgICAKLSAgfQotICBp
ZiAoYWx0ZXJuYXRlICYmIGJhc2UgPT09IC8qIE9jdCAqLzApIHsKLSAgICBidWZmZXIgPSBidWZm
ZXIgKyAiMCI7Ci0gIH0KLSAgaWYgKGFsdGVybmF0ZSAmJiBiYXNlID09PSAvKiBIZXggKi8xKSB7
Ci0gICAgYnVmZmVyID0gYnVmZmVyICsgIjB4IjsKLSAgfQotICBpZiAoanVzdGlmeSA9PT0gIisi
ICYmIGZpbHRlciA9PT0gIjAiKSB7Ci0gICAgZm9yKHZhciBpJDEgPSBsZW4gLGlfZmluaXNoJDEg
PSB3aWR0aCAtIDEgfCAwOyBpJDEgPD0gaV9maW5pc2gkMTsgKytpJDEpewotICAgICAgYnVmZmVy
ID0gYnVmZmVyICsgZmlsdGVyOwotICAgIH0KLSAgfQotICBidWZmZXIgPSB1cHBlcmNhc2UgPyBi
dWZmZXIgKyByYXdidWZmZXIudG9VcHBlckNhc2UoKSA6IGJ1ZmZlciArIHJhd2J1ZmZlcjsKLSAg
aWYgKGp1c3RpZnkgPT09ICItIikgewotICAgIGZvcih2YXIgaSQyID0gbGVuICxpX2ZpbmlzaCQy
ID0gd2lkdGggLSAxIHwgMDsgaSQyIDw9IGlfZmluaXNoJDI7ICsraSQyKXsKLSAgICAgIGJ1ZmZl
ciA9IGJ1ZmZlciArICIgIjsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIGJ1ZmZlcjsKLX0KLQotZnVu
Y3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkgewotICBpZiAoZm10ID09PSAiJWQiKSB7Ci0g
ICAgcmV0dXJuICIiICsgaTsKLSAgfQotICBlbHNlIHsKLSAgICB2YXIgZiA9IHBhcnNlX2Zvcm1h
dChmbXQpOwotICAgIHZhciBmJDEgPSBmOwotICAgIHZhciBpJDEgPSBpOwotICAgIHZhciBpJDIg
PSBpJDEgPCAwID8gKAotICAgICAgICBmJDFbLyogc2lnbmVkY29udiAqLzVdID8gKGYkMVsvKiBz
aWduICovOF0gPSAtMSwgLWkkMSkgOiAoaSQxID4+PiAwKQotICAgICAgKSA6IGkkMTsKLSAgICB2
YXIgcyA9IGkkMi50b1N0cmluZyhpbnRfb2ZfYmFzZShmJDFbLyogYmFzZSAqLzRdKSk7Ci0gICAg
aWYgKGYkMVsvKiBwcmVjICovOV0gPj0gMCkgewotICAgICAgZiQxWy8qIGZpbHRlciAqLzJdID0g
IiAiOwotICAgICAgdmFyIG4gPSBmJDFbLyogcHJlYyAqLzldIC0gcy5sZW5ndGggfCAwOwotICAg
ICAgaWYgKG4gPiAwKSB7Ci0gICAgICAgIHMgPSBDYW1sX3V0aWxzLnJlcGVhdChuLCAiMCIpICsg
czsKLSAgICAgIH0KLSAgICAgIAotICAgIH0KLSAgICByZXR1cm4gZmluaXNoX2Zvcm1hdHRpbmco
ZiQxLCBzKTsKLSAgfQotfQotCi1mdW5jdGlvbiBjYW1sX2ludDY0X2Zvcm1hdChmbXQsIHgpIHsK
LSAgdmFyIGYgPSBwYXJzZV9mb3JtYXQoZm10KTsKLSAgdmFyIHgkMSA9IGZbLyogc2lnbmVkY29u
diAqLzVdICYmIENhbWxfaW50NjQubHQoeCwgLyogaW50NjQgKi9bCi0gICAgICAgIC8qIGhpICov
MCwKLSAgICAgICAgLyogbG8gKi8wCi0gICAgICBdKSA/IChmWy8qIHNpZ24gKi84XSA9IC0xLCBD
YW1sX2ludDY0Lm5lZyh4KSkgOiB4OwotICB2YXIgcyA9ICIiOwotICB2YXIgbWF0Y2ggPSBmWy8q
IGJhc2UgKi80XTsKLSAgc3dpdGNoIChtYXRjaCkgewotICAgIGNhc2UgMCA6IAotICAgICAgICB2
YXIgd2Jhc2UgPSAvKiBpbnQ2NCAqL1sKLSAgICAgICAgICAvKiBoaSAqLzAsCi0gICAgICAgICAg
LyogbG8gKi84Ci0gICAgICAgIF07Ci0gICAgICAgIHZhciBjdnRibCA9ICIwMTIzNDU2NyI7Ci0g
ICAgICAgIGlmIChDYW1sX2ludDY0Lmx0KHgkMSwgLyogaW50NjQgKi9bCi0gICAgICAgICAgICAg
ICAgLyogaGkgKi8wLAotICAgICAgICAgICAgICAgIC8qIGxvICovMAotICAgICAgICAgICAgICBd
KSkgewotICAgICAgICAgIHZhciB5ID0gQ2FtbF9pbnQ2NC5kaXNjYXJkX3NpZ24oeCQxKTsKLSAg
ICAgICAgICB2YXIgbWF0Y2gkMSA9IENhbWxfaW50NjQuZGl2X21vZCh5LCB3YmFzZSk7Ci0gICAg
ICAgICAgdmFyIHF1b3RpZW50ID0gQ2FtbF9pbnQ2NC5hZGQoLyogaW50NjQgKi9bCi0gICAgICAg
ICAgICAgICAgLyogaGkgKi8yNjg0MzU0NTYsCi0gICAgICAgICAgICAgICAgLyogbG8gKi8wCi0g
ICAgICAgICAgICAgIF0sIG1hdGNoJDFbMF0pOwotICAgICAgICAgIHZhciBtb2R1bHVzID0gbWF0
Y2gkMVsxXTsKLSAgICAgICAgICBzID0gQ2FtbF9zdHJpbmcuanNfc3RyaW5nX29mX2NoYXIoY3Z0
YmwuY2hhckNvZGVBdChtb2R1bHVzWzFdIHwgMCkpICsgczsKLSAgICAgICAgICB3aGlsZShDYW1s
X2ludDY0Lm5lcShxdW90aWVudCwgLyogaW50NjQgKi9bCi0gICAgICAgICAgICAgICAgICAvKiBo
aSAqLzAsCi0gICAgICAgICAgICAgICAgICAvKiBsbyAqLzAKLSAgICAgICAgICAgICAgICBdKSkg
ewotICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBDYW1sX2ludDY0LmRpdl9tb2QocXVvdGllbnQs
IHdiYXNlKTsKLSAgICAgICAgICAgIHF1b3RpZW50ID0gbWF0Y2gkMlswXTsKLSAgICAgICAgICAg
IG1vZHVsdXMgPSBtYXRjaCQyWzFdOwotICAgICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0
cmluZ19vZl9jaGFyKGN2dGJsLmNoYXJDb2RlQXQobW9kdWx1c1sxXSB8IDApKSArIHM7Ci0gICAg
ICAgICAgfTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICB2YXIgbWF0Y2gk
MyA9IENhbWxfaW50NjQuZGl2X21vZCh4JDEsIHdiYXNlKTsKLSAgICAgICAgICB2YXIgcXVvdGll
bnQkMSA9IG1hdGNoJDNbMF07Ci0gICAgICAgICAgdmFyIG1vZHVsdXMkMSA9IG1hdGNoJDNbMV07
Ci0gICAgICAgICAgcyA9IENhbWxfc3RyaW5nLmpzX3N0cmluZ19vZl9jaGFyKGN2dGJsLmNoYXJD
b2RlQXQobW9kdWx1cyQxWzFdIHwgMCkpICsgczsKLSAgICAgICAgICB3aGlsZShDYW1sX2ludDY0
Lm5lcShxdW90aWVudCQxLCAvKiBpbnQ2NCAqL1sKLSAgICAgICAgICAgICAgICAgIC8qIGhpICov
MCwKLSAgICAgICAgICAgICAgICAgIC8qIGxvICovMAotICAgICAgICAgICAgICAgIF0pKSB7Ci0g
ICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IENhbWxfaW50NjQuZGl2X21vZChxdW90aWVudCQxLCB3
YmFzZSk7Ci0gICAgICAgICAgICBxdW90aWVudCQxID0gbWF0Y2gkNFswXTsKLSAgICAgICAgICAg
IG1vZHVsdXMkMSA9IG1hdGNoJDRbMV07Ci0gICAgICAgICAgICBzID0gQ2FtbF9zdHJpbmcuanNf
c3RyaW5nX29mX2NoYXIoY3Z0YmwuY2hhckNvZGVBdChtb2R1bHVzJDFbMV0gfCAwKSkgKyBzOwot
ICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxIDogCi0g
ICAgICAgIHMgPSBDYW1sX2ludDY0LnRvX2hleCh4JDEpICsgczsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSAyIDogCi0gICAgICAgIHZhciB3YmFzZSQxID0gLyogaW50NjQgKi9bCi0gICAgICAg
ICAgLyogaGkgKi8wLAotICAgICAgICAgIC8qIGxvICovMTAKLSAgICAgICAgXTsKLSAgICAgICAg
dmFyIGN2dGJsJDEgPSAiMDEyMzQ1Njc4OSI7Ci0gICAgICAgIGlmIChDYW1sX2ludDY0Lmx0KHgk
MSwgLyogaW50NjQgKi9bCi0gICAgICAgICAgICAgICAgLyogaGkgKi8wLAotICAgICAgICAgICAg
ICAgIC8qIGxvICovMAotICAgICAgICAgICAgICBdKSkgewotICAgICAgICAgIHZhciB5JDEgPSBD
YW1sX2ludDY0LmRpc2NhcmRfc2lnbih4JDEpOwotICAgICAgICAgIHZhciBtYXRjaCQ1ID0gQ2Ft
bF9pbnQ2NC5kaXZfbW9kKHkkMSwgd2Jhc2UkMSk7Ci0gICAgICAgICAgdmFyIG1hdGNoJDYgPSBD
YW1sX2ludDY0LmRpdl9tb2QoQ2FtbF9pbnQ2NC5hZGQoLyogaW50NjQgKi9bCi0gICAgICAgICAg
ICAgICAgICAgIC8qIGhpICovMCwKLSAgICAgICAgICAgICAgICAgICAgLyogbG8gKi84Ci0gICAg
ICAgICAgICAgICAgICBdLCBtYXRjaCQ1WzFdKSwgd2Jhc2UkMSk7Ci0gICAgICAgICAgdmFyIHF1
b3RpZW50JDIgPSBDYW1sX2ludDY0LmFkZChDYW1sX2ludDY0LmFkZCgvKiBpbnQ2NCAqL1sKLSAg
ICAgICAgICAgICAgICAgICAgLyogaGkgKi8yMTQ3NDgzNjQsCi0gICAgICAgICAgICAgICAgICAg
IC8qIGxvICovMzQzNTk3MzgzNgotICAgICAgICAgICAgICAgICAgXSwgbWF0Y2gkNVswXSksIG1h
dGNoJDZbMF0pOwotICAgICAgICAgIHZhciBtb2R1bHVzJDIgPSBtYXRjaCQ2WzFdOwotICAgICAg
ICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJpbmdfb2ZfY2hhcihjdnRibCQxLmNoYXJDb2RlQXQo
bW9kdWx1cyQyWzFdIHwgMCkpICsgczsKLSAgICAgICAgICB3aGlsZShDYW1sX2ludDY0Lm5lcShx
dW90aWVudCQyLCAvKiBpbnQ2NCAqL1sKLSAgICAgICAgICAgICAgICAgIC8qIGhpICovMCwKLSAg
ICAgICAgICAgICAgICAgIC8qIGxvICovMAotICAgICAgICAgICAgICAgIF0pKSB7Ci0gICAgICAg
ICAgICB2YXIgbWF0Y2gkNyA9IENhbWxfaW50NjQuZGl2X21vZChxdW90aWVudCQyLCB3YmFzZSQx
KTsKLSAgICAgICAgICAgIHF1b3RpZW50JDIgPSBtYXRjaCQ3WzBdOwotICAgICAgICAgICAgbW9k
dWx1cyQyID0gbWF0Y2gkN1sxXTsKLSAgICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJp
bmdfb2ZfY2hhcihjdnRibCQxLmNoYXJDb2RlQXQobW9kdWx1cyQyWzFdIHwgMCkpICsgczsKLSAg
ICAgICAgICB9OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHZhciBtYXRj
aCQ4ID0gQ2FtbF9pbnQ2NC5kaXZfbW9kKHgkMSwgd2Jhc2UkMSk7Ci0gICAgICAgICAgdmFyIHF1
b3RpZW50JDMgPSBtYXRjaCQ4WzBdOwotICAgICAgICAgIHZhciBtb2R1bHVzJDMgPSBtYXRjaCQ4
WzFdOwotICAgICAgICAgIHMgPSBDYW1sX3N0cmluZy5qc19zdHJpbmdfb2ZfY2hhcihjdnRibCQx
LmNoYXJDb2RlQXQobW9kdWx1cyQzWzFdIHwgMCkpICsgczsKLSAgICAgICAgICB3aGlsZShDYW1s
X2ludDY0Lm5lcShxdW90aWVudCQzLCAvKiBpbnQ2NCAqL1sKLSAgICAgICAgICAgICAgICAgIC8q
IGhpICovMCwKLSAgICAgICAgICAgICAgICAgIC8qIGxvICovMAotICAgICAgICAgICAgICAgIF0p
KSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkOSA9IENhbWxfaW50NjQuZGl2X21vZChxdW90aWVu
dCQzLCB3YmFzZSQxKTsKLSAgICAgICAgICAgIHF1b3RpZW50JDMgPSBtYXRjaCQ5WzBdOwotICAg
ICAgICAgICAgbW9kdWx1cyQzID0gbWF0Y2gkOVsxXTsKLSAgICAgICAgICAgIHMgPSBDYW1sX3N0
cmluZy5qc19zdHJpbmdfb2ZfY2hhcihjdnRibCQxLmNoYXJDb2RlQXQobW9kdWx1cyQzWzFdIHwg
MCkpICsgczsKLSAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIAot
ICB9Ci0gIGlmIChmWy8qIHByZWMgKi85XSA+PSAwKSB7Ci0gICAgZlsvKiBmaWx0ZXIgKi8yXSA9
ICIgIjsKLSAgICB2YXIgbiA9IGZbLyogcHJlYyAqLzldIC0gcy5sZW5ndGggfCAwOwotICAgIGlm
IChuID4gMCkgewotICAgICAgcyA9IENhbWxfdXRpbHMucmVwZWF0KG4sICIwIikgKyBzOwotICAg
IH0KLSAgICAKLSAgfQotICByZXR1cm4gZmluaXNoX2Zvcm1hdHRpbmcoZiwgcyk7Ci19Ci0KLWZ1
bmN0aW9uIGNhbWxfZm9ybWF0X2Zsb2F0KGZtdCwgeCkgewotICB2YXIgZiA9IHBhcnNlX2Zvcm1h
dChmbXQpOwotICB2YXIgcHJlYyA9IGZbLyogcHJlYyAqLzldIDwgMCA/IDYgOiBmWy8qIHByZWMg
Ki85XTsKLSAgdmFyIHgkMSA9IHggPCAwID8gKGZbLyogc2lnbiAqLzhdID0gLTEsIC14KSA6IHg7
Ci0gIHZhciBzID0gIiI7Ci0gIGlmIChpc05hTih4JDEpKSB7Ci0gICAgcyA9ICJuYW4iOwotICAg
IGZbLyogZmlsdGVyICovMl0gPSAiICI7Ci0gIH0KLSAgZWxzZSBpZiAoaXNGaW5pdGUoeCQxKSkg
ewotICAgIHZhciBtYXRjaCA9IGZbLyogY29udiAqLzEwXTsKLSAgICBzd2l0Y2ggKG1hdGNoKSB7
Ci0gICAgICBjYXNlICJlIiA6IAotICAgICAgICAgIHMgPSB4JDEudG9FeHBvbmVudGlhbChwcmVj
KTsKLSAgICAgICAgICB2YXIgaSA9IHMubGVuZ3RoOwotICAgICAgICAgIGlmIChzW2kgLSAzIHwg
MF0gPT09ICJlIikgewotICAgICAgICAgICAgcyA9IHMuc2xpY2UoMCwgaSAtIDEgfCAwKSArICgi
MCIgKyBzLnNsaWNlKGkgLSAxIHwgMCkpOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgImYiIDogCi0gICAgICAgICAgcyA9IHgkMS50b0ZpeGVkKHByZWMpOwotICAg
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAiZyIgOiAKLSAgICAgICAgICB2YXIgcHJlYyQxID0g
cHJlYyAhPT0gMCA/IHByZWMgOiAxOwotICAgICAgICAgIHMgPSB4JDEudG9FeHBvbmVudGlhbChw
cmVjJDEgLSAxIHwgMCk7Ci0gICAgICAgICAgdmFyIGogPSBzLmluZGV4T2YoImUiKTsKLSAgICAg
ICAgICB2YXIgZXhwID0gK3Muc2xpY2UoaiArIDEgfCAwKTsKLSAgICAgICAgICBpZiAoZXhwIDwg
LTQgfHwgeCQxID49IDFlMjEgfHwgeCQxLnRvRml4ZWQoMCkubGVuZ3RoID4gcHJlYyQxKSB7Ci0g
ICAgICAgICAgICB2YXIgaSQxID0gaiAtIDEgfCAwOwotICAgICAgICAgICAgd2hpbGUoc1tpJDFd
ID09PSAiMCIpIHsKLSAgICAgICAgICAgICAgaSQxID0gaSQxIC0gMSB8IDA7Ci0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgaWYgKHNbaSQxXSA9PT0gIi4iKSB7Ci0gICAgICAgICAgICAgIGkk
MSA9IGkkMSAtIDEgfCAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcyA9IHMuc2xpY2Uo
MCwgaSQxICsgMSB8IDApICsgcy5zbGljZShqKTsKLSAgICAgICAgICAgIHZhciBpJDIgPSBzLmxl
bmd0aDsKLSAgICAgICAgICAgIGlmIChzW2kkMiAtIDMgfCAwXSA9PT0gImUiKSB7Ci0gICAgICAg
ICAgICAgIHMgPSBzLnNsaWNlKDAsIGkkMiAtIDEgfCAwKSArICgiMCIgKyBzLnNsaWNlKGkkMiAt
IDEgfCAwKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgcCA9IHByZWMkMTsKLSAgICAgICAgICAgIGlm
IChleHAgPCAwKSB7Ci0gICAgICAgICAgICAgIHAgPSBwIC0gKGV4cCArIDEgfCAwKSB8IDA7Ci0g
ICAgICAgICAgICAgIHMgPSB4JDEudG9GaXhlZChwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICB3aGlsZShmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHMgPSB4JDEudG9GaXhlZChwKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICsocy5sZW5ndGggPiAocHJlYyQxICsgMSB8IDApKTsKLSAgICAgICAgICAgICAgICAgIH0oKSkg
ewotICAgICAgICAgICAgICAgIHAgPSBwIC0gMSB8IDA7Ci0gICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocCAhPT0gMCkgewotICAgICAgICAgICAgICB2YXIg
ayA9IHMubGVuZ3RoIC0gMSB8IDA7Ci0gICAgICAgICAgICAgIHdoaWxlKHNba10gPT09ICIwIikg
ewotICAgICAgICAgICAgICAgIGsgPSBrIC0gMSB8IDA7Ci0gICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICAgIGlmIChzW2tdID09PSAiLiIpIHsKLSAgICAgICAgICAgICAgICBrID0gayAtIDEg
fCAwOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGsgKyAx
IHwgMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAKLSAgICB9Ci0gIH0KLSAgZWxzZSB7
Ci0gICAgcyA9ICJpbmYiOwotICAgIGZbLyogZmlsdGVyICovMl0gPSAiICI7Ci0gIH0KLSAgcmV0
dXJuIGZpbmlzaF9mb3JtYXR0aW5nKGYsIHMpOwotfQotCi12YXIgZmxvYXRfb2Zfc3RyaW5nID0g
KAotICBmdW5jdGlvbiAocywgY2FtbF9mYWlsd2l0aCkgewotICAgIHZhciByZXMgPSArczsKLSAg
ICBpZiAoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkKLSAgICAgICAgcmV0dXJuIHJl
czsKLSAgICBzID0gcy5yZXBsYWNlKC9fL2csICIiKTsKLSAgICByZXMgPSArczsKLSAgICBpZiAo
KChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHx8IC9eWystXT9uYW4kL2kudGVzdChz
KSkgewotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLSAgICA7Ci0gICAgaWYgKC9eICoweFsw
LTlhLWZfXStwWystXT9bMC05X10rL2kudGVzdChzKSkgewotICAgICAgICB2YXIgcGlkeCA9IHMu
aW5kZXhPZigncCcpOwotICAgICAgICBwaWR4ID0gKHBpZHggPT0gLTEpID8gcy5pbmRleE9mKCdQ
JykgOiBwaWR4OwotICAgICAgICB2YXIgZXhwID0gK3Muc3Vic3RyaW5nKHBpZHggKyAxKTsKLSAg
ICAgICAgcmVzID0gK3Muc3Vic3RyaW5nKDAsIHBpZHgpOwotICAgICAgICByZXR1cm4gcmVzICog
TWF0aC5wb3coMiwgZXhwKTsKLSAgICB9Ci0gICAgaWYgKC9eXCs/aW5mKGluaXR5KT8kL2kudGVz
dChzKSkKLSAgICAgICAgcmV0dXJuIEluZmluaXR5OwotICAgIGlmICgvXi1pbmYoaW5pdHkpPyQv
aS50ZXN0KHMpKQotICAgICAgICByZXR1cm4gLUluZmluaXR5OwotICAgIGNhbWxfZmFpbHdpdGgo
ImZsb2F0X29mX3N0cmluZyIpOwotfQotCi0pOwotCi1mdW5jdGlvbiBjYW1sX2Zsb2F0X29mX3N0
cmluZyhzKSB7Ci0gIHJldHVybiBDdXJyeS5fMihmbG9hdF9vZl9zdHJpbmcsIHMsIGNhbWxfZmFp
bHdpdGgpOwotfQotCi12YXIgY2FtbF9uYXRpdmVpbnRfZm9ybWF0ID0gY2FtbF9mb3JtYXRfaW50
OwotCi12YXIgY2FtbF9pbnQzMl9mb3JtYXQgPSBjYW1sX2Zvcm1hdF9pbnQ7Ci0KLXZhciBjYW1s
X2ludDMyX29mX3N0cmluZyA9IGNhbWxfaW50X29mX3N0cmluZzsKLQotdmFyIGNhbWxfbmF0aXZl
aW50X29mX3N0cmluZyA9IGNhbWxfaW50X29mX3N0cmluZzsKLQotZXhwb3J0cy5jYW1sX2Zvcm1h
dF9mbG9hdCAgICAgICAgPSBjYW1sX2Zvcm1hdF9mbG9hdDsKLWV4cG9ydHMuY2FtbF9mb3JtYXRf
aW50ICAgICAgICAgID0gY2FtbF9mb3JtYXRfaW50OwotZXhwb3J0cy5jYW1sX25hdGl2ZWludF9m
b3JtYXQgICAgPSBjYW1sX25hdGl2ZWludF9mb3JtYXQ7Ci1leHBvcnRzLmNhbWxfaW50MzJfZm9y
bWF0ICAgICAgICA9IGNhbWxfaW50MzJfZm9ybWF0OwotZXhwb3J0cy5jYW1sX2Zsb2F0X29mX3N0
cmluZyAgICAgPSBjYW1sX2Zsb2F0X29mX3N0cmluZzsKLWV4cG9ydHMuY2FtbF9pbnQ2NF9mb3Jt
YXQgICAgICAgID0gY2FtbF9pbnQ2NF9mb3JtYXQ7Ci1leHBvcnRzLmNhbWxfaW50X29mX3N0cmlu
ZyAgICAgICA9IGNhbWxfaW50X29mX3N0cmluZzsKLWV4cG9ydHMuY2FtbF9pbnQzMl9vZl9zdHJp
bmcgICAgID0gY2FtbF9pbnQzMl9vZl9zdHJpbmc7Ci1leHBvcnRzLmNhbWxfaW50NjRfb2Zfc3Ry
aW5nICAgICA9IGNhbWxfaW50NjRfb2Zfc3RyaW5nOwotZXhwb3J0cy5jYW1sX25hdGl2ZWludF9v
Zl9zdHJpbmcgPSBjYW1sX25hdGl2ZWludF9vZl9zdHJpbmc7Ci0vKiBmbG9hdF9vZl9zdHJpbmcg
Tm90IGEgcHVyZSBtb2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBjYW1sX2Zvcm1hdC5qcyAvLy8v
Ly8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydjYW1sX2lu
dDMyJ10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3Rh
cnQgb2YgY2FtbF9pbnQzMi5qcyAvLy8vLy8vLwotJ3VzZSBzdHJpY3QnOwotCi12YXIgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7
Ci0KLWZ1bmN0aW9uIGRpdih4LCB5KSB7Ci0gIGlmICh5ID09PSAwKSB7Ci0gICAgdGhyb3cgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuZGl2aXNpb25fYnlfemVybzsKLSAgfQotICBlbHNlIHsKLSAg
ICByZXR1cm4geCAvIHkgfCAwOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG1vZF8oeCwgeSkgewotICBp
ZiAoeSA9PT0gMCkgewotICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmRpdmlzaW9u
X2J5X3plcm87Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIHggJSB5OwotICB9Ci19Ci0KLWZ1
bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7Ci0gIHJldHVybiAoKHggJiAyNTUpIDw8IDgpIHwgKCh4
ICYgNjUyODApID4+PiA4KTsKLX0KLQotZnVuY3Rpb24gY2FtbF9pbnQzMl9ic3dhcCh4KSB7Ci0g
IHJldHVybiAoKHggJiAyNTUpIDw8IDI0KSB8ICgoeCAmIDY1MjgwKSA8PCA4KSB8ICgoeCAmIDE2
NzExNjgwKSA+Pj4gOCkgfCAoKHggJiA0Mjc4MTkwMDgwKSA+Pj4gMjQpOwotfQotCi12YXIgaW11
bCA9ICggTWF0aC5pbXVsIHx8IGZ1bmN0aW9uICh4LHkpIHsKLSAgeSB8PSAwOyByZXR1cm4gKCgo
KHggPj4gMTYpICogeSkgPDwgMTYpICsgKHggJiAweGZmZmYpICogeSl8MDsgCi19Ci0pOwotCi12
YXIgY2FtbF9uYXRpdmVpbnRfYnN3YXAgPSBjYW1sX2ludDMyX2Jzd2FwOwotCi1leHBvcnRzLmRp
diAgICAgICAgICAgICAgICAgID0gZGl2OwotZXhwb3J0cy5tb2RfICAgICAgICAgICAgICAgICA9
IG1vZF87Ci1leHBvcnRzLmNhbWxfYnN3YXAxNiAgICAgICAgID0gY2FtbF9ic3dhcDE2OwotZXhw
b3J0cy5jYW1sX2ludDMyX2Jzd2FwICAgICA9IGNhbWxfaW50MzJfYnN3YXA7Ci1leHBvcnRzLmNh
bWxfbmF0aXZlaW50X2Jzd2FwID0gY2FtbF9uYXRpdmVpbnRfYnN3YXA7Ci1leHBvcnRzLmltdWwg
ICAgICAgICAgICAgICAgID0gaW11bDsKLS8qIGltdWwgTm90IGEgcHVyZSBtb2R1bGUgKi8KLS8v
Ly8vLy8vIGVuZCBvZiBjYW1sX2ludDMyLmpzIC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9ydHM7
Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ2NhbWxfaW50NjQnXSA9IGZ1bmN0aW9uKCkgewotICAg
IGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBjYW1sX2ludDY0LmpzIC8vLy8v
Ly8vCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVp
cmUoIi4vY2FtbF9vYmoiKTsKLXZhciBDYW1sX2ludDMyICAgICAgICAgICAgICA9IHJlcXVpcmUo
Ii4vY2FtbF9pbnQzMiIpOwotdmFyIENhbWxfdXRpbHMgICAgICAgICAgICAgID0gcmVxdWlyZSgi
Li9jYW1sX3V0aWxzIik7Ci12YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIu
L2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7Ci0KLXZhciBtaW5faW50ID0gLyogcmVjb3JkICov
WwotICAvKiBoaSAqLy0yMTQ3NDgzNjQ4LAotICAvKiBsbyAqLzAKLV07Ci0KLXZhciBtYXhfaW50
ID0gLyogcmVjb3JkICovWwotICAvKiBoaSAqLzEzNDIxNzcyNywKLSAgLyogbG8gKi8xCi1dOwot
Ci12YXIgb25lID0gLyogcmVjb3JkICovWwotICAvKiBoaSAqLzAsCi0gIC8qIGxvICovMQotXTsK
LQotdmFyIHplcm8gPSAvKiByZWNvcmQgKi9bCi0gIC8qIGhpICovMCwKLSAgLyogbG8gKi8wCi1d
OwotCi12YXIgbmVnX29uZSA9IC8qIHJlY29yZCAqL1sKLSAgLyogaGkgKi8tMSwKLSAgLyogbG8g
Ki80Mjk0OTY3Mjk1Ci1dOwotCi1mdW5jdGlvbiBuZWdfc2lnbmVkKHgpIHsKLSAgcmV0dXJuICso
KHggJiAyMTQ3NDgzNjQ4KSAhPT0gMCk7Ci19Ci0KLWZ1bmN0aW9uIGFkZChwYXJhbSwgcGFyYW0k
MSkgewotICB2YXIgb3RoZXJfbG93XyA9IHBhcmFtJDFbLyogbG8gKi8xXTsKLSAgdmFyIHRoaXNf
bG93XyA9IHBhcmFtWy8qIGxvICovMV07Ci0gIHZhciBsbyA9IHRoaXNfbG93XyArIG90aGVyX2xv
d18gJiA0Mjk0OTY3Mjk1OwotICB2YXIgb3ZlcmZsb3cgPSBuZWdfc2lnbmVkKHRoaXNfbG93Xykg
JiYgKG5lZ19zaWduZWQob3RoZXJfbG93XykgfHwgIW5lZ19zaWduZWQobG8pKSB8fCBuZWdfc2ln
bmVkKG90aGVyX2xvd18pICYmICFuZWdfc2lnbmVkKGxvKSA/IDEgOiAwOwotICB2YXIgaGkgPSBw
YXJhbVsvKiBoaSAqLzBdICsgcGFyYW0kMVsvKiBoaSAqLzBdICsgb3ZlcmZsb3cgJiA0Mjk0OTY3
Mjk1OwotICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgIC8qIGhpICovaGksCi0gICAg
ICAgICAgLyogbG8gKi8obG8gPj4+IDApCi0gICAgICAgIF07Ci19Ci0KLWZ1bmN0aW9uIG5vdChw
YXJhbSkgewotICB2YXIgaGkgPSBwYXJhbVsvKiBoaSAqLzBdIF4gLTE7Ci0gIHZhciBsbyA9IHBh
cmFtWy8qIGxvICovMV0gXiAtMTsKLSAgcmV0dXJuIC8qIHJlY29yZCAqL1sKLSAgICAgICAgICAv
KiBoaSAqL2hpLAotICAgICAgICAgIC8qIGxvICovKGxvID4+PiAwKQotICAgICAgICBdOwotfQot
Ci1mdW5jdGlvbiBlcSh4LCB5KSB7Ci0gIGlmICh4Wy8qIGhpICovMF0gPT09IHlbLyogaGkgKi8w
XSkgewotICAgIHJldHVybiArKHhbLyogbG8gKi8xXSA9PT0geVsvKiBsbyAqLzFdKTsKLSAgfQot
ICBlbHNlIHsKLSAgICByZXR1cm4gLyogZmFsc2UgKi8wOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG5l
Zyh4KSB7Ci0gIGlmIChlcSh4LCBtaW5faW50KSkgewotICAgIHJldHVybiBtaW5faW50OwotICB9
Ci0gIGVsc2UgewotICAgIHJldHVybiBhZGQobm90KHgpLCBvbmUpOwotICB9Ci19Ci0KLWZ1bmN0
aW9uIHN1Yih4LCB5KSB7Ci0gIHJldHVybiBhZGQoeCwgbmVnKHkpKTsKLX0KLQotZnVuY3Rpb24g
bHNsXyh4LCBudW1CaXRzKSB7Ci0gIHZhciBsbyA9IHhbLyogbG8gKi8xXTsKLSAgaWYgKG51bUJp
dHMpIHsKLSAgICBpZiAobnVtQml0cyA+PSAzMikgewotICAgICAgcmV0dXJuIC8qIHJlY29yZCAq
L1sKLSAgICAgICAgICAgICAgLyogaGkgKi8obG8gPDwgKG51bUJpdHMgLSAzMiB8IDApKSwKLSAg
ICAgICAgICAgICAgLyogbG8gKi8wCi0gICAgICAgICAgICBdOwotICAgIH0KLSAgICBlbHNlIHsK
LSAgICAgIHZhciBoaSA9IChsbyA+Pj4gKDMyIC0gbnVtQml0cyB8IDApKSB8ICh4Wy8qIGhpICov
MF0gPDwgbnVtQml0cyk7Ci0gICAgICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgICAg
ICAvKiBoaSAqL2hpLAotICAgICAgICAgICAgICAvKiBsbyAqLygobG8gPDwgbnVtQml0cykgPj4+
IDApCi0gICAgICAgICAgICBdOwotICAgIH0KLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4geDsK
LSAgfQotfQotCi1mdW5jdGlvbiBsc3JfKHgsIG51bUJpdHMpIHsKLSAgdmFyIGhpID0geFsvKiBo
aSAqLzBdOwotICBpZiAobnVtQml0cykgewotICAgIHZhciBvZmZzZXQgPSBudW1CaXRzIC0gMzIg
fCAwOwotICAgIGlmIChvZmZzZXQpIHsKLSAgICAgIGlmIChvZmZzZXQgPiAwKSB7Ci0gICAgICAg
IHZhciBsbyA9IChoaSA+Pj4gb2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIC8qIHJlY29yZCAqL1sK
LSAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCi0gICAgICAgICAgICAgICAgLyogbG8gKi8obG8g
Pj4+IDApCi0gICAgICAgICAgICAgIF07Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAg
dmFyIGhpJDEgPSAoaGkgPj4+IG51bUJpdHMpOwotICAgICAgICB2YXIgbG8kMSA9IChoaSA8PCAo
LW9mZnNldCB8IDApKSB8ICh4Wy8qIGxvICovMV0gPj4+IG51bUJpdHMpOwotICAgICAgICByZXR1
cm4gLyogcmVjb3JkICovWwotICAgICAgICAgICAgICAgIC8qIGhpICovaGkkMSwKLSAgICAgICAg
ICAgICAgICAvKiBsbyAqLyhsbyQxID4+PiAwKQotICAgICAgICAgICAgICBdOwotICAgICAgfQot
ICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAgICAg
ICAgIC8qIGhpICovMCwKLSAgICAgICAgICAgICAgLyogbG8gKi8oaGkgPj4+IDApCi0gICAgICAg
ICAgICBdOwotICAgIH0KLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4geDsKLSAgfQotfQotCi1m
dW5jdGlvbiBhc3JfKHgsIG51bUJpdHMpIHsKLSAgdmFyIGhpID0geFsvKiBoaSAqLzBdOwotICBp
ZiAobnVtQml0cykgewotICAgIGlmIChudW1CaXRzIDwgMzIpIHsKLSAgICAgIHZhciBoaSQxID0g
KGhpID4+IG51bUJpdHMpOwotICAgICAgdmFyIGxvID0gKGhpIDw8ICgzMiAtIG51bUJpdHMgfCAw
KSkgfCAoeFsvKiBsbyAqLzFdID4+PiBudW1CaXRzKTsKLSAgICAgIHJldHVybiAvKiByZWNvcmQg
Ki9bCi0gICAgICAgICAgICAgIC8qIGhpICovaGkkMSwKLSAgICAgICAgICAgICAgLyogbG8gKi8o
bG8gPj4+IDApCi0gICAgICAgICAgICBdOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHZhciBs
byQxID0gKGhpID4+IChudW1CaXRzIC0gMzIgfCAwKSk7Ci0gICAgICByZXR1cm4gLyogcmVjb3Jk
ICovWwotICAgICAgICAgICAgICAvKiBoaSAqL2hpID49IDAgPyAwIDogLTEsCi0gICAgICAgICAg
ICAgIC8qIGxvICovKGxvJDEgPj4+IDApCi0gICAgICAgICAgICBdOwotICAgIH0KLSAgfQotICBl
bHNlIHsKLSAgICByZXR1cm4geDsKLSAgfQotfQotCi1mdW5jdGlvbiBpc196ZXJvKHBhcmFtKSB7
Ci0gIGlmIChwYXJhbVsvKiBoaSAqLzBdICE9PSAwIHx8IHBhcmFtWy8qIGxvICovMV0gIT09IDAp
IHsKLSAgICByZXR1cm4gLyogZmFsc2UgKi8wOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAv
KiB0cnVlICovMTsKLSAgfQotfQotCi1mdW5jdGlvbiBtdWwoX3RoaXMsIF9vdGhlcikgewotICB3
aGlsZSh0cnVlKSB7Ci0gICAgdmFyIG90aGVyID0gX290aGVyOwotICAgIHZhciAkJHRoaXMgPSBf
dGhpczsKLSAgICB2YXIgZXhpdCA9IDA7Ci0gICAgdmFyIGxvOwotICAgIHZhciB0aGlzX2hpID0g
JCR0aGlzWy8qIGhpICovMF07Ci0gICAgdmFyIGV4aXQkMSA9IDA7Ci0gICAgdmFyIGV4aXQkMiA9
IDA7Ci0gICAgdmFyIGV4aXQkMyA9IDA7Ci0gICAgaWYgKHRoaXNfaGkgIT09IDApIHsKLSAgICAg
IGV4aXQkMyA9IDQ7Ci0gICAgfQotICAgIGVsc2UgaWYgKCQkdGhpc1svKiBsbyAqLzFdICE9PSAw
KSB7Ci0gICAgICBleGl0JDMgPSA0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiB6
ZXJvOwotICAgIH0KLSAgICBpZiAoZXhpdCQzID09PSA0KSB7Ci0gICAgICBpZiAob3RoZXJbLyog
aGkgKi8wXSAhPT0gMCkgewotICAgICAgICBleGl0JDIgPSAzOwotICAgICAgfQotICAgICAgZWxz
ZSBpZiAob3RoZXJbLyogbG8gKi8xXSAhPT0gMCkgewotICAgICAgICBleGl0JDIgPSAzOwotICAg
ICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiB6ZXJvOwotICAgICAgfQotICAgIH0K
LSAgICBpZiAoZXhpdCQyID09PSAzKSB7Ci0gICAgICBpZiAodGhpc19oaSAhPT0gLTIxNDc0ODM2
NDgpIHsKLSAgICAgICAgZXhpdCQxID0gMjsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKCQkdGhp
c1svKiBsbyAqLzFdICE9PSAwKSB7Ci0gICAgICAgIGV4aXQkMSA9IDI7Ci0gICAgICB9Ci0gICAg
ICBlbHNlIHsKLSAgICAgICAgbG8gPSBvdGhlclsvKiBsbyAqLzFdOwotICAgICAgICBleGl0ID0g
MTsKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGV4aXQkMSA9PT0gMikgewotICAgICAgdmFyIG90
aGVyX2hpID0gb3RoZXJbLyogaGkgKi8wXTsKLSAgICAgIHZhciBsbyQxID0gJCR0aGlzWy8qIGxv
ICovMV07Ci0gICAgICB2YXIgZXhpdCQ0ID0gMDsKLSAgICAgIGlmIChvdGhlcl9oaSAhPT0gLTIx
NDc0ODM2NDgpIHsKLSAgICAgICAgZXhpdCQ0ID0gMzsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYg
KG90aGVyWy8qIGxvICovMV0gIT09IDApIHsKLSAgICAgICAgZXhpdCQ0ID0gMzsKLSAgICAgIH0K
LSAgICAgIGVsc2UgewotICAgICAgICBsbyA9IGxvJDE7Ci0gICAgICAgIGV4aXQgPSAxOwotICAg
ICAgfQotICAgICAgaWYgKGV4aXQkNCA9PT0gMykgewotICAgICAgICB2YXIgb3RoZXJfbG8gPSBv
dGhlclsvKiBsbyAqLzFdOwotICAgICAgICBpZiAodGhpc19oaSA8IDApIHsKLSAgICAgICAgICBp
ZiAob3RoZXJfaGkgPCAwKSB7Ci0gICAgICAgICAgICBfb3RoZXIgPSBuZWcob3RoZXIpOwotICAg
ICAgICAgICAgX3RoaXMgPSBuZWcoJCR0aGlzKTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAg
ICAgICAgICAgIAotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJl
dHVybiBuZWcobXVsKG5lZygkJHRoaXMpLCBvdGhlcikpOwotICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBlbHNlIGlmIChvdGhlcl9oaSA8IDApIHsKLSAgICAgICAgICByZXR1cm4gbmVn
KG11bCgkJHRoaXMsIG5lZyhvdGhlcikpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICB2YXIgYTQ4ID0gKHRoaXNfaGkgPj4+IDE2KTsKLSAgICAgICAgICB2YXIgYTMyID0g
dGhpc19oaSAmIDY1NTM1OwotICAgICAgICAgIHZhciBhMTYgPSAobG8kMSA+Pj4gMTYpOwotICAg
ICAgICAgIHZhciBhMDAgPSBsbyQxICYgNjU1MzU7Ci0gICAgICAgICAgdmFyIGI0OCA9IChvdGhl
cl9oaSA+Pj4gMTYpOwotICAgICAgICAgIHZhciBiMzIgPSBvdGhlcl9oaSAmIDY1NTM1OwotICAg
ICAgICAgIHZhciBiMTYgPSAob3RoZXJfbG8gPj4+IDE2KTsKLSAgICAgICAgICB2YXIgYjAwID0g
b3RoZXJfbG8gJiA2NTUzNTsKLSAgICAgICAgICB2YXIgYzQ4ID0gMDsKLSAgICAgICAgICB2YXIg
YzMyID0gMDsKLSAgICAgICAgICB2YXIgYzE2ID0gMDsKLSAgICAgICAgICB2YXIgYzAwID0gYTAw
ICogYjAwOwotICAgICAgICAgIGMxNiA9IChjMDAgPj4+IDE2KSArIGExNiAqIGIwMDsKLSAgICAg
ICAgICBjMzIgPSAoYzE2ID4+PiAxNik7Ci0gICAgICAgICAgYzE2ID0gKGMxNiAmIDY1NTM1KSAr
IGEwMCAqIGIxNjsKLSAgICAgICAgICBjMzIgPSBjMzIgKyAoYzE2ID4+PiAxNikgKyBhMzIgKiBi
MDA7Ci0gICAgICAgICAgYzQ4ID0gKGMzMiA+Pj4gMTYpOwotICAgICAgICAgIGMzMiA9IChjMzIg
JiA2NTUzNSkgKyBhMTYgKiBiMTY7Ci0gICAgICAgICAgYzQ4ICs9IChjMzIgPj4+IDE2KTsKLSAg
ICAgICAgICBjMzIgPSAoYzMyICYgNjU1MzUpICsgYTAwICogYjMyOwotICAgICAgICAgIGM0OCAr
PSAoYzMyID4+PiAxNik7Ci0gICAgICAgICAgYzMyID0gYzMyICYgNjU1MzU7Ci0gICAgICAgICAg
YzQ4ID0gYzQ4ICsgKGE0OCAqIGIwMCArIGEzMiAqIGIxNiArIGExNiAqIGIzMiArIGEwMCAqIGI0
OCkgJiA2NTUzNTsKLSAgICAgICAgICB2YXIgaGkgPSBjMzIgfCAoYzQ4IDw8IDE2KTsKLSAgICAg
ICAgICB2YXIgbG8kMiA9IGMwMCAmIDY1NTM1IHwgKChjMTYgJiA2NTUzNSkgPDwgMTYpOwotICAg
ICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAgICAgICAgICAgICAvKiBoaSAqL2hp
LAotICAgICAgICAgICAgICAgICAgLyogbG8gKi8obG8kMiA+Pj4gMCkKLSAgICAgICAgICAgICAg
ICBdOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAKLSAgICB9Ci0gICAgaWYgKGV4aXQgPT09
IDEpIHsKLSAgICAgIGlmICgobG8gJiAxKSA9PT0gMCkgewotICAgICAgICByZXR1cm4gemVybzsK
LSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4gbWluX2ludDsKLSAgICAgIH0K
LSAgICB9Ci0gICAgCi0gIH07Ci19Ci0KLWZ1bmN0aW9uIHN3YXAocGFyYW0pIHsKLSAgdmFyIGhp
ID0gQ2FtbF9pbnQzMi5jYW1sX2ludDMyX2Jzd2FwKHBhcmFtWy8qIGxvICovMV0pOwotICB2YXIg
bG8gPSBDYW1sX2ludDMyLmNhbWxfaW50MzJfYnN3YXAocGFyYW1bLyogaGkgKi8wXSk7Ci0gIHJl
dHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAgICAgLyogaGkgKi9oaSwKLSAgICAgICAgICAvKiBs
byAqLyhsbyA+Pj4gMCkKLSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24geG9yKHBhcmFtLCBwYXJh
bSQxKSB7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAgICAgLyogaGkgKi9wYXJhbVsv
KiBoaSAqLzBdIF4gcGFyYW0kMVsvKiBoaSAqLzBdLAotICAgICAgICAgIC8qIGxvICovKChwYXJh
bVsvKiBsbyAqLzFdIF4gcGFyYW0kMVsvKiBsbyAqLzFdKSA+Pj4gMCkKLSAgICAgICAgXTsKLX0K
LQotZnVuY3Rpb24gb3JfKHBhcmFtLCBwYXJhbSQxKSB7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9b
Ci0gICAgICAgICAgLyogaGkgKi9wYXJhbVsvKiBoaSAqLzBdIHwgcGFyYW0kMVsvKiBoaSAqLzBd
LAotICAgICAgICAgIC8qIGxvICovKChwYXJhbVsvKiBsbyAqLzFdIHwgcGFyYW0kMVsvKiBsbyAq
LzFdKSA+Pj4gMCkKLSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24gYW5kXyhwYXJhbSwgcGFyYW0k
MSkgewotICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgIC8qIGhpICovcGFyYW1bLyog
aGkgKi8wXSAmIHBhcmFtJDFbLyogaGkgKi8wXSwKLSAgICAgICAgICAvKiBsbyAqLygocGFyYW1b
LyogbG8gKi8xXSAmIHBhcmFtJDFbLyogbG8gKi8xXSkgPj4+IDApCi0gICAgICAgIF07Ci19Ci0K
LWZ1bmN0aW9uIGdlKHBhcmFtLCBwYXJhbSQxKSB7Ci0gIHZhciBvdGhlcl9oaSA9IHBhcmFtJDFb
LyogaGkgKi8wXTsKLSAgdmFyIGhpID0gcGFyYW1bLyogaGkgKi8wXTsKLSAgaWYgKGhpID4gb3Ro
ZXJfaGkpIHsKLSAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gIH0KLSAgZWxzZSBpZiAoaGkgPCBv
dGhlcl9oaSkgewotICAgIHJldHVybiAvKiBmYWxzZSAqLzA7Ci0gIH0KLSAgZWxzZSB7Ci0gICAg
cmV0dXJuICsocGFyYW1bLyogbG8gKi8xXSA+PSBwYXJhbSQxWy8qIGxvICovMV0pOwotICB9Ci19
Ci0KLWZ1bmN0aW9uIG5lcSh4LCB5KSB7Ci0gIHJldHVybiAxIC0gZXEoeCwgeSk7Ci19Ci0KLWZ1
bmN0aW9uIGx0KHgsIHkpIHsKLSAgcmV0dXJuIDEgLSBnZSh4LCB5KTsKLX0KLQotZnVuY3Rpb24g
Z3QoeCwgeSkgewotICBpZiAoeFsvKiBoaSAqLzBdID4geVsvKiBoaSAqLzBdKSB7Ci0gICAgcmV0
dXJuIC8qIHRydWUgKi8xOwotICB9Ci0gIGVsc2UgaWYgKHhbLyogaGkgKi8wXSA8IHlbLyogaGkg
Ki8wXSkgewotICAgIHJldHVybiAvKiBmYWxzZSAqLzA7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0
dXJuICsoeFsvKiBsbyAqLzFdID4geVsvKiBsbyAqLzFdKTsKLSAgfQotfQotCi1mdW5jdGlvbiBs
ZSh4LCB5KSB7Ci0gIHJldHVybiAxIC0gZ3QoeCwgeSk7Ci19Ci0KLWZ1bmN0aW9uIHRvX2Zsb2F0
KHBhcmFtKSB7Ci0gIHJldHVybiBwYXJhbVsvKiBoaSAqLzBdICogNDI5NDk2NzI5NiArIHBhcmFt
Wy8qIGxvICovMV07Ci19Ci0KLXZhciB0d29fcHRyXzMyX2RibCA9IE1hdGgucG93KDIsIDMyKTsK
LQotdmFyIHR3b19wdHJfNjNfZGJsID0gTWF0aC5wb3coMiwgNjMpOwotCi12YXIgbmVnX3R3b19w
dHJfNjMgPSAtTWF0aC5wb3coMiwgNjMpOwotCi1mdW5jdGlvbiBvZl9mbG9hdCh4KSB7Ci0gIGlm
IChpc05hTih4KSB8fCAhaXNGaW5pdGUoeCkpIHsKLSAgICByZXR1cm4gemVybzsKLSAgfQotICBl
bHNlIGlmICh4IDw9IG5lZ190d29fcHRyXzYzKSB7Ci0gICAgcmV0dXJuIG1pbl9pbnQ7Ci0gIH0K
LSAgZWxzZSBpZiAoeCArIDEgPj0gdHdvX3B0cl82M19kYmwpIHsKLSAgICByZXR1cm4gbWF4X2lu
dDsKLSAgfQotICBlbHNlIGlmICh4IDwgMCkgewotICAgIHJldHVybiBuZWcob2ZfZmxvYXQoLXgp
KTsKLSAgfQotICBlbHNlIHsKLSAgICB2YXIgaGkgPSB4IC8gdHdvX3B0cl8zMl9kYmwgfCAwOwot
ICAgIHZhciBsbyA9IHggJSB0d29fcHRyXzMyX2RibCB8IDA7Ci0gICAgcmV0dXJuIC8qIHJlY29y
ZCAqL1sKLSAgICAgICAgICAgIC8qIGhpICovaGksCi0gICAgICAgICAgICAvKiBsbyAqLyhsbyA+
Pj4gMCkKLSAgICAgICAgICBdOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGRpdihfc2VsZiwgX290aGVy
KSB7Ci0gIHdoaWxlKHRydWUpIHsKLSAgICB2YXIgb3RoZXIgPSBfb3RoZXI7Ci0gICAgdmFyIHNl
bGYgPSBfc2VsZjsKLSAgICB2YXIgc2VsZl9oaSA9IHNlbGZbLyogaGkgKi8wXTsKLSAgICB2YXIg
ZXhpdCA9IDA7Ci0gICAgdmFyIGV4aXQkMSA9IDA7Ci0gICAgaWYgKG90aGVyWy8qIGhpICovMF0g
IT09IDApIHsKLSAgICAgIGV4aXQkMSA9IDI7Ci0gICAgfQotICAgIGVsc2UgaWYgKG90aGVyWy8q
IGxvICovMV0gIT09IDApIHsKLSAgICAgIGV4aXQkMSA9IDI7Ci0gICAgfQotICAgIGVsc2Ugewot
ICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZGl2aXNpb25fYnlfemVybzsKLSAg
ICB9Ci0gICAgaWYgKGV4aXQkMSA9PT0gMikgewotICAgICAgaWYgKHNlbGZfaGkgIT09IC0yMTQ3
NDgzNjQ4KSB7Ci0gICAgICAgIGlmIChzZWxmX2hpICE9PSAwKSB7Ci0gICAgICAgICAgZXhpdCA9
IDE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc2VsZlsvKiBsbyAqLzFdICE9PSAwKSB7
Ci0gICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgcmV0dXJuIHplcm87Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHNlbGZb
LyogbG8gKi8xXSAhPT0gMCkgewotICAgICAgICBleGl0ID0gMTsKLSAgICAgIH0KLSAgICAgIGVs
c2UgaWYgKGVxKG90aGVyLCBvbmUpIHx8IGVxKG90aGVyLCBuZWdfb25lKSkgewotICAgICAgICBy
ZXR1cm4gc2VsZjsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGVxKG90aGVyLCBtaW5faW50KSkg
ewotICAgICAgICByZXR1cm4gb25lOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHZh
ciBvdGhlcl9oaSA9IG90aGVyWy8qIGhpICovMF07Ci0gICAgICAgIHZhciBoYWxmX3RoaXMgPSBh
c3JfKHNlbGYsIDEpOwotICAgICAgICB2YXIgYXBwcm94ID0gbHNsXyhkaXYoaGFsZl90aGlzLCBv
dGhlciksIDEpOwotICAgICAgICB2YXIgZXhpdCQyID0gMDsKLSAgICAgICAgaWYgKGFwcHJveFsv
KiBoaSAqLzBdICE9PSAwKSB7Ci0gICAgICAgICAgZXhpdCQyID0gMzsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIGlmIChhcHByb3hbLyogbG8gKi8xXSAhPT0gMCkgewotICAgICAgICAgIGV4aXQk
MiA9IDM7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAob3RoZXJfaGkgPCAwKSB7Ci0gICAg
ICAgICAgcmV0dXJuIG9uZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBy
ZXR1cm4gbmVnKG9uZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV4aXQkMiA9PT0gMykgewot
ICAgICAgICAgIHZhciB5ID0gbXVsKG90aGVyLCBhcHByb3gpOwotICAgICAgICAgIHZhciByZW0g
PSBhZGQoc2VsZiwgbmVnKHkpKTsKLSAgICAgICAgICByZXR1cm4gYWRkKGFwcHJveCwgZGl2KHJl
bSwgb3RoZXIpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgaWYg
KGV4aXQgPT09IDEpIHsKLSAgICAgIHZhciBvdGhlcl9oaSQxID0gb3RoZXJbLyogaGkgKi8wXTsK
LSAgICAgIHZhciBleGl0JDMgPSAwOwotICAgICAgaWYgKG90aGVyX2hpJDEgIT09IC0yMTQ3NDgz
NjQ4KSB7Ci0gICAgICAgIGV4aXQkMyA9IDI7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChvdGhl
clsvKiBsbyAqLzFdICE9PSAwKSB7Ci0gICAgICAgIGV4aXQkMyA9IDI7Ci0gICAgICB9Ci0gICAg
ICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIHplcm87Ci0gICAgICB9Ci0gICAgICBpZiAoZXhpdCQz
ID09PSAyKSB7Ci0gICAgICAgIGlmIChzZWxmX2hpIDwgMCkgewotICAgICAgICAgIGlmIChvdGhl
cl9oaSQxIDwgMCkgewotICAgICAgICAgICAgX290aGVyID0gbmVnKG90aGVyKTsKLSAgICAgICAg
ICAgIF9zZWxmID0gbmVnKHNlbGYpOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIG5l
ZyhkaXYobmVnKHNlbGYpLCBvdGhlcikpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBlbHNlIGlmIChvdGhlcl9oaSQxIDwgMCkgewotICAgICAgICAgIHJldHVybiBuZWcoZGl2KHNl
bGYsIG5lZyhvdGhlcikpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICB2
YXIgcmVzID0gemVybzsKLSAgICAgICAgICB2YXIgcmVtJDEgPSBzZWxmOwotICAgICAgICAgIHdo
aWxlKGdlKHJlbSQxLCBvdGhlcikpIHsKLSAgICAgICAgICAgIHZhciBhcHByb3gkMSA9IE1hdGgu
bWF4KDEsIE1hdGguZmxvb3IodG9fZmxvYXQocmVtJDEpIC8gdG9fZmxvYXQob3RoZXIpKSk7Ci0g
ICAgICAgICAgICB2YXIgbG9nMiA9IE1hdGguY2VpbChNYXRoLmxvZyhhcHByb3gkMSkgLyBNYXRo
LkxOMik7Ci0gICAgICAgICAgICB2YXIgZGVsdGEgPSBsb2cyIDw9IDQ4ID8gMSA6IE1hdGgucG93
KDIsIGxvZzIgLSA0OCk7Ci0gICAgICAgICAgICB2YXIgYXBwcm94UmVzID0gb2ZfZmxvYXQoYXBw
cm94JDEpOwotICAgICAgICAgICAgdmFyIGFwcHJveFJlbSA9IG11bChhcHByb3hSZXMsIG90aGVy
KTsKLSAgICAgICAgICAgIHdoaWxlKGFwcHJveFJlbVsvKiBoaSAqLzBdIDwgMCB8fCBndChhcHBy
b3hSZW0sIHJlbSQxKSkgewotICAgICAgICAgICAgICBhcHByb3gkMSAtPSBkZWx0YTsKLSAgICAg
ICAgICAgICAgYXBwcm94UmVzID0gb2ZfZmxvYXQoYXBwcm94JDEpOwotICAgICAgICAgICAgICBh
cHByb3hSZW0gPSBtdWwoYXBwcm94UmVzLCBvdGhlcik7Ci0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgaWYgKGlzX3plcm8oYXBwcm94UmVzKSkgewotICAgICAgICAgICAgICBhcHByb3hSZXMg
PSBvbmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXMgPSBhZGQocmVzLCBhcHByb3hS
ZXMpOwotICAgICAgICAgICAgcmVtJDEgPSBhZGQocmVtJDEsIG5lZyhhcHByb3hSZW0pKTsKLSAg
ICAgICAgICB9OwotICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAg
ICAgIAotICAgIH0KLSAgICAKLSAgfTsKLX0KLQotZnVuY3Rpb24gbW9kXyhzZWxmLCBvdGhlcikg
ewotICB2YXIgeSA9IG11bChkaXYoc2VsZiwgb3RoZXIpLCBvdGhlcik7Ci0gIHJldHVybiBhZGQo
c2VsZiwgbmVnKHkpKTsKLX0KLQotZnVuY3Rpb24gZGl2X21vZChzZWxmLCBvdGhlcikgewotICB2
YXIgcXVvdGllbnQgPSBkaXYoc2VsZiwgb3RoZXIpOwotICB2YXIgeSA9IG11bChxdW90aWVudCwg
b3RoZXIpOwotICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgcXVvdGllbnQsCi0gICAg
ICAgICAgYWRkKHNlbGYsIG5lZyh5KSkKLSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24gY29tcGFy
ZShzZWxmLCBvdGhlcikgewotICB2YXIgdiA9IENhbWxfb2JqLmNhbWxfbmF0aXZlaW50X2NvbXBh
cmUoc2VsZlsvKiBoaSAqLzBdLCBvdGhlclsvKiBoaSAqLzBdKTsKLSAgaWYgKHYpIHsKLSAgICBy
ZXR1cm4gdjsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gQ2FtbF9vYmouY2FtbF9uYXRpdmVp
bnRfY29tcGFyZShzZWxmWy8qIGxvICovMV0sIG90aGVyWy8qIGxvICovMV0pOwotICB9Ci19Ci0K
LWZ1bmN0aW9uIG9mX2ludDMyKGxvKSB7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAg
ICAgLyogaGkgKi9sbyA8IDAgPyAtMSA6IDAsCi0gICAgICAgICAgLyogbG8gKi8obG8gPj4+IDAp
Ci0gICAgICAgIF07Ci19Ci0KLWZ1bmN0aW9uIHRvX2ludDMyKHgpIHsKLSAgcmV0dXJuIHhbLyog
bG8gKi8xXSB8IDA7Ci19Ci0KLWZ1bmN0aW9uIHRvX2hleCh4KSB7Ci0gIHZhciBhdXggPSBmdW5j
dGlvbiAodikgewotICAgIHJldHVybiAodiA+Pj4gMCkudG9TdHJpbmcoMTYpOwotICB9OwotICB2
YXIgbWF0Y2ggPSB4Wy8qIGhpICovMF07Ci0gIHZhciBtYXRjaCQxID0geFsvKiBsbyAqLzFdOwot
ICB2YXIgZXhpdCA9IDA7Ci0gIGlmIChtYXRjaCAhPT0gMCkgewotICAgIGV4aXQgPSAxOwotICB9
Ci0gIGVsc2UgaWYgKG1hdGNoJDEgIT09IDApIHsKLSAgICBleGl0ID0gMTsKLSAgfQotICBlbHNl
IHsKLSAgICByZXR1cm4gIjAiOwotICB9Ci0gIGlmIChleGl0ID09PSAxKSB7Ci0gICAgaWYgKG1h
dGNoJDEgIT09IDApIHsKLSAgICAgIGlmIChtYXRjaCAhPT0gMCkgewotICAgICAgICB2YXIgbG8g
PSBhdXgoeFsvKiBsbyAqLzFdKTsKLSAgICAgICAgdmFyIHBhZCA9IDggLSBsby5sZW5ndGggfCAw
OwotICAgICAgICBpZiAocGFkIDw9IDApIHsKLSAgICAgICAgICByZXR1cm4gYXV4KHhbLyogaGkg
Ki8wXSkgKyBsbzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4g
YXV4KHhbLyogaGkgKi8wXSkgKyAoQ2FtbF91dGlscy5yZXBlYXQocGFkLCAiMCIpICsgbG8pOwot
ICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGF1eCh4Wy8q
IGxvICovMV0pOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBhdXgo
eFsvKiBoaSAqLzBdKSArICIwMDAwMDAwMCI7Ci0gICAgfQotICB9Ci0gIAotfQotCi1mdW5jdGlv
biBkaXNjYXJkX3NpZ24oeCkgewotICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgIC8q
IGhpICovMjE0NzQ4MzY0NyAmIHhbLyogaGkgKi8wXSwKLSAgICAgICAgICAvKiBsbyAqL3hbLyog
bG8gKi8xXQotICAgICAgICBdOwotfQotCi1mdW5jdGlvbiBmbG9hdF9vZl9iaXRzKHgpIHsKLSAg
dmFyIGludDMyID0gbmV3IEludDMyQXJyYXkoLyogYXJyYXkgKi9bCi0gICAgICAgIHhbLyogbG8g
Ki8xXSwKLSAgICAgICAgeFsvKiBoaSAqLzBdCi0gICAgICBdKTsKLSAgcmV0dXJuIG5ldyBGbG9h
dDY0QXJyYXkoaW50MzIuYnVmZmVyKVswXTsKLX0KLQotZnVuY3Rpb24gYml0c19vZl9mbG9hdCh4
KSB7Ci0gIHZhciB0b19uYXQgPSBmdW5jdGlvbiAoeCkgewotICAgIHJldHVybiB4OwotICB9Owot
ICB2YXIgdSA9IG5ldyBGbG9hdDY0QXJyYXkoLyogZmxvYXQgYXJyYXkgKi9beF0pOwotICB2YXIg
aW50MzIgPSBuZXcgSW50MzJBcnJheSh1LmJ1ZmZlcik7Ci0gIHZhciBoaSA9IHRvX25hdChpbnQz
MlsxXSk7Ci0gIHZhciBsbyA9IHRvX25hdChpbnQzMlswXSk7Ci0gIHJldHVybiAvKiByZWNvcmQg
Ki9bCi0gICAgICAgICAgLyogaGkgKi9oaSwKLSAgICAgICAgICAvKiBsbyAqLyhsbyA+Pj4gMCkK
LSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24gZ2V0NjQocywgaSkgewotICB2YXIgaGkgPSAocy5j
aGFyQ29kZUF0KGkgKyA0IHwgMCkgPDwgMzIpIHwgKHMuY2hhckNvZGVBdChpICsgNSB8IDApIDw8
IDQwKSB8IChzLmNoYXJDb2RlQXQoaSArIDYgfCAwKSA8PCA0OCkgfCAocy5jaGFyQ29kZUF0KGkg
KyA3IHwgMCkgPDwgNTYpOwotICB2YXIgbG8gPSBzLmNoYXJDb2RlQXQoaSkgfCAocy5jaGFyQ29k
ZUF0KGkgKyAxIHwgMCkgPDwgOCkgfCAocy5jaGFyQ29kZUF0KGkgKyAyIHwgMCkgPDwgMTYpIHwg
KHMuY2hhckNvZGVBdChpICsgMyB8IDApIDw8IDI0KTsKLSAgcmV0dXJuIC8qIHJlY29yZCAqL1sK
LSAgICAgICAgICAvKiBoaSAqL2hpLAotICAgICAgICAgIC8qIGxvICovKGxvID4+PiAwKQotICAg
ICAgICBdOwotfQotCi1leHBvcnRzLm1pbl9pbnQgICAgICAgPSBtaW5faW50OwotZXhwb3J0cy5t
YXhfaW50ICAgICAgID0gbWF4X2ludDsKLWV4cG9ydHMub25lICAgICAgICAgICA9IG9uZTsKLWV4
cG9ydHMuemVybyAgICAgICAgICA9IHplcm87Ci1leHBvcnRzLm5vdCAgICAgICAgICAgPSBub3Q7
Ci1leHBvcnRzLm9mX2ludDMyICAgICAgPSBvZl9pbnQzMjsKLWV4cG9ydHMudG9faW50MzIgICAg
ICA9IHRvX2ludDMyOwotZXhwb3J0cy5hZGQgICAgICAgICAgID0gYWRkOwotZXhwb3J0cy5uZWcg
ICAgICAgICAgID0gbmVnOwotZXhwb3J0cy5zdWIgICAgICAgICAgID0gc3ViOwotZXhwb3J0cy5s
c2xfICAgICAgICAgID0gbHNsXzsKLWV4cG9ydHMubHNyXyAgICAgICAgICA9IGxzcl87Ci1leHBv
cnRzLmFzcl8gICAgICAgICAgPSBhc3JfOwotZXhwb3J0cy5pc196ZXJvICAgICAgID0gaXNfemVy
bzsKLWV4cG9ydHMubXVsICAgICAgICAgICA9IG11bDsKLWV4cG9ydHMueG9yICAgICAgICAgICA9
IHhvcjsKLWV4cG9ydHMub3JfICAgICAgICAgICA9IG9yXzsKLWV4cG9ydHMuYW5kXyAgICAgICAg
ICA9IGFuZF87Ci1leHBvcnRzLnN3YXAgICAgICAgICAgPSBzd2FwOwotZXhwb3J0cy5nZSAgICAg
ICAgICAgID0gZ2U7Ci1leHBvcnRzLmVxICAgICAgICAgICAgPSBlcTsKLWV4cG9ydHMubmVxICAg
ICAgICAgICA9IG5lcTsKLWV4cG9ydHMubHQgICAgICAgICAgICA9IGx0OwotZXhwb3J0cy5ndCAg
ICAgICAgICAgID0gZ3Q7Ci1leHBvcnRzLmxlICAgICAgICAgICAgPSBsZTsKLWV4cG9ydHMudG9f
ZmxvYXQgICAgICA9IHRvX2Zsb2F0OwotZXhwb3J0cy5vZl9mbG9hdCAgICAgID0gb2ZfZmxvYXQ7
Ci1leHBvcnRzLmRpdiAgICAgICAgICAgPSBkaXY7Ci1leHBvcnRzLm1vZF8gICAgICAgICAgPSBt
b2RfOwotZXhwb3J0cy5kaXZfbW9kICAgICAgID0gZGl2X21vZDsKLWV4cG9ydHMuY29tcGFyZSAg
ICAgICA9IGNvbXBhcmU7Ci1leHBvcnRzLnRvX2hleCAgICAgICAgPSB0b19oZXg7Ci1leHBvcnRz
LmRpc2NhcmRfc2lnbiAgPSBkaXNjYXJkX3NpZ247Ci1leHBvcnRzLmZsb2F0X29mX2JpdHMgPSBm
bG9hdF9vZl9iaXRzOwotZXhwb3J0cy5iaXRzX29mX2Zsb2F0ID0gYml0c19vZl9mbG9hdDsKLWV4
cG9ydHMuZ2V0NjQgICAgICAgICA9IGdldDY0OwotLyogdHdvX3B0cl8zMl9kYmwgTm90IGEgcHVy
ZSBtb2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBjYW1sX2ludDY0LmpzIC8vLy8vLy8vCi0gICAg
cmV0dXJuIGV4cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ2NhbWxpbnRlcm5hbEZvcm1h
dEJhc2ljcyddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8vLy8vLy8v
IHN0YXJ0IG9mIGNhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5qcyAvLy8vLy8vLwotJ3VzZSBzdHJp
Y3QnOwotCi12YXIgQmxvY2sgPSByZXF1aXJlKCIuL2Jsb2NrIik7Ci0KLWZ1bmN0aW9uIGVyYXNl
X3JlbChwYXJhbSkgewotICBpZiAodHlwZW9mIHBhcmFtID09PSAibnVtYmVyIikgewotICAgIHJl
dHVybiAvKiBFbmRfb2ZfZm10dHkgKi8wOwotICB9Ci0gIGVsc2UgewotICAgIHN3aXRjaCAocGFy
YW0udGFnIHwgMCkgewotICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgcmV0dXJuIC8qIENoYXJf
dHkgKi9CbG9jay5fXygwLCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOwotICAgICAgY2FzZSAxIDog
Ci0gICAgICAgICAgcmV0dXJuIC8qIFN0cmluZ190eSAqL0Jsb2NrLl9fKDEsIFtlcmFzZV9yZWwo
cGFyYW1bMF0pXSk7Ci0gICAgICBjYXNlIDIgOiAKLSAgICAgICAgICByZXR1cm4gLyogSW50X3R5
ICovQmxvY2suX18oMiwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKLSAgICAgIGNhc2UgMyA6IAot
ICAgICAgICAgIHJldHVybiAvKiBJbnQzMl90eSAqL0Jsb2NrLl9fKDMsIFtlcmFzZV9yZWwocGFy
YW1bMF0pXSk7Ci0gICAgICBjYXNlIDQgOiAKLSAgICAgICAgICByZXR1cm4gLyogTmF0aXZlaW50
X3R5ICovQmxvY2suX18oNCwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKLSAgICAgIGNhc2UgNSA6
IAotICAgICAgICAgIHJldHVybiAvKiBJbnQ2NF90eSAqL0Jsb2NrLl9fKDUsIFtlcmFzZV9yZWwo
cGFyYW1bMF0pXSk7Ci0gICAgICBjYXNlIDYgOiAKLSAgICAgICAgICByZXR1cm4gLyogRmxvYXRf
dHkgKi9CbG9jay5fXyg2LCBbZXJhc2VfcmVsKHBhcmFtWzBdKV0pOwotICAgICAgY2FzZSA3IDog
Ci0gICAgICAgICAgcmV0dXJuIC8qIEJvb2xfdHkgKi9CbG9jay5fXyg3LCBbZXJhc2VfcmVsKHBh
cmFtWzBdKV0pOwotICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9h
cmdfdHkgKi9CbG9jay5fXyg4LCBbCi0gICAgICAgICAgICAgICAgICAgIHBhcmFtWzBdLAotICAg
ICAgICAgICAgICAgICAgICBlcmFzZV9yZWwocGFyYW1bMV0pCi0gICAgICAgICAgICAgICAgICBd
KTsKLSAgICAgIGNhc2UgOSA6IAotICAgICAgICAgIHZhciB0eTEgPSBwYXJhbVswXTsKLSAgICAg
ICAgICByZXR1cm4gLyogRm9ybWF0X3N1YnN0X3R5ICovQmxvY2suX18oOSwgWwotICAgICAgICAg
ICAgICAgICAgICB0eTEsCi0gICAgICAgICAgICAgICAgICAgIHR5MSwKLSAgICAgICAgICAgICAg
ICAgICAgZXJhc2VfcmVsKHBhcmFtWzJdKQotICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICBj
YXNlIDEwIDogCi0gICAgICAgICAgcmV0dXJuIC8qIEFscGhhX3R5ICovQmxvY2suX18oMTAsIFtl
cmFzZV9yZWwocGFyYW1bMF0pXSk7Ci0gICAgICBjYXNlIDExIDogCi0gICAgICAgICAgcmV0dXJu
IC8qIFRoZXRhX3R5ICovQmxvY2suX18oMTEsIFtlcmFzZV9yZWwocGFyYW1bMF0pXSk7Ci0gICAg
ICBjYXNlIDEyIDogCi0gICAgICAgICAgcmV0dXJuIC8qIEFueV90eSAqL0Jsb2NrLl9fKDEyLCBb
ZXJhc2VfcmVsKHBhcmFtWzBdKV0pOwotICAgICAgY2FzZSAxMyA6IAotICAgICAgICAgIHJldHVy
biAvKiBSZWFkZXJfdHkgKi9CbG9jay5fXygxMywgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKLSAg
ICAgIGNhc2UgMTQgOiAKLSAgICAgICAgICByZXR1cm4gLyogSWdub3JlZF9yZWFkZXJfdHkgKi9C
bG9jay5fXygxNCwgW2VyYXNlX3JlbChwYXJhbVswXSldKTsKLSAgICAgIAotICAgIH0KLSAgfQot
fQotCi1mdW5jdGlvbiBjb25jYXRfZm10dHkoZm10dHkxLCBmbXR0eTIpIHsKLSAgaWYgKHR5cGVv
ZiBmbXR0eTEgPT09ICJudW1iZXIiKSB7Ci0gICAgcmV0dXJuIGZtdHR5MjsKLSAgfQotICBlbHNl
IHsKLSAgICBzd2l0Y2ggKGZtdHR5MS50YWcgfCAwKSB7Ci0gICAgICBjYXNlIDAgOiAKLSAgICAg
ICAgICByZXR1cm4gLyogQ2hhcl90eSAqL0Jsb2NrLl9fKDAsIFtjb25jYXRfZm10dHkoZm10dHkx
WzBdLCBmbXR0eTIpXSk7Ci0gICAgICBjYXNlIDEgOiAKLSAgICAgICAgICByZXR1cm4gLyogU3Ry
aW5nX3R5ICovQmxvY2suX18oMSwgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsK
LSAgICAgIGNhc2UgMiA6IAotICAgICAgICAgIHJldHVybiAvKiBJbnRfdHkgKi9CbG9jay5fXygy
LCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOwotICAgICAgY2FzZSAzIDogCi0g
ICAgICAgICAgcmV0dXJuIC8qIEludDMyX3R5ICovQmxvY2suX18oMywgW2NvbmNhdF9mbXR0eShm
bXR0eTFbMF0sIGZtdHR5MildKTsKLSAgICAgIGNhc2UgNCA6IAotICAgICAgICAgIHJldHVybiAv
KiBOYXRpdmVpbnRfdHkgKi9CbG9jay5fXyg0LCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10
dHkyKV0pOwotICAgICAgY2FzZSA1IDogCi0gICAgICAgICAgcmV0dXJuIC8qIEludDY0X3R5ICov
QmxvY2suX18oNSwgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKLSAgICAgIGNh
c2UgNiA6IAotICAgICAgICAgIHJldHVybiAvKiBGbG9hdF90eSAqL0Jsb2NrLl9fKDYsIFtjb25j
YXRfZm10dHkoZm10dHkxWzBdLCBmbXR0eTIpXSk7Ci0gICAgICBjYXNlIDcgOiAKLSAgICAgICAg
ICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2NrLl9fKDcsIFtjb25jYXRfZm10dHkoZm10dHkxWzBd
LCBmbXR0eTIpXSk7Ci0gICAgICBjYXNlIDggOiAKLSAgICAgICAgICByZXR1cm4gLyogRm9ybWF0
X2FyZ190eSAqL0Jsb2NrLl9fKDgsIFsKLSAgICAgICAgICAgICAgICAgICAgZm10dHkxWzBdLAot
ICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10dHkoZm10dHkxWzFdLCBmbXR0eTIpCi0gICAg
ICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2UgOSA6IAotICAgICAgICAgIHJldHVybiAvKiBG
b3JtYXRfc3Vic3RfdHkgKi9CbG9jay5fXyg5LCBbCi0gICAgICAgICAgICAgICAgICAgIGZtdHR5
MVswXSwKLSAgICAgICAgICAgICAgICAgICAgZm10dHkxWzFdLAotICAgICAgICAgICAgICAgICAg
ICBjb25jYXRfZm10dHkoZm10dHkxWzJdLCBmbXR0eTIpCi0gICAgICAgICAgICAgICAgICBdKTsK
LSAgICAgIGNhc2UgMTAgOiAKLSAgICAgICAgICByZXR1cm4gLyogQWxwaGFfdHkgKi9CbG9jay5f
XygxMCwgW2NvbmNhdF9mbXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKLSAgICAgIGNhc2UgMTEg
OiAKLSAgICAgICAgICByZXR1cm4gLyogVGhldGFfdHkgKi9CbG9jay5fXygxMSwgW2NvbmNhdF9m
bXR0eShmbXR0eTFbMF0sIGZtdHR5MildKTsKLSAgICAgIGNhc2UgMTIgOiAKLSAgICAgICAgICBy
ZXR1cm4gLyogQW55X3R5ICovQmxvY2suX18oMTIsIFtjb25jYXRfZm10dHkoZm10dHkxWzBdLCBm
bXR0eTIpXSk7Ci0gICAgICBjYXNlIDEzIDogCi0gICAgICAgICAgcmV0dXJuIC8qIFJlYWRlcl90
eSAqL0Jsb2NrLl9fKDEzLCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOwotICAg
ICAgY2FzZSAxNCA6IAotICAgICAgICAgIHJldHVybiAvKiBJZ25vcmVkX3JlYWRlcl90eSAqL0Js
b2NrLl9fKDE0LCBbY29uY2F0X2ZtdHR5KGZtdHR5MVswXSwgZm10dHkyKV0pOwotICAgICAgCi0g
ICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbmNhdF9mbXQoZm10MSwgZm10MikgewotICBpZiAo
dHlwZW9mIGZtdDEgPT09ICJudW1iZXIiKSB7Ci0gICAgcmV0dXJuIGZtdDI7Ci0gIH0KLSAgZWxz
ZSB7Ci0gICAgc3dpdGNoIChmbXQxLnRhZyB8IDApIHsKLSAgICAgIGNhc2UgMCA6IAotICAgICAg
ICAgIHJldHVybiAvKiBDaGFyICovQmxvY2suX18oMCwgW2NvbmNhdF9mbXQoZm10MVswXSwgZm10
MildKTsKLSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIHJldHVybiAvKiBDYW1sX2NoYXIgKi9C
bG9jay5fXygxLCBbY29uY2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0pOwotICAgICAgY2FzZSAyIDog
Ci0gICAgICAgICAgcmV0dXJuIC8qIFN0cmluZyAqL0Jsb2NrLl9fKDIsIFsKLSAgICAgICAgICAg
ICAgICAgICAgZm10MVswXSwKLSAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzFd
LCBmbXQyKQotICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICBjYXNlIDMgOiAKLSAgICAgICAg
ICByZXR1cm4gLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCi0gICAgICAgICAgICAgICAg
ICAgIGZtdDFbMF0sCi0gICAgICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVsxXSwgZm10
MikKLSAgICAgICAgICAgICAgICAgIF0pOwotICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgcmV0
dXJuIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAgICAgICAgICAgICAgZm10MVswXSwK
LSAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKLSAgICAgICAgICAgICAgICAgICAgZm10MVsy
XSwKLSAgICAgICAgICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBmbXQyKQotICAgICAg
ICAgICAgICAgICAgXSk7Ci0gICAgICBjYXNlIDUgOiAKLSAgICAgICAgICByZXR1cm4gLyogSW50
MzIgKi9CbG9jay5fXyg1LCBbCi0gICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCi0gICAgICAg
ICAgICAgICAgICAgIGZtdDFbMV0sCi0gICAgICAgICAgICAgICAgICAgIGZtdDFbMl0sCi0gICAg
ICAgICAgICAgICAgICAgIGNvbmNhdF9mbXQoZm10MVszXSwgZm10MikKLSAgICAgICAgICAgICAg
ICAgIF0pOwotICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgcmV0dXJuIC8qIE5hdGl2ZWludCAq
L0Jsb2NrLl9fKDYsIFsKLSAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKLSAgICAgICAgICAg
ICAgICAgICAgZm10MVsxXSwKLSAgICAgICAgICAgICAgICAgICAgZm10MVsyXSwKLSAgICAgICAg
ICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzNdLCBmbXQyKQotICAgICAgICAgICAgICAgICAg
XSk7Ci0gICAgICBjYXNlIDcgOiAKLSAgICAgICAgICByZXR1cm4gLyogSW50NjQgKi9CbG9jay5f
Xyg3LCBbCi0gICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCi0gICAgICAgICAgICAgICAgICAg
IGZtdDFbMV0sCi0gICAgICAgICAgICAgICAgICAgIGZtdDFbMl0sCi0gICAgICAgICAgICAgICAg
ICAgIGNvbmNhdF9mbXQoZm10MVszXSwgZm10MikKLSAgICAgICAgICAgICAgICAgIF0pOwotICAg
ICAgY2FzZSA4IDogCi0gICAgICAgICAgcmV0dXJuIC8qIEZsb2F0ICovQmxvY2suX18oOCwgWwot
ICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAotICAgICAgICAgICAgICAgICAgICBmbXQxWzFd
LAotICAgICAgICAgICAgICAgICAgICBmbXQxWzJdLAotICAgICAgICAgICAgICAgICAgICBjb25j
YXRfZm10KGZtdDFbM10sIGZtdDIpCi0gICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2Ug
OSA6IAotICAgICAgICAgIHJldHVybiAvKiBCb29sICovQmxvY2suX18oOSwgW2NvbmNhdF9mbXQo
Zm10MVswXSwgZm10MildKTsKLSAgICAgIGNhc2UgMTAgOiAKLSAgICAgICAgICByZXR1cm4gLyog
Rmx1c2ggKi9CbG9jay5fXygxMCwgW2NvbmNhdF9mbXQoZm10MVswXSwgZm10MildKTsKLSAgICAg
IGNhc2UgMTEgOiAKLSAgICAgICAgICByZXR1cm4gLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5f
XygxMSwgWwotICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAotICAgICAgICAgICAgICAgICAg
ICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCi0gICAgICAgICAgICAgICAgICBdKTsKLSAgICAg
IGNhc2UgMTIgOiAKLSAgICAgICAgICByZXR1cm4gLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18o
MTIsIFsKLSAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKLSAgICAgICAgICAgICAgICAgICAg
Y29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQotICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICBj
YXNlIDEzIDogCi0gICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9hcmcgKi9CbG9jay5fXygxMywg
WwotICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAotICAgICAgICAgICAgICAgICAgICBmbXQx
WzFdLAotICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMl0sIGZtdDIpCi0gICAg
ICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2UgMTQgOiAKLSAgICAgICAgICByZXR1cm4gLyog
Rm9ybWF0X3N1YnN0ICovQmxvY2suX18oMTQsIFsKLSAgICAgICAgICAgICAgICAgICAgZm10MVsw
XSwKLSAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKLSAgICAgICAgICAgICAgICAgICAgY29u
Y2F0X2ZtdChmbXQxWzJdLCBmbXQyKQotICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICBjYXNl
IDE1IDogCi0gICAgICAgICAgcmV0dXJuIC8qIEFscGhhICovQmxvY2suX18oMTUsIFtjb25jYXRf
Zm10KGZtdDFbMF0sIGZtdDIpXSk7Ci0gICAgICBjYXNlIDE2IDogCi0gICAgICAgICAgcmV0dXJu
IC8qIFRoZXRhICovQmxvY2suX18oMTYsIFtjb25jYXRfZm10KGZtdDFbMF0sIGZtdDIpXSk7Ci0g
ICAgICBjYXNlIDE3IDogCi0gICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdHRpbmdfbGl0ICovQmxv
Y2suX18oMTcsIFsKLSAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKLSAgICAgICAgICAgICAg
ICAgICAgY29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQotICAgICAgICAgICAgICAgICAgXSk7Ci0g
ICAgICBjYXNlIDE4IDogCi0gICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdHRpbmdfZ2VuICovQmxv
Y2suX18oMTgsIFsKLSAgICAgICAgICAgICAgICAgICAgZm10MVswXSwKLSAgICAgICAgICAgICAg
ICAgICAgY29uY2F0X2ZtdChmbXQxWzFdLCBmbXQyKQotICAgICAgICAgICAgICAgICAgXSk7Ci0g
ICAgICBjYXNlIDE5IDogCi0gICAgICAgICAgcmV0dXJuIC8qIFJlYWRlciAqL0Jsb2NrLl9fKDE5
LCBbY29uY2F0X2ZtdChmbXQxWzBdLCBmbXQyKV0pOwotICAgICAgY2FzZSAyMCA6IAotICAgICAg
ICAgIHJldHVybiAvKiBTY2FuX2NoYXJfc2V0ICovQmxvY2suX18oMjAsIFsKLSAgICAgICAgICAg
ICAgICAgICAgZm10MVswXSwKLSAgICAgICAgICAgICAgICAgICAgZm10MVsxXSwKLSAgICAgICAg
ICAgICAgICAgICAgY29uY2F0X2ZtdChmbXQxWzJdLCBmbXQyKQotICAgICAgICAgICAgICAgICAg
XSk7Ci0gICAgICBjYXNlIDIxIDogCi0gICAgICAgICAgcmV0dXJuIC8qIFNjYW5fZ2V0X2NvdW50
ZXIgKi9CbG9jay5fXygyMSwgWwotICAgICAgICAgICAgICAgICAgICBmbXQxWzBdLAotICAgICAg
ICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMV0sIGZtdDIpCi0gICAgICAgICAgICAgICAg
ICBdKTsKLSAgICAgIGNhc2UgMjIgOiAKLSAgICAgICAgICByZXR1cm4gLyogU2Nhbl9uZXh0X2No
YXIgKi9CbG9jay5fXygyMiwgW2NvbmNhdF9mbXQoZm10MVswXSwgZm10MildKTsKLSAgICAgIGNh
c2UgMjMgOiAKLSAgICAgICAgICByZXR1cm4gLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIz
LCBbCi0gICAgICAgICAgICAgICAgICAgIGZtdDFbMF0sCi0gICAgICAgICAgICAgICAgICAgIGNv
bmNhdF9mbXQoZm10MVsxXSwgZm10MikKLSAgICAgICAgICAgICAgICAgIF0pOwotICAgICAgY2Fz
ZSAyNCA6IAotICAgICAgICAgIHJldHVybiAvKiBDdXN0b20gKi9CbG9jay5fXygyNCwgWwotICAg
ICAgICAgICAgICAgICAgICBmbXQxWzBdLAotICAgICAgICAgICAgICAgICAgICBmbXQxWzFdLAot
ICAgICAgICAgICAgICAgICAgICBjb25jYXRfZm10KGZtdDFbMl0sIGZtdDIpCi0gICAgICAgICAg
ICAgICAgICBdKTsKLSAgICAgIAotICAgIH0KLSAgfQotfQotCi1leHBvcnRzLmNvbmNhdF9mbXR0
eSA9IGNvbmNhdF9mbXR0eTsKLWV4cG9ydHMuZXJhc2VfcmVsICAgID0gZXJhc2VfcmVsOwotZXhw
b3J0cy5jb25jYXRfZm10ICAgPSBjb25jYXRfZm10OwotLyogTm8gc2lkZSBlZmZlY3QgKi8KLS8v
Ly8vLy8vIGVuZCBvZiBjYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuanMgLy8vLy8vLy8KLSAgICBy
ZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnY2FtbGludGVybmFsRm9ybWF0
J10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQg
b2YgY2FtbGludGVybmFsRm9ybWF0LmpzIC8vLy8vLy8vCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBT
eXMgICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3N5cyIpOwotdmFyIENoYXIgICAg
ICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2hhciIpOwotdmFyIEJsb2NrICAgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vYmxvY2siKTsKLXZhciBCeXRlcyAgICAgICAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2J5dGVzIik7Ci12YXIgQ3VycnkgICAgICAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9jdXJyeSIpOwotdmFyIEJ1ZmZlciAgICAgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vYnVmZmVyIik7Ci12YXIgJCRTdHJpbmcgICAgICAgICAgICAgICAgID0gcmVxdWly
ZSgiLi9zdHJpbmciKTsKLXZhciBDYW1sX2lvICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIu
L2NhbWxfaW8iKTsKLXZhciBDYW1sX29iaiAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Nh
bWxfb2JqIik7Ci12YXIgQ2FtbF9ieXRlcyAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1s
X2J5dGVzIik7Ci12YXIgQ2FtbF9mbG9hdCAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1s
X2Zsb2F0Iik7Ci12YXIgQ2FtbF9pbnQzMiAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1s
X2ludDMyIik7Ci12YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9wZXJ2
YXNpdmVzIik7Ci12YXIgQ2FtbF9mb3JtYXQgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1s
X2Zvcm1hdCIpOwotdmFyIENhbWxfc3RyaW5nICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2Ft
bF9zdHJpbmciKTsKLXZhciBDYW1sX2V4Y2VwdGlvbnMgICAgICAgICAgPSByZXF1aXJlKCIuL2Nh
bWxfZXhjZXB0aW9ucyIpOwotdmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zICA9IHJlcXVpcmUo
Ii4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKLXZhciBDYW1saW50ZXJuYWxGb3JtYXRCYXNp
Y3MgPSByZXF1aXJlKCIuL2NhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcyIpOwotCi1mdW5jdGlvbiBj
cmVhdGVfY2hhcl9zZXQoKSB7Ci0gIHJldHVybiBCeXRlcy5tYWtlKDMyLCAvKiAiXDAwMCIgKi8w
KTsKLX0KLQotZnVuY3Rpb24gYWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0LCBjKSB7Ci0gIHZhciBz
dHJfaW5kID0gKGMgPj4+IDMpOwotICB2YXIgbWFzayA9ICgxIDw8IChjICYgNykpOwotICBjaGFy
X3NldFtzdHJfaW5kXSA9IFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoQ2FtbF9ieXRlcy5nZXQoY2hh
cl9zZXQsIHN0cl9pbmQpIHwgbWFzayk7Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLXZhciBm
cmVlemVfY2hhcl9zZXQgPSBCeXRlcy50b19zdHJpbmc7Ci0KLWZ1bmN0aW9uIHJldl9jaGFyX3Nl
dChjaGFyX3NldCkgewotICB2YXIgY2hhcl9zZXQkcHJpbWUgPSBCeXRlcy5tYWtlKDMyLCAvKiAi
XDAwMCIgKi8wKTsKLSAgZm9yKHZhciBpID0gMDsgaSA8PSAzMTsgKytpKXsKLSAgICBjaGFyX3Nl
dCRwcmltZVtpXSA9IFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoQ2FtbF9zdHJpbmcuZ2V0KGNoYXJf
c2V0LCBpKSBeIDI1NSk7Ci0gIH0KLSAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmlu
ZyhjaGFyX3NldCRwcmltZSk7Ci19Ci0KLWZ1bmN0aW9uIGlzX2luX2NoYXJfc2V0KGNoYXJfc2V0
LCBjKSB7Ci0gIHZhciBzdHJfaW5kID0gKGMgPj4+IDMpOwotICB2YXIgbWFzayA9ICgxIDw8IChj
ICYgNykpOwotICByZXR1cm4gKygoQ2FtbF9zdHJpbmcuZ2V0KGNoYXJfc2V0LCBzdHJfaW5kKSAm
IG1hc2spICE9PSAwKTsKLX0KLQotZnVuY3Rpb24gcGFkX29mX3BhZF9vcHQocGFkX29wdCkgewot
ICBpZiAocGFkX29wdCkgewotICAgIHJldHVybiAvKiBMaXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAs
IFsKLSAgICAgICAgICAgICAgLyogUmlnaHQgKi8xLAotICAgICAgICAgICAgICBwYWRfb3B0WzBd
Ci0gICAgICAgICAgICBdKTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyogTm9fcGFkZGlu
ZyAqLzA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcHJlY19vZl9wcmVjX29wdChwcmVjX29wdCkgewot
ICBpZiAocHJlY19vcHQpIHsKLSAgICByZXR1cm4gLyogTGl0X3ByZWNpc2lvbiAqL1twcmVjX29w
dFswXV07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIE5vX3ByZWNpc2lvbiAqLzA7Ci0g
IH0KLX0KLQotZnVuY3Rpb24gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0KGlnbiwgZm10
KSB7Ci0gIGlmICh0eXBlb2YgaWduID09PSAibnVtYmVyIikgewotICAgIHN3aXRjaCAoaWduKSB7
Ci0gICAgICBjYXNlIDAgOiAKLSAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAq
L1svKiBDaGFyICovQmxvY2suX18oMCwgW2ZtdF0pXTsKLSAgICAgIGNhc2UgMSA6IAotICAgICAg
ICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIENhbWxfY2hhciAqL0Jsb2NrLl9f
KDEsIFtmbXRdKV07Ci0gICAgICBjYXNlIDIgOiAKLSAgICAgICAgICByZXR1cm4gLyogUGFyYW1f
Zm9ybWF0X0VCQiAqL1svKiBCb29sICovQmxvY2suX18oOSwgW2ZtdF0pXTsKLSAgICAgIGNhc2Ug
MyA6IAotICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIFJlYWRlciAq
L0Jsb2NrLl9fKDE5LCBbZm10XSldOwotICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgcmV0dXJu
IC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogU2Nhbl9uZXh0X2NoYXIgKi9CbG9jay5fXygyMiwg
W2ZtdF0pXTsKLSAgICAgIAotICAgIH0KLSAgfQotICBlbHNlIHsKLSAgICBzd2l0Y2ggKGlnbi50
YWcgfCAwKSB7Ci0gICAgICBjYXNlIDAgOiAKLSAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9y
bWF0X0VCQiAqL1svKiBTdHJpbmcgKi9CbG9jay5fXygyLCBbCi0gICAgICAgICAgICAgICAgICAg
ICAgcGFkX29mX3BhZF9vcHQoaWduWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICBmbXQKLSAg
ICAgICAgICAgICAgICAgICAgXSldOwotICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgcmV0dXJu
IC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCi0g
ICAgICAgICAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQoaWduWzBdKSwKLSAgICAgICAgICAg
ICAgICAgICAgICBmbXQKLSAgICAgICAgICAgICAgICAgICAgXSldOwotICAgICAgY2FzZSAyIDog
Ci0gICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogSW50ICovQmxvY2su
X18oNCwgWwotICAgICAgICAgICAgICAgICAgICAgIGlnblswXSwKLSAgICAgICAgICAgICAgICAg
ICAgICBwYWRfb2ZfcGFkX29wdChpZ25bMV0pLAotICAgICAgICAgICAgICAgICAgICAgIC8qIE5v
X3ByZWNpc2lvbiAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAgZm10Ci0gICAgICAgICAgICAg
ICAgICAgIF0pXTsKLSAgICAgIGNhc2UgMyA6IAotICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9m
b3JtYXRfRUJCICovWy8qIEludDMyICovQmxvY2suX18oNSwgWwotICAgICAgICAgICAgICAgICAg
ICAgIGlnblswXSwKLSAgICAgICAgICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdChpZ25bMV0p
LAotICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCi0gICAgICAgICAg
ICAgICAgICAgICAgZm10Ci0gICAgICAgICAgICAgICAgICAgIF0pXTsKLSAgICAgIGNhc2UgNCA6
IAotICAgICAgICAgIHJldHVybiAvKiBQYXJhbV9mb3JtYXRfRUJCICovWy8qIE5hdGl2ZWludCAq
L0Jsb2NrLl9fKDYsIFsKLSAgICAgICAgICAgICAgICAgICAgICBpZ25bMF0sCi0gICAgICAgICAg
ICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQoaWduWzFdKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAvKiBOb19wcmVjaXNpb24gKi8wLAotICAgICAgICAgICAgICAgICAgICAgIGZtdAotICAgICAg
ICAgICAgICAgICAgICBdKV07Ci0gICAgICBjYXNlIDUgOiAKLSAgICAgICAgICByZXR1cm4gLyog
UGFyYW1fZm9ybWF0X0VCQiAqL1svKiBJbnQ2NCAqL0Jsb2NrLl9fKDcsIFsKLSAgICAgICAgICAg
ICAgICAgICAgICBpZ25bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgcGFkX29mX3BhZF9vcHQo
aWduWzFdKSwKLSAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAotICAg
ICAgICAgICAgICAgICAgICAgIGZtdAotICAgICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICBj
YXNlIDYgOiAKLSAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBGbG9h
dCAqL0Jsb2NrLl9fKDgsIFsKLSAgICAgICAgICAgICAgICAgICAgICAvKiBGbG9hdF9mICovMCwK
LSAgICAgICAgICAgICAgICAgICAgICBwYWRfb2ZfcGFkX29wdChpZ25bMF0pLAotICAgICAgICAg
ICAgICAgICAgICAgIHByZWNfb2ZfcHJlY19vcHQoaWduWzFdKSwKLSAgICAgICAgICAgICAgICAg
ICAgICBmbXQKLSAgICAgICAgICAgICAgICAgICAgXSldOwotICAgICAgY2FzZSA3IDogCi0gICAg
ICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogRm9ybWF0X2FyZyAqL0Jsb2Nr
Ll9fKDEzLCBbCi0gICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAotICAgICAgICAgICAgICAg
ICAgICAgIGlnblsxXSwKLSAgICAgICAgICAgICAgICAgICAgICBmbXQKLSAgICAgICAgICAgICAg
ICAgICAgXSldOwotICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgcmV0dXJuIC8qIFBhcmFtX2Zv
cm1hdF9FQkIgKi9bLyogRm9ybWF0X3N1YnN0ICovQmxvY2suX18oMTQsIFsKLSAgICAgICAgICAg
ICAgICAgICAgICBpZ25bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgaWduWzFdLAotICAgICAg
ICAgICAgICAgICAgICAgIGZtdAotICAgICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICBjYXNl
IDkgOiAKLSAgICAgICAgICByZXR1cm4gLyogUGFyYW1fZm9ybWF0X0VCQiAqL1svKiBTY2FuX2No
YXJfc2V0ICovQmxvY2suX18oMjAsIFsKLSAgICAgICAgICAgICAgICAgICAgICBpZ25bMF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgaWduWzFdLAotICAgICAgICAgICAgICAgICAgICAgIGZtdAot
ICAgICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICBjYXNlIDEwIDogCi0gICAgICAgICAgcmV0
dXJuIC8qIFBhcmFtX2Zvcm1hdF9FQkIgKi9bLyogU2Nhbl9nZXRfY291bnRlciAqL0Jsb2NrLl9f
KDIxLCBbCi0gICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAotICAgICAgICAgICAgICAgICAg
ICAgIGZtdAotICAgICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICAKLSAgICB9Ci0gIH0KLX0K
LQotZnVuY3Rpb24gYnVmZmVyX2NoZWNrX3NpemUoYnVmLCBvdmVyaGVhZCkgewotICB2YXIgbGVu
ID0gYnVmWy8qIGJ5dGVzICovMV0ubGVuZ3RoOwotICB2YXIgbWluX2xlbiA9IGJ1ZlsvKiBpbmQg
Ki8wXSArIG92ZXJoZWFkIHwgMDsKLSAgaWYgKG1pbl9sZW4gPiBsZW4pIHsKLSAgICB2YXIgbmV3
X2xlbiA9IFBlcnZhc2l2ZXMubWF4KChsZW4gPDwgMSksIG1pbl9sZW4pOwotICAgIHZhciBuZXdf
c3RyID0gQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKG5ld19sZW4pOwotICAgIEJ5dGVz
LmJsaXQoYnVmWy8qIGJ5dGVzICovMV0sIDAsIG5ld19zdHIsIDAsIGxlbik7Ci0gICAgYnVmWy8q
IGJ5dGVzICovMV0gPSBuZXdfc3RyOwotICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gIH0KLSAgZWxz
ZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gYnVmZmVyX2FkZF9jaGFyKGJ1
ZiwgYykgewotICBidWZmZXJfY2hlY2tfc2l6ZShidWYsIDEpOwotICBidWZbLyogYnl0ZXMgKi8x
XVtidWZbLyogaW5kICovMF1dID0gYzsKLSAgYnVmWy8qIGluZCAqLzBdID0gYnVmWy8qIGluZCAq
LzBdICsgMSB8IDA7Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIGJ1ZmZlcl9h
ZGRfc3RyaW5nKGJ1ZiwgcykgewotICB2YXIgc3RyX2xlbiA9IHMubGVuZ3RoOwotICBidWZmZXJf
Y2hlY2tfc2l6ZShidWYsIHN0cl9sZW4pOwotICAkJFN0cmluZy5ibGl0KHMsIDAsIGJ1ZlsvKiBi
eXRlcyAqLzFdLCBidWZbLyogaW5kICovMF0sIHN0cl9sZW4pOwotICBidWZbLyogaW5kICovMF0g
PSBidWZbLyogaW5kICovMF0gKyBzdHJfbGVuIHwgMDsKLSAgcmV0dXJuIC8qICgpICovMDsKLX0K
LQotZnVuY3Rpb24gYnVmZmVyX2NvbnRlbnRzKGJ1ZikgewotICByZXR1cm4gQnl0ZXMuc3ViX3N0
cmluZyhidWZbLyogYnl0ZXMgKi8xXSwgMCwgYnVmWy8qIGluZCAqLzBdKTsKLX0KLQotZnVuY3Rp
b24gY2hhcl9vZl9pY29udihpY29udikgewotICBzd2l0Y2ggKGljb252KSB7Ci0gICAgY2FzZSAw
IDogCi0gICAgY2FzZSAxIDogCi0gICAgY2FzZSAyIDogCi0gICAgICAgIHJldHVybiAvKiAiZCIg
Ki8xMDA7Ci0gICAgY2FzZSAzIDogCi0gICAgY2FzZSA0IDogCi0gICAgY2FzZSA1IDogCi0gICAg
ICAgIHJldHVybiAvKiAiaSIgKi8xMDU7Ci0gICAgY2FzZSA2IDogCi0gICAgY2FzZSA3IDogCi0g
ICAgICAgIHJldHVybiAvKiAieCIgKi8xMjA7Ci0gICAgY2FzZSA4IDogCi0gICAgY2FzZSA5IDog
Ci0gICAgICAgIHJldHVybiAvKiAiWCIgKi84ODsKLSAgICBjYXNlIDEwIDogCi0gICAgY2FzZSAx
MSA6IAotICAgICAgICByZXR1cm4gLyogIm8iICovMTExOwotICAgIGNhc2UgMTIgOiAKLSAgICAg
ICAgcmV0dXJuIC8qICJ1IiAqLzExNzsKLSAgICAKLSAgfQotfQotCi1mdW5jdGlvbiBjaGFyX29m
X2Zjb252KGZjb252KSB7Ci0gIHN3aXRjaCAoZmNvbnYpIHsKLSAgICBjYXNlIDAgOiAKLSAgICBj
YXNlIDEgOiAKLSAgICBjYXNlIDIgOiAKLSAgICAgICAgcmV0dXJuIC8qICJmIiAqLzEwMjsKLSAg
ICBjYXNlIDMgOiAKLSAgICBjYXNlIDQgOiAKLSAgICBjYXNlIDUgOiAKLSAgICAgICAgcmV0dXJu
IC8qICJlIiAqLzEwMTsKLSAgICBjYXNlIDYgOiAKLSAgICBjYXNlIDcgOiAKLSAgICBjYXNlIDgg
OiAKLSAgICAgICAgcmV0dXJuIC8qICJFIiAqLzY5OwotICAgIGNhc2UgOSA6IAotICAgIGNhc2Ug
MTAgOiAKLSAgICBjYXNlIDExIDogCi0gICAgICAgIHJldHVybiAvKiAiZyIgKi8xMDM7Ci0gICAg
Y2FzZSAxMiA6IAotICAgIGNhc2UgMTMgOiAKLSAgICBjYXNlIDE0IDogCi0gICAgICAgIHJldHVy
biAvKiAiRyIgKi83MTsKLSAgICBjYXNlIDE1IDogCi0gICAgICAgIHJldHVybiAvKiAiRiIgKi83
MDsKLSAgICAKLSAgfQotfQotCi1mdW5jdGlvbiBjaGFyX29mX2NvdW50ZXIoY291bnRlcikgewot
ICBzd2l0Y2ggKGNvdW50ZXIpIHsKLSAgICBjYXNlIDAgOiAKLSAgICAgICAgcmV0dXJuIC8qICJs
IiAqLzEwODsKLSAgICBjYXNlIDEgOiAKLSAgICAgICAgcmV0dXJuIC8qICJuIiAqLzExMDsKLSAg
ICBjYXNlIDIgOiAKLSAgICAgICAgcmV0dXJuIC8qICJOIiAqLzc4OwotICAgIAotICB9Ci19Ci0K
LWZ1bmN0aW9uIGJwcmludF9jaGFyX3NldChidWYsIGNoYXJfc2V0KSB7Ci0gIHZhciBwcmludF9j
aGFyID0gZnVuY3Rpb24gKGJ1ZiwgaSkgewotICAgIHZhciBjID0gUGVydmFzaXZlcy5jaGFyX29m
X2ludChpKTsKLSAgICBpZiAoYyAhPT0gMzcpIHsKLSAgICAgIGlmIChjICE9PSA2NCkgewotICAg
ICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgYyk7Ci0gICAgICB9Ci0gICAgICBlbHNl
IHsKLSAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOwotICAgICAgICBy
ZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIkAiICovNjQpOwotICAgICAgfQotICAgIH0K
LSAgICBlbHNlIHsKLSAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKLSAg
ICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7Ci0gICAgfQotICB9
OwotICB2YXIgcHJpbnRfb3V0ID0gZnVuY3Rpb24gKHNldCwgX2kpIHsKLSAgICB3aGlsZSh0cnVl
KSB7Ci0gICAgICB2YXIgaSA9IF9pOwotICAgICAgaWYgKGkgPCAyNTYpIHsKLSAgICAgICAgaWYg
KGlzX2luX2NoYXJfc2V0KHNldCwgUGVydmFzaXZlcy5jaGFyX29mX2ludChpKSkpIHsKLSAgICAg
ICAgICB2YXIgc2V0JDEgPSBzZXQ7Ci0gICAgICAgICAgdmFyIGkkMSA9IGk7Ci0gICAgICAgICAg
dmFyIG1hdGNoID0gUGVydmFzaXZlcy5jaGFyX29mX2ludChpJDEpOwotICAgICAgICAgIHZhciBz
d2l0Y2hlciA9IG1hdGNoIC0gNDUgfCAwOwotICAgICAgICAgIGlmIChzd2l0Y2hlciA+IDQ4IHx8
IHN3aXRjaGVyIDwgMCkgewotICAgICAgICAgICAgaWYgKHN3aXRjaGVyID49IDIxMCkgewotICAg
ICAgICAgICAgICByZXR1cm4gcHJpbnRfY2hhcihidWYsIDI1NSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHByaW50X3NlY29uZChzZXQk
MSwgaSQxICsgMSB8IDApOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBl
bHNlIGlmIChzd2l0Y2hlciA+IDQ3IHx8IHN3aXRjaGVyIDwgMSkgewotICAgICAgICAgICAgcmV0
dXJuIHByaW50X291dChzZXQkMSwgaSQxICsgMSB8IDApOwotICAgICAgICAgIH0KLSAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBwcmludF9zZWNvbmQoc2V0JDEsIGkkMSArIDEg
fCAwKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
X2kgPSBpICsgMSB8IDA7Ci0gICAgICAgICAgY29udGludWUgOwotICAgICAgICAgIAotICAgICAg
ICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICB9Ci0g
ICAgfTsKLSAgfTsKLSAgdmFyIHByaW50X3NlY29uZCA9IGZ1bmN0aW9uIChzZXQsIGkpIHsKLSAg
ICBpZiAoaXNfaW5fY2hhcl9zZXQoc2V0LCBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KGkpKSkgewot
ICAgICAgdmFyIG1hdGNoID0gUGVydmFzaXZlcy5jaGFyX29mX2ludChpKTsKLSAgICAgIHZhciBl
eGl0ID0gMDsKLSAgICAgIHZhciBzd2l0Y2hlciA9IG1hdGNoIC0gNDUgfCAwOwotICAgICAgaWYg
KHN3aXRjaGVyID4gNDggfHwgc3dpdGNoZXIgPCAwKSB7Ci0gICAgICAgIGlmIChzd2l0Y2hlciA+
PSAyMTApIHsKLSAgICAgICAgICBwcmludF9jaGFyKGJ1ZiwgMjU0KTsKLSAgICAgICAgICByZXR1
cm4gcHJpbnRfY2hhcihidWYsIDI1NSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgZXhpdCA9IDE7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHN3aXRj
aGVyID4gNDcgfHwgc3dpdGNoZXIgPCAxKSB7Ci0gICAgICAgIGlmIChpc19pbl9jaGFyX3NldChz
ZXQsIFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaSArIDEgfCAwKSkpIHsKLSAgICAgICAgICBleGl0
ID0gMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBwcmludF9jaGFyKGJ1
ZiwgaSAtIDEgfCAwKTsKLSAgICAgICAgICByZXR1cm4gcHJpbnRfb3V0KHNldCwgaSArIDEgfCAw
KTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGV4aXQgPSAxOwot
ICAgICAgfQotICAgICAgaWYgKGV4aXQgPT09IDEpIHsKLSAgICAgICAgaWYgKGlzX2luX2NoYXJf
c2V0KHNldCwgUGVydmFzaXZlcy5jaGFyX29mX2ludChpICsgMSB8IDApKSkgewotICAgICAgICAg
IHZhciBzZXQkMSA9IHNldDsKLSAgICAgICAgICB2YXIgaSQxID0gaSAtIDEgfCAwOwotICAgICAg
ICAgIHZhciBfaiA9IGkgKyAyIHwgMDsKLSAgICAgICAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICAg
ICAgICB2YXIgaiA9IF9qOwotICAgICAgICAgICAgaWYgKGogPT09IDI1NiB8fCAhaXNfaW5fY2hh
cl9zZXQoc2V0JDEsIFBlcnZhc2l2ZXMuY2hhcl9vZl9pbnQoaikpKSB7Ci0gICAgICAgICAgICAg
IHByaW50X2NoYXIoYnVmLCBpJDEpOwotICAgICAgICAgICAgICBwcmludF9jaGFyKGJ1ZiwgLyog
Ii0iICovNDUpOwotICAgICAgICAgICAgICBwcmludF9jaGFyKGJ1ZiwgaiAtIDEgfCAwKTsKLSAg
ICAgICAgICAgICAgaWYgKGogPCAyNTYpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJpbnRf
b3V0KHNldCQxLCBqICsgMSB8IDApOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgX2ogPSBqICsgMSB8IDA7
Ci0gICAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9
Ci0gICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBwcmlu
dF9jaGFyKGJ1ZiwgaSAtIDEgfCAwKTsKLSAgICAgICAgICBwcmludF9jaGFyKGJ1ZiwgaSk7Ci0g
ICAgICAgICAgcmV0dXJuIHByaW50X291dChzZXQsIGkgKyAyIHwgMCk7Ci0gICAgICAgIH0KLSAg
ICAgIH0KLSAgICAgIAotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHByaW50X2NoYXIoYnVmLCBp
IC0gMSB8IDApOwotICAgICAgcmV0dXJuIHByaW50X291dChzZXQsIGkgKyAxIHwgMCk7Ci0gICAg
fQotICB9OwotICB2YXIgcHJpbnRfc3RhcnQgPSBmdW5jdGlvbiAoc2V0KSB7Ci0gICAgdmFyIGlz
X2Fsb25lID0gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHZhciBtYXRjaF8wMDAgPSBDaGFyLmNocihj
IC0gMSB8IDApOwotICAgICAgdmFyIG1hdGNoXzAwMSA9IENoYXIuY2hyKGMgKyAxIHwgMCk7Ci0g
ICAgICBpZiAoaXNfaW5fY2hhcl9zZXQoc2V0LCBjKSkgewotICAgICAgICByZXR1cm4gMSAtIChp
c19pbl9jaGFyX3NldChzZXQsIG1hdGNoXzAwMCkgJiYgaXNfaW5fY2hhcl9zZXQoc2V0LCBtYXRj
aF8wMDEpKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4gLyogZmFsc2Ug
Ki8wOwotICAgICAgfQotICAgIH07Ci0gICAgaWYgKGlzX2Fsb25lKC8qICJdIiAqLzkzKSkgewot
ICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIl0iICovOTMpOwotICAgIH0KLSAgICBwcmlu
dF9vdXQoc2V0LCAxKTsKLSAgICBpZiAoaXNfYWxvbmUoLyogIi0iICovNDUpKSB7Ci0gICAgICBy
ZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIi0iICovNDUpOwotICAgIH0KLSAgICBlbHNl
IHsKLSAgICAgIHJldHVybiAwOwotICAgIH0KLSAgfTsKLSAgYnVmZmVyX2FkZF9jaGFyKGJ1Ziwg
LyogIlsiICovOTEpOwotICBwcmludF9zdGFydChpc19pbl9jaGFyX3NldChjaGFyX3NldCwgLyog
IlwwMDAiICovMCkgPyAoYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIl4iICovOTQpLCByZXZfY2hh
cl9zZXQoY2hhcl9zZXQpKSA6IGNoYXJfc2V0KTsKLSAgcmV0dXJuIGJ1ZmZlcl9hZGRfY2hhcihi
dWYsIC8qICJdIiAqLzkzKTsKLX0KLQotZnVuY3Rpb24gYnByaW50X3BhZHR5KGJ1ZiwgcGFkdHkp
IHsKLSAgc3dpdGNoIChwYWR0eSkgewotICAgIGNhc2UgMCA6IAotICAgICAgICByZXR1cm4gYnVm
ZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIi0iICovNDUpOwotICAgIGNhc2UgMSA6IAotICAgICAgICBy
ZXR1cm4gLyogKCkgKi8wOwotICAgIGNhc2UgMiA6IAotICAgICAgICByZXR1cm4gYnVmZmVyX2Fk
ZF9jaGFyKGJ1ZiwgLyogIjAiICovNDgpOwotICAgIAotICB9Ci19Ci0KLWZ1bmN0aW9uIGJwcmlu
dF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZykgewotICBpZiAoaWduX2ZsYWcpIHsKLSAgICBy
ZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIl8iICovOTUpOwotICB9Ci0gIGVsc2Ugewot
ICAgIHJldHVybiAwOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGJwcmludF9wYWRfb3B0KGJ1ZiwgcGFk
X29wdCkgewotICBpZiAocGFkX29wdCkgewotICAgIHJldHVybiBidWZmZXJfYWRkX3N0cmluZyhi
dWYsICIiICsgcGFkX29wdFswXSk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qICgpICov
MDsKLSAgfQotfQotCi1mdW5jdGlvbiBicHJpbnRfcGFkZGluZyhidWYsIHBhZCkgewotICBpZiAo
dHlwZW9mIHBhZCA9PT0gIm51bWJlciIpIHsKLSAgICByZXR1cm4gLyogKCkgKi8wOwotICB9Ci0g
IGVsc2UgewotICAgIGJwcmludF9wYWR0eShidWYsIHBhZFswXSk7Ci0gICAgaWYgKHBhZC50YWcp
IHsKLSAgICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiKiIgKi80Mik7Ci0gICAg
fQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiIgKyBw
YWRbMV0pOwotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBicHJpbnRfcHJlY2lzaW9uKGJ1Ziwg
cHJlYykgewotICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7Ci0gICAgaWYgKHByZWMg
IT09IDApIHsKLSAgICAgIHJldHVybiBidWZmZXJfYWRkX3N0cmluZyhidWYsICIuKiIpOwotICAg
IH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgfQotICB9Ci0gIGVs
c2UgewotICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIuIiAqLzQ2KTsKLSAgICByZXR1cm4g
YnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiIiArIHByZWNbMF0pOwotICB9Ci19Ci0KLWZ1bmN0aW9u
IGJwcmludF9pY29udl9mbGFnKGJ1ZiwgaWNvbnYpIHsKLSAgc3dpdGNoIChpY29udikgewotICAg
IGNhc2UgMSA6IAotICAgIGNhc2UgNCA6IAotICAgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFy
KGJ1ZiwgLyogIisiICovNDMpOwotICAgIGNhc2UgMiA6IAotICAgIGNhc2UgNSA6IAotICAgICAg
ICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiAiICovMzIpOwotICAgIGNhc2UgNyA6
IAotICAgIGNhc2UgOSA6IAotICAgIGNhc2UgMTEgOiAKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcl9h
ZGRfY2hhcihidWYsIC8qICIjIiAqLzM1KTsKLSAgICBjYXNlIDAgOiAKLSAgICBjYXNlIDMgOiAK
LSAgICBjYXNlIDYgOiAKLSAgICBjYXNlIDggOiAKLSAgICBjYXNlIDEwIDogCi0gICAgY2FzZSAx
MiA6IAotICAgICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgIAotICB9Ci19Ci0KLWZ1bmN0aW9u
IGJwcmludF9pbnRfZm10KGJ1ZiwgaWduX2ZsYWcsIGljb252LCBwYWQsIHByZWMpIHsKLSAgYnVm
ZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOwotICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1
ZiwgaWduX2ZsYWcpOwotICBicHJpbnRfaWNvbnZfZmxhZyhidWYsIGljb252KTsKLSAgYnByaW50
X3BhZGRpbmcoYnVmLCBwYWQpOwotICBicHJpbnRfcHJlY2lzaW9uKGJ1ZiwgcHJlYyk7Ci0gIHJl
dHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCBjaGFyX29mX2ljb252KGljb252KSk7Ci19Ci0KLWZ1
bmN0aW9uIGJwcmludF9hbHRpbnRfZm10KGJ1ZiwgaWduX2ZsYWcsIGljb252LCBwYWQsIHByZWMs
IGMpIHsKLSAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOwotICBicHJpbnRfaWdu
b3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOwotICBicHJpbnRfaWNvbnZfZmxhZyhidWYsIGljb252
KTsKLSAgYnByaW50X3BhZGRpbmcoYnVmLCBwYWQpOwotICBicHJpbnRfcHJlY2lzaW9uKGJ1Ziwg
cHJlYyk7Ci0gIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGMpOwotICByZXR1cm4gYnVmZmVyX2FkZF9j
aGFyKGJ1ZiwgY2hhcl9vZl9pY29udihpY29udikpOwotfQotCi1mdW5jdGlvbiBicHJpbnRfZmNv
bnZfZmxhZyhidWYsIGZjb252KSB7Ci0gIHN3aXRjaCAoZmNvbnYpIHsKLSAgICBjYXNlIDEgOiAK
LSAgICBjYXNlIDQgOiAKLSAgICBjYXNlIDcgOiAKLSAgICBjYXNlIDEwIDogCi0gICAgY2FzZSAx
MyA6IAotICAgICAgICByZXR1cm4gYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIisiICovNDMpOwot
ICAgIGNhc2UgMiA6IAotICAgIGNhc2UgNSA6IAotICAgIGNhc2UgOCA6IAotICAgIGNhc2UgMTEg
OiAKLSAgICBjYXNlIDE0IDogCi0gICAgICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVmLCAv
KiAiICIgKi8zMik7Ci0gICAgY2FzZSAwIDogCi0gICAgY2FzZSAzIDogCi0gICAgY2FzZSA2IDog
Ci0gICAgY2FzZSA5IDogCi0gICAgY2FzZSAxMiA6IAotICAgIGNhc2UgMTUgOiAKLSAgICAgICAg
cmV0dXJuIC8qICgpICovMDsKLSAgICAKLSAgfQotfQotCi1mdW5jdGlvbiBicHJpbnRfZmxvYXRf
Zm10KGJ1ZiwgaWduX2ZsYWcsIGZjb252LCBwYWQsIHByZWMpIHsKLSAgYnVmZmVyX2FkZF9jaGFy
KGJ1ZiwgLyogIiUiICovMzcpOwotICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcp
OwotICBicHJpbnRfZmNvbnZfZmxhZyhidWYsIGZjb252KTsKLSAgYnByaW50X3BhZGRpbmcoYnVm
LCBwYWQpOwotICBicHJpbnRfcHJlY2lzaW9uKGJ1ZiwgcHJlYyk7Ci0gIHJldHVybiBidWZmZXJf
YWRkX2NoYXIoYnVmLCBjaGFyX29mX2Zjb252KGZjb252KSk7Ci19Ci0KLWZ1bmN0aW9uIHN0cmlu
Z19vZl9mb3JtYXR0aW5nX2xpdChmb3JtYXR0aW5nX2xpdCkgewotICBpZiAodHlwZW9mIGZvcm1h
dHRpbmdfbGl0ID09PSAibnVtYmVyIikgewotICAgIHN3aXRjaCAoZm9ybWF0dGluZ19saXQpIHsK
LSAgICAgIGNhc2UgMCA6IAotICAgICAgICAgIHJldHVybiAiQF0iOwotICAgICAgY2FzZSAxIDog
Ci0gICAgICAgICAgcmV0dXJuICJAfSI7Ci0gICAgICBjYXNlIDIgOiAKLSAgICAgICAgICByZXR1
cm4gIkA/IjsKLSAgICAgIGNhc2UgMyA6IAotICAgICAgICAgIHJldHVybiAiQFxuIjsKLSAgICAg
IGNhc2UgNCA6IAotICAgICAgICAgIHJldHVybiAiQC4iOwotICAgICAgY2FzZSA1IDogCi0gICAg
ICAgICAgcmV0dXJuICJAQCI7Ci0gICAgICBjYXNlIDYgOiAKLSAgICAgICAgICByZXR1cm4gIkAl
IjsKLSAgICAgIAotICAgIH0KLSAgfQotICBlbHNlIHsKLSAgICBzd2l0Y2ggKGZvcm1hdHRpbmdf
bGl0LnRhZyB8IDApIHsKLSAgICAgIGNhc2UgMCA6IAotICAgICAgY2FzZSAxIDogCi0gICAgICAg
ICAgcmV0dXJuIGZvcm1hdHRpbmdfbGl0WzBdOwotICAgICAgY2FzZSAyIDogCi0gICAgICAgICAg
cmV0dXJuICJAIiArIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5tYWtlKDEsIGZv
cm1hdHRpbmdfbGl0WzBdKSk7Ci0gICAgICAKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gc3Ry
aW5nX29mX2Zvcm1hdHRpbmdfZ2VuKGZvcm1hdHRpbmdfZ2VuKSB7Ci0gIHJldHVybiBmb3JtYXR0
aW5nX2dlblswXVsxXTsKLX0KLQotZnVuY3Rpb24gYnByaW50X2NoYXJfbGl0ZXJhbChidWYsIGNo
cikgewotICBpZiAoY2hyICE9PSAzNykgewotICAgIHJldHVybiBidWZmZXJfYWRkX2NoYXIoYnVm
LCBjaHIpOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBidWZmZXJfYWRkX3N0cmluZyhidWYs
ICIlJSIpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGJwcmludF9zdHJpbmdfbGl0ZXJhbChidWYsIHN0
cikgewotICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IHN0ci5sZW5ndGggLSAxIHwgMDsgaSA8
PSBpX2ZpbmlzaDsgKytpKXsKLSAgICBicHJpbnRfY2hhcl9saXRlcmFsKGJ1ZiwgQ2FtbF9zdHJp
bmcuZ2V0KHN0ciwgaSkpOwotICB9Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9u
IGJwcmludF9mbXR0eShidWYsIF9mbXR0eSkgewotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIGZt
dHR5ID0gX2ZtdHR5OwotICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Ci0gICAg
ICByZXR1cm4gLyogKCkgKi8wOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHN3aXRjaCAoZm10
dHkudGFnIHwgMCkgewotICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRf
c3RyaW5nKGJ1ZiwgIiVjIik7Ci0gICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgYnVm
ZmVyX2FkZF9zdHJpbmcoYnVmLCAiJXMiKTsKLSAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBd
OwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAg
ICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYsICIlaSIpOwotICAgICAgICAgICAgX2ZtdHR5ID0g
Zm10dHlbMF07Ci0gICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICBjYXNlIDMgOiAK
LSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVsaSIpOwotICAgICAgICAgICAg
X2ZtdHR5ID0gZm10dHlbMF07Ci0gICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICBj
YXNlIDQgOiAKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVuaSIpOwotICAg
ICAgICAgICAgX2ZtdHR5ID0gZm10dHlbMF07Ci0gICAgICAgICAgICBjb250aW51ZSA7Ci0gICAg
ICAgICAgICBjYXNlIDUgOiAKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiVM
aSIpOwotICAgICAgICAgICAgX2ZtdHR5ID0gZm10dHlbMF07Ci0gICAgICAgICAgICBjb250aW51
ZSA7Ci0gICAgICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfc3RyaW5n
KGJ1ZiwgIiVmIik7Ci0gICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsKLSAgICAgICAgICAg
IGNvbnRpbnVlIDsKLSAgICAgICAgICAgIGNhc2UgNyA6IAotICAgICAgICAgICAgYnVmZmVyX2Fk
ZF9zdHJpbmcoYnVmLCAiJUIiKTsKLSAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOwotICAg
ICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgICBi
dWZmZXJfYWRkX3N0cmluZyhidWYsICIleyIpOwotICAgICAgICAgICAgYnByaW50X2ZtdHR5KGJ1
ZiwgZm10dHlbMF0pOwotICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJX0iKTsK
LSAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzFdOwotICAgICAgICAgICAgY29udGludWUgOwot
ICAgICAgICAgICAgY2FzZSA5IDogCi0gICAgICAgICAgICBidWZmZXJfYWRkX3N0cmluZyhidWYs
ICIlKCIpOwotICAgICAgICAgICAgYnByaW50X2ZtdHR5KGJ1ZiwgZm10dHlbMF0pOwotICAgICAg
ICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJSkiKTsKLSAgICAgICAgICAgIF9mbXR0eSA9
IGZtdHR5WzJdOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSAxMCA6
IAotICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJWEiKTsKLSAgICAgICAgICAg
IF9mbXR0eSA9IGZtdHR5WzBdOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAg
Y2FzZSAxMSA6IAotICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJXQiKTsKLSAg
ICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOwotICAgICAgICAgICAgY29udGludWUgOwotICAg
ICAgICAgICAgY2FzZSAxMiA6IAotICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAi
JT8iKTsKLSAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOwotICAgICAgICAgICAgY29udGlu
dWUgOwotICAgICAgICAgICAgY2FzZSAxMyA6IAotICAgICAgICAgICAgYnVmZmVyX2FkZF9zdHJp
bmcoYnVmLCAiJXIiKTsKLSAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOwotICAgICAgICAg
ICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSAxNCA6IAotICAgICAgICAgICAgYnVmZmVy
X2FkZF9zdHJpbmcoYnVmLCAiJV9yIik7Ci0gICAgICAgICAgICBfZm10dHkgPSBmbXR0eVswXTsK
LSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgIAotICAgICAgfQotICAgIH0KLSAg
fTsKLX0KLQotZnVuY3Rpb24gaW50X29mX2N1c3RvbV9hcml0eShwYXJhbSkgewotICBpZiAocGFy
YW0pIHsKLSAgICByZXR1cm4gMSArIGludF9vZl9jdXN0b21fYXJpdHkocGFyYW1bMF0pIHwgMDsK
LSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gMDsKLSAgfQotfQotCi1mdW5jdGlvbiBicHJpbnRf
Zm10KGJ1ZiwgZm10KSB7Ci0gIHZhciBfZm10ID0gZm10OwotICB2YXIgX2lnbl9mbGFnID0gLyog
ZmFsc2UgKi8wOwotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIGlnbl9mbGFnID0gX2lnbl9mbGFn
OwotICAgIHZhciBmbXQkMSA9IF9mbXQ7Ci0gICAgaWYgKHR5cGVvZiBmbXQkMSA9PT0gIm51bWJl
ciIpIHsKLSAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAg
c3dpdGNoIChmbXQkMS50YWcgfCAwKSB7Ci0gICAgICAgIGNhc2UgMCA6IAotICAgICAgICAgICAg
YnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOwotICAgICAgICAgICAgYnByaW50X2ln
bm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihi
dWYsIC8qICJjIiAqLzk5KTsKLSAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsK
LSAgICAgICAgICAgIF9mbXQgPSBmbXQkMVswXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAg
ICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyog
IiUiICovMzcpOwotICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFn
KTsKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICJDIiAqLzY3KTsKLSAgICAg
ICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKLSAgICAgICAgICAgIF9mbXQgPSBmbXQk
MVswXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgIGNhc2UgMiA6IAotICAg
ICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOwotICAgICAgICAgICAg
YnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKLSAgICAgICAgICAgIGJwcmludF9w
YWRkaW5nKGJ1ZiwgZm10JDFbMF0pOwotICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1Ziwg
LyogInMiICovMTE1KTsKLSAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKLSAg
ICAgICAgICAgIF9mbXQgPSBmbXQkMVsxXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAg
ICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUi
ICovMzcpOwotICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsK
LSAgICAgICAgICAgIGJwcmludF9wYWRkaW5nKGJ1ZiwgZm10JDFbMF0pOwotICAgICAgICAgICAg
YnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIlMiICovODMpOwotICAgICAgICAgICAgX2lnbl9mbGFn
ID0gLyogZmFsc2UgKi8wOwotICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzFdOwotICAgICAgICAg
ICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgICBicHJpbnRf
aW50X2ZtdChidWYsIGlnbl9mbGFnLCBmbXQkMVswXSwgZm10JDFbMV0sIGZtdCQxWzJdKTsKLSAg
ICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKLSAgICAgICAgICAgIF9mbXQgPSBm
bXQkMVszXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgIGNhc2UgNSA6IAot
ICAgICAgICAgICAgYnByaW50X2FsdGludF9mbXQoYnVmLCBpZ25fZmxhZywgZm10JDFbMF0sIGZt
dCQxWzFdLCBmbXQkMVsyXSwgLyogImwiICovMTA4KTsKLSAgICAgICAgICAgIF9pZ25fZmxhZyA9
IC8qIGZhbHNlICovMDsKLSAgICAgICAgICAgIF9mbXQgPSBmbXQkMVszXTsKLSAgICAgICAgICAg
IGNvbnRpbnVlIDsKLSAgICAgICAgICAgIGNhc2UgNiA6IAotICAgICAgICAgICAgYnByaW50X2Fs
dGludF9mbXQoYnVmLCBpZ25fZmxhZywgZm10JDFbMF0sIGZtdCQxWzFdLCBmbXQkMVsyXSwgLyog
Im4iICovMTEwKTsKLSAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKLSAgICAg
ICAgICAgIF9mbXQgPSBmbXQkMVszXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAg
ICAgIGNhc2UgNyA6IAotICAgICAgICAgICAgYnByaW50X2FsdGludF9mbXQoYnVmLCBpZ25fZmxh
ZywgZm10JDFbMF0sIGZtdCQxWzFdLCBmbXQkMVsyXSwgLyogIkwiICovNzYpOwotICAgICAgICAg
ICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOwotICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzNd
OwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSA4IDogCi0gICAgICAg
ICAgICBicHJpbnRfZmxvYXRfZm10KGJ1ZiwgaWduX2ZsYWcsIGZtdCQxWzBdLCBmbXQkMVsxXSwg
Zm10JDFbMl0pOwotICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOwotICAgICAg
ICAgICAgX2ZtdCA9IGZtdCQxWzNdOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAg
ICAgY2FzZSA5IDogCi0gICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8z
Nyk7Ci0gICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOwotICAg
ICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIkIiICovNjYpOwotICAgICAgICAgICAg
X2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOwotICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzBdOwot
ICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAg
ICAgYnVmZmVyX2FkZF9zdHJpbmcoYnVmLCAiJSEiKTsKLSAgICAgICAgICAgIF9mbXQgPSBmbXQk
MVswXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgIGNhc2UgMTEgOiAKLSAg
ICAgICAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbChidWYsIGZtdCQxWzBdKTsKLSAgICAgICAg
ICAgIF9mbXQgPSBmbXQkMVsxXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAg
IGNhc2UgMTIgOiAKLSAgICAgICAgICAgIGJwcmludF9jaGFyX2xpdGVyYWwoYnVmLCBmbXQkMVsw
XSk7Ci0gICAgICAgICAgICBfZm10ID0gZm10JDFbMV07Ci0gICAgICAgICAgICBjb250aW51ZSA7
Ci0gICAgICAgICAgICBjYXNlIDEzIDogCi0gICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVm
LCAvKiAiJSIgKi8zNyk7Ci0gICAgICAgICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWdu
X2ZsYWcpOwotICAgICAgICAgICAgYnByaW50X3BhZF9vcHQoYnVmLCBmbXQkMVswXSk7Ci0gICAg
ICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAieyIgKi8xMjMpOwotICAgICAgICAgICAg
YnByaW50X2ZtdHR5KGJ1ZiwgZm10JDFbMV0pOwotICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFy
KGJ1ZiwgLyogIiUiICovMzcpOwotICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyog
In0iICovMTI1KTsKLSAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKLSAgICAg
ICAgICAgIF9mbXQgPSBmbXQkMVsyXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAg
ICAgIGNhc2UgMTQgOiAKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAq
LzM3KTsKLSAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7Ci0g
ICAgICAgICAgICBicHJpbnRfcGFkX29wdChidWYsIGZtdCQxWzBdKTsKLSAgICAgICAgICAgIGJ1
ZmZlcl9hZGRfY2hhcihidWYsIC8qICIoIiAqLzQwKTsKLSAgICAgICAgICAgIGJwcmludF9mbXR0
eShidWYsIGZtdCQxWzFdKTsKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIl
IiAqLzM3KTsKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIpIiAqLzQxKTsK
LSAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKLSAgICAgICAgICAgIF9mbXQg
PSBmbXQkMVsyXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgIGNhc2UgMTUg
OiAKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIC8qICIlIiAqLzM3KTsKLSAgICAg
ICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVmLCBpZ25fZmxhZyk7Ci0gICAgICAgICAgICBi
dWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiYSIgKi85Nyk7Ci0gICAgICAgICAgICBfaWduX2ZsYWcg
PSAvKiBmYWxzZSAqLzA7Ci0gICAgICAgICAgICBfZm10ID0gZm10JDFbMF07Ci0gICAgICAgICAg
ICBjb250aW51ZSA7Ci0gICAgICAgICAgICBjYXNlIDE2IDogCi0gICAgICAgICAgICBidWZmZXJf
YWRkX2NoYXIoYnVmLCAvKiAiJSIgKi8zNyk7Ci0gICAgICAgICAgICBicHJpbnRfaWdub3JlZF9m
bGFnKGJ1ZiwgaWduX2ZsYWcpOwotICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyog
InQiICovMTE2KTsKLSAgICAgICAgICAgIF9pZ25fZmxhZyA9IC8qIGZhbHNlICovMDsKLSAgICAg
ICAgICAgIF9mbXQgPSBmbXQkMVswXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAg
ICAgIGNhc2UgMTcgOiAKLSAgICAgICAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbChidWYsIHN0
cmluZ19vZl9mb3JtYXR0aW5nX2xpdChmbXQkMVswXSkpOwotICAgICAgICAgICAgX2ZtdCA9IGZt
dCQxWzFdOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSAxOCA6IAot
ICAgICAgICAgICAgYnByaW50X3N0cmluZ19saXRlcmFsKGJ1ZiwgIkB7Iik7Ci0gICAgICAgICAg
ICBicHJpbnRfc3RyaW5nX2xpdGVyYWwoYnVmLCBzdHJpbmdfb2ZfZm9ybWF0dGluZ19nZW4oZm10
JDFbMF0pKTsKLSAgICAgICAgICAgIF9mbXQgPSBmbXQkMVsxXTsKLSAgICAgICAgICAgIGNvbnRp
bnVlIDsKLSAgICAgICAgICAgIGNhc2UgMTkgOiAKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hh
cihidWYsIC8qICIlIiAqLzM3KTsKLSAgICAgICAgICAgIGJwcmludF9pZ25vcmVkX2ZsYWcoYnVm
LCBpZ25fZmxhZyk7Ci0gICAgICAgICAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiciIgKi8x
MTQpOwotICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOwotICAgICAgICAgICAg
X2ZtdCA9IGZtdCQxWzBdOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2Fz
ZSAyMCA6IAotICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOwot
ICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsKLSAgICAgICAg
ICAgIGJwcmludF9wYWRfb3B0KGJ1ZiwgZm10JDFbMF0pOwotICAgICAgICAgICAgYnByaW50X2No
YXJfc2V0KGJ1ZiwgZm10JDFbMV0pOwotICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2Ug
Ki8wOwotICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzJdOwotICAgICAgICAgICAgY29udGludWUg
OwotICAgICAgICAgICAgY2FzZSAyMSA6IAotICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1
ZiwgLyogIiUiICovMzcpOwotICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGln
bl9mbGFnKTsKLSAgICAgICAgICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIGNoYXJfb2ZfY291bnRl
cihmbXQkMVswXSkpOwotICAgICAgICAgICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOwotICAg
ICAgICAgICAgX2ZtdCA9IGZtdCQxWzFdOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAg
ICAgICAgY2FzZSAyMiA6IAotICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUi
ICovMzcpOwotICAgICAgICAgICAgYnByaW50X2lnbm9yZWRfZmxhZyhidWYsIGlnbl9mbGFnKTsK
LSAgICAgICAgICAgIGJwcmludF9zdHJpbmdfbGl0ZXJhbChidWYsICIwYyIpOwotICAgICAgICAg
ICAgX2lnbl9mbGFnID0gLyogZmFsc2UgKi8wOwotICAgICAgICAgICAgX2ZtdCA9IGZtdCQxWzBd
OwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSAyMyA6IAotICAgICAg
ICAgICAgdmFyIG1hdGNoID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0KGZtdCQxWzBd
LCBmbXQkMVsxXSk7Ci0gICAgICAgICAgICBfaWduX2ZsYWcgPSAvKiB0cnVlICovMTsKLSAgICAg
ICAgICAgIF9mbXQgPSBtYXRjaFswXTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAg
ICAgIGNhc2UgMjQgOiAKLSAgICAgICAgICAgIGZvcih2YXIgX2kgPSAxICxfaV9maW5pc2ggPSBp
bnRfb2ZfY3VzdG9tX2FyaXR5KGZtdCQxWzBdKTsgX2kgPD0gX2lfZmluaXNoOyArK19pKXsKLSAg
ICAgICAgICAgICAgYnVmZmVyX2FkZF9jaGFyKGJ1ZiwgLyogIiUiICovMzcpOwotICAgICAgICAg
ICAgICBicHJpbnRfaWdub3JlZF9mbGFnKGJ1ZiwgaWduX2ZsYWcpOwotICAgICAgICAgICAgICBi
dWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiPyIgKi82Myk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBfaWduX2ZsYWcgPSAvKiBmYWxzZSAqLzA7Ci0gICAgICAgICAgICBfZm10ID0gZm10JDFb
Ml07Ci0gICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAKLSAgICAgIH0KLSAgICB9
Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIHN0cmluZ19vZl9mbXQoZm10KSB7Ci0gIHZhciBidWYgPSAv
KiByZWNvcmQgKi9bCi0gICAgLyogaW5kICovMCwKLSAgICAvKiBieXRlcyAqL25ldyBBcnJheSgx
NikKLSAgXTsKLSAgYnByaW50X2ZtdChidWYsIGZtdCk7Ci0gIHJldHVybiBidWZmZXJfY29udGVu
dHMoYnVmKTsKLX0KLQotZnVuY3Rpb24gc3ltbShwYXJhbSkgewotICBpZiAodHlwZW9mIHBhcmFt
ID09PSAibnVtYmVyIikgewotICAgIHJldHVybiAvKiBFbmRfb2ZfZm10dHkgKi8wOwotICB9Ci0g
IGVsc2UgewotICAgIHN3aXRjaCAocGFyYW0udGFnIHwgMCkgewotICAgICAgY2FzZSAwIDogCi0g
ICAgICAgICAgcmV0dXJuIC8qIENoYXJfdHkgKi9CbG9jay5fXygwLCBbc3ltbShwYXJhbVswXSld
KTsKLSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIHJldHVybiAvKiBTdHJpbmdfdHkgKi9CbG9j
ay5fXygxLCBbc3ltbShwYXJhbVswXSldKTsKLSAgICAgIGNhc2UgMiA6IAotICAgICAgICAgIHJl
dHVybiAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbc3ltbShwYXJhbVswXSldKTsKLSAgICAgIGNh
c2UgMyA6IAotICAgICAgICAgIHJldHVybiAvKiBJbnQzMl90eSAqL0Jsb2NrLl9fKDMsIFtzeW1t
KHBhcmFtWzBdKV0pOwotICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgcmV0dXJuIC8qIE5hdGl2
ZWludF90eSAqL0Jsb2NrLl9fKDQsIFtzeW1tKHBhcmFtWzBdKV0pOwotICAgICAgY2FzZSA1IDog
Ci0gICAgICAgICAgcmV0dXJuIC8qIEludDY0X3R5ICovQmxvY2suX18oNSwgW3N5bW0ocGFyYW1b
MF0pXSk7Ci0gICAgICBjYXNlIDYgOiAKLSAgICAgICAgICByZXR1cm4gLyogRmxvYXRfdHkgKi9C
bG9jay5fXyg2LCBbc3ltbShwYXJhbVswXSldKTsKLSAgICAgIGNhc2UgNyA6IAotICAgICAgICAg
IHJldHVybiAvKiBCb29sX3R5ICovQmxvY2suX18oNywgW3N5bW0ocGFyYW1bMF0pXSk7Ci0gICAg
ICBjYXNlIDggOiAKLSAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X2FyZ190eSAqL0Jsb2NrLl9f
KDgsIFsKLSAgICAgICAgICAgICAgICAgICAgcGFyYW1bMF0sCi0gICAgICAgICAgICAgICAgICAg
IHN5bW0ocGFyYW1bMV0pCi0gICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2UgOSA6IAot
ICAgICAgICAgIHJldHVybiAvKiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9jay5fXyg5LCBbCi0gICAg
ICAgICAgICAgICAgICAgIHBhcmFtWzFdLAotICAgICAgICAgICAgICAgICAgICBwYXJhbVswXSwK
LSAgICAgICAgICAgICAgICAgICAgc3ltbShwYXJhbVsyXSkKLSAgICAgICAgICAgICAgICAgIF0p
OwotICAgICAgY2FzZSAxMCA6IAotICAgICAgICAgIHJldHVybiAvKiBBbHBoYV90eSAqL0Jsb2Nr
Ll9fKDEwLCBbc3ltbShwYXJhbVswXSldKTsKLSAgICAgIGNhc2UgMTEgOiAKLSAgICAgICAgICBy
ZXR1cm4gLyogVGhldGFfdHkgKi9CbG9jay5fXygxMSwgW3N5bW0ocGFyYW1bMF0pXSk7Ci0gICAg
ICBjYXNlIDEyIDogCi0gICAgICAgICAgcmV0dXJuIC8qIEFueV90eSAqL0Jsb2NrLl9fKDEyLCBb
c3ltbShwYXJhbVswXSldKTsKLSAgICAgIGNhc2UgMTMgOiAKLSAgICAgICAgICByZXR1cm4gLyog
UmVhZGVyX3R5ICovQmxvY2suX18oMTMsIFtzeW1tKHBhcmFtWzBdKV0pOwotICAgICAgY2FzZSAx
NCA6IAotICAgICAgICAgIHJldHVybiAvKiBJZ25vcmVkX3JlYWRlcl90eSAqL0Jsb2NrLl9fKDE0
LCBbc3ltbShwYXJhbVswXSldKTsKLSAgICAgIAotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBm
bXR0eV9yZWxfZGV0KHBhcmFtKSB7Ci0gIGlmICh0eXBlb2YgcGFyYW0gPT09ICJudW1iZXIiKSB7
Ci0gICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAg
ICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Ci0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Ci0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICByZXR1
cm4gLyogUmVmbCAqLzA7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICBzd2l0Y2ggKHBhcmFtLnRhZyB8IDApIHsKLSAg
ICAgIGNhc2UgMCA6IAotICAgICAgICAgIHZhciBtYXRjaCA9IGZtdHR5X3JlbF9kZXQocGFyYW1b
MF0pOwotICAgICAgICAgIHZhciBhZiA9IG1hdGNoWzFdOwotICAgICAgICAgIHZhciBmYSA9IG1h
dGNoWzBdOwotICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEsIC8qIFJlZmwg
Ki8wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwotICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEoYWYsIC8qIFJlZmwgKi8wKTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIC8qIFJlZmwgKi8wOwotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgIG1hdGNoWzJdLAotICAgICAgICAgICAgICAgICAgbWF0Y2hbM10KLSAgICAgICAgICAgICAg
ICBdOwotICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgdmFyIG1hdGNoJDEgPSBmbXR0eV9yZWxf
ZGV0KHBhcmFtWzBdKTsKLSAgICAgICAgICB2YXIgYWYkMSA9IG1hdGNoJDFbMV07Ci0gICAgICAg
ICAgdmFyIGZhJDEgPSBtYXRjaCQxWzBdOwotICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
LSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgQ3Vy
cnkuXzEoZmEkMSwgLyogUmVmbCAqLzApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyog
UmVmbCAqLzA7Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxLCAvKiBSZWZsICovMCk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKLSAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICBtYXRjaCQxWzJdLAotICAgICAgICAgICAgICAgICAg
bWF0Y2gkMVszXQotICAgICAgICAgICAgICAgIF07Ci0gICAgICBjYXNlIDIgOiAKLSAgICAgICAg
ICB2YXIgbWF0Y2gkMiA9IGZtdHR5X3JlbF9kZXQocGFyYW1bMF0pOwotICAgICAgICAgIHZhciBh
ZiQyID0gbWF0Y2gkMlsxXTsKLSAgICAgICAgICB2YXIgZmEkMiA9IG1hdGNoJDJbMF07Ci0gICAg
ICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQyLCAvKiBSZWZsICovMCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKLSAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEN1
cnJ5Ll8xKGFmJDIsIC8qIFJlZmwgKi8wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IFJlZmwgKi8wOwotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIG1hdGNo
JDJbMl0sCi0gICAgICAgICAgICAgICAgICBtYXRjaCQyWzNdCi0gICAgICAgICAgICAgICAgXTsK
LSAgICAgIGNhc2UgMyA6IAotICAgICAgICAgIHZhciBtYXRjaCQzID0gZm10dHlfcmVsX2RldChw
YXJhbVswXSk7Ci0gICAgICAgICAgdmFyIGFmJDMgPSBtYXRjaCQzWzFdOwotICAgICAgICAgIHZh
ciBmYSQzID0gbWF0Y2gkM1swXTsKLSAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8x
KGZhJDMsIC8qIFJlZmwgKi8wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwg
Ki8wOwotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYkMywgLyogUmVmbCAqLzApOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Ci0gICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgbWF0Y2gkM1syXSwKLSAgICAgICAgICAgICAgICAgIG1hdGNo
JDNbM10KLSAgICAgICAgICAgICAgICBdOwotICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgdmFy
IG1hdGNoJDQgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKLSAgICAgICAgICB2YXIgYWYkNCA9
IG1hdGNoJDRbMV07Ci0gICAgICAgICAgdmFyIGZhJDQgPSBtYXRjaCQ0WzBdOwotICAgICAgICAg
IHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkNCwgLyogUmVmbCAqLzApOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Ci0gICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICBDdXJyeS5f
MShhZiQ0LCAvKiBSZWZsICovMCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZs
ICovMDsKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBtYXRjaCQ0WzJd
LAotICAgICAgICAgICAgICAgICAgbWF0Y2gkNFszXQotICAgICAgICAgICAgICAgIF07Ci0gICAg
ICBjYXNlIDUgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkNSA9IGZtdHR5X3JlbF9kZXQocGFyYW1b
MF0pOwotICAgICAgICAgIHZhciBhZiQ1ID0gbWF0Y2gkNVsxXTsKLSAgICAgICAgICB2YXIgZmEk
NSA9IG1hdGNoJDVbMF07Ci0gICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQ1
LCAvKiBSZWZsICovMCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsK
LSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDUsIC8qIFJlZmwgKi8wKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwotICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgIG1hdGNoJDVbMl0sCi0gICAgICAgICAgICAgICAgICBtYXRjaCQ1WzNd
Ci0gICAgICAgICAgICAgICAgXTsKLSAgICAgIGNhc2UgNiA6IAotICAgICAgICAgIHZhciBtYXRj
aCQ2ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7Ci0gICAgICAgICAgdmFyIGFmJDYgPSBtYXRj
aCQ2WzFdOwotICAgICAgICAgIHZhciBmYSQ2ID0gbWF0Y2gkNlswXTsKLSAgICAgICAgICByZXR1
cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDYsIC8qIFJlZmwgKi8wKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWYk
NiwgLyogUmVmbCAqLzApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7
Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgbWF0Y2gkNlsyXSwKLSAg
ICAgICAgICAgICAgICAgIG1hdGNoJDZbM10KLSAgICAgICAgICAgICAgICBdOwotICAgICAgY2Fz
ZSA3IDogCi0gICAgICAgICAgdmFyIG1hdGNoJDcgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsK
LSAgICAgICAgICB2YXIgYWYkNyA9IG1hdGNoJDdbMV07Ci0gICAgICAgICAgdmFyIGZhJDcgPSBt
YXRjaCQ3WzBdOwotICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkNywgLyog
UmVmbCAqLzApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Ci0gICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAg
ICAgICAgICAgICAgICBDdXJyeS5fMShhZiQ3LCAvKiBSZWZsICovMCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICBtYXRjaCQ3WzJdLAotICAgICAgICAgICAgICAgICAgbWF0Y2gkN1szXQotICAg
ICAgICAgICAgICAgIF07Ci0gICAgICBjYXNlIDggOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkOCA9
IGZtdHR5X3JlbF9kZXQocGFyYW1bMV0pOwotICAgICAgICAgIHZhciBhZiQ4ID0gbWF0Y2gkOFsx
XTsKLSAgICAgICAgICB2YXIgZmEkOCA9IG1hdGNoJDhbMF07Ci0gICAgICAgICAgcmV0dXJuIC8q
IHR1cGxlICovWwotICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
ICAgICAgICBDdXJyeS5fMShmYSQ4LCAvKiBSZWZsICovMCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiAvKiBSZWZsICovMDsKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDgsIC8q
IFJlZmwgKi8wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwotICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIG1hdGNoJDhbMl0sCi0gICAgICAg
ICAgICAgICAgICBtYXRjaCQ4WzNdCi0gICAgICAgICAgICAgICAgXTsKLSAgICAgIGNhc2UgOSA6
IAotICAgICAgICAgIHZhciBtYXRjaCQ5ID0gZm10dHlfcmVsX2RldChwYXJhbVsyXSk7Ci0gICAg
ICAgICAgdmFyIGRlID0gbWF0Y2gkOVszXTsKLSAgICAgICAgICB2YXIgZWQgPSBtYXRjaCQ5WzJd
OwotICAgICAgICAgIHZhciBhZiQ5ID0gbWF0Y2gkOVsxXTsKLSAgICAgICAgICB2YXIgZmEkOSA9
IG1hdGNoJDlbMF07Ci0gICAgICAgICAgdmFyIHR5ID0gdHJhbnMoc3ltbShwYXJhbVswXSksIHBh
cmFtWzFdKTsKLSAgICAgICAgICB2YXIgbWF0Y2gkMTAgPSBmbXR0eV9yZWxfZGV0KHR5KTsKLSAg
ICAgICAgICB2YXIgamQgPSBtYXRjaCQxMFszXTsKLSAgICAgICAgICB2YXIgZGogPSBtYXRjaCQx
MFsyXTsKLSAgICAgICAgICB2YXIgZ2EgPSBtYXRjaCQxMFsxXTsKLSAgICAgICAgICB2YXIgYWcg
PSBtYXRjaCQxMFswXTsKLSAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAg
ICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDks
IC8qIFJlZmwgKi8wKTsKLSAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoYWcsIC8qIFJlZmwg
Ki8wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwotICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgQ3VycnkuXzEoZ2EsIC8qIFJlZmwgKi8wKTsKLSAgICAgICAgICAgICAgICAgICAg
Q3VycnkuXzEoYWYkOSwgLyogUmVmbCAqLzApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogUmVmbCAqLzA7Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShlZCwgLyogUmVmbCAqLzAp
OwotICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShkaiwgLyogUmVmbCAqLzApOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Ci0gICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICBDdXJy
eS5fMShqZCwgLyogUmVmbCAqLzApOwotICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShkZSwg
LyogUmVmbCAqLzApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Ci0g
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgXTsKLSAgICAgIGNhc2UgMTAgOiAK
LSAgICAgICAgICB2YXIgbWF0Y2gkMTEgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKLSAgICAg
ICAgICB2YXIgYWYkMTAgPSBtYXRjaCQxMVsxXTsKLSAgICAgICAgICB2YXIgZmEkMTAgPSBtYXRj
aCQxMVswXTsKLSAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDEwLCAvKiBS
ZWZsICovMCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKLSAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDEwLCAvKiBSZWZsICovMCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICBtYXRjaCQxMVsyXSwKLSAgICAgICAgICAgICAgICAgIG1hdGNoJDExWzNdCi0g
ICAgICAgICAgICAgICAgXTsKLSAgICAgIGNhc2UgMTEgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gk
MTIgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKLSAgICAgICAgICB2YXIgYWYkMTEgPSBtYXRj
aCQxMlsxXTsKLSAgICAgICAgICB2YXIgZmEkMTEgPSBtYXRjaCQxMlswXTsKLSAgICAgICAgICBy
ZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGZhJDExLCAvKiBSZWZsICovMCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8x
KGFmJDExLCAvKiBSZWZsICovMCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZs
ICovMDsKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBtYXRjaCQxMlsy
XSwKLSAgICAgICAgICAgICAgICAgIG1hdGNoJDEyWzNdCi0gICAgICAgICAgICAgICAgXTsKLSAg
ICAgIGNhc2UgMTIgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkMTMgPSBmbXR0eV9yZWxfZGV0KHBh
cmFtWzBdKTsKLSAgICAgICAgICB2YXIgYWYkMTIgPSBtYXRjaCQxM1sxXTsKLSAgICAgICAgICB2
YXIgZmEkMTIgPSBtYXRjaCQxM1swXTsKLSAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0g
ICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEN1cnJ5
Ll8xKGZhJDEyLCAvKiBSZWZsICovMCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBS
ZWZsICovMDsKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGFmJDEyLCAvKiBSZWZsICovMCk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKLSAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICBtYXRjaCQxM1syXSwKLSAgICAgICAgICAgICAgICAg
IG1hdGNoJDEzWzNdCi0gICAgICAgICAgICAgICAgXTsKLSAgICAgIGNhc2UgMTMgOiAKLSAgICAg
ICAgICB2YXIgbWF0Y2gkMTQgPSBmbXR0eV9yZWxfZGV0KHBhcmFtWzBdKTsKLSAgICAgICAgICB2
YXIgZGUkMSA9IG1hdGNoJDE0WzNdOwotICAgICAgICAgIHZhciBlZCQxID0gbWF0Y2gkMTRbMl07
Ci0gICAgICAgICAgdmFyIGFmJDEzID0gbWF0Y2gkMTRbMV07Ci0gICAgICAgICAgdmFyIGZhJDEz
ID0gbWF0Y2gkMTRbMF07Ci0gICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAg
ICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShmYSQx
MywgLyogUmVmbCAqLzApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7
Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShhZiQxMywgLyogUmVmbCAqLzApOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7Ci0gICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgICAgICBDdXJy
eS5fMShlZCQxLCAvKiBSZWZsICovMCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBS
ZWZsICovMDsKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBmdW5jdGlv
biAoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKGRlJDEsIC8qIFJlZmwgKi8wKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwotICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIF07Ci0gICAgICBjYXNlIDE0IDogCi0gICAgICAgICAgdmFy
IG1hdGNoJDE1ID0gZm10dHlfcmVsX2RldChwYXJhbVswXSk7Ci0gICAgICAgICAgdmFyIGRlJDIg
PSBtYXRjaCQxNVszXTsKLSAgICAgICAgICB2YXIgZWQkMiA9IG1hdGNoJDE1WzJdOwotICAgICAg
ICAgIHZhciBhZiQxNCA9IG1hdGNoJDE1WzFdOwotICAgICAgICAgIHZhciBmYSQxNCA9IG1hdGNo
JDE1WzBdOwotICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZmEkMTQsIC8qIFJl
ZmwgKi8wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwotICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgQ3VycnkuXzEoYWYkMTQsIC8qIFJlZmwgKi8wKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIFJlZmwgKi8wOwotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgQ3VycnkuXzEoZWQk
MiwgLyogUmVmbCAqLzApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogUmVmbCAqLzA7
Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgICAgICAgICBDdXJyeS5fMShkZSQyLCAvKiBSZWZsICovMCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBSZWZsICovMDsKLSAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBdOwotICAgICAgCi0gICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9uIHRyYW5z
KHR5MSwgdHkyKSB7Ci0gIHZhciBleGl0ID0gMDsKLSAgaWYgKHR5cGVvZiB0eTEgPT09ICJudW1i
ZXIiKSB7Ci0gICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7Ci0gICAgICBpZiAodHky
KSB7Ci0gICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAiY2Ft
bGludGVybmFsRm9ybWF0Lm1sIiwKLSAgICAgICAgICAgICAgICA4MTYsCi0gICAgICAgICAgICAg
ICAgMjMKLSAgICAgICAgICAgICAgXQotICAgICAgICAgICAgXTsKLSAgICAgIH0KLSAgICAgIGVs
c2UgewotICAgICAgICByZXR1cm4gLyogRW5kX29mX2ZtdHR5ICovMDsKLSAgICAgIH0KLSAgICB9
Ci0gICAgZWxzZSB7Ci0gICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7Ci0gICAgICAgIGNhc2Ug
OCA6IAotICAgICAgICAgICAgZXhpdCA9IDY7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSA5IDogCi0gICAgICAgICAgICBleGl0ID0gNzsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIDEwIDogCi0gICAgICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIDExIDogCi0gICAgICAgICAgICBleGl0ID0gMjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIDEyIDogCi0gICAgICAgICAgICBleGl0ID0gMzsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDEzIDogCi0gICAgICAgICAgICBleGl0ID0gNDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDE0IDogCi0gICAgICAgICAgICBleGl0
ID0gNTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgIHRo
cm93IFsKLSAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFp
bHVyZSwKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFs
Rm9ybWF0Lm1sIiwKLSAgICAgICAgICAgICAgICAgIDgxNiwKLSAgICAgICAgICAgICAgICAgIDIz
Ci0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICBdOwotICAgICAgfQotICAgIH0KLSAg
fQotICBlbHNlIHsKLSAgICBzd2l0Y2ggKHR5MS50YWcgfCAwKSB7Ci0gICAgICBjYXNlIDAgOiAK
LSAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIGV4
aXQgPSA4OwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN3aXRj
aCAodHkyLnRhZyB8IDApIHsKLSAgICAgICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogQ2hhcl90eSAqL0Jsb2NrLl9fKDAsIFt0cmFucyh0eTFbMF0sIHR5Mlsw
XSldKTsKLSAgICAgICAgICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgICAgICAgICBleGl0ID0g
NjsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDkgOiAKLSAg
ICAgICAgICAgICAgICAgIGV4aXQgPSA3OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgMTAgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOwotICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTEgOiAKLSAgICAgICAgICAg
ICAgICAgIGV4aXQgPSAyOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgMTIgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOwotICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTMgOiAKLSAgICAgICAgICAgICAgICAgIGV4
aXQgPSA0OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTQg
OiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSA1OwotICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVt
YmVyIikgewotICAgICAgICAgICAgZXhpdCA9IDg7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgewotICAgICAgICAgICAgICBj
YXNlIDEgOiAKLSAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBTdHJpbmdfdHkgKi9CbG9jay5f
XygxLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7Ci0gICAgICAgICAgICAgIGNhc2UgOCA6IAot
ICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSA5IDogCi0gICAgICAgICAgICAgICAgICBleGl0ID0gNzsKLSAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDEwIDogCi0gICAgICAgICAg
ICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICBjYXNlIDExIDogCi0gICAgICAgICAgICAgICAgICBleGl0ID0gMjsKLSAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDEyIDogCi0gICAgICAgICAgICAgICAgICBl
eGl0ID0gMzsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDEz
IDogCi0gICAgICAgICAgICAgICAgICBleGl0ID0gNDsKLSAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICBjYXNlIDE0IDogCi0gICAgICAgICAgICAgICAgICBleGl0ID0gNTsK
LSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDIgOiAKLSAgICAgICAg
ICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIGV4aXQgPSA4Owot
ICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN3aXRjaCAodHkyLnRh
ZyB8IDApIHsKLSAgICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAgICAgICByZXR1
cm4gLyogSW50X3R5ICovQmxvY2suX18oMiwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOwotICAg
ICAgICAgICAgICBjYXNlIDggOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSA2OwotICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgOSA6IAotICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDc7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSAxMCA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMSA6IAotICAgICAgICAgICAgICAgICAgZXhp
dCA9IDI7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMiA6
IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7Ci0gICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgY2FzZSAxMyA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDQ7Ci0g
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxNCA6IAotICAgICAg
ICAgICAgICAgICAgZXhpdCA9IDU7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSAzIDogCi0gICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7Ci0g
ICAgICAgICAgICBleGl0ID0gODsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7Ci0gICAgICAgICAgICAgIGNhc2UgMyA6IAot
ICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEludDMyX3R5ICovQmxvY2suX18oMywgW3RyYW5z
KHR5MVswXSwgdHkyWzBdKV0pOwotICAgICAgICAgICAgICBjYXNlIDggOiAKLSAgICAgICAgICAg
ICAgICAgIGV4aXQgPSA2OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgOSA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDc7Ci0gICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAgICAgICAgICAgZXhp
dCA9IDE7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMSA6
IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7Ci0gICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgY2FzZSAxMiA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7Ci0g
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMyA6IAotICAgICAg
ICAgICAgICAgICAgZXhpdCA9IDQ7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgY2FzZSAxNCA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDU7Ci0gICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAg
fQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgaWYgKHR5cGVv
ZiB0eTIgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICBleGl0ID0gODsKLSAgICAgICAgICB9
Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7Ci0g
ICAgICAgICAgICAgIGNhc2UgNCA6IAotICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIE5hdGl2
ZWludF90eSAqL0Jsb2NrLl9fKDQsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKLSAgICAgICAg
ICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgICAgICAgICBleGl0ID0gNjsKLSAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDkgOiAKLSAgICAgICAgICAgICAgICAg
IGV4aXQgPSA3OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2Ug
MTAgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTEgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSAy
OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTIgOiAKLSAg
ICAgICAgICAgICAgICAgIGV4aXQgPSAzOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgMTMgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OwotICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTQgOiAKLSAgICAgICAgICAg
ICAgICAgIGV4aXQgPSA1OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IAotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgNSA6IAotICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgewotICAgICAg
ICAgICAgZXhpdCA9IDg7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgc3dpdGNoICh0eTIudGFnIHwgMCkgewotICAgICAgICAgICAgICBjYXNlIDUgOiAKLSAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBJbnQ2NF90eSAqL0Jsb2NrLl9fKDUsIFt0cmFucyh0eTFb
MF0sIHR5MlswXSldKTsKLSAgICAgICAgICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgICAgICAg
ICBleGl0ID0gNjsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNl
IDkgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSA3OwotICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTAgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSAx
OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTEgOiAKLSAg
ICAgICAgICAgICAgICAgIGV4aXQgPSAyOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgMTIgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSAzOwotICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTMgOiAKLSAgICAgICAgICAg
ICAgICAgIGV4aXQgPSA0OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgMTQgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSA1OwotICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgNiA6IAotICAgICAgICAgIGlmICh0eXBlb2YgdHky
ID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgZXhpdCA9IDg7Ci0gICAgICAgICAgfQotICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgewotICAgICAg
ICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF90eSAq
L0Jsb2NrLl9fKDYsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKLSAgICAgICAgICAgICAgY2Fz
ZSA4IDogCi0gICAgICAgICAgICAgICAgICBleGl0ID0gNjsKLSAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIDkgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSA3
OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTAgOiAKLSAg
ICAgICAgICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgMTEgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOwotICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTIgOiAKLSAgICAgICAgICAg
ICAgICAgIGV4aXQgPSAzOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgMTMgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OwotICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTQgOiAKLSAgICAgICAgICAgICAgICAgIGV4
aXQgPSA1OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIAotICAgICAg
ICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgNyA6IAot
ICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgZXhp
dCA9IDg7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgc3dpdGNo
ICh0eTIudGFnIHwgMCkgewotICAgICAgICAgICAgICBjYXNlIDcgOiAKLSAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBCb29sX3R5ICovQmxvY2suX18oNywgW3RyYW5zKHR5MVswXSwgdHkyWzBd
KV0pOwotICAgICAgICAgICAgICBjYXNlIDggOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSA2
OwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgOSA6IAotICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDc7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMSA6IAotICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDI7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSAxMiA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7Ci0gICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMyA6IAotICAgICAgICAgICAgICAgICAgZXhp
dCA9IDQ7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxNCA6
IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDU7Ci0gICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09ICJudW1i
ZXIiKSB7Ci0gICAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCi0gICAgICAgICAgICAgICAg
ICAgIDgwMiwKLSAgICAgICAgICAgICAgICAgICAgMjYKLSAgICAgICAgICAgICAgICAgIF0KLSAg
ICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKLSAgICAgICAgICAgICAgY2FzZSA4IDogCi0gICAg
ICAgICAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X2FyZ190eSAqL0Jsb2NrLl9fKDgsIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFucyh0eTFbMF0sIHR5MlswXSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnModHkxWzFdLCB0eTJbMV0pCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgICBjYXNlIDEwIDogCi0gICAgICAgICAgICAg
ICAgICBleGl0ID0gMTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIDExIDogCi0gICAgICAgICAgICAgICAgICBleGl0ID0gMjsKLSAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDEyIDogCi0gICAgICAgICAgICAgICAgICBleGl0
ID0gMzsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDEzIDog
Ci0gICAgICAgICAgICAgICAgICBleGl0ID0gNDsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIDE0IDogCi0gICAgICAgICAgICAgICAgICBleGl0ID0gNTsKLSAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAg
ICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDgwMiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDI2Ci0gICAgICAgICAgICAgICAg
ICAgICAgXQotICAgICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAgfQotICAgICAgICAg
IH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgOSA6IAotICAgICAgICAgIGlmICh0eXBl
b2YgdHkyID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAot
ICAgICAgICAgICAgICAgICAgICA4MTIsCi0gICAgICAgICAgICAgICAgICAgIDI4Ci0gICAgICAg
ICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5Mi50YWcgfCAwKSB7Ci0gICAgICAgICAgICAg
IGNhc2UgOCA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDY7Ci0gICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSA5IDogCi0gICAgICAgICAgICAgICAgICB2YXIg
dHkgPSB0cmFucyhzeW1tKHR5MVsxXSksIHR5MlswXSk7Ci0gICAgICAgICAgICAgICAgICB2YXIg
bWF0Y2ggPSBmbXR0eV9yZWxfZGV0KHR5KTsKLSAgICAgICAgICAgICAgICAgIEN1cnJ5Ll8xKG1h
dGNoWzFdLCAvKiBSZWZsICovMCk7Ci0gICAgICAgICAgICAgICAgICBDdXJyeS5fMShtYXRjaFsz
XSwgLyogUmVmbCAqLzApOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9zdWJz
dF90eSAqL0Jsb2NrLl9fKDksIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eTFbMF0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkyWzFdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYW5zKHR5MVsyXSwgdHkyWzJdKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICBdKTsKLSAgICAgICAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9
IDE7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMSA6IAot
ICAgICAgICAgICAgICAgICAgZXhpdCA9IDI7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgY2FzZSAxMiA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7Ci0gICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMyA6IAotICAgICAgICAg
ICAgICAgICAgZXhpdCA9IDQ7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgY2FzZSAxNCA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDU7Ci0gICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICB0aHJv
dyBbCi0gICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0
X2ZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICA4MTIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAyOAotICAgICAgICAgICAgICAgICAgICAgIF0KLSAg
ICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIDEwIDogCi0gICAgICAgICAgaWYgKHR5cGVvZiB0eTIgPT09
ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgICBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCi0gICAgICAgICAg
ICAgICAgICAgIDc4MCwKLSAgICAgICAgICAgICAgICAgICAgMjEKLSAgICAgICAgICAgICAgICAg
IF0KLSAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmICh0
eTIudGFnID09PSAxMCkgewotICAgICAgICAgICAgcmV0dXJuIC8qIEFscGhhX3R5ICovQmxvY2su
X18oMTAsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCi0gICAgICAgICAgICAgICAg
ICAgIDc4MCwKLSAgICAgICAgICAgICAgICAgICAgMjEKLSAgICAgICAgICAgICAgICAgIF0KLSAg
ICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgMTEgOiAKLSAgICAgICAgICBpZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKLSAgICAg
ICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKLSAgICAgICAgICAgICAgICAgICAgNzg0LAotICAg
ICAgICAgICAgICAgICAgICAyMQotICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAg
IF07Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgc3dpdGNoICh0
eTIudGFnIHwgMCkgewotICAgICAgICAgICAgICBjYXNlIDEwIDogCi0gICAgICAgICAgICAgICAg
ICBleGl0ID0gMTsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNl
IDExIDogCi0gICAgICAgICAgICAgICAgICByZXR1cm4gLyogVGhldGFfdHkgKi9CbG9jay5fXygx
MSwgW3RyYW5zKHR5MVswXSwgdHkyWzBdKV0pOwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIDc4NCwKLSAgICAgICAgICAgICAgICAgICAgICAgIDIxCi0gICAgICAgICAg
ICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAgfQotICAg
ICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMTIgOiAKLSAgICAgICAgICBp
ZiAodHlwZW9mIHR5MiA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIHRocm93IFsKLSAgICAg
ICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAg
ICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0
Lm1sIiwKLSAgICAgICAgICAgICAgICAgICAgNzg4LAotICAgICAgICAgICAgICAgICAgICAxOQot
ICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgfQotICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgc3dpdGNoICh0eTIudGFnIHwgMCkgewotICAgICAg
ICAgICAgICBjYXNlIDEwIDogCi0gICAgICAgICAgICAgICAgICBleGl0ID0gMTsKLSAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDExIDogCi0gICAgICAgICAgICAg
ICAgICBleGl0ID0gMjsKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIDEyIDogCi0gICAgICAgICAgICAgICAgICByZXR1cm4gLyogQW55X3R5ICovQmxvY2suX18o
MTIsIFt0cmFucyh0eTFbMF0sIHR5MlswXSldKTsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICA3ODgsCi0gICAgICAgICAgICAgICAgICAgICAgICAxOQotICAgICAgICAg
ICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDEzIDogCi0gICAgICAgICAg
aWYgKHR5cGVvZiB0eTIgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICB0aHJvdyBbCi0gICAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAg
ICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1h
dC5tbCIsCi0gICAgICAgICAgICAgICAgICAgIDc5MiwKLSAgICAgICAgICAgICAgICAgICAgMjIK
LSAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN3aXRjaCAodHkyLnRhZyB8IDApIHsKLSAgICAg
ICAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMSA6IAotICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDI7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
Y2FzZSAxMiA6IAotICAgICAgICAgICAgICAgICAgZXhpdCA9IDM7Ci0gICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAxMyA6IAotICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbdHJhbnModHkxWzBdLCB0eTJbMF0pXSk7
Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgdGhyb3cgWwotICAgICAg
ICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAot
ICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW1saW50
ZXJuYWxGb3JtYXQubWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgNzkyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgMjIKLSAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAg
ICAgICAgIF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSAxNCA6IAotICAgICAgICAgIGlmICh0eXBlb2YgdHkyID09PSAibnVtYmVyIikg
ewotICAgICAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAg
ICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAotICAgICAgICAgICAgICAgICAgICA3
OTcsCi0gICAgICAgICAgICAgICAgICAgIDMwCi0gICAgICAgICAgICAgICAgICBdCi0gICAgICAg
ICAgICAgICAgXTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBz
d2l0Y2ggKHR5Mi50YWcgfCAwKSB7Ci0gICAgICAgICAgICAgIGNhc2UgMTAgOiAKLSAgICAgICAg
ICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2UgMTEgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSAyOwotICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTIgOiAKLSAgICAgICAgICAgICAgICAg
IGV4aXQgPSAzOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2Ug
MTMgOiAKLSAgICAgICAgICAgICAgICAgIGV4aXQgPSA0OwotICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIGNhc2UgMTQgOiAKLSAgICAgICAgICAgICAgICAgIHJldHVybiAv
KiBJZ25vcmVkX3JlYWRlcl90eSAqL0Jsb2NrLl9fKDE0LCBbdHJhbnModHkxWzBdLCB0eTJbMF0p
XSk7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgdGhyb3cgWwotICAg
ICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJl
LAotICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW1s
aW50ZXJuYWxGb3JtYXQubWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgNzk3LAotICAgICAg
ICAgICAgICAgICAgICAgICAgMzAKLSAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAg
ICAgICAgICAgIF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFr
OwotICAgICAgCi0gICAgfQotICB9Ci0gIHN3aXRjaCAoZXhpdCkgewotICAgIGNhc2UgMSA6IAot
ICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAotICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgImNhbWxpbnRl
cm5hbEZvcm1hdC5tbCIsCi0gICAgICAgICAgICAgICAgNzgxLAotICAgICAgICAgICAgICAgIDIx
Ci0gICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIF07Ci0gICAgY2FzZSAyIDogCi0gICAgICAg
IHRocm93IFsKLSAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2Zh
aWx1cmUsCi0gICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9y
bWF0Lm1sIiwKLSAgICAgICAgICAgICAgICA3ODUsCi0gICAgICAgICAgICAgICAgMjEKLSAgICAg
ICAgICAgICAgXQotICAgICAgICAgICAgXTsKLSAgICBjYXNlIDMgOiAKLSAgICAgICAgdGhyb3cg
WwotICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwK
LSAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwi
LAotICAgICAgICAgICAgICAgIDc4OSwKLSAgICAgICAgICAgICAgICAxOQotICAgICAgICAgICAg
ICBdCi0gICAgICAgICAgICBdOwotICAgIGNhc2UgNCA6IAotICAgICAgICB0aHJvdyBbCi0gICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCi0gICAg
ICAgICAgICAgICAgNzkzLAotICAgICAgICAgICAgICAgIDIyCi0gICAgICAgICAgICAgIF0KLSAg
ICAgICAgICAgIF07Ci0gICAgY2FzZSA1IDogCi0gICAgICAgIHRocm93IFsKLSAgICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKLSAgICAgICAgICAg
ICAgICA3OTgsCi0gICAgICAgICAgICAgICAgMzAKLSAgICAgICAgICAgICAgXQotICAgICAgICAg
ICAgXTsKLSAgICBjYXNlIDYgOiAKLSAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAotICAgICAgICAgICAgICAgIDgw
MywKLSAgICAgICAgICAgICAgICAyNgotICAgICAgICAgICAgICBdCi0gICAgICAgICAgICBdOwot
ICAgIGNhc2UgNyA6IAotICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAgICBbCi0gICAgICAgICAg
ICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCi0gICAgICAgICAgICAgICAgODEzLAotICAg
ICAgICAgICAgICAgIDI4Ci0gICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIF07Ci0gICAgY2Fz
ZSA4IDogCi0gICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAi
Y2FtbGludGVybmFsRm9ybWF0Lm1sIiwKLSAgICAgICAgICAgICAgICA4MTcsCi0gICAgICAgICAg
ICAgICAgMjMKLSAgICAgICAgICAgICAgXQotICAgICAgICAgICAgXTsKLSAgICAKLSAgfQotfQot
Ci1mdW5jdGlvbiBmbXR0eV9vZl9mb3JtYXR0aW5nX2dlbihmb3JtYXR0aW5nX2dlbikgewotICBy
ZXR1cm4gZm10dHlfb2ZfZm10KGZvcm1hdHRpbmdfZ2VuWzBdWzBdKTsKLX0KLQotZnVuY3Rpb24g
Zm10dHlfb2ZfZm10KF9mbXR0eSkgewotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIGZtdHR5ID0g
X2ZtdHR5OwotICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Ci0gICAgICByZXR1
cm4gLyogRW5kX29mX2ZtdHR5ICovMDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBzd2l0Y2gg
KGZtdHR5LnRhZyB8IDApIHsKLSAgICAgICAgY2FzZSAyIDogCi0gICAgICAgIGNhc2UgMyA6IAot
ICAgICAgICAgICAgcmV0dXJuIGZtdHR5X29mX3BhZGRpbmdfZm10dHkoZm10dHlbMF0sIC8qIFN0
cmluZ190eSAqL0Jsb2NrLl9fKDEsIFtmbXR0eV9vZl9mbXQoZm10dHlbMV0pXSkpOwotICAgICAg
ICBjYXNlIDQgOiAKLSAgICAgICAgICAgIHZhciB0eV9yZXN0ID0gZm10dHlfb2ZfZm10KGZtdHR5
WzNdKTsKLSAgICAgICAgICAgIHZhciBwcmVjX3R5ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5
KGZtdHR5WzJdLCAvKiBJbnRfdHkgKi9CbG9jay5fXygyLCBbdHlfcmVzdF0pKTsKLSAgICAgICAg
ICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5KGZtdHR5WzFdLCBwcmVjX3R5KTsKLSAg
ICAgICAgY2FzZSA1IDogCi0gICAgICAgICAgICB2YXIgdHlfcmVzdCQxID0gZm10dHlfb2ZfZm10
KGZtdHR5WzNdKTsKLSAgICAgICAgICAgIHZhciBwcmVjX3R5JDEgPSBmbXR0eV9vZl9wcmVjaXNp
b25fZm10dHkoZm10dHlbMl0sIC8qIEludDMyX3R5ICovQmxvY2suX18oMywgW3R5X3Jlc3QkMV0p
KTsKLSAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5nX2ZtdHR5KGZtdHR5WzFdLCBw
cmVjX3R5JDEpOwotICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAgIHZhciB0eV9yZXN0JDIg
PSBmbXR0eV9vZl9mbXQoZm10dHlbM10pOwotICAgICAgICAgICAgdmFyIHByZWNfdHkkMiA9IGZt
dHR5X29mX3ByZWNpc2lvbl9mbXR0eShmbXR0eVsyXSwgLyogTmF0aXZlaW50X3R5ICovQmxvY2su
X18oNCwgW3R5X3Jlc3QkMl0pKTsKLSAgICAgICAgICAgIHJldHVybiBmbXR0eV9vZl9wYWRkaW5n
X2ZtdHR5KGZtdHR5WzFdLCBwcmVjX3R5JDIpOwotICAgICAgICBjYXNlIDcgOiAKLSAgICAgICAg
ICAgIHZhciB0eV9yZXN0JDMgPSBmbXR0eV9vZl9mbXQoZm10dHlbM10pOwotICAgICAgICAgICAg
dmFyIHByZWNfdHkkMyA9IGZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eShmbXR0eVsyXSwgLyogSW50
NjRfdHkgKi9CbG9jay5fXyg1LCBbdHlfcmVzdCQzXSkpOwotICAgICAgICAgICAgcmV0dXJuIGZt
dHR5X29mX3BhZGRpbmdfZm10dHkoZm10dHlbMV0sIHByZWNfdHkkMyk7Ci0gICAgICAgIGNhc2Ug
OCA6IAotICAgICAgICAgICAgdmFyIHR5X3Jlc3QkNCA9IGZtdHR5X29mX2ZtdChmbXR0eVszXSk7
Ci0gICAgICAgICAgICB2YXIgcHJlY190eSQ0ID0gZm10dHlfb2ZfcHJlY2lzaW9uX2ZtdHR5KGZt
dHR5WzJdLCAvKiBGbG9hdF90eSAqL0Jsb2NrLl9fKDYsIFt0eV9yZXN0JDRdKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZm10dHlfb2ZfcGFkZGluZ19mbXR0eShmbXR0eVsxXSwgcHJlY190eSQ0KTsK
LSAgICAgICAgY2FzZSA5IDogCi0gICAgICAgICAgICByZXR1cm4gLyogQm9vbF90eSAqL0Jsb2Nr
Ll9fKDcsIFtmbXR0eV9vZl9mbXQoZm10dHlbMF0pXSk7Ci0gICAgICAgIGNhc2UgMTAgOiAKLSAg
ICAgICAgICAgIF9mbXR0eSA9IGZtdHR5WzBdOwotICAgICAgICAgICAgY29udGludWUgOwotICAg
ICAgICAgICAgY2FzZSAxMyA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIEZvcm1hdF9hcmdfdHkg
Ki9CbG9jay5fXyg4LCBbCi0gICAgICAgICAgICAgICAgICAgICAgZm10dHlbMV0sCi0gICAgICAg
ICAgICAgICAgICAgICAgZm10dHlfb2ZfZm10KGZtdHR5WzJdKQotICAgICAgICAgICAgICAgICAg
ICBdKTsKLSAgICAgICAgY2FzZSAxNCA6IAotICAgICAgICAgICAgdmFyIHR5ID0gZm10dHlbMV07
Ci0gICAgICAgICAgICByZXR1cm4gLyogRm9ybWF0X3N1YnN0X3R5ICovQmxvY2suX18oOSwgWwot
ICAgICAgICAgICAgICAgICAgICAgIHR5LAotICAgICAgICAgICAgICAgICAgICAgIHR5LAotICAg
ICAgICAgICAgICAgICAgICAgIGZtdHR5X29mX2ZtdChmbXR0eVsyXSkKLSAgICAgICAgICAgICAg
ICAgICAgXSk7Ci0gICAgICAgIGNhc2UgMTUgOiAKLSAgICAgICAgICAgIHJldHVybiAvKiBBbHBo
YV90eSAqL0Jsb2NrLl9fKDEwLCBbZm10dHlfb2ZfZm10KGZtdHR5WzBdKV0pOwotICAgICAgICBj
YXNlIDE2IDogCi0gICAgICAgICAgICByZXR1cm4gLyogVGhldGFfdHkgKi9CbG9jay5fXygxMSwg
W2ZtdHR5X29mX2ZtdChmbXR0eVswXSldKTsKLSAgICAgICAgY2FzZSAxMSA6IAotICAgICAgICBj
YXNlIDEyIDogCi0gICAgICAgIGNhc2UgMTcgOiAKLSAgICAgICAgICAgIF9mbXR0eSA9IGZtdHR5
WzFdOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSAxOCA6IAotICAg
ICAgICAgICAgcmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5jb25jYXRfZm10dHkoZm10
dHlfb2ZfZm9ybWF0dGluZ19nZW4oZm10dHlbMF0pLCBmbXR0eV9vZl9mbXQoZm10dHlbMV0pKTsK
LSAgICAgICAgY2FzZSAxOSA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIFJlYWRlcl90eSAqL0Js
b2NrLl9fKDEzLCBbZm10dHlfb2ZfZm10KGZtdHR5WzBdKV0pOwotICAgICAgICBjYXNlIDIwIDog
Ci0gICAgICAgICAgICByZXR1cm4gLyogU3RyaW5nX3R5ICovQmxvY2suX18oMSwgW2ZtdHR5X29m
X2ZtdChmbXR0eVsyXSldKTsKLSAgICAgICAgY2FzZSAyMSA6IAotICAgICAgICAgICAgcmV0dXJu
IC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFtmbXR0eV9vZl9mbXQoZm10dHlbMV0pXSk7Ci0gICAg
ICAgIGNhc2UgMCA6IAotICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgY2FzZSAyMiA6IAotICAg
ICAgICAgICAgcmV0dXJuIC8qIENoYXJfdHkgKi9CbG9jay5fXygwLCBbZm10dHlfb2ZfZm10KGZt
dHR5WzBdKV0pOwotICAgICAgICBjYXNlIDIzIDogCi0gICAgICAgICAgICB2YXIgaWduID0gZm10
dHlbMF07Ci0gICAgICAgICAgICB2YXIgZm10ID0gZm10dHlbMV07Ci0gICAgICAgICAgICBpZiAo
dHlwZW9mIGlnbiA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgICAgc3dpdGNoIChpZ24pIHsK
LSAgICAgICAgICAgICAgICBjYXNlIDMgOiAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IElnbm9yZWRfcmVhZGVyX3R5ICovQmxvY2suX18oMTQsIFtmbXR0eV9vZl9mbXQoZm10KV0pOwot
ICAgICAgICAgICAgICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgICAgIGNhc2UgMSA6IAotICAg
ICAgICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgICAgIGNhc2UgNCA6IAotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZm10dHlfb2ZfZm10KGZtdCk7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICBzd2l0Y2ggKGlnbi50YWcgfCAwKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSA4
IDogCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3Mu
Y29uY2F0X2ZtdHR5KGlnblsxXSwgZm10dHlfb2ZfZm10KGZtdCkpOwotICAgICAgICAgICAgICAg
IGNhc2UgMCA6IAotICAgICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgIGNh
c2UgMiA6IAotICAgICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgICAgIGNhc2Ug
NCA6IAotICAgICAgICAgICAgICAgIGNhc2UgNSA6IAotICAgICAgICAgICAgICAgIGNhc2UgNiA6
IAotICAgICAgICAgICAgICAgIGNhc2UgNyA6IAotICAgICAgICAgICAgICAgIGNhc2UgOSA6IAot
ICAgICAgICAgICAgICAgIGNhc2UgMTAgOiAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZt
dHR5X29mX2ZtdChmbXQpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgMjQgOiAKLSAgICAgICAgICAgIHJldHVybiBmbXR0eV9v
Zl9jdXN0b20oZm10dHlbMF0sIGZtdHR5X29mX2ZtdChmbXR0eVsyXSkpOwotICAgICAgICAKLSAg
ICAgIH0KLSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIGZtdHR5X29mX2N1c3RvbShhcml0eSwg
Zm10dHkpIHsKLSAgaWYgKGFyaXR5KSB7Ci0gICAgcmV0dXJuIC8qIEFueV90eSAqL0Jsb2NrLl9f
KDEyLCBbZm10dHlfb2ZfY3VzdG9tKGFyaXR5WzBdLCBmbXR0eSldKTsKLSAgfQotICBlbHNlIHsK
LSAgICByZXR1cm4gZm10dHk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gZm10dHlfb2ZfcGFkZGluZ19m
bXR0eShwYWQsIGZtdHR5KSB7Ci0gIGlmICh0eXBlb2YgcGFkID09PSAibnVtYmVyIiB8fCAhcGFk
LnRhZykgewotICAgIHJldHVybiBmbXR0eTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyog
SW50X3R5ICovQmxvY2suX18oMiwgW2ZtdHR5XSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gZm10dHlf
b2ZfcHJlY2lzaW9uX2ZtdHR5KHByZWMsIGZtdHR5KSB7Ci0gIGlmICh0eXBlb2YgcHJlYyA9PT0g
Im51bWJlciIgJiYgcHJlYyAhPT0gMCkgewotICAgIHJldHVybiAvKiBJbnRfdHkgKi9CbG9jay5f
XygyLCBbZm10dHldKTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gZm10dHk7Ci0gIH0KLX0K
LQotdmFyIFR5cGVfbWlzbWF0Y2ggPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJDYW1saW50ZXJu
YWxGb3JtYXQuVHlwZV9taXNtYXRjaCIpOwotCi1mdW5jdGlvbiB0eXBlX3BhZGRpbmcocGFkLCBm
bXR0eSkgewotICBpZiAodHlwZW9mIHBhZCA9PT0gIm51bWJlciIpIHsKLSAgICByZXR1cm4gLyog
UGFkZGluZ19mbXR0eV9FQkIgKi9bCi0gICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKLSAg
ICAgICAgICAgIGZtdHR5Ci0gICAgICAgICAgXTsKLSAgfQotICBlbHNlIGlmIChwYWQudGFnKSB7
Ci0gICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKLSAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7Ci0gICAgfQotICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMikgewotICAgICAg
cmV0dXJuIC8qIFBhZGRpbmdfZm10dHlfRUJCICovWwotICAgICAgICAgICAgICAvKiBBcmdfcGFk
ZGluZyAqL0Jsb2NrLl9fKDEsIFtwYWRbMF1dKSwKLSAgICAgICAgICAgICAgZm10dHlbMF0KLSAg
ICAgICAgICAgIF07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdGhyb3cgVHlwZV9taXNtYXRj
aDsKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIFBhZGRpbmdfZm10dHlfRUJC
ICovWwotICAgICAgICAgICAgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCi0gICAgICAg
ICAgICAgICAgcGFkWzBdLAotICAgICAgICAgICAgICAgIHBhZFsxXQotICAgICAgICAgICAgICBd
KSwKLSAgICAgICAgICAgIGZtdHR5Ci0gICAgICAgICAgXTsKLSAgfQotfQotCi1mdW5jdGlvbiB0
eXBlX3BhZHByZWMocGFkLCBwcmVjLCBmbXR0eSkgewotICB2YXIgbWF0Y2ggPSB0eXBlX3BhZGRp
bmcocGFkLCBmbXR0eSk7Ci0gIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51bWJlciIpIHsKLSAgICBp
ZiAocHJlYyAhPT0gMCkgewotICAgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFsxXTsKLSAgICAgIGlm
ICh0eXBlb2YgbWF0Y2gkMSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKG1hdGNoJDEudGFnID09PSAyKSB7Ci0gICAg
ICAgIHJldHVybiAvKiBQYWRwcmVjX2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICBtYXRj
aFswXSwKLSAgICAgICAgICAgICAgICAvKiBBcmdfcHJlY2lzaW9uICovMSwKLSAgICAgICAgICAg
ICAgICBtYXRjaCQxWzBdCi0gICAgICAgICAgICAgIF07Ci0gICAgICB9Ci0gICAgICBlbHNlIHsK
LSAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7
Ci0gICAgICByZXR1cm4gLyogUGFkcHJlY19mbXR0eV9FQkIgKi9bCi0gICAgICAgICAgICAgIG1h
dGNoWzBdLAotICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAotICAgICAgICAgICAg
ICBtYXRjaFsxXQotICAgICAgICAgICAgXTsKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0
dXJuIC8qIFBhZHByZWNfZm10dHlfRUJCICovWwotICAgICAgICAgICAgbWF0Y2hbMF0sCi0gICAg
ICAgICAgICAvKiBMaXRfcHJlY2lzaW9uICovW3ByZWNbMF1dLAotICAgICAgICAgICAgbWF0Y2hb
MV0KLSAgICAgICAgICBdOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHR5cGVfaWdub3JlZF9wYXJhbV9v
bmUoaWduLCBmbXQsIGZtdHR5KSB7Ci0gIHZhciBtYXRjaCA9IHR5cGVfZm9ybWF0X2dlbihmbXQs
IGZtdHR5KTsKLSAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCi0gICAgICAgICAgLyogSWdu
b3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCi0gICAgICAgICAgICAgIGlnbiwKLSAgICAgICAg
ICAgICAgbWF0Y2hbMF0KLSAgICAgICAgICAgIF0pLAotICAgICAgICAgIG1hdGNoWzFdCi0gICAg
ICAgIF07Ci19Ci0KLWZ1bmN0aW9uIHR5cGVfZm9ybWF0X2dlbihmbXQsIGZtdHR5KSB7Ci0gIGlm
ICh0eXBlb2YgZm10ID09PSAibnVtYmVyIikgewotICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJC
ICovWwotICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAsCi0gICAgICAgICAgICBmbXR0
eQotICAgICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgc3dpdGNoIChmbXQudGFnIHwgMCkg
ewotICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJl
ciIpIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAg
ICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZykgewotICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNt
YXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgbWF0
Y2ggPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzBdLCBmbXR0eVswXSk7Ci0gICAgICAgICAgICByZXR1
cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogQ2hhciAqL0Js
b2NrLl9fKDAsIFttYXRjaFswXV0pLAotICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXQotICAg
ICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIDEgOiAKLSAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewotICAg
ICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxz
ZSBpZiAoZm10dHkudGFnKSB7Ci0gICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAg
ICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCQxID0gdHlw
ZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10dHlbMF0pOwotICAgICAgICAgICAgcmV0dXJuIC8qIEZt
dF9mbXR0eV9FQkIgKi9bCi0gICAgICAgICAgICAgICAgICAgIC8qIENhbWxfY2hhciAqL0Jsb2Nr
Ll9fKDEsIFttYXRjaCQxWzBdXSksCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDFbMV0KLSAg
ICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSAyIDogCi0gICAgICAgICAgdmFyIG1hdGNoJDIgPSB0eXBlX3BhZGRpbmcoZm10WzBdLCBm
bXR0eSk7Ci0gICAgICAgICAgdmFyIG1hdGNoJDMgPSBtYXRjaCQyWzFdOwotICAgICAgICAgIGlm
ICh0eXBlb2YgbWF0Y2gkMyA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDMudGFnID09
PSAxKSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMV0s
IG1hdGNoJDNbMF0pOwotICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCi0g
ICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZyAqL0Jsb2NrLl9fKDIsIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1hdGNoJDJbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0
WzBdCi0gICAgICAgICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAgIG1hdGNo
JDRbMV0KLSAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIDMgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkNSA9IHR5cGVf
cGFkZGluZyhmbXRbMF0sIGZtdHR5KTsKLSAgICAgICAgICB2YXIgbWF0Y2gkNiA9IG1hdGNoJDVb
MV07Ci0gICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQ2ID09PSAibnVtYmVyIikgewotICAgICAg
ICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBp
ZiAobWF0Y2gkNi50YWcgPT09IDEpIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCQ3ID0gdHlwZV9m
b3JtYXRfZ2VuKGZtdFsxXSwgbWF0Y2gkNlswXSk7Ci0gICAgICAgICAgICByZXR1cm4gLyogRm10
X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9j
ay5fXygzLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ1WzBdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkN1swXQotICAgICAgICAgICAgICAgICAgICAgIF0pLAotICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQ3WzFdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAg
ICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7
Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA0IDogCi0gICAgICAg
ICAgdmFyIG1hdGNoJDggPSB0eXBlX3BhZHByZWMoZm10WzFdLCBmbXRbMl0sIGZtdHR5KTsKLSAg
ICAgICAgICB2YXIgbWF0Y2gkOSA9IG1hdGNoJDhbMl07Ci0gICAgICAgICAgaWYgKHR5cGVvZiBt
YXRjaCQ5ID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsK
LSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAobWF0Y2gkOS50YWcgPT09IDIpIHsKLSAg
ICAgICAgICAgIHZhciBtYXRjaCQxMCA9IHR5cGVfZm9ybWF0X2dlbihmbXRbM10sIG1hdGNoJDlb
MF0pOwotICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCi0gICAgICAgICAg
ICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZtdFswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDhbMF0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQ4WzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gk
MTBbMF0KLSAgICAgICAgICAgICAgICAgICAgICBdKSwKLSAgICAgICAgICAgICAgICAgICAgbWF0
Y2gkMTBbMV0KLSAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgfQotICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDUgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkMTEgPSB0
eXBlX3BhZHByZWMoZm10WzFdLCBmbXRbMl0sIGZtdHR5KTsKLSAgICAgICAgICB2YXIgbWF0Y2gk
MTIgPSBtYXRjaCQxMVsyXTsKLSAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDEyID09PSAibnVt
YmVyIikgewotICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMTIudGFnID09PSAzKSB7Ci0gICAgICAgICAgICB2YXIg
bWF0Y2gkMTMgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzNdLCBtYXRjaCQxMlswXSk7Ci0gICAgICAg
ICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyog
SW50MzIgKi9CbG9jay5fXyg1LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMVswXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDExWzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTNbMF0KLSAg
ICAgICAgICAgICAgICAgICAgICBdKSwKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTNbMV0K
LSAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIDYgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkMTQgPSB0eXBlX3BhZHBy
ZWMoZm10WzFdLCBmbXRbMl0sIGZtdHR5KTsKLSAgICAgICAgICB2YXIgbWF0Y2gkMTUgPSBtYXRj
aCQxNFsyXTsKLSAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDE1ID09PSAibnVtYmVyIikgewot
ICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
ZWxzZSBpZiAobWF0Y2gkMTUudGFnID09PSA0KSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMTYg
PSB0eXBlX2Zvcm1hdF9nZW4oZm10WzNdLCBtYXRjaCQxNVswXSk7Ci0gICAgICAgICAgICByZXR1
cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogTmF0aXZlaW50
ICovQmxvY2suX18oNiwgWwotICAgICAgICAgICAgICAgICAgICAgICAgZm10WzBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0Y2gkMTRbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBt
YXRjaCQxNFsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE2WzBdCi0gICAgICAg
ICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDE2WzFdCi0gICAg
ICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSA3IDogCi0gICAgICAgICAgdmFyIG1hdGNoJDE3ID0gdHlwZV9wYWRwcmVjKGZt
dFsxXSwgZm10WzJdLCBmbXR0eSk7Ci0gICAgICAgICAgdmFyIG1hdGNoJDE4ID0gbWF0Y2gkMTdb
Ml07Ci0gICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQxOCA9PT0gIm51bWJlciIpIHsKLSAgICAg
ICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2Ug
aWYgKG1hdGNoJDE4LnRhZyA9PT0gNSkgewotICAgICAgICAgICAgdmFyIG1hdGNoJDE5ID0gdHlw
ZV9mb3JtYXRfZ2VuKGZtdFszXSwgbWF0Y2gkMThbMF0pOwotICAgICAgICAgICAgcmV0dXJuIC8q
IEZtdF9mbXR0eV9FQkIgKi9bCi0gICAgICAgICAgICAgICAgICAgIC8qIEludDY0ICovQmxvY2su
X18oNywgWwotICAgICAgICAgICAgICAgICAgICAgICAgZm10WzBdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2gkMTdbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQxN1sx
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDE5WzBdCi0gICAgICAgICAgICAgICAg
ICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDE5WzFdCi0gICAgICAgICAgICAg
ICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93
IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSA4IDogCi0gICAgICAgICAgdmFyIG1hdGNoJDIwID0gdHlwZV9wYWRwcmVjKGZtdFsxXSwgZm10
WzJdLCBmbXR0eSk7Ci0gICAgICAgICAgdmFyIG1hdGNoJDIxID0gbWF0Y2gkMjBbMl07Ci0gICAg
ICAgICAgaWYgKHR5cGVvZiBtYXRjaCQyMSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKG1hdGNo
JDIxLnRhZyA9PT0gNikgewotICAgICAgICAgICAgdmFyIG1hdGNoJDIyID0gdHlwZV9mb3JtYXRf
Z2VuKGZtdFszXSwgbWF0Y2gkMjFbMF0pOwotICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0
eV9FQkIgKi9bCi0gICAgICAgICAgICAgICAgICAgIC8qIEZsb2F0ICovQmxvY2suX18oOCwgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgZm10WzBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkMjBbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMFsxXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoJDIyWzBdCi0gICAgICAgICAgICAgICAgICAgICAgXSks
Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDIyWzFdCi0gICAgICAgICAgICAgICAgICBdOwot
ICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlz
bWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA5IDogCi0g
ICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIHRo
cm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGZtdHR5
LnRhZyA9PT0gNykgewotICAgICAgICAgICAgdmFyIG1hdGNoJDIzID0gdHlwZV9mb3JtYXRfZ2Vu
KGZtdFswXSwgZm10dHlbMF0pOwotICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIg
Ki9bCi0gICAgICAgICAgICAgICAgICAgIC8qIEJvb2wgKi9CbG9jay5fXyg5LCBbbWF0Y2gkMjNb
MF1dKSwKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjNbMV0KLSAgICAgICAgICAgICAgICAg
IF07Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGhyb3cgVHlw
ZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDEw
IDogCi0gICAgICAgICAgdmFyIG1hdGNoJDI0ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFswXSwgZm10
dHkpOwotICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWwotICAgICAgICAgICAg
ICAgICAgLyogRmx1c2ggKi9CbG9jay5fXygxMCwgW21hdGNoJDI0WzBdXSksCi0gICAgICAgICAg
ICAgICAgICBtYXRjaCQyNFsxXQotICAgICAgICAgICAgICAgIF07Ci0gICAgICBjYXNlIDExIDog
Ci0gICAgICAgICAgdmFyIG1hdGNoJDI1ID0gdHlwZV9mb3JtYXRfZ2VuKGZtdFsxXSwgZm10dHkp
OwotICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJCICovWwotICAgICAgICAgICAgICAg
ICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAg
ICAgIGZtdFswXSwKLSAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQyNVswXQotICAgICAgICAg
ICAgICAgICAgICBdKSwKLSAgICAgICAgICAgICAgICAgIG1hdGNoJDI1WzFdCi0gICAgICAgICAg
ICAgICAgXTsKLSAgICAgIGNhc2UgMTIgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkMjYgPSB0eXBl
X2Zvcm1hdF9nZW4oZm10WzFdLCBmbXR0eSk7Ci0gICAgICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0
eV9FQkIgKi9bCi0gICAgICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9CbG9jay5fXygx
MiwgWwotICAgICAgICAgICAgICAgICAgICAgIGZtdFswXSwKLSAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaCQyNlswXQotICAgICAgICAgICAgICAgICAgICBdKSwKLSAgICAgICAgICAgICAgICAg
IG1hdGNoJDI2WzFdCi0gICAgICAgICAgICAgICAgXTsKLSAgICAgIGNhc2UgMTMgOiAKLSAgICAg
ICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgdGhyb3cg
VHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFn
ID09PSA4KSB7Ci0gICAgICAgICAgICB2YXIgc3ViX2ZtdHR5JHByaW1lID0gZm10dHlbMF07Ci0g
ICAgICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBGbXR0eV9FQkIgKi9bZm10
WzFdXSwgLyogRm10dHlfRUJCICovW3N1Yl9mbXR0eSRwcmltZV0pKSB7Ci0gICAgICAgICAgICAg
IHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgbWF0
Y2gkMjcgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzJdLCBmbXR0eVsxXSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0
X2FyZyAqL0Jsb2NrLl9fKDEzLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICBzdWJfZm10dHkkcHJpbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQyN1swXQotICAgICAgICAgICAgICAgICAgICAgIF0pLAotICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQyN1sxXQotICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICB9
Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAg
ICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMTQgOiAKLSAgICAgICAgICBp
ZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgdGhyb3cgVHlwZV9t
aXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSA5
KSB7Ci0gICAgICAgICAgICB2YXIgc3ViX2ZtdHR5MSA9IGZtdHR5WzBdOwotICAgICAgICAgICAg
aWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyogRm10dHlfRUJCICovW0NhbWxpbnRlcm5hbEZv
cm1hdEJhc2ljcy5lcmFzZV9yZWwoZm10WzFdKV0sIC8qIEZtdHR5X0VCQiAqL1tDYW1saW50ZXJu
YWxGb3JtYXRCYXNpY3MuZXJhc2VfcmVsKHN1Yl9mbXR0eTEpXSkpIHsKLSAgICAgICAgICAgICAg
dGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBtYXRj
aCQyOCA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMl0sIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5l
cmFzZV9yZWwoZm10dHlbMl0pKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJC
ICovWwotICAgICAgICAgICAgICAgICAgICAvKiBGb3JtYXRfc3Vic3QgKi9CbG9jay5fXygxNCwg
WwotICAgICAgICAgICAgICAgICAgICAgICAgZm10WzBdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgc3ViX2ZtdHR5MSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDI4WzBdCi0gICAg
ICAgICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDI4WzFdCi0g
ICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSAxNSA6IAotICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1i
ZXIiKSB7Ci0gICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDEwKSB7Ci0gICAgICAgICAgICB2YXIgbWF0
Y2gkMjkgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzBdLCBmbXR0eVswXSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogQWxwaGEg
Ki9CbG9jay5fXygxNSwgW21hdGNoJDI5WzBdXSksCi0gICAgICAgICAgICAgICAgICAgIG1hdGNo
JDI5WzFdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSAxNiA6IAotICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkg
PT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAg
ICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDExKSB7Ci0gICAgICAgICAg
ICB2YXIgbWF0Y2gkMzAgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzBdLCBmbXR0eVswXSk7Ci0gICAg
ICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAg
LyogVGhldGEgKi9CbG9jay5fXygxNiwgW21hdGNoJDMwWzBdXSksCi0gICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDMwWzFdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAg
fQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAxNyA6IAotICAgICAgICAgIHZhciBtYXRj
aCQzMSA9IHR5cGVfZm9ybWF0X2dlbihmbXRbMV0sIGZtdHR5KTsKLSAgICAgICAgICByZXR1cm4g
LyogRm10X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgIC8qIEZvcm1hdHRpbmdfbGl0
ICovQmxvY2suX18oMTcsIFsKLSAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCi0gICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkMzFbMF0KLSAgICAgICAgICAgICAgICAgICAgXSksCi0gICAg
ICAgICAgICAgICAgICBtYXRjaCQzMVsxXQotICAgICAgICAgICAgICAgIF07Ci0gICAgICBjYXNl
IDE4IDogCi0gICAgICAgICAgdmFyIGZvcm1hdHRpbmdfZ2VuID0gZm10WzBdOwotICAgICAgICAg
IHZhciBmbXQwID0gZm10WzFdOwotICAgICAgICAgIHZhciBmbXR0eTAgPSBmbXR0eTsKLSAgICAg
ICAgICBpZiAoZm9ybWF0dGluZ19nZW4udGFnKSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMzIg
PSBmb3JtYXR0aW5nX2dlblswXTsKLSAgICAgICAgICAgIHZhciBtYXRjaCQzMyA9IHR5cGVfZm9y
bWF0X2dlbihtYXRjaCQzMlswXSwgZm10dHkwKTsKLSAgICAgICAgICAgIHZhciBtYXRjaCQzNCA9
IHR5cGVfZm9ybWF0X2dlbihmbXQwLCBtYXRjaCQzM1sxXSk7Ci0gICAgICAgICAgICByZXR1cm4g
LyogRm10X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogRm9ybWF0dGluZ19n
ZW4gKi9CbG9jay5fXygxOCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgLyogT3Blbl9ib3gg
Ki9CbG9jay5fXygxLCBbLyogRm9ybWF0ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMzNbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQzMlsx
XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1dKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDM0WzBdCi0gICAgICAgICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAgICAg
ICAgICAgIG1hdGNoJDM0WzFdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCQzNSA9IGZvcm1hdHRpbmdfZ2Vu
WzBdOwotICAgICAgICAgICAgdmFyIG1hdGNoJDM2ID0gdHlwZV9mb3JtYXRfZ2VuKG1hdGNoJDM1
WzBdLCBmbXR0eTApOwotICAgICAgICAgICAgdmFyIG1hdGNoJDM3ID0gdHlwZV9mb3JtYXRfZ2Vu
KGZtdDAsIG1hdGNoJDM2WzFdKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBGbXRfZm10dHlfRUJC
ICovWwotICAgICAgICAgICAgICAgICAgICAvKiBGb3JtYXR0aW5nX2dlbiAqL0Jsb2NrLl9fKDE4
LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBPcGVuX3RhZyAqL0Jsb2NrLl9fKDAsIFsv
KiBGb3JtYXQgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQzNlswXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDM1WzFdCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMzdbMF0K
LSAgICAgICAgICAgICAgICAgICAgICBdKSwKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMzdb
MV0KLSAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgfQotICAgICAgY2FzZSAxOSA6IAot
ICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICB0
aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChmbXR0
eS50YWcgPT09IDEzKSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMzggPSB0eXBlX2Zvcm1hdF9n
ZW4oZm10WzBdLCBmbXR0eVswXSk7Ci0gICAgICAgICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VC
QiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogUmVhZGVyICovQmxvY2suX18oMTksIFttYXRj
aCQzOFswXV0pLAotICAgICAgICAgICAgICAgICAgICBtYXRjaCQzOFsxXQotICAgICAgICAgICAg
ICAgICAgXTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0aHJv
dyBUeXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgMjAgOiAKLSAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewotICAg
ICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxz
ZSBpZiAoZm10dHkudGFnID09PSAxKSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMzkgPSB0eXBl
X2Zvcm1hdF9nZW4oZm10WzJdLCBmbXR0eVswXSk7Ci0gICAgICAgICAgICByZXR1cm4gLyogRm10
X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogU2Nhbl9jaGFyX3NldCAqL0Js
b2NrLl9fKDIwLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICBmbXRbMF0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBmbXRbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQzOVsw
XQotICAgICAgICAgICAgICAgICAgICAgIF0pLAotICAgICAgICAgICAgICAgICAgICBtYXRjaCQz
OVsxXQotICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAgICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgMjEgOiAKLSAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09
PSAibnVtYmVyIikgewotICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAg
ICB9Ci0gICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09PSAyKSB7Ci0gICAgICAgICAgICB2
YXIgbWF0Y2gkNDAgPSB0eXBlX2Zvcm1hdF9nZW4oZm10WzFdLCBmbXR0eVswXSk7Ci0gICAgICAg
ICAgICByZXR1cm4gLyogRm10X2ZtdHR5X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyog
U2Nhbl9nZXRfY291bnRlciAqL0Jsb2NrLl9fKDIxLCBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICBmbXRbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0MFswXQotICAgICAgICAg
ICAgICAgICAgICAgIF0pLAotICAgICAgICAgICAgICAgICAgICBtYXRjaCQ0MFsxXQotICAgICAg
ICAgICAgICAgICAgXTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgMjMgOiAKLSAgICAgICAgICB2YXIgaWduID0gZm10WzBdOwotICAgICAgICAgIHZh
ciBmbXQkMSA9IGZtdFsxXTsKLSAgICAgICAgICB2YXIgZm10dHkkMSA9IGZtdHR5OwotICAgICAg
ICAgIGlmICh0eXBlb2YgaWduID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgc3dpdGNoIChp
Z24pIHsKLSAgICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICAgICAgICBpZiAodHlw
ZW9mIGZtdHR5JDEgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IFR5
cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBlbHNl
IGlmIChmbXR0eSQxLnRhZyA9PT0gMTQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNo
JDQxID0gdHlwZV9mb3JtYXRfZ2VuKGZtdCQxLCBmbXR0eSQxWzBdKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIElnbm9yZWRfcmVhZGVyICovMywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkNDFbMF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDQxWzFdCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBj
YXNlIDAgOiAKLSAgICAgICAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICAgIGNhc2UgMiA6
IAotICAgICAgICAgICAgICBjYXNlIDQgOiAKLSAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBl
X2lnbm9yZWRfcGFyYW1fb25lKGlnbiwgZm10JDEsIGZtdHR5JDEpOwotICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBzd2l0Y2ggKGlnbi50YWcgfCAwKSB7Ci0gICAgICAgICAgICAgIGNhc2UgNyA6IAotICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHR5cGVfaWdub3JlZF9wYXJhbV9vbmUoLyogSWdub3JlZF9mb3Jt
YXRfYXJnICovQmxvY2suX18oNywgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
Z25bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnblsxXQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQxLCBmbXR0eSQxKTsKLSAgICAgICAgICAgICAg
Y2FzZSA4IDogCi0gICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkNDIgPSB0eXBlX2lnbm9yZWRf
Zm9ybWF0X3N1YnN0aXR1dGlvbihpZ25bMV0sIGZtdCQxLCBmbXR0eSQxKTsKLSAgICAgICAgICAg
ICAgICAgIHZhciBtYXRjaCQ0MyA9IG1hdGNoJDQyWzFdOwotICAgICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEZtdF9mbXR0eV9FQkIgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEln
bm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogSWdub3JlZF9mb3JtYXRfc3Vic3QgKi9CbG9jay5fXyg4LCBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWduWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoJDQyWzBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNDNbMF0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNDNbMV0K
LSAgICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgIGNhc2UgMCA6IAotICAg
ICAgICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAg
ICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgICBjYXNlIDQgOiAKLSAgICAgICAgICAgICAgY2Fz
ZSA1IDogCi0gICAgICAgICAgICAgIGNhc2UgNiA6IAotICAgICAgICAgICAgICBjYXNlIDkgOiAK
LSAgICAgICAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVf
aWdub3JlZF9wYXJhbV9vbmUoaWduLCBmbXQkMSwgZm10dHkkMSk7Ci0gICAgICAgICAgICAgIAot
ICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgIGNhc2UgMjIgOiAKLSAgICAgIGNhc2Ug
MjQgOiAKLSAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgCi0gICAgfQotICB9
Ci19Ci0KLWZ1bmN0aW9uIHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0
eSwgZm10LCBmbXR0eSkgewotICBpZiAodHlwZW9mIHN1Yl9mbXR0eSA9PT0gIm51bWJlciIpIHsK
LSAgICByZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKLSAgICAgICAgICAgIC8qIEVuZF9vZl9m
bXR0eSAqLzAsCi0gICAgICAgICAgICB0eXBlX2Zvcm1hdF9nZW4oZm10LCBmbXR0eSkKLSAgICAg
ICAgICBdOwotICB9Ci0gIGVsc2UgewotICAgIHN3aXRjaCAoc3ViX2ZtdHR5LnRhZyB8IDApIHsK
LSAgICAgIGNhc2UgMCA6IAotICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIi
KSB7Ci0gICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAgICAg
ICAgICBlbHNlIGlmIChmbXR0eS50YWcpIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0
Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIG1hdGNo
ID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZt
dHR5WzBdKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWwotICAgICAg
ICAgICAgICAgICAgICAvKiBDaGFyX3R5ICovQmxvY2suX18oMCwgW21hdGNoWzBdXSksCi0gICAg
ICAgICAgICAgICAgICAgIG1hdGNoWzFdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAg
IH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIGlmICh0eXBl
b2YgZm10dHkgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDEpIHsKLSAg
ICAgICAgICAgIHZhciBtYXRjaCQxID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24o
c3ViX2ZtdHR5WzBdLCBmbXQsIGZtdHR5WzBdKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBGbXR0
eV9mbXRfRUJCICovWwotICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfdHkgKi9CbG9jay5f
XygxLCBbbWF0Y2gkMVswXV0pLAotICAgICAgICAgICAgICAgICAgICBtYXRjaCQxWzFdCi0gICAg
ICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIp
IHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAg
ICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gMikgewotICAgICAgICAgICAgdmFyIG1hdGNoJDIg
PSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10
dHlbMF0pOwotICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCi0gICAgICAg
ICAgICAgICAgICAgIC8qIEludF90eSAqL0Jsb2NrLl9fKDIsIFttYXRjaCQyWzBdXSksCi0gICAg
ICAgICAgICAgICAgICAgIG1hdGNoJDJbMV0KLSAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAg
ICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsK
LSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDMgOiAKLSAgICAgICAg
ICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgdGhyb3cgVHlw
ZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoZm10dHkudGFnID09
PSAzKSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMyA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vi
c3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7Ci0gICAgICAgICAgICByZXR1
cm4gLyogRm10dHlfZm10X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogSW50MzJfdHkg
Ki9CbG9jay5fXygzLCBbbWF0Y2gkM1swXV0pLAotICAgICAgICAgICAgICAgICAgICBtYXRjaCQz
WzFdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgaWYgKHR5cGVvZiBmbXR0eSA9PT0g
Im51bWJlciIpIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAg
fQotICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gNCkgewotICAgICAgICAgICAgdmFy
IG1hdGNoJDQgPSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0s
IGZtdCwgZm10dHlbMF0pOwotICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9b
Ci0gICAgICAgICAgICAgICAgICAgIC8qIE5hdGl2ZWludF90eSAqL0Jsb2NrLl9fKDQsIFttYXRj
aCQ0WzBdXSksCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDRbMV0KLSAgICAgICAgICAgICAg
ICAgIF07Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGhyb3cg
VHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IDUgOiAKLSAgICAgICAgICBpZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewotICAgICAg
ICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBp
ZiAoZm10dHkudGFnID09PSA1KSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkNSA9IHR5cGVfaWdu
b3JlZF9mb3JtYXRfc3Vic3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7Ci0g
ICAgICAgICAgICByZXR1cm4gLyogRm10dHlfZm10X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAg
ICAgLyogSW50NjRfdHkgKi9CbG9jay5fXyg1LCBbbWF0Y2gkNVswXV0pLAotICAgICAgICAgICAg
ICAgICAgICBtYXRjaCQ1WzFdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAg
ICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgaWYgKHR5
cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0
Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0gNikgewot
ICAgICAgICAgICAgdmFyIG1hdGNoJDYgPSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlv
bihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOwotICAgICAgICAgICAgcmV0dXJuIC8qIEZt
dHR5X2ZtdF9FQkIgKi9bCi0gICAgICAgICAgICAgICAgICAgIC8qIEZsb2F0X3R5ICovQmxvY2su
X18oNiwgW21hdGNoJDZbMF1dKSwKLSAgICAgICAgICAgICAgICAgICAgbWF0Y2gkNlsxXQotICAg
ICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgNyA6IAotICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIi
KSB7Ci0gICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAgICAg
ICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDcpIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCQ3
ID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9zdWJzdGl0dXRpb24oc3ViX2ZtdHR5WzBdLCBmbXQsIGZt
dHR5WzBdKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJCICovWwotICAgICAg
ICAgICAgICAgICAgICAvKiBCb29sX3R5ICovQmxvY2suX18oNywgW21hdGNoJDdbMF1dKSwKLSAg
ICAgICAgICAgICAgICAgICAgbWF0Y2gkN1sxXQotICAgICAgICAgICAgICAgICAgXTsKLSAgICAg
ICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNo
OwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgOCA6IAotICAgICAg
ICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICB0aHJvdyBU
eXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcg
PT09IDgpIHsKLSAgICAgICAgICAgIHZhciBzdWIyX2ZtdHR5JHByaW1lID0gZm10dHlbMF07Ci0g
ICAgICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBGbXR0eV9FQkIgKi9bc3Vi
X2ZtdHR5WzBdXSwgLyogRm10dHlfRUJCICovW3N1YjJfZm10dHkkcHJpbWVdKSkgewotICAgICAg
ICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
dmFyIG1hdGNoJDggPSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlb
MV0sIGZtdCwgZm10dHlbMV0pOwotICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIg
Ki9bCi0gICAgICAgICAgICAgICAgICAgIC8qIEZvcm1hdF9hcmdfdHkgKi9CbG9jay5fXyg4LCBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdWIyX2ZtdHR5JHByaW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkOFswXQotICAgICAgICAgICAgICAgICAgICAgIF0pLAotICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQ4WzFdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAg
IH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0g
ICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA5IDogCi0gICAgICAgICAg
aWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0g
OSkgewotICAgICAgICAgICAgdmFyIHN1YjJfZm10dHkkcHJpbWUkMSA9IGZtdHR5WzFdOwotICAg
ICAgICAgICAgdmFyIHN1YjFfZm10dHkkcHJpbWUgPSBmbXR0eVswXTsKLSAgICAgICAgICAgIGlm
IChDYW1sX29iai5jYW1sX25vdGVxdWFsKC8qIEZtdHR5X0VCQiAqL1tDYW1saW50ZXJuYWxGb3Jt
YXRCYXNpY3MuZXJhc2VfcmVsKHN1Yl9mbXR0eVswXSldLCAvKiBGbXR0eV9FQkIgKi9bQ2FtbGlu
dGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWIxX2ZtdHR5JHByaW1lKV0pKSB7Ci0gICAg
ICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCgvKiBGbXR0eV9FQkIgKi9bQ2FtbGludGVybmFs
Rm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWJfZm10dHlbMV0pXSwgLyogRm10dHlfRUJCICovW0Nh
bWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ViMl9mbXR0eSRwcmltZSQxKV0pKSB7
Ci0gICAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB2YXIgc3ViX2ZtdHR5JHByaW1lID0gdHJhbnMoc3ltbShzdWIxX2ZtdHR5JHByaW1l
KSwgc3ViMl9mbXR0eSRwcmltZSQxKTsKLSAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gZm10dHlf
cmVsX2RldChzdWJfZm10dHkkcHJpbWUpOwotICAgICAgICAgICAgQ3VycnkuXzEobWF0Y2gkOVsx
XSwgLyogUmVmbCAqLzApOwotICAgICAgICAgICAgQ3VycnkuXzEobWF0Y2gkOVszXSwgLyogUmVm
bCAqLzApOwotICAgICAgICAgICAgdmFyIG1hdGNoJDEwID0gdHlwZV9pZ25vcmVkX2Zvcm1hdF9z
dWJzdGl0dXRpb24oQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmVyYXNlX3JlbChzdWJfZm10dHlb
Ml0pLCBmbXQsIGZtdHR5WzJdKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBGbXR0eV9mbXRfRUJC
ICovWwotICAgICAgICAgICAgICAgICAgICAvKiBGb3JtYXRfc3Vic3RfdHkgKi9CbG9jay5fXyg5
LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICBzdWIxX2ZtdHR5JHByaW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgc3ViMl9mbXR0eSRwcmltZSQxLAotICAgICAgICAgICAgICAgICAgICAg
ICAgc3ltbShtYXRjaCQxMFswXSkKLSAgICAgICAgICAgICAgICAgICAgICBdKSwKLSAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMTBbMV0KLSAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAg
fQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAg
ICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDEwIDogCi0gICAgICAgICAg
aWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0g
MTApIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCQxMSA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vi
c3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7Ci0gICAgICAgICAgICByZXR1
cm4gLyogRm10dHlfZm10X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogQWxwaGFfdHkg
Ki9CbG9jay5fXygxMCwgW21hdGNoJDExWzBdXSksCi0gICAgICAgICAgICAgICAgICAgIG1hdGNo
JDExWzFdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSAxMSA6IAotICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkg
PT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAg
ICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChmbXR0eS50YWcgPT09IDExKSB7Ci0gICAgICAgICAg
ICB2YXIgbWF0Y2gkMTIgPSB0eXBlX2lnbm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10
dHlbMF0sIGZtdCwgZm10dHlbMF0pOwotICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9F
QkIgKi9bCi0gICAgICAgICAgICAgICAgICAgIC8qIFRoZXRhX3R5ICovQmxvY2suX18oMTEsIFtt
YXRjaCQxMlswXV0pLAotICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMlsxXQotICAgICAgICAg
ICAgICAgICAgXTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB0
aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgMTIgOiAKLSAgICAgICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgY2FzZSAx
MyA6IAotICAgICAgICAgIGlmICh0eXBlb2YgZm10dHkgPT09ICJudW1iZXIiKSB7Ci0gICAgICAg
ICAgICB0aHJvdyBUeXBlX21pc21hdGNoOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlm
IChmbXR0eS50YWcgPT09IDEzKSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMTMgPSB0eXBlX2ln
bm9yZWRfZm9ybWF0X3N1YnN0aXR1dGlvbihzdWJfZm10dHlbMF0sIGZtdCwgZm10dHlbMF0pOwot
ICAgICAgICAgICAgcmV0dXJuIC8qIEZtdHR5X2ZtdF9FQkIgKi9bCi0gICAgICAgICAgICAgICAg
ICAgIC8qIFJlYWRlcl90eSAqL0Jsb2NrLl9fKDEzLCBbbWF0Y2gkMTNbMF1dKSwKLSAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMTNbMV0KLSAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAg
fQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdGhyb3cgVHlwZV9taXNtYXRjaDsKLSAg
ICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDE0IDogCi0gICAgICAgICAg
aWYgKHR5cGVvZiBmbXR0eSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVf
bWlzbWF0Y2g7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGZtdHR5LnRhZyA9PT0g
MTQpIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCQxNCA9IHR5cGVfaWdub3JlZF9mb3JtYXRfc3Vi
c3RpdHV0aW9uKHN1Yl9mbXR0eVswXSwgZm10LCBmbXR0eVswXSk7Ci0gICAgICAgICAgICByZXR1
cm4gLyogRm10dHlfZm10X0VCQiAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogSWdub3JlZF9y
ZWFkZXJfdHkgKi9CbG9jay5fXygxNCwgW21hdGNoJDE0WzBdXSksCi0gICAgICAgICAgICAgICAg
ICAgIG1hdGNoJDE0WzFdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93IFR5cGVfbWlzbWF0Y2g7Ci0gICAgICAgICAg
fQotICAgICAgICAgIGJyZWFrOwotICAgICAgCi0gICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9uIHR5
cGVfZm9ybWF0KGZtdCwgZm10dHkpIHsKLSAgdmFyIG1hdGNoID0gdHlwZV9mb3JtYXRfZ2VuKGZt
dCwgZm10dHkpOwotICBpZiAodHlwZW9mIG1hdGNoWzFdID09PSAibnVtYmVyIikgewotICAgIHJl
dHVybiBtYXRjaFswXTsKLSAgfQotICBlbHNlIHsKLSAgICB0aHJvdyBUeXBlX21pc21hdGNoOwot
ICB9Ci19Ci0KLWZ1bmN0aW9uIHJlY2FzdChmbXQsIGZtdHR5KSB7Ci0gIHJldHVybiB0eXBlX2Zv
cm1hdChmbXQsIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5lcmFzZV9yZWwoc3ltbShmbXR0eSkp
KTsKLX0KLQotZnVuY3Rpb24gZml4X3BhZGRpbmcocGFkdHksIHdpZHRoLCBzdHIpIHsKLSAgdmFy
IGxlbiA9IHN0ci5sZW5ndGg7Ci0gIHZhciBtYXRjaF8wMDAgPSBQZXJ2YXNpdmVzLmFicyh3aWR0
aCk7Ci0gIHZhciBtYXRjaF8wMDEgPSB3aWR0aCA8IDAgPyAvKiBMZWZ0ICovMCA6IHBhZHR5Owot
ICB2YXIgcGFkdHkkMSA9IG1hdGNoXzAwMTsKLSAgdmFyIHdpZHRoJDEgPSBtYXRjaF8wMDA7Ci0g
IGlmICh3aWR0aCQxIDw9IGxlbikgewotICAgIHJldHVybiBzdHI7Ci0gIH0KLSAgZWxzZSB7Ci0g
ICAgdmFyIHJlcyA9IEJ5dGVzLm1ha2Uod2lkdGgkMSwgcGFkdHkkMSA9PT0gLyogWmVyb3MgKi8y
ID8gLyogIjAiICovNDggOiAvKiAiICIgKi8zMik7Ci0gICAgc3dpdGNoIChwYWR0eSQxKSB7Ci0g
ICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwgMCwgcmVzLCAwLCBs
ZW4pOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgJCRTdHJp
bmcuYmxpdChzdHIsIDAsIHJlcywgd2lkdGgkMSAtIGxlbiB8IDAsIGxlbik7Ci0gICAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIDIgOiAKLSAgICAgICAgICBpZiAobGVuID4gMCAmJiAoQ2FtbF9z
dHJpbmcuZ2V0KHN0ciwgMCkgPT09IC8qICIrIiAqLzQzIHx8IENhbWxfc3RyaW5nLmdldChzdHIs
IDApID09PSAvKiAiLSIgKi80NSB8fCBDYW1sX3N0cmluZy5nZXQoc3RyLCAwKSA9PT0gLyogIiAi
ICovMzIpKSB7Ci0gICAgICAgICAgICByZXNbMF0gPSBDYW1sX3N0cmluZy5nZXQoc3RyLCAwKTsK
LSAgICAgICAgICAgICQkU3RyaW5nLmJsaXQoc3RyLCAxLCByZXMsICh3aWR0aCQxIC0gbGVuIHwg
MCkgKyAxIHwgMCwgbGVuIC0gMSB8IDApOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlm
IChsZW4gPiAxICYmIENhbWxfc3RyaW5nLmdldChzdHIsIDApID09PSAvKiAiMCIgKi80OCAmJiAo
Q2FtbF9zdHJpbmcuZ2V0KHN0ciwgMSkgPT09IC8qICJ4IiAqLzEyMCB8fCBDYW1sX3N0cmluZy5n
ZXQoc3RyLCAxKSA9PT0gLyogIlgiICovODgpKSB7Ci0gICAgICAgICAgICByZXNbMV0gPSBDYW1s
X3N0cmluZy5nZXQoc3RyLCAxKTsKLSAgICAgICAgICAgICQkU3RyaW5nLmJsaXQoc3RyLCAyLCBy
ZXMsICh3aWR0aCQxIC0gbGVuIHwgMCkgKyAyIHwgMCwgbGVuIC0gMiB8IDApOwotICAgICAgICAg
IH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICQkU3RyaW5nLmJsaXQoc3RyLCAwLCBy
ZXMsIHdpZHRoJDEgLSBsZW4gfCAwLCBsZW4pOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVh
azsKLSAgICAgIAotICAgIH0KLSAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5n
KHJlcyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gZml4X2ludF9wcmVjaXNpb24ocHJlYywgc3RyKSB7
Ci0gIHZhciBwcmVjJDEgPSBQZXJ2YXNpdmVzLmFicyhwcmVjKTsKLSAgdmFyIGxlbiA9IHN0ci5s
ZW5ndGg7Ci0gIHZhciBjID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgMCk7Ci0gIHZhciBleGl0ID0g
MDsKLSAgaWYgKGMgPj0gNTgpIHsKLSAgICBpZiAoYyA+PSA3MSkgewotICAgICAgaWYgKGMgPiAx
MDIgfHwgYyA8IDk3KSB7Ci0gICAgICAgIHJldHVybiBzdHI7Ci0gICAgICB9Ci0gICAgICBlbHNl
IHsKLSAgICAgICAgZXhpdCA9IDI7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGMgPj0g
NjUpIHsKLSAgICAgIGV4aXQgPSAyOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBz
dHI7Ci0gICAgfQotICB9Ci0gIGVsc2UgaWYgKGMgIT09IDMyKSB7Ci0gICAgaWYgKGMgPj0gNDMp
IHsKLSAgICAgIHN3aXRjaCAoYyAtIDQzIHwgMCkgewotICAgICAgICBjYXNlIDAgOiAKLSAgICAg
ICAgY2FzZSAyIDogCi0gICAgICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgY2FzZSAzIDogCi0gICAgICAgIGNhc2UgNCA6IAot
ICAgICAgICAgICAgcmV0dXJuIHN0cjsKLSAgICAgICAgY2FzZSA1IDogCi0gICAgICAgICAgICBp
ZiAoKHByZWMkMSArIDIgfCAwKSA+IGxlbiAmJiBsZW4gPiAxICYmIChDYW1sX3N0cmluZy5nZXQo
c3RyLCAxKSA9PT0gLyogIngiICovMTIwIHx8IENhbWxfc3RyaW5nLmdldChzdHIsIDEpID09PSAv
KiAiWCIgKi84OCkpIHsKLSAgICAgICAgICAgICAgdmFyIHJlcyA9IEJ5dGVzLm1ha2UocHJlYyQx
ICsgMiB8IDAsIC8qICIwIiAqLzQ4KTsKLSAgICAgICAgICAgICAgcmVzWzFdID0gQ2FtbF9zdHJp
bmcuZ2V0KHN0ciwgMSk7Ci0gICAgICAgICAgICAgICQkU3RyaW5nLmJsaXQoc3RyLCAyLCByZXMs
IChwcmVjJDEgLSBsZW4gfCAwKSArIDQgfCAwLCBsZW4gLSAyIHwgMCk7Ci0gICAgICAgICAgICAg
IHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcocmVzKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICBleGl0ID0gMjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgY2FzZSA3
IDogCi0gICAgICAgIGNhc2UgOCA6IAotICAgICAgICBjYXNlIDkgOiAKLSAgICAgICAgY2FzZSAx
MCA6IAotICAgICAgICBjYXNlIDExIDogCi0gICAgICAgIGNhc2UgMTIgOiAKLSAgICAgICAgY2Fz
ZSAxMyA6IAotICAgICAgICBjYXNlIDE0IDogCi0gICAgICAgICAgICBleGl0ID0gMjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAg
ICByZXR1cm4gc3RyOwotICAgIH0KLSAgfQotICBlbHNlIHsKLSAgICBleGl0ID0gMTsKLSAgfQot
ICBzd2l0Y2ggKGV4aXQpIHsKLSAgICBjYXNlIDEgOiAKLSAgICAgICAgaWYgKChwcmVjJDEgKyAx
IHwgMCkgPiBsZW4pIHsKLSAgICAgICAgICB2YXIgcmVzJDEgPSBCeXRlcy5tYWtlKHByZWMkMSAr
IDEgfCAwLCAvKiAiMCIgKi80OCk7Ci0gICAgICAgICAgcmVzJDFbMF0gPSBjOwotICAgICAgICAg
ICQkU3RyaW5nLmJsaXQoc3RyLCAxLCByZXMkMSwgKHByZWMkMSAtIGxlbiB8IDApICsgMiB8IDAs
IGxlbiAtIDEgfCAwKTsKLSAgICAgICAgICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3Ry
aW5nKHJlcyQxKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4g
c3RyOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMiA6IAotICAgICAgICBp
ZiAocHJlYyQxID4gbGVuKSB7Ci0gICAgICAgICAgdmFyIHJlcyQyID0gQnl0ZXMubWFrZShwcmVj
JDEsIC8qICIwIiAqLzQ4KTsKLSAgICAgICAgICAkJFN0cmluZy5ibGl0KHN0ciwgMCwgcmVzJDIs
IHByZWMkMSAtIGxlbiB8IDAsIGxlbik7Ci0gICAgICAgICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5
dGVzX3RvX3N0cmluZyhyZXMkMik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgcmV0dXJuIHN0cjsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAKLSAgfQotfQot
Ci1mdW5jdGlvbiBzdHJpbmdfdG9fY2FtbF9zdHJpbmcoc3RyKSB7Ci0gIHJldHVybiAkJFN0cmlu
Zy5jb25jYXQoJCRTdHJpbmcuZXNjYXBlZChzdHIpLCAvKiA6OiAqL1sKLSAgICAgICAgICAgICAg
JyInLAotICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAnIicsCi0gICAg
ICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIF0pOwot
fQotCi1mdW5jdGlvbiBmb3JtYXRfb2ZfaWNvbnYoaWNvbnYpIHsKLSAgc3dpdGNoIChpY29udikg
ewotICAgIGNhc2UgMCA6IAotICAgICAgICByZXR1cm4gIiVkIjsKLSAgICBjYXNlIDEgOiAKLSAg
ICAgICAgcmV0dXJuICIlK2QiOwotICAgIGNhc2UgMiA6IAotICAgICAgICByZXR1cm4gIiUgZCI7
Ci0gICAgY2FzZSAzIDogCi0gICAgICAgIHJldHVybiAiJWkiOwotICAgIGNhc2UgNCA6IAotICAg
ICAgICByZXR1cm4gIiUraSI7Ci0gICAgY2FzZSA1IDogCi0gICAgICAgIHJldHVybiAiJSBpIjsK
LSAgICBjYXNlIDYgOiAKLSAgICAgICAgcmV0dXJuICIleCI7Ci0gICAgY2FzZSA3IDogCi0gICAg
ICAgIHJldHVybiAiJSN4IjsKLSAgICBjYXNlIDggOiAKLSAgICAgICAgcmV0dXJuICIlWCI7Ci0g
ICAgY2FzZSA5IDogCi0gICAgICAgIHJldHVybiAiJSNYIjsKLSAgICBjYXNlIDEwIDogCi0gICAg
ICAgIHJldHVybiAiJW8iOwotICAgIGNhc2UgMTEgOiAKLSAgICAgICAgcmV0dXJuICIlI28iOwot
ICAgIGNhc2UgMTIgOiAKLSAgICAgICAgcmV0dXJuICIldSI7Ci0gICAgCi0gIH0KLX0KLQotZnVu
Y3Rpb24gZm9ybWF0X29mX2Fjb252KGljb252LCBjKSB7Ci0gIHZhciBzZXBzOwotICBzd2l0Y2gg
KGljb252KSB7Ci0gICAgY2FzZSAwIDogCi0gICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKLSAgICAg
ICAgICAiJSIsCi0gICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAiZCIsCi0gICAgICAg
ICAgICAvKiBbXSAqLzAKLSAgICAgICAgICBdCi0gICAgICAgIF07Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgMSA6IAotICAgICAgICBzZXBzID0gLyogOjogKi9bCi0gICAgICAgICAgIiUrIiwK
LSAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICJkIiwKLSAgICAgICAgICAgIC8qIFtd
ICovMAotICAgICAgICAgIF0KLSAgICAgICAgXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAy
IDogCi0gICAgICAgIHNlcHMgPSAvKiA6OiAqL1sKLSAgICAgICAgICAiJSAiLAotICAgICAgICAg
IC8qIDo6ICovWwotICAgICAgICAgICAgImQiLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAg
ICAgICAgXQotICAgICAgICBdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDMgOiAKLSAgICAg
ICAgc2VwcyA9IC8qIDo6ICovWwotICAgICAgICAgICIlIiwKLSAgICAgICAgICAvKiA6OiAqL1sK
LSAgICAgICAgICAgICJpIiwKLSAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgIF0KLSAg
ICAgICAgXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0IDogCi0gICAgICAgIHNlcHMgPSAv
KiA6OiAqL1sKLSAgICAgICAgICAiJSsiLAotICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAg
ICAgImkiLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgXQotICAgICAgICBdOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIDUgOiAKLSAgICAgICAgc2VwcyA9IC8qIDo6ICovWwot
ICAgICAgICAgICIlICIsCi0gICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAiaSIsCi0g
ICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICBdCi0gICAgICAgIF07Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgNiA6IAotICAgICAgICBzZXBzID0gLyogOjogKi9bCi0gICAgICAgICAg
IiUiLAotICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgIngiLAotICAgICAgICAgICAg
LyogW10gKi8wCi0gICAgICAgICAgXQotICAgICAgICBdOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIDcgOiAKLSAgICAgICAgc2VwcyA9IC8qIDo6ICovWwotICAgICAgICAgICIlIyIsCi0gICAg
ICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAieCIsCi0gICAgICAgICAgICAvKiBbXSAqLzAK
LSAgICAgICAgICBdCi0gICAgICAgIF07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgOCA6IAot
ICAgICAgICBzZXBzID0gLyogOjogKi9bCi0gICAgICAgICAgIiUiLAotICAgICAgICAgIC8qIDo6
ICovWwotICAgICAgICAgICAgIlgiLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAg
XQotICAgICAgICBdOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDkgOiAKLSAgICAgICAgc2Vw
cyA9IC8qIDo6ICovWwotICAgICAgICAgICIlIyIsCi0gICAgICAgICAgLyogOjogKi9bCi0gICAg
ICAgICAgICAiWCIsCi0gICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICBdCi0gICAgICAg
IF07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMTAgOiAKLSAgICAgICAgc2VwcyA9IC8qIDo6
ICovWwotICAgICAgICAgICIlIiwKLSAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICJv
IiwKLSAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgIF0KLSAgICAgICAgXTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSAxMSA6IAotICAgICAgICBzZXBzID0gLyogOjogKi9bCi0gICAg
ICAgICAgIiUjIiwKLSAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICJvIiwKLSAgICAg
ICAgICAgIC8qIFtdICovMAotICAgICAgICAgIF0KLSAgICAgICAgXTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSAxMiA6IAotICAgICAgICBzZXBzID0gLyogOjogKi9bCi0gICAgICAgICAgIiUi
LAotICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgInUiLAotICAgICAgICAgICAgLyog
W10gKi8wCi0gICAgICAgICAgXQotICAgICAgICBdOwotICAgICAgICBicmVhazsKLSAgICAKLSAg
fQotICByZXR1cm4gJCRTdHJpbmcuY29uY2F0KENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhC
eXRlcy5tYWtlKDEsIGMpKSwgc2Vwcyk7Ci19Ci0KLWZ1bmN0aW9uIGZvcm1hdF9vZl9mY29udihm
Y29udiwgcHJlYykgewotICBpZiAoZmNvbnYgPT09IC8qIEZsb2F0X0YgKi8xNSkgewotICAgIHJl
dHVybiAiJS4xMmciOwotICB9Ci0gIGVsc2UgewotICAgIHZhciBwcmVjJDEgPSBQZXJ2YXNpdmVz
LmFicyhwcmVjKTsKLSAgICB2YXIgc3ltYiA9IGNoYXJfb2ZfZmNvbnYoZmNvbnYpOwotICAgIHZh
ciBidWYgPSAvKiByZWNvcmQgKi9bCi0gICAgICAvKiBpbmQgKi8wLAotICAgICAgLyogYnl0ZXMg
Ki9uZXcgQXJyYXkoMTYpCi0gICAgXTsKLSAgICBidWZmZXJfYWRkX2NoYXIoYnVmLCAvKiAiJSIg
Ki8zNyk7Ci0gICAgYnByaW50X2Zjb252X2ZsYWcoYnVmLCBmY29udik7Ci0gICAgYnVmZmVyX2Fk
ZF9jaGFyKGJ1ZiwgLyogIi4iICovNDYpOwotICAgIGJ1ZmZlcl9hZGRfc3RyaW5nKGJ1ZiwgIiIg
KyBwcmVjJDEpOwotICAgIGJ1ZmZlcl9hZGRfY2hhcihidWYsIHN5bWIpOwotICAgIHJldHVybiBi
dWZmZXJfY29udGVudHMoYnVmKTsKLSAgfQotfQotCi1mdW5jdGlvbiBjb252ZXJ0X2ludChpY29u
diwgbikgewotICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9mb3JtYXRfaW50KGZvcm1hdF9vZl9p
Y29udihpY29udiksIG4pOwotfQotCi1mdW5jdGlvbiBjb252ZXJ0X2ludDMyKGljb252LCBuKSB7
Ci0gIHJldHVybiBDYW1sX2Zvcm1hdC5jYW1sX2ludDMyX2Zvcm1hdChmb3JtYXRfb2ZfYWNvbnYo
aWNvbnYsIC8qICJsIiAqLzEwOCksIG4pOwotfQotCi1mdW5jdGlvbiBjb252ZXJ0X25hdGl2ZWlu
dChpY29udiwgbikgewotICByZXR1cm4gQ2FtbF9mb3JtYXQuY2FtbF9uYXRpdmVpbnRfZm9ybWF0
KGZvcm1hdF9vZl9hY29udihpY29udiwgLyogIm4iICovMTEwKSwgbik7Ci19Ci0KLWZ1bmN0aW9u
IGNvbnZlcnRfaW50NjQoaWNvbnYsIG4pIHsKLSAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfaW50
NjRfZm9ybWF0KGZvcm1hdF9vZl9hY29udihpY29udiwgLyogIkwiICovNzYpLCBuKTsKLX0KLQot
ZnVuY3Rpb24gY29udmVydF9mbG9hdChmY29udiwgcHJlYywgeCkgewotICB2YXIgcHJlYyQxID0g
UGVydmFzaXZlcy5hYnMocHJlYyk7Ci0gIHZhciBzdHIgPSBDYW1sX2Zvcm1hdC5jYW1sX2Zvcm1h
dF9mbG9hdChmb3JtYXRfb2ZfZmNvbnYoZmNvbnYsIHByZWMkMSksIHgpOwotICBpZiAoZmNvbnYg
IT09IC8qIEZsb2F0X0YgKi8xNSkgewotICAgIHJldHVybiBzdHI7Ci0gIH0KLSAgZWxzZSB7Ci0g
ICAgdmFyIGxlbiA9IHN0ci5sZW5ndGg7Ci0gICAgdmFyIGlzX3ZhbGlkID0gZnVuY3Rpb24gKF9p
KSB7Ci0gICAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICAgIHZhciBpID0gX2k7Ci0gICAgICAgIGlm
IChpID09PSBsZW4pIHsKLSAgICAgICAgICByZXR1cm4gLyogZmFsc2UgKi8wOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChz
dHIsIGkpOwotICAgICAgICAgIHZhciBzd2l0Y2hlciA9IG1hdGNoIC0gNDYgfCAwOwotICAgICAg
ICAgIGlmIChzd2l0Y2hlciA+IDIzIHx8IHN3aXRjaGVyIDwgMCkgewotICAgICAgICAgICAgaWYg
KHN3aXRjaGVyICE9PSA1NSkgewotICAgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKLSAgICAg
ICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHN3aXRjaGVyID4gMjIgfHwg
c3dpdGNoZXIgPCAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gICAgICAg
ICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAg
ICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgIH07Ci0gICAgfTsKLSAgICB2YXIgbWF0Y2ggPSBDYW1sX2Zsb2F0LmNhbWxfY2xhc3Np
ZnlfZmxvYXQoeCk7Ci0gICAgaWYgKG1hdGNoICE9PSAzKSB7Ci0gICAgICBpZiAobWF0Y2ggPj0g
NCkgewotICAgICAgICByZXR1cm4gIm5hbiI7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChpc192
YWxpZCgwKSkgewotICAgICAgICByZXR1cm4gc3RyOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0g
ICAgICAgIHJldHVybiBzdHIgKyAiLiI7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKHgg
PCAwLjApIHsKLSAgICAgIHJldHVybiAibmVnX2luZmluaXR5IjsKLSAgICB9Ci0gICAgZWxzZSB7
Ci0gICAgICByZXR1cm4gImluZmluaXR5IjsKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gZm9y
bWF0X2NhbWxfY2hhcihjKSB7Ci0gIHJldHVybiAkJFN0cmluZy5jb25jYXQoQ2hhci5lc2NhcGVk
KGMpLCAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgIiciLAotICAgICAgICAgICAgICAvKiA6OiAq
L1sKLSAgICAgICAgICAgICAgICAiJyIsCi0gICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAg
ICAgICAgICAgIF0KLSAgICAgICAgICAgIF0pOwotfQotCi1mdW5jdGlvbiBzdHJpbmdfb2ZfZm10
dHkoZm10dHkpIHsKLSAgdmFyIGJ1ZiA9IC8qIHJlY29yZCAqL1sKLSAgICAvKiBpbmQgKi8wLAot
ICAgIC8qIGJ5dGVzICovbmV3IEFycmF5KDE2KQotICBdOwotICBicHJpbnRfZm10dHkoYnVmLCBm
bXR0eSk7Ci0gIHJldHVybiBidWZmZXJfY29udGVudHMoYnVmKTsKLX0KLQotZnVuY3Rpb24gbWFr
ZV9wcmludGYoX2ssIG8sIF9hY2MsIF9mbXQpIHsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBm
bXQgPSBfZm10OwotICAgIHZhciBhY2MgPSBfYWNjOwotICAgIHZhciBrID0gX2s7Ci0gICAgaWYg
KHR5cGVvZiBmbXQgPT09ICJudW1iZXIiKSB7Ci0gICAgICByZXR1cm4gQ3VycnkuXzIoaywgbywg
YWNjKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBzd2l0Y2ggKGZtdC50YWcgfCAwKSB7Ci0g
ICAgICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgdmFyIHJlc3QgPSBmbXRbMF07Ci0gICAgICAg
ICAgICByZXR1cm4gKGZ1bmN0aW9uKGssYWNjLHJlc3QpewotICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uIChjKSB7Ci0gICAgICAgICAgICAgIHZhciBuZXdfYWNjID0gLyogQWNjX2RhdGFfY2hh
ciAqL0Jsb2NrLl9fKDUsIFsKLSAgICAgICAgICAgICAgICAgIGFjYywKLSAgICAgICAgICAgICAg
ICAgIGMKLSAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJp
bnRmKGssIG8sIG5ld19hY2MsIHJlc3QpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgfShr
LGFjYyxyZXN0KSk7Ci0gICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgdmFyIHJlc3QkMSA9
IGZtdFswXTsKLSAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MscmVzdCQxKXsKLSAg
ICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgICAgICAgICB2YXIgbmV3X2Fj
Y18wMDEgPSBmb3JtYXRfY2FtbF9jaGFyKGMpOwotICAgICAgICAgICAgICB2YXIgbmV3X2FjYyA9
IC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAgICAgICAgICAgIGFj
YywKLSAgICAgICAgICAgICAgICAgIG5ld19hY2NfMDAxCi0gICAgICAgICAgICAgICAgXSk7Ci0g
ICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCByZXN0JDEpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfShrLGFjYyxyZXN0JDEpKTsKLSAgICAgICAgY2Fz
ZSAyIDogCi0gICAgICAgICAgICByZXR1cm4gbWFrZV9zdHJpbmdfcGFkZGluZyhrLCBvLCBhY2Ms
IGZtdFsxXSwgZm10WzBdLCBmdW5jdGlvbiAoc3RyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gc3RyOwotICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICBjYXNlIDMg
OiAKLSAgICAgICAgICAgIHJldHVybiBtYWtlX3N0cmluZ19wYWRkaW5nKGssIG8sIGFjYywgZm10
WzFdLCBmbXRbMF0sIHN0cmluZ190b19jYW1sX3N0cmluZyk7Ci0gICAgICAgIGNhc2UgNCA6IAot
ICAgICAgICAgICAgcmV0dXJuIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGssIG8sIGFjYywg
Zm10WzNdLCBmbXRbMV0sIGZtdFsyXSwgY29udmVydF9pbnQsIGZtdFswXSk7Ci0gICAgICAgIGNh
c2UgNSA6IAotICAgICAgICAgICAgcmV0dXJuIG1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uKGss
IG8sIGFjYywgZm10WzNdLCBmbXRbMV0sIGZtdFsyXSwgY29udmVydF9pbnQzMiwgZm10WzBdKTsK
LSAgICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgICByZXR1cm4gbWFrZV9pbnRfcGFkZGluZ19w
cmVjaXNpb24oaywgbywgYWNjLCBmbXRbM10sIGZtdFsxXSwgZm10WzJdLCBjb252ZXJ0X25hdGl2
ZWludCwgZm10WzBdKTsKLSAgICAgICAgY2FzZSA3IDogCi0gICAgICAgICAgICByZXR1cm4gbWFr
ZV9pbnRfcGFkZGluZ19wcmVjaXNpb24oaywgbywgYWNjLCBmbXRbM10sIGZtdFsxXSwgZm10WzJd
LCBjb252ZXJ0X2ludDY0LCBmbXRbMF0pOwotICAgICAgICBjYXNlIDggOiAKLSAgICAgICAgICAg
IHZhciBrJDEgPSBrOwotICAgICAgICAgICAgdmFyIG8kMSA9IG87Ci0gICAgICAgICAgICB2YXIg
YWNjJDEgPSBhY2M7Ci0gICAgICAgICAgICB2YXIgZm10JDEgPSBmbXRbM107Ci0gICAgICAgICAg
ICB2YXIgcGFkID0gZm10WzFdOwotICAgICAgICAgICAgdmFyIHByZWMgPSBmbXRbMl07Ci0gICAg
ICAgICAgICB2YXIgZmNvbnYgPSBmbXRbMF07Ci0gICAgICAgICAgICBpZiAodHlwZW9mIHBhZCA9
PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVy
IikgewotICAgICAgICAgICAgICAgIGlmIChwcmVjICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAg
ICByZXR1cm4gKGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10JDEsZmNvbnYpewotICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwLCB4KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBzdHIgPSBjb252ZXJ0X2Zsb2F0KGZjb252LCBwLCB4KTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1ha2VfcHJpbnRmKGskMSwgbyQxLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5f
Xyg0LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pLCBmbXQkMSk7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICB9KGskMSxvJDEsYWNjJDEsZm10JDEsZmNvbnYpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGsk
MSxvJDEsYWNjJDEsZm10JDEsZmNvbnYpewotICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uICh4KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBjb252ZXJ0X2Zsb2F0KGZj
b252LCA2LCB4KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGskMSwg
byQxLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWNjJDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQkMSk7Ci0gICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9KGskMSxvJDEsYWNjJDEsZm10JDEs
ZmNvbnYpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyIHAgPSBwcmVjWzBdOwotICAgICAgICAgICAg
ICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwKXsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKLSAgICAgICAgICAgICAgICAgIHZhciBz
dHIgPSBjb252ZXJ0X2Zsb2F0KGZjb252LCBwLCB4KTsKLSAgICAgICAgICAgICAgICAgIHJldHVy
biBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwg
WwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MkMSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwg
Zm10JDEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KGskMSxvJDEsYWNj
JDEsZm10JDEsZmNvbnYscCkpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIGlmIChwYWQudGFnKSB7Ci0gICAgICAgICAgICAgIHZhciBwYWR0eSA9IHBh
ZFswXTsKLSAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgewotICAg
ICAgICAgICAgICAgIGlmIChwcmVjICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4g
KGZ1bmN0aW9uKGskMSxvJDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkpewotICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uICh3LCBwLCB4KSB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0eSwgdywgY29udmVydF9mbG9hdChmY29udiwgcCwgeCkp
OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoayQxLCBvJDEsIC8qIEFj
Y19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhY2MkMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCQxKTsKLSAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgIH0oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0
eSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0
eSl7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHcsIHgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0ciA9IGNvbnZlcnRfZmxvYXQoZmNvbnYsIDYsIHgpOwotICAgICAg
ICAgICAgICAgICAgICB2YXIgc3RyJHByaW1lID0gZml4X3BhZGRpbmcocGFkdHksIHcsIHN0cik7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNj
X2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFjYyQxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciRwcmlt
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10JDEpOwotICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfShrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252
LHBhZHR5KSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHZhciBwJDEgPSBwcmVjWzBdOwotICAgICAgICAg
ICAgICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxhY2MkMSxmbXQkMSxmY29udixwYWR0eSxw
JDEpewotICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAodywgeCkgewotICAgICAgICAg
ICAgICAgICAgdmFyIHN0ciA9IGZpeF9wYWRkaW5nKHBhZHR5LCB3LCBjb252ZXJ0X2Zsb2F0KGZj
b252LCBwJDEsIHgpKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrJDEs
IG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY2MkMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwgZm10JDEpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KGskMSxvJDEsYWNjJDEsZm10JDEsZmNvbnYscGFk
dHkscCQxKSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICB2YXIgdyA9IHBhZFsxXTsKLSAgICAgICAgICAgICAgdmFyIHBh
ZHR5JDEgPSBwYWRbMF07Ci0gICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51bWJl
ciIpIHsKLSAgICAgICAgICAgICAgICBpZiAocHJlYyAhPT0gMCkgewotICAgICAgICAgICAgICAg
ICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQxLGZtdCQxLGZjb252LHBhZHR5JDEsdyl7
Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHAsIHgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIHN0ciA9IGZpeF9wYWRkaW5nKHBhZHR5JDEsIHcsIGNvbnZlcnRfZmxvYXQo
ZmNvbnYsIHAsIHgpKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGsk
MSwgbyQxLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQkMSk7Ci0g
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9KGskMSxvJDEsYWNjJDEsZm10
JDEsZmNvbnYscGFkdHkkMSx3KSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrJDEsbyQxLGFjYyQx
LGZtdCQxLGZjb252LHBhZHR5JDEsdyl7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24gKHgpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0ciA9IGNvbnZlcnRfZmxvYXQoZmNv
bnYsIDYsIHgpOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3RyJHByaW1lID0gZml4X3BhZGRp
bmcocGFkdHkkMSwgdywgc3RyKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJp
bnRmKGskMSwgbyQxLCAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjJDEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RyJHByaW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
LCBmbXQkMSk7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9KGskMSxv
JDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkkMSx3KSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHZhciBw
JDIgPSBwcmVjWzBdOwotICAgICAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayQxLG8kMSxh
Y2MkMSxmbXQkMSxmY29udixwYWR0eSQxLHcscCQyKXsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gKHgpIHsKLSAgICAgICAgICAgICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhw
YWR0eSQxLCB3LCBjb252ZXJ0X2Zsb2F0KGZjb252LCBwJDIsIHgpKTsKLSAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYWtlX3ByaW50ZihrJDEsIG8kMSwgLyogQWNjX2RhdGFfc3RyaW5nICovQmxv
Y2suX18oNCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MkMSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKSwgZm10JDEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KGsk
MSxvJDEsYWNjJDEsZm10JDEsZmNvbnYscGFkdHkkMSx3LHAkMikpOwotICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGNhc2UgOSA6IAotICAgICAgICAgICAgdmFyIHJlc3Qk
MiA9IGZtdFswXTsKLSAgICAgICAgICAgIHJldHVybiAoZnVuY3Rpb24oayxhY2MscmVzdCQyKXsK
LSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYikgewotICAgICAgICAgICAgICByZXR1cm4g
bWFrZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiID8gInRydWUiIDogImZhbHNlIgotICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwgcmVz
dCQyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0oayxhY2MscmVzdCQyKSk7Ci0gICAg
ICAgIGNhc2UgMTAgOiAKLSAgICAgICAgICAgIF9mbXQgPSBmbXRbMF07Ci0gICAgICAgICAgICBf
YWNjID0gLyogQWNjX2ZsdXNoICovQmxvY2suX18oNywgW2FjY10pOwotICAgICAgICAgICAgY29u
dGludWUgOwotICAgICAgICAgICAgY2FzZSAxMSA6IAotICAgICAgICAgICAgX2ZtdCA9IGZtdFsx
XTsKLSAgICAgICAgICAgIF9hY2MgPSAvKiBBY2Nfc3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygy
LCBbCi0gICAgICAgICAgICAgICAgYWNjLAotICAgICAgICAgICAgICAgIGZtdFswXQotICAgICAg
ICAgICAgICBdKTsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgIGNhc2UgMTIg
OiAKLSAgICAgICAgICAgIF9mbXQgPSBmbXRbMV07Ci0gICAgICAgICAgICBfYWNjID0gLyogQWNj
X2NoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDMsIFsKLSAgICAgICAgICAgICAgICBhY2MsCi0gICAg
ICAgICAgICAgICAgZm10WzBdCi0gICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgY29udGlu
dWUgOwotICAgICAgICAgICAgY2FzZSAxMyA6IAotICAgICAgICAgICAgdmFyIHJlc3QkMyA9IGZt
dFsyXTsKLSAgICAgICAgICAgIHZhciB0eSA9IHN0cmluZ19vZl9mbXR0eShmbXRbMV0pOwotICAg
ICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrLGFjYyxyZXN0JDMsdHkpewotICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGss
IG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhY2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSksIHJlc3QkMyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9KGssYWNjLHJlc3QkMyx0eSkpOwotICAgICAgICBjYXNlIDE0IDogCi0gICAgICAgICAgICB2
YXIgcmVzdCQ0ID0gZm10WzJdOwotICAgICAgICAgICAgdmFyIGZtdHR5ID0gZm10WzFdOwotICAg
ICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrLGFjYyxmbXR0eSxyZXN0JDQpewotICAgICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICByZXR1cm4gbWFrZV9w
cmludGYoaywgbywgYWNjLCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdChyZWNh
c3QocGFyYW1bMF0sIGZtdHR5KSwgcmVzdCQ0KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9KGssYWNjLGZtdHR5LHJlc3QkNCkpOwotICAgICAgICBjYXNlIDE1IDogCi0gICAgICAgICAg
ICB2YXIgcmVzdCQ1ID0gZm10WzBdOwotICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrLGFj
YyxyZXN0JDUpewotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChmLCB4KSB7Ci0gICAgICAg
ICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGVsYXkgKi9CbG9jay5fXyg2
LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uIChvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gQ3VycnkuXzIoZiwgbywgeCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwgcmVzdCQ1KTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0oayxhY2MscmVzdCQ1KSk7Ci0gICAgICAgIGNhc2UgMTYgOiAKLSAgICAgICAg
ICAgIHZhciByZXN0JDYgPSBmbXRbMF07Ci0gICAgICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGss
YWNjLHJlc3QkNil7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGYpIHsKLSAgICAgICAg
ICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kZWxheSAqL0Jsb2NrLl9fKDYs
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZgotICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwgcmVzdCQ2KTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0oayxhY2MscmVzdCQ2KSk7Ci0gICAgICAgIGNhc2UgMTcg
OiAKLSAgICAgICAgICAgIF9mbXQgPSBmbXRbMV07Ci0gICAgICAgICAgICBfYWNjID0gLyogQWNj
X2Zvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMCwgWwotICAgICAgICAgICAgICAgIGFjYywKLSAg
ICAgICAgICAgICAgICBmbXRbMF0KLSAgICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICBjb250
aW51ZSA7Ci0gICAgICAgICAgICBjYXNlIDE4IDogCi0gICAgICAgICAgICB2YXIgbWF0Y2ggPSBm
bXRbMF07Ci0gICAgICAgICAgICBpZiAobWF0Y2gudGFnKSB7Ci0gICAgICAgICAgICAgIHZhciBy
ZXN0JDcgPSBmbXRbMV07Ci0gICAgICAgICAgICAgIHZhciBrJHByaW1lID0gKGZ1bmN0aW9uKGss
YWNjLHJlc3QkNyl7Ci0gICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBrJHByaW1lKGtvYywg
a2FjYykgewotICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBrb2MsIC8qIEFj
Y19mb3JtYXR0aW5nX2dlbiAqL0Jsb2NrLl9fKDEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFjYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFjY19vcGVuX2Jv
eCAqL0Jsb2NrLl9fKDEsIFtrYWNjXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKSwg
cmVzdCQ3KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9KGssYWNjLHJlc3QkNykp
OwotICAgICAgICAgICAgICBfZm10ID0gbWF0Y2hbMF1bMF07Ci0gICAgICAgICAgICAgIF9hY2Mg
PSAvKiBFbmRfb2ZfYWNjICovMDsKLSAgICAgICAgICAgICAgX2sgPSBrJHByaW1lOwotICAgICAg
ICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgIHZhciByZXN0JDggPSBmbXRbMV07Ci0gICAgICAg
ICAgICAgIHZhciBrJHByaW1lJDEgPSAoZnVuY3Rpb24oayxhY2MscmVzdCQ4KXsKLSAgICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uIGskcHJpbWUkMShrb2MsIGthY2MpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbWFrZV9wcmludGYoaywga29jLCAvKiBBY2NfZm9ybWF0dGluZ19nZW4gKi9C
bG9jay5fXygxLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBBY2Nfb3Blbl90YWcgKi9CbG9jay5fXygwLCBba2Fj
Y10pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksIHJlc3QkOCk7Ci0gICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgfShrLGFjYyxyZXN0JDgpKTsKLSAgICAgICAgICAgICAgX2Zt
dCA9IG1hdGNoWzBdWzBdOwotICAgICAgICAgICAgICBfYWNjID0gLyogRW5kX29mX2FjYyAqLzA7
Ci0gICAgICAgICAgICAgIF9rID0gayRwcmltZSQxOwotICAgICAgICAgICAgICBjb250aW51ZSA7
Ci0gICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgMTkgOiAKLSAgICAgICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAgICAgICAg
WwotICAgICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKLSAgICAgICAg
ICAgICAgICAgICAgMTQ0OSwKLSAgICAgICAgICAgICAgICAgICAgNAotICAgICAgICAgICAgICAg
ICAgXQotICAgICAgICAgICAgICAgIF07Ci0gICAgICAgIGNhc2UgMjAgOiAKLSAgICAgICAgICAg
IHZhciByZXN0JDkgPSBmbXRbMl07Ci0gICAgICAgICAgICB2YXIgbmV3X2FjYyA9IC8qIEFjY19p
bnZhbGlkX2FyZyAqL0Jsb2NrLl9fKDgsIFsKLSAgICAgICAgICAgICAgICBhY2MsCi0gICAgICAg
ICAgICAgICAgIlByaW50ZjogYmFkIGNvbnZlcnNpb24gJVsiCi0gICAgICAgICAgICAgIF0pOwot
ICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrLHJlc3QkOSxuZXdfYWNjKXsKLSAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50
ZihrLCBvLCBuZXdfYWNjLCByZXN0JDkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgfShr
LHJlc3QkOSxuZXdfYWNjKSk7Ci0gICAgICAgIGNhc2UgMjEgOiAKLSAgICAgICAgICAgIHZhciBy
ZXN0JDEwID0gZm10WzFdOwotICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrLGFjYyxyZXN0
JDEwKXsKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAobikgewotICAgICAgICAgICAgICB2
YXIgbmV3X2FjY18wMDEgPSBDYW1sX2Zvcm1hdC5jYW1sX2Zvcm1hdF9pbnQoIiV1Iiwgbik7Ci0g
ICAgICAgICAgICAgIHZhciBuZXdfYWNjID0gLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18o
NCwgWwotICAgICAgICAgICAgICAgICAgYWNjLAotICAgICAgICAgICAgICAgICAgbmV3X2FjY18w
MDEKLSAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfcHJpbnRm
KGssIG8sIG5ld19hY2MsIHJlc3QkMTApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgfShr
LGFjYyxyZXN0JDEwKSk7Ci0gICAgICAgIGNhc2UgMjIgOiAKLSAgICAgICAgICAgIHZhciByZXN0
JDExID0gZm10WzBdOwotICAgICAgICAgICAgcmV0dXJuIChmdW5jdGlvbihrLGFjYyxyZXN0JDEx
KXsKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgICAgICAgICB2YXIg
bmV3X2FjYyA9IC8qIEFjY19kYXRhX2NoYXIgKi9CbG9jay5fXyg1LCBbCi0gICAgICAgICAgICAg
ICAgICBhY2MsCi0gICAgICAgICAgICAgICAgICBjCi0gICAgICAgICAgICAgICAgXSk7Ci0gICAg
ICAgICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdfYWNjLCByZXN0JDExKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0oayxhY2MscmVzdCQxMSkpOwotICAgICAgICBjYXNl
IDIzIDogCi0gICAgICAgICAgICB2YXIgayQyID0gazsKLSAgICAgICAgICAgIHZhciBvJDIgPSBv
OwotICAgICAgICAgICAgdmFyIGFjYyQyID0gYWNjOwotICAgICAgICAgICAgdmFyIGlnbiA9IGZt
dFswXTsKLSAgICAgICAgICAgIHZhciBmbXQkMiA9IGZtdFsxXTsKLSAgICAgICAgICAgIGlmICh0
eXBlb2YgaWduID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgICBzd2l0Y2ggKGlnbikgewot
ICAgICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgICAgICAgICB0aHJvdyBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9m
YWlsdXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTUxNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAzOQotICAgICAgICAgICAg
ICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAg
ICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAg
IGNhc2UgMiA6IAotICAgICAgICAgICAgICAgIGNhc2UgNCA6IAotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbWFrZV9pbnZhbGlkX2FyZyhrJDIsIG8kMiwgYWNjJDIsIGZtdCQyKTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgIHN3aXRjaCAoaWduLnRhZyB8IDApIHsKLSAgICAgICAgICAg
ICAgICBjYXNlIDggOiAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0
eShrJDIsIG8kMiwgYWNjJDIsIGlnblsxXSwgZm10JDIpOwotICAgICAgICAgICAgICAgIGNhc2Ug
MCA6IAotICAgICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgIGNhc2UgMiA6
IAotICAgICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgICAgIGNhc2UgNCA6IAot
ICAgICAgICAgICAgICAgIGNhc2UgNSA6IAotICAgICAgICAgICAgICAgIGNhc2UgNiA6IAotICAg
ICAgICAgICAgICAgIGNhc2UgNyA6IAotICAgICAgICAgICAgICAgIGNhc2UgOSA6IAotICAgICAg
ICAgICAgICAgIGNhc2UgMTAgOiAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfaW52
YWxpZF9hcmcoayQyLCBvJDIsIGFjYyQyLCBmbXQkMik7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgY2FzZSAyNCA6IAotICAgICAgICAg
ICAgcmV0dXJuIG1ha2VfY3VzdG9tKGssIG8sIGFjYywgZm10WzJdLCBmbXRbMF0sIEN1cnJ5Ll8x
KGZtdFsxXSwgLyogKCkgKi8wKSk7Ci0gICAgICAgIAotICAgICAgfQotICAgIH0KLSAgfTsKLX0K
LQotZnVuY3Rpb24gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgZm10dHksIGZtdCkgewotICBp
ZiAodHlwZW9mIGZtdHR5ID09PSAibnVtYmVyIikgewotICAgIHJldHVybiBtYWtlX2ludmFsaWRf
YXJnKGssIG8sIGFjYywgZm10KTsKLSAgfQotICBlbHNlIHsKLSAgICBzd2l0Y2ggKGZtdHR5LnRh
ZyB8IDApIHsKLSAgICAgIGNhc2UgMCA6IAotICAgICAgICAgIHZhciByZXN0ID0gZm10dHlbMF07
Ci0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBtYWtl
X2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0LCBmbXQpOwotICAgICAgICAgIH07Ci0gICAgICBj
YXNlIDEgOiAKLSAgICAgICAgICB2YXIgcmVzdCQxID0gZm10dHlbMF07Ci0gICAgICAgICAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywg
bywgYWNjLCByZXN0JDEsIGZtdCk7Ci0gICAgICAgICAgfTsKLSAgICAgIGNhc2UgMiA6IAotICAg
ICAgICAgIHZhciByZXN0JDIgPSBmbXR0eVswXTsKLSAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KCkgewotICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJlc3Qk
MiwgZm10KTsKLSAgICAgICAgICB9OwotICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgdmFyIHJl
c3QkMyA9IGZtdHR5WzBdOwotICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQzLCBmbXQpOwotICAg
ICAgICAgIH07Ci0gICAgICBjYXNlIDQgOiAKLSAgICAgICAgICB2YXIgcmVzdCQ0ID0gZm10dHlb
MF07Ci0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBt
YWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0JDQsIGZtdCk7Ci0gICAgICAgICAgfTsKLSAg
ICAgIGNhc2UgNSA6IAotICAgICAgICAgIHZhciByZXN0JDUgPSBmbXR0eVswXTsKLSAgICAgICAg
ICByZXR1cm4gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0
eShrLCBvLCBhY2MsIHJlc3QkNSwgZm10KTsKLSAgICAgICAgICB9OwotICAgICAgY2FzZSA2IDog
Ci0gICAgICAgICAgdmFyIHJlc3QkNiA9IGZtdHR5WzBdOwotICAgICAgICAgIHJldHVybiBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywg
cmVzdCQ2LCBmbXQpOwotICAgICAgICAgIH07Ci0gICAgICBjYXNlIDcgOiAKLSAgICAgICAgICB2
YXIgcmVzdCQ3ID0gZm10dHlbMF07Ci0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0JDcsIGZtdCk7
Ci0gICAgICAgICAgfTsKLSAgICAgIGNhc2UgOCA6IAotICAgICAgICAgIHZhciByZXN0JDggPSBm
bXR0eVsxXTsKLSAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgcmV0
dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJlc3QkOCwgZm10KTsKLSAgICAgICAgICB9
OwotICAgICAgY2FzZSA5IDogCi0gICAgICAgICAgdmFyIHJlc3QkOSA9IGZtdHR5WzJdOwotICAg
ICAgICAgIHZhciB0eSA9IHRyYW5zKHN5bW0oZm10dHlbMF0pLCBmbXR0eVsxXSk7Ci0gICAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBtYWtlX2Zyb21fZm10
dHkoaywgbywgYWNjLCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdHR5KHR5LCBy
ZXN0JDkpLCBmbXQpOwotICAgICAgICAgIH07Ci0gICAgICBjYXNlIDEwIDogCi0gICAgICAgICAg
dmFyIHJlc3QkMTAgPSBmbXR0eVswXTsKLSAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF8sIF8k
MSkgewotICAgICAgICAgICAgcmV0dXJuIG1ha2VfZnJvbV9mbXR0eShrLCBvLCBhY2MsIHJlc3Qk
MTAsIGZtdCk7Ci0gICAgICAgICAgfTsKLSAgICAgIGNhc2UgMTEgOiAKLSAgICAgICAgICB2YXIg
cmVzdCQxMSA9IGZtdHR5WzBdOwotICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gbWFrZV9mcm9tX2ZtdHR5KGssIG8sIGFjYywgcmVzdCQxMSwgZm10KTsK
LSAgICAgICAgICB9OwotICAgICAgY2FzZSAxMiA6IAotICAgICAgICAgIHZhciByZXN0JDEyID0g
Zm10dHlbMF07Ci0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlX2Zyb21fZm10dHkoaywgbywgYWNjLCByZXN0JDEyLCBmbXQpOwotICAgICAgICAg
IH07Ci0gICAgICBjYXNlIDEzIDogCi0gICAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAgICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAotICAgICAgICAg
ICAgICAgICAgMTU0MCwKLSAgICAgICAgICAgICAgICAgIDMxCi0gICAgICAgICAgICAgICAgXQot
ICAgICAgICAgICAgICBdOwotICAgICAgY2FzZSAxNCA6IAotICAgICAgICAgIHRocm93IFsKLSAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1s
IiwKLSAgICAgICAgICAgICAgICAgIDE1NDEsCi0gICAgICAgICAgICAgICAgICAzMQotICAgICAg
ICAgICAgICAgIF0KLSAgICAgICAgICAgICAgXTsKLSAgICAgIAotICAgIH0KLSAgfQotfQotCi1m
dW5jdGlvbiBtYWtlX2ludmFsaWRfYXJnKGssIG8sIGFjYywgZm10KSB7Ci0gIHJldHVybiBtYWtl
X3ByaW50ZihrLCBvLCAvKiBBY2NfaW52YWxpZF9hcmcgKi9CbG9jay5fXyg4LCBbCi0gICAgICAg
ICAgICAgICAgYWNjLAotICAgICAgICAgICAgICAgICJQcmludGY6IGJhZCBjb252ZXJzaW9uICVf
IgotICAgICAgICAgICAgICBdKSwgZm10KTsKLX0KLQotZnVuY3Rpb24gbWFrZV9zdHJpbmdfcGFk
ZGluZyhrLCBvLCBhY2MsIGZtdCwgcGFkLCB0cmFucykgewotICBpZiAodHlwZW9mIHBhZCA9PT0g
Im51bWJlciIpIHsKLSAgICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKLSAgICAgIHZhciBuZXdfYWNj
XzAwMSA9IEN1cnJ5Ll8xKHRyYW5zLCB4KTsKLSAgICAgIHZhciBuZXdfYWNjID0gLyogQWNjX2Rh
dGFfc3RyaW5nICovQmxvY2suX18oNCwgWwotICAgICAgICAgIGFjYywKLSAgICAgICAgICBuZXdf
YWNjXzAwMQotICAgICAgICBdKTsKLSAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCBuZXdf
YWNjLCBmbXQpOwotICAgIH07Ci0gIH0KLSAgZWxzZSBpZiAocGFkLnRhZykgewotICAgIHZhciBw
YWR0eSA9IHBhZFswXTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKHcsIHgpIHsKLSAgICAgIHZhciBu
ZXdfYWNjXzAwMSA9IGZpeF9wYWRkaW5nKHBhZHR5LCB3LCBDdXJyeS5fMSh0cmFucywgeCkpOwot
ICAgICAgdmFyIG5ld19hY2MgPSAvKiBBY2NfZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCi0g
ICAgICAgICAgYWNjLAotICAgICAgICAgIG5ld19hY2NfMDAxCi0gICAgICAgIF0pOwotICAgICAg
cmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIG5ld19hY2MsIGZtdCk7Ci0gICAgfTsKLSAgfQotICBl
bHNlIHsKLSAgICB2YXIgd2lkdGggPSBwYWRbMV07Ci0gICAgdmFyIHBhZHR5JDEgPSBwYWRbMF07
Ci0gICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7Ci0gICAgICB2YXIgbmV3X2FjY18wMDEgPSBmaXhf
cGFkZGluZyhwYWR0eSQxLCB3aWR0aCwgQ3VycnkuXzEodHJhbnMsIHgpKTsKLSAgICAgIHZhciBu
ZXdfYWNjID0gLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWwotICAgICAgICAgIGFj
YywKLSAgICAgICAgICBuZXdfYWNjXzAwMQotICAgICAgICBdKTsKLSAgICAgIHJldHVybiBtYWtl
X3ByaW50ZihrLCBvLCBuZXdfYWNjLCBmbXQpOwotICAgIH07Ci0gIH0KLX0KLQotZnVuY3Rpb24g
bWFrZV9pbnRfcGFkZGluZ19wcmVjaXNpb24oaywgbywgYWNjLCBmbXQsIHBhZCwgcHJlYywgdHJh
bnMsIGljb252KSB7Ci0gIGlmICh0eXBlb2YgcGFkID09PSAibnVtYmVyIikgewotICAgIGlmICh0
eXBlb2YgcHJlYyA9PT0gIm51bWJlciIpIHsKLSAgICAgIGlmIChwcmVjICE9PSAwKSB7Ci0gICAg
ICAgIHJldHVybiBmdW5jdGlvbiAocCwgeCkgewotICAgICAgICAgIHZhciBzdHIgPSBmaXhfaW50
X3ByZWNpc2lvbihwLCBDdXJyeS5fMih0cmFucywgaWNvbnYsIHgpKTsKLSAgICAgICAgICByZXR1
cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2suX18oNCwgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAotICAgICAgICAgICAgICAgICAgICAgICAgc3Ry
Ci0gICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCk7Ci0gICAgICAgIH07Ci0gICAgICB9Ci0g
ICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7Ci0gICAgICAgICAgdmFy
IHN0ciA9IEN1cnJ5Ll8yKHRyYW5zLCBpY29udiwgeCk7Ci0gICAgICAgICAgcmV0dXJuIG1ha2Vf
cHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFjYywKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cgotICAgICAg
ICAgICAgICAgICAgICAgIF0pLCBmbXQpOwotICAgICAgICB9OwotICAgICAgfQotICAgIH0KLSAg
ICBlbHNlIHsKLSAgICAgIHZhciBwID0gcHJlY1swXTsKLSAgICAgIHJldHVybiBmdW5jdGlvbiAo
eCkgewotICAgICAgICB2YXIgc3RyID0gZml4X2ludF9wcmVjaXNpb24ocCwgQ3VycnkuXzIodHJh
bnMsIGljb252LCB4KSk7Ci0gICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2Nf
ZGF0YV9zdHJpbmcgKi9CbG9jay5fXyg0LCBbCi0gICAgICAgICAgICAgICAgICAgICAgYWNjLAot
ICAgICAgICAgICAgICAgICAgICAgIHN0cgotICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsK
LSAgICAgIH07Ci0gICAgfQotICB9Ci0gIGVsc2UgaWYgKHBhZC50YWcpIHsKLSAgICB2YXIgcGFk
dHkgPSBwYWRbMF07Ci0gICAgaWYgKHR5cGVvZiBwcmVjID09PSAibnVtYmVyIikgewotICAgICAg
aWYgKHByZWMgIT09IDApIHsKLSAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh3LCBwLCB4KSB7Ci0g
ICAgICAgICAgdmFyIHN0ciA9IGZpeF9wYWRkaW5nKHBhZHR5LCB3LCBmaXhfaW50X3ByZWNpc2lv
bihwLCBDdXJyeS5fMih0cmFucywgaWNvbnYsIHgpKSk7Ci0gICAgICAgICAgcmV0dXJuIG1ha2Vf
cHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFjYywKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cgotICAgICAg
ICAgICAgICAgICAgICAgIF0pLCBmbXQpOwotICAgICAgICB9OwotICAgICAgfQotICAgICAgZWxz
ZSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbiAodywgeCkgewotICAgICAgICAgIHZhciBzdHIg
PSBmaXhfcGFkZGluZyhwYWR0eSwgdywgQ3VycnkuXzIodHJhbnMsIGljb252LCB4KSk7Ci0gICAg
ICAgICAgcmV0dXJuIG1ha2VfcHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2Nr
Ll9fKDQsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjYywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cgotICAgICAgICAgICAgICAgICAgICAgIF0pLCBmbXQpOwotICAgICAgICB9Owot
ICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHZhciBwJDEgPSBwcmVjWzBdOwotICAg
ICAgcmV0dXJuIGZ1bmN0aW9uICh3LCB4KSB7Ci0gICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGlu
ZyhwYWR0eSwgdywgZml4X2ludF9wcmVjaXNpb24ocCQxLCBDdXJyeS5fMih0cmFucywgaWNvbnYs
IHgpKSk7Ci0gICAgICAgIHJldHVybiBtYWtlX3ByaW50ZihrLCBvLCAvKiBBY2NfZGF0YV9zdHJp
bmcgKi9CbG9jay5fXyg0LCBbCi0gICAgICAgICAgICAgICAgICAgICAgYWNjLAotICAgICAgICAg
ICAgICAgICAgICAgIHN0cgotICAgICAgICAgICAgICAgICAgICBdKSwgZm10KTsKLSAgICAgIH07
Ci0gICAgfQotICB9Ci0gIGVsc2UgewotICAgIHZhciB3ID0gcGFkWzFdOwotICAgIHZhciBwYWR0
eSQxID0gcGFkWzBdOwotICAgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51bWJlciIpIHsKLSAgICAg
IGlmIChwcmVjICE9PSAwKSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbiAocCwgeCkgewotICAg
ICAgICAgIHZhciBzdHIgPSBmaXhfcGFkZGluZyhwYWR0eSQxLCB3LCBmaXhfaW50X3ByZWNpc2lv
bihwLCBDdXJyeS5fMih0cmFucywgaWNvbnYsIHgpKSk7Ci0gICAgICAgICAgcmV0dXJuIG1ha2Vf
cHJpbnRmKGssIG8sIC8qIEFjY19kYXRhX3N0cmluZyAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFjYywKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cgotICAgICAg
ICAgICAgICAgICAgICAgIF0pLCBmbXQpOwotICAgICAgICB9OwotICAgICAgfQotICAgICAgZWxz
ZSB7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkgewotICAgICAgICAgIHZhciBzdHIgPSBm
aXhfcGFkZGluZyhwYWR0eSQxLCB3LCBDdXJyeS5fMih0cmFucywgaWNvbnYsIHgpKTsKLSAgICAg
ICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxvY2su
X18oNCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgYWNjLAotICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyCi0gICAgICAgICAgICAgICAgICAgICAgXSksIGZtdCk7Ci0gICAgICAgIH07Ci0g
ICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdmFyIHAkMiA9IHByZWNbMF07Ci0gICAg
ICByZXR1cm4gZnVuY3Rpb24gKHgpIHsKLSAgICAgICAgdmFyIHN0ciA9IGZpeF9wYWRkaW5nKHBh
ZHR5JDEsIHcsIGZpeF9pbnRfcHJlY2lzaW9uKHAkMiwgQ3VycnkuXzIodHJhbnMsIGljb252LCB4
KSkpOwotICAgICAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5n
ICovQmxvY2suX18oNCwgWwotICAgICAgICAgICAgICAgICAgICAgIGFjYywKLSAgICAgICAgICAg
ICAgICAgICAgICBzdHIKLSAgICAgICAgICAgICAgICAgICAgXSksIGZtdCk7Ci0gICAgICB9Owot
ICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBtYWtlX2N1c3RvbShrLCBvLCBhY2MsIHJlc3QsIGFy
aXR5LCBmKSB7Ci0gIGlmIChhcml0eSkgewotICAgIHZhciBhcml0eSQxID0gYXJpdHlbMF07Ci0g
ICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7Ci0gICAgICByZXR1cm4gbWFrZV9jdXN0b20oaywgbywg
YWNjLCByZXN0LCBhcml0eSQxLCBDdXJyeS5fMShmLCB4KSk7Ci0gICAgfTsKLSAgfQotICBlbHNl
IHsKLSAgICByZXR1cm4gbWFrZV9wcmludGYoaywgbywgLyogQWNjX2RhdGFfc3RyaW5nICovQmxv
Y2suX18oNCwgWwotICAgICAgICAgICAgICAgICAgYWNjLAotICAgICAgICAgICAgICAgICAgZgot
ICAgICAgICAgICAgICAgIF0pLCByZXN0KTsKLSAgfQotfQotCi1mdW5jdGlvbiBvdXRwdXRfYWNj
KG8sIF9hY2MpIHsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBhY2MgPSBfYWNjOwotICAgIHZh
ciBleGl0ID0gMDsKLSAgICBpZiAodHlwZW9mIGFjYyA9PT0gIm51bWJlciIpIHsKLSAgICAgIHJl
dHVybiAvKiAoKSAqLzA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgc3dpdGNoIChhY2MudGFn
IHwgMCkgewotICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgIHZhciBzID0gc3RyaW5nX29m
X2Zvcm1hdHRpbmdfbGl0KGFjY1sxXSk7Ci0gICAgICAgICAgICBvdXRwdXRfYWNjKG8sIGFjY1sw
XSk7Ci0gICAgICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5vdXRwdXRfc3RyaW5nKG8sIHMpOwot
ICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAgIHZhciBtYXRjaCA9IGFjY1sxXTsKLSAgICAg
ICAgICAgIHZhciBwID0gYWNjWzBdOwotICAgICAgICAgICAgb3V0cHV0X2FjYyhvLCBwKTsKLSAg
ICAgICAgICAgIGlmIChtYXRjaC50YWcpIHsKLSAgICAgICAgICAgICAgUGVydmFzaXZlcy5vdXRw
dXRfc3RyaW5nKG8sICJAWyIpOwotICAgICAgICAgICAgICBfYWNjID0gbWF0Y2hbMF07Ci0gICAg
ICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgUGVydmFzaXZlcy5vdXRwdXRfc3RyaW5nKG8s
ICJAeyIpOwotICAgICAgICAgICAgICBfYWNjID0gbWF0Y2hbMF07Ci0gICAgICAgICAgICAgIGNv
bnRpbnVlIDsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSAyIDogCi0gICAgICAgIGNhc2UgNCA6IAotICAgICAgICAgICAgZXhp
dCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAzIDogCi0gICAgICAgIGNh
c2UgNSA6IAotICAgICAgICAgICAgZXhpdCA9IDI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSA2IDogCi0gICAgICAgICAgICBvdXRwdXRfYWNjKG8sIGFjY1swXSk7Ci0gICAgICAg
ICAgICByZXR1cm4gQ3VycnkuXzEoYWNjWzFdLCBvKTsKLSAgICAgICAgY2FzZSA3IDogCi0gICAg
ICAgICAgICBvdXRwdXRfYWNjKG8sIGFjY1swXSk7Ci0gICAgICAgICAgICByZXR1cm4gQ2FtbF9p
by5jYW1sX21sX2ZsdXNoKG8pOwotICAgICAgICBjYXNlIDggOiAKLSAgICAgICAgICAgIG91dHB1
dF9hY2MobywgYWNjWzBdKTsKLSAgICAgICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAg
ICAgICBhY2NbMV0KLSAgICAgICAgICAgICAgICBdOwotICAgICAgICAKLSAgICAgIH0KLSAgICB9
Ci0gICAgc3dpdGNoIChleGl0KSB7Ci0gICAgICBjYXNlIDEgOiAKLSAgICAgICAgICBvdXRwdXRf
YWNjKG8sIGFjY1swXSk7Ci0gICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMub3V0cHV0X3N0cmlu
ZyhvLCBhY2NbMV0pOwotICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgb3V0cHV0X2FjYyhvLCBh
Y2NbMF0pOwotICAgICAgICAgIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfb3V0cHV0X2NoYXIobywg
YWNjWzFdKTsKLSAgICAgIAotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gYnVmcHV0X2FjYyhi
LCBfYWNjKSB7Ci0gIHdoaWxlKHRydWUpIHsKLSAgICB2YXIgYWNjID0gX2FjYzsKLSAgICB2YXIg
ZXhpdCA9IDA7Ci0gICAgaWYgKHR5cGVvZiBhY2MgPT09ICJudW1iZXIiKSB7Ci0gICAgICByZXR1
cm4gLyogKCkgKi8wOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHN3aXRjaCAoYWNjLnRhZyB8
IDApIHsKLSAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICB2YXIgcyA9IHN0cmluZ19vZl9m
b3JtYXR0aW5nX2xpdChhY2NbMV0pOwotICAgICAgICAgICAgYnVmcHV0X2FjYyhiLCBhY2NbMF0p
OwotICAgICAgICAgICAgcmV0dXJuIEJ1ZmZlci5hZGRfc3RyaW5nKGIsIHMpOwotICAgICAgICBj
YXNlIDEgOiAKLSAgICAgICAgICAgIHZhciBtYXRjaCA9IGFjY1sxXTsKLSAgICAgICAgICAgIHZh
ciBwID0gYWNjWzBdOwotICAgICAgICAgICAgYnVmcHV0X2FjYyhiLCBwKTsKLSAgICAgICAgICAg
IGlmIChtYXRjaC50YWcpIHsKLSAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcoYiwgIkBb
Iik7Ci0gICAgICAgICAgICAgIF9hY2MgPSBtYXRjaFswXTsKLSAgICAgICAgICAgICAgY29udGlu
dWUgOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyhiLCAiQHsiKTsKLSAgICAgICAgICAgICAg
X2FjYyA9IG1hdGNoWzBdOwotICAgICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAg
IAotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMiA6IAot
ICAgICAgICBjYXNlIDQgOiAKLSAgICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgMyA6IAotICAgICAgICBjYXNlIDUgOiAKLSAgICAgICAgICAgIGV4
aXQgPSAyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNiA6IAotICAgICAgICAg
ICAgYnVmcHV0X2FjYyhiLCBhY2NbMF0pOwotICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGFj
Y1sxXSwgYik7Ci0gICAgICAgIGNhc2UgNyA6IAotICAgICAgICAgICAgX2FjYyA9IGFjY1swXTsK
LSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgIGNhc2UgOCA6IAotICAgICAgICAg
ICAgYnVmcHV0X2FjYyhiLCBhY2NbMF0pOwotICAgICAgICAgICAgdGhyb3cgWwotICAgICAgICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAg
ICAgICAgICAgICAgIGFjY1sxXQotICAgICAgICAgICAgICAgIF07Ci0gICAgICAgIAotICAgICAg
fQotICAgIH0KLSAgICBzd2l0Y2ggKGV4aXQpIHsKLSAgICAgIGNhc2UgMSA6IAotICAgICAgICAg
IGJ1ZnB1dF9hY2MoYiwgYWNjWzBdKTsKLSAgICAgICAgICByZXR1cm4gQnVmZmVyLmFkZF9zdHJp
bmcoYiwgYWNjWzFdKTsKLSAgICAgIGNhc2UgMiA6IAotICAgICAgICAgIGJ1ZnB1dF9hY2MoYiwg
YWNjWzBdKTsKLSAgICAgICAgICByZXR1cm4gQnVmZmVyLmFkZF9jaGFyKGIsIGFjY1sxXSk7Ci0g
ICAgICAKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIHN0cnB1dF9hY2MoYiwgX2FjYykgewot
ICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIGFjYyA9IF9hY2M7Ci0gICAgdmFyIGV4aXQgPSAwOwot
ICAgIGlmICh0eXBlb2YgYWNjID09PSAibnVtYmVyIikgewotICAgICAgcmV0dXJuIC8qICgpICov
MDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBzd2l0Y2ggKGFjYy50YWcgfCAwKSB7Ci0gICAg
ICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgdmFyIHMgPSBzdHJpbmdfb2ZfZm9ybWF0dGluZ19s
aXQoYWNjWzFdKTsKLSAgICAgICAgICAgIHN0cnB1dF9hY2MoYiwgYWNjWzBdKTsKLSAgICAgICAg
ICAgIHJldHVybiBCdWZmZXIuYWRkX3N0cmluZyhiLCBzKTsKLSAgICAgICAgY2FzZSAxIDogCi0g
ICAgICAgICAgICB2YXIgbWF0Y2ggPSBhY2NbMV07Ci0gICAgICAgICAgICB2YXIgcCA9IGFjY1sw
XTsKLSAgICAgICAgICAgIHN0cnB1dF9hY2MoYiwgcCk7Ci0gICAgICAgICAgICBpZiAobWF0Y2gu
dGFnKSB7Ci0gICAgICAgICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nKGIsICJAWyIpOwotICAgICAg
ICAgICAgICBfYWNjID0gbWF0Y2hbMF07Ci0gICAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgQnVmZmVyLmFkZF9zdHJpbmcoYiwgIkB7Iik7Ci0gICAgICAgICAgICAgIF9hY2MgPSBtYXRj
aFswXTsKLSAgICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDIgOiAKLSAgICAgICAgY2Fz
ZSA0IDogCi0gICAgICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIDMgOiAKLSAgICAgICAgY2FzZSA1IDogCi0gICAgICAgICAgICBleGl0ID0gMjsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAgIHN0cnB1dF9h
Y2MoYiwgYWNjWzBdKTsKLSAgICAgICAgICAgIHJldHVybiBCdWZmZXIuYWRkX3N0cmluZyhiLCBD
dXJyeS5fMShhY2NbMV0sIC8qICgpICovMCkpOwotICAgICAgICBjYXNlIDcgOiAKLSAgICAgICAg
ICAgIF9hY2MgPSBhY2NbMF07Ci0gICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICBj
YXNlIDggOiAKLSAgICAgICAgICAgIHN0cnB1dF9hY2MoYiwgYWNjWzBdKTsKLSAgICAgICAgICAg
IHRocm93IFsKLSAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFs
aWRfYXJndW1lbnQsCi0gICAgICAgICAgICAgICAgICBhY2NbMV0KLSAgICAgICAgICAgICAgICBd
OwotICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgc3dpdGNoIChleGl0KSB7Ci0gICAgICBj
YXNlIDEgOiAKLSAgICAgICAgICBzdHJwdXRfYWNjKGIsIGFjY1swXSk7Ci0gICAgICAgICAgcmV0
dXJuIEJ1ZmZlci5hZGRfc3RyaW5nKGIsIGFjY1sxXSk7Ci0gICAgICBjYXNlIDIgOiAKLSAgICAg
ICAgICBzdHJwdXRfYWNjKGIsIGFjY1swXSk7Ci0gICAgICAgICAgcmV0dXJuIEJ1ZmZlci5hZGRf
Y2hhcihiLCBhY2NbMV0pOwotICAgICAgCi0gICAgfQotICB9OwotfQotCi1mdW5jdGlvbiBmYWls
d2l0aF9tZXNzYWdlKHBhcmFtKSB7Ci0gIHZhciBidWYgPSBCdWZmZXIuY3JlYXRlKDI1Nik7Ci0g
IHZhciBrID0gZnVuY3Rpb24gKF8sIGFjYykgewotICAgIHN0cnB1dF9hY2MoYnVmLCBhY2MpOwot
ICAgIHZhciBzID0gQnVmZmVyLmNvbnRlbnRzKGJ1Zik7Ci0gICAgdGhyb3cgWwotICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCi0gICAgICAgICAgcwotICAgICAgICBd
OwotICB9OwotICByZXR1cm4gbWFrZV9wcmludGYoaywgLyogKCkgKi8wLCAvKiBFbmRfb2ZfYWNj
ICovMCwgcGFyYW1bMF0pOwotfQotCi1mdW5jdGlvbiBvcGVuX2JveF9vZl9zdHJpbmcoc3RyKSB7
Ci0gIGlmIChzdHIgPT09ICIiKSB7Ci0gICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAg
ICAgMCwKLSAgICAgICAgICAgIC8qIFBwX2JveCAqLzQKLSAgICAgICAgICBdOwotICB9Ci0gIGVs
c2UgewotICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoOwotICAgIHZhciBpbnZhbGlkX2JveCA9IGZ1
bmN0aW9uICgpIHsKLSAgICAgIHJldHVybiBDdXJyeS5fMShmYWlsd2l0aF9tZXNzYWdlKC8qIEZv
cm1hdCAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2Nr
Ll9fKDExLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGJveCBkZXNjcmlw
dGlvbiAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2Nr
Ll9fKDMsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8w
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAgICAgICAgICAgICAgICAgXSks
Ci0gICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgYm94IGRlc2NyaXB0aW9uICVTIgotICAg
ICAgICAgICAgICAgICAgICBdKSwgc3RyKTsKLSAgICB9OwotICAgIHZhciBwYXJzZV9zcGFjZXMg
PSBmdW5jdGlvbiAoX2kpIHsKLSAgICAgIHdoaWxlKHRydWUpIHsKLSAgICAgICAgdmFyIGkgPSBf
aTsKLSAgICAgICAgaWYgKGkgPT09IGxlbikgewotICAgICAgICAgIHJldHVybiBpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdl
dChzdHIsIGkpOwotICAgICAgICAgIGlmIChtYXRjaCAhPT0gOSkgewotICAgICAgICAgICAgaWYg
KG1hdGNoICE9PSAzMikgewotICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKLSAgICAg
ICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKLSAg
ICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgIAotICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgfTsKLSAgICB9OwotICAgIHZhciBwYXJzZV9sd29yZCA9IGZ1bmN0aW9uIChfLCBf
aikgewotICAgICAgd2hpbGUodHJ1ZSkgewotICAgICAgICB2YXIgaiA9IF9qOwotICAgICAgICBp
ZiAoaiA9PT0gbGVuKSB7Ci0gICAgICAgICAgcmV0dXJuIGo7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgaik7Ci0g
ICAgICAgICAgaWYgKG1hdGNoID4gMTIyIHx8IG1hdGNoIDwgOTcpIHsKLSAgICAgICAgICAgIHJl
dHVybiBqOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIF9qID0g
aiArIDEgfCAwOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICB9OwotICAgIH07Ci0gICAgdmFyIHBhcnNlX2ludCA9IGZ1
bmN0aW9uIChfLCBfaikgewotICAgICAgd2hpbGUodHJ1ZSkgewotICAgICAgICB2YXIgaiA9IF9q
OwotICAgICAgICBpZiAoaiA9PT0gbGVuKSB7Ci0gICAgICAgICAgcmV0dXJuIGo7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0
KHN0ciwgaik7Ci0gICAgICAgICAgaWYgKG1hdGNoID49IDQ4KSB7Ci0gICAgICAgICAgICBpZiAo
bWF0Y2ggPj0gNTgpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGo7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgX2ogPSBqICsgMSB8IDA7Ci0gICAgICAg
ICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgfQotICAgICAgICAgIGVsc2UgaWYgKG1hdGNoICE9PSA0NSkgewotICAgICAgICAgICAgcmV0
dXJuIGo7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgX2ogPSBq
ICsgMSB8IDA7Ci0gICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgIH07Ci0gICAgfTsKLSAgICB2YXIgd3N0YXJ0ID0gcGFyc2Vf
c3BhY2VzKDApOwotICAgIHZhciB3ZW5kID0gcGFyc2VfbHdvcmQod3N0YXJ0LCB3c3RhcnQpOwot
ICAgIHZhciBib3hfbmFtZSA9ICQkU3RyaW5nLnN1YihzdHIsIHdzdGFydCwgd2VuZCAtIHdzdGFy
dCB8IDApOwotICAgIHZhciBuc3RhcnQgPSBwYXJzZV9zcGFjZXMod2VuZCk7Ci0gICAgdmFyIG5l
bmQgPSBwYXJzZV9pbnQobnN0YXJ0LCBuc3RhcnQpOwotICAgIHZhciBpbmRlbnQ7Ci0gICAgaWYg
KG5zdGFydCA9PT0gbmVuZCkgewotICAgICAgaW5kZW50ID0gMDsKLSAgICB9Ci0gICAgZWxzZSB7
Ci0gICAgICB0cnkgewotICAgICAgICBpbmRlbnQgPSBDYW1sX2Zvcm1hdC5jYW1sX2ludF9vZl9z
dHJpbmcoJCRTdHJpbmcuc3ViKHN0ciwgbnN0YXJ0LCBuZW5kIC0gbnN0YXJ0IHwgMCkpOwotICAg
ICAgfQotICAgICAgY2F0Y2ggKGV4bil7Ci0gICAgICAgIGlmIChleG5bMF0gPT09IENhbWxfYnVp
bHRpbl9leGNlcHRpb25zLmZhaWx1cmUpIHsKLSAgICAgICAgICBpbmRlbnQgPSBpbnZhbGlkX2Jv
eCgvKiAoKSAqLzApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHRocm93
IGV4bjsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICB2YXIgZXhwX2VuZCA9IHBhcnNl
X3NwYWNlcyhuZW5kKTsKLSAgICBpZiAoZXhwX2VuZCAhPT0gbGVuKSB7Ci0gICAgICBpbnZhbGlk
X2JveCgvKiAoKSAqLzApOwotICAgIH0KLSAgICB2YXIgYm94X3R5cGU7Ci0gICAgc3dpdGNoIChi
b3hfbmFtZSkgewotICAgICAgY2FzZSAiIiA6IAotICAgICAgY2FzZSAiYiIgOiAKLSAgICAgICAg
ICBib3hfdHlwZSA9IC8qIFBwX2JveCAqLzQ7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
ICJoIiA6IAotICAgICAgICAgIGJveF90eXBlID0gLyogUHBfaGJveCAqLzA7Ci0gICAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlICJob3YiIDogCi0gICAgICAgICAgYm94X3R5cGUgPSAvKiBQcF9o
b3Zib3ggKi8zOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAiaHYiIDogCi0gICAgICAg
ICAgYm94X3R5cGUgPSAvKiBQcF9odmJveCAqLzI7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlICJ2IiA6IAotICAgICAgICAgIGJveF90eXBlID0gLyogUHBfdmJveCAqLzE7Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBib3hfdHlwZSA9IGludmFsaWRfYm94
KC8qICgpICovMCk7Ci0gICAgfQotICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAg
IGluZGVudCwKLSAgICAgICAgICAgIGJveF90eXBlCi0gICAgICAgICAgXTsKLSAgfQotfQotCi1m
dW5jdGlvbiBtYWtlX3BhZGRpbmdfZm10X2ViYihwYWQsIGZtdCkgewotICBpZiAodHlwZW9mIHBh
ZCA9PT0gIm51bWJlciIpIHsKLSAgICByZXR1cm4gLyogUGFkZGluZ19mbXRfRUJCICovWwotICAg
ICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCi0gICAgICAgICAgICBmbXQKLSAgICAgICAgICBd
OwotICB9Ci0gIGVsc2UgaWYgKHBhZC50YWcpIHsKLSAgICByZXR1cm4gLyogUGFkZGluZ19mbXRf
RUJCICovWwotICAgICAgICAgICAgLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbcGFkWzBd
XSksCi0gICAgICAgICAgICBmbXQKLSAgICAgICAgICBdOwotICB9Ci0gIGVsc2UgewotICAgIHJl
dHVybiAvKiBQYWRkaW5nX2ZtdF9FQkIgKi9bCi0gICAgICAgICAgICAvKiBMaXRfcGFkZGluZyAq
L0Jsb2NrLl9fKDAsIFsKLSAgICAgICAgICAgICAgICBwYWRbMF0sCi0gICAgICAgICAgICAgICAg
cGFkWzFdCi0gICAgICAgICAgICAgIF0pLAotICAgICAgICAgICAgZm10Ci0gICAgICAgICAgXTsK
LSAgfQotfQotCi1mdW5jdGlvbiBtYWtlX3ByZWNpc2lvbl9mbXRfZWJiKHByZWMsIGZtdCkgewot
ICBpZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7Ci0gICAgaWYgKHByZWMgIT09IDApIHsK
LSAgICAgIHJldHVybiAvKiBQcmVjaXNpb25fZm10X0VCQiAqL1sKLSAgICAgICAgICAgICAgLyog
QXJnX3ByZWNpc2lvbiAqLzEsCi0gICAgICAgICAgICAgIGZtdAotICAgICAgICAgICAgXTsKLSAg
ICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogUHJlY2lzaW9uX2ZtdF9FQkIgKi9bCi0g
ICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCi0gICAgICAgICAgICAgIGZtdAotICAg
ICAgICAgICAgXTsKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIFByZWNpc2lv
bl9mbXRfRUJCICovWwotICAgICAgICAgICAgLyogTGl0X3ByZWNpc2lvbiAqL1twcmVjWzBdXSwK
LSAgICAgICAgICAgIGZtdAotICAgICAgICAgIF07Ci0gIH0KLX0KLQotZnVuY3Rpb24gbWFrZV9w
YWRwcmVjX2ZtdF9lYmIocGFkLCBwcmVjLCBmbXQpIHsKLSAgdmFyIG1hdGNoID0gbWFrZV9wcmVj
aXNpb25fZm10X2ViYihwcmVjLCBmbXQpOwotICB2YXIgZm10JHByaW1lID0gbWF0Y2hbMV07Ci0g
IHZhciBwcmVjJDEgPSBtYXRjaFswXTsKLSAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7
Ci0gICAgcmV0dXJuIC8qIFBhZHByZWNfZm10X0VCQiAqL1sKLSAgICAgICAgICAgIC8qIE5vX3Bh
ZGRpbmcgKi8wLAotICAgICAgICAgICAgcHJlYyQxLAotICAgICAgICAgICAgZm10JHByaW1lCi0g
ICAgICAgICAgXTsKLSAgfQotICBlbHNlIGlmIChwYWQudGFnKSB7Ci0gICAgcmV0dXJuIC8qIFBh
ZHByZWNfZm10X0VCQiAqL1sKLSAgICAgICAgICAgIC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18o
MSwgW3BhZFswXV0pLAotICAgICAgICAgICAgcHJlYyQxLAotICAgICAgICAgICAgZm10JHByaW1l
Ci0gICAgICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyogUGFkcHJlY19mbXRf
RUJCICovWwotICAgICAgICAgICAgLyogTGl0X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCi0gICAg
ICAgICAgICAgICAgcGFkWzBdLAotICAgICAgICAgICAgICAgIHBhZFsxXQotICAgICAgICAgICAg
ICBdKSwKLSAgICAgICAgICAgIHByZWMkMSwKLSAgICAgICAgICAgIGZtdCRwcmltZQotICAgICAg
ICAgIF07Ci0gIH0KLX0KLQotZnVuY3Rpb24gZm10X2ViYl9vZl9zdHJpbmcobGVnYWN5X2JlaGF2
aW9yLCBzdHIpIHsKLSAgdmFyIGxlZ2FjeV9iZWhhdmlvciQxID0gbGVnYWN5X2JlaGF2aW9yID8g
bGVnYWN5X2JlaGF2aW9yWzBdIDogLyogdHJ1ZSAqLzE7Ci0gIHZhciBpbnZhbGlkX2Zvcm1hdF9t
ZXNzYWdlID0gZnVuY3Rpb24gKHN0cl9pbmQsIG1zZykgewotICAgIHJldHVybiBDdXJyeS5fMyhm
YWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogU3Ry
aW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgImlu
dmFsaWQgZm9ybWF0ICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAq
L0Jsb2NrLl9fKDMsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5n
ICovMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Js
b2NrLl9fKDExLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IGF0IGNoYXJh
Y3RlciBudW1iZXIgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50ICov
QmxvY2suX18oNCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50
X2QgKi8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGlu
ZyAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNp
b24gKi8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xp
dGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIsICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
U3RyaW5nICovQmxvY2suX18oMiwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0p
Ci0gICAgICAgICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAgICJpbnZhbGlk
IGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJXMiCi0gICAgICAgICAgICAgICAg
ICBdKSwgc3RyLCBzdHJfaW5kLCBtc2cpOwotICB9OwotICB2YXIgaW52YWxpZF9mb3JtYXRfd2l0
aG91dCA9IGZ1bmN0aW9uIChzdHJfaW5kLCBjLCBzKSB7Ci0gICAgcmV0dXJuIEN1cnJ5Ll80KGZh
aWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWwotICAgICAgICAgICAgICAgICAgICAvKiBTdHJp
bmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW52
YWxpZCBmb3JtYXQgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICov
QmxvY2suX18oMywgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcg
Ki8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxv
Y2suX18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQgY2hhcmFj
dGVyIG51bWJlciAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnQgKi9C
bG9jay5fXyg0LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRf
ZCAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5n
ICovMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lv
biAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0
ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiwgJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Q2hhciAqL0Jsb2NrLl9fKDAsIFsvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyB3aXRob3V0
ICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBT
dHJpbmcgKi9CbG9jay5fXygyLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKV0pCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAg
ICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgJyVj
JyB3aXRob3V0ICVzIgotICAgICAgICAgICAgICAgICAgXSksIHN0ciwgc3RyX2luZCwgYywgcyk7
Ci0gIH07Ci0gIHZhciBleHBlY3RlZF9jaGFyYWN0ZXIgPSBmdW5jdGlvbiAoc3RyX2luZCwgZXhw
ZWN0ZWQsIHJlYWQpIHsKLSAgICByZXR1cm4gQ3VycnkuXzQoZmFpbHdpdGhfbWVzc2FnZSgvKiBG
b3JtYXQgKi9bCi0gICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2su
X18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEs
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZyAqL0Jsb2NrLl9fKDIs
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFk
ZGluZyAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQsIHJlYWQgIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfY2hhciAqL0Jsb2Nr
Ll9fKDEsIFsvKiBFbmRfb2ZfZm9ybWF0ICovMF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICAg
ICAgICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogYXQg
Y2hhcmFjdGVyIG51bWJlciAlZCwgJXMgZXhwZWN0ZWQsIHJlYWQgJUMiCi0gICAgICAgICAgICAg
ICAgICBdKSwgc3RyLCBzdHJfaW5kLCBleHBlY3RlZCwgcmVhZCk7Ci0gIH07Ci0gIHZhciBjb21w
dXRlX2ludF9jb252ID0gZnVuY3Rpb24gKHBjdF9pbmQsIHN0cl9pbmQsIF9wbHVzLCBfc2hhcnAs
IF9zcGFjZSwgc3ltYikgewotICAgIHdoaWxlKHRydWUpIHsKLSAgICAgIHZhciBzcGFjZSA9IF9z
cGFjZTsKLSAgICAgIHZhciBzaGFycCA9IF9zaGFycDsKLSAgICAgIHZhciBwbHVzID0gX3BsdXM7
Ci0gICAgICB2YXIgZXhpdCA9IDA7Ci0gICAgICB2YXIgZXhpdCQxID0gMDsKLSAgICAgIGlmIChw
bHVzICE9PSAwKSB7Ci0gICAgICAgIGlmIChzaGFycCAhPT0gMCkgewotICAgICAgICAgIGV4aXQk
MSA9IDI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc3BhY2UgIT09IDApIHsKLSAgICAg
ICAgICBleGl0ID0gMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChzeW1iICE9PSAxMDAp
IHsKLSAgICAgICAgICBpZiAoc3ltYiAhPT0gMTA1KSB7Ci0gICAgICAgICAgICBleGl0ID0gMTsK
LSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gLyogSW50
X3BpICovNDsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgcmV0dXJuIC8qIEludF9wZCAqLzE7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2Ug
aWYgKHNoYXJwICE9PSAwKSB7Ci0gICAgICAgIGlmIChzcGFjZSAhPT0gMCkgewotICAgICAgICAg
IGV4aXQkMSA9IDI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc3ltYiAhPT0gODgpIHsK
LSAgICAgICAgICBpZiAoc3ltYiAhPT0gMTExKSB7Ci0gICAgICAgICAgICBpZiAoc3ltYiAhPT0g
MTIwKSB7Ci0gICAgICAgICAgICAgIGV4aXQkMSA9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIC8qIEludF9DeCAqLzc7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJu
IC8qIEludF9DbyAqLzExOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICByZXR1cm4gLyogSW50X0NYICovOTsKLSAgICAgICAgfQotICAgICAgfQotICAg
ICAgZWxzZSBpZiAoc3BhY2UgIT09IDApIHsKLSAgICAgICAgaWYgKHN5bWIgIT09IDEwMCkgewot
ICAgICAgICAgIGlmIChzeW1iICE9PSAxMDUpIHsKLSAgICAgICAgICAgIGV4aXQgPSAxOwotICAg
ICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiAvKiBJbnRfc2kg
Ki81OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBy
ZXR1cm4gLyogSW50X3NkICovMjsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0g
ICAgICAgIHZhciBzd2l0Y2hlciA9IHN5bWIgLSA4OCB8IDA7Ci0gICAgICAgIGlmIChzd2l0Y2hl
ciA+IDMyIHx8IHN3aXRjaGVyIDwgMCkgewotICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHN3aXRjaCAoc3dpdGNoZXIpIHsKLSAgICAgICAg
ICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgICAgIHJldHVybiAvKiBJbnRfWCAqLzg7Ci0gICAg
ICAgICAgICBjYXNlIDEyIDogCi0gICAgICAgICAgICAgICAgcmV0dXJuIC8qIEludF9kICovMDsK
LSAgICAgICAgICAgIGNhc2UgMTcgOiAKLSAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50X2kg
Ki8zOwotICAgICAgICAgICAgY2FzZSAyMyA6IAotICAgICAgICAgICAgICAgIHJldHVybiAvKiBJ
bnRfbyAqLzEwOwotICAgICAgICAgICAgY2FzZSAyOSA6IAotICAgICAgICAgICAgICAgIHJldHVy
biAvKiBJbnRfdSAqLzEyOwotICAgICAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICBjYXNl
IDIgOiAKLSAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgY2FzZSA0IDogCi0gICAg
ICAgICAgICBjYXNlIDUgOiAKLSAgICAgICAgICAgIGNhc2UgNiA6IAotICAgICAgICAgICAgY2Fz
ZSA3IDogCi0gICAgICAgICAgICBjYXNlIDggOiAKLSAgICAgICAgICAgIGNhc2UgOSA6IAotICAg
ICAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAgICAgY2FzZSAxMSA6IAotICAgICAgICAgICAg
Y2FzZSAxMyA6IAotICAgICAgICAgICAgY2FzZSAxNCA6IAotICAgICAgICAgICAgY2FzZSAxNSA6
IAotICAgICAgICAgICAgY2FzZSAxNiA6IAotICAgICAgICAgICAgY2FzZSAxOCA6IAotICAgICAg
ICAgICAgY2FzZSAxOSA6IAotICAgICAgICAgICAgY2FzZSAyMCA6IAotICAgICAgICAgICAgY2Fz
ZSAyMSA6IAotICAgICAgICAgICAgY2FzZSAyMiA6IAotICAgICAgICAgICAgY2FzZSAyNCA6IAot
ICAgICAgICAgICAgY2FzZSAyNSA6IAotICAgICAgICAgICAgY2FzZSAyNiA6IAotICAgICAgICAg
ICAgY2FzZSAyNyA6IAotICAgICAgICAgICAgY2FzZSAyOCA6IAotICAgICAgICAgICAgY2FzZSAz
MCA6IAotICAgICAgICAgICAgY2FzZSAzMSA6IAotICAgICAgICAgICAgICAgIGV4aXQgPSAxOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAzMiA6IAotICAgICAgICAg
ICAgICAgIHJldHVybiAvKiBJbnRfeCAqLzY7Ci0gICAgICAgICAgICAKLSAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlmIChleGl0JDEgPT09IDIpIHsKLSAgICAgICAgdmFy
IGV4aXQkMiA9IDA7Ci0gICAgICAgIHZhciBzd2l0Y2hlciQxID0gc3ltYiAtIDg4IHwgMDsKLSAg
ICAgICAgaWYgKHN3aXRjaGVyJDEgPiAzMiB8fCBzd2l0Y2hlciQxIDwgMCkgewotICAgICAgICAg
IGV4aXQgPSAxOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHN3aXRjaCAo
c3dpdGNoZXIkMSkgewotICAgICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAgICAgaWYg
KGxlZ2FjeV9iZWhhdmlvciQxKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50X0NY
ICovOTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDIzIDogCi0gICAgICAgICAgICAgICAgaWYgKGxlZ2Fj
eV9iZWhhdmlvciQxKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gLyogSW50X0NvICovMTE7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSAxMiA6IAotICAgICAgICAgICAgY2FzZSAxNyA6IAotICAgICAg
ICAgICAgY2FzZSAyOSA6IAotICAgICAgICAgICAgICAgIGV4aXQkMiA9IDM7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAgIGNhc2UgMiA6
IAotICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICBjYXNlIDQgOiAKLSAgICAgICAg
ICAgIGNhc2UgNSA6IAotICAgICAgICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgICBjYXNlIDcg
OiAKLSAgICAgICAgICAgIGNhc2UgOCA6IAotICAgICAgICAgICAgY2FzZSA5IDogCi0gICAgICAg
ICAgICBjYXNlIDEwIDogCi0gICAgICAgICAgICBjYXNlIDExIDogCi0gICAgICAgICAgICBjYXNl
IDEzIDogCi0gICAgICAgICAgICBjYXNlIDE0IDogCi0gICAgICAgICAgICBjYXNlIDE1IDogCi0g
ICAgICAgICAgICBjYXNlIDE2IDogCi0gICAgICAgICAgICBjYXNlIDE4IDogCi0gICAgICAgICAg
ICBjYXNlIDE5IDogCi0gICAgICAgICAgICBjYXNlIDIwIDogCi0gICAgICAgICAgICBjYXNlIDIx
IDogCi0gICAgICAgICAgICBjYXNlIDIyIDogCi0gICAgICAgICAgICBjYXNlIDI0IDogCi0gICAg
ICAgICAgICBjYXNlIDI1IDogCi0gICAgICAgICAgICBjYXNlIDI2IDogCi0gICAgICAgICAgICBj
YXNlIDI3IDogCi0gICAgICAgICAgICBjYXNlIDI4IDogCi0gICAgICAgICAgICBjYXNlIDMwIDog
Ci0gICAgICAgICAgICBjYXNlIDMxIDogCi0gICAgICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDMyIDogCi0gICAgICAgICAgICAg
ICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gLyog
SW50X0N4ICovNzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKGV4aXQkMiA9PT0gMykgewotICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkg
ewotICAgICAgICAgICAgX3NoYXJwID0gLyogZmFsc2UgKi8wOwotICAgICAgICAgICAgY29udGlu
dWUgOwotICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsICIn
IyciKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICB9Ci0gICAgICBp
ZiAoZXhpdCA9PT0gMSkgewotICAgICAgICBpZiAocGx1cyAhPT0gMCkgewotICAgICAgICAgIGlm
IChzcGFjZSAhPT0gMCkgewotICAgICAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7Ci0g
ICAgICAgICAgICAgIF9zcGFjZSA9IC8qIGZhbHNlICovMDsKLSAgICAgICAgICAgICAgY29udGlu
dWUgOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwg
LyogIiAiICovMzIsICInKyciKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAg
ICAgZWxzZSBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKLSAgICAgICAgICAgIF9wbHVzID0gLyog
ZmFsc2UgKi8wOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9m
bGFnKHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsICInKyciKTsKLSAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSBpZiAoc3BhY2UgIT09IDApIHsKLSAgICAgICAgICBpZiAobGVnYWN5
X2JlaGF2aW9yJDEpIHsKLSAgICAgICAgICAgIF9zcGFjZSA9IC8qIGZhbHNlICovMDsKLSAgICAg
ICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgIAotICAgICAgICAgIH0KLSAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJf
aW5kLCBzeW1iLCAiJyAnIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKLSAgICAgICAgICAgICAgICAgIDI3MTYsCi0gICAg
ICAgICAgICAgICAgICAyOAotICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgXTsKLSAg
ICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgfTsKLSAgfTsKLSAgdmFyIGluY29tcGF0aWJs
ZV9mbGFnID0gZnVuY3Rpb24gKHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsIG9wdGlvbikgewotICAg
IHZhciBzdWJmbXQgPSAkJFN0cmluZy5zdWIoc3RyLCBwY3RfaW5kLCBzdHJfaW5kIC0gcGN0X2lu
ZCB8IDApOwotICAgIHJldHVybiBDdXJyeS5fNShmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAq
L1sKLSAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwg
WwotICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMsIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICI6IGF0IGNoYXJhY3RlciBudW1iZXIgIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18oNCwgWwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50X2QgKi8wLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsICIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nICovQmxvY2suX18oMiwgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICov
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5n
X2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiBpcyBpbmNvbXBhdGlibGUgd2l0aCAnIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXIgKi9CbG9jay5fXygw
LCBbLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyBpbiBzdWItZm9ybWF0ICIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIENhbWxfc3RyaW5nICovQmxvY2suX18oMywgWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBFbmRfb2ZfZm9ybWF0ICovMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdKV0pCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICAg
ICAgICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAlUzogYXQg
Y2hhcmFjdGVyIG51bWJlciAlZCwgJXMgaXMgaW5jb21wYXRpYmxlIHdpdGggJyVjJyBpbiBzdWIt
Zm9ybWF0ICVTIgotICAgICAgICAgICAgICAgICAgXSksIHN0ciwgcGN0X2luZCwgb3B0aW9uLCBz
eW1iLCBzdWJmbXQpOwotICB9OwotICB2YXIgcGFyc2VfcG9zaXRpdmUgPSBmdW5jdGlvbiAoX3N0
cl9pbmQsIGVuZF9pbmQsIF9hY2MpIHsKLSAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICB2YXIgYWNj
ID0gX2FjYzsKLSAgICAgIHZhciBzdHJfaW5kID0gX3N0cl9pbmQ7Ci0gICAgICBpZiAoc3RyX2lu
ZCA9PT0gZW5kX2luZCkgewotICAgICAgICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQs
ICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKLSAgICAgIH0KLSAgICAgIHZhciBjID0gQ2Ft
bF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7Ci0gICAgICBpZiAoYyA+IDU3IHx8IGMgPCA0OCkg
ewotICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgICAgc3RyX2luZCwK
LSAgICAgICAgICAgICAgICBhY2MKLSAgICAgICAgICAgICAgXTsKLSAgICAgIH0KLSAgICAgIGVs
c2UgewotICAgICAgICB2YXIgbmV3X2FjYyA9IENhbWxfaW50MzIuaW11bChhY2MsIDEwKSArIChj
IC0gLyogIjAiICovNDggfCAwKSB8IDA7Ci0gICAgICAgIGlmIChuZXdfYWNjID4gU3lzLm1heF9z
dHJpbmdfbGVuZ3RoKSB7Ci0gICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8zKGZhaWx3aXRoX21lc3Nh
Z2UoLyogRm9ybWF0ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0
ZXJhbCAqL0Jsb2NrLl9fKDExLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52
YWxpZCBmb3JtYXQgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3Ry
aW5nICovQmxvY2suX18oMywgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IE5vX3BhZGRpbmcgKi8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0
cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIjogaW50ZWdlciAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9f
KDExLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBp
cyBncmVhdGVyIHRoYW4gdGhlIGxpbWl0ICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2suX18oNCwgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcg
Ki8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wcmVjaXNpb24gKi8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICVTOiBpbnRlZ2Vy
ICVkIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGltaXQgJWQiCi0gICAgICAgICAgICAgICAgICAgICAg
ICBdKSwgc3RyLCBuZXdfYWNjLCBTeXMubWF4X3N0cmluZ19sZW5ndGgpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgIF9hY2MgPSBuZXdfYWNjOwotICAgICAgICAgIF9zdHJf
aW5kID0gc3RyX2luZCArIDEgfCAwOwotICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAK
LSAgICAgICAgfQotICAgICAgfQotICAgIH07Ci0gIH07Ci0gIHZhciBwYXJzZV9hZnRlcl9wcmVj
aXNpb24gPSBmdW5jdGlvbiAocGN0X2luZCwgc3RyX2luZCwgZW5kX2luZCwgbWludXMsIHBsdXMs
IHNoYXJwLCBzcGFjZSwgaWduLCBwYWQsIHByZWMpIHsKLSAgICBpZiAoc3RyX2luZCA9PT0gZW5k
X2luZCkgewotICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3Rl
ZCBlbmQgb2YgZm9ybWF0Iik7Ci0gICAgfQotICAgIHZhciBwYXJzZV9jb252ID0gZnVuY3Rpb24g
KHBhZHByZWMpIHsKLSAgICAgIHJldHVybiBwYXJzZV9jb252ZXJzaW9uKHBjdF9pbmQsIHN0cl9p
bmQgKyAxIHwgMCwgZW5kX2luZCwgcGx1cywgc2hhcnAsIHNwYWNlLCBpZ24sIHBhZCwgcHJlYywg
cGFkcHJlYywgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCkpOwotICAgIH07Ci0gICAgaWYg
KHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7Ci0gICAgICB2YXIgZXhpdCA9IDA7Ci0gICAgICBp
ZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgIGlmIChwcmVjICE9PSAwKSB7
Ci0gICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgcmV0dXJuIHBhcnNlX2NvbnYoLyogTm9fcGFkZGluZyAqLzApOwotICAgICAgICB9Ci0gICAg
ICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgZXhpdCA9IDE7Ci0gICAgICB9Ci0gICAgICBpZiAo
ZXhpdCA9PT0gMSkgewotICAgICAgICBpZiAobWludXMgIT09IDApIHsKLSAgICAgICAgICBpZiAo
dHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VfY29u
digvKiBBcmdfcGFkZGluZyAqL0Jsb2NrLl9fKDEsIFsvKiBMZWZ0ICovMF0pKTsKLSAgICAgICAg
ICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VfY29udigvKiBM
aXRfcGFkZGluZyAqL0Jsb2NrLl9fKDAsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
TGVmdCAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNbMF0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIF0pKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBp
ZiAodHlwZW9mIHByZWMgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgcmV0dXJuIHBhcnNlX2Nv
bnYoLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbLyogUmlnaHQgKi8xXSkpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHJldHVybiBwYXJzZV9jb252KC8qIExpdF9w
YWRkaW5nICovQmxvY2suX18oMCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgLyogUmlnaHQg
Ki8xLAotICAgICAgICAgICAgICAgICAgICAgICAgcHJlY1swXQotICAgICAgICAgICAgICAgICAg
ICAgIF0pKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgfQotICAgIGVsc2Ugewot
ICAgICAgcmV0dXJuIHBhcnNlX2NvbnYocGFkKTsKLSAgICB9Ci0gIH07Ci0gIHZhciBwYXJzZV9h
ZnRlcl9wYWRkaW5nID0gZnVuY3Rpb24gKHBjdF9pbmQsIHN0cl9pbmQsIGVuZF9pbmQsIG1pbnVz
LCBwbHVzLCBzaGFycCwgc3BhY2UsIGlnbiwgcGFkKSB7Ci0gICAgaWYgKHN0cl9pbmQgPT09IGVu
ZF9pbmQpIHsKLSAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0
ZWQgZW5kIG9mIGZvcm1hdCIpOwotICAgIH0KLSAgICB2YXIgc3ltYiA9IENhbWxfc3RyaW5nLmdl
dChzdHIsIHN0cl9pbmQpOwotICAgIGlmIChzeW1iICE9PSA0NikgewotICAgICAgcmV0dXJuIHBh
cnNlX2NvbnZlcnNpb24ocGN0X2luZCwgc3RyX2luZCArIDEgfCAwLCBlbmRfaW5kLCBwbHVzLCBz
aGFycCwgc3BhY2UsIGlnbiwgcGFkLCAvKiBOb19wcmVjaXNpb24gKi8wLCBwYWQsIHN5bWIpOwot
ICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHZhciBwY3RfaW5kJDEgPSBwY3RfaW5kOwotICAgICAg
dmFyIHN0cl9pbmQkMSA9IHN0cl9pbmQgKyAxIHwgMDsKLSAgICAgIHZhciBlbmRfaW5kJDEgPSBl
bmRfaW5kOwotICAgICAgdmFyIG1pbnVzJDEgPSBtaW51czsKLSAgICAgIHZhciBwbHVzJDEgPSBw
bHVzOwotICAgICAgdmFyIHNoYXJwJDEgPSBzaGFycDsKLSAgICAgIHZhciBzcGFjZSQxID0gc3Bh
Y2U7Ci0gICAgICB2YXIgaWduJDEgPSBpZ247Ci0gICAgICB2YXIgcGFkJDEgPSBwYWQ7Ci0gICAg
ICBpZiAoc3RyX2luZCQxID09PSBlbmRfaW5kJDEpIHsKLSAgICAgICAgaW52YWxpZF9mb3JtYXRf
bWVzc2FnZShlbmRfaW5kJDEsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKLSAgICAgIH0K
LSAgICAgIHZhciBwYXJzZV9saXRlcmFsID0gZnVuY3Rpb24gKG1pbnVzLCBzdHJfaW5kKSB7Ci0g
ICAgICAgIHZhciBtYXRjaCA9IHBhcnNlX3Bvc2l0aXZlKHN0cl9pbmQsIGVuZF9pbmQkMSwgMCk7
Ci0gICAgICAgIHJldHVybiBwYXJzZV9hZnRlcl9wcmVjaXNpb24ocGN0X2luZCQxLCBtYXRjaFsw
XSwgZW5kX2luZCQxLCBtaW51cywgcGx1cyQxLCBzaGFycCQxLCBzcGFjZSQxLCBpZ24kMSwgcGFk
JDEsIC8qIExpdF9wcmVjaXNpb24gKi9bbWF0Y2hbMV1dKTsKLSAgICAgIH07Ci0gICAgICB2YXIg
c3ltYiQxID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCQxKTsKLSAgICAgIHZhciBleGl0
ID0gMDsKLSAgICAgIHZhciBleGl0JDEgPSAwOwotICAgICAgaWYgKHN5bWIkMSA+PSA0OCkgewot
ICAgICAgICBpZiAoc3ltYiQxID49IDU4KSB7Ci0gICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwobWludXMk
MSwgc3RyX2luZCQxKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAoc3ltYiQx
ID49IDQyKSB7Ci0gICAgICAgIHN3aXRjaCAoc3ltYiQxIC0gNDIgfCAwKSB7Ci0gICAgICAgICAg
Y2FzZSAwIDogCi0gICAgICAgICAgICAgIHJldHVybiBwYXJzZV9hZnRlcl9wcmVjaXNpb24ocGN0
X2luZCQxLCBzdHJfaW5kJDEgKyAxIHwgMCwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNo
YXJwJDEsIHNwYWNlJDEsIGlnbiQxLCBwYWQkMSwgLyogQXJnX3ByZWNpc2lvbiAqLzEpOwotICAg
ICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgICBleGl0
JDEgPSAyOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIDIgOiAKLSAgICAg
ICAgICBjYXNlIDQgOiAKLSAgICAgICAgICBjYXNlIDUgOiAKLSAgICAgICAgICAgICAgZXhpdCA9
IDE7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICB9
Ci0gICAgICBlbHNlIHsKLSAgICAgICAgZXhpdCA9IDE7Ci0gICAgICB9Ci0gICAgICBpZiAoZXhp
dCQxID09PSAyKSB7Ci0gICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgewotICAgICAgICAg
IHJldHVybiBwYXJzZV9saXRlcmFsKG1pbnVzJDEgfHwgKyhzeW1iJDEgPT09IC8qICItIiAqLzQ1
KSwgc3RyX2luZCQxICsgMSB8IDApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgIGV4aXQgPSAxOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBpZiAoZXhpdCA9PT0gMSkg
ewotICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsKLSAgICAgICAgICByZXR1cm4gcGFy
c2VfYWZ0ZXJfcHJlY2lzaW9uKHBjdF9pbmQkMSwgc3RyX2luZCQxLCBlbmRfaW5kJDEsIG1pbnVz
JDEsIHBsdXMkMSwgc2hhcnAkMSwgc3BhY2UkMSwgaWduJDEsIHBhZCQxLCAvKiBMaXRfcHJlY2lz
aW9uICovWzBdKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4g
aW52YWxpZF9mb3JtYXRfd2l0aG91dChzdHJfaW5kJDEgLSAxIHwgMCwgLyogIi4iICovNDYsICJw
cmVjaXNpb24iKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgCi0gICAgfQotICB9OwotICB2
YXIgcGFyc2VfbGl0ZXJhbCA9IGZ1bmN0aW9uIChsaXRfc3RhcnQsIF9zdHJfaW5kLCBlbmRfaW5k
KSB7Ci0gICAgd2hpbGUodHJ1ZSkgewotICAgICAgdmFyIHN0cl9pbmQgPSBfc3RyX2luZDsKLSAg
ICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7Ci0gICAgICAgIHJldHVybiBhZGRfbGl0ZXJh
bChsaXRfc3RhcnQsIHN0cl9pbmQsIC8qIEVuZF9vZl9mb3JtYXQgKi8wKTsKLSAgICAgIH0KLSAg
ICAgIGVsc2UgewotICAgICAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJf
aW5kKTsKLSAgICAgICAgaWYgKG1hdGNoICE9PSAzNykgewotICAgICAgICAgIGlmIChtYXRjaCAh
PT0gNjQpIHsKLSAgICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCArIDEgfCAwOwotICAgICAg
ICAgICAgY29udGludWUgOwotICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgdmFyIG1hdGNoJDEgPSBwYXJzZV9hZnRlcl9hdChzdHJfaW5kICsg
MSB8IDAsIGVuZF9pbmQpOwotICAgICAgICAgICAgcmV0dXJuIGFkZF9saXRlcmFsKGxpdF9zdGFy
dCwgc3RyX2luZCwgbWF0Y2gkMVswXSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgIHZhciBtYXRjaCQyID0gcGFyc2VfZm9ybWF0KHN0cl9pbmQsIGVu
ZF9pbmQpOwotICAgICAgICAgIHJldHVybiBhZGRfbGl0ZXJhbChsaXRfc3RhcnQsIHN0cl9pbmQs
IG1hdGNoJDJbMF0pOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfTsKLSAgfTsKLSAgdmFyIHBh
cnNlX2Zvcm1hdCA9IGZ1bmN0aW9uIChwY3RfaW5kLCBlbmRfaW5kKSB7Ci0gICAgdmFyIHBjdF9p
bmQkMSA9IHBjdF9pbmQ7Ci0gICAgdmFyIHN0cl9pbmQgPSBwY3RfaW5kICsgMSB8IDA7Ci0gICAg
dmFyIGVuZF9pbmQkMSA9IGVuZF9pbmQ7Ci0gICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQkMSkg
ewotICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kJDEsICJ1bmV4cGVjdGVkIGVu
ZCBvZiBmb3JtYXQiKTsKLSAgICB9Ci0gICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHN0
ciwgc3RyX2luZCk7Ci0gICAgaWYgKG1hdGNoICE9PSA5NSkgewotICAgICAgcmV0dXJuIHBhcnNl
X2ZsYWdzKHBjdF9pbmQkMSwgc3RyX2luZCwgZW5kX2luZCQxLCAvKiBmYWxzZSAqLzApOwotICAg
IH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBwYXJzZV9mbGFncyhwY3RfaW5kJDEsIHN0cl9p
bmQgKyAxIHwgMCwgZW5kX2luZCQxLCAvKiB0cnVlICovMSk7Ci0gICAgfQotICB9OwotICB2YXIg
cGFyc2VfYWZ0ZXJfYXQgPSBmdW5jdGlvbiAoc3RyX2luZCwgZW5kX2luZCkgewotICAgIGlmIChz
dHJfaW5kID09PSBlbmRfaW5kKSB7Ci0gICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBDaGFy
X2xpdGVyYWwgKi9CbG9jay5fXygxMiwgWwotICAgICAgICAgICAgICAgICAgLyogIkAiICovNjQs
Ci0gICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAotICAgICAgICAgICAgICAg
IF0pXTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICB2YXIgYyA9IENhbWxfc3RyaW5nLmdldChz
dHIsIHN0cl9pbmQpOwotICAgICAgdmFyIGV4aXQgPSAwOwotICAgICAgaWYgKGMgPj0gNjUpIHsK
LSAgICAgICAgaWYgKGMgPj0gOTQpIHsKLSAgICAgICAgICB2YXIgc3dpdGNoZXIgPSBjIC0gMTIz
IHwgMDsKLSAgICAgICAgICBpZiAoc3dpdGNoZXIgPiAyIHx8IHN3aXRjaGVyIDwgMCkgewotICAg
ICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgc3dpdGNoIChzd2l0Y2hlcikgewotICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAg
ICAgICAgICAgICAgIHJldHVybiBwYXJzZV90YWcoLyogdHJ1ZSAqLzEsIHN0cl9pbmQgKyAxIHwg
MCwgZW5kX2luZCk7Ci0gICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgICAg
ZXhpdCA9IDE7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAy
IDogCi0gICAgICAgICAgICAgICAgICB2YXIgYmVnX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKLSAg
ICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IHBhcnNlX2xpdGVyYWwoYmVnX2luZCwgYmVnX2lu
ZCwgZW5kX2luZCk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBG
b3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBDbG9zZV90YWcgKi8xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0
Y2hbMF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICAgICAgICAgIAot
ICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChj
ID49IDkxKSB7Ci0gICAgICAgICAgc3dpdGNoIChjIC0gOTEgfCAwKSB7Ci0gICAgICAgICAgICBj
YXNlIDAgOiAKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfdGFnKC8qIGZhbHNlICovMCwg
c3RyX2luZCArIDEgfCAwLCBlbmRfaW5kKTsKLSAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAg
ICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSAyIDogCi0gICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMSA9IHN0cl9pbmQgKyAxIHwg
MDsKLSAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IHBhcnNlX2xpdGVyYWwoYmVnX2luZCQx
LCBiZWdfaW5kJDEsIGVuZF9pbmQpOwotICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJC
ICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBDbG9zZV9ib3ggKi8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDFbMF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIGV4aXQg
PSAxOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChjICE9PSAxMCkgewotICAg
ICAgICBpZiAoYyA+PSAzMikgewotICAgICAgICAgIHN3aXRjaCAoYyAtIDMyIHwgMCkgewotICAg
ICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAgICAgdmFyIGJlZ19pbmQkMiA9IHN0cl9p
bmQgKyAxIHwgMDsKLSAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMiA9IHBhcnNlX2xpdGVyYWwo
YmVnX2luZCQyLCBiZWdfaW5kJDIsIGVuZF9pbmQpOwotICAgICAgICAgICAgICAgIHJldHVybiAv
KiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBCcmVhayAqL0Jsb2NrLl9fKDAsIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkAgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMlsw
XQotICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICAgICAgICBjYXNlIDUgOiAK
LSAgICAgICAgICAgICAgICBpZiAoKHN0cl9pbmQgKyAxIHwgMCkgPCBlbmRfaW5kICYmIENhbWxf
c3RyaW5nLmdldChzdHIsIHN0cl9pbmQgKyAxIHwgMCkgPT09IC8qICIlIiAqLzM3KSB7Ci0gICAg
ICAgICAgICAgICAgICB2YXIgYmVnX2luZCQzID0gc3RyX2luZCArIDIgfCAwOwotICAgICAgICAg
ICAgICAgICAgdmFyIG1hdGNoJDMgPSBwYXJzZV9saXRlcmFsKGJlZ19pbmQkMywgYmVnX2luZCQz
LCBlbmRfaW5kKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZv
cm1hdHRpbmdfbGl0ICovQmxvY2suX18oMTcsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIEVzY2FwZWRfcGVyY2VudCAqLzYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXRjaCQzWzBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIHZhciBt
YXRjaCQ0ID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJfaW5kLCBlbmRfaW5kKTsKLSAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIENoYXJfbGl0ZXJhbCAqL0Jsb2Nr
Ll9fKDEyLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAiQCIgKi82NCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDRbMF0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdKV07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSAxMiA6IAotICAgICAgICAgICAgICAgIHZhciBiZWdfaW5kJDQg
PSBzdHJfaW5kICsgMSB8IDA7Ci0gICAgICAgICAgICAgICAgdmFyIG1hdGNoJDUgPSBwYXJzZV9s
aXRlcmFsKGJlZ19pbmQkNCwgYmVnX2luZCQ0LCBlbmRfaW5kKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQnJlYWsgKi9CbG9jay5fXygwLCBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJALCIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
dGNoJDVbMF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOwotICAgICAgICAgICAgY2Fz
ZSAxNCA6IAotICAgICAgICAgICAgICAgIHZhciBiZWdfaW5kJDUgPSBzdHJfaW5kICsgMSB8IDA7
Ci0gICAgICAgICAgICAgICAgdmFyIG1hdGNoJDYgPSBwYXJzZV9saXRlcmFsKGJlZ19pbmQkNSwg
YmVnX2luZCQ1LCBlbmRfaW5kKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAq
L1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogRmx1c2hfbmV3bGluZSAqLzQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkNlswXQotICAgICAgICAgICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICAgICAg
ICBjYXNlIDI3IDogCi0gICAgICAgICAgICAgICAgdmFyIHN0cl9pbmQkMSA9IHN0cl9pbmQgKyAx
IHwgMDsKLSAgICAgICAgICAgICAgICB2YXIgZW5kX2luZCQxID0gZW5kX2luZDsKLSAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2gkNzsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAg
ICAgICAgaWYgKHN0cl9pbmQkMSA9PT0gZW5kX2luZCQxIHx8IENhbWxfc3RyaW5nLmdldChzdHIs
IHN0cl9pbmQkMSkgIT09IC8qICI8IiAqLzYwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKLSAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgIHZhciBzdHJfaW5kXzEgPSBwYXJzZV9zcGFjZXMoc3RyX2luZCQx
ICsgMSB8IDAsIGVuZF9pbmQkMSk7Ci0gICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkOCA9IENh
bWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmRfMSk7Ci0gICAgICAgICAgICAgICAgICB2YXIgZXhp
dCQxID0gMDsKLSAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQ4ID49IDQ4KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChtYXRjaCQ4ID49IDU4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
dGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAg
IGV4aXQkMSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDggIT09IDQ1KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsKLSAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
ICAgICBleGl0JDEgPSAxOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
aWYgKGV4aXQkMSA9PT0gMSkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkOSA9IHBh
cnNlX2ludGVnZXIoc3RyX2luZF8xLCBlbmRfaW5kJDEpOwotICAgICAgICAgICAgICAgICAgICB2
YXIgd2lkdGggPSBtYXRjaCQ5WzFdOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF8z
ID0gcGFyc2Vfc3BhY2VzKG1hdGNoJDlbMF0sIGVuZF9pbmQkMSk7Ci0gICAgICAgICAgICAgICAg
ICAgIHZhciBtYXRjaCQxMCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmRfMyk7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhciBzd2l0Y2hlciQxID0gbWF0Y2gkMTAgLSA0NSB8IDA7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChzd2l0Y2hlciQxID4gMTIgfHwgc3dpdGNoZXIkMSA8IDApIHsK
LSAgICAgICAgICAgICAgICAgICAgICBpZiAoc3dpdGNoZXIkMSAhPT0gMTcpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9mb3VuZDsK
LSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcyA9ICQkU3RyaW5nLnN1YihzdHIsIHN0cl9pbmQk
MSAtIDIgfCAwLCAoc3RyX2luZF8zIC0gc3RyX2luZCQxIHwgMCkgKyAzIHwgMCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtYXRjaCQ3ID0gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cl9pbmRfMyArIDEgfCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBCcmVhayAqL0Jsb2NrLl9fKDAsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAg
ICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3dpdGNoZXIkMSA9PT0gMiB8
fCBzd2l0Y2hlciQxID09PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQx
MSA9IHBhcnNlX2ludGVnZXIoc3RyX2luZF8zLCBlbmRfaW5kJDEpOwotICAgICAgICAgICAgICAg
ICAgICAgIHZhciBzdHJfaW5kXzUgPSBwYXJzZV9zcGFjZXMobWF0Y2gkMTFbMF0sIGVuZF9pbmQk
MSk7Ci0gICAgICAgICAgICAgICAgICAgICAgaWYgKENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9p
bmRfNSkgIT09IC8qICI+IiAqLzYyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBD
YW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7Ci0gICAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICAgIHZhciBzJDEgPSAkJFN0cmluZy5zdWIoc3RyLCBzdHJf
aW5kJDEgLSAyIHwgMCwgKHN0cl9pbmRfNSAtIHN0cl9pbmQkMSB8IDApICsgMyB8IDApOwotICAg
ICAgICAgICAgICAgICAgICAgIG1hdGNoJDcgPSAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cl9pbmRfNSArIDEgfCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgLyog
QnJlYWsgKi9CbG9jay5fXygwLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcyQxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hdGNoJDExWzFdCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAg
ICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGNhdGNoIChleG4pewotICAgICAgICAgICAgICAgICAgaWYgKGV4biA9PT0gQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDcg
PSAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgICAgICAgICBzdHJfaW5kJDEsCi0gICAgICAg
ICAgICAgICAgICAgICAgLyogQnJlYWsgKi9CbG9jay5fXygwLCBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICJAOyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIDAKLSAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAg
ICAgICAgICAgIF07Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBlbHNl
IGlmIChleG5bMF0gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkNyA9IC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAgICAg
ICAgIHN0cl9pbmQkMSwKLSAgICAgICAgICAgICAgICAgICAgICAvKiBCcmVhayAqL0Jsb2NrLl9f
KDAsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkA7IiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgMAotICAgICAgICAgICAgICAg
ICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBleG47
Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHZhciBuZXh0X2luZCA9IG1hdGNoJDdbMF07Ci0gICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEy
ID0gcGFyc2VfbGl0ZXJhbChuZXh0X2luZCwgbmV4dF9pbmQsIGVuZF9pbmQkMSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0dGluZ19saXQgKi9CbG9jay5f
XygxNywgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoJDdbMV0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTJbMF0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSldOwotICAgICAgICAgICAgY2FzZSAyOCA6IAotICAgICAgICAgICAgICAgIHZhciBzdHJf
aW5kJDIgPSBzdHJfaW5kICsgMSB8IDA7Ci0gICAgICAgICAgICAgICAgdmFyIGVuZF9pbmQkMiA9
IGVuZF9pbmQ7Ci0gICAgICAgICAgICAgICAgdmFyIG1hdGNoJDEzOwotICAgICAgICAgICAgICAg
IHRyeSB7Ci0gICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF8xJDEgPSBwYXJzZV9zcGFjZXMo
c3RyX2luZCQyLCBlbmRfaW5kJDIpOwotICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDE0ID0g
Q2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZF8xJDEpOwotICAgICAgICAgICAgICAgICAgdmFy
IGV4aXQkMiA9IDA7Ci0gICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkMTQgPj0gNDgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDE0ID49IDU4KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkMTMgPSAvKiBOb25lICovMDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICBleGl0JDIgPSAx
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChtYXRjaCQxNCAhPT0gNDUpIHsKLSAgICAgICAgICAgICAgICAgICAg
bWF0Y2gkMTMgPSAvKiBOb25lICovMDsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBleGl0JDIgPSAxOwotICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgaWYgKGV4aXQkMiA9PT0gMSkgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTUgPSBwYXJzZV9pbnRlZ2VyKHN0cl9pbmRfMSQxLCBl
bmRfaW5kJDIpOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3RyX2luZF8zJDEgPSBwYXJzZV9z
cGFjZXMobWF0Y2gkMTVbMF0sIGVuZF9pbmQkMik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChD
YW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kXzMkMSkgIT09IC8qICI+IiAqLzYyKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5k
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzJDIgPSAk
JFN0cmluZy5zdWIoc3RyLCBzdHJfaW5kJDIgLSAyIHwgMCwgKHN0cl9pbmRfMyQxIC0gc3RyX2lu
ZCQyIHwgMCkgKyAzIHwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDEzID0gLyogU29t
ZSAqL1svKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cl9pbmRfMyQxICsg
MSB8IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBNYWdpY19zaXplICovQmxvY2suX18o
MSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMkMiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQxNVsxXQotICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAg
ICAgICAgICAgICAgICAgICAgIF1dOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNhdGNoIChleG4kMSl7
Ci0gICAgICAgICAgICAgICAgICBpZiAoZXhuJDEgPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25z
Lm5vdF9mb3VuZCkgewotICAgICAgICAgICAgICAgICAgICBtYXRjaCQxMyA9IC8qIE5vbmUgKi8w
OwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZXhuJDFb
MF0gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbWF0Y2gkMTMgPSAvKiBOb25lICovMDsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBleG4kMTsKLSAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYg
KG1hdGNoJDEzKSB7Ci0gICAgICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTYgPSBtYXRjaCQxM1sw
XTsKLSAgICAgICAgICAgICAgICAgIHZhciBuZXh0X2luZCQxID0gbWF0Y2gkMTZbMF07Ci0gICAg
ICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTcgPSBwYXJzZV9saXRlcmFsKG5leHRfaW5kJDEsIG5l
eHRfaW5kJDEsIGVuZF9pbmQkMik7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VC
QiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXRjaCQxNlsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hdGNoJDE3WzBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIHZhciBt
YXRjaCQxOCA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCQyLCBzdHJfaW5kJDIsIGVuZF9pbmQkMik7
Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5nX2xp
dCAqL0Jsb2NrLl9fKDE3LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTY2Fu
X2luZGljICovQmxvY2suX18oMiwgWy8qICI8IiAqLzYwXSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCQxOFswXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAgIGNh
c2UgMiA6IAotICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICBjYXNlIDQgOiAKLSAg
ICAgICAgICAgIGNhc2UgNiA6IAotICAgICAgICAgICAgY2FzZSA3IDogCi0gICAgICAgICAgICBj
YXNlIDggOiAKLSAgICAgICAgICAgIGNhc2UgOSA6IAotICAgICAgICAgICAgY2FzZSAxMCA6IAot
ICAgICAgICAgICAgY2FzZSAxMSA6IAotICAgICAgICAgICAgY2FzZSAxMyA6IAotICAgICAgICAg
ICAgY2FzZSAxNSA6IAotICAgICAgICAgICAgY2FzZSAxNiA6IAotICAgICAgICAgICAgY2FzZSAx
NyA6IAotICAgICAgICAgICAgY2FzZSAxOCA6IAotICAgICAgICAgICAgY2FzZSAxOSA6IAotICAg
ICAgICAgICAgY2FzZSAyMCA6IAotICAgICAgICAgICAgY2FzZSAyMSA6IAotICAgICAgICAgICAg
Y2FzZSAyMiA6IAotICAgICAgICAgICAgY2FzZSAyMyA6IAotICAgICAgICAgICAgY2FzZSAyNCA6
IAotICAgICAgICAgICAgY2FzZSAyNSA6IAotICAgICAgICAgICAgY2FzZSAyNiA6IAotICAgICAg
ICAgICAgY2FzZSAyOSA6IAotICAgICAgICAgICAgY2FzZSAzMCA6IAotICAgICAgICAgICAgICAg
IGV4aXQgPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAzMSA6
IAotICAgICAgICAgICAgICAgIHZhciBiZWdfaW5kJDYgPSBzdHJfaW5kICsgMSB8IDA7Ci0gICAg
ICAgICAgICAgICAgdmFyIG1hdGNoJDE5ID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDYsIGJlZ19p
bmQkNiwgZW5kX2luZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyog
Rm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIEZGbHVzaCAqLzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMTlb
MF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOwotICAgICAgICAgICAgY2FzZSAzMiA6
IAotICAgICAgICAgICAgICAgIHZhciBiZWdfaW5kJDcgPSBzdHJfaW5kICsgMSB8IDA7Ci0gICAg
ICAgICAgICAgICAgdmFyIG1hdGNoJDIwID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDcsIGJlZ19p
bmQkNywgZW5kX2luZCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyog
Rm9ybWF0dGluZ19saXQgKi9CbG9jay5fXygxNywgWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIEVzY2FwZWRfYXQgKi81LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNo
JDIwWzBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBleGl0ID0gMTsK
LSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHZhciBiZWdfaW5kJDgg
PSBzdHJfaW5kICsgMSB8IDA7Ci0gICAgICAgIHZhciBtYXRjaCQyMSA9IHBhcnNlX2xpdGVyYWwo
YmVnX2luZCQ4LCBiZWdfaW5kJDgsIGVuZF9pbmQpOwotICAgICAgICByZXR1cm4gLyogRm10X0VC
QiAqL1svKiBGb3JtYXR0aW5nX2xpdCAqL0Jsb2NrLl9fKDE3LCBbCi0gICAgICAgICAgICAgICAg
ICAgIC8qIEZvcmNlX25ld2xpbmUgKi8zLAotICAgICAgICAgICAgICAgICAgICBtYXRjaCQyMVsw
XQotICAgICAgICAgICAgICAgICAgXSldOwotICAgICAgfQotICAgICAgaWYgKGV4aXQgPT09IDEp
IHsKLSAgICAgICAgdmFyIGJlZ19pbmQkOSA9IHN0cl9pbmQgKyAxIHwgMDsKLSAgICAgICAgdmFy
IG1hdGNoJDIyID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kJDksIGJlZ19pbmQkOSwgZW5kX2luZCk7
Ci0gICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfbGl0ICovQmxvY2su
X18oMTcsIFsKLSAgICAgICAgICAgICAgICAgICAgLyogU2Nhbl9pbmRpYyAqL0Jsb2NrLl9fKDIs
IFtjXSksCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDIyWzBdCi0gICAgICAgICAgICAgICAg
ICBdKV07Ci0gICAgICB9Ci0gICAgICAKLSAgICB9Ci0gIH07Ci0gIHZhciBhZGRfbGl0ZXJhbCA9
IGZ1bmN0aW9uIChsaXRfc3RhcnQsIHN0cl9pbmQsIGZtdCkgewotICAgIHZhciBzaXplID0gc3Ry
X2luZCAtIGxpdF9zdGFydCB8IDA7Ci0gICAgaWYgKHNpemUgIT09IDApIHsKLSAgICAgIGlmIChz
aXplICE9PSAxKSB7Ci0gICAgICAgIHJldHVybiAvKiBGbXRfRUJCICovWy8qIFN0cmluZ19saXRl
cmFsICovQmxvY2suX18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgJCRTdHJpbmcuc3ViKHN0
ciwgbGl0X3N0YXJ0LCBzaXplKSwKLSAgICAgICAgICAgICAgICAgICAgZm10Ci0gICAgICAgICAg
ICAgICAgICBdKV07Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIC8qIEZt
dF9FQkIgKi9bLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKLSAgICAgICAgICAgICAg
ICAgICAgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgbGl0X3N0YXJ0KSwKLSAgICAgICAgICAgICAgICAg
ICAgZm10Ci0gICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2Ug
ewotICAgICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bZm10XTsKLSAgICB9Ci0gIH07Ci0gIHZhciBw
YXJzZV9zcGFjZXMgPSBmdW5jdGlvbiAoX3N0cl9pbmQsIGVuZF9pbmQpIHsKLSAgICB3aGlsZSh0
cnVlKSB7Ci0gICAgICB2YXIgc3RyX2luZCA9IF9zdHJfaW5kOwotICAgICAgaWYgKHN0cl9pbmQg
PT09IGVuZF9pbmQpIHsKLSAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAi
dW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7Ci0gICAgICB9Ci0gICAgICBpZiAoQ2FtbF9zdHJp
bmcuZ2V0KHN0ciwgc3RyX2luZCkgPT09IC8qICIgIiAqLzMyKSB7Ci0gICAgICAgIF9zdHJfaW5k
ID0gc3RyX2luZCArIDEgfCAwOwotICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgIAotICAgICAg
fQotICAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBzdHJfaW5kOwotICAgICAgfQotICAgIH07
Ci0gIH07Ci0gIHZhciBwYXJzZV9pbnRlZ2VyID0gZnVuY3Rpb24gKHN0cl9pbmQsIGVuZF9pbmQp
IHsKLSAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgewotICAgICAgaW52YWxpZF9mb3JtYXRf
bWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7Ci0gICAgfQotICAg
IHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOwotICAgIGlmIChtYXRj
aCA+PSA0OCkgewotICAgICAgaWYgKG1hdGNoID49IDU4KSB7Ci0gICAgICAgIHRocm93IFsKLSAg
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKLSAg
ICAgICAgICAgICAgICAyNjIxLAotICAgICAgICAgICAgICAgIDExCi0gICAgICAgICAgICAgIF0K
LSAgICAgICAgICAgIF07Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIHBh
cnNlX3Bvc2l0aXZlKHN0cl9pbmQsIGVuZF9pbmQsIDApOwotICAgICAgfQotICAgIH0KLSAgICBl
bHNlIGlmIChtYXRjaCAhPT0gNDUpIHsKLSAgICAgIHRocm93IFsKLSAgICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAiY2FtbGludGVybmFsRm9ybWF0Lm1sIiwKLSAgICAgICAgICAgICAgMjYyMSwKLSAg
ICAgICAgICAgICAgMTEKLSAgICAgICAgICAgIF0KLSAgICAgICAgICBdOwotICAgIH0KLSAgICBl
bHNlIHsKLSAgICAgIGlmICgoc3RyX2luZCArIDEgfCAwKSA9PT0gZW5kX2luZCkgewotICAgICAg
ICBpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3Jt
YXQiKTsKLSAgICAgIH0KLSAgICAgIHZhciBjID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2lu
ZCArIDEgfCAwKTsKLSAgICAgIGlmIChjID4gNTcgfHwgYyA8IDQ4KSB7Ci0gICAgICAgIHJldHVy
biBleHBlY3RlZF9jaGFyYWN0ZXIoc3RyX2luZCArIDEgfCAwLCAiZGlnaXQiLCBjKTsKLSAgICAg
IH0KLSAgICAgIGVsc2UgewotICAgICAgICB2YXIgbWF0Y2gkMSA9IHBhcnNlX3Bvc2l0aXZlKHN0
cl9pbmQgKyAxIHwgMCwgZW5kX2luZCwgMCk7Ci0gICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
LSAgICAgICAgICAgICAgICBtYXRjaCQxWzBdLAotICAgICAgICAgICAgICAgIC1tYXRjaCQxWzFd
IHwgMAotICAgICAgICAgICAgICBdOwotICAgICAgfQotICAgIH0KLSAgfTsKLSAgdmFyIGNvbXB1
dGVfZmxvYXRfY29udiA9IGZ1bmN0aW9uIChwY3RfaW5kLCBzdHJfaW5kLCBfcGx1cywgX3NwYWNl
LCBzeW1iKSB7Ci0gICAgd2hpbGUodHJ1ZSkgewotICAgICAgdmFyIHNwYWNlID0gX3NwYWNlOwot
ICAgICAgdmFyIHBsdXMgPSBfcGx1czsKLSAgICAgIGlmIChwbHVzICE9PSAwKSB7Ci0gICAgICAg
IGlmIChzcGFjZSAhPT0gMCkgewotICAgICAgICAgIGlmIChsZWdhY3lfYmVoYXZpb3IkMSkgewot
ICAgICAgICAgICAgX3NwYWNlID0gLyogZmFsc2UgKi8wOwotICAgICAgICAgICAgY29udGludWUg
OwotICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIC8qICIgIiAqLzMy
LCAiJysnIik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgIHZhciBleGl0ID0gMDsKLSAgICAgICAgICBpZiAoc3ltYiA+PSA3MikgewotICAgICAgICAg
ICAgdmFyIHN3aXRjaGVyID0gc3ltYiAtIDEwMSB8IDA7Ci0gICAgICAgICAgICBpZiAoc3dpdGNo
ZXIgPiAyIHx8IHN3aXRjaGVyIDwgMCkgewotICAgICAgICAgICAgICBleGl0ID0gMTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICBzd2l0Y2ggKHN3aXRj
aGVyKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBGbG9hdF9wZSAqLzQ7Ci0gICAgICAgICAgICAgICAgY2FzZSAxIDogCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9wZiAqLzE7Ci0gICAgICAgICAgICAgICAgY2Fz
ZSAyIDogCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9wZyAqLzEwOwotICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
fQotICAgICAgICAgIGVsc2UgaWYgKHN5bWIgPj0gNjkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAo
c3ltYiAtIDY5IHwgMCkgewotICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAg
ICAgIHJldHVybiAvKiBGbG9hdF9wRSAqLzc7Ci0gICAgICAgICAgICAgIGNhc2UgMSA6IAotICAg
ICAgICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfcEcg
Ki8xMzsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgfQotICAgICAgICAg
IGlmIChleGl0ID09PSAxKSB7Ci0gICAgICAgICAgICBpZiAobGVnYWN5X2JlaGF2aW9yJDEpIHsK
LSAgICAgICAgICAgICAgX3BsdXMgPSAvKiBmYWxzZSAqLzA7Ci0gICAgICAgICAgICAgIGNvbnRp
bnVlIDsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQs
IHN5bWIsICInKyciKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0g
ICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHNwYWNlICE9PSAwKSB7Ci0gICAgICAg
IHZhciBleGl0JDEgPSAwOwotICAgICAgICBpZiAoc3ltYiA+PSA3MikgewotICAgICAgICAgIHZh
ciBzd2l0Y2hlciQxID0gc3ltYiAtIDEwMSB8IDA7Ci0gICAgICAgICAgaWYgKHN3aXRjaGVyJDEg
PiAyIHx8IHN3aXRjaGVyJDEgPCAwKSB7Ci0gICAgICAgICAgICBleGl0JDEgPSAxOwotICAgICAg
ICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN3aXRjaCAoc3dpdGNoZXIkMSkg
ewotICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBG
bG9hdF9zZSAqLzU7Ci0gICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgICAg
cmV0dXJuIC8qIEZsb2F0X3NmICovMjsKLSAgICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAg
ICAgICAgICAgICByZXR1cm4gLyogRmxvYXRfc2cgKi8xMTsKLSAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHN5bWIg
Pj0gNjkpIHsKLSAgICAgICAgICBzd2l0Y2ggKHN5bWIgLSA2OSB8IDApIHsKLSAgICAgICAgICAg
IGNhc2UgMCA6IAotICAgICAgICAgICAgICAgIHJldHVybiAvKiBGbG9hdF9zRSAqLzg7Ci0gICAg
ICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAgICAgICBleGl0JDEgPSAxOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAgICAgcmV0
dXJuIC8qIEZsb2F0X3NHICovMTQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgZXhpdCQxID0gMTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoZXhpdCQxID09PSAxKSB7Ci0gICAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQx
KSB7Ci0gICAgICAgICAgICBfc3BhY2UgPSAvKiBmYWxzZSAqLzA7Ci0gICAgICAgICAgICBjb250
aW51ZSA7Ci0gICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgc3ltYiwg
IicgJyIpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgIH0KLSAgICAg
IGVsc2UgaWYgKHN5bWIgPj0gNzIpIHsKLSAgICAgICAgdmFyIHN3aXRjaGVyJDIgPSBzeW1iIC0g
MTAxIHwgMDsKLSAgICAgICAgaWYgKHN3aXRjaGVyJDIgPiAyIHx8IHN3aXRjaGVyJDIgPCAwKSB7
Ci0gICAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAg
ICJjYW1saW50ZXJuYWxGb3JtYXQubWwiLAotICAgICAgICAgICAgICAgICAgMjc0NCwKLSAgICAg
ICAgICAgICAgICAgIDI1Ci0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICBdOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHN3aXRjaCAoc3dpdGNoZXIkMikgewot
ICAgICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZsb2F0X2Ug
Ki8zOwotICAgICAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZs
b2F0X2YgKi8wOwotICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAgICAgcmV0dXJu
IC8qIEZsb2F0X2cgKi85OwotICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICB9Ci0gICAgICBlbHNlIGlmIChzeW1iID49IDY5KSB7Ci0gICAgICAgIHN3aXRjaCAoc3lt
YiAtIDY5IHwgMCkgewotICAgICAgICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgICByZXR1cm4g
LyogRmxvYXRfRSAqLzY7Ci0gICAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICAgIHJldHVy
biAvKiBGbG9hdF9GICovMTU7Ci0gICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAgIHJl
dHVybiAvKiBGbG9hdF9HICovMTI7Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0KLSAg
ICAgIGVsc2UgewotICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCi0gICAgICAgICAgICAgICAgMjc0NCwKLSAgICAg
ICAgICAgICAgICAyNQotICAgICAgICAgICAgICBdCi0gICAgICAgICAgICBdOwotICAgICAgfQot
ICAgIH07Ci0gIH07Ci0gIHZhciBzZWFyY2hfc3ViZm9ybWF0X2VuZCA9IGZ1bmN0aW9uIChfc3Ry
X2luZCwgZW5kX2luZCwgYykgewotICAgIHdoaWxlKHRydWUpIHsKLSAgICAgIHZhciBzdHJfaW5k
ID0gX3N0cl9pbmQ7Ci0gICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgewotICAgICAgICBD
dXJyeS5fMyhmYWlsd2l0aF9tZXNzYWdlKC8qIEZvcm1hdCAqL1sKLSAgICAgICAgICAgICAgICAg
IC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAiaW52YWxpZCBmb3JtYXQgIiwKLSAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmlu
ZyAqL0Jsb2NrLl9fKDMsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGlu
ZyAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxv
Y2suX18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc6IHVuY2xvc2VkIHN1
Yi1mb3JtYXQsIGV4cGVjdGVkICInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
Q2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiAiJSIgKi8zNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBDaGFyICovQmxvY2suX18oMCwgWy8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciIGF0IGNoYXJhY3Rl
ciBudW1iZXIgJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IEludCAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvKiBJbnRfZCAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAg
ICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAgICAg
ICAgICAnaW52YWxpZCBmb3JtYXQgJVM6IHVuY2xvc2VkIHN1Yi1mb3JtYXQsIGV4cGVjdGVkICIl
JSVjIiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkJwotICAgICAgICAgICAgICAgIF0pLCBzdHIsIGMs
IGVuZF9pbmQpOwotICAgICAgfQotICAgICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHN0
ciwgc3RyX2luZCk7Ci0gICAgICBpZiAobWF0Y2ggIT09IDM3KSB7Ci0gICAgICAgIF9zdHJfaW5k
ID0gc3RyX2luZCArIDEgfCAwOwotICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgIAotICAgICAg
fQotICAgICAgZWxzZSB7Ci0gICAgICAgIGlmICgoc3RyX2luZCArIDEgfCAwKSA9PT0gZW5kX2lu
ZCkgewotICAgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0
ZWQgZW5kIG9mIGZvcm1hdCIpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChDYW1sX3N0cmluZy5n
ZXQoc3RyLCBzdHJfaW5kICsgMSB8IDApID09PSBjKSB7Ci0gICAgICAgICAgcmV0dXJuIHN0cl9p
bmQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgdmFyIG1hdGNoJDEgPSBD
YW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kICsgMSB8IDApOwotICAgICAgICAgIHZhciBleGl0
ID0gMDsKLSAgICAgICAgICBpZiAobWF0Y2gkMSA+PSA5NSkgewotICAgICAgICAgICAgaWYgKG1h
dGNoJDEgPj0gMTIzKSB7Ci0gICAgICAgICAgICAgIGlmIChtYXRjaCQxID49IDEyNikgewotICAg
ICAgICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMSAtIDEyMyB8IDApIHsKLSAgICAg
ICAgICAgICAgICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgICAgICAgICAgIHZhciBzdWJfZW5k
ID0gc2VhcmNoX3N1YmZvcm1hdF9lbmQoc3RyX2luZCArIDIgfCAwLCBlbmRfaW5kLCAvKiAifSIg
Ki8xMjUpOwotICAgICAgICAgICAgICAgICAgICAgIF9zdHJfaW5kID0gc3ViX2VuZCArIDIgfCAw
OwotICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIDEgOiAKLSAgICAgICAgICAgICAgICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZF9jaGFyYWN0ZXIoc3RyX2luZCArIDEgfCAwLCAi
Y2hhcmFjdGVyICcpJyIsIC8qICJ9IiAqLzEyNSk7Ci0gICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGVsc2UgaWYgKG1hdGNoJDEgPj0gOTYpIHsKLSAgICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgaWYgKChzdHJfaW5k
ICsgMiB8IDApID09PSBlbmRfaW5kKSB7Ci0gICAgICAgICAgICAgICAgaW52YWxpZF9mb3JtYXRf
bWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7Ci0gICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBDYW1sX3N0cmluZy5nZXQoc3RyLCBz
dHJfaW5kICsgMiB8IDApOwotICAgICAgICAgICAgICBpZiAobWF0Y2gkMiAhPT0gNDApIHsKLSAg
ICAgICAgICAgICAgICBpZiAobWF0Y2gkMiAhPT0gMTIzKSB7Ci0gICAgICAgICAgICAgICAgICBf
c3RyX2luZCA9IHN0cl9pbmQgKyAzIHwgMDsKLSAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsK
LSAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgIHZhciBzdWJfZW5kJDEgPSBzZWFyY2hfc3ViZm9ybWF0
X2VuZChzdHJfaW5kICsgMyB8IDAsIGVuZF9pbmQsIC8qICJ9IiAqLzEyNSk7Ci0gICAgICAgICAg
ICAgICAgICBfc3RyX2luZCA9IHN1Yl9lbmQkMSArIDIgfCAwOwotICAgICAgICAgICAgICAgICAg
Y29udGludWUgOwotICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHZhciBzdWJf
ZW5kJDIgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZChzdHJfaW5kICsgMyB8IDAsIGVuZF9pbmQsIC8q
ICIpIiAqLzQxKTsKLSAgICAgICAgICAgICAgICBfc3RyX2luZCA9IHN1Yl9lbmQkMiArIDIgfCAw
OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmICht
YXRjaCQxICE9PSA0MCkgewotICAgICAgICAgICAgaWYgKG1hdGNoJDEgIT09IDQxKSB7Ci0gICAg
ICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgIHJldHVybiBleHBlY3RlZF9jaGFyYWN0ZXIoc3RyX2luZCArIDEgfCAwLCAi
Y2hhcmFjdGVyICd9JyIsIC8qICIpIiAqLzQxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9
Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgc3ViX2VuZCQzID0gc2VhcmNoX3N1
YmZvcm1hdF9lbmQoc3RyX2luZCArIDIgfCAwLCBlbmRfaW5kLCAvKiAiKSIgKi80MSk7Ci0gICAg
ICAgICAgICBfc3RyX2luZCA9IHN1Yl9lbmQkMyArIDIgfCAwOwotICAgICAgICAgICAgY29udGlu
dWUgOwotICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICAgIGlmIChleGl0ID09PSAx
KSB7Ci0gICAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAyIHwgMDsKLSAgICAgICAgICAg
IGNvbnRpbnVlIDsKLSAgICAgICAgICAgIAotICAgICAgICAgIH0KLSAgICAgICAgICAKLSAgICAg
ICAgfQotICAgICAgfQotICAgIH07Ci0gIH07Ci0gIHZhciBwYXJzZV9jb252ZXJzaW9uID0gZnVu
Y3Rpb24gKHBjdF9pbmQsIHN0cl9pbmQsIGVuZF9pbmQsIHBsdXMsIHNoYXJwLCBzcGFjZSwgaWdu
LCBwYWQsIHByZWMsIHBhZHByZWMsIHN5bWIpIHsKLSAgICB2YXIgcGx1c191c2VkID0gLyogZmFs
c2UgKi8wOwotICAgIHZhciBzaGFycF91c2VkID0gLyogZmFsc2UgKi8wOwotICAgIHZhciBzcGFj
ZV91c2VkID0gLyogZmFsc2UgKi8wOwotICAgIHZhciBpZ25fdXNlZCA9IFsvKiBmYWxzZSAqLzBd
OwotICAgIHZhciBwYWRfdXNlZCA9IC8qIGZhbHNlICovMDsKLSAgICB2YXIgcHJlY191c2VkID0g
Wy8qIGZhbHNlICovMF07Ci0gICAgdmFyIGNoZWNrX25vXzAgPSBmdW5jdGlvbiAoc3ltYiwgcGFk
KSB7Ci0gICAgICBpZiAodHlwZW9mIHBhZCA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgcmV0dXJu
IHBhZDsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHBhZC50YWcpIHsKLSAgICAgICAgaWYgKHBh
ZFswXSA+PSAyKSB7Ci0gICAgICAgICAgaWYgKGxlZ2FjeV9iZWhhdmlvciQxKSB7Ci0gICAgICAg
ICAgICByZXR1cm4gLyogQXJnX3BhZGRpbmcgKi9CbG9jay5fXygxLCBbLyogUmlnaHQgKi8xXSk7
Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGluY29t
cGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIsICIwIik7Ci0gICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHJldHVybiBwYWQ7Ci0gICAgICAg
IH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHBhZFswXSA+PSAyKSB7Ci0gICAgICAgIGlmIChs
ZWdhY3lfYmVoYXZpb3IkMSkgewotICAgICAgICAgIHJldHVybiAvKiBMaXRfcGFkZGluZyAqL0Js
b2NrLl9fKDAsIFsKLSAgICAgICAgICAgICAgICAgICAgLyogUmlnaHQgKi8xLAotICAgICAgICAg
ICAgICAgICAgICBwYWRbMV0KLSAgICAgICAgICAgICAgICAgIF0pOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgIHJldHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBz
dHJfaW5kLCBzeW1iLCAiMCIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAg
ICAgICAgcmV0dXJuIHBhZDsKLSAgICAgIH0KLSAgICB9OwotICAgIHZhciBvcHRfb2ZfcGFkID0g
ZnVuY3Rpb24gKGMsIHBhZCkgewotICAgICAgaWYgKHR5cGVvZiBwYWQgPT09ICJudW1iZXIiKSB7
Ci0gICAgICAgIHJldHVybiAvKiBOb25lICovMDsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHBh
ZC50YWcpIHsKLSAgICAgICAgcmV0dXJuIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9p
bmQsIGMsICInKiciKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzd2l0Y2ggKHBh
ZFswXSkgewotICAgICAgICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgICBpZiAobGVnYWN5X2Jl
aGF2aW9yJDEpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gLyogU29tZSAqL1twYWRbMV1dOwot
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJl
dHVybiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBjLCAiJy0nIik7Ci0gICAg
ICAgICAgICAgIH0KLSAgICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAgICAgcmV0dXJuIC8q
IFNvbWUgKi9bcGFkWzFdXTsKLSAgICAgICAgICBjYXNlIDIgOiAKLSAgICAgICAgICAgICAgaWYg
KGxlZ2FjeV9iZWhhdmlvciQxKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC8qIFNvbWUgKi9b
cGFkWzFdXTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgYywgIicw
JyIpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0KLSAg
ICB9OwotICAgIHZhciBnZXRfcHJlY19vcHQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICBwcmVjX3Vz
ZWRbMF0gPSAvKiB0cnVlICovMTsKLSAgICAgIGlmICh0eXBlb2YgcHJlYyA9PT0gIm51bWJlciIp
IHsKLSAgICAgICAgaWYgKHByZWMgIT09IDApIHsKLSAgICAgICAgICByZXR1cm4gaW5jb21wYXRp
YmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgLyogIl8iICovOTUsICInKiciKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gLyogTm9uZSAqLzA7Ci0gICAgICAg
IH0KLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4gLyogU29tZSAqL1twcmVj
WzBdXTsKLSAgICAgIH0KLSAgICB9OwotICAgIHZhciBmbXRfcmVzdWx0OwotICAgIHZhciBleGl0
ID0gMDsKLSAgICB2YXIgZXhpdCQxID0gMDsKLSAgICB2YXIgZXhpdCQyID0gMDsKLSAgICBpZiAo
c3ltYiA+PSAxMjQpIHsKLSAgICAgIGV4aXQkMSA9IDY7Ci0gICAgfQotICAgIGVsc2UgewotICAg
ICAgc3dpdGNoIChzeW1iKSB7Ci0gICAgICAgIGNhc2UgMzMgOiAKLSAgICAgICAgICAgIHZhciBt
YXRjaCA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7Ci0gICAgICAg
ICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBGbHVzaCAqL0Jsb2NrLl9fKDEwLCBb
bWF0Y2hbMF1dKV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0MCA6IAotICAg
ICAgICAgICAgdmFyIHN1Yl9lbmQgPSBzZWFyY2hfc3ViZm9ybWF0X2VuZChzdHJfaW5kLCBlbmRf
aW5kLCAvKiAiKSIgKi80MSk7Ci0gICAgICAgICAgICB2YXIgYmVnX2luZCA9IHN1Yl9lbmQgKyAy
IHwgMDsKLSAgICAgICAgICAgIHZhciBtYXRjaCQxID0gcGFyc2VfbGl0ZXJhbChiZWdfaW5kLCBi
ZWdfaW5kLCBlbmRfaW5kKTsKLSAgICAgICAgICAgIHZhciBmbXRfcmVzdCA9IG1hdGNoJDFbMF07
Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMiA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2lu
ZCwgc3ViX2VuZCk7Ci0gICAgICAgICAgICB2YXIgc3ViX2ZtdHR5ID0gZm10dHlfb2ZfZm10KG1h
dGNoJDJbMF0pOwotICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGln
bikgewotICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwotICAgICAgICAgICAg
ICB2YXIgaWdub3JlZF8wMDAgPSBvcHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWQpOwotICAgICAg
ICAgICAgICB2YXIgaWdub3JlZCA9IC8qIElnbm9yZWRfZm9ybWF0X3N1YnN0ICovQmxvY2suX18o
OCwgWwotICAgICAgICAgICAgICAgICAgaWdub3JlZF8wMDAsCi0gICAgICAgICAgICAgICAgICBz
dWJfZm10dHkKLSAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9
IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCi0gICAgICAg
ICAgICAgICAgICAgIGlnbm9yZWQsCi0gICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0Ci0gICAg
ICAgICAgICAgICAgICBdKV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKLSAgICAgICAgICAgICAgZm10X3Jl
c3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogRm9ybWF0X3N1YnN0ICovQmxvY2suX18oMTQsIFsKLSAg
ICAgICAgICAgICAgICAgICAgb3B0X29mX3BhZCgvKiAiKCIgKi80MCwgcGFkKSwKLSAgICAgICAg
ICAgICAgICAgICAgc3ViX2ZtdHR5LAotICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdAotICAg
ICAgICAgICAgICAgICAgXSldOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgNDQgOiAKLSAgICAgICAgICAgIGZtdF9yZXN1bHQgPSBwYXJzZV9saXRlcmFs
KHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgMzcgOiAKLSAgICAgICAgY2FzZSA2NCA6IAotICAgICAgICAgICAgZXhpdCQxID0gNDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDY3IDogCi0gICAgICAgICAgICB2YXIg
bWF0Y2gkMyA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7Ci0gICAg
ICAgICAgICB2YXIgZm10X3Jlc3QkMSA9IG1hdGNoJDNbMF07Ci0gICAgICAgICAgICBmbXRfcmVz
dWx0ID0gKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgPyAvKiBGbXRfRUJCICovWy8q
IElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWwotICAgICAgICAgICAgICAgICAgICAvKiBJ
Z25vcmVkX2NhbWxfY2hhciAqLzEsCi0gICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDEKLSAg
ICAgICAgICAgICAgICAgIF0pXSA6IC8qIEZtdF9FQkIgKi9bLyogQ2FtbF9jaGFyICovQmxvY2su
X18oMSwgW2ZtdF9yZXN0JDFdKV07Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA3
OCA6IAotICAgICAgICAgICAgdmFyIG1hdGNoJDQgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0
cl9pbmQsIGVuZF9pbmQpOwotICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDIgPSBtYXRjaCQ0WzBd
OwotICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgewotICAg
ICAgICAgICAgICB2YXIgaWdub3JlZCQxID0gLyogSWdub3JlZF9zY2FuX2dldF9jb3VudGVyICov
QmxvY2suX18oMTAsIFsvKiBUb2tlbl9jb3VudGVyICovMl0pOwotICAgICAgICAgICAgICBmbXRf
cmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBJZ25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsK
LSAgICAgICAgICAgICAgICAgICAgaWdub3JlZCQxLAotICAgICAgICAgICAgICAgICAgICBmbXRf
cmVzdCQyCi0gICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogU2Nh
bl9nZXRfY291bnRlciAqL0Jsb2NrLl9fKDIxLCBbCi0gICAgICAgICAgICAgICAgICAgIC8qIFRv
a2VuX2NvdW50ZXIgKi8yLAotICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQyCi0gICAgICAg
ICAgICAgICAgICBdKV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSA4MyA6IAotICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKLSAgICAg
ICAgICAgIHZhciBwYWQkMSA9IGNoZWNrX25vXzAoc3ltYiwgcGFkcHJlYyk7Ci0gICAgICAgICAg
ICB2YXIgbWF0Y2gkNSA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7
Ci0gICAgICAgICAgICB2YXIgZm10X3Jlc3QkMyA9IG1hdGNoJDVbMF07Ci0gICAgICAgICAgICBp
ZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7Ci0gICAgICAgICAgICAgIHBhZF91
c2VkID0gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgICAgIHZhciBpZ25vcmVkJDIgPSAvKiBJZ25v
cmVkX2NhbWxfc3RyaW5nICovQmxvY2suX18oMSwgW29wdF9vZl9wYWQoLyogIl8iICovOTUsIHBh
ZHByZWMpXSk7Ci0gICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIEln
bm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWwotICAgICAgICAgICAgICAgICAgICBpZ25vcmVk
JDIsCi0gICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDMKLSAgICAgICAgICAgICAgICAgIF0p
XTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICB2YXIg
bWF0Y2gkNiA9IG1ha2VfcGFkZGluZ19mbXRfZWJiKHBhZCQxLCBmbXRfcmVzdCQzKTsKLSAgICAg
ICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogQ2FtbF9zdHJpbmcgKi9CbG9j
ay5fXygzLCBbCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDZbMF0sCi0gICAgICAgICAgICAg
ICAgICAgIG1hdGNoJDZbMV0KLSAgICAgICAgICAgICAgICAgIF0pXTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDkxIDogCi0gICAgICAgICAgICB2YXIg
bWF0Y2gkNyA9IHBhcnNlX2NoYXJfc2V0KHN0cl9pbmQsIGVuZF9pbmQpOwotICAgICAgICAgICAg
dmFyIGNoYXJfc2V0ID0gbWF0Y2gkN1sxXTsKLSAgICAgICAgICAgIHZhciBuZXh0X2luZCA9IG1h
dGNoJDdbMF07Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkOCA9IHBhcnNlX2xpdGVyYWwobmV4dF9p
bmQsIG5leHRfaW5kLCBlbmRfaW5kKTsKLSAgICAgICAgICAgIHZhciBmbXRfcmVzdCQ0ID0gbWF0
Y2gkOFswXTsKLSAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24p
IHsKLSAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKLSAgICAgICAgICAgICAg
dmFyIGlnbm9yZWRfMDAwJDEgPSBvcHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWQpOwotICAgICAg
ICAgICAgICB2YXIgaWdub3JlZCQzID0gLyogSWdub3JlZF9zY2FuX2NoYXJfc2V0ICovQmxvY2su
X18oOSwgWwotICAgICAgICAgICAgICAgICAgaWdub3JlZF8wMDAkMSwKLSAgICAgICAgICAgICAg
ICAgIGNoYXJfc2V0Ci0gICAgICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICAgIGZtdF9yZXN1
bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWwotICAg
ICAgICAgICAgICAgICAgICBpZ25vcmVkJDMsCi0gICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0
JDQKLSAgICAgICAgICAgICAgICAgIF0pXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwotICAgICAgICAgICAg
ICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBTY2FuX2NoYXJfc2V0ICovQmxvY2suX18o
MjAsIFsKLSAgICAgICAgICAgICAgICAgICAgb3B0X29mX3BhZCgvKiAiWyIgKi85MSwgcGFkKSwK
LSAgICAgICAgICAgICAgICAgICAgY2hhcl9zZXQsCi0gICAgICAgICAgICAgICAgICAgIGZtdF9y
ZXN0JDQKLSAgICAgICAgICAgICAgICAgIF0pXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIDMyIDogCi0gICAgICAgIGNhc2UgMzUgOiAKLSAgICAgICAg
Y2FzZSA0MyA6IAotICAgICAgICBjYXNlIDQ1IDogCi0gICAgICAgIGNhc2UgOTUgOiAKLSAgICAg
ICAgICAgIGV4aXQkMSA9IDU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA5NyA6
IAotICAgICAgICAgICAgdmFyIG1hdGNoJDkgPSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9p
bmQsIGVuZF9pbmQpOwotICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyog
QWxwaGEgKi9CbG9jay5fXygxNSwgW21hdGNoJDlbMF1dKV07Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSA2NiA6IAotICAgICAgICBjYXNlIDk4IDogCi0gICAgICAgICAgICBleGl0
JDEgPSAzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgOTkgOiAKLSAgICAgICAg
ICAgIHZhciBjaGFyX2Zvcm1hdCA9IGZ1bmN0aW9uIChmbXRfcmVzdCkgewotICAgICAgICAgICAg
ICBpZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSWdub3JlZF9jaGFyICovMCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICBd
KV07Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIEZtdF9FQkIgKi9bLyogQ2hhciAqL0Jsb2NrLl9fKDAsIFtmbXRfcmVzdF0p
XTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHZhciBzY2Fu
X2Zvcm1hdCA9IGZ1bmN0aW9uIChmbXRfcmVzdCkgewotICAgICAgICAgICAgICBpZiAoaWduX3Vz
ZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC8qIEZt
dF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogSWdub3JlZF9zY2FuX25leHRfY2hhciAqLzQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm10X3Jlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSld
OwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IHJldHVybiAvKiBGbXRfRUJCICovWy8qIFNjYW5fbmV4dF9jaGFyICovQmxvY2suX18oMjIsIFtm
bXRfcmVzdF0pXTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
IHZhciBtYXRjaCQxMCA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7
Ci0gICAgICAgICAgICB2YXIgZm10X3Jlc3QkNSA9IG1hdGNoJDEwWzBdOwotICAgICAgICAgICAg
cGFkX3VzZWQgPSAvKiB0cnVlICovMTsKLSAgICAgICAgICAgIHZhciBtYXRjaCQxMSA9IG9wdF9v
Zl9wYWQoLyogImMiICovOTksIHBhZCk7Ci0gICAgICAgICAgICBmbXRfcmVzdWx0ID0gbWF0Y2gk
MTEgPyAoCi0gICAgICAgICAgICAgICAgbWF0Y2gkMTFbMF0gIT09IDAgPyAoCi0gICAgICAgICAg
ICAgICAgICAgIGxlZ2FjeV9iZWhhdmlvciQxID8gY2hhcl9mb3JtYXQoZm10X3Jlc3QkNSkgOiBp
bnZhbGlkX2Zvcm1hdF9tZXNzYWdlKHN0cl9pbmQsICJub24temVybyB3aWR0aHMgYXJlIHVuc3Vw
cG9ydGVkIGZvciAlYyBjb252ZXJzaW9ucyIpCi0gICAgICAgICAgICAgICAgICApIDogc2Nhbl9m
b3JtYXQoZm10X3Jlc3QkNSkKLSAgICAgICAgICAgICAgKSA6IGNoYXJfZm9ybWF0KGZtdF9yZXN0
JDUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNjkgOiAKLSAgICAgICAgY2Fz
ZSA3MCA6IAotICAgICAgICBjYXNlIDcxIDogCi0gICAgICAgIGNhc2UgMTAxIDogCi0gICAgICAg
IGNhc2UgMTAyIDogCi0gICAgICAgIGNhc2UgMTAzIDogCi0gICAgICAgICAgICBleGl0JDEgPSAy
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNzYgOiAKLSAgICAgICAgY2FzZSAx
MDggOiAKLSAgICAgICAgY2FzZSAxMTAgOiAKLSAgICAgICAgICAgIGV4aXQkMiA9IDg7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAxMTQgOiAKLSAgICAgICAgICAgIHZhciBtYXRj
aCQxMiA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7Ci0gICAgICAg
ICAgICB2YXIgZm10X3Jlc3QkNiA9IG1hdGNoJDEyWzBdOwotICAgICAgICAgICAgZm10X3Jlc3Vs
dCA9IChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8xLCBpZ24pID8gLyogRm10X0VCQiAqL1svKiBJ
Z25vcmVkX3BhcmFtICovQmxvY2suX18oMjMsIFsKLSAgICAgICAgICAgICAgICAgICAgLyogSWdu
b3JlZF9yZWFkZXIgKi8zLAotICAgICAgICAgICAgICAgICAgICBmbXRfcmVzdCQ2Ci0gICAgICAg
ICAgICAgICAgICBdKV0gOiAvKiBGbXRfRUJCICovWy8qIFJlYWRlciAqL0Jsb2NrLl9fKDE5LCBb
Zm10X3Jlc3QkNl0pXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDExNSA6IAot
ICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKLSAgICAgICAgICAgIHZhciBwYWQk
MiA9IGNoZWNrX25vXzAoc3ltYiwgcGFkcHJlYyk7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMTMg
PSBwYXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOwotICAgICAgICAgICAg
dmFyIGZtdF9yZXN0JDcgPSBtYXRjaCQxM1swXTsKLSAgICAgICAgICAgIGlmIChpZ25fdXNlZFsw
XSA9IC8qIHRydWUgKi8xLCBpZ24pIHsKLSAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVl
ICovMTsKLSAgICAgICAgICAgICAgdmFyIGlnbm9yZWQkNCA9IC8qIElnbm9yZWRfc3RyaW5nICov
QmxvY2suX18oMCwgW29wdF9vZl9wYWQoLyogIl8iICovOTUsIHBhZHByZWMpXSk7Ci0gICAgICAg
ICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9j
ay5fXygyMywgWwotICAgICAgICAgICAgICAgICAgICBpZ25vcmVkJDQsCi0gICAgICAgICAgICAg
ICAgICAgIGZtdF9yZXN0JDcKLSAgICAgICAgICAgICAgICAgIF0pXTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICB2YXIgbWF0Y2gkMTQgPSBtYWtlX3Bh
ZGRpbmdfZm10X2ViYihwYWQkMiwgZm10X3Jlc3QkNyk7Ci0gICAgICAgICAgICAgIGZtdF9yZXN1
bHQgPSAvKiBGbXRfRUJCICovWy8qIFN0cmluZyAqL0Jsb2NrLl9fKDIsIFsKLSAgICAgICAgICAg
ICAgICAgICAgbWF0Y2gkMTRbMF0sCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDE0WzFdCi0g
ICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSAxMTYgOiAKLSAgICAgICAgICAgIHZhciBtYXRjaCQxNSA9IHBhcnNlX2xp
dGVyYWwoc3RyX2luZCwgc3RyX2luZCwgZW5kX2luZCk7Ci0gICAgICAgICAgICBmbXRfcmVzdWx0
ID0gLyogRm10X0VCQiAqL1svKiBUaGV0YSAqL0Jsb2NrLl9fKDE2LCBbbWF0Y2gkMTVbMF1dKV07
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA4OCA6IAotICAgICAgICBjYXNlIDEw
MCA6IAotICAgICAgICBjYXNlIDEwNSA6IAotICAgICAgICBjYXNlIDExMSA6IAotICAgICAgICBj
YXNlIDExNyA6IAotICAgICAgICBjYXNlIDEyMCA6IAotICAgICAgICAgICAgZXhpdCQyID0gNzsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgY2FzZSAxIDog
Ci0gICAgICAgIGNhc2UgMiA6IAotICAgICAgICBjYXNlIDMgOiAKLSAgICAgICAgY2FzZSA0IDog
Ci0gICAgICAgIGNhc2UgNSA6IAotICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgY2FzZSA3IDog
Ci0gICAgICAgIGNhc2UgOCA6IAotICAgICAgICBjYXNlIDkgOiAKLSAgICAgICAgY2FzZSAxMCA6
IAotICAgICAgICBjYXNlIDExIDogCi0gICAgICAgIGNhc2UgMTIgOiAKLSAgICAgICAgY2FzZSAx
MyA6IAotICAgICAgICBjYXNlIDE0IDogCi0gICAgICAgIGNhc2UgMTUgOiAKLSAgICAgICAgY2Fz
ZSAxNiA6IAotICAgICAgICBjYXNlIDE3IDogCi0gICAgICAgIGNhc2UgMTggOiAKLSAgICAgICAg
Y2FzZSAxOSA6IAotICAgICAgICBjYXNlIDIwIDogCi0gICAgICAgIGNhc2UgMjEgOiAKLSAgICAg
ICAgY2FzZSAyMiA6IAotICAgICAgICBjYXNlIDIzIDogCi0gICAgICAgIGNhc2UgMjQgOiAKLSAg
ICAgICAgY2FzZSAyNSA6IAotICAgICAgICBjYXNlIDI2IDogCi0gICAgICAgIGNhc2UgMjcgOiAK
LSAgICAgICAgY2FzZSAyOCA6IAotICAgICAgICBjYXNlIDI5IDogCi0gICAgICAgIGNhc2UgMzAg
OiAKLSAgICAgICAgY2FzZSAzMSA6IAotICAgICAgICBjYXNlIDM0IDogCi0gICAgICAgIGNhc2Ug
MzYgOiAKLSAgICAgICAgY2FzZSAzOCA6IAotICAgICAgICBjYXNlIDM5IDogCi0gICAgICAgIGNh
c2UgNDEgOiAKLSAgICAgICAgY2FzZSA0MiA6IAotICAgICAgICBjYXNlIDQ2IDogCi0gICAgICAg
IGNhc2UgNDcgOiAKLSAgICAgICAgY2FzZSA0OCA6IAotICAgICAgICBjYXNlIDQ5IDogCi0gICAg
ICAgIGNhc2UgNTAgOiAKLSAgICAgICAgY2FzZSA1MSA6IAotICAgICAgICBjYXNlIDUyIDogCi0g
ICAgICAgIGNhc2UgNTMgOiAKLSAgICAgICAgY2FzZSA1NCA6IAotICAgICAgICBjYXNlIDU1IDog
Ci0gICAgICAgIGNhc2UgNTYgOiAKLSAgICAgICAgY2FzZSA1NyA6IAotICAgICAgICBjYXNlIDU4
IDogCi0gICAgICAgIGNhc2UgNTkgOiAKLSAgICAgICAgY2FzZSA2MCA6IAotICAgICAgICBjYXNl
IDYxIDogCi0gICAgICAgIGNhc2UgNjIgOiAKLSAgICAgICAgY2FzZSA2MyA6IAotICAgICAgICBj
YXNlIDY1IDogCi0gICAgICAgIGNhc2UgNjggOiAKLSAgICAgICAgY2FzZSA3MiA6IAotICAgICAg
ICBjYXNlIDczIDogCi0gICAgICAgIGNhc2UgNzQgOiAKLSAgICAgICAgY2FzZSA3NSA6IAotICAg
ICAgICBjYXNlIDc3IDogCi0gICAgICAgIGNhc2UgNzkgOiAKLSAgICAgICAgY2FzZSA4MCA6IAot
ICAgICAgICBjYXNlIDgxIDogCi0gICAgICAgIGNhc2UgODIgOiAKLSAgICAgICAgY2FzZSA4NCA6
IAotICAgICAgICBjYXNlIDg1IDogCi0gICAgICAgIGNhc2UgODYgOiAKLSAgICAgICAgY2FzZSA4
NyA6IAotICAgICAgICBjYXNlIDg5IDogCi0gICAgICAgIGNhc2UgOTAgOiAKLSAgICAgICAgY2Fz
ZSA5MiA6IAotICAgICAgICBjYXNlIDkzIDogCi0gICAgICAgIGNhc2UgOTQgOiAKLSAgICAgICAg
Y2FzZSA5NiA6IAotICAgICAgICBjYXNlIDEwNCA6IAotICAgICAgICBjYXNlIDEwNiA6IAotICAg
ICAgICBjYXNlIDEwNyA6IAotICAgICAgICBjYXNlIDEwOSA6IAotICAgICAgICBjYXNlIDExMiA6
IAotICAgICAgICBjYXNlIDExMyA6IAotICAgICAgICBjYXNlIDExOCA6IAotICAgICAgICBjYXNl
IDExOSA6IAotICAgICAgICBjYXNlIDEyMSA6IAotICAgICAgICBjYXNlIDEyMiA6IAotICAgICAg
ICAgICAgZXhpdCQxID0gNjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDEyMyA6
IAotICAgICAgICAgICAgdmFyIHN1Yl9lbmQkMSA9IHNlYXJjaF9zdWJmb3JtYXRfZW5kKHN0cl9p
bmQsIGVuZF9pbmQsIC8qICJ9IiAqLzEyNSk7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMTYgPSBw
YXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIHN1Yl9lbmQkMSk7Ci0gICAgICAgICAgICB2
YXIgYmVnX2luZCQxID0gc3ViX2VuZCQxICsgMiB8IDA7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gk
MTcgPSBwYXJzZV9saXRlcmFsKGJlZ19pbmQkMSwgYmVnX2luZCQxLCBlbmRfaW5kKTsKLSAgICAg
ICAgICAgIHZhciBmbXRfcmVzdCQ4ID0gbWF0Y2gkMTdbMF07Ci0gICAgICAgICAgICB2YXIgc3Vi
X2ZtdHR5JDEgPSBmbXR0eV9vZl9mbXQobWF0Y2gkMTZbMF0pOwotICAgICAgICAgICAgaWYgKGln
bl91c2VkWzBdID0gLyogdHJ1ZSAqLzEsIGlnbikgewotICAgICAgICAgICAgICBwYWRfdXNlZCA9
IC8qIHRydWUgKi8xOwotICAgICAgICAgICAgICB2YXIgaWdub3JlZF8wMDAkMiA9IG9wdF9vZl9w
YWQoLyogIl8iICovOTUsIHBhZCk7Ci0gICAgICAgICAgICAgIHZhciBpZ25vcmVkJDUgPSAvKiBJ
Z25vcmVkX2Zvcm1hdF9hcmcgKi9CbG9jay5fXyg3LCBbCi0gICAgICAgICAgICAgICAgICBpZ25v
cmVkXzAwMCQyLAotICAgICAgICAgICAgICAgICAgc3ViX2ZtdHR5JDEKLSAgICAgICAgICAgICAg
ICBdKTsKLSAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSWdub3Jl
ZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCi0gICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkNSwK
LSAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3QkOAotICAgICAgICAgICAgICAgICAgXSldOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgIHBhZF91c2Vk
ID0gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICov
Wy8qIEZvcm1hdF9hcmcgKi9CbG9jay5fXygxMywgWwotICAgICAgICAgICAgICAgICAgICBvcHRf
b2ZfcGFkKC8qICJ7IiAqLzEyMywgcGFkKSwKLSAgICAgICAgICAgICAgICAgICAgc3ViX2ZtdHR5
JDEsCi0gICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDgKLSAgICAgICAgICAgICAgICAgIF0p
XTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAKLSAgICAgIH0K
LSAgICB9Ci0gICAgc3dpdGNoIChleGl0JDIpIHsKLSAgICAgIGNhc2UgNyA6IAotICAgICAgICAg
IHBsdXNfdXNlZCA9IC8qIHRydWUgKi8xOwotICAgICAgICAgIHNoYXJwX3VzZWQgPSAvKiB0cnVl
ICovMTsKLSAgICAgICAgICBzcGFjZV91c2VkID0gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgdmFy
IGljb252ID0gY29tcHV0ZV9pbnRfY29udihwY3RfaW5kLCBzdHJfaW5kLCBwbHVzLCBzaGFycCwg
c3BhY2UsIHN5bWIpOwotICAgICAgICAgIHZhciBtYXRjaCQxOCA9IHBhcnNlX2xpdGVyYWwoc3Ry
X2luZCwgc3RyX2luZCwgZW5kX2luZCk7Ci0gICAgICAgICAgdmFyIGZtdF9yZXN0JDkgPSBtYXRj
aCQxOFswXTsKLSAgICAgICAgICBpZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7
Ci0gICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwotICAgICAgICAgICAgdmFyIGln
bm9yZWRfMDAxID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwgcGFkKTsKLSAgICAgICAgICAgIHZh
ciBpZ25vcmVkJDYgPSAvKiBJZ25vcmVkX2ludCAqL0Jsb2NrLl9fKDIsIFsKLSAgICAgICAgICAg
ICAgICBpY29udiwKLSAgICAgICAgICAgICAgICBpZ25vcmVkXzAwMQotICAgICAgICAgICAgICBd
KTsKLSAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFy
YW0gKi9CbG9jay5fXygyMywgWwotICAgICAgICAgICAgICAgICAgaWdub3JlZCQ2LAotICAgICAg
ICAgICAgICAgICAgZm10X3Jlc3QkOQotICAgICAgICAgICAgICAgIF0pXTsKLSAgICAgICAgICB9
Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwot
ICAgICAgICAgICAgcHJlY191c2VkWzBdID0gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgICB2YXIg
cGFkJDM7Ci0gICAgICAgICAgICB2YXIgZXhpdCQzID0gMDsKLSAgICAgICAgICAgIGlmICh0eXBl
b2YgcHJlYyA9PT0gIm51bWJlciIgJiYgcHJlYyA9PT0gMCkgewotICAgICAgICAgICAgICBwYWQk
MyA9IHBhZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICBleGl0JDMgPSA5OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGV4aXQkMyA9PT0g
OSkgewotICAgICAgICAgICAgICBwYWQkMyA9IHR5cGVvZiBwYWQgPT09ICJudW1iZXIiID8gLyog
Tm9fcGFkZGluZyAqLzAgOiAoCi0gICAgICAgICAgICAgICAgICBwYWQudGFnID8gKAotICAgICAg
ICAgICAgICAgICAgICAgIHBhZFswXSA+PSAyID8gKAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBsZWdhY3lfYmVoYXZpb3IkMSA/IC8qIEFyZ19wYWRkaW5nICovQmxvY2suX18oMSwgWy8qIFJp
Z2h0ICovMV0pIDogaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgLyogIjAiICov
NDgsICJwcmVjaXNpb24iKQotICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHBhZAotICAgICAg
ICAgICAgICAgICAgICApIDogKAotICAgICAgICAgICAgICAgICAgICAgIHBhZFswXSA+PSAyID8g
KAotICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdhY3lfYmVoYXZpb3IkMSA/IC8qIExpdF9w
YWRkaW5nICovQmxvY2suX18oMCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBSaWdodCAqLzEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZFsxXQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkgOiBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5k
LCBzdHJfaW5kLCAvKiAiMCIgKi80OCwgInByZWNpc2lvbiIpCi0gICAgICAgICAgICAgICAgICAg
ICAgICApIDogcGFkCi0gICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICApOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIG1hdGNoJDE5ID0gbWFrZV9wYWRwcmVjX2Zt
dF9lYmIocGFkJDMsIChwcmVjX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgcHJlYyksIGZtdF9yZXN0
JDkpOwotICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogSW50ICovQmxv
Y2suX18oNCwgWwotICAgICAgICAgICAgICAgICAgaWNvbnYsCi0gICAgICAgICAgICAgICAgICBt
YXRjaCQxOVswXSwKLSAgICAgICAgICAgICAgICAgIG1hdGNoJDE5WzFdLAotICAgICAgICAgICAg
ICAgICAgbWF0Y2gkMTlbMl0KLSAgICAgICAgICAgICAgICBdKV07Ci0gICAgICAgICAgfQotICAg
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgaWYgKHN0cl9pbmQgPT09
IGVuZF9pbmQgfHwgIWlzX2ludF9iYXNlKENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpKSkg
ewotICAgICAgICAgICAgdmFyIG1hdGNoJDIwID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5kLCBzdHJf
aW5kLCBlbmRfaW5kKTsKLSAgICAgICAgICAgIHZhciBmbXRfcmVzdCQxMCA9IG1hdGNoJDIwWzBd
OwotICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSBjb3VudGVyX29mX2NoYXIoc3ltYik7Ci0gICAg
ICAgICAgICBpZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7Ci0gICAgICAgICAg
ICAgIHZhciBpZ25vcmVkJDcgPSAvKiBJZ25vcmVkX3NjYW5fZ2V0X2NvdW50ZXIgKi9CbG9jay5f
XygxMCwgW2NvdW50ZXJdKTsKLSAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIg
Ki9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCi0gICAgICAgICAgICAgICAgICAg
IGlnbm9yZWQkNywKLSAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3QkMTAKLSAgICAgICAgICAg
ICAgICAgIF0pXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICBmbXRfcmVzdWx0ID0gLyogRm10X0VCQiAqL1svKiBTY2FuX2dldF9jb3VudGVyICovQmxv
Y2suX18oMjEsIFsKLSAgICAgICAgICAgICAgICAgICAgY291bnRlciwKLSAgICAgICAgICAgICAg
ICAgICAgZm10X3Jlc3QkMTAKLSAgICAgICAgICAgICAgICAgIF0pXTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBleGl0JDEgPSA2Owot
ICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIAotICAgIH0KLSAgICBzd2l0Y2gg
KGV4aXQkMSkgewotICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgcGx1c191c2VkID0gLyogdHJ1
ZSAqLzE7Ci0gICAgICAgICAgc3BhY2VfdXNlZCA9IC8qIHRydWUgKi8xOwotICAgICAgICAgIHZh
ciBmY29udiA9IGNvbXB1dGVfZmxvYXRfY29udihwY3RfaW5kLCBzdHJfaW5kLCBwbHVzLCBzcGFj
ZSwgc3ltYik7Ci0gICAgICAgICAgdmFyIG1hdGNoJDIxID0gcGFyc2VfbGl0ZXJhbChzdHJfaW5k
LCBzdHJfaW5kLCBlbmRfaW5kKTsKLSAgICAgICAgICB2YXIgZm10X3Jlc3QkMTEgPSBtYXRjaCQy
MVswXTsKLSAgICAgICAgICBpZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSB7Ci0g
ICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwotICAgICAgICAgICAgdmFyIGlnbm9y
ZWRfMDAwJDMgPSBvcHRfb2ZfcGFkKC8qICJfIiAqLzk1LCBwYWQpOwotICAgICAgICAgICAgdmFy
IGlnbm9yZWRfMDAxJDEgPSBnZXRfcHJlY19vcHQoLyogKCkgKi8wKTsKLSAgICAgICAgICAgIHZh
ciBpZ25vcmVkJDggPSAvKiBJZ25vcmVkX2Zsb2F0ICovQmxvY2suX18oNiwgWwotICAgICAgICAg
ICAgICAgIGlnbm9yZWRfMDAwJDMsCi0gICAgICAgICAgICAgICAgaWdub3JlZF8wMDEkMQotICAg
ICAgICAgICAgICBdKTsKLSAgICAgICAgICAgIGZtdF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8q
IElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywgWwotICAgICAgICAgICAgICAgICAgaWdub3Jl
ZCQ4LAotICAgICAgICAgICAgICAgICAgZm10X3Jlc3QkMTEKLSAgICAgICAgICAgICAgICBdKV07
Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcGFkX3VzZWQgPSAv
KiB0cnVlICovMTsKLSAgICAgICAgICAgIHZhciBtYXRjaCQyMiA9IG1ha2VfcGFkcHJlY19mbXRf
ZWJiKHBhZCwgKHByZWNfdXNlZFswXSA9IC8qIHRydWUgKi8xLCBwcmVjKSwgZm10X3Jlc3QkMTEp
OwotICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogRmxvYXQgKi9CbG9j
ay5fXyg4LCBbCi0gICAgICAgICAgICAgICAgICBmY29udiwKLSAgICAgICAgICAgICAgICAgIG1h
dGNoJDIyWzBdLAotICAgICAgICAgICAgICAgICAgbWF0Y2gkMjJbMV0sCi0gICAgICAgICAgICAg
ICAgICBtYXRjaCQyMlsyXQotICAgICAgICAgICAgICAgIF0pXTsKLSAgICAgICAgICB9Ci0gICAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDMgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkMjMgPSBw
YXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOwotICAgICAgICAgIHZhciBm
bXRfcmVzdCQxMiA9IG1hdGNoJDIzWzBdOwotICAgICAgICAgIGZtdF9yZXN1bHQgPSAoaWduX3Vz
ZWRbMF0gPSAvKiB0cnVlICovMSwgaWduKSA/IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJh
bSAqL0Jsb2NrLl9fKDIzLCBbCi0gICAgICAgICAgICAgICAgICAvKiBJZ25vcmVkX2Jvb2wgKi8y
LAotICAgICAgICAgICAgICAgICAgZm10X3Jlc3QkMTIKLSAgICAgICAgICAgICAgICBdKV0gOiAv
KiBGbXRfRUJCICovWy8qIEJvb2wgKi9CbG9jay5fXyg5LCBbZm10X3Jlc3QkMTJdKV07Ci0gICAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDQgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkMjQgPSBw
YXJzZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOwotICAgICAgICAgIGZtdF9y
ZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCi0g
ICAgICAgICAgICAgICAgc3ltYiwKLSAgICAgICAgICAgICAgICBtYXRjaCQyNFswXQotICAgICAg
ICAgICAgICBdKV07Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDUgOiAKLSAgICAgICAg
ICBmbXRfcmVzdWx0ID0gQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCi0g
ICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGZvcm1hdCAiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBmbGFnICIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9jaGFyICovQmxvY2suX18oMSwgWy8q
IFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgaXMgb25seSBhbGxvd2VkIGFmdGVyIHRoZSAnIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXJf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogIiUiICovMzcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5f
XygxMSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiJywgYmVmb3JlIHBhZGRpbmcgYW5kIHByZWNpc2lvbiIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3Jt
YXQgKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pXSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgICBdKSwK
LSAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVt
YmVyICVkLCBmbGFnICVDIGlzIG9ubHkgYWxsb3dlZCBhZnRlciB0aGUgJyUlJywgYmVmb3JlIHBh
ZGRpbmcgYW5kIHByZWNpc2lvbiIKLSAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHBjdF9pbmQs
IHN5bWIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgaWYg
KHN5bWIgPj0gMTA4KSB7Ci0gICAgICAgICAgICBpZiAoc3ltYiA+PSAxMTEpIHsKLSAgICAgICAg
ICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgc3dpdGNoIChzeW1iIC0gMTA4IHwgMCkgewotICAgICAgICAgICAgICAgIGNhc2Ug
MCA6IAotICAgICAgICAgICAgICAgICAgICBwbHVzX3VzZWQgPSAvKiB0cnVlICovMTsKLSAgICAg
ICAgICAgICAgICAgICAgc2hhcnBfdXNlZCA9IC8qIHRydWUgKi8xOwotICAgICAgICAgICAgICAg
ICAgICBzcGFjZV91c2VkID0gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBp
Y29udiQxID0gY29tcHV0ZV9pbnRfY29udihwY3RfaW5kLCBzdHJfaW5kICsgMSB8IDAsIHBsdXMs
IHNoYXJwLCBzcGFjZSwgQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCkpOwotICAgICAgICAg
ICAgICAgICAgICB2YXIgYmVnX2luZCQyID0gc3RyX2luZCArIDEgfCAwOwotICAgICAgICAgICAg
ICAgICAgICB2YXIgbWF0Y2gkMjUgPSBwYXJzZV9saXRlcmFsKGJlZ19pbmQkMiwgYmVnX2luZCQy
LCBlbmRfaW5kKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDEzID0gbWF0Y2gk
MjVbMF07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpZ25fdXNlZFswXSA9IC8qIHRydWUgKi8x
LCBpZ24pIHsKLSAgICAgICAgICAgICAgICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwot
ICAgICAgICAgICAgICAgICAgICAgIHZhciBpZ25vcmVkXzAwMSQyID0gb3B0X29mX3BhZCgvKiAi
XyIgKi85NSwgcGFkKTsKLSAgICAgICAgICAgICAgICAgICAgICB2YXIgaWdub3JlZCQ5ID0gLyog
SWdub3JlZF9pbnQzMiAqL0Jsb2NrLl9fKDMsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
aWNvbnYkMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZF8wMDEkMgotICAgICAg
ICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9
IC8qIEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWdub3JlZCQ5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZtdF9yZXN0JDEzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0pXTsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAg
ICAgICAgICBwYWRfdXNlZCA9IC8qIHRydWUgKi8xOwotICAgICAgICAgICAgICAgICAgICAgIHZh
ciBtYXRjaCQyNiA9IG1ha2VfcGFkcHJlY19mbXRfZWJiKHBhZCwgKHByZWNfdXNlZFswXSA9IC8q
IHRydWUgKi8xLCBwcmVjKSwgZm10X3Jlc3QkMTMpOwotICAgICAgICAgICAgICAgICAgICAgIGZt
dF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIEludDMyICovQmxvY2suX18oNSwgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGljb252JDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMjZbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjZbMV0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjZbMl0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSldOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgICAg
ICBleGl0ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
Y2FzZSAyIDogCi0gICAgICAgICAgICAgICAgICAgIHBsdXNfdXNlZCA9IC8qIHRydWUgKi8xOwot
ICAgICAgICAgICAgICAgICAgICBzaGFycF91c2VkID0gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAg
ICAgICAgICAgIHNwYWNlX3VzZWQgPSAvKiB0cnVlICovMTsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIGljb252JDIgPSBjb21wdXRlX2ludF9jb252KHBjdF9pbmQsIHN0cl9pbmQgKyAxIHwgMCwg
cGx1cywgc2hhcnAsIHNwYWNlLCBDYW1sX3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHZhciBiZWdfaW5kJDMgPSBzdHJfaW5kICsgMSB8IDA7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBtYXRjaCQyNyA9IHBhcnNlX2xpdGVyYWwoYmVnX2luZCQzLCBiZWdf
aW5kJDMsIGVuZF9pbmQpOwotICAgICAgICAgICAgICAgICAgICB2YXIgZm10X3Jlc3QkMTQgPSBt
YXRjaCQyN1swXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlnbl91c2VkWzBdID0gLyogdHJ1
ZSAqLzEsIGlnbikgewotICAgICAgICAgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAq
LzE7Ci0gICAgICAgICAgICAgICAgICAgICAgdmFyIGlnbm9yZWRfMDAxJDMgPSBvcHRfb2ZfcGFk
KC8qICJfIiAqLzk1LCBwYWQpOwotICAgICAgICAgICAgICAgICAgICAgIHZhciBpZ25vcmVkJDEw
ID0gLyogSWdub3JlZF9uYXRpdmVpbnQgKi9CbG9jay5fXyg0LCBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGljb252JDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWRfMDAx
JDMKLSAgICAgICAgICAgICAgICAgICAgICAgIF0pOwotICAgICAgICAgICAgICAgICAgICAgIGZt
dF9yZXN1bHQgPSAvKiBGbXRfRUJCICovWy8qIElnbm9yZWRfcGFyYW0gKi9CbG9jay5fXygyMywg
WwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWQkMTAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm10X3Jlc3QkMTQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSld
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgICAg
ICAgICAgICAgdmFyIG1hdGNoJDI4ID0gbWFrZV9wYWRwcmVjX2ZtdF9lYmIocGFkLCAocHJlY191
c2VkWzBdID0gLyogdHJ1ZSAqLzEsIHByZWMpLCBmbXRfcmVzdCQxNCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgZm10X3Jlc3VsdCA9IC8qIEZtdF9FQkIgKi9bLyogTmF0aXZlaW50ICovQmxvY2su
X18oNiwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb252JDIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWF0Y2gkMjhbMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWF0Y2gkMjhbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gkMjhbMl0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgXSldOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHN5bWIg
IT09IDc2KSB7Ci0gICAgICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBwbHVzX3VzZWQgPSAvKiB0cnVlICovMTsKLSAgICAgICAgICAg
IHNoYXJwX3VzZWQgPSAvKiB0cnVlICovMTsKLSAgICAgICAgICAgIHNwYWNlX3VzZWQgPSAvKiB0
cnVlICovMTsKLSAgICAgICAgICAgIHZhciBpY29udiQzID0gY29tcHV0ZV9pbnRfY29udihwY3Rf
aW5kLCBzdHJfaW5kICsgMSB8IDAsIHBsdXMsIHNoYXJwLCBzcGFjZSwgQ2FtbF9zdHJpbmcuZ2V0
KHN0ciwgc3RyX2luZCkpOwotICAgICAgICAgICAgdmFyIGJlZ19pbmQkNCA9IHN0cl9pbmQgKyAx
IHwgMDsKLSAgICAgICAgICAgIHZhciBtYXRjaCQyOSA9IHBhcnNlX2xpdGVyYWwoYmVnX2luZCQ0
LCBiZWdfaW5kJDQsIGVuZF9pbmQpOwotICAgICAgICAgICAgdmFyIGZtdF9yZXN0JDE1ID0gbWF0
Y2gkMjlbMF07Ci0gICAgICAgICAgICBpZiAoaWduX3VzZWRbMF0gPSAvKiB0cnVlICovMSwgaWdu
KSB7Ci0gICAgICAgICAgICAgIHBhZF91c2VkID0gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgICAg
IHZhciBpZ25vcmVkXzAwMSQ0ID0gb3B0X29mX3BhZCgvKiAiXyIgKi85NSwgcGFkKTsKLSAgICAg
ICAgICAgICAgdmFyIGlnbm9yZWQkMTEgPSAvKiBJZ25vcmVkX2ludDY0ICovQmxvY2suX18oNSwg
WwotICAgICAgICAgICAgICAgICAgaWNvbnYkMywKLSAgICAgICAgICAgICAgICAgIGlnbm9yZWRf
MDAxJDQKLSAgICAgICAgICAgICAgICBdKTsKLSAgICAgICAgICAgICAgZm10X3Jlc3VsdCA9IC8q
IEZtdF9FQkIgKi9bLyogSWdub3JlZF9wYXJhbSAqL0Jsb2NrLl9fKDIzLCBbCi0gICAgICAgICAg
ICAgICAgICAgIGlnbm9yZWQkMTEsCi0gICAgICAgICAgICAgICAgICAgIGZtdF9yZXN0JDE1Ci0g
ICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgcGFkX3VzZWQgPSAvKiB0cnVlICovMTsKLSAgICAgICAgICAgICAgdmFy
IG1hdGNoJDMwID0gbWFrZV9wYWRwcmVjX2ZtdF9lYmIocGFkLCAocHJlY191c2VkWzBdID0gLyog
dHJ1ZSAqLzEsIHByZWMpLCBmbXRfcmVzdCQxNSk7Ci0gICAgICAgICAgICAgIGZtdF9yZXN1bHQg
PSAvKiBGbXRfRUJCICovWy8qIEludDY0ICovQmxvY2suX18oNywgWwotICAgICAgICAgICAgICAg
ICAgICBpY29udiQzLAotICAgICAgICAgICAgICAgICAgICBtYXRjaCQzMFswXSwKLSAgICAgICAg
ICAgICAgICAgICAgbWF0Y2gkMzBbMV0sCi0gICAgICAgICAgICAgICAgICAgIG1hdGNoJDMwWzJd
Ci0gICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAg
ICAgICAgIGJyZWFrOwotICAgICAgCi0gICAgfQotICAgIGlmIChleGl0ID09PSAxKSB7Ci0gICAg
ICBmbXRfcmVzdWx0ID0gQ3VycnkuXzMoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCi0g
ICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAg
ICAgICAgICAgICAgICAiaW52YWxpZCBmb3JtYXQgIiwKLSAgICAgICAgICAgICAgICAgICAgLyog
Q2FtbF9zdHJpbmcgKi9CbG9jay5fXygzLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBO
b19wYWRkaW5nICovMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFs
ICovQmxvY2suX18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiBhdCBjaGFy
YWN0ZXIgbnVtYmVyICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxv
Y2suX18oNCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJbnRfZCAqLzAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcgKi8wLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEx
LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCBpbnZhbGlkIGNvbnZl
cnNpb24gIicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFyX2xp
dGVyYWwgKi9CbG9jay5fXygxMiwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qICIlIiAqLzM3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIENoYXIgKi9CbG9jay5fXygwLCBbLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIs
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICJc
IiIgKi8zNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEVuZF9vZl9mb3JtYXQgKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSldKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdKQotICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAg
ICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICBdKSwKLSAgICAgICAgICAgICAgICAn
aW52YWxpZCBmb3JtYXQgJVM6IGF0IGNoYXJhY3RlciBudW1iZXIgJWQsIGludmFsaWQgY29udmVy
c2lvbiAiJSUlYyInCi0gICAgICAgICAgICAgIF0pLCBzdHIsIHN0cl9pbmQgLSAxIHwgMCwgc3lt
Yik7Ci0gICAgfQotICAgIGlmICghbGVnYWN5X2JlaGF2aW9yJDEpIHsKLSAgICAgIGlmICghcGx1
c191c2VkICYmIHBsdXMpIHsKLSAgICAgICAgaW5jb21wYXRpYmxlX2ZsYWcocGN0X2luZCwgc3Ry
X2luZCwgc3ltYiwgIicrJyIpOwotICAgICAgfQotICAgICAgaWYgKCFzaGFycF91c2VkICYmIHNo
YXJwKSB7Ci0gICAgICAgIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQsIHN5bWIs
ICInIyciKTsKLSAgICAgIH0KLSAgICAgIGlmICghc3BhY2VfdXNlZCAmJiBzcGFjZSkgewotICAg
ICAgICBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAiJyAnIik7Ci0g
ICAgICB9Ci0gICAgICBpZiAoIXBhZF91c2VkICYmIENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoLyog
UGFkZGluZ19FQkIgKi9bcGFkXSwgLyogUGFkZGluZ19FQkIgKi9bLyogTm9fcGFkZGluZyAqLzBd
KSkgewotICAgICAgICBpbmNvbXBhdGlibGVfZmxhZyhwY3RfaW5kLCBzdHJfaW5kLCBzeW1iLCAi
YHBhZGRpbmcnIik7Ci0gICAgICB9Ci0gICAgICBpZiAoIXByZWNfdXNlZFswXSAmJiBDYW1sX29i
ai5jYW1sX25vdGVxdWFsKC8qIFByZWNpc2lvbl9FQkIgKi9bcHJlY10sIC8qIFByZWNpc2lvbl9F
QkIgKi9bLyogTm9fcHJlY2lzaW9uICovMF0pKSB7Ci0gICAgICAgIGluY29tcGF0aWJsZV9mbGFn
KHBjdF9pbmQsIHN0cl9pbmQsIGlnbiA/IC8qICJfIiAqLzk1IDogc3ltYiwgImBwcmVjaXNpb24n
Iik7Ci0gICAgICB9Ci0gICAgICBpZiAoaWduICYmIHBsdXMpIHsKLSAgICAgICAgaW5jb21wYXRp
YmxlX2ZsYWcocGN0X2luZCwgc3RyX2luZCwgLyogIl8iICovOTUsICInKyciKTsKLSAgICAgIH0K
LSAgICAgIAotICAgIH0KLSAgICBpZiAoIWlnbl91c2VkWzBdICYmIGlnbikgewotICAgICAgdmFy
IGV4aXQkNCA9IDA7Ci0gICAgICBpZiAoc3ltYiA+PSAzOCkgewotICAgICAgICBpZiAoc3ltYiAh
PT0gNDQpIHsKLSAgICAgICAgICBpZiAoc3ltYiAhPT0gNjQpIHsKLSAgICAgICAgICAgIGV4aXQk
NCA9IDE7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKCFsZWdhY3lfYmVoYXZpb3Ik
MSkgewotICAgICAgICAgICAgZXhpdCQ0ID0gMTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgCi0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIWxlZ2FjeV9iZWhhdmlvciQxKSB7Ci0gICAgICAg
ICAgZXhpdCQ0ID0gMTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2Ug
aWYgKHN5bWIgIT09IDMzKSB7Ci0gICAgICAgIGlmIChzeW1iID49IDM3KSB7Ci0gICAgICAgICAg
aWYgKCFsZWdhY3lfYmVoYXZpb3IkMSkgewotICAgICAgICAgICAgZXhpdCQ0ID0gMTsKLSAgICAg
ICAgICB9Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ZXhpdCQ0ID0gMTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAoIWxlZ2FjeV9i
ZWhhdmlvciQxKSB7Ci0gICAgICAgIGV4aXQkNCA9IDE7Ci0gICAgICB9Ci0gICAgICBpZiAoZXhp
dCQ0ID09PSAxKSB7Ci0gICAgICAgIGluY29tcGF0aWJsZV9mbGFnKHBjdF9pbmQsIHN0cl9pbmQs
IHN5bWIsICInXyciKTsKLSAgICAgIH0KLSAgICAgIAotICAgIH0KLSAgICByZXR1cm4gZm10X3Jl
c3VsdDsKLSAgfTsKLSAgdmFyIHBhcnNlX2ZsYWdzID0gZnVuY3Rpb24gKHBjdF9pbmQsIHN0cl9p
bmQsIGVuZF9pbmQsIGlnbikgewotICAgIHZhciB6ZXJvID0gWy8qIGZhbHNlICovMF07Ci0gICAg
dmFyIG1pbnVzID0gWy8qIGZhbHNlICovMF07Ci0gICAgdmFyIHBsdXMgPSBbLyogZmFsc2UgKi8w
XTsKLSAgICB2YXIgc3BhY2UgPSBbLyogZmFsc2UgKi8wXTsKLSAgICB2YXIgc2hhcnAgPSBbLyog
ZmFsc2UgKi8wXTsKLSAgICB2YXIgc2V0X2ZsYWcgPSBmdW5jdGlvbiAoc3RyX2luZCwgZmxhZykg
ewotICAgICAgaWYgKGZsYWdbMF0gJiYgIWxlZ2FjeV9iZWhhdmlvciQxKSB7Ci0gICAgICAgIEN1
cnJ5Ll8zKGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWwotICAgICAgICAgICAgICAgICAg
LyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAgICAg
ICJpbnZhbGlkIGZvcm1hdCAiLAotICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5n
ICovQmxvY2suX18oMywgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5n
ICovMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9j
ay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogYXQgY2hhcmFjdGVy
IG51bWJlciAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50ICovQmxvY2su
X18oNCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2su
X18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgZHVwbGlj
YXRlIGZsYWcgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2Ft
bF9jaGFyICovQmxvY2suX18oMSwgWy8qIEVuZF9vZl9mb3JtYXQgKi8wXSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIF0pCi0gICAgICAgICAgICAgICAgICAgIF0pLAotICAgICAgICAgICAgICAgICAgImlu
dmFsaWQgZm9ybWF0ICVTOiBhdCBjaGFyYWN0ZXIgbnVtYmVyICVkLCBkdXBsaWNhdGUgZmxhZyAl
QyIKLSAgICAgICAgICAgICAgICBdKSwgc3RyLCBzdHJfaW5kLCBDYW1sX3N0cmluZy5nZXQoc3Ry
LCBzdHJfaW5kKSk7Ci0gICAgICB9Ci0gICAgICBmbGFnWzBdID0gLyogdHJ1ZSAqLzE7Ci0gICAg
ICByZXR1cm4gLyogKCkgKi8wOwotICAgIH07Ci0gICAgdmFyIF9zdHJfaW5kID0gc3RyX2luZDsK
LSAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICB2YXIgc3RyX2luZCQxID0gX3N0cl9pbmQ7Ci0gICAg
ICBpZiAoc3RyX2luZCQxID09PSBlbmRfaW5kKSB7Ci0gICAgICAgIGludmFsaWRfZm9ybWF0X21l
c3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9mIGZvcm1hdCIpOwotICAgICAgfQotICAg
ICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCQxKTsKLSAgICAgIHZh
ciBleGl0ID0gMDsKLSAgICAgIHZhciBzd2l0Y2hlciA9IG1hdGNoIC0gMzIgfCAwOwotICAgICAg
aWYgKHN3aXRjaGVyID4gMTYgfHwgc3dpdGNoZXIgPCAwKSB7Ci0gICAgICAgIGV4aXQgPSAxOwot
ICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHN3aXRjaCAoc3dpdGNoZXIpIHsKLSAgICAg
ICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgc2V0X2ZsYWcoc3RyX2luZCQxLCBzcGFjZSk7
Ci0gICAgICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCQxICsgMSB8IDA7Ci0gICAgICAgICAg
ICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICAgIHNl
dF9mbGFnKHN0cl9pbmQkMSwgc2hhcnApOwotICAgICAgICAgICAgICBfc3RyX2luZCA9IHN0cl9p
bmQkMSArIDEgfCAwOwotICAgICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAgIGNh
c2UgMTEgOiAKLSAgICAgICAgICAgICAgc2V0X2ZsYWcoc3RyX2luZCQxLCBwbHVzKTsKLSAgICAg
ICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kJDEgKyAxIHwgMDsKLSAgICAgICAgICAgICAgY29u
dGludWUgOwotICAgICAgICAgICAgICBjYXNlIDEzIDogCi0gICAgICAgICAgICAgIHNldF9mbGFn
KHN0cl9pbmQkMSwgbWludXMpOwotICAgICAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQkMSAr
IDEgfCAwOwotICAgICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAgIGNhc2UgMSA6
IAotICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgIGNhc2UgNCA6IAotICAgICAgICAgIGNh
c2UgNSA6IAotICAgICAgICAgIGNhc2UgNiA6IAotICAgICAgICAgIGNhc2UgNyA6IAotICAgICAg
ICAgIGNhc2UgOCA6IAotICAgICAgICAgIGNhc2UgOSA6IAotICAgICAgICAgIGNhc2UgMTAgOiAK
LSAgICAgICAgICBjYXNlIDEyIDogCi0gICAgICAgICAgY2FzZSAxNCA6IAotICAgICAgICAgIGNh
c2UgMTUgOiAKLSAgICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgIGNhc2UgMTYgOiAKLSAgICAgICAgICAgICAgc2V0X2ZsYWcoc3RyX2luZCQxLCB6
ZXJvKTsKLSAgICAgICAgICAgICAgX3N0cl9pbmQgPSBzdHJfaW5kJDEgKyAxIHwgMDsKLSAgICAg
ICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgfQot
ICAgICAgaWYgKGV4aXQgPT09IDEpIHsKLSAgICAgICAgdmFyIHBjdF9pbmQkMSA9IHBjdF9pbmQ7
Ci0gICAgICAgIHZhciBzdHJfaW5kJDIgPSBzdHJfaW5kJDE7Ci0gICAgICAgIHZhciBlbmRfaW5k
JDEgPSBlbmRfaW5kOwotICAgICAgICB2YXIgemVybyQxID0gemVyb1swXTsKLSAgICAgICAgdmFy
IG1pbnVzJDEgPSBtaW51c1swXTsKLSAgICAgICAgdmFyIHBsdXMkMSA9IHBsdXNbMF07Ci0gICAg
ICAgIHZhciBzaGFycCQxID0gc2hhcnBbMF07Ci0gICAgICAgIHZhciBzcGFjZSQxID0gc3BhY2Vb
MF07Ci0gICAgICAgIHZhciBpZ24kMSA9IGlnbjsKLSAgICAgICAgaWYgKHN0cl9pbmQkMiA9PT0g
ZW5kX2luZCQxKSB7Ci0gICAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kJDEs
ICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQiKTsKLSAgICAgICAgfQotICAgICAgICB2YXIgcGFk
dHkgPSB6ZXJvJDEgIT09IDAgPyAoCi0gICAgICAgICAgICBtaW51cyQxICE9PSAwID8gKAotICAg
ICAgICAgICAgICAgIGxlZ2FjeV9iZWhhdmlvciQxID8gLyogTGVmdCAqLzAgOiBpbmNvbXBhdGli
bGVfZmxhZyhwY3RfaW5kJDEsIHN0cl9pbmQkMiwgLyogIi0iICovNDUsICIwIikKLSAgICAgICAg
ICAgICAgKSA6IC8qIFplcm9zICovMgotICAgICAgICAgICkgOiAoCi0gICAgICAgICAgICBtaW51
cyQxICE9PSAwID8gLyogTGVmdCAqLzAgOiAvKiBSaWdodCAqLzEKLSAgICAgICAgICApOwotICAg
ICAgICB2YXIgbWF0Y2gkMSA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQkMik7Ci0gICAg
ICAgIHZhciBleGl0JDEgPSAwOwotICAgICAgICBpZiAobWF0Y2gkMSA+PSA0OCkgewotICAgICAg
ICAgIGlmIChtYXRjaCQxID49IDU4KSB7Ci0gICAgICAgICAgICBleGl0JDEgPSAxOwotICAgICAg
ICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCQyID0gcGFyc2Vf
cG9zaXRpdmUoc3RyX2luZCQyLCBlbmRfaW5kJDEsIDApOwotICAgICAgICAgICAgcmV0dXJuIHBh
cnNlX2FmdGVyX3BhZGRpbmcocGN0X2luZCQxLCBtYXRjaCQyWzBdLCBlbmRfaW5kJDEsIG1pbnVz
JDEsIHBsdXMkMSwgc2hhcnAkMSwgc3BhY2UkMSwgaWduJDEsIC8qIExpdF9wYWRkaW5nICovQmxv
Y2suX18oMCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICBwYWR0eSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2gkMlsxXQotICAgICAgICAgICAgICAgICAgICAgICAgXSkpOwot
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChtYXRjaCQxICE9PSA0Mikg
ewotICAgICAgICAgIGV4aXQkMSA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgcmV0dXJuIHBhcnNlX2FmdGVyX3BhZGRpbmcocGN0X2luZCQxLCBzdHJfaW5kJDIgKyAx
IHwgMCwgZW5kX2luZCQxLCBtaW51cyQxLCBwbHVzJDEsIHNoYXJwJDEsIHNwYWNlJDEsIGlnbiQx
LCAvKiBBcmdfcGFkZGluZyAqL0Jsb2NrLl9fKDEsIFtwYWR0eV0pKTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoZXhpdCQxID09PSAxKSB7Ci0gICAgICAgICAgc3dpdGNoIChwYWR0eSkgewotICAg
ICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAgICAgaWYgKCFsZWdhY3lfYmVoYXZpb3Ik
MSkgewotICAgICAgICAgICAgICAgICAgaW52YWxpZF9mb3JtYXRfd2l0aG91dChzdHJfaW5kJDIg
LSAxIHwgMCwgLyogIi0iICovNDUsICJwYWRkaW5nIik7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHJldHVybiBwYXJzZV9hZnRlcl9wYWRkaW5nKHBjdF9pbmQkMSwgc3RyX2lu
ZCQyLCBlbmRfaW5kJDEsIG1pbnVzJDEsIHBsdXMkMSwgc2hhcnAkMSwgc3BhY2UkMSwgaWduJDEs
IC8qIE5vX3BhZGRpbmcgKi8wKTsKLSAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAg
ICAgIHJldHVybiBwYXJzZV9hZnRlcl9wYWRkaW5nKHBjdF9pbmQkMSwgc3RyX2luZCQyLCBlbmRf
aW5kJDEsIG1pbnVzJDEsIHBsdXMkMSwgc2hhcnAkMSwgc3BhY2UkMSwgaWduJDEsIC8qIE5vX3Bh
ZGRpbmcgKi8wKTsKLSAgICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgICAgIHJldHVy
biBwYXJzZV9hZnRlcl9wYWRkaW5nKHBjdF9pbmQkMSwgc3RyX2luZCQyLCBlbmRfaW5kJDEsIG1p
bnVzJDEsIHBsdXMkMSwgc2hhcnAkMSwgc3BhY2UkMSwgaWduJDEsIC8qIExpdF9wYWRkaW5nICov
QmxvY2suX18oMCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmlnaHQgKi8x
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pKTsKLSAgICAgICAgICAgIAotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgIH0KLSAgICAgIAotICAgIH07Ci0gIH07Ci0gIHZhciBpc19pbnRfYmFzZSA9IGZ1
bmN0aW9uIChzeW1iKSB7Ci0gICAgdmFyIHN3aXRjaGVyID0gc3ltYiAtIDg4IHwgMDsKLSAgICBp
ZiAoc3dpdGNoZXIgPiAzMiB8fCBzd2l0Y2hlciA8IDApIHsKLSAgICAgIHJldHVybiAvKiBmYWxz
ZSAqLzA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgc3dpdGNoIChzd2l0Y2hlcikgewotICAg
ICAgICBjYXNlIDEgOiAKLSAgICAgICAgY2FzZSAyIDogCi0gICAgICAgIGNhc2UgMyA6IAotICAg
ICAgICBjYXNlIDQgOiAKLSAgICAgICAgY2FzZSA1IDogCi0gICAgICAgIGNhc2UgNiA6IAotICAg
ICAgICBjYXNlIDcgOiAKLSAgICAgICAgY2FzZSA4IDogCi0gICAgICAgIGNhc2UgOSA6IAotICAg
ICAgICBjYXNlIDEwIDogCi0gICAgICAgIGNhc2UgMTEgOiAKLSAgICAgICAgY2FzZSAxMyA6IAot
ICAgICAgICBjYXNlIDE0IDogCi0gICAgICAgIGNhc2UgMTUgOiAKLSAgICAgICAgY2FzZSAxNiA6
IAotICAgICAgICBjYXNlIDE4IDogCi0gICAgICAgIGNhc2UgMTkgOiAKLSAgICAgICAgY2FzZSAy
MCA6IAotICAgICAgICBjYXNlIDIxIDogCi0gICAgICAgIGNhc2UgMjIgOiAKLSAgICAgICAgY2Fz
ZSAyNCA6IAotICAgICAgICBjYXNlIDI1IDogCi0gICAgICAgIGNhc2UgMjYgOiAKLSAgICAgICAg
Y2FzZSAyNyA6IAotICAgICAgICBjYXNlIDI4IDogCi0gICAgICAgIGNhc2UgMzAgOiAKLSAgICAg
ICAgY2FzZSAzMSA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgICAgICAg
Y2FzZSAwIDogCi0gICAgICAgIGNhc2UgMTIgOiAKLSAgICAgICAgY2FzZSAxNyA6IAotICAgICAg
ICBjYXNlIDIzIDogCi0gICAgICAgIGNhc2UgMjkgOiAKLSAgICAgICAgY2FzZSAzMiA6IAotICAg
ICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOwotICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0g
IH07Ci0gIHZhciBjb3VudGVyX29mX2NoYXIgPSBmdW5jdGlvbiAoc3ltYikgewotICAgIHZhciBl
eGl0ID0gMDsKLSAgICBpZiAoc3ltYiA+PSAxMDgpIHsKLSAgICAgIGlmIChzeW1iID49IDExMSkg
ewotICAgICAgICBleGl0ID0gMTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBzd2l0
Y2ggKHN5bWIgLSAxMDggfCAwKSB7Ci0gICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAg
IHJldHVybiAvKiBMaW5lX2NvdW50ZXIgKi8wOwotICAgICAgICAgIGNhc2UgMSA6IAotICAgICAg
ICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSAy
IDogCi0gICAgICAgICAgICAgIHJldHVybiAvKiBDaGFyX2NvdW50ZXIgKi8xOwotICAgICAgICAg
IAotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKHN5bWIgIT09IDc2KSB7
Ci0gICAgICBleGl0ID0gMTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogVG9r
ZW5fY291bnRlciAqLzI7Ci0gICAgfQotICAgIGlmIChleGl0ID09PSAxKSB7Ci0gICAgICB0aHJv
dyBbCi0gICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwK
LSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgImNhbWxpbnRlcm5hbEZvcm1hdC5tbCIsCi0g
ICAgICAgICAgICAgIDI2ODMsCi0gICAgICAgICAgICAgIDM0Ci0gICAgICAgICAgICBdCi0gICAg
ICAgICAgXTsKLSAgICB9Ci0gICAgCi0gIH07Ci0gIHZhciBwYXJzZV9jaGFyX3NldCA9IGZ1bmN0
aW9uIChzdHJfaW5kLCBlbmRfaW5kKSB7Ci0gICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsK
LSAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9m
IGZvcm1hdCIpOwotICAgIH0KLSAgICB2YXIgY2hhcl9zZXQgPSBCeXRlcy5tYWtlKDMyLCAvKiAi
XDAwMCIgKi8wKTsKLSAgICB2YXIgYWRkX3JhbmdlID0gZnVuY3Rpb24gKGMsIGMkcHJpbWUpIHsK
LSAgICAgIGZvcih2YXIgaSA9IGM7IGkgPD0gYyRwcmltZTsgKytpKXsKLSAgICAgICAgYWRkX2lu
X2NoYXJfc2V0KGNoYXJfc2V0LCBQZXJ2YXNpdmVzLmNoYXJfb2ZfaW50KGkpKTsKLSAgICAgIH0K
LSAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgfTsKLSAgICB2YXIgZmFpbF9zaW5nbGVfcGVy
Y2VudCA9IGZ1bmN0aW9uIChzdHJfaW5kKSB7Ci0gICAgICByZXR1cm4gQ3VycnkuXzIoZmFpbHdp
dGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5n
X2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52
YWxpZCBmb3JtYXQgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcg
Ki9CbG9jay5fXygzLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRk
aW5nICovMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFs
ICovQmxvY2suX18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiAn
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDaGFyX2xpdGVyYWwgKi9C
bG9jay5fXygxMiwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAi
JSIgKi8zNywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5n
X2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIicgYWxvbmUgaXMgbm90IGFjY2VwdGVkIGluIGNoYXJhY3RlciBzZXRzLCB1
c2UgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXJf
bGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogIiUiICovMzcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogQ2hhcl9saXRlcmFsICovQmxvY2suX18oMTIsIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIiUiICovMzcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN0
cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgaW5zdGVhZCBhdCBwb3NpdGlvbiAiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50
ICovQmxvY2suX18oNCwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8qIEludF9kICovMCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wYWRkaW5nICovMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiBOb19wcmVjaXNpb24gKi8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIENoYXJfbGl0ZXJhbCAqL0Jsb2NrLl9fKDEyLCBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8qICIuIiAqLzQ2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdKQotICAgICAgICAgICAgICAgICAgICAgICAgXSksCi0gICAgICAg
ICAgICAgICAgICAgICAgImludmFsaWQgZm9ybWF0ICVTOiAnJSUnIGFsb25lIGlzIG5vdCBhY2Nl
cHRlZCBpbiBjaGFyYWN0ZXIgc2V0cywgdXNlICUlJSUgaW5zdGVhZCBhdCBwb3NpdGlvbiAlZC4i
Ci0gICAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHN0cl9pbmQpOwotICAgIH07Ci0gICAgdmFy
IHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIgPSBmdW5jdGlvbiAoX3N0cl9pbmQsIGVuZF9pbmQs
IF9jKSB7Ci0gICAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICAgIHZhciBjID0gX2M7Ci0gICAgICAg
IHZhciBzdHJfaW5kID0gX3N0cl9pbmQ7Ci0gICAgICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5k
KSB7Ci0gICAgICAgICAgaW52YWxpZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3Rl
ZCBlbmQgb2YgZm9ybWF0Iik7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIGMkcHJpbWUgPSBDYW1s
X3N0cmluZy5nZXQoc3RyLCBzdHJfaW5kKTsKLSAgICAgICAgdmFyIGV4aXQgPSAwOwotICAgICAg
ICB2YXIgZXhpdCQxID0gMDsKLSAgICAgICAgaWYgKGMkcHJpbWUgPj0gNDYpIHsKLSAgICAgICAg
ICBpZiAoYyRwcmltZSAhPT0gNjQpIHsKLSAgICAgICAgICAgIGlmIChjJHByaW1lICE9PSA5Mykg
ewotICAgICAgICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICBhZGRfaW5fY2hhcl9zZXQoY2hhcl9zZXQsIGMpOwotICAgICAg
ICAgICAgICByZXR1cm4gc3RyX2luZCArIDEgfCAwOwotICAgICAgICAgICAgfQotICAgICAgICAg
IH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGV4aXQkMSA9IDI7Ci0gICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGMkcHJpbWUgIT09IDM3KSB7Ci0gICAgICAg
ICAgaWYgKGMkcHJpbWUgPj0gNDUpIHsKLSAgICAgICAgICAgIHZhciBzdHJfaW5kJDEgPSBzdHJf
aW5kICsgMSB8IDA7Ci0gICAgICAgICAgICB2YXIgZW5kX2luZCQxID0gZW5kX2luZDsKLSAgICAg
ICAgICAgIHZhciBjJDEgPSBjOwotICAgICAgICAgICAgaWYgKHN0cl9pbmQkMSA9PT0gZW5kX2lu
ZCQxKSB7Ci0gICAgICAgICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCQxLCAi
dW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2
YXIgYyRwcmltZSQxID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCQxKTsKLSAgICAgICAg
ICAgIGlmIChjJHByaW1lJDEgIT09IDM3KSB7Ci0gICAgICAgICAgICAgIGlmIChjJHByaW1lJDEg
IT09IDkzKSB7Ci0gICAgICAgICAgICAgICAgYWRkX3JhbmdlKGMkMSwgYyRwcmltZSQxKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfY2hhcl9zZXRfY29udGVudChzdHJfaW5kJDEgKyAx
IHwgMCwgZW5kX2luZCQxKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICBhZGRfaW5fY2hhcl9zZXQoY2hhcl9zZXQsIGMkMSk7Ci0gICAgICAg
ICAgICAgICAgYWRkX2luX2NoYXJfc2V0KGNoYXJfc2V0LCAvKiAiLSIgKi80NSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIHN0cl9pbmQkMSArIDEgfCAwOwotICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgaWYgKChzdHJfaW5k
JDEgKyAxIHwgMCkgPT09IGVuZF9pbmQkMSkgewotICAgICAgICAgICAgICAgIGludmFsaWRfZm9y
bWF0X21lc3NhZ2UoZW5kX2luZCQxLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7Ci0gICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgdmFyIGMkcHJpbWUkMiA9IENhbWxfc3RyaW5nLmdl
dChzdHIsIHN0cl9pbmQkMSArIDEgfCAwKTsKLSAgICAgICAgICAgICAgdmFyIGV4aXQkMiA9IDA7
Ci0gICAgICAgICAgICAgIGlmIChjJHByaW1lJDIgIT09IDM3KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGMkcHJpbWUkMiAhPT0gNjQpIHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWlsX3Np
bmdsZV9wZXJjZW50KHN0cl9pbmQkMSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgZXhpdCQyID0gMTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgZXhpdCQyID0gMTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBpZiAoZXhpdCQy
ID09PSAxKSB7Ci0gICAgICAgICAgICAgICAgYWRkX3JhbmdlKGMkMSwgYyRwcmltZSQyKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcGFyc2VfY2hhcl9zZXRfY29udGVudChzdHJfaW5kJDEgKyAy
IHwgMCwgZW5kX2luZCQxKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBleGl0
ID0gMTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ZXhpdCQxID0gMjsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXhpdCQxID09PSAyKSB7Ci0gICAg
ICAgICAgaWYgKGMgPT09IC8qICIlIiAqLzM3KSB7Ci0gICAgICAgICAgICBhZGRfaW5fY2hhcl9z
ZXQoY2hhcl9zZXQsIGMkcHJpbWUpOwotICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NoYXJfc2V0
X2NvbnRlbnQoc3RyX2luZCArIDEgfCAwLCBlbmRfaW5kKTsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBleGl0ID0gMTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKGV4aXQgPT09IDEpIHsKLSAgICAgICAgICBpZiAoYyA9PT0gLyogIiUiICov
MzcpIHsKLSAgICAgICAgICAgIGZhaWxfc2luZ2xlX3BlcmNlbnQoc3RyX2luZCk7Ci0gICAgICAg
ICAgfQotICAgICAgICAgIGFkZF9pbl9jaGFyX3NldChjaGFyX3NldCwgYyk7Ci0gICAgICAgICAg
X2MgPSBjJHByaW1lOwotICAgICAgICAgIF9zdHJfaW5kID0gc3RyX2luZCArIDEgfCAwOwotICAg
ICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICAKLSAgICAg
IH07Ci0gICAgfTsKLSAgICB2YXIgcGFyc2VfY2hhcl9zZXRfY29udGVudCA9IGZ1bmN0aW9uIChf
c3RyX2luZCwgZW5kX2luZCkgewotICAgICAgd2hpbGUodHJ1ZSkgewotICAgICAgICB2YXIgc3Ry
X2luZCA9IF9zdHJfaW5kOwotICAgICAgICBpZiAoc3RyX2luZCA9PT0gZW5kX2luZCkgewotICAg
ICAgICAgIGludmFsaWRfZm9ybWF0X21lc3NhZ2UoZW5kX2luZCwgInVuZXhwZWN0ZWQgZW5kIG9m
IGZvcm1hdCIpOwotICAgICAgICB9Ci0gICAgICAgIHZhciBjID0gQ2FtbF9zdHJpbmcuZ2V0KHN0
ciwgc3RyX2luZCk7Ci0gICAgICAgIGlmIChjICE9PSA0NSkgewotICAgICAgICAgIGlmIChjICE9
PSA5MykgewotICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIoc3Ry
X2luZCArIDEgfCAwLCBlbmRfaW5kLCBjKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICByZXR1cm4gc3RyX2luZCArIDEgfCAwOwotICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBhZGRfaW5fY2hhcl9zZXQoY2hhcl9zZXQs
IC8qICItIiAqLzQ1KTsKLSAgICAgICAgICBfc3RyX2luZCA9IHN0cl9pbmQgKyAxIHwgMDsKLSAg
ICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH07Ci0gICAg
fTsKLSAgICB2YXIgcGFyc2VfY2hhcl9zZXRfc3RhcnQgPSBmdW5jdGlvbiAoc3RyX2luZCwgZW5k
X2luZCkgewotICAgICAgaWYgKHN0cl9pbmQgPT09IGVuZF9pbmQpIHsKLSAgICAgICAgaW52YWxp
ZF9mb3JtYXRfbWVzc2FnZShlbmRfaW5kLCAidW5leHBlY3RlZCBlbmQgb2YgZm9ybWF0Iik7Ci0g
ICAgICB9Ci0gICAgICB2YXIgYyA9IENhbWxfc3RyaW5nLmdldChzdHIsIHN0cl9pbmQpOwotICAg
ICAgcmV0dXJuIHBhcnNlX2NoYXJfc2V0X2FmdGVyX2NoYXIoc3RyX2luZCArIDEgfCAwLCBlbmRf
aW5kLCBjKTsKLSAgICB9OwotICAgIGlmIChzdHJfaW5kID09PSBlbmRfaW5kKSB7Ci0gICAgICBp
bnZhbGlkX2Zvcm1hdF9tZXNzYWdlKGVuZF9pbmQsICJ1bmV4cGVjdGVkIGVuZCBvZiBmb3JtYXQi
KTsKLSAgICB9Ci0gICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHN0ciwgc3RyX2luZCk7
Ci0gICAgdmFyIG1hdGNoJDEgPSBtYXRjaCAhPT0gOTQgPyAvKiB0dXBsZSAqL1sKLSAgICAgICAg
c3RyX2luZCwKLSAgICAgICAgLyogZmFsc2UgKi8wCi0gICAgICBdIDogLyogdHVwbGUgKi9bCi0g
ICAgICAgIHN0cl9pbmQgKyAxIHwgMCwKLSAgICAgICAgLyogdHJ1ZSAqLzEKLSAgICAgIF07Ci0g
ICAgdmFyIG5leHRfaW5kID0gcGFyc2VfY2hhcl9zZXRfc3RhcnQobWF0Y2gkMVswXSwgZW5kX2lu
ZCk7Ci0gICAgdmFyIGNoYXJfc2V0JDEgPSBCeXRlcy50b19zdHJpbmcoY2hhcl9zZXQpOwotICAg
IHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgIG5leHRfaW5kLAotICAgICAgICAgICAg
bWF0Y2gkMVsxXSA/IHJldl9jaGFyX3NldChjaGFyX3NldCQxKSA6IGNoYXJfc2V0JDEKLSAgICAg
ICAgICBdOwotICB9OwotICB2YXIgY2hlY2tfb3Blbl9ib3ggPSBmdW5jdGlvbiAoZm10KSB7Ci0g
ICAgaWYgKHR5cGVvZiBmbXQgPT09ICJudW1iZXIiKSB7Ci0gICAgICByZXR1cm4gLyogKCkgKi8w
OwotICAgIH0KLSAgICBlbHNlIGlmIChmbXQudGFnID09PSAxMSkgewotICAgICAgaWYgKHR5cGVv
ZiBmbXRbMV0gPT09ICJudW1iZXIiKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgb3Blbl9i
b3hfb2Zfc3RyaW5nKGZtdFswXSk7Ci0gICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAg
ICAgfQotICAgICAgICBjYXRjaCAoZXhuKXsKLSAgICAgICAgICBpZiAoZXhuWzBdID09PSBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlKSB7Ci0gICAgICAgICAgICByZXR1cm4gLyogKCkg
Ki8wOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHRocm93IGV4
bjsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAg
ICByZXR1cm4gLyogKCkgKi8wOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJl
dHVybiAvKiAoKSAqLzA7Ci0gICAgfQotICB9OwotICB2YXIgcGFyc2VfdGFnID0gZnVuY3Rpb24g
KGlzX29wZW5fdGFnLCBzdHJfaW5kLCBlbmRfaW5kKSB7Ci0gICAgdHJ5IHsKLSAgICAgIGlmIChz
dHJfaW5kID09PSBlbmRfaW5kKSB7Ci0gICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLm5vdF9mb3VuZDsKLSAgICAgIH0KLSAgICAgIHZhciBtYXRjaCA9IENhbWxfc3RyaW5nLmdl
dChzdHIsIHN0cl9pbmQpOwotICAgICAgaWYgKG1hdGNoICE9PSA2MCkgewotICAgICAgICB0aHJv
dyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7Ci0gICAgICB9Ci0gICAgICBlbHNl
IHsKLSAgICAgICAgdmFyIGluZCA9ICQkU3RyaW5nLmluZGV4X2Zyb20oc3RyLCBzdHJfaW5kICsg
MSB8IDAsIC8qICI+IiAqLzYyKTsKLSAgICAgICAgaWYgKGluZCA+PSBlbmRfaW5kKSB7Ci0gICAg
ICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOwotICAgICAgICB9
Ci0gICAgICAgIHZhciBzdWJfc3RyID0gJCRTdHJpbmcuc3ViKHN0ciwgc3RyX2luZCwgKGluZCAt
IHN0cl9pbmQgfCAwKSArIDEgfCAwKTsKLSAgICAgICAgdmFyIGJlZ19pbmQgPSBpbmQgKyAxIHwg
MDsKLSAgICAgICAgdmFyIG1hdGNoJDEgPSBwYXJzZV9saXRlcmFsKGJlZ19pbmQsIGJlZ19pbmQs
IGVuZF9pbmQpOwotICAgICAgICB2YXIgbWF0Y2gkMiA9IHBhcnNlX2xpdGVyYWwoc3RyX2luZCwg
c3RyX2luZCwgaW5kICsgMSB8IDApOwotICAgICAgICB2YXIgc3ViX2ZtdCA9IG1hdGNoJDJbMF07
Ci0gICAgICAgIHZhciBzdWJfZm9ybWF0ID0gLyogRm9ybWF0ICovWwotICAgICAgICAgIHN1Yl9m
bXQsCi0gICAgICAgICAgc3ViX3N0cgotICAgICAgICBdOwotICAgICAgICB2YXIgZm9ybWF0dGlu
ZyA9IGlzX29wZW5fdGFnID8gLyogT3Blbl90YWcgKi9CbG9jay5fXygwLCBbc3ViX2Zvcm1hdF0p
IDogKGNoZWNrX29wZW5fYm94KHN1Yl9mbXQpLCAvKiBPcGVuX2JveCAqL0Jsb2NrLl9fKDEsIFtz
dWJfZm9ybWF0XSkpOwotICAgICAgICByZXR1cm4gLyogRm10X0VCQiAqL1svKiBGb3JtYXR0aW5n
X2dlbiAqL0Jsb2NrLl9fKDE4LCBbCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdHRpbmcsCi0g
ICAgICAgICAgICAgICAgICAgIG1hdGNoJDFbMF0KLSAgICAgICAgICAgICAgICAgIF0pXTsKLSAg
ICAgIH0KLSAgICB9Ci0gICAgY2F0Y2ggKGV4bil7Ci0gICAgICBpZiAoZXhuID09PSBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKLSAgICAgICAgdmFyIG1hdGNoJDMgPSBwYXJz
ZV9saXRlcmFsKHN0cl9pbmQsIHN0cl9pbmQsIGVuZF9pbmQpOwotICAgICAgICB2YXIgc3ViX2Zv
cm1hdCQxID0gLyogRm9ybWF0ICovWwotICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wLAot
ICAgICAgICAgICIiCi0gICAgICAgIF07Ci0gICAgICAgIHZhciBmb3JtYXR0aW5nJDEgPSBpc19v
cGVuX3RhZyA/IC8qIE9wZW5fdGFnICovQmxvY2suX18oMCwgW3N1Yl9mb3JtYXQkMV0pIDogLyog
T3Blbl9ib3ggKi9CbG9jay5fXygxLCBbc3ViX2Zvcm1hdCQxXSk7Ci0gICAgICAgIHJldHVybiAv
KiBGbXRfRUJCICovWy8qIEZvcm1hdHRpbmdfZ2VuICovQmxvY2suX18oMTgsIFsKLSAgICAgICAg
ICAgICAgICAgICAgZm9ybWF0dGluZyQxLAotICAgICAgICAgICAgICAgICAgICBtYXRjaCQzWzBd
Ci0gICAgICAgICAgICAgICAgICBdKV07Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAg
dGhyb3cgZXhuOwotICAgICAgfQotICAgIH0KLSAgfTsKLSAgcmV0dXJuIHBhcnNlX2xpdGVyYWwo
MCwgMCwgc3RyLmxlbmd0aCk7Ci19Ci0KLWZ1bmN0aW9uIGZvcm1hdF9vZl9zdHJpbmdfZm10dHko
c3RyLCBmbXR0eSkgewotICB2YXIgbWF0Y2ggPSBmbXRfZWJiX29mX3N0cmluZygvKiBOb25lICov
MCwgc3RyKTsKLSAgdHJ5IHsKLSAgICByZXR1cm4gLyogRm9ybWF0ICovWwotICAgICAgICAgICAg
dHlwZV9mb3JtYXQobWF0Y2hbMF0sIGZtdHR5KSwKLSAgICAgICAgICAgIHN0cgotICAgICAgICAg
IF07Ci0gIH0KLSAgY2F0Y2ggKGV4bil7Ci0gICAgaWYgKGV4biA9PT0gVHlwZV9taXNtYXRjaCkg
ewotICAgICAgcmV0dXJuIEN1cnJ5Ll8yKGZhaWx3aXRoX21lc3NhZ2UoLyogRm9ybWF0ICovWwot
ICAgICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18oMTEsIFsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0
Y2ggYmV0d2VlbiAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAq
L0Jsb2NrLl9fKDMsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRp
bmcgKi8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwg
Ki9CbG9jay5fXygxMSwgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYW5k
ICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ2FtbF9zdHJpbmcgKi9C
bG9jay5fXygzLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5v
X3BhZGRpbmcgKi8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBF
bmRfb2ZfZm9ybWF0ICovMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQotICAgICAgICAgICAgICAgICAgICAgICAgXSksCi0gICAgICAgICAgICAgICAg
ICAgICAgImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVMi
Ci0gICAgICAgICAgICAgICAgICAgIF0pLCBzdHIsIHN0cmluZ19vZl9mbXR0eShmbXR0eSkpOwot
ICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHRocm93IGV4bjsKLSAgICB9Ci0gIH0KLX0KLQotZnVu
Y3Rpb24gZm9ybWF0X29mX3N0cmluZ19mb3JtYXQoc3RyLCBwYXJhbSkgewotICB2YXIgbWF0Y2gg
PSBmbXRfZWJiX29mX3N0cmluZygvKiBOb25lICovMCwgc3RyKTsKLSAgdHJ5IHsKLSAgICByZXR1
cm4gLyogRm9ybWF0ICovWwotICAgICAgICAgICAgdHlwZV9mb3JtYXQobWF0Y2hbMF0sIGZtdHR5
X29mX2ZtdChwYXJhbVswXSkpLAotICAgICAgICAgICAgc3RyCi0gICAgICAgICAgXTsKLSAgfQot
ICBjYXRjaCAoZXhuKXsKLSAgICBpZiAoZXhuID09PSBUeXBlX21pc21hdGNoKSB7Ci0gICAgICBy
ZXR1cm4gQ3VycnkuXzIoZmFpbHdpdGhfbWVzc2FnZSgvKiBGb3JtYXQgKi9bCi0gICAgICAgICAg
ICAgICAgICAgICAgLyogU3RyaW5nX2xpdGVyYWwgKi9CbG9jay5fXygxMSwgWwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVu
ICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENhbWxfc3RyaW5nICovQmxvY2suX18o
MywgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdHJpbmdfbGl0ZXJhbCAqL0Jsb2NrLl9f
KDExLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBhbmQgIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDYW1sX3N0cmluZyAqL0Jsb2NrLl9fKDMs
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAq
LzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3Jt
YXQgKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0p
Ci0gICAgICAgICAgICAgICAgICAgICAgICBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAiYmFk
IGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlUyIKLSAgICAgICAg
ICAgICAgICAgICAgXSksIHN0ciwgcGFyYW1bMV0pOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAg
IHRocm93IGV4bjsKLSAgICB9Ci0gIH0KLX0KLQotZXhwb3J0cy5pc19pbl9jaGFyX3NldCAgICAg
ICAgICAgICAgICAgPSBpc19pbl9jaGFyX3NldDsKLWV4cG9ydHMucmV2X2NoYXJfc2V0ICAgICAg
ICAgICAgICAgICAgID0gcmV2X2NoYXJfc2V0OwotZXhwb3J0cy5jcmVhdGVfY2hhcl9zZXQgICAg
ICAgICAgICAgICAgPSBjcmVhdGVfY2hhcl9zZXQ7Ci1leHBvcnRzLmFkZF9pbl9jaGFyX3NldCAg
ICAgICAgICAgICAgICA9IGFkZF9pbl9jaGFyX3NldDsKLWV4cG9ydHMuZnJlZXplX2NoYXJfc2V0
ICAgICAgICAgICAgICAgID0gZnJlZXplX2NoYXJfc2V0OwotZXhwb3J0cy5wYXJhbV9mb3JtYXRf
b2ZfaWdub3JlZF9mb3JtYXQgPSBwYXJhbV9mb3JtYXRfb2ZfaWdub3JlZF9mb3JtYXQ7Ci1leHBv
cnRzLm1ha2VfcHJpbnRmICAgICAgICAgICAgICAgICAgICA9IG1ha2VfcHJpbnRmOwotZXhwb3J0
cy5vdXRwdXRfYWNjICAgICAgICAgICAgICAgICAgICAgPSBvdXRwdXRfYWNjOwotZXhwb3J0cy5i
dWZwdXRfYWNjICAgICAgICAgICAgICAgICAgICAgPSBidWZwdXRfYWNjOwotZXhwb3J0cy5zdHJw
dXRfYWNjICAgICAgICAgICAgICAgICAgICAgPSBzdHJwdXRfYWNjOwotZXhwb3J0cy50eXBlX2Zv
cm1hdCAgICAgICAgICAgICAgICAgICAgPSB0eXBlX2Zvcm1hdDsKLWV4cG9ydHMuZm10X2ViYl9v
Zl9zdHJpbmcgICAgICAgICAgICAgID0gZm10X2ViYl9vZl9zdHJpbmc7Ci1leHBvcnRzLmZvcm1h
dF9vZl9zdHJpbmdfZm10dHkgICAgICAgICA9IGZvcm1hdF9vZl9zdHJpbmdfZm10dHk7Ci1leHBv
cnRzLmZvcm1hdF9vZl9zdHJpbmdfZm9ybWF0ICAgICAgICA9IGZvcm1hdF9vZl9zdHJpbmdfZm9y
bWF0OwotZXhwb3J0cy5jaGFyX29mX2ljb252ICAgICAgICAgICAgICAgICAgPSBjaGFyX29mX2lj
b252OwotZXhwb3J0cy5zdHJpbmdfb2ZfZm9ybWF0dGluZ19saXQgICAgICAgPSBzdHJpbmdfb2Zf
Zm9ybWF0dGluZ19saXQ7Ci1leHBvcnRzLnN0cmluZ19vZl9mb3JtYXR0aW5nX2dlbiAgICAgICA9
IHN0cmluZ19vZl9mb3JtYXR0aW5nX2dlbjsKLWV4cG9ydHMuc3RyaW5nX29mX2ZtdHR5ICAgICAg
ICAgICAgICAgID0gc3RyaW5nX29mX2ZtdHR5OwotZXhwb3J0cy5zdHJpbmdfb2ZfZm10ICAgICAg
ICAgICAgICAgICAgPSBzdHJpbmdfb2ZfZm10OwotZXhwb3J0cy5vcGVuX2JveF9vZl9zdHJpbmcg
ICAgICAgICAgICAgPSBvcGVuX2JveF9vZl9zdHJpbmc7Ci1leHBvcnRzLnN5bW0gICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IHN5bW07Ci1leHBvcnRzLnRyYW5zICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IHRyYW5zOwotZXhwb3J0cy5yZWNhc3QgICAgICAgICAgICAgICAgICAgICAgICAg
PSByZWNhc3Q7Ci0vKiBObyBzaWRlIGVmZmVjdCAqLwotLy8vLy8vLy8gZW5kIG9mIGNhbWxpbnRl
cm5hbEZvcm1hdC5qcyAvLy8vLy8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAg
X3JlZ2lzdHJ5WydjYW1sX2lvJ10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9
OwotLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9pby5qcyAvLy8vLy8vLwotJ3VzZSBzdHJpY3QnOwot
Ci12YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Ci12YXIg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRp
b25zIik7Ci0KLWZ1bmN0aW9uICRjYXJldChwcmltLCBwcmltJDEpIHsKLSAgcmV0dXJuIHByaW0g
KyBwcmltJDE7Ci19Ci0KLXZhciBzdGRpbiA9IHVuZGVmaW5lZDsKLQotdmFyIHN0ZG91dCA9IC8q
IHJlY29yZCAqL1sKLSAgLyogYnVmZmVyICovIiIsCi0gIC8qIG91dHB1dCAqL2Z1bmN0aW9uIChf
LCBzKSB7Ci0gICAgdmFyIHYgPSBzLmxlbmd0aCAtIDEgfCAwOwotICAgIGlmICgoICh0eXBlb2Yg
cHJvY2VzcyAhPT0gInVuZGVmaW5lZCIpICYmIHByb2Nlc3Muc3Rkb3V0ICYmIHByb2Nlc3Muc3Rk
b3V0LndyaXRlKSkgewotICAgICAgcmV0dXJuICggcHJvY2Vzcy5zdGRvdXQud3JpdGUgKShzKTsK
LSAgICB9Ci0gICAgZWxzZSBpZiAoc1t2XSA9PT0gIlxuIikgewotICAgICAgY29uc29sZS5sb2co
cy5zbGljZSgwLCB2KSk7Ci0gICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgIH0KLSAgICBlbHNl
IHsKLSAgICAgIGNvbnNvbGUubG9nKHMpOwotICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICB9
Ci0gIH0KLV07Ci0KLXZhciBzdGRlcnIgPSAvKiByZWNvcmQgKi9bCi0gIC8qIGJ1ZmZlciAqLyIi
LAotICAvKiBvdXRwdXQgKi9mdW5jdGlvbiAoXywgcykgewotICAgIHZhciB2ID0gcy5sZW5ndGgg
LSAxIHwgMDsKLSAgICBpZiAoc1t2XSA9PT0gIlxuIikgewotICAgICAgY29uc29sZS5sb2cocy5z
bGljZSgwLCB2KSk7Ci0gICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgIH0KLSAgICBlbHNlIHsK
LSAgICAgIGNvbnNvbGUubG9nKHMpOwotICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICB9Ci0g
IH0KLV07Ci0KLWZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luKCkgewotICB0aHJv
dyBbCi0gICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCi0gICAgICAgICJj
YW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiBub3QgaW1wbGVtZW50ZWQiCi0gICAgICBdOwotfQot
Ci1mdW5jdGlvbiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQoKSB7Ci0gIHRocm93IFsKLSAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKLSAgICAgICAgImNhbWxfbWxf
b3Blbl9kZXNjcmlwdG9yX291dCBub3QgaW1wbGVtZW50ZWQiCi0gICAgICBdOwotfQotCi1mdW5j
dGlvbiBjYW1sX21sX2ZsdXNoKG9jKSB7Ci0gIGlmIChvY1svKiBidWZmZXIgKi8wXSAhPT0gIiIp
IHsKLSAgICBDdXJyeS5fMihvY1svKiBvdXRwdXQgKi8xXSwgb2MsIG9jWy8qIGJ1ZmZlciAqLzBd
KTsKLSAgICBvY1svKiBidWZmZXIgKi8wXSA9ICIiOwotICAgIHJldHVybiAvKiAoKSAqLzA7Ci0g
IH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotdmFyIG5vZGVfc3RkX291dHB1
dCA9IChmdW5jdGlvbiAocyl7Ci0gICByZXR1cm4gKHR5cGVvZiBwcm9jZXNzICE9PSAidW5kZWZp
bmVkIikgJiYgcHJvY2Vzcy5zdGRvdXQgJiYgKHByb2Nlc3Muc3Rkb3V0LndyaXRlKHMpLCB0cnVl
KTsKLSAgIH0KLSk7Ci0KLWZ1bmN0aW9uIGNhbWxfbWxfb3V0cHV0KG9jLCBzdHIsIG9mZnNldCwg
bGVuKSB7Ci0gIHZhciBzdHIkMSA9IG9mZnNldCA9PT0gMCAmJiBsZW4gPT09IHN0ci5sZW5ndGgg
PyBzdHIgOiBzdHIuc2xpY2Uob2Zmc2V0LCBsZW4pOwotICBpZiAoKCAodHlwZW9mIHByb2Nlc3Mg
IT09ICJ1bmRlZmluZWQiKSAmJiBwcm9jZXNzLnN0ZG91dCAmJiBwcm9jZXNzLnN0ZG91dC53cml0
ZSApICYmIG9jID09PSBzdGRvdXQpIHsKLSAgICByZXR1cm4gKCBwcm9jZXNzLnN0ZG91dC53cml0
ZSApKHN0ciQxKTsKLSAgfQotICBlbHNlIHsKLSAgICB2YXIgaWQgPSBzdHIkMS5sYXN0SW5kZXhP
ZigiXG4iKTsKLSAgICBpZiAoaWQgPCAwKSB7Ci0gICAgICBvY1svKiBidWZmZXIgKi8wXSA9IG9j
Wy8qIGJ1ZmZlciAqLzBdICsgc3RyJDE7Ci0gICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgIH0K
LSAgICBlbHNlIHsKLSAgICAgIG9jWy8qIGJ1ZmZlciAqLzBdID0gb2NbLyogYnVmZmVyICovMF0g
KyBzdHIkMS5zbGljZSgwLCBpZCArIDEgfCAwKTsKLSAgICAgIGNhbWxfbWxfZmx1c2gob2MpOwot
ICAgICAgb2NbLyogYnVmZmVyICovMF0gPSBvY1svKiBidWZmZXIgKi8wXSArIHN0ciQxLnNsaWNl
KGlkICsgMSB8IDApOwotICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICB9Ci0gIH0KLX0KLQot
ZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfY2hhcihvYywgJCRjaGFyKSB7Ci0gIHJldHVybiBjYW1s
X21sX291dHB1dChvYywgU3RyaW5nLmZyb21DaGFyQ29kZSgkJGNoYXIpLCAwLCAxKTsKLX0KLQot
ZnVuY3Rpb24gY2FtbF9tbF9pbnB1dChfLCBfJDEsIF8kMiwgXyQzKSB7Ci0gIHRocm93IFsKLSAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKLSAgICAgICAgImNhbWxfbWxf
aW5wdXQgaWMgbm90IGltcGxlbWVudGVkIgotICAgICAgXTsKLX0KLQotZnVuY3Rpb24gY2FtbF9t
bF9pbnB1dF9jaGFyKCkgewotICB0aHJvdyBbCi0gICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmZhaWx1cmUsCi0gICAgICAgICJjYW1sX21sX2lucHV0X2NoYXIgbm90IGltcGxlbW50ZWQi
Ci0gICAgICBdOwotfQotCi1mdW5jdGlvbiBjYW1sX21sX291dF9jaGFubmVsc19saXN0KCkgewot
ICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgc3Rkb3V0LAotICAgICAgICAgIC8qIDo6ICov
WwotICAgICAgICAgICAgc3RkZXJyLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAg
XQotICAgICAgICBdOwotfQotCi1leHBvcnRzLiRjYXJldCAgICAgICAgICAgICAgICAgICAgICA9
ICRjYXJldDsKLWV4cG9ydHMuc3RkaW4gICAgICAgICAgICAgICAgICAgICAgID0gc3RkaW47Ci1l
eHBvcnRzLnN0ZG91dCAgICAgICAgICAgICAgICAgICAgICA9IHN0ZG91dDsKLWV4cG9ydHMuc3Rk
ZXJyICAgICAgICAgICAgICAgICAgICAgID0gc3RkZXJyOwotZXhwb3J0cy5jYW1sX21sX29wZW5f
ZGVzY3JpcHRvcl9pbiAgPSBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbjsKLWV4cG9ydHMuY2Ft
bF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0ID0gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0Owot
ZXhwb3J0cy5jYW1sX21sX2ZsdXNoICAgICAgICAgICAgICAgPSBjYW1sX21sX2ZsdXNoOwotZXhw
b3J0cy5ub2RlX3N0ZF9vdXRwdXQgICAgICAgICAgICAgPSBub2RlX3N0ZF9vdXRwdXQ7Ci1leHBv
cnRzLmNhbWxfbWxfb3V0cHV0ICAgICAgICAgICAgICA9IGNhbWxfbWxfb3V0cHV0OwotZXhwb3J0
cy5jYW1sX21sX291dHB1dF9jaGFyICAgICAgICAgPSBjYW1sX21sX291dHB1dF9jaGFyOwotZXhw
b3J0cy5jYW1sX21sX2lucHV0ICAgICAgICAgICAgICAgPSBjYW1sX21sX2lucHV0OwotZXhwb3J0
cy5jYW1sX21sX2lucHV0X2NoYXIgICAgICAgICAgPSBjYW1sX21sX2lucHV0X2NoYXI7Ci1leHBv
cnRzLmNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgICA9IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xp
c3Q7Ci0vKiBzdGRpbiBOb3QgYSBwdXJlIG1vZHVsZSAqLwotLy8vLy8vLy8gZW5kIG9mIGNhbWxf
aW8uanMgLy8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3Ry
eVsnY2FtbF9sZXhlciddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8v
Ly8vLy8vIHN0YXJ0IG9mIGNhbWxfbGV4ZXIuanMgLy8vLy8vLy8KLSd1c2Ugc3RyaWN0JzsKLQot
dmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhj
ZXB0aW9ucyIpOwotCi1mdW5jdGlvbiBmYWlsKCkgewotICB0aHJvdyBbCi0gICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCi0gICAgICAgICJsZXhpbmc6IGVtcHR5IHRva2Vu
IgotICAgICAgXTsKLX0KLQotIAotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
Ci0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgIFhhdmll
ciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovCi0v
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCi0vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUg
UmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovCi0vKiAgZW4gQXV0b21hdGlxdWUuICBB
bGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovCi0vKiAg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
LCB3aXRoICAgICovCi0vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3Jp
YmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCi0KLS8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBk
b2xpZ2V6ICQgKi8KLQotLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBn
ZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi8KLQotZnVuY3Rpb24gY2FtbF9sZXhfYXJyYXkocykgewot
ICAgIHZhciBsID0gcy5sZW5ndGggLyAyOwotICAgIHZhciBhID0gbmV3IEFycmF5KGwpOwotICAg
IC8vIHdoZW4gcy5jaGFyQ29kZUF0KDIgKiBpICsgMSApID4gMTI4ICgweDgwKQotICAgIC8vIGFb
aV0gPCAwICAKLSAgICAvLyBmb3IodmFyIGkgPSAwIDsgaSA8PSAweGZmZmY7ICsraSkgeyBpZiAo
aSA8PCAxNiA+PiAxNiAhPT1pKXtjb25zb2xlLmxvZyhpPDwxNj4+MTYsICd2cycsaSl9fQotICAg
IC8vIAotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKQotICAgICAgICBhW2ldID0gKHMu
Y2hhckNvZGVBdCgyICogaSkgfCAocy5jaGFyQ29kZUF0KDIgKiBpICsgMSkgPDwgOCkpIDw8IDE2
ID4+IDE2OwotICAgIHJldHVybiBhOwotfQotLyoqCi0gKiBleHRlcm5hbCBjX2VuZ2luZSAgOiBs
ZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50Ci0gKiBsZXhpbmcubWwKLSAqIHR5cGUg
bGV4X3RhYmxlcyA9IHsKLSAqICAgbGV4X2Jhc2UgOiBzdHJpbmc7Ci0gKiAgIGxleF9iYWNrdHJr
IDogc3RyaW5nOwotICogICBsZXhfZGVmYXVsdCA6IHN0cmluZzsKLSAqICAgbGV4X3RyYW5zIDog
c3RyaW5nOwotICogICBsZXhfY2hlY2sgOiBzdHJpbmc7Ci0gKiAgIGxleF9iYXNlX2NvZGUgOiBz
dHJpbmc7Ci0gKiAgIGxleF9iYWNrdHJrX2NvZGUgOiBzdHJpbmc7Ci0gKiAgIGxleF9kZWZhdWx0
X2NvZGUgOiBzdHJpbmc7Ci0gKiAgIGxleF90cmFuc19jb2RlIDogc3RyaW5nOwotICogICBsZXhf
Y2hlY2tfY29kZSA6IHN0cmluZzsKLSAqICAgbGV4X2NvZGUgOiBzdHJpbmc7Ci0gKiB9Ci0gKgot
ICogdHlwZSBsZXhidWYgPSB7Ci0gKiAgIHJlZmlsbF9idWZmIDogbGV4YnVmIC0+IHVuaXQgOwot
ICogICBtdXRhYmxlIGxleF9idWZmZXIgOiBieXRlczsKLSAqICAgbXV0YWJsZSBsZXhfYnVmZmVy
X2xlbiA6IGludDsKLSAqICAgbXV0YWJsZSBsZXhfYWJzX3BvcyA6IGludDsKLSAqICAgbXV0YWJs
ZSBsZXhfc3RhcnRfcG9zIDogaW50OwotICogICBtdXRhYmxlIGxleF9jdXJyX3BvcyA6IGludDsK
LSAqICAgbXV0YWJsZSBsZXhfbGFzdF9wb3MgOiBpbnQ7Ci0gKiAgIG11dGFibGUgbGV4X2xhc3Rf
YWN0aW9uIDogaW50OwotICogICBtdXRhYmxlIGxleF9lb2ZfcmVhY2hlZCA6IGJvb2w7Ci0gKiAg
IG11dGFibGUgbGV4X21lbSA6IGludCBhcnJheTsKLSAqICAgbXV0YWJsZSBsZXhfc3RhcnRfcCA6
IHBvc2l0aW9uOwotICogICBtdXRhYmxlIGxleF9jdXJyX3A7Ci0gKiB9Ci0gKiBAcGFyYW0gdGJs
Ci0gKiBAcGFyYW0gc3RhcnRfc3RhdGUKLSAqIEBwYXJhbSBsZXhidWYKLSAqIEByZXR1cm5zIHth
bnl9Ci0gKi8KLWZ1bmN0aW9uICQkY2FtbF9sZXhfZW5naW5lKHRibCwgc3RhcnRfc3RhdGUsIGxl
eGJ1ZikgewotICAgIC8vIExleGluZy5sZXhidWYKLSAgICB2YXIgbGV4X2J1ZmZlciA9IDE7Ci0g
ICAgdmFyIGxleF9idWZmZXJfbGVuID0gMjsKLSAgICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDQ7Ci0g
ICAgdmFyIGxleF9jdXJyX3BvcyA9IDU7Ci0gICAgdmFyIGxleF9sYXN0X3BvcyA9IDY7Ci0gICAg
dmFyIGxleF9sYXN0X2FjdGlvbiA9IDc7Ci0gICAgdmFyIGxleF9lb2ZfcmVhY2hlZCA9IDg7Ci0g
ICAgLy8gTGV4aW5nLmxleF90YWJsZXMKLSAgICB2YXIgbGV4X2Jhc2UgPSAwOwotICAgIHZhciBs
ZXhfYmFja3RyayA9IDE7Ci0gICAgdmFyIGxleF9kZWZhdWx0ID0gMjsKLSAgICB2YXIgbGV4X3Ry
YW5zID0gMzsKLSAgICB2YXIgbGV4X2NoZWNrID0gNDsKLSAgICBpZiAoIXRibC5sZXhfZGVmYXVs
dCkgewotICAgICAgICB0YmwubGV4X2Jhc2UgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2Jhc2Vd
KTsKLSAgICAgICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYWNr
dHJrXSk7Ci0gICAgICAgIHRibC5sZXhfY2hlY2sgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2No
ZWNrXSk7Ci0gICAgICAgIHRibC5sZXhfdHJhbnMgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X3Ry
YW5zXSk7Ci0gICAgICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhf
ZGVmYXVsdF0pOwotICAgIH0KLSAgICB2YXIgYzsKLSAgICB2YXIgc3RhdGUgPSBzdGFydF9zdGF0
ZTsKLSAgICAvL3ZhciBidWZmZXIgPSBieXRlc19vZl9zdHJpbmcobGV4YnVmW2xleF9idWZmZXJd
KTsKLSAgICB2YXIgYnVmZmVyID0gbGV4YnVmW2xleF9idWZmZXJdOwotICAgIGlmIChzdGF0ZSA+
PSAwKSB7Ci0gICAgICAgIC8qIEZpcnN0IGVudHJ5ICovCi0gICAgICAgIGxleGJ1ZltsZXhfbGFz
dF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107Ci0g
ICAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7Ci0gICAgfQotICAgIGVsc2Ugewot
ICAgICAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqLwotICAgICAgICBzdGF0ZSA9IC1zdGF0
ZSAtIDE7Ci0gICAgfQotICAgIGZvciAoOzspIHsKLSAgICAgICAgLyogTG9va3VwIGJhc2UgYWRk
cmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovCi0gICAgICAgIHZhciBi
YXNlID0gdGJsLmxleF9iYXNlW3N0YXRlXTsKLSAgICAgICAgaWYgKGJhc2UgPCAwKQotICAgICAg
ICAgICAgcmV0dXJuIC1iYXNlIC0gMTsKLSAgICAgICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJh
Y2sgcG9pbnQgKi8KLSAgICAgICAgdmFyIGJhY2t0cmsgPSB0YmwubGV4X2JhY2t0cmtbc3RhdGVd
OwotICAgICAgICBpZiAoYmFja3RyayA+PSAwKSB7Ci0gICAgICAgICAgICBsZXhidWZbbGV4X2xh
c3RfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdOwotICAgICAgICAgICAgbGV4YnVmW2xleF9s
YXN0X2FjdGlvbl0gPSBiYWNrdHJrOwotICAgICAgICB9Ci0gICAgICAgIC8qIFNlZSBpZiB3ZSBu
ZWVkIGEgcmVmaWxsICovCi0gICAgICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhi
dWZbbGV4X2J1ZmZlcl9sZW5dKSB7Ci0gICAgICAgICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVh
Y2hlZF0gPT09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYyA9IDI1NjsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIC8qIFJlYWQgbmV4dCBpbnB1dCBjaGFyICovCi0gICAgICAgICAg
ICBjID0gYnVmZmVyW2xleGJ1ZltsZXhfY3Vycl9wb3NdXTsKLSAgICAgICAgICAgIGxleGJ1Zlts
ZXhfY3Vycl9wb3NdKys7Ci0gICAgICAgIH0KLSAgICAgICAgLyogRGV0ZXJtaW5lIG5leHQgc3Rh
dGUgKi8KLSAgICAgICAgaWYgKHRibC5sZXhfY2hlY2tbYmFzZSArIGNdID09PSBzdGF0ZSkgewot
ICAgICAgICAgICAgc3RhdGUgPSB0YmwubGV4X3RyYW5zW2Jhc2UgKyBjXTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRl
XTsKLSAgICAgICAgfQotICAgICAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwg
cmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovCi0gICAgICAgIGlmIChzdGF0ZSA8IDAp
IHsKLSAgICAgICAgICAgIGxleGJ1ZltsZXhfY3Vycl9wb3NdID0gbGV4YnVmW2xleF9sYXN0X3Bv
c107Ci0gICAgICAgICAgICBpZiAobGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPT0gLTEpCi0gICAg
ICAgICAgICAgICAgZmFpbCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJl
dHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBw
c2V1ZG8tY2hhcmFjdGVyIHdhcwotICAgICAgICAgICAgIGNvbnN1bWVkIGJ5IHRoZSBhdXRvbWF0
b24gKGkuZS4gdGhlcmUgd2FzIG5vIGJhY2t0cmFjayBhYm92ZSkKLSAgICAgICAgICAgICAqLwot
ICAgICAgICAgICAgaWYgKGMgPT0gMjU2KQotICAgICAgICAgICAgICAgIGxleGJ1ZltsZXhfZW9m
X3JlYWNoZWRdID0gMDsKLSAgICAgICAgfQotICAgIH0KLX0KLQotLyoqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyogTmV3IGxleGVyIGVuZ2luZSwgd2l0
aCBtZW1vcnkgb2YgcG9zaXRpb25zICAqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqLwotCi0vKioKLSAqIHMgLT4gTGV4aW5nLmxleF90YWJsZXMubGV4
X2NvZGUKLSAqIG1lbSAtPiBMZXhpbmcubGV4YnVmLmxleF9tZW0gKCogaW50IGFycmF5ICopCi0g
Ki8gICAgICAgICAgCi0gICAgICAgICAgCi1mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGks
IG1lbSwgY3Vycl9wb3MpIHsKLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIHZhciBkc3QgPSBzLmNo
YXJDb2RlQXQoaSk7Ci0gICAgICAgIGkrKzsKLSAgICAgICAgaWYgKGRzdCA9PSAweGZmKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOwotICAg
ICAgICBpKys7Ci0gICAgICAgIGlmIChzcmMgPT0gMHhmZikKLSAgICAgICAgICAgIG1lbVtkc3Rd
ID0gY3Vycl9wb3M7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1lbVtkc3RdID0gbWVtW3Ny
Y107Ci0gICAgfQotfQotCi0KLS8qKgotICogcyAtPiBMZXhpbmcubGV4X3RhYmxlcy5sZXhfY29k
ZQotICogbWVtIC0+IExleGluZy5sZXhidWYubGV4X21lbSAoKiBpbnQgYXJyYXkgKikKLSAqLwot
ICAKLWZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7Ci0gICAgZm9yICg7Oykg
ewotICAgICAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOwotICAgICAgICBpKys7Ci0gICAg
ICAgIGlmIChkc3QgPT0gMHhmZikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdmFyIHNy
YyA9IHMuY2hhckNvZGVBdChpKTsKLSAgICAgICAgaSsrOwotICAgICAgICBpZiAoc3JjID09IDB4
ZmYpCi0gICAgICAgICAgICBtZW1bZHN0XSA9IC0xOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBtZW1bZHN0XSA9IG1lbVtzcmNdOwotICAgIH0KLX0KLS8qKgotICogZXh0ZXJuYWwgY19uZXdf
ZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludCA9ICJjYW1sX25ld19s
ZXhfZW5naW5lIgotICogQHBhcmFtIHRibAotICogQHBhcmFtIHN0YXJ0X3N0YXRlCi0gKiBAcGFy
YW0gbGV4YnVmCi0gKiBAcmV0dXJucyB7YW55fQotICovCi1mdW5jdGlvbiAkJGNhbWxfbmV3X2xl
eF9lbmdpbmUodGJsLCBzdGFydF9zdGF0ZSwgbGV4YnVmKSB7Ci0gICAgLy8gTGV4aW5nLmxleGJ1
ZgotICAgIHZhciBsZXhfYnVmZmVyID0gMTsKLSAgICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAyOwot
ICAgIHZhciBsZXhfc3RhcnRfcG9zID0gNDsKLSAgICB2YXIgbGV4X2N1cnJfcG9zID0gNTsKLSAg
ICB2YXIgbGV4X2xhc3RfcG9zID0gNjsKLSAgICB2YXIgbGV4X2xhc3RfYWN0aW9uID0gNzsKLSAg
ICB2YXIgbGV4X2VvZl9yZWFjaGVkID0gODsKLSAgICB2YXIgbGV4X21lbSA9IDk7Ci0gICAgLy8g
TGV4aW5nLmxleF90YWJsZXMKLSAgICB2YXIgbGV4X2Jhc2UgPSAwOwotICAgIHZhciBsZXhfYmFj
a3RyayA9IDE7Ci0gICAgdmFyIGxleF9kZWZhdWx0ID0gMjsKLSAgICB2YXIgbGV4X3RyYW5zID0g
MzsKLSAgICB2YXIgbGV4X2NoZWNrID0gNDsKLSAgICB2YXIgbGV4X2Jhc2VfY29kZSA9IDU7Ci0g
ICAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA2OwotICAgIHZhciBsZXhfZGVmYXVsdF9jb2RlID0g
NzsKLSAgICB2YXIgbGV4X3RyYW5zX2NvZGUgPSA4OwotICAgIHZhciBsZXhfY2hlY2tfY29kZSA9
IDk7Ci0gICAgdmFyIGxleF9jb2RlID0gMTA7Ci0gICAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHsK
LSAgICAgICAgdGJsLmxleF9iYXNlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYXNlXSk7Ci0g
ICAgICAgIHRibC5sZXhfYmFja3RyayA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfYmFja3Rya10p
OwotICAgICAgICB0YmwubGV4X2NoZWNrID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9jaGVja10p
OwotICAgICAgICB0YmwubGV4X3RyYW5zID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF90cmFuc10p
OwotICAgICAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSh0YmxbbGV4X2RlZmF1
bHRdKTsKLSAgICB9Ci0gICAgaWYgKCF0YmwubGV4X2RlZmF1bHRfY29kZSkgewotICAgICAgICB0
YmwubGV4X2Jhc2VfY29kZSA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfYmFzZV9jb2RlXSk7Ci0g
ICAgICAgIHRibC5sZXhfYmFja3Rya19jb2RlID0gY2FtbF9sZXhfYXJyYXkodGJsW2xleF9iYWNr
dHJrX2NvZGVdKTsKLSAgICAgICAgdGJsLmxleF9jaGVja19jb2RlID0gY2FtbF9sZXhfYXJyYXko
dGJsW2xleF9jaGVja19jb2RlXSk7Ci0gICAgICAgIHRibC5sZXhfdHJhbnNfY29kZSA9IGNhbWxf
bGV4X2FycmF5KHRibFtsZXhfdHJhbnNfY29kZV0pOwotICAgICAgICB0YmwubGV4X2RlZmF1bHRf
Y29kZSA9IGNhbWxfbGV4X2FycmF5KHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7Ci0gICAgfQotICAg
IGlmICh0YmwubGV4X2NvZGUgPT0gbnVsbCkgewotICAgICAgICAvL3RibC5sZXhfY29kZSA9IGNh
bWxfYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pOwotICAgICAgICB0YmwubGV4X2NvZGUg
PSAodGJsW2xleF9jb2RlXSk7Ci0gICAgfQotICAgIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRl
OwotICAgIC8vdmFyIGJ1ZmZlciA9IGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGxleGJ1ZltsZXhfYnVm
ZmVyXSk7Ci0gICAgdmFyIGJ1ZmZlciA9IGxleGJ1ZltsZXhfYnVmZmVyXTsKLSAgICBpZiAoc3Rh
dGUgPj0gMCkgewotICAgICAgICAvKiBGaXJzdCBlbnRyeSAqLwotICAgICAgICBsZXhidWZbbGV4
X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3Nd
OwotICAgICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IC0xOwotICAgIH0KLSAgICBlbHNl
IHsKLSAgICAgICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi8KLSAgICAgICAgc3RhdGUgPSAt
c3RhdGUgLSAxOwotICAgIH0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIC8qIExvb2t1cCBiYXNl
IGFkZHJlc3Mgb3IgYWN0aW9uIG51bWJlciBmb3IgY3VycmVudCBzdGF0ZSAqLwotICAgICAgICB2
YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07Ci0gICAgICAgIGlmIChiYXNlIDwgMCkgewot
ICAgICAgICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFzZV9jb2RlW3N0YXRlXTsKLSAgICAg
ICAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1ZltsZXhf
bWVtXSk7Ci0gICAgICAgICAgICByZXR1cm4gLWJhc2UgLSAxOwotICAgICAgICB9Ci0gICAgICAg
IC8qIFNlZSBpZiBpdCdzIGEgYmFja3RyYWNrIHBvaW50ICovCi0gICAgICAgIHZhciBiYWNrdHJr
ID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTsKLSAgICAgICAgaWYgKGJhY2t0cmsgPj0gMCkgewot
ICAgICAgICAgICAgdmFyIHBjX29mZiA9IHRibC5sZXhfYmFja3Rya19jb2RlW3N0YXRlXTsKLSAg
ICAgICAgICAgIGNhbWxfbGV4X3J1bl90YWcodGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1Zlts
ZXhfbWVtXSk7Ci0gICAgICAgICAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhf
Y3Vycl9wb3NdOwotICAgICAgICAgICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSBiYWNrdHJr
OwotICAgICAgICB9Ci0gICAgICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovCi0gICAg
ICAgIGlmIChsZXhidWZbbGV4X2N1cnJfcG9zXSA+PSBsZXhidWZbbGV4X2J1ZmZlcl9sZW5dKSB7
Ci0gICAgICAgICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gLXN0YXRlIC0gMTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBjID0gMjU2OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyog
UmVhZCBuZXh0IGlucHV0IGNoYXIgKi8KLSAgICAgICAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xl
eF9jdXJyX3Bvc11dOwotICAgICAgICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10rKzsKLSAgICAg
ICAgfQotICAgICAgICAvKiBEZXRlcm1pbmUgbmV4dCBzdGF0ZSAqLwotICAgICAgICB2YXIgcHN0
YXRlID0gc3RhdGU7Ci0gICAgICAgIGlmICh0YmwubGV4X2NoZWNrW2Jhc2UgKyBjXSA9PSBzdGF0
ZSkKLSAgICAgICAgICAgIHN0YXRlID0gdGJsLmxleF90cmFuc1tiYXNlICsgY107Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTsKLSAgICAg
ICAgLyogSWYgbm8gdHJhbnNpdGlvbiBvbiB0aGlzIGNoYXIsIHJldHVybiB0byBsYXN0IGJhY2t0
cmFjayBwb2ludCAqLwotICAgICAgICBpZiAoc3RhdGUgPCAwKSB7Ci0gICAgICAgICAgICBsZXhi
dWZbbGV4X2N1cnJfcG9zXSA9IGxleGJ1ZltsZXhfbGFzdF9wb3NdOwotICAgICAgICAgICAgaWYg
KGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID09IC0xKQotICAgICAgICAgICAgICAgIGZhaWwoKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gbGV4YnVmW2xleF9sYXN0
X2FjdGlvbl07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBJZiBz
b21lIHRyYW5zaXRpb24sIGdldCBhbmQgcGVyZm9ybSBtZW1vcnkgbW92ZXMgKi8KLSAgICAgICAg
ICAgIHZhciBiYXNlX2NvZGUgPSB0YmwubGV4X2Jhc2VfY29kZVtwc3RhdGVdLCBwY19vZmY7Ci0g
ICAgICAgICAgICBpZiAodGJsLmxleF9jaGVja19jb2RlW2Jhc2VfY29kZSArIGNdID09IHBzdGF0
ZSkKLSAgICAgICAgICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2Rl
ICsgY107Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcGNfb2ZmID0gdGJsLmxl
eF9kZWZhdWx0X2NvZGVbcHN0YXRlXTsKLSAgICAgICAgICAgIGlmIChwY19vZmYgPiAwKQotICAg
ICAgICAgICAgICAgIGNhbWxfbGV4X3J1bl9tZW0odGJsLmxleF9jb2RlLCBwY19vZmYsIGxleGJ1
ZltsZXhfbWVtXSwgbGV4YnVmW2xleF9jdXJyX3Bvc10pOwotICAgICAgICAgICAgLyogRXJhc2Ug
dGhlIEVPRiBjb25kaXRpb24gb25seSBpZiB0aGUgRU9GIHBzZXVkby1jaGFyYWN0ZXIgd2FzCi0g
ICAgICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8g
YmFja3RyYWNrIGFib3ZlKQotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoYyA9PSAy
NTYpCi0gICAgICAgICAgICAgICAgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi07Ci0KLWZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZShwcmltLCBwcmlt
JDEsIHByaW0kMikgewotICByZXR1cm4gJCRjYW1sX2xleF9lbmdpbmUocHJpbSwgcHJpbSQxLCBw
cmltJDIpOwotfQotCi1mdW5jdGlvbiBjYW1sX25ld19sZXhfZW5naW5lKHByaW0sIHByaW0kMSwg
cHJpbSQyKSB7Ci0gIHJldHVybiAkJGNhbWxfbmV3X2xleF9lbmdpbmUocHJpbSwgcHJpbSQxLCBw
cmltJDIpOwotfQotCi1leHBvcnRzLmZhaWwgICAgICAgICAgICAgICAgPSBmYWlsOwotZXhwb3J0
cy5jYW1sX2xleF9lbmdpbmUgICAgID0gY2FtbF9sZXhfZW5naW5lOwotZXhwb3J0cy5jYW1sX25l
d19sZXhfZW5naW5lID0gY2FtbF9uZXdfbGV4X2VuZ2luZTsKLS8qICBOb3QgYSBwdXJlIG1vZHVs
ZSAqLwotLy8vLy8vLy8gZW5kIG9mIGNhbWxfbGV4ZXIuanMgLy8vLy8vLy8KLSAgICByZXR1cm4g
ZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnY2FtbF9vYmonXSA9IGZ1bmN0aW9uKCkg
ewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBjYW1sX29iai5qcyAv
Ly8vLy8vLwotJ3VzZSBzdHJpY3QnOwotCi12YXIgQmxvY2sgICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL2Jsb2NrIik7Ci12YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJl
KCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7Ci0KLWZ1bmN0aW9uIGNhbWxfb2JqX2R1cCh4
KSB7Ci0gIHZhciBsZW4gPSB4Lmxlbmd0aDsKLSAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKTsKLSAg
Zm9yKHZhciBpID0gMCAsaV9maW5pc2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytp
KXsKLSAgICB2W2ldID0geFtpXTsKLSAgfQotICB2LnRhZyA9IHgudGFnIHwgMDsKLSAgcmV0dXJu
IHY7Ci19Ci0KLWZ1bmN0aW9uIGNhbWxfb2JqX3RydW5jYXRlKHgsIG5ld19zaXplKSB7Ci0gIHZh
ciBsZW4gPSB4Lmxlbmd0aDsKLSAgaWYgKG5ld19zaXplIDw9IDAgfHwgbmV3X3NpemUgPiBsZW4p
IHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxp
ZF9hcmd1bWVudCwKLSAgICAgICAgICAiT2JqLnRydW5jYXRlIgotICAgICAgICBdOwotICB9Ci0g
IGVsc2UgaWYgKGxlbiAhPT0gbmV3X3NpemUpIHsKLSAgICBmb3IodmFyIGkgPSBuZXdfc2l6ZSAs
aV9maW5pc2ggPSBsZW4gLSAxIHwgMDsgaSA8PSBpX2ZpbmlzaDsgKytpKXsKLSAgICAgIHhbaV0g
PSAwOwotICAgIH0KLSAgICB4Lmxlbmd0aCA9IG5ld19zaXplOwotICAgIHJldHVybiAvKiAoKSAq
LzA7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY2Ft
bF9sYXp5X21ha2VfZm9yd2FyZCh4KSB7Ci0gIHJldHVybiBCbG9jay5fXygyNTAsIFt4XSk7Ci19
Ci0KLWZ1bmN0aW9uIGNhbWxfdXBkYXRlX2R1bW15KHgsIHkpIHsKLSAgdmFyIGxlbiA9IHkubGVu
Z3RoOwotICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAtIDEgfCAwOyBpIDw9IGlfZmlu
aXNoOyArK2kpewotICAgIHhbaV0gPSB5W2ldOwotICB9Ci0gIHZhciB5X3RhZyA9IHkudGFnIHwg
MDsKLSAgaWYgKHlfdGFnICE9PSAwKSB7Ci0gICAgeC50YWcgPSB5X3RhZzsKLSAgICByZXR1cm4g
LyogKCkgKi8wOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAwOwotICB9Ci19Ci0KLWZ1bmN0
aW9uIGNhbWxfaW50X2NvbXBhcmUoeCwgeSkgewotICBpZiAoeCA8IHkpIHsKLSAgICByZXR1cm4g
LTE7Ci0gIH0KLSAgZWxzZSBpZiAoeCA9PT0geSkgewotICAgIHJldHVybiAwOwotICB9Ci0gIGVs
c2UgewotICAgIHJldHVybiAxOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNhbWxfY29tcGFyZShfYSwg
X2IpIHsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBiID0gX2I7Ci0gICAgdmFyIGEgPSBfYTsK
LSAgICBpZiAodHlwZW9mIGEgPT09ICJzdHJpbmciKSB7Ci0gICAgICB2YXIgeCA9IGE7Ci0gICAg
ICB2YXIgeSA9IGI7Ci0gICAgICBpZiAoeCA8IHkpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAg
ICAgfQotICAgICAgZWxzZSBpZiAoeCA9PT0geSkgewotICAgICAgICByZXR1cm4gMDsKLSAgICAg
IH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0KLSAgICB9Ci0gICAg
ZWxzZSBpZiAodHlwZW9mIGEgPT09ICJudW1iZXIiKSB7Ci0gICAgICByZXR1cm4gY2FtbF9pbnRf
Y29tcGFyZShhLCBiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZW9mIGEgPT09ICJib29sZWFu
IiB8fCB0eXBlb2YgYSA9PT0gIm51bGwiIHx8IHR5cGVvZiBhID09PSAidW5kZWZpbmVkIikgewot
ICAgICAgdmFyIHgkMSA9IGE7Ci0gICAgICB2YXIgeSQxID0gYjsKLSAgICAgIGlmICh4JDEgPT09
IHkkMSkgewotICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHgkMSA8
IHkkMSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdmFyIHRhZ19h
ID0gYS50YWcgfCAwOwotICAgICAgdmFyIHRhZ19iID0gYi50YWcgfCAwOwotICAgICAgaWYgKHRh
Z19hID09PSAyNTApIHsKLSAgICAgICAgX2EgPSBhWzBdOwotICAgICAgICBjb250aW51ZSA7Ci0g
ICAgICAgIAotICAgICAgfQotICAgICAgZWxzZSBpZiAodGFnX2IgPT09IDI1MCkgewotICAgICAg
ICBfYiA9IGJbMF07Ci0gICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgCi0gICAgICB9Ci0gICAg
ICBlbHNlIGlmICh0YWdfYSA9PT0gMjQ4KSB7Ci0gICAgICAgIHJldHVybiBjYW1sX2ludF9jb21w
YXJlKGFbMV0sIGJbMV0pOwotICAgICAgfQotICAgICAgZWxzZSBpZiAodGFnX2EgPT09IDI1MSkg
ewotICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAgICJlcXVhbDogYWJzdHJhY3QgdmFsdWUi
Ci0gICAgICAgICAgICBdOwotICAgICAgfQotICAgICAgZWxzZSBpZiAodGFnX2EgIT09IHRhZ19i
KSB7Ci0gICAgICAgIGlmICh0YWdfYSA8IHRhZ19iKSB7Ci0gICAgICAgICAgcmV0dXJuIC0xOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHJldHVybiAxOwotICAgICAgICB9
Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdmFyIGxlbl9hID0gYS5sZW5ndGg7Ci0g
ICAgICAgIHZhciBsZW5fYiA9IGIubGVuZ3RoOwotICAgICAgICBpZiAobGVuX2EgPT09IGxlbl9i
KSB7Ci0gICAgICAgICAgdmFyIGEkMSA9IGE7Ci0gICAgICAgICAgdmFyIGIkMSA9IGI7Ci0gICAg
ICAgICAgdmFyIF9pID0gMDsKLSAgICAgICAgICB2YXIgc2FtZV9sZW5ndGggPSBsZW5fYTsKLSAg
ICAgICAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICAgICAgICB2YXIgaSA9IF9pOwotICAgICAgICAg
ICAgaWYgKGkgPT09IHNhbWVfbGVuZ3RoKSB7Ci0gICAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgIHZhciByZXMgPSBj
YW1sX2NvbXBhcmUoYSQxW2ldLCBiJDFbaV0pOwotICAgICAgICAgICAgICBpZiAocmVzICE9PSAw
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGxl
bl9hIDwgbGVuX2IpIHsKLSAgICAgICAgICB2YXIgYSQyID0gYTsKLSAgICAgICAgICB2YXIgYiQy
ID0gYjsKLSAgICAgICAgICB2YXIgX2kkMSA9IDA7Ci0gICAgICAgICAgdmFyIHNob3J0X2xlbmd0
aCA9IGxlbl9hOwotICAgICAgICAgIHdoaWxlKHRydWUpIHsKLSAgICAgICAgICAgIHZhciBpJDEg
PSBfaSQxOwotICAgICAgICAgICAgaWYgKGkkMSA9PT0gc2hvcnRfbGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICB2YXIgcmVzJDEgPSBjYW1sX2NvbXBhcmUoYSQyW2kkMV0sIGIkMltpJDFdKTsK
LSAgICAgICAgICAgICAgaWYgKHJlcyQxICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHJlcyQxOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIF9pJDEgPSBpJDEgKyAxIHwgMDsKLSAgICAgICAgICAgICAgICBjb250aW51ZSA7Ci0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICB9OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHZhciBhJDMgPSBhOwot
ICAgICAgICAgIHZhciBiJDMgPSBiOwotICAgICAgICAgIHZhciBfaSQyID0gMDsKLSAgICAgICAg
ICB2YXIgc2hvcnRfbGVuZ3RoJDEgPSBsZW5fYjsKLSAgICAgICAgICB3aGlsZSh0cnVlKSB7Ci0g
ICAgICAgICAgICB2YXIgaSQyID0gX2kkMjsKLSAgICAgICAgICAgIGlmIChpJDIgPT09IHNob3J0
X2xlbmd0aCQxKSB7Ci0gICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgIHZhciByZXMkMiA9IGNhbWxfY29tcGFyZShh
JDNbaSQyXSwgYiQzW2kkMl0pOwotICAgICAgICAgICAgICBpZiAocmVzJDIgIT09IDApIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcmVzJDI7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgX2kkMiA9IGkkMiArIDEgfCAwOwotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH07
Ci19Ci0KLWZ1bmN0aW9uIGNhbWxfZXF1YWwoX2EsIF9iKSB7Ci0gIHdoaWxlKHRydWUpIHsKLSAg
ICB2YXIgYiA9IF9iOwotICAgIHZhciBhID0gX2E7Ci0gICAgaWYgKGEgPT09IGIpIHsKLSAgICAg
IHJldHVybiAvKiB0cnVlICovMTsKLSAgICB9Ci0gICAgZWxzZSBpZiAodHlwZW9mIGEgPT09ICJz
dHJpbmciIHx8IHR5cGVvZiBhID09PSAibnVtYmVyIiB8fCB0eXBlb2YgYSA9PT0gImJvb2xlYW4i
IHx8IHR5cGVvZiBhID09PSAidW5kZWZpbmVkIiB8fCB0eXBlb2YgYSA9PT0gIm51bGwiKSB7Ci0g
ICAgICByZXR1cm4gLyogZmFsc2UgKi8wOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHZhciB0
YWdfYSA9IGEudGFnIHwgMDsKLSAgICAgIHZhciB0YWdfYiA9IGIudGFnIHwgMDsKLSAgICAgIGlm
ICh0YWdfYSA9PT0gMjUwKSB7Ci0gICAgICAgIF9hID0gYVswXTsKLSAgICAgICAgY29udGludWUg
OwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHRhZ19iID09PSAyNTApIHsKLSAg
ICAgICAgX2IgPSBiWzBdOwotICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgIAotICAgICAgfQot
ICAgICAgZWxzZSBpZiAodGFnX2EgPT09IDI0OCkgewotICAgICAgICByZXR1cm4gKyhhWzFdID09
PSBiWzFdKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHRhZ19hID09PSAyNTEpIHsKLSAgICAg
ICAgdGhyb3cgWwotICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlk
X2FyZ3VtZW50LAotICAgICAgICAgICAgICAiZXF1YWw6IGFic3RyYWN0IHZhbHVlIgotICAgICAg
ICAgICAgXTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHRhZ19hICE9PSB0YWdfYikgewotICAg
ICAgICByZXR1cm4gLyogZmFsc2UgKi8wOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAg
IHZhciBsZW5fYSA9IGEubGVuZ3RoOwotICAgICAgICB2YXIgbGVuX2IgPSBiLmxlbmd0aDsKLSAg
ICAgICAgaWYgKGxlbl9hID09PSBsZW5fYikgewotICAgICAgICAgIHZhciBhJDEgPSBhOwotICAg
ICAgICAgIHZhciBiJDEgPSBiOwotICAgICAgICAgIHZhciBfaSA9IDA7Ci0gICAgICAgICAgdmFy
IHNhbWVfbGVuZ3RoID0gbGVuX2E7Ci0gICAgICAgICAgd2hpbGUodHJ1ZSkgewotICAgICAgICAg
ICAgdmFyIGkgPSBfaTsKLSAgICAgICAgICAgIGlmIChpID09PSBzYW1lX2xlbmd0aCkgewotICAg
ICAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIGlmIChjYW1sX2VxdWFsKGEkMVtpXSwgYiQxW2ldKSkgewotICAgICAgICAgICAgICBf
aSA9IGkgKyAxIHwgMDsKLSAgICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgICAK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4g
LyogZmFsc2UgKi8wOwotICAgICAgICAgICAgfQotICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgICAgICAgfQot
ICAgICAgfQotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gY2FtbF9ub3RlcXVhbChhLCBiKSB7
Ci0gIHJldHVybiAxIC0gY2FtbF9lcXVhbChhLCBiKTsKLX0KLQotZnVuY3Rpb24gY2FtbF9ncmVh
dGVyZXF1YWwoYSwgYikgewotICByZXR1cm4gKyhjYW1sX2NvbXBhcmUoYSwgYikgPj0gMCk7Ci19
Ci0KLWZ1bmN0aW9uIGNhbWxfZ3JlYXRlcnRoYW4oYSwgYikgewotICByZXR1cm4gKyhjYW1sX2Nv
bXBhcmUoYSwgYikgPiAwKTsKLX0KLQotZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwoYSwgYikgewot
ICByZXR1cm4gKyhjYW1sX2NvbXBhcmUoYSwgYikgPD0gMCk7Ci19Ci0KLWZ1bmN0aW9uIGNhbWxf
bGVzc3RoYW4oYSwgYikgewotICByZXR1cm4gKyhjYW1sX2NvbXBhcmUoYSwgYikgPCAwKTsKLX0K
LQotdmFyIGNhbWxfaW50MzJfY29tcGFyZSA9IGNhbWxfaW50X2NvbXBhcmU7Ci0KLXZhciBjYW1s
X25hdGl2ZWludF9jb21wYXJlID0gY2FtbF9pbnRfY29tcGFyZTsKLQotZXhwb3J0cy5jYW1sX29i
al9kdXAgICAgICAgICAgID0gY2FtbF9vYmpfZHVwOwotZXhwb3J0cy5jYW1sX29ial90cnVuY2F0
ZSAgICAgID0gY2FtbF9vYmpfdHJ1bmNhdGU7Ci1leHBvcnRzLmNhbWxfbGF6eV9tYWtlX2Zvcndh
cmQgPSBjYW1sX2xhenlfbWFrZV9mb3J3YXJkOwotZXhwb3J0cy5jYW1sX3VwZGF0ZV9kdW1teSAg
ICAgID0gY2FtbF91cGRhdGVfZHVtbXk7Ci1leHBvcnRzLmNhbWxfaW50X2NvbXBhcmUgICAgICAg
PSBjYW1sX2ludF9jb21wYXJlOwotZXhwb3J0cy5jYW1sX2ludDMyX2NvbXBhcmUgICAgID0gY2Ft
bF9pbnQzMl9jb21wYXJlOwotZXhwb3J0cy5jYW1sX25hdGl2ZWludF9jb21wYXJlID0gY2FtbF9u
YXRpdmVpbnRfY29tcGFyZTsKLWV4cG9ydHMuY2FtbF9jb21wYXJlICAgICAgICAgICA9IGNhbWxf
Y29tcGFyZTsKLWV4cG9ydHMuY2FtbF9lcXVhbCAgICAgICAgICAgICA9IGNhbWxfZXF1YWw7Ci1l
eHBvcnRzLmNhbWxfbm90ZXF1YWwgICAgICAgICAgPSBjYW1sX25vdGVxdWFsOwotZXhwb3J0cy5j
YW1sX2dyZWF0ZXJlcXVhbCAgICAgID0gY2FtbF9ncmVhdGVyZXF1YWw7Ci1leHBvcnRzLmNhbWxf
Z3JlYXRlcnRoYW4gICAgICAgPSBjYW1sX2dyZWF0ZXJ0aGFuOwotZXhwb3J0cy5jYW1sX2xlc3N0
aGFuICAgICAgICAgID0gY2FtbF9sZXNzdGhhbjsKLWV4cG9ydHMuY2FtbF9sZXNzZXF1YWwgICAg
ICAgICA9IGNhbWxfbGVzc2VxdWFsOwotLyogTm8gc2lkZSBlZmZlY3QgKi8KLS8vLy8vLy8vIGVu
ZCBvZiBjYW1sX29iai5qcyAvLy8vLy8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0K
LSAgX3JlZ2lzdHJ5WydjYW1sX29vJ10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9
IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgY2FtbF9vby5qcyAvLy8vLy8vLwotJ3VzZSBzdHJpY3Qn
OwotCi12YXIgQ2FtbF9hcnJheSAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfYXJyYXki
KTsKLXZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMiKTsKLQotdmFyIGNhbWxfbWV0aG9kc19jYWNoZSA9IENhbWxfYXJyYXkuY2Ft
bF9tYWtlX3ZlY3QoMTAwMCwgMCk7Ci0KLWZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2Qo
b2JqLCB0YWcsIGNhY2hlaWQpIHsKLSAgdmFyIG1ldGhzID0gb2JqWzBdOwotICB2YXIgb2ZmcyA9
IGNhbWxfbWV0aG9kc19jYWNoZVtjYWNoZWlkXTsKLSAgaWYgKG1ldGhzW29mZnNdID09PSB0YWcp
IHsKLSAgICByZXR1cm4gbWV0aHNbb2ZmcyAtIDEgfCAwXTsKLSAgfQotICBlbHNlIHsKLSAgICB2
YXIgYXV4ID0gZnVuY3Rpb24gKF9pKSB7Ci0gICAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICAgIHZh
ciBpID0gX2k7Ci0gICAgICAgIGlmIChpIDwgMykgewotICAgICAgICAgIHRocm93IFsKLSAgICAg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAiY2FtbF9vby5tbCIsCi0gICAgICAgICAg
ICAgICAgICA1NCwKLSAgICAgICAgICAgICAgICAgIDIwCi0gICAgICAgICAgICAgICAgXQotICAg
ICAgICAgICAgICBdOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG1ldGhzW2ldID09PSB0
YWcpIHsKLSAgICAgICAgICBjYW1sX21ldGhvZHNfY2FjaGVbY2FjaGVpZF0gPSBpOwotICAgICAg
ICAgIHJldHVybiBpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIF9pID0g
aSAtIDIgfCAwOwotICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAKLSAgICAgICAgfQot
ICAgICAgfTsKLSAgICB9OwotICAgIHJldHVybiBtZXRoc1thdXgoKG1ldGhzWzBdIDw8IDEpICsg
MSB8IDApIC0gMSB8IDBdOwotICB9Ci19Ci0KLWV4cG9ydHMuY2FtbF9nZXRfcHVibGljX21ldGhv
ZCA9IGNhbWxfZ2V0X3B1YmxpY19tZXRob2Q7Ci0vKiBObyBzaWRlIGVmZmVjdCAqLwotLy8vLy8v
Ly8gZW5kIG9mIGNhbWxfb28uanMgLy8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsK
LQotCi0gIF9yZWdpc3RyeVsnY2FtbF9wYXJzZXInXSA9IGZ1bmN0aW9uKCkgewotICAgIGxldCBl
eHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBjYW1sX3BhcnNlci5qcyAvLy8vLy8vLwot
J3VzZSBzdHJpY3QnOwotCi0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICov
Ci0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKiAgICAgICAgICAgIFhhdmll
ciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovCi0v
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICovCi0vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUg
UmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovCi0vKiAgZW4gQXV0b21hdGlxdWUuICBB
bGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovCi0vKiAg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
LCB3aXRoICAgICovCi0vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3Jp
YmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovCi0vKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0vKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCi0KLS8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVog
eGxlcm95ICQgKi8KLQotLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVk
IGJ5IGNhbWx5YWNjICovCi0KLS8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqLwotCi0vKioKLSAq
IGNhbWxfbGV4X2FycmF5KCJhYmNkIikKLSAqIFsyNTE4NSwgMjU2OTldCi0gKiBAcGFyYW0gcwot
ICogQHJldHVybnMge2FueVtdfQotICogVE9ETzogZHVwbGljYXRlZCB3aXRoIG1vZHVsZSB7IUNh
bWxfbGV4fQotICovCi1mdW5jdGlvbiBjYW1sX2xleF9hcnJheShzKSB7Ci0gICAgdmFyIGwgPSBz
Lmxlbmd0aCAvIDI7Ci0gICAgdmFyIGEgPSBuZXcgQXJyYXkobCk7Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsOyBpKyspCi0gICAgICAgIGFbaV0gPSAocy5jaGFyQ29kZUF0KDIgKiBpKSB8IChz
LmNoYXJDb2RlQXQoMiAqIGkgKyAxKSA8PCA4KSkgPDwgMTYgPj4gMTY7Ci0gICAgcmV0dXJuIGE7
Ci19Ci0vKioKLSAqIE5vdGUgdGhhdCBUUyBlbnVtIGlzIG5vdCBmcmllbmRseSB0byBDbG9zdXJl
IGNvbXBpbGVyCi0gKiBAZW51bXtudW1iZXJ9Ci0gKi8KLXZhciBBdXRvbWF0YSA9IHsKLSAgICBT
VEFSVDogMCwKLSAgICBMT09QOiA2LAotICAgIFRPS0VOX1JFQUQ6IDEsCi0gICAgVEVTVF9TSElG
VDogNywKLSAgICBFUlJPUl9ERVRFQ1RFRDogNSwKLSAgICBTSElGVDogOCwKLSAgICBTSElGVF9S
RUNPVkVSOiA5LAotICAgIFNUQUNLX0dST1dOXzE6IDIsCi0gICAgUkVEVUNFOiAxMCwKLSAgICBT
VEFDS19HUk9XTl8yOiAzLAotICAgIFNFTUFOVElDX0FDVElPTl9DT01QVVRFRDogNAotfTsKLS8q
KgotICogQGVudW17bnVtYmVyfQotICovCi12YXIgUmVzdWx0ID0gewotICAgIFJFQURfVE9LRU46
IDAsCi0gICAgUkFJU0VfUEFSU0VfRVJST1I6IDEsCi0gICAgR1JPV19TVEFDS1NfMTogMiwKLSAg
ICBHUk9XX1NUQUNLU18yOiAzLAotICAgIENPTVBVVEVfU0VNQU5USUNfQUNUSU9OOiA0LAotICAg
IENBTExfRVJST1JfRlVOQ1RJT046IDUKLX07Ci12YXIgUEFSU0VSX1RSQUNFID0gZmFsc2U7Ci0v
KioKLSAqIGV4dGVybmFsIHBhcnNlX2VuZ2luZSA6IHBhcnNlX3RhYmxlcyAtPiBwYXJzZXJfZW52
IC0+IHBhcnNlcl9pbnB1dCAtPiBPYmoudCAtPiBwYXJzZXJfb3V0cHV0Ci0gKiBwYXJzaW5nLm1s
Ci0gKgotICogdHlwZSBwYXJzZV90YWJsZXMgPSB7Ci0gKiAgIGFjdGlvbnMgOiAocGFyc2VyX2Vu
diAtPiBPYmoudCkgYXJyYXkKLSAqICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5OwotICogICB0
cmFuc2xfYmxvY2sgOiBpbnQgYXJyYXk7Ci0gKiAgIGxocyA6IHN0cmluZzsKLSAqICAgbGVuIDog
c3RyaW5nOwotICogICBkZWZyZWQgOiBzdHJpbmc7Ci0gKiAgIGRnb3RvIDogc3RyaW5nOwotICog
ICBzaW5kZXggOiBzdHJpbmc7Ci0gKiAgIHJpbmRleCA6IHN0cmluZzsKLSAqICAgZ2luZGV4IDog
c3RyaW5nOwotICogICB0YWJsZXNpemUgOiBpbnQ7Ci0gKiAgIHRhYmxlIDogc3RyaW5nOwotICog
ICBjaGVjayA6IHN0cmluZzsKLSAqICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDsK
LSAqICAgbmFtZXNfY29uc3QgOiBzdHJpbmc7Ci0gKiAgIG5hbWVzX2Jsb2NrIDogc3RyaW5nCi0g
KiB9Ci0gKgotICogdHlwZSBwYXJzZXJfZW52ID0KLSAqIHsgbXV0YWJsZSBzX3N0YWNrIDogaW50
IGFycmF5OyAgICAgICAgKCogU3RhdGVzICopCi0gKiAgbXV0YWJsZSB2X3N0YWNrIDogT2JqLnQg
YXJyYXk7ICAgICAgKCogU2VtYW50aWMgYXR0cmlidXRlcyAqKQotICogIG11dGFibGUgc3ltYl9z
dGFydF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAoKiBTdGFydCBwb3NpdGlvbnMgKikKLSAqICBt
dXRhYmxlIHN5bWJfZW5kX3N0YWNrIDogcG9zaXRpb24gYXJyYXk7ICAgKCogRW5kIHBvc2l0aW9u
cyAqKQotICogIG11dGFibGUgc3RhY2tzaXplIDogaW50OyAgICAgICAgICAgICgqIFNpemUgb2Yg
dGhlIHN0YWNrcyAqKQotICogIG11dGFibGUgc3RhY2tiYXNlIDogaW50OyAgICAgICAgICAgICgq
IEJhc2Ugc3AgZm9yIGN1cnJlbnQgcGFyc2UgKikKLSAqICBtdXRhYmxlIGN1cnJfY2hhciA6IGlu
dDsgICAgICAgICAgICAoKiBMYXN0IHRva2VuIHJlYWQgKikKLSAqICBtdXRhYmxlIGx2YWwgOiBP
YmoudDsgICAgICAgICAgICAgICAoKiBJdHMgc2VtYW50aWMgYXR0cmlidXRlICopCi0gKiAgbXV0
YWJsZSBzeW1iX3N0YXJ0IDogcG9zaXRpb247ICAgICAgKCogU3RhcnQgcG9zLiBvZiB0aGUgY3Vy
cmVudCBzeW1ib2wqKQotICogIG11dGFibGUgc3ltYl9lbmQgOiBwb3NpdGlvbjsgICAgICAgICgq
IEVuZCBwb3MuIG9mIHRoZSBjdXJyZW50IHN5bWJvbCAqKQotICogIG11dGFibGUgYXNwIDogaW50
OyAgICAgICAgICAgICAgICAgICgqIFRoZSBzdGFjayBwb2ludGVyIGZvciBhdHRyaWJ1dGVzICop
Ci0gKiAgbXV0YWJsZSBydWxlX2xlbiA6IGludDsgICAgICAgICAgICAgKCogTnVtYmVyIG9mIHJo
cyBpdGVtcyBpbiB0aGUgcnVsZSAqKQotICogIG11dGFibGUgcnVsZV9udW1iZXIgOiBpbnQ7ICAg
ICAgICAgICgqIFJ1bGUgbnVtYmVyIHRvIHJlZHVjZSBieSAqKQotICogIG11dGFibGUgc3AgOiBp
bnQ7ICAgICAgICAgICAgICAgICAgICgqIFNhdmVkIHNwIGZvciBwYXJzZV9lbmdpbmUgKikKLSAq
ICBtdXRhYmxlIHN0YXRlIDogaW50OyAgICAgICAgICAgICAgICAoKiBTYXZlZCBzdGF0ZSBmb3Ig
cGFyc2VfZW5naW5lICopCi0gKiAgbXV0YWJsZSBlcnJmbGFnIDogaW50IH0gICAgICAgICAgICAg
KCogU2F2ZWQgZXJyb3IgZmxhZyBmb3IgcGFyc2VfZW5naW5lICopCi0gKgotICogIHR5cGUgcGFy
c2VyX2lucHV0ID0KLSAqICAgfCBTdGFydAotICogICB8IFRva2VuX3JlYWQKLSAqICAgfCBTdGFj
a3NfZ3Jvd25fMQotICogICB8IFN0YWNrc19ncm93bl8yCi0gKiAgIHwgU2VtYW50aWNfYWN0aW9u
X2NvbXB1dGVkCi0gKiAgIHwgRXJyb3JfZGV0ZWN0ZWQKLQotICogQHBhcmFtIHRhYmxlcwotICog
QHBhcmFtIGVudgotICogQHBhcmFtIGNtZAotICogQHBhcmFtIGFyZwotICogQHJldHVybnMge251
bWJlcn0KLSAqLwotZnVuY3Rpb24gJCRjYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMgLyogcGFyc2Vy
X3RhYmxlICovLCBlbnYgLyogcGFyc2VyX2VudiAqLywgY21kIC8qIHBhcnNlcl9pbnB1dCovLCBh
cmcgLyogT2JqLnQqLykgewotICAgIHZhciBFUlJDT0RFID0gMjU2OwotICAgIC8vdmFyIFNUQVJU
ID0gMDsKLSAgICAvL3ZhciBUT0tFTl9SRUFEID0gMTsKLSAgICAvL3ZhciBTVEFDS1NfR1JPV05f
MSA9IDI7Ci0gICAgLy92YXIgU1RBQ0tTX0dST1dOXzIgPSAzOwotICAgIC8vdmFyIFNFTUFOVElD
X0FDVElPTl9DT01QVVRFRCA9IDQ7Ci0gICAgLy92YXIgRVJST1JfREVURUNURUQgPSA1OwotICAg
IC8vdmFyIGxvb3AgPSA2OwotICAgIC8vdmFyIHRlc3RzaGlmdCA9IDc7Ci0gICAgLy92YXIgc2hp
ZnQgPSA4OwotICAgIC8vdmFyIHNoaWZ0X3JlY292ZXIgPSA5OwotICAgIC8vdmFyIHJlZHVjZSA9
IDEwOwotICAgIC8vIFBhcnNpbmcucGFyc2VyX2VudgotICAgIHZhciBlbnZfc19zdGFjayA9IDA7
IC8vIGFycmF5Ci0gICAgdmFyIGVudl92X3N0YWNrID0gMTsgLy8gYXJyYXkKLSAgICB2YXIgZW52
X3N5bWJfc3RhcnRfc3RhY2sgPSAyOyAvLyBhcnJheQotICAgIHZhciBlbnZfc3ltYl9lbmRfc3Rh
Y2sgPSAzOyAvLyBhcnJheQotICAgIHZhciBlbnZfc3RhY2tzaXplID0gNDsKLSAgICB2YXIgZW52
X3N0YWNrYmFzZSA9IDU7Ci0gICAgdmFyIGVudl9jdXJyX2NoYXIgPSA2OwotICAgIHZhciBlbnZf
bHZhbCA9IDc7IC8vIE9iai50Ci0gICAgdmFyIGVudl9zeW1iX3N0YXJ0ID0gODsgLy8gcG9zaXRp
b24KLSAgICB2YXIgZW52X3N5bWJfZW5kID0gOTsgLy8gcG9zaXRpb24KLSAgICB2YXIgZW52X2Fz
cCA9IDEwOwotICAgIHZhciBlbnZfcnVsZV9sZW4gPSAxMTsKLSAgICB2YXIgZW52X3J1bGVfbnVt
YmVyID0gMTI7Ci0gICAgdmFyIGVudl9zcCA9IDEzOwotICAgIHZhciBlbnZfc3RhdGUgPSAxNDsK
LSAgICB2YXIgZW52X2VycmZsYWcgPSAxNTsKLSAgICAvLyBQYXJzaW5nLnBhcnNlX3RhYmxlcwot
ICAgIC8vIHZhciBfdGJsX2FjdGlvbnMgPSAxOwotICAgIHZhciB0YmxfdHJhbnNsX2NvbnN0ID0g
MTsgLy8gYXJyYXkKLSAgICB2YXIgdGJsX3RyYW5zbF9ibG9jayA9IDI7IC8vIGFycmF5Ci0gICAg
dmFyIHRibF9saHMgPSAzOwotICAgIHZhciB0YmxfbGVuID0gNDsKLSAgICB2YXIgdGJsX2RlZnJl
ZCA9IDU7Ci0gICAgdmFyIHRibF9kZ290byA9IDY7Ci0gICAgdmFyIHRibF9zaW5kZXggPSA3Owot
ICAgIHZhciB0YmxfcmluZGV4ID0gODsKLSAgICB2YXIgdGJsX2dpbmRleCA9IDk7Ci0gICAgdmFy
IHRibF90YWJsZXNpemUgPSAxMDsKLSAgICB2YXIgdGJsX3RhYmxlID0gMTE7Ci0gICAgdmFyIHRi
bF9jaGVjayA9IDEyOwotICAgIC8vIHZhciBfdGJsX2Vycm9yX2Z1bmN0aW9uID0gMTQ7Ci0gICAg
Ly8gdmFyIF90YmxfbmFtZXNfY29uc3QgPSAxNTsKLSAgICAvLyB2YXIgX3RibF9uYW1lc19ibG9j
ayA9IDE2OwotICAgIGlmICghdGFibGVzLmRnb3RvKSB7Ci0gICAgICAgIHRhYmxlcy5kZWZyZWQg
PSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2RlZnJlZF0pOwotICAgICAgICB0YWJsZXMuc2lu
ZGV4ID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9zaW5kZXhdKTsKLSAgICAgICAgdGFibGVz
LmNoZWNrID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9jaGVja10pOwotICAgICAgICB0YWJs
ZXMucmluZGV4ID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9yaW5kZXhdKTsKLSAgICAgICAg
dGFibGVzLnRhYmxlID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF90YWJsZV0pOwotICAgICAg
ICB0YWJsZXMubGVuID0gY2FtbF9sZXhfYXJyYXkodGFibGVzW3RibF9sZW5dKTsKLSAgICAgICAg
dGFibGVzLmxocyA9IGNhbWxfbGV4X2FycmF5KHRhYmxlc1t0YmxfbGhzXSk7Ci0gICAgICAgIHRh
Ymxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2dpbmRleF0pOwotICAgICAg
ICB0YWJsZXMuZGdvdG8gPSBjYW1sX2xleF9hcnJheSh0YWJsZXNbdGJsX2Rnb3RvXSk7Ci0gICAg
fQotICAgIHZhciByZXM7Ci0gICAgdmFyIG4sIG4xLCBuMiwgc3RhdGUxOwotICAgIC8vIFJFU1RP
UkUKLSAgICB2YXIgc3AgPSBlbnZbZW52X3NwXTsKLSAgICB2YXIgc3RhdGUgPSBlbnZbZW52X3N0
YXRlXTsKLSAgICB2YXIgZXJyZmxhZyA9IGVudltlbnZfZXJyZmxhZ107Ci0gICAgZXhpdDogZm9y
ICg7OykgewotICAgICAgICAvL2NvbnNvbGUuZXJyb3IoIlN0YXRlIiwgQXV0b21hdGFbY21kXSk7
Ci0gICAgICAgIHN3aXRjaCAoY21kKSB7Ci0gICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlNUQVJU
OgotICAgICAgICAgICAgICAgIHN0YXRlID0gMDsKLSAgICAgICAgICAgICAgICBlcnJmbGFnID0g
MDsKLSAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAotICAgICAgICAgICAgY2FzZSBBdXRvbWF0
YS5MT09QOgotICAgICAgICAgICAgICAgIG4gPSB0YWJsZXMuZGVmcmVkW3N0YXRlXTsKLSAgICAg
ICAgICAgICAgICBpZiAobiAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9t
YXRhLlJFRFVDRTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgewotICAgICAg
ICAgICAgICAgICAgICBjbWQgPSBBdXRvbWF0YS5URVNUX1NISUZUOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzID0gUmVz
dWx0LlJFQURfVE9LRU47Ci0gICAgICAgICAgICAgICAgYnJlYWsgZXhpdDsKLSAgICAgICAgICAg
IC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqLwotICAgICAgICAg
ICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi8KLSAgICAgICAgICAgIGNhc2UgQXV0b21h
dGEuVE9LRU5fUkVBRDoKLSAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ251bWJl
cicpIHsKLSAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gdGFibGVzW3Ri
bF90cmFuc2xfYmxvY2tdW2FyZy50YWcgfCAwIC8qICsgMSAqL107Ci0gICAgICAgICAgICAgICAg
ICAgIGVudltlbnZfbHZhbF0gPSBhcmdbMF07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBlbnZbZW52X2N1cnJfY2hhcl0gPSB0
YWJsZXNbdGJsX3RyYW5zbF9jb25zdF1bYXJnIC8qICsgMSAqL107Ci0gICAgICAgICAgICAgICAg
ICAgIGVudltlbnZfbHZhbF0gPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBpZiAoUEFSU0VSX1RSQUNFKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
IlN0YXRlICVkLCByZWFkIHRva2VuIiwgc3RhdGUsIGFyZyk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoCi0gICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlRF
U1RfU0hJRlQ6Ci0gICAgICAgICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlXTsKLSAg
ICAgICAgICAgICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdOwotICAgICAgICAgICAg
ICAgIGlmIChuMSAhPSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVd
ICYmCi0gICAgICAgICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJy
X2NoYXJdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLlNISUZUOwotICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgbjEgPSB0YWJsZXMucmluZGV4W3N0YXRlXTsKLSAgICAgICAgICAgICAgICBuMiA9IG4xICsg
ZW52W2Vudl9jdXJyX2NoYXJdOwotICAgICAgICAgICAgICAgIGlmIChuMSAhPSAwICYmIG4yID49
IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmCi0gICAgICAgICAgICAgICAgICAg
IHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIG4gPSB0YWJsZXMudGFibGVbbjJdOwotICAgICAgICAgICAgICAgICAgICBjbWQgPSBB
dXRvbWF0YS5SRURVQ0U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZXJyZmxhZyA8PSAwKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHJlcyA9IFJlc3VsdC5DQUxMX0VSUk9SX0ZVTkNUSU9OOwotICAgICAgICAgICAgICAg
ICAgICBicmVhayBleGl0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZhbGwg
dGhyb3VnaAotICAgICAgICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGVycm9yIGZ1bmN0
aW9uICovCi0gICAgICAgICAgICBjYXNlIEF1dG9tYXRhLkVSUk9SX0RFVEVDVEVEOgotICAgICAg
ICAgICAgICAgIGlmIChlcnJmbGFnIDwgMykgewotICAgICAgICAgICAgICAgICAgICBlcnJmbGFn
ID0gMzsKLSAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNrXVtzcCAvKiArIDEqL107Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuMSA9IHRhYmxlcy5zaW5kZXhbc3RhdGUxXTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG4yID0gbjEgKyBFUlJDT0RFOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiYKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IEVSUkNPREUpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWQgPSBBdXRvbWF0YS5TSElGVF9SRUNPVkVS
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHNwIDw9IGVudltlbnZfc3RhY2tiYXNlXSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFJlc3VsdC5SQUlTRV9QQVJTRV9FUlJPUjsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFyc2VfZXJyb3Ig
Ki8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcC0tOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoZW52W2Vudl9jdXJyX2No
YXJdID09IDApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUmVzdWx0LlJBSVNFX1BB
UlNFX0VSUk9SOwotICAgICAgICAgICAgICAgICAgICAvKiBUaGUgTUwgY29kZSByYWlzZXMgUGFy
c2VfZXJyb3IgKi8KLSAgICAgICAgICAgICAgICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7
Ci0gICAgICAgICAgICAgICAgICAgIGNtZCA9IEF1dG9tYXRhLkxPT1A7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZhbGwgdGhy
b3VnaAotICAgICAgICAgICAgY2FzZSBBdXRvbWF0YS5TSElGVDoKLSAgICAgICAgICAgICAgICBl
bnZbZW52X2N1cnJfY2hhcl0gPSAtMTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyZmxhZyA+IDAp
Ci0gICAgICAgICAgICAgICAgICAgIGVycmZsYWctLTsKLSAgICAgICAgICAgIC8vIEZhbGwgdGhy
b3VnaAotICAgICAgICAgICAgY2FzZSBBdXRvbWF0YS5TSElGVF9SRUNPVkVSOgotICAgICAgICAg
ICAgICAgIGlmIChQQVJTRVJfVFJBQ0UpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZS5l
cnJvcigiU3RhdGUgJWQ6IHNoaWZ0IHRvIHN0YXRlICVkIiwgc3RhdGUsIHRhYmxlcy50YWJsZVtu
Ml0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0ZSA9IHRhYmxlcy50
YWJsZVtuMl07Ci0gICAgICAgICAgICAgICAgc3ArKzsKLSAgICAgICAgICAgICAgICBpZiAoc3Ag
Pj0gZW52W2Vudl9zdGFja3NpemVdKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlcyA9IFJlc3Vs
dC5HUk9XX1NUQUNLU18xOwotICAgICAgICAgICAgICAgICAgICBicmVhayBleGl0OwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAotICAgICAgICAgICAgLyog
VGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovCi0gICAgICAgICAgICBjYXNlIEF1dG9t
YXRhLlNUQUNLX0dST1dOXzE6Ci0gICAgICAgICAgICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCAv
KiArIDEgKi9dID0gc3RhdGU7Ci0gICAgICAgICAgICAgICAgZW52W2Vudl92X3N0YWNrXVtzcCAv
KiArIDEgKi9dID0gZW52W2Vudl9sdmFsXTsKLSAgICAgICAgICAgICAgICBlbnZbZW52X3N5bWJf
c3RhcnRfc3RhY2tdW3NwIC8qICsgMSAqL10gPSBlbnZbZW52X3N5bWJfc3RhcnRdOwotICAgICAg
ICAgICAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwIC8qICsgMSAqL10gPSBlbnZbZW52
X3N5bWJfZW5kXTsKLSAgICAgICAgICAgICAgICBjbWQgPSBBdXRvbWF0YS5MT09QOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBBdXRvbWF0YS5SRURVQ0U6Ci0gICAg
ICAgICAgICAgICAgaWYgKFBBUlNFUl9UUkFDRSkgewotICAgICAgICAgICAgICAgICAgICBjb25z
b2xlLmVycm9yKCJTdGF0ZSAlZCA6IHJlZHVjZSBieSBydWxlICVkIiwgc3RhdGUsIG4pOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YXIgbSA9IHRhYmxlcy5sZW5bbl07Ci0g
ICAgICAgICAgICAgICAgZW52W2Vudl9hc3BdID0gc3A7Ci0gICAgICAgICAgICAgICAgZW52W2Vu
dl9ydWxlX251bWJlcl0gPSBuOwotICAgICAgICAgICAgICAgIGVudltlbnZfcnVsZV9sZW5dID0g
bTsKLSAgICAgICAgICAgICAgICBzcCA9IHNwIC0gbSArIDE7Ci0gICAgICAgICAgICAgICAgbSA9
IHRhYmxlcy5saHNbbl07Ci0gICAgICAgICAgICAgICAgc3RhdGUxID0gZW52W2Vudl9zX3N0YWNr
XVtzcCAtIDFdOyAvLwotICAgICAgICAgICAgICAgIG4xID0gdGFibGVzLmdpbmRleFttXTsKLSAg
ICAgICAgICAgICAgICBuMiA9IG4xICsgc3RhdGUxOwotICAgICAgICAgICAgICAgIGlmIChuMSAh
PSAwICYmIG4yID49IDAgJiYgbjIgPD0gdGFibGVzW3RibF90YWJsZXNpemVdICYmCi0gICAgICAg
ICAgICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gc3RhdGUxKQotICAgICAgICAgICAgICAg
ICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSA9IHRhYmxlcy5kZ290b1ttXTsKLSAgICAgICAgICAgICAg
ICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJl
cyA9IFJlc3VsdC5HUk9XX1NUQUNLU18yOwotICAgICAgICAgICAgICAgICAgICBicmVhayBleGl0
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaAotICAgICAg
ICAgICAgLyogVGhlIE1MIGNvZGUgcmVzaXplcyB0aGUgc3RhY2tzICovCi0gICAgICAgICAgICBj
YXNlIEF1dG9tYXRhLlNUQUNLX0dST1dOXzI6Ci0gICAgICAgICAgICAgICAgcmVzID0gUmVzdWx0
LkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OOwotICAgICAgICAgICAgICAgIGJyZWFrIGV4aXQ7Ci0g
ICAgICAgICAgICAvKiBUaGUgTUwgY29kZSBjYWxscyB0aGUgc2VtYW50aWMgYWN0aW9uICovCi0g
ICAgICAgICAgICBjYXNlIEF1dG9tYXRhLlNFTUFOVElDX0FDVElPTl9DT01QVVRFRDoKLSAgICAg
ICAgICAgICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwIC8qICsgMSAqL10gPSBzdGF0ZTsKLSAgICAg
ICAgICAgICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwIC8qICsgMSovXSA9IGFyZzsKLSAgICAgICAg
ICAgICAgICB2YXIgYXNwID0gZW52W2Vudl9hc3BdOwotICAgICAgICAgICAgICAgIGVudltlbnZf
c3ltYl9lbmRfc3RhY2tdW3NwIC8qICsgMSovXSA9IGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW2Fz
cCAvKiArIDEqL107Ci0gICAgICAgICAgICAgICAgaWYgKHNwID4gYXNwKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8qIFRoaXMgaXMgYW4gZXBzaWxvbiBwcm9kdWN0aW9uLiBUYWtlIHN5bWJfc3Rh
cnQgZXF1YWwgdG8gc3ltYl9lbmQuICovCi0gICAgICAgICAgICAgICAgICAgIGVudltlbnZfc3lt
Yl9zdGFydF9zdGFja11bc3AgLyogKyAxKi9dID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNw
IC8qKyAxKi9dOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjbWQgPSBBdXRv
bWF0YS5MT09QOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgLyogU2hvdWxk
IG5vdCBoYXBwZW4gKi8KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIFJlc3VsdC5SQUlTRV9QQVJTRV9FUlJPUjsKLSAgICAgICAgfQotICAgIH0KLSAgICAvLyBT
QVZFCi0gICAgZW52W2Vudl9zcF0gPSBzcDsKLSAgICBlbnZbZW52X3N0YXRlXSA9IHN0YXRlOwot
ICAgIGVudltlbnZfZXJyZmxhZ10gPSBlcnJmbGFnOwotICAgIHJldHVybiByZXM7Ci19Ci0KLS8q
KgotICogZXh0ZXJuYWwgc2V0X3RyYWNlOiBib29sIC0+IGJvb2wgPSAiY2FtbF9zZXRfcGFyc2Vy
X3RyYWNlIgotICogcGFyc2luZy5tbAotICogQHBhcmFtIHtib29sZWFufQotICogQHJldHVybnMg
e2Jvb2xlYW59Ci0gKi8KLWZ1bmN0aW9uICQkY2FtbF9zZXRfcGFyc2VyX3RyYWNlKHYpIHsKLSAg
ICB2YXIgb2xkID0gUEFSU0VSX1RSQUNFOwotICAgIFBBUlNFUl9UUkFDRSA9IHY7Ci0gICAgcmV0
dXJuIG9sZDsKLX0KLQotCi07Ci0KLWZ1bmN0aW9uIGNhbWxfcGFyc2VfZW5naW5lKHByaW0sIHBy
aW0kMSwgcHJpbSQyLCBwcmltJDMpIHsKLSAgcmV0dXJuICQkY2FtbF9wYXJzZV9lbmdpbmUocHJp
bSwgcHJpbSQxLCBwcmltJDIsIHByaW0kMyk7Ci19Ci0KLWZ1bmN0aW9uIGNhbWxfc2V0X3BhcnNl
cl90cmFjZShwcmltKSB7Ci0gIHJldHVybiAkJGNhbWxfc2V0X3BhcnNlcl90cmFjZShwcmltKTsK
LX0KLQotZXhwb3J0cy5jYW1sX3BhcnNlX2VuZ2luZSAgICAgPSBjYW1sX3BhcnNlX2VuZ2luZTsK
LWV4cG9ydHMuY2FtbF9zZXRfcGFyc2VyX3RyYWNlID0gY2FtbF9zZXRfcGFyc2VyX3RyYWNlOwot
LyogIE5vdCBhIHB1cmUgbW9kdWxlICovCi0vLy8vLy8vLyBlbmQgb2YgY2FtbF9wYXJzZXIuanMg
Ly8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnY2Ft
bF9zdHJpbmcnXSA9IGZ1bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8v
LyBzdGFydCBvZiBjYW1sX3N0cmluZy5qcyAvLy8vLy8vLwotJ3VzZSBzdHJpY3QnOwotCi12YXIg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRp
b25zIik7Ci0KLWZ1bmN0aW9uIGpzX3N0cmluZ19vZl9jaGFyKHByaW0pIHsKLSAgcmV0dXJuIFN0
cmluZy5mcm9tQ2hhckNvZGUocHJpbSk7Ci19Ci0KLWZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dldChz
LCBpKSB7Ci0gIGlmIChpID49IHMubGVuZ3RoIHx8IGkgPCAwKSB7Ci0gICAgdGhyb3cgWwotICAg
ICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAg
ICAgImluZGV4IG91dCBvZiBib3VuZHMiCi0gICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAg
cmV0dXJuIHMuY2hhckNvZGVBdChpKTsKLSAgfQotfQotCi1mdW5jdGlvbiBjYW1sX2NyZWF0ZV9z
dHJpbmcobGVuKSB7Ci0gIGlmIChsZW4gPCAwKSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgIlN0cmlu
Zy5jcmVhdGUiCi0gICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIG5ldyBBcnJh
eShsZW4pOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNhbWxfc3RyaW5nX2NvbXBhcmUoczEsIHMyKSB7
Ci0gIGlmIChzMSA9PT0gczIpIHsKLSAgICByZXR1cm4gMDsKLSAgfQotICBlbHNlIGlmIChzMSA8
IHMyKSB7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAxOwotICB9
Ci19Ci0KLWZ1bmN0aW9uIGNhbWxfZmlsbF9zdHJpbmcocywgaSwgbCwgYykgewotICBpZiAobCA+
IDApIHsKLSAgICBmb3IodmFyIGsgPSBpICxrX2ZpbmlzaCA9IChsICsgaSB8IDApIC0gMSB8IDA7
IGsgPD0ga19maW5pc2g7ICsrayl7Ci0gICAgICBzW2tdID0gYzsKLSAgICB9Ci0gICAgcmV0dXJu
IC8qICgpICovMDsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gMDsKLSAgfQotfQotCi1mdW5j
dGlvbiBjYW1sX2JsaXRfc3RyaW5nKHMxLCBpMSwgczIsIGkyLCBsZW4pIHsKLSAgaWYgKGxlbiA+
IDApIHsKLSAgICB2YXIgb2ZmMSA9IHMxLmxlbmd0aCAtIGkxIHwgMDsKLSAgICBpZiAobGVuIDw9
IG9mZjEpIHsKLSAgICAgIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkg
PD0gaV9maW5pc2g7ICsraSl7Ci0gICAgICAgIHMyW2kyICsgaSB8IDBdID0gczEuY2hhckNvZGVB
dChpMSArIGkgfCAwKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgfQot
ICAgIGVsc2UgewotICAgICAgZm9yKHZhciBpJDEgPSAwICxpX2ZpbmlzaCQxID0gb2ZmMSAtIDEg
fCAwOyBpJDEgPD0gaV9maW5pc2gkMTsgKytpJDEpewotICAgICAgICBzMltpMiArIGkkMSB8IDBd
ID0gczEuY2hhckNvZGVBdChpMSArIGkkMSB8IDApOwotICAgICAgfQotICAgICAgZm9yKHZhciBp
JDIgPSBvZmYxICxpX2ZpbmlzaCQyID0gbGVuIC0gMSB8IDA7IGkkMiA8PSBpX2ZpbmlzaCQyOyAr
K2kkMil7Ci0gICAgICAgIHMyW2kyICsgaSQyIHwgMF0gPSAvKiAiXDAwMCIgKi8wOwotICAgICAg
fQotICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0
dXJuIDA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gY2FtbF9ibGl0X2J5dGVzKHMxLCBpMSwgczIsIGky
LCBsZW4pIHsKLSAgaWYgKGxlbiA+IDApIHsKLSAgICBpZiAoczEgPT09IHMyKSB7Ci0gICAgICB2
YXIgczEkMSA9IHMxOwotICAgICAgdmFyIGkxJDEgPSBpMTsKLSAgICAgIHZhciBpMiQxID0gaTI7
Ci0gICAgICB2YXIgbGVuJDEgPSBsZW47Ci0gICAgICBpZiAoaTEkMSA8IGkyJDEpIHsKLSAgICAg
ICAgdmFyIHJhbmdlX2EgPSAoczEkMS5sZW5ndGggLSBpMiQxIHwgMCkgLSAxIHwgMDsKLSAgICAg
ICAgdmFyIHJhbmdlX2IgPSBsZW4kMSAtIDEgfCAwOwotICAgICAgICB2YXIgcmFuZ2UgPSByYW5n
ZV9hID4gcmFuZ2VfYiA/IHJhbmdlX2IgOiByYW5nZV9hOwotICAgICAgICBmb3IodmFyIGogPSBy
YW5nZTsgaiA+PSAwOyAtLWopewotICAgICAgICAgIHMxJDFbaTIkMSArIGogfCAwXSA9IHMxJDFb
aTEkMSArIGogfCAwXTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLyogKCkgKi8wOwotICAg
ICAgfQotICAgICAgZWxzZSBpZiAoaTEkMSA+IGkyJDEpIHsKLSAgICAgICAgdmFyIHJhbmdlX2Ek
MSA9IChzMSQxLmxlbmd0aCAtIGkxJDEgfCAwKSAtIDEgfCAwOwotICAgICAgICB2YXIgcmFuZ2Vf
YiQxID0gbGVuJDEgLSAxIHwgMDsKLSAgICAgICAgdmFyIHJhbmdlJDEgPSByYW5nZV9hJDEgPiBy
YW5nZV9iJDEgPyByYW5nZV9iJDEgOiByYW5nZV9hJDE7Ci0gICAgICAgIGZvcih2YXIgayA9IDA7
IGsgPD0gcmFuZ2UkMTsgKytrKXsKLSAgICAgICAgICBzMSQxW2kyJDEgKyBrIHwgMF0gPSBzMSQx
W2kxJDEgKyBrIHwgMF07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAg
ICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLSAgICB9Ci0g
ICAgZWxzZSB7Ci0gICAgICB2YXIgb2ZmMSA9IHMxLmxlbmd0aCAtIGkxIHwgMDsKLSAgICAgIGlm
IChsZW4gPD0gb2ZmMSkgewotICAgICAgICBmb3IodmFyIGkgPSAwICxpX2ZpbmlzaCA9IGxlbiAt
IDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpewotICAgICAgICAgIHMyW2kyICsgaSB8IDBdID0g
czFbaTEgKyBpIHwgMF07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAg
ICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBmb3IodmFyIGkkMSA9IDAgLGlfZmluaXNoJDEg
PSBvZmYxIC0gMSB8IDA7IGkkMSA8PSBpX2ZpbmlzaCQxOyArK2kkMSl7Ci0gICAgICAgICAgczJb
aTIgKyBpJDEgfCAwXSA9IHMxW2kxICsgaSQxIHwgMF07Ci0gICAgICAgIH0KLSAgICAgICAgZm9y
KHZhciBpJDIgPSBvZmYxICxpX2ZpbmlzaCQyID0gbGVuIC0gMSB8IDA7IGkkMiA8PSBpX2Zpbmlz
aCQyOyArK2kkMil7Ci0gICAgICAgICAgczJbaTIgKyBpJDIgfCAwXSA9IC8qICJcMDAwIiAqLzA7
Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgIH0KLSAgICB9Ci0g
IH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gYnl0ZXNfb2Zf
c3RyaW5nKHMpIHsKLSAgdmFyIGxlbiA9IHMubGVuZ3RoOwotICB2YXIgcmVzID0gbmV3IEFycmF5
KGxlbik7Ci0gIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVuIC0gMSB8IDA7IGkgPD0gaV9m
aW5pc2g7ICsraSl7Ci0gICAgcmVzW2ldID0gcy5jaGFyQ29kZUF0KGkpOwotICB9Ci0gIHJldHVy
biByZXM7Ci19Ci0KLWZ1bmN0aW9uIGJ5dGVzX3RvX3N0cmluZyhhKSB7Ci0gIHZhciBieXRlcyA9
IGE7Ci0gIHZhciBpID0gMDsKLSAgdmFyIGxlbiA9IGEubGVuZ3RoOwotICB2YXIgcyA9ICIiOwot
ICB2YXIgc19sZW4gPSBsZW47Ci0gIGlmIChpID09PSAwICYmIGxlbiA8PSA0MDk2ICYmIGxlbiA9
PT0gYnl0ZXMubGVuZ3RoKSB7Ci0gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHko
bnVsbCxieXRlcyk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgdmFyIG9mZnNldCA9IDA7Ci0gICAgd2hp
bGUoc19sZW4gPiAwKSB7Ci0gICAgICB2YXIgbmV4dCA9IHNfbGVuIDwgMTAyNCA/IHNfbGVuIDog
MTAyNDsKLSAgICAgIHZhciB0bXBfYnl0ZXMgPSBuZXcgQXJyYXkobmV4dCk7Ci0gICAgICBjYW1s
X2JsaXRfYnl0ZXMoYnl0ZXMsIG9mZnNldCwgdG1wX2J5dGVzLCAwLCBuZXh0KTsKLSAgICAgIHMg
PSBzICsgU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLHRtcF9ieXRlcyk7Ci0gICAgICBz
X2xlbiA9IHNfbGVuIC0gbmV4dCB8IDA7Ci0gICAgICBvZmZzZXQgPSBvZmZzZXQgKyBuZXh0IHwg
MDsKLSAgICB9OwotICAgIHJldHVybiBzOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNhbWxfc3RyaW5n
X29mX2NoYXJfYXJyYXkoY2hhcnMpIHsKLSAgdmFyIGxlbiA9IGNoYXJzLmxlbmd0aDsKLSAgdmFy
IGJ5dGVzID0gbmV3IEFycmF5KGxlbik7Ci0gIGZvcih2YXIgaSA9IDAgLGlfZmluaXNoID0gbGVu
IC0gMSB8IDA7IGkgPD0gaV9maW5pc2g7ICsraSl7Ci0gICAgYnl0ZXNbaV0gPSBjaGFyc1tpXTsK
LSAgfQotICByZXR1cm4gYnl0ZXNfdG9fc3RyaW5nKGJ5dGVzKTsKLX0KLQotZnVuY3Rpb24gY2Ft
bF9pc19wcmludGFibGUoYykgewotICBpZiAoYyA+IDMxKSB7Ci0gICAgcmV0dXJuICsoYyA8IDEy
Nyk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgfQotfQotCi1m
dW5jdGlvbiBjYW1sX3N0cmluZ19nZXQxNihzLCBpKSB7Ci0gIHJldHVybiBzLmNoYXJDb2RlQXQo
aSkgKyAocy5jaGFyQ29kZUF0KGkgKyAxIHwgMCkgPDwgOCkgfCAwOwotfQotCi1mdW5jdGlvbiBj
YW1sX3N0cmluZ19nZXQzMihzLCBpKSB7Ci0gIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSArIChz
LmNoYXJDb2RlQXQoaSArIDEgfCAwKSA8PCA4KSB8IDApICsgKHMuY2hhckNvZGVBdChpICsgMiB8
IDApIDw8IDE2KSB8IDApICsgKHMuY2hhckNvZGVBdChpICsgMyB8IDApIDw8IDI0KSB8IDA7Ci19
Ci0KLWZ1bmN0aW9uIGdldChzLCBpKSB7Ci0gIGlmIChpIDwgMCB8fCBpID49IHMubGVuZ3RoKSB7
Ci0gICAgdGhyb3cgWwotICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRf
YXJndW1lbnQsCi0gICAgICAgICAgImluZGV4IG91dCBvZiBib3VuZHMiCi0gICAgICAgIF07Ci0g
IH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIHMuY2hhckNvZGVBdChpKTsKLSAgfQotfQotCi1leHBv
cnRzLmJ5dGVzX29mX3N0cmluZyAgICAgICAgICAgPSBieXRlc19vZl9zdHJpbmc7Ci1leHBvcnRz
LmJ5dGVzX3RvX3N0cmluZyAgICAgICAgICAgPSBieXRlc190b19zdHJpbmc7Ci1leHBvcnRzLmNh
bWxfaXNfcHJpbnRhYmxlICAgICAgICAgPSBjYW1sX2lzX3ByaW50YWJsZTsKLWV4cG9ydHMuY2Ft
bF9zdHJpbmdfb2ZfY2hhcl9hcnJheSA9IGNhbWxfc3RyaW5nX29mX2NoYXJfYXJyYXk7Ci1leHBv
cnRzLmNhbWxfc3RyaW5nX2dldCAgICAgICAgICAgPSBjYW1sX3N0cmluZ19nZXQ7Ci1leHBvcnRz
LmNhbWxfc3RyaW5nX2NvbXBhcmUgICAgICAgPSBjYW1sX3N0cmluZ19jb21wYXJlOwotZXhwb3J0
cy5jYW1sX2NyZWF0ZV9zdHJpbmcgICAgICAgID0gY2FtbF9jcmVhdGVfc3RyaW5nOwotZXhwb3J0
cy5jYW1sX2ZpbGxfc3RyaW5nICAgICAgICAgID0gY2FtbF9maWxsX3N0cmluZzsKLWV4cG9ydHMu
Y2FtbF9ibGl0X3N0cmluZyAgICAgICAgICA9IGNhbWxfYmxpdF9zdHJpbmc7Ci1leHBvcnRzLmNh
bWxfYmxpdF9ieXRlcyAgICAgICAgICAgPSBjYW1sX2JsaXRfYnl0ZXM7Ci1leHBvcnRzLmNhbWxf
c3RyaW5nX2dldDE2ICAgICAgICAgPSBjYW1sX3N0cmluZ19nZXQxNjsKLWV4cG9ydHMuY2FtbF9z
dHJpbmdfZ2V0MzIgICAgICAgICA9IGNhbWxfc3RyaW5nX2dldDMyOwotZXhwb3J0cy5qc19zdHJp
bmdfb2ZfY2hhciAgICAgICAgID0ganNfc3RyaW5nX29mX2NoYXI7Ci1leHBvcnRzLmdldCAgICAg
ICAgICAgICAgICAgICAgICAgPSBnZXQ7Ci0vKiBObyBzaWRlIGVmZmVjdCAqLwotLy8vLy8vLy8g
ZW5kIG9mIGNhbWxfc3RyaW5nLmpzIC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07
Ci0KLQotICBfcmVnaXN0cnlbJ2NhbWxfdXRpbHMnXSA9IGZ1bmN0aW9uKCkgewotICAgIGxldCBl
eHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBjYW1sX3V0aWxzLmpzIC8vLy8vLy8vCi0n
dXNlIHN0cmljdCc7Ci0KLQotdmFyIHJlcGVhdCA9ICggKFN0cmluZy5wcm90b3R5cGUucmVwZWF0
ICYmIGZ1bmN0aW9uIChjb3VudCxzZWxmKXtyZXR1cm4gc2VsZi5yZXBlYXQoY291bnQpfSkgfHwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rp
b24oY291bnQgLCBzZWxmKSB7Ci0gICAgICAgIGlmIChzZWxmLmxlbmd0aCA9PSAwIHx8IGNvdW50
ID09IDApIHsKLSAgICAgICAgICAgIHJldHVybiAnJzsKLSAgICAgICAgfQotICAgICAgICAvLyBF
bnN1cmluZyBjb3VudCBpcyBhIDMxLWJpdCBpbnRlZ2VyIGFsbG93cyB1cyB0byBoZWF2aWx5IG9w
dGltaXplIHRoZQotICAgICAgICAvLyBtYWluIHBhcnQuIEJ1dCBhbnl3YXksIG1vc3QgY3VycmVu
dCAoQXVndXN0IDIwMTQpIGJyb3dzZXJzIGNhbid0IGhhbmRsZQotICAgICAgICAvLyBzdHJpbmdz
IDEgPDwgMjggY2hhcnMgb3IgbG9uZ2VyLCBzbzoKLSAgICAgICAgaWYgKHNlbGYubGVuZ3RoICog
Y291bnQgPj0gMSA8PCAyOCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3Jl
cGVhdCBjb3VudCBtdXN0IG5vdCBvdmVyZmxvdyBtYXhpbXVtIHN0cmluZyBzaXplJyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgdmFyIHJwdCA9ICcnOwotICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAg
ICAgICBpZiAoKGNvdW50ICYgMSkgPT0gMSkgewotICAgICAgICAgICAgICAgIHJwdCArPSBzZWxm
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY291bnQgPj4+PSAxOwotICAgICAgICAgICAg
aWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHNlbGYgKz0gc2VsZjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcnB0
OwotICAgIH0KLSk7Ci0KLWV4cG9ydHMucmVwZWF0ID0gcmVwZWF0OwotLyogcmVwZWF0IE5vdCBh
IHB1cmUgbW9kdWxlICovCi0vLy8vLy8vLyBlbmQgb2YgY2FtbF91dGlscy5qcyAvLy8vLy8vLwot
ICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydjaGFyJ10gPSBmdW5j
dGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgY2hhci5q
cyAvLy8vLy8vLwotJ3VzZSBzdHJpY3QnOwotCi12YXIgQ2FtbF9zdHJpbmcgICAgICAgICAgICAg
PSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7Ci12YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMg
PSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7Ci0KLWZ1bmN0aW9uIGNocihu
KSB7Ci0gIGlmIChuIDwgMCB8fCBuID4gMjU1KSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgIkNoYXIu
Y2hyIgotICAgICAgICBdOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBuOwotICB9Ci19Ci0K
LWZ1bmN0aW9uIGVzY2FwZWQoYykgewotICB2YXIgZXhpdCA9IDA7Ci0gIGlmIChjID49IDQwKSB7
Ci0gICAgaWYgKGMgIT09IDkyKSB7Ci0gICAgICBleGl0ID0gYyA+PSAxMjcgPyAxIDogMjsKLSAg
ICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gIlxcXFwiOwotICAgIH0KLSAgfQotICBlbHNl
IGlmIChjID49IDMyKSB7Ci0gICAgaWYgKGMgPj0gMzkpIHsKLSAgICAgIHJldHVybiAiXFwnIjsK
LSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBleGl0ID0gMjsKLSAgICB9Ci0gIH0KLSAgZWxzZSBp
ZiAoYyA+PSAxNCkgewotICAgIGV4aXQgPSAxOwotICB9Ci0gIGVsc2UgewotICAgIHN3aXRjaCAo
YykgewotICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgcmV0dXJuICJcXGIiOwotICAgICAgY2Fz
ZSA5IDogCi0gICAgICAgICAgcmV0dXJuICJcXHQiOwotICAgICAgY2FzZSAxMCA6IAotICAgICAg
ICAgIHJldHVybiAiXFxuIjsKLSAgICAgIGNhc2UgMCA6IAotICAgICAgY2FzZSAxIDogCi0gICAg
ICBjYXNlIDIgOiAKLSAgICAgIGNhc2UgMyA6IAotICAgICAgY2FzZSA0IDogCi0gICAgICBjYXNl
IDUgOiAKLSAgICAgIGNhc2UgNiA6IAotICAgICAgY2FzZSA3IDogCi0gICAgICBjYXNlIDExIDog
Ci0gICAgICBjYXNlIDEyIDogCi0gICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIDEzIDogCi0gICAgICAgICAgcmV0dXJuICJcXHIiOwotICAgICAgCi0gICAg
fQotICB9Ci0gIHN3aXRjaCAoZXhpdCkgewotICAgIGNhc2UgMSA6IAotICAgICAgICB2YXIgcyA9
IG5ldyBBcnJheSg0KTsKLSAgICAgICAgc1swXSA9IC8qICJcXCIgKi85MjsKLSAgICAgICAgc1sx
XSA9IDQ4ICsgKGMgLyAxMDAgfCAwKSB8IDA7Ci0gICAgICAgIHNbMl0gPSA0OCArIChjIC8gMTAg
fCAwKSAlIDEwIHwgMDsKLSAgICAgICAgc1szXSA9IDQ4ICsgYyAlIDEwIHwgMDsKLSAgICAgICAg
cmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzKTsKLSAgICBjYXNlIDIgOiAKLSAg
ICAgICAgdmFyIHMkMSA9IG5ldyBBcnJheSgxKTsKLSAgICAgICAgcyQxWzBdID0gYzsKLSAgICAg
ICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzJDEpOwotICAgIAotICB9Ci19
Ci0KLWZ1bmN0aW9uIGxvd2VyY2FzZShjKSB7Ci0gIGlmIChjID49IC8qICJBIiAqLzY1ICYmIGMg
PD0gLyogIloiICovOTAgfHwgYyA+PSAvKiAiXDE5MiIgKi8xOTIgJiYgYyA8PSAvKiAiXDIxNCIg
Ki8yMTQgfHwgYyA+PSAvKiAiXDIxNiIgKi8yMTYgJiYgYyA8PSAvKiAiXDIyMiIgKi8yMjIpIHsK
LSAgICByZXR1cm4gYyArIDMyIHwgMDsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gYzsKLSAg
fQotfQotCi1mdW5jdGlvbiB1cHBlcmNhc2UoYykgewotICBpZiAoYyA+PSAvKiAiYSIgKi85NyAm
JiBjIDw9IC8qICJ6IiAqLzEyMiB8fCBjID49IC8qICJcMjI0IiAqLzIyNCAmJiBjIDw9IC8qICJc
MjQ2IiAqLzI0NiB8fCBjID49IC8qICJcMjQ4IiAqLzI0OCAmJiBjIDw9IC8qICJcMjU0IiAqLzI1
NCkgewotICAgIHJldHVybiBjIC0gMzIgfCAwOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBj
OwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbXBhcmUoYzEsIGMyKSB7Ci0gIHJldHVybiBjMSAtIGMy
IHwgMDsKLX0KLQotZXhwb3J0cy5jaHIgICAgICAgPSBjaHI7Ci1leHBvcnRzLmVzY2FwZWQgICA9
IGVzY2FwZWQ7Ci1leHBvcnRzLmxvd2VyY2FzZSA9IGxvd2VyY2FzZTsKLWV4cG9ydHMudXBwZXJj
YXNlID0gdXBwZXJjYXNlOwotZXhwb3J0cy5jb21wYXJlICAgPSBjb21wYXJlOwotLyogTm8gc2lk
ZSBlZmZlY3QgKi8KLS8vLy8vLy8vIGVuZCBvZiBjaGFyLmpzIC8vLy8vLy8vCi0gICAgcmV0dXJu
IGV4cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ2N1cnJ5J10gPSBmdW5jdGlvbigpIHsK
LSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgY3VycnkuanMgLy8vLy8v
Ly8KLSd1c2Ugc3RyaWN0JzsKLQotdmFyIENhbWxfb28gICAgPSByZXF1aXJlKCIuL2NhbWxfb28i
KTsKLXZhciBDYW1sX2FycmF5ID0gcmVxdWlyZSgiLi9jYW1sX2FycmF5Iik7Ci0KLWZ1bmN0aW9u
IGFwcChfZiwgX2FyZ3MpIHsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBhcmdzID0gX2FyZ3M7
Ci0gICAgdmFyIGYgPSBfZjsKLSAgICB2YXIgYXJpdHkgPSBmLmxlbmd0aDsKLSAgICB2YXIgYXJp
dHkkMSA9IGFyaXR5ID8gYXJpdHkgOiAxOwotICAgIHZhciBsZW4gPSBhcmdzLmxlbmd0aDsKLSAg
ICB2YXIgZCA9IGFyaXR5JDEgLSBsZW4gfCAwOwotICAgIGlmIChkKSB7Ci0gICAgICBpZiAoZCA8
IDApIHsKLSAgICAgICAgX2FyZ3MgPSBDYW1sX2FycmF5LmNhbWxfYXJyYXlfc3ViKGFyZ3MsIGFy
aXR5JDEsIC1kIHwgMCk7Ci0gICAgICAgIF9mID0gZi5hcHBseShudWxsLCBDYW1sX2FycmF5LmNh
bWxfYXJyYXlfc3ViKGFyZ3MsIDAsIGFyaXR5JDEpKTsKLSAgICAgICAgY29udGludWUgOwotICAg
ICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4gKGZ1bmN0aW9uKGYs
YXJncyl7Ci0gICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkgewotICAgICAgICAgIHJldHVybiBh
cHAoZiwgYXJncy5jb25jYXQoLyogYXJyYXkgKi9beF0pKTsKLSAgICAgICAgfQotICAgICAgICB9
KGYsYXJncykpOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBmLmFw
cGx5KG51bGwsIGFyZ3MpOwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24ganMobGFiZWwsIGNh
Y2hlaWQsIG9iaiwgYXJncykgewotICB2YXIgbWV0aCA9IENhbWxfb28uY2FtbF9nZXRfcHVibGlj
X21ldGhvZChvYmosIGxhYmVsLCBjYWNoZWlkKTsKLSAgcmV0dXJuIGFwcChtZXRoLCBhcmdzKTsK
LX0KLQotZnVuY3Rpb24gY3VycnlfMShvLCBhMCwgYXJpdHkpIHsKLSAgaWYgKGFyaXR5ID4gNyB8
fCBhcml0eSA8IDApIHsKLSAgICByZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovW2EwXSk7Ci0gIH0K
LSAgZWxzZSB7Ci0gICAgc3dpdGNoIChhcml0eSkgewotICAgICAgY2FzZSAwIDogCi0gICAgICBj
YXNlIDEgOiAKLSAgICAgICAgICByZXR1cm4gbyhhMCk7Ci0gICAgICBjYXNlIDIgOiAKLSAgICAg
ICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgICAgICAgICByZXR1cm4gbyhhMCwg
cGFyYW0pOwotICAgICAgICAgIH07Ci0gICAgICBjYXNlIDMgOiAKLSAgICAgICAgICByZXR1cm4g
ZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxKSB7Ci0gICAgICAgICAgICByZXR1cm4gbyhhMCwgcGFy
YW0sIHBhcmFtJDEpOwotICAgICAgICAgIH07Ci0gICAgICBjYXNlIDQgOiAKLSAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7Ci0gICAgICAgICAgICBy
ZXR1cm4gbyhhMCwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOwotICAgICAgICAgIH07Ci0gICAg
ICBjYXNlIDUgOiAKLSAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBw
YXJhbSQyLCBwYXJhbSQzKSB7Ci0gICAgICAgICAgICByZXR1cm4gbyhhMCwgcGFyYW0sIHBhcmFt
JDEsIHBhcmFtJDIsIHBhcmFtJDMpOwotICAgICAgICAgIH07Ci0gICAgICBjYXNlIDYgOiAKLSAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJhbSQz
LCBwYXJhbSQ0KSB7Ci0gICAgICAgICAgICByZXR1cm4gbyhhMCwgcGFyYW0sIHBhcmFtJDEsIHBh
cmFtJDIsIHBhcmFtJDMsIHBhcmFtJDQpOwotICAgICAgICAgIH07Ci0gICAgICBjYXNlIDcgOiAK
LSAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyLCBwYXJh
bSQzLCBwYXJhbSQ0LCBwYXJhbSQ1KSB7Ci0gICAgICAgICAgICByZXR1cm4gbyhhMCwgcGFyYW0s
IHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMsIHBhcmFtJDQsIHBhcmFtJDUpOwotICAgICAgICAg
IH07Ci0gICAgICAKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gXzEobywgYTApIHsKLSAgdmFy
IGFyaXR5ID0gby5sZW5ndGg7Ci0gIGlmIChhcml0eSA9PT0gMSkgewotICAgIHJldHVybiBvKGEw
KTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gY3VycnlfMShvLCBhMCwgYXJpdHkpOwotICB9
Ci19Ci0KLWZ1bmN0aW9uIGpzMShsYWJlbCwgY2FjaGVpZCwgYTApIHsKLSAgcmV0dXJuIF8xKENh
bWxfb28uY2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwgbGFiZWwsIGNhY2hlaWQpLCBhMCk7Ci19
Ci0KLWZ1bmN0aW9uIF9fMShvKSB7Ci0gIHZhciBhcml0eSA9IG8ubGVuZ3RoOwotICBpZiAoYXJp
dHkgPT09IDEpIHsKLSAgICByZXR1cm4gbzsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gZnVu
Y3Rpb24gKGEwKSB7Ci0gICAgICByZXR1cm4gXzEobywgYTApOwotICAgIH07Ci0gIH0KLX0KLQot
ZnVuY3Rpb24gY3VycnlfMihvLCBhMCwgYTEsIGFyaXR5KSB7Ci0gIGlmIChhcml0eSA+IDcgfHwg
YXJpdHkgPCAwKSB7Ci0gICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKLSAgICAgICAgICAg
ICAgICBhMCwKLSAgICAgICAgICAgICAgICBhMQotICAgICAgICAgICAgICBdKTsKLSAgfQotICBl
bHNlIHsKLSAgICBzd2l0Y2ggKGFyaXR5KSB7Ci0gICAgICBjYXNlIDAgOiAKLSAgICAgIGNhc2Ug
MSA6IAotICAgICAgICAgIHJldHVybiBhcHAobyhhMCksIC8qIGFycmF5ICovW2ExXSk7Ci0gICAg
ICBjYXNlIDIgOiAKLSAgICAgICAgICByZXR1cm4gbyhhMCwgYTEpOwotICAgICAgY2FzZSAzIDog
Ci0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgcmV0dXJu
IG8oYTAsIGExLCBwYXJhbSk7Ci0gICAgICAgICAgfTsKLSAgICAgIGNhc2UgNCA6IAotICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEpIHsKLSAgICAgICAgICAgIHJldHVy
biBvKGEwLCBhMSwgcGFyYW0sIHBhcmFtJDEpOwotICAgICAgICAgIH07Ci0gICAgICBjYXNlIDUg
OiAKLSAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKSB7
Ci0gICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsK
LSAgICAgICAgICB9OwotICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9u
IChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMykgewotICAgICAgICAgICAgcmV0dXJu
IG8oYTAsIGExLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMyk7Ci0gICAgICAgICAg
fTsKLSAgICAgIGNhc2UgNyA6IAotICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBh
cmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMsIHBhcmFtJDQpIHsKLSAgICAgICAgICAgIHJldHVybiBv
KGEwLCBhMSwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMsIHBhcmFtJDQpOwotICAg
ICAgICAgIH07Ci0gICAgICAKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gXzIobywgYTAsIGEx
KSB7Ci0gIHZhciBhcml0eSA9IG8ubGVuZ3RoOwotICBpZiAoYXJpdHkgPT09IDIpIHsKLSAgICBy
ZXR1cm4gbyhhMCwgYTEpOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBjdXJyeV8yKG8sIGEw
LCBhMSwgYXJpdHkpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGpzMihsYWJlbCwgY2FjaGVpZCwgYTAs
IGExKSB7Ci0gIHJldHVybiBfMihDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxh
YmVsLCBjYWNoZWlkKSwgYTAsIGExKTsKLX0KLQotZnVuY3Rpb24gX18yKG8pIHsKLSAgdmFyIGFy
aXR5ID0gby5sZW5ndGg7Ci0gIGlmIChhcml0eSA9PT0gMikgewotICAgIHJldHVybiBvOwotICB9
Ci0gIGVsc2UgewotICAgIHJldHVybiBmdW5jdGlvbiAoYTAsIGExKSB7Ci0gICAgICByZXR1cm4g
XzIobywgYTAsIGExKTsKLSAgICB9OwotICB9Ci19Ci0KLWZ1bmN0aW9uIGN1cnJ5XzMobywgYTAs
IGExLCBhMiwgYXJpdHkpIHsKLSAgaWYgKGFyaXR5ID4gNyB8fCBhcml0eSA8IDApIHsKLSAgICBy
ZXR1cm4gYXBwKG8sIC8qIGFycmF5ICovWwotICAgICAgICAgICAgICAgIGEwLAotICAgICAgICAg
ICAgICAgIGExLAotICAgICAgICAgICAgICAgIGEyCi0gICAgICAgICAgICAgIF0pOwotICB9Ci0g
IGVsc2UgewotICAgIHN3aXRjaCAoYXJpdHkpIHsKLSAgICAgIGNhc2UgMCA6IAotICAgICAgY2Fz
ZSAxIDogCi0gICAgICAgICAgcmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCi0gICAgICAg
ICAgICAgICAgICAgICAgYTEsCi0gICAgICAgICAgICAgICAgICAgICAgYTIKLSAgICAgICAgICAg
ICAgICAgICAgXSk7Ci0gICAgICBjYXNlIDIgOiAKLSAgICAgICAgICByZXR1cm4gYXBwKG8oYTAs
IGExKSwgLyogYXJyYXkgKi9bYTJdKTsKLSAgICAgIGNhc2UgMyA6IAotICAgICAgICAgIHJldHVy
biBvKGEwLCBhMSwgYTIpOwotICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgcmV0dXJuIGZ1bmN0
aW9uIChwYXJhbSkgewotICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgcGFyYW0pOwot
ICAgICAgICAgIH07Ci0gICAgICBjYXNlIDUgOiAKLSAgICAgICAgICByZXR1cm4gZnVuY3Rpb24g
KHBhcmFtLCBwYXJhbSQxKSB7Ci0gICAgICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBwYXJh
bSwgcGFyYW0kMSk7Ci0gICAgICAgICAgfTsKLSAgICAgIGNhc2UgNiA6IAotICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpIHsKLSAgICAgICAgICAgIHJl
dHVybiBvKGEwLCBhMSwgYTIsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsKLSAgICAgICAgICB9
OwotICAgICAgY2FzZSA3IDogCi0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFy
YW0kMSwgcGFyYW0kMiwgcGFyYW0kMykgewotICAgICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBh
MiwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIsIHBhcmFtJDMpOwotICAgICAgICAgIH07Ci0gICAg
ICAKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gXzMobywgYTAsIGExLCBhMikgewotICB2YXIg
YXJpdHkgPSBvLmxlbmd0aDsKLSAgaWYgKGFyaXR5ID09PSAzKSB7Ci0gICAgcmV0dXJuIG8oYTAs
IGExLCBhMik7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIGN1cnJ5XzMobywgYTAsIGExLCBh
MiwgYXJpdHkpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGpzMyhsYWJlbCwgY2FjaGVpZCwgYTAsIGEx
LCBhMikgewotICByZXR1cm4gXzMoQ2FtbF9vby5jYW1sX2dldF9wdWJsaWNfbWV0aG9kKGEwLCBs
YWJlbCwgY2FjaGVpZCksIGEwLCBhMSwgYTIpOwotfQotCi1mdW5jdGlvbiBfXzMobykgewotICB2
YXIgYXJpdHkgPSBvLmxlbmd0aDsKLSAgaWYgKGFyaXR5ID09PSAzKSB7Ci0gICAgcmV0dXJuIG87
Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyKSB7Ci0gICAg
ICByZXR1cm4gXzMobywgYTAsIGExLCBhMik7Ci0gICAgfTsKLSAgfQotfQotCi1mdW5jdGlvbiBj
dXJyeV80KG8sIGEwLCBhMSwgYTIsIGEzLCBhcml0eSkgewotICBpZiAoYXJpdHkgPiA3IHx8IGFy
aXR5IDwgMCkgewotICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCi0gICAgICAgICAgICAg
ICAgYTAsCi0gICAgICAgICAgICAgICAgYTEsCi0gICAgICAgICAgICAgICAgYTIsCi0gICAgICAg
ICAgICAgICAgYTMKLSAgICAgICAgICAgICAgXSk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgc3dpdGNo
IChhcml0eSkgewotICAgICAgY2FzZSAwIDogCi0gICAgICBjYXNlIDEgOiAKLSAgICAgICAgICBy
ZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1sKLSAgICAgICAgICAgICAgICAgICAgICBhMSwK
LSAgICAgICAgICAgICAgICAgICAgICBhMiwKLSAgICAgICAgICAgICAgICAgICAgICBhMwotICAg
ICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2UgMiA6IAotICAgICAgICAgIHJldHVybiBh
cHAobyhhMCwgYTEpLCAvKiBhcnJheSAqL1sKLSAgICAgICAgICAgICAgICAgICAgICBhMiwKLSAg
ICAgICAgICAgICAgICAgICAgICBhMwotICAgICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNh
c2UgMyA6IAotICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyKSwgLyogYXJyYXkgKi9b
YTNdKTsKLSAgICAgIGNhc2UgNCA6IAotICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEz
KTsKLSAgICAgIGNhc2UgNSA6IAotICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0pIHsK
LSAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBwYXJhbSk7Ci0gICAgICAgICAg
fTsKLSAgICAgIGNhc2UgNiA6IAotICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAocGFyYW0sIHBh
cmFtJDEpIHsKLSAgICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBwYXJhbSwgcGFy
YW0kMSk7Ci0gICAgICAgICAgfTsKLSAgICAgIGNhc2UgNyA6IAotICAgICAgICAgIHJldHVybiBm
dW5jdGlvbiAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpIHsKLSAgICAgICAgICAgIHJldHVybiBv
KGEwLCBhMSwgYTIsIGEzLCBwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMik7Ci0gICAgICAgICAgfTsK
LSAgICAgIAotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBfNChvLCBhMCwgYTEsIGEyLCBhMykg
ewotICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKLSAgaWYgKGFyaXR5ID09PSA0KSB7Ci0gICAgcmV0
dXJuIG8oYTAsIGExLCBhMiwgYTMpOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBjdXJyeV80
KG8sIGEwLCBhMSwgYTIsIGEzLCBhcml0eSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24ganM0KGxhYmVs
LCBjYWNoZWlkLCBhMCwgYTEsIGEyLCBhMykgewotICByZXR1cm4gXzQoQ2FtbF9vby5jYW1sX2dl
dF9wdWJsaWNfbWV0aG9kKGEwLCBsYWJlbCwgY2FjaGVpZCksIGEwLCBhMSwgYTIsIGEzKTsKLX0K
LQotZnVuY3Rpb24gX180KG8pIHsKLSAgdmFyIGFyaXR5ID0gby5sZW5ndGg7Ci0gIGlmIChhcml0
eSA9PT0gNCkgewotICAgIHJldHVybiBvOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBmdW5j
dGlvbiAoYTAsIGExLCBhMiwgYTMpIHsKLSAgICAgIHJldHVybiBfNChvLCBhMCwgYTEsIGEyLCBh
Myk7Ci0gICAgfTsKLSAgfQotfQotCi1mdW5jdGlvbiBjdXJyeV81KG8sIGEwLCBhMSwgYTIsIGEz
LCBhNCwgYXJpdHkpIHsKLSAgaWYgKGFyaXR5ID4gNyB8fCBhcml0eSA8IDApIHsKLSAgICByZXR1
cm4gYXBwKG8sIC8qIGFycmF5ICovWwotICAgICAgICAgICAgICAgIGEwLAotICAgICAgICAgICAg
ICAgIGExLAotICAgICAgICAgICAgICAgIGEyLAotICAgICAgICAgICAgICAgIGEzLAotICAgICAg
ICAgICAgICAgIGE0Ci0gICAgICAgICAgICAgIF0pOwotICB9Ci0gIGVsc2UgewotICAgIHN3aXRj
aCAoYXJpdHkpIHsKLSAgICAgIGNhc2UgMCA6IAotICAgICAgY2FzZSAxIDogCi0gICAgICAgICAg
cmV0dXJuIGFwcChvKGEwKSwgLyogYXJyYXkgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgYTEs
Ci0gICAgICAgICAgICAgICAgICAgICAgYTIsCi0gICAgICAgICAgICAgICAgICAgICAgYTMsCi0g
ICAgICAgICAgICAgICAgICAgICAgYTQKLSAgICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICBj
YXNlIDIgOiAKLSAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExKSwgLyogYXJyYXkgKi9bCi0g
ICAgICAgICAgICAgICAgICAgICAgYTIsCi0gICAgICAgICAgICAgICAgICAgICAgYTMsCi0gICAg
ICAgICAgICAgICAgICAgICAgYTQKLSAgICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICBjYXNl
IDMgOiAKLSAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiksIC8qIGFycmF5ICovWwot
ICAgICAgICAgICAgICAgICAgICAgIGEzLAotICAgICAgICAgICAgICAgICAgICAgIGE0Ci0gICAg
ICAgICAgICAgICAgICAgIF0pOwotICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgcmV0dXJuIGFw
cChvKGEwLCBhMSwgYTIsIGEzKSwgLyogYXJyYXkgKi9bYTRdKTsKLSAgICAgIGNhc2UgNSA6IAot
ICAgICAgICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCk7Ci0gICAgICBjYXNlIDYgOiAK
LSAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgICAgICAgICByZXR1cm4g
byhhMCwgYTEsIGEyLCBhMywgYTQsIHBhcmFtKTsKLSAgICAgICAgICB9OwotICAgICAgY2FzZSA3
IDogCi0gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSkgewotICAgICAg
ICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBwYXJhbSwgcGFyYW0kMSk7Ci0gICAg
ICAgICAgfTsKLSAgICAgIAotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBfNShvLCBhMCwgYTEs
IGEyLCBhMywgYTQpIHsKLSAgdmFyIGFyaXR5ID0gby5sZW5ndGg7Ci0gIGlmIChhcml0eSA9PT0g
NSkgewotICAgIHJldHVybiBvKGEwLCBhMSwgYTIsIGEzLCBhNCk7Ci0gIH0KLSAgZWxzZSB7Ci0g
ICAgcmV0dXJuIGN1cnJ5XzUobywgYTAsIGExLCBhMiwgYTMsIGE0LCBhcml0eSk7Ci0gIH0KLX0K
LQotZnVuY3Rpb24ganM1KGxhYmVsLCBjYWNoZWlkLCBhMCwgYTEsIGEyLCBhMywgYTQpIHsKLSAg
cmV0dXJuIF81KENhbWxfb28uY2FtbF9nZXRfcHVibGljX21ldGhvZChhMCwgbGFiZWwsIGNhY2hl
aWQpLCBhMCwgYTEsIGEyLCBhMywgYTQpOwotfQotCi1mdW5jdGlvbiBfXzUobykgewotICB2YXIg
YXJpdHkgPSBvLmxlbmd0aDsKLSAgaWYgKGFyaXR5ID09PSA1KSB7Ci0gICAgcmV0dXJuIG87Ci0g
IH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMywgYTQpIHsK
LSAgICAgIHJldHVybiBfNShvLCBhMCwgYTEsIGEyLCBhMywgYTQpOwotICAgIH07Ci0gIH0KLX0K
LQotZnVuY3Rpb24gY3VycnlfNihvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhcml0eSkgewot
ICBpZiAoYXJpdHkgPiA3IHx8IGFyaXR5IDwgMCkgewotICAgIHJldHVybiBhcHAobywgLyogYXJy
YXkgKi9bCi0gICAgICAgICAgICAgICAgYTAsCi0gICAgICAgICAgICAgICAgYTEsCi0gICAgICAg
ICAgICAgICAgYTIsCi0gICAgICAgICAgICAgICAgYTMsCi0gICAgICAgICAgICAgICAgYTQsCi0g
ICAgICAgICAgICAgICAgYTUKLSAgICAgICAgICAgICAgXSk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAg
c3dpdGNoIChhcml0eSkgewotICAgICAgY2FzZSAwIDogCi0gICAgICBjYXNlIDEgOiAKLSAgICAg
ICAgICByZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1sKLSAgICAgICAgICAgICAgICAgICAg
ICBhMSwKLSAgICAgICAgICAgICAgICAgICAgICBhMiwKLSAgICAgICAgICAgICAgICAgICAgICBh
MywKLSAgICAgICAgICAgICAgICAgICAgICBhNCwKLSAgICAgICAgICAgICAgICAgICAgICBhNQot
ICAgICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2UgMiA6IAotICAgICAgICAgIHJldHVy
biBhcHAobyhhMCwgYTEpLCAvKiBhcnJheSAqL1sKLSAgICAgICAgICAgICAgICAgICAgICBhMiwK
LSAgICAgICAgICAgICAgICAgICAgICBhMywKLSAgICAgICAgICAgICAgICAgICAgICBhNCwKLSAg
ICAgICAgICAgICAgICAgICAgICBhNQotICAgICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNh
c2UgMyA6IAotICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyKSwgLyogYXJyYXkgKi9b
Ci0gICAgICAgICAgICAgICAgICAgICAgYTMsCi0gICAgICAgICAgICAgICAgICAgICAgYTQsCi0g
ICAgICAgICAgICAgICAgICAgICAgYTUKLSAgICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICBj
YXNlIDQgOiAKLSAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMpLCAvKiBhcnJh
eSAqL1sKLSAgICAgICAgICAgICAgICAgICAgICBhNCwKLSAgICAgICAgICAgICAgICAgICAgICBh
NQotICAgICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2UgNSA6IAotICAgICAgICAgIHJl
dHVybiBhcHAobyhhMCwgYTEsIGEyLCBhMywgYTQpLCAvKiBhcnJheSAqL1thNV0pOwotICAgICAg
Y2FzZSA2IDogCi0gICAgICAgICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSk7Ci0g
ICAgICBjYXNlIDcgOiAKLSAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAg
ICAgICAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBwYXJhbSk7Ci0gICAgICAg
ICAgfTsKLSAgICAgIAotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBfNihvLCBhMCwgYTEsIGEy
LCBhMywgYTQsIGE1KSB7Ci0gIHZhciBhcml0eSA9IG8ubGVuZ3RoOwotICBpZiAoYXJpdHkgPT09
IDYpIHsKLSAgICByZXR1cm4gbyhhMCwgYTEsIGEyLCBhMywgYTQsIGE1KTsKLSAgfQotICBlbHNl
IHsKLSAgICByZXR1cm4gY3VycnlfNihvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhcml0eSk7
Ci0gIH0KLX0KLQotZnVuY3Rpb24ganM2KGxhYmVsLCBjYWNoZWlkLCBhMCwgYTEsIGEyLCBhMywg
YTQsIGE1KSB7Ci0gIHJldHVybiBfNihDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAs
IGxhYmVsLCBjYWNoZWlkKSwgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSk7Ci19Ci0KLWZ1bmN0aW9u
IF9fNihvKSB7Ci0gIHZhciBhcml0eSA9IG8ubGVuZ3RoOwotICBpZiAoYXJpdHkgPT09IDYpIHsK
LSAgICByZXR1cm4gbzsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGEwLCBh
MSwgYTIsIGEzLCBhNCwgYTUpIHsKLSAgICAgIHJldHVybiBfNihvLCBhMCwgYTEsIGEyLCBhMywg
YTQsIGE1KTsKLSAgICB9OwotICB9Ci19Ci0KLWZ1bmN0aW9uIGN1cnJ5XzcobywgYTAsIGExLCBh
MiwgYTMsIGE0LCBhNSwgYTYsIGFyaXR5KSB7Ci0gIGlmIChhcml0eSA+IDcgfHwgYXJpdHkgPCAw
KSB7Ci0gICAgcmV0dXJuIGFwcChvLCAvKiBhcnJheSAqL1sKLSAgICAgICAgICAgICAgICBhMCwK
LSAgICAgICAgICAgICAgICBhMSwKLSAgICAgICAgICAgICAgICBhMiwKLSAgICAgICAgICAgICAg
ICBhMywKLSAgICAgICAgICAgICAgICBhNCwKLSAgICAgICAgICAgICAgICBhNSwKLSAgICAgICAg
ICAgICAgICBhNgotICAgICAgICAgICAgICBdKTsKLSAgfQotICBlbHNlIHsKLSAgICBzd2l0Y2gg
KGFyaXR5KSB7Ci0gICAgICBjYXNlIDAgOiAKLSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIHJl
dHVybiBhcHAobyhhMCksIC8qIGFycmF5ICovWwotICAgICAgICAgICAgICAgICAgICAgIGExLAot
ICAgICAgICAgICAgICAgICAgICAgIGEyLAotICAgICAgICAgICAgICAgICAgICAgIGEzLAotICAg
ICAgICAgICAgICAgICAgICAgIGE0LAotICAgICAgICAgICAgICAgICAgICAgIGE1LAotICAgICAg
ICAgICAgICAgICAgICAgIGE2Ci0gICAgICAgICAgICAgICAgICAgIF0pOwotICAgICAgY2FzZSAy
IDogCi0gICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSksIC8qIGFycmF5ICovWwotICAgICAg
ICAgICAgICAgICAgICAgIGEyLAotICAgICAgICAgICAgICAgICAgICAgIGEzLAotICAgICAgICAg
ICAgICAgICAgICAgIGE0LAotICAgICAgICAgICAgICAgICAgICAgIGE1LAotICAgICAgICAgICAg
ICAgICAgICAgIGE2Ci0gICAgICAgICAgICAgICAgICAgIF0pOwotICAgICAgY2FzZSAzIDogCi0g
ICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIpLCAvKiBhcnJheSAqL1sKLSAgICAgICAg
ICAgICAgICAgICAgICBhMywKLSAgICAgICAgICAgICAgICAgICAgICBhNCwKLSAgICAgICAgICAg
ICAgICAgICAgICBhNSwKLSAgICAgICAgICAgICAgICAgICAgICBhNgotICAgICAgICAgICAgICAg
ICAgICBdKTsKLSAgICAgIGNhc2UgNCA6IAotICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEs
IGEyLCBhMyksIC8qIGFycmF5ICovWwotICAgICAgICAgICAgICAgICAgICAgIGE0LAotICAgICAg
ICAgICAgICAgICAgICAgIGE1LAotICAgICAgICAgICAgICAgICAgICAgIGE2Ci0gICAgICAgICAg
ICAgICAgICAgIF0pOwotICAgICAgY2FzZSA1IDogCi0gICAgICAgICAgcmV0dXJuIGFwcChvKGEw
LCBhMSwgYTIsIGEzLCBhNCksIC8qIGFycmF5ICovWwotICAgICAgICAgICAgICAgICAgICAgIGE1
LAotICAgICAgICAgICAgICAgICAgICAgIGE2Ci0gICAgICAgICAgICAgICAgICAgIF0pOwotICAg
ICAgY2FzZSA2IDogCi0gICAgICAgICAgcmV0dXJuIGFwcChvKGEwLCBhMSwgYTIsIGEzLCBhNCwg
YTUpLCAvKiBhcnJheSAqL1thNl0pOwotICAgICAgY2FzZSA3IDogCi0gICAgICAgICAgcmV0dXJu
IG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotICAgICAgCi0gICAgfQotICB9Ci19Ci0K
LWZ1bmN0aW9uIF83KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSB7Ci0gIHZhciBhcml0
eSA9IG8ubGVuZ3RoOwotICBpZiAoYXJpdHkgPT09IDcpIHsKLSAgICByZXR1cm4gbyhhMCwgYTEs
IGEyLCBhMywgYTQsIGE1LCBhNik7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIGN1cnJ5Xzco
bywgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGFyaXR5KTsKLSAgfQotfQotCi1mdW5jdGlv
biBqczcobGFiZWwsIGNhY2hlaWQsIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2KSB7Ci0gIHJl
dHVybiBfNyhDYW1sX29vLmNhbWxfZ2V0X3B1YmxpY19tZXRob2QoYTAsIGxhYmVsLCBjYWNoZWlk
KSwgYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpOwotfQotCi1mdW5jdGlvbiBfXzcobykgewot
ICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKLSAgaWYgKGFyaXR5ID09PSA3KSB7Ci0gICAgcmV0dXJu
IG87Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChhMCwgYTEsIGEyLCBhMywg
YTQsIGE1LCBhNikgewotICAgICAgcmV0dXJuIF83KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUs
IGE2KTsKLSAgICB9OwotICB9Ci19Ci0KLWZ1bmN0aW9uIGN1cnJ5XzgobywgYTAsIGExLCBhMiwg
YTMsIGE0LCBhNSwgYTYsIGE3LCBhcml0eSkgewotICBpZiAoYXJpdHkgPiA3IHx8IGFyaXR5IDwg
MCkgewotICAgIHJldHVybiBhcHAobywgLyogYXJyYXkgKi9bCi0gICAgICAgICAgICAgICAgYTAs
Ci0gICAgICAgICAgICAgICAgYTEsCi0gICAgICAgICAgICAgICAgYTIsCi0gICAgICAgICAgICAg
ICAgYTMsCi0gICAgICAgICAgICAgICAgYTQsCi0gICAgICAgICAgICAgICAgYTUsCi0gICAgICAg
ICAgICAgICAgYTYsCi0gICAgICAgICAgICAgICAgYTcKLSAgICAgICAgICAgICAgXSk7Ci0gIH0K
LSAgZWxzZSB7Ci0gICAgc3dpdGNoIChhcml0eSkgewotICAgICAgY2FzZSAwIDogCi0gICAgICBj
YXNlIDEgOiAKLSAgICAgICAgICByZXR1cm4gYXBwKG8oYTApLCAvKiBhcnJheSAqL1sKLSAgICAg
ICAgICAgICAgICAgICAgICBhMSwKLSAgICAgICAgICAgICAgICAgICAgICBhMiwKLSAgICAgICAg
ICAgICAgICAgICAgICBhMywKLSAgICAgICAgICAgICAgICAgICAgICBhNCwKLSAgICAgICAgICAg
ICAgICAgICAgICBhNSwKLSAgICAgICAgICAgICAgICAgICAgICBhNiwKLSAgICAgICAgICAgICAg
ICAgICAgICBhNwotICAgICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2UgMiA6IAotICAg
ICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEpLCAvKiBhcnJheSAqL1sKLSAgICAgICAgICAgICAg
ICAgICAgICBhMiwKLSAgICAgICAgICAgICAgICAgICAgICBhMywKLSAgICAgICAgICAgICAgICAg
ICAgICBhNCwKLSAgICAgICAgICAgICAgICAgICAgICBhNSwKLSAgICAgICAgICAgICAgICAgICAg
ICBhNiwKLSAgICAgICAgICAgICAgICAgICAgICBhNwotICAgICAgICAgICAgICAgICAgICBdKTsK
LSAgICAgIGNhc2UgMyA6IAotICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyKSwgLyog
YXJyYXkgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgYTMsCi0gICAgICAgICAgICAgICAgICAg
ICAgYTQsCi0gICAgICAgICAgICAgICAgICAgICAgYTUsCi0gICAgICAgICAgICAgICAgICAgICAg
YTYsCi0gICAgICAgICAgICAgICAgICAgICAgYTcKLSAgICAgICAgICAgICAgICAgICAgXSk7Ci0g
ICAgICBjYXNlIDQgOiAKLSAgICAgICAgICByZXR1cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMpLCAv
KiBhcnJheSAqL1sKLSAgICAgICAgICAgICAgICAgICAgICBhNCwKLSAgICAgICAgICAgICAgICAg
ICAgICBhNSwKLSAgICAgICAgICAgICAgICAgICAgICBhNiwKLSAgICAgICAgICAgICAgICAgICAg
ICBhNwotICAgICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2UgNSA6IAotICAgICAgICAg
IHJldHVybiBhcHAobyhhMCwgYTEsIGEyLCBhMywgYTQpLCAvKiBhcnJheSAqL1sKLSAgICAgICAg
ICAgICAgICAgICAgICBhNSwKLSAgICAgICAgICAgICAgICAgICAgICBhNiwKLSAgICAgICAgICAg
ICAgICAgICAgICBhNwotICAgICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2UgNiA6IAot
ICAgICAgICAgIHJldHVybiBhcHAobyhhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSwgLyogYXJyYXkg
Ki9bCi0gICAgICAgICAgICAgICAgICAgICAgYTYsCi0gICAgICAgICAgICAgICAgICAgICAgYTcK
LSAgICAgICAgICAgICAgICAgICAgXSk7Ci0gICAgICBjYXNlIDcgOiAKLSAgICAgICAgICByZXR1
cm4gYXBwKG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpLCAvKiBhcnJheSAqL1thN10pOwot
ICAgICAgCi0gICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9uIF84KG8sIGEwLCBhMSwgYTIsIGEzLCBh
NCwgYTUsIGE2LCBhNykgewotICB2YXIgYXJpdHkgPSBvLmxlbmd0aDsKLSAgaWYgKGFyaXR5ID09
PSA4KSB7Ci0gICAgcmV0dXJuIG8oYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3KTsKLSAg
fQotICBlbHNlIHsKLSAgICByZXR1cm4gY3VycnlfOChvLCBhMCwgYTEsIGEyLCBhMywgYTQsIGE1
LCBhNiwgYTcsIGFyaXR5KTsKLSAgfQotfQotCi1mdW5jdGlvbiBqczgobGFiZWwsIGNhY2hlaWQs
IGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNykgewotICByZXR1cm4gXzgoQ2FtbF9vby5j
YW1sX2dldF9wdWJsaWNfbWV0aG9kKGEwLCBsYWJlbCwgY2FjaGVpZCksIGEwLCBhMSwgYTIsIGEz
LCBhNCwgYTUsIGE2LCBhNyk7Ci19Ci0KLWZ1bmN0aW9uIF9fOChvKSB7Ci0gIHZhciBhcml0eSA9
IG8ubGVuZ3RoOwotICBpZiAoYXJpdHkgPT09IDgpIHsKLSAgICByZXR1cm4gbzsKLSAgfQotICBl
bHNlIHsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBh
NykgewotICAgICAgcmV0dXJuIF84KG8sIGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyk7
Ci0gICAgfTsKLSAgfQotfQotCi1leHBvcnRzLmFwcCAgICAgPSBhcHA7Ci1leHBvcnRzLmpzICAg
ICAgPSBqczsKLWV4cG9ydHMuY3VycnlfMSA9IGN1cnJ5XzE7Ci1leHBvcnRzLl8xICAgICAgPSBf
MTsKLWV4cG9ydHMuanMxICAgICA9IGpzMTsKLWV4cG9ydHMuX18xICAgICA9IF9fMTsKLWV4cG9y
dHMuY3VycnlfMiA9IGN1cnJ5XzI7Ci1leHBvcnRzLl8yICAgICAgPSBfMjsKLWV4cG9ydHMuanMy
ICAgICA9IGpzMjsKLWV4cG9ydHMuX18yICAgICA9IF9fMjsKLWV4cG9ydHMuY3VycnlfMyA9IGN1
cnJ5XzM7Ci1leHBvcnRzLl8zICAgICAgPSBfMzsKLWV4cG9ydHMuanMzICAgICA9IGpzMzsKLWV4
cG9ydHMuX18zICAgICA9IF9fMzsKLWV4cG9ydHMuY3VycnlfNCA9IGN1cnJ5XzQ7Ci1leHBvcnRz
Ll80ICAgICAgPSBfNDsKLWV4cG9ydHMuanM0ICAgICA9IGpzNDsKLWV4cG9ydHMuX180ICAgICA9
IF9fNDsKLWV4cG9ydHMuY3VycnlfNSA9IGN1cnJ5XzU7Ci1leHBvcnRzLl81ICAgICAgPSBfNTsK
LWV4cG9ydHMuanM1ICAgICA9IGpzNTsKLWV4cG9ydHMuX181ICAgICA9IF9fNTsKLWV4cG9ydHMu
Y3VycnlfNiA9IGN1cnJ5XzY7Ci1leHBvcnRzLl82ICAgICAgPSBfNjsKLWV4cG9ydHMuanM2ICAg
ICA9IGpzNjsKLWV4cG9ydHMuX182ICAgICA9IF9fNjsKLWV4cG9ydHMuY3VycnlfNyA9IGN1cnJ5
Xzc7Ci1leHBvcnRzLl83ICAgICAgPSBfNzsKLWV4cG9ydHMuanM3ICAgICA9IGpzNzsKLWV4cG9y
dHMuX183ICAgICA9IF9fNzsKLWV4cG9ydHMuY3VycnlfOCA9IGN1cnJ5Xzg7Ci1leHBvcnRzLl84
ICAgICAgPSBfODsKLWV4cG9ydHMuanM4ICAgICA9IGpzODsKLWV4cG9ydHMuX184ICAgICA9IF9f
ODsKLS8qIE5vIHNpZGUgZWZmZWN0ICovCi0vLy8vLy8vLyBlbmQgb2YgY3VycnkuanMgLy8vLy8v
Ly8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnZGVjb2RlJ10g
PSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2Yg
ZGVjb2RlLmpzIC8vLy8vLy8vCi0vLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04g
MS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKLSd1c2Ugc3RyaWN0JzsKLQotdmFyIEYzMiAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjMyIik7Ci12YXIgRjY0ICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9mNjQiKTsKLXZhciBJMzIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2kzMiIpOwot
dmFyIExpYiAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7Ci12YXIgTGlzdCAgICAgICAg
ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2xpc3QiKTsKLXZhciBCbG9jayAgICAg
ICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2siKTsKLXZhciBDdXJyeSAg
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKLXZhciAkJEVy
cm9yICAgICAgICAgPSByZXF1aXJlKCIuL2Vycm9yIik7Ci12YXIgRW5jb2RlICAgICAgICAgID0g
cmVxdWlyZSgiLi9lbmNvZGUiKTsKLXZhciBQcmludGYgICAgICAgICAgPSByZXF1aXJlKCJicy1w
bGF0Zm9ybS9saWIvanMvcHJpbnRmIik7Ci12YXIgU291cmNlICAgICAgICAgID0gcmVxdWlyZSgi
Li9zb3VyY2UiKTsKLXZhciAkJFN0cmluZyAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvc3RyaW5nIik7Ci12YXIgQ2FtbF9vYmogICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZv
cm0vbGliL2pzL2NhbWxfb2JqIik7Ci12YXIgT3BlcmF0b3JzICAgICAgID0gcmVxdWlyZSgiLi9v
cGVyYXRvcnMiKTsKLXZhciBDYW1sX2ludDY0ICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvY2FtbF9pbnQ2NCIpOwotdmFyIENhbWxfc3RyaW5nICAgICA9IHJlcXVpcmUoImJzLXBs
YXRmb3JtL2xpYi9qcy9jYW1sX3N0cmluZyIpOwotdmFyIENhbWxfZXhjZXB0aW9ucyA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2V4Y2VwdGlvbnMiKTsKLQotdmFyIEVPUyA9IENh
bWxfZXhjZXB0aW9ucy5jcmVhdGUoIkRlY29kZS5FT1MiKTsKLQotZnVuY3Rpb24gc3RyZWFtKG5h
bWUsIGJzKSB7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAgICAgLyogbmFtZSAqL25h
bWUsCi0gICAgICAgICAgLyogYnl0ZXMgKi9icywKLSAgICAgICAgICAvKiBwb3MgKi9bMF0KLSAg
ICAgICAgXTsKLX0KLQotZnVuY3Rpb24gZW9zKHMpIHsKLSAgcmV0dXJuICsoc1svKiBwb3MgKi8y
XVswXSA9PT0gc1svKiBieXRlcyAqLzFdLmxlbmd0aCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrKG4s
IHMpIHsKLSAgaWYgKChzWy8qIHBvcyAqLzJdWzBdICsgbiB8IDApID4gc1svKiBieXRlcyAqLzFd
Lmxlbmd0aCkgewotICAgIHRocm93IEVPUzsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gMDsK
LSAgfQotfQotCi1mdW5jdGlvbiBza2lwKG4sIHMpIHsKLSAgY2hlY2sobiwgcyk7Ci0gIHNbLyog
cG9zICovMl1bMF0gPSBzWy8qIHBvcyAqLzJdWzBdICsgbiB8IDA7Ci0gIHJldHVybiAvKiAoKSAq
LzA7Ci19Ci0KLWZ1bmN0aW9uIHJlYWQocykgewotICByZXR1cm4gQ2FtbF9zdHJpbmcuZ2V0KHNb
LyogYnl0ZXMgKi8xXSwgc1svKiBwb3MgKi8yXVswXSk7Ci19Ci0KLWZ1bmN0aW9uIHBlZWsocykg
ewotICBpZiAoZW9zKHMpKSB7Ci0gICAgcmV0dXJuIC8qIE5vbmUgKi8wOwotICB9Ci0gIGVsc2Ug
ewotICAgIHJldHVybiAvKiBTb21lICovW3JlYWQocyldOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGdl
dChzKSB7Ci0gIGNoZWNrKDEsIHMpOwotICB2YXIgYiA9IHJlYWQocyk7Ci0gIHNraXAoMSwgcyk7
Ci0gIHJldHVybiBiOwotfQotCi12YXIgQ29kZSA9ICQkRXJyb3IuTWFrZSgvKiBtb2R1bGUgKi9b
XSk7Ci0KLXZhciBDb2RlJDEgPSBDb2RlWy8qIEVycm9yICovMF07Ci0KLWZ1bmN0aW9uIHN0cmlu
Z19vZl9ieXRlKGIpIHsKLSAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5zcHJpbnRmKC8qIEZvcm1h
dCAqL1sKLSAgICAgICAgICAgICAgICAgIC8qIEludCAqL0Jsb2NrLl9fKDQsIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAvKiBJbnRfeCAqLzYsCi0gICAgICAgICAgICAgICAgICAgICAgLyogTGl0
X3BhZGRpbmcgKi9CbG9jay5fXygwLCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFpl
cm9zICovMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgMgotICAgICAgICAgICAgICAgICAg
ICAgICAgXSksCi0gICAgICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAotICAgICAgICAgICAgICAg
ICAgICBdKSwKLSAgICAgICAgICAgICAgICAgICIlMDJ4IgotICAgICAgICAgICAgICAgIF0pLCBi
KTsKLX0KLQotZnVuY3Rpb24gcG9zaXRpb24ocywgcG9zKSB7Ci0gIHJldHVybiAvKiByZWNvcmQg
Ki9bCi0gICAgICAgICAgLyogZmlsZSAqL3NbLyogbmFtZSAqLzBdLAotICAgICAgICAgIC8qIGxp
bmUgKi8tMSwKLSAgICAgICAgICAvKiBjb2x1bW4gKi9wb3MKLSAgICAgICAgXTsKLX0KLQotZnVu
Y3Rpb24gcmVnaW9uKHMsIGxlZnQsIHJpZ2h0KSB7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0g
ICAgICAgICAgLyogbGVmdCAqL3Bvc2l0aW9uKHMsIGxlZnQpLAotICAgICAgICAgIC8qIHJpZ2h0
ICovcG9zaXRpb24ocywgcmlnaHQpCi0gICAgICAgIF07Ci19Ci0KLWZ1bmN0aW9uIGVycm9yKHMs
IHBvcywgbXNnKSB7Ci0gIHRocm93IFsKLSAgICAgICAgQ29kZSQxLAotICAgICAgICByZWdpb24o
cywgcG9zLCBwb3MpLAotICAgICAgICBtc2cKLSAgICAgIF07Ci19Ci0KLWZ1bmN0aW9uICQkcmVx
dWlyZShiLCBzLCBwb3MsIG1zZykgewotICBpZiAoYikgewotICAgIHJldHVybiAwOwotICB9Ci0g
IGVsc2UgewotICAgIHJldHVybiBlcnJvcihzLCBwb3MsIG1zZyk7Ci0gIH0KLX0KLQotZnVuY3Rp
b24gZ3VhcmQoZiwgcykgewotICB0cnkgewotICAgIHJldHVybiBDdXJyeS5fMShmLCBzKTsKLSAg
fQotICBjYXRjaCAoZXhuKXsKLSAgICBpZiAoZXhuID09PSBFT1MpIHsKLSAgICAgIHJldHVybiBl
cnJvcihzLCBzWy8qIGJ5dGVzICovMV0ubGVuZ3RoLCAidW5leHBlY3RlZCBlbmQgb2YgYmluYXJ5
IG9yIGZ1bmN0aW9uIik7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdGhyb3cgZXhuOwotICAg
IH0KLSAgfQotfQotCi1mdW5jdGlvbiBnZXQkMShwYXJhbSkgewotICByZXR1cm4gZ3VhcmQoZ2V0
LCBwYXJhbSk7Ci19Ci0KLWZ1bmN0aW9uIGV4cGVjdChiLCBzLCBtc2cpIHsKLSAgcmV0dXJuICQk
cmVxdWlyZSgrKGd1YXJkKGdldCQxLCBzKSA9PT0gYiksIHMsIHNbLyogcG9zICovMl1bMF0gLSAx
IHwgMCwgbXNnKTsKLX0KLQotZnVuY3Rpb24gaWxsZWdhbChzLCBwb3MsIGIpIHsKLSAgcmV0dXJu
IGVycm9yKHMsIHBvcywgImlsbGVnYWwgb3Bjb2RlICIgKyBzdHJpbmdfb2ZfYnl0ZShiKSk7Ci19
Ci0KLWZ1bmN0aW9uIGF0KGYsIHMpIHsKLSAgdmFyIGxlZnQgPSBzWy8qIHBvcyAqLzJdWzBdOwot
ICB2YXIgeCA9IEN1cnJ5Ll8xKGYsIHMpOwotICB2YXIgcmlnaHQgPSBzWy8qIHBvcyAqLzJdWzBd
OwotICByZXR1cm4gU291cmNlLiRhdCRhdCh4LCByZWdpb24ocywgbGVmdCwgcmlnaHQpKTsKLX0K
LQotZnVuY3Rpb24gdTE2KHMpIHsKLSAgdmFyIGxvID0gZ3VhcmQoZ2V0LCBzKTsKLSAgdmFyIGhp
ID0gZ3VhcmQoZ2V0LCBzKTsKLSAgcmV0dXJuIChoaSA8PCA4KSArIGxvIHwgMDsKLX0KLQotZnVu
Y3Rpb24gdTMyKHMpIHsKLSAgdmFyIGxvID0gdTE2KHMpOwotICB2YXIgaGkgPSB1MTYocyk7Ci0g
IHJldHVybiBsbyArIChoaSA8PCAxNikgfCAwOwotfQotCi1mdW5jdGlvbiB1NjQocykgewotICB2
YXIgbG8gPSBDYW1sX2ludDY0Lm9mX2ludDMyKHUzMihzKSk7Ci0gIHZhciBoaSA9IENhbWxfaW50
NjQub2ZfaW50MzIodTMyKHMpKTsKLSAgcmV0dXJuIENhbWxfaW50NjQuYWRkKGxvLCBDYW1sX2lu
dDY0LmxzbF8oaGksIDMyKSk7Ci19Ci0KLWZ1bmN0aW9uIHZ1TihuLCBzKSB7Ci0gICQkcmVxdWly
ZSgrKG4gPiAwKSwgcywgc1svKiBwb3MgKi8yXVswXSwgImludGVnZXIgcmVwcmVzZW50YXRpb24g
dG9vIGxvbmciKTsKLSAgdmFyIGIgPSBndWFyZChnZXQsIHMpOwotICAkJHJlcXVpcmUoKyhuID49
IDcgfHwgKGIgJiAxMjcpIDwgKDEgPDwgbikpLCBzLCBzWy8qIHBvcyAqLzJdWzBdIC0gMSB8IDAs
ICJpbnRlZ2VyIHRvbyBsYXJnZSIpOwotICB2YXIgeCA9IENhbWxfaW50NjQub2ZfaW50MzIoYiAm
IDEyNyk7Ci0gIGlmIChiICYgMTI4KSB7Ci0gICAgcmV0dXJuIENhbWxfaW50NjQub3JfKHgsIENh
bWxfaW50NjQubHNsXyh2dU4obiAtIDcgfCAwLCBzKSwgNykpOwotICB9Ci0gIGVsc2UgewotICAg
IHJldHVybiB4OwotICB9Ci19Ci0KLWZ1bmN0aW9uIHZzTihuLCBzKSB7Ci0gICQkcmVxdWlyZSgr
KG4gPiAwKSwgcywgc1svKiBwb3MgKi8yXVswXSwgImludGVnZXIgcmVwcmVzZW50YXRpb24gdG9v
IGxvbmciKTsKLSAgdmFyIGIgPSBndWFyZChnZXQsIHMpOwotICB2YXIgbWFzayA9ICgtMSA8PCBu
KSAmIDEyNzsKLSAgJCRyZXF1aXJlKCsobiA+PSA3IHx8IChiICYgbWFzaykgPT09IDAgfHwgKGIg
JiBtYXNrKSA9PT0gbWFzayksIHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwgImludGVnZXIg
dG9vIGxhcmdlIik7Ci0gIHZhciB4ID0gQ2FtbF9pbnQ2NC5vZl9pbnQzMihiICYgMTI3KTsKLSAg
aWYgKGIgJiAxMjgpIHsKLSAgICByZXR1cm4gQ2FtbF9pbnQ2NC5vcl8oeCwgQ2FtbF9pbnQ2NC5s
c2xfKHZzTihuIC0gNyB8IDAsIHMpLCA3KSk7Ci0gIH0KLSAgZWxzZSBpZiAoYiAmIDY0KSB7Ci0g
ICAgcmV0dXJuIC8qIGludDY0ICovWwotICAgICAgICAgICAgLyogaGkgKi94WzBdIHwgLyogaGkg
Ki8tMSwKLSAgICAgICAgICAgIC8qIGxvICovKCh4WzFdIHwgLyogbG8gKi80Mjk0OTY3MTY4KSA+
Pj4gMCkKLSAgICAgICAgICBdOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiB4OwotICB9Ci19
Ci0KLWZ1bmN0aW9uIHZ1MzIocykgewotICByZXR1cm4gdnVOKDMyLCBzKVsxXSB8IDA7Ci19Ci0K
LWZ1bmN0aW9uIHZzMzIocykgewotICByZXR1cm4gdnNOKDMyLCBzKVsxXSB8IDA7Ci19Ci0KLWZ1
bmN0aW9uIHZzNjQocykgewotICByZXR1cm4gdnNOKDY0LCBzKTsKLX0KLQotZnVuY3Rpb24gZjMy
KHMpIHsKLSAgcmV0dXJuIEN1cnJ5Ll8xKEYzMi5vZl9iaXRzLCB1MzIocykpOwotfQotCi1mdW5j
dGlvbiBmNjQocykgewotICByZXR1cm4gQ3VycnkuXzEoRjY0Lm9mX2JpdHMsIHU2NChzKSk7Ci19
Ci0KLWZ1bmN0aW9uIGxlbjMyKHMpIHsKLSAgdmFyIHBvcyA9IHNbLyogcG9zICovMl1bMF07Ci0g
IHZhciBuID0gdnVOKDMyLCBzKVsxXSB8IDA7Ci0gIGlmIChuIDw9IHNbLyogYnl0ZXMgKi8xXS5s
ZW5ndGgpIHsKLSAgICByZXR1cm4gbjsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gZXJyb3Io
cywgcG9zLCAibGVuZ3RoIG91dCBvZiBib3VuZHMiKTsKLSAgfQotfQotCi1mdW5jdGlvbiBzdHJp
bmcocykgewotICB2YXIgbiA9IGxlbjMyKHMpOwotICByZXR1cm4gZ3VhcmQoZnVuY3Rpb24gKHBh
cmFtKSB7Ci0gICAgICAgICAgICAgIHZhciBuJDEgPSBuOwotICAgICAgICAgICAgICB2YXIgcyA9
IHBhcmFtOwotICAgICAgICAgICAgICB2YXIgaSA9IHNbLyogcG9zICovMl1bMF07Ci0gICAgICAg
ICAgICAgIHNraXAobiQxLCBzKTsKLSAgICAgICAgICAgICAgcmV0dXJuICQkU3RyaW5nLnN1Yihz
Wy8qIGJ5dGVzICovMV0sIGksIG4kMSk7Ci0gICAgICAgICAgICB9LCBzKTsKLX0KLQotZnVuY3Rp
b24gbGlzdChmLCBuLCBzKSB7Ci0gIGlmIChuKSB7Ci0gICAgdmFyIHggPSBDdXJyeS5fMShmLCBz
KTsKLSAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICB4LAotICAgICAgICAgICAgbGlz
dChmLCBuIC0gMSB8IDAsIHMpCi0gICAgICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1
cm4gLyogW10gKi8wOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG9wdChmLCBiLCBzKSB7Ci0gIGlmIChi
KSB7Ci0gICAgcmV0dXJuIC8qIFNvbWUgKi9bQ3VycnkuXzEoZiwgcyldOwotICB9Ci0gIGVsc2Ug
ewotICAgIHJldHVybiAvKiBOb25lICovMDsKLSAgfQotfQotCi1mdW5jdGlvbiB2ZWMoZiwgcykg
ewotICB2YXIgbiA9IGxlbjMyKHMpOwotICByZXR1cm4gbGlzdChmLCBuLCBzKTsKLX0KLQotZnVu
Y3Rpb24gc2l6ZWQoZiwgcykgewotICB2YXIgc2l6ZSA9IGxlbjMyKHMpOwotICB2YXIgc3RhcnQg
PSBzWy8qIHBvcyAqLzJdWzBdOwotICB2YXIgeCA9IEN1cnJ5Ll8yKGYsIHNpemUsIHMpOwotICAk
JHJlcXVpcmUoKyhzWy8qIHBvcyAqLzJdWzBdID09PSAoc3RhcnQgKyBzaXplIHwgMCkpLCBzLCBz
dGFydCwgInNlY3Rpb24gc2l6ZSBtaXNtYXRjaCIpOwotICByZXR1cm4geDsKLX0KLQotZnVuY3Rp
b24gdmFsdWVfdHlwZShzKSB7Ci0gIHZhciBtYXRjaCA9IHZzTig3LCBzKVsxXSB8IDA7Ci0gIHZh
ciBzd2l0Y2hlciA9IG1hdGNoICsgNCB8IDA7Ci0gIGlmIChzd2l0Y2hlciA+IDMgfHwgc3dpdGNo
ZXIgPCAwKSB7Ci0gICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwg
ImludmFsaWQgdmFsdWUgdHlwZSIpOwotICB9Ci0gIGVsc2UgewotICAgIHN3aXRjaCAoc3dpdGNo
ZXIpIHsKLSAgICAgIGNhc2UgMCA6IAotICAgICAgICAgIHJldHVybiAvKiBGNjRUeXBlICovMzsK
LSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIHJldHVybiAvKiBGMzJUeXBlICovMjsKLSAgICAg
IGNhc2UgMiA6IAotICAgICAgICAgIHJldHVybiAvKiBJNjRUeXBlICovMTsKLSAgICAgIGNhc2Ug
MyA6IAotICAgICAgICAgIHJldHVybiAvKiBJMzJUeXBlICovMDsKLSAgICAgIAotICAgIH0KLSAg
fQotfQotCi1mdW5jdGlvbiBlbGVtX3R5cGUocykgewotICB2YXIgbWF0Y2ggPSB2c04oNywgcylb
MV0gfCAwOwotICBpZiAobWF0Y2ggIT09IC0xNikgewotICAgIHJldHVybiBlcnJvcihzLCBzWy8q
IHBvcyAqLzJdWzBdIC0gMSB8IDAsICJpbnZhbGlkIGVsZW1lbnQgdHlwZSIpOwotICB9Ci0gIGVs
c2UgewotICAgIHJldHVybiAvKiBGdW5jUmVmVHlwZSAqLzA7Ci0gIH0KLX0KLQotZnVuY3Rpb24g
c3RhY2tfdHlwZShzKSB7Ci0gIHZhciBtYXRjaCA9IHBlZWsocyk7Ci0gIGlmIChtYXRjaCkgewot
ICAgIGlmIChtYXRjaFswXSAhPT0gNjQpIHsKLSAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAg
ICAgICAgICAgdmFsdWVfdHlwZShzKSwKLSAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAg
ICAgICBdOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIGd1YXJkKGZ1bmN0aW9uIChwYXJhbSkg
ewotICAgICAgICAgICAgcmV0dXJuIHNraXAoMSwgcGFyYW0pOwotICAgICAgICAgIH0sIHMpOwot
ICAgICAgcmV0dXJuIC8qIFtdICovMDsKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJu
IC8qIDo6ICovWwotICAgICAgICAgICAgdmFsdWVfdHlwZShzKSwKLSAgICAgICAgICAgIC8qIFtd
ICovMAotICAgICAgICAgIF07Ci0gIH0KLX0KLQotZnVuY3Rpb24gZnVuY190eXBlKHMpIHsKLSAg
dmFyIG1hdGNoID0gdnNOKDcsIHMpWzFdIHwgMDsKLSAgaWYgKG1hdGNoICE9PSAtMzIpIHsKLSAg
ICByZXR1cm4gZXJyb3Iocywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAwLCAiaW52YWxpZCBmdW5j
dGlvbiB0eXBlIik7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgdmFyIGlucyA9IHZlYyh2YWx1ZV90eXBl
LCBzKTsKLSAgICB2YXIgb3V0ID0gdmVjKHZhbHVlX3R5cGUsIHMpOwotICAgIHJldHVybiAvKiBG
dW5jVHlwZSAqL1sKLSAgICAgICAgICAgIGlucywKLSAgICAgICAgICAgIG91dAotICAgICAgICAg
IF07Ci0gIH0KLX0KLQotZnVuY3Rpb24gbGltaXRzKHZ1LCBzKSB7Ci0gIHZhciBoYXNfbWF4ID0g
KygodnVOKDEsIHMpWzFdIHwgMCkgPT09IDEpOwotICB2YXIgbWluID0gQ3VycnkuXzEodnUsIHMp
OwotICB2YXIgbWF4ID0gb3B0KHZ1LCBoYXNfbWF4LCBzKTsKLSAgcmV0dXJuIC8qIHJlY29yZCAq
L1sKLSAgICAgICAgICAvKiBtaW4gKi9taW4sCi0gICAgICAgICAgLyogbWF4ICovbWF4Ci0gICAg
ICAgIF07Ci19Ci0KLWZ1bmN0aW9uIHRhYmxlX3R5cGUocykgewotICB2YXIgdCA9IGVsZW1fdHlw
ZShzKTsKLSAgdmFyIGxpbSA9IGxpbWl0cyh2dTMyLCBzKTsKLSAgcmV0dXJuIC8qIFRhYmxlVHlw
ZSAqL1sKLSAgICAgICAgICBsaW0sCi0gICAgICAgICAgdAotICAgICAgICBdOwotfQotCi1mdW5j
dGlvbiBtZW1vcnlfdHlwZShzKSB7Ci0gIHZhciBsaW0gPSBsaW1pdHModnUzMiwgcyk7Ci0gIHJl
dHVybiAvKiBNZW1vcnlUeXBlICovW2xpbV07Ci19Ci0KLWZ1bmN0aW9uIG11dGFiaWxpdHkocykg
ewotICB2YXIgbWF0Y2ggPSBndWFyZChnZXQsIHMpOwotICBpZiAobWF0Y2ggIT09IDApIHsKLSAg
ICBpZiAobWF0Y2ggIT09IDEpIHsKLSAgICAgIHJldHVybiBlcnJvcihzLCBzWy8qIHBvcyAqLzJd
WzBdIC0gMSB8IDAsICJpbnZhbGlkIG11dGFiaWxpdHkiKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0g
ICAgICByZXR1cm4gLyogTXV0YWJsZSAqLzE7Ci0gICAgfQotICB9Ci0gIGVsc2UgewotICAgIHJl
dHVybiAvKiBJbW11dGFibGUgKi8wOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGdsb2JhbF90eXBlKHMp
IHsKLSAgdmFyIHQgPSB2YWx1ZV90eXBlKHMpOwotICB2YXIgbXV0ID0gbXV0YWJpbGl0eShzKTsK
LSAgcmV0dXJuIC8qIEdsb2JhbFR5cGUgKi9bCi0gICAgICAgICAgdCwKLSAgICAgICAgICBtdXQK
LSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24gJCR2YXIocykgewotICByZXR1cm4gdnVOKDMyLCBz
KVsxXSB8IDA7Ci19Ci0KLWZ1bmN0aW9uIG1lbW9wKHMpIHsKLSAgdmFyIGFsaWduID0gdnVOKDMy
LCBzKVsxXSB8IDA7Ci0gICQkcmVxdWlyZShDdXJyeS5fMihJMzIubGVfdSwgYWxpZ24sIDMyKSwg
cywgc1svKiBwb3MgKi8yXVswXSAtIDEgfCAwLCAiaW52YWxpZCBtZW1vcCBmbGFncyIpOwotICB2
YXIgb2Zmc2V0ID0gdnVOKDMyLCBzKVsxXSB8IDA7Ci0gIHJldHVybiAvKiB0dXBsZSAqL1sKLSAg
ICAgICAgICBhbGlnbiwKLSAgICAgICAgICBvZmZzZXQKLSAgICAgICAgXTsKLX0KLQotZnVuY3Rp
b24gaW5zdHIocykgewotICB2YXIgcG9zID0gc1svKiBwb3MgKi8yXVswXTsKLSAgdmFyIGIgPSBn
dWFyZChnZXQsIHMpOwotICBpZiAoYiA+IDE5MSB8fCBiIDwgMCkgewotICAgIHJldHVybiBpbGxl
Z2FsKHMsIHBvcywgYik7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgc3dpdGNoIChiKSB7Ci0gICAgICBj
YXNlIDAgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLnVucmVhY2hhYmxlOwotICAgICAg
Y2FzZSAxIDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5ub3A7Ci0gICAgICBjYXNlIDIg
OiAKLSAgICAgICAgICB2YXIgdHMgPSBzdGFja190eXBlKHMpOwotICAgICAgICAgIHZhciBlcyRw
cmltZSA9IExpc3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMsIC8qIFtdICovMCkpOwotICAgICAg
ICAgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0ZWQiKTsKLSAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmJsb2NrKHRzLCBlcyRwcmltZSk7Ci0gICAgICBjYXNlIDMgOiAKLSAgICAg
ICAgICB2YXIgdHMkMSA9IHN0YWNrX3R5cGUocyk7Ci0gICAgICAgICAgdmFyIGVzJHByaW1lJDEg
PSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsKLSAgICAgICAgICBl
eHBlY3QoMTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7Ci0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5sb29wKHRzJDEsIGVzJHByaW1lJDEpOwotICAgICAgY2FzZSA0IDogCi0gICAgICAg
ICAgdmFyIHRzJDIgPSBzdGFja190eXBlKHMpOwotICAgICAgICAgIHZhciBlczEgPSBMaXN0LnJl
dihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsKLSAgICAgICAgICBpZiAoQ2FtbF9v
YmouY2FtbF9lcXVhbChwZWVrKHMpLCAvKiBTb21lICovWzVdKSkgewotICAgICAgICAgICAgZXhw
ZWN0KDUsIHMsICJFTFNFIG9yIEVORCBvcGNvZGUgZXhwZWN0ZWQiKTsKLSAgICAgICAgICAgIHZh
ciBlczIgPSBMaXN0LnJldihpbnN0cl9ibG9jayRwcmltZShzLCAvKiBbXSAqLzApKTsKLSAgICAg
ICAgICAgIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0ZWQiKTsKLSAgICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaWZfKHRzJDIsIGVzMSwgZXMyKTsKLSAgICAgICAgICB9Ci0gICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBleHBlY3QoMTEsIHMsICJFTkQgb3Bjb2RlIGV4cGVj
dGVkIik7Ci0gICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmlmXyh0cyQyLCBlczEsIC8qIFtd
ICovMCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA1IDogCi0g
ICAgICAgICAgcmV0dXJuIGVycm9yKHMsIHBvcywgIm1pc3BsYWNlZCBFTFNFIG9wY29kZSIpOwot
ICAgICAgY2FzZSAxMSA6IAotICAgICAgICAgIHJldHVybiBlcnJvcihzLCBwb3MsICJtaXNwbGFj
ZWQgRU5EIG9wY29kZSIpOwotICAgICAgY2FzZSAxMiA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuYnIoYXQoJCR2YXIsIHMpKTsKLSAgICAgIGNhc2UgMTMgOiAKLSAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmJyX2lmKGF0KCQkdmFyLCBzKSk7Ci0gICAgICBjYXNlIDE0IDogCi0gICAg
ICAgICAgdmFyIHhzID0gdmVjKGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICAgIHJl
dHVybiBhdCgkJHZhciwgcGFyYW0pOwotICAgICAgICAgICAgICB9LCBzKTsKLSAgICAgICAgICB2
YXIgeCA9IGF0KCQkdmFyLCBzKTsKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmJyX3RhYmxl
KHhzLCB4KTsKLSAgICAgIGNhc2UgMTUgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLiQk
cmV0dXJuOwotICAgICAgY2FzZSAxNiA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuY2Fs
bChhdCgkJHZhciwgcykpOwotICAgICAgY2FzZSAxNyA6IAotICAgICAgICAgIHZhciB4JDEgPSBh
dCgkJHZhciwgcyk7Ci0gICAgICAgICAgZXhwZWN0KDAsIHMsICJ6ZXJvIGZsYWcgZXhwZWN0ZWQi
KTsKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmNhbGxfaW5kaXJlY3QoeCQxKTsKLSAgICAg
IGNhc2UgMjYgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmRyb3A7Ci0gICAgICBjYXNl
IDI3IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZWxlY3Q7Ci0gICAgICBjYXNlIDMy
IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5nZXRfbG9jYWwoYXQoJCR2YXIsIHMpKTsK
LSAgICAgIGNhc2UgMzMgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLnNldF9sb2NhbChh
dCgkJHZhciwgcykpOwotICAgICAgY2FzZSAzNCA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMudGVlX2xvY2FsKGF0KCQkdmFyLCBzKSk7Ci0gICAgICBjYXNlIDM1IDogCi0gICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5nZXRfZ2xvYmFsKGF0KCQkdmFyLCBzKSk7Ci0gICAgICBjYXNlIDM2
IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZXRfZ2xvYmFsKGF0KCQkdmFyLCBzKSk7
Ci0gICAgICBjYXNlIDYgOiAKLSAgICAgIGNhc2UgNyA6IAotICAgICAgY2FzZSA4IDogCi0gICAg
ICBjYXNlIDkgOiAKLSAgICAgIGNhc2UgMTAgOiAKLSAgICAgIGNhc2UgMTggOiAKLSAgICAgIGNh
c2UgMTkgOiAKLSAgICAgIGNhc2UgMjAgOiAKLSAgICAgIGNhc2UgMjEgOiAKLSAgICAgIGNhc2Ug
MjIgOiAKLSAgICAgIGNhc2UgMjMgOiAKLSAgICAgIGNhc2UgMjQgOiAKLSAgICAgIGNhc2UgMjUg
OiAKLSAgICAgIGNhc2UgMjggOiAKLSAgICAgIGNhc2UgMjkgOiAKLSAgICAgIGNhc2UgMzAgOiAK
LSAgICAgIGNhc2UgMzEgOiAKLSAgICAgIGNhc2UgMzcgOiAKLSAgICAgIGNhc2UgMzggOiAKLSAg
ICAgIGNhc2UgMzkgOiAKLSAgICAgICAgICByZXR1cm4gaWxsZWdhbChzLCBwb3MsIGIpOwotICAg
ICAgY2FzZSA0MCA6IAotICAgICAgICAgIHZhciBtYXRjaCA9IG1lbW9wKHMpOwotICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQobWF0Y2hbMF0sIG1hdGNoWzFdKTsKLSAgICAgIGNh
c2UgNDEgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkMSA9IG1lbW9wKHMpOwotICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTY0X2xvYWQobWF0Y2gkMVswXSwgbWF0Y2gkMVsxXSk7Ci0gICAgICBj
YXNlIDQyIDogCi0gICAgICAgICAgdmFyIG1hdGNoJDIgPSBtZW1vcChzKTsKLSAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmYzMl9sb2FkKG1hdGNoJDJbMF0sIG1hdGNoJDJbMV0pOwotICAgICAg
Y2FzZSA0MyA6IAotICAgICAgICAgIHZhciBtYXRjaCQzID0gbWVtb3Aocyk7Ci0gICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5mNjRfbG9hZChtYXRjaCQzWzBdLCBtYXRjaCQzWzFdKTsKLSAgICAg
IGNhc2UgNDQgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkNCA9IG1lbW9wKHMpOwotICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuaTMyX2xvYWQ4X3MobWF0Y2gkNFswXSwgbWF0Y2gkNFsxXSk7Ci0g
ICAgICBjYXNlIDQ1IDogCi0gICAgICAgICAgdmFyIG1hdGNoJDUgPSBtZW1vcChzKTsKLSAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkOF91KG1hdGNoJDVbMF0sIG1hdGNoJDVbMV0p
OwotICAgICAgY2FzZSA0NiA6IAotICAgICAgICAgIHZhciBtYXRjaCQ2ID0gbWVtb3Aocyk7Ci0g
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbG9hZDE2X3MobWF0Y2gkNlswXSwgbWF0Y2gk
NlsxXSk7Ci0gICAgICBjYXNlIDQ3IDogCi0gICAgICAgICAgdmFyIG1hdGNoJDcgPSBtZW1vcChz
KTsKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9sb2FkMTZfdShtYXRjaCQ3WzBdLCBt
YXRjaCQ3WzFdKTsKLSAgICAgIGNhc2UgNDggOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkOCA9IG1l
bW9wKHMpOwotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQ4X3MobWF0Y2gkOFsw
XSwgbWF0Y2gkOFsxXSk7Ci0gICAgICBjYXNlIDQ5IDogCi0gICAgICAgICAgdmFyIG1hdGNoJDkg
PSBtZW1vcChzKTsKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkOF91KG1hdGNo
JDlbMF0sIG1hdGNoJDlbMV0pOwotICAgICAgY2FzZSA1MCA6IAotICAgICAgICAgIHZhciBtYXRj
aCQxMCA9IG1lbW9wKHMpOwotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xvYWQxNl9z
KG1hdGNoJDEwWzBdLCBtYXRjaCQxMFsxXSk7Ci0gICAgICBjYXNlIDUxIDogCi0gICAgICAgICAg
dmFyIG1hdGNoJDExID0gbWVtb3Aocyk7Ci0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRf
bG9hZDE2X3UobWF0Y2gkMTFbMF0sIG1hdGNoJDExWzFdKTsKLSAgICAgIGNhc2UgNTIgOiAKLSAg
ICAgICAgICB2YXIgbWF0Y2gkMTIgPSBtZW1vcChzKTsKLSAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmk2NF9sb2FkMzJfcyhtYXRjaCQxMlswXSwgbWF0Y2gkMTJbMV0pOwotICAgICAgY2FzZSA1
MyA6IAotICAgICAgICAgIHZhciBtYXRjaCQxMyA9IG1lbW9wKHMpOwotICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTY0X2xvYWQzMl91KG1hdGNoJDEzWzBdLCBtYXRjaCQxM1sxXSk7Ci0gICAg
ICBjYXNlIDU0IDogCi0gICAgICAgICAgdmFyIG1hdGNoJDE0ID0gbWVtb3Aocyk7Ci0gICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmUobWF0Y2gkMTRbMF0sIG1hdGNoJDE0WzFdKTsK
LSAgICAgIGNhc2UgNTUgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkMTUgPSBtZW1vcChzKTsKLSAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdG9yZShtYXRjaCQxNVswXSwgbWF0Y2gkMTVb
MV0pOwotICAgICAgY2FzZSA1NiA6IAotICAgICAgICAgIHZhciBtYXRjaCQxNiA9IG1lbW9wKHMp
OwotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3N0b3JlKG1hdGNoJDE2WzBdLCBtYXRj
aCQxNlsxXSk7Ci0gICAgICBjYXNlIDU3IDogCi0gICAgICAgICAgdmFyIG1hdGNoJDE3ID0gbWVt
b3Aocyk7Ci0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfc3RvcmUobWF0Y2gkMTdbMF0s
IG1hdGNoJDE3WzFdKTsKLSAgICAgIGNhc2UgNTggOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkMTgg
PSBtZW1vcChzKTsKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zdG9yZTgobWF0Y2gk
MThbMF0sIG1hdGNoJDE4WzFdKTsKLSAgICAgIGNhc2UgNTkgOiAKLSAgICAgICAgICB2YXIgbWF0
Y2gkMTkgPSBtZW1vcChzKTsKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zdG9yZTE2
KG1hdGNoJDE5WzBdLCBtYXRjaCQxOVsxXSk7Ci0gICAgICBjYXNlIDYwIDogCi0gICAgICAgICAg
dmFyIG1hdGNoJDIwID0gbWVtb3Aocyk7Ci0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRf
c3RvcmU4KG1hdGNoJDIwWzBdLCBtYXRjaCQyMFsxXSk7Ci0gICAgICBjYXNlIDYxIDogCi0gICAg
ICAgICAgdmFyIG1hdGNoJDIxID0gbWVtb3Aocyk7Ci0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5pNjRfc3RvcmUxNihtYXRjaCQyMVswXSwgbWF0Y2gkMjFbMV0pOwotICAgICAgY2FzZSA2MiA6
IAotICAgICAgICAgIHZhciBtYXRjaCQyMiA9IG1lbW9wKHMpOwotICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTY0X3N0b3JlMzIobWF0Y2gkMjJbMF0sIG1hdGNoJDIyWzFdKTsKLSAgICAgIGNh
c2UgNjMgOiAKLSAgICAgICAgICBleHBlY3QoMCwgcywgInplcm8gZmxhZyBleHBlY3RlZCIpOwot
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuY3VycmVudF9tZW1vcnk7Ci0gICAgICBjYXNlIDY0
IDogCi0gICAgICAgICAgZXhwZWN0KDAsIHMsICJ6ZXJvIGZsYWcgZXhwZWN0ZWQiKTsKLSAgICAg
ICAgICByZXR1cm4gT3BlcmF0b3JzLmdyb3dfbWVtb3J5OwotICAgICAgY2FzZSA2NSA6IAotICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX2NvbnN0KGF0KHZzMzIsIHMpKTsKLSAgICAgIGNh
c2UgNjYgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9jb25zdChhdCh2czY0LCBz
KSk7Ci0gICAgICBjYXNlIDY3IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfY29u
c3QoYXQoZjMyLCBzKSk7Ci0gICAgICBjYXNlIDY4IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5mNjRfY29uc3QoYXQoZjY0LCBzKSk7Ci0gICAgICBjYXNlIDY5IDogCi0gICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5pMzJfZXF6OwotICAgICAgY2FzZSA3MCA6IAotICAgICAgICAgIHJl
dHVybiBPcGVyYXRvcnMuaTMyX2VxOwotICAgICAgY2FzZSA3MSA6IAotICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTMyX25lOwotICAgICAgY2FzZSA3MiA6IAotICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTMyX2x0X3M7Ci0gICAgICBjYXNlIDczIDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfbHRfdTsKLSAgICAgIGNhc2UgNzQgOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmkzMl9ndF9zOwotICAgICAgY2FzZSA3NSA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTMyX2d0X3U7Ci0gICAgICBjYXNlIDc2IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pMzJfbGVfczsKLSAgICAgIGNhc2UgNzcgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmkzMl9sZV91OwotICAgICAgY2FzZSA3OCA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuaTMyX2dlX3M7Ci0gICAgICBjYXNlIDc5IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9y
cy5pMzJfZ2VfdTsKLSAgICAgIGNhc2UgODAgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3Jz
Lmk2NF9lcXo7Ci0gICAgICBjYXNlIDgxIDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5p
NjRfZXE7Ci0gICAgICBjYXNlIDgyIDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRf
bmU7Ci0gICAgICBjYXNlIDgzIDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfbHRf
czsKLSAgICAgIGNhc2UgODQgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sdF91
OwotICAgICAgY2FzZSA4NSA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2d0X3M7
Ci0gICAgICBjYXNlIDg2IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfZ3RfdTsK
LSAgICAgIGNhc2UgODcgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sZV9zOwot
ICAgICAgY2FzZSA4OCA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2xlX3U7Ci0g
ICAgICBjYXNlIDg5IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfZ2VfczsKLSAg
ICAgIGNhc2UgOTAgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9nZV91OwotICAg
ICAgY2FzZSA5MSA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2VxOwotICAgICAg
Y2FzZSA5MiA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX25lOwotICAgICAgY2Fz
ZSA5MyA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2x0OwotICAgICAgY2FzZSA5
NCA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2d0OwotICAgICAgY2FzZSA5NSA6
IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2xlOwotICAgICAgY2FzZSA5NiA6IAot
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2dlOwotICAgICAgY2FzZSA5NyA6IAotICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2VxOwotICAgICAgY2FzZSA5OCA6IAotICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X25lOwotICAgICAgY2FzZSA5OSA6IAotICAgICAgICAg
IHJldHVybiBPcGVyYXRvcnMuZjY0X2x0OwotICAgICAgY2FzZSAxMDAgOiAKLSAgICAgICAgICBy
ZXR1cm4gT3BlcmF0b3JzLmY2NF9ndDsKLSAgICAgIGNhc2UgMTAxIDogCi0gICAgICAgICAgcmV0
dXJuIE9wZXJhdG9ycy5mNjRfbGU7Ci0gICAgICBjYXNlIDEwMiA6IAotICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjY0X2dlOwotICAgICAgY2FzZSAxMDMgOiAKLSAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmkzMl9jbHo7Ci0gICAgICBjYXNlIDEwNCA6IAotICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTMyX2N0ejsKLSAgICAgIGNhc2UgMTA1IDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfcG9wY250OwotICAgICAgY2FzZSAxMDYgOiAKLSAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmkzMl9hZGQ7Ci0gICAgICBjYXNlIDEwNyA6IAotICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTMyX3N1YjsKLSAgICAgIGNhc2UgMTA4IDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfbXVsOwotICAgICAgY2FzZSAxMDkgOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmkzMl9kaXZfczsKLSAgICAgIGNhc2UgMTEwIDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfZGl2X3U7Ci0gICAgICBjYXNlIDExMSA6IAotICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTMyX3JlbV9zOwotICAgICAgY2FzZSAxMTIgOiAKLSAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmkzMl9yZW1fdTsKLSAgICAgIGNhc2UgMTEzIDogCi0gICAgICAgICAgcmV0dXJu
IE9wZXJhdG9ycy5pMzJfYW5kOwotICAgICAgY2FzZSAxMTQgOiAKLSAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmkzMl9vcjsKLSAgICAgIGNhc2UgMTE1IDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfeG9yOwotICAgICAgY2FzZSAxMTYgOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmkzMl9zaGw7Ci0gICAgICBjYXNlIDExNyA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTMyX3Nocl9zOwotICAgICAgY2FzZSAxMTggOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmkzMl9zaHJfdTsKLSAgICAgIGNhc2UgMTE5IDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfcm90bDsKLSAgICAgIGNhc2UgMTIwIDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfcm90cjsKLSAgICAgIGNhc2UgMTIxIDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pNjRfY2x6OwotICAgICAgY2FzZSAxMjIgOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmk2NF9jdHo7Ci0gICAgICBjYXNlIDEyMyA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X3BvcGNudDsKLSAgICAgIGNhc2UgMTI0IDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pNjRfYWRkOwotICAgICAgY2FzZSAxMjUgOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmk2NF9zdWI7Ci0gICAgICBjYXNlIDEyNiA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X211bDsKLSAgICAgIGNhc2UgMTI3IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfZGl2X3M7Ci0gICAgICBjYXNlIDEyOCA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X2Rpdl91OwotICAgICAgY2FzZSAxMjkgOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmk2NF9yZW1fczsKLSAgICAgIGNhc2UgMTMwIDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pNjRfcmVtX3U7Ci0gICAgICBjYXNlIDEzMSA6IAotICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTY0X2FuZDsKLSAgICAgIGNhc2UgMTMyIDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pNjRfb3I7Ci0gICAgICBjYXNlIDEzMyA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X3hvcjsKLSAgICAgIGNhc2UgMTM0IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfc2hsOwotICAgICAgY2FzZSAxMzUgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmk2NF9zaHJfczsKLSAgICAgIGNhc2UgMTM2IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pNjRfc2hyX3U7Ci0gICAgICBjYXNlIDEzNyA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X3JvdGw7Ci0gICAgICBjYXNlIDEzOCA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X3JvdHI7Ci0gICAgICBjYXNlIDEzOSA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjMyX2FiczsKLSAgICAgIGNhc2UgMTQwIDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5mMzJfbmVnOwotICAgICAgY2FzZSAxNDEgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmYzMl9jZWlsOwotICAgICAgY2FzZSAxNDIgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmYzMl9mbG9vcjsKLSAgICAgIGNhc2UgMTQzIDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5mMzJfdHJ1bmM7Ci0gICAgICBjYXNlIDE0NCA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjMyX25lYXJlc3Q7Ci0gICAgICBjYXNlIDE0NSA6IAotICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuZjMyX3NxcnQ7Ci0gICAgICBjYXNlIDE0NiA6IAotICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuZjMyX2FkZDsKLSAgICAgIGNhc2UgMTQ3IDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5mMzJfc3ViOwotICAgICAgY2FzZSAxNDggOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmYzMl9tdWw7Ci0gICAgICBjYXNlIDE0OSA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjMyX2RpdjsKLSAgICAgIGNhc2UgMTUwIDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5mMzJfbWluOwotICAgICAgY2FzZSAxNTEgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmYzMl9tYXg7Ci0gICAgICBjYXNlIDE1MiA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRv
cnMuZjMyX2NvcHlzaWduOwotICAgICAgY2FzZSAxNTMgOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmY2NF9hYnM7Ci0gICAgICBjYXNlIDE1NCA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjY0X25lZzsKLSAgICAgIGNhc2UgMTU1IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5mNjRfY2VpbDsKLSAgICAgIGNhc2UgMTU2IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5mNjRfZmxvb3I7Ci0gICAgICBjYXNlIDE1NyA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjY0X3RydW5jOwotICAgICAgY2FzZSAxNTggOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmY2NF9uZWFyZXN0OwotICAgICAgY2FzZSAxNTkgOiAKLSAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmY2NF9zcXJ0OwotICAgICAgY2FzZSAxNjAgOiAKLSAgICAgICAgICByZXR1cm4g
T3BlcmF0b3JzLmY2NF9hZGQ7Ci0gICAgICBjYXNlIDE2MSA6IAotICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuZjY0X3N1YjsKLSAgICAgIGNhc2UgMTYyIDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5mNjRfbXVsOwotICAgICAgY2FzZSAxNjMgOiAKLSAgICAgICAgICByZXR1cm4gT3Bl
cmF0b3JzLmY2NF9kaXY7Ci0gICAgICBjYXNlIDE2NCA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjY0X21pbjsKLSAgICAgIGNhc2UgMTY1IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5mNjRfbWF4OwotICAgICAgY2FzZSAxNjYgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmY2NF9jb3B5c2lnbjsKLSAgICAgIGNhc2UgMTY3IDogCi0gICAgICAgICAgcmV0dXJuIE9w
ZXJhdG9ycy5pMzJfd3JhcF9pNjQ7Ci0gICAgICBjYXNlIDE2OCA6IAotICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuaTMyX3RydW5jX3NfZjMyOwotICAgICAgY2FzZSAxNjkgOiAKLSAgICAgICAg
ICByZXR1cm4gT3BlcmF0b3JzLmkzMl90cnVuY191X2YzMjsKLSAgICAgIGNhc2UgMTcwIDogCi0g
ICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfdHJ1bmNfc19mNjQ7Ci0gICAgICBjYXNlIDE3
MSA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTMyX3RydW5jX3VfZjY0OwotICAgICAg
Y2FzZSAxNzIgOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9leHRlbmRfc19pMzI7
Ci0gICAgICBjYXNlIDE3MyA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X2V4dGVu
ZF91X2kzMjsKLSAgICAgIGNhc2UgMTc0IDogCi0gICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5p
NjRfdHJ1bmNfc19mMzI7Ci0gICAgICBjYXNlIDE3NSA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuaTY0X3RydW5jX3VfZjMyOwotICAgICAgY2FzZSAxNzYgOiAKLSAgICAgICAgICByZXR1
cm4gT3BlcmF0b3JzLmk2NF90cnVuY19zX2Y2NDsKLSAgICAgIGNhc2UgMTc3IDogCi0gICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5pNjRfdHJ1bmNfdV9mNjQ7Ci0gICAgICBjYXNlIDE3OCA6IAot
ICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfc19pMzI7Ci0gICAgICBjYXNl
IDE3OSA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2NvbnZlcnRfdV9pMzI7Ci0g
ICAgICBjYXNlIDE4MCA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX2NvbnZlcnRf
c19pNjQ7Ci0gICAgICBjYXNlIDE4MSA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMy
X2NvbnZlcnRfdV9pNjQ7Ci0gICAgICBjYXNlIDE4MiA6IAotICAgICAgICAgIHJldHVybiBPcGVy
YXRvcnMuZjMyX2RlbW90ZV9mNjQ7Ci0gICAgICBjYXNlIDE4MyA6IAotICAgICAgICAgIHJldHVy
biBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pMzI7Ci0gICAgICBjYXNlIDE4NCA6IAotICAgICAg
ICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfdV9pMzI7Ci0gICAgICBjYXNlIDE4NSA6
IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfc19pNjQ7Ci0gICAgICBj
YXNlIDE4NiA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2NvbnZlcnRfdV9pNjQ7
Ci0gICAgICBjYXNlIDE4NyA6IAotICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X3Byb21v
dGVfZjMyOwotICAgICAgY2FzZSAxODggOiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkz
Ml9yZWludGVycHJldF9mMzI7Ci0gICAgICBjYXNlIDE4OSA6IAotICAgICAgICAgIHJldHVybiBP
cGVyYXRvcnMuaTY0X3JlaW50ZXJwcmV0X2Y2NDsKLSAgICAgIGNhc2UgMTkwIDogCi0gICAgICAg
ICAgcmV0dXJuIE9wZXJhdG9ycy5mMzJfcmVpbnRlcnByZXRfaTMyOwotICAgICAgY2FzZSAxOTEg
OiAKLSAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmY2NF9yZWludGVycHJldF9pNjQ7Ci0gICAg
ICAKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gaW5zdHJfYmxvY2skcHJpbWUocywgX2VzKSB7
Ci0gIHdoaWxlKHRydWUpIHsKLSAgICB2YXIgZXMgPSBfZXM7Ci0gICAgdmFyIG1hdGNoID0gcGVl
ayhzKTsKLSAgICBpZiAobWF0Y2gpIHsKLSAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMF07Ci0g
ICAgICBpZiAobWF0Y2gkMSAhPT0gNSkgewotICAgICAgICBpZiAobWF0Y2gkMSAhPT0gMTEpIHsK
LSAgICAgICAgICB2YXIgcG9zID0gc1svKiBwb3MgKi8yXVswXTsKLSAgICAgICAgICB2YXIgZSRw
cmltZSA9IGluc3RyKHMpOwotICAgICAgICAgIF9lcyA9IC8qIDo6ICovWwotICAgICAgICAgICAg
U291cmNlLiRhdCRhdChlJHByaW1lLCByZWdpb24ocywgcG9zLCBwb3MpKSwKLSAgICAgICAgICAg
IGVzCi0gICAgICAgICAgXTsKLSAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgCi0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIGVzOwotICAgICAgICB9Ci0g
ICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGVzOwotICAgICAgfQotICAgIH0K
LSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBlczsKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9u
IGluc3RyX2Jsb2NrKHMpIHsKLSAgcmV0dXJuIExpc3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMs
IC8qIFtdICovMCkpOwotfQotCi1mdW5jdGlvbiAkJGNvbnN0KHMpIHsKLSAgdmFyIGMgPSBhdChp
bnN0cl9ibG9jaywgcyk7Ci0gIGV4cGVjdCgxMSwgcywgIkVORCBvcGNvZGUgZXhwZWN0ZWQiKTsK
LSAgcmV0dXJuIGM7Ci19Ci0KLWZ1bmN0aW9uIGlkKHMpIHsKLSAgdmFyIGJvID0gcGVlayhzKTsK
LSAgcmV0dXJuIEN1cnJ5Ll8yKExpYi5PcHRpb25bLyogbWFwICovMV0sIGZ1bmN0aW9uIChwYXJh
bSkgewotICAgICAgICAgICAgICBpZiAocGFyYW0gPiAxMSB8fCBwYXJhbSA8IDApIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZXJyb3Iocywgc1svKiBwb3MgKi8yXVswXSwgImludmFsaWQgc2Vj
dGlvbiBpZCIpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgIHN3aXRjaCAocGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAot
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBDdXN0b21TZWN0aW9uICovLTgwODAxMDIy
MDsKLSAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBUeXBlU2VjdGlvbiAqLzgzNjUwMTAzNTsKLSAgICAgICAgICAgICAgICAgIGNhc2Ug
MiA6IAotICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiBJbXBvcnRTZWN0aW9uICovNjk2
NTE3MzQ0OwotICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIEZ1bmNTZWN0aW9uICovMjA1NTU2NDQ5OwotICAgICAgICAgICAgICAgICAg
Y2FzZSA0IDogCi0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIFRhYmxlU2VjdGlvbiAq
LzEwMzE4NjQyMTU7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKLSAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLyogTWVtb3J5U2VjdGlvbiAqLy04NDAyMDMwNjg7Ci0gICAgICAgICAg
ICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogR2xvYmFs
U2VjdGlvbiAqLy04NzIzMTMxODI7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDcgOiAKLSAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogRXhwb3J0U2VjdGlvbiAqLy00NDA2Nzk3NTk7Ci0g
ICAgICAgICAgICAgICAgICBjYXNlIDggOiAKLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LyogU3RhcnRTZWN0aW9uICovMzk1NzIwMTMxOwotICAgICAgICAgICAgICAgICAgY2FzZSA5IDog
Ci0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIEVsZW1TZWN0aW9uICovNDQwMzgwNjYy
OwotICAgICAgICAgICAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAvKiBDb2RlU2VjdGlvbiAqLzEwMjExMzM4NDg7Ci0gICAgICAgICAgICAgICAgICBjYXNl
IDExIDogCi0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIERhdGFTZWN0aW9uICovNjY0
NDc1NDc7Ci0gICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0sIGJvKTsKLX0KLQotZnVuY3Rpb24gc2VjdGlvbl93aXRoX3Np
emUodGFnLCBmLCAkJGRlZmF1bHQsIHMpIHsKLSAgdmFyIG1hdGNoID0gaWQocyk7Ci0gIGlmICht
YXRjaCAmJiBDYW1sX29iai5jYW1sX2VxdWFsKG1hdGNoWzBdLCB0YWcpKSB7Ci0gICAgZ3VhcmQo
Z2V0LCBzKTsKLSAgICByZXR1cm4gc2l6ZWQoZiwgcyk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0
dXJuICQkZGVmYXVsdDsKLSAgfQotfQotCi1mdW5jdGlvbiBzZWN0aW9uKHRhZywgZiwgJCRkZWZh
dWx0LCBzKSB7Ci0gIHJldHVybiBzZWN0aW9uX3dpdGhfc2l6ZSh0YWcsIGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgICAgICAgcmV0dXJuIGY7Ci0gICAgICAgICAgICB9LCAkJGRlZmF1bHQsIHMpOwot
fQotCi1mdW5jdGlvbiB0eXBlX3NlY3Rpb24ocykgewotICByZXR1cm4gc2VjdGlvbigvKiBUeXBl
U2VjdGlvbiAqLzgzNjUwMTAzNSwgZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgICAgICAgICAgIHJl
dHVybiB2ZWMoZnVuY190eXBlLCBwYXJhbSk7Ci0gICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMp
OwotfQotCi1mdW5jdGlvbiBpbXBvcnRfa2luZChzKSB7Ci0gIHZhciBtYXRjaCA9IGd1YXJkKGdl
dCwgcyk7Ci0gIGlmIChtYXRjaCA+IDMgfHwgbWF0Y2ggPCAwKSB7Ci0gICAgcmV0dXJuIGVycm9y
KHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwgImludmFsaWQgaW1wb3J0IGtpbmQiKTsKLSAg
fQotICBlbHNlIHsKLSAgICBzd2l0Y2ggKG1hdGNoKSB7Ci0gICAgICBjYXNlIDAgOiAKLSAgICAg
ICAgICByZXR1cm4gLyogRnVuY0ltcG9ydCAqL0Jsb2NrLl9fKDAsIFthdCgkJHZhciwgcyldKTsK
LSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIHJldHVybiAvKiBUYWJsZUltcG9ydCAqL0Jsb2Nr
Ll9fKDEsIFt0YWJsZV90eXBlKHMpXSk7Ci0gICAgICBjYXNlIDIgOiAKLSAgICAgICAgICByZXR1
cm4gLyogTWVtb3J5SW1wb3J0ICovQmxvY2suX18oMiwgW21lbW9yeV90eXBlKHMpXSk7Ci0gICAg
ICBjYXNlIDMgOiAKLSAgICAgICAgICByZXR1cm4gLyogR2xvYmFsSW1wb3J0ICovQmxvY2suX18o
MywgW2dsb2JhbF90eXBlKHMpXSk7Ci0gICAgICAKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24g
JCRpbXBvcnQocykgewotICB2YXIgbW9kdWxlX25hbWUgPSBzdHJpbmcocyk7Ci0gIHZhciBpdGVt
X25hbWUgPSBzdHJpbmcocyk7Ci0gIHZhciBpa2luZCA9IGF0KGltcG9ydF9raW5kLCBzKTsKLSAg
cmV0dXJuIC8qIHJlY29yZCAqL1sKLSAgICAgICAgICAvKiBtb2R1bGVfbmFtZSAqL21vZHVsZV9u
YW1lLAotICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL2l0ZW1fbmFtZSwKLSAgICAgICAgICAvKiBp
a2luZCAqL2lraW5kCi0gICAgICAgIF07Ci19Ci0KLWZ1bmN0aW9uIGltcG9ydF9zZWN0aW9uKHMp
IHsKLSAgcmV0dXJuIHNlY3Rpb24oLyogSW1wb3J0U2VjdGlvbiAqLzY5NjUxNzM0NCwgZnVuY3Rp
b24gKHBhcmFtKSB7Ci0gICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY3Rpb24gKHBhcmFtKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdCgkJGltcG9ydCwgcGFyYW0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOwotICAgICAgICAgICAgfSwgLyogW10g
Ki8wLCBzKTsKLX0KLQotZnVuY3Rpb24gZnVuY19zZWN0aW9uKHMpIHsKLSAgcmV0dXJuIHNlY3Rp
b24oLyogRnVuY1NlY3Rpb24gKi8yMDU1NTY0NDksIGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAg
ICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYXQoJCR2YXIsIHBhcmFtKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0sIHBhcmFtKTsKLSAgICAgICAgICAgIH0sIC8qIFtdICovMCwgcyk7Ci19Ci0KLWZ1bmN0aW9u
IHRhYmxlKHMpIHsKLSAgdmFyIHR0eXBlID0gdGFibGVfdHlwZShzKTsKLSAgcmV0dXJuIC8qIHJl
Y29yZCAqL1svKiB0dHlwZSAqL3R0eXBlXTsKLX0KLQotZnVuY3Rpb24gdGFibGVfc2VjdGlvbihz
KSB7Ci0gIHJldHVybiBzZWN0aW9uKC8qIFRhYmxlU2VjdGlvbiAqLzEwMzE4NjQyMTUsIGZ1bmN0
aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQodGFibGUsIHBhcmFtKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0sIHBhcmFtKTsKLSAgICAgICAgICAgIH0sIC8qIFtdICov
MCwgcyk7Ci19Ci0KLWZ1bmN0aW9uIG1lbW9yeShzKSB7Ci0gIHZhciBtdHlwZSA9IG1lbW9yeV90
eXBlKHMpOwotICByZXR1cm4gLyogcmVjb3JkICovWy8qIG10eXBlICovbXR5cGVdOwotfQotCi1m
dW5jdGlvbiBtZW1vcnlfc2VjdGlvbihzKSB7Ci0gIHJldHVybiBzZWN0aW9uKC8qIE1lbW9yeVNl
Y3Rpb24gKi8tODQwMjAzMDY4LCBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAgcmV0
dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGF0KG1lbW9yeSwgcGFyYW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0p
OwotICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKLX0KLQotZnVuY3Rpb24gZ2xvYmFsKHMp
IHsKLSAgdmFyIGd0eXBlID0gZ2xvYmFsX3R5cGUocyk7Ci0gIHZhciB2YWx1ZSA9ICQkY29uc3Qo
cyk7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAgICAgLyogZ3R5cGUgKi9ndHlwZSwK
LSAgICAgICAgICAvKiB2YWx1ZSAqL3ZhbHVlCi0gICAgICAgIF07Ci19Ci0KLWZ1bmN0aW9uIGds
b2JhbF9zZWN0aW9uKHMpIHsKLSAgcmV0dXJuIHNlY3Rpb24oLyogR2xvYmFsU2VjdGlvbiAqLy04
NzIzMTMxODIsIGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1
bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXQoZ2xv
YmFsLCBwYXJhbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbSk7Ci0gICAgICAg
ICAgICB9LCAvKiBbXSAqLzAsIHMpOwotfQotCi1mdW5jdGlvbiBleHBvcnRfa2luZChzKSB7Ci0g
IHZhciBtYXRjaCA9IGd1YXJkKGdldCwgcyk7Ci0gIGlmIChtYXRjaCA+IDMgfHwgbWF0Y2ggPCAw
KSB7Ci0gICAgcmV0dXJuIGVycm9yKHMsIHNbLyogcG9zICovMl1bMF0gLSAxIHwgMCwgImludmFs
aWQgZXhwb3J0IGtpbmQiKTsKLSAgfQotICBlbHNlIHsKLSAgICBzd2l0Y2ggKG1hdGNoKSB7Ci0g
ICAgICBjYXNlIDAgOiAKLSAgICAgICAgICByZXR1cm4gLyogRnVuY0V4cG9ydCAqLzA7Ci0gICAg
ICBjYXNlIDEgOiAKLSAgICAgICAgICByZXR1cm4gLyogVGFibGVFeHBvcnQgKi8xOwotICAgICAg
Y2FzZSAyIDogCi0gICAgICAgICAgcmV0dXJuIC8qIE1lbW9yeUV4cG9ydCAqLzI7Ci0gICAgICBj
YXNlIDMgOiAKLSAgICAgICAgICByZXR1cm4gLyogR2xvYmFsRXhwb3J0ICovMzsKLSAgICAgIAot
ICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiAkJGV4cG9ydChzKSB7Ci0gIHZhciBuYW1lID0gc3Ry
aW5nKHMpOwotICB2YXIgZWtpbmQgPSBhdChleHBvcnRfa2luZCwgcyk7Ci0gIHZhciBpdGVtID0g
YXQoJCR2YXIsIHMpOwotICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgIC8qIG5hbWUg
Ki9uYW1lLAotICAgICAgICAgIC8qIGVraW5kICovZWtpbmQsCi0gICAgICAgICAgLyogaXRlbSAq
L2l0ZW0KLSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24gZXhwb3J0X3NlY3Rpb24ocykgewotICBy
ZXR1cm4gc2VjdGlvbigvKiBFeHBvcnRTZWN0aW9uICovLTQ0MDY3OTc1OSwgZnVuY3Rpb24gKHBh
cmFtKSB7Ci0gICAgICAgICAgICAgIHJldHVybiB2ZWMoZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhdCgkJGV4cG9ydCwgcGFyYW0pOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOwotICAgICAgICAgICAgfSwgLyogW10gKi8wLCBz
KTsKLX0KLQotZnVuY3Rpb24gc3RhcnRfc2VjdGlvbihzKSB7Ci0gIHJldHVybiBzZWN0aW9uKC8q
IFN0YXJ0U2VjdGlvbiAqLzM5NTcyMDEzMSwgZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgICAgICAg
ICAgIHJldHVybiAvKiBTb21lICovW2F0KCQkdmFyLCBwYXJhbSldOwotICAgICAgICAgICAgfSwg
LyogTm9uZSAqLzAsIHMpOwotfQotCi1mdW5jdGlvbiBsb2NhbChzKSB7Ci0gIHZhciBuID0gbGVu
MzIocyk7Ci0gIHZhciB0ID0gdmFsdWVfdHlwZShzKTsKLSAgcmV0dXJuIEN1cnJ5Ll8yKExpYi5M
aXN0Wy8qIG1ha2UgKi8wXSwgbiwgdCk7Ci19Ci0KLWZ1bmN0aW9uIGNvZGUoXywgcykgewotICB2
YXIgbG9jYWxzID0gTGlzdC5mbGF0dGVuKHZlYyhsb2NhbCwgcykpOwotICB2YXIgYm9keSA9IExp
c3QucmV2KGluc3RyX2Jsb2NrJHByaW1lKHMsIC8qIFtdICovMCkpOwotICBleHBlY3QoMTEsIHMs
ICJFTkQgb3Bjb2RlIGV4cGVjdGVkIik7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAg
ICAgLyogZnR5cGUgKi9Tb3VyY2UuJGF0JGF0KC0xLCBTb3VyY2Uubm9fcmVnaW9uKSwKLSAgICAg
ICAgICAvKiBsb2NhbHMgKi9sb2NhbHMsCi0gICAgICAgICAgLyogYm9keSAqL2JvZHkKLSAgICAg
ICAgXTsKLX0KLQotZnVuY3Rpb24gY29kZV9zZWN0aW9uKHMpIHsKLSAgcmV0dXJuIHNlY3Rpb24o
LyogQ29kZVNlY3Rpb24gKi8xMDIxMTMzODQ4LCBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAg
ICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGF0KGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZWQoY29kZSwgcGFyYW0pOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwgcGFyYW0pOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfSwgcGFyYW0pOwotICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKLX0KLQotZnVuY3Rp
b24gc2VnbWVudChkYXQsIHMpIHsKLSAgdmFyIGluZGV4ID0gYXQoJCR2YXIsIHMpOwotICB2YXIg
b2Zmc2V0ID0gJCRjb25zdChzKTsKLSAgdmFyIGluaXQgPSBDdXJyeS5fMShkYXQsIHMpOwotICBy
ZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgIC8qIGluZGV4ICovaW5kZXgsCi0gICAgICAg
ICAgLyogb2Zmc2V0ICovb2Zmc2V0LAotICAgICAgICAgIC8qIGluaXQgKi9pbml0Ci0gICAgICAg
IF07Ci19Ci0KLWZ1bmN0aW9uIHRhYmxlX3NlZ21lbnQocykgewotICByZXR1cm4gc2VnbWVudChm
dW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHZlYyhmdW5jdGlvbiAocGFy
YW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0KCQkdmFyLCBwYXJhbSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJhbSk7Ci0gICAgICAgICAgICB9LCBzKTsK
LX0KLQotZnVuY3Rpb24gZWxlbV9zZWN0aW9uKHMpIHsKLSAgcmV0dXJuIHNlY3Rpb24oLyogRWxl
bVNlY3Rpb24gKi80NDAzODA2NjIsIGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICBy
ZXR1cm4gdmVjKGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gYXQodGFibGVfc2VnbWVudCwgcGFyYW0pOwotICAgICAgICAgICAgICAgICAgICAgICAg
fSwgcGFyYW0pOwotICAgICAgICAgICAgfSwgLyogW10gKi8wLCBzKTsKLX0KLQotZnVuY3Rpb24g
bWVtb3J5X3NlZ21lbnQocykgewotICByZXR1cm4gc2VnbWVudChzdHJpbmcsIHMpOwotfQotCi1m
dW5jdGlvbiBkYXRhX3NlY3Rpb24ocykgewotICByZXR1cm4gc2VjdGlvbigvKiBEYXRhU2VjdGlv
biAqLzY2NDQ3NTQ3LCBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHZl
YyhmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0
KG1lbW9yeV9zZWdtZW50LCBwYXJhbSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LCBwYXJh
bSk7Ci0gICAgICAgICAgICB9LCAvKiBbXSAqLzAsIHMpOwotfQotCi1mdW5jdGlvbiBjdXN0b20o
c2l6ZSwgcykgewotICB2YXIgc3RhcnQgPSBzWy8qIHBvcyAqLzJdWzBdOwotICBzdHJpbmcocyk7
Ci0gIHZhciBwYXJ0aWFsX2FyZyA9IHNpemUgLSAoc1svKiBwb3MgKi8yXVswXSAtIHN0YXJ0IHwg
MCkgfCAwOwotICB2YXIgcGFydGlhbF9hcmckMSA9IGZ1bmN0aW9uIChwYXJhbSkgewotICAgIHJl
dHVybiBza2lwKHBhcnRpYWxfYXJnLCBwYXJhbSk7Ci0gIH07Ci0gIChmdW5jdGlvbiAocGFyYW0p
IHsKLSAgICAgICAgcmV0dXJuIGd1YXJkKHBhcnRpYWxfYXJnJDEsIHBhcmFtKTsKLSAgICAgIH0o
cykpOwotICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci19Ci0KLWZ1bmN0aW9uIGN1c3RvbV9zZWN0aW9u
KHMpIHsKLSAgcmV0dXJuIHNlY3Rpb25fd2l0aF9zaXplKC8qIEN1c3RvbVNlY3Rpb24gKi8tODA4
MDEwMjIwLCBjdXN0b20sIC8qIGZhbHNlICovMCwgcyk7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJhdGUo
ZiwgcykgewotICB3aGlsZSh0cnVlKSB7Ci0gICAgaWYgKEN1cnJ5Ll8xKGYsIHMpKSB7Ci0gICAg
ICBjb250aW51ZSA7Ci0gICAgICAKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gMDsK
LSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIG1vZHVsZV8ocykgewotICB2YXIgbWFnaWMgPSB1
MzIocyk7Ci0gICQkcmVxdWlyZSgrKG1hZ2ljID09PSAxODM2Mjc4MDE2KSwgcywgMCwgIm1hZ2lj
IGhlYWRlciBub3QgZGV0ZWN0ZWQiKTsKLSAgdmFyIHZlcnNpb24gPSB1MzIocyk7Ci0gICQkcmVx
dWlyZSgrKHZlcnNpb24gPT09IEVuY29kZS52ZXJzaW9uKSwgcywgNCwgInVua25vd24gYmluYXJ5
IHZlcnNpb24iKTsKLSAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7Ci0gIHZhciB0eXBlcyA9
IHR5cGVfc2VjdGlvbihzKTsKLSAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwgcyk7Ci0gIHZhciBp
bXBvcnRzID0gaW1wb3J0X3NlY3Rpb24ocyk7Ci0gIGl0ZXJhdGUoY3VzdG9tX3NlY3Rpb24sIHMp
OwotICB2YXIgZnVuY190eXBlcyA9IGZ1bmNfc2VjdGlvbihzKTsKLSAgaXRlcmF0ZShjdXN0b21f
c2VjdGlvbiwgcyk7Ci0gIHZhciB0YWJsZXMgPSB0YWJsZV9zZWN0aW9uKHMpOwotICBpdGVyYXRl
KGN1c3RvbV9zZWN0aW9uLCBzKTsKLSAgdmFyIG1lbW9yaWVzID0gbWVtb3J5X3NlY3Rpb24ocyk7
Ci0gIGl0ZXJhdGUoY3VzdG9tX3NlY3Rpb24sIHMpOwotICB2YXIgZ2xvYmFscyA9IGdsb2JhbF9z
ZWN0aW9uKHMpOwotICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKLSAgdmFyICQkZXhwb3J0
cyA9IGV4cG9ydF9zZWN0aW9uKHMpOwotICBpdGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKLSAg
dmFyIHN0YXJ0ID0gc3RhcnRfc2VjdGlvbihzKTsKLSAgaXRlcmF0ZShjdXN0b21fc2VjdGlvbiwg
cyk7Ci0gIHZhciBlbGVtcyA9IGVsZW1fc2VjdGlvbihzKTsKLSAgaXRlcmF0ZShjdXN0b21fc2Vj
dGlvbiwgcyk7Ci0gIHZhciBmdW5jX2JvZGllcyA9IGNvZGVfc2VjdGlvbihzKTsKLSAgaXRlcmF0
ZShjdXN0b21fc2VjdGlvbiwgcyk7Ci0gIHZhciBkYXRhID0gZGF0YV9zZWN0aW9uKHMpOwotICBp
dGVyYXRlKGN1c3RvbV9zZWN0aW9uLCBzKTsKLSAgJCRyZXF1aXJlKCsoc1svKiBwb3MgKi8yXVsw
XSA9PT0gc1svKiBieXRlcyAqLzFdLmxlbmd0aCksIHMsIHNbLyogYnl0ZXMgKi8xXS5sZW5ndGgs
ICJqdW5rIGFmdGVyIGxhc3Qgc2VjdGlvbiIpOwotICAkJHJlcXVpcmUoKyhMaXN0Lmxlbmd0aChm
dW5jX3R5cGVzKSA9PT0gTGlzdC5sZW5ndGgoZnVuY19ib2RpZXMpKSwgcywgc1svKiBieXRlcyAq
LzFdLmxlbmd0aCwgImZ1bmN0aW9uIGFuZCBjb2RlIHNlY3Rpb24gaGF2ZSBpbmNvbnNpc3RlbnQg
bGVuZ3RocyIpOwotICB2YXIgZnVuY3MgPSBMaXN0Lm1hcDIoZnVuY3Rpb24gKHQsIGYpIHsKLSAg
ICAgICAgdmFyIGluaXQgPSBmWy8qIGl0ICovMV07Ci0gICAgICAgIHJldHVybiBTb3VyY2UuJGF0
JGF0KC8qIHJlY29yZCAqL1sKLSAgICAgICAgICAgICAgICAgICAgLyogZnR5cGUgKi90LAotICAg
ICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8qIGxvY2FscyAqLzFdLAotICAgICAg
ICAgICAgICAgICAgICAvKiBib2R5ICovaW5pdFsvKiBib2R5ICovMl0KLSAgICAgICAgICAgICAg
ICAgIF0sIGZbLyogYXQgKi8wXSk7Ci0gICAgICB9LCBmdW5jX3R5cGVzLCBmdW5jX2JvZGllcyk7
Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAgICAgLyogdHlwZXMgKi90eXBlcywKLSAg
ICAgICAgICAvKiBnbG9iYWxzICovZ2xvYmFscywKLSAgICAgICAgICAvKiB0YWJsZXMgKi90YWJs
ZXMsCi0gICAgICAgICAgLyogbWVtb3JpZXMgKi9tZW1vcmllcywKLSAgICAgICAgICAvKiBmdW5j
cyAqL2Z1bmNzLAotICAgICAgICAgIC8qIHN0YXJ0ICovc3RhcnQsCi0gICAgICAgICAgLyogZWxl
bXMgKi9lbGVtcywKLSAgICAgICAgICAvKiBkYXRhICovZGF0YSwKLSAgICAgICAgICAvKiBpbXBv
cnRzICovaW1wb3J0cywKLSAgICAgICAgICAvKiBleHBvcnRzICovJCRleHBvcnRzCi0gICAgICAg
IF07Ci19Ci0KLWZ1bmN0aW9uIGRlY29kZShuYW1lLCBicykgewotICByZXR1cm4gYXQobW9kdWxl
Xywgc3RyZWFtKG5hbWUsIGJzKSk7Ci19Ci0KLWV4cG9ydHMuQ29kZSAgID0gQ29kZSQxOwotZXhw
b3J0cy5kZWNvZGUgPSBkZWNvZGU7Ci0vKiBDb2RlIE5vdCBhIHB1cmUgbW9kdWxlICovCi0vLy8v
Ly8vLyBlbmQgb2YgZGVjb2RlLmpzIC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07
Ci0KLQotICBfcmVnaXN0cnlbJ2VuY29kZSddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9y
dHMgPSB7fTsKLS8vLy8vLy8vIHN0YXJ0IG9mIGVuY29kZS5qcyAvLy8vLy8vLwotLy8gR2VuZXJh
dGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJF
Ci0ndXNlIHN0cmljdCc7Ci0KLXZhciBGMzIgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUo
Ii4vZjMyIik7Ci12YXIgRjY0ICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2Y2NCIp
OwotdmFyIExpYiAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9saWIiKTsKLXZhciBD
aGFyICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jaGFy
Iik7Ci12YXIgTGlzdCAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvbGlzdCIpOwotdmFyIEJ5dGVzICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2J5dGVzIik7Ci12YXIgQ3VycnkgICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKLXZhciAkJEVycm9yICAgICAgICAg
ICAgICAgICA9IHJlcXVpcmUoIi4vZXJyb3IiKTsKLXZhciBCdWZmZXIgICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9idWZmZXIiKTsKLXZhciBTb3VyY2UgICAg
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc291cmNlIik7Ci12YXIgQ2FtbF9vYmogICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9vYmoiKTsKLXZhciBD
YW1sX2ludDY0ICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1s
X2ludDY0Iik7Ci12YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0
Zm9ybS9saWIvanMvY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKLQotdmFyIENvZGUgPSAkJEVy
cm9yLk1ha2UoLyogbW9kdWxlICovW10pOwotCi12YXIgQ29kZSQxID0gQ29kZVsvKiBFcnJvciAq
LzBdOwotCi1mdW5jdGlvbiBzdHJlYW0oKSB7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAg
ICAgICAgLyogYnVmICovQnVmZmVyLmNyZWF0ZSg4MTkyKSwKLSAgICAgICAgICAvKiBwYXRjaGVz
ICovWy8qIFtdICovMF0KLSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24gcGF0Y2gocywgcG9zLCBi
KSB7Ci0gIHNbLyogcGF0Y2hlcyAqLzFdWzBdID0gLyogOjogKi9bCi0gICAgLyogdHVwbGUgKi9b
Ci0gICAgICBwb3MsCi0gICAgICBiCi0gICAgXSwKLSAgICBzWy8qIHBhdGNoZXMgKi8xXVswXQot
ICBdOwotICByZXR1cm4gLyogKCkgKi8wOwotfQotCi1mdW5jdGlvbiBlbmNvZGUobSkgewotICB2
YXIgcyA9IHN0cmVhbSgvKiAoKSAqLzApOwotICB2YXIgdTggPSBmdW5jdGlvbiAoaSkgewotICAg
IHZhciBiID0gQ2hhci5jaHIoaSAmIDI1NSk7Ci0gICAgcmV0dXJuIEJ1ZmZlci5hZGRfY2hhcihz
Wy8qIGJ1ZiAqLzBdLCBiKTsKLSAgfTsKLSAgdmFyIHUxNiA9IGZ1bmN0aW9uIChpKSB7Ci0gICAg
dTgoaSAmIDI1NSk7Ci0gICAgcmV0dXJuIHU4KChpID4+PiA4KSk7Ci0gIH07Ci0gIHZhciB1MzIg
PSBmdW5jdGlvbiAoaSkgewotICAgIHUxNihpICYgNjU1MzUpOwotICAgIHJldHVybiB1MTYoKGkg
Pj4gMTYpKTsKLSAgfTsKLSAgdmFyIHZ1NjQgPSBmdW5jdGlvbiAoX2kpIHsKLSAgICB3aGlsZSh0
cnVlKSB7Ci0gICAgICB2YXIgaSA9IF9pOwotICAgICAgdmFyIGIgPSBpWzFdICYgLyogbG8gKi8x
MjcgfCAwOwotICAgICAgaWYgKENhbWxfaW50NjQubGUoLyogaW50NjQgKi9bCi0gICAgICAgICAg
ICAgIC8qIGhpICovMCwKLSAgICAgICAgICAgICAgLyogbG8gKi8wCi0gICAgICAgICAgICBdLCBp
KSAmJiBDYW1sX2ludDY0Lmx0KGksIC8qIGludDY0ICovWwotICAgICAgICAgICAgICAvKiBoaSAq
LzAsCi0gICAgICAgICAgICAgIC8qIGxvICovMTI4Ci0gICAgICAgICAgICBdKSkgewotICAgICAg
ICByZXR1cm4gdTgoYik7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdTgoYiB8IDEy
OCk7Ci0gICAgICAgIF9pID0gQ2FtbF9pbnQ2NC5sc3JfKGksIDcpOwotICAgICAgICBjb250aW51
ZSA7Ci0gICAgICAgIAotICAgICAgfQotICAgIH07Ci0gIH07Ci0gIHZhciB2czY0ID0gZnVuY3Rp
b24gKF9pKSB7Ci0gICAgd2hpbGUodHJ1ZSkgewotICAgICAgdmFyIGkgPSBfaTsKLSAgICAgIHZh
ciBiID0gaVsxXSAmIC8qIGxvICovMTI3IHwgMDsKLSAgICAgIGlmIChDYW1sX2ludDY0LmxlKC8q
IGludDY0ICovWwotICAgICAgICAgICAgICAvKiBoaSAqLy0xLAotICAgICAgICAgICAgICAvKiBs
byAqLzQyOTQ5NjcyMzIKLSAgICAgICAgICAgIF0sIGkpICYmIENhbWxfaW50NjQubHQoaSwgLyog
aW50NjQgKi9bCi0gICAgICAgICAgICAgIC8qIGhpICovMCwKLSAgICAgICAgICAgICAgLyogbG8g
Ki82NAotICAgICAgICAgICAgXSkpIHsKLSAgICAgICAgcmV0dXJuIHU4KGIpOwotICAgICAgfQot
ICAgICAgZWxzZSB7Ci0gICAgICAgIHU4KGIgfCAxMjgpOwotICAgICAgICBfaSA9IENhbWxfaW50
NjQuYXNyXyhpLCA3KTsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAg
ICB9OwotICB9OwotICB2YXIgdnUzMiA9IGZ1bmN0aW9uIChpKSB7Ci0gICAgcmV0dXJuIHZ1NjQo
Q2FtbF9pbnQ2NC5hbmRfKENhbWxfaW50NjQub2ZfaW50MzIoaSksIC8qIGludDY0ICovWwotICAg
ICAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCi0gICAgICAgICAgICAgICAgICAgIC8qIGxvICov
NDI5NDk2NzI5NQotICAgICAgICAgICAgICAgICAgXSkpOwotICB9OwotICB2YXIgbGVuID0gZnVu
Y3Rpb24gKGkpIHsKLSAgICBpZiAoaSAhPT0gaSkgewotICAgICAgQ3VycnkuXzIoQ29kZVsvKiBl
cnJvciAqLzJdLCBTb3VyY2Uubm9fcmVnaW9uLCAiY2Fubm90IGVuY29kZSBsZW5ndGggd2l0aCBt
b3JlIHRoYW4gMzIgYml0Iik7Ci0gICAgfQotICAgIHJldHVybiB2dTMyKGkpOwotICB9OwotICB2
YXIgYm9vbCA9IGZ1bmN0aW9uIChiKSB7Ci0gICAgdmFyIGkgPSBiID8gMSA6IDA7Ci0gICAgcmV0
dXJuIHZ1NjQoQ2FtbF9pbnQ2NC5hbmRfKENhbWxfaW50NjQub2ZfaW50MzIoaSksIC8qIGludDY0
ICovWwotICAgICAgICAgICAgICAgICAgICAvKiBoaSAqLzAsCi0gICAgICAgICAgICAgICAgICAg
IC8qIGxvICovMQotICAgICAgICAgICAgICAgICAgXSkpOwotICB9OwotICB2YXIgc3RyaW5nID0g
ZnVuY3Rpb24gKGJzKSB7Ci0gICAgbGVuKGJzLmxlbmd0aCk7Ci0gICAgcmV0dXJuIEJ1ZmZlci5h
ZGRfc3RyaW5nKHNbLyogYnVmICovMF0sIGJzKTsKLSAgfTsKLSAgdmFyIHZlYyA9IGZ1bmN0aW9u
IChmLCB4cykgewotICAgIGxlbihMaXN0Lmxlbmd0aCh4cykpOwotICAgIHJldHVybiBMaXN0Lml0
ZXIoZiwgeHMpOwotICB9OwotICB2YXIgZ2FwMzIgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdmFyIHAg
PSBCdWZmZXIubGVuZ3RoKHNbLyogYnVmICovMF0pOwotICAgIHUzMigwKTsKLSAgICB1OCgwKTsK
LSAgICByZXR1cm4gcDsKLSAgfTsKLSAgdmFyIHBhdGNoX2dhcDMyID0gZnVuY3Rpb24gKHAsIG4p
IHsKLSAgICBpZiAobiA+IDI2ODQzNTQ1NSkgewotICAgICAgdGhyb3cgWwotICAgICAgICAgICAg
Q2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9p
bnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCi0gICAgICAgICAgICAgIDgw
LAotICAgICAgICAgICAgICA2Ci0gICAgICAgICAgICBdCi0gICAgICAgICAgXTsKLSAgICB9Ci0g
ICAgcGF0Y2gocywgcCwgQ2hhci5jaHIoKG4gfCAxMjgpICYgMjU1KSk7Ci0gICAgcGF0Y2gocywg
cCArIDEgfCAwLCBDaGFyLmNocigoKG4gPj4+IDcpIHwgMTI4KSAmIDI1NSkpOwotICAgIHBhdGNo
KHMsIHAgKyAyIHwgMCwgQ2hhci5jaHIoKChuID4+PiAxNCkgfCAxMjgpICYgMjU1KSk7Ci0gICAg
cGF0Y2gocywgcCArIDMgfCAwLCBDaGFyLmNocigoKG4gPj4+IDIxKSB8IDEyOCkgJiAyNTUpKTsK
LSAgICByZXR1cm4gcGF0Y2gocywgcCArIDQgfCAwLCBDaGFyLmNocigobiA+Pj4gMjgpICYgMjU1
KSk7Ci0gIH07Ci0gIHZhciB2YWx1ZV90eXBlID0gZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgc3dp
dGNoIChwYXJhbSkgewotICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgcmV0dXJuIHZzNjQoLyog
aW50NjQgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgLyogaGkgKi8tMSwKLSAgICAgICAgICAg
ICAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyOTUKLSAgICAgICAgICAgICAgICAgICAgXSk7Ci0g
ICAgICBjYXNlIDEgOiAKLSAgICAgICAgICByZXR1cm4gdnM2NCgvKiBpbnQ2NCAqL1sKLSAgICAg
ICAgICAgICAgICAgICAgICAvKiBoaSAqLy0xLAotICAgICAgICAgICAgICAgICAgICAgIC8qIGxv
ICovNDI5NDk2NzI5NAotICAgICAgICAgICAgICAgICAgICBdKTsKLSAgICAgIGNhc2UgMiA6IAot
ICAgICAgICAgIHJldHVybiB2czY0KC8qIGludDY0ICovWwotICAgICAgICAgICAgICAgICAgICAg
IC8qIGhpICovLTEsCi0gICAgICAgICAgICAgICAgICAgICAgLyogbG8gKi80Mjk0OTY3MjkzCi0g
ICAgICAgICAgICAgICAgICAgIF0pOwotICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgcmV0dXJu
IHZzNjQoLyogaW50NjQgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgLyogaGkgKi8tMSwKLSAg
ICAgICAgICAgICAgICAgICAgICAvKiBsbyAqLzQyOTQ5NjcyOTIKLSAgICAgICAgICAgICAgICAg
ICAgXSk7Ci0gICAgICAKLSAgICB9Ci0gIH07Ci0gIHZhciBzdGFja190eXBlID0gZnVuY3Rpb24g
KHBhcmFtKSB7Ci0gICAgaWYgKHBhcmFtKSB7Ci0gICAgICBpZiAocGFyYW1bMV0pIHsKLSAgICAg
ICAgcmV0dXJuIEN1cnJ5Ll8yKENvZGVbLyogZXJyb3IgKi8yXSwgU291cmNlLm5vX3JlZ2lvbiwg
ImNhbm5vdCBlbmNvZGUgc3RhY2sgdHlwZSB3aXRoIGFyaXR5ID4gMSAoeWV0KSIpOwotICAgICAg
fQotICAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiB2YWx1ZV90eXBlKHBhcmFtWzBdKTsKLSAg
ICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gdnM2NCgvKiBpbnQ2NCAqL1sK
LSAgICAgICAgICAgICAgICAgIC8qIGhpICovLTEsCi0gICAgICAgICAgICAgICAgICAvKiBsbyAq
LzQyOTQ5NjcyMzIKLSAgICAgICAgICAgICAgICBdKTsKLSAgICB9Ci0gIH07Ci0gIHZhciBmdW5j
X3R5cGUgPSBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICB2czY0KC8qIGludDY0ICovWwotICAgICAg
ICAgIC8qIGhpICovLTEsCi0gICAgICAgICAgLyogbG8gKi80Mjk0OTY3MjY0Ci0gICAgICAgIF0p
OwotICAgIHZlYyh2YWx1ZV90eXBlLCBwYXJhbVswXSk7Ci0gICAgcmV0dXJuIHZlYyh2YWx1ZV90
eXBlLCBwYXJhbVsxXSk7Ci0gIH07Ci0gIHZhciBsaW1pdHMgPSBmdW5jdGlvbiAodnUsIHBhcmFt
KSB7Ci0gICAgdmFyIG1heCA9IHBhcmFtWy8qIG1heCAqLzFdOwotICAgIGJvb2woKyhtYXggIT09
IC8qIE5vbmUgKi8wKSk7Ci0gICAgQ3VycnkuXzEodnUsIHBhcmFtWy8qIG1pbiAqLzBdKTsKLSAg
ICByZXR1cm4gQ3VycnkuXzIoTGliLk9wdGlvblsvKiBhcHAgKi8yXSwgdnUsIG1heCk7Ci0gIH07
Ci0gIHZhciB0YWJsZV90eXBlID0gZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgdnM2NCgvKiBpbnQ2
NCAqL1sKLSAgICAgICAgICAvKiBoaSAqLy0xLAotICAgICAgICAgIC8qIGxvICovNDI5NDk2NzI4
MAotICAgICAgICBdKTsKLSAgICByZXR1cm4gbGltaXRzKHZ1MzIsIHBhcmFtWzBdKTsKLSAgfTsK
LSAgdmFyIG1lbW9yeV90eXBlID0gZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgcmV0dXJuIGxpbWl0
cyh2dTMyLCBwYXJhbVswXSk7Ci0gIH07Ci0gIHZhciBnbG9iYWxfdHlwZSA9IGZ1bmN0aW9uIChw
YXJhbSkgewotICAgIHZhbHVlX3R5cGUocGFyYW1bMF0pOwotICAgIHZhciBwYXJhbSQxID0gcGFy
YW1bMV07Ci0gICAgaWYgKHBhcmFtJDEgIT09IDApIHsKLSAgICAgIHJldHVybiB1OCgxKTsKLSAg
ICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gdTgoMCk7Ci0gICAgfQotICB9OwotICB2YXIg
bWVtb3AgPSBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICB2dTMyKHBhcmFtWy8qIGFsaWduICovMV0p
OwotICAgIHJldHVybiB2dTMyKHBhcmFtWy8qIG9mZnNldCAqLzJdKTsKLSAgfTsKLSAgdmFyICQk
dmFyID0gZnVuY3Rpb24gKHgpIHsKLSAgICByZXR1cm4gdnUzMih4Wy8qIGl0ICovMV0pOwotICB9
OwotICB2YXIgaW5zdHIgPSBmdW5jdGlvbiAoZSkgewotICAgIHZhciBtYXRjaCA9IGVbLyogaXQg
Ki8xXTsKLSAgICBpZiAodHlwZW9mIG1hdGNoID09PSAibnVtYmVyIikgewotICAgICAgc3dpdGNo
IChtYXRjaCkgewotICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgIHJldHVybiB1OCgwKTsK
LSAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICByZXR1cm4gdTgoMSk7Ci0gICAgICAgIGNh
c2UgMiA6IAotICAgICAgICAgICAgcmV0dXJuIHU4KDE1KTsKLSAgICAgICAgY2FzZSAzIDogCi0g
ICAgICAgICAgICByZXR1cm4gdTgoMjYpOwotICAgICAgICBjYXNlIDQgOiAKLSAgICAgICAgICAg
IHJldHVybiB1OCgyNyk7Ci0gICAgICAgIGNhc2UgNSA6IAotICAgICAgICAgICAgdTgoNjMpOwot
ICAgICAgICAgICAgcmV0dXJuIHU4KDApOwotICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAg
IHU4KDY0KTsKLSAgICAgICAgICAgIHJldHVybiB1OCgwKTsKLSAgICAgICAgCi0gICAgICB9Ci0g
ICAgfQotICAgIGVsc2UgewotICAgICAgc3dpdGNoIChtYXRjaC50YWcgfCAwKSB7Ci0gICAgICAg
IGNhc2UgMCA6IAotICAgICAgICAgICAgdTgoMik7Ci0gICAgICAgICAgICBzdGFja190eXBlKG1h
dGNoWzBdKTsKLSAgICAgICAgICAgIExpc3QuaXRlcihpbnN0ciwgbWF0Y2hbMV0pOwotICAgICAg
ICAgICAgcmV0dXJuIHU4KDExKTsKLSAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICB1OCgz
KTsKLSAgICAgICAgICAgIHN0YWNrX3R5cGUobWF0Y2hbMF0pOwotICAgICAgICAgICAgTGlzdC5p
dGVyKGluc3RyLCBtYXRjaFsxXSk7Ci0gICAgICAgICAgICByZXR1cm4gdTgoMTEpOwotICAgICAg
ICBjYXNlIDIgOiAKLSAgICAgICAgICAgIHZhciBlczIgPSBtYXRjaFsyXTsKLSAgICAgICAgICAg
IHU4KDQpOwotICAgICAgICAgICAgc3RhY2tfdHlwZShtYXRjaFswXSk7Ci0gICAgICAgICAgICBM
aXN0Lml0ZXIoaW5zdHIsIG1hdGNoWzFdKTsKLSAgICAgICAgICAgIGlmIChlczIgIT09IC8qIFtd
ICovMCkgewotICAgICAgICAgICAgICB1OCg1KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IExpc3QuaXRlcihpbnN0ciwgZXMyKTsKLSAgICAgICAgICAgIHJldHVybiB1OCgxMSk7Ci0gICAg
ICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgdTgoMTIpOwotICAgICAgICAgICAgcmV0dXJuIHZ1
MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7Ci0gICAgICAgIGNhc2UgNCA6IAotICAgICAgICAgICAg
dTgoMTMpOwotICAgICAgICAgICAgcmV0dXJuIHZ1MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7Ci0g
ICAgICAgIGNhc2UgNSA6IAotICAgICAgICAgICAgdTgoMTQpOwotICAgICAgICAgICAgdmVjKCQk
dmFyLCBtYXRjaFswXSk7Ci0gICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFsxXVsvKiBpdCAq
LzFdKTsKLSAgICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgICB1OCgxNik7Ci0gICAgICAgICAg
ICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAqLzFdKTsKLSAgICAgICAgY2FzZSA3IDogCi0g
ICAgICAgICAgICB1OCgxNyk7Ci0gICAgICAgICAgICB2dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0p
OwotICAgICAgICAgICAgcmV0dXJuIHU4KDApOwotICAgICAgICBjYXNlIDggOiAKLSAgICAgICAg
ICAgIHU4KDMyKTsKLSAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0p
OwotICAgICAgICBjYXNlIDkgOiAKLSAgICAgICAgICAgIHU4KDMzKTsKLSAgICAgICAgICAgIHJl
dHVybiB2dTMyKG1hdGNoWzBdWy8qIGl0ICovMV0pOwotICAgICAgICBjYXNlIDEwIDogCi0gICAg
ICAgICAgICB1OCgzNCk7Ci0gICAgICAgICAgICByZXR1cm4gdnUzMihtYXRjaFswXVsvKiBpdCAq
LzFdKTsKLSAgICAgICAgY2FzZSAxMSA6IAotICAgICAgICAgICAgdTgoMzUpOwotICAgICAgICAg
ICAgcmV0dXJuIHZ1MzIobWF0Y2hbMF1bLyogaXQgKi8xXSk7Ci0gICAgICAgIGNhc2UgMTIgOiAK
LSAgICAgICAgICAgIHU4KDM2KTsKLSAgICAgICAgICAgIHJldHVybiB2dTMyKG1hdGNoWzBdWy8q
IGl0ICovMV0pOwotICAgICAgICBjYXNlIDEzIDogCi0gICAgICAgICAgICB2YXIgbW8gPSBtYXRj
aFswXTsKLSAgICAgICAgICAgIHN3aXRjaCAobW9bLyogdHkgKi8wXSkgewotICAgICAgICAgICAg
ICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCQxID0gbW9bLyogc3ogKi8z
XTsKLSAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCQxKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBtYXRjaCQyID0gbWF0Y2gkMVswXTsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoICht
YXRjaCQyWzBdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtYXRjaCQyWzFdICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdTgoNDUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
ZW1vcChtbyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdTgoNDQpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDJbMV0gIT09IDApIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1OCg0Nyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG1lbW9wKG1vKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCg0Nik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAotICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ii91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19i
dWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxODIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
OwotICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgdTgoNDApOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOwotICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNh
c2UgMSA6IAotICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoJDMgPSBtb1svKiBzeiAqLzNdOwot
ICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoJDMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFy
IG1hdGNoJDQgPSBtYXRjaCQzWzBdOwotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNo
JDRbMF0pIHsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKG1hdGNoJDRbMV0gIT09IDApIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1OCg0OSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9w
KG1vKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCg0OCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAobWF0Y2gkNFsxXSAhPT0gMCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHU4KDUxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVt
b3AobW8pOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDUwKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8pOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtYXRjaCQ0WzFdICE9PSAwKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdTgoNTMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
ZW1vcChtbyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdTgoNTIpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHU4KDQxKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9w
KG1vKTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICBjYXNlIDIgOiAKLSAgICAgICAgICAgICAgICAgIGlmIChtb1svKiBzeiAqLzNd
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9n
b29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3Ny
Yy9lbmNvZGUubWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5NiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdTgoNDIpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbWVtb3AobW8pOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgICAgICAg
aWYgKG1vWy8qIHN6ICovM10pIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVy
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRl
ci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTk2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICB1OCg0Myk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyk7Ci0gICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAxNCA6IAotICAgICAgICAgICAg
dmFyIG1vJDEgPSBtYXRjaFswXTsKLSAgICAgICAgICAgIHN3aXRjaCAobW8kMVsvKiB0eSAqLzBd
KSB7Ci0gICAgICAgICAgICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgICAgICAgdmFyIG1hdGNo
JDUgPSBtbyQxWy8qIHN6ICovM107Ci0gICAgICAgICAgICAgICAgICBpZiAobWF0Y2gkNSkgewot
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDVbMF0pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdTgoNTgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHU4KDU5KTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vJDEpOwotICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFz
c2VydF9mYWlsdXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jl
cmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNTIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICAgICAgICAKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHU4KDU0KTsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1lbW9wKG1vJDEpOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgICAg
dmFyIG1hdGNoJDYgPSBtbyQxWy8qIHN6ICovM107Ci0gICAgICAgICAgICAgICAgICBpZiAobWF0
Y2gkNikgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDZbMF0pIHsKLSAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdTgo
NjApOwotICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHU4
KDYxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vJDEpOwotICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgICAgICAgICAgICAgICB1
OCg2Mik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1vcChtbyQxKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHU4
KDU1KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1lbW9wKG1vJDEpOwotICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2Ug
MiA6IAotICAgICAgICAgICAgICAgICAgaWYgKG1vJDFbLyogc3ogKi8zXSkgewotICAgICAgICAg
ICAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9z
c2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNTgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAg
ICAgICAgXTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICB1OCg1Nik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBt
ZW1vcChtbyQxKTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICBjYXNlIDMgOiAKLSAgICAgICAgICAgICAgICAgIGlmIChtbyQxWy8q
IHN6ICovM10pIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvdXNy
L2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQv
anNsaWIvc3JjL2VuY29kZS5tbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjA4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDU4Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
IF0KLSAgICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdTgoNTcpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWVtb3AobW8kMSk7Ci0gICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAxNSA6IAotICAgICAgICAgICAgdmFyIG1h
dGNoJDcgPSBtYXRjaFswXVsvKiBpdCAqLzFdOwotICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ3
LnRhZyB8IDApIHsKLSAgICAgICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAgICAgICB1
OCg2NSk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gdnM2NChDYW1sX2ludDY0Lm9mX2ludDMy
KG1hdGNoJDdbMF0pKTsKLSAgICAgICAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICAgICAg
ICB1OCg2Nik7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gdnM2NChtYXRjaCQ3WzBdKTsKLSAg
ICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAgICAgICB1OCg2Nyk7Ci0gICAgICAg
ICAgICAgICAgICByZXR1cm4gdTMyKEN1cnJ5Ll8xKEYzMi50b19iaXRzLCBtYXRjaCQ3WzBdKSk7
Ci0gICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgICAgICAgdTgoNjgpOwotICAg
ICAgICAgICAgICAgICAgdmFyIGkgPSBDdXJyeS5fMShGNjQudG9fYml0cywgbWF0Y2gkN1swXSk7
Ci0gICAgICAgICAgICAgICAgICB1MzIoaVsxXSAmIC8qIGxvICovNDI5NDk2NzI5NSB8IDApOwot
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHUzMihDYW1sX2ludDY0LmFzcl8oaSwgMzIpWzFdIHwg
MCk7Ci0gICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgMTYgOiAKLSAgICAgICAgICAgIHN3aXRjaCAobWF0Y2hbMF0udGFnIHwgMCkg
ewotICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg2
OSk7Ci0gICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDgwKTsKLSAgICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAgICAgICB0aHJvdyBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRf
ZmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJl
dGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgMjIwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAyNAotICAgICAgICAgICAgICAgICAg
ICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgIGNhc2UgMyA6
IAotICAgICAgICAgICAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICAgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21l
L3Jvc3NiZXJnL3dhc20vc3BlYy9pbnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5t
bCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDIyMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjQKLSAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAg
ICBdOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIDE3IDogCi0gICAgICAgICAgICB2YXIgbWF0Y2gkOCA9IG1hdGNoWzBdOwot
ICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQ4LnRhZyB8IDApIHsKLSAgICAgICAgICAgICAgY2Fz
ZSAwIDogCi0gICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDhbMF0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
NzApOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCg3MSk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDcyKTsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAzIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoNzMpOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIDQgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3
NCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IAotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDc1KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdTgoNzYpOwotICAgICAgICAgICAgICAgICAgICBjYXNl
IDcgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg3Nyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgOCA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDc4
KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA5IDogCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoNzkpOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDEgOiAKLSAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOFswXSkgewotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg4MSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDgyKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdTgoODMpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg4NCk7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgNCA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg1KTsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSA1IDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dTgoODYpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCg4Nyk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNyA6IAotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDg4KTsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSA4IDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoODkpOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIDkgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
OCg5MCk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChtYXRjaCQ4WzBdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6
IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDkxKTsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTIpOwot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCg5Myk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHU4KDk0KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDog
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTUpOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDUgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg5Nik7Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgICAgICAgc3dp
dGNoIChtYXRjaCQ4WzBdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDk3KTsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAxIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoOTgpOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIDIgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCg5
OSk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDEwMCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwMSk7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgNSA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEwMik7Ci0gICAgICAg
ICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgMTggOiAKLSAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gbWF0Y2hbMF07Ci0g
ICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDkudGFnIHwgMCkgewotICAgICAgICAgICAgICBjYXNl
IDAgOiAKLSAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOVswXSkgewotICAgICAgICAg
ICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgx
MDMpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB1OCgxMDQpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDIgOiAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMDUpOwotICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkOVswXSkgewot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxMjEpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxMjIpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDIg
OiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMjMpOwotICAgICAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIDIgOiAKLSAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gk
OVswXSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxNDApOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzkpOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDIgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDEpOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxNDIpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB1OCgxNDMpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDQpOwotICAgICAgICAgICAgICAg
ICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNDUpOwot
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDMgOiAKLSAgICAgICAgICAgICAgICAgIHN3
aXRjaCAobWF0Y2gkOVswXSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTQpOwotICAgICAgICAgICAgICAgICAgICBj
YXNlIDEgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTMpOwotICAgICAg
ICAgICAgICAgICAgICBjYXNlIDIgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1
OCgxNTUpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDMgOiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxNTYpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDQgOiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTcpOwotICAgICAgICAgICAgICAgICAg
ICBjYXNlIDUgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxNTgpOwotICAg
ICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biB1OCgxNTkpOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDE5IDogCi0gICAgICAgICAgICB2YXIgbWF0
Y2gkMTAgPSBtYXRjaFswXTsKLSAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTAudGFnIHwgMCkg
ewotICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0
Y2gkMTBbMF0pIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTA2KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDog
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTA3KTsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTA4KTsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTA5KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdTgoMTEwKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA1
IDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTExKTsKLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTEy
KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA3IDogCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoMTEzKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA4IDogCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTE0KTsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSA5IDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTE1KTsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDExNik7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTEgOiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxMTcpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDEyIDogCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTE4KTsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSAxMyA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDExOSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgMTQgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxMjApOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIDEgOiAKLSAgICAg
ICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTBbMF0pIHsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSAwIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTI0KTsKLSAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dTgoMTI1KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdTgoMTI2KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCi0g
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTI3KTsKLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSA0IDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTI4KTsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoMTI5KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTMwKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA3IDog
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTMxKTsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTMyKTsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSA5IDogCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTMzKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDEzNCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
MTEgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzUpOwotICAgICAgICAg
ICAgICAgICAgICBjYXNlIDEyIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
MTM2KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxMyA6IAotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHU4KDEzNyk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMTQgOiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxMzgpOwotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICBjYXNlIDIgOiAKLSAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTBbMF0p
IHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoMTQ2KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTQ3KTsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAyIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTQ4KTsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
MTQ5KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoMTUwKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTUxKTsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSA2IDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTUyKTsKLSAgICAg
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICAgICAgICBzd2l0Y2gg
KG1hdGNoJDEwWzBdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMCA6IAotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2MCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
MSA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2MSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2
Mik7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDE2Myk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IAotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2NCk7Ci0gICAgICAgICAgICAgICAgICAgIGNh
c2UgNSA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2NSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgNiA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4
KDE2Nik7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMjAgOiAKLSAgICAgICAgICAgIHZhciBtYXRjaCQx
MSA9IG1hdGNoWzBdOwotICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQxMS50YWcgfCAwKSB7Ci0g
ICAgICAgICAgICAgIGNhc2UgMCA6IAotICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQx
MVswXSkgewotICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Vzci9sb2NhbC9nb29nbGUv
aG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIvX2J1aWxkL2pzbGliL3NyYy9lbmNv
ZGUubWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMzEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDQyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAxIDogCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIi91c3IvbG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJl
dGVyL19idWlsZC9qc2xpYi9zcmMvZW5jb2RlLm1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMzMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07
Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHU4KDE2Nyk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2OCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
NCA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE2OSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgNSA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE3
MCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IAotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHU4KDE3MSk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgNyA6IAotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE4OCk7Ci0gICAgICAgICAgICAgICAgICAgIAot
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgICAgc3dpdGNoIChtYXRjaCQxMVswXSkgewot
ICAgICAgICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB1OCgxNzIpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB1OCgxNzMpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDIg
OiAKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiL3Vzci9sb2NhbC9nb29nbGUvaG9tZS9yb3NzYmVyZy93YXNtL3NwZWMvaW50ZXJwcmV0ZXIv
X2J1aWxkL2pzbGliL3NyYy9lbmNvZGUubWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzNDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM5Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAg
ICAgICAgICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdTgoMTc0KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdTgoMTc1KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDog
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTc2KTsKLSAgICAgICAgICAgICAg
ICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTc3KTsK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSA3IDogCi0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdTgoMTg5KTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSAyIDogCi0gICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoJDExWzBdKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNhc2UgMCA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE3OCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHU4KDE3OSk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHU4KDE4MCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IAot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE4MSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgNCA6IAotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgWwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1
cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIvdXNyL2xvY2FsL2dvb2dsZS9ob21lL3Jvc3NiZXJnL3dhc20vc3BlYy9p
bnRlcnByZXRlci9fYnVpbGQvanNsaWIvc3JjL2VuY29kZS5tbCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDM1MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDUgOiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB1OCgxODIpOwotICAgICAgICAgICAgICAgICAgICBjYXNlIDYgOiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1OCgxOTApOwotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICBjYXNlIDMgOiAKLSAgICAgICAgICAgICAgICAgIHN3aXRjaCAobWF0Y2gkMTFbMF0p
IHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdTgoMTgzKTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAxIDogCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTg0KTsKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAyIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgoMTg1KTsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzIDogCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdTgo
MTg2KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdTgoMTg3KTsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSA1IDogCi0gICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi91c3Iv
bG9jYWwvZ29vZ2xlL2hvbWUvcm9zc2Jlcmcvd2FzbS9zcGVjL2ludGVycHJldGVyL19idWlsZC9q
c2xpYi9zcmMvZW5jb2RlLm1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzYy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0MQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAg
ICAgICAgICAgIGNhc2UgNiA6IAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHU4KDE5
MSk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgfQotICAgIH0KLSAgfTsKLSAgdmFyICQkY29uc3Qg
PSBmdW5jdGlvbiAoYykgewotICAgIExpc3QuaXRlcihpbnN0ciwgY1svKiBpdCAqLzFdKTsKLSAg
ICByZXR1cm4gdTgoMTEpOwotICB9OwotICB2YXIgc2VjdGlvbiA9IGZ1bmN0aW9uIChpZCwgZiwg
eCwgbmVlZGVkKSB7Ci0gICAgaWYgKG5lZWRlZCkgewotICAgICAgdTgoaWQpOwotICAgICAgdmFy
IGcgPSBnYXAzMigvKiAoKSAqLzApOwotICAgICAgdmFyIHAgPSBCdWZmZXIubGVuZ3RoKHNbLyog
YnVmICovMF0pOwotICAgICAgQ3VycnkuXzEoZiwgeCk7Ci0gICAgICByZXR1cm4gcGF0Y2hfZ2Fw
MzIoZywgQnVmZmVyLmxlbmd0aChzWy8qIGJ1ZiAqLzBdKSAtIHAgfCAwKTsKLSAgICB9Ci0gICAg
ZWxzZSB7Ci0gICAgICByZXR1cm4gMDsKLSAgICB9Ci0gIH07Ci0gIHZhciB0eXBlX3NlY3Rpb24g
PSBmdW5jdGlvbiAodHMpIHsKLSAgICByZXR1cm4gc2VjdGlvbigxLCBmdW5jdGlvbiAocGFyYW0p
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmNfdHlwZSwgcGFyYW0pOwotICAgICAg
ICAgICAgICB9LCB0cywgKyh0cyAhPT0gLyogW10gKi8wKSk7Ci0gIH07Ci0gIHZhciAkJGltcG9y
dCA9IGZ1bmN0aW9uIChpbSkgewotICAgIHZhciBtYXRjaCA9IGltWy8qIGl0ICovMV07Ci0gICAg
c3RyaW5nKG1hdGNoWy8qIG1vZHVsZV9uYW1lICovMF0pOwotICAgIHN0cmluZyhtYXRjaFsvKiBp
dGVtX25hbWUgKi8xXSk7Ci0gICAgdmFyIGsgPSBtYXRjaFsvKiBpa2luZCAqLzJdOwotICAgIHZh
ciBtYXRjaCQxID0ga1svKiBpdCAqLzFdOwotICAgIHN3aXRjaCAobWF0Y2gkMS50YWcgfCAwKSB7
Ci0gICAgICBjYXNlIDAgOiAKLSAgICAgICAgICB1OCgwKTsKLSAgICAgICAgICByZXR1cm4gdnUz
MihtYXRjaCQxWzBdWy8qIGl0ICovMV0pOwotICAgICAgY2FzZSAxIDogCi0gICAgICAgICAgdTgo
MSk7Ci0gICAgICAgICAgcmV0dXJuIHRhYmxlX3R5cGUobWF0Y2gkMVswXSk7Ci0gICAgICBjYXNl
IDIgOiAKLSAgICAgICAgICB1OCgyKTsKLSAgICAgICAgICByZXR1cm4gbWVtb3J5X3R5cGUobWF0
Y2gkMVswXSk7Ci0gICAgICBjYXNlIDMgOiAKLSAgICAgICAgICB1OCgzKTsKLSAgICAgICAgICBy
ZXR1cm4gZ2xvYmFsX3R5cGUobWF0Y2gkMVswXSk7Ci0gICAgICAKLSAgICB9Ci0gIH07Ci0gIHZh
ciBpbXBvcnRfc2VjdGlvbiA9IGZ1bmN0aW9uIChpbXMpIHsKLSAgICByZXR1cm4gc2VjdGlvbigy
LCBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmVjKCQkaW1wb3J0
LCBwYXJhbSk7Ci0gICAgICAgICAgICAgIH0sIGltcywgKyhpbXMgIT09IC8qIFtdICovMCkpOwot
ICB9OwotICB2YXIgZnVuYyA9IGZ1bmN0aW9uIChmKSB7Ci0gICAgcmV0dXJuIHZ1MzIoZlsvKiBp
dCAqLzFdWy8qIGZ0eXBlICovMF1bLyogaXQgKi8xXSk7Ci0gIH07Ci0gIHZhciBmdW5jX3NlY3Rp
b24gPSBmdW5jdGlvbiAoZnMpIHsKLSAgICByZXR1cm4gc2VjdGlvbigzLCBmdW5jdGlvbiAocGFy
YW0pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmVjKGZ1bmMsIHBhcmFtKTsKLSAgICAgICAg
ICAgICAgfSwgZnMsICsoZnMgIT09IC8qIFtdICovMCkpOwotICB9OwotICB2YXIgdGFibGUgPSBm
dW5jdGlvbiAodGFiKSB7Ci0gICAgdmFyIG1hdGNoID0gdGFiWy8qIGl0ICovMV07Ci0gICAgcmV0
dXJuIHRhYmxlX3R5cGUobWF0Y2hbLyogdHR5cGUgKi8wXSk7Ci0gIH07Ci0gIHZhciB0YWJsZV9z
ZWN0aW9uID0gZnVuY3Rpb24gKHRhYnMpIHsKLSAgICByZXR1cm4gc2VjdGlvbig0LCBmdW5jdGlv
biAocGFyYW0pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmVjKHRhYmxlLCBwYXJhbSk7Ci0g
ICAgICAgICAgICAgIH0sIHRhYnMsICsodGFicyAhPT0gLyogW10gKi8wKSk7Ci0gIH07Ci0gIHZh
ciBtZW1vcnkgPSBmdW5jdGlvbiAobWVtKSB7Ci0gICAgdmFyIG1hdGNoID0gbWVtWy8qIGl0ICov
MV07Ci0gICAgcmV0dXJuIG1lbW9yeV90eXBlKG1hdGNoWy8qIG10eXBlICovMF0pOwotICB9Owot
ICB2YXIgbWVtb3J5X3NlY3Rpb24gPSBmdW5jdGlvbiAobWVtcykgewotICAgIHJldHVybiBzZWN0
aW9uKDUsIGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICAgIHJldHVybiB2ZWMobWVt
b3J5LCBwYXJhbSk7Ci0gICAgICAgICAgICAgIH0sIG1lbXMsICsobWVtcyAhPT0gLyogW10gKi8w
KSk7Ci0gIH07Ci0gIHZhciBnbG9iYWwgPSBmdW5jdGlvbiAoZykgewotICAgIHZhciBtYXRjaCA9
IGdbLyogaXQgKi8xXTsKLSAgICBnbG9iYWxfdHlwZShtYXRjaFsvKiBndHlwZSAqLzBdKTsKLSAg
ICByZXR1cm4gJCRjb25zdChtYXRjaFsvKiB2YWx1ZSAqLzFdKTsKLSAgfTsKLSAgdmFyIGdsb2Jh
bF9zZWN0aW9uID0gZnVuY3Rpb24gKGdzKSB7Ci0gICAgcmV0dXJuIHNlY3Rpb24oNiwgZnVuY3Rp
b24gKHBhcmFtKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZlYyhnbG9iYWwsIHBhcmFtKTsK
LSAgICAgICAgICAgICAgfSwgZ3MsICsoZ3MgIT09IC8qIFtdICovMCkpOwotICB9OwotICB2YXIg
ZXhwb3J0X2tpbmQgPSBmdW5jdGlvbiAoaykgewotICAgIHZhciBtYXRjaCA9IGtbLyogaXQgKi8x
XTsKLSAgICBzd2l0Y2ggKG1hdGNoKSB7Ci0gICAgICBjYXNlIDAgOiAKLSAgICAgICAgICByZXR1
cm4gdTgoMCk7Ci0gICAgICBjYXNlIDEgOiAKLSAgICAgICAgICByZXR1cm4gdTgoMSk7Ci0gICAg
ICBjYXNlIDIgOiAKLSAgICAgICAgICByZXR1cm4gdTgoMik7Ci0gICAgICBjYXNlIDMgOiAKLSAg
ICAgICAgICByZXR1cm4gdTgoMyk7Ci0gICAgICAKLSAgICB9Ci0gIH07Ci0gIHZhciAkJGV4cG9y
dCA9IGZ1bmN0aW9uIChleCkgewotICAgIHZhciBtYXRjaCA9IGV4Wy8qIGl0ICovMV07Ci0gICAg
c3RyaW5nKG1hdGNoWy8qIG5hbWUgKi8wXSk7Ci0gICAgZXhwb3J0X2tpbmQobWF0Y2hbLyogZWtp
bmQgKi8xXSk7Ci0gICAgcmV0dXJuIHZ1MzIobWF0Y2hbLyogaXRlbSAqLzJdWy8qIGl0ICovMV0p
OwotICB9OwotICB2YXIgZXhwb3J0X3NlY3Rpb24gPSBmdW5jdGlvbiAoZXhzKSB7Ci0gICAgcmV0
dXJuIHNlY3Rpb24oNywgZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHZlYygkJGV4cG9ydCwgcGFyYW0pOwotICAgICAgICAgICAgICB9LCBleHMsICsoZXhzICE9PSAv
KiBbXSAqLzApKTsKLSAgfTsKLSAgdmFyIHN0YXJ0X3NlY3Rpb24gPSBmdW5jdGlvbiAoeG8pIHsK
LSAgICByZXR1cm4gc2VjdGlvbig4LCBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gQ3VycnkuXzIoTGliLk9wdGlvblsvKiBhcHAgKi8yXSwgJCR2YXIsIHBhcmFtKTsK
LSAgICAgICAgICAgICAgfSwgeG8sICsoeG8gIT09IC8qIE5vbmUgKi8wKSk7Ci0gIH07Ci0gIHZh
ciBjb21wcmVzcyA9IGZ1bmN0aW9uICh0cykgewotICAgIHZhciBjb21iaW5lID0gZnVuY3Rpb24g
KHQsIHRzKSB7Ci0gICAgICBpZiAodHMpIHsKLSAgICAgICAgdmFyIG1hdGNoID0gdHNbMF07Ci0g
ICAgICAgIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKHQsIG1hdGNoWzBdKSkgewotICAgICAgICAg
IHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgIC8qIHR1cGxlICovWwotICAgICAg
ICAgICAgICAgICAgICB0LAotICAgICAgICAgICAgICAgICAgICBtYXRjaFsxXSArIDEgfCAwCi0g
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgdHNbMV0KLSAgICAgICAgICAg
ICAgICBdOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKLSAgICAgICAgICAgICAgICAgIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAgICAg
ICB0LAotICAgICAgICAgICAgICAgICAgICAxCi0gICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICAgdHMKLSAgICAgICAgICAgICAgICBdOwotICAgICAgICB9Ci0gICAgICB9Ci0g
ICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgIC8q
IHR1cGxlICovWwotICAgICAgICAgICAgICAgICAgdCwKLSAgICAgICAgICAgICAgICAgIDEKLSAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIHRzCi0gICAgICAgICAgICAgIF07Ci0g
ICAgICB9Ci0gICAgfTsKLSAgICByZXR1cm4gTGlzdC5mb2xkX3JpZ2h0KGNvbWJpbmUsIHRzLCAv
KiBbXSAqLzApOwotICB9OwotICB2YXIgbG9jYWwgPSBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICBs
ZW4ocGFyYW1bMV0pOwotICAgIHJldHVybiB2YWx1ZV90eXBlKHBhcmFtWzBdKTsKLSAgfTsKLSAg
dmFyIGNvZGUgPSBmdW5jdGlvbiAoZikgewotICAgIHZhciBtYXRjaCA9IGZbLyogaXQgKi8xXTsK
LSAgICB2YXIgZyA9IGdhcDMyKC8qICgpICovMCk7Ci0gICAgdmFyIHAgPSBCdWZmZXIubGVuZ3Ro
KHNbLyogYnVmICovMF0pOwotICAgIHZlYyhsb2NhbCwgY29tcHJlc3MobWF0Y2hbLyogbG9jYWxz
ICovMV0pKTsKLSAgICBMaXN0Lml0ZXIoaW5zdHIsIG1hdGNoWy8qIGJvZHkgKi8yXSk7Ci0gICAg
dTgoMTEpOwotICAgIHJldHVybiBwYXRjaF9nYXAzMihnLCBCdWZmZXIubGVuZ3RoKHNbLyogYnVm
ICovMF0pIC0gcCB8IDApOwotICB9OwotICB2YXIgY29kZV9zZWN0aW9uID0gZnVuY3Rpb24gKGZz
KSB7Ci0gICAgcmV0dXJuIHNlY3Rpb24oMTAsIGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAg
ICAgICAgIHJldHVybiB2ZWMoY29kZSwgcGFyYW0pOwotICAgICAgICAgICAgICB9LCBmcywgKyhm
cyAhPT0gLyogW10gKi8wKSk7Ci0gIH07Ci0gIHZhciBzZWdtZW50ID0gZnVuY3Rpb24gKGRhdCwg
c2VnKSB7Ci0gICAgdmFyIG1hdGNoID0gc2VnWy8qIGl0ICovMV07Ci0gICAgdnUzMihtYXRjaFsv
KiBpbmRleCAqLzBdWy8qIGl0ICovMV0pOwotICAgICQkY29uc3QobWF0Y2hbLyogb2Zmc2V0ICov
MV0pOwotICAgIHJldHVybiBDdXJyeS5fMShkYXQsIG1hdGNoWy8qIGluaXQgKi8yXSk7Ci0gIH07
Ci0gIHZhciB0YWJsZV9zZWdtZW50ID0gZnVuY3Rpb24gKHNlZykgewotICAgIHJldHVybiBzZWdt
ZW50KGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICAgIHJldHVybiB2ZWMoJCR2YXIs
IHBhcmFtKTsKLSAgICAgICAgICAgICAgfSwgc2VnKTsKLSAgfTsKLSAgdmFyIGVsZW1fc2VjdGlv
biA9IGZ1bmN0aW9uIChlbGVtcykgewotICAgIHJldHVybiBzZWN0aW9uKDksIGZ1bmN0aW9uIChw
YXJhbSkgewotICAgICAgICAgICAgICAgIHJldHVybiB2ZWModGFibGVfc2VnbWVudCwgcGFyYW0p
OwotICAgICAgICAgICAgICB9LCBlbGVtcywgKyhlbGVtcyAhPT0gLyogW10gKi8wKSk7Ci0gIH07
Ci0gIHZhciBtZW1vcnlfc2VnbWVudCA9IGZ1bmN0aW9uIChzZWcpIHsKLSAgICByZXR1cm4gc2Vn
bWVudChzdHJpbmcsIHNlZyk7Ci0gIH07Ci0gIHZhciBtb2R1bGVfID0gZnVuY3Rpb24gKG0pIHsK
LSAgICB1MzIoMTgzNjI3ODAxNik7Ci0gICAgdTMyKDEzKTsKLSAgICB0eXBlX3NlY3Rpb24obVsv
KiBpdCAqLzFdWy8qIHR5cGVzICovMF0pOwotICAgIGltcG9ydF9zZWN0aW9uKG1bLyogaXQgKi8x
XVsvKiBpbXBvcnRzICovOF0pOwotICAgIGZ1bmNfc2VjdGlvbihtWy8qIGl0ICovMV1bLyogZnVu
Y3MgKi80XSk7Ci0gICAgdGFibGVfc2VjdGlvbihtWy8qIGl0ICovMV1bLyogdGFibGVzICovMl0p
OwotICAgIG1lbW9yeV9zZWN0aW9uKG1bLyogaXQgKi8xXVsvKiBtZW1vcmllcyAqLzNdKTsKLSAg
ICBnbG9iYWxfc2VjdGlvbihtWy8qIGl0ICovMV1bLyogZ2xvYmFscyAqLzFdKTsKLSAgICBleHBv
cnRfc2VjdGlvbihtWy8qIGl0ICovMV1bLyogZXhwb3J0cyAqLzldKTsKLSAgICBzdGFydF9zZWN0
aW9uKG1bLyogaXQgKi8xXVsvKiBzdGFydCAqLzVdKTsKLSAgICBlbGVtX3NlY3Rpb24obVsvKiBp
dCAqLzFdWy8qIGVsZW1zICovNl0pOwotICAgIGNvZGVfc2VjdGlvbihtWy8qIGl0ICovMV1bLyog
ZnVuY3MgKi80XSk7Ci0gICAgdmFyIGRhdGEgPSBtWy8qIGl0ICovMV1bLyogZGF0YSAqLzddOwot
ICAgIHJldHVybiBzZWN0aW9uKDExLCBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdmVjKG1lbW9yeV9zZWdtZW50LCBwYXJhbSk7Ci0gICAgICAgICAgICAgIH0sIGRh
dGEsICsoZGF0YSAhPT0gLyogW10gKi8wKSk7Ci0gIH07Ci0gIG1vZHVsZV8obSk7Ci0gIHZhciBz
JDEgPSBzOwotICB2YXIgYnMgPSBCdWZmZXIudG9fYnl0ZXMocyQxWy8qIGJ1ZiAqLzBdKTsKLSAg
TGlzdC5pdGVyKGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICBic1twYXJhbVswXV0gPSBwYXJh
bVsxXTsKLSAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgIH0sIHMkMVsvKiBwYXRjaGVz
ICovMV1bMF0pOwotICByZXR1cm4gQnl0ZXMudG9fc3RyaW5nKGJzKTsKLX0KLQotdmFyIHZlcnNp
b24gPSAxMzsKLQotZXhwb3J0cy5Db2RlICAgID0gQ29kZSQxOwotZXhwb3J0cy52ZXJzaW9uID0g
dmVyc2lvbjsKLWV4cG9ydHMuZW5jb2RlICA9IGVuY29kZTsKLS8qIENvZGUgTm90IGEgcHVyZSBt
b2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBlbmNvZGUuanMgLy8vLy8vLy8KLSAgICByZXR1cm4g
ZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnZXJyb3InXSA9IGZ1bmN0aW9uKCkgewot
ICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBlcnJvci5qcyAvLy8vLy8v
LwotLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVE
SVQgV0lUSCBDQVJFCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBTb3VyY2UgICAgICAgICAgPSByZXF1
aXJlKCIuL3NvdXJjZSIpOwotdmFyIENhbWxfZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRm
b3JtL2xpYi9qcy9jYW1sX2V4Y2VwdGlvbnMiKTsKLQotZnVuY3Rpb24gTWFrZSgpIHsKLSAgdmFy
ICQkRXJyb3IgPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJFcnJvci5NYWtlKCopLkVycm9yIik7
Ci0gIHZhciB3YXJuID0gZnVuY3Rpb24gKGF0LCBtKSB7Ci0gICAgY29uc29sZS5lcnJvcihTb3Vy
Y2Uuc3RyaW5nX29mX3JlZ2lvbihhdCkgKyAoIjogd2FybmluZzogIiArIG0pKTsKLSAgICByZXR1
cm4gLyogKCkgKi8wOwotICB9OwotICB2YXIgZXJyb3IgPSBmdW5jdGlvbiAoYXQsIG0pIHsKLSAg
ICB0aHJvdyBbCi0gICAgICAgICAgJCRFcnJvciwKLSAgICAgICAgICBhdCwKLSAgICAgICAgICBt
Ci0gICAgICAgIF07Ci0gIH07Ci0gIHJldHVybiAvKiBtb2R1bGUgKi9bCi0gICAgICAgICAgLyog
RXJyb3IgKi8kJEVycm9yLAotICAgICAgICAgIC8qIHdhcm4gKi93YXJuLAotICAgICAgICAgIC8q
IGVycm9yICovZXJyb3IKLSAgICAgICAgXTsKLX0KLQotZXhwb3J0cy5NYWtlID0gTWFrZTsKLS8q
IE5vIHNpZGUgZWZmZWN0ICovCi0vLy8vLy8vLyBlbmQgb2YgZXJyb3IuanMgLy8vLy8vLy8KLSAg
ICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnZjMyJ10gPSBmdW5jdGlv
bigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgZjMyLmpzIC8v
Ly8vLy8vCi0vLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVB
U0UgRURJVCBXSVRIIENBUkUKLSd1c2Ugc3RyaWN0JzsKLQotdmFyIEJsb2NrICAgICAgID0gcmVx
dWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Ci12YXIgQ3VycnkgICAgICAgPSByZXF1
aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKLXZhciBGbG9hdCAgICAgICA9IHJlcXVp
cmUoIi4vZmxvYXQiKTsKLXZhciBJbnQzMiAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9pbnQzMiIpOwotdmFyIFByaW50ZiAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGli
L2pzL3ByaW50ZiIpOwotdmFyIENhbWxfZmxvYXQgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGli
L2pzL2NhbWxfZmxvYXQiKTsKLXZhciBDYW1sX2Zvcm1hdCA9IHJlcXVpcmUoImJzLXBsYXRmb3Jt
L2xpYi9qcy9jYW1sX2Zvcm1hdCIpOwotCi1mdW5jdGlvbiBwcmludF9uYW5fc2lnbmlmaWNhbmRf
ZGlnaXRzKGEpIHsKLSAgcmV0dXJuIEN1cnJ5Ll8xKFByaW50Zi5zcHJpbnRmKC8qIEZvcm1hdCAq
L1sKLSAgICAgICAgICAgICAgICAgIC8qIEludDMyICovQmxvY2suX18oNSwgWwotICAgICAgICAg
ICAgICAgICAgICAgIC8qIEludF94ICovNiwKLSAgICAgICAgICAgICAgICAgICAgICAvKiBOb19w
YWRkaW5nICovMCwKLSAgICAgICAgICAgICAgICAgICAgICAvKiBOb19wcmVjaXNpb24gKi8wLAot
ICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZF9vZl9mb3JtYXQgKi8wCi0gICAgICAgICAgICAg
ICAgICAgIF0pLAotICAgICAgICAgICAgICAgICAgIiVseCIKLSAgICAgICAgICAgICAgICBdKSwg
SW50MzIuYWJzKDIxMzkwOTUwNDAgXiBhKSk7Ci19Ci0KLXZhciBpbmNsdWRlID0gRmxvYXQuTWFr
ZSgvKiBtb2R1bGUgKi9bCi0gICAgICAvKiBwb3NfbmFuICovMjE0MzI4OTM0NCwKLSAgICAgIC8q
IG5lZ19uYW4gKi8tNDE5NDMwNCwKLSAgICAgIC8qIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAq
L0NhbWxfZmxvYXQuY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0LAotICAgICAgLyogY2FtbF9pbnQz
Ml9mbG9hdF9vZl9iaXRzICovQ2FtbF9mbG9hdC5jYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMsCi0g
ICAgICAvKiBjYW1sX2ludDMyX29mX3N0cmluZyAqL0NhbWxfZm9ybWF0LmNhbWxfaW50MzJfb2Zf
c3RyaW5nLAotICAgICAgLyogdG9fc3RyaW5nICovSW50MzIudG9fc3RyaW5nLAotICAgICAgLyog
JWludDMyX2FuZCAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKLSAgICAgICAgcmV0dXJuIHBy
aW0gJiBwcmltJDE7Ci0gICAgICB9LAotICAgICAgLyogJWludDMyX29yICovZnVuY3Rpb24gKHBy
aW0sIHByaW0kMSkgewotICAgICAgICByZXR1cm4gcHJpbSB8IHByaW0kMTsKLSAgICAgIH0sCi0g
ICAgICAvKiAlaW50MzJfeG9yICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgewotICAgICAgICBy
ZXR1cm4gcHJpbSBeIHByaW0kMTsKLSAgICAgIH0sCi0gICAgICAvKiBtaW5faW50ICovSW50MzIu
bWluX2ludCwKLSAgICAgIC8qIG1heF9pbnQgKi9JbnQzMi5tYXhfaW50LAotICAgICAgLyogemVy
byAqL0ludDMyLnplcm8sCi0gICAgICAvKiBiYXJlX25hbiAqLzIxMzkwOTUwNDAsCi0gICAgICAv
KiBwcmludF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzICovcHJpbnRfbmFuX3NpZ25pZmljYW5kX2Rp
Z2l0cwotICAgIF0pOwotCi12YXIgcG9zX25hbiA9IGluY2x1ZGVbMF07Ci0KLXZhciBuZWdfbmFu
ID0gaW5jbHVkZVsxXTsKLQotdmFyIG9mX2Zsb2F0ID0gaW5jbHVkZVsyXTsKLQotdmFyIHRvX2Zs
b2F0ID0gaW5jbHVkZVszXTsKLQotdmFyIG9mX3N0cmluZyA9IGluY2x1ZGVbNF07Ci0KLXZhciB0
b19zdHJpbmcgPSBpbmNsdWRlWzVdOwotCi12YXIgb2ZfYml0cyA9IGluY2x1ZGVbNl07Ci0KLXZh
ciB0b19iaXRzID0gaW5jbHVkZVs3XTsKLQotdmFyIGFkZCA9IGluY2x1ZGVbOF07Ci0KLXZhciBz
dWIgPSBpbmNsdWRlWzldOwotCi12YXIgbXVsID0gaW5jbHVkZVsxMF07Ci0KLXZhciBkaXYgPSBp
bmNsdWRlWzExXTsKLQotdmFyIHNxcnQgPSBpbmNsdWRlWzEyXTsKLQotdmFyIG1pbiA9IGluY2x1
ZGVbMTNdOwotCi12YXIgbWF4ID0gaW5jbHVkZVsxNF07Ci0KLXZhciBjZWlsID0gaW5jbHVkZVsx
NV07Ci0KLXZhciBmbG9vciA9IGluY2x1ZGVbMTZdOwotCi12YXIgdHJ1bmMgPSBpbmNsdWRlWzE3
XTsKLQotdmFyIG5lYXJlc3QgPSBpbmNsdWRlWzE4XTsKLQotdmFyIGFicyA9IGluY2x1ZGVbMTld
OwotCi12YXIgbmVnID0gaW5jbHVkZVsyMF07Ci0KLXZhciBjb3B5c2lnbiA9IGluY2x1ZGVbMjFd
OwotCi12YXIgZXEgPSBpbmNsdWRlWzIyXTsKLQotdmFyIG5lID0gaW5jbHVkZVsyM107Ci0KLXZh
ciBsdCA9IGluY2x1ZGVbMjRdOwotCi12YXIgbGUgPSBpbmNsdWRlWzI1XTsKLQotdmFyIGd0ID0g
aW5jbHVkZVsyNl07Ci0KLXZhciBnZSA9IGluY2x1ZGVbMjddOwotCi12YXIgemVybyA9IGluY2x1
ZGVbMjhdOwotCi1leHBvcnRzLnBvc19uYW4gICA9IHBvc19uYW47Ci1leHBvcnRzLm5lZ19uYW4g
ICA9IG5lZ19uYW47Ci1leHBvcnRzLm9mX2Zsb2F0ICA9IG9mX2Zsb2F0OwotZXhwb3J0cy50b19m
bG9hdCAgPSB0b19mbG9hdDsKLWV4cG9ydHMub2Zfc3RyaW5nID0gb2Zfc3RyaW5nOwotZXhwb3J0
cy50b19zdHJpbmcgPSB0b19zdHJpbmc7Ci1leHBvcnRzLm9mX2JpdHMgICA9IG9mX2JpdHM7Ci1l
eHBvcnRzLnRvX2JpdHMgICA9IHRvX2JpdHM7Ci1leHBvcnRzLmFkZCAgICAgICA9IGFkZDsKLWV4
cG9ydHMuc3ViICAgICAgID0gc3ViOwotZXhwb3J0cy5tdWwgICAgICAgPSBtdWw7Ci1leHBvcnRz
LmRpdiAgICAgICA9IGRpdjsKLWV4cG9ydHMuc3FydCAgICAgID0gc3FydDsKLWV4cG9ydHMubWlu
ICAgICAgID0gbWluOwotZXhwb3J0cy5tYXggICAgICAgPSBtYXg7Ci1leHBvcnRzLmNlaWwgICAg
ICA9IGNlaWw7Ci1leHBvcnRzLmZsb29yICAgICA9IGZsb29yOwotZXhwb3J0cy50cnVuYyAgICAg
PSB0cnVuYzsKLWV4cG9ydHMubmVhcmVzdCAgID0gbmVhcmVzdDsKLWV4cG9ydHMuYWJzICAgICAg
ID0gYWJzOwotZXhwb3J0cy5uZWcgICAgICAgPSBuZWc7Ci1leHBvcnRzLmNvcHlzaWduICA9IGNv
cHlzaWduOwotZXhwb3J0cy5lcSAgICAgICAgPSBlcTsKLWV4cG9ydHMubmUgICAgICAgID0gbmU7
Ci1leHBvcnRzLmx0ICAgICAgICA9IGx0OwotZXhwb3J0cy5sZSAgICAgICAgPSBsZTsKLWV4cG9y
dHMuZ3QgICAgICAgID0gZ3Q7Ci1leHBvcnRzLmdlICAgICAgICA9IGdlOwotZXhwb3J0cy56ZXJv
ICAgICAgPSB6ZXJvOwotLyogaW5jbHVkZSBOb3QgYSBwdXJlIG1vZHVsZSAqLwotLy8vLy8vLy8g
ZW5kIG9mIGYzMi5qcyAvLy8vLy8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAg
X3JlZ2lzdHJ5WydmNjQnXSA9IGZ1bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0v
Ly8vLy8vLyBzdGFydCBvZiBmNjQuanMgLy8vLy8vLy8KLS8vIEdlbmVyYXRlZCBieSBCVUNLTEVT
Q1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQotJ3VzZSBzdHJpY3Qn
OwotCi12YXIgQmxvY2sgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxvY2si
KTsKLXZhciBDdXJyeSAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIp
OwotdmFyIEZsb2F0ICAgICAgID0gcmVxdWlyZSgiLi9mbG9hdCIpOwotdmFyIEludDY0ICAgICAg
ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2ludDY0Iik7Ci12YXIgUHJpbnRmICAgICAg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcHJpbnRmIik7Ci12YXIgQ2FtbF9pbnQ2NCAg
PSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9pbnQ2NCIpOwotdmFyIENhbWxfZm9y
bWF0ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZm9ybWF0Iik7Ci0KLXZhciBi
YXJlX25hbiA9IC8qIGludDY0ICovWwotICAvKiBoaSAqLzIxNDY0MzUwNzIsCi0gIC8qIGxvICov
MAotXTsKLQotZnVuY3Rpb24gcHJpbnRfbmFuX3NpZ25pZmljYW5kX2RpZ2l0cyhhKSB7Ci0gIHJl
dHVybiBDdXJyeS5fMShQcmludGYuc3ByaW50ZigvKiBGb3JtYXQgKi9bCi0gICAgICAgICAgICAg
ICAgICAvKiBJbnQ2NCAqL0Jsb2NrLl9fKDcsIFsKLSAgICAgICAgICAgICAgICAgICAgICAvKiBJ
bnRfeCAqLzYsCi0gICAgICAgICAgICAgICAgICAgICAgLyogTm9fcGFkZGluZyAqLzAsCi0gICAg
ICAgICAgICAgICAgICAgICAgLyogTm9fcHJlY2lzaW9uICovMCwKLSAgICAgICAgICAgICAgICAg
ICAgICAvKiBFbmRfb2ZfZm9ybWF0ICovMAotICAgICAgICAgICAgICAgICAgICBdKSwKLSAgICAg
ICAgICAgICAgICAgICIlTHgiCi0gICAgICAgICAgICAgICAgXSksIEludDY0LmFicygvKiBpbnQ2
NCAqL1sKLSAgICAgICAgICAgICAgICAgIC8qIGhpICovLyogaGkgKi8yMTQ2NDM1MDcyIF4gYVsw
XSwKLSAgICAgICAgICAgICAgICAgIC8qIGxvICovKCgvKiBsbyAqLzAgXiBhWzFdKSA+Pj4gMCkK
LSAgICAgICAgICAgICAgICBdKSk7Ci19Ci0KLXZhciBpbmNsdWRlID0gRmxvYXQuTWFrZSgvKiBt
b2R1bGUgKi9bCi0gICAgICAvKiBwb3NfbmFuIDogaW50NjQgKi9bCi0gICAgICAgIC8qIGhpICov
MjE0Njk1OTM2MCwKLSAgICAgICAgLyogbG8gKi8wCi0gICAgICBdLAotICAgICAgLyogbmVnX25h
biA6IGludDY0ICovWwotICAgICAgICAvKiBoaSAqLy01MjQyODgsCi0gICAgICAgIC8qIGxvICov
MAotICAgICAgXSwKLSAgICAgIC8qIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAqL0NhbWxfaW50
NjQuYml0c19vZl9mbG9hdCwKLSAgICAgIC8qIGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyAqL0Nh
bWxfaW50NjQuZmxvYXRfb2ZfYml0cywKLSAgICAgIC8qIGNhbWxfaW50NjRfb2Zfc3RyaW5nICov
Q2FtbF9mb3JtYXQuY2FtbF9pbnQ2NF9vZl9zdHJpbmcsCi0gICAgICAvKiB0b19zdHJpbmcgKi9J
bnQ2NC50b19zdHJpbmcsCi0gICAgICAvKiAlaW50NjRfYW5kICovZnVuY3Rpb24gKHByaW0sIHBy
aW0kMSkgewotICAgICAgICByZXR1cm4gLyogaW50NjQgKi9bCi0gICAgICAgICAgICAgICAgLyog
aGkgKi9wcmltWzBdICYgcHJpbSQxWzBdLAotICAgICAgICAgICAgICAgIC8qIGxvICovKChwcmlt
WzFdICYgcHJpbSQxWzFdKSA+Pj4gMCkKLSAgICAgICAgICAgICAgXTsKLSAgICAgIH0sCi0gICAg
ICAvKiAlaW50NjRfb3IgKi9mdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7Ci0gICAgICAgIHJldHVy
biAvKiBpbnQ2NCAqL1sKLSAgICAgICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gfCBwcmltJDFb
MF0sCi0gICAgICAgICAgICAgICAgLyogbG8gKi8oKHByaW1bMV0gfCBwcmltJDFbMV0pID4+PiAw
KQotICAgICAgICAgICAgICBdOwotICAgICAgfSwKLSAgICAgIC8qICVpbnQ2NF94b3IgKi9mdW5j
dGlvbiAocHJpbSwgcHJpbSQxKSB7Ci0gICAgICAgIHJldHVybiAvKiBpbnQ2NCAqL1sKLSAgICAg
ICAgICAgICAgICAvKiBoaSAqL3ByaW1bMF0gXiBwcmltJDFbMF0sCi0gICAgICAgICAgICAgICAg
LyogbG8gKi8oKHByaW1bMV0gXiBwcmltJDFbMV0pID4+PiAwKQotICAgICAgICAgICAgICBdOwot
ICAgICAgfSwKLSAgICAgIC8qIG1pbl9pbnQgKi9JbnQ2NC5taW5faW50LAotICAgICAgLyogbWF4
X2ludCAqL0ludDY0Lm1heF9pbnQsCi0gICAgICAvKiB6ZXJvICovSW50NjQuemVybywKLSAgICAg
IC8qIGJhcmVfbmFuICovYmFyZV9uYW4sCi0gICAgICAvKiBwcmludF9uYW5fc2lnbmlmaWNhbmRf
ZGlnaXRzICovcHJpbnRfbmFuX3NpZ25pZmljYW5kX2RpZ2l0cwotICAgIF0pOwotCi12YXIgcG9z
X25hbiA9IGluY2x1ZGVbMF07Ci0KLXZhciBuZWdfbmFuID0gaW5jbHVkZVsxXTsKLQotdmFyIG9m
X2Zsb2F0ID0gaW5jbHVkZVsyXTsKLQotdmFyIHRvX2Zsb2F0ID0gaW5jbHVkZVszXTsKLQotdmFy
IG9mX3N0cmluZyA9IGluY2x1ZGVbNF07Ci0KLXZhciB0b19zdHJpbmcgPSBpbmNsdWRlWzVdOwot
Ci12YXIgb2ZfYml0cyA9IGluY2x1ZGVbNl07Ci0KLXZhciB0b19iaXRzID0gaW5jbHVkZVs3XTsK
LQotdmFyIGFkZCA9IGluY2x1ZGVbOF07Ci0KLXZhciBzdWIgPSBpbmNsdWRlWzldOwotCi12YXIg
bXVsID0gaW5jbHVkZVsxMF07Ci0KLXZhciBkaXYgPSBpbmNsdWRlWzExXTsKLQotdmFyIHNxcnQg
PSBpbmNsdWRlWzEyXTsKLQotdmFyIG1pbiA9IGluY2x1ZGVbMTNdOwotCi12YXIgbWF4ID0gaW5j
bHVkZVsxNF07Ci0KLXZhciBjZWlsID0gaW5jbHVkZVsxNV07Ci0KLXZhciBmbG9vciA9IGluY2x1
ZGVbMTZdOwotCi12YXIgdHJ1bmMgPSBpbmNsdWRlWzE3XTsKLQotdmFyIG5lYXJlc3QgPSBpbmNs
dWRlWzE4XTsKLQotdmFyIGFicyA9IGluY2x1ZGVbMTldOwotCi12YXIgbmVnID0gaW5jbHVkZVsy
MF07Ci0KLXZhciBjb3B5c2lnbiA9IGluY2x1ZGVbMjFdOwotCi12YXIgZXEgPSBpbmNsdWRlWzIy
XTsKLQotdmFyIG5lID0gaW5jbHVkZVsyM107Ci0KLXZhciBsdCA9IGluY2x1ZGVbMjRdOwotCi12
YXIgbGUgPSBpbmNsdWRlWzI1XTsKLQotdmFyIGd0ID0gaW5jbHVkZVsyNl07Ci0KLXZhciBnZSA9
IGluY2x1ZGVbMjddOwotCi12YXIgemVybyA9IGluY2x1ZGVbMjhdOwotCi1leHBvcnRzLnBvc19u
YW4gICA9IHBvc19uYW47Ci1leHBvcnRzLm5lZ19uYW4gICA9IG5lZ19uYW47Ci1leHBvcnRzLm9m
X2Zsb2F0ICA9IG9mX2Zsb2F0OwotZXhwb3J0cy50b19mbG9hdCAgPSB0b19mbG9hdDsKLWV4cG9y
dHMub2Zfc3RyaW5nID0gb2Zfc3RyaW5nOwotZXhwb3J0cy50b19zdHJpbmcgPSB0b19zdHJpbmc7
Ci1leHBvcnRzLm9mX2JpdHMgICA9IG9mX2JpdHM7Ci1leHBvcnRzLnRvX2JpdHMgICA9IHRvX2Jp
dHM7Ci1leHBvcnRzLmFkZCAgICAgICA9IGFkZDsKLWV4cG9ydHMuc3ViICAgICAgID0gc3ViOwot
ZXhwb3J0cy5tdWwgICAgICAgPSBtdWw7Ci1leHBvcnRzLmRpdiAgICAgICA9IGRpdjsKLWV4cG9y
dHMuc3FydCAgICAgID0gc3FydDsKLWV4cG9ydHMubWluICAgICAgID0gbWluOwotZXhwb3J0cy5t
YXggICAgICAgPSBtYXg7Ci1leHBvcnRzLmNlaWwgICAgICA9IGNlaWw7Ci1leHBvcnRzLmZsb29y
ICAgICA9IGZsb29yOwotZXhwb3J0cy50cnVuYyAgICAgPSB0cnVuYzsKLWV4cG9ydHMubmVhcmVz
dCAgID0gbmVhcmVzdDsKLWV4cG9ydHMuYWJzICAgICAgID0gYWJzOwotZXhwb3J0cy5uZWcgICAg
ICAgPSBuZWc7Ci1leHBvcnRzLmNvcHlzaWduICA9IGNvcHlzaWduOwotZXhwb3J0cy5lcSAgICAg
ICAgPSBlcTsKLWV4cG9ydHMubmUgICAgICAgID0gbmU7Ci1leHBvcnRzLmx0ICAgICAgICA9IGx0
OwotZXhwb3J0cy5sZSAgICAgICAgPSBsZTsKLWV4cG9ydHMuZ3QgICAgICAgID0gZ3Q7Ci1leHBv
cnRzLmdlICAgICAgICA9IGdlOwotZXhwb3J0cy56ZXJvICAgICAgPSB6ZXJvOwotLyogaW5jbHVk
ZSBOb3QgYSBwdXJlIG1vZHVsZSAqLwotLy8vLy8vLy8gZW5kIG9mIGY2NC5qcyAvLy8vLy8vLwot
ICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydmbG9hdCddID0gZnVu
Y3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8vLy8vLy8vIHN0YXJ0IG9mIGZsb2F0
LmpzIC8vLy8vLy8vCi0vLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMg
LCBQTEVBU0UgRURJVCBXSVRIIENBUkUKLSd1c2Ugc3RyaWN0JzsKLQotdmFyIEN1cnJ5ICAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Ci12YXIg
JCRTdHJpbmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvc3Ry
aW5nIik7Ci12YXIgQ2FtbF9vYmogICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvY2FtbF9vYmoiKTsKLXZhciBQZXJ2YXNpdmVzICAgICAgICAgICAgICA9IHJlcXVp
cmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7Ci12YXIgQ2FtbF9mb3JtYXQgICAg
ICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9mb3JtYXQiKTsKLXZh
ciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9j
YW1sX3N0cmluZyIpOwotdmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7Ci0KLWZ1bmN0aW9uIE1h
a2UoUmVwKSB7Ci0gIHZhciBwb3NfbmFuID0gUmVwWy8qIHBvc19uYW4gKi8wXTsKLSAgdmFyIG5l
Z19uYW4gPSBSZXBbLyogbmVnX25hbiAqLzFdOwotICB2YXIgYmFyZV9uYW4gPSBSZXBbLyogYmFy
ZV9uYW4gKi8xMl07Ci0gIHZhciBvZl9mbG9hdCA9IFJlcFsvKiBiaXRzX29mX2Zsb2F0ICovMl07
Ci0gIHZhciB0b19mbG9hdCA9IFJlcFsvKiBmbG9hdF9vZl9iaXRzICovM107Ci0gIHZhciBvZl9i
aXRzID0gZnVuY3Rpb24gKHgpIHsKLSAgICByZXR1cm4geDsKLSAgfTsKLSAgdmFyIHRvX2JpdHMg
PSBmdW5jdGlvbiAoeCkgewotICAgIHJldHVybiB4OwotICB9OwotICB2YXIgaXNfbmFuID0gZnVu
Y3Rpb24gKHgpIHsKLSAgICB2YXIgeGYgPSBDdXJyeS5fMShSZXBbLyogZmxvYXRfb2ZfYml0cyAq
LzNdLCB4KTsKLSAgICByZXR1cm4gKyh4ZiAhPT0geGYpOwotICB9OwotICB2YXIgY2Fub25pY2Fs
aXplX25hbiA9IGZ1bmN0aW9uICh4KSB7Ci0gICAgcmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBsb2dv
ciAqLzddLCB4LCBSZXBbLyogcG9zX25hbiAqLzBdKTsKLSAgfTsKLSAgdmFyIGRldGVybWluZV9i
aW5hcnlfbmFuID0gZnVuY3Rpb24gKHgsIHkpIHsKLSAgICByZXR1cm4gY2Fub25pY2FsaXplX25h
bihpc19uYW4oeCkgPyB4IDogKAotICAgICAgICAgICAgICAgICAgaXNfbmFuKHkpID8geSA6IFJl
cFsvKiBwb3NfbmFuICovMF0KLSAgICAgICAgICAgICAgICApKTsKLSAgfTsKLSAgdmFyIGRldGVy
bWluZV91bmFyeV9uYW4gPSBmdW5jdGlvbiAoeCkgewotICAgIHJldHVybiBjYW5vbmljYWxpemVf
bmFuKGlzX25hbih4KSA/IHggOiBSZXBbLyogcG9zX25hbiAqLzBdKTsKLSAgfTsKLSAgdmFyIGJp
bmFyeSA9IGZ1bmN0aW9uICh4LCBvcCwgeSkgewotICAgIHZhciB4ZiA9IEN1cnJ5Ll8xKHRvX2Zs
b2F0LCB4KTsKLSAgICB2YXIgeWYgPSBDdXJyeS5fMSh0b19mbG9hdCwgeSk7Ci0gICAgdmFyIHQg
PSBDdXJyeS5fMihvcCwgeGYsIHlmKTsKLSAgICBpZiAodCA9PT0gdCkgewotICAgICAgcmV0dXJu
IEN1cnJ5Ll8xKG9mX2Zsb2F0LCB0KTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4g
ZGV0ZXJtaW5lX2JpbmFyeV9uYW4oeCwgeSk7Ci0gICAgfQotICB9OwotICB2YXIgdW5hcnkgPSBm
dW5jdGlvbiAob3AsIHgpIHsKLSAgICB2YXIgdCA9IEN1cnJ5Ll8xKG9wLCBDdXJyeS5fMSh0b19m
bG9hdCwgeCkpOwotICAgIGlmICh0ID09PSB0KSB7Ci0gICAgICByZXR1cm4gQ3VycnkuXzEob2Zf
ZmxvYXQsIHQpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBkZXRlcm1pbmVfdW5h
cnlfbmFuKHgpOwotICAgIH0KLSAgfTsKLSAgdmFyIHplcm8gPSBDdXJyeS5fMShvZl9mbG9hdCwg
MC4wKTsKLSAgdmFyIGFkZCA9IGZ1bmN0aW9uICh4LCB5KSB7Ci0gICAgcmV0dXJuIGJpbmFyeSh4
LCBmdW5jdGlvbiAocHJpbSwgcHJpbSQxKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHByaW0g
KyBwcmltJDE7Ci0gICAgICAgICAgICAgIH0sIHkpOwotICB9OwotICB2YXIgc3ViID0gZnVuY3Rp
b24gKHgsIHkpIHsKLSAgICByZXR1cm4gYmluYXJ5KHgsIGZ1bmN0aW9uIChwcmltLCBwcmltJDEp
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJpbSAtIHByaW0kMTsKLSAgICAgICAgICAgICAg
fSwgeSk7Ci0gIH07Ci0gIHZhciBtdWwgPSBmdW5jdGlvbiAoeCwgeSkgewotICAgIHJldHVybiBi
aW5hcnkoeCwgZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgewotICAgICAgICAgICAgICAgIHJldHVy
biBwcmltICogcHJpbSQxOwotICAgICAgICAgICAgICB9LCB5KTsKLSAgfTsKLSAgdmFyIGRpdiA9
IGZ1bmN0aW9uICh4LCB5KSB7Ci0gICAgcmV0dXJuIGJpbmFyeSh4LCBmdW5jdGlvbiAocHJpbSwg
cHJpbSQxKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHByaW0gLyBwcmltJDE7Ci0gICAgICAg
ICAgICAgIH0sIHkpOwotICB9OwotICB2YXIgc3FydCA9IGZ1bmN0aW9uICh4KSB7Ci0gICAgcmV0
dXJuIHVuYXJ5KGZ1bmN0aW9uIChwcmltKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGgu
c3FydChwcmltKTsKLSAgICAgICAgICAgICAgfSwgeCk7Ci0gIH07Ci0gIHZhciBjZWlsID0gZnVu
Y3Rpb24gKHgpIHsKLSAgICByZXR1cm4gdW5hcnkoZnVuY3Rpb24gKHByaW0pIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gTWF0aC5jZWlsKHByaW0pOwotICAgICAgICAgICAgICB9LCB4KTsKLSAg
fTsKLSAgdmFyIGZsb29yID0gZnVuY3Rpb24gKHgpIHsKLSAgICByZXR1cm4gdW5hcnkoZnVuY3Rp
b24gKHByaW0pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihwcmltKTsKLSAg
ICAgICAgICAgICAgfSwgeCk7Ci0gIH07Ci0gIHZhciB0cnVuYyA9IGZ1bmN0aW9uICh4KSB7Ci0g
ICAgdmFyIHhmID0gQ3VycnkuXzEodG9fZmxvYXQsIHgpOwotICAgIGlmICh4ZiA9PT0gMC4wKSB7
Ci0gICAgICByZXR1cm4geDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICB2YXIgZiA9IHhmIDwg
MC4wID8gTWF0aC5jZWlsKHhmKSA6IE1hdGguZmxvb3IoeGYpOwotICAgICAgdmFyIHJlc3VsdCA9
IEN1cnJ5Ll8xKG9mX2Zsb2F0LCBmKTsKLSAgICAgIGlmIChpc19uYW4ocmVzdWx0KSkgewotICAg
ICAgICByZXR1cm4gZGV0ZXJtaW5lX3VuYXJ5X25hbihyZXN1bHQpOwotICAgICAgfQotICAgICAg
ZWxzZSB7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgfQotICB9OwotICB2
YXIgbmVhcmVzdCA9IGZ1bmN0aW9uICh4KSB7Ci0gICAgdmFyIHhmID0gQ3VycnkuXzEodG9fZmxv
YXQsIHgpOwotICAgIGlmICh4ZiA9PT0gMC4wKSB7Ci0gICAgICByZXR1cm4geDsKLSAgICB9Ci0g
ICAgZWxzZSB7Ci0gICAgICB2YXIgdSA9IE1hdGguY2VpbCh4Zik7Ci0gICAgICB2YXIgZCA9IE1h
dGguZmxvb3IoeGYpOwotICAgICAgdmFyIHVtID0gTWF0aC5hYnMoeGYgLSB1KTsKLSAgICAgIHZh
ciBkbSA9IE1hdGguYWJzKHhmIC0gZCk7Ci0gICAgICB2YXIgaCA9IHUgLyAyOwotICAgICAgdmFy
IHVfb3JfZCA9ICsodW0gPCBkbSB8fCB1bSA9PT0gZG0gJiYgTWF0aC5mbG9vcihoKSA9PT0gaCk7
Ci0gICAgICB2YXIgZiA9IHVfb3JfZCA/IHUgOiBkOwotICAgICAgdmFyIHJlc3VsdCA9IEN1cnJ5
Ll8xKG9mX2Zsb2F0LCBmKTsKLSAgICAgIGlmIChpc19uYW4ocmVzdWx0KSkgewotICAgICAgICBy
ZXR1cm4gZGV0ZXJtaW5lX3VuYXJ5X25hbihyZXN1bHQpOwotICAgICAgfQotICAgICAgZWxzZSB7
Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgfQotICB9OwotICB2YXIgbWlu
ID0gZnVuY3Rpb24gKHgsIHkpIHsKLSAgICB2YXIgeGYgPSBDdXJyeS5fMSh0b19mbG9hdCwgeCk7
Ci0gICAgdmFyIHlmID0gQ3VycnkuXzEodG9fZmxvYXQsIHkpOwotICAgIGlmICh4ZiA9PT0geWYp
IHsKLSAgICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nb3IgKi83XSwgeCwgeSk7Ci0gICAg
fQotICAgIGVsc2UgaWYgKHhmIDwgeWYpIHsKLSAgICAgIHJldHVybiB4OwotICAgIH0KLSAgICBl
bHNlIGlmICh4ZiA+IHlmKSB7Ci0gICAgICByZXR1cm4geTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0g
ICAgICByZXR1cm4gZGV0ZXJtaW5lX2JpbmFyeV9uYW4oeCwgeSk7Ci0gICAgfQotICB9OwotICB2
YXIgbWF4ID0gZnVuY3Rpb24gKHgsIHkpIHsKLSAgICB2YXIgeGYgPSBDdXJyeS5fMSh0b19mbG9h
dCwgeCk7Ci0gICAgdmFyIHlmID0gQ3VycnkuXzEodG9fZmxvYXQsIHkpOwotICAgIGlmICh4ZiA9
PT0geWYpIHsKLSAgICAgIHJldHVybiBDdXJyeS5fMihSZXBbLyogbG9nYW5kICovNl0sIHgsIHkp
OwotICAgIH0KLSAgICBlbHNlIGlmICh4ZiA+IHlmKSB7Ci0gICAgICByZXR1cm4geDsKLSAgICB9
Ci0gICAgZWxzZSBpZiAoeGYgPCB5ZikgewotICAgICAgcmV0dXJuIHk7Ci0gICAgfQotICAgIGVs
c2UgewotICAgICAgcmV0dXJuIGRldGVybWluZV9iaW5hcnlfbmFuKHgsIHkpOwotICAgIH0KLSAg
fTsKLSAgdmFyIGFicyA9IGZ1bmN0aW9uICh4KSB7Ci0gICAgcmV0dXJuIEN1cnJ5Ll8yKFJlcFsv
KiBsb2dhbmQgKi82XSwgeCwgUmVwWy8qIG1heF9pbnQgKi8xMF0pOwotICB9OwotICB2YXIgbmVn
ID0gZnVuY3Rpb24gKHgpIHsKLSAgICByZXR1cm4gQ3VycnkuXzIoUmVwWy8qIGxvZ3hvciAqLzhd
LCB4LCBSZXBbLyogbWluX2ludCAqLzldKTsKLSAgfTsKLSAgdmFyIGNvcHlzaWduID0gZnVuY3Rp
b24gKHgsIHkpIHsKLSAgICByZXR1cm4gQ3VycnkuXzIoUmVwWy8qIGxvZ29yICovN10sIGFicyh4
KSwgQ3VycnkuXzIoUmVwWy8qIGxvZ2FuZCAqLzZdLCB5LCBSZXBbLyogbWluX2ludCAqLzldKSk7
Ci0gIH07Ci0gIHZhciBlcSA9IGZ1bmN0aW9uICh4LCB5KSB7Ci0gICAgcmV0dXJuICsoQ3Vycnku
XzEodG9fZmxvYXQsIHgpID09PSBDdXJyeS5fMSh0b19mbG9hdCwgeSkpOwotICB9OwotICB2YXIg
bmUgPSBmdW5jdGlvbiAoeCwgeSkgewotICAgIHJldHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4
KSAhPT0gQ3VycnkuXzEodG9fZmxvYXQsIHkpKTsKLSAgfTsKLSAgdmFyIGx0ID0gZnVuY3Rpb24g
KHgsIHkpIHsKLSAgICByZXR1cm4gKyhDdXJyeS5fMSh0b19mbG9hdCwgeCkgPCBDdXJyeS5fMSh0
b19mbG9hdCwgeSkpOwotICB9OwotICB2YXIgZ3QgPSBmdW5jdGlvbiAoeCwgeSkgewotICAgIHJl
dHVybiArKEN1cnJ5Ll8xKHRvX2Zsb2F0LCB4KSA+IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5KSk7Ci0g
IH07Ci0gIHZhciBsZSA9IGZ1bmN0aW9uICh4LCB5KSB7Ci0gICAgcmV0dXJuICsoQ3VycnkuXzEo
dG9fZmxvYXQsIHgpIDw9IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5KSk7Ci0gIH07Ci0gIHZhciBnZSA9
IGZ1bmN0aW9uICh4LCB5KSB7Ci0gICAgcmV0dXJuICsoQ3VycnkuXzEodG9fZmxvYXQsIHgpID49
IEN1cnJ5Ll8xKHRvX2Zsb2F0LCB5KSk7Ci0gIH07Ci0gIHZhciBvZl9zaWdubGVzc19zdHJpbmcg
PSBmdW5jdGlvbiAoeCwgbGVuKSB7Ci0gICAgaWYgKHggIT09ICJuYW4iICYmIGxlbiA+IDYgJiYg
JCRTdHJpbmcuc3ViKHgsIDAsIDYpID09PSAibmFuOjB4IikgewotICAgICAgdmFyIHMgPSBDdXJy
eS5fMShSZXBbLyogb2Zfc3RyaW5nICovNF0sICQkU3RyaW5nLnN1Yih4LCA0LCBsZW4gLSA0IHwg
MCkpOwotICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwocywgUmVwWy8qIHplcm8gKi8xMV0p
KSB7Ci0gICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuZmFpbHVyZSwKLSAgICAgICAgICAgICAgIm5hbiBwYXlsb2FkIG11c3Qgbm90IGJlIHplcm8i
Ci0gICAgICAgICAgICBdOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoQ2FtbF9vYmouY2FtbF9u
b3RlcXVhbChDdXJyeS5fMihSZXBbLyogbG9nYW5kICovNl0sIHMsIGJhcmVfbmFuKSwgUmVwWy8q
IHplcm8gKi8xMV0pKSB7Ci0gICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKLSAgICAgICAgICAgICAgIm5hbiBwYXlsb2FkIG11c3Qg
bm90IG92ZXJsYXAgd2l0aCBleHBvbmVudCBiaXRzIgotICAgICAgICAgICAgXTsKLSAgICAgIH0K
LSAgICAgIGVsc2UgaWYgKENhbWxfb2JqLmNhbWxfbGVzc3RoYW4ocywgUmVwWy8qIHplcm8gKi8x
MV0pKSB7Ci0gICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2Vw
dGlvbnMuZmFpbHVyZSwKLSAgICAgICAgICAgICAgIm5hbiBwYXlsb2FkIG11c3Qgbm90IG92ZXJs
YXAgd2l0aCBzaWduIGJpdCIKLSAgICAgICAgICAgIF07Ci0gICAgICB9Ci0gICAgICBlbHNlIHsK
LSAgICAgICAgcmV0dXJuIEN1cnJ5Ll8yKFJlcFsvKiBsb2dvciAqLzddLCBzLCBiYXJlX25hbik7
Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIEN1cnJ5Ll8xKG9mX2Zs
b2F0LCBDYW1sX2Zvcm1hdC5jYW1sX2Zsb2F0X29mX3N0cmluZyh4KSk7Ci0gICAgfQotICB9Owot
ICB2YXIgb2Zfc3RyaW5nID0gZnVuY3Rpb24gKHgpIHsKLSAgICB2YXIgbGVuID0geC5sZW5ndGg7
Ci0gICAgaWYgKGxlbiA+IDAgJiYgQ2FtbF9zdHJpbmcuZ2V0KHgsIDApID09PSAvKiAiLSIgKi80
NSkgewotICAgICAgcmV0dXJuIG5lZyhvZl9zaWdubGVzc19zdHJpbmcoJCRTdHJpbmcuc3ViKHgs
IDEsIGxlbiAtIDEgfCAwKSwgbGVuIC0gMSB8IDApKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobGVu
ID4gMCAmJiBDYW1sX3N0cmluZy5nZXQoeCwgMCkgPT09IC8qICIrIiAqLzQzKSB7Ci0gICAgICBy
ZXR1cm4gb2Zfc2lnbmxlc3Nfc3RyaW5nKCQkU3RyaW5nLnN1Yih4LCAxLCBsZW4gLSAxIHwgMCks
IGxlbiAtIDEgfCAwKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gb2Zfc2lnbmxl
c3Nfc3RyaW5nKHgsIGxlbik7Ci0gICAgfQotICB9OwotICB2YXIgdG9fc3RyaW5nID0gZnVuY3Rp
b24gKHgpIHsKLSAgICB2YXIgYSA9IGFicyh4KTsKLSAgICByZXR1cm4gKAotICAgICAgICAgICAg
Q2FtbF9vYmouY2FtbF9sZXNzdGhhbih4LCBSZXBbLyogemVybyAqLzExXSkgPyAiLSIgOiAiIgot
ICAgICAgICAgICkgKyAoCi0gICAgICAgICAgICBpc19uYW4oYSkgPyAibmFuOjB4IiArIEN1cnJ5
Ll8xKFJlcFsvKiBwcmludF9uYW5fc2lnbmlmaWNhbmRfZGlnaXRzICovMTNdLCBhKSA6IFBlcnZh
c2l2ZXMuc3RyaW5nX29mX2Zsb2F0KEN1cnJ5Ll8xKHRvX2Zsb2F0LCBhKSkKLSAgICAgICAgICAp
OwotICB9OwotICByZXR1cm4gLyogbW9kdWxlICovWwotICAgICAgICAgIC8qIHBvc19uYW4gKi9w
b3NfbmFuLAotICAgICAgICAgIC8qIG5lZ19uYW4gKi9uZWdfbmFuLAotICAgICAgICAgIC8qIG9m
X2Zsb2F0ICovb2ZfZmxvYXQsCi0gICAgICAgICAgLyogdG9fZmxvYXQgKi90b19mbG9hdCwKLSAg
ICAgICAgICAvKiBvZl9zdHJpbmcgKi9vZl9zdHJpbmcsCi0gICAgICAgICAgLyogdG9fc3RyaW5n
ICovdG9fc3RyaW5nLAotICAgICAgICAgIC8qIG9mX2JpdHMgKi9vZl9iaXRzLAotICAgICAgICAg
IC8qIHRvX2JpdHMgKi90b19iaXRzLAotICAgICAgICAgIC8qIGFkZCAqL2FkZCwKLSAgICAgICAg
ICAvKiBzdWIgKi9zdWIsCi0gICAgICAgICAgLyogbXVsICovbXVsLAotICAgICAgICAgIC8qIGRp
diAqL2RpdiwKLSAgICAgICAgICAvKiBzcXJ0ICovc3FydCwKLSAgICAgICAgICAvKiBtaW4gKi9t
aW4sCi0gICAgICAgICAgLyogbWF4ICovbWF4LAotICAgICAgICAgIC8qIGNlaWwgKi9jZWlsLAot
ICAgICAgICAgIC8qIGZsb29yICovZmxvb3IsCi0gICAgICAgICAgLyogdHJ1bmMgKi90cnVuYywK
LSAgICAgICAgICAvKiBuZWFyZXN0ICovbmVhcmVzdCwKLSAgICAgICAgICAvKiBhYnMgKi9hYnMs
Ci0gICAgICAgICAgLyogbmVnICovbmVnLAotICAgICAgICAgIC8qIGNvcHlzaWduICovY29weXNp
Z24sCi0gICAgICAgICAgLyogZXEgKi9lcSwKLSAgICAgICAgICAvKiBuZSAqL25lLAotICAgICAg
ICAgIC8qIGx0ICovbHQsCi0gICAgICAgICAgLyogbGUgKi9sZSwKLSAgICAgICAgICAvKiBndCAq
L2d0LAotICAgICAgICAgIC8qIGdlICovZ2UsCi0gICAgICAgICAgLyogemVybyAqL3plcm8KLSAg
ICAgICAgXTsKLX0KLQotZXhwb3J0cy5NYWtlID0gTWFrZTsKLS8qIE5vIHNpZGUgZWZmZWN0ICov
Ci0vLy8vLy8vLyBlbmQgb2YgZmxvYXQuanMgLy8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsK
LSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnZm9ybWF0J10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQg
ZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgZm9ybWF0LmpzIC8vLy8vLy8vCi0ndXNl
IHN0cmljdCc7Ci0KLXZhciBCbG9jayAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYmxv
Y2siKTsKLXZhciBCeXRlcyAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnl0ZXMiKTsK
LXZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKLXZhciBC
dWZmZXIgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vYnVmZmVyIik7Ci12YXIgJCRTdHJp
bmcgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3N0cmluZyIpOwotdmFyIENhbWxfaW8gICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2lvIik7Ci12YXIgQ2FtbF9vYmogICAgICAg
ICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfb2JqIik7Ci12YXIgUGVydmFzaXZlcyAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL3BlcnZhc2l2ZXMiKTsKLXZhciBDYW1sX3N0cmluZyAgICAgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKLXZhciBDYW1sX2V4Y2VwdGlvbnMgICAg
ICAgICA9IHJlcXVpcmUoIi4vY2FtbF9leGNlcHRpb25zIik7Ci12YXIgQ2FtbGludGVybmFsRm9y
bWF0ICAgICAgPSByZXF1aXJlKCIuL2NhbWxpbnRlcm5hbEZvcm1hdCIpOwotdmFyIENhbWxfYnVp
bHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOwot
Ci1mdW5jdGlvbiBhZGRfcXVldWUoeCwgcSkgewotICB2YXIgYyA9IC8qIENvbnMgKi9bLyogcmVj
b3JkICovWwotICAgICAgLyogaGVhZCAqL3gsCi0gICAgICAvKiB0YWlsIDogTmlsICovMAotICAg
IF1dOwotICB2YXIgbWF0Y2ggPSBxWy8qIGluc2VydCAqLzBdOwotICBpZiAobWF0Y2gpIHsKLSAg
ICBxWy8qIGluc2VydCAqLzBdID0gYzsKLSAgICBtYXRjaFswXVsvKiB0YWlsICovMV0gPSBjOwot
ICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcVsvKiBpbnNlcnQgKi8w
XSA9IGM7Ci0gICAgcVsvKiBib2R5ICovMV0gPSBjOwotICAgIHJldHVybiAvKiAoKSAqLzA7Ci0g
IH0KLX0KLQotdmFyIEVtcHR5X3F1ZXVlID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiRm9ybWF0
LkVtcHR5X3F1ZXVlIik7Ci0KLWZ1bmN0aW9uIHBlZWtfcXVldWUocGFyYW0pIHsKLSAgdmFyIG1h
dGNoID0gcGFyYW1bLyogYm9keSAqLzFdOwotICBpZiAobWF0Y2gpIHsKLSAgICByZXR1cm4gbWF0
Y2hbMF1bLyogaGVhZCAqLzBdOwotICB9Ci0gIGVsc2UgewotICAgIHRocm93IEVtcHR5X3F1ZXVl
OwotICB9Ci19Ci0KLWZ1bmN0aW9uIHRha2VfcXVldWUocSkgewotICB2YXIgbWF0Y2ggPSBxWy8q
IGJvZHkgKi8xXTsKLSAgaWYgKG1hdGNoKSB7Ci0gICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsK
LSAgICB2YXIgeCA9IG1hdGNoJDFbLyogaGVhZCAqLzBdOwotICAgIHZhciB0bCA9IG1hdGNoJDFb
LyogdGFpbCAqLzFdOwotICAgIHFbLyogYm9keSAqLzFdID0gdGw7Ci0gICAgaWYgKCF0bCkgewot
ICAgICAgcVsvKiBpbnNlcnQgKi8wXSA9IC8qIE5pbCAqLzA7Ci0gICAgfQotICAgIHJldHVybiB4
OwotICB9Ci0gIGVsc2UgewotICAgIHRocm93IEVtcHR5X3F1ZXVlOwotICB9Ci19Ci0KLWZ1bmN0
aW9uIHBwX2VucXVldWUoc3RhdGUsIHRva2VuKSB7Ci0gIHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFs
ICovMTJdID0gc3RhdGVbLyogcHBfcmlnaHRfdG90YWwgKi8xMl0gKyB0b2tlblsvKiBsZW5ndGgg
Ki8yXSB8IDA7Ci0gIHJldHVybiBhZGRfcXVldWUodG9rZW4sIHN0YXRlWy8qIHBwX3F1ZXVlICov
MjZdKTsKLX0KLQotZnVuY3Rpb24gcHBfY2xlYXJfcXVldWUoc3RhdGUpIHsKLSAgc3RhdGVbLyog
cHBfbGVmdF90b3RhbCAqLzExXSA9IDE7Ci0gIHN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJd
ID0gMTsKLSAgdmFyIHEgPSBzdGF0ZVsvKiBwcF9xdWV1ZSAqLzI2XTsKLSAgcVsvKiBpbnNlcnQg
Ki8wXSA9IC8qIE5pbCAqLzA7Ci0gIHFbLyogYm9keSAqLzFdID0gLyogTmlsICovMDsKLSAgcmV0
dXJuIC8qICgpICovMDsKLX0KLQotZnVuY3Rpb24gcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgcykg
ewotICByZXR1cm4gQ3VycnkuXzMoc3RhdGVbLyogcHBfb3V0X3N0cmluZyAqLzE2XSwgcywgMCwg
cy5sZW5ndGgpOwotfQotCi1mdW5jdGlvbiBicmVha19uZXdfbGluZShzdGF0ZSwgb2Zmc2V0LCB3
aWR0aCkgewotICBDdXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkg
Ki8wKTsKLSAgc3RhdGVbLyogcHBfaXNfbmV3X2xpbmUgKi8xMF0gPSAvKiB0cnVlICovMTsKLSAg
dmFyIGluZGVudCA9IChzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAtIHdpZHRoIHwgMCkgKyBvZmZz
ZXQgfCAwOwotICB2YXIgcmVhbF9pbmRlbnQgPSBQZXJ2YXNpdmVzLm1pbihzdGF0ZVsvKiBwcF9t
YXhfaW5kZW50ICovN10sIGluZGVudCk7Ci0gIHN0YXRlWy8qIHBwX2N1cnJlbnRfaW5kZW50ICov
OV0gPSByZWFsX2luZGVudDsKLSAgc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdID0gc3RhdGVb
LyogcHBfbWFyZ2luICovNV0gLSBzdGF0ZVsvKiBwcF9jdXJyZW50X2luZGVudCAqLzldIHwgMDsK
LSAgcmV0dXJuIEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0sIHN0YXRlWy8q
IHBwX2N1cnJlbnRfaW5kZW50ICovOV0pOwotfQotCi1mdW5jdGlvbiBicmVha19zYW1lX2xpbmUo
c3RhdGUsIHdpZHRoKSB7Ci0gIHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSA9IHN0YXRlWy8q
IHBwX3NwYWNlX2xlZnQgKi84XSAtIHdpZHRoIHwgMDsKLSAgcmV0dXJuIEN1cnJ5Ll8xKHN0YXRl
Wy8qIHBwX291dF9zcGFjZXMgKi8xOV0sIHdpZHRoKTsKLX0KLQotZnVuY3Rpb24gcHBfZm9yY2Vf
YnJlYWtfbGluZShzdGF0ZSkgewotICB2YXIgbWF0Y2ggPSBzdGF0ZVsvKiBwcF9mb3JtYXRfc3Rh
Y2sgKi8xXTsKLSAgaWYgKG1hdGNoKSB7Ci0gICAgdmFyIG1hdGNoJDEgPSBtYXRjaFswXTsKLSAg
ICB2YXIgd2lkdGggPSBtYXRjaCQxWzFdOwotICAgIHZhciBibF90eSA9IG1hdGNoJDFbMF07Ci0g
ICAgaWYgKHdpZHRoID4gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdICYmIGJsX3R5ICE9PSAw
ICYmIGJsX3R5IDwgNSkgewotICAgICAgcmV0dXJuIGJyZWFrX25ld19saW5lKHN0YXRlLCAwLCB3
aWR0aCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICB9Ci0g
IGVsc2UgewotICAgIHJldHVybiBDdXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4
XSwgLyogKCkgKi8wKTsKLSAgfQotfQotCi1mdW5jdGlvbiBmb3JtYXRfcHBfdG9rZW4oc3RhdGUs
IHNpemUsIHBhcmFtKSB7Ci0gIGlmICh0eXBlb2YgcGFyYW0gPT09ICJudW1iZXIiKSB7Ci0gICAg
c3dpdGNoIChwYXJhbSkgewotICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgdmFyIG1hdGNoID0g
c3RhdGVbLyogcHBfdGJveF9zdGFjayAqLzJdOwotICAgICAgICAgIGlmIChtYXRjaCkgewotICAg
ICAgICAgICAgdmFyIHRhYnMgPSBtYXRjaFswXVswXTsKLSAgICAgICAgICAgIHZhciBhZGRfdGFi
ID0gZnVuY3Rpb24gKG4sIGxzKSB7Ci0gICAgICAgICAgICAgIGlmIChscykgewotICAgICAgICAg
ICAgICAgIHZhciB4ID0gbHNbMF07Ci0gICAgICAgICAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxf
bGVzc3RoYW4obiwgeCkpIHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbHMK
LSAgICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAg
ICAgICAgICAgICAgICAgICAgICB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfdGFi
KG4sIGxzWzFdKQotICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0YWJzWzBdID0gYWRkX3RhYihz
dGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAtIHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSB8IDAs
IHRhYnNbMF0pOwotICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgICAgICB9Ci0g
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgICAgICAg
IH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIHZhciBtYXRj
aCQxID0gc3RhdGVbLyogcHBfZm9ybWF0X3N0YWNrICovMV07Ci0gICAgICAgICAgaWYgKG1hdGNo
JDEpIHsKLSAgICAgICAgICAgIHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdID0gbWF0Y2gk
MVsxXTsKLSAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgICAgICAgfQotICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgICAgICB9Ci0g
ICAgICBjYXNlIDIgOiAKLSAgICAgICAgICB2YXIgbWF0Y2gkMiA9IHN0YXRlWy8qIHBwX3Rib3hf
c3RhY2sgKi8yXTsKLSAgICAgICAgICBpZiAobWF0Y2gkMikgewotICAgICAgICAgICAgc3RhdGVb
LyogcHBfdGJveF9zdGFjayAqLzJdID0gbWF0Y2gkMlsxXTsKLSAgICAgICAgICAgIHJldHVybiAv
KiAoKSAqLzA7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0
dXJuIC8qICgpICovMDsKLSAgICAgICAgICB9Ci0gICAgICBjYXNlIDMgOiAKLSAgICAgICAgICB2
YXIgbWF0Y2gkMyA9IHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdOwotICAgICAgICAgIGlm
IChtYXRjaCQzKSB7Ci0gICAgICAgICAgICByZXR1cm4gYnJlYWtfbmV3X2xpbmUoc3RhdGUsIDAs
IG1hdGNoJDNbMF1bMV0pOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHJldHVybiBDdXJyeS5fMShzdGF0ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSwgLyogKCkg
Ki8wKTsKLSAgICAgICAgICB9Ci0gICAgICBjYXNlIDQgOiAKLSAgICAgICAgICBpZiAoc3RhdGVb
LyogcHBfY3VycmVudF9pbmRlbnQgKi85XSAhPT0gKHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdIC0g
c3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIHwgMCkpIHsKLSAgICAgICAgICAgIHZhciBzdGF0
ZSQxID0gc3RhdGU7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkNCA9IHRha2VfcXVldWUoc3RhdGUk
MVsvKiBwcF9xdWV1ZSAqLzI2XSk7Ci0gICAgICAgICAgICB2YXIgc2l6ZSQxID0gbWF0Y2gkNFsv
KiBlbGVtX3NpemUgKi8wXTsKLSAgICAgICAgICAgIHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAq
LzExXSA9IHN0YXRlJDFbLyogcHBfbGVmdF90b3RhbCAqLzExXSAtIG1hdGNoJDRbLyogbGVuZ3Ro
ICovMl0gfCAwOwotICAgICAgICAgICAgc3RhdGUkMVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gPSBz
dGF0ZSQxWy8qIHBwX3NwYWNlX2xlZnQgKi84XSArIHNpemUkMSB8IDA7Ci0gICAgICAgICAgICBy
ZXR1cm4gLyogKCkgKi8wOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICAgIH0KLSAgICAgIGNhc2UgNSA6IAotICAgICAgICAgIHZh
ciBtYXRjaCQ1ID0gc3RhdGVbLyogcHBfbWFya19zdGFjayAqLzRdOwotICAgICAgICAgIGlmICht
YXRjaCQ1KSB7Ci0gICAgICAgICAgICB2YXIgbWFya2VyID0gQ3VycnkuXzEoc3RhdGVbLyogcHBf
bWFya19jbG9zZV90YWcgKi8yM10sIG1hdGNoJDVbMF0pOwotICAgICAgICAgICAgcHBfb3V0cHV0
X3N0cmluZyhzdGF0ZSwgbWFya2VyKTsKLSAgICAgICAgICAgIHN0YXRlWy8qIHBwX21hcmtfc3Rh
Y2sgKi80XSA9IG1hdGNoJDVbMV07Ci0gICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOwotICAg
ICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7
Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgCi0gICAgfQotICB9Ci0gIGVs
c2UgewotICAgIHN3aXRjaCAocGFyYW0udGFnIHwgMCkgewotICAgICAgY2FzZSAwIDogCi0gICAg
ICAgICAgc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdID0gc3RhdGVbLyogcHBfc3BhY2VfbGVm
dCAqLzhdIC0gc2l6ZSB8IDA7Ci0gICAgICAgICAgcHBfb3V0cHV0X3N0cmluZyhzdGF0ZSwgcGFy
YW1bMF0pOwotICAgICAgICAgIHN0YXRlWy8qIHBwX2lzX25ld19saW5lICovMTBdID0gLyogZmFs
c2UgKi8wOwotICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgICBjYXNlIDEgOiAKLSAg
ICAgICAgICB2YXIgb2ZmID0gcGFyYW1bMV07Ci0gICAgICAgICAgdmFyIG4gPSBwYXJhbVswXTsK
LSAgICAgICAgICB2YXIgbWF0Y2gkNiA9IHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdOwot
ICAgICAgICAgIGlmIChtYXRjaCQ2KSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkNyA9IG1hdGNo
JDZbMF07Ci0gICAgICAgICAgICB2YXIgd2lkdGggPSBtYXRjaCQ3WzFdOwotICAgICAgICAgICAg
c3dpdGNoIChtYXRjaCQ3WzBdKSB7Ci0gICAgICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAg
ICAgICBjYXNlIDIgOiAKLSAgICAgICAgICAgICAgICAgIHJldHVybiBicmVha19uZXdfbGluZShz
dGF0ZSwgb2ZmLCB3aWR0aCk7Ci0gICAgICAgICAgICAgIGNhc2UgMyA6IAotICAgICAgICAgICAg
ICAgICAgaWYgKHNpemUgPiBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGJyZWFrX25ld19saW5lKHN0YXRlLCBvZmYsIHdpZHRoKTsKLSAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKLSAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgY2FzZSA0IDogCi0gICAgICAgICAgICAgICAgICBpZiAoc3Rh
dGVbLyogcHBfaXNfbmV3X2xpbmUgKi8xMF0gfHwgIShzaXplID4gc3RhdGVbLyogcHBfc3BhY2Vf
bGVmdCAqLzhdIHx8IHN0YXRlWy8qIHBwX2N1cnJlbnRfaW5kZW50ICovOV0gPiAoKHN0YXRlWy8q
IHBwX21hcmdpbiAqLzVdIC0gd2lkdGggfCAwKSArIG9mZiB8IDApKSkgewotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKLSAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gYnJlYWtfbmV3X2xpbmUoc3RhdGUsIG9mZiwgd2lkdGgpOwotICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgICAgY2FzZSA1IDogCi0gICAg
ICAgICAgICAgICAgICByZXR1cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBuKTsKLSAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIDIgOiAKLSAgICAgICAgICB2YXIgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGVb
LyogcHBfbWFyZ2luICovNV0gLSBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gfCAwOwotICAg
ICAgICAgIHZhciBtYXRjaCQ4ID0gc3RhdGVbLyogcHBfdGJveF9zdGFjayAqLzJdOwotICAgICAg
ICAgIGlmIChtYXRjaCQ4KSB7Ci0gICAgICAgICAgICB2YXIgdGFicyQxID0gbWF0Y2gkOFswXVsw
XTsKLSAgICAgICAgICAgIHZhciBmaW5kID0gZnVuY3Rpb24gKG4sIF9wYXJhbSkgewotICAgICAg
ICAgICAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHBhcmFtID0gX3BhcmFt
OwotICAgICAgICAgICAgICAgIGlmIChwYXJhbSkgewotICAgICAgICAgICAgICAgICAgdmFyIHgg
PSBwYXJhbVswXTsKLSAgICAgICAgICAgICAgICAgIGlmIChDYW1sX29iai5jYW1sX2dyZWF0ZXJl
cXVhbCh4LCBuKSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBf
cGFyYW0gPSBwYXJhbVsxXTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUgOwotICAgICAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICB0aHJvdyBDYW1sX2J1aWx0
aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICB9OwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHZhciBtYXRjaCQ5ID0gdGFicyQxWzBd
OwotICAgICAgICAgICAgdmFyIHRhYjsKLSAgICAgICAgICAgIGlmIChtYXRjaCQ5KSB7Ci0gICAg
ICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgdGFiID0gZmluZChpbnNlcnRpb25fcG9p
bnQsIHRhYnMkMVswXSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgY2F0Y2ggKGV4
bil7Ci0gICAgICAgICAgICAgICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMu
bm90X2ZvdW5kKSB7Ci0gICAgICAgICAgICAgICAgICB0YWIgPSBtYXRjaCQ5WzBdOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIHRo
cm93IGV4bjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICB0YWIgPSBpbnNlcnRpb25fcG9p
bnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0
aW9uX3BvaW50IHwgMDsKLSAgICAgICAgICAgIGlmIChvZmZzZXQgPj0gMCkgewotICAgICAgICAg
ICAgICByZXR1cm4gYnJlYWtfc2FtZV9saW5lKHN0YXRlLCBvZmZzZXQgKyBwYXJhbVswXSB8IDAp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVy
biBicmVha19uZXdfbGluZShzdGF0ZSwgdGFiICsgcGFyYW1bMV0gfCAwLCBzdGF0ZVsvKiBwcF9t
YXJnaW4gKi81XSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgICAgICB9Ci0gICAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIDMgOiAKLSAgICAgICAgICB2YXIgdHkgPSBwYXJhbVsxXTsKLSAg
ICAgICAgICB2YXIgaW5zZXJ0aW9uX3BvaW50JDEgPSBzdGF0ZVsvKiBwcF9tYXJnaW4gKi81XSAt
IHN0YXRlWy8qIHBwX3NwYWNlX2xlZnQgKi84XSB8IDA7Ci0gICAgICAgICAgaWYgKGluc2VydGlv
bl9wb2ludCQxID4gc3RhdGVbLyogcHBfbWF4X2luZGVudCAqLzddKSB7Ci0gICAgICAgICAgICBw
cF9mb3JjZV9icmVha19saW5lKHN0YXRlKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgdmFyIG9m
ZnNldCQxID0gc3RhdGVbLyogcHBfc3BhY2VfbGVmdCAqLzhdIC0gcGFyYW1bMF0gfCAwOwotICAg
ICAgICAgIHZhciBibF90eXBlID0gdHkgIT09IDEgPyAoCi0gICAgICAgICAgICAgIHNpemUgPiBz
dGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gPyB0eSA6IC8qIFBwX2ZpdHMgKi81Ci0gICAgICAg
ICAgICApIDogLyogUHBfdmJveCAqLzE7Ci0gICAgICAgICAgc3RhdGVbLyogcHBfZm9ybWF0X3N0
YWNrICovMV0gPSAvKiA6OiAqL1sKLSAgICAgICAgICAgIC8qIEZvcm1hdF9lbGVtICovWwotICAg
ICAgICAgICAgICBibF90eXBlLAotICAgICAgICAgICAgICBvZmZzZXQkMQotICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgIHN0YXRlWy8qIHBwX2Zvcm1hdF9zdGFjayAqLzFdCi0gICAgICAgICAg
XTsKLSAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgICAgY2FzZSA0IDogCi0gICAgICAg
ICAgc3RhdGVbLyogcHBfdGJveF9zdGFjayAqLzJdID0gLyogOjogKi9bCi0gICAgICAgICAgICBw
YXJhbVswXSwKLSAgICAgICAgICAgIHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8yXQotICAgICAg
ICAgIF07Ci0gICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgIGNhc2UgNSA6IAotICAg
ICAgICAgIHZhciB0YWdfbmFtZSA9IHBhcmFtWzBdOwotICAgICAgICAgIHZhciBtYXJrZXIkMSA9
IEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0sIHRhZ19uYW1lKTsKLSAg
ICAgICAgICBwcF9vdXRwdXRfc3RyaW5nKHN0YXRlLCBtYXJrZXIkMSk7Ci0gICAgICAgICAgc3Rh
dGVbLyogcHBfbWFya19zdGFjayAqLzRdID0gLyogOjogKi9bCi0gICAgICAgICAgICB0YWdfbmFt
ZSwKLSAgICAgICAgICAgIHN0YXRlWy8qIHBwX21hcmtfc3RhY2sgKi80XQotICAgICAgICAgIF07
Ci0gICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgIAotICAgIH0KLSAgfQotfQotCi1m
dW5jdGlvbiBhZHZhbmNlX2xlZnQoc3RhdGUpIHsKLSAgdHJ5IHsKLSAgICB2YXIgc3RhdGUkMSA9
IHN0YXRlOwotICAgIHdoaWxlKHRydWUpIHsKLSAgICAgIHZhciBtYXRjaCA9IHBlZWtfcXVldWUo
c3RhdGUkMVsvKiBwcF9xdWV1ZSAqLzI2XSk7Ci0gICAgICB2YXIgc2l6ZSA9IG1hdGNoWy8qIGVs
ZW1fc2l6ZSAqLzBdOwotICAgICAgaWYgKHNpemUgPCAwICYmIChzdGF0ZSQxWy8qIHBwX3JpZ2h0
X3RvdGFsICovMTJdIC0gc3RhdGUkMVsvKiBwcF9sZWZ0X3RvdGFsICovMTFdIHwgMCkgPCBzdGF0
ZSQxWy8qIHBwX3NwYWNlX2xlZnQgKi84XSkgewotICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0K
LSAgICAgIGVsc2UgewotICAgICAgICB0YWtlX3F1ZXVlKHN0YXRlJDFbLyogcHBfcXVldWUgKi8y
Nl0pOwotICAgICAgICBmb3JtYXRfcHBfdG9rZW4oc3RhdGUkMSwgc2l6ZSA8IDAgPyAxMDAwMDAw
MDEwIDogc2l6ZSwgbWF0Y2hbLyogdG9rZW4gKi8xXSk7Ci0gICAgICAgIHN0YXRlJDFbLyogcHBf
bGVmdF90b3RhbCAqLzExXSA9IG1hdGNoWy8qIGxlbmd0aCAqLzJdICsgc3RhdGUkMVsvKiBwcF9s
ZWZ0X3RvdGFsICovMTFdIHwgMDsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAg
IH0KLSAgICB9OwotICB9Ci0gIGNhdGNoIChleG4pewotICAgIGlmIChleG4gPT09IEVtcHR5X3F1
ZXVlKSB7Ci0gICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAg
IHRocm93IGV4bjsKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gZW5xdWV1ZV9hZHZhbmNlKHN0
YXRlLCB0b2spIHsKLSAgcHBfZW5xdWV1ZShzdGF0ZSwgdG9rKTsKLSAgcmV0dXJuIGFkdmFuY2Vf
bGVmdChzdGF0ZSk7Ci19Ci0KLWZ1bmN0aW9uIGVucXVldWVfc3RyaW5nX2FzKHN0YXRlLCBzaXpl
LCBzKSB7Ci0gIHJldHVybiBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAqL1sKLSAg
ICAgICAgICAgICAgLyogZWxlbV9zaXplICovc2l6ZSwKLSAgICAgICAgICAgICAgLyogdG9rZW4g
OiBQcF90ZXh0ICovQmxvY2suX18oMCwgW3NdKSwKLSAgICAgICAgICAgICAgLyogbGVuZ3RoICov
c2l6ZQotICAgICAgICAgICAgXSk7Ci19Ci0KLXZhciBxX2VsZW0gPSAvKiByZWNvcmQgKi9bCi0g
IC8qIGVsZW1fc2l6ZSAqLy0xLAotICAvKiB0b2tlbiA6IFBwX3RleHQgKi9CbG9jay5fXygwLCBb
IiJdKSwKLSAgLyogbGVuZ3RoICovMAotXTsKLQotdmFyIHNjYW5fc3RhY2tfYm90dG9tXzAwMCA9
IC8qIFNjYW5fZWxlbSAqL1sKLSAgLTEsCi0gIHFfZWxlbQotXTsKLQotdmFyIHNjYW5fc3RhY2tf
Ym90dG9tID0gLyogOjogKi9bCi0gIHNjYW5fc3RhY2tfYm90dG9tXzAwMCwKLSAgLyogW10gKi8w
Ci1dOwotCi1mdW5jdGlvbiBzZXRfc2l6ZShzdGF0ZSwgdHkpIHsKLSAgdmFyIG1hdGNoID0gc3Rh
dGVbLyogcHBfc2Nhbl9zdGFjayAqLzBdOwotICBpZiAobWF0Y2gpIHsKLSAgICB2YXIgbWF0Y2gk
MSA9IG1hdGNoWzBdOwotICAgIHZhciBxdWV1ZV9lbGVtID0gbWF0Y2gkMVsxXTsKLSAgICB2YXIg
c2l6ZSA9IHF1ZXVlX2VsZW1bLyogZWxlbV9zaXplICovMF07Ci0gICAgdmFyIHQgPSBtYXRjaFsx
XTsKLSAgICBpZiAobWF0Y2gkMVswXSA8IHN0YXRlWy8qIHBwX2xlZnRfdG90YWwgKi8xMV0pIHsK
LSAgICAgIHN0YXRlWy8qIHBwX3NjYW5fc3RhY2sgKi8wXSA9IHNjYW5fc3RhY2tfYm90dG9tOwot
ICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICB2YXIgZXhp
dCA9IDA7Ci0gICAgICB2YXIgJGpzID0gcXVldWVfZWxlbVsvKiB0b2tlbiAqLzFdOwotICAgICAg
aWYgKHR5cGVvZiAkanMgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgIHJldHVybiAvKiAoKSAqLzA7
Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgc3dpdGNoICgkanMudGFnIHwgMCkgewot
ICAgICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgICBl
eGl0ID0gMTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSAzIDogCi0gICAg
ICAgICAgICAgIGlmICh0eSkgewotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHF1ZXVlX2VsZW1b
LyogZWxlbV9zaXplICovMF0gPSBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSArIHNpemUg
fCAwOwotICAgICAgICAgICAgICAgIHN0YXRlWy8qIHBwX3NjYW5fc3RhY2sgKi8wXSA9IHQ7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgICAgICAgICAgfQotICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgICAgICB9Ci0g
ICAgICB9Ci0gICAgICBpZiAoZXhpdCA9PT0gMSkgewotICAgICAgICBpZiAodHkpIHsKLSAgICAg
ICAgICBxdWV1ZV9lbGVtWy8qIGVsZW1fc2l6ZSAqLzBdID0gc3RhdGVbLyogcHBfcmlnaHRfdG90
YWwgKi8xMl0gKyBzaXplIHwgMDsKLSAgICAgICAgICBzdGF0ZVsvKiBwcF9zY2FuX3N0YWNrICov
MF0gPSB0OwotICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIAot
ICAgIH0KLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyogKCkgKi8wOwotICB9Ci19Ci0KLWZ1
bmN0aW9uIHNjYW5fcHVzaChzdGF0ZSwgYiwgdG9rKSB7Ci0gIHBwX2VucXVldWUoc3RhdGUsIHRv
ayk7Ci0gIGlmIChiKSB7Ci0gICAgc2V0X3NpemUoc3RhdGUsIC8qIHRydWUgKi8xKTsKLSAgfQot
ICBzdGF0ZVsvKiBwcF9zY2FuX3N0YWNrICovMF0gPSAvKiA6OiAqL1sKLSAgICAvKiBTY2FuX2Vs
ZW0gKi9bCi0gICAgICBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSwKLSAgICAgIHRvawot
ICAgIF0sCi0gICAgc3RhdGVbLyogcHBfc2Nhbl9zdGFjayAqLzBdCi0gIF07Ci0gIHJldHVybiAv
KiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCBi
cl90eSkgewotICBzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdID0gc3RhdGVbLyogcHBfY3Vy
cl9kZXB0aCAqLzEzXSArIDEgfCAwOwotICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEz
XSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgewotICAgIHZhciBlbGVtID0gLyogcmVj
b3JkICovWwotICAgICAgLyogZWxlbV9zaXplICovLXN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICov
MTJdIHwgMCwKLSAgICAgIC8qIHRva2VuIDogUHBfYmVnaW4gKi9CbG9jay5fXygzLCBbCi0gICAg
ICAgICAgaW5kZW50LAotICAgICAgICAgIGJyX3R5Ci0gICAgICAgIF0pLAotICAgICAgLyogbGVu
Z3RoICovMAotICAgIF07Ci0gICAgcmV0dXJuIHNjYW5fcHVzaChzdGF0ZSwgLyogZmFsc2UgKi8w
LCBlbGVtKTsKLSAgfQotICBlbHNlIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNdID09
PSBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMgKi8xNF0pIHsKLSAgICB2YXIgc3RhdGUkMSA9IHN0YXRl
OwotICAgIHZhciBzID0gc3RhdGVbLyogcHBfZWxsaXBzaXMgKi8xNV07Ci0gICAgdmFyIGxlbiA9
IHMubGVuZ3RoOwotICAgIHJldHVybiBlbnF1ZXVlX3N0cmluZ19hcyhzdGF0ZSQxLCBsZW4sIHMp
OwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAwOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHBwX2Ns
b3NlX2JveChzdGF0ZSwgXykgewotICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA+
IDEpIHsKLSAgICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBw
X21heF9ib3hlcyAqLzE0XSkgewotICAgICAgcHBfZW5xdWV1ZShzdGF0ZSwgLyogcmVjb3JkICov
WwotICAgICAgICAgICAgLyogZWxlbV9zaXplICovMCwKLSAgICAgICAgICAgIC8qIHRva2VuIDog
UHBfZW5kICovMSwKLSAgICAgICAgICAgIC8qIGxlbmd0aCAqLzAKLSAgICAgICAgICBdKTsKLSAg
ICAgIHNldF9zaXplKHN0YXRlLCAvKiB0cnVlICovMSk7Ci0gICAgICBzZXRfc2l6ZShzdGF0ZSwg
LyogZmFsc2UgKi8wKTsKLSAgICB9Ci0gICAgc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9
IHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gLSAxIHwgMDsKLSAgICByZXR1cm4gLyogKCkg
Ki8wOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAwOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHBw
X29wZW5fdGFnKHN0YXRlLCB0YWdfbmFtZSkgewotICBpZiAoc3RhdGVbLyogcHBfcHJpbnRfdGFn
cyAqLzIwXSkgewotICAgIHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdID0gLyogOjogKi9bCi0g
ICAgICB0YWdfbmFtZSwKLSAgICAgIHN0YXRlWy8qIHBwX3RhZ19zdGFjayAqLzNdCi0gICAgXTsK
LSAgICBDdXJyeS5fMShzdGF0ZVsvKiBwcF9wcmludF9vcGVuX3RhZyAqLzI0XSwgdGFnX25hbWUp
OwotICB9Ci0gIGlmIChzdGF0ZVsvKiBwcF9tYXJrX3RhZ3MgKi8yMV0pIHsKLSAgICByZXR1cm4g
cHBfZW5xdWV1ZShzdGF0ZSwgLyogcmVjb3JkICovWwotICAgICAgICAgICAgICAgIC8qIGVsZW1f
c2l6ZSAqLzAsCi0gICAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF9vcGVuX3RhZyAqL0Jsb2Nr
Ll9fKDUsIFt0YWdfbmFtZV0pLAotICAgICAgICAgICAgICAgIC8qIGxlbmd0aCAqLzAKLSAgICAg
ICAgICAgICAgXSk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotZnVu
Y3Rpb24gcHBfY2xvc2VfdGFnKHN0YXRlLCBfKSB7Ci0gIGlmIChzdGF0ZVsvKiBwcF9tYXJrX3Rh
Z3MgKi8yMV0pIHsKLSAgICBwcF9lbnF1ZXVlKHN0YXRlLCAvKiByZWNvcmQgKi9bCi0gICAgICAg
ICAgLyogZWxlbV9zaXplICovMCwKLSAgICAgICAgICAvKiB0b2tlbiA6IFBwX2Nsb3NlX3RhZyAq
LzUsCi0gICAgICAgICAgLyogbGVuZ3RoICovMAotICAgICAgICBdKTsKLSAgfQotICBpZiAoc3Rh
dGVbLyogcHBfcHJpbnRfdGFncyAqLzIwXSkgewotICAgIHZhciBtYXRjaCA9IHN0YXRlWy8qIHBw
X3RhZ19zdGFjayAqLzNdOwotICAgIGlmIChtYXRjaCkgewotICAgICAgQ3VycnkuXzEoc3RhdGVb
LyogcHBfcHJpbnRfY2xvc2VfdGFnICovMjVdLCBtYXRjaFswXSk7Ci0gICAgICBzdGF0ZVsvKiBw
cF90YWdfc3RhY2sgKi8zXSA9IG1hdGNoWzFdOwotICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAg
ICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgIH0KLSAgfQotICBl
bHNlIHsKLSAgICByZXR1cm4gMDsKLSAgfQotfQotCi1mdW5jdGlvbiBwcF9zZXRfcHJpbnRfdGFn
cyhzdGF0ZSwgYikgewotICBzdGF0ZVsvKiBwcF9wcmludF90YWdzICovMjBdID0gYjsKLSAgcmV0
dXJuIC8qICgpICovMDsKLX0KLQotZnVuY3Rpb24gcHBfc2V0X21hcmtfdGFncyhzdGF0ZSwgYikg
ewotICBzdGF0ZVsvKiBwcF9tYXJrX3RhZ3MgKi8yMV0gPSBiOwotICByZXR1cm4gLyogKCkgKi8w
OwotfQotCi1mdW5jdGlvbiBwcF9nZXRfcHJpbnRfdGFncyhzdGF0ZSwgXykgewotICByZXR1cm4g
c3RhdGVbLyogcHBfcHJpbnRfdGFncyAqLzIwXTsKLX0KLQotZnVuY3Rpb24gcHBfZ2V0X21hcmtf
dGFncyhzdGF0ZSwgXykgewotICByZXR1cm4gc3RhdGVbLyogcHBfbWFya190YWdzICovMjFdOwot
fQotCi1mdW5jdGlvbiBwcF9zZXRfdGFncyhzdGF0ZSwgYikgewotICBzdGF0ZVsvKiBwcF9wcmlu
dF90YWdzICovMjBdID0gYjsKLSAgc3RhdGVbLyogcHBfbWFya190YWdzICovMjFdID0gYjsKLSAg
cmV0dXJuIC8qICgpICovMDsKLX0KLQotZnVuY3Rpb24gcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVu
Y3Rpb25zKHN0YXRlLCBfKSB7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAgICAgLyog
bWFya19vcGVuX3RhZyAqL3N0YXRlWy8qIHBwX21hcmtfb3Blbl90YWcgKi8yMl0sCi0gICAgICAg
ICAgLyogbWFya19jbG9zZV90YWcgKi9zdGF0ZVsvKiBwcF9tYXJrX2Nsb3NlX3RhZyAqLzIzXSwK
LSAgICAgICAgICAvKiBwcmludF9vcGVuX3RhZyAqL3N0YXRlWy8qIHBwX3ByaW50X29wZW5fdGFn
ICovMjRdLAotICAgICAgICAgIC8qIHByaW50X2Nsb3NlX3RhZyAqL3N0YXRlWy8qIHBwX3ByaW50
X2Nsb3NlX3RhZyAqLzI1XQotICAgICAgICBdOwotfQotCi1mdW5jdGlvbiBwcF9zZXRfZm9ybWF0
dGVyX3RhZ19mdW5jdGlvbnMoc3RhdGUsIHBhcmFtKSB7Ci0gIHN0YXRlWy8qIHBwX21hcmtfb3Bl
bl90YWcgKi8yMl0gPSBwYXJhbVsvKiBtYXJrX29wZW5fdGFnICovMF07Ci0gIHN0YXRlWy8qIHBw
X21hcmtfY2xvc2VfdGFnICovMjNdID0gcGFyYW1bLyogbWFya19jbG9zZV90YWcgKi8xXTsKLSAg
c3RhdGVbLyogcHBfcHJpbnRfb3Blbl90YWcgKi8yNF0gPSBwYXJhbVsvKiBwcmludF9vcGVuX3Rh
ZyAqLzJdOwotICBzdGF0ZVsvKiBwcF9wcmludF9jbG9zZV90YWcgKi8yNV0gPSBwYXJhbVsvKiBw
cmludF9jbG9zZV90YWcgKi8zXTsKLSAgcmV0dXJuIC8qICgpICovMDsKLX0KLQotZnVuY3Rpb24g
cHBfcmluaXQoc3RhdGUpIHsKLSAgcHBfY2xlYXJfcXVldWUoc3RhdGUpOwotICBzdGF0ZVsvKiBw
cF9zY2FuX3N0YWNrICovMF0gPSBzY2FuX3N0YWNrX2JvdHRvbTsKLSAgc3RhdGVbLyogcHBfZm9y
bWF0X3N0YWNrICovMV0gPSAvKiBbXSAqLzA7Ci0gIHN0YXRlWy8qIHBwX3Rib3hfc3RhY2sgKi8y
XSA9IC8qIFtdICovMDsKLSAgc3RhdGVbLyogcHBfdGFnX3N0YWNrICovM10gPSAvKiBbXSAqLzA7
Ci0gIHN0YXRlWy8qIHBwX21hcmtfc3RhY2sgKi80XSA9IC8qIFtdICovMDsKLSAgc3RhdGVbLyog
cHBfY3VycmVudF9pbmRlbnQgKi85XSA9IDA7Ci0gIHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8x
M10gPSAwOwotICBzdGF0ZVsvKiBwcF9zcGFjZV9sZWZ0ICovOF0gPSBzdGF0ZVsvKiBwcF9tYXJn
aW4gKi81XTsKLSAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgMCwgLyogUHBfaG92Ym94
ICovMyk7Ci19Ci0KLWZ1bmN0aW9uIHBwX2ZsdXNoX3F1ZXVlKHN0YXRlLCBiKSB7Ci0gIHdoaWxl
KHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPiAxKSB7Ci0gICAgcHBfY2xvc2VfYm94KHN0
YXRlLCAvKiAoKSAqLzApOwotICB9OwotICBzdGF0ZVsvKiBwcF9yaWdodF90b3RhbCAqLzEyXSA9
IDEwMDAwMDAwMTA7Ci0gIGFkdmFuY2VfbGVmdChzdGF0ZSk7Ci0gIGlmIChiKSB7Ci0gICAgQ3Vy
cnkuXzEoc3RhdGVbLyogcHBfb3V0X25ld2xpbmUgKi8xOF0sIC8qICgpICovMCk7Ci0gIH0KLSAg
cmV0dXJuIHBwX3Jpbml0KHN0YXRlKTsKLX0KLQotZnVuY3Rpb24gcHBfcHJpbnRfYXNfc2l6ZShz
dGF0ZSwgc2l6ZSwgcykgewotICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0
YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgewotICAgIHJldHVybiBlbnF1ZXVlX3N0cmluZ19h
cyhzdGF0ZSwgc2l6ZSwgcyk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0K
LQotdmFyIHBwX3ByaW50X2FzID0gcHBfcHJpbnRfYXNfc2l6ZTsKLQotZnVuY3Rpb24gcHBfcHJp
bnRfc3RyaW5nKHN0YXRlLCBzKSB7Ci0gIHJldHVybiBwcF9wcmludF9hcyhzdGF0ZSwgcy5sZW5n
dGgsIHMpOwotfQotCi1mdW5jdGlvbiBwcF9wcmludF9pbnQoc3RhdGUsIGkpIHsKLSAgcmV0dXJu
IHBwX3ByaW50X3N0cmluZyhzdGF0ZSwgIiIgKyBpKTsKLX0KLQotZnVuY3Rpb24gcHBfcHJpbnRf
ZmxvYXQoc3RhdGUsIGYpIHsKLSAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGF0ZSwgUGVydmFz
aXZlcy5zdHJpbmdfb2ZfZmxvYXQoZikpOwotfQotCi1mdW5jdGlvbiBwcF9wcmludF9ib29sKHN0
YXRlLCBiKSB7Ci0gIHJldHVybiBwcF9wcmludF9zdHJpbmcoc3RhdGUsIGIgPyAidHJ1ZSIgOiAi
ZmFsc2UiKTsKLX0KLQotZnVuY3Rpb24gcHBfcHJpbnRfY2hhcihzdGF0ZSwgYykgewotICByZXR1
cm4gcHBfcHJpbnRfYXMoc3RhdGUsIDEsIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRl
cy5tYWtlKDEsIGMpKSk7Ci19Ci0KLWZ1bmN0aW9uIHBwX29wZW5faGJveChzdGF0ZSwgXykgewot
ICByZXR1cm4gcHBfb3Blbl9ib3hfZ2VuKHN0YXRlLCAwLCAvKiBQcF9oYm94ICovMCk7Ci19Ci0K
LWZ1bmN0aW9uIHBwX29wZW5fdmJveChzdGF0ZSwgaW5kZW50KSB7Ci0gIHJldHVybiBwcF9vcGVu
X2JveF9nZW4oc3RhdGUsIGluZGVudCwgLyogUHBfdmJveCAqLzEpOwotfQotCi1mdW5jdGlvbiBw
cF9vcGVuX2h2Ym94KHN0YXRlLCBpbmRlbnQpIHsKLSAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihz
dGF0ZSwgaW5kZW50LCAvKiBQcF9odmJveCAqLzIpOwotfQotCi1mdW5jdGlvbiBwcF9vcGVuX2hv
dmJveChzdGF0ZSwgaW5kZW50KSB7Ci0gIHJldHVybiBwcF9vcGVuX2JveF9nZW4oc3RhdGUsIGlu
ZGVudCwgLyogUHBfaG92Ym94ICovMyk7Ci19Ci0KLWZ1bmN0aW9uIHBwX29wZW5fYm94KHN0YXRl
LCBpbmRlbnQpIHsKLSAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihzdGF0ZSwgaW5kZW50LCAvKiBQ
cF9ib3ggKi80KTsKLX0KLQotZnVuY3Rpb24gcHBfcHJpbnRfbmV3bGluZShzdGF0ZSwgXykgewot
ICBwcF9mbHVzaF9xdWV1ZShzdGF0ZSwgLyogdHJ1ZSAqLzEpOwotICByZXR1cm4gQ3VycnkuXzEo
c3RhdGVbLyogcHBfb3V0X2ZsdXNoICovMTddLCAvKiAoKSAqLzApOwotfQotCi1mdW5jdGlvbiBw
cF9wcmludF9mbHVzaChzdGF0ZSwgXykgewotICBwcF9mbHVzaF9xdWV1ZShzdGF0ZSwgLyogZmFs
c2UgKi8wKTsKLSAgcmV0dXJuIEN1cnJ5Ll8xKHN0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XSwg
LyogKCkgKi8wKTsKLX0KLQotZnVuY3Rpb24gcHBfZm9yY2VfbmV3bGluZShzdGF0ZSwgXykgewot
ICBpZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hl
cyAqLzE0XSkgewotICAgIHJldHVybiBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIC8qIHJlY29yZCAq
L1sKLSAgICAgICAgICAgICAgICAvKiBlbGVtX3NpemUgKi8wLAotICAgICAgICAgICAgICAgIC8q
IHRva2VuIDogUHBfbmV3bGluZSAqLzMsCi0gICAgICAgICAgICAgICAgLyogbGVuZ3RoICovMAot
ICAgICAgICAgICAgICBdKTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gMDsKLSAgfQotfQot
Ci1mdW5jdGlvbiBwcF9wcmludF9pZl9uZXdsaW5lKHN0YXRlLCBfKSB7Ci0gIGlmIChzdGF0ZVsv
KiBwcF9jdXJyX2RlcHRoICovMTNdIDwgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7Ci0g
ICAgcmV0dXJuIGVucXVldWVfYWR2YW5jZShzdGF0ZSwgLyogcmVjb3JkICovWwotICAgICAgICAg
ICAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCi0gICAgICAgICAgICAgICAgLyogdG9rZW4gOiBQcF9p
Zl9uZXdsaW5lICovNCwKLSAgICAgICAgICAgICAgICAvKiBsZW5ndGggKi8wCi0gICAgICAgICAg
ICAgIF0pOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAwOwotICB9Ci19Ci0KLWZ1bmN0aW9u
IHBwX3ByaW50X2JyZWFrKHN0YXRlLCB3aWR0aCwgb2Zmc2V0KSB7Ci0gIGlmIChzdGF0ZVsvKiBw
cF9jdXJyX2RlcHRoICovMTNdIDwgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7Ci0gICAg
dmFyIGVsZW0gPSAvKiByZWNvcmQgKi9bCi0gICAgICAvKiBlbGVtX3NpemUgKi8tc3RhdGVbLyog
cHBfcmlnaHRfdG90YWwgKi8xMl0gfCAwLAotICAgICAgLyogdG9rZW4gOiBQcF9icmVhayAqL0Js
b2NrLl9fKDEsIFsKLSAgICAgICAgICB3aWR0aCwKLSAgICAgICAgICBvZmZzZXQKLSAgICAgICAg
XSksCi0gICAgICAvKiBsZW5ndGggKi93aWR0aAotICAgIF07Ci0gICAgcmV0dXJuIHNjYW5fcHVz
aChzdGF0ZSwgLyogdHJ1ZSAqLzEsIGVsZW0pOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAw
OwotICB9Ci19Ci0KLWZ1bmN0aW9uIHBwX3ByaW50X3NwYWNlKHN0YXRlLCBfKSB7Ci0gIHJldHVy
biBwcF9wcmludF9icmVhayhzdGF0ZSwgMSwgMCk7Ci19Ci0KLWZ1bmN0aW9uIHBwX3ByaW50X2N1
dChzdGF0ZSwgXykgewotICByZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RhdGUsIDAsIDApOwotfQot
Ci1mdW5jdGlvbiBwcF9vcGVuX3Rib3goc3RhdGUsIF8pIHsKLSAgc3RhdGVbLyogcHBfY3Vycl9k
ZXB0aCAqLzEzXSA9IHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gKyAxIHwgMDsKLSAgaWYg
KHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gPCBzdGF0ZVsvKiBwcF9tYXhfYm94ZXMgKi8x
NF0pIHsKLSAgICB2YXIgZWxlbSA9IC8qIHJlY29yZCAqL1sKLSAgICAgIC8qIGVsZW1fc2l6ZSAq
LzAsCi0gICAgICAvKiB0b2tlbiA6IFBwX3RiZWdpbiAqL0Jsb2NrLl9fKDQsIFsvKiBQcF90Ym94
ICovW1svKiBbXSAqLzBdXV0pLAotICAgICAgLyogbGVuZ3RoICovMAotICAgIF07Ci0gICAgcmV0
dXJuIGVucXVldWVfYWR2YW5jZShzdGF0ZSwgZWxlbSk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0
dXJuIDA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcHBfY2xvc2VfdGJveChzdGF0ZSwgXykgewotICBp
ZiAoc3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA+IDEpIHsKLSAgICBpZiAoc3RhdGVbLyog
cHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XSkgewotICAg
ICAgdmFyIGVsZW0gPSAvKiByZWNvcmQgKi9bCi0gICAgICAgIC8qIGVsZW1fc2l6ZSAqLzAsCi0g
ICAgICAgIC8qIHRva2VuIDogUHBfdGVuZCAqLzIsCi0gICAgICAgIC8qIGxlbmd0aCAqLzAKLSAg
ICAgIF07Ci0gICAgICBlbnF1ZXVlX2FkdmFuY2Uoc3RhdGUsIGVsZW0pOwotICAgICAgc3RhdGVb
LyogcHBfY3Vycl9kZXB0aCAqLzEzXSA9IHN0YXRlWy8qIHBwX2N1cnJfZGVwdGggKi8xM10gLSAx
IHwgMDsKLSAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAwOwotICB9Ci19Ci0K
LWZ1bmN0aW9uIHBwX3ByaW50X3RicmVhayhzdGF0ZSwgd2lkdGgsIG9mZnNldCkgewotICBpZiAo
c3RhdGVbLyogcHBfY3Vycl9kZXB0aCAqLzEzXSA8IHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0
XSkgewotICAgIHZhciBlbGVtID0gLyogcmVjb3JkICovWwotICAgICAgLyogZWxlbV9zaXplICov
LXN0YXRlWy8qIHBwX3JpZ2h0X3RvdGFsICovMTJdIHwgMCwKLSAgICAgIC8qIHRva2VuIDogUHBf
dGJyZWFrICovQmxvY2suX18oMiwgWwotICAgICAgICAgIHdpZHRoLAotICAgICAgICAgIG9mZnNl
dAotICAgICAgICBdKSwKLSAgICAgIC8qIGxlbmd0aCAqL3dpZHRoCi0gICAgXTsKLSAgICByZXR1
cm4gc2Nhbl9wdXNoKHN0YXRlLCAvKiB0cnVlICovMSwgZWxlbSk7Ci0gIH0KLSAgZWxzZSB7Ci0g
ICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcHBfcHJpbnRfdGFiKHN0YXRlLCBfKSB7
Ci0gIHJldHVybiBwcF9wcmludF90YnJlYWsoc3RhdGUsIDAsIDApOwotfQotCi1mdW5jdGlvbiBw
cF9zZXRfdGFiKHN0YXRlLCBfKSB7Ci0gIGlmIChzdGF0ZVsvKiBwcF9jdXJyX2RlcHRoICovMTNd
IDwgc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKSB7Ci0gICAgdmFyIGVsZW0gPSAvKiByZWNv
cmQgKi9bCi0gICAgICAvKiBlbGVtX3NpemUgKi8wLAotICAgICAgLyogdG9rZW4gOiBQcF9zdGFi
ICovMCwKLSAgICAgIC8qIGxlbmd0aCAqLzAKLSAgICBdOwotICAgIHJldHVybiBlbnF1ZXVlX2Fk
dmFuY2Uoc3RhdGUsIGVsZW0pOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAwOwotICB9Ci19
Ci0KLWZ1bmN0aW9uIHBwX3ByaW50X2xpc3QoXyRzdGFyb3B0JHN0YXIsIHBwX3YsIHBwZiwgX3Bh
cmFtKSB7Ci0gIHdoaWxlKHRydWUpIHsKLSAgICB2YXIgcGFyYW0gPSBfcGFyYW07Ci0gICAgdmFy
ICRzdGFyb3B0JHN0YXIgPSBfJHN0YXJvcHQkc3RhcjsKLSAgICB2YXIgcHBfc2VwID0gJHN0YXJv
cHQkc3RhciA/ICRzdGFyb3B0JHN0YXJbMF0gOiBwcF9wcmludF9jdXQ7Ci0gICAgaWYgKHBhcmFt
KSB7Ci0gICAgICB2YXIgdnMgPSBwYXJhbVsxXTsKLSAgICAgIHZhciB2ID0gcGFyYW1bMF07Ci0g
ICAgICBpZiAodnMpIHsKLSAgICAgICAgQ3VycnkuXzIocHBfdiwgcHBmLCB2KTsKLSAgICAgICAg
Q3VycnkuXzIocHBfc2VwLCBwcGYsIC8qICgpICovMCk7Ci0gICAgICAgIF9wYXJhbSA9IHZzOwot
ICAgICAgICBfJHN0YXJvcHQkc3RhciA9IC8qIFNvbWUgKi9bcHBfc2VwXTsKLSAgICAgICAgY29u
dGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4g
Q3VycnkuXzIocHBfdiwgcHBmLCB2KTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAg
ICByZXR1cm4gLyogKCkgKi8wOwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gcHBfcHJpbnRf
dGV4dChwcGYsIHMpIHsKLSAgdmFyIGxlbiA9IHMubGVuZ3RoOwotICB2YXIgbGVmdCA9IFswXTsK
LSAgdmFyIHJpZ2h0ID0gWzBdOwotICB2YXIgZmx1c2ggPSBmdW5jdGlvbiAoKSB7Ci0gICAgcHBf
cHJpbnRfc3RyaW5nKHBwZiwgJCRTdHJpbmcuc3ViKHMsIGxlZnRbMF0sIHJpZ2h0WzBdIC0gbGVm
dFswXSB8IDApKTsKLSAgICByaWdodFswXSA9IHJpZ2h0WzBdICsgMSB8IDA7Ci0gICAgbGVmdFsw
XSA9IHJpZ2h0WzBdOwotICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gIH07Ci0gIHdoaWxlKHJpZ2h0
WzBdICE9PSBsZW4pIHsKLSAgICB2YXIgbWF0Y2ggPSBDYW1sX3N0cmluZy5nZXQocywgcmlnaHRb
MF0pOwotICAgIGlmIChtYXRjaCAhPT0gMTApIHsKLSAgICAgIGlmIChtYXRjaCAhPT0gMzIpIHsK
LSAgICAgICAgcmlnaHRbMF0gPSByaWdodFswXSArIDEgfCAwOwotICAgICAgfQotICAgICAgZWxz
ZSB7Ci0gICAgICAgIGZsdXNoKC8qICgpICovMCk7Ci0gICAgICAgIHBwX3ByaW50X2JyZWFrKHBw
ZiwgMSwgMCk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgZmx1c2goLyogKCkg
Ki8wKTsKLSAgICAgIHBwX2ZvcmNlX25ld2xpbmUocHBmLCAvKiAoKSAqLzApOwotICAgIH0KLSAg
fTsKLSAgaWYgKGxlZnRbMF0gIT09IGxlbikgewotICAgIHJldHVybiBmbHVzaCgvKiAoKSAqLzAp
OwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAwOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHBwX3Nl
dF9tYXhfYm94ZXMoc3RhdGUsIG4pIHsKLSAgaWYgKG4gPiAxKSB7Ci0gICAgc3RhdGVbLyogcHBf
bWF4X2JveGVzICovMTRdID0gbjsKLSAgICByZXR1cm4gLyogKCkgKi8wOwotICB9Ci0gIGVsc2Ug
ewotICAgIHJldHVybiAwOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHBwX2dldF9tYXhfYm94ZXMoc3Rh
dGUsIF8pIHsKLSAgcmV0dXJuIHN0YXRlWy8qIHBwX21heF9ib3hlcyAqLzE0XTsKLX0KLQotZnVu
Y3Rpb24gcHBfb3Zlcl9tYXhfYm94ZXMoc3RhdGUsIF8pIHsKLSAgcmV0dXJuICsoc3RhdGVbLyog
cHBfY3Vycl9kZXB0aCAqLzEzXSA9PT0gc3RhdGVbLyogcHBfbWF4X2JveGVzICovMTRdKTsKLX0K
LQotZnVuY3Rpb24gcHBfc2V0X2VsbGlwc2lzX3RleHQoc3RhdGUsIHMpIHsKLSAgc3RhdGVbLyog
cHBfZWxsaXBzaXMgKi8xNV0gPSBzOwotICByZXR1cm4gLyogKCkgKi8wOwotfQotCi1mdW5jdGlv
biBwcF9nZXRfZWxsaXBzaXNfdGV4dChzdGF0ZSwgXykgewotICByZXR1cm4gc3RhdGVbLyogcHBf
ZWxsaXBzaXMgKi8xNV07Ci19Ci0KLWZ1bmN0aW9uIHBwX2xpbWl0KG4pIHsKLSAgaWYgKG4gPCAx
MDAwMDAwMDEwKSB7Ci0gICAgcmV0dXJuIG47Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIDEw
MDAwMDAwMDk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcHBfc2V0X21heF9pbmRlbnQoc3RhdGUsIG4p
IHsKLSAgdmFyIHN0YXRlJDEgPSBzdGF0ZTsKLSAgdmFyIG4kMSA9IHN0YXRlWy8qIHBwX21hcmdp
biAqLzVdIC0gbiB8IDA7Ci0gIGlmIChuJDEgPj0gMSkgewotICAgIHZhciBuJDIgPSBwcF9saW1p
dChuJDEpOwotICAgIHN0YXRlJDFbLyogcHBfbWluX3NwYWNlX2xlZnQgKi82XSA9IG4kMjsKLSAg
ICBzdGF0ZSQxWy8qIHBwX21heF9pbmRlbnQgKi83XSA9IHN0YXRlJDFbLyogcHBfbWFyZ2luICov
NV0gLSBzdGF0ZSQxWy8qIHBwX21pbl9zcGFjZV9sZWZ0ICovNl0gfCAwOwotICAgIHJldHVybiBw
cF9yaW5pdChzdGF0ZSQxKTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gMDsKLSAgfQotfQot
Ci1mdW5jdGlvbiBwcF9nZXRfbWF4X2luZGVudChzdGF0ZSwgXykgewotICByZXR1cm4gc3RhdGVb
LyogcHBfbWF4X2luZGVudCAqLzddOwotfQotCi1mdW5jdGlvbiBwcF9zZXRfbWFyZ2luKHN0YXRl
LCBuKSB7Ci0gIGlmIChuID49IDEpIHsKLSAgICB2YXIgbiQxID0gcHBfbGltaXQobik7Ci0gICAg
c3RhdGVbLyogcHBfbWFyZ2luICovNV0gPSBuJDE7Ci0gICAgdmFyIG5ld19tYXhfaW5kZW50ID0g
c3RhdGVbLyogcHBfbWF4X2luZGVudCAqLzddIDw9IHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdID8g
c3RhdGVbLyogcHBfbWF4X2luZGVudCAqLzddIDogUGVydmFzaXZlcy5tYXgoUGVydmFzaXZlcy5t
YXgoc3RhdGVbLyogcHBfbWFyZ2luICovNV0gLSBzdGF0ZVsvKiBwcF9taW5fc3BhY2VfbGVmdCAq
LzZdIHwgMCwgc3RhdGVbLyogcHBfbWFyZ2luICovNV0gLyAyIHwgMCksIDEpOwotICAgIHJldHVy
biBwcF9zZXRfbWF4X2luZGVudChzdGF0ZSwgbmV3X21heF9pbmRlbnQpOwotICB9Ci0gIGVsc2Ug
ewotICAgIHJldHVybiAwOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHBwX2dldF9tYXJnaW4oc3RhdGUs
IF8pIHsKLSAgcmV0dXJuIHN0YXRlWy8qIHBwX21hcmdpbiAqLzVdOwotfQotCi1mdW5jdGlvbiBw
cF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMoc3RhdGUsIHBhcmFtKSB7Ci0gIHN0YXRlWy8q
IHBwX291dF9zdHJpbmcgKi8xNl0gPSBwYXJhbVsvKiBvdXRfc3RyaW5nICovMF07Ci0gIHN0YXRl
Wy8qIHBwX291dF9mbHVzaCAqLzE3XSA9IHBhcmFtWy8qIG91dF9mbHVzaCAqLzFdOwotICBzdGF0
ZVsvKiBwcF9vdXRfbmV3bGluZSAqLzE4XSA9IHBhcmFtWy8qIG91dF9uZXdsaW5lICovMl07Ci0g
IHN0YXRlWy8qIHBwX291dF9zcGFjZXMgKi8xOV0gPSBwYXJhbVsvKiBvdXRfc3BhY2VzICovM107
Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIHBwX2dldF9mb3JtYXR0ZXJfb3V0
X2Z1bmN0aW9ucyhzdGF0ZSwgXykgewotICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAg
IC8qIG91dF9zdHJpbmcgKi9zdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAotICAgICAgICAg
IC8qIG91dF9mbHVzaCAqL3N0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XSwKLSAgICAgICAgICAv
KiBvdXRfbmV3bGluZSAqL3N0YXRlWy8qIHBwX291dF9uZXdsaW5lICovMThdLAotICAgICAgICAg
IC8qIG91dF9zcGFjZXMgKi9zdGF0ZVsvKiBwcF9vdXRfc3BhY2VzICovMTldCi0gICAgICAgIF07
Ci19Ci0KLWZ1bmN0aW9uIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwg
ZiwgZykgewotICBzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdID0gZjsKLSAgc3RhdGVbLyog
cHBfb3V0X2ZsdXNoICovMTddID0gZzsKLSAgcmV0dXJuIC8qICgpICovMDsKLX0KLQotZnVuY3Rp
b24gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBfKSB7Ci0gIHJldHVy
biAvKiB0dXBsZSAqL1sKLSAgICAgICAgICBzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLAot
ICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9mbHVzaCAqLzE3XQotICAgICAgICBdOwotfQotCi1m
dW5jdGlvbiBwcF9zZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0YXRlLCBmLCBn
LCBoLCBpKSB7Ci0gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGF0ZSwgZiwg
Zyk7Ci0gIHN0YXRlWy8qIHBwX291dF9uZXdsaW5lICovMThdID0gaDsKLSAgc3RhdGVbLyogcHBf
b3V0X3NwYWNlcyAqLzE5XSA9IGk7Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9u
IHBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMoc3RhdGUsIF8pIHsKLSAgcmV0
dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0s
Ci0gICAgICAgICAgc3RhdGVbLyogcHBfb3V0X2ZsdXNoICovMTddLAotICAgICAgICAgIHN0YXRl
Wy8qIHBwX291dF9uZXdsaW5lICovMThdLAotICAgICAgICAgIHN0YXRlWy8qIHBwX291dF9zcGFj
ZXMgKi8xOV0KLSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24gZGlzcGxheV9uZXdsaW5lKHN0YXRl
LCBfKSB7Ci0gIHJldHVybiBDdXJyeS5fMyhzdGF0ZVsvKiBwcF9vdXRfc3RyaW5nICovMTZdLCAi
XG4iLCAwLCAxKTsKLX0KLQotdmFyIGJsYW5rX2xpbmUgPSBDYW1sX3N0cmluZy5ieXRlc190b19z
dHJpbmcoQnl0ZXMubWFrZSg4MCwgLyogIiAiICovMzIpKTsKLQotZnVuY3Rpb24gZGlzcGxheV9i
bGFua3Moc3RhdGUsIF9uKSB7Ci0gIHdoaWxlKHRydWUpIHsKLSAgICB2YXIgbiA9IF9uOwotICAg
IGlmIChuID4gMCkgewotICAgICAgaWYgKG4gPD0gODApIHsKLSAgICAgICAgcmV0dXJuIEN1cnJ5
Ll8zKHN0YXRlWy8qIHBwX291dF9zdHJpbmcgKi8xNl0sIGJsYW5rX2xpbmUsIDAsIG4pOwotICAg
ICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIEN1cnJ5Ll8zKHN0YXRlWy8qIHBwX291dF9zdHJp
bmcgKi8xNl0sIGJsYW5rX2xpbmUsIDAsIDgwKTsKLSAgICAgICAgX24gPSBuIC0gODAgfCAwOwot
ICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgIAotICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsK
LSAgICAgIHJldHVybiAwOwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gcHBfc2V0X2Zvcm1h
dHRlcl9vdXRfY2hhbm5lbChzdGF0ZSwgb3MpIHsKLSAgc3RhdGVbLyogcHBfb3V0X3N0cmluZyAq
LzE2XSA9IGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgewotICAgIHJldHVybiBQ
ZXJ2YXNpdmVzLm91dHB1dF9zdWJzdHJpbmcob3MsIHBhcmFtLCBwYXJhbSQxLCBwYXJhbSQyKTsK
LSAgfTsKLSAgc3RhdGVbLyogcHBfb3V0X2ZsdXNoICovMTddID0gZnVuY3Rpb24gKCkgewotICAg
IHJldHVybiBDYW1sX2lvLmNhbWxfbWxfZmx1c2gob3MpOwotICB9OwotICBzdGF0ZVsvKiBwcF9v
dXRfbmV3bGluZSAqLzE4XSA9IGZ1bmN0aW9uIChwYXJhbSkgewotICAgIHJldHVybiBkaXNwbGF5
X25ld2xpbmUoc3RhdGUsIHBhcmFtKTsKLSAgfTsKLSAgc3RhdGVbLyogcHBfb3V0X3NwYWNlcyAq
LzE5XSA9IGZ1bmN0aW9uIChwYXJhbSkgewotICAgIHJldHVybiBkaXNwbGF5X2JsYW5rcyhzdGF0
ZSwgcGFyYW0pOwotICB9OwotICByZXR1cm4gLyogKCkgKi8wOwotfQotCi1mdW5jdGlvbiBkZWZh
dWx0X3BwX21hcmtfb3Blbl90YWcocykgewotICByZXR1cm4gIjwiICsgKHMgKyAiPiIpOwotfQot
Ci1mdW5jdGlvbiBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnKHMpIHsKLSAgcmV0dXJuICI8LyIg
KyAocyArICI+Iik7Ci19Ci0KLWZ1bmN0aW9uIGRlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcoKSB7
Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIGRlZmF1bHRfcHBfcHJpbnRfY2xv
c2VfdGFnKCkgewotICByZXR1cm4gLyogKCkgKi8wOwotfQotCi1mdW5jdGlvbiBwcF9tYWtlX2Zv
cm1hdHRlcihmLCBnLCBoLCBpKSB7Ci0gIHZhciBwcF9xID0gLyogcmVjb3JkICovWwotICAgIC8q
IGluc2VydCA6IE5pbCAqLzAsCi0gICAgLyogYm9keSA6IE5pbCAqLzAKLSAgXTsKLSAgdmFyIHN5
c190b2sgPSAvKiByZWNvcmQgKi9bCi0gICAgLyogZWxlbV9zaXplICovLTEsCi0gICAgLyogdG9r
ZW4gOiBQcF9iZWdpbiAqL0Jsb2NrLl9fKDMsIFsKLSAgICAgICAgMCwKLSAgICAgICAgLyogUHBf
aG92Ym94ICovMwotICAgICAgXSksCi0gICAgLyogbGVuZ3RoICovMAotICBdOwotICBhZGRfcXVl
dWUoc3lzX3RvaywgcHBfcSk7Ci0gIHZhciBzeXNfc2Nhbl9zdGFja18wMDAgPSAvKiBTY2FuX2Vs
ZW0gKi9bCi0gICAgMSwKLSAgICBzeXNfdG9rCi0gIF07Ci0gIHZhciBzeXNfc2Nhbl9zdGFjayA9
IC8qIDo6ICovWwotICAgIHN5c19zY2FuX3N0YWNrXzAwMCwKLSAgICBzY2FuX3N0YWNrX2JvdHRv
bQotICBdOwotICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgIC8qIHBwX3NjYW5fc3Rh
Y2sgKi9zeXNfc2Nhbl9zdGFjaywKLSAgICAgICAgICAvKiBwcF9mb3JtYXRfc3RhY2sgOiBbXSAq
LzAsCi0gICAgICAgICAgLyogcHBfdGJveF9zdGFjayA6IFtdICovMCwKLSAgICAgICAgICAvKiBw
cF90YWdfc3RhY2sgOiBbXSAqLzAsCi0gICAgICAgICAgLyogcHBfbWFya19zdGFjayA6IFtdICov
MCwKLSAgICAgICAgICAvKiBwcF9tYXJnaW4gKi83OCwKLSAgICAgICAgICAvKiBwcF9taW5fc3Bh
Y2VfbGVmdCAqLzEwLAotICAgICAgICAgIC8qIHBwX21heF9pbmRlbnQgKi82OCwKLSAgICAgICAg
ICAvKiBwcF9zcGFjZV9sZWZ0ICovNzgsCi0gICAgICAgICAgLyogcHBfY3VycmVudF9pbmRlbnQg
Ki8wLAotICAgICAgICAgIC8qIHBwX2lzX25ld19saW5lIDogdHJ1ZSAqLzEsCi0gICAgICAgICAg
LyogcHBfbGVmdF90b3RhbCAqLzEsCi0gICAgICAgICAgLyogcHBfcmlnaHRfdG90YWwgKi8xLAot
ICAgICAgICAgIC8qIHBwX2N1cnJfZGVwdGggKi8xLAotICAgICAgICAgIC8qIHBwX21heF9ib3hl
cyAqL1BlcnZhc2l2ZXMubWF4X2ludCwKLSAgICAgICAgICAvKiBwcF9lbGxpcHNpcyAqLyIuIiwK
LSAgICAgICAgICAvKiBwcF9vdXRfc3RyaW5nICovZiwKLSAgICAgICAgICAvKiBwcF9vdXRfZmx1
c2ggKi9nLAotICAgICAgICAgIC8qIHBwX291dF9uZXdsaW5lICovaCwKLSAgICAgICAgICAvKiBw
cF9vdXRfc3BhY2VzICovaSwKLSAgICAgICAgICAvKiBwcF9wcmludF90YWdzIDogZmFsc2UgKi8w
LAotICAgICAgICAgIC8qIHBwX21hcmtfdGFncyA6IGZhbHNlICovMCwKLSAgICAgICAgICAvKiBw
cF9tYXJrX29wZW5fdGFnICovZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnLAotICAgICAgICAgIC8q
IHBwX21hcmtfY2xvc2VfdGFnICovZGVmYXVsdF9wcF9tYXJrX2Nsb3NlX3RhZywKLSAgICAgICAg
ICAvKiBwcF9wcmludF9vcGVuX3RhZyAqL2RlZmF1bHRfcHBfcHJpbnRfb3Blbl90YWcsCi0gICAg
ICAgICAgLyogcHBfcHJpbnRfY2xvc2VfdGFnICovZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcs
Ci0gICAgICAgICAgLyogcHBfcXVldWUgKi9wcF9xCi0gICAgICAgIF07Ci19Ci0KLWZ1bmN0aW9u
IG1ha2VfZm9ybWF0dGVyKG91dHB1dCwgZmx1c2gpIHsKLSAgdmFyIHBwZiA9IHBwX21ha2VfZm9y
bWF0dGVyKG91dHB1dCwgZmx1c2gsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcmV0dXJuIC8qICgp
ICovMDsKLSAgICAgIH0sIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgcmV0dXJuIC8qICgpICovMDsK
LSAgICAgIH0pOwotICBwcGZbLyogcHBfb3V0X25ld2xpbmUgKi8xOF0gPSBmdW5jdGlvbiAocGFy
YW0pIHsKLSAgICByZXR1cm4gZGlzcGxheV9uZXdsaW5lKHBwZiwgcGFyYW0pOwotICB9OwotICBw
cGZbLyogcHBfb3V0X3NwYWNlcyAqLzE5XSA9IGZ1bmN0aW9uIChwYXJhbSkgewotICAgIHJldHVy
biBkaXNwbGF5X2JsYW5rcyhwcGYsIHBhcmFtKTsKLSAgfTsKLSAgcmV0dXJuIHBwZjsKLX0KLQot
ZnVuY3Rpb24gZm9ybWF0dGVyX29mX291dF9jaGFubmVsKG9jKSB7Ci0gIHJldHVybiBtYWtlX2Zv
cm1hdHRlcihmdW5jdGlvbiAocGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpIHsKLSAgICAgICAgICAg
ICAgcmV0dXJuIFBlcnZhc2l2ZXMub3V0cHV0X3N1YnN0cmluZyhvYywgcGFyYW0sIHBhcmFtJDEs
IHBhcmFtJDIpOwotICAgICAgICAgICAgfSwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICBy
ZXR1cm4gQ2FtbF9pby5jYW1sX21sX2ZsdXNoKG9jKTsKLSAgICAgICAgICAgIH0pOwotfQotCi1m
dW5jdGlvbiBmb3JtYXR0ZXJfb2ZfYnVmZmVyKGIpIHsKLSAgcmV0dXJuIG1ha2VfZm9ybWF0dGVy
KGZ1bmN0aW9uIChwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMikgewotICAgICAgICAgICAgICByZXR1
cm4gQnVmZmVyLmFkZF9zdWJzdHJpbmcoYiwgcGFyYW0sIHBhcmFtJDEsIHBhcmFtJDIpOwotICAg
ICAgICAgICAgfSwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8w
OwotICAgICAgICAgICAgfSk7Ci19Ci0KLXZhciBzdGRidWYgPSBCdWZmZXIuY3JlYXRlKDUxMik7
Ci0KLXZhciBzdGRfZm9ybWF0dGVyID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsKFBlcnZhc2l2
ZXMuc3Rkb3V0KTsKLQotdmFyIGVycl9mb3JtYXR0ZXIgPSBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5u
ZWwoUGVydmFzaXZlcy5zdGRlcnIpOwotCi12YXIgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9v
Zl9idWZmZXIoc3RkYnVmKTsKLQotZnVuY3Rpb24gZmx1c2hfc3RyX2Zvcm1hdHRlcigpIHsKLSAg
cHBfZmx1c2hfcXVldWUoc3RyX2Zvcm1hdHRlciwgLyogZmFsc2UgKi8wKTsKLSAgdmFyIHMgPSBC
dWZmZXIuY29udGVudHMoc3RkYnVmKTsKLSAgQnVmZmVyLnJlc2V0KHN0ZGJ1Zik7Ci0gIHJldHVy
biBzOwotfQotCi1mdW5jdGlvbiBmbHVzaF9idWZfZm9ybWF0dGVyKGJ1ZiwgcHBmKSB7Ci0gIHBw
X2ZsdXNoX3F1ZXVlKHBwZiwgLyogZmFsc2UgKi8wKTsKLSAgdmFyIHMgPSBCdWZmZXIuY29udGVu
dHMoYnVmKTsKLSAgQnVmZmVyLnJlc2V0KGJ1Zik7Ci0gIHJldHVybiBzOwotfQotCi1mdW5jdGlv
biBvcGVuX2hib3gocGFyYW0pIHsKLSAgcmV0dXJuIHBwX29wZW5faGJveChzdGRfZm9ybWF0dGVy
LCBwYXJhbSk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5fdmJveChwYXJhbSkgewotICByZXR1cm4gcHBf
b3Blbl92Ym94KHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKLX0KLQotZnVuY3Rpb24gb3Blbl9odmJv
eChwYXJhbSkgewotICByZXR1cm4gcHBfb3Blbl9odmJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7
Ci19Ci0KLWZ1bmN0aW9uIG9wZW5faG92Ym94KHBhcmFtKSB7Ci0gIHJldHVybiBwcF9vcGVuX2hv
dmJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Ci19Ci0KLWZ1bmN0aW9uIG9wZW5fYm94KHBhcmFt
KSB7Ci0gIHJldHVybiBwcF9vcGVuX2JveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Ci19Ci0KLWZ1
bmN0aW9uIGNsb3NlX2JveChwYXJhbSkgewotICByZXR1cm4gcHBfY2xvc2VfYm94KHN0ZF9mb3Jt
YXR0ZXIsIHBhcmFtKTsKLX0KLQotZnVuY3Rpb24gb3Blbl90YWcocGFyYW0pIHsKLSAgcmV0dXJu
IHBwX29wZW5fdGFnKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKLX0KLQotZnVuY3Rpb24gY2xvc2Vf
dGFnKHBhcmFtKSB7Ci0gIHJldHVybiBwcF9jbG9zZV90YWcoc3RkX2Zvcm1hdHRlciwgcGFyYW0p
OwotfQotCi1mdW5jdGlvbiBwcmludF9hcyhwYXJhbSwgcGFyYW0kMSkgewotICByZXR1cm4gcHBf
cHJpbnRfYXMoc3RkX2Zvcm1hdHRlciwgcGFyYW0sIHBhcmFtJDEpOwotfQotCi1mdW5jdGlvbiBw
cmludF9zdHJpbmcocGFyYW0pIHsKLSAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhzdGRfZm9ybWF0
dGVyLCBwYXJhbSk7Ci19Ci0KLWZ1bmN0aW9uIHByaW50X2ludChwYXJhbSkgewotICByZXR1cm4g
cHBfcHJpbnRfc3RyaW5nKHN0ZF9mb3JtYXR0ZXIsICIiICsgcGFyYW0pOwotfQotCi1mdW5jdGlv
biBwcmludF9mbG9hdChwYXJhbSkgewotICByZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHN0ZF9mb3Jt
YXR0ZXIsIFBlcnZhc2l2ZXMuc3RyaW5nX29mX2Zsb2F0KHBhcmFtKSk7Ci19Ci0KLWZ1bmN0aW9u
IHByaW50X2NoYXIocGFyYW0pIHsKLSAgcmV0dXJuIHBwX3ByaW50X2NoYXIoc3RkX2Zvcm1hdHRl
ciwgcGFyYW0pOwotfQotCi1mdW5jdGlvbiBwcmludF9ib29sKHBhcmFtKSB7Ci0gIHJldHVybiBw
cF9wcmludF9zdHJpbmcoc3RkX2Zvcm1hdHRlciwgcGFyYW0gPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
LX0KLQotZnVuY3Rpb24gcHJpbnRfYnJlYWsocGFyYW0sIHBhcmFtJDEpIHsKLSAgcmV0dXJuIHBw
X3ByaW50X2JyZWFrKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtLCBwYXJhbSQxKTsKLX0KLQotZnVuY3Rp
b24gcHJpbnRfY3V0KCkgewotICByZXR1cm4gcHBfcHJpbnRfYnJlYWsoc3RkX2Zvcm1hdHRlciwg
MCwgMCk7Ci19Ci0KLWZ1bmN0aW9uIHByaW50X3NwYWNlKCkgewotICByZXR1cm4gcHBfcHJpbnRf
YnJlYWsoc3RkX2Zvcm1hdHRlciwgMSwgMCk7Ci19Ci0KLWZ1bmN0aW9uIGZvcmNlX25ld2xpbmUo
cGFyYW0pIHsKLSAgcmV0dXJuIHBwX2ZvcmNlX25ld2xpbmUoc3RkX2Zvcm1hdHRlciwgcGFyYW0p
OwotfQotCi1mdW5jdGlvbiBwcmludF9mbHVzaChwYXJhbSkgewotICByZXR1cm4gcHBfcHJpbnRf
Zmx1c2goc3RkX2Zvcm1hdHRlciwgcGFyYW0pOwotfQotCi1mdW5jdGlvbiBwcmludF9uZXdsaW5l
KHBhcmFtKSB7Ci0gIHJldHVybiBwcF9wcmludF9uZXdsaW5lKHN0ZF9mb3JtYXR0ZXIsIHBhcmFt
KTsKLX0KLQotZnVuY3Rpb24gcHJpbnRfaWZfbmV3bGluZShwYXJhbSkgewotICByZXR1cm4gcHBf
cHJpbnRfaWZfbmV3bGluZShzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Ci19Ci0KLWZ1bmN0aW9uIG9w
ZW5fdGJveChwYXJhbSkgewotICByZXR1cm4gcHBfb3Blbl90Ym94KHN0ZF9mb3JtYXR0ZXIsIHBh
cmFtKTsKLX0KLQotZnVuY3Rpb24gY2xvc2VfdGJveChwYXJhbSkgewotICByZXR1cm4gcHBfY2xv
c2VfdGJveChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Ci19Ci0KLWZ1bmN0aW9uIHByaW50X3RicmVh
ayhwYXJhbSwgcGFyYW0kMSkgewotICByZXR1cm4gcHBfcHJpbnRfdGJyZWFrKHN0ZF9mb3JtYXR0
ZXIsIHBhcmFtLCBwYXJhbSQxKTsKLX0KLQotZnVuY3Rpb24gc2V0X3RhYihwYXJhbSkgewotICBy
ZXR1cm4gcHBfc2V0X3RhYihzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Ci19Ci0KLWZ1bmN0aW9uIHBy
aW50X3RhYigpIHsKLSAgcmV0dXJuIHBwX3ByaW50X3RicmVhayhzdGRfZm9ybWF0dGVyLCAwLCAw
KTsKLX0KLQotZnVuY3Rpb24gc2V0X21hcmdpbihwYXJhbSkgewotICByZXR1cm4gcHBfc2V0X21h
cmdpbihzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Ci19Ci0KLWZ1bmN0aW9uIGdldF9tYXJnaW4oKSB7
Ci0gIHJldHVybiBzdGRfZm9ybWF0dGVyWy8qIHBwX21hcmdpbiAqLzVdOwotfQotCi1mdW5jdGlv
biBzZXRfbWF4X2luZGVudChwYXJhbSkgewotICByZXR1cm4gcHBfc2V0X21heF9pbmRlbnQoc3Rk
X2Zvcm1hdHRlciwgcGFyYW0pOwotfQotCi1mdW5jdGlvbiBnZXRfbWF4X2luZGVudCgpIHsKLSAg
cmV0dXJuIHN0ZF9mb3JtYXR0ZXJbLyogcHBfbWF4X2luZGVudCAqLzddOwotfQotCi1mdW5jdGlv
biBzZXRfbWF4X2JveGVzKHBhcmFtKSB7Ci0gIHJldHVybiBwcF9zZXRfbWF4X2JveGVzKHN0ZF9m
b3JtYXR0ZXIsIHBhcmFtKTsKLX0KLQotZnVuY3Rpb24gZ2V0X21heF9ib3hlcygpIHsKLSAgcmV0
dXJuIHN0ZF9mb3JtYXR0ZXJbLyogcHBfbWF4X2JveGVzICovMTRdOwotfQotCi1mdW5jdGlvbiBv
dmVyX21heF9ib3hlcyhwYXJhbSkgewotICByZXR1cm4gcHBfb3Zlcl9tYXhfYm94ZXMoc3RkX2Zv
cm1hdHRlciwgcGFyYW0pOwotfQotCi1mdW5jdGlvbiBzZXRfZWxsaXBzaXNfdGV4dChwYXJhbSkg
ewotICBzdGRfZm9ybWF0dGVyWy8qIHBwX2VsbGlwc2lzICovMTVdID0gcGFyYW07Ci0gIHJldHVy
biAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIGdldF9lbGxpcHNpc190ZXh0KCkgewotICByZXR1
cm4gc3RkX2Zvcm1hdHRlclsvKiBwcF9lbGxpcHNpcyAqLzE1XTsKLX0KLQotZnVuY3Rpb24gc2V0
X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbChwYXJhbSkgewotICByZXR1cm4gcHBfc2V0X2Zvcm1hdHRl
cl9vdXRfY2hhbm5lbChzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Ci19Ci0KLWZ1bmN0aW9uIHNldF9m
b3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyhwYXJhbSkgewotICByZXR1cm4gcHBfc2V0X2Zvcm1hdHRl
cl9vdXRfZnVuY3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKLX0KLQotZnVuY3Rpb24gZ2V0
X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zKHBhcmFtKSB7Ci0gIHJldHVybiBwcF9nZXRfZm9ybWF0
dGVyX291dF9mdW5jdGlvbnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOwotfQotCi1mdW5jdGlvbiBz
ZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMocGFyYW0sIHBhcmFtJDEpIHsKLSAgcmV0dXJu
IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSwg
cGFyYW0kMSk7Ci19Ci0KLWZ1bmN0aW9uIGdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhw
YXJhbSkgewotICByZXR1cm4gcHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zKHN0ZF9m
b3JtYXR0ZXIsIHBhcmFtKTsKLX0KLQotZnVuY3Rpb24gc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0
X2Z1bmN0aW9ucyhwYXJhbSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMykgewotICByZXR1cm4g
cHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJh
bSwgcGFyYW0kMSwgcGFyYW0kMiwgcGFyYW0kMyk7Ci19Ci0KLWZ1bmN0aW9uIGdldF9hbGxfZm9y
bWF0dGVyX291dHB1dF9mdW5jdGlvbnMocGFyYW0pIHsKLSAgcmV0dXJuIHBwX2dldF9hbGxfZm9y
bWF0dGVyX291dHB1dF9mdW5jdGlvbnMoc3RkX2Zvcm1hdHRlciwgcGFyYW0pOwotfQotCi1mdW5j
dGlvbiBzZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMocGFyYW0pIHsKLSAgcmV0dXJuIHBwX3Nl
dF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyhzdGRfZm9ybWF0dGVyLCBwYXJhbSk7Ci19Ci0KLWZ1
bmN0aW9uIGdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyhwYXJhbSkgewotICByZXR1cm4gcHBf
Z2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKLX0KLQot
ZnVuY3Rpb24gc2V0X3ByaW50X3RhZ3MocGFyYW0pIHsKLSAgc3RkX2Zvcm1hdHRlclsvKiBwcF9w
cmludF90YWdzICovMjBdID0gcGFyYW07Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0
aW9uIGdldF9wcmludF90YWdzKCkgewotICByZXR1cm4gc3RkX2Zvcm1hdHRlclsvKiBwcF9wcmlu
dF90YWdzICovMjBdOwotfQotCi1mdW5jdGlvbiBzZXRfbWFya190YWdzKHBhcmFtKSB7Ci0gIHN0
ZF9mb3JtYXR0ZXJbLyogcHBfbWFya190YWdzICovMjFdID0gcGFyYW07Ci0gIHJldHVybiAvKiAo
KSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIGdldF9tYXJrX3RhZ3MoKSB7Ci0gIHJldHVybiBzdGRfZm9y
bWF0dGVyWy8qIHBwX21hcmtfdGFncyAqLzIxXTsKLX0KLQotZnVuY3Rpb24gc2V0X3RhZ3MocGFy
YW0pIHsKLSAgcmV0dXJuIHBwX3NldF90YWdzKHN0ZF9mb3JtYXR0ZXIsIHBhcmFtKTsKLX0KLQot
ZnVuY3Rpb24gY29tcHV0ZV90YWcob3V0cHV0LCB0YWdfYWNjKSB7Ci0gIHZhciBidWYgPSBCdWZm
ZXIuY3JlYXRlKDE2KTsKLSAgdmFyIHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIoYnVmKTsKLSAg
Q3VycnkuXzIob3V0cHV0LCBwcGYsIHRhZ19hY2MpOwotICBwcF9wcmludF9mbHVzaChwcGYsIC8q
ICgpICovMCk7Ci0gIHZhciBsZW4gPSBidWZbLyogcG9zaXRpb24gKi8xXTsKLSAgaWYgKGxlbiA8
IDIpIHsKLSAgICByZXR1cm4gQnVmZmVyLmNvbnRlbnRzKGJ1Zik7Ci0gIH0KLSAgZWxzZSB7Ci0g
ICAgcmV0dXJuIEJ1ZmZlci5zdWIoYnVmLCAxLCBsZW4gLSAyIHwgMCk7Ci0gIH0KLX0KLQotZnVu
Y3Rpb24gb3V0cHV0X2Zvcm1hdHRpbmdfbGl0KHBwZiwgZm10aW5nX2xpdCkgewotICBpZiAodHlw
ZW9mIGZtdGluZ19saXQgPT09ICJudW1iZXIiKSB7Ci0gICAgc3dpdGNoIChmbXRpbmdfbGl0KSB7
Ci0gICAgICBjYXNlIDAgOiAKLSAgICAgICAgICByZXR1cm4gcHBfY2xvc2VfYm94KHBwZiwgLyog
KCkgKi8wKTsKLSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIHJldHVybiBwcF9jbG9zZV90YWco
cHBmLCAvKiAoKSAqLzApOwotICAgICAgY2FzZSAyIDogCi0gICAgICAgICAgcmV0dXJuIHBwX3By
aW50X2ZsdXNoKHBwZiwgLyogKCkgKi8wKTsKLSAgICAgIGNhc2UgMyA6IAotICAgICAgICAgIHJl
dHVybiBwcF9mb3JjZV9uZXdsaW5lKHBwZiwgLyogKCkgKi8wKTsKLSAgICAgIGNhc2UgNCA6IAot
ICAgICAgICAgIHJldHVybiBwcF9wcmludF9uZXdsaW5lKHBwZiwgLyogKCkgKi8wKTsKLSAgICAg
IGNhc2UgNSA6IAotICAgICAgICAgIHJldHVybiBwcF9wcmludF9jaGFyKHBwZiwgLyogIkAiICov
NjQpOwotICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBm
LCAvKiAiJSIgKi8zNyk7Ci0gICAgICAKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAgc3dpdGNo
IChmbXRpbmdfbGl0LnRhZyB8IDApIHsKLSAgICAgIGNhc2UgMCA6IAotICAgICAgICAgIHJldHVy
biBwcF9wcmludF9icmVhayhwcGYsIGZtdGluZ19saXRbMV0sIGZtdGluZ19saXRbMl0pOwotICAg
ICAgY2FzZSAxIDogCi0gICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgIGNhc2UgMiA6
IAotICAgICAgICAgIHBwX3ByaW50X2NoYXIocHBmLCAvKiAiQCIgKi82NCk7Ci0gICAgICAgICAg
cmV0dXJuIHBwX3ByaW50X2NoYXIocHBmLCBmbXRpbmdfbGl0WzBdKTsKLSAgICAgIAotICAgIH0K
LSAgfQotfQotCi1mdW5jdGlvbiBvdXRwdXRfYWNjKHBwZiwgYWNjKSB7Ci0gIHZhciBleGl0ID0g
MDsKLSAgdmFyIHA7Ci0gIHZhciBzaXplOwotICB2YXIgczsKLSAgdmFyIHAkMTsKLSAgdmFyIHNp
emUkMTsKLSAgdmFyIGM7Ci0gIGlmICh0eXBlb2YgYWNjID09PSAibnVtYmVyIikgewotICAgIHJl
dHVybiAvKiAoKSAqLzA7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgc3dpdGNoIChhY2MudGFnIHwgMCkg
ewotICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgb3V0cHV0X2FjYyhwcGYsIGFjY1swXSk7Ci0g
ICAgICAgICAgcmV0dXJuIG91dHB1dF9mb3JtYXR0aW5nX2xpdChwcGYsIGFjY1sxXSk7Ci0gICAg
ICBjYXNlIDEgOiAKLSAgICAgICAgICB2YXIgbWF0Y2ggPSBhY2NbMV07Ci0gICAgICAgICAgdmFy
IHAkMiA9IGFjY1swXTsKLSAgICAgICAgICBvdXRwdXRfYWNjKHBwZiwgcCQyKTsKLSAgICAgICAg
ICBpZiAobWF0Y2gudGFnKSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMSA9IENhbWxpbnRlcm5h
bEZvcm1hdC5vcGVuX2JveF9vZl9zdHJpbmcoY29tcHV0ZV90YWcob3V0cHV0X2FjYywgbWF0Y2hb
MF0pKTsKLSAgICAgICAgICAgIHJldHVybiBwcF9vcGVuX2JveF9nZW4ocHBmLCBtYXRjaCQxWzBd
LCBtYXRjaCQxWzFdKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICByZXR1cm4gcHBfb3Blbl90YWcocHBmLCBjb21wdXRlX3RhZyhvdXRwdXRfYWNjLCBtYXRjaFsw
XSkpOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMiA6IAotICAg
ICAgICAgIHZhciBwJDMgPSBhY2NbMF07Ci0gICAgICAgICAgdmFyIGV4aXQkMSA9IDA7Ci0gICAg
ICAgICAgaWYgKHR5cGVvZiBwJDMgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICBleGl0JDEg
PSAzOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChwJDMudGFnKSB7Ci0gICAgICAg
ICAgICBleGl0JDEgPSAzOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIHZhciBtYXRjaCQyID0gcCQzWzFdOwotICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQy
ID09PSAibnVtYmVyIikgewotICAgICAgICAgICAgICBleGl0JDEgPSAzOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSBpZiAobWF0Y2gkMi50YWcgPT09IDEpIHsKLSAgICAgICAgICAg
ICAgcCA9IHAkM1swXTsKLSAgICAgICAgICAgICAgc2l6ZSA9IG1hdGNoJDJbMV07Ci0gICAgICAg
ICAgICAgIHMgPSBhY2NbMV07Ci0gICAgICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgIGV4aXQkMSA9IDM7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChleGl0JDEgPT09IDMpIHsKLSAgICAg
ICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDMpOwotICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50
X3N0cmluZyhwcGYsIGFjY1sxXSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSAzIDogCi0gICAgICAgICAgdmFyIHAkNCA9IGFjY1swXTsKLSAgICAgICAgICB2YXIg
ZXhpdCQyID0gMDsKLSAgICAgICAgICBpZiAodHlwZW9mIHAkNCA9PT0gIm51bWJlciIpIHsKLSAg
ICAgICAgICAgIGV4aXQkMiA9IDM7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHAk
NC50YWcpIHsKLSAgICAgICAgICAgIGV4aXQkMiA9IDM7Ci0gICAgICAgICAgfQotICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgdmFyIG1hdGNoJDMgPSBwJDRbMV07Ci0gICAgICAgICAgICBp
ZiAodHlwZW9mIG1hdGNoJDMgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICAgIGV4aXQkMiA9
IDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQzLnRhZyA9PT0g
MSkgewotICAgICAgICAgICAgICBwJDEgPSBwJDRbMF07Ci0gICAgICAgICAgICAgIHNpemUkMSA9
IG1hdGNoJDNbMV07Ci0gICAgICAgICAgICAgIGMgPSBhY2NbMV07Ci0gICAgICAgICAgICAgIGV4
aXQgPSAyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg
IGV4aXQkMiA9IDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChl
eGl0JDIgPT09IDMpIHsKLSAgICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDQpOwotICAgICAg
ICAgICAgcmV0dXJuIHBwX3ByaW50X2NoYXIocHBmLCBhY2NbMV0pOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgNCA6IAotICAgICAgICAgIHZhciBwJDUgPSBhY2Nb
MF07Ci0gICAgICAgICAgdmFyIGV4aXQkMyA9IDA7Ci0gICAgICAgICAgaWYgKHR5cGVvZiBwJDUg
PT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICBleGl0JDMgPSAzOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBlbHNlIGlmIChwJDUudGFnKSB7Ci0gICAgICAgICAgICBleGl0JDMgPSAzOwotICAg
ICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCQ0ID0gcCQ1
WzFdOwotICAgICAgICAgICAgaWYgKHR5cGVvZiBtYXRjaCQ0ID09PSAibnVtYmVyIikgewotICAg
ICAgICAgICAgICBleGl0JDMgPSAzOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBp
ZiAobWF0Y2gkNC50YWcgPT09IDEpIHsKLSAgICAgICAgICAgICAgcCA9IHAkNVswXTsKLSAgICAg
ICAgICAgICAgc2l6ZSA9IG1hdGNoJDRbMV07Ci0gICAgICAgICAgICAgIHMgPSBhY2NbMV07Ci0g
ICAgICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgIGV4aXQkMyA9IDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQot
ICAgICAgICAgIGlmIChleGl0JDMgPT09IDMpIHsKLSAgICAgICAgICAgIG91dHB1dF9hY2MocHBm
LCBwJDUpOwotICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIGFjY1sxXSk7
Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA1IDogCi0gICAgICAg
ICAgdmFyIHAkNiA9IGFjY1swXTsKLSAgICAgICAgICB2YXIgZXhpdCQ0ID0gMDsKLSAgICAgICAg
ICBpZiAodHlwZW9mIHAkNiA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIGV4aXQkNCA9IDM7
Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHAkNi50YWcpIHsKLSAgICAgICAgICAg
IGV4aXQkNCA9IDM7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
dmFyIG1hdGNoJDUgPSBwJDZbMV07Ci0gICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDUgPT09
ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICAgIGV4aXQkNCA9IDM7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQ1LnRhZyA9PT0gMSkgewotICAgICAgICAgICAgICBw
JDEgPSBwJDZbMF07Ci0gICAgICAgICAgICAgIHNpemUkMSA9IG1hdGNoJDVbMV07Ci0gICAgICAg
ICAgICAgIGMgPSBhY2NbMV07Ci0gICAgICAgICAgICAgIGV4aXQgPSAyOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgIGV4aXQkNCA9IDM7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChleGl0JDQgPT09IDMpIHsKLSAgICAg
ICAgICAgIG91dHB1dF9hY2MocHBmLCBwJDYpOwotICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50
X2NoYXIocHBmLCBhY2NbMV0pOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgNiA6IAotICAgICAgICAgIG91dHB1dF9hY2MocHBmLCBhY2NbMF0pOwotICAgICAgICAg
IHJldHVybiBDdXJyeS5fMShhY2NbMV0sIHBwZik7Ci0gICAgICBjYXNlIDcgOiAKLSAgICAgICAg
ICBvdXRwdXRfYWNjKHBwZiwgYWNjWzBdKTsKLSAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfZmx1
c2gocHBmLCAvKiAoKSAqLzApOwotICAgICAgY2FzZSA4IDogCi0gICAgICAgICAgb3V0cHV0X2Fj
YyhwcGYsIGFjY1swXSk7Ci0gICAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAgICAgYWNj
WzFdCi0gICAgICAgICAgICAgIF07Ci0gICAgICAKLSAgICB9Ci0gIH0KLSAgc3dpdGNoIChleGl0
KSB7Ci0gICAgY2FzZSAxIDogCi0gICAgICAgIG91dHB1dF9hY2MocHBmLCBwKTsKLSAgICAgICAg
cmV0dXJuIHBwX3ByaW50X2FzX3NpemUocHBmLCBzaXplLCBzKTsKLSAgICBjYXNlIDIgOiAKLSAg
ICAgICAgb3V0cHV0X2FjYyhwcGYsIHAkMSk7Ci0gICAgICAgIHJldHVybiBwcF9wcmludF9hc19z
aXplKHBwZiwgc2l6ZSQxLCBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFrZSgx
LCBjKSkpOwotICAgIAotICB9Ci19Ci0KLWZ1bmN0aW9uIHN0cnB1dF9hY2MocHBmLCBhY2MpIHsK
LSAgdmFyIGV4aXQgPSAwOwotICB2YXIgcDsKLSAgdmFyIHNpemU7Ci0gIHZhciBzOwotICB2YXIg
cCQxOwotICB2YXIgc2l6ZSQxOwotICB2YXIgYzsKLSAgaWYgKHR5cGVvZiBhY2MgPT09ICJudW1i
ZXIiKSB7Ci0gICAgcmV0dXJuIC8qICgpICovMDsKLSAgfQotICBlbHNlIHsKLSAgICBzd2l0Y2gg
KGFjYy50YWcgfCAwKSB7Ci0gICAgICBjYXNlIDAgOiAKLSAgICAgICAgICBzdHJwdXRfYWNjKHBw
ZiwgYWNjWzBdKTsKLSAgICAgICAgICByZXR1cm4gb3V0cHV0X2Zvcm1hdHRpbmdfbGl0KHBwZiwg
YWNjWzFdKTsKLSAgICAgIGNhc2UgMSA6IAotICAgICAgICAgIHZhciBtYXRjaCA9IGFjY1sxXTsK
LSAgICAgICAgICB2YXIgcCQyID0gYWNjWzBdOwotICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBw
JDIpOwotICAgICAgICAgIGlmIChtYXRjaC50YWcpIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCQx
ID0gQ2FtbGludGVybmFsRm9ybWF0Lm9wZW5fYm94X29mX3N0cmluZyhjb21wdXRlX3RhZyhzdHJw
dXRfYWNjLCBtYXRjaFswXSkpOwotICAgICAgICAgICAgcmV0dXJuIHBwX29wZW5fYm94X2dlbihw
cGYsIG1hdGNoJDFbMF0sIG1hdGNoJDFbMV0pOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIHJldHVybiBwcF9vcGVuX3RhZyhwcGYsIGNvbXB1dGVfdGFnKHN0cnB1
dF9hY2MsIG1hdGNoWzBdKSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSAyIDogCi0gICAgICAgICAgdmFyIHAkMyA9IGFjY1swXTsKLSAgICAgICAgICB2YXIgZXhp
dCQxID0gMDsKLSAgICAgICAgICBpZiAodHlwZW9mIHAkMyA9PT0gIm51bWJlciIpIHsKLSAgICAg
ICAgICAgIGV4aXQkMSA9IDM7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHAkMy50
YWcpIHsKLSAgICAgICAgICAgIGV4aXQkMSA9IDM7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgdmFyIG1hdGNoJDIgPSBwJDNbMV07Ci0gICAgICAgICAgICBpZiAo
dHlwZW9mIG1hdGNoJDIgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAgICAgIGV4aXQkMSA9IDM7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChtYXRjaCQyLnRhZyA9PT0gMSkg
ewotICAgICAgICAgICAgICBwID0gcCQzWzBdOwotICAgICAgICAgICAgICBzaXplID0gbWF0Y2gk
MlsxXTsKLSAgICAgICAgICAgICAgcyA9IGFjY1sxXTsKLSAgICAgICAgICAgICAgZXhpdCA9IDE7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgZXhpdCQx
ID0gMzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGV4aXQkMSA9
PT0gMykgewotICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkMyk7Ci0gICAgICAgICAgICBy
ZXR1cm4gcHBfcHJpbnRfc3RyaW5nKHBwZiwgYWNjWzFdKTsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIDMgOiAKLSAgICAgICAgICB2YXIgcCQ0ID0gYWNjWzBdOwot
ICAgICAgICAgIHZhciBleGl0JDIgPSAwOwotICAgICAgICAgIGlmICh0eXBlb2YgcCQ0ID09PSAi
bnVtYmVyIikgewotICAgICAgICAgICAgZXhpdCQyID0gMzsKLSAgICAgICAgICB9Ci0gICAgICAg
ICAgZWxzZSBpZiAocCQ0LnRhZykgewotICAgICAgICAgICAgZXhpdCQyID0gMzsKLSAgICAgICAg
ICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkMyA9IHAkNFsxXTsK
LSAgICAgICAgICAgIGlmICh0eXBlb2YgbWF0Y2gkMyA9PT0gIm51bWJlciIpIHsKLSAgICAgICAg
ICAgICAgZXhpdCQyID0gMzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG1h
dGNoJDMudGFnID09PSAxKSB7Ci0gICAgICAgICAgICAgIHAkMSA9IHAkNFswXTsKLSAgICAgICAg
ICAgICAgc2l6ZSQxID0gbWF0Y2gkM1sxXTsKLSAgICAgICAgICAgICAgYyA9IGFjY1sxXTsKLSAg
ICAgICAgICAgICAgZXhpdCA9IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgZXhpdCQyID0gMzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0g
ICAgICAgICAgaWYgKGV4aXQkMiA9PT0gMykgewotICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYs
IHAkNCk7Ci0gICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfY2hhcihwcGYsIGFjY1sxXSk7Ci0g
ICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSA0IDogCi0gICAgICAgICAg
dmFyIHAkNSA9IGFjY1swXTsKLSAgICAgICAgICB2YXIgZXhpdCQzID0gMDsKLSAgICAgICAgICBp
ZiAodHlwZW9mIHAkNSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgIGV4aXQkMyA9IDM7Ci0g
ICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKHAkNS50YWcpIHsKLSAgICAgICAgICAgIGV4
aXQkMyA9IDM7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFy
IG1hdGNoJDQgPSBwJDVbMV07Ci0gICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDQgPT09ICJu
dW1iZXIiKSB7Ci0gICAgICAgICAgICAgIGV4aXQkMyA9IDM7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIGlmIChtYXRjaCQ0LnRhZyA9PT0gMSkgewotICAgICAgICAgICAgICBwID0g
cCQ1WzBdOwotICAgICAgICAgICAgICBzaXplID0gbWF0Y2gkNFsxXTsKLSAgICAgICAgICAgICAg
cyA9IGFjY1sxXTsKLSAgICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgZXhpdCQzID0gMzsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGV4aXQkMyA9PT0gMykgewotICAgICAgICAgICAg
c3RycHV0X2FjYyhwcGYsIHAkNSk7Ci0gICAgICAgICAgICByZXR1cm4gcHBfcHJpbnRfc3RyaW5n
KHBwZiwgYWNjWzFdKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IDUgOiAKLSAgICAgICAgICB2YXIgcCQ2ID0gYWNjWzBdOwotICAgICAgICAgIHZhciBleGl0JDQg
PSAwOwotICAgICAgICAgIGlmICh0eXBlb2YgcCQ2ID09PSAibnVtYmVyIikgewotICAgICAgICAg
ICAgZXhpdCQ0ID0gMzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAocCQ2LnRhZykg
ewotICAgICAgICAgICAgZXhpdCQ0ID0gMzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICB2YXIgbWF0Y2gkNSA9IHAkNlsxXTsKLSAgICAgICAgICAgIGlmICh0eXBl
b2YgbWF0Y2gkNSA9PT0gIm51bWJlciIpIHsKLSAgICAgICAgICAgICAgZXhpdCQ0ID0gMzsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG1hdGNoJDUudGFnID09PSAxKSB7Ci0g
ICAgICAgICAgICAgIHAkMSA9IHAkNlswXTsKLSAgICAgICAgICAgICAgc2l6ZSQxID0gbWF0Y2gk
NVsxXTsKLSAgICAgICAgICAgICAgYyA9IGFjY1sxXTsKLSAgICAgICAgICAgICAgZXhpdCA9IDI7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgZXhpdCQ0
ID0gMzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGV4aXQkNCA9
PT0gMykgewotICAgICAgICAgICAgc3RycHV0X2FjYyhwcGYsIHAkNik7Ci0gICAgICAgICAgICBy
ZXR1cm4gcHBfcHJpbnRfY2hhcihwcGYsIGFjY1sxXSk7Ci0gICAgICAgICAgfQotICAgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSA2IDogCi0gICAgICAgICAgdmFyIHAkNyA9IGFjY1swXTsKLSAg
ICAgICAgICB2YXIgZXhpdCQ1ID0gMDsKLSAgICAgICAgICBpZiAodHlwZW9mIHAkNyA9PT0gIm51
bWJlciIpIHsKLSAgICAgICAgICAgIGV4aXQkNSA9IDM7Ci0gICAgICAgICAgfQotICAgICAgICAg
IGVsc2UgaWYgKHAkNy50YWcpIHsKLSAgICAgICAgICAgIGV4aXQkNSA9IDM7Ci0gICAgICAgICAg
fQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIG1hdGNoJDYgPSBwJDdbMV07Ci0g
ICAgICAgICAgICBpZiAodHlwZW9mIG1hdGNoJDYgPT09ICJudW1iZXIiKSB7Ci0gICAgICAgICAg
ICAgIGV4aXQkNSA9IDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChtYXRj
aCQ2LnRhZyA9PT0gMSkgewotICAgICAgICAgICAgICBzdHJwdXRfYWNjKHBwZiwgcCQ3WzBdKTsK
LSAgICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2FzX3NpemUocHBmLCBtYXRjaCQ2WzFdLCBD
dXJyeS5fMShhY2NbMV0sIC8qICgpICovMCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgIGV4aXQkNSA9IDM7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgfQotICAgICAgICAgIGlmIChleGl0JDUgPT09IDMpIHsKLSAgICAgICAgICAgIHN0cnB1dF9h
Y2MocHBmLCBwJDcpOwotICAgICAgICAgICAgcmV0dXJuIHBwX3ByaW50X3N0cmluZyhwcGYsIEN1
cnJ5Ll8xKGFjY1sxXSwgLyogKCkgKi8wKSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSA3IDogCi0gICAgICAgICAgc3RycHV0X2FjYyhwcGYsIGFjY1swXSk7Ci0g
ICAgICAgICAgcmV0dXJuIHBwX3ByaW50X2ZsdXNoKHBwZiwgLyogKCkgKi8wKTsKLSAgICAgIGNh
c2UgOCA6IAotICAgICAgICAgIHN0cnB1dF9hY2MocHBmLCBhY2NbMF0pOwotICAgICAgICAgIHRo
cm93IFsKLSAgICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2Fy
Z3VtZW50LAotICAgICAgICAgICAgICAgIGFjY1sxXQotICAgICAgICAgICAgICBdOwotICAgICAg
Ci0gICAgfQotICB9Ci0gIHN3aXRjaCAoZXhpdCkgewotICAgIGNhc2UgMSA6IAotICAgICAgICBz
dHJwdXRfYWNjKHBwZiwgcCk7Ci0gICAgICAgIHJldHVybiBwcF9wcmludF9hc19zaXplKHBwZiwg
c2l6ZSwgcyk7Ci0gICAgY2FzZSAyIDogCi0gICAgICAgIHN0cnB1dF9hY2MocHBmLCBwJDEpOwot
ICAgICAgICByZXR1cm4gcHBfcHJpbnRfYXNfc2l6ZShwcGYsIHNpemUkMSwgQ2FtbF9zdHJpbmcu
Ynl0ZXNfdG9fc3RyaW5nKEJ5dGVzLm1ha2UoMSwgYykpKTsKLSAgICAKLSAgfQotfQotCi1mdW5j
dGlvbiBrZnByaW50ZihrLCBvLCBwYXJhbSkgewotICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0
Lm1ha2VfcHJpbnRmKGZ1bmN0aW9uIChvLCBhY2MpIHsKLSAgICAgICAgICAgICAgb3V0cHV0X2Fj
YyhvLCBhY2MpOwotICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEoaywgbyk7Ci0gICAgICAg
ICAgICB9LCBvLCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOwotfQotCi1mdW5jdGlvbiBp
a2ZwcmludGYoaywgeCwgcGFyYW0pIHsKLSAgcmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtl
X3ByaW50ZihmdW5jdGlvbiAoXywgXyQxKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBDdXJyeS5f
MShrLCB4KTsKLSAgICAgICAgICAgIH0sIHgsIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7
Ci19Ci0KLWZ1bmN0aW9uIGZwcmludGYocHBmLCBmbXQpIHsKLSAgcmV0dXJuIGtmcHJpbnRmKGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgICAgICAg
IH0sIHBwZiwgZm10KTsKLX0KLQotZnVuY3Rpb24gaWZwcmludGYocHBmLCBmbXQpIHsKLSAgcmV0
dXJuIGlrZnByaW50ZihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgIHJldHVybiAvKiAoKSAq
LzA7Ci0gICAgICAgICAgICB9LCBwcGYsIGZtdCk7Ci19Ci0KLWZ1bmN0aW9uIHByaW50ZihmbXQp
IHsKLSAgcmV0dXJuIGZwcmludGYoc3RkX2Zvcm1hdHRlciwgZm10KTsKLX0KLQotZnVuY3Rpb24g
ZXByaW50ZihmbXQpIHsKLSAgcmV0dXJuIGZwcmludGYoZXJyX2Zvcm1hdHRlciwgZm10KTsKLX0K
LQotZnVuY3Rpb24ga3NwcmludGYoaywgcGFyYW0pIHsKLSAgdmFyIGIgPSBCdWZmZXIuY3JlYXRl
KDUxMik7Ci0gIHZhciBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyKGIpOwotICB2YXIgayRwcmlt
ZSA9IGZ1bmN0aW9uIChfLCBhY2MpIHsKLSAgICBzdHJwdXRfYWNjKHBwZiwgYWNjKTsKLSAgICBy
ZXR1cm4gQ3VycnkuXzEoaywgZmx1c2hfYnVmX2Zvcm1hdHRlcihiLCBwcGYpKTsKLSAgfTsKLSAg
cmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihrJHByaW1lLCAvKiAoKSAqLzAs
IC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Ci19Ci0KLWZ1bmN0aW9uIHNwcmludGYoZm10
KSB7Ci0gIHJldHVybiBrc3ByaW50ZihmdW5jdGlvbiAocykgewotICAgICAgICAgICAgICByZXR1
cm4gczsKLSAgICAgICAgICAgIH0sIGZtdCk7Ci19Ci0KLWZ1bmN0aW9uIGFzcHJpbnRmKHBhcmFt
KSB7Ci0gIHZhciBiID0gQnVmZmVyLmNyZWF0ZSg1MTIpOwotICB2YXIgcHBmID0gZm9ybWF0dGVy
X29mX2J1ZmZlcihiKTsKLSAgdmFyIGskcHJpbWUgPSBmdW5jdGlvbiAocHBmLCBhY2MpIHsKLSAg
ICBvdXRwdXRfYWNjKHBwZiwgYWNjKTsKLSAgICBwcF9mbHVzaF9xdWV1ZShwcGYsIC8qIGZhbHNl
ICovMCk7Ci0gICAgcmV0dXJuIGZsdXNoX2J1Zl9mb3JtYXR0ZXIoYiwgcHBmKTsKLSAgfTsKLSAg
cmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihrJHByaW1lLCBwcGYsIC8qIEVu
ZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Ci19Ci0KLWZ1bmN0aW9uIGJwcmludGYoYiwgcGFyYW0p
IHsKLSAgdmFyIGsgPSBmdW5jdGlvbiAocHBmLCBhY2MpIHsKLSAgICBvdXRwdXRfYWNjKHBwZiwg
YWNjKTsKLSAgICByZXR1cm4gcHBfZmx1c2hfcXVldWUocHBmLCAvKiBmYWxzZSAqLzApOwotICB9
OwotICByZXR1cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGssIGZvcm1hdHRlcl9v
Zl9idWZmZXIoYiksIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Ci19Ci0KLVBlcnZhc2l2
ZXMuYXRfZXhpdChwcmludF9mbHVzaCk7Ci0KLXZhciBrcHJpbnRmID0ga3NwcmludGY7Ci0KLWV4
cG9ydHMub3Blbl9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fYm94Owot
ZXhwb3J0cy5jbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gY2xvc2VfYm94
OwotZXhwb3J0cy5wcmludF9zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRf
c3RyaW5nOwotZXhwb3J0cy5wcmludF9hcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
cHJpbnRfYXM7Ci1leHBvcnRzLnByaW50X2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBwcmludF9pbnQ7Ci1leHBvcnRzLnByaW50X2Zsb2F0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBwcmludF9mbG9hdDsKLWV4cG9ydHMucHJpbnRfY2hhciAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IHByaW50X2NoYXI7Ci1leHBvcnRzLnByaW50X2Jvb2wgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBwcmludF9ib29sOwotZXhwb3J0cy5wcmludF9zcGFjZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gcHJpbnRfc3BhY2U7Ci1leHBvcnRzLnByaW50X2N1dCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9jdXQ7Ci1leHBvcnRzLnByaW50X2JyZWFrICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9icmVhazsKLWV4cG9ydHMucHJpbnRfZmx1
c2ggICAgICAgICAgICAgICAgICAgICAgICAgICA9IHByaW50X2ZsdXNoOwotZXhwb3J0cy5wcmlu
dF9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRfbmV3bGluZTsKLWV4cG9y
dHMuZm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICA9IGZvcmNlX25ld2xpbmU7
Ci1leHBvcnRzLnByaW50X2lmX25ld2xpbmUgICAgICAgICAgICAgICAgICAgICAgPSBwcmludF9p
Zl9uZXdsaW5lOwotZXhwb3J0cy5zZXRfbWFyZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gc2V0X21hcmdpbjsKLWV4cG9ydHMuZ2V0X21hcmdpbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IGdldF9tYXJnaW47Ci1leHBvcnRzLnNldF9tYXhfaW5kZW50ICAgICAgICAgICAgICAg
ICAgICAgICAgPSBzZXRfbWF4X2luZGVudDsKLWV4cG9ydHMuZ2V0X21heF9pbmRlbnQgICAgICAg
ICAgICAgICAgICAgICAgICA9IGdldF9tYXhfaW5kZW50OwotZXhwb3J0cy5zZXRfbWF4X2JveGVz
ICAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X21heF9ib3hlczsKLWV4cG9ydHMuZ2V0X21h
eF9ib3hlcyAgICAgICAgICAgICAgICAgICAgICAgICA9IGdldF9tYXhfYm94ZXM7Ci1leHBvcnRz
Lm92ZXJfbWF4X2JveGVzICAgICAgICAgICAgICAgICAgICAgICAgPSBvdmVyX21heF9ib3hlczsK
LWV4cG9ydHMub3Blbl9oYm94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5faGJv
eDsKLWV4cG9ydHMub3Blbl92Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5f
dmJveDsKLWV4cG9ydHMub3Blbl9odmJveCAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9w
ZW5faHZib3g7Ci1leHBvcnRzLm9wZW5faG92Ym94ICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBvcGVuX2hvdmJveDsKLWV4cG9ydHMub3Blbl90Ym94ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IG9wZW5fdGJveDsKLWV4cG9ydHMuY2xvc2VfdGJveCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IGNsb3NlX3Rib3g7Ci1leHBvcnRzLnByaW50X3RicmVhayAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBwcmludF90YnJlYWs7Ci1leHBvcnRzLnNldF90YWIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBzZXRfdGFiOwotZXhwb3J0cy5wcmludF90YWIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gcHJpbnRfdGFiOwotZXhwb3J0cy5zZXRfZWxsaXBzaXNfdGV4
dCAgICAgICAgICAgICAgICAgICAgID0gc2V0X2VsbGlwc2lzX3RleHQ7Ci1leHBvcnRzLmdldF9l
bGxpcHNpc190ZXh0ICAgICAgICAgICAgICAgICAgICAgPSBnZXRfZWxsaXBzaXNfdGV4dDsKLWV4
cG9ydHMub3Blbl90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG9wZW5fdGFnOwot
ZXhwb3J0cy5jbG9zZV90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gY2xvc2VfdGFn
OwotZXhwb3J0cy5zZXRfdGFncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc2V0X3Rh
Z3M7Ci1leHBvcnRzLnNldF9wcmludF90YWdzICAgICAgICAgICAgICAgICAgICAgICAgPSBzZXRf
cHJpbnRfdGFnczsKLWV4cG9ydHMuc2V0X21hcmtfdGFncyAgICAgICAgICAgICAgICAgICAgICAg
ICA9IHNldF9tYXJrX3RhZ3M7Ci1leHBvcnRzLmdldF9wcmludF90YWdzICAgICAgICAgICAgICAg
ICAgICAgICAgPSBnZXRfcHJpbnRfdGFnczsKLWV4cG9ydHMuZ2V0X21hcmtfdGFncyAgICAgICAg
ICAgICAgICAgICAgICAgICA9IGdldF9tYXJrX3RhZ3M7Ci1leHBvcnRzLnNldF9mb3JtYXR0ZXJf
b3V0X2NoYW5uZWwgICAgICAgICAgICAgPSBzZXRfZm9ybWF0dGVyX291dF9jaGFubmVsOwotZXhw
b3J0cy5zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgICAgID0gc2V0X2Zvcm1hdHRl
cl9vdXRwdXRfZnVuY3Rpb25zOwotZXhwb3J0cy5nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlv
bnMgICAgICAgID0gZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOwotZXhwb3J0cy5zZXRf
Zm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgICAgID0gc2V0X2Zvcm1hdHRlcl9vdXRfZnVu
Y3Rpb25zOwotZXhwb3J0cy5nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgICAgID0g
Z2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOwotZXhwb3J0cy5zZXRfZm9ybWF0dGVyX3RhZ19m
dW5jdGlvbnMgICAgICAgICAgID0gc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOwotZXhwb3J0
cy5nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgICAgID0gZ2V0X2Zvcm1hdHRlcl90
YWdfZnVuY3Rpb25zOwotZXhwb3J0cy5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgICAgICAgICAg
ICAgID0gZm9ybWF0dGVyX29mX291dF9jaGFubmVsOwotZXhwb3J0cy5zdGRfZm9ybWF0dGVyICAg
ICAgICAgICAgICAgICAgICAgICAgID0gc3RkX2Zvcm1hdHRlcjsKLWV4cG9ydHMuZXJyX2Zvcm1h
dHRlciAgICAgICAgICAgICAgICAgICAgICAgICA9IGVycl9mb3JtYXR0ZXI7Ci1leHBvcnRzLmZv
cm1hdHRlcl9vZl9idWZmZXIgICAgICAgICAgICAgICAgICAgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVy
OwotZXhwb3J0cy5zdGRidWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RkYnVm
OwotZXhwb3J0cy5zdHJfZm9ybWF0dGVyICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RyX2Zv
cm1hdHRlcjsKLWV4cG9ydHMuZmx1c2hfc3RyX2Zvcm1hdHRlciAgICAgICAgICAgICAgICAgICA9
IGZsdXNoX3N0cl9mb3JtYXR0ZXI7Ci1leHBvcnRzLm1ha2VfZm9ybWF0dGVyICAgICAgICAgICAg
ICAgICAgICAgICAgPSBtYWtlX2Zvcm1hdHRlcjsKLWV4cG9ydHMucHBfb3Blbl9oYm94ICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5faGJveDsKLWV4cG9ydHMucHBfb3Blbl92Ym94
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5fdmJveDsKLWV4cG9ydHMucHBfb3Bl
bl9odmJveCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5faHZib3g7Ci1leHBvcnRz
LnBwX29wZW5faG92Ym94ICAgICAgICAgICAgICAgICAgICAgICAgPSBwcF9vcGVuX2hvdmJveDsK
LWV4cG9ydHMucHBfb3Blbl9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX29wZW5f
Ym94OwotZXhwb3J0cy5wcF9jbG9zZV9ib3ggICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBf
Y2xvc2VfYm94OwotZXhwb3J0cy5wcF9vcGVuX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gcHBfb3Blbl90YWc7Ci1leHBvcnRzLnBwX2Nsb3NlX3RhZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSBwcF9jbG9zZV90YWc7Ci1leHBvcnRzLnBwX3ByaW50X3N0cmluZyAgICAgICAgICAg
ICAgICAgICAgICAgPSBwcF9wcmludF9zdHJpbmc7Ci1leHBvcnRzLnBwX3ByaW50X2FzICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBwcF9wcmludF9hczsKLWV4cG9ydHMucHBfcHJpbnRfaW50
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2ludDsKLWV4cG9ydHMucHBfcHJp
bnRfZmxvYXQgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2Zsb2F0OwotZXhwb3J0
cy5wcF9wcmludF9jaGFyICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfY2hhcjsK
LWV4cG9ydHMucHBfcHJpbnRfYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50
X2Jvb2w7Ci1leHBvcnRzLnBwX3ByaW50X2JyZWFrICAgICAgICAgICAgICAgICAgICAgICAgPSBw
cF9wcmludF9icmVhazsKLWV4cG9ydHMucHBfcHJpbnRfY3V0ICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IHBwX3ByaW50X2N1dDsKLWV4cG9ydHMucHBfcHJpbnRfc3BhY2UgICAgICAgICAgICAg
ICAgICAgICAgICA9IHBwX3ByaW50X3NwYWNlOwotZXhwb3J0cy5wcF9mb3JjZV9uZXdsaW5lICAg
ICAgICAgICAgICAgICAgICAgID0gcHBfZm9yY2VfbmV3bGluZTsKLWV4cG9ydHMucHBfcHJpbnRf
Zmx1c2ggICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X2ZsdXNoOwotZXhwb3J0cy5w
cF9wcmludF9uZXdsaW5lICAgICAgICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfbmV3bGluZTsK
LWV4cG9ydHMucHBfcHJpbnRfaWZfbmV3bGluZSAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50
X2lmX25ld2xpbmU7Ci1leHBvcnRzLnBwX29wZW5fdGJveCAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBwcF9vcGVuX3Rib3g7Ci1leHBvcnRzLnBwX2Nsb3NlX3Rib3ggICAgICAgICAgICAgICAg
ICAgICAgICAgPSBwcF9jbG9zZV90Ym94OwotZXhwb3J0cy5wcF9wcmludF90YnJlYWsgICAgICAg
ICAgICAgICAgICAgICAgID0gcHBfcHJpbnRfdGJyZWFrOwotZXhwb3J0cy5wcF9zZXRfdGFiICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X3RhYjsKLWV4cG9ydHMucHBfcHJpbnRf
dGFiICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3ByaW50X3RhYjsKLWV4cG9ydHMucHBf
c2V0X3RhZ3MgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX3NldF90YWdzOwotZXhwb3J0
cy5wcF9zZXRfcHJpbnRfdGFncyAgICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X3ByaW50X3Rh
Z3M7Ci1leHBvcnRzLnBwX3NldF9tYXJrX3RhZ3MgICAgICAgICAgICAgICAgICAgICAgPSBwcF9z
ZXRfbWFya190YWdzOwotZXhwb3J0cy5wcF9nZXRfcHJpbnRfdGFncyAgICAgICAgICAgICAgICAg
ICAgID0gcHBfZ2V0X3ByaW50X3RhZ3M7Ci1leHBvcnRzLnBwX2dldF9tYXJrX3RhZ3MgICAgICAg
ICAgICAgICAgICAgICAgPSBwcF9nZXRfbWFya190YWdzOwotZXhwb3J0cy5wcF9zZXRfbWFyZ2lu
ICAgICAgICAgICAgICAgICAgICAgICAgID0gcHBfc2V0X21hcmdpbjsKLWV4cG9ydHMucHBfZ2V0
X21hcmdpbiAgICAgICAgICAgICAgICAgICAgICAgICA9IHBwX2dldF9tYXJnaW47Ci1leHBvcnRz
LnBwX3NldF9tYXhfaW5kZW50ICAgICAgICAgICAgICAgICAgICAgPSBwcF9zZXRfbWF4X2luZGVu
dDsKLWV4cG9ydHMucHBfZ2V0X21heF9pbmRlbnQgICAgICAgICAgICAgICAgICAgICA9IHBwX2dl
dF9tYXhfaW5kZW50OwotZXhwb3J0cy5wcF9zZXRfbWF4X2JveGVzICAgICAgICAgICAgICAgICAg
ICAgID0gcHBfc2V0X21heF9ib3hlczsKLWV4cG9ydHMucHBfZ2V0X21heF9ib3hlcyAgICAgICAg
ICAgICAgICAgICAgICA9IHBwX2dldF9tYXhfYm94ZXM7Ci1leHBvcnRzLnBwX292ZXJfbWF4X2Jv
eGVzICAgICAgICAgICAgICAgICAgICAgPSBwcF9vdmVyX21heF9ib3hlczsKLWV4cG9ydHMucHBf
c2V0X2VsbGlwc2lzX3RleHQgICAgICAgICAgICAgICAgICA9IHBwX3NldF9lbGxpcHNpc190ZXh0
OwotZXhwb3J0cy5wcF9nZXRfZWxsaXBzaXNfdGV4dCAgICAgICAgICAgICAgICAgID0gcHBfZ2V0
X2VsbGlwc2lzX3RleHQ7Ci1leHBvcnRzLnBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgICAg
ICAgICAgPSBwcF9zZXRfZm9ybWF0dGVyX291dF9jaGFubmVsOwotZXhwb3J0cy5wcF9zZXRfZm9y
bWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgID0gcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVu
Y3Rpb25zOwotZXhwb3J0cy5wcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgICAgID0g
cHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zOwotZXhwb3J0cy5wcF9zZXRfZm9ybWF0
dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgID0gcHBfc2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25z
OwotZXhwb3J0cy5wcF9nZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgICAgICAgID0gcHBfZ2V0
X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zOwotZXhwb3J0cy5wcF9zZXRfZm9ybWF0dGVyX291dF9m
dW5jdGlvbnMgICAgICAgID0gcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zOwotZXhwb3J0
cy5wcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgICAgICAgID0gcHBfZ2V0X2Zvcm1hdHRl
cl9vdXRfZnVuY3Rpb25zOwotZXhwb3J0cy5wcF9wcmludF9saXN0ICAgICAgICAgICAgICAgICAg
ICAgICAgID0gcHBfcHJpbnRfbGlzdDsKLWV4cG9ydHMucHBfcHJpbnRfdGV4dCAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHBwX3ByaW50X3RleHQ7Ci1leHBvcnRzLmZwcmludGYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBmcHJpbnRmOwotZXhwb3J0cy5wcmludGYgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gcHJpbnRmOwotZXhwb3J0cy5lcHJpbnRmICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gZXByaW50ZjsKLWV4cG9ydHMuc3ByaW50ZiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IHNwcmludGY7Ci1leHBvcnRzLmFzcHJpbnRmICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPSBhc3ByaW50ZjsKLWV4cG9ydHMuaWZwcmludGYgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IGlmcHJpbnRmOwotZXhwb3J0cy5rZnByaW50ZiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0ga2ZwcmludGY7Ci1leHBvcnRzLmlrZnByaW50
ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBpa2ZwcmludGY7Ci1leHBvcnRzLmtzcHJp
bnRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBrc3ByaW50ZjsKLWV4cG9ydHMuYnBy
aW50ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGJwcmludGY7Ci1leHBvcnRzLmtw
cmludGYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBrcHJpbnRmOwotZXhwb3J0cy5z
ZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zICAgID0gc2V0X2FsbF9mb3JtYXR0ZXJf
b3V0cHV0X2Z1bmN0aW9uczsKLWV4cG9ydHMuZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0
aW9ucyAgICA9IGdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnM7Ci1leHBvcnRzLnBw
X3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPSBwcF9zZXRfYWxsX2Zvcm1hdHRl
cl9vdXRwdXRfZnVuY3Rpb25zOwotZXhwb3J0cy5wcF9nZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRf
ZnVuY3Rpb25zID0gcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9uczsKLS8qIGJs
YW5rX2xpbmUgTm90IGEgcHVyZSBtb2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBmb3JtYXQuanMg
Ly8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnaTMy
J10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQg
b2YgaTMyLmpzIC8vLy8vLy8vCi0vLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04g
MS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKLSd1c2Ugc3RyaWN0JzsKLQotdmFyIEludCAg
ICAgICAgPSByZXF1aXJlKCIuL2ludCIpOwotdmFyIEludDMyICAgICAgPSByZXF1aXJlKCJicy1w
bGF0Zm9ybS9saWIvanMvaW50MzIiKTsKLXZhciBDYW1sX2ludDMyID0gcmVxdWlyZSgiYnMtcGxh
dGZvcm0vbGliL2pzL2NhbWxfaW50MzIiKTsKLQotdmFyIGluY2x1ZGUgPSBJbnQuTWFrZSgvKiBt
b2R1bGUgKi9bCi0gICAgICAvKiB6ZXJvICovSW50MzIuemVybywKLSAgICAgIC8qIG9uZSAqL0lu
dDMyLm9uZSwKLSAgICAgIC8qIG1pbnVzX29uZSAqL0ludDMyLm1pbnVzX29uZSwKLSAgICAgIC8q
IG1heF9pbnQgKi9JbnQzMi5tYXhfaW50LAotICAgICAgLyogbWluX2ludCAqL0ludDMyLm1pbl9p
bnQsCi0gICAgICAvKiAlaW50MzJfbmVnICovZnVuY3Rpb24gKHByaW0pIHsKLSAgICAgICAgcmV0
dXJuIC1wcmltIHwgMDsKLSAgICAgIH0sCi0gICAgICAvKiAlaW50MzJfYWRkICovZnVuY3Rpb24g
KHByaW0sIHByaW0kMSkgewotICAgICAgICByZXR1cm4gcHJpbSArIHByaW0kMSB8IDA7Ci0gICAg
ICB9LAotICAgICAgLyogJWludDMyX3N1YiAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKLSAg
ICAgICAgcmV0dXJuIHByaW0gLSBwcmltJDEgfCAwOwotICAgICAgfSwKLSAgICAgIC8qICVpbnQz
Ml9tdWwgKi9DYW1sX2ludDMyLmltdWwsCi0gICAgICAvKiAlaW50MzJfZGl2ICovQ2FtbF9pbnQz
Mi5kaXYsCi0gICAgICAvKiAlaW50MzJfbW9kICovQ2FtbF9pbnQzMi5tb2RfLAotICAgICAgLyog
JWludDMyX2FuZCAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKLSAgICAgICAgcmV0dXJuIHBy
aW0gJiBwcmltJDE7Ci0gICAgICB9LAotICAgICAgLyogbG9nbm90ICovSW50MzIubG9nbm90LAot
ICAgICAgLyogJWludDMyX29yICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgewotICAgICAgICBy
ZXR1cm4gcHJpbSB8IHByaW0kMTsKLSAgICAgIH0sCi0gICAgICAvKiAlaW50MzJfeG9yICovZnVu
Y3Rpb24gKHByaW0sIHByaW0kMSkgewotICAgICAgICByZXR1cm4gcHJpbSBeIHByaW0kMTsKLSAg
ICAgIH0sCi0gICAgICAvKiAlaW50MzJfbHNsICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgewot
ICAgICAgICByZXR1cm4gKHByaW0gPDwgcHJpbSQxKTsKLSAgICAgIH0sCi0gICAgICAvKiAlaW50
MzJfYXNyICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgewotICAgICAgICByZXR1cm4gKHByaW0g
Pj4gcHJpbSQxKTsKLSAgICAgIH0sCi0gICAgICAvKiAlaW50MzJfbHNyICovZnVuY3Rpb24gKHBy
aW0sIHByaW0kMSkgewotICAgICAgICByZXR1cm4gKHByaW0gPj4+IHByaW0kMSkgfCAwOwotICAg
ICAgfSwKLSAgICAgIC8qICVpbnQzMl9vZl9pbnQgKi9mdW5jdGlvbiAocHJpbSkgewotICAgICAg
ICByZXR1cm4gcHJpbTsKLSAgICAgIH0sCi0gICAgICAvKiAlaW50MzJfdG9faW50ICovZnVuY3Rp
b24gKHByaW0pIHsKLSAgICAgICAgcmV0dXJuIHByaW07Ci0gICAgICB9LAotICAgICAgLyogdG9f
c3RyaW5nICovSW50MzIudG9fc3RyaW5nLAotICAgICAgLyogYml0d2lkdGggKi8zMgotICAgIF0p
OwotCi12YXIgb2ZfYml0cyA9IGluY2x1ZGVbMF07Ci0KLXZhciB0b19iaXRzID0gaW5jbHVkZVsx
XTsKLQotdmFyIHplcm8gPSBpbmNsdWRlWzJdOwotCi12YXIgYWRkID0gaW5jbHVkZVszXTsKLQot
dmFyIHN1YiA9IGluY2x1ZGVbNF07Ci0KLXZhciBtdWwgPSBpbmNsdWRlWzVdOwotCi12YXIgZGl2
X3MgPSBpbmNsdWRlWzZdOwotCi12YXIgZGl2X3UgPSBpbmNsdWRlWzddOwotCi12YXIgcmVtX3Mg
PSBpbmNsdWRlWzhdOwotCi12YXIgcmVtX3UgPSBpbmNsdWRlWzldOwotCi12YXIgYW5kXyA9IGlu
Y2x1ZGVbMTBdOwotCi12YXIgb3JfID0gaW5jbHVkZVsxMV07Ci0KLXZhciB4b3IgPSBpbmNsdWRl
WzEyXTsKLQotdmFyIHNobCA9IGluY2x1ZGVbMTNdOwotCi12YXIgc2hyX3MgPSBpbmNsdWRlWzE0
XTsKLQotdmFyIHNocl91ID0gaW5jbHVkZVsxNV07Ci0KLXZhciByb3RsID0gaW5jbHVkZVsxNl07
Ci0KLXZhciByb3RyID0gaW5jbHVkZVsxN107Ci0KLXZhciBjbHogPSBpbmNsdWRlWzE4XTsKLQot
dmFyIGN0eiA9IGluY2x1ZGVbMTldOwotCi12YXIgcG9wY250ID0gaW5jbHVkZVsyMF07Ci0KLXZh
ciBlcXogPSBpbmNsdWRlWzIxXTsKLQotdmFyIGVxID0gaW5jbHVkZVsyMl07Ci0KLXZhciBuZSA9
IGluY2x1ZGVbMjNdOwotCi12YXIgbHRfcyA9IGluY2x1ZGVbMjRdOwotCi12YXIgbHRfdSA9IGlu
Y2x1ZGVbMjVdOwotCi12YXIgbGVfcyA9IGluY2x1ZGVbMjZdOwotCi12YXIgbGVfdSA9IGluY2x1
ZGVbMjddOwotCi12YXIgZ3RfcyA9IGluY2x1ZGVbMjhdOwotCi12YXIgZ3RfdSA9IGluY2x1ZGVb
MjldOwotCi12YXIgZ2VfcyA9IGluY2x1ZGVbMzBdOwotCi12YXIgZ2VfdSA9IGluY2x1ZGVbMzFd
OwotCi12YXIgb2ZfaW50X3MgPSBpbmNsdWRlWzMyXTsKLQotdmFyIG9mX2ludF91ID0gaW5jbHVk
ZVszM107Ci0KLXZhciBvZl9zdHJpbmdfcyA9IGluY2x1ZGVbMzRdOwotCi12YXIgb2Zfc3RyaW5n
X3UgPSBpbmNsdWRlWzM1XTsKLQotdmFyIG9mX3N0cmluZyA9IGluY2x1ZGVbMzZdOwotCi12YXIg
dG9fc3RyaW5nX3MgPSBpbmNsdWRlWzM3XTsKLQotdmFyIHRvX3N0cmluZ191ID0gaW5jbHVkZVsz
OF07Ci0KLWV4cG9ydHMub2ZfYml0cyAgICAgPSBvZl9iaXRzOwotZXhwb3J0cy50b19iaXRzICAg
ICA9IHRvX2JpdHM7Ci1leHBvcnRzLnplcm8gICAgICAgID0gemVybzsKLWV4cG9ydHMuYWRkICAg
ICAgICAgPSBhZGQ7Ci1leHBvcnRzLnN1YiAgICAgICAgID0gc3ViOwotZXhwb3J0cy5tdWwgICAg
ICAgICA9IG11bDsKLWV4cG9ydHMuZGl2X3MgICAgICAgPSBkaXZfczsKLWV4cG9ydHMuZGl2X3Ug
ICAgICAgPSBkaXZfdTsKLWV4cG9ydHMucmVtX3MgICAgICAgPSByZW1fczsKLWV4cG9ydHMucmVt
X3UgICAgICAgPSByZW1fdTsKLWV4cG9ydHMuYW5kXyAgICAgICAgPSBhbmRfOwotZXhwb3J0cy5v
cl8gICAgICAgICA9IG9yXzsKLWV4cG9ydHMueG9yICAgICAgICAgPSB4b3I7Ci1leHBvcnRzLnNo
bCAgICAgICAgID0gc2hsOwotZXhwb3J0cy5zaHJfcyAgICAgICA9IHNocl9zOwotZXhwb3J0cy5z
aHJfdSAgICAgICA9IHNocl91OwotZXhwb3J0cy5yb3RsICAgICAgICA9IHJvdGw7Ci1leHBvcnRz
LnJvdHIgICAgICAgID0gcm90cjsKLWV4cG9ydHMuY2x6ICAgICAgICAgPSBjbHo7Ci1leHBvcnRz
LmN0eiAgICAgICAgID0gY3R6OwotZXhwb3J0cy5wb3BjbnQgICAgICA9IHBvcGNudDsKLWV4cG9y
dHMuZXF6ICAgICAgICAgPSBlcXo7Ci1leHBvcnRzLmVxICAgICAgICAgID0gZXE7Ci1leHBvcnRz
Lm5lICAgICAgICAgID0gbmU7Ci1leHBvcnRzLmx0X3MgICAgICAgID0gbHRfczsKLWV4cG9ydHMu
bHRfdSAgICAgICAgPSBsdF91OwotZXhwb3J0cy5sZV9zICAgICAgICA9IGxlX3M7Ci1leHBvcnRz
LmxlX3UgICAgICAgID0gbGVfdTsKLWV4cG9ydHMuZ3RfcyAgICAgICAgPSBndF9zOwotZXhwb3J0
cy5ndF91ICAgICAgICA9IGd0X3U7Ci1leHBvcnRzLmdlX3MgICAgICAgID0gZ2VfczsKLWV4cG9y
dHMuZ2VfdSAgICAgICAgPSBnZV91OwotZXhwb3J0cy5vZl9pbnRfcyAgICA9IG9mX2ludF9zOwot
ZXhwb3J0cy5vZl9pbnRfdSAgICA9IG9mX2ludF91OwotZXhwb3J0cy5vZl9zdHJpbmdfcyA9IG9m
X3N0cmluZ19zOwotZXhwb3J0cy5vZl9zdHJpbmdfdSA9IG9mX3N0cmluZ191OwotZXhwb3J0cy5v
Zl9zdHJpbmcgICA9IG9mX3N0cmluZzsKLWV4cG9ydHMudG9fc3RyaW5nX3MgPSB0b19zdHJpbmdf
czsKLWV4cG9ydHMudG9fc3RyaW5nX3UgPSB0b19zdHJpbmdfdTsKLS8qIGluY2x1ZGUgTm90IGEg
cHVyZSBtb2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBpMzIuanMgLy8vLy8vLy8KLSAgICByZXR1
cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnaTY0J10gPSBmdW5jdGlvbigpIHsK
LSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgaTY0LmpzIC8vLy8vLy8v
Ci0vLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJ
VCBXSVRIIENBUkUKLSd1c2Ugc3RyaWN0JzsKLQotdmFyIEludCAgICAgICAgPSByZXF1aXJlKCIu
L2ludCIpOwotdmFyIEludDY0ICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvaW50
NjQiKTsKLXZhciBDYW1sX2ludDY0ID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxf
aW50NjQiKTsKLQotdmFyIGluY2x1ZGUgPSBJbnQuTWFrZSgvKiBtb2R1bGUgKi9bCi0gICAgICAv
KiB6ZXJvICovSW50NjQuemVybywKLSAgICAgIC8qIG9uZSAqL0ludDY0Lm9uZSwKLSAgICAgIC8q
IG1pbnVzX29uZSAqL0ludDY0Lm1pbnVzX29uZSwKLSAgICAgIC8qIG1heF9pbnQgKi9JbnQ2NC5t
YXhfaW50LAotICAgICAgLyogbWluX2ludCAqL0ludDY0Lm1pbl9pbnQsCi0gICAgICAvKiAlaW50
NjRfbmVnICovQ2FtbF9pbnQ2NC5uZWcsCi0gICAgICAvKiAlaW50NjRfYWRkICovQ2FtbF9pbnQ2
NC5hZGQsCi0gICAgICAvKiAlaW50NjRfc3ViICovQ2FtbF9pbnQ2NC5zdWIsCi0gICAgICAvKiAl
aW50NjRfbXVsICovQ2FtbF9pbnQ2NC5tdWwsCi0gICAgICAvKiAlaW50NjRfZGl2ICovQ2FtbF9p
bnQ2NC5kaXYsCi0gICAgICAvKiAlaW50NjRfbW9kICovQ2FtbF9pbnQ2NC5tb2RfLAotICAgICAg
LyogJWludDY0X2FuZCAqL2Z1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKLSAgICAgICAgcmV0dXJu
IC8qIGludDY0ICovWwotICAgICAgICAgICAgICAgIC8qIGhpICovcHJpbVswXSAmIHByaW0kMVsw
XSwKLSAgICAgICAgICAgICAgICAvKiBsbyAqLygocHJpbVsxXSAmIHByaW0kMVsxXSkgPj4+IDAp
Ci0gICAgICAgICAgICAgIF07Ci0gICAgICB9LAotICAgICAgLyogbG9nbm90ICovSW50NjQubG9n
bm90LAotICAgICAgLyogJWludDY0X29yICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgewotICAg
ICAgICByZXR1cm4gLyogaW50NjQgKi9bCi0gICAgICAgICAgICAgICAgLyogaGkgKi9wcmltWzBd
IHwgcHJpbSQxWzBdLAotICAgICAgICAgICAgICAgIC8qIGxvICovKChwcmltWzFdIHwgcHJpbSQx
WzFdKSA+Pj4gMCkKLSAgICAgICAgICAgICAgXTsKLSAgICAgIH0sCi0gICAgICAvKiAlaW50NjRf
eG9yICovZnVuY3Rpb24gKHByaW0sIHByaW0kMSkgewotICAgICAgICByZXR1cm4gLyogaW50NjQg
Ki9bCi0gICAgICAgICAgICAgICAgLyogaGkgKi9wcmltWzBdIF4gcHJpbSQxWzBdLAotICAgICAg
ICAgICAgICAgIC8qIGxvICovKChwcmltWzFdIF4gcHJpbSQxWzFdKSA+Pj4gMCkKLSAgICAgICAg
ICAgICAgXTsKLSAgICAgIH0sCi0gICAgICAvKiAlaW50NjRfbHNsICovQ2FtbF9pbnQ2NC5sc2xf
LAotICAgICAgLyogJWludDY0X2FzciAqL0NhbWxfaW50NjQuYXNyXywKLSAgICAgIC8qICVpbnQ2
NF9sc3IgKi9DYW1sX2ludDY0Lmxzcl8sCi0gICAgICAvKiAlaW50NjRfb2ZfaW50ICovQ2FtbF9p
bnQ2NC5vZl9pbnQzMiwKLSAgICAgIC8qICVpbnQ2NF90b19pbnQgKi9mdW5jdGlvbiAocHJpbSkg
ewotICAgICAgICByZXR1cm4gcHJpbVsxXSB8IDA7Ci0gICAgICB9LAotICAgICAgLyogdG9fc3Ry
aW5nICovSW50NjQudG9fc3RyaW5nLAotICAgICAgLyogYml0d2lkdGggKi82NAotICAgIF0pOwot
Ci12YXIgb2ZfYml0cyA9IGluY2x1ZGVbMF07Ci0KLXZhciB0b19iaXRzID0gaW5jbHVkZVsxXTsK
LQotdmFyIHplcm8gPSBpbmNsdWRlWzJdOwotCi12YXIgYWRkID0gaW5jbHVkZVszXTsKLQotdmFy
IHN1YiA9IGluY2x1ZGVbNF07Ci0KLXZhciBtdWwgPSBpbmNsdWRlWzVdOwotCi12YXIgZGl2X3Mg
PSBpbmNsdWRlWzZdOwotCi12YXIgZGl2X3UgPSBpbmNsdWRlWzddOwotCi12YXIgcmVtX3MgPSBp
bmNsdWRlWzhdOwotCi12YXIgcmVtX3UgPSBpbmNsdWRlWzldOwotCi12YXIgYW5kXyA9IGluY2x1
ZGVbMTBdOwotCi12YXIgb3JfID0gaW5jbHVkZVsxMV07Ci0KLXZhciB4b3IgPSBpbmNsdWRlWzEy
XTsKLQotdmFyIHNobCA9IGluY2x1ZGVbMTNdOwotCi12YXIgc2hyX3MgPSBpbmNsdWRlWzE0XTsK
LQotdmFyIHNocl91ID0gaW5jbHVkZVsxNV07Ci0KLXZhciByb3RsID0gaW5jbHVkZVsxNl07Ci0K
LXZhciByb3RyID0gaW5jbHVkZVsxN107Ci0KLXZhciBjbHogPSBpbmNsdWRlWzE4XTsKLQotdmFy
IGN0eiA9IGluY2x1ZGVbMTldOwotCi12YXIgcG9wY250ID0gaW5jbHVkZVsyMF07Ci0KLXZhciBl
cXogPSBpbmNsdWRlWzIxXTsKLQotdmFyIGVxID0gaW5jbHVkZVsyMl07Ci0KLXZhciBuZSA9IGlu
Y2x1ZGVbMjNdOwotCi12YXIgbHRfcyA9IGluY2x1ZGVbMjRdOwotCi12YXIgbHRfdSA9IGluY2x1
ZGVbMjVdOwotCi12YXIgbGVfcyA9IGluY2x1ZGVbMjZdOwotCi12YXIgbGVfdSA9IGluY2x1ZGVb
MjddOwotCi12YXIgZ3RfcyA9IGluY2x1ZGVbMjhdOwotCi12YXIgZ3RfdSA9IGluY2x1ZGVbMjld
OwotCi12YXIgZ2VfcyA9IGluY2x1ZGVbMzBdOwotCi12YXIgZ2VfdSA9IGluY2x1ZGVbMzFdOwot
Ci12YXIgb2ZfaW50X3MgPSBpbmNsdWRlWzMyXTsKLQotdmFyIG9mX2ludF91ID0gaW5jbHVkZVsz
M107Ci0KLXZhciBvZl9zdHJpbmdfcyA9IGluY2x1ZGVbMzRdOwotCi12YXIgb2Zfc3RyaW5nX3Ug
PSBpbmNsdWRlWzM1XTsKLQotdmFyIG9mX3N0cmluZyA9IGluY2x1ZGVbMzZdOwotCi12YXIgdG9f
c3RyaW5nX3MgPSBpbmNsdWRlWzM3XTsKLQotdmFyIHRvX3N0cmluZ191ID0gaW5jbHVkZVszOF07
Ci0KLWV4cG9ydHMub2ZfYml0cyAgICAgPSBvZl9iaXRzOwotZXhwb3J0cy50b19iaXRzICAgICA9
IHRvX2JpdHM7Ci1leHBvcnRzLnplcm8gICAgICAgID0gemVybzsKLWV4cG9ydHMuYWRkICAgICAg
ICAgPSBhZGQ7Ci1leHBvcnRzLnN1YiAgICAgICAgID0gc3ViOwotZXhwb3J0cy5tdWwgICAgICAg
ICA9IG11bDsKLWV4cG9ydHMuZGl2X3MgICAgICAgPSBkaXZfczsKLWV4cG9ydHMuZGl2X3UgICAg
ICAgPSBkaXZfdTsKLWV4cG9ydHMucmVtX3MgICAgICAgPSByZW1fczsKLWV4cG9ydHMucmVtX3Ug
ICAgICAgPSByZW1fdTsKLWV4cG9ydHMuYW5kXyAgICAgICAgPSBhbmRfOwotZXhwb3J0cy5vcl8g
ICAgICAgICA9IG9yXzsKLWV4cG9ydHMueG9yICAgICAgICAgPSB4b3I7Ci1leHBvcnRzLnNobCAg
ICAgICAgID0gc2hsOwotZXhwb3J0cy5zaHJfcyAgICAgICA9IHNocl9zOwotZXhwb3J0cy5zaHJf
dSAgICAgICA9IHNocl91OwotZXhwb3J0cy5yb3RsICAgICAgICA9IHJvdGw7Ci1leHBvcnRzLnJv
dHIgICAgICAgID0gcm90cjsKLWV4cG9ydHMuY2x6ICAgICAgICAgPSBjbHo7Ci1leHBvcnRzLmN0
eiAgICAgICAgID0gY3R6OwotZXhwb3J0cy5wb3BjbnQgICAgICA9IHBvcGNudDsKLWV4cG9ydHMu
ZXF6ICAgICAgICAgPSBlcXo7Ci1leHBvcnRzLmVxICAgICAgICAgID0gZXE7Ci1leHBvcnRzLm5l
ICAgICAgICAgID0gbmU7Ci1leHBvcnRzLmx0X3MgICAgICAgID0gbHRfczsKLWV4cG9ydHMubHRf
dSAgICAgICAgPSBsdF91OwotZXhwb3J0cy5sZV9zICAgICAgICA9IGxlX3M7Ci1leHBvcnRzLmxl
X3UgICAgICAgID0gbGVfdTsKLWV4cG9ydHMuZ3RfcyAgICAgICAgPSBndF9zOwotZXhwb3J0cy5n
dF91ICAgICAgICA9IGd0X3U7Ci1leHBvcnRzLmdlX3MgICAgICAgID0gZ2VfczsKLWV4cG9ydHMu
Z2VfdSAgICAgICAgPSBnZV91OwotZXhwb3J0cy5vZl9pbnRfcyAgICA9IG9mX2ludF9zOwotZXhw
b3J0cy5vZl9pbnRfdSAgICA9IG9mX2ludF91OwotZXhwb3J0cy5vZl9zdHJpbmdfcyA9IG9mX3N0
cmluZ19zOwotZXhwb3J0cy5vZl9zdHJpbmdfdSA9IG9mX3N0cmluZ191OwotZXhwb3J0cy5vZl9z
dHJpbmcgICA9IG9mX3N0cmluZzsKLWV4cG9ydHMudG9fc3RyaW5nX3MgPSB0b19zdHJpbmdfczsK
LWV4cG9ydHMudG9fc3RyaW5nX3UgPSB0b19zdHJpbmdfdTsKLS8qIGluY2x1ZGUgTm90IGEgcHVy
ZSBtb2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBpNjQuanMgLy8vLy8vLy8KLSAgICByZXR1cm4g
ZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsnaW50MzInXSA9IGZ1bmN0aW9uKCkgewot
ICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBpbnQzMi5qcyAvLy8vLy8v
LwotJ3VzZSBzdHJpY3QnOwotCi12YXIgQ2FtbF9vYmogICAgPSByZXF1aXJlKCIuL2NhbWxfb2Jq
Iik7Ci12YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCIuL2NhbWxfZm9ybWF0Iik7Ci0KLWZ1bmN0
aW9uIHN1Y2MobikgewotICByZXR1cm4gbiArIDEgfCAwOwotfQotCi1mdW5jdGlvbiBwcmVkKG4p
IHsKLSAgcmV0dXJuIG4gLSAxIHwgMDsKLX0KLQotZnVuY3Rpb24gYWJzKG4pIHsKLSAgaWYgKG4g
Pj0gMCkgewotICAgIHJldHVybiBuOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAtbiB8IDA7
Ci0gIH0KLX0KLQotZnVuY3Rpb24gbG9nbm90KG4pIHsKLSAgcmV0dXJuIG4gXiAtMTsKLX0KLQot
ZnVuY3Rpb24gdG9fc3RyaW5nKG4pIHsKLSAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfaW50MzJf
Zm9ybWF0KCIlZCIsIG4pOwotfQotCi12YXIgY29tcGFyZSA9IENhbWxfb2JqLmNhbWxfaW50MzJf
Y29tcGFyZTsKLQotdmFyIHplcm8gPSAwOwotCi12YXIgb25lID0gMTsKLQotdmFyIG1pbnVzX29u
ZSA9IC0xOwotCi12YXIgbWF4X2ludCA9IDIxNDc0ODM2NDc7Ci0KLXZhciBtaW5faW50ID0gLTIx
NDc0ODM2NDg7Ci0KLWV4cG9ydHMuemVybyAgICAgID0gemVybzsKLWV4cG9ydHMub25lICAgICAg
ID0gb25lOwotZXhwb3J0cy5taW51c19vbmUgPSBtaW51c19vbmU7Ci1leHBvcnRzLnN1Y2MgICAg
ICA9IHN1Y2M7Ci1leHBvcnRzLnByZWQgICAgICA9IHByZWQ7Ci1leHBvcnRzLmFicyAgICAgICA9
IGFiczsKLWV4cG9ydHMubWF4X2ludCAgID0gbWF4X2ludDsKLWV4cG9ydHMubWluX2ludCAgID0g
bWluX2ludDsKLWV4cG9ydHMubG9nbm90ICAgID0gbG9nbm90OwotZXhwb3J0cy50b19zdHJpbmcg
PSB0b19zdHJpbmc7Ci1leHBvcnRzLmNvbXBhcmUgICA9IGNvbXBhcmU7Ci0vKiBObyBzaWRlIGVm
ZmVjdCAqLwotLy8vLy8vLy8gZW5kIG9mIGludDMyLmpzIC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4
cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ2ludDY0J10gPSBmdW5jdGlvbigpIHsKLSAg
ICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgaW50NjQuanMgLy8vLy8vLy8K
LSd1c2Ugc3RyaWN0JzsKLQotdmFyIENhbWxfaW50NjQgID0gcmVxdWlyZSgiLi9jYW1sX2ludDY0
Iik7Ci12YXIgQ2FtbF9mb3JtYXQgPSByZXF1aXJlKCIuL2NhbWxfZm9ybWF0Iik7Ci0KLWZ1bmN0
aW9uIHN1Y2MobikgewotICByZXR1cm4gQ2FtbF9pbnQ2NC5hZGQobiwgLyogaW50NjQgKi9bCi0g
ICAgICAgICAgICAgIC8qIGhpICovMCwKLSAgICAgICAgICAgICAgLyogbG8gKi8xCi0gICAgICAg
ICAgICBdKTsKLX0KLQotZnVuY3Rpb24gcHJlZChuKSB7Ci0gIHJldHVybiBDYW1sX2ludDY0LnN1
YihuLCAvKiBpbnQ2NCAqL1sKLSAgICAgICAgICAgICAgLyogaGkgKi8wLAotICAgICAgICAgICAg
ICAvKiBsbyAqLzEKLSAgICAgICAgICAgIF0pOwotfQotCi1mdW5jdGlvbiBhYnMobikgewotICBp
ZiAoQ2FtbF9pbnQ2NC5nZShuLCAvKiBpbnQ2NCAqL1sKLSAgICAgICAgICAvKiBoaSAqLzAsCi0g
ICAgICAgICAgLyogbG8gKi8wCi0gICAgICAgIF0pKSB7Ci0gICAgcmV0dXJuIG47Ci0gIH0KLSAg
ZWxzZSB7Ci0gICAgcmV0dXJuIENhbWxfaW50NjQubmVnKG4pOwotICB9Ci19Ci0KLWZ1bmN0aW9u
IGxvZ25vdChuKSB7Ci0gIHJldHVybiAvKiBpbnQ2NCAqL1sKLSAgICAgICAgICAvKiBoaSAqL25b
MF0gXiAvKiBoaSAqLy0xLAotICAgICAgICAgIC8qIGxvICovKChuWzFdIF4gLyogbG8gKi80Mjk0
OTY3Mjk1KSA+Pj4gMCkKLSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24gdG9fc3RyaW5nKG4pIHsK
LSAgcmV0dXJuIENhbWxfZm9ybWF0LmNhbWxfaW50NjRfZm9ybWF0KCIlZCIsIG4pOwotfQotCi12
YXIgY29tcGFyZSA9IENhbWxfaW50NjQuY29tcGFyZTsKLQotdmFyIHplcm8gPSAvKiBpbnQ2NCAq
L1sKLSAgLyogaGkgKi8wLAotICAvKiBsbyAqLzAKLV07Ci0KLXZhciBvbmUgPSAvKiBpbnQ2NCAq
L1sKLSAgLyogaGkgKi8wLAotICAvKiBsbyAqLzEKLV07Ci0KLXZhciBtaW51c19vbmUgPSAvKiBp
bnQ2NCAqL1sKLSAgLyogaGkgKi8tMSwKLSAgLyogbG8gKi80Mjk0OTY3Mjk1Ci1dOwotCi12YXIg
bWF4X2ludCA9IC8qIGludDY0ICovWwotICAvKiBoaSAqLzIxNDc0ODM2NDcsCi0gIC8qIGxvICov
NDI5NDk2NzI5NQotXTsKLQotdmFyIG1pbl9pbnQgPSAvKiBpbnQ2NCAqL1sKLSAgLyogaGkgKi8t
MjE0NzQ4MzY0OCwKLSAgLyogbG8gKi8wCi1dOwotCi1leHBvcnRzLnplcm8gICAgICA9IHplcm87
Ci1leHBvcnRzLm9uZSAgICAgICA9IG9uZTsKLWV4cG9ydHMubWludXNfb25lID0gbWludXNfb25l
OwotZXhwb3J0cy5zdWNjICAgICAgPSBzdWNjOwotZXhwb3J0cy5wcmVkICAgICAgPSBwcmVkOwot
ZXhwb3J0cy5hYnMgICAgICAgPSBhYnM7Ci1leHBvcnRzLm1heF9pbnQgICA9IG1heF9pbnQ7Ci1l
eHBvcnRzLm1pbl9pbnQgICA9IG1pbl9pbnQ7Ci1leHBvcnRzLmxvZ25vdCAgICA9IGxvZ25vdDsK
LWV4cG9ydHMudG9fc3RyaW5nID0gdG9fc3RyaW5nOwotZXhwb3J0cy5jb21wYXJlICAgPSBjb21w
YXJlOwotLyogTm8gc2lkZSBlZmZlY3QgKi8KLS8vLy8vLy8vIGVuZCBvZiBpbnQ2NC5qcyAvLy8v
Ly8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydpbnQnXSA9
IGZ1bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBp
bnQuanMgLy8vLy8vLy8KLS8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQu
MyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQotJ3VzZSBzdHJpY3QnOwotCi12YXIgQ3VycnkgICAg
ICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jdXJyeSIpOwotdmFyIENhbWxfb2Jq
ICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9vYmoiKTsKLXZhciBQZXJ2
YXNpdmVzICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3BlcnZhc2l2ZXMiKTsKLXZh
ciBDYW1sX3N0cmluZyAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfc3RyaW5n
Iik7Ci12YXIgTnVtZXJpY19lcnJvciA9IHJlcXVpcmUoIi4vbnVtZXJpY19lcnJvciIpOwotCi1m
dW5jdGlvbiBNYWtlKFJlcCkgewotICB2YXIgY21wX3UgPSBmdW5jdGlvbiAoeCwgb3AsIHkpIHsK
LSAgICByZXR1cm4gQ3VycnkuXzIob3AsIEN1cnJ5Ll8yKFJlcFsvKiBhZGQgKi82XSwgeCwgUmVw
Wy8qIG1pbl9pbnQgKi80XSksIEN1cnJ5Ll8yKFJlcFsvKiBhZGQgKi82XSwgeSwgUmVwWy8qIG1p
bl9pbnQgKi80XSkpOwotICB9OwotICB2YXIgZGl2cmVtX3UgPSBmdW5jdGlvbiAobiwgZCkgewot
ICAgIGlmIChDYW1sX29iai5jYW1sX2VxdWFsKGQsIFJlcFsvKiB6ZXJvICovMF0pKSB7Ci0gICAg
ICB0aHJvdyBOdW1lcmljX2Vycm9yLkludGVnZXJEaXZpZGVCeVplcm87Ci0gICAgfQotICAgIGVs
c2UgewotICAgICAgdmFyIHQgPSBDdXJyeS5fMihSZXBbLyogc2hpZnRfcmlnaHQgKi8xNl0sIGQs
IFJlcFsvKiBiaXR3aWR0aCAqLzIxXSAtIDEgfCAwKTsKLSAgICAgIHZhciBuJHByaW1lID0gQ3Vy
cnkuXzIoUmVwWy8qIGxvZ2FuZCAqLzExXSwgbiwgQ3VycnkuXzEoUmVwWy8qIGxvZ25vdCAqLzEy
XSwgdCkpOwotICAgICAgdmFyIHEgPSBDdXJyeS5fMihSZXBbLyogc2hpZnRfbGVmdCAqLzE1XSwg
Q3VycnkuXzIoUmVwWy8qIGRpdiAqLzldLCBDdXJyeS5fMihSZXBbLyogc2hpZnRfcmlnaHRfbG9n
aWNhbCAqLzE3XSwgbiRwcmltZSwgMSksIGQpLCAxKTsKLSAgICAgIHZhciByID0gQ3VycnkuXzIo
UmVwWy8qIHN1YiAqLzddLCBuLCBDdXJyeS5fMihSZXBbLyogbXVsICovOF0sIHEsIGQpKTsKLSAg
ICAgIGlmIChjbXBfdShyLCBDYW1sX29iai5jYW1sX2xlc3N0aGFuLCBkKSkgewotICAgICAgICBy
ZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgICAgcSwKLSAgICAgICAgICAgICAgICBy
Ci0gICAgICAgICAgICAgIF07Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJu
IC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAgIEN1cnJ5Ll8yKFJlcFsvKiBhZGQgKi82XSwg
cSwgUmVwWy8qIG9uZSAqLzFdKSwKLSAgICAgICAgICAgICAgICBDdXJyeS5fMihSZXBbLyogc3Vi
ICovN10sIHIsIGQpCi0gICAgICAgICAgICAgIF07Ci0gICAgICB9Ci0gICAgfQotICB9OwotICB2
YXIgb2ZfYml0cyA9IGZ1bmN0aW9uICh4KSB7Ci0gICAgcmV0dXJuIHg7Ci0gIH07Ci0gIHZhciB0
b19iaXRzID0gZnVuY3Rpb24gKHgpIHsKLSAgICByZXR1cm4geDsKLSAgfTsKLSAgdmFyIHplcm8g
PSBSZXBbLyogemVybyAqLzBdOwotICB2YXIgb25lID0gUmVwWy8qIG9uZSAqLzFdOwotICB2YXIg
dGVuID0gQ3VycnkuXzEoUmVwWy8qIG9mX2ludCAqLzE4XSwgMTApOwotICB2YXIgYWRkID0gUmVw
Wy8qIGFkZCAqLzZdOwotICB2YXIgc3ViID0gUmVwWy8qIHN1YiAqLzddOwotICB2YXIgbXVsID0g
UmVwWy8qIG11bCAqLzhdOwotICB2YXIgZGl2X3MgPSBmdW5jdGlvbiAoeCwgeSkgewotICAgIGlm
IChDYW1sX29iai5jYW1sX2VxdWFsKHksIFJlcFsvKiB6ZXJvICovMF0pKSB7Ci0gICAgICB0aHJv
dyBOdW1lcmljX2Vycm9yLkludGVnZXJEaXZpZGVCeVplcm87Ci0gICAgfQotICAgIGVsc2UgaWYg
KENhbWxfb2JqLmNhbWxfZXF1YWwoeCwgUmVwWy8qIG1pbl9pbnQgKi80XSkgJiYgQ2FtbF9vYmou
Y2FtbF9lcXVhbCh5LCBSZXBbLyogbWludXNfb25lICovMl0pKSB7Ci0gICAgICB0aHJvdyBOdW1l
cmljX2Vycm9yLkludGVnZXJPdmVyZmxvdzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1
cm4gQ3VycnkuXzIoUmVwWy8qIGRpdiAqLzldLCB4LCB5KTsKLSAgICB9Ci0gIH07Ci0gIHZhciBk
aXZfdSA9IGZ1bmN0aW9uICh4LCB5KSB7Ci0gICAgcmV0dXJuIGRpdnJlbV91KHgsIHkpWzBdOwot
ICB9OwotICB2YXIgcmVtX3MgPSBmdW5jdGlvbiAoeCwgeSkgewotICAgIGlmIChDYW1sX29iai5j
YW1sX2VxdWFsKHksIFJlcFsvKiB6ZXJvICovMF0pKSB7Ci0gICAgICB0aHJvdyBOdW1lcmljX2Vy
cm9yLkludGVnZXJEaXZpZGVCeVplcm87Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJu
IEN1cnJ5Ll8yKFJlcFsvKiByZW0gKi8xMF0sIHgsIHkpOwotICAgIH0KLSAgfTsKLSAgdmFyIHJl
bV91ID0gZnVuY3Rpb24gKHgsIHkpIHsKLSAgICByZXR1cm4gZGl2cmVtX3UoeCwgeSlbMV07Ci0g
IH07Ci0gIHZhciBhbmRfID0gUmVwWy8qIGxvZ2FuZCAqLzExXTsKLSAgdmFyIG9yXyA9IFJlcFsv
KiBsb2dvciAqLzEzXTsKLSAgdmFyIHhvciA9IFJlcFsvKiBsb2d4b3IgKi8xNF07Ci0gIHZhciBz
aGlmdCA9IGZ1bmN0aW9uIChmLCB4LCB5KSB7Ci0gICAgcmV0dXJuIEN1cnJ5Ll8yKGYsIHgsIEN1
cnJ5Ll8xKFJlcFsvKiB0b19pbnQgKi8xOV0sIEN1cnJ5Ll8yKFJlcFsvKiBsb2dhbmQgKi8xMV0s
IHksIEN1cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIFJlcFsvKiBiaXR3aWR0aCAqLzIxXSAt
IDEgfCAwKSkpKTsKLSAgfTsKLSAgdmFyIHNobCA9IGZ1bmN0aW9uICh4LCB5KSB7Ci0gICAgcmV0
dXJuIHNoaWZ0KFJlcFsvKiBzaGlmdF9sZWZ0ICovMTVdLCB4LCB5KTsKLSAgfTsKLSAgdmFyIHNo
cl9zID0gZnVuY3Rpb24gKHgsIHkpIHsKLSAgICByZXR1cm4gc2hpZnQoUmVwWy8qIHNoaWZ0X3Jp
Z2h0ICovMTZdLCB4LCB5KTsKLSAgfTsKLSAgdmFyIHNocl91ID0gZnVuY3Rpb24gKHgsIHkpIHsK
LSAgICByZXR1cm4gc2hpZnQoUmVwWy8qIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKi8xN10sIHgsIHkp
OwotICB9OwotICB2YXIgY2xhbXBfcm90YXRlX2NvdW50ID0gZnVuY3Rpb24gKG4pIHsKLSAgICBy
ZXR1cm4gQ3VycnkuXzEoUmVwWy8qIHRvX2ludCAqLzE5XSwgQ3VycnkuXzIoUmVwWy8qIGxvZ2Fu
ZCAqLzExXSwgbiwgQ3VycnkuXzEoUmVwWy8qIG9mX2ludCAqLzE4XSwgUmVwWy8qIGJpdHdpZHRo
ICovMjFdIC0gMSB8IDApKSk7Ci0gIH07Ci0gIHZhciByb3RsID0gZnVuY3Rpb24gKHgsIHkpIHsK
LSAgICB2YXIgbiA9IGNsYW1wX3JvdGF0ZV9jb3VudCh5KTsKLSAgICByZXR1cm4gQ3VycnkuXzIo
b3JfLCBDdXJyeS5fMihSZXBbLyogc2hpZnRfbGVmdCAqLzE1XSwgeCwgbiksIEN1cnJ5Ll8yKFJl
cFsvKiBzaGlmdF9yaWdodF9sb2dpY2FsICovMTddLCB4LCBSZXBbLyogYml0d2lkdGggKi8yMV0g
LSBuIHwgMCkpOwotICB9OwotICB2YXIgcm90ciA9IGZ1bmN0aW9uICh4LCB5KSB7Ci0gICAgdmFy
IG4gPSBjbGFtcF9yb3RhdGVfY291bnQoeSk7Ci0gICAgcmV0dXJuIEN1cnJ5Ll8yKG9yXywgQ3Vy
cnkuXzIoUmVwWy8qIHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgKi8xN10sIHgsIG4pLCBDdXJyeS5fMihS
ZXBbLyogc2hpZnRfbGVmdCAqLzE1XSwgeCwgUmVwWy8qIGJpdHdpZHRoICovMjFdIC0gbiB8IDAp
KTsKLSAgfTsKLSAgdmFyIGNseiA9IGZ1bmN0aW9uICh4KSB7Ci0gICAgdmFyIGxvb3AgPSBmdW5j
dGlvbiAoX2FjYywgX24pIHsKLSAgICAgIHdoaWxlKHRydWUpIHsKLSAgICAgICAgdmFyIG4gPSBf
bjsKLSAgICAgICAgdmFyIGFjYyA9IF9hY2M7Ci0gICAgICAgIGlmIChDYW1sX29iai5jYW1sX2Vx
dWFsKG4sIFJlcFsvKiB6ZXJvICovMF0pKSB7Ci0gICAgICAgICAgcmV0dXJuIFJlcFsvKiBiaXR3
aWR0aCAqLzIxXTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChDYW1sX29iai5jYW1sX2Vx
dWFsKEN1cnJ5Ll8yKGFuZF8sIG4sIEN1cnJ5Ll8yKFJlcFsvKiBzaGlmdF9sZWZ0ICovMTVdLCBS
ZXBbLyogb25lICovMV0sIFJlcFsvKiBiaXR3aWR0aCAqLzIxXSAtIDEgfCAwKSksIFJlcFsvKiB6
ZXJvICovMF0pKSB7Ci0gICAgICAgICAgX24gPSBDdXJyeS5fMihSZXBbLyogc2hpZnRfbGVmdCAq
LzE1XSwgbiwgMSk7Ci0gICAgICAgICAgX2FjYyA9IDEgKyBhY2MgfCAwOwotICAgICAgICAgIGNv
bnRpbnVlIDsKLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICByZXR1cm4gYWNjOwotICAgICAgICB9Ci0gICAgICB9OwotICAgIH07Ci0gICAgcmV0dXJuIEN1
cnJ5Ll8xKFJlcFsvKiBvZl9pbnQgKi8xOF0sIGxvb3AoMCwgeCkpOwotICB9OwotICB2YXIgY3R6
ID0gZnVuY3Rpb24gKHgpIHsKLSAgICB2YXIgbG9vcCA9IGZ1bmN0aW9uIChfYWNjLCBfbikgewot
ICAgICAgd2hpbGUodHJ1ZSkgewotICAgICAgICB2YXIgbiA9IF9uOwotICAgICAgICB2YXIgYWNj
ID0gX2FjYzsKLSAgICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwobiwgUmVwWy8qIHplcm8g
Ki8wXSkpIHsKLSAgICAgICAgICByZXR1cm4gUmVwWy8qIGJpdHdpZHRoICovMjFdOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKENhbWxfb2JqLmNhbWxfZXF1YWwoQ3VycnkuXzIoYW5kXywg
biwgUmVwWy8qIG9uZSAqLzFdKSwgUmVwWy8qIG9uZSAqLzFdKSkgewotICAgICAgICAgIHJldHVy
biBhY2M7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgX24gPSBDdXJyeS5f
MihSZXBbLyogc2hpZnRfcmlnaHRfbG9naWNhbCAqLzE3XSwgbiwgMSk7Ci0gICAgICAgICAgX2Fj
YyA9IDEgKyBhY2MgfCAwOwotICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAKLSAgICAg
ICAgfQotICAgICAgfTsKLSAgICB9OwotICAgIHJldHVybiBDdXJyeS5fMShSZXBbLyogb2ZfaW50
ICovMThdLCBsb29wKDAsIHgpKTsKLSAgfTsKLSAgdmFyIHBvcGNudCA9IGZ1bmN0aW9uICh4KSB7
Ci0gICAgdmFyIGxvb3AgPSBmdW5jdGlvbiAoX2FjYywgX2ksIF9uKSB7Ci0gICAgICB3aGlsZSh0
cnVlKSB7Ci0gICAgICAgIHZhciBuID0gX247Ci0gICAgICAgIHZhciBpID0gX2k7Ci0gICAgICAg
IHZhciBhY2MgPSBfYWNjOwotICAgICAgICBpZiAoQ2FtbF9vYmouY2FtbF9lcXVhbChuLCBSZXBb
LyogemVybyAqLzBdKSkgewotICAgICAgICAgIHJldHVybiBhY2M7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgdmFyIGFjYyRwcmltZSA9IENhbWxfb2JqLmNhbWxfZXF1YWwo
Q3VycnkuXzIoYW5kXywgbiwgUmVwWy8qIG9uZSAqLzFdKSwgUmVwWy8qIG9uZSAqLzFdKSA/IGFj
YyArIDEgfCAwIDogYWNjOwotICAgICAgICAgIF9uID0gQ3VycnkuXzIoUmVwWy8qIHNoaWZ0X3Jp
Z2h0X2xvZ2ljYWwgKi8xN10sIG4sIDEpOwotICAgICAgICAgIF9pID0gaSAtIDEgfCAwOwotICAg
ICAgICAgIF9hY2MgPSBhY2MkcHJpbWU7Ci0gICAgICAgICAgY29udGludWUgOwotICAgICAgICAg
IAotICAgICAgICB9Ci0gICAgICB9OwotICAgIH07Ci0gICAgcmV0dXJuIEN1cnJ5Ll8xKFJlcFsv
KiBvZl9pbnQgKi8xOF0sIGxvb3AoMCwgUmVwWy8qIGJpdHdpZHRoICovMjFdLCB4KSk7Ci0gIH07
Ci0gIHZhciBlcXogPSBmdW5jdGlvbiAoeCkgewotICAgIHJldHVybiBDYW1sX29iai5jYW1sX2Vx
dWFsKHgsIFJlcFsvKiB6ZXJvICovMF0pOwotICB9OwotICB2YXIgZXEgPSBDYW1sX29iai5jYW1s
X2VxdWFsOwotICB2YXIgbmUgPSBDYW1sX29iai5jYW1sX25vdGVxdWFsOwotICB2YXIgbHRfcyA9
IENhbWxfb2JqLmNhbWxfbGVzc3RoYW47Ci0gIHZhciBsdF91ID0gZnVuY3Rpb24gKHgsIHkpIHsK
LSAgICByZXR1cm4gY21wX3UoeCwgQ2FtbF9vYmouY2FtbF9sZXNzdGhhbiwgeSk7Ci0gIH07Ci0g
IHZhciBsZV9zID0gQ2FtbF9vYmouY2FtbF9sZXNzZXF1YWw7Ci0gIHZhciBsZV91ID0gZnVuY3Rp
b24gKHgsIHkpIHsKLSAgICByZXR1cm4gY21wX3UoeCwgQ2FtbF9vYmouY2FtbF9sZXNzZXF1YWws
IHkpOwotICB9OwotICB2YXIgZ3RfcyA9IENhbWxfb2JqLmNhbWxfZ3JlYXRlcnRoYW47Ci0gIHZh
ciBndF91ID0gZnVuY3Rpb24gKHgsIHkpIHsKLSAgICByZXR1cm4gY21wX3UoeCwgQ2FtbF9vYmou
Y2FtbF9ncmVhdGVydGhhbiwgeSk7Ci0gIH07Ci0gIHZhciBnZV9zID0gQ2FtbF9vYmouY2FtbF9n
cmVhdGVyZXF1YWw7Ci0gIHZhciBnZV91ID0gZnVuY3Rpb24gKHgsIHkpIHsKLSAgICByZXR1cm4g
Y21wX3UoeCwgQ2FtbF9vYmouY2FtbF9ncmVhdGVyZXF1YWwsIHkpOwotICB9OwotICB2YXIgb2Zf
aW50X3MgPSBSZXBbLyogb2ZfaW50ICovMThdOwotICB2YXIgb2ZfaW50X3UgPSBmdW5jdGlvbiAo
aSkgewotICAgIHJldHVybiBDdXJyeS5fMihhbmRfLCBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICov
MThdLCBpKSwgQ3VycnkuXzIob3JfLCBzaGwoQ3VycnkuXzEoUmVwWy8qIG9mX2ludCAqLzE4XSwg
UGVydmFzaXZlcy5tYXhfaW50KSwgb25lKSwgb25lKSk7Ci0gIH07Ci0gIHZhciB0b19zdHJpbmdf
cyA9IFJlcFsvKiB0b19zdHJpbmcgKi8yMF07Ci0gIHZhciB0b19zdHJpbmdfdSA9IGZ1bmN0aW9u
IChpKSB7Ci0gICAgaWYgKENhbWxfb2JqLmNhbWxfZ3JlYXRlcmVxdWFsKGksIFJlcFsvKiB6ZXJv
ICovMF0pKSB7Ci0gICAgICByZXR1cm4gQ3VycnkuXzEodG9fc3RyaW5nX3MsIGkpOwotICAgIH0K
LSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBDdXJyeS5fMSh0b19zdHJpbmdfcywgZGl2X3UoaSwg
dGVuKSkgKyBDdXJyeS5fMSh0b19zdHJpbmdfcywgcmVtX3UoaSwgdGVuKSk7Ci0gICAgfQotICB9
OwotICB2YXIgJCRyZXF1aXJlID0gZnVuY3Rpb24gKGIpIHsKLSAgICBpZiAoYikgewotICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFp
bHdpdGgoIm9mX3N0cmluZyIpOwotICAgIH0KLSAgfTsKLSAgdmFyIGRlY19kaWdpdCA9IGZ1bmN0
aW9uIChjKSB7Ci0gICAgaWYgKGMgPiA1NyB8fCBjIDwgNDgpIHsKLSAgICAgIHJldHVybiBQZXJ2
YXNpdmVzLmZhaWx3aXRoKCJvZl9zdHJpbmciKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBy
ZXR1cm4gYyAtIC8qICIwIiAqLzQ4IHwgMDsKLSAgICB9Ci0gIH07Ci0gIHZhciBoZXhfZGlnaXQg
PSBmdW5jdGlvbiAoYykgewotICAgIGlmIChjID49IDY1KSB7Ci0gICAgICBpZiAoYyA+PSA5Nykg
ewotICAgICAgICBpZiAoYyA+PSAxMDMpIHsKLSAgICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5m
YWlsd2l0aCgib2Zfc3RyaW5nIik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgcmV0dXJuICgxMCArIGMgfCAwKSAtIC8qICJhIiAqLzk3IHwgMDsKLSAgICAgICAgfQotICAg
ICAgfQotICAgICAgZWxzZSBpZiAoYyA+PSA3MSkgewotICAgICAgICByZXR1cm4gUGVydmFzaXZl
cy5mYWlsd2l0aCgib2Zfc3RyaW5nIik7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAg
cmV0dXJuICgxMCArIGMgfCAwKSAtIC8qICJBIiAqLzY1IHwgMDsKLSAgICAgIH0KLSAgICB9Ci0g
ICAgZWxzZSBpZiAoYyA+IDU3IHx8IGMgPCA0OCkgewotICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMu
ZmFpbHdpdGgoIm9mX3N0cmluZyIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBj
IC0gLyogIjAiICovNDggfCAwOwotICAgIH0KLSAgfTsKLSAgdmFyIG1hdGNoID0gZGl2cmVtX3Uo
UmVwWy8qIG1pbnVzX29uZSAqLzJdLCB0ZW4pOwotICB2YXIgbWF4X2xvd2VyID0gbWF0Y2hbMV07
Ci0gIHZhciBtYXhfdXBwZXIgPSBtYXRjaFswXTsKLSAgdmFyIG9mX3N0cmluZyA9IGZ1bmN0aW9u
IChzKSB7Ci0gICAgdmFyIGxlbiA9IHMubGVuZ3RoOwotICAgIHZhciBwYXJzZV9pbnQgPSBmdW5j
dGlvbiAoaSkgewotICAgICAgJCRyZXF1aXJlKCsoKGxlbiAtIGkgfCAwKSA+IDApKTsKLSAgICAg
IGlmICgoaSArIDIgfCAwKSA8PSBsZW4gJiYgQ2FtbF9zdHJpbmcuZ2V0KHMsIGkpID09PSAvKiAi
MCIgKi80OCAmJiBDYW1sX3N0cmluZy5nZXQocywgaSArIDEgfCAwKSA9PT0gLyogIngiICovMTIw
KSB7Ci0gICAgICAgIHZhciBfaSA9IGkgKyAyIHwgMDsKLSAgICAgICAgdmFyIF9udW0gPSBSZXBb
LyogemVybyAqLzBdOwotICAgICAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICAgICAgdmFyIG51bSA9
IF9udW07Ci0gICAgICAgICAgdmFyIGkkMSA9IF9pOwotICAgICAgICAgIGlmIChpJDEgPT09IGxl
bikgewotICAgICAgICAgICAgcmV0dXJuIG51bTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICB2YXIgZGlnaXQgPSBDdXJyeS5fMShSZXBbLyogb2ZfaW50ICovMThd
LCBoZXhfZGlnaXQoQ2FtbF9zdHJpbmcuZ2V0KHMsIGkkMSkpKTsKLSAgICAgICAgICAgICQkcmVx
dWlyZShsZV91KG51bSwgc2hyX3UoUmVwWy8qIG1pbnVzX29uZSAqLzJdLCBDdXJyeS5fMShSZXBb
Lyogb2ZfaW50ICovMThdLCA0KSkpKTsKLSAgICAgICAgICAgIF9udW0gPSBDdXJyeS5fMihSZXBb
LyogbG9nb3IgKi8xM10sIEN1cnJ5Ll8yKFJlcFsvKiBzaGlmdF9sZWZ0ICovMTVdLCBudW0sIDQp
LCBkaWdpdCk7Ci0gICAgICAgICAgICBfaSA9IGkkMSArIDEgfCAwOwotICAgICAgICAgICAgY29u
dGludWUgOwotICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgfQot
ICAgICAgZWxzZSB7Ci0gICAgICAgIHZhciBfaSQxID0gaTsKLSAgICAgICAgdmFyIF9udW0kMSA9
IFJlcFsvKiB6ZXJvICovMF07Ci0gICAgICAgIHdoaWxlKHRydWUpIHsKLSAgICAgICAgICB2YXIg
bnVtJDEgPSBfbnVtJDE7Ci0gICAgICAgICAgdmFyIGkkMiA9IF9pJDE7Ci0gICAgICAgICAgaWYg
KGkkMiA9PT0gbGVuKSB7Ci0gICAgICAgICAgICByZXR1cm4gbnVtJDE7Ci0gICAgICAgICAgfQot
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIGRpZ2l0JDEgPSBDdXJyeS5fMShSZXBb
Lyogb2ZfaW50ICovMThdLCBkZWNfZGlnaXQoQ2FtbF9zdHJpbmcuZ2V0KHMsIGkkMikpKTsKLSAg
ICAgICAgICAgICQkcmVxdWlyZShsdF91KG51bSQxLCBtYXhfdXBwZXIpIHx8IENhbWxfb2JqLmNh
bWxfZXF1YWwobnVtJDEsIG1heF91cHBlcikgJiYgbGVfdShkaWdpdCQxLCBtYXhfbG93ZXIpKTsK
LSAgICAgICAgICAgIF9udW0kMSA9IEN1cnJ5Ll8yKFJlcFsvKiBhZGQgKi82XSwgQ3VycnkuXzIo
UmVwWy8qIG11bCAqLzhdLCBudW0kMSwgdGVuKSwgZGlnaXQkMSk7Ci0gICAgICAgICAgICBfaSQx
ID0gaSQyICsgMSB8IDA7Ci0gICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICB9Ci0gICAgfTsKLSAgICAkJHJlcXVpcmUoKyhs
ZW4gPiAwKSk7Ci0gICAgdmFyIG1hdGNoID0gQ2FtbF9zdHJpbmcuZ2V0KHMsIDApOwotICAgIHZh
ciBzd2l0Y2hlciA9IG1hdGNoIC0gNDMgfCAwOwotICAgIGlmIChzd2l0Y2hlciA+IDIgfHwgc3dp
dGNoZXIgPCAwKSB7Ci0gICAgICByZXR1cm4gcGFyc2VfaW50KDApOwotICAgIH0KLSAgICBlbHNl
IHsKLSAgICAgIHN3aXRjaCAoc3dpdGNoZXIpIHsKLSAgICAgICAgY2FzZSAwIDogCi0gICAgICAg
ICAgICByZXR1cm4gcGFyc2VfaW50KDEpOwotICAgICAgICBjYXNlIDEgOiAKLSAgICAgICAgICAg
IHJldHVybiBwYXJzZV9pbnQoMCk7Ci0gICAgICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgdmFy
IG4gPSBwYXJzZV9pbnQoMSk7Ci0gICAgICAgICAgICAkJHJlcXVpcmUoQ2FtbF9vYmouY2FtbF9n
cmVhdGVyZXF1YWwoQ3VycnkuXzIoUmVwWy8qIHN1YiAqLzddLCBuLCBSZXBbLyogb25lICovMV0p
LCBSZXBbLyogbWludXNfb25lICovMl0pKTsKLSAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShS
ZXBbLyogbmVnICovNV0sIG4pOwotICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gIH07Ci0gIHZh
ciBvZl9zdHJpbmdfcyA9IGZ1bmN0aW9uIChzKSB7Ci0gICAgdmFyIG4gPSBvZl9zdHJpbmcocyk7
Ci0gICAgJCRyZXF1aXJlKCsoQ2FtbF9zdHJpbmcuZ2V0KHMsIDApID09PSAvKiAiLSIgKi80NSkg
fHwgQ2FtbF9vYmouY2FtbF9ncmVhdGVyZXF1YWwobiwgUmVwWy8qIHplcm8gKi8wXSkpOwotICAg
IHJldHVybiBuOwotICB9OwotICB2YXIgb2Zfc3RyaW5nX3UgPSBmdW5jdGlvbiAocykgewotICAg
IHZhciBuID0gb2Zfc3RyaW5nKHMpOwotICAgICQkcmVxdWlyZSgrKENhbWxfc3RyaW5nLmdldChz
LCAwKSAhPT0gLyogIisiICovNDMgJiYgQ2FtbF9zdHJpbmcuZ2V0KHMsIDApICE9PSAvKiAiLSIg
Ki80NSkpOwotICAgIHJldHVybiBuOwotICB9OwotICByZXR1cm4gLyogbW9kdWxlICovWwotICAg
ICAgICAgIC8qIG9mX2JpdHMgKi9vZl9iaXRzLAotICAgICAgICAgIC8qIHRvX2JpdHMgKi90b19i
aXRzLAotICAgICAgICAgIC8qIHplcm8gKi96ZXJvLAotICAgICAgICAgIC8qIGFkZCAqL2FkZCwK
LSAgICAgICAgICAvKiBzdWIgKi9zdWIsCi0gICAgICAgICAgLyogbXVsICovbXVsLAotICAgICAg
ICAgIC8qIGRpdl9zICovZGl2X3MsCi0gICAgICAgICAgLyogZGl2X3UgKi9kaXZfdSwKLSAgICAg
ICAgICAvKiByZW1fcyAqL3JlbV9zLAotICAgICAgICAgIC8qIHJlbV91ICovcmVtX3UsCi0gICAg
ICAgICAgLyogYW5kXyAqL2FuZF8sCi0gICAgICAgICAgLyogb3JfICovb3JfLAotICAgICAgICAg
IC8qIHhvciAqL3hvciwKLSAgICAgICAgICAvKiBzaGwgKi9zaGwsCi0gICAgICAgICAgLyogc2hy
X3MgKi9zaHJfcywKLSAgICAgICAgICAvKiBzaHJfdSAqL3Nocl91LAotICAgICAgICAgIC8qIHJv
dGwgKi9yb3RsLAotICAgICAgICAgIC8qIHJvdHIgKi9yb3RyLAotICAgICAgICAgIC8qIGNseiAq
L2NseiwKLSAgICAgICAgICAvKiBjdHogKi9jdHosCi0gICAgICAgICAgLyogcG9wY250ICovcG9w
Y250LAotICAgICAgICAgIC8qIGVxeiAqL2VxeiwKLSAgICAgICAgICAvKiBlcSAqL2VxLAotICAg
ICAgICAgIC8qIG5lICovbmUsCi0gICAgICAgICAgLyogbHRfcyAqL2x0X3MsCi0gICAgICAgICAg
LyogbHRfdSAqL2x0X3UsCi0gICAgICAgICAgLyogbGVfcyAqL2xlX3MsCi0gICAgICAgICAgLyog
bGVfdSAqL2xlX3UsCi0gICAgICAgICAgLyogZ3RfcyAqL2d0X3MsCi0gICAgICAgICAgLyogZ3Rf
dSAqL2d0X3UsCi0gICAgICAgICAgLyogZ2VfcyAqL2dlX3MsCi0gICAgICAgICAgLyogZ2VfdSAq
L2dlX3UsCi0gICAgICAgICAgLyogb2ZfaW50X3MgKi9vZl9pbnRfcywKLSAgICAgICAgICAvKiBv
Zl9pbnRfdSAqL29mX2ludF91LAotICAgICAgICAgIC8qIG9mX3N0cmluZ19zICovb2Zfc3RyaW5n
X3MsCi0gICAgICAgICAgLyogb2Zfc3RyaW5nX3UgKi9vZl9zdHJpbmdfdSwKLSAgICAgICAgICAv
KiBvZl9zdHJpbmcgKi9vZl9zdHJpbmcsCi0gICAgICAgICAgLyogdG9fc3RyaW5nX3MgKi90b19z
dHJpbmdfcywKLSAgICAgICAgICAvKiB0b19zdHJpbmdfdSAqL3RvX3N0cmluZ191Ci0gICAgICAg
IF07Ci19Ci0KLWV4cG9ydHMuTWFrZSA9IE1ha2U7Ci0vKiBObyBzaWRlIGVmZmVjdCAqLwotLy8v
Ly8vLy8gZW5kIG9mIGludC5qcyAvLy8vLy8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9Owot
Ci0KLSAgX3JlZ2lzdHJ5WydsZXhlciddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMg
PSB7fTsKLS8vLy8vLy8vIHN0YXJ0IG9mIGxleGVyLmpzIC8vLy8vLy8vCi0vLyBHZW5lcmF0ZWQg
YnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKLSd1
c2Ugc3RyaWN0JzsKLQotdmFyIEYzMiAgICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9m
MzIiKTsKLXZhciBGNjQgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vZjY0Iik7Ci12
YXIgSTMyICAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2kzMiIpOwotdmFyIEk2NCAg
ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9pNjQiKTsKLXZhciBMaWIgICAgICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoIi4vbGliIik7Ci12YXIgQ2hhciAgICAgICAgICAgICAgICAg
ICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2hhciIpOwotdmFyIEJsb2NrICAgICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Ci12YXIg
Q3VycnkgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3Vy
cnkiKTsKLXZhciBCdWZmZXIgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3Jt
L2xpYi9qcy9idWZmZXIiKTsKLXZhciBMZXhpbmcgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUo
ImJzLXBsYXRmb3JtL2xpYi9qcy9sZXhpbmciKTsKLXZhciBTY3JpcHQgICAgICAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vc2NyaXB0Iik7Ci12YXIgU291cmNlICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCIuL3NvdXJjZSIpOwotdmFyICQkU3RyaW5nICAgICAgICAgICAgICAgID0gcmVxdWly
ZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwotdmFyIE9wZXJhdG9ycyAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9vcGVyYXRvcnMiKTsKLXZhciBDYW1sX2Zvcm1hdCAgICAgICAgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2Zvcm1hdCIpOwotdmFyIENhbWxf
c3RyaW5nICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfc3Ry
aW5nIik7Ci12YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKLQotZnVuY3Rpb24gY29udmVydF9w
b3MocG9zKSB7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAgICAgLyogZmlsZSAqL3Bv
c1svKiBwb3NfZm5hbWUgKi8wXSwKLSAgICAgICAgICAvKiBsaW5lICovcG9zWy8qIHBvc19sbnVt
ICovMV0sCi0gICAgICAgICAgLyogY29sdW1uICovcG9zWy8qIHBvc19jbnVtICovM10gLSBwb3Nb
LyogcG9zX2JvbCAqLzJdIHwgMAotICAgICAgICBdOwotfQotCi1mdW5jdGlvbiByZWdpb24obGV4
YnVmKSB7Ci0gIHZhciBsZWZ0ID0gY29udmVydF9wb3MoTGV4aW5nLmxleGVtZV9zdGFydF9wKGxl
eGJ1ZikpOwotICB2YXIgcmlnaHQgPSBjb252ZXJ0X3BvcyhMZXhpbmcubGV4ZW1lX2VuZF9wKGxl
eGJ1ZikpOwotICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgIC8qIGxlZnQgKi9sZWZ0
LAotICAgICAgICAgIC8qIHJpZ2h0ICovcmlnaHQKLSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24g
ZXJyb3IobGV4YnVmLCBtc2cpIHsKLSAgdGhyb3cgWwotICAgICAgICBTY3JpcHQuU3ludGF4LAot
ICAgICAgICByZWdpb24obGV4YnVmKSwKLSAgICAgICAgbXNnCi0gICAgICBdOwotfQotCi1mdW5j
dGlvbiBlcnJvcl9uZXN0KHN0YXJ0LCBsZXhidWYsIG1zZykgewotICBsZXhidWZbLyogbGV4X3N0
YXJ0X3AgKi8xMF0gPSBzdGFydDsKLSAgcmV0dXJuIGVycm9yKGxleGJ1ZiwgbXNnKTsKLX0KLQot
ZnVuY3Rpb24gdGV4dChzKSB7Ci0gIHZhciBiID0gQnVmZmVyLmNyZWF0ZShzLmxlbmd0aCk7Ci0g
IHZhciBpID0gMTsKLSAgd2hpbGUoaSA8IChzLmxlbmd0aCAtIDEgfCAwKSkgewotICAgIHZhciBj
OwotICAgIGlmIChDYW1sX3N0cmluZy5nZXQocywgaSkgIT09IC8qICJcXCIgKi85MikgewotICAg
ICAgYyA9IENhbWxfc3RyaW5nLmdldChzLCBpKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBp
ID0gaSArIDEgfCAwOwotICAgICAgdmFyIGQgPSBDYW1sX3N0cmluZy5nZXQocywgaSk7Ci0gICAg
ICB2YXIgZXhpdCA9IDA7Ci0gICAgICBpZiAoZCA+PSA5MikgewotICAgICAgICBpZiAoZCAhPT0g
MTEwKSB7Ci0gICAgICAgICAgaWYgKGQgIT09IDExNikgewotICAgICAgICAgICAgaWYgKGQgPj0g
OTMpIHsKLSAgICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgYyA9IC8qICJcXCIgKi85MjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjID0gLyogIlx0IiAq
Lzk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIGMg
PSAvKiAiXG4iICovMTA7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGQgIT09
IDM0KSB7Ci0gICAgICAgIGlmIChkICE9PSAzOSkgewotICAgICAgICAgIGV4aXQgPSAxOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIGMgPSAvKiAiJyIgKi8zOTsKLSAgICAg
ICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGMgPSAvKiAiXCIiICovMzQ7Ci0g
ICAgICB9Ci0gICAgICBpZiAoZXhpdCA9PT0gMSkgewotICAgICAgICBpID0gaSArIDEgfCAwOwot
ICAgICAgICBjID0gQ2hhci5jaHIoQ2FtbF9mb3JtYXQuY2FtbF9pbnRfb2Zfc3RyaW5nKCIweCIg
KyAoJCRTdHJpbmcubWFrZSgxLCBkKSArICQkU3RyaW5nLm1ha2UoMSwgQ2FtbF9zdHJpbmcuZ2V0
KHMsIGkpKSkpKTsKLSAgICAgIH0KLSAgICAgIAotICAgIH0KLSAgICBCdWZmZXIuYWRkX2NoYXIo
YiwgYyk7Ci0gICAgaSA9IGkgKyAxIHwgMDsKLSAgfTsKLSAgcmV0dXJuIEJ1ZmZlci5jb250ZW50
cyhiKTsKLX0KLQotZnVuY3Rpb24gdmFsdWVfdHlwZShwYXJhbSkgewotICBzd2l0Y2ggKHBhcmFt
KSB7Ci0gICAgY2FzZSAiZjMyIiA6IAotICAgICAgICByZXR1cm4gLyogRjMyVHlwZSAqLzI7Ci0g
ICAgY2FzZSAiZjY0IiA6IAotICAgICAgICByZXR1cm4gLyogRjY0VHlwZSAqLzM7Ci0gICAgY2Fz
ZSAiaTMyIiA6IAotICAgICAgICByZXR1cm4gLyogSTMyVHlwZSAqLzA7Ci0gICAgY2FzZSAiaTY0
IiA6IAotICAgICAgICByZXR1cm4gLyogSTY0VHlwZSAqLzE7Ci0gICAgZGVmYXVsdDoKLSAgICAg
IHRocm93IFsKLSAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWls
dXJlLAotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAotICAg
ICAgICAgICAgICA0NSwKLSAgICAgICAgICAgICAgOQotICAgICAgICAgICAgXQotICAgICAgICAg
IF07Ci0gIH0KLX0KLQotZnVuY3Rpb24gaW50b3AodCwgaTMyLCBpNjQpIHsKLSAgc3dpdGNoICh0
KSB7Ci0gICAgY2FzZSAiaTMyIiA6IAotICAgICAgICByZXR1cm4gaTMyOwotICAgIGNhc2UgImk2
NCIgOiAKLSAgICAgICAgcmV0dXJuIGk2NDsKLSAgICBkZWZhdWx0OgotICAgICAgdGhyb3cgWwot
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICJ0ZXh0L2xleGVyLm1sbCIsCi0gICAgICAgICAgICAg
IDUxLAotICAgICAgICAgICAgICA5Ci0gICAgICAgICAgICBdCi0gICAgICAgICAgXTsKLSAgfQot
fQotCi1mdW5jdGlvbiBmbG9hdG9wKHQsIGYzMiwgZjY0KSB7Ci0gIHN3aXRjaCAodCkgewotICAg
IGNhc2UgImYzMiIgOiAKLSAgICAgICAgcmV0dXJuIGYzMjsKLSAgICBjYXNlICJmNjQiIDogCi0g
ICAgICAgIHJldHVybiBmNjQ7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHRocm93IFsKLSAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAg
WwotICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAotICAgICAgICAgICAgICA1NywKLSAg
ICAgICAgICAgICAgOQotICAgICAgICAgICAgXQotICAgICAgICAgIF07Ci0gIH0KLX0KLQotZnVu
Y3Rpb24gbnVtb3AodCwgaTMyLCBpNjQsIGYzMiwgZjY0KSB7Ci0gIHN3aXRjaCAodCkgewotICAg
IGNhc2UgImYzMiIgOiAKLSAgICAgICAgcmV0dXJuIGYzMjsKLSAgICBjYXNlICJmNjQiIDogCi0g
ICAgICAgIHJldHVybiBmNjQ7Ci0gICAgY2FzZSAiaTMyIiA6IAotICAgICAgICByZXR1cm4gaTMy
OwotICAgIGNhc2UgImk2NCIgOiAKLSAgICAgICAgcmV0dXJuIGk2NDsKLSAgICBkZWZhdWx0Ogot
ICAgICAgdGhyb3cgWwotICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuYXNzZXJ0
X2ZhaWx1cmUsCi0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICJ0ZXh0L2xleGVyLm1sbCIs
Ci0gICAgICAgICAgICAgIDY1LAotICAgICAgICAgICAgICA5Ci0gICAgICAgICAgICBdCi0gICAg
ICAgICAgXTsKLSAgfQotfQotCi1mdW5jdGlvbiBtZW1zeihzeiwgbTgsIG0xNiwgbTMyKSB7Ci0g
IHN3aXRjaCAoc3opIHsKLSAgICBjYXNlICIxNiIgOiAKLSAgICAgICAgcmV0dXJuIG0xNjsKLSAg
ICBjYXNlICIzMiIgOiAKLSAgICAgICAgcmV0dXJuIG0zMjsKLSAgICBjYXNlICI4IiA6IAotICAg
ICAgICByZXR1cm4gbTg7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHRocm93IFsKLSAgICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAidGV4dC9sZXhlci5tbGwiLAotICAgICAgICAgICAgICA3MiwKLSAgICAg
ICAgICAgICAgOQotICAgICAgICAgICAgXQotICAgICAgICAgIF07Ci0gIH0KLX0KLQotZnVuY3Rp
b24gZXh0KGUsIHMsIHUpIHsKLSAgdmFyIHN3aXRjaGVyID0gZSAtIDExNSB8IDA7Ci0gIGlmIChz
d2l0Y2hlciA+IDIgfHwgc3dpdGNoZXIgPCAwKSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAgICAgIFsKLSAgICAg
ICAgICAgICJ0ZXh0L2xleGVyLm1sbCIsCi0gICAgICAgICAgICA3OCwKLSAgICAgICAgICAgIDkK
LSAgICAgICAgICBdCi0gICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgc3dpdGNoIChzd2l0
Y2hlcikgewotICAgICAgY2FzZSAwIDogCi0gICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICBjYXNl
IDEgOiAKLSAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMuYXNzZXJ0X2ZhaWx1cmUsCi0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAg
ICAgICAgInRleHQvbGV4ZXIubWxsIiwKLSAgICAgICAgICAgICAgICAgIDc4LAotICAgICAgICAg
ICAgICAgICAgOQotICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgXTsKLSAgICAgIGNh
c2UgMiA6IAotICAgICAgICAgIHJldHVybiB1OwotICAgICAgCi0gICAgfQotICB9Ci19Ci0KLXZh
ciBvcHQgPSBMaWIuT3B0aW9uWy8qIGdldCAqLzBdOwotCi12YXIgX19vY2FtbF9sZXhfdGFibGVz
ID0gLyogcmVjb3JkICovWwotICAvKiBsZXhfYmFzZSAqLyJcMFwwb1x4ZmZwXHhmZnFceGZmclx4
ZmZceDAxXDBVXDBceDA3XDBceDFiXDBceDA1XDBvXDBvXDB0XDBceDA2XDBqXDBceDBlXDBrXDB5
XDBceDEwXDB5XDBzXDBceGI0XDBceDAxXHgwMXpcMFx4YmVcMFx4YzVcMFx4MDRceDAxXHgxYVx4
MDFceGZlXHhmZlx4MDJcMHNceGZmXHgxM1wwPFx4MDFSXHgwMXhceDAxXCJcMFx4OGZceDAxXHhk
NVx4MDFceDBlXHgwMVx4ZWVceDAxL1x4MDI+XHgwMlVceDAyXHg5Nlx4MDJceGEwXHgwMk9cMERc
MFx4YWNceDAyXHhjMlx4MDJceGU3XHgwMlwwXHgwMyZceDAzTFx4MDN6XDB8XDB+XDBceDg2XDB8
XDB5XDBceGZiXHhmZlx4ODVcMFwwXDBceDBmXDBceDg3XDByXHgwM1x4OThceDAzXHhiMVwwXHhl
OFx4ZmZcclwwXHgxMFwwXHhlZVwwXHhhZFwwXHhiNlwwXHhiYlwwXHhjMlwwXHg4Mlx4ZmZceGI0
XDB4XHhmZlwwXDBceDljXHgwMlx4YjhcMFx4YmJcMFx4ZjFcMFx4Y2FcMFx4YmZcMFx4YzJcMFx4
ZTNcMFx4ZjJcMFx4ZWZcMFx4ZTRcMFx4ZjhcMFx4ZWJcMFx4ZjNcMCpceDAxXG5ceDAxXHhlNlww
XHhlOFwwXHhmNVwwXHhmN1wwXHhmN1wwXHhmNVx4ZmZceGQ3XHhmZlx4ZDZceGZmXDBcMFx4MDFc
MFx4MTZceDAxXHgxNFx4MDFqXHgwMVx4MWNcMFx4MWFcMFx4MWJceDAxXGJceDAxXHhkYlx4ZmZc
eDE5XHgwMVx4YjNceGZmXHhiNFx4ZmYnXHgwMVx4YjFceGZmXHhiMlx4ZmYzXHgwMVx4MWFceDAx
XHgxZVx4MDFceDFlXHgwMSxceDAxXHhhZVx4MDFceDFmXDAmXDBceGRhXHhmZlx4Y2NceGZmQVx4
MDFceGMzXHhmZlZceDAxXHhjMVx4ZmZceGMyXHhmZjNceDAxQVx4MDE5XHgwMT5ceDAxXHhkNVx4
ZmZmXHgwMWhceDAxXHhjZFx4ZmZceGM2XHhmZmFceDAxXHhjYlx4ZmZYXHgwMXBceDAxY1x4MDFc
eGM5XHhmZlx4Y2FceGZmY1x4MDF3XHgwMXRceDAxXHg4NFx4MDFyXHgwMVx4YzdceGZmXHhjOFx4
ZmZ1XHgwMVx4ODVceDAxeVx4MDF8XHgwMXtceDAxXHg4OVx4MDF7XHgwMVwwXDBceDkwXHgwMSpc
MCxcMFx4OTdceGZmXHg4Ylx4MDFceGJmXHhmZlx4YzBceGZmXHhjNVx4ZmZceDg2XHgwMVx4YzRc
eGZmXHg3Zlx4MDFceGI3XHhmZlx4YjVceGZmXHg5Ylx4MDFceDljXHgwMVx4ODlceDAxXHhhZlx4
ZmZceGIwXHhmZlx4OWNceDAxXHhhZFx4ZmZceGFlXHhmZlx4YTNceDAxXHhhMFx4MDFceGUzXHgw
MVx4YWFceDAxXHhkZVx4MDFceGUxXHgwMVx4YTZceGZmXHhhOFx4MDFceGJhXHgwMVx4YzZceDAx
XHhjYlx4MDFceGI4XHgwMVx4ZmRceDAxXHhmZlx4MDFceGNmXHgwMVx0XHgwMlx0XHgwMlxmXHgw
Mlx4YTFceGZmXHg5Zlx4ZmZceGRhXHgwMVx4MGVceDAyXHgwZVx4MDJceDExXHgwMlx4YTBceGZm
XHg5ZVx4ZmZceDE4XHgwMn5ceDAzXHhkNlx4MDFceGU2XHgwMVx4ZGZceDAxXHhkYlx4MDFceGQ2
XHgwMVx4ZThceDAxXHhlNFx4MDFceGU3XHgwMVx4ZTZceDAxXHhmNFx4MDFceGU2XHgwMSxceDAy
XHhmNlx4MDEnXHgwMjZceDAyXHg5Nlx4ZmZceGY4XHgwMVxiXHgwMlxuXHgwMlx4MTVceDAyXHgx
Ylx4MDJcYlx4MDJNXHgwMk9ceDAyJlx4MDJdXHgwMl9ceDAyXHhhNVx4ZmYpXHgwMmBceDAyYlx4
MDJceGE0XHhmZiZceDAyKlx4MDIpXHgwMlx4ODZceGZmLlx4MDJceGYyXHhmZlx4ZjhceGZmXHhm
OVx4ZmZceGZhXHhmZlx4ZDFceDAzRlx4MDRceGY3XHhmZjlceDA0XHhhNFx4MDQ3XHgwMnJceDAy
dVx4MDJ6XHgwMlx4YjdceDAzRFx4MDJIXHgwMjlceDAyRlx4MDJLXHgwMj5ceDAyRVx4MDJRXHgw
Mk1ceDAyTVx4MDJceGJkXHgwM1x4OTdceDAyVFx4MDJ4XHgwMkZceDAydFx4MDJeXHgwMlJceDAy
Z1x4MDJceDhhXHgwMnhceDAyXHhiZFx4MDJceGJmXHgwMlx4ODZceDAyXHhjZlx4MDJceGNhXHgw
Mlx4ZDJceDAyXHg5ZFx4ZmZceDliXHhmZlx4YTRceDAyXHhkZlx4MDJceGUyXHgwMlx4ZWZceDAy
XHg5Y1x4ZmZceDlhXHhmZlx4YWZceDAyXHhiYVx4MDJceGJkXHgwMlx4YjdceDAyXHhiOFx4ZmZc
eGJhXHgwMlx4ZDFceGZmXHhhOVx4ZmZceGFhXHhmZlx4Y2VceDAyXHhkN1x4MDJceGRkXHhmZlx4
ZGFceDAyXHhjYlx4MDJceGNmXHgwMlx4Y2RceDAyXHhkYlx4MDJceGRjXHhmZlx4ZDNceDAyXHhk
Mlx4ZmZceGJkXHhmZlx4ZWVceDAyXHhkY1x4MDJceGQ0XHhmZlx4ZWJceDAyXHhkZlx4MDJceGVj
XHgwMlx4Y2VceGZmXHRceDAzXHhmYlx4MDJceGQzXHhmZlx4YmVceGZmXDBceDAzXHgwMlx4MDNc
MFx4MDNceGQwXHhmZlx4ZmVceDAyXHgwNlx4MDNceDEyXHgwM1x4Y2ZceGZmXHhmZVx4MDJcdFx4
MDNcZlx4MDNceGJjXHhmZlx4YmFceGZmXHhiOVx4ZmZcZlx4MDNceDA1XHgwM1x4YmJceGZmXHgx
N1x4MDNceDFmXHgwMy9ceDAzZlx4MDMxXHgwM2JceDAzZVx4MDNceGEzXHhmZlx4YWNceGZmXHhh
N1x4ZmZceGE4XHhmZjFceDAzLVx4MDMoXHgwMzhceDAzLFx4MDMvXHgwMy5ceDAzPFx4MDM4XHgw
M1x4OGFceDAzUVx4MDNceDg4XHgwM1x4OGJceDAzXHg5OVx4ZmZceDkwXHgwM1x4MWZceDA0Wlx4
MDNOXHgwM1hceDAzU1x4MDNWXHgwM1VceDAzUVx4MDNhXHgwM1x4OThceDAzbFx4MDNceGFkXHgw
M1x4YjJceDAzXHhhMlx4ZmZ9XHgwM3lceDAzdFx4MDNceDg0XHgwM31ceDAzXHg4NFx4MDNceDgz
XHgwM1x4OTJceDAzXHg4Ylx4MDNceGQxXHgwM1x4YTJceDAzXHhkNlx4MDNceGQ5XHgwM1x4OThc
eGZmXHhhYlx4MDNceDkyXHhmZlx4OWNceDAzXHhhN1x4MDNceDk4XHgwM1x4YjNceDAzXHhhYVx4
MDNceGIyXHgwM1x4YmVceDAzXHhmNFx4ZmZceGJmXHgwM1x4YjlceDAzXHhlYlx4MDNceDk3XHgw
NFx4YTJceDA0XHhhY1x4MDRceGI2XHgwNFx4ZGNceDA0XHhjOVx4MDNceGJkXHgwM1x4YmNceDAz
XHhkOVx4MDNceGMwXHgwNFx4YzFceDAzXHhjOFx4MDNceGQ2XHgwM1x4Y2VceDAzXHhjZVx4MDNc
eGQwXHgwM1x4ZGZceDAzXHhkNVx4MDNceGRjXHgwM1x4ZDRceDAzXHhkMlx4MDNceGY5XHgwM1x4
MDJceDA0XHgwZlx4MDRceDgwXHhmZlx4ZmVceDAzXHgxNFx4MDRcblx4MDRceDBlXHgwNFx4MTRc
eDA0XHg3Zlx4ZmZceDEzXHgwNFxyXHgwNChceDA0XHgxZlx4MDRceDFiXHgwNFx4MTRceDA0LVx4
MDQkXHgwNCtceDA0MVx4MDR+XHhmZipceDA0Llx4MDQqXHgwNC5ceDA0P1x4MDQ/XHgwNDdceDA0
X1x4MDR9XHhmZnxceDA0fFx4MDRceDgwXHgwNFx4ODVceDA0XHg5NVx4MDRceDg3XHgwNFx4OTVc
eDA0XHg4Zlx4MDR7XHhmZlx4OWRceDA0XHg4Zlx4MDR6XHhmZlx4OTlceDA0XHhhMVx4MDRceDhl
XHgwNFx4OTFceDA0XHg5MVx4MDRceDlkXHgwNFx4OThceDA0XHg5YVx4MDR5XHhmZlx4OWNceDA0
XHhhNlx4MDRceDk3XHgwNFx4ZjNceGZmXHhhMVx4MDRceGJhXHgwNFx4YzJceDA0XHg4Y1x4ZmZc
eGI5XHgwNFx4YjhceDA0XHhiMlx4MDRceDhhXHhmZlx4YmFceDA0XHhjOVx4MDRceGNlXHgwNFx4
Y2RceDA0XHhjOVx4MDRceGQ1XHgwNFx4ZDVceDA0XHhjY1x4MDRceGQ0XHgwNFx4ZjFceGZmXHhj
Nlx4MDRceGNjXHgwNFx4Y2NceDA0XHhmMFx4ZmZceGUyXHgwNFx4ODhceGZmXHhlNVx4MDRceGQ2
XHgwNFx4ZTRceDA0XHhkZFx4MDRceGVmXHhmZlx4ZTBceDA0XHhlOVx4MDRceGU1XHgwNFx4ZWJc
eGZmXHhlYVx4MDRceGUxXHgwNFx4ZTlceDA0XHhlYVx4ZmZceGVjXHgwNFx4ZWZceDA0XHhlMVx4
MDRceGVlXHhmZlx4ZTZceDA0XHg4ZVx4ZmZceGUzXHgwNFx4ZjBceDA0XHhmMlx4MDRceGVkXHhm
Zlx4ZWFceDA0XHhmM1x4MDRceGU2XHhmZlx4ODlceGZmXHhlYVx4MDRceGU4XHgwNFx4ZThceDA0
XHg4NVx4ZmZceGY2XHgwNFx4ZjVceDA0XHhlYVx4MDRceGViXHgwNFx4ZWZceDA0XHhmNFx4MDRc
eGU5XHhmZlx4ZjhceDA0XHhmMVx4MDRceDhmXHhmZlx4ZjNceDA0XHhmM1x4MDRceDAzXHgwNVx4
ZjlceDA0XHg4M1x4ZmZcblx4MDVceGZkXHgwNFx0XHgwNVxuXHgwNVx4MDJceDA1XHhlN1x4ZmZc
eDEyXHgwNVx4MDZceDA1XHgwNFx4MDVceDExXHgwNVx4MTRceDA1XG5ceDA1XHhlMFx4ZmZceDEy
XHgwNVx4OTNceGZmXGZceDA1XHgxNFx4MDVceDhiXHhmZlxiXHgwNVx4MWFceDA1XHgxMFx4MDVc
eDFlXHgwNVx4MTlceDA1XHgxY1x4MDVcZlx4MDVceGU1XHhmZlx4MWFceDA1XHgxNlx4MDVceDE0
XHgwNVwiXHgwNSZceDA1XHgxY1x4MDVceGUxXHhmZlx4MWFceDA1KFx4MDUqXHgwNSBceDA1XHhk
ZVx4ZmZceDFiXHgwNVx4MWFceDA1XHg5MVx4ZmYmXHgwNSBceDA1XHgxZFx4MDVceDg0XHhmZiBc
eDA1J1x4MDUoXHgwNTZceDA1LVx4MDUpXHgwNTRceDA1MFx4MDUoXHgwNTZceDA1OVx4MDUpXHgw
NVx4ZTNceGZmLFx4MDU6XHgwNTJceDA1LVx4MDVDXHgwNTZceDA1QFx4MDU5XHgwNThceDA1Nlx4
MDUwXHgwNVx4OTVceGZmO1x4MDU8XHgwNThceDA1Tlx4MDVHXHgwNUNceDA1QVx4MDVOXHgwNVFc
eDA1SFx4MDVceGUyXHhmZkZceDA1VFx4MDVWXHgwNUxceDA1XHhkZlx4ZmZCXHgwNVtceDA1Tlx4
MDVXXHgwNVBceDA1T1x4MDVNXHgwNUdceDA1XHg5NFx4ZmZfXHgwNWFceDA1V1x4MDVceDhkXHhm
ZlBceDA1X1x4MDVTXHgwNWJceDA1VFx4MDVceDhjXHgwNVx4OWFceDA1XHhhNFx4MDVceGFlXHgw
NVx4YjhceDA1XHhjZlx4MDVceDgyXHgwNX5ceDA1XHg4MFx4MDV3XHhmZlx4ODNceDA1XHg5NVx4
MDVceDhhXHgwNVx4OTBceGZmXHgxNVx4MDZceGVlXHgwNXRceGZmdVx4ZmZceDAyXHgwNlx4ZmJc
eGZmXHhmY1x4ZmZceGZkXHhmZlx4Y2VceDA1XHgwMVwwXHhmZlx4ZmZceGZlXHhmZiIsCi0gIC8q
IGxleF9iYWNrdHJrICovIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkw
XDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBceDkwXDBc
eDkwXDBceDkwXDBceDAyXDBceDAyXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHgwNFww
XHhmZlx4ZmZceDAyXDBceGZmXHhmZlx4ZmZceGZmXHgwMlwwXHhmZlx4ZmZceDAyXDBceDA0XDBc
eGZmXHhmZlx4MDRcMFx4MDRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MDNcMFx4MDNcMFx4
ZmZceGZmXHgwM1wwXHgwM1wwXHgwM1wwXHhmZlx4ZmZceDA0XDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDA0XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceDA0XDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcdFwwXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcIlwwXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmYjXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmSVwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlxiXDBcYlwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlRcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHRcMFx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZidcMCdcMFx4ZmZceGZmJ1wwXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ODNcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceDEzXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDFiXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZ+XDBceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZ4XDBceGZmXHhmZiZcMCZcMFx4ZmZceGZmJlwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ODlcMFx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwNFwwXHgw
NFwwXHhmZlx4ZmZceGZmXHhmZiIsCi0gIC8qIGxleF9kZWZhdWx0ICovIlx4MDFcMFwwXDBcMFww
XDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBceDAxXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
ZlwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZc
MFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXDBcMFwwXDBceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZm
XHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXDBcMFwwXDBceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXDBcMFwwXDBceDAxXHgwMVwwXHgwMVwwXDBceGZm
XHhmZlwwXHgwMVx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlwwXDBcMFwwXHhmZlx4
ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhm
ZlwwXDBcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXDBcMFwwXDBceGZmXHhmZlx4ZmZc
eGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXDBcMFwwXDBcMFwwXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXDBc
MFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXDBcMFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4
ZmZceGZmXDBcMFwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFwwXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZcMFww
XHhmZlx4ZmZceGE5XHgwMlwwXDBcMFwwXHhhZFx4MDJcMFwwXDBcMFwwXDBceGZmXHhmZlx4ZmZc
eGZmXDBcMFwwXDAiLAotICAvKiBsZXhfdHJhbnMgKi8nXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXHgwNFwwXHgwM1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwNFww
XDBcMFx4MTZcMFwwXDBceDA2XDBcMFwwXDBcMFwwXDBceDFkXDBceDFjXDBceGIyXHgwMlx4MTlc
MFwwXDBceDE5XDBPXDBceGE1XDBceDFiXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBceDFhXDBc
eDFhXDBceDFhXDBceDFhXDBceDFhXDA+XDBceDA1XDBceGE5XHgwMlx4MWVcMCxcMD9cMCxcMFx4
ZDRcME5cMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCZcMG5cMCZcMG5cMFx4N2ZcMChc
MChcMChcMChcMChcMChcMChcMChcMChcMChcMFx4N2ZcMFx4YTdcMFx4YThcMHRcMHFcMFx4MTRc
MFx4MTBcMFxuXDBceDExXDBceDBlXDBceDE1XDBcdFwwXHhhNFx4MDJceDE4XDB6XHgwMiNceDAy
XHgwZlwwXHgxM1wwXHgxN1wwXGJcMFx4MDdcMHhceDAyXHJcMFx4MGJcMFxmXDBceDEyXDBceGE4
XHgwMnlceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4MTFceDAy
XHhmNFx4MDFceGE4XHgwMlx4YThceDAyXHg5Nlx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHg5NVx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
MjxcMFx4YThceDAyNVwwXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMmBceDAyXHhhOFx4MDJEXHgwMlx4YThceDAyRlx4MDIyXHgwMlx4
MThceDAyXHgwNVx4MDJceDE5XHgwMjRceDAyXHhmZVx4MDE8XHgwMDVceDAyXHgwNFx4MDJceGU4
XHgwMVx4OTZceDAxNlwwXHg5N1x4MDFceDE3XHgwMkVceDAyX1x4MDI3XDBceDk1XHgwMVx4MDZc
eDAxXHhlOVx4MDFceGZhXDBceDA1XHgwMVx4ZmZceDAxOFx4MDAzXHgwMlx4ZWFceDAxOVwwOlww
RVwwO1wwPVwwRFx4MDAwXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDAvXDBAXDBceDAyXDBceGZj
XDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZkXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZj
XDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBceGZjXDBc
eGZjXDBceGZjXDBceGZjXDBceGY2XDBMXDBceGZlXDBDXDBJXDBKXDBLXDBNXDBceDA0XHgwMVx4
YzFcMEJcMEZcMFx4YmFcMC5cMFx4YjFcMFx4YWZcMFx4YWRcMCBcMC1cMFx4MWFcMFx4MWFcMFx4
MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMChcMChcMChcMChc
MChcMChcMChcMChcMChcMChcMCBcMFx4MWZcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFc
MFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFcMFx4MWFceDAwNlwwXHhhY1wwXHhiMlwwXHg5N1wwXHg5
MVwwXHg4ZlwwXHg4Nlwwd1wwXHg4Y1wwXHhmZlwwR1wwXHgxZlwwZlwwXHg5NlwwZVwwYlwwSFww
XHhiM1wwXHg4YlwweVwweFwwXHgxZlwwY1wwZFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFww
IFwwYFwwalwwa1wwYVwwb1wwcFwwXHg4MFwwcFwwX1wwXHgxZlwwXHhmY1wwXHgxZlwwIlwwIlww
IlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwc1wwelwwclwwZ1wwe1wwfFwwIVwwIlwwIlwwIlwwIlww
IlwwIlwwaVwwdlwwbVwwdVwwbFwwaFwwXHg4MlwwXHg4M1wwXHgxZlwwblwwXHg4N1wwXHg4OFww
XHg4MVwwJFwwXHg4OVwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwXHg4YVwwIlwwIlww
IlwwIlwwIlwwIlwwIlwwIlwwIlwwIlwwJVwwIlwwJFwwJFwwJFwwJFwwJFwwJFwwJFwwJFwwJFww
JFwwXHg4NVwwXHg4ZVwwXHg4NFwwXHg4ZFwwXHg5MFwwXHg5MlwwXHg5M1wwJFwwJFwwJFwwJFww
KVwwJFwwXHg5NVwwXHhhOVwwXHg5NFwwIlwwIlwwIlwwIlwwJVwwIlwwflwwXHg5OFwwfVwwXHg5
ZFwwXHg5YVwwXHg5OVwwXHg5Y1wwXHg3ZlwwXHg5YlwwI1wwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhh
MVwwXHhhMlwwXHhhM1wwXHhhNFwwJFwwJFwwJFwwJFwwKVwwJFwwXHhhNlwwXHhhYlwwXHhhZVww
XHhiMFwwXHhiN1wwXHhiNFwwXHhiNlwwXHhhYVwwXHhiNVwwI1wwJlwwXHhmZFwwJlwwJFwwXHhi
YlwwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFx4YjlcMFx4YmNcMFx4
YjhcMFx4YmRcMFx4YmVcMFx4YmZcMFx4YzBcMCJcMCJcMCJcMCJcMCVcMCJcMCRcMFx4YzJcMFwn
XDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBcJ1wwXCdcMFwnXDBceGMzXDBceGM0XDBceGM1XDBc
eGM3XDBceGNlXDBceGM2XDBceGM4XDAiXDAiXDAiXDAiXDAlXDAiXDBceGM5XDAiXDAiXDAiXDAi
XDAlXDAiXDBceGNiXDBceGNkXDBceGNjXDBceGNhXDBceGNmXDBceGQxXDBceGQzXDBceGQyXDBc
eGQwXDAjXDBceGQ1XDBceGFmXDBceGQ5XDBceGRhXDBceGRiXDBceGQ4XDBceDk5XDBceGRjXDBc
eGU2XDAiXDAiXDAiXDAiXDAlXDAiXDBceDk2XDBceGRkXDBceGRlXDBceGRmXDBceGUwXDBceGUx
XDBceGUyXDBceGUzXDBceGU0XDAjXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAoXDAmXDBc
eGU1XDAmXDBceGU3XDBceGU4XDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDBceGU5XDBc
eGVhXDBceGViXDBceGVkXDBceGYyXDBceGVjXDBceGVlXDAkXDAkXDAkXDAkXDApXDAkXDAqXDAq
XDAqXDAqXDAqXDAqXDAqXDAqXDAqXDAqXDBceGVmXDBceGYwXDBceGYxXDBceGYzXDBceGY0XDBc
eGY1XDBceGY3XDAkXDAkXDAkXDAkXDApXDAkXDBceGY4XDBceGY5XDBceGZiXDAkXDAkXDAkXDAk
XDApXDAkXDBceDkzXHgwMXZceDAxXHgwN1x4MDFcYlx4MDFoXHgwMWVceDAxWlx4MDFUXHgwMWZc
eDAxI1wwW1x4MDFQXHgwMUxceDAxQVx4MDFJXHgwMVVceDAxSFx4MDEkXDAkXDAkXDAkXDApXDAk
XDBnXHgwMTFceDAxOVx4MDEsXHgwMVZceDAxOlx4MDE4XHgwMVx4MWFceDAxXHgxYlx4MDEjXDAr
XDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDArXDAr
XDAgXDBceDFjXHgwMS9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMFx4MThceDAxY1wwXHgx
N1x4MDFceDFkXHgwMVx4MTlceDAxXHgxZlx4MDEmXHgwMVx4MWVceDAxIFx4MDEhXHgwMSBcMFx4
MWZcMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMC9cMFx4MTVceDAxWlwwJVx4MDFeXDBYXDBU
XDAjXHgwMVJcMCRceDAxIlx4MDFceDE2XHgwMVx4MWZcMF1cMFlcMFNcMFZcMFtcMFwnXHgwMVdc
MFxcXDBQXDBceDFmXDApXHgwMVFcMFVcMChceDAxK1x4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJc
eDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDAqXHgwMS1ceDAxLlx4MDEvXHgwMTBceDAxMlx4MDFc
eDFmXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXDAkXHgwMDZceDAxMlx4MDAyXHgwMDJc
eDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAxXHgwMDdceDAxQFx4MDE+XHgw
MTtceDAxPFx4MDE9XHgwMTJceDAwMlx4MDAyXHgwMDJceDAwM1x4MDAyXDA/XHgwMTJceDAwMlx4
MDAyXHgwMDJceDAwMlx4MDAyXDBEXHgwMUJceDAxRVx4MDEmXDBGXHgwMSZcMCRcMENceDAxNFx4
MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFwwR1x4MDEyXHgwMDJc
eDAwMlx4MDAyXHgwMDNceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlwwS1x4MDFK
XHgwMU1ceDAxI1wwTlx4MDFPXHgwMVFceDAxUlx4MDFTXHgwMVlceDAxWFx4MDFXXHgwMV1ceDAx
JFwwXFxceDAxNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFww
Xlx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDNceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDNc
eDAwMlwwX1x4MDFgXHgwMWFceDAxI1wwYlx4MDFjXHgwMWRceDAxaVx4MDFqXHgwMWtceDAxbFx4
MDFtXHgwMW5ceDAxb1x4MDFwXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMHFceDAx
Mlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDJcMEFcMEFcMEFcMEFcMEFcMEFcMHJceDAxc1x4MDF0
XHgwMSNcMHVceDAxd1x4MDFceDg1XHgwMXtceDAxW1x4MDF8XHgwMX1ceDAxflx4MDFceDdmXHgw
MVx4ODBceDAxXHg4MVx4MDFBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBBXDBceDgyXHgwMUFc
MEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMFpcMFx4ODNceDAxXlwwWFwwXHhkNlww
XHg4NFx4MDFSXDBceDg2XHgwMVx4ODdceDAxXHg4OFx4MDFceDg5XHgwMV1cMFlcMFNcMFZcMFtc
MFx4OGFceDAxXHhkN1wwXFxcMFBcMFx4MDNceDAxXHg4Ylx4MDFceDhjXHgwMVVcMFx4OGRceDAx
XHgwM1x4MDFBXDBBXDBBXDBBXDBBXDBBXDBceDhlXHgwMVx4OGZceDAxXHgwMlx4MDFceDAyXHgw
MVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAx
XHgwMlx4MDFceDkwXHgwMVx4OTFceDAxXHg5Mlx4MDFceDk0XHgwMVx4YTVceDAxXHg5ZFx4MDFc
eDk4XHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4
MTBceDAxXHg5OVx4MDFceDE0XHgwMVxmXHgwMVx4MGJceDAxXHgwZlx4MDFcblx4MDFceDlhXHgw
MVx4OWJceDAxXHg5Y1x4MDEzXHgwMVx4MTNceDAxXHJceDAxXHgxMVx4MDFceDllXHgwMVx4OWZc
eDAxXHhhMFx4MDFcdFx4MDFceDEyXHgwMVx4MGVceDAxNVx4MDFceDAzXHgwMVx4YTZceDAxXHhh
N1x4MDFceGE4XHgwMTRceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgw
MVx4MDJceDAxXHhhOVx4MDFceGRmXHgwMVx4ZGNceDAxXHhkM1x4MDFceGNhXHgwMVx4YmZceDAx
XHhiOVx4MDFceDAzXHgwMVx4YjFceDAxXHhiMlx4MDFceGIzXHgwMVx4YjRceDAxXHhiNVx4MDFc
eDAzXHgwMVx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmRcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4YjZceDAxXHhiN1x4MDFceGZlXDBcMFx4MDFc
MFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFcMFx4MDFceGI4
XHgwMVx4YmFceDAxXHhiYlx4MDFceGJjXHgwMVx4YmRceDAxXHhiZVx4MDFceGMwXHgwMVwwXHgw
MVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4MTBceDAxXHhjMVx4MDFceDE0XHgwMXpc
eDAxXHgwYlx4MDFceDBmXHgwMVxuXHgwMVx4YzJceDAxXHhjM1x4MDFceGM0XHgwMVx4YzVceDAx
XHgxM1x4MDFcclx4MDFceDExXHgwMVx4YzZceDAxeVx4MDFceGM3XHgwMXhceDAxXHgxMlx4MDFc
eDBlXHgwMVx4YzhceDAxXHhjOVx4MDFceGNiXHgwMVx4Y2NceDAxXHhjZFx4MDFceGNlXHgwMVww
XHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4Y2ZceDAxXHhkMFx4MDFceGZmXDBc
eGQxXHgwMVx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmRcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNc
MFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4
ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZmNcMFx4ZDJceDAxXHhmY1wwXHhmZVwwXHhhMlx4MDFc
eGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4
YTFceDAxXHhhMVx4MDFceGZmXHhmZlx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhh
MVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGEx
XHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFc
eDAxXHhhMVx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4
MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4ZDRceDAxXHhkNVx4MDFceGQ2XHgw
MVx4ZDdceDAxXHhkOFx4MDFceGQ5XHgwMVx4ZGFceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAx
XHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhkYlx4MDFceGRkXHgwMVx4ZGVceDAxXHhmZlwwXHhl
MFx4MDFceGUxXHgwMVx4ZTJceDAxXHhlM1x4MDFceGU0XHgwMVx4ZTVceDAxXHhlNlx4MDFceGU3
XHgwMVx4ZjBceDAxXHhlY1x4MDFceGViXHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRc
eDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhlZFx4
MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgw
MVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGZjXDBceGEzXHgwMVx4
YWFceDAxXHhlZVx4MDFceGVmXHgwMVx4ZjFceDAxXHhhZlx4MDFceGYyXHgwMVx4ZjNceDAxXHhm
NVx4MDFceGIwXHgwMVx4ZjZceDAxXHhmN1x4MDFceGY4XHgwMVx4ZjlceDAxXHhhY1x4MDFceGFl
XHgwMVx4YWJceDAxXHhhZFx4MDFceGZhXHgwMVx4ZmJceDAxXHhmY1x4MDFceGZkXHgwMVx4MDJc
eDAyXDBceDAyXHgwMVx4MDJceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAx
XHhhNFx4MDFceDAzXHgwMlx0XHgwMlx4MDZceDAyXHhmZFwwXHgwN1x4MDJcYlx4MDJceDBiXHgw
MlxyXHgwMlxmXHgwMlx4MGVceDAyXHgwZlx4MDJceDEwXHgwMlx4MTJceDAyXHgxNVx4MDJceDE0
XHgwMlx4MTZceDAyXHgxZlx4MDJcblx4MDJceDFiXHgwMlx4MWFceDAyXHgxZVx4MDJceDFkXHgw
MiBceDAyIVx4MDJceDEzXHgwMiJceDAyJFx4MDItXHgwMipceDAyXCdceDAyKFx4MDIpXHgwMlx4
MWNceDAyK1x4MDIsXHgwMi5ceDAyL1x4MDIwXHgwMiVceDAyJlx4MDIxXHgwMkFceDAyP1x4MDI4
XHgwMjZceDAyN1x4MDI5XHgwMjpceDAyO1x4MDI8XHgwMj1ceDAyPlx4MDJAXHgwMkJceDAyQ1x4
MDJbXHgwMlhceDAySFx4MDJMXHgwMklceDAySlx4MDJLXHgwMk1ceDAyU1x4MDJPXHgwMkdceDAy
UFx4MDJOXHgwMlFceDAyUlx4MDJUXHgwMlVceDAyVlx4MDJXXHgwMllceDAyWlx4MDJcXFx4MDJd
XHgwMl5ceDAybFx4MDJhXHgwMmJceDAyY1x4MDJkXHgwMmVceDAyZlx4MDJnXHgwMmhceDAyaVx4
MDJqXHgwMmtceDAybVx4MDJuXHgwMm9ceDAycFx4MDJxXHgwMnJceDAyXHhmZFwwc1x4MDJ0XHgw
MnVceDAydlx4MDJ3XHgwMlx4OTFceDAyXHg4OFx4MDJ7XHgwMnxceDAyfVx4MDJceDgzXHgwMlx4
N2ZceDAyXHg4MFx4MDJceDgxXHgwMn5ceDAyXHg4Mlx4MDJceDg0XHgwMlx4ODVceDAyXHg4Nlx4
MDJceDg3XHgwMlx4ODlceDAyXHg4YVx4MDJceDhiXHgwMlx4OGNceDAyXHg4ZFx4MDJceDhlXHgw
Mlx4OGZceDAyXHg5MFx4MDJceDkyXHgwMlx4OTNceDAyXHg5NFx4MDJceGEwXHgwMlx4OTdceDAy
XHg5OFx4MDJceDk5XHgwMlx4OWFceDAyXHg5Ylx4MDJceDlkXHgwMlx4OWNceDAyXHg5Y1x4MDJc
eDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4
OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5
Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDlj
XHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDlmXHgwMlx4OWZc
eDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4
MDJceDlmXHgwMlx4YTFceDAyXHhhMlx4MDJceGEzXHgwMlx4YTVceDAyXHhhNlx4MDJceGE3XHgw
Mlx4YWFceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAy
XHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJc
eDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceGIzXHgwMlwwXDBcMFwwXHhhZlx4MDJcMFwwXDBcMFww
XDBceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJcMFwwXDBc
MFwwXDBceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg5ZVx4MDJcMFwwXDBcMFwwXDBceGIwXHgwMlwwXDBc
MFwwXDBcMFwwXDBcMFwwXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4
OWZceDAyXHhhOFx4MDJcMFwwXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YjFceDAyXDBcMFx4YThceDAyXHhhOFx4MDJcMFwwXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlwwXDBceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlww
XDBceGE4XHgwMlwwXDBceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXDBcMFx4YThceDAyXDBcMFx4YThceDAyXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXHhhYlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhZVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
JywKLSAgLyogbGV4X2NoZWNrICovIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXDBcMFx4ZmZceGZmXDBc
MFx4ZmZceGZmXDBcMFx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlwwXDBcMFwwXHhiMVx4MDJcMFww
XHhmZlx4ZmZcMFwwTlwwXHhhNFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMD1cMFwwXDBceDA1XDBceDFkXDBceDFmXDA+XDBceDFmXDBEXDBFXDBceDFmXDBceDFmXDBc
eDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDBceDFmXDAjXDBsXDAjXDBt
XDB9XDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDAjXDB+XDBceGE2XDBceGE3XDBnXDBoXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgwN1wwXDBcMFx0XDBcclwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcdFwwXDBcMFwwXDBcMFwwXDBcMFx4MDZcMFx0XDBceDA2XDBceDA2XDBceDA2XDBc
eDA2XDBceDA2XDBceDBmXDBceDEyXDBceDA2XDBceDA2XDBcYlwwXHgwNlwwXHgwNlwwXHgwNlww
XHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgwNlwwXHgw
NlwwXHgwNlwwXGJcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMC1cMFx4MDZcMC5cMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4
MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZc
MFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFxuXDBceDA2XDBceDBi
XDBceDA2XDBceDBiXDBcZlwwXHgwZVwwXHgxMFwwXHgwZVwwXGZcMFx4MTFcMFx4MTdcMFxmXDBc
eDEwXDBceDEzXDBceDE0XHgwMDVcMFx4MTRcMFx4MGVcMFx4MGJcMFxuXHgwMDZcMFx4MTRcMFx4
MTVcMFx4MTNcMFx4MTdcMFx4MTVcMFx4MTFceDAwN1wwXGZcMFx4MTNceDAwOFx4MDA5XDBceDE4
XDA6XDA8XDBceDE4XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBceDE5XDBc
eDE5XDBceDE5XDBceDE5XDA/XDBcMFwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgx
NlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlww
XHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgx
NlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwXHgxNlwwQlwwR1wwXHgxNlww
XHgxOFwwSFwwSVwwSlwwTFwwXHgxNVwwUFwwXHgxOFwwXHgxOFwwUVwwXHgxOVwwU1wwVFwwVVww
XHgxYVwwXHgxOVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgxYVwwXHgx
YVwwXHgxYVwwXHgxYVwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwJlwwXHgxYlwwXHgxYVww
XHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgxYlwwXHgx
YlwwRlwwVlwwUlwwV1wwWFwwWVwwW1wwXFxcMFpcMFx4MTZcMEZcMFx4MWJcMF9cMFdcMGBcMGFc
MEZcMFJcMFpcMFxcXDBcXFwwXHgxYVwwYlwwY1wwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFwwIFww
IFwwXlwwaVwwalwwXlwwblwwb1wweFwwb1wwXlwwXHgxYlwwXHgxNlwwIFwwIVwwIVwwIVwwIVww
IVwwIVwwIVwwIVwwIVwwIVwwcVwweVwwcVwwXVwwelwwe1wwXHgxYlwwIVwwIVwwIVwwIVwwIVww
IVwwXVwwdFwwa1wwdFwwa1wwXVwwd1wwXHg4MVwwIFwwa1wwXHg4NlwwXHg4N1wwd1wwXCJcMFx4
ODhcMFwiXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDBceDg5XDAhXDAhXDAh
XDAhXDAhXDAhXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDAkXDAkXDAkXDAkXDAkXDAkXDAkXDAk
XDAkXDAkXDBceDgzXDBceDhiXDBceDgzXDBceDhjXDBceDhmXDBceDkxXDBceDkyXDAkXDAkXDAk
XDAkXDAkXDAkXDBceDkzXDBceDk2XDBceDkzXDBcIlwwXCJcMFwiXDBcIlwwXCJcMFwiXDB8XDBc
eDk3XDB8XDBceDk4XDBceDk5XDBceDk3XDBceDlhXDB8XDBceDlhXDBcIlwwXHg5ZFwwXHg5ZVww
XHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwJFwwJFwwJFwwJFwwJFwwJFwwXHhhNVwwXHhh
OVwwXHhhZFwwXHhhZlwwXHhiMlwwXHhiM1wwXHhiNFwwXHhhOVwwXHhiNFwwJFwwJVwwXHgxNlww
JVwwJVwwXHhiYVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwJVwwXHhiN1wwXHhiYlwwXHhi
N1wwXHhiY1wwXHhiZFwwXHhiZVwwXHhiZlwwJVwwJVwwJVwwJVwwJVwwJVwwJ1wwXHhjMVwwJ1ww
J1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhjMlwwXHhjM1wwXHhjNFwwXHhjNVwwXHhjNlww
XHhjNVwwXHhjN1wwJ1wwJ1wwJ1wwJ1wwJ1wwJ1wwXHhjOFwwJVwwJVwwJVwwJVwwJVwwJVwwXHhj
OVwwXHhjYVwwXHhjYlwwXHhjOVwwXHhjZVwwXHhjZlwwXHhkMFwwXHhkMVwwXHhjZlwwJVwwXHhk
NFwwXHhkNlwwXHhkOFwwXHhkOVwwXHhkYVwwXHhkN1wwXHhkOFwwXHhkYlwwXHhkNlwwJ1wwJ1ww
J1wwJ1wwJ1wwJ1wwXHhkN1wwXHhkY1wwXHhkZFwwXHhkZVwwXHhkZlwwXHhlMFwwXHhlMVwwXHhl
MlwwXHhlM1wwJ1wwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKFwwKVwwXHhlNFwwKVwwXHhl
NlwwXHhlN1wwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwKVwwXHhlOFwwXHhlOVwwXHhlYVww
XHhlYlwwXHhlY1wwXHhlYlwwXHhlZFwwKVwwKVwwKVwwKVwwKVwwKVwwKlwwKlwwKlwwKlwwKlww
KlwwKlwwKlwwKlwwKlwwXHhlZVwwXHhlZlwwXHhmMFwwXHhmMlwwXHhmM1wwXHhmNFwwXHhmNlww
KlwwKlwwKlwwKlwwKlwwKlwwXHhmN1wwXHhmOFwwXHhmYVwwKVwwKVwwKVwwKVwwKVwwKVwwXHgw
NFx4MDFceDA1XHgwMVx4MDZceDAxXHgwN1x4MDFcdFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVxu
XHgwMSlcMFxmXHgwMVx4MGVceDAxXHgwZlx4MDFceDExXHgwMVx4MTBceDAxXHJceDAxXHgxMFx4
MDEqXDAqXDAqXDAqXDAqXDAqXDBcblx4MDFceDE1XHgwMVx4MTJceDAxXHgxN1x4MDFcclx4MDFc
eDEyXHgwMVx4MTJceDAxXHgxOVx4MDFceDFhXHgwMSpcMCtcMCtcMCtcMCtcMCtcMCtcMCtcMCtc
MCtcMCtcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMCxcMC9cMFx4MWJceDAxL1wwL1wwL1ww
L1wwL1wwL1wwL1wwL1wwL1wwL1wwXHgxNlx4MDFceDE4XHgwMVx4MTZceDAxXHgxY1x4MDFceDE4
XHgwMVx4MWRceDAxXHgxZVx4MDFceDFkXHgwMVx4MWZceDAxIFx4MDEwXDAvXHgwMDBceDAwMFx4
MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBceDAwMFx4MDAwXHgwMDBcMFx4MTRceDAxT1wwXCJceDAx
T1wwT1wwT1wwIVx4MDFPXDAjXHgwMSFceDAxXHgxNFx4MDEwXDBPXDBPXDBPXDBPXDBPXDAmXHgw
MU9cME9cME9cMC9cMCdceDAxT1wwT1wwJ1x4MDEoXHgwMTFceDAwMVx4MDAxXHgwMDFceDAwMVx4
MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFcMClceDAxLFx4MDEtXHgwMS5ceDAxL1x4MDExXHgwMTBc
eDAwMVx4MDAxXHgwMDFceDAwMVx4MDAxXHgwMDFceDAwMlx4MDA1XHgwMTJceDAwMlx4MDAyXHgw
MDJceDAwMlx4MDAyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMFx4MDA2XHgwMThceDAxOVx4MDE6
XHgwMTtceDAxPFx4MDEyXHgwMDJceDAwMlx4MDAyXHgwMDJceDAwMlwwPlx4MDExXHgwMDFceDAw
MVx4MDAxXHgwMDFceDAwMVwwQlx4MDFBXHgwMURceDAxM1wwRVx4MDEzXHgwMDNcMEFceDAxM1x4
MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1wwRlx4MDEyXHgwMDJc
eDAwMlx4MDAyXHgwMDJceDAwMlx4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1wwSFx4MDFJ
XHgwMUxceDAxMlwwTVx4MDFOXHgwMVBceDAxUVx4MDFSXHgwMVRceDAxVVx4MDFWXHgwMVpceDAx
NFwwW1x4MDE0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4MDA0XDBd
XHgwMTNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFx4
MDA0XDBeXHgwMV9ceDAxYFx4MDEzXDBhXHgwMWJceDAxY1x4MDFoXHgwMWlceDAxalx4MDFrXHgw
MWxceDAxbVx4MDFuXHgwMW9ceDAxQFwwQFwwQFwwQFwwQFwwQFwwQFwwQFwwQFwwQFwwcFx4MDE0
XHgwMDRceDAwNFx4MDA0XHgwMDRceDAwNFwwQFwwQFwwQFwwQFwwQFwwQFwwcVx4MDFyXHgwMXNc
eDAxNFwwdFx4MDF2XHgwMXhceDAxeVx4MDF6XHgwMXtceDAxfFx4MDF9XHgwMX5ceDAxXHg3Zlx4
MDFceDgwXHgwMUFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMEFcMFx4ODFceDAxQFwwQFwwQFww
QFwwQFwwQFwwQVwwQVwwQVwwQVwwQVwwQVwwXHhkNVwwXHg4Mlx4MDFceGQ1XDBceGQ1XDBceGQ1
XDBceDgzXHgwMVx4ZDVcMFx4ODVceDAxXHg4Nlx4MDFceDg3XHgwMVx4ODhceDAxXHhkNVwwXHhk
NVwwXHhkNVwwXHhkNVwwXHhkNVwwXHg4OVx4MDFceGQ1XDBceGQ1XDBceGQ1XDBceGZmXDBceDhh
XHgwMVx4OGJceDAxXHhkNVwwXHg4Y1x4MDFceGZmXDBBXDBBXDBBXDBBXDBBXDBBXDBceDhkXHgw
MVx4OGVceDAxXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlwwXHhmZlww
XHhmZlwwXHhmZlwwXHg4Zlx4MDFceDkwXHgwMVx4OTFceDAxXHg5M1x4MDFceDk1XHgwMVx4OTZc
eDAxXHg5N1x4MDFceGZmXDBceGZmXDBceGZmXDBceGZmXDBceGZmXDBceGZmXDBcYlx4MDFceDk4
XHgwMVxiXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVxiXHgwMVx4OTlceDAxXHg5YVx4MDFceDliXHgw
MVx4MTNceDAxXGJceDAxXGJceDAxXGJceDAxXHg5ZFx4MDFceDllXHgwMVx4OWZceDAxXGJceDAx
XGJceDAxXGJceDAxXHgxM1x4MDFceGZmXDBceGE1XHgwMVx4YTZceDAxXHhhN1x4MDFceDEzXHgw
MVx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4ZmZcMFx4YThceDAxXHhhYVx4MDFceGFi
XHgwMVx4YWNceDAxXHhhZFx4MDFceGFlXHgwMVx4YWZceDAxXHhmZlwwXHhiMFx4MDFceGIxXHgw
MVx4YjJceDAxXHhiM1x4MDFceGI0XHgwMVx4ZmZcMFwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVww
XHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgw
MVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVww
XHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVwwXHgwMVx4YjVc
eDAxXHhiNlx4MDFcMFx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAx
XHgwMlx4MDFceDAyXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4YjdceDAxXHhiOVx4MDFc
eGJhXHgwMVx4YmJceDAxXHhiY1x4MDFceGJkXHgwMVx4YmZceDAxXHgwMlx4MDFceDAyXHgwMVx4
MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJceDAxd1x4MDFceGMwXHgwMXdceDAxd1x4MDF3XHgw
MXdceDAxd1x4MDFceGMxXHgwMVx4YzJceDAxXHhjM1x4MDFceGM0XHgwMXdceDAxd1x4MDF3XHgw
MVx4YzVceDAxd1x4MDFceGM2XHgwMXdceDAxd1x4MDF3XHgwMVx4YzdceDAxXHhjOFx4MDFceGNh
XHgwMVx4Y2JceDAxXHhjY1x4MDFceGNkXHgwMVx4MDJceDAxXHgwMlx4MDFceDAyXHgwMVx4MDJc
eDAxXHgwMlx4MDFceDAyXHgwMVx4Y2VceDAxXHhjZlx4MDFcMFx4MDFceGQwXHgwMVx4MDNceDAx
XHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFc
eDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4
MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgw
M1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAzXHgwMVx4MDNceDAxXHgwM1x4MDFceDAz
XHgwMVx4MDNceDAxXHgwM1x4MDFceGQxXHgwMVwwXHgwMVx4MDNceDAxXHhhMFx4MDFceGEwXHgw
MVx4YTBceDAxXHhhMFx4MDFceGEwXHgwMVx4YTBceDAxXHhhMFx4MDFceGEwXHgwMVx4YTBceDAx
XHhhMFx4MDFceGZmXDBceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTFceDAxXHhh
MVx4MDFceGExXHgwMVx4YTFceDAxXHhhMVx4MDFceGExXHgwMVx4YTJceDAxXHhhMlx4MDFceGEy
XHgwMVx4YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4YTJceDAxXHhhMlx4MDFceGEyXHgwMVx4YTJc
eDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4
MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGQzXHgwMVx4ZDRceDAxXHhkNVx4MDFceGQ2XHgw
MVx4ZDdceDAxXHhkOFx4MDFceGQ5XHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAx
XHhhM1x4MDFceGEzXHgwMVx4ZGFceDAxXHhkY1x4MDFceGRkXHgwMVx4MDNceDAxXHhkZlx4MDFc
eGUwXHgwMVx4ZTFceDAxXHhlMlx4MDFceGUzXHgwMVx4ZTRceDAxXHhlNVx4MDFceGU2XHgwMVx4
ZThceDAxXHhlOVx4MDFceGVhXHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhh
NFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhlY1x4MDFceGEz
XHgwMVx4YTNceDAxXHhhM1x4MDFceGEzXHgwMVx4YTNceDAxXHhhM1x4MDFceGE0XHgwMVx4YTRc
eDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceDAzXHgwMVx4YTJceDAxXHhhOVx4
MDFceGVkXHgwMVx4ZWVceDAxXHhmMFx4MDFceGE5XHgwMVx4ZjFceDAxXHhmMlx4MDFceGY0XHgw
MVx4YTlceDAxXHhmNVx4MDFceGY2XHgwMVx4ZjdceDAxXHhmOFx4MDFceGE5XHgwMVx4YTlceDAx
XHhhOVx4MDFceGE5XHgwMVx4ZjlceDAxXHhmYVx4MDFceGZiXHgwMVx4ZmNceDAxXHhmZVx4MDFc
eGZmXHgwMVwwXHgwMlx4YTRceDAxXHhhNFx4MDFceGE0XHgwMVx4YTRceDAxXHhhNFx4MDFceGE0
XHgwMVx4MDJceDAyXHgwNFx4MDJceDA1XHgwMlwwXHgwMVx4MDZceDAyXHgwN1x4MDJcdFx4MDJc
blx4MDJceDBiXHgwMlxyXHgwMlx4MGVceDAyXHgwZlx4MDJceDExXHgwMlx4MTJceDAyXHgxM1x4
MDJceDE1XHgwMlx4MTdceDAyXHRceDAyXHgxOFx4MDJceDE5XHgwMlx4MWJceDAyXHgxY1x4MDJc
eDFmXHgwMiBceDAyXHgxMVx4MDIhXHgwMiNceDAyJFx4MDIlXHgwMiZceDAyJ1x4MDIoXHgwMlx4
MThceDAyKlx4MDIrXHgwMi1ceDAyLlx4MDIvXHgwMiNceDAyI1x4MDIwXHgwMjJceDAyM1x4MDI0
XHgwMjVceDAyNlx4MDI4XHgwMjlceDAyOlx4MDI7XHgwMjxceDAyPVx4MDI/XHgwMkFceDAyQlx4
MDJEXHgwMkVceDAyRlx4MDJHXHgwMkhceDAySVx4MDJKXHgwMkxceDAyTVx4MDJOXHgwMkZceDAy
T1x4MDJMXHgwMlBceDAyUVx4MDJTXHgwMlRceDAyVVx4MDJWXHgwMlhceDAyWVx4MDJbXHgwMlxc
XHgwMl1ceDAyX1x4MDJgXHgwMmFceDAyYlx4MDJjXHgwMmRceDAyZVx4MDJmXHgwMmdceDAyaFx4
MDJpXHgwMmpceDAybFx4MDJtXHgwMm5ceDAyb1x4MDJwXHgwMnFceDAyXHgwM1x4MDFyXHgwMnNc
eDAydFx4MDJ1XHgwMnZceDAyeFx4MDJ5XHgwMnpceDAye1x4MDJ8XHgwMn1ceDAyflx4MDJceDdm
XHgwMlx4ODBceDAyfFx4MDJceDgxXHgwMlx4ODNceDAyXHg4NFx4MDJceDg1XHgwMlx4ODZceDAy
XHg4OFx4MDJceDg5XHgwMlx4OGFceDAyXHg4Ylx4MDJceDhjXHgwMlx4OGRceDAyXHg4ZVx4MDJc
eDhmXHgwMlx4OTFceDAyXHg5Mlx4MDJceDkzXHgwMlx4OTVceDAyXHg5Nlx4MDJceDk3XHgwMlx4
OThceDAyXHg5OVx4MDJceDlhXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5
Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5Ylx4MDJceDliXHgwMlx4OWJceDAyXHg5Y1x4MDJceDlj
XHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNceDAyXHg5Y1x4MDJceDljXHgwMlx4OWNc
eDAyXHg5Y1x4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4
MDJceDlkXHgwMlx4OWRceDAyXHg5ZFx4MDJceDlkXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgw
Mlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAy
XHhhMFx4MDJceGExXHgwMlx4YTJceDAyXHhhNFx4MDJceGE1XHgwMlx4YTZceDAyXHhhOVx4MDJc
eDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4MDJceDlmXHgwMlx4
OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5
Zlx4MDJceDlmXHgwMlx4YjBceDAyXHhmZlx4ZmZceGZmXHhmZlx4YWNceDAyXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHg5Zlx4MDJceDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4OWZc
eDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHg5ZVx4MDJceDllXHgwMlx4OWVceDAyXHg5ZVx4
MDJceDllXHgwMlx4OWVceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceDlkXHgwMlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4YWNceDAy
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4OWZceDAyXHg5Zlx4MDJc
eDlmXHgwMlx4OWZceDAyXHg5Zlx4MDJceDlmXHgwMlx4YThceDAyXHhmZlx4ZmZceGE4XHgwMlx4
YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhY1x4MDJceGZmXHhmZlx4YThceDAyXHhh
OFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgw
Mlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAy
XHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJc
eGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhmZlx4ZmZceGE4XHgwMlx4
ZmZceGZmXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhh
OFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4
XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThc
eDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4MDJceGE4XHgwMlx4YThceDAyXHhhOFx4
MDJceGE4XHgwMlx4ZmZceGZmXHhhOFx4MDJceGZmXHhmZlx4YThceDAyXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhhOVx4MDJceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4YWNceDAyXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYi
LAotICAvKiBsZXhfYmFzZV9jb2RlICovIiIsCi0gIC8qIGxleF9iYWNrdHJrX2NvZGUgKi8iIiwK
LSAgLyogbGV4X2RlZmF1bHRfY29kZSAqLyIiLAotICAvKiBsZXhfdHJhbnNfY29kZSAqLyIiLAot
ICAvKiBsZXhfY2hlY2tfY29kZSAqLyIiLAotICAvKiBsZXhfY29kZSAqLyIiCi1dOwotCi1mdW5j
dGlvbiB0b2tlbihsZXhidWYpIHsKLSAgdmFyIGxleGJ1ZiQxID0gbGV4YnVmOwotICB2YXIgX19f
b2NhbWxfbGV4X3N0YXRlID0gMDsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBfX29jYW1sX2xl
eF9zdGF0ZSA9IF9fX29jYW1sX2xleF9zdGF0ZTsKLSAgICB2YXIgX19vY2FtbF9sZXhfc3RhdGUk
MSA9IExleGluZy5lbmdpbmUoX19vY2FtbF9sZXhfdGFibGVzLCBfX29jYW1sX2xleF9zdGF0ZSwg
bGV4YnVmJDEpOwotICAgIGlmIChfX29jYW1sX2xleF9zdGF0ZSQxID4gMTQ0IHx8IF9fb2NhbWxf
bGV4X3N0YXRlJDEgPCAwKSB7Ci0gICAgICBDdXJyeS5fMShsZXhidWYkMVsvKiByZWZpbGxfYnVm
ZiAqLzBdLCBsZXhidWYkMSk7Ci0gICAgICBfX19vY2FtbF9sZXhfc3RhdGUgPSBfX29jYW1sX2xl
eF9zdGF0ZSQxOwotICAgICAgY29udGludWUgOwotICAgICAgCi0gICAgfQotICAgIGVsc2Ugewot
ICAgICAgc3dpdGNoIChfX29jYW1sX2xleF9zdGF0ZSQxKSB7Ci0gICAgICAgIGNhc2UgMCA6IAot
ICAgICAgICAgICAgcmV0dXJuIC8qIExQQVIgKi8yOwotICAgICAgICBjYXNlIDEgOiAKLSAgICAg
ICAgICAgIHJldHVybiAvKiBSUEFSICovMzsKLSAgICAgICAgY2FzZSAyIDogCi0gICAgICAgICAg
ICB2YXIgcyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3Rh
cnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKLSAgICAgICAgICAg
IHJldHVybiAvKiBOQVQgKi9CbG9jay5fXygwLCBbc10pOwotICAgICAgICBjYXNlIDMgOiAKLSAg
ICAgICAgICAgIHZhciBzJDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfY3Vycl9wb3MgKi81XSk7Ci0g
ICAgICAgICAgICByZXR1cm4gLyogSU5UICovQmxvY2suX18oMSwgW3MkMV0pOwotICAgICAgICBj
YXNlIDQgOiAKLSAgICAgICAgICAgIHZhciBzJDIgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYk
MSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfY3Vycl9w
b3MgKi81XSk7Ci0gICAgICAgICAgICByZXR1cm4gLyogRkxPQVQgKi9CbG9jay5fXygyLCBbcyQy
XSk7Ci0gICAgICAgIGNhc2UgNSA6IAotICAgICAgICAgICAgdmFyIHMkMyA9IExleGluZy5zdWJf
bGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQx
Wy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBURVhUICovQmxv
Y2suX18oMywgW3RleHQocyQzKV0pOwotICAgICAgICBjYXNlIDYgOiAKLSAgICAgICAgICAgIHJl
dHVybiBlcnJvcihsZXhidWYkMSwgInVuY2xvc2VkIHRleHQgbGl0ZXJhbCIpOwotICAgICAgICBj
YXNlIDcgOiAKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwgImlsbGVnYWwgY29u
dHJvbCBjaGFyYWN0ZXIgaW4gdGV4dCBsaXRlcmFsIik7Ci0gICAgICAgIGNhc2UgOCA6IAotICAg
ICAgICAgICAgcmV0dXJuIGVycm9yX25lc3QoTGV4aW5nLmxleGVtZV9lbmRfcChsZXhidWYkMSks
IGxleGJ1ZiQxLCAiaWxsZWdhbCBlc2NhcGUiKTsKLSAgICAgICAgY2FzZSA5IDogCi0gICAgICAg
ICAgICB2YXIgdCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsK
LSAgICAgICAgICAgIHJldHVybiAvKiBWQUxVRV9UWVBFICovQmxvY2suX18oNSwgW3ZhbHVlX3R5
cGUodCldKTsKLSAgICAgICAgY2FzZSAxMCA6IAotICAgICAgICAgICAgdmFyIHQkMSA9IExleGlu
Zy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHJldHVy
biAvKiBDT05TVCAqL0Jsb2NrLl9fKDEwLCBbbnVtb3AodCQxLCBmdW5jdGlvbiAocykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3VycnkuXzEoSTMyLm9mX3N0cmluZywg
c1svKiBpdCAqLzFdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVyYXRvcnMuaTMy
X2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBdKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBJMzIgKi9CbG9jay5fXygwLCBbbl0pCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSwg
ZnVuY3Rpb24gKHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbiA9IEN1cnJ5
Ll8xKEk2NC5vZl9zdHJpbmcsIHNbLyogaXQgKi8xXSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgT3BlcmF0b3JzLmk2NF9jb25zdChTb3VyY2UuJGF0JGF0KG4sIHNbLyogYXQgKi8wXSkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSTY0ICovQmxvY2suX18o
MSwgW25dKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIG4gPSBDdXJyeS5fMShGMzIub2Zfc3RyaW5nLCBzWy8qIGl0ICovMV0pOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9ycy5mMzJfY29uc3QoU291cmNlLiRhdCRh
dChuLCBzWy8qIGF0ICovMF0pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIEYzMiAqL0Jsb2NrLl9fKDIsIFtuXSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocykgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuID0gQ3VycnkuXzEoRjY0Lm9mX3N0cmluZywg
c1svKiBpdCAqLzFdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogdHVw
bGUgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVyYXRvcnMuZjY0
X2NvbnN0KFNvdXJjZS4kYXQkYXQobiwgc1svKiBhdCAqLzBdKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvKiBGNjQgKi9CbG9jay5fXygzLCBbbl0pCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSld
KTsKLSAgICAgICAgY2FzZSAxMSA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIEZVTkNSRUYgKi8w
OwotICAgICAgICBjYXNlIDEyIDogCi0gICAgICAgICAgICByZXR1cm4gLyogTVVUICovMTsKLSAg
ICAgICAgY2FzZSAxMyA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIE5PUCAqLzQ7Ci0gICAgICAg
IGNhc2UgMTQgOiAKLSAgICAgICAgICAgIHJldHVybiAvKiBVTlJFQUNIQUJMRSAqLzI0OwotICAg
ICAgICBjYXNlIDE1IDogCi0gICAgICAgICAgICByZXR1cm4gLyogRFJPUCAqLzU7Ci0gICAgICAg
IGNhc2UgMTYgOiAKLSAgICAgICAgICAgIHJldHVybiAvKiBCTE9DSyAqLzY7Ci0gICAgICAgIGNh
c2UgMTcgOiAKLSAgICAgICAgICAgIHJldHVybiAvKiBMT09QICovMTI7Ci0gICAgICAgIGNhc2Ug
MTggOiAKLSAgICAgICAgICAgIHJldHVybiAvKiBFTkQgKi83OwotICAgICAgICBjYXNlIDE5IDog
Ci0gICAgICAgICAgICByZXR1cm4gLyogQlIgKi8xMzsKLSAgICAgICAgY2FzZSAyMCA6IAotICAg
ICAgICAgICAgcmV0dXJuIC8qIEJSX0lGICovMTQ7Ci0gICAgICAgIGNhc2UgMjEgOiAKLSAgICAg
ICAgICAgIHJldHVybiAvKiBCUl9UQUJMRSAqLzE1OwotICAgICAgICBjYXNlIDIyIDogCi0gICAg
ICAgICAgICByZXR1cm4gLyogUkVUVVJOICovMTg7Ci0gICAgICAgIGNhc2UgMjMgOiAKLSAgICAg
ICAgICAgIHJldHVybiAvKiBJRiAqLzg7Ci0gICAgICAgIGNhc2UgMjQgOiAKLSAgICAgICAgICAg
IHJldHVybiAvKiBUSEVOICovOTsKLSAgICAgICAgY2FzZSAyNSA6IAotICAgICAgICAgICAgcmV0
dXJuIC8qIEVMU0UgKi8xMDsKLSAgICAgICAgY2FzZSAyNiA6IAotICAgICAgICAgICAgcmV0dXJu
IC8qIFNFTEVDVCAqLzExOwotICAgICAgICBjYXNlIDI3IDogCi0gICAgICAgICAgICByZXR1cm4g
LyogQ0FMTCAqLzE2OwotICAgICAgICBjYXNlIDI4IDogCi0gICAgICAgICAgICByZXR1cm4gLyog
Q0FMTF9JTkRJUkVDVCAqLzE3OwotICAgICAgICBjYXNlIDI5IDogCi0gICAgICAgICAgICByZXR1
cm4gLyogR0VUX0xPQ0FMICovMTk7Ci0gICAgICAgIGNhc2UgMzAgOiAKLSAgICAgICAgICAgIHJl
dHVybiAvKiBTRVRfTE9DQUwgKi8yMDsKLSAgICAgICAgY2FzZSAzMSA6IAotICAgICAgICAgICAg
cmV0dXJuIC8qIFRFRV9MT0NBTCAqLzIxOwotICAgICAgICBjYXNlIDMyIDogCi0gICAgICAgICAg
ICByZXR1cm4gLyogR0VUX0dMT0JBTCAqLzIyOwotICAgICAgICBjYXNlIDMzIDogCi0gICAgICAg
ICAgICByZXR1cm4gLyogU0VUX0dMT0JBTCAqLzIzOwotICAgICAgICBjYXNlIDM0IDogCi0gICAg
ICAgICAgICB2YXIgdCQyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8q
IGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8
IDApOwotICAgICAgICAgICAgcmV0dXJuIC8qIExPQUQgKi9CbG9jay5fXyg2LCBbKGZ1bmN0aW9u
KHQkMil7Ci0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhLCBvKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmcgPSBDdXJyeS5fMihvcHQsIGEs
IDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRpYWxfYXJnJDEgPSBDdXJyeS5f
MihvcHQsIGEsIDMpOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRpYWxfYXJnJDIg
PSBDdXJyeS5fMihvcHQsIGEsIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRp
YWxfYXJnJDMgPSBDdXJyeS5fMihvcHQsIGEsIDMpOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEN1cnJ5Ll8xKG51bW9wKHQkMiwgZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy5pMzJfbG9hZChw
YXJ0aWFsX2FyZywgcGFyYW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LCBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9sb2FkKHBhcnRpYWxfYXJnJDEsIHBhcmFtKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKHBhcmFt
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5mMzJfbG9hZChwYXJ0aWFsX2FyZyQyLCBwYXJhbSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjY0X2xvYWQocGFydGlh
bF9hcmckMywgcGFyYW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
KSwgbyk7Ci0gICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgIH0o
dCQyKSldKTsKLSAgICAgICAgY2FzZSAzNSA6IAotICAgICAgICAgICAgdmFyIHQkMyA9IExleGlu
Zy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHJldHVy
biAvKiBTVE9SRSAqL0Jsb2NrLl9fKDcsIFsoZnVuY3Rpb24odCQzKXsKLSAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIG8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBwYXJ0aWFsX2FyZyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMik7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB2YXIgcGFydGlhbF9hcmckMSA9IEN1cnJ5Ll8yKG9wdCwgYSwgMyk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMiA9IEN1cnJ5Ll8yKG9wdCwgYSwgMik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMyA9IEN1cnJ5Ll8yKG9w
dCwgYSwgMyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ3VycnkuXzEobnVtb3Ao
dCQzLCBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmkzMl9zdG9yZShwYXJ0aWFsX2FyZywgcGFyYW0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocGFyYW0p
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0
b3JzLmk2NF9zdG9yZShwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuZjMyX3N0b3JlKHBhcnRp
YWxfYXJnJDIsIHBhcmFtKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwgZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIE9wZXJhdG9ycy5mNjRfc3RvcmUocGFydGlhbF9hcmckMywgcGFyYW0pOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbyk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgIH0odCQzKSldKTsKLSAgICAgICAg
Y2FzZSAzNiA6IAotICAgICAgICAgICAgdmFyIHQkNCA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHZhciBzeiA9IExleGluZy5zdWJfbGV4
ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyA4IHwgMCwgbGV4
YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0gLSAyIHwgMCk7Ci0gICAgICAgICAgICB2YXIgcyQ0
ID0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhcihsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X2N1cnJf
cG9zICovNV0gLSAxIHwgMCk7Ci0gICAgICAgICAgICBpZiAodCQ0ID09PSAiaTMyIiAmJiBzeiA9
PT0gIjMyIikgewotICAgICAgICAgICAgICBlcnJvcihsZXhidWYkMSwgInVua25vd24gb3BlcmF0
b3IiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiAvKiBMT0FEICovQmxvY2su
X18oNiwgWyhmdW5jdGlvbih0JDQsc3oscyQ0KXsKLSAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24gKGEsIG8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRv
cCh0JDQsIEN1cnJ5Ll8xKG1lbXN6KHN6LCBDdXJyeS5fMShleHQocyQ0LCBPcGVyYXRvcnMuaTMy
X2xvYWQ4X3MsIE9wZXJhdG9ycy5pMzJfbG9hZDhfdSksIEN1cnJ5Ll8yKG9wdCwgYSwgMCkpLCBD
dXJyeS5fMShleHQocyQ0LCBPcGVyYXRvcnMuaTMyX2xvYWQxNl9zLCBPcGVyYXRvcnMuaTMyX2xv
YWQxNl91KSwgQ3VycnkuXzIob3B0LCBhLCAxKSksIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJhdG9ycy51bnJlYWNo
YWJsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLCBvKSwg
Q3VycnkuXzEobWVtc3ooc3osIEN1cnJ5Ll8xKGV4dChzJDQsIE9wZXJhdG9ycy5pNjRfbG9hZDhf
cywgT3BlcmF0b3JzLmk2NF9sb2FkOF91KSwgQ3VycnkuXzIob3B0LCBhLCAwKSksIEN1cnJ5Ll8x
KGV4dChzJDQsIE9wZXJhdG9ycy5pNjRfbG9hZDE2X3MsIE9wZXJhdG9ycy5pNjRfbG9hZDE2X3Up
LCBDdXJyeS5fMihvcHQsIGEsIDEpKSwgQ3VycnkuXzEoZXh0KHMkNCwgT3BlcmF0b3JzLmk2NF9s
b2FkMzJfcywgT3BlcmF0b3JzLmk2NF9sb2FkMzJfdSksIEN1cnJ5Ll8yKG9wdCwgYSwgMikpKSwg
bykpOwotICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICB9KHQk
NCxzeixzJDQpKV0pOwotICAgICAgICBjYXNlIDM3IDogCi0gICAgICAgICAgICB2YXIgdCQ1ID0g
TGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAgICAgICAgICAg
dmFyIHN6JDEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgOSB8IDAsIGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKLSAg
ICAgICAgICAgIGlmICh0JDUgPT09ICJpMzIiICYmIHN6JDEgPT09ICIzMiIpIHsKLSAgICAgICAg
ICAgICAgZXJyb3IobGV4YnVmJDEsICJ1bmtub3duIG9wZXJhdG9yIik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gLyogU1RPUkUgKi9CbG9jay5fXyg3LCBbKGZ1bmN0aW9uKHQk
NSxzeiQxKXsKLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGEsIG8pIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXJ0aWFsX2FyZyA9IEN1cnJ5Ll8yKG9wdCwg
YSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmckMSA9IEN1cnJ5
Ll8yKG9wdCwgYSwgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydGlhbF9hcmck
MiA9IEN1cnJ5Ll8yKG9wdCwgYSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFy
dGlhbF9hcmckMyA9IEN1cnJ5Ll8yKG9wdCwgYSwgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgcGFydGlhbF9hcmckNCA9IEN1cnJ5Ll8yKG9wdCwgYSwgMik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gaW50b3AodCQ1LCBDdXJyeS5fMShtZW1zeihzeiQxLCBmdW5jdGlv
biAocGFyYW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIE9wZXJhdG9ycy5pMzJfc3RvcmU4KHBhcnRpYWxfYXJnLCBwYXJhbSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAocGFyYW0pIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9wZXJh
dG9ycy5pMzJfc3RvcmUxNihwYXJ0aWFsX2FyZyQxLCBwYXJhbSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMudW5yZWFjaGFi
bGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSwgbyksIEN1
cnJ5Ll8xKG1lbXN6KHN6JDEsIGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT3BlcmF0b3JzLmk2NF9zdG9yZTgocGFy
dGlhbF9hcmckMiwgcGFyYW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwgZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMTYocGFydGlhbF9hcmck
MywgcGFyYW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwg
ZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBPcGVyYXRvcnMuaTY0X3N0b3JlMzIocGFydGlhbF9hcmckNCwgcGFyYW0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIG8pKTsKLSAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgfSh0JDUsc3okMSkp
XSk7Ci0gICAgICAgIGNhc2UgMzggOiAKLSAgICAgICAgICAgIHZhciBzJDUgPSBMZXhpbmcuc3Vi
X2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgNyB8IDAs
IGxleGJ1ZiQxWy8qIGxleF9jdXJyX3BvcyAqLzVdKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBP
RkZTRVRfRVFfTkFUICovQmxvY2suX18oOCwgW3MkNV0pOwotICAgICAgICBjYXNlIDM5IDogCi0g
ICAgICAgICAgICB2YXIgcyQ2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQx
Wy8qIGxleF9zdGFydF9wb3MgKi80XSArIDYgfCAwLCBsZXhidWYkMVsvKiBsZXhfY3Vycl9wb3Mg
Ki81XSk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQUxJR05fRVFfTkFUICovQmxvY2suX18oOSwg
W3MkNl0pOwotICAgICAgICBjYXNlIDQwIDogCi0gICAgICAgICAgICB2YXIgdCQ2ID0gTGV4aW5n
LnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAgICAgICAgICAgcmV0dXJu
IC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtpbnRvcCh0JDYsIE9wZXJhdG9ycy5pMzJfY2x6LCBP
cGVyYXRvcnMuaTY0X2NseildKTsKLSAgICAgICAgY2FzZSA0MSA6IAotICAgICAgICAgICAgdmFy
IHQkNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRf
cG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKLSAgICAg
ICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbaW50b3AodCQ3LCBPcGVyYXRv
cnMuaTMyX2N0eiwgT3BlcmF0b3JzLmk2NF9jdHopXSk7Ci0gICAgICAgIGNhc2UgNDIgOiAKLSAg
ICAgICAgICAgIHZhciB0JDggPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAz
IHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2ludG9w
KHQkOCwgT3BlcmF0b3JzLmkzMl9wb3BjbnQsIE9wZXJhdG9ycy5pNjRfcG9wY250KV0pOwotICAg
ICAgICBjYXNlIDQzIDogCi0gICAgICAgICAgICB2YXIgdCQ5ID0gTGV4aW5nLnN1Yl9sZXhlbWUo
bGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4
X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICov
QmxvY2suX18oMTEsIFtmbG9hdG9wKHQkOSwgT3BlcmF0b3JzLmYzMl9uZWcsIE9wZXJhdG9ycy5m
NjRfbmVnKV0pOwotICAgICAgICBjYXNlIDQ0IDogCi0gICAgICAgICAgICB2YXIgdCQxMCA9IExl
eGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0s
IGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHJl
dHVybiAvKiBVTkFSWSAqL0Jsb2NrLl9fKDExLCBbZmxvYXRvcCh0JDEwLCBPcGVyYXRvcnMuZjMy
X2FicywgT3BlcmF0b3JzLmY2NF9hYnMpXSk7Ci0gICAgICAgIGNhc2UgNDUgOiAKLSAgICAgICAg
ICAgIHZhciB0JDExID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OwotICAgICAgICAgICAgcmV0dXJuIC8qIFVOQVJZICovQmxvY2suX18oMTEsIFtmbG9hdG9wKHQk
MTEsIE9wZXJhdG9ycy5mMzJfc3FydCwgT3BlcmF0b3JzLmY2NF9zcXJ0KV0pOwotICAgICAgICBj
YXNlIDQ2IDogCi0gICAgICAgICAgICB2YXIgdCQxMiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBVTkFSWSAqL0Jsb2Nr
Ll9fKDExLCBbZmxvYXRvcCh0JDEyLCBPcGVyYXRvcnMuZjMyX2NlaWwsIE9wZXJhdG9ycy5mNjRf
Y2VpbCldKTsKLSAgICAgICAgY2FzZSA0NyA6IAotICAgICAgICAgICAgdmFyIHQkMTMgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3AodCQxMywgT3BlcmF0b3JzLmYzMl9m
bG9vciwgT3BlcmF0b3JzLmY2NF9mbG9vcildKTsKLSAgICAgICAgY2FzZSA0OCA6IAotICAgICAg
ICAgICAgdmFyIHQkMTQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwg
MCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9CbG9jay5fXygxMSwgW2Zsb2F0b3Ao
dCQxNCwgT3BlcmF0b3JzLmYzMl90cnVuYywgT3BlcmF0b3JzLmY2NF90cnVuYyldKTsKLSAgICAg
ICAgY2FzZSA0OSA6IAotICAgICAgICAgICAgdmFyIHQkMTUgPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogVU5BUlkgKi9C
bG9jay5fXygxMSwgW2Zsb2F0b3AodCQxNSwgT3BlcmF0b3JzLmYzMl9uZWFyZXN0LCBPcGVyYXRv
cnMuZjY0X25lYXJlc3QpXSk7Ci0gICAgICAgIGNhc2UgNTAgOiAKLSAgICAgICAgICAgIHZhciB0
JDE2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9w
b3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAgICAg
ICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQxNiwgT3BlcmF0
b3JzLmkzMl9hZGQsIE9wZXJhdG9ycy5pNjRfYWRkKV0pOwotICAgICAgICBjYXNlIDUxIDogCi0g
ICAgICAgICAgICB2YXIgdCQxNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYk
MVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSAr
IDMgfCAwKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9jay5fXygxMiwgW2lu
dG9wKHQkMTcsIE9wZXJhdG9ycy5pMzJfc3ViLCBPcGVyYXRvcnMuaTY0X3N1YildKTsKLSAgICAg
ICAgY2FzZSA1MiA6IAotICAgICAgICAgICAgdmFyIHQkMTggPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICov
QmxvY2suX18oMTIsIFtpbnRvcCh0JDE4LCBPcGVyYXRvcnMuaTMyX211bCwgT3BlcmF0b3JzLmk2
NF9tdWwpXSk7Ci0gICAgICAgIGNhc2UgNTMgOiAKLSAgICAgICAgICAgIHZhciB0JDE5ID0gTGV4
aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAgICAgICAgICAgcmV0
dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQxOSwgT3BlcmF0b3JzLmkzMl9k
aXZfcywgT3BlcmF0b3JzLmk2NF9kaXZfcyldKTsKLSAgICAgICAgY2FzZSA1NCA6IAotICAgICAg
ICAgICAgdmFyIHQkMjAgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyog
bGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwg
MCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0
JDIwLCBPcGVyYXRvcnMuaTMyX2Rpdl91LCBPcGVyYXRvcnMuaTY0X2Rpdl91KV0pOwotICAgICAg
ICBjYXNlIDU1IDogCi0gICAgICAgICAgICB2YXIgdCQyMSA9IExleGluZy5zdWJfbGV4ZW1lKGxl
eGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9z
dGFydF9wb3MgKi80XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9C
bG9jay5fXygxMiwgW2ludG9wKHQkMjEsIE9wZXJhdG9ycy5pMzJfcmVtX3MsIE9wZXJhdG9ycy5p
NjRfcmVtX3MpXSk7Ci0gICAgICAgIGNhc2UgNTYgOiAKLSAgICAgICAgICAgIHZhciB0JDIyID0g
TGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAgICAgICAgICAg
cmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyMiwgT3BlcmF0b3JzLmkz
Ml9yZW1fdSwgT3BlcmF0b3JzLmk2NF9yZW1fdSldKTsKLSAgICAgICAgY2FzZSA1NyA6IAotICAg
ICAgICAgICAgdmFyIHQkMjMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAz
IHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRv
cCh0JDIzLCBPcGVyYXRvcnMuaTMyX2FuZCwgT3BlcmF0b3JzLmk2NF9hbmQpXSk7Ci0gICAgICAg
IGNhc2UgNTggOiAKLSAgICAgICAgICAgIHZhciB0JDI0ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4
YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAgICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Js
b2NrLl9fKDEyLCBbaW50b3AodCQyNCwgT3BlcmF0b3JzLmkzMl9vciwgT3BlcmF0b3JzLmk2NF9v
cildKTsKLSAgICAgICAgY2FzZSA1OSA6IAotICAgICAgICAgICAgdmFyIHQkMjUgPSBMZXhpbmcu
c3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhi
dWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4g
LyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDI1LCBPcGVyYXRvcnMuaTMyX3hvciwg
T3BlcmF0b3JzLmk2NF94b3IpXSk7Ci0gICAgICAgIGNhc2UgNjAgOiAKLSAgICAgICAgICAgIHZh
ciB0JDI2ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAg
ICAgICAgICAgcmV0dXJuIC8qIEJJTkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyNiwgT3Bl
cmF0b3JzLmkzMl9zaGwsIE9wZXJhdG9ycy5pNjRfc2hsKV0pOwotICAgICAgICBjYXNlIDYxIDog
Ci0gICAgICAgICAgICB2YXIgdCQyNyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhi
dWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80
XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBCSU5BUlkgKi9CbG9jay5fXygxMiwg
W2ludG9wKHQkMjcsIE9wZXJhdG9ycy5pMzJfc2hyX3MsIE9wZXJhdG9ycy5pNjRfc2hyX3MpXSk7
Ci0gICAgICAgIGNhc2UgNjIgOiAKLSAgICAgICAgICAgIHZhciB0JDI4ID0gTGV4aW5nLnN1Yl9s
ZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAgICAgICAgICAgcmV0dXJuIC8qIEJJ
TkFSWSAqL0Jsb2NrLl9fKDEyLCBbaW50b3AodCQyOCwgT3BlcmF0b3JzLmkzMl9zaHJfdSwgT3Bl
cmF0b3JzLmk2NF9zaHJfdSldKTsKLSAgICAgICAgY2FzZSA2MyA6IAotICAgICAgICAgICAgdmFy
IHQkMjkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0
X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAg
ICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtpbnRvcCh0JDI5LCBPcGVy
YXRvcnMuaTMyX3JvdGwsIE9wZXJhdG9ycy5pNjRfcm90bCldKTsKLSAgICAgICAgY2FzZSA2NCA6
IAotICAgICAgICAgICAgdmFyIHQkMzAgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICov
NF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIs
IFtpbnRvcCh0JDMwLCBPcGVyYXRvcnMuaTMyX3JvdHIsIE9wZXJhdG9ycy5pNjRfcm90cildKTsK
LSAgICAgICAgY2FzZSA2NSA6IAotICAgICAgICAgICAgdmFyIHQkMzEgPSBMZXhpbmcuc3ViX2xl
eGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQklO
QVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzEsIE9wZXJhdG9ycy5mMzJfYWRkLCBPcGVy
YXRvcnMuZjY0X2FkZCldKTsKLSAgICAgICAgY2FzZSA2NiA6IAotICAgICAgICAgICAgdmFyIHQk
MzIgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzIsIE9wZXJh
dG9ycy5mMzJfc3ViLCBPcGVyYXRvcnMuZjY0X3N1YildKTsKLSAgICAgICAgY2FzZSA2NyA6IAot
ICAgICAgICAgICAgdmFyIHQkMzMgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVm
JDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0g
KyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtm
bG9hdG9wKHQkMzMsIE9wZXJhdG9ycy5mMzJfbXVsLCBPcGVyYXRvcnMuZjY0X211bCldKTsKLSAg
ICAgICAgY2FzZSA2OCA6IAotICAgICAgICAgICAgdmFyIHQkMzQgPSBMZXhpbmcuc3ViX2xleGVt
ZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBs
ZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQklOQVJZ
ICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzQsIE9wZXJhdG9ycy5mMzJfZGl2LCBPcGVyYXRv
cnMuZjY0X2RpdildKTsKLSAgICAgICAgY2FzZSA2OSA6IAotICAgICAgICAgICAgdmFyIHQkMzUg
PSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAg
ICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzUsIE9wZXJhdG9y
cy5mMzJfbWluLCBPcGVyYXRvcnMuZjY0X21pbildKTsKLSAgICAgICAgY2FzZSA3MCA6IAotICAg
ICAgICAgICAgdmFyIHQkMzYgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAz
IHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICovQmxvY2suX18oMTIsIFtmbG9h
dG9wKHQkMzYsIE9wZXJhdG9ycy5mMzJfbWF4LCBPcGVyYXRvcnMuZjY0X21heCldKTsKLSAgICAg
ICAgY2FzZSA3MSA6IAotICAgICAgICAgICAgdmFyIHQkMzcgPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQklOQVJZICov
QmxvY2suX18oMTIsIFtmbG9hdG9wKHQkMzcsIE9wZXJhdG9ycy5mMzJfY29weXNpZ24sIE9wZXJh
dG9ycy5mNjRfY29weXNpZ24pXSk7Ci0gICAgICAgIGNhc2UgNzIgOiAKLSAgICAgICAgICAgIHZh
ciB0JDM4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAg
ICAgICAgICAgcmV0dXJuIC8qIFRFU1QgKi9CbG9jay5fXygxNSwgW2ludG9wKHQkMzgsIE9wZXJh
dG9ycy5pMzJfZXF6LCBPcGVyYXRvcnMuaTY0X2VxeildKTsKLSAgICAgICAgY2FzZSA3MyA6IAot
ICAgICAgICAgICAgdmFyIHQkMzkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVm
JDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0g
KyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBb
aW50b3AodCQzOSwgT3BlcmF0b3JzLmkzMl9lcSwgT3BlcmF0b3JzLmk2NF9lcSldKTsKLSAgICAg
ICAgY2FzZSA3NCA6IAotICAgICAgICAgICAgdmFyIHQkNDAgPSBMZXhpbmcuc3ViX2xleGVtZShs
ZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhf
c3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAq
L0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0MCwgT3BlcmF0b3JzLmkzMl9uZSwgT3BlcmF0b3JzLmk2
NF9uZSldKTsKLSAgICAgICAgY2FzZSA3NSA6IAotICAgICAgICAgICAgdmFyIHQkNDEgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0MSwgT3BlcmF0b3JzLmkzMl9s
dF9zLCBPcGVyYXRvcnMuaTY0X2x0X3MpXSk7Ci0gICAgICAgIGNhc2UgNzYgOiAKLSAgICAgICAg
ICAgIHZhciB0JDQyID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OwotICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2ludG9wKHQk
NDIsIE9wZXJhdG9ycy5pMzJfbHRfdSwgT3BlcmF0b3JzLmk2NF9sdF91KV0pOwotICAgICAgICBj
YXNlIDc3IDogCi0gICAgICAgICAgICB2YXIgdCQ0MyA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBDT01QQVJFICovQmxv
Y2suX18oMTMsIFtpbnRvcCh0JDQzLCBPcGVyYXRvcnMuaTMyX2xlX3MsIE9wZXJhdG9ycy5pNjRf
bGVfcyldKTsKLSAgICAgICAgY2FzZSA3OCA6IAotICAgICAgICAgICAgdmFyIHQkNDQgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0NCwgT3BlcmF0b3JzLmkzMl9s
ZV91LCBPcGVyYXRvcnMuaTY0X2xlX3UpXSk7Ci0gICAgICAgIGNhc2UgNzkgOiAKLSAgICAgICAg
ICAgIHZhciB0JDQ1ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OwotICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2ludG9wKHQk
NDUsIE9wZXJhdG9ycy5pMzJfZ3RfcywgT3BlcmF0b3JzLmk2NF9ndF9zKV0pOwotICAgICAgICBj
YXNlIDgwIDogCi0gICAgICAgICAgICB2YXIgdCQ0NiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBDT01QQVJFICovQmxv
Y2suX18oMTMsIFtpbnRvcCh0JDQ2LCBPcGVyYXRvcnMuaTMyX2d0X3UsIE9wZXJhdG9ycy5pNjRf
Z3RfdSldKTsKLSAgICAgICAgY2FzZSA4MSA6IAotICAgICAgICAgICAgdmFyIHQkNDcgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbaW50b3AodCQ0NywgT3BlcmF0b3JzLmkzMl9n
ZV9zLCBPcGVyYXRvcnMuaTY0X2dlX3MpXSk7Ci0gICAgICAgIGNhc2UgODIgOiAKLSAgICAgICAg
ICAgIHZhciB0JDQ4ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDAp
OwotICAgICAgICAgICAgcmV0dXJuIC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2ludG9wKHQk
NDgsIE9wZXJhdG9ycy5pMzJfZ2VfdSwgT3BlcmF0b3JzLmk2NF9nZV91KV0pOwotICAgICAgICBj
YXNlIDgzIDogCi0gICAgICAgICAgICB2YXIgdCQ0OSA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1
ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFy
dF9wb3MgKi80XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBDT01QQVJFICovQmxv
Y2suX18oMTMsIFtmbG9hdG9wKHQkNDksIE9wZXJhdG9ycy5mMzJfZXEsIE9wZXJhdG9ycy5mNjRf
ZXEpXSk7Ci0gICAgICAgIGNhc2UgODQgOiAKLSAgICAgICAgICAgIHZhciB0JDUwID0gTGV4aW5n
LnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4
YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAgICAgICAgICAgcmV0dXJu
IC8qIENPTVBBUkUgKi9CbG9jay5fXygxMywgW2Zsb2F0b3AodCQ1MCwgT3BlcmF0b3JzLmYzMl9u
ZSwgT3BlcmF0b3JzLmY2NF9uZSldKTsKLSAgICAgICAgY2FzZSA4NSA6IAotICAgICAgICAgICAg
dmFyIHQkNTEgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0
YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0g
ICAgICAgICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbZmxvYXRvcCh0JDUx
LCBPcGVyYXRvcnMuZjMyX2x0LCBPcGVyYXRvcnMuZjY0X2x0KV0pOwotICAgICAgICBjYXNlIDg2
IDogCi0gICAgICAgICAgICB2YXIgdCQ1MiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3Mg
Ki80XSArIDMgfCAwKTsKLSAgICAgICAgICAgIHJldHVybiAvKiBDT01QQVJFICovQmxvY2suX18o
MTMsIFtmbG9hdG9wKHQkNTIsIE9wZXJhdG9ycy5mMzJfbGUsIE9wZXJhdG9ycy5mNjRfbGUpXSk7
Ci0gICAgICAgIGNhc2UgODcgOiAKLSAgICAgICAgICAgIHZhciB0JDUzID0gTGV4aW5nLnN1Yl9s
ZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdICsgMyB8IDApOwotICAgICAgICAgICAgcmV0dXJuIC8qIENP
TVBBUkUgKi9CbG9jay5fXygxMywgW2Zsb2F0b3AodCQ1MywgT3BlcmF0b3JzLmYzMl9ndCwgT3Bl
cmF0b3JzLmY2NF9ndCldKTsKLSAgICAgICAgY2FzZSA4OCA6IAotICAgICAgICAgICAgdmFyIHQk
NTQgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm4gLyogQ09NUEFSRSAqL0Jsb2NrLl9fKDEzLCBbZmxvYXRvcCh0JDU0LCBPcGVy
YXRvcnMuZjMyX2dlLCBPcGVyYXRvcnMuZjY0X2dlKV0pOwotICAgICAgICBjYXNlIDg5IDogCi0g
ICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbT3BlcmF0b3JzLmkz
Ml93cmFwX2k2NF0pOwotICAgICAgICBjYXNlIDkwIDogCi0gICAgICAgICAgICByZXR1cm4gLyog
Q09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbT3BlcmF0b3JzLmk2NF9leHRlbmRfc19pMzJdKTsKLSAg
ICAgICAgY2FzZSA5MSA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5f
XygxNCwgW09wZXJhdG9ycy5pNjRfZXh0ZW5kX3VfaTMyXSk7Ci0gICAgICAgIGNhc2UgOTIgOiAK
LSAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtPcGVyYXRvcnMu
ZjMyX2RlbW90ZV9mNjRdKTsKLSAgICAgICAgY2FzZSA5MyA6IAotICAgICAgICAgICAgcmV0dXJu
IC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5mNjRfcHJvbW90ZV9mMzJdKTsK
LSAgICAgICAgY2FzZSA5NCA6IAotICAgICAgICAgICAgdmFyIHQkNTUgPSBMZXhpbmcuc3ViX2xl
eGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQ09O
VkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1NSwgT3BlcmF0b3JzLmkzMl90cnVuY19zX2Yz
MiwgT3BlcmF0b3JzLmk2NF90cnVuY19zX2YzMildKTsKLSAgICAgICAgY2FzZSA5NSA6IAotICAg
ICAgICAgICAgdmFyIHQkNTYgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFb
LyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAz
IHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50
b3AodCQ1NiwgT3BlcmF0b3JzLmkzMl90cnVuY191X2YzMiwgT3BlcmF0b3JzLmk2NF90cnVuY191
X2YzMildKTsKLSAgICAgICAgY2FzZSA5NiA6IAotICAgICAgICAgICAgdmFyIHQkNTcgPSBMZXhp
bmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBs
ZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbaW50b3AodCQ1NywgT3BlcmF0b3JzLmkzMl90
cnVuY19zX2Y2NCwgT3BlcmF0b3JzLmk2NF90cnVuY19zX2Y2NCldKTsKLSAgICAgICAgY2FzZSA5
NyA6IAotICAgICAgICAgICAgdmFyIHQkNTggPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwg
bGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9z
ICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9f
KDE0LCBbaW50b3AodCQ1OCwgT3BlcmF0b3JzLmkzMl90cnVuY191X2Y2NCwgT3BlcmF0b3JzLmk2
NF90cnVuY191X2Y2NCldKTsKLSAgICAgICAgY2FzZSA5OCA6IAotICAgICAgICAgICAgdmFyIHQk
NTkgPSBMZXhpbmcuc3ViX2xleGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3Bv
cyAqLzRdLCBsZXhidWYkMVsvKiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0LCBbZmxvYXRvcCh0JDU5LCBPcGVy
YXRvcnMuZjMyX2NvbnZlcnRfc19pMzIsIE9wZXJhdG9ycy5mNjRfY29udmVydF9zX2kzMildKTsK
LSAgICAgICAgY2FzZSA5OSA6IAotICAgICAgICAgICAgdmFyIHQkNjAgPSBMZXhpbmcuc3ViX2xl
eGVtZShsZXhidWYkMSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAqLzRdLCBsZXhidWYkMVsv
KiBsZXhfc3RhcnRfcG9zICovNF0gKyAzIHwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gLyogQ09O
VkVSVCAqL0Jsb2NrLl9fKDE0LCBbZmxvYXRvcCh0JDYwLCBPcGVyYXRvcnMuZjMyX2NvbnZlcnRf
dV9pMzIsIE9wZXJhdG9ycy5mNjRfY29udmVydF91X2kzMildKTsKLSAgICAgICAgY2FzZSAxMDAg
OiAKLSAgICAgICAgICAgIHZhciB0JDYxID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxl
eGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdICsgMyB8IDApOwotICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygx
NCwgW2Zsb2F0b3AodCQ2MSwgT3BlcmF0b3JzLmYzMl9jb252ZXJ0X3NfaTY0LCBPcGVyYXRvcnMu
ZjY0X2NvbnZlcnRfc19pNjQpXSk7Ci0gICAgICAgIGNhc2UgMTAxIDogCi0gICAgICAgICAgICB2
YXIgdCQ2MiA9IExleGluZy5zdWJfbGV4ZW1lKGxleGJ1ZiQxLCBsZXhidWYkMVsvKiBsZXhfc3Rh
cnRfcG9zICovNF0sIGxleGJ1ZiQxWy8qIGxleF9zdGFydF9wb3MgKi80XSArIDMgfCAwKTsKLSAg
ICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtmbG9hdG9wKHQkNjIs
IE9wZXJhdG9ycy5mMzJfY29udmVydF91X2k2NCwgT3BlcmF0b3JzLmY2NF9jb252ZXJ0X3VfaTY0
KV0pOwotICAgICAgICBjYXNlIDEwMiA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIENPTlZFUlQg
Ki9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5mMzJfcmVpbnRlcnByZXRfaTMyXSk7Ci0gICAgICAg
IGNhc2UgMTAzIDogCi0gICAgICAgICAgICByZXR1cm4gLyogQ09OVkVSVCAqL0Jsb2NrLl9fKDE0
LCBbT3BlcmF0b3JzLmY2NF9yZWludGVycHJldF9pNjRdKTsKLSAgICAgICAgY2FzZSAxMDQgOiAK
LSAgICAgICAgICAgIHJldHVybiAvKiBDT05WRVJUICovQmxvY2suX18oMTQsIFtPcGVyYXRvcnMu
aTMyX3JlaW50ZXJwcmV0X2YzMl0pOwotICAgICAgICBjYXNlIDEwNSA6IAotICAgICAgICAgICAg
cmV0dXJuIC8qIENPTlZFUlQgKi9CbG9jay5fXygxNCwgW09wZXJhdG9ycy5pNjRfcmVpbnRlcnBy
ZXRfZjY0XSk7Ci0gICAgICAgIGNhc2UgMTA2IDogCi0gICAgICAgICAgICByZXR1cm4gLyogQ1VS
UkVOVF9NRU1PUlkgKi8yNTsKLSAgICAgICAgY2FzZSAxMDcgOiAKLSAgICAgICAgICAgIHJldHVy
biAvKiBHUk9XX01FTU9SWSAqLzI2OwotICAgICAgICBjYXNlIDEwOCA6IAotICAgICAgICAgICAg
cmV0dXJuIC8qIFRZUEUgKi8yOTsKLSAgICAgICAgY2FzZSAxMDkgOiAKLSAgICAgICAgICAgIHJl
dHVybiAvKiBGVU5DICovMjc7Ci0gICAgICAgIGNhc2UgMTEwIDogCi0gICAgICAgICAgICByZXR1
cm4gLyogU1RBUlQgKi8yODsKLSAgICAgICAgY2FzZSAxMTEgOiAKLSAgICAgICAgICAgIHJldHVy
biAvKiBQQVJBTSAqLzMwOwotICAgICAgICBjYXNlIDExMiA6IAotICAgICAgICAgICAgcmV0dXJu
IC8qIFJFU1VMVCAqLzMxOwotICAgICAgICBjYXNlIDExMyA6IAotICAgICAgICAgICAgcmV0dXJu
IC8qIExPQ0FMICovMzI7Ci0gICAgICAgIGNhc2UgMTE0IDogCi0gICAgICAgICAgICByZXR1cm4g
LyogR0xPQkFMICovMzM7Ci0gICAgICAgIGNhc2UgMTE1IDogCi0gICAgICAgICAgICByZXR1cm4g
LyogTU9EVUxFICovMzQ7Ci0gICAgICAgIGNhc2UgMTE2IDogCi0gICAgICAgICAgICByZXR1cm4g
LyogVEFCTEUgKi8zNTsKLSAgICAgICAgY2FzZSAxMTcgOiAKLSAgICAgICAgICAgIHJldHVybiAv
KiBNRU1PUlkgKi8zNzsKLSAgICAgICAgY2FzZSAxMTggOiAKLSAgICAgICAgICAgIHJldHVybiAv
KiBFTEVNICovMzY7Ci0gICAgICAgIGNhc2UgMTE5IDogCi0gICAgICAgICAgICByZXR1cm4gLyog
REFUQSAqLzM4OwotICAgICAgICBjYXNlIDEyMCA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIE9G
RlNFVCAqLzM5OwotICAgICAgICBjYXNlIDEyMSA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIElN
UE9SVCAqLzQwOwotICAgICAgICBjYXNlIDEyMiA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIEVY
UE9SVCAqLzQxOwotICAgICAgICBjYXNlIDEyMyA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIFND
UklQVCAqLzQyOwotICAgICAgICBjYXNlIDEyNCA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIFJF
R0lTVEVSICovNDM7Ci0gICAgICAgIGNhc2UgMTI1IDogCi0gICAgICAgICAgICByZXR1cm4gLyog
SU5WT0tFICovNDQ7Ci0gICAgICAgIGNhc2UgMTI2IDogCi0gICAgICAgICAgICByZXR1cm4gLyog
R0VUICovNDU7Ci0gICAgICAgIGNhc2UgMTI3IDogCi0gICAgICAgICAgICByZXR1cm4gLyogQVNT
RVJUX01BTEZPUk1FRCAqLzQ2OwotICAgICAgICBjYXNlIDEyOCA6IAotICAgICAgICAgICAgcmV0
dXJuIC8qIEFTU0VSVF9JTlZBTElEICovNDc7Ci0gICAgICAgIGNhc2UgMTI5IDogCi0gICAgICAg
ICAgICByZXR1cm4gLyogQVNTRVJUX1NPRlRfSU5WQUxJRCAqLzQ4OwotICAgICAgICBjYXNlIDEz
MCA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIEFTU0VSVF9VTkxJTktBQkxFICovNDk7Ci0gICAg
ICAgIGNhc2UgMTMxIDogCi0gICAgICAgICAgICByZXR1cm4gLyogQVNTRVJUX1JFVFVSTiAqLzUw
OwotICAgICAgICBjYXNlIDEzMiA6IAotICAgICAgICAgICAgcmV0dXJuIC8qIEFTU0VSVF9SRVRV
Uk5fTkFOICovNTE7Ci0gICAgICAgIGNhc2UgMTMzIDogCi0gICAgICAgICAgICByZXR1cm4gLyog
QVNTRVJUX1RSQVAgKi81MjsKLSAgICAgICAgY2FzZSAxMzQgOiAKLSAgICAgICAgICAgIHJldHVy
biAvKiBBU1NFUlRfRVhIQVVTVElPTiAqLzUzOwotICAgICAgICBjYXNlIDEzNSA6IAotICAgICAg
ICAgICAgcmV0dXJuIC8qIElOUFVUICovNTQ7Ci0gICAgICAgIGNhc2UgMTM2IDogCi0gICAgICAg
ICAgICByZXR1cm4gLyogT1VUUFVUICovNTU7Ci0gICAgICAgIGNhc2UgMTM3IDogCi0gICAgICAg
ICAgICB2YXIgcyQ3ID0gTGV4aW5nLnN1Yl9sZXhlbWUobGV4YnVmJDEsIGxleGJ1ZiQxWy8qIGxl
eF9zdGFydF9wb3MgKi80XSwgbGV4YnVmJDFbLyogbGV4X2N1cnJfcG9zICovNV0pOwotICAgICAg
ICAgICAgcmV0dXJuIC8qIFZBUiAqL0Jsb2NrLl9fKDQsIFtzJDddKTsKLSAgICAgICAgY2FzZSAx
NDAgOiAKLSAgICAgICAgICAgIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjKExleGluZy5sZXhlbWVf
c3RhcnRfcChsZXhidWYkMSksIGxleGJ1ZiQxLCA2ODQpOwotICAgICAgICAgICAgcmV0dXJuIHRv
a2VuKGxleGJ1ZiQxKTsKLSAgICAgICAgY2FzZSAxNDEgOiAKLSAgICAgICAgICAgIHJldHVybiB0
b2tlbihsZXhidWYkMSk7Ci0gICAgICAgIGNhc2UgMTM5IDogCi0gICAgICAgIGNhc2UgMTQyIDog
Ci0gICAgICAgICAgICBMZXhpbmcubmV3X2xpbmUobGV4YnVmJDEpOwotICAgICAgICAgICAgcmV0
dXJuIHRva2VuKGxleGJ1ZiQxKTsKLSAgICAgICAgY2FzZSAxMzggOiAKLSAgICAgICAgY2FzZSAx
NDMgOiAKLSAgICAgICAgICAgIHJldHVybiAvKiBFT0YgKi81NjsKLSAgICAgICAgY2FzZSAxNDQg
OiAKLSAgICAgICAgICAgIHJldHVybiBlcnJvcihsZXhidWYkMSwgInVua25vd24gb3BlcmF0b3Ii
KTsKLSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICB9OwotfQotCi1mdW5jdGlvbiBfX29jYW1s
X2xleF9jb21tZW50X3JlYyhzdGFydCwgbGV4YnVmLCBfX19vY2FtbF9sZXhfc3RhdGUpIHsKLSAg
d2hpbGUodHJ1ZSkgewotICAgIHZhciBfX29jYW1sX2xleF9zdGF0ZSA9IF9fX29jYW1sX2xleF9z
dGF0ZTsKLSAgICB2YXIgX19vY2FtbF9sZXhfc3RhdGUkMSA9IExleGluZy5lbmdpbmUoX19vY2Ft
bF9sZXhfdGFibGVzLCBfX29jYW1sX2xleF9zdGF0ZSwgbGV4YnVmKTsKLSAgICBpZiAoX19vY2Ft
bF9sZXhfc3RhdGUkMSA+IDQgfHwgX19vY2FtbF9sZXhfc3RhdGUkMSA8IDApIHsKLSAgICAgIEN1
cnJ5Ll8xKGxleGJ1ZlsvKiByZWZpbGxfYnVmZiAqLzBdLCBsZXhidWYpOwotICAgICAgX19fb2Nh
bWxfbGV4X3N0YXRlID0gX19vY2FtbF9sZXhfc3RhdGUkMTsKLSAgICAgIGNvbnRpbnVlIDsKLSAg
ICAgIAotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHN3aXRjaCAoX19vY2FtbF9sZXhfc3RhdGUk
MSkgewotICAgICAgICBjYXNlIDAgOiAKLSAgICAgICAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0g
ICAgICAgIGNhc2UgMSA6IAotICAgICAgICAgICAgX19vY2FtbF9sZXhfY29tbWVudF9yZWMoTGV4
aW5nLmxleGVtZV9zdGFydF9wKGxleGJ1ZiksIGxleGJ1ZiwgNjg0KTsKLSAgICAgICAgICAgIF9f
X29jYW1sX2xleF9zdGF0ZSA9IDY4NDsKLSAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAg
ICAgIGNhc2UgMiA6IAotICAgICAgICAgICAgTGV4aW5nLm5ld19saW5lKGxleGJ1Zik7Ci0gICAg
ICAgICAgICBfX19vY2FtbF9sZXhfc3RhdGUgPSA2ODQ7Ci0gICAgICAgICAgICBjb250aW51ZSA7
Ci0gICAgICAgICAgICBjYXNlIDMgOiAKLSAgICAgICAgICAgIHJldHVybiBlcnJvcl9uZXN0KHN0
YXJ0LCBsZXhidWYsICJ1bmNsb3NlZCBjb21tZW50Iik7Ci0gICAgICAgIGNhc2UgNCA6IAotICAg
ICAgICAgICAgX19fb2NhbWxfbGV4X3N0YXRlID0gNjg0OwotICAgICAgICAgICAgY29udGludWUg
OwotICAgICAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICB9OwotfQotCi1leHBvcnRzLmNvbnZl
cnRfcG9zID0gY29udmVydF9wb3M7Ci1leHBvcnRzLnRva2VuICAgICAgID0gdG9rZW47Ci0vKiBG
MzIgTm90IGEgcHVyZSBtb2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBsZXhlci5qcyAvLy8vLy8v
LwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydsZXhpbmcnXSA9
IGZ1bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBs
ZXhpbmcuanMgLy8vLy8vLy8KLSd1c2Ugc3RyaWN0JzsKLQotdmFyIFN5cyAgICAgICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiLi9zeXMiKTsKLXZhciBCeXRlcyAgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoIi4vYnl0ZXMiKTsKLXZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9IHJlcXVp
cmUoIi4vY3VycnkiKTsKLXZhciBDYW1sX2J5dGVzICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4v
Y2FtbF9ieXRlcyIpOwotdmFyIENhbWxfbGV4ZXIgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9j
YW1sX2xleGVyIik7Ci12YXIgUGVydmFzaXZlcyAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3Bl
cnZhc2l2ZXMiKTsKLXZhciBDYW1sX3N0cmluZyAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2Ft
bF9zdHJpbmciKTsKLXZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoIi4vY2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMiKTsKLQotZnVuY3Rpb24gZW5naW5lKHRibCwgc3RhdGUsIGJ1
ZikgewotICB2YXIgcmVzdWx0ID0gQ2FtbF9sZXhlci5jYW1sX2xleF9lbmdpbmUodGJsLCBzdGF0
ZSwgYnVmKTsKLSAgaWYgKHJlc3VsdCA+PSAwKSB7Ci0gICAgYnVmWy8qIGxleF9zdGFydF9wICov
MTBdID0gYnVmWy8qIGxleF9jdXJyX3AgKi8xMV07Ci0gICAgdmFyIGluaXQgPSBidWZbLyogbGV4
X2N1cnJfcCAqLzExXTsKLSAgICBidWZbLyogbGV4X2N1cnJfcCAqLzExXSA9IC8qIHJlY29yZCAq
L1sKLSAgICAgIC8qIHBvc19mbmFtZSAqL2luaXRbLyogcG9zX2ZuYW1lICovMF0sCi0gICAgICAv
KiBwb3NfbG51bSAqL2luaXRbLyogcG9zX2xudW0gKi8xXSwKLSAgICAgIC8qIHBvc19ib2wgKi9p
bml0Wy8qIHBvc19ib2wgKi8yXSwKLSAgICAgIC8qIHBvc19jbnVtICovYnVmWy8qIGxleF9hYnNf
cG9zICovM10gKyBidWZbLyogbGV4X2N1cnJfcG9zICovNV0gfCAwCi0gICAgXTsKLSAgfQotICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1mdW5jdGlvbiBuZXdfZW5naW5lKHRibCwgc3RhdGUsIGJ1Zikg
ewotICB2YXIgcmVzdWx0ID0gQ2FtbF9sZXhlci5jYW1sX25ld19sZXhfZW5naW5lKHRibCwgc3Rh
dGUsIGJ1Zik7Ci0gIGlmIChyZXN1bHQgPj0gMCkgewotICAgIGJ1ZlsvKiBsZXhfc3RhcnRfcCAq
LzEwXSA9IGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOwotICAgIHZhciBpbml0ID0gYnVmWy8qIGxl
eF9jdXJyX3AgKi8xMV07Ci0gICAgYnVmWy8qIGxleF9jdXJyX3AgKi8xMV0gPSAvKiByZWNvcmQg
Ki9bCi0gICAgICAvKiBwb3NfZm5hbWUgKi9pbml0Wy8qIHBvc19mbmFtZSAqLzBdLAotICAgICAg
LyogcG9zX2xudW0gKi9pbml0Wy8qIHBvc19sbnVtICovMV0sCi0gICAgICAvKiBwb3NfYm9sICov
aW5pdFsvKiBwb3NfYm9sICovMl0sCi0gICAgICAvKiBwb3NfY251bSAqL2J1ZlsvKiBsZXhfYWJz
X3BvcyAqLzNdICsgYnVmWy8qIGxleF9jdXJyX3BvcyAqLzVdIHwgMAotICAgIF07Ci0gIH0KLSAg
cmV0dXJuIHJlc3VsdDsKLX0KLQotdmFyIHplcm9fcG9zID0gLyogcmVjb3JkICovWwotICAvKiBw
b3NfZm5hbWUgKi8iIiwKLSAgLyogcG9zX2xudW0gKi8xLAotICAvKiBwb3NfYm9sICovMCwKLSAg
LyogcG9zX2NudW0gKi8wCi1dOwotCi1mdW5jdGlvbiBmcm9tX2Z1bmN0aW9uKGYpIHsKLSAgdmFy
IHBhcnRpYWxfYXJnID0gbmV3IEFycmF5KDUxMik7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0g
ICAgICAgICAgLyogcmVmaWxsX2J1ZmYgKi9mdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAg
IHZhciByZWFkX2Z1biA9IGY7Ci0gICAgICAgICAgICB2YXIgYXV4X2J1ZmZlciA9IHBhcnRpYWxf
YXJnOwotICAgICAgICAgICAgdmFyIGxleGJ1ZiA9IHBhcmFtOwotICAgICAgICAgICAgdmFyIHJl
YWQgPSBDdXJyeS5fMihyZWFkX2Z1biwgYXV4X2J1ZmZlciwgYXV4X2J1ZmZlci5sZW5ndGgpOwot
ICAgICAgICAgICAgdmFyIG4gPSByZWFkID4gMCA/IHJlYWQgOiAobGV4YnVmWy8qIGxleF9lb2Zf
cmVhY2hlZCAqLzhdID0gLyogdHJ1ZSAqLzEsIDApOwotICAgICAgICAgICAgaWYgKChsZXhidWZb
LyogbGV4X2J1ZmZlcl9sZW4gKi8yXSArIG4gfCAwKSA+IGxleGJ1ZlsvKiBsZXhfYnVmZmVyICov
MV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgIGlmICgoKGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xl
biAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSB8IDApICsgbiB8IDApIDw9IGxl
eGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0ubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgQnl0ZXMu
YmxpdChsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCBsZXhidWZbLyogbGV4X3N0YXJ0X3BvcyAq
LzRdLCBsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCAwLCBsZXhidWZbLyogbGV4X2J1ZmZlcl9s
ZW4gKi8yXSAtIGxleGJ1ZlsvKiBsZXhfc3RhcnRfcG9zICovNF0gfCAwKTsKLSAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YXIgbmV3bGVuID0g
UGVydmFzaXZlcy5taW4oKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0ubGVuZ3RoIDw8IDEpLCBT
eXMubWF4X3N0cmluZ19sZW5ndGgpOwotICAgICAgICAgICAgICAgIGlmICgoKGxleGJ1ZlsvKiBs
ZXhfYnVmZmVyX2xlbiAqLzJdIC0gbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSB8IDApICsg
biB8IDApID4gbmV3bGVuKSB7Ci0gICAgICAgICAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAg
ICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIkxleGluZy5sZXhfcmVmaWxsOiBjYW5ub3QgZ3JvdyBidWZmZXIiCi0g
ICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgdmFyIG5ld2J1ZiA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhuZXdsZW4pOwot
ICAgICAgICAgICAgICAgIEJ5dGVzLmJsaXQobGV4YnVmWy8qIGxleF9idWZmZXIgKi8xXSwgbGV4
YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSwgbmV3YnVmLCAwLCBsZXhidWZbLyogbGV4X2J1ZmZl
cl9sZW4gKi8yXSAtIGxleGJ1ZlsvKiBsZXhfc3RhcnRfcG9zICovNF0gfCAwKTsKLSAgICAgICAg
ICAgICAgICBsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdID0gbmV3YnVmOwotICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgIHZhciBzID0gbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XTsK
LSAgICAgICAgICAgICAgbGV4YnVmWy8qIGxleF9hYnNfcG9zICovM10gPSBsZXhidWZbLyogbGV4
X2Fic19wb3MgKi8zXSArIHMgfCAwOwotICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X2N1cnJf
cG9zICovNV0gPSBsZXhidWZbLyogbGV4X2N1cnJfcG9zICovNV0gLSBzIHwgMDsKLSAgICAgICAg
ICAgICAgbGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSA9IDA7Ci0gICAgICAgICAgICAgIGxl
eGJ1ZlsvKiBsZXhfbGFzdF9wb3MgKi82XSA9IGxleGJ1ZlsvKiBsZXhfbGFzdF9wb3MgKi82XSAt
IHMgfCAwOwotICAgICAgICAgICAgICBsZXhidWZbLyogbGV4X2J1ZmZlcl9sZW4gKi8yXSA9IGxl
eGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdIC0gcyB8IDA7Ci0gICAgICAgICAgICAgIHZhciB0
ID0gbGV4YnVmWy8qIGxleF9tZW0gKi85XTsKLSAgICAgICAgICAgICAgZm9yKHZhciBpID0gMCAs
aV9maW5pc2ggPSB0Lmxlbmd0aCAtIDEgfCAwOyBpIDw9IGlfZmluaXNoOyArK2kpewotICAgICAg
ICAgICAgICAgIHZhciB2ID0gdFtpXTsKLSAgICAgICAgICAgICAgICBpZiAodiA+PSAwKSB7Ci0g
ICAgICAgICAgICAgICAgICB0W2ldID0gdiAtIHMgfCAwOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgQnl0ZXMuYmxpdChhdXhfYnVmZmVyLCAwLCBsZXhidWZbLyogbGV4X2J1ZmZlciAqLzFdLCBs
ZXhidWZbLyogbGV4X2J1ZmZlcl9sZW4gKi8yXSwgbik7Ci0gICAgICAgICAgICBsZXhidWZbLyog
bGV4X2J1ZmZlcl9sZW4gKi8yXSA9IGxleGJ1ZlsvKiBsZXhfYnVmZmVyX2xlbiAqLzJdICsgbiB8
IDA7Ci0gICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgICAgICAgIH0sCi0gICAgICAg
ICAgLyogbGV4X2J1ZmZlciAqL25ldyBBcnJheSgxMDI0KSwKLSAgICAgICAgICAvKiBsZXhfYnVm
ZmVyX2xlbiAqLzAsCi0gICAgICAgICAgLyogbGV4X2Fic19wb3MgKi8wLAotICAgICAgICAgIC8q
IGxleF9zdGFydF9wb3MgKi8wLAotICAgICAgICAgIC8qIGxleF9jdXJyX3BvcyAqLzAsCi0gICAg
ICAgICAgLyogbGV4X2xhc3RfcG9zICovMCwKLSAgICAgICAgICAvKiBsZXhfbGFzdF9hY3Rpb24g
Ki8wLAotICAgICAgICAgIC8qIGxleF9lb2ZfcmVhY2hlZCA6IGZhbHNlICovMCwKLSAgICAgICAg
ICAvKiBsZXhfbWVtIDogaW50IGFycmF5ICovW10sCi0gICAgICAgICAgLyogbGV4X3N0YXJ0X3Ag
Ki96ZXJvX3BvcywKLSAgICAgICAgICAvKiBsZXhfY3Vycl9wICovemVyb19wb3MKLSAgICAgICAg
XTsKLX0KLQotZnVuY3Rpb24gZnJvbV9jaGFubmVsKGljKSB7Ci0gIHJldHVybiBmcm9tX2Z1bmN0
aW9uKGZ1bmN0aW9uIChidWYsIG4pIHsKLSAgICAgICAgICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMu
aW5wdXQoaWMsIGJ1ZiwgMCwgbik7Ci0gICAgICAgICAgICB9KTsKLX0KLQotZnVuY3Rpb24gZnJv
bV9zdHJpbmcocykgewotICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgIC8qIHJlZmls
bF9idWZmICovZnVuY3Rpb24gKGxleGJ1ZikgewotICAgICAgICAgICAgbGV4YnVmWy8qIGxleF9l
b2ZfcmVhY2hlZCAqLzhdID0gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgICByZXR1cm4gLyogKCkg
Ki8wOwotICAgICAgICAgIH0sCi0gICAgICAgICAgLyogbGV4X2J1ZmZlciAqL0J5dGVzLm9mX3N0
cmluZyhzKSwKLSAgICAgICAgICAvKiBsZXhfYnVmZmVyX2xlbiAqL3MubGVuZ3RoLAotICAgICAg
ICAgIC8qIGxleF9hYnNfcG9zICovMCwKLSAgICAgICAgICAvKiBsZXhfc3RhcnRfcG9zICovMCwK
LSAgICAgICAgICAvKiBsZXhfY3Vycl9wb3MgKi8wLAotICAgICAgICAgIC8qIGxleF9sYXN0X3Bv
cyAqLzAsCi0gICAgICAgICAgLyogbGV4X2xhc3RfYWN0aW9uICovMCwKLSAgICAgICAgICAvKiBs
ZXhfZW9mX3JlYWNoZWQgOiB0cnVlICovMSwKLSAgICAgICAgICAvKiBsZXhfbWVtIDogaW50IGFy
cmF5ICovW10sCi0gICAgICAgICAgLyogbGV4X3N0YXJ0X3AgKi96ZXJvX3BvcywKLSAgICAgICAg
ICAvKiBsZXhfY3Vycl9wICovemVyb19wb3MKLSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24gbGV4
ZW1lKGxleGJ1ZikgewotICB2YXIgbGVuID0gbGV4YnVmWy8qIGxleF9jdXJyX3BvcyAqLzVdIC0g
bGV4YnVmWy8qIGxleF9zdGFydF9wb3MgKi80XSB8IDA7Ci0gIHJldHVybiBCeXRlcy5zdWJfc3Ry
aW5nKGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGxleGJ1ZlsvKiBsZXhfc3RhcnRfcG9zICov
NF0sIGxlbik7Ci19Ci0KLWZ1bmN0aW9uIHN1Yl9sZXhlbWUobGV4YnVmLCBpMSwgaTIpIHsKLSAg
dmFyIGxlbiA9IGkyIC0gaTEgfCAwOwotICByZXR1cm4gQnl0ZXMuc3ViX3N0cmluZyhsZXhidWZb
LyogbGV4X2J1ZmZlciAqLzFdLCBpMSwgbGVuKTsKLX0KLQotZnVuY3Rpb24gc3ViX2xleGVtZV9v
cHQobGV4YnVmLCBpMSwgaTIpIHsKLSAgaWYgKGkxID49IDApIHsKLSAgICB2YXIgbGVuID0gaTIg
LSBpMSB8IDA7Ci0gICAgcmV0dXJuIC8qIFNvbWUgKi9bQnl0ZXMuc3ViX3N0cmluZyhsZXhidWZb
LyogbGV4X2J1ZmZlciAqLzFdLCBpMSwgbGVuKV07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJu
IC8qIE5vbmUgKi8wOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHN1Yl9sZXhlbWVfY2hhcihsZXhidWYs
IGkpIHsKLSAgcmV0dXJuIENhbWxfYnl0ZXMuZ2V0KGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0s
IGkpOwotfQotCi1mdW5jdGlvbiBzdWJfbGV4ZW1lX2NoYXJfb3B0KGxleGJ1ZiwgaSkgewotICBp
ZiAoaSA+PSAwKSB7Ci0gICAgcmV0dXJuIC8qIFNvbWUgKi9bQ2FtbF9ieXRlcy5nZXQobGV4YnVm
Wy8qIGxleF9idWZmZXIgKi8xXSwgaSldOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAvKiBO
b25lICovMDsKLSAgfQotfQotCi1mdW5jdGlvbiBsZXhlbWVfY2hhcihsZXhidWYsIGkpIHsKLSAg
cmV0dXJuIENhbWxfYnl0ZXMuZ2V0KGxleGJ1ZlsvKiBsZXhfYnVmZmVyICovMV0sIGxleGJ1Zlsv
KiBsZXhfc3RhcnRfcG9zICovNF0gKyBpIHwgMCk7Ci19Ci0KLWZ1bmN0aW9uIGxleGVtZV9zdGFy
dChsZXhidWYpIHsKLSAgcmV0dXJuIGxleGJ1ZlsvKiBsZXhfc3RhcnRfcCAqLzEwXVsvKiBwb3Nf
Y251bSAqLzNdOwotfQotCi1mdW5jdGlvbiBsZXhlbWVfZW5kKGxleGJ1ZikgewotICByZXR1cm4g
bGV4YnVmWy8qIGxleF9jdXJyX3AgKi8xMV1bLyogcG9zX2NudW0gKi8zXTsKLX0KLQotZnVuY3Rp
b24gbGV4ZW1lX3N0YXJ0X3AobGV4YnVmKSB7Ci0gIHJldHVybiBsZXhidWZbLyogbGV4X3N0YXJ0
X3AgKi8xMF07Ci19Ci0KLWZ1bmN0aW9uIGxleGVtZV9lbmRfcChsZXhidWYpIHsKLSAgcmV0dXJu
IGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOwotfQotCi1mdW5jdGlvbiBuZXdfbGluZShsZXhi
dWYpIHsKLSAgdmFyIGxjcCA9IGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOwotICBsZXhidWZb
LyogbGV4X2N1cnJfcCAqLzExXSA9IC8qIHJlY29yZCAqL1sKLSAgICAvKiBwb3NfZm5hbWUgKi9s
Y3BbLyogcG9zX2ZuYW1lICovMF0sCi0gICAgLyogcG9zX2xudW0gKi9sY3BbLyogcG9zX2xudW0g
Ki8xXSArIDEgfCAwLAotICAgIC8qIHBvc19ib2wgKi9sY3BbLyogcG9zX2NudW0gKi8zXSwKLSAg
ICAvKiBwb3NfY251bSAqL2xjcFsvKiBwb3NfY251bSAqLzNdCi0gIF07Ci0gIHJldHVybiAvKiAo
KSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIGZsdXNoX2lucHV0KGxiKSB7Ci0gIGxiWy8qIGxleF9jdXJy
X3BvcyAqLzVdID0gMDsKLSAgbGJbLyogbGV4X2Fic19wb3MgKi8zXSA9IDA7Ci0gIHZhciBpbml0
ID0gbGJbLyogbGV4X2N1cnJfcCAqLzExXTsKLSAgbGJbLyogbGV4X2N1cnJfcCAqLzExXSA9IC8q
IHJlY29yZCAqL1sKLSAgICAvKiBwb3NfZm5hbWUgKi9pbml0Wy8qIHBvc19mbmFtZSAqLzBdLAot
ICAgIC8qIHBvc19sbnVtICovaW5pdFsvKiBwb3NfbG51bSAqLzFdLAotICAgIC8qIHBvc19ib2wg
Ki9pbml0Wy8qIHBvc19ib2wgKi8yXSwKLSAgICAvKiBwb3NfY251bSAqLzAKLSAgXTsKLSAgbGJb
LyogbGV4X2J1ZmZlcl9sZW4gKi8yXSA9IDA7Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0KLXZh
ciBkdW1teV9wb3MgPSAvKiByZWNvcmQgKi9bCi0gIC8qIHBvc19mbmFtZSAqLyIiLAotICAvKiBw
b3NfbG51bSAqLzAsCi0gIC8qIHBvc19ib2wgKi8wLAotICAvKiBwb3NfY251bSAqLy0xCi1dOwot
Ci1leHBvcnRzLmR1bW15X3BvcyAgICAgICAgICAgPSBkdW1teV9wb3M7Ci1leHBvcnRzLmZyb21f
Y2hhbm5lbCAgICAgICAgPSBmcm9tX2NoYW5uZWw7Ci1leHBvcnRzLmZyb21fc3RyaW5nICAgICAg
ICAgPSBmcm9tX3N0cmluZzsKLWV4cG9ydHMuZnJvbV9mdW5jdGlvbiAgICAgICA9IGZyb21fZnVu
Y3Rpb247Ci1leHBvcnRzLmxleGVtZSAgICAgICAgICAgICAgPSBsZXhlbWU7Ci1leHBvcnRzLmxl
eGVtZV9jaGFyICAgICAgICAgPSBsZXhlbWVfY2hhcjsKLWV4cG9ydHMubGV4ZW1lX3N0YXJ0ICAg
ICAgICA9IGxleGVtZV9zdGFydDsKLWV4cG9ydHMubGV4ZW1lX2VuZCAgICAgICAgICA9IGxleGVt
ZV9lbmQ7Ci1leHBvcnRzLmxleGVtZV9zdGFydF9wICAgICAgPSBsZXhlbWVfc3RhcnRfcDsKLWV4
cG9ydHMubGV4ZW1lX2VuZF9wICAgICAgICA9IGxleGVtZV9lbmRfcDsKLWV4cG9ydHMubmV3X2xp
bmUgICAgICAgICAgICA9IG5ld19saW5lOwotZXhwb3J0cy5mbHVzaF9pbnB1dCAgICAgICAgID0g
Zmx1c2hfaW5wdXQ7Ci1leHBvcnRzLnN1Yl9sZXhlbWUgICAgICAgICAgPSBzdWJfbGV4ZW1lOwot
ZXhwb3J0cy5zdWJfbGV4ZW1lX29wdCAgICAgID0gc3ViX2xleGVtZV9vcHQ7Ci1leHBvcnRzLnN1
Yl9sZXhlbWVfY2hhciAgICAgPSBzdWJfbGV4ZW1lX2NoYXI7Ci1leHBvcnRzLnN1Yl9sZXhlbWVf
Y2hhcl9vcHQgPSBzdWJfbGV4ZW1lX2NoYXJfb3B0OwotZXhwb3J0cy5lbmdpbmUgICAgICAgICAg
ICAgID0gZW5naW5lOwotZXhwb3J0cy5uZXdfZW5naW5lICAgICAgICAgID0gbmV3X2VuZ2luZTsK
LS8qIE5vIHNpZGUgZWZmZWN0ICovCi0vLy8vLy8vLyBlbmQgb2YgbGV4aW5nLmpzIC8vLy8vLy8v
Ci0gICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ2xpYiddID0gZnVu
Y3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8vLy8vLy8vIHN0YXJ0IG9mIGxpYi5q
cyAvLy8vLy8vLwotLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwg
UExFQVNFIEVESVQgV0lUSCBDQVJFCi0ndXNlIHN0cmljdCc7Ci0KLXZhciAkJEFycmF5ICAgICAg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9hcnJheSIpOwotdmFyIEN1
cnJ5ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5
Iik7Ci12YXIgSW50MzIgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvaW50MzIiKTsKLXZhciAkJFN0cmluZyAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9zdHJpbmciKTsKLXZhciBCaWdhcnJheSAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9iaWdhcnJheSIpOwotdmFyIENhbWxfb2JqICAg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2JqIik7Ci12
YXIgQ2FtbF9hcnJheSAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
Y2FtbF9hcnJheSIpOwotdmFyIENhbWxfaW50NjQgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMt
cGxhdGZvcm0vbGliL2pzL2NhbWxfaW50NjQiKTsKLXZhciBQZXJ2YXNpdmVzICAgICAgICAgICAg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7Ci12YXIgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9idWls
dGluX2V4Y2VwdGlvbnMiKTsKLQotZnVuY3Rpb24gcmVwZWF0KF9uLCBmLCB4KSB7Ci0gIHdoaWxl
KHRydWUpIHsKLSAgICB2YXIgbiA9IF9uOwotICAgIGlmIChuKSB7Ci0gICAgICBDdXJyeS5fMShm
LCB4KTsKLSAgICAgIF9uID0gbiAtIDEgfCAwOwotICAgICAgY29udGludWUgOwotICAgICAgCi0g
ICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICB9Ci0gIH07Ci19
Ci0KLXZhciBGdW4gPSAvKiBtb2R1bGUgKi9bLyogcmVwZWF0ICovcmVwZWF0XTsKLQotZnVuY3Rp
b24gbWFrZShuLCB4KSB7Ci0gIGlmIChuKSB7Ci0gICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAg
ICAgICAgeCwKLSAgICAgICAgICAgIG1ha2UobiAtIDEgfCAwLCB4KQotICAgICAgICAgIF07Ci0g
IH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIFtdICovMDsKLSAgfQotfQotCi1mdW5jdGlvbiB0
YWJsZSRwcmltZShpLCBuLCBmKSB7Ci0gIGlmIChpID09PSBuKSB7Ci0gICAgcmV0dXJuIC8qIFtd
ICovMDsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICBD
dXJyeS5fMShmLCBpKSwKLSAgICAgICAgICAgIHRhYmxlJHByaW1lKGkgKyAxIHwgMCwgbiwgZikK
LSAgICAgICAgICBdOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHRhYmxlKG4sIGYpIHsKLSAgcmV0dXJu
IHRhYmxlJHByaW1lKDAsIG4sIGYpOwotfQotCi1mdW5jdGlvbiB0YWtlKG4sIHhzKSB7Ci0gIGlm
IChuICE9PSAwKSB7Ci0gICAgaWYgKHhzKSB7Ci0gICAgICBpZiAobiA+IDApIHsKLSAgICAgICAg
cmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgIHhzWzBdLAotICAgICAgICAgICAgICAg
IHRha2UobiAtIDEgfCAwLCB4c1sxXSkKLSAgICAgICAgICAgICAgXTsKLSAgICAgIH0KLSAgICAg
IGVsc2UgewotICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgidGFrZSIpOwotICAg
ICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRo
KCJ0YWtlIik7Ci0gICAgfQotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAvKiBbXSAqLzA7Ci0g
IH0KLX0KLQotZnVuY3Rpb24gZHJvcChfbiwgX3hzKSB7Ci0gIHdoaWxlKHRydWUpIHsKLSAgICB2
YXIgeHMgPSBfeHM7Ci0gICAgdmFyIG4gPSBfbjsKLSAgICBpZiAobiAhPT0gMCkgewotICAgICAg
aWYgKHhzKSB7Ci0gICAgICAgIGlmIChuID4gMCkgewotICAgICAgICAgIF94cyA9IHhzWzFdOwot
ICAgICAgICAgIF9uID0gbiAtIDEgfCAwOwotICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAg
ICAKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gUGVydmFzaXZl
cy5mYWlsd2l0aCgiZHJvcCIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAg
ICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImRyb3AiKTsKLSAgICAgIH0KLSAgICB9
Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4geHM7Ci0gICAgfQotICB9OwotfQotCi1mdW5jdGlv
biBsYXN0KF9wYXJhbSkgewotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIHBhcmFtID0gX3BhcmFt
OwotICAgIGlmIChwYXJhbSkgewotICAgICAgdmFyIHhzID0gcGFyYW1bMV07Ci0gICAgICBpZiAo
eHMpIHsKLSAgICAgICAgX3BhcmFtID0geHM7Ci0gICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAg
Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtWzBdOwotICAgICAg
fQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJs
YXN0Iik7Ci0gICAgfQotICB9OwotfQotCi1mdW5jdGlvbiBzcGxpdF9sYXN0KHBhcmFtKSB7Ci0g
IGlmIChwYXJhbSkgewotICAgIHZhciB4cyA9IHBhcmFtWzFdOwotICAgIHZhciB4ID0gcGFyYW1b
MF07Ci0gICAgaWYgKHhzKSB7Ci0gICAgICB2YXIgbWF0Y2ggPSBzcGxpdF9sYXN0KHhzKTsKLSAg
ICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAg
ICAgICAgICAgeCwKLSAgICAgICAgICAgICAgICBtYXRjaFswXQotICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICBtYXRjaFsxXQotICAgICAgICAgICAgXTsKLSAgICB9Ci0gICAgZWxzZSB7
Ci0gICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgIC8qIFtdICovMCwKLSAg
ICAgICAgICAgICAgeAotICAgICAgICAgICAgXTsKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAg
cmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoInNwbGl0X2xhc3QiKTsKLSAgfQotfQotCi1mdW5j
dGlvbiBpbmRleF9vZih4LCB4cykgewotICB2YXIgeCQxID0geDsKLSAgdmFyIF94cyA9IHhzOwot
ICB2YXIgX2kgPSAwOwotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIGkgPSBfaTsKLSAgICB2YXIg
eHMkMSA9IF94czsKLSAgICBpZiAoeHMkMSkgewotICAgICAgaWYgKENhbWxfb2JqLmNhbWxfZXF1
YWwoeCQxLCB4cyQxWzBdKSkgewotICAgICAgICByZXR1cm4gLyogU29tZSAqL1tpXTsKLSAgICAg
IH0KLSAgICAgIGVsc2UgewotICAgICAgICBfaSA9IGkgKyAxIHwgMDsKLSAgICAgICAgX3hzID0g
eHMkMVsxXTsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0g
ICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogTm9uZSAqLzA7Ci0gICAgfQotICB9OwotfQotCi1m
dW5jdGlvbiBsZW5ndGgoeHMpIHsKLSAgdmFyIF94cyA9IHhzOwotICB2YXIgX24gPSAwOwotICB3
aGlsZSh0cnVlKSB7Ci0gICAgdmFyIG4gPSBfbjsKLSAgICB2YXIgeHMkMSA9IF94czsKLSAgICBp
ZiAoeHMkMSkgewotICAgICAgaWYgKG4gPCBJbnQzMi5tYXhfaW50KSB7Ci0gICAgICAgIF9uID0g
biArIDEgfCAwOwotICAgICAgICBfeHMgPSB4cyQxWzFdOwotICAgICAgICBjb250aW51ZSA7Ci0g
ICAgICAgIAotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBQZXJ2YXNpdmVz
LmZhaWx3aXRoKCJsZW5ndGgiKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBy
ZXR1cm4gbjsKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIG50aChfeHMsIF9uKSB7Ci0gIHdo
aWxlKHRydWUpIHsKLSAgICB2YXIgbiA9IF9uOwotICAgIHZhciB4cyA9IF94czsKLSAgICBpZiAo
biAhPT0gMCkgewotICAgICAgaWYgKHhzKSB7Ci0gICAgICAgIGlmIChuID4gMCkgewotICAgICAg
ICAgIF9uID0gbiAtIDEgfCAwOwotICAgICAgICAgIF94cyA9IHhzWzFdOwotICAgICAgICAgIGNv
bnRpbnVlIDsKLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgibnRoIik7Ci0gICAgICAgIH0KLSAgICAgIH0K
LSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4gUGVydmFzaXZlcy5mYWlsd2l0aCgibnRoIik7
Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKHhzKSB7Ci0gICAgICByZXR1cm4geHNbMF07
Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgoIm50
aCIpOwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gdGFrZSQxKG4sIHhzKSB7Ci0gIGlmIChu
ICE9PSAwKSB7Ci0gICAgaWYgKHhzKSB7Ci0gICAgICBpZiAobiA+IDApIHsKLSAgICAgICAgcmV0
dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgIHhzWzBdLAotICAgICAgICAgICAgICAgIHRh
a2UkMShuIC0gMSB8IDAsIHhzWzFdKQotICAgICAgICAgICAgICBdOwotICAgICAgfQotICAgICAg
ZWxzZSB7Ci0gICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJ0YWtlIik7Ci0gICAg
ICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuZmFpbHdpdGgo
InRha2UiKTsKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIFtdICovMDsKLSAg
fQotfQotCi1mdW5jdGlvbiBkcm9wJDEoX24sIF94cykgewotICB3aGlsZSh0cnVlKSB7Ci0gICAg
dmFyIHhzID0gX3hzOwotICAgIHZhciBuID0gX247Ci0gICAgaWYgKG4gIT09IDApIHsKLSAgICAg
IGlmICh4cykgewotICAgICAgICBpZiAobiA+IDApIHsKLSAgICAgICAgICBfeHMgPSB4c1sxXTsK
LSAgICAgICAgICBfbiA9IG4gLSAxIHwgMDsKLSAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAg
ICAgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIFBlcnZhc2l2
ZXMuZmFpbHdpdGgoImRyb3AiKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0g
ICAgICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJkcm9wIik7Ci0gICAgICB9Ci0gICAg
fQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIHhzOwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rp
b24gbWFrZSQxKG4sIHgpIHsKLSAgaWYgKG4gPCAwIHx8IENhbWxfaW50NjQuZ3QoQ2FtbF9pbnQ2
NC5vZl9pbnQzMihuKSwgQ2FtbF9pbnQ2NC5vZl9pbnQzMihQZXJ2YXNpdmVzLm1heF9pbnQpKSkg
ewotICAgIHRocm93IFsKLSAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlk
X2FyZ3VtZW50LAotICAgICAgICAgICJBcnJheTMyLm1ha2UiCi0gICAgICAgIF07Ci0gIH0KLSAg
cmV0dXJuIENhbWxfYXJyYXkuY2FtbF9tYWtlX3ZlY3QobiwgeCk7Ci19Ci0KLWZ1bmN0aW9uIGxl
bmd0aCQxKGEpIHsKLSAgcmV0dXJuIGEubGVuZ3RoOwotfQotCi1mdW5jdGlvbiBpbmRleF9vZl9p
bnQzMihpKSB7Ci0gIGlmIChpIDwgMCB8fCBDYW1sX2ludDY0Lmd0KENhbWxfaW50NjQub2ZfaW50
MzIoaSksIENhbWxfaW50NjQub2ZfaW50MzIoUGVydmFzaXZlcy5tYXhfaW50KSkpIHsKLSAgICBy
ZXR1cm4gLTE7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIGk7Ci0gIH0KLX0KLQotZnVuY3Rp
b24gZ2V0KGEsIGkpIHsKLSAgcmV0dXJuIGFbaW5kZXhfb2ZfaW50MzIoaSldOwotfQotCi1mdW5j
dGlvbiBzZXQoYSwgaSwgeCkgewotICBhW2luZGV4X29mX2ludDMyKGkpXSA9IHg7Ci0gIHJldHVy
biAvKiAoKSAqLzA7Ci19Ci0KLWZ1bmN0aW9uIGJsaXQoYTEsIGkxLCBhMiwgaTIsIG4pIHsKLSAg
cmV0dXJuICQkQXJyYXkuYmxpdChhMSwgaW5kZXhfb2ZfaW50MzIoaTEpLCBhMiwgaW5kZXhfb2Zf
aW50MzIoaTIpLCBpbmRleF9vZl9pbnQzMihuKSk7Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZShraW5k
LCBsYXlvdXQsIG4pIHsKLSAgaWYgKENhbWxfaW50NjQubHQobiwgLyogaW50NjQgKi9bCi0gICAg
ICAgICAgLyogaGkgKi8wLAotICAgICAgICAgIC8qIGxvICovMAotICAgICAgICBdKSB8fCBDYW1s
X2ludDY0Lmd0KG4sIENhbWxfaW50NjQub2ZfaW50MzIoUGVydmFzaXZlcy5tYXhfaW50KSkpIHsK
LSAgICB0aHJvdyBbCi0gICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9h
cmd1bWVudCwKLSAgICAgICAgICAiQmlnYXJyYXkuQXJyYXkxXzY0LmNyZWF0ZSIKLSAgICAgICAg
XTsKLSAgfQotICByZXR1cm4gQ3VycnkuXzMoQmlnYXJyYXkuQXJyYXkxWy8qIGNyZWF0ZSAqLzBd
LCBraW5kLCBsYXlvdXQsIG5bMV0gfCAwKTsKLX0KLQotZnVuY3Rpb24gZGltKCkgewotICByZXR1
cm4gQ2FtbF9pbnQ2NC5vZl9pbnQzMihmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgdGhy
b3cgImNhbWxfYmFfZGltXzEgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7
Ci0gICAgICAgICAgICAgIH0oKSk7Ci19Ci0KLWZ1bmN0aW9uIGdldCQxKF8sIF8kMSkgewotICBy
ZXR1cm4gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfZ2V0XzEgbm90
IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Ci0gICAgICAgICAgfSgpOwotfQot
Ci1mdW5jdGlvbiBzZXQkMShfLCBfJDEsIF8kMikgewotICByZXR1cm4gZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgdGhyb3cgImNhbWxfYmFfc2V0XzEgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2ts
ZXNjcmlwdCB5ZXRcbiI7Ci0gICAgICAgICAgfSgpOwotfQotCi1mdW5jdGlvbiBzdWIoXywgXyQx
LCBfJDIpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRocm93ICJjYW1s
X2JhX3N1YiBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAgICAg
ICB9KCk7Ci19Ci0KLWZ1bmN0aW9uIGdldCQyKG8sIHgpIHsKLSAgaWYgKG8pIHsKLSAgICByZXR1
cm4gb1swXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4geDsKLSAgfQotfQotCi1mdW5jdGlv
biBtYXAoZiwgcGFyYW0pIHsKLSAgaWYgKHBhcmFtKSB7Ci0gICAgcmV0dXJuIC8qIFNvbWUgKi9b
Q3VycnkuXzEoZiwgcGFyYW1bMF0pXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyogTm9u
ZSAqLzA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gYXBwKGYsIHBhcmFtKSB7Ci0gIGlmIChwYXJhbSkg
ewotICAgIHJldHVybiBDdXJyeS5fMShmLCBwYXJhbVswXSk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAg
cmV0dXJuIC8qICgpICovMDsKLSAgfQotfQotCi12YXIgT3B0aW9uID0gLyogbW9kdWxlICovWwot
ICAvKiBnZXQgKi9nZXQkMiwKLSAgLyogbWFwICovbWFwLAotICAvKiBhcHAgKi9hcHAKLV07Ci0K
LWZ1bmN0aW9uIGxvZzIobikgewotICBpZiAobiA8PSAwKSB7Ci0gICAgUGVydmFzaXZlcy5mYWls
d2l0aCgibG9nMiIpOwotICB9Ci0gIHZhciBfYWNjID0gMDsKLSAgdmFyIF9uID0gbjsKLSAgd2hp
bGUodHJ1ZSkgewotICAgIHZhciBuJDEgPSBfbjsKLSAgICB2YXIgYWNjID0gX2FjYzsKLSAgICBp
ZiAobiQxID09PSAxKSB7Ci0gICAgICByZXR1cm4gYWNjOwotICAgIH0KLSAgICBlbHNlIHsKLSAg
ICAgIF9uID0gKG4kMSA+Pj4gMSk7Ci0gICAgICBfYWNjID0gYWNjICsgMSB8IDA7Ci0gICAgICBj
b250aW51ZSA7Ci0gICAgICAKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIGlzX3Bvd2VyX29m
X3R3byhuKSB7Ci0gIGlmIChuIDwgMCkgewotICAgIFBlcnZhc2l2ZXMuZmFpbHdpdGgoImlzX3Bv
d2VyX29mX3R3byIpOwotICB9Ci0gIGlmIChuICE9PSAwKSB7Ci0gICAgcmV0dXJuICsoKG4gJiAo
biAtIDEgfCAwKSkgPT09IDApOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAvKiBmYWxzZSAq
LzA7Ci0gIH0KLX0KLQotdmFyIEludCA9IC8qIG1vZHVsZSAqL1sKLSAgLyogbG9nMiAqL2xvZzIs
Ci0gIC8qIGlzX3Bvd2VyX29mX3R3byAqL2lzX3Bvd2VyX29mX3R3bwotXTsKLQotZnVuY3Rpb24g
YnJlYWt1cChzLCBuKSB7Ci0gIHZhciBsb29wID0gZnVuY3Rpb24gKGkpIHsKLSAgICB2YXIgbGVu
ID0gUGVydmFzaXZlcy5taW4obiwgcy5sZW5ndGggLSBpIHwgMCk7Ci0gICAgaWYgKGxlbikgewot
ICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAkJFN0cmluZy5zdWIocywgaSwg
bGVuKSwKLSAgICAgICAgICAgICAgbG9vcChpICsgbGVuIHwgMCkKLSAgICAgICAgICAgIF07Ci0g
ICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIC8qIFtdICovMDsKLSAgICB9Ci0gIH07Ci0g
IHJldHVybiBsb29wKDApOwotfQotCi12YXIgJCRTdHJpbmckMSA9IC8qIG1vZHVsZSAqL1svKiBi
cmVha3VwICovYnJlYWt1cF07Ci0KLXZhciBMaXN0ID0gWwotICBtYWtlLAotICB0YWJsZSwKLSAg
dGFrZSwKLSAgZHJvcCwKLSAgbGFzdCwKLSAgc3BsaXRfbGFzdCwKLSAgaW5kZXhfb2YKLV07Ci0K
LXZhciBMaXN0MzIgPSBbCi0gIGxlbmd0aCwKLSAgbnRoLAotICB0YWtlJDEsCi0gIGRyb3AkMQot
XTsKLQotdmFyIEFycmF5MzIgPSBbCi0gIG1ha2UkMSwKLSAgbGVuZ3RoJDEsCi0gIGdldCwKLSAg
c2V0LAotICBibGl0Ci1dOwotCi12YXIgQmlnYXJyYXkkMSA9IFtbCi0gICAgY3JlYXRlLAotICAg
IGRpbSwKLSAgICBnZXQkMSwKLSAgICBzZXQkMSwKLSAgICBzdWIKLSAgXV07Ci0KLWV4cG9ydHMu
RnVuICAgICAgPSBGdW47Ci1leHBvcnRzLkxpc3QgICAgID0gTGlzdDsKLWV4cG9ydHMuTGlzdDMy
ICAgPSBMaXN0MzI7Ci1leHBvcnRzLkFycmF5MzIgID0gQXJyYXkzMjsKLWV4cG9ydHMuQmlnYXJy
YXkgPSBCaWdhcnJheSQxOwotZXhwb3J0cy5PcHRpb24gICA9IE9wdGlvbjsKLWV4cG9ydHMuSW50
ICAgICAgPSBJbnQ7Ci1leHBvcnRzLiQkU3RyaW5nID0gJCRTdHJpbmckMTsKLS8qIEJpZ2FycmF5
IE5vdCBhIHB1cmUgbW9kdWxlICovCi0vLy8vLy8vLyBlbmQgb2YgbGliLmpzIC8vLy8vLy8vCi0g
ICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ2xpc3QnXSA9IGZ1bmN0
aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBsaXN0Lmpz
IC8vLy8vLy8vCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBDdXJyeSAgICAgICAgICAgICAgICAgICA9
IHJlcXVpcmUoIi4vY3VycnkiKTsKLXZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVp
cmUoIi4vY2FtbF9vYmoiKTsKLXZhciBQZXJ2YXNpdmVzICAgICAgICAgICAgICA9IHJlcXVpcmUo
Ii4vcGVydmFzaXZlcyIpOwotdmFyIENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgi
Li9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOwotCi1mdW5jdGlvbiBsZW5ndGgobCkgewotICB2
YXIgX2xlbiA9IDA7Ci0gIHZhciBfcGFyYW0gPSBsOwotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFy
IHBhcmFtID0gX3BhcmFtOwotICAgIHZhciBsZW4gPSBfbGVuOwotICAgIGlmIChwYXJhbSkgewot
ICAgICAgX3BhcmFtID0gcGFyYW1bMV07Ci0gICAgICBfbGVuID0gbGVuICsgMSB8IDA7Ci0gICAg
ICBjb250aW51ZSA7Ci0gICAgICAKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gbGVu
OwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gaGQocGFyYW0pIHsKLSAgaWYgKHBhcmFtKSB7
Ci0gICAgcmV0dXJuIHBhcmFtWzBdOwotICB9Ci0gIGVsc2UgewotICAgIHRocm93IFsKLSAgICAg
ICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5mYWlsdXJlLAotICAgICAgICAgICJoZCIKLSAg
ICAgICAgXTsKLSAgfQotfQotCi1mdW5jdGlvbiB0bChwYXJhbSkgewotICBpZiAocGFyYW0pIHsK
LSAgICByZXR1cm4gcGFyYW1bMV07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgdGhyb3cgWwotICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmZhaWx1cmUsCi0gICAgICAgICAgInRsIgotICAg
ICAgICBdOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG50aChsLCBuKSB7Ci0gIGlmIChuIDwgMCkgewot
ICAgIHRocm93IFsKLSAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2Fy
Z3VtZW50LAotICAgICAgICAgICJMaXN0Lm50aCIKLSAgICAgICAgXTsKLSAgfQotICBlbHNlIHsK
LSAgICB2YXIgX2wgPSBsOwotICAgIHZhciBfbiA9IG47Ci0gICAgd2hpbGUodHJ1ZSkgewotICAg
ICAgdmFyIG4kMSA9IF9uOwotICAgICAgdmFyIGwkMSA9IF9sOwotICAgICAgaWYgKGwkMSkgewot
ICAgICAgICBpZiAobiQxKSB7Ci0gICAgICAgICAgX24gPSBuJDEgLSAxIHwgMDsKLSAgICAgICAg
ICBfbCA9IGwkMVsxXTsKLSAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgCi0gICAgICAg
IH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIGwkMVswXTsKLSAgICAgICAgfQot
ICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgQ2Ft
bF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKLSAgICAgICAgICAgICAgIm50aCIKLSAgICAg
ICAgICAgIF07Ci0gICAgICB9Ci0gICAgfTsKLSAgfQotfQotCi1mdW5jdGlvbiByZXZfYXBwZW5k
KF9sMSwgX2wyKSB7Ci0gIHdoaWxlKHRydWUpIHsKLSAgICB2YXIgbDIgPSBfbDI7Ci0gICAgdmFy
IGwxID0gX2wxOwotICAgIGlmIChsMSkgewotICAgICAgX2wyID0gLyogOjogKi9bCi0gICAgICAg
IGwxWzBdLAotICAgICAgICBsMgotICAgICAgXTsKLSAgICAgIF9sMSA9IGwxWzFdOwotICAgICAg
Y29udGludWUgOwotICAgICAgCi0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIGwyOwot
ICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gcmV2KGwpIHsKLSAgcmV0dXJuIHJldl9hcHBlbmQo
bCwgLyogW10gKi8wKTsKLX0KLQotZnVuY3Rpb24gZmxhdHRlbihwYXJhbSkgewotICBpZiAocGFy
YW0pIHsKLSAgICByZXR1cm4gUGVydmFzaXZlcy4kYXQocGFyYW1bMF0sIGZsYXR0ZW4ocGFyYW1b
MV0pKTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyogW10gKi8wOwotICB9Ci19Ci0KLWZ1
bmN0aW9uIG1hcChmLCBwYXJhbSkgewotICBpZiAocGFyYW0pIHsKLSAgICB2YXIgciA9IEN1cnJ5
Ll8xKGYsIHBhcmFtWzBdKTsKLSAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICByLAot
ICAgICAgICAgICAgbWFwKGYsIHBhcmFtWzFdKQotICAgICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7
Ci0gICAgcmV0dXJuIC8qIFtdICovMDsKLSAgfQotfQotCi1mdW5jdGlvbiBtYXBpKGksIGYsIHBh
cmFtKSB7Ci0gIGlmIChwYXJhbSkgewotICAgIHZhciByID0gQ3VycnkuXzIoZiwgaSwgcGFyYW1b
MF0pOwotICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAgIHIsCi0gICAgICAgICAgICBt
YXBpKGkgKyAxIHwgMCwgZiwgcGFyYW1bMV0pCi0gICAgICAgICAgXTsKLSAgfQotICBlbHNlIHsK
LSAgICByZXR1cm4gLyogW10gKi8wOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG1hcGkkMShmLCBsKSB7
Ci0gIHJldHVybiBtYXBpKDAsIGYsIGwpOwotfQotCi1mdW5jdGlvbiByZXZfbWFwKGYsIGwpIHsK
LSAgdmFyIF9hY2N1ID0gLyogW10gKi8wOwotICB2YXIgX3BhcmFtID0gbDsKLSAgd2hpbGUodHJ1
ZSkgewotICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKLSAgICB2YXIgYWNjdSA9IF9hY2N1OwotICAg
IGlmIChwYXJhbSkgewotICAgICAgX3BhcmFtID0gcGFyYW1bMV07Ci0gICAgICBfYWNjdSA9IC8q
IDo6ICovWwotICAgICAgICBDdXJyeS5fMShmLCBwYXJhbVswXSksCi0gICAgICAgIGFjY3UKLSAg
ICAgIF07Ci0gICAgICBjb250aW51ZSA7Ci0gICAgICAKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAg
ICByZXR1cm4gYWNjdTsKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIGl0ZXIoZiwgX3BhcmFt
KSB7Ci0gIHdoaWxlKHRydWUpIHsKLSAgICB2YXIgcGFyYW0gPSBfcGFyYW07Ci0gICAgaWYgKHBh
cmFtKSB7Ci0gICAgICBDdXJyeS5fMShmLCBwYXJhbVswXSk7Ci0gICAgICBfcGFyYW0gPSBwYXJh
bVsxXTsKLSAgICAgIGNvbnRpbnVlIDsKLSAgICAgIAotICAgIH0KLSAgICBlbHNlIHsKLSAgICAg
IHJldHVybiAvKiAoKSAqLzA7Ci0gICAgfQotICB9OwotfQotCi1mdW5jdGlvbiBpdGVyaShmLCBs
KSB7Ci0gIHZhciBfaSA9IDA7Ci0gIHZhciBmJDEgPSBmOwotICB2YXIgX3BhcmFtID0gbDsKLSAg
d2hpbGUodHJ1ZSkgewotICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKLSAgICB2YXIgaSA9IF9pOwot
ICAgIGlmIChwYXJhbSkgewotICAgICAgQ3VycnkuXzIoZiQxLCBpLCBwYXJhbVswXSk7Ci0gICAg
ICBfcGFyYW0gPSBwYXJhbVsxXTsKLSAgICAgIF9pID0gaSArIDEgfCAwOwotICAgICAgY29udGlu
dWUgOwotICAgICAgCi0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIC8qICgpICovMDsK
LSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIGZvbGRfbGVmdChmLCBfYWNjdSwgX2wpIHsKLSAg
d2hpbGUodHJ1ZSkgewotICAgIHZhciBsID0gX2w7Ci0gICAgdmFyIGFjY3UgPSBfYWNjdTsKLSAg
ICBpZiAobCkgewotICAgICAgX2wgPSBsWzFdOwotICAgICAgX2FjY3UgPSBDdXJyeS5fMihmLCBh
Y2N1LCBsWzBdKTsKLSAgICAgIGNvbnRpbnVlIDsKLSAgICAgIAotICAgIH0KLSAgICBlbHNlIHsK
LSAgICAgIHJldHVybiBhY2N1OwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gZm9sZF9yaWdo
dChmLCBsLCBhY2N1KSB7Ci0gIGlmIChsKSB7Ci0gICAgcmV0dXJuIEN1cnJ5Ll8yKGYsIGxbMF0s
IGZvbGRfcmlnaHQoZiwgbFsxXSwgYWNjdSkpOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBh
Y2N1OwotICB9Ci19Ci0KLWZ1bmN0aW9uIG1hcDIoZiwgbDEsIGwyKSB7Ci0gIGlmIChsMSkgewot
ICAgIGlmIChsMikgewotICAgICAgdmFyIHIgPSBDdXJyeS5fMihmLCBsMVswXSwgbDJbMF0pOwot
ICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICByLAotICAgICAgICAgICAgICBt
YXAyKGYsIGwxWzFdLCBsMlsxXSkKLSAgICAgICAgICAgIF07Ci0gICAgfQotICAgIGVsc2Ugewot
ICAgICAgdGhyb3cgWwotICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxp
ZF9hcmd1bWVudCwKLSAgICAgICAgICAgICJMaXN0Lm1hcDIiCi0gICAgICAgICAgXTsKLSAgICB9
Ci0gIH0KLSAgZWxzZSBpZiAobDIpIHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAiTGlzdC5tYXAyIgot
ICAgICAgICBdOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiAvKiBbXSAqLzA7Ci0gIH0KLX0K
LQotZnVuY3Rpb24gcmV2X21hcDIoZiwgbDEsIGwyKSB7Ci0gIHZhciBfYWNjdSA9IC8qIFtdICov
MDsKLSAgdmFyIF9sMSA9IGwxOwotICB2YXIgX2wyID0gbDI7Ci0gIHdoaWxlKHRydWUpIHsKLSAg
ICB2YXIgbDIkMSA9IF9sMjsKLSAgICB2YXIgbDEkMSA9IF9sMTsKLSAgICB2YXIgYWNjdSA9IF9h
Y2N1OwotICAgIGlmIChsMSQxKSB7Ci0gICAgICBpZiAobDIkMSkgewotICAgICAgICBfbDIgPSBs
MiQxWzFdOwotICAgICAgICBfbDEgPSBsMSQxWzFdOwotICAgICAgICBfYWNjdSA9IC8qIDo6ICov
WwotICAgICAgICAgIEN1cnJ5Ll8yKGYsIGwxJDFbMF0sIGwyJDFbMF0pLAotICAgICAgICAgIGFj
Y3UKLSAgICAgICAgXTsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAg
ICAgIGVsc2UgewotICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAgICJMaXN0LnJldl9tYXAy
IgotICAgICAgICAgICAgXTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAobDIkMSkgewot
ICAgICAgdGhyb3cgWwotICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxp
ZF9hcmd1bWVudCwKLSAgICAgICAgICAgICJMaXN0LnJldl9tYXAyIgotICAgICAgICAgIF07Ci0g
ICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIGFjY3U7Ci0gICAgfQotICB9OwotfQotCi1m
dW5jdGlvbiBpdGVyMihmLCBfbDEsIF9sMikgewotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIGwy
ID0gX2wyOwotICAgIHZhciBsMSA9IF9sMTsKLSAgICBpZiAobDEpIHsKLSAgICAgIGlmIChsMikg
ewotICAgICAgICBDdXJyeS5fMihmLCBsMVswXSwgbDJbMF0pOwotICAgICAgICBfbDIgPSBsMlsx
XTsKLSAgICAgICAgX2wxID0gbDFbMV07Ci0gICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgCi0g
ICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICBDYW1s
X2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAotICAgICAgICAgICAgICAiTGlz
dC5pdGVyMiIKLSAgICAgICAgICAgIF07Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGwy
KSB7Ci0gICAgICB0aHJvdyBbCi0gICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5p
bnZhbGlkX2FyZ3VtZW50LAotICAgICAgICAgICAgIkxpc3QuaXRlcjIiCi0gICAgICAgICAgXTsK
LSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgIH0KLSAgfTsK
LX0KLQotZnVuY3Rpb24gZm9sZF9sZWZ0MihmLCBfYWNjdSwgX2wxLCBfbDIpIHsKLSAgd2hpbGUo
dHJ1ZSkgewotICAgIHZhciBsMiA9IF9sMjsKLSAgICB2YXIgbDEgPSBfbDE7Ci0gICAgdmFyIGFj
Y3UgPSBfYWNjdTsKLSAgICBpZiAobDEpIHsKLSAgICAgIGlmIChsMikgewotICAgICAgICBfbDIg
PSBsMlsxXTsKLSAgICAgICAgX2wxID0gbDFbMV07Ci0gICAgICAgIF9hY2N1ID0gQ3VycnkuXzMo
ZiwgYWNjdSwgbDFbMF0sIGwyWzBdKTsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAg
ICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAgICJMaXN0
LmZvbGRfbGVmdDIiCi0gICAgICAgICAgICBdOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlm
IChsMikgewotICAgICAgdGhyb3cgWwotICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlv
bnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAgICJMaXN0LmZvbGRfbGVmdDIiCi0gICAg
ICAgICAgXTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gYWNjdTsKLSAgICB9Ci0g
IH07Ci19Ci0KLWZ1bmN0aW9uIGZvbGRfcmlnaHQyKGYsIGwxLCBsMiwgYWNjdSkgewotICBpZiAo
bDEpIHsKLSAgICBpZiAobDIpIHsKLSAgICAgIHJldHVybiBDdXJyeS5fMyhmLCBsMVswXSwgbDJb
MF0sIGZvbGRfcmlnaHQyKGYsIGwxWzFdLCBsMlsxXSwgYWNjdSkpOwotICAgIH0KLSAgICBlbHNl
IHsKLSAgICAgIHRocm93IFsKLSAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmlu
dmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAiTGlzdC5mb2xkX3JpZ2h0MiIKLSAgICAgICAg
ICBdOwotICAgIH0KLSAgfQotICBlbHNlIGlmIChsMikgewotICAgIHRocm93IFsKLSAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAotICAgICAgICAgICJM
aXN0LmZvbGRfcmlnaHQyIgotICAgICAgICBdOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBh
Y2N1OwotICB9Ci19Ci0KLWZ1bmN0aW9uIGZvcl9hbGwocCwgX3BhcmFtKSB7Ci0gIHdoaWxlKHRy
dWUpIHsKLSAgICB2YXIgcGFyYW0gPSBfcGFyYW07Ci0gICAgaWYgKHBhcmFtKSB7Ci0gICAgICBp
ZiAoQ3VycnkuXzEocCwgcGFyYW1bMF0pKSB7Ci0gICAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOwot
ICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgIAotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAg
ICAgIHJldHVybiAvKiBmYWxzZSAqLzA7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAg
ICAgcmV0dXJuIC8qIHRydWUgKi8xOwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gZXhpc3Rz
KHAsIF9wYXJhbSkgewotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIHBhcmFtID0gX3BhcmFtOwot
ICAgIGlmIChwYXJhbSkgewotICAgICAgaWYgKEN1cnJ5Ll8xKHAsIHBhcmFtWzBdKSkgewotICAg
ICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAg
X3BhcmFtID0gcGFyYW1bMV07Ci0gICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgCi0gICAgICB9
Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgICB9Ci0g
IH07Ci19Ci0KLWZ1bmN0aW9uIGZvcl9hbGwyKHAsIF9sMSwgX2wyKSB7Ci0gIHdoaWxlKHRydWUp
IHsKLSAgICB2YXIgbDIgPSBfbDI7Ci0gICAgdmFyIGwxID0gX2wxOwotICAgIGlmIChsMSkgewot
ICAgICAgaWYgKGwyKSB7Ci0gICAgICAgIGlmIChDdXJyeS5fMihwLCBsMVswXSwgbDJbMF0pKSB7
Ci0gICAgICAgICAgX2wyID0gbDJbMV07Ci0gICAgICAgICAgX2wxID0gbDFbMV07Ci0gICAgICAg
ICAgY29udGludWUgOwotICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVs
c2UgewotICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAgICJMaXN0LmZvcl9hbGwyIgotICAg
ICAgICAgICAgXTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAobDIpIHsKLSAgICAgIHRo
cm93IFsKLSAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCi0gICAgICAgICAgICAiTGlzdC5mb3JfYWxsMiIKLSAgICAgICAgICBdOwotICAgIH0KLSAg
ICBlbHNlIHsKLSAgICAgIHJldHVybiAvKiB0cnVlICovMTsKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1
bmN0aW9uIGV4aXN0czIocCwgX2wxLCBfbDIpIHsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBs
MiA9IF9sMjsKLSAgICB2YXIgbDEgPSBfbDE7Ci0gICAgaWYgKGwxKSB7Ci0gICAgICBpZiAobDIp
IHsKLSAgICAgICAgaWYgKEN1cnJ5Ll8yKHAsIGwxWzBdLCBsMlswXSkpIHsKLSAgICAgICAgICBy
ZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
X2wyID0gbDJbMV07Ci0gICAgICAgICAgX2wxID0gbDFbMV07Ci0gICAgICAgICAgY29udGludWUg
OwotICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAg
dGhyb3cgWwotICAgICAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2Fy
Z3VtZW50LAotICAgICAgICAgICAgICAiTGlzdC5leGlzdHMyIgotICAgICAgICAgICAgXTsKLSAg
ICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAobDIpIHsKLSAgICAgIHRocm93IFsKLSAgICAgICAg
ICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAg
ICAiTGlzdC5leGlzdHMyIgotICAgICAgICAgIF07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAg
cmV0dXJuIC8qIGZhbHNlICovMDsKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIG1lbSh4LCBf
cGFyYW0pIHsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKLSAgICBp
ZiAocGFyYW0pIHsKLSAgICAgIGlmIChDYW1sX29iai5jYW1sX2NvbXBhcmUocGFyYW1bMF0sIHgp
KSB7Ci0gICAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOwotICAgICAgICBjb250aW51ZSA7Ci0gICAg
ICAgIAotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiAvKiB0cnVlICovMTsK
LSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogZmFsc2UgKi8wOwot
ICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gbWVtcSh4LCBfcGFyYW0pIHsKLSAgd2hpbGUodHJ1
ZSkgewotICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKLSAgICBpZiAocGFyYW0pIHsKLSAgICAgIGlm
IChwYXJhbVswXSA9PT0geCkgewotICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gICAgICB9
Ci0gICAgICBlbHNlIHsKLSAgICAgICAgX3BhcmFtID0gcGFyYW1bMV07Ci0gICAgICAgIGNvbnRp
bnVlIDsKLSAgICAgICAgCi0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJu
IC8qIGZhbHNlICovMDsKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIGFzc29jKHgsIF9wYXJh
bSkgewotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIHBhcmFtID0gX3BhcmFtOwotICAgIGlmIChw
YXJhbSkgewotICAgICAgdmFyIG1hdGNoID0gcGFyYW1bMF07Ci0gICAgICBpZiAoQ2FtbF9vYmou
Y2FtbF9jb21wYXJlKG1hdGNoWzBdLCB4KSkgewotICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsK
LSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAg
ICAgICByZXR1cm4gbWF0Y2hbMV07Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAg
dGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kOwotICAgIH0KLSAgfTsKLX0K
LQotZnVuY3Rpb24gYXNzcSh4LCBfcGFyYW0pIHsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBw
YXJhbSA9IF9wYXJhbTsKLSAgICBpZiAocGFyYW0pIHsKLSAgICAgIHZhciBtYXRjaCA9IHBhcmFt
WzBdOwotICAgICAgaWYgKG1hdGNoWzBdID09PSB4KSB7Ci0gICAgICAgIHJldHVybiBtYXRjaFsx
XTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKLSAg
ICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0g
ICAgICB0aHJvdyBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7Ci0gICAgfQotICB9
OwotfQotCi1mdW5jdGlvbiBtZW1fYXNzb2MoeCwgX3BhcmFtKSB7Ci0gIHdoaWxlKHRydWUpIHsK
LSAgICB2YXIgcGFyYW0gPSBfcGFyYW07Ci0gICAgaWYgKHBhcmFtKSB7Ci0gICAgICBpZiAoQ2Ft
bF9vYmouY2FtbF9jb21wYXJlKHBhcmFtWzBdWzBdLCB4KSkgewotICAgICAgICBfcGFyYW0gPSBw
YXJhbVsxXTsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVs
c2UgewotICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gICAgICB9Ci0gICAgfQotICAgIGVs
c2UgewotICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0
aW9uIG1lbV9hc3NxKHgsIF9wYXJhbSkgewotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIHBhcmFt
ID0gX3BhcmFtOwotICAgIGlmIChwYXJhbSkgewotICAgICAgaWYgKHBhcmFtWzBdWzBdID09PSB4
KSB7Ci0gICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKLSAgICAgIH0KLSAgICAgIGVsc2Ugewot
ICAgICAgICBfcGFyYW0gPSBwYXJhbVsxXTsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAK
LSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogZmFsc2UgKi8wOwot
ICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gcmVtb3ZlX2Fzc29jKHgsIHBhcmFtKSB7Ci0gIGlm
IChwYXJhbSkgewotICAgIHZhciBsID0gcGFyYW1bMV07Ci0gICAgdmFyIHBhaXIgPSBwYXJhbVsw
XTsKLSAgICBpZiAoQ2FtbF9vYmouY2FtbF9jb21wYXJlKHBhaXJbMF0sIHgpKSB7Ci0gICAgICBy
ZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAgIHBhaXIsCi0gICAgICAgICAgICAgIHJlbW92
ZV9hc3NvYyh4LCBsKQotICAgICAgICAgICAgXTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBy
ZXR1cm4gbDsKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIC8qIFtdICovMDsKLSAg
fQotfQotCi1mdW5jdGlvbiByZW1vdmVfYXNzcSh4LCBwYXJhbSkgewotICBpZiAocGFyYW0pIHsK
LSAgICB2YXIgbCA9IHBhcmFtWzFdOwotICAgIHZhciBwYWlyID0gcGFyYW1bMF07Ci0gICAgaWYg
KHBhaXJbMF0gPT09IHgpIHsKLSAgICAgIHJldHVybiBsOwotICAgIH0KLSAgICBlbHNlIHsKLSAg
ICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgcGFpciwKLSAgICAgICAgICAgICAg
cmVtb3ZlX2Fzc3EoeCwgbCkKLSAgICAgICAgICAgIF07Ci0gICAgfQotICB9Ci0gIGVsc2Ugewot
ICAgIHJldHVybiAvKiBbXSAqLzA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gZmluZChwLCBfcGFyYW0p
IHsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKLSAgICBpZiAocGFy
YW0pIHsKLSAgICAgIHZhciB4ID0gcGFyYW1bMF07Ci0gICAgICBpZiAoQ3VycnkuXzEocCwgeCkp
IHsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgX3Bh
cmFtID0gcGFyYW1bMV07Ci0gICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgCi0gICAgICB9Ci0g
ICAgfQotICAgIGVsc2UgewotICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMubm90
X2ZvdW5kOwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gZmluZF9hbGwocCkgewotICByZXR1
cm4gZnVuY3Rpb24gKHBhcmFtKSB7Ci0gICAgdmFyIF9hY2N1ID0gLyogW10gKi8wOwotICAgIHZh
ciBfcGFyYW0gPSBwYXJhbTsKLSAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICB2YXIgcGFyYW0kMSA9
IF9wYXJhbTsKLSAgICAgIHZhciBhY2N1ID0gX2FjY3U7Ci0gICAgICBpZiAocGFyYW0kMSkgewot
ICAgICAgICB2YXIgbCA9IHBhcmFtJDFbMV07Ci0gICAgICAgIHZhciB4ID0gcGFyYW0kMVswXTsK
LSAgICAgICAgaWYgKEN1cnJ5Ll8xKHAsIHgpKSB7Ci0gICAgICAgICAgX3BhcmFtID0gbDsKLSAg
ICAgICAgICBfYWNjdSA9IC8qIDo6ICovWwotICAgICAgICAgICAgeCwKLSAgICAgICAgICAgIGFj
Y3UKLSAgICAgICAgICBdOwotICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAKLSAgICAg
ICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBfcGFyYW0gPSBsOwotICAgICAgICAgIGNv
bnRpbnVlIDsKLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0g
ICAgICAgIHJldHVybiByZXZfYXBwZW5kKGFjY3UsIC8qIFtdICovMCk7Ci0gICAgICB9Ci0gICAg
fTsKLSAgfTsKLX0KLQotZnVuY3Rpb24gcGFydGl0aW9uKHAsIGwpIHsKLSAgdmFyIF95ZXMgPSAv
KiBbXSAqLzA7Ci0gIHZhciBfbm8gPSAvKiBbXSAqLzA7Ci0gIHZhciBfcGFyYW0gPSBsOwotICB3
aGlsZSh0cnVlKSB7Ci0gICAgdmFyIHBhcmFtID0gX3BhcmFtOwotICAgIHZhciBubyA9IF9ubzsK
LSAgICB2YXIgeWVzID0gX3llczsKLSAgICBpZiAocGFyYW0pIHsKLSAgICAgIHZhciBsJDEgPSBw
YXJhbVsxXTsKLSAgICAgIHZhciB4ID0gcGFyYW1bMF07Ci0gICAgICBpZiAoQ3VycnkuXzEocCwg
eCkpIHsKLSAgICAgICAgX3BhcmFtID0gbCQxOwotICAgICAgICBfeWVzID0gLyogOjogKi9bCi0g
ICAgICAgICAgeCwKLSAgICAgICAgICB5ZXMKLSAgICAgICAgXTsKLSAgICAgICAgY29udGludWUg
OwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBfcGFyYW0gPSBsJDE7
Ci0gICAgICAgIF9ubyA9IC8qIDo6ICovWwotICAgICAgICAgIHgsCi0gICAgICAgICAgbm8KLSAg
ICAgICAgXTsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAgICB9Ci0g
ICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgIHJldl9h
cHBlbmQoeWVzLCAvKiBbXSAqLzApLAotICAgICAgICAgICAgICByZXZfYXBwZW5kKG5vLCAvKiBb
XSAqLzApCi0gICAgICAgICAgICBdOwotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gc3BsaXQo
cGFyYW0pIHsKLSAgaWYgKHBhcmFtKSB7Ci0gICAgdmFyIG1hdGNoID0gcGFyYW1bMF07Ci0gICAg
dmFyIG1hdGNoJDEgPSBzcGxpdChwYXJhbVsxXSk7Ci0gICAgcmV0dXJuIC8qIHR1cGxlICovWwot
ICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgIG1hdGNoWzBdLAotICAgICAgICAg
ICAgICBtYXRjaCQxWzBdCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgLyogOjogKi9bCi0g
ICAgICAgICAgICAgIG1hdGNoWzFdLAotICAgICAgICAgICAgICBtYXRjaCQxWzFdCi0gICAgICAg
ICAgICBdCi0gICAgICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyogdHVwbGUg
Ki9bCi0gICAgICAgICAgICAvKiBbXSAqLzAsCi0gICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAg
ICAgICBdOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbWJpbmUobDEsIGwyKSB7Ci0gIGlmIChsMSkg
ewotICAgIGlmIChsMikgewotICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAv
KiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgICBsMVswXSwKLSAgICAgICAgICAgICAgICBsMlsw
XQotICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICBjb21iaW5lKGwxWzFdLCBsMlsxXSkK
LSAgICAgICAgICAgIF07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdGhyb3cgWwotICAgICAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAg
ICAgICJMaXN0LmNvbWJpbmUiCi0gICAgICAgICAgXTsKLSAgICB9Ci0gIH0KLSAgZWxzZSBpZiAo
bDIpIHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52
YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAiTGlzdC5jb21iaW5lIgotICAgICAgICBdOwotICB9
Ci0gIGVsc2UgewotICAgIHJldHVybiAvKiBbXSAqLzA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gbWVy
Z2UoY21wLCBsMSwgbDIpIHsKLSAgaWYgKGwxKSB7Ci0gICAgaWYgKGwyKSB7Ci0gICAgICB2YXIg
aDIgPSBsMlswXTsKLSAgICAgIHZhciBoMSA9IGwxWzBdOwotICAgICAgaWYgKEN1cnJ5Ll8yKGNt
cCwgaDEsIGgyKSA8PSAwKSB7Ci0gICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAg
ICAgICBoMSwKLSAgICAgICAgICAgICAgICBtZXJnZShjbXAsIGwxWzFdLCBsMikKLSAgICAgICAg
ICAgICAgXTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4gLyogOjogKi9b
Ci0gICAgICAgICAgICAgICAgaDIsCi0gICAgICAgICAgICAgICAgbWVyZ2UoY21wLCBsMSwgbDJb
MV0pCi0gICAgICAgICAgICAgIF07Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAg
cmV0dXJuIGwxOwotICAgIH0KLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gbDI7Ci0gIH0KLX0K
LQotZnVuY3Rpb24gY2hvcChfaywgX2wpIHsKLSAgd2hpbGUodHJ1ZSkgewotICAgIHZhciBsID0g
X2w7Ci0gICAgdmFyIGsgPSBfazsKLSAgICBpZiAoaykgewotICAgICAgaWYgKGwpIHsKLSAgICAg
ICAgX2wgPSBsWzFdOwotICAgICAgICBfayA9IGsgLSAxIHwgMDsKLSAgICAgICAgY29udGludWUg
OwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICB0aHJvdyBbCi0gICAg
ICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmFzc2VydF9mYWlsdXJlLAotICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgImxpc3QubWwiLAotICAgICAgICAgICAgICAgIDIy
MywKLSAgICAgICAgICAgICAgICAxMQotICAgICAgICAgICAgICBdCi0gICAgICAgICAgICBdOwot
ICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiBsOwotICAgIH0KLSAgfTsK
LX0KLQotZnVuY3Rpb24gc3RhYmxlX3NvcnQoY21wLCBsKSB7Ci0gIHZhciBzb3J0ID0gZnVuY3Rp
b24gKG4sIGwpIHsKLSAgICB2YXIgZXhpdCA9IDA7Ci0gICAgaWYgKG4gIT09IDIpIHsKLSAgICAg
IGlmIChuICE9PSAzKSB7Ci0gICAgICAgIGV4aXQgPSAxOwotICAgICAgfQotICAgICAgZWxzZSBp
ZiAobCkgewotICAgICAgICB2YXIgbWF0Y2ggPSBsWzFdOwotICAgICAgICBpZiAobWF0Y2gpIHsK
LSAgICAgICAgICB2YXIgbWF0Y2gkMSA9IG1hdGNoWzFdOwotICAgICAgICAgIGlmIChtYXRjaCQx
KSB7Ci0gICAgICAgICAgICB2YXIgeDMgPSBtYXRjaCQxWzBdOwotICAgICAgICAgICAgdmFyIHgy
ID0gbWF0Y2hbMF07Ci0gICAgICAgICAgICB2YXIgeDEgPSBsWzBdOwotICAgICAgICAgICAgaWYg
KEN1cnJ5Ll8yKGNtcCwgeDEsIHgyKSA8PSAwKSB7Ci0gICAgICAgICAgICAgIGlmIChDdXJyeS5f
MihjbXAsIHgyLCB4MykgPD0gMCkgewotICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sK
LSAgICAgICAgICAgICAgICAgICAgICAgIHgxLAotICAgICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgIF07
Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4
MSwgeDMpIDw9IDApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAg
ICAgICAgICAgICAgICAgICB4MSwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICBdOwotICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiAv
KiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgIHgzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAg
ICAgICAgIF07Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgaWYgKEN1cnJ5Ll8yKGNtcCwgeDEsIHgzKSA8PSAwKSB7Ci0gICAgICAgICAgICAgIHJldHVy
biAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICB4MiwKLSAgICAgICAgICAgICAgICAg
ICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgIHgxLAotICAgICAgICAgICAg
ICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgICAg
IF0KLSAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgIF07Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChDdXJyeS5fMihjbXAsIHgyLCB4MykgPD0g
MCkgewotICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAg
ICAgeDIsCi0gICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAg
ICAgICAgICB4MywKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8w
Ci0gICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgXQotICAg
ICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICB4MywK
LSAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAg
IHgyLAotICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHgxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAg
ICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAg
ICAgICAgICAgIF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgIGV4aXQgPSAxOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBl
bHNlIHsKLSAgICAgICAgZXhpdCA9IDE7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGwp
IHsKLSAgICAgIHZhciBtYXRjaCQyID0gbFsxXTsKLSAgICAgIGlmIChtYXRjaCQyKSB7Ci0gICAg
ICAgIHZhciB4MiQxID0gbWF0Y2gkMlswXTsKLSAgICAgICAgdmFyIHgxJDEgPSBsWzBdOwotICAg
ICAgICBpZiAoQ3VycnkuXzIoY21wLCB4MSQxLCB4MiQxKSA8PSAwKSB7Ci0gICAgICAgICAgcmV0
dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgeDEkMSwKLSAgICAgICAgICAgICAgICAg
IC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICB4MiQxLAotICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICBdOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAg
ICAgICAgICAgICAgIHgyJDEsCi0gICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAg
ICAgICAgICAgICAgeDEkMSwKLSAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAg
ICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgXTsKLSAgICAgICAgfQotICAgICAgfQotICAg
ICAgZWxzZSB7Ci0gICAgICAgIGV4aXQgPSAxOwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsK
LSAgICAgIGV4aXQgPSAxOwotICAgIH0KLSAgICBpZiAoZXhpdCA9PT0gMSkgewotICAgICAgdmFy
IG4xID0gKG4gPj4gMSk7Ci0gICAgICB2YXIgbjIgPSBuIC0gbjEgfCAwOwotICAgICAgdmFyIGwy
ID0gY2hvcChuMSwgbCk7Ci0gICAgICB2YXIgczEgPSByZXZfc29ydChuMSwgbCk7Ci0gICAgICB2
YXIgczIgPSByZXZfc29ydChuMiwgbDIpOwotICAgICAgdmFyIF9sMSA9IHMxOwotICAgICAgdmFy
IF9sMiA9IHMyOwotICAgICAgdmFyIF9hY2N1ID0gLyogW10gKi8wOwotICAgICAgd2hpbGUodHJ1
ZSkgewotICAgICAgICB2YXIgYWNjdSA9IF9hY2N1OwotICAgICAgICB2YXIgbDIkMSA9IF9sMjsK
LSAgICAgICAgdmFyIGwxID0gX2wxOwotICAgICAgICBpZiAobDEpIHsKLSAgICAgICAgICBpZiAo
bDIkMSkgewotICAgICAgICAgICAgdmFyIGgyID0gbDIkMVswXTsKLSAgICAgICAgICAgIHZhciBo
MSA9IGwxWzBdOwotICAgICAgICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwgaDEsIGgyKSA+IDApIHsK
LSAgICAgICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICBoMSwKLSAg
ICAgICAgICAgICAgICBhY2N1Ci0gICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgIF9sMSA9
IGwxWzFdOwotICAgICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICAgIAotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgIF9hY2N1ID0gLyogOjog
Ki9bCi0gICAgICAgICAgICAgICAgaDIsCi0gICAgICAgICAgICAgICAgYWNjdQotICAgICAgICAg
ICAgICBdOwotICAgICAgICAgICAgICBfbDIgPSBsMiQxWzFdOwotICAgICAgICAgICAgICBjb250
aW51ZSA7Ci0gICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXZfYXBwZW5kKGwxLCBhY2N1KTsKLSAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIHJl
dl9hcHBlbmQobDIkMSwgYWNjdSk7Ci0gICAgICAgIH0KLSAgICAgIH07Ci0gICAgfQotICAgIAot
ICB9OwotICB2YXIgcmV2X3NvcnQgPSBmdW5jdGlvbiAobiwgbCkgewotICAgIHZhciBleGl0ID0g
MDsKLSAgICBpZiAobiAhPT0gMikgewotICAgICAgaWYgKG4gIT09IDMpIHsKLSAgICAgICAgZXhp
dCA9IDE7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChsKSB7Ci0gICAgICAgIHZhciBtYXRjaCA9
IGxbMV07Ci0gICAgICAgIGlmIChtYXRjaCkgewotICAgICAgICAgIHZhciBtYXRjaCQxID0gbWF0
Y2hbMV07Ci0gICAgICAgICAgaWYgKG1hdGNoJDEpIHsKLSAgICAgICAgICAgIHZhciB4MyA9IG1h
dGNoJDFbMF07Ci0gICAgICAgICAgICB2YXIgeDIgPSBtYXRjaFswXTsKLSAgICAgICAgICAgIHZh
ciB4MSA9IGxbMF07Ci0gICAgICAgICAgICBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDIpID4gMCkg
ewotICAgICAgICAgICAgICBpZiAoQ3VycnkuXzIoY21wLCB4MiwgeDMpID4gMCkgewotICAgICAg
ICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgIHgxLAot
ICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAq
LzAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAg
XQotICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDMpID4gMCkgewotICAgICAgICAgICAgICAg
IHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgIHgxLAotICAgICAgICAg
ICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAg
ICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAg
ICAgeDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgeDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAg
ICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoQ3VycnkuXzIoY21wLCB4MSwgeDMpID4g
MCkgewotICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAg
ICAgeDIsCi0gICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAg
ICAgICAgICB4MSwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8w
Ci0gICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgXQotICAg
ICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
Q3VycnkuXzIoY21wLCB4MiwgeDMpID4gMCkgewotICAgICAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCi0gICAgICAgICAgICAgICAgICAgICAgeDIsCi0gICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICB4MywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAg
ICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAg
ICAgICAgICAgICAgICAgICAgICB4MywKLSAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
LSAgICAgICAgICAgICAgICAgICAgICAgIHgyLAotICAgICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAg
ICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXhpdCA9IDE7Ci0gICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIGV4aXQgPSAxOwotICAg
ICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgZXhpdCA9IDE7Ci0gICAgICB9
Ci0gICAgfQotICAgIGVsc2UgaWYgKGwpIHsKLSAgICAgIHZhciBtYXRjaCQyID0gbFsxXTsKLSAg
ICAgIGlmIChtYXRjaCQyKSB7Ci0gICAgICAgIHZhciB4MiQxID0gbWF0Y2gkMlswXTsKLSAgICAg
ICAgdmFyIHgxJDEgPSBsWzBdOwotICAgICAgICBpZiAoQ3VycnkuXzIoY21wLCB4MSQxLCB4MiQx
KSA+IDApIHsKLSAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICB4
MSQxLAotICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgIHgy
JDEsCi0gICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgXQot
ICAgICAgICAgICAgICAgIF07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
cmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgeDIkMSwKLSAgICAgICAgICAgICAg
ICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICB4MSQxLAotICAgICAgICAgICAgICAg
ICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICBdOwot
ICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgZXhpdCA9IDE7Ci0gICAg
ICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgZXhpdCA9IDE7Ci0gICAgfQotICAgIGlmIChl
eGl0ID09PSAxKSB7Ci0gICAgICB2YXIgbjEgPSAobiA+PiAxKTsKLSAgICAgIHZhciBuMiA9IG4g
LSBuMSB8IDA7Ci0gICAgICB2YXIgbDIgPSBjaG9wKG4xLCBsKTsKLSAgICAgIHZhciBzMSA9IHNv
cnQobjEsIGwpOwotICAgICAgdmFyIHMyID0gc29ydChuMiwgbDIpOwotICAgICAgdmFyIF9sMSA9
IHMxOwotICAgICAgdmFyIF9sMiA9IHMyOwotICAgICAgdmFyIF9hY2N1ID0gLyogW10gKi8wOwot
ICAgICAgd2hpbGUodHJ1ZSkgewotICAgICAgICB2YXIgYWNjdSA9IF9hY2N1OwotICAgICAgICB2
YXIgbDIkMSA9IF9sMjsKLSAgICAgICAgdmFyIGwxID0gX2wxOwotICAgICAgICBpZiAobDEpIHsK
LSAgICAgICAgICBpZiAobDIkMSkgewotICAgICAgICAgICAgdmFyIGgyID0gbDIkMVswXTsKLSAg
ICAgICAgICAgIHZhciBoMSA9IGwxWzBdOwotICAgICAgICAgICAgaWYgKEN1cnJ5Ll8yKGNtcCwg
aDEsIGgyKSA8PSAwKSB7Ci0gICAgICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCi0gICAgICAg
ICAgICAgICAgaDEsCi0gICAgICAgICAgICAgICAgYWNjdQotICAgICAgICAgICAgICBdOwotICAg
ICAgICAgICAgICBfbDEgPSBsMVsxXTsKLSAgICAgICAgICAgICAgY29udGludWUgOwotICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICBfYWNjdSA9IC8qIDo6ICovWwotICAgICAgICAgICAgICAgIGgyLAotICAgICAgICAgICAgICAg
IGFjY3UKLSAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgX2wyID0gbDIkMVsxXTsKLSAg
ICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICB9Ci0gICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcmV2X2FwcGVu
ZChsMSwgYWNjdSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgIHJldHVybiByZXZfYXBwZW5kKGwyJDEsIGFjY3UpOwotICAgICAgICB9Ci0gICAgICB9
OwotICAgIH0KLSAgICAKLSAgfTsKLSAgdmFyIGxlbiA9IGxlbmd0aChsKTsKLSAgaWYgKGxlbiA8
IDIpIHsKLSAgICByZXR1cm4gbDsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gc29ydChsZW4s
IGwpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHNvcnRfdW5pcShjbXAsIGwpIHsKLSAgdmFyIHNvcnQg
PSBmdW5jdGlvbiAobiwgbCkgewotICAgIHZhciBleGl0ID0gMDsKLSAgICBpZiAobiAhPT0gMikg
ewotICAgICAgaWYgKG4gIT09IDMpIHsKLSAgICAgICAgZXhpdCA9IDE7Ci0gICAgICB9Ci0gICAg
ICBlbHNlIGlmIChsKSB7Ci0gICAgICAgIHZhciBtYXRjaCA9IGxbMV07Ci0gICAgICAgIGlmICht
YXRjaCkgewotICAgICAgICAgIHZhciBtYXRjaCQxID0gbWF0Y2hbMV07Ci0gICAgICAgICAgaWYg
KG1hdGNoJDEpIHsKLSAgICAgICAgICAgIHZhciB4MyA9IG1hdGNoJDFbMF07Ci0gICAgICAgICAg
ICB2YXIgeDIgPSBtYXRjaFswXTsKLSAgICAgICAgICAgIHZhciB4MSA9IGxbMF07Ci0gICAgICAg
ICAgICB2YXIgYyA9IEN1cnJ5Ll8yKGNtcCwgeDEsIHgyKTsKLSAgICAgICAgICAgIGlmIChjKSB7
Ci0gICAgICAgICAgICAgIGlmIChjIDwgMCkgewotICAgICAgICAgICAgICAgIHZhciBjJDEgPSBD
dXJyeS5fMihjbXAsIHgyLCB4Myk7Ci0gICAgICAgICAgICAgICAgaWYgKGMkMSkgewotICAgICAg
ICAgICAgICAgICAgaWYgKGMkMSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8q
IDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IFtdICovMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICB2
YXIgYyQyID0gQ3VycnkuXzIoY21wLCB4MSwgeDMpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
YyQyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgaWYgKGMkMiA8IDApIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgeDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB4MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB4MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHgxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAq
L1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAg
ICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyIGMkMyA9IEN1cnJ5Ll8yKGNt
cCwgeDEsIHgzKTsKLSAgICAgICAgICAgICAgICBpZiAoYyQzKSB7Ci0gICAgICAgICAgICAgICAg
ICBpZiAoYyQzIDwgMCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB4MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBjJDQgPSBD
dXJyeS5fMihjbXAsIHgyLCB4Myk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjJDQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICBpZiAoYyQ0IDwgMCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8q
IFtdICovMAotICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAg
ICAgICBdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgIHZhciBjJDUgPSBDdXJyeS5fMihj
bXAsIHgyLCB4Myk7Ci0gICAgICAgICAgICAgIGlmIChjJDUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoYyQ1IDwgMCkgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjog
Ki9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIF07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHgyLAotICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAg
ICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGV4aXQgPSAxOwotICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBleGl0ID0gMTsKLSAg
ICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGV4aXQgPSAxOwotICAgICAg
fQotICAgIH0KLSAgICBlbHNlIGlmIChsKSB7Ci0gICAgICB2YXIgbWF0Y2gkMiA9IGxbMV07Ci0g
ICAgICBpZiAobWF0Y2gkMikgewotICAgICAgICB2YXIgeDIkMSA9IG1hdGNoJDJbMF07Ci0gICAg
ICAgIHZhciB4MSQxID0gbFswXTsKLSAgICAgICAgdmFyIGMkNiA9IEN1cnJ5Ll8yKGNtcCwgeDEk
MSwgeDIkMSk7Ci0gICAgICAgIGlmIChjJDYpIHsKLSAgICAgICAgICBpZiAoYyQ2IDwgMCkgewot
ICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICB4MSQxLAot
ICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICB4MiQx
LAotICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICBd
Ci0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgeDIkMSwKLSAg
ICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgeDEkMSwK
LSAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgXQot
ICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgeDEkMSwK
LSAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgIF07Ci0gICAgICAg
IH0KLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBleGl0ID0gMTsKLSAgICAgIH0KLSAg
ICB9Ci0gICAgZWxzZSB7Ci0gICAgICBleGl0ID0gMTsKLSAgICB9Ci0gICAgaWYgKGV4aXQgPT09
IDEpIHsKLSAgICAgIHZhciBuMSA9IChuID4+IDEpOwotICAgICAgdmFyIG4yID0gbiAtIG4xIHwg
MDsKLSAgICAgIHZhciBsMiA9IGNob3AobjEsIGwpOwotICAgICAgdmFyIHMxID0gcmV2X3NvcnQo
bjEsIGwpOwotICAgICAgdmFyIHMyID0gcmV2X3NvcnQobjIsIGwyKTsKLSAgICAgIHZhciBfbDEg
PSBzMTsKLSAgICAgIHZhciBfbDIgPSBzMjsKLSAgICAgIHZhciBfYWNjdSA9IC8qIFtdICovMDsK
LSAgICAgIHdoaWxlKHRydWUpIHsKLSAgICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKLSAgICAgICAg
dmFyIGwyJDEgPSBfbDI7Ci0gICAgICAgIHZhciBsMSA9IF9sMTsKLSAgICAgICAgaWYgKGwxKSB7
Ci0gICAgICAgICAgaWYgKGwyJDEpIHsKLSAgICAgICAgICAgIHZhciB0MiA9IGwyJDFbMV07Ci0g
ICAgICAgICAgICB2YXIgaDIgPSBsMiQxWzBdOwotICAgICAgICAgICAgdmFyIHQxID0gbDFbMV07
Ci0gICAgICAgICAgICB2YXIgaDEgPSBsMVswXTsKLSAgICAgICAgICAgIHZhciBjJDcgPSBDdXJy
eS5fMihjbXAsIGgxLCBoMik7Ci0gICAgICAgICAgICBpZiAoYyQ3KSB7Ci0gICAgICAgICAgICAg
IGlmIChjJDcgPiAwKSB7Ci0gICAgICAgICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sKLSAgICAg
ICAgICAgICAgICAgIGgxLAotICAgICAgICAgICAgICAgICAgYWNjdQotICAgICAgICAgICAgICAg
IF07Ci0gICAgICAgICAgICAgICAgX2wxID0gdDE7Ci0gICAgICAgICAgICAgICAgY29udGludWUg
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICBo
MiwKLSAgICAgICAgICAgICAgICAgIGFjY3UKLSAgICAgICAgICAgICAgICBdOwotICAgICAgICAg
ICAgICAgIF9sMiA9IHQyOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCi0gICAgICAgICAgICAgICAgaDEsCi0g
ICAgICAgICAgICAgICAgYWNjdQotICAgICAgICAgICAgICBdOwotICAgICAgICAgICAgICBfbDIg
PSB0MjsKLSAgICAgICAgICAgICAgX2wxID0gdDE7Ci0gICAgICAgICAgICAgIGNvbnRpbnVlIDsK
LSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgcmV0dXJuIHJldl9hcHBlbmQobDEsIGFjY3UpOwotICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gcmV2X2FwcGVu
ZChsMiQxLCBhY2N1KTsKLSAgICAgICAgfQotICAgICAgfTsKLSAgICB9Ci0gICAgCi0gIH07Ci0g
IHZhciByZXZfc29ydCA9IGZ1bmN0aW9uIChuLCBsKSB7Ci0gICAgdmFyIGV4aXQgPSAwOwotICAg
IGlmIChuICE9PSAyKSB7Ci0gICAgICBpZiAobiAhPT0gMykgewotICAgICAgICBleGl0ID0gMTsK
LSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGwpIHsKLSAgICAgICAgdmFyIG1hdGNoID0gbFsxXTsK
LSAgICAgICAgaWYgKG1hdGNoKSB7Ci0gICAgICAgICAgdmFyIG1hdGNoJDEgPSBtYXRjaFsxXTsK
LSAgICAgICAgICBpZiAobWF0Y2gkMSkgewotICAgICAgICAgICAgdmFyIHgzID0gbWF0Y2gkMVsw
XTsKLSAgICAgICAgICAgIHZhciB4MiA9IG1hdGNoWzBdOwotICAgICAgICAgICAgdmFyIHgxID0g
bFswXTsKLSAgICAgICAgICAgIHZhciBjID0gQ3VycnkuXzIoY21wLCB4MSwgeDIpOwotICAgICAg
ICAgICAgaWYgKGMpIHsKLSAgICAgICAgICAgICAgaWYgKGMgPiAwKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGMkMSA9IEN1cnJ5Ll8yKGNtcCwgeDIsIHgzKTsKLSAgICAgICAgICAgICAgICBpZiAo
YyQxKSB7Ci0gICAgICAgICAgICAgICAgICBpZiAoYyQxID4gMCkgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICBd
OwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBjJDIgPSBDdXJyeS5fMihjbXAsIHgxLCB4Myk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChjJDIpIHsKLSAgICAgICAgICAgICAgICAgICAgICBpZiAoYyQyID4gMCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB4MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB4MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XTsKLSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHgzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
OwotICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjog
Ki9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6
OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBdCi0gICAgICAgICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YXIgYyQz
ID0gQ3VycnkuXzIoY21wLCB4MSwgeDMpOwotICAgICAgICAgICAgICAgIGlmIChjJDMpIHsKLSAg
ICAgICAgICAgICAgICAgIGlmIChjJDMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHgxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogOjogKi9bCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHgzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIGMkNCA9IEN1cnJ5Ll8yKGNtcCwgeDIsIHgzKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGMkNCkgewotICAgICAgICAgICAgICAgICAgICAgIGlmIChjJDQgPiAwKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHgxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8w
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwotICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgeDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICB4MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
OjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeDEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgdmFyIGMk
NSA9IEN1cnJ5Ll8yKGNtcCwgeDIsIHgzKTsKLSAgICAgICAgICAgICAgaWYgKGMkNSkgewotICAg
ICAgICAgICAgICAgIGlmIChjJDUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gLyog
OjogKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHgyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgXQotICAgICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHgzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAv
KiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4MiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAg
ICAgICAgICAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICov
WwotICAgICAgICAgICAgICAgICAgICAgICAgeDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZXhp
dCA9IDE7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
IGV4aXQgPSAxOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgZXhp
dCA9IDE7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2UgaWYgKGwpIHsKLSAgICAgIHZhciBtYXRj
aCQyID0gbFsxXTsKLSAgICAgIGlmIChtYXRjaCQyKSB7Ci0gICAgICAgIHZhciB4MiQxID0gbWF0
Y2gkMlswXTsKLSAgICAgICAgdmFyIHgxJDEgPSBsWzBdOwotICAgICAgICB2YXIgYyQ2ID0gQ3Vy
cnkuXzIoY21wLCB4MSQxLCB4MiQxKTsKLSAgICAgICAgaWYgKGMkNikgewotICAgICAgICAgIGlm
IChjJDYgPiAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAg
ICAgICAgIHgxJDEsCi0gICAgICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAg
ICAgICAgICAgIHgyJDEsCi0gICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAg
ICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgfQotICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgICAg
ICAgICB4MiQxLAotICAgICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAg
ICAgICAgICB4MSQxLAotICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAg
ICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAg
ICAgICAgICB4MSQxLAotICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAg
ICAgXTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIGV4aXQgPSAx
OwotICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIGV4aXQgPSAxOwotICAgIH0KLSAg
ICBpZiAoZXhpdCA9PT0gMSkgewotICAgICAgdmFyIG4xID0gKG4gPj4gMSk7Ci0gICAgICB2YXIg
bjIgPSBuIC0gbjEgfCAwOwotICAgICAgdmFyIGwyID0gY2hvcChuMSwgbCk7Ci0gICAgICB2YXIg
czEgPSBzb3J0KG4xLCBsKTsKLSAgICAgIHZhciBzMiA9IHNvcnQobjIsIGwyKTsKLSAgICAgIHZh
ciBfbDEgPSBzMTsKLSAgICAgIHZhciBfbDIgPSBzMjsKLSAgICAgIHZhciBfYWNjdSA9IC8qIFtd
ICovMDsKLSAgICAgIHdoaWxlKHRydWUpIHsKLSAgICAgICAgdmFyIGFjY3UgPSBfYWNjdTsKLSAg
ICAgICAgdmFyIGwyJDEgPSBfbDI7Ci0gICAgICAgIHZhciBsMSA9IF9sMTsKLSAgICAgICAgaWYg
KGwxKSB7Ci0gICAgICAgICAgaWYgKGwyJDEpIHsKLSAgICAgICAgICAgIHZhciB0MiA9IGwyJDFb
MV07Ci0gICAgICAgICAgICB2YXIgaDIgPSBsMiQxWzBdOwotICAgICAgICAgICAgdmFyIHQxID0g
bDFbMV07Ci0gICAgICAgICAgICB2YXIgaDEgPSBsMVswXTsKLSAgICAgICAgICAgIHZhciBjJDcg
PSBDdXJyeS5fMihjbXAsIGgxLCBoMik7Ci0gICAgICAgICAgICBpZiAoYyQ3KSB7Ci0gICAgICAg
ICAgICAgIGlmIChjJDcgPCAwKSB7Ci0gICAgICAgICAgICAgICAgX2FjY3UgPSAvKiA6OiAqL1sK
LSAgICAgICAgICAgICAgICAgIGgxLAotICAgICAgICAgICAgICAgICAgYWNjdQotICAgICAgICAg
ICAgICAgIF07Ci0gICAgICAgICAgICAgICAgX2wxID0gdDE7Ci0gICAgICAgICAgICAgICAgY29u
dGludWUgOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCi0gICAgICAgICAgICAg
ICAgICBoMiwKLSAgICAgICAgICAgICAgICAgIGFjY3UKLSAgICAgICAgICAgICAgICBdOwotICAg
ICAgICAgICAgICAgIF9sMiA9IHQyOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlIDsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgIF9hY2N1ID0gLyogOjogKi9bCi0gICAgICAgICAgICAgICAg
aDEsCi0gICAgICAgICAgICAgICAgYWNjdQotICAgICAgICAgICAgICBdOwotICAgICAgICAgICAg
ICBfbDIgPSB0MjsKLSAgICAgICAgICAgICAgX2wxID0gdDE7Ci0gICAgICAgICAgICAgIGNvbnRp
bnVlIDsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJldl9hcHBlbmQobDEsIGFjY3UpOwotICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gcmV2
X2FwcGVuZChsMiQxLCBhY2N1KTsKLSAgICAgICAgfQotICAgICAgfTsKLSAgICB9Ci0gICAgCi0g
IH07Ci0gIHZhciBsZW4gPSBsZW5ndGgobCk7Ci0gIGlmIChsZW4gPCAyKSB7Ci0gICAgcmV0dXJu
IGw7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIHNvcnQobGVuLCBsKTsKLSAgfQotfQotCi12
YXIgYXBwZW5kID0gUGVydmFzaXZlcy4kYXQ7Ci0KLXZhciBjb25jYXQgPSBmbGF0dGVuOwotCi12
YXIgZmlsdGVyID0gZmluZF9hbGw7Ci0KLXZhciBzb3J0ID0gc3RhYmxlX3NvcnQ7Ci0KLXZhciBm
YXN0X3NvcnQgPSBzdGFibGVfc29ydDsKLQotZXhwb3J0cy5sZW5ndGggICAgICAgPSBsZW5ndGg7
Ci1leHBvcnRzLmhkICAgICAgICAgICA9IGhkOwotZXhwb3J0cy50bCAgICAgICAgICAgPSB0bDsK
LWV4cG9ydHMubnRoICAgICAgICAgID0gbnRoOwotZXhwb3J0cy5yZXYgICAgICAgICAgPSByZXY7
Ci1leHBvcnRzLmFwcGVuZCAgICAgICA9IGFwcGVuZDsKLWV4cG9ydHMucmV2X2FwcGVuZCAgID0g
cmV2X2FwcGVuZDsKLWV4cG9ydHMuY29uY2F0ICAgICAgID0gY29uY2F0OwotZXhwb3J0cy5mbGF0
dGVuICAgICAgPSBmbGF0dGVuOwotZXhwb3J0cy5pdGVyICAgICAgICAgPSBpdGVyOwotZXhwb3J0
cy5pdGVyaSAgICAgICAgPSBpdGVyaTsKLWV4cG9ydHMubWFwICAgICAgICAgID0gbWFwOwotZXhw
b3J0cy5tYXBpICAgICAgICAgPSBtYXBpJDE7Ci1leHBvcnRzLnJldl9tYXAgICAgICA9IHJldl9t
YXA7Ci1leHBvcnRzLmZvbGRfbGVmdCAgICA9IGZvbGRfbGVmdDsKLWV4cG9ydHMuZm9sZF9yaWdo
dCAgID0gZm9sZF9yaWdodDsKLWV4cG9ydHMuaXRlcjIgICAgICAgID0gaXRlcjI7Ci1leHBvcnRz
Lm1hcDIgICAgICAgICA9IG1hcDI7Ci1leHBvcnRzLnJldl9tYXAyICAgICA9IHJldl9tYXAyOwot
ZXhwb3J0cy5mb2xkX2xlZnQyICAgPSBmb2xkX2xlZnQyOwotZXhwb3J0cy5mb2xkX3JpZ2h0MiAg
PSBmb2xkX3JpZ2h0MjsKLWV4cG9ydHMuZm9yX2FsbCAgICAgID0gZm9yX2FsbDsKLWV4cG9ydHMu
ZXhpc3RzICAgICAgID0gZXhpc3RzOwotZXhwb3J0cy5mb3JfYWxsMiAgICAgPSBmb3JfYWxsMjsK
LWV4cG9ydHMuZXhpc3RzMiAgICAgID0gZXhpc3RzMjsKLWV4cG9ydHMubWVtICAgICAgICAgID0g
bWVtOwotZXhwb3J0cy5tZW1xICAgICAgICAgPSBtZW1xOwotZXhwb3J0cy5maW5kICAgICAgICAg
PSBmaW5kOwotZXhwb3J0cy5maWx0ZXIgICAgICAgPSBmaWx0ZXI7Ci1leHBvcnRzLmZpbmRfYWxs
ICAgICA9IGZpbmRfYWxsOwotZXhwb3J0cy5wYXJ0aXRpb24gICAgPSBwYXJ0aXRpb247Ci1leHBv
cnRzLmFzc29jICAgICAgICA9IGFzc29jOwotZXhwb3J0cy5hc3NxICAgICAgICAgPSBhc3NxOwot
ZXhwb3J0cy5tZW1fYXNzb2MgICAgPSBtZW1fYXNzb2M7Ci1leHBvcnRzLm1lbV9hc3NxICAgICA9
IG1lbV9hc3NxOwotZXhwb3J0cy5yZW1vdmVfYXNzb2MgPSByZW1vdmVfYXNzb2M7Ci1leHBvcnRz
LnJlbW92ZV9hc3NxICA9IHJlbW92ZV9hc3NxOwotZXhwb3J0cy5zcGxpdCAgICAgICAgPSBzcGxp
dDsKLWV4cG9ydHMuY29tYmluZSAgICAgID0gY29tYmluZTsKLWV4cG9ydHMuc29ydCAgICAgICAg
ID0gc29ydDsKLWV4cG9ydHMuc3RhYmxlX3NvcnQgID0gc3RhYmxlX3NvcnQ7Ci1leHBvcnRzLmZh
c3Rfc29ydCAgICA9IGZhc3Rfc29ydDsKLWV4cG9ydHMuc29ydF91bmlxICAgID0gc29ydF91bmlx
OwotZXhwb3J0cy5tZXJnZSAgICAgICAgPSBtZXJnZTsKLS8qIE5vIHNpZGUgZWZmZWN0ICovCi0v
Ly8vLy8vLyBlbmQgb2YgbGlzdC5qcyAvLy8vLy8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9
OwotCi0KLSAgX3JlZ2lzdHJ5WydtYXAnXSA9IGZ1bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRz
ID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBtYXAuanMgLy8vLy8vLy8KLSd1c2Ugc3RyaWN0JzsK
LQotdmFyIEN1cnJ5ICAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jdXJyeSIpOwotdmFy
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2J1aWx0aW5fZXhjZXB0
aW9ucyIpOwotCi1mdW5jdGlvbiBNYWtlKGZ1bmFyZykgewotICB2YXIgaGVpZ2h0ID0gZnVuY3Rp
b24gKHBhcmFtKSB7Ci0gICAgaWYgKHBhcmFtKSB7Ci0gICAgICByZXR1cm4gcGFyYW1bNF07Ci0g
ICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICB9OwotICB2YXIgY3Jl
YXRlID0gZnVuY3Rpb24gKGwsIHgsIGQsIHIpIHsKLSAgICB2YXIgaGwgPSBoZWlnaHQobCk7Ci0g
ICAgdmFyIGhyID0gaGVpZ2h0KHIpOwotICAgIHJldHVybiAvKiBOb2RlICovWwotICAgICAgICAg
ICAgbCwKLSAgICAgICAgICAgIHgsCi0gICAgICAgICAgICBkLAotICAgICAgICAgICAgciwKLSAg
ICAgICAgICAgIGhsID49IGhyID8gaGwgKyAxIHwgMCA6IGhyICsgMSB8IDAKLSAgICAgICAgICBd
OwotICB9OwotICB2YXIgc2luZ2xldG9uID0gZnVuY3Rpb24gKHgsIGQpIHsKLSAgICByZXR1cm4g
LyogTm9kZSAqL1sKLSAgICAgICAgICAgIC8qIEVtcHR5ICovMCwKLSAgICAgICAgICAgIHgsCi0g
ICAgICAgICAgICBkLAotICAgICAgICAgICAgLyogRW1wdHkgKi8wLAotICAgICAgICAgICAgMQot
ICAgICAgICAgIF07Ci0gIH07Ci0gIHZhciBiYWwgPSBmdW5jdGlvbiAobCwgeCwgZCwgcikgewot
ICAgIHZhciBobCA9IGwgPyBsWzRdIDogMDsKLSAgICB2YXIgaHIgPSByID8gcls0XSA6IDA7Ci0g
ICAgaWYgKGhsID4gKGhyICsgMiB8IDApKSB7Ci0gICAgICBpZiAobCkgewotICAgICAgICB2YXIg
bHIgPSBsWzNdOwotICAgICAgICB2YXIgbGQgPSBsWzJdOwotICAgICAgICB2YXIgbHYgPSBsWzFd
OwotICAgICAgICB2YXIgbGwgPSBsWzBdOwotICAgICAgICBpZiAoaGVpZ2h0KGxsKSA+PSBoZWln
aHQobHIpKSB7Ci0gICAgICAgICAgcmV0dXJuIGNyZWF0ZShsbCwgbHYsIGxkLCBjcmVhdGUobHIs
IHgsIGQsIHIpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChscikgewotICAgICAgICAg
IHJldHVybiBjcmVhdGUoY3JlYXRlKGxsLCBsdiwgbGQsIGxyWzBdKSwgbHJbMV0sIGxyWzJdLCBj
cmVhdGUobHJbM10sIHgsIGQsIHIpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52
YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAgICAgICAiTWFwLmJhbCIKLSAgICAgICAgICAgICAg
XTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHRocm93IFsKLSAg
ICAgICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAg
ICAgICAgICAgICAgIk1hcC5iYWwiCi0gICAgICAgICAgICBdOwotICAgICAgfQotICAgIH0KLSAg
ICBlbHNlIGlmIChociA+IChobCArIDIgfCAwKSkgewotICAgICAgaWYgKHIpIHsKLSAgICAgICAg
dmFyIHJyID0gclszXTsKLSAgICAgICAgdmFyIHJkID0gclsyXTsKLSAgICAgICAgdmFyIHJ2ID0g
clsxXTsKLSAgICAgICAgdmFyIHJsID0gclswXTsKLSAgICAgICAgaWYgKGhlaWdodChycikgPj0g
aGVpZ2h0KHJsKSkgewotICAgICAgICAgIHJldHVybiBjcmVhdGUoY3JlYXRlKGwsIHgsIGQsIHJs
KSwgcnYsIHJkLCBycik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocmwpIHsKLSAgICAg
ICAgICByZXR1cm4gY3JlYXRlKGNyZWF0ZShsLCB4LCBkLCBybFswXSksIHJsWzFdLCBybFsyXSwg
Y3JlYXRlKHJsWzNdLCBydiwgcmQsIHJyKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25z
LmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAgICAgIk1hcC5iYWwiCi0gICAgICAgICAg
ICAgIF07Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICB0aHJvdyBb
Ci0gICAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQs
Ci0gICAgICAgICAgICAgICJNYXAuYmFsIgotICAgICAgICAgICAgXTsKLSAgICAgIH0KLSAgICB9
Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogTm9kZSAqL1sKLSAgICAgICAgICAgICAgbCwK
LSAgICAgICAgICAgICAgeCwKLSAgICAgICAgICAgICAgZCwKLSAgICAgICAgICAgICAgciwKLSAg
ICAgICAgICAgICAgaGwgPj0gaHIgPyBobCArIDEgfCAwIDogaHIgKyAxIHwgMAotICAgICAgICAg
ICAgXTsKLSAgICB9Ci0gIH07Ci0gIHZhciBpc19lbXB0eSA9IGZ1bmN0aW9uIChwYXJhbSkgewot
ICAgIGlmIChwYXJhbSkgewotICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgICB9Ci0gICAg
ZWxzZSB7Ci0gICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gICAgfQotICB9OwotICB2YXIgYWRk
ID0gZnVuY3Rpb24gKHgsIGRhdGEsIHBhcmFtKSB7Ci0gICAgaWYgKHBhcmFtKSB7Ci0gICAgICB2
YXIgciA9IHBhcmFtWzNdOwotICAgICAgdmFyIGQgPSBwYXJhbVsyXTsKLSAgICAgIHZhciB2ID0g
cGFyYW1bMV07Ci0gICAgICB2YXIgbCA9IHBhcmFtWzBdOwotICAgICAgdmFyIGMgPSBDdXJyeS5f
MihmdW5hcmdbLyogY29tcGFyZSAqLzBdLCB4LCB2KTsKLSAgICAgIGlmIChjKSB7Ci0gICAgICAg
IGlmIChjIDwgMCkgewotICAgICAgICAgIHJldHVybiBiYWwoYWRkKHgsIGRhdGEsIGwpLCB2LCBk
LCByKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gYmFsKGws
IHYsIGQsIGFkZCh4LCBkYXRhLCByKSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2Ug
ewotICAgICAgICByZXR1cm4gLyogTm9kZSAqL1sKLSAgICAgICAgICAgICAgICBsLAotICAgICAg
ICAgICAgICAgIHgsCi0gICAgICAgICAgICAgICAgZGF0YSwKLSAgICAgICAgICAgICAgICByLAot
ICAgICAgICAgICAgICAgIHBhcmFtWzRdCi0gICAgICAgICAgICAgIF07Ci0gICAgICB9Ci0gICAg
fQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIC8qIE5vZGUgKi9bCi0gICAgICAgICAgICAgIC8q
IEVtcHR5ICovMCwKLSAgICAgICAgICAgICAgeCwKLSAgICAgICAgICAgICAgZGF0YSwKLSAgICAg
ICAgICAgICAgLyogRW1wdHkgKi8wLAotICAgICAgICAgICAgICAxCi0gICAgICAgICAgICBdOwot
ICAgIH0KLSAgfTsKLSAgdmFyIGZpbmQgPSBmdW5jdGlvbiAoeCwgX3BhcmFtKSB7Ci0gICAgd2hp
bGUodHJ1ZSkgewotICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOwotICAgICAgaWYgKHBhcmFtKSB7
Ci0gICAgICAgIHZhciBjID0gQ3VycnkuXzIoZnVuYXJnWy8qIGNvbXBhcmUgKi8wXSwgeCwgcGFy
YW1bMV0pOwotICAgICAgICBpZiAoYykgewotICAgICAgICAgIF9wYXJhbSA9IGMgPCAwID8gcGFy
YW1bMF0gOiBwYXJhbVszXTsKLSAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgCi0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIHBhcmFtWzJdOwotICAgICAg
ICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMubm90X2ZvdW5kOwotICAgICAgfQotICAgIH07Ci0gIH07Ci0gIHZhciBtZW0gPSBm
dW5jdGlvbiAoeCwgX3BhcmFtKSB7Ci0gICAgd2hpbGUodHJ1ZSkgewotICAgICAgdmFyIHBhcmFt
ID0gX3BhcmFtOwotICAgICAgaWYgKHBhcmFtKSB7Ci0gICAgICAgIHZhciBjID0gQ3VycnkuXzIo
ZnVuYXJnWy8qIGNvbXBhcmUgKi8wXSwgeCwgcGFyYW1bMV0pOwotICAgICAgICBpZiAoYykgewot
ICAgICAgICAgIF9wYXJhbSA9IGMgPCAwID8gcGFyYW1bMF0gOiBwYXJhbVszXTsKLSAgICAgICAg
ICBjb250aW51ZSA7Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNl
IHsKLSAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgICAgIH0KLSAgICB9OwotICB9Owot
ICB2YXIgbWluX2JpbmRpbmcgPSBmdW5jdGlvbiAoX3BhcmFtKSB7Ci0gICAgd2hpbGUodHJ1ZSkg
ewotICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOwotICAgICAgaWYgKHBhcmFtKSB7Ci0gICAgICAg
IHZhciBsID0gcGFyYW1bMF07Ci0gICAgICAgIGlmIChsKSB7Ci0gICAgICAgICAgX3BhcmFtID0g
bDsKLSAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAgICAg
cGFyYW1bMV0sCi0gICAgICAgICAgICAgICAgICBwYXJhbVsyXQotICAgICAgICAgICAgICAgIF07
Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICB0aHJvdyBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQ7Ci0gICAgICB9Ci0gICAgfTsKLSAgfTsKLSAgdmFy
IG1heF9iaW5kaW5nID0gZnVuY3Rpb24gKF9wYXJhbSkgewotICAgIHdoaWxlKHRydWUpIHsKLSAg
ICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKLSAgICAgIGlmIChwYXJhbSkgewotICAgICAgICB2YXIg
ciA9IHBhcmFtWzNdOwotICAgICAgICBpZiAocikgewotICAgICAgICAgIF9wYXJhbSA9IHI7Ci0g
ICAgICAgICAgY29udGludWUgOwotICAgICAgICAgIAotICAgICAgICB9Ci0gICAgICAgIGVsc2Ug
ewotICAgICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgICAgIHBhcmFt
WzFdLAotICAgICAgICAgICAgICAgICAgcGFyYW1bMl0KLSAgICAgICAgICAgICAgICBdOwotICAg
ICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3cgQ2FtbF9idWlsdGlu
X2V4Y2VwdGlvbnMubm90X2ZvdW5kOwotICAgICAgfQotICAgIH07Ci0gIH07Ci0gIHZhciByZW1v
dmVfbWluX2JpbmRpbmcgPSBmdW5jdGlvbiAocGFyYW0pIHsKLSAgICBpZiAocGFyYW0pIHsKLSAg
ICAgIHZhciBsID0gcGFyYW1bMF07Ci0gICAgICBpZiAobCkgewotICAgICAgICByZXR1cm4gYmFs
KHJlbW92ZV9taW5fYmluZGluZyhsKSwgcGFyYW1bMV0sIHBhcmFtWzJdLCBwYXJhbVszXSk7Ci0g
ICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtWzNdOwotICAgICAgfQot
ICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHRocm93IFsKLSAgICAgICAgICAgIENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAiTWFwLnJlbW92ZV9t
aW5fZWx0IgotICAgICAgICAgIF07Ci0gICAgfQotICB9OwotICB2YXIgcmVtb3ZlID0gZnVuY3Rp
b24gKHgsIHBhcmFtKSB7Ci0gICAgaWYgKHBhcmFtKSB7Ci0gICAgICB2YXIgciA9IHBhcmFtWzNd
OwotICAgICAgdmFyIGQgPSBwYXJhbVsyXTsKLSAgICAgIHZhciB2ID0gcGFyYW1bMV07Ci0gICAg
ICB2YXIgbCA9IHBhcmFtWzBdOwotICAgICAgdmFyIGMgPSBDdXJyeS5fMihmdW5hcmdbLyogY29t
cGFyZSAqLzBdLCB4LCB2KTsKLSAgICAgIGlmIChjKSB7Ci0gICAgICAgIGlmIChjIDwgMCkgewot
ICAgICAgICAgIHJldHVybiBiYWwocmVtb3ZlKHgsIGwpLCB2LCBkLCByKTsKLSAgICAgICAgfQot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gYmFsKGwsIHYsIGQsIHJlbW92ZSh4LCBy
KSk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICB2YXIgdDEgPSBs
OwotICAgICAgICB2YXIgdDIgPSByOwotICAgICAgICBpZiAodDEpIHsKLSAgICAgICAgICBpZiAo
dDIpIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCA9IG1pbl9iaW5kaW5nKHQyKTsKLSAgICAgICAg
ICAgIHJldHVybiBiYWwodDEsIG1hdGNoWzBdLCBtYXRjaFsxXSwgcmVtb3ZlX21pbl9iaW5kaW5n
KHQyKSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJu
IHQxOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBy
ZXR1cm4gdDI7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBy
ZXR1cm4gLyogRW1wdHkgKi8wOwotICAgIH0KLSAgfTsKLSAgdmFyIGl0ZXIgPSBmdW5jdGlvbiAo
ZiwgX3BhcmFtKSB7Ci0gICAgd2hpbGUodHJ1ZSkgewotICAgICAgdmFyIHBhcmFtID0gX3BhcmFt
OwotICAgICAgaWYgKHBhcmFtKSB7Ci0gICAgICAgIGl0ZXIoZiwgcGFyYW1bMF0pOwotICAgICAg
ICBDdXJyeS5fMihmLCBwYXJhbVsxXSwgcGFyYW1bMl0pOwotICAgICAgICBfcGFyYW0gPSBwYXJh
bVszXTsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2Ug
ewotICAgICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgICAgfQotICAgIH07Ci0gIH07Ci0gIHZh
ciBtYXAgPSBmdW5jdGlvbiAoZiwgcGFyYW0pIHsKLSAgICBpZiAocGFyYW0pIHsKLSAgICAgIHZh
ciBsJHByaW1lID0gbWFwKGYsIHBhcmFtWzBdKTsKLSAgICAgIHZhciBkJHByaW1lID0gQ3Vycnku
XzEoZiwgcGFyYW1bMl0pOwotICAgICAgdmFyIHIkcHJpbWUgPSBtYXAoZiwgcGFyYW1bM10pOwot
ICAgICAgcmV0dXJuIC8qIE5vZGUgKi9bCi0gICAgICAgICAgICAgIGwkcHJpbWUsCi0gICAgICAg
ICAgICAgIHBhcmFtWzFdLAotICAgICAgICAgICAgICBkJHByaW1lLAotICAgICAgICAgICAgICBy
JHByaW1lLAotICAgICAgICAgICAgICBwYXJhbVs0XQotICAgICAgICAgICAgXTsKLSAgICB9Ci0g
ICAgZWxzZSB7Ci0gICAgICByZXR1cm4gLyogRW1wdHkgKi8wOwotICAgIH0KLSAgfTsKLSAgdmFy
IG1hcGkgPSBmdW5jdGlvbiAoZiwgcGFyYW0pIHsKLSAgICBpZiAocGFyYW0pIHsKLSAgICAgIHZh
ciB2ID0gcGFyYW1bMV07Ci0gICAgICB2YXIgbCRwcmltZSA9IG1hcGkoZiwgcGFyYW1bMF0pOwot
ICAgICAgdmFyIGQkcHJpbWUgPSBDdXJyeS5fMihmLCB2LCBwYXJhbVsyXSk7Ci0gICAgICB2YXIg
ciRwcmltZSA9IG1hcGkoZiwgcGFyYW1bM10pOwotICAgICAgcmV0dXJuIC8qIE5vZGUgKi9bCi0g
ICAgICAgICAgICAgIGwkcHJpbWUsCi0gICAgICAgICAgICAgIHYsCi0gICAgICAgICAgICAgIGQk
cHJpbWUsCi0gICAgICAgICAgICAgIHIkcHJpbWUsCi0gICAgICAgICAgICAgIHBhcmFtWzRdCi0g
ICAgICAgICAgICBdOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHJldHVybiAvKiBFbXB0eSAq
LzA7Ci0gICAgfQotICB9OwotICB2YXIgZm9sZCA9IGZ1bmN0aW9uIChmLCBfbSwgX2FjY3UpIHsK
LSAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICB2YXIgYWNjdSA9IF9hY2N1OwotICAgICAgdmFyIG0g
PSBfbTsKLSAgICAgIGlmIChtKSB7Ci0gICAgICAgIF9hY2N1ID0gQ3VycnkuXzMoZiwgbVsxXSwg
bVsyXSwgZm9sZChmLCBtWzBdLCBhY2N1KSk7Ci0gICAgICAgIF9tID0gbVszXTsKLSAgICAgICAg
Y29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1
cm4gYWNjdTsKLSAgICAgIH0KLSAgICB9OwotICB9OwotICB2YXIgZm9yX2FsbCA9IGZ1bmN0aW9u
IChwLCBfcGFyYW0pIHsKLSAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICB2YXIgcGFyYW0gPSBfcGFy
YW07Ci0gICAgICBpZiAocGFyYW0pIHsKLSAgICAgICAgaWYgKEN1cnJ5Ll8yKHAsIHBhcmFtWzFd
LCBwYXJhbVsyXSkpIHsKLSAgICAgICAgICBpZiAoZm9yX2FsbChwLCBwYXJhbVswXSkpIHsKLSAg
ICAgICAgICAgIF9wYXJhbSA9IHBhcmFtWzNdOwotICAgICAgICAgICAgY29udGludWUgOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmV0
dXJuIC8qIGZhbHNlICovMDsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgICAgICAgfQotICAgICAgfQotICAg
ICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiAvKiB0cnVlICovMTsKLSAgICAgIH0KLSAgICB9Owot
ICB9OwotICB2YXIgZXhpc3RzID0gZnVuY3Rpb24gKHAsIF9wYXJhbSkgewotICAgIHdoaWxlKHRy
dWUpIHsKLSAgICAgIHZhciBwYXJhbSA9IF9wYXJhbTsKLSAgICAgIGlmIChwYXJhbSkgewotICAg
ICAgICBpZiAoQ3VycnkuXzIocCwgcGFyYW1bMV0sIHBhcmFtWzJdKSkgewotICAgICAgICAgIHJl
dHVybiAvKiB0cnVlICovMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChleGlzdHMocCwg
cGFyYW1bMF0pKSB7Ci0gICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgIF9wYXJhbSA9IHBhcmFtWzNdOwotICAgICAgICAgIGNv
bnRpbnVlIDsKLSAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSB7Ci0g
ICAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7Ci0gICAgICB9Ci0gICAgfTsKLSAgfTsKLSAgdmFy
IGFkZF9taW5fYmluZGluZyA9IGZ1bmN0aW9uIChrLCB2LCBwYXJhbSkgewotICAgIGlmIChwYXJh
bSkgewotICAgICAgcmV0dXJuIGJhbChhZGRfbWluX2JpbmRpbmcoaywgdiwgcGFyYW1bMF0pLCBw
YXJhbVsxXSwgcGFyYW1bMl0sIHBhcmFtWzNdKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBy
ZXR1cm4gc2luZ2xldG9uKGssIHYpOwotICAgIH0KLSAgfTsKLSAgdmFyIGFkZF9tYXhfYmluZGlu
ZyA9IGZ1bmN0aW9uIChrLCB2LCBwYXJhbSkgewotICAgIGlmIChwYXJhbSkgewotICAgICAgcmV0
dXJuIGJhbChwYXJhbVswXSwgcGFyYW1bMV0sIHBhcmFtWzJdLCBhZGRfbWF4X2JpbmRpbmcoaywg
diwgcGFyYW1bM10pKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gc2luZ2xldG9u
KGssIHYpOwotICAgIH0KLSAgfTsKLSAgdmFyIGpvaW4gPSBmdW5jdGlvbiAobCwgdiwgZCwgcikg
ewotICAgIGlmIChsKSB7Ci0gICAgICBpZiAocikgewotICAgICAgICB2YXIgcmggPSByWzRdOwot
ICAgICAgICB2YXIgbGggPSBsWzRdOwotICAgICAgICBpZiAobGggPiAocmggKyAyIHwgMCkpIHsK
LSAgICAgICAgICByZXR1cm4gYmFsKGxbMF0sIGxbMV0sIGxbMl0sIGpvaW4obFszXSwgdiwgZCwg
cikpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHJoID4gKGxoICsgMiB8IDApKSB7Ci0g
ICAgICAgICAgcmV0dXJuIGJhbChqb2luKGwsIHYsIGQsIHJbMF0pLCByWzFdLCByWzJdLCByWzNd
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gY3JlYXRlKGws
IHYsIGQsIHIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0
dXJuIGFkZF9tYXhfYmluZGluZyh2LCBkLCBsKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7
Ci0gICAgICByZXR1cm4gYWRkX21pbl9iaW5kaW5nKHYsIGQsIHIpOwotICAgIH0KLSAgfTsKLSAg
dmFyIGNvbmNhdCA9IGZ1bmN0aW9uICh0MSwgdDIpIHsKLSAgICBpZiAodDEpIHsKLSAgICAgIGlm
ICh0MikgewotICAgICAgICB2YXIgbWF0Y2ggPSBtaW5fYmluZGluZyh0Mik7Ci0gICAgICAgIHJl
dHVybiBqb2luKHQxLCBtYXRjaFswXSwgbWF0Y2hbMV0sIHJlbW92ZV9taW5fYmluZGluZyh0Mikp
OwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiB0MTsKLSAgICAgIH0KLSAg
ICB9Ci0gICAgZWxzZSB7Ci0gICAgICByZXR1cm4gdDI7Ci0gICAgfQotICB9OwotICB2YXIgY29u
Y2F0X29yX2pvaW4gPSBmdW5jdGlvbiAodDEsIHYsIGQsIHQyKSB7Ci0gICAgaWYgKGQpIHsKLSAg
ICAgIHJldHVybiBqb2luKHQxLCB2LCBkWzBdLCB0Mik7Ci0gICAgfQotICAgIGVsc2UgewotICAg
ICAgcmV0dXJuIGNvbmNhdCh0MSwgdDIpOwotICAgIH0KLSAgfTsKLSAgdmFyIHNwbGl0ID0gZnVu
Y3Rpb24gKHgsIHBhcmFtKSB7Ci0gICAgaWYgKHBhcmFtKSB7Ci0gICAgICB2YXIgciA9IHBhcmFt
WzNdOwotICAgICAgdmFyIGQgPSBwYXJhbVsyXTsKLSAgICAgIHZhciB2ID0gcGFyYW1bMV07Ci0g
ICAgICB2YXIgbCA9IHBhcmFtWzBdOwotICAgICAgdmFyIGMgPSBDdXJyeS5fMihmdW5hcmdbLyog
Y29tcGFyZSAqLzBdLCB4LCB2KTsKLSAgICAgIGlmIChjKSB7Ci0gICAgICAgIGlmIChjIDwgMCkg
ewotICAgICAgICAgIHZhciBtYXRjaCA9IHNwbGl0KHgsIGwpOwotICAgICAgICAgIHJldHVybiAv
KiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgICAgIG1hdGNoWzBdLAotICAgICAgICAgICAgICAg
ICAgbWF0Y2hbMV0sCi0gICAgICAgICAgICAgICAgICBqb2luKG1hdGNoWzJdLCB2LCBkLCByKQot
ICAgICAgICAgICAgICAgIF07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
dmFyIG1hdGNoJDEgPSBzcGxpdCh4LCByKTsKLSAgICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9b
Ci0gICAgICAgICAgICAgICAgICBqb2luKGwsIHYsIGQsIG1hdGNoJDFbMF0pLAotICAgICAgICAg
ICAgICAgICAgbWF0Y2gkMVsxXSwKLSAgICAgICAgICAgICAgICAgIG1hdGNoJDFbMl0KLSAgICAg
ICAgICAgICAgICBdOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAg
cmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAgIGwsCi0gICAgICAgICAgICAgICAg
LyogU29tZSAqL1tkXSwKLSAgICAgICAgICAgICAgICByCi0gICAgICAgICAgICAgIF07Ci0gICAg
ICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAg
ICAgICAgICAvKiBFbXB0eSAqLzAsCi0gICAgICAgICAgICAgIC8qIE5vbmUgKi8wLAotICAgICAg
ICAgICAgICAvKiBFbXB0eSAqLzAKLSAgICAgICAgICAgIF07Ci0gICAgfQotICB9OwotICB2YXIg
bWVyZ2UgPSBmdW5jdGlvbiAoZiwgczEsIHMyKSB7Ci0gICAgdmFyIGV4aXQgPSAwOwotICAgIGlm
IChzMSkgewotICAgICAgdmFyIHYxID0gczFbMV07Ci0gICAgICBpZiAoczFbNF0gPj0gaGVpZ2h0
KHMyKSkgewotICAgICAgICB2YXIgbWF0Y2ggPSBzcGxpdCh2MSwgczIpOwotICAgICAgICByZXR1
cm4gY29uY2F0X29yX2pvaW4obWVyZ2UoZiwgczFbMF0sIG1hdGNoWzBdKSwgdjEsIEN1cnJ5Ll8z
KGYsIHYxLCAvKiBTb21lICovW3MxWzJdXSwgbWF0Y2hbMV0pLCBtZXJnZShmLCBzMVszXSwgbWF0
Y2hbMl0pKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICBleGl0ID0gMTsKLSAgICAg
IH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoczIpIHsKLSAgICAgIGV4aXQgPSAxOwotICAgIH0KLSAg
ICBlbHNlIHsKLSAgICAgIHJldHVybiAvKiBFbXB0eSAqLzA7Ci0gICAgfQotICAgIGlmIChleGl0
ID09PSAxKSB7Ci0gICAgICBpZiAoczIpIHsKLSAgICAgICAgdmFyIHYyID0gczJbMV07Ci0gICAg
ICAgIHZhciBtYXRjaCQxID0gc3BsaXQodjIsIHMxKTsKLSAgICAgICAgcmV0dXJuIGNvbmNhdF9v
cl9qb2luKG1lcmdlKGYsIG1hdGNoJDFbMF0sIHMyWzBdKSwgdjIsIEN1cnJ5Ll8zKGYsIHYyLCBt
YXRjaCQxWzFdLCAvKiBTb21lICovW3MyWzJdXSksIG1lcmdlKGYsIG1hdGNoJDFbMl0sIHMyWzNd
KSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAg
ICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5hc3NlcnRfZmFpbHVyZSwKLSAgICAgICAgICAgICAg
WwotICAgICAgICAgICAgICAgICJtYXAubWwiLAotICAgICAgICAgICAgICAgIDI3MCwKLSAgICAg
ICAgICAgICAgICAxMAotICAgICAgICAgICAgICBdCi0gICAgICAgICAgICBdOwotICAgICAgfQot
ICAgIH0KLSAgICAKLSAgfTsKLSAgdmFyIGZpbHRlciA9IGZ1bmN0aW9uIChwLCBwYXJhbSkgewot
ICAgIGlmIChwYXJhbSkgewotICAgICAgdmFyIGQgPSBwYXJhbVsyXTsKLSAgICAgIHZhciB2ID0g
cGFyYW1bMV07Ci0gICAgICB2YXIgbCRwcmltZSA9IGZpbHRlcihwLCBwYXJhbVswXSk7Ci0gICAg
ICB2YXIgcHZkID0gQ3VycnkuXzIocCwgdiwgZCk7Ci0gICAgICB2YXIgciRwcmltZSA9IGZpbHRl
cihwLCBwYXJhbVszXSk7Ci0gICAgICBpZiAocHZkKSB7Ci0gICAgICAgIHJldHVybiBqb2luKGwk
cHJpbWUsIHYsIGQsIHIkcHJpbWUpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHJl
dHVybiBjb25jYXQobCRwcmltZSwgciRwcmltZSk7Ci0gICAgICB9Ci0gICAgfQotICAgIGVsc2Ug
ewotICAgICAgcmV0dXJuIC8qIEVtcHR5ICovMDsKLSAgICB9Ci0gIH07Ci0gIHZhciBwYXJ0aXRp
b24gPSBmdW5jdGlvbiAocCwgcGFyYW0pIHsKLSAgICBpZiAocGFyYW0pIHsKLSAgICAgIHZhciBk
ID0gcGFyYW1bMl07Ci0gICAgICB2YXIgdiA9IHBhcmFtWzFdOwotICAgICAgdmFyIG1hdGNoID0g
cGFydGl0aW9uKHAsIHBhcmFtWzBdKTsKLSAgICAgIHZhciBsZiA9IG1hdGNoWzFdOwotICAgICAg
dmFyIGx0ID0gbWF0Y2hbMF07Ci0gICAgICB2YXIgcHZkID0gQ3VycnkuXzIocCwgdiwgZCk7Ci0g
ICAgICB2YXIgbWF0Y2gkMSA9IHBhcnRpdGlvbihwLCBwYXJhbVszXSk7Ci0gICAgICB2YXIgcmYg
PSBtYXRjaCQxWzFdOwotICAgICAgdmFyIHJ0ID0gbWF0Y2gkMVswXTsKLSAgICAgIGlmIChwdmQp
IHsKLSAgICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAgIGpvaW4obHQs
IHYsIGQsIHJ0KSwKLSAgICAgICAgICAgICAgICBjb25jYXQobGYsIHJmKQotICAgICAgICAgICAg
ICBdOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
LSAgICAgICAgICAgICAgICBjb25jYXQobHQsIHJ0KSwKLSAgICAgICAgICAgICAgICBqb2luKGxm
LCB2LCBkLCByZikKLSAgICAgICAgICAgICAgXTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7
Ci0gICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgIC8qIEVtcHR5ICovMCwK
LSAgICAgICAgICAgICAgLyogRW1wdHkgKi8wCi0gICAgICAgICAgICBdOwotICAgIH0KLSAgfTsK
LSAgdmFyIGNvbnNfZW51bSA9IGZ1bmN0aW9uIChfbSwgX2UpIHsKLSAgICB3aGlsZSh0cnVlKSB7
Ci0gICAgICB2YXIgZSA9IF9lOwotICAgICAgdmFyIG0gPSBfbTsKLSAgICAgIGlmIChtKSB7Ci0g
ICAgICAgIF9lID0gLyogTW9yZSAqL1sKLSAgICAgICAgICBtWzFdLAotICAgICAgICAgIG1bMl0s
Ci0gICAgICAgICAgbVszXSwKLSAgICAgICAgICBlCi0gICAgICAgIF07Ci0gICAgICAgIF9tID0g
bVswXTsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAgIH0KLSAgICAgIGVsc2Ug
ewotICAgICAgICByZXR1cm4gZTsKLSAgICAgIH0KLSAgICB9OwotICB9OwotICB2YXIgY29tcGFy
ZSA9IGZ1bmN0aW9uIChjbXAsIG0xLCBtMikgewotICAgIHZhciBfZTEgPSBjb25zX2VudW0obTEs
IC8qIEVuZCAqLzApOwotICAgIHZhciBfZTIgPSBjb25zX2VudW0obTIsIC8qIEVuZCAqLzApOwot
ICAgIHdoaWxlKHRydWUpIHsKLSAgICAgIHZhciBlMiA9IF9lMjsKLSAgICAgIHZhciBlMSA9IF9l
MTsKLSAgICAgIGlmIChlMSkgewotICAgICAgICBpZiAoZTIpIHsKLSAgICAgICAgICB2YXIgYyA9
IEN1cnJ5Ll8yKGZ1bmFyZ1svKiBjb21wYXJlICovMF0sIGUxWzBdLCBlMlswXSk7Ci0gICAgICAg
ICAgaWYgKGMgIT09IDApIHsKLSAgICAgICAgICAgIHJldHVybiBjOwotICAgICAgICAgIH0KLSAg
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHZhciBjJDEgPSBDdXJyeS5fMihjbXAsIGUxWzFd
LCBlMlsxXSk7Ci0gICAgICAgICAgICBpZiAoYyQxICE9PSAwKSB7Ci0gICAgICAgICAgICAgIHJl
dHVybiBjJDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
ICAgX2UyID0gY29uc19lbnVtKGUyWzJdLCBlMlszXSk7Ci0gICAgICAgICAgICAgIF9lMSA9IGNv
bnNfZW51bShlMVsyXSwgZTFbM10pOwotICAgICAgICAgICAgICBjb250aW51ZSA7Ci0gICAgICAg
ICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBl
bHNlIHsKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxz
ZSBpZiAoZTIpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0g
ICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAgIH07Ci0gIH07Ci0gIHZhciBlcXVhbCA9IGZ1
bmN0aW9uIChjbXAsIG0xLCBtMikgewotICAgIHZhciBfZTEgPSBjb25zX2VudW0obTEsIC8qIEVu
ZCAqLzApOwotICAgIHZhciBfZTIgPSBjb25zX2VudW0obTIsIC8qIEVuZCAqLzApOwotICAgIHdo
aWxlKHRydWUpIHsKLSAgICAgIHZhciBlMiA9IF9lMjsKLSAgICAgIHZhciBlMSA9IF9lMTsKLSAg
ICAgIGlmIChlMSkgewotICAgICAgICBpZiAoZTIpIHsKLSAgICAgICAgICBpZiAoQ3VycnkuXzIo
ZnVuYXJnWy8qIGNvbXBhcmUgKi8wXSwgZTFbMF0sIGUyWzBdKSkgewotICAgICAgICAgICAgcmV0
dXJuIC8qIGZhbHNlICovMDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoQ3Vycnku
XzIoY21wLCBlMVsxXSwgZTJbMV0pKSB7Ci0gICAgICAgICAgICBfZTIgPSBjb25zX2VudW0oZTJb
Ml0sIGUyWzNdKTsKLSAgICAgICAgICAgIF9lMSA9IGNvbnNfZW51bShlMVsyXSwgZTFbM10pOwot
ICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgCi0gICAgICAgICAgfQotICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICovMDsKLSAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIC8qIGZhbHNlICov
MDsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAoZTIpIHsKLSAgICAgICAgcmV0
dXJuIC8qIGZhbHNlICovMDsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAgICByZXR1cm4g
LyogdHJ1ZSAqLzE7Ci0gICAgICB9Ci0gICAgfTsKLSAgfTsKLSAgdmFyIGNhcmRpbmFsID0gZnVu
Y3Rpb24gKHBhcmFtKSB7Ci0gICAgaWYgKHBhcmFtKSB7Ci0gICAgICByZXR1cm4gKGNhcmRpbmFs
KHBhcmFtWzBdKSArIDEgfCAwKSArIGNhcmRpbmFsKHBhcmFtWzNdKSB8IDA7Ci0gICAgfQotICAg
IGVsc2UgewotICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICB9OwotICB2YXIgYmluZGluZ3NfYXV4
ID0gZnVuY3Rpb24gKF9hY2N1LCBfcGFyYW0pIHsKLSAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICB2
YXIgcGFyYW0gPSBfcGFyYW07Ci0gICAgICB2YXIgYWNjdSA9IF9hY2N1OwotICAgICAgaWYgKHBh
cmFtKSB7Ci0gICAgICAgIF9wYXJhbSA9IHBhcmFtWzBdOwotICAgICAgICBfYWNjdSA9IC8qIDo6
ICovWwotICAgICAgICAgIC8qIHR1cGxlICovWwotICAgICAgICAgICAgcGFyYW1bMV0sCi0gICAg
ICAgICAgICBwYXJhbVsyXQotICAgICAgICAgIF0sCi0gICAgICAgICAgYmluZGluZ3NfYXV4KGFj
Y3UsIHBhcmFtWzNdKQotICAgICAgICBdOwotICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgIAot
ICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBhY2N1OwotICAgICAgfQotICAg
IH07Ci0gIH07Ci0gIHZhciBiaW5kaW5ncyA9IGZ1bmN0aW9uIChzKSB7Ci0gICAgcmV0dXJuIGJp
bmRpbmdzX2F1eCgvKiBbXSAqLzAsIHMpOwotICB9OwotICByZXR1cm4gWwotICAgICAgICAgIC8q
IEVtcHR5ICovMCwKLSAgICAgICAgICBpc19lbXB0eSwKLSAgICAgICAgICBtZW0sCi0gICAgICAg
ICAgYWRkLAotICAgICAgICAgIHNpbmdsZXRvbiwKLSAgICAgICAgICByZW1vdmUsCi0gICAgICAg
ICAgbWVyZ2UsCi0gICAgICAgICAgY29tcGFyZSwKLSAgICAgICAgICBlcXVhbCwKLSAgICAgICAg
ICBpdGVyLAotICAgICAgICAgIGZvbGQsCi0gICAgICAgICAgZm9yX2FsbCwKLSAgICAgICAgICBl
eGlzdHMsCi0gICAgICAgICAgZmlsdGVyLAotICAgICAgICAgIHBhcnRpdGlvbiwKLSAgICAgICAg
ICBjYXJkaW5hbCwKLSAgICAgICAgICBiaW5kaW5ncywKLSAgICAgICAgICBtaW5fYmluZGluZywK
LSAgICAgICAgICBtYXhfYmluZGluZywKLSAgICAgICAgICBtaW5fYmluZGluZywKLSAgICAgICAg
ICBzcGxpdCwKLSAgICAgICAgICBmaW5kLAotICAgICAgICAgIG1hcCwKLSAgICAgICAgICBtYXBp
Ci0gICAgICAgIF07Ci19Ci0KLWV4cG9ydHMuTWFrZSA9IE1ha2U7Ci0vKiBObyBzaWRlIGVmZmVj
dCAqLwotLy8vLy8vLy8gZW5kIG9mIG1hcC5qcyAvLy8vLy8vLwotICAgIHJldHVybiBleHBvcnRz
OwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydudW1lcmljX2Vycm9yJ10gPSBmdW5jdGlvbigpIHsK
LSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgbnVtZXJpY19lcnJvci5q
cyAvLy8vLy8vLwotLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwg
UExFQVNFIEVESVQgV0lUSCBDQVJFCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBDYW1sX2V4Y2VwdGlv
bnMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9leGNlcHRpb25zIik7Ci0KLXZh
ciBJbnRlZ2VyT3ZlcmZsb3cgPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJOdW1lcmljX2Vycm9y
LkludGVnZXJPdmVyZmxvdyIpOwotCi12YXIgSW50ZWdlckRpdmlkZUJ5WmVybyA9IENhbWxfZXhj
ZXB0aW9ucy5jcmVhdGUoIk51bWVyaWNfZXJyb3IuSW50ZWdlckRpdmlkZUJ5WmVybyIpOwotCi12
YXIgSW52YWxpZENvbnZlcnNpb25Ub0ludGVnZXIgPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJO
dW1lcmljX2Vycm9yLkludmFsaWRDb252ZXJzaW9uVG9JbnRlZ2VyIik7Ci0KLWV4cG9ydHMuSW50
ZWdlck92ZXJmbG93ICAgICAgICAgICAgPSBJbnRlZ2VyT3ZlcmZsb3c7Ci1leHBvcnRzLkludGVn
ZXJEaXZpZGVCeVplcm8gICAgICAgID0gSW50ZWdlckRpdmlkZUJ5WmVybzsKLWV4cG9ydHMuSW52
YWxpZENvbnZlcnNpb25Ub0ludGVnZXIgPSBJbnZhbGlkQ29udmVyc2lvblRvSW50ZWdlcjsKLS8q
IE5vIHNpZGUgZWZmZWN0ICovCi0vLy8vLy8vLyBlbmQgb2YgbnVtZXJpY19lcnJvci5qcyAvLy8v
Ly8vLwotICAgIHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydvYmonXSA9
IGZ1bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBv
YmouanMgLy8vLy8vLy8KLSd1c2Ugc3RyaWN0JzsKLQotdmFyIE1hcnNoYWwgICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9tYXJzaGFsIik7Ci12YXIgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMg
PSByZXF1aXJlKCIuL2NhbWxfYnVpbHRpbl9leGNlcHRpb25zIik7Ci0KLWZ1bmN0aW9uIGRvdWJs
ZV9maWVsZCh4LCBpKSB7Ci0gIHJldHVybiB4W2ldOwotfQotCi1mdW5jdGlvbiBzZXRfZG91Ymxl
X2ZpZWxkKHgsIGksIHYpIHsKLSAgeFtpXSA9IHY7Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0K
LWZ1bmN0aW9uIG1hcnNoYWwoKSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAg
ICB0aHJvdyAiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOwotICAgICAgICAgIH0oKTsKLX0KLQotZnVuY3Rpb24gdW5tYXJz
aGFsKHN0ciwgcG9zKSB7Ci0gIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICBNYXJzaGFs
LmZyb21fYnl0ZXMoc3RyLCBwb3MpLAotICAgICAgICAgIHBvcyArIE1hcnNoYWwudG90YWxfc2l6
ZShzdHIsIHBvcykgfCAwCi0gICAgICAgIF07Ci19Ci0KLWZ1bmN0aW9uIGV4dGVuc2lvbl9zbG90
KHgpIHsKLSAgdmFyIHNsb3QgPSB4Lmxlbmd0aCAhPT0gdW5kZWZpbmVkICYmICh4LnRhZyB8IDAp
ICE9PSAyNDggJiYgeC5sZW5ndGggPj0gMSA/IHhbMF0gOiB4OwotICB2YXIgbmFtZTsKLSAgaWYg
KHNsb3QubGVuZ3RoICE9PSB1bmRlZmluZWQgJiYgc2xvdC50YWcgPT09IDI0OCkgewotICAgIG5h
bWUgPSBzbG90WzBdOwotICB9Ci0gIGVsc2UgewotICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNl
cHRpb25zLm5vdF9mb3VuZDsKLSAgfQotICBpZiAobmFtZS50YWcgPT09IDI1MikgewotICAgIHJl
dHVybiBzbG90OwotICB9Ci0gIGVsc2UgewotICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRp
b25zLm5vdF9mb3VuZDsKLSAgfQotfQotCi1mdW5jdGlvbiBleHRlbnNpb25fbmFtZSh4KSB7Ci0g
IHRyeSB7Ci0gICAgdmFyIHNsb3QgPSBleHRlbnNpb25fc2xvdCh4KTsKLSAgICByZXR1cm4gc2xv
dFswXTsKLSAgfQotICBjYXRjaCAoZXhuKXsKLSAgICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5f
ZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKLSAgICAgIHRocm93IFsKLSAgICAgICAgICAgIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgICAiT2JqLmV4
dGVuc2lvbl9uYW1lIgotICAgICAgICAgIF07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdGhy
b3cgZXhuOwotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBleHRlbnNpb25faWQoeCkgewotICB0
cnkgewotICAgIHZhciBzbG90ID0gZXh0ZW5zaW9uX3Nsb3QoeCk7Ci0gICAgcmV0dXJuIHNsb3Rb
MV07Ci0gIH0KLSAgY2F0Y2ggKGV4bil7Ci0gICAgaWYgKGV4biA9PT0gQ2FtbF9idWlsdGluX2V4
Y2VwdGlvbnMubm90X2ZvdW5kKSB7Ci0gICAgICB0aHJvdyBbCi0gICAgICAgICAgICBDYW1sX2J1
aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2FyZ3VtZW50LAotICAgICAgICAgICAgIk9iai5leHRl
bnNpb25faWQiCi0gICAgICAgICAgXTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICB0aHJvdyBl
eG47Ci0gICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9uIGV4dGVuc2lvbl9zbG90JDEoeCkgewotICB0
cnkgewotICAgIHJldHVybiBleHRlbnNpb25fc2xvdCh4KTsKLSAgfQotICBjYXRjaCAoZXhuKXsK
LSAgICBpZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKLSAg
ICAgIHRocm93IFsKLSAgICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRf
YXJndW1lbnQsCi0gICAgICAgICAgICAiT2JqLmV4dGVuc2lvbl9zbG90IgotICAgICAgICAgIF07
Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdGhyb3cgZXhuOwotICAgIH0KLSAgfQotfQotCi12
YXIgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDA7Ci0KLXZhciBsYXN0X25v
bl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDU7Ci0KLXZhciBsYXp5X3RhZyA9IDI0NjsK
LQotdmFyIGNsb3N1cmVfdGFnID0gMjQ3OwotCi12YXIgb2JqZWN0X3RhZyA9IDI0ODsKLQotdmFy
IGluZml4X3RhZyA9IDI0OTsKLQotdmFyIGZvcndhcmRfdGFnID0gMjUwOwotCi12YXIgbm9fc2Nh
bl90YWcgPSAyNTE7Ci0KLXZhciBhYnN0cmFjdF90YWcgPSAyNTE7Ci0KLXZhciBzdHJpbmdfdGFn
ID0gMjUyOwotCi12YXIgZG91YmxlX3RhZyA9IDI1MzsKLQotdmFyIGRvdWJsZV9hcnJheV90YWcg
PSAyNTQ7Ci0KLXZhciBjdXN0b21fdGFnID0gMjU1OwotCi12YXIgZmluYWxfdGFnID0gMjU1Owot
Ci12YXIgaW50X3RhZyA9IDEwMDA7Ci0KLXZhciBvdXRfb2ZfaGVhcF90YWcgPSAxMDAxOwotCi12
YXIgdW5hbGlnbmVkX3RhZyA9IDEwMDI7Ci0KLWV4cG9ydHMuZG91YmxlX2ZpZWxkICAgICAgICAg
ICAgICAgICAgICAgICA9IGRvdWJsZV9maWVsZDsKLWV4cG9ydHMuc2V0X2RvdWJsZV9maWVsZCAg
ICAgICAgICAgICAgICAgICA9IHNldF9kb3VibGVfZmllbGQ7Ci1leHBvcnRzLmZpcnN0X25vbl9j
b25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSBmaXJzdF9ub25fY29uc3RhbnRfY29uc3RydWN0b3Jf
dGFnOwotZXhwb3J0cy5sYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgID0gbGFzdF9u
b25fY29uc3RhbnRfY29uc3RydWN0b3JfdGFnOwotZXhwb3J0cy5sYXp5X3RhZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gbGF6eV90YWc7Ci1leHBvcnRzLmNsb3N1cmVfdGFnICAgICAgICAg
ICAgICAgICAgICAgICAgPSBjbG9zdXJlX3RhZzsKLWV4cG9ydHMub2JqZWN0X3RhZyAgICAgICAg
ICAgICAgICAgICAgICAgICA9IG9iamVjdF90YWc7Ci1leHBvcnRzLmluZml4X3RhZyAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBpbmZpeF90YWc7Ci1leHBvcnRzLmZvcndhcmRfdGFnICAgICAg
ICAgICAgICAgICAgICAgICAgPSBmb3J3YXJkX3RhZzsKLWV4cG9ydHMubm9fc2Nhbl90YWcgICAg
ICAgICAgICAgICAgICAgICAgICA9IG5vX3NjYW5fdGFnOwotZXhwb3J0cy5hYnN0cmFjdF90YWcg
ICAgICAgICAgICAgICAgICAgICAgID0gYWJzdHJhY3RfdGFnOwotZXhwb3J0cy5zdHJpbmdfdGFn
ICAgICAgICAgICAgICAgICAgICAgICAgID0gc3RyaW5nX3RhZzsKLWV4cG9ydHMuZG91YmxlX3Rh
ZyAgICAgICAgICAgICAgICAgICAgICAgICA9IGRvdWJsZV90YWc7Ci1leHBvcnRzLmRvdWJsZV9h
cnJheV90YWcgICAgICAgICAgICAgICAgICAgPSBkb3VibGVfYXJyYXlfdGFnOwotZXhwb3J0cy5j
dXN0b21fdGFnICAgICAgICAgICAgICAgICAgICAgICAgID0gY3VzdG9tX3RhZzsKLWV4cG9ydHMu
ZmluYWxfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICA9IGZpbmFsX3RhZzsKLWV4cG9ydHMu
aW50X3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IGludF90YWc7Ci1leHBvcnRzLm91
dF9vZl9oZWFwX3RhZyAgICAgICAgICAgICAgICAgICAgPSBvdXRfb2ZfaGVhcF90YWc7Ci1leHBv
cnRzLnVuYWxpZ25lZF90YWcgICAgICAgICAgICAgICAgICAgICAgPSB1bmFsaWduZWRfdGFnOwot
ZXhwb3J0cy5leHRlbnNpb25fbmFtZSAgICAgICAgICAgICAgICAgICAgID0gZXh0ZW5zaW9uX25h
bWU7Ci1leHBvcnRzLmV4dGVuc2lvbl9pZCAgICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNp
b25faWQ7Ci1leHBvcnRzLmV4dGVuc2lvbl9zbG90ICAgICAgICAgICAgICAgICAgICAgPSBleHRl
bnNpb25fc2xvdCQxOwotZXhwb3J0cy5tYXJzaGFsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gbWFyc2hhbDsKLWV4cG9ydHMudW5tYXJzaGFsICAgICAgICAgICAgICAgICAgICAgICAgICA9
IHVubWFyc2hhbDsKLS8qIE5vIHNpZGUgZWZmZWN0ICovCi0vLy8vLy8vLyBlbmQgb2Ygb2JqLmpz
IC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ29v
J10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQg
b2Ygb28uanMgLy8vLy8vLy8KLSd1c2Ugc3RyaWN0JzsKLQotdmFyIENhbWxpbnRlcm5hbE9PID0g
cmVxdWlyZSgiLi9jYW1saW50ZXJuYWxPTyIpOwotCi12YXIgY29weSA9IENhbWxpbnRlcm5hbE9P
LmNvcHk7Ci0KLXZhciBuZXdfbWV0aG9kID0gQ2FtbGludGVybmFsT08ucHVibGljX21ldGhvZF9s
YWJlbDsKLQotdmFyIHB1YmxpY19tZXRob2RfbGFiZWwgPSBDYW1saW50ZXJuYWxPTy5wdWJsaWNf
bWV0aG9kX2xhYmVsOwotCi1leHBvcnRzLmNvcHkgICAgICAgICAgICAgICAgPSBjb3B5OwotZXhw
b3J0cy5uZXdfbWV0aG9kICAgICAgICAgID0gbmV3X21ldGhvZDsKLWV4cG9ydHMucHVibGljX21l
dGhvZF9sYWJlbCA9IHB1YmxpY19tZXRob2RfbGFiZWw7Ci0vKiBObyBzaWRlIGVmZmVjdCAqLwot
Ly8vLy8vLy8gZW5kIG9mIG9vLmpzIC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07
Ci0KLQotICBfcmVnaXN0cnlbJ29wZXJhdG9ycyddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4
cG9ydHMgPSB7fTsKLS8vLy8vLy8vIHN0YXJ0IG9mIG9wZXJhdG9ycy5qcyAvLy8vLy8vLwotLy8g
R2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lU
SCBDQVJFCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBCbG9jayAgPSByZXF1aXJlKCJicy1wbGF0Zm9y
bS9saWIvanMvYmxvY2siKTsKLXZhciBTb3VyY2UgPSByZXF1aXJlKCIuL3NvdXJjZSIpOwotCi1m
dW5jdGlvbiBpMzJfY29uc3QobikgewotICByZXR1cm4gLyogQ29uc3QgKi9CbG9jay5fXygxNSwg
W1NvdXJjZS4kYXQkYXQoLyogSTMyICovQmxvY2suX18oMCwgW25bLyogaXQgKi8xXV0pLCBuWy8q
IGF0ICovMF0pXSk7Ci19Ci0KLWZ1bmN0aW9uIGk2NF9jb25zdChuKSB7Ci0gIHJldHVybiAvKiBD
b25zdCAqL0Jsb2NrLl9fKDE1LCBbU291cmNlLiRhdCRhdCgvKiBJNjQgKi9CbG9jay5fXygxLCBb
blsvKiBpdCAqLzFdXSksIG5bLyogYXQgKi8wXSldKTsKLX0KLQotZnVuY3Rpb24gZjMyX2NvbnN0
KG4pIHsKLSAgcmV0dXJuIC8qIENvbnN0ICovQmxvY2suX18oMTUsIFtTb3VyY2UuJGF0JGF0KC8q
IEYzMiAqL0Jsb2NrLl9fKDIsIFtuWy8qIGl0ICovMV1dKSwgblsvKiBhdCAqLzBdKV0pOwotfQot
Ci1mdW5jdGlvbiBmNjRfY29uc3QobikgewotICByZXR1cm4gLyogQ29uc3QgKi9CbG9jay5fXygx
NSwgW1NvdXJjZS4kYXQkYXQoLyogRjY0ICovQmxvY2suX18oMywgW25bLyogaXQgKi8xXV0pLCBu
Wy8qIGF0ICovMF0pXSk7Ci19Ci0KLWZ1bmN0aW9uIGJsb2NrKHRzLCBlcykgewotICByZXR1cm4g
LyogQmxvY2sgKi9CbG9jay5fXygwLCBbCi0gICAgICAgICAgICB0cywKLSAgICAgICAgICAgIGVz
Ci0gICAgICAgICAgXSk7Ci19Ci0KLWZ1bmN0aW9uIGxvb3AodHMsIGVzKSB7Ci0gIHJldHVybiAv
KiBMb29wICovQmxvY2suX18oMSwgWwotICAgICAgICAgICAgdHMsCi0gICAgICAgICAgICBlcwot
ICAgICAgICAgIF0pOwotfQotCi1mdW5jdGlvbiBicih4KSB7Ci0gIHJldHVybiAvKiBCciAqL0Js
b2NrLl9fKDMsIFt4XSk7Ci19Ci0KLWZ1bmN0aW9uIGJyX2lmKHgpIHsKLSAgcmV0dXJuIC8qIEJy
SWYgKi9CbG9jay5fXyg0LCBbeF0pOwotfQotCi1mdW5jdGlvbiBicl90YWJsZSh4cywgeCkgewot
ICByZXR1cm4gLyogQnJUYWJsZSAqL0Jsb2NrLl9fKDUsIFsKLSAgICAgICAgICAgIHhzLAotICAg
ICAgICAgICAgeAotICAgICAgICAgIF0pOwotfQotCi1mdW5jdGlvbiBpZl8odHMsIGVzMSwgZXMy
KSB7Ci0gIHJldHVybiAvKiBJZiAqL0Jsb2NrLl9fKDIsIFsKLSAgICAgICAgICAgIHRzLAotICAg
ICAgICAgICAgZXMxLAotICAgICAgICAgICAgZXMyCi0gICAgICAgICAgXSk7Ci19Ci0KLWZ1bmN0
aW9uIGNhbGwoeCkgewotICByZXR1cm4gLyogQ2FsbCAqL0Jsb2NrLl9fKDYsIFt4XSk7Ci19Ci0K
LWZ1bmN0aW9uIGNhbGxfaW5kaXJlY3QoeCkgewotICByZXR1cm4gLyogQ2FsbEluZGlyZWN0ICov
QmxvY2suX18oNywgW3hdKTsKLX0KLQotZnVuY3Rpb24gZ2V0X2xvY2FsKHgpIHsKLSAgcmV0dXJu
IC8qIEdldExvY2FsICovQmxvY2suX18oOCwgW3hdKTsKLX0KLQotZnVuY3Rpb24gc2V0X2xvY2Fs
KHgpIHsKLSAgcmV0dXJuIC8qIFNldExvY2FsICovQmxvY2suX18oOSwgW3hdKTsKLX0KLQotZnVu
Y3Rpb24gdGVlX2xvY2FsKHgpIHsKLSAgcmV0dXJuIC8qIFRlZUxvY2FsICovQmxvY2suX18oMTAs
IFt4XSk7Ci19Ci0KLWZ1bmN0aW9uIGdldF9nbG9iYWwoeCkgewotICByZXR1cm4gLyogR2V0R2xv
YmFsICovQmxvY2suX18oMTEsIFt4XSk7Ci19Ci0KLWZ1bmN0aW9uIHNldF9nbG9iYWwoeCkgewot
ICByZXR1cm4gLyogU2V0R2xvYmFsICovQmxvY2suX18oMTIsIFt4XSk7Ci19Ci0KLWZ1bmN0aW9u
IGkzMl9sb2FkKGFsaWduLCBvZmZzZXQpIHsKLSAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygx
MywgWy8qIHJlY29yZCAqL1sKLSAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwKLSAg
ICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKLSAgICAgICAgICAgICAgLyogb2Zmc2V0ICov
b2Zmc2V0LAotICAgICAgICAgICAgICAvKiBzeiA6IE5vbmUgKi8wCi0gICAgICAgICAgICBdXSk7
Ci19Ci0KLWZ1bmN0aW9uIGk2NF9sb2FkKGFsaWduLCBvZmZzZXQpIHsKLSAgcmV0dXJuIC8qIExv
YWQgKi9CbG9jay5fXygxMywgWy8qIHJlY29yZCAqL1sKLSAgICAgICAgICAgICAgLyogdHkgOiBJ
NjRUeXBlICovMSwKLSAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKLSAgICAgICAgICAg
ICAgLyogb2Zmc2V0ICovb2Zmc2V0LAotICAgICAgICAgICAgICAvKiBzeiA6IE5vbmUgKi8wCi0g
ICAgICAgICAgICBdXSk7Ci19Ci0KLWZ1bmN0aW9uIGYzMl9sb2FkKGFsaWduLCBvZmZzZXQpIHsK
LSAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8qIHJlY29yZCAqL1sKLSAgICAgICAg
ICAgICAgLyogdHkgOiBGMzJUeXBlICovMiwKLSAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGln
biwKLSAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAotICAgICAgICAgICAgICAvKiBz
eiA6IE5vbmUgKi8wCi0gICAgICAgICAgICBdXSk7Ci19Ci0KLWZ1bmN0aW9uIGY2NF9sb2FkKGFs
aWduLCBvZmZzZXQpIHsKLSAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8qIHJlY29y
ZCAqL1sKLSAgICAgICAgICAgICAgLyogdHkgOiBGNjRUeXBlICovMywKLSAgICAgICAgICAgICAg
LyogYWxpZ24gKi9hbGlnbiwKLSAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAotICAg
ICAgICAgICAgICAvKiBzeiA6IE5vbmUgKi8wCi0gICAgICAgICAgICBdXSk7Ci19Ci0KLWZ1bmN0
aW9uIGkzMl9sb2FkOF9zKGFsaWduLCBvZmZzZXQpIHsKLSAgcmV0dXJuIC8qIExvYWQgKi9CbG9j
ay5fXygxMywgWy8qIHJlY29yZCAqL1sKLSAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICov
MCwKLSAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKLSAgICAgICAgICAgICAgLyogb2Zm
c2V0ICovb2Zmc2V0LAotICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9b
Ci0gICAgICAgICAgICAgICAgICAvKiBNZW04ICovMCwKLSAgICAgICAgICAgICAgICAgIC8qIFNY
ICovMAotICAgICAgICAgICAgICAgIF1dCi0gICAgICAgICAgICBdXSk7Ci19Ci0KLWZ1bmN0aW9u
IGkzMl9sb2FkOF91KGFsaWduLCBvZmZzZXQpIHsKLSAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5f
XygxMywgWy8qIHJlY29yZCAqL1sKLSAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwK
LSAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKLSAgICAgICAgICAgICAgLyogb2Zmc2V0
ICovb2Zmc2V0LAotICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCi0g
ICAgICAgICAgICAgICAgICAvKiBNZW04ICovMCwKLSAgICAgICAgICAgICAgICAgIC8qIFpYICov
MQotICAgICAgICAgICAgICAgIF1dCi0gICAgICAgICAgICBdXSk7Ci19Ci0KLWZ1bmN0aW9uIGkz
Ml9sb2FkMTZfcyhhbGlnbiwgb2Zmc2V0KSB7Ci0gIHJldHVybiAvKiBMb2FkICovQmxvY2suX18o
MTMsIFsvKiByZWNvcmQgKi9bCi0gICAgICAgICAgICAgIC8qIHR5IDogSTMyVHlwZSAqLzAsCi0g
ICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCi0gICAgICAgICAgICAgIC8qIG9mZnNldCAq
L29mZnNldCwKLSAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWwotICAg
ICAgICAgICAgICAgICAgLyogTWVtMTYgKi8xLAotICAgICAgICAgICAgICAgICAgLyogU1ggKi8w
Ci0gICAgICAgICAgICAgICAgXV0KLSAgICAgICAgICAgIF1dKTsKLX0KLQotZnVuY3Rpb24gaTMy
X2xvYWQxNl91KGFsaWduLCBvZmZzZXQpIHsKLSAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygx
MywgWy8qIHJlY29yZCAqL1sKLSAgICAgICAgICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwKLSAg
ICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKLSAgICAgICAgICAgICAgLyogb2Zmc2V0ICov
b2Zmc2V0LAotICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCi0gICAg
ICAgICAgICAgICAgICAvKiBNZW0xNiAqLzEsCi0gICAgICAgICAgICAgICAgICAvKiBaWCAqLzEK
LSAgICAgICAgICAgICAgICBdXQotICAgICAgICAgICAgXV0pOwotfQotCi1mdW5jdGlvbiBpNjRf
bG9hZDhfcyhhbGlnbiwgb2Zmc2V0KSB7Ci0gIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMs
IFsvKiByZWNvcmQgKi9bCi0gICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEsCi0gICAg
ICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCi0gICAgICAgICAgICAgIC8qIG9mZnNldCAqL29m
ZnNldCwKLSAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWwotICAgICAg
ICAgICAgICAgICAgLyogTWVtOCAqLzAsCi0gICAgICAgICAgICAgICAgICAvKiBTWCAqLzAKLSAg
ICAgICAgICAgICAgICBdXQotICAgICAgICAgICAgXV0pOwotfQotCi1mdW5jdGlvbiBpNjRfbG9h
ZDhfdShhbGlnbiwgb2Zmc2V0KSB7Ci0gIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsv
KiByZWNvcmQgKi9bCi0gICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEsCi0gICAgICAg
ICAgICAgIC8qIGFsaWduICovYWxpZ24sCi0gICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNl
dCwKLSAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWwotICAgICAgICAg
ICAgICAgICAgLyogTWVtOCAqLzAsCi0gICAgICAgICAgICAgICAgICAvKiBaWCAqLzEKLSAgICAg
ICAgICAgICAgICBdXQotICAgICAgICAgICAgXV0pOwotfQotCi1mdW5jdGlvbiBpNjRfbG9hZDE2
X3MoYWxpZ24sIG9mZnNldCkgewotICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyog
cmVjb3JkICovWwotICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAotICAgICAgICAg
ICAgICAvKiBhbGlnbiAqL2FsaWduLAotICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQs
Ci0gICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKLSAgICAgICAgICAg
ICAgICAgIC8qIE1lbTE2ICovMSwKLSAgICAgICAgICAgICAgICAgIC8qIFNYICovMAotICAgICAg
ICAgICAgICAgIF1dCi0gICAgICAgICAgICBdXSk7Ci19Ci0KLWZ1bmN0aW9uIGk2NF9sb2FkMTZf
dShhbGlnbiwgb2Zmc2V0KSB7Ci0gIHJldHVybiAvKiBMb2FkICovQmxvY2suX18oMTMsIFsvKiBy
ZWNvcmQgKi9bCi0gICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEsCi0gICAgICAgICAg
ICAgIC8qIGFsaWduICovYWxpZ24sCi0gICAgICAgICAgICAgIC8qIG9mZnNldCAqL29mZnNldCwK
LSAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIHR1cGxlICovWwotICAgICAgICAgICAg
ICAgICAgLyogTWVtMTYgKi8xLAotICAgICAgICAgICAgICAgICAgLyogWlggKi8xCi0gICAgICAg
ICAgICAgICAgXV0KLSAgICAgICAgICAgIF1dKTsKLX0KLQotZnVuY3Rpb24gaTY0X2xvYWQzMl9z
KGFsaWduLCBvZmZzZXQpIHsKLSAgcmV0dXJuIC8qIExvYWQgKi9CbG9jay5fXygxMywgWy8qIHJl
Y29yZCAqL1sKLSAgICAgICAgICAgICAgLyogdHkgOiBJNjRUeXBlICovMSwKLSAgICAgICAgICAg
ICAgLyogYWxpZ24gKi9hbGlnbiwKLSAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAot
ICAgICAgICAgICAgICAvKiBzeiA6IFNvbWUgKi9bLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAg
ICAgICAvKiBNZW0zMiAqLzIsCi0gICAgICAgICAgICAgICAgICAvKiBTWCAqLzAKLSAgICAgICAg
ICAgICAgICBdXQotICAgICAgICAgICAgXV0pOwotfQotCi1mdW5jdGlvbiBpNjRfbG9hZDMyX3Uo
YWxpZ24sIG9mZnNldCkgewotICByZXR1cm4gLyogTG9hZCAqL0Jsb2NrLl9fKDEzLCBbLyogcmVj
b3JkICovWwotICAgICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAotICAgICAgICAgICAg
ICAvKiBhbGlnbiAqL2FsaWduLAotICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCi0g
ICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAg
ICAgIC8qIE1lbTMyICovMiwKLSAgICAgICAgICAgICAgICAgIC8qIFpYICovMQotICAgICAgICAg
ICAgICAgIF1dCi0gICAgICAgICAgICBdXSk7Ci19Ci0KLWZ1bmN0aW9uIGkzMl9zdG9yZShhbGln
biwgb2Zmc2V0KSB7Ci0gIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9fKDE0LCBbLyogcmVjb3Jk
ICovWwotICAgICAgICAgICAgICAvKiB0eSA6IEkzMlR5cGUgKi8wLAotICAgICAgICAgICAgICAv
KiBhbGlnbiAqL2FsaWduLAotICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCi0gICAg
ICAgICAgICAgIC8qIHN6IDogTm9uZSAqLzAKLSAgICAgICAgICAgIF1dKTsKLX0KLQotZnVuY3Rp
b24gaTY0X3N0b3JlKGFsaWduLCBvZmZzZXQpIHsKLSAgcmV0dXJuIC8qIFN0b3JlICovQmxvY2su
X18oMTQsIFsvKiByZWNvcmQgKi9bCi0gICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEs
Ci0gICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCi0gICAgICAgICAgICAgIC8qIG9mZnNl
dCAqL29mZnNldCwKLSAgICAgICAgICAgICAgLyogc3ogOiBOb25lICovMAotICAgICAgICAgICAg
XV0pOwotfQotCi1mdW5jdGlvbiBmMzJfc3RvcmUoYWxpZ24sIG9mZnNldCkgewotICByZXR1cm4g
LyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sKLSAgICAgICAgICAgICAgLyog
dHkgOiBGMzJUeXBlICovMiwKLSAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGlnbiwKLSAgICAg
ICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAotICAgICAgICAgICAgICAvKiBzeiA6IE5vbmUg
Ki8wCi0gICAgICAgICAgICBdXSk7Ci19Ci0KLWZ1bmN0aW9uIGY2NF9zdG9yZShhbGlnbiwgb2Zm
c2V0KSB7Ci0gIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9fKDE0LCBbLyogcmVjb3JkICovWwot
ICAgICAgICAgICAgICAvKiB0eSA6IEY2NFR5cGUgKi8zLAotICAgICAgICAgICAgICAvKiBhbGln
biAqL2FsaWduLAotICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCi0gICAgICAgICAg
ICAgIC8qIHN6IDogTm9uZSAqLzAKLSAgICAgICAgICAgIF1dKTsKLX0KLQotZnVuY3Rpb24gaTMy
X3N0b3JlOChhbGlnbiwgb2Zmc2V0KSB7Ci0gIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9fKDE0
LCBbLyogcmVjb3JkICovWwotICAgICAgICAgICAgICAvKiB0eSA6IEkzMlR5cGUgKi8wLAotICAg
ICAgICAgICAgICAvKiBhbGlnbiAqL2FsaWduLAotICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9v
ZmZzZXQsCi0gICAgICAgICAgICAgIC8qIHN6IDogU29tZSAqL1svKiBNZW04ICovMF0KLSAgICAg
ICAgICAgIF1dKTsKLX0KLQotZnVuY3Rpb24gaTMyX3N0b3JlMTYoYWxpZ24sIG9mZnNldCkgewot
ICByZXR1cm4gLyogU3RvcmUgKi9CbG9jay5fXygxNCwgWy8qIHJlY29yZCAqL1sKLSAgICAgICAg
ICAgICAgLyogdHkgOiBJMzJUeXBlICovMCwKLSAgICAgICAgICAgICAgLyogYWxpZ24gKi9hbGln
biwKLSAgICAgICAgICAgICAgLyogb2Zmc2V0ICovb2Zmc2V0LAotICAgICAgICAgICAgICAvKiBz
eiA6IFNvbWUgKi9bLyogTWVtMTYgKi8xXQotICAgICAgICAgICAgXV0pOwotfQotCi1mdW5jdGlv
biBpNjRfc3RvcmU4KGFsaWduLCBvZmZzZXQpIHsKLSAgcmV0dXJuIC8qIFN0b3JlICovQmxvY2su
X18oMTQsIFsvKiByZWNvcmQgKi9bCi0gICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlwZSAqLzEs
Ci0gICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCi0gICAgICAgICAgICAgIC8qIG9mZnNl
dCAqL29mZnNldCwKLSAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIE1lbTggKi8wXQot
ICAgICAgICAgICAgXV0pOwotfQotCi1mdW5jdGlvbiBpNjRfc3RvcmUxNihhbGlnbiwgb2Zmc2V0
KSB7Ci0gIHJldHVybiAvKiBTdG9yZSAqL0Jsb2NrLl9fKDE0LCBbLyogcmVjb3JkICovWwotICAg
ICAgICAgICAgICAvKiB0eSA6IEk2NFR5cGUgKi8xLAotICAgICAgICAgICAgICAvKiBhbGlnbiAq
L2FsaWduLAotICAgICAgICAgICAgICAvKiBvZmZzZXQgKi9vZmZzZXQsCi0gICAgICAgICAgICAg
IC8qIHN6IDogU29tZSAqL1svKiBNZW0xNiAqLzFdCi0gICAgICAgICAgICBdXSk7Ci19Ci0KLWZ1
bmN0aW9uIGk2NF9zdG9yZTMyKGFsaWduLCBvZmZzZXQpIHsKLSAgcmV0dXJuIC8qIFN0b3JlICov
QmxvY2suX18oMTQsIFsvKiByZWNvcmQgKi9bCi0gICAgICAgICAgICAgIC8qIHR5IDogSTY0VHlw
ZSAqLzEsCi0gICAgICAgICAgICAgIC8qIGFsaWduICovYWxpZ24sCi0gICAgICAgICAgICAgIC8q
IG9mZnNldCAqL29mZnNldCwKLSAgICAgICAgICAgICAgLyogc3ogOiBTb21lICovWy8qIE1lbTMy
ICovMl0KLSAgICAgICAgICAgIF1dKTsKLX0KLQotdmFyIHVucmVhY2hhYmxlID0gLyogVW5yZWFj
aGFibGUgKi8wOwotCi12YXIgbm9wID0gLyogTm9wICovMTsKLQotdmFyIGRyb3AgPSAvKiBEcm9w
ICovMzsKLQotdmFyICQkcmV0dXJuID0gLyogUmV0dXJuICovMjsKLQotdmFyIHNlbGVjdCA9IC8q
IFNlbGVjdCAqLzQ7Ci0KLXZhciBpMzJfY2x6ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8q
IEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBDbHogKi8wXSldKTsKLQotdmFyIGkzMl9jdHogPSAvKiBV
bmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIEN0eiAqLzFdKV0p
OwotCi12YXIgaTMyX3BvcGNudCA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBJMzIgKi9C
bG9jay5fXygwLCBbLyogUG9wY250ICovMl0pXSk7Ci0KLXZhciBpNjRfY2x6ID0gLyogVW5hcnkg
Ki9CbG9jay5fXygxOCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBDbHogKi8wXSldKTsKLQot
dmFyIGk2NF9jdHogPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogSTY0ICovQmxvY2suX18o
MSwgWy8qIEN0eiAqLzFdKV0pOwotCi12YXIgaTY0X3BvcGNudCA9IC8qIFVuYXJ5ICovQmxvY2su
X18oMTgsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogUG9wY250ICovMl0pXSk7Ci0KLXZhciBm
MzJfbmVnID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsv
KiBOZWcgKi8wXSldKTsKLQotdmFyIGYzMl9hYnMgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBb
LyogRjMyICovQmxvY2suX18oMiwgWy8qIEFicyAqLzFdKV0pOwotCi12YXIgZjMyX3NxcnQgPSAv
KiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIFNxcnQgKi82
XSldKTsKLQotdmFyIGYzMl9jZWlsID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEYzMiAq
L0Jsb2NrLl9fKDIsIFsvKiBDZWlsICovMl0pXSk7Ci0KLXZhciBmMzJfZmxvb3IgPSAvKiBVbmFy
eSAqL0Jsb2NrLl9fKDE4LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIEZsb29yICovM10pXSk7
Ci0KLXZhciBmMzJfdHJ1bmMgPSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjMyICovQmxv
Y2suX18oMiwgWy8qIFRydW5jICovNF0pXSk7Ci0KLXZhciBmMzJfbmVhcmVzdCA9IC8qIFVuYXJ5
ICovQmxvY2suX18oMTgsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogTmVhcmVzdCAqLzVdKV0p
OwotCi12YXIgZjY0X25lZyA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgsIFsvKiBGNjQgKi9CbG9j
ay5fXygzLCBbLyogTmVnICovMF0pXSk7Ci0KLXZhciBmNjRfYWJzID0gLyogVW5hcnkgKi9CbG9j
ay5fXygxOCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBBYnMgKi8xXSldKTsKLQotdmFyIGY2
NF9zcXJ0ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsv
KiBTcXJ0ICovNl0pXSk7Ci0KLXZhciBmNjRfY2VpbCA9IC8qIFVuYXJ5ICovQmxvY2suX18oMTgs
IFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQ2VpbCAqLzJdKV0pOwotCi12YXIgZjY0X2Zsb29y
ID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBGbG9v
ciAqLzNdKV0pOwotCi12YXIgZjY0X3RydW5jID0gLyogVW5hcnkgKi9CbG9jay5fXygxOCwgWy8q
IEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBUcnVuYyAqLzRdKV0pOwotCi12YXIgZjY0X25lYXJlc3Qg
PSAvKiBVbmFyeSAqL0Jsb2NrLl9fKDE4LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIE5lYXJl
c3QgKi81XSldKTsKLQotdmFyIGkzMl9hZGQgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8q
IEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBBZGQgKi8wXSldKTsKLQotdmFyIGkzMl9zdWIgPSAvKiBC
aW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBTdWIgKi8xXSld
KTsKLQotdmFyIGkzMl9tdWwgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEkzMiAqL0Js
b2NrLl9fKDAsIFsvKiBNdWwgKi8yXSldKTsKLQotdmFyIGkzMl9kaXZfcyA9IC8qIEJpbmFyeSAq
L0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIERpdlMgKi8zXSldKTsKLQot
dmFyIGkzMl9kaXZfdSA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2su
X18oMCwgWy8qIERpdlUgKi80XSldKTsKLQotdmFyIGkzMl9yZW1fcyA9IC8qIEJpbmFyeSAqL0Js
b2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFJlbVMgKi81XSldKTsKLQotdmFy
IGkzMl9yZW1fdSA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18o
MCwgWy8qIFJlbVUgKi82XSldKTsKLQotdmFyIGkzMl9hbmQgPSAvKiBCaW5hcnkgKi9CbG9jay5f
XygxOSwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBBbmQgKi83XSldKTsKLQotdmFyIGkzMl9v
ciA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIE9y
ICovOF0pXSk7Ci0KLXZhciBpMzJfeG9yID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJ
MzIgKi9CbG9jay5fXygwLCBbLyogWG9yICovOV0pXSk7Ci0KLXZhciBpMzJfc2hsID0gLyogQmlu
YXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogU2hsICovMTBdKV0p
OwotCi12YXIgaTMyX3Nocl9zID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJMzIgKi9C
bG9jay5fXygwLCBbLyogU2hyUyAqLzExXSldKTsKLQotdmFyIGkzMl9zaHJfdSA9IC8qIEJpbmFy
eSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFNoclUgKi8xMl0pXSk7
Ci0KLXZhciBpMzJfcm90bCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxv
Y2suX18oMCwgWy8qIFJvdGwgKi8xM10pXSk7Ci0KLXZhciBpMzJfcm90ciA9IC8qIEJpbmFyeSAq
L0Jsb2NrLl9fKDE5LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFJvdHIgKi8xNF0pXSk7Ci0K
LXZhciBpNjRfYWRkID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5f
XygxLCBbLyogQWRkICovMF0pXSk7Ci0KLXZhciBpNjRfc3ViID0gLyogQmluYXJ5ICovQmxvY2su
X18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogU3ViICovMV0pXSk7Ci0KLXZhciBpNjRf
bXVsID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyog
TXVsICovMl0pXSk7Ci0KLXZhciBpNjRfZGl2X3MgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwg
Wy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBEaXZTICovM10pXSk7Ci0KLXZhciBpNjRfZGl2X3Ug
PSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBEaXZV
ICovNF0pXSk7Ci0KLXZhciBpNjRfcmVtX3MgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8q
IEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBSZW1TICovNV0pXSk7Ci0KLXZhciBpNjRfcmVtX3UgPSAv
KiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBSZW1VICov
Nl0pXSk7Ci0KLXZhciBpNjRfYW5kID0gLyogQmluYXJ5ICovQmxvY2suX18oMTksIFsvKiBJNjQg
Ki9CbG9jay5fXygxLCBbLyogQW5kICovN10pXSk7Ci0KLXZhciBpNjRfb3IgPSAvKiBCaW5hcnkg
Ki9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBPciAqLzhdKV0pOwotCi12
YXIgaTY0X3hvciA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18o
MSwgWy8qIFhvciAqLzldKV0pOwotCi12YXIgaTY0X3NobCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9f
KDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFNobCAqLzEwXSldKTsKLQotdmFyIGk2NF9z
aHJfcyA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8q
IFNoclMgKi8xMV0pXSk7Ci0KLXZhciBpNjRfc2hyX3UgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygx
OSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBTaHJVICovMTJdKV0pOwotCi12YXIgaTY0X3Jv
dGwgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBS
b3RsICovMTNdKV0pOwotCi12YXIgaTY0X3JvdHIgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwg
Wy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBSb3RyICovMTRdKV0pOwotCi12YXIgZjMyX2FkZCA9
IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIEFkZCAq
LzBdKV0pOwotCi12YXIgZjMyX3N1YiA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogRjMy
ICovQmxvY2suX18oMiwgWy8qIFN1YiAqLzFdKV0pOwotCi12YXIgZjMyX211bCA9IC8qIEJpbmFy
eSAqL0Jsb2NrLl9fKDE5LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIE11bCAqLzJdKV0pOwot
Ci12YXIgZjMyX2RpdiA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogRjMyICovQmxvY2su
X18oMiwgWy8qIERpdiAqLzNdKV0pOwotCi12YXIgZjMyX21pbiA9IC8qIEJpbmFyeSAqL0Jsb2Nr
Ll9fKDE5LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIE1pbiAqLzRdKV0pOwotCi12YXIgZjMy
X21heCA9IC8qIEJpbmFyeSAqL0Jsb2NrLl9fKDE5LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8q
IE1heCAqLzVdKV0pOwotCi12YXIgZjMyX2NvcHlzaWduID0gLyogQmluYXJ5ICovQmxvY2suX18o
MTksIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogQ29weVNpZ24gKi82XSldKTsKLQotdmFyIGY2
NF9hZGQgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsv
KiBBZGQgKi8wXSldKTsKLQotdmFyIGY2NF9zdWIgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwg
Wy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBTdWIgKi8xXSldKTsKLQotdmFyIGY2NF9tdWwgPSAv
KiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBNdWwgKi8y
XSldKTsKLQotdmFyIGY2NF9kaXYgPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEY2NCAq
L0Jsb2NrLl9fKDMsIFsvKiBEaXYgKi8zXSldKTsKLQotdmFyIGY2NF9taW4gPSAvKiBCaW5hcnkg
Ki9CbG9jay5fXygxOSwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBNaW4gKi80XSldKTsKLQot
dmFyIGY2NF9tYXggPSAvKiBCaW5hcnkgKi9CbG9jay5fXygxOSwgWy8qIEY2NCAqL0Jsb2NrLl9f
KDMsIFsvKiBNYXggKi81XSldKTsKLQotdmFyIGY2NF9jb3B5c2lnbiA9IC8qIEJpbmFyeSAqL0Js
b2NrLl9fKDE5LCBbLyogRjY0ICovQmxvY2suX18oMywgWy8qIENvcHlTaWduICovNl0pXSk7Ci0K
LXZhciBpMzJfZXF6ID0gLyogVGVzdCAqL0Jsb2NrLl9fKDE2LCBbLyogSTMyICovQmxvY2suX18o
MCwgWy8qIEVxeiAqLzBdKV0pOwotCi12YXIgaTY0X2VxeiA9IC8qIFRlc3QgKi9CbG9jay5fXygx
NiwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBFcXogKi8wXSldKTsKLQotdmFyIGkzMl9lcSA9
IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBFcSAq
LzBdKV0pOwotCi12YXIgaTMyX25lID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMy
ICovQmxvY2suX18oMCwgWy8qIE5lICovMV0pXSk7Ci0KLXZhciBpMzJfbHRfcyA9IC8qIENvbXBh
cmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBMdFMgKi8yXSldKTsK
LQotdmFyIGkzMl9sdF91ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxv
Y2suX18oMCwgWy8qIEx0VSAqLzNdKV0pOwotCi12YXIgaTMyX2xlX3MgPSAvKiBDb21wYXJlICov
QmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogTGVTICovNl0pXSk7Ci0KLXZh
ciBpMzJfbGVfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEkzMiAqL0Jsb2NrLl9f
KDAsIFsvKiBMZVUgKi83XSldKTsKLQotdmFyIGkzMl9ndF9zID0gLyogQ29tcGFyZSAqL0Jsb2Nr
Ll9fKDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIEd0UyAqLzRdKV0pOwotCi12YXIgaTMy
X2d0X3UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBb
LyogR3RVICovNV0pXSk7Ci0KLXZhciBpMzJfZ2VfcyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygx
NywgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBHZVMgKi84XSldKTsKLQotdmFyIGkzMl9nZV91
ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIEdl
VSAqLzldKV0pOwotCi12YXIgaTY0X2VxID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyog
STY0ICovQmxvY2suX18oMSwgWy8qIEVxICovMF0pXSk7Ci0KLXZhciBpNjRfbmUgPSAvKiBDb21w
YXJlICovQmxvY2suX18oMTcsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogTmUgKi8xXSldKTsK
LQotdmFyIGk2NF9sdF9zID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxv
Y2suX18oMSwgWy8qIEx0UyAqLzJdKV0pOwotCi12YXIgaTY0X2x0X3UgPSAvKiBDb21wYXJlICov
QmxvY2suX18oMTcsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBbLyogTHRVICovM10pXSk7Ci0KLXZh
ciBpNjRfbGVfcyA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEk2NCAqL0Jsb2NrLl9f
KDEsIFsvKiBMZVMgKi82XSldKTsKLQotdmFyIGk2NF9sZV91ID0gLyogQ29tcGFyZSAqL0Jsb2Nr
Ll9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIExlVSAqLzddKV0pOwotCi12YXIgaTY0
X2d0X3MgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBJNjQgKi9CbG9jay5fXygxLCBb
LyogR3RTICovNF0pXSk7Ci0KLXZhciBpNjRfZ3RfdSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygx
NywgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBHdFUgKi81XSldKTsKLQotdmFyIGk2NF9nZV9z
ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEdl
UyAqLzhdKV0pOwotCi12YXIgaTY0X2dlX3UgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsv
KiBJNjQgKi9CbG9jay5fXygxLCBbLyogR2VVICovOV0pXSk7Ci0KLXZhciBmMzJfZXEgPSAvKiBD
b21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogRXEgKi8wXSld
KTsKLQotdmFyIGYzMl9uZSA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEYzMiAqL0Js
b2NrLl9fKDIsIFsvKiBOZSAqLzFdKV0pOwotCi12YXIgZjMyX2x0ID0gLyogQ29tcGFyZSAqL0Js
b2NrLl9fKDE3LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIEx0ICovMl0pXSk7Ci0KLXZhciBm
MzJfbGUgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBb
LyogTGUgKi80XSldKTsKLQotdmFyIGYzMl9ndCA9IC8qIENvbXBhcmUgKi9CbG9jay5fXygxNywg
Wy8qIEYzMiAqL0Jsb2NrLl9fKDIsIFsvKiBHdCAqLzNdKV0pOwotCi12YXIgZjMyX2dlID0gLyog
Q29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIEdlICovNV0p
XSk7Ci0KLXZhciBmNjRfZXEgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcsIFsvKiBGNjQgKi9C
bG9jay5fXygzLCBbLyogRXEgKi8wXSldKTsKLQotdmFyIGY2NF9uZSA9IC8qIENvbXBhcmUgKi9C
bG9jay5fXygxNywgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBOZSAqLzFdKV0pOwotCi12YXIg
ZjY0X2x0ID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjY0ICovQmxvY2suX18oMywg
Wy8qIEx0ICovMl0pXSk7Ci0KLXZhciBmNjRfbGUgPSAvKiBDb21wYXJlICovQmxvY2suX18oMTcs
IFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogTGUgKi80XSldKTsKLQotdmFyIGY2NF9ndCA9IC8q
IENvbXBhcmUgKi9CbG9jay5fXygxNywgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBHdCAqLzNd
KV0pOwotCi12YXIgZjY0X2dlID0gLyogQ29tcGFyZSAqL0Jsb2NrLl9fKDE3LCBbLyogRjY0ICov
QmxvY2suX18oMywgWy8qIEdlICovNV0pXSk7Ci0KLXZhciBpMzJfd3JhcF9pNjQgPSAvKiBDb252
ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBJMzIgKi9CbG9jay5fXygwLCBbLyogV3JhcEk2NCAqLzJd
KV0pOwotCi12YXIgaTMyX3RydW5jX3NfZjMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBb
LyogSTMyICovQmxvY2suX18oMCwgWy8qIFRydW5jU0YzMiAqLzNdKV0pOwotCi12YXIgaTMyX3Ry
dW5jX3VfZjMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogSTMyICovQmxvY2suX18o
MCwgWy8qIFRydW5jVUYzMiAqLzRdKV0pOwotCi12YXIgaTMyX3RydW5jX3NfZjY0ID0gLyogQ29u
dmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFRydW5jU0Y2NCAq
LzVdKV0pOwotCi12YXIgaTMyX3RydW5jX3VfZjY0ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIw
LCBbLyogSTMyICovQmxvY2suX18oMCwgWy8qIFRydW5jVUY2NCAqLzZdKV0pOwotCi12YXIgaTY0
X2V4dGVuZF9zX2kzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEk2NCAqL0Jsb2Nr
Ll9fKDEsIFsvKiBFeHRlbmRTSTMyICovMF0pXSk7Ci0KLXZhciBpNjRfZXh0ZW5kX3VfaTMyID0g
LyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIEV4dGVu
ZFVJMzIgKi8xXSldKTsKLQotdmFyIGk2NF90cnVuY19zX2YzMiA9IC8qIENvbnZlcnQgKi9CbG9j
ay5fXygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBUcnVuY1NGMzIgKi8zXSldKTsKLQot
dmFyIGk2NF90cnVuY191X2YzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEk2NCAq
L0Jsb2NrLl9fKDEsIFsvKiBUcnVuY1VGMzIgKi80XSldKTsKLQotdmFyIGk2NF90cnVuY19zX2Y2
NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBU
cnVuY1NGNjQgKi81XSldKTsKLQotdmFyIGk2NF90cnVuY191X2Y2NCA9IC8qIENvbnZlcnQgKi9C
bG9jay5fXygyMCwgWy8qIEk2NCAqL0Jsb2NrLl9fKDEsIFsvKiBUcnVuY1VGNjQgKi82XSldKTsK
LQotdmFyIGYzMl9jb252ZXJ0X3NfaTMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyog
RjMyICovQmxvY2suX18oMiwgWy8qIENvbnZlcnRTSTMyICovMF0pXSk7Ci0KLXZhciBmMzJfY29u
dmVydF91X2kzMiA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEYzMiAqL0Jsb2NrLl9f
KDIsIFsvKiBDb252ZXJ0VUkzMiAqLzFdKV0pOwotCi12YXIgZjMyX2NvbnZlcnRfc19pNjQgPSAv
KiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogQ29udmVy
dFNJNjQgKi8yXSldKTsKLQotdmFyIGYzMl9jb252ZXJ0X3VfaTY0ID0gLyogQ29udmVydCAqL0Js
b2NrLl9fKDIwLCBbLyogRjMyICovQmxvY2suX18oMiwgWy8qIENvbnZlcnRVSTY0ICovM10pXSk7
Ci0KLXZhciBmMzJfZGVtb3RlX2Y2NCA9IC8qIENvbnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEYz
MiAqL0Jsb2NrLl9fKDIsIFsvKiBEZW1vdGVGNjQgKi81XSldKTsKLQotdmFyIGY2NF9jb252ZXJ0
X3NfaTMyID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjY0ICovQmxvY2suX18oMywg
Wy8qIENvbnZlcnRTSTMyICovMF0pXSk7Ci0KLXZhciBmNjRfY29udmVydF91X2kzMiA9IC8qIENv
bnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEY2NCAqL0Jsb2NrLl9fKDMsIFsvKiBDb252ZXJ0VUkz
MiAqLzFdKV0pOwotCi12YXIgZjY0X2NvbnZlcnRfc19pNjQgPSAvKiBDb252ZXJ0ICovQmxvY2su
X18oMjAsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBbLyogQ29udmVydFNJNjQgKi8yXSldKTsKLQot
dmFyIGY2NF9jb252ZXJ0X3VfaTY0ID0gLyogQ29udmVydCAqL0Jsb2NrLl9fKDIwLCBbLyogRjY0
ICovQmxvY2suX18oMywgWy8qIENvbnZlcnRVSTY0ICovM10pXSk7Ci0KLXZhciBmNjRfcHJvbW90
ZV9mMzIgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsvKiBGNjQgKi9CbG9jay5fXygzLCBb
LyogUHJvbW90ZUYzMiAqLzRdKV0pOwotCi12YXIgaTMyX3JlaW50ZXJwcmV0X2YzMiA9IC8qIENv
bnZlcnQgKi9CbG9jay5fXygyMCwgWy8qIEkzMiAqL0Jsb2NrLl9fKDAsIFsvKiBSZWludGVycHJl
dEZsb2F0ICovN10pXSk7Ci0KLXZhciBpNjRfcmVpbnRlcnByZXRfZjY0ID0gLyogQ29udmVydCAq
L0Jsb2NrLl9fKDIwLCBbLyogSTY0ICovQmxvY2suX18oMSwgWy8qIFJlaW50ZXJwcmV0RmxvYXQg
Ki83XSldKTsKLQotdmFyIGYzMl9yZWludGVycHJldF9pMzIgPSAvKiBDb252ZXJ0ICovQmxvY2su
X18oMjAsIFsvKiBGMzIgKi9CbG9jay5fXygyLCBbLyogUmVpbnRlcnByZXRJbnQgKi82XSldKTsK
LQotdmFyIGY2NF9yZWludGVycHJldF9pNjQgPSAvKiBDb252ZXJ0ICovQmxvY2suX18oMjAsIFsv
KiBGNjQgKi9CbG9jay5fXygzLCBbLyogUmVpbnRlcnByZXRJbnQgKi82XSldKTsKLQotdmFyIGN1
cnJlbnRfbWVtb3J5ID0gLyogQ3VycmVudE1lbW9yeSAqLzU7Ci0KLXZhciBncm93X21lbW9yeSA9
IC8qIEdyb3dNZW1vcnkgKi82OwotCi1leHBvcnRzLmkzMl9jb25zdCAgICAgICAgICAgPSBpMzJf
Y29uc3Q7Ci1leHBvcnRzLmk2NF9jb25zdCAgICAgICAgICAgPSBpNjRfY29uc3Q7Ci1leHBvcnRz
LmYzMl9jb25zdCAgICAgICAgICAgPSBmMzJfY29uc3Q7Ci1leHBvcnRzLmY2NF9jb25zdCAgICAg
ICAgICAgPSBmNjRfY29uc3Q7Ci1leHBvcnRzLnVucmVhY2hhYmxlICAgICAgICAgPSB1bnJlYWNo
YWJsZTsKLWV4cG9ydHMubm9wICAgICAgICAgICAgICAgICA9IG5vcDsKLWV4cG9ydHMuZHJvcCAg
ICAgICAgICAgICAgICA9IGRyb3A7Ci1leHBvcnRzLmJsb2NrICAgICAgICAgICAgICAgPSBibG9j
azsKLWV4cG9ydHMubG9vcCAgICAgICAgICAgICAgICA9IGxvb3A7Ci1leHBvcnRzLmJyICAgICAg
ICAgICAgICAgICAgPSBicjsKLWV4cG9ydHMuYnJfaWYgICAgICAgICAgICAgICA9IGJyX2lmOwot
ZXhwb3J0cy5icl90YWJsZSAgICAgICAgICAgID0gYnJfdGFibGU7Ci1leHBvcnRzLiQkcmV0dXJu
ICAgICAgICAgICAgPSAkJHJldHVybjsKLWV4cG9ydHMuaWZfICAgICAgICAgICAgICAgICA9IGlm
XzsKLWV4cG9ydHMuc2VsZWN0ICAgICAgICAgICAgICA9IHNlbGVjdDsKLWV4cG9ydHMuY2FsbCAg
ICAgICAgICAgICAgICA9IGNhbGw7Ci1leHBvcnRzLmNhbGxfaW5kaXJlY3QgICAgICAgPSBjYWxs
X2luZGlyZWN0OwotZXhwb3J0cy5nZXRfbG9jYWwgICAgICAgICAgID0gZ2V0X2xvY2FsOwotZXhw
b3J0cy5zZXRfbG9jYWwgICAgICAgICAgID0gc2V0X2xvY2FsOwotZXhwb3J0cy50ZWVfbG9jYWwg
ICAgICAgICAgID0gdGVlX2xvY2FsOwotZXhwb3J0cy5nZXRfZ2xvYmFsICAgICAgICAgID0gZ2V0
X2dsb2JhbDsKLWV4cG9ydHMuc2V0X2dsb2JhbCAgICAgICAgICA9IHNldF9nbG9iYWw7Ci1leHBv
cnRzLmkzMl9sb2FkICAgICAgICAgICAgPSBpMzJfbG9hZDsKLWV4cG9ydHMuaTY0X2xvYWQgICAg
ICAgICAgICA9IGk2NF9sb2FkOwotZXhwb3J0cy5mMzJfbG9hZCAgICAgICAgICAgID0gZjMyX2xv
YWQ7Ci1leHBvcnRzLmY2NF9sb2FkICAgICAgICAgICAgPSBmNjRfbG9hZDsKLWV4cG9ydHMuaTMy
X2xvYWQ4X3MgICAgICAgICA9IGkzMl9sb2FkOF9zOwotZXhwb3J0cy5pMzJfbG9hZDhfdSAgICAg
ICAgID0gaTMyX2xvYWQ4X3U7Ci1leHBvcnRzLmkzMl9sb2FkMTZfcyAgICAgICAgPSBpMzJfbG9h
ZDE2X3M7Ci1leHBvcnRzLmkzMl9sb2FkMTZfdSAgICAgICAgPSBpMzJfbG9hZDE2X3U7Ci1leHBv
cnRzLmk2NF9sb2FkOF9zICAgICAgICAgPSBpNjRfbG9hZDhfczsKLWV4cG9ydHMuaTY0X2xvYWQ4
X3UgICAgICAgICA9IGk2NF9sb2FkOF91OwotZXhwb3J0cy5pNjRfbG9hZDE2X3MgICAgICAgID0g
aTY0X2xvYWQxNl9zOwotZXhwb3J0cy5pNjRfbG9hZDE2X3UgICAgICAgID0gaTY0X2xvYWQxNl91
OwotZXhwb3J0cy5pNjRfbG9hZDMyX3MgICAgICAgID0gaTY0X2xvYWQzMl9zOwotZXhwb3J0cy5p
NjRfbG9hZDMyX3UgICAgICAgID0gaTY0X2xvYWQzMl91OwotZXhwb3J0cy5pMzJfc3RvcmUgICAg
ICAgICAgID0gaTMyX3N0b3JlOwotZXhwb3J0cy5pNjRfc3RvcmUgICAgICAgICAgID0gaTY0X3N0
b3JlOwotZXhwb3J0cy5mMzJfc3RvcmUgICAgICAgICAgID0gZjMyX3N0b3JlOwotZXhwb3J0cy5m
NjRfc3RvcmUgICAgICAgICAgID0gZjY0X3N0b3JlOwotZXhwb3J0cy5pMzJfc3RvcmU4ICAgICAg
ICAgID0gaTMyX3N0b3JlODsKLWV4cG9ydHMuaTMyX3N0b3JlMTYgICAgICAgICA9IGkzMl9zdG9y
ZTE2OwotZXhwb3J0cy5pNjRfc3RvcmU4ICAgICAgICAgID0gaTY0X3N0b3JlODsKLWV4cG9ydHMu
aTY0X3N0b3JlMTYgICAgICAgICA9IGk2NF9zdG9yZTE2OwotZXhwb3J0cy5pNjRfc3RvcmUzMiAg
ICAgICAgID0gaTY0X3N0b3JlMzI7Ci1leHBvcnRzLmkzMl9jbHogICAgICAgICAgICAgPSBpMzJf
Y2x6OwotZXhwb3J0cy5pMzJfY3R6ICAgICAgICAgICAgID0gaTMyX2N0ejsKLWV4cG9ydHMuaTMy
X3BvcGNudCAgICAgICAgICA9IGkzMl9wb3BjbnQ7Ci1leHBvcnRzLmk2NF9jbHogICAgICAgICAg
ICAgPSBpNjRfY2x6OwotZXhwb3J0cy5pNjRfY3R6ICAgICAgICAgICAgID0gaTY0X2N0ejsKLWV4
cG9ydHMuaTY0X3BvcGNudCAgICAgICAgICA9IGk2NF9wb3BjbnQ7Ci1leHBvcnRzLmYzMl9uZWcg
ICAgICAgICAgICAgPSBmMzJfbmVnOwotZXhwb3J0cy5mMzJfYWJzICAgICAgICAgICAgID0gZjMy
X2FiczsKLWV4cG9ydHMuZjMyX3NxcnQgICAgICAgICAgICA9IGYzMl9zcXJ0OwotZXhwb3J0cy5m
MzJfY2VpbCAgICAgICAgICAgID0gZjMyX2NlaWw7Ci1leHBvcnRzLmYzMl9mbG9vciAgICAgICAg
ICAgPSBmMzJfZmxvb3I7Ci1leHBvcnRzLmYzMl90cnVuYyAgICAgICAgICAgPSBmMzJfdHJ1bmM7
Ci1leHBvcnRzLmYzMl9uZWFyZXN0ICAgICAgICAgPSBmMzJfbmVhcmVzdDsKLWV4cG9ydHMuZjY0
X25lZyAgICAgICAgICAgICA9IGY2NF9uZWc7Ci1leHBvcnRzLmY2NF9hYnMgICAgICAgICAgICAg
PSBmNjRfYWJzOwotZXhwb3J0cy5mNjRfc3FydCAgICAgICAgICAgID0gZjY0X3NxcnQ7Ci1leHBv
cnRzLmY2NF9jZWlsICAgICAgICAgICAgPSBmNjRfY2VpbDsKLWV4cG9ydHMuZjY0X2Zsb29yICAg
ICAgICAgICA9IGY2NF9mbG9vcjsKLWV4cG9ydHMuZjY0X3RydW5jICAgICAgICAgICA9IGY2NF90
cnVuYzsKLWV4cG9ydHMuZjY0X25lYXJlc3QgICAgICAgICA9IGY2NF9uZWFyZXN0OwotZXhwb3J0
cy5pMzJfYWRkICAgICAgICAgICAgID0gaTMyX2FkZDsKLWV4cG9ydHMuaTMyX3N1YiAgICAgICAg
ICAgICA9IGkzMl9zdWI7Ci1leHBvcnRzLmkzMl9tdWwgICAgICAgICAgICAgPSBpMzJfbXVsOwot
ZXhwb3J0cy5pMzJfZGl2X3MgICAgICAgICAgID0gaTMyX2Rpdl9zOwotZXhwb3J0cy5pMzJfZGl2
X3UgICAgICAgICAgID0gaTMyX2Rpdl91OwotZXhwb3J0cy5pMzJfcmVtX3MgICAgICAgICAgID0g
aTMyX3JlbV9zOwotZXhwb3J0cy5pMzJfcmVtX3UgICAgICAgICAgID0gaTMyX3JlbV91OwotZXhw
b3J0cy5pMzJfYW5kICAgICAgICAgICAgID0gaTMyX2FuZDsKLWV4cG9ydHMuaTMyX29yICAgICAg
ICAgICAgICA9IGkzMl9vcjsKLWV4cG9ydHMuaTMyX3hvciAgICAgICAgICAgICA9IGkzMl94b3I7
Ci1leHBvcnRzLmkzMl9zaGwgICAgICAgICAgICAgPSBpMzJfc2hsOwotZXhwb3J0cy5pMzJfc2hy
X3MgICAgICAgICAgID0gaTMyX3Nocl9zOwotZXhwb3J0cy5pMzJfc2hyX3UgICAgICAgICAgID0g
aTMyX3Nocl91OwotZXhwb3J0cy5pMzJfcm90bCAgICAgICAgICAgID0gaTMyX3JvdGw7Ci1leHBv
cnRzLmkzMl9yb3RyICAgICAgICAgICAgPSBpMzJfcm90cjsKLWV4cG9ydHMuaTY0X2FkZCAgICAg
ICAgICAgICA9IGk2NF9hZGQ7Ci1leHBvcnRzLmk2NF9zdWIgICAgICAgICAgICAgPSBpNjRfc3Vi
OwotZXhwb3J0cy5pNjRfbXVsICAgICAgICAgICAgID0gaTY0X211bDsKLWV4cG9ydHMuaTY0X2Rp
dl9zICAgICAgICAgICA9IGk2NF9kaXZfczsKLWV4cG9ydHMuaTY0X2Rpdl91ICAgICAgICAgICA9
IGk2NF9kaXZfdTsKLWV4cG9ydHMuaTY0X3JlbV9zICAgICAgICAgICA9IGk2NF9yZW1fczsKLWV4
cG9ydHMuaTY0X3JlbV91ICAgICAgICAgICA9IGk2NF9yZW1fdTsKLWV4cG9ydHMuaTY0X2FuZCAg
ICAgICAgICAgICA9IGk2NF9hbmQ7Ci1leHBvcnRzLmk2NF9vciAgICAgICAgICAgICAgPSBpNjRf
b3I7Ci1leHBvcnRzLmk2NF94b3IgICAgICAgICAgICAgPSBpNjRfeG9yOwotZXhwb3J0cy5pNjRf
c2hsICAgICAgICAgICAgID0gaTY0X3NobDsKLWV4cG9ydHMuaTY0X3Nocl9zICAgICAgICAgICA9
IGk2NF9zaHJfczsKLWV4cG9ydHMuaTY0X3Nocl91ICAgICAgICAgICA9IGk2NF9zaHJfdTsKLWV4
cG9ydHMuaTY0X3JvdGwgICAgICAgICAgICA9IGk2NF9yb3RsOwotZXhwb3J0cy5pNjRfcm90ciAg
ICAgICAgICAgID0gaTY0X3JvdHI7Ci1leHBvcnRzLmYzMl9hZGQgICAgICAgICAgICAgPSBmMzJf
YWRkOwotZXhwb3J0cy5mMzJfc3ViICAgICAgICAgICAgID0gZjMyX3N1YjsKLWV4cG9ydHMuZjMy
X211bCAgICAgICAgICAgICA9IGYzMl9tdWw7Ci1leHBvcnRzLmYzMl9kaXYgICAgICAgICAgICAg
PSBmMzJfZGl2OwotZXhwb3J0cy5mMzJfbWluICAgICAgICAgICAgID0gZjMyX21pbjsKLWV4cG9y
dHMuZjMyX21heCAgICAgICAgICAgICA9IGYzMl9tYXg7Ci1leHBvcnRzLmYzMl9jb3B5c2lnbiAg
ICAgICAgPSBmMzJfY29weXNpZ247Ci1leHBvcnRzLmY2NF9hZGQgICAgICAgICAgICAgPSBmNjRf
YWRkOwotZXhwb3J0cy5mNjRfc3ViICAgICAgICAgICAgID0gZjY0X3N1YjsKLWV4cG9ydHMuZjY0
X211bCAgICAgICAgICAgICA9IGY2NF9tdWw7Ci1leHBvcnRzLmY2NF9kaXYgICAgICAgICAgICAg
PSBmNjRfZGl2OwotZXhwb3J0cy5mNjRfbWluICAgICAgICAgICAgID0gZjY0X21pbjsKLWV4cG9y
dHMuZjY0X21heCAgICAgICAgICAgICA9IGY2NF9tYXg7Ci1leHBvcnRzLmY2NF9jb3B5c2lnbiAg
ICAgICAgPSBmNjRfY29weXNpZ247Ci1leHBvcnRzLmkzMl9lcXogICAgICAgICAgICAgPSBpMzJf
ZXF6OwotZXhwb3J0cy5pNjRfZXF6ICAgICAgICAgICAgID0gaTY0X2VxejsKLWV4cG9ydHMuaTMy
X2VxICAgICAgICAgICAgICA9IGkzMl9lcTsKLWV4cG9ydHMuaTMyX25lICAgICAgICAgICAgICA9
IGkzMl9uZTsKLWV4cG9ydHMuaTMyX2x0X3MgICAgICAgICAgICA9IGkzMl9sdF9zOwotZXhwb3J0
cy5pMzJfbHRfdSAgICAgICAgICAgID0gaTMyX2x0X3U7Ci1leHBvcnRzLmkzMl9sZV9zICAgICAg
ICAgICAgPSBpMzJfbGVfczsKLWV4cG9ydHMuaTMyX2xlX3UgICAgICAgICAgICA9IGkzMl9sZV91
OwotZXhwb3J0cy5pMzJfZ3RfcyAgICAgICAgICAgID0gaTMyX2d0X3M7Ci1leHBvcnRzLmkzMl9n
dF91ICAgICAgICAgICAgPSBpMzJfZ3RfdTsKLWV4cG9ydHMuaTMyX2dlX3MgICAgICAgICAgICA9
IGkzMl9nZV9zOwotZXhwb3J0cy5pMzJfZ2VfdSAgICAgICAgICAgID0gaTMyX2dlX3U7Ci1leHBv
cnRzLmk2NF9lcSAgICAgICAgICAgICAgPSBpNjRfZXE7Ci1leHBvcnRzLmk2NF9uZSAgICAgICAg
ICAgICAgPSBpNjRfbmU7Ci1leHBvcnRzLmk2NF9sdF9zICAgICAgICAgICAgPSBpNjRfbHRfczsK
LWV4cG9ydHMuaTY0X2x0X3UgICAgICAgICAgICA9IGk2NF9sdF91OwotZXhwb3J0cy5pNjRfbGVf
cyAgICAgICAgICAgID0gaTY0X2xlX3M7Ci1leHBvcnRzLmk2NF9sZV91ICAgICAgICAgICAgPSBp
NjRfbGVfdTsKLWV4cG9ydHMuaTY0X2d0X3MgICAgICAgICAgICA9IGk2NF9ndF9zOwotZXhwb3J0
cy5pNjRfZ3RfdSAgICAgICAgICAgID0gaTY0X2d0X3U7Ci1leHBvcnRzLmk2NF9nZV9zICAgICAg
ICAgICAgPSBpNjRfZ2VfczsKLWV4cG9ydHMuaTY0X2dlX3UgICAgICAgICAgICA9IGk2NF9nZV91
OwotZXhwb3J0cy5mMzJfZXEgICAgICAgICAgICAgID0gZjMyX2VxOwotZXhwb3J0cy5mMzJfbmUg
ICAgICAgICAgICAgID0gZjMyX25lOwotZXhwb3J0cy5mMzJfbHQgICAgICAgICAgICAgID0gZjMy
X2x0OwotZXhwb3J0cy5mMzJfbGUgICAgICAgICAgICAgID0gZjMyX2xlOwotZXhwb3J0cy5mMzJf
Z3QgICAgICAgICAgICAgID0gZjMyX2d0OwotZXhwb3J0cy5mMzJfZ2UgICAgICAgICAgICAgID0g
ZjMyX2dlOwotZXhwb3J0cy5mNjRfZXEgICAgICAgICAgICAgID0gZjY0X2VxOwotZXhwb3J0cy5m
NjRfbmUgICAgICAgICAgICAgID0gZjY0X25lOwotZXhwb3J0cy5mNjRfbHQgICAgICAgICAgICAg
ID0gZjY0X2x0OwotZXhwb3J0cy5mNjRfbGUgICAgICAgICAgICAgID0gZjY0X2xlOwotZXhwb3J0
cy5mNjRfZ3QgICAgICAgICAgICAgID0gZjY0X2d0OwotZXhwb3J0cy5mNjRfZ2UgICAgICAgICAg
ICAgID0gZjY0X2dlOwotZXhwb3J0cy5pMzJfd3JhcF9pNjQgICAgICAgID0gaTMyX3dyYXBfaTY0
OwotZXhwb3J0cy5pMzJfdHJ1bmNfc19mMzIgICAgID0gaTMyX3RydW5jX3NfZjMyOwotZXhwb3J0
cy5pMzJfdHJ1bmNfdV9mMzIgICAgID0gaTMyX3RydW5jX3VfZjMyOwotZXhwb3J0cy5pMzJfdHJ1
bmNfc19mNjQgICAgID0gaTMyX3RydW5jX3NfZjY0OwotZXhwb3J0cy5pMzJfdHJ1bmNfdV9mNjQg
ICAgID0gaTMyX3RydW5jX3VfZjY0OwotZXhwb3J0cy5pNjRfZXh0ZW5kX3NfaTMyICAgID0gaTY0
X2V4dGVuZF9zX2kzMjsKLWV4cG9ydHMuaTY0X2V4dGVuZF91X2kzMiAgICA9IGk2NF9leHRlbmRf
dV9pMzI7Ci1leHBvcnRzLmk2NF90cnVuY19zX2YzMiAgICAgPSBpNjRfdHJ1bmNfc19mMzI7Ci1l
eHBvcnRzLmk2NF90cnVuY191X2YzMiAgICAgPSBpNjRfdHJ1bmNfdV9mMzI7Ci1leHBvcnRzLmk2
NF90cnVuY19zX2Y2NCAgICAgPSBpNjRfdHJ1bmNfc19mNjQ7Ci1leHBvcnRzLmk2NF90cnVuY191
X2Y2NCAgICAgPSBpNjRfdHJ1bmNfdV9mNjQ7Ci1leHBvcnRzLmYzMl9jb252ZXJ0X3NfaTMyICAg
PSBmMzJfY29udmVydF9zX2kzMjsKLWV4cG9ydHMuZjMyX2NvbnZlcnRfdV9pMzIgICA9IGYzMl9j
b252ZXJ0X3VfaTMyOwotZXhwb3J0cy5mMzJfY29udmVydF9zX2k2NCAgID0gZjMyX2NvbnZlcnRf
c19pNjQ7Ci1leHBvcnRzLmYzMl9jb252ZXJ0X3VfaTY0ICAgPSBmMzJfY29udmVydF91X2k2NDsK
LWV4cG9ydHMuZjMyX2RlbW90ZV9mNjQgICAgICA9IGYzMl9kZW1vdGVfZjY0OwotZXhwb3J0cy5m
NjRfY29udmVydF9zX2kzMiAgID0gZjY0X2NvbnZlcnRfc19pMzI7Ci1leHBvcnRzLmY2NF9jb252
ZXJ0X3VfaTMyICAgPSBmNjRfY29udmVydF91X2kzMjsKLWV4cG9ydHMuZjY0X2NvbnZlcnRfc19p
NjQgICA9IGY2NF9jb252ZXJ0X3NfaTY0OwotZXhwb3J0cy5mNjRfY29udmVydF91X2k2NCAgID0g
ZjY0X2NvbnZlcnRfdV9pNjQ7Ci1leHBvcnRzLmY2NF9wcm9tb3RlX2YzMiAgICAgPSBmNjRfcHJv
bW90ZV9mMzI7Ci1leHBvcnRzLmkzMl9yZWludGVycHJldF9mMzIgPSBpMzJfcmVpbnRlcnByZXRf
ZjMyOwotZXhwb3J0cy5pNjRfcmVpbnRlcnByZXRfZjY0ID0gaTY0X3JlaW50ZXJwcmV0X2Y2NDsK
LWV4cG9ydHMuZjMyX3JlaW50ZXJwcmV0X2kzMiA9IGYzMl9yZWludGVycHJldF9pMzI7Ci1leHBv
cnRzLmY2NF9yZWludGVycHJldF9pNjQgPSBmNjRfcmVpbnRlcnByZXRfaTY0OwotZXhwb3J0cy5j
dXJyZW50X21lbW9yeSAgICAgID0gY3VycmVudF9tZW1vcnk7Ci1leHBvcnRzLmdyb3dfbWVtb3J5
ICAgICAgICAgPSBncm93X21lbW9yeTsKLS8qIE5vIHNpZGUgZWZmZWN0ICovCi0vLy8vLy8vLyBl
bmQgb2Ygb3BlcmF0b3JzLmpzIC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07Ci0K
LQotICBfcmVnaXN0cnlbJ3BhcnNlJ10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9
IHt9OwotLy8vLy8vLy8gc3RhcnQgb2YgcGFyc2UuanMgLy8vLy8vLy8KLS8vIEdlbmVyYXRlZCBi
eSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQotJ3Vz
ZSBzdHJpY3QnOwotCi12YXIgQ3VycnkgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMv
Y3VycnkiKTsKLXZhciBMZXhlciAgICA9IHJlcXVpcmUoIi4vbGV4ZXIiKTsKLXZhciBMZXhpbmcg
ICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9sZXhpbmciKTsKLXZhciBQYXJzZXIgICA9
IHJlcXVpcmUoIi4vcGFyc2VyIik7Ci12YXIgU2NyaXB0ICAgPSByZXF1aXJlKCIuL3NjcmlwdCIp
OwotdmFyIFNvdXJjZSAgID0gcmVxdWlyZSgiLi9zb3VyY2UiKTsKLXZhciBDYW1sX29iaiA9IHJl
cXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOwotCi1mdW5jdGlvbiBwYXJzZSRw
cmltZShuYW1lLCBsZXhidWYsIHN0YXJ0KSB7Ci0gIHZhciBpbml0ID0gbGV4YnVmWy8qIGxleF9j
dXJyX3AgKi8xMV07Ci0gIGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdID0gLyogcmVjb3JkICov
WwotICAgIC8qIHBvc19mbmFtZSAqL25hbWUsCi0gICAgLyogcG9zX2xudW0gKi9pbml0Wy8qIHBv
c19sbnVtICovMV0sCi0gICAgLyogcG9zX2JvbCAqL2luaXRbLyogcG9zX2JvbCAqLzJdLAotICAg
IC8qIHBvc19jbnVtICovaW5pdFsvKiBwb3NfY251bSAqLzNdCi0gIF07Ci0gIHRyeSB7Ci0gICAg
cmV0dXJuIEN1cnJ5Ll8yKHN0YXJ0LCBMZXhlci50b2tlbiwgbGV4YnVmKTsKLSAgfQotICBjYXRj
aCAoZXhuKXsKLSAgICBpZiAoZXhuWzBdID09PSBTY3JpcHQuU3ludGF4KSB7Ci0gICAgICB2YXIg
cmVnaW9uID0gZXhuWzFdOwotICAgICAgdmFyIHJlZ2lvbiRwcmltZSA9IENhbWxfb2JqLmNhbWxf
bm90ZXF1YWwocmVnaW9uLCBTb3VyY2Uubm9fcmVnaW9uKSA/IHJlZ2lvbiA6IC8qIHJlY29yZCAq
L1sKLSAgICAgICAgICAvKiBsZWZ0ICovTGV4ZXIuY29udmVydF9wb3MobGV4YnVmWy8qIGxleF9z
dGFydF9wICovMTBdKSwKLSAgICAgICAgICAvKiByaWdodCAqL0xleGVyLmNvbnZlcnRfcG9zKGxl
eGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdKQotICAgICAgICBdOwotICAgICAgdGhyb3cgWwotICAg
ICAgICAgICAgU2NyaXB0LlN5bnRheCwKLSAgICAgICAgICAgIHJlZ2lvbiRwcmltZSwKLSAgICAg
ICAgICAgIGV4blsyXQotICAgICAgICAgIF07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdGhy
b3cgZXhuOwotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBwYXJzZShuYW1lLCBsZXhidWYsIHBh
cmFtKSB7Ci0gIHN3aXRjaCAocGFyYW0pIHsKLSAgICBjYXNlIDAgOiAKLSAgICAgICAgcmV0dXJu
IHBhcnNlJHByaW1lKG5hbWUsIGxleGJ1ZiwgUGFyc2VyLm1vZHVsZTEpOwotICAgIGNhc2UgMSA6
IAotICAgICAgICByZXR1cm4gcGFyc2UkcHJpbWUobmFtZSwgbGV4YnVmLCBQYXJzZXIuc2NyaXB0
KTsKLSAgICBjYXNlIDIgOiAKLSAgICAgICAgcmV0dXJuIHBhcnNlJHByaW1lKG5hbWUsIGxleGJ1
ZiwgUGFyc2VyLnNjcmlwdDEpOwotICAgIAotICB9Ci19Ci0KLWZ1bmN0aW9uIHN0cmluZ190byhz
dGFydCwgcykgewotICB2YXIgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nKHMpOwotICByZXR1
cm4gcGFyc2UoInN0cmluZyIsIGxleGJ1Ziwgc3RhcnQpOwotfQotCi1mdW5jdGlvbiBzdHJpbmdf
dG9fc2NyaXB0KHMpIHsKLSAgcmV0dXJuIHN0cmluZ190bygvKiBTY3JpcHQgKi8xLCBzKTsKLX0K
LQotZnVuY3Rpb24gc3RyaW5nX3RvX21vZHVsZShzKSB7Ci0gIHJldHVybiBzdHJpbmdfdG8oLyog
TW9kdWxlICovMCwgcyk7Ci19Ci0KLXZhciBTeW50YXggPSBTY3JpcHQuU3ludGF4OwotCi1leHBv
cnRzLlN5bnRheCAgICAgICAgICAgPSBTeW50YXg7Ci1leHBvcnRzLnBhcnNlICAgICAgICAgICAg
PSBwYXJzZTsKLWV4cG9ydHMuc3RyaW5nX3RvX3NjcmlwdCA9IHN0cmluZ190b19zY3JpcHQ7Ci1l
eHBvcnRzLnN0cmluZ190b19tb2R1bGUgPSBzdHJpbmdfdG9fbW9kdWxlOwotLyogTGV4ZXIgTm90
IGEgcHVyZSBtb2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBwYXJzZS5qcyAvLy8vLy8vLwotICAg
IHJldHVybiBleHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydwYXJzZXInXSA9IGZ1bmN0
aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBwYXJzZXIu
anMgLy8vLy8vLy8KLS8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAs
IFBMRUFTRSBFRElUIFdJVEggQ0FSRQotJ3VzZSBzdHJpY3QnOwotCi12YXIgQXN0ICAgICAgICAg
ICAgICAgICAgICAgPSByZXF1aXJlKCIuL2FzdCIpOwotdmFyIEkzMiAgICAgICAgICAgICAgICAg
ICAgID0gcmVxdWlyZSgiLi9pMzIiKTsKLXZhciBMaWIgICAgICAgICAgICAgICAgICAgICA9IHJl
cXVpcmUoIi4vbGliIik7Ci12YXIgJCRNYXAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJi
cy1wbGF0Zm9ybS9saWIvanMvbWFwIik7Ci12YXIgTGlzdCAgICAgICAgICAgICAgICAgICAgPSBy
ZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvbGlzdCIpOwotdmFyIEJsb2NrICAgICAgICAgICAg
ICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Ci12YXIgQ3Vycnkg
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsK
LXZhciBTY3JpcHQgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vc2NyaXB0Iik7Ci12YXIg
U291cmNlICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL3NvdXJjZSIpOwotdmFyICQkU3Ry
aW5nICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIp
OwotdmFyIFBhcnNpbmcgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGli
L2pzL3BhcnNpbmciKTsKLXZhciBDYW1sX29iaiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoImJz
LXBsYXRmb3JtL2xpYi9qcy9jYW1sX29iaiIpOwotdmFyIE9wZXJhdG9ycyAgICAgICAgICAgICAg
ID0gcmVxdWlyZSgiLi9vcGVyYXRvcnMiKTsKLXZhciBQZXJ2YXNpdmVzICAgICAgICAgICAgICA9
IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7Ci12YXIgQ2FtbF9mb3Jt
YXQgICAgICAgICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY2FtbF9mb3JtYXQi
KTsKLXZhciBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xp
Yi9qcy9jYW1sX2J1aWx0aW5fZXhjZXB0aW9ucyIpOwotCi1mdW5jdGlvbiBwYXJzZV9lcnJvciht
c2cpIHsKLSAgdmFyIG1zZyQxID0gbXNnID09PSAic3ludGF4IGVycm9yIiA/ICJ1bmV4cGVjdGVk
IHRva2VuIiA6IG1zZzsKLSAgdGhyb3cgWwotICAgICAgICBTY3JpcHQuU3ludGF4LAotICAgICAg
ICBTb3VyY2Uubm9fcmVnaW9uLAotICAgICAgICBtc2ckMQotICAgICAgXTsKLX0KLQotZnVuY3Rp
b24gcG9zaXRpb25fdG9fcG9zKHBvc2l0aW9uKSB7Ci0gIHJldHVybiAvKiByZWNvcmQgKi9bCi0g
ICAgICAgICAgLyogZmlsZSAqL3Bvc2l0aW9uWy8qIHBvc19mbmFtZSAqLzBdLAotICAgICAgICAg
IC8qIGxpbmUgKi9wb3NpdGlvblsvKiBwb3NfbG51bSAqLzFdLAotICAgICAgICAgIC8qIGNvbHVt
biAqL3Bvc2l0aW9uWy8qIHBvc19jbnVtICovM10gLSBwb3NpdGlvblsvKiBwb3NfYm9sICovMl0g
fCAwCi0gICAgICAgIF07Ci19Ci0KLWZ1bmN0aW9uIHBvc2l0aW9uc190b19yZWdpb24ocG9zaXRp
b24xLCBwb3NpdGlvbjIpIHsKLSAgcmV0dXJuIC8qIHJlY29yZCAqL1sKLSAgICAgICAgICAvKiBs
ZWZ0ICovcG9zaXRpb25fdG9fcG9zKHBvc2l0aW9uMSksCi0gICAgICAgICAgLyogcmlnaHQgKi9w
b3NpdGlvbl90b19wb3MocG9zaXRpb24yKQotICAgICAgICBdOwotfQotCi1mdW5jdGlvbiBhdCgp
IHsKLSAgcmV0dXJuIHBvc2l0aW9uc190b19yZWdpb24oUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9z
KC8qICgpICovMCksIFBhcnNpbmcuc3ltYm9sX2VuZF9wb3MoLyogKCkgKi8wKSk7Ci19Ci0KLWZ1
bmN0aW9uIGF0aShpKSB7Ci0gIHJldHVybiBwb3NpdGlvbnNfdG9fcmVnaW9uKFBhcnNpbmcucmhz
X3N0YXJ0X3BvcyhpKSwgUGFyc2luZy5yaHNfZW5kX3BvcyhpKSk7Ci19Ci0KLWZ1bmN0aW9uIGxp
dGVyYWwoZiwgcykgewotICB0cnkgewotICAgIHJldHVybiBDdXJyeS5fMShmLCBzKTsKLSAgfQot
ICBjYXRjaCAoZXhuKXsKLSAgICBpZiAoZXhuWzBdID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9u
cy5mYWlsdXJlKSB7Ci0gICAgICB0aHJvdyBbCi0gICAgICAgICAgICBTY3JpcHQuU3ludGF4LAot
ICAgICAgICAgICAgc1svKiBhdCAqLzBdLAotICAgICAgICAgICAgImNvbnN0YW50IG91dCBvZiBy
YW5nZSIKLSAgICAgICAgICBdOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHRocm93IGV4bjsK
LSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gbmF0KHMsIGF0KSB7Ci0gIHRyeSB7Ci0gICAgdmFy
IG4gPSBDYW1sX2Zvcm1hdC5jYW1sX2ludF9vZl9zdHJpbmcocyk7Ci0gICAgaWYgKG4gPj0gMCkg
ewotICAgICAgcmV0dXJuIG47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdGhyb3cgWwotICAg
ICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKLSAgICAgICAgICAgICIi
Ci0gICAgICAgICAgXTsKLSAgICB9Ci0gIH0KLSAgY2F0Y2ggKGV4bil7Ci0gICAgaWYgKGV4blsw
XSA9PT0gQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSkgewotICAgICAgdGhyb3cgWwot
ICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwKLSAgICAgICAgICAgIGF0LAotICAgICAgICAgICAg
ImludGVnZXIgY29uc3RhbnQgb3V0IG9mIHJhbmdlIgotICAgICAgICAgIF07Ci0gICAgfQotICAg
IGVsc2UgewotICAgICAgdGhyb3cgZXhuOwotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBuYXQz
MihzLCBhdCkgewotICB0cnkgewotICAgIHJldHVybiBDdXJyeS5fMShJMzIub2Zfc3RyaW5nX3Us
IHMpOwotICB9Ci0gIGNhdGNoIChleG4pewotICAgIGlmIChleG5bMF0gPT09IENhbWxfYnVpbHRp
bl9leGNlcHRpb25zLmZhaWx1cmUpIHsKLSAgICAgIHRocm93IFsKLSAgICAgICAgICAgIFNjcmlw
dC5TeW50YXgsCi0gICAgICAgICAgICBhdCwKLSAgICAgICAgICAgICJpMzIgY29uc3RhbnQgb3V0
IG9mIHJhbmdlIgotICAgICAgICAgIF07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdGhyb3cg
ZXhuOwotICAgIH0KLSAgfQotfQotCi12YXIgVmFyTWFwID0gJCRNYXAuTWFrZShbJCRTdHJpbmcu
Y29tcGFyZV0pOwotCi1mdW5jdGlvbiBlbXB0eV9jb250ZXh0KCkgewotICByZXR1cm4gLyogcmVj
b3JkICovWwotICAgICAgICAgIC8qIHR5cGVzIDogcmVjb3JkICovWwotICAgICAgICAgICAgLyog
dG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAotICAgICAgICAgICAgLyogdGxpc3QgOiBbXSAq
LzAKLSAgICAgICAgICBdLAotICAgICAgICAgIC8qIHRhYmxlcyA6IHJlY29yZCAqL1sKLSAgICAg
ICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAotICAgICAgICAgICAgLyogY291
bnQgKi8wCi0gICAgICAgICAgXSwKLSAgICAgICAgICAvKiBtZW1vcmllcyA6IHJlY29yZCAqL1sK
LSAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAotICAgICAgICAgICAg
LyogY291bnQgKi8wCi0gICAgICAgICAgXSwKLSAgICAgICAgICAvKiBmdW5jcyA6IHJlY29yZCAq
L1sKLSAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAotICAgICAgICAg
ICAgLyogY291bnQgKi8wCi0gICAgICAgICAgXSwKLSAgICAgICAgICAvKiBsb2NhbHMgOiByZWNv
cmQgKi9bCi0gICAgICAgICAgICAvKiBtYXAgKi9WYXJNYXBbLyogZW1wdHkgKi8wXSwKLSAgICAg
ICAgICAgIC8qIGNvdW50ICovMAotICAgICAgICAgIF0sCi0gICAgICAgICAgLyogZ2xvYmFscyA6
IHJlY29yZCAqL1sKLSAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAot
ICAgICAgICAgICAgLyogY291bnQgKi8wCi0gICAgICAgICAgXSwKLSAgICAgICAgICAvKiBsYWJl
bHMgKi9WYXJNYXBbLyogZW1wdHkgKi8wXQotICAgICAgICBdOwotfQotCi1mdW5jdGlvbiBlbnRl
cl9mdW5jKGMpIHsKLSAgcmV0dXJuIC8qIHJlY29yZCAqL1sKLSAgICAgICAgICAvKiB0eXBlcyAq
L2NbLyogdHlwZXMgKi8wXSwKLSAgICAgICAgICAvKiB0YWJsZXMgKi9jWy8qIHRhYmxlcyAqLzFd
LAotICAgICAgICAgIC8qIG1lbW9yaWVzICovY1svKiBtZW1vcmllcyAqLzJdLAotICAgICAgICAg
IC8qIGZ1bmNzICovY1svKiBmdW5jcyAqLzNdLAotICAgICAgICAgIC8qIGxvY2FscyA6IHJlY29y
ZCAqL1sKLSAgICAgICAgICAgIC8qIG1hcCAqL1Zhck1hcFsvKiBlbXB0eSAqLzBdLAotICAgICAg
ICAgICAgLyogY291bnQgKi8wCi0gICAgICAgICAgXSwKLSAgICAgICAgICAvKiBnbG9iYWxzICov
Y1svKiBnbG9iYWxzICovNV0sCi0gICAgICAgICAgLyogbGFiZWxzICovVmFyTWFwWy8qIGVtcHR5
ICovMF0KLSAgICAgICAgXTsKLX0KLQotZnVuY3Rpb24gdHlwZV8oYywgeCkgewotICB0cnkgewot
ICAgIHJldHVybiBDdXJyeS5fMihWYXJNYXBbLyogZmluZCAqLzIxXSwgeFsvKiBpdCAqLzFdLCBj
Wy8qIHR5cGVzICovMF1bLyogdG1hcCAqLzBdKTsKLSAgfQotICBjYXRjaCAoZXhuKXsKLSAgICBp
ZiAoZXhuID09PSBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5ub3RfZm91bmQpIHsKLSAgICAgIHRo
cm93IFsKLSAgICAgICAgICAgIFNjcmlwdC5TeW50YXgsCi0gICAgICAgICAgICB4Wy8qIGF0ICov
MF0sCi0gICAgICAgICAgICAidW5rbm93biB0eXBlICIgKyB4Wy8qIGl0ICovMV0KLSAgICAgICAg
ICBdOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHRocm93IGV4bjsKLSAgICB9Ci0gIH0KLX0K
LQotZnVuY3Rpb24gbG9va3VwKGNhdGVnb3J5LCBzcGFjZSwgeCkgewotICB0cnkgewotICAgIHJl
dHVybiBDdXJyeS5fMihWYXJNYXBbLyogZmluZCAqLzIxXSwgeFsvKiBpdCAqLzFdLCBzcGFjZVsv
KiBtYXAgKi8wXSk7Ci0gIH0KLSAgY2F0Y2ggKGV4bil7Ci0gICAgaWYgKGV4biA9PT0gQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMubm90X2ZvdW5kKSB7Ci0gICAgICB0aHJvdyBbCi0gICAgICAgICAg
ICBTY3JpcHQuU3ludGF4LAotICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAotICAgICAgICAgICAg
InVua25vd24gIiArIChjYXRlZ29yeSArICgiICIgKyB4Wy8qIGl0ICovMV0pKQotICAgICAgICAg
IF07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdGhyb3cgZXhuOwotICAgIH0KLSAgfQotfQot
Ci1mdW5jdGlvbiBmdW5jKGMsIHgpIHsKLSAgcmV0dXJuIGxvb2t1cCgiZnVuY3Rpb24iLCBjWy8q
IGZ1bmNzICovM10sIHgpOwotfQotCi1mdW5jdGlvbiBsb2NhbChjLCB4KSB7Ci0gIHJldHVybiBs
b29rdXAoImxvY2FsIiwgY1svKiBsb2NhbHMgKi80XSwgeCk7Ci19Ci0KLWZ1bmN0aW9uIGdsb2Jh
bChjLCB4KSB7Ci0gIHJldHVybiBsb29rdXAoImdsb2JhbCIsIGNbLyogZ2xvYmFscyAqLzVdLCB4
KTsKLX0KLQotZnVuY3Rpb24gdGFibGUoYywgeCkgewotICByZXR1cm4gbG9va3VwKCJ0YWJsZSIs
IGNbLyogdGFibGVzICovMV0sIHgpOwotfQotCi1mdW5jdGlvbiBtZW1vcnkoYywgeCkgewotICBy
ZXR1cm4gbG9va3VwKCJtZW1vcnkiLCBjWy8qIG1lbW9yaWVzICovMl0sIHgpOwotfQotCi1mdW5j
dGlvbiBsYWJlbChjLCB4KSB7Ci0gIHRyeSB7Ci0gICAgcmV0dXJuIEN1cnJ5Ll8yKFZhck1hcFsv
KiBmaW5kICovMjFdLCB4Wy8qIGl0ICovMV0sIGNbLyogbGFiZWxzICovNl0pOwotICB9Ci0gIGNh
dGNoIChleG4pewotICAgIGlmIChleG4gPT09IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLm5vdF9m
b3VuZCkgewotICAgICAgdGhyb3cgWwotICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwKLSAgICAg
ICAgICAgIHhbLyogYXQgKi8wXSwKLSAgICAgICAgICAgICJ1bmtub3duIGxhYmVsICIgKyB4Wy8q
IGl0ICovMV0KLSAgICAgICAgICBdOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHRocm93IGV4
bjsKLSAgICB9Ci0gIH0KLX0KLQotZnVuY3Rpb24gYW5vbl90eXBlKGMsIHR5KSB7Ci0gIGNbLyog
dHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdID0gUGVydmFzaXZlcy4kYXQoY1svKiB0eXBlcyAqLzBd
Wy8qIHRsaXN0ICovMV0sIC8qIDo6ICovWwotICAgICAgICB0eSwKLSAgICAgICAgLyogW10gKi8w
Ci0gICAgICBdKTsKLSAgcmV0dXJuIC8qICgpICovMDsKLX0KLQotZnVuY3Rpb24gYmluZChjYXRl
Z29yeSwgc3BhY2UsIHgpIHsKLSAgaWYgKEN1cnJ5Ll8yKFZhck1hcFsvKiBtZW0gKi8yXSwgeFsv
KiBpdCAqLzFdLCBzcGFjZVsvKiBtYXAgKi8wXSkpIHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAg
U2NyaXB0LlN5bnRheCwKLSAgICAgICAgICB4Wy8qIGF0ICovMF0sCi0gICAgICAgICAgImR1cGxp
Y2F0ZSAiICsgKGNhdGVnb3J5ICsgKCIgIiArIHhbLyogaXQgKi8xXSkpCi0gICAgICAgIF07Ci0g
IH0KLSAgc3BhY2VbLyogbWFwICovMF0gPSBDdXJyeS5fMyhWYXJNYXBbLyogYWRkICovM10sIHhb
LyogaXQgKi8xXSwgc3BhY2VbLyogY291bnQgKi8xXSwgc3BhY2VbLyogbWFwICovMF0pOwotICBz
cGFjZVsvKiBjb3VudCAqLzFdID0gc3BhY2VbLyogY291bnQgKi8xXSArIDEgfCAwOwotICBpZiAo
c3BhY2VbLyogY291bnQgKi8xXSkgewotICAgIHJldHVybiAwOwotICB9Ci0gIGVsc2UgewotICAg
IHRocm93IFsKLSAgICAgICAgICBTY3JpcHQuU3ludGF4LAotICAgICAgICAgIHhbLyogYXQgKi8w
XSwKLSAgICAgICAgICAidG9vIG1hbnkgIiArIChjYXRlZ29yeSArICIgYmluZGluZ3MiKQotICAg
ICAgICBdOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGJpbmRfZnVuYyhjLCB4KSB7Ci0gIHJldHVybiBi
aW5kKCJmdW5jdGlvbiIsIGNbLyogZnVuY3MgKi8zXSwgeCk7Ci19Ci0KLWZ1bmN0aW9uIGJpbmRf
bG9jYWwoYywgeCkgewotICByZXR1cm4gYmluZCgibG9jYWwiLCBjWy8qIGxvY2FscyAqLzRdLCB4
KTsKLX0KLQotZnVuY3Rpb24gYmluZF9nbG9iYWwoYywgeCkgewotICByZXR1cm4gYmluZCgiZ2xv
YmFsIiwgY1svKiBnbG9iYWxzICovNV0sIHgpOwotfQotCi1mdW5jdGlvbiBiaW5kX3RhYmxlKGMs
IHgpIHsKLSAgcmV0dXJuIGJpbmQoInRhYmxlIiwgY1svKiB0YWJsZXMgKi8xXSwgeCk7Ci19Ci0K
LWZ1bmN0aW9uIGJpbmRfbWVtb3J5KGMsIHgpIHsKLSAgcmV0dXJuIGJpbmQoIm1lbW9yeSIsIGNb
LyogbWVtb3JpZXMgKi8yXSwgeCk7Ci19Ci0KLWZ1bmN0aW9uIGFub24oY2F0ZWdvcnksIHNwYWNl
LCBuKSB7Ci0gIHNwYWNlWy8qIGNvdW50ICovMV0gPSBzcGFjZVsvKiBjb3VudCAqLzFdICsgbiB8
IDA7Ci0gIGlmIChDdXJyeS5fMihJMzIubHRfdSwgc3BhY2VbLyogY291bnQgKi8xXSwgbikpIHsK
LSAgICB0aHJvdyBbCi0gICAgICAgICAgU2NyaXB0LlN5bnRheCwKLSAgICAgICAgICBTb3VyY2Uu
bm9fcmVnaW9uLAotICAgICAgICAgICJ0b28gbWFueSAiICsgKGNhdGVnb3J5ICsgIiBiaW5kaW5n
cyIpCi0gICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQot
ZnVuY3Rpb24gYW5vbl9mdW5jKGMpIHsKLSAgcmV0dXJuIGFub24oImZ1bmN0aW9uIiwgY1svKiBm
dW5jcyAqLzNdLCAxKTsKLX0KLQotZnVuY3Rpb24gYW5vbl9sb2NhbHMoYywgdHMpIHsKLSAgcmV0
dXJuIGFub24oImxvY2FsIiwgY1svKiBsb2NhbHMgKi80XSwgQ3VycnkuXzEoTGliLkxpc3QzMlsv
KiBsZW5ndGggKi8wXSwgdHMpKTsKLX0KLQotZnVuY3Rpb24gYW5vbl9nbG9iYWwoYykgewotICBy
ZXR1cm4gYW5vbigiZ2xvYmFsIiwgY1svKiBnbG9iYWxzICovNV0sIDEpOwotfQotCi1mdW5jdGlv
biBhbm9uX3RhYmxlKGMpIHsKLSAgcmV0dXJuIGFub24oInRhYmxlIiwgY1svKiB0YWJsZXMgKi8x
XSwgMSk7Ci19Ci0KLWZ1bmN0aW9uIGFub25fbWVtb3J5KGMpIHsKLSAgcmV0dXJuIGFub24oIm1l
bW9yeSIsIGNbLyogbWVtb3JpZXMgKi8yXSwgMSk7Ci19Ci0KLWZ1bmN0aW9uIGFub25fbGFiZWwo
YykgewotICB2YXIgbmV3cmVjb3JkID0gYy5zbGljZSgpOwotICBuZXdyZWNvcmRbLyogbGFiZWxz
ICovNl0gPSBDdXJyeS5fMihWYXJNYXBbLyogbWFwICovMjJdLCBmdW5jdGlvbiAocGFyYW0pIHsK
LSAgICAgICAgcmV0dXJuIDEgKyBwYXJhbSB8IDA7Ci0gICAgICB9LCBjWy8qIGxhYmVscyAqLzZd
KTsKLSAgcmV0dXJuIG5ld3JlY29yZDsKLX0KLQotdmFyIGVtcHR5X3R5cGUgPSAvKiBGdW5jVHlw
ZSAqL1sKLSAgLyogW10gKi8wLAotICAvKiBbXSAqLzAKLV07Ci0KLWZ1bmN0aW9uIGV4cGxpY2l0
X3NpZyhjLCB2YXJfc2VtLCB0eSwgYXQpIHsKLSAgdmFyIHggPSBDdXJyeS5fMih2YXJfc2VtLCBj
LCB0eXBlXyk7Ci0gIGlmICh4Wy8qIGl0ICovMV0gPCBDdXJyeS5fMShMaWIuTGlzdDMyWy8qIGxl
bmd0aCAqLzBdLCBjWy8qIHR5cGVzICovMF1bLyogdGxpc3QgKi8xXSkgJiYgQ2FtbF9vYmouY2Ft
bF9ub3RlcXVhbCh0eSwgZW1wdHlfdHlwZSkgJiYgQ2FtbF9vYmouY2FtbF9ub3RlcXVhbCh0eSwg
Q3VycnkuXzIoTGliLkxpc3QzMlsvKiBudGggKi8xXSwgY1svKiB0eXBlcyAqLzBdWy8qIHRsaXN0
ICovMV0sIHhbLyogaXQgKi8xXSkpKSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAgIFNjcmlwdC5T
eW50YXgsCi0gICAgICAgICAgYXQsCi0gICAgICAgICAgInNpZ25hdHVyZSBtaXNtYXRjaCIKLSAg
ICAgICAgXTsKLSAgfQotICByZXR1cm4geDsKLX0KLQotZnVuY3Rpb24gaW5saW5lX3R5cGUoYywg
dHksIGF0KSB7Ci0gIHZhciBtYXRjaCA9IEN1cnJ5Ll8yKExpYi5MaXN0Wy8qIGluZGV4X29mICov
Nl0sIHR5LCBjWy8qIHR5cGVzICovMF1bLyogdGxpc3QgKi8xXSk7Ci0gIGlmIChtYXRjaCkgewot
ICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KG1hdGNoWzBdLCBhdCk7Ci0gIH0KLSAgZWxzZSB7Ci0g
ICAgdmFyIGkgPSBDdXJyeS5fMShMaWIuTGlzdDMyWy8qIGxlbmd0aCAqLzBdLCBjWy8qIHR5cGVz
ICovMF1bLyogdGxpc3QgKi8xXSk7Ci0gICAgYW5vbl90eXBlKGMsIHR5KTsKLSAgICByZXR1cm4g
U291cmNlLiRhdCRhdChpLCBhdCk7Ci0gIH0KLX0KLQotdmFyIHl5dHJhbnNsX2NvbnN0ID0gLyog
YXJyYXkgKi9bCi0gIDI2MywKLSAgMjY0LAotICAyNjUsCi0gIDI2NiwKLSAgMjY3LAotICAyNjgs
Ci0gIDI2OSwKLSAgMjcwLAotICAyNzEsCi0gIDI3MiwKLSAgMjczLAotICAyNzQsCi0gIDI3NSwK
LSAgMjc2LAotICAyNzcsCi0gIDI3OCwKLSAgMjc5LAotICAyODAsCi0gIDI4MSwKLSAgMjgyLAot
ICAyODMsCi0gIDI4NCwKLSAgMjg1LAotICAyODYsCi0gIDI5NiwKLSAgMjk3LAotICAyOTgsCi0g
IDI5OSwKLSAgMzAwLAotICAzMDEsCi0gIDMwMiwKLSAgMzAzLAotICAzMDQsCi0gIDMwNSwKLSAg
MzA2LAotICAzMDcsCi0gIDMwOCwKLSAgMzA5LAotICAzMTAsCi0gIDMxMSwKLSAgMzEyLAotICAz
MTMsCi0gIDMxNCwKLSAgMzE1LAotICAzMTYsCi0gIDMxNywKLSAgMzE4LAotICAzMTksCi0gIDMy
MCwKLSAgMzIxLAotICAzMjIsCi0gIDMyMywKLSAgMzI0LAotICAzMjUsCi0gIDMyNiwKLSAgMzI3
LAotICAwLAotICAwCi1dOwotCi12YXIgeXl0cmFuc2xfYmxvY2sgPSAvKiBhcnJheSAqL1sKLSAg
MjU3LAotICAyNTgsCi0gIDI1OSwKLSAgMjYwLAotICAyNjEsCi0gIDI2MiwKLSAgMjg3LAotICAy
ODgsCi0gIDI4OSwKLSAgMjkwLAotICAyOTEsCi0gIDI5MiwKLSAgMjkzLAotICAyOTQsCi0gIDI5
NSwKLSAgMzI4LAotICAwCi1dOwotCi12YXIgeXlhY3QgPSAvKiBhcnJheSAqL1sKLSAgZnVuY3Rp
b24gKCkgewotICAgIHJldHVybiBQZXJ2YXNpdmVzLmZhaWx3aXRoKCJwYXJzZXIiKTsKLSAgfSwK
LSAgZnVuY3Rpb24gKCkgewotICAgIHJldHVybiAiIjsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7Ci0gICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMCk7Ci0gICAgcmV0dXJuIF8xICsgXzI7Ci0gIH0sCi0gIGZ1bmN0aW9uICgpIHsKLSAg
ICByZXR1cm4gLyogW10gKi8wOwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKLSAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsK
LSAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAg
ICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICBfMSwKLSAgICAgICAgICAgIF8yCi0gICAg
ICAgICAgXTsKLSAgfSwKLSAgZnVuY3Rpb24gKCkgewotICAgIHJldHVybiAvKiBGdW5jUmVmVHlw
ZSAqLzA7Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBf
MSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiAv
KiBHbG9iYWxUeXBlICovWwotICAgICAgICAgICAgXzEsCi0gICAgICAgICAgICAvKiBJbW11dGFi
bGUgKi8wCi0gICAgICAgICAgXTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7Ci0gICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
Ci0gICAgcmV0dXJuIC8qIEdsb2JhbFR5cGUgKi9bCi0gICAgICAgICAgICBfMywKLSAgICAgICAg
ICAgIC8qIE11dGFibGUgKi8xCi0gICAgICAgICAgXTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7Ci0gICAgcmV0dXJuIFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOwotICB9LAotICBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuIC8qIEZ1bmNUeXBl
ICovWwotICAgICAgICAgICAgLyogW10gKi8wLAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAg
ICAgICAgXTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF81
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgdmFyIGlucyA9
IF81WzBdOwotICAgIGlmIChpbnMgIT09IC8qIFtdICovMCkgewotICAgICAgdmFyIGF0JDEgPSBh
dCgvKiAoKSAqLzApOwotICAgICAgdGhyb3cgWwotICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwK
LSAgICAgICAgICAgIGF0JDEsCi0gICAgICAgICAgICAicmVzdWx0IGJlZm9yZSBwYXJhbWV0ZXIi
Ci0gICAgICAgICAgXTsKLSAgICB9Ci0gICAgcmV0dXJuIC8qIEZ1bmNUeXBlICovWwotICAgICAg
ICAgICAgaW5zLAotICAgICAgICAgICAgUGVydmFzaXZlcy4kYXQoXzMsIF81WzFdKQotICAgICAg
ICAgIF07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNSA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiAvKiBG
dW5jVHlwZSAqL1sKLSAgICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KF8zLCBfNVswXSksCi0gICAg
ICAgICAgICBfNVsxXQotICAgICAgICAgIF07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgewotICAgIFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOwot
ICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAg
IHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJl
dHVybiAvKiBGdW5jVHlwZSAqL1sKLSAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAg
ICBfNCwKLSAgICAgICAgICAgICAgXzZbMF0KLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBf
NlsxXQotICAgICAgICAgIF07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
ewotICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwot
ICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAg
IHJldHVybiAvKiBUYWJsZVR5cGUgKi9bCi0gICAgICAgICAgICBfMSwKLSAgICAgICAgICAgIF8y
Ci0gICAgICAgICAgXTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0g
ICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAg
cmV0dXJuIC8qIE1lbW9yeVR5cGUgKi9bXzFdOwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKLSAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAwKTsKLSAgICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgICAgLyogbWluICov
bmF0MzIoXzEsIGF0aSgxKSksCi0gICAgICAgICAgICAvKiBtYXggOiBOb25lICovMAotICAgICAg
ICAgIF07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBf
MSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiAvKiBy
ZWNvcmQgKi9bCi0gICAgICAgICAgICAvKiBtaW4gKi9uYXQzMihfMSwgYXRpKDEpKSwKLSAgICAg
ICAgICAgIC8qIG1heCA6IFNvbWUgKi9bbmF0MzIoXzIsIGF0aSgyKSldCi0gICAgICAgICAgXTsK
LSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgcmV0dXJuIFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICB9LAotICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gU291cmNlLiRhdCRhdChfMSwgYXQoLyogKCkgKi8w
KSk7Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMSA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBTb3Vy
Y2UuJGF0JGF0KF8xLCBhdCgvKiAoKSAqLzApKTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMCk7Ci0gICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoXzEsIGF0KC8qICgpICovMCkpOwot
ICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzEgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICB2YXIgYXQkMSA9IGF0KC8q
ICgpICovMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChfLCBfJDEpIHsKLSAgICAgIHJldHVybiBT
b3VyY2UuJGF0JGF0KG5hdDMyKF8xLCBhdCQxKSwgYXQkMSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOwot
ICAgIHJldHVybiBmdW5jdGlvbiAoYywgbG9va3VwKSB7Ci0gICAgICByZXR1cm4gU291cmNlLiRh
dCRhdChDdXJyeS5fMihsb29rdXAsIGMsIFNvdXJjZS4kYXQkYXQoXzEsIGF0JDEpKSwgYXQkMSk7
Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKCkgewotICAgIHJldHVybiBmdW5jdGlvbiAoXywg
XyQxKSB7Ci0gICAgICByZXR1cm4gLyogW10gKi8wOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBmdW5jdGlvbiAoYywgbG9va3VwKSB7Ci0gICAg
ICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICAgIEN1cnJ5Ll8yKF8xLCBjLCBsb29rdXAp
LAotICAgICAgICAgICAgICBDdXJyeS5fMihfMiwgYywgbG9va3VwKQotICAgICAgICAgICAgXTsK
LSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBh
bm9uLCBfKSB7Ci0gICAgICByZXR1cm4gQ3VycnkuXzEoYW5vbiwgYyk7Ci0gICAgfTsKLSAgfSwK
LSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjLCBf
LCBiaW5kKSB7Ci0gICAgICByZXR1cm4gQ3VycnkuXzIoYmluZCwgYywgXzEpOwotICAgIH07Ci0g
IH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBTb3VyY2UuJGF0
JGF0KF8xLCBhdCgvKiAoKSAqLzApKTsKLSAgfSwKLSAgZnVuY3Rpb24gKCkgewotICAgIHJldHVy
biBmdW5jdGlvbiAoYywgeHMpIHsKLSAgICAgIExpc3QuaXRlcihmdW5jdGlvbiAoeCkgewotICAg
ICAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICAgICAgU2NyaXB0LlN5bnRheCwKLSAgICAg
ICAgICAgICAgICAgIHhbLyogYXQgKi8wXSwKLSAgICAgICAgICAgICAgICAgICJtaXNtYXRjaGlu
ZyBsYWJlbCIKLSAgICAgICAgICAgICAgICBdOwotICAgICAgICAgIH0sIHhzKTsKLSAgICAgIHJl
dHVybiBhbm9uX2xhYmVsKGMpOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgewotICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDApOwotICAgIHJldHVybiBmdW5jdGlvbiAoYywgeHMpIHsKLSAgICAgIExpc3QuaXRlcihm
dW5jdGlvbiAoeCkgewotICAgICAgICAgICAgaWYgKHhbLyogaXQgKi8xXSAhPT0gXzFbLyogaXQg
Ki8xXSkgewotICAgICAgICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgICAgICAgIFNjcmlw
dC5TeW50YXgsCi0gICAgICAgICAgICAgICAgICAgIHhbLyogYXQgKi8wXSwKLSAgICAgICAgICAg
ICAgICAgICAgIm1pc21hdGNoaW5nIGxhYmVsIgotICAgICAgICAgICAgICAgICAgXTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICB9LCB4cyk7Ci0gICAgICB2YXIgYyQxID0gYzsKLSAgICAg
IHZhciB4ID0gXzE7Ci0gICAgICB2YXIgbmV3cmVjb3JkID0gYyQxLnNsaWNlKCk7Ci0gICAgICBu
ZXdyZWNvcmRbLyogbGFiZWxzICovNl0gPSBDdXJyeS5fMyhWYXJNYXBbLyogYWRkICovM10sIHhb
LyogaXQgKi8xXSwgMCwgQ3VycnkuXzIoVmFyTWFwWy8qIG1hcCAqLzIyXSwgZnVuY3Rpb24gKHBh
cmFtKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDEgKyBwYXJhbSB8IDA7Ci0gICAgICAgICAg
ICAgIH0sIGMkMVsvKiBsYWJlbHMgKi82XSkpOwotICAgICAgcmV0dXJuIG5ld3JlY29yZDsKLSAg
ICB9OwotICB9LAotICBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuIC8qIFtdICovMDsKLSAgfSwK
LSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0dXJuIC8qIDo6ICovWwotICAg
ICAgICAgICAgXzEsCi0gICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICBdOwotICB9LAot
ICBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuIDA7Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgewotICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDApOwotICAgIHJldHVybiBuYXQzMihfMSwgYXQoLyogKCkgKi8wKSk7Ci0gIH0sCi0g
IGZ1bmN0aW9uICgpIHsKLSAgICByZXR1cm4gLyogTm9uZSAqLzA7Ci0gIH0sCi0gIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHZhciBuID0gbmF0KF8xLCBhdCgvKiAoKSAqLzApKTsK
LSAgICBpZiAoIUN1cnJ5Ll8xKExpYi5JbnRbLyogaXNfcG93ZXJfb2ZfdHdvICovMV0sIG4pKSB7
Ci0gICAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7Ci0gICAgICB0aHJvdyBbCi0gICAgICAg
ICAgICBTY3JpcHQuU3ludGF4LAotICAgICAgICAgICAgYXQkMSwKLSAgICAgICAgICAgICJhbGln
bm1lbnQgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byIKLSAgICAgICAgICBdOwotICAgIH0KLSAgICBy
ZXR1cm4gLyogU29tZSAqL1tDdXJyeS5fMShMaWIuSW50Wy8qIGxvZzIgKi8wXSwgbildOwotICB9
LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzEgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICB2YXIgYXQkMSA9IGF0KC8qICgp
ICovMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICByZXR1cm4gLyogOjogKi9b
Ci0gICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzEsIGMpLCBhdCQxKSwKLSAg
ICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsK
LSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHJldHVybiAvKiA6OiAqL1sKLSAgICAg
ICAgICAgICAgU291cmNlLiRhdCRhdChDdXJyeS5fMShfMSwgYyksIGF0JDEpLAotICAgICAgICAg
ICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgIF07Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgcmV0dXJuIFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDApOwotICB9LAotICBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuIGZ1bmN0
aW9uICgpIHsKLSAgICAgIHJldHVybiBPcGVyYXRvcnMudW5yZWFjaGFibGU7Ci0gICAgfTsKLSAg
fSwKLSAgZnVuY3Rpb24gKCkgewotICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1
cm4gT3BlcmF0b3JzLm5vcDsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNl
cl9lbnYpIHsKLSAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAwKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHJldHVybiBPcGVyYXRvcnMu
YnIoQ3VycnkuXzIoXzIsIGMsIGxhYmVsKSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9f
Y2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICByZXR1cm4g
T3BlcmF0b3JzLmJyX2lmKEN1cnJ5Ll8yKF8yLCBjLCBsYWJlbCkpOwotICAgIH07Ci0gIH0sCi0g
IGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMiA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAg
ICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoTGliLkxpc3RbLyogc3BsaXRfbGFzdCAqLzVdLCAvKiA6
OiAqL1sKLSAgICAgICAgICAgIEN1cnJ5Ll8yKF8yLCBjLCBsYWJlbCksCi0gICAgICAgICAgICBD
dXJyeS5fMihfMywgYywgbGFiZWwpCi0gICAgICAgICAgXSk7Ci0gICAgICByZXR1cm4gT3BlcmF0
b3JzLmJyX3RhYmxlKG1hdGNoWzBdLCBtYXRjaFsxXSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rp
b24gKCkgewotICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1cm4gT3BlcmF0b3Jz
LiQkcmV0dXJuOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
ewotICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwot
ICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgcmV0dXJuIE9wZXJhdG9ycy5jYWxsKEN1
cnJ5Ll8yKF8yLCBjLCBmdW5jKSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9w
YXJzZXJfZW52KSB7Ci0gICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICByZXR1cm4gT3BlcmF0
b3JzLmNhbGxfaW5kaXJlY3QoQ3VycnkuXzIoXzIsIGMsIHR5cGVfKSk7Ci0gICAgfTsKLSAgfSwK
LSAgZnVuY3Rpb24gKCkgewotICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1cm4g
T3BlcmF0b3JzLmRyb3A7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKCkgewotICAgIHJldHVy
biBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1cm4gT3BlcmF0b3JzLnNlbGVjdDsKLSAgICB9Owot
ICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzIgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gZnVuY3Rpb24g
KGMpIHsKLSAgICAgIHJldHVybiBPcGVyYXRvcnMuZ2V0X2xvY2FsKEN1cnJ5Ll8yKF8yLCBjLCBs
b2NhbCkpOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewot
ICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAg
IHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgcmV0dXJuIE9wZXJhdG9ycy5zZXRfbG9jYWwo
Q3VycnkuXzIoXzIsIGMsIGxvY2FsKSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICByZXR1cm4gT3Bl
cmF0b3JzLnRlZV9sb2NhbChDdXJyeS5fMihfMiwgYywgbG9jYWwpKTsKLSAgICB9OwotICB9LAot
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzIgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
LSAgICAgIHJldHVybiBPcGVyYXRvcnMuZ2V0X2dsb2JhbChDdXJyeS5fMihfMiwgYywgZ2xvYmFs
KSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAg
dmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0
dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICByZXR1cm4gT3BlcmF0b3JzLnNldF9nbG9iYWwoQ3Vy
cnkuXzIoXzIsIGMsIGdsb2JhbCkpOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgewotICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDIpOwotICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDEpOwotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDApOwotICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1cm4gQ3VycnkuXzIoXzEs
IF8zLCBfMik7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
Ci0gICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0g
ICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAg
dmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgIHJldHVybiBDdXJyeS5fMihfMSwgXzMsIF8yKTsKLSAg
ICB9OwotICB9LAotICBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAg
ICAgIHJldHVybiBPcGVyYXRvcnMuY3VycmVudF9tZW1vcnk7Ci0gICAgfTsKLSAgfSwKLSAgZnVu
Y3Rpb24gKCkgewotICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1cm4gT3BlcmF0
b3JzLmdyb3dfbWVtb3J5OwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2Vy
X2VudikgewotICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDEpOwotICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDAp
OwotICAgIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1cm4gbGl0ZXJhbChfMSwgXzIp
WzBdOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAg
IHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJl
dHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1cm4gXzE7Ci0gICAgfTsKLSAgfSwKLSAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAg
IHJldHVybiBfMTsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKLSAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsK
LSAgICByZXR1cm4gZnVuY3Rpb24gKCkgewotICAgICAgcmV0dXJuIF8xOwotICAgIH07Ci0gIH0s
Ci0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMSA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBmdW5jdGlvbiAoKSB7
Ci0gICAgICByZXR1cm4gXzE7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgIHJldHVybiBfMTsKLSAgICB9
OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzIgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKLSAgICB2YXIgXzMgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzUgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMp
IHsKLSAgICAgIHZhciBjJHByaW1lID0gQ3VycnkuXzIoXzIsIGMsIF81KTsKLSAgICAgIHZhciBt
YXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKLSAgICAgIHJldHVybiBPcGVyYXRvcnMuYmxv
Y2sobWF0Y2hbMF0sIG1hdGNoWzFdKTsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAzKTsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAyKTsKLSAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAwKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHZhciBjJHByaW1lID0gQ3Vy
cnkuXzIoXzIsIGMsIF81KTsKLSAgICAgIHZhciBtYXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1l
KTsKLSAgICAgIHJldHVybiBPcGVyYXRvcnMubG9vcChtYXRjaFswXSwgbWF0Y2hbMV0pOwotICAg
IH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOwotICAgIHZhciBfMyA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBmdW5jdGlvbiAo
YykgewotICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgXzUpOwotICAgICAgdmFy
IG1hdGNoID0gQ3VycnkuXzEoXzMsIGMkcHJpbWUpOwotICAgICAgcmV0dXJuIE9wZXJhdG9ycy5p
Zl8obWF0Y2hbMF0sIG1hdGNoWzFdLCAvKiBbXSAqLzApOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMiA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDYpOwotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDUpOwotICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDMpOwotICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDIpOwotICAgIHZhciBfOCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDApOwotICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgdmFyIGMkcHJpbWUg
PSBDdXJyeS5fMihfMiwgYywgUGVydmFzaXZlcy4kYXQoXzUsIF84KSk7Ci0gICAgICB2YXIgbWF0
Y2ggPSBDdXJyeS5fMShfMywgYyRwcmltZSk7Ci0gICAgICByZXR1cm4gT3BlcmF0b3JzLmlmXyht
YXRjaFswXSwgbWF0Y2hbMV0sIEN1cnJ5Ll8xKF82LCBjJHByaW1lKSk7Ci0gICAgfTsKLSAgfSwK
LSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgdmFyIF8yID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0g
ICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgIF8xLAotICAgICAgICAgICAg
ICBDdXJyeS5fMShfMiwgYykKLSAgICAgICAgICAgIF07Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rp
b24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOwotICAg
IHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzIsIGMp
OwotICAgICAgcmV0dXJuIFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzBdLCAvKiA6OiAqL1sKLSAgICAg
ICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQobWF0Y2hbMV0sIGF0JDEpLAotICAgICAgICAgICAg
ICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgICAgXSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICBy
ZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgIEN1cnJ5Ll8xKF8yLCBjKVsxXSwKLSAg
ICAgICAgICAgICAgQ3VycnkuXzEoXzEsIGMpCi0gICAgICAgICAgICBdOwotICAgIH07Ci0gIH0s
Ci0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMiA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBfMyA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBmdW5jdGlvbiAoYykgewot
ICAgICAgdmFyIGMkcHJpbWUgPSBDdXJyeS5fMihfMiwgYywgLyogW10gKi8wKTsKLSAgICAgIHZh
ciBtYXRjaCA9IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKTsKLSAgICAgIHJldHVybiAvKiB0dXBsZSAq
L1sKLSAgICAgICAgICAgICAgLyogW10gKi8wLAotICAgICAgICAgICAgICBPcGVyYXRvcnMuYmxv
Y2sobWF0Y2hbMF0sIG1hdGNoWzFdKQotICAgICAgICAgICAgXTsKLSAgICB9OwotICB9LAotICBm
dW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAg
IHZhciBjJHByaW1lID0gQ3VycnkuXzIoXzIsIGMsIC8qIFtdICovMCk7Ci0gICAgICB2YXIgbWF0
Y2ggPSBDdXJyeS5fMShfMywgYyRwcmltZSk7Ci0gICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0g
ICAgICAgICAgICAgIC8qIFtdICovMCwKLSAgICAgICAgICAgICAgT3BlcmF0b3JzLmxvb3AobWF0
Y2hbMF0sIG1hdGNoWzFdKQotICAgICAgICAgICAgXTsKLSAgICB9OwotICB9LAotICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAxKTsKLSAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHZhciBjJHBy
aW1lID0gQ3VycnkuXzIoXzIsIGMsIC8qIFtdICovMCk7Ci0gICAgICB2YXIgbWF0Y2ggPSBDdXJy
eS5fMihfNCwgYywgYyRwcmltZSk7Ci0gICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAg
ICAgICAgIG1hdGNoWzBdLAotICAgICAgICAgICAgICBPcGVyYXRvcnMuaWZfKF8zLCBtYXRjaFsx
XSwgbWF0Y2hbMl0pCi0gICAgICAgICAgICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDUpOwotICAgIHZhciBfNyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDEpOwotICAgIHJldHVybiBmdW5jdGlvbiAoXywgYyRwcmltZSkgewotICAgICAg
cmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAvKiBbXSAqLzAsCi0gICAgICAgICAg
ICAgIEN1cnJ5Ll8xKF8zLCBjJHByaW1lKSwKLSAgICAgICAgICAgICAgQ3VycnkuXzEoXzcsIGMk
cHJpbWUpCi0gICAgICAgICAgICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOwotICAgIHJldHVybiBmdW5jdGlvbiAoXywgYyRwcmltZSkgewotICAgICAgcmV0
dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICAvKiBbXSAqLzAsCi0gICAgICAgICAgICAg
IEN1cnJ5Ll8xKF8zLCBjJHByaW1lKSwKLSAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAg
ICAgICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewot
ICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDgpOwotICAg
IHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDUpOwotICAgIHZh
ciBfOCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHJldHVy
biBmdW5jdGlvbiAoYywgYyRwcmltZSkgewotICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAg
ICAgICAgICAgICBDdXJyeS5fMShfMSwgYyksCi0gICAgICAgICAgICAgIEN1cnJ5Ll8xKF80LCBj
JHByaW1lKSwKLSAgICAgICAgICAgICAgQ3VycnkuXzEoXzgsIGMkcHJpbWUpCi0gICAgICAgICAg
ICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAg
IHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDQpOwotICAgIHZh
ciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHJldHVy
biBmdW5jdGlvbiAoYywgYyRwcmltZSkgewotICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAg
ICAgICAgICAgICBDdXJyeS5fMShfMSwgYyksCi0gICAgICAgICAgICAgIEN1cnJ5Ll8xKF80LCBj
JHByaW1lKSwKLSAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICBdOwotICAgIH07
Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMSA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfMiA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBmdW5jdGlvbiAoYywg
YyRwcmltZSkgewotICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICBDdXJy
eS5fMShfMSwgYyksCi0gICAgICAgICAgICAgIEN1cnJ5Ll8xKF8yLCBjJHByaW1lKSwKLSAgICAg
ICAgICAgICAgQ3VycnkuXzEoXzMsIGMkcHJpbWUpCi0gICAgICAgICAgICBdOwotICAgIH07Ci0g
IH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBfMiA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBmdW5jdGlvbiAoYywg
YyRwcmltZSkgewotICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAgICAgICAgICAgICBDdXJy
eS5fMShfMSwgYyksCi0gICAgICAgICAgICAgIEN1cnJ5Ll8xKF8yLCBjJHByaW1lKSwKLSAgICAg
ICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0
aW9uICgpIHsKLSAgICByZXR1cm4gZnVuY3Rpb24gKCkgewotICAgICAgcmV0dXJuIC8qIFtdICov
MDsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2
YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2YXIg
XzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4g
ZnVuY3Rpb24gKGMpIHsKLSAgICAgIHJldHVybiBQZXJ2YXNpdmVzLiRhdChDdXJyeS5fMShfMSwg
YyksIEN1cnJ5Ll8xKF8yLCBjKSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKCkgewotICAg
IHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAg
ICAgICAgIDAsCi0gICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgXTsKLSAgICB9
OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzEgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2YXIgXzIgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gZnVuY3Rpb24g
KGMpIHsKLSAgICAgIHZhciBlczEgPSBDdXJyeS5fMShfMSwgYyk7Ci0gICAgICB2YXIgbWF0Y2gg
PSBDdXJyeS5fMShfMiwgYyk7Ci0gICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAg
ICAgIG1hdGNoWzBdICsgMSB8IDAsCi0gICAgICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KGVzMSwg
bWF0Y2hbMV0pCi0gICAgICAgICAgICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2Nh
bWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDApOwotICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKLSAgICByZXR1cm4g
ZnVuY3Rpb24gKGMpIHsKLSAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KEN1cnJ5Ll8xKF8xLCBj
KSwgYXQkMSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
Ci0gICAgcmV0dXJuIFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICB9
LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzUgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICB2YXIgbWF0Y2ggPSBfNVswXTsKLSAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAvKiBGdW5jVHlwZSAqL1sKLSAgICAg
ICAgICAgICAgbWF0Y2hbMF0sCi0gICAgICAgICAgICAgIFBlcnZhc2l2ZXMuJGF0KF8zLCBtYXRj
aFsxXSkKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICBmdW5jdGlvbiAoYykgewotICAgICAg
ICAgICAgICByZXR1cm4gQ3VycnkuXzEoXzVbMV0sIGMpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgIF07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNSA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHZhciBtYXRjaCA9
IF81WzBdOwotICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgIC8qIEZ1bmNUeXBl
ICovWwotICAgICAgICAgICAgICBQZXJ2YXNpdmVzLiRhdChfMywgbWF0Y2hbMF0pLAotICAgICAg
ICAgICAgICBtYXRjaFsxXQotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIGZ1bmN0aW9uIChj
KSB7Ci0gICAgICAgICAgICAgIGFub25fbG9jYWxzKGMsIF8zKTsKLSAgICAgICAgICAgICAgcmV0
dXJuIEN1cnJ5Ll8xKF81WzFdLCBjKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBdOwotICB9
LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKLSAgICB2YXIgXzQgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzYgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICB2YXIgbWF0Y2ggPSBfNlswXTsKLSAgICBy
ZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAvKiBGdW5jVHlwZSAqL1sKLSAgICAgICAg
ICAgICAgLyogOjogKi9bCi0gICAgICAgICAgICAgICAgXzQsCi0gICAgICAgICAgICAgICAgbWF0
Y2hbMF0KLSAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgbWF0Y2hbMV0KLSAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICBmdW5jdGlvbiAoYykgewotICAgICAgICAgICAgICBiaW5kX2xv
Y2FsKGMsIF8zKTsKLSAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKF82WzFdLCBjKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICBdOwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNl
cl9lbnYpIHsKLSAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAwKTsKLSAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICBlbXB0eV90eXBlLAot
ICAgICAgICAgICAgZnVuY3Rpb24gKGMpIHsKLSAgICAgICAgICAgICAgdmFyIGMkcHJpbWUgPSBh
bm9uX2xhYmVsKGMpOwotICAgICAgICAgICAgICByZXR1cm4gLyogcmVjb3JkICovWwotICAgICAg
ICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovU291cmNlLiRhdCRhdCgtMSwgYXQoLyogKCkgKi8w
KSksCi0gICAgICAgICAgICAgICAgICAgICAgLyogbG9jYWxzIDogW10gKi8wLAotICAgICAgICAg
ICAgICAgICAgICAgIC8qIGJvZHkgKi9DdXJyeS5fMShfMSwgYyRwcmltZSkKLSAgICAgICAgICAg
ICAgICAgICAgXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBdOwotICB9LAotICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICBf
NVswXSwKLSAgICAgICAgICAgIGZ1bmN0aW9uIChjKSB7Ci0gICAgICAgICAgICAgIGFub25fbG9j
YWxzKGMsIF8zKTsKLSAgICAgICAgICAgICAgdmFyIGYgPSBDdXJyeS5fMShfNVsxXSwgYyk7Ci0g
ICAgICAgICAgICAgIHJldHVybiAvKiByZWNvcmQgKi9bCi0gICAgICAgICAgICAgICAgICAgICAg
LyogZnR5cGUgKi9mWy8qIGZ0eXBlICovMF0sCi0gICAgICAgICAgICAgICAgICAgICAgLyogbG9j
YWxzICovUGVydmFzaXZlcy4kYXQoXzMsIGZbLyogbG9jYWxzICovMV0pLAotICAgICAgICAgICAg
ICAgICAgICAgIC8qIGJvZHkgKi9mWy8qIGJvZHkgKi8yXQotICAgICAgICAgICAgICAgICAgICBd
OwotICAgICAgICAgICAgfQotICAgICAgICAgIF07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDMpOwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDIpOwotICAgIHZhciBfNiA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDApOwotICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgIF82WzBdLAotICAgICAg
ICAgICAgZnVuY3Rpb24gKGMpIHsKLSAgICAgICAgICAgICAgYmluZF9sb2NhbChjLCBfMyk7Ci0g
ICAgICAgICAgICAgIHZhciBmID0gQ3VycnkuXzEoXzZbMV0sIGMpOwotICAgICAgICAgICAgICBy
ZXR1cm4gLyogcmVjb3JkICovWwotICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0eXBlICovZlsv
KiBmdHlwZSAqLzBdLAotICAgICAgICAgICAgICAgICAgICAgIC8qIGxvY2FscyA6IDo6ICovWwot
ICAgICAgICAgICAgICAgICAgICAgICAgXzQsCi0gICAgICAgICAgICAgICAgICAgICAgICBmWy8q
IGxvY2FscyAqLzFdCi0gICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAvKiBib2R5ICovZlsvKiBib2R5ICovMl0KLSAgICAgICAgICAgICAgICAgICAgXTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICBdOwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNl
cl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCA0KTsKLSAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAz
KTsKLSAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsK
LSAgICB2YXIgXzYgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAg
ICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0g
ICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9mdW5jLCBiaW5kX2Z1bmMpOwotICAgICAgdmFyIHQg
PSBleHBsaWNpdF9zaWcoYywgXzUsIF82WzBdLCBhdCQxKTsKLSAgICAgIHJldHVybiAvKiB0dXBs
ZSAqL1sKLSAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHZhciBp
bml0ID0gQ3VycnkuXzEoXzZbMV0sIGVudGVyX2Z1bmMoYykpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAvKiBmdHlwZSAqL3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbG9jYWxz
ICovaW5pdFsvKiBsb2NhbHMgKi8xXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBi
b2R5ICovaW5pdFsvKiBib2R5ICovMl0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQk
MSk7Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBGdW5j
RXhwb3J0ICovMCwgY1svKiBmdW5jcyAqLzNdWy8qIGNvdW50ICovMV0sIGMpCi0gICAgICAgICAg
ICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAg
IHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOwotICAgIHZh
ciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBf
NSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBhdCQx
ID0gYXQoLyogKCkgKi8wKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIEN1cnJ5
Ll8zKF8zLCBjLCBhbm9uX2Z1bmMsIGJpbmRfZnVuYyk7Ci0gICAgICB2YXIgdCA9IGV4cGxpY2l0
X3NpZyhjLCBfNCwgXzVbMF0sIGF0JDEpOwotICAgICAgcmV0dXJuIC8qIHR1cGxlICovWwotICAg
ICAgICAgICAgICBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGluaXQgPSBDdXJy
eS5fMShfNVsxXSwgZW50ZXJfZnVuYyhjKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNvdXJj
ZS4kYXQkYXQoLyogcmVjb3JkICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZ0
eXBlICovdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbHMgKi9pbml0Wy8q
IGxvY2FscyAqLzFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJvZHkgKi9pbml0
Wy8qIGJvZHkgKi8yXQotICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKLSAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICBdOwotICAg
IH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMyA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOwotICAgIHZhciBfNCA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNSA9IFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBhdCQxID0gYXQoLyog
KCkgKi8wKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIEN1cnJ5Ll8zKF8zLCBj
LCBhbm9uX2Z1bmMsIGJpbmRfZnVuYyk7Ci0gICAgICB2YXIgdCA9IGlubGluZV90eXBlKGMsIF81
WzBdLCBhdCQxKTsKLSAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHZhciBpbml0ID0gQ3VycnkuXzEoXzVbMV0sIGVu
dGVyX2Z1bmMoYykpOwotICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJl
Y29yZCAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmdHlwZSAqL3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogbG9jYWxzICovaW5pdFsvKiBsb2NhbHMgKi8xXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBib2R5ICovaW5pdFsvKiBib2R5ICovMl0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgYXQkMSk7Ci0gICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgIEN1cnJ5Ll8zKF80LCAvKiBGdW5jRXhwb3J0ICovMCwgY1svKiBmdW5jcyAq
LzNdWy8qIGNvdW50ICovMV0sIGMpCi0gICAgICAgICAgICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKLSAg
ICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2Z1bmMs
IGJpbmRfZnVuYyk7Ci0gICAgICB2YXIgdCA9IGlubGluZV90eXBlKGMsIF80WzBdLCBhdCQxKTsK
LSAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgZnVuY3Rpb24gKCkgewot
ICAgICAgICAgICAgICAgIHZhciBpbml0ID0gQ3VycnkuXzEoXzRbMV0sIGVudGVyX2Z1bmMoYykp
OwotICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmdHlwZSAqL3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLyogbG9jYWxzICovaW5pdFsvKiBsb2NhbHMgKi8xXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvKiBib2R5ICovaW5pdFsvKiBib2R5ICovMl0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSwgYXQkMSk7Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
IC8qIFtdICovMAotICAgICAgICAgICAgXTsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19j
YW1sX3BhcnNlcl9lbnYpIHsKLSAgICByZXR1cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAg
IHZhciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHZh
ciBhdCQxID0gYXQoLyogKCkgKi8wKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAg
IHJldHVybiBTb3VyY2UuJGF0JGF0KEN1cnJ5Ll8xKF8xLCBjKSwgYXQkMSk7Ci0gICAgfTsKLSAg
fSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7Ci0gICAgdmFyIF80ID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF81ID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzAp
OwotICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQo
LyogcmVjb3JkICovWwotICAgICAgICAgICAgICAgICAgLyogaW5kZXggKi9DdXJyeS5fMihfMywg
YywgdGFibGUpLAotICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0ICovQ3VycnkuXzEoXzQsIGMp
LAotICAgICAgICAgICAgICAgICAgLyogaW5pdCAqL0N1cnJ5Ll8yKF81LCBjLCBmdW5jKQotICAg
ICAgICAgICAgICAgIF0sIGF0JDEpOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDIpOwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDEpOwotICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKLSAgICByZXR1cm4gZnVuY3Rp
b24gKGMpIHsKLSAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKLSAgICAg
ICAgICAgICAgICAgIC8qIGluZGV4ICovU291cmNlLiRhdCRhdCgwLCBhdCQxKSwKLSAgICAgICAg
ICAgICAgICAgIC8qIG9mZnNldCAqL0N1cnJ5Ll8xKF8zLCBjKSwKLSAgICAgICAgICAgICAgICAg
IC8qIGluaXQgKi9DdXJyeS5fMihfNCwgYywgZnVuYykKLSAgICAgICAgICAgICAgICBdLCBhdCQx
KTsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKLSAgICB2YXIg
XzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzUg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2YXIgYXQkMSA9
IGF0KC8qICgpICovMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICBDdXJyeS5f
MyhfMywgYywgYW5vbl90YWJsZSwgYmluZF90YWJsZSk7Ci0gICAgICByZXR1cm4gZnVuY3Rpb24g
KCkgewotICAgICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgICAgU291cmNl
LiRhdCRhdCgvKiByZWNvcmQgKi9bLyogdHR5cGUgKi9fNV0sIGF0JDEpLAotICAgICAgICAgICAg
ICAgIC8qIFtdICovMCwKLSAgICAgICAgICAgICAgICBDdXJyeS5fMyhfNCwgLyogVGFibGVFeHBv
cnQgKi8xLCBjWy8qIHRhYmxlcyAqLzFdWy8qIGNvdW50ICovMV0sIGMpCi0gICAgICAgICAgICAg
IF07Ci0gICAgICB9OwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vu
dikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDcp
OwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDYpOwot
ICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDUpOwotICAg
IHZhciBfOCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZh
ciBhdCQxID0gYXQoLyogKCkgKi8wKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAg
IHZhciBpID0gY1svKiB0YWJsZXMgKi8xXVsvKiBjb3VudCAqLzFdOwotICAgICAgQ3VycnkuXzMo
XzMsIGMsIGFub25fdGFibGUsIGJpbmRfdGFibGUpOwotICAgICAgcmV0dXJuIGZ1bmN0aW9uICgp
IHsKLSAgICAgICAgdmFyIGluaXQgPSBDdXJyeS5fMihfOCwgYywgZnVuYyk7Ci0gICAgICAgIHZh
ciBzaXplID0gTGlzdC5sZW5ndGgoaW5pdCk7Ci0gICAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
LSAgICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1svKiB0dHlwZSA6IFRh
YmxlVHlwZSAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlY29yZCAqL1sKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogbWluICovc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgLyogbWF4IDogU29tZSAqL1tzaXplXQotICAgICAgICAgICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIF81Ci0gICAgICAgICAgICAgICAgICAgICAgXV0sIGF0
JDEpLAotICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgU291cmNl
LiRhdCRhdCgvKiByZWNvcmQgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmRleCAq
L1NvdXJjZS4kYXQkYXQoaSwgYXQkMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBvZmZz
ZXQgKi9Tb3VyY2UuJGF0JGF0KC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU291cmNlLiRhdCRhdChPcGVyYXRvcnMuaTMyX2NvbnN0KFNvdXJjZS4kYXQkYXQoMCwgYXQk
MSkpLCBhdCQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFtdICovMAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgLyogaW5pdCAqL2luaXQKLSAgICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKSwKLSAgICAg
ICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAg
ICAgQ3VycnkuXzMoXzQsIC8qIFRhYmxlRXhwb3J0ICovMSwgY1svKiB0YWJsZXMgKi8xXVsvKiBj
b3VudCAqLzFdLCBjKQotICAgICAgICAgICAgICBdOwotICAgICAgfTsKLSAgICB9OwotICB9LAot
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKLSAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7Ci0g
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBy
ZWNvcmQgKi9bCi0gICAgICAgICAgICAgICAgICAvKiBpbmRleCAqL0N1cnJ5Ll8yKF8zLCBjLCBt
ZW1vcnkpLAotICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0ICovQ3VycnkuXzEoXzQsIGMpLAot
ICAgICAgICAgICAgICAgICAgLyogaW5pdCAqL181Ci0gICAgICAgICAgICAgICAgXSwgYXQkMSk7
Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF80
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgdmFyIGF0JDEg
PSBhdCgvKiAoKSAqLzApOwotICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgcmV0dXJu
IFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWwotICAgICAgICAgICAgICAgICAgLyogaW5kZXgg
Ki9Tb3VyY2UuJGF0JGF0KDAsIGF0JDEpLAotICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0ICov
Q3VycnkuXzEoXzMsIGMpLAotICAgICAgICAgICAgICAgICAgLyogaW5pdCAqL180Ci0gICAgICAg
ICAgICAgICAgXSwgYXQkMSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMyk7Ci0gICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
Mik7Ci0gICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
Ci0gICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOwotICAgIHJldHVybiBmdW5jdGlvbiAoYykg
ewotICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fbWVtb3J5LCBiaW5kX21lbW9yeSk7Ci0gICAg
ICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVj
b3JkICovWy8qIG10eXBlICovXzVdLCBhdCQxKSwKLSAgICAgICAgICAgICAgLyogW10gKi8wLAot
ICAgICAgICAgICAgICBDdXJyeS5fMyhfNCwgLyogTWVtb3J5RXhwb3J0ICovMiwgY1svKiBtZW1v
cmllcyAqLzJdWy8qIGNvdW50ICovMV0sIGMpCi0gICAgICAgICAgICBdOwotICAgIH07Ci0gIH0s
Ci0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcu
cGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDYpOwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVl
a192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDUpOwotICAgIHZhciBfNyA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsK
LSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHZhciBpID0gY1svKiBtZW1vcmllcyAq
LzJdWy8qIGNvdW50ICovMV07Ci0gICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9tZW1vcnksIGJp
bmRfbWVtb3J5KTsKLSAgICAgIHZhciBzaXplID0gKF83Lmxlbmd0aCArIDY1NTM1IHwgMCkgLyA2
NTUzNiB8IDA7Ci0gICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgIFNvdXJj
ZS4kYXQkYXQoLyogcmVjb3JkICovWy8qIG10eXBlIDogTWVtb3J5VHlwZSAqL1svKiByZWNvcmQg
Ki9bCi0gICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW4gKi9zaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgLyogbWF4IDogU29tZSAqL1tzaXplXQotICAgICAgICAgICAgICAgICAgICAg
IF1dXSwgYXQkMSksCi0gICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgIFNv
dXJjZS4kYXQkYXQoLyogcmVjb3JkICovWwotICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4
ICovU291cmNlLiRhdCRhdChpLCBhdCQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAvKiBvZmZz
ZXQgKi9Tb3VyY2UuJGF0JGF0KC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNvdXJjZS4kYXQkYXQoT3BlcmF0b3JzLmkzMl9jb25zdChTb3VyY2UuJGF0JGF0KDAsIGF0JDEp
KSwgYXQkMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpLAotICAgICAgICAgICAgICAgICAgICAgIC8qIGlu
aXQgKi9fNwotICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKSwKLSAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKLSAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgQ3VycnkuXzMoXzQsIC8q
IE1lbW9yeUV4cG9ydCAqLzIsIGNbLyogbWVtb3JpZXMgKi8yXVsvKiBjb3VudCAqLzFdLCBjKQot
ICAgICAgICAgICAgXTsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9l
bnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCA1
KTsKLSAgICB2YXIgXzYgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsK
LSAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7
Ci0gICAgICB2YXIgaSA9IGNbLyogbWVtb3JpZXMgKi8yXVsvKiBjb3VudCAqLzFdOwotICAgICAg
Q3VycnkuXzMoXzMsIGMsIGFub25fbWVtb3J5LCBiaW5kX21lbW9yeSk7Ci0gICAgICB2YXIgc2l6
ZSA9IChfNi5sZW5ndGggKyA2NTUzNSB8IDApIC8gNjU1MzYgfCAwOwotICAgICAgcmV0dXJuIC8q
IHR1cGxlICovWwotICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1svKiBt
dHlwZSA6IE1lbW9yeVR5cGUgKi9bLyogcmVjb3JkICovWwotICAgICAgICAgICAgICAgICAgICAg
ICAgLyogbWluICovc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1heCA6IFNvbWUg
Ki9bc2l6ZV0KLSAgICAgICAgICAgICAgICAgICAgICBdXV0sIGF0JDEpLAotICAgICAgICAgICAg
ICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sK
LSAgICAgICAgICAgICAgICAgICAgICAvKiBpbmRleCAqL1NvdXJjZS4kYXQkYXQoaSwgYXQkMSks
Ci0gICAgICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0ICovU291cmNlLiRhdCRhdCgvKiA6OiAq
L1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2UuJGF0JGF0KE9wZXJhdG9ycy5p
MzJfY29uc3QoU291cmNlLiRhdCRhdCgwLCBhdCQxKSksIGF0JDEpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgICAgICAgICAgICAgICBdLCBhdCQx
KSwKLSAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0ICovXzYKLSAgICAgICAgICAgICAgICAg
ICAgXSwgYXQkMSksCi0gICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICAgIF0s
Ci0gICAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgICAgXTsKLSAgICB9OwotICB9LAot
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCA0KTsKLSAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsKLSAgICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFs
KF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzYgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2YXIgYXQkMSA9IGF0KC8qICgpICovMCk7Ci0gICAg
cmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICBDdXJyeS5fMyhfMywgYywgYW5vbl9nbG9iYWws
IGJpbmRfZ2xvYmFsKTsKLSAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAg
ZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJl
Y29yZCAqL1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBndHlwZSAqL181LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZhbHVlICovQ3VycnkuXzEoXzYsIGMpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIF0sIGF0JDEpOwotICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICBDdXJyeS5fMyhfNCwgLyogR2xvYmFsRXhwb3J0ICovMywgY1svKiBnbG9iYWxzICov
NV1bLyogY291bnQgKi8xXSwgYykKLSAgICAgICAgICAgIF07Ci0gICAgfTsKLSAgfSwKLSAgZnVu
Y3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3Zh
bChfX2NhbWxfcGFyc2VyX2VudiwgMyk7Ci0gICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChf
X2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOwotICAgIHJl
dHVybiBmdW5jdGlvbiAoYykgewotICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZ2xvYmFsLCBi
aW5kX2dsb2JhbCk7Ci0gICAgICByZXR1cm4gLyogdHVwbGUgKi9bCi0gICAgICAgICAgICAgIGZ1
bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNv
cmQgKi9bCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZ3R5cGUgKi9fNCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiB2YWx1ZSAqL0N1cnJ5Ll8xKF81LCBjKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICBdLCBhdCQxKTsKLSAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgLyogW10gKi8wCi0gICAgICAgICAgICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9u
IChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDEpOwotICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgQ3Vycnku
XzMoXzMsIGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKLSAgICAgIHJldHVybiAvKiBGdW5jSW1w
b3J0ICovQmxvY2suX18oMCwgW0N1cnJ5Ll8yKF80LCBjLCB0eXBlXyldKTsKLSAgICB9OwotICB9
LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzQgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2YXIgYXQ0ID0gYXRpKDQpOwotICAg
IHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgQ3VycnkuXzMoXzMsIGMsIGFub25fZnVuYywg
YmluZF9mdW5jKTsKLSAgICAgIHJldHVybiAvKiBGdW5jSW1wb3J0ICovQmxvY2suX18oMCwgW2lu
bGluZV90eXBlKGMsIF80LCBhdDQpXSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2Ft
bF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMik7Ci0gICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2Vy
X2VudiwgMSk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICBDdXJyeS5fMyhfMywg
YywgYW5vbl90YWJsZSwgYmluZF90YWJsZSk7Ci0gICAgICByZXR1cm4gLyogVGFibGVJbXBvcnQg
Ki9CbG9jay5fXygxLCBbXzRdKTsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3Bh
cnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAyKTsKLSAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAxKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBh
bm9uX21lbW9yeSwgYmluZF9tZW1vcnkpOwotICAgICAgcmV0dXJuIC8qIE1lbW9yeUltcG9ydCAq
L0Jsb2NrLl9fKDIsIFtfNF0pOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFy
c2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDIpOwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDEpOwotICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgQ3VycnkuXzMoXzMsIGMsIGFu
b25fZ2xvYmFsLCBiaW5kX2dsb2JhbCk7Ci0gICAgICByZXR1cm4gLyogR2xvYmFsSW1wb3J0ICov
QmxvY2suX18oMywgW180XSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMyk7Ci0gICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
Mik7Ci0gICAgdmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
Ci0gICAgdmFyIGF0JDEgPSBhdCgvKiAoKSAqLzApOwotICAgIHZhciBhdDUgPSBhdGkoNSk7Ci0g
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBy
ZWNvcmQgKi9bCi0gICAgICAgICAgICAgICAgICAvKiBtb2R1bGVfbmFtZSAqL18zLAotICAgICAg
ICAgICAgICAgICAgLyogaXRlbV9uYW1lICovXzQsCi0gICAgICAgICAgICAgICAgICAvKiBpa2lu
ZCAqL1NvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzUsIGMpLCBhdDUpCi0gICAgICAgICAgICAgICAg
XSwgYXQkMSk7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
Ci0gICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7Ci0g
ICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAg
dmFyIF81ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgdmFy
IGF0JDEgPSBhdCgvKiAoKSAqLzApOwotICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAg
Q3VycnkuXzMoXzMsIGMsIGFub25fZnVuYywgYmluZF9mdW5jKTsKLSAgICAgIHJldHVybiBTb3Vy
Y2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKLSAgICAgICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1l
ICovXzRbMF0sCi0gICAgICAgICAgICAgICAgICAvKiBpdGVtX25hbWUgKi9fNFsxXSwKLSAgICAg
ICAgICAgICAgICAgIC8qIGlraW5kICovU291cmNlLiRhdCRhdCgvKiBGdW5jSW1wb3J0ICovQmxv
Y2suX18oMCwgW0N1cnJ5Ll8yKF81LCBjLCB0eXBlXyldKSwgYXQkMSkKLSAgICAgICAgICAgICAg
ICBdLCBhdCQxKTsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAzKTsK
LSAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAg
ICB2YXIgXzUgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2
YXIgYXQkMSA9IGF0KC8qICgpICovMCk7Ci0gICAgdmFyIGF0NSA9IGF0aSg1KTsKLSAgICByZXR1
cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2Z1bmMsIGJpbmRf
ZnVuYyk7Ci0gICAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCi0gICAgICAg
ICAgICAgICAgICAvKiBtb2R1bGVfbmFtZSAqL180WzBdLAotICAgICAgICAgICAgICAgICAgLyog
aXRlbV9uYW1lICovXzRbMV0sCi0gICAgICAgICAgICAgICAgICAvKiBpa2luZCAqL1NvdXJjZS4k
YXQkYXQoLyogRnVuY0ltcG9ydCAqL0Jsb2NrLl9fKDAsIFtpbmxpbmVfdHlwZShjLCBfNSwgYXQ1
KV0pLCBhdCQxKQotICAgICAgICAgICAgICAgIF0sIGF0JDEpOwotICAgIH07Ci0gIH0sCi0gIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKLSAgICBy
ZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX3RhYmxlLCBi
aW5kX3RhYmxlKTsKLSAgICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIHJlY29yZCAqL1sKLSAg
ICAgICAgICAgICAgICAgIC8qIG1vZHVsZV9uYW1lICovXzRbMF0sCi0gICAgICAgICAgICAgICAg
ICAvKiBpdGVtX25hbWUgKi9fNFsxXSwKLSAgICAgICAgICAgICAgICAgIC8qIGlraW5kICovU291
cmNlLiRhdCRhdCgvKiBUYWJsZUltcG9ydCAqL0Jsb2NrLl9fKDEsIFtfNV0pLCBhdCQxKQotICAg
ICAgICAgICAgICAgIF0sIGF0JDEpOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDMpOwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9l
bnYsIDIpOwotICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYs
IDEpOwotICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKLSAgICByZXR1cm4gZnVuY3Rpb24g
KGMpIHsKLSAgICAgIEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX21lbW9yeSwgYmluZF9tZW1vcnkpOwot
ICAgICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWwotICAgICAgICAgICAgICAg
ICAgLyogbW9kdWxlX25hbWUgKi9fNFswXSwKLSAgICAgICAgICAgICAgICAgIC8qIGl0ZW1fbmFt
ZSAqL180WzFdLAotICAgICAgICAgICAgICAgICAgLyogaWtpbmQgKi9Tb3VyY2UuJGF0JGF0KC8q
IE1lbW9yeUltcG9ydCAqL0Jsb2NrLl9fKDIsIFtfNV0pLCBhdCQxKQotICAgICAgICAgICAgICAg
IF0sIGF0JDEpOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikg
ewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOwot
ICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAg
IHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZh
ciBhdCQxID0gYXQoLyogKCkgKi8wKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAg
IEN1cnJ5Ll8zKF8zLCBjLCBhbm9uX2dsb2JhbCwgYmluZF9nbG9iYWwpOwotICAgICAgcmV0dXJu
IFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWwotICAgICAgICAgICAgICAgICAgLyogbW9kdWxl
X25hbWUgKi9fNFswXSwKLSAgICAgICAgICAgICAgICAgIC8qIGl0ZW1fbmFtZSAqL180WzFdLAot
ICAgICAgICAgICAgICAgICAgLyogaWtpbmQgKi9Tb3VyY2UuJGF0JGF0KC8qIEdsb2JhbEltcG9y
dCAqL0Jsb2NrLl9fKDMsIFtfNV0pLCBhdCQxKQotICAgICAgICAgICAgICAgIF0sIGF0JDEpOwot
ICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBf
MyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNCA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHJldHVybiAvKiB0
dXBsZSAqL1sKLSAgICAgICAgICAgIF8zLAotICAgICAgICAgICAgXzQKLSAgICAgICAgICBdOwot
ICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICByZXR1cm4gZnVuY3Rpb24g
KGMpIHsKLSAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgLyogRnVuY0V4
cG9ydCAqLzAsCi0gICAgICAgICAgICAgIEN1cnJ5Ll8yKF8zLCBjLCBmdW5jKQotICAgICAgICAg
ICAgXTsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAg
ICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICBy
ZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAg
ICAgICAgLyogVGFibGVFeHBvcnQgKi8xLAotICAgICAgICAgICAgICBDdXJyeS5fMihfMywgYywg
dGFibGUpCi0gICAgICAgICAgICBdOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOwotICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgcmV0dXJuIC8qIHR1
cGxlICovWwotICAgICAgICAgICAgICAvKiBNZW1vcnlFeHBvcnQgKi8yLAotICAgICAgICAgICAg
ICBDdXJyeS5fMihfMywgYywgbWVtb3J5KQotICAgICAgICAgICAgXTsKLSAgICB9OwotICB9LAot
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
LSAgICAgIHJldHVybiAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAgLyogR2xvYmFsRXhwb3J0
ICovMywKLSAgICAgICAgICAgICAgQ3VycnkuXzIoXzMsIGMsIGdsb2JhbCkKLSAgICAgICAgICAg
IF07Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAg
dmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFy
IF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgdmFyIGF0
JDEgPSBhdCgvKiAoKSAqLzApOwotICAgIHZhciBhdDQgPSBhdGkoNCk7Ci0gICAgcmV0dXJuIGZ1
bmN0aW9uIChjKSB7Ci0gICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfNCwgYyk7Ci0gICAgICBy
ZXR1cm4gU291cmNlLiRhdCRhdCgvKiByZWNvcmQgKi9bCi0gICAgICAgICAgICAgICAgICAvKiBu
YW1lICovXzMsCi0gICAgICAgICAgICAgICAgICAvKiBla2luZCAqL1NvdXJjZS4kYXQkYXQobWF0
Y2hbMF0sIGF0NCksCi0gICAgICAgICAgICAgICAgICAvKiBpdGVtICovbWF0Y2hbMV0KLSAgICAg
ICAgICAgICAgICBdLCBhdCQxKTsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoKSB7Ci0gICAg
cmV0dXJuIGZ1bmN0aW9uIChfLCBfJDEsIF8kMikgewotICAgICAgcmV0dXJuIC8qIFtdICovMDsK
LSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICByZXR1
cm4gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gIH0sCi0gIGZ1bmN0
aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBhdCQxID0gYXQoLyogKCkgKi8wKTsKLSAg
ICByZXR1cm4gZnVuY3Rpb24gKGssIGNvdW50LCBfKSB7Ci0gICAgICByZXR1cm4gLyogOjogKi9b
Ci0gICAgICAgICAgICAgIFNvdXJjZS4kYXQkYXQoLyogcmVjb3JkICovWwotICAgICAgICAgICAg
ICAgICAgICAvKiBuYW1lICovXzMsCi0gICAgICAgICAgICAgICAgICAgIC8qIGVraW5kICovU291
cmNlLiRhdCRhdChrLCBhdCQxKSwKLSAgICAgICAgICAgICAgICAgICAgLyogaXRlbSAqL1NvdXJj
ZS4kYXQkYXQoY291bnQgLSAxIHwgMCwgYXQkMSkKLSAgICAgICAgICAgICAgICAgIF0sIGF0JDEp
LAotICAgICAgICAgICAgICAvKiBbXSAqLzAKLSAgICAgICAgICAgIF07Ci0gICAgfTsKLSAgfSwK
LSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7
Ci0gICAgICByZXR1cm4gYW5vbl90eXBlKGMsIF8zKTsKLSAgICB9OwotICB9LAotICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAxKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHZhciBj
JDEgPSBjOwotICAgICAgdmFyIHggPSBfMzsKLSAgICAgIHZhciB0eSA9IF80OwotICAgICAgaWYg
KEN1cnJ5Ll8yKFZhck1hcFsvKiBtZW0gKi8yXSwgeFsvKiBpdCAqLzFdLCBjJDFbLyogdHlwZXMg
Ki8wXVsvKiB0bWFwICovMF0pKSB7Ci0gICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgU2Ny
aXB0LlN5bnRheCwKLSAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAotICAgICAgICAgICAgICAi
ZHVwbGljYXRlIHR5cGUgIiArIHhbLyogaXQgKi8xXQotICAgICAgICAgICAgXTsKLSAgICAgIH0K
LSAgICAgIGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRtYXAgKi8wXSA9IEN1cnJ5Ll8zKFZhck1hcFsv
KiBhZGQgKi8zXSwgeFsvKiBpdCAqLzFdLCBDdXJyeS5fMShMaWIuTGlzdDMyWy8qIGxlbmd0aCAq
LzBdLCBjJDFbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdKSwgYyQxWy8qIHR5cGVzICovMF1b
LyogdG1hcCAqLzBdKTsKLSAgICAgIGMkMVsvKiB0eXBlcyAqLzBdWy8qIHRsaXN0ICovMV0gPSBQ
ZXJ2YXNpdmVzLiRhdChjJDFbLyogdHlwZXMgKi8wXVsvKiB0bGlzdCAqLzFdLCAvKiA6OiAqL1sK
LSAgICAgICAgICAgIHR5LAotICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAgICAgXSk7Ci0g
ICAgICByZXR1cm4gLyogKCkgKi8wOwotICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxf
cGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNl
cl9lbnYsIDEpOwotICAgIHJldHVybiBmdW5jdGlvbiAoYykgewotICAgICAgcmV0dXJuIEN1cnJ5
Ll8yKF8zLCBjLCBmdW5jKTsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0
dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICB2YXIgbmV3cmVjb3JkID0gQXN0LmVtcHR5X21vZHVs
ZS5zbGljZSgpOwotICAgICAgbmV3cmVjb3JkWy8qIHR5cGVzICovMF0gPSBjWy8qIHR5cGVzICov
MF1bLyogdGxpc3QgKi8xXTsKLSAgICAgIHJldHVybiBuZXdyZWNvcmQ7Ci0gICAgfTsKLSAgfSwK
LSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgdmFyIF8yID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0g
ICAgICBDdXJyeS5fMShfMSwgYyk7Ci0gICAgICByZXR1cm4gQ3VycnkuXzEoXzIsIGMpOwotICAg
IH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMSA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBfMiA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBmdW5jdGlv
biAoYykgewotICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzEsIGMpOwotICAgICAgdmFyIG0g
PSBDdXJyeS5fMShfMiwgYyk7Ci0gICAgICBpZiAobVsvKiBpbXBvcnRzICovOF0gIT09IC8qIFtd
ICovMCkgewotICAgICAgICB2YXIgYXQgPSBMaXN0LmhkKG1bLyogaW1wb3J0cyAqLzhdKVsvKiBh
dCAqLzBdOwotICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIFNjcmlwdC5TeW50YXgsCi0g
ICAgICAgICAgICAgIGF0LAotICAgICAgICAgICAgICAiaW1wb3J0IGFmdGVyIGdsb2JhbCBkZWZp
bml0aW9uIgotICAgICAgICAgICAgXTsKLSAgICAgIH0KLSAgICAgIHZhciBuZXdyZWNvcmQgPSBt
LnNsaWNlKCk7Ci0gICAgICBuZXdyZWNvcmRbLyogZ2xvYmFscyAqLzFdID0gLyogOjogKi9bCi0g
ICAgICAgIEN1cnJ5Ll8xKG1hdGNoWzBdLCAvKiAoKSAqLzApLAotICAgICAgICBtWy8qIGdsb2Jh
bHMgKi8xXQotICAgICAgXTsKLSAgICAgIG5ld3JlY29yZFsvKiBleHBvcnRzICovOV0gPSBQZXJ2
YXNpdmVzLiRhdChtYXRjaFsxXSwgbVsvKiBleHBvcnRzICovOV0pOwotICAgICAgcmV0dXJuIG5l
d3JlY29yZDsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsK
LSAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAg
ICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICBy
ZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHZhciB0ID0gQ3VycnkuXzEoXzEsIGMpOwotICAg
ICAgdmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7Ci0gICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMSh0
LCAvKiAoKSAqLzApOwotICAgICAgaWYgKG1bLyogaW1wb3J0cyAqLzhdICE9PSAvKiBbXSAqLzAp
IHsKLSAgICAgICAgdmFyIGF0ID0gTGlzdC5oZChtWy8qIGltcG9ydHMgKi84XSlbLyogYXQgKi8w
XTsKLSAgICAgICAgdGhyb3cgWwotICAgICAgICAgICAgICBTY3JpcHQuU3ludGF4LAotICAgICAg
ICAgICAgICBhdCwKLSAgICAgICAgICAgICAgImltcG9ydCBhZnRlciB0YWJsZSBkZWZpbml0aW9u
IgotICAgICAgICAgICAgXTsKLSAgICAgIH0KLSAgICAgIHZhciBuZXdyZWNvcmQgPSBtLnNsaWNl
KCk7Ci0gICAgICBuZXdyZWNvcmRbLyogdGFibGVzICovMl0gPSAvKiA6OiAqL1sKLSAgICAgICAg
bWF0Y2hbMF0sCi0gICAgICAgIG1bLyogdGFibGVzICovMl0KLSAgICAgIF07Ci0gICAgICBuZXdy
ZWNvcmRbLyogZWxlbXMgKi82XSA9IFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzFdLCBtWy8qIGVsZW1z
ICovNl0pOwotICAgICAgbmV3cmVjb3JkWy8qIGV4cG9ydHMgKi85XSA9IFBlcnZhc2l2ZXMuJGF0
KG1hdGNoWzJdLCBtWy8qIGV4cG9ydHMgKi85XSk7Ci0gICAgICByZXR1cm4gbmV3cmVjb3JkOwot
ICAgIH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBf
MSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHZhciBfMiA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVybiBmdW5j
dGlvbiAoYykgewotICAgICAgdmFyIG1hdGNoID0gQ3VycnkuXzEoXzEsIGMpOwotICAgICAgdmFy
IG0gPSBDdXJyeS5fMShfMiwgYyk7Ci0gICAgICBpZiAobVsvKiBpbXBvcnRzICovOF0gIT09IC8q
IFtdICovMCkgewotICAgICAgICB2YXIgYXQgPSBMaXN0LmhkKG1bLyogaW1wb3J0cyAqLzhdKVsv
KiBhdCAqLzBdOwotICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIFNjcmlwdC5TeW50YXgs
Ci0gICAgICAgICAgICAgIGF0LAotICAgICAgICAgICAgICAiaW1wb3J0IGFmdGVyIG1lbW9yeSBk
ZWZpbml0aW9uIgotICAgICAgICAgICAgXTsKLSAgICAgIH0KLSAgICAgIHZhciBuZXdyZWNvcmQg
PSBtLnNsaWNlKCk7Ci0gICAgICBuZXdyZWNvcmRbLyogbWVtb3JpZXMgKi8zXSA9IC8qIDo6ICov
WwotICAgICAgICBtYXRjaFswXSwKLSAgICAgICAgbVsvKiBtZW1vcmllcyAqLzNdCi0gICAgICBd
OwotICAgICAgbmV3cmVjb3JkWy8qIGRhdGEgKi83XSA9IFBlcnZhc2l2ZXMuJGF0KG1hdGNoWzFd
LCBtWy8qIGRhdGEgKi83XSk7Ci0gICAgICBuZXdyZWNvcmRbLyogZXhwb3J0cyAqLzldID0gUGVy
dmFzaXZlcy4kYXQobWF0Y2hbMl0sIG1bLyogZXhwb3J0cyAqLzldKTsKLSAgICAgIHJldHVybiBu
ZXdyZWNvcmQ7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
Ci0gICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0g
ICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAg
cmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICB2YXIgbWF0Y2ggPSBDdXJyeS5fMShfMSwgYyk7
Ci0gICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKLSAgICAgIHZhciBmdW5jID0gQ3Vycnku
XzEobWF0Y2hbMF0sIC8qICgpICovMCk7Ci0gICAgICBpZiAobVsvKiBpbXBvcnRzICovOF0gIT09
IC8qIFtdICovMCkgewotICAgICAgICB2YXIgYXQgPSBMaXN0LmhkKG1bLyogaW1wb3J0cyAqLzhd
KVsvKiBhdCAqLzBdOwotICAgICAgICB0aHJvdyBbCi0gICAgICAgICAgICAgIFNjcmlwdC5TeW50
YXgsCi0gICAgICAgICAgICAgIGF0LAotICAgICAgICAgICAgICAiaW1wb3J0IGFmdGVyIGZ1bmN0
aW9uIGRlZmluaXRpb24iCi0gICAgICAgICAgICBdOwotICAgICAgfQotICAgICAgdmFyIG5ld3Jl
Y29yZCA9IG0uc2xpY2UoKTsKLSAgICAgIG5ld3JlY29yZFsvKiBmdW5jcyAqLzRdID0gLyogOjog
Ki9bCi0gICAgICAgIGZ1bmMsCi0gICAgICAgIG1bLyogZnVuY3MgKi80XQotICAgICAgXTsKLSAg
ICAgIG5ld3JlY29yZFsvKiBleHBvcnRzICovOV0gPSBQZXJ2YXNpdmVzLiRhdChtYXRjaFsxXSwg
bVsvKiBleHBvcnRzICovOV0pOwotICAgICAgcmV0dXJuIG5ld3JlY29yZDsKLSAgICB9OwotICB9
LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzEgPSBQYXJzaW5n
LnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2YXIgXzIgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsK
LSAgICAgIHZhciBtID0gQ3VycnkuXzEoXzIsIGMpOwotICAgICAgdmFyIG5ld3JlY29yZCA9IG0u
c2xpY2UoKTsKLSAgICAgIG5ld3JlY29yZFsvKiBlbGVtcyAqLzZdID0gLyogOjogKi9bCi0gICAg
ICAgIEN1cnJ5Ll8xKF8xLCBjKSwKLSAgICAgICAgbVsvKiBlbGVtcyAqLzZdCi0gICAgICBdOwot
ICAgICAgcmV0dXJuIG5ld3JlY29yZDsKLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAxKTsKLSAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAwKTsKLSAgICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHZhciBtID0gQ3Vycnku
XzEoXzIsIGMpOwotICAgICAgdmFyIG5ld3JlY29yZCA9IG0uc2xpY2UoKTsKLSAgICAgIG5ld3Jl
Y29yZFsvKiBkYXRhICovN10gPSAvKiA6OiAqL1sKLSAgICAgICAgQ3VycnkuXzEoXzEsIGMpLAot
ICAgICAgICBtWy8qIGRhdGEgKi83XQotICAgICAgXTsKLSAgICAgIHJldHVybiBuZXdyZWNvcmQ7
Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFy
IF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgdmFyIF8y
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0dXJuIGZ1
bmN0aW9uIChjKSB7Ci0gICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsKLSAgICAgIHZhciB4
ID0gQ3VycnkuXzEoXzEsIGMpOwotICAgICAgdmFyIG1hdGNoID0gbVsvKiBzdGFydCAqLzVdOwot
ICAgICAgaWYgKG1hdGNoKSB7Ci0gICAgICAgIHRocm93IFsKLSAgICAgICAgICAgICAgU2NyaXB0
LlN5bnRheCwKLSAgICAgICAgICAgICAgeFsvKiBhdCAqLzBdLAotICAgICAgICAgICAgICAibXVs
dGlwbGUgc3RhcnQgc2VjdGlvbnMiCi0gICAgICAgICAgICBdOwotICAgICAgfQotICAgICAgZWxz
ZSB7Ci0gICAgICAgIHZhciBuZXdyZWNvcmQgPSBtLnNsaWNlKCk7Ci0gICAgICAgIG5ld3JlY29y
ZFsvKiBzdGFydCAqLzVdID0gLyogU29tZSAqL1t4XTsKLSAgICAgICAgcmV0dXJuIG5ld3JlY29y
ZDsKLSAgICAgIH0KLSAgICB9OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYp
IHsKLSAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsK
LSAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAg
ICByZXR1cm4gZnVuY3Rpb24gKGMpIHsKLSAgICAgIHZhciBpID0gQ3VycnkuXzEoXzEsIGMpOwot
ICAgICAgdmFyIG0gPSBDdXJyeS5fMShfMiwgYyk7Ci0gICAgICB2YXIgbmV3cmVjb3JkID0gbS5z
bGljZSgpOwotICAgICAgbmV3cmVjb3JkWy8qIGltcG9ydHMgKi84XSA9IC8qIDo6ICovWwotICAg
ICAgICBpLAotICAgICAgICBtWy8qIGltcG9ydHMgKi84XQotICAgICAgXTsKLSAgICAgIHJldHVy
biBuZXdyZWNvcmQ7Ci0gICAgfTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52
KSB7Ci0gICAgdmFyIF8xID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7
Ci0gICAgdmFyIF8yID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0g
ICAgcmV0dXJuIGZ1bmN0aW9uIChjKSB7Ci0gICAgICB2YXIgbSA9IEN1cnJ5Ll8xKF8yLCBjKTsK
LSAgICAgIHZhciBuZXdyZWNvcmQgPSBtLnNsaWNlKCk7Ci0gICAgICBuZXdyZWNvcmRbLyogZXhw
b3J0cyAqLzldID0gLyogOjogKi9bCi0gICAgICAgIEN1cnJ5Ll8xKF8xLCBjKSwKLSAgICAgICAg
bVsvKiBleHBvcnRzICovOV0KLSAgICAgIF07Ci0gICAgICByZXR1cm4gbmV3cmVjb3JkOwotICAg
IH07Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMyA9
IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNCA9IFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHJldHVybiAvKiB0dXBs
ZSAqL1sKLSAgICAgICAgICAgIF8zLAotICAgICAgICAgICAgU291cmNlLiRhdCRhdCgvKiBUZXh0
dWFsICovQmxvY2suX18oMCwgW1NvdXJjZS4kYXQkYXQoQ3VycnkuXzEoXzQsIGVtcHR5X2NvbnRl
eHQoLyogKCkgKi8wKSksIGF0KC8qICgpICovMCkpXSksIGF0KC8qICgpICovMCkpCi0gICAgICAg
ICAgXTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMyk7Ci0gICAgdmFyIF80ID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF81ID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgcmV0dXJuIC8qIHR1cGxl
ICovWwotICAgICAgICAgICAgXzMsCi0gICAgICAgICAgICBTb3VyY2UuJGF0JGF0KC8qIEVuY29k
ZWQgKi9CbG9jay5fXygxLCBbCi0gICAgICAgICAgICAgICAgICAgICJiaW5hcnkiLAotICAgICAg
ICAgICAgICAgICAgICBfNCArIF81Ci0gICAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8w
KSkKLSAgICAgICAgICBdOwotICB9LAotICBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuIC8qIE5v
bmUgKi8wOwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIg
XzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4g
LyogU29tZSAqL1tTb3VyY2UuJGF0JGF0KF8xLCBhdCgvKiAoKSAqLzApKV07Ci0gIH0sCi0gIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192
YWwoX19jYW1sX3BhcnNlcl9lbnYsIDMpOwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwo
X19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNSA9IFBhcnNpbmcucGVla192YWwoX19j
YW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIEludm9rZSAq
L0Jsb2NrLl9fKDAsIFsKLSAgICAgICAgICAgICAgICAgIF8zLAotICAgICAgICAgICAgICAgICAg
XzQsCi0gICAgICAgICAgICAgICAgICBfNQotICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAq
LzApKTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8z
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF80ID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgcmV0dXJuIFNvdXJj
ZS4kYXQkYXQoLyogR2V0ICovQmxvY2suX18oMSwgWwotICAgICAgICAgICAgICAgICAgXzMsCi0g
ICAgICAgICAgICAgICAgICBfNAotICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsK
LSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF80ID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgcmV0dXJuIFNvdXJjZS4kYXQk
YXQoLyogQXNzZXJ0TWFsZm9ybWVkICovQmxvY2suX18oMCwgWwotICAgICAgICAgICAgICAgICAg
XzNbMV0sCi0gICAgICAgICAgICAgICAgICBfNAotICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAo
KSAqLzApKTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFy
IF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF80
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgcmV0dXJuIFNv
dXJjZS4kYXQkYXQoLyogQXNzZXJ0SW52YWxpZCAqL0Jsb2NrLl9fKDEsIFsKLSAgICAgICAgICAg
ICAgICAgIF8zWzFdLAotICAgICAgICAgICAgICAgICAgXzQKLSAgICAgICAgICAgICAgICBdKSwg
YXQoLyogKCkgKi8wKSk7Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2Vudikgewot
ICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDIpOwotICAg
IHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICAgIHJl
dHVybiBTb3VyY2UuJGF0JGF0KC8qIEFzc2VydFNvZnRJbnZhbGlkICovQmxvY2suX18oMiwgWwot
ICAgICAgICAgICAgICAgICAgXzNbMV0sCi0gICAgICAgICAgICAgICAgICBfNAotICAgICAgICAg
ICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJz
ZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vu
diwgMik7Ci0gICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2Vudiwg
MSk7Ci0gICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogQXNzZXJ0VW5saW5rYWJsZSAqL0Jsb2Nr
Ll9fKDMsIFsKLSAgICAgICAgICAgICAgICAgIF8zWzFdLAotICAgICAgICAgICAgICAgICAgXzQK
LSAgICAgICAgICAgICAgICBdKSwgYXQoLyogKCkgKi8wKSk7Ci0gIH0sCi0gIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgewotICAgIHZhciBfMyA9IFBhcnNpbmcucGVla192YWwoX19jYW1s
X3BhcnNlcl9lbnYsIDIpOwotICAgIHZhciBfNCA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3Bh
cnNlcl9lbnYsIDEpOwotICAgIHJldHVybiBTb3VyY2UuJGF0JGF0KC8qIEFzc2VydFVuaW5zdGFu
dGlhYmxlICovQmxvY2suX18oNCwgWwotICAgICAgICAgICAgICAgICAgXzNbMV0sCi0gICAgICAg
ICAgICAgICAgICBfNAotICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKLSAgfSwK
LSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2luZy5w
ZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF80ID0gUGFyc2luZy5wZWVr
X3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyog
QXNzZXJ0UmV0dXJuICovQmxvY2suX18oNSwgWwotICAgICAgICAgICAgICAgICAgXzMsCi0gICAg
ICAgICAgICAgICAgICBfNAotICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKLSAg
fSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgcmV0dXJuIFNvdXJjZS4kYXQk
YXQoLyogQXNzZXJ0UmV0dXJuTmFOICovQmxvY2suX18oNiwgW18zXSksIGF0KC8qICgpICovMCkp
OwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQ
YXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzQgPSBQYXJz
aW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICByZXR1cm4gU291cmNlLiRh
dCRhdCgvKiBBc3NlcnRUcmFwICovQmxvY2suX18oNywgWwotICAgICAgICAgICAgICAgICAgXzMs
Ci0gICAgICAgICAgICAgICAgICBfNAotICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzAp
KTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8zID0g
UGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF80ID0gUGFy
c2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMSk7Ci0gICAgcmV0dXJuIFNvdXJjZS4k
YXQkYXQoLyogQXNzZXJ0RXhoYXVzdGlvbiAqL0Jsb2NrLl9fKDgsIFsKLSAgICAgICAgICAgICAg
ICAgIF8zLAotICAgICAgICAgICAgICAgICAgXzQKLSAgICAgICAgICAgICAgICBdKSwgYXQoLyog
KCkgKi8wKSk7Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZh
ciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVy
biBTb3VyY2UuJGF0JGF0KC8qIEFjdGlvbiAqL0Jsb2NrLl9fKDIsIFtfMV0pLCBhdCgvKiAoKSAq
LzApKTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8x
ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCk7Ci0gICAgcmV0dXJuIFNv
dXJjZS4kYXQkYXQoLyogQXNzZXJ0aW9uICovQmxvY2suX18oMywgW18xXSksIGF0KC8qICgpICov
MCkpOwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzEg
PSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gU291
cmNlLiRhdCRhdCgvKiBNb2R1bGUgKi9CbG9jay5fXygwLCBbCi0gICAgICAgICAgICAgICAgICBf
MVswXSwKLSAgICAgICAgICAgICAgICAgIF8xWzFdCi0gICAgICAgICAgICAgICAgXSksIGF0KC8q
ICgpICovMCkpOwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2
YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIg
XzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICByZXR1cm4g
U291cmNlLiRhdCRhdCgvKiBSZWdpc3RlciAqL0Jsb2NrLl9fKDEsIFsKLSAgICAgICAgICAgICAg
ICAgIF8zLAotICAgICAgICAgICAgICAgICAgXzQKLSAgICAgICAgICAgICAgICBdKSwgYXQoLyog
KCkgKi8wKSk7Ci0gIH0sCi0gIGZ1bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHZh
ciBfMSA9IFBhcnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApOwotICAgIHJldHVy
biBTb3VyY2UuJGF0JGF0KC8qIE1ldGEgKi9CbG9jay5fXyg0LCBbXzFdKSwgYXQoLyogKCkgKi8w
KSk7Ci0gIH0sCi0gIGZ1bmN0aW9uICgpIHsKLSAgICByZXR1cm4gLyogW10gKi8wOwotICB9LAot
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzEgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2YXIgXzIgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAg
ICAgICBfMSwKLSAgICAgICAgICAgIF8yCi0gICAgICAgICAgXTsKLSAgfSwKLSAgZnVuY3Rpb24g
KF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2Nh
bWxfcGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMSk7Ci0gICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogU2NyaXB0ICovQmxv
Y2suX18oMiwgWwotICAgICAgICAgICAgICAgICAgXzMsCi0gICAgICAgICAgICAgICAgICBfNAot
ICAgICAgICAgICAgICAgIF0pLCBhdCgvKiAoKSAqLzApKTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9f
Y2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgdmFyIF8zID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxf
cGFyc2VyX2VudiwgMik7Ci0gICAgdmFyIF80ID0gUGFyc2luZy5wZWVrX3ZhbChfX2NhbWxfcGFy
c2VyX2VudiwgMSk7Ci0gICAgcmV0dXJuIFNvdXJjZS4kYXQkYXQoLyogSW5wdXQgKi9CbG9jay5f
XygwLCBbCi0gICAgICAgICAgICAgICAgICBfMywKLSAgICAgICAgICAgICAgICAgIF80Ci0gICAg
ICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOwotICB9LAotICBmdW5jdGlvbiAoX19jYW1s
X3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJz
ZXJfZW52LCAyKTsKLSAgICB2YXIgXzQgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJf
ZW52LCAxKTsKLSAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBPdXRwdXQgKi9CbG9jay5fXygx
LCBbCi0gICAgICAgICAgICAgICAgICBfMywKLSAgICAgICAgICAgICAgICAgIC8qIFNvbWUgKi9b
XzRdCi0gICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOwotICB9LAotICBmdW5jdGlv
biAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtfdmFsKF9f
Y2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICByZXR1cm4gU291cmNlLiRhdCRhdCgvKiBPdXRwdXQg
Ki9CbG9jay5fXygxLCBbCi0gICAgICAgICAgICAgICAgICBfMywKLSAgICAgICAgICAgICAgICAg
IC8qIE5vbmUgKi8wCi0gICAgICAgICAgICAgICAgXSksIGF0KC8qICgpICovMCkpOwotICB9LAot
ICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzIgPSBQYXJzaW5nLnBl
ZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAyKTsKLSAgICB2YXIgXzMgPSBQYXJzaW5nLnBlZWtf
dmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICByZXR1cm4gU291cmNlLiRhdCRhdChsaXRl
cmFsKF8yLCBfMylbMV0sIGF0aSgzKSk7Ci0gIH0sCi0gIGZ1bmN0aW9uICgpIHsKLSAgICByZXR1
cm4gLyogW10gKi8wOwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsKLSAg
ICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAxKTsKLSAgICB2
YXIgXzIgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1
cm4gLyogOjogKi9bCi0gICAgICAgICAgICBfMSwKLSAgICAgICAgICAgIF8yCi0gICAgICAgICAg
XTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7Ci0gICAgcmV0dXJuIFBh
cnNpbmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDEpOwotICB9LAotICBmdW5jdGlvbiAo
X19jYW1sX3BhcnNlcl9lbnYpIHsKLSAgICB2YXIgXzEgPSBQYXJzaW5nLnBlZWtfdmFsKF9fY2Ft
bF9wYXJzZXJfZW52LCAwKTsKLSAgICByZXR1cm4gLyogOjogKi9bCi0gICAgICAgICAgICBfMSwK
LSAgICAgICAgICAgIC8qIFtdICovMAotICAgICAgICAgIF07Ci0gIH0sCi0gIGZ1bmN0aW9uIChf
X2NhbWxfcGFyc2VyX2VudikgewotICAgIHJldHVybiBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9w
YXJzZXJfZW52LCAxKVsxXTsKLSAgfSwKLSAgZnVuY3Rpb24gKF9fY2FtbF9wYXJzZXJfZW52KSB7
Ci0gICAgdGhyb3cgWwotICAgICAgICAgIFBhcnNpbmcuWVlleGl0LAotICAgICAgICAgIFBhcnNp
bmcucGVla192YWwoX19jYW1sX3BhcnNlcl9lbnYsIDApCi0gICAgICAgIF07Ci0gIH0sCi0gIGZ1
bmN0aW9uIChfX2NhbWxfcGFyc2VyX2VudikgewotICAgIHRocm93IFsKLSAgICAgICAgICBQYXJz
aW5nLllZZXhpdCwKLSAgICAgICAgICBQYXJzaW5nLnBlZWtfdmFsKF9fY2FtbF9wYXJzZXJfZW52
LCAwKQotICAgICAgICBdOwotICB9LAotICBmdW5jdGlvbiAoX19jYW1sX3BhcnNlcl9lbnYpIHsK
LSAgICB0aHJvdyBbCi0gICAgICAgICAgUGFyc2luZy5ZWWV4aXQsCi0gICAgICAgICAgUGFyc2lu
Zy5wZWVrX3ZhbChfX2NhbWxfcGFyc2VyX2VudiwgMCkKLSAgICAgICAgXTsKLSAgfQotXTsKLQot
dmFyIHl5dGFibGVzID0gLyogcmVjb3JkICovWwotICAvKiBhY3Rpb25zICoveXlhY3QsCi0gIC8q
IHRyYW5zbF9jb25zdCAqL3l5dHJhbnNsX2NvbnN0LAotICAvKiB0cmFuc2xfYmxvY2sgKi95eXRy
YW5zbF9ibG9jaywKLSAgLyogbGhzICovJ1x4ZmZceGZmXHgwNFwwXHgwNFwwXHgwNVwwXHgwNVww
XHgwNlwwXHgwN1wwXHgwN1wwXGJcMFx0XDBcdFwwXHRcMFx0XDBceDBiXDBcclwwXGZcMFxmXDBc
eDBlXDBceDEwXDBceDEwXDBceDEwXDBceDBmXDBceDBmXDBceDExXDBceDExXDBceDEyXDBceDEy
XDBcblwwXHgxM1wwXHgxM1wwXHgxNFwwXHgxNFwwXHgxNVwwXHgxNVwwXHgxNlwwXHgxNlwwXHgx
N1wwXHgxN1wwXHgxN1wwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFww
XHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgx
OFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOFwwXHgxOVww
XHgxOVwwXHgxOVwwXHgxOVwwXHgxYlwwXHgxYVwwXHgxZFwwXHgxZFwwXHgxZFwwXHgxZFwwXHgx
ZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxZlwwXHgxY1wwXHgxY1wwXHgxZVwwXHgxZVww
IFwwIVwwIVwwIVwwIVwwIlwwIlwwIlwwI1wwI1wwI1wwI1wwJVwwJVwwJlwwJlwwXCdcMFwnXDAp
XDApXDAqXDAqXDAqXDArXDArXDAsXDAsXDAsXDAsXDAsXDAtXDAtXDAtXDAtXDAtXDAtXDAuXDAv
XDAvXDAvXDAvXHgwMDBcMChcMChcMCRceDAwMVx4MDAxXHgwMDJceDAwM1x4MDAzXHgwMDNceDAw
M1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDNceDAwM1x4MDAzXHgwMDRceDAwNFx4MDA1XHgwMDVc
eDAwNlx4MDA2XHgwMDhceDAwOFx4MDA4XHgwMDhceDAwOFx4MDA4XHgwMDhceDAwOFx4MDA4XHgw
MDlceDAwOVx4MDA5XHgwMDlceDAwOVwwO1wwO1wwOlwwOlwwOlwwOlwwPFx4MDA3XHgwMDdcMFx4
MDFcMFx4MDJcMFx4MDNcMFwwXDBcMFwwXDBcMCcsCi0gIC8qIGxlbiAqLyJceDAyXDBcMFwwXHgw
MlwwXDBcMFx4MDJcMFx4MDFcMFx4MDFcMFx4MDRcMFx4MDRcMFwwXDBceDA1XDBceDA1XDBceDA2
XDBceDAyXDBceDAxXDBceDAxXDBceDAyXDBceDA0XDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBc
eDAxXDBcMFwwXHgwMlwwXDBcMFx4MDFcMFx4MDFcMFwwXDBceDAxXDBcMFwwXHgwMVwwXDBcMFx4
MDFcMFwwXDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBceDAxXDBceDAyXDBceDAyXDBc
eDAzXDBceDAxXDBceDAyXDBceDAyXDBceDAxXDBceDAxXDBceDAyXDBceDAyXDBceDAyXDBceDAy
XDBceDAyXDBceDAzXDBceDAzXDBceDAxXDBceDAxXDBceDAyXDBceDAxXDBceDAxXDBceDAxXDBc
eDAxXDBceDAxXDBceDA1XDBceDA1XDBceDA1XDBcYlwwXHgwMlwwXHgwM1wwXHgwMlwwXHgwM1ww
XHgwM1wwXHgwNFwwXGJcMFx4MDRcMFx0XDBceDA1XDBceDAzXDBceDAyXDBcMFwwXHgwMlwwXDBc
MFx4MDJcMFx4MDFcMFx4MDFcMFx4MDVcMFx4MDVcMFx4MDZcMFx4MDFcMFx4MDVcMFx4MDZcMFx4
MDdcMFx4MDZcMFx4MDZcMFx4MDVcMFx4MDRcMFx4MDFcMFx4MDZcMFx4MDVcMFx4MDZcMFxuXDBc
eDA2XDBceDA1XDBceDA2XDBcdFwwXGJcMFx4MDdcMFx4MDZcMFx4MDVcMFx4MDVcMFx4MDVcMFx4
MDVcMFx4MDVcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDZcMFx4MDVcMFx4MDRc
MFx4MDRcMFx4MDRcMFx4MDRcMFx4MDVcMFwwXDBceDAxXDBceDA0XDBceDA0XDBceDA1XDBceDA0
XDBcMFwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwXHgw
MlwwXHgwMlwwXHgwNVwwXHgwNlwwXDBcMFx4MDFcMFx4MDZcMFx4MDVcMFx4MDVcMFx4MDVcMFx4
MDVcMFx4MDVcMFx4MDVcMFx4MDVcMFx4MDRcMFx4MDVcMFx4MDVcMFx4MDFcMFx4MDFcMFx4MDFc
MFx4MDVcMFx4MDFcMFwwXDBceDAyXDBceDA1XDBceDA1XDBceDA1XDBceDA0XDBceDA0XDBcMFww
XHgwMlwwXHgwMlwwXHgwMVwwXHgwMlwwXHgwMlwwXHgwMlwwXHgwMlwwIiwKLSAgLyogZGVmcmVk
ICovIlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4YWZcMFx4YTBcMFx4OWVcMFx4OWZcMFwwXDBc
eGEyXDBcMFwwXHhiMFwwXHhhZFwwXDBcMFx4YjFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGE0XDBceGFjXDBceGFlXDBc
eDkyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBceDAxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFx4OWJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhhOFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDg5XDBceDhhXDBceDg3XDBceDhiXDBceDg4XDBceDg2
XDBceDhkXDBceDhlXDBceDg1XDBceDhjXDBceDhmXDBceGE1XDBceGExXDBcMFwwXHg5NFwwXHg5
NVwwXHg5NlwwXHg5N1wwXHg5OFwwXDBcMFx4OWFcMFx4YWJcMFx4OTlcMFx4OWNcMFx4OWRcMFx4
YTZcMFx4YTdcMFx4MDJcMFx4OTBcMFx4MWJcMFx4MWFcMFwwXDBceDE1XDBceDE2XDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGFcMFwwXDBcMFwwXDBcMFx4MDFcMFwwXDBcMFwwXHg5
M1wwXHgxMlwwXHgxM1wwXHgxNFwwXDBcMFwwXDAoXDAvXDBcMFwwXDBceDAwMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwLFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDA9XDA+XDA8
XDA/XDAnXHgwMDhceDAwOVwwO1wwXDBcMFwwXDAkXDAlXDAmXDBZXDBcMFwwVVwwXDBcMFwwXDBc
eDgzXDBcMFwwXHg4MVwwXDBcMFx4MDZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHg3ZlwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHgw
MVwwXDBcMFwwXDBcMFwwXDBcMFx4YTlcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MWRcMFww
XDBcMFwwXDBcMClcMCpcMFwwXDAtXDAuXHgwMDFceDAwMlx4MDAzXHgwMDRceDAwNVwwIVwwXDBc
MFwwXDA6XDBcMFwwXDBcMFwwXDBRXDBfXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFx4ODJcMFwwXDBUXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4MDVcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMEZcMEVcMFwwXDBceDE4XDBjXDBceDAxXDBcMFwwXHgwZVwwXDBc
MFwwXDBcMFwwZ1wwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwfVwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMCtcMCNceDAwNlx4MDA3XDBdXDBcMFww
XlwwXDBcMFwwXDB0XDBzXDBcYlwwXDBcMGxcMFwwXDB3XDBceDEwXDBcMFwwZFwwXHJcMHVcMEdc
MFwwXDBIXDBgXDBTXDBiXDBcMFwwXHgwMVwwaFwwdlwwZlwwXDBcMFwwXDBcMFwwXDBcMHJcMFww
XDBcMFwwXDBcMFwwXDBceDExXDBceDA0XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDgwXDBE
XDBcMFwwXDBcMFwwXDBcMFwwXFxcMFwwXDBcMFwwXDBcMFx4MDdcMGtcMFwwXDBcMFwwXDBcMElc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMHlcMHxcMHpcMHtcMFdcMFwwXDBcMFwwVlwwWlwwXDBc
MHhcMFx4MWZcMEBcMEJcMFwwXDBBXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwalwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwWFwwW1wwXDBcMFx4MGJcMFwwXDBcblwwXDBcMFwwXDBcMFww
TlwwaVwwblwwbVwwcVwwb1wwcFwwXDBcMFxmXDBlXDBcMFwwXDBcMENcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMEpcMFwwXDBMXDAiLAotICAvKiBkZ290byAqLydceDA0XDBceDA2XDBcclwwXHgx
MFwwVlx4MDAxXHgwMVxmXHgwMVx4YzRcMFx4ODVcMFx4ZmZcMFx4N2ZcMFxyXHgwMVx4MGVceDAx
XHgxZFx4MDFceGI0XDBceGQyXDBceDk2XDBceGQzXDBceDgwXDBceGU1XDBceDg4XHgwMVx4ZjNc
eDAwN1x4MDFceGI1XDBceGI2XDBceGI3XDBceGI4XHgwMDJceDAxXHhiOVwwXHhkMFwwXHgxNVx4
MDF1XHgwMVx4MDZceDAxXHhiYVwwXHhiYlx4MDA5XDBceGJjXDBceDhjXDA6XDA7XDBceGM5XDA8
XDA9XDA+XDAiXHgwMT9cMFx4YmRcMFx4ZGNcMEBcMEFcMEJcMENcMFx4MDdcMCVcMFxiXDBNXDBc
dFwwXG5cMFx4MGJcMFxmXDBOXDAnLAotICAvKiBzaW5kZXggKi8nXHhkNFwwXHgxN1x4ZmZceDE3
XHhmZi5ceGZmXDBcMGFceGZmXDBcMFwwXDBcMFwwXDBcMFx4MTdceGZmXDBcMEBcMFwwXDBcMFww
Ilx4ZmZcMFwwbFwwaVx4ZmZpXHhmZndceGZmaVx4ZmZpXHhmZi5ceGZmLlx4ZmYuXHhmZi5ceGZm
cFx4ZmZwXHhmZn5ceGZmcFx4ZmZpXHhmZmlceGZmXDBcMFwwXDBcMFwwXDBcMFx4YWJceGZmXHgx
N1x4ZmZpXHhmZlx4OTJceGZmXHhhY1x4ZmZceGM5XHhmZlx4ZDlceGZmXHhmNlx4ZmZceGY5XHhm
ZlxmXHhmZlx4YTFceGZmXHhhZlx4ZmZceGZjXHhmZVx4ZmJceGZmXHhmZVx4ZmZceDE1XDBceDFj
XHgwMDFceGZmXDBcMFx4MTdcMFx4MWRcMFx4MWRcMFx4MWRcMFx4MWRcMFx4MWRcMFx4MWRcMFx4
MWRcMFx4MWRcMFx4MWRcMFx4MWRcMFx4YjFceGZmXHhiNlx4ZmZceDExXDBceGExXHhmZi1ceDAw
N1wwPVwwP1wwRFwwL1wwSlwwXHhhMVx4ZmZcMFwwS1wwU1wwZFwwZVwwblwwXDBcMFtceGZmUlww
XHhiN1x4ZmZceGM2XHhmZlJcMFJcMFx4OGZceGZmUlwwXHg4Zlx4ZmZ2XDB3XDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwweVwwXDBcMFwwXDBcMFww
XDBcMFwwXDBceDBiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFx4MTZceDAyXDBcMFwwXDB6XDBWXDBceDhhXDBceDk1XDBceGU5XHhmZlx4OTdcMFdceDAzXHg5
OFwwXDBcMFx4YjdceGZmXHg5OVwwXHg5OFwwXDBcMFx4OWJcMFx4YTFcMFwwXDBcMFwwXDBcMFww
XDBceGJiXDBceGQ0XHgwMlwwXDBcMFwwUlwwUlwwXDBcMFJcMFx4YjdceGZmXHhiN1x4ZmZceGI3
XHhmZlx4YjdceGZmXHhiN1x4ZmZcMFwwXHhiN1x4ZmZceGI3XHhmZlx4YjdceGZmXHhiN1x4ZmZc
eGI3XHhmZlx4YTVcMFx4YTVcMFx4MGJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
PFx4MDJiXHgwMlwwXDBcMFwwXDBcMFwwXDBceGJkXDBcMFwwXHg4OFx4MDJceGJmXDBcMFwwXHhj
N1wwXDBcMFx4ZDdcMFwwXDBcclx4ZmZiXHgwMlx4ZWRceGZmXHhlZFx4ZmZceGNkXHhmZlwwXDB1
XHhmZlx4ZWFcMFJcMFJcMFJcMGJceDAyXHhlM1wwXHhlNFwwXHhiN1x4ZmZceGI3XHhmZlx4ZWNc
MFx4OThceGZmXHhmZVwwXHhlYVwwXHhlYVwwXDBcMFx4N2ZceGZmXGJceDAxXHhmZVx4ZmVcdFx4
MDFcMFwwXHhiN1x4ZmZceDEyXDBceGU3XDBceDEyXDBceDBlXHgwMVx4MTBceDAxXDBcMFx4ZTdc
MFx4ZTdcMFx4ZTdcMFwwXDBcMFwwXHhiN1x4ZmZcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFx4ZmFcMFx4ZmFcMFwwXHgwMDFceDAzI1x4MDFceGVmXHgwM1wwXDBcMFwwXHgwYlx4MDM8
XHgwMi1ceDAxXHhlN1x4ZmYuXHgwMS9ceDAxXHg5OVx4ZmYwXHgwMVwwXDA8XHgwMVwwXDBJXHgw
MVVceDAxYlx4MDJUXHgwMV5ceDAxXDBcMFdceDAxb1x4MDFbXHgwMXlceDAxXHhlN1wwXHhlN1ww
XHhlN1wwelx4MDFceGUzXDBcMFwwXDBcMHtceDAxXDBcMFwwXDBcMFwwUFx4MDFcMFwwXHg4Mlx4
MDFceDg0XHgwMVx4YTlceGZmXDBcMGRceGZmXHg4NVx4MDFceGI3XHhmZlx4YjdceGZmXHhiN1x4
ZmZceGI3XHhmZlwwXDBceDk1XHgwMVx4ZTdcMFx4OWZceDAxYlx4MDFceGEwXHgwMVx4YTFceDAx
XHhhNlx4MDFceGFhXHgwMVx4YWJceDAxYlx4MDJceGI3XHgwMVx4ZTZceGZmXHhjMVx4MDFcMFww
XDBcMFwwXDBcMFwwXDBcMFx4YzZceDAxXDBcMFx4MTJcMFx4ZTdcMFwwXDBcMFwwXDBcMFx4Yzdc
eDAxXDBcMFx4YzhceDAxXDBcMFwwXDBceDgwXHgwMVwwXDBcMFwwXDBcMFwwXDBceGNmXHgwMVww
XDBcMFwwXDBcMFwwXDBceGFkXHhmZlwwXDBcMFwwXDBcMFwwXDBSXDBSXDBSXDBSXDBcMFwwXHhk
MFx4MDFceGQxXHgwMVx4ZTFceDAxXHhlYlx4MDFcMFwwXDBcMDxceDAyXHhlY1x4MDFceGFlXHgw
Mlx4YWVceDAyXHhlZFx4MDFceGVlXHgwMVwwXDBcMFwwUlwwUlwwUlwwUlwwXDBcMFx4ZjZceDAx
XHhmNFx4MDFceGY3XHgwMVwwXDBcMFwwXHhiN1x4ZmZ9XHgwM1xiXHgwMlwwXDBceDExXHgwMlx4
YmJceGZmXHhiZlwwXHhlZFx4ZmZceGVhXDBceGVhXDBcMFwwXDBcMFwwXDBcMFwwXDBcMDxceDAy
XHhhM1x4MDNcMFwwXDBcMFx4YWVceDAyXDBcMFwwXDBcMFwwXDBcMGJceDAyXDBcMFx4YzdcMFx4
MTJceDAyXHhjN1wwXHgxM1x4MDJiXHgwMlx4YzlceDAzXHhlM1wwXDBcMFx4MTRceDAyXHgxYVx4
MDJceDFjXHgwMlx4MWRceDAyLVx4MDI3XHgwMlwwXDBcMFx4MDA0XHgwMlwwXDBceGM3XDBcMFx4
MDA5XHgwMjpceDAyYlx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwUlwwXDBcMFwwXDBc
eDE3XHgwMkBceDAyXDBceDAwNVx4MDJDXHgwMmJceDAyTFx4MDJdXHgwMmJceDAyXDBcMF5ceDAy
XDBcMCcsCi0gIC8qIHJpbmRleCAqLyJcMFwwTVx4MDNcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFx4MDFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBPXHhmZlx4MTRcMFwwXDB3
XDB3XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMHdcMFx4YzJceGZmXDBcMFwwXDBc
MFwwXDBcMF9ceDAyYFx4MDJmXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBoXHgwMlww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMF9ceDAyX1x4MDJfXHgwMl9ceDAyX1x4
MDJfXHgwMl9ceDAyX1x4MDJfXHgwMl9ceDAyXDBcMFwwXDBcMFwwaFx4MDJcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwaFx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMH5ceDAx
XDBcMFwwXDBceGYyXHhmZmhceGZmXDBcMClceGZmXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGlceDAy
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODNceGZmXDBcMFwwXDBcMFwweVx4MDJrXHgw
MlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcME1cMFx4MTZc
MFwwXDBNXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFx4OWFc
MFx4OWFcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGlceDAydFx4ZmZcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBpXHgwMlx4ODNceDAyXDBcMFx4ODNceDAyXDBcMFwwXDBcMFww
XDBcMGlceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwc1wwXHhmM1x4ZmZzXDBpXHgwMlx4ODRc
eDAyXDBcMHlceDAyXHhjMFwwXDBcMFwwXDBceDhlXHgwMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFx4ODZceDAyXHg4Nlx4MDJceDg2XHgwMlwwXDBcMFwwXDBcMFx4YTRceDAx
WFx4MDFceGE0XHgwMVwwXDBcMFwwXHhjMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBceGU2XDBceGU2XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4MDJcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMGlceDAyXDBcMFx4ZjdceGZmXDBcMFww
XDBcMFwwXDBcMFwwXDBceGNhXHgwMVx4ODlceDAyXHhjYVx4MDFcMFwwXHg4NFx4MDJcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFxmXHgwMVwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDB0XHhmZlww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDg2XHgwMlx4ODZceDAyXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDA8XDBceGYyXHhmZlx4OTVceDAyXHg5NVx4
MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwaVx4MDJcMFwwaVx4MDJpXHgwMlwwXDBcMFww
XDBcMFwwXHgwMDJceDAxMlx4MDFceGYwXHgwMTJceDAxXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
eVx4MDJcMFwwXDBcMFwwXDBcMFwwXDBcMFx4ODNceDAyXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBpXHgwMlwwXDBcMFwwXDBcMGlceDAyXDBcMFwwXDBcMFwwXDBcMFx4OGFceDAyXDBc
MFx4ODNceDAyXDBcMFx4ODNceDAyXDBcMGlceDAyXDBcMFx4YWZceGZmXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDgzXHgwMlwwXDBcMFwwXDBcMGlceDAyXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDAwMlx4MDFcMFwwXDBcMFx4OGZceDAyXDBcMFwwXDBc
MFwwXHg5Zlx4MDJpXHgwMlwwXDBcMFwwaVx4MDJcMFwwXDBcMFwwXDAiLAotICAvKiBnaW5kZXgg
Ki8iXDBcMFwwXDBcMFwwXDBcMHhceGZmRFx4ZmZceGE1XHgwMlFceGZmLlx4MDNGXHhmZlx4YTdc
eGZmR1x4ZmZIXHhmZjNceGZmTFx4ZmZceGJjXHhmZlxuXHgwM1BceGZmXHhiMlx4ZmZceDgwXHhm
Zlx4YmRceGZlXGZceDAzXHhjNFx4MDJcMFwwXHg4Mlx4ZmZcMFwwXHhhNlx4ZmZWXHhmZk5ceGZm
XDBcMFx4YThceDAyXDBcMEJceGZmUlx4ZmZceGNhXHhmZVwwXDBceGNhXHhmZlx4YjVceGZmXDBc
MFwwXHgwMDJceDAzXDBcMFwwXDBcMFwwXDBcMFwwXDBceGUzXHhmZlwwXDBcMFwwXDBcMFwwXDBc
eGFjXDB0XDBceDk2XDBceGJlXDBceGYwXHhmZlwwXDBceGJjXHgwM1wwXDAhXDBcMFwwIiwKLSAg
LyogdGFibGVzaXplICovMTMzNSwKLSAgLyogdGFibGUgKi8nXHg4NlwwXHhhM1wwXHg4YlwwXHhm
OVwwXHg4YlwwXHgwMlx4MDFceGY3XDBceGQ5XDBceGZjXDBcMFx4MDFceDFlXHgwMVx4Y2ZcMFx4
ODdcMFx4ODhcMFx4ZmRcMFx4OGRcMFx4MTNceDAxXHgwZlx4MDFceDA1XHgwMVx4OGZcMFx4ODNc
MFx4MDRceDAxXGJceDAxXHRceDAxXHg4YVwwXHhjZlwwXHg4ZVwwXHhlNlwwXHgwNVx4MDFceGU3
XDBceDFjXHgwMVx4MWNceDAxXHgwNVwwXHgxN1x4MDFceDE4XHgwMSpceDAxLFx4MDEtXHgwMVx4
ODlceDAxXHg4YVx4MDFceDhiXHgwMSNceDAxXHgxOVwwIVwwXHg4M1x4MDFceDg0XHgwMVx4MTJc
MCRceDAxXHg4YlwwJVx4MDFceDE5XDAmXHgwMVx4OGJcMFRcMG5cMFx4MGZcMFx4MTVcMFx4MTZc
eDAwNVx4MDFVXHgwMDNceDAxNFx4MDF2XDBceGQxXDAiXDBceGU0XDBceGU0XDBceGQ4XDBceGU0
XDBceGUyXDBceGUzXDBEXDBceDE1XDBceDE2XDBDXHgwMVx4MTBceDAxXHgxMVx4MDFceDEyXHgw
MTpceDAxXHg5Ylx4MDFceDFmXHgwMVx4YzVcMFx4YzhcMFx4OTFcMFx4MTJcMEtceDAxXHgwNVx4
MDFceGQ1XDBceDkxXDBceDkxXDBceGU4XDBceGU5XDBceGVhXDBceGViXDBceGVjXDB8XDBceGVk
XDBceGVlXDBceGVmXDBceGYwXDBceGYxXDB9XDBKXHgwMVx4YWZceDAxTFx4MDFceDE5XDBceGM2
XDBceGNhXDAjXDBfXHgwMSRcMFx4MTlcMFx4ZDdcMFx4MTlcMFx4ZTRcMFx4ZTRcMFx4ZTRcMFx4
MTRceDAxXG5ceDAxXHgxMVwwXHhjZlwwLlwwXHhjZlwwXCdcMFx4MGJceDAxXHhjZlwwUFwwZ1x4
MDFtXHgwMW9ceDAxUFwwfFwwflwwUFwwK1x4MDExXDAuXHgwMSBceDAxflwwKlwwK1wwLFwwLVww
VVx4MDFceDgxXHgwMDJcMFBceDAxXHgxMlwwXHg4MlwwVlx4MDFGXDBXXHgwMVx4ODlcMFhceDAx
KFx4MDFceDEzXDBceDE0XDBceDE1XDBceDE2XDBceDE3XDBceDE4XDBceDE5XDBceDFhXDBceDFi
XDBceDFjXDBceDFkXDBceDFlXDBceDFmXDAgXDAmXDBMXDAoXDApXDB8XDBceDk5XHgwMTdcMEdc
MHxcMFx4ODBceDAxVFx4MDE4XHgwMDVceDAwNlwwdlx4MDFceDgxXDBPXDBceDE0XHgwMWtcMFx4
ODJcMEVcMFx4OTVceDAxfFwwbFwwXHg5OFx4MDFceDhmXHgwMVx4MWNceDAxXHg5Nlx4MDFceDk0
XHgwMVx4OTFcMDxceDAxPVx4MDF3XHgwMVx4OTdceDAxflwwXHg5MVwwSFwwXHgxYVx4MDFceDg0
XDBceGUyXDBceGUzXDBceDlkXHgwMVx4OWFceDAxXHg5Zlx4MDFceDAxXDBceDAyXDBceDAzXDBc
eDljXHgwMS9ceDAwMFx4MDAzXHgwMDRcMElcMFx4YTFceDAxWlx4MDFbXHgwMVxcXHgwMV1ceDAx
blx4MDFceGFiXHgwMWFcMGJcMGNcMGRcMGVcMGZcMGdcMGhcMGlcMGpcMFx4YzJcMFx4YWVceDAx
dFx4MDFceGMzXDBceGMyXDBpXHgwMVx4Y2ZcMFx4MDdceDAxalx4MDFceDE5XDBceDFjXDBKXDBc
eDE5XDBceDFjXDBLXDBceDBmXDBQXDBceGI0XHgwMVx4MGZcMFFcMFx4YjdceDAxXHhjZlwwXHhl
MlwwXHhlM1wweFx4MDF5XHgwMXpceDAxe1x4MDFceGEzXDBceDkzXDBceDk0XDBceDk1XDBceDg3
XHgwMVx4ODdceDAxXHg4N1x4MDFceDg3XHgwMVx4Y2ZcMFx4ZGVcMDxceDAxPVx4MDF+XDApXHgw
MVJcMFx4OTJceDAxbVwwXHgxY1wwXHg5MVwwXHg5MVwwXHgxY1wwU1wwXHgxY1wwXHgxY1wwXHgx
Y1wwXHgxY1wwXHgxY1x4MDA4XDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBc
eDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFjXDBceDFj
XDBvXDBceGEzXHgwMVx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4
MWNcMHBcMFdcMFhcMFlcMFx4MTlcMFx4MTlcMHFcMFpcMHJcMFtcMFxcXDBdXDBeXDBzXDBfXDBg
XDBceDg3XHgwMXRcMFx4MWNcMHVcMHdcMFx4MWNcMH5cMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNc
MFx4MWNcMHhcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNc
MFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMHlcMHpcMFx4
MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMHtcMFx4MWNcMFx4
OTBcMFx4OTFcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4YmZcMFx4MWNcMFx4OTJc
MFx4YmVcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4
MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4YzBcMFx4MWNcMFx4MWNc
MFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4MWNcMFx4ODRcMFx4ZGFcMFx4
YzdcMFx4ODlcMFx4ZDRcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMFx4ZGJcMCBcMCBcMCBcMCBcMCBc
MCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMCBcMFx4MWNcMCBcMCBcMCBcMCBcMCBcMCBc
MCBcMCBcMCBcMFx4ZGRcMFx4ZjJcMFx4ZmFcMFx4ZmVcMFx4MTdcMFx4MTdcMFx4MTdcMFx4MTdc
MFx4MTdcMFx4MTdcMFx4MTdcMFx4MDFceDAxXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1ww
XHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgxN1wwXHgx
N1wwXHgxN1wwXHgwM1x4MDEgXDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBceDE3XDBc
eDE3XDBceDE3XDBcblx4MDFceGY4XDApXHgwMVx4MTZceDAxIlwwIlwwIlwwIlwwIlwwIlwwIlww
XHgxOVx4MDEiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDAiXDBc
eDFiXHgwMVx4MTdcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCJcMCFceDAxL1x4MDFcJ1x4MDEwXHgw
MVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNceDAwNlx4MDFceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXHgwMDlceDAxIlwwXHgwM1wwXHgwM1wwXHgw
M1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwO1x4MDE+XHgwMT9ceDAxQFx4MDFceDFl
XDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBceDFlXDBBXHgwMVx4MWVcMFx4MWVcMFx4
MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVc
MFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMEJceDAxXHgwM1wwXHgxZVwwXHgxZVwwXHgxZVwwXHgx
ZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgwNFx4MDFEXHgwMUVceDAxRlx4MDFceDAzXDBc
eDBiXHgwMVx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMGFceDAxXHgwM1wwXHgwM1wwXHgw
M1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1ww
XHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwR1x4MDFceDFlXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBJXHgwMU1ceDAxT1x4MDFRXHgwMVx4MTlcMFx4MTlc
MFx4MTlcMFx4MTlcMFx4MTlcMFJceDAxXHgxOVwwU1x4MDFZXHgwMVx4MTlcMFx4MTlcMFx4MTlc
MFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4MTlcMFx4
MTlcMFx4MTlcMFx4MTlcMF5ceDAxXHgwM1wwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVwwXHgxOVww
XHgxOVwwXHgxOVwwXHgxOVwwYFx4MDFiXHgwMWNceDAxZFx4MDFceDAzXDBlXHgwMVx4MDNcMFx4
MDNcMFx4MDNcMFx4MDNcMFx4MDNcMHJceDAxZlx4MDFceDAzXDBceDAzXDBceDAzXDBceDAzXDBc
eDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDAzXDBoXHgwMVx4MTlcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4MDNcMFx4
MDNcMFx4MDNcMGtceDAxbFx4MDFwXHgwMXFceDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgw
M1wwc1x4MDFceDAzXDB8XHgwMX1ceDAxXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgw
M1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1wwXHgwM1ww
flx4MDFceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAzXDBceDAz
XDBceDdmXHgwMVx4ODFceDAxXHg4NVx4MDFceDg2XHgwMVx4MWVcMFx4OGRceDAxXHgxZVwwXHgx
ZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHg4Y1x4MDFceDhlXHgwMVx4MWVcMFx4MWVcMFx4MWVcMFx4
MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVcMFx4MWVc
MFx4MWVcMFx4MWVcMFx4OTFceDAxXHgwM1wwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVwwXHgxZVww
XHgxZVwwXHgxZVwwXHgxZVwwXHg5M1x4MDFceDllXHgwMVx4YTBceDAxXHhhNFx4MDFceDk3XDBc
eGIwXHgwMVx4OThcMFx4OTlcMFx4OWFcMFx4YTVceDAxXHg5YlwwXHhhNlx4MDFceGE3XHgwMVx4
OWNcMFx4OWRcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVc
MFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFx4YThceDAxXHgxZVwwXHhhYlwwXHhhY1ww
XHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXHhhOVx4MDFceGFhXHgwMVx4YWNc
eDAxXHhhZFx4MDFceGY2XDBceGIyXHgwMVx4OThcMFx4OTlcMFx4OWFcMFx4YjFceDAxXHg5Ylww
XHhiM1x4MDFceGEzXDBceDljXDBceDlkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBc
eGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBceGI1XHgwMVx4
YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4YjJcMFx4YjZc
eDAxXHhiOFx4MDFceDg0XDBceGEzXDBceGY4XDB+XDBceDk4XDBceDk5XDBceDlhXDBceDkxXDBc
eDliXDBceGFhXDBQXDBceDljXDBceDlkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBc
eGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBceDE3XDBceGIz
XDBceGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcdFwwUlww
XHg3ZlwwXHgwM1wwXHhmYlwwXHgwM1wwXHg5OFwwXHg5OVwwXHg5YVwwXHgxOVwwXHg5YlwwUFww
S1wwXHg5Y1wwXHg5ZFwwXHg5ZVwwXHg5ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFww
XHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhhYVwwTVwwXHhiM1wwXHhhYlwwXHhhY1ww
XHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwSFx4MDFceGMxXDBceGY1XDBceGY0
XDBceDgyXHgwMThceDAxXHg5OFwwXHg5OVwwXHg5YVwwTlx4MDFceDliXDBceDBlXDBceGQ2XDBc
eDljXDBceDlkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1
XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhh
ZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XHg5OFwwXHg5OVwwXHhjYlwwXDBcMFx4Y2NcMFwwXDBcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5
ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFww
XHhhOVwwXHhhYVwwXDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBc
MFx4YjFcMFx4YjJcMFwwXDBcMFwwXHhkZVwwXHhkZlwwXHhlMFwwXHhlMVwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFx4ZTJcMFx4ZTNcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXHg5OFwwXHg5OVwwXHhjYlwwXDBcMFx4Y2NcMFwwXDBceGIzXDBceDljXDBceGNkXDBceDll
XDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1XDBceGE2XDBceGE3XDBc
eGE4XDBceGE5XDBceGFhXDBcMFwwXDBcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4
YjBcMFx4YjFcMFx4YjJcMFwwXDBcMFwwXHhkZVwwXHhkZlwwXHhlMFwwXHhlMVwwXHg5OFwwXHg5
OVwwXHhjYlwwXDBcMFx4Y2NcMFwwXDBcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5ZlwwXHhhMFww
XHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXHhhOVwwXHhh
YVwwXDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBcMFx4YjFcMFx4
YjJcMFwwXDBcMFwwXDBcMFx4ZGZcMFx4ZTBcMFx4ZTFcMFx4OThcMFx4OTlcMFx4Y2JcMFwwXDBc
eGNjXDBcMFwwXDBcMFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFcMFx4YTJcMFx4
YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFwwXDBceGIzXDBc
eGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXHg5MFx4MDFceGNlXDBc
eDljXDBceGNkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBceGE1
XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1wwXHhh
ZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XHg5OFwwXHg5OVwwXHhjYlwwXDBcMFx4Y2NcMFwwXDBcMFwwXHg5Y1wwXHhjZFwwXHg5ZVwwXHg5
ZlwwXHhhMFwwXHhhMVwwXHhhMlwwXHhhM1wwXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFww
XHhhOVwwXHhhYVwwXDBcMFx4YjNcMFx4YWJcMFx4YWNcMFx4YWRcMFx4YWVcMFx4YWZcMFx4YjBc
MFx4YjFcMFx4YjJcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXHhlMVwwXHg5OFwwXHg5OVwwXHhjYlww
XDBcMFx4Y2NcMFx4YTJceDAxXDBcMFx4OWNcMFx4Y2RcMFx4OWVcMFx4OWZcMFx4YTBcMFx4YTFc
MFx4YTJcMFx4YTNcMFx4YTRcMFx4YTVcMFx4YTZcMFx4YTdcMFx4YThcMFx4YTlcMFx4YWFcMFww
XDBceGIzXDBceGFiXDBceGFjXDBceGFkXDBceGFlXDBceGFmXDBceGIwXDBceGIxXDBceGIyXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceDk4XDBceDk5XDBceGNiXDBcMFwwXHhjY1wwXDBcMFww
XDBceDljXDBceGNkXDBceDllXDBceDlmXDBceGEwXDBceGExXDBceGEyXDBceGEzXDBceGE0XDBc
eGE1XDBceGE2XDBceGE3XDBceGE4XDBceGE5XDBceGFhXDBcMFwwXHhiM1wwXHhhYlwwXHhhY1ww
XHhhZFwwXHhhZVwwXHhhZlwwXHhiMFwwXHhiMVwwXHhiMlwwXDBcMFwwXDBcMFwwXDBcMFwwXDBc
MFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFww
XDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBcMFwwXDBceGIzXDAnLAotICAvKiBjaGVj
ayAqLyJZXDBcMFwwXFxcMFx4YjVcMF5cMFx4YmZcMFx4YjRcMFx4OGZcMFx4YmNcMFx4YmRcMFx4
ZDdcMFx4ODlcMFpcMFtcMFx4YmNcMF1cMFx4Y2VcMFx4Y2FcMFx4YzRcMF5cMFhcMFxiXHgwMVx4
YzVcMFx4YzZcMFxcXDBceDk3XDBeXDBceDliXDBceGNlXDBceDlkXDBceGQ2XDBceGQ3XDBcdFx4
MDFceGQxXDBceGQyXDBceGRmXDBceGUwXDBceGUxXDBpXHgwMWpceDAxa1x4MDErXHgwMVx4MDFc
eDAxXG5cMGJceDAxY1x4MDEyXHgwMTFceDAxXHg4YVx4MDAzXHgwMVx0XHgwMTVceDAxXHg4ZVww
XHgwNFx4MDFGXDBcdFx4MDE8XHgwMT1ceDAxXHhlYVwwXG5ceDAxXHhlNlwwXHhlN1wwTlwwXHg4
YVwwXDBcMFx4OWFcMFx4OWJcMFx4OGVcMFx4OWRceDAwOFx4MDE5XHgwMSZcMDxceDAxPVx4MDFc
Ylx4MDFceGNiXDBceGNjXDBceGNkXDBceGZjXDBceDg1XHgwMVx4ZDhcMFx4ODdcMFx4ODhcMFx4
MDRceDAxMlx4MDFceDExXHgwMVxiXHgwMVx4OGRcMFx0XHgwMVxuXHgwMVx4OWVcMFx4OWZcMFx4
YTBcMFx4YTFcMFx4YTJcMFx4MDRceDAxXHhhNFwwXHhhNVwwXHhhNlwwXHhhN1wwXHhhOFwwXG5c
eDAxXHgxMFx4MDFceGFhXHgwMVx4MTJceDAxXHgwMVx4MDFceDg3XDBceDg4XDBcMFwwKVx4MDFc
eDA1XHgwMVx4MDdceDAxXHg4ZFwwXHRceDAxXHhjYlwwXHhjY1wwXHhjZFwwXHhjZlwwXHgwMVx4
MDFceDAzXDBceGY2XDBcdFx4MDFceGY4XDBceDA0XHgwMVx4MDdceDAxXHhmYlwwXG5ceDAxMVx4
MDE8XHgwMT1ceDAxXHgwZVx4MDFceDA0XHgwMVx4MDFceDAxXHgxMVx4MDFceGRmXDBcdFx4MDFc
eGUxXDBcblx4MDFceDA3XHgwMVx4MTdcMFx4MThcMFx4MTlcMFx4MWFcMCtceDAxXHgwMVx4MDFc
eDFkXDBceDFhXHgwMTJceDAxXHgwNVx4MDExXHgwMVx4MDRceDAxM1x4MDFcdFx4MDE1XHgwMVx4
ZGVcMDpceDAxO1x4MDE8XHgwMT1ceDAxPlx4MDE/XHgwMUBceDAxQVx4MDFCXHgwMUNceDAxRFx4
MDFFXHgwMUZceDAxR1x4MDFceDEzXDBcdFx4MDFceDE1XDBceDE2XDBceDA0XHgwMXtceDAxXHgw
NFx4MDFceDA0XHgwMVx4MDRceDAxYFx4MDFcblx4MDFcdFx4MDFceDFmXDAgXDBcblx4MDFceDAx
XHgwMVxuXHgwMVx4MTRceDAxXG5ceDAxXHgwNVx4MDEnXDB4XHgwMVx4MDRceDAxXG5ceDAxelx4
MDFyXHgwMXtceDAxeFx4MDFcblx4MDFceDA0XHgwMS5ceDAxL1x4MDFRXHgwMXlceDAxXHgwNVx4
MDFcblx4MDFceDA0XHgwMTZceDAxXHRceDAxOFx4MDE5XHgwMVx4OGNceDAxXHg4MVx4MDFceDhl
XHgwMVx4MDFcMFx4MDJcMFx4MDNcMFx4OGFceDAxXHgxYlwwXHgxY1wwXHgxZFwwXHgxZVwwXHgw
NFx4MDFceDkwXHgwMSNceDAxJFx4MDElXHgwMSZceDAxPFx4MDFceDllXHgwMTlcMDpcMDtcMDxc
MD1cMD5cMD9cMEBcMEFcMEJcMFx4MDZceDAxXHhhMlx4MDFLXHgwMVx0XHgwMVx4MDZceDAxXHgw
ZVx4MDFzXHgwMVx0XHgwMVx4MTFceDAxXHgwNlx4MDFceDA2XHgwMVx4MDRceDAxXHRceDAxXHRc
eDAxXHgwNFx4MDFceDA3XHgwMVx4MDRceDAxXHhiMlx4MDFcblx4MDFceDA0XHgwMVx4YjVceDAx
XHg4Mlx4MDE4XHgwMTlceDAxVVx4MDFWXHgwMVdceDAxWFx4MDFcblx4MDFceDAxXHgwMVx4MDJc
eDAxXHgwM1x4MDFoXHgwMWlceDAxalx4MDFrXHgwMVx4OTFceDAxLVx4MDEuXHgwMS9ceDAxXHgw
NVx4MDFceDA2XHgwMVx4MDRceDAxdFx4MDFcblx4MDFceDA2XHgwMVx0XHgwMVxuXHgwMVx0XHgw
MVx4MDRceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxXHRceDAxXHgxMVx4
MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgw
MVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAx
IFx4MDFcblx4MDFceDkyXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4
MDFcblx4MDErXHgwMSxceDAxLVx4MDFcdFx4MDFcblx4MDFcblx4MDExXHgwMVxuXHgwMTNceDAx
NFx4MDE1XHgwMTZceDAxXG5ceDAxOFx4MDE5XHgwMVx4YWFceDAxI1x4MDFceDA2XHgwMVxuXHgw
MVxuXHgwMVx0XHgwMVx4MDVceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAx
XG5ceDAxSFx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4
MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgw
MVx4MWZceDAxIFx4MDFcblx4MDFcblx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEp
XHgwMSpceDAxXG5ceDAxXHgwNlx4MDFceDA0XHgwMVx4MDRceDAxXHRceDAxXG5ceDAxXHgwYlx4
MDFcZlx4MDFcclx4MDErXHgwMVx4MGZceDAxXG5ceDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4
MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgx
Ylx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgw
MSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHRceDAxXHgwNFx4MDFcdFx4MDFc
dFx4MDFcdFx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4
MDFcdFx4MDFceDExXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFc
eDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4
MWVceDAxXHgxZlx4MDEgXHgwMUhceDAxXCJceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShc
eDAxKVx4MDEqXHgwMVxuXHgwMSFceDAxXG5ceDAxXHRceDAxXHRceDAxXG5ceDAxXHgwYlx4MDFc
Zlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxXHRceDAxXHgxMVx4MDFceDEyXHgwMVx4MTNceDAx
XHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFc
eDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFIXHgwMSNc
eDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceDAxXHgwMVx0XHgwMVx4MDZc
eDAxXG5ceDAxXHRceDAxXG5ceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAx
XG5ceDAxXHgxMVx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgx
N1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFl
XHgwMVx4MWZceDAxIFx4MDFcdFx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgw
MSlceDAxKlx4MDFcdFx4MDFceDA0XHgwMVxuXHgwMVx4MDRceDAxXHRceDAxXG5ceDAxXHgwYlx4
MDFcZlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxXCJceDAxXHgxMVx4MDFceDEyXHgwMVx4MTNc
eDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4
MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFIXHgw
MSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFcblx4
MDFcblx4MDFcdFx4MDFcblx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MGVceDAxXHgwZlx4MDFc
eDA2XHgwMVx4MTFceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4
MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgx
ZVx4MDFceDFmXHgwMSBceDAxXG5ceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4
MDEpXHgwMSpceDAxXGJceDAxXG5ceDAxXHgwMVx4MDFcdFx4MDFcdFx4MDFceDA3XHgwMVx4MGJc
eDAxXGZceDAxXHJceDAxXHgwZVx4MDFceDBmXHgwMVx4MDZceDAxXHgxMVx4MDFceDEyXHgwMVx4
MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgx
YVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFcblx4MDFI
XHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFcblx4MDFcblx4MDFc
blx4MDE2XHgwMVx0XHgwMVxuXHgwMVx4MGJceDAxXGZceDAxXHJceDAxXG5ceDAxXHgwZlx4MDFc
blx4MDFcblx4MDFceDEyXHgwMVx4MTNceDAxXHgxNFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4
MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFiXHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgw
MVx4MWZceDAxIFx4MDFcblx4MDFIXHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlc
eDAxKlx4MDFcblx4MDFcblx4MDFcblx4MDFceDA2XHgwMVx0XHgwMVx4MDRceDAxXHgwYlx4MDFc
Zlx4MDFcclx4MDFceDBlXHgwMVx4MGZceDAxNFx4MDFcblx4MDFceDEyXHgwMVx4MTNceDAxXHgx
NFx4MDFceDE1XHgwMVx4MTZceDAxXHgxN1x4MDFceDE4XHgwMVx4MTlceDAxXHgxYVx4MDFceDFi
XHgwMVx4MWNceDAxXHgxZFx4MDFceDFlXHgwMVx4MWZceDAxIFx4MDFceDBlXHgwMUhceDAxI1x4
MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVx4MGVceDAxXG5ceDAxXG5ceDAx
XG5ceDAxXHRceDAxXG5ceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFcdFx4MDFceDBmXHgwMVxuXHgw
MVxuXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4
MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgx
Zlx4MDEgXHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEq
XHgwMVxuXHgwMVxuXHgwMVxuXHgwMVxuXHgwMVx0XHgwMVx4MDZceDAxXHgwYlx4MDFcZlx4MDFc
clx4MDFceDBlXHgwMVx4MGZceDAxXG5ceDAxXG5ceDAxXHgxMlx4MDFceDEzXHgwMVx4MTRceDAx
XHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFc
eDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHRceDAxSFx4MDEjXHgwMSRceDAx
JVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXG5ceDAxXG5ceDAxXG5ceDAxXG5ceDAxXHRc
eDAxXHRceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFcblx4MDFceDBmXHgwMVxuXHgwMVxuXHgwMVx4
MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgx
OVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgw
MVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgwMShceDAxKVx4MDEqXHgwMVxuXHgw
MVx4MGVceDAxXG5ceDAxXG5ceDAxXHRceDAxXHgxMVx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVxu
XHgwMVx4MGZceDAxXHRceDAxXDBcMFx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgx
Nlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFk
XHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4MTFceDAxSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgw
MSdceDAxKFx4MDEpXHgwMSpceDAxXG5ceDAxXG5ceDAxXG5ceDAxXG5ceDAxXHRceDAxXHgwMVx4
MDFceDBiXHgwMVxmXHgwMVxyXHgwMVxuXHgwMVx4MGZceDAxXG5ceDAxXG5ceDAxXHgxMlx4MDFc
eDEzXHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4
MWFceDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXG5ceDAx
SFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXG5ceDAxXG5ceDAx
XHgwMVx4MDFcblx4MDFcdFx4MDFcdFx4MDFceDBiXHgwMVxmXHgwMVxyXHgwMVx4MDFceDAxXHgw
Zlx4MDFceDBlXHgwMVxuXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4
MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgw
MVx4MWVceDAxXHgxZlx4MDEgXHgwMVxuXHgwMUhceDAxI1x4MDEkXHgwMSVceDAxJlx4MDEnXHgw
MShceDAxKVx4MDEqXHgwMVx4MGVceDAxXHg4NlwwXHhhYlwwXHhhYVwwXHRceDAxXHhmNFwwXHgw
Ylx4MDFcZlx4MDFcclx4MDFceDE0XHgwMVx4MGZceDAxXHgwMlwwXHg4ZFwwXHgxMlx4MDFceDEz
XHgwMVx4MTRceDAxXHgxNVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFc
eDAxXHgxYlx4MDFceDFjXHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZI
XHgwMSNceDAxJFx4MDElXHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceDBiXHgwMVxmXHgwMVxyXHgwMVx4
ZmZceGZmXHgwZlx4MDFceGZmXHhmZlx4ZmZceGZmXHgxMlx4MDFceDEzXHgwMVx4MTRceDAxXHgx
NVx4MDFceDE2XHgwMVx4MTdceDAxXHgxOFx4MDFceDE5XHgwMVx4MWFceDAxXHgxYlx4MDFceDFj
XHgwMVx4MWRceDAxXHgxZVx4MDFceDFmXHgwMSBceDAxXHhmZlx4ZmZIXHgwMSNceDAxJFx4MDEl
XHgwMSZceDAxJ1x4MDEoXHgwMSlceDAxKlx4MDFceGZmXHhmZlx4ZmZceGZmLVx4MDEuXHgwMS9c
eDAxMFx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZjhceDAxOVx4MDFceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwYlx4MDFcZlx4MDFcclx4MDFceGZmXHhmZlx4MGZc
eDAxXHhmZlx4ZmZIXHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFc
eDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4
MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZceGZmXHhmZlx4ZmYjXHgwMSRceDAxJVx4MDEmXHgwMSdc
eDAxKFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZceGZmXHhmZi1ceDAxLlx4MDEvXHgwMTBceDAxXHgw
Ylx4MDFcZlx4MDFcclx4MDFceGZmXHhmZlx4MGZceDAxXHhmZlx4ZmZceGZmXHhmZlx4MTJceDAx
XHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFc
eDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZc
eGZmSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmLlx4MDEvXHgwMTBceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFceGZmXHhm
Zlx4MGZceDAxXHhmZlx4ZmZceGZmXHhmZlx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAx
XHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFc
eDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZceGZmSFx4MDEjXHgwMSRceDAxJVx4MDEm
XHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHgwYlx4MDFcZlx4MDFcclx4MDFceGZmXHhmZlx4MGZceDAxXHgxMFx4
MDE3XHgwMVx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4
MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgx
Zlx4MDEgXHgwMVx4ZmZceGZmSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgw
MSpceDAxXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgw
Ylx4MDFcZlx4MDFcclx4MDFceGZmXHhmZlx4MGZceDAxXHhmZlx4ZmZceGZmXHhmZlx4MTJceDAx
XHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFc
eDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZc
eGZmSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZjBceDAxXHgwYlx4MDFcZlx4MDFcclx4MDFc
eGZmXHhmZlx4MGZceDAxXHgxMFx4MDFceGZmXHhmZlx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4
MTVceDAxXHgxNlx4MDFceDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgx
Y1x4MDFceDFkXHgwMVx4MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZceGZmSFx4MDEjXHgwMSRceDAx
JVx4MDEmXHgwMSdceDAxKFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHgwYlx4MDFcZlx4MDFcclx4MDFceGZmXHhmZlx4MGZceDAx
XHhmZlx4ZmZceGZmXHhmZlx4MTJceDAxXHgxM1x4MDFceDE0XHgwMVx4MTVceDAxXHgxNlx4MDFc
eDE3XHgwMVx4MThceDAxXHgxOVx4MDFceDFhXHgwMVx4MWJceDAxXHgxY1x4MDFceDFkXHgwMVx4
MWVceDAxXHgxZlx4MDEgXHgwMVx4ZmZceGZmSFx4MDEjXHgwMSRceDAxJVx4MDEmXHgwMSdceDAx
KFx4MDEpXHgwMSpceDAxXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhm
Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZc
eGZmXHhmZlx4ZmZceGZmXHhmZkhceDAxIiwKLSAgLyogZXJyb3JfZnVuY3Rpb24gKi9wYXJzZV9l
cnJvciwKLSAgLyogbmFtZXNfY29uc3QgKi8iRlVOQ1JFRlwwTVVUXDBMUEFSXDBSUEFSXDBOT1Bc
MERST1BcMEJMT0NLXDBFTkRcMElGXDBUSEVOXDBFTFNFXDBTRUxFQ1RcMExPT1BcMEJSXDBCUl9J
RlwwQlJfVEFCTEVcMENBTExcMENBTExfSU5ESVJFQ1RcMFJFVFVSTlwwR0VUX0xPQ0FMXDBTRVRf
TE9DQUxcMFRFRV9MT0NBTFwwR0VUX0dMT0JBTFwwU0VUX0dMT0JBTFwwVU5SRUFDSEFCTEVcMENV
UlJFTlRfTUVNT1JZXDBHUk9XX01FTU9SWVwwRlVOQ1wwU1RBUlRcMFRZUEVcMFBBUkFNXDBSRVNV
TFRcMExPQ0FMXDBHTE9CQUxcME1PRFVMRVwwVEFCTEVcMEVMRU1cME1FTU9SWVwwREFUQVwwT0ZG
U0VUXDBJTVBPUlRcMEVYUE9SVFwwU0NSSVBUXDBSRUdJU1RFUlwwSU5WT0tFXDBHRVRcMEFTU0VS
VF9NQUxGT1JNRURcMEFTU0VSVF9JTlZBTElEXDBBU1NFUlRfU09GVF9JTlZBTElEXDBBU1NFUlRf
VU5MSU5LQUJMRVwwQVNTRVJUX1JFVFVSTlwwQVNTRVJUX1JFVFVSTl9OQU5cMEFTU0VSVF9UUkFQ
XDBBU1NFUlRfRVhIQVVTVElPTlwwSU5QVVRcME9VVFBVVFwwRU9GXDAiLAotICAvKiBuYW1lc19i
bG9jayAqLyJOQVRcMElOVFwwRkxPQVRcMFRFWFRcMFZBUlwwVkFMVUVfVFlQRVwwTE9BRFwwU1RP
UkVcME9GRlNFVF9FUV9OQVRcMEFMSUdOX0VRX05BVFwwQ09OU1RcMFVOQVJZXDBCSU5BUllcMENP
TVBBUkVcMENPTlZFUlRcMFRFU1RcMCIKLV07Ci0KLWZ1bmN0aW9uIHNjcmlwdChsZXhmdW4sIGxl
eGJ1ZikgewotICByZXR1cm4gUGFyc2luZy55eXBhcnNlKHl5dGFibGVzLCAxLCBsZXhmdW4sIGxl
eGJ1Zik7Ci19Ci0KLWZ1bmN0aW9uIHNjcmlwdDEobGV4ZnVuLCBsZXhidWYpIHsKLSAgcmV0dXJu
IFBhcnNpbmcueXlwYXJzZSh5eXRhYmxlcywgMiwgbGV4ZnVuLCBsZXhidWYpOwotfQotCi1mdW5j
dGlvbiBtb2R1bGUxKGxleGZ1biwgbGV4YnVmKSB7Ci0gIHJldHVybiBQYXJzaW5nLnl5cGFyc2Uo
eXl0YWJsZXMsIDMsIGxleGZ1biwgbGV4YnVmKTsKLX0KLQotZXhwb3J0cy5zY3JpcHQgID0gc2Ny
aXB0OwotZXhwb3J0cy5zY3JpcHQxID0gc2NyaXB0MTsKLWV4cG9ydHMubW9kdWxlMSA9IG1vZHVs
ZTE7Ci0vKiBWYXJNYXAgTm90IGEgcHVyZSBtb2R1bGUgKi8KLS8vLy8vLy8vIGVuZCBvZiBwYXJz
ZXIuanMgLy8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3Ry
eVsncGFyc2luZyddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8vLy8v
Ly8vIHN0YXJ0IG9mIHBhcnNpbmcuanMgLy8vLy8vLy8KLSd1c2Ugc3RyaWN0JzsKLQotdmFyICQk
QXJyYXkgICAgICAgICA9IHJlcXVpcmUoIi4vYXJyYXkiKTsKLXZhciBDdXJyeSAgICAgICAgICAg
PSByZXF1aXJlKCIuL2N1cnJ5Iik7Ci12YXIgTGV4aW5nICAgICAgICAgID0gcmVxdWlyZSgiLi9s
ZXhpbmciKTsKLXZhciBDYW1sX29iaiAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfb2JqIik7Ci12
YXIgQ2FtbF9hcnJheSAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2FycmF5Iik7Ci12YXIgQ2FtbF9w
YXJzZXIgICAgID0gcmVxdWlyZSgiLi9jYW1sX3BhcnNlciIpOwotdmFyIENhbWxfZXhjZXB0aW9u
cyA9IHJlcXVpcmUoIi4vY2FtbF9leGNlcHRpb25zIik7Ci0KLXZhciBZWWV4aXQgPSBDYW1sX2V4
Y2VwdGlvbnMuY3JlYXRlKCJQYXJzaW5nLllZZXhpdCIpOwotCi12YXIgUGFyc2VfZXJyb3IgPSBD
YW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJQYXJzaW5nLlBhcnNlX2Vycm9yIik7Ci0KLXZhciBlbnYg
PSAvKiByZWNvcmQgKi9bCi0gIC8qIHNfc3RhY2sgKi9DYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0
KDEwMCwgMCksCi0gIC8qIHZfc3RhY2sgKi9DYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KDEwMCwg
LyogKCkgKi8wKSwKLSAgLyogc3ltYl9zdGFydF9zdGFjayAqL0NhbWxfYXJyYXkuY2FtbF9tYWtl
X3ZlY3QoMTAwLCBMZXhpbmcuZHVtbXlfcG9zKSwKLSAgLyogc3ltYl9lbmRfc3RhY2sgKi9DYW1s
X2FycmF5LmNhbWxfbWFrZV92ZWN0KDEwMCwgTGV4aW5nLmR1bW15X3BvcyksCi0gIC8qIHN0YWNr
c2l6ZSAqLzEwMCwKLSAgLyogc3RhY2tiYXNlICovMCwKLSAgLyogY3Vycl9jaGFyICovMCwKLSAg
LyogbHZhbCA6ICgpICovMCwKLSAgLyogc3ltYl9zdGFydCAqL0xleGluZy5kdW1teV9wb3MsCi0g
IC8qIHN5bWJfZW5kICovTGV4aW5nLmR1bW15X3BvcywKLSAgLyogYXNwICovMCwKLSAgLyogcnVs
ZV9sZW4gKi8wLAotICAvKiBydWxlX251bWJlciAqLzAsCi0gIC8qIHNwICovMCwKLSAgLyogc3Rh
dGUgKi8wLAotICAvKiBlcnJmbGFnICovMAotXTsKLQotZnVuY3Rpb24gZ3Jvd19zdGFja3MoKSB7
Ci0gIHZhciBvbGRzaXplID0gZW52Wy8qIHN0YWNrc2l6ZSAqLzRdOwotICB2YXIgbmV3c2l6ZSA9
IChvbGRzaXplIDw8IDEpOwotICB2YXIgbmV3X3MgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0
KG5ld3NpemUsIDApOwotICB2YXIgbmV3X3YgPSBDYW1sX2FycmF5LmNhbWxfbWFrZV92ZWN0KG5l
d3NpemUsIC8qICgpICovMCk7Ci0gIHZhciBuZXdfc3RhcnQgPSBDYW1sX2FycmF5LmNhbWxfbWFr
ZV92ZWN0KG5ld3NpemUsIExleGluZy5kdW1teV9wb3MpOwotICB2YXIgbmV3X2VuZCA9IENhbWxf
YXJyYXkuY2FtbF9tYWtlX3ZlY3QobmV3c2l6ZSwgTGV4aW5nLmR1bW15X3Bvcyk7Ci0gICQkQXJy
YXkuYmxpdChlbnZbLyogc19zdGFjayAqLzBdLCAwLCBuZXdfcywgMCwgb2xkc2l6ZSk7Ci0gIGVu
dlsvKiBzX3N0YWNrICovMF0gPSBuZXdfczsKLSAgJCRBcnJheS5ibGl0KGVudlsvKiB2X3N0YWNr
ICovMV0sIDAsIG5ld192LCAwLCBvbGRzaXplKTsKLSAgZW52Wy8qIHZfc3RhY2sgKi8xXSA9IG5l
d192OwotICAkJEFycmF5LmJsaXQoZW52Wy8qIHN5bWJfc3RhcnRfc3RhY2sgKi8yXSwgMCwgbmV3
X3N0YXJ0LCAwLCBvbGRzaXplKTsKLSAgZW52Wy8qIHN5bWJfc3RhcnRfc3RhY2sgKi8yXSA9IG5l
d19zdGFydDsKLSAgJCRBcnJheS5ibGl0KGVudlsvKiBzeW1iX2VuZF9zdGFjayAqLzNdLCAwLCBu
ZXdfZW5kLCAwLCBvbGRzaXplKTsKLSAgZW52Wy8qIHN5bWJfZW5kX3N0YWNrICovM10gPSBuZXdf
ZW5kOwotICBlbnZbLyogc3RhY2tzaXplICovNF0gPSBuZXdzaXplOwotICByZXR1cm4gLyogKCkg
Ki8wOwotfQotCi1mdW5jdGlvbiBjbGVhcl9wYXJzZXIoKSB7Ci0gICQkQXJyYXkuZmlsbChlbnZb
Lyogdl9zdGFjayAqLzFdLCAwLCBlbnZbLyogc3RhY2tzaXplICovNF0sIC8qICgpICovMCk7Ci0g
IGVudlsvKiBsdmFsICovN10gPSAvKiAoKSAqLzA7Ci0gIHJldHVybiAvKiAoKSAqLzA7Ci19Ci0K
LXZhciBjdXJyZW50X2xvb2thaGVhZF9mdW4gPSBbZnVuY3Rpb24gKCkgewotICAgIHJldHVybiAv
KiBmYWxzZSAqLzA7Ci0gIH1dOwotCi1mdW5jdGlvbiB5eXBhcnNlKHRhYmxlcywgc3RhcnQsIGxl
eGVyLCBsZXhidWYpIHsKLSAgdmFyIGluaXRfYXNwID0gZW52Wy8qIGFzcCAqLzEwXTsKLSAgdmFy
IGluaXRfc3AgPSBlbnZbLyogc3AgKi8xM107Ci0gIHZhciBpbml0X3N0YWNrYmFzZSA9IGVudlsv
KiBzdGFja2Jhc2UgKi81XTsKLSAgdmFyIGluaXRfc3RhdGUgPSBlbnZbLyogc3RhdGUgKi8xNF07
Ci0gIHZhciBpbml0X2N1cnJfY2hhciA9IGVudlsvKiBjdXJyX2NoYXIgKi82XTsKLSAgdmFyIGlu
aXRfbHZhbCA9IGVudlsvKiBsdmFsICovN107Ci0gIHZhciBpbml0X2VycmZsYWcgPSBlbnZbLyog
ZXJyZmxhZyAqLzE1XTsKLSAgZW52Wy8qIHN0YWNrYmFzZSAqLzVdID0gZW52Wy8qIHNwICovMTNd
ICsgMSB8IDA7Ci0gIGVudlsvKiBjdXJyX2NoYXIgKi82XSA9IHN0YXJ0OwotICBlbnZbLyogc3lt
Yl9lbmQgKi85XSA9IGxleGJ1ZlsvKiBsZXhfY3Vycl9wICovMTFdOwotICB0cnkgewotICAgIHZh
ciBfY21kID0gLyogU3RhcnQgKi8wOwotICAgIHZhciBfYXJnID0gLyogKCkgKi8wOwotICAgIHdo
aWxlKHRydWUpIHsKLSAgICAgIHZhciBhcmcgPSBfYXJnOwotICAgICAgdmFyIGNtZCA9IF9jbWQ7
Ci0gICAgICB2YXIgbWF0Y2ggPSBDYW1sX3BhcnNlci5jYW1sX3BhcnNlX2VuZ2luZSh0YWJsZXMs
IGVudiwgY21kLCBhcmcpOwotICAgICAgc3dpdGNoIChtYXRjaCkgewotICAgICAgICBjYXNlIDAg
OiAKLSAgICAgICAgICAgIHZhciB0ID0gQ3VycnkuXzEobGV4ZXIsIGxleGJ1Zik7Ci0gICAgICAg
ICAgICBlbnZbLyogc3ltYl9zdGFydCAqLzhdID0gbGV4YnVmWy8qIGxleF9zdGFydF9wICovMTBd
OwotICAgICAgICAgICAgZW52Wy8qIHN5bWJfZW5kICovOV0gPSBsZXhidWZbLyogbGV4X2N1cnJf
cCAqLzExXTsKLSAgICAgICAgICAgIF9hcmcgPSB0OwotICAgICAgICAgICAgX2NtZCA9IC8qIFRv
a2VuX3JlYWQgKi8xOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSAx
IDogCi0gICAgICAgICAgICB0aHJvdyBQYXJzZV9lcnJvcjsKLSAgICAgICAgY2FzZSAyIDogCi0g
ICAgICAgICAgICBncm93X3N0YWNrcygvKiAoKSAqLzApOwotICAgICAgICAgICAgX2FyZyA9IC8q
ICgpICovMDsKLSAgICAgICAgICAgIF9jbWQgPSAvKiBTdGFja3NfZ3Jvd25fMSAqLzI7Ci0gICAg
ICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgICAgICBjYXNlIDMgOiAKLSAgICAgICAgICAgIGdy
b3dfc3RhY2tzKC8qICgpICovMCk7Ci0gICAgICAgICAgICBfYXJnID0gLyogKCkgKi8wOwotICAg
ICAgICAgICAgX2NtZCA9IC8qIFN0YWNrc19ncm93bl8yICovMzsKLSAgICAgICAgICAgIGNvbnRp
bnVlIDsKLSAgICAgICAgICAgIGNhc2UgNCA6IAotICAgICAgICAgICAgdmFyIG1hdGNoJDE7Ci0g
ICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICBtYXRjaCQxID0gLyogdHVwbGUgKi9bCi0g
ICAgICAgICAgICAgICAgLyogU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkICovNCwKLSAgICAgICAg
ICAgICAgICBDdXJyeS5fMSh0YWJsZXNbLyogYWN0aW9ucyAqLzBdW2VudlsvKiBydWxlX251bWJl
ciAqLzEyXV0sIGVudikKLSAgICAgICAgICAgICAgXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGNhdGNoIChleG4pewotICAgICAgICAgICAgICBpZiAoZXhuID09PSBQYXJzZV9lcnJvcikg
ewotICAgICAgICAgICAgICAgIG1hdGNoJDEgPSAvKiB0dXBsZSAqL1sKLSAgICAgICAgICAgICAg
ICAgIC8qIEVycm9yX2RldGVjdGVkICovNSwKLSAgICAgICAgICAgICAgICAgIC8qICgpICovMAot
ICAgICAgICAgICAgICAgIF07Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgdGhyb3cgZXhuOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBfYXJnID0gbWF0Y2gkMVsxXTsKLSAgICAgICAgICAgIF9jbWQgPSBt
YXRjaCQxWzBdOwotICAgICAgICAgICAgY29udGludWUgOwotICAgICAgICAgICAgY2FzZSA1IDog
Ci0gICAgICAgICAgICBDdXJyeS5fMSh0YWJsZXNbLyogZXJyb3JfZnVuY3Rpb24gKi8xM10sICJz
eW50YXggZXJyb3IiKTsKLSAgICAgICAgICAgIF9hcmcgPSAvKiAoKSAqLzA7Ci0gICAgICAgICAg
ICBfY21kID0gLyogRXJyb3JfZGV0ZWN0ZWQgKi81OwotICAgICAgICAgICAgY29udGludWUgOwot
ICAgICAgICAgICAgCi0gICAgICB9Ci0gICAgfTsKLSAgfQotICBjYXRjaCAoZXhuJDEpewotICAg
IHZhciBjdXJyX2NoYXIgPSBlbnZbLyogY3Vycl9jaGFyICovNl07Ci0gICAgZW52Wy8qIGFzcCAq
LzEwXSA9IGluaXRfYXNwOwotICAgIGVudlsvKiBzcCAqLzEzXSA9IGluaXRfc3A7Ci0gICAgZW52
Wy8qIHN0YWNrYmFzZSAqLzVdID0gaW5pdF9zdGFja2Jhc2U7Ci0gICAgZW52Wy8qIHN0YXRlICov
MTRdID0gaW5pdF9zdGF0ZTsKLSAgICBlbnZbLyogY3Vycl9jaGFyICovNl0gPSBpbml0X2N1cnJf
Y2hhcjsKLSAgICBlbnZbLyogbHZhbCAqLzddID0gaW5pdF9sdmFsOwotICAgIGVudlsvKiBlcnJm
bGFnICovMTVdID0gaW5pdF9lcnJmbGFnOwotICAgIGlmIChleG4kMVswXSA9PT0gWVlleGl0KSB7
Ci0gICAgICByZXR1cm4gZXhuJDFbMV07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgY3VycmVu
dF9sb29rYWhlYWRfZnVuWzBdID0gZnVuY3Rpb24gKHRvaykgewotICAgICAgICBpZiAodG9rLmxl
bmd0aCAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgcmV0dXJuICsodGFibGVzWy8qIHRyYW5z
bF9ibG9jayAqLzJdW3Rvay50YWcgfCAwXSA9PT0gY3Vycl9jaGFyKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gKyh0YWJsZXNbLyogdHJhbnNsX2NvbnN0ICov
MV1bdG9rXSA9PT0gY3Vycl9jaGFyKTsKLSAgICAgICAgfQotICAgICAgfTsKLSAgICAgIHRocm93
IGV4biQxOwotICAgIH0KLSAgfQotfQotCi1mdW5jdGlvbiBwZWVrX3ZhbChlbnYsIG4pIHsKLSAg
cmV0dXJuIGVudlsvKiB2X3N0YWNrICovMV1bZW52Wy8qIGFzcCAqLzEwXSAtIG4gfCAwXTsKLX0K
LQotZnVuY3Rpb24gc3ltYm9sX3N0YXJ0X3BvcygpIHsKLSAgdmFyIF9pID0gZW52Wy8qIHJ1bGVf
bGVuICovMTFdOwotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIGkgPSBfaTsKLSAgICBpZiAoaSA8
PSAwKSB7Ci0gICAgICByZXR1cm4gZW52Wy8qIHN5bWJfZW5kX3N0YWNrICovM11bZW52Wy8qIGFz
cCAqLzEwXV07Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgdmFyIHN0ID0gZW52Wy8qIHN5bWJf
c3RhcnRfc3RhY2sgKi8yXVsoZW52Wy8qIGFzcCAqLzEwXSAtIGkgfCAwKSArIDEgfCAwXTsKLSAg
ICAgIHZhciBlbiA9IGVudlsvKiBzeW1iX2VuZF9zdGFjayAqLzNdWyhlbnZbLyogYXNwICovMTBd
IC0gaSB8IDApICsgMSB8IDBdOwotICAgICAgaWYgKENhbWxfb2JqLmNhbWxfbm90ZXF1YWwoc3Qs
IGVuKSkgewotICAgICAgICByZXR1cm4gc3Q7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAg
ICAgX2kgPSBpIC0gMSB8IDA7Ci0gICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgCi0gICAgICB9
Ci0gICAgfQotICB9OwotfQotCi1mdW5jdGlvbiBzeW1ib2xfZW5kX3BvcygpIHsKLSAgcmV0dXJu
IGVudlsvKiBzeW1iX2VuZF9zdGFjayAqLzNdW2VudlsvKiBhc3AgKi8xMF1dOwotfQotCi1mdW5j
dGlvbiByaHNfc3RhcnRfcG9zKG4pIHsKLSAgcmV0dXJuIGVudlsvKiBzeW1iX3N0YXJ0X3N0YWNr
ICovMl1bZW52Wy8qIGFzcCAqLzEwXSAtIChlbnZbLyogcnVsZV9sZW4gKi8xMV0gLSBuIHwgMCkg
fCAwXTsKLX0KLQotZnVuY3Rpb24gcmhzX2VuZF9wb3MobikgewotICByZXR1cm4gZW52Wy8qIHN5
bWJfZW5kX3N0YWNrICovM11bZW52Wy8qIGFzcCAqLzEwXSAtIChlbnZbLyogcnVsZV9sZW4gKi8x
MV0gLSBuIHwgMCkgfCAwXTsKLX0KLQotZnVuY3Rpb24gc3ltYm9sX3N0YXJ0KCkgewotICByZXR1
cm4gc3ltYm9sX3N0YXJ0X3BvcygvKiAoKSAqLzApWy8qIHBvc19jbnVtICovM107Ci19Ci0KLWZ1
bmN0aW9uIHN5bWJvbF9lbmQoKSB7Ci0gIHJldHVybiBzeW1ib2xfZW5kX3BvcygvKiAoKSAqLzAp
Wy8qIHBvc19jbnVtICovM107Ci19Ci0KLWZ1bmN0aW9uIHJoc19zdGFydChuKSB7Ci0gIHJldHVy
biByaHNfc3RhcnRfcG9zKG4pWy8qIHBvc19jbnVtICovM107Ci19Ci0KLWZ1bmN0aW9uIHJoc19l
bmQobikgewotICByZXR1cm4gcmhzX2VuZF9wb3MobilbLyogcG9zX2NudW0gKi8zXTsKLX0KLQot
ZnVuY3Rpb24gaXNfY3VycmVudF9sb29rYWhlYWQodG9rKSB7Ci0gIHJldHVybiBDdXJyeS5fMShj
dXJyZW50X2xvb2thaGVhZF9mdW5bMF0sIHRvayk7Ci19Ci0KLWZ1bmN0aW9uIHBhcnNlX2Vycm9y
KCkgewotICByZXR1cm4gLyogKCkgKi8wOwotfQotCi12YXIgc2V0X3RyYWNlID0gQ2FtbF9wYXJz
ZXIuY2FtbF9zZXRfcGFyc2VyX3RyYWNlOwotCi1leHBvcnRzLnN5bWJvbF9zdGFydCAgICAgICAg
ID0gc3ltYm9sX3N0YXJ0OwotZXhwb3J0cy5zeW1ib2xfZW5kICAgICAgICAgICA9IHN5bWJvbF9l
bmQ7Ci1leHBvcnRzLnJoc19zdGFydCAgICAgICAgICAgID0gcmhzX3N0YXJ0OwotZXhwb3J0cy5y
aHNfZW5kICAgICAgICAgICAgICA9IHJoc19lbmQ7Ci1leHBvcnRzLnN5bWJvbF9zdGFydF9wb3Mg
ICAgID0gc3ltYm9sX3N0YXJ0X3BvczsKLWV4cG9ydHMuc3ltYm9sX2VuZF9wb3MgICAgICAgPSBz
eW1ib2xfZW5kX3BvczsKLWV4cG9ydHMucmhzX3N0YXJ0X3BvcyAgICAgICAgPSByaHNfc3RhcnRf
cG9zOwotZXhwb3J0cy5yaHNfZW5kX3BvcyAgICAgICAgICA9IHJoc19lbmRfcG9zOwotZXhwb3J0
cy5jbGVhcl9wYXJzZXIgICAgICAgICA9IGNsZWFyX3BhcnNlcjsKLWV4cG9ydHMuUGFyc2VfZXJy
b3IgICAgICAgICAgPSBQYXJzZV9lcnJvcjsKLWV4cG9ydHMuc2V0X3RyYWNlICAgICAgICAgICAg
PSBzZXRfdHJhY2U7Ci1leHBvcnRzLllZZXhpdCAgICAgICAgICAgICAgID0gWVlleGl0OwotZXhw
b3J0cy55eXBhcnNlICAgICAgICAgICAgICA9IHl5cGFyc2U7Ci1leHBvcnRzLnBlZWtfdmFsICAg
ICAgICAgICAgID0gcGVla192YWw7Ci1leHBvcnRzLmlzX2N1cnJlbnRfbG9va2FoZWFkID0gaXNf
Y3VycmVudF9sb29rYWhlYWQ7Ci1leHBvcnRzLnBhcnNlX2Vycm9yICAgICAgICAgID0gcGFyc2Vf
ZXJyb3I7Ci0vKiBObyBzaWRlIGVmZmVjdCAqLwotLy8vLy8vLy8gZW5kIG9mIHBhcnNpbmcuanMg
Ly8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsncGVy
dmFzaXZlcyddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8vLy8vLy8v
IHN0YXJ0IG9mIHBlcnZhc2l2ZXMuanMgLy8vLy8vLy8KLSd1c2Ugc3RyaWN0JzsKLQotdmFyIEN1
cnJ5ICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY3VycnkiKTsKLXZhciBDYW1sX2lv
ICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfaW8iKTsKLXZhciBDYW1sX29iaiAg
ICAgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfb2JqIik7Ci12YXIgQ2FtbF9mb3JtYXQg
ICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9jYW1sX2Zvcm1hdCIpOwotdmFyIENhbWxfc3RyaW5n
ICAgICAgICAgICAgICA9IHJlcXVpcmUoIi4vY2FtbF9zdHJpbmciKTsKLXZhciBDYW1sX2V4Y2Vw
dGlvbnMgICAgICAgICAgPSByZXF1aXJlKCIuL2NhbWxfZXhjZXB0aW9ucyIpOwotdmFyIENhbWxf
YnVpbHRpbl9leGNlcHRpb25zICA9IHJlcXVpcmUoIi4vY2FtbF9idWlsdGluX2V4Y2VwdGlvbnMi
KTsKLXZhciBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MgPSByZXF1aXJlKCIuL2NhbWxpbnRlcm5h
bEZvcm1hdEJhc2ljcyIpOwotCi1mdW5jdGlvbiBmYWlsd2l0aChzKSB7Ci0gIHRocm93IFsKLSAg
ICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuZmFpbHVyZSwKLSAgICAgICAgcwotICAgICAg
XTsKLX0KLQotZnVuY3Rpb24gaW52YWxpZF9hcmcocykgewotICB0aHJvdyBbCi0gICAgICAgIENh
bWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgIHMKLSAgICAg
IF07Ci19Ci0KLXZhciBFeGl0ID0gQ2FtbF9leGNlcHRpb25zLmNyZWF0ZSgiUGVydmFzaXZlcy5F
eGl0Iik7Ci0KLWZ1bmN0aW9uIG1pbih4LCB5KSB7Ci0gIGlmIChDYW1sX29iai5jYW1sX2xlc3Nl
cXVhbCh4LCB5KSkgewotICAgIHJldHVybiB4OwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiB5
OwotICB9Ci19Ci0KLWZ1bmN0aW9uIG1heCh4LCB5KSB7Ci0gIGlmIChDYW1sX29iai5jYW1sX2dy
ZWF0ZXJlcXVhbCh4LCB5KSkgewotICAgIHJldHVybiB4OwotICB9Ci0gIGVsc2UgewotICAgIHJl
dHVybiB5OwotICB9Ci19Ci0KLWZ1bmN0aW9uIGFicyh4KSB7Ci0gIGlmICh4ID49IDApIHsKLSAg
ICByZXR1cm4geDsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLXggfCAwOwotICB9Ci19Ci0K
LWZ1bmN0aW9uIGxub3QoeCkgewotICByZXR1cm4geCBeIC0xOwotfQotCi12YXIgbWluX2ludCA9
IC0yMTQ3NDgzNjQ4OwotCi1mdW5jdGlvbiAkY2FyZXQoYSwgYikgewotICByZXR1cm4gYSArIGI7
Ci19Ci0KLWZ1bmN0aW9uIGNoYXJfb2ZfaW50KG4pIHsKLSAgaWYgKG4gPCAwIHx8IG4gPiAyNTUp
IHsKLSAgICB0aHJvdyBbCi0gICAgICAgICAgQ2FtbF9idWlsdGluX2V4Y2VwdGlvbnMuaW52YWxp
ZF9hcmd1bWVudCwKLSAgICAgICAgICAiY2hhcl9vZl9pbnQiCi0gICAgICAgIF07Ci0gIH0KLSAg
ZWxzZSB7Ci0gICAgcmV0dXJuIG47Ci0gIH0KLX0KLQotZnVuY3Rpb24gc3RyaW5nX29mX2Jvb2wo
YikgewotICBpZiAoYikgewotICAgIHJldHVybiAidHJ1ZSI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAg
cmV0dXJuICJmYWxzZSI7Ci0gIH0KLX0KLQotZnVuY3Rpb24gYm9vbF9vZl9zdHJpbmcocGFyYW0p
IHsKLSAgc3dpdGNoIChwYXJhbSkgewotICAgIGNhc2UgImZhbHNlIiA6IAotICAgICAgICByZXR1
cm4gLyogZmFsc2UgKi8wOwotICAgIGNhc2UgInRydWUiIDogCi0gICAgICAgIHJldHVybiAvKiB0
cnVlICovMTsKLSAgICBkZWZhdWx0OgotICAgICAgdGhyb3cgWwotICAgICAgICAgICAgQ2FtbF9i
dWlsdGluX2V4Y2VwdGlvbnMuaW52YWxpZF9hcmd1bWVudCwKLSAgICAgICAgICAgICJib29sX29m
X3N0cmluZyIKLSAgICAgICAgICBdOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHN0cmluZ19vZl9pbnQo
cGFyYW0pIHsKLSAgcmV0dXJuICIiICsgcGFyYW07Ci19Ci0KLWZ1bmN0aW9uIHZhbGlkX2Zsb2F0
X2xleGVtKHMpIHsKLSAgdmFyIGwgPSBzLmxlbmd0aDsKLSAgdmFyIF9pID0gMDsKLSAgd2hpbGUo
dHJ1ZSkgewotICAgIHZhciBpID0gX2k7Ci0gICAgaWYgKGkgPj0gbCkgewotICAgICAgcmV0dXJu
ICRjYXJldChzLCAiLiIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHZhciBtYXRjaCA9IENh
bWxfc3RyaW5nLmdldChzLCBpKTsKLSAgICAgIGlmIChtYXRjaCA+PSA0OCkgewotICAgICAgICBp
ZiAobWF0Y2ggPj0gNTgpIHsKLSAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICBfaSA9IGkgKyAxIHwgMDsKLSAgICAgICAgICBjb250aW51ZSA7
Ci0gICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKG1hdGNoICE9
PSA0NSkgewotICAgICAgICByZXR1cm4gczsKLSAgICAgIH0KLSAgICAgIGVsc2UgewotICAgICAg
ICBfaSA9IGkgKyAxIHwgMDsKLSAgICAgICAgY29udGludWUgOwotICAgICAgICAKLSAgICAgIH0K
LSAgICB9Ci0gIH07Ci19Ci0KLWZ1bmN0aW9uIHN0cmluZ19vZl9mbG9hdChmKSB7Ci0gIHJldHVy
biB2YWxpZF9mbG9hdF9sZXhlbShDYW1sX2Zvcm1hdC5jYW1sX2Zvcm1hdF9mbG9hdCgiJS4xMmci
LCBmKSk7Ci19Ci0KLWZ1bmN0aW9uICRhdChsMSwgbDIpIHsKLSAgaWYgKGwxKSB7Ci0gICAgcmV0
dXJuIC8qIDo6ICovWwotICAgICAgICAgICAgbDFbMF0sCi0gICAgICAgICAgICAkYXQobDFbMV0s
IGwyKQotICAgICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcmV0dXJuIGwyOwotICB9Ci19
Ci0KLXZhciBzdGRpbiA9IENhbWxfaW8uc3RkaW47Ci0KLXZhciBzdGRvdXQgPSBDYW1sX2lvLnN0
ZG91dDsKLQotdmFyIHN0ZGVyciA9IENhbWxfaW8uc3RkZXJyOwotCi1mdW5jdGlvbiBvcGVuX291
dF9nZW4oXywgXyQxLCBfJDIpIHsKLSAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vcGVuX2Rlc2Ny
aXB0b3Jfb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyAiY2FtbF9zeXNf
b3BlbiBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAgICAgICAg
ICAgfSgpKTsKLX0KLQotZnVuY3Rpb24gb3Blbl9vdXQobmFtZSkgewotICByZXR1cm4gb3Blbl9v
dXRfZ2VuKC8qIDo6ICovWwotICAgICAgICAgICAgICAvKiBPcGVuX3dyb25seSAqLzEsCi0gICAg
ICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgIC8qIE9wZW5fY3JlYXQgKi8zLAot
ICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgICAgLyogT3Blbl90cnVu
YyAqLzQsCi0gICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICAgICAg
LyogT3Blbl90ZXh0ICovNywKLSAgICAgICAgICAgICAgICAgICAgLyogW10gKi8wCi0gICAgICAg
ICAgICAgICAgICBdCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICBdCi0gICAgICAg
ICAgICBdLCA0MzgsIG5hbWUpOwotfQotCi1mdW5jdGlvbiBvcGVuX291dF9iaW4obmFtZSkgewot
ICByZXR1cm4gb3Blbl9vdXRfZ2VuKC8qIDo6ICovWwotICAgICAgICAgICAgICAvKiBPcGVuX3dy
b25seSAqLzEsCi0gICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAgIC8qIE9w
ZW5fY3JlYXQgKi8zLAotICAgICAgICAgICAgICAgIC8qIDo6ICovWwotICAgICAgICAgICAgICAg
ICAgLyogT3Blbl90cnVuYyAqLzQsCi0gICAgICAgICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAg
ICAgICAgICAgICAgICAgLyogT3Blbl9iaW5hcnkgKi82LAotICAgICAgICAgICAgICAgICAgICAv
KiBbXSAqLzAKLSAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICBdCi0gICAgICAg
ICAgICAgIF0KLSAgICAgICAgICAgIF0sIDQzOCwgbmFtZSk7Ci19Ci0KLWZ1bmN0aW9uIGZsdXNo
X2FsbCgpIHsKLSAgdmFyIF9wYXJhbSA9IENhbWxfaW8uY2FtbF9tbF9vdXRfY2hhbm5lbHNfbGlz
dCgvKiAoKSAqLzApOwotICB3aGlsZSh0cnVlKSB7Ci0gICAgdmFyIHBhcmFtID0gX3BhcmFtOwot
ICAgIGlmIChwYXJhbSkgewotICAgICAgdHJ5IHsKLSAgICAgICAgQ2FtbF9pby5jYW1sX21sX2Zs
dXNoKHBhcmFtWzBdKTsKLSAgICAgIH0KLSAgICAgIGNhdGNoIChleG4pewotICAgICAgICAKLSAg
ICAgIH0KLSAgICAgIF9wYXJhbSA9IHBhcmFtWzFdOwotICAgICAgY29udGludWUgOwotICAgICAg
Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICB9Ci0gIH07
Ci19Ci0KLWZ1bmN0aW9uIG91dHB1dF9ieXRlcyhvYywgcykgewotICByZXR1cm4gQ2FtbF9pby5j
YW1sX21sX291dHB1dChvYywgcywgMCwgcy5sZW5ndGgpOwotfQotCi1mdW5jdGlvbiBvdXRwdXRf
c3RyaW5nKG9jLCBzKSB7Ci0gIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfb3V0cHV0KG9jLCBzLCAw
LCBzLmxlbmd0aCk7Ci19Ci0KLWZ1bmN0aW9uIG91dHB1dChvYywgcywgb2ZzLCBsZW4pIHsKLSAg
aWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiAocy5sZW5ndGggLSBsZW4gfCAwKSkgewot
ICAgIHRocm93IFsKLSAgICAgICAgICBDYW1sX2J1aWx0aW5fZXhjZXB0aW9ucy5pbnZhbGlkX2Fy
Z3VtZW50LAotICAgICAgICAgICJvdXRwdXQiCi0gICAgICAgIF07Ci0gIH0KLSAgZWxzZSB7Ci0g
ICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXQob2MsIHMsIG9mcywgbGVuKTsKLSAgfQot
fQotCi1mdW5jdGlvbiBvdXRwdXRfc3Vic3RyaW5nKG9jLCBzLCBvZnMsIGxlbikgewotICBpZiAo
b2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7Ci0gICAg
dGhyb3cgWwotICAgICAgICAgIENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1l
bnQsCi0gICAgICAgICAgIm91dHB1dF9zdWJzdHJpbmciCi0gICAgICAgIF07Ci0gIH0KLSAgZWxz
ZSB7Ci0gICAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXQob2MsIHMsIG9mcywgbGVuKTsK
LSAgfQotfQotCi1mdW5jdGlvbiBvdXRwdXRfdmFsdWUoXywgXyQxKSB7Ci0gIHJldHVybiBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICB0aHJvdyAiY2FtbF9vdXRwdXRfdmFsdWUgbm90IGltcGxl
bWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Ci0gICAgICAgICAgfSgpOwotfQotCi1mdW5j
dGlvbiBjbG9zZV9vdXQob2MpIHsKLSAgQ2FtbF9pby5jYW1sX21sX2ZsdXNoKG9jKTsKLSAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2Nsb3NlX2NoYW5u
ZWwgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Ci0gICAgICAgICAgfSgp
OwotfQotCi1mdW5jdGlvbiBjbG9zZV9vdXRfbm9lcnIob2MpIHsKLSAgdHJ5IHsKLSAgICBDYW1s
X2lvLmNhbWxfbWxfZmx1c2gob2MpOwotICB9Ci0gIGNhdGNoIChleG4pewotICAgIAotICB9Ci0g
IHRyeSB7Ci0gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgdGhyb3cgImNh
bWxfbWxfY2xvc2VfY2hhbm5lbCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxu
IjsKLSAgICAgICAgICAgIH0oKTsKLSAgfQotICBjYXRjaCAoZXhuJDEpewotICAgIHJldHVybiAv
KiAoKSAqLzA7Ci0gIH0KLX0KLQotZnVuY3Rpb24gb3Blbl9pbl9nZW4oXywgXyQxLCBfJDIpIHsK
LSAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4oZnVuY3Rpb24gKCkg
ewotICAgICAgICAgICAgICAgIHRocm93ICJjYW1sX3N5c19vcGVuIG5vdCBpbXBsZW1lbnRlZCBi
eSBidWNrbGVzY3JpcHQgeWV0XG4iOwotICAgICAgICAgICAgICB9KCkpOwotfQotCi1mdW5jdGlv
biBvcGVuX2luKG5hbWUpIHsKLSAgcmV0dXJuIG9wZW5faW5fZ2VuKC8qIDo6ICovWwotICAgICAg
ICAgICAgICAvKiBPcGVuX3Jkb25seSAqLzAsCi0gICAgICAgICAgICAgIC8qIDo6ICovWwotICAg
ICAgICAgICAgICAgIC8qIE9wZW5fdGV4dCAqLzcsCi0gICAgICAgICAgICAgICAgLyogW10gKi8w
Ci0gICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIF0sIDAsIG5hbWUpOwotfQotCi1mdW5jdGlv
biBvcGVuX2luX2JpbihuYW1lKSB7Ci0gIHJldHVybiBvcGVuX2luX2dlbigvKiA6OiAqL1sKLSAg
ICAgICAgICAgICAgLyogT3Blbl9yZG9ubHkgKi8wLAotICAgICAgICAgICAgICAvKiA6OiAqL1sK
LSAgICAgICAgICAgICAgICAvKiBPcGVuX2JpbmFyeSAqLzYsCi0gICAgICAgICAgICAgICAgLyog
W10gKi8wCi0gICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIF0sIDAsIG5hbWUpOwotfQotCi1m
dW5jdGlvbiBpbnB1dChfLCBzLCBvZnMsIGxlbikgewotICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAw
IHx8IG9mcyA+IChzLmxlbmd0aCAtIGxlbiB8IDApKSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAg
IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgImlu
cHV0IgotICAgICAgICBdOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2lucHV0IG5vdCBpbXBsZW1lbnRlZCBieSBi
dWNrbGVzY3JpcHQgeWV0XG4iOwotICAgICAgICAgICAgfSgpOwotICB9Ci19Ci0KLWZ1bmN0aW9u
IHVuc2FmZV9yZWFsbHlfaW5wdXQoXywgXyQxLCBfb2ZzLCBfbGVuKSB7Ci0gIHdoaWxlKHRydWUp
IHsKLSAgICB2YXIgbGVuID0gX2xlbjsKLSAgICB2YXIgb2ZzID0gX29mczsKLSAgICBpZiAobGVu
IDw9IDApIHsKLSAgICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gICAgfQotICAgIGVsc2UgewotICAg
ICAgdmFyIHIgPSBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgdGhyb3cgImNhbWxfbWxfaW5wdXQg
bm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Ci0gICAgICAgIH0oKTsKLSAg
ICAgIGlmIChyKSB7Ci0gICAgICAgIF9sZW4gPSBsZW4gLSByIHwgMDsKLSAgICAgICAgX29mcyA9
IG9mcyArIHIgfCAwOwotICAgICAgICBjb250aW51ZSA7Ci0gICAgICAgIAotICAgICAgfQotICAg
ICAgZWxzZSB7Ci0gICAgICAgIHRocm93IENhbWxfYnVpbHRpbl9leGNlcHRpb25zLmVuZF9vZl9m
aWxlOwotICAgICAgfQotICAgIH0KLSAgfTsKLX0KLQotZnVuY3Rpb24gcmVhbGx5X2lucHV0KGlj
LCBzLCBvZnMsIGxlbikgewotICBpZiAob2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IChzLmxl
bmd0aCAtIGxlbiB8IDApKSB7Ci0gICAgdGhyb3cgWwotICAgICAgICAgIENhbWxfYnVpbHRpbl9l
eGNlcHRpb25zLmludmFsaWRfYXJndW1lbnQsCi0gICAgICAgICAgInJlYWxseV9pbnB1dCIKLSAg
ICAgICAgXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gdW5zYWZlX3JlYWxseV9pbnB1dChp
Yywgcywgb2ZzLCBsZW4pOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHJlYWxseV9pbnB1dF9zdHJpbmco
aWMsIGxlbikgewotICB2YXIgcyA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmluZyhsZW4p
OwotICByZWFsbHlfaW5wdXQoaWMsIHMsIDAsIGxlbik7Ci0gIHJldHVybiBDYW1sX3N0cmluZy5i
eXRlc190b19zdHJpbmcocyk7Ci19Ci0KLWZ1bmN0aW9uIGlucHV0X2xpbmUoY2hhbikgewotICB2
YXIgYnVpbGRfcmVzdWx0ID0gZnVuY3Rpb24gKGJ1ZiwgX3BvcywgX3BhcmFtKSB7Ci0gICAgd2hp
bGUodHJ1ZSkgewotICAgICAgdmFyIHBhcmFtID0gX3BhcmFtOwotICAgICAgdmFyIHBvcyA9IF9w
b3M7Ci0gICAgICBpZiAocGFyYW0pIHsKLSAgICAgICAgdmFyIGhkID0gcGFyYW1bMF07Ci0gICAg
ICAgIHZhciBsZW4gPSBoZC5sZW5ndGg7Ci0gICAgICAgIENhbWxfc3RyaW5nLmNhbWxfYmxpdF9i
eXRlcyhoZCwgMCwgYnVmLCBwb3MgLSBsZW4gfCAwLCBsZW4pOwotICAgICAgICBfcGFyYW0gPSBw
YXJhbVsxXTsKLSAgICAgICAgX3BvcyA9IHBvcyAtIGxlbiB8IDA7Ci0gICAgICAgIGNvbnRpbnVl
IDsKLSAgICAgICAgCi0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGJ1ZjsK
LSAgICAgIH0KLSAgICB9OwotICB9OwotICB2YXIgc2NhbiA9IGZ1bmN0aW9uIChfYWNjdSwgX2xl
bikgewotICAgIHdoaWxlKHRydWUpIHsKLSAgICAgIHZhciBsZW4gPSBfbGVuOwotICAgICAgdmFy
IGFjY3UgPSBfYWNjdTsKLSAgICAgIHZhciBuID0gZnVuY3Rpb24gKCkgewotICAgICAgICAgIHRo
cm93ICJjYW1sX21sX2lucHV0X3NjYW5fbGluZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKLSAgICAgICAgfSgpOwotICAgICAgaWYgKG4pIHsKLSAgICAgICAgaWYgKG4g
PiAwKSB7Ci0gICAgICAgICAgdmFyIHJlcyA9IENhbWxfc3RyaW5nLmNhbWxfY3JlYXRlX3N0cmlu
ZyhuIC0gMSB8IDApOwotICAgICAgICAgIChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAg
dGhyb3cgImNhbWxfbWxfaW5wdXQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRc
biI7Ci0gICAgICAgICAgICAgIH0oKSk7Ci0gICAgICAgICAgQ2FtbF9pby5jYW1sX21sX2lucHV0
X2NoYXIoY2hhbik7Ci0gICAgICAgICAgaWYgKGFjY3UpIHsKLSAgICAgICAgICAgIHZhciBsZW4k
MSA9IChsZW4gKyBuIHwgMCkgLSAxIHwgMDsKLSAgICAgICAgICAgIHJldHVybiBidWlsZF9yZXN1
bHQoQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKGxlbiQxKSwgbGVuJDEsIC8qIDo6ICov
WwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
YWNjdQotICAgICAgICAgICAgICAgICAgICAgIF0pOwotICAgICAgICAgIH0KLSAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgIHZhciBiZWcgPSBDYW1sX3N0cmluZy5jYW1sX2NyZWF0
ZV9zdHJpbmcoLW4gfCAwKTsKLSAgICAgICAgICAoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
ICAgIHRocm93ICJjYW1sX21sX2lucHV0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQg
eWV0XG4iOwotICAgICAgICAgICAgICB9KCkpOwotICAgICAgICAgIF9sZW4gPSBsZW4gLSBuIHwg
MDsKLSAgICAgICAgICBfYWNjdSA9IC8qIDo6ICovWwotICAgICAgICAgICAgYmVnLAotICAgICAg
ICAgICAgYWNjdQotICAgICAgICAgIF07Ci0gICAgICAgICAgY29udGludWUgOwotICAgICAgICAg
IAotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmIChhY2N1KSB7Ci0gICAgICAgIHJl
dHVybiBidWlsZF9yZXN1bHQoQ2FtbF9zdHJpbmcuY2FtbF9jcmVhdGVfc3RyaW5nKGxlbiksIGxl
biwgYWNjdSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3cgQ2FtbF9idWls
dGluX2V4Y2VwdGlvbnMuZW5kX29mX2ZpbGU7Ci0gICAgICB9Ci0gICAgfTsKLSAgfTsKLSAgcmV0
dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhzY2FuKC8qIFtdICovMCwgMCkpOwotfQot
Ci1mdW5jdGlvbiBjbG9zZV9pbl9ub2VycigpIHsKLSAgdHJ5IHsKLSAgICByZXR1cm4gZnVuY3Rp
b24gKCkgewotICAgICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9jbG9zZV9jaGFubmVsIG5vdCBp
bXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwotICAgICAgICAgICAgfSgpOwotICB9
Ci0gIGNhdGNoIChleG4pewotICAgIHJldHVybiAvKiAoKSAqLzA7Ci0gIH0KLX0KLQotZnVuY3Rp
b24gcHJpbnRfY2hhcihjKSB7Ci0gIHJldHVybiBDYW1sX2lvLmNhbWxfbWxfb3V0cHV0X2NoYXIo
c3Rkb3V0LCBjKTsKLX0KLQotZnVuY3Rpb24gcHJpbnRfc3RyaW5nKHMpIHsKLSAgcmV0dXJuIG91
dHB1dF9zdHJpbmcoc3Rkb3V0LCBzKTsKLX0KLQotZnVuY3Rpb24gcHJpbnRfYnl0ZXMocykgewot
ICByZXR1cm4gb3V0cHV0X2J5dGVzKHN0ZG91dCwgcyk7Ci19Ci0KLWZ1bmN0aW9uIHByaW50X2lu
dChpKSB7Ci0gIHJldHVybiBvdXRwdXRfc3RyaW5nKHN0ZG91dCwgIiIgKyBpKTsKLX0KLQotZnVu
Y3Rpb24gcHJpbnRfZmxvYXQoZikgewotICByZXR1cm4gb3V0cHV0X3N0cmluZyhzdGRvdXQsIHZh
bGlkX2Zsb2F0X2xleGVtKENhbWxfZm9ybWF0LmNhbWxfZm9ybWF0X2Zsb2F0KCIlLjEyZyIsIGYp
KSk7Ci19Ci0KLWZ1bmN0aW9uIHByaW50X2VuZGxpbmUocGFyYW0pIHsKLSAgY29uc29sZS5sb2co
cGFyYW0pOwotICByZXR1cm4gMDsKLX0KLQotZnVuY3Rpb24gcHJpbnRfbmV3bGluZSgpIHsKLSAg
Q2FtbF9pby5jYW1sX21sX291dHB1dF9jaGFyKHN0ZG91dCwgLyogIlxuIiAqLzEwKTsKLSAgcmV0
dXJuIENhbWxfaW8uY2FtbF9tbF9mbHVzaChzdGRvdXQpOwotfQotCi1mdW5jdGlvbiBwcmVycl9j
aGFyKGMpIHsKLSAgcmV0dXJuIENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hhcihzdGRlcnIsIGMp
OwotfQotCi1mdW5jdGlvbiBwcmVycl9zdHJpbmcocykgewotICByZXR1cm4gb3V0cHV0X3N0cmlu
ZyhzdGRlcnIsIHMpOwotfQotCi1mdW5jdGlvbiBwcmVycl9ieXRlcyhzKSB7Ci0gIHJldHVybiBv
dXRwdXRfYnl0ZXMoc3RkZXJyLCBzKTsKLX0KLQotZnVuY3Rpb24gcHJlcnJfaW50KGkpIHsKLSAg
cmV0dXJuIG91dHB1dF9zdHJpbmcoc3RkZXJyLCAiIiArIGkpOwotfQotCi1mdW5jdGlvbiBwcmVy
cl9mbG9hdChmKSB7Ci0gIHJldHVybiBvdXRwdXRfc3RyaW5nKHN0ZGVyciwgdmFsaWRfZmxvYXRf
bGV4ZW0oQ2FtbF9mb3JtYXQuY2FtbF9mb3JtYXRfZmxvYXQoIiUuMTJnIiwgZikpKTsKLX0KLQot
ZnVuY3Rpb24gcHJlcnJfZW5kbGluZShwYXJhbSkgewotICBjb25zb2xlLmVycm9yKHBhcmFtKTsK
LSAgcmV0dXJuIDA7Ci19Ci0KLWZ1bmN0aW9uIHByZXJyX25ld2xpbmUoKSB7Ci0gIENhbWxfaW8u
Y2FtbF9tbF9vdXRwdXRfY2hhcihzdGRlcnIsIC8qICJcbiIgKi8xMCk7Ci0gIHJldHVybiBDYW1s
X2lvLmNhbWxfbWxfZmx1c2goc3RkZXJyKTsKLX0KLQotZnVuY3Rpb24gcmVhZF9saW5lKCkgewot
ICBDYW1sX2lvLmNhbWxfbWxfZmx1c2goc3Rkb3V0KTsKLSAgcmV0dXJuIGlucHV0X2xpbmUoc3Rk
aW4pOwotfQotCi1mdW5jdGlvbiByZWFkX2ludCgpIHsKLSAgcmV0dXJuIENhbWxfZm9ybWF0LmNh
bWxfaW50X29mX3N0cmluZygoQ2FtbF9pby5jYW1sX21sX2ZsdXNoKHN0ZG91dCksIGlucHV0X2xp
bmUoc3RkaW4pKSk7Ci19Ci0KLWZ1bmN0aW9uIHJlYWRfZmxvYXQoKSB7Ci0gIHJldHVybiBDYW1s
X2Zvcm1hdC5jYW1sX2Zsb2F0X29mX3N0cmluZygoQ2FtbF9pby5jYW1sX21sX2ZsdXNoKHN0ZG91
dCksIGlucHV0X2xpbmUoc3RkaW4pKSk7Ci19Ci0KLWZ1bmN0aW9uIHN0cmluZ19vZl9mb3JtYXQo
cGFyYW0pIHsKLSAgcmV0dXJuIHBhcmFtWzFdOwotfQotCi1mdW5jdGlvbiAkY2FyZXQkY2FyZXQo
cGFyYW0sIHBhcmFtJDEpIHsKLSAgcmV0dXJuIC8qIEZvcm1hdCAqL1sKLSAgICAgICAgICBDYW1s
aW50ZXJuYWxGb3JtYXRCYXNpY3MuY29uY2F0X2ZtdChwYXJhbVswXSwgcGFyYW0kMVswXSksCi0g
ICAgICAgICAgJGNhcmV0KHBhcmFtWzFdLCAkY2FyZXQoIiUsIiwgcGFyYW0kMVsxXSkpCi0gICAg
ICAgIF07Ci19Ci0KLXZhciBleGl0X2Z1bmN0aW9uID0gW2ZsdXNoX2FsbF07Ci0KLWZ1bmN0aW9u
IGF0X2V4aXQoZikgewotICB2YXIgZyA9IGV4aXRfZnVuY3Rpb25bMF07Ci0gIGV4aXRfZnVuY3Rp
b25bMF0gPSBmdW5jdGlvbiAoKSB7Ci0gICAgQ3VycnkuXzEoZiwgLyogKCkgKi8wKTsKLSAgICBy
ZXR1cm4gQ3VycnkuXzEoZywgLyogKCkgKi8wKTsKLSAgfTsKLSAgcmV0dXJuIC8qICgpICovMDsK
LX0KLQotZnVuY3Rpb24gZG9fYXRfZXhpdCgpIHsKLSAgcmV0dXJuIEN1cnJ5Ll8xKGV4aXRfZnVu
Y3Rpb25bMF0sIC8qICgpICovMCk7Ci19Ci0KLWZ1bmN0aW9uIGV4aXQoKSB7Ci0gIGRvX2F0X2V4
aXQoLyogKCkgKi8wKTsKLSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRocm93
ICJjYW1sX3N5c19leGl0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwot
ICAgICAgICAgIH0oKTsKLX0KLQotdmFyIG1heF9pbnQgPSAyMTQ3NDgzNjQ3OwotCi12YXIgaW5m
aW5pdHkgPSBJbmZpbml0eTsKLQotdmFyIG5lZ19pbmZpbml0eSA9IC1JbmZpbml0eTsKLQotdmFy
IG5hbiA9IE5hTjsKLQotdmFyIG1heF9mbG9hdCA9IE51bWJlci5NQVhfVkFMVUU7Ci0KLXZhciBt
aW5fZmxvYXQgPSBOdW1iZXIuTUlOX1ZBTFVFOwotCi12YXIgZXBzaWxvbl9mbG9hdCA9IDIuMjIw
NDQ2MDQ5MjUwMzEzZS0xNjsKLQotdmFyIGZsdXNoID0gQ2FtbF9pby5jYW1sX21sX2ZsdXNoOwot
Ci12YXIgb3V0cHV0X2NoYXIgPSBDYW1sX2lvLmNhbWxfbWxfb3V0cHV0X2NoYXI7Ci0KLXZhciBv
dXRwdXRfYnl0ZSA9IENhbWxfaW8uY2FtbF9tbF9vdXRwdXRfY2hhcjsKLQotZnVuY3Rpb24gb3V0
cHV0X2JpbmFyeV9pbnQoXywgXyQxKSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAg
ICAgICB0aHJvdyAiY2FtbF9tbF9vdXRwdXRfaW50IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVz
Y3JpcHQgeWV0XG4iOwotICAgICAgICAgIH0oKTsKLX0KLQotZnVuY3Rpb24gc2Vla19vdXQoXywg
XyQxKSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0aHJvdyAiY2FtbF9t
bF9zZWVrX291dCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAg
ICAgICB9KCk7Ci19Ci0KLWZ1bmN0aW9uIHBvc19vdXQoKSB7Ci0gIHJldHVybiBmdW5jdGlvbiAo
KSB7Ci0gICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3Nfb3V0IG5vdCBpbXBsZW1lbnRlZCBi
eSBidWNrbGVzY3JpcHQgeWV0XG4iOwotICAgICAgICAgIH0oKTsKLX0KLQotZnVuY3Rpb24gb3V0
X2NoYW5uZWxfbGVuZ3RoKCkgewotICByZXR1cm4gZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
dGhyb3cgImNhbWxfbWxfY2hhbm5lbF9zaXplIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3Jp
cHQgeWV0XG4iOwotICAgICAgICAgIH0oKTsKLX0KLQotZnVuY3Rpb24gc2V0X2JpbmFyeV9tb2Rl
X291dChfLCBfJDEpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRocm93
ICJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0
IHlldFxuIjsKLSAgICAgICAgICB9KCk7Ci19Ci0KLXZhciBpbnB1dF9jaGFyID0gQ2FtbF9pby5j
YW1sX21sX2lucHV0X2NoYXI7Ci0KLXZhciBpbnB1dF9ieXRlID0gQ2FtbF9pby5jYW1sX21sX2lu
cHV0X2NoYXI7Ci0KLWZ1bmN0aW9uIGlucHV0X2JpbmFyeV9pbnQoKSB7Ci0gIHJldHVybiBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9pbnB1dF9pbnQgbm90IGltcGxl
bWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Ci0gICAgICAgICAgfSgpOwotfQotCi1mdW5j
dGlvbiBpbnB1dF92YWx1ZSgpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAg
IHRocm93ICJjYW1sX2lucHV0X3ZhbHVlIG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQg
eWV0XG4iOwotICAgICAgICAgIH0oKTsKLX0KLQotZnVuY3Rpb24gc2Vla19pbihfLCBfJDEpIHsK
LSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3NlZWtf
aW4gbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Ci0gICAgICAgICAgfSgp
OwotfQotCi1mdW5jdGlvbiBwb3NfaW4oKSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAg
ICAgICAgICB0aHJvdyAiY2FtbF9tbF9wb3NfaW4gbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNj
cmlwdCB5ZXRcbiI7Ci0gICAgICAgICAgfSgpOwotfQotCi1mdW5jdGlvbiBpbl9jaGFubmVsX2xl
bmd0aCgpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRocm93ICJjYW1s
X21sX2NoYW5uZWxfc2l6ZSBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsK
LSAgICAgICAgICB9KCk7Ci19Ci0KLWZ1bmN0aW9uIGNsb3NlX2luKCkgewotICByZXR1cm4gZnVu
Y3Rpb24gKCkgewotICAgICAgICAgICAgdGhyb3cgImNhbWxfbWxfY2xvc2VfY2hhbm5lbCBub3Qg
aW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAgICAgICB9KCk7Ci19Ci0K
LWZ1bmN0aW9uIHNldF9iaW5hcnlfbW9kZV9pbihfLCBfJDEpIHsKLSAgcmV0dXJuIGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgIHRocm93ICJjYW1sX21sX3NldF9iaW5hcnlfbW9kZSBub3QgaW1w
bGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAgICAgICB9KCk7Ci19Ci0KLWZ1
bmN0aW9uIExhcmdlRmlsZV8wMDAoXywgXyQxKSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0g
ICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZWVrX291dF82NCBub3QgaW1wbGVtZW50ZWQgYnkg
YnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAgICAgICB9KCk7Ci19Ci0KLWZ1bmN0aW9uIExhcmdl
RmlsZV8wMDEoKSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0aHJvdyAi
Y2FtbF9tbF9wb3Nfb3V0XzY0IG5vdCBpbXBsZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4i
OwotICAgICAgICAgIH0oKTsKLX0KLQotZnVuY3Rpb24gTGFyZ2VGaWxlXzAwMigpIHsKLSAgcmV0
dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHRocm93ICJjYW1sX21sX2NoYW5uZWxfc2l6
ZV82NCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2NyaXB0IHlldFxuIjsKLSAgICAgICAgICB9
KCk7Ci19Ci0KLWZ1bmN0aW9uIExhcmdlRmlsZV8wMDMoXywgXyQxKSB7Ci0gIHJldHVybiBmdW5j
dGlvbiAoKSB7Ci0gICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9zZWVrX2luXzY0IG5vdCBpbXBs
ZW1lbnRlZCBieSBidWNrbGVzY3JpcHQgeWV0XG4iOwotICAgICAgICAgIH0oKTsKLX0KLQotZnVu
Y3Rpb24gTGFyZ2VGaWxlXzAwNCgpIHsKLSAgcmV0dXJuIGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
ICAgIHRocm93ICJjYW1sX21sX3Bvc19pbl82NCBub3QgaW1wbGVtZW50ZWQgYnkgYnVja2xlc2Ny
aXB0IHlldFxuIjsKLSAgICAgICAgICB9KCk7Ci19Ci0KLWZ1bmN0aW9uIExhcmdlRmlsZV8wMDUo
KSB7Ci0gIHJldHVybiBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICB0aHJvdyAiY2FtbF9tbF9j
aGFubmVsX3NpemVfNjQgbm90IGltcGxlbWVudGVkIGJ5IGJ1Y2tsZXNjcmlwdCB5ZXRcbiI7Ci0g
ICAgICAgICAgfSgpOwotfQotCi12YXIgTGFyZ2VGaWxlID0gWwotICBMYXJnZUZpbGVfMDAwLAot
ICBMYXJnZUZpbGVfMDAxLAotICBMYXJnZUZpbGVfMDAyLAotICBMYXJnZUZpbGVfMDAzLAotICBM
YXJnZUZpbGVfMDA0LAotICBMYXJnZUZpbGVfMDA1Ci1dOwotCi1leHBvcnRzLmludmFsaWRfYXJn
ICAgICAgICAgPSBpbnZhbGlkX2FyZzsKLWV4cG9ydHMuZmFpbHdpdGggICAgICAgICAgICA9IGZh
aWx3aXRoOwotZXhwb3J0cy5FeGl0ICAgICAgICAgICAgICAgID0gRXhpdDsKLWV4cG9ydHMubWlu
ICAgICAgICAgICAgICAgICA9IG1pbjsKLWV4cG9ydHMubWF4ICAgICAgICAgICAgICAgICA9IG1h
eDsKLWV4cG9ydHMuYWJzICAgICAgICAgICAgICAgICA9IGFiczsKLWV4cG9ydHMubWF4X2ludCAg
ICAgICAgICAgICA9IG1heF9pbnQ7Ci1leHBvcnRzLm1pbl9pbnQgICAgICAgICAgICAgPSBtaW5f
aW50OwotZXhwb3J0cy5sbm90ICAgICAgICAgICAgICAgID0gbG5vdDsKLWV4cG9ydHMuaW5maW5p
dHkgICAgICAgICAgICA9IGluZmluaXR5OwotZXhwb3J0cy5uZWdfaW5maW5pdHkgICAgICAgID0g
bmVnX2luZmluaXR5OwotZXhwb3J0cy5uYW4gICAgICAgICAgICAgICAgID0gbmFuOwotZXhwb3J0
cy5tYXhfZmxvYXQgICAgICAgICAgID0gbWF4X2Zsb2F0OwotZXhwb3J0cy5taW5fZmxvYXQgICAg
ICAgICAgID0gbWluX2Zsb2F0OwotZXhwb3J0cy5lcHNpbG9uX2Zsb2F0ICAgICAgID0gZXBzaWxv
bl9mbG9hdDsKLWV4cG9ydHMuJGNhcmV0ICAgICAgICAgICAgICA9ICRjYXJldDsKLWV4cG9ydHMu
Y2hhcl9vZl9pbnQgICAgICAgICA9IGNoYXJfb2ZfaW50OwotZXhwb3J0cy5zdHJpbmdfb2ZfYm9v
bCAgICAgID0gc3RyaW5nX29mX2Jvb2w7Ci1leHBvcnRzLmJvb2xfb2Zfc3RyaW5nICAgICAgPSBi
b29sX29mX3N0cmluZzsKLWV4cG9ydHMuc3RyaW5nX29mX2ludCAgICAgICA9IHN0cmluZ19vZl9p
bnQ7Ci1leHBvcnRzLnN0cmluZ19vZl9mbG9hdCAgICAgPSBzdHJpbmdfb2ZfZmxvYXQ7Ci1leHBv
cnRzLiRhdCAgICAgICAgICAgICAgICAgPSAkYXQ7Ci1leHBvcnRzLnN0ZGluICAgICAgICAgICAg
ICAgPSBzdGRpbjsKLWV4cG9ydHMuc3Rkb3V0ICAgICAgICAgICAgICA9IHN0ZG91dDsKLWV4cG9y
dHMuc3RkZXJyICAgICAgICAgICAgICA9IHN0ZGVycjsKLWV4cG9ydHMucHJpbnRfY2hhciAgICAg
ICAgICA9IHByaW50X2NoYXI7Ci1leHBvcnRzLnByaW50X3N0cmluZyAgICAgICAgPSBwcmludF9z
dHJpbmc7Ci1leHBvcnRzLnByaW50X2J5dGVzICAgICAgICAgPSBwcmludF9ieXRlczsKLWV4cG9y
dHMucHJpbnRfaW50ICAgICAgICAgICA9IHByaW50X2ludDsKLWV4cG9ydHMucHJpbnRfZmxvYXQg
ICAgICAgICA9IHByaW50X2Zsb2F0OwotZXhwb3J0cy5wcmludF9lbmRsaW5lICAgICAgID0gcHJp
bnRfZW5kbGluZTsKLWV4cG9ydHMucHJpbnRfbmV3bGluZSAgICAgICA9IHByaW50X25ld2xpbmU7
Ci1leHBvcnRzLnByZXJyX2NoYXIgICAgICAgICAgPSBwcmVycl9jaGFyOwotZXhwb3J0cy5wcmVy
cl9zdHJpbmcgICAgICAgID0gcHJlcnJfc3RyaW5nOwotZXhwb3J0cy5wcmVycl9ieXRlcyAgICAg
ICAgID0gcHJlcnJfYnl0ZXM7Ci1leHBvcnRzLnByZXJyX2ludCAgICAgICAgICAgPSBwcmVycl9p
bnQ7Ci1leHBvcnRzLnByZXJyX2Zsb2F0ICAgICAgICAgPSBwcmVycl9mbG9hdDsKLWV4cG9ydHMu
cHJlcnJfZW5kbGluZSAgICAgICA9IHByZXJyX2VuZGxpbmU7Ci1leHBvcnRzLnByZXJyX25ld2xp
bmUgICAgICAgPSBwcmVycl9uZXdsaW5lOwotZXhwb3J0cy5yZWFkX2xpbmUgICAgICAgICAgID0g
cmVhZF9saW5lOwotZXhwb3J0cy5yZWFkX2ludCAgICAgICAgICAgID0gcmVhZF9pbnQ7Ci1leHBv
cnRzLnJlYWRfZmxvYXQgICAgICAgICAgPSByZWFkX2Zsb2F0OwotZXhwb3J0cy5vcGVuX291dCAg
ICAgICAgICAgID0gb3Blbl9vdXQ7Ci1leHBvcnRzLm9wZW5fb3V0X2JpbiAgICAgICAgPSBvcGVu
X291dF9iaW47Ci1leHBvcnRzLm9wZW5fb3V0X2dlbiAgICAgICAgPSBvcGVuX291dF9nZW47Ci1l
eHBvcnRzLmZsdXNoICAgICAgICAgICAgICAgPSBmbHVzaDsKLWV4cG9ydHMuZmx1c2hfYWxsICAg
ICAgICAgICA9IGZsdXNoX2FsbDsKLWV4cG9ydHMub3V0cHV0X2NoYXIgICAgICAgICA9IG91dHB1
dF9jaGFyOwotZXhwb3J0cy5vdXRwdXRfc3RyaW5nICAgICAgID0gb3V0cHV0X3N0cmluZzsKLWV4
cG9ydHMub3V0cHV0X2J5dGVzICAgICAgICA9IG91dHB1dF9ieXRlczsKLWV4cG9ydHMub3V0cHV0
ICAgICAgICAgICAgICA9IG91dHB1dDsKLWV4cG9ydHMub3V0cHV0X3N1YnN0cmluZyAgICA9IG91
dHB1dF9zdWJzdHJpbmc7Ci1leHBvcnRzLm91dHB1dF9ieXRlICAgICAgICAgPSBvdXRwdXRfYnl0
ZTsKLWV4cG9ydHMub3V0cHV0X2JpbmFyeV9pbnQgICA9IG91dHB1dF9iaW5hcnlfaW50OwotZXhw
b3J0cy5vdXRwdXRfdmFsdWUgICAgICAgID0gb3V0cHV0X3ZhbHVlOwotZXhwb3J0cy5zZWVrX291
dCAgICAgICAgICAgID0gc2Vla19vdXQ7Ci1leHBvcnRzLnBvc19vdXQgICAgICAgICAgICAgPSBw
b3Nfb3V0OwotZXhwb3J0cy5vdXRfY2hhbm5lbF9sZW5ndGggID0gb3V0X2NoYW5uZWxfbGVuZ3Ro
OwotZXhwb3J0cy5jbG9zZV9vdXQgICAgICAgICAgID0gY2xvc2Vfb3V0OwotZXhwb3J0cy5jbG9z
ZV9vdXRfbm9lcnIgICAgID0gY2xvc2Vfb3V0X25vZXJyOwotZXhwb3J0cy5zZXRfYmluYXJ5X21v
ZGVfb3V0ID0gc2V0X2JpbmFyeV9tb2RlX291dDsKLWV4cG9ydHMub3Blbl9pbiAgICAgICAgICAg
ICA9IG9wZW5faW47Ci1leHBvcnRzLm9wZW5faW5fYmluICAgICAgICAgPSBvcGVuX2luX2JpbjsK
LWV4cG9ydHMub3Blbl9pbl9nZW4gICAgICAgICA9IG9wZW5faW5fZ2VuOwotZXhwb3J0cy5pbnB1
dF9jaGFyICAgICAgICAgID0gaW5wdXRfY2hhcjsKLWV4cG9ydHMuaW5wdXRfbGluZSAgICAgICAg
ICA9IGlucHV0X2xpbmU7Ci1leHBvcnRzLmlucHV0ICAgICAgICAgICAgICAgPSBpbnB1dDsKLWV4
cG9ydHMucmVhbGx5X2lucHV0ICAgICAgICA9IHJlYWxseV9pbnB1dDsKLWV4cG9ydHMucmVhbGx5
X2lucHV0X3N0cmluZyA9IHJlYWxseV9pbnB1dF9zdHJpbmc7Ci1leHBvcnRzLmlucHV0X2J5dGUg
ICAgICAgICAgPSBpbnB1dF9ieXRlOwotZXhwb3J0cy5pbnB1dF9iaW5hcnlfaW50ICAgID0gaW5w
dXRfYmluYXJ5X2ludDsKLWV4cG9ydHMuaW5wdXRfdmFsdWUgICAgICAgICA9IGlucHV0X3ZhbHVl
OwotZXhwb3J0cy5zZWVrX2luICAgICAgICAgICAgID0gc2Vla19pbjsKLWV4cG9ydHMucG9zX2lu
ICAgICAgICAgICAgICA9IHBvc19pbjsKLWV4cG9ydHMuaW5fY2hhbm5lbF9sZW5ndGggICA9IGlu
X2NoYW5uZWxfbGVuZ3RoOwotZXhwb3J0cy5jbG9zZV9pbiAgICAgICAgICAgID0gY2xvc2VfaW47
Ci1leHBvcnRzLmNsb3NlX2luX25vZXJyICAgICAgPSBjbG9zZV9pbl9ub2VycjsKLWV4cG9ydHMu
c2V0X2JpbmFyeV9tb2RlX2luICA9IHNldF9iaW5hcnlfbW9kZV9pbjsKLWV4cG9ydHMuTGFyZ2VG
aWxlICAgICAgICAgICA9IExhcmdlRmlsZTsKLWV4cG9ydHMuc3RyaW5nX29mX2Zvcm1hdCAgICA9
IHN0cmluZ19vZl9mb3JtYXQ7Ci1leHBvcnRzLiRjYXJldCRjYXJldCAgICAgICAgPSAkY2FyZXQk
Y2FyZXQ7Ci1leHBvcnRzLmV4aXQgICAgICAgICAgICAgICAgPSBleGl0OwotZXhwb3J0cy5hdF9l
eGl0ICAgICAgICAgICAgID0gYXRfZXhpdDsKLWV4cG9ydHMudmFsaWRfZmxvYXRfbGV4ZW0gICA9
IHZhbGlkX2Zsb2F0X2xleGVtOwotZXhwb3J0cy51bnNhZmVfcmVhbGx5X2lucHV0ID0gdW5zYWZl
X3JlYWxseV9pbnB1dDsKLWV4cG9ydHMuZG9fYXRfZXhpdCAgICAgICAgICA9IGRvX2F0X2V4aXQ7
Ci0vKiBObyBzaWRlIGVmZmVjdCAqLwotLy8vLy8vLy8gZW5kIG9mIHBlcnZhc2l2ZXMuanMgLy8v
Ly8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsncHJpbnRm
J10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQg
b2YgcHJpbnRmLmpzIC8vLy8vLy8vCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBDdXJyeSAgICAgICAg
ICAgICAgPSByZXF1aXJlKCIuL2N1cnJ5Iik7Ci12YXIgQnVmZmVyICAgICAgICAgICAgID0gcmVx
dWlyZSgiLi9idWZmZXIiKTsKLXZhciBQZXJ2YXNpdmVzICAgICAgICAgPSByZXF1aXJlKCIuL3Bl
cnZhc2l2ZXMiKTsKLXZhciBDYW1saW50ZXJuYWxGb3JtYXQgPSByZXF1aXJlKCIuL2NhbWxpbnRl
cm5hbEZvcm1hdCIpOwotCi1mdW5jdGlvbiBrZnByaW50ZihrLCBvLCBwYXJhbSkgewotICByZXR1
cm4gQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGZ1bmN0aW9uIChvLCBhY2MpIHsKLSAg
ICAgICAgICAgICAgQ2FtbGludGVybmFsRm9ybWF0Lm91dHB1dF9hY2MobywgYWNjKTsKLSAgICAg
ICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGssIG8pOwotICAgICAgICAgICAgfSwgbywgLyogRW5k
X29mX2FjYyAqLzAsIHBhcmFtWzBdKTsKLX0KLQotZnVuY3Rpb24ga2JwcmludGYoaywgYiwgcGFy
YW0pIHsKLSAgcmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3ByaW50ZihmdW5jdGlvbiAo
YiwgYWNjKSB7Ci0gICAgICAgICAgICAgIENhbWxpbnRlcm5hbEZvcm1hdC5idWZwdXRfYWNjKGIs
IGFjYyk7Ci0gICAgICAgICAgICAgIHJldHVybiBDdXJyeS5fMShrLCBiKTsKLSAgICAgICAgICAg
IH0sIGIsIC8qIEVuZF9vZl9hY2MgKi8wLCBwYXJhbVswXSk7Ci19Ci0KLWZ1bmN0aW9uIGlrZnBy
aW50ZihrLCBvYywgcGFyYW0pIHsKLSAgcmV0dXJuIENhbWxpbnRlcm5hbEZvcm1hdC5tYWtlX3By
aW50ZihmdW5jdGlvbiAob2MsIF8pIHsKLSAgICAgICAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKGss
IG9jKTsKLSAgICAgICAgICAgIH0sIG9jLCAvKiBFbmRfb2ZfYWNjICovMCwgcGFyYW1bMF0pOwot
fQotCi1mdW5jdGlvbiBmcHJpbnRmKG9jLCBmbXQpIHsKLSAgcmV0dXJuIGtmcHJpbnRmKGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAgICAgICAgICAgIH0s
IG9jLCBmbXQpOwotfQotCi1mdW5jdGlvbiBicHJpbnRmKGIsIGZtdCkgewotICByZXR1cm4ga2Jw
cmludGYoZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICByZXR1cm4gLyogKCkgKi8wOwotICAg
ICAgICAgICAgfSwgYiwgZm10KTsKLX0KLQotZnVuY3Rpb24gaWZwcmludGYob2MsIGZtdCkgewot
ICByZXR1cm4gaWtmcHJpbnRmKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIC8q
ICgpICovMDsKLSAgICAgICAgICAgIH0sIG9jLCBmbXQpOwotfQotCi1mdW5jdGlvbiBwcmludGYo
Zm10KSB7Ci0gIHJldHVybiBmcHJpbnRmKFBlcnZhc2l2ZXMuc3Rkb3V0LCBmbXQpOwotfQotCi1m
dW5jdGlvbiBlcHJpbnRmKGZtdCkgewotICByZXR1cm4gZnByaW50ZihQZXJ2YXNpdmVzLnN0ZGVy
ciwgZm10KTsKLX0KLQotZnVuY3Rpb24ga3NwcmludGYoaywgcGFyYW0pIHsKLSAgdmFyIGskcHJp
bWUgPSBmdW5jdGlvbiAoXywgYWNjKSB7Ci0gICAgdmFyIGJ1ZiA9IEJ1ZmZlci5jcmVhdGUoNjQp
OwotICAgIENhbWxpbnRlcm5hbEZvcm1hdC5zdHJwdXRfYWNjKGJ1ZiwgYWNjKTsKLSAgICByZXR1
cm4gQ3VycnkuXzEoaywgQnVmZmVyLmNvbnRlbnRzKGJ1ZikpOwotICB9OwotICByZXR1cm4gQ2Ft
bGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmKGskcHJpbWUsIC8qICgpICovMCwgLyogRW5kX29m
X2FjYyAqLzAsIHBhcmFtWzBdKTsKLX0KLQotZnVuY3Rpb24gc3ByaW50ZihmbXQpIHsKLSAgcmV0
dXJuIGtzcHJpbnRmKGZ1bmN0aW9uIChzKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBzOwotICAg
ICAgICAgICAgfSwgZm10KTsKLX0KLQotdmFyIGtwcmludGYgPSBrc3ByaW50ZjsKLQotZXhwb3J0
cy5mcHJpbnRmICAgPSBmcHJpbnRmOwotZXhwb3J0cy5wcmludGYgICAgPSBwcmludGY7Ci1leHBv
cnRzLmVwcmludGYgICA9IGVwcmludGY7Ci1leHBvcnRzLnNwcmludGYgICA9IHNwcmludGY7Ci1l
eHBvcnRzLmJwcmludGYgICA9IGJwcmludGY7Ci1leHBvcnRzLmlmcHJpbnRmICA9IGlmcHJpbnRm
OwotZXhwb3J0cy5rZnByaW50ZiAgPSBrZnByaW50ZjsKLWV4cG9ydHMuaWtmcHJpbnRmID0gaWtm
cHJpbnRmOwotZXhwb3J0cy5rc3ByaW50ZiAgPSBrc3ByaW50ZjsKLWV4cG9ydHMua2JwcmludGYg
ID0ga2JwcmludGY7Ci1leHBvcnRzLmtwcmludGYgICA9IGtwcmludGY7Ci0vKiBObyBzaWRlIGVm
ZmVjdCAqLwotLy8vLy8vLy8gZW5kIG9mIHByaW50Zi5qcyAvLy8vLy8vLwotICAgIHJldHVybiBl
eHBvcnRzOwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydwcmludCddID0gZnVuY3Rpb24oKSB7Ci0g
ICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8vLy8vLy8vIHN0YXJ0IG9mIHByaW50LmpzIC8vLy8vLy8v
Ci0vLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJ
VCBXSVRIIENBUkUKLSd1c2Ugc3RyaWN0JzsKLQotdmFyIExpc3QgICAgPSByZXF1aXJlKCJicy1w
bGF0Zm9ybS9saWIvanMvbGlzdCIpOwotdmFyIFNleHByICAgPSByZXF1aXJlKCIuL3NleHByIik7
Ci12YXIgQXJyYW5nZSA9IHJlcXVpcmUoIi4vYXJyYW5nZSIpOwotCi1mdW5jdGlvbiBpbnN0cihv
Yywgd2lkdGgsIGUpIHsKLSAgcmV0dXJuIFNleHByLm91dHB1dChvYywgd2lkdGgsIEFycmFuZ2Uu
aW5zdHIoZSkpOwotfQotCi1mdW5jdGlvbiBmdW5jKG9jLCB3aWR0aCwgZikgewotICByZXR1cm4g
U2V4cHIub3V0cHV0KG9jLCB3aWR0aCwgQXJyYW5nZS5mdW5jKGYpKTsKLX0KLQotZnVuY3Rpb24g
bW9kdWxlXyhvYywgd2lkdGgsIG0pIHsKLSAgcmV0dXJuIFNleHByLm91dHB1dChvYywgd2lkdGgs
IEFycmFuZ2UubW9kdWxlXyhtKSk7Ci19Ci0KLWZ1bmN0aW9uIHNjcmlwdChvYywgd2lkdGgsIG1v
ZGUsIHMpIHsKLSAgcmV0dXJuIExpc3QuaXRlcihmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAg
ICAgICAgcmV0dXJuIFNleHByLm91dHB1dChvYywgd2lkdGgsIHBhcmFtKTsKLSAgICAgICAgICAg
IH0sIEFycmFuZ2Uuc2NyaXB0KG1vZGUsIHMpKTsKLX0KLQotZXhwb3J0cy5pbnN0ciAgID0gaW5z
dHI7Ci1leHBvcnRzLmZ1bmMgICAgPSBmdW5jOwotZXhwb3J0cy5tb2R1bGVfID0gbW9kdWxlXzsK
LWV4cG9ydHMuc2NyaXB0ICA9IHNjcmlwdDsKLS8qIEFycmFuZ2UgTm90IGEgcHVyZSBtb2R1bGUg
Ki8KLS8vLy8vLy8vIGVuZCBvZiBwcmludC5qcyAvLy8vLy8vLwotICAgIHJldHVybiBleHBvcnRz
OwotICB9OwotCi0KLSAgX3JlZ2lzdHJ5WydzY3JpcHQnXSA9IGZ1bmN0aW9uKCkgewotICAgIGxl
dCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiBzY3JpcHQuanMgLy8vLy8vLy8KLS8v
IEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVSU0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJ
VEggQ0FSRQotJ3VzZSBzdHJpY3QnOwotCi12YXIgQ2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgi
YnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfZXhjZXB0aW9ucyIpOwotCi12YXIgU3ludGF4ID0gQ2Ft
bF9leGNlcHRpb25zLmNyZWF0ZSgiU2NyaXB0LlN5bnRheCIpOwotCi1leHBvcnRzLlN5bnRheCA9
IFN5bnRheDsKLS8qIE5vIHNpZGUgZWZmZWN0ICovCi0vLy8vLy8vLyBlbmQgb2Ygc2NyaXB0Lmpz
IC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ3Nl
eHByJ10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9OwotLy8vLy8vLy8gc3Rh
cnQgb2Ygc2V4cHIuanMgLy8vLy8vLy8KLS8vIEdlbmVyYXRlZCBieSBCVUNLTEVTQ1JJUFQgVkVS
U0lPTiAxLjQuMyAsIFBMRUFTRSBFRElUIFdJVEggQ0FSRQotJ3VzZSBzdHJpY3QnOwotCi12YXIg
TGlzdCAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Ci12YXIgQmxv
Y2sgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9ibG9jayIpOwotdmFyIEN1cnJ5
ICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvY3VycnkiKTsKLXZhciAkJFN0cmlu
ZyAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIpOwotdmFyIFBlcnZhc2l2
ZXMgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvcGVydmFzaXZlcyIpOwotCi1mdW5jdGlv
biAkY2FyZXQkcGx1cyhzLCByKSB7Ci0gIHJldHVybiAvKiBDb25jYXQgKi9CbG9jay5fXygxLCBb
LyogOjogKi9bCi0gICAgICAgICAgICAgIC8qIExlYWYgKi9CbG9jay5fXygwLCBbc10pLAotICAg
ICAgICAgICAgICAvKiA6OiAqL1sKLSAgICAgICAgICAgICAgICByLAotICAgICAgICAgICAgICAg
IC8qIFtdICovMAotICAgICAgICAgICAgICBdCi0gICAgICAgICAgICBdXSk7Ci19Ci0KLWZ1bmN0
aW9uICRwbHVzJGNhcmV0KHIsIHMpIHsKLSAgcmV0dXJuIC8qIENvbmNhdCAqL0Jsb2NrLl9fKDEs
IFsvKiA6OiAqL1sKLSAgICAgICAgICAgICAgciwKLSAgICAgICAgICAgICAgLyogOjogKi9bCi0g
ICAgICAgICAgICAgICAgLyogTGVhZiAqL0Jsb2NrLl9fKDAsIFtzXSksCi0gICAgICAgICAgICAg
ICAgLyogW10gKi8wCi0gICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIF1dKTsKLX0KLQotZnVu
Y3Rpb24gaXRlcihmLCBwYXJhbSkgewotICBpZiAocGFyYW0udGFnKSB7Ci0gICAgcmV0dXJuIExp
c3QuaXRlcihmdW5jdGlvbiAocGFyYW0pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihm
LCBwYXJhbSk7Ci0gICAgICAgICAgICAgIH0sIHBhcmFtWzBdKTsKLSAgfQotICBlbHNlIHsKLSAg
ICByZXR1cm4gQ3VycnkuXzEoZiwgcGFyYW1bMF0pOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNvbmNh
dChwYXJhbSkgewotICBpZiAocGFyYW0udGFnKSB7Ci0gICAgcmV0dXJuICQkU3RyaW5nLmNvbmNh
dCgiIiwgTGlzdC5tYXAoY29uY2F0LCBwYXJhbVswXSkpOwotICB9Ci0gIGVsc2UgewotICAgIHJl
dHVybiBwYXJhbVswXTsKLSAgfQotfQotCi1mdW5jdGlvbiBwcChvZmYsIHdpZHRoLCBwYXJhbSkg
ewotICBpZiAocGFyYW0udGFnKSB7Ci0gICAgdmFyIHMgPSBwYXJhbVswXTsKLSAgICB2YXIgcGFy
dGlhbF9hcmcgPSBvZmYgKyAyIHwgMDsKLSAgICB2YXIgbWF0Y2ggPSBMaXN0LnNwbGl0KExpc3Qu
bWFwKGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICAgICAgICByZXR1cm4gcHAocGFydGlhbF9h
cmcsIHdpZHRoLCBwYXJhbSk7Ci0gICAgICAgICAgICB9LCBwYXJhbVsxXSkpOwotICAgIHZhciBy
cyA9IG1hdGNoWzFdOwotICAgIHZhciBsZW4gPSAocy5sZW5ndGggKyBMaXN0Lmxlbmd0aChycykg
fCAwKSArIExpc3QuZm9sZF9sZWZ0KGZ1bmN0aW9uIChwcmltLCBwcmltJDEpIHsKLSAgICAgICAg
ICByZXR1cm4gcHJpbSArIHByaW0kMSB8IDA7Ci0gICAgICAgIH0sIDIsIG1hdGNoWzBdKSB8IDA7
Ci0gICAgdmFyIG1hdGNoJDE7Ci0gICAgaWYgKChvZmYgKyBsZW4gfCAwKSA8PSB3aWR0aCkgewot
ICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWwotICAgICAgICAiICIsCi0gICAgICAgICIiCi0g
ICAgICBdOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHZhciBpbmRlbnQgPSAkJFN0cmluZy5t
YWtlKG9mZiwgLyogIiAiICovMzIpOwotICAgICAgbWF0Y2gkMSA9IC8qIHR1cGxlICovWwotICAg
ICAgICAiXG4gICIgKyBpbmRlbnQsCi0gICAgICAgICJcbiIgKyBpbmRlbnQKLSAgICAgIF07Ci0g
ICAgfQotICAgIHZhciBzZXAgPSBtYXRjaCQxWzBdOwotICAgIHJldHVybiAvKiB0dXBsZSAqL1sK
LSAgICAgICAgICAgIGxlbiwKLSAgICAgICAgICAgICRjYXJldCRwbHVzKCIoIiwgJGNhcmV0JHBs
dXMocywgJHBsdXMkY2FyZXQoJHBsdXMkY2FyZXQoLyogQ29uY2F0ICovQmxvY2suX18oMSwgW0xp
c3QubWFwKGZ1bmN0aW9uIChyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAkY2FyZXQkcGx1cyhzZXAsIHIpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwgcnMpXSksIG1hdGNoJDFbMV0pLCAiKSIpKSkKLSAgICAgICAgICBdOwot
ICB9Ci0gIGVsc2UgewotICAgIHZhciBzJDEgPSBwYXJhbVswXTsKLSAgICByZXR1cm4gLyogdHVw
bGUgKi9bCi0gICAgICAgICAgICBzJDEubGVuZ3RoLAotICAgICAgICAgICAgLyogTGVhZiAqL0Js
b2NrLl9fKDAsIFtzJDFdKQotICAgICAgICAgIF07Ci0gIH0KLX0KLQotZnVuY3Rpb24gb3V0cHV0
KG9jLCB3aWR0aCwgeCkgewotICBpdGVyKGZ1bmN0aW9uIChwYXJhbSkgewotICAgICAgICByZXR1
cm4gUGVydmFzaXZlcy5vdXRwdXRfc3RyaW5nKG9jLCBwYXJhbSk7Ci0gICAgICB9LCBwcCgwLCB3
aWR0aCwgeClbMV0pOwotICBQZXJ2YXNpdmVzLm91dHB1dF9zdHJpbmcob2MsICJcbiIpOwotICBy
ZXR1cm4gQ3VycnkuXzEoUGVydmFzaXZlcy5mbHVzaCwgb2MpOwotfQotCi1mdW5jdGlvbiBwcmlu
dChwYXJhbSwgcGFyYW0kMSkgewotICByZXR1cm4gb3V0cHV0KFBlcnZhc2l2ZXMuc3Rkb3V0LCBw
YXJhbSwgcGFyYW0kMSk7Ci19Ci0KLWZ1bmN0aW9uIHRvX3N0cmluZyh3aWR0aCwgeCkgewotICBy
ZXR1cm4gY29uY2F0KHBwKDAsIHdpZHRoLCB4KVsxXSkgKyAiXG4iOwotfQotCi1leHBvcnRzLm91
dHB1dCAgICA9IG91dHB1dDsKLWV4cG9ydHMucHJpbnQgICAgID0gcHJpbnQ7Ci1leHBvcnRzLnRv
X3N0cmluZyA9IHRvX3N0cmluZzsKLS8qIE5vIHNpZGUgZWZmZWN0ICovCi0vLy8vLy8vLyBlbmQg
b2Ygc2V4cHIuanMgLy8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9y
ZWdpc3RyeVsnc291cmNlJ10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0cyA9IHt9Owot
Ly8vLy8vLy8gc3RhcnQgb2Ygc291cmNlLmpzIC8vLy8vLy8vCi0vLyBHZW5lcmF0ZWQgYnkgQlVD
S0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJVCBXSVRIIENBUkUKLSd1c2Ugc3Ry
aWN0JzsKLQotdmFyIEJsb2NrICAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvYmxv
Y2siKTsKLXZhciBDdXJyeSAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5
Iik7Ci12YXIgUHJpbnRmICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wcmludGYi
KTsKLXZhciBDYW1sX29iaiAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2NhbWxfb2Jq
Iik7Ci12YXIgUGVydmFzaXZlcyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNp
dmVzIik7Ci0KLWZ1bmN0aW9uICRhdCRhdCh4LCByZWdpb24pIHsKLSAgcmV0dXJuIC8qIHJlY29y
ZCAqL1sKLSAgICAgICAgICAvKiBhdCAqL3JlZ2lvbiwKLSAgICAgICAgICAvKiBpdCAqL3gKLSAg
ICAgICAgXTsKLX0KLQotdmFyIG5vX3BvcyA9IC8qIHJlY29yZCAqL1sKLSAgLyogZmlsZSAqLyIi
LAotICAvKiBsaW5lICovMCwKLSAgLyogY29sdW1uICovMAotXTsKLQotdmFyIG5vX3JlZ2lvbiA9
IC8qIHJlY29yZCAqL1sKLSAgLyogbGVmdCAqL25vX3BvcywKLSAgLyogcmlnaHQgKi9ub19wb3MK
LV07Ci0KLWZ1bmN0aW9uIHN0cmluZ19vZl9wb3MocG9zKSB7Ci0gIGlmIChwb3NbLyogbGluZSAq
LzFdID09PSAtMSkgewotICAgIHJldHVybiBDdXJyeS5fMShQcmludGYuc3ByaW50ZigvKiBGb3Jt
YXQgKi9bCi0gICAgICAgICAgICAgICAgICAgIC8qIFN0cmluZ19saXRlcmFsICovQmxvY2suX18o
MTEsIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICIweCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAvKiBJbnQgKi9CbG9jay5fXyg0LCBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogSW50X3ggKi82LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3BhZGRpbmcg
Ki8wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vX3ByZWNpc2lvbiAqLzAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRW5kX29mX2Zvcm1hdCAqLzAKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSkKLSAgICAgICAgICAgICAgICAgICAgICBdKSwKLSAgICAgICAg
ICAgICAgICAgICAgIjB4JXgiCi0gICAgICAgICAgICAgICAgICBdKSwgcG9zWy8qIGNvbHVtbiAq
LzJdKTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gUGVydmFzaXZlcy5zdHJpbmdfb2ZfaW50
KHBvc1svKiBsaW5lICovMV0pICsgKCIuIiArIFBlcnZhc2l2ZXMuc3RyaW5nX29mX2ludChwb3Nb
LyogY29sdW1uICovMl0gKyAxIHwgMCkpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHN0cmluZ19vZl9y
ZWdpb24ocikgewotICByZXR1cm4gclsvKiBsZWZ0ICovMF1bLyogZmlsZSAqLzBdICsgKCI6IiAr
IChzdHJpbmdfb2ZfcG9zKHJbLyogbGVmdCAqLzBdKSArICgKLSAgICAgICAgICAgICAgQ2FtbF9v
YmouY2FtbF9lcXVhbChyWy8qIHJpZ2h0ICovMV0sIHJbLyogbGVmdCAqLzBdKSA/ICIiIDogIi0i
ICsgc3RyaW5nX29mX3BvcyhyWy8qIHJpZ2h0ICovMV0pCi0gICAgICAgICAgICApKSk7Ci19Ci0K
LWV4cG9ydHMubm9fcG9zICAgICAgICAgICA9IG5vX3BvczsKLWV4cG9ydHMubm9fcmVnaW9uICAg
ICAgICA9IG5vX3JlZ2lvbjsKLWV4cG9ydHMuc3RyaW5nX29mX3BvcyAgICA9IHN0cmluZ19vZl9w
b3M7Ci1leHBvcnRzLnN0cmluZ19vZl9yZWdpb24gPSBzdHJpbmdfb2ZfcmVnaW9uOwotZXhwb3J0
cy4kYXQkYXQgICAgICAgICAgID0gJGF0JGF0OwotLyogTm8gc2lkZSBlZmZlY3QgKi8KLS8vLy8v
Ly8vIGVuZCBvZiBzb3VyY2UuanMgLy8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsK
LQotCi0gIF9yZWdpc3RyeVsnc3RyaW5nJ10gPSBmdW5jdGlvbigpIHsKLSAgICBsZXQgZXhwb3J0
cyA9IHt9OwotLy8vLy8vLy8gc3RhcnQgb2Ygc3RyaW5nLmpzIC8vLy8vLy8vCi0ndXNlIHN0cmlj
dCc7Ci0KLXZhciBMaXN0ICAgICAgICA9IHJlcXVpcmUoIi4vbGlzdCIpOwotdmFyIEJ5dGVzICAg
ICAgID0gcmVxdWlyZSgiLi9ieXRlcyIpOwotdmFyIENhbWxfaW50MzIgID0gcmVxdWlyZSgiLi9j
YW1sX2ludDMyIik7Ci12YXIgQ2FtbF9zdHJpbmcgPSByZXF1aXJlKCIuL2NhbWxfc3RyaW5nIik7
Ci0KLWZ1bmN0aW9uIG1ha2UobiwgYykgewotICByZXR1cm4gQ2FtbF9zdHJpbmcuYnl0ZXNfdG9f
c3RyaW5nKEJ5dGVzLm1ha2UobiwgYykpOwotfQotCi1mdW5jdGlvbiBpbml0KG4sIGYpIHsKLSAg
cmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5pbml0KG4sIGYpKTsKLX0K
LQotZnVuY3Rpb24gY29weShzKSB7Ci0gIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJp
bmcoQnl0ZXMuY29weShDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocykpKTsKLX0KLQotZnVu
Y3Rpb24gc3ViKHMsIG9mcywgbGVuKSB7Ci0gIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19z
dHJpbmcoQnl0ZXMuc3ViKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgb2ZzLCBsZW4p
KTsKLX0KLQotZnVuY3Rpb24gY29uY2F0KHNlcCwgbCkgewotICBpZiAobCkgewotICAgIHZhciBo
ZCA9IGxbMF07Ci0gICAgdmFyIG51bSA9IFswXTsKLSAgICB2YXIgbGVuID0gWzBdOwotICAgIExp
c3QuaXRlcihmdW5jdGlvbiAocykgewotICAgICAgICAgIG51bVswXSA9IG51bVswXSArIDEgfCAw
OwotICAgICAgICAgIGxlblswXSA9IGxlblswXSArIHMubGVuZ3RoIHwgMDsKLSAgICAgICAgICBy
ZXR1cm4gLyogKCkgKi8wOwotICAgICAgICB9LCBsKTsKLSAgICB2YXIgciA9IENhbWxfc3RyaW5n
LmNhbWxfY3JlYXRlX3N0cmluZyhsZW5bMF0gKyBDYW1sX2ludDMyLmltdWwoc2VwLmxlbmd0aCwg
bnVtWzBdIC0gMSB8IDApIHwgMCk7Ci0gICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0X3N0cmluZyho
ZCwgMCwgciwgMCwgaGQubGVuZ3RoKTsKLSAgICB2YXIgcG9zID0gW2hkLmxlbmd0aF07Ci0gICAg
TGlzdC5pdGVyKGZ1bmN0aW9uIChzKSB7Ci0gICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9ibGl0
X3N0cmluZyhzZXAsIDAsIHIsIHBvc1swXSwgc2VwLmxlbmd0aCk7Ci0gICAgICAgICAgcG9zWzBd
ID0gcG9zWzBdICsgc2VwLmxlbmd0aCB8IDA7Ci0gICAgICAgICAgQ2FtbF9zdHJpbmcuY2FtbF9i
bGl0X3N0cmluZyhzLCAwLCByLCBwb3NbMF0sIHMubGVuZ3RoKTsKLSAgICAgICAgICBwb3NbMF0g
PSBwb3NbMF0gKyBzLmxlbmd0aCB8IDA7Ci0gICAgICAgICAgcmV0dXJuIC8qICgpICovMDsKLSAg
ICAgICAgfSwgbFsxXSk7Ci0gICAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhy
KTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gIiI7Ci0gIH0KLX0KLQotZnVuY3Rpb24gaXRl
cihmLCBzKSB7Ci0gIHJldHVybiBCeXRlcy5pdGVyKGYsIENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0
cmluZyhzKSk7Ci19Ci0KLWZ1bmN0aW9uIGl0ZXJpKGYsIHMpIHsKLSAgcmV0dXJuIEJ5dGVzLml0
ZXJpKGYsIENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSk7Ci19Ci0KLWZ1bmN0aW9uIG1h
cChmLCBzKSB7Ci0gIHJldHVybiBDYW1sX3N0cmluZy5ieXRlc190b19zdHJpbmcoQnl0ZXMubWFw
KGYsIENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOwotfQotCi1mdW5jdGlvbiBtYXBp
KGYsIHMpIHsKLSAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5tYXBp
KGYsIENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSkpOwotfQotCi1mdW5jdGlvbiBpc19z
cGFjZShwYXJhbSkgewotICB2YXIgc3dpdGNoZXIgPSBwYXJhbSAtIDkgfCAwOwotICBpZiAoc3dp
dGNoZXIgPiA0IHx8IHN3aXRjaGVyIDwgMCkgewotICAgIGlmIChzd2l0Y2hlciAhPT0gMjMpIHsK
LSAgICAgIHJldHVybiAvKiBmYWxzZSAqLzA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgcmV0
dXJuIC8qIHRydWUgKi8xOwotICAgIH0KLSAgfQotICBlbHNlIGlmIChzd2l0Y2hlciAhPT0gMikg
ewotICAgIHJldHVybiAvKiB0cnVlICovMTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gLyog
ZmFsc2UgKi8wOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHRyaW0ocykgewotICBpZiAocyA9PT0gIiIg
fHwgIShpc19zcGFjZShzLmNoYXJDb2RlQXQoMCkpIHx8IGlzX3NwYWNlKHMuY2hhckNvZGVBdChz
Lmxlbmd0aCAtIDEgfCAwKSkpKSB7Ci0gICAgcmV0dXJuIHM7Ci0gIH0KLSAgZWxzZSB7Ci0gICAg
cmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy50cmltKENhbWxfc3RyaW5n
LmJ5dGVzX29mX3N0cmluZyhzKSkpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGVzY2FwZWQocykgewot
ICB2YXIgbmVlZHNfZXNjYXBlID0gZnVuY3Rpb24gKF9pKSB7Ci0gICAgd2hpbGUodHJ1ZSkgewot
ICAgICAgdmFyIGkgPSBfaTsKLSAgICAgIGlmIChpID49IHMubGVuZ3RoKSB7Ci0gICAgICAgIHJl
dHVybiAvKiBmYWxzZSAqLzA7Ci0gICAgICB9Ci0gICAgICBlbHNlIHsKLSAgICAgICAgdmFyIG1h
dGNoID0gcy5jaGFyQ29kZUF0KGkpOwotICAgICAgICBpZiAobWF0Y2ggPj0gMzIpIHsKLSAgICAg
ICAgICB2YXIgc3dpdGNoZXIgPSBtYXRjaCAtIDM0IHwgMDsKLSAgICAgICAgICBpZiAoc3dpdGNo
ZXIgPiA1OCB8fCBzd2l0Y2hlciA8IDApIHsKLSAgICAgICAgICAgIGlmIChzd2l0Y2hlciA+PSA5
MykgewotICAgICAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAg
ICAgICAgIGNvbnRpbnVlIDsKLSAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgfQotICAgICAgICAgIGVsc2UgaWYgKHN3aXRjaGVyID4gNTcgfHwgc3dpdGNoZXIgPCAxKSB7
Ci0gICAgICAgICAgICByZXR1cm4gLyogdHJ1ZSAqLzE7Ci0gICAgICAgICAgfQotICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgX2kgPSBpICsgMSB8IDA7Ci0gICAgICAgICAgICBjb250aW51
ZSA7Ci0gICAgICAgICAgICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgcmV0dXJuIC8qIHRydWUgKi8xOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAg
fTsKLSAgfTsKLSAgaWYgKG5lZWRzX2VzY2FwZSgwKSkgewotICAgIHJldHVybiBDYW1sX3N0cmlu
Zy5ieXRlc190b19zdHJpbmcoQnl0ZXMuZXNjYXBlZChDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJp
bmcocykpKTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gczsKLSAgfQotfQotCi1mdW5jdGlv
biBpbmRleChzLCBjKSB7Ci0gIHJldHVybiBCeXRlcy5pbmRleChDYW1sX3N0cmluZy5ieXRlc19v
Zl9zdHJpbmcocyksIGMpOwotfQotCi1mdW5jdGlvbiByaW5kZXgocywgYykgewotICByZXR1cm4g
Qnl0ZXMucmluZGV4KENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmluZyhzKSwgYyk7Ci19Ci0KLWZ1
bmN0aW9uIGluZGV4X2Zyb20ocywgaSwgYykgewotICByZXR1cm4gQnl0ZXMuaW5kZXhfZnJvbShD
YW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmcocyksIGksIGMpOwotfQotCi1mdW5jdGlvbiByaW5k
ZXhfZnJvbShzLCBpLCBjKSB7Ci0gIHJldHVybiBCeXRlcy5yaW5kZXhfZnJvbShDYW1sX3N0cmlu
Zy5ieXRlc19vZl9zdHJpbmcocyksIGksIGMpOwotfQotCi1mdW5jdGlvbiBjb250YWlucyhzLCBj
KSB7Ci0gIHJldHVybiBCeXRlcy5jb250YWlucyhDYW1sX3N0cmluZy5ieXRlc19vZl9zdHJpbmco
cyksIGMpOwotfQotCi1mdW5jdGlvbiBjb250YWluc19mcm9tKHMsIGksIGMpIHsKLSAgcmV0dXJu
IEJ5dGVzLmNvbnRhaW5zX2Zyb20oQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBj
KTsKLX0KLQotZnVuY3Rpb24gcmNvbnRhaW5zX2Zyb20ocywgaSwgYykgewotICByZXR1cm4gQnl0
ZXMucmNvbnRhaW5zX2Zyb20oQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMpLCBpLCBjKTsK
LX0KLQotZnVuY3Rpb24gdXBwZXJjYXNlKHMpIHsKLSAgcmV0dXJuIENhbWxfc3RyaW5nLmJ5dGVz
X3RvX3N0cmluZyhCeXRlcy51cHBlcmNhc2UoQ2FtbF9zdHJpbmcuYnl0ZXNfb2Zfc3RyaW5nKHMp
KSk7Ci19Ci0KLWZ1bmN0aW9uIGxvd2VyY2FzZShzKSB7Ci0gIHJldHVybiBDYW1sX3N0cmluZy5i
eXRlc190b19zdHJpbmcoQnl0ZXMubG93ZXJjYXNlKENhbWxfc3RyaW5nLmJ5dGVzX29mX3N0cmlu
ZyhzKSkpOwotfQotCi1mdW5jdGlvbiBjYXBpdGFsaXplKHMpIHsKLSAgcmV0dXJuIENhbWxfc3Ry
aW5nLmJ5dGVzX3RvX3N0cmluZyhCeXRlcy5jYXBpdGFsaXplKENhbWxfc3RyaW5nLmJ5dGVzX29m
X3N0cmluZyhzKSkpOwotfQotCi1mdW5jdGlvbiB1bmNhcGl0YWxpemUocykgewotICByZXR1cm4g
Q2FtbF9zdHJpbmcuYnl0ZXNfdG9fc3RyaW5nKEJ5dGVzLnVuY2FwaXRhbGl6ZShDYW1sX3N0cmlu
Zy5ieXRlc19vZl9zdHJpbmcocykpKTsKLX0KLQotdmFyIGNvbXBhcmUgPSBDYW1sX3N0cmluZy5j
YW1sX3N0cmluZ19jb21wYXJlOwotCi12YXIgZmlsbCA9IEJ5dGVzLmZpbGw7Ci0KLXZhciBibGl0
ID0gQnl0ZXMuYmxpdF9zdHJpbmc7Ci0KLWV4cG9ydHMubWFrZSAgICAgICAgICAgPSBtYWtlOwot
ZXhwb3J0cy5pbml0ICAgICAgICAgICA9IGluaXQ7Ci1leHBvcnRzLmNvcHkgICAgICAgICAgID0g
Y29weTsKLWV4cG9ydHMuc3ViICAgICAgICAgICAgPSBzdWI7Ci1leHBvcnRzLmZpbGwgICAgICAg
ICAgID0gZmlsbDsKLWV4cG9ydHMuYmxpdCAgICAgICAgICAgPSBibGl0OwotZXhwb3J0cy5jb25j
YXQgICAgICAgICA9IGNvbmNhdDsKLWV4cG9ydHMuaXRlciAgICAgICAgICAgPSBpdGVyOwotZXhw
b3J0cy5pdGVyaSAgICAgICAgICA9IGl0ZXJpOwotZXhwb3J0cy5tYXAgICAgICAgICAgICA9IG1h
cDsKLWV4cG9ydHMubWFwaSAgICAgICAgICAgPSBtYXBpOwotZXhwb3J0cy50cmltICAgICAgICAg
ICA9IHRyaW07Ci1leHBvcnRzLmVzY2FwZWQgICAgICAgID0gZXNjYXBlZDsKLWV4cG9ydHMuaW5k
ZXggICAgICAgICAgPSBpbmRleDsKLWV4cG9ydHMucmluZGV4ICAgICAgICAgPSByaW5kZXg7Ci1l
eHBvcnRzLmluZGV4X2Zyb20gICAgID0gaW5kZXhfZnJvbTsKLWV4cG9ydHMucmluZGV4X2Zyb20g
ICAgPSByaW5kZXhfZnJvbTsKLWV4cG9ydHMuY29udGFpbnMgICAgICAgPSBjb250YWluczsKLWV4
cG9ydHMuY29udGFpbnNfZnJvbSAgPSBjb250YWluc19mcm9tOwotZXhwb3J0cy5yY29udGFpbnNf
ZnJvbSA9IHJjb250YWluc19mcm9tOwotZXhwb3J0cy51cHBlcmNhc2UgICAgICA9IHVwcGVyY2Fz
ZTsKLWV4cG9ydHMubG93ZXJjYXNlICAgICAgPSBsb3dlcmNhc2U7Ci1leHBvcnRzLmNhcGl0YWxp
emUgICAgID0gY2FwaXRhbGl6ZTsKLWV4cG9ydHMudW5jYXBpdGFsaXplICAgPSB1bmNhcGl0YWxp
emU7Ci1leHBvcnRzLmNvbXBhcmUgICAgICAgID0gY29tcGFyZTsKLS8qIE5vIHNpZGUgZWZmZWN0
ICovCi0vLy8vLy8vLyBlbmQgb2Ygc3RyaW5nLmpzIC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9y
dHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ3N5cyddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0
IGV4cG9ydHMgPSB7fTsKLS8vLy8vLy8vIHN0YXJ0IG9mIHN5cy5qcyAvLy8vLy8vLwotJ3VzZSBz
dHJpY3QnOwotCi12YXIgQ2FtbF9leGNlcHRpb25zID0gcmVxdWlyZSgiLi9jYW1sX2V4Y2VwdGlv
bnMiKTsKLQotdmFyIGlzX2pzID0gLyogdHJ1ZSAqLzE7Ci0KLXZhciBtYXRjaF8wMDEgPSAvKiBh
cnJheSAqL1tdOwotCi12YXIgYmlnX2VuZGlhbiA9IC8qIGZhbHNlICovMDsKLQotdmFyIHVuaXgg
PSAvKiB0cnVlICovMTsKLQotdmFyIHdpbjMyID0gLyogZmFsc2UgKi8wOwotCi12YXIgY3lnd2lu
ID0gLyogZmFsc2UgKi8wOwotCi12YXIgbWF4X2FycmF5X2xlbmd0aCA9IDIxNDc0ODM2NDc7Ci0K
LXZhciBtYXhfc3RyaW5nX2xlbmd0aCA9IDIxNDc0ODM2NDc7Ci0KLXZhciBpbnRlcmFjdGl2ZSA9
IFsvKiBmYWxzZSAqLzBdOwotCi1mdW5jdGlvbiBzZXRfc2lnbmFsKF8sIF8kMSkgewotICByZXR1
cm4gLyogKCkgKi8wOwotfQotCi12YXIgQnJlYWsgPSBDYW1sX2V4Y2VwdGlvbnMuY3JlYXRlKCJT
eXMuQnJlYWsiKTsKLQotZnVuY3Rpb24gY2F0Y2hfYnJlYWsoKSB7Ci0gIHJldHVybiAvKiAoKSAq
LzA7Ci19Ci0KLXZhciBhcmd2ID0gbWF0Y2hfMDAxOwotCi12YXIgZXhlY3V0YWJsZV9uYW1lID0g
ImNtZCI7Ci0KLXZhciBvc190eXBlID0gIlVuaXgiOwotCi12YXIgd29yZF9zaXplID0gMzI7Ci0K
LXZhciBzaWdhYnJ0ID0gLTE7Ci0KLXZhciBzaWdhbHJtID0gLTI7Ci0KLXZhciBzaWdmcGUgPSAt
MzsKLQotdmFyIHNpZ2h1cCA9IC00OwotCi12YXIgc2lnaWxsID0gLTU7Ci0KLXZhciBzaWdpbnQg
PSAtNjsKLQotdmFyIHNpZ2tpbGwgPSAtNzsKLQotdmFyIHNpZ3BpcGUgPSAtODsKLQotdmFyIHNp
Z3F1aXQgPSAtOTsKLQotdmFyIHNpZ3NlZ3YgPSAtMTA7Ci0KLXZhciBzaWd0ZXJtID0gLTExOwot
Ci12YXIgc2lndXNyMSA9IC0xMjsKLQotdmFyIHNpZ3VzcjIgPSAtMTM7Ci0KLXZhciBzaWdjaGxk
ID0gLTE0OwotCi12YXIgc2lnY29udCA9IC0xNTsKLQotdmFyIHNpZ3N0b3AgPSAtMTY7Ci0KLXZh
ciBzaWd0c3RwID0gLTE3OwotCi12YXIgc2lndHRpbiA9IC0xODsKLQotdmFyIHNpZ3R0b3UgPSAt
MTk7Ci0KLXZhciBzaWd2dGFscm0gPSAtMjA7Ci0KLXZhciBzaWdwcm9mID0gLTIxOwotCi12YXIg
b2NhbWxfdmVyc2lvbiA9ICI0LjAyLjMrZGV2MS0yMDE1LTA3LTEwIjsKLQotZXhwb3J0cy5hcmd2
ICAgICAgICAgICAgICA9IGFyZ3Y7Ci1leHBvcnRzLmV4ZWN1dGFibGVfbmFtZSAgID0gZXhlY3V0
YWJsZV9uYW1lOwotZXhwb3J0cy5pbnRlcmFjdGl2ZSAgICAgICA9IGludGVyYWN0aXZlOwotZXhw
b3J0cy5vc190eXBlICAgICAgICAgICA9IG9zX3R5cGU7Ci1leHBvcnRzLnVuaXggICAgICAgICAg
ICAgID0gdW5peDsKLWV4cG9ydHMud2luMzIgICAgICAgICAgICAgPSB3aW4zMjsKLWV4cG9ydHMu
Y3lnd2luICAgICAgICAgICAgPSBjeWd3aW47Ci1leHBvcnRzLndvcmRfc2l6ZSAgICAgICAgID0g
d29yZF9zaXplOwotZXhwb3J0cy5iaWdfZW5kaWFuICAgICAgICA9IGJpZ19lbmRpYW47Ci1leHBv
cnRzLmlzX2pzICAgICAgICAgICAgID0gaXNfanM7Ci1leHBvcnRzLm1heF9zdHJpbmdfbGVuZ3Ro
ID0gbWF4X3N0cmluZ19sZW5ndGg7Ci1leHBvcnRzLm1heF9hcnJheV9sZW5ndGggID0gbWF4X2Fy
cmF5X2xlbmd0aDsKLWV4cG9ydHMuc2V0X3NpZ25hbCAgICAgICAgPSBzZXRfc2lnbmFsOwotZXhw
b3J0cy5zaWdhYnJ0ICAgICAgICAgICA9IHNpZ2FicnQ7Ci1leHBvcnRzLnNpZ2Fscm0gICAgICAg
ICAgID0gc2lnYWxybTsKLWV4cG9ydHMuc2lnZnBlICAgICAgICAgICAgPSBzaWdmcGU7Ci1leHBv
cnRzLnNpZ2h1cCAgICAgICAgICAgID0gc2lnaHVwOwotZXhwb3J0cy5zaWdpbGwgICAgICAgICAg
ICA9IHNpZ2lsbDsKLWV4cG9ydHMuc2lnaW50ICAgICAgICAgICAgPSBzaWdpbnQ7Ci1leHBvcnRz
LnNpZ2tpbGwgICAgICAgICAgID0gc2lna2lsbDsKLWV4cG9ydHMuc2lncGlwZSAgICAgICAgICAg
PSBzaWdwaXBlOwotZXhwb3J0cy5zaWdxdWl0ICAgICAgICAgICA9IHNpZ3F1aXQ7Ci1leHBvcnRz
LnNpZ3NlZ3YgICAgICAgICAgID0gc2lnc2VndjsKLWV4cG9ydHMuc2lndGVybSAgICAgICAgICAg
PSBzaWd0ZXJtOwotZXhwb3J0cy5zaWd1c3IxICAgICAgICAgICA9IHNpZ3VzcjE7Ci1leHBvcnRz
LnNpZ3VzcjIgICAgICAgICAgID0gc2lndXNyMjsKLWV4cG9ydHMuc2lnY2hsZCAgICAgICAgICAg
PSBzaWdjaGxkOwotZXhwb3J0cy5zaWdjb250ICAgICAgICAgICA9IHNpZ2NvbnQ7Ci1leHBvcnRz
LnNpZ3N0b3AgICAgICAgICAgID0gc2lnc3RvcDsKLWV4cG9ydHMuc2lndHN0cCAgICAgICAgICAg
PSBzaWd0c3RwOwotZXhwb3J0cy5zaWd0dGluICAgICAgICAgICA9IHNpZ3R0aW47Ci1leHBvcnRz
LnNpZ3R0b3UgICAgICAgICAgID0gc2lndHRvdTsKLWV4cG9ydHMuc2lndnRhbHJtICAgICAgICAg
PSBzaWd2dGFscm07Ci1leHBvcnRzLnNpZ3Byb2YgICAgICAgICAgID0gc2lncHJvZjsKLWV4cG9y
dHMuQnJlYWsgICAgICAgICAgICAgPSBCcmVhazsKLWV4cG9ydHMuY2F0Y2hfYnJlYWsgICAgICAg
PSBjYXRjaF9icmVhazsKLWV4cG9ydHMub2NhbWxfdmVyc2lvbiAgICAgPSBvY2FtbF92ZXJzaW9u
OwotLyogTm8gc2lkZSBlZmZlY3QgKi8KLS8vLy8vLy8vIGVuZCBvZiBzeXMuanMgLy8vLy8vLy8K
LSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIF9yZWdpc3RyeVsndHlwZXMnXSA9IGZ1
bmN0aW9uKCkgewotICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiB0eXBl
cy5qcyAvLy8vLy8vLwotLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBWRVJTSU9OIDEuNC4z
ICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCi0ndXNlIHN0cmljdCc7Ci0KLXZhciBJMzIgICAgICA9
IHJlcXVpcmUoIi4vaTMyIik7Ci12YXIgTGlzdCAgICAgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9s
aWIvanMvbGlzdCIpOwotdmFyIEN1cnJ5ICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pz
L2N1cnJ5Iik7Ci12YXIgJCRTdHJpbmcgPSByZXF1aXJlKCJicy1wbGF0Zm9ybS9saWIvanMvc3Ry
aW5nIik7Ci0KLWZ1bmN0aW9uIHNpemUocGFyYW0pIHsKLSAgaWYgKHBhcmFtICE9PSAxICYmIHBh
cmFtIDwgMykgewotICAgIHJldHVybiA0OwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiA4Owot
ICB9Ci19Ci0KLWZ1bmN0aW9uIHN0cmluZ19vZl92YWx1ZV90eXBlKHBhcmFtKSB7Ci0gIHN3aXRj
aCAocGFyYW0pIHsKLSAgICBjYXNlIDAgOiAKLSAgICAgICAgcmV0dXJuICJpMzIiOwotICAgIGNh
c2UgMSA6IAotICAgICAgICByZXR1cm4gImk2NCI7Ci0gICAgY2FzZSAyIDogCi0gICAgICAgIHJl
dHVybiAiZjMyIjsKLSAgICBjYXNlIDMgOiAKLSAgICAgICAgcmV0dXJuICJmNjQiOwotICAgIAot
ICB9Ci19Ci0KLWZ1bmN0aW9uIHN0cmluZ19vZl92YWx1ZV90eXBlcyh0cykgewotICB2YXIgZXhp
dCA9IDA7Ci0gIGlmICh0cykgewotICAgIGlmICh0c1sxXSkgewotICAgICAgZXhpdCA9IDE7Ci0g
ICAgfQotICAgIGVsc2UgewotICAgICAgcmV0dXJuIHN0cmluZ19vZl92YWx1ZV90eXBlKHRzWzBd
KTsKLSAgICB9Ci0gIH0KLSAgZWxzZSB7Ci0gICAgZXhpdCA9IDE7Ci0gIH0KLSAgaWYgKGV4aXQg
PT09IDEpIHsKLSAgICByZXR1cm4gIlsiICsgKCQkU3RyaW5nLmNvbmNhdCgiICIsIExpc3QubWFw
KHN0cmluZ19vZl92YWx1ZV90eXBlLCB0cykpICsgIl0iKTsKLSAgfQotICAKLX0KLQotZnVuY3Rp
b24gc3RyaW5nX29mX2VsZW1fdHlwZSgpIHsKLSAgcmV0dXJuICJmdW5jcmVmIjsKLX0KLQotZnVu
Y3Rpb24gc3RyaW5nX29mX2xpbWl0cyhwYXJhbSkgewotICB2YXIgbWF4ID0gcGFyYW1bLyogbWF4
ICovMV07Ci0gIHJldHVybiBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3UsIHBhcmFtWy8qIG1pbiAq
LzBdKSArICgKLSAgICAgICAgICBtYXggPyAiICIgKyBDdXJyeS5fMShJMzIudG9fc3RyaW5nX3Us
IG1heFswXSkgOiAiIgotICAgICAgICApOwotfQotCi1mdW5jdGlvbiBzdHJpbmdfb2ZfbWVtb3J5
X3R5cGUocGFyYW0pIHsKLSAgcmV0dXJuIHN0cmluZ19vZl9saW1pdHMocGFyYW1bMF0pOwotfQot
Ci1mdW5jdGlvbiBzdHJpbmdfb2ZfdGFibGVfdHlwZShwYXJhbSkgewotICByZXR1cm4gc3RyaW5n
X29mX2xpbWl0cyhwYXJhbVswXSkgKyAiIGZ1bmNyZWYiOwotfQotCi1mdW5jdGlvbiBzdHJpbmdf
b2ZfZ2xvYmFsX3R5cGUocGFyYW0pIHsKLSAgdmFyIHQgPSBwYXJhbVswXTsKLSAgaWYgKHBhcmFt
WzFdICE9PSAwKSB7Ci0gICAgcmV0dXJuICIobXV0ICIgKyAoc3RyaW5nX29mX3ZhbHVlX3R5cGUo
dCkgKyAiKSIpOwotICB9Ci0gIGVsc2UgewotICAgIHJldHVybiBzdHJpbmdfb2ZfdmFsdWVfdHlw
ZSh0KTsKLSAgfQotfQotCi1mdW5jdGlvbiBzdHJpbmdfb2Zfc3RhY2tfdHlwZSh0cykgewotICBy
ZXR1cm4gIlsiICsgKCQkU3RyaW5nLmNvbmNhdCgiICIsIExpc3QubWFwKHN0cmluZ19vZl92YWx1
ZV90eXBlLCB0cykpICsgIl0iKTsKLX0KLQotZnVuY3Rpb24gc3RyaW5nX29mX2Z1bmNfdHlwZShw
YXJhbSkgewotICByZXR1cm4gc3RyaW5nX29mX3N0YWNrX3R5cGUocGFyYW1bMF0pICsgKCIgLT4g
IiArIHN0cmluZ19vZl9zdGFja190eXBlKHBhcmFtWzFdKSk7Ci19Ci0KLWV4cG9ydHMuc2l6ZSAg
ICAgICAgICAgICAgICAgID0gc2l6ZTsKLWV4cG9ydHMuc3RyaW5nX29mX3ZhbHVlX3R5cGUgID0g
c3RyaW5nX29mX3ZhbHVlX3R5cGU7Ci1leHBvcnRzLnN0cmluZ19vZl92YWx1ZV90eXBlcyA9IHN0
cmluZ19vZl92YWx1ZV90eXBlczsKLWV4cG9ydHMuc3RyaW5nX29mX2VsZW1fdHlwZSAgID0gc3Ry
aW5nX29mX2VsZW1fdHlwZTsKLWV4cG9ydHMuc3RyaW5nX29mX2xpbWl0cyAgICAgID0gc3RyaW5n
X29mX2xpbWl0czsKLWV4cG9ydHMuc3RyaW5nX29mX21lbW9yeV90eXBlID0gc3RyaW5nX29mX21l
bW9yeV90eXBlOwotZXhwb3J0cy5zdHJpbmdfb2ZfdGFibGVfdHlwZSAgPSBzdHJpbmdfb2ZfdGFi
bGVfdHlwZTsKLWV4cG9ydHMuc3RyaW5nX29mX2dsb2JhbF90eXBlID0gc3RyaW5nX29mX2dsb2Jh
bF90eXBlOwotZXhwb3J0cy5zdHJpbmdfb2Zfc3RhY2tfdHlwZSAgPSBzdHJpbmdfb2Zfc3RhY2tf
dHlwZTsKLWV4cG9ydHMuc3RyaW5nX29mX2Z1bmNfdHlwZSAgID0gc3RyaW5nX29mX2Z1bmNfdHlw
ZTsKLS8qIEkzMiBOb3QgYSBwdXJlIG1vZHVsZSAqLwotLy8vLy8vLy8gZW5kIG9mIHR5cGVzLmpz
IC8vLy8vLy8vCi0gICAgcmV0dXJuIGV4cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ3Zh
bHVlcyddID0gZnVuY3Rpb24oKSB7Ci0gICAgbGV0IGV4cG9ydHMgPSB7fTsKLS8vLy8vLy8vIHN0
YXJ0IG9mIHZhbHVlcy5qcyAvLy8vLy8vLwotLy8gR2VuZXJhdGVkIGJ5IEJVQ0tMRVNDUklQVCBW
RVJTSU9OIDEuNC4zICwgUExFQVNFIEVESVQgV0lUSCBDQVJFCi0ndXNlIHN0cmljdCc7Ci0KLXZh
ciBGMzIgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2YzMiIpOwotdmFyIEY2NCAgICAgICAgICAg
ICA9IHJlcXVpcmUoIi4vZjY0Iik7Ci12YXIgSTMyICAgICAgICAgICAgID0gcmVxdWlyZSgiLi9p
MzIiKTsKLXZhciBJNjQgICAgICAgICAgICAgPSByZXF1aXJlKCIuL2k2NCIpOwotdmFyIExpc3Qg
ICAgICAgICAgICA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9saXN0Iik7Ci12YXIgQmxv
Y2sgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2Jsb2NrIik7Ci12YXIg
Q3VycnkgICAgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL2N1cnJ5Iik7Ci12
YXIgJCRTdHJpbmcgICAgICAgID0gcmVxdWlyZSgiYnMtcGxhdGZvcm0vbGliL2pzL3N0cmluZyIp
OwotdmFyIENhbWxfZXhjZXB0aW9ucyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1s
X2V4Y2VwdGlvbnMiKTsKLQotZnVuY3Rpb24gdHlwZV9vZihwYXJhbSkgewotICBzd2l0Y2ggKHBh
cmFtLnRhZyB8IDApIHsKLSAgICBjYXNlIDAgOiAKLSAgICAgICAgcmV0dXJuIC8qIEkzMlR5cGUg
Ki8wOwotICAgIGNhc2UgMSA6IAotICAgICAgICByZXR1cm4gLyogSTY0VHlwZSAqLzE7Ci0gICAg
Y2FzZSAyIDogCi0gICAgICAgIHJldHVybiAvKiBGMzJUeXBlICovMjsKLSAgICBjYXNlIDMgOiAK
LSAgICAgICAgcmV0dXJuIC8qIEY2NFR5cGUgKi8zOwotICAgIAotICB9Ci19Ci0KLWZ1bmN0aW9u
IGRlZmF1bHRfdmFsdWUocGFyYW0pIHsKLSAgc3dpdGNoIChwYXJhbSkgewotICAgIGNhc2UgMCA6
IAotICAgICAgICByZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW0kzMi56ZXJvXSk7Ci0gICAg
Y2FzZSAxIDogCi0gICAgICAgIHJldHVybiAvKiBJNjQgKi9CbG9jay5fXygxLCBbSTY0Lnplcm9d
KTsKLSAgICBjYXNlIDIgOiAKLSAgICAgICAgcmV0dXJuIC8qIEYzMiAqL0Jsb2NrLl9fKDIsIFtG
MzIuemVyb10pOwotICAgIGNhc2UgMyA6IAotICAgICAgICByZXR1cm4gLyogRjY0ICovQmxvY2su
X18oMywgW0Y2NC56ZXJvXSk7Ci0gICAgCi0gIH0KLX0KLQotZnVuY3Rpb24gdmFsdWVfb2ZfYm9v
bChiKSB7Ci0gIHJldHVybiAvKiBJMzIgKi9CbG9jay5fXygwLCBbYiA/IDEgOiAwXSk7Ci19Ci0K
LWZ1bmN0aW9uIHN0cmluZ19vZl92YWx1ZShwYXJhbSkgewotICBzd2l0Y2ggKHBhcmFtLnRhZyB8
IDApIHsKLSAgICBjYXNlIDAgOiAKLSAgICAgICAgcmV0dXJuIEN1cnJ5Ll8xKEkzMi50b19zdHJp
bmdfcywgcGFyYW1bMF0pOwotICAgIGNhc2UgMSA6IAotICAgICAgICByZXR1cm4gQ3VycnkuXzEo
STY0LnRvX3N0cmluZ19zLCBwYXJhbVswXSk7Ci0gICAgY2FzZSAyIDogCi0gICAgICAgIHJldHVy
biBDdXJyeS5fMShGMzIudG9fc3RyaW5nLCBwYXJhbVswXSk7Ci0gICAgY2FzZSAzIDogCi0gICAg
ICAgIHJldHVybiBDdXJyeS5fMShGNjQudG9fc3RyaW5nLCBwYXJhbVswXSk7Ci0gICAgCi0gIH0K
LX0KLQotZnVuY3Rpb24gc3RyaW5nX29mX3ZhbHVlcyh2cykgewotICB2YXIgZXhpdCA9IDA7Ci0g
IGlmICh2cykgewotICAgIGlmICh2c1sxXSkgewotICAgICAgZXhpdCA9IDE7Ci0gICAgfQotICAg
IGVsc2UgewotICAgICAgcmV0dXJuIHN0cmluZ19vZl92YWx1ZSh2c1swXSk7Ci0gICAgfQotICB9
Ci0gIGVsc2UgewotICAgIGV4aXQgPSAxOwotICB9Ci0gIGlmIChleGl0ID09PSAxKSB7Ci0gICAg
cmV0dXJuICJbIiArICgkJFN0cmluZy5jb25jYXQoIiAiLCBMaXN0Lm1hcChzdHJpbmdfb2ZfdmFs
dWUsIHZzKSkgKyAiXSIpOwotICB9Ci0gIAotfQotCi12YXIgVmFsdWUgPSBDYW1sX2V4Y2VwdGlv
bnMuY3JlYXRlKCJWYWx1ZXMuVmFsdWUiKTsKLQotZnVuY3Rpb24gdG9fdmFsdWUoaSkgewotICBy
ZXR1cm4gLyogSTMyICovQmxvY2suX18oMCwgW2ldKTsKLX0KLQotZnVuY3Rpb24gb2ZfdmFsdWUo
cGFyYW0pIHsKLSAgaWYgKHBhcmFtLnRhZykgewotICAgIHRocm93IFsKLSAgICAgICAgICBWYWx1
ZSwKLSAgICAgICAgICAvKiBJMzJUeXBlICovMAotICAgICAgICBdOwotICB9Ci0gIGVsc2Ugewot
ICAgIHJldHVybiBwYXJhbVswXTsKLSAgfQotfQotCi12YXIgSTMyVmFsdWUgPSAvKiBtb2R1bGUg
Ki9bCi0gIC8qIHRvX3ZhbHVlICovdG9fdmFsdWUsCi0gIC8qIG9mX3ZhbHVlICovb2ZfdmFsdWUK
LV07Ci0KLWZ1bmN0aW9uIHRvX3ZhbHVlJDEoaSkgewotICByZXR1cm4gLyogSTY0ICovQmxvY2su
X18oMSwgW2ldKTsKLX0KLQotZnVuY3Rpb24gb2ZfdmFsdWUkMShwYXJhbSkgewotICBpZiAocGFy
YW0udGFnID09PSAxKSB7Ci0gICAgcmV0dXJuIHBhcmFtWzBdOwotICB9Ci0gIGVsc2UgewotICAg
IHRocm93IFsKLSAgICAgICAgICBWYWx1ZSwKLSAgICAgICAgICAvKiBJNjRUeXBlICovMQotICAg
ICAgICBdOwotICB9Ci19Ci0KLXZhciBJNjRWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKLSAgLyogdG9f
dmFsdWUgKi90b192YWx1ZSQxLAotICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDEKLV07Ci0KLWZ1
bmN0aW9uIHRvX3ZhbHVlJDIoaSkgewotICByZXR1cm4gLyogRjMyICovQmxvY2suX18oMiwgW2ld
KTsKLX0KLQotZnVuY3Rpb24gb2ZfdmFsdWUkMihwYXJhbSkgewotICBpZiAocGFyYW0udGFnID09
PSAyKSB7Ci0gICAgcmV0dXJuIHBhcmFtWzBdOwotICB9Ci0gIGVsc2UgewotICAgIHRocm93IFsK
LSAgICAgICAgICBWYWx1ZSwKLSAgICAgICAgICAvKiBGMzJUeXBlICovMgotICAgICAgICBdOwot
ICB9Ci19Ci0KLXZhciBGMzJWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKLSAgLyogdG9fdmFsdWUgKi90
b192YWx1ZSQyLAotICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDIKLV07Ci0KLWZ1bmN0aW9uIHRv
X3ZhbHVlJDMoaSkgewotICByZXR1cm4gLyogRjY0ICovQmxvY2suX18oMywgW2ldKTsKLX0KLQot
ZnVuY3Rpb24gb2ZfdmFsdWUkMyhwYXJhbSkgewotICBpZiAocGFyYW0udGFnID09PSAzKSB7Ci0g
ICAgcmV0dXJuIHBhcmFtWzBdOwotICB9Ci0gIGVsc2UgewotICAgIHRocm93IFsKLSAgICAgICAg
ICBWYWx1ZSwKLSAgICAgICAgICAvKiBGNjRUeXBlICovMwotICAgICAgICBdOwotICB9Ci19Ci0K
LXZhciBGNjRWYWx1ZSA9IC8qIG1vZHVsZSAqL1sKLSAgLyogdG9fdmFsdWUgKi90b192YWx1ZSQz
LAotICAvKiBvZl92YWx1ZSAqL29mX3ZhbHVlJDMKLV07Ci0KLWV4cG9ydHMudHlwZV9vZiAgICAg
ICAgICA9IHR5cGVfb2Y7Ci1leHBvcnRzLmRlZmF1bHRfdmFsdWUgICAgPSBkZWZhdWx0X3ZhbHVl
OwotZXhwb3J0cy52YWx1ZV9vZl9ib29sICAgID0gdmFsdWVfb2ZfYm9vbDsKLWV4cG9ydHMuc3Ry
aW5nX29mX3ZhbHVlICA9IHN0cmluZ19vZl92YWx1ZTsKLWV4cG9ydHMuc3RyaW5nX29mX3ZhbHVl
cyA9IHN0cmluZ19vZl92YWx1ZXM7Ci1leHBvcnRzLlZhbHVlICAgICAgICAgICAgPSBWYWx1ZTsK
LWV4cG9ydHMuSTMyVmFsdWUgICAgICAgICA9IEkzMlZhbHVlOwotZXhwb3J0cy5JNjRWYWx1ZSAg
ICAgICAgID0gSTY0VmFsdWU7Ci1leHBvcnRzLkYzMlZhbHVlICAgICAgICAgPSBGMzJWYWx1ZTsK
LWV4cG9ydHMuRjY0VmFsdWUgICAgICAgICA9IEY2NFZhbHVlOwotLyogRjMyIE5vdCBhIHB1cmUg
bW9kdWxlICovCi0vLy8vLy8vLyBlbmQgb2YgdmFsdWVzLmpzIC8vLy8vLy8vCi0gICAgcmV0dXJu
IGV4cG9ydHM7Ci0gIH07Ci0KLQotICBfcmVnaXN0cnlbJ3dhc20nXSA9IGZ1bmN0aW9uKCkgewot
ICAgIGxldCBleHBvcnRzID0ge307Ci0vLy8vLy8vLyBzdGFydCBvZiB3YXNtLmpzIC8vLy8vLy8v
Ci0vLyBHZW5lcmF0ZWQgYnkgQlVDS0xFU0NSSVBUIFZFUlNJT04gMS40LjMgLCBQTEVBU0UgRURJ
VCBXSVRIIENBUkUKLSd1c2Ugc3RyaWN0JzsKLQotdmFyIFBhcnNlICAgICAgPSByZXF1aXJlKCIu
L3BhcnNlIik7Ci12YXIgU2V4cHIgICAgICA9IHJlcXVpcmUoIi4vc2V4cHIiKTsKLXZhciBEZWNv
ZGUgICAgID0gcmVxdWlyZSgiLi9kZWNvZGUiKTsKLXZhciBFbmNvZGUgICAgID0gcmVxdWlyZSgi
Li9lbmNvZGUiKTsKLXZhciBBcnJhbmdlICAgID0gcmVxdWlyZSgiLi9hcnJhbmdlIik7Ci12YXIg
Q2FtbF9pbnQ2NCA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9jYW1sX2ludDY0Iik7Ci12
YXIgUGVydmFzaXZlcyA9IHJlcXVpcmUoImJzLXBsYXRmb3JtL2xpYi9qcy9wZXJ2YXNpdmVzIik7
Ci0KLWZ1bmN0aW9uIGVuY29kZShzKSB7Ci0gIHZhciBkZWYgPSBQYXJzZS5zdHJpbmdfdG9fbW9k
dWxlKHMpOwotICB2YXIgbWF0Y2ggPSBkZWZbLyogaXQgKi8xXTsKLSAgaWYgKG1hdGNoLnRhZykg
ewotICAgIHJldHVybiBtYXRjaFsxXTsKLSAgfQotICBlbHNlIHsKLSAgICByZXR1cm4gRW5jb2Rl
LmVuY29kZShtYXRjaFswXSk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gZGVjb2RlKHMsIHdpZHRoKSB7
Ci0gIHZhciBtID0gRGVjb2RlLmRlY29kZSgiKGRlY29kZSkiLCBzKTsKLSAgcmV0dXJuIFNleHBy
LnRvX3N0cmluZyh3aWR0aCwgQXJyYW5nZS5tb2R1bGVfKG0pKTsKLX0KLQotZnVuY3Rpb24gZih4
KSB7Ci0gIFBlcnZhc2l2ZXMucHJpbnRfc3RyaW5nKCJmIik7Ci0gIHJldHVybiB4OwotfQotCi1m
dW5jdGlvbiBnKHgpIHsKLSAgcmV0dXJuIENhbWxfaW50NjQub3JfKHgsIChQZXJ2YXNpdmVzLnBy
aW50X3N0cmluZygiZiIpLCB4KSk7Ci19Ci0KLWV4cG9ydHMuZW5jb2RlID0gZW5jb2RlOwotZXhw
b3J0cy5kZWNvZGUgPSBkZWNvZGU7Ci1leHBvcnRzLmYgICAgICA9IGY7Ci1leHBvcnRzLmcgICAg
ICA9IGc7Ci0vKiBQYXJzZSBOb3QgYSBwdXJlIG1vZHVsZSAqLwotLy8vLy8vLy8gZW5kIG9mIHdh
c20uanMgLy8vLy8vLy8KLSAgICByZXR1cm4gZXhwb3J0czsKLSAgfTsKLQotCi0gIGZ1bmN0aW9u
IGJpbmFyeShieXRlcykgewotICAgIGxldCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoYnl0ZXMu
bGVuZ3RoKTsKLSAgICBsZXQgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7Ci0gICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7ICsraSkgewotICAgICAgdmlld1tpXSA9IGJ5
dGVzLmNoYXJDb2RlQXQoaSk7Ci0gICAgfQotICAgIHJldHVybiBidWZmZXI7Ci0gIH0KLSAgZnVu
Y3Rpb24gYnl0ZXMoYnVmZmVyKSB7Ci0gICAgbGV0IHN0cmluZyA9ICcnOwotICAgIGxldCB2aWV3
ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpZXcu
bGVuZ3RoOyArK2kpIHsKLSAgICAgIHN0cmluZyArPSBTdHJpbmcuZnJvbUNvZGVQb2ludCh2aWV3
W2ldKTsKLSAgICB9Ci0gICAgcmV0dXJuIHN0cmluZzsKLSAgfQotICBsZXQgV2FzbSA9IHJlcXVp
cmUoJ3dhc20nKTsKLSAgcmV0dXJuIHsKLSAgICBlbmNvZGUocykgeyByZXR1cm4gYmluYXJ5KFdh
c20uZW5jb2RlKHMpKSB9LAotICAgIGRlY29kZShiLCB3ID0gODApIHsgcmV0dXJuIFdhc20uZGVj
b2RlKGJ5dGVzKGIpLCB3KSB9Ci0gIH07Ci19KSgpOwotCi0KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
d2FzbS90YWlsLWNhbGwtc3BlYy10ZXN0cy90YWlsX2NhbGwud2FzdCBiL0pTVGVzdHMvd2FzbS90
YWlsLWNhbGwtc3BlYy10ZXN0cy90YWlsX2NhbGwud2FzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMmY5MWY0ZGVhYzY5Li4wMDAwMDAwMDAwMDAKLS0tIGEvSlNUZXN0cy93YXNtL3Rh
aWwtY2FsbC1zcGVjLXRlc3RzL3RhaWxfY2FsbC53YXN0CisrKyAvZGV2L251bGwKQEAgLTEsMjAy
ICswLDAgQEAKLTs7IFRlc3QgYHJldHVybl9jYWxsYCBvcGVyYXRvcgotCi0obW9kdWxlCi0gIDs7
IEF1eGlsaWFyeSBkZWZpbml0aW9ucwotICAoZnVuYyAkY29uc3QtaTMyIChyZXN1bHQgaTMyKSAo
aTMyLmNvbnN0IDB4MTMyKSkKLSAgKGZ1bmMgJGNvbnN0LWk2NCAocmVzdWx0IGk2NCkgKGk2NC5j
b25zdCAweDE2NCkpCi0gIChmdW5jICRjb25zdC1mMzIgKHJlc3VsdCBmMzIpIChmMzIuY29uc3Qg
MHhmMzIpKQotICAoZnVuYyAkY29uc3QtZjY0IChyZXN1bHQgZjY0KSAoZjY0LmNvbnN0IDB4ZjY0
KSkKLQotICAoZnVuYyAkaWQtaTMyIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSAobG9jYWwuZ2V0
IDApKQotICAoZnVuYyAkaWQtaTY0IChwYXJhbSBpNjQpIChyZXN1bHQgaTY0KSAobG9jYWwuZ2V0
IDApKQotICAoZnVuYyAkaWQtZjMyIChwYXJhbSBmMzIpIChyZXN1bHQgZjMyKSAobG9jYWwuZ2V0
IDApKQotICAoZnVuYyAkaWQtZjY0IChwYXJhbSBmNjQpIChyZXN1bHQgZjY0KSAobG9jYWwuZ2V0
IDApKQotCi0gIChmdW5jICRmMzItaTMyIChwYXJhbSBmMzIgaTMyKSAocmVzdWx0IGkzMikgKGxv
Y2FsLmdldCAxKSkKLSAgKGZ1bmMgJGkzMi1pNjQgKHBhcmFtIGkzMiBpNjQpIChyZXN1bHQgaTY0
KSAobG9jYWwuZ2V0IDEpKQotICAoZnVuYyAkZjY0LWYzMiAocGFyYW0gZjY0IGYzMikgKHJlc3Vs
dCBmMzIpIChsb2NhbC5nZXQgMSkpCi0gIChmdW5jICRpNjQtZjY0IChwYXJhbSBpNjQgZjY0KSAo
cmVzdWx0IGY2NCkgKGxvY2FsLmdldCAxKSkKLQotICA7OyBUeXBpbmcKLQotICAoZnVuYyAoZXhw
b3J0ICJ0eXBlLWkzMiIpIChyZXN1bHQgaTMyKSAocmV0dXJuX2NhbGwgJGNvbnN0LWkzMikpCi0g
IChmdW5jIChleHBvcnQgInR5cGUtaTY0IikgKHJlc3VsdCBpNjQpIChyZXR1cm5fY2FsbCAkY29u
c3QtaTY0KSkKLSAgKGZ1bmMgKGV4cG9ydCAidHlwZS1mMzIiKSAocmVzdWx0IGYzMikgKHJldHVy
bl9jYWxsICRjb25zdC1mMzIpKQotICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWY2NCIpIChyZXN1bHQg
ZjY0KSAocmV0dXJuX2NhbGwgJGNvbnN0LWY2NCkpCi0KLSAgKGZ1bmMgKGV4cG9ydCAidHlwZS1m
aXJzdC1pMzIiKSAocmVzdWx0IGkzMikgKHJldHVybl9jYWxsICRpZC1pMzIgKGkzMi5jb25zdCAz
MikpKQotICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWZpcnN0LWk2NCIpIChyZXN1bHQgaTY0KSAocmV0
dXJuX2NhbGwgJGlkLWk2NCAoaTY0LmNvbnN0IDY0KSkpCi0gIChmdW5jIChleHBvcnQgInR5cGUt
Zmlyc3QtZjMyIikgKHJlc3VsdCBmMzIpIChyZXR1cm5fY2FsbCAkaWQtZjMyIChmMzIuY29uc3Qg
MS4zMikpKQotICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWZpcnN0LWY2NCIpIChyZXN1bHQgZjY0KSAo
cmV0dXJuX2NhbGwgJGlkLWY2NCAoZjY0LmNvbnN0IDEuNjQpKSkKLQotICAoZnVuYyAoZXhwb3J0
ICJ0eXBlLXNlY29uZC1pMzIiKSAocmVzdWx0IGkzMikKLSAgICAocmV0dXJuX2NhbGwgJGYzMi1p
MzIgKGYzMi5jb25zdCAzMi4xKSAoaTMyLmNvbnN0IDMyKSkKLSAgKQotICAoZnVuYyAoZXhwb3J0
ICJ0eXBlLXNlY29uZC1pNjQiKSAocmVzdWx0IGk2NCkKLSAgICAocmV0dXJuX2NhbGwgJGkzMi1p
NjQgKGkzMi5jb25zdCAzMikgKGk2NC5jb25zdCA2NCkpCi0gICkKLSAgKGZ1bmMgKGV4cG9ydCAi
dHlwZS1zZWNvbmQtZjMyIikgKHJlc3VsdCBmMzIpCi0gICAgKHJldHVybl9jYWxsICRmNjQtZjMy
IChmNjQuY29uc3QgNjQpIChmMzIuY29uc3QgMzIpKQotICApCi0gIChmdW5jIChleHBvcnQgInR5
cGUtc2Vjb25kLWY2NCIpIChyZXN1bHQgZjY0KQotICAgIChyZXR1cm5fY2FsbCAkaTY0LWY2NCAo
aTY0LmNvbnN0IDY0KSAoZjY0LmNvbnN0IDY0LjEpKQotICApCi0KLSAgOzsgUmVjdXJzaW9uCi0K
LSAgKGZ1bmMgJGZhYy1hY2MgKGV4cG9ydCAiZmFjLWFjYyIpIChwYXJhbSBpNjQgaTY0KSAocmVz
dWx0IGk2NCkKLSAgICAoaWYgKHJlc3VsdCBpNjQpIChpNjQuZXF6IChsb2NhbC5nZXQgMCkpCi0g
ICAgICAodGhlbiAobG9jYWwuZ2V0IDEpKQotICAgICAgKGVsc2UKLSAgICAgICAgKHJldHVybl9j
YWxsICRmYWMtYWNjCi0gICAgICAgICAgKGk2NC5zdWIgKGxvY2FsLmdldCAwKSAoaTY0LmNvbnN0
IDEpKQotICAgICAgICAgIChpNjQubXVsIChsb2NhbC5nZXQgMCkgKGxvY2FsLmdldCAxKSkKLSAg
ICAgICAgKQotICAgICAgKQotICAgICkKLSAgKQotCi0gIChmdW5jICRjb3VudCAoZXhwb3J0ICJj
b3VudCIpIChwYXJhbSBpNjQpIChyZXN1bHQgaTY0KQotICAgIChpZiAocmVzdWx0IGk2NCkgKGk2
NC5lcXogKGxvY2FsLmdldCAwKSkKLSAgICAgICh0aGVuIChsb2NhbC5nZXQgMCkpCi0gICAgICAo
ZWxzZSAocmV0dXJuX2NhbGwgJGNvdW50IChpNjQuc3ViIChsb2NhbC5nZXQgMCkgKGk2NC5jb25z
dCAxKSkpKQotICAgICkKLSAgKQotCi0gIChmdW5jICRldmVuIChleHBvcnQgImV2ZW4iKSAocGFy
YW0gaTY0KSAocmVzdWx0IGkzMikKLSAgICAoaWYgKHJlc3VsdCBpMzIpIChpNjQuZXF6IChsb2Nh
bC5nZXQgMCkpCi0gICAgICAodGhlbiAoaTMyLmNvbnN0IDQ0KSkKLSAgICAgIChlbHNlIChyZXR1
cm5fY2FsbCAkb2RkIChpNjQuc3ViIChsb2NhbC5nZXQgMCkgKGk2NC5jb25zdCAxKSkpKQotICAg
ICkKLSAgKQotICAoZnVuYyAkb2RkIChleHBvcnQgIm9kZCIpIChwYXJhbSBpNjQpIChyZXN1bHQg
aTMyKQotICAgIChpZiAocmVzdWx0IGkzMikgKGk2NC5lcXogKGxvY2FsLmdldCAwKSkKLSAgICAg
ICh0aGVuIChpMzIuY29uc3QgOTkpKQotICAgICAgKGVsc2UgKHJldHVybl9jYWxsICRldmVuIChp
NjQuc3ViIChsb2NhbC5nZXQgMCkgKGk2NC5jb25zdCAxKSkpKQotICAgICkKLSAgKQotKQotCi0o
YXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWkzMiIpIChpMzIuY29uc3QgMHgxMzIpKQotKGFz
c2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1pNjQiKSAoaTY0LmNvbnN0IDB4MTY0KSkKLShhc3Nl
cnRfcmV0dXJuIChpbnZva2UgInR5cGUtZjMyIikgKGYzMi5jb25zdCAweGYzMikpCi0oYXNzZXJ0
X3JldHVybiAoaW52b2tlICJ0eXBlLWY2NCIpIChmNjQuY29uc3QgMHhmNjQpKQotCi0oYXNzZXJ0
X3JldHVybiAoaW52b2tlICJ0eXBlLWZpcnN0LWkzMiIpIChpMzIuY29uc3QgMzIpKQotKGFzc2Vy
dF9yZXR1cm4gKGludm9rZSAidHlwZS1maXJzdC1pNjQiKSAoaTY0LmNvbnN0IDY0KSkKLShhc3Nl
cnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmlyc3QtZjMyIikgKGYzMi5jb25zdCAxLjMyKSkKLShh
c3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmlyc3QtZjY0IikgKGY2NC5jb25zdCAxLjY0KSkK
LQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1zZWNvbmQtaTMyIikgKGkzMi5jb25zdCAz
MikpCi0oYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLXNlY29uZC1pNjQiKSAoaTY0LmNvbnN0
IDY0KSkKLShhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtc2Vjb25kLWYzMiIpIChmMzIuY29u
c3QgMzIpKQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1zZWNvbmQtZjY0IikgKGY2NC5j
b25zdCA2NC4xKSkKLQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZmFjLWFjYyIgKGk2NC5jb25z
dCAwKSAoaTY0LmNvbnN0IDEpKSAoaTY0LmNvbnN0IDEpKQotKGFzc2VydF9yZXR1cm4gKGludm9r
ZSAiZmFjLWFjYyIgKGk2NC5jb25zdCAxKSAoaTY0LmNvbnN0IDEpKSAoaTY0LmNvbnN0IDEpKQot
KGFzc2VydF9yZXR1cm4gKGludm9rZSAiZmFjLWFjYyIgKGk2NC5jb25zdCA1KSAoaTY0LmNvbnN0
IDEpKSAoaTY0LmNvbnN0IDEyMCkpCi0oYXNzZXJ0X3JldHVybgotICAoaW52b2tlICJmYWMtYWNj
IiAoaTY0LmNvbnN0IDI1KSAoaTY0LmNvbnN0IDEpKQotICAoaTY0LmNvbnN0IDcwMzQ1MzUyNzc1
NzM5NjM3NzYpCi0pCi0KLShhc3NlcnRfcmV0dXJuIChpbnZva2UgImNvdW50IiAoaTY0LmNvbnN0
IDApKSAoaTY0LmNvbnN0IDApKQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAiY291bnQiIChpNjQu
Y29uc3QgMTAwMCkpIChpNjQuY29uc3QgMCkpCi0oYXNzZXJ0X3JldHVybiAoaW52b2tlICJjb3Vu
dCIgKGk2NC5jb25zdCAxXzAwMF8wMDApKSAoaTY0LmNvbnN0IDApKQotCi0oYXNzZXJ0X3JldHVy
biAoaW52b2tlICJldmVuIiAoaTY0LmNvbnN0IDApKSAoaTMyLmNvbnN0IDQ0KSkKLShhc3NlcnRf
cmV0dXJuIChpbnZva2UgImV2ZW4iIChpNjQuY29uc3QgMSkpIChpMzIuY29uc3QgOTkpKQotKGFz
c2VydF9yZXR1cm4gKGludm9rZSAiZXZlbiIgKGk2NC5jb25zdCAxMDApKSAoaTMyLmNvbnN0IDQ0
KSkKLShhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4iIChpNjQuY29uc3QgNzcpKSAoaTMyLmNv
bnN0IDk5KSkKLShhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4iIChpNjQuY29uc3QgMV8wMDBf
MDAwKSkgKGkzMi5jb25zdCA0NCkpCi0oYXNzZXJ0X3JldHVybiAoaW52b2tlICJldmVuIiAoaTY0
LmNvbnN0IDFfMDAwXzAwMSkpIChpMzIuY29uc3QgOTkpKQotKGFzc2VydF9yZXR1cm4gKGludm9r
ZSAib2RkIiAoaTY0LmNvbnN0IDApKSAoaTMyLmNvbnN0IDk5KSkKLShhc3NlcnRfcmV0dXJuIChp
bnZva2UgIm9kZCIgKGk2NC5jb25zdCAxKSkgKGkzMi5jb25zdCA0NCkpCi0oYXNzZXJ0X3JldHVy
biAoaW52b2tlICJvZGQiIChpNjQuY29uc3QgMjAwKSkgKGkzMi5jb25zdCA5OSkpCi0oYXNzZXJ0
X3JldHVybiAoaW52b2tlICJvZGQiIChpNjQuY29uc3QgNzcpKSAoaTMyLmNvbnN0IDQ0KSkKLShh
c3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGk2NC5jb25zdCAxXzAwMF8wMDApKSAoaTMyLmNv
bnN0IDk5KSkKLShhc3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGk2NC5jb25zdCA5OTlfOTk5
KSkgKGkzMi5jb25zdCA0NCkpCi0KLQotOzsgSW52YWxpZCB0eXBpbmcKLQotKGFzc2VydF9pbnZh
bGlkCi0gIChtb2R1bGUKLSAgICAoZnVuYyAkdHlwZS12b2lkLXZzLW51bSAocmVzdWx0IGkzMikg
KHJldHVybl9jYWxsIDEpIChpMzIuY29uc3QgMCkpCi0gICAgKGZ1bmMpCi0gICkKLSAgInR5cGUg
bWlzbWF0Y2giCi0pCi0oYXNzZXJ0X2ludmFsaWQKLSAgKG1vZHVsZQotICAgIChmdW5jICR0eXBl
LW51bS12cy1udW0gKHJlc3VsdCBpMzIpIChyZXR1cm5fY2FsbCAxKSAoaTMyLmNvbnN0IDApKQot
ICAgIChmdW5jIChyZXN1bHQgaTY0KSAoaTY0LmNvbnN0IDEpKQotICApCi0gICJ0eXBlIG1pc21h
dGNoIgotKQotCi0oYXNzZXJ0X2ludmFsaWQKLSAgKG1vZHVsZQotICAgIChmdW5jICRhcml0eS0w
LXZzLTEgKHJldHVybl9jYWxsIDEpKQotICAgIChmdW5jIChwYXJhbSBpMzIpKQotICApCi0gICJ0
eXBlIG1pc21hdGNoIgotKQotKGFzc2VydF9pbnZhbGlkCi0gIChtb2R1bGUKLSAgICAoZnVuYyAk
YXJpdHktMC12cy0yIChyZXR1cm5fY2FsbCAxKSkKLSAgICAoZnVuYyAocGFyYW0gZjY0IGkzMikp
Ci0gICkKLSAgInR5cGUgbWlzbWF0Y2giCi0pCi0KLShtb2R1bGUKLSAgKGZ1bmMgJGFyaXR5LTEt
dnMtMCAoaTMyLmNvbnN0IDEpIChyZXR1cm5fY2FsbCAxKSkKLSAgKGZ1bmMpCi0pCi0KLShtb2R1
bGUKLSAgKGZ1bmMgJGFyaXR5LTItdnMtMCAoZjY0LmNvbnN0IDIpIChpMzIuY29uc3QgMSkgKHJl
dHVybl9jYWxsIDEpKQotICAoZnVuYykKLSkKLQotKGFzc2VydF9pbnZhbGlkCi0gIChtb2R1bGUK
LSAgICAoZnVuYyAkdHlwZS1maXJzdC12b2lkLXZzLW51bSAocmV0dXJuX2NhbGwgMSAobm9wKSAo
aTMyLmNvbnN0IDEpKSkKLSAgICAoZnVuYyAocGFyYW0gaTMyIGkzMikpCi0gICkKLSAgInR5cGUg
bWlzbWF0Y2giCi0pCi0oYXNzZXJ0X2ludmFsaWQKLSAgKG1vZHVsZQotICAgIChmdW5jICR0eXBl
LXNlY29uZC12b2lkLXZzLW51bSAocmV0dXJuX2NhbGwgMSAoaTMyLmNvbnN0IDEpIChub3ApKSkK
LSAgICAoZnVuYyAocGFyYW0gaTMyIGkzMikpCi0gICkKLSAgInR5cGUgbWlzbWF0Y2giCi0pCi0o
YXNzZXJ0X2ludmFsaWQKLSAgKG1vZHVsZQotICAgIChmdW5jICR0eXBlLWZpcnN0LW51bS12cy1u
dW0gKHJldHVybl9jYWxsIDEgKGY2NC5jb25zdCAxKSAoaTMyLmNvbnN0IDEpKSkKLSAgICAoZnVu
YyAocGFyYW0gaTMyIGY2NCkpCi0gICkKLSAgInR5cGUgbWlzbWF0Y2giCi0pCi0oYXNzZXJ0X2lu
dmFsaWQKLSAgKG1vZHVsZQotICAgIChmdW5jICR0eXBlLXNlY29uZC1udW0tdnMtbnVtIChyZXR1
cm5fY2FsbCAxIChpMzIuY29uc3QgMSkgKGY2NC5jb25zdCAxKSkpCi0gICAgKGZ1bmMgKHBhcmFt
IGY2NCBpMzIpKQotICApCi0gICJ0eXBlIG1pc21hdGNoIgotKQotCi0KLTs7IFVuYm91bmQgZnVu
Y3Rpb24KLQotKGFzc2VydF9pbnZhbGlkCi0gIChtb2R1bGUgKGZ1bmMgJHVuYm91bmQtZnVuYyAo
cmV0dXJuX2NhbGwgMSkpKQotICAidW5rbm93biBmdW5jdGlvbiIKLSkKLShhc3NlcnRfaW52YWxp
ZAotICAobW9kdWxlIChmdW5jICRsYXJnZS1mdW5jIChyZXR1cm5fY2FsbCAxMDEyMzIxMzAwKSkp
Ci0gICJ1bmtub3duIGZ1bmN0aW9uIgotKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3RhaWwt
Y2FsbC1zcGVjLXRlc3RzL3RhaWxfY2FsbC53YXN0LmpzIGIvSlNUZXN0cy93YXNtL3RhaWwtY2Fs
bC1zcGVjLXRlc3RzL3RhaWxfY2FsbC53YXN0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5M2ZkYjNmYzBmNDcuLjAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3dhc20vdGFpbC1j
YWxsLXNwZWMtdGVzdHMvdGFpbF9jYWxsLndhc3QuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIg
KzAsMCBAQAotCi0vLyByZXR1cm5fY2FsbC53YXN0OjMKLWxldCAkMSA9IGluc3RhbmNlKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGM4XHg4MFx4ODBceDgwXHgwMFx4MGVc
eDYwXHgwMFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZVx4NjBceDAwXHgwMVx4N2RceDYwXHgwMFx4
MDFceDdjXHg2MFx4MDFceDdmXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3ZVx4NjBceDAxXHg3
ZFx4MDFceDdkXHg2MFx4MDFceDdjXHgwMVx4N2NceDYwXHgwMlx4N2RceDdmXHgwMVx4N2ZceDYw
XHgwMlx4N2ZceDdlXHgwMVx4N2VceDYwXHgwMlx4N2NceDdkXHgwMVx4N2RceDYwXHgwMlx4N2Vc
eDdjXHgwMVx4N2NceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDYwXHgwMVx4N2VceDAxXHg3Zlx4
MDNceDlkXHg4MFx4ODBceDgwXHgwMFx4MWNceDAwXHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgw
N1x4MDhceDA5XHgwYVx4MGJceDAwXHgwMVx4MDJceDAzXHgwMFx4MDFceDAyXHgwM1x4MDBceDAx
XHgwMlx4MDNceDBjXHgwNVx4MGRceDBkXHgwN1x4ZDhceDgxXHg4MFx4ODBceDAwXHgxMFx4MDhc
eDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDMzXHgzMlx4MDBceDBjXHgwOFx4NzRceDc5XHg3MFx4
NjVceDJkXHg2OVx4MzZceDM0XHgwMFx4MGRceDA4XHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHgz
M1x4MzJceDAwXHgwZVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDM2XHgzNFx4MDBceDBm
XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2OVx4MzNc
eDMyXHgwMFx4MTBceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDczXHg3NFx4
MmRceDY5XHgzNlx4MzRceDAwXHgxMVx4MGVceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3
Mlx4NzNceDc0XHgyZFx4NjZceDMzXHgzMlx4MDBceDEyXHgwZVx4NzRceDc5XHg3MFx4NjVceDJk
XHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4MzZceDM0XHgwMFx4MTNceDBmXHg3NFx4Nzlc
eDcwXHg2NVx4MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2OVx4MzNceDMyXHgwMFx4
MTRceDBmXHg3NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2
OVx4MzZceDM0XHgwMFx4MTVceDBmXHg3NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4NjNceDZm
XHg2ZVx4NjRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MTZceDBmXHg3NFx4NzlceDcwXHg2NVx4MmRc
eDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2Nlx4MzZceDM0XHgwMFx4MTdceDA3XHg2Nlx4
NjFceDYzXHgyZFx4NjFceDYzXHg2M1x4MDBceDE4XHgwNVx4NjNceDZmXHg3NVx4NmVceDc0XHgw
MFx4MTlceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBceDFhXHgwM1x4NmZceDY0XHg2NFx4MDBceDFi
XHgwYVx4ODBceDgzXHg4MFx4ODBceDAwXHgxY1x4ODVceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFc
eGIyXHgwMlx4MGJceDg1XHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHhlNFx4MDJceDBiXHg4N1x4
ODBceDgwXHg4MFx4MDBceDAwXHg0M1x4MDBceDIwXHg3M1x4NDVceDBiXHg4Ylx4ODBceDgwXHg4
MFx4MDBceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHhjOFx4YWVceDQwXHgwYlx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBc
eDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4
ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgw
Ylx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAw
XHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRc
eDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4
MTJceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MTJceDAyXHgwYlx4ODRceDgwXHg4
MFx4ODBceDAwXHgwMFx4MTJceDAzXHgwYlx4ODZceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDIw
XHgxMlx4MDRceDBiXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0Mlx4YzBceDAwXHgxMlx4MDVc
eDBiXHg4OVx4ODBceDgwXHg4MFx4MDBceDAwXHg0M1x4YzNceGY1XHhhOFx4M2ZceDEyXHgwNlx4
MGJceDhkXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgzZFx4MGFceGQ3XHhhM1x4NzBceDNkXHhm
YVx4M2ZceDEyXHgwN1x4MGJceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDQzXHg2Nlx4NjZceDAw
XHg0Mlx4NDFceDIwXHgxMlx4MDhceDBiXHg4OVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MjBc
eDQyXHhjMFx4MDBceDEyXHgwOVx4MGJceDkyXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4
MDBceDAwXHgwMFx4MDBceDAwXHg1MFx4NDBceDQzXHgwMFx4MDBceDAwXHg0Mlx4MTJceDBhXHgw
Ylx4OTBceDgwXHg4MFx4ODBceDAwXHgwMFx4NDJceGMwXHgwMFx4NDRceDY2XHg2Nlx4NjZceDY2
XHg2Nlx4MDZceDUwXHg0MFx4MTJceDBiXHgwYlx4OTdceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBc
eDAwXHg1MFx4MDRceDdlXHgyMFx4MDFceDA1XHgyMFx4MDBceDQyXHgwMVx4N2RceDIwXHgwMFx4
MjBceDAxXHg3ZVx4MTJceDE4XHgwYlx4MGJceDkyXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgw
MFx4NTBceDA0XHg3ZVx4MjBceDAwXHgwNVx4MjBceDAwXHg0Mlx4MDFceDdkXHgxMlx4MTlceDBi
XHgwYlx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg1MFx4MDRceDdmXHg0MVx4MmNc
eDA1XHgyMFx4MDBceDQyXHgwMVx4N2RceDEyXHgxYlx4MGJceDBiXHg5M1x4ODBceDgwXHg4MFx4
MDBceDAwXHgyMFx4MDBceDUwXHgwNFx4N2ZceDQxXHhlM1x4MDBceDA1XHgyMFx4MDBceDQyXHgw
MVx4N2RceDEyXHgxYVx4MGJceDBiIik7Ci0KLS8vIHJldHVybl9jYWxsLndhc3Q6ODAKLWFzc2Vy
dF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtaTMyIiwgW10pLCAzMDYpOwotCi0vLyByZXR1
cm5fY2FsbC53YXN0OjgxCi1ydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAw
XHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFc
eDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4
MDBceDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3
NVx4NmNceDY1XHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2OVx4MzZceDM0XHgwMFx4MDZceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
YVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgy
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNc
eDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDFceDkyXHg4MFx4
ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHgwMVx4NDJceGU0XHgwMlx4MDFceDUxXHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1pNjQiLCBbXSksIGludDY0KCIz
NTYiKSkKLQotLy8gcmV0dXJuX2NhbGwud2FzdDo4MgotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2RceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDMz
XHgzMlx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4
MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4YmNceDQzXHgw
MFx4MjBceDczXHg0NVx4YmNceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9y
dHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAi
dHlwZS1mMzIiLCBbXSksIDM4OTAuKQotCi0vLyByZXR1cm5fY2FsbC53YXN0OjgzCi1ydW4oKCkg
PT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhh
M1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYw
XHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFc
eDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3Y1x4MDJceDg0XHg4MVx4
ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NzRceDc5XHg3
MFx4NjVceDJkXHg2Nlx4MzZceDM0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1
XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVc
eDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2
ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAw
XHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFc
eDllXHg4MFx4ODBceDgwXHgwMFx4MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4
MTBceDAwXHhiZFx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4YzhceGFlXHg0MFx4YmRceDUxXHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1mNjQiLCBbXSksIDM5NDAuKQot
Ci0vLyByZXR1cm5fY2FsbC53YXN0Ojg1Ci1hc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0
eXBlLWZpcnN0LWkzMiIsIFtdKSwgMzIpOwotCi0vLyByZXR1cm5fY2FsbC53YXN0Ojg2Ci1ydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZVx4MDJceDhhXHg4
MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwZVx4NzRceDc5
XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2OVx4MzZceDM0XHgwMFx4MDZc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNc
eDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDFceDkyXHg4
MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHgwMVx4NDJceGMwXHgwMFx4MDFceDUx
XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkp
OyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1pNjQiLCBbXSks
IGludDY0KCI2NCIpKQotCi0vLyByZXR1cm5fY2FsbC53YXN0Ojg3Ci1ydW4oKCkgPT4gY2FsbChp
bnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgw
XHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZc
eDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4
MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZFx4MDJceDhhXHg4MVx4ODBceDgwXHgw
MFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwZVx4NzRceDc5XHg3MFx4NjVceDJk
XHg2Nlx4NjlceDcyXHg3M1x4NzRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2
OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVc
eDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcx
XHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4
NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgw
MFx4MDBceDAyXHg0MFx4MTBceDAwXHhiY1x4NDNceGMzXHhmNVx4YThceDNmXHhiY1x4NDZceDQ1
XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAv
LyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWYzMiIsIFtdKSwgMS4z
MjAwMDAwNTI0NSkKLQotLy8gcmV0dXJuX2NhbGwud2FzdDo4OAotcnVuKCgpID0+IGNhbGwoaW5z
dGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4
ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgw
MVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAy
XHg3MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2NceDAyXHg4YVx4ODFceDgwXHg4MFx4MDBc
eDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGVceDc0XHg3OVx4NzBceDY1XHgyZFx4
NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjZceDM2XHgzNFx4MDBceDA2XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4Njlc
eDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2
ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4
NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4
MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZl
XHgwMFx4MDZceDBhXHg5ZVx4ODBceDgwXHg4MFx4MDBceDAxXHg5OFx4ODBceDgwXHg4MFx4MDBc
eDAwXHgwMlx4NDBceDEwXHgwMFx4YmRceDQ0XHgzZFx4MGFceGQ3XHhhM1x4NzBceDNkXHhmYVx4
M2ZceGJkXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAi
cnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtZmlyc3Qt
ZjY0IiwgW10pLCAxLjY0KQotCi0vLyByZXR1cm5fY2FsbC53YXN0OjkwCi1hc3NlcnRfcmV0dXJu
KCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1pMzIiLCBbXSksIDMyKTsKLQotLy8gcmV0dXJu
X2NhbGwud2FzdDo5MQotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4
NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3
Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAw
XHgwMVx4N2VceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVc
eDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4NmZceDZlXHg2NFx4
MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRc
eDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgw
MFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4
N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OThceDgw
XHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgxMFx4MDBc
eDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhw
b3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEs
ICJ0eXBlLXNlY29uZC1pNjQiLCBbXSksIGludDY0KCI2NCIpKQotCi0vLyByZXR1cm5fY2FsbC53
YXN0OjkyCi1ydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAw
XHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFc
eDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4
MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3
ZFx4MDJceDhiXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1
XHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjZc
eDMzXHgzMlx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4
ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4
MFx4MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4YmNceDQz
XHgwMFx4MDBceDAwXHg0Mlx4YmNceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4
cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAidHlwZS1zZWNvbmQtZjMyIiwgW10pLCAzMi4pCi0KLS8vIHJldHVybl9jYWxsLndhc3Q6OTMK
LXJ1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAx
XHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZc
eDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMFx4MDFceDdjXHgwMlx4
OGJceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBmXHg3
NFx4NzlceDcwXHg2NVx4MmRceDczXHg2NVx4NjNceDZmXHg2ZVx4NjRceDJkXHg2Nlx4MzZceDM0
XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4ODBceDgwXHgwMFx4
MDFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiZFx4NDRceDY2XHg2
Nlx4NjZceDY2XHg2Nlx4MDZceDUwXHg0MFx4YmRceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAw
XHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAidHlwZS1zZWNvbmQtZjY0IiwgW10pLCA2NC4xKQotCi0vLyByZXR1cm5fY2Fs
bC53YXN0Ojk1Ci1ydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFc
eDAwXHgwMFx4MDBceDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4
MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2
MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdl
XHg3ZVx4MDFceDdlXHgwMlx4ODNceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDA3XHg2Nlx4NjFceDYzXHgyZFx4NjFceDYzXHg2M1x4MDBceDA2XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFc
eDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4
ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3
Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgw
XHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwMFx4NDJceDAxXHgxMFx4MDBceDAxXHg0Mlx4MDFc
eDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVu
IiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImZhYy1hY2MiLCBbaW50
NjQoIjAiKSwgaW50NjQoIjEiKV0pLCBpbnQ2NCgiMSIpKQotCi0vLyByZXR1cm5fY2FsbC53YXN0
Ojk2Ci1ydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgw
MFx4MDBceDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdm
XHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJc
eDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdlXHg3ZVx4
MDFceDdlXHgwMlx4ODNceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2
Y1x4NjVceDA3XHg2Nlx4NjFceDYzXHgyZFx4NjFceDYzXHg2M1x4MDBceDA2XHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3
MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgw
XHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVc
eDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4MFx4
MDBceDAwXHgwMlx4NDBceDQyXHgwMVx4NDJceDAxXHgxMFx4MDBceDAxXHg0Mlx4MDFceDAxXHg1
MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10p
KTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImZhYy1hY2MiLCBbaW50NjQoIjEi
KSwgaW50NjQoIjEiKV0pLCBpbnQ2NCgiMSIpKQotCi0vLyByZXR1cm5fY2FsbC53YXN0Ojk3Ci1y
dW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4
NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2
Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdlXHg3ZVx4MDFceDdl
XHgwMlx4ODNceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDA3XHg2Nlx4NjFceDYzXHgyZFx4NjFceDYzXHg2M1x4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDcz
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4
MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgw
MFx4MDZceDBhXHg5Y1x4ODBceDgwXHg4MFx4MDBceDAxXHg5Nlx4ODBceDgwXHg4MFx4MDBceDAw
XHgwMlx4NDBceDQyXHgwNVx4NDJceDAxXHgxMFx4MDBceDAxXHg0Mlx4ZjhceDAwXHgwMVx4NTFc
eDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJmYWMtYWNjIiwgW2ludDY0KCI1Iiks
IGludDY0KCIxIildKSwgaW50NjQoIjEyMCIpKQotCi0vLyByZXR1cm5fY2FsbC53YXN0Ojk4Ci1y
dW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4
NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2
Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdlXHg3ZVx4MDFceDdl
XHgwMlx4ODNceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVc
eDA3XHg2Nlx4NjFceDYzXHgyZFx4NjFceDYzXHg2M1x4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDcz
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4
MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgw
MFx4MDZceDBhXHhhNFx4ODBceDgwXHg4MFx4MDBceDAxXHg5ZVx4ODBceDgwXHg4MFx4MDBceDAw
XHgwMlx4NDBceDQyXHgxOVx4NDJceDAxXHgxMFx4MDBceDAxXHg0Mlx4ODBceDgwXHg4MFx4ZGVc
eDg3XHg5Mlx4ZWNceGNmXHhlMVx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4
MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4g
Y2FsbCgkMSwgImZhYy1hY2MiLCBbaW50NjQoIjI1IiksIGludDY0KCIxIildKSwgaW50NjQoIjdf
MDM0XzUzNV8yNzdfNTczXzk2M183NzYiKSkKLQotLy8gcmV0dXJuX2NhbGwud2FzdDoxMDMKLXJ1
bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4
MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2
Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZm
XHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3ZVx4MDJc
eDgxXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwNVx4
NjNceDZmXHg3NVx4NmVceDc0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2
Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcx
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgw
N1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk5
XHg4MFx4ODBceDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJc
eDAwXHgxMFx4MDBceDAxXHg0Mlx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4
MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4g
Y2FsbCgkMSwgImNvdW50IiwgW2ludDY0KCIwIildKSwgaW50NjQoIjAiKSkKLQotLy8gcmV0dXJu
X2NhbGwud2FzdDoxMDQKLXJ1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBc
eDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4
N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgw
MVx4N2VceDAxXHg3ZVx4MDJceDgxXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0
XHg3NVx4NmNceDY1XHgwNVx4NjNceDZmXHg3NVx4NmVceDc0XHgwMFx4MDZceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2
OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVc
eDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcx
XHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4
NmVceDAwXHgwNlx4MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgw
MFx4MDBceDAyXHg0MFx4NDJceGU4XHgwN1x4MTBceDAwXHgwMVx4NDJceDAwXHgwMVx4NTFceDQ1
XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAv
LyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJjb3VudCIsIFtpbnQ2NCgiMV8wMDAiKV0p
LCBpbnQ2NCgiMCIpKQotCi0vLyByZXR1cm5fY2FsbC53YXN0OjEwNQotcnVuKCgpID0+IGNhbGwo
aW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4
MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZm
XHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBc
eDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHgwMlx4ODFceDgxXHg4MFx4
ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA1XHg2M1x4NmZceDc1XHg2
ZVx4NzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2
Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgw
XHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4YzBceDg0XHgzZFx4
MTBceDAwXHgwMVx4NDJceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwg
ZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwo
JDEsICJjb3VudCIsIFtpbnQ2NCgiMV8wMDBfMDAwIildKSwgaW50NjQoIjAiKSkKLQotLy8gcmV0
dXJuX2NhbGwud2FzdDoxMDcKLXJ1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4
MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgw
MVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYw
XHgwMVx4N2VceDAxXHg3Zlx4MDJceDgwXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZc
eDY0XHg3NVx4NmNceDY1XHgwNFx4NjVceDc2XHg2NVx4NmVceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHg0Mlx4MDBceDEwXHgwMFx4MDFceDQxXHgyY1x4MDFceDQ2XHg0NVx4MGRc
eDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNz
ZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZXZlbiIsIFtpbnQ2NCgiMCIpXSksIDQ0KQotCi0v
LyByZXR1cm5fY2FsbC53YXN0OjEwOAotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYx
XHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBc
eDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4
NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3
Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZk
XHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBceDA2XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAy
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1
XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBc
eDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4
NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4MDBceDAxXHg5NFx4ODBceDgwXHg4
MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwMVx4MTBceDAwXHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2
XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkp
OyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZXZlbiIsIFtpbnQ2NCgiMSIpXSks
IDk5KQotCi0vLyByZXR1cm5fY2FsbC53YXN0OjEwOQotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ODBceDgxXHg4MFx4ODBceDAwXHgw
Nlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBceDA2
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2
Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDcz
XHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAz
XHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4MDBceDAxXHg5NFx4
ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhlNFx4MDBceDEwXHgwMFx4MDFceDQxXHgy
Y1x4MDFceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJy
dW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZXZlbiIsIFtpbnQ2
NCgiMTAwIildKSwgNDQpCi0KLS8vIHJldHVybl9jYWxsLndhc3Q6MTEwCi1ydW4oKCkgPT4gY2Fs
bChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBc
eDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4
NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2
MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHg4MFx4ODFceDgw
XHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDRceDY1XHg3Nlx4NjVc
eDZlXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZl
XHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZc
eDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4ODBceDgwXHgw
MFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceGNkXHgwMFx4MTBceDAw
XHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4
cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAiZXZlbiIsIFtpbnQ2NCgiNzciKV0pLCA5OSkKLQotLy8gcmV0dXJuX2NhbGwud2FzdDoxMTEK
LXJ1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgw
MFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAx
XHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZc
eDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3Zlx4
MDJceDgwXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgw
NFx4NjVceDc2XHg2NVx4NmVceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDcz
XHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3
XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4
YzBceDg0XHgzZFx4MTBceDAwXHgwMVx4NDFceDJjXHgwMVx4NDZceDQ1XHgwZFx4MDBceDBmXHgw
Ylx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJu
KCgpID0+IGNhbGwoJDEsICJldmVuIiwgW2ludDY0KCIxXzAwMF8wMDAiKV0pLCA0NCkKLQotLy8g
cmV0dXJuX2NhbGwud2FzdDoxMTIKLXJ1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4
NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgw
MFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcw
XHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2Zc
eDYwXHgwMVx4N2VceDAxXHg3Zlx4MDJceDgwXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4
NmZceDY0XHg3NVx4NmNceDY1XHgwNFx4NjVceDc2XHg2NVx4NmVceDAwXHgwNlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcy
XHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNc
eDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3
NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4
NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1
XHg2ZVx4MDBceDA2XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMVx4OTZceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MDJceDQwXHg0Mlx4YzFceDg0XHgzZFx4MTBceDAwXHgwMVx4NDFceGUzXHgwMFx4
MDFceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4i
LCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZXZlbiIsIFtpbnQ2NCgi
MV8wMDBfMDAxIildKSwgOTkpCi0KLS8vIHJldHVybl9jYWxsLndhc3Q6MTEzCi1ydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBc
eDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4
NjRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0
XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4
MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4
MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OWFceDgwXHg4MFx4ODBceDAw
XHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDBceDEwXHgwMFx4MDFc
eDQxXHhlM1x4MDBceDAxXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9k
ZCIsIFtpbnQ2NCgiMCIpXSksIDk5KQotCi0vLyByZXR1cm5fY2FsbC53YXN0OjExNAotcnVuKCgp
ID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2
MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAx
XHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ZmZc
eDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDAzXHg2Zlx4
NjRceDY0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk5XHg4MFx4ODBceDgw
XHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceDAxXHgxMFx4MDBc
eDAxXHg0MVx4MmNceDAxXHg0Nlx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9k
ZCIsIFtpbnQ2NCgiMSIpXSksIDQ0KQotCi0vLyByZXR1cm5fY2FsbC53YXN0OjExNQotcnVuKCgp
ID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2
MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAx
XHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdmXHgwMlx4ZmZc
eDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDAzXHg2Zlx4
NjRceDY0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4ODBceDgw
XHgwMFx4MDFceDk1XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDJceGM4XHgwMVx4MTBc
eDAwXHgwMVx4NDFceGUzXHgwMFx4MDFceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIs
IGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxs
KCQxLCAib2RkIiwgW2ludDY0KCIyMDAiKV0pLCA5OSkKLQotLy8gcmV0dXJuX2NhbGwud2FzdDox
MTYKLXJ1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAw
XHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2Zc
eDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4
NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3
Zlx4MDJceGZmXHg4MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1
XHgwM1x4NmZceDY0XHg2NFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZc
eDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdc
eDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4
ODBceDgwXHg4MFx4MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHhj
ZFx4MDBceDEwXHgwMFx4MDFceDQxXHgyY1x4MDFceDQ2XHg0NVx4MGRceDAwXHgwZlx4MGJceDAw
XHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAib2RkIiwgW2ludDY0KCI3NyIpXSksIDQ0KQotCi0vLyByZXR1cm5fY2FsbC53
YXN0OjExNwotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAx
XHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBc
eDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAxXHg3ZVx4
MDFceDdmXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2
Y1x4NjVceDAzXHg2Zlx4NjRceDY0XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4
NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1
XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVc
eDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4
NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2
ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAw
XHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFc
eDljXHg4MFx4ODBceDgwXHgwMFx4MDFceDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4
NDJceGMwXHg4NFx4M2RceDEwXHgwMFx4MDFceDQxXHhlM1x4MDBceDAxXHg0Nlx4NDVceDBkXHgw
MFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2Vy
dF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgIm9kZCIsIFtpbnQ2NCgiMV8wMDBfMDAwIildKSwgOTkp
Ci0KLS8vIHJldHVybl9jYWxsLndhc3Q6MTE4Ci1ydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgw
MFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBceDA3
XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBc
eDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4
MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2ZceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDZmXHg2NFx4NjRceDAwXHgwNlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVc
eDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4
MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgw
Mlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2
XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4
NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2
NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJc
eDc1XHg2ZVx4MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4
ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4YmZceDg0XHgzZFx4MTBceDAwXHgwMVx4NDFceDJjXHgw
MVx4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIs
IFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbaW50NjQoIjk5
OV85OTkiKV0pLCA0NCkKLQotLy8gcmV0dXJuX2NhbGwud2FzdDoxMjMKLWFzc2VydF9pbnZhbGlk
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgwXHgw
MFx4MDJceDYwXHgwMFx4MDFceDdmXHg2MFx4MDBceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAw
XHgwMlx4MDBceDAxXHgwYVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMlx4ODZceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MTJceDAxXHg0MVx4MDBceDBiXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIp
OwotCi0vLyByZXR1cm5fY2FsbC53YXN0OjEzMAotYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAw
XHgwMVx4N2ZceDYwXHgwMFx4MDFceDdlXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBc
eDAxXHgwYVx4OTVceDgwXHg4MFx4ODBceDAwXHgwMlx4ODZceDgwXHg4MFx4ODBceDAwXHgwMFx4
MTJceDAxXHg0MVx4MDBceDBiXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHg0Mlx4MDFceDBiIik7
Ci0KLS8vIHJldHVybl9jYWxsLndhc3Q6MTM4Ci1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDcz
XHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OFx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDBc
eDAwXHg2MFx4MDFceDdmXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgwMVx4
MGFceDkxXHg4MFx4ODBceDgwXHgwMFx4MDJceDg0XHg4MFx4ODBceDgwXHgwMFx4MDBceDEyXHgw
MVx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBiIik7Ci0KLS8vIHJldHVybl9jYWxsLndh
c3Q6MTQ1Ci1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBc
eDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4MDBceDAwXHg2MFx4MDJceDdjXHg3Zlx4
MDBceDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDFceDBhXHg5MVx4ODBceDgwXHg4
MFx4MDBceDAyXHg4NFx4ODBceDgwXHg4MFx4MDBceDAwXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgw
XHg4MFx4MDBceDAwXHgwYiIpOwotCi0vLyByZXR1cm5fY2FsbC53YXN0OjE1MwotbGV0ICQyID0g
aW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4
MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAw
XHgwMFx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDJceDg2XHg4MFx4ODBceDgwXHgwMFx4MDBc
eDQxXHgwMVx4MTJceDAxXHgwYlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKTsKLQotLy8g
cmV0dXJuX2NhbGwud2FzdDoxNTgKLWxldCAkMyA9IGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMFx4MDBc
eDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgwMFx4MDBceDBhXHg5Y1x4ODBceDgwXHg4MFx4
MDBceDAyXHg4Zlx4ODBceDgwXHg4MFx4MDBceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgw
MFx4MDBceDQwXHg0MVx4MDFceDEyXHgwMVx4MGJceDgyXHg4MFx4ODBceDgwXHgwMFx4MDBceDBi
Iik7Ci0KLS8vIHJldHVybl9jYWxsLndhc3Q6MTYzCi1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4OVx4ODBceDgwXHg4MFx4MDBceDAyXHg2MFx4
MDBceDAwXHg2MFx4MDJceDdmXHg3Zlx4MDBceDAzXHg4M1x4ODBceDgwXHg4MFx4MDBceDAyXHgw
MFx4MDFceDBhXHg5NFx4ODBceDgwXHg4MFx4MDBceDAyXHg4N1x4ODBceDgwXHg4MFx4MDBceDAw
XHgwMVx4NDFceDAxXHgxMlx4MDFceDBiXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwYiIpOwot
Ci0vLyByZXR1cm5fY2FsbC53YXN0OjE3MAotYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4
NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAwXHgw
MFx4NjBceDAyXHg3Zlx4N2ZceDAwXHgwM1x4ODNceDgwXHg4MFx4ODBceDAwXHgwMlx4MDBceDAx
XHgwYVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFc
eDAxXHgwMVx4MTJceDAxXHgwYlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKTsKLQotLy8g
cmV0dXJuX2NhbGwud2FzdDoxNzcKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgw
MVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYw
XHgwMlx4N2ZceDdjXHgwMFx4MDNceDgzXHg4MFx4ODBceDgwXHgwMFx4MDJceDAwXHgwMVx4MGFc
eDljXHg4MFx4ODBceDgwXHgwMFx4MDJceDhmXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4
MDBceDAwXHgwMFx4MDBceDAwXHhmMFx4M2ZceDQxXHgwMVx4MTJceDAxXHgwYlx4ODJceDgwXHg4
MFx4ODBceDAwXHgwMFx4MGIiKTsKLQotLy8gcmV0dXJuX2NhbGwud2FzdDoxODQKLWFzc2VydF9p
bnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBc
eDgwXHgwMFx4MDJceDYwXHgwMFx4MDBceDYwXHgwMlx4N2NceDdmXHgwMFx4MDNceDgzXHg4MFx4
ODBceDgwXHgwMFx4MDJceDAwXHgwMVx4MGFceDljXHg4MFx4ODBceDgwXHgwMFx4MDJceDhmXHg4
MFx4ODBceDgwXHgwMFx4MDBceDQxXHgwMVx4NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceGYw
XHgzZlx4MTJceDAxXHgwYlx4ODJceDgwXHg4MFx4ODBceDAwXHgwMFx4MGIiKTsKLQotLy8gcmV0
dXJuX2NhbGwud2FzdDoxOTUKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMFx4MDBceDAzXHg4
Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MGFceDhhXHg4MFx4ODBceDgwXHgwMFx4MDFceDg0
XHg4MFx4ODBceDgwXHgwMFx4MDBceDEyXHgwMVx4MGIiKTsKLQotLy8gcmV0dXJuX2NhbGwud2Fz
dDoxOTkKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4
MDFceDg0XHg4MFx4ODBceDgwXHgwMFx4MDFceDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4
MFx4MDBceDAxXHgwMFx4MGFceDhlXHg4MFx4ODBceDgwXHgwMFx4MDFceDg4XHg4MFx4ODBceDgw
XHgwMFx4MDBceDEyXHg5NFx4OThceGRiXHhlMlx4MDNceDBiIik7CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3dhc20vdGFpbC1jYWxsLXNwZWMtdGVzdHMvdGFpbF9jYWxsX2luZGlyZWN0Lndhc3QgYi9K
U1Rlc3RzL3dhc20vdGFpbC1jYWxsLXNwZWMtdGVzdHMvdGFpbF9jYWxsX2luZGlyZWN0Lndhc3QK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjZjBhNzJlMDZhMC4uMDAwMDAwMDAwMDAw
Ci0tLSBhL0pTVGVzdHMvd2FzbS90YWlsLWNhbGwtc3BlYy10ZXN0cy90YWlsX2NhbGxfaW5kaXJl
Y3Qud2FzdAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi07OyBUZXN0IGByZXR1cm5f
Y2FsbF9pbmRpcmVjdGAgb3BlcmF0b3IKLQotKG1vZHVsZQotICA7OyBBdXhpbGlhcnkgZGVmaW5p
dGlvbnMKLSAgKHR5cGUgJHByb2MgKGZ1bmMpKQotICAodHlwZSAkb3V0LWkzMiAoZnVuYyAocmVz
dWx0IGkzMikpKQotICAodHlwZSAkb3V0LWk2NCAoZnVuYyAocmVzdWx0IGk2NCkpKQotICAodHlw
ZSAkb3V0LWYzMiAoZnVuYyAocmVzdWx0IGYzMikpKQotICAodHlwZSAkb3V0LWY2NCAoZnVuYyAo
cmVzdWx0IGY2NCkpKQotICAodHlwZSAkb3Zlci1pMzIgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3Vs
dCBpMzIpKSkKLSAgKHR5cGUgJG92ZXItaTY0IChmdW5jIChwYXJhbSBpNjQpIChyZXN1bHQgaTY0
KSkpCi0gICh0eXBlICRvdmVyLWYzMiAoZnVuYyAocGFyYW0gZjMyKSAocmVzdWx0IGYzMikpKQot
ICAodHlwZSAkb3Zlci1mNjQgKGZ1bmMgKHBhcmFtIGY2NCkgKHJlc3VsdCBmNjQpKSkKLSAgKHR5
cGUgJGYzMi1pMzIgKGZ1bmMgKHBhcmFtIGYzMiBpMzIpIChyZXN1bHQgaTMyKSkpCi0gICh0eXBl
ICRpMzItaTY0IChmdW5jIChwYXJhbSBpMzIgaTY0KSAocmVzdWx0IGk2NCkpKQotICAodHlwZSAk
ZjY0LWYzMiAoZnVuYyAocGFyYW0gZjY0IGYzMikgKHJlc3VsdCBmMzIpKSkKLSAgKHR5cGUgJGk2
NC1mNjQgKGZ1bmMgKHBhcmFtIGk2NCBmNjQpIChyZXN1bHQgZjY0KSkpCi0gICh0eXBlICRvdmVy
LWkzMi1kdXBsaWNhdGUgKGZ1bmMgKHBhcmFtIGkzMikgKHJlc3VsdCBpMzIpKSkKLSAgKHR5cGUg
JG92ZXItaTY0LWR1cGxpY2F0ZSAoZnVuYyAocGFyYW0gaTY0KSAocmVzdWx0IGk2NCkpKQotICAo
dHlwZSAkb3Zlci1mMzItZHVwbGljYXRlIChmdW5jIChwYXJhbSBmMzIpIChyZXN1bHQgZjMyKSkp
Ci0gICh0eXBlICRvdmVyLWY2NC1kdXBsaWNhdGUgKGZ1bmMgKHBhcmFtIGY2NCkgKHJlc3VsdCBm
NjQpKSkKLQotICAoZnVuYyAkY29uc3QtaTMyICh0eXBlICRvdXQtaTMyKSAoaTMyLmNvbnN0IDB4
MTMyKSkKLSAgKGZ1bmMgJGNvbnN0LWk2NCAodHlwZSAkb3V0LWk2NCkgKGk2NC5jb25zdCAweDE2
NCkpCi0gIChmdW5jICRjb25zdC1mMzIgKHR5cGUgJG91dC1mMzIpIChmMzIuY29uc3QgMHhmMzIp
KQotICAoZnVuYyAkY29uc3QtZjY0ICh0eXBlICRvdXQtZjY0KSAoZjY0LmNvbnN0IDB4ZjY0KSkK
LQotICAoZnVuYyAkaWQtaTMyICh0eXBlICRvdmVyLWkzMikgKGxvY2FsLmdldCAwKSkKLSAgKGZ1
bmMgJGlkLWk2NCAodHlwZSAkb3Zlci1pNjQpIChsb2NhbC5nZXQgMCkpCi0gIChmdW5jICRpZC1m
MzIgKHR5cGUgJG92ZXItZjMyKSAobG9jYWwuZ2V0IDApKQotICAoZnVuYyAkaWQtZjY0ICh0eXBl
ICRvdmVyLWY2NCkgKGxvY2FsLmdldCAwKSkKLQotICAoZnVuYyAkaTMyLWk2NCAodHlwZSAkaTMy
LWk2NCkgKGxvY2FsLmdldCAxKSkKLSAgKGZ1bmMgJGk2NC1mNjQgKHR5cGUgJGk2NC1mNjQpIChs
b2NhbC5nZXQgMSkpCi0gIChmdW5jICRmMzItaTMyICh0eXBlICRmMzItaTMyKSAobG9jYWwuZ2V0
IDEpKQotICAoZnVuYyAkZjY0LWYzMiAodHlwZSAkZjY0LWYzMikgKGxvY2FsLmdldCAxKSkKLQot
ICAoZnVuYyAkb3Zlci1pMzItZHVwbGljYXRlICh0eXBlICRvdmVyLWkzMi1kdXBsaWNhdGUpIChs
b2NhbC5nZXQgMCkpCi0gIChmdW5jICRvdmVyLWk2NC1kdXBsaWNhdGUgKHR5cGUgJG92ZXItaTY0
LWR1cGxpY2F0ZSkgKGxvY2FsLmdldCAwKSkKLSAgKGZ1bmMgJG92ZXItZjMyLWR1cGxpY2F0ZSAo
dHlwZSAkb3Zlci1mMzItZHVwbGljYXRlKSAobG9jYWwuZ2V0IDApKQotICAoZnVuYyAkb3Zlci1m
NjQtZHVwbGljYXRlICh0eXBlICRvdmVyLWY2NC1kdXBsaWNhdGUpIChsb2NhbC5nZXQgMCkpCi0K
LSAgKHRhYmxlIGZ1bmNyZWYKLSAgICAoZWxlbQotICAgICAgJGNvbnN0LWkzMiAkY29uc3QtaTY0
ICRjb25zdC1mMzIgJGNvbnN0LWY2NAotICAgICAgJGlkLWkzMiAkaWQtaTY0ICRpZC1mMzIgJGlk
LWY2NAotICAgICAgJGYzMi1pMzIgJGkzMi1pNjQgJGY2NC1mMzIgJGk2NC1mNjQKLSAgICAgICRm
YWMgJGZhYy1hY2MgJGV2ZW4gJG9kZAotICAgICAgJG92ZXItaTMyLWR1cGxpY2F0ZSAkb3Zlci1p
NjQtZHVwbGljYXRlCi0gICAgICAkb3Zlci1mMzItZHVwbGljYXRlICRvdmVyLWY2NC1kdXBsaWNh
dGUKLSAgICApCi0gICkKLQotICA7OyBTeW50YXgKLQotICAoZnVuYwotICAgIChyZXR1cm5fY2Fs
bF9pbmRpcmVjdCAoaTMyLmNvbnN0IDApKQotICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocGFy
YW0gaTY0KSAoaTY0LmNvbnN0IDApIChpMzIuY29uc3QgMCkpCi0gICAgKHJldHVybl9jYWxsX2lu
ZGlyZWN0IChwYXJhbSBpNjQpIChwYXJhbSkgKHBhcmFtIGY2NCBpMzIgaTY0KQotICAgICAgKGk2
NC5jb25zdCAwKSAoZjY0LmNvbnN0IDApIChpMzIuY29uc3QgMCkgKGk2NC5jb25zdCAwKSAoaTMy
LmNvbnN0IDApCi0gICAgKQotICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocmVzdWx0KSAoaTMy
LmNvbnN0IDApKQotICApCi0KLSAgKGZ1bmMgKHJlc3VsdCBpMzIpCi0gICAgKHJldHVybl9jYWxs
X2luZGlyZWN0IChyZXN1bHQgaTMyKSAoaTMyLmNvbnN0IDApKQotICAgIChyZXR1cm5fY2FsbF9p
bmRpcmVjdCAocmVzdWx0IGkzMikgKHJlc3VsdCkgKGkzMi5jb25zdCAwKSkKLSAgICAocmV0dXJu
X2NhbGxfaW5kaXJlY3QgKHBhcmFtIGk2NCkgKHJlc3VsdCBpMzIpIChpNjQuY29uc3QgMCkgKGkz
Mi5jb25zdCAwKSkKLSAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QKLSAgICAgIChwYXJhbSkgKHBh
cmFtIGk2NCkgKHBhcmFtKSAocGFyYW0gZjY0IGkzMiBpNjQpIChwYXJhbSkgKHBhcmFtKQotICAg
ICAgKHJlc3VsdCkgKHJlc3VsdCBpMzIpIChyZXN1bHQpIChyZXN1bHQpCi0gICAgICAoaTY0LmNv
bnN0IDApIChmNjQuY29uc3QgMCkgKGkzMi5jb25zdCAwKSAoaTY0LmNvbnN0IDApIChpMzIuY29u
c3QgMCkKLSAgICApCi0gICkKLQotICAoZnVuYyAocmVzdWx0IGk2NCkKLSAgICAocmV0dXJuX2Nh
bGxfaW5kaXJlY3QgKHR5cGUgJG92ZXItaTY0KSAocGFyYW0gaTY0KSAocmVzdWx0IGk2NCkKLSAg
ICAgIChpNjQuY29uc3QgMCkgKGkzMi5jb25zdCAwKQotICAgICkKLSAgKQotCi0gIDs7IFR5cGlu
ZwotCi0gIChmdW5jIChleHBvcnQgInR5cGUtaTMyIikgKHJlc3VsdCBpMzIpCi0gICAgKHJldHVy
bl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQtaTMyKSAoaTMyLmNvbnN0IDApKQotICApCi0gIChm
dW5jIChleHBvcnQgInR5cGUtaTY0IikgKHJlc3VsdCBpNjQpCi0gICAgKHJldHVybl9jYWxsX2lu
ZGlyZWN0ICh0eXBlICRvdXQtaTY0KSAoaTMyLmNvbnN0IDEpKQotICApCi0gIChmdW5jIChleHBv
cnQgInR5cGUtZjMyIikgKHJlc3VsdCBmMzIpCi0gICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0
eXBlICRvdXQtZjMyKSAoaTMyLmNvbnN0IDIpKQotICApCi0gIChmdW5jIChleHBvcnQgInR5cGUt
ZjY0IikgKHJlc3VsdCBmNjQpCi0gICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQt
ZjY0KSAoaTMyLmNvbnN0IDMpKQotICApCi0KLSAgKGZ1bmMgKGV4cG9ydCAidHlwZS1pbmRleCIp
IChyZXN1bHQgaTY0KQotICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkb3Zlci1pNjQp
IChpNjQuY29uc3QgMTAwKSAoaTMyLmNvbnN0IDUpKQotICApCi0KLSAgKGZ1bmMgKGV4cG9ydCAi
dHlwZS1maXJzdC1pMzIiKSAocmVzdWx0IGkzMikKLSAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3Qg
KHR5cGUgJG92ZXItaTMyKSAoaTMyLmNvbnN0IDMyKSAoaTMyLmNvbnN0IDQpKQotICApCi0gIChm
dW5jIChleHBvcnQgInR5cGUtZmlyc3QtaTY0IikgKHJlc3VsdCBpNjQpCi0gICAgKHJldHVybl9j
YWxsX2luZGlyZWN0ICh0eXBlICRvdmVyLWk2NCkgKGk2NC5jb25zdCA2NCkgKGkzMi5jb25zdCA1
KSkKLSAgKQotICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWZpcnN0LWYzMiIpIChyZXN1bHQgZjMyKQot
ICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkb3Zlci1mMzIpIChmMzIuY29uc3QgMS4z
MikgKGkzMi5jb25zdCA2KSkKLSAgKQotICAoZnVuYyAoZXhwb3J0ICJ0eXBlLWZpcnN0LWY2NCIp
IChyZXN1bHQgZjY0KQotICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkb3Zlci1mNjQp
IChmNjQuY29uc3QgMS42NCkgKGkzMi5jb25zdCA3KSkKLSAgKQotCi0gIChmdW5jIChleHBvcnQg
InR5cGUtc2Vjb25kLWkzMiIpIChyZXN1bHQgaTMyKQotICAgIChyZXR1cm5fY2FsbF9pbmRpcmVj
dCAodHlwZSAkZjMyLWkzMikKLSAgICAgIChmMzIuY29uc3QgMzIuMSkgKGkzMi5jb25zdCAzMikg
KGkzMi5jb25zdCA4KQotICAgICkKLSAgKQotICAoZnVuYyAoZXhwb3J0ICJ0eXBlLXNlY29uZC1p
NjQiKSAocmVzdWx0IGk2NCkKLSAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJGkzMi1p
NjQpCi0gICAgICAoaTMyLmNvbnN0IDMyKSAoaTY0LmNvbnN0IDY0KSAoaTMyLmNvbnN0IDkpCi0g
ICAgKQotICApCi0gIChmdW5jIChleHBvcnQgInR5cGUtc2Vjb25kLWYzMiIpIChyZXN1bHQgZjMy
KQotICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkZjY0LWYzMikKLSAgICAgIChmNjQu
Y29uc3QgNjQpIChmMzIuY29uc3QgMzIpIChpMzIuY29uc3QgMTApCi0gICAgKQotICApCi0gIChm
dW5jIChleHBvcnQgInR5cGUtc2Vjb25kLWY2NCIpIChyZXN1bHQgZjY0KQotICAgIChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAodHlwZSAkaTY0LWY2NCkKLSAgICAgIChpNjQuY29uc3QgNjQpIChmNjQu
Y29uc3QgNjQuMSkgKGkzMi5jb25zdCAxMSkKLSAgICApCi0gICkKLQotICA7OyBEaXNwYXRjaAot
Ci0gIChmdW5jIChleHBvcnQgImRpc3BhdGNoIikgKHBhcmFtIGkzMiBpNjQpIChyZXN1bHQgaTY0
KQotICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkb3Zlci1pNjQpIChsb2NhbC5nZXQg
MSkgKGxvY2FsLmdldCAwKSkKLSAgKQotCi0gIChmdW5jIChleHBvcnQgImRpc3BhdGNoLXN0cnVj
dHVyYWwiKSAocGFyYW0gaTMyKSAocmVzdWx0IGk2NCkKLSAgICAocmV0dXJuX2NhbGxfaW5kaXJl
Y3QgKHR5cGUgJG92ZXItaTY0LWR1cGxpY2F0ZSkKLSAgICAgIChpNjQuY29uc3QgOSkgKGxvY2Fs
LmdldCAwKQotICAgICkKLSAgKQotCi0gIDs7IE11bHRpcGxlIHRhYmxlcwotCi0gICh0YWJsZSAk
dGFiMiBmdW5jcmVmIChlbGVtICR0YWItZjEpKQotICAodGFibGUgJHRhYjMgZnVuY3JlZiAoZWxl
bSAkdGFiLWYyKSkKLQotICAoZnVuYyAkdGFiLWYxIChyZXN1bHQgaTMyKSAoaTMyLmNvbnN0IDB4
MTMzKSkKLSAgKGZ1bmMgJHRhYi1mMiAocmVzdWx0IGkzMikgKGkzMi5jb25zdCAweDEzNCkpCi0K
LSAgKGZ1bmMgKGV4cG9ydCAiY2FsbC10YWIiKSAocGFyYW0gJGkgaTMyKSAocmVzdWx0IGkzMikK
LSAgICAoaWYgKGkzMi5lcSAobG9jYWwuZ2V0ICRpKSAoaTMyLmNvbnN0IDApKQotICAgICAgKHRo
ZW4gKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdXQtaTMyKSAoaTMyLmNvbnN0IDApKSkK
LSAgICApCi0gICAgKGlmIChpMzIuZXEgKGxvY2FsLmdldCAkaSkgKGkzMi5jb25zdCAxKSkKLSAg
ICAgICh0aGVuIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAxICh0eXBlICRvdXQtaTMyKSAoaTMyLmNv
bnN0IDApKSkKLSAgICApCi0gICAgKGlmIChpMzIuZXEgKGxvY2FsLmdldCAkaSkgKGkzMi5jb25z
dCAyKSkKLSAgICAgICh0aGVuIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAkdGFiMyAodHlwZSAkb3V0
LWkzMikgKGkzMi5jb25zdCAwKSkpCi0gICAgKQotICAgIChpMzIuY29uc3QgMCkKLSAgKQotCi0g
IDs7IFJlY3Vyc2lvbgotCi0gIChmdW5jICRmYWMgKGV4cG9ydCAiZmFjIikgKHR5cGUgJG92ZXIt
aTY0KQotICAgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAocGFyYW0gaTY0IGk2NCkgKHJlc3VsdCBp
NjQpCi0gICAgICAobG9jYWwuZ2V0IDApIChpNjQuY29uc3QgMSkgKGkzMi5jb25zdCAxMykKLSAg
ICApCi0gICkKLQotICAoZnVuYyAkZmFjLWFjYyAocGFyYW0gaTY0IGk2NCkgKHJlc3VsdCBpNjQp
Ci0gICAgKGlmIChyZXN1bHQgaTY0KSAoaTY0LmVxeiAobG9jYWwuZ2V0IDApKQotICAgICAgKHRo
ZW4gKGxvY2FsLmdldCAxKSkKLSAgICAgIChlbHNlCi0gICAgICAgIChyZXR1cm5fY2FsbF9pbmRp
cmVjdCAocGFyYW0gaTY0IGk2NCkgKHJlc3VsdCBpNjQpCi0gICAgICAgICAgKGk2NC5zdWIgKGxv
Y2FsLmdldCAwKSAoaTY0LmNvbnN0IDEpKQotICAgICAgICAgIChpNjQubXVsIChsb2NhbC5nZXQg
MCkgKGxvY2FsLmdldCAxKSkKLSAgICAgICAgICAoaTMyLmNvbnN0IDEzKQotICAgICAgICApCi0g
ICAgICApCi0gICAgKQotICApCi0KLSAgKGZ1bmMgJGV2ZW4gKGV4cG9ydCAiZXZlbiIpIChwYXJh
bSBpMzIpIChyZXN1bHQgaTMyKQotICAgIChpZiAocmVzdWx0IGkzMikgKGkzMi5lcXogKGxvY2Fs
LmdldCAwKSkKLSAgICAgICh0aGVuIChpMzIuY29uc3QgNDQpKQotICAgICAgKGVsc2UKLSAgICAg
ICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdmVyLWkzMikKLSAgICAgICAgICAoaTMy
LnN1YiAobG9jYWwuZ2V0IDApIChpMzIuY29uc3QgMSkpCi0gICAgICAgICAgKGkzMi5jb25zdCAx
NSkKLSAgICAgICAgKQotICAgICAgKQotICAgICkKLSAgKQotICAoZnVuYyAkb2RkIChleHBvcnQg
Im9kZCIpIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKQotICAgIChpZiAocmVzdWx0IGkzMikgKGkz
Mi5lcXogKGxvY2FsLmdldCAwKSkKLSAgICAgICh0aGVuIChpMzIuY29uc3QgOTkpKQotICAgICAg
KGVsc2UKLSAgICAgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRvdmVyLWkzMikKLSAg
ICAgICAgICAoaTMyLnN1YiAobG9jYWwuZ2V0IDApIChpMzIuY29uc3QgMSkpCi0gICAgICAgICAg
KGkzMi5jb25zdCAxNCkKLSAgICAgICAgKQotICAgICAgKQotICAgICkKLSAgKQotKQotCi0oYXNz
ZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLWkzMiIpIChpMzIuY29uc3QgMHgxMzIpKQotKGFzc2Vy
dF9yZXR1cm4gKGludm9rZSAidHlwZS1pNjQiKSAoaTY0LmNvbnN0IDB4MTY0KSkKLShhc3NlcnRf
cmV0dXJuIChpbnZva2UgInR5cGUtZjMyIikgKGYzMi5jb25zdCAweGYzMikpCi0oYXNzZXJ0X3Jl
dHVybiAoaW52b2tlICJ0eXBlLWY2NCIpIChmNjQuY29uc3QgMHhmNjQpKQotCi0oYXNzZXJ0X3Jl
dHVybiAoaW52b2tlICJ0eXBlLWluZGV4IikgKGk2NC5jb25zdCAxMDApKQotCi0oYXNzZXJ0X3Jl
dHVybiAoaW52b2tlICJ0eXBlLWZpcnN0LWkzMiIpIChpMzIuY29uc3QgMzIpKQotKGFzc2VydF9y
ZXR1cm4gKGludm9rZSAidHlwZS1maXJzdC1pNjQiKSAoaTY0LmNvbnN0IDY0KSkKLShhc3NlcnRf
cmV0dXJuIChpbnZva2UgInR5cGUtZmlyc3QtZjMyIikgKGYzMi5jb25zdCAxLjMyKSkKLShhc3Nl
cnRfcmV0dXJuIChpbnZva2UgInR5cGUtZmlyc3QtZjY0IikgKGY2NC5jb25zdCAxLjY0KSkKLQot
KGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1zZWNvbmQtaTMyIikgKGkzMi5jb25zdCAzMikp
Ci0oYXNzZXJ0X3JldHVybiAoaW52b2tlICJ0eXBlLXNlY29uZC1pNjQiKSAoaTY0LmNvbnN0IDY0
KSkKLShhc3NlcnRfcmV0dXJuIChpbnZva2UgInR5cGUtc2Vjb25kLWYzMiIpIChmMzIuY29uc3Qg
MzIpKQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAidHlwZS1zZWNvbmQtZjY0IikgKGY2NC5jb25z
dCA2NC4xKSkKLQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZGlzcGF0Y2giIChpMzIuY29uc3Qg
NSkgKGk2NC5jb25zdCAyKSkgKGk2NC5jb25zdCAyKSkKLShhc3NlcnRfcmV0dXJuIChpbnZva2Ug
ImRpc3BhdGNoIiAoaTMyLmNvbnN0IDUpIChpNjQuY29uc3QgNSkpIChpNjQuY29uc3QgNSkpCi0o
YXNzZXJ0X3JldHVybiAoaW52b2tlICJkaXNwYXRjaCIgKGkzMi5jb25zdCAxMikgKGk2NC5jb25z
dCA1KSkgKGk2NC5jb25zdCAxMjApKQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZGlzcGF0Y2gi
IChpMzIuY29uc3QgMTcpIChpNjQuY29uc3QgMikpIChpNjQuY29uc3QgMikpCi0oYXNzZXJ0X3Ry
YXAgKGludm9rZSAiZGlzcGF0Y2giIChpMzIuY29uc3QgMCkgKGk2NC5jb25zdCAyKSkgImluZGly
ZWN0IGNhbGwgdHlwZSBtaXNtYXRjaCIpCi0oYXNzZXJ0X3RyYXAgKGludm9rZSAiZGlzcGF0Y2gi
IChpMzIuY29uc3QgMTUpIChpNjQuY29uc3QgMikpICJpbmRpcmVjdCBjYWxsIHR5cGUgbWlzbWF0
Y2giKQotKGFzc2VydF90cmFwIChpbnZva2UgImRpc3BhdGNoIiAoaTMyLmNvbnN0IDIwKSAoaTY0
LmNvbnN0IDIpKSAidW5kZWZpbmVkIGVsZW1lbnQiKQotKGFzc2VydF90cmFwIChpbnZva2UgImRp
c3BhdGNoIiAoaTMyLmNvbnN0IC0xKSAoaTY0LmNvbnN0IDIpKSAidW5kZWZpbmVkIGVsZW1lbnQi
KQotKGFzc2VydF90cmFwIChpbnZva2UgImRpc3BhdGNoIiAoaTMyLmNvbnN0IDEyMTM0MzI0MjMp
IChpNjQuY29uc3QgMikpICJ1bmRlZmluZWQgZWxlbWVudCIpCi0KLShhc3NlcnRfcmV0dXJuIChp
bnZva2UgImRpc3BhdGNoLXN0cnVjdHVyYWwiIChpMzIuY29uc3QgNSkpIChpNjQuY29uc3QgOSkp
Ci0oYXNzZXJ0X3JldHVybiAoaW52b2tlICJkaXNwYXRjaC1zdHJ1Y3R1cmFsIiAoaTMyLmNvbnN0
IDUpKSAoaTY0LmNvbnN0IDkpKQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZGlzcGF0Y2gtc3Ry
dWN0dXJhbCIgKGkzMi5jb25zdCAxMikpIChpNjQuY29uc3QgMzYyODgwKSkKLShhc3NlcnRfcmV0
dXJuIChpbnZva2UgImRpc3BhdGNoLXN0cnVjdHVyYWwiIChpMzIuY29uc3QgMTcpKSAoaTY0LmNv
bnN0IDkpKQotKGFzc2VydF90cmFwIChpbnZva2UgImRpc3BhdGNoLXN0cnVjdHVyYWwiIChpMzIu
Y29uc3QgMTEpKSAiaW5kaXJlY3QgY2FsbCB0eXBlIG1pc21hdGNoIikKLShhc3NlcnRfdHJhcCAo
aW52b2tlICJkaXNwYXRjaC1zdHJ1Y3R1cmFsIiAoaTMyLmNvbnN0IDE2KSkgImluZGlyZWN0IGNh
bGwgdHlwZSBtaXNtYXRjaCIpCi0KLShhc3NlcnRfcmV0dXJuIChpbnZva2UgImNhbGwtdGFiIiAo
aTMyLmNvbnN0IDApKSAoaTMyLmNvbnN0IDB4MTMyKSkKLShhc3NlcnRfcmV0dXJuIChpbnZva2Ug
ImNhbGwtdGFiIiAoaTMyLmNvbnN0IDEpKSAoaTMyLmNvbnN0IDB4MTMzKSkKLShhc3NlcnRfcmV0
dXJuIChpbnZva2UgImNhbGwtdGFiIiAoaTMyLmNvbnN0IDIpKSAoaTMyLmNvbnN0IDB4MTM0KSkK
LQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZmFjIiAoaTY0LmNvbnN0IDApKSAoaTY0LmNvbnN0
IDEpKQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZmFjIiAoaTY0LmNvbnN0IDEpKSAoaTY0LmNv
bnN0IDEpKQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZmFjIiAoaTY0LmNvbnN0IDUpKSAoaTY0
LmNvbnN0IDEyMCkpCi0oYXNzZXJ0X3JldHVybiAoaW52b2tlICJmYWMiIChpNjQuY29uc3QgMjUp
KSAoaTY0LmNvbnN0IDcwMzQ1MzUyNzc1NzM5NjM3NzYpKQotCi0oYXNzZXJ0X3JldHVybiAoaW52
b2tlICJldmVuIiAoaTMyLmNvbnN0IDApKSAoaTMyLmNvbnN0IDQ0KSkKLShhc3NlcnRfcmV0dXJu
IChpbnZva2UgImV2ZW4iIChpMzIuY29uc3QgMSkpIChpMzIuY29uc3QgOTkpKQotKGFzc2VydF9y
ZXR1cm4gKGludm9rZSAiZXZlbiIgKGkzMi5jb25zdCAxMDApKSAoaTMyLmNvbnN0IDQ0KSkKLShh
c3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4iIChpMzIuY29uc3QgNzcpKSAoaTMyLmNvbnN0IDk5
KSkKLShhc3NlcnRfcmV0dXJuIChpbnZva2UgImV2ZW4iIChpMzIuY29uc3QgMTAwXzAwMCkpIChp
MzIuY29uc3QgNDQpKQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAiZXZlbiIgKGkzMi5jb25zdCAx
MTFfMTExKSkgKGkzMi5jb25zdCA5OSkpCi0oYXNzZXJ0X3JldHVybiAoaW52b2tlICJvZGQiIChp
MzIuY29uc3QgMCkpIChpMzIuY29uc3QgOTkpKQotKGFzc2VydF9yZXR1cm4gKGludm9rZSAib2Rk
IiAoaTMyLmNvbnN0IDEpKSAoaTMyLmNvbnN0IDQ0KSkKLShhc3NlcnRfcmV0dXJuIChpbnZva2Ug
Im9kZCIgKGkzMi5jb25zdCAyMDApKSAoaTMyLmNvbnN0IDk5KSkKLShhc3NlcnRfcmV0dXJuIChp
bnZva2UgIm9kZCIgKGkzMi5jb25zdCA3NykpIChpMzIuY29uc3QgNDQpKQotKGFzc2VydF9yZXR1
cm4gKGludm9rZSAib2RkIiAoaTMyLmNvbnN0IDIwMF8wMDIpKSAoaTMyLmNvbnN0IDk5KSkKLShh
c3NlcnRfcmV0dXJuIChpbnZva2UgIm9kZCIgKGkzMi5jb25zdCAzMDBfMDAzKSkgKGkzMi5jb25z
dCA0NCkpCi0KLQotOzsgSW52YWxpZCBzeW50YXgKLQotKGFzc2VydF9tYWxmb3JtZWQKLSAgKG1v
ZHVsZSBxdW90ZQotICAgICIodHlwZSAkc2lnIChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMy
KSkpIgotICAgICIodGFibGUgMCBmdW5jcmVmKSIKLSAgICAiKGZ1bmMgKHJlc3VsdCBpMzIpIgot
ICAgICIgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkc2lnKSAocmVzdWx0IGkzMikgKHBh
cmFtIGkzMikiCi0gICAgIiAgICAoaTMyLmNvbnN0IDApIChpMzIuY29uc3QgMCkiCi0gICAgIiAg
KSIKLSAgICAiKSIKLSAgKQotICAidW5leHBlY3RlZCB0b2tlbiIKLSkKLShhc3NlcnRfbWFsZm9y
bWVkCi0gIChtb2R1bGUgcXVvdGUKLSAgICAiKHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyKSAo
cmVzdWx0IGkzMikpKSIKLSAgICAiKHRhYmxlIDAgZnVuY3JlZikiCi0gICAgIihmdW5jIChyZXN1
bHQgaTMyKSIKLSAgICAiICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHBhcmFtIGkzMikgKHR5cGUg
JHNpZykgKHJlc3VsdCBpMzIpIgotICAgICIgICAgKGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0IDAp
IgotICAgICIgICkiCi0gICAgIikiCi0gICkKLSAgInVuZXhwZWN0ZWQgdG9rZW4iCi0pCi0oYXNz
ZXJ0X21hbGZvcm1lZAotICAobW9kdWxlIHF1b3RlCi0gICAgIih0eXBlICRzaWcgKGZ1bmMgKHBh
cmFtIGkzMikgKHJlc3VsdCBpMzIpKSkiCi0gICAgIih0YWJsZSAwIGZ1bmNyZWYpIgotICAgICIo
ZnVuYyAocmVzdWx0IGkzMikiCi0gICAgIiAgKHJldHVybl9jYWxsX2luZGlyZWN0IChwYXJhbSBp
MzIpIChyZXN1bHQgaTMyKSAodHlwZSAkc2lnKSIKLSAgICAiICAgIChpMzIuY29uc3QgMCkgKGkz
Mi5jb25zdCAwKSIKLSAgICAiICApIgotICAgICIpIgotICApCi0gICJ1bmV4cGVjdGVkIHRva2Vu
IgotKQotKGFzc2VydF9tYWxmb3JtZWQKLSAgKG1vZHVsZSBxdW90ZQotICAgICIodHlwZSAkc2ln
IChmdW5jIChwYXJhbSBpMzIpIChyZXN1bHQgaTMyKSkpIgotICAgICIodGFibGUgMCBmdW5jcmVm
KSIKLSAgICAiKGZ1bmMgKHJlc3VsdCBpMzIpIgotICAgICIgIChyZXR1cm5fY2FsbF9pbmRpcmVj
dCAocmVzdWx0IGkzMikgKHR5cGUgJHNpZykgKHBhcmFtIGkzMikiCi0gICAgIiAgICAoaTMyLmNv
bnN0IDApIChpMzIuY29uc3QgMCkiCi0gICAgIiAgKSIKLSAgICAiKSIKLSAgKQotICAidW5leHBl
Y3RlZCB0b2tlbiIKLSkKLShhc3NlcnRfbWFsZm9ybWVkCi0gIChtb2R1bGUgcXVvdGUKLSAgICAi
KHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKSIKLSAgICAiKHRhYmxl
IDAgZnVuY3JlZikiCi0gICAgIihmdW5jIChyZXN1bHQgaTMyKSIKLSAgICAiICAocmV0dXJuX2Nh
bGxfaW5kaXJlY3QgKHJlc3VsdCBpMzIpIChwYXJhbSBpMzIpICh0eXBlICRzaWcpIgotICAgICIg
ICAgKGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0IDApIgotICAgICIgICkiCi0gICAgIikiCi0gICkK
LSAgInVuZXhwZWN0ZWQgdG9rZW4iCi0pCi0oYXNzZXJ0X21hbGZvcm1lZAotICAobW9kdWxlIHF1
b3RlCi0gICAgIih0YWJsZSAwIGZ1bmNyZWYpIgotICAgICIoZnVuYyAocmVzdWx0IGkzMikiCi0g
ICAgIiAgKHJldHVybl9jYWxsX2luZGlyZWN0IChyZXN1bHQgaTMyKSAocGFyYW0gaTMyKSIKLSAg
ICAiICAgIChpMzIuY29uc3QgMCkgKGkzMi5jb25zdCAwKSIKLSAgICAiICApIgotICAgICIpIgot
ICApCi0gICJ1bmV4cGVjdGVkIHRva2VuIgotKQotCi0oYXNzZXJ0X21hbGZvcm1lZAotICAobW9k
dWxlIHF1b3RlCi0gICAgIih0YWJsZSAwIGZ1bmNyZWYpIgotICAgICIoZnVuYyAocmV0dXJuX2Nh
bGxfaW5kaXJlY3QgKHBhcmFtICR4IGkzMikgKGkzMi5jb25zdCAwKSAoaTMyLmNvbnN0IDApKSki
Ci0gICkKLSAgInVuZXhwZWN0ZWQgdG9rZW4iCi0pCi0oYXNzZXJ0X21hbGZvcm1lZAotICAobW9k
dWxlIHF1b3RlCi0gICAgIih0eXBlICRzaWcgKGZ1bmMpKSIKLSAgICAiKHRhYmxlIDAgZnVuY3Jl
ZikiCi0gICAgIihmdW5jIChyZXN1bHQgaTMyKSIKLSAgICAiICAocmV0dXJuX2NhbGxfaW5kaXJl
Y3QgKHR5cGUgJHNpZykgKHJlc3VsdCBpMzIpIChpMzIuY29uc3QgMCkpIgotICAgICIpIgotICAp
Ci0gICJpbmxpbmUgZnVuY3Rpb24gdHlwZSIKLSkKLShhc3NlcnRfbWFsZm9ybWVkCi0gIChtb2R1
bGUgcXVvdGUKLSAgICAiKHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyKSAocmVzdWx0IGkzMikp
KSIKLSAgICAiKHRhYmxlIDAgZnVuY3JlZikiCi0gICAgIihmdW5jIChyZXN1bHQgaTMyKSIKLSAg
ICAiICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgJHNpZykgKHJlc3VsdCBpMzIpIChpMzIu
Y29uc3QgMCkpIgotICAgICIpIgotICApCi0gICJpbmxpbmUgZnVuY3Rpb24gdHlwZSIKLSkKLShh
c3NlcnRfbWFsZm9ybWVkCi0gIChtb2R1bGUgcXVvdGUKLSAgICAiKHR5cGUgJHNpZyAoZnVuYyAo
cGFyYW0gaTMyKSAocmVzdWx0IGkzMikpKSIKLSAgICAiKHRhYmxlIDAgZnVuY3JlZikiCi0gICAg
IihmdW5jIgotICAgICIgIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAkc2lnKSAocGFyYW0g
aTMyKSIKLSAgICAiICAgIChpMzIuY29uc3QgMCkgKGkzMi5jb25zdCAwKSIKLSAgICAiICApIgot
ICAgICIpIgotICApCi0gICJpbmxpbmUgZnVuY3Rpb24gdHlwZSIKLSkKLShhc3NlcnRfbWFsZm9y
bWVkCi0gIChtb2R1bGUgcXVvdGUKLSAgICAiKHR5cGUgJHNpZyAoZnVuYyAocGFyYW0gaTMyIGkz
MikgKHJlc3VsdCBpMzIpKSkiCi0gICAgIih0YWJsZSAwIGZ1bmNyZWYpIgotICAgICIoZnVuYyAo
cmVzdWx0IGkzMikiCi0gICAgIiAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlICRzaWcpIChw
YXJhbSBpMzIpIChyZXN1bHQgaTMyKSIKLSAgICAiICAgIChpMzIuY29uc3QgMCkgKGkzMi5jb25z
dCAwKSIKLSAgICAiICApIgotICAgICIpIgotICApCi0gICJpbmxpbmUgZnVuY3Rpb24gdHlwZSIK
LSkKLQotOzsgSW52YWxpZCB0eXBpbmcKLQotKGFzc2VydF9pbnZhbGlkCi0gIChtb2R1bGUKLSAg
ICAodHlwZSAoZnVuYykpCi0gICAgKGZ1bmMgJG5vLXRhYmxlIChyZXR1cm5fY2FsbF9pbmRpcmVj
dCAodHlwZSAwKSAoaTMyLmNvbnN0IDApKSkKLSAgKQotICAidW5rbm93biB0YWJsZSIKLSkKLQot
KGFzc2VydF9pbnZhbGlkCi0gIChtb2R1bGUKLSAgICAodHlwZSAoZnVuYykpCi0gICAgKHRhYmxl
IDAgZnVuY3JlZikKLSAgICAoZnVuYyAkdHlwZS12b2lkLXZzLW51bSAoaTMyLmVxeiAocmV0dXJu
X2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkzMi5jb25zdCAwKSkpKQotICApCi0gICJ0eXBlIG1p
c21hdGNoIgotKQotKGFzc2VydF9pbnZhbGlkCi0gIChtb2R1bGUKLSAgICAodHlwZSAoZnVuYyAo
cmVzdWx0IGk2NCkpKQotICAgICh0YWJsZSAwIGZ1bmNyZWYpCi0gICAgKGZ1bmMgJHR5cGUtbnVt
LXZzLW51bSAoaTMyLmVxeiAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5cGUgMCkgKGkzMi5jb25z
dCAwKSkpKQotICApCi0gICJ0eXBlIG1pc21hdGNoIgotKQotCi0oYXNzZXJ0X2ludmFsaWQKLSAg
KG1vZHVsZQotICAgICh0eXBlIChmdW5jIChwYXJhbSBpMzIpKSkKLSAgICAodGFibGUgMCBmdW5j
cmVmKQotICAgIChmdW5jICRhcml0eS0wLXZzLTEgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBl
IDApIChpMzIuY29uc3QgMCkpKQotICApCi0gICJ0eXBlIG1pc21hdGNoIgotKQotKGFzc2VydF9p
bnZhbGlkCi0gIChtb2R1bGUKLSAgICAodHlwZSAoZnVuYyAocGFyYW0gZjY0IGkzMikpKQotICAg
ICh0YWJsZSAwIGZ1bmNyZWYpCi0gICAgKGZ1bmMgJGFyaXR5LTAtdnMtMiAocmV0dXJuX2NhbGxf
aW5kaXJlY3QgKHR5cGUgMCkgKGkzMi5jb25zdCAwKSkpCi0gICkKLSAgInR5cGUgbWlzbWF0Y2gi
Ci0pCi0KLShtb2R1bGUKLSAgKHR5cGUgKGZ1bmMpKQotICAodGFibGUgMCBmdW5jcmVmKQotICAo
ZnVuYyAkYXJpdHktMS12cy0wIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNv
bnN0IDEpIChpMzIuY29uc3QgMCkpKQotKQotCi0obW9kdWxlCi0gICh0eXBlIChmdW5jKSkKLSAg
KHRhYmxlIDAgZnVuY3JlZikKLSAgKGZ1bmMgJGFyaXR5LTItdnMtMAotICAgIChyZXR1cm5fY2Fs
bF9pbmRpcmVjdCAodHlwZSAwKSAoZjY0LmNvbnN0IDIpIChpMzIuY29uc3QgMSkgKGkzMi5jb25z
dCAwKSkKLSAgKQotKQotCi0oYXNzZXJ0X2ludmFsaWQKLSAgKG1vZHVsZQotICAgICh0eXBlIChm
dW5jIChwYXJhbSBpMzIpKSkKLSAgICAodGFibGUgMCBmdW5jcmVmKQotICAgIChmdW5jICR0eXBl
LWZ1bmMtdm9pZC12cy1pMzIgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0eXBlIDApIChpMzIuY29u
c3QgMSkgKG5vcCkpKQotICApCi0gICJ0eXBlIG1pc21hdGNoIgotKQotKGFzc2VydF9pbnZhbGlk
Ci0gIChtb2R1bGUKLSAgICAodHlwZSAoZnVuYyAocGFyYW0gaTMyKSkpCi0gICAgKHRhYmxlIDAg
ZnVuY3JlZikKLSAgICAoZnVuYyAkdHlwZS1mdW5jLW51bS12cy1pMzIgKHJldHVybl9jYWxsX2lu
ZGlyZWN0ICh0eXBlIDApIChpMzIuY29uc3QgMCkgKGk2NC5jb25zdCAxKSkpCi0gICkKLSAgInR5
cGUgbWlzbWF0Y2giCi0pCi0KLShhc3NlcnRfaW52YWxpZAotICAobW9kdWxlCi0gICAgKHR5cGUg
KGZ1bmMgKHBhcmFtIGkzMiBpMzIpKSkKLSAgICAodGFibGUgMCBmdW5jcmVmKQotICAgIChmdW5j
ICR0eXBlLWZpcnN0LXZvaWQtdnMtbnVtCi0gICAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5
cGUgMCkgKG5vcCkgKGkzMi5jb25zdCAxKSAoaTMyLmNvbnN0IDApKQotICAgICkKLSAgKQotICAi
dHlwZSBtaXNtYXRjaCIKLSkKLShhc3NlcnRfaW52YWxpZAotICAobW9kdWxlCi0gICAgKHR5cGUg
KGZ1bmMgKHBhcmFtIGkzMiBpMzIpKSkKLSAgICAodGFibGUgMCBmdW5jcmVmKQotICAgIChmdW5j
ICR0eXBlLXNlY29uZC12b2lkLXZzLW51bQotICAgICAgKHJldHVybl9jYWxsX2luZGlyZWN0ICh0
eXBlIDApIChpMzIuY29uc3QgMSkgKG5vcCkgKGkzMi5jb25zdCAwKSkKLSAgICApCi0gICkKLSAg
InR5cGUgbWlzbWF0Y2giCi0pCi0oYXNzZXJ0X2ludmFsaWQKLSAgKG1vZHVsZQotICAgICh0eXBl
IChmdW5jIChwYXJhbSBpMzIgZjY0KSkpCi0gICAgKHRhYmxlIDAgZnVuY3JlZikKLSAgICAoZnVu
YyAkdHlwZS1maXJzdC1udW0tdnMtbnVtCi0gICAgICAocmV0dXJuX2NhbGxfaW5kaXJlY3QgKHR5
cGUgMCkgKGY2NC5jb25zdCAxKSAoaTMyLmNvbnN0IDEpIChpMzIuY29uc3QgMCkpCi0gICAgKQot
ICApCi0gICJ0eXBlIG1pc21hdGNoIgotKQotKGFzc2VydF9pbnZhbGlkCi0gIChtb2R1bGUKLSAg
ICAodHlwZSAoZnVuYyAocGFyYW0gZjY0IGkzMikpKQotICAgICh0YWJsZSAwIGZ1bmNyZWYpCi0g
ICAgKGZ1bmMgJHR5cGUtc2Vjb25kLW51bS12cy1udW0KLSAgICAgIChyZXR1cm5fY2FsbF9pbmRp
cmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDEpIChmNjQuY29uc3QgMSkgKGkzMi5jb25zdCAwKSkK
LSAgICApCi0gICkKLSAgInR5cGUgbWlzbWF0Y2giCi0pCi0KLQotOzsgVW5ib3VuZCB0eXBlCi0K
LShhc3NlcnRfaW52YWxpZAotICAobW9kdWxlCi0gICAgKHRhYmxlIDAgZnVuY3JlZikKLSAgICAo
ZnVuYyAkdW5ib3VuZC10eXBlIChyZXR1cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAxKSAoaTMyLmNv
bnN0IDApKSkKLSAgKQotICAidW5rbm93biB0eXBlIgotKQotKGFzc2VydF9pbnZhbGlkCi0gICht
b2R1bGUKLSAgICAodGFibGUgMCBmdW5jcmVmKQotICAgIChmdW5jICRsYXJnZS10eXBlIChyZXR1
cm5fY2FsbF9pbmRpcmVjdCAodHlwZSAxMDEyMzIxMzAwKSAoaTMyLmNvbnN0IDApKSkKLSAgKQot
ICAidW5rbm93biB0eXBlIgotKQotCi0KLTs7IFVuYm91bmQgZnVuY3Rpb24gaW4gdGFibGUKLQot
KGFzc2VydF9pbnZhbGlkCi0gIChtb2R1bGUgKHRhYmxlIGZ1bmNyZWYgKGVsZW0gMCAwKSkpCi0g
ICJ1bmtub3duIGZ1bmN0aW9uIDAiCi0pCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vdGFpbC1j
YWxsLXNwZWMtdGVzdHMvdGFpbF9jYWxsX2luZGlyZWN0Lndhc3QuanMgYi9KU1Rlc3RzL3dhc20v
dGFpbC1jYWxsLXNwZWMtdGVzdHMvdGFpbF9jYWxsX2luZGlyZWN0Lndhc3QuanMKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxZDczZDNhMTJhYS4uMDAwMDAwMDAwMDAwCi0tLSBhL0pT
VGVzdHMvd2FzbS90YWlsLWNhbGwtc3BlYy10ZXN0cy90YWlsX2NhbGxfaW5kaXJlY3Qud2FzdC5q
cworKysgL2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBACi0KLS8vIHJldHVybl9jYWxsX2luZGly
ZWN0Lndhc3Q6MwotbGV0ICQxID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4
MDBceDAwXHgwMVx4ZjdceDgwXHg4MFx4ODBceDAwXHgxN1x4NjBceDAwXHgwMFx4NjBceDAwXHgw
MVx4N2ZceDYwXHgwMFx4MDFceDdlXHg2MFx4MDBceDAxXHg3ZFx4NjBceDAwXHgwMVx4N2NceDYw
XHgwMVx4N2ZceDAxXHg3Zlx4NjBceDAxXHg3ZVx4MDFceDdlXHg2MFx4MDFceDdkXHgwMVx4N2Rc
eDYwXHgwMVx4N2NceDAxXHg3Y1x4NjBceDAyXHg3ZFx4N2ZceDAxXHg3Zlx4NjBceDAyXHg3Zlx4
N2VceDAxXHg3ZVx4NjBceDAyXHg3Y1x4N2RceDAxXHg3ZFx4NjBceDAyXHg3ZVx4N2NceDAxXHg3
Y1x4NjBceDAxXHg3Zlx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2VceDYwXHgwMVx4N2RceDAx
XHg3ZFx4NjBceDAxXHg3Y1x4MDFceDdjXHg2MFx4MDRceDdlXHg3Y1x4N2ZceDdlXHgwMFx4NjBc
eDAxXHg3ZVx4MDBceDYwXHgwNFx4N2VceDdjXHg3Zlx4N2VceDAxXHg3Zlx4NjBceDAxXHg3ZVx4
MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDYwXHgwMlx4N2VceDdlXHgwMVx4N2VceDAzXHhh
YVx4ODBceDgwXHg4MFx4MDBceDI5XHgwMVx4MDJceDAzXHgwNFx4MDVceDA2XHgwN1x4MDhceDBh
XHgwY1x4MDlceDBiXHgwZFx4MGVceDBmXHgxMFx4MDBceDAxXHgwMlx4MDFceDAyXHgwM1x4MDRc
eDAyXHgwMVx4MDJceDAzXHgwNFx4MDFceDAyXHgwM1x4MDRceDBhXHgxNVx4MDFceDAxXHgwNVx4
MDZceDE2XHgwNVx4MDVceDA0XHg4ZFx4ODBceDgwXHg4MFx4MDBceDAzXHg3MFx4MDFceDE0XHgx
NFx4NzBceDAxXHgwMVx4MDFceDcwXHgwMVx4MDFceDAxXHgwN1x4ODVceDgyXHg4MFx4ODBceDAw
XHgxM1x4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDMzXHgzMlx4MDBceDEzXHgwOFx4NzRc
eDc5XHg3MFx4NjVceDJkXHg2OVx4MzZceDM0XHgwMFx4MTRceDA4XHg3NFx4NzlceDcwXHg2NVx4
MmRceDY2XHgzM1x4MzJceDAwXHgxNVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDM2XHgz
NFx4MDBceDE2XHgwYVx4NzRceDc5XHg3MFx4NjVceDJkXHg2OVx4NmVceDY0XHg2NVx4NzhceDAw
XHgxN1x4MGVceDc0XHg3OVx4NzBceDY1XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4Njlc
eDMzXHgzMlx4MDBceDE4XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4
NzRceDJkXHg2OVx4MzZceDM0XHgwMFx4MTlceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2
OVx4NzJceDczXHg3NFx4MmRceDY2XHgzM1x4MzJceDAwXHgxYVx4MGVceDc0XHg3OVx4NzBceDY1
XHgyZFx4NjZceDY5XHg3Mlx4NzNceDc0XHgyZFx4NjZceDM2XHgzNFx4MDBceDFiXHgwZlx4NzRc
eDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjlceDMzXHgzMlx4
MDBceDFjXHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgy
ZFx4NjlceDM2XHgzNFx4MDBceDFkXHgwZlx4NzRceDc5XHg3MFx4NjVceDJkXHg3M1x4NjVceDYz
XHg2Zlx4NmVceDY0XHgyZFx4NjZceDMzXHgzMlx4MDBceDFlXHgwZlx4NzRceDc5XHg3MFx4NjVc
eDJkXHg3M1x4NjVceDYzXHg2Zlx4NmVceDY0XHgyZFx4NjZceDM2XHgzNFx4MDBceDFmXHgwOFx4
NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MjBceDEzXHg2NFx4NjlceDczXHg3
MFx4NjFceDc0XHg2M1x4NjhceDJkXHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYx
XHg2Y1x4MDBceDIxXHgwOFx4NjNceDYxXHg2Y1x4NmNceDJkXHg3NFx4NjFceDYyXHgwMFx4MjRc
eDAzXHg2Nlx4NjFceDYzXHgwMFx4MjVceDA0XHg2NVx4NzZceDY1XHg2ZVx4MDBceDI3XHgwM1x4
NmZceDY0XHg2NFx4MDBceDI4XHgwOVx4YWFceDgwXHg4MFx4ODBceDAwXHgwM1x4MDBceDQxXHgw
MFx4MGJceDE0XHgwMFx4MDFceDAyXHgwM1x4MDRceDA1XHgwNlx4MDdceDBhXHgwOFx4MGJceDA5
XHgyNVx4MjZceDI3XHgyOFx4MGNceDBkXHgwZVx4MGZceDAyXHgwMVx4NDFceDAwXHgwYlx4MDBc
eDAxXHgyMlx4MDJceDAyXHg0MVx4MDBceDBiXHgwMFx4MDFceDIzXHgwYVx4OWZceDg1XHg4MFx4
ODBceDAwXHgyOVx4ODVceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceGIyXHgwMlx4MGJceDg1XHg4
MFx4ODBceDgwXHgwMFx4MDBceDQyXHhlNFx4MDJceDBiXHg4N1x4ODBceDgwXHg4MFx4MDBceDAw
XHg0M1x4MDBceDIwXHg3M1x4NDVceDBiXHg4Ylx4ODBceDgwXHg4MFx4MDBceDAwXHg0NFx4MDBc
eDAwXHgwMFx4MDBceDAwXHhjOFx4YWVceDQwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4
MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4
MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAw
XHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBc
eDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4
ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAxXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgw
MFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgw
XHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHgwYlx4ODRceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBc
eDAwXHgwYlx4YTdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDBceDAwXHg0Mlx4
MDBceDQxXHgwMFx4MTNceDEyXHgwMFx4NDJceDAwXHg0NFx4MDBceDAwXHgwMFx4MDBceDAwXHgw
MFx4MDBceDAwXHg0MVx4MDBceDQyXHgwMFx4NDFceDAwXHgxM1x4MTFceDAwXHg0MVx4MDBceDEz
XHgwMFx4MDBceDBiXHhhN1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMVx4MDBc
eDQxXHgwMFx4MTNceDAxXHgwMFx4NDJceDAwXHg0MVx4MDBceDEzXHgxNFx4MDBceDQyXHgwMFx4
NDRceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDFceDAwXHg0Mlx4MDBceDQxXHgw
MFx4MTNceDEzXHgwMFx4MGJceDg5XHg4MFx4ODBceDgwXHgwMFx4MDBceDQyXHgwMFx4NDFceDAw
XHgxM1x4MDZceDAwXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDFc
eDAwXHgwYlx4ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHgxM1x4MDJceDAwXHgwYlx4
ODdceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAyXHgxM1x4MDNceDAwXHgwYlx4ODdceDgwXHg4
MFx4ODBceDAwXHgwMFx4NDFceDAzXHgxM1x4MDRceDAwXHgwYlx4OGFceDgwXHg4MFx4ODBceDAw
XHgwMFx4NDJceGU0XHgwMFx4NDFceDA1XHgxM1x4MDZceDAwXHgwYlx4ODlceDgwXHg4MFx4ODBc
eDAwXHgwMFx4NDFceDIwXHg0MVx4MDRceDEzXHgwNVx4MDBceDBiXHg4YVx4ODBceDgwXHg4MFx4
MDBceDAwXHg0Mlx4YzBceDAwXHg0MVx4MDVceDEzXHgwNlx4MDBceDBiXHg4Y1x4ODBceDgwXHg4
MFx4MDBceDAwXHg0M1x4YzNceGY1XHhhOFx4M2ZceDQxXHgwNlx4MTNceDA3XHgwMFx4MGJceDkw
XHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgzZFx4MGFceGQ3XHhhM1x4NzBceDNkXHhmYVx4M2Zc
eDQxXHgwN1x4MTNceDA4XHgwMFx4MGJceDhlXHg4MFx4ODBceDgwXHgwMFx4MDBceDQzXHg2Nlx4
NjZceDAwXHg0Mlx4NDFceDIwXHg0MVx4MDhceDEzXHgwOVx4MDBceDBiXHg4Y1x4ODBceDgwXHg4
MFx4MDBceDAwXHg0MVx4MjBceDQyXHhjMFx4MDBceDQxXHgwOVx4MTNceDBhXHgwMFx4MGJceDk1
XHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHg1MFx4NDBc
eDQzXHgwMFx4MDBceDAwXHg0Mlx4NDFceDBhXHgxM1x4MGJceDAwXHgwYlx4OTNceDgwXHg4MFx4
ODBceDAwXHgwMFx4NDJceGMwXHgwMFx4NDRceDY2XHg2Nlx4NjZceDY2XHg2Nlx4MDZceDUwXHg0
MFx4NDFceDBiXHgxM1x4MGNceDAwXHgwYlx4ODlceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAx
XHgyMFx4MDBceDEzXHgwNlx4MDBceDBiXHg4OVx4ODBceDgwXHg4MFx4MDBceDAwXHg0Mlx4MDlc
eDIwXHgwMFx4MTNceDBlXHgwMFx4MGJceDg1XHg4MFx4ODBceDgwXHgwMFx4MDBceDQxXHhiM1x4
MDJceDBiXHg4NVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4YjRceDAyXHgwYlx4YWJceDgwXHg4
MFx4ODBceDAwXHgwMFx4MjBceDAwXHg0MVx4MDBceDQ2XHgwNFx4NDBceDQxXHgwMFx4MTNceDAx
XHgwMFx4MGJceDIwXHgwMFx4NDFceDAxXHg0Nlx4MDRceDQwXHg0MVx4MDBceDEzXHgwMVx4MDFc
eDBiXHgyMFx4MDBceDQxXHgwMlx4NDZceDA0XHg0MFx4NDFceDAwXHgxM1x4MDFceDAyXHgwYlx4
NDFceDAwXHgwYlx4OGJceDgwXHg4MFx4ODBceDAwXHgwMFx4MjBceDAwXHg0Mlx4MDFceDQxXHgw
ZFx4MTNceDE2XHgwMFx4MGJceDlhXHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NTBceDA0
XHg3ZVx4MjBceDAxXHgwNVx4MjBceDAwXHg0Mlx4MDFceDdkXHgyMFx4MDBceDIwXHgwMVx4N2Vc
eDQxXHgwZFx4MTNceDE2XHgwMFx4MGJceDBiXHg5NVx4ODBceDgwXHg4MFx4MDBceDAwXHgyMFx4
MDBceDQ1XHgwNFx4N2ZceDQxXHgyY1x4MDVceDIwXHgwMFx4NDFceDAxXHg2Ylx4NDFceDBmXHgx
M1x4MDVceDAwXHgwYlx4MGJceDk2XHg4MFx4ODBceDgwXHgwMFx4MDBceDIwXHgwMFx4NDVceDA0
XHg3Zlx4NDFceGUzXHgwMFx4MDVceDIwXHgwMFx4NDFceDAxXHg2Ylx4NDFceDBlXHgxM1x4MDVc
eDAwXHgwYlx4MGIiKTsKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMTMKLWFzc2Vy
dF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtaTMyIiwgW10pLCAzMDYpOwotCi0vLyByZXR1
cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIxNAotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4
NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgw
MVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAx
XHg3Zlx4NjBceDAwXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRc
eDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDM2XHgzNFx4
MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3
NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0
XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJc
eDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4
NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4
MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgw
MFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5OFx4ODBceDgwXHg4MFx4MDBceDAx
XHg5Mlx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDEwXHgwMFx4MDFceDQyXHhlNFx4MDJc
eDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVu
IiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtaTY0IiwgW10p
LCBpbnQ2NCgiMzU2IikpCi0KLS8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjE1Ci1ydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDBceDAxXHg3ZFx4MDJceDg0XHg4
MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4NzRceDc5
XHg3MFx4NjVceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRc
eDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJc
eDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4
NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1
XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFc
eDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4
MGFceDlhXHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0
MFx4MTBceDAwXHhiY1x4NDNceDAwXHgyMFx4NzNceDQ1XHhiY1x4NDZceDQ1XHgwZFx4MDBceDBm
XHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0
dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWYzMiIsIFtdKSwgMzg5MC4pCi0KLS8vIHJldHVybl9j
YWxsX2luZGlyZWN0Lndhc3Q6MjE2Ci1ydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4
MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3
MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdm
XHg2MFx4MDBceDAxXHg3Y1x4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZc
eDY0XHg3NVx4NmNceDY1XHgwOFx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4MzZceDM0XHgwMFx4
MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVc
eDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4
NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcy
XHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNc
eDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4
MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDllXHg4MFx4ODBceDgwXHgwMFx4MDFceDk4
XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHhiZFx4NDRceDAwXHgwMFx4MDBc
eDAwXHgwMFx4YzhceGFlXHg0MFx4YmRceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIs
IGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxs
KCQxLCAidHlwZS1mNjQiLCBbXSksIDM5NDAuKQotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53
YXN0OjIxOAotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAx
XHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBc
eDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4
N2VceDAyXHg4Nlx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2
NVx4MGFceDc0XHg3OVx4NzBceDY1XHgyZFx4NjlceDZlXHg2NFx4NjVceDc4XHgwMFx4MDZceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
YVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgy
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNc
eDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDFceDkyXHg4MFx4
ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBceDAwXHgwMVx4NDJceGU0XHgwMFx4MDFceDUxXHg0
NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAg
Ly8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAidHlwZS1pbmRleCIsIFtdKSwgaW50NjQo
IjEwMCIpKQotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyMAotYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAidHlwZS1maXJzdC1pMzIiLCBbXSksIDMyKTsKLQotLy8gcmV0dXJu
X2NhbGxfaW5kaXJlY3Qud2FzdDoyMjEKLXJ1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2
MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4MDdceDYw
XHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4
N2ZceDYwXHgwMFx4MDFceDdlXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2
Zlx4NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4NzJceDcz
XHg3NFx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4
MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3
OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVc
eDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4
NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3
M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZl
XHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBc
eDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4
OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHgx
MFx4MDBceDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBi
IiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNh
bGwoJDEsICJ0eXBlLWZpcnN0LWk2NCIsIFtdKSwgaW50NjQoIjY0IikpCi0KLS8vIHJldHVybl9j
YWxsX2luZGlyZWN0Lndhc3Q6MjIyCi1ydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFc
eDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhM1x4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4
MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3
MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdm
XHg2MFx4MDBceDAxXHg3ZFx4MDJceDhhXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZc
eDY0XHg3NVx4NmNceDY1XHgwZVx4NzRceDc5XHg3MFx4NjVceDJkXHg2Nlx4NjlceDcyXHg3M1x4
NzRceDJkXHg2Nlx4MzNceDMyXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4
XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4Nzhc
eDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2
Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcx
XHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4
NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgw
N1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDlh
XHg4MFx4ODBceDgwXHgwMFx4MDFceDk0XHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4MTBc
eDAwXHhiY1x4NDNceGMzXHhmNVx4YThceDNmXHhiY1x4NDZceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWYzMiIsIFtdKSwgMS4zMjAwMDAwNTI0NSkKLQotLy8g
cmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMjMKLXJ1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGEzXHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMFx4MDFceDdjXHgwMlx4OGFceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZc
eDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDBlXHg3NFx4NzlceDcwXHg2NVx4MmRceDY2XHg2OVx4
NzJceDczXHg3NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHgxMFx4MDBceGJkXHg0NFx4M2RceDBhXHhkN1x4YTNceDcwXHgzZFx4ZmFceDNmXHhiZFx4
NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtd
KSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLWZpcnN0LWY2NCIsIFtd
KSwgMS42NCkKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMjUKLWFzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWkzMiIsIFtdKSwgMzIpOwotCi0vLyByZXR1
cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyNgotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBc
eDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgwN1x4
NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgw
MVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAx
XHg3Zlx4NjBceDAwXHgwMVx4N2VceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRc
eDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2M1x4
NmZceDZlXHg2NFx4MmRceDY5XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgw
MVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2
XHgwYVx4OThceDgwXHg4MFx4ODBceDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4MDJc
eDQwXHgxMFx4MDBceDAxXHg0Mlx4YzBceDAwXHgwMVx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4
MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgp
ID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1pNjQiLCBbXSksIGludDY0KCI2NCIpKQotCi0vLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyNwotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4
MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAwXHgw
N1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYw
XHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBc
eDAxXHg3Zlx4NjBceDAwXHgwMVx4N2RceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4
NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1XHg2
M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzM1x4MzJceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OWFceDgwXHg4MFx4ODBceDAwXHgwMVx4OTRceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHgxMFx4MDBceGJjXHg0M1x4MDBceDAwXHgwMFx4NDJceGJjXHg0Nlx4NDVceDBkXHgw
MFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2Vy
dF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgInR5cGUtc2Vjb25kLWYzMiIsIFtdKSwgMzIuKQotCi0v
LyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIyOAotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2Uo
Ilx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTNceDgwXHg4MFx4ODBceDAw
XHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2Zc
eDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4
NzBceDAxXHg3Zlx4NjBceDAwXHgwMVx4N2NceDAyXHg4Ylx4ODFceDgwXHg4MFx4MDBceDA2XHgw
Nlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MGZceDc0XHg3OVx4NzBceDY1XHgyZFx4NzNceDY1
XHg2M1x4NmZceDZlXHg2NFx4MmRceDY2XHgzNlx4MzRceDAwXHgwNlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3
M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4
MDBceDA2XHgwYVx4OWVceDgwXHg4MFx4ODBceDAwXHgwMVx4OThceDgwXHg4MFx4ODBceDAwXHgw
MFx4MDJceDQwXHgxMFx4MDBceGJkXHg0NFx4NjZceDY2XHg2Nlx4NjZceDY2XHgwNlx4NTBceDQw
XHhiZFx4NTFceDQ1XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1
biIsIFtdKSk7ICAvLyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJ0eXBlLXNlY29uZC1m
NjQiLCBbXSksIDY0LjEpCi0KLS8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMwCi1ydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdlXHgw
Mlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4
XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3
M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4
MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgw
MFx4MDJceDQwXHg0MVx4MDVceDQyXHgwMlx4MTBceDAwXHgwMVx4NDJceDAyXHgwMVx4NTFceDQ1
XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAv
LyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFs1LCBpbnQ2NCgiMiIp
XSksIGludDY0KCIyIikpCi0KLS8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMxCi1ydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdlXHgw
Mlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4
XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3
M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4
MDBceDA2XHgwYVx4OWJceDgwXHg4MFx4ODBceDAwXHgwMVx4OTVceDgwXHg4MFx4ODBceDAwXHgw
MFx4MDJceDQwXHg0MVx4MDVceDQyXHgwNVx4MTBceDAwXHgwMVx4NDJceDA1XHgwMVx4NTFceDQ1
XHgwZFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAv
LyBhc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFs1LCBpbnQ2NCgiNSIp
XSksIGludDY0KCI1IikpCi0KLS8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjMyCi1ydW4o
KCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAx
XHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZc
eDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4
MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJceDdmXHg3ZVx4MDFceDdlXHgw
Mlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRceDc1XHg2Y1x4NjVceDA4
XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgwNlx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3
M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDcz
XHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVc
eDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVm
XHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBc
eDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4
MDBceDA2XHgwYVx4OWNceDgwXHg4MFx4ODBceDAwXHgwMVx4OTZceDgwXHg4MFx4ODBceDAwXHgw
MFx4MDJceDQwXHg0MVx4MGNceDQyXHgwNVx4MTBceDAwXHgwMVx4NDJceGY4XHgwMFx4MDFceDUx
XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkp
OyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTIsIGludDY0
KCI1IildKSwgaW50NjQoIjEyMCIpKQotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjIz
MwotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4
MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2
Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAx
XHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNc
eDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBj
XHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4
NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1
XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVc
eDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4
ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3
NVx4NmVceDAwXHgwNlx4MGFceDliXHg4MFx4ODBceDgwXHgwMFx4MDFceDk1XHg4MFx4ODBceDgw
XHgwMFx4MDBceDAyXHg0MFx4NDFceDExXHg0Mlx4MDJceDEwXHgwMFx4MDFceDQyXHgwMlx4MDFc
eDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBb
XSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTcsIGlu
dDY0KCIyIildKSwgaW50NjQoIjIiKSkKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoy
MzQKLWFzc2VydF90cmFwKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBc
eDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4
NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3
Zlx4N2VceDAxXHg3ZVx4MDJceDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0
XHg3NVx4NmNceDY1XHgwOFx4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZc
eDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNc
eDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDFceDhkXHg4
MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDAwXHg0Mlx4MDJceDEwXHgwMFx4MGZceDBi
XHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF90cmFwKCgp
ID0+IGNhbGwoJDEsICJkaXNwYXRjaCIsIFswLCBpbnQ2NCgiMiIpXSkpCi0KLS8vIHJldHVybl9j
YWxsX2luZGlyZWN0Lndhc3Q6MjM1Ci1hc3NlcnRfdHJhcCgoKSA9PiBjYWxsKGluc3RhbmNlKCJc
eDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgwMFx4
MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2
MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcw
XHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4MDBc
eDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNceDcwXHg2MVx4
NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
OVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcw
XHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVc
eDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4
NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgw
M1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1
XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVc
eDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4
NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4
MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5M1x4ODBceDgw
XHg4MFx4MDBceDAxXHg4ZFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwZlx4NDJc
eDAyXHgxMFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7
ICAvLyBhc3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2giLCBbMTUsIGludDY0KCIy
IildKSkKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyMzYKLWFzc2VydF90cmFwKCgp
ID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4
YTVceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2
MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAx
XHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAyXHg3Zlx4N2VceDAxXHg3ZVx4MDJc
eDg0XHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwOFx4
NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2
M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNc
eDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2
M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBc
eDA0XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4
NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgw
MFx4MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAw
XHgwNlx4MGFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDFceDhkXHg4MFx4ODBceDgwXHgwMFx4MDBc
eDAyXHg0MFx4NDFceDE0XHg0Mlx4MDJceDEwXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF90cmFwKCgpID0+IGNhbGwoJDEsICJkaXNw
YXRjaCIsIFsyMCwgaW50NjQoIjIiKV0pKQotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0
OjIzNwotYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4
MDFceDAwXHgwMFx4MDBceDAxXHhhNVx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2
MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdm
XHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDJc
eDdmXHg3ZVx4MDFceDdlXHgwMlx4ODRceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4
NjRceDc1XHg2Y1x4NjVceDA4XHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDAwXHgw
Nlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1
XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVc
eDczXHg3NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4
NjZceDAwXHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3
M1x4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgw
M1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAx
XHgwM1x4NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMVx4OGRc
eDgwXHg4MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0MVx4N2ZceDQyXHgwMlx4MTBceDAwXHgwZlx4
MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAo
KCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoIiwgWy0xLCBpbnQ2NCgiMiIpXSkpCi0KLS8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6MjM4Ci1hc3NlcnRfdHJhcCgoKSA9PiBjYWxsKGluc3RhbmNl
KCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE1XHg4MFx4ODBceDgwXHgw
MFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdm
XHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBc
eDcwXHgwMVx4N2ZceDYwXHgwMlx4N2ZceDdlXHgwMVx4N2VceDAyXHg4NFx4ODFceDgwXHg4MFx4
MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDhceDY0XHg2OVx4NzNceDcwXHg2
MVx4NzRceDYzXHg2OFx4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4
NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2
NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAw
XHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZc
eDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3
Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5N1x4ODBc
eDgwXHg4MFx4MDBceDAxXHg5MVx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQxXHhlN1x4
ODRceGNlXHhjMlx4MDRceDQyXHgwMlx4MTBceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMo
JDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3RyYXAoKCkgPT4gY2FsbCgkMSwgImRpc3Bh
dGNoIiwgWzFfMjEzXzQzMl80MjMsIGludDY0KCIyIildKSkKLQotLy8gcmV0dXJuX2NhbGxfaW5k
aXJlY3Qud2FzdDoyNDAKLXJ1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZk
XHgwMVx4MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBc
eDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4
N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgw
MVx4N2ZceDAxXHg3ZVx4MDJceDhmXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0
XHg3NVx4NmNceDY1XHgxM1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgyZFx4NzNc
eDc0XHg3Mlx4NzVceDYzXHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgwNlx4MDhceDczXHg3MFx4
NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5
XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4
NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2
XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFc
eDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2
ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBceDAw
XHgwMFx4MDJceDQwXHg0MVx4MDVceDEwXHgwMFx4MDFceDQyXHgwOVx4MDFceDUxXHg0NVx4MGRc
eDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNz
ZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFs1XSksIGlu
dDY0KCI5IikpCi0KLS8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjQxCi1ydW4oKCkgPT4g
Y2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4
ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgw
MVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdm
XHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4ODFc
eDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2OVx4
NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1XHg3
Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4
NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3
M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAz
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2
NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgw
XHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDk5XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDA1XHgxMFx4
MDBceDAxXHg0Mlx4MDlceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBv
cnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwg
ImRpc3BhdGNoLXN0cnVjdHVyYWwiLCBbNV0pLCBpbnQ2NCgiOSIpKQotCi0vLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjI0MgotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAw
XHgwMFx4NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBc
eDAxXHg3Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4
NjBceDAxXHg3Zlx4MDFceDdlXHgwMlx4OGZceDgxXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2
Zlx4NjRceDc1XHg2Y1x4NjVceDEzXHg2NFx4NjlceDczXHg3MFx4NjFceDc0XHg2M1x4NjhceDJk
XHg3M1x4NzRceDcyXHg3NVx4NjNceDc0XHg3NVx4NzJceDYxXHg2Y1x4MDBceDA2XHgwOFx4NzNc
eDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4
NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAy
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjlceDczXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4
NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2
NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY1
XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDVceDAzXHg4Mlx4ODBc
eDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBceDgwXHgwMFx4MDFceDAzXHg3Mlx4
NzVceDZlXHgwMFx4MDZceDBhXHg5Ylx4ODBceDgwXHg4MFx4MDBceDAxXHg5NVx4ODBceDgwXHg4
MFx4MDBceDAwXHgwMlx4NDBceDQxXHgwY1x4MTBceDAwXHgwMVx4NDJceDgwXHg5M1x4MTZceDAx
XHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwg
W10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImRpc3BhdGNoLXN0cnVjdHVy
YWwiLCBbMTJdKSwgaW50NjQoIjM2Ml84ODAiKSkKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDoyNDMKLXJ1bigoKSA9PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4
MDBceDAwXHgwMFx4MDFceGE0XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgw
MVx4N2ZceDAxXHg2Zlx4NjBceDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYw
XHgwMlx4NmZceDZmXHgwMVx4N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2Zc
eDAxXHg3ZVx4MDJceDhmXHg4MVx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4
NmNceDY1XHgxM1x4NjRceDY5XHg3M1x4NzBceDYxXHg3NFx4NjNceDY4XHgyZFx4NzNceDc0XHg3
Mlx4NzVceDYzXHg3NFx4NzVceDcyXHg2MVx4NmNceDAwXHgwNlx4MDhceDczXHg3MFx4NjVceDYz
XHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZc
eDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY5XHg3M1x4
NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwMlx4MDhceDczXHg3
MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZceDY2XHg3NVx4NmVceDYz
XHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4
MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2NVx4NzFceDVmXHg2
Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJceDgwXHg4MFx4ODBceDAw
XHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4NzJceDc1XHg2ZVx4MDBc
eDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4MFx4ODBceDAwXHgwMFx4
MDJceDQwXHg0MVx4MTFceDEwXHgwMFx4MDFceDQyXHgwOVx4MDFceDUxXHg0NVx4MGRceDAwXHgw
Zlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxN10pLCBpbnQ2NCgi
OSIpKQotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NAotYXNzZXJ0X3RyYXAoKCkg
PT4gY2FsbChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhh
NFx4ODBceDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYw
XHgwMVx4NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFc
eDdmXHg2MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4
ODFceDgwXHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2
OVx4NzNceDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1
XHg3Mlx4NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRc
eDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4
NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2
NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1
XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBc
eDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4
NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2
NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcy
XHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkxXHg4MFx4
ODBceDgwXHgwMFx4MDFceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDBiXHgx
MFx4MDBceDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBh
c3NlcnRfdHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxMV0pKQot
Ci0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NQotYXNzZXJ0X3RyYXAoKCkgPT4gY2Fs
bChpbnN0YW5jZSgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBc
eDgwXHg4MFx4MDBceDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4
NmZceDAxXHg3Zlx4NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2
MFx4MDJceDcwXHg3MFx4MDFceDdmXHg2MFx4MDFceDdmXHgwMVx4N2VceDAyXHg4Zlx4ODFceDgw
XHg4MFx4MDBceDA2XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MTNceDY0XHg2OVx4NzNc
eDcwXHg2MVx4NzRceDYzXHg2OFx4MmRceDczXHg3NFx4NzJceDc1XHg2M1x4NzRceDc1XHg3Mlx4
NjFceDZjXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDA5XHg2
NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDFceDA4XHg3M1x4NzBceDY1
XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJc
eDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4
NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDAzXHgw
OFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjVceDcxXHg1Zlx4NjVceDc4
XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0XHgwOFx4NzNceDcwXHg2NVx4NjNc
eDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4
NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwN1x4ODdceDgwXHg4
MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgwNlx4MGFceDkxXHg4MFx4ODBceDgw
XHgwMFx4MDFceDhiXHg4MFx4ODBceDgwXHgwMFx4MDBceDAyXHg0MFx4NDFceDEwXHgxMFx4MDBc
eDBmXHgwYlx4MDBceDBiIiwgZXhwb3J0cygkMSkpLCAgInJ1biIsIFtdKSk7ICAvLyBhc3NlcnRf
dHJhcCgoKSA9PiBjYWxsKCQxLCAiZGlzcGF0Y2gtc3RydWN0dXJhbCIsIFsxNl0pKQotCi0vLyBy
ZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0NwotYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQx
LCAiY2FsbC10YWIiLCBbMF0pLCAzMDYpOwotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0
OjI0OAotYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiY2FsbC10YWIiLCBbMV0pLCAzMDcp
OwotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI0OQotYXNzZXJ0X3JldHVybigoKSA9
PiBjYWxsKCQxLCAiY2FsbC10YWIiLCBbMl0pLCAzMDgpOwotCi0vLyByZXR1cm5fY2FsbF9pbmRp
cmVjdC53YXN0OjI1MQotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4
NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3
Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAx
XHg3ZVx4MDFceDdlXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDAzXHg2Nlx4NjFceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgw
Nlx4MGFceDk5XHg4MFx4ODBceDgwXHgwMFx4MDFceDkzXHg4MFx4ODBceDgwXHgwMFx4MDBceDAy
XHg0MFx4NDJceDAwXHgxMFx4MDBceDAxXHg0Mlx4MDFceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZc
eDBiXHgwMFx4MGIiLCBleHBvcnRzKCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1
cm4oKCkgPT4gY2FsbCgkMSwgImZhYyIsIFtpbnQ2NCgiMCIpXSksIGludDY0KCIxIikpCi0KLS8v
IHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjUyCi1ydW4oKCkgPT4gY2FsbChpbnN0YW5jZSgi
XHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHhhNFx4ODBceDgwXHg4MFx4MDBc
eDA3XHg2MFx4MDBceDAwXHg2MFx4MDFceDdmXHgwMVx4NmZceDYwXHgwMVx4NmZceDAxXHg3Zlx4
NjBceDAxXHg3MFx4MDFceDdmXHg2MFx4MDJceDZmXHg2Zlx4MDFceDdmXHg2MFx4MDJceDcwXHg3
MFx4MDFceDdmXHg2MFx4MDFceDdlXHgwMVx4N2VceDAyXHhmZlx4ODBceDgwXHg4MFx4MDBceDA2
XHgwNlx4NmRceDZmXHg2NFx4NzVceDZjXHg2NVx4MDNceDY2XHg2MVx4NjNceDAwXHgwNlx4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MDlceDY1XHg3OFx4NzRceDY1XHg3Mlx4
NmVceDcyXHg2NVx4NjZceDAwXHgwMVx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3
NFx4MGNceDY5XHg3M1x4NWZceDY1XHg3OFx4NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAw
XHgwMlx4MDhceDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGFceDY5XHg3M1x4NWZc
eDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2XHgwMFx4MDNceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDBjXHg2NVx4NzFceDVmXHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3
Mlx4NjVceDY2XHgwMFx4MDRceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBh
XHg2NVx4NzFceDVmXHg2Nlx4NzVceDZlXHg2M1x4NzJceDY1XHg2Nlx4MDBceDA1XHgwM1x4ODJc
eDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA3XHg4N1x4ODBceDgwXHg4MFx4MDBceDAxXHgwM1x4
NzJceDc1XHg2ZVx4MDBceDA2XHgwYVx4OTlceDgwXHg4MFx4ODBceDAwXHgwMVx4OTNceDgwXHg4
MFx4ODBceDAwXHgwMFx4MDJceDQwXHg0Mlx4MDFceDEwXHgwMFx4MDFceDQyXHgwMVx4MDFceDUx
XHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9ydHMoJDEpKSwgICJydW4iLCBbXSkp
OyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAiZmFjIiwgW2ludDY0KCIxIildKSwg
aW50NjQoIjEiKSkKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNTMKLXJ1bigoKSA9
PiBjYWxsKGluc3RhbmNlKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceGE0
XHg4MFx4ODBceDgwXHgwMFx4MDdceDYwXHgwMFx4MDBceDYwXHgwMVx4N2ZceDAxXHg2Zlx4NjBc
eDAxXHg2Zlx4MDFceDdmXHg2MFx4MDFceDcwXHgwMVx4N2ZceDYwXHgwMlx4NmZceDZmXHgwMVx4
N2ZceDYwXHgwMlx4NzBceDcwXHgwMVx4N2ZceDYwXHgwMVx4N2VceDAxXHg3ZVx4MDJceGZmXHg4
MFx4ODBceDgwXHgwMFx4MDZceDA2XHg2ZFx4NmZceDY0XHg3NVx4NmNceDY1XHgwM1x4NjZceDYx
XHg2M1x4MDBceDA2XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwOVx4NjVc
eDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDAxXHgwOFx4NzNceDcwXHg2NVx4
NjNceDc0XHg2NVx4NzNceDc0XHgwY1x4NjlceDczXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2
ZVx4NzJceDY1XHg2Nlx4MDBceDAyXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0
XHgwYVx4NjlceDczXHg1Zlx4NjZceDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwM1x4MDhc
eDczXHg3MFx4NjVceDYzXHg3NFx4NjVceDczXHg3NFx4MGNceDY1XHg3MVx4NWZceDY1XHg3OFx4
NzRceDY1XHg3Mlx4NmVceDcyXHg2NVx4NjZceDAwXHgwNFx4MDhceDczXHg3MFx4NjVceDYzXHg3
NFx4NjVceDczXHg3NFx4MGFceDY1XHg3MVx4NWZceDY2XHg3NVx4NmVceDYzXHg3Mlx4NjVceDY2
XHgwMFx4MDVceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMFx4MDdceDg3XHg4MFx4ODBc
eDgwXHgwMFx4MDFceDAzXHg3Mlx4NzVceDZlXHgwMFx4MDZceDBhXHg5YVx4ODBceDgwXHg4MFx4
MDBceDAxXHg5NFx4ODBceDgwXHg4MFx4MDBceDAwXHgwMlx4NDBceDQyXHgwNVx4MTBceDAwXHgw
MVx4NDJceGY4XHgwMFx4MDFceDUxXHg0NVx4MGRceDAwXHgwZlx4MGJceDAwXHgwYiIsIGV4cG9y
dHMoJDEpKSwgICJydW4iLCBbXSkpOyAgLy8gYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAi
ZmFjIiwgW2ludDY0KCI1IildKSwgaW50NjQoIjEyMCIpKQotCi0vLyByZXR1cm5fY2FsbF9pbmRp
cmVjdC53YXN0OjI1NAotcnVuKCgpID0+IGNhbGwoaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4NmRc
eDAxXHgwMFx4MDBceDAwXHgwMVx4YTRceDgwXHg4MFx4ODBceDAwXHgwN1x4NjBceDAwXHgwMFx4
NjBceDAxXHg3Zlx4MDFceDZmXHg2MFx4MDFceDZmXHgwMVx4N2ZceDYwXHgwMVx4NzBceDAxXHg3
Zlx4NjBceDAyXHg2Zlx4NmZceDAxXHg3Zlx4NjBceDAyXHg3MFx4NzBceDAxXHg3Zlx4NjBceDAx
XHg3ZVx4MDFceDdlXHgwMlx4ZmZceDgwXHg4MFx4ODBceDAwXHgwNlx4MDZceDZkXHg2Zlx4NjRc
eDc1XHg2Y1x4NjVceDAzXHg2Nlx4NjFceDYzXHgwMFx4MDZceDA4XHg3M1x4NzBceDY1XHg2M1x4
NzRceDY1XHg3M1x4NzRceDA5XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgw
MFx4MDFceDA4XHg3M1x4NzBceDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBjXHg2OVx4NzNceDVm
XHg2NVx4NzhceDc0XHg2NVx4NzJceDZlXHg3Mlx4NjVceDY2XHgwMFx4MDJceDA4XHg3M1x4NzBc
eDY1XHg2M1x4NzRceDY1XHg3M1x4NzRceDBhXHg2OVx4NzNceDVmXHg2Nlx4NzVceDZlXHg2M1x4
NzJceDY1XHg2Nlx4MDBceDAzXHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgw
Y1x4NjVceDcxXHg1Zlx4NjVceDc4XHg3NFx4NjVceDcyXHg2ZVx4NzJceDY1XHg2Nlx4MDBceDA0
XHgwOFx4NzNceDcwXHg2NVx4NjNceDc0XHg2NVx4NzNceDc0XHgwYVx4NjVceDcxXHg1Zlx4NjZc
eDc1XHg2ZVx4NjNceDcyXHg2NVx4NjZceDAwXHgwNVx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAwXHgwN1x4ODdceDgwXHg4MFx4ODBceDAwXHgwMVx4MDNceDcyXHg3NVx4NmVceDAwXHgw
Nlx4MGFceGEyXHg4MFx4ODBceDgwXHgwMFx4MDFceDljXHg4MFx4ODBceDgwXHgwMFx4MDBceDAy
XHg0MFx4NDJceDE5XHgxMFx4MDBceDAxXHg0Mlx4ODBceDgwXHg4MFx4ZGVceDg3XHg5Mlx4ZWNc
eGNmXHhlMVx4MDBceDAxXHg1MVx4NDVceDBkXHgwMFx4MGZceDBiXHgwMFx4MGIiLCBleHBvcnRz
KCQxKSksICAicnVuIiwgW10pKTsgIC8vIGFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImZh
YyIsIFtpbnQ2NCgiMjUiKV0pLCBpbnQ2NCgiN18wMzRfNTM1XzI3N181NzNfOTYzXzc3NiIpKQot
Ci0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI1NgotYXNzZXJ0X3JldHVybigoKSA9PiBj
YWxsKCQxLCAiZXZlbiIsIFswXSksIDQ0KTsKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2Fz
dDoyNTcKLWFzc2VydF9yZXR1cm4oKCkgPT4gY2FsbCgkMSwgImV2ZW4iLCBbMV0pLCA5OSk7Ci0K
LS8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MjU4Ci1hc3NlcnRfcmV0dXJuKCgpID0+IGNh
bGwoJDEsICJldmVuIiwgWzEwMF0pLCA0NCk7Ci0KLS8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndh
c3Q6MjU5Ci1hc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzc3XSksIDk5KTsK
LQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDoyNjAKLWFzc2VydF9yZXR1cm4oKCkgPT4g
Y2FsbCgkMSwgImV2ZW4iLCBbMTAwXzAwMF0pLCA0NCk7Ci0KLS8vIHJldHVybl9jYWxsX2luZGly
ZWN0Lndhc3Q6MjYxCi1hc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJldmVuIiwgWzExMV8x
MTFdKSwgOTkpOwotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2MgotYXNzZXJ0X3Jl
dHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzBdKSwgOTkpOwotCi0vLyByZXR1cm5fY2FsbF9p
bmRpcmVjdC53YXN0OjI2MwotYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzFd
KSwgNDQpOwotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2NAotYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzIwMF0pLCA5OSk7Ci0KLS8vIHJldHVybl9jYWxsX2lu
ZGlyZWN0Lndhc3Q6MjY1Ci1hc3NlcnRfcmV0dXJuKCgpID0+IGNhbGwoJDEsICJvZGQiLCBbNzdd
KSwgNDQpOwotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI2NgotYXNzZXJ0X3JldHVy
bigoKSA9PiBjYWxsKCQxLCAib2RkIiwgWzIwMF8wMDJdKSwgOTkpOwotCi0vLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjI2NwotYXNzZXJ0X3JldHVybigoKSA9PiBjYWxsKCQxLCAib2RkIiwg
WzMwMF8wMDNdKSwgNDQpOwotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjI3MgotYXNz
ZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4
MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qu
d2FzdDoyODQKLWFzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJc
eDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7Ci0KLS8vIHJldHVybl9j
YWxsX2luZGlyZWN0Lndhc3Q6Mjk2Ci1hc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZj
XHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOwot
Ci0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjMwOAotYXNzZXJ0X21hbGZvcm1lZCgiXHgz
Y1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0
XHg2NVx4M2UiKTsKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozMjAKLWFzc2VydF9t
YWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3
MVx4NzVceDZmXHg3NFx4NjVceDNlIik7Ci0KLS8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6
MzMyCi1hc3NlcnRfbWFsZm9ybWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4
NjVceDY0XHgyMFx4NzFceDc1XHg2Zlx4NzRceDY1XHgzZSIpOwotCi0vLyByZXR1cm5fY2FsbF9p
bmRpcmVjdC53YXN0OjM0NAotYXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZc
eDZmXHg3Mlx4NmRceDY1XHg2NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKLQotLy8g
cmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDozNTEKLWFzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZk
XHg2MVx4NmNceDY2XHg2Zlx4NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVc
eDNlIik7Ci0KLS8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6MzYxCi1hc3NlcnRfbWFsZm9y
bWVkKCJceDNjXHg2ZFx4NjFceDZjXHg2Nlx4NmZceDcyXHg2ZFx4NjVceDY0XHgyMFx4NzFceDc1
XHg2Zlx4NzRceDY1XHgzZSIpOwotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53YXN0OjM3MQot
YXNzZXJ0X21hbGZvcm1lZCgiXHgzY1x4NmRceDYxXHg2Y1x4NjZceDZmXHg3Mlx4NmRceDY1XHg2
NFx4MjBceDcxXHg3NVx4NmZceDc0XHg2NVx4M2UiKTsKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJl
Y3Qud2FzdDozODMKLWFzc2VydF9tYWxmb3JtZWQoIlx4M2NceDZkXHg2MVx4NmNceDY2XHg2Zlx4
NzJceDZkXHg2NVx4NjRceDIwXHg3MVx4NzVceDZmXHg3NFx4NjVceDNlIik7Ci0KLS8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6Mzk4Ci1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAw
XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDBhXHg4ZFx4ODBceDgwXHg4MFx4MDBc
eDAxXHg4N1x4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7Ci0K
LS8vIEZJWE1FOgotLy8gKG1vZHVsZQotLy8gICAodHlwZSAoZnVuYykpCi0vLyAgICh0YWJsZSAw
IGZ1bmNyZWYpCi0vLyAgIChmdW5jICR0eXBlLXZvaWQtdnMtbnVtIChpMzIuZXF6IChyZXR1cm5f
Y2FsbF9pbmRpcmVjdCAodHlwZSAwKSAoaTMyLmNvbnN0IDApKSkpCi0vLyApCi0vLyBUaGlzIHZh
bGlkYXRlcyBzaW5jZSB1bnJlYWNoYWJsZSBiaW5hcnkgb3BzIGFyZSBpZ25vcmVkIGluIFdhc21G
dW5jdGlvblBhcnNlci4KLS8vIHJldHVybl9jYWxsX2luZGlyZWN0Lndhc3Q6NDA2Ci0vLyBhc3Nl
cnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4NFx4ODBc
eDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4
MDBceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OGVceDgwXHg4
MFx4ODBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDBceDAw
XHg0NVx4MGIiKTsKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo0MTQKLWFzc2VydF9p
bnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg4XHg4MFx4ODBc
eDgwXHgwMFx4MDJceDYwXHgwMFx4MDFceDdlXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4
ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgw
YVx4OGVceDgwXHg4MFx4ODBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAw
XHgxM1x4MDBceDAwXHg0NVx4MGIiKTsKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo0
MjMKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eDg4XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMVx4N2ZceDAwXHg2MFx4MDBceDAwXHgwM1x4
ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3
MFx4MDBceDAwXHgwYVx4OGRceDgwXHg4MFx4ODBceDAwXHgwMVx4ODdceDgwXHg4MFx4ODBceDAw
XHgwMFx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOwotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVj
dC53YXN0OjQzMQotYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBc
eDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAyXHg3Y1x4N2ZceDAwXHg2MFx4
MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0XHg4NFx4ODBceDgwXHg4
MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OGRceDgwXHg4MFx4ODBceDAwXHgwMVx4ODdceDgw
XHg4MFx4ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOwotCi0vLyByZXR1cm5f
Y2FsbF9pbmRpcmVjdC53YXN0OjQ0MAotbGV0ICQyID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3M1x4
NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgw
MFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwNFx4ODRceDgwXHg4MFx4ODBceDAw
XHgwMVx4NzBceDAwXHgwMFx4MGFceDhmXHg4MFx4ODBceDgwXHgwMFx4MDFceDg5XHg4MFx4ODBc
eDgwXHgwMFx4MDBceDQxXHgwMVx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOwotCi0vLyByZXR1
cm5fY2FsbF9pbmRpcmVjdC53YXN0OjQ0NgotbGV0ICQzID0gaW5zdGFuY2UoIlx4MDBceDYxXHg3
M1x4NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAw
XHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwNFx4ODRceDgwXHg4MFx4ODBc
eDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDk4XHg4MFx4ODBceDgwXHgwMFx4MDFceDkyXHg4MFx4
ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4NDBceDQxXHgw
MVx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOwotCi0vLyByZXR1cm5fY2FsbF9pbmRpcmVjdC53
YXN0OjQ1NAotYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgwMFx4MDBceDAw
XHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAxXHg3Zlx4MDBceDYwXHgwMFx4MDBc
eDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4ODBceDgwXHgwMFx4
MDFceDcwXHgwMFx4MDBceDBhXHg4ZVx4ODBceDgwXHg4MFx4MDBceDAxXHg4OFx4ODBceDgwXHg4
MFx4MDBceDAwXHg0MVx4MDFceDAxXHgxM1x4MDBceDAwXHgwYiIpOwotCi0vLyByZXR1cm5fY2Fs
bF9pbmRpcmVjdC53YXN0OjQ2MgotYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAx
XHgwMFx4MDBceDAwXHgwMVx4ODhceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAxXHg3Zlx4MDBc
eDYwXHgwMFx4MDBceDAzXHg4Mlx4ODBceDgwXHg4MFx4MDBceDAxXHgwMVx4MDRceDg0XHg4MFx4
ODBceDgwXHgwMFx4MDFceDcwXHgwMFx4MDBceDBhXHg4Zlx4ODBceDgwXHg4MFx4MDBceDAxXHg4
OVx4ODBceDgwXHg4MFx4MDBceDAwXHg0MVx4MDBceDQyXHgwMVx4MTNceDAwXHgwMFx4MGIiKTsK
LQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo0NzEKLWFzc2VydF9pbnZhbGlkKCJceDAw
XHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJc
eDYwXHgwMlx4N2ZceDdmXHgwMFx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4
MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDkwXHg4
MFx4ODBceDgwXHgwMFx4MDFceDhhXHg4MFx4ODBceDgwXHgwMFx4MDBceDAxXHg0MVx4MDFceDQx
XHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKLQotLy8gcmV0dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo0
ODEKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNceDZkXHgwMVx4MDBceDAwXHgwMFx4MDFc
eDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMlx4N2ZceDdmXHgwMFx4NjBceDAwXHgwMFx4
MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgw
MVx4NzBceDAwXHgwMFx4MGFceDkwXHg4MFx4ODBceDgwXHgwMFx4MDFceDhhXHg4MFx4ODBceDgw
XHgwMFx4MDBceDQxXHgwMVx4MDFceDQxXHgwMFx4MTNceDAwXHgwMFx4MGIiKTsKLQotLy8gcmV0
dXJuX2NhbGxfaW5kaXJlY3Qud2FzdDo0OTEKLWFzc2VydF9pbnZhbGlkKCJceDAwXHg2MVx4NzNc
eDZkXHgwMVx4MDBceDAwXHgwMFx4MDFceDg5XHg4MFx4ODBceDgwXHgwMFx4MDJceDYwXHgwMlx4
N2ZceDdjXHgwMFx4NjBceDAwXHgwMFx4MDNceDgyXHg4MFx4ODBceDgwXHgwMFx4MDFceDAxXHgw
NFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBceDAwXHgwMFx4MGFceDk4XHg4MFx4ODBceDgw
XHgwMFx4MDFceDkyXHg4MFx4ODBceDgwXHgwMFx4MDBceDQ0XHgwMFx4MDBceDAwXHgwMFx4MDBc
eDAwXHhmMFx4M2ZceDQxXHgwMVx4NDFceDAwXHgxM1x4MDBceDAwXHgwYiIpOwotCi0vLyByZXR1
cm5fY2FsbF9pbmRpcmVjdC53YXN0OjUwMQotYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4
NmRceDAxXHgwMFx4MDBceDAwXHgwMVx4ODlceDgwXHg4MFx4ODBceDAwXHgwMlx4NjBceDAyXHg3
Y1x4N2ZceDAwXHg2MFx4MDBceDAwXHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDFceDA0
XHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDBceDAwXHgwYVx4OThceDgwXHg4MFx4ODBc
eDAwXHgwMVx4OTJceDgwXHg4MFx4ODBceDAwXHgwMFx4NDFceDAxXHg0NFx4MDBceDAwXHgwMFx4
MDBceDAwXHgwMFx4ZjBceDNmXHg0MVx4MDBceDEzXHgwMFx4MDBceDBiIik7Ci0KLS8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6NTE1Ci1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDAxXHg4NFx4ODBceDgwXHg4MFx4MDBceDAxXHg2MFx4MDBceDAw
XHgwM1x4ODJceDgwXHg4MFx4ODBceDAwXHgwMVx4MDBceDA0XHg4NFx4ODBceDgwXHg4MFx4MDBc
eDAxXHg3MFx4MDBceDAwXHgwYVx4OGRceDgwXHg4MFx4ODBceDAwXHgwMVx4ODdceDgwXHg4MFx4
ODBceDAwXHgwMFx4NDFceDAwXHgxM1x4MDFceDAwXHgwYiIpOwotCi0vLyByZXR1cm5fY2FsbF9p
bmRpcmVjdC53YXN0OjUyMgotYXNzZXJ0X2ludmFsaWQoIlx4MDBceDYxXHg3M1x4NmRceDAxXHgw
MFx4MDBceDAwXHgwMVx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NjBceDAwXHgwMFx4MDNceDgy
XHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHgwNFx4ODRceDgwXHg4MFx4ODBceDAwXHgwMVx4NzBc
eDAwXHgwMFx4MGFceDkxXHg4MFx4ODBceDgwXHgwMFx4MDFceDhiXHg4MFx4ODBceDgwXHgwMFx4
MDBceDQxXHgwMFx4MTNceDk0XHg5OFx4ZGJceGUyXHgwM1x4MDBceDBiIik7Ci0KLS8vIHJldHVy
bl9jYWxsX2luZGlyZWN0Lndhc3Q6NTMzCi1hc3NlcnRfaW52YWxpZCgiXHgwMFx4NjFceDczXHg2
ZFx4MDFceDAwXHgwMFx4MDBceDA0XHg4NVx4ODBceDgwXHg4MFx4MDBceDAxXHg3MFx4MDFceDAy
XHgwMlx4MDlceDg4XHg4MFx4ODBceDgwXHgwMFx4MDFceDAwXHg0MVx4MDBceDBiXHgwMlx4MDBc
eDAwIik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vdGFpbC1jYWxsL3RhaWwtY2FsbC5qcyBi
L0pTVGVzdHMvd2FzbS90YWlsLWNhbGwvdGFpbC1jYWxsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjNTllYzBjOGY4YzAuLjAwMDAwMDAwMDAwMAotLS0gYS9KU1Rlc3RzL3dhc20v
dGFpbC1jYWxsL3RhaWwtY2FsbC5qcworKysgL2Rldi9udWxsCkBAIC0xLDk4MSArMCwwIEBACi1p
bXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAiLi4vYXNzZXJ0LmpzIjsKLWltcG9ydCBCdWlsZGVyIGZy
b20gIi4uL0J1aWxkZXIuanMiOwotCi1jb25zdCBkZWZhdWx0RXhwb3J0U2l6ZSA9IDU7Ci1jb25z
dCBzaWduYXR1cmVNYXhBcml0eSA9IDQyOwotY29uc3QgdmVyYm9zZSA9IDA7Ci0KLWNsYXNzIFR5
cGVHZW5lcmF0b3IgewotICBjb25zdHJ1Y3RvcigpIHsKLSAgICBjb25zdCBmbG9hdDY0Rmxvb3Ig
PSAodmFsdWUpID0+IHsKLSAgICAgIHJldHVybiBNYXRoLmZsb29yKHZhbHVlKTsKLSAgICB9Owot
ICAgIGNvbnN0IGZsb2F0NjRGbG9hdDMyID0gKHZhbHVlKSA9PiB7Ci0gICAgICByZXR1cm4gTWF0
aC5mcm91bmQodmFsdWUpOwotICAgIH07Ci0gICAgY29uc3QgZmxvYXQ2NCA9ICh2YWx1ZSkgPT4g
ewotICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH07Ci0gICAgdGhpcy5nZW5lcmF0b3JNYXAgPSBu
ZXcgTWFwKCk7Ci0gICAgdGhpcy5nZW5lcmF0b3JNYXAuc2V0KCJpMzIiLCB7Ci0gICAgICB0b0pT
OiBmbG9hdDY0Rmxvb3IsCi0gICAgICB0b0J1aWxkZXJUeXBlOiAodmFsdWUsIGJ1aWxkZXIpID0+
IHsKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuSTMyQ29uc3QodmFsdWUpOwotICAgICAgfSwKLSAg
ICB9KTsKLSAgICB0aGlzLmdlbmVyYXRvck1hcC5zZXQoImk2NCIsIHsKLSAgICAgIHRvSlM6ICh2
YWx1ZSkgPT4gewotICAgICAgICByZXR1cm4gQmlnSW50KE1hdGguZmxvb3IodmFsdWUpKTsKLSAg
ICAgIH0sCi0gICAgICB0b0J1aWxkZXJUeXBlOiAodmFsdWUsIGJ1aWxkZXIpID0+IHsKLSAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIuSTY0Q29uc3QoTnVtYmVyKHZhbHVlKSk7Ci0gICAgICB9LAotICAg
IH0pOwotICAgIHRoaXMuZ2VuZXJhdG9yTWFwLnNldCgiZjMyIiwgewotICAgICAgdG9KUzogZmxv
YXQ2NEZsb2F0MzIsCi0gICAgICB0b0J1aWxkZXJUeXBlOiAodmFsdWUsIGJ1aWxkZXIpID0+IHsK
LSAgICAgICAgcmV0dXJuIGJ1aWxkZXIuRjMyQ29uc3QodmFsdWUpOwotICAgICAgfSwKLSAgICB9
KTsKLSAgICB0aGlzLmdlbmVyYXRvck1hcC5zZXQoImY2NCIsIHsKLSAgICAgIHRvSlM6IGZsb2F0
NjQsCi0gICAgICB0b0J1aWxkZXJUeXBlOiAodmFsdWUsIGJ1aWxkZXIpID0+IHsKLSAgICAgICAg
cmV0dXJuIGJ1aWxkZXIuRjY0Q29uc3QodmFsdWUpOwotICAgICAgfSwKLSAgICB9KTsKLSAgICB0
aGlzLnR5cGVzID0gQXJyYXkuZnJvbSh0aGlzLmdlbmVyYXRvck1hcC5rZXlzKCkpOwotICB9Ci0g
IGdldChrZXkpIHsKLSAgICByZXR1cm4gdGhpcy5nZW5lcmF0b3JNYXAuZ2V0KGtleSk7Ci0gIH0K
LSAgZ2V0UmFuZG9tVHlwZSgpIHsKLSAgICBjb25zdCBsZW5ndGggPSB0aGlzLmdlbmVyYXRvck1h
cC5zaXplOwotICAgIGNvbnN0IGluZGV4ID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbGVu
Z3RoKTsKLSAgICByZXR1cm4gdGhpcy50eXBlc1tpbmRleF07Ci0gIH0KLSAgY3JlYXRlU2lnbmF0
dXJlKHBhcmFtc0xlbiwgcmV0dXJuTGVuLCB0eXBlKSB7Ci0gICAgcGFyYW1zTGVuID0gcGFyYW1z
TGVuID09IHVuZGVmaW5lZAotICAgICAgPyBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBzaWdu
YXR1cmVNYXhBcml0eSkKLSAgICAgIDogcGFyYW1zTGVuOwotICAgIHJldHVybkxlbiA9IHJldHVy
bkxlbiA9PSB1bmRlZmluZWQKLSAgICAgID8gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogc2ln
bmF0dXJlTWF4QXJpdHkpCi0gICAgICA6IHJldHVybkxlbjsKLSAgICByZXR1cm4gewotICAgICAg
cGFyYW1zOiBBcnJheS5mcm9tKAotICAgICAgICB7IGxlbmd0aDogcGFyYW1zTGVuIH0sCi0gICAg
ICAgICgpID0+IHR5cGUgPyB0eXBlIDogdHlwZUdlbmVyYXRvci5nZXRSYW5kb21UeXBlKCksCi0g
ICAgICApLAotICAgICAgcmV0OiBBcnJheS5mcm9tKAotICAgICAgICB7IGxlbmd0aDogcmV0dXJu
TGVuIH0sCi0gICAgICAgICgpID0+IHR5cGUgPyB0eXBlIDogdHlwZUdlbmVyYXRvci5nZXRSYW5k
b21UeXBlKCksCi0gICAgICApLAotICAgIH07Ci0gIH0KLSAganNBcmdGcm9tV2FzbVR5cGUodmFs
dWUsIHR5cGUpIHsKLSAgICBjb25zdCBlbnRyeSA9IHRoaXMuZ2VuZXJhdG9yTWFwLmdldCh0eXBl
KTsKLSAgICBpZiAoZW50cnkgPT0gdW5kZWZpbmVkKSB7Ci0gICAgICB0aHJvdyBuZXcgRXJyb3Io
YGVudHJ5IG5vdCBmb3VuZDogJHt0eXBlfWApOwotICAgIH0KLSAgICByZXR1cm4gZW50cnkudG9K
Uyh2YWx1ZSk7Ci0gIH0KLSAganNBcmdzRnJvbVdhc21QYXJhbXMocGFyYW1zKSB7Ci0gICAgY29u
c3QgdmFsdWVzID0gQXJyYXkuZnJvbShwYXJhbXMsICgpID0+IHsKLSAgICAgIHJldHVybiBNYXRo
LnJhbmRvbSgpICogMHgyMDsKLSAgICB9KTsKLSAgICByZXR1cm4gQXJyYXkuZnJvbSh2YWx1ZXMs
ICh2YWwsIGluZGV4KSA9PiB7Ci0gICAgICByZXR1cm4gdGhpcy5qc0FyZ0Zyb21XYXNtVHlwZSh2
YWwsIHBhcmFtc1tpbmRleF0pOwotICAgIH0pOwotICB9Ci0gIGJ1aWxkZXJUeXBlRnJvbVdhc21U
eXBlKHZhbHVlLCB0eXBlLCBidWlsZGVyKSB7Ci0gICAgY29uc3QgZW50cnkgPSB0aGlzLmdlbmVy
YXRvck1hcC5nZXQodHlwZSk7Ci0gICAgaWYgKGVudHJ5ID09IHVuZGVmaW5lZCkgewotICAgICAg
dGhyb3cgbmV3IEVycm9yKGBlbnRyeSBub3QgZm91bmQ6ICR7dHlwZX1gKTsKLSAgICB9Ci0gICAg
cmV0dXJuIGVudHJ5LnRvQnVpbGRlclR5cGUodmFsdWUsIGJ1aWxkZXIpOwotICB9Ci19Ci0KLWNv
bnN0IHR5cGVHZW5lcmF0b3IgPSBuZXcgVHlwZUdlbmVyYXRvcigpOwotCi0vLyBCdWlsZGVyIGhl
bHBlcnMKLQotY29uc3QgY3JlYXRlQnVpbGRlciA9IChidWlsZGVySW5mbykgPT4gewotICBjb25z
dCBmdW5jID0gYnVpbGRlckluZm9bImZ1bmMiXTsKLQotICBjb25zdCBpbXBvcnRzID0gYnVpbGRl
ckluZm9bImltcG9ydHMiXTsKLSAgY29uc3QgdHlwZXMgPSBidWlsZGVySW5mb1sidHlwZXMiXTsK
LSAgY29uc3QgZXhwb3J0cyA9IGJ1aWxkZXJJbmZvWyJleHBvcnRzIl07Ci0gIGNvbnN0IHVzZVRh
aWxDYWxsID0gYnVpbGRlckluZm9bInVzZVRhaWxDYWxsIl07Ci0KLSAgbGV0IGJ1aWxkZXIgPSBu
ZXcgQnVpbGRlcigpOwotICBidWlsZGVyID0gY3JlYXRlVHlwZXMoYnVpbGRlciwgdHlwZXMpOwot
ICBidWlsZGVyID0gY3JlYXRlSW1wb3J0cyhidWlsZGVyLCBpbXBvcnRzKS5GdW5jdGlvbigpLkVu
ZCgpOwotICBpZiAoYnVpbGRlckluZm9bInRhYmxlIl0pIHsKLSAgICBidWlsZGVyID0gYnVpbGRl
ci5UYWJsZSgpLlRhYmxlKGJ1aWxkZXJJbmZvWyJ0YWJsZSJdKS5FbmQoKTsKLSAgfQotICBidWls
ZGVyID0gY3JlYXRlRXhwb3J0cyhidWlsZGVyLCBleHBvcnRzKTsKLSAgaWYgKGJ1aWxkZXJJbmZv
WyJlbGVtZW50Il0pIHsKLSAgICBidWlsZGVyID0gYnVpbGRlci5FbGVtZW50KCkuRWxlbWVudChi
dWlsZGVySW5mb1siZWxlbWVudCJdKS5FbmQoKTsKLSAgfQotICByZXR1cm4gY3JlYXRlQ29kZShi
dWlsZGVyLCBmdW5jLCB1c2VUYWlsQ2FsbCk7Ci19OwotCi1jb25zdCBjcmVhdGVJbXBvcnRzID0g
KGJ1aWxkZXIsIGltcG9ydHMpID0+IHsKLSAgaWYgKGltcG9ydHMgPT0gdW5kZWZpbmVkIHx8IGlt
cG9ydHNbImltcCJdID09IHVuZGVmaW5lZCkgewotICAgIHJldHVybiBidWlsZGVyOwotICB9Ci0g
IGJ1aWxkZXIgPSBidWlsZGVyLkltcG9ydCgpOwotICBmb3IgKGNvbnN0IGltcG9ydFR5cGUgb2Yg
T2JqZWN0LmtleXMoaW1wb3J0c1siaW1wIl0pKSB7Ci0gICAgc3dpdGNoIChpbXBvcnRUeXBlKSB7
Ci0gICAgICBjYXNlICJtZW1vcnkiOgotICAgICAgICBidWlsZGVyID0gYnVpbGRlci5NZW1vcnko
ImltcCIsICJtZW1vcnkiLCBpbXBvcnRzWyJpbXAiXVtpbXBvcnRUeXBlXSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSAidGFibGUiOgotICAgICAgICBidWlsZGVyID0gYnVpbGRlci5UYWJs
ZSgiaW1wIiwgInRhYmxlIiwgaW1wb3J0c1siaW1wIl1baW1wb3J0VHlwZV0pOwotICAgICAgICBi
cmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLkZ1bmN0aW9u
KAotICAgICAgICAgICJpbXAiLAotICAgICAgICAgIGltcG9ydFR5cGUsCi0gICAgICAgICAgaW1w
b3J0c1siaW1wIl1baW1wb3J0VHlwZV0sCi0gICAgICAgICk7Ci0gICAgfQotICB9Ci0gIHJldHVy
biBidWlsZGVyLkVuZCgpOwotfTsKLQotY29uc3QgY3JlYXRlRXhwb3J0cyA9IChidWlsZGVyLCBm
dW5jdGlvbnMpID0+IHsKLSAgbGV0IG5ld0J1aWxkZXIgPSBidWlsZGVyLkV4cG9ydCgpOwotICBp
ZiAoZnVuY3Rpb25zID09IHVuZGVmaW5lZCkgewotICAgIHJldHVybiBuZXdCdWlsZGVyLkVuZCgp
OwotICB9Ci0gIGZvciAoY29uc3QgZiBvZiBmdW5jdGlvbnMpIHsKLSAgICBuZXdCdWlsZGVyID0g
bmV3QnVpbGRlci5GdW5jdGlvbihmWyJuYW1lIl0pOwotICB9Ci0gIHJldHVybiBuZXdCdWlsZGVy
LkVuZCgpOwotfTsKLQotY29uc3QgY3JlYXRlQ29kZSA9IChidWlsZGVyLCBmdW5jdGlvbnMsIHVz
ZVRhaWxDYWxsKSA9PiB7Ci0gIGxldCBuZXdCdWlsZGVyID0gYnVpbGRlci5Db2RlKCk7Ci0gIGZv
ciAoY29uc3QgZiBvZiBmdW5jdGlvbnMpIHsKLSAgICBuZXdCdWlsZGVyID0gZlsiY29kZSJdKG5l
d0J1aWxkZXIsIHVzZVRhaWxDYWxsKTsKLSAgfQotICByZXR1cm4gbmV3QnVpbGRlci5FbmQoKTsK
LX07Ci0KLWNvbnN0IGNyZWF0ZVR5cGVzID0gKGJ1aWxkZXIsIGZ1bmN0aW9ucykgPT4gewotICBi
dWlsZGVyID0gYnVpbGRlci5UeXBlKCk7Ci0gIGlmIChmdW5jdGlvbnMgPT0gdW5kZWZpbmVkKSB7
Ci0gICAgcmV0dXJuIGJ1aWxkZXIuRW5kKCk7Ci0gIH0KLSAgZm9yIChjb25zdCBmIG9mIGZ1bmN0
aW9ucykgewotICAgIGJ1aWxkZXIgPSBidWlsZGVyLkZ1bmMoZi5zaWduYXR1cmVbInBhcmFtcyJd
LCBmLnNpZ25hdHVyZVsicmV0Il0pOwotICB9Ci0gIHJldHVybiBidWlsZGVyLkVuZCgpOwotfTsK
LQotY29uc3QgY3JlYXRlQ2FsbGVyID0gKG5hbWUsIGNhbGxlZSwgY2FsbGVyU2lnbmF0dXJlLCBp
c0luZGlyZWN0KSA9PiB7Ci0gIHJldHVybiB7Ci0gICAgbmFtZTogbmFtZSwKLSAgICBzaWduYXR1
cmU6IGNhbGxlclNpZ25hdHVyZSwKLSAgICBjb2RlOiAoYnVpbGRlciwgdXNlVGFpbENhbGwpID0+
IHsKLSAgICAgIGJ1aWxkZXIgPSBwb3B1bGF0ZVN0YWNrKAotICAgICAgICBidWlsZGVyLkZ1bmN0
aW9uKG5hbWUsIGNhbGxlclNpZ25hdHVyZSksCi0gICAgICAgIGNhbGxlclNpZ25hdHVyZS5wYXJh
bXMsCi0gICAgICAgIGNhbGxlZS5zaWduYXR1cmUucGFyYW1zLAotICAgICAgICAoYnVpbGRlciwg
dmFsdWUsIHR5cGUpID0+IHsKLSAgICAgICAgICBjb25zdCBqc0FyZyA9IHR5cGVHZW5lcmF0b3Iu
anNBcmdGcm9tV2FzbVR5cGUodmFsdWUsIHR5cGUpOwotICAgICAgICAgIHJldHVybiB0eXBlR2Vu
ZXJhdG9yLmJ1aWxkZXJUeXBlRnJvbVdhc21UeXBlKGpzQXJnLCB0eXBlLCBidWlsZGVyKTsKLSAg
ICAgICAgfSwKLSAgICAgICk7Ci0gICAgICByZXR1cm4gaXNJbmRpcmVjdAotICAgICAgICA/IHRy
eVRhaWxDYWxsSW5kaXJlY3QoCi0gICAgICAgICAgYnVpbGRlciwKLSAgICAgICAgICB1c2VUYWls
Q2FsbCwKLSAgICAgICAgICBjYWxsZWUuaW5kZXgsCi0gICAgICAgICAgLyp0YWJsZUluZGV4Ki8g
MCwKLSAgICAgICAgKS5FbmQoKQotICAgICAgICA6IHRyeVRhaWxDYWxsKGJ1aWxkZXIsIHVzZVRh
aWxDYWxsLCBjYWxsZWUuaW5kZXgpLkVuZCgpOwotICAgIH0sCi0gIH07Ci19OwotCi1jb25zdCBj
cmVhdGVMZWFmRnVuY3Rpb24gPSAobmFtZSwgc2lnbmF0dXJlKSA9PiB7Ci0gIGNvbnN0IGZ1bmN0
aW9uTmFtZSA9ICJ0YWlsXyIgKyBuYW1lOwotICByZXR1cm4gewotICAgIG5hbWU6IGZ1bmN0aW9u
TmFtZSwKLSAgICBzaWduYXR1cmU6IHNpZ25hdHVyZSwKLSAgICBjb2RlOiAoYnVpbGRlcikgPT4g
ewotICAgICAgcmV0dXJuIHBvcHVsYXRlU3RhY2soCi0gICAgICAgIGJ1aWxkZXIuRnVuY3Rpb24o
ZnVuY3Rpb25OYW1lLCBzaWduYXR1cmUpLAotICAgICAgICBzaWduYXR1cmUucGFyYW1zLAotICAg
ICAgICBzaWduYXR1cmUucmV0LAotICAgICAgKS5FbmQoKTsKLSAgICB9LAotICB9OwotfTsKLQot
Y29uc3QgcG9wdWxhdGVTdGFjayA9ICgKLSAgYnVpbGRlciwKLSAgY2FsbGVyUGFyYW1zU2lnbmF0
dXJlLAotICBjYWxsZWVQYXJhbXNTaWduYXR1cmUsCi0pID0+IHsKLSAgY29uc3QgZ2VuZXJhdGVU
eXBlID0gKGJ1aWxkZXIsIHZhbHVlLCB0eXBlKSA9PiB7Ci0gICAgY29uc3QganNBcmcgPSB0eXBl
R2VuZXJhdG9yLmpzQXJnRnJvbVdhc21UeXBlKHZhbHVlLCB0eXBlKTsKLSAgICByZXR1cm4gdHlw
ZUdlbmVyYXRvci5idWlsZGVyVHlwZUZyb21XYXNtVHlwZShqc0FyZywgdHlwZSwgYnVpbGRlcik7
Ci0gIH07Ci0KLSAgLy8gc2F2ZSBsb2NhbCBpbmRpY2VzIGJ5IHR5cGUKLSAgY29uc3QgbWFwID0g
bmV3IE1hcCgpOwotICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbGxlZVBhcmFtc1NpZ25hdHVyZS5s
ZW5ndGg7IGkrKykgewotICAgIGxldCBzYXZlZFR5cGVJbmRpY2VzID0gbWFwLmdldChjYWxsZWVQ
YXJhbXNTaWduYXR1cmVbaV0pOwotCi0gICAgaWYgKHNhdmVkVHlwZUluZGljZXMgPT0gdW5kZWZp
bmVkKSB7Ci0gICAgICBjb25zdCBub3RGb3VuZCA9IC0xOwotICAgICAgY29uc3QgbmV3VHlwZSA9
IGNhbGxlZVBhcmFtc1NpZ25hdHVyZVtpXTsKLSAgICAgIGNvbnN0IGluZGljZXMgPSBjYWxsZXJQ
YXJhbXNTaWduYXR1cmUubWFwKCh2YWwsIGluZGV4KSA9PgotICAgICAgICB2YWwgPT0gbmV3VHlw
ZSA/IGluZGV4IDogbm90Rm91bmQKLSAgICAgICkuZmlsdGVyKCh2YWwpID0+IHZhbCAhPSBub3RG
b3VuZCk7Ci0KLSAgICAgIHNhdmVkVHlwZUluZGljZXMgPSBtYXAuc2V0KG5ld1R5cGUsIHsgaW5k
aWNlczogaW5kaWNlcywgY3VycmVudDogMCB9KS5nZXQoCi0gICAgICAgIG5ld1R5cGUsCi0gICAg
ICApOwotICAgIH0KLSAgfQotCi0gIC8vIHB1c2ggbG9jYWxzCi0gIGxldCBpID0gMDsKLSAgZm9y
ICg7IGkgPCBNYXRoLm1pbihjYWxsZXJQYXJhbXNTaWduYXR1cmUubGVuZ3RoLCBjYWxsZWVQYXJh
bXNTaWduYXR1cmUubGVuZ3RoKTsgKytpKSB7Ci0gICAgLy8gZ2V0IGxvY2FsIGJ5IHJldCB0eXBl
Ci0gICAgY29uc3Qgc2F2ZWRUeXBlSW5kaWNlcyA9IG1hcC5nZXQoY2FsbGVlUGFyYW1zU2lnbmF0
dXJlW2ldKTsKLSAgICBpZiAoIXNhdmVkVHlwZUluZGljZXMuaW5kaWNlcy5sZW5ndGgpIHsKLSAg
ICAgIGJ1aWxkZXIgPSBnZW5lcmF0ZVR5cGUoYnVpbGRlciwgaSwgY2FsbGVlUGFyYW1zU2lnbmF0
dXJlW2ldKTsKLSAgICB9IGVsc2UgewotICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuR2V0TG9jYWwo
Ci0gICAgICAgIHNhdmVkVHlwZUluZGljZXMuaW5kaWNlc1tzYXZlZFR5cGVJbmRpY2VzLmN1cnJl
bnRdLAotICAgICAgKTsKLSAgICAgIHNhdmVkVHlwZUluZGljZXMuY3VycmVudCA9IChzYXZlZFR5
cGVJbmRpY2VzLmN1cnJlbnQgKyAxKSAlCi0gICAgICAgIHNhdmVkVHlwZUluZGljZXMuaW5kaWNl
cy5sZW5ndGg7Ci0gICAgfQotICB9Ci0KLSAgLy8gZ2VuZXJhdGUgcmVtYWluaW5nIHR5cGVzIGlm
IG5lZWRlZAotICBmb3IgKDsgaSA8IGNhbGxlZVBhcmFtc1NpZ25hdHVyZS5sZW5ndGg7ICsraSkg
ewotICAgIGJ1aWxkZXIgPSBnZW5lcmF0ZVR5cGUoYnVpbGRlciwgaSwgY2FsbGVlUGFyYW1zU2ln
bmF0dXJlW2ldKTsKLSAgfQotCi0gIHJldHVybiBidWlsZGVyOwotfTsKLQotY29uc3QgdHJ5VGFp
bENhbGwgPSAoYnVpbGRlciwgdXNlVGFpbENhbGwsIGluZGV4KSA9PiB7Ci0gIHJldHVybiB1c2VU
YWlsQ2FsbCA/IGJ1aWxkZXIuVGFpbENhbGwoaW5kZXgpIDogYnVpbGRlci5DYWxsKGluZGV4KTsK
LX07Ci0KLWNvbnN0IHRyeVRhaWxDYWxsSW5kaXJlY3QgPSAoYnVpbGRlciwgdXNlVGFpbENhbGws
IGluZGV4LCB0YWJsZUluZGV4KSA9PiB7Ci0gIGNvbnN0IG5ld0J1aWxkZXIgPSBidWlsZGVyLkkz
MkNvbnN0KGluZGV4KTsKLSAgcmV0dXJuIHVzZVRhaWxDYWxsCi0gICAgPyBuZXdCdWlsZGVyLlRh
aWxDYWxsSW5kaXJlY3QoaW5kZXgsIHRhYmxlSW5kZXgpCi0gICAgOiBuZXdCdWlsZGVyLkNhbGxJ
bmRpcmVjdChpbmRleCwgdGFibGVJbmRleCk7Ci19OwotCi1jb25zdCBjb21taXRGdW5jdGlvbiA9
IChmdW5jLCBkZXN0KSA9PiB7Ci0gIGZ1bmNbImluZGV4Il0gPSBkZXN0Lmxlbmd0aDsKLSAgZGVz
dC5wdXNoKGZ1bmMpOwotICByZXR1cm4gZnVuYzsKLX07Ci0KLWNvbnN0IHJlZ2lzdGVyQ2FsbFNp
dGUgPSAoY2FsbGVyLCBjYWxsZWVzLCBkZXN0KSA9PiB7Ci0gIGNhbGxlclsiY2FsbFNpdGVJbmRl
eCJdID0gZGVzdC5sZW5ndGg7Ci0gIGRlc3QucHVzaCh7Ci0gICAgY2FsbGVyOiBjYWxsZXIsCi0g
ICAgY2FsbGVlczogQXJyYXkuaXNBcnJheShjYWxsZWVzKSA/IGNhbGxlZXMgOiBbY2FsbGVlc10s
Ci0gIH0pOwotICByZXR1cm4gY2FsbGVyOwotfTsKLQotLy8gVGVzdCBoZWxwZXJzCi0KLWNvbnN0
IGFkZENhbGxzID0gKGRlc3QsIGNhbGxTaXRlcywgZXhwb3J0U2l6ZSwgaXNJbmRpcmVjdCkgPT4g
ewotICBpZiAoZXhwb3J0U2l6ZSA9PSB1bmRlZmluZWQpIHsKLSAgICBleHBvcnRTaXplID0gZGVm
YXVsdEV4cG9ydFNpemU7Ci0gIH0KLSAgZm9yIChsZXQgaSA9IDA7IGkgPCBleHBvcnRTaXplOyBp
KyspIHsKLSAgICBjb25zdCBuZXdUYWlsRnVuY3Rpb24gPSBjcmVhdGVMZWFmRnVuY3Rpb24oCi0g
ICAgICAvKm5hbWUqLyBgJHtkZXN0Lmxlbmd0aH1gLAotICAgICAgLypzaWduYXR1cmUqLyB0eXBl
R2VuZXJhdG9yLmNyZWF0ZVNpZ25hdHVyZSgpLAotICAgICk7Ci0gICAgY29tbWl0RnVuY3Rpb24o
bmV3VGFpbEZ1bmN0aW9uLCBkZXN0KTsKLSAgICBhZGREZXB0aChuZXdUYWlsRnVuY3Rpb24sIC8q
Y2FsbERlcHRoKi8gMywgZGVzdCwgY2FsbFNpdGVzLCBpc0luZGlyZWN0KTsKLSAgfQotfTsKLQot
Y29uc3QgYWRkRGVwdGggPSAoZnVuYywgY2FsbERlcHRoLCBkZXN0LCBjYWxsU2l0ZXMsIGlzSW5k
aXJlY3QpID0+IHsKLSAgbGV0IGNhbGxlZSA9IGZ1bmM7Ci0gIGZvciAobGV0IGRlcHRoID0gMDsg
ZGVwdGggPCBjYWxsRGVwdGg7IGRlcHRoKyspIHsKLSAgICBjb25zdCBjYWxsZXJTaWduYXR1cmUg
PSB0eXBlR2VuZXJhdG9yLmNyZWF0ZVNpZ25hdHVyZSgKLSAgICAgIC8qcGFyYW1zIGxlbmd0aCov
IHVuZGVmaW5lZCwKLSAgICAgIC8qcmV0IGxlbmd0aCovIGNhbGxlZS5zaWduYXR1cmUucmV0Lmxl
bmd0aCwKLSAgICApOwotICAgIGNhbGxlclNpZ25hdHVyZS5yZXQgPSBjYWxsZWUuc2lnbmF0dXJl
LnJldDsKLSAgICBjb25zdCBjYWxsVHlwZSA9IGlzSW5kaXJlY3QgPyAiaW5kaXJlY3QtPiIgOiAi
LT4iOwotICAgIGNvbnN0IGNhbGxlck5hbWUgPSAiZGVwdGgiICsgZGVwdGgudG9TdHJpbmcoKSAr
IGNhbGxUeXBlICsKLSAgICAgIGNhbGxlZS5uYW1lOwotICAgIGNvbnN0IGNhbGxlciA9IGNyZWF0
ZUNhbGxlcigKLSAgICAgIGNhbGxlck5hbWUsCi0gICAgICBjYWxsZWUsCi0gICAgICBjYWxsZXJT
aWduYXR1cmUsCi0gICAgICBpc0luZGlyZWN0LAotICAgICk7Ci0gICAgY29tbWl0RnVuY3Rpb24o
Y2FsbGVyLCBkZXN0KTsKLSAgICByZWdpc3RlckNhbGxTaXRlKGNhbGxlciwgY2FsbGVlLCBjYWxs
U2l0ZXMpOwotICAgIGNhbGxlZSA9IGNhbGxlcjsKLSAgfQotfTsKLQotY29uc3QgY29tcGFyZSA9
IChsaHMsIHJocywgZXhwb3J0cywgY2FsbFNpdGVzKSA9PiB7Ci0gIGZvciAobGV0IGkgPSAwOyBp
IDwgZXhwb3J0cy5sZW5ndGg7ICsraSkgewotICAgIGNvbnN0IGNhbGxlciA9IGV4cG9ydHNbaV07
Ci0gICAgY29uc3QgY2FsbGVyTmFtZSA9IGNhbGxlci5uYW1lOwotICAgIGNvbnN0IGxoc0VudHJ5
cG9pbnQgPSBsaHMuZXhwb3J0c1tjYWxsZXJOYW1lXTsKLSAgICBjb25zdCByaHNFbnRyeXBvaW50
ID0gcmhzLmV4cG9ydHNbY2FsbGVyTmFtZV07Ci0gICAgY29uc3QgcGFyYW1zID0gdHlwZUdlbmVy
YXRvci5qc0FyZ3NGcm9tV2FzbVBhcmFtcyhjYWxsZXIuc2lnbmF0dXJlLnBhcmFtcyk7Ci0gICAg
aWYgKHZlcmJvc2UpIHsKLSAgICAgIGlmIChjYWxsZXIuY2FsbFNpdGVJbmRleCAhPSB1bmRlZmlu
ZWQpIHsKLSAgICAgICAgZHVtcEJhY2t0cmFjZShjYWxsU2l0ZXNbY2FsbGVyLmNhbGxTaXRlSW5k
ZXhdLCBjYWxsU2l0ZXMsIDApOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcHJpbnQoY2FsbGVy
TmFtZSk7Ci0gICAgICB9Ci0gICAgICBpZiAodmVyYm9zZSA9PSAyKSB7Ci0gICAgICAgIHByaW50
KCJwYXJhbXM6IiArIHBhcmFtcyk7Ci0gICAgICB9Ci0gICAgfQotICAgIGNvbnN0IGxoc1Jlc3Vs
dCA9IGxoc0VudHJ5cG9pbnQoLi4ucGFyYW1zKTsKLSAgICBjb25zdCByaHNSZXN1bHQgPSByaHNF
bnRyeXBvaW50KC4uLnBhcmFtcyk7Ci0gICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgIHByaW50KGxo
c1Jlc3VsdCk7Ci0gICAgICBwcmludChyaHNSZXN1bHQpOwotICAgIH0KLSAgICBhc3NlcnQuZXEo
bGhzUmVzdWx0LCByaHNSZXN1bHQpOwotICB9Ci19OwotCi0vLyBEZWJ1ZyBoZWxwZXJzCi0KLWNv
bnN0IGR1bXBGdW5jdGlvbkhlYWRlciA9IChmdW5jLCBjYWxsRGVwdGgpID0+IHsKLSAgbGV0IGlu
ZGVudCA9ICIiOwotICBmb3IgKGxldCBpID0gMDsgaSA8IGNhbGxEZXB0aDsgKytpKSB7Ci0gICAg
aW5kZW50ICs9ICJcdCI7Ci0gIH0KLSAgcHJpbnQoYCR7aW5kZW50fSR7ZnVuYy5uYW1lfVxuXAot
ICAgICR7aW5kZW50fSgke2Z1bmMuc2lnbmF0dXJlLnBhcmFtc30pLT4oJHtmdW5jLnNpZ25hdHVy
ZS5yZXR9KVxuXAotICAgICR7aW5kZW50fXBhcmFtcyBsZW5ndGg6JHtmdW5jLnNpZ25hdHVyZS5w
YXJhbXMubGVuZ3RofSwgcmV0IGxlbmd0aDoke2Z1bmMuc2lnbmF0dXJlLnJldC5sZW5ndGh9YCk7
Ci19OwotCi1jb25zdCBkdW1wQmFja3RyYWNlID0gKGNhbGxTaXRlLCBjYWxsU2l0ZXMsIGNhbGxE
ZXB0aCkgPT4gewotICBkdW1wRnVuY3Rpb25IZWFkZXIoY2FsbFNpdGVbImNhbGxlciJdLCBjYWxs
RGVwdGgpOwotICBjb25zdCBjYWxsZWVzID0gY2FsbFNpdGVbImNhbGxlZXMiXTsKLSAgaWYgKGNh
bGxlZXMpIHsKLSAgICBmb3IgKGNvbnN0IGNhbGxlZSBvZiBjYWxsZWVzKSB7Ci0gICAgICBjb25z
dCBjYWxsU2l0ZUluZGV4ID0gY2FsbGVlLmNhbGxTaXRlSW5kZXg7Ci0gICAgICBpZiAoY2FsbFNp
dGVJbmRleCkgewotICAgICAgICBkdW1wQmFja3RyYWNlKGNhbGxTaXRlc1tjYWxsU2l0ZUluZGV4
XSwgY2FsbFNpdGVzLCBjYWxsRGVwdGggKyAxKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGR1
bXBGdW5jdGlvbkhlYWRlcihjYWxsZWUsIGNhbGxEZXB0aCArIDEpOwotICAgICAgfQotICAgIH0K
LSAgfQotfTsKLQotLy8gVGVzdHMKLQotY29uc3QgdGVzdFdpdGhpbk1vZHVsZSA9ICgpID0+IHsK
LSAgaWYgKHZlcmJvc2UpIHsKLSAgICBwcmludCgidGVzdCB3aXRoaW4gbW9kdWxlLi4uIik7Ci0g
IH0KLSAgY29uc3QgZXhwb3J0cyA9IFtdOwotICBjb25zdCBjYWxsU2l0ZXMgPSBbXTsKLSAgYWRk
Q2FsbHMoZXhwb3J0cywgY2FsbFNpdGVzLCAvKmV4cG9ydFNpemUqLyAzKTsKLSAgYWRkQ2FsbHMo
ZXhwb3J0cywgY2FsbFNpdGVzLCAvKmV4cG9ydFNpemUqLyAzLCAvKmlzSW5kaXJlY3QqLyB0cnVl
KTsKLSAgY29uc3QgbGhzID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKAotICAgIG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoCi0gICAgICBjcmVhdGVCdWlsZGVyKHsKLSAgICAgICAgdXNlVGFpbENh
bGw6IHRydWUsCi0gICAgICAgIGZ1bmM6IGV4cG9ydHMsCi0gICAgICAgIGV4cG9ydHM6IGV4cG9y
dHMsCi0gICAgICAgIHR5cGVzOiBleHBvcnRzLAotICAgICAgICB0YWJsZTogeyBpbml0aWFsOiBl
eHBvcnRzLmxlbmd0aCwgZWxlbWVudDogImZ1bmNyZWYiIH0sCi0gICAgICAgIGVsZW1lbnQ6IHsK
LSAgICAgICAgICB0YWJsZUluZGV4OiAwLAotICAgICAgICAgIG9mZnNldDogMCwKLSAgICAgICAg
ICBmdW5jdGlvbkluZGljZXM6IEFycmF5LmZyb20oZXhwb3J0cywgKHZhbHVlKSA9PiB7Ci0gICAg
ICAgICAgICByZXR1cm4gdmFsdWUuaW5kZXg7Ci0gICAgICAgICAgfSksCi0gICAgICAgIH0sCi0g
ICAgICB9KS5XZWJBc3NlbWJseSgpLmdldCgpLAotICAgICksCi0gICk7Ci0gIGNvbnN0IHJocyA9
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSgKLSAgICBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKAot
ICAgICAgY3JlYXRlQnVpbGRlcih7Ci0gICAgICAgIHVzZVRhaWxDYWxsOiBmYWxzZSwKLSAgICAg
ICAgZnVuYzogZXhwb3J0cywKLSAgICAgICAgZXhwb3J0czogZXhwb3J0cywKLSAgICAgICAgdHlw
ZXM6IGV4cG9ydHMsCi0gICAgICAgIHRhYmxlOiB7IGluaXRpYWw6IGV4cG9ydHMubGVuZ3RoLCBl
bGVtZW50OiAiZnVuY3JlZiIgfSwKLSAgICAgICAgZWxlbWVudDogewotICAgICAgICAgIHRhYmxl
SW5kZXg6IDAsCi0gICAgICAgICAgb2Zmc2V0OiAwLAotICAgICAgICAgIGZ1bmN0aW9uSW5kaWNl
czogQXJyYXkuZnJvbShleHBvcnRzLCAodmFsdWUpID0+IHsKLSAgICAgICAgICAgIHJldHVybiB2
YWx1ZS5pbmRleDsKLSAgICAgICAgICB9KSwKLSAgICAgICAgfSwKLSAgICAgIH0pLldlYkFzc2Vt
Ymx5KCkuZ2V0KCksCi0gICAgKSwKLSAgKTsKLSAgY29tcGFyZShsaHMsIHJocywgZXhwb3J0cywg
Y2FsbFNpdGVzKTsKLX07Ci0KLWNvbnN0IHRlc3RFeGNlcHRpb25zID0gKCkgPT4gewotICBpZiAo
dmVyYm9zZSkgewotICAgIHByaW50KCJ0ZXN0IHdpdGggZXhjZXB0aW9ucy4uLiIpOwotICB9Ci0g
IGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKLSAgICAuVHlwZSgpLkVuZCgpCi0gICAg
LkZ1bmN0aW9uKCkuRW5kKCkKLSAgICAuRXhjZXB0aW9uKCkuU2lnbmF0dXJlKHsgcGFyYW1zOiBb
XSB9KS5FbmQoKQotICAgIC5FeHBvcnQoKQotICAgICAgLkZ1bmN0aW9uKCJ0cnlfdGFpbF9jYWxs
IikKLSAgICAgIC5GdW5jdGlvbigidHJ5X2NhbGwiKQotICAgICAgLkV4Y2VwdGlvbigiZm9vIiwg
MCkKLSAgICAuRW5kKCkgLy8gRXhwb3J0Ci0gICAgLkNvZGUoKQotICAgICAgLkZ1bmN0aW9uKCJ0
cnlfdGFpbF9jYWxsIiwgeyBwYXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCi0gICAgICAgIC5Ucnko
ImkzMiIpCi0gICAgICAgICAgLlRhaWxDYWxsKDIpCi0gICAgICAgIC5DYXRjaCgwKQotICAgICAg
ICAgIC5JMzJDb25zdCgyKQotICAgICAgICAuRW5kKCkgLy8gVHJ5Ci0gICAgICAuRW5kKCkgLy8g
RnVuY3Rpb24KLSAgICAgIC5GdW5jdGlvbigidHJ5X2NhbGwiLCB7IHBhcmFtczogW10sIHJldDog
ImkzMiIgfSkKLSAgICAgICAgLlRyeSgiaTMyIikKLSAgICAgICAgICAuQ2FsbCgwKQotICAgICAg
ICAuQ2F0Y2goMCkKLSAgICAgICAgICAuSTMyQ29uc3QoMikKLSAgICAgICAgLkVuZCgpIC8vIFRy
eQotICAgICAgLkVuZCgpIC8vIEZ1bmN0aW9uCi0gICAgICAuRnVuY3Rpb24oInRocm93IiwgeyBw
YXJhbXM6IFtdLCByZXQ6ICJpMzIiIH0pCi0gICAgICAgIC5UaHJvdygwKQotICAgICAgLkVuZCgp
Ci0gICAgLkVuZCgpOyAvL0NvZGUKLQotICBjb25zdCBiaW4gPSBidWlsZGVyLldlYkFzc2VtYmx5
KCkuZ2V0KCk7Ci0gIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsK
LSAgY29uc3QgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7fSk7
Ci0KLSAgYXNzZXJ0LnRocm93cyhpbnN0YW5jZS5leHBvcnRzLnRyeV90YWlsX2NhbGwsIFdlYkFz
c2VtYmx5LkV4Y2VwdGlvbiwgImV4Y2VwdGlvbiB0aHJvd24gc2hvdWxkIHByb3BhZ2F0ZSB0byBK
UyIpOwotICBhc3NlcnQuZXEoIGluc3RhbmNlLmV4cG9ydHMudHJ5X2NhbGwoKSwgMiwgImV4Y2Vw
dGlvbiB0aHJvd24gc2hvdWxkIGJlIGNhdWdodCBieSB0aGUgY2FsbGVyJ3MgY2FsbGVyIik7Ci19
OwotCi1jb25zdCB0ZXN0SlNJbXBvcnQgPSAoKSA9PiB7Ci0gIGlmICh2ZXJib3NlKSB7Ci0gICAg
cHJpbnQoInRlc3QgSlMgaW1wb3J0Li4uIik7Ci0gIH0KLQotICBjb25zdCB3YXNtTW9kdWxlV2hp
Y2hJbXBvcnRKUyA9ICgpID0+IHsKLSAgICBjb25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkp
Ci0gICAgICAuVHlwZSgpLkVuZCgpCi0gICAgICAuSW1wb3J0KCkKLSAgICAgICAgLkZ1bmN0aW9u
KCJpbXAiLCAiZnVuYyIsIHsgcGFyYW1zOiBbImkzMiJdIH0pCi0gICAgICAuRW5kKCkgLy8gSW1w
b3J0Ci0gICAgICAuRnVuY3Rpb24oKS5FbmQoKQotICAgICAgLkV4cG9ydCgpCi0gICAgICAgIC5G
dW5jdGlvbigiY2FsbEZ1bmMiKQotICAgICAgLkVuZCgpIC8vIEV4cG9ydAotICAgICAgLkNvZGUo
KQotICAgICAgICAuRnVuY3Rpb24oImNhbGxGdW5jIiwgeyBwYXJhbXM6IFsiaTMyIl0gfSkKLSAg
ICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgICAuVGFpbENhbGwoMCkgLy8gQ2FsbHMgZnVu
YyhwYXJhbVswXSArIDQyKQotICAgICAgICAuRW5kKCkgLy8gRnVuY3Rpb24KLSAgICAgIC5FbmQo
KTsgLy8gQ29kZQotICAgIGNvbnN0IGJpbiA9IGJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsK
LSAgICBjb25zdCBtb2R1bGUgPSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGJpbik7Ci0gICAgcmV0
dXJuIG1vZHVsZTsKLSAgfTsKLQotICAoZnVuY3Rpb24gTW9ub21vcnBoaWNJbXBvcnQoKSB7Ci0g
ICAgbGV0IGNvdW50ZXIgPSAwOwotICAgIGNvbnN0IGNvdW50ZXJTZXR0ZXIgPSAodikgPT4gewot
ICAgICAgY291bnRlciA9IHY7Ci0gICAgfTsKLSAgICBjb25zdCBtb2R1bGUgPSB3YXNtTW9kdWxl
V2hpY2hJbXBvcnRKUygpOwotICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSwgewotICAgICAgaW1wOiB7IGZ1bmM6IGNvdW50ZXJTZXR0ZXIgfSwKLSAg
ICB9KTsKLSAgICBmb3IgKGxldCBpID0gMDsgaSA8IDQwOTY7ICsraSkgewotICAgICAgaW5zdGFu
Y2UuZXhwb3J0cy5jYWxsRnVuYyg0Mik7Ci0gICAgICBhc3NlcnQuZXEoY291bnRlciwgNDIpOwot
ICAgIH0KLSAgfSkoKTsKLX07Ci0KLWNvbnN0IHRlc3RBY3Jvc3NNb2R1bGVzID0gKCkgPT4gewot
ICBpZiAodmVyYm9zZSkgewotICAgIHByaW50KCJ0ZXN0IGFjcm9zcyBtb2R1bGVzLi4uIik7Ci0g
IH0KLQotICBjb25zdCB0YWlsU2lnbmF0dXJlID0geyBwYXJhbXM6IFtdLCByZXQ6IFsiaTMyIl0g
fTsKLSAgY29uc3QgbWFpblNpZ25hdHVyZSA9IHsgcGFyYW1zOiBbImkzMiJdLCByZXQ6IFsiaTMy
IiwgImkzMiIsICJpMzIiLCAiaTMyIl0gfTsKLQotICBjb25zdCBleHRlcm5hbEluc3RhbmNlQnVp
bGRlciA9IChuYW1lLCBlbGVtZW50SW5mbykgPT4gewotICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9
IG5hbWUgKyAiX3RhaWwiOwotICAgIHJldHVybiAobmV3IEJ1aWxkZXIoKSkKLSAgICAgIC5UeXBl
KCkKLSAgICAgICAgLkZ1bmMoLypwYXJhbXMqLyBbXSwgLypyZXQqLyBbImkzMiJdKQotICAgICAg
LkVuZCgpIC8vVHlwZQotICAgICAgLkltcG9ydCgpCi0gICAgICAgIC5UYWJsZSgiaW1wIiwgInRh
YmxlIiwgeyBpbml0aWFsOiAyLCBlbGVtZW50OiAiZnVuY3JlZiIgfSkKLSAgICAgICAgLk1lbW9y
eSgiaW1wIiwgIm1lbW9yeSIsIHsgaW5pdGlhbDogMSwgc2hhcmVkOiBmYWxzZSB9KQotICAgICAg
LkVuZCgpIC8vSW1wb3J0Ci0gICAgICAuRnVuY3Rpb24oKS5FbmQoKQotICAgICAgLlRhYmxlKCkK
LSAgICAgICAgLlRhYmxlKHsgaW5pdGlhbDogMiwgZWxlbWVudDogImZ1bmNyZWYiIH0pCi0gICAg
ICAuRW5kKCkgLy8gVGFibGUKLSAgICAgIC5FeHBvcnQoKQotICAgICAgICAuRnVuY3Rpb24oZnVu
Y3Rpb25OYW1lKQotICAgICAgLkVuZCgpIC8vIEV4cG9ydAotICAgICAgLkVsZW1lbnQoKQotICAg
ICAgICAuRWxlbWVudChlbGVtZW50SW5mbykKLSAgICAgIC5FbmQoKSAvLyBFbGVtZW50Ci0gICAg
ICAuQ29kZSgpCi0gICAgICAgIC5GdW5jdGlvbihmdW5jdGlvbk5hbWUsIHRhaWxTaWduYXR1cmUp
Ci0gICAgICAgICAgLkkzMkNvbnN0KDApCi0gICAgICAgICAgLkkzMkxvYWQoLyppbW0xKi8gMiwg
LyppbW0yKi8gMCkKLSAgICAgICAgLkVuZCgpIC8vIEZ1bmN0aW9uCi0gICAgICAuRW5kKCk7IC8v
IENvZGUKLSAgfTsKLQotICBjb25zdCBpbnN0YW5jZUFCdWlsZGVyID0gZXh0ZXJuYWxJbnN0YW5j
ZUJ1aWxkZXIoImluc3RBIiwgewotICAgIHRhYmxlSW5kZXg6IDAsCi0gICAgb2Zmc2V0OiAwLAot
ICAgIGZ1bmN0aW9uSW5kaWNlczogWzBdLAotICB9KTsKLSAgY29uc3QgaW5zdGFuY2VCQnVpbGRl
ciA9IGV4dGVybmFsSW5zdGFuY2VCdWlsZGVyKCJpbnN0QiIsIHsKLSAgICB0YWJsZUluZGV4OiAw
LAotICAgIG9mZnNldDogMSwKLSAgICBmdW5jdGlvbkluZGljZXM6IFswXSwKLSAgfSk7Ci0KLSAg
Y29uc3QgbWFpbkJ1aWxkZXIgPSBuZXcgQnVpbGRlcigpCi0gICAgLlR5cGUoKQotICAgICAgLkZ1
bmMoLypwYXJhbXMqLyBbXSwgLypyZXQqLyBbImkzMiJdKQotICAgICAgLkZ1bmMoLypwYXJhbXMq
LyBbXSwgLypyZXQqLyBbImkzMiJdKQotICAgIC5FbmQoKSAvL1R5cGUKLSAgICAuSW1wb3J0KCkK
LSAgICAgIC5UYWJsZSgiaW1wIiwgInRhYmxlIiwgeyBpbml0aWFsOiAyLCBlbGVtZW50OiAiZnVu
Y3JlZiIgfSkKLSAgICAgIC5GdW5jdGlvbigiaW1wIiwgImluc3RBX3RhaWwiLCB7IHBhcmFtczog
W10sIHJldDogWyJpMzIiXSB9KQotICAgICAgLkZ1bmN0aW9uKCJpbXAiLCAiaW5zdEJfdGFpbCIs
IHsgcGFyYW1zOiBbXSwgcmV0OiBbImkzMiJdIH0pCi0gICAgLkVuZCgpIC8vSW1wb3J0Ci0gICAg
LkZ1bmN0aW9uKCkuRW5kKCkKLSAgICAuVGFibGUoKQotICAgICAgLlRhYmxlKHsgaW5pdGlhbDog
MiwgZWxlbWVudDogImZ1bmNyZWYiIH0pCi0gICAgLkVuZCgpIC8vIFRhYmxlCi0gICAgLkV4cG9y
dCgpCi0gICAgICAuRnVuY3Rpb24oInZpYV90YWJsZSIpCi0gICAgICAuRnVuY3Rpb24oInZpYV9p
bXBvcnQiKQotICAgIC5FbmQoKSAvLyBFeHBvcnQKLSAgICAuQ29kZSgpCi0gICAgICAuRnVuY3Rp
b24oInRyYW1wb2xpbmVfaW5zdEFfdmlhX2ltcG9ydCIsIHRhaWxTaWduYXR1cmUpCi0gICAgICAg
IC5UYWlsQ2FsbCgwKSAvLyB0YWlsIGNhbGwgaW5zdEFfdGFpbAotICAgICAgLkVuZCgpIC8vIEZ1
bmN0aW9uCi0gICAgICAuRnVuY3Rpb24oInRyYW1wb2xpbmVfaW5zdEJfdmlhX2ltcG9ydCIsIHRh
aWxTaWduYXR1cmUpCi0gICAgICAgIC5UYWlsQ2FsbCgxKSAvLyB0YWlsIGNhbGwgaW5zdEJfdGFp
bAotICAgICAgLkVuZCgpIC8vIEZ1bmN0aW9uCi0gICAgICAuRnVuY3Rpb24oInRyYW1wb2xpbmVf
aW5zdEFfdmlhX3RhYmxlIiwgdGFpbFNpZ25hdHVyZSkKLSAgICAgICAgLkkzMkNvbnN0KDApCi0g
ICAgICAgIC5UYWlsQ2FsbEluZGlyZWN0KDAsIDApIC8vIHRhaWwgY2FsbCBpbmRpcmVjdCBpbnN0
QV90YWlsCi0gICAgICAuRW5kKCkgLy8gRnVuY3Rpb24KLSAgICAgIC5GdW5jdGlvbigidHJhbXBv
bGluZV9pbnN0Ql92aWFfdGFibGUiLCB0YWlsU2lnbmF0dXJlKQotICAgICAgICAuSTMyQ29uc3Qo
MSkKLSAgICAgICAgLlRhaWxDYWxsSW5kaXJlY3QoMSwgMCkgLy8gdGFpbCBjYWxsIGluZGlyZWN0
IGluc3RCX3RhaWwKLSAgICAgIC5FbmQoKSAvLyBGdW5jdGlvbgotICAgICAgLkZ1bmN0aW9uKCJ2
aWFfdGFibGUiLCBtYWluU2lnbmF0dXJlKQotICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAg
LkNhbGwoNCkgLy8gY2FsbCB0cmFtcG9saW5lX2luc3RBX3ZpYV90YWJsZQotICAgICAgICAuR2V0
TG9jYWwoMCkKLSAgICAgICAgLkNhbGwoNSkgLy8gY2FsbCB0cmFtcG9saW5lX2luc3RCX3ZpYV90
YWJsZQotICAgICAgLkVuZCgpIC8vIEZ1bmN0aW9uCi0gICAgICAuRnVuY3Rpb24oInZpYV9pbXBv
cnQiLCBtYWluU2lnbmF0dXJlKQotICAgICAgICAuR2V0TG9jYWwoMCkKLSAgICAgICAgLkNhbGwo
MikgLy8gY2FsbCB0cmFtcG9saW5lX2luc3RBX3ZpYV9pbXBvcnQKLSAgICAgICAgLkdldExvY2Fs
KDApCi0gICAgICAgIC5DYWxsKDMpIC8vIGNhbGwgdHJhbXBvbGluZV9pbnN0Ql92aWFfaW1wb3J0
Ci0gICAgICAuRW5kKCkgLy8gRnVuY3Rpb24KLSAgICAuRW5kKCkgLy9Db2RlCi0gIDsKLQotICBj
b25zdCBpbnN0QU1lbUluZm8gPSB7IGluaXRpYWw6IDEgfTsKLSAgY29uc3QgaW5zdEJNZW1JbmZv
ID0geyBpbml0aWFsOiAyIH07Ci0gIGNvbnN0IGluc3RBTWVtID0gbmV3IFdlYkFzc2VtYmx5Lk1l
bW9yeShpbnN0QU1lbUluZm8pOwotICBjb25zdCBpbnN0Qk1lbSA9IG5ldyBXZWJBc3NlbWJseS5N
ZW1vcnkoaW5zdEJNZW1JbmZvKTsKLSAgbmV3IFVpbnQ4QXJyYXkoaW5zdEFNZW0uYnVmZmVyKS5m
b3JFYWNoKChfdmFsdWUsIGluZGV4LCBhcnJheSkgPT4gewotICAgIGFycmF5W2luZGV4XSA9IDA7
Ci0gIH0pOwotICBuZXcgVWludDhBcnJheShpbnN0Qk1lbS5idWZmZXIpLmZvckVhY2goKF92YWx1
ZSwgaW5kZXgsIGFycmF5KSA9PiB7Ci0gICAgYXJyYXlbaW5kZXhdID0gMHhmZjsKLSAgfSk7Ci0K
LSAgY29uc3QgdGFibGVJbmZvID0geyBpbml0aWFsOiAyLCBlbGVtZW50OiAiZnVuY3JlZiIgfTsK
LSAgY29uc3QgdGFibGUgPSBuZXcgV2ViQXNzZW1ibHkuVGFibGUodGFibGVJbmZvKTsKLQotICBj
b25zdCBpbnN0QSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSgKLSAgICBuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKAotICAgICAgaW5zdGFuY2VBQnVpbGRlci5XZWJBc3NlbWJseSgpLmdldCgpLAot
ICAgICksCi0gICAgLyppbXBvcnRPYmplY3QqLyB7Ci0gICAgICBpbXA6IHsKLSAgICAgICAgdGFi
bGU6IHRhYmxlLAotICAgICAgICBtZW1vcnk6IGluc3RBTWVtLAotICAgICAgfSwKLSAgICB9LAot
ICApOwotCi0gIGNvbnN0IGluc3RCID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKAotICAgIG5l
dyBXZWJBc3NlbWJseS5Nb2R1bGUoCi0gICAgICBpbnN0YW5jZUJCdWlsZGVyLldlYkFzc2VtYmx5
KCkuZ2V0KCksCi0gICAgKSwKLSAgICB7Ci0gICAgICAvKmltcG9ydE9iamVjdCovCi0gICAgICBp
bXA6IHsKLSAgICAgICAgdGFibGU6IHRhYmxlLAotICAgICAgICBtZW1vcnk6IGluc3RCTWVtLAot
ICAgICAgfSwKLSAgICB9LAotICApOwotCi0gIGNvbnN0IG1haW4gPSBuZXcgV2ViQXNzZW1ibHku
SW5zdGFuY2UoCi0gICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgKLSAgICAgIG1haW5CdWlsZGVy
LldlYkFzc2VtYmx5KCkuZ2V0KCksCi0gICAgKSwKLSAgICB7Ci0gICAgICAvKmltcG9ydE9iamVj
dCovCi0gICAgICBpbXA6IHsKLSAgICAgICAgdGFibGU6IHRhYmxlLAotICAgICAgICBpbnN0QV90
YWlsOiBpbnN0QS5leHBvcnRzWyJpbnN0QV90YWlsIl0sCi0gICAgICAgIGluc3RCX3RhaWw6IGlu
c3RCLmV4cG9ydHNbImluc3RCX3RhaWwiXSwKLSAgICAgIH0sCi0gICAgfSwKLSAgKTsKLQotICBj
b25zdCBzdGFtcCA9IDE7Ci0gIGNvbnN0IGV4cGVjdGVkID0gWzEsIDAsIDEsIC0xXTsKLSAgY29u
c3QgdmlhVGFibGVSZXN1bHQgPSBtYWluLmV4cG9ydHNbInZpYV90YWJsZSJdKHN0YW1wKTsKLSAg
Y29uc3QgdmlhSW1wb3J0UmVzdWx0ID0gbWFpbi5leHBvcnRzWyJ2aWFfaW1wb3J0Il0oc3RhbXAp
OwotICBpZiAodmVyYm9zZSkgewotICAgIHByaW50KHZpYVRhYmxlUmVzdWx0KTsKLSAgICBwcmlu
dCh2aWFJbXBvcnRSZXN1bHQpOwotICB9Ci0gIGFzc2VydC5lcSh2aWFUYWJsZVJlc3VsdCwgZXhw
ZWN0ZWQpOwotICBhc3NlcnQuZXEodmlhSW1wb3J0UmVzdWx0LCBleHBlY3RlZCk7Ci19OwotCi1j
b25zdCB0ZXN0VHJhbnNpdGl2ZUNsb3N1cmUgPSAoKSA9PiB7Ci0gIGlmICh2ZXJib3NlKSB7Ci0g
ICAgcHJpbnQoInRlc3RpbmcgdHJhbnNpdGl2ZSBjbG9zdXJlLi4uIik7Ci0gIH0KLQotICBjb25z
dCBjYWxsZWVPdXRzaWRlTW9kdWxlID0gMTsKLSAgY29uc3Qgc2lnbmF0dXJlID0geyBwYXJhbXM6
IFtdLCByZXQ6IFsiaTMyIl0gfTsKLQotICBjb25zdCBpbnN0QUJ1aWxkZXIgPSAobmV3IEJ1aWxk
ZXIoKSkKLSAgICAuVHlwZSgpLkVuZCgpCi0gICAgLkltcG9ydCgpCi0gICAgICAuRnVuY3Rpb24o
ImltcCIsICJmdW5jIiwgc2lnbmF0dXJlKQotICAgICAgLlRhYmxlKCJpbXAiLCAidGFibGUiLCB7
IGluaXRpYWw6IDEsIG1heGltdW06IDEsIGVsZW1lbnQ6ICJmdW5jcmVmIiB9KQotICAgIC5FbmQo
KQotICAgIC5GdW5jdGlvbigpLkVuZCgpCi0gICAgLkV4cG9ydCgpCi0gICAgICAuRnVuY3Rpb24o
ImNhbGxUYWlsQ2FsbE91dHNpZGVNb2R1bGUiKQotICAgICAgLkZ1bmN0aW9uKCJjYWxsVHJhbnNp
dGl2ZVRhaWxDYWxsT3V0c2lkZU1vZHVsZSIpCi0gICAgICAuRnVuY3Rpb24oImNhbGxUYWlsQ2Fs
bEluZGlyZWN0T3V0c2lkZU1vZHVsZSIpCi0gICAgICAuRnVuY3Rpb24oImNhbGxUcmFuc2l0aXZl
VGFpbENhbGxJbmRpcmVjdE91dHNpZGVNb2R1bGUiKQotICAgIC5FbmQoKQotICAgIC5Db2RlKCkK
LSAgICAgIC5GdW5jdGlvbigiY2FsbFRhaWxDYWxsT3V0c2lkZU1vZHVsZSIsIHNpZ25hdHVyZSkK
LSAgICAgICAgLkNhbGwoNykgLy8gY2FsbCB0YWlsQ2FsbE91dHNpZGVNb2R1bGUKLSAgICAgIC5F
bmQoKQotICAgICAgLkZ1bmN0aW9uKCJjYWxsVGFpbENhbGxJbmRpcmVjdE91dHNpZGVNb2R1bGUi
LCBzaWduYXR1cmUpCi0gICAgICAgIC5DYWxsKDgpIC8vIGNhbGwgdGFpbENhbGxJbmRpcmVjdE91
dHNpZGVNb2R1bGUKLSAgICAgIC5FbmQoKQotICAgICAgLkZ1bmN0aW9uKCJjYWxsVHJhbnNpdGl2
ZVRhaWxDYWxsT3V0c2lkZU1vZHVsZSIsIHNpZ25hdHVyZSkKLSAgICAgICAgLkNhbGwoNSkgLy8g
Y2FsbCB0cmFuc2l0aXZlVGFpbENhbGxPdXRzaWRlTW9kdWxlCi0gICAgICAuRW5kKCkKLSAgICAg
IC5GdW5jdGlvbigiY2FsbFRyYW5zaXRpdmVUYWlsQ2FsbEluZGlyZWN0T3V0c2lkZU1vZHVsZSIs
IHNpZ25hdHVyZSkKLSAgICAgICAgLkNhbGwoNikgLy8gY2FsbCB0cmFuc2l0aXZlVGFpbENhbGxP
dXRzaWRlTW9kdWxlCi0gICAgICAuRW5kKCkKLSAgICAgIC5GdW5jdGlvbigidHJhbnNpdGl2ZVRh
aWxDYWxsT3V0c2lkZU1vZHVsZSIsIHNpZ25hdHVyZSkKLSAgICAgICAgLlRhaWxDYWxsKDcpIC8v
IHRhaWwgY2FsbCB0YWlsQ2FsbE91dHNpZGVNb2R1bGUKLSAgICAgIC5FbmQoKQotICAgICAgLkZ1
bmN0aW9uKCJ0cmFuc2l0aXZlVGFpbENhbGxJbmRpcmVjdE91dHNpZGVNb2R1bGUiLCBzaWduYXR1
cmUpCi0gICAgICAgIC5UYWlsQ2FsbCg4KSAvLyB0YWlsIGNhbGwgdGFpbENhbGxPdXRzaWRlTW9k
dWxlCi0gICAgICAuRW5kKCkKLSAgICAgIC5GdW5jdGlvbigidGFpbENhbGxPdXRzaWRlTW9kdWxl
Iiwgc2lnbmF0dXJlKQotICAgICAgICAuVGFpbENhbGwoMCkgLy8gdGFpbCBjYWxsIG91dHNpZGUg
bW9kdWxlCi0gICAgICAuRW5kKCkKLSAgICAgIC5GdW5jdGlvbigidGFpbENhbGxJbmRpcmVjdE91
dHNpZGVNb2R1bGUiLCBzaWduYXR1cmUpCi0gICAgICAgIC5JMzJDb25zdCgwKQotICAgICAgICAu
VGFpbENhbGxJbmRpcmVjdCgwLCAwKSAvLyB0YWlsIGNhbGwgaW5kaXJlY3Qgb3V0c2lkZSBtb2R1
bGUKLSAgICAgIC5FbmQoKQotICAgIC5FbmQoKTsKLQotICBjb25zdCBpbnN0QkJ1aWxkZXIgPSAo
bmV3IEJ1aWxkZXIoKSkKLSAgICAuVHlwZSgpLkVuZCgpCi0gICAgLkZ1bmN0aW9uKCkuRW5kKCkK
LSAgICAuRXhwb3J0KCkKLSAgICAgIC5GdW5jdGlvbigiMCIpCi0gICAgLkVuZCgpCi0gICAgLkNv
ZGUoKQotICAgICAgLkZ1bmN0aW9uKCIwIiwgeyBwYXJhbXM6IFtdLCByZXQ6IFsiaTMyIl0gfSkK
LSAgICAgICAgLkkzMkNvbnN0KGNhbGxlZU91dHNpZGVNb2R1bGUpCi0gICAgICAuRW5kKCkKLSAg
ICAuRW5kKCk7Ci0KLSAgY29uc3QgdGFibGUgPSBuZXcgV2ViQXNzZW1ibHkuVGFibGUoewotICAg
IGluaXRpYWw6IDEsCi0gICAgbWF4aW11bTogMSwKLSAgICBlbGVtZW50OiAiZnVuY3JlZiIsCi0g
IH0pOwotCi0gIGNvbnN0IGJpbkEgPSBpbnN0QkJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsK
LSAgY29uc3QgbW9kdWxlQSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluQSk7Ci0gIGNvbnN0
IGluc3RCID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZUEpOwotICAxMDA7Ci0gIGNv
bnN0IGJpbkIgPSBpbnN0QUJ1aWxkZXIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKLSAgY29uc3QgbW9k
dWxlQiA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluQik7Ci0gIGNvbnN0IGluc3RBID0gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZUIsIHsKLSAgICBpbXA6IHsgZnVuYzogaW5zdEIu
ZXhwb3J0c1siMCJdLCB0YWJsZTogdGFibGUgfSwKLSAgfSk7Ci0KLSAgdGFibGUuc2V0KDAsIGlu
c3RCLmV4cG9ydHNbIjAiXSk7Ci0KLSAgYXNzZXJ0LmVxKGluc3RBLmV4cG9ydHNbImNhbGxUYWls
Q2FsbE91dHNpZGVNb2R1bGUiXSgpLCBjYWxsZWVPdXRzaWRlTW9kdWxlKTsKLSAgYXNzZXJ0LmVx
KAotICAgIGluc3RBLmV4cG9ydHNbImNhbGxUcmFuc2l0aXZlVGFpbENhbGxPdXRzaWRlTW9kdWxl
Il0oKSwKLSAgICBjYWxsZWVPdXRzaWRlTW9kdWxlLAotICApOwotICBhc3NlcnQuZXEoCi0gICAg
aW5zdEEuZXhwb3J0c1siY2FsbFRhaWxDYWxsSW5kaXJlY3RPdXRzaWRlTW9kdWxlIl0oKSwKLSAg
ICBjYWxsZWVPdXRzaWRlTW9kdWxlLAotICApOwotICBhc3NlcnQuZXEoCi0gICAgaW5zdEEuZXhw
b3J0c1siY2FsbFRyYW5zaXRpdmVUYWlsQ2FsbEluZGlyZWN0T3V0c2lkZU1vZHVsZSJdKCksCi0g
ICAgY2FsbGVlT3V0c2lkZU1vZHVsZSwKLSAgKTsKLX07Ci0KLWNvbnN0IHRlc3RTdGFja092ZXJm
bG93ID0gKCkgPT4gewotICBpZiAodmVyYm9zZSkKLSAgICBwcmludCgic3RhY2sgb3ZlcmZsb3cg
dGVzdC4uLiIpCi0gIGNvbnN0IGNhbGxlclNpZ25hdHVyZSA9IHR5cGVHZW5lcmF0b3IuY3JlYXRl
U2lnbmF0dXJlKDIsIDEsICJpNjQiKTsKLSAgY29uc3QgZG9SZXR1cm4gPSAwLCByZXR1cm5WYWx1
ZSA9IDAsCi0gICAgICAgIGRvUmVjdXJzaXZlVGFpbENhbGwgPSBkb1JldHVybiArIDEsIHJlY3Vy
c2l2ZVRhaWxDYWxsUmV0dXJuVmFsdWUgPSAtMSwKLSAgICAgICAgZG9UYWlsQ2FsbE9uY2UgID0g
ZG9SZWN1cnNpdmVUYWlsQ2FsbCArIDEsIHRhaWxDYWxsT25jZVJldHVyblZhbHVlID0gcmV0dXJu
VmFsdWUgKyAxLAotICAgICAgICBkb1RhaWxDYWxsR3Jvd1N0YWNrICA9IGRvVGFpbENhbGxPbmNl
ICsgMSwgIHRhaWxDYWxsR3Jvd1N0YWNrUmV0dXJuVmFsdWUgPSB0YWlsQ2FsbE9uY2VSZXR1cm5W
YWx1ZSArIDEKLQotICBsZXQgY29kZSA9IFtdCi0KLSAgY29tbWl0RnVuY3Rpb24oewotICAgIG5h
bWU6ICJncm93X3N0YWNrX3RoZW5fcmV0dXJuIiwKLSAgICBjb2RlOiAoYnVpbGRlcikgPT4gewot
ICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuRnVuY3Rpb24oImdyb3dfc3RhY2tfdGhlbl9yZXR1cm4i
LCBjYWxsZXJTaWduYXR1cmUpCi0gICAgICAgIC5CbG9jaygidm9pZCIsIChiKSA9PiB7IC8vIGNh
c2UgbkZyYW1lcyA8PSAwCi0gICAgICAgICAgYi5HZXRMb2NhbCgwKQotICAgICAgICAgICAgLkk2
NENvbnN0KGRvUmV0dXJuKQotICAgICAgICAgICAgLkk2NEd0UygpCi0gICAgICAgICAgICAuQnJJ
ZigwKQotICAgICAgICAgICAgLkJsb2NrKCJ2b2lkIiwgKGIpID0+IHsgLy8gY2FzZSArMSB0YWls
IHJlY3Vyc2lvbgotICAgICAgICAgICAgICBiLkdldExvY2FsKDEpCi0gICAgICAgICAgICAgICAg
Lkk2NENvbnN0KGRvUmVjdXJzaXZlVGFpbENhbGwpCi0gICAgICAgICAgICAgICAgLkk2NE5lKCkK
LSAgICAgICAgICAgICAgICAuQnJJZigwKQotICAgICAgICAgICAgICAgIC5JNjRDb25zdChkb1Jl
dHVybikKLSAgICAgICAgICAgICAgICAuU2V0TG9jYWwoMSkgLy8gZG9uJ3QgcmVjdXJzZSBpbiBu
ZXh0IGZyYW1lCi0gICAgICAgICAgICAgICAgLkk2NENvbnN0KHJlY3Vyc2l2ZVRhaWxDYWxsUmV0
dXJuVmFsdWUpCi0gICAgICAgICAgICAgICAgLlRlZUxvY2FsKDApOwotICAgICAgICAgICAgICBm
b3IgKGxldCBpID0gMTsgaSA8IGNhbGxlclNpZ25hdHVyZS5wYXJhbXMubGVuZ3RoOyBpKyspCi0g
ICAgICAgICAgICAgICAgYiA9IGIuR2V0TG9jYWwoaSk7Ci0gICAgICAgICAgICAgIHJldHVybiBi
LlRhaWxDYWxsKDApOwotICAgICAgICAgICAgfSkKLSAgICAgICAgICAgIC5CbG9jaygidm9pZCIs
IChiKSA9PiB7IC8vIGNhc2UgZ3JvdyBzdGFjayBieSBtdWx0aXBsZSB0YWlsIGNhbGwKLSAgICAg
ICAgICAgICAgYi5HZXRMb2NhbCgxKQotICAgICAgICAgICAgICAgIC5JNjRDb25zdChkb1RhaWxD
YWxsR3Jvd1N0YWNrKQotICAgICAgICAgICAgICAgIC5JNjROZSgpCi0gICAgICAgICAgICAgICAg
LkJySWYoMCk7Ci0gICAgICAgICAgICAgIGIgPSBwb3B1bGF0ZVN0YWNrKGIsIGNhbGxlclNpZ25h
dHVyZS5wYXJhbXMsIHRhaWxDYWxsR3Jvd1N0YWNrMVNpZ25hdHVyZS5wYXJhbXMpCi0gICAgICAg
ICAgICAgIHJldHVybiBiLkk2NENvbnN0KGRvVGFpbENhbGxHcm93U3RhY2spLlNldExvY2FsKDEp
LlRhaWxDYWxsKHRhaWxDYWxsR3Jvd1N0YWNrMS5pbmRleCkKLSAgICAgICAgICAgIH0pCi0gICAg
ICAgICAgICAuQmxvY2soInZvaWQiLCAoYikgPT4geyAvLyBjYXNlIGdyb3cgc3RhY2sgYnkgb25l
IHRhaWwgY2FsbAotICAgICAgICAgICAgICBiLkdldExvY2FsKDEpCi0gICAgICAgICAgICAgICAg
Lkk2NENvbnN0KGRvVGFpbENhbGxPbmNlKQotICAgICAgICAgICAgICAgIC5JNjROZSgpCi0gICAg
ICAgICAgICAgICAgLkJySWYoMCk7Ci0gICAgICAgICAgICAgIGIgPSBwb3B1bGF0ZVN0YWNrKGIs
IGNhbGxlclNpZ25hdHVyZS5wYXJhbXMsIHRhaWxDYWxsR3Jvd1N0YWNrMVNpZ25hdHVyZS5wYXJh
bXMpCi0gICAgICAgICAgICAgIHJldHVybiBiLkk2NENvbnN0KGRvVGFpbENhbGxPbmNlKS5TZXRM
b2NhbCgxKS5UYWlsQ2FsbCh0YWlsQ2FsbEdyb3dTdGFjazEuaW5kZXgpCi0gICAgICAgICAgICB9
KQotICAgICAgICAgICAgLkdldExvY2FsKDApIC8vIGVpdGhlciBSZXR1cm5WYWx1ZS90YWlsQ2Fs
bFJlY3Vyc2l2ZVJldHVyblZhbHVlCi0gICAgICAgICAgcmV0dXJuIGIuUmV0dXJuKCk7Ci0gICAg
ICAgIH0pIC8vIGNhc2UgbkZyYW1lcyA8PSAwCi0gICAgICAgIC5CbG9jaygiaTY0IiwgKGIpID0+
IHsgLy8gY2FzZSBuRnJhbWVzID4gMAotICAgICAgICAgIGIuR2V0TG9jYWwoMCkuSTY0Q29uc3Qo
MSkuSTY0U3ViKCk7Ci0gICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBjYWxsZXJTaWduYXR1
cmUucGFyYW1zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICBiID0gYi5HZXRMb2NhbChpKTsK
LSAgICAgICAgICB9Ci0gICAgICAgICAgcmV0dXJuIGIuQ2FsbCgwKS5SZXR1cm4oKTsgLy8gcmVj
dXJzZQotICAgICAgICB9KSAvLyBjYXNlID4gMAotICAgICAgICAuRW5kKCk7IC8vIEZ1bmN0aW9u
Ci0gICAgICByZXR1cm4gYnVpbGRlcjsKLSAgICB9LAotICB9LCBjb2RlKSAvLyBjb21taXRGdW5j
dGlvbgotCi0gIGNvbnN0IHRhaWxDYWxsR3Jvd1N0YWNrMVNpZ25hdHVyZSA9IHR5cGVHZW5lcmF0
b3IuY3JlYXRlU2lnbmF0dXJlKGlzMzJCaXRQbGF0Zm9ybSgpID8gMjAgOiAxMDAsIDEsICJpNjQi
KTsKLSAgY29uc3QgdGFpbENhbGxHcm93U3RhY2syU2lnbmF0dXJlID0gdHlwZUdlbmVyYXRvci5j
cmVhdGVTaWduYXR1cmUoMTAwMCwgMSwgImk2NCIpOwotCi0gIGNvbnN0IHRhaWxDYWxsR3Jvd1N0
YWNrMSA9IGNvbW1pdEZ1bmN0aW9uKHsKLSAgICBuYW1lOiAidGFpbF9jYWxsX2dyb3dfc3RhY2tf
MSIsCi0gICAgY29kZTogKGJ1aWxkZXIpID0+IHsKLSAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLkZ1
bmN0aW9uKCJ0YWlsX2NhbGxfZ3Jvd19zdGFja18xIiwgdGFpbENhbGxHcm93U3RhY2sxU2lnbmF0
dXJlKTsKLSAgICAgIHJldHVybiBidWlsZGVyLkJsb2NrKCJ2b2lkIiwgKGIpID0+IHsgLy8gY2Fz
ZSBjYWxsIHNtYWxsIGxlYWYKLSAgICAgICAgYi5HZXRMb2NhbCgxKQotICAgICAgICAgIC5JNjRD
b25zdChkb1RhaWxDYWxsT25jZSkgLy8gd2lsbCByZXR1cm4gaWYgd2Ugd2FudGVkIHRvIHRhaWwg
Y2FsbCBvbmNlCi0gICAgICAgICAgLkk2NEVxKCkKLSAgICAgICAgICAuQnJJZigwKQotICAgICAg
ICBiID0gcG9wdWxhdGVTdGFjayhiLCBjYWxsZXJTaWduYXR1cmUucGFyYW1zLCB0YWlsQ2FsbEdy
b3dTdGFjazFTaWduYXR1cmUucGFyYW1zKQotICAgICAgICByZXR1cm4gYi5UYWlsQ2FsbCh0YWls
Q2FsbEdyb3dTdGFjazIuaW5kZXgpOwotICAgICAgfSkuSTY0Q29uc3QodGFpbENhbGxPbmNlUmV0
dXJuVmFsdWUpLkVuZCgpCi0gICAgfSwKLSAgfSwgY29kZSk7Ci0KLSAgY29uc3QgdGFpbENhbGxH
cm93U3RhY2syID0gY29tbWl0RnVuY3Rpb24oewotICAgIG5hbWU6ICJ0YWlsX2NhbGxfZ3Jvd19z
dGFja18yIiwKLSAgICBjb2RlOiAoYnVpbGRlcikgPT4gewotICAgICAgYnVpbGRlciA9IGJ1aWxk
ZXIuRnVuY3Rpb24oInRhaWxfY2FsbF9ncm93X3N0YWNrXzIiLCB0YWlsQ2FsbEdyb3dTdGFjazFT
aWduYXR1cmUpOwotICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YWlsQ2FsbEdyb3dTdGFjazJT
aWduYXR1cmUucGFyYW1zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGJ1aWxkZXIgPSBidWlsZGVy
Lkk2NENvbnN0KGkpOwotICAgICAgfQotICAgICAgcmV0dXJuIGJ1aWxkZXIuVGFpbENhbGwobGVh
Zi5pbmRleCkuRW5kKCk7Ci0gICAgfSwKLSAgfSwgY29kZSk7Ci0KLSAgY29uc3QgbGVhZiA9IGNv
bW1pdEZ1bmN0aW9uKHsKLSAgICBuYW1lOiAibGVhZiIsCi0gICAgY29kZTogKGJ1aWxkZXIpID0+
IHsKLSAgICAgIHJldHVybiBidWlsZGVyLkZ1bmN0aW9uKCJsZWFmIiwgdGFpbENhbGxHcm93U3Rh
Y2syU2lnbmF0dXJlKQotICAgICAgICAuSTY0Q29uc3QodGFpbENhbGxHcm93U3RhY2tSZXR1cm5W
YWx1ZSkKLSAgICAgICAgLkVuZCgpOwotICAgIH0sCi0gIH0sIGNvZGUpOwotCi0gIGNvbnN0IGJ1
aWxkZXIgPSBjcmVhdGVCdWlsZGVyKHsKLSAgICBmdW5jOiBjb2RlLAotICAgIGV4cG9ydHM6IGNv
ZGUsCi0gICAgdXNlVGFpbENhbGw6IHRydWUsCi0gIH0pOwotCi0gIGNvbnN0IGluc3QgPSBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UoCi0gICAgbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShidWlsZGVy
LldlYkFzc2VtYmx5KCkuZ2V0KCkpLAotICApOwotCi0gIGNvbnN0IHBhcmFtcyA9IHR5cGVHZW5l
cmF0b3IuanNBcmdzRnJvbVdhc21QYXJhbXMoY2FsbGVyU2lnbmF0dXJlLnBhcmFtcyk7Ci0KLSAg
Y29uc3Qgb3ZlcmZsb3dzID0gKG5GcmFtZXMsIGRvT25SZXR1cm4sIGNhbGxiYWNrKSA9PiB7Ci0g
ICAgICBwYXJhbXNbMF0gPSB0eXBlR2VuZXJhdG9yLmpzQXJnRnJvbVdhc21UeXBlKG5GcmFtZXMs
ICJpNjQiKTsKLSAgICAgIHBhcmFtc1sxXSA9IHR5cGVHZW5lcmF0b3IuanNBcmdGcm9tV2FzbVR5
cGUoZG9PblJldHVybiwgImk2NCIpOwotICAgIHRyeSB7Ci0gICAgICBhc3NlcnQudGhyb3dzKAot
ICAgICAgICBpbnN0LmV4cG9ydHNbImdyb3dfc3RhY2tfdGhlbl9yZXR1cm4iXSwKLSAgICAgICAg
UmFuZ2VFcnJvciwKLSAgICAgICAgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiIs
Ci0gICAgICAgIC4uLnBhcmFtcywKLSAgICAgICk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAg
Y2FsbGJhY2soZSkKLSAgICB9Ci0gICAgfQotCi0gIGNvbnN0IHJldHVybnMgPSAobkZyYW1lcywg
ZG9PblJldHVybiwgdHJ5RnVuY3RvciwgY2FsbGJhY2spID0+IHsKLSAgICAgIHBhcmFtc1swXSA9
IHR5cGVHZW5lcmF0b3IuanNBcmdGcm9tV2FzbVR5cGUobkZyYW1lcywgImk2NCIpOwotICAgICAg
cGFyYW1zWzFdID0gdHlwZUdlbmVyYXRvci5qc0FyZ0Zyb21XYXNtVHlwZShkb09uUmV0dXJuLCAi
aTY0Iik7Ci0gICAgdHJ5IHsKLSAgICAgIHRyeUZ1bmN0b3IocGFyYW1zKTsKLSAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICBjYWxsYmFjayhlKTsKLSAgICB9Ci0gIH0KLQotICBjb25zdCB0ZXN0T3Zl
cmZsb3dzID0gKG5GcmFtZXMsIGRvT25SZXR1cm4sIG1lc3NhZ2UpID0+IHsKLSAgICAgIG92ZXJm
bG93cyhuRnJhbWVzLCBkb09uUmV0dXJuLCAoX2UpID0+IHsKLSAgICAgICAgdGhyb3cgYCR7bWVz
c2FnZX0gOiBleHBlY3RlZCB0byB0aHJvdyBidXQgcmV0dXJuc2AKLSAgICAgIH0pCi0gICAgICBp
ZiAodmVyYm9zZSkKLSAgICAgICAgcHJpbnQoYCR7bWVzc2FnZX0gdGhyb3dzYCkKLSAgICB9Ci0K
LSAgY29uc3QgdGVzdFJldHVybnMgPSAobkZyYW1lcywgZG9PblJldHVybiwgZXhwZWN0ZWQsIG1l
c3NhZ2UpID0+IHsKLSAgICAgIHJldHVybiByZXR1cm5zKG5GcmFtZXMsIGRvT25SZXR1cm4sIChf
cGFyYW1zKSA9PiB7Ci0gICAgICAgIGFzc2VydC5lcSgKLSAgICAgICAgICBpbnN0LmV4cG9ydHNb
Imdyb3dfc3RhY2tfdGhlbl9yZXR1cm4iXSguLi5fcGFyYW1zKSwKLSAgICAgICAgICB0eXBlR2Vu
ZXJhdG9yLmpzQXJnRnJvbVdhc21UeXBlKGV4cGVjdGVkLCAiaTY0IikKLSAgICAgICAgKQotICAg
ICAgICBpZiAodmVyYm9zZSkKLSAgICAgICAgICBwcmludChgJHttZXNzYWdlfSByZXR1cm5zYCkK
LSAgICAgIH0sCi0gICAgICAgIChlKSA9PiB7Ci0gICAgICAgIHRocm93IGAke21lc3NhZ2V9IDog
ZXhwZWN0ZWQgdG8gcmV0dXJuIGJ1dCB0aHJvd3MgJHtlfWAKLSAgICAgIH0pCi0gICAgfQotCi0g
IGxldCBtYXhGcmFtZXMgPSAxMDAwOwotCi0gIGxldCBoYXNPdmVyZmxvd24gPSAwOwotICB3aGls
ZSAoaGFzT3ZlcmZsb3duID09IDAgJiYgbWF4RnJhbWVzIDwgTnVtYmVyLk1BWF9TQUZFX0lOVEVH
RVIpIHsKLSAgICBtYXhGcmFtZXMgKz0gMTY7Ci0gICAgcmV0dXJucyhtYXhGcmFtZXMsIGRvUmV0
dXJuLCAoKSA9PiB7Ci0gICAgICBpbnN0LmV4cG9ydHNbImdyb3dfc3RhY2tfdGhlbl9yZXR1cm4i
XSguLi5wYXJhbXMpOwotICAgIH0sCi0gICAgICAoZSkgPT4gewotICAgICAgICBhc3NlcnQuaW5z
dGFuY2VvZihlLCBSYW5nZUVycm9yKTsKLSAgICAgIGhhc092ZXJmbG93biA9IDE7Ci0gICAgfSkK
LSAgfQotCi0gIGxldCBoYXNSZXR1cm5lZCA9IDA7Ci0gIHdoaWxlIChoYXNSZXR1cm5lZCA9PSAw
ICYmIG1heEZyYW1lcyA+IDApIHsKLSAgICByZXR1cm5zKG1heEZyYW1lcywgZG9SZXR1cm4sICgp
ID0+IHsKLSAgICAgIGluc3QuZXhwb3J0c1siZ3Jvd19zdGFja190aGVuX3JldHVybiJdKC4uLnBh
cmFtcyk7Ci0gICAgICBoYXNSZXR1cm5lZCA9IDE7Ci0gICAgfSwgKGUpID0+IHsKLSAgICAgIGFz
c2VydC5pbnN0YW5jZW9mKGUsIFJhbmdlRXJyb3IpOwotICAgIH0pCi0gICAgbWF4RnJhbWVzIC09
IDE7Ci0gIH0KLQotICBhc3NlcnQudHJ1dGh5KG1heEZyYW1lcyA+IDEpCi0KLSAgaWYgKHZlcmJv
c2UpCi0gICAgcHJpbnQobWF4RnJhbWVzICsgMSwgIiBmcmFtZXMgdGhyb3dzIikKLQotICB0ZXN0
UmV0dXJucyhtYXhGcmFtZXMsIGRvUmV0dXJuLCByZXR1cm5WYWx1ZSwgIm1heEZyYW1lcyIpOwot
Ci0gIHRlc3RSZXR1cm5zKG1heEZyYW1lcywgZG9SZWN1cnNpdmVUYWlsQ2FsbCwgcmVjdXJzaXZl
VGFpbENhbGxSZXR1cm5WYWx1ZSwgIm1heEZyYW1lcyB0aGVuIHRhaWwgcmVjdXJzZSIpOwotCi0g
IHRlc3RSZXR1cm5zKG1heEZyYW1lcywgZG9UYWlsQ2FsbE9uY2UsIHRhaWxDYWxsT25jZVJldHVy
blZhbHVlLCAibWF4RnJhbWVzIHRoZW4gb25lIHRhaWwgY2FsbCIpOwotCi0gIHRlc3RPdmVyZmxv
d3MobWF4RnJhbWVzLCBkb1RhaWxDYWxsR3Jvd1N0YWNrLCAibWF4RnJhbWVzIHRoZW4gbXVsdGlw
bGUgdGFpbCBjYWxscyB3aXRoIGluY3JlYXNpbmcgc3RhY2siKTsKLX07Ci0KLQotdGVzdFdpdGhp
bk1vZHVsZSgpOwotdGVzdEFjcm9zc01vZHVsZXMoKTsKLXRlc3RFeGNlcHRpb25zKCk7Ci10ZXN0
SlNJbXBvcnQoKTsKLXRlc3RUcmFuc2l0aXZlQ2xvc3VyZSgpOwotdGVzdFN0YWNrT3ZlcmZsb3co
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS93YXNtLmpzb24gYi9KU1Rlc3RzL3dhc20vd2Fz
bS5qc29uCmluZGV4IGI1YzYzOTVhYTQ5Zi4uODhlNzdhY2VhMGE3IDEwMDY0NAotLS0gYS9KU1Rl
c3RzL3dhc20vd2FzbS5qc29uCisrKyBiL0pTVGVzdHMvd2FzbS93YXNtLmpzb24KQEAgLTEwMiw4
ICsxMDIsNiBAQAogICAgICAgICAiZGF0YS5kcm9wIjogICAgICAgICAgIHsgImNhdGVnb3J5Ijog
ImV4dHRhYmxlIiwgICAidmFsdWUiOiAgMjUyLCAicmV0dXJuIjogW10sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAic2VnbWVudF9pbmRleCIsICAidHlwZSI6ICJ2YXJ1
aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogInNocmlua3MgdGhlIHNpemUgb2YgdGhlIHNlZ21lbnQgdG8gemVybyIsICJl
eHRlbmRlZE9wIjogOSB9LAogICAgICAgICAiY2FsbCI6ICAgICAgICAgICAgICAgIHsgImNhdGVn
b3J5IjogImNhbGwiLCAgICAgICAidmFsdWUiOiAgMTYsICJyZXR1cm4iOiBbImNhbGwiXSwgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6
ICJ2YXJ1aW50MzIifV0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogImNhbGwgYSBmdW5jdGlvbiBieSBpdHMgaW5kZXgiIH0sCiAgICAg
ICAgICJjYWxsX2luZGlyZWN0IjogICAgICAgeyAiY2F0ZWdvcnkiOiAiY2FsbCIsICAgICAgICJ2
YWx1ZSI6ICAxNywgInJldHVybiI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgICAi
cGFyYW1ldGVyIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAiaW1tZWRpYXRlIjog
W3sibmFtZSI6ICJ0eXBlX2luZGV4IiwgICAgICJ0eXBlIjogInZhcnVpbnQzMiJ9LCB7Im5hbWUi
OiAidGFibGVfaW5kZXgiLCJ0eXBlIjogInZhcnVpbnQzMiJ9XSwiZGVzY3JpcHRpb24iOiAiY2Fs
bCBhIGZ1bmN0aW9uIGluZGlyZWN0IHdpdGggYW4gZXhwZWN0ZWQgc2lnbmF0dXJlIiB9LAotICAg
ICAgICAidGFpbF9jYWxsIjogICAgICAgICAgIHsgImNhdGVnb3J5IjogImNhbGwiLCAgICAgICAi
dmFsdWUiOiAgMTgsICJyZXR1cm4iOiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICAg
InBhcmFtZXRlciI6IFsiY2FsbCJdLCAgICAgICAgICAgICAgICAgICAgICAgImltbWVkaWF0ZSI6
IFt7Im5hbWUiOiAiZnVuY3Rpb25faW5kZXgiLCAidHlwZSI6ICJ2YXJ1aW50MzIifV0sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogInRh
aWwgY2FsbCBhIGZ1bmN0aW9uIGJ5IGl0cyBpbmRleCIgfSwKLSAgICAgICAgInRhaWxfY2FsbF9p
bmRpcmVjdCI6ICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDE5LCAicmV0
dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBbImNh
bGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogInR5cGVf
aW5kZXgiLCAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJ0YWJsZV9pbmRleCIs
InR5cGUiOiAidmFydWludDMyIn1dLCJkZXNjcmlwdGlvbiI6ICJ0YWlsIGNhbGwgYSBmdW5jdGlv
biBpbmRpcmVjdCB3aXRoIGFuIGV4cGVjdGVkIHNpZ25hdHVyZSIgfSwKICAgICAgICAgImNhbGxf
cmVmIjogICAgICAgICAgICB7ICJjYXRlZ29yeSI6ICJjYWxsIiwgICAgICAgInZhbHVlIjogIDIw
LCAicmV0dXJuIjogWyJjYWxsIl0sICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIi
OiBbImNhbGwiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbXSwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJjYWxsIGEgZnVuY3Rp
b24gcmVmZXJlbmNlIiB9LAogICAgICAgICAiaTMyLmxvYWQ4X3MiOiAgICAgICAgIHsgImNhdGVn
b3J5IjogIm1lbW9yeSIsICAgICAidmFsdWUiOiAgNDQsICJyZXR1cm4iOiBbImkzMiJdLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciI6IFsiYWRkciJdLCAgICAgICAgICAgICAg
ICAgICAgICAgImltbWVkaWF0ZSI6IFt7Im5hbWUiOiAiZmxhZ3MiLCAgICAgICAgICAidHlwZSI6
ICJ2YXJ1aW50MzIifSwgeyJuYW1lIjogIm9mZnNldCIsICAgInR5cGUiOiAidmFydWludDMyIn1d
LCAiZGVzY3JpcHRpb24iOiAibG9hZCBmcm9tIG1lbW9yeSIgfSwKICAgICAgICAgImkzMi5sb2Fk
OF91IjogICAgICAgICB7ICJjYXRlZ29yeSI6ICJtZW1vcnkiLCAgICAgInZhbHVlIjogIDQ1LCAi
cmV0dXJuIjogWyJpMzIiXSwgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJhbWV0ZXIiOiBb
ImFkZHIiXSwgICAgICAgICAgICAgICAgICAgICAgICJpbW1lZGlhdGUiOiBbeyJuYW1lIjogImZs
YWdzIiwgICAgICAgICAgInR5cGUiOiAidmFydWludDMyIn0sIHsibmFtZSI6ICJvZmZzZXQiLCAg
ICJ0eXBlIjogInZhcnVpbnQzMiJ9XSwgImRlc2NyaXB0aW9uIjogImxvYWQgZnJvbSBtZW1vcnki
IH0sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>