<?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>231868</bug_id>
          
          <creation_ts>2021-10-16 14:54:34 -0700</creation_ts>
          <short_desc>[webkitperl] Stop using LoadAsModule.pm</short_desc>
          <delta_ts>2022-04-26 01:34:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=74836</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=206901</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=239762</see_also>
          <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>231869</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>ap</cc>
    
    <cc>basuke</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jbedard</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1805309</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-10-16 14:54:34 -0700</bug_when>
    <thetext>It just wrong to use script as module. It should be separated as a module if there&apos;re subroutines to be tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805400</commentid>
    <comment_count>1</comment_count>
      <attachid>441543</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-10-17 12:34:20 -0700</bug_when>
    <thetext>Created attachment 441543
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805403</commentid>
    <comment_count>2</comment_count>
      <attachid>441545</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-10-17 12:42:38 -0700</bug_when>
    <thetext>Created attachment 441545
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805404</commentid>
    <comment_count>3</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-10-17 12:45:47 -0700</bug_when>
    <thetext>With this change, most of the warnings are removed when test webkitperl.

› Tools/Scripts/test-webkitperl
Tools/Scripts/webkitperl/auto-version_unittest/autoVersionTests.pl ................................. ok
Tools/Scripts/webkitperl/auto-version_unittest/versionStampTests.pl ................................ ok
Tools/Scripts/webkitperl/filter-build-webkit_unittest/shouldIgnoreLine_unittests.pl ................ ok
Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/extractLineRangeBeforeAndAfterChange.pl ........ ok
Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/fetchRadarURLFromBugXMLData.pl ................. ok
Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/filenameWithParentheses.pl ..................... ok
Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/generateFunctionLists.pl ....................... ok
Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl ............................ ok
Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl ............................... ok
Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl ........................... ok
Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl ........................... ok
Tools/Scripts/webkitperl/test262_unittest/test262-runner-tests.pl .................................. ok
Tools/Scripts/webkitperl/VCSUtils_unittest/decodeGitBinaryPatch.pl ................................. ok
Tools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl .................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatchThenSetChangeLogDateAndReviewer.pl ..... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/fixSVNPatchForAdditionWithHistory.pl .................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/generatePatchCommand.pl ................................. ok
Tools/Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl ...................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseChunkRange.pl ...................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl ............................................ ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl ...................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffStartLine.pl ................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl ............................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseFirstEOL.pl ........................................ ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl ................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl ........................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl ................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl ................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl ..................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl ................................ ok
Tools/Scripts/webkitperl/VCSUtils_unittest/parseUnifiedDiffHeader.pl ............................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/prepareParsedPatch.pl ................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl ............................................ ok
Tools/Scripts/webkitperl/VCSUtils_unittest/runCommand.pl ........................................... 1/3 Can&apos;t exec &quot;/usr/bin/non-existent-command&quot;: No such file or directory at /Users/basuke/work/WebKit/Tools/Scripts/VCSUtils.pm line 2433.
Tools/Scripts/webkitperl/VCSUtils_unittest/runCommand.pl ........................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl ...................................... ok
Tools/Scripts/webkitperl/VCSUtils_unittest/setChangeLogDateAndReviewer.pl .......................... ok
Tools/Scripts/webkitperl/webkitdirs_unittest/appendToEnvironmentVariableList.pl .................... ok
Tools/Scripts/webkitperl/webkitdirs_unittest/availableXcodeSDKS.pl ................................. ok
Tools/Scripts/webkitperl/webkitdirs_unittest/checkForArgumentAndRemoveFromArrayRef.pl .............. ok
Tools/Scripts/webkitperl/webkitdirs_unittest/checkForArgumentAndRemoveFromArrayRefGettingValue.pl .. ok
Tools/Scripts/webkitperl/webkitdirs_unittest/extractNonMacOSHostConfiguration.pl ................... ok
Tools/Scripts/webkitperl/webkitdirs_unittest/prependToEnvironmentVariableList.pl ................... ok
Tools/Scripts/webkitperl/webkitdirs_unittest/splitVersion.pl ....................................... ok
All tests successful.
Files=43, Tests=710, 11 wallclock secs ( 0.06 usr  0.05 sys +  2.45 cusr  0.74 csys =  3.30 CPU)
Result: PASS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805405</commentid>
    <comment_count>4</comment_count>
      <attachid>441546</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-10-17 13:00:34 -0700</bug_when>
    <thetext>Created attachment 441546
PATCH

Added missing copyright header</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805621</commentid>
    <comment_count>5</comment_count>
      <attachid>441617</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-10-18 09:39:58 -0700</bug_when>
    <thetext>Created attachment 441617
Stop using keyword-like usage of subroutine</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805641</commentid>
    <comment_count>6</comment_count>
      <attachid>441622</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2021-10-18 10:30:06 -0700</bug_when>
    <thetext>Created attachment 441622
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805687</commentid>
    <comment_count>7</comment_count>
      <attachid>441622</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-10-18 12:48:40 -0700</bug_when>
    <thetext>Comment on attachment 441622
Fix

Should be fine on Apple Internal configurations too, these scripts already had webkitperl dependencies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805716</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-18 14:17:09 -0700</bug_when>
    <thetext>Committed r284399 (243175@main): &lt;https://commits.webkit.org/243175@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 441622.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805717</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-18 14:18:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/84387249&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1805809</commentid>
    <comment_count>10</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2021-10-18 17:48:24 -0700</bug_when>
    <thetext>Reverted r284399 for reason:

Breaks commit message generation

Committed r284419 (243187@main): &lt;https://commits.webkit.org/243187@main&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441543</attachid>
            <date>2021-10-17 12:34:20 -0700</date>
            <delta_ts>2021-10-17 12:42:38 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>160717</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMWQ2
ZmJjMGFiYTcuLjQ4MmIxY2EyZjQ4MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDIxLTEwLTE3ICBCYXN1a2UgU3V6
dWtpICA8YmFzdWtlLnN1enVraUBzb255LmNvbT4KKworICAgICAgICBbd2Via2l0cGVybF0gU3Rv
cCB1c2luZyBMb2FkQXNNb2R1bGUucG0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIzMTg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0OgorICAgICAgICAo
c2V0T3V0cHV0Rm9ybWF0T3B0aW9uKToKKyAgICAgICAgKHNob3VsZFNob3dTdWJzZXF1ZW50TGlu
ZSk6IERlbGV0ZWQuCisgICAgICAgIChzaG91bGRJZ25vcmVMaW5lKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nOgorICAgICAgICAoZ2VuZXJhdGVGdW5jdGlv
bkxpc3RzKToKKyAgICAgICAgKGZldGNoQnVnWE1MRGF0YSk6CisgICAgICAgIChvcGVuQ2hhbmdl
TG9ncyk6CisgICAgICAgIChtZXRob2RfZGVjbF90b19zZWxlY3Rvcik6CisgICAgICAgIChkaWZm
Q29tbWFuZCk6CisgICAgICAgIChzdGF0dXNDb21tYW5kKToKKyAgICAgICAgKHByb3BlcnR5Q2hh
bmdlRGVzY3JpcHRpb24pOgorICAgICAgICAobm9ybWFsaXplTGluZUVuZGluZ3MpOgorICAgICAg
ICAoYWN0dWFsbHlHZW5lcmF0ZUZ1bmN0aW9uTGlzdHMpOiBEZWxldGVkLgorICAgICAgICAoY29t
cHV0ZU1vZGlmaWVkRnVuY3Rpb25zKTogRGVsZXRlZC4KKyAgICAgICAgKGZldGNoQnVnRGVzY3Jp
cHRpb25Gcm9tQnVnWE1MRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChmZXRjaFJhZGFyVVJMRnJv
bUJ1Z1hNTERhdGEpOiBEZWxldGVkLgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfY3BwKTog
RGVsZXRlZC4KKyAgICAgICAgKGRlbGV0ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2VzX2Zvcl9jcHAp
OiBEZWxldGVkLgorICAgICAgICAoaXNfZnVuY3Rpb25faW5fbmFtZXNwYWNlKTogRGVsZXRlZC4K
KyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YSk6IERlbGV0ZWQuCisg
ICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmFzY3JpcHQpOiBEZWxldGVk
LgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9wZXJsKTogRGVsZXRlZC4K
KyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcHl0aG9uKTogRGVsZXRlZC4K
KyAgICAgICAgKGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKTogRGVsZXRlZC4KKyAg
ICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jfc3dpZnQpOiBEZWxldGVkLgorICAg
ICAgICAocGFyc2VTd2lmdEZ1bmN0aW9uQXJncyk6IERlbGV0ZWQuCisgICAgICAgIChhdHRyaWJ1
dGVDb21tYW5kKTogRGVsZXRlZC4KKyAgICAgICAgKGV4dHJhY3RMaW5lUmFuZ2VBZnRlckNoYW5n
ZSk6IERlbGV0ZWQuCisgICAgICAgIChleHRyYWN0TGluZVJhbmdlQmVmb3JlQ2hhbmdlKTogRGVs
ZXRlZC4KKyAgICAgICAgKGRlY29kZUVudGl0aWVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3J1bi1sZWFrczoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAocmVtb3ZlTWF0Y2hpbmdS
ZWNvcmRzKToKKyAgICAgICAgKHJ1bkxlYWtzKTogRGVsZXRlZC4KKyAgICAgICAgKHBhcnNlTGVh
a3NPdXRwdXQpOiBEZWxldGVkLgorICAgICAgICAocmVwb3J0RXJyb3IpOiBEZWxldGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0ZGlycy5wbToKKyAgICAgICAgKGRldGVybWluZUJhc2VQcm9k
dWN0RGlyKToKKyAgICAgICAgKGRldGVybWluZUN1cnJlbnRTVk5SZXZpc2lvbik6CisgICAgICAg
IChjaGRpcldlYktpdCk6CisgICAgICAgIChkZXRlcm1pbmVTb3VyY2VEaXIpOiBEZWxldGVkLgor
ICAgICAgICAoc2V0U291cmNlRGlyKTogRGVsZXRlZC4KKyAgICAgICAgKHNvdXJjZURpcik6IERl
bGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0xvYWRBc01vZHVsZS5wbTogUmVt
b3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvYnVpbGQvb3V0cHV0LnBtOiBBZGRl
ZC4KKyAgICAgICAgKHNob3VsZFNob3dTdWJzZXF1ZW50TGluZSk6CisgICAgICAgIChzaG91bGRJ
Z25vcmVMaW5lKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvY2hhbmdlbG9nLnBtOiBD
b3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nLgorICAgICAgICAoYWN0
dWFsbHlHZW5lcmF0ZUZ1bmN0aW9uTGlzdHMpOgorICAgICAgICAoZXh0cmFjdExpbmVSYW5nZUFm
dGVyQ2hhbmdlKToKKyAgICAgICAgKGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UpOgorICAg
ICAgICAoYXR0cmlidXRlQ29tbWFuZCk6CisgICAgICAgIChmZXRjaEJ1Z0Rlc2NyaXB0aW9uRnJv
bUJ1Z1hNTERhdGEpOgorICAgICAgICAoZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxEYXRhKToKKyAg
ICAgICAgKGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucyk6CisgICAgICAgIChnZXRfZnVuY3Rpb25f
bGluZV9yYW5nZXMpOgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAp
OgorICAgICAgICAoZGVsZXRlX25hbWVzcGFjZXNfZnJvbV9yYW5nZXNfZm9yX2NwcCk6CisgICAg
ICAgIChpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UpOgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xp
bmVfcmFuZ2VzX2Zvcl9qYXZhKToKKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19m
b3JfamF2YXNjcmlwdCk6CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3Bl
cmwpOgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRob24pOgorICAg
ICAgICAoZ2V0X3NlbGVjdG9yX2xpbmVfcmFuZ2VzX2Zvcl9jc3MpOgorICAgICAgICAoZ2V0X2Z1
bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCk6CisgICAgICAgIChwYXJzZVN3aWZ0RnVuY3Rp
b25BcmdzKToKKyAgICAgICAgKGRlY29kZUVudGl0aWVzKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHBlcmwvZGlycy5wbTogQWRkZWQuCisgICAgICAgIChzb3VyY2VEaXIpOgorICAgICAgICAo
c2V0U291cmNlRGlyKToKKyAgICAgICAgKGRldGVybWluZVNvdXJjZURpcik6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRwZXJsL2ZpbHRlci1idWlsZC13ZWJraXRfdW5pdHRlc3Qvc2hvdWxkSWdu
b3JlTGluZV91bml0dGVzdHMucGw6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2xlYWtz
LnBtOiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1sZWFrcy4KKyAgICAgICAgKHJ1bkxl
YWtzKToKKyAgICAgICAgKHBhcnNlTGVha3NPdXRwdXQpOgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9leHRyYWN0TGluZVJhbmdlQmVmb3Jl
QW5kQWZ0ZXJDaGFuZ2UucGw6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUt
Q2hhbmdlTG9nX3VuaXR0ZXN0L2ZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YS5wbDoKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZmlsZW5h
bWVXaXRoUGFyZW50aGVzZXMucGw6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBh
cmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rpb25MaXN0cy5wbDoKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvcGFyc2VyX3Vu
aXR0ZXN0cy5wbDoKKyAgICAgICAgKGNvbnZlcnRBYnNvbHV0ZVBhdGhUb1JlbGF0aXZlVW5peFBh
dGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVu
LWxlYWtzLXJlcG9ydC12MS4wLnBsOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9ydW4t
bGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbDoKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIu
MC1vbGQucGw6CisKIDIwMjEtMTAtMTUgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBoYW5kbGUgUHJvbWlzZSBvYmplY3RzIHJldHVy
bmVkIGZyb20gZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQt
d2Via2l0CmluZGV4IGZjMmE1YzRhOGViZi4uNTMwMzFkYjM0MWJmIDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9maWx0ZXIt
YnVpbGQtd2Via2l0CkBAIC0zMyw2ICszMyw3IEBAIHVzZSBGaW5kQmluOwogdXNlIGxpYiAkRmlu
ZEJpbjo6QmluOwogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBWQ1NVdGlsczsKK3VzZSB3ZWJraXRw
ZXJsOjpidWlsZDo6b3V0cHV0IHF3KHNob3VsZElnbm9yZUxpbmUgJHBsYXRmb3JtKTsKIAogdXNl
IGNvbnN0YW50IHsKICAgICBTVFlMRV9QTEFJTiA9PiAwLApAQCAtNjYsNyArNjcsNiBAQCBIVE1M
Rk9PVEVSCiBzdWIgcHJpbnRMaW5lKCQkKTsKIHN1YiBzZXRMb2dmaWxlT3B0aW9uKCQkKTsKIHN1
YiBzZXRPdXRwdXRGb3JtYXRPcHRpb24oJCQpOwotc3ViIHNob3VsZElnbm9yZUxpbmUoJCQpOwog
c3ViIHVzYWdlQW5kRXhpdCgpOwogCiAjIERlZmluZWQgaW4gVkNTVXRpbHMuCkBAIC03NCw3ICs3
NCw2IEBAIHN1YiBwb3NzaWJseUNvbG9yZWQoJCQpOwogCiAjIEdsb2JhbCB2YXJpYWJsZXMgdXNl
ZCBvbmx5IGluIGdsb2JhbCBzY29wZS4KIG15ICRvdXRwdXRQYXRoID0gIiZTVERPVVQiOwotbXkg
JHBsYXRmb3JtID0gIm1hYyI7CiBteSAkc2hvd0hlbHA7CiAKICMgR2xvYmFsIHZhcmlhYmxlcyB1
c2VkIGluIGdsb2JhbCBhbmQgc3Vicm91dGluZSBzY29wZS4KQEAgLTgyLDggKzgxLDYgQEAgb3Vy
ICRsb2dVbmZpbHRlcmVkT3V0cHV0Owogb3VyICRvdXRwdXRGb3JtYXQgPSAidGV4dCI7CiBvdXIg
JHVuZmlsdGVyZWRPdXRwdXRQYXRoID0gImJ1aWxkLmxvZyI7CiBvdXIgJHVzZUNvbG9yID0gLXQg
U1RET1VUOwotb3VyICRpbkVudGl0bGVtZW50cyA9IDA7Ci1vdXIgJGluRGV2aWNlUHJlcGFyYXRp
b25XYXJuaW5ncyA9IDA7CiAKIHN1YiB1c2FnZUFuZEV4aXQoKQogewpAQCAtMjc2LDEyNyArMjcz
LDMgQEAgc3ViIHNldE91dHB1dEZvcm1hdE9wdGlvbigkJCkKICAgICB9CiAgICAgJG91dHB1dEZv
cm1hdCA9ICR2YWx1ZTsKIH0KLQotc3ViIHNob3VsZFNob3dTdWJzZXF1ZW50TGluZSgkKQotewot
ICAgIG15ICgkbGluZSkgPSBAXzsKLQotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9yZWZlcmVu
Y2VkIGZyb206JC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyhub3RlOnxlcnJvcjopLzsK
LQotICAgIHJldHVybiAwOwotfQotCi1zdWIgc2hvdWxkSWdub3JlTGluZSgkJCkKLXsKLSAgICBt
eSAoJHByZXZpb3VzTGluZSwgJGxpbmUpID0gQF87Ci0KLSAgICBpZiAoJGxpbmUgPX4gL15FbnRp
dGxlbWVudHM6JC8pIHsKLSAgICAgICAgJGluRW50aXRsZW1lbnRzID0gMTsKLSAgICAgICAgcmV0
dXJuIDEKLSAgICB9Ci0KLSAgICBpZiAoJGluRW50aXRsZW1lbnRzKSB7Ci0gICAgICAgICRpbkVu
dGl0bGVtZW50cyA9IDAgaWYgJGxpbmUgPX4gL159JC87Ci0gICAgICAgIHJldHVybiAxCi0gICAg
fQotCi0gICAgIyBpUGhvbmUgcHJlcGFyYXRpb24gZXJyb3JzIGFsd2F5cyBzdGFydCBhbmQgZW5k
IHdpdGggbGluZXMgY29udGFpbmluZyAnaVBob25lQ29ubmVjdDonLgotICAgIGlmICgkaW5EZXZp
Y2VQcmVwYXJhdGlvbldhcm5pbmdzKSB7Ci0gICAgICAgICRpbkRldmljZVByZXBhcmF0aW9uV2Fy
bmluZ3MgPSAwIGlmICRsaW5lID1+IC89PSBFTkQ6IFVuZGVybHlpbmcgZGV2aWNlIHByZXBhcmF0
aW9uIHdhcm5pbmdzID09LzsKLSAgICAgICAgcmV0dXJuIDEKLSAgICB9Ci0KLSAgICBpZiAoJGxp
bmUgPX4gL2lQaG9uZUNvbm5lY3Q6LykgewotICAgICAgICAkaW5EZXZpY2VQcmVwYXJhdGlvbldh
cm5pbmdzID0gMTsKLSAgICAgICAgcmV0dXJuIDEKLSAgICB9Ci0KLSAgICByZXR1cm4gMSBpZiAk
bGluZSA9fiAvXlxzKiQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eQ29tbWFuZCBsaW5l
IGludm9jYXRpb246LzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkJ1aWxkIHNldHRpbmdz
IGZyb20gY29tbWFuZCBsaW5lOi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15Vc2VyIGRl
ZmF1bHRzIGZyb20gY29tbWFuZCBsaW5lOi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15Q
cmVwYXJlIGJ1aWxkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkJ1aWxkIHN5c3RlbSBp
bmZvcm1hdGlvbi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBQbGFubmluZyBi
dWlsZC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBDb25zdHJ1Y3RpbmcgYnVp
bGQgZGVzY3JpcHRpb24vOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogQnVpbGQg
ZGVzY3JpcHRpb24gKGNvbnN0cnVjdGVkfGxvYWRlZCkgaW4gLiovOwotICAgIHJldHVybiAxIGlm
ICRsaW5lID1+IC9ebm90ZTogVXNpbmcgYnVpbGQgZGVzY3JpcHRpb24gLiovOwotICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ebm90ZTogVXNpbmcgZWFnZXIgY29tcGlsYXRpb24vOwotICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogRXhlY3V0aW9uIHBvbGljeSBleGNlcHRpb24gcmVn
aXN0cmF0aW9uIGZhaWxlZCBhbmQgd2FzIHNraXBwZWQ6IEVycm9yIERvbWFpbj1OU1BPU0lYRXJy
b3JEb21haW4gQ29kZT0xICJPcGVyYXRpb24gbm90IHBlcm1pdHRlZCIvOwotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9ebm90ZTogZGV0ZWN0ZWQgZW5jb2Rpbmcgb2YgaW5wdXQgZmlsZSBhcyBV
bmljb2RlIFwoLipcKS87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL21ha2UoXFtcZCtcXSk/
OiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkph
dmFTY3JpcHRDb3JlXC9jcmVhdGVfaGFzaF90YWJsZS87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL0phdmFTY3JpcHRDb3JlLmZyYW1ld29ya1wvUHJpdmF0ZUhlYWRlcnNcL2NyZWF0ZV9oYXNo
X3RhYmxlLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkphdmFTY3JpcHRDb3JlXC9wY3Jl
XC9kZnRhYmxlcy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15DcmVhdGluZyBoYXNodGFi
bGUgZm9yIC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15Xcm90ZSBvdXRwdXQgdG8gLzsK
LSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVORE9DVU1FTlRFRDogLzsKLSAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvbGlidG9vbC4qaGFzIG5vIHN5bWJvbHMvOwotICAgIHJldHVybiAxIGlm
ICRsaW5lID1+IC9eIyBMb3dlciBjYXNlIGFsbCB0aGUgdmFsdWVzLCBhcyBDU1MgdmFsdWVzIGFy
ZSBjYXNlLWluc2Vuc2l0aXZlJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15pZiBzb3J0
IC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3NldC13ZWJraXQtY29uZmlndXJhdGlvbi87
Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15idWlsZGluZyBmaWxlIGxpc3QvOwotICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eXC5cLyQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9e
XFMrXC5oJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15cUytcLyQvOwotICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ec2VudCBcZCsgYnl0ZXMvOwotICAgIHJldHVybiAxIGlmICRsaW5l
ID1+IC9edG90YWwgc2l6ZSBpcy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL09uZSBvZiB0
aGUgdHdvIHdpbGwgYmUgdXNlZFwuIFdoaWNoIG9uZSBpcyB1bmRlZmluZWRcLi87Ci0gICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL1RoZSBMZWdhY3kgQnVpbGQgU3lzdGVtIHdpbGwgYmUgcmVtb3Zl
ZCBpbiBhIGZ1dHVyZSByZWxlYXNlLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlwoICh4
Y29kZWJ1aWxkfGlmKSAvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ed2FybmluZzogY2Fu
J3QgZmluZCBhZGRpdGlvbmFsIFNESy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL153YXJu
aW5nOiBubyB1bWJyZWxsYSBoZWFkZXIgZm91bmQgZm9yIHRhcmdldCAnLionLCBtb2R1bGUgbWFw
IHdpbGwgbm90IGJlIGdlbmVyYXRlZCQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ed2Fy
bmluZ1w6IGRldGVjdGVkIGludGVybmFsIGluc3RhbGwsIHBhc3NpbmcgZW50aXRsZW1lbnRzIHRv
IHNpbXVsYXRvciBhbnl3YXlcLi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL21heSBub3Qg
ZnVuY3Rpb24gaW4gdGhlIFNpbXVsYXRvciBiZWNhdXNlIEFkIEhvYy87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL1wvdXNyXC9iaW5cL2NsYW5nIC4qPyBcPiBcUysuc2IvOwotICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC8geGNvZGVidWlsZFxbWzAtOV0rOlswLTlhLWZdK1xdXHMrRFZUQXNz
ZXJ0aW9uczogV2FybmluZyBpbiAuKi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL14oRGV0
YWlsc3xPYmplY3R8TWV0aG9kfEZ1bmN0aW9ufFRocmVhZCk6LzsKLSAgICByZXR1cm4gMSBpZiAk
bGluZSA9fiAvXlBsZWFzZSBmaWxlIGEgYnVnIGF0IC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL2NyZWF0ZWQgYnkgYW4gdW5zdXBwb3J0ZWQgWENEZXBlbmRlbmN5R3JhcGggYnVpbGQkLzsK
LSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvd2FybmluZzogVGhlIGFzc2lnbm1lbnQgb2YgJy4q
JyBhdCAiLioiIHVzZXMgXCRcKGluaGVyaXRlZFwpLiBJbiB0aGUgbmV3IGJ1aWxkIHN5c3RlbSB0
aGlzIHdpbGwgaW5oZXJpdCBmcm9tIGFuIGVhcmxpZXIgZGVmaW5pdGlvbiBvZiAnLionIGluIHRo
aXMgeGNjb25maWcgZmlsZSBvciBpdHMgaW1wb3J0czsgdGhlIG9sZCBidWlsZCBzeXN0ZW0gd291
bGQgZGlzY2FyZCBlYXJsaWVyIGRlZmluaXRpb25zLiBUaGlzIG1heSByZXN1bHQgaW4gY2hhbmdl
cyB0byByZXNvbHZlZCBidWlsZCBzZXR0aW5nIHZhbHVlcy4vOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC8uKiBjb20uYXBwbGUuYWN0b29sLmNvbXBpbGF0aW9uLXJlc3VsdHMgLiovOwotICAg
IHJldHVybiAxIGlmICRsaW5lID1+IC8uKlwvQXNzZXRzLmNhci87Ci0gICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gLy4qXC9hc3NldGNhdGFsb2dfZ2VuZXJhdGVkX2luZm8ucGxpc3QvOwotICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9ebW91bnQ6IC4rIGZhaWxlZCB3aXRoLzsKLSAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvXlVzaW5nIC4rIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuJC87Ci0gICAg
cmV0dXJuIDEgaWYgJGxpbmUgPX4gL3JlcGxhY2luZyBleGlzdGluZyBzaWduYXR1cmUkLzsKLSAg
ICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVubG9ja2luZyAnLipcLmtleWNoYWluLWRiJyQvOwot
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXGQrIGxvY2FsaXphYmxlIHN0cmluZ3MkLzsKLSAg
ICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxkKyBwbHVyYWwgcnVsZXMkLzsKLSAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvXlRoZSBsaXN0IG9mIGV4cG9ydGVkIHN5bWJvbHMgZGlkIG5vdCBjaGFu
Z2UuJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15kaXR0bzogQ2Fubm90IGdldCB0aGUg
cmVhbCBwYXRoIGZvciBzb3VyY2UvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eRHVwbGlj
YXRlIEVudHJ5IFdhcyBTa2lwcGVkOi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15BZGRp
bmcgLio/ZW50aXRsZW1lbnRzLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXk1ha2luZyBh
cHAgYnVuZGxlIGxhdW5jaGFibGUvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eRmluaXNo
ZWQgYWRkaW5nIGVudGl0bGVtZW50c1wuJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL14u
KiB3aWxsIG5vdCBiZSBjb2RlIHNpZ25lZCBiZWNhdXNlIGl0cyBzZXR0aW5ncyBkb24ndCBzcGVj
aWZ5IGEgZGV2ZWxvcG1lbnQgdGVhbS4kLzsKLQotICAgIGlmICgkcGxhdGZvcm0gZXEgIndpbiIp
IHsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ccyoodG91Y2h8cGVybHxjYXR8cm0g
LWZ8ZGVsfHB5dGhvbnxcL3VzclwvYmluXC9nXCtcK3xncGVyZnxlY2hvfHNlZHxpZiBcWyBcLWZ8
V2ViQ29yZVwvZ2VuZXJhdGUtZXhwb3J0LWZpbGUpIC87Ci0gICAgICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eXHMqKGlmIG5vdCBleGlzdCBcInxpZiBlcnJvcmxldmVsIDEpLzsKLSAgICAgICAg
cmV0dXJuIDEgaWYgJGxpbmUgPX4gLyheXHMqfE1TQjMwNzM6XHMrKShzZXQgfFJFTSB8Y21kIFwv
YykvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKltjQ106XFxbcFBdcm9ncmFt
IFtmRl1pbGVzLipcXC4qXFwoQ0x8bWlkbClcLmV4ZSAvOwotICAgICAgICByZXR1cm4gMSBpZiAk
bGluZSA9fiAvXlxzKlByb2Nlc3NpbmcgLipcLihhY2Z8aHxpZGwpXHMqJC87Ci0gICAgICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eXHMqcHJpbnRmIC87Ci0gICAgICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eXHMqXC91c3JcL2JpblwvYmFzaFxzKi87Ci0gICAgICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eXHMqb2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLzsKLSAgICAgICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gLyBcZCsgRmlsZVwoc1wpIGNvcGllZC87Ci0gICAgICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eXHMqRmlsZSBub3QgZm91bmQgLSBcKlwuaC87Ci0gICAgICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ta2RpclxzK1wiLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL3hjb3B5IFwveSBcL2QgXCIvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXC5v
YmpcIlxzKiQvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvOlxzKyhjbWQgXC9jfHNl
dClccysvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvTVNCMzA3MzpccyskLzsKLSAg
ICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL01TQjMwNzM6XHMraWYgbm90IGV4aXN0LzsKLSAg
ICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3doaWNoLmV4ZSBiYXNoLzsKLSAgICB9IGVsc2Ug
ewotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXih0b3VjaHxwZXJsfGNhdHxybSAtZnxw
eXRob258XC91c3JcL2JpblwvZ1wrXCt8XC9iaW5cL2xufGdwZXJmfGVjaG98c2VkfGlmIFxbIFwt
ZnxXZWJDb3JlXC9nZW5lcmF0ZS1leHBvcnQtZmlsZXx3cml0ZS1maWxlfGNobW9kKSAvOwotICAg
ICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXiAgICAvICYmICFzaG91bGRTaG93U3Vic2VxdWVu
dExpbmUoJHByZXZpb3VzTGluZSk7Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ecHJp
bnRmIC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eb2ZmbGluZWFzbTogTm90aGlu
ZyBjaGFuZ2VkLzsKLSAgICB9Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15TaG93aW5nIGZp
cnN0LzsKLQotICAgIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9wcmVw
YXJlLUNoYW5nZUxvZyBiL1Rvb2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cKaW5kZXggNDEw
NjNjMGIxOTcwLi43MTNkZTk5NGQ4ZmUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvcHJlcGFy
ZS1DaGFuZ2VMb2cKKysrIGIvVG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZwpAQCAtNjMs
MzAgKzYzLDIyIEBAIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSBMaXN0OjpVdGlsIHF3L21h
eC87CiB1c2UgUE9TSVggcXcoc3RyZnRpbWUpOwogdXNlIFZDU1V0aWxzOwordXNlIHdlYmtpdHBl
cmw6OmNoYW5nZWxvZzsKIAotc3ViIGFjdHVhbGx5R2VuZXJhdGVGdW5jdGlvbkxpc3RzKCQkJCQk
JCk7Ci1zdWIgYXR0cmlidXRlQ29tbWFuZCgkJCQpOwogc3ViIGNoYW5nZUxvZ0RhdGUoJCk7CiBz
dWIgY2hhbmdlTG9nRW1haWxBZGRyZXNzRnJvbUFyZ3MoJCQpOwogc3ViIGNoYW5nZUxvZ05hbWVG
cm9tQXJncygkJCk7Ci1zdWIgY29tcHV0ZU1vZGlmaWVkRnVuY3Rpb25zKCQkJCk7CiBzdWIgY3Jl
YXRlUGF0Y2hDb21tYW5kKCQkJCQpOwotc3ViIGRlY29kZUVudGl0aWVzKCQpOwogc3ViIGRldGVy
bWluZVByb3BlcnR5Q2hhbmdlcygkJCQpOwogc3ViIGRpZmZDb21tYW5kKCQkJCQpOwogc3ViIGRp
ZmZGcm9tVG9TdHJpbmcoJCQkKTsKLXN1YiBleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UoJCk7
Ci1zdWIgZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgkKTsKIHN1YiBmZXRjaEJ1Z1hNTERh
dGEoJCQpOwotc3ViIGZldGNoQnVnRGVzY3JpcHRpb25Gcm9tQnVnWE1MRGF0YSgkJCQpOwotc3Vi
IGZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YSgkJCk7CiBzdWIgZmluZENoYW5nZUxvZ3MoJCQp
Owogc3ViIGZpbmRPcmlnaW5hbEZpbGVGcm9tU3ZuKCQpOwogc3ViIGdlbmVyYXRlRmlsZUxpc3Qo
XCUkJCRcJSk7CiBzdWIgZ2VuZXJhdGVGdW5jdGlvbkxpc3RzKCQkJCQkKTsKIHN1YiBnZW5lcmF0
ZU5ld0NoYW5nZUxvZ3MoJCQkJCQkJCQkJCQkJCQkKTsKIHN1YiBnZXRMYXRlc3RDaGFuZ2VMb2dz
KCQpOwotc3ViIGdldF9mdW5jdGlvbl9saW5lX3JhbmdlcygkJCk7CiBzdWIgZ2V0X2Z1bmN0aW9u
X2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJCQpOwogc3ViIGRlbGV0ZV9uYW1lc3BhY2VzX2Zyb21fcmFu
Z2VzX2Zvcl9jcHAoXEBcQCk7CiBzdWIgaXNfZnVuY3Rpb25faW5fbmFtZXNwYWNlKCQkKTsKQEAg
LTk1LDcgKzg3LDYgQEAgc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YXNjcmlw
dCgkJCk7CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9wZXJsKCQkKTsKIHN1YiBn
ZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcygkJCk7CiBzdWIgZ2V0X2Z1bmN0aW9uX2xp
bmVfcmFuZ2VzX2Zvcl9zd2lmdCgkJCk7Ci1zdWIgcGFyc2VTd2lmdEZ1bmN0aW9uQXJncygkKTsK
IHN1YiBpc0FkZGVkU3RhdHVzKCQpOwogc3ViIGlzQ29uZmxpY3RTdGF0dXMoJCQkKTsKIHN1YiBp
c01vZGlmaWVkU3RhdHVzKCQpOwpAQCAtMzEzLDEzNiArMzA0LDYgQEAgc3ViIGdlbmVyYXRlRnVu
Y3Rpb25MaXN0cygkJCQkJCkKICAgICBhY3R1YWxseUdlbmVyYXRlRnVuY3Rpb25MaXN0cygkY2hh
bmdlZEZpbGVzLCAkZnVuY3Rpb25MaXN0cywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VC
YXNlLCBcJWRlbGVnYXRlSGFzaCk7CiB9CiAKLXN1YiBhY3R1YWxseUdlbmVyYXRlRnVuY3Rpb25M
aXN0cygkJCQkJCQpCi17Ci0gICAgbXkgKCRjaGFuZ2VkRmlsZXMsICRmdW5jdGlvbkxpc3RzLCAk
Z2l0Q29tbWl0LCAkZ2l0SW5kZXgsICRtZXJnZUJhc2UsICRkZWxlZ2F0ZUhhc2hSZWYpID0gQF87
Ci0KLSAgICBteSAlbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZDsKLSAgICBteSAlbGluZV9yYW5n
ZXNfYmVmb3JlX2NoYW5nZWQ7Ci0gICAgaWYgKEAkY2hhbmdlZEZpbGVzKSB7Ci0gICAgICAgICMg
Rm9yIGVhY2ggZmlsZSwgYnVpbGQgYSBsaXN0IG9mIG1vZGlmaWVkIGxpbmVzLgotICAgICAgICAj
IFVzZSBsaW5lIG51bWJlcnMgZnJvbSB0aGUgImFmdGVyIiBzaWRlIG9mIGVhY2ggZGlmZi4KLSAg
ICAgICAgcHJpbnQgU1RERVJSICIgIFJldmlld2luZyBkaWZmIHRvIGRldGVybWluZSB3aGljaCBs
aW5lcyBjaGFuZ2VkLlxuIjsKLSAgICAgICAgbXkgJGZpbGU7Ci0gICAgICAgIG15ICRkaWZmRmls
ZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hSZWYtPntvcGVuRGlmZn0oJGNoYW5nZWRGaWxlcywgJGdp
dENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlKTsKLSAgICAgICAgaWYgKCEkZGlmZkZpbGVI
YW5kbGUpIHsKLSAgICAgICAgICAgIGRpZSAiVGhlIGRpZmYgZmFpbGVkOiAkIS5cbiI7Ci0gICAg
ICAgIH0KLSAgICAgICAgd2hpbGUgKDwkZGlmZkZpbGVIYW5kbGU+KSB7Ci0gICAgICAgICAgICBt
eSAkZmlsZVBhdGggPSBwYXJzZURpZmZTdGFydExpbmUoJF8pOwotICAgICAgICAgICAgJGZpbGUg
PSAkZGVsZWdhdGVIYXNoUmVmLT57bm9ybWFsaXplUGF0aH0oJGZpbGVQYXRoKSBpZiAkZmlsZVBh
dGg7Ci0gICAgICAgICAgICBpZiAoZGVmaW5lZCAkZmlsZSkgewotICAgICAgICAgICAgICAgIG15
ICgkYmVmb3JlX3N0YXJ0LCAkYmVmb3JlX2VuZCkgPSBleHRyYWN0TGluZVJhbmdlQmVmb3JlQ2hh
bmdlKCRfKTsKLSAgICAgICAgICAgICAgICBpZiAoJGJlZm9yZV9zdGFydCA+PSAxICYmICRiZWZv
cmVfZW5kID49IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyRsaW5lX3Jhbmdlc19i
ZWZvcmVfY2hhbmdlZHskZmlsZX19LCBbICRiZWZvcmVfc3RhcnQsICRiZWZvcmVfZW5kIF07Ci0g
ICAgICAgICAgICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01NSVQvKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAkZmlsZSBjb250YWlucyB0aGUgc3Ry
aW5nIERPX05PVF9DT01NSVQsIGxpbmUgJC5cbiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIG15ICgkYWZ0ZXJfc3RhcnQsICRhZnRlcl9lbmQpID0gZXh0cmFjdExpbmVSYW5n
ZUFmdGVyQ2hhbmdlKCRfKTsKLSAgICAgICAgICAgICAgICBpZiAoJGFmdGVyX3N0YXJ0ID49IDEg
JiYgJGFmdGVyX2VuZCA+PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2ggQHskbGluZV9y
YW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmlsZX19LCBbICRhZnRlcl9zdGFydCwgJGFmdGVyX2VuZCBd
OwotICAgICAgICAgICAgICAgIH0gZWxzaWYgKC9ET19OT1RfQ09NTUlULykgewotICAgICAgICAg
ICAgICAgICAgICBwcmludCBTVERFUlIgIldBUk5JTkc6IGZpbGUgJGZpbGUgY29udGFpbnMgdGhl
IHN0cmluZyBET19OT1RfQ09NTUlULCBsaW5lICQuXG4iOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjbG9zZSgkZGlmZkZpbGVIYW5kbGUpOwot
ICAgIH0KLQotICAgICMgRm9yIGVhY2ggc291cmNlIGZpbGUsIGNvbnZlcnQgbGluZSByYW5nZSB0
byBmdW5jdGlvbiBsaXN0LgotICAgIHByaW50IFNUREVSUiAiICBFeHRyYWN0aW5nIGFmZmVjdGVk
IGZ1bmN0aW9uIG5hbWVzIGZyb20gc291cmNlIGZpbGVzLlxuIjsKLSAgICBteSAlZmlsZXNUb0V4
YW1pbmUgPSBtYXAgeyAkXyA9PiAxIH0gKGtleXMoJWxpbmVfcmFuZ2VzX2JlZm9yZV9jaGFuZ2Vk
KSwga2V5cyglbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZCkpOwotICAgIGZvcmVhY2ggbXkgJGZp
bGUgKGtleXMgJWZpbGVzVG9FeGFtaW5lKSB7Ci0gICAgICAgIG15ICVzYXdfZnVuY3Rpb247Ci0K
LSAgICAgICAgIyBGaW5kIGFsbCB0aGUgZnVuY3Rpb25zIGluIHRoZSBmaWxlLgotICAgICAgICBt
eSAkc291cmNlRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hSZWYtPntvcGVuRmlsZX0oJGZpbGUp
OwotICAgICAgICBuZXh0IHVubGVzcyAkc291cmNlRmlsZUhhbmRsZTsKLSAgICAgICAgbXkgQGFm
dGVyQ2hhbmdlRnVuY3Rpb25SYW5nZXMgPSBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXMoJHNvdXJj
ZUZpbGVIYW5kbGUsICRmaWxlKTsKLSAgICAgICAgY2xvc2UoJHNvdXJjZUZpbGVIYW5kbGUpOwot
Ci0gICAgICAgICMgRmluZCBtb2RpZmllZCBmdW5jdGlvbnMgaW4gdGhlIGZpbGUuCi0gICAgICAg
IGlmICgkbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmlsZX0pIHsKLSAgICAgICAgICAgIG15
IEBjaGFuZ2VfcmFuZ2VzID0gKEB7JGxpbmVfcmFuZ2VzX2FmdGVyX2NoYW5nZWR7JGZpbGV9fSwg
W10pOwotICAgICAgICAgICAgbXkgQGZ1bmN0aW9ucyA9IGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9u
cygkZmlsZSwgXEBjaGFuZ2VfcmFuZ2VzLCBcQGFmdGVyQ2hhbmdlRnVuY3Rpb25SYW5nZXMpOwot
Ci0gICAgICAgICAgICAjIEZvcm1hdCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMuCi0gICAgICAgICAg
ICBpZiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgICAgICRmdW5jdGlvbkxpc3RzLT57JGZp
bGV9ID0gIiIgaWYgIWRlZmluZWQgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX07Ci0gICAgICAgICAg
ICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gLj0gIlxuICAgICAgICAoIiAuIGpvaW4oIik6
XG4gICAgICAgICgiLCBAZnVuY3Rpb25zKSAuICIpOiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgIyBGaW5kIHRoZSBkZWxldGVkIGZ1bmN0aW9ucyBpbiB0aGUgb3JpZ2luYWwg
ZmlsZS4KLSAgICAgICAgaWYgKCRsaW5lX3Jhbmdlc19iZWZvcmVfY2hhbmdlZHskZmlsZX0pIHsK
LSAgICAgICAgICAgIG15ICRvcmlnaW5hbEZpbGVIYW5kbGUgPSAkZGVsZWdhdGVIYXNoUmVmLT57
b3Blbk9yaWdpbmFsRmlsZX0oJGZpbGUsICRnaXRDb21taXQsICRnaXRJbmRleCwgJG1lcmdlQmFz
ZSk7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkb3JpZ2luYWxGaWxlSGFuZGxlOwotICAgICAg
ICAgICAgbXkgQGJlZm9yZUNoYW5nZUZ1bmN0aW9uUmFuZ2VzID0gZ2V0X2Z1bmN0aW9uX2xpbmVf
cmFuZ2VzKCRvcmlnaW5hbEZpbGVIYW5kbGUsICRmaWxlKTsKLSAgICAgICAgICAgIGNsb3NlKCRv
cmlnaW5hbEZpbGVIYW5kbGUpOwotCi0gICAgICAgICAgICBteSAlZXhpc3RzQWZ0ZXJDaGFuZ2Ug
PSBtYXAgeyAkXy0+WzJdID0+IDEgfSBAYWZ0ZXJDaGFuZ2VGdW5jdGlvblJhbmdlczsKLQotICAg
ICAgICAgICAgbXkgQGZ1bmN0aW9uczsKLSAgICAgICAgICAgIG15ICVzYXdGdW5jdGlvbnM7Ci0g
ICAgICAgICAgICBmb3IgbXkgJGZ1bmN0aW9uUmFuZ2UgKEBiZWZvcmVDaGFuZ2VGdW5jdGlvblJh
bmdlcykgewotICAgICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb25SYW5n
ZS0+WzJdOwotICAgICAgICAgICAgICAgIGlmICghJGV4aXN0c0FmdGVyQ2hhbmdleyRmdW5jdGlv
bk5hbWV9ICYmICEkc2F3RnVuY3Rpb25zeyRmdW5jdGlvbk5hbWV9KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2ggQGZ1bmN0aW9ucywgJGZ1bmN0aW9uTmFtZTsKLSAgICAgICAgICAgICAgICAg
ICAgJHNhd0Z1bmN0aW9uc3skZnVuY3Rpb25OYW1lfSA9IDE7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIEZvcm1hdCB0aGUgbGlzdCBvZiBkZWxldGVk
IGZ1bmN0aW9ucy4KLSAgICAgICAgICAgIGlmIChAZnVuY3Rpb25zKSB7Ci0gICAgICAgICAgICAg
ICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gPSAiIiBpZiAhZGVmaW5lZCAkZnVuY3Rpb25MaXN0
cy0+eyRmaWxlfTsKLSAgICAgICAgICAgICAgICAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfSAuPSAi
XG4gICAgICAgICgiIC4gam9pbigiKTogRGVsZXRlZC5cbiAgICAgICAgKCIsIEBmdW5jdGlvbnMp
IC4gIik6IERlbGV0ZWQuIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQot
c3ViIGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucygkJCQpCi17Ci0gICAgbXkgKCRmaWxlLCAkY2hh
bmdlZExpbmVSYW5nZXMsICRmdW5jdGlvblJhbmdlcykgPSBAXzsKLQotICAgIG15ICVzYXdGdW5j
dGlvbjsKLQotICAgICMgRmluZCBhbGwgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucy4KLSAgICBteSBA
ZnVuY3Rpb25zOwotICAgIG15IEBjaGFuZ2VfcmFuZ2VzID0gQHskY2hhbmdlZExpbmVSYW5nZXN9
OwotICAgIG15IEBjaGFuZ2VfcmFuZ2UgPSAoMCwgMCk7Ci0gICAgRlVOQ1RJT046IGZvcmVhY2gg
bXkgJGZ1bmN0aW9uX3JhbmdlX3JlZiAoQHskZnVuY3Rpb25SYW5nZXN9KSB7Ci0gICAgICAgIG15
IEBmdW5jdGlvbl9yYW5nZSA9IEB7JGZ1bmN0aW9uX3JhbmdlX3JlZn07Ci0KLSAgICAgICAgIyBG
SVhNRTogVGhpcyBpcyBhIGhhY2suIElmIHRoZSBmdW5jdGlvbiBuYW1lIGlzIGVtcHR5LCBza2lw
IGl0LgotICAgICAgICAjIFRoZSBjcHAsIHB5dGhvbiwgamF2YXNjcmlwdCwgcGVybCwgY3NzIGFu
ZCBqYXZhIHBhcnNlcnMKLSAgICAgICAgIyBhcmUgbm90IHBlcmZlY3RseSBpbXBsZW1lbnRlZCBh
bmQgc29tZXRpbWVzIGZ1bmN0aW9uIG5hbWVzIGNhbm5vdCBiZSByZXRyaWV2ZWQKLSAgICAgICAg
IyBjb3JyZWN0bHkuIEFzIHlvdSBjYW4gc2VlIGluIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19Y
WFhYKCksIHRob3NlIHBhcnNlcnMKLSAgICAgICAgIyBhcmUgbm90IGludGVuZGVkIHRvIGltcGxl
bWVudCByZWFsIHBhcnNlcnMgYnV0IGludGVuZGVkIHRvIGp1c3QgcmV0cmlldmUgZnVuY3Rpb24g
bmFtZXMKLSAgICAgICAgIyBmb3IgbW9zdCBwcmFjdGljYWwgc3ludGF4ZXMuCi0gICAgICAgIG5l
eHQgdW5sZXNzICRmdW5jdGlvbl9yYW5nZVsyXTsKLQotICAgICAgICAjIEFkdmFuY2UgdG8gc3Vj
Y2Vzc2l2ZSBjaGFuZ2UgcmFuZ2VzLgotICAgICAgICBmb3IgKDs7IEBjaGFuZ2VfcmFuZ2UgPSBA
e3NoaWZ0IEBjaGFuZ2VfcmFuZ2VzfSkgewotICAgICAgICAgICAgbGFzdCBGVU5DVElPTiB1bmxl
c3MgQGNoYW5nZV9yYW5nZTsKLQotICAgICAgICAgICAgIyBJZiBwYXN0IHRoaXMgZnVuY3Rpb24s
IG1vdmUgb24gdG8gdGhlIG5leHQgb25lLgotICAgICAgICAgICAgbmV4dCBGVU5DVElPTiBpZiAk
Y2hhbmdlX3JhbmdlWzBdID4gJGZ1bmN0aW9uX3JhbmdlWzFdOwotCi0gICAgICAgICAgICAjIElm
IGFuIG92ZXJsYXAgd2l0aCB0aGlzIGZ1bmN0aW9uIHJhbmdlLCByZWNvcmQgdGhlIGZ1bmN0aW9u
IG5hbWUuCi0gICAgICAgICAgICBpZiAoJGNoYW5nZV9yYW5nZVsxXSA+PSAkZnVuY3Rpb25fcmFu
Z2VbMF0KLSAgICAgICAgICAgICAgICBhbmQgJGNoYW5nZV9yYW5nZVswXSA8PSAkZnVuY3Rpb25f
cmFuZ2VbMV0pIHsKLSAgICAgICAgICAgICAgICBpZiAoISRzYXdGdW5jdGlvbnskZnVuY3Rpb25f
cmFuZ2VbMl19KSB7Ci0gICAgICAgICAgICAgICAgICAgICRzYXdGdW5jdGlvbnskZnVuY3Rpb25f
cmFuZ2VbMl19ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaCBAZnVuY3Rpb25zLCAkZnVu
Y3Rpb25fcmFuZ2VbMl07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5leHQg
RlVOQ1RJT047Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
QGZ1bmN0aW9uczsKLX0KLQogc3ViIGNoYW5nZUxvZ0RhdGUoJCkKIHsKICAgICBteSAoJHRpbWVa
b25lKSA9IEBfOwpAQCAtNTAwLDMyICszNjEsNiBAQCBzdWIgZmV0Y2hCdWdYTUxEYXRhKCQkKQog
ICAgIHJldHVybiAkeG1sRGF0YTsKIH0KIAotc3ViIGZldGNoQnVnRGVzY3JpcHRpb25Gcm9tQnVn
WE1MRGF0YSgkJCQpCi17Ci0gICAgbXkgKCRidWdVUkwsICRidWdOdW1iZXIsICRidWdYTUxEYXRh
KSA9IEBfOwotCi0gICAgaWYgKCRidWdYTUxEYXRhICF+IC88c2hvcnRfZGVzYz4oLiopPFwvc2hv
cnRfZGVzYz4vKSB7Ci0gICAgICAgIHByaW50IFNUREVSUiAiICBCdWcgJGJ1Z051bWJlciBoYXMg
bm8gYnVnIGRlc2NyaXB0aW9uLiBNYXliZSB5b3Ugc2V0IHdyb25nIGJ1ZyBJRD9cbiI7Ci0gICAg
ICAgIHByaW50IFNUREVSUiAiICBUaGUgYnVnIFVSTDogJGJ1Z1VSTFxuIjsKLSAgICAgICAgZXhp
dCAxOwotICAgIH0KLQotICAgIG15ICRidWdEZXNjcmlwdGlvbiA9IGRlY29kZUVudGl0aWVzKCQx
KTsKLSAgICBwcmludCBTVERFUlIgIiAgRGVzY3JpcHRpb24gZnJvbSBidWcgJGJ1Z051bWJlcjpc
biAgICBcIiRidWdEZXNjcmlwdGlvblwiLlxuIjsKLSAgICByZXR1cm4gJGJ1Z0Rlc2NyaXB0aW9u
OwotfQotCi1zdWIgZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxEYXRhKCQkKQotewotICAgIG15ICgk
YnVnTnVtYmVyLCAkYnVnWE1MRGF0YSkgPSBAXzsKLQotICAgIHJldHVybiAiIiBpZiAkYnVnWE1M
RGF0YSAhfiBtfDx0aGV0ZXh0PlxzKigoJmx0Oyk/cmRhcjovLyhwcm9ibGVtLyk/XGQrKCZndDsp
Pyl8OwotCi0gICAgbXkgJGJ1Z1JhZGFyVVJMID0gZGVjb2RlRW50aXRpZXMoJDEpOwotICAgIHBy
aW50IFNUREVSUiAiICBSYWRhciBVUkwgZnJvbSBidWcgJGJ1Z051bWJlcjpcbiAgICBcIiRidWdS
YWRhclVSTFwiLlxuIjsKLSAgICByZXR1cm4gJGJ1Z1JhZGFyVVJMOwotfQotCiBzdWIgZmluZENo
YW5nZUxvZ3MoJCQpCiB7CiAgICAgbXkgKCRmdW5jdGlvbkxpc3RzLCAkcmVxdWlyZUNoYW5nZUxv
Z1RvRXhpc3QpID0gQF87CkBAIC03NjEsMzUgKzU5Niw2IEBAIHN1YiBvcGVuQ2hhbmdlTG9ncygk
KQogICAgIH0KIH0KIAotc3ViIGdldF9mdW5jdGlvbl9saW5lX3JhbmdlcygkJCkKLXsKLSAgICBt
eSAoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSA9IEBfOwotCi0gICAgIyBUcnkgdG8gZGV0ZXJt
aW5lIHRoZSBzb3VyY2UgbGFuZ3VhZ2UgYmFzZWQgb24gdGhlIGZpbGUgZXh0ZW5zaW9uLgotCi0g
ICAgcmV0dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfY3BwKCRmaWxlX2hhbmRsZSwg
JGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC4oY3xjcHB8bXxtbXxoKSQvOwotICAgIHJl
dHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmEoJGZpbGVfaGFuZGxlLCAkZmls
ZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLmphdmEkLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0KCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkg
aWYgJGZpbGVfbmFtZSA9fiAvXC5qcyQvOwotICAgIHJldHVybiBnZXRfc2VsZWN0b3JfbGluZV9y
YW5nZXNfZm9yX2NzcygkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4g
L1wuY3NzJC87Ci0gICAgcmV0dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybCgk
ZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wucFtsbV0kLzsKLSAg
ICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRob24oJGZpbGVfaGFuZGxl
LCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLnB5JC8gb3IgJGZpbGVfbmFtZSA9fiAv
bWFzdGVyXC5jZmckLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9z
d2lmdCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wuc3dpZnQk
LzsKLQotICAgICMgVHJ5IHRvIGRldGVybWluZSB0aGUgc291cmNlIGxhbmd1YWdlIGJhc2VkIG9u
IHRoZSBzY3JpcHQgaW50ZXJwcmV0ZXIuCi0KLSAgICBteSAkZmlyc3RfbGluZSA9IDwkZmlsZV9o
YW5kbGU+OwotICAgIHNlZWsoJGZpbGVfaGFuZGxlLCAwLCAwKTsKLQotICAgIHJldHVybiAoKSB1
bmxlc3MgJGZpcnN0X2xpbmUgPX4gbXxeIyEoPzovdXNyL2Jpbi9lbnZccyspPyhcUyspfDsKLSAg
ICBteSAkaW50ZXJwcmV0ZXIgPSAkMTsKLQotICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9y
YW5nZXNfZm9yX3BlcmwoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkaW50ZXJwcmV0ZXIg
PX4gL3BlcmwkLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRo
b24oJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkaW50ZXJwcmV0ZXIgPX4gL3B5dGhvbiQv
OwotCi0gICAgcmV0dXJuICgpOwotfQotCi0KIHN1YiBtZXRob2RfZGVjbF90b19zZWxlY3Rvcigk
KQogewogICAgIChteSAkbWV0aG9kX2RlY2wpID0gQF87CkBAIC04MTcsMTIyMiArNjIzLDYgQEAg
c3ViIG1ldGhvZF9kZWNsX3RvX3NlbGVjdG9yKCQpCiAgICAgcmV0dXJuICRfOwogfQogCi0KLQot
IyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0
aGF0IGxvb2sgbGlrZSBDIGZ1bmN0aW9ucy4KLSMgQSBmdW5jdGlvbiBuYW1lIGlzIHRoZSBsYXN0
IHdvcmQgYmVmb3JlIGFuIG9wZW4gcGFyZW50aGVzaXMgYmVmb3JlIHRoZSBvdXRlcgotIyBsZXZl
bCBvcGVuIGJyYWNlLiBBIGZ1bmN0aW9uIHN0YXJ0cyBhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIGFm
dGVyIHRoZSBsYXN0IGNsb3NlCi0jIGJyYWNlIG9yIHNlbWljb2xvbiBiZWZvcmUgdGhlIGZ1bmN0
aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhlIGNsb3NlIGJyYWNlLgotIyBDb21tZW50IGhhbmRsaW5n
IGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3IgYWxsIGJ1dCBwYXRob2xvZ2ljYWwg
Y2FzZXMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBl
bmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2Vz
X2Zvcl9jcHAoJCQpCi17Ci0gICAgbXkgKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgPSBAXzsK
LQotICAgIG15IEByYW5nZXM7Ci0KLSAgICBteSAkaW5fY29tbWVudCA9IDA7Ci0gICAgbXkgJGlu
X21hY3JvID0gMDsKLSAgICBteSAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKLSAgICBteSAk
aW5fcGFyZW50aGVzZXMgPSAwOwotICAgIG15ICRxdW90YXRpb25fbWFyazsKLSAgICBteSAkaW5f
YnJhY2VzID0gMDsKLSAgICBteSAkaW5fdG9wbGV2ZWxfYXJyYXlfYnJhY2UgPSAwOwotICAgIG15
ICRicmFjZV9zdGFydCA9IDA7Ci0gICAgbXkgJGJyYWNlX2VuZCA9IDA7Ci0gICAgbXkgJG5hbWVz
cGFjZV9zdGFydCA9IC0xOwotICAgIG15ICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAw
OwotICAgIG15ICRlcXVhbF9vYnNlcnZlZCA9IDA7Ci0KLSAgICBteSAkd29yZCA9ICIiOwotICAg
IG15ICRpbnRlcmZhY2VfbmFtZSA9ICIiOwotCi0gICAgbXkgJHBvdGVudGlhbF9tZXRob2RfY2hh
ciA9ICIiOwotICAgIG15ICRwb3RlbnRpYWxfbWV0aG9kX3NwZWMgPSAiIjsKLQotICAgIG15ICRw
b3RlbnRpYWxfc3RhcnQgPSAwOwotICAgIG15ICRwb3RlbnRpYWxfbmFtZSA9ICIiOwotCi0gICAg
bXkgJHN0YXJ0ID0gMDsKLSAgICBteSAkbmFtZSA9ICIiOwotCi0gICAgbXkgJG5leHRfd29yZF9j
b3VsZF9iZV9uYW1lc3BhY2UgPSAwOwotICAgIG15ICRwb3RlbnRpYWxfbmFtZXNwYWNlID0gIiI7
Ci0gICAgbXkgQG5hbWVzcGFjZXM7Ci0gICAgbXkgQGFsbF9uYW1lc3BhY2VzOwotCi0gICAgd2hp
bGUgKDwkZmlsZV9oYW5kbGU+KSB7Ci0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBxdW90ZWQg
c3RyaW5nLgotICAgICAgICBpZiAoJHF1b3RhdGlvbl9tYXJrKSB7Ci0gICAgICAgICAgICBpZiAo
IXMtKFteXFxdfFxcLikqJHF1b3RhdGlvbl9tYXJrLS0pIHsKLSAgICAgICAgICAgICAgICBpZiAo
IW0tXFwkLSkgewotICAgICAgICAgICAgICAgICAgICB3YXJuICJtaXNtYXRjaGVkIHF1b3RlcyBh
dCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7Ci0gICAgICAgICAgICAgICAgICAgIHVuZGVmICRx
dW90YXRpb25fbWFyazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmV4dDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVuZGVmICRxdW90YXRpb25fbWFyazsKLSAgICAg
ICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQuCi0g
ICAgICAgIGlmICgkaW5fY29tbWVudCkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwq
Ly0tOwotICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAg
IyBIYW5kbGUgY29udGludWVkIG1hY3JvLgotICAgICAgICBpZiAoJGluX21hY3JvKSB7Ci0gICAg
ICAgICAgICAkaW5fbWFjcm8gPSAwIHVubGVzcyAvXFwkLzsKLSAgICAgICAgICAgIG5leHQ7Ci0g
ICAgICAgIH0KLQotICAgICAgICAjIEhhbmRsZSBzdGFydCBvZiBtYWNybyAob3IgYW55IHByZXBy
b2Nlc3NvciBkaXJlY3RpdmUpLgotICAgICAgICBpZiAoL15ccypcIy8pIHsKLSAgICAgICAgICAg
ICRpbl9tYWNybyA9IDEgaWYgL14oW15cXF18XFwuKSpcXCQvOwotICAgICAgICAgICAgbmV4dDsK
LSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4dC4K
LSAgICAgICAgd2hpbGUgKG0tKC9cKnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAgZW1h
Y3MgcGVybCBtb2RlIGhhcHB5Ci0gICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKLSAgICAgICAg
ICAgIGlmICgkbWF0Y2ggZXEgIi8qIikgewotICAgICAgICAgICAgICAgIGlmICghcy0vXCouKj9c
Ki8tLSkgewotICAgICAgICAgICAgICAgICAgICBzLS9cKi4qLS07Ci0gICAgICAgICAgICAgICAg
ICAgICRpbl9jb21tZW50ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs
c2lmICgkbWF0Y2ggZXEgIi8vIikgewotICAgICAgICAgICAgICAgIHMtLy8uKi0tOwotICAgICAg
ICAgICAgfSBlbHNlIHsgIyAnIG9yICIKLSAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNoKFte
XFxdfFxcLikqPyRtYXRjaC0tKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghcy0kbWF0Y2gu
KlxcJC0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3YXJuICJtaXNtYXRjaGVkIHF1b3Rl
cyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBz
LSRtYXRjaC4qLS07Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAkcXVvdGF0aW9uX21hcmsgPSAkbWF0Y2g7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotCi0gICAg
ICAgICMgY29udGludWVkIG1ldGhvZCBkZWNsYXJhdGlvbgotICAgICAgICBpZiAoJGluX21ldGhv
ZF9kZWNsYXJhdGlvbikgewotICAgICAgICAgICAgICBteSAkb3JpZ2luYWwgPSAkXzsKLSAgICAg
ICAgICAgICAgbXkgJG1ldGhvZF9jb250ID0gJF87Ci0KLSAgICAgICAgICAgICAgY2hvbXAgJG1l
dGhvZF9jb250OwotICAgICAgICAgICAgICAkbWV0aG9kX2NvbnQgPX4gcy9bO1x7XS4qLy87Ci0g
ICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX3NwZWMgPSAiJHtwb3RlbnRpYWxfbWV0aG9k
X3NwZWN9ICR7bWV0aG9kX2NvbnR9IjsKLQotICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsK
LSAgICAgICAgICAgICAgaWYgKC87LykgewotICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9z
dGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9zcGVjID0gIiI7
Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9jaGFyID0gIiI7Ci0gICAgICAg
ICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKLSAgICAgICAgICAgICAgICAg
IHMvXlteO1x7XSovLzsKLSAgICAgICAgICAgICAgfSBlbHNpZiAoL3svKSB7Ci0gICAgICAgICAg
ICAgICAgICBteSAkc2VsZWN0b3IgPSBtZXRob2RfZGVjbF90b19zZWxlY3RvciAoJHBvdGVudGlh
bF9tZXRob2Rfc3BlYyk7Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAiJHtw
b3RlbnRpYWxfbWV0aG9kX2NoYXJ9XFske2ludGVyZmFjZV9uYW1lfSAke3NlbGVjdG9yfVxdIjsK
LQotICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICIiOwotICAgICAg
ICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2RfY2hhciA9ICIiOwotICAgICAgICAgICAgICAg
ICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7Ci0KLSAgICAgICAgICAgICAgICAgICRfID0g
JG9yaWdpbmFsOwotICAgICAgICAgICAgICAgICAgcy9eW147e10qLy87Ci0gICAgICAgICAgICAg
IH0gZWxzaWYgKC9cQGVuZC8pIHsKLSAgICAgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVjbGFy
YXRpb24gPSAwOwotICAgICAgICAgICAgICAgICAgJGludGVyZmFjZV9uYW1lID0gIiI7Ci0gICAg
ICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKLSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0KLSAg
ICAgICAgIyBzdGFydCBvZiBtZXRob2QgZGVjbGFyYXRpb24KLSAgICAgICAgaWYgKChteSAkbWV0
aG9kX2NoYXIsIG15ICRtZXRob2Rfc3BlYykgPSBtJl4oWy0rXSkoW14wLTk7XVteO10qKTs/JCYp
IHsKLSAgICAgICAgICAgIG15ICRvcmlnaW5hbCA9ICRfOwotCi0gICAgICAgICAgICBpZiAoJGlu
dGVyZmFjZV9uYW1lKSB7Ci0gICAgICAgICAgICAgICAgY2hvbXAgJG1ldGhvZF9zcGVjOwotICAg
ICAgICAgICAgICAgICRtZXRob2Rfc3BlYyA9fiBzL1x7LiovLzsKLQotICAgICAgICAgICAgICAg
ICRwb3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAkbWV0aG9kX2NoYXI7Ci0gICAgICAgICAgICAgICAg
JHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICRtZXRob2Rfc3BlYzsKLSAgICAgICAgICAgICAgICAk
cG90ZW50aWFsX3N0YXJ0ID0gJC47Ci0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJh
dGlvbiA9IDE7Ci0gICAgICAgICAgICB9IGVsc2UgeyAKLSAgICAgICAgICAgICAgICB3YXJuICJk
ZWNsYXJpbmcgYSBtZXRob2QgYnV0IGRvbid0IGhhdmUgaW50ZXJmYWNlIG9uIGxpbmUgJC4gaW4g
JGZpbGVfbmFtZVxuIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICRfID0gJG9yaWdpbmFs
OwotICAgICAgICAgICAgaWYgKC9cey8pIHsKLSAgICAgICAgICAgICAgbXkgJHNlbGVjdG9yID0g
bWV0aG9kX2RlY2xfdG9fc2VsZWN0b3IgKCRwb3RlbnRpYWxfbWV0aG9kX3NwZWMpOwotICAgICAg
ICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAiJHtwb3RlbnRpYWxfbWV0aG9kX2NoYXJ9XFske2lu
dGVyZmFjZV9uYW1lfSAke3NlbGVjdG9yfVxdIjsKLQotICAgICAgICAgICAgICAkcG90ZW50aWFs
X21ldGhvZF9zcGVjID0gIiI7Ci0gICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX2NoYXIg
PSAiIjsKLSAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7Ci0gICAgICAg
ICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAgICBzL15bXntdKi8vOwotICAgICAg
ICAgICAgfSBlbHNpZiAoL1xAZW5kLykgewotICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xh
cmF0aW9uID0gMDsKLSAgICAgICAgICAgICAgJGludGVyZmFjZV9uYW1lID0gIiI7Ci0gICAgICAg
ICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0KLSAgICAgICAgIyBGaW5kIGZ1
bmN0aW9uLCBpbnRlcmZhY2UgYW5kIG1ldGhvZCBuYW1lcy4KLSAgICAgICAgd2hpbGUgKG0mKCg/
OltbOndvcmQ6XV0rOjopKm9wZXJhdG9yKD86WyBcdF0qXChcKXxbXigpXSopfFtbOndvcmQ6XTw+
On5dK3xbKCl7fTo7PV0pfFxAKD86aW1wbGVtZW50YXRpb258aW50ZXJmYWNlfHByb3RvY29sKVxz
KyhcdyspW157XSomZykgewotICAgICAgICAgICAgIyBTa2lwIGFuIGFycmF5IGRlZmluaXRpb24g
YXQgdGhlIHRvcCBsZXZlbC4KLSAgICAgICAgICAgICMgZS5nLiBzdGF0aWMgaW50IGFycltdID0g
eyAxLCAyLCAzIH07Ci0gICAgICAgICAgICBpZiAoJDEpIHsKLSAgICAgICAgICAgICAgICBpZiAo
JDEgZXEgIj0iIGFuZCAhJGluX3BhcmVudGhlc2VzIGFuZCAhJGluX2JyYWNlcykgewotICAgICAg
ICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQgPSAxOwotICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCQxIGVxICJ7IiBhbmQgJGVxdWFsX29ic2VydmVkKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICMgVGhpcyAneycgaXMgdGhlIGJlZ2lubmluZyBvZiBhbiBhcnJheSBkZWZpbml0aW9uLCBub3Qg
dGhlIGJlZ2lubmluZyBvZiBhIG1ldGhvZC4KLSAgICAgICAgICAgICAgICAgICAgJGluX3RvcGxl
dmVsX2FycmF5X2JyYWNlID0gMTsKLSAgICAgICAgICAgICAgICAgICAgJGluX2JyYWNlcysrOwot
ICAgICAgICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQgPSAwOwotICAgICAgICAgICAgICAg
ICAgICBuZXh0OwotICAgICAgICAgICAgICAgIH0gZWxzaWYgKCQxICF+IC9bIFx0XS8pIHsKLSAg
ICAgICAgICAgICAgICAgICAgJGVxdWFsX29ic2VydmVkID0gMDsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgaW50ZXJmYWNlIG5hbWUKLSAgICAgICAg
ICAgIGlmICgkMikgewotICAgICAgICAgICAgICAgICRpbnRlcmZhY2VfbmFtZSA9ICQyOwotICAg
ICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgT3BlbiBw
YXJlbnRoZXNpcy4KLSAgICAgICAgICAgIGlmICgkMSBlcSAiKCIpIHsKLSAgICAgICAgICAgICAg
ICAkcG90ZW50aWFsX25hbWUgPSAkd29yZCB1bmxlc3MgJGluX3BhcmVudGhlc2VzIHx8ICRza2lw
X3RpbF9icmFjZV9vcl9zZW1pY29sb24gfHwgZ3JlcCB7ICR3b3JkIGVxICRfIH0gKCJDRl9FTlVN
IiwgIkNGX09QVElPTlMiLCAiTlNfRU5VTSIsICJOU19PUFRJT05TIik7Ci0gICAgICAgICAgICAg
ICAgJGluX3BhcmVudGhlc2VzKys7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBDbG9zZSBwYXJlbnRoZXNpcy4KLSAgICAgICAgICAgIGlmICgk
MSBlcSAiKSIpIHsKLSAgICAgICAgICAgICAgICAkaW5fcGFyZW50aGVzZXMtLTsKLSAgICAgICAg
ICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoJDEgZXEgImNv
bnN0IiBhbmQgISRpbl9wYXJlbnRoZXNlcykgewotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxf
bmFtZSAuPSAiIGNvbnN0IjsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBpZiAoJDEgZXEgInZvbGF0aWxlIiBhbmQgISRpbl9wYXJlbnRoZXNlcykg
ewotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSAuPSAiIHZvbGF0aWxlIjsKLSAgICAg
ICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIEMrKyBhdXRv
IGZ1bmN0aW9uKCkgLT4gdHlwZQotICAgICAgICAgICAgaWYgKCQxIGVxICI+IikgewotICAgICAg
ICAgICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAxIHVubGVzcyAoJGluX3Bh
cmVudGhlc2VzIHx8ICRpbl9icmFjZXMpOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICMgQysrIGNvbnN0cnVjdG9yIGluaXRpYWxpemVycwotICAg
ICAgICAgICAgaWYgKCQxIGVxICI6IikgewotICAgICAgICAgICAgICAgICRza2lwX3RpbF9icmFj
ZV9vcl9zZW1pY29sb24gPSAxIHVubGVzcyAoJGluX3BhcmVudGhlc2VzIHx8ICRpbl9icmFjZXMp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIE9wZW4gYnJhY2UuCi0gICAgICAgICAg
ICBpZiAoJDEgZXEgInsiKSB7Ci0gICAgICAgICAgICAgICAgJHNraXBfdGlsX2JyYWNlX29yX3Nl
bWljb2xvbiA9IDA7Ci0KLSAgICAgICAgICAgICAgICBpZiAoISRpbl9icmFjZXMpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCRuYW1lc3BhY2Vfc3RhcnQgPj0gMCBhbmQgJG5hbWVzcGFjZV9z
dGFydCA8ICRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2gg
QHJhbmdlcywgWyAkbmFtZXNwYWNlX3N0YXJ0IC4gIiIsICRwb3RlbnRpYWxfc3RhcnQgLSAxLCAk
bmFtZSBdOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYg
KCRwb3RlbnRpYWxfbmFtZXNwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBu
YW1lc3BhY2VzLCAkcG90ZW50aWFsX25hbWVzcGFjZTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2ggQGFsbF9uYW1lc3BhY2VzLCAkcG90ZW50aWFsX25hbWVzcGFjZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZXNwYWNlID0gIiI7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAkbmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICRuYW1lc3BhY2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0
OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgIyBQcm9tb3Rl
IHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFtZSBhdCB0aGUKLSAgICAgICAgICAg
ICAgICAgICAgIyBzdGFydCBvZiB0aGUgb3V0ZXIgbGV2ZWwgc2V0IG9mIGJyYWNlcyAoZnVuY3Rp
b24gYm9keT8pLgotICAgICAgICAgICAgICAgICAgICBpZiAoJHBvdGVudGlhbF9zdGFydCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJHBvdGVudGlhbF9zdGFydDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICRuYW1lID0gJHBvdGVudGlhbF9uYW1lOwotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzICYmICRuYW1lICYmIChsZW5ndGgoJG5hbWUpIDwg
MiB8fCBzdWJzdHIoJG5hbWUsMSwxKSBuZSAiWyIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJG5hbWUgPSBqb2luICgnOjonLCBAbmFtZXNwYWNlcywgJG5hbWUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7Ci0KLSAgICAg
ICAgICAgICAgICAkYnJhY2Vfc3RhcnQgPSAkLiBpZiAoISRpbl9icmFjZXMpOwotICAgICAgICAg
ICAgICAgICRpbl9icmFjZXMrKzsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAjIENsb3NlIGJyYWNlLgotICAgICAgICAgICAgaWYgKCQxIGVxICJ9
IikgewotICAgICAgICAgICAgICAgIGlmICghJGluX2JyYWNlcyAmJiBAbmFtZXNwYWNlcykgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoJG5hbWVzcGFjZV9zdGFydCA+PSAwIGFuZCAkbmFtZXNw
YWNlX3N0YXJ0IDwgJC4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywg
WyAkbmFtZXNwYWNlX3N0YXJ0IC4gIiIsICQuIC0gMSwgJG5hbWUgXTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHBvcCBAbmFtZXNwYWNlczsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
bmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3Bh
Y2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkbmFtZSA9ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgJG5h
bWVzcGFjZV9zdGFydCA9IC0xOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJGluX2Jy
YWNlcy0tOwotICAgICAgICAgICAgICAgICRicmFjZV9lbmQgPSAkLiBpZiAoISRpbl9icmFjZXMp
OwotCi0gICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0ZXIgbGV2ZWwgc2V0IG9mIGJyYWNl
cy4KLSAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUgYSBmdW5jdGlvbiBib2R5LgotICAg
ICAgICAgICAgICAgIGlmICghJGluX2JyYWNlcyBhbmQgJG5hbWUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgIyBUaGlzIGlzIHRoZSBlbmQgb2YgYW4gYXJyYXkgZGVmaW5pdGlvbiBhdCB0aGUgdG9w
IGxldmVsLCBub3QgdGhlIGVuZCBvZiBhIG1ldGhvZC4KLSAgICAgICAgICAgICAgICAgICAgaWYg
KCRpbl90b3BsZXZlbF9hcnJheV9icmFjZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgJGlu
X3RvcGxldmVsX2FycmF5X2JyYWNlID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5n
ZXMsIFsgJHN0YXJ0LCAkLiwgJG5hbWUgXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEBuYW1l
c3BhY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRuYW1lc3BhY2VzWy0x
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAkLiArIDE7Ci0g
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmFt
ZSA9ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWVzcGFjZV9zdGFydCA9IC0xOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1l
ID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgIyBTZW1pY29sb24uCi0gICAgICAgICAgICBpZiAoJDEgZXEgIjsiKSB7Ci0gICAgICAgICAg
ICAgICAgJHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9IDA7Ci0gICAgICAgICAgICAgICAg
JHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0g
IiI7Ci0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7Ci0gICAgICAg
ICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBJZ25vcmUgImNv
bnN0IiBtZXRob2QgcXVhbGlmaWVyLgotICAgICAgICAgICAgaWYgKCQxIGVxICJjb25zdCIpIHsK
LSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAo
JDEgZXEgIm5hbWVzcGFjZSIgfHwgJDEgZXEgImNsYXNzIiB8fCAkMSBlcSAic3RydWN0Iikgewot
ICAgICAgICAgICAgICAgICRuZXh0X3dvcmRfY291bGRfYmVfbmFtZXNwYWNlID0gMTsKLSAgICAg
ICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIFdvcmQuCi0g
ICAgICAgICAgICAkd29yZCA9ICQxOwotICAgICAgICAgICAgaWYgKCEkc2tpcF90aWxfYnJhY2Vf
b3Jfc2VtaWNvbG9uKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCRuZXh0X3dvcmRfY291bGRfYmVf
bmFtZXNwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZXNwYWNlID0g
JHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRuZXh0X3dvcmRfY291bGRfYmVfbmFtZXNwYWNl
ID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2lmICgkcG90ZW50aWFsX25hbWVzcGFjZSkgewot
ICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVzcGFjZSA9ICIiOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghJGluX3BhcmVudGhlc2VzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAwOwotICAgICAgICAgICAgICAgICAg
ICAkcG90ZW50aWFsX25hbWUgPSAiIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgaWYgKCEkcG90ZW50aWFsX3N0YXJ0KSB7Ci0gICAgICAgICAgICAgICAgICAgICRwb3RlbnRp
YWxfc3RhcnQgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgd2FybiAibWlzc2luZyBjbG9zZSBicmFjZXMgaW4gJGZpbGVfbmFtZSAocHJvYmFibGUgc3Rh
cnQgYXQgJGJyYWNlX3N0YXJ0KVxuIiBpZiAoJGluX2JyYWNlcyA+IDApOwotICAgIHdhcm4gInRv
byBtYW55IGNsb3NlIGJyYWNlcyBpbiAkZmlsZV9uYW1lIChwcm9iYWJsZSBzdGFydCBhdCAkYnJh
Y2VfZW5kKVxuIiBpZiAoJGluX2JyYWNlcyA8IDApOwotCi0gICAgd2FybiAibWlzbWF0Y2hlZCBw
YXJlbnRoZXNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9wYXJlbnRoZXNlczsKLQotICAgIHJl
dHVybiBkZWxldGVfbmFtZXNwYWNlc19mcm9tX3Jhbmdlc19mb3JfY3BwKEByYW5nZXMsIEBhbGxf
bmFtZXNwYWNlcyk7Ci19Ci0KLQotIyBUYWtlIGluIHJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2Yg
bGluZSByYW5nZXMgZm9yIEMgZnVuY3Rpb25zIGluIGEgZ2l2ZW4gZmlsZSAKLSMgYW5kIGFuIGFy
cmF5IG9mIG5hbWVzcGFjZXMgZGVjbGFyZWQgaW4gdGhhdCBmaWxlIGFuZCByZXR1cm4gYW4gdXBk
YXRlZAotIyBsaXN0IG9mIGxpbmUgcmFuZ2VzIHdpdGggdGhlIG5hbWVzcGFjZXMgcmVtb3ZlZC4K
LQotc3ViIGRlbGV0ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2VzX2Zvcl9jcHAoXEBcQCkKLXsKLSAg
ICBteSAoJHJhbmdlcywgJG5hbWVzcGFjZXMpID0gQF87Ci0gICAgcmV0dXJuIGdyZXAgeyFpc19m
dW5jdGlvbl9pbl9uYW1lc3BhY2UoJG5hbWVzcGFjZXMsICQkX1syXSl9IEAkcmFuZ2VzOwotfQot
Ci0KLXN1YiBpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJCQpCi17Ci0gICAgbXkgKCRuYW1lc3Bh
Y2VzLCAkZnVuY3Rpb25fbmFtZSkgPSBAXzsKLSAgICByZXR1cm4gZ3JlcCB7JF8gZXEgJGZ1bmN0
aW9uX25hbWV9IEAkbmFtZXNwYWNlczsKLX0KLQotCi0jIFJlYWQgYSBmaWxlIGFuZCBnZXQgYWxs
IHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQgbG9vayBsaWtlIEphdmEKLSMgY2xh
c3NlcywgaW50ZXJmYWNlcyBhbmQgbWV0aG9kcy4KLSMKLSMgQSBjbGFzcyBvciBpbnRlcmZhY2Ug
bmFtZSBpcyB0aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3MKLSMgYGNsYXNzJyBvciBg
aW50ZXJmYWNlJyB3aGVuIGZvbGxvd2VkIGJ5IGFuIG9wZW4gY3VybHkgYnJhY2UgYW5kIG5vdAot
IyBhIHNlbWljb2xvbi4gSXQgY2FuIGFwcGVhciBhdCB0aGUgdG9wIGxldmVsLCBvciBpbnNpZGUg
YW5vdGhlciBjbGFzcwotIyBvciBpbnRlcmZhY2UgYmxvY2ssIGJ1dCBub3QgaW5zaWRlIGEgZnVu
Y3Rpb24gYmxvY2sKLSMKLSMgQSBjbGFzcyBvciBpbnRlcmZhY2Ugc3RhcnRzIGF0IHRoZSBmaXJz
dCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGNsb3NlCi0jIGJyYWNlIG9yIGFmdGVyIHRoZSBm
dW5jdGlvbiBuYW1lIGFuZCBlbmRzIGF0IHRoZSBjbG9zZSBicmFjZS4KLSMKLSMgQSBmdW5jdGlv
biBuYW1lIGlzIHRoZSBsYXN0IHdvcmQgYmVmb3JlIGFuIG9wZW4gcGFyZW50aGVzaXMgYmVmb3Jl
Ci0jIGFuIG9wZW4gYnJhY2UgcmF0aGVyIHRoYW4gYSBzZW1pY29sb24uIEl0IGNhbiBhcHBlYXIg
YXQgdG9wIGxldmVsIG9yCi0jIGluc2lkZSBhIGNsYXNzIG9yIGludGVyZmFjZSBibG9jaywgYnV0
IG5vdCBpbnNpZGUgYSBmdW5jdGlvbiBibG9jay4KLSMKLSMgQSBmdW5jdGlvbiBzdGFydHMgYXQg
dGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgZmlyc3QgY2xvc2UKLSMgYnJhY2Ugb3IgYWZ0
ZXIgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhlIGNsb3NlIGJyYWNlLgotIwotIyBD
b21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3IgYWxsIGJ1
dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczog
WyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhKCQkKQotewotICAgIG15ICgkZmlsZV9oYW5kbGUsICRm
aWxlX25hbWUpID0gQF87Ci0KLSAgICBteSBAY3VycmVudF9zY29wZXM7Ci0KLSAgICBteSBAcmFu
Z2VzOwotCi0gICAgbXkgJGluX2NvbW1lbnQgPSAwOwotICAgIG15ICRpbl9tYWNybyA9IDA7Ci0g
ICAgbXkgJGluX3BhcmVudGhlc2VzID0gMDsKLSAgICBteSAkaW5fYnJhY2VzID0gMDsKLSAgICBt
eSAkaW5fbm9uX2Jsb2NrX2JyYWNlcyA9IDA7Ci0gICAgbXkgJGNsYXNzX29yX2ludGVyZmFjZV9q
dXN0X3NlZW4gPSAwOwotICAgIG15ICRpbl9jbGFzc19kZWNsYXJhdGlvbiA9IDA7Ci0KLSAgICBt
eSAkd29yZCA9ICIiOwotCi0gICAgbXkgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgbXkgJHBv
dGVudGlhbF9uYW1lID0gIiI7Ci0gICAgbXkgJHBvdGVudGlhbF9uYW1lX2lzX2NsYXNzX29yX2lu
dGVyZmFjZSA9IDA7Ci0KLSAgICBteSAkc3RhcnQgPSAwOwotICAgIG15ICRuYW1lID0gIiI7Ci0g
ICAgbXkgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAwOwotCi0gICAgd2hp
bGUgKDwkZmlsZV9oYW5kbGU+KSB7Ci0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1s
aW5lIGNvbW1lbnQuCi0gICAgICAgIGlmICgkaW5fY29tbWVudCkgewotICAgICAgICAgICAgbmV4
dCB1bmxlc3Mgcy0uKlwqLy0tOwotICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAwOwotICAgICAg
ICB9Ci0KLSAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG1hY3JvLgotICAgICAgICBpZiAoJGlu
X21hY3JvKSB7Ci0gICAgICAgICAgICAkaW5fbWFjcm8gPSAwIHVubGVzcyAvXFwkLzsKLSAgICAg
ICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAjIEhhbmRsZSBzdGFydCBvZiBtYWNy
byAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUpLgotICAgICAgICBpZiAoL15ccypcIy8p
IHsKLSAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYgL14oW15cXF18XFwuKSpcXCQvOwotICAg
ICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbW1lbnRzIGFu
ZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgd2hpbGUgKG0tKC9cKnwvL3xcJ3xcIiktKSB7ICMgXCcg
YW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5Ci0gICAgICAgICAgICBteSAkbWF0Y2gg
PSAkMTsKLSAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEgIi8qIikgewotICAgICAgICAgICAgICAg
IGlmICghcy0vXCouKj9cKi8tLSkgewotICAgICAgICAgICAgICAgICAgICBzLS9cKi4qLS07Ci0g
ICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikgewotICAgICAgICAgICAgICAgIHMt
Ly8uKi0tOwotICAgICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKLSAgICAgICAgICAgICAgICBp
ZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0tKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKLSAg
ICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICMgRmluZCBmdW5jdGlvbiBuYW1lcy4KLSAg
ICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fTtdKS1nKSB7Ci0gICAgICAgICAgICAjIE9wZW4gcGFy
ZW50aGVzaXMuCi0gICAgICAgICAgICBpZiAoJDEgZXEgIigiKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9u
YW1lID0gJHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZV9pc19jbGFz
c19vcl9pbnRlcmZhY2UgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAk
aW5fcGFyZW50aGVzZXMrKzsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lzLgotICAgICAgICAgICAgaWYgKCQxIGVx
ICIpIikgewotICAgICAgICAgICAgICAgICRpbl9wYXJlbnRoZXNlcy0tOwotICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgT3BlbiBicmFjZS4KLSAg
ICAgICAgICAgIGlmICgkMSBlcSAieyIpIHsKLSAgICAgICAgICAgICAgICAkaW5fY2xhc3NfZGVj
bGFyYXRpb24gPSAwOwotCi0gICAgICAgICAgICAgICAgIyBQcm9tb3RlIHBvdGVudGlhbCBuYW1l
IHRvIHJlYWwgZnVuY3Rpb24gbmFtZSBhdCB0aGUKLSAgICAgICAgICAgICAgICAjIHN0YXJ0IG9m
IHRoZSBvdXRlciBsZXZlbCBzZXQgb2YgYnJhY2VzIChmdW5jdGlvbi9jbGFzcy9pbnRlcmZhY2Ug
Ym9keT8pLgotICAgICAgICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19icmFjZXMKLSAgICAg
ICAgICAgICAgICAgICAgYW5kICghJGluX2JyYWNlcyBvciAkY3VycmVudF9uYW1lX2lzX2NsYXNz
X29yX2ludGVyZmFjZSkKLSAgICAgICAgICAgICAgICAgICAgYW5kICRwb3RlbnRpYWxfc3RhcnQp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2ggQHJhbmdlcywgWyAkc3RhcnQsICgkLiAtIDEpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbiAoJy4nLCBAY3VycmVudF9zY29wZXMpIF07
Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotCi0gICAgICAgICAgICAgICAgICAgICRjdXJyZW50
X25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gJHBvdGVudGlhbF9uYW1lX2lzX2NsYXNzX29y
X2ludGVyZmFjZTsKLQotICAgICAgICAgICAgICAgICAgICAkc3RhcnQgPSAkcG90ZW50aWFsX3N0
YXJ0OwotICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRwb3RlbnRpYWxfbmFtZTsKLQotICAg
ICAgICAgICAgICAgICAgICBwdXNoIChAY3VycmVudF9zY29wZXMsICRuYW1lKTsKLSAgICAgICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAkaW5fbm9uX2Jsb2NrX2JyYWNl
cysrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFt
ZSA9ICIiOwotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAwOwotCi0gICAgICAg
ICAgICAgICAgJGluX2JyYWNlcysrOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICMgQ2xvc2UgYnJhY2UuCi0gICAgICAgICAgICBpZiAoJDEgZXEg
In0iKSB7Ci0gICAgICAgICAgICAgICAgJGluX2JyYWNlcy0tOwotCi0gICAgICAgICAgICAgICAg
IyBFbmQgb2YgYW4gb3V0ZXIgbGV2ZWwgc2V0IG9mIGJyYWNlcy4KLSAgICAgICAgICAgICAgICAj
IFRoaXMgY291bGQgYmUgYSBmdW5jdGlvbiBib2R5LgotICAgICAgICAgICAgICAgIGlmICghJGlu
X25vbl9ibG9ja19icmFjZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJHN0YXJ0LCAkLiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luICgnLicsIEBjdXJyZW50X3Nj
b3BlcykgXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcG9wIChAY3VycmVudF9zY29wZXMp
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGN1cnJlbnRfc2NvcGVzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZh
Y2UgPSAxOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJC4gKyAxOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gICRjdXJyZW50X3Njb3Blc1skI2N1
cnJlbnRfc2NvcGVzLTFdOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFj
ZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICAiIjsKLSAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgICAgICRpbl9ub25fYmxvY2tfYnJhY2VzLS0gaWYgJGluX25vbl9ibG9ja19i
cmFjZXM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9z
dGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAg
ICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBTZW1pY29sb24u
Ci0gICAgICAgICAgICBpZiAoJDEgZXEgIjsiKSB7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlh
bF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAg
ICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCQxIGVx
ICJjbGFzcyIpIHsKLSAgICAgICAgICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAxOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIgb3IgKCEkaW5fY2xh
c3NfZGVjbGFyYXRpb24gYW5kICQxIGVxICJpbnRlcmZhY2UiKSkgewotICAgICAgICAgICAgICAg
ICRjbGFzc19vcl9pbnRlcmZhY2VfanVzdF9zZWVuID0gMTsKLSAgICAgICAgICAgICAgICBuZXh0
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIFdvcmQuCi0gICAgICAgICAgICAkd29y
ZCA9ICQxOwotICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4pIHsKLSAgICAgICAgICAgICAg
ICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRwb3Rl
bnRpYWxfc3RhcnQgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAgJGNsYXNzX29yX2ludGVyZmFj
ZV9qdXN0X3NlZW4gPSAwOwotICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVfaXNf
Y2xhc3Nfb3JfaW50ZXJmYWNlID0gMTsKLSAgICAgICAgICAgICAgICAgICAgbmV4dDsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoISRwb3RlbnRpYWxf
c3RhcnQpIHsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47Ci0gICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAkY2xhc3Nfb3JfaW50ZXJmYWNlX2p1c3Rfc2VlbiA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICB3YXJuICJtaXNtYXRjaGVkIGJyYWNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9icmFj
ZXM7Ci0gICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRoZXNlcyBpbiAkZmlsZV9uYW1lXG4iIGlm
ICRpbl9wYXJlbnRoZXNlczsKLQotICAgIHJldHVybiBAcmFuZ2VzOwotfQotCi0KLQotIyBSZWFk
IGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxv
b2sgbGlrZQotIyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyBvciBtZXRob2RzLgotIwotIyBBIGZ1bmN0
aW9uIG5hbWUgaXMgdGhlIHdvcmQgdGhhdCBpbW1lZGlhdGVseSBmb2xsb3dzIGBmdW5jdGlvbicg
d2hlbgotIyBmb2xsb3dlZCBieSBhbiBvcGVuIGN1cmx5IGJyYWNlLiBJdCBjYW4gYXBwZWFyIGF0
IHRoZSB0b3AgbGV2ZWwsCi0jIG9yIGluc2lkZSBvdGhlciBmdW5jdGlvbnMuIEZvciBleGFtcGxl
OgotIwotIyAgICBmdW5jdGlvbiBuYW1lKCkgeyAvLyAobmFtZSkKLSMgICAgICAgIGZ1bmN0aW9u
IGlubmVyKCkgeyB9IC8vIChuYW1lLmlubmVyKQotIyAgICB9Ci0jCi0jIEFuIGFub255bW91cyBm
dW5jdGlvbiBuYW1lIGlzIHRoZSBpZGVudGlmaWVyIG9uIHRoZSBsZWZ0IGhhbmQgc2lkZSBvZgot
IyBhbiBhc3NpZ25tZW50IHdpdGggdGhlIGVxdWFscyBvcGVyYXRvciBvciBvYmplY3Qgbm90YXRp
b24gdGhhdCBoYXMgYQotIyB2YWx1ZSBzdGFydGluZyB3aXRoIGBmdW5jdGlvbicgZm9sbG93ZWQg
YW4gb3BlbiBjdXJseSBicmFjZS4KLSMgRm9yIGV4YW1wbGU6Ci0jCi0jICAgIG5hbWVzcGFjZSA9
IHsKLSMgICAgICAgIG5hbWU6IGZ1bmN0aW9uKCkge30gLy8gKG5hbWVzcGFjZS5uYW1lKQotIyAg
ICB9Ci0jICAgIG5hbWVzcGFjZS5Gb28gPSBmdW5jdGlvbigpIHt9IC8vIChuYW1lc3BhY2UuRm9v
KQotIwotIyBBIGdldHRlciBvciBzZXR0ZXIgbmFtZSBpcyB0aGUgd29yZCB0aGF0IGltbWVkaWF0
ZWx5IGZvbGxvd3MgYGdldCcgb3IKLSMgYHNldCcgd2hlbiBmb2xsb3dlZCBieSBwYXJhbXMgYW5k
IGFuIG9wZW4gY3VybHkgYnJhY2UuIEZvciBleGFtcGxlOgotIwotIyAgICBuYW1lc3BhY2UgPSB7
Ci0jICAgICAgZ2V0IGZvbygpIHt9IC8vIChuYW1lc3BhY2UuZ2V0IGZvbykKLSMgICAgfQotIwot
IyBBIG1ldGhvZCBuYW1lIGlzIHRoZSB3b3JkIGltbWVkaWF0ZWx5IGJlZm9yZSBwYXJlbnRoZXNp
cywgd2l0aCBhbiBvcGVuCi0jIGN1cmx5IGJyYWNlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBjbG9z
aW5nIHBhcmVudGhlc2lzLiBGb3IgYSBjbGFzcyBleHByZXNzaW9uCi0jIHdlIHRha2UgdGhlIGFz
c2lnbm1lbnQgaWRlbnRpZmllciBpbnN0ZWFkIG9mIHRoZSBjbGFzcyBuYW1lIGZvciBuYW1lc3Bh
Y2luZy4KLSMKLSMgICAgbmFtZXNwYWNlLkZvbyA9IGNsYXNzIERvZXNOb3RNYXR0ZXIgZXh0ZW5k
cyBCYXIgewotIyAgICAgICAgY29uc3RydWN0b3IoKSB7fSAvLyAobmFtZXNwYWNlLkZvbykKLSMg
ICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5zdGF0aWNN
ZXRob2QpCi0jICAgICAgICBpbnN0YW5jZU1ldGhvZCgpIHt9IC8vIChuYW1lc3BhY2UuRm9vLnBy
b3RvdHlwZS5pbnN0YW5jZU1ldGhvZCkKLSMgICAgICAgIGdldCBnZXR0ZXIoKSB7fSAvLyAobmFt
ZXNwYWNlLkZvby5wcm90b3R5cGUuZ2V0IGdldHRlcikKLSMgICAgfQotIyAgICBjbGFzcyBDbGFz
c05hbWUgewotIyAgICAgICAgY29uc3RydWN0b3IoKSB7fSAvLyAoQ2xhc3NOYW1lKQotIyAgICAg
ICAgbWV0aG9kKCkge30gLy8gKENsYXNzTmFtZS5wcm90b3R5cGUubWV0aG9kKQotIyAgICB9Ci0j
Ci0jIE1ldGhvZHMgbWF5IGV4aXN0IGluIG9iamVjdCBsaXRlcmFscywgb3V0c2lkZSBvZiBjbGFz
c2VzLgotIwotIyAgIEZvby5wcm90b3R5cGUgPSB7Ci0jICAgICAgIG1ldGhvZCgpIHt9LCAvLyAo
Rm9vLnByb3RvdHlwZS5tZXRob2QpCi0jICAgICAgIG90aGVyTWV0aG9kKCkge30gLy8gKEZvby5w
cm90b3R5cGUub3RoZXJNZXRob2QpCi0jICAgfQotIwotIyBDb21tZW50IGhhbmRsaW5nIGlzIHNp
bXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3IgYWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMu
Ci0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGlu
ZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9q
YXZhc2NyaXB0KCQkKQotewotICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwot
Ci0gICAgbXkgQGN1cnJlbnRTY29wZXM7Ci0gICAgbXkgQGN1cnJlbnRJZGVudGlmaWVyczsKLSAg
ICBteSBAY3VycmVudFBhcnNpbmdNb2RlID0gKCJnbG9iYWwiKTsKLSAgICBteSBAY3VycmVudEZ1
bmN0aW9uTmFtZXM7Ci0gICAgbXkgQGN1cnJlbnRGdW5jdGlvbkRlcHRoczsKLSAgICBteSBAY3Vy
cmVudEZ1bmN0aW9uU3RhcnRMaW5lczsKLQotICAgIG15IEByYW5nZXM7Ci0KLSAgICBteSAkaW5D
b21tZW50ID0gMDsKLSAgICBteSAkaW5RdW90ZWRUZXh0ID0gIiI7Ci0gICAgbXkgJGluRXh0ZW5k
cyA9IDA7Ci0gICAgbXkgJGluTWV0aG9kID0gMDsKLSAgICBteSAkaW5Bbm9ueW1vdXNGdW5jdGlv
blBhcmFtZXRlcnMgPSAwOwotICAgIG15ICRwYXJlbnRoZXNlc0RlcHRoID0gMDsKLSAgICBteSAk
Z2xvYmFsUGFyZW50aGVzZXNEZXB0aCA9IDA7Ci0gICAgbXkgJGJyYWNlc0RlcHRoID0gMDsKLQot
ICAgIG15ICRjbGFzc0p1c3RTZWVuID0gMDsKLSAgICBteSAkcGFyZW50aGVzaXNKdXN0U2VlbiA9
IDA7Ci0gICAgbXkgJGZ1bmN0aW9uSnVzdFNlZW4gPSAwOwotICAgIG15ICRnZXR0ZXJKdXN0U2Vl
biA9IDA7Ci0gICAgbXkgJHNldHRlckp1c3RTZWVuID0gMDsKLSAgICBteSAkYXN5bmNKdXN0U2Vl
biA9IDA7Ci0gICAgbXkgJGFzc2lnbm1lbnRKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJHN0YXRpY09y
Q29udHJ1Y3RvclNlZW4gPSAwOwotCi0gICAgbXkgJGN1cnJlbnRUb2tlbiA9ICIiOwotICAgIG15
ICRsYXN0VG9rZW4gPSAiIjsKLSAgICBteSAkcG9zc2libGVNZXRob2ROYW1lID0gIiI7Ci0gICAg
bXkgJHdvcmQgPSAiIjsKLQotICAgIHdoaWxlICg8JGZpbGVIYW5kbGU+KSB7Ci0gICAgICAgICMg
SGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQuCi0gICAgICAgIGlmICgkaW5Db21t
ZW50KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyBzLS4qXCovLS07Ci0gICAgICAgICAgICAk
aW5Db21tZW50ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBx
dW90ZWQgdGV4dC4KLSAgICAgICAgaWYgKCRpblF1b3RlZFRleHQgbmUgIiIpIHsKLSAgICAgICAg
ICAgIG5leHQgaWYgL1xcJC87Ci0gICAgICAgICAgICBzLShbXlxcXXxcXC4pKj8kaW5RdW90ZWRU
ZXh0LS07Ci0gICAgICAgICAgICAkaW5RdW90ZWRUZXh0ID0gIiI7Ci0gICAgICAgIH0KLQotICAg
ICAgICAjIEhhbmRsZSBjb21tZW50cyBhbmQgcXVvdGVkIHRleHQuCi0gICAgICAgIHdoaWxlICht
LSgvXCp8Ly98XCd8XCIpLSkgeyAjIFwnIGFuZCBcIiBrZWVwIGVtYWNzIHBlcmwgbW9kZSBoYXBw
eQotICAgICAgICAgICAgbXkgJG1hdGNoID0gJDE7Ci0gICAgICAgICAgICBpZiAoJG1hdGNoIGVx
ICcvKicpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXMtL1wqLio/XCovLS0pIHsKLSAgICAgICAg
ICAgICAgICAgICAgcy0vXCouKi0tOwotICAgICAgICAgICAgICAgICAgICAkaW5Db21tZW50ID0g
MTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgJy8v
JykgewotICAgICAgICAgICAgICAgIHMtLy8uKi0tOwotICAgICAgICAgICAgfSBlbHNlIHsgIyAn
IG9yICIKLSAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC1z
dHJpbmdfYXBwZWFyZWRfaGVyZS0pIHsKLSAgICAgICAgICAgICAgICAgICAgJGluUXVvdGVkVGV4
dCA9ICRtYXRjaCBpZiAvXFwkLzsKLSAgICAgICAgICAgICAgICAgICAgd2FybiAibWlzbWF0Y2hl
ZCBxdW90ZXMgYXQgbGluZSAkLiBpbiAkZmlsZU5hbWVcbiIgaWYgJGluUXVvdGVkVGV4dCBlcSAi
IjsKLSAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0tOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICMgRmluZCBmdW5jdGlvbiBuYW1l
cy4KLSAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fT06OywuXSktZykgewotICAgICAgICAgICAg
IyBTa2lwIGV2ZXJ5dGhpbmcgdW50aWwgInsiIGFmdGVyIGV4dGVuZHMuCi0gICAgICAgICAgICBp
ZiAoJGluRXh0ZW5kcykgewotICAgICAgICAgICAgICAgIG5leHQgaWYgJDEgbmUgJ3snOwotICAg
ICAgICAgICAgICAgICRpbkV4dGVuZHMgPSAwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAkbGFzdFRva2VuID0gJGN1cnJlbnRUb2tlbjsKLSAgICAgICAgICAgICRjdXJyZW50VG9rZW4g
PSAkMTsKLQotICAgICAgICAgICAgIyBPcGVuIHBhcmVudGhlc2lzLgotICAgICAgICAgICAgaWYg
KCQxIGVxICcoJykgewotICAgICAgICAgICAgICAgICRwYXJlbnRoZXNlc0RlcHRoKys7Ci0gICAg
ICAgICAgICAgICAgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGgrKyBpZiAkY3VycmVudFBhcnNpbmdN
b2RlWyQjY3VycmVudFBhcnNpbmdNb2RlXSBlcSAiZ2xvYmFsIjsKLSAgICAgICAgICAgICAgICAk
cG9zc2libGVNZXRob2ROYW1lID0gam9pbignLicsIEBjdXJyZW50SWRlbnRpZmllcnMpOwotICAg
ICAgICAgICAgICAgICRpbkFub255bW91c0Z1bmN0aW9uUGFyYW1ldGVycyA9IDEgaWYgJGZ1bmN0
aW9uSnVzdFNlZW47Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uSnVzdFNlZW4gPSAwOwotICAg
ICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgQ2xvc2Ug
cGFyZW50aGVzaXMuCi0gICAgICAgICAgICBpZiAoJDEgZXEgJyknKSB7Ci0gICAgICAgICAgICAg
ICAgJHBhcmVudGhlc2VzRGVwdGgtLTsKLSAgICAgICAgICAgICAgICAkZ2xvYmFsUGFyZW50aGVz
ZXNEZXB0aC0tIGlmICRjdXJyZW50UGFyc2luZ01vZGVbJCNjdXJyZW50UGFyc2luZ01vZGVdIGVx
ICJnbG9iYWwiOwotICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRpZmllcnMgPSAoKSBpZiAk
aW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnM7Ci0gICAgICAgICAgICAgICAgJGluQW5vbnlt
b3VzRnVuY3Rpb25QYXJhbWV0ZXJzID0gMDsKLSAgICAgICAgICAgICAgICAkcGFyZW50aGVzaXNK
dXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgIyBPcGVuIGJyYWNlLgotICAgICAgICAgICAgaWYgKCQxIGVxICd7JykgewotICAg
ICAgICAgICAgICAgIG15ICRtZXRob2ROYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbXkgJG1v
ZGUgPSAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3VycmVudFBhcnNpbmdNb2RlXTsKLQotICAgICAg
ICAgICAgICAgICMgTWV0aG9kLgotICAgICAgICAgICAgICAgIGlmICgoJG1vZGUgZXEgJ2NsYXNz
JyBvciAkbW9kZSBlcSAnZ2xvYmFsJykgYW5kICRwYXJlbnRoZXNpc0p1c3RTZWVuIGFuZCAoJHN0
YXRpY09yQ29udHJ1Y3RvclNlZW4gb3IgJHBvc3NpYmxlTWV0aG9kTmFtZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCRtb2RlIGVxICdjbGFzcycpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICRtZXRob2ROYW1lID0gam9pbignLicsICRzdGF0aWNPckNvbnRydWN0b3JTZWVuID8gIiIg
OiAicHJvdG90eXBlIiwgJHBvc3NpYmxlTWV0aG9kTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kTmFtZSA9ICRwb3NzaWJs
ZU1ldGhvZE5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAg
ICAkbWV0aG9kTmFtZSA9fiBzL1wuezIsfS9cLi9nOyAjIFJlbW92ZXMgY29uc2VjdXRpdmUgcGVy
aW9kcy4KLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZE5hbWUgPX4gcy9cLiQvLzsgIyBSZW1v
dmUgdHJhaWxpbmcgcGVyaW9kLgotCi0gICAgICAgICAgICAgICAgICAgIG15ICRjdXJyZW50TWV0
aG9kID0gam9pbignLicsIEBjdXJyZW50U2NvcGVzLCAkbWV0aG9kTmFtZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICRjdXJyZW50TWV0aG9kID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25z
ZWN1dGl2ZSBwZXJpb2RzLgotICAgICAgICAgICAgICAgICAgICAkY3VycmVudE1ldGhvZCA9fiBz
L1wuJC8vOyAjIFJlbW92ZSB0cmFpbGluZyBwZXJpb2QuCi0KLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAibWV0aG9kIik7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVudE1ldGhvZCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbkRlcHRocywgJGJyYWNlc0RlcHRoKTsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcywgJC4pOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICRicmFjZXNEZXB0aCsrOwotICAg
ICAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsKLQotICAgICAgICAgICAgICAgIHB1
c2goQGN1cnJlbnRTY29wZXMsIGpvaW4oJy4nLCAkbWV0aG9kTmFtZSA/ICRtZXRob2ROYW1lIDog
QGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRpZmll
cnMgPSAoKTsKLQotICAgICAgICAgICAgICAgICRzdGF0aWNPckNvbnRydWN0b3JTZWVuID0gMDsK
LSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIENs
b3NlIGJyYWNlLgotICAgICAgICAgICAgaWYgKCQxIGVxICd9JykgewotICAgICAgICAgICAgICAg
ICRicmFjZXNEZXB0aC0tOwotICAgICAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsK
LQotICAgICAgICAgICAgICAgIGlmIChAY3VycmVudEZ1bmN0aW9uRGVwdGhzIGFuZCAkYnJhY2Vz
RGVwdGggPT0gJGN1cnJlbnRGdW5jdGlvbkRlcHRoc1skI2N1cnJlbnRGdW5jdGlvbkRlcHRoc10p
IHsKLSAgICAgICAgICAgICAgICAgICAgcG9wKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMpOwotICAg
ICAgICAgICAgICAgICAgICBwb3AoQGN1cnJlbnRQYXJzaW5nTW9kZSk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgbXkgJGN1cnJlbnROYW1lID0gcG9wKEBjdXJyZW50RnVuY3Rpb25OYW1lcyk7Ci0g
ICAgICAgICAgICAgICAgICAgIG15ICRzdGFydCA9IHBvcChAY3VycmVudEZ1bmN0aW9uU3RhcnRM
aW5lcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnROYW1lID1+IHMvXlwuLy9nOyAj
IFJlbW92ZXMgbGVhZGluZyBwZXJpb2RzLgotCi0gICAgICAgICAgICAgICAgICAgIHB1c2goQHJh
bmdlcywgWyRzdGFydCwgJC4sICRjdXJyZW50TmFtZV0pOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIHBvcChAY3VycmVudFNjb3Blcyk7Ci0gICAgICAgICAgICAgICAgQGN1
cnJlbnRJZGVudGlmaWVycyA9ICgpOwotCi0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgIyBEb3QuCi0gICAgICAgICAgICBpZiAoJDEgZXEgJy4nKSB7
Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBT
ZW1pY29sb24gb3IgY29tbWEuCi0gICAgICAgICAgICBpZiAoJDEgZXEgJzsnIG9yICQxIGVxICcs
JykgewotICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRpZmllcnMgPSAoKTsKLSAgICAgICAg
ICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIENsYXNzLgotICAg
ICAgICAgICAgaWYgKCQxIGVxICdjbGFzcycpIHsKLSAgICAgICAgICAgICAgICAkY2xhc3NKdXN0
U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgIyBFeHRlbmRzLgotICAgICAgICAgICAgaWYgKCQxIGVxICdleHRlbmRzJykgewotICAg
ICAgICAgICAgICAgICRpbkV4dGVuZHMgPSAxOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgRnVuY3Rpb24uCi0gICAgICAgICAgICBpZiAoJDEg
ZXEgJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMTsK
LQotICAgICAgICAgICAgICAgIGlmICgkYXNzaWdubWVudEp1c3RTZWVuKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSBqb2luKCcuJywgKEBjdXJyZW50U2NvcGVz
LCBAY3VycmVudElkZW50aWZpZXJzKSk7Ci0gICAgICAgICAgICAgICAgICAgICRjdXJyZW50RnVu
Y3Rpb24gPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCi0K
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAiZnVuY3Rpb24i
KTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uTmFtZXMsICRjdXJy
ZW50RnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25E
ZXB0aHMsICRicmFjZXNEZXB0aCk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRG
dW5jdGlvblN0YXJ0TGluZXMsICQuKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
ICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIEdldHRlciBwcmVmaXgu
Ci0gICAgICAgICAgICBpZiAoJDEgZXEgJ2dldCcpIHsKLSAgICAgICAgICAgICAgICBuZXh0IGlm
ICRsYXN0VG9rZW4gZXEgJy4nOyAjIEF2b2lkIG1hcC5nZXQoLi4uKS4KLSAgICAgICAgICAgICAg
ICAkZ2V0dGVySnVzdFNlZW4gPSAxOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICMgU2V0dGVyIHByZWZpeC4KLSAgICAgICAgICAgIGlmICgkMSBl
cSAnc2V0JykgewotICAgICAgICAgICAgICAgIG5leHQgaWYgJGxhc3RUb2tlbiBlcSAnLic7ICMg
QXZvaWQgbWFwLnNldCguLi4pLgotICAgICAgICAgICAgICAgICRzZXR0ZXJKdXN0U2VlbiA9IDE7
Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBB
c3luYyBwcmVmaXguCi0gICAgICAgICAgICBpZiAoJDEgZXEgJ2FzeW5jJykgewotICAgICAgICAg
ICAgICAgIG5leHQgaWYgJGxhc3RUb2tlbiBlcSAnLic7Ci0gICAgICAgICAgICAgICAgJGFzeW5j
SnVzdFNlZW4gPSAxOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICMgU3RhdGljLgotICAgICAgICAgICAgaWYgKCQxIGVxICdzdGF0aWMnIG9yICQx
IGVxICdjb25zdHJ1Y3RvcicpIHsKLSAgICAgICAgICAgICAgICAkc3RhdGljT3JDb250cnVjdG9y
U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgIyBBc3NpZ25tZW50IG9wZXJhdG9yLgotICAgICAgICAgICAgaWYgKCQxIGVxICc9JyBv
ciAkMSBlcSAnOicpIHsKLSAgICAgICAgICAgICAgICAkYXNzaWdubWVudEp1c3RTZWVuID0gMTsK
LSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBuZXh0
IGlmICRwYXJlbnRoZXNlc0RlcHRoID4gJGdsb2JhbFBhcmVudGhlc2VzRGVwdGg7Ci0KLSAgICAg
ICAgICAgICMgV29yZC4KLSAgICAgICAgICAgICR3b3JkID0gJDE7Ci0KLSAgICAgICAgICAgIGlm
ICgkY2xhc3NKdXN0U2VlbikgewotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRJZGVudGlm
aWVycywgJHdvcmQpIGlmICEkYXNzaWdubWVudEp1c3RTZWVuOwotCi0gICAgICAgICAgICAgICAg
bXkgJGN1cnJlbnRDbGFzcyA9IGpvaW4oJy4nLCAoQGN1cnJlbnRTY29wZXMsIEBjdXJyZW50SWRl
bnRpZmllcnMpKTsKLSAgICAgICAgICAgICAgICAkY3VycmVudENsYXNzID1+IHMvXC57Mix9L1wu
L2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgotCi0gICAgICAgICAgICAgICAgcHVz
aChAY3VycmVudFBhcnNpbmdNb2RlLCAiY2xhc3MiKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBj
dXJyZW50RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRDbGFzcyk7Ci0gICAgICAgICAgICAgICAgcHVz
aChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVwdGgpOwotICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsKLSAgICAgICAgICAgIH0gZWxz
aWYgKCRnZXR0ZXJKdXN0U2VlbiBvciAkc2V0dGVySnVzdFNlZW4gb3IgJGFzeW5jSnVzdFNlZW4p
IHsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJnZXQgJHdvcmQiIGlmICRnZXR0ZXJKdXN0U2Vl
bjsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJzZXQgJHdvcmQiIGlmICRzZXR0ZXJKdXN0U2Vl
bjsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJhc3luYyAkd29yZCIgaWYgJGFzeW5jSnVzdFNl
ZW47Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50SWRlbnRpZmllcnMsICR3b3JkKTsK
LQotICAgICAgICAgICAgICAgIG15ICRtb2RlID0gJGN1cnJlbnRQYXJzaW5nTW9kZVskI2N1cnJl
bnRQYXJzaW5nTW9kZV07Ci0gICAgICAgICAgICAgICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9IGpv
aW4oJy4nLCAoQGN1cnJlbnRTY29wZXMsICgkbW9kZSBlcSAnY2xhc3MnIGFuZCAhJHN0YXRpY09y
Q29udHJ1Y3RvclNlZW4pID8gInByb3RvdHlwZSIgOiAiIiwgQGN1cnJlbnRJZGVudGlmaWVycykp
OwotICAgICAgICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24gPX4gcy9cLnsyLH0vXC4vZzsgIyBS
ZW1vdmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCi0KLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJy
ZW50UGFyc2luZ01vZGUsICJmdW5jdGlvbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJl
bnRGdW5jdGlvbk5hbWVzLCAkY3VycmVudEZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICBwdXNo
KEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0aCk7Ci0gICAgICAgICAgICAgICAg
cHVzaChAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcywgJC4pOwotICAgICAgICAgICAgfSBlbHNp
ZiAoJGZ1bmN0aW9uSnVzdFNlZW4gYW5kICEkYXNzaWdubWVudEp1c3RTZWVuKSB7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAkd29yZCk7Ci0KLSAgICAgICAgICAg
ICAgICBteSAkY3VycmVudEZ1bmN0aW9uID0gam9pbignLicsIChAY3VycmVudFNjb3BlcywgQGN1
cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24gPX4g
cy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCi0KLSAgICAgICAg
ICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJmdW5jdGlvbiIpOwotICAgICAgICAg
ICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVudEZ1bmN0aW9uKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0aCk7
Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcywgJC4pOwot
ICAgICAgICAgICAgfSBlbHNpZiAoJHdvcmQgbmUgJ2lmJyBhbmQgJHdvcmQgbmUgJ2ZvcicgYW5k
ICR3b3JkIG5lICdkbycgYW5kICR3b3JkIG5lICd3aGlsZScgYW5kICR3b3JkIG5lICd3aGljaCcg
YW5kICR3b3JkIG5lICd2YXInKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudElkZW50
aWZpZXJzLCAkd29yZCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICRjbGFzc0p1c3RT
ZWVuID0gMDsKLSAgICAgICAgICAgICRwYXJlbnRoZXNpc0p1c3RTZWVuID0gMDsKLSAgICAgICAg
ICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsKLSAgICAgICAgICAgICRnZXR0ZXJKdXN0U2VlbiA9
IDA7Ci0gICAgICAgICAgICAkc2V0dGVySnVzdFNlZW4gPSAwOwotICAgICAgICAgICAgJGFzeW5j
SnVzdFNlZW4gPSAwOwotICAgICAgICAgICAgJGFzc2lnbm1lbnRKdXN0U2VlbiA9IDA7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB3YXJuICJtaXNtYXRjaGVkIGJyYWNlcyBpbiAkZmlsZU5hbWVc
biIgaWYgJGJyYWNlc0RlcHRoOwotICAgIHdhcm4gIm1pc21hdGNoZWQgcGFyZW50aGVzZXMgaW4g
JGZpbGVOYW1lXG4iIGlmICRwYXJlbnRoZXNlc0RlcHRoOwotCi0gICAgcmV0dXJuIEByYW5nZXM7
Ci19Ci0KLSMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRoZSB0
aGluZ3MgdGhhdCBsb29rIGxpa2UgUGVybCBmdW5jdGlvbnMuIEZ1bmN0aW9ucwotIyBzdGFydCBv
biBhIGxpbmUgdGhhdCBzdGFydHMgd2l0aCAic3ViICIsIGFuZCBlbmQgb24gdGhlIGZpcnN0IGxp
bmUgc3RhcnRpbmcgd2l0aCAifSIgdGhlcmVhZnRlci4KLSMKLSMgUmVzdWx0IGlzIGEgbGlzdCBv
ZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBmdW5jdGlvbiBdLgotCi1zdWIgZ2V0
X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9wZXJsKCQkKQotewotICAgIG15ICgkZmlsZUhhbmRs
ZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdlczsKLQotICAgIG15ICRjdXJyZW50
RnVuY3Rpb24gPSAiIjsKLSAgICBteSAkc3RhcnQgPSAwOwotICAgIG15ICRoZXJlRG9jdW1lbnRJ
ZGVudGlmaWVyID0gIiI7Ci0KLSAgICB3aGlsZSAoPCRmaWxlSGFuZGxlPikgewotICAgICAgICBj
aG9tcDsKLSAgICAgICAgaWYgKCEkaGVyZURvY3VtZW50SWRlbnRpZmllcikgewotICAgICAgICAg
ICAgaWYgKC9ec3ViXHMrKFtcd19dW1x3XGRfXSopLykgewotICAgICAgICAgICAgICAgICMgU2tp
cCBvdmVyIGZvcndhcmQgZGVjbGFyYXRpb25zLCB3aGljaCBkb24ndCBjb250YWluIGEgYnJhY2Ug
YW5kIGVuZCB3aXRoIGEgc2VtaWNvbG9uLgotICAgICAgICAgICAgICAgIG5leHQgaWYgLztccyok
LzsKLQotICAgICAgICAgICAgICAgIGlmICgkY3VycmVudEZ1bmN0aW9uKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHdhcm4gIm5lc3RlZCBmdW5jdGlvbnMgZm91bmQgYXQgdG9wLWxldmVsIGF0ICRm
aWxlTmFtZTokLlxuIjsKLSAgICAgICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICQxOwotICAgICAgICAgICAg
ICAgICRzdGFydCA9ICQuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKC88PFxzKltc
IlwnXT8oW1x3X11bXHdfXGRdKikvKSB7Ci0gICAgICAgICAgICAgICAgIyBFbnRlciBoZXJlLWRv
Y3VtZW50LgotICAgICAgICAgICAgICAgICRoZXJlRG9jdW1lbnRJZGVudGlmaWVyID0gJDE7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaW5kZXgoJF8sICJ9IikgPT0gMCkgewotICAg
ICAgICAgICAgICAgIG5leHQgdW5sZXNzICRzdGFydDsKLSAgICAgICAgICAgICAgICBwdXNoKEBy
YW5nZXMsIFskc3RhcnQsICQuLCAkY3VycmVudEZ1bmN0aW9uXSk7Ci0gICAgICAgICAgICAgICAg
JGN1cnJlbnRGdW5jdGlvbiA9ICIiOwotICAgICAgICAgICAgICAgICRzdGFydCA9IDA7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRfIGVxICRoZXJlRG9jdW1lbnRJZGVudGlmaWVy
KSB7Ci0gICAgICAgICAgICAjIEVzY2FwZSBmcm9tIGhlcmUtZG9jdW1lbnQuCi0gICAgICAgICAg
ICAkaGVyZURvY3VtZW50SWRlbnRpZmllciA9ICIiOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
cmV0dXJuIEByYW5nZXM7Ci19Ci0KLSMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxpbmUg
cmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgUHl0aG9uIGNsYXNzZXMsIG1ldGhv
ZHMsIG9yIGZ1bmN0aW9ucy4KLSMKLSMgRklYTUU6IE1heWJlIHdlIHNob3VsZCB1c2UgUHl0aG9u
J3MgYXN0IG1vZHVsZSB0byBkbyB0aGUgcGFyc2luZyBmb3IgdXM/Ci0jCi0jIFJlc3VsdCBpcyBh
IGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb24gXS4KLQot
c3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcHl0aG9uKCQkKQotewotICAgIG15ICgk
ZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdlczsKLQotICAgIG15
ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU2VudGluZWxSZWdFeCA9IHFyIyg/OiIiInwnJycpIzsK
LSAgICBteSAkbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFN0YXJ0UmVnRXggPSBxciNccyokbXVsdGls
aW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXgjOwotICAgIG15ICRtdWx0aWxpbmVTdHJpbmdM
aXRlcmFsRW5kUmVnRXggPSBxciMkbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXhc
cyokIzsKLQotICAgIG15IEBzY29wZVN0YWNrID0gKHsgbGluZSA9PiAwLCBpbmRlbnQgPT4gLTEs
IG5hbWUgPT4gdW5kZWYgfSk7Ci0gICAgbXkgJGxhc3RMaW5lID0gMDsKLSAgICBteSAkaW5Db21t
ZW50ID0gMDsKLSAgICB1bnRpbCAoJGxhc3RMaW5lKSB7Ci0gICAgICAgICRfID0gPCRmaWxlSGFu
ZGxlPjsKLSAgICAgICAgdW5sZXNzICgkXykgewotICAgICAgICAgICAgIyBUbyBwb3Agb3V0IGFs
bCBwb3BwZWQgc2NvcGVzLCBydW4gdGhlIGxvb3Agb25jZSBtb3JlIGFmdGVyCi0gICAgICAgICAg
ICAjIHdlIGVuY291bnRlcmVkIHRoZSBlbmQgb2YgdGhlIGZpbGUuCi0gICAgICAgICAgICAkXyA9
ICJwYXNzXG4iOwotICAgICAgICAgICAgJC4rKzsKLSAgICAgICAgICAgICRsYXN0TGluZSA9IDE7
Ci0gICAgICAgIH0KLSAgICAgICAgY2hvbXA7Ci0gICAgICAgIG5leHQgdW5sZXNzIC9eKFxzKiko
W14jXS4qKSQvOyAjIFNraXAgbm9uLWluZGVudGVkIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBhIGNv
bW1lbnQuCi0KLSAgICAgICAgbXkgJGluZGVudCA9IGxlbmd0aCAkMTsKLSAgICAgICAgbXkgJHJl
c3QgPSAkMjsKLSAgICAgICAgbXkgJHNjb3BlID0gJHNjb3BlU3RhY2tbLTFdOwotCi0gICAgICAg
IGlmICgkaW5kZW50IDw9ICRzY29wZS0+e2luZGVudH0pIHsKLSAgICAgICAgICAgICMgRmluZCBh
bGwgdGhlIHNjb3BlcyB0aGF0IHdlIGhhdmUganVzdCBleGl0ZWQuCi0gICAgICAgICAgICBteSAk
aSA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgJGkgPCBAc2NvcGVTdGFjazsgKyskaSkgewotICAg
ICAgICAgICAgICAgIGxhc3QgaWYgJGluZGVudCA8PSAkc2NvcGVTdGFja1skaV0tPntpbmRlbnR9
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbXkgQHBvcHBlZFNjb3BlcyA9IHNwbGljZSBA
c2NvcGVTdGFjaywgJGk7Ci0KLSAgICAgICAgICAgICMgRm9yIGVhY2ggc2NvcGUgdGhhdCB3YXMg
anVzdCBleGl0ZWQsIGFkZCBhIHJhbmdlIHRoYXQgZ29lcyBmcm9tIHRoZSBzdGFydCBvZiB0aGF0
Ci0gICAgICAgICAgICAjIHNjb3BlIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBuZXN0ZWQgc2Nv
cGUsIG9yIHRvIHRoZSBsaW5lIGp1c3QgYmVmb3JlIHRoaXMgb25lIGZvcgotICAgICAgICAgICAg
IyB0aGUgaW5uZXJtb3N0IHNjb3BlLgotICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgQHBv
cHBlZFNjb3BlczsgKyskaSkgewotICAgICAgICAgICAgICAgIG15ICRsaW5lQWZ0ZXJFbmQgPSAk
aSArIDEgPT0gQHBvcHBlZFNjb3BlcyA/ICQuIDogJHBvcHBlZFNjb3Blc1skaSArIDFdLT57bGlu
ZX07Ci0gICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBbJHBvcHBlZFNjb3Blc1skaV0tPnts
aW5lfSwgJGxpbmVBZnRlckVuZCAtIDEsICRwb3BwZWRTY29wZXNbJGldLT57bmFtZX1dOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgQHNjb3BlU3RhY2sgb3Igd2FybiAiUG9wcGVkIG9mZiBs
YXN0IHNjb3BlIGF0ICRmaWxlTmFtZTokLlxuIjsKLQotICAgICAgICAgICAgIyBTZXQgdGhlIG5v
dy1jdXJyZW50IHNjb3BlIHRvIHN0YXJ0IGF0IHRoZSBjdXJyZW50IGxpbmUuIEFueSBsaW5lcyB3
aXRoaW4gdGhpcyBzY29wZQotICAgICAgICAgICAgIyBiZWZvcmUgdGhpcyBwb2ludCBzaG91bGQg
YWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8gQHJhbmdlcy4KLSAgICAgICAgICAgICRzY29wZSA9
ICRzY29wZVN0YWNrWy0xXTsKLSAgICAgICAgICAgICRzY29wZS0+e2xpbmV9ID0gJC47Ci0gICAg
ICAgIH0KLQotICAgICAgICAjIFNraXAgbXVsdGktbGluZSBzdHJpbmcgbGl0ZXJhbHMgYW5kIGRv
Y3N0cmluZ3MuCi0gICAgICAgIG5leHQgaWYgLyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU3RhcnRS
ZWdFeC4qJG11bHRpbGluZVN0cmluZ0xpdGVyYWxFbmRSZWdFeC87Ci0gICAgICAgIGlmICghJGlu
Q29tbWVudCAmJiAvJG11bHRpbGluZVN0cmluZ0xpdGVyYWxTdGFydFJlZ0V4LykgewotICAgICAg
ICAgICAgJGluQ29tbWVudCA9IDE7Ci0gICAgICAgIH0gZWxzaWYgKCRpbkNvbW1lbnQgJiYgLyRt
dWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXgvKSB7Ci0gICAgICAgICAgICAkaW5Db21tZW50
ID0gMDsKLSAgICAgICAgfQotICAgICAgICBuZXh0IGlmICRpbkNvbW1lbnQ7Ci0KLSAgICAgICAg
bmV4dCBpZiAvXlxzKlsjJyJdLzsgIyBTa2lwIGluZGVudGVkIGFuZCBub24taW5kZW50ZWQgbGlu
ZXMgdGhhdCBiZWdpbiB3aXRoIGEgY29tbWVudCBvciBzdHJpbmcgbGl0ZXJhbCAoaW5jbHVkZXMg
ZG9jc3RyaW5ncykuCi0KLSAgICAgICAgbmV4dCB1bmxlc3MgJHJlc3QgPX4gLyg/OmNsYXNzfGRl
ZilccysoXHcrKS87Ci0gICAgICAgIG15ICRuYW1lID0gJDE7Ci0gICAgICAgIG15ICRmdWxsTmFt
ZSA9ICRzY29wZS0+e25hbWV9ID8gam9pbignLicsICRzY29wZS0+e25hbWV9LCAkbmFtZSkgOiAk
bmFtZTsKLSAgICAgICAgcHVzaCBAc2NvcGVTdGFjaywgeyBsaW5lID0+ICQuLCBpbmRlbnQgPT4g
JGluZGVudCwgbmFtZSA9PiAkZnVsbE5hbWUgfTsKLQotICAgICAgICBpZiAoJHNjb3BlLT57aW5k
ZW50fSA+PSAwKSB7Ci0gICAgICAgICAgICBwdXNoIEByYW5nZXMsIFskc2NvcGUtPntsaW5lfSwg
JC4gLSAxLCAkc2NvcGUtPntuYW1lfV07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
QHJhbmdlczsKLX0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMg
b2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDU1Mgc2VsZWN0b3JzLiAgQSBzZWxlY3RvciBp
cwotIyBhbnl0aGluZyBiZWZvcmUgYW4gb3BlbmluZyBicmFjZSBvbiBhIGxpbmUuIEEgc2VsZWN0
b3Igc3RhcnRzIGF0IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIG9wZW5pbmcKLSMgYnJhY2UgYW5k
IGVuZHMgYXQgdGhlIGNsb3NpbmcgYnJhY2UuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJp
cGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgc2VsZWN0b3IgXS4KLQotc3ViIGdldF9zZWxl
Y3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKCQkKQotewotICAgIG15ICgkZmlsZUhhbmRsZSwgJGZp
bGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdlczsKLQotICAgIG15ICRpbkNvbW1lbnQgPSAw
OwotICAgIG15ICRpbkJyYWNlID0gMDsKLSAgICBteSBAc3RhY2s7Ci0gICAgbXkgJGNvbnRleHQ7
Ci0gICAgbXkgQGN1cnJlbnRQYXJzZU1vZGUgPSAoImdsb2JhbCIpOwotICAgIG15IEBncm91cGlu
Z1N0YWNrOwotICAgIG15ICRzZWxlY3RvckJyYWNlcyA9IDA7Ci0KLSAgICB3aGlsZSAoPCRmaWxl
SGFuZGxlPikgewotICAgICAgICBmb3JlYWNoIG15ICR0b2tlbiAoc3BsaXQgbS0oXHt8XH18L1wq
fFwqLyktLCAkXykgewotICAgICAgICAgICAgaWYgKCR0b2tlbiBlcSAieyIpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoISRpbkNvbW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgJGluQnJhY2Ug
Kz0gMTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3JC
cmFjZXMgKz0gMSBpZiAkY3VycmVudFBhcnNlTW9kZVskI2N1cnJlbnRQYXJzZU1vZGVdIGVxICJz
ZWxlY3RvciI7Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgb3BlbmluZyBi
cmFjZSBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYgJHNlbGVjdG9yQnJhY2VzID4gMTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIn0iKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
ICghJGluQnJhY2Ugb3IgJGN1cnJlbnRQYXJzZU1vZGVbJCNjdXJyZW50UGFyc2VNb2RlXSBlcSAi
Z2xvYmFsIikgewotICAgICAgICAgICAgICAgICAgICAgICAgd2FybiAibWlzbWF0Y2hlZCBjbG9z
aW5nIGJyYWNlIGZvdW5kIGluICRmaWxlTmFtZTokLlxuIjsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAk
aW5CcmFjZSAtPSAxOwotCi0gICAgICAgICAgICAgICAgICAgIG15ICRwYXJzZU1vZGUgPSBwb3Ao
QGN1cnJlbnRQYXJzZU1vZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoJHBhcnNlTW9kZSBl
cSAic2VsZWN0b3IiKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAkbmFtZSA9IHBvcChA
c3RhY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHN0YXJ0TGluZSA9IHBvcChAc3Rh
Y2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGVuZExpbmUgPSAkLjsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG15ICRncm91cGluZ1ByZWZpeCA9IGpvaW4oIiAiLCBAZ3JvdXBpbmdT
dGFjayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuZ3RoICRncm91cGluZ1ByZWZp
eCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRncm91cGluZ1ByZWZpeCAuPSAiICIK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QHJhbmdlcywgWyRzdGFydExpbmUsICRlbmRMaW5lLCAkZ3JvdXBpbmdQcmVmaXggLiAkbmFtZV0p
OwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcGFyc2VNb2RlIGVxICJtZWRpYSIpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBvcChAZ3JvdXBpbmdTdGFjayk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAkc2VsZWN0b3JCcmFjZXMgPSAwOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzaWYgKCR0b2tlbiBlcSAiLyoiKSB7
Ci0gICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7Ci0gICAgICAgICAgICB9IGVsc2lmICgk
dG9rZW4gZXEgIiovIikgewotICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgY29tbWVu
dCBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYgISRpbkNvbW1lbnQ7Ci0gICAgICAgICAgICAg
ICAgJGluQ29tbWVudCA9IDA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGlmICghJGluQ29tbWVudCBhbmQgJGN1cnJlbnRQYXJzZU1vZGVbJCNjdXJyZW50UGFyc2VNb2Rl
XSBuZSAic2VsZWN0b3IiIGFuZCAkdG9rZW4gIX4gL15bXHNcdF0qJC8pIHsKLSAgICAgICAgICAg
ICAgICAgICAgJHRva2VuID1+IHMvXltcc1x0XSp8W1xzXHRdKiQvL2c7Ci0gICAgICAgICAgICAg
ICAgICAgIG15ICRzdGFydExpbmUgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCR0b2tl
biA9fiAvXlxAbWVkaWEvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50
UGFyc2VNb2RlLCAibWVkaWEiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGdyb3Vw
aW5nU3RhY2ssICR0b2tlbik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2VNb2RlLCAic2VsZWN0b3IiKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQHN0YWNrLCAoJHN0YXJ0TGluZSwgJHRva2VuKSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAjIFNvcnQgYnkgc3RhcnQgbGluZS4KLSAgICByZXR1
cm4gc29ydCB7JGEtPlswXSA8PT4gJGItPlswXX0gQHJhbmdlczsKLX0KLQotIyBSZWFkIGEgZmls
ZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlr
ZSBTd2lmdCBjbGFzc2VzLCBtZXRob2RzLAotIyBvciBmdW5jdGlvbnMuCi0jCi0jIFJlc3VsdCBp
cyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb24gXS4K
LQotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jfc3dpZnQoJCQpCi17Ci0gICAgbXkg
KCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87Ci0KLSAgICBteSBAcmFuZ2VzOwotCi0gICAg
bXkgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOwotICAgIG15ICRjdXJyZW50VHlwZSA9ICIiOwotICAg
IG15ICRmdW5jdGlvblN0YXJ0ID0gMDsKLSAgICBteSAkdHlwZVN0YXJ0ID0gMDsKLSAgICBteSAk
ZnVuY3Rpb25TY29wZURlcHRoID0gMDsKLSAgICBteSAkdHlwZVNjb3BlRGVwdGggPSAwOwotICAg
IG15ICRzY29wZURlcHRoID0gMDsKLQotICAgIHdoaWxlICg8JGZpbGVIYW5kbGU+KSB7Ci0gICAg
ICAgIGNob21wOwotICAgICAgICBuZXh0IGlmICgvXlxzKlwvXC8uKi8pOwotICAgICAgICBpZiAo
L2Z1bmNccysoW1x3X11bXHdcZF9dKilcKCguKilcKS8gfHwgL3ZhclxzKyhbXHdfXVtcd1xkX10q
KTpccysvKSB7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TY29wZURlcHRoID0gJHNjb3BlRGVwdGg7
Ci0gICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gJDE7Ci0gICAgICAgICAgICBpZiAoJDIp
IHsKLSAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiRjdXJyZW50RnVuY3Rpb24o
Ii4gcGFyc2VTd2lmdEZ1bmN0aW9uQXJncygkMikgLiAiKSI7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoJGN1cnJlbnRUeXBlKSB7Ci0gICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5j
dGlvbiA9ICIkY3VycmVudFR5cGUuJGN1cnJlbnRGdW5jdGlvbiI7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9ICQuOwotICAgICAgICB9IGVsc2lmICgvKD86Y2xh
c3N8c3RydWN0fGVudW18cHJvdG9jb2x8ZXh0ZW5zaW9uKVxzKyhbXHdfXVtcd1xkX10qKS8pIHsK
LSAgICAgICAgICAgICR0eXBlU2NvcGVEZXB0aCA9ICRzY29wZURlcHRoOwotICAgICAgICAgICAg
JGN1cnJlbnRUeXBlID0gJDE7Ci0gICAgICAgICAgICAkdHlwZVN0YXJ0ID0gJC47Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGluZGV4KCRfLCAieyIpID4gLTEpIHsKLSAgICAgICAgICAgICRzY29w
ZURlcHRoKys7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4KCRfLCAifSIpID4gLTEpIHsK
LSAgICAgICAgICAgICRzY29wZURlcHRoLS07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCRzY29w
ZURlcHRoID09ICRmdW5jdGlvblNjb3BlRGVwdGgpIHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNz
ICRmdW5jdGlvblN0YXJ0OwotICAgICAgICAgICAgcHVzaChAcmFuZ2VzLCBbJGZ1bmN0aW9uU3Rh
cnQsICQuLCAkY3VycmVudEZ1bmN0aW9uXSk7Ci0gICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9u
ID0gIiI7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9IDA7Ci0gICAgICAgIH0gZWxzaWYg
KCRzY29wZURlcHRoID09ICR0eXBlU2NvcGVEZXB0aCkgewotICAgICAgICAgICAgbmV4dCB1bmxl
c3MgJHR5cGVTdGFydDsKLSAgICAgICAgICAgICRjdXJyZW50VHlwZSA9ICIiOwotICAgICAgICAg
ICAgJHR5cGVTdGFydCA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gQHJhbmdl
czsKLX0KLQotc3ViIHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3MoJCkKLXsKLSAgICBteSAoJGZ1bmN0
aW9uQXJncykgPSBAXzsKLSAgICBteSBAd29yZHMgPSBzcGxpdCAvLCAvLCAkZnVuY3Rpb25Bcmdz
OwotICAgIG15ICRhcmdDb3VudCA9IHNjYWxhcihAd29yZHMpOwotICAgIGlmICgkYXJnQ291bnQg
PT0gMCkgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSBlbHNpZiAoJGFyZ0NvdW50ID4gMCkg
ewotICAgICAgICAjIElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyB1bm5hbWVkLCBnaXZlIGl0IHRo
ZSBuYW1lICJfIgotICAgICAgICAkd29yZHNbMF0gPX4gcy9eKFx3KzogLiopL18gJDEvOwotICAg
ICAgICByZXR1cm4gam9pbigiIiwgbWFwIHsgJF8gPX4gcy9eKFx3KykuKi8kMS87ICIkXzoiIH0g
QHdvcmRzKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3YXJuICJVbmtub3duIGFyZ3VtZW50IGNv
dW50LlxuIjsKLSAgICB9Ci19Ci0KIHN1YiBwcm9jZXNzUGF0aHMoXEApCiB7CiAgICAgbXkgKCRw
YXRocykgPSBAXzsKQEAgLTIwODYsOCArNjc2LDggQEAgc3ViIGRpZmZDb21tYW5kKCQkJCQpCiB7
CiAgICAgbXkgKCRwYXRocywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlKSA9IEBf
OwogCi0gICAgIyBUaGUgZnVuY3Rpb24gb3ZlcmxhcCBkZXRlY3Rpb24gbG9naWMgaW4gY29tcHV0
ZU1vZGlmaWVkRnVuY3Rpb25zKCkgYXNzdW1lcyB0aGF0IGl0cyBsaW5lCi0gICAgIyByYW5nZXMg
d2VyZSBmcm9tIGEgdW5pZmllZCBkaWZmIHdpdGhvdXQgYW55IGNvbnRleHQgbGluZXMuCisgICAg
IyBUaGUgZnVuY3Rpb24gb3ZlcmxhcCBkZXRlY3Rpb24gbG9naWMgaW4gd2Via2l0cGVybDo6Y2hh
bmdlbG9nOjpjb21wdXRlTW9kaWZpZWRGdW5jdGlvbnMoKQorICAgICMgYXNzdW1lcyB0aGF0IGl0
cyBsaW5lIHJhbmdlcyB3ZXJlIGZyb20gYSB1bmlmaWVkIGRpZmYgd2l0aG91dCBhbnkgY29udGV4
dCBsaW5lcy4KICAgICBteSAkY29tbWFuZDsKICAgICBpZiAoaXNTVk4oKSkgewogICAgICAgICBt
eSBAZXNjYXBlZFBhdGhzID0gbWFwKGVzY2FwZVN1YnZlcnNpb25QYXRoKCRfKSwgQCRwYXRocyk7
CkBAIC0yMTIwLDQ3ICs3MTAsNiBAQCBzdWIgc3RhdHVzQ29tbWFuZCgkJCQkKQogICAgIHJldHVy
biAiJGNvbW1hbmQgMj4mMSI7CiB9CiAKLXN1YiBhdHRyaWJ1dGVDb21tYW5kKCQkJCkKLXsKLSAg
ICBteSAoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZSwgJGF0dHIpID0gQF87Ci0KLSAgICBteSAkcmVz
dWx0OwotICAgIGlmIChpc1NWTigpKSB7Ci0gICAgICAgIG15ICRkZXZOdWxsID0gRmlsZTo6U3Bl
Yy0+ZGV2bnVsbCgpOwotICAgICAgICBteSAkZm91bmRBdHRyaWJ1dGUgPSAwOwotICAgICAgICBt
eSAkc3ViUGF0aCA9ICIuIjsKLSAgICAgICAgbXkgKEBkaXJlY3RvcnlQYXJ0cykgPSBGaWxlOjpT
cGVjLT5zcGxpdGRpcigkZmlsZSk7Ci0gICAgICAgIGZvcmVhY2ggbXkgJHBhcnQgKEBkaXJlY3Rv
cnlQYXJ0cykgewotICAgICAgICAgICAgaWYgKCRwYXJ0IGVxICIuIikgewotICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkc3ViUGF0aCA9IEZpbGU6OlNw
ZWMtPmpvaW4oJHN1YlBhdGgsICRwYXJ0KTsKLSAgICAgICAgICAgICRzdWJQYXRoID1+IHMvXlwu
XC8vLzsKLSAgICAgICAgICAgIGlmICgkZm91bmRBdHRyaWJ1dGUgfHwgZXhpc3RzICRhdHRyaWJ1
dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gJiYgJGF0dHJpYnV0ZUNhY2hlLT57JGF0dHJ9eyRz
dWJQYXRofSBlcSAiMSIpIHsKLSAgICAgICAgICAgICAgICAkYXR0cmlidXRlQ2FjaGUtPnskYXR0
cn17JHN1YlBhdGh9ID0gIjEiOwotICAgICAgICAgICAgICAgICRmb3VuZEF0dHJpYnV0ZSA9IDE7
Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG15ICRj
b21tYW5kID0gU1ZOIC4gIiBwcm9wZ2V0ICRhdHRyICckc3ViUGF0aCciOwotICAgICAgICAgICAg
bXkgJGF0dHJpYiA9ICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gfHwgYCRjb21t
YW5kIDI+ICRkZXZOdWxsYDsKLSAgICAgICAgICAgIGNob21wICRhdHRyaWI7Ci0gICAgICAgICAg
ICBpZiAoJGF0dHJpYiBlcSAiMSIpIHsKLSAgICAgICAgICAgICAgICAkZm91bmRBdHRyaWJ1dGUg
PSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgJGF0dHJpYnV0ZUNhY2hlLT57JGF0dHJ9
eyRzdWJQYXRofSA9ICRhdHRyaWIgfHwgIjAiOwotICAgICAgICB9Ci0gICAgICAgICRyZXN1bHQg
PSAkYXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JGZpbGV9OwotICAgIH0gZWxzaWYgKGlzR2l0KCkp
IHsKLSAgICAgICAgbXkgJGNvbW1hbmQgPSBHSVQgLiAiIGNoZWNrLWF0dHIgJGF0dHIgLS0gJyRm
aWxlJyI7Ci0gICAgICAgICRyZXN1bHQgPSBgJGNvbW1hbmRgOwotICAgICAgICBjaG9tcCAkcmVz
dWx0OwotICAgICAgICAkcmVzdWx0ID1+IHMvLipcVyhcdykvJDEvOwotICAgIH0KLQotICAgICRy
ZXN1bHQgPX4gcy9cRC8vZzsKLSAgICByZXR1cm4gaW50KCRyZXN1bHQgfHwgMCk7Ci19Ci0KIHN1
YiBjcmVhdGVQYXRjaENvbW1hbmQoJCQkJCkKIHsKICAgICBteSAoJGNoYW5nZWRGaWxlc1N0cmlu
ZywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlKSA9IEBfOwpAQCAtMjQ1OSwzNCAr
MTAwOCw2IEBAIHN1YiBwcm9wZXJ0eUNoYW5nZURlc2NyaXB0aW9uKCQpCiAgICAgcmV0dXJuICRk
ZXNjcmlwdGlvbjsKIH0KIAotc3ViIGV4dHJhY3RMaW5lUmFuZ2VBZnRlckNoYW5nZSgkKQotewot
ICAgIG15ICgkc3RyaW5nKSA9IEBfOwotICAgIG15ICRjaHVua1JhbmdlID0gcGFyc2VDaHVua1Jh
bmdlKCRzdHJpbmcpOwotICAgIGlmICghJGNodW5rUmFuZ2UpIHsKLSAgICAgICAgcmV0dXJuICgt
MSwgLTEpOyAjIE1hbGZvcm1lZAotICAgIH0KLSAgICBpZiAoISRjaHVua1JhbmdlLT57bmV3U3Rh
cnRpbmdMaW5lfSB8fCAhJGNodW5rUmFuZ2UtPntuZXdMaW5lQ291bnR9KSB7Ci0gICAgICAgICAj
IERlbGV0aW9uOyBubyBsaW5lcyBleGlzdCBhZnRlciBjaGFuZ2UuCi0gICAgICAgIHJldHVybiAo
JGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9LCAkY2h1bmtSYW5nZS0+e25ld1N0YXJ0aW5n
TGluZX0pOwotICAgIH0KLSAgICByZXR1cm4gKCRjaHVua1JhbmdlLT57bmV3U3RhcnRpbmdMaW5l
fSwgJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9ICsgJGNodW5rUmFuZ2UtPntuZXdMaW5l
Q291bnR9IC0gMSk7Ci19Ci0KLXN1YiBleHRyYWN0TGluZVJhbmdlQmVmb3JlQ2hhbmdlKCQpCi17
Ci0gICAgbXkgKCRzdHJpbmcpID0gQF87Ci0gICAgbXkgJGNodW5rUmFuZ2UgPSBwYXJzZUNodW5r
UmFuZ2UoJHN0cmluZyk7Ci0gICAgaWYgKCEkY2h1bmtSYW5nZSkgewotICAgICAgICByZXR1cm4g
KC0xLCAtMSk7ICMgTWFsZm9ybWVkCi0gICAgfQotICAgIGlmICghJGNodW5rUmFuZ2UtPntzdGFy
dGluZ0xpbmV9IHx8ICEkY2h1bmtSYW5nZS0+e2xpbmVDb3VudH0pIHsKLSAgICAgICAgIyBBZGRp
dGlvbjsgbm8gbGluZXMgZXhpc3RlZCBiZWZvcmUgY2hhbmdlLgotICAgICAgICByZXR1cm4gKCRj
aHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntzdGFydGluZ0xpbmV9KTsK
LSAgICB9Ci0gICAgcmV0dXJuICgkY2h1bmtSYW5nZS0+e3N0YXJ0aW5nTGluZX0sICRjaHVua1Jh
bmdlLT57c3RhcnRpbmdMaW5lfSArICRjaHVua1JhbmdlLT57bGluZUNvdW50fSAtIDEpOwotfQot
CiBzdWIgdGVzdExpc3RGb3JDaGFuZ2VMb2coQCkKIHsKICAgICBteSAoQHRlc3RzKSA9IEBfOwpA
QCAtMjU3MywxNCArMTA5NCwzIEBAIHN1YiBub3JtYWxpemVMaW5lRW5kaW5ncygkJCkKICAgICAk
c3RyaW5nID1+IHMvXHI/XG4vJGVuZGwvZzsKICAgICByZXR1cm4gJHN0cmluZzsKIH0KLQotc3Vi
IGRlY29kZUVudGl0aWVzKCQpCi17Ci0gICAgbXkgKCR0ZXh0KSA9IEBfOwotICAgICR0ZXh0ID1+
IHMvXCZsdDsvPC9nOwotICAgICR0ZXh0ID1+IHMvXCZndDsvPi9nOwotICAgICR0ZXh0ID1+IHMv
XCZxdW90Oy9cIi9nOwotICAgICR0ZXh0ID1+IHMvXCZhcG9zOy9cJy9nOwotICAgICR0ZXh0ID1+
IHMvXCZhbXA7L1wmL2c7Ci0gICAgcmV0dXJuICR0ZXh0OwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy9ydW4tbGVha3MgYi9Ub29scy9TY3JpcHRzL3J1bi1sZWFrcwppbmRleCAyMDVmYzY0
ZTJlNGEuLmU5NDM5YzExODMyZSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MK
KysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MKQEAgLTMzLDExICszMywxMiBAQCB1c2Ugd2Fy
bmluZ3M7CiAKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBHZXRvcHQ6Okxvbmc7Cit1c2UgQ2Fy
cDsKK3VzZSBGaW5kQmluOwordXNlIGxpYiAkRmluZEJpbjo6UmVhbEJpbjsKK3VzZSB3ZWJraXRw
ZXJsOjpsZWFrcyBxdyhydW5MZWFrcywgcGFyc2VMZWFrc091dHB1dCk7CiAKLXN1YiBydW5MZWFr
cygkJCk7Ci1zdWIgcGFyc2VMZWFrc091dHB1dChcQCk7CiBzdWIgcmVtb3ZlTWF0Y2hpbmdSZWNv
cmRzKFxAJFxAKTsKLXN1YiByZXBvcnRFcnJvcigkKTsKIAogc3ViIG1haW4oKQogewpAQCAtNzEs
NyArNzIsNyBAQCBzdWIgbWFpbigpCiAgICAgfQogCiAgICAgaWYgKCEkcGlkT3JFeGVjdXRhYmxl
TmFtZSkgewotICAgICAgICByZXBvcnRFcnJvcigiTWlzc2luZyBhcmd1bWVudDogcGlkIHwgZXhl
Y3V0YWJsZS4iKTsKKyAgICAgICAgY2FycCAiTWlzc2luZyBhcmd1bWVudDogcGlkIHwgZXhlY3V0
YWJsZS4iOwogICAgICAgICBwcmludCBTVERFUlIgJHVzYWdlOwogICAgICAgICByZXR1cm4gMTsK
ICAgICB9CkBAIC04Myw5ICs4NCw2IEBAIHN1YiBtYWluKCkKICAgICB9CiAKICAgICBteSAkcGFy
c2VkT3V0cHV0ID0gcGFyc2VMZWFrc091dHB1dChAJGxlYWtzT3V0cHV0KTsKLSAgICBpZiAoISRw
YXJzZWRPdXRwdXQpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQogCiAgICAgIyBGaWx0ZXIg
b3V0cHV0LgogICAgICMgRklYTUU6IEFkanVzdCB0aGUgb3ZlcmFsbCBsZWFrIGNvdW50IGluIHRo
ZSBvdXRwdXQgYWNjb3JkaW5nbHkuIFRoaXMgd2lsbCBhZmZlY3QgY2FsbGVycywgbm90YWJseSBs
ZWFrZGV0ZWN0b3IucHkuCkBAIC0xMTQsMTExICsxMTIsNiBAQCBzdWIgbWFpbigpCiAKIGV4aXQo
bWFpbigpKTsKIAotIyBSZXR1cm5zIHRoZSBvdXRwdXQgb2YgdGhlIGxlYWtzIHRvb2wgaW4gbGlz
dCBmb3JtLgotc3ViIHJ1bkxlYWtzKCQkKQotewotICAgIG15ICgkdGFyZ2V0LCAkbWVtZ3JhcGhQ
YXRoKSA9IEBfOwotCi0gICAgaWYgKGRlZmluZWQgJG1lbWdyYXBoUGF0aCkgewotICAgICAgICBg
L3Vzci9iaW4vbGVha3MgXCIkdGFyZ2V0XCIgLS1vdXRwdXRHcmFwaD1cIiRtZW1ncmFwaFBhdGhc
ImA7Ci0gICAgICAgICR0YXJnZXQgPSAkbWVtZ3JhcGhQYXRoOwotICAgIH0KLQotICAgICMgVG8g
Z2V0IGEgcmVzdWx0IHdlIGNhbiBwYXJzZSwgd2UgbmVlZCB0byBwYXNzIC0tbGlzdCB0byBhbGwg
dmVyc2lvbnMgb2YgdGhlIGxlYWtzIHRvb2wKLSAgICAjIHRoYXQgcmVjb2duaXplIGl0LCBidXQg
dGhlcmUgaXMgbm8gY2VydGFpbiB3YXkgdG8gdGVsbCBpbiBhZHZhbmNlICh0aGUgdmVyc2lvbiBv
ZiB0aGUKLSAgICAjIHRvb2wgaXMgbm90IGFsd2F5cyB0aWVkIHRvIE9TIHZlcnNpb24sIGFuZCAt
LWhlbHAgZG9lc24ndCBkb2N1bWVudCB0aGUgb3B0aW9uIGluIHNvbWUKLSAgICAjIG9mIHRoZSB0
b29sIHZlcnNpb25zIHdoZXJlIGl0J3Mgc3VwcG9ydGVkIGFuZCBuZWVkZWQpLgotICAgIG15IEBs
ZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJnZXRcIiAtLWxpc3RgOwotCi0gICAg
IyBGSVhNRTogUmVtb3ZlIHRoZSBmYWxsYmFjayBvbmNlIG1hY09TIE1vamF2ZSBpcyB0aGUgb2xk
ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uLgotICAgIG15ICRsZWFrc0V4aXRDb2RlID0gJD8gPj4gODsK
LSAgICBpZiAoJGxlYWtzRXhpdENvZGUgPiAxKSB7Ci0gICAgICAgIEBsZWFrc091dHB1dCA9IGAv
dXNyL2Jpbi9sZWFrcyBcIiR0YXJnZXRcImA7Ci0gICAgfQotCi0gICAgcmV0dXJuIFxAbGVha3NP
dXRwdXQ7Ci19Ci0KLSMgUmV0dXJucyBhIGxpc3Qgb2YgaGFzaCByZWZlcmVuY2VzIHdpdGggdGhl
IGtleXMgeyBhZGRyZXNzLCBzaXplLCB0eXBlLCBjYWxsU3RhY2ssIGxlYWtzT3V0cHV0IH0KLXN1
YiBwYXJzZUxlYWtzT3V0cHV0KFxAKQotewotICAgIG15ICgkbGVha3NPdXRwdXQpID0gQF87Ci0K
LSAgICAjIEZvcm1hdDoKLSAgICAjICAgUHJvY2VzcyAwMDAwMDogMTIzNCBub2RlcyBtYWxsb2Nl
ZCBmb3IgMTIzNCBLQgotICAgICMgICBQcm9jZXNzIDAwMDAwOiBYWCBsZWFrcyBmb3IgWFhYIHRv
dGFsIGxlYWtlZCBieXRlcy4gICAgCi0gICAgIyAgIExlYWs6IDB4MDAwMDAwMDAgc2l6ZT0xMjM0
IFtpbnN0YW5jZSBvZiAnYmxhaCddCi0gICAgIyAgICAgICAweDAwMDAwMDAwIDB4MDAwMDAwMDAg
MHgwMDAwMDAwMCAweDAwMDAwMDAwIGEuLmQuZS5lCi0gICAgIyAgICAgICAuLi4KLSAgICAjICAg
ICAgIENhbGwgc3RhY2s6IGxlYWtfY2FsbGVyKCkgfCBsZWFrKCkgfCBtYWxsb2MKLSAgICAjCi0g
ICAgIyAgIFdlIHRyZWF0IGV2ZXJ5IGxpbmUgZXhjZXB0IGZvciAgUHJvY2VzcyAwMDAwMDogYW5k
IExlYWs6IGFzIG9wdGlvbmFsCi0KLSAgICBteSAkbGVha0NvdW50OwotICAgIG15IEBwYXJzZWRP
dXRwdXQgPSAoKTsKLSAgICBteSAkcGFyc2luZ0xlYWsgPSAwOwotICAgIG15ICRwYXJzZWRMZWFr
Q291bnQgPSAwOwotICAgIGZvciBteSAkbGluZSAoQCRsZWFrc091dHB1dCkgewotICAgICAgICBp
ZiAoJGxpbmUgPX4gL15Qcm9jZXNzIFxkKzogKFxkKykgbGVha3M/LykgewotICAgICAgICAgICAg
JGxlYWtDb3VudCA9ICQxOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCRsaW5lIGVxICJcbiIp
IHsKLSAgICAgICAgICAgICRwYXJzaW5nTGVhayA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoJGxpbmUgPX4gL15MZWFrOiAvKSB7Ci0gICAgICAgICAgICAkcGFyc2luZ0xlYWsgPSAxOwot
ICAgICAgICAgICAgJHBhcnNlZExlYWtDb3VudCsrOwotICAgICAgICAgICAgbXkgKCRhZGRyZXNz
KSA9ICgkbGluZSA9fiAvTGVhazogKFtbOnhkaWdpdDpdeF0rKS8pOwotICAgICAgICAgICAgaWYg
KCFkZWZpbmVkKCRhZGRyZXNzKSkgewotICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJDb3Vs
ZCBub3QgcGFyc2UgTGVhayBhZGRyZXNzLiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXkgKCRzaXplKSA9ICgkbGluZSA9fiAvc2l6ZT0o
W1s6ZGlnaXQ6XV0rKS8pOwotICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRzaXplKSkgewotICAg
ICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3QgcGFyc2UgTGVhayBzaXplLiIpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBG
SVhNRTogVGhpcyBjb2RlIHNlZW1zIHdyb25nLCB0aGUgbGVha3MgdG9vbCBkb2Vzbid0IGFjdHVh
bGx5IHVzZSBzaW5nbGUgcXVvdGVzLgotICAgICAgICAgICAgIyBXZSBzaG91bGQgcmVjb25jaWxl
IHdpdGggb3RoZXIgZm9ybWF0IGNoYW5nZXMgdGhhdCBoYXBwZW5lZCBzaW5jZSwgc3VjaCBhcyB0
aGUKLSAgICAgICAgICAgICMgYWRkaXRpb24gb2Ygem9uZSBpbmZvcm1hdGlvbi4KLSAgICAgICAg
ICAgIG15ICgkdHlwZSkgPSAoJGxpbmUgPX4gLycoW14nXSspJy8pOyAjJwotICAgICAgICAgICAg
aWYgKCFkZWZpbmVkKCR0eXBlKSkgewotICAgICAgICAgICAgICAgICR0eXBlID0gIiI7ICMgVGhl
IGxlYWtzIHRvb2wgc29tZXRpbWVzIG9taXRzIHRoZSB0eXBlLgotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBteSAlbGVhayA9ICgKLSAgICAgICAgICAgICAgICAiYWRkcmVzcyIgPT4gJGFk
ZHJlc3MsCi0gICAgICAgICAgICAgICAgInNpemUiID0+ICRzaXplLAotICAgICAgICAgICAgICAg
ICJ0eXBlIiA9PiAkdHlwZSwKLSAgICAgICAgICAgICAgICAiY2FsbFN0YWNrIiA9PiAiIiwgIyBU
aGUgbGVha3MgdG9vbCBzb21ldGltZXMgb21pdHMgdGhlIGNhbGwgc3RhY2suCi0gICAgICAgICAg
ICAgICAgImxlYWtzT3V0cHV0IiA9PiAkbGluZQotICAgICAgICAgICAgKTsKLSAgICAgICAgICAg
IHB1c2goQHBhcnNlZE91dHB1dCwgXCVsZWFrKTsKLSAgICAgICAgfSBlbHNpZiAoJHBhcnNpbmdM
ZWFrKSB7Ci0gICAgICAgICAgICAkcGFyc2VkT3V0cHV0WyQjcGFyc2VkT3V0cHV0XS0+eyJsZWFr
c091dHB1dCJ9IC49ICRsaW5lOwotICAgICAgICAgICAgaWYgKCRsaW5lID1+IC9DYWxsIHN0YWNr
Oi8pIHsKLSAgICAgICAgICAgICAgICAkcGFyc2VkT3V0cHV0WyQjcGFyc2VkT3V0cHV0XS0+eyJj
YWxsU3RhY2sifSA9ICRsaW5lOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgbXkgJW5vbkxlYWtMaW5lID0gKAotICAgICAgICAgICAgICAgICJsZWFrc091dHB1
dCIgPT4gJGxpbmUKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBwdXNoKEBwYXJzZWRPdXRw
dXQsIFwlbm9uTGVha0xpbmUpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmICgkcGFy
c2VkTGVha0NvdW50ICE9ICRsZWFrQ291bnQpIHsKLSAgICAgICAgcmVwb3J0RXJyb3IoIlBhcnNl
ZCBsZWFrIGNvdW50ICgkcGFyc2VkTGVha0NvdW50KSBkb2VzIG5vdCBtYXRjaCBsZWFrIGNvdW50
IHJlcG9ydGVkIGJ5IGxlYWtzIHRvb2wgKCRsZWFrQ291bnQpLiIpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgcmV0dXJuIFxAcGFyc2VkT3V0cHV0OwotfQotCiBzdWIgcmVtb3ZlTWF0
Y2hpbmdSZWNvcmRzKFxAJFxAKQogewogICAgIG15ICgkcmVjb3JkTGlzdCwgJGtleSwgJHJlZ2V4
cExpc3QpID0gQF87CkBAIC0yMzYsMTAgKzEyOSwzIEBAIHN1YiByZW1vdmVNYXRjaGluZ1JlY29y
ZHMoXEAkXEApCiAgICAgICAgICRpKys7CiAgICAgfQogfQotCi1zdWIgcmVwb3J0RXJyb3IoJCkK
LXsKLSAgICBteSAoJGVycm9yTWVzc2FnZSkgPSBAXzsKLSAgICAKLSAgICBwcmludCBTVERFUlIg
YmFzZW5hbWUoJDApIC4gIjogJGVycm9yTWVzc2FnZVxuIjsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQppbmRl
eCBlYjI2ZDI3NTdmMDUuLjdiYTVlOTQ1ZmM5YyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRkaXJzLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQpAQCAtNDcsNiAr
NDcsNyBAQCB1c2UgTGlzdDo6VXRpbDsKIHVzZSBQT1NJWDsKIHVzZSBUaW1lOjpIaVJlcyBxdyh1
c2xlZXApOwogdXNlIFZDU1V0aWxzOwordXNlIHdlYmtpdHBlcmw6OmRpcnM7CiAKIEJFR0lOIHsK
ICAgIHVzZSBFeHBvcnRlciAgICgpOwpAQCAtMTQ1LDcgKzE0Niw2IEBAIG15ICR4Y29kZVNES1Bs
YXRmb3JtTmFtZTsKIG15ICRzaW11bGF0b3JJZGlvbTsKIG15ICRjb25maWd1cmF0aW9uRm9yVmlz
dWFsU3R1ZGlvOwogbXkgJGNvbmZpZ3VyYXRpb25Qcm9kdWN0RGlyOwotbXkgJHNvdXJjZURpcjsK
IG15ICRjdXJyZW50U1ZOUmV2aXNpb247CiBteSAkZGlkTG9hZElQaG9uZVNpbXVsYXRvck5vdGlm
aWNhdGlvbjsKIG15ICRubVBhdGg7CkBAIC0xOTUsMjQgKzE5NSw2IEBAIHN1YiBzZGtQbGF0Zm9y
bURpcmVjdG9yeSgkKQogICAgIHJldHVybiAkc2RrUGxhdGZvcm1EaXJlY3Rvcnk7CiB9CiAKLXN1
YiBkZXRlcm1pbmVTb3VyY2VEaXIKLXsKLSAgICByZXR1cm4gaWYgJHNvdXJjZURpcjsKLSAgICAk
c291cmNlRGlyID0gJEZpbmRCaW46OkJpbjsKLSAgICAkc291cmNlRGlyID1+IHN8LyskfHw7ICMg
UmVtb3ZlIHRyYWlsaW5nICcvJyBhcyB3ZSB3b3VsZCBkaWUgbGF0ZXIKLQotICAgICMgd2Fsa3Mg
dXAgcGF0aCBjaGVja2luZyBlYWNoIGRpcmVjdG9yeSB0byBzZWUgaWYgaXQgaXMgdGhlIG1haW4g
V2ViS2l0IHByb2plY3QgZGlyLCAKLSAgICAjIGRlZmluZWQgYnkgY29udGFpbmluZyBTb3VyY2Vz
LCBXZWJDb3JlLCBhbmQgSmF2YVNjcmlwdENvcmUuCi0gICAgdW50aWwgKCgtZCBGaWxlOjpTcGVj
LT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIpICYmIC1kIEZpbGU6OlNwZWMtPmNhdGRpcigk
c291cmNlRGlyLCAiU291cmNlIiwgIldlYkNvcmUiKSAmJiAtZCBGaWxlOjpTcGVjLT5jYXRkaXIo
JHNvdXJjZURpciwgIlNvdXJjZSIsICJKYXZhU2NyaXB0Q29yZSIpKSB8fCAoLWQgRmlsZTo6U3Bl
Yy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJJbnRlcm5hbCIpICYmIC1kIEZpbGU6OlNwZWMtPmNhdGRp
cigkc291cmNlRGlyLCAiT3BlblNvdXJjZSIpKSkKLSAgICB7Ci0gICAgICAgIGlmICgkc291cmNl
RGlyICF+IHN8L1teL10rJHx8KSB7Ci0gICAgICAgICAgICBkaWUgIkNvdWxkIG5vdCBmaW5kIHRv
cCBsZXZlbCB3ZWJraXQgZGlyZWN0b3J5IGFib3ZlIHNvdXJjZSBkaXJlY3RvcnkgdXNpbmcgRmlu
ZEJpbi5cbiI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAkc291cmNlRGlyID0gRmlsZTo6U3Bl
Yy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIikgaWYgLWQgRmlsZTo6U3BlYy0+Y2F0
ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIik7Ci19Ci0KIHN1YiBjdXJyZW50UGVybFBhdGgo
KQogewogICAgIG15ICR0aGlzUGVybCA9ICReWDsKQEAgLTIyMiwxMiArMjA0LDYgQEAgc3ViIGN1
cnJlbnRQZXJsUGF0aCgpCiAgICAgcmV0dXJuICR0aGlzUGVybDsKIH0KIAotIyB1c2VkIGZvciBz
Y3JpcHRzIHdoaWNoIGFyZSBzdG9yZWQgaW4gYSBub24tc3RhbmRhcmQgbG9jYXRpb24KLXN1YiBz
ZXRTb3VyY2VEaXIoJCkKLXsKLSAgICAoJHNvdXJjZURpcikgPSBAXzsKLX0KLQogc3ViIGRldGVy
bWluZU5pbmphVmVyc2lvbgogewogICAgIGNob21wKG15ICRuaW5qYVZlcnNpb24gPSBgbmluamEg
LS12ZXJzaW9uYCk7CkBAIC0yNTcsNyArMjMzLDYgQEAgc3ViIHJlYWRYY29kZVVzZXJEZWZhdWx0
KCQpCiBzdWIgZGV0ZXJtaW5lQmFzZVByb2R1Y3REaXIKIHsKICAgICByZXR1cm4gaWYgZGVmaW5l
ZCAkYmFzZVByb2R1Y3REaXI7Ci0gICAgZGV0ZXJtaW5lU291cmNlRGlyKCk7CiAKICAgICBteSAk
c2V0U2hhcmVkUHJlY29tcHNEaXI7CiAgICAgbXkgJGluZGV4RGF0YVN0b3JlRGlyOwpAQCAtMjk4
LDcgKzI3Myw3IEBAIHN1YiBkZXRlcm1pbmVCYXNlUHJvZHVjdERpcgogICAgIH0KIAogICAgIGlm
ICghZGVmaW5lZCgkYmFzZVByb2R1Y3REaXIpKSB7ICMgUG9ydC1zcGVjaWZpYyBjaGVja3MgZmFp
bGVkLCB1c2UgZGVmYXVsdAotICAgICAgICAkYmFzZVByb2R1Y3REaXIgPSBGaWxlOjpTcGVjLT5j
YXRkaXIoJHNvdXJjZURpciwgIldlYktpdEJ1aWxkIik7CisgICAgICAgICRiYXNlUHJvZHVjdERp
ciA9IEZpbGU6OlNwZWMtPmNhdGRpcihzb3VyY2VEaXIsICJXZWJLaXRCdWlsZCIpOwogICAgIH0K
IAogICAgIGlmIChpc0dpdCgpICYmIGlzR2l0QnJhbmNoQnVpbGQoKSkgewpAQCAtMzA3LDggKzI4
Miw4IEBAIHN1YiBkZXRlcm1pbmVCYXNlUHJvZHVjdERpcgogICAgIH0KIAogICAgIGlmIChpc0Fw
cGxlQ29jb2FXZWJLaXQoKSkgewotICAgICAgICAkYmFzZVByb2R1Y3REaXIgPX4gc3xeXFEkKFNS
Q1JPT1QpLy4uXEUkfCRzb3VyY2VEaXJ8OwotICAgICAgICAkYmFzZVByb2R1Y3REaXIgPX4gc3xe
XFEkKFNSQ1JPT1QpLy4uL3wkc291cmNlRGlyL3w7CisgICAgICAgICRiYXNlUHJvZHVjdERpciA9
fiBzfF5cUSQoU1JDUk9PVCkvLi5cRSR8c291cmNlRGlyfDsKKyAgICAgICAgJGJhc2VQcm9kdWN0
RGlyID1+IHN8XlxRJChTUkNST09UKS8uLi98c291cmNlRGlyL3w7CiAgICAgICAgICRiYXNlUHJv
ZHVjdERpciA9fiBzfF5+L3wkRU5We0hPTUV9L3w7CiAgICAgICAgIGRpZSAiQ2FuJ3QgaGFuZGxl
IFhjb2RlIHByb2R1Y3QgZGlyZWN0b3J5IHdpdGggYSB+IGluIGl0LlxuIiBpZiAkYmFzZVByb2R1
Y3REaXIgPX4gL34vOwogICAgICAgICBkaWUgIkNhbid0IGhhbmRsZSBYY29kZSBwcm9kdWN0IGRp
cmVjdG9yeSB3aXRoIGEgdmFyaWFibGUgaW4gaXQuXG4iIGlmICRiYXNlUHJvZHVjdERpciA9fiAv
XCQvOwpAQCAtODU2LDE2ICs4MzEsMTQgQEAgc3ViIGRldGVybWluZUN1cnJlbnRTVk5SZXZpc2lv
bgogICAgICMgV2UgYWx3YXlzIHVwZGF0ZSB0aGUgY3VycmVudCBTVk4gcmV2aXNpb24gaGVyZSwg
YW5kIGxlYXZlIHRoZSBjYWNoaW5nCiAgICAgIyB0byBjdXJyZW50U1ZOUmV2aXNpb24oKSwgc28g
dGhhdCBjaGFuZ2VzIHRvIHRoZSBTVk4gcmV2aXNpb24gd2hpbGUgdGhlCiAgICAgIyBzY3JpcHQg
aXMgcnVubmluZyBjYW4gYmUgcGlja2VkIHVwIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhZ2Fp
bi4KLSAgICBkZXRlcm1pbmVTb3VyY2VEaXIoKTsKLSAgICAkY3VycmVudFNWTlJldmlzaW9uID0g
c3ZuUmV2aXNpb25Gb3JEaXJlY3RvcnkoJHNvdXJjZURpcik7CisgICAgJGN1cnJlbnRTVk5SZXZp
c2lvbiA9IHN2blJldmlzaW9uRm9yRGlyZWN0b3J5KHNvdXJjZURpcik7CiAgICAgcmV0dXJuICRj
dXJyZW50U1ZOUmV2aXNpb247CiB9CiAKIAogc3ViIGNoZGlyV2ViS2l0CiB7Ci0gICAgZGV0ZXJt
aW5lU291cmNlRGlyKCk7Ci0gICAgY2hkaXIgJHNvdXJjZURpciBvciBkaWU7CisgICAgY2hkaXIg
c291cmNlRGlyIG9yIGRpZTsKIH0KIAogc3ViIGJhc2VQcm9kdWN0RGlyCkBAIC04NzQsMTIgKzg0
Nyw2IEBAIHN1YiBiYXNlUHJvZHVjdERpcgogICAgIHJldHVybiAkYmFzZVByb2R1Y3REaXI7CiB9
CiAKLXN1YiBzb3VyY2VEaXIKLXsKLSAgICBkZXRlcm1pbmVTb3VyY2VEaXIoKTsKLSAgICByZXR1
cm4gJHNvdXJjZURpcjsKLX0KLQogc3ViIHByb2R1Y3REaXIKIHsKICAgICBkZXRlcm1pbmVDb25m
aWd1cmF0aW9uUHJvZHVjdERpcigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0xvYWRBc01vZHVsZS5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9Mb2FkQXNNb2R1
bGUucG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NGVlOGJkODM1MS4uMDAwMDAw
MDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KKysr
IC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0jIS91c3IvYmluL2VudiBwZXJsCi0jCi0jIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0jIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0jIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIwotIyBJbXBvcnRzIFBlcmwgc2NyaXB0
cyBpbnRvIGEgcGFja2FnZSBmb3IgZWFzeSB1bml0IHRlc3RpbmcuCi0KLXBhY2thZ2UgTG9hZEFz
TW9kdWxlOwotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdzOwotCi11c2UgRmlsZTo6U3BlYzsK
LXVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwg
Ii4uIiwgIi4uIik7Ci11c2Ugd2Via2l0ZGlyczsKLQotdXNlIGJhc2UgJ0V4cG9ydGVyJzsKLXVz
ZSB2YXJzIHF3KEBFWFBPUlQgQEVYUE9SVF9PSyAlRVhQT1JUX1RBR1MgJFZFUlNJT04pOwotCi1A
RVhQT1JUID0gKCk7Ci1ARVhQT1JUX09LID0gKCk7Ci0lRVhQT1JUX1RBR1MgPSAoKTsKLSRWRVJT
SU9OID0gJzEuMCc7Ci0KLXN1YiByZWFkRmlsZSgkKTsKLQotc3ViIGltcG9ydAotewotICAgIG15
ICgkc2VsZiwgJHBhY2thZ2UsICRzY3JpcHQpID0gQF87Ci0gICAgbXkgJHNjcmlwdFBhdGggPSBG
aWxlOjpTcGVjLT5jYXRmaWxlKHNvdXJjZURpcigpLCAiVG9vbHMiLCAiU2NyaXB0cyIsICRzY3Jp
cHQpOwotICAgIGV2YWwgIgotICAgICAgICBwYWNrYWdlICRwYWNrYWdlOwotCi0gICAgICAgIHVz
ZSBzdHJpY3Q7Ci0gICAgICAgIHVzZSB3YXJuaW5nczsKLQotICAgICAgICB1c2UgYmFzZSAnRXhw
b3J0ZXInOwotICAgICAgICB1c2UgdmFycyBxdyhcQEVYUE9SVCBcQEVYUE9SVF9PSyBcJUVYUE9S
VF9UQUdTIFwkVkVSU0lPTik7Ci0KLSAgICAgICAgXEBFWFBPUlQgPSAoKTsKLSAgICAgICAgXEBF
WFBPUlRfT0sgPSAoKTsKLSAgICAgICAgXCVFWFBPUlRfVEFHUyA9ICgpOwotICAgICAgICBcJFZF
UlNJT04gPSAnMS4wJzsKLQotICAgICAgICBzdWIgeyIgLiByZWFkRmlsZSgkc2NyaXB0UGF0aCkg
LiAifQotICAgICI7Ci19Ci0KLXN1YiByZWFkRmlsZSgkKQotewotICAgIG15ICRwYXRoID0gc2hp
ZnQ7Ci0gICAgbG9jYWwgJC8gPSB1bmRlZjsgIyBSZWFkIGluIHRoZSB3aG9sZSBmaWxlIGF0IG9u
Y2UuCi0gICAgb3BlbiBGSUxFLCAiPCIsICRwYXRoIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHBhdGg6
ICQhIjsKLSAgICBteSAkY29udGVudHMgPSA8RklMRT47Ci0gICAgY2xvc2UgRklMRTsKLSAgICBy
ZXR1cm4gJGNvbnRlbnRzOwotfTsKLQotMTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cGVybC9idWlsZC9vdXRwdXQucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvYnVpbGQv
b3V0cHV0LnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDRkOTdh
YWVhMzUwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2J1aWxk
L291dHB1dC5wbQpAQCAtMCwwICsxLDE0NyBAQAorcGFja2FnZSB3ZWJraXRwZXJsOjpidWlsZDo6
b3V0cHV0OworCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIENhcnA7CisKK0JFR0lO
IHsKKyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9S
VCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRWRVJTSU9OICAgICA9IDEuMDA7Cisg
ICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBARVhQT1JUICAgICAgPSBxdygKKyAg
ICAgICAgICAgICAgICAgICAgc2hvdWxkSWdub3JlTGluZQorICAgICAgICAgICAgICAgICAgICAk
cGxhdGZvcm0KKyAgICAgICAgICAgICAgICApOworICAgJUVYUE9SVF9UQUdTID0gKCk7CisgICBA
RVhQT1JUX09LICAgPSAoKTsKK30KKworb3VyICRwbGF0Zm9ybSA9ICdtYWMnOworCitteSAkaW5F
bnRpdGxlbWVudHMgPSAwOworbXkgJGluRGV2aWNlUHJlcGFyYXRpb25XYXJuaW5ncyA9IDA7CisK
K3N1YiBzaG91bGRTaG93U3Vic2VxdWVudExpbmUgeworICAgIG15ICRsaW5lID0gc2hpZnQ7CisK
KyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvcmVmZXJlbmNlZCBmcm9tOiQvOworICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC8obm90ZTp8ZXJyb3I6KS87CisKKyAgICByZXR1cm4gMDsKK30KKwor
c3ViIHNob3VsZElnbm9yZUxpbmUgeworICAgIG15ICgkcHJldmlvdXNMaW5lLCAkbGluZSkgPSBA
XzsKKworICAgIGlmICgkbGluZSA9fiAvXkVudGl0bGVtZW50czokLykgeworICAgICAgICAkaW5F
bnRpdGxlbWVudHMgPSAxOworICAgICAgICByZXR1cm4gMQorICAgIH0KKworICAgIGlmICgkaW5F
bnRpdGxlbWVudHMpIHsKKyAgICAgICAgJGluRW50aXRsZW1lbnRzID0gMCBpZiAkbGluZSA9fiAv
Xn0kLzsKKyAgICAgICAgcmV0dXJuIDEKKyAgICB9CisKKyAgICAjIGlQaG9uZSBwcmVwYXJhdGlv
biBlcnJvcnMgYWx3YXlzIHN0YXJ0IGFuZCBlbmQgd2l0aCBsaW5lcyBjb250YWluaW5nICdpUGhv
bmVDb25uZWN0OicuCisgICAgaWYgKCRpbkRldmljZVByZXBhcmF0aW9uV2FybmluZ3MpIHsKKyAg
ICAgICAgJGluRGV2aWNlUHJlcGFyYXRpb25XYXJuaW5ncyA9IDAgaWYgJGxpbmUgPX4gLz09IEVO
RDogVW5kZXJseWluZyBkZXZpY2UgcHJlcGFyYXRpb24gd2FybmluZ3MgPT0vOworICAgICAgICBy
ZXR1cm4gMQorICAgIH0KKworICAgIGlmICgkbGluZSA9fiAvaVBob25lQ29ubmVjdDovKSB7Cisg
ICAgICAgICRpbkRldmljZVByZXBhcmF0aW9uV2FybmluZ3MgPSAxOworICAgICAgICByZXR1cm4g
MQorICAgIH0KKworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqJC87CisgICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL15Db21tYW5kIGxpbmUgaW52b2NhdGlvbjovOworICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eQnVpbGQgc2V0dGluZ3MgZnJvbSBjb21tYW5kIGxpbmU6LzsKKyAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVzZXIgZGVmYXVsdHMgZnJvbSBjb21tYW5kIGxpbmU6LzsK
KyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlByZXBhcmUgYnVpbGQvOworICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eQnVpbGQgc3lzdGVtIGluZm9ybWF0aW9uLzsKKyAgICByZXR1cm4gMSBp
ZiAkbGluZSA9fiAvXm5vdGU6IFBsYW5uaW5nIGJ1aWxkLzsKKyAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXm5vdGU6IENvbnN0cnVjdGluZyBidWlsZCBkZXNjcmlwdGlvbi87CisgICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL15ub3RlOiBCdWlsZCBkZXNjcmlwdGlvbiAoY29uc3RydWN0ZWR8bG9h
ZGVkKSBpbiAuKi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBVc2luZyBidWls
ZCBkZXNjcmlwdGlvbiAuKi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBVc2lu
ZyBlYWdlciBjb21waWxhdGlvbi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBF
eGVjdXRpb24gcG9saWN5IGV4Y2VwdGlvbiByZWdpc3RyYXRpb24gZmFpbGVkIGFuZCB3YXMgc2tp
cHBlZDogRXJyb3IgRG9tYWluPU5TUE9TSVhFcnJvckRvbWFpbiBDb2RlPTEgIk9wZXJhdGlvbiBu
b3QgcGVybWl0dGVkIi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBkZXRlY3Rl
ZCBlbmNvZGluZyBvZiBpbnB1dCBmaWxlIGFzIFVuaWNvZGUgXCguKlwpLzsKKyAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvbWFrZShcW1xkK1xdKT86IE5vdGhpbmcgdG8gYmUgZG9uZSBmb3IvOwor
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eSmF2YVNjcmlwdENvcmVcL2NyZWF0ZV9oYXNoX3Rh
YmxlLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
XC9Qcml2YXRlSGVhZGVyc1wvY3JlYXRlX2hhc2hfdGFibGUvOworICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eSmF2YVNjcmlwdENvcmVcL3BjcmVcL2RmdGFibGVzLzsKKyAgICByZXR1cm4gMSBp
ZiAkbGluZSA9fiAvXkNyZWF0aW5nIGhhc2h0YWJsZSBmb3IgLzsKKyAgICByZXR1cm4gMSBpZiAk
bGluZSA9fiAvXldyb3RlIG91dHB1dCB0byAvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9e
VU5ET0NVTUVOVEVEOiAvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9saWJ0b29sLipoYXMg
bm8gc3ltYm9scy87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL14jIExvd2VyIGNhc2UgYWxs
IHRoZSB2YWx1ZXMsIGFzIENTUyB2YWx1ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUkLzsKKyAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvXmlmIHNvcnQgLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvc2V0LXdlYmtpdC1jb25maWd1cmF0aW9uLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
XmJ1aWxkaW5nIGZpbGUgbGlzdC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15cLlwvJC87
CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15cUytcLmgkLzsKKyAgICByZXR1cm4gMSBpZiAk
bGluZSA9fiAvXlxTK1wvJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15zZW50IFxkKyBi
eXRlcy87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL150b3RhbCBzaXplIGlzLzsKKyAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvT25lIG9mIHRoZSB0d28gd2lsbCBiZSB1c2VkXC4gV2hpY2gg
b25lIGlzIHVuZGVmaW5lZFwuLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvVGhlIExlZ2Fj
eSBCdWlsZCBTeXN0ZW0gd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UvOworICAg
IHJldHVybiAxIGlmICRsaW5lID1+IC9eXCggKHhjb2RlYnVpbGR8aWYpIC87CisgICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL153YXJuaW5nOiBjYW4ndCBmaW5kIGFkZGl0aW9uYWwgU0RLLzsKKyAg
ICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXndhcm5pbmc6IG5vIHVtYnJlbGxhIGhlYWRlciBmb3Vu
ZCBmb3IgdGFyZ2V0ICcuKicsIG1vZHVsZSBtYXAgd2lsbCBub3QgYmUgZ2VuZXJhdGVkJC87Cisg
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL153YXJuaW5nXDogZGV0ZWN0ZWQgaW50ZXJuYWwgaW5z
dGFsbCwgcGFzc2luZyBlbnRpdGxlbWVudHMgdG8gc2ltdWxhdG9yIGFueXdheVwuLzsKKyAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvbWF5IG5vdCBmdW5jdGlvbiBpbiB0aGUgU2ltdWxhdG9yIGJl
Y2F1c2UgQWQgSG9jLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXC91c3JcL2JpblwvY2xh
bmcgLio/IFw+IFxTKy5zYi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyB4Y29kZWJ1aWxk
XFtbMC05XSs6WzAtOWEtZl0rXF1ccytEVlRBc3NlcnRpb25zOiBXYXJuaW5nIGluIC4qLzsKKyAg
ICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXihEZXRhaWxzfE9iamVjdHxNZXRob2R8RnVuY3Rpb258
VGhyZWFkKTovOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eUGxlYXNlIGZpbGUgYSBidWcg
YXQgLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvY3JlYXRlZCBieSBhbiB1bnN1cHBvcnRl
ZCBYQ0RlcGVuZGVuY3lHcmFwaCBidWlsZCQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC93
YXJuaW5nOiBUaGUgYXNzaWdubWVudCBvZiAnLionIGF0ICIuKiIgdXNlcyBcJFwoaW5oZXJpdGVk
XCkuIEluIHRoZSBuZXcgYnVpbGQgc3lzdGVtIHRoaXMgd2lsbCBpbmhlcml0IGZyb20gYW4gZWFy
bGllciBkZWZpbml0aW9uIG9mICcuKicgaW4gdGhpcyB4Y2NvbmZpZyBmaWxlIG9yIGl0cyBpbXBv
cnRzOyB0aGUgb2xkIGJ1aWxkIHN5c3RlbSB3b3VsZCBkaXNjYXJkIGVhcmxpZXIgZGVmaW5pdGlv
bnMuIFRoaXMgbWF5IHJlc3VsdCBpbiBjaGFuZ2VzIHRvIHJlc29sdmVkIGJ1aWxkIHNldHRpbmcg
dmFsdWVzLi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLy4qIGNvbS5hcHBsZS5hY3Rvb2wu
Y29tcGlsYXRpb24tcmVzdWx0cyAuKi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLy4qXC9B
c3NldHMuY2FyLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvLipcL2Fzc2V0Y2F0YWxvZ19n
ZW5lcmF0ZWRfaW5mby5wbGlzdC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15tb3VudDog
LisgZmFpbGVkIHdpdGgvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eVXNpbmcgLisgcHJv
ZHVjdGlvbiBlbnZpcm9ubWVudC4kLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvcmVwbGFj
aW5nIGV4aXN0aW5nIHNpZ25hdHVyZSQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eVW5s
b2NraW5nICcuKlwua2V5Y2hhaW4tZGInJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15c
ZCsgbG9jYWxpemFibGUgc3RyaW5ncyQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXGQr
IHBsdXJhbCBydWxlcyQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eVGhlIGxpc3Qgb2Yg
ZXhwb3J0ZWQgc3ltYm9scyBkaWQgbm90IGNoYW5nZS4kLzsKKyAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXmRpdHRvOiBDYW5ub3QgZ2V0IHRoZSByZWFsIHBhdGggZm9yIHNvdXJjZS87CisgICAg
cmV0dXJuIDEgaWYgJGxpbmUgPX4gL15EdXBsaWNhdGUgRW50cnkgV2FzIFNraXBwZWQ6LzsKKyAg
ICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkFkZGluZyAuKj9lbnRpdGxlbWVudHMvOworICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eTWFraW5nIGFwcCBidW5kbGUgbGF1bmNoYWJsZS87CisgICAg
cmV0dXJuIDEgaWYgJGxpbmUgPX4gL15GaW5pc2hlZCBhZGRpbmcgZW50aXRsZW1lbnRzXC4kLzsK
KyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXi4qIHdpbGwgbm90IGJlIGNvZGUgc2lnbmVkIGJl
Y2F1c2UgaXRzIHNldHRpbmdzIGRvbid0IHNwZWNpZnkgYSBkZXZlbG9wbWVudCB0ZWFtLiQvOwor
CisgICAgaWYgKCRwbGF0Zm9ybSBlcSAid2luIikgeworICAgICAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXlxzKih0b3VjaHxwZXJsfGNhdHxybSAtZnxkZWx8cHl0aG9ufFwvdXNyXC9iaW5cL2dc
K1wrfGdwZXJmfGVjaG98c2VkfGlmIFxbIFwtZnxXZWJDb3JlXC9nZW5lcmF0ZS1leHBvcnQtZmls
ZSkgLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ccyooaWYgbm90IGV4aXN0IFwi
fGlmIGVycm9ybGV2ZWwgMSkvOworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvKF5ccyp8
TVNCMzA3MzpccyspKHNldCB8UkVNIHxjbWQgXC9jKS87CisgICAgICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eXHMqW2NDXTpcXFtwUF1yb2dyYW0gW2ZGXWlsZXMuKlxcLipcXChDTHxtaWRsKVwu
ZXhlIC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqUHJvY2Vzc2luZyAuKlwu
KGFjZnxofGlkbClccyokLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ccypwcmlu
dGYgLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ccypcL3VzclwvYmluXC9iYXNo
XHMqLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ccypvZmZsaW5lYXNtOiBOb3Ro
aW5nIGNoYW5nZWQvOworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvIFxkKyBGaWxlXChz
XCkgY29waWVkLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ccypGaWxlIG5vdCBm
b3VuZCAtIFwqXC5oLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL21rZGlyXHMrXCIv
OworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAveGNvcHkgXC95IFwvZCBcIi87CisgICAg
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9cLm9ialwiXHMqJC87CisgICAgICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC86XHMrKGNtZCBcL2N8c2V0KVxzKy87CisgICAgICAgIHJldHVybiAxIGlm
ICRsaW5lID1+IC9NU0IzMDczOlxzKyQvOworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
TVNCMzA3MzpccytpZiBub3QgZXhpc3QvOworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
d2hpY2guZXhlIGJhc2gvOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAxIGlmICRsaW5l
ID1+IC9eKHRvdWNofHBlcmx8Y2F0fHJtIC1mfHB5dGhvbnxcL3VzclwvYmluXC9nXCtcK3xcL2Jp
blwvbG58Z3BlcmZ8ZWNob3xzZWR8aWYgXFsgXC1mfFdlYkNvcmVcL2dlbmVyYXRlLWV4cG9ydC1m
aWxlfHdyaXRlLWZpbGV8Y2htb2QpIC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9e
ICAgIC8gJiYgIXNob3VsZFNob3dTdWJzZXF1ZW50TGluZSgkcHJldmlvdXNMaW5lKTsKKyAgICAg
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15wcmludGYgLzsKKyAgICAgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL15vZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQvOworICAgIH0KKyAgICByZXR1
cm4gMSBpZiAkbGluZSA9fiAvXlNob3dpbmcgZmlyc3QvOworCisgICAgcmV0dXJuIDA7Cit9CisK
KzE7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvY2hhbmdlbG9nLnBtIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2NoYW5nZWxvZy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmE2MzlhNjQ1NWEzZQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9jaGFuZ2Vsb2cucG0KQEAgLTAsMCArMSwxNDk3IEBACitw
YWNrYWdlIHdlYmtpdHBlcmw6OmNoYW5nZWxvZzsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5n
czsKK3VzZSBDYXJwOwordXNlIEZpbGU6OlNwZWM7Cit1c2UgVkNTVXRpbHM7CisKK0JFR0lOIHsK
KyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwg
QEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRWRVJTSU9OICAgICA9IDEuMDA7CisgICBA
SVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBARVhQT1JUICAgICAgPSBxdygKKyAgICAg
ICAgICAgICAgICAgICAgYWN0dWFsbHlHZW5lcmF0ZUZ1bmN0aW9uTGlzdHMKKyAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlQ29tbWFuZAorICAgICAgICAgICAgICAgICAgICBleHRyYWN0TGlu
ZVJhbmdlQWZ0ZXJDaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFjdExpbmVSYW5nZUJl
Zm9yZUNoYW5nZQorICAgICAgICAgICAgICAgICAgICBmZXRjaEJ1Z0Rlc2NyaXB0aW9uRnJvbUJ1
Z1hNTERhdGEKKyAgICAgICAgICAgICAgICAgICAgZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxEYXRh
CisgICAgICAgICAgICAgICAgKTsKKyAgICVFWFBPUlRfVEFHUyA9ICgpOworICAgQEVYUE9SVF9P
SyAgID0gcXcoCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19m
b3JfY3BwCisgICAgICAgICAgICAgICAgICAgIGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3Jf
Y3NzCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2
YQorICAgICAgICAgICAgICAgICAgICBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmFz
Y3JpcHQKKyAgICAgICAgICAgICAgICAgICAgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9w
ZXJsCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcHl0
aG9uCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jfc3dp
ZnQKKyAgICAgICAgICAgICAgICApOworfQorCit1c2UgY29uc3RhbnQgU1ZOID0+ICJzdm4iOwor
dXNlIGNvbnN0YW50IEdJVCA9PiAiZ2l0IjsKKworc3ViIGFjdHVhbGx5R2VuZXJhdGVGdW5jdGlv
bkxpc3RzIHsKKyAgICBteSAoJGNoYW5nZWRGaWxlcywgJGZ1bmN0aW9uTGlzdHMsICRnaXRDb21t
aXQsICRnaXRJbmRleCwgJG1lcmdlQmFzZSwgJGRlbGVnYXRlSGFzaFJlZikgPSBAXzsKKworICAg
IG15ICVsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkOworICAgIG15ICVsaW5lX3Jhbmdlc19iZWZv
cmVfY2hhbmdlZDsKKyAgICBpZiAoQCRjaGFuZ2VkRmlsZXMpIHsKKyAgICAgICAgIyBGb3IgZWFj
aCBmaWxlLCBidWlsZCBhIGxpc3Qgb2YgbW9kaWZpZWQgbGluZXMuCisgICAgICAgICMgVXNlIGxp
bmUgbnVtYmVycyBmcm9tIHRoZSAiYWZ0ZXIiIHNpZGUgb2YgZWFjaCBkaWZmLgorICAgICAgICBw
cmludCBTVERFUlIgIiAgUmV2aWV3aW5nIGRpZmYgdG8gZGV0ZXJtaW5lIHdoaWNoIGxpbmVzIGNo
YW5nZWQuXG4iOworICAgICAgICBteSAkZmlsZTsKKyAgICAgICAgbXkgJGRpZmZGaWxlSGFuZGxl
ID0gJGRlbGVnYXRlSGFzaFJlZi0+e29wZW5EaWZmfSgkY2hhbmdlZEZpbGVzLCAkZ2l0Q29tbWl0
LCAkZ2l0SW5kZXgsICRtZXJnZUJhc2UpOworICAgICAgICBpZiAoISRkaWZmRmlsZUhhbmRsZSkg
eworICAgICAgICAgICAgZGllICJUaGUgZGlmZiBmYWlsZWQ6ICQhLlxuIjsKKyAgICAgICAgfQor
ICAgICAgICB3aGlsZSAoPCRkaWZmRmlsZUhhbmRsZT4pIHsKKyAgICAgICAgICAgIG15ICRmaWxl
UGF0aCA9IHBhcnNlRGlmZlN0YXJ0TGluZSgkXyk7CisgICAgICAgICAgICAkZmlsZSA9ICRkZWxl
Z2F0ZUhhc2hSZWYtPntub3JtYWxpemVQYXRofSgkZmlsZVBhdGgpIGlmICRmaWxlUGF0aDsKKyAg
ICAgICAgICAgIGlmIChkZWZpbmVkICRmaWxlKSB7CisgICAgICAgICAgICAgICAgbXkgKCRiZWZv
cmVfc3RhcnQsICRiZWZvcmVfZW5kKSA9IGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UoJF8p
OworICAgICAgICAgICAgICAgIGlmICgkYmVmb3JlX3N0YXJ0ID49IDEgJiYgJGJlZm9yZV9lbmQg
Pj0gMSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoIEB7JGxpbmVfcmFuZ2VzX2JlZm9yZV9j
aGFuZ2VkeyRmaWxlfX0sIFsgJGJlZm9yZV9zdGFydCwgJGJlZm9yZV9lbmQgXTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2lmICgvRE9fTk9UX0NPTU1JVC8pIHsKKyAgICAgICAgICAgICAgICAgICAg
cHJpbnQgU1RERVJSICJXQVJOSU5HOiBmaWxlICRmaWxlIGNvbnRhaW5zIHRoZSBzdHJpbmcgRE9f
Tk9UX0NPTU1JVCwgbGluZSAkLlxuIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgbXkgKCRhZnRlcl9zdGFydCwgJGFmdGVyX2VuZCkgPSBleHRyYWN0TGluZVJhbmdlQWZ0ZXJD
aGFuZ2UoJF8pOworICAgICAgICAgICAgICAgIGlmICgkYWZ0ZXJfc3RhcnQgPj0gMSAmJiAkYWZ0
ZXJfZW5kID49IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyRsaW5lX3Jhbmdlc19h
ZnRlcl9jaGFuZ2VkeyRmaWxlfX0sIFsgJGFmdGVyX3N0YXJ0LCAkYWZ0ZXJfZW5kIF07CisgICAg
ICAgICAgICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01NSVQvKSB7CisgICAgICAgICAgICAgICAg
ICAgIHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAkZmlsZSBjb250YWlucyB0aGUgc3RyaW5n
IERPX05PVF9DT01NSVQsIGxpbmUgJC5cbiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGNsb3NlKCRkaWZmRmlsZUhhbmRsZSk7CisgICAgfQor
CisgICAgIyBGb3IgZWFjaCBzb3VyY2UgZmlsZSwgY29udmVydCBsaW5lIHJhbmdlIHRvIGZ1bmN0
aW9uIGxpc3QuCisgICAgcHJpbnQgU1RERVJSICIgIEV4dHJhY3RpbmcgYWZmZWN0ZWQgZnVuY3Rp
b24gbmFtZXMgZnJvbSBzb3VyY2UgZmlsZXMuXG4iOworICAgIG15ICVmaWxlc1RvRXhhbWluZSA9
IG1hcCB7ICRfID0+IDEgfSAoa2V5cyglbGluZV9yYW5nZXNfYmVmb3JlX2NoYW5nZWQpLCBrZXlz
KCVsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkKSk7CisgICAgZm9yZWFjaCBteSAkZmlsZSAoa2V5
cyAlZmlsZXNUb0V4YW1pbmUpIHsKKyAgICAgICAgbXkgJXNhd19mdW5jdGlvbjsKKworICAgICAg
ICAjIEZpbmQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGZpbGUuCisgICAgICAgIG15ICRzb3Vy
Y2VGaWxlSGFuZGxlID0gJGRlbGVnYXRlSGFzaFJlZi0+e29wZW5GaWxlfSgkZmlsZSk7CisgICAg
ICAgIG5leHQgdW5sZXNzICRzb3VyY2VGaWxlSGFuZGxlOworICAgICAgICBteSBAYWZ0ZXJDaGFu
Z2VGdW5jdGlvblJhbmdlcyA9IGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcygkc291cmNlRmlsZUhh
bmRsZSwgJGZpbGUpOworICAgICAgICBjbG9zZSgkc291cmNlRmlsZUhhbmRsZSk7CisKKyAgICAg
ICAgIyBGaW5kIG1vZGlmaWVkIGZ1bmN0aW9ucyBpbiB0aGUgZmlsZS4KKyAgICAgICAgaWYgKCRs
aW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkeyRmaWxlfSkgeworICAgICAgICAgICAgbXkgQGNoYW5n
ZV9yYW5nZXMgPSAoQHskbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmlsZX19LCBbXSk7Cisg
ICAgICAgICAgICBteSBAZnVuY3Rpb25zID0gY29tcHV0ZU1vZGlmaWVkRnVuY3Rpb25zKCRmaWxl
LCBcQGNoYW5nZV9yYW5nZXMsIFxAYWZ0ZXJDaGFuZ2VGdW5jdGlvblJhbmdlcyk7CisKKyAgICAg
ICAgICAgICMgRm9ybWF0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgIGlmIChA
ZnVuY3Rpb25zKSB7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gPSAi
IiBpZiAhZGVmaW5lZCAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfTsKKyAgICAgICAgICAgICAgICAk
ZnVuY3Rpb25MaXN0cy0+eyRmaWxlfSAuPSAiXG4gICAgICAgICgiIC4gam9pbigiKTpcbiAgICAg
ICAgKCIsIEBmdW5jdGlvbnMpIC4gIik6IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAjIEZpbmQgdGhlIGRlbGV0ZWQgZnVuY3Rpb25zIGluIHRoZSBvcmlnaW5hbCBmaWxlLgor
ICAgICAgICBpZiAoJGxpbmVfcmFuZ2VzX2JlZm9yZV9jaGFuZ2VkeyRmaWxlfSkgeworICAgICAg
ICAgICAgbXkgJG9yaWdpbmFsRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hSZWYtPntvcGVuT3Jp
Z2luYWxGaWxlfSgkZmlsZSwgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlKTsKKyAg
ICAgICAgICAgIG5leHQgdW5sZXNzICRvcmlnaW5hbEZpbGVIYW5kbGU7CisgICAgICAgICAgICBt
eSBAYmVmb3JlQ2hhbmdlRnVuY3Rpb25SYW5nZXMgPSBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXMo
JG9yaWdpbmFsRmlsZUhhbmRsZSwgJGZpbGUpOworICAgICAgICAgICAgY2xvc2UoJG9yaWdpbmFs
RmlsZUhhbmRsZSk7CisKKyAgICAgICAgICAgIG15ICVleGlzdHNBZnRlckNoYW5nZSA9IG1hcCB7
ICRfLT5bMl0gPT4gMSB9IEBhZnRlckNoYW5nZUZ1bmN0aW9uUmFuZ2VzOworCisgICAgICAgICAg
ICBteSBAZnVuY3Rpb25zOworICAgICAgICAgICAgbXkgJXNhd0Z1bmN0aW9uczsKKyAgICAgICAg
ICAgIGZvciBteSAkZnVuY3Rpb25SYW5nZSAoQGJlZm9yZUNoYW5nZUZ1bmN0aW9uUmFuZ2VzKSB7
CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvblJhbmdlLT5bMl07
CisgICAgICAgICAgICAgICAgaWYgKCEkZXhpc3RzQWZ0ZXJDaGFuZ2V7JGZ1bmN0aW9uTmFtZX0g
JiYgISRzYXdGdW5jdGlvbnN7JGZ1bmN0aW9uTmFtZX0pIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25OYW1lOworICAgICAgICAgICAgICAgICAgICAkc2F3
RnVuY3Rpb25zeyRmdW5jdGlvbk5hbWV9ID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICMgRm9ybWF0IHRoZSBsaXN0IG9mIGRlbGV0ZWQgZnVuY3Rp
b25zLgorICAgICAgICAgICAgaWYgKEBmdW5jdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25MaXN0cy0+eyRmaWxlfSA9ICIiIGlmICFkZWZpbmVkICRmdW5jdGlvbkxpc3RzLT57JGZp
bGV9OworICAgICAgICAgICAgICAgICRmdW5jdGlvbkxpc3RzLT57JGZpbGV9IC49ICJcbiAgICAg
ICAgKCIgLiBqb2luKCIpOiBEZWxldGVkLlxuICAgICAgICAoIiwgQGZ1bmN0aW9ucykgLiAiKTog
RGVsZXRlZC4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdWIgZXh0
cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlIHsKKyAgICBteSAkc3RyaW5nID0gc2hpZnQ7CisgICAg
bXkgJGNodW5rUmFuZ2UgPSBwYXJzZUNodW5rUmFuZ2UoJHN0cmluZyk7CisgICAgaWYgKCEkY2h1
bmtSYW5nZSkgeworICAgICAgICByZXR1cm4gKC0xLCAtMSk7ICMgTWFsZm9ybWVkCisgICAgfQor
ICAgIGlmICghJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9IHx8ICEkY2h1bmtSYW5nZS0+
e25ld0xpbmVDb3VudH0pIHsKKyAgICAgICAgICMgRGVsZXRpb247IG5vIGxpbmVzIGV4aXN0IGFm
dGVyIGNoYW5nZS4KKyAgICAgICAgcmV0dXJuICgkY2h1bmtSYW5nZS0+e25ld1N0YXJ0aW5nTGlu
ZX0sICRjaHVua1JhbmdlLT57bmV3U3RhcnRpbmdMaW5lfSk7CisgICAgfQorICAgIHJldHVybiAo
JGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9LCAkY2h1bmtSYW5nZS0+e25ld1N0YXJ0aW5n
TGluZX0gKyAkY2h1bmtSYW5nZS0+e25ld0xpbmVDb3VudH0gLSAxKTsKK30KKworc3ViIGV4dHJh
Y3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UgeworICAgIG15ICRzdHJpbmcgPSBzaGlmdDsKKyAgICBt
eSAkY2h1bmtSYW5nZSA9IHBhcnNlQ2h1bmtSYW5nZSgkc3RyaW5nKTsKKyAgICBpZiAoISRjaHVu
a1JhbmdlKSB7CisgICAgICAgIHJldHVybiAoLTEsIC0xKTsgIyBNYWxmb3JtZWQKKyAgICB9Cisg
ICAgaWYgKCEkY2h1bmtSYW5nZS0+e3N0YXJ0aW5nTGluZX0gfHwgISRjaHVua1JhbmdlLT57bGlu
ZUNvdW50fSkgeworICAgICAgICAjIEFkZGl0aW9uOyBubyBsaW5lcyBleGlzdGVkIGJlZm9yZSBj
aGFuZ2UuCisgICAgICAgIHJldHVybiAoJGNodW5rUmFuZ2UtPntzdGFydGluZ0xpbmV9LCAkY2h1
bmtSYW5nZS0+e3N0YXJ0aW5nTGluZX0pOworICAgIH0KKyAgICByZXR1cm4gKCRjaHVua1Jhbmdl
LT57c3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntzdGFydGluZ0xpbmV9ICsgJGNodW5rUmFu
Z2UtPntsaW5lQ291bnR9IC0gMSk7Cit9CisKK3N1YiBhdHRyaWJ1dGVDb21tYW5kIHsKKyAgICBt
eSAoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZSwgJGF0dHIpID0gQF87CisKKyAgICBteSAkcmVzdWx0
OworICAgIGlmIChpc1NWTigpKSB7CisgICAgICAgIG15ICRkZXZOdWxsID0gRmlsZTo6U3BlYy0+
ZGV2bnVsbCgpOworICAgICAgICBteSAkZm91bmRBdHRyaWJ1dGUgPSAwOworICAgICAgICBteSAk
c3ViUGF0aCA9ICIuIjsKKyAgICAgICAgbXkgKEBkaXJlY3RvcnlQYXJ0cykgPSBGaWxlOjpTcGVj
LT5zcGxpdGRpcigkZmlsZSk7CisgICAgICAgIGZvcmVhY2ggbXkgJHBhcnQgKEBkaXJlY3RvcnlQ
YXJ0cykgeworICAgICAgICAgICAgaWYgKCRwYXJ0IGVxICIuIikgeworICAgICAgICAgICAgICAg
IG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkc3ViUGF0aCA9IEZpbGU6OlNwZWMt
PmpvaW4oJHN1YlBhdGgsICRwYXJ0KTsKKyAgICAgICAgICAgICRzdWJQYXRoID1+IHMvXlwuXC8v
LzsKKyAgICAgICAgICAgIGlmICgkZm91bmRBdHRyaWJ1dGUgfHwgZXhpc3RzICRhdHRyaWJ1dGVD
YWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gJiYgJGF0dHJpYnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQ
YXRofSBlcSAiMSIpIHsKKyAgICAgICAgICAgICAgICAkYXR0cmlidXRlQ2FjaGUtPnskYXR0cn17
JHN1YlBhdGh9ID0gIjEiOworICAgICAgICAgICAgICAgICRmb3VuZEF0dHJpYnV0ZSA9IDE7Cisg
ICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15ICRjb21t
YW5kID0gU1ZOIC4gIiBwcm9wZ2V0ICRhdHRyICckc3ViUGF0aCciOworICAgICAgICAgICAgbXkg
JGF0dHJpYiA9ICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gfHwgYCRjb21tYW5k
IDI+ICRkZXZOdWxsYDsKKyAgICAgICAgICAgIGNob21wICRhdHRyaWI7CisgICAgICAgICAgICBp
ZiAoJGF0dHJpYiBlcSAiMSIpIHsKKyAgICAgICAgICAgICAgICAkZm91bmRBdHRyaWJ1dGUgPSAx
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgJGF0dHJpYnV0ZUNhY2hlLT57JGF0dHJ9eyRz
dWJQYXRofSA9ICRhdHRyaWIgfHwgIjAiOworICAgICAgICB9CisgICAgICAgICRyZXN1bHQgPSAk
YXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JGZpbGV9OworICAgIH0gZWxzaWYgKGlzR2l0KCkpIHsK
KyAgICAgICAgbXkgJGNvbW1hbmQgPSBHSVQgLiAiIGNoZWNrLWF0dHIgJGF0dHIgLS0gJyRmaWxl
JyI7CisgICAgICAgICRyZXN1bHQgPSBgJGNvbW1hbmRgOworICAgICAgICBjaG9tcCAkcmVzdWx0
OworICAgICAgICAkcmVzdWx0ID1+IHMvLipcVyhcdykvJDEvOworICAgIH0KKworICAgICRyZXN1
bHQgPX4gcy9cRC8vZzsKKyAgICByZXR1cm4gaW50KCRyZXN1bHQgfHwgMCk7Cit9CisKK3N1YiBm
ZXRjaEJ1Z0Rlc2NyaXB0aW9uRnJvbUJ1Z1hNTERhdGEgeworICAgIG15ICgkYnVnVVJMLCAkYnVn
TnVtYmVyLCAkYnVnWE1MRGF0YSkgPSBAXzsKKworICAgIGlmICgkYnVnWE1MRGF0YSAhfiAvPHNo
b3J0X2Rlc2M+KC4qKTxcL3Nob3J0X2Rlc2M+LykgeworICAgICAgICBwcmludCBTVERFUlIgIiAg
QnVnICRidWdOdW1iZXIgaGFzIG5vIGJ1ZyBkZXNjcmlwdGlvbi4gTWF5YmUgeW91IHNldCB3cm9u
ZyBidWcgSUQ/XG4iOworICAgICAgICBwcmludCBTVERFUlIgIiAgVGhlIGJ1ZyBVUkw6ICRidWdV
UkxcbiI7CisgICAgICAgIGV4aXQgMTsKKyAgICB9CisKKyAgICBteSAkYnVnRGVzY3JpcHRpb24g
PSBkZWNvZGVFbnRpdGllcygkMSk7CisgICAgcHJpbnQgU1RERVJSICIgIERlc2NyaXB0aW9uIGZy
b20gYnVnICRidWdOdW1iZXI6XG4gICAgXCIkYnVnRGVzY3JpcHRpb25cIi5cbiI7CisgICAgcmV0
dXJuICRidWdEZXNjcmlwdGlvbjsKK30KKworc3ViIGZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0
YSB7CisgICAgbXkgKCRidWdOdW1iZXIsICRidWdYTUxEYXRhKSA9IEBfOworCisgICAgcmV0dXJu
ICIiIGlmICRidWdYTUxEYXRhICF+IG18PHRoZXRleHQ+XHMqKCgmbHQ7KT9yZGFyOi8vKHByb2Js
ZW0vKT9cZCsoJmd0Oyk/KXw7CisKKyAgICBteSAkYnVnUmFkYXJVUkwgPSBkZWNvZGVFbnRpdGll
cygkMSk7CisgICAgcHJpbnQgU1RERVJSICIgIFJhZGFyIFVSTCBmcm9tIGJ1ZyAkYnVnTnVtYmVy
OlxuICAgIFwiJGJ1Z1JhZGFyVVJMXCIuXG4iOworICAgIHJldHVybiAkYnVnUmFkYXJVUkw7Cit9
CisKK3N1YiBjb21wdXRlTW9kaWZpZWRGdW5jdGlvbnMgeworICAgIG15ICgkZmlsZSwgJGNoYW5n
ZWRMaW5lUmFuZ2VzLCAkZnVuY3Rpb25SYW5nZXMpID0gQF87CisKKyAgICBteSAlc2F3RnVuY3Rp
b247CisKKyAgICAjIEZpbmQgYWxsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuCisgICAgbXkgQGZ1
bmN0aW9uczsKKyAgICBteSBAY2hhbmdlX3JhbmdlcyA9IEB7JGNoYW5nZWRMaW5lUmFuZ2VzfTsK
KyAgICBteSBAY2hhbmdlX3JhbmdlID0gKDAsIDApOworICAgIEZVTkNUSU9OOiBmb3JlYWNoIG15
ICRmdW5jdGlvbl9yYW5nZV9yZWYgKEB7JGZ1bmN0aW9uUmFuZ2VzfSkgeworICAgICAgICBteSBA
ZnVuY3Rpb25fcmFuZ2UgPSBAeyRmdW5jdGlvbl9yYW5nZV9yZWZ9OworCisgICAgICAgICMgRklY
TUU6IFRoaXMgaXMgYSBoYWNrLiBJZiB0aGUgZnVuY3Rpb24gbmFtZSBpcyBlbXB0eSwgc2tpcCBp
dC4KKyAgICAgICAgIyBUaGUgY3BwLCBweXRob24sIGphdmFzY3JpcHQsIHBlcmwsIGNzcyBhbmQg
amF2YSBwYXJzZXJzCisgICAgICAgICMgYXJlIG5vdCBwZXJmZWN0bHkgaW1wbGVtZW50ZWQgYW5k
IHNvbWV0aW1lcyBmdW5jdGlvbiBuYW1lcyBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgICAgICMg
Y29ycmVjdGx5LiBBcyB5b3UgY2FuIHNlZSBpbiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfWFhY
WCgpLCB0aG9zZSBwYXJzZXJzCisgICAgICAgICMgYXJlIG5vdCBpbnRlbmRlZCB0byBpbXBsZW1l
bnQgcmVhbCBwYXJzZXJzIGJ1dCBpbnRlbmRlZCB0byBqdXN0IHJldHJpZXZlIGZ1bmN0aW9uIG5h
bWVzCisgICAgICAgICMgZm9yIG1vc3QgcHJhY3RpY2FsIHN5bnRheGVzLgorICAgICAgICBuZXh0
IHVubGVzcyAkZnVuY3Rpb25fcmFuZ2VbMl07CisKKyAgICAgICAgIyBBZHZhbmNlIHRvIHN1Y2Nl
c3NpdmUgY2hhbmdlIHJhbmdlcy4KKyAgICAgICAgZm9yICg7OyBAY2hhbmdlX3JhbmdlID0gQHtz
aGlmdCBAY2hhbmdlX3Jhbmdlc30pIHsKKyAgICAgICAgICAgIGxhc3QgRlVOQ1RJT04gdW5sZXNz
IEBjaGFuZ2VfcmFuZ2U7CisKKyAgICAgICAgICAgICMgSWYgcGFzdCB0aGlzIGZ1bmN0aW9uLCBt
b3ZlIG9uIHRvIHRoZSBuZXh0IG9uZS4KKyAgICAgICAgICAgIG5leHQgRlVOQ1RJT04gaWYgJGNo
YW5nZV9yYW5nZVswXSA+ICRmdW5jdGlvbl9yYW5nZVsxXTsKKworICAgICAgICAgICAgIyBJZiBh
biBvdmVybGFwIHdpdGggdGhpcyBmdW5jdGlvbiByYW5nZSwgcmVjb3JkIHRoZSBmdW5jdGlvbiBu
YW1lLgorICAgICAgICAgICAgaWYgKCRjaGFuZ2VfcmFuZ2VbMV0gPj0gJGZ1bmN0aW9uX3Jhbmdl
WzBdCisgICAgICAgICAgICAgICAgYW5kICRjaGFuZ2VfcmFuZ2VbMF0gPD0gJGZ1bmN0aW9uX3Jh
bmdlWzFdKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkc2F3RnVuY3Rpb257JGZ1bmN0aW9uX3Jh
bmdlWzJdfSkgeworICAgICAgICAgICAgICAgICAgICAkc2F3RnVuY3Rpb257JGZ1bmN0aW9uX3Jh
bmdlWzJdfSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2ggQGZ1bmN0aW9ucywgJGZ1bmN0
aW9uX3JhbmdlWzJdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXh0IEZV
TkNUSU9OOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEBm
dW5jdGlvbnM7Cit9CisKK3N1YiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXMgeworICAgIG15ICgk
ZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87CisKKyAgICAjIFRyeSB0byBkZXRlcm1pbmUg
dGhlIHNvdXJjZSBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgZmlsZSBleHRlbnNpb24uCisKKyAgICBy
ZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJGZpbGVfaGFuZGxlLCAkZmls
ZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLihjfGNwcHxtfG1tfGgpJC87CisgICAgcmV0dXJu
IGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YSgkZmlsZV9oYW5kbGUsICRmaWxlX25h
bWUpIGlmICRmaWxlX25hbWUgPX4gL1wuamF2YSQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25f
bGluZV9yYW5nZXNfZm9yX2phdmFzY3JpcHQoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAk
ZmlsZV9uYW1lID1+IC9cLmpzJC87CisgICAgcmV0dXJuIGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdl
c19mb3JfY3NzKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC5j
c3MkLzsKKyAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9wZXJsKCRmaWxl
X2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC5wW2xtXSQvOworICAgIHJl
dHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhvbigkZmlsZV9oYW5kbGUsICRm
aWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wucHkkLyBvciAkZmlsZV9uYW1lID1+IC9tYXN0
ZXJcLmNmZyQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3N3aWZ0
KCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC5zd2lmdCQvOwor
CisgICAgIyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2UgbGFuZ3VhZ2UgYmFzZWQgb24gdGhl
IHNjcmlwdCBpbnRlcnByZXRlci4KKworICAgIG15ICRmaXJzdF9saW5lID0gPCRmaWxlX2hhbmRs
ZT47CisgICAgc2VlaygkZmlsZV9oYW5kbGUsIDAsIDApOworCisgICAgcmV0dXJuICgpIHVubGVz
cyAkZmlyc3RfbGluZSA9fiBtfF4jISg/Oi91c3IvYmluL2VudlxzKyk/KFxTKyl8OworICAgIG15
ICRpbnRlcnByZXRlciA9ICQxOworCisgICAgcmV0dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdl
c19mb3JfcGVybCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRpbnRlcnByZXRlciA9fiAv
cGVybCQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhvbigk
ZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRpbnRlcnByZXRlciA9fiAvcHl0aG9uJC87CisK
KyAgICByZXR1cm4gKCk7Cit9CisKKyMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxpbmUg
cmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgQyBmdW5jdGlvbnMuCisjIEEgZnVu
Y3Rpb24gbmFtZSBpcyB0aGUgbGFzdCB3b3JkIGJlZm9yZSBhbiBvcGVuIHBhcmVudGhlc2lzIGJl
Zm9yZSB0aGUgb3V0ZXIKKyMgbGV2ZWwgb3BlbiBicmFjZS4gQSBmdW5jdGlvbiBzdGFydHMgYXQg
dGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgbGFzdCBjbG9zZQorIyBicmFjZSBvciBzZW1p
Y29sb24gYmVmb3JlIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBlbmRzIGF0IHRoZSBjbG9zZSBicmFj
ZS4KKyMgQ29tbWVudCBoYW5kbGluZyBpcyBzaW1wbGUtbWluZGVkIGJ1dCB3aWxsIHdvcmsgZm9y
IGFsbCBidXQgcGF0aG9sb2dpY2FsIGNhc2VzLgorIworIyBSZXN1bHQgaXMgYSBsaXN0IG9mIHRy
aXBsZXM6IFsgc3RhcnRfbGluZSwgZW5kX2xpbmUsIGZ1bmN0aW9uX25hbWUgXS4KKworc3ViIGdl
dF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfY3BwIHsKKyAgICBteSAoJGZpbGVfaGFuZGxlLCAk
ZmlsZV9uYW1lKSA9IEBfOworCisgICAgbXkgQHJhbmdlczsKKworICAgIG15ICRpbl9jb21tZW50
ID0gMDsKKyAgICBteSAkaW5fbWFjcm8gPSAwOworICAgIG15ICRpbl9tZXRob2RfZGVjbGFyYXRp
b24gPSAwOworICAgIG15ICRpbl9wYXJlbnRoZXNlcyA9IDA7CisgICAgbXkgJHF1b3RhdGlvbl9t
YXJrOworICAgIG15ICRpbl9icmFjZXMgPSAwOworICAgIG15ICRpbl90b3BsZXZlbF9hcnJheV9i
cmFjZSA9IDA7CisgICAgbXkgJGJyYWNlX3N0YXJ0ID0gMDsKKyAgICBteSAkYnJhY2VfZW5kID0g
MDsKKyAgICBteSAkbmFtZXNwYWNlX3N0YXJ0ID0gLTE7CisgICAgbXkgJHNraXBfdGlsX2JyYWNl
X29yX3NlbWljb2xvbiA9IDA7CisgICAgbXkgJGVxdWFsX29ic2VydmVkID0gMDsKKworICAgIG15
ICR3b3JkID0gIiI7CisgICAgbXkgJGludGVyZmFjZV9uYW1lID0gIiI7CisKKyAgICBteSAkcG90
ZW50aWFsX21ldGhvZF9jaGFyID0gIiI7CisgICAgbXkgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9
ICIiOworCisgICAgbXkgJHBvdGVudGlhbF9zdGFydCA9IDA7CisgICAgbXkgJHBvdGVudGlhbF9u
YW1lID0gIiI7CisKKyAgICBteSAkc3RhcnQgPSAwOworICAgIG15ICRuYW1lID0gIiI7CisKKyAg
ICBteSAkbmV4dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSA9IDA7CisgICAgbXkgJHBvdGVudGlh
bF9uYW1lc3BhY2UgPSAiIjsKKyAgICBteSBAbmFtZXNwYWNlczsKKyAgICBteSBAYWxsX25hbWVz
cGFjZXM7CisKKyAgICB3aGlsZSAoPCRmaWxlX2hhbmRsZT4pIHsKKyAgICAgICAgIyBIYW5kbGUg
Y29udGludWVkIHF1b3RlZCBzdHJpbmcuCisgICAgICAgIGlmICgkcXVvdGF0aW9uX21hcmspIHsK
KyAgICAgICAgICAgIGlmICghcy0oW15cXF18XFwuKSokcXVvdGF0aW9uX21hcmstLSkgeworICAg
ICAgICAgICAgICAgIGlmICghbS1cXCQtKSB7CisgICAgICAgICAgICAgICAgICAgIHdhcm4gIm1p
c21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKKyAgICAgICAgICAg
ICAgICAgICAgdW5kZWYgJHF1b3RhdGlvbl9tYXJrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdW5kZWYgJHF1b3Rh
dGlvbl9tYXJrOworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG11bHRp
LWxpbmUgY29tbWVudC4KKyAgICAgICAgaWYgKCRpbl9jb21tZW50KSB7CisgICAgICAgICAgICBu
ZXh0IHVubGVzcyBzLS4qXCovLS07CisgICAgICAgICAgICAkaW5fY29tbWVudCA9IDA7CisgICAg
ICAgIH0KKworICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgbWFjcm8uCisgICAgICAgIGlmICgk
aW5fbWFjcm8pIHsKKyAgICAgICAgICAgICRpbl9tYWNybyA9IDAgdW5sZXNzIC9cXCQvOworICAg
ICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCisgICAgICAgICMgSGFuZGxlIHN0YXJ0IG9mIG1h
Y3JvIChvciBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSkuCisgICAgICAgIGlmICgvXlxzKlwj
LykgeworICAgICAgICAgICAgJGluX21hY3JvID0gMSBpZiAvXihbXlxcXXxcXC4pKlxcJC87Cisg
ICAgICAgICAgICBuZXh0OworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29tbWVudHMg
YW5kIHF1b3RlZCB0ZXh0LgorICAgICAgICB3aGlsZSAobS0oL1wqfC8vfFwnfFwiKS0pIHsgIyBc
JyBhbmQgXCIga2VlcCBlbWFjcyBwZXJsIG1vZGUgaGFwcHkKKyAgICAgICAgICAgIG15ICRtYXRj
aCA9ICQxOworICAgICAgICAgICAgaWYgKCRtYXRjaCBlcSAiLyoiKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFzLS9cKi4qP1wqLy0tKSB7CisgICAgICAgICAgICAgICAgICAgIHMtL1wqLiotLTsK
KyAgICAgICAgICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAxOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzaWYgKCRtYXRjaCBlcSAiLy8iKSB7CisgICAgICAgICAgICAgICAg
cy0vLy4qLS07CisgICAgICAgICAgICB9IGVsc2UgeyAjICcgb3IgIgorICAgICAgICAgICAgICAg
IGlmICghcy0kbWF0Y2goW15cXF18XFwuKSo/JG1hdGNoLS0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFzLSRtYXRjaC4qXFwkLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4g
Im1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHMtJG1hdGNoLiotLTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRxdW90YXRpb25fbWFyayA9ICRtYXRjaDsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisKKyAgICAgICAgIyBjb250aW51ZWQgbWV0aG9kIGRlY2xhcmF0aW9uCisgICAg
ICAgIGlmICgkaW5fbWV0aG9kX2RlY2xhcmF0aW9uKSB7CisgICAgICAgICAgICAgIG15ICRvcmln
aW5hbCA9ICRfOworICAgICAgICAgICAgICBteSAkbWV0aG9kX2NvbnQgPSAkXzsKKworICAgICAg
ICAgICAgICBjaG9tcCAkbWV0aG9kX2NvbnQ7CisgICAgICAgICAgICAgICRtZXRob2RfY29udCA9
fiBzL1s7XHtdLiovLzsKKyAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICIk
e3BvdGVudGlhbF9tZXRob2Rfc3BlY30gJHttZXRob2RfY29udH0iOworCisgICAgICAgICAgICAg
ICRfID0gJG9yaWdpbmFsOworICAgICAgICAgICAgICBpZiAoLzsvKSB7CisgICAgICAgICAgICAg
ICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxf
bWV0aG9kX3NwZWMgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX2No
YXIgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOwor
ICAgICAgICAgICAgICAgICAgcy9eW147XHtdKi8vOworICAgICAgICAgICAgICB9IGVsc2lmICgv
ey8pIHsKKyAgICAgICAgICAgICAgICAgIG15ICRzZWxlY3RvciA9IG1ldGhvZF9kZWNsX3RvX3Nl
bGVjdG9yICgkcG90ZW50aWFsX21ldGhvZF9zcGVjKTsKKyAgICAgICAgICAgICAgICAgICRwb3Rl
bnRpYWxfbmFtZSA9ICIke3BvdGVudGlhbF9tZXRob2RfY2hhcn1cWyR7aW50ZXJmYWNlX25hbWV9
ICR7c2VsZWN0b3J9XF0iOworCisgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9z
cGVjID0gIiI7CisgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9jaGFyID0gIiI7
CisgICAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKKworICAgICAg
ICAgICAgICAgICAgJF8gPSAkb3JpZ2luYWw7CisgICAgICAgICAgICAgICAgICBzL15bXjt7XSov
LzsKKyAgICAgICAgICAgICAgfSBlbHNpZiAoL1xAZW5kLykgeworICAgICAgICAgICAgICAgICAg
JGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7CisgICAgICAgICAgICAgICAgICAkaW50ZXJmYWNl
X25hbWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOworICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKworICAgICAgICAjIHN0YXJ0IG9mIG1ldGhvZCBkZWNsYXJhdGlvbgorICAg
ICAgICBpZiAoKG15ICRtZXRob2RfY2hhciwgbXkgJG1ldGhvZF9zcGVjKSA9IG0mXihbLStdKShb
XjAtOTtdW147XSopOz8kJikgeworICAgICAgICAgICAgbXkgJG9yaWdpbmFsID0gJF87CisKKyAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlX25hbWUpIHsKKyAgICAgICAgICAgICAgICBjaG9tcCAk
bWV0aG9kX3NwZWM7CisgICAgICAgICAgICAgICAgJG1ldGhvZF9zcGVjID1+IHMvXHsuKi8vOwor
CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2RfY2hhciA9ICRtZXRob2RfY2hhcjsK
KyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9zcGVjID0gJG1ldGhvZF9zcGVjOwor
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKKyAgICAgICAgICAgICAgICAk
aW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgd2FybiAiZGVjbGFyaW5nIGEgbWV0aG9kIGJ1dCBkb24ndCBoYXZlIGludGVyZmFj
ZSBvbiBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAkXyA9ICRvcmlnaW5hbDsKKyAgICAgICAgICAgIGlmICgvXHsvKSB7CisgICAgICAgICAgICAg
IG15ICRzZWxlY3RvciA9IG1ldGhvZF9kZWNsX3RvX3NlbGVjdG9yICgkcG90ZW50aWFsX21ldGhv
ZF9zcGVjKTsKKyAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiR7cG90ZW50aWFsX21l
dGhvZF9jaGFyfVxbJHtpbnRlcmZhY2VfbmFtZX0gJHtzZWxlY3Rvcn1cXSI7CisKKyAgICAgICAg
ICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICIiOworICAgICAgICAgICAgICAkcG90ZW50
aWFsX21ldGhvZF9jaGFyID0gIiI7CisgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVjbGFyYXRp
b24gPSAwOworICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKKyAgICAgICAgICAgICAgcy9e
W157XSovLzsKKyAgICAgICAgICAgIH0gZWxzaWYgKC9cQGVuZC8pIHsKKyAgICAgICAgICAgICAg
JGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7CisgICAgICAgICAgICAgICRpbnRlcmZhY2VfbmFt
ZSA9ICIiOworICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworCisg
ICAgICAgICMgRmluZCBmdW5jdGlvbiwgaW50ZXJmYWNlIGFuZCBtZXRob2QgbmFtZXMuCisgICAg
ICAgIHdoaWxlIChtJigoPzpbWzp3b3JkOl1dKzo6KSpvcGVyYXRvcig/OlsgXHRdKlwoXCl8W14o
KV0qKXxbWzp3b3JkOl08Pjp+XSt8Wygpe306Oz1dKXxcQCg/OmltcGxlbWVudGF0aW9ufGludGVy
ZmFjZXxwcm90b2NvbClccysoXHcrKVtee10qJmcpIHsKKyAgICAgICAgICAgICMgU2tpcCBhbiBh
cnJheSBkZWZpbml0aW9uIGF0IHRoZSB0b3AgbGV2ZWwuCisgICAgICAgICAgICAjIGUuZy4gc3Rh
dGljIGludCBhcnJbXSA9IHsgMSwgMiwgMyB9OworICAgICAgICAgICAgaWYgKCQxKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCQxIGVxICI9IiBhbmQgISRpbl9wYXJlbnRoZXNlcyBhbmQgISRpbl9i
cmFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgJGVxdWFsX29ic2VydmVkID0gMTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkMSBlcSAieyIgYW5kICRlcXVhbF9vYnNlcnZlZCkgeworICAg
ICAgICAgICAgICAgICAgICAjIFRoaXMgJ3snIGlzIHRoZSBiZWdpbm5pbmcgb2YgYW4gYXJyYXkg
ZGVmaW5pdGlvbiwgbm90IHRoZSBiZWdpbm5pbmcgb2YgYSBtZXRob2QuCisgICAgICAgICAgICAg
ICAgICAgICRpbl90b3BsZXZlbF9hcnJheV9icmFjZSA9IDE7CisgICAgICAgICAgICAgICAgICAg
ICRpbl9icmFjZXMrKzsKKyAgICAgICAgICAgICAgICAgICAgJGVxdWFsX29ic2VydmVkID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkMSAh
fiAvWyBcdF0vKSB7CisgICAgICAgICAgICAgICAgICAgICRlcXVhbF9vYnNlcnZlZCA9IDA7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIGludGVyZmFj
ZSBuYW1lCisgICAgICAgICAgICBpZiAoJDIpIHsKKyAgICAgICAgICAgICAgICAkaW50ZXJmYWNl
X25hbWUgPSAkMjsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCisgICAgICAgICAgICBpZiAoJDEgZXEgIigiKSB7
CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQgdW5sZXNzICRpbl9wYXJl
bnRoZXNlcyB8fCAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uIHx8IGdyZXAgeyAkd29yZCBl
cSAkXyB9ICgiQ0ZfRU5VTSIsICJDRl9PUFRJT05TIiwgIk5TX0VOVU0iLCAiTlNfT1BUSU9OUyIp
OworICAgICAgICAgICAgICAgICRpbl9wYXJlbnRoZXNlcysrOworICAgICAgICAgICAgICAgIG5l
eHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQ2xvc2UgcGFyZW50aGVzaXMuCisg
ICAgICAgICAgICBpZiAoJDEgZXEgIikiKSB7CisgICAgICAgICAgICAgICAgJGluX3BhcmVudGhl
c2VzLS07CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCQxIGVxICJjb25zdCIgYW5kICEkaW5fcGFyZW50aGVzZXMpIHsKKyAgICAgICAgICAg
ICAgICAkcG90ZW50aWFsX25hbWUgLj0gIiBjb25zdCI7CisgICAgICAgICAgICAgICAgbmV4dDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCQxIGVxICJ2b2xhdGlsZSIgYW5kICEk
aW5fcGFyZW50aGVzZXMpIHsKKyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgLj0gIiB2
b2xhdGlsZSI7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgIyBDKysgYXV0byBmdW5jdGlvbigpIC0+IHR5cGUKKyAgICAgICAgICAgIGlmICgkMSBl
cSAiPiIpIHsKKyAgICAgICAgICAgICAgICAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uID0g
MSB1bmxlc3MgKCRpbl9wYXJlbnRoZXNlcyB8fCAkaW5fYnJhY2VzKTsKKyAgICAgICAgICAgICAg
ICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIEMrKyBjb25zdHJ1Y3RvciBp
bml0aWFsaXplcnMKKyAgICAgICAgICAgIGlmICgkMSBlcSAiOiIpIHsKKyAgICAgICAgICAgICAg
ICAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uID0gMSB1bmxlc3MgKCRpbl9wYXJlbnRoZXNl
cyB8fCAkaW5fYnJhY2VzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBPcGVuIGJy
YWNlLgorICAgICAgICAgICAgaWYgKCQxIGVxICJ7IikgeworICAgICAgICAgICAgICAgICRza2lw
X3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAwOworCisgICAgICAgICAgICAgICAgaWYgKCEkaW5f
YnJhY2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkbmFtZXNwYWNlX3N0YXJ0ID49IDAg
YW5kICRuYW1lc3BhY2Vfc3RhcnQgPCAkcG90ZW50aWFsX3N0YXJ0KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJG5hbWVzcGFjZV9zdGFydCAuICIiLCAkcG90ZW50
aWFsX3N0YXJ0IC0gMSwgJG5hbWUgXTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIGlmICgkcG90ZW50aWFsX25hbWVzcGFjZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaCBAbmFtZXNwYWNlcywgJHBvdGVudGlhbF9uYW1lc3BhY2U7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoIEBhbGxfbmFtZXNwYWNlcywgJHBvdGVudGlhbF9uYW1lc3Bh
Y2U7CisgICAgICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVzcGFjZSA9ICIiOwor
ICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkbmFtZXNwYWNlc1stMV07CisgICAgICAg
ICAgICAgICAgICAgICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgICMgUHJvbW90ZSBwb3RlbnRpYWwgbmFtZSB0byByZWFsIGZ1bmN0aW9uIG5hbWUgYXQg
dGhlCisgICAgICAgICAgICAgICAgICAgICMgc3RhcnQgb2YgdGhlIG91dGVyIGxldmVsIHNldCBv
ZiBicmFjZXMgKGZ1bmN0aW9uIGJvZHk/KS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCRwb3Rl
bnRpYWxfc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdGFydCA9ICRwb3RlbnRp
YWxfc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRwb3RlbnRpYWxfbmFt
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChAbmFtZXNwYWNlcyAmJiAkbmFtZSAmJiAo
bGVuZ3RoKCRuYW1lKSA8IDIgfHwgc3Vic3RyKCRuYW1lLDEsMSkgbmUgIlsiKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gam9pbiAoJzo6JywgQG5hbWVzcGFjZXMsICRu
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVjbGFyYXRp
b24gPSAwOworCisgICAgICAgICAgICAgICAgJGJyYWNlX3N0YXJ0ID0gJC4gaWYgKCEkaW5fYnJh
Y2VzKTsKKyAgICAgICAgICAgICAgICAkaW5fYnJhY2VzKys7CisgICAgICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBDbG9zZSBicmFjZS4KKyAgICAgICAg
ICAgIGlmICgkMSBlcSAifSIpIHsKKyAgICAgICAgICAgICAgICBpZiAoISRpbl9icmFjZXMgJiYg
QG5hbWVzcGFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lc3BhY2Vfc3RhcnQg
Pj0gMCBhbmQgJG5hbWVzcGFjZV9zdGFydCA8ICQuKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoIEByYW5nZXMsIFsgJG5hbWVzcGFjZV9zdGFydCAuICIiLCAkLiAtIDEsICRuYW1lIF07
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBwb3AgQG5hbWVz
cGFjZXM7CisgICAgICAgICAgICAgICAgICAgIGlmIChAbmFtZXNwYWNlcykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJG5hbWUgPSAkbmFtZXNwYWNlc1stMV07CisgICAgICAgICAgICAgICAg
ICAgICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAiIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICRpbl9icmFjZXMtLTsKKyAgICAgICAgICAgICAgICAkYnJhY2VfZW5kID0gJC4g
aWYgKCEkaW5fYnJhY2VzKTsKKworICAgICAgICAgICAgICAgICMgRW5kIG9mIGFuIG91dGVyIGxl
dmVsIHNldCBvZiBicmFjZXMuCisgICAgICAgICAgICAgICAgIyBUaGlzIGNvdWxkIGJlIGEgZnVu
Y3Rpb24gYm9keS4KKyAgICAgICAgICAgICAgICBpZiAoISRpbl9icmFjZXMgYW5kICRuYW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgZW5kIG9mIGFuIGFycmF5IGRlZmlu
aXRpb24gYXQgdGhlIHRvcCBsZXZlbCwgbm90IHRoZSBlbmQgb2YgYSBtZXRob2QuCisgICAgICAg
ICAgICAgICAgICAgIGlmICgkaW5fdG9wbGV2ZWxfYXJyYXlfYnJhY2UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICRpbl90b3BsZXZlbF9hcnJheV9icmFjZSA9IDA7CisgICAgICAgICAgICAg
ICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaCBAcmFuZ2VzLCBbICRzdGFydCwgJC4sICRuYW1lIF07CisgICAgICAgICAgICAg
ICAgICAgIGlmIChAbmFtZXNwYWNlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUg
PSAkbmFtZXNwYWNlc1stMV07CisgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZXNwYWNlX3N0
YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgJG5hbWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3Bh
Y2Vfc3RhcnQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAwOworICAgICAgICAgICAgICAg
ICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICMgU2VtaWNvbG9uLgorICAgICAgICAgICAgaWYgKCQxIGVxICI7
IikgeworICAgICAgICAgICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAwOwor
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAwOworICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVjbGFyYXRp
b24gPSAwOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICMgSWdub3JlICJjb25zdCIgbWV0aG9kIHF1YWxpZmllci4KKyAgICAgICAgICAgIGlmICgk
MSBlcSAiY29uc3QiKSB7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKCQxIGVxICJuYW1lc3BhY2UiIHx8ICQxIGVxICJjbGFzcyIgfHwgJDEg
ZXEgInN0cnVjdCIpIHsKKyAgICAgICAgICAgICAgICAkbmV4dF93b3JkX2NvdWxkX2JlX25hbWVz
cGFjZSA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgIyBXb3JkLgorICAgICAgICAgICAgJHdvcmQgPSAkMTsKKyAgICAgICAgICAgIGlmICgh
JHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbikgeworICAgICAgICAgICAgICAgIGlmICgkbmV4
dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSkgeworICAgICAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX25hbWVzcGFjZSA9ICR3b3JkOworICAgICAgICAgICAgICAgICAgICAkbmV4dF93b3JkX2Nv
dWxkX2JlX25hbWVzcGFjZSA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHBvdGVudGlh
bF9uYW1lc3BhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lc3BhY2Ug
PSAiIjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoISRpbl9wYXJl
bnRoZXNlcykgeworICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmICghJHBvdGVudGlhbF9zdGFydCkgeworICAgICAgICAgICAg
ICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47CisgICAgICAgICAgICAgICAgICAgICRwb3Rl
bnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHdhcm4gIm1pc3NpbmcgY2xvc2UgYnJhY2VzIGluICRmaWxlX25h
bWUgKHByb2JhYmxlIHN0YXJ0IGF0ICRicmFjZV9zdGFydClcbiIgaWYgKCRpbl9icmFjZXMgPiAw
KTsKKyAgICB3YXJuICJ0b28gbWFueSBjbG9zZSBicmFjZXMgaW4gJGZpbGVfbmFtZSAocHJvYmFi
bGUgc3RhcnQgYXQgJGJyYWNlX2VuZClcbiIgaWYgKCRpbl9icmFjZXMgPCAwKTsKKworICAgIHdh
cm4gIm1pc21hdGNoZWQgcGFyZW50aGVzZXMgaW4gJGZpbGVfbmFtZVxuIiBpZiAkaW5fcGFyZW50
aGVzZXM7CisKKyAgICByZXR1cm4gZGVsZXRlX25hbWVzcGFjZXNfZnJvbV9yYW5nZXNfZm9yX2Nw
cChcQHJhbmdlcywgXEBhbGxfbmFtZXNwYWNlcyk7Cit9CisKKworIyBUYWtlIGluIHJlZmVyZW5j
ZXMgdG8gYW4gYXJyYXkgb2YgbGluZSByYW5nZXMgZm9yIEMgZnVuY3Rpb25zIGluIGEgZ2l2ZW4g
ZmlsZQorIyBhbmQgYW4gYXJyYXkgb2YgbmFtZXNwYWNlcyBkZWNsYXJlZCBpbiB0aGF0IGZpbGUg
YW5kIHJldHVybiBhbiB1cGRhdGVkCisjIGxpc3Qgb2YgbGluZSByYW5nZXMgd2l0aCB0aGUgbmFt
ZXNwYWNlcyByZW1vdmVkLgorCitzdWIgZGVsZXRlX25hbWVzcGFjZXNfZnJvbV9yYW5nZXNfZm9y
X2NwcCB7CisgICAgbXkgKCRyYW5nZXNfcmVmLCAkbmFtZXNwYWNlc19yZWYpID0gQF87CisgICAg
cmV0dXJuIGdyZXAgeyFpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJG5hbWVzcGFjZXNfcmVmLCAk
JF9bMl0pfSBAJHJhbmdlc19yZWY7Cit9CisKKworc3ViIGlzX2Z1bmN0aW9uX2luX25hbWVzcGFj
ZSB7CisgICAgbXkgKCRuYW1lc3BhY2VzX3JlZiwgJGZ1bmN0aW9uX25hbWUpID0gQF87CisgICAg
cmV0dXJuIGdyZXAgeyRfIGVxICRmdW5jdGlvbl9uYW1lfSBAJG5hbWVzcGFjZXNfcmVmOworfQor
CisKKyMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGlu
Z3MgdGhhdCBsb29rIGxpa2UgSmF2YQorIyBjbGFzc2VzLCBpbnRlcmZhY2VzIGFuZCBtZXRob2Rz
LgorIworIyBBIGNsYXNzIG9yIGludGVyZmFjZSBuYW1lIGlzIHRoZSB3b3JkIHRoYXQgaW1tZWRp
YXRlbHkgZm9sbG93cworIyBgY2xhc3MnIG9yIGBpbnRlcmZhY2UnIHdoZW4gZm9sbG93ZWQgYnkg
YW4gb3BlbiBjdXJseSBicmFjZSBhbmQgbm90CisjIGEgc2VtaWNvbG9uLiBJdCBjYW4gYXBwZWFy
IGF0IHRoZSB0b3AgbGV2ZWwsIG9yIGluc2lkZSBhbm90aGVyIGNsYXNzCisjIG9yIGludGVyZmFj
ZSBibG9jaywgYnV0IG5vdCBpbnNpZGUgYSBmdW5jdGlvbiBibG9jaworIworIyBBIGNsYXNzIG9y
IGludGVyZmFjZSBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgZmlyc3Qg
Y2xvc2UKKyMgYnJhY2Ugb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhl
IGNsb3NlIGJyYWNlLgorIworIyBBIGZ1bmN0aW9uIG5hbWUgaXMgdGhlIGxhc3Qgd29yZCBiZWZv
cmUgYW4gb3BlbiBwYXJlbnRoZXNpcyBiZWZvcmUKKyMgYW4gb3BlbiBicmFjZSByYXRoZXIgdGhh
biBhIHNlbWljb2xvbi4gSXQgY2FuIGFwcGVhciBhdCB0b3AgbGV2ZWwgb3IKKyMgaW5zaWRlIGEg
Y2xhc3Mgb3IgaW50ZXJmYWNlIGJsb2NrLCBidXQgbm90IGluc2lkZSBhIGZ1bmN0aW9uIGJsb2Nr
LgorIworIyBBIGZ1bmN0aW9uIHN0YXJ0cyBhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRo
ZSBmaXJzdCBjbG9zZQorIyBicmFjZSBvciBhZnRlciB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgZW5k
cyBhdCB0aGUgY2xvc2UgYnJhY2UuCisjCisjIENvbW1lbnQgaGFuZGxpbmcgaXMgc2ltcGxlLW1p
bmRlZCBidXQgd2lsbCB3b3JrIGZvciBhbGwgYnV0IHBhdGhvbG9naWNhbCBjYXNlcy4KKyMKKyMg
UmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBmdW5j
dGlvbl9uYW1lIF0uCisKK3N1YiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmEgewor
ICAgIG15ICgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87CisKKyAgICBteSBAY3VycmVu
dF9zY29wZXM7CisKKyAgICBteSBAcmFuZ2VzOworCisgICAgbXkgJGluX2NvbW1lbnQgPSAwOwor
ICAgIG15ICRpbl9tYWNybyA9IDA7CisgICAgbXkgJGluX3BhcmVudGhlc2VzID0gMDsKKyAgICBt
eSAkaW5fYnJhY2VzID0gMDsKKyAgICBteSAkaW5fbm9uX2Jsb2NrX2JyYWNlcyA9IDA7CisgICAg
bXkgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOworICAgIG15ICRpbl9jbGFzc19k
ZWNsYXJhdGlvbiA9IDA7CisKKyAgICBteSAkd29yZCA9ICIiOworCisgICAgbXkgJHBvdGVudGlh
bF9zdGFydCA9IDA7CisgICAgbXkgJHBvdGVudGlhbF9uYW1lID0gIiI7CisgICAgbXkgJHBvdGVu
dGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7CisKKyAgICBteSAkc3RhcnQgPSAw
OworICAgIG15ICRuYW1lID0gIiI7CisgICAgbXkgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19vcl9p
bnRlcmZhY2UgPSAwOworCisgICAgd2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7CisgICAgICAgICMg
SGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQuCisgICAgICAgIGlmICgkaW5fY29t
bWVudCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOworICAgICAgICAgICAg
JGluX2NvbW1lbnQgPSAwOworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29udGludWVk
IG1hY3JvLgorICAgICAgICBpZiAoJGluX21hY3JvKSB7CisgICAgICAgICAgICAkaW5fbWFjcm8g
PSAwIHVubGVzcyAvXFwkLzsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKworICAgICAg
ICAjIEhhbmRsZSBzdGFydCBvZiBtYWNybyAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUp
LgorICAgICAgICBpZiAoL15ccypcIy8pIHsKKyAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYg
L14oW15cXF18XFwuKSpcXCQvOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCisgICAg
ICAgICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4dC4KKyAgICAgICAgd2hpbGUgKG0t
KC9cKnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5
CisgICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKKyAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEg
Ii8qIikgeworICAgICAgICAgICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgeworICAgICAgICAg
ICAgICAgICAgICBzLS9cKi4qLS07CisgICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0g
MTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8v
IikgeworICAgICAgICAgICAgICAgIHMtLy8uKi0tOworICAgICAgICAgICAgfSBlbHNlIHsgIyAn
IG9yICIKKyAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0t
KSB7CisgICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUg
JC4gaW4gJGZpbGVfbmFtZVxuIjsKKyAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0tOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICMg
RmluZCBmdW5jdGlvbiBuYW1lcy4KKyAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fTtdKS1nKSB7
CisgICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCisgICAgICAgICAgICBpZiAoJDEgZXEg
IigiKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7CisgICAgICAgICAgICAgICAgICAg
ICRwb3RlbnRpYWxfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAwOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAkaW5fcGFyZW50aGVzZXMrKzsKKyAgICAgICAgICAgICAg
ICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lz
LgorICAgICAgICAgICAgaWYgKCQxIGVxICIpIikgeworICAgICAgICAgICAgICAgICRpbl9wYXJl
bnRoZXNlcy0tOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICMgT3BlbiBicmFjZS4KKyAgICAgICAgICAgIGlmICgkMSBlcSAieyIpIHsKKyAgICAg
ICAgICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAwOworCisgICAgICAgICAgICAgICAg
IyBQcm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFtZSBhdCB0aGUKKyAg
ICAgICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBvdXRlciBsZXZlbCBzZXQgb2YgYnJhY2VzIChm
dW5jdGlvbi9jbGFzcy9pbnRlcmZhY2UgYm9keT8pLgorICAgICAgICAgICAgICAgIGlmICghJGlu
X25vbl9ibG9ja19icmFjZXMKKyAgICAgICAgICAgICAgICAgICAgYW5kICghJGluX2JyYWNlcyBv
ciAkY3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSkKKyAgICAgICAgICAgICAgICAg
ICAgYW5kICRwb3RlbnRpYWxfc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1l
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyAkc3RhcnQsICgk
LiAtIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbiAo
Jy4nLCBAY3VycmVudF9zY29wZXMpIF07CisgICAgICAgICAgICAgICAgICAgIH0KKworCisgICAg
ICAgICAgICAgICAgICAgICRjdXJyZW50X25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gJHBv
dGVudGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZTsKKworICAgICAgICAgICAgICAgICAg
ICAkc3RhcnQgPSAkcG90ZW50aWFsX3N0YXJ0OworICAgICAgICAgICAgICAgICAgICAkbmFtZSA9
ICRwb3RlbnRpYWxfbmFtZTsKKworICAgICAgICAgICAgICAgICAgICBwdXNoIChAY3VycmVudF9z
Y29wZXMsICRuYW1lKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAkaW5fbm9uX2Jsb2NrX2JyYWNlcysrOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgICRwb3RlbnRp
YWxfc3RhcnQgPSAwOworCisgICAgICAgICAgICAgICAgJGluX2JyYWNlcysrOworICAgICAgICAg
ICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQ2xvc2UgYnJhY2Uu
CisgICAgICAgICAgICBpZiAoJDEgZXEgIn0iKSB7CisgICAgICAgICAgICAgICAgJGluX2JyYWNl
cy0tOworCisgICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0ZXIgbGV2ZWwgc2V0IG9mIGJy
YWNlcy4KKyAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUgYSBmdW5jdGlvbiBib2R5Lgor
ICAgICAgICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19icmFjZXMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCRuYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5n
ZXMsIFsgJHN0YXJ0LCAkLiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqb2luICgnLicsIEBjdXJyZW50X3Njb3BlcykgXTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgcG9wIChAY3VycmVudF9zY29wZXMpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
QGN1cnJlbnRfc2NvcGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRf
bmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAxOworCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHN0YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1l
ID0gICRjdXJyZW50X3Njb3Blc1skI2N1cnJlbnRfc2NvcGVzLTFdOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9u
YW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJHN0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICAiIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRpbl9ub25fYmxvY2tfYnJh
Y2VzLS0gaWYgJGluX25vbl9ibG9ja19icmFjZXM7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7CisgICAgICAgICAgICAgICAgJHBvdGVu
dGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgIyBTZW1pY29sb24uCisgICAgICAgICAgICBpZiAoJDEgZXEgIjsiKSB7Cisg
ICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7CisgICAgICAgICAgICAgICAgJHBv
dGVudGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIpIHsKKyAgICAgICAgICAgICAgICAkaW5f
Y2xhc3NfZGVjbGFyYXRpb24gPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCQx
IGVxICJjbGFzcyIgb3IgKCEkaW5fY2xhc3NfZGVjbGFyYXRpb24gYW5kICQxIGVxICJpbnRlcmZh
Y2UiKSkgeworICAgICAgICAgICAgICAgICRjbGFzc19vcl9pbnRlcmZhY2VfanVzdF9zZWVuID0g
MTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAj
IFdvcmQuCisgICAgICAgICAgICAkd29yZCA9ICQxOworICAgICAgICAgICAgaWYgKCEkaW5fcGFy
ZW50aGVzZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0
X3NlZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Cisg
ICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKKyAgICAgICAgICAgICAg
ICAgICAgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOworICAgICAgICAgICAgICAg
ICAgICAkcG90ZW50aWFsX25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoISRwb3RlbnRpYWxfc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX3N0YXJ0ID0gJC47CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAkY2xhc3Nfb3JfaW50ZXJmYWNlX2p1c3Rfc2VlbiA9
IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3YXJuICJtaXNtYXRjaGVkIGJyYWNlcyBpbiAk
ZmlsZV9uYW1lXG4iIGlmICRpbl9icmFjZXM7CisgICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRo
ZXNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9wYXJlbnRoZXNlczsKKworICAgIHJldHVybiBA
cmFuZ2VzOworfQorCisKKworIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5n
ZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZQorIyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyBv
ciBtZXRob2RzLgorIworIyBBIGZ1bmN0aW9uIG5hbWUgaXMgdGhlIHdvcmQgdGhhdCBpbW1lZGlh
dGVseSBmb2xsb3dzIGBmdW5jdGlvbicgd2hlbgorIyBmb2xsb3dlZCBieSBhbiBvcGVuIGN1cmx5
IGJyYWNlLiBJdCBjYW4gYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWwsCisjIG9yIGluc2lkZSBvdGhl
ciBmdW5jdGlvbnMuIEZvciBleGFtcGxlOgorIworIyAgICBmdW5jdGlvbiBuYW1lKCkgeyAvLyAo
bmFtZSkKKyMgICAgICAgIGZ1bmN0aW9uIGlubmVyKCkgeyB9IC8vIChuYW1lLmlubmVyKQorIyAg
ICB9CisjCisjIEFuIGFub255bW91cyBmdW5jdGlvbiBuYW1lIGlzIHRoZSBpZGVudGlmaWVyIG9u
IHRoZSBsZWZ0IGhhbmQgc2lkZSBvZgorIyBhbiBhc3NpZ25tZW50IHdpdGggdGhlIGVxdWFscyBv
cGVyYXRvciBvciBvYmplY3Qgbm90YXRpb24gdGhhdCBoYXMgYQorIyB2YWx1ZSBzdGFydGluZyB3
aXRoIGBmdW5jdGlvbicgZm9sbG93ZWQgYW4gb3BlbiBjdXJseSBicmFjZS4KKyMgRm9yIGV4YW1w
bGU6CisjCisjICAgIG5hbWVzcGFjZSA9IHsKKyMgICAgICAgIG5hbWU6IGZ1bmN0aW9uKCkge30g
Ly8gKG5hbWVzcGFjZS5uYW1lKQorIyAgICB9CisjICAgIG5hbWVzcGFjZS5Gb28gPSBmdW5jdGlv
bigpIHt9IC8vIChuYW1lc3BhY2UuRm9vKQorIworIyBBIGdldHRlciBvciBzZXR0ZXIgbmFtZSBp
cyB0aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3MgYGdldCcgb3IKKyMgYHNldCcgd2hl
biBmb2xsb3dlZCBieSBwYXJhbXMgYW5kIGFuIG9wZW4gY3VybHkgYnJhY2UuIEZvciBleGFtcGxl
OgorIworIyAgICBuYW1lc3BhY2UgPSB7CisjICAgICAgZ2V0IGZvbygpIHt9IC8vIChuYW1lc3Bh
Y2UuZ2V0IGZvbykKKyMgICAgfQorIworIyBBIG1ldGhvZCBuYW1lIGlzIHRoZSB3b3JkIGltbWVk
aWF0ZWx5IGJlZm9yZSBwYXJlbnRoZXNpcywgd2l0aCBhbiBvcGVuCisjIGN1cmx5IGJyYWNlIGlt
bWVkaWF0ZWx5IGZvbGxvd2luZyBjbG9zaW5nIHBhcmVudGhlc2lzLiBGb3IgYSBjbGFzcyBleHBy
ZXNzaW9uCisjIHdlIHRha2UgdGhlIGFzc2lnbm1lbnQgaWRlbnRpZmllciBpbnN0ZWFkIG9mIHRo
ZSBjbGFzcyBuYW1lIGZvciBuYW1lc3BhY2luZy4KKyMKKyMgICAgbmFtZXNwYWNlLkZvbyA9IGNs
YXNzIERvZXNOb3RNYXR0ZXIgZXh0ZW5kcyBCYXIgeworIyAgICAgICAgY29uc3RydWN0b3IoKSB7
fSAvLyAobmFtZXNwYWNlLkZvbykKKyMgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7fSAv
LyAobmFtZXNwYWNlLkZvby5zdGF0aWNNZXRob2QpCisjICAgICAgICBpbnN0YW5jZU1ldGhvZCgp
IHt9IC8vIChuYW1lc3BhY2UuRm9vLnByb3RvdHlwZS5pbnN0YW5jZU1ldGhvZCkKKyMgICAgICAg
IGdldCBnZXR0ZXIoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5wcm90b3R5cGUuZ2V0IGdldHRlcikK
KyMgICAgfQorIyAgICBjbGFzcyBDbGFzc05hbWUgeworIyAgICAgICAgY29uc3RydWN0b3IoKSB7
fSAvLyAoQ2xhc3NOYW1lKQorIyAgICAgICAgbWV0aG9kKCkge30gLy8gKENsYXNzTmFtZS5wcm90
b3R5cGUubWV0aG9kKQorIyAgICB9CisjCisjIE1ldGhvZHMgbWF5IGV4aXN0IGluIG9iamVjdCBs
aXRlcmFscywgb3V0c2lkZSBvZiBjbGFzc2VzLgorIworIyAgIEZvby5wcm90b3R5cGUgPSB7Cisj
ICAgICAgIG1ldGhvZCgpIHt9LCAvLyAoRm9vLnByb3RvdHlwZS5tZXRob2QpCisjICAgICAgIG90
aGVyTWV0aG9kKCkge30gLy8gKEZvby5wcm90b3R5cGUub3RoZXJNZXRob2QpCisjICAgfQorIwor
IyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3IgYWxs
IGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCisjCisjIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxl
czogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgorCitzdWIgZ2V0X2Z1
bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0IHsKKyAgICBteSAoJGZpbGVIYW5kbGUs
ICRmaWxlTmFtZSkgPSBAXzsKKworICAgIG15IEBjdXJyZW50U2NvcGVzOworICAgIG15IEBjdXJy
ZW50SWRlbnRpZmllcnM7CisgICAgbXkgQGN1cnJlbnRQYXJzaW5nTW9kZSA9ICgiZ2xvYmFsIik7
CisgICAgbXkgQGN1cnJlbnRGdW5jdGlvbk5hbWVzOworICAgIG15IEBjdXJyZW50RnVuY3Rpb25E
ZXB0aHM7CisgICAgbXkgQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXM7CisKKyAgICBteSBAcmFu
Z2VzOworCisgICAgbXkgJGluQ29tbWVudCA9IDA7CisgICAgbXkgJGluUXVvdGVkVGV4dCA9ICIi
OworICAgIG15ICRpbkV4dGVuZHMgPSAwOworICAgIG15ICRpbk1ldGhvZCA9IDA7CisgICAgbXkg
JGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzID0gMDsKKyAgICBteSAkcGFyZW50aGVzZXNE
ZXB0aCA9IDA7CisgICAgbXkgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGggPSAwOworICAgIG15ICRi
cmFjZXNEZXB0aCA9IDA7CisKKyAgICBteSAkY2xhc3NKdXN0U2VlbiA9IDA7CisgICAgbXkgJHBh
cmVudGhlc2lzSnVzdFNlZW4gPSAwOworICAgIG15ICRmdW5jdGlvbkp1c3RTZWVuID0gMDsKKyAg
ICBteSAkZ2V0dGVySnVzdFNlZW4gPSAwOworICAgIG15ICRzZXR0ZXJKdXN0U2VlbiA9IDA7Cisg
ICAgbXkgJGFzeW5jSnVzdFNlZW4gPSAwOworICAgIG15ICRhc3NpZ25tZW50SnVzdFNlZW4gPSAw
OworICAgIG15ICRzdGF0aWNPckNvbnRydWN0b3JTZWVuID0gMDsKKworICAgIG15ICRjdXJyZW50
VG9rZW4gPSAiIjsKKyAgICBteSAkbGFzdFRva2VuID0gIiI7CisgICAgbXkgJHBvc3NpYmxlTWV0
aG9kTmFtZSA9ICIiOworICAgIG15ICR3b3JkID0gIiI7CisKKyAgICB3aGlsZSAoPCRmaWxlSGFu
ZGxlPikgeworICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgbXVsdGktbGluZSBjb21tZW50Lgor
ICAgICAgICBpZiAoJGluQ29tbWVudCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwq
Ly0tOworICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7CisgICAgICAgIH0KKworICAgICAgICAj
IEhhbmRsZSBjb250aW51ZWQgcXVvdGVkIHRleHQuCisgICAgICAgIGlmICgkaW5RdW90ZWRUZXh0
IG5lICIiKSB7CisgICAgICAgICAgICBuZXh0IGlmIC9cXCQvOworICAgICAgICAgICAgcy0oW15c
XF18XFwuKSo/JGluUXVvdGVkVGV4dC0tOworICAgICAgICAgICAgJGluUXVvdGVkVGV4dCA9ICIi
OworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29tbWVudHMgYW5kIHF1b3RlZCB0ZXh0
LgorICAgICAgICB3aGlsZSAobS0oL1wqfC8vfFwnfFwiKS0pIHsgIyBcJyBhbmQgXCIga2VlcCBl
bWFjcyBwZXJsIG1vZGUgaGFwcHkKKyAgICAgICAgICAgIG15ICRtYXRjaCA9ICQxOworICAgICAg
ICAgICAgaWYgKCRtYXRjaCBlcSAnLyonKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzLS9cKi4q
P1wqLy0tKSB7CisgICAgICAgICAgICAgICAgICAgIHMtL1wqLiotLTsKKyAgICAgICAgICAgICAg
ICAgICAgJGluQ29tbWVudCA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl
bHNpZiAoJG1hdGNoIGVxICcvLycpIHsKKyAgICAgICAgICAgICAgICBzLS8vLiotLTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7ICMgJyBvciAiCisgICAgICAgICAgICAgICAgaWYgKCFzLSRtYXRjaChb
XlxcXXxcXC4pKj8kbWF0Y2gtc3RyaW5nX2FwcGVhcmVkX2hlcmUtKSB7CisgICAgICAgICAgICAg
ICAgICAgICRpblF1b3RlZFRleHQgPSAkbWF0Y2ggaWYgL1xcJC87CisgICAgICAgICAgICAgICAg
ICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVOYW1lXG4iIGlm
ICRpblF1b3RlZFRleHQgZXEgIiI7CisgICAgICAgICAgICAgICAgICAgIHMtJG1hdGNoLiotLTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAj
IEZpbmQgZnVuY3Rpb24gbmFtZXMuCisgICAgICAgIHdoaWxlIChtLShcdyt8Wygpe309OjssLl0p
LWcpIHsKKyAgICAgICAgICAgICMgU2tpcCBldmVyeXRoaW5nIHVudGlsICJ7IiBhZnRlciBleHRl
bmRzLgorICAgICAgICAgICAgaWYgKCRpbkV4dGVuZHMpIHsKKyAgICAgICAgICAgICAgICBuZXh0
IGlmICQxIG5lICd7JzsKKyAgICAgICAgICAgICAgICAkaW5FeHRlbmRzID0gMDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgJGxhc3RUb2tlbiA9ICRjdXJyZW50VG9rZW47CisgICAgICAg
ICAgICAkY3VycmVudFRva2VuID0gJDE7CisKKyAgICAgICAgICAgICMgT3BlbiBwYXJlbnRoZXNp
cy4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnKCcpIHsKKyAgICAgICAgICAgICAgICAkcGFyZW50
aGVzZXNEZXB0aCsrOworICAgICAgICAgICAgICAgICRnbG9iYWxQYXJlbnRoZXNlc0RlcHRoKysg
aWYgJGN1cnJlbnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJzaW5nTW9kZV0gZXEgImdsb2JhbCI7
CisgICAgICAgICAgICAgICAgJHBvc3NpYmxlTWV0aG9kTmFtZSA9IGpvaW4oJy4nLCBAY3VycmVu
dElkZW50aWZpZXJzKTsKKyAgICAgICAgICAgICAgICAkaW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFt
ZXRlcnMgPSAxIGlmICRmdW5jdGlvbkp1c3RTZWVuOworICAgICAgICAgICAgICAgICRmdW5jdGlv
bkp1c3RTZWVuID0gMDsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lzLgorICAgICAgICAgICAgaWYgKCQxIGVxICcp
JykgeworICAgICAgICAgICAgICAgICRwYXJlbnRoZXNlc0RlcHRoLS07CisgICAgICAgICAgICAg
ICAgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGgtLSBpZiAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3Vy
cmVudFBhcnNpbmdNb2RlXSBlcSAiZ2xvYmFsIjsKKyAgICAgICAgICAgICAgICBAY3VycmVudElk
ZW50aWZpZXJzID0gKCkgaWYgJGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzOworICAgICAg
ICAgICAgICAgICRpbkFub255bW91c0Z1bmN0aW9uUGFyYW1ldGVycyA9IDA7CisgICAgICAgICAg
ICAgICAgJHBhcmVudGhlc2lzSnVzdFNlZW4gPSAxOworICAgICAgICAgICAgICAgIG5leHQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgT3BlbiBicmFjZS4KKyAgICAgICAgICAgIGlm
ICgkMSBlcSAneycpIHsKKyAgICAgICAgICAgICAgICBteSAkbWV0aG9kTmFtZSA9ICIiOworICAg
ICAgICAgICAgICAgIG15ICRtb2RlID0gJGN1cnJlbnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJz
aW5nTW9kZV07CisKKyAgICAgICAgICAgICAgICAjIE1ldGhvZC4KKyAgICAgICAgICAgICAgICBp
ZiAoKCRtb2RlIGVxICdjbGFzcycgb3IgJG1vZGUgZXEgJ2dsb2JhbCcpIGFuZCAkcGFyZW50aGVz
aXNKdXN0U2VlbiBhbmQgKCRzdGF0aWNPckNvbnRydWN0b3JTZWVuIG9yICRwb3NzaWJsZU1ldGhv
ZE5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkbW9kZSBlcSAnY2xhc3MnKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kTmFtZSA9IGpvaW4oJy4nLCAkc3RhdGljT3JD
b250cnVjdG9yU2VlbiA/ICIiIDogInByb3RvdHlwZSIsICRwb3NzaWJsZU1ldGhvZE5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJG1l
dGhvZE5hbWUgPSAkcG9zc2libGVNZXRob2ROYW1lOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgJG1ldGhvZE5hbWUgPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1v
dmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCisgICAgICAgICAgICAgICAgICAgICRtZXRob2ROYW1l
ID1+IHMvXC4kLy87ICMgUmVtb3ZlIHRyYWlsaW5nIHBlcmlvZC4KKworICAgICAgICAgICAgICAg
ICAgICBteSAkY3VycmVudE1ldGhvZCA9IGpvaW4oJy4nLCBAY3VycmVudFNjb3BlcywgJG1ldGhv
ZE5hbWUpOworICAgICAgICAgICAgICAgICAgICAkY3VycmVudE1ldGhvZCA9fiBzL1wuezIsfS9c
Li9nOyAjIFJlbW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KKyAgICAgICAgICAgICAgICAgICAg
JGN1cnJlbnRNZXRob2QgPX4gcy9cLiQvLzsgIyBSZW1vdmUgdHJhaWxpbmcgcGVyaW9kLgorCisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzaW5nTW9kZSwgIm1ldGhvZCIpOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRN
ZXRob2QpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMs
ICRicmFjZXNEZXB0aCk7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlv
blN0YXJ0TGluZXMsICQuKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAk
YnJhY2VzRGVwdGgrKzsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25KdXN0U2VlbiA9IDA7CisK
KyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50U2NvcGVzLCBqb2luKCcuJywgJG1ldGhvZE5h
bWUgPyAkbWV0aG9kTmFtZSA6IEBjdXJyZW50SWRlbnRpZmllcnMpKTsKKyAgICAgICAgICAgICAg
ICBAY3VycmVudElkZW50aWZpZXJzID0gKCk7CisKKyAgICAgICAgICAgICAgICAkc3RhdGljT3JD
b250cnVjdG9yU2VlbiA9IDA7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgIyBDbG9zZSBicmFjZS4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnfScp
IHsKKyAgICAgICAgICAgICAgICAkYnJhY2VzRGVwdGgtLTsKKyAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25KdXN0U2VlbiA9IDA7CisKKyAgICAgICAgICAgICAgICBpZiAoQGN1cnJlbnRGdW5jdGlv
bkRlcHRocyBhbmQgJGJyYWNlc0RlcHRoID09ICRjdXJyZW50RnVuY3Rpb25EZXB0aHNbJCNjdXJy
ZW50RnVuY3Rpb25EZXB0aHNdKSB7CisgICAgICAgICAgICAgICAgICAgIHBvcChAY3VycmVudEZ1
bmN0aW9uRGVwdGhzKTsKKyAgICAgICAgICAgICAgICAgICAgcG9wKEBjdXJyZW50UGFyc2luZ01v
ZGUpOworCisgICAgICAgICAgICAgICAgICAgIG15ICRjdXJyZW50TmFtZSA9IHBvcChAY3VycmVu
dEZ1bmN0aW9uTmFtZXMpOworICAgICAgICAgICAgICAgICAgICBteSAkc3RhcnQgPSBwb3AoQGN1
cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMpOworCisgICAgICAgICAgICAgICAgICAgICRjdXJyZW50
TmFtZSA9fiBzL15cLi8vZzsgIyBSZW1vdmVzIGxlYWRpbmcgcGVyaW9kcy4KKworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEByYW5nZXMsIFskc3RhcnQsICQuLCAkY3VycmVudE5hbWVdKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwb3AoQGN1cnJlbnRTY29wZXMpOwor
ICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRpZmllcnMgPSAoKTsKKworICAgICAgICAgICAg
ICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgRG90LgorICAgICAgICAg
ICAgaWYgKCQxIGVxICcuJykgeworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICMgU2VtaWNvbG9uIG9yIGNvbW1hLgorICAgICAgICAgICAgaWYgKCQx
IGVxICc7JyBvciAkMSBlcSAnLCcpIHsKKyAgICAgICAgICAgICAgICBAY3VycmVudElkZW50aWZp
ZXJzID0gKCk7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgIyBDbGFzcy4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnY2xhc3MnKSB7CisgICAgICAg
ICAgICAgICAgJGNsYXNzSnVzdFNlZW4gPSAxOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICMgRXh0ZW5kcy4KKyAgICAgICAgICAgIGlmICgkMSBl
cSAnZXh0ZW5kcycpIHsKKyAgICAgICAgICAgICAgICAkaW5FeHRlbmRzID0gMTsKKyAgICAgICAg
ICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIEZ1bmN0aW9uLgor
ICAgICAgICAgICAgaWYgKCQxIGVxICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25KdXN0U2VlbiA9IDE7CisKKyAgICAgICAgICAgICAgICBpZiAoJGFzc2lnbm1lbnRKdXN0
U2VlbikgeworICAgICAgICAgICAgICAgICAgICBteSAkY3VycmVudEZ1bmN0aW9uID0gam9pbign
LicsIChAY3VycmVudFNjb3BlcywgQGN1cnJlbnRJZGVudGlmaWVycykpOworICAgICAgICAgICAg
ICAgICAgICAkY3VycmVudEZ1bmN0aW9uID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25z
ZWN1dGl2ZSBwZXJpb2RzLgorCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJz
aW5nTW9kZSwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRG
dW5jdGlvbk5hbWVzLCAkY3VycmVudEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVwdGgpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25TdGFydExpbmVzLCAkLik7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgIyBHZXR0ZXIgcHJlZml4LgorICAgICAgICAgICAgaWYgKCQxIGVxICdnZXQnKSB7CisgICAg
ICAgICAgICAgICAgbmV4dCBpZiAkbGFzdFRva2VuIGVxICcuJzsgIyBBdm9pZCBtYXAuZ2V0KC4u
LikuCisgICAgICAgICAgICAgICAgJGdldHRlckp1c3RTZWVuID0gMTsKKyAgICAgICAgICAgICAg
ICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIFNldHRlciBwcmVmaXguCisg
ICAgICAgICAgICBpZiAoJDEgZXEgJ3NldCcpIHsKKyAgICAgICAgICAgICAgICBuZXh0IGlmICRs
YXN0VG9rZW4gZXEgJy4nOyAjIEF2b2lkIG1hcC5zZXQoLi4uKS4KKyAgICAgICAgICAgICAgICAk
c2V0dGVySnVzdFNlZW4gPSAxOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICMgQXN5bmMgcHJlZml4LgorICAgICAgICAgICAgaWYgKCQxIGVxICdh
c3luYycpIHsKKyAgICAgICAgICAgICAgICBuZXh0IGlmICRsYXN0VG9rZW4gZXEgJy4nOworICAg
ICAgICAgICAgICAgICRhc3luY0p1c3RTZWVuID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIFN0YXRpYy4KKyAgICAgICAgICAgIGlmICgk
MSBlcSAnc3RhdGljJyBvciAkMSBlcSAnY29uc3RydWN0b3InKSB7CisgICAgICAgICAgICAgICAg
JHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gPSAxOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICMgQXNzaWdubWVudCBvcGVyYXRvci4KKyAgICAgICAg
ICAgIGlmICgkMSBlcSAnPScgb3IgJDEgZXEgJzonKSB7CisgICAgICAgICAgICAgICAgJGFzc2ln
bm1lbnRKdXN0U2VlbiA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbmV4dCBpZiAkcGFyZW50aGVzZXNEZXB0aCA+ICRnbG9iYWxQYXJlbnRo
ZXNlc0RlcHRoOworCisgICAgICAgICAgICAjIFdvcmQuCisgICAgICAgICAgICAkd29yZCA9ICQx
OworCisgICAgICAgICAgICBpZiAoJGNsYXNzSnVzdFNlZW4pIHsKKyAgICAgICAgICAgICAgICBw
dXNoKEBjdXJyZW50SWRlbnRpZmllcnMsICR3b3JkKSBpZiAhJGFzc2lnbm1lbnRKdXN0U2VlbjsK
KworICAgICAgICAgICAgICAgIG15ICRjdXJyZW50Q2xhc3MgPSBqb2luKCcuJywgKEBjdXJyZW50
U2NvcGVzLCBAY3VycmVudElkZW50aWZpZXJzKSk7CisgICAgICAgICAgICAgICAgJGN1cnJlbnRD
bGFzcyA9fiBzL1wuezIsfS9cLi9nOyAjIFJlbW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KKwor
ICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzaW5nTW9kZSwgImNsYXNzIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uTmFtZXMsICRjdXJyZW50Q2xhc3MpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbkRlcHRocywgJGJyYWNlc0RlcHRo
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25TdGFydExpbmVzLCAkLik7
CisgICAgICAgICAgICB9IGVsc2lmICgkZ2V0dGVySnVzdFNlZW4gb3IgJHNldHRlckp1c3RTZWVu
IG9yICRhc3luY0p1c3RTZWVuKSB7CisgICAgICAgICAgICAgICAgJHdvcmQgPSAiZ2V0ICR3b3Jk
IiBpZiAkZ2V0dGVySnVzdFNlZW47CisgICAgICAgICAgICAgICAgJHdvcmQgPSAic2V0ICR3b3Jk
IiBpZiAkc2V0dGVySnVzdFNlZW47CisgICAgICAgICAgICAgICAgJHdvcmQgPSAiYXN5bmMgJHdv
cmQiIGlmICRhc3luY0p1c3RTZWVuOworCisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudElk
ZW50aWZpZXJzLCAkd29yZCk7CisKKyAgICAgICAgICAgICAgICBteSAkbW9kZSA9ICRjdXJyZW50
UGFyc2luZ01vZGVbJCNjdXJyZW50UGFyc2luZ01vZGVdOworICAgICAgICAgICAgICAgIG15ICRj
dXJyZW50RnVuY3Rpb24gPSBqb2luKCcuJywgKEBjdXJyZW50U2NvcGVzLCAoJG1vZGUgZXEgJ2Ns
YXNzJyBhbmQgISRzdGF0aWNPckNvbnRydWN0b3JTZWVuKSA/ICJwcm90b3R5cGUiIDogIiIsIEBj
dXJyZW50SWRlbnRpZmllcnMpKTsKKyAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID1+
IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgorCisgICAgICAg
ICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAiZnVuY3Rpb24iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRGdW5jdGlvbik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVwdGgp
OworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsK
KyAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbkp1c3RTZWVuIGFuZCAhJGFzc2lnbm1lbnRK
dXN0U2VlbikgeworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdv
cmQpOworCisgICAgICAgICAgICAgICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9IGpvaW4oJy4nLCAo
QGN1cnJlbnRTY29wZXMsIEBjdXJyZW50SWRlbnRpZmllcnMpKTsKKyAgICAgICAgICAgICAgICAk
Y3VycmVudEZ1bmN0aW9uID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBw
ZXJpb2RzLgorCisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAiZnVu
Y3Rpb24iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1
cnJlbnRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVw
dGhzLCAkYnJhY2VzRGVwdGgpOworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlv
blN0YXJ0TGluZXMsICQuKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCR3b3JkIG5lICdpZicgYW5k
ICR3b3JkIG5lICdmb3InIGFuZCAkd29yZCBuZSAnZG8nIGFuZCAkd29yZCBuZSAnd2hpbGUnIGFu
ZCAkd29yZCBuZSAnd2hpY2gnIGFuZCAkd29yZCBuZSAndmFyJykgeworICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdvcmQpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAkY2xhc3NKdXN0U2VlbiA9IDA7CisgICAgICAgICAgICAkcGFyZW50aGVzaXNKdXN0
U2VlbiA9IDA7CisgICAgICAgICAgICAkZnVuY3Rpb25KdXN0U2VlbiA9IDA7CisgICAgICAgICAg
ICAkZ2V0dGVySnVzdFNlZW4gPSAwOworICAgICAgICAgICAgJHNldHRlckp1c3RTZWVuID0gMDsK
KyAgICAgICAgICAgICRhc3luY0p1c3RTZWVuID0gMDsKKyAgICAgICAgICAgICRhc3NpZ25tZW50
SnVzdFNlZW4gPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgd2FybiAibWlzbWF0Y2hlZCBi
cmFjZXMgaW4gJGZpbGVOYW1lXG4iIGlmICRicmFjZXNEZXB0aDsKKyAgICB3YXJuICJtaXNtYXRj
aGVkIHBhcmVudGhlc2VzIGluICRmaWxlTmFtZVxuIiBpZiAkcGFyZW50aGVzZXNEZXB0aDsKKwor
ICAgIHJldHVybiBAcmFuZ2VzOworfQorCisjIFJlYWQgYSBmaWxlIGFuZCBnZXQgYWxsIHRoZSBs
aW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQgbG9vayBsaWtlIFBlcmwgZnVuY3Rpb25zLiBG
dW5jdGlvbnMKKyMgc3RhcnQgb24gYSBsaW5lIHRoYXQgc3RhcnRzIHdpdGggInN1YiAiLCBhbmQg
ZW5kIG9uIHRoZSBmaXJzdCBsaW5lIHN0YXJ0aW5nIHdpdGggIn0iIHRoZXJlYWZ0ZXIuCisjCisj
IFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVu
Y3Rpb24gXS4KKworc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybCB7CisgICAg
bXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87CisKKyAgICBteSBAcmFuZ2VzOworCisg
ICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOworICAgIG15ICRzdGFydCA9IDA7CisgICAgbXkg
JGhlcmVEb2N1bWVudElkZW50aWZpZXIgPSAiIjsKKworICAgIHdoaWxlICg8JGZpbGVIYW5kbGU+
KSB7CisgICAgICAgIGNob21wOworICAgICAgICBpZiAoISRoZXJlRG9jdW1lbnRJZGVudGlmaWVy
KSB7CisgICAgICAgICAgICBpZiAoL15zdWJccysoW1x3X11bXHdcZF9dKikvKSB7CisgICAgICAg
ICAgICAgICAgIyBTa2lwIG92ZXIgZm9yd2FyZCBkZWNsYXJhdGlvbnMsIHdoaWNoIGRvbid0IGNv
bnRhaW4gYSBicmFjZSBhbmQgZW5kIHdpdGggYSBzZW1pY29sb24uCisgICAgICAgICAgICAgICAg
bmV4dCBpZiAvO1xzKiQvOworCisgICAgICAgICAgICAgICAgaWYgKCRjdXJyZW50RnVuY3Rpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgd2FybiAibmVzdGVkIGZ1bmN0aW9ucyBmb3VuZCBhdCB0
b3AtbGV2ZWwgYXQgJGZpbGVOYW1lOiQuXG4iOworICAgICAgICAgICAgICAgICAgICBuZXh0Owor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gJDE7
CisgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJC47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoLzw8XHMqW1wiXCddPyhbXHdfXVtcd19cZF0qKS8pIHsKKyAgICAgICAgICAgICAgICAj
IEVudGVyIGhlcmUtZG9jdW1lbnQuCisgICAgICAgICAgICAgICAgJGhlcmVEb2N1bWVudElkZW50
aWZpZXIgPSAkMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbmRleCgkXywgIn0i
KSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHN0YXJ0OworICAgICAgICAg
ICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydCwgJC4sICRjdXJyZW50RnVuY3Rpb25dKTsKKyAg
ICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiI7CisgICAgICAgICAgICAgICAgJHN0
YXJ0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNpZiAoJF8gZXEgJGhlcmVEb2N1
bWVudElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICMgRXNjYXBlIGZyb20gaGVyZS1kb2N1bWVu
dC4KKyAgICAgICAgICAgICRoZXJlRG9jdW1lbnRJZGVudGlmaWVyID0gIiI7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gQHJhbmdlczsKK30KKworIyBSZWFkIGEgZmlsZSBhbmQgZ2V0
IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBQeXRob24g
Y2xhc3NlcywgbWV0aG9kcywgb3IgZnVuY3Rpb25zLgorIworIyBGSVhNRTogTWF5YmUgd2Ugc2hv
dWxkIHVzZSBQeXRob24ncyBhc3QgbW9kdWxlIHRvIGRvIHRoZSBwYXJzaW5nIGZvciB1cz8KKyMK
KyMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBm
dW5jdGlvbiBdLgorCitzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRob24gewor
ICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOworCisgICAgbXkgQHJhbmdlczsK
KworICAgIG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU2VudGluZWxSZWdFeCA9IHFyIyg/OiIi
InwnJycpIzsKKyAgICBteSAkbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFN0YXJ0UmVnRXggPSBxciNc
cyokbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXgjOworICAgIG15ICRtdWx0aWxp
bmVTdHJpbmdMaXRlcmFsRW5kUmVnRXggPSBxciMkbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRp
bmVsUmVnRXhccyokIzsKKworICAgIG15IEBzY29wZVN0YWNrID0gKHsgbGluZSA9PiAwLCBpbmRl
bnQgPT4gLTEsIG5hbWUgPT4gdW5kZWYgfSk7CisgICAgbXkgJGxhc3RMaW5lID0gMDsKKyAgICBt
eSAkaW5Db21tZW50ID0gMDsKKyAgICB1bnRpbCAoJGxhc3RMaW5lKSB7CisgICAgICAgICRfID0g
PCRmaWxlSGFuZGxlPjsKKyAgICAgICAgdW5sZXNzICgkXykgeworICAgICAgICAgICAgIyBUbyBw
b3Agb3V0IGFsbCBwb3BwZWQgc2NvcGVzLCBydW4gdGhlIGxvb3Agb25jZSBtb3JlIGFmdGVyCisg
ICAgICAgICAgICAjIHdlIGVuY291bnRlcmVkIHRoZSBlbmQgb2YgdGhlIGZpbGUuCisgICAgICAg
ICAgICAkXyA9ICJwYXNzXG4iOworICAgICAgICAgICAgJC4rKzsKKyAgICAgICAgICAgICRsYXN0
TGluZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgY2hvbXA7CisgICAgICAgIG5leHQgdW5sZXNz
IC9eKFxzKikoW14jXS4qKSQvOyAjIFNraXAgbm9uLWluZGVudGVkIGxpbmVzIHRoYXQgYmVnaW4g
d2l0aCBhIGNvbW1lbnQuCisKKyAgICAgICAgbXkgJGluZGVudCA9IGxlbmd0aCAkMTsKKyAgICAg
ICAgbXkgJHJlc3QgPSAkMjsKKyAgICAgICAgbXkgJHNjb3BlID0gJHNjb3BlU3RhY2tbLTFdOwor
CisgICAgICAgIGlmICgkaW5kZW50IDw9ICRzY29wZS0+e2luZGVudH0pIHsKKyAgICAgICAgICAg
ICMgRmluZCBhbGwgdGhlIHNjb3BlcyB0aGF0IHdlIGhhdmUganVzdCBleGl0ZWQuCisgICAgICAg
ICAgICBteSAkaSA9IDA7CisgICAgICAgICAgICBmb3IgKDsgJGkgPCBAc2NvcGVTdGFjazsgKysk
aSkgeworICAgICAgICAgICAgICAgIGxhc3QgaWYgJGluZGVudCA8PSAkc2NvcGVTdGFja1skaV0t
PntpbmRlbnR9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXkgQHBvcHBlZFNjb3BlcyA9
IHNwbGljZSBAc2NvcGVTdGFjaywgJGk7CisKKyAgICAgICAgICAgICMgRm9yIGVhY2ggc2NvcGUg
dGhhdCB3YXMganVzdCBleGl0ZWQsIGFkZCBhIHJhbmdlIHRoYXQgZ29lcyBmcm9tIHRoZSBzdGFy
dCBvZiB0aGF0CisgICAgICAgICAgICAjIHNjb3BlIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBu
ZXN0ZWQgc2NvcGUsIG9yIHRvIHRoZSBsaW5lIGp1c3QgYmVmb3JlIHRoaXMgb25lIGZvcgorICAg
ICAgICAgICAgIyB0aGUgaW5uZXJtb3N0IHNjb3BlLgorICAgICAgICAgICAgZm9yICgkaSA9IDA7
ICRpIDwgQHBvcHBlZFNjb3BlczsgKyskaSkgeworICAgICAgICAgICAgICAgIG15ICRsaW5lQWZ0
ZXJFbmQgPSAkaSArIDEgPT0gQHBvcHBlZFNjb3BlcyA/ICQuIDogJHBvcHBlZFNjb3Blc1skaSAr
IDFdLT57bGluZX07CisgICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBbJHBvcHBlZFNjb3Bl
c1skaV0tPntsaW5lfSwgJGxpbmVBZnRlckVuZCAtIDEsICRwb3BwZWRTY29wZXNbJGldLT57bmFt
ZX1dOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQHNjb3BlU3RhY2sgb3Igd2FybiAiUG9w
cGVkIG9mZiBsYXN0IHNjb3BlIGF0ICRmaWxlTmFtZTokLlxuIjsKKworICAgICAgICAgICAgIyBT
ZXQgdGhlIG5vdy1jdXJyZW50IHNjb3BlIHRvIHN0YXJ0IGF0IHRoZSBjdXJyZW50IGxpbmUuIEFu
eSBsaW5lcyB3aXRoaW4gdGhpcyBzY29wZQorICAgICAgICAgICAgIyBiZWZvcmUgdGhpcyBwb2lu
dCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8gQHJhbmdlcy4KKyAgICAgICAgICAg
ICRzY29wZSA9ICRzY29wZVN0YWNrWy0xXTsKKyAgICAgICAgICAgICRzY29wZS0+e2xpbmV9ID0g
JC47CisgICAgICAgIH0KKworICAgICAgICAjIFNraXAgbXVsdGktbGluZSBzdHJpbmcgbGl0ZXJh
bHMgYW5kIGRvY3N0cmluZ3MuCisgICAgICAgIG5leHQgaWYgLyRtdWx0aWxpbmVTdHJpbmdMaXRl
cmFsU3RhcnRSZWdFeC4qJG11bHRpbGluZVN0cmluZ0xpdGVyYWxFbmRSZWdFeC87CisgICAgICAg
IGlmICghJGluQ29tbWVudCAmJiAvJG11bHRpbGluZVN0cmluZ0xpdGVyYWxTdGFydFJlZ0V4Lykg
eworICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7CisgICAgICAgIH0gZWxzaWYgKCRpbkNvbW1l
bnQgJiYgLyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXgvKSB7CisgICAgICAgICAgICAk
aW5Db21tZW50ID0gMDsKKyAgICAgICAgfQorICAgICAgICBuZXh0IGlmICRpbkNvbW1lbnQ7CisK
KyAgICAgICAgbmV4dCBpZiAvXlxzKlsjJyJdLzsgIyBTa2lwIGluZGVudGVkIGFuZCBub24taW5k
ZW50ZWQgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGEgY29tbWVudCBvciBzdHJpbmcgbGl0ZXJhbCAo
aW5jbHVkZXMgZG9jc3RyaW5ncykuCisKKyAgICAgICAgbmV4dCB1bmxlc3MgJHJlc3QgPX4gLyg/
OmNsYXNzfGRlZilccysoXHcrKS87CisgICAgICAgIG15ICRuYW1lID0gJDE7CisgICAgICAgIG15
ICRmdWxsTmFtZSA9ICRzY29wZS0+e25hbWV9ID8gam9pbignLicsICRzY29wZS0+e25hbWV9LCAk
bmFtZSkgOiAkbmFtZTsKKyAgICAgICAgcHVzaCBAc2NvcGVTdGFjaywgeyBsaW5lID0+ICQuLCBp
bmRlbnQgPT4gJGluZGVudCwgbmFtZSA9PiAkZnVsbE5hbWUgfTsKKworICAgICAgICBpZiAoJHNj
b3BlLT57aW5kZW50fSA+PSAwKSB7CisgICAgICAgICAgICBwdXNoIEByYW5nZXMsIFskc2NvcGUt
PntsaW5lfSwgJC4gLSAxLCAkc2NvcGUtPntuYW1lfV07CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gQHJhbmdlczsKK30KKworIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGlu
ZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDU1Mgc2VsZWN0b3JzLiAgQSBz
ZWxlY3RvciBpcworIyBhbnl0aGluZyBiZWZvcmUgYW4gb3BlbmluZyBicmFjZSBvbiBhIGxpbmUu
IEEgc2VsZWN0b3Igc3RhcnRzIGF0IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIG9wZW5pbmcKKyMg
YnJhY2UgYW5kIGVuZHMgYXQgdGhlIGNsb3NpbmcgYnJhY2UuCisjCisjIFJlc3VsdCBpcyBhIGxp
c3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgc2VsZWN0b3IgXS4KKworc3Vi
IGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzIHsKKyAgICBteSAoJGZpbGVIYW5kbGUs
ICRmaWxlTmFtZSkgPSBAXzsKKworICAgIG15IEByYW5nZXM7CisKKyAgICBteSAkaW5Db21tZW50
ID0gMDsKKyAgICBteSAkaW5CcmFjZSA9IDA7CisgICAgbXkgQHN0YWNrOworICAgIG15ICRjb250
ZXh0OworICAgIG15IEBjdXJyZW50UGFyc2VNb2RlID0gKCJnbG9iYWwiKTsKKyAgICBteSBAZ3Jv
dXBpbmdTdGFjazsKKyAgICBteSAkc2VsZWN0b3JCcmFjZXMgPSAwOworCisgICAgd2hpbGUgKDwk
ZmlsZUhhbmRsZT4pIHsKKyAgICAgICAgZm9yZWFjaCBteSAkdG9rZW4gKHNwbGl0IG0tKFx7fFx9
fC9cKnxcKi8pLSwgJF8pIHsKKyAgICAgICAgICAgIGlmICgkdG9rZW4gZXEgInsiKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50KSB7CisgICAgICAgICAgICAgICAgICAgICRpbkJy
YWNlICs9IDE7CisgICAgICAgICAgICAgICAgICAgICRzZWxlY3RvckJyYWNlcyArPSAxIGlmICRj
dXJyZW50UGFyc2VNb2RlWyQjY3VycmVudFBhcnNlTW9kZV0gZXEgInNlbGVjdG9yIjsKKyAgICAg
ICAgICAgICAgICAgICAgd2FybiAibWlzbWF0Y2hlZCBvcGVuaW5nIGJyYWNlIGZvdW5kIGluICRm
aWxlTmFtZTokLlxuIiBpZiAkc2VsZWN0b3JCcmFjZXMgPiAxOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzaWYgKCR0b2tlbiBlcSAifSIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoISRpbkNvbW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEkaW5CcmFjZSBvciAk
Y3VycmVudFBhcnNlTW9kZVskI2N1cnJlbnRQYXJzZU1vZGVdIGVxICJnbG9iYWwiKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB3YXJuICJtaXNtYXRjaGVkIGNsb3NpbmcgYnJhY2UgZm91bmQg
aW4gJGZpbGVOYW1lOiQuXG4iOworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICRpbkJyYWNlIC09IDE7CisK
KyAgICAgICAgICAgICAgICAgICAgbXkgJHBhcnNlTW9kZSA9IHBvcChAY3VycmVudFBhcnNlTW9k
ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcGFyc2VNb2RlIGVxICJzZWxlY3RvciIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gcG9wKEBzdGFjayk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBteSAkc3RhcnRMaW5lID0gcG9wKEBzdGFjayk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBteSAkZW5kTGluZSA9ICQuOworICAgICAgICAgICAgICAgICAgICAgICAg
bXkgJGdyb3VwaW5nUHJlZml4ID0gam9pbigiICIsIEBncm91cGluZ1N0YWNrKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChsZW5ndGggJGdyb3VwaW5nUHJlZml4KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJGdyb3VwaW5nUHJlZml4IC49ICIgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAcmFuZ2VzLCBbJHN0YXJ0
TGluZSwgJGVuZExpbmUsICRncm91cGluZ1ByZWZpeCAuICRuYW1lXSk7CisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRwYXJzZU1vZGUgZXEgIm1lZGlhIikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcG9wKEBncm91cGluZ1N0YWNrKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICRzZWxlY3RvckJyYWNlcyA9IDA7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNpZiAoJHRva2VuIGVxICIvKiIpIHsKKyAgICAgICAgICAgICAg
ICAkaW5Db21tZW50ID0gMTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCR0b2tlbiBlcSAiKi8iKSB7
CisgICAgICAgICAgICAgICAgd2FybiAibWlzbWF0Y2hlZCBjb21tZW50IGZvdW5kIGluICRmaWxl
TmFtZTokLlxuIiBpZiAhJGluQ29tbWVudDsKKyAgICAgICAgICAgICAgICAkaW5Db21tZW50ID0g
MDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50
IGFuZCAkY3VycmVudFBhcnNlTW9kZVskI2N1cnJlbnRQYXJzZU1vZGVdIG5lICJzZWxlY3RvciIg
YW5kICR0b2tlbiAhfiAvXltcc1x0XSokLykgeworICAgICAgICAgICAgICAgICAgICAkdG9rZW4g
PX4gcy9eW1xzXHRdKnxbXHNcdF0qJC8vZzsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHN0YXJ0
TGluZSA9ICQuOworICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2VuID1+IC9eXEBtZWRpYS8p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzZU1vZGUsICJtZWRp
YSIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAZ3JvdXBpbmdTdGFjaywgJHRva2Vu
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRQYXJzZU1vZGUsICJzZWxlY3RvciIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAc3RhY2ssICgkc3RhcnRMaW5lLCAkdG9rZW4pKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgICMgU29ydCBieSBzdGFydCBsaW5lLgorICAgIHJldHVybiBzb3J0IHskYS0+WzBd
IDw9PiAkYi0+WzBdfSBAcmFuZ2VzOworfQorCisjIFJlYWQgYSBmaWxlIGFuZCBnZXQgYWxsIHRo
ZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQgbG9vayBsaWtlIFN3aWZ0IGNsYXNzZXMs
IG1ldGhvZHMsCisjIG9yIGZ1bmN0aW9ucy4KKyMKKyMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlw
bGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBmdW5jdGlvbiBdLgorCitzdWIgZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCB7CisgICAgbXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5h
bWUpID0gQF87CisKKyAgICBteSBAcmFuZ2VzOworCisgICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9
ICIiOworICAgIG15ICRjdXJyZW50VHlwZSA9ICIiOworICAgIG15ICRmdW5jdGlvblN0YXJ0ID0g
MDsKKyAgICBteSAkdHlwZVN0YXJ0ID0gMDsKKyAgICBteSAkZnVuY3Rpb25TY29wZURlcHRoID0g
MDsKKyAgICBteSAkdHlwZVNjb3BlRGVwdGggPSAwOworICAgIG15ICRzY29wZURlcHRoID0gMDsK
KworICAgIHdoaWxlICg8JGZpbGVIYW5kbGU+KSB7CisgICAgICAgIGNob21wOworICAgICAgICBu
ZXh0IGlmICgvXlxzKlwvXC8uKi8pOworICAgICAgICBpZiAoL2Z1bmNccysoW1x3X11bXHdcZF9d
KilcKCguKilcKS8gfHwgL3ZhclxzKyhbXHdfXVtcd1xkX10qKTpccysvKSB7CisgICAgICAgICAg
ICAkZnVuY3Rpb25TY29wZURlcHRoID0gJHNjb3BlRGVwdGg7CisgICAgICAgICAgICAkY3VycmVu
dEZ1bmN0aW9uID0gJDE7CisgICAgICAgICAgICBpZiAoJDIpIHsKKyAgICAgICAgICAgICAgICAk
Y3VycmVudEZ1bmN0aW9uID0gIiRjdXJyZW50RnVuY3Rpb24oIi4gcGFyc2VTd2lmdEZ1bmN0aW9u
QXJncygkMikgLiAiKSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoJGN1cnJlbnRU
eXBlKSB7CisgICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIkY3VycmVudFR5cGUu
JGN1cnJlbnRGdW5jdGlvbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkZnVuY3Rpb25T
dGFydCA9ICQuOworICAgICAgICB9IGVsc2lmICgvKD86Y2xhc3N8c3RydWN0fGVudW18cHJvdG9j
b2x8ZXh0ZW5zaW9uKVxzKyhbXHdfXVtcd1xkX10qKS8pIHsKKyAgICAgICAgICAgICR0eXBlU2Nv
cGVEZXB0aCA9ICRzY29wZURlcHRoOworICAgICAgICAgICAgJGN1cnJlbnRUeXBlID0gJDE7Cisg
ICAgICAgICAgICAkdHlwZVN0YXJ0ID0gJC47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluZGV4
KCRfLCAieyIpID4gLTEpIHsKKyAgICAgICAgICAgICRzY29wZURlcHRoKys7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGluZGV4KCRfLCAifSIpID4gLTEpIHsKKyAgICAgICAgICAgICRzY29wZURl
cHRoLS07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRzY29wZURlcHRoID09ICRmdW5jdGlvblNj
b3BlRGVwdGgpIHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvblN0YXJ0OworICAg
ICAgICAgICAgcHVzaChAcmFuZ2VzLCBbJGZ1bmN0aW9uU3RhcnQsICQuLCAkY3VycmVudEZ1bmN0
aW9uXSk7CisgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiI7CisgICAgICAgICAgICAk
ZnVuY3Rpb25TdGFydCA9IDA7CisgICAgICAgIH0gZWxzaWYgKCRzY29wZURlcHRoID09ICR0eXBl
U2NvcGVEZXB0aCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHR5cGVTdGFydDsKKyAgICAg
ICAgICAgICRjdXJyZW50VHlwZSA9ICIiOworICAgICAgICAgICAgJHR5cGVTdGFydCA9IDA7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQHJhbmdlczsKK30KKworc3ViIHBhcnNlU3dp
ZnRGdW5jdGlvbkFyZ3MgeworICAgIG15ICRmdW5jdGlvbkFyZ3MgPSBzaGlmdDsKKworICAgIG15
IEB3b3JkcyA9IHNwbGl0IC8sIC8sICRmdW5jdGlvbkFyZ3M7CisgICAgbXkgJGFyZ0NvdW50ID0g
c2NhbGFyKEB3b3Jkcyk7CisgICAgaWYgKCRhcmdDb3VudCA9PSAwKSB7CisgICAgICAgIHJldHVy
biAiIjsKKyAgICB9IGVsc2lmICgkYXJnQ291bnQgPiAwKSB7CisgICAgICAgICMgSWYgdGhlIGZp
cnN0IGFyZ3VtZW50IGlzIHVubmFtZWQsIGdpdmUgaXQgdGhlIG5hbWUgIl8iCisgICAgICAgICR3
b3Jkc1swXSA9fiBzL14oXHcrOiAuKikvXyAkMS87CisgICAgICAgIHJldHVybiBqb2luKCIiLCBt
YXAgeyAkXyA9fiBzL14oXHcrKS4qLyQxLzsgIiRfOiIgfSBAd29yZHMpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHdhcm4gIlVua25vd24gYXJndW1lbnQgY291bnQuXG4iOworICAgIH0KK30KKwor
c3ViIGRlY29kZUVudGl0aWVzIHsKKyAgICBteSAkdGV4dCA9IHNoaWZ0OworICAgICR0ZXh0ID1+
IHMvXCZsdDsvPC9nOworICAgICR0ZXh0ID1+IHMvXCZndDsvPi9nOworICAgICR0ZXh0ID1+IHMv
XCZxdW90Oy9cIi9nOworICAgICR0ZXh0ID1+IHMvXCZhcG9zOy9cJy9nOworICAgICR0ZXh0ID1+
IHMvXCZhbXA7L1wmL2c7CisgICAgcmV0dXJuICR0ZXh0OworfQorCisxOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2RpcnMucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvZGlycy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY1ZTFk
MDI1ZjA3MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9kaXJz
LnBtCkBAIC0wLDAgKzEsODEgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKworIyBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3BhY2thZ2Ugd2Via2l0cGVybDo6ZGlyczsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsK
K3VzZSBDYXJwOwordXNlIEZpbGU6OlNwZWM7CisKK0JFR0lOIHsKKyAgIHVzZSBFeHBvcnRlciAg
ICgpOworICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9S
VF9UQUdTKTsKKyAgICRWRVJTSU9OICAgICA9IDEuMDA7CisgICBASVNBICAgICAgICAgPSBxdyhF
eHBvcnRlcik7CisgICBARVhQT1JUICAgICAgPSBxdygKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlRGlyCisgICAgICAgICAgICAgICAgICAgIHNldFNvdXJjZURpcgorICAgICAgICAgICAgICAg
ICk7CisgICAlRVhQT1JUX1RBR1MgPSAoKTsKKyAgIEBFWFBPUlRfT0sgICA9ICgpOworfQorCitt
eSAkc291cmNlRGlyOworCitzdWIgc291cmNlRGlyCit7CisgICAgZGV0ZXJtaW5lU291cmNlRGly
KCk7CisgICAgcmV0dXJuICRzb3VyY2VEaXI7Cit9CisKKyMgdXNlZCBmb3Igc2NyaXB0cyB3aGlj
aCBhcmUgc3RvcmVkIGluIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9uCitzdWIgc2V0U291cmNlRGly
KCQpCit7CisgICAgKCRzb3VyY2VEaXIpID0gQF87Cit9CisKK3N1YiBkZXRlcm1pbmVTb3VyY2VE
aXIKK3sKKyAgICByZXR1cm4gaWYgJHNvdXJjZURpcjsKKyAgICAkc291cmNlRGlyID0gJEZpbmRC
aW46OlJlYWxCaW47CisgICAgJHNvdXJjZURpciA9fiBzfC8rJHx8OyAjIFJlbW92ZSB0cmFpbGlu
ZyAnLycgYXMgd2Ugd291bGQgZGllIGxhdGVyCisKKyAgICAjIHdhbGtzIHVwIHBhdGggY2hlY2tp
bmcgZWFjaCBkaXJlY3RvcnkgdG8gc2VlIGlmIGl0IGlzIHRoZSBtYWluIFdlYktpdCBwcm9qZWN0
IGRpciwKKyAgICAjIGRlZmluZWQgYnkgY29udGFpbmluZyBTb3VyY2VzLCBXZWJDb3JlLCBhbmQg
SmF2YVNjcmlwdENvcmUuCisgICAgdW50aWwgKCgtZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJj
ZURpciwgIlNvdXJjZSIpICYmIC1kIEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiU291
cmNlIiwgIldlYkNvcmUiKSAmJiAtZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNv
dXJjZSIsICJKYXZhU2NyaXB0Q29yZSIpKSB8fCAoLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3Vy
Y2VEaXIsICJJbnRlcm5hbCIpICYmIC1kIEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAi
T3BlblNvdXJjZSIpKSkKKyAgICB7CisgICAgICAgIGlmICgkc291cmNlRGlyICF+IHN8L1teL10r
JHx8KSB7CisgICAgICAgICAgICBjcm9hayAiQ291bGQgbm90IGZpbmQgdG9wIGxldmVsIHdlYmtp
dCBkaXJlY3RvcnkgYWJvdmUgc291cmNlIGRpcmVjdG9yeSB1c2luZyBGaW5kQmluLiI7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAkc291cmNlRGlyID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3Vy
Y2VEaXIsICJPcGVuU291cmNlIikgaWYgLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIs
ICJPcGVuU291cmNlIik7Cit9CisKKzE7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvZmlsdGVyLWJ1aWxkLXdlYmtpdF91bml0dGVzdC9zaG91bGRJZ25vcmVMaW5lX3VuaXR0
ZXN0cy5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9maWx0ZXItYnVpbGQtd2Via2l0X3Vu
aXR0ZXN0L3Nob3VsZElnbm9yZUxpbmVfdW5pdHRlc3RzLnBsCmluZGV4IGMzODMwM2NjYmNlNS4u
MjJmMGE0MGZkNzJjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZmlsdGVy
LWJ1aWxkLXdlYmtpdF91bml0dGVzdC9zaG91bGRJZ25vcmVMaW5lX3VuaXR0ZXN0cy5wbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZmlsdGVyLWJ1aWxkLXdlYmtpdF91bml0dGVzdC9z
aG91bGRJZ25vcmVMaW5lX3VuaXR0ZXN0cy5wbApAQCAtMzEsMTQgKzMxLDExIEBAIHVzZSB3YXJu
aW5nczsKIHVzZSBFbmdsaXNoOwogdXNlIEZpbmRCaW47CiB1c2UgVGVzdDo6TW9yZTsKLXVzZSBs
aWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwotdXNlIExvYWRBc01v
ZHVsZSBxdyhGaWx0ZXJCdWlsZFdlYktpdCBmaWx0ZXItYnVpbGQtd2Via2l0KTsKK3VzZSBsaWIg
RmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpSZWFsQmluLCAiLi4iLCAiLi4iKTsKK3VzZSB3
ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0IHF3KHNob3VsZElnbm9yZUxpbmUpOwogCiBzdWIgZGVz
Y3JpcHRpb24oJCk7CiAKLUBGaWx0ZXJCdWlsZFdlYktpdDo6RVhQT1JUX09LID0gcXcoc2hvdWxk
SWdub3JlTGluZSk7Ci1GaWx0ZXJCdWlsZFdlYktpdC0+aW1wb3J0KEBGaWx0ZXJCdWlsZFdlYktp
dDo6RVhQT1JUX09LKTsKLQogIwogIyBUZXN0IHdoaXRlc3BhY2UKICMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9sZWFrcy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9sZWFrcy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmMwODcy
Y2ZiZGYzNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9sZWFr
cy5wbQpAQCAtMCwwICsxLDE1NCBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCisjIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworIyBTY3JpcHQgdG8gcnVuIHRoZSBNYWMgT1MgWCBsZWFrcyB0b29sIHdpdGggbW9yZSBleHBy
ZXNzaXZlICctZXhjbHVkZScgbGlzdHMuCisKK3BhY2thZ2Ugd2Via2l0cGVybDo6bGVha3M7CisK
K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgQ2FycDsKKwordXNlIEZpbGU6OkJhc2Vu
YW1lOworCitCRUdJTiB7CisgICB1c2UgRXhwb3J0ZXIgICAoKTsKKyAgIG91ciAoJFZFUlNJT04s
IEBJU0EsIEBFWFBPUlQsIEBFWFBPUlRfT0ssICVFWFBPUlRfVEFHUyk7CisgICAkVkVSU0lPTiAg
ICAgPSAxLjAwOworICAgQElTQSAgICAgICAgID0gcXcoRXhwb3J0ZXIpOworICAgQEVYUE9SVCAg
ICAgID0gcXcoCisgICAgICAgICAgICAgICAgICAgIHJ1bkxlYWtzCisgICAgICAgICAgICAgICAg
ICAgIHBhcnNlTGVha3NPdXRwdXQKKyAgICAgICAgICAgICAgICApOworICAgJUVYUE9SVF9UQUdT
ID0gKCk7CisgICBARVhQT1JUX09LICAgPSAoKTsKK30KKworIyBSZXR1cm5zIHRoZSBvdXRwdXQg
b2YgdGhlIGxlYWtzIHRvb2wgaW4gbGlzdCBmb3JtLgorc3ViIHJ1bkxlYWtzKCQkKQoreworICAg
IG15ICgkdGFyZ2V0LCAkbWVtZ3JhcGhQYXRoKSA9IEBfOworCisgICAgaWYgKGRlZmluZWQgJG1l
bWdyYXBoUGF0aCkgeworICAgICAgICBgL3Vzci9iaW4vbGVha3MgXCIkdGFyZ2V0XCIgLS1vdXRw
dXRHcmFwaD1cIiRtZW1ncmFwaFBhdGhcImA7CisgICAgICAgICR0YXJnZXQgPSAkbWVtZ3JhcGhQ
YXRoOworICAgIH0KKworICAgICMgVG8gZ2V0IGEgcmVzdWx0IHdlIGNhbiBwYXJzZSwgd2UgbmVl
ZCB0byBwYXNzIC0tbGlzdCB0byBhbGwgdmVyc2lvbnMgb2YgdGhlIGxlYWtzIHRvb2wKKyAgICAj
IHRoYXQgcmVjb2duaXplIGl0LCBidXQgdGhlcmUgaXMgbm8gY2VydGFpbiB3YXkgdG8gdGVsbCBp
biBhZHZhbmNlICh0aGUgdmVyc2lvbiBvZiB0aGUKKyAgICAjIHRvb2wgaXMgbm90IGFsd2F5cyB0
aWVkIHRvIE9TIHZlcnNpb24sIGFuZCAtLWhlbHAgZG9lc24ndCBkb2N1bWVudCB0aGUgb3B0aW9u
IGluIHNvbWUKKyAgICAjIG9mIHRoZSB0b29sIHZlcnNpb25zIHdoZXJlIGl0J3Mgc3VwcG9ydGVk
IGFuZCBuZWVkZWQpLgorICAgIG15IEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0
YXJnZXRcIiAtLWxpc3RgOworCisgICAgIyBGSVhNRTogUmVtb3ZlIHRoZSBmYWxsYmFjayBvbmNl
IG1hY09TIE1vamF2ZSBpcyB0aGUgb2xkZXN0IHN1cHBvcnRlZCB2ZXJzaW9uLgorICAgIG15ICRs
ZWFrc0V4aXRDb2RlID0gJD8gPj4gODsKKyAgICBpZiAoJGxlYWtzRXhpdENvZGUgPiAxKSB7Cisg
ICAgICAgIEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJnZXRcImA7CisgICAg
fQorCisgICAgcmV0dXJuIFxAbGVha3NPdXRwdXQ7Cit9CisKKyMgUmV0dXJucyBhIGxpc3Qgb2Yg
aGFzaCByZWZlcmVuY2VzIHdpdGggdGhlIGtleXMgeyBhZGRyZXNzLCBzaXplLCB0eXBlLCBjYWxs
U3RhY2ssIGxlYWtzT3V0cHV0IH0KK3N1YiBwYXJzZUxlYWtzT3V0cHV0KFxAKQoreworICAgIG15
ICgkbGVha3NPdXRwdXQpID0gQF87CisKKyAgICAjIEZvcm1hdDoKKyAgICAjICAgUHJvY2VzcyAw
MDAwMDogMTIzNCBub2RlcyBtYWxsb2NlZCBmb3IgMTIzNCBLQgorICAgICMgICBQcm9jZXNzIDAw
MDAwOiBYWCBsZWFrcyBmb3IgWFhYIHRvdGFsIGxlYWtlZCBieXRlcy4KKyAgICAjICAgTGVhazog
MHgwMDAwMDAwMCBzaXplPTEyMzQgW2luc3RhbmNlIG9mICdibGFoJ10KKyAgICAjICAgICAgIDB4
MDAwMDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIDB4MDAwMDAwMDAgYS4uZC5lLmUKKyAgICAj
ICAgICAgIC4uLgorICAgICMgICAgICAgQ2FsbCBzdGFjazogbGVha19jYWxsZXIoKSB8IGxlYWso
KSB8IG1hbGxvYworICAgICMKKyAgICAjICAgV2UgdHJlYXQgZXZlcnkgbGluZSBleGNlcHQgZm9y
ICBQcm9jZXNzIDAwMDAwOiBhbmQgTGVhazogYXMgb3B0aW9uYWwKKworICAgIG15ICRsZWFrQ291
bnQ7CisgICAgbXkgQHBhcnNlZE91dHB1dCA9ICgpOworICAgIG15ICRwYXJzaW5nTGVhayA9IDA7
CisgICAgbXkgJHBhcnNlZExlYWtDb3VudCA9IDA7CisgICAgZm9yIG15ICRsaW5lIChAJGxlYWtz
T3V0cHV0KSB7CisgICAgICAgIGlmICgkbGluZSA9fiAvXlByb2Nlc3MgXGQrOiAoXGQrKSBsZWFr
cz8vKSB7CisgICAgICAgICAgICAkbGVha0NvdW50ID0gJDE7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoJGxpbmUgZXEgIlxuIikgeworICAgICAgICAgICAgJHBhcnNpbmdMZWFrID0gMDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICgkbGluZSA9fiAvXkxlYWs6IC8pIHsKKyAgICAgICAgICAg
ICRwYXJzaW5nTGVhayA9IDE7CisgICAgICAgICAgICAkcGFyc2VkTGVha0NvdW50Kys7CisgICAg
ICAgICAgICBteSAoJGFkZHJlc3MpID0gKCRsaW5lID1+IC9MZWFrOiAoW1s6eGRpZ2l0Ol14XSsp
Lyk7CisgICAgICAgICAgICBpZiAoIWRlZmluZWQoJGFkZHJlc3MpKSB7CisgICAgICAgICAgICAg
ICAgY3JvYWsgIkNvdWxkIG5vdCBwYXJzZSBMZWFrIGFkZHJlc3MuIjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbXkgKCRzaXplKSA9ICgkbGluZSA9fiAvc2l6ZT0oW1s6ZGlnaXQ6XV0r
KS8pOworICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRzaXplKSkgeworICAgICAgICAgICAgICAg
IGNyb2FrICJDb3VsZCBub3QgcGFyc2UgTGVhayBzaXplLiI7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICMgRklYTUU6IFRoaXMgY29kZSBzZWVtcyB3cm9uZywgdGhlIGxlYWtzIHRvb2wg
ZG9lc24ndCBhY3R1YWxseSB1c2Ugc2luZ2xlIHF1b3Rlcy4KKyAgICAgICAgICAgICMgV2Ugc2hv
dWxkIHJlY29uY2lsZSB3aXRoIG90aGVyIGZvcm1hdCBjaGFuZ2VzIHRoYXQgaGFwcGVuZWQgc2lu
Y2UsIHN1Y2ggYXMgdGhlCisgICAgICAgICAgICAjIGFkZGl0aW9uIG9mIHpvbmUgaW5mb3JtYXRp
b24uCisgICAgICAgICAgICBteSAoJHR5cGUpID0gKCRsaW5lID1+IC8nKFteJ10rKScvKTsgIycK
KyAgICAgICAgICAgIGlmICghZGVmaW5lZCgkdHlwZSkpIHsKKyAgICAgICAgICAgICAgICAkdHlw
ZSA9ICIiOyAjIFRoZSBsZWFrcyB0b29sIHNvbWV0aW1lcyBvbWl0cyB0aGUgdHlwZS4KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbXkgJWxlYWsgPSAoCisgICAgICAgICAgICAgICAgImFk
ZHJlc3MiID0+ICRhZGRyZXNzLAorICAgICAgICAgICAgICAgICJzaXplIiA9PiAkc2l6ZSwKKyAg
ICAgICAgICAgICAgICAidHlwZSIgPT4gJHR5cGUsCisgICAgICAgICAgICAgICAgImNhbGxTdGFj
ayIgPT4gIiIsICMgVGhlIGxlYWtzIHRvb2wgc29tZXRpbWVzIG9taXRzIHRoZSBjYWxsIHN0YWNr
LgorICAgICAgICAgICAgICAgICJsZWFrc091dHB1dCIgPT4gJGxpbmUKKyAgICAgICAgICAgICk7
CisgICAgICAgICAgICBwdXNoKEBwYXJzZWRPdXRwdXQsIFwlbGVhayk7CisgICAgICAgIH0gZWxz
aWYgKCRwYXJzaW5nTGVhaykgeworICAgICAgICAgICAgJHBhcnNlZE91dHB1dFskI3BhcnNlZE91
dHB1dF0tPnsibGVha3NPdXRwdXQifSAuPSAkbGluZTsKKyAgICAgICAgICAgIGlmICgkbGluZSA9
fiAvQ2FsbCBzdGFjazovKSB7CisgICAgICAgICAgICAgICAgJHBhcnNlZE91dHB1dFskI3BhcnNl
ZE91dHB1dF0tPnsiY2FsbFN0YWNrIn0gPSAkbGluZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG15ICVub25MZWFrTGluZSA9ICgKKyAgICAgICAgICAgICAg
ICAibGVha3NPdXRwdXQiID0+ICRsaW5lCisgICAgICAgICAgICApOworICAgICAgICAgICAgcHVz
aChAcGFyc2VkT3V0cHV0LCBcJW5vbkxlYWtMaW5lKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmICgkcGFyc2VkTGVha0NvdW50ICE9ICRsZWFrQ291bnQpIHsKKyAgICAgICAgY3JvYWsgIlBh
cnNlZCBsZWFrIGNvdW50ICgkcGFyc2VkTGVha0NvdW50KSBkb2VzIG5vdCBtYXRjaCBsZWFrIGNv
dW50IHJlcG9ydGVkIGJ5IGxlYWtzIHRvb2wgKCRsZWFrQ291bnQpLiI7CisgICAgfQorCisgICAg
cmV0dXJuIFxAcGFyc2VkT3V0cHV0OworfQorCisxOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2V4dHJhY3RMaW5lUmFuZ2VC
ZWZvcmVBbmRBZnRlckNoYW5nZS5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJl
LUNoYW5nZUxvZ191bml0dGVzdC9leHRyYWN0TGluZVJhbmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2Uu
cGwKaW5kZXggYTc5MmUzYjIxOTY5Li44NjgzYjQ4YjIxMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9leHRyYWN0TGluZVJh
bmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2UucGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2V4dHJhY3RMaW5lUmFuZ2VCZWZvcmVBbmRBZnRl
ckNoYW5nZS5wbApAQCAtMjcsOCArMjcsMTEgQEAgdXNlIHdhcm5pbmdzOwogCiB1c2UgVGVzdDo6
TW9yZTsKIHVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46
OkJpbiwgIi4uIik7Ci11c2UgTG9hZEFzTW9kdWxlIHF3KFByZXBhcmVDaGFuZ2VMb2cgcHJlcGFy
ZS1DaGFuZ2VMb2cpOwordXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwg
Ii4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVybDo6Y2hhbmdlbG9nIHF3KAorICAgIGV4dHJhY3RM
aW5lUmFuZ2VCZWZvcmVDaGFuZ2UKKyAgICBleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UKKyk7
CiAKIG15IEB0ZXN0Q2FzZUhhc2hSZWZzID0gKAogIyMjIwpAQCAtMTk3LDEwICsyMDAsMTAgQEAg
Zm9yZWFjaCBteSAkdGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hSZWZzKSB7CiAgICAgbXkgJGV4cGVj
dGVkUmVzdWx0cyA9ICR0ZXN0Q2FzZS0+e2V4cGVjdGVkUmVzdWx0c307CiAKICAgICBteSAkdGVz
dE5hbWVTdGFydCA9ICJleHRyYWN0TGluZVJhbmdlQmVmb3JlQ2hhbmdlKCk6ICR0ZXN0Q2FzZS0+
e3Rlc3ROYW1lfTogY29tcGFyaW5nIjsKLSAgICBteSBAZ290ID0gUHJlcGFyZUNoYW5nZUxvZzo6
ZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgkdGVzdENhc2UtPntpbnB1dFRleHR9KTsKKyAg
ICBteSBAZ290ID0gZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgkdGVzdENhc2UtPntpbnB1
dFRleHR9KTsKICAgICBpc19kZWVwbHkoXEBnb3QsICRleHBlY3RlZFJlc3VsdHMtPntiZWZvcmVD
aGFuZ2V9LCAiJHRlc3ROYW1lU3RhcnQgcmV0dXJuIHZhbHVlLiIpOwogCiAgICAgJHRlc3ROYW1l
U3RhcnQgPSAiZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlKCk6ICR0ZXN0Q2FzZS0+e3Rlc3RO
YW1lfTogY29tcGFyaW5nIjsKLSAgICBAZ290ID0gUHJlcGFyZUNoYW5nZUxvZzo6ZXh0cmFjdExp
bmVSYW5nZUFmdGVyQ2hhbmdlKCR0ZXN0Q2FzZS0+e2lucHV0VGV4dH0pOworICAgIEBnb3QgPSBl
eHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UoJHRlc3RDYXNlLT57aW5wdXRUZXh0fSk7CiAgICAg
aXNfZGVlcGx5KFxAZ290LCAkZXhwZWN0ZWRSZXN1bHRzLT57YWZ0ZXJDaGFuZ2V9LCAiJHRlc3RO
YW1lU3RhcnQgcmV0dXJuIHZhbHVlLiIpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2ZldGNoUmFkYXJVUkxGcm9tQnVn
WE1MRGF0YS5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191
bml0dGVzdC9mZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEucGwKaW5kZXggZmE0MTFmMjEwYWJj
Li4zYzc0MzFjZTg2NjEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVw
YXJlLUNoYW5nZUxvZ191bml0dGVzdC9mZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEucGwKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2Zl
dGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YS5wbApAQCAtMjcsOCArMjcsOCBAQCB1c2Ugd2Fybmlu
Z3M7CiAKIHVzZSBUZXN0OjpNb3JlOwogdXNlIEZpbmRCaW47Ci11c2UgbGliIEZpbGU6OlNwZWMt
PmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKLXVzZSBMb2FkQXNNb2R1bGUgcXcoUHJlcGFy
ZUNoYW5nZUxvZyBwcmVwYXJlLUNoYW5nZUxvZyk7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRp
cigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKK3VzZSB3ZWJraXRwZXJsOjpjaGFuZ2Vsb2cg
cXcoZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxEYXRhKTsKIAogIyBOT1RFOiBBIEJ1Z3ppbGxhIENv
bW1lbnQgWE1MIGxvb2tzIGxpa2U6CiAjCkBAIC0xNTYsNiArMTU2LDYgQEAgcGxhbih0ZXN0cyA9
PiAkdGVzdENhc2VzQ291bnQpOwogCiBmb3JlYWNoIG15ICR0ZXN0Q2FzZSAoQHRlc3RDYXNlSGFz
aFJlZnMpIHsKICAgICBteSAkZXhwZWN0ZWQgPSAkdGVzdENhc2UtPntleHBlY3RlZH07Ci0gICAg
bXkgJGdvdCA9IFByZXBhcmVDaGFuZ2VMb2c6OmZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YSgx
NTI4MzksICR0ZXN0Q2FzZS0+e2lucHV0VGV4dH0pOworICAgIG15ICRnb3QgPSBmZXRjaFJhZGFy
VVJMRnJvbUJ1Z1hNTERhdGEoMTUyODM5LCAkdGVzdENhc2UtPntpbnB1dFRleHR9KTsKICAgICBp
cygkZ290LCAkZXhwZWN0ZWQsICR0ZXN0Q2FzZS0+e3Rlc3ROYW1lfSk7CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZmls
ZW5hbWVXaXRoUGFyZW50aGVzZXMucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFy
ZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGwKaW5kZXggOWRi
OGY4OWZhMjIwLi44MTIwZWMwN2JlYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9maWxlbmFtZVdpdGhQYXJlbnRoZXNlcy5w
bAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRl
c3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGwKQEAgLTMwLDExICszMCwxMCBAQCB1c2Ugd2Fy
bmluZ3M7CiB1c2UgRmlsZTo6VGVtcDsKIHVzZSBGaW5kQmluOwogdXNlIFRlc3Q6Ok1vcmU7Cit1
c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKK3Vz
ZSB3ZWJraXRwZXJsOjpjaGFuZ2Vsb2cgcXcoYXR0cmlidXRlQ29tbWFuZCk7CiB1c2UgVkNTVXRp
bHM7CiAKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwot
dXNlIExvYWRBc01vZHVsZSBxdyhQcmVwYXJlQ2hhbmdlTG9nIHByZXBhcmUtQ2hhbmdlTG9nKTsK
LQogcGxhbih0ZXN0cyA9PiAxKTsKIAogc3ViIHdyaXRlRmlsZVdpdGhDb250ZW50KCQkKQpAQCAt
NTQsNyArNTMsNyBAQCB3cml0ZUZpbGVXaXRoQ29udGVudChGaWxlOjpTcGVjLT5jYXRmaWxlKCR0
ZW1wb3JhcnlEaXJlY3RvcnksICIuZ2l0YXR0cmlidXRlcyIpLAogbXkgJGF0dHJpYnV0ZUNhY2hl
ID0ge307CiBteSAkcmVzdWx0ID0gMDsKIGNoZGlyICR0ZW1wb3JhcnlEaXJlY3Rvcnk7Ci0kcmVz
dWx0ID0gUHJlcGFyZUNoYW5nZUxvZzo6YXR0cmlidXRlQ29tbWFuZCgkYXR0cmlidXRlQ2FjaGUs
ICRmaWxlbmFtZSwgImZvbyIpOworJHJlc3VsdCA9IGF0dHJpYnV0ZUNvbW1hbmQoJGF0dHJpYnV0
ZUNhY2hlLCAkZmlsZW5hbWUsICJmb28iKTsKIGNoZGlyICcuLic7CiAKIGlzKCRyZXN1bHQsIDEs
ICJTaG91bGQgc3VjY2Vzc2Z1bGx5IGdldCBmb28gYXR0cmlidXRlIGZyb20gZmlsZSB3aXRoIHBh
cmVudGhlc2VzIGluIG5hbWUuIik7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZ2VuZXJhdGVGdW5jdGlvbkxpc3RzLnBsIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2dlbmVy
YXRlRnVuY3Rpb25MaXN0cy5wbAppbmRleCA1ZTU1OTM3MjUzYzQuLmQ4ZGNhMjE2YjQxOSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0
ZXN0L2dlbmVyYXRlRnVuY3Rpb25MaXN0cy5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZ2VuZXJhdGVGdW5jdGlvbkxpc3RzLnBsCkBA
IC0yOCwxMSArMjgsMTAgQEAgdXNlIHdhcm5pbmdzOwogdXNlIEZpbGU6OlRlbXA7CiB1c2UgRmlu
ZEJpbjsKIHVzZSBUZXN0OjpNb3JlOwordXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRC
aW46OkJpbiwgIi4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVybDo6Y2hhbmdlbG9nIHF3KGFjdHVh
bGx5R2VuZXJhdGVGdW5jdGlvbkxpc3RzKTsKIHVzZSBWQ1NVdGlsczsKIAotdXNlIGxpYiBGaWxl
OjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7Ci11c2UgTG9hZEFzTW9kdWxlIHF3
KFByZXBhcmVDaGFuZ2VMb2cgcHJlcGFyZS1DaGFuZ2VMb2cpOwotCiBteSAkRVhBTVBMRV9DUFAg
PSA8PEVPRjsKICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNtYXRoPgpAQCAtNTM2LDcg
KzUzNSw3IEBAIGZvcmVhY2ggbXkgJHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykgewogICAg
ICk7CiAgICAgbXkgJWZ1bmN0aW9uTGlzdHM7CiAgICAgZGlzY2FyZE91dHB1dChzdWIgewotICAg
ICAgICBQcmVwYXJlQ2hhbmdlTG9nOjphY3R1YWxseUdlbmVyYXRlRnVuY3Rpb25MaXN0cyhbJGZp
bGVuYW1lXSwgXCVmdW5jdGlvbkxpc3RzLCB1bmRlZiwgdW5kZWYsIHVuZGVmLCBcJWRlbGVnYXRl
SGFzaCk7CisgICAgICAgIGFjdHVhbGx5R2VuZXJhdGVGdW5jdGlvbkxpc3RzKFskZmlsZW5hbWVd
LCBcJWZ1bmN0aW9uTGlzdHMsIHVuZGVmLCB1bmRlZiwgdW5kZWYsIFwlZGVsZWdhdGVIYXNoKTsK
ICAgICB9KTsKICAgICBjaG9tcChteSAkZXhwZWN0ZWQgPSAkdGVzdENhc2UtPntleHBlY3RlZH0p
OwogICAgIGlzKCRmdW5jdGlvbkxpc3RzeyRmaWxlbmFtZX0sICRleHBlY3RlZCwgJHRlc3RDYXNl
LT57dGVzdE5hbWV9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVw
YXJlLUNoYW5nZUxvZ191bml0dGVzdC9wYXJzZXJfdW5pdHRlc3RzLnBsIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L3BhcnNlcl91bml0dGVzdHMu
cGwKaW5kZXggNzE1N2ZmZWRlZWRjLi5lZmUyYWQwZDI5NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9wYXJzZXJfdW5pdHRl
c3RzLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191
bml0dGVzdC9wYXJzZXJfdW5pdHRlc3RzLnBsCkBAIC0zMSwxMSArMzEsMjAgQEAgdXNlIEZpbGU6
OlRlbXAgcXcodGVtcGZpbGUpOwogdXNlIEZpbmRCaW47CiB1c2UgR2V0b3B0OjpMb25nOwogdXNl
IFRlc3Q6Ok1vcmU7Ci11c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAi
Li4iKTsKLXVzZSBMb2FkQXNNb2R1bGUgcXcoUHJlcGFyZUNoYW5nZUxvZyBwcmVwYXJlLUNoYW5n
ZUxvZyk7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iLCAi
Li4iKTsKK3VzZSBWQ1NVdGlsczsKK3VzZSB3ZWJraXRwZXJsOjpjaGFuZ2Vsb2cgcXcoCisgICAg
Z2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAKKyAgICBnZXRfc2VsZWN0b3JfbGluZV9y
YW5nZXNfZm9yX2NzcworICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YQorICAg
IGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YXNjcmlwdAorICAgIGdldF9mdW5jdGlv
bl9saW5lX3Jhbmdlc19mb3JfcGVybAorICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jf
cHl0aG9uCisgICAgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdAorKTsKK3VzZSB3
ZWJraXRwZXJsOjpkaXJzOwogCiBzdWIgY2FwdHVyZU91dHB1dCgkKTsKLXN1YiBjb252ZXJ0QWJz
b2x1dGVQYXRoVG9SZWxhdGl2ZVVuaXhQYXRoKCQkKTsKIHN1YiByZWFkVGVzdEZpbGVzKCQpOwog
CiB1c2UgY29uc3RhbnQgRVhQRUNURURfUkVTVUxUU19TVUZGSVggPT4gIi1leHBlY3RlZC50eHQi
OwpAQCAtNjksNyArNzgsNyBAQCBmb3JlYWNoIG15ICR0ZXN0RmlsZSAoc29ydCBAdGVzdEZpbGVz
KSB7CiBwbGFuKHRlc3RzID0+IHNjYWxhciBAdGVzdFNldCk7CiBmb3JlYWNoIG15ICR0ZXN0IChA
dGVzdFNldCkgewogICAgIG9wZW4gRkgsICI8ICR0ZXN0LT57aW5wdXRGaWxlfSIgb3IgZGllICJD
YW5ub3Qgb3BlbiAkdGVzdC0+e2lucHV0RmlsZX06ICQhIjsKLSAgICBteSAkcGFyc2VyID0gZXZh
bCAiXFwmUHJlcGFyZUNoYW5nZUxvZzo6JHRlc3QtPnttZXRob2R9IjsKKyAgICBteSAkcGFyc2Vy
ID0gZXZhbCAiXFwmJHRlc3QtPnttZXRob2R9IjsKICAgICBteSBAcmFuZ2VzOwogICAgIG15ICgk
c3Rkb3V0LCAkc3RkZXJyKSA9IGNhcHR1cmVPdXRwdXQoc3ViIHsgQHJhbmdlcyA9ICRwYXJzZXIt
PihcKkZILCAkdGVzdC0+e2lucHV0RmlsZX0pOyB9KTsKICAgICBjbG9zZSBGSDsKQEAgLTEzMCwx
MSArMTM5LDEwIEBAIHN1YiBjYXB0dXJlT3V0cHV0KCQpCiAgICAgcmV0dXJuICgkc3Rkb3V0LCAk
c3RkZXJyKTsKIH0KIAotc3ViIGNvbnZlcnRBYnNvbHV0ZVBhdGhUb1JlbGF0aXZlVW5peFBhdGgo
JCQpCi17CitzdWIgY29udmVydEFic29sdXRlUGF0aFRvUmVsYXRpdmVVbml4UGF0aCB7CiAgICAg
bXkgKCRzdHJpbmcsICRwYXRoKSA9IEBfOwotICAgIG15ICRzb3VyY2VEaXIgPSBMb2FkQXNNb2R1
bGU6OnVuaXhQYXRoKExvYWRBc01vZHVsZTo6c291cmNlRGlyKCkpOwotICAgIG15ICRyZWxhdGl2
ZVVuaXhQYXRoID0gTG9hZEFzTW9kdWxlOjp1bml4UGF0aCgkcGF0aCk7CisgICAgbXkgJHNvdXJj
ZURpciA9IHVuaXhQYXRoKHNvdXJjZURpcigpKTsKKyAgICBteSAkcmVsYXRpdmVVbml4UGF0aCA9
IHVuaXhQYXRoKCRwYXRoKTsKICAgICAkc291cmNlRGlyIC49ICIvIiB1bmxlc3MgJHNvdXJjZURp
ciA9fiBtLS8kLTsKICAgICBteSAkcXVvdGVkU291cmNlRGlyID0gcXVvdGVtZXRhKCRzb3VyY2VE
aXIpOwogICAgICRyZWxhdGl2ZVVuaXhQYXRoICA9fiBzLyRxdW90ZWRTb3VyY2VEaXIvLzsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVu
LWxlYWtzLXJlcG9ydC12MS4wLnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFr
c191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYxLjAucGwKaW5kZXggM2YzZjVlODNkMWM3Li4y
YWQ4OGVjODIyOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVh
a3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCkBA
IC0yOSw5ICsyOSw5IEBAIHVzZSB3YXJuaW5nczsKIAogdXNlIEZpbGU6OlNwZWM7CiB1c2UgRmlu
ZEJpbjsKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwor
dXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7CiB1
c2UgVGVzdDo6TW9yZTsKLXVzZSBMb2FkQXNNb2R1bGUgcXcoUnVuTGVha3MgcnVuLWxlYWtzKTsK
K3VzZSB3ZWJraXRwZXJsOjpsZWFrcyBxdyhwYXJzZUxlYWtzT3V0cHV0KTsKIAogbXkgQGlucHV0
ID0gc3BsaXQoL1xuLywgPDxFT0YpOwogUHJvY2VzcyAxNjAyOiA4NjY3MSBub2RlcyBtYWxsb2Nl
ZCBmb3IgMTMyNjEgS0IKQEAgLTE2Miw3ICsxNjIsNyBAQCBFT0YKICAgfSwKIF07CiAKLW15ICRh
Y3R1YWxPdXRwdXQgPSBSdW5MZWFrczo6cGFyc2VMZWFrc091dHB1dChAaW5wdXQpOworbXkgJGFj
dHVhbE91dHB1dCA9IHBhcnNlTGVha3NPdXRwdXQoQGlucHV0KTsKIAogcGxhbih0ZXN0cyA9PiAx
KTsKIGlzX2RlZXBseSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRPdXRwdXQsICJsZWFrcyBSZXBv
cnQgVmVyc2lvbiAxLjAgLSBubyBjYWxsIHN0YWNrIik7CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1u
ZXcucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1s
ZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwKaW5kZXggMDZiYzU4ZDBlMDljLi5hMzgxN2U2ODA5OTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3Qv
cnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwKQEAgLTMw
LDkgKzMwLDkgQEAgdXNlIHdhcm5pbmdzOwogCiB1c2UgRmlsZTo6U3BlYzsKIHVzZSBGaW5kQmlu
OwotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7Cit1c2Ug
bGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKIHVzZSBU
ZXN0OjpNb3JlOwotdXNlIExvYWRBc01vZHVsZSBxdyhSdW5MZWFrcyBydW4tbGVha3MpOwordXNl
IHdlYmtpdHBlcmw6OmxlYWtzIHF3KHBhcnNlTGVha3NPdXRwdXQpOwogCiBteSBAaW5wdXQgPSBz
cGxpdCgvXG4vLCA8PEVPRik7CiBQcm9jZXNzOiAgICAgICAgIER1bXBSZW5kZXJUcmVlIFsyOTkw
M10KQEAgLTE2OCw3ICsxNjgsNyBAQCBFT0YKICAgfSwKIF07CiAKLW15ICRhY3R1YWxPdXRwdXQg
PSBSdW5MZWFrczo6cGFyc2VMZWFrc091dHB1dChAaW5wdXQpOworbXkgJGFjdHVhbE91dHB1dCA9
IHBhcnNlTGVha3NPdXRwdXQoQGlucHV0KTsKIAogcGxhbih0ZXN0cyA9PiAxKTsKIGlzX2RlZXBs
eSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRPdXRwdXQsICJsZWFrcyBSZXBvcnQgVmVyc2lvbiAy
LjAgKG5ldykiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVh
a3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbCBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5w
bAppbmRleCA2NmY5YWQzNTYzMWUuLjIwMmRjMzFkNGQwMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYyLjAt
b2xkLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3Qv
cnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbApAQCAtMzAsOSArMzAsOSBAQCB1c2Ugd2Fybmlu
Z3M7CiAKIHVzZSBGaWxlOjpTcGVjOwogdXNlIEZpbmRCaW47Ci11c2UgbGliIEZpbGU6OlNwZWMt
PmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKK3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGly
KCRGaW5kQmluOjpCaW4sICIuLiIsICIuLiIpOwogdXNlIFRlc3Q6Ok1vcmU7Ci11c2UgTG9hZEFz
TW9kdWxlIHF3KFJ1bkxlYWtzIHJ1bi1sZWFrcyk7Cit1c2Ugd2Via2l0cGVybDo6bGVha3MgcXco
cGFyc2VMZWFrc091dHB1dCk7CiAKIG15IEBpbnB1dCA9IHNwbGl0KC9cbi8sIDw8RU9GKTsKIGxl
YWtzIFJlcG9ydCBWZXJzaW9uOiAgMi4wCkBAIC0xMTgsNyArMTE4LDcgQEAgRU9GCiAgIH0sCiBd
OwogCi1teSAkYWN0dWFsT3V0cHV0ID0gUnVuTGVha3M6OnBhcnNlTGVha3NPdXRwdXQoQGlucHV0
KTsKK215ICRhY3R1YWxPdXRwdXQgPSBwYXJzZUxlYWtzT3V0cHV0KEBpbnB1dCk7CiAKIHBsYW4o
dGVzdHMgPT4gMSk7CiBpc19kZWVwbHkoJGFjdHVhbE91dHB1dCwgJGV4cGVjdGVkT3V0cHV0LCAi
bGVha3MgUmVwb3J0IFZlcnNpb24gMi4wIChvbGQpIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441545</attachid>
            <date>2021-10-17 12:42:38 -0700</date>
            <delta_ts>2021-10-17 13:00:34 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>161308</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMWQ2
ZmJjMGFiYTcuLjYxOGQwZDUxMTFiMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0xMC0xNyAgQmFzdWtlIFN1
enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW3dlYmtpdHBlcmxdIFN0
b3AgdXNpbmcgTG9hZEFzTW9kdWxlLnBtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIG1vZHVsZSBsb2FkIGEgc2NyaXB0IGZpbGUgYXMgbW9kdWxl
IHdpdGggYSBiaXQgdHJpY2t5IHdheS4gSXQgcHJldmVudHMgdGhlIHByb3BlcgorICAgICAgICB1
c2FnZSBvZiBwYWNrYWdlIGFmdGVyIGFsbC4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtb2R1bGUgaXMg
dG8gdGVzdCByb3V0aW5lcyBkZWZpbmVkIGluIHRoZQorICAgICAgICBzY3JpcHQuIEl0IGp1c3Qg
YmUgd3Jvbmcgd2l0aCBzdWNoIHdheS4gSWYgeW91IGhhdmUgc29tZXRoaW5nIHRvIHRlc3QsIGl0
IHNob3VsZCBiZSBzZXBhcmF0ZWQKKyAgICAgICAgYXMgYSBtb2R1bGUgYW5kIGJlIGltcG9ydGVk
IHRvIHRoZSBzY3JpcHQuIFRoZW4gdW5pdCB0ZXN0IGNhbiBsb2FkIHRoZSBtb2R1bGUgYW5kIGNh
biB0ZXN0CisgICAgICAgIHdpdGhvdXQgYW55IHNvcnQgb2YgdHJvdWJsZS4KKworICAgICAgICAq
IFNjcmlwdHMvZmlsdGVyLWJ1aWxkLXdlYmtpdDoKKyAgICAgICAgKHNldE91dHB1dEZvcm1hdE9w
dGlvbik6CisgICAgICAgIChzaG91bGRTaG93U3Vic2VxdWVudExpbmUpOiBNb3ZlZCB0byB3ZWJr
aXRwZXJsL2J1aWxkL291dHB1dC5wbS4KKyAgICAgICAgKHNob3VsZElnbm9yZUxpbmUpOiBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nOgorICAgICAgICAoZ2VuZXJh
dGVGdW5jdGlvbkxpc3RzKToKKyAgICAgICAgKGZldGNoQnVnWE1MRGF0YSk6CisgICAgICAgIChv
cGVuQ2hhbmdlTG9ncyk6CisgICAgICAgIChtZXRob2RfZGVjbF90b19zZWxlY3Rvcik6CisgICAg
ICAgIChkaWZmQ29tbWFuZCk6CisgICAgICAgIChzdGF0dXNDb21tYW5kKToKKyAgICAgICAgKHBy
b3BlcnR5Q2hhbmdlRGVzY3JpcHRpb24pOgorICAgICAgICAobm9ybWFsaXplTGluZUVuZGluZ3Mp
OgorICAgICAgICAoYWN0dWFsbHlHZW5lcmF0ZUZ1bmN0aW9uTGlzdHMpOiBNb3ZlZCB0byB3ZWJr
aXRwZXJsL2NoYW5nZWxvZy4KKyAgICAgICAgKGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucyk6IERp
dHRvLgorICAgICAgICAoZmV0Y2hCdWdEZXNjcmlwdGlvbkZyb21CdWdYTUxEYXRhKTogRGl0dG8u
CisgICAgICAgIChmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEpOiBEaXR0by4KKyAgICAgICAg
KGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcyk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9u
X2xpbmVfcmFuZ2VzX2Zvcl9jcHApOiBEaXR0by4KKyAgICAgICAgKGRlbGV0ZV9uYW1lc3BhY2Vz
X2Zyb21fcmFuZ2VzX2Zvcl9jcHApOiBEaXR0by4KKyAgICAgICAgKGlzX2Z1bmN0aW9uX2luX25h
bWVzcGFjZSk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9q
YXZhKTogRGl0dG8uCisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmFz
Y3JpcHQpOiBEaXR0by4KKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVy
bCk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRob24p
OiBEaXR0by4KKyAgICAgICAgKGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKTogRGl0
dG8uCisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3N3aWZ0KTogRGl0dG8u
CisgICAgICAgIChwYXJzZVN3aWZ0RnVuY3Rpb25BcmdzKTogRGl0dG8uCisgICAgICAgIChhdHRy
aWJ1dGVDb21tYW5kKTogRGl0dG8uCisgICAgICAgIChleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFu
Z2UpOiBEaXR0by4KKyAgICAgICAgKGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UpOiBEaXR0
by4KKyAgICAgICAgKGRlY29kZUVudGl0aWVzKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9y
dW4tbGVha3M6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKHJlbW92ZU1hdGNoaW5nUmVjb3Jk
cyk6CisgICAgICAgIChydW5MZWFrcyk6IE1vdmVkIHRvIHdlYmtpdHBlcmwvbGVha3MucG0uCisg
ICAgICAgIChwYXJzZUxlYWtzT3V0cHV0KTogRGl0dG8uCisgICAgICAgIChyZXBvcnRFcnJvcik6
IERlbGV0ZWQuIFVzZSBDYXJwOjpjcm9hayBpbnN0ZWFkLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0ZGlycy5wbToKKyAgICAgICAgKGRldGVybWluZUJhc2VQcm9kdWN0RGlyKToKKyAgICAgICAg
KGRldGVybWluZUN1cnJlbnRTVk5SZXZpc2lvbik6CisgICAgICAgIChjaGRpcldlYktpdCk6Cisg
ICAgICAgIChkZXRlcm1pbmVTb3VyY2VEaXIpOiBNb3ZlZCB0byB3ZWJraXRwZXJsL2RpcnMucG0u
CisgICAgICAgIChzZXRTb3VyY2VEaXIpOiBEaXR0by4KKyAgICAgICAgKHNvdXJjZURpcik6IERp
dHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG06IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2J1aWxkL291dHB1dC5wbTogRXh0cmFj
dGVkIGZyb20gVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0LgorICAgICAgICAoc2hv
dWxkU2hvd1N1YnNlcXVlbnRMaW5lKToKKyAgICAgICAgKHNob3VsZElnbm9yZUxpbmUpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9jaGFuZ2Vsb2cucG06IEV4dHJhY3RlZCBmcm9tIFRv
b2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cuCisgICAgICAgIChhY3R1YWxseUdlbmVyYXRl
RnVuY3Rpb25MaXN0cyk6CisgICAgICAgIChleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UpOgor
ICAgICAgICAoZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSk6CisgICAgICAgIChhdHRyaWJ1
dGVDb21tYW5kKToKKyAgICAgICAgKGZldGNoQnVnRGVzY3JpcHRpb25Gcm9tQnVnWE1MRGF0YSk6
CisgICAgICAgIChmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEpOgorICAgICAgICAoY29tcHV0
ZU1vZGlmaWVkRnVuY3Rpb25zKToKKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcyk6
CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2NwcCk6CisgICAgICAgIChk
ZWxldGVfbmFtZXNwYWNlc19mcm9tX3Jhbmdlc19mb3JfY3BwKToKKyAgICAgICAgKGlzX2Z1bmN0
aW9uX2luX25hbWVzcGFjZSk6CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9y
X2phdmEpOgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0
KToKKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybCk6CisgICAgICAg
IChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhvbik6CisgICAgICAgIChnZXRfc2Vs
ZWN0b3JfbGluZV9yYW5nZXNfZm9yX2Nzcyk6CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9y
YW5nZXNfZm9yX3N3aWZ0KToKKyAgICAgICAgKHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3MpOgorICAg
ICAgICAoZGVjb2RlRW50aXRpZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9kaXJz
LnBtOiBFeHRyYWN0ZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMuCisgICAgICAgIChz
b3VyY2VEaXIpOgorICAgICAgICAoc2V0U291cmNlRGlyKToKKyAgICAgICAgKGRldGVybWluZVNv
dXJjZURpcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2ZpbHRlci1idWlsZC13ZWJr
aXRfdW5pdHRlc3Qvc2hvdWxkSWdub3JlTGluZV91bml0dGVzdHMucGw6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL2xlYWtzLnBtOiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1s
ZWFrcy4KKyAgICAgICAgKHJ1bkxlYWtzKToKKyAgICAgICAgKHBhcnNlTGVha3NPdXRwdXQpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9l
eHRyYWN0TGluZVJhbmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2UucGw6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2ZldGNoUmFkYXJVUkxGcm9t
QnVnWE1MRGF0YS5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFu
Z2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGw6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rp
b25MaXN0cy5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VM
b2dfdW5pdHRlc3QvcGFyc2VyX3VuaXR0ZXN0cy5wbDoKKyAgICAgICAgKGNvbnZlcnRBYnNvbHV0
ZVBhdGhUb1JlbGF0aXZlVW5peFBhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4w
LW5ldy5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0
L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1vbGQucGw6CisKIDIwMjEtMTAtMTUgIEJKIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBoYW5kbGUg
UHJvbWlzZSBvYmplY3RzIHJldHVybmVkIGZyb20gZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRh
YgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0IGIvVG9vbHMv
U2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0CmluZGV4IGZjMmE1YzRhOGViZi4uNTMwMzFkYjM0
MWJmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQKKysrIGIv
VG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0CkBAIC0zMyw2ICszMyw3IEBAIHVzZSBG
aW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBW
Q1NVdGlsczsKK3VzZSB3ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0IHF3KHNob3VsZElnbm9yZUxp
bmUgJHBsYXRmb3JtKTsKIAogdXNlIGNvbnN0YW50IHsKICAgICBTVFlMRV9QTEFJTiA9PiAwLApA
QCAtNjYsNyArNjcsNiBAQCBIVE1MRk9PVEVSCiBzdWIgcHJpbnRMaW5lKCQkKTsKIHN1YiBzZXRM
b2dmaWxlT3B0aW9uKCQkKTsKIHN1YiBzZXRPdXRwdXRGb3JtYXRPcHRpb24oJCQpOwotc3ViIHNo
b3VsZElnbm9yZUxpbmUoJCQpOwogc3ViIHVzYWdlQW5kRXhpdCgpOwogCiAjIERlZmluZWQgaW4g
VkNTVXRpbHMuCkBAIC03NCw3ICs3NCw2IEBAIHN1YiBwb3NzaWJseUNvbG9yZWQoJCQpOwogCiAj
IEdsb2JhbCB2YXJpYWJsZXMgdXNlZCBvbmx5IGluIGdsb2JhbCBzY29wZS4KIG15ICRvdXRwdXRQ
YXRoID0gIiZTVERPVVQiOwotbXkgJHBsYXRmb3JtID0gIm1hYyI7CiBteSAkc2hvd0hlbHA7CiAK
ICMgR2xvYmFsIHZhcmlhYmxlcyB1c2VkIGluIGdsb2JhbCBhbmQgc3Vicm91dGluZSBzY29wZS4K
QEAgLTgyLDggKzgxLDYgQEAgb3VyICRsb2dVbmZpbHRlcmVkT3V0cHV0Owogb3VyICRvdXRwdXRG
b3JtYXQgPSAidGV4dCI7CiBvdXIgJHVuZmlsdGVyZWRPdXRwdXRQYXRoID0gImJ1aWxkLmxvZyI7
CiBvdXIgJHVzZUNvbG9yID0gLXQgU1RET1VUOwotb3VyICRpbkVudGl0bGVtZW50cyA9IDA7Ci1v
dXIgJGluRGV2aWNlUHJlcGFyYXRpb25XYXJuaW5ncyA9IDA7CiAKIHN1YiB1c2FnZUFuZEV4aXQo
KQogewpAQCAtMjc2LDEyNyArMjczLDMgQEAgc3ViIHNldE91dHB1dEZvcm1hdE9wdGlvbigkJCkK
ICAgICB9CiAgICAgJG91dHB1dEZvcm1hdCA9ICR2YWx1ZTsKIH0KLQotc3ViIHNob3VsZFNob3dT
dWJzZXF1ZW50TGluZSgkKQotewotICAgIG15ICgkbGluZSkgPSBAXzsKLQotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9yZWZlcmVuY2VkIGZyb206JC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gLyhub3RlOnxlcnJvcjopLzsKLQotICAgIHJldHVybiAwOwotfQotCi1zdWIgc2hvdWxkSWdu
b3JlTGluZSgkJCkKLXsKLSAgICBteSAoJHByZXZpb3VzTGluZSwgJGxpbmUpID0gQF87Ci0KLSAg
ICBpZiAoJGxpbmUgPX4gL15FbnRpdGxlbWVudHM6JC8pIHsKLSAgICAgICAgJGluRW50aXRsZW1l
bnRzID0gMTsKLSAgICAgICAgcmV0dXJuIDEKLSAgICB9Ci0KLSAgICBpZiAoJGluRW50aXRsZW1l
bnRzKSB7Ci0gICAgICAgICRpbkVudGl0bGVtZW50cyA9IDAgaWYgJGxpbmUgPX4gL159JC87Ci0g
ICAgICAgIHJldHVybiAxCi0gICAgfQotCi0gICAgIyBpUGhvbmUgcHJlcGFyYXRpb24gZXJyb3Jz
IGFsd2F5cyBzdGFydCBhbmQgZW5kIHdpdGggbGluZXMgY29udGFpbmluZyAnaVBob25lQ29ubmVj
dDonLgotICAgIGlmICgkaW5EZXZpY2VQcmVwYXJhdGlvbldhcm5pbmdzKSB7Ci0gICAgICAgICRp
bkRldmljZVByZXBhcmF0aW9uV2FybmluZ3MgPSAwIGlmICRsaW5lID1+IC89PSBFTkQ6IFVuZGVy
bHlpbmcgZGV2aWNlIHByZXBhcmF0aW9uIHdhcm5pbmdzID09LzsKLSAgICAgICAgcmV0dXJuIDEK
LSAgICB9Ci0KLSAgICBpZiAoJGxpbmUgPX4gL2lQaG9uZUNvbm5lY3Q6LykgewotICAgICAgICAk
aW5EZXZpY2VQcmVwYXJhdGlvbldhcm5pbmdzID0gMTsKLSAgICAgICAgcmV0dXJuIDEKLSAgICB9
Ci0KLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKiQvOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eQ29tbWFuZCBsaW5lIGludm9jYXRpb246LzsKLSAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXkJ1aWxkIHNldHRpbmdzIGZyb20gY29tbWFuZCBsaW5lOi87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15Vc2VyIGRlZmF1bHRzIGZyb20gY29tbWFuZCBsaW5lOi87Ci0gICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15QcmVwYXJlIGJ1aWxkLzsKLSAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXkJ1aWxkIHN5c3RlbSBpbmZvcm1hdGlvbi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15ub3RlOiBQbGFubmluZyBidWlsZC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15u
b3RlOiBDb25zdHJ1Y3RpbmcgYnVpbGQgZGVzY3JpcHRpb24vOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9ebm90ZTogQnVpbGQgZGVzY3JpcHRpb24gKGNvbnN0cnVjdGVkfGxvYWRlZCkgaW4g
LiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogVXNpbmcgYnVpbGQgZGVzY3Jp
cHRpb24gLiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogVXNpbmcgZWFnZXIg
Y29tcGlsYXRpb24vOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogRXhlY3V0aW9u
IHBvbGljeSBleGNlcHRpb24gcmVnaXN0cmF0aW9uIGZhaWxlZCBhbmQgd2FzIHNraXBwZWQ6IEVy
cm9yIERvbWFpbj1OU1BPU0lYRXJyb3JEb21haW4gQ29kZT0xICJPcGVyYXRpb24gbm90IHBlcm1p
dHRlZCIvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogZGV0ZWN0ZWQgZW5jb2Rp
bmcgb2YgaW5wdXQgZmlsZSBhcyBVbmljb2RlIFwoLipcKS87Ci0gICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL21ha2UoXFtcZCtcXSk/OiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yLzsKLSAgICByZXR1
cm4gMSBpZiAkbGluZSA9fiAvXkphdmFTY3JpcHRDb3JlXC9jcmVhdGVfaGFzaF90YWJsZS87Ci0g
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL0phdmFTY3JpcHRDb3JlLmZyYW1ld29ya1wvUHJpdmF0
ZUhlYWRlcnNcL2NyZWF0ZV9oYXNoX3RhYmxlLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
XkphdmFTY3JpcHRDb3JlXC9wY3JlXC9kZnRhYmxlcy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15DcmVhdGluZyBoYXNodGFibGUgZm9yIC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15Xcm90ZSBvdXRwdXQgdG8gLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVORE9DVU1F
TlRFRDogLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvbGlidG9vbC4qaGFzIG5vIHN5bWJv
bHMvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eIyBMb3dlciBjYXNlIGFsbCB0aGUgdmFs
dWVzLCBhcyBDU1MgdmFsdWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlJC87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15pZiBzb3J0IC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3NldC13
ZWJraXQtY29uZmlndXJhdGlvbi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15idWlsZGlu
ZyBmaWxlIGxpc3QvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXC5cLyQvOwotICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eXFMrXC5oJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15cUytcLyQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ec2VudCBcZCsgYnl0ZXMvOwot
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9edG90YWwgc2l6ZSBpcy87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL09uZSBvZiB0aGUgdHdvIHdpbGwgYmUgdXNlZFwuIFdoaWNoIG9uZSBpcyB1
bmRlZmluZWRcLi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL1RoZSBMZWdhY3kgQnVpbGQg
U3lzdGVtIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLzsKLSAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvXlwoICh4Y29kZWJ1aWxkfGlmKSAvOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9ed2FybmluZzogY2FuJ3QgZmluZCBhZGRpdGlvbmFsIFNESy87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL153YXJuaW5nOiBubyB1bWJyZWxsYSBoZWFkZXIgZm91bmQgZm9yIHRh
cmdldCAnLionLCBtb2R1bGUgbWFwIHdpbGwgbm90IGJlIGdlbmVyYXRlZCQvOwotICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ed2FybmluZ1w6IGRldGVjdGVkIGludGVybmFsIGluc3RhbGwsIHBh
c3NpbmcgZW50aXRsZW1lbnRzIHRvIHNpbXVsYXRvciBhbnl3YXlcLi87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL21heSBub3QgZnVuY3Rpb24gaW4gdGhlIFNpbXVsYXRvciBiZWNhdXNlIEFk
IEhvYy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL1wvdXNyXC9iaW5cL2NsYW5nIC4qPyBc
PiBcUysuc2IvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8geGNvZGVidWlsZFxbWzAtOV0r
OlswLTlhLWZdK1xdXHMrRFZUQXNzZXJ0aW9uczogV2FybmluZyBpbiAuKi87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL14oRGV0YWlsc3xPYmplY3R8TWV0aG9kfEZ1bmN0aW9ufFRocmVhZCk6
LzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlBsZWFzZSBmaWxlIGEgYnVnIGF0IC87Ci0g
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL2NyZWF0ZWQgYnkgYW4gdW5zdXBwb3J0ZWQgWENEZXBl
bmRlbmN5R3JhcGggYnVpbGQkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvd2FybmluZzog
VGhlIGFzc2lnbm1lbnQgb2YgJy4qJyBhdCAiLioiIHVzZXMgXCRcKGluaGVyaXRlZFwpLiBJbiB0
aGUgbmV3IGJ1aWxkIHN5c3RlbSB0aGlzIHdpbGwgaW5oZXJpdCBmcm9tIGFuIGVhcmxpZXIgZGVm
aW5pdGlvbiBvZiAnLionIGluIHRoaXMgeGNjb25maWcgZmlsZSBvciBpdHMgaW1wb3J0czsgdGhl
IG9sZCBidWlsZCBzeXN0ZW0gd291bGQgZGlzY2FyZCBlYXJsaWVyIGRlZmluaXRpb25zLiBUaGlz
IG1heSByZXN1bHQgaW4gY2hhbmdlcyB0byByZXNvbHZlZCBidWlsZCBzZXR0aW5nIHZhbHVlcy4v
OwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8uKiBjb20uYXBwbGUuYWN0b29sLmNvbXBpbGF0
aW9uLXJlc3VsdHMgLiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8uKlwvQXNzZXRzLmNh
ci87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLy4qXC9hc3NldGNhdGFsb2dfZ2VuZXJhdGVk
X2luZm8ucGxpc3QvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebW91bnQ6IC4rIGZhaWxl
ZCB3aXRoLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVzaW5nIC4rIHByb2R1Y3Rpb24g
ZW52aXJvbm1lbnQuJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3JlcGxhY2luZyBleGlz
dGluZyBzaWduYXR1cmUkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVubG9ja2luZyAn
LipcLmtleWNoYWluLWRiJyQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXGQrIGxvY2Fs
aXphYmxlIHN0cmluZ3MkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxkKyBwbHVyYWwg
cnVsZXMkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlRoZSBsaXN0IG9mIGV4cG9ydGVk
IHN5bWJvbHMgZGlkIG5vdCBjaGFuZ2UuJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15k
aXR0bzogQ2Fubm90IGdldCB0aGUgcmVhbCBwYXRoIGZvciBzb3VyY2UvOwotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eRHVwbGljYXRlIEVudHJ5IFdhcyBTa2lwcGVkOi87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL15BZGRpbmcgLio/ZW50aXRsZW1lbnRzLzsKLSAgICByZXR1cm4gMSBp
ZiAkbGluZSA9fiAvXk1ha2luZyBhcHAgYnVuZGxlIGxhdW5jaGFibGUvOwotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eRmluaXNoZWQgYWRkaW5nIGVudGl0bGVtZW50c1wuJC87Ci0gICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL14uKiB3aWxsIG5vdCBiZSBjb2RlIHNpZ25lZCBiZWNhdXNlIGl0
cyBzZXR0aW5ncyBkb24ndCBzcGVjaWZ5IGEgZGV2ZWxvcG1lbnQgdGVhbS4kLzsKLQotICAgIGlm
ICgkcGxhdGZvcm0gZXEgIndpbiIpIHsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15c
cyoodG91Y2h8cGVybHxjYXR8cm0gLWZ8ZGVsfHB5dGhvbnxcL3VzclwvYmluXC9nXCtcK3xncGVy
ZnxlY2hvfHNlZHxpZiBcWyBcLWZ8V2ViQ29yZVwvZ2VuZXJhdGUtZXhwb3J0LWZpbGUpIC87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqKGlmIG5vdCBleGlzdCBcInxpZiBlcnJv
cmxldmVsIDEpLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyheXHMqfE1TQjMwNzM6
XHMrKShzZXQgfFJFTSB8Y21kIFwvYykvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
XlxzKltjQ106XFxbcFBdcm9ncmFtIFtmRl1pbGVzLipcXC4qXFwoQ0x8bWlkbClcLmV4ZSAvOwot
ICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKlByb2Nlc3NpbmcgLipcLihhY2Z8aHxp
ZGwpXHMqJC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqcHJpbnRmIC87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqXC91c3JcL2JpblwvYmFzaFxzKi87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqb2ZmbGluZWFzbTogTm90aGluZyBjaGFu
Z2VkLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyBcZCsgRmlsZVwoc1wpIGNvcGll
ZC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqRmlsZSBub3QgZm91bmQgLSBc
KlwuaC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ta2RpclxzK1wiLzsKLSAgICAg
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3hjb3B5IFwveSBcL2QgXCIvOwotICAgICAgICByZXR1
cm4gMSBpZiAkbGluZSA9fiAvXC5vYmpcIlxzKiQvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvOlxzKyhjbWQgXC9jfHNldClccysvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvTVNCMzA3MzpccyskLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL01TQjMwNzM6
XHMraWYgbm90IGV4aXN0LzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3doaWNoLmV4
ZSBiYXNoLzsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXih0
b3VjaHxwZXJsfGNhdHxybSAtZnxweXRob258XC91c3JcL2JpblwvZ1wrXCt8XC9iaW5cL2xufGdw
ZXJmfGVjaG98c2VkfGlmIFxbIFwtZnxXZWJDb3JlXC9nZW5lcmF0ZS1leHBvcnQtZmlsZXx3cml0
ZS1maWxlfGNobW9kKSAvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXiAgICAvICYm
ICFzaG91bGRTaG93U3Vic2VxdWVudExpbmUoJHByZXZpb3VzTGluZSk7Ci0gICAgICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ecHJpbnRmIC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eb2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLzsKLSAgICB9Ci0gICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL15TaG93aW5nIGZpcnN0LzsKLQotICAgIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZyBiL1Rvb2xzL1NjcmlwdHMvcHJlcGFy
ZS1DaGFuZ2VMb2cKaW5kZXggNDEwNjNjMGIxOTcwLi43MTNkZTk5NGQ4ZmUgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cKKysrIGIvVG9vbHMvU2NyaXB0cy9wcmVw
YXJlLUNoYW5nZUxvZwpAQCAtNjMsMzAgKzYzLDIyIEBAIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsK
IHVzZSBMaXN0OjpVdGlsIHF3L21heC87CiB1c2UgUE9TSVggcXcoc3RyZnRpbWUpOwogdXNlIFZD
U1V0aWxzOwordXNlIHdlYmtpdHBlcmw6OmNoYW5nZWxvZzsKIAotc3ViIGFjdHVhbGx5R2VuZXJh
dGVGdW5jdGlvbkxpc3RzKCQkJCQkJCk7Ci1zdWIgYXR0cmlidXRlQ29tbWFuZCgkJCQpOwogc3Vi
IGNoYW5nZUxvZ0RhdGUoJCk7CiBzdWIgY2hhbmdlTG9nRW1haWxBZGRyZXNzRnJvbUFyZ3MoJCQp
Owogc3ViIGNoYW5nZUxvZ05hbWVGcm9tQXJncygkJCk7Ci1zdWIgY29tcHV0ZU1vZGlmaWVkRnVu
Y3Rpb25zKCQkJCk7CiBzdWIgY3JlYXRlUGF0Y2hDb21tYW5kKCQkJCQpOwotc3ViIGRlY29kZUVu
dGl0aWVzKCQpOwogc3ViIGRldGVybWluZVByb3BlcnR5Q2hhbmdlcygkJCQpOwogc3ViIGRpZmZD
b21tYW5kKCQkJCQpOwogc3ViIGRpZmZGcm9tVG9TdHJpbmcoJCQkKTsKLXN1YiBleHRyYWN0TGlu
ZVJhbmdlQWZ0ZXJDaGFuZ2UoJCk7Ci1zdWIgZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgk
KTsKIHN1YiBmZXRjaEJ1Z1hNTERhdGEoJCQpOwotc3ViIGZldGNoQnVnRGVzY3JpcHRpb25Gcm9t
QnVnWE1MRGF0YSgkJCQpOwotc3ViIGZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YSgkJCk7CiBz
dWIgZmluZENoYW5nZUxvZ3MoJCQpOwogc3ViIGZpbmRPcmlnaW5hbEZpbGVGcm9tU3ZuKCQpOwog
c3ViIGdlbmVyYXRlRmlsZUxpc3QoXCUkJCRcJSk7CiBzdWIgZ2VuZXJhdGVGdW5jdGlvbkxpc3Rz
KCQkJCQkKTsKIHN1YiBnZW5lcmF0ZU5ld0NoYW5nZUxvZ3MoJCQkJCQkJCQkJCQkJCQkKTsKIHN1
YiBnZXRMYXRlc3RDaGFuZ2VMb2dzKCQpOwotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcygk
JCk7CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJCQpOwogc3ViIGRlbGV0
ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2VzX2Zvcl9jcHAoXEBcQCk7CiBzdWIgaXNfZnVuY3Rpb25f
aW5fbmFtZXNwYWNlKCQkKTsKQEAgLTk1LDcgKzg3LDYgQEAgc3ViIGdldF9mdW5jdGlvbl9saW5l
X3Jhbmdlc19mb3JfamF2YXNjcmlwdCgkJCk7CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2Vz
X2Zvcl9wZXJsKCQkKTsKIHN1YiBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcygkJCk7
CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCgkJCk7Ci1zdWIgcGFyc2VT
d2lmdEZ1bmN0aW9uQXJncygkKTsKIHN1YiBpc0FkZGVkU3RhdHVzKCQpOwogc3ViIGlzQ29uZmxp
Y3RTdGF0dXMoJCQkKTsKIHN1YiBpc01vZGlmaWVkU3RhdHVzKCQpOwpAQCAtMzEzLDEzNiArMzA0
LDYgQEAgc3ViIGdlbmVyYXRlRnVuY3Rpb25MaXN0cygkJCQkJCkKICAgICBhY3R1YWxseUdlbmVy
YXRlRnVuY3Rpb25MaXN0cygkY2hhbmdlZEZpbGVzLCAkZnVuY3Rpb25MaXN0cywgJGdpdENvbW1p
dCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlLCBcJWRlbGVnYXRlSGFzaCk7CiB9CiAKLXN1YiBhY3R1
YWxseUdlbmVyYXRlRnVuY3Rpb25MaXN0cygkJCQkJCQpCi17Ci0gICAgbXkgKCRjaGFuZ2VkRmls
ZXMsICRmdW5jdGlvbkxpc3RzLCAkZ2l0Q29tbWl0LCAkZ2l0SW5kZXgsICRtZXJnZUJhc2UsICRk
ZWxlZ2F0ZUhhc2hSZWYpID0gQF87Ci0KLSAgICBteSAlbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdl
ZDsKLSAgICBteSAlbGluZV9yYW5nZXNfYmVmb3JlX2NoYW5nZWQ7Ci0gICAgaWYgKEAkY2hhbmdl
ZEZpbGVzKSB7Ci0gICAgICAgICMgRm9yIGVhY2ggZmlsZSwgYnVpbGQgYSBsaXN0IG9mIG1vZGlm
aWVkIGxpbmVzLgotICAgICAgICAjIFVzZSBsaW5lIG51bWJlcnMgZnJvbSB0aGUgImFmdGVyIiBz
aWRlIG9mIGVhY2ggZGlmZi4KLSAgICAgICAgcHJpbnQgU1RERVJSICIgIFJldmlld2luZyBkaWZm
IHRvIGRldGVybWluZSB3aGljaCBsaW5lcyBjaGFuZ2VkLlxuIjsKLSAgICAgICAgbXkgJGZpbGU7
Ci0gICAgICAgIG15ICRkaWZmRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hSZWYtPntvcGVuRGlm
Zn0oJGNoYW5nZWRGaWxlcywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlKTsKLSAg
ICAgICAgaWYgKCEkZGlmZkZpbGVIYW5kbGUpIHsKLSAgICAgICAgICAgIGRpZSAiVGhlIGRpZmYg
ZmFpbGVkOiAkIS5cbiI7Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKDwkZGlmZkZpbGVIYW5k
bGU+KSB7Ci0gICAgICAgICAgICBteSAkZmlsZVBhdGggPSBwYXJzZURpZmZTdGFydExpbmUoJF8p
OwotICAgICAgICAgICAgJGZpbGUgPSAkZGVsZWdhdGVIYXNoUmVmLT57bm9ybWFsaXplUGF0aH0o
JGZpbGVQYXRoKSBpZiAkZmlsZVBhdGg7Ci0gICAgICAgICAgICBpZiAoZGVmaW5lZCAkZmlsZSkg
ewotICAgICAgICAgICAgICAgIG15ICgkYmVmb3JlX3N0YXJ0LCAkYmVmb3JlX2VuZCkgPSBleHRy
YWN0TGluZVJhbmdlQmVmb3JlQ2hhbmdlKCRfKTsKLSAgICAgICAgICAgICAgICBpZiAoJGJlZm9y
ZV9zdGFydCA+PSAxICYmICRiZWZvcmVfZW5kID49IDEpIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaCBAeyRsaW5lX3Jhbmdlc19iZWZvcmVfY2hhbmdlZHskZmlsZX19LCBbICRiZWZvcmVfc3Rh
cnQsICRiZWZvcmVfZW5kIF07Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01N
SVQvKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAk
ZmlsZSBjb250YWlucyB0aGUgc3RyaW5nIERPX05PVF9DT01NSVQsIGxpbmUgJC5cbiI7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG15ICgkYWZ0ZXJfc3RhcnQsICRhZnRlcl9l
bmQpID0gZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlKCRfKTsKLSAgICAgICAgICAgICAgICBp
ZiAoJGFmdGVyX3N0YXJ0ID49IDEgJiYgJGFmdGVyX2VuZCA+PSAxKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2ggQHskbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmlsZX19LCBbICRhZnRl
cl9zdGFydCwgJGFmdGVyX2VuZCBdOwotICAgICAgICAgICAgICAgIH0gZWxzaWYgKC9ET19OT1Rf
Q09NTUlULykgewotICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIldBUk5JTkc6IGZp
bGUgJGZpbGUgY29udGFpbnMgdGhlIHN0cmluZyBET19OT1RfQ09NTUlULCBsaW5lICQuXG4iOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjbG9z
ZSgkZGlmZkZpbGVIYW5kbGUpOwotICAgIH0KLQotICAgICMgRm9yIGVhY2ggc291cmNlIGZpbGUs
IGNvbnZlcnQgbGluZSByYW5nZSB0byBmdW5jdGlvbiBsaXN0LgotICAgIHByaW50IFNUREVSUiAi
ICBFeHRyYWN0aW5nIGFmZmVjdGVkIGZ1bmN0aW9uIG5hbWVzIGZyb20gc291cmNlIGZpbGVzLlxu
IjsKLSAgICBteSAlZmlsZXNUb0V4YW1pbmUgPSBtYXAgeyAkXyA9PiAxIH0gKGtleXMoJWxpbmVf
cmFuZ2VzX2JlZm9yZV9jaGFuZ2VkKSwga2V5cyglbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZCkp
OwotICAgIGZvcmVhY2ggbXkgJGZpbGUgKGtleXMgJWZpbGVzVG9FeGFtaW5lKSB7Ci0gICAgICAg
IG15ICVzYXdfZnVuY3Rpb247Ci0KLSAgICAgICAgIyBGaW5kIGFsbCB0aGUgZnVuY3Rpb25zIGlu
IHRoZSBmaWxlLgotICAgICAgICBteSAkc291cmNlRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hS
ZWYtPntvcGVuRmlsZX0oJGZpbGUpOwotICAgICAgICBuZXh0IHVubGVzcyAkc291cmNlRmlsZUhh
bmRsZTsKLSAgICAgICAgbXkgQGFmdGVyQ2hhbmdlRnVuY3Rpb25SYW5nZXMgPSBnZXRfZnVuY3Rp
b25fbGluZV9yYW5nZXMoJHNvdXJjZUZpbGVIYW5kbGUsICRmaWxlKTsKLSAgICAgICAgY2xvc2Uo
JHNvdXJjZUZpbGVIYW5kbGUpOwotCi0gICAgICAgICMgRmluZCBtb2RpZmllZCBmdW5jdGlvbnMg
aW4gdGhlIGZpbGUuCi0gICAgICAgIGlmICgkbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmls
ZX0pIHsKLSAgICAgICAgICAgIG15IEBjaGFuZ2VfcmFuZ2VzID0gKEB7JGxpbmVfcmFuZ2VzX2Fm
dGVyX2NoYW5nZWR7JGZpbGV9fSwgW10pOwotICAgICAgICAgICAgbXkgQGZ1bmN0aW9ucyA9IGNv
bXB1dGVNb2RpZmllZEZ1bmN0aW9ucygkZmlsZSwgXEBjaGFuZ2VfcmFuZ2VzLCBcQGFmdGVyQ2hh
bmdlRnVuY3Rpb25SYW5nZXMpOwotCi0gICAgICAgICAgICAjIEZvcm1hdCB0aGUgbGlzdCBvZiBm
dW5jdGlvbnMuCi0gICAgICAgICAgICBpZiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgICAg
ICRmdW5jdGlvbkxpc3RzLT57JGZpbGV9ID0gIiIgaWYgIWRlZmluZWQgJGZ1bmN0aW9uTGlzdHMt
PnskZmlsZX07Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gLj0gIlxu
ICAgICAgICAoIiAuIGpvaW4oIik6XG4gICAgICAgICgiLCBAZnVuY3Rpb25zKSAuICIpOiI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgIyBGaW5kIHRoZSBkZWxldGVkIGZ1bmN0
aW9ucyBpbiB0aGUgb3JpZ2luYWwgZmlsZS4KLSAgICAgICAgaWYgKCRsaW5lX3Jhbmdlc19iZWZv
cmVfY2hhbmdlZHskZmlsZX0pIHsKLSAgICAgICAgICAgIG15ICRvcmlnaW5hbEZpbGVIYW5kbGUg
PSAkZGVsZWdhdGVIYXNoUmVmLT57b3Blbk9yaWdpbmFsRmlsZX0oJGZpbGUsICRnaXRDb21taXQs
ICRnaXRJbmRleCwgJG1lcmdlQmFzZSk7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkb3JpZ2lu
YWxGaWxlSGFuZGxlOwotICAgICAgICAgICAgbXkgQGJlZm9yZUNoYW5nZUZ1bmN0aW9uUmFuZ2Vz
ID0gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzKCRvcmlnaW5hbEZpbGVIYW5kbGUsICRmaWxlKTsK
LSAgICAgICAgICAgIGNsb3NlKCRvcmlnaW5hbEZpbGVIYW5kbGUpOwotCi0gICAgICAgICAgICBt
eSAlZXhpc3RzQWZ0ZXJDaGFuZ2UgPSBtYXAgeyAkXy0+WzJdID0+IDEgfSBAYWZ0ZXJDaGFuZ2VG
dW5jdGlvblJhbmdlczsKLQotICAgICAgICAgICAgbXkgQGZ1bmN0aW9uczsKLSAgICAgICAgICAg
IG15ICVzYXdGdW5jdGlvbnM7Ci0gICAgICAgICAgICBmb3IgbXkgJGZ1bmN0aW9uUmFuZ2UgKEBi
ZWZvcmVDaGFuZ2VGdW5jdGlvblJhbmdlcykgewotICAgICAgICAgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSAkZnVuY3Rpb25SYW5nZS0+WzJdOwotICAgICAgICAgICAgICAgIGlmICghJGV4aXN0
c0FmdGVyQ2hhbmdleyRmdW5jdGlvbk5hbWV9ICYmICEkc2F3RnVuY3Rpb25zeyRmdW5jdGlvbk5h
bWV9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2ggQGZ1bmN0aW9ucywgJGZ1bmN0aW9uTmFt
ZTsKLSAgICAgICAgICAgICAgICAgICAgJHNhd0Z1bmN0aW9uc3skZnVuY3Rpb25OYW1lfSA9IDE7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIEZvcm1h
dCB0aGUgbGlzdCBvZiBkZWxldGVkIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgIGlmIChAZnVuY3Rp
b25zKSB7Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gPSAiIiBpZiAh
ZGVmaW5lZCAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfTsKLSAgICAgICAgICAgICAgICAkZnVuY3Rp
b25MaXN0cy0+eyRmaWxlfSAuPSAiXG4gICAgICAgICgiIC4gam9pbigiKTogRGVsZXRlZC5cbiAg
ICAgICAgKCIsIEBmdW5jdGlvbnMpIC4gIik6IERlbGV0ZWQuIjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLX0KLQotc3ViIGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucygkJCQpCi17
Ci0gICAgbXkgKCRmaWxlLCAkY2hhbmdlZExpbmVSYW5nZXMsICRmdW5jdGlvblJhbmdlcykgPSBA
XzsKLQotICAgIG15ICVzYXdGdW5jdGlvbjsKLQotICAgICMgRmluZCBhbGwgdGhlIG1vZGlmaWVk
IGZ1bmN0aW9ucy4KLSAgICBteSBAZnVuY3Rpb25zOwotICAgIG15IEBjaGFuZ2VfcmFuZ2VzID0g
QHskY2hhbmdlZExpbmVSYW5nZXN9OwotICAgIG15IEBjaGFuZ2VfcmFuZ2UgPSAoMCwgMCk7Ci0g
ICAgRlVOQ1RJT046IGZvcmVhY2ggbXkgJGZ1bmN0aW9uX3JhbmdlX3JlZiAoQHskZnVuY3Rpb25S
YW5nZXN9KSB7Ci0gICAgICAgIG15IEBmdW5jdGlvbl9yYW5nZSA9IEB7JGZ1bmN0aW9uX3Jhbmdl
X3JlZn07Ci0KLSAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2suIElmIHRoZSBmdW5jdGlv
biBuYW1lIGlzIGVtcHR5LCBza2lwIGl0LgotICAgICAgICAjIFRoZSBjcHAsIHB5dGhvbiwgamF2
YXNjcmlwdCwgcGVybCwgY3NzIGFuZCBqYXZhIHBhcnNlcnMKLSAgICAgICAgIyBhcmUgbm90IHBl
cmZlY3RseSBpbXBsZW1lbnRlZCBhbmQgc29tZXRpbWVzIGZ1bmN0aW9uIG5hbWVzIGNhbm5vdCBi
ZSByZXRyaWV2ZWQKLSAgICAgICAgIyBjb3JyZWN0bHkuIEFzIHlvdSBjYW4gc2VlIGluIGdldF9m
dW5jdGlvbl9saW5lX3Jhbmdlc19YWFhYKCksIHRob3NlIHBhcnNlcnMKLSAgICAgICAgIyBhcmUg
bm90IGludGVuZGVkIHRvIGltcGxlbWVudCByZWFsIHBhcnNlcnMgYnV0IGludGVuZGVkIHRvIGp1
c3QgcmV0cmlldmUgZnVuY3Rpb24gbmFtZXMKLSAgICAgICAgIyBmb3IgbW9zdCBwcmFjdGljYWwg
c3ludGF4ZXMuCi0gICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvbl9yYW5nZVsyXTsKLQotICAg
ICAgICAjIEFkdmFuY2UgdG8gc3VjY2Vzc2l2ZSBjaGFuZ2UgcmFuZ2VzLgotICAgICAgICBmb3Ig
KDs7IEBjaGFuZ2VfcmFuZ2UgPSBAe3NoaWZ0IEBjaGFuZ2VfcmFuZ2VzfSkgewotICAgICAgICAg
ICAgbGFzdCBGVU5DVElPTiB1bmxlc3MgQGNoYW5nZV9yYW5nZTsKLQotICAgICAgICAgICAgIyBJ
ZiBwYXN0IHRoaXMgZnVuY3Rpb24sIG1vdmUgb24gdG8gdGhlIG5leHQgb25lLgotICAgICAgICAg
ICAgbmV4dCBGVU5DVElPTiBpZiAkY2hhbmdlX3JhbmdlWzBdID4gJGZ1bmN0aW9uX3JhbmdlWzFd
OwotCi0gICAgICAgICAgICAjIElmIGFuIG92ZXJsYXAgd2l0aCB0aGlzIGZ1bmN0aW9uIHJhbmdl
LCByZWNvcmQgdGhlIGZ1bmN0aW9uIG5hbWUuCi0gICAgICAgICAgICBpZiAoJGNoYW5nZV9yYW5n
ZVsxXSA+PSAkZnVuY3Rpb25fcmFuZ2VbMF0KLSAgICAgICAgICAgICAgICBhbmQgJGNoYW5nZV9y
YW5nZVswXSA8PSAkZnVuY3Rpb25fcmFuZ2VbMV0pIHsKLSAgICAgICAgICAgICAgICBpZiAoISRz
YXdGdW5jdGlvbnskZnVuY3Rpb25fcmFuZ2VbMl19KSB7Ci0gICAgICAgICAgICAgICAgICAgICRz
YXdGdW5jdGlvbnskZnVuY3Rpb25fcmFuZ2VbMl19ID0gMTsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25fcmFuZ2VbMl07Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIG5leHQgRlVOQ1RJT047Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gQGZ1bmN0aW9uczsKLX0KLQogc3ViIGNoYW5nZUxvZ0RhdGUo
JCkKIHsKICAgICBteSAoJHRpbWVab25lKSA9IEBfOwpAQCAtNTAwLDMyICszNjEsNiBAQCBzdWIg
ZmV0Y2hCdWdYTUxEYXRhKCQkKQogICAgIHJldHVybiAkeG1sRGF0YTsKIH0KIAotc3ViIGZldGNo
QnVnRGVzY3JpcHRpb25Gcm9tQnVnWE1MRGF0YSgkJCQpCi17Ci0gICAgbXkgKCRidWdVUkwsICRi
dWdOdW1iZXIsICRidWdYTUxEYXRhKSA9IEBfOwotCi0gICAgaWYgKCRidWdYTUxEYXRhICF+IC88
c2hvcnRfZGVzYz4oLiopPFwvc2hvcnRfZGVzYz4vKSB7Ci0gICAgICAgIHByaW50IFNUREVSUiAi
ICBCdWcgJGJ1Z051bWJlciBoYXMgbm8gYnVnIGRlc2NyaXB0aW9uLiBNYXliZSB5b3Ugc2V0IHdy
b25nIGJ1ZyBJRD9cbiI7Ci0gICAgICAgIHByaW50IFNUREVSUiAiICBUaGUgYnVnIFVSTDogJGJ1
Z1VSTFxuIjsKLSAgICAgICAgZXhpdCAxOwotICAgIH0KLQotICAgIG15ICRidWdEZXNjcmlwdGlv
biA9IGRlY29kZUVudGl0aWVzKCQxKTsKLSAgICBwcmludCBTVERFUlIgIiAgRGVzY3JpcHRpb24g
ZnJvbSBidWcgJGJ1Z051bWJlcjpcbiAgICBcIiRidWdEZXNjcmlwdGlvblwiLlxuIjsKLSAgICBy
ZXR1cm4gJGJ1Z0Rlc2NyaXB0aW9uOwotfQotCi1zdWIgZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxE
YXRhKCQkKQotewotICAgIG15ICgkYnVnTnVtYmVyLCAkYnVnWE1MRGF0YSkgPSBAXzsKLQotICAg
IHJldHVybiAiIiBpZiAkYnVnWE1MRGF0YSAhfiBtfDx0aGV0ZXh0PlxzKigoJmx0Oyk/cmRhcjov
Lyhwcm9ibGVtLyk/XGQrKCZndDspPyl8OwotCi0gICAgbXkgJGJ1Z1JhZGFyVVJMID0gZGVjb2Rl
RW50aXRpZXMoJDEpOwotICAgIHByaW50IFNUREVSUiAiICBSYWRhciBVUkwgZnJvbSBidWcgJGJ1
Z051bWJlcjpcbiAgICBcIiRidWdSYWRhclVSTFwiLlxuIjsKLSAgICByZXR1cm4gJGJ1Z1JhZGFy
VVJMOwotfQotCiBzdWIgZmluZENoYW5nZUxvZ3MoJCQpCiB7CiAgICAgbXkgKCRmdW5jdGlvbkxp
c3RzLCAkcmVxdWlyZUNoYW5nZUxvZ1RvRXhpc3QpID0gQF87CkBAIC03NjEsMzUgKzU5Niw2IEBA
IHN1YiBvcGVuQ2hhbmdlTG9ncygkKQogICAgIH0KIH0KIAotc3ViIGdldF9mdW5jdGlvbl9saW5l
X3JhbmdlcygkJCkKLXsKLSAgICBteSAoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSA9IEBfOwot
Ci0gICAgIyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2UgbGFuZ3VhZ2UgYmFzZWQgb24gdGhl
IGZpbGUgZXh0ZW5zaW9uLgotCi0gICAgcmV0dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19m
b3JfY3BwKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC4oY3xj
cHB8bXxtbXxoKSQvOwotICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2ph
dmEoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLmphdmEkLzsK
LSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0KCRmaWxl
X2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC5qcyQvOwotICAgIHJldHVy
biBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcygkZmlsZV9oYW5kbGUsICRmaWxlX25h
bWUpIGlmICRmaWxlX25hbWUgPX4gL1wuY3NzJC87Ci0gICAgcmV0dXJuIGdldF9mdW5jdGlvbl9s
aW5lX3Jhbmdlc19mb3JfcGVybCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25h
bWUgPX4gL1wucFtsbV0kLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zv
cl9weXRob24oJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLnB5
JC8gb3IgJGZpbGVfbmFtZSA9fiAvbWFzdGVyXC5jZmckLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRm
aWxlX25hbWUgPX4gL1wuc3dpZnQkLzsKLQotICAgICMgVHJ5IHRvIGRldGVybWluZSB0aGUgc291
cmNlIGxhbmd1YWdlIGJhc2VkIG9uIHRoZSBzY3JpcHQgaW50ZXJwcmV0ZXIuCi0KLSAgICBteSAk
Zmlyc3RfbGluZSA9IDwkZmlsZV9oYW5kbGU+OwotICAgIHNlZWsoJGZpbGVfaGFuZGxlLCAwLCAw
KTsKLQotICAgIHJldHVybiAoKSB1bmxlc3MgJGZpcnN0X2xpbmUgPX4gbXxeIyEoPzovdXNyL2Jp
bi9lbnZccyspPyhcUyspfDsKLSAgICBteSAkaW50ZXJwcmV0ZXIgPSAkMTsKLQotICAgIHJldHVy
biBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3BlcmwoJGZpbGVfaGFuZGxlLCAkZmlsZV9u
YW1lKSBpZiAkaW50ZXJwcmV0ZXIgPX4gL3BlcmwkLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9u
X2xpbmVfcmFuZ2VzX2Zvcl9weXRob24oJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkaW50
ZXJwcmV0ZXIgPX4gL3B5dGhvbiQvOwotCi0gICAgcmV0dXJuICgpOwotfQotCi0KIHN1YiBtZXRo
b2RfZGVjbF90b19zZWxlY3RvcigkKQogewogICAgIChteSAkbWV0aG9kX2RlY2wpID0gQF87CkBA
IC04MTcsMTIyMiArNjIzLDYgQEAgc3ViIG1ldGhvZF9kZWNsX3RvX3NlbGVjdG9yKCQpCiAgICAg
cmV0dXJuICRfOwogfQogCi0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSBy
YW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDIGZ1bmN0aW9ucy4KLSMgQSBmdW5j
dGlvbiBuYW1lIGlzIHRoZSBsYXN0IHdvcmQgYmVmb3JlIGFuIG9wZW4gcGFyZW50aGVzaXMgYmVm
b3JlIHRoZSBvdXRlcgotIyBsZXZlbCBvcGVuIGJyYWNlLiBBIGZ1bmN0aW9uIHN0YXJ0cyBhdCB0
aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRoZSBsYXN0IGNsb3NlCi0jIGJyYWNlIG9yIHNlbWlj
b2xvbiBiZWZvcmUgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhlIGNsb3NlIGJyYWNl
LgotIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3Ig
YWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJp
cGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0
X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJCQpCi17Ci0gICAgbXkgKCRmaWxlX2hhbmRs
ZSwgJGZpbGVfbmFtZSkgPSBAXzsKLQotICAgIG15IEByYW5nZXM7Ci0KLSAgICBteSAkaW5fY29t
bWVudCA9IDA7Ci0gICAgbXkgJGluX21hY3JvID0gMDsKLSAgICBteSAkaW5fbWV0aG9kX2RlY2xh
cmF0aW9uID0gMDsKLSAgICBteSAkaW5fcGFyZW50aGVzZXMgPSAwOwotICAgIG15ICRxdW90YXRp
b25fbWFyazsKLSAgICBteSAkaW5fYnJhY2VzID0gMDsKLSAgICBteSAkaW5fdG9wbGV2ZWxfYXJy
YXlfYnJhY2UgPSAwOwotICAgIG15ICRicmFjZV9zdGFydCA9IDA7Ci0gICAgbXkgJGJyYWNlX2Vu
ZCA9IDA7Ci0gICAgbXkgJG5hbWVzcGFjZV9zdGFydCA9IC0xOwotICAgIG15ICRza2lwX3RpbF9i
cmFjZV9vcl9zZW1pY29sb24gPSAwOwotICAgIG15ICRlcXVhbF9vYnNlcnZlZCA9IDA7Ci0KLSAg
ICBteSAkd29yZCA9ICIiOwotICAgIG15ICRpbnRlcmZhY2VfbmFtZSA9ICIiOwotCi0gICAgbXkg
JHBvdGVudGlhbF9tZXRob2RfY2hhciA9ICIiOwotICAgIG15ICRwb3RlbnRpYWxfbWV0aG9kX3Nw
ZWMgPSAiIjsKLQotICAgIG15ICRwb3RlbnRpYWxfc3RhcnQgPSAwOwotICAgIG15ICRwb3RlbnRp
YWxfbmFtZSA9ICIiOwotCi0gICAgbXkgJHN0YXJ0ID0gMDsKLSAgICBteSAkbmFtZSA9ICIiOwot
Ci0gICAgbXkgJG5leHRfd29yZF9jb3VsZF9iZV9uYW1lc3BhY2UgPSAwOwotICAgIG15ICRwb3Rl
bnRpYWxfbmFtZXNwYWNlID0gIiI7Ci0gICAgbXkgQG5hbWVzcGFjZXM7Ci0gICAgbXkgQGFsbF9u
YW1lc3BhY2VzOwotCi0gICAgd2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7Ci0gICAgICAgICMgSGFu
ZGxlIGNvbnRpbnVlZCBxdW90ZWQgc3RyaW5nLgotICAgICAgICBpZiAoJHF1b3RhdGlvbl9tYXJr
KSB7Ci0gICAgICAgICAgICBpZiAoIXMtKFteXFxdfFxcLikqJHF1b3RhdGlvbl9tYXJrLS0pIHsK
LSAgICAgICAgICAgICAgICBpZiAoIW0tXFwkLSkgewotICAgICAgICAgICAgICAgICAgICB3YXJu
ICJtaXNtYXRjaGVkIHF1b3RlcyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7Ci0gICAgICAg
ICAgICAgICAgICAgIHVuZGVmICRxdW90YXRpb25fbWFyazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVuZGVmICRx
dW90YXRpb25fbWFyazsKLSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBt
dWx0aS1saW5lIGNvbW1lbnQuCi0gICAgICAgIGlmICgkaW5fY29tbWVudCkgewotICAgICAgICAg
ICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOwotICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAwOwot
ICAgICAgICB9Ci0KLSAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG1hY3JvLgotICAgICAgICBp
ZiAoJGluX21hY3JvKSB7Ci0gICAgICAgICAgICAkaW5fbWFjcm8gPSAwIHVubGVzcyAvXFwkLzsK
LSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAjIEhhbmRsZSBzdGFydCBv
ZiBtYWNybyAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUpLgotICAgICAgICBpZiAoL15c
cypcIy8pIHsKLSAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYgL14oW15cXF18XFwuKSpcXCQv
OwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbW1l
bnRzIGFuZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgd2hpbGUgKG0tKC9cKnwvL3xcJ3xcIiktKSB7
ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5Ci0gICAgICAgICAgICBteSAk
bWF0Y2ggPSAkMTsKLSAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEgIi8qIikgewotICAgICAgICAg
ICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgewotICAgICAgICAgICAgICAgICAgICBzLS9cKi4q
LS07Ci0gICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0gMTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikgewotICAgICAgICAgICAg
ICAgIHMtLy8uKi0tOwotICAgICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKLSAgICAgICAgICAg
ICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0tKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghcy0kbWF0Y2guKlxcJC0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3
YXJuICJtaXNtYXRjaGVkIHF1b3RlcyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzLSRtYXRjaC4qLS07Ci0gICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkcXVvdGF0aW9uX21hcmsgPSAkbWF0Y2g7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotCi0gICAgICAgICMgY29udGludWVkIG1ldGhvZCBkZWNsYXJhdGlvbgot
ICAgICAgICBpZiAoJGluX21ldGhvZF9kZWNsYXJhdGlvbikgewotICAgICAgICAgICAgICBteSAk
b3JpZ2luYWwgPSAkXzsKLSAgICAgICAgICAgICAgbXkgJG1ldGhvZF9jb250ID0gJF87Ci0KLSAg
ICAgICAgICAgICAgY2hvbXAgJG1ldGhvZF9jb250OwotICAgICAgICAgICAgICAkbWV0aG9kX2Nv
bnQgPX4gcy9bO1x7XS4qLy87Ci0gICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX3NwZWMg
PSAiJHtwb3RlbnRpYWxfbWV0aG9kX3NwZWN9ICR7bWV0aG9kX2NvbnR9IjsKLQotICAgICAgICAg
ICAgICAkXyA9ICRvcmlnaW5hbDsKLSAgICAgICAgICAgICAgaWYgKC87LykgewotICAgICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX21ldGhvZF9zcGVjID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhv
ZF9jaGFyID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0g
MDsKLSAgICAgICAgICAgICAgICAgIHMvXlteO1x7XSovLzsKLSAgICAgICAgICAgICAgfSBlbHNp
ZiAoL3svKSB7Ci0gICAgICAgICAgICAgICAgICBteSAkc2VsZWN0b3IgPSBtZXRob2RfZGVjbF90
b19zZWxlY3RvciAoJHBvdGVudGlhbF9tZXRob2Rfc3BlYyk7Ci0gICAgICAgICAgICAgICAgICAk
cG90ZW50aWFsX25hbWUgPSAiJHtwb3RlbnRpYWxfbWV0aG9kX2NoYXJ9XFske2ludGVyZmFjZV9u
YW1lfSAke3NlbGVjdG9yfVxdIjsKLQotICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRo
b2Rfc3BlYyA9ICIiOwotICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2RfY2hhciA9
ICIiOwotICAgICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7Ci0KLSAg
ICAgICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAgICAgICAgcy9eW147
e10qLy87Ci0gICAgICAgICAgICAgIH0gZWxzaWYgKC9cQGVuZC8pIHsKLSAgICAgICAgICAgICAg
ICAgICRpbl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOwotICAgICAgICAgICAgICAgICAgJGludGVy
ZmFjZV9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKLSAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0KLSAgICAgICAgIyBzdGFydCBvZiBtZXRob2QgZGVjbGFyYXRpb24K
LSAgICAgICAgaWYgKChteSAkbWV0aG9kX2NoYXIsIG15ICRtZXRob2Rfc3BlYykgPSBtJl4oWy0r
XSkoW14wLTk7XVteO10qKTs/JCYpIHsKLSAgICAgICAgICAgIG15ICRvcmlnaW5hbCA9ICRfOwot
Ci0gICAgICAgICAgICBpZiAoJGludGVyZmFjZV9uYW1lKSB7Ci0gICAgICAgICAgICAgICAgY2hv
bXAgJG1ldGhvZF9zcGVjOwotICAgICAgICAgICAgICAgICRtZXRob2Rfc3BlYyA9fiBzL1x7Liov
LzsKLQotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAkbWV0aG9kX2No
YXI7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICRtZXRob2Rfc3Bl
YzsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47Ci0gICAgICAgICAgICAg
ICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDE7Ci0gICAgICAgICAgICB9IGVsc2UgeyAKLSAg
ICAgICAgICAgICAgICB3YXJuICJkZWNsYXJpbmcgYSBtZXRob2QgYnV0IGRvbid0IGhhdmUgaW50
ZXJmYWNlIG9uIGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAgaWYgKC9cey8pIHsKLSAgICAgICAg
ICAgICAgbXkgJHNlbGVjdG9yID0gbWV0aG9kX2RlY2xfdG9fc2VsZWN0b3IgKCRwb3RlbnRpYWxf
bWV0aG9kX3NwZWMpOwotICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAiJHtwb3RlbnRp
YWxfbWV0aG9kX2NoYXJ9XFske2ludGVyZmFjZV9uYW1lfSAke3NlbGVjdG9yfVxdIjsKLQotICAg
ICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9zcGVjID0gIiI7Ci0gICAgICAgICAgICAgICRw
b3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAiIjsKLSAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAg
ICBzL15bXntdKi8vOwotICAgICAgICAgICAgfSBlbHNpZiAoL1xAZW5kLykgewotICAgICAgICAg
ICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKLSAgICAgICAgICAgICAgJGludGVyZmFj
ZV9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0KLSAgICAgICAgIyBGaW5kIGZ1bmN0aW9uLCBpbnRlcmZhY2UgYW5kIG1ldGhvZCBuYW1lcy4K
LSAgICAgICAgd2hpbGUgKG0mKCg/OltbOndvcmQ6XV0rOjopKm9wZXJhdG9yKD86WyBcdF0qXChc
KXxbXigpXSopfFtbOndvcmQ6XTw+On5dK3xbKCl7fTo7PV0pfFxAKD86aW1wbGVtZW50YXRpb258
aW50ZXJmYWNlfHByb3RvY29sKVxzKyhcdyspW157XSomZykgewotICAgICAgICAgICAgIyBTa2lw
IGFuIGFycmF5IGRlZmluaXRpb24gYXQgdGhlIHRvcCBsZXZlbC4KLSAgICAgICAgICAgICMgZS5n
LiBzdGF0aWMgaW50IGFycltdID0geyAxLCAyLCAzIH07Ci0gICAgICAgICAgICBpZiAoJDEpIHsK
LSAgICAgICAgICAgICAgICBpZiAoJDEgZXEgIj0iIGFuZCAhJGluX3BhcmVudGhlc2VzIGFuZCAh
JGluX2JyYWNlcykgewotICAgICAgICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQgPSAxOwot
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCQxIGVxICJ7IiBhbmQgJGVxdWFsX29ic2VydmVkKSB7
Ci0gICAgICAgICAgICAgICAgICAgICMgVGhpcyAneycgaXMgdGhlIGJlZ2lubmluZyBvZiBhbiBh
cnJheSBkZWZpbml0aW9uLCBub3QgdGhlIGJlZ2lubmluZyBvZiBhIG1ldGhvZC4KLSAgICAgICAg
ICAgICAgICAgICAgJGluX3RvcGxldmVsX2FycmF5X2JyYWNlID0gMTsKLSAgICAgICAgICAgICAg
ICAgICAgJGluX2JyYWNlcysrOwotICAgICAgICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQg
PSAwOwotICAgICAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgICAgIH0gZWxzaWYg
KCQxICF+IC9bIFx0XS8pIHsKLSAgICAgICAgICAgICAgICAgICAgJGVxdWFsX29ic2VydmVkID0g
MDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgaW50
ZXJmYWNlIG5hbWUKLSAgICAgICAgICAgIGlmICgkMikgewotICAgICAgICAgICAgICAgICRpbnRl
cmZhY2VfbmFtZSA9ICQyOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICMgT3BlbiBwYXJlbnRoZXNpcy4KLSAgICAgICAgICAgIGlmICgkMSBlcSAi
KCIpIHsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAkd29yZCB1bmxlc3MgJGlu
X3BhcmVudGhlc2VzIHx8ICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gfHwgZ3JlcCB7ICR3
b3JkIGVxICRfIH0gKCJDRl9FTlVNIiwgIkNGX09QVElPTlMiLCAiTlNfRU5VTSIsICJOU19PUFRJ
T05TIik7Ci0gICAgICAgICAgICAgICAgJGluX3BhcmVudGhlc2VzKys7Ci0gICAgICAgICAgICAg
ICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBDbG9zZSBwYXJlbnRoZXNp
cy4KLSAgICAgICAgICAgIGlmICgkMSBlcSAiKSIpIHsKLSAgICAgICAgICAgICAgICAkaW5fcGFy
ZW50aGVzZXMtLTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAoJDEgZXEgImNvbnN0IiBhbmQgISRpbl9wYXJlbnRoZXNlcykgewotICAgICAg
ICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSAuPSAiIGNvbnN0IjsKLSAgICAgICAgICAgICAgICBu
ZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoJDEgZXEgInZvbGF0aWxlIiBh
bmQgISRpbl9wYXJlbnRoZXNlcykgewotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSAu
PSAiIHZvbGF0aWxlIjsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAjIEMrKyBhdXRvIGZ1bmN0aW9uKCkgLT4gdHlwZQotICAgICAgICAgICAgaWYg
KCQxIGVxICI+IikgewotICAgICAgICAgICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29s
b24gPSAxIHVubGVzcyAoJGluX3BhcmVudGhlc2VzIHx8ICRpbl9icmFjZXMpOwotICAgICAgICAg
ICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgQysrIGNvbnN0cnVj
dG9yIGluaXRpYWxpemVycwotICAgICAgICAgICAgaWYgKCQxIGVxICI6IikgewotICAgICAgICAg
ICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAxIHVubGVzcyAoJGluX3BhcmVu
dGhlc2VzIHx8ICRpbl9icmFjZXMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIE9w
ZW4gYnJhY2UuCi0gICAgICAgICAgICBpZiAoJDEgZXEgInsiKSB7Ci0gICAgICAgICAgICAgICAg
JHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9IDA7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
ISRpbl9icmFjZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lc3BhY2Vfc3RhcnQg
Pj0gMCBhbmQgJG5hbWVzcGFjZV9zdGFydCA8ICRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyAkbmFtZXNwYWNlX3N0YXJ0IC4gIiIsICRw
b3RlbnRpYWxfc3RhcnQgLSAxLCAkbmFtZSBdOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRwb3RlbnRpYWxfbmFtZXNwYWNlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoIEBuYW1lc3BhY2VzLCAkcG90ZW50aWFsX25hbWVzcGFjZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQGFsbF9uYW1lc3BhY2VzLCAkcG90ZW50aWFsX25h
bWVzcGFjZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZXNwYWNlID0g
IiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgIyBQcm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFt
ZSBhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBvZiB0aGUgb3V0ZXIgbGV2ZWwg
c2V0IG9mIGJyYWNlcyAoZnVuY3Rpb24gYm9keT8pLgotICAgICAgICAgICAgICAgICAgICBpZiAo
JHBvdGVudGlhbF9zdGFydCkgewotICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJHBv
dGVudGlhbF9zdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJHBvdGVudGlh
bF9uYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzICYmICRuYW1l
ICYmIChsZW5ndGgoJG5hbWUpIDwgMiB8fCBzdWJzdHIoJG5hbWUsMSwxKSBuZSAiWyIpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBqb2luICgnOjonLCBAbmFtZXNwYWNl
cywgJG5hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0KLSAgICAgICAgICAgICAgICAkYnJhY2Vfc3RhcnQgPSAkLiBpZiAoISRp
bl9icmFjZXMpOwotICAgICAgICAgICAgICAgICRpbl9icmFjZXMrKzsKLSAgICAgICAgICAgICAg
ICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIENsb3NlIGJyYWNlLgotICAg
ICAgICAgICAgaWYgKCQxIGVxICJ9IikgewotICAgICAgICAgICAgICAgIGlmICghJGluX2JyYWNl
cyAmJiBAbmFtZXNwYWNlcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoJG5hbWVzcGFjZV9z
dGFydCA+PSAwIGFuZCAkbmFtZXNwYWNlX3N0YXJ0IDwgJC4pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2ggQHJhbmdlcywgWyAkbmFtZXNwYWNlX3N0YXJ0IC4gIiIsICQuIC0gMSwgJG5h
bWUgXTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHBvcCBA
bmFtZXNwYWNlczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICIiOwotICAgICAg
ICAgICAgICAgICAgICAgICAgJG5hbWVzcGFjZV9zdGFydCA9IC0xOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgJGluX2JyYWNlcy0tOwotICAgICAgICAgICAgICAgICRicmFjZV9lbmQg
PSAkLiBpZiAoISRpbl9icmFjZXMpOwotCi0gICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0
ZXIgbGV2ZWwgc2V0IG9mIGJyYWNlcy4KLSAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUg
YSBmdW5jdGlvbiBib2R5LgotICAgICAgICAgICAgICAgIGlmICghJGluX2JyYWNlcyBhbmQgJG5h
bWUpIHsKLSAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBlbmQgb2YgYW4gYXJyYXkg
ZGVmaW5pdGlvbiBhdCB0aGUgdG9wIGxldmVsLCBub3QgdGhlIGVuZCBvZiBhIG1ldGhvZC4KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRpbl90b3BsZXZlbF9hcnJheV9icmFjZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgJGluX3RvcGxldmVsX2FycmF5X2JyYWNlID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJHN0YXJ0LCAkLiwgJG5hbWUgXTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
bmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3Bh
Y2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkbmFtZSA9ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgJG5h
bWVzcGFjZV9zdGFydCA9IC0xOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAg
ICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgIyBTZW1pY29sb24uCi0gICAgICAgICAgICBpZiAoJDEg
ZXEgIjsiKSB7Ci0gICAgICAgICAgICAgICAgJHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9
IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAg
ICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgIyBJZ25vcmUgImNvbnN0IiBtZXRob2QgcXVhbGlmaWVyLgotICAgICAgICAgICAg
aWYgKCQxIGVxICJjb25zdCIpIHsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAoJDEgZXEgIm5hbWVzcGFjZSIgfHwgJDEgZXEgImNsYXNzIiB8
fCAkMSBlcSAic3RydWN0IikgewotICAgICAgICAgICAgICAgICRuZXh0X3dvcmRfY291bGRfYmVf
bmFtZXNwYWNlID0gMTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAjIFdvcmQuCi0gICAgICAgICAgICAkd29yZCA9ICQxOwotICAgICAgICAgICAg
aWYgKCEkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCRuZXh0X3dvcmRfY291bGRfYmVfbmFtZXNwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZXNwYWNlID0gJHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRuZXh0X3dv
cmRfY291bGRfYmVfbmFtZXNwYWNlID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2lmICgkcG90
ZW50aWFsX25hbWVzcGFjZSkgewotICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVz
cGFjZSA9ICIiOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghJGlu
X3BhcmVudGhlc2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAw
OwotICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAiIjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCEkcG90ZW50aWFsX3N0YXJ0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAg
JHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgd2FybiAibWlzc2luZyBjbG9zZSBicmFjZXMgaW4gJGZp
bGVfbmFtZSAocHJvYmFibGUgc3RhcnQgYXQgJGJyYWNlX3N0YXJ0KVxuIiBpZiAoJGluX2JyYWNl
cyA+IDApOwotICAgIHdhcm4gInRvbyBtYW55IGNsb3NlIGJyYWNlcyBpbiAkZmlsZV9uYW1lIChw
cm9iYWJsZSBzdGFydCBhdCAkYnJhY2VfZW5kKVxuIiBpZiAoJGluX2JyYWNlcyA8IDApOwotCi0g
ICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRoZXNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9w
YXJlbnRoZXNlczsKLQotICAgIHJldHVybiBkZWxldGVfbmFtZXNwYWNlc19mcm9tX3Jhbmdlc19m
b3JfY3BwKEByYW5nZXMsIEBhbGxfbmFtZXNwYWNlcyk7Ci19Ci0KLQotIyBUYWtlIGluIHJlZmVy
ZW5jZXMgdG8gYW4gYXJyYXkgb2YgbGluZSByYW5nZXMgZm9yIEMgZnVuY3Rpb25zIGluIGEgZ2l2
ZW4gZmlsZSAKLSMgYW5kIGFuIGFycmF5IG9mIG5hbWVzcGFjZXMgZGVjbGFyZWQgaW4gdGhhdCBm
aWxlIGFuZCByZXR1cm4gYW4gdXBkYXRlZAotIyBsaXN0IG9mIGxpbmUgcmFuZ2VzIHdpdGggdGhl
IG5hbWVzcGFjZXMgcmVtb3ZlZC4KLQotc3ViIGRlbGV0ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2Vz
X2Zvcl9jcHAoXEBcQCkKLXsKLSAgICBteSAoJHJhbmdlcywgJG5hbWVzcGFjZXMpID0gQF87Ci0g
ICAgcmV0dXJuIGdyZXAgeyFpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJG5hbWVzcGFjZXMsICQk
X1syXSl9IEAkcmFuZ2VzOwotfQotCi0KLXN1YiBpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJCQp
Ci17Ci0gICAgbXkgKCRuYW1lc3BhY2VzLCAkZnVuY3Rpb25fbmFtZSkgPSBAXzsKLSAgICByZXR1
cm4gZ3JlcCB7JF8gZXEgJGZ1bmN0aW9uX25hbWV9IEAkbmFtZXNwYWNlczsKLX0KLQotCi0jIFJl
YWQgYSBmaWxlIGFuZCBnZXQgYWxsIHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQg
bG9vayBsaWtlIEphdmEKLSMgY2xhc3NlcywgaW50ZXJmYWNlcyBhbmQgbWV0aG9kcy4KLSMKLSMg
QSBjbGFzcyBvciBpbnRlcmZhY2UgbmFtZSBpcyB0aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZv
bGxvd3MKLSMgYGNsYXNzJyBvciBgaW50ZXJmYWNlJyB3aGVuIGZvbGxvd2VkIGJ5IGFuIG9wZW4g
Y3VybHkgYnJhY2UgYW5kIG5vdAotIyBhIHNlbWljb2xvbi4gSXQgY2FuIGFwcGVhciBhdCB0aGUg
dG9wIGxldmVsLCBvciBpbnNpZGUgYW5vdGhlciBjbGFzcwotIyBvciBpbnRlcmZhY2UgYmxvY2ss
IGJ1dCBub3QgaW5zaWRlIGEgZnVuY3Rpb24gYmxvY2sKLSMKLSMgQSBjbGFzcyBvciBpbnRlcmZh
Y2Ugc3RhcnRzIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGNsb3NlCi0j
IGJyYWNlIG9yIGFmdGVyIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBlbmRzIGF0IHRoZSBjbG9zZSBi
cmFjZS4KLSMKLSMgQSBmdW5jdGlvbiBuYW1lIGlzIHRoZSBsYXN0IHdvcmQgYmVmb3JlIGFuIG9w
ZW4gcGFyZW50aGVzaXMgYmVmb3JlCi0jIGFuIG9wZW4gYnJhY2UgcmF0aGVyIHRoYW4gYSBzZW1p
Y29sb24uIEl0IGNhbiBhcHBlYXIgYXQgdG9wIGxldmVsIG9yCi0jIGluc2lkZSBhIGNsYXNzIG9y
IGludGVyZmFjZSBibG9jaywgYnV0IG5vdCBpbnNpZGUgYSBmdW5jdGlvbiBibG9jay4KLSMKLSMg
QSBmdW5jdGlvbiBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgZmlyc3Qg
Y2xvc2UKLSMgYnJhY2Ugb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhl
IGNsb3NlIGJyYWNlLgotIwotIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0
IHdpbGwgd29yayBmb3IgYWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBp
cyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFt
ZSBdLgotCi1zdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhKCQkKQotewotICAg
IG15ICgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87Ci0KLSAgICBteSBAY3VycmVudF9z
Y29wZXM7Ci0KLSAgICBteSBAcmFuZ2VzOwotCi0gICAgbXkgJGluX2NvbW1lbnQgPSAwOwotICAg
IG15ICRpbl9tYWNybyA9IDA7Ci0gICAgbXkgJGluX3BhcmVudGhlc2VzID0gMDsKLSAgICBteSAk
aW5fYnJhY2VzID0gMDsKLSAgICBteSAkaW5fbm9uX2Jsb2NrX2JyYWNlcyA9IDA7Ci0gICAgbXkg
JGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOwotICAgIG15ICRpbl9jbGFzc19kZWNs
YXJhdGlvbiA9IDA7Ci0KLSAgICBteSAkd29yZCA9ICIiOwotCi0gICAgbXkgJHBvdGVudGlhbF9z
dGFydCA9IDA7Ci0gICAgbXkgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgbXkgJHBvdGVudGlh
bF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7Ci0KLSAgICBteSAkc3RhcnQgPSAwOwot
ICAgIG15ICRuYW1lID0gIiI7Ci0gICAgbXkgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19vcl9pbnRl
cmZhY2UgPSAwOwotCi0gICAgd2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7Ci0gICAgICAgICMgSGFu
ZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQuCi0gICAgICAgIGlmICgkaW5fY29tbWVu
dCkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOwotICAgICAgICAgICAgJGlu
X2NvbW1lbnQgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG1h
Y3JvLgotICAgICAgICBpZiAoJGluX21hY3JvKSB7Ci0gICAgICAgICAgICAkaW5fbWFjcm8gPSAw
IHVubGVzcyAvXFwkLzsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAj
IEhhbmRsZSBzdGFydCBvZiBtYWNybyAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUpLgot
ICAgICAgICBpZiAoL15ccypcIy8pIHsKLSAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYgL14o
W15cXF18XFwuKSpcXCQvOwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAg
ICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgd2hpbGUgKG0tKC9c
KnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5Ci0g
ICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKLSAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEgIi8q
IikgewotICAgICAgICAgICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgewotICAgICAgICAgICAg
ICAgICAgICBzLS9cKi4qLS07Ci0gICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0gMTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikg
ewotICAgICAgICAgICAgICAgIHMtLy8uKi0tOwotICAgICAgICAgICAgfSBlbHNlIHsgIyAnIG9y
ICIKLSAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0tKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4g
aW4gJGZpbGVfbmFtZVxuIjsKLSAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0tOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICMgRmlu
ZCBmdW5jdGlvbiBuYW1lcy4KLSAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fTtdKS1nKSB7Ci0g
ICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCi0gICAgICAgICAgICBpZiAoJDEgZXEgIigi
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAwOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAkaW5fcGFyZW50aGVzZXMrKzsKLSAgICAgICAgICAgICAgICBu
ZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lzLgot
ICAgICAgICAgICAgaWYgKCQxIGVxICIpIikgewotICAgICAgICAgICAgICAgICRpbl9wYXJlbnRo
ZXNlcy0tOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICMgT3BlbiBicmFjZS4KLSAgICAgICAgICAgIGlmICgkMSBlcSAieyIpIHsKLSAgICAgICAg
ICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAwOwotCi0gICAgICAgICAgICAgICAgIyBQ
cm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFtZSBhdCB0aGUKLSAgICAg
ICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBvdXRlciBsZXZlbCBzZXQgb2YgYnJhY2VzIChmdW5j
dGlvbi9jbGFzcy9pbnRlcmZhY2UgYm9keT8pLgotICAgICAgICAgICAgICAgIGlmICghJGluX25v
bl9ibG9ja19icmFjZXMKLSAgICAgICAgICAgICAgICAgICAgYW5kICghJGluX2JyYWNlcyBvciAk
Y3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSkKLSAgICAgICAgICAgICAgICAgICAg
YW5kICRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyAkc3RhcnQsICgkLiAt
IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbiAoJy4n
LCBAY3VycmVudF9zY29wZXMpIF07Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotCi0gICAgICAg
ICAgICAgICAgICAgICRjdXJyZW50X25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gJHBvdGVu
dGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZTsKLQotICAgICAgICAgICAgICAgICAgICAk
c3RhcnQgPSAkcG90ZW50aWFsX3N0YXJ0OwotICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRw
b3RlbnRpYWxfbmFtZTsKLQotICAgICAgICAgICAgICAgICAgICBwdXNoIChAY3VycmVudF9zY29w
ZXMsICRuYW1lKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAkaW5fbm9uX2Jsb2NrX2JyYWNlcysrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOwotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxf
c3RhcnQgPSAwOwotCi0gICAgICAgICAgICAgICAgJGluX2JyYWNlcysrOwotICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgQ2xvc2UgYnJhY2UuCi0g
ICAgICAgICAgICBpZiAoJDEgZXEgIn0iKSB7Ci0gICAgICAgICAgICAgICAgJGluX2JyYWNlcy0t
OwotCi0gICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0ZXIgbGV2ZWwgc2V0IG9mIGJyYWNl
cy4KLSAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUgYSBmdW5jdGlvbiBib2R5LgotICAg
ICAgICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19icmFjZXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCRuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5nZXMs
IFsgJHN0YXJ0LCAkLiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
b2luICgnLicsIEBjdXJyZW50X3Njb3BlcykgXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
cG9wIChAY3VycmVudF9zY29wZXMpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGN1
cnJlbnRfc2NvcGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbmFt
ZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAxOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJHN0YXJ0ID0gJC4gKyAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0g
ICRjdXJyZW50X3Njb3Blc1skI2N1cnJlbnRfc2NvcGVzLTFdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9uYW1l
X2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHN0YXJ0ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICAiIjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICRpbl9ub25fYmxvY2tfYnJhY2Vz
LS0gaWYgJGluX25vbl9ibG9ja19icmFjZXM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlh
bF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgIyBTZW1pY29sb24uCi0gICAgICAgICAgICBpZiAoJDEgZXEgIjsiKSB7Ci0gICAg
ICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVu
dGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIpIHsKLSAgICAgICAgICAgICAgICAkaW5fY2xh
c3NfZGVjbGFyYXRpb24gPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCQxIGVx
ICJjbGFzcyIgb3IgKCEkaW5fY2xhc3NfZGVjbGFyYXRpb24gYW5kICQxIGVxICJpbnRlcmZhY2Ui
KSkgewotICAgICAgICAgICAgICAgICRjbGFzc19vcl9pbnRlcmZhY2VfanVzdF9zZWVuID0gMTsK
LSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIFdv
cmQuCi0gICAgICAgICAgICAkd29yZCA9ICQxOwotICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50
aGVzZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3Nl
ZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Ci0gICAg
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKLSAgICAgICAgICAgICAgICAg
ICAgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOwotICAgICAgICAgICAgICAgICAg
ICAkcG90ZW50aWFsX25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoISRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFs
X3N0YXJ0ID0gJC47Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAkY2xhc3Nfb3JfaW50ZXJmYWNlX2p1c3Rfc2VlbiA9IDA7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3YXJuICJtaXNtYXRjaGVkIGJyYWNlcyBpbiAkZmls
ZV9uYW1lXG4iIGlmICRpbl9icmFjZXM7Ci0gICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRoZXNl
cyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9wYXJlbnRoZXNlczsKLQotICAgIHJldHVybiBAcmFu
Z2VzOwotfQotCi0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMg
b2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZQotIyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyBvciBt
ZXRob2RzLgotIwotIyBBIGZ1bmN0aW9uIG5hbWUgaXMgdGhlIHdvcmQgdGhhdCBpbW1lZGlhdGVs
eSBmb2xsb3dzIGBmdW5jdGlvbicgd2hlbgotIyBmb2xsb3dlZCBieSBhbiBvcGVuIGN1cmx5IGJy
YWNlLiBJdCBjYW4gYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWwsCi0jIG9yIGluc2lkZSBvdGhlciBm
dW5jdGlvbnMuIEZvciBleGFtcGxlOgotIwotIyAgICBmdW5jdGlvbiBuYW1lKCkgeyAvLyAobmFt
ZSkKLSMgICAgICAgIGZ1bmN0aW9uIGlubmVyKCkgeyB9IC8vIChuYW1lLmlubmVyKQotIyAgICB9
Ci0jCi0jIEFuIGFub255bW91cyBmdW5jdGlvbiBuYW1lIGlzIHRoZSBpZGVudGlmaWVyIG9uIHRo
ZSBsZWZ0IGhhbmQgc2lkZSBvZgotIyBhbiBhc3NpZ25tZW50IHdpdGggdGhlIGVxdWFscyBvcGVy
YXRvciBvciBvYmplY3Qgbm90YXRpb24gdGhhdCBoYXMgYQotIyB2YWx1ZSBzdGFydGluZyB3aXRo
IGBmdW5jdGlvbicgZm9sbG93ZWQgYW4gb3BlbiBjdXJseSBicmFjZS4KLSMgRm9yIGV4YW1wbGU6
Ci0jCi0jICAgIG5hbWVzcGFjZSA9IHsKLSMgICAgICAgIG5hbWU6IGZ1bmN0aW9uKCkge30gLy8g
KG5hbWVzcGFjZS5uYW1lKQotIyAgICB9Ci0jICAgIG5hbWVzcGFjZS5Gb28gPSBmdW5jdGlvbigp
IHt9IC8vIChuYW1lc3BhY2UuRm9vKQotIwotIyBBIGdldHRlciBvciBzZXR0ZXIgbmFtZSBpcyB0
aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3MgYGdldCcgb3IKLSMgYHNldCcgd2hlbiBm
b2xsb3dlZCBieSBwYXJhbXMgYW5kIGFuIG9wZW4gY3VybHkgYnJhY2UuIEZvciBleGFtcGxlOgot
IwotIyAgICBuYW1lc3BhY2UgPSB7Ci0jICAgICAgZ2V0IGZvbygpIHt9IC8vIChuYW1lc3BhY2Uu
Z2V0IGZvbykKLSMgICAgfQotIwotIyBBIG1ldGhvZCBuYW1lIGlzIHRoZSB3b3JkIGltbWVkaWF0
ZWx5IGJlZm9yZSBwYXJlbnRoZXNpcywgd2l0aCBhbiBvcGVuCi0jIGN1cmx5IGJyYWNlIGltbWVk
aWF0ZWx5IGZvbGxvd2luZyBjbG9zaW5nIHBhcmVudGhlc2lzLiBGb3IgYSBjbGFzcyBleHByZXNz
aW9uCi0jIHdlIHRha2UgdGhlIGFzc2lnbm1lbnQgaWRlbnRpZmllciBpbnN0ZWFkIG9mIHRoZSBj
bGFzcyBuYW1lIGZvciBuYW1lc3BhY2luZy4KLSMKLSMgICAgbmFtZXNwYWNlLkZvbyA9IGNsYXNz
IERvZXNOb3RNYXR0ZXIgZXh0ZW5kcyBCYXIgewotIyAgICAgICAgY29uc3RydWN0b3IoKSB7fSAv
LyAobmFtZXNwYWNlLkZvbykKLSMgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7fSAvLyAo
bmFtZXNwYWNlLkZvby5zdGF0aWNNZXRob2QpCi0jICAgICAgICBpbnN0YW5jZU1ldGhvZCgpIHt9
IC8vIChuYW1lc3BhY2UuRm9vLnByb3RvdHlwZS5pbnN0YW5jZU1ldGhvZCkKLSMgICAgICAgIGdl
dCBnZXR0ZXIoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5wcm90b3R5cGUuZ2V0IGdldHRlcikKLSMg
ICAgfQotIyAgICBjbGFzcyBDbGFzc05hbWUgewotIyAgICAgICAgY29uc3RydWN0b3IoKSB7fSAv
LyAoQ2xhc3NOYW1lKQotIyAgICAgICAgbWV0aG9kKCkge30gLy8gKENsYXNzTmFtZS5wcm90b3R5
cGUubWV0aG9kKQotIyAgICB9Ci0jCi0jIE1ldGhvZHMgbWF5IGV4aXN0IGluIG9iamVjdCBsaXRl
cmFscywgb3V0c2lkZSBvZiBjbGFzc2VzLgotIwotIyAgIEZvby5wcm90b3R5cGUgPSB7Ci0jICAg
ICAgIG1ldGhvZCgpIHt9LCAvLyAoRm9vLnByb3RvdHlwZS5tZXRob2QpCi0jICAgICAgIG90aGVy
TWV0aG9kKCkge30gLy8gKEZvby5wcm90b3R5cGUub3RoZXJNZXRob2QpCi0jICAgfQotIwotIyBD
b21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3IgYWxsIGJ1
dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczog
WyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0KCQkKQotewotICAgIG15ICgkZmlsZUhhbmRs
ZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQGN1cnJlbnRTY29wZXM7Ci0gICAgbXkgQGN1
cnJlbnRJZGVudGlmaWVyczsKLSAgICBteSBAY3VycmVudFBhcnNpbmdNb2RlID0gKCJnbG9iYWwi
KTsKLSAgICBteSBAY3VycmVudEZ1bmN0aW9uTmFtZXM7Ci0gICAgbXkgQGN1cnJlbnRGdW5jdGlv
bkRlcHRoczsKLSAgICBteSBAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lczsKLQotICAgIG15IEBy
YW5nZXM7Ci0KLSAgICBteSAkaW5Db21tZW50ID0gMDsKLSAgICBteSAkaW5RdW90ZWRUZXh0ID0g
IiI7Ci0gICAgbXkgJGluRXh0ZW5kcyA9IDA7Ci0gICAgbXkgJGluTWV0aG9kID0gMDsKLSAgICBt
eSAkaW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnMgPSAwOwotICAgIG15ICRwYXJlbnRoZXNl
c0RlcHRoID0gMDsKLSAgICBteSAkZ2xvYmFsUGFyZW50aGVzZXNEZXB0aCA9IDA7Ci0gICAgbXkg
JGJyYWNlc0RlcHRoID0gMDsKLQotICAgIG15ICRjbGFzc0p1c3RTZWVuID0gMDsKLSAgICBteSAk
cGFyZW50aGVzaXNKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJGZ1bmN0aW9uSnVzdFNlZW4gPSAwOwot
ICAgIG15ICRnZXR0ZXJKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJHNldHRlckp1c3RTZWVuID0gMDsK
LSAgICBteSAkYXN5bmNKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJGFzc2lnbm1lbnRKdXN0U2VlbiA9
IDA7Ci0gICAgbXkgJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gPSAwOwotCi0gICAgbXkgJGN1cnJl
bnRUb2tlbiA9ICIiOwotICAgIG15ICRsYXN0VG9rZW4gPSAiIjsKLSAgICBteSAkcG9zc2libGVN
ZXRob2ROYW1lID0gIiI7Ci0gICAgbXkgJHdvcmQgPSAiIjsKLQotICAgIHdoaWxlICg8JGZpbGVI
YW5kbGU+KSB7Ci0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQu
Ci0gICAgICAgIGlmICgkaW5Db21tZW50KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyBzLS4q
XCovLS07Ci0gICAgICAgICAgICAkaW5Db21tZW50ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAg
ICMgSGFuZGxlIGNvbnRpbnVlZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgaWYgKCRpblF1b3RlZFRl
eHQgbmUgIiIpIHsKLSAgICAgICAgICAgIG5leHQgaWYgL1xcJC87Ci0gICAgICAgICAgICBzLShb
XlxcXXxcXC4pKj8kaW5RdW90ZWRUZXh0LS07Ci0gICAgICAgICAgICAkaW5RdW90ZWRUZXh0ID0g
IiI7Ci0gICAgICAgIH0KLQotICAgICAgICAjIEhhbmRsZSBjb21tZW50cyBhbmQgcXVvdGVkIHRl
eHQuCi0gICAgICAgIHdoaWxlIChtLSgvXCp8Ly98XCd8XCIpLSkgeyAjIFwnIGFuZCBcIiBrZWVw
IGVtYWNzIHBlcmwgbW9kZSBoYXBweQotICAgICAgICAgICAgbXkgJG1hdGNoID0gJDE7Ci0gICAg
ICAgICAgICBpZiAoJG1hdGNoIGVxICcvKicpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXMtL1wq
Lio/XCovLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgcy0vXCouKi0tOwotICAgICAgICAgICAg
ICAgICAgICAkaW5Db21tZW50ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2lmICgkbWF0Y2ggZXEgJy8vJykgewotICAgICAgICAgICAgICAgIHMtLy8uKi0tOwotICAg
ICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKLSAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNo
KFteXFxdfFxcLikqPyRtYXRjaC1zdHJpbmdfYXBwZWFyZWRfaGVyZS0pIHsKLSAgICAgICAgICAg
ICAgICAgICAgJGluUXVvdGVkVGV4dCA9ICRtYXRjaCBpZiAvXFwkLzsKLSAgICAgICAgICAgICAg
ICAgICAgd2FybiAibWlzbWF0Y2hlZCBxdW90ZXMgYXQgbGluZSAkLiBpbiAkZmlsZU5hbWVcbiIg
aWYgJGluUXVvdGVkVGV4dCBlcSAiIjsKLSAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0t
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
ICMgRmluZCBmdW5jdGlvbiBuYW1lcy4KLSAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fT06Oywu
XSktZykgewotICAgICAgICAgICAgIyBTa2lwIGV2ZXJ5dGhpbmcgdW50aWwgInsiIGFmdGVyIGV4
dGVuZHMuCi0gICAgICAgICAgICBpZiAoJGluRXh0ZW5kcykgewotICAgICAgICAgICAgICAgIG5l
eHQgaWYgJDEgbmUgJ3snOwotICAgICAgICAgICAgICAgICRpbkV4dGVuZHMgPSAwOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAkbGFzdFRva2VuID0gJGN1cnJlbnRUb2tlbjsKLSAgICAg
ICAgICAgICRjdXJyZW50VG9rZW4gPSAkMTsKLQotICAgICAgICAgICAgIyBPcGVuIHBhcmVudGhl
c2lzLgotICAgICAgICAgICAgaWYgKCQxIGVxICcoJykgewotICAgICAgICAgICAgICAgICRwYXJl
bnRoZXNlc0RlcHRoKys7Ci0gICAgICAgICAgICAgICAgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGgr
KyBpZiAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3VycmVudFBhcnNpbmdNb2RlXSBlcSAiZ2xvYmFs
IjsKLSAgICAgICAgICAgICAgICAkcG9zc2libGVNZXRob2ROYW1lID0gam9pbignLicsIEBjdXJy
ZW50SWRlbnRpZmllcnMpOwotICAgICAgICAgICAgICAgICRpbkFub255bW91c0Z1bmN0aW9uUGFy
YW1ldGVycyA9IDEgaWYgJGZ1bmN0aW9uSnVzdFNlZW47Ci0gICAgICAgICAgICAgICAgJGZ1bmN0
aW9uSnVzdFNlZW4gPSAwOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICMgQ2xvc2UgcGFyZW50aGVzaXMuCi0gICAgICAgICAgICBpZiAoJDEgZXEg
JyknKSB7Ci0gICAgICAgICAgICAgICAgJHBhcmVudGhlc2VzRGVwdGgtLTsKLSAgICAgICAgICAg
ICAgICAkZ2xvYmFsUGFyZW50aGVzZXNEZXB0aC0tIGlmICRjdXJyZW50UGFyc2luZ01vZGVbJCNj
dXJyZW50UGFyc2luZ01vZGVdIGVxICJnbG9iYWwiOwotICAgICAgICAgICAgICAgIEBjdXJyZW50
SWRlbnRpZmllcnMgPSAoKSBpZiAkaW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnM7Ci0gICAg
ICAgICAgICAgICAgJGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzID0gMDsKLSAgICAgICAg
ICAgICAgICAkcGFyZW50aGVzaXNKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBPcGVuIGJyYWNlLgotICAgICAgICAgICAg
aWYgKCQxIGVxICd7JykgewotICAgICAgICAgICAgICAgIG15ICRtZXRob2ROYW1lID0gIiI7Ci0g
ICAgICAgICAgICAgICAgbXkgJG1vZGUgPSAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3VycmVudFBh
cnNpbmdNb2RlXTsKLQotICAgICAgICAgICAgICAgICMgTWV0aG9kLgotICAgICAgICAgICAgICAg
IGlmICgoJG1vZGUgZXEgJ2NsYXNzJyBvciAkbW9kZSBlcSAnZ2xvYmFsJykgYW5kICRwYXJlbnRo
ZXNpc0p1c3RTZWVuIGFuZCAoJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gb3IgJHBvc3NpYmxlTWV0
aG9kTmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRtb2RlIGVxICdjbGFzcycpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2ROYW1lID0gam9pbignLicsICRzdGF0aWNP
ckNvbnRydWN0b3JTZWVuID8gIiIgOiAicHJvdG90eXBlIiwgJHBvc3NpYmxlTWV0aG9kTmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
bWV0aG9kTmFtZSA9ICRwb3NzaWJsZU1ldGhvZE5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgICAgICAkbWV0aG9kTmFtZSA9fiBzL1wuezIsfS9cLi9nOyAjIFJl
bW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZE5h
bWUgPX4gcy9cLiQvLzsgIyBSZW1vdmUgdHJhaWxpbmcgcGVyaW9kLgotCi0gICAgICAgICAgICAg
ICAgICAgIG15ICRjdXJyZW50TWV0aG9kID0gam9pbignLicsIEBjdXJyZW50U2NvcGVzLCAkbWV0
aG9kTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICRjdXJyZW50TWV0aG9kID1+IHMvXC57Mix9
L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgotICAgICAgICAgICAgICAgICAg
ICAkY3VycmVudE1ldGhvZCA9fiBzL1wuJC8vOyAjIFJlbW92ZSB0cmFpbGluZyBwZXJpb2QuCi0K
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAibWV0aG9kIik7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVu
dE1ldGhvZCk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbkRlcHRo
cywgJGJyYWNlc0RlcHRoKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0
aW9uU3RhcnRMaW5lcywgJC4pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICRicmFjZXNEZXB0aCsrOwotICAgICAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsK
LQotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRTY29wZXMsIGpvaW4oJy4nLCAkbWV0aG9k
TmFtZSA/ICRtZXRob2ROYW1lIDogQGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAg
ICAgIEBjdXJyZW50SWRlbnRpZmllcnMgPSAoKTsKLQotICAgICAgICAgICAgICAgICRzdGF0aWNP
ckNvbnRydWN0b3JTZWVuID0gMDsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAjIENsb3NlIGJyYWNlLgotICAgICAgICAgICAgaWYgKCQxIGVxICd9
JykgewotICAgICAgICAgICAgICAgICRicmFjZXNEZXB0aC0tOwotICAgICAgICAgICAgICAgICRm
dW5jdGlvbkp1c3RTZWVuID0gMDsKLQotICAgICAgICAgICAgICAgIGlmIChAY3VycmVudEZ1bmN0
aW9uRGVwdGhzIGFuZCAkYnJhY2VzRGVwdGggPT0gJGN1cnJlbnRGdW5jdGlvbkRlcHRoc1skI2N1
cnJlbnRGdW5jdGlvbkRlcHRoc10pIHsKLSAgICAgICAgICAgICAgICAgICAgcG9wKEBjdXJyZW50
RnVuY3Rpb25EZXB0aHMpOwotICAgICAgICAgICAgICAgICAgICBwb3AoQGN1cnJlbnRQYXJzaW5n
TW9kZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJGN1cnJlbnROYW1lID0gcG9wKEBjdXJy
ZW50RnVuY3Rpb25OYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRzdGFydCA9IHBvcChA
Y3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgJGN1cnJl
bnROYW1lID1+IHMvXlwuLy9nOyAjIFJlbW92ZXMgbGVhZGluZyBwZXJpb2RzLgotCi0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydCwgJC4sICRjdXJyZW50TmFtZV0pOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHBvcChAY3VycmVudFNjb3Blcyk7
Ci0gICAgICAgICAgICAgICAgQGN1cnJlbnRJZGVudGlmaWVycyA9ICgpOwotCi0gICAgICAgICAg
ICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBEb3QuCi0gICAgICAg
ICAgICBpZiAoJDEgZXEgJy4nKSB7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBTZW1pY29sb24gb3IgY29tbWEuCi0gICAgICAgICAgICBpZiAo
JDEgZXEgJzsnIG9yICQxIGVxICcsJykgewotICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRp
ZmllcnMgPSAoKTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAjIENsYXNzLgotICAgICAgICAgICAgaWYgKCQxIGVxICdjbGFzcycpIHsKLSAgICAg
ICAgICAgICAgICAkY2xhc3NKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBFeHRlbmRzLgotICAgICAgICAgICAgaWYgKCQx
IGVxICdleHRlbmRzJykgewotICAgICAgICAgICAgICAgICRpbkV4dGVuZHMgPSAxOwotICAgICAg
ICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgRnVuY3Rpb24u
Ci0gICAgICAgICAgICBpZiAoJDEgZXEgJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgICAgICRm
dW5jdGlvbkp1c3RTZWVuID0gMTsKLQotICAgICAgICAgICAgICAgIGlmICgkYXNzaWdubWVudEp1
c3RTZWVuKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSBqb2lu
KCcuJywgKEBjdXJyZW50U2NvcGVzLCBAY3VycmVudElkZW50aWZpZXJzKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24gPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNv
bnNlY3V0aXZlIHBlcmlvZHMuCi0KLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBh
cnNpbmdNb2RlLCAiZnVuY3Rpb24iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVu
dEZ1bmN0aW9uTmFtZXMsICRjdXJyZW50RnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0aCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAjIEdldHRlciBwcmVmaXguCi0gICAgICAgICAgICBpZiAoJDEgZXEgJ2dldCcpIHsKLSAg
ICAgICAgICAgICAgICBuZXh0IGlmICRsYXN0VG9rZW4gZXEgJy4nOyAjIEF2b2lkIG1hcC5nZXQo
Li4uKS4KLSAgICAgICAgICAgICAgICAkZ2V0dGVySnVzdFNlZW4gPSAxOwotICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgU2V0dGVyIHByZWZpeC4K
LSAgICAgICAgICAgIGlmICgkMSBlcSAnc2V0JykgewotICAgICAgICAgICAgICAgIG5leHQgaWYg
JGxhc3RUb2tlbiBlcSAnLic7ICMgQXZvaWQgbWFwLnNldCguLi4pLgotICAgICAgICAgICAgICAg
ICRzZXR0ZXJKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBBc3luYyBwcmVmaXguCi0gICAgICAgICAgICBpZiAoJDEgZXEg
J2FzeW5jJykgewotICAgICAgICAgICAgICAgIG5leHQgaWYgJGxhc3RUb2tlbiBlcSAnLic7Ci0g
ICAgICAgICAgICAgICAgJGFzeW5jSnVzdFNlZW4gPSAxOwotICAgICAgICAgICAgICAgIG5leHQ7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgU3RhdGljLgotICAgICAgICAgICAgaWYg
KCQxIGVxICdzdGF0aWMnIG9yICQxIGVxICdjb25zdHJ1Y3RvcicpIHsKLSAgICAgICAgICAgICAg
ICAkc3RhdGljT3JDb250cnVjdG9yU2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBBc3NpZ25tZW50IG9wZXJhdG9yLgotICAgICAg
ICAgICAgaWYgKCQxIGVxICc9JyBvciAkMSBlcSAnOicpIHsKLSAgICAgICAgICAgICAgICAkYXNz
aWdubWVudEp1c3RTZWVuID0gMTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBuZXh0IGlmICRwYXJlbnRoZXNlc0RlcHRoID4gJGdsb2JhbFBhcmVu
dGhlc2VzRGVwdGg7Ci0KLSAgICAgICAgICAgICMgV29yZC4KLSAgICAgICAgICAgICR3b3JkID0g
JDE7Ci0KLSAgICAgICAgICAgIGlmICgkY2xhc3NKdXN0U2VlbikgewotICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdvcmQpIGlmICEkYXNzaWdubWVudEp1c3RTZWVu
OwotCi0gICAgICAgICAgICAgICAgbXkgJGN1cnJlbnRDbGFzcyA9IGpvaW4oJy4nLCAoQGN1cnJl
bnRTY29wZXMsIEBjdXJyZW50SWRlbnRpZmllcnMpKTsKLSAgICAgICAgICAgICAgICAkY3VycmVu
dENsYXNzID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgot
Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAiY2xhc3MiKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRDbGFzcyk7
Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVw
dGgpOwotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQu
KTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRnZXR0ZXJKdXN0U2VlbiBvciAkc2V0dGVySnVzdFNl
ZW4gb3IgJGFzeW5jSnVzdFNlZW4pIHsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJnZXQgJHdv
cmQiIGlmICRnZXR0ZXJKdXN0U2VlbjsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJzZXQgJHdv
cmQiIGlmICRzZXR0ZXJKdXN0U2VlbjsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJhc3luYyAk
d29yZCIgaWYgJGFzeW5jSnVzdFNlZW47Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50
SWRlbnRpZmllcnMsICR3b3JkKTsKLQotICAgICAgICAgICAgICAgIG15ICRtb2RlID0gJGN1cnJl
bnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJzaW5nTW9kZV07Ci0gICAgICAgICAgICAgICAgbXkg
JGN1cnJlbnRGdW5jdGlvbiA9IGpvaW4oJy4nLCAoQGN1cnJlbnRTY29wZXMsICgkbW9kZSBlcSAn
Y2xhc3MnIGFuZCAhJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4pID8gInByb3RvdHlwZSIgOiAiIiwg
QGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24g
PX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCi0KLSAgICAg
ICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJmdW5jdGlvbiIpOwotICAgICAg
ICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVudEZ1bmN0aW9uKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0
aCk7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcywgJC4p
OwotICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uSnVzdFNlZW4gYW5kICEkYXNzaWdubWVu
dEp1c3RTZWVuKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAk
d29yZCk7Ci0KLSAgICAgICAgICAgICAgICBteSAkY3VycmVudEZ1bmN0aW9uID0gam9pbignLics
IChAY3VycmVudFNjb3BlcywgQGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAgICAg
ICRjdXJyZW50RnVuY3Rpb24gPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZl
IHBlcmlvZHMuCi0KLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJm
dW5jdGlvbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAk
Y3VycmVudEZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25E
ZXB0aHMsICRicmFjZXNEZXB0aCk7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0
aW9uU3RhcnRMaW5lcywgJC4pOwotICAgICAgICAgICAgfSBlbHNpZiAoJHdvcmQgbmUgJ2lmJyBh
bmQgJHdvcmQgbmUgJ2ZvcicgYW5kICR3b3JkIG5lICdkbycgYW5kICR3b3JkIG5lICd3aGlsZScg
YW5kICR3b3JkIG5lICd3aGljaCcgYW5kICR3b3JkIG5lICd2YXInKSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAkd29yZCk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICRjbGFzc0p1c3RTZWVuID0gMDsKLSAgICAgICAgICAgICRwYXJlbnRoZXNpc0p1
c3RTZWVuID0gMDsKLSAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsKLSAgICAgICAg
ICAgICRnZXR0ZXJKdXN0U2VlbiA9IDA7Ci0gICAgICAgICAgICAkc2V0dGVySnVzdFNlZW4gPSAw
OwotICAgICAgICAgICAgJGFzeW5jSnVzdFNlZW4gPSAwOwotICAgICAgICAgICAgJGFzc2lnbm1l
bnRKdXN0U2VlbiA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3YXJuICJtaXNtYXRjaGVk
IGJyYWNlcyBpbiAkZmlsZU5hbWVcbiIgaWYgJGJyYWNlc0RlcHRoOwotICAgIHdhcm4gIm1pc21h
dGNoZWQgcGFyZW50aGVzZXMgaW4gJGZpbGVOYW1lXG4iIGlmICRwYXJlbnRoZXNlc0RlcHRoOwot
Ci0gICAgcmV0dXJuIEByYW5nZXM7Ci19Ci0KLSMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhl
IGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgUGVybCBmdW5jdGlvbnMu
IEZ1bmN0aW9ucwotIyBzdGFydCBvbiBhIGxpbmUgdGhhdCBzdGFydHMgd2l0aCAic3ViICIsIGFu
ZCBlbmQgb24gdGhlIGZpcnN0IGxpbmUgc3RhcnRpbmcgd2l0aCAifSIgdGhlcmVhZnRlci4KLSMK
LSMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBm
dW5jdGlvbiBdLgotCi1zdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9wZXJsKCQkKQot
ewotICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdl
czsKLQotICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSAiIjsKLSAgICBteSAkc3RhcnQgPSAwOwot
ICAgIG15ICRoZXJlRG9jdW1lbnRJZGVudGlmaWVyID0gIiI7Ci0KLSAgICB3aGlsZSAoPCRmaWxl
SGFuZGxlPikgewotICAgICAgICBjaG9tcDsKLSAgICAgICAgaWYgKCEkaGVyZURvY3VtZW50SWRl
bnRpZmllcikgewotICAgICAgICAgICAgaWYgKC9ec3ViXHMrKFtcd19dW1x3XGRfXSopLykgewot
ICAgICAgICAgICAgICAgICMgU2tpcCBvdmVyIGZvcndhcmQgZGVjbGFyYXRpb25zLCB3aGljaCBk
b24ndCBjb250YWluIGEgYnJhY2UgYW5kIGVuZCB3aXRoIGEgc2VtaWNvbG9uLgotICAgICAgICAg
ICAgICAgIG5leHQgaWYgLztccyokLzsKLQotICAgICAgICAgICAgICAgIGlmICgkY3VycmVudEZ1
bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4gIm5lc3RlZCBmdW5jdGlvbnMgZm91
bmQgYXQgdG9wLWxldmVsIGF0ICRmaWxlTmFtZTokLlxuIjsKLSAgICAgICAgICAgICAgICAgICAg
bmV4dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlv
biA9ICQxOwotICAgICAgICAgICAgICAgICRzdGFydCA9ICQuOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKC88PFxzKltcIlwnXT8oW1x3X11bXHdfXGRdKikvKSB7Ci0gICAgICAgICAg
ICAgICAgIyBFbnRlciBoZXJlLWRvY3VtZW50LgotICAgICAgICAgICAgICAgICRoZXJlRG9jdW1l
bnRJZGVudGlmaWVyID0gJDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaW5kZXgo
JF8sICJ9IikgPT0gMCkgewotICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRzdGFydDsKLSAg
ICAgICAgICAgICAgICBwdXNoKEByYW5nZXMsIFskc3RhcnQsICQuLCAkY3VycmVudEZ1bmN0aW9u
XSk7Ci0gICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOwotICAgICAgICAgICAg
ICAgICRzdGFydCA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRfIGVxICRo
ZXJlRG9jdW1lbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAjIEVzY2FwZSBmcm9tIGhlcmUt
ZG9jdW1lbnQuCi0gICAgICAgICAgICAkaGVyZURvY3VtZW50SWRlbnRpZmllciA9ICIiOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEByYW5nZXM7Ci19Ci0KLSMgUmVhZCBhIGZpbGUg
YW5kIGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2Ug
UHl0aG9uIGNsYXNzZXMsIG1ldGhvZHMsIG9yIGZ1bmN0aW9ucy4KLSMKLSMgRklYTUU6IE1heWJl
IHdlIHNob3VsZCB1c2UgUHl0aG9uJ3MgYXN0IG1vZHVsZSB0byBkbyB0aGUgcGFyc2luZyBmb3Ig
dXM/Ci0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRf
bGluZSwgZnVuY3Rpb24gXS4KLQotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcHl0
aG9uKCQkKQotewotICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAg
bXkgQHJhbmdlczsKLQotICAgIG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU2VudGluZWxSZWdF
eCA9IHFyIyg/OiIiInwnJycpIzsKLSAgICBteSAkbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFN0YXJ0
UmVnRXggPSBxciNccyokbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXgjOwotICAg
IG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXggPSBxciMkbXVsdGlsaW5lU3RyaW5n
TGl0ZXJhbFNlbnRpbmVsUmVnRXhccyokIzsKLQotICAgIG15IEBzY29wZVN0YWNrID0gKHsgbGlu
ZSA9PiAwLCBpbmRlbnQgPT4gLTEsIG5hbWUgPT4gdW5kZWYgfSk7Ci0gICAgbXkgJGxhc3RMaW5l
ID0gMDsKLSAgICBteSAkaW5Db21tZW50ID0gMDsKLSAgICB1bnRpbCAoJGxhc3RMaW5lKSB7Ci0g
ICAgICAgICRfID0gPCRmaWxlSGFuZGxlPjsKLSAgICAgICAgdW5sZXNzICgkXykgewotICAgICAg
ICAgICAgIyBUbyBwb3Agb3V0IGFsbCBwb3BwZWQgc2NvcGVzLCBydW4gdGhlIGxvb3Agb25jZSBt
b3JlIGFmdGVyCi0gICAgICAgICAgICAjIHdlIGVuY291bnRlcmVkIHRoZSBlbmQgb2YgdGhlIGZp
bGUuCi0gICAgICAgICAgICAkXyA9ICJwYXNzXG4iOwotICAgICAgICAgICAgJC4rKzsKLSAgICAg
ICAgICAgICRsYXN0TGluZSA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgY2hvbXA7Ci0gICAgICAg
IG5leHQgdW5sZXNzIC9eKFxzKikoW14jXS4qKSQvOyAjIFNraXAgbm9uLWluZGVudGVkIGxpbmVz
IHRoYXQgYmVnaW4gd2l0aCBhIGNvbW1lbnQuCi0KLSAgICAgICAgbXkgJGluZGVudCA9IGxlbmd0
aCAkMTsKLSAgICAgICAgbXkgJHJlc3QgPSAkMjsKLSAgICAgICAgbXkgJHNjb3BlID0gJHNjb3Bl
U3RhY2tbLTFdOwotCi0gICAgICAgIGlmICgkaW5kZW50IDw9ICRzY29wZS0+e2luZGVudH0pIHsK
LSAgICAgICAgICAgICMgRmluZCBhbGwgdGhlIHNjb3BlcyB0aGF0IHdlIGhhdmUganVzdCBleGl0
ZWQuCi0gICAgICAgICAgICBteSAkaSA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgJGkgPCBAc2Nv
cGVTdGFjazsgKyskaSkgewotICAgICAgICAgICAgICAgIGxhc3QgaWYgJGluZGVudCA8PSAkc2Nv
cGVTdGFja1skaV0tPntpbmRlbnR9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbXkgQHBv
cHBlZFNjb3BlcyA9IHNwbGljZSBAc2NvcGVTdGFjaywgJGk7Ci0KLSAgICAgICAgICAgICMgRm9y
IGVhY2ggc2NvcGUgdGhhdCB3YXMganVzdCBleGl0ZWQsIGFkZCBhIHJhbmdlIHRoYXQgZ29lcyBm
cm9tIHRoZSBzdGFydCBvZiB0aGF0Ci0gICAgICAgICAgICAjIHNjb3BlIHRvIHRoZSBzdGFydCBv
ZiB0aGUgbmV4dCBuZXN0ZWQgc2NvcGUsIG9yIHRvIHRoZSBsaW5lIGp1c3QgYmVmb3JlIHRoaXMg
b25lIGZvcgotICAgICAgICAgICAgIyB0aGUgaW5uZXJtb3N0IHNjb3BlLgotICAgICAgICAgICAg
Zm9yICgkaSA9IDA7ICRpIDwgQHBvcHBlZFNjb3BlczsgKyskaSkgewotICAgICAgICAgICAgICAg
IG15ICRsaW5lQWZ0ZXJFbmQgPSAkaSArIDEgPT0gQHBvcHBlZFNjb3BlcyA/ICQuIDogJHBvcHBl
ZFNjb3Blc1skaSArIDFdLT57bGluZX07Ci0gICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBb
JHBvcHBlZFNjb3Blc1skaV0tPntsaW5lfSwgJGxpbmVBZnRlckVuZCAtIDEsICRwb3BwZWRTY29w
ZXNbJGldLT57bmFtZX1dOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQHNjb3BlU3RhY2sg
b3Igd2FybiAiUG9wcGVkIG9mZiBsYXN0IHNjb3BlIGF0ICRmaWxlTmFtZTokLlxuIjsKLQotICAg
ICAgICAgICAgIyBTZXQgdGhlIG5vdy1jdXJyZW50IHNjb3BlIHRvIHN0YXJ0IGF0IHRoZSBjdXJy
ZW50IGxpbmUuIEFueSBsaW5lcyB3aXRoaW4gdGhpcyBzY29wZQotICAgICAgICAgICAgIyBiZWZv
cmUgdGhpcyBwb2ludCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8gQHJhbmdlcy4K
LSAgICAgICAgICAgICRzY29wZSA9ICRzY29wZVN0YWNrWy0xXTsKLSAgICAgICAgICAgICRzY29w
ZS0+e2xpbmV9ID0gJC47Ci0gICAgICAgIH0KLQotICAgICAgICAjIFNraXAgbXVsdGktbGluZSBz
dHJpbmcgbGl0ZXJhbHMgYW5kIGRvY3N0cmluZ3MuCi0gICAgICAgIG5leHQgaWYgLyRtdWx0aWxp
bmVTdHJpbmdMaXRlcmFsU3RhcnRSZWdFeC4qJG11bHRpbGluZVN0cmluZ0xpdGVyYWxFbmRSZWdF
eC87Ci0gICAgICAgIGlmICghJGluQ29tbWVudCAmJiAvJG11bHRpbGluZVN0cmluZ0xpdGVyYWxT
dGFydFJlZ0V4LykgewotICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7Ci0gICAgICAgIH0gZWxz
aWYgKCRpbkNvbW1lbnQgJiYgLyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXgvKSB7Ci0g
ICAgICAgICAgICAkaW5Db21tZW50ID0gMDsKLSAgICAgICAgfQotICAgICAgICBuZXh0IGlmICRp
bkNvbW1lbnQ7Ci0KLSAgICAgICAgbmV4dCBpZiAvXlxzKlsjJyJdLzsgIyBTa2lwIGluZGVudGVk
IGFuZCBub24taW5kZW50ZWQgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGEgY29tbWVudCBvciBzdHJp
bmcgbGl0ZXJhbCAoaW5jbHVkZXMgZG9jc3RyaW5ncykuCi0KLSAgICAgICAgbmV4dCB1bmxlc3Mg
JHJlc3QgPX4gLyg/OmNsYXNzfGRlZilccysoXHcrKS87Ci0gICAgICAgIG15ICRuYW1lID0gJDE7
Ci0gICAgICAgIG15ICRmdWxsTmFtZSA9ICRzY29wZS0+e25hbWV9ID8gam9pbignLicsICRzY29w
ZS0+e25hbWV9LCAkbmFtZSkgOiAkbmFtZTsKLSAgICAgICAgcHVzaCBAc2NvcGVTdGFjaywgeyBs
aW5lID0+ICQuLCBpbmRlbnQgPT4gJGluZGVudCwgbmFtZSA9PiAkZnVsbE5hbWUgfTsKLQotICAg
ICAgICBpZiAoJHNjb3BlLT57aW5kZW50fSA+PSAwKSB7Ci0gICAgICAgICAgICBwdXNoIEByYW5n
ZXMsIFskc2NvcGUtPntsaW5lfSwgJC4gLSAxLCAkc2NvcGUtPntuYW1lfV07Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gQHJhbmdlczsKLX0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0
IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDU1Mgc2Vs
ZWN0b3JzLiAgQSBzZWxlY3RvciBpcwotIyBhbnl0aGluZyBiZWZvcmUgYW4gb3BlbmluZyBicmFj
ZSBvbiBhIGxpbmUuIEEgc2VsZWN0b3Igc3RhcnRzIGF0IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhl
IG9wZW5pbmcKLSMgYnJhY2UgYW5kIGVuZHMgYXQgdGhlIGNsb3NpbmcgYnJhY2UuCi0jCi0jIFJl
c3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgc2VsZWN0
b3IgXS4KLQotc3ViIGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKCQkKQotewotICAg
IG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdlczsKLQot
ICAgIG15ICRpbkNvbW1lbnQgPSAwOwotICAgIG15ICRpbkJyYWNlID0gMDsKLSAgICBteSBAc3Rh
Y2s7Ci0gICAgbXkgJGNvbnRleHQ7Ci0gICAgbXkgQGN1cnJlbnRQYXJzZU1vZGUgPSAoImdsb2Jh
bCIpOwotICAgIG15IEBncm91cGluZ1N0YWNrOwotICAgIG15ICRzZWxlY3RvckJyYWNlcyA9IDA7
Ci0KLSAgICB3aGlsZSAoPCRmaWxlSGFuZGxlPikgewotICAgICAgICBmb3JlYWNoIG15ICR0b2tl
biAoc3BsaXQgbS0oXHt8XH18L1wqfFwqLyktLCAkXykgewotICAgICAgICAgICAgaWYgKCR0b2tl
biBlcSAieyIpIHsKLSAgICAgICAgICAgICAgICBpZiAoISRpbkNvbW1lbnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgJGluQnJhY2UgKz0gMTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAkc2VsZWN0b3JCcmFjZXMgKz0gMSBpZiAkY3VycmVudFBhcnNlTW9kZVskI2N1
cnJlbnRQYXJzZU1vZGVdIGVxICJzZWxlY3RvciI7Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4g
Im1pc21hdGNoZWQgb3BlbmluZyBicmFjZSBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYgJHNl
bGVjdG9yQnJhY2VzID4gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lm
ICgkdG9rZW4gZXEgIn0iKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghJGluQnJhY2Ugb3IgJGN1cnJlbnRQYXJzZU1vZGVbJCNj
dXJyZW50UGFyc2VNb2RlXSBlcSAiZ2xvYmFsIikgewotICAgICAgICAgICAgICAgICAgICAgICAg
d2FybiAibWlzbWF0Y2hlZCBjbG9zaW5nIGJyYWNlIGZvdW5kIGluICRmaWxlTmFtZTokLlxuIjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICAkaW5CcmFjZSAtPSAxOwotCi0gICAgICAgICAgICAgICAgICAg
IG15ICRwYXJzZU1vZGUgPSBwb3AoQGN1cnJlbnRQYXJzZU1vZGUpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoJHBhcnNlTW9kZSBlcSAic2VsZWN0b3IiKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBteSAkbmFtZSA9IHBvcChAc3RhY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkg
JHN0YXJ0TGluZSA9IHBvcChAc3RhY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGVu
ZExpbmUgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRncm91cGluZ1ByZWZpeCA9
IGpvaW4oIiAiLCBAZ3JvdXBpbmdTdGFjayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGVuZ3RoICRncm91cGluZ1ByZWZpeCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRn
cm91cGluZ1ByZWZpeCAuPSAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydExpbmUsICRlbmRMaW5lLCAkZ3Jv
dXBpbmdQcmVmaXggLiAkbmFtZV0pOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcGFy
c2VNb2RlIGVxICJtZWRpYSIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvcChAZ3JvdXBp
bmdTdGFjayk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAk
c2VsZWN0b3JCcmFjZXMgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxz
aWYgKCR0b2tlbiBlcSAiLyoiKSB7Ci0gICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7Ci0g
ICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIiovIikgewotICAgICAgICAgICAgICAgIHdh
cm4gIm1pc21hdGNoZWQgY29tbWVudCBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYgISRpbkNv
bW1lbnQ7Ci0gICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGlmICghJGluQ29tbWVudCBhbmQgJGN1cnJlbnRQYXJzZU1v
ZGVbJCNjdXJyZW50UGFyc2VNb2RlXSBuZSAic2VsZWN0b3IiIGFuZCAkdG9rZW4gIX4gL15bXHNc
dF0qJC8pIHsKLSAgICAgICAgICAgICAgICAgICAgJHRva2VuID1+IHMvXltcc1x0XSp8W1xzXHRd
KiQvL2c7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRzdGFydExpbmUgPSAkLjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCR0b2tlbiA9fiAvXlxAbWVkaWEvKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2VNb2RlLCAibWVkaWEiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGdyb3VwaW5nU3RhY2ssICR0b2tlbik7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2VN
b2RlLCAic2VsZWN0b3IiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQHN0YWNrLCAo
JHN0YXJ0TGluZSwgJHRva2VuKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAjIFNvcnQgYnkg
c3RhcnQgbGluZS4KLSAgICByZXR1cm4gc29ydCB7JGEtPlswXSA8PT4gJGItPlswXX0gQHJhbmdl
czsKLX0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhl
IHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBTd2lmdCBjbGFzc2VzLCBtZXRob2RzLAotIyBvciBmdW5j
dGlvbnMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBl
bmRfbGluZSwgZnVuY3Rpb24gXS4KLQotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jf
c3dpZnQoJCQpCi17Ci0gICAgbXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87Ci0KLSAg
ICBteSBAcmFuZ2VzOwotCi0gICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOwotICAgIG15ICRj
dXJyZW50VHlwZSA9ICIiOwotICAgIG15ICRmdW5jdGlvblN0YXJ0ID0gMDsKLSAgICBteSAkdHlw
ZVN0YXJ0ID0gMDsKLSAgICBteSAkZnVuY3Rpb25TY29wZURlcHRoID0gMDsKLSAgICBteSAkdHlw
ZVNjb3BlRGVwdGggPSAwOwotICAgIG15ICRzY29wZURlcHRoID0gMDsKLQotICAgIHdoaWxlICg8
JGZpbGVIYW5kbGU+KSB7Ci0gICAgICAgIGNob21wOwotICAgICAgICBuZXh0IGlmICgvXlxzKlwv
XC8uKi8pOwotICAgICAgICBpZiAoL2Z1bmNccysoW1x3X11bXHdcZF9dKilcKCguKilcKS8gfHwg
L3ZhclxzKyhbXHdfXVtcd1xkX10qKTpccysvKSB7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TY29w
ZURlcHRoID0gJHNjb3BlRGVwdGg7Ci0gICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gJDE7
Ci0gICAgICAgICAgICBpZiAoJDIpIHsKLSAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9u
ID0gIiRjdXJyZW50RnVuY3Rpb24oIi4gcGFyc2VTd2lmdEZ1bmN0aW9uQXJncygkMikgLiAiKSI7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoJGN1cnJlbnRUeXBlKSB7Ci0gICAgICAg
ICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIkY3VycmVudFR5cGUuJGN1cnJlbnRGdW5jdGlv
biI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9ICQuOwotICAg
ICAgICB9IGVsc2lmICgvKD86Y2xhc3N8c3RydWN0fGVudW18cHJvdG9jb2x8ZXh0ZW5zaW9uKVxz
KyhbXHdfXVtcd1xkX10qKS8pIHsKLSAgICAgICAgICAgICR0eXBlU2NvcGVEZXB0aCA9ICRzY29w
ZURlcHRoOwotICAgICAgICAgICAgJGN1cnJlbnRUeXBlID0gJDE7Ci0gICAgICAgICAgICAkdHlw
ZVN0YXJ0ID0gJC47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4KCRfLCAieyIpID4gLTEp
IHsKLSAgICAgICAgICAgICRzY29wZURlcHRoKys7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlu
ZGV4KCRfLCAifSIpID4gLTEpIHsKLSAgICAgICAgICAgICRzY29wZURlcHRoLS07Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCRzY29wZURlcHRoID09ICRmdW5jdGlvblNjb3BlRGVwdGgpIHsKLSAg
ICAgICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvblN0YXJ0OwotICAgICAgICAgICAgcHVzaChA
cmFuZ2VzLCBbJGZ1bmN0aW9uU3RhcnQsICQuLCAkY3VycmVudEZ1bmN0aW9uXSk7Ci0gICAgICAg
ICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiI7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9
IDA7Ci0gICAgICAgIH0gZWxzaWYgKCRzY29wZURlcHRoID09ICR0eXBlU2NvcGVEZXB0aCkgewot
ICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHR5cGVTdGFydDsKLSAgICAgICAgICAgICRjdXJyZW50
VHlwZSA9ICIiOwotICAgICAgICAgICAgJHR5cGVTdGFydCA9IDA7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gQHJhbmdlczsKLX0KLQotc3ViIHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3Mo
JCkKLXsKLSAgICBteSAoJGZ1bmN0aW9uQXJncykgPSBAXzsKLSAgICBteSBAd29yZHMgPSBzcGxp
dCAvLCAvLCAkZnVuY3Rpb25BcmdzOwotICAgIG15ICRhcmdDb3VudCA9IHNjYWxhcihAd29yZHMp
OwotICAgIGlmICgkYXJnQ291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSBl
bHNpZiAoJGFyZ0NvdW50ID4gMCkgewotICAgICAgICAjIElmIHRoZSBmaXJzdCBhcmd1bWVudCBp
cyB1bm5hbWVkLCBnaXZlIGl0IHRoZSBuYW1lICJfIgotICAgICAgICAkd29yZHNbMF0gPX4gcy9e
KFx3KzogLiopL18gJDEvOwotICAgICAgICByZXR1cm4gam9pbigiIiwgbWFwIHsgJF8gPX4gcy9e
KFx3KykuKi8kMS87ICIkXzoiIH0gQHdvcmRzKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3YXJu
ICJVbmtub3duIGFyZ3VtZW50IGNvdW50LlxuIjsKLSAgICB9Ci19Ci0KIHN1YiBwcm9jZXNzUGF0
aHMoXEApCiB7CiAgICAgbXkgKCRwYXRocykgPSBAXzsKQEAgLTIwODYsOCArNjc2LDggQEAgc3Vi
IGRpZmZDb21tYW5kKCQkJCQpCiB7CiAgICAgbXkgKCRwYXRocywgJGdpdENvbW1pdCwgJGdpdElu
ZGV4LCAkbWVyZ2VCYXNlKSA9IEBfOwogCi0gICAgIyBUaGUgZnVuY3Rpb24gb3ZlcmxhcCBkZXRl
Y3Rpb24gbG9naWMgaW4gY29tcHV0ZU1vZGlmaWVkRnVuY3Rpb25zKCkgYXNzdW1lcyB0aGF0IGl0
cyBsaW5lCi0gICAgIyByYW5nZXMgd2VyZSBmcm9tIGEgdW5pZmllZCBkaWZmIHdpdGhvdXQgYW55
IGNvbnRleHQgbGluZXMuCisgICAgIyBUaGUgZnVuY3Rpb24gb3ZlcmxhcCBkZXRlY3Rpb24gbG9n
aWMgaW4gd2Via2l0cGVybDo6Y2hhbmdlbG9nOjpjb21wdXRlTW9kaWZpZWRGdW5jdGlvbnMoKQor
ICAgICMgYXNzdW1lcyB0aGF0IGl0cyBsaW5lIHJhbmdlcyB3ZXJlIGZyb20gYSB1bmlmaWVkIGRp
ZmYgd2l0aG91dCBhbnkgY29udGV4dCBsaW5lcy4KICAgICBteSAkY29tbWFuZDsKICAgICBpZiAo
aXNTVk4oKSkgewogICAgICAgICBteSBAZXNjYXBlZFBhdGhzID0gbWFwKGVzY2FwZVN1YnZlcnNp
b25QYXRoKCRfKSwgQCRwYXRocyk7CkBAIC0yMTIwLDQ3ICs3MTAsNiBAQCBzdWIgc3RhdHVzQ29t
bWFuZCgkJCQkKQogICAgIHJldHVybiAiJGNvbW1hbmQgMj4mMSI7CiB9CiAKLXN1YiBhdHRyaWJ1
dGVDb21tYW5kKCQkJCkKLXsKLSAgICBteSAoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZSwgJGF0dHIp
ID0gQF87Ci0KLSAgICBteSAkcmVzdWx0OwotICAgIGlmIChpc1NWTigpKSB7Ci0gICAgICAgIG15
ICRkZXZOdWxsID0gRmlsZTo6U3BlYy0+ZGV2bnVsbCgpOwotICAgICAgICBteSAkZm91bmRBdHRy
aWJ1dGUgPSAwOwotICAgICAgICBteSAkc3ViUGF0aCA9ICIuIjsKLSAgICAgICAgbXkgKEBkaXJl
Y3RvcnlQYXJ0cykgPSBGaWxlOjpTcGVjLT5zcGxpdGRpcigkZmlsZSk7Ci0gICAgICAgIGZvcmVh
Y2ggbXkgJHBhcnQgKEBkaXJlY3RvcnlQYXJ0cykgewotICAgICAgICAgICAgaWYgKCRwYXJ0IGVx
ICIuIikgewotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAkc3ViUGF0aCA9IEZpbGU6OlNwZWMtPmpvaW4oJHN1YlBhdGgsICRwYXJ0KTsKLSAgICAgICAg
ICAgICRzdWJQYXRoID1+IHMvXlwuXC8vLzsKLSAgICAgICAgICAgIGlmICgkZm91bmRBdHRyaWJ1
dGUgfHwgZXhpc3RzICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gJiYgJGF0dHJp
YnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSBlcSAiMSIpIHsKLSAgICAgICAgICAgICAgICAk
YXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JHN1YlBhdGh9ID0gIjEiOwotICAgICAgICAgICAgICAg
ICRmb3VuZEF0dHJpYnV0ZSA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG15ICRjb21tYW5kID0gU1ZOIC4gIiBwcm9wZ2V0ICRhdHRyICckc3Vi
UGF0aCciOwotICAgICAgICAgICAgbXkgJGF0dHJpYiA9ICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRy
fXskc3ViUGF0aH0gfHwgYCRjb21tYW5kIDI+ICRkZXZOdWxsYDsKLSAgICAgICAgICAgIGNob21w
ICRhdHRyaWI7Ci0gICAgICAgICAgICBpZiAoJGF0dHJpYiBlcSAiMSIpIHsKLSAgICAgICAgICAg
ICAgICAkZm91bmRBdHRyaWJ1dGUgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgJGF0
dHJpYnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSA9ICRhdHRyaWIgfHwgIjAiOwotICAgICAg
ICB9Ci0gICAgICAgICRyZXN1bHQgPSAkYXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JGZpbGV9Owot
ICAgIH0gZWxzaWYgKGlzR2l0KCkpIHsKLSAgICAgICAgbXkgJGNvbW1hbmQgPSBHSVQgLiAiIGNo
ZWNrLWF0dHIgJGF0dHIgLS0gJyRmaWxlJyI7Ci0gICAgICAgICRyZXN1bHQgPSBgJGNvbW1hbmRg
OwotICAgICAgICBjaG9tcCAkcmVzdWx0OwotICAgICAgICAkcmVzdWx0ID1+IHMvLipcVyhcdykv
JDEvOwotICAgIH0KLQotICAgICRyZXN1bHQgPX4gcy9cRC8vZzsKLSAgICByZXR1cm4gaW50KCRy
ZXN1bHQgfHwgMCk7Ci19Ci0KIHN1YiBjcmVhdGVQYXRjaENvbW1hbmQoJCQkJCkKIHsKICAgICBt
eSAoJGNoYW5nZWRGaWxlc1N0cmluZywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNl
KSA9IEBfOwpAQCAtMjQ1OSwzNCArMTAwOCw2IEBAIHN1YiBwcm9wZXJ0eUNoYW5nZURlc2NyaXB0
aW9uKCQpCiAgICAgcmV0dXJuICRkZXNjcmlwdGlvbjsKIH0KIAotc3ViIGV4dHJhY3RMaW5lUmFu
Z2VBZnRlckNoYW5nZSgkKQotewotICAgIG15ICgkc3RyaW5nKSA9IEBfOwotICAgIG15ICRjaHVu
a1JhbmdlID0gcGFyc2VDaHVua1JhbmdlKCRzdHJpbmcpOwotICAgIGlmICghJGNodW5rUmFuZ2Up
IHsKLSAgICAgICAgcmV0dXJuICgtMSwgLTEpOyAjIE1hbGZvcm1lZAotICAgIH0KLSAgICBpZiAo
ISRjaHVua1JhbmdlLT57bmV3U3RhcnRpbmdMaW5lfSB8fCAhJGNodW5rUmFuZ2UtPntuZXdMaW5l
Q291bnR9KSB7Ci0gICAgICAgICAjIERlbGV0aW9uOyBubyBsaW5lcyBleGlzdCBhZnRlciBjaGFu
Z2UuCi0gICAgICAgIHJldHVybiAoJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9LCAkY2h1
bmtSYW5nZS0+e25ld1N0YXJ0aW5nTGluZX0pOwotICAgIH0KLSAgICByZXR1cm4gKCRjaHVua1Jh
bmdlLT57bmV3U3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9ICsg
JGNodW5rUmFuZ2UtPntuZXdMaW5lQ291bnR9IC0gMSk7Ci19Ci0KLXN1YiBleHRyYWN0TGluZVJh
bmdlQmVmb3JlQ2hhbmdlKCQpCi17Ci0gICAgbXkgKCRzdHJpbmcpID0gQF87Ci0gICAgbXkgJGNo
dW5rUmFuZ2UgPSBwYXJzZUNodW5rUmFuZ2UoJHN0cmluZyk7Ci0gICAgaWYgKCEkY2h1bmtSYW5n
ZSkgewotICAgICAgICByZXR1cm4gKC0xLCAtMSk7ICMgTWFsZm9ybWVkCi0gICAgfQotICAgIGlm
ICghJGNodW5rUmFuZ2UtPntzdGFydGluZ0xpbmV9IHx8ICEkY2h1bmtSYW5nZS0+e2xpbmVDb3Vu
dH0pIHsKLSAgICAgICAgIyBBZGRpdGlvbjsgbm8gbGluZXMgZXhpc3RlZCBiZWZvcmUgY2hhbmdl
LgotICAgICAgICByZXR1cm4gKCRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSwgJGNodW5rUmFu
Z2UtPntzdGFydGluZ0xpbmV9KTsKLSAgICB9Ci0gICAgcmV0dXJuICgkY2h1bmtSYW5nZS0+e3N0
YXJ0aW5nTGluZX0sICRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSArICRjaHVua1JhbmdlLT57
bGluZUNvdW50fSAtIDEpOwotfQotCiBzdWIgdGVzdExpc3RGb3JDaGFuZ2VMb2coQCkKIHsKICAg
ICBteSAoQHRlc3RzKSA9IEBfOwpAQCAtMjU3MywxNCArMTA5NCwzIEBAIHN1YiBub3JtYWxpemVM
aW5lRW5kaW5ncygkJCkKICAgICAkc3RyaW5nID1+IHMvXHI/XG4vJGVuZGwvZzsKICAgICByZXR1
cm4gJHN0cmluZzsKIH0KLQotc3ViIGRlY29kZUVudGl0aWVzKCQpCi17Ci0gICAgbXkgKCR0ZXh0
KSA9IEBfOwotICAgICR0ZXh0ID1+IHMvXCZsdDsvPC9nOwotICAgICR0ZXh0ID1+IHMvXCZndDsv
Pi9nOwotICAgICR0ZXh0ID1+IHMvXCZxdW90Oy9cIi9nOwotICAgICR0ZXh0ID1+IHMvXCZhcG9z
Oy9cJy9nOwotICAgICR0ZXh0ID1+IHMvXCZhbXA7L1wmL2c7Ci0gICAgcmV0dXJuICR0ZXh0Owot
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MgYi9Ub29scy9TY3JpcHRzL3J1
bi1sZWFrcwppbmRleCAyMDVmYzY0ZTJlNGEuLmU5NDM5YzExODMyZSAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy9ydW4tbGVha3MKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MKQEAgLTMz
LDExICszMywxMiBAQCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBH
ZXRvcHQ6Okxvbmc7Cit1c2UgQ2FycDsKK3VzZSBGaW5kQmluOwordXNlIGxpYiAkRmluZEJpbjo6
UmVhbEJpbjsKK3VzZSB3ZWJraXRwZXJsOjpsZWFrcyBxdyhydW5MZWFrcywgcGFyc2VMZWFrc091
dHB1dCk7CiAKLXN1YiBydW5MZWFrcygkJCk7Ci1zdWIgcGFyc2VMZWFrc091dHB1dChcQCk7CiBz
dWIgcmVtb3ZlTWF0Y2hpbmdSZWNvcmRzKFxAJFxAKTsKLXN1YiByZXBvcnRFcnJvcigkKTsKIAog
c3ViIG1haW4oKQogewpAQCAtNzEsNyArNzIsNyBAQCBzdWIgbWFpbigpCiAgICAgfQogCiAgICAg
aWYgKCEkcGlkT3JFeGVjdXRhYmxlTmFtZSkgewotICAgICAgICByZXBvcnRFcnJvcigiTWlzc2lu
ZyBhcmd1bWVudDogcGlkIHwgZXhlY3V0YWJsZS4iKTsKKyAgICAgICAgY2FycCAiTWlzc2luZyBh
cmd1bWVudDogcGlkIHwgZXhlY3V0YWJsZS4iOwogICAgICAgICBwcmludCBTVERFUlIgJHVzYWdl
OwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC04Myw5ICs4NCw2IEBAIHN1YiBtYWluKCkK
ICAgICB9CiAKICAgICBteSAkcGFyc2VkT3V0cHV0ID0gcGFyc2VMZWFrc091dHB1dChAJGxlYWtz
T3V0cHV0KTsKLSAgICBpZiAoISRwYXJzZWRPdXRwdXQpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgfQogCiAgICAgIyBGaWx0ZXIgb3V0cHV0LgogICAgICMgRklYTUU6IEFkanVzdCB0aGUgb3Zl
cmFsbCBsZWFrIGNvdW50IGluIHRoZSBvdXRwdXQgYWNjb3JkaW5nbHkuIFRoaXMgd2lsbCBhZmZl
Y3QgY2FsbGVycywgbm90YWJseSBsZWFrZGV0ZWN0b3IucHkuCkBAIC0xMTQsMTExICsxMTIsNiBA
QCBzdWIgbWFpbigpCiAKIGV4aXQobWFpbigpKTsKIAotIyBSZXR1cm5zIHRoZSBvdXRwdXQgb2Yg
dGhlIGxlYWtzIHRvb2wgaW4gbGlzdCBmb3JtLgotc3ViIHJ1bkxlYWtzKCQkKQotewotICAgIG15
ICgkdGFyZ2V0LCAkbWVtZ3JhcGhQYXRoKSA9IEBfOwotCi0gICAgaWYgKGRlZmluZWQgJG1lbWdy
YXBoUGF0aCkgewotICAgICAgICBgL3Vzci9iaW4vbGVha3MgXCIkdGFyZ2V0XCIgLS1vdXRwdXRH
cmFwaD1cIiRtZW1ncmFwaFBhdGhcImA7Ci0gICAgICAgICR0YXJnZXQgPSAkbWVtZ3JhcGhQYXRo
OwotICAgIH0KLQotICAgICMgVG8gZ2V0IGEgcmVzdWx0IHdlIGNhbiBwYXJzZSwgd2UgbmVlZCB0
byBwYXNzIC0tbGlzdCB0byBhbGwgdmVyc2lvbnMgb2YgdGhlIGxlYWtzIHRvb2wKLSAgICAjIHRo
YXQgcmVjb2duaXplIGl0LCBidXQgdGhlcmUgaXMgbm8gY2VydGFpbiB3YXkgdG8gdGVsbCBpbiBh
ZHZhbmNlICh0aGUgdmVyc2lvbiBvZiB0aGUKLSAgICAjIHRvb2wgaXMgbm90IGFsd2F5cyB0aWVk
IHRvIE9TIHZlcnNpb24sIGFuZCAtLWhlbHAgZG9lc24ndCBkb2N1bWVudCB0aGUgb3B0aW9uIGlu
IHNvbWUKLSAgICAjIG9mIHRoZSB0b29sIHZlcnNpb25zIHdoZXJlIGl0J3Mgc3VwcG9ydGVkIGFu
ZCBuZWVkZWQpLgotICAgIG15IEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJn
ZXRcIiAtLWxpc3RgOwotCi0gICAgIyBGSVhNRTogUmVtb3ZlIHRoZSBmYWxsYmFjayBvbmNlIG1h
Y09TIE1vamF2ZSBpcyB0aGUgb2xkZXN0IHN1cHBvcnRlZCB2ZXJzaW9uLgotICAgIG15ICRsZWFr
c0V4aXRDb2RlID0gJD8gPj4gODsKLSAgICBpZiAoJGxlYWtzRXhpdENvZGUgPiAxKSB7Ci0gICAg
ICAgIEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJnZXRcImA7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIFxAbGVha3NPdXRwdXQ7Ci19Ci0KLSMgUmV0dXJucyBhIGxpc3Qgb2YgaGFz
aCByZWZlcmVuY2VzIHdpdGggdGhlIGtleXMgeyBhZGRyZXNzLCBzaXplLCB0eXBlLCBjYWxsU3Rh
Y2ssIGxlYWtzT3V0cHV0IH0KLXN1YiBwYXJzZUxlYWtzT3V0cHV0KFxAKQotewotICAgIG15ICgk
bGVha3NPdXRwdXQpID0gQF87Ci0KLSAgICAjIEZvcm1hdDoKLSAgICAjICAgUHJvY2VzcyAwMDAw
MDogMTIzNCBub2RlcyBtYWxsb2NlZCBmb3IgMTIzNCBLQgotICAgICMgICBQcm9jZXNzIDAwMDAw
OiBYWCBsZWFrcyBmb3IgWFhYIHRvdGFsIGxlYWtlZCBieXRlcy4gICAgCi0gICAgIyAgIExlYWs6
IDB4MDAwMDAwMDAgc2l6ZT0xMjM0IFtpbnN0YW5jZSBvZiAnYmxhaCddCi0gICAgIyAgICAgICAw
eDAwMDAwMDAwIDB4MDAwMDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIGEuLmQuZS5lCi0gICAg
IyAgICAgICAuLi4KLSAgICAjICAgICAgIENhbGwgc3RhY2s6IGxlYWtfY2FsbGVyKCkgfCBsZWFr
KCkgfCBtYWxsb2MKLSAgICAjCi0gICAgIyAgIFdlIHRyZWF0IGV2ZXJ5IGxpbmUgZXhjZXB0IGZv
ciAgUHJvY2VzcyAwMDAwMDogYW5kIExlYWs6IGFzIG9wdGlvbmFsCi0KLSAgICBteSAkbGVha0Nv
dW50OwotICAgIG15IEBwYXJzZWRPdXRwdXQgPSAoKTsKLSAgICBteSAkcGFyc2luZ0xlYWsgPSAw
OwotICAgIG15ICRwYXJzZWRMZWFrQ291bnQgPSAwOwotICAgIGZvciBteSAkbGluZSAoQCRsZWFr
c091dHB1dCkgewotICAgICAgICBpZiAoJGxpbmUgPX4gL15Qcm9jZXNzIFxkKzogKFxkKykgbGVh
a3M/LykgewotICAgICAgICAgICAgJGxlYWtDb3VudCA9ICQxOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCRsaW5lIGVxICJcbiIpIHsKLSAgICAgICAgICAgICRwYXJzaW5nTGVhayA9IDA7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoJGxpbmUgPX4gL15MZWFrOiAvKSB7Ci0gICAgICAgICAg
ICAkcGFyc2luZ0xlYWsgPSAxOwotICAgICAgICAgICAgJHBhcnNlZExlYWtDb3VudCsrOwotICAg
ICAgICAgICAgbXkgKCRhZGRyZXNzKSA9ICgkbGluZSA9fiAvTGVhazogKFtbOnhkaWdpdDpdeF0r
KS8pOwotICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRhZGRyZXNzKSkgewotICAgICAgICAgICAg
ICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3QgcGFyc2UgTGVhayBhZGRyZXNzLiIpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXkgKCRzaXpl
KSA9ICgkbGluZSA9fiAvc2l6ZT0oW1s6ZGlnaXQ6XV0rKS8pOwotICAgICAgICAgICAgaWYgKCFk
ZWZpbmVkKCRzaXplKSkgewotICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3Qg
cGFyc2UgTGVhayBzaXplLiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBjb2RlIHNlZW1zIHdyb25nLCB0aGUgbGVh
a3MgdG9vbCBkb2Vzbid0IGFjdHVhbGx5IHVzZSBzaW5nbGUgcXVvdGVzLgotICAgICAgICAgICAg
IyBXZSBzaG91bGQgcmVjb25jaWxlIHdpdGggb3RoZXIgZm9ybWF0IGNoYW5nZXMgdGhhdCBoYXBw
ZW5lZCBzaW5jZSwgc3VjaCBhcyB0aGUKLSAgICAgICAgICAgICMgYWRkaXRpb24gb2Ygem9uZSBp
bmZvcm1hdGlvbi4KLSAgICAgICAgICAgIG15ICgkdHlwZSkgPSAoJGxpbmUgPX4gLycoW14nXSsp
Jy8pOyAjJwotICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCR0eXBlKSkgewotICAgICAgICAgICAg
ICAgICR0eXBlID0gIiI7ICMgVGhlIGxlYWtzIHRvb2wgc29tZXRpbWVzIG9taXRzIHRoZSB0eXBl
LgotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBteSAlbGVhayA9ICgKLSAgICAgICAgICAg
ICAgICAiYWRkcmVzcyIgPT4gJGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgInNpemUiID0+ICRz
aXplLAotICAgICAgICAgICAgICAgICJ0eXBlIiA9PiAkdHlwZSwKLSAgICAgICAgICAgICAgICAi
Y2FsbFN0YWNrIiA9PiAiIiwgIyBUaGUgbGVha3MgdG9vbCBzb21ldGltZXMgb21pdHMgdGhlIGNh
bGwgc3RhY2suCi0gICAgICAgICAgICAgICAgImxlYWtzT3V0cHV0IiA9PiAkbGluZQotICAgICAg
ICAgICAgKTsKLSAgICAgICAgICAgIHB1c2goQHBhcnNlZE91dHB1dCwgXCVsZWFrKTsKLSAgICAg
ICAgfSBlbHNpZiAoJHBhcnNpbmdMZWFrKSB7Ci0gICAgICAgICAgICAkcGFyc2VkT3V0cHV0WyQj
cGFyc2VkT3V0cHV0XS0+eyJsZWFrc091dHB1dCJ9IC49ICRsaW5lOwotICAgICAgICAgICAgaWYg
KCRsaW5lID1+IC9DYWxsIHN0YWNrOi8pIHsKLSAgICAgICAgICAgICAgICAkcGFyc2VkT3V0cHV0
WyQjcGFyc2VkT3V0cHV0XS0+eyJjYWxsU3RhY2sifSA9ICRsaW5lOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbXkgJW5vbkxlYWtMaW5lID0gKAotICAgICAg
ICAgICAgICAgICJsZWFrc091dHB1dCIgPT4gJGxpbmUKLSAgICAgICAgICAgICk7Ci0gICAgICAg
ICAgICBwdXNoKEBwYXJzZWRPdXRwdXQsIFwlbm9uTGVha0xpbmUpOwotICAgICAgICB9Ci0gICAg
fQotICAgIAotICAgIGlmICgkcGFyc2VkTGVha0NvdW50ICE9ICRsZWFrQ291bnQpIHsKLSAgICAg
ICAgcmVwb3J0RXJyb3IoIlBhcnNlZCBsZWFrIGNvdW50ICgkcGFyc2VkTGVha0NvdW50KSBkb2Vz
IG5vdCBtYXRjaCBsZWFrIGNvdW50IHJlcG9ydGVkIGJ5IGxlYWtzIHRvb2wgKCRsZWFrQ291bnQp
LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmV0dXJuIFxAcGFyc2VkT3V0cHV0
OwotfQotCiBzdWIgcmVtb3ZlTWF0Y2hpbmdSZWNvcmRzKFxAJFxAKQogewogICAgIG15ICgkcmVj
b3JkTGlzdCwgJGtleSwgJHJlZ2V4cExpc3QpID0gQF87CkBAIC0yMzYsMTAgKzEyOSwzIEBAIHN1
YiByZW1vdmVNYXRjaGluZ1JlY29yZHMoXEAkXEApCiAgICAgICAgICRpKys7CiAgICAgfQogfQot
Ci1zdWIgcmVwb3J0RXJyb3IoJCkKLXsKLSAgICBteSAoJGVycm9yTWVzc2FnZSkgPSBAXzsKLSAg
ICAKLSAgICBwcmludCBTVERFUlIgYmFzZW5hbWUoJDApIC4gIjogJGVycm9yTWVzc2FnZVxuIjsK
LX0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0ZGlycy5wbQppbmRleCBlYjI2ZDI3NTdmMDUuLjdiYTVlOTQ1ZmM5YyAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0ZGlycy5wbQpAQCAtNDcsNiArNDcsNyBAQCB1c2UgTGlzdDo6VXRpbDsKIHVzZSBQT1NJWDsK
IHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwogdXNlIFZDU1V0aWxzOwordXNlIHdlYmtpdHBl
cmw6OmRpcnM7CiAKIEJFR0lOIHsKICAgIHVzZSBFeHBvcnRlciAgICgpOwpAQCAtMTQ1LDcgKzE0
Niw2IEBAIG15ICR4Y29kZVNES1BsYXRmb3JtTmFtZTsKIG15ICRzaW11bGF0b3JJZGlvbTsKIG15
ICRjb25maWd1cmF0aW9uRm9yVmlzdWFsU3R1ZGlvOwogbXkgJGNvbmZpZ3VyYXRpb25Qcm9kdWN0
RGlyOwotbXkgJHNvdXJjZURpcjsKIG15ICRjdXJyZW50U1ZOUmV2aXNpb247CiBteSAkZGlkTG9h
ZElQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbjsKIG15ICRubVBhdGg7CkBAIC0xOTUsMjQgKzE5
NSw2IEBAIHN1YiBzZGtQbGF0Zm9ybURpcmVjdG9yeSgkKQogICAgIHJldHVybiAkc2RrUGxhdGZv
cm1EaXJlY3Rvcnk7CiB9CiAKLXN1YiBkZXRlcm1pbmVTb3VyY2VEaXIKLXsKLSAgICByZXR1cm4g
aWYgJHNvdXJjZURpcjsKLSAgICAkc291cmNlRGlyID0gJEZpbmRCaW46OkJpbjsKLSAgICAkc291
cmNlRGlyID1+IHN8LyskfHw7ICMgUmVtb3ZlIHRyYWlsaW5nICcvJyBhcyB3ZSB3b3VsZCBkaWUg
bGF0ZXIKLQotICAgICMgd2Fsa3MgdXAgcGF0aCBjaGVja2luZyBlYWNoIGRpcmVjdG9yeSB0byBz
ZWUgaWYgaXQgaXMgdGhlIG1haW4gV2ViS2l0IHByb2plY3QgZGlyLCAKLSAgICAjIGRlZmluZWQg
YnkgY29udGFpbmluZyBTb3VyY2VzLCBXZWJDb3JlLCBhbmQgSmF2YVNjcmlwdENvcmUuCi0gICAg
dW50aWwgKCgtZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIpICYmIC1k
IEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiU291cmNlIiwgIldlYkNvcmUiKSAmJiAt
ZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIsICJKYXZhU2NyaXB0Q29y
ZSIpKSB8fCAoLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJJbnRlcm5hbCIpICYm
IC1kIEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiT3BlblNvdXJjZSIpKSkKLSAgICB7
Ci0gICAgICAgIGlmICgkc291cmNlRGlyICF+IHN8L1teL10rJHx8KSB7Ci0gICAgICAgICAgICBk
aWUgIkNvdWxkIG5vdCBmaW5kIHRvcCBsZXZlbCB3ZWJraXQgZGlyZWN0b3J5IGFib3ZlIHNvdXJj
ZSBkaXJlY3RvcnkgdXNpbmcgRmluZEJpbi5cbiI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAk
c291cmNlRGlyID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIikg
aWYgLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIik7Ci19Ci0K
IHN1YiBjdXJyZW50UGVybFBhdGgoKQogewogICAgIG15ICR0aGlzUGVybCA9ICReWDsKQEAgLTIy
MiwxMiArMjA0LDYgQEAgc3ViIGN1cnJlbnRQZXJsUGF0aCgpCiAgICAgcmV0dXJuICR0aGlzUGVy
bDsKIH0KIAotIyB1c2VkIGZvciBzY3JpcHRzIHdoaWNoIGFyZSBzdG9yZWQgaW4gYSBub24tc3Rh
bmRhcmQgbG9jYXRpb24KLXN1YiBzZXRTb3VyY2VEaXIoJCkKLXsKLSAgICAoJHNvdXJjZURpcikg
PSBAXzsKLX0KLQogc3ViIGRldGVybWluZU5pbmphVmVyc2lvbgogewogICAgIGNob21wKG15ICRu
aW5qYVZlcnNpb24gPSBgbmluamEgLS12ZXJzaW9uYCk7CkBAIC0yNTcsNyArMjMzLDYgQEAgc3Vi
IHJlYWRYY29kZVVzZXJEZWZhdWx0KCQpCiBzdWIgZGV0ZXJtaW5lQmFzZVByb2R1Y3REaXIKIHsK
ICAgICByZXR1cm4gaWYgZGVmaW5lZCAkYmFzZVByb2R1Y3REaXI7Ci0gICAgZGV0ZXJtaW5lU291
cmNlRGlyKCk7CiAKICAgICBteSAkc2V0U2hhcmVkUHJlY29tcHNEaXI7CiAgICAgbXkgJGluZGV4
RGF0YVN0b3JlRGlyOwpAQCAtMjk4LDcgKzI3Myw3IEBAIHN1YiBkZXRlcm1pbmVCYXNlUHJvZHVj
dERpcgogICAgIH0KIAogICAgIGlmICghZGVmaW5lZCgkYmFzZVByb2R1Y3REaXIpKSB7ICMgUG9y
dC1zcGVjaWZpYyBjaGVja3MgZmFpbGVkLCB1c2UgZGVmYXVsdAotICAgICAgICAkYmFzZVByb2R1
Y3REaXIgPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIldlYktpdEJ1aWxkIik7Cisg
ICAgICAgICRiYXNlUHJvZHVjdERpciA9IEZpbGU6OlNwZWMtPmNhdGRpcihzb3VyY2VEaXIsICJX
ZWJLaXRCdWlsZCIpOwogICAgIH0KIAogICAgIGlmIChpc0dpdCgpICYmIGlzR2l0QnJhbmNoQnVp
bGQoKSkgewpAQCAtMzA3LDggKzI4Miw4IEBAIHN1YiBkZXRlcm1pbmVCYXNlUHJvZHVjdERpcgog
ICAgIH0KIAogICAgIGlmIChpc0FwcGxlQ29jb2FXZWJLaXQoKSkgewotICAgICAgICAkYmFzZVBy
b2R1Y3REaXIgPX4gc3xeXFEkKFNSQ1JPT1QpLy4uXEUkfCRzb3VyY2VEaXJ8OwotICAgICAgICAk
YmFzZVByb2R1Y3REaXIgPX4gc3xeXFEkKFNSQ1JPT1QpLy4uL3wkc291cmNlRGlyL3w7CisgICAg
ICAgICRiYXNlUHJvZHVjdERpciA9fiBzfF5cUSQoU1JDUk9PVCkvLi5cRSR8c291cmNlRGlyfDsK
KyAgICAgICAgJGJhc2VQcm9kdWN0RGlyID1+IHN8XlxRJChTUkNST09UKS8uLi98c291cmNlRGly
L3w7CiAgICAgICAgICRiYXNlUHJvZHVjdERpciA9fiBzfF5+L3wkRU5We0hPTUV9L3w7CiAgICAg
ICAgIGRpZSAiQ2FuJ3QgaGFuZGxlIFhjb2RlIHByb2R1Y3QgZGlyZWN0b3J5IHdpdGggYSB+IGlu
IGl0LlxuIiBpZiAkYmFzZVByb2R1Y3REaXIgPX4gL34vOwogICAgICAgICBkaWUgIkNhbid0IGhh
bmRsZSBYY29kZSBwcm9kdWN0IGRpcmVjdG9yeSB3aXRoIGEgdmFyaWFibGUgaW4gaXQuXG4iIGlm
ICRiYXNlUHJvZHVjdERpciA9fiAvXCQvOwpAQCAtODU2LDE2ICs4MzEsMTQgQEAgc3ViIGRldGVy
bWluZUN1cnJlbnRTVk5SZXZpc2lvbgogICAgICMgV2UgYWx3YXlzIHVwZGF0ZSB0aGUgY3VycmVu
dCBTVk4gcmV2aXNpb24gaGVyZSwgYW5kIGxlYXZlIHRoZSBjYWNoaW5nCiAgICAgIyB0byBjdXJy
ZW50U1ZOUmV2aXNpb24oKSwgc28gdGhhdCBjaGFuZ2VzIHRvIHRoZSBTVk4gcmV2aXNpb24gd2hp
bGUgdGhlCiAgICAgIyBzY3JpcHQgaXMgcnVubmluZyBjYW4gYmUgcGlja2VkIHVwIGJ5IGNhbGxp
bmcgdGhpcyBmdW5jdGlvbiBhZ2Fpbi4KLSAgICBkZXRlcm1pbmVTb3VyY2VEaXIoKTsKLSAgICAk
Y3VycmVudFNWTlJldmlzaW9uID0gc3ZuUmV2aXNpb25Gb3JEaXJlY3RvcnkoJHNvdXJjZURpcik7
CisgICAgJGN1cnJlbnRTVk5SZXZpc2lvbiA9IHN2blJldmlzaW9uRm9yRGlyZWN0b3J5KHNvdXJj
ZURpcik7CiAgICAgcmV0dXJuICRjdXJyZW50U1ZOUmV2aXNpb247CiB9CiAKIAogc3ViIGNoZGly
V2ViS2l0CiB7Ci0gICAgZGV0ZXJtaW5lU291cmNlRGlyKCk7Ci0gICAgY2hkaXIgJHNvdXJjZURp
ciBvciBkaWU7CisgICAgY2hkaXIgc291cmNlRGlyIG9yIGRpZTsKIH0KIAogc3ViIGJhc2VQcm9k
dWN0RGlyCkBAIC04NzQsMTIgKzg0Nyw2IEBAIHN1YiBiYXNlUHJvZHVjdERpcgogICAgIHJldHVy
biAkYmFzZVByb2R1Y3REaXI7CiB9CiAKLXN1YiBzb3VyY2VEaXIKLXsKLSAgICBkZXRlcm1pbmVT
b3VyY2VEaXIoKTsKLSAgICByZXR1cm4gJHNvdXJjZURpcjsKLX0KLQogc3ViIHByb2R1Y3REaXIK
IHsKICAgICBkZXRlcm1pbmVDb25maWd1cmF0aW9uUHJvZHVjdERpcigpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0xvYWRBc01vZHVsZS5wbSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk1NGVlOGJkODM1MS4uMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9Mb2FkQXNNb2R1bGUucG0KKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBwZXJsCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCi0jIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0jIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIwot
IyBJbXBvcnRzIFBlcmwgc2NyaXB0cyBpbnRvIGEgcGFja2FnZSBmb3IgZWFzeSB1bml0IHRlc3Rp
bmcuCi0KLXBhY2thZ2UgTG9hZEFzTW9kdWxlOwotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdz
OwotCi11c2UgRmlsZTo6U3BlYzsKLXVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpTcGVjLT5j
YXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7Ci11c2Ugd2Via2l0ZGlyczsKLQotdXNl
IGJhc2UgJ0V4cG9ydGVyJzsKLXVzZSB2YXJzIHF3KEBFWFBPUlQgQEVYUE9SVF9PSyAlRVhQT1JU
X1RBR1MgJFZFUlNJT04pOwotCi1ARVhQT1JUID0gKCk7Ci1ARVhQT1JUX09LID0gKCk7Ci0lRVhQ
T1JUX1RBR1MgPSAoKTsKLSRWRVJTSU9OID0gJzEuMCc7Ci0KLXN1YiByZWFkRmlsZSgkKTsKLQot
c3ViIGltcG9ydAotewotICAgIG15ICgkc2VsZiwgJHBhY2thZ2UsICRzY3JpcHQpID0gQF87Ci0g
ICAgbXkgJHNjcmlwdFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKHNvdXJjZURpcigpLCAiVG9v
bHMiLCAiU2NyaXB0cyIsICRzY3JpcHQpOwotICAgIGV2YWwgIgotICAgICAgICBwYWNrYWdlICRw
YWNrYWdlOwotCi0gICAgICAgIHVzZSBzdHJpY3Q7Ci0gICAgICAgIHVzZSB3YXJuaW5nczsKLQot
ICAgICAgICB1c2UgYmFzZSAnRXhwb3J0ZXInOwotICAgICAgICB1c2UgdmFycyBxdyhcQEVYUE9S
VCBcQEVYUE9SVF9PSyBcJUVYUE9SVF9UQUdTIFwkVkVSU0lPTik7Ci0KLSAgICAgICAgXEBFWFBP
UlQgPSAoKTsKLSAgICAgICAgXEBFWFBPUlRfT0sgPSAoKTsKLSAgICAgICAgXCVFWFBPUlRfVEFH
UyA9ICgpOwotICAgICAgICBcJFZFUlNJT04gPSAnMS4wJzsKLQotICAgICAgICBzdWIgeyIgLiBy
ZWFkRmlsZSgkc2NyaXB0UGF0aCkgLiAifQotICAgICI7Ci19Ci0KLXN1YiByZWFkRmlsZSgkKQot
ewotICAgIG15ICRwYXRoID0gc2hpZnQ7Ci0gICAgbG9jYWwgJC8gPSB1bmRlZjsgIyBSZWFkIGlu
IHRoZSB3aG9sZSBmaWxlIGF0IG9uY2UuCi0gICAgb3BlbiBGSUxFLCAiPCIsICRwYXRoIG9yIGRp
ZSAiQ2Fubm90IG9wZW4gJHBhdGg6ICQhIjsKLSAgICBteSAkY29udGVudHMgPSA8RklMRT47Ci0g
ICAgY2xvc2UgRklMRTsKLSAgICByZXR1cm4gJGNvbnRlbnRzOwotfTsKLQotMTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9idWlsZC9vdXRwdXQucG0gYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvYnVpbGQvb3V0cHV0LnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMDRkOTdhYWVhMzUwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL2J1aWxkL291dHB1dC5wbQpAQCAtMCwwICsxLDE0NyBAQAorcGFja2Fn
ZSB3ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0OworCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdz
OwordXNlIENhcnA7CisKK0JFR0lOIHsKKyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgk
VkVSU0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRW
RVJTSU9OICAgICA9IDEuMDA7CisgICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBA
RVhQT1JUICAgICAgPSBxdygKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkSWdub3JlTGluZQor
ICAgICAgICAgICAgICAgICAgICAkcGxhdGZvcm0KKyAgICAgICAgICAgICAgICApOworICAgJUVY
UE9SVF9UQUdTID0gKCk7CisgICBARVhQT1JUX09LICAgPSAoKTsKK30KKworb3VyICRwbGF0Zm9y
bSA9ICdtYWMnOworCitteSAkaW5FbnRpdGxlbWVudHMgPSAwOworbXkgJGluRGV2aWNlUHJlcGFy
YXRpb25XYXJuaW5ncyA9IDA7CisKK3N1YiBzaG91bGRTaG93U3Vic2VxdWVudExpbmUgeworICAg
IG15ICRsaW5lID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvcmVmZXJlbmNl
ZCBmcm9tOiQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8obm90ZTp8ZXJyb3I6KS87CisK
KyAgICByZXR1cm4gMDsKK30KKworc3ViIHNob3VsZElnbm9yZUxpbmUgeworICAgIG15ICgkcHJl
dmlvdXNMaW5lLCAkbGluZSkgPSBAXzsKKworICAgIGlmICgkbGluZSA9fiAvXkVudGl0bGVtZW50
czokLykgeworICAgICAgICAkaW5FbnRpdGxlbWVudHMgPSAxOworICAgICAgICByZXR1cm4gMQor
ICAgIH0KKworICAgIGlmICgkaW5FbnRpdGxlbWVudHMpIHsKKyAgICAgICAgJGluRW50aXRsZW1l
bnRzID0gMCBpZiAkbGluZSA9fiAvXn0kLzsKKyAgICAgICAgcmV0dXJuIDEKKyAgICB9CisKKyAg
ICAjIGlQaG9uZSBwcmVwYXJhdGlvbiBlcnJvcnMgYWx3YXlzIHN0YXJ0IGFuZCBlbmQgd2l0aCBs
aW5lcyBjb250YWluaW5nICdpUGhvbmVDb25uZWN0OicuCisgICAgaWYgKCRpbkRldmljZVByZXBh
cmF0aW9uV2FybmluZ3MpIHsKKyAgICAgICAgJGluRGV2aWNlUHJlcGFyYXRpb25XYXJuaW5ncyA9
IDAgaWYgJGxpbmUgPX4gLz09IEVORDogVW5kZXJseWluZyBkZXZpY2UgcHJlcGFyYXRpb24gd2Fy
bmluZ3MgPT0vOworICAgICAgICByZXR1cm4gMQorICAgIH0KKworICAgIGlmICgkbGluZSA9fiAv
aVBob25lQ29ubmVjdDovKSB7CisgICAgICAgICRpbkRldmljZVByZXBhcmF0aW9uV2FybmluZ3Mg
PSAxOworICAgICAgICByZXR1cm4gMQorICAgIH0KKworICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eXHMqJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15Db21tYW5kIGxpbmUgaW52b2Nh
dGlvbjovOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eQnVpbGQgc2V0dGluZ3MgZnJvbSBj
b21tYW5kIGxpbmU6LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVzZXIgZGVmYXVsdHMg
ZnJvbSBjb21tYW5kIGxpbmU6LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlByZXBhcmUg
YnVpbGQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eQnVpbGQgc3lzdGVtIGluZm9ybWF0
aW9uLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXm5vdGU6IFBsYW5uaW5nIGJ1aWxkLzsK
KyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXm5vdGU6IENvbnN0cnVjdGluZyBidWlsZCBkZXNj
cmlwdGlvbi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBCdWlsZCBkZXNjcmlw
dGlvbiAoY29uc3RydWN0ZWR8bG9hZGVkKSBpbiAuKi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15ub3RlOiBVc2luZyBidWlsZCBkZXNjcmlwdGlvbiAuKi87CisgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL15ub3RlOiBVc2luZyBlYWdlciBjb21waWxhdGlvbi87CisgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15ub3RlOiBFeGVjdXRpb24gcG9saWN5IGV4Y2VwdGlvbiByZWdpc3RyYXRp
b24gZmFpbGVkIGFuZCB3YXMgc2tpcHBlZDogRXJyb3IgRG9tYWluPU5TUE9TSVhFcnJvckRvbWFp
biBDb2RlPTEgIk9wZXJhdGlvbiBub3QgcGVybWl0dGVkIi87CisgICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL15ub3RlOiBkZXRlY3RlZCBlbmNvZGluZyBvZiBpbnB1dCBmaWxlIGFzIFVuaWNvZGUg
XCguKlwpLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvbWFrZShcW1xkK1xdKT86IE5vdGhp
bmcgdG8gYmUgZG9uZSBmb3IvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eSmF2YVNjcmlw
dENvcmVcL2NyZWF0ZV9oYXNoX3RhYmxlLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrXC9Qcml2YXRlSGVhZGVyc1wvY3JlYXRlX2hhc2hfdGFibGUv
OworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eSmF2YVNjcmlwdENvcmVcL3BjcmVcL2RmdGFi
bGVzLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkNyZWF0aW5nIGhhc2h0YWJsZSBmb3Ig
LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXldyb3RlIG91dHB1dCB0byAvOworICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eVU5ET0NVTUVOVEVEOiAvOworICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9saWJ0b29sLipoYXMgbm8gc3ltYm9scy87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL14jIExvd2VyIGNhc2UgYWxsIHRoZSB2YWx1ZXMsIGFzIENTUyB2YWx1ZXMgYXJlIGNhc2Ut
aW5zZW5zaXRpdmUkLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXmlmIHNvcnQgLzsKKyAg
ICByZXR1cm4gMSBpZiAkbGluZSA9fiAvc2V0LXdlYmtpdC1jb25maWd1cmF0aW9uLzsKKyAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvXmJ1aWxkaW5nIGZpbGUgbGlzdC87CisgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15cLlwvJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15cUytcLmgk
LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxTK1wvJC87CisgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL15zZW50IFxkKyBieXRlcy87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL150
b3RhbCBzaXplIGlzLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvT25lIG9mIHRoZSB0d28g
d2lsbCBiZSB1c2VkXC4gV2hpY2ggb25lIGlzIHVuZGVmaW5lZFwuLzsKKyAgICByZXR1cm4gMSBp
ZiAkbGluZSA9fiAvVGhlIExlZ2FjeSBCdWlsZCBTeXN0ZW0gd2lsbCBiZSByZW1vdmVkIGluIGEg
ZnV0dXJlIHJlbGVhc2UvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXCggKHhjb2RlYnVp
bGR8aWYpIC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL153YXJuaW5nOiBjYW4ndCBmaW5k
IGFkZGl0aW9uYWwgU0RLLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXndhcm5pbmc6IG5v
IHVtYnJlbGxhIGhlYWRlciBmb3VuZCBmb3IgdGFyZ2V0ICcuKicsIG1vZHVsZSBtYXAgd2lsbCBu
b3QgYmUgZ2VuZXJhdGVkJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL153YXJuaW5nXDog
ZGV0ZWN0ZWQgaW50ZXJuYWwgaW5zdGFsbCwgcGFzc2luZyBlbnRpdGxlbWVudHMgdG8gc2ltdWxh
dG9yIGFueXdheVwuLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvbWF5IG5vdCBmdW5jdGlv
biBpbiB0aGUgU2ltdWxhdG9yIGJlY2F1c2UgQWQgSG9jLzsKKyAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXC91c3JcL2JpblwvY2xhbmcgLio/IFw+IFxTKy5zYi87CisgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gLyB4Y29kZWJ1aWxkXFtbMC05XSs6WzAtOWEtZl0rXF1ccytEVlRBc3NlcnRpb25z
OiBXYXJuaW5nIGluIC4qLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXihEZXRhaWxzfE9i
amVjdHxNZXRob2R8RnVuY3Rpb258VGhyZWFkKTovOworICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eUGxlYXNlIGZpbGUgYSBidWcgYXQgLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvY3Jl
YXRlZCBieSBhbiB1bnN1cHBvcnRlZCBYQ0RlcGVuZGVuY3lHcmFwaCBidWlsZCQvOworICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC93YXJuaW5nOiBUaGUgYXNzaWdubWVudCBvZiAnLionIGF0ICIu
KiIgdXNlcyBcJFwoaW5oZXJpdGVkXCkuIEluIHRoZSBuZXcgYnVpbGQgc3lzdGVtIHRoaXMgd2ls
bCBpbmhlcml0IGZyb20gYW4gZWFybGllciBkZWZpbml0aW9uIG9mICcuKicgaW4gdGhpcyB4Y2Nv
bmZpZyBmaWxlIG9yIGl0cyBpbXBvcnRzOyB0aGUgb2xkIGJ1aWxkIHN5c3RlbSB3b3VsZCBkaXNj
YXJkIGVhcmxpZXIgZGVmaW5pdGlvbnMuIFRoaXMgbWF5IHJlc3VsdCBpbiBjaGFuZ2VzIHRvIHJl
c29sdmVkIGJ1aWxkIHNldHRpbmcgdmFsdWVzLi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
Ly4qIGNvbS5hcHBsZS5hY3Rvb2wuY29tcGlsYXRpb24tcmVzdWx0cyAuKi87CisgICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gLy4qXC9Bc3NldHMuY2FyLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvLipcL2Fzc2V0Y2F0YWxvZ19nZW5lcmF0ZWRfaW5mby5wbGlzdC87CisgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15tb3VudDogLisgZmFpbGVkIHdpdGgvOworICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eVXNpbmcgLisgcHJvZHVjdGlvbiBlbnZpcm9ubWVudC4kLzsKKyAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvcmVwbGFjaW5nIGV4aXN0aW5nIHNpZ25hdHVyZSQvOworICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9eVW5sb2NraW5nICcuKlwua2V5Y2hhaW4tZGInJC87CisgICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15cZCsgbG9jYWxpemFibGUgc3RyaW5ncyQvOworICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9eXGQrIHBsdXJhbCBydWxlcyQvOworICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eVGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scyBkaWQgbm90IGNoYW5nZS4kLzsK
KyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXmRpdHRvOiBDYW5ub3QgZ2V0IHRoZSByZWFsIHBh
dGggZm9yIHNvdXJjZS87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15EdXBsaWNhdGUgRW50
cnkgV2FzIFNraXBwZWQ6LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkFkZGluZyAuKj9l
bnRpdGxlbWVudHMvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eTWFraW5nIGFwcCBidW5k
bGUgbGF1bmNoYWJsZS87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15GaW5pc2hlZCBhZGRp
bmcgZW50aXRsZW1lbnRzXC4kLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXi4qIHdpbGwg
bm90IGJlIGNvZGUgc2lnbmVkIGJlY2F1c2UgaXRzIHNldHRpbmdzIGRvbid0IHNwZWNpZnkgYSBk
ZXZlbG9wbWVudCB0ZWFtLiQvOworCisgICAgaWYgKCRwbGF0Zm9ybSBlcSAid2luIikgeworICAg
ICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKih0b3VjaHxwZXJsfGNhdHxybSAtZnxkZWx8
cHl0aG9ufFwvdXNyXC9iaW5cL2dcK1wrfGdwZXJmfGVjaG98c2VkfGlmIFxbIFwtZnxXZWJDb3Jl
XC9nZW5lcmF0ZS1leHBvcnQtZmlsZSkgLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15ccyooaWYgbm90IGV4aXN0IFwifGlmIGVycm9ybGV2ZWwgMSkvOworICAgICAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvKF5ccyp8TVNCMzA3MzpccyspKHNldCB8UkVNIHxjbWQgXC9jKS87Cisg
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqW2NDXTpcXFtwUF1yb2dyYW0gW2ZGXWls
ZXMuKlxcLipcXChDTHxtaWRsKVwuZXhlIC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eXHMqUHJvY2Vzc2luZyAuKlwuKGFjZnxofGlkbClccyokLzsKKyAgICAgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15ccypwcmludGYgLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15ccypcL3VzclwvYmluXC9iYXNoXHMqLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15ccypvZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQvOworICAgICAgICByZXR1cm4gMSBpZiAk
bGluZSA9fiAvIFxkKyBGaWxlXChzXCkgY29waWVkLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL15ccypGaWxlIG5vdCBmb3VuZCAtIFwqXC5oLzsKKyAgICAgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL21rZGlyXHMrXCIvOworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAveGNv
cHkgXC95IFwvZCBcIi87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9cLm9ialwiXHMq
JC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC86XHMrKGNtZCBcL2N8c2V0KVxzKy87
CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9NU0IzMDczOlxzKyQvOworICAgICAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvTVNCMzA3MzpccytpZiBub3QgZXhpc3QvOworICAgICAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvd2hpY2guZXhlIGJhc2gvOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eKHRvdWNofHBlcmx8Y2F0fHJtIC1mfHB5dGhvbnxc
L3VzclwvYmluXC9nXCtcK3xcL2JpblwvbG58Z3BlcmZ8ZWNob3xzZWR8aWYgXFsgXC1mfFdlYkNv
cmVcL2dlbmVyYXRlLWV4cG9ydC1maWxlfHdyaXRlLWZpbGV8Y2htb2QpIC87CisgICAgICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eICAgIC8gJiYgIXNob3VsZFNob3dTdWJzZXF1ZW50TGluZSgk
cHJldmlvdXNMaW5lKTsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15wcmludGYgLzsK
KyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15vZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5n
ZWQvOworICAgIH0KKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlNob3dpbmcgZmlyc3QvOwor
CisgICAgcmV0dXJuIDA7Cit9CisKKzE7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvY2hhbmdlbG9nLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2NoYW5nZWxvZy5w
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE2MzlhNjQ1NWEzZQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9jaGFuZ2Vsb2cucG0K
QEAgLTAsMCArMSwxNDk3IEBACitwYWNrYWdlIHdlYmtpdHBlcmw6OmNoYW5nZWxvZzsKKwordXNl
IHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBDYXJwOwordXNlIEZpbGU6OlNwZWM7Cit1c2Ug
VkNTVXRpbHM7CisKK0JFR0lOIHsKKyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgkVkVS
U0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRWRVJT
SU9OICAgICA9IDEuMDA7CisgICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBARVhQ
T1JUICAgICAgPSBxdygKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsbHlHZW5lcmF0ZUZ1bmN0
aW9uTGlzdHMKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlQ29tbWFuZAorICAgICAgICAg
ICAgICAgICAgICBleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UKKyAgICAgICAgICAgICAgICAg
ICAgZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZQorICAgICAgICAgICAgICAgICAgICBmZXRj
aEJ1Z0Rlc2NyaXB0aW9uRnJvbUJ1Z1hNTERhdGEKKyAgICAgICAgICAgICAgICAgICAgZmV0Y2hS
YWRhclVSTEZyb21CdWdYTUxEYXRhCisgICAgICAgICAgICAgICAgKTsKKyAgICVFWFBPUlRfVEFH
UyA9ICgpOworICAgQEVYUE9SVF9PSyAgID0gcXcoCisgICAgICAgICAgICAgICAgICAgIGdldF9m
dW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfY3BwCisgICAgICAgICAgICAgICAgICAgIGdldF9zZWxl
Y3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlv
bl9saW5lX3Jhbmdlc19mb3JfamF2YQorICAgICAgICAgICAgICAgICAgICBnZXRfZnVuY3Rpb25f
bGluZV9yYW5nZXNfZm9yX2phdmFzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9wZXJsCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlv
bl9saW5lX3Jhbmdlc19mb3JfcHl0aG9uCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlv
bl9saW5lX3Jhbmdlc19mb3Jfc3dpZnQKKyAgICAgICAgICAgICAgICApOworfQorCit1c2UgY29u
c3RhbnQgU1ZOID0+ICJzdm4iOwordXNlIGNvbnN0YW50IEdJVCA9PiAiZ2l0IjsKKworc3ViIGFj
dHVhbGx5R2VuZXJhdGVGdW5jdGlvbkxpc3RzIHsKKyAgICBteSAoJGNoYW5nZWRGaWxlcywgJGZ1
bmN0aW9uTGlzdHMsICRnaXRDb21taXQsICRnaXRJbmRleCwgJG1lcmdlQmFzZSwgJGRlbGVnYXRl
SGFzaFJlZikgPSBAXzsKKworICAgIG15ICVsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkOworICAg
IG15ICVsaW5lX3Jhbmdlc19iZWZvcmVfY2hhbmdlZDsKKyAgICBpZiAoQCRjaGFuZ2VkRmlsZXMp
IHsKKyAgICAgICAgIyBGb3IgZWFjaCBmaWxlLCBidWlsZCBhIGxpc3Qgb2YgbW9kaWZpZWQgbGlu
ZXMuCisgICAgICAgICMgVXNlIGxpbmUgbnVtYmVycyBmcm9tIHRoZSAiYWZ0ZXIiIHNpZGUgb2Yg
ZWFjaCBkaWZmLgorICAgICAgICBwcmludCBTVERFUlIgIiAgUmV2aWV3aW5nIGRpZmYgdG8gZGV0
ZXJtaW5lIHdoaWNoIGxpbmVzIGNoYW5nZWQuXG4iOworICAgICAgICBteSAkZmlsZTsKKyAgICAg
ICAgbXkgJGRpZmZGaWxlSGFuZGxlID0gJGRlbGVnYXRlSGFzaFJlZi0+e29wZW5EaWZmfSgkY2hh
bmdlZEZpbGVzLCAkZ2l0Q29tbWl0LCAkZ2l0SW5kZXgsICRtZXJnZUJhc2UpOworICAgICAgICBp
ZiAoISRkaWZmRmlsZUhhbmRsZSkgeworICAgICAgICAgICAgZGllICJUaGUgZGlmZiBmYWlsZWQ6
ICQhLlxuIjsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoPCRkaWZmRmlsZUhhbmRsZT4pIHsK
KyAgICAgICAgICAgIG15ICRmaWxlUGF0aCA9IHBhcnNlRGlmZlN0YXJ0TGluZSgkXyk7CisgICAg
ICAgICAgICAkZmlsZSA9ICRkZWxlZ2F0ZUhhc2hSZWYtPntub3JtYWxpemVQYXRofSgkZmlsZVBh
dGgpIGlmICRmaWxlUGF0aDsKKyAgICAgICAgICAgIGlmIChkZWZpbmVkICRmaWxlKSB7CisgICAg
ICAgICAgICAgICAgbXkgKCRiZWZvcmVfc3RhcnQsICRiZWZvcmVfZW5kKSA9IGV4dHJhY3RMaW5l
UmFuZ2VCZWZvcmVDaGFuZ2UoJF8pOworICAgICAgICAgICAgICAgIGlmICgkYmVmb3JlX3N0YXJ0
ID49IDEgJiYgJGJlZm9yZV9lbmQgPj0gMSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoIEB7
JGxpbmVfcmFuZ2VzX2JlZm9yZV9jaGFuZ2VkeyRmaWxlfX0sIFsgJGJlZm9yZV9zdGFydCwgJGJl
Zm9yZV9lbmQgXTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgvRE9fTk9UX0NPTU1JVC8pIHsK
KyAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJXQVJOSU5HOiBmaWxlICRmaWxlIGNv
bnRhaW5zIHRoZSBzdHJpbmcgRE9fTk9UX0NPTU1JVCwgbGluZSAkLlxuIjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgbXkgKCRhZnRlcl9zdGFydCwgJGFmdGVyX2VuZCkgPSBl
eHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UoJF8pOworICAgICAgICAgICAgICAgIGlmICgkYWZ0
ZXJfc3RhcnQgPj0gMSAmJiAkYWZ0ZXJfZW5kID49IDEpIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaCBAeyRsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkeyRmaWxlfX0sIFsgJGFmdGVyX3N0YXJ0
LCAkYWZ0ZXJfZW5kIF07CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01NSVQv
KSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAkZmls
ZSBjb250YWlucyB0aGUgc3RyaW5nIERPX05PVF9DT01NSVQsIGxpbmUgJC5cbiI7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNsb3NlKCRkaWZm
RmlsZUhhbmRsZSk7CisgICAgfQorCisgICAgIyBGb3IgZWFjaCBzb3VyY2UgZmlsZSwgY29udmVy
dCBsaW5lIHJhbmdlIHRvIGZ1bmN0aW9uIGxpc3QuCisgICAgcHJpbnQgU1RERVJSICIgIEV4dHJh
Y3RpbmcgYWZmZWN0ZWQgZnVuY3Rpb24gbmFtZXMgZnJvbSBzb3VyY2UgZmlsZXMuXG4iOworICAg
IG15ICVmaWxlc1RvRXhhbWluZSA9IG1hcCB7ICRfID0+IDEgfSAoa2V5cyglbGluZV9yYW5nZXNf
YmVmb3JlX2NoYW5nZWQpLCBrZXlzKCVsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkKSk7CisgICAg
Zm9yZWFjaCBteSAkZmlsZSAoa2V5cyAlZmlsZXNUb0V4YW1pbmUpIHsKKyAgICAgICAgbXkgJXNh
d19mdW5jdGlvbjsKKworICAgICAgICAjIEZpbmQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGZp
bGUuCisgICAgICAgIG15ICRzb3VyY2VGaWxlSGFuZGxlID0gJGRlbGVnYXRlSGFzaFJlZi0+e29w
ZW5GaWxlfSgkZmlsZSk7CisgICAgICAgIG5leHQgdW5sZXNzICRzb3VyY2VGaWxlSGFuZGxlOwor
ICAgICAgICBteSBAYWZ0ZXJDaGFuZ2VGdW5jdGlvblJhbmdlcyA9IGdldF9mdW5jdGlvbl9saW5l
X3Jhbmdlcygkc291cmNlRmlsZUhhbmRsZSwgJGZpbGUpOworICAgICAgICBjbG9zZSgkc291cmNl
RmlsZUhhbmRsZSk7CisKKyAgICAgICAgIyBGaW5kIG1vZGlmaWVkIGZ1bmN0aW9ucyBpbiB0aGUg
ZmlsZS4KKyAgICAgICAgaWYgKCRsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkeyRmaWxlfSkgewor
ICAgICAgICAgICAgbXkgQGNoYW5nZV9yYW5nZXMgPSAoQHskbGluZV9yYW5nZXNfYWZ0ZXJfY2hh
bmdlZHskZmlsZX19LCBbXSk7CisgICAgICAgICAgICBteSBAZnVuY3Rpb25zID0gY29tcHV0ZU1v
ZGlmaWVkRnVuY3Rpb25zKCRmaWxlLCBcQGNoYW5nZV9yYW5nZXMsIFxAYWZ0ZXJDaGFuZ2VGdW5j
dGlvblJhbmdlcyk7CisKKyAgICAgICAgICAgICMgRm9ybWF0IHRoZSBsaXN0IG9mIGZ1bmN0aW9u
cy4KKyAgICAgICAgICAgIGlmIChAZnVuY3Rpb25zKSB7CisgICAgICAgICAgICAgICAgJGZ1bmN0
aW9uTGlzdHMtPnskZmlsZX0gPSAiIiBpZiAhZGVmaW5lZCAkZnVuY3Rpb25MaXN0cy0+eyRmaWxl
fTsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfSAuPSAiXG4gICAgICAg
ICgiIC4gam9pbigiKTpcbiAgICAgICAgKCIsIEBmdW5jdGlvbnMpIC4gIik6IjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICAjIEZpbmQgdGhlIGRlbGV0ZWQgZnVuY3Rpb25zIGlu
IHRoZSBvcmlnaW5hbCBmaWxlLgorICAgICAgICBpZiAoJGxpbmVfcmFuZ2VzX2JlZm9yZV9jaGFu
Z2VkeyRmaWxlfSkgeworICAgICAgICAgICAgbXkgJG9yaWdpbmFsRmlsZUhhbmRsZSA9ICRkZWxl
Z2F0ZUhhc2hSZWYtPntvcGVuT3JpZ2luYWxGaWxlfSgkZmlsZSwgJGdpdENvbW1pdCwgJGdpdElu
ZGV4LCAkbWVyZ2VCYXNlKTsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRvcmlnaW5hbEZpbGVI
YW5kbGU7CisgICAgICAgICAgICBteSBAYmVmb3JlQ2hhbmdlRnVuY3Rpb25SYW5nZXMgPSBnZXRf
ZnVuY3Rpb25fbGluZV9yYW5nZXMoJG9yaWdpbmFsRmlsZUhhbmRsZSwgJGZpbGUpOworICAgICAg
ICAgICAgY2xvc2UoJG9yaWdpbmFsRmlsZUhhbmRsZSk7CisKKyAgICAgICAgICAgIG15ICVleGlz
dHNBZnRlckNoYW5nZSA9IG1hcCB7ICRfLT5bMl0gPT4gMSB9IEBhZnRlckNoYW5nZUZ1bmN0aW9u
UmFuZ2VzOworCisgICAgICAgICAgICBteSBAZnVuY3Rpb25zOworICAgICAgICAgICAgbXkgJXNh
d0Z1bmN0aW9uczsKKyAgICAgICAgICAgIGZvciBteSAkZnVuY3Rpb25SYW5nZSAoQGJlZm9yZUNo
YW5nZUZ1bmN0aW9uUmFuZ2VzKSB7CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9
ICRmdW5jdGlvblJhbmdlLT5bMl07CisgICAgICAgICAgICAgICAgaWYgKCEkZXhpc3RzQWZ0ZXJD
aGFuZ2V7JGZ1bmN0aW9uTmFtZX0gJiYgISRzYXdGdW5jdGlvbnN7JGZ1bmN0aW9uTmFtZX0pIHsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25OYW1lOworICAg
ICAgICAgICAgICAgICAgICAkc2F3RnVuY3Rpb25zeyRmdW5jdGlvbk5hbWV9ID0gMTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgRm9ybWF0IHRoZSBs
aXN0IG9mIGRlbGV0ZWQgZnVuY3Rpb25zLgorICAgICAgICAgICAgaWYgKEBmdW5jdGlvbnMpIHsK
KyAgICAgICAgICAgICAgICAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfSA9ICIiIGlmICFkZWZpbmVk
ICRmdW5jdGlvbkxpc3RzLT57JGZpbGV9OworICAgICAgICAgICAgICAgICRmdW5jdGlvbkxpc3Rz
LT57JGZpbGV9IC49ICJcbiAgICAgICAgKCIgLiBqb2luKCIpOiBEZWxldGVkLlxuICAgICAgICAo
IiwgQGZ1bmN0aW9ucykgLiAiKTogRGVsZXRlZC4iOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQorCitzdWIgZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlIHsKKyAgICBteSAk
c3RyaW5nID0gc2hpZnQ7CisgICAgbXkgJGNodW5rUmFuZ2UgPSBwYXJzZUNodW5rUmFuZ2UoJHN0
cmluZyk7CisgICAgaWYgKCEkY2h1bmtSYW5nZSkgeworICAgICAgICByZXR1cm4gKC0xLCAtMSk7
ICMgTWFsZm9ybWVkCisgICAgfQorICAgIGlmICghJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xp
bmV9IHx8ICEkY2h1bmtSYW5nZS0+e25ld0xpbmVDb3VudH0pIHsKKyAgICAgICAgICMgRGVsZXRp
b247IG5vIGxpbmVzIGV4aXN0IGFmdGVyIGNoYW5nZS4KKyAgICAgICAgcmV0dXJuICgkY2h1bmtS
YW5nZS0+e25ld1N0YXJ0aW5nTGluZX0sICRjaHVua1JhbmdlLT57bmV3U3RhcnRpbmdMaW5lfSk7
CisgICAgfQorICAgIHJldHVybiAoJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9LCAkY2h1
bmtSYW5nZS0+e25ld1N0YXJ0aW5nTGluZX0gKyAkY2h1bmtSYW5nZS0+e25ld0xpbmVDb3VudH0g
LSAxKTsKK30KKworc3ViIGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UgeworICAgIG15ICRz
dHJpbmcgPSBzaGlmdDsKKyAgICBteSAkY2h1bmtSYW5nZSA9IHBhcnNlQ2h1bmtSYW5nZSgkc3Ry
aW5nKTsKKyAgICBpZiAoISRjaHVua1JhbmdlKSB7CisgICAgICAgIHJldHVybiAoLTEsIC0xKTsg
IyBNYWxmb3JtZWQKKyAgICB9CisgICAgaWYgKCEkY2h1bmtSYW5nZS0+e3N0YXJ0aW5nTGluZX0g
fHwgISRjaHVua1JhbmdlLT57bGluZUNvdW50fSkgeworICAgICAgICAjIEFkZGl0aW9uOyBubyBs
aW5lcyBleGlzdGVkIGJlZm9yZSBjaGFuZ2UuCisgICAgICAgIHJldHVybiAoJGNodW5rUmFuZ2Ut
PntzdGFydGluZ0xpbmV9LCAkY2h1bmtSYW5nZS0+e3N0YXJ0aW5nTGluZX0pOworICAgIH0KKyAg
ICByZXR1cm4gKCRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntzdGFy
dGluZ0xpbmV9ICsgJGNodW5rUmFuZ2UtPntsaW5lQ291bnR9IC0gMSk7Cit9CisKK3N1YiBhdHRy
aWJ1dGVDb21tYW5kIHsKKyAgICBteSAoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZSwgJGF0dHIpID0g
QF87CisKKyAgICBteSAkcmVzdWx0OworICAgIGlmIChpc1NWTigpKSB7CisgICAgICAgIG15ICRk
ZXZOdWxsID0gRmlsZTo6U3BlYy0+ZGV2bnVsbCgpOworICAgICAgICBteSAkZm91bmRBdHRyaWJ1
dGUgPSAwOworICAgICAgICBteSAkc3ViUGF0aCA9ICIuIjsKKyAgICAgICAgbXkgKEBkaXJlY3Rv
cnlQYXJ0cykgPSBGaWxlOjpTcGVjLT5zcGxpdGRpcigkZmlsZSk7CisgICAgICAgIGZvcmVhY2gg
bXkgJHBhcnQgKEBkaXJlY3RvcnlQYXJ0cykgeworICAgICAgICAgICAgaWYgKCRwYXJ0IGVxICIu
IikgeworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAk
c3ViUGF0aCA9IEZpbGU6OlNwZWMtPmpvaW4oJHN1YlBhdGgsICRwYXJ0KTsKKyAgICAgICAgICAg
ICRzdWJQYXRoID1+IHMvXlwuXC8vLzsKKyAgICAgICAgICAgIGlmICgkZm91bmRBdHRyaWJ1dGUg
fHwgZXhpc3RzICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gJiYgJGF0dHJpYnV0
ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSBlcSAiMSIpIHsKKyAgICAgICAgICAgICAgICAkYXR0
cmlidXRlQ2FjaGUtPnskYXR0cn17JHN1YlBhdGh9ID0gIjEiOworICAgICAgICAgICAgICAgICRm
b3VuZEF0dHJpYnV0ZSA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG15ICRjb21tYW5kID0gU1ZOIC4gIiBwcm9wZ2V0ICRhdHRyICckc3ViUGF0
aCciOworICAgICAgICAgICAgbXkgJGF0dHJpYiA9ICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXsk
c3ViUGF0aH0gfHwgYCRjb21tYW5kIDI+ICRkZXZOdWxsYDsKKyAgICAgICAgICAgIGNob21wICRh
dHRyaWI7CisgICAgICAgICAgICBpZiAoJGF0dHJpYiBlcSAiMSIpIHsKKyAgICAgICAgICAgICAg
ICAkZm91bmRBdHRyaWJ1dGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJGF0dHJp
YnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSA9ICRhdHRyaWIgfHwgIjAiOworICAgICAgICB9
CisgICAgICAgICRyZXN1bHQgPSAkYXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JGZpbGV9OworICAg
IH0gZWxzaWYgKGlzR2l0KCkpIHsKKyAgICAgICAgbXkgJGNvbW1hbmQgPSBHSVQgLiAiIGNoZWNr
LWF0dHIgJGF0dHIgLS0gJyRmaWxlJyI7CisgICAgICAgICRyZXN1bHQgPSBgJGNvbW1hbmRgOwor
ICAgICAgICBjaG9tcCAkcmVzdWx0OworICAgICAgICAkcmVzdWx0ID1+IHMvLipcVyhcdykvJDEv
OworICAgIH0KKworICAgICRyZXN1bHQgPX4gcy9cRC8vZzsKKyAgICByZXR1cm4gaW50KCRyZXN1
bHQgfHwgMCk7Cit9CisKK3N1YiBmZXRjaEJ1Z0Rlc2NyaXB0aW9uRnJvbUJ1Z1hNTERhdGEgewor
ICAgIG15ICgkYnVnVVJMLCAkYnVnTnVtYmVyLCAkYnVnWE1MRGF0YSkgPSBAXzsKKworICAgIGlm
ICgkYnVnWE1MRGF0YSAhfiAvPHNob3J0X2Rlc2M+KC4qKTxcL3Nob3J0X2Rlc2M+LykgeworICAg
ICAgICBwcmludCBTVERFUlIgIiAgQnVnICRidWdOdW1iZXIgaGFzIG5vIGJ1ZyBkZXNjcmlwdGlv
bi4gTWF5YmUgeW91IHNldCB3cm9uZyBidWcgSUQ/XG4iOworICAgICAgICBwcmludCBTVERFUlIg
IiAgVGhlIGJ1ZyBVUkw6ICRidWdVUkxcbiI7CisgICAgICAgIGV4aXQgMTsKKyAgICB9CisKKyAg
ICBteSAkYnVnRGVzY3JpcHRpb24gPSBkZWNvZGVFbnRpdGllcygkMSk7CisgICAgcHJpbnQgU1RE
RVJSICIgIERlc2NyaXB0aW9uIGZyb20gYnVnICRidWdOdW1iZXI6XG4gICAgXCIkYnVnRGVzY3Jp
cHRpb25cIi5cbiI7CisgICAgcmV0dXJuICRidWdEZXNjcmlwdGlvbjsKK30KKworc3ViIGZldGNo
UmFkYXJVUkxGcm9tQnVnWE1MRGF0YSB7CisgICAgbXkgKCRidWdOdW1iZXIsICRidWdYTUxEYXRh
KSA9IEBfOworCisgICAgcmV0dXJuICIiIGlmICRidWdYTUxEYXRhICF+IG18PHRoZXRleHQ+XHMq
KCgmbHQ7KT9yZGFyOi8vKHByb2JsZW0vKT9cZCsoJmd0Oyk/KXw7CisKKyAgICBteSAkYnVnUmFk
YXJVUkwgPSBkZWNvZGVFbnRpdGllcygkMSk7CisgICAgcHJpbnQgU1RERVJSICIgIFJhZGFyIFVS
TCBmcm9tIGJ1ZyAkYnVnTnVtYmVyOlxuICAgIFwiJGJ1Z1JhZGFyVVJMXCIuXG4iOworICAgIHJl
dHVybiAkYnVnUmFkYXJVUkw7Cit9CisKK3N1YiBjb21wdXRlTW9kaWZpZWRGdW5jdGlvbnMgewor
ICAgIG15ICgkZmlsZSwgJGNoYW5nZWRMaW5lUmFuZ2VzLCAkZnVuY3Rpb25SYW5nZXMpID0gQF87
CisKKyAgICBteSAlc2F3RnVuY3Rpb247CisKKyAgICAjIEZpbmQgYWxsIHRoZSBtb2RpZmllZCBm
dW5jdGlvbnMuCisgICAgbXkgQGZ1bmN0aW9uczsKKyAgICBteSBAY2hhbmdlX3JhbmdlcyA9IEB7
JGNoYW5nZWRMaW5lUmFuZ2VzfTsKKyAgICBteSBAY2hhbmdlX3JhbmdlID0gKDAsIDApOworICAg
IEZVTkNUSU9OOiBmb3JlYWNoIG15ICRmdW5jdGlvbl9yYW5nZV9yZWYgKEB7JGZ1bmN0aW9uUmFu
Z2VzfSkgeworICAgICAgICBteSBAZnVuY3Rpb25fcmFuZ2UgPSBAeyRmdW5jdGlvbl9yYW5nZV9y
ZWZ9OworCisgICAgICAgICMgRklYTUU6IFRoaXMgaXMgYSBoYWNrLiBJZiB0aGUgZnVuY3Rpb24g
bmFtZSBpcyBlbXB0eSwgc2tpcCBpdC4KKyAgICAgICAgIyBUaGUgY3BwLCBweXRob24sIGphdmFz
Y3JpcHQsIHBlcmwsIGNzcyBhbmQgamF2YSBwYXJzZXJzCisgICAgICAgICMgYXJlIG5vdCBwZXJm
ZWN0bHkgaW1wbGVtZW50ZWQgYW5kIHNvbWV0aW1lcyBmdW5jdGlvbiBuYW1lcyBjYW5ub3QgYmUg
cmV0cmlldmVkCisgICAgICAgICMgY29ycmVjdGx5LiBBcyB5b3UgY2FuIHNlZSBpbiBnZXRfZnVu
Y3Rpb25fbGluZV9yYW5nZXNfWFhYWCgpLCB0aG9zZSBwYXJzZXJzCisgICAgICAgICMgYXJlIG5v
dCBpbnRlbmRlZCB0byBpbXBsZW1lbnQgcmVhbCBwYXJzZXJzIGJ1dCBpbnRlbmRlZCB0byBqdXN0
IHJldHJpZXZlIGZ1bmN0aW9uIG5hbWVzCisgICAgICAgICMgZm9yIG1vc3QgcHJhY3RpY2FsIHN5
bnRheGVzLgorICAgICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb25fcmFuZ2VbMl07CisKKyAgICAg
ICAgIyBBZHZhbmNlIHRvIHN1Y2Nlc3NpdmUgY2hhbmdlIHJhbmdlcy4KKyAgICAgICAgZm9yICg7
OyBAY2hhbmdlX3JhbmdlID0gQHtzaGlmdCBAY2hhbmdlX3Jhbmdlc30pIHsKKyAgICAgICAgICAg
IGxhc3QgRlVOQ1RJT04gdW5sZXNzIEBjaGFuZ2VfcmFuZ2U7CisKKyAgICAgICAgICAgICMgSWYg
cGFzdCB0aGlzIGZ1bmN0aW9uLCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9uZS4KKyAgICAgICAgICAg
IG5leHQgRlVOQ1RJT04gaWYgJGNoYW5nZV9yYW5nZVswXSA+ICRmdW5jdGlvbl9yYW5nZVsxXTsK
KworICAgICAgICAgICAgIyBJZiBhbiBvdmVybGFwIHdpdGggdGhpcyBmdW5jdGlvbiByYW5nZSwg
cmVjb3JkIHRoZSBmdW5jdGlvbiBuYW1lLgorICAgICAgICAgICAgaWYgKCRjaGFuZ2VfcmFuZ2Vb
MV0gPj0gJGZ1bmN0aW9uX3JhbmdlWzBdCisgICAgICAgICAgICAgICAgYW5kICRjaGFuZ2VfcmFu
Z2VbMF0gPD0gJGZ1bmN0aW9uX3JhbmdlWzFdKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkc2F3
RnVuY3Rpb257JGZ1bmN0aW9uX3JhbmdlWzJdfSkgeworICAgICAgICAgICAgICAgICAgICAkc2F3
RnVuY3Rpb257JGZ1bmN0aW9uX3JhbmdlWzJdfSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHB1
c2ggQGZ1bmN0aW9ucywgJGZ1bmN0aW9uX3JhbmdlWzJdOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBuZXh0IEZVTkNUSU9OOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIEBmdW5jdGlvbnM7Cit9CisKK3N1YiBnZXRfZnVuY3Rpb25fbGlu
ZV9yYW5nZXMgeworICAgIG15ICgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87CisKKyAg
ICAjIFRyeSB0byBkZXRlcm1pbmUgdGhlIHNvdXJjZSBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgZmls
ZSBleHRlbnNpb24uCisKKyAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9j
cHAoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLihjfGNwcHxt
fG1tfGgpJC87CisgICAgcmV0dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YSgk
ZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wuamF2YSQvOworICAg
IHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmFzY3JpcHQoJGZpbGVfaGFu
ZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLmpzJC87CisgICAgcmV0dXJuIGdl
dF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkg
aWYgJGZpbGVfbmFtZSA9fiAvXC5jc3MkLzsKKyAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVf
cmFuZ2VzX2Zvcl9wZXJsKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9
fiAvXC5wW2xtXSQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5
dGhvbigkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wucHkkLyBv
ciAkZmlsZV9uYW1lID1+IC9tYXN0ZXJcLmNmZyQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25f
bGluZV9yYW5nZXNfZm9yX3N3aWZ0KCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVf
bmFtZSA9fiAvXC5zd2lmdCQvOworCisgICAgIyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2Ug
bGFuZ3VhZ2UgYmFzZWQgb24gdGhlIHNjcmlwdCBpbnRlcnByZXRlci4KKworICAgIG15ICRmaXJz
dF9saW5lID0gPCRmaWxlX2hhbmRsZT47CisgICAgc2VlaygkZmlsZV9oYW5kbGUsIDAsIDApOwor
CisgICAgcmV0dXJuICgpIHVubGVzcyAkZmlyc3RfbGluZSA9fiBtfF4jISg/Oi91c3IvYmluL2Vu
dlxzKyk/KFxTKyl8OworICAgIG15ICRpbnRlcnByZXRlciA9ICQxOworCisgICAgcmV0dXJuIGdl
dF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUp
IGlmICRpbnRlcnByZXRlciA9fiAvcGVybCQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGlu
ZV9yYW5nZXNfZm9yX3B5dGhvbigkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRpbnRlcnBy
ZXRlciA9fiAvcHl0aG9uJC87CisKKyAgICByZXR1cm4gKCk7Cit9CisKKyMgUmVhZCBhIGZpbGUg
YW5kIGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2Ug
QyBmdW5jdGlvbnMuCisjIEEgZnVuY3Rpb24gbmFtZSBpcyB0aGUgbGFzdCB3b3JkIGJlZm9yZSBh
biBvcGVuIHBhcmVudGhlc2lzIGJlZm9yZSB0aGUgb3V0ZXIKKyMgbGV2ZWwgb3BlbiBicmFjZS4g
QSBmdW5jdGlvbiBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgbGFzdCBj
bG9zZQorIyBicmFjZSBvciBzZW1pY29sb24gYmVmb3JlIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBl
bmRzIGF0IHRoZSBjbG9zZSBicmFjZS4KKyMgQ29tbWVudCBoYW5kbGluZyBpcyBzaW1wbGUtbWlu
ZGVkIGJ1dCB3aWxsIHdvcmsgZm9yIGFsbCBidXQgcGF0aG9sb2dpY2FsIGNhc2VzLgorIworIyBS
ZXN1bHQgaXMgYSBsaXN0IG9mIHRyaXBsZXM6IFsgc3RhcnRfbGluZSwgZW5kX2xpbmUsIGZ1bmN0
aW9uX25hbWUgXS4KKworc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfY3BwIHsKKyAg
ICBteSAoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSA9IEBfOworCisgICAgbXkgQHJhbmdlczsK
KworICAgIG15ICRpbl9jb21tZW50ID0gMDsKKyAgICBteSAkaW5fbWFjcm8gPSAwOworICAgIG15
ICRpbl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOworICAgIG15ICRpbl9wYXJlbnRoZXNlcyA9IDA7
CisgICAgbXkgJHF1b3RhdGlvbl9tYXJrOworICAgIG15ICRpbl9icmFjZXMgPSAwOworICAgIG15
ICRpbl90b3BsZXZlbF9hcnJheV9icmFjZSA9IDA7CisgICAgbXkgJGJyYWNlX3N0YXJ0ID0gMDsK
KyAgICBteSAkYnJhY2VfZW5kID0gMDsKKyAgICBteSAkbmFtZXNwYWNlX3N0YXJ0ID0gLTE7Cisg
ICAgbXkgJHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9IDA7CisgICAgbXkgJGVxdWFsX29i
c2VydmVkID0gMDsKKworICAgIG15ICR3b3JkID0gIiI7CisgICAgbXkgJGludGVyZmFjZV9uYW1l
ID0gIiI7CisKKyAgICBteSAkcG90ZW50aWFsX21ldGhvZF9jaGFyID0gIiI7CisgICAgbXkgJHBv
dGVudGlhbF9tZXRob2Rfc3BlYyA9ICIiOworCisgICAgbXkgJHBvdGVudGlhbF9zdGFydCA9IDA7
CisgICAgbXkgJHBvdGVudGlhbF9uYW1lID0gIiI7CisKKyAgICBteSAkc3RhcnQgPSAwOworICAg
IG15ICRuYW1lID0gIiI7CisKKyAgICBteSAkbmV4dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSA9
IDA7CisgICAgbXkgJHBvdGVudGlhbF9uYW1lc3BhY2UgPSAiIjsKKyAgICBteSBAbmFtZXNwYWNl
czsKKyAgICBteSBAYWxsX25hbWVzcGFjZXM7CisKKyAgICB3aGlsZSAoPCRmaWxlX2hhbmRsZT4p
IHsKKyAgICAgICAgIyBIYW5kbGUgY29udGludWVkIHF1b3RlZCBzdHJpbmcuCisgICAgICAgIGlm
ICgkcXVvdGF0aW9uX21hcmspIHsKKyAgICAgICAgICAgIGlmICghcy0oW15cXF18XFwuKSokcXVv
dGF0aW9uX21hcmstLSkgeworICAgICAgICAgICAgICAgIGlmICghbS1cXCQtKSB7CisgICAgICAg
ICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVf
bmFtZVxuIjsKKyAgICAgICAgICAgICAgICAgICAgdW5kZWYgJHF1b3RhdGlvbl9tYXJrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgdW5kZWYgJHF1b3RhdGlvbl9tYXJrOworICAgICAgICB9CisKKyAgICAgICAgIyBI
YW5kbGUgY29udGludWVkIG11bHRpLWxpbmUgY29tbWVudC4KKyAgICAgICAgaWYgKCRpbl9jb21t
ZW50KSB7CisgICAgICAgICAgICBuZXh0IHVubGVzcyBzLS4qXCovLS07CisgICAgICAgICAgICAk
aW5fY29tbWVudCA9IDA7CisgICAgICAgIH0KKworICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQg
bWFjcm8uCisgICAgICAgIGlmICgkaW5fbWFjcm8pIHsKKyAgICAgICAgICAgICRpbl9tYWNybyA9
IDAgdW5sZXNzIC9cXCQvOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCisgICAgICAg
ICMgSGFuZGxlIHN0YXJ0IG9mIG1hY3JvIChvciBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSku
CisgICAgICAgIGlmICgvXlxzKlwjLykgeworICAgICAgICAgICAgJGluX21hY3JvID0gMSBpZiAv
XihbXlxcXXxcXC4pKlxcJC87CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisKKyAgICAg
ICAgIyBIYW5kbGUgY29tbWVudHMgYW5kIHF1b3RlZCB0ZXh0LgorICAgICAgICB3aGlsZSAobS0o
L1wqfC8vfFwnfFwiKS0pIHsgIyBcJyBhbmQgXCIga2VlcCBlbWFjcyBwZXJsIG1vZGUgaGFwcHkK
KyAgICAgICAgICAgIG15ICRtYXRjaCA9ICQxOworICAgICAgICAgICAgaWYgKCRtYXRjaCBlcSAi
LyoiKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzLS9cKi4qP1wqLy0tKSB7CisgICAgICAgICAg
ICAgICAgICAgIHMtL1wqLiotLTsKKyAgICAgICAgICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAx
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzaWYgKCRtYXRjaCBlcSAiLy8i
KSB7CisgICAgICAgICAgICAgICAgcy0vLy4qLS07CisgICAgICAgICAgICB9IGVsc2UgeyAjICcg
b3IgIgorICAgICAgICAgICAgICAgIGlmICghcy0kbWF0Y2goW15cXF18XFwuKSo/JG1hdGNoLS0p
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzLSRtYXRjaC4qXFwkLS0pIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZp
bGVfbmFtZVxuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtJG1hdGNoLiotLTsKKyAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRxdW90YXRp
b25fbWFyayA9ICRtYXRjaDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisKKyAgICAgICAgIyBjb250aW51ZWQgbWV0
aG9kIGRlY2xhcmF0aW9uCisgICAgICAgIGlmICgkaW5fbWV0aG9kX2RlY2xhcmF0aW9uKSB7Cisg
ICAgICAgICAgICAgIG15ICRvcmlnaW5hbCA9ICRfOworICAgICAgICAgICAgICBteSAkbWV0aG9k
X2NvbnQgPSAkXzsKKworICAgICAgICAgICAgICBjaG9tcCAkbWV0aG9kX2NvbnQ7CisgICAgICAg
ICAgICAgICRtZXRob2RfY29udCA9fiBzL1s7XHtdLiovLzsKKyAgICAgICAgICAgICAgJHBvdGVu
dGlhbF9tZXRob2Rfc3BlYyA9ICIke3BvdGVudGlhbF9tZXRob2Rfc3BlY30gJHttZXRob2RfY29u
dH0iOworCisgICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOworICAgICAgICAgICAgICBpZiAo
LzsvKSB7CisgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gMDsKKyAgICAgICAg
ICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX3NwZWMgPSAiIjsKKyAgICAgICAgICAgICAgICAg
ICRwb3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRpbl9tZXRo
b2RfZGVjbGFyYXRpb24gPSAwOworICAgICAgICAgICAgICAgICAgcy9eW147XHtdKi8vOworICAg
ICAgICAgICAgICB9IGVsc2lmICgvey8pIHsKKyAgICAgICAgICAgICAgICAgIG15ICRzZWxlY3Rv
ciA9IG1ldGhvZF9kZWNsX3RvX3NlbGVjdG9yICgkcG90ZW50aWFsX21ldGhvZF9zcGVjKTsKKyAg
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIke3BvdGVudGlhbF9tZXRob2RfY2hh
cn1cWyR7aW50ZXJmYWNlX25hbWV9ICR7c2VsZWN0b3J9XF0iOworCisgICAgICAgICAgICAgICAg
ICAkcG90ZW50aWFsX21ldGhvZF9zcGVjID0gIiI7CisgICAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX21ldGhvZF9jaGFyID0gIiI7CisgICAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xh
cmF0aW9uID0gMDsKKworICAgICAgICAgICAgICAgICAgJF8gPSAkb3JpZ2luYWw7CisgICAgICAg
ICAgICAgICAgICBzL15bXjt7XSovLzsKKyAgICAgICAgICAgICAgfSBlbHNpZiAoL1xAZW5kLykg
eworICAgICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7CisgICAgICAg
ICAgICAgICAgICAkaW50ZXJmYWNlX25hbWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRfID0g
JG9yaWdpbmFsOworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKworICAgICAgICAjIHN0YXJ0IG9mIG1l
dGhvZCBkZWNsYXJhdGlvbgorICAgICAgICBpZiAoKG15ICRtZXRob2RfY2hhciwgbXkgJG1ldGhv
ZF9zcGVjKSA9IG0mXihbLStdKShbXjAtOTtdW147XSopOz8kJikgeworICAgICAgICAgICAgbXkg
JG9yaWdpbmFsID0gJF87CisKKyAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlX25hbWUpIHsKKyAg
ICAgICAgICAgICAgICBjaG9tcCAkbWV0aG9kX3NwZWM7CisgICAgICAgICAgICAgICAgJG1ldGhv
ZF9zcGVjID1+IHMvXHsuKi8vOworCisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rf
Y2hhciA9ICRtZXRob2RfY2hhcjsKKyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9z
cGVjID0gJG1ldGhvZF9zcGVjOworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAk
LjsKKyAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgd2FybiAiZGVjbGFyaW5nIGEgbWV0aG9kIGJ1
dCBkb24ndCBoYXZlIGludGVyZmFjZSBvbiBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKKyAgICAgICAgICAgIGlmICgv
XHsvKSB7CisgICAgICAgICAgICAgIG15ICRzZWxlY3RvciA9IG1ldGhvZF9kZWNsX3RvX3NlbGVj
dG9yICgkcG90ZW50aWFsX21ldGhvZF9zcGVjKTsKKyAgICAgICAgICAgICAgJHBvdGVudGlhbF9u
YW1lID0gIiR7cG90ZW50aWFsX21ldGhvZF9jaGFyfVxbJHtpbnRlcmZhY2VfbmFtZX0gJHtzZWxl
Y3Rvcn1cXSI7CisKKyAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICIiOwor
ICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9jaGFyID0gIiI7CisgICAgICAgICAgICAg
ICRpbl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOworICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5h
bDsKKyAgICAgICAgICAgICAgcy9eW157XSovLzsKKyAgICAgICAgICAgIH0gZWxzaWYgKC9cQGVu
ZC8pIHsKKyAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7CisgICAgICAg
ICAgICAgICRpbnRlcmZhY2VfbmFtZSA9ICIiOworICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5h
bDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworCisgICAgICAgICMgRmluZCBmdW5jdGlvbiwgaW50ZXJmYWNlIGFu
ZCBtZXRob2QgbmFtZXMuCisgICAgICAgIHdoaWxlIChtJigoPzpbWzp3b3JkOl1dKzo6KSpvcGVy
YXRvcig/OlsgXHRdKlwoXCl8W14oKV0qKXxbWzp3b3JkOl08Pjp+XSt8Wygpe306Oz1dKXxcQCg/
OmltcGxlbWVudGF0aW9ufGludGVyZmFjZXxwcm90b2NvbClccysoXHcrKVtee10qJmcpIHsKKyAg
ICAgICAgICAgICMgU2tpcCBhbiBhcnJheSBkZWZpbml0aW9uIGF0IHRoZSB0b3AgbGV2ZWwuCisg
ICAgICAgICAgICAjIGUuZy4gc3RhdGljIGludCBhcnJbXSA9IHsgMSwgMiwgMyB9OworICAgICAg
ICAgICAgaWYgKCQxKSB7CisgICAgICAgICAgICAgICAgaWYgKCQxIGVxICI9IiBhbmQgISRpbl9w
YXJlbnRoZXNlcyBhbmQgISRpbl9icmFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgJGVxdWFs
X29ic2VydmVkID0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkMSBlcSAieyIgYW5kICRl
cXVhbF9vYnNlcnZlZCkgeworICAgICAgICAgICAgICAgICAgICAjIFRoaXMgJ3snIGlzIHRoZSBi
ZWdpbm5pbmcgb2YgYW4gYXJyYXkgZGVmaW5pdGlvbiwgbm90IHRoZSBiZWdpbm5pbmcgb2YgYSBt
ZXRob2QuCisgICAgICAgICAgICAgICAgICAgICRpbl90b3BsZXZlbF9hcnJheV9icmFjZSA9IDE7
CisgICAgICAgICAgICAgICAgICAgICRpbl9icmFjZXMrKzsKKyAgICAgICAgICAgICAgICAgICAg
JGVxdWFsX29ic2VydmVkID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAg
ICAgICAgICB9IGVsc2lmICgkMSAhfiAvWyBcdF0vKSB7CisgICAgICAgICAgICAgICAgICAgICRl
cXVhbF9vYnNlcnZlZCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAjIGludGVyZmFjZSBuYW1lCisgICAgICAgICAgICBpZiAoJDIpIHsKKyAgICAg
ICAgICAgICAgICAkaW50ZXJmYWNlX25hbWUgPSAkMjsKKyAgICAgICAgICAgICAgICBuZXh0Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCisgICAgICAg
ICAgICBpZiAoJDEgZXEgIigiKSB7CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0g
JHdvcmQgdW5sZXNzICRpbl9wYXJlbnRoZXNlcyB8fCAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNv
bG9uIHx8IGdyZXAgeyAkd29yZCBlcSAkXyB9ICgiQ0ZfRU5VTSIsICJDRl9PUFRJT05TIiwgIk5T
X0VOVU0iLCAiTlNfT1BUSU9OUyIpOworICAgICAgICAgICAgICAgICRpbl9wYXJlbnRoZXNlcysr
OworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMg
Q2xvc2UgcGFyZW50aGVzaXMuCisgICAgICAgICAgICBpZiAoJDEgZXEgIikiKSB7CisgICAgICAg
ICAgICAgICAgJGluX3BhcmVudGhlc2VzLS07CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCQxIGVxICJjb25zdCIgYW5kICEkaW5fcGFyZW50
aGVzZXMpIHsKKyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgLj0gIiBjb25zdCI7Cisg
ICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCQx
IGVxICJ2b2xhdGlsZSIgYW5kICEkaW5fcGFyZW50aGVzZXMpIHsKKyAgICAgICAgICAgICAgICAk
cG90ZW50aWFsX25hbWUgLj0gIiB2b2xhdGlsZSI7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBDKysgYXV0byBmdW5jdGlvbigpIC0+IHR5cGUK
KyAgICAgICAgICAgIGlmICgkMSBlcSAiPiIpIHsKKyAgICAgICAgICAgICAgICAkc2tpcF90aWxf
YnJhY2Vfb3Jfc2VtaWNvbG9uID0gMSB1bmxlc3MgKCRpbl9wYXJlbnRoZXNlcyB8fCAkaW5fYnJh
Y2VzKTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAjIEMrKyBjb25zdHJ1Y3RvciBpbml0aWFsaXplcnMKKyAgICAgICAgICAgIGlmICgkMSBlcSAi
OiIpIHsKKyAgICAgICAgICAgICAgICAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uID0gMSB1
bmxlc3MgKCRpbl9wYXJlbnRoZXNlcyB8fCAkaW5fYnJhY2VzKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgIyBPcGVuIGJyYWNlLgorICAgICAgICAgICAgaWYgKCQxIGVxICJ7Iikgewor
ICAgICAgICAgICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAwOworCisgICAg
ICAgICAgICAgICAgaWYgKCEkaW5fYnJhY2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgk
bmFtZXNwYWNlX3N0YXJ0ID49IDAgYW5kICRuYW1lc3BhY2Vfc3RhcnQgPCAkcG90ZW50aWFsX3N0
YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJG5hbWVzcGFj
ZV9zdGFydCAuICIiLCAkcG90ZW50aWFsX3N0YXJ0IC0gMSwgJG5hbWUgXTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmICgkcG90ZW50aWFsX25hbWVzcGFj
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAbmFtZXNwYWNlcywgJHBvdGVudGlh
bF9uYW1lc3BhY2U7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBhbGxfbmFtZXNwYWNl
cywgJHBvdGVudGlhbF9uYW1lc3BhY2U7CisgICAgICAgICAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX25hbWVzcGFjZSA9ICIiOworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkbmFt
ZXNwYWNlc1stMV07CisgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0g
JC4gKyAxOworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgICAgICMgUHJvbW90ZSBwb3RlbnRpYWwgbmFtZSB0byBy
ZWFsIGZ1bmN0aW9uIG5hbWUgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICMgc3RhcnQgb2Yg
dGhlIG91dGVyIGxldmVsIHNldCBvZiBicmFjZXMgKGZ1bmN0aW9uIGJvZHk/KS4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCRwb3RlbnRpYWxfc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICRzdGFydCA9ICRwb3RlbnRpYWxfc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAk
bmFtZSA9ICRwb3RlbnRpYWxfbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChAbmFt
ZXNwYWNlcyAmJiAkbmFtZSAmJiAobGVuZ3RoKCRuYW1lKSA8IDIgfHwgc3Vic3RyKCRuYW1lLDEs
MSkgbmUgIlsiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gam9pbiAo
Jzo6JywgQG5hbWVzcGFjZXMsICRuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICRpbl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOworCisgICAgICAgICAgICAgICAgJGJyYWNlX3N0
YXJ0ID0gJC4gaWYgKCEkaW5fYnJhY2VzKTsKKyAgICAgICAgICAgICAgICAkaW5fYnJhY2VzKys7
CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBD
bG9zZSBicmFjZS4KKyAgICAgICAgICAgIGlmICgkMSBlcSAifSIpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoISRpbl9icmFjZXMgJiYgQG5hbWVzcGFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCRuYW1lc3BhY2Vfc3RhcnQgPj0gMCBhbmQgJG5hbWVzcGFjZV9zdGFydCA8ICQuKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJG5hbWVzcGFjZV9zdGFydCAu
ICIiLCAkLiAtIDEsICRuYW1lIF07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBwb3AgQG5hbWVzcGFjZXM7CisgICAgICAgICAgICAgICAgICAgIGlmIChAbmFt
ZXNwYWNlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkbmFtZXNwYWNlc1st
MV07CisgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0gJC4gKyAxOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJG5h
bWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAtMTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBuZXh0OworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICRpbl9icmFjZXMtLTsKKyAgICAgICAgICAg
ICAgICAkYnJhY2VfZW5kID0gJC4gaWYgKCEkaW5fYnJhY2VzKTsKKworICAgICAgICAgICAgICAg
ICMgRW5kIG9mIGFuIG91dGVyIGxldmVsIHNldCBvZiBicmFjZXMuCisgICAgICAgICAgICAgICAg
IyBUaGlzIGNvdWxkIGJlIGEgZnVuY3Rpb24gYm9keS4KKyAgICAgICAgICAgICAgICBpZiAoISRp
bl9icmFjZXMgYW5kICRuYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyB0aGUg
ZW5kIG9mIGFuIGFycmF5IGRlZmluaXRpb24gYXQgdGhlIHRvcCBsZXZlbCwgbm90IHRoZSBlbmQg
b2YgYSBtZXRob2QuCisgICAgICAgICAgICAgICAgICAgIGlmICgkaW5fdG9wbGV2ZWxfYXJyYXlf
YnJhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRpbl90b3BsZXZlbF9hcnJheV9icmFj
ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBbICRzdGFydCwgJC4sICRu
YW1lIF07CisgICAgICAgICAgICAgICAgICAgIGlmIChAbmFtZXNwYWNlcykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJG5hbWUgPSAkbmFtZXNwYWNlc1stMV07CisgICAgICAgICAgICAgICAg
ICAgICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAiIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQg
PSAwOworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAg
ICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgU2VtaWNvbG9uLgorICAg
ICAgICAgICAgaWYgKCQxIGVxICI7IikgeworICAgICAgICAgICAgICAgICRza2lwX3RpbF9icmFj
ZV9vcl9zZW1pY29sb24gPSAwOworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAw
OworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAg
ICRpbl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICMgSWdub3JlICJjb25zdCIgbWV0aG9kIHF1YWxpZmll
ci4KKyAgICAgICAgICAgIGlmICgkMSBlcSAiY29uc3QiKSB7CisgICAgICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCQxIGVxICJuYW1lc3BhY2UiIHx8
ICQxIGVxICJjbGFzcyIgfHwgJDEgZXEgInN0cnVjdCIpIHsKKyAgICAgICAgICAgICAgICAkbmV4
dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBXb3JkLgorICAgICAgICAgICAgJHdvcmQgPSAk
MTsKKyAgICAgICAgICAgIGlmICghJHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbikgeworICAg
ICAgICAgICAgICAgIGlmICgkbmV4dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSkgeworICAgICAg
ICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVzcGFjZSA9ICR3b3JkOworICAgICAgICAgICAg
ICAgICAgICAkbmV4dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSA9IDA7CisgICAgICAgICAgICAg
ICAgfSBlbHNpZiAoJHBvdGVudGlhbF9uYW1lc3BhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAg
JHBvdGVudGlhbF9uYW1lc3BhY2UgPSAiIjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBpZiAoISRpbl9wYXJlbnRoZXNlcykgeworICAgICAgICAgICAgICAgICAgICAkcG90
ZW50aWFsX3N0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0g
IiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghJHBvdGVudGlhbF9z
dGFydCkgeworICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47CisgICAg
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHdhcm4gIm1pc3NpbmcgY2xv
c2UgYnJhY2VzIGluICRmaWxlX25hbWUgKHByb2JhYmxlIHN0YXJ0IGF0ICRicmFjZV9zdGFydClc
biIgaWYgKCRpbl9icmFjZXMgPiAwKTsKKyAgICB3YXJuICJ0b28gbWFueSBjbG9zZSBicmFjZXMg
aW4gJGZpbGVfbmFtZSAocHJvYmFibGUgc3RhcnQgYXQgJGJyYWNlX2VuZClcbiIgaWYgKCRpbl9i
cmFjZXMgPCAwKTsKKworICAgIHdhcm4gIm1pc21hdGNoZWQgcGFyZW50aGVzZXMgaW4gJGZpbGVf
bmFtZVxuIiBpZiAkaW5fcGFyZW50aGVzZXM7CisKKyAgICByZXR1cm4gZGVsZXRlX25hbWVzcGFj
ZXNfZnJvbV9yYW5nZXNfZm9yX2NwcChcQHJhbmdlcywgXEBhbGxfbmFtZXNwYWNlcyk7Cit9CisK
KworIyBUYWtlIGluIHJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgbGluZSByYW5nZXMgZm9yIEMg
ZnVuY3Rpb25zIGluIGEgZ2l2ZW4gZmlsZQorIyBhbmQgYW4gYXJyYXkgb2YgbmFtZXNwYWNlcyBk
ZWNsYXJlZCBpbiB0aGF0IGZpbGUgYW5kIHJldHVybiBhbiB1cGRhdGVkCisjIGxpc3Qgb2YgbGlu
ZSByYW5nZXMgd2l0aCB0aGUgbmFtZXNwYWNlcyByZW1vdmVkLgorCitzdWIgZGVsZXRlX25hbWVz
cGFjZXNfZnJvbV9yYW5nZXNfZm9yX2NwcCB7CisgICAgbXkgKCRyYW5nZXNfcmVmLCAkbmFtZXNw
YWNlc19yZWYpID0gQF87CisgICAgcmV0dXJuIGdyZXAgeyFpc19mdW5jdGlvbl9pbl9uYW1lc3Bh
Y2UoJG5hbWVzcGFjZXNfcmVmLCAkJF9bMl0pfSBAJHJhbmdlc19yZWY7Cit9CisKKworc3ViIGlz
X2Z1bmN0aW9uX2luX25hbWVzcGFjZSB7CisgICAgbXkgKCRuYW1lc3BhY2VzX3JlZiwgJGZ1bmN0
aW9uX25hbWUpID0gQF87CisgICAgcmV0dXJuIGdyZXAgeyRfIGVxICRmdW5jdGlvbl9uYW1lfSBA
JG5hbWVzcGFjZXNfcmVmOworfQorCisKKyMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxp
bmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgSmF2YQorIyBjbGFzc2VzLCBp
bnRlcmZhY2VzIGFuZCBtZXRob2RzLgorIworIyBBIGNsYXNzIG9yIGludGVyZmFjZSBuYW1lIGlz
IHRoZSB3b3JkIHRoYXQgaW1tZWRpYXRlbHkgZm9sbG93cworIyBgY2xhc3MnIG9yIGBpbnRlcmZh
Y2UnIHdoZW4gZm9sbG93ZWQgYnkgYW4gb3BlbiBjdXJseSBicmFjZSBhbmQgbm90CisjIGEgc2Vt
aWNvbG9uLiBJdCBjYW4gYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWwsIG9yIGluc2lkZSBhbm90aGVy
IGNsYXNzCisjIG9yIGludGVyZmFjZSBibG9jaywgYnV0IG5vdCBpbnNpZGUgYSBmdW5jdGlvbiBi
bG9jaworIworIyBBIGNsYXNzIG9yIGludGVyZmFjZSBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJh
Y3RlciBhZnRlciB0aGUgZmlyc3QgY2xvc2UKKyMgYnJhY2Ugb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9u
IG5hbWUgYW5kIGVuZHMgYXQgdGhlIGNsb3NlIGJyYWNlLgorIworIyBBIGZ1bmN0aW9uIG5hbWUg
aXMgdGhlIGxhc3Qgd29yZCBiZWZvcmUgYW4gb3BlbiBwYXJlbnRoZXNpcyBiZWZvcmUKKyMgYW4g
b3BlbiBicmFjZSByYXRoZXIgdGhhbiBhIHNlbWljb2xvbi4gSXQgY2FuIGFwcGVhciBhdCB0b3Ag
bGV2ZWwgb3IKKyMgaW5zaWRlIGEgY2xhc3Mgb3IgaW50ZXJmYWNlIGJsb2NrLCBidXQgbm90IGlu
c2lkZSBhIGZ1bmN0aW9uIGJsb2NrLgorIworIyBBIGZ1bmN0aW9uIHN0YXJ0cyBhdCB0aGUgZmly
c3QgY2hhcmFjdGVyIGFmdGVyIHRoZSBmaXJzdCBjbG9zZQorIyBicmFjZSBvciBhZnRlciB0aGUg
ZnVuY3Rpb24gbmFtZSBhbmQgZW5kcyBhdCB0aGUgY2xvc2UgYnJhY2UuCisjCisjIENvbW1lbnQg
aGFuZGxpbmcgaXMgc2ltcGxlLW1pbmRlZCBidXQgd2lsbCB3b3JrIGZvciBhbGwgYnV0IHBhdGhv
bG9naWNhbCBjYXNlcy4KKyMKKyMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0
X2xpbmUsIGVuZF9saW5lLCBmdW5jdGlvbl9uYW1lIF0uCisKK3N1YiBnZXRfZnVuY3Rpb25fbGlu
ZV9yYW5nZXNfZm9yX2phdmEgeworICAgIG15ICgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0g
QF87CisKKyAgICBteSBAY3VycmVudF9zY29wZXM7CisKKyAgICBteSBAcmFuZ2VzOworCisgICAg
bXkgJGluX2NvbW1lbnQgPSAwOworICAgIG15ICRpbl9tYWNybyA9IDA7CisgICAgbXkgJGluX3Bh
cmVudGhlc2VzID0gMDsKKyAgICBteSAkaW5fYnJhY2VzID0gMDsKKyAgICBteSAkaW5fbm9uX2Js
b2NrX2JyYWNlcyA9IDA7CisgICAgbXkgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAw
OworICAgIG15ICRpbl9jbGFzc19kZWNsYXJhdGlvbiA9IDA7CisKKyAgICBteSAkd29yZCA9ICIi
OworCisgICAgbXkgJHBvdGVudGlhbF9zdGFydCA9IDA7CisgICAgbXkgJHBvdGVudGlhbF9uYW1l
ID0gIiI7CisgICAgbXkgJHBvdGVudGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7
CisKKyAgICBteSAkc3RhcnQgPSAwOworICAgIG15ICRuYW1lID0gIiI7CisgICAgbXkgJGN1cnJl
bnRfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAwOworCisgICAgd2hpbGUgKDwkZmlsZV9o
YW5kbGU+KSB7CisgICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQu
CisgICAgICAgIGlmICgkaW5fY29tbWVudCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0u
KlwqLy0tOworICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAwOworICAgICAgICB9CisKKyAgICAg
ICAgIyBIYW5kbGUgY29udGludWVkIG1hY3JvLgorICAgICAgICBpZiAoJGluX21hY3JvKSB7Cisg
ICAgICAgICAgICAkaW5fbWFjcm8gPSAwIHVubGVzcyAvXFwkLzsKKyAgICAgICAgICAgIG5leHQ7
CisgICAgICAgIH0KKworICAgICAgICAjIEhhbmRsZSBzdGFydCBvZiBtYWNybyAob3IgYW55IHBy
ZXByb2Nlc3NvciBkaXJlY3RpdmUpLgorICAgICAgICBpZiAoL15ccypcIy8pIHsKKyAgICAgICAg
ICAgICRpbl9tYWNybyA9IDEgaWYgL14oW15cXF18XFwuKSpcXCQvOworICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgfQorCisgICAgICAgICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4
dC4KKyAgICAgICAgd2hpbGUgKG0tKC9cKnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAg
ZW1hY3MgcGVybCBtb2RlIGhhcHB5CisgICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKKyAgICAg
ICAgICAgIGlmICgkbWF0Y2ggZXEgIi8qIikgeworICAgICAgICAgICAgICAgIGlmICghcy0vXCou
Kj9cKi8tLSkgeworICAgICAgICAgICAgICAgICAgICBzLS9cKi4qLS07CisgICAgICAgICAgICAg
ICAgICAgICRpbl9jb21tZW50ID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikgeworICAgICAgICAgICAgICAgIHMtLy8uKi0tOworICAg
ICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKKyAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNo
KFteXFxdfFxcLikqPyRtYXRjaC0tKSB7CisgICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21h
dGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKKyAgICAgICAgICAgICAg
ICAgICAgcy0kbWF0Y2guKi0tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgICMgRmluZCBmdW5jdGlvbiBuYW1lcy4KKyAgICAgICAgd2hpbGUg
KG0tKFx3K3xbKCl7fTtdKS1nKSB7CisgICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCisg
ICAgICAgICAgICBpZiAoJDEgZXEgIigiKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkaW5fcGFy
ZW50aGVzZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7
CisgICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZh
Y2UgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkaW5fcGFyZW50aGVz
ZXMrKzsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAjIENsb3NlIHBhcmVudGhlc2lzLgorICAgICAgICAgICAgaWYgKCQxIGVxICIpIikgeworICAg
ICAgICAgICAgICAgICRpbl9wYXJlbnRoZXNlcy0tOworICAgICAgICAgICAgICAgIG5leHQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgT3BlbiBicmFjZS4KKyAgICAgICAgICAgIGlm
ICgkMSBlcSAieyIpIHsKKyAgICAgICAgICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAw
OworCisgICAgICAgICAgICAgICAgIyBQcm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVu
Y3Rpb24gbmFtZSBhdCB0aGUKKyAgICAgICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBvdXRlciBs
ZXZlbCBzZXQgb2YgYnJhY2VzIChmdW5jdGlvbi9jbGFzcy9pbnRlcmZhY2UgYm9keT8pLgorICAg
ICAgICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19icmFjZXMKKyAgICAgICAgICAgICAgICAg
ICAgYW5kICghJGluX2JyYWNlcyBvciAkY3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFj
ZSkKKyAgICAgICAgICAgICAgICAgICAgYW5kICRwb3RlbnRpYWxfc3RhcnQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCRuYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2gg
QHJhbmdlcywgWyAkc3RhcnQsICgkLiAtIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgam9pbiAoJy4nLCBAY3VycmVudF9zY29wZXMpIF07CisgICAgICAgICAg
ICAgICAgICAgIH0KKworCisgICAgICAgICAgICAgICAgICAgICRjdXJyZW50X25hbWVfaXNfY2xh
c3Nfb3JfaW50ZXJmYWNlID0gJHBvdGVudGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZTsK
KworICAgICAgICAgICAgICAgICAgICAkc3RhcnQgPSAkcG90ZW50aWFsX3N0YXJ0OworICAgICAg
ICAgICAgICAgICAgICAkbmFtZSA9ICRwb3RlbnRpYWxfbmFtZTsKKworICAgICAgICAgICAgICAg
ICAgICBwdXNoIChAY3VycmVudF9zY29wZXMsICRuYW1lKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAkaW5fbm9uX2Jsb2NrX2JyYWNlcysrOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAg
ICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAwOworCisgICAgICAgICAgICAgICAgJGlu
X2JyYWNlcysrOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICMgQ2xvc2UgYnJhY2UuCisgICAgICAgICAgICBpZiAoJDEgZXEgIn0iKSB7CisgICAg
ICAgICAgICAgICAgJGluX2JyYWNlcy0tOworCisgICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4g
b3V0ZXIgbGV2ZWwgc2V0IG9mIGJyYWNlcy4KKyAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQg
YmUgYSBmdW5jdGlvbiBib2R5LgorICAgICAgICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19i
cmFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJHN0YXJ0LCAkLiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBqb2luICgnLicsIEBjdXJyZW50X3Njb3BlcykgXTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgcG9wIChAY3VycmVudF9zY29wZXMpOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoQGN1cnJlbnRfc2NvcGVzKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAxOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICRuYW1lID0gICRjdXJyZW50X3Njb3Blc1skI2N1cnJlbnRfc2NvcGVz
LTFdOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkY3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkbmFtZSA9ICAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICRpbl9ub25fYmxvY2tfYnJhY2VzLS0gaWYgJGluX25vbl9ibG9ja19icmFjZXM7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Cisg
ICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBTZW1pY29sb24uCisgICAgICAgICAg
ICBpZiAoJDEgZXEgIjsiKSB7CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7
CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICAgICAg
bmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIpIHsK
KyAgICAgICAgICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAxOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIgb3IgKCEkaW5fY2xhc3NfZGVjbGFyYXRp
b24gYW5kICQxIGVxICJpbnRlcmZhY2UiKSkgeworICAgICAgICAgICAgICAgICRjbGFzc19vcl9p
bnRlcmZhY2VfanVzdF9zZWVuID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAjIFdvcmQuCisgICAgICAgICAgICAkd29yZCA9ICQxOworICAg
ICAgICAgICAgaWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGNs
YXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVu
dGlhbF9uYW1lID0gJHdvcmQ7CisgICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQg
PSAkLjsKKyAgICAgICAgICAgICAgICAgICAgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4g
PSAwOworICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVfaXNfY2xhc3Nfb3JfaW50
ZXJmYWNlID0gMTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoISRwb3RlbnRpYWxfc3RhcnQpIHsKKyAg
ICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47CisgICAgICAgICAgICAgICAgJHBv
dGVudGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkY2xhc3Nfb3Jf
aW50ZXJmYWNlX2p1c3Rfc2VlbiA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3YXJuICJt
aXNtYXRjaGVkIGJyYWNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9icmFjZXM7CisgICAgd2Fy
biAibWlzbWF0Y2hlZCBwYXJlbnRoZXNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9wYXJlbnRo
ZXNlczsKKworICAgIHJldHVybiBAcmFuZ2VzOworfQorCisKKworIyBSZWFkIGEgZmlsZSBhbmQg
Z2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZQorIyBK
YXZhU2NyaXB0IGZ1bmN0aW9ucyBvciBtZXRob2RzLgorIworIyBBIGZ1bmN0aW9uIG5hbWUgaXMg
dGhlIHdvcmQgdGhhdCBpbW1lZGlhdGVseSBmb2xsb3dzIGBmdW5jdGlvbicgd2hlbgorIyBmb2xs
b3dlZCBieSBhbiBvcGVuIGN1cmx5IGJyYWNlLiBJdCBjYW4gYXBwZWFyIGF0IHRoZSB0b3AgbGV2
ZWwsCisjIG9yIGluc2lkZSBvdGhlciBmdW5jdGlvbnMuIEZvciBleGFtcGxlOgorIworIyAgICBm
dW5jdGlvbiBuYW1lKCkgeyAvLyAobmFtZSkKKyMgICAgICAgIGZ1bmN0aW9uIGlubmVyKCkgeyB9
IC8vIChuYW1lLmlubmVyKQorIyAgICB9CisjCisjIEFuIGFub255bW91cyBmdW5jdGlvbiBuYW1l
IGlzIHRoZSBpZGVudGlmaWVyIG9uIHRoZSBsZWZ0IGhhbmQgc2lkZSBvZgorIyBhbiBhc3NpZ25t
ZW50IHdpdGggdGhlIGVxdWFscyBvcGVyYXRvciBvciBvYmplY3Qgbm90YXRpb24gdGhhdCBoYXMg
YQorIyB2YWx1ZSBzdGFydGluZyB3aXRoIGBmdW5jdGlvbicgZm9sbG93ZWQgYW4gb3BlbiBjdXJs
eSBicmFjZS4KKyMgRm9yIGV4YW1wbGU6CisjCisjICAgIG5hbWVzcGFjZSA9IHsKKyMgICAgICAg
IG5hbWU6IGZ1bmN0aW9uKCkge30gLy8gKG5hbWVzcGFjZS5uYW1lKQorIyAgICB9CisjICAgIG5h
bWVzcGFjZS5Gb28gPSBmdW5jdGlvbigpIHt9IC8vIChuYW1lc3BhY2UuRm9vKQorIworIyBBIGdl
dHRlciBvciBzZXR0ZXIgbmFtZSBpcyB0aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3Mg
YGdldCcgb3IKKyMgYHNldCcgd2hlbiBmb2xsb3dlZCBieSBwYXJhbXMgYW5kIGFuIG9wZW4gY3Vy
bHkgYnJhY2UuIEZvciBleGFtcGxlOgorIworIyAgICBuYW1lc3BhY2UgPSB7CisjICAgICAgZ2V0
IGZvbygpIHt9IC8vIChuYW1lc3BhY2UuZ2V0IGZvbykKKyMgICAgfQorIworIyBBIG1ldGhvZCBu
YW1lIGlzIHRoZSB3b3JkIGltbWVkaWF0ZWx5IGJlZm9yZSBwYXJlbnRoZXNpcywgd2l0aCBhbiBv
cGVuCisjIGN1cmx5IGJyYWNlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBjbG9zaW5nIHBhcmVudGhl
c2lzLiBGb3IgYSBjbGFzcyBleHByZXNzaW9uCisjIHdlIHRha2UgdGhlIGFzc2lnbm1lbnQgaWRl
bnRpZmllciBpbnN0ZWFkIG9mIHRoZSBjbGFzcyBuYW1lIGZvciBuYW1lc3BhY2luZy4KKyMKKyMg
ICAgbmFtZXNwYWNlLkZvbyA9IGNsYXNzIERvZXNOb3RNYXR0ZXIgZXh0ZW5kcyBCYXIgeworIyAg
ICAgICAgY29uc3RydWN0b3IoKSB7fSAvLyAobmFtZXNwYWNlLkZvbykKKyMgICAgICAgIHN0YXRp
YyBzdGF0aWNNZXRob2QoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5zdGF0aWNNZXRob2QpCisjICAg
ICAgICBpbnN0YW5jZU1ldGhvZCgpIHt9IC8vIChuYW1lc3BhY2UuRm9vLnByb3RvdHlwZS5pbnN0
YW5jZU1ldGhvZCkKKyMgICAgICAgIGdldCBnZXR0ZXIoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5w
cm90b3R5cGUuZ2V0IGdldHRlcikKKyMgICAgfQorIyAgICBjbGFzcyBDbGFzc05hbWUgeworIyAg
ICAgICAgY29uc3RydWN0b3IoKSB7fSAvLyAoQ2xhc3NOYW1lKQorIyAgICAgICAgbWV0aG9kKCkg
e30gLy8gKENsYXNzTmFtZS5wcm90b3R5cGUubWV0aG9kKQorIyAgICB9CisjCisjIE1ldGhvZHMg
bWF5IGV4aXN0IGluIG9iamVjdCBsaXRlcmFscywgb3V0c2lkZSBvZiBjbGFzc2VzLgorIworIyAg
IEZvby5wcm90b3R5cGUgPSB7CisjICAgICAgIG1ldGhvZCgpIHt9LCAvLyAoRm9vLnByb3RvdHlw
ZS5tZXRob2QpCisjICAgICAgIG90aGVyTWV0aG9kKCkge30gLy8gKEZvby5wcm90b3R5cGUub3Ro
ZXJNZXRob2QpCisjICAgfQorIworIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQg
YnV0IHdpbGwgd29yayBmb3IgYWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCisjCisjIFJlc3Vs
dCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25f
bmFtZSBdLgorCitzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0IHsK
KyAgICBteSAoJGZpbGVIYW5kbGUsICRmaWxlTmFtZSkgPSBAXzsKKworICAgIG15IEBjdXJyZW50
U2NvcGVzOworICAgIG15IEBjdXJyZW50SWRlbnRpZmllcnM7CisgICAgbXkgQGN1cnJlbnRQYXJz
aW5nTW9kZSA9ICgiZ2xvYmFsIik7CisgICAgbXkgQGN1cnJlbnRGdW5jdGlvbk5hbWVzOworICAg
IG15IEBjdXJyZW50RnVuY3Rpb25EZXB0aHM7CisgICAgbXkgQGN1cnJlbnRGdW5jdGlvblN0YXJ0
TGluZXM7CisKKyAgICBteSBAcmFuZ2VzOworCisgICAgbXkgJGluQ29tbWVudCA9IDA7CisgICAg
bXkgJGluUXVvdGVkVGV4dCA9ICIiOworICAgIG15ICRpbkV4dGVuZHMgPSAwOworICAgIG15ICRp
bk1ldGhvZCA9IDA7CisgICAgbXkgJGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzID0gMDsK
KyAgICBteSAkcGFyZW50aGVzZXNEZXB0aCA9IDA7CisgICAgbXkgJGdsb2JhbFBhcmVudGhlc2Vz
RGVwdGggPSAwOworICAgIG15ICRicmFjZXNEZXB0aCA9IDA7CisKKyAgICBteSAkY2xhc3NKdXN0
U2VlbiA9IDA7CisgICAgbXkgJHBhcmVudGhlc2lzSnVzdFNlZW4gPSAwOworICAgIG15ICRmdW5j
dGlvbkp1c3RTZWVuID0gMDsKKyAgICBteSAkZ2V0dGVySnVzdFNlZW4gPSAwOworICAgIG15ICRz
ZXR0ZXJKdXN0U2VlbiA9IDA7CisgICAgbXkgJGFzeW5jSnVzdFNlZW4gPSAwOworICAgIG15ICRh
c3NpZ25tZW50SnVzdFNlZW4gPSAwOworICAgIG15ICRzdGF0aWNPckNvbnRydWN0b3JTZWVuID0g
MDsKKworICAgIG15ICRjdXJyZW50VG9rZW4gPSAiIjsKKyAgICBteSAkbGFzdFRva2VuID0gIiI7
CisgICAgbXkgJHBvc3NpYmxlTWV0aG9kTmFtZSA9ICIiOworICAgIG15ICR3b3JkID0gIiI7CisK
KyAgICB3aGlsZSAoPCRmaWxlSGFuZGxlPikgeworICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQg
bXVsdGktbGluZSBjb21tZW50LgorICAgICAgICBpZiAoJGluQ29tbWVudCkgeworICAgICAgICAg
ICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOworICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7Cisg
ICAgICAgIH0KKworICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgcXVvdGVkIHRleHQuCisgICAg
ICAgIGlmICgkaW5RdW90ZWRUZXh0IG5lICIiKSB7CisgICAgICAgICAgICBuZXh0IGlmIC9cXCQv
OworICAgICAgICAgICAgcy0oW15cXF18XFwuKSo/JGluUXVvdGVkVGV4dC0tOworICAgICAgICAg
ICAgJGluUXVvdGVkVGV4dCA9ICIiOworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29t
bWVudHMgYW5kIHF1b3RlZCB0ZXh0LgorICAgICAgICB3aGlsZSAobS0oL1wqfC8vfFwnfFwiKS0p
IHsgIyBcJyBhbmQgXCIga2VlcCBlbWFjcyBwZXJsIG1vZGUgaGFwcHkKKyAgICAgICAgICAgIG15
ICRtYXRjaCA9ICQxOworICAgICAgICAgICAgaWYgKCRtYXRjaCBlcSAnLyonKSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFzLS9cKi4qP1wqLy0tKSB7CisgICAgICAgICAgICAgICAgICAgIHMtL1wq
LiotLTsKKyAgICAgICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNpZiAoJG1hdGNoIGVxICcvLycpIHsKKyAgICAgICAgICAg
ICAgICBzLS8vLiotLTsKKyAgICAgICAgICAgIH0gZWxzZSB7ICMgJyBvciAiCisgICAgICAgICAg
ICAgICAgaWYgKCFzLSRtYXRjaChbXlxcXXxcXC4pKj8kbWF0Y2gtc3RyaW5nX2FwcGVhcmVkX2hl
cmUtKSB7CisgICAgICAgICAgICAgICAgICAgICRpblF1b3RlZFRleHQgPSAkbWF0Y2ggaWYgL1xc
JC87CisgICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUg
JC4gaW4gJGZpbGVOYW1lXG4iIGlmICRpblF1b3RlZFRleHQgZXEgIiI7CisgICAgICAgICAgICAg
ICAgICAgIHMtJG1hdGNoLiotLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICAjIEZpbmQgZnVuY3Rpb24gbmFtZXMuCisgICAgICAgIHdoaWxl
IChtLShcdyt8Wygpe309OjssLl0pLWcpIHsKKyAgICAgICAgICAgICMgU2tpcCBldmVyeXRoaW5n
IHVudGlsICJ7IiBhZnRlciBleHRlbmRzLgorICAgICAgICAgICAgaWYgKCRpbkV4dGVuZHMpIHsK
KyAgICAgICAgICAgICAgICBuZXh0IGlmICQxIG5lICd7JzsKKyAgICAgICAgICAgICAgICAkaW5F
eHRlbmRzID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgJGxhc3RUb2tlbiA9ICRj
dXJyZW50VG9rZW47CisgICAgICAgICAgICAkY3VycmVudFRva2VuID0gJDE7CisKKyAgICAgICAg
ICAgICMgT3BlbiBwYXJlbnRoZXNpcy4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnKCcpIHsKKyAg
ICAgICAgICAgICAgICAkcGFyZW50aGVzZXNEZXB0aCsrOworICAgICAgICAgICAgICAgICRnbG9i
YWxQYXJlbnRoZXNlc0RlcHRoKysgaWYgJGN1cnJlbnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJz
aW5nTW9kZV0gZXEgImdsb2JhbCI7CisgICAgICAgICAgICAgICAgJHBvc3NpYmxlTWV0aG9kTmFt
ZSA9IGpvaW4oJy4nLCBAY3VycmVudElkZW50aWZpZXJzKTsKKyAgICAgICAgICAgICAgICAkaW5B
bm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnMgPSAxIGlmICRmdW5jdGlvbkp1c3RTZWVuOworICAg
ICAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsKKyAgICAgICAgICAgICAgICBuZXh0
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lzLgorICAg
ICAgICAgICAgaWYgKCQxIGVxICcpJykgeworICAgICAgICAgICAgICAgICRwYXJlbnRoZXNlc0Rl
cHRoLS07CisgICAgICAgICAgICAgICAgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGgtLSBpZiAkY3Vy
cmVudFBhcnNpbmdNb2RlWyQjY3VycmVudFBhcnNpbmdNb2RlXSBlcSAiZ2xvYmFsIjsKKyAgICAg
ICAgICAgICAgICBAY3VycmVudElkZW50aWZpZXJzID0gKCkgaWYgJGluQW5vbnltb3VzRnVuY3Rp
b25QYXJhbWV0ZXJzOworICAgICAgICAgICAgICAgICRpbkFub255bW91c0Z1bmN0aW9uUGFyYW1l
dGVycyA9IDA7CisgICAgICAgICAgICAgICAgJHBhcmVudGhlc2lzSnVzdFNlZW4gPSAxOworICAg
ICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgT3BlbiBi
cmFjZS4KKyAgICAgICAgICAgIGlmICgkMSBlcSAneycpIHsKKyAgICAgICAgICAgICAgICBteSAk
bWV0aG9kTmFtZSA9ICIiOworICAgICAgICAgICAgICAgIG15ICRtb2RlID0gJGN1cnJlbnRQYXJz
aW5nTW9kZVskI2N1cnJlbnRQYXJzaW5nTW9kZV07CisKKyAgICAgICAgICAgICAgICAjIE1ldGhv
ZC4KKyAgICAgICAgICAgICAgICBpZiAoKCRtb2RlIGVxICdjbGFzcycgb3IgJG1vZGUgZXEgJ2ds
b2JhbCcpIGFuZCAkcGFyZW50aGVzaXNKdXN0U2VlbiBhbmQgKCRzdGF0aWNPckNvbnRydWN0b3JT
ZWVuIG9yICRwb3NzaWJsZU1ldGhvZE5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgk
bW9kZSBlcSAnY2xhc3MnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kTmFtZSA9
IGpvaW4oJy4nLCAkc3RhdGljT3JDb250cnVjdG9yU2VlbiA/ICIiIDogInByb3RvdHlwZSIsICRw
b3NzaWJsZU1ldGhvZE5hbWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICAgICAgJG1ldGhvZE5hbWUgPSAkcG9zc2libGVNZXRob2ROYW1lOworICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgJG1ldGhvZE5hbWUgPX4g
cy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCisgICAgICAgICAg
ICAgICAgICAgICRtZXRob2ROYW1lID1+IHMvXC4kLy87ICMgUmVtb3ZlIHRyYWlsaW5nIHBlcmlv
ZC4KKworICAgICAgICAgICAgICAgICAgICBteSAkY3VycmVudE1ldGhvZCA9IGpvaW4oJy4nLCBA
Y3VycmVudFNjb3BlcywgJG1ldGhvZE5hbWUpOworICAgICAgICAgICAgICAgICAgICAkY3VycmVu
dE1ldGhvZCA9fiBzL1wuezIsfS9cLi9nOyAjIFJlbW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4K
KyAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRNZXRob2QgPX4gcy9cLiQvLzsgIyBSZW1vdmUg
dHJhaWxpbmcgcGVyaW9kLgorCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJz
aW5nTW9kZSwgIm1ldGhvZCIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVu
Y3Rpb25OYW1lcywgJGN1cnJlbnRNZXRob2QpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBj
dXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0aCk7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAkYnJhY2VzRGVwdGgrKzsKKyAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25KdXN0U2VlbiA9IDA7CisKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50U2NvcGVz
LCBqb2luKCcuJywgJG1ldGhvZE5hbWUgPyAkbWV0aG9kTmFtZSA6IEBjdXJyZW50SWRlbnRpZmll
cnMpKTsKKyAgICAgICAgICAgICAgICBAY3VycmVudElkZW50aWZpZXJzID0gKCk7CisKKyAgICAg
ICAgICAgICAgICAkc3RhdGljT3JDb250cnVjdG9yU2VlbiA9IDA7CisgICAgICAgICAgICAgICAg
bmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBDbG9zZSBicmFjZS4KKyAgICAg
ICAgICAgIGlmICgkMSBlcSAnfScpIHsKKyAgICAgICAgICAgICAgICAkYnJhY2VzRGVwdGgtLTsK
KyAgICAgICAgICAgICAgICAkZnVuY3Rpb25KdXN0U2VlbiA9IDA7CisKKyAgICAgICAgICAgICAg
ICBpZiAoQGN1cnJlbnRGdW5jdGlvbkRlcHRocyBhbmQgJGJyYWNlc0RlcHRoID09ICRjdXJyZW50
RnVuY3Rpb25EZXB0aHNbJCNjdXJyZW50RnVuY3Rpb25EZXB0aHNdKSB7CisgICAgICAgICAgICAg
ICAgICAgIHBvcChAY3VycmVudEZ1bmN0aW9uRGVwdGhzKTsKKyAgICAgICAgICAgICAgICAgICAg
cG9wKEBjdXJyZW50UGFyc2luZ01vZGUpOworCisgICAgICAgICAgICAgICAgICAgIG15ICRjdXJy
ZW50TmFtZSA9IHBvcChAY3VycmVudEZ1bmN0aW9uTmFtZXMpOworICAgICAgICAgICAgICAgICAg
ICBteSAkc3RhcnQgPSBwb3AoQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMpOworCisgICAgICAg
ICAgICAgICAgICAgICRjdXJyZW50TmFtZSA9fiBzL15cLi8vZzsgIyBSZW1vdmVzIGxlYWRpbmcg
cGVyaW9kcy4KKworICAgICAgICAgICAgICAgICAgICBwdXNoKEByYW5nZXMsIFskc3RhcnQsICQu
LCAkY3VycmVudE5hbWVdKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBw
b3AoQGN1cnJlbnRTY29wZXMpOworICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRpZmllcnMg
PSAoKTsKKworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICMgRG90LgorICAgICAgICAgICAgaWYgKCQxIGVxICcuJykgeworICAgICAgICAgICAgICAg
IG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgU2VtaWNvbG9uIG9yIGNvbW1h
LgorICAgICAgICAgICAgaWYgKCQxIGVxICc7JyBvciAkMSBlcSAnLCcpIHsKKyAgICAgICAgICAg
ICAgICBAY3VycmVudElkZW50aWZpZXJzID0gKCk7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBDbGFzcy4KKyAgICAgICAgICAgIGlmICgkMSBl
cSAnY2xhc3MnKSB7CisgICAgICAgICAgICAgICAgJGNsYXNzSnVzdFNlZW4gPSAxOworICAgICAg
ICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgRXh0ZW5kcy4K
KyAgICAgICAgICAgIGlmICgkMSBlcSAnZXh0ZW5kcycpIHsKKyAgICAgICAgICAgICAgICAkaW5F
eHRlbmRzID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAjIEZ1bmN0aW9uLgorICAgICAgICAgICAgaWYgKCQxIGVxICdmdW5jdGlvbicpIHsK
KyAgICAgICAgICAgICAgICAkZnVuY3Rpb25KdXN0U2VlbiA9IDE7CisKKyAgICAgICAgICAgICAg
ICBpZiAoJGFzc2lnbm1lbnRKdXN0U2VlbikgeworICAgICAgICAgICAgICAgICAgICBteSAkY3Vy
cmVudEZ1bmN0aW9uID0gam9pbignLicsIChAY3VycmVudFNjb3BlcywgQGN1cnJlbnRJZGVudGlm
aWVycykpOworICAgICAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID1+IHMvXC57Mix9
L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgorCisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGN1cnJlbnRQYXJzaW5nTW9kZSwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVudEZ1bmN0aW9uKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVw
dGgpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25TdGFydExpbmVz
LCAkLik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgIyBHZXR0ZXIgcHJlZml4LgorICAgICAgICAgICAgaWYg
KCQxIGVxICdnZXQnKSB7CisgICAgICAgICAgICAgICAgbmV4dCBpZiAkbGFzdFRva2VuIGVxICcu
JzsgIyBBdm9pZCBtYXAuZ2V0KC4uLikuCisgICAgICAgICAgICAgICAgJGdldHRlckp1c3RTZWVu
ID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAjIFNldHRlciBwcmVmaXguCisgICAgICAgICAgICBpZiAoJDEgZXEgJ3NldCcpIHsKKyAgICAg
ICAgICAgICAgICBuZXh0IGlmICRsYXN0VG9rZW4gZXEgJy4nOyAjIEF2b2lkIG1hcC5zZXQoLi4u
KS4KKyAgICAgICAgICAgICAgICAkc2V0dGVySnVzdFNlZW4gPSAxOworICAgICAgICAgICAgICAg
IG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQXN5bmMgcHJlZml4LgorICAg
ICAgICAgICAgaWYgKCQxIGVxICdhc3luYycpIHsKKyAgICAgICAgICAgICAgICBuZXh0IGlmICRs
YXN0VG9rZW4gZXEgJy4nOworICAgICAgICAgICAgICAgICRhc3luY0p1c3RTZWVuID0gMTsKKyAg
ICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIFN0YXRp
Yy4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnc3RhdGljJyBvciAkMSBlcSAnY29uc3RydWN0b3In
KSB7CisgICAgICAgICAgICAgICAgJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gPSAxOworICAgICAg
ICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQXNzaWdubWVu
dCBvcGVyYXRvci4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnPScgb3IgJDEgZXEgJzonKSB7Cisg
ICAgICAgICAgICAgICAgJGFzc2lnbm1lbnRKdXN0U2VlbiA9IDE7CisgICAgICAgICAgICAgICAg
bmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbmV4dCBpZiAkcGFyZW50aGVzZXNE
ZXB0aCA+ICRnbG9iYWxQYXJlbnRoZXNlc0RlcHRoOworCisgICAgICAgICAgICAjIFdvcmQuCisg
ICAgICAgICAgICAkd29yZCA9ICQxOworCisgICAgICAgICAgICBpZiAoJGNsYXNzSnVzdFNlZW4p
IHsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50SWRlbnRpZmllcnMsICR3b3JkKSBpZiAh
JGFzc2lnbm1lbnRKdXN0U2VlbjsKKworICAgICAgICAgICAgICAgIG15ICRjdXJyZW50Q2xhc3Mg
PSBqb2luKCcuJywgKEBjdXJyZW50U2NvcGVzLCBAY3VycmVudElkZW50aWZpZXJzKSk7CisgICAg
ICAgICAgICAgICAgJGN1cnJlbnRDbGFzcyA9fiBzL1wuezIsfS9cLi9nOyAjIFJlbW92ZXMgY29u
c2VjdXRpdmUgcGVyaW9kcy4KKworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzaW5n
TW9kZSwgImNsYXNzIik7CisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uTmFt
ZXMsICRjdXJyZW50Q2xhc3MpOworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlv
bkRlcHRocywgJGJyYWNlc0RlcHRoKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVu
Y3Rpb25TdGFydExpbmVzLCAkLik7CisgICAgICAgICAgICB9IGVsc2lmICgkZ2V0dGVySnVzdFNl
ZW4gb3IgJHNldHRlckp1c3RTZWVuIG9yICRhc3luY0p1c3RTZWVuKSB7CisgICAgICAgICAgICAg
ICAgJHdvcmQgPSAiZ2V0ICR3b3JkIiBpZiAkZ2V0dGVySnVzdFNlZW47CisgICAgICAgICAgICAg
ICAgJHdvcmQgPSAic2V0ICR3b3JkIiBpZiAkc2V0dGVySnVzdFNlZW47CisgICAgICAgICAgICAg
ICAgJHdvcmQgPSAiYXN5bmMgJHdvcmQiIGlmICRhc3luY0p1c3RTZWVuOworCisgICAgICAgICAg
ICAgICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAkd29yZCk7CisKKyAgICAgICAgICAgICAg
ICBteSAkbW9kZSA9ICRjdXJyZW50UGFyc2luZ01vZGVbJCNjdXJyZW50UGFyc2luZ01vZGVdOwor
ICAgICAgICAgICAgICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSBqb2luKCcuJywgKEBjdXJyZW50
U2NvcGVzLCAoJG1vZGUgZXEgJ2NsYXNzJyBhbmQgISRzdGF0aWNPckNvbnRydWN0b3JTZWVuKSA/
ICJwcm90b3R5cGUiIDogIiIsIEBjdXJyZW50SWRlbnRpZmllcnMpKTsKKyAgICAgICAgICAgICAg
ICAkY3VycmVudEZ1bmN0aW9uID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2
ZSBwZXJpb2RzLgorCisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAi
ZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywg
JGN1cnJlbnRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9u
RGVwdGhzLCAkYnJhY2VzRGVwdGgpOworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5j
dGlvblN0YXJ0TGluZXMsICQuKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbkp1c3RT
ZWVuIGFuZCAhJGFzc2lnbm1lbnRKdXN0U2VlbikgeworICAgICAgICAgICAgICAgIHB1c2goQGN1
cnJlbnRJZGVudGlmaWVycywgJHdvcmQpOworCisgICAgICAgICAgICAgICAgbXkgJGN1cnJlbnRG
dW5jdGlvbiA9IGpvaW4oJy4nLCAoQGN1cnJlbnRTY29wZXMsIEBjdXJyZW50SWRlbnRpZmllcnMp
KTsKKyAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID1+IHMvXC57Mix9L1wuL2c7ICMg
UmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgorCisgICAgICAgICAgICAgICAgcHVzaChAY3Vy
cmVudFBhcnNpbmdNb2RlLCAiZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJy
ZW50RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcHVz
aChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVwdGgpOworICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsKKyAgICAgICAgICAgIH0gZWxz
aWYgKCR3b3JkIG5lICdpZicgYW5kICR3b3JkIG5lICdmb3InIGFuZCAkd29yZCBuZSAnZG8nIGFu
ZCAkd29yZCBuZSAnd2hpbGUnIGFuZCAkd29yZCBuZSAnd2hpY2gnIGFuZCAkd29yZCBuZSAndmFy
JykgeworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdvcmQpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAkY2xhc3NKdXN0U2VlbiA9IDA7CisgICAgICAg
ICAgICAkcGFyZW50aGVzaXNKdXN0U2VlbiA9IDA7CisgICAgICAgICAgICAkZnVuY3Rpb25KdXN0
U2VlbiA9IDA7CisgICAgICAgICAgICAkZ2V0dGVySnVzdFNlZW4gPSAwOworICAgICAgICAgICAg
JHNldHRlckp1c3RTZWVuID0gMDsKKyAgICAgICAgICAgICRhc3luY0p1c3RTZWVuID0gMDsKKyAg
ICAgICAgICAgICRhc3NpZ25tZW50SnVzdFNlZW4gPSAwOworICAgICAgICB9CisgICAgfQorCisg
ICAgd2FybiAibWlzbWF0Y2hlZCBicmFjZXMgaW4gJGZpbGVOYW1lXG4iIGlmICRicmFjZXNEZXB0
aDsKKyAgICB3YXJuICJtaXNtYXRjaGVkIHBhcmVudGhlc2VzIGluICRmaWxlTmFtZVxuIiBpZiAk
cGFyZW50aGVzZXNEZXB0aDsKKworICAgIHJldHVybiBAcmFuZ2VzOworfQorCisjIFJlYWQgYSBm
aWxlIGFuZCBnZXQgYWxsIHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQgbG9vayBs
aWtlIFBlcmwgZnVuY3Rpb25zLiBGdW5jdGlvbnMKKyMgc3RhcnQgb24gYSBsaW5lIHRoYXQgc3Rh
cnRzIHdpdGggInN1YiAiLCBhbmQgZW5kIG9uIHRoZSBmaXJzdCBsaW5lIHN0YXJ0aW5nIHdpdGgg
In0iIHRoZXJlYWZ0ZXIuCisjCisjIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFy
dF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb24gXS4KKworc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jh
bmdlc19mb3JfcGVybCB7CisgICAgbXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87CisK
KyAgICBteSBAcmFuZ2VzOworCisgICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOworICAgIG15
ICRzdGFydCA9IDA7CisgICAgbXkgJGhlcmVEb2N1bWVudElkZW50aWZpZXIgPSAiIjsKKworICAg
IHdoaWxlICg8JGZpbGVIYW5kbGU+KSB7CisgICAgICAgIGNob21wOworICAgICAgICBpZiAoISRo
ZXJlRG9jdW1lbnRJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBpZiAoL15zdWJccysoW1x3X11b
XHdcZF9dKikvKSB7CisgICAgICAgICAgICAgICAgIyBTa2lwIG92ZXIgZm9yd2FyZCBkZWNsYXJh
dGlvbnMsIHdoaWNoIGRvbid0IGNvbnRhaW4gYSBicmFjZSBhbmQgZW5kIHdpdGggYSBzZW1pY29s
b24uCisgICAgICAgICAgICAgICAgbmV4dCBpZiAvO1xzKiQvOworCisgICAgICAgICAgICAgICAg
aWYgKCRjdXJyZW50RnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgd2FybiAibmVzdGVk
IGZ1bmN0aW9ucyBmb3VuZCBhdCB0b3AtbGV2ZWwgYXQgJGZpbGVOYW1lOiQuXG4iOworICAgICAg
ICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAk
Y3VycmVudEZ1bmN0aW9uID0gJDE7CisgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJC47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoLzw8XHMqW1wiXCddPyhbXHdfXVtcd19cZF0qKS8p
IHsKKyAgICAgICAgICAgICAgICAjIEVudGVyIGhlcmUtZG9jdW1lbnQuCisgICAgICAgICAgICAg
ICAgJGhlcmVEb2N1bWVudElkZW50aWZpZXIgPSAkMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChpbmRleCgkXywgIn0iKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbmV4dCB1bmxl
c3MgJHN0YXJ0OworICAgICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydCwgJC4sICRj
dXJyZW50RnVuY3Rpb25dKTsKKyAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiI7
CisgICAgICAgICAgICAgICAgJHN0YXJ0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNpZiAoJF8gZXEgJGhlcmVEb2N1bWVudElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICMgRXNj
YXBlIGZyb20gaGVyZS1kb2N1bWVudC4KKyAgICAgICAgICAgICRoZXJlRG9jdW1lbnRJZGVudGlm
aWVyID0gIiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQHJhbmdlczsKK30KKwor
IyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0
aGF0IGxvb2sgbGlrZSBQeXRob24gY2xhc3NlcywgbWV0aG9kcywgb3IgZnVuY3Rpb25zLgorIwor
IyBGSVhNRTogTWF5YmUgd2Ugc2hvdWxkIHVzZSBQeXRob24ncyBhc3QgbW9kdWxlIHRvIGRvIHRo
ZSBwYXJzaW5nIGZvciB1cz8KKyMKKyMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0
YXJ0X2xpbmUsIGVuZF9saW5lLCBmdW5jdGlvbiBdLgorCitzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVf
cmFuZ2VzX2Zvcl9weXRob24geworICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBf
OworCisgICAgbXkgQHJhbmdlczsKKworICAgIG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU2Vu
dGluZWxSZWdFeCA9IHFyIyg/OiIiInwnJycpIzsKKyAgICBteSAkbXVsdGlsaW5lU3RyaW5nTGl0
ZXJhbFN0YXJ0UmVnRXggPSBxciNccyokbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVn
RXgjOworICAgIG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXggPSBxciMkbXVsdGls
aW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXhccyokIzsKKworICAgIG15IEBzY29wZVN0YWNr
ID0gKHsgbGluZSA9PiAwLCBpbmRlbnQgPT4gLTEsIG5hbWUgPT4gdW5kZWYgfSk7CisgICAgbXkg
JGxhc3RMaW5lID0gMDsKKyAgICBteSAkaW5Db21tZW50ID0gMDsKKyAgICB1bnRpbCAoJGxhc3RM
aW5lKSB7CisgICAgICAgICRfID0gPCRmaWxlSGFuZGxlPjsKKyAgICAgICAgdW5sZXNzICgkXykg
eworICAgICAgICAgICAgIyBUbyBwb3Agb3V0IGFsbCBwb3BwZWQgc2NvcGVzLCBydW4gdGhlIGxv
b3Agb25jZSBtb3JlIGFmdGVyCisgICAgICAgICAgICAjIHdlIGVuY291bnRlcmVkIHRoZSBlbmQg
b2YgdGhlIGZpbGUuCisgICAgICAgICAgICAkXyA9ICJwYXNzXG4iOworICAgICAgICAgICAgJC4r
KzsKKyAgICAgICAgICAgICRsYXN0TGluZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgY2hvbXA7
CisgICAgICAgIG5leHQgdW5sZXNzIC9eKFxzKikoW14jXS4qKSQvOyAjIFNraXAgbm9uLWluZGVu
dGVkIGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBhIGNvbW1lbnQuCisKKyAgICAgICAgbXkgJGluZGVu
dCA9IGxlbmd0aCAkMTsKKyAgICAgICAgbXkgJHJlc3QgPSAkMjsKKyAgICAgICAgbXkgJHNjb3Bl
ID0gJHNjb3BlU3RhY2tbLTFdOworCisgICAgICAgIGlmICgkaW5kZW50IDw9ICRzY29wZS0+e2lu
ZGVudH0pIHsKKyAgICAgICAgICAgICMgRmluZCBhbGwgdGhlIHNjb3BlcyB0aGF0IHdlIGhhdmUg
anVzdCBleGl0ZWQuCisgICAgICAgICAgICBteSAkaSA9IDA7CisgICAgICAgICAgICBmb3IgKDsg
JGkgPCBAc2NvcGVTdGFjazsgKyskaSkgeworICAgICAgICAgICAgICAgIGxhc3QgaWYgJGluZGVu
dCA8PSAkc2NvcGVTdGFja1skaV0tPntpbmRlbnR9OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgbXkgQHBvcHBlZFNjb3BlcyA9IHNwbGljZSBAc2NvcGVTdGFjaywgJGk7CisKKyAgICAgICAg
ICAgICMgRm9yIGVhY2ggc2NvcGUgdGhhdCB3YXMganVzdCBleGl0ZWQsIGFkZCBhIHJhbmdlIHRo
YXQgZ29lcyBmcm9tIHRoZSBzdGFydCBvZiB0aGF0CisgICAgICAgICAgICAjIHNjb3BlIHRvIHRo
ZSBzdGFydCBvZiB0aGUgbmV4dCBuZXN0ZWQgc2NvcGUsIG9yIHRvIHRoZSBsaW5lIGp1c3QgYmVm
b3JlIHRoaXMgb25lIGZvcgorICAgICAgICAgICAgIyB0aGUgaW5uZXJtb3N0IHNjb3BlLgorICAg
ICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgQHBvcHBlZFNjb3BlczsgKyskaSkgeworICAgICAg
ICAgICAgICAgIG15ICRsaW5lQWZ0ZXJFbmQgPSAkaSArIDEgPT0gQHBvcHBlZFNjb3BlcyA/ICQu
IDogJHBvcHBlZFNjb3Blc1skaSArIDFdLT57bGluZX07CisgICAgICAgICAgICAgICAgcHVzaCBA
cmFuZ2VzLCBbJHBvcHBlZFNjb3Blc1skaV0tPntsaW5lfSwgJGxpbmVBZnRlckVuZCAtIDEsICRw
b3BwZWRTY29wZXNbJGldLT57bmFtZX1dOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQHNj
b3BlU3RhY2sgb3Igd2FybiAiUG9wcGVkIG9mZiBsYXN0IHNjb3BlIGF0ICRmaWxlTmFtZTokLlxu
IjsKKworICAgICAgICAgICAgIyBTZXQgdGhlIG5vdy1jdXJyZW50IHNjb3BlIHRvIHN0YXJ0IGF0
IHRoZSBjdXJyZW50IGxpbmUuIEFueSBsaW5lcyB3aXRoaW4gdGhpcyBzY29wZQorICAgICAgICAg
ICAgIyBiZWZvcmUgdGhpcyBwb2ludCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8g
QHJhbmdlcy4KKyAgICAgICAgICAgICRzY29wZSA9ICRzY29wZVN0YWNrWy0xXTsKKyAgICAgICAg
ICAgICRzY29wZS0+e2xpbmV9ID0gJC47CisgICAgICAgIH0KKworICAgICAgICAjIFNraXAgbXVs
dGktbGluZSBzdHJpbmcgbGl0ZXJhbHMgYW5kIGRvY3N0cmluZ3MuCisgICAgICAgIG5leHQgaWYg
LyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU3RhcnRSZWdFeC4qJG11bHRpbGluZVN0cmluZ0xpdGVy
YWxFbmRSZWdFeC87CisgICAgICAgIGlmICghJGluQ29tbWVudCAmJiAvJG11bHRpbGluZVN0cmlu
Z0xpdGVyYWxTdGFydFJlZ0V4LykgeworICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7CisgICAg
ICAgIH0gZWxzaWYgKCRpbkNvbW1lbnQgJiYgLyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVn
RXgvKSB7CisgICAgICAgICAgICAkaW5Db21tZW50ID0gMDsKKyAgICAgICAgfQorICAgICAgICBu
ZXh0IGlmICRpbkNvbW1lbnQ7CisKKyAgICAgICAgbmV4dCBpZiAvXlxzKlsjJyJdLzsgIyBTa2lw
IGluZGVudGVkIGFuZCBub24taW5kZW50ZWQgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGEgY29tbWVu
dCBvciBzdHJpbmcgbGl0ZXJhbCAoaW5jbHVkZXMgZG9jc3RyaW5ncykuCisKKyAgICAgICAgbmV4
dCB1bmxlc3MgJHJlc3QgPX4gLyg/OmNsYXNzfGRlZilccysoXHcrKS87CisgICAgICAgIG15ICRu
YW1lID0gJDE7CisgICAgICAgIG15ICRmdWxsTmFtZSA9ICRzY29wZS0+e25hbWV9ID8gam9pbign
LicsICRzY29wZS0+e25hbWV9LCAkbmFtZSkgOiAkbmFtZTsKKyAgICAgICAgcHVzaCBAc2NvcGVT
dGFjaywgeyBsaW5lID0+ICQuLCBpbmRlbnQgPT4gJGluZGVudCwgbmFtZSA9PiAkZnVsbE5hbWUg
fTsKKworICAgICAgICBpZiAoJHNjb3BlLT57aW5kZW50fSA+PSAwKSB7CisgICAgICAgICAgICBw
dXNoIEByYW5nZXMsIFskc2NvcGUtPntsaW5lfSwgJC4gLSAxLCAkc2NvcGUtPntuYW1lfV07Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQHJhbmdlczsKK30KKworIyBSZWFkIGEgZmls
ZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlr
ZSBDU1Mgc2VsZWN0b3JzLiAgQSBzZWxlY3RvciBpcworIyBhbnl0aGluZyBiZWZvcmUgYW4gb3Bl
bmluZyBicmFjZSBvbiBhIGxpbmUuIEEgc2VsZWN0b3Igc3RhcnRzIGF0IHRoZSBsaW5lIGNvbnRh
aW5pbmcgdGhlIG9wZW5pbmcKKyMgYnJhY2UgYW5kIGVuZHMgYXQgdGhlIGNsb3NpbmcgYnJhY2Uu
CisjCisjIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGlu
ZSwgc2VsZWN0b3IgXS4KKworc3ViIGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzIHsK
KyAgICBteSAoJGZpbGVIYW5kbGUsICRmaWxlTmFtZSkgPSBAXzsKKworICAgIG15IEByYW5nZXM7
CisKKyAgICBteSAkaW5Db21tZW50ID0gMDsKKyAgICBteSAkaW5CcmFjZSA9IDA7CisgICAgbXkg
QHN0YWNrOworICAgIG15ICRjb250ZXh0OworICAgIG15IEBjdXJyZW50UGFyc2VNb2RlID0gKCJn
bG9iYWwiKTsKKyAgICBteSBAZ3JvdXBpbmdTdGFjazsKKyAgICBteSAkc2VsZWN0b3JCcmFjZXMg
PSAwOworCisgICAgd2hpbGUgKDwkZmlsZUhhbmRsZT4pIHsKKyAgICAgICAgZm9yZWFjaCBteSAk
dG9rZW4gKHNwbGl0IG0tKFx7fFx9fC9cKnxcKi8pLSwgJF8pIHsKKyAgICAgICAgICAgIGlmICgk
dG9rZW4gZXEgInsiKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50KSB7CisgICAg
ICAgICAgICAgICAgICAgICRpbkJyYWNlICs9IDE7CisgICAgICAgICAgICAgICAgICAgICRzZWxl
Y3RvckJyYWNlcyArPSAxIGlmICRjdXJyZW50UGFyc2VNb2RlWyQjY3VycmVudFBhcnNlTW9kZV0g
ZXEgInNlbGVjdG9yIjsKKyAgICAgICAgICAgICAgICAgICAgd2FybiAibWlzbWF0Y2hlZCBvcGVu
aW5nIGJyYWNlIGZvdW5kIGluICRmaWxlTmFtZTokLlxuIiBpZiAkc2VsZWN0b3JCcmFjZXMgPiAx
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzaWYgKCR0b2tlbiBlcSAifSIp
IHsKKyAgICAgICAgICAgICAgICBpZiAoISRpbkNvbW1lbnQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCEkaW5CcmFjZSBvciAkY3VycmVudFBhcnNlTW9kZVskI2N1cnJlbnRQYXJzZU1vZGVd
IGVxICJnbG9iYWwiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3YXJuICJtaXNtYXRjaGVk
IGNsb3NpbmcgYnJhY2UgZm91bmQgaW4gJGZpbGVOYW1lOiQuXG4iOworICAgICAgICAgICAgICAg
ICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgICRpbkJyYWNlIC09IDE7CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJHBhcnNlTW9kZSA9
IHBvcChAY3VycmVudFBhcnNlTW9kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcGFyc2VN
b2RlIGVxICJzZWxlY3RvciIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0g
cG9wKEBzdGFjayk7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAkc3RhcnRMaW5lID0gcG9w
KEBzdGFjayk7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAkZW5kTGluZSA9ICQuOworICAg
ICAgICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwaW5nUHJlZml4ID0gam9pbigiICIsIEBncm91
cGluZ1N0YWNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggJGdyb3VwaW5n
UHJlZml4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdyb3VwaW5nUHJlZml4IC49
ICIgIgorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAcmFuZ2VzLCBbJHN0YXJ0TGluZSwgJGVuZExpbmUsICRncm91cGluZ1ByZWZpeCAuICRu
YW1lXSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRwYXJzZU1vZGUgZXEgIm1lZGlh
IikgeworICAgICAgICAgICAgICAgICAgICAgICAgcG9wKEBncm91cGluZ1N0YWNrKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICRzZWxlY3RvckJyYWNlcyA9
IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNpZiAoJHRva2VuIGVxICIv
KiIpIHsKKyAgICAgICAgICAgICAgICAkaW5Db21tZW50ID0gMTsKKyAgICAgICAgICAgIH0gZWxz
aWYgKCR0b2tlbiBlcSAiKi8iKSB7CisgICAgICAgICAgICAgICAgd2FybiAibWlzbWF0Y2hlZCBj
b21tZW50IGZvdW5kIGluICRmaWxlTmFtZTokLlxuIiBpZiAhJGluQ29tbWVudDsKKyAgICAgICAg
ICAgICAgICAkaW5Db21tZW50ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWYgKCEkaW5Db21tZW50IGFuZCAkY3VycmVudFBhcnNlTW9kZVskI2N1cnJlbnRQYXJz
ZU1vZGVdIG5lICJzZWxlY3RvciIgYW5kICR0b2tlbiAhfiAvXltcc1x0XSokLykgeworICAgICAg
ICAgICAgICAgICAgICAkdG9rZW4gPX4gcy9eW1xzXHRdKnxbXHNcdF0qJC8vZzsKKyAgICAgICAg
ICAgICAgICAgICAgbXkgJHN0YXJ0TGluZSA9ICQuOworICAgICAgICAgICAgICAgICAgICBpZiAo
JHRva2VuID1+IC9eXEBtZWRpYS8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1
cnJlbnRQYXJzZU1vZGUsICJtZWRpYSIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
Z3JvdXBpbmdTdGFjaywgJHRva2VuKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzZU1vZGUsICJzZWxlY3RvciIp
OworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAc3RhY2ssICgkc3RhcnRMaW5lLCAkdG9r
ZW4pKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgICMgU29ydCBieSBzdGFydCBsaW5lLgorICAg
IHJldHVybiBzb3J0IHskYS0+WzBdIDw9PiAkYi0+WzBdfSBAcmFuZ2VzOworfQorCisjIFJlYWQg
YSBmaWxlIGFuZCBnZXQgYWxsIHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQgbG9v
ayBsaWtlIFN3aWZ0IGNsYXNzZXMsIG1ldGhvZHMsCisjIG9yIGZ1bmN0aW9ucy4KKyMKKyMgUmVz
dWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBmdW5jdGlv
biBdLgorCitzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCB7CisgICAgbXkg
KCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87CisKKyAgICBteSBAcmFuZ2VzOworCisgICAg
bXkgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOworICAgIG15ICRjdXJyZW50VHlwZSA9ICIiOworICAg
IG15ICRmdW5jdGlvblN0YXJ0ID0gMDsKKyAgICBteSAkdHlwZVN0YXJ0ID0gMDsKKyAgICBteSAk
ZnVuY3Rpb25TY29wZURlcHRoID0gMDsKKyAgICBteSAkdHlwZVNjb3BlRGVwdGggPSAwOworICAg
IG15ICRzY29wZURlcHRoID0gMDsKKworICAgIHdoaWxlICg8JGZpbGVIYW5kbGU+KSB7CisgICAg
ICAgIGNob21wOworICAgICAgICBuZXh0IGlmICgvXlxzKlwvXC8uKi8pOworICAgICAgICBpZiAo
L2Z1bmNccysoW1x3X11bXHdcZF9dKilcKCguKilcKS8gfHwgL3ZhclxzKyhbXHdfXVtcd1xkX10q
KTpccysvKSB7CisgICAgICAgICAgICAkZnVuY3Rpb25TY29wZURlcHRoID0gJHNjb3BlRGVwdGg7
CisgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gJDE7CisgICAgICAgICAgICBpZiAoJDIp
IHsKKyAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiRjdXJyZW50RnVuY3Rpb24o
Ii4gcGFyc2VTd2lmdEZ1bmN0aW9uQXJncygkMikgLiAiKSI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoJGN1cnJlbnRUeXBlKSB7CisgICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5j
dGlvbiA9ICIkY3VycmVudFR5cGUuJGN1cnJlbnRGdW5jdGlvbiI7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9ICQuOworICAgICAgICB9IGVsc2lmICgvKD86Y2xh
c3N8c3RydWN0fGVudW18cHJvdG9jb2x8ZXh0ZW5zaW9uKVxzKyhbXHdfXVtcd1xkX10qKS8pIHsK
KyAgICAgICAgICAgICR0eXBlU2NvcGVEZXB0aCA9ICRzY29wZURlcHRoOworICAgICAgICAgICAg
JGN1cnJlbnRUeXBlID0gJDE7CisgICAgICAgICAgICAkdHlwZVN0YXJ0ID0gJC47CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGluZGV4KCRfLCAieyIpID4gLTEpIHsKKyAgICAgICAgICAgICRzY29w
ZURlcHRoKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluZGV4KCRfLCAifSIpID4gLTEpIHsK
KyAgICAgICAgICAgICRzY29wZURlcHRoLS07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRzY29w
ZURlcHRoID09ICRmdW5jdGlvblNjb3BlRGVwdGgpIHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNz
ICRmdW5jdGlvblN0YXJ0OworICAgICAgICAgICAgcHVzaChAcmFuZ2VzLCBbJGZ1bmN0aW9uU3Rh
cnQsICQuLCAkY3VycmVudEZ1bmN0aW9uXSk7CisgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9u
ID0gIiI7CisgICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9IDA7CisgICAgICAgIH0gZWxzaWYg
KCRzY29wZURlcHRoID09ICR0eXBlU2NvcGVEZXB0aCkgeworICAgICAgICAgICAgbmV4dCB1bmxl
c3MgJHR5cGVTdGFydDsKKyAgICAgICAgICAgICRjdXJyZW50VHlwZSA9ICIiOworICAgICAgICAg
ICAgJHR5cGVTdGFydCA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQHJhbmdl
czsKK30KKworc3ViIHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3MgeworICAgIG15ICRmdW5jdGlvbkFy
Z3MgPSBzaGlmdDsKKworICAgIG15IEB3b3JkcyA9IHNwbGl0IC8sIC8sICRmdW5jdGlvbkFyZ3M7
CisgICAgbXkgJGFyZ0NvdW50ID0gc2NhbGFyKEB3b3Jkcyk7CisgICAgaWYgKCRhcmdDb3VudCA9
PSAwKSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9IGVsc2lmICgkYXJnQ291bnQgPiAwKSB7
CisgICAgICAgICMgSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHVubmFtZWQsIGdpdmUgaXQgdGhl
IG5hbWUgIl8iCisgICAgICAgICR3b3Jkc1swXSA9fiBzL14oXHcrOiAuKikvXyAkMS87CisgICAg
ICAgIHJldHVybiBqb2luKCIiLCBtYXAgeyAkXyA9fiBzL14oXHcrKS4qLyQxLzsgIiRfOiIgfSBA
d29yZHMpOworICAgIH0gZWxzZSB7CisgICAgICAgIHdhcm4gIlVua25vd24gYXJndW1lbnQgY291
bnQuXG4iOworICAgIH0KK30KKworc3ViIGRlY29kZUVudGl0aWVzIHsKKyAgICBteSAkdGV4dCA9
IHNoaWZ0OworICAgICR0ZXh0ID1+IHMvXCZsdDsvPC9nOworICAgICR0ZXh0ID1+IHMvXCZndDsv
Pi9nOworICAgICR0ZXh0ID1+IHMvXCZxdW90Oy9cIi9nOworICAgICR0ZXh0ID1+IHMvXCZhcG9z
Oy9cJy9nOworICAgICR0ZXh0ID1+IHMvXCZhbXA7L1wmL2c7CisgICAgcmV0dXJuICR0ZXh0Owor
fQorCisxOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2RpcnMucG0gYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZGlycy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmY1ZTFkMDI1ZjA3MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9kaXJzLnBtCkBAIC0wLDAgKzEsODEgQEAKKyMhL3Vzci9iaW4vZW52
IHBlcmwKKworIyBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK3BhY2thZ2Ugd2Via2l0cGVybDo6ZGlyczsKKwordXNlIHN0
cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBDYXJwOwordXNlIEZpbGU6OlNwZWM7CisKK0JFR0lO
IHsKKyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9S
VCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRWRVJTSU9OICAgICA9IDEuMDA7Cisg
ICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBARVhQT1JUICAgICAgPSBxdygKKyAg
ICAgICAgICAgICAgICAgICAgc291cmNlRGlyCisgICAgICAgICAgICAgICAgICAgIHNldFNvdXJj
ZURpcgorICAgICAgICAgICAgICAgICk7CisgICAlRVhQT1JUX1RBR1MgPSAoKTsKKyAgIEBFWFBP
UlRfT0sgICA9ICgpOworfQorCitteSAkc291cmNlRGlyOworCitzdWIgc291cmNlRGlyCit7Cisg
ICAgZGV0ZXJtaW5lU291cmNlRGlyKCk7CisgICAgcmV0dXJuICRzb3VyY2VEaXI7Cit9CisKKyMg
dXNlZCBmb3Igc2NyaXB0cyB3aGljaCBhcmUgc3RvcmVkIGluIGEgbm9uLXN0YW5kYXJkIGxvY2F0
aW9uCitzdWIgc2V0U291cmNlRGlyKCQpCit7CisgICAgKCRzb3VyY2VEaXIpID0gQF87Cit9CisK
K3N1YiBkZXRlcm1pbmVTb3VyY2VEaXIKK3sKKyAgICByZXR1cm4gaWYgJHNvdXJjZURpcjsKKyAg
ICAkc291cmNlRGlyID0gJEZpbmRCaW46OlJlYWxCaW47CisgICAgJHNvdXJjZURpciA9fiBzfC8r
JHx8OyAjIFJlbW92ZSB0cmFpbGluZyAnLycgYXMgd2Ugd291bGQgZGllIGxhdGVyCisKKyAgICAj
IHdhbGtzIHVwIHBhdGggY2hlY2tpbmcgZWFjaCBkaXJlY3RvcnkgdG8gc2VlIGlmIGl0IGlzIHRo
ZSBtYWluIFdlYktpdCBwcm9qZWN0IGRpciwKKyAgICAjIGRlZmluZWQgYnkgY29udGFpbmluZyBT
b3VyY2VzLCBXZWJDb3JlLCBhbmQgSmF2YVNjcmlwdENvcmUuCisgICAgdW50aWwgKCgtZCBGaWxl
OjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIpICYmIC1kIEZpbGU6OlNwZWMtPmNh
dGRpcigkc291cmNlRGlyLCAiU291cmNlIiwgIldlYkNvcmUiKSAmJiAtZCBGaWxlOjpTcGVjLT5j
YXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIsICJKYXZhU2NyaXB0Q29yZSIpKSB8fCAoLWQgRmls
ZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJJbnRlcm5hbCIpICYmIC1kIEZpbGU6OlNwZWMt
PmNhdGRpcigkc291cmNlRGlyLCAiT3BlblNvdXJjZSIpKSkKKyAgICB7CisgICAgICAgIGlmICgk
c291cmNlRGlyICF+IHN8L1teL10rJHx8KSB7CisgICAgICAgICAgICBjcm9hayAiQ291bGQgbm90
IGZpbmQgdG9wIGxldmVsIHdlYmtpdCBkaXJlY3RvcnkgYWJvdmUgc291cmNlIGRpcmVjdG9yeSB1
c2luZyBGaW5kQmluLiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAkc291cmNlRGlyID0gRmls
ZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIikgaWYgLWQgRmlsZTo6U3Bl
Yy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIik7Cit9CisKKzE7CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZmlsdGVyLWJ1aWxkLXdlYmtpdF91bml0dGVzdC9z
aG91bGRJZ25vcmVMaW5lX3VuaXR0ZXN0cy5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9m
aWx0ZXItYnVpbGQtd2Via2l0X3VuaXR0ZXN0L3Nob3VsZElnbm9yZUxpbmVfdW5pdHRlc3RzLnBs
CmluZGV4IGMzODMwM2NjYmNlNS4uMjJmMGE0MGZkNzJjIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvZmlsdGVyLWJ1aWxkLXdlYmtpdF91bml0dGVzdC9zaG91bGRJZ25vcmVM
aW5lX3VuaXR0ZXN0cy5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZmlsdGVyLWJ1
aWxkLXdlYmtpdF91bml0dGVzdC9zaG91bGRJZ25vcmVMaW5lX3VuaXR0ZXN0cy5wbApAQCAtMzEs
MTQgKzMxLDExIEBAIHVzZSB3YXJuaW5nczsKIHVzZSBFbmdsaXNoOwogdXNlIEZpbmRCaW47CiB1
c2UgVGVzdDo6TW9yZTsKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4s
ICIuLiIpOwotdXNlIExvYWRBc01vZHVsZSBxdyhGaWx0ZXJCdWlsZFdlYktpdCBmaWx0ZXItYnVp
bGQtd2Via2l0KTsKK3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpSZWFsQmlu
LCAiLi4iLCAiLi4iKTsKK3VzZSB3ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0IHF3KHNob3VsZEln
bm9yZUxpbmUpOwogCiBzdWIgZGVzY3JpcHRpb24oJCk7CiAKLUBGaWx0ZXJCdWlsZFdlYktpdDo6
RVhQT1JUX09LID0gcXcoc2hvdWxkSWdub3JlTGluZSk7Ci1GaWx0ZXJCdWlsZFdlYktpdC0+aW1w
b3J0KEBGaWx0ZXJCdWlsZFdlYktpdDo6RVhQT1JUX09LKTsKLQogIwogIyBUZXN0IHdoaXRlc3Bh
Y2UKICMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9sZWFrcy5wbSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9sZWFrcy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmMwODcyY2ZiZGYzNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9sZWFrcy5wbQpAQCAtMCwwICsxLDE1NCBAQAorIyEvdXNyL2Jpbi9l
bnYgcGVybAorCisjIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBTY3JpcHQgdG8gcnVuIHRoZSBNYWMgT1MgWCBsZWFr
cyB0b29sIHdpdGggbW9yZSBleHByZXNzaXZlICctZXhjbHVkZScgbGlzdHMuCisKK3BhY2thZ2Ug
d2Via2l0cGVybDo6bGVha3M7CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgQ2Fy
cDsKKwordXNlIEZpbGU6OkJhc2VuYW1lOworCitCRUdJTiB7CisgICB1c2UgRXhwb3J0ZXIgICAo
KTsKKyAgIG91ciAoJFZFUlNJT04sIEBJU0EsIEBFWFBPUlQsIEBFWFBPUlRfT0ssICVFWFBPUlRf
VEFHUyk7CisgICAkVkVSU0lPTiAgICAgPSAxLjAwOworICAgQElTQSAgICAgICAgID0gcXcoRXhw
b3J0ZXIpOworICAgQEVYUE9SVCAgICAgID0gcXcoCisgICAgICAgICAgICAgICAgICAgIHJ1bkxl
YWtzCisgICAgICAgICAgICAgICAgICAgIHBhcnNlTGVha3NPdXRwdXQKKyAgICAgICAgICAgICAg
ICApOworICAgJUVYUE9SVF9UQUdTID0gKCk7CisgICBARVhQT1JUX09LICAgPSAoKTsKK30KKwor
IyBSZXR1cm5zIHRoZSBvdXRwdXQgb2YgdGhlIGxlYWtzIHRvb2wgaW4gbGlzdCBmb3JtLgorc3Vi
IHJ1bkxlYWtzKCQkKQoreworICAgIG15ICgkdGFyZ2V0LCAkbWVtZ3JhcGhQYXRoKSA9IEBfOwor
CisgICAgaWYgKGRlZmluZWQgJG1lbWdyYXBoUGF0aCkgeworICAgICAgICBgL3Vzci9iaW4vbGVh
a3MgXCIkdGFyZ2V0XCIgLS1vdXRwdXRHcmFwaD1cIiRtZW1ncmFwaFBhdGhcImA7CisgICAgICAg
ICR0YXJnZXQgPSAkbWVtZ3JhcGhQYXRoOworICAgIH0KKworICAgICMgVG8gZ2V0IGEgcmVzdWx0
IHdlIGNhbiBwYXJzZSwgd2UgbmVlZCB0byBwYXNzIC0tbGlzdCB0byBhbGwgdmVyc2lvbnMgb2Yg
dGhlIGxlYWtzIHRvb2wKKyAgICAjIHRoYXQgcmVjb2duaXplIGl0LCBidXQgdGhlcmUgaXMgbm8g
Y2VydGFpbiB3YXkgdG8gdGVsbCBpbiBhZHZhbmNlICh0aGUgdmVyc2lvbiBvZiB0aGUKKyAgICAj
IHRvb2wgaXMgbm90IGFsd2F5cyB0aWVkIHRvIE9TIHZlcnNpb24sIGFuZCAtLWhlbHAgZG9lc24n
dCBkb2N1bWVudCB0aGUgb3B0aW9uIGluIHNvbWUKKyAgICAjIG9mIHRoZSB0b29sIHZlcnNpb25z
IHdoZXJlIGl0J3Mgc3VwcG9ydGVkIGFuZCBuZWVkZWQpLgorICAgIG15IEBsZWFrc091dHB1dCA9
IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJnZXRcIiAtLWxpc3RgOworCisgICAgIyBGSVhNRTogUmVt
b3ZlIHRoZSBmYWxsYmFjayBvbmNlIG1hY09TIE1vamF2ZSBpcyB0aGUgb2xkZXN0IHN1cHBvcnRl
ZCB2ZXJzaW9uLgorICAgIG15ICRsZWFrc0V4aXRDb2RlID0gJD8gPj4gODsKKyAgICBpZiAoJGxl
YWtzRXhpdENvZGUgPiAxKSB7CisgICAgICAgIEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFr
cyBcIiR0YXJnZXRcImA7CisgICAgfQorCisgICAgcmV0dXJuIFxAbGVha3NPdXRwdXQ7Cit9CisK
KyMgUmV0dXJucyBhIGxpc3Qgb2YgaGFzaCByZWZlcmVuY2VzIHdpdGggdGhlIGtleXMgeyBhZGRy
ZXNzLCBzaXplLCB0eXBlLCBjYWxsU3RhY2ssIGxlYWtzT3V0cHV0IH0KK3N1YiBwYXJzZUxlYWtz
T3V0cHV0KFxAKQoreworICAgIG15ICgkbGVha3NPdXRwdXQpID0gQF87CisKKyAgICAjIEZvcm1h
dDoKKyAgICAjICAgUHJvY2VzcyAwMDAwMDogMTIzNCBub2RlcyBtYWxsb2NlZCBmb3IgMTIzNCBL
QgorICAgICMgICBQcm9jZXNzIDAwMDAwOiBYWCBsZWFrcyBmb3IgWFhYIHRvdGFsIGxlYWtlZCBi
eXRlcy4KKyAgICAjICAgTGVhazogMHgwMDAwMDAwMCBzaXplPTEyMzQgW2luc3RhbmNlIG9mICdi
bGFoJ10KKyAgICAjICAgICAgIDB4MDAwMDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIDB4MDAw
MDAwMDAgYS4uZC5lLmUKKyAgICAjICAgICAgIC4uLgorICAgICMgICAgICAgQ2FsbCBzdGFjazog
bGVha19jYWxsZXIoKSB8IGxlYWsoKSB8IG1hbGxvYworICAgICMKKyAgICAjICAgV2UgdHJlYXQg
ZXZlcnkgbGluZSBleGNlcHQgZm9yICBQcm9jZXNzIDAwMDAwOiBhbmQgTGVhazogYXMgb3B0aW9u
YWwKKworICAgIG15ICRsZWFrQ291bnQ7CisgICAgbXkgQHBhcnNlZE91dHB1dCA9ICgpOworICAg
IG15ICRwYXJzaW5nTGVhayA9IDA7CisgICAgbXkgJHBhcnNlZExlYWtDb3VudCA9IDA7CisgICAg
Zm9yIG15ICRsaW5lIChAJGxlYWtzT3V0cHV0KSB7CisgICAgICAgIGlmICgkbGluZSA9fiAvXlBy
b2Nlc3MgXGQrOiAoXGQrKSBsZWFrcz8vKSB7CisgICAgICAgICAgICAkbGVha0NvdW50ID0gJDE7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoJGxpbmUgZXEgIlxuIikgeworICAgICAgICAgICAg
JHBhcnNpbmdMZWFrID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgkbGluZSA9fiAvXkxl
YWs6IC8pIHsKKyAgICAgICAgICAgICRwYXJzaW5nTGVhayA9IDE7CisgICAgICAgICAgICAkcGFy
c2VkTGVha0NvdW50Kys7CisgICAgICAgICAgICBteSAoJGFkZHJlc3MpID0gKCRsaW5lID1+IC9M
ZWFrOiAoW1s6eGRpZ2l0Ol14XSspLyk7CisgICAgICAgICAgICBpZiAoIWRlZmluZWQoJGFkZHJl
c3MpKSB7CisgICAgICAgICAgICAgICAgY3JvYWsgIkNvdWxkIG5vdCBwYXJzZSBMZWFrIGFkZHJl
c3MuIjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbXkgKCRzaXplKSA9ICgkbGluZSA9
fiAvc2l6ZT0oW1s6ZGlnaXQ6XV0rKS8pOworICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRzaXpl
KSkgeworICAgICAgICAgICAgICAgIGNyb2FrICJDb3VsZCBub3QgcGFyc2UgTGVhayBzaXplLiI7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgRklYTUU6IFRoaXMgY29kZSBzZWVtcyB3
cm9uZywgdGhlIGxlYWtzIHRvb2wgZG9lc24ndCBhY3R1YWxseSB1c2Ugc2luZ2xlIHF1b3Rlcy4K
KyAgICAgICAgICAgICMgV2Ugc2hvdWxkIHJlY29uY2lsZSB3aXRoIG90aGVyIGZvcm1hdCBjaGFu
Z2VzIHRoYXQgaGFwcGVuZWQgc2luY2UsIHN1Y2ggYXMgdGhlCisgICAgICAgICAgICAjIGFkZGl0
aW9uIG9mIHpvbmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICBteSAoJHR5cGUpID0gKCRsaW5l
ID1+IC8nKFteJ10rKScvKTsgIycKKyAgICAgICAgICAgIGlmICghZGVmaW5lZCgkdHlwZSkpIHsK
KyAgICAgICAgICAgICAgICAkdHlwZSA9ICIiOyAjIFRoZSBsZWFrcyB0b29sIHNvbWV0aW1lcyBv
bWl0cyB0aGUgdHlwZS4KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbXkgJWxlYWsgPSAo
CisgICAgICAgICAgICAgICAgImFkZHJlc3MiID0+ICRhZGRyZXNzLAorICAgICAgICAgICAgICAg
ICJzaXplIiA9PiAkc2l6ZSwKKyAgICAgICAgICAgICAgICAidHlwZSIgPT4gJHR5cGUsCisgICAg
ICAgICAgICAgICAgImNhbGxTdGFjayIgPT4gIiIsICMgVGhlIGxlYWtzIHRvb2wgc29tZXRpbWVz
IG9taXRzIHRoZSBjYWxsIHN0YWNrLgorICAgICAgICAgICAgICAgICJsZWFrc091dHB1dCIgPT4g
JGxpbmUKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBwdXNoKEBwYXJzZWRPdXRwdXQsIFwl
bGVhayk7CisgICAgICAgIH0gZWxzaWYgKCRwYXJzaW5nTGVhaykgeworICAgICAgICAgICAgJHBh
cnNlZE91dHB1dFskI3BhcnNlZE91dHB1dF0tPnsibGVha3NPdXRwdXQifSAuPSAkbGluZTsKKyAg
ICAgICAgICAgIGlmICgkbGluZSA9fiAvQ2FsbCBzdGFjazovKSB7CisgICAgICAgICAgICAgICAg
JHBhcnNlZE91dHB1dFskI3BhcnNlZE91dHB1dF0tPnsiY2FsbFN0YWNrIn0gPSAkbGluZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG15ICVub25MZWFrTGlu
ZSA9ICgKKyAgICAgICAgICAgICAgICAibGVha3NPdXRwdXQiID0+ICRsaW5lCisgICAgICAgICAg
ICApOworICAgICAgICAgICAgcHVzaChAcGFyc2VkT3V0cHV0LCBcJW5vbkxlYWtMaW5lKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGlmICgkcGFyc2VkTGVha0NvdW50ICE9ICRsZWFrQ291bnQp
IHsKKyAgICAgICAgY3JvYWsgIlBhcnNlZCBsZWFrIGNvdW50ICgkcGFyc2VkTGVha0NvdW50KSBk
b2VzIG5vdCBtYXRjaCBsZWFrIGNvdW50IHJlcG9ydGVkIGJ5IGxlYWtzIHRvb2wgKCRsZWFrQ291
bnQpLiI7CisgICAgfQorCisgICAgcmV0dXJuIFxAcGFyc2VkT3V0cHV0OworfQorCisxOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0
ZXN0L2V4dHJhY3RMaW5lUmFuZ2VCZWZvcmVBbmRBZnRlckNoYW5nZS5wbCBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9leHRyYWN0TGluZVJhbmdl
QmVmb3JlQW5kQWZ0ZXJDaGFuZ2UucGwKaW5kZXggYTc5MmUzYjIxOTY5Li44NjgzYjQ4YjIxMDEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191
bml0dGVzdC9leHRyYWN0TGluZVJhbmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2UucGwKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2V4dHJhY3RM
aW5lUmFuZ2VCZWZvcmVBbmRBZnRlckNoYW5nZS5wbApAQCAtMjcsOCArMjcsMTEgQEAgdXNlIHdh
cm5pbmdzOwogCiB1c2UgVGVzdDo6TW9yZTsKIHVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpT
cGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7Ci11c2UgTG9hZEFzTW9kdWxlIHF3KFBy
ZXBhcmVDaGFuZ2VMb2cgcHJlcGFyZS1DaGFuZ2VMb2cpOwordXNlIGxpYiBGaWxlOjpTcGVjLT5j
YXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVybDo6Y2hhbmdl
bG9nIHF3KAorICAgIGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UKKyAgICBleHRyYWN0TGlu
ZVJhbmdlQWZ0ZXJDaGFuZ2UKKyk7CiAKIG15IEB0ZXN0Q2FzZUhhc2hSZWZzID0gKAogIyMjIwpA
QCAtMTk3LDEwICsyMDAsMTAgQEAgZm9yZWFjaCBteSAkdGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hS
ZWZzKSB7CiAgICAgbXkgJGV4cGVjdGVkUmVzdWx0cyA9ICR0ZXN0Q2FzZS0+e2V4cGVjdGVkUmVz
dWx0c307CiAKICAgICBteSAkdGVzdE5hbWVTdGFydCA9ICJleHRyYWN0TGluZVJhbmdlQmVmb3Jl
Q2hhbmdlKCk6ICR0ZXN0Q2FzZS0+e3Rlc3ROYW1lfTogY29tcGFyaW5nIjsKLSAgICBteSBAZ290
ID0gUHJlcGFyZUNoYW5nZUxvZzo6ZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgkdGVzdENh
c2UtPntpbnB1dFRleHR9KTsKKyAgICBteSBAZ290ID0gZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNo
YW5nZSgkdGVzdENhc2UtPntpbnB1dFRleHR9KTsKICAgICBpc19kZWVwbHkoXEBnb3QsICRleHBl
Y3RlZFJlc3VsdHMtPntiZWZvcmVDaGFuZ2V9LCAiJHRlc3ROYW1lU3RhcnQgcmV0dXJuIHZhbHVl
LiIpOwogCiAgICAgJHRlc3ROYW1lU3RhcnQgPSAiZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdl
KCk6ICR0ZXN0Q2FzZS0+e3Rlc3ROYW1lfTogY29tcGFyaW5nIjsKLSAgICBAZ290ID0gUHJlcGFy
ZUNoYW5nZUxvZzo6ZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlKCR0ZXN0Q2FzZS0+e2lucHV0
VGV4dH0pOworICAgIEBnb3QgPSBleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UoJHRlc3RDYXNl
LT57aW5wdXRUZXh0fSk7CiAgICAgaXNfZGVlcGx5KFxAZ290LCAkZXhwZWN0ZWRSZXN1bHRzLT57
YWZ0ZXJDaGFuZ2V9LCAiJHRlc3ROYW1lU3RhcnQgcmV0dXJuIHZhbHVlLiIpOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0
L2ZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YS5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9mZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEu
cGwKaW5kZXggZmE0MTFmMjEwYWJjLi4zYzc0MzFjZTg2NjEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9mZXRjaFJhZGFyVVJM
RnJvbUJ1Z1hNTERhdGEucGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUt
Q2hhbmdlTG9nX3VuaXR0ZXN0L2ZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YS5wbApAQCAtMjcs
OCArMjcsOCBAQCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBUZXN0OjpNb3JlOwogdXNlIEZpbmRCaW47
Ci11c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKLXVzZSBM
b2FkQXNNb2R1bGUgcXcoUHJlcGFyZUNoYW5nZUxvZyBwcmVwYXJlLUNoYW5nZUxvZyk7Cit1c2Ug
bGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKK3VzZSB3
ZWJraXRwZXJsOjpjaGFuZ2Vsb2cgcXcoZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxEYXRhKTsKIAog
IyBOT1RFOiBBIEJ1Z3ppbGxhIENvbW1lbnQgWE1MIGxvb2tzIGxpa2U6CiAjCkBAIC0xNTYsNiAr
MTU2LDYgQEAgcGxhbih0ZXN0cyA9PiAkdGVzdENhc2VzQ291bnQpOwogCiBmb3JlYWNoIG15ICR0
ZXN0Q2FzZSAoQHRlc3RDYXNlSGFzaFJlZnMpIHsKICAgICBteSAkZXhwZWN0ZWQgPSAkdGVzdENh
c2UtPntleHBlY3RlZH07Ci0gICAgbXkgJGdvdCA9IFByZXBhcmVDaGFuZ2VMb2c6OmZldGNoUmFk
YXJVUkxGcm9tQnVnWE1MRGF0YSgxNTI4MzksICR0ZXN0Q2FzZS0+e2lucHV0VGV4dH0pOworICAg
IG15ICRnb3QgPSBmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEoMTUyODM5LCAkdGVzdENhc2Ut
PntpbnB1dFRleHR9KTsKICAgICBpcygkZ290LCAkZXhwZWN0ZWQsICR0ZXN0Q2FzZS0+e3Rlc3RO
YW1lfSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1D
aGFuZ2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGwgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFy
ZW50aGVzZXMucGwKaW5kZXggOWRiOGY4OWZhMjIwLi44MTIwZWMwN2JlYmYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9maWxl
bmFtZVdpdGhQYXJlbnRoZXNlcy5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJl
cGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGwKQEAgLTMw
LDExICszMCwxMCBAQCB1c2Ugd2FybmluZ3M7CiB1c2UgRmlsZTo6VGVtcDsKIHVzZSBGaW5kQmlu
OwogdXNlIFRlc3Q6Ok1vcmU7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6
QmluLCAiLi4iLCAiLi4iKTsKK3VzZSB3ZWJraXRwZXJsOjpjaGFuZ2Vsb2cgcXcoYXR0cmlidXRl
Q29tbWFuZCk7CiB1c2UgVkNTVXRpbHM7CiAKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRG
aW5kQmluOjpCaW4sICIuLiIpOwotdXNlIExvYWRBc01vZHVsZSBxdyhQcmVwYXJlQ2hhbmdlTG9n
IHByZXBhcmUtQ2hhbmdlTG9nKTsKLQogcGxhbih0ZXN0cyA9PiAxKTsKIAogc3ViIHdyaXRlRmls
ZVdpdGhDb250ZW50KCQkKQpAQCAtNTQsNyArNTMsNyBAQCB3cml0ZUZpbGVXaXRoQ29udGVudChG
aWxlOjpTcGVjLT5jYXRmaWxlKCR0ZW1wb3JhcnlEaXJlY3RvcnksICIuZ2l0YXR0cmlidXRlcyIp
LAogbXkgJGF0dHJpYnV0ZUNhY2hlID0ge307CiBteSAkcmVzdWx0ID0gMDsKIGNoZGlyICR0ZW1w
b3JhcnlEaXJlY3Rvcnk7Ci0kcmVzdWx0ID0gUHJlcGFyZUNoYW5nZUxvZzo6YXR0cmlidXRlQ29t
bWFuZCgkYXR0cmlidXRlQ2FjaGUsICRmaWxlbmFtZSwgImZvbyIpOworJHJlc3VsdCA9IGF0dHJp
YnV0ZUNvbW1hbmQoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZW5hbWUsICJmb28iKTsKIGNoZGlyICcu
Lic7CiAKIGlzKCRyZXN1bHQsIDEsICJTaG91bGQgc3VjY2Vzc2Z1bGx5IGdldCBmb28gYXR0cmli
dXRlIGZyb20gZmlsZSB3aXRoIHBhcmVudGhlc2VzIGluIG5hbWUuIik7CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZ2VuZXJh
dGVGdW5jdGlvbkxpc3RzLnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hh
bmdlTG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rpb25MaXN0cy5wbAppbmRleCA1ZTU1OTM3MjUz
YzQuLmQ4ZGNhMjE2YjQxOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3By
ZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rpb25MaXN0cy5wbAorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZ2VuZXJh
dGVGdW5jdGlvbkxpc3RzLnBsCkBAIC0yOCwxMSArMjgsMTAgQEAgdXNlIHdhcm5pbmdzOwogdXNl
IEZpbGU6OlRlbXA7CiB1c2UgRmluZEJpbjsKIHVzZSBUZXN0OjpNb3JlOwordXNlIGxpYiBGaWxl
OjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVy
bDo6Y2hhbmdlbG9nIHF3KGFjdHVhbGx5R2VuZXJhdGVGdW5jdGlvbkxpc3RzKTsKIHVzZSBWQ1NV
dGlsczsKIAotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7
Ci11c2UgTG9hZEFzTW9kdWxlIHF3KFByZXBhcmVDaGFuZ2VMb2cgcHJlcGFyZS1DaGFuZ2VMb2cp
OwotCiBteSAkRVhBTVBMRV9DUFAgPSA8PEVPRjsKICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1
ZGUgPGNtYXRoPgpAQCAtNTM2LDcgKzUzNSw3IEBAIGZvcmVhY2ggbXkgJHRlc3RDYXNlIChAdGVz
dENhc2VIYXNoUmVmcykgewogICAgICk7CiAgICAgbXkgJWZ1bmN0aW9uTGlzdHM7CiAgICAgZGlz
Y2FyZE91dHB1dChzdWIgewotICAgICAgICBQcmVwYXJlQ2hhbmdlTG9nOjphY3R1YWxseUdlbmVy
YXRlRnVuY3Rpb25MaXN0cyhbJGZpbGVuYW1lXSwgXCVmdW5jdGlvbkxpc3RzLCB1bmRlZiwgdW5k
ZWYsIHVuZGVmLCBcJWRlbGVnYXRlSGFzaCk7CisgICAgICAgIGFjdHVhbGx5R2VuZXJhdGVGdW5j
dGlvbkxpc3RzKFskZmlsZW5hbWVdLCBcJWZ1bmN0aW9uTGlzdHMsIHVuZGVmLCB1bmRlZiwgdW5k
ZWYsIFwlZGVsZWdhdGVIYXNoKTsKICAgICB9KTsKICAgICBjaG9tcChteSAkZXhwZWN0ZWQgPSAk
dGVzdENhc2UtPntleHBlY3RlZH0pOwogICAgIGlzKCRmdW5jdGlvbkxpc3RzeyRmaWxlbmFtZX0s
ICRleHBlY3RlZCwgJHRlc3RDYXNlLT57dGVzdE5hbWV9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9wYXJzZXJfdW5pdHRl
c3RzLnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0
ZXN0L3BhcnNlcl91bml0dGVzdHMucGwKaW5kZXggNzE1N2ZmZWRlZWRjLi5lZmUyYWQwZDI5NDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191
bml0dGVzdC9wYXJzZXJfdW5pdHRlc3RzLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9wYXJzZXJfdW5pdHRlc3RzLnBsCkBAIC0zMSwx
MSArMzEsMjAgQEAgdXNlIEZpbGU6OlRlbXAgcXcodGVtcGZpbGUpOwogdXNlIEZpbmRCaW47CiB1
c2UgR2V0b3B0OjpMb25nOwogdXNlIFRlc3Q6Ok1vcmU7Ci11c2UgbGliIEZpbGU6OlNwZWMtPmNh
dGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKLXVzZSBMb2FkQXNNb2R1bGUgcXcoUHJlcGFyZUNo
YW5nZUxvZyBwcmVwYXJlLUNoYW5nZUxvZyk7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigk
RmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKK3VzZSBWQ1NVdGlsczsKK3VzZSB3ZWJraXRwZXJs
OjpjaGFuZ2Vsb2cgcXcoCisgICAgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAKKyAg
ICBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcworICAgIGdldF9mdW5jdGlvbl9saW5l
X3Jhbmdlc19mb3JfamF2YQorICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YXNj
cmlwdAorICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybAorICAgIGdldF9mdW5j
dGlvbl9saW5lX3Jhbmdlc19mb3JfcHl0aG9uCisgICAgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2Vz
X2Zvcl9zd2lmdAorKTsKK3VzZSB3ZWJraXRwZXJsOjpkaXJzOwogCiBzdWIgY2FwdHVyZU91dHB1
dCgkKTsKLXN1YiBjb252ZXJ0QWJzb2x1dGVQYXRoVG9SZWxhdGl2ZVVuaXhQYXRoKCQkKTsKIHN1
YiByZWFkVGVzdEZpbGVzKCQpOwogCiB1c2UgY29uc3RhbnQgRVhQRUNURURfUkVTVUxUU19TVUZG
SVggPT4gIi1leHBlY3RlZC50eHQiOwpAQCAtNjksNyArNzgsNyBAQCBmb3JlYWNoIG15ICR0ZXN0
RmlsZSAoc29ydCBAdGVzdEZpbGVzKSB7CiBwbGFuKHRlc3RzID0+IHNjYWxhciBAdGVzdFNldCk7
CiBmb3JlYWNoIG15ICR0ZXN0IChAdGVzdFNldCkgewogICAgIG9wZW4gRkgsICI8ICR0ZXN0LT57
aW5wdXRGaWxlfSIgb3IgZGllICJDYW5ub3Qgb3BlbiAkdGVzdC0+e2lucHV0RmlsZX06ICQhIjsK
LSAgICBteSAkcGFyc2VyID0gZXZhbCAiXFwmUHJlcGFyZUNoYW5nZUxvZzo6JHRlc3QtPnttZXRo
b2R9IjsKKyAgICBteSAkcGFyc2VyID0gZXZhbCAiXFwmJHRlc3QtPnttZXRob2R9IjsKICAgICBt
eSBAcmFuZ2VzOwogICAgIG15ICgkc3Rkb3V0LCAkc3RkZXJyKSA9IGNhcHR1cmVPdXRwdXQoc3Vi
IHsgQHJhbmdlcyA9ICRwYXJzZXItPihcKkZILCAkdGVzdC0+e2lucHV0RmlsZX0pOyB9KTsKICAg
ICBjbG9zZSBGSDsKQEAgLTEzMCwxMSArMTM5LDEwIEBAIHN1YiBjYXB0dXJlT3V0cHV0KCQpCiAg
ICAgcmV0dXJuICgkc3Rkb3V0LCAkc3RkZXJyKTsKIH0KIAotc3ViIGNvbnZlcnRBYnNvbHV0ZVBh
dGhUb1JlbGF0aXZlVW5peFBhdGgoJCQpCi17CitzdWIgY29udmVydEFic29sdXRlUGF0aFRvUmVs
YXRpdmVVbml4UGF0aCB7CiAgICAgbXkgKCRzdHJpbmcsICRwYXRoKSA9IEBfOwotICAgIG15ICRz
b3VyY2VEaXIgPSBMb2FkQXNNb2R1bGU6OnVuaXhQYXRoKExvYWRBc01vZHVsZTo6c291cmNlRGly
KCkpOwotICAgIG15ICRyZWxhdGl2ZVVuaXhQYXRoID0gTG9hZEFzTW9kdWxlOjp1bml4UGF0aCgk
cGF0aCk7CisgICAgbXkgJHNvdXJjZURpciA9IHVuaXhQYXRoKHNvdXJjZURpcigpKTsKKyAgICBt
eSAkcmVsYXRpdmVVbml4UGF0aCA9IHVuaXhQYXRoKCRwYXRoKTsKICAgICAkc291cmNlRGlyIC49
ICIvIiB1bmxlc3MgJHNvdXJjZURpciA9fiBtLS8kLTsKICAgICBteSAkcXVvdGVkU291cmNlRGly
ID0gcXVvdGVtZXRhKCRzb3VyY2VEaXIpOwogICAgICRyZWxhdGl2ZVVuaXhQYXRoICA9fiBzLyRx
dW90ZWRTb3VyY2VEaXIvLzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYxLjAucGwK
aW5kZXggM2YzZjVlODNkMWM3Li4yYWQ4OGVjODIyOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBs
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxl
YWtzLXJlcG9ydC12MS4wLnBsCkBAIC0yOSw5ICsyOSw5IEBAIHVzZSB3YXJuaW5nczsKIAogdXNl
IEZpbGU6OlNwZWM7CiB1c2UgRmluZEJpbjsKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRG
aW5kQmluOjpCaW4sICIuLiIpOwordXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46
OkJpbiwgIi4uIiwgIi4uIik7CiB1c2UgVGVzdDo6TW9yZTsKLXVzZSBMb2FkQXNNb2R1bGUgcXco
UnVuTGVha3MgcnVuLWxlYWtzKTsKK3VzZSB3ZWJraXRwZXJsOjpsZWFrcyBxdyhwYXJzZUxlYWtz
T3V0cHV0KTsKIAogbXkgQGlucHV0ID0gc3BsaXQoL1xuLywgPDxFT0YpOwogUHJvY2VzcyAxNjAy
OiA4NjY3MSBub2RlcyBtYWxsb2NlZCBmb3IgMTMyNjEgS0IKQEAgLTE2Miw3ICsxNjIsNyBAQCBF
T0YKICAgfSwKIF07CiAKLW15ICRhY3R1YWxPdXRwdXQgPSBSdW5MZWFrczo6cGFyc2VMZWFrc091
dHB1dChAaW5wdXQpOworbXkgJGFjdHVhbE91dHB1dCA9IHBhcnNlTGVha3NPdXRwdXQoQGlucHV0
KTsKIAogcGxhbih0ZXN0cyA9PiAxKTsKIGlzX2RlZXBseSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0
ZWRPdXRwdXQsICJsZWFrcyBSZXBvcnQgVmVyc2lvbiAxLjAgLSBubyBjYWxsIHN0YWNrIik7CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1
bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVu
LWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwKaW5kZXggMDZiYzU4
ZDBlMDljLi5hMzgxN2U2ODA5OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbAorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBv
cnQtdjIuMC1uZXcucGwKQEAgLTMwLDkgKzMwLDkgQEAgdXNlIHdhcm5pbmdzOwogCiB1c2UgRmls
ZTo6U3BlYzsKIHVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRC
aW46OkJpbiwgIi4uIik7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6Qmlu
LCAiLi4iLCAiLi4iKTsKIHVzZSBUZXN0OjpNb3JlOwotdXNlIExvYWRBc01vZHVsZSBxdyhSdW5M
ZWFrcyBydW4tbGVha3MpOwordXNlIHdlYmtpdHBlcmw6OmxlYWtzIHF3KHBhcnNlTGVha3NPdXRw
dXQpOwogCiBteSBAaW5wdXQgPSBzcGxpdCgvXG4vLCA8PEVPRik7CiBQcm9jZXNzOiAgICAgICAg
IER1bXBSZW5kZXJUcmVlIFsyOTkwM10KQEAgLTE2OCw3ICsxNjgsNyBAQCBFT0YKICAgfSwKIF07
CiAKLW15ICRhY3R1YWxPdXRwdXQgPSBSdW5MZWFrczo6cGFyc2VMZWFrc091dHB1dChAaW5wdXQp
OworbXkgJGFjdHVhbE91dHB1dCA9IHBhcnNlTGVha3NPdXRwdXQoQGlucHV0KTsKIAogcGxhbih0
ZXN0cyA9PiAxKTsKIGlzX2RlZXBseSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRPdXRwdXQsICJs
ZWFrcyBSZXBvcnQgVmVyc2lvbiAyLjAgKG5ldykiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9s
ZC5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxl
YWtzLXJlcG9ydC12Mi4wLW9sZC5wbAppbmRleCA2NmY5YWQzNTYzMWUuLjIwMmRjMzFkNGQwMCAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9y
dW4tbGVha3MtcmVwb3J0LXYyLjAtb2xkLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbApAQCAtMzAs
OSArMzAsOSBAQCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBGaWxlOjpTcGVjOwogdXNlIEZpbmRCaW47
Ci11c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKK3VzZSBs
aWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIsICIuLiIpOwogdXNlIFRl
c3Q6Ok1vcmU7Ci11c2UgTG9hZEFzTW9kdWxlIHF3KFJ1bkxlYWtzIHJ1bi1sZWFrcyk7Cit1c2Ug
d2Via2l0cGVybDo6bGVha3MgcXcocGFyc2VMZWFrc091dHB1dCk7CiAKIG15IEBpbnB1dCA9IHNw
bGl0KC9cbi8sIDw8RU9GKTsKIGxlYWtzIFJlcG9ydCBWZXJzaW9uOiAgMi4wCkBAIC0xMTgsNyAr
MTE4LDcgQEAgRU9GCiAgIH0sCiBdOwogCi1teSAkYWN0dWFsT3V0cHV0ID0gUnVuTGVha3M6OnBh
cnNlTGVha3NPdXRwdXQoQGlucHV0KTsKK215ICRhY3R1YWxPdXRwdXQgPSBwYXJzZUxlYWtzT3V0
cHV0KEBpbnB1dCk7CiAKIHBsYW4odGVzdHMgPT4gMSk7CiBpc19kZWVwbHkoJGFjdHVhbE91dHB1
dCwgJGV4cGVjdGVkT3V0cHV0LCAibGVha3MgUmVwb3J0IFZlcnNpb24gMi4wIChvbGQpIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441546</attachid>
            <date>2021-10-17 13:00:34 -0700</date>
            <delta_ts>2021-10-18 09:39:58 -0700</delta_ts>
            <desc>PATCH</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>162883</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMWQ2
ZmJjMGFiYTcuLjYxOGQwZDUxMTFiMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0xMC0xNyAgQmFzdWtlIFN1
enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW3dlYmtpdHBlcmxdIFN0
b3AgdXNpbmcgTG9hZEFzTW9kdWxlLnBtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIG1vZHVsZSBsb2FkIGEgc2NyaXB0IGZpbGUgYXMgbW9kdWxl
IHdpdGggYSBiaXQgdHJpY2t5IHdheS4gSXQgcHJldmVudHMgdGhlIHByb3BlcgorICAgICAgICB1
c2FnZSBvZiBwYWNrYWdlIGFmdGVyIGFsbC4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtb2R1bGUgaXMg
dG8gdGVzdCByb3V0aW5lcyBkZWZpbmVkIGluIHRoZQorICAgICAgICBzY3JpcHQuIEl0IGp1c3Qg
YmUgd3Jvbmcgd2l0aCBzdWNoIHdheS4gSWYgeW91IGhhdmUgc29tZXRoaW5nIHRvIHRlc3QsIGl0
IHNob3VsZCBiZSBzZXBhcmF0ZWQKKyAgICAgICAgYXMgYSBtb2R1bGUgYW5kIGJlIGltcG9ydGVk
IHRvIHRoZSBzY3JpcHQuIFRoZW4gdW5pdCB0ZXN0IGNhbiBsb2FkIHRoZSBtb2R1bGUgYW5kIGNh
biB0ZXN0CisgICAgICAgIHdpdGhvdXQgYW55IHNvcnQgb2YgdHJvdWJsZS4KKworICAgICAgICAq
IFNjcmlwdHMvZmlsdGVyLWJ1aWxkLXdlYmtpdDoKKyAgICAgICAgKHNldE91dHB1dEZvcm1hdE9w
dGlvbik6CisgICAgICAgIChzaG91bGRTaG93U3Vic2VxdWVudExpbmUpOiBNb3ZlZCB0byB3ZWJr
aXRwZXJsL2J1aWxkL291dHB1dC5wbS4KKyAgICAgICAgKHNob3VsZElnbm9yZUxpbmUpOiBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nOgorICAgICAgICAoZ2VuZXJh
dGVGdW5jdGlvbkxpc3RzKToKKyAgICAgICAgKGZldGNoQnVnWE1MRGF0YSk6CisgICAgICAgIChv
cGVuQ2hhbmdlTG9ncyk6CisgICAgICAgIChtZXRob2RfZGVjbF90b19zZWxlY3Rvcik6CisgICAg
ICAgIChkaWZmQ29tbWFuZCk6CisgICAgICAgIChzdGF0dXNDb21tYW5kKToKKyAgICAgICAgKHBy
b3BlcnR5Q2hhbmdlRGVzY3JpcHRpb24pOgorICAgICAgICAobm9ybWFsaXplTGluZUVuZGluZ3Mp
OgorICAgICAgICAoYWN0dWFsbHlHZW5lcmF0ZUZ1bmN0aW9uTGlzdHMpOiBNb3ZlZCB0byB3ZWJr
aXRwZXJsL2NoYW5nZWxvZy4KKyAgICAgICAgKGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucyk6IERp
dHRvLgorICAgICAgICAoZmV0Y2hCdWdEZXNjcmlwdGlvbkZyb21CdWdYTUxEYXRhKTogRGl0dG8u
CisgICAgICAgIChmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEpOiBEaXR0by4KKyAgICAgICAg
KGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcyk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9u
X2xpbmVfcmFuZ2VzX2Zvcl9jcHApOiBEaXR0by4KKyAgICAgICAgKGRlbGV0ZV9uYW1lc3BhY2Vz
X2Zyb21fcmFuZ2VzX2Zvcl9jcHApOiBEaXR0by4KKyAgICAgICAgKGlzX2Z1bmN0aW9uX2luX25h
bWVzcGFjZSk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9q
YXZhKTogRGl0dG8uCisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmFz
Y3JpcHQpOiBEaXR0by4KKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVy
bCk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRob24p
OiBEaXR0by4KKyAgICAgICAgKGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKTogRGl0
dG8uCisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3N3aWZ0KTogRGl0dG8u
CisgICAgICAgIChwYXJzZVN3aWZ0RnVuY3Rpb25BcmdzKTogRGl0dG8uCisgICAgICAgIChhdHRy
aWJ1dGVDb21tYW5kKTogRGl0dG8uCisgICAgICAgIChleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFu
Z2UpOiBEaXR0by4KKyAgICAgICAgKGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UpOiBEaXR0
by4KKyAgICAgICAgKGRlY29kZUVudGl0aWVzKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9y
dW4tbGVha3M6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKHJlbW92ZU1hdGNoaW5nUmVjb3Jk
cyk6CisgICAgICAgIChydW5MZWFrcyk6IE1vdmVkIHRvIHdlYmtpdHBlcmwvbGVha3MucG0uCisg
ICAgICAgIChwYXJzZUxlYWtzT3V0cHV0KTogRGl0dG8uCisgICAgICAgIChyZXBvcnRFcnJvcik6
IERlbGV0ZWQuIFVzZSBDYXJwOjpjcm9hayBpbnN0ZWFkLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0ZGlycy5wbToKKyAgICAgICAgKGRldGVybWluZUJhc2VQcm9kdWN0RGlyKToKKyAgICAgICAg
KGRldGVybWluZUN1cnJlbnRTVk5SZXZpc2lvbik6CisgICAgICAgIChjaGRpcldlYktpdCk6Cisg
ICAgICAgIChkZXRlcm1pbmVTb3VyY2VEaXIpOiBNb3ZlZCB0byB3ZWJraXRwZXJsL2RpcnMucG0u
CisgICAgICAgIChzZXRTb3VyY2VEaXIpOiBEaXR0by4KKyAgICAgICAgKHNvdXJjZURpcik6IERp
dHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG06IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2J1aWxkL291dHB1dC5wbTogRXh0cmFj
dGVkIGZyb20gVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0LgorICAgICAgICAoc2hv
dWxkU2hvd1N1YnNlcXVlbnRMaW5lKToKKyAgICAgICAgKHNob3VsZElnbm9yZUxpbmUpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9jaGFuZ2Vsb2cucG06IEV4dHJhY3RlZCBmcm9tIFRv
b2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cuCisgICAgICAgIChhY3R1YWxseUdlbmVyYXRl
RnVuY3Rpb25MaXN0cyk6CisgICAgICAgIChleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UpOgor
ICAgICAgICAoZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSk6CisgICAgICAgIChhdHRyaWJ1
dGVDb21tYW5kKToKKyAgICAgICAgKGZldGNoQnVnRGVzY3JpcHRpb25Gcm9tQnVnWE1MRGF0YSk6
CisgICAgICAgIChmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEpOgorICAgICAgICAoY29tcHV0
ZU1vZGlmaWVkRnVuY3Rpb25zKToKKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcyk6
CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2NwcCk6CisgICAgICAgIChk
ZWxldGVfbmFtZXNwYWNlc19mcm9tX3Jhbmdlc19mb3JfY3BwKToKKyAgICAgICAgKGlzX2Z1bmN0
aW9uX2luX25hbWVzcGFjZSk6CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9y
X2phdmEpOgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0
KToKKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybCk6CisgICAgICAg
IChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhvbik6CisgICAgICAgIChnZXRfc2Vs
ZWN0b3JfbGluZV9yYW5nZXNfZm9yX2Nzcyk6CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9y
YW5nZXNfZm9yX3N3aWZ0KToKKyAgICAgICAgKHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3MpOgorICAg
ICAgICAoZGVjb2RlRW50aXRpZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9kaXJz
LnBtOiBFeHRyYWN0ZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMuCisgICAgICAgIChz
b3VyY2VEaXIpOgorICAgICAgICAoc2V0U291cmNlRGlyKToKKyAgICAgICAgKGRldGVybWluZVNv
dXJjZURpcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2ZpbHRlci1idWlsZC13ZWJr
aXRfdW5pdHRlc3Qvc2hvdWxkSWdub3JlTGluZV91bml0dGVzdHMucGw6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL2xlYWtzLnBtOiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1s
ZWFrcy4KKyAgICAgICAgKHJ1bkxlYWtzKToKKyAgICAgICAgKHBhcnNlTGVha3NPdXRwdXQpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9l
eHRyYWN0TGluZVJhbmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2UucGw6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2ZldGNoUmFkYXJVUkxGcm9t
QnVnWE1MRGF0YS5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFu
Z2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGw6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rp
b25MaXN0cy5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VM
b2dfdW5pdHRlc3QvcGFyc2VyX3VuaXR0ZXN0cy5wbDoKKyAgICAgICAgKGNvbnZlcnRBYnNvbHV0
ZVBhdGhUb1JlbGF0aXZlVW5peFBhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4w
LW5ldy5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0
L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1vbGQucGw6CisKIDIwMjEtMTAtMTUgIEJKIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBoYW5kbGUg
UHJvbWlzZSBvYmplY3RzIHJldHVybmVkIGZyb20gZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRh
YgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0IGIvVG9vbHMv
U2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0CmluZGV4IGZjMmE1YzRhOGViZi4uNTMwMzFkYjM0
MWJmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQKKysrIGIv
VG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0CkBAIC0zMyw2ICszMyw3IEBAIHVzZSBG
aW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBW
Q1NVdGlsczsKK3VzZSB3ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0IHF3KHNob3VsZElnbm9yZUxp
bmUgJHBsYXRmb3JtKTsKIAogdXNlIGNvbnN0YW50IHsKICAgICBTVFlMRV9QTEFJTiA9PiAwLApA
QCAtNjYsNyArNjcsNiBAQCBIVE1MRk9PVEVSCiBzdWIgcHJpbnRMaW5lKCQkKTsKIHN1YiBzZXRM
b2dmaWxlT3B0aW9uKCQkKTsKIHN1YiBzZXRPdXRwdXRGb3JtYXRPcHRpb24oJCQpOwotc3ViIHNo
b3VsZElnbm9yZUxpbmUoJCQpOwogc3ViIHVzYWdlQW5kRXhpdCgpOwogCiAjIERlZmluZWQgaW4g
VkNTVXRpbHMuCkBAIC03NCw3ICs3NCw2IEBAIHN1YiBwb3NzaWJseUNvbG9yZWQoJCQpOwogCiAj
IEdsb2JhbCB2YXJpYWJsZXMgdXNlZCBvbmx5IGluIGdsb2JhbCBzY29wZS4KIG15ICRvdXRwdXRQ
YXRoID0gIiZTVERPVVQiOwotbXkgJHBsYXRmb3JtID0gIm1hYyI7CiBteSAkc2hvd0hlbHA7CiAK
ICMgR2xvYmFsIHZhcmlhYmxlcyB1c2VkIGluIGdsb2JhbCBhbmQgc3Vicm91dGluZSBzY29wZS4K
QEAgLTgyLDggKzgxLDYgQEAgb3VyICRsb2dVbmZpbHRlcmVkT3V0cHV0Owogb3VyICRvdXRwdXRG
b3JtYXQgPSAidGV4dCI7CiBvdXIgJHVuZmlsdGVyZWRPdXRwdXRQYXRoID0gImJ1aWxkLmxvZyI7
CiBvdXIgJHVzZUNvbG9yID0gLXQgU1RET1VUOwotb3VyICRpbkVudGl0bGVtZW50cyA9IDA7Ci1v
dXIgJGluRGV2aWNlUHJlcGFyYXRpb25XYXJuaW5ncyA9IDA7CiAKIHN1YiB1c2FnZUFuZEV4aXQo
KQogewpAQCAtMjc2LDEyNyArMjczLDMgQEAgc3ViIHNldE91dHB1dEZvcm1hdE9wdGlvbigkJCkK
ICAgICB9CiAgICAgJG91dHB1dEZvcm1hdCA9ICR2YWx1ZTsKIH0KLQotc3ViIHNob3VsZFNob3dT
dWJzZXF1ZW50TGluZSgkKQotewotICAgIG15ICgkbGluZSkgPSBAXzsKLQotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9yZWZlcmVuY2VkIGZyb206JC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gLyhub3RlOnxlcnJvcjopLzsKLQotICAgIHJldHVybiAwOwotfQotCi1zdWIgc2hvdWxkSWdu
b3JlTGluZSgkJCkKLXsKLSAgICBteSAoJHByZXZpb3VzTGluZSwgJGxpbmUpID0gQF87Ci0KLSAg
ICBpZiAoJGxpbmUgPX4gL15FbnRpdGxlbWVudHM6JC8pIHsKLSAgICAgICAgJGluRW50aXRsZW1l
bnRzID0gMTsKLSAgICAgICAgcmV0dXJuIDEKLSAgICB9Ci0KLSAgICBpZiAoJGluRW50aXRsZW1l
bnRzKSB7Ci0gICAgICAgICRpbkVudGl0bGVtZW50cyA9IDAgaWYgJGxpbmUgPX4gL159JC87Ci0g
ICAgICAgIHJldHVybiAxCi0gICAgfQotCi0gICAgIyBpUGhvbmUgcHJlcGFyYXRpb24gZXJyb3Jz
IGFsd2F5cyBzdGFydCBhbmQgZW5kIHdpdGggbGluZXMgY29udGFpbmluZyAnaVBob25lQ29ubmVj
dDonLgotICAgIGlmICgkaW5EZXZpY2VQcmVwYXJhdGlvbldhcm5pbmdzKSB7Ci0gICAgICAgICRp
bkRldmljZVByZXBhcmF0aW9uV2FybmluZ3MgPSAwIGlmICRsaW5lID1+IC89PSBFTkQ6IFVuZGVy
bHlpbmcgZGV2aWNlIHByZXBhcmF0aW9uIHdhcm5pbmdzID09LzsKLSAgICAgICAgcmV0dXJuIDEK
LSAgICB9Ci0KLSAgICBpZiAoJGxpbmUgPX4gL2lQaG9uZUNvbm5lY3Q6LykgewotICAgICAgICAk
aW5EZXZpY2VQcmVwYXJhdGlvbldhcm5pbmdzID0gMTsKLSAgICAgICAgcmV0dXJuIDEKLSAgICB9
Ci0KLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKiQvOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eQ29tbWFuZCBsaW5lIGludm9jYXRpb246LzsKLSAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXkJ1aWxkIHNldHRpbmdzIGZyb20gY29tbWFuZCBsaW5lOi87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15Vc2VyIGRlZmF1bHRzIGZyb20gY29tbWFuZCBsaW5lOi87Ci0gICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15QcmVwYXJlIGJ1aWxkLzsKLSAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXkJ1aWxkIHN5c3RlbSBpbmZvcm1hdGlvbi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15ub3RlOiBQbGFubmluZyBidWlsZC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15u
b3RlOiBDb25zdHJ1Y3RpbmcgYnVpbGQgZGVzY3JpcHRpb24vOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9ebm90ZTogQnVpbGQgZGVzY3JpcHRpb24gKGNvbnN0cnVjdGVkfGxvYWRlZCkgaW4g
LiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogVXNpbmcgYnVpbGQgZGVzY3Jp
cHRpb24gLiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogVXNpbmcgZWFnZXIg
Y29tcGlsYXRpb24vOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogRXhlY3V0aW9u
IHBvbGljeSBleGNlcHRpb24gcmVnaXN0cmF0aW9uIGZhaWxlZCBhbmQgd2FzIHNraXBwZWQ6IEVy
cm9yIERvbWFpbj1OU1BPU0lYRXJyb3JEb21haW4gQ29kZT0xICJPcGVyYXRpb24gbm90IHBlcm1p
dHRlZCIvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogZGV0ZWN0ZWQgZW5jb2Rp
bmcgb2YgaW5wdXQgZmlsZSBhcyBVbmljb2RlIFwoLipcKS87Ci0gICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL21ha2UoXFtcZCtcXSk/OiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yLzsKLSAgICByZXR1
cm4gMSBpZiAkbGluZSA9fiAvXkphdmFTY3JpcHRDb3JlXC9jcmVhdGVfaGFzaF90YWJsZS87Ci0g
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL0phdmFTY3JpcHRDb3JlLmZyYW1ld29ya1wvUHJpdmF0
ZUhlYWRlcnNcL2NyZWF0ZV9oYXNoX3RhYmxlLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
XkphdmFTY3JpcHRDb3JlXC9wY3JlXC9kZnRhYmxlcy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15DcmVhdGluZyBoYXNodGFibGUgZm9yIC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15Xcm90ZSBvdXRwdXQgdG8gLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVORE9DVU1F
TlRFRDogLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvbGlidG9vbC4qaGFzIG5vIHN5bWJv
bHMvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eIyBMb3dlciBjYXNlIGFsbCB0aGUgdmFs
dWVzLCBhcyBDU1MgdmFsdWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlJC87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15pZiBzb3J0IC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3NldC13
ZWJraXQtY29uZmlndXJhdGlvbi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15idWlsZGlu
ZyBmaWxlIGxpc3QvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXC5cLyQvOwotICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eXFMrXC5oJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15cUytcLyQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ec2VudCBcZCsgYnl0ZXMvOwot
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9edG90YWwgc2l6ZSBpcy87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL09uZSBvZiB0aGUgdHdvIHdpbGwgYmUgdXNlZFwuIFdoaWNoIG9uZSBpcyB1
bmRlZmluZWRcLi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL1RoZSBMZWdhY3kgQnVpbGQg
U3lzdGVtIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLzsKLSAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvXlwoICh4Y29kZWJ1aWxkfGlmKSAvOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9ed2FybmluZzogY2FuJ3QgZmluZCBhZGRpdGlvbmFsIFNESy87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL153YXJuaW5nOiBubyB1bWJyZWxsYSBoZWFkZXIgZm91bmQgZm9yIHRh
cmdldCAnLionLCBtb2R1bGUgbWFwIHdpbGwgbm90IGJlIGdlbmVyYXRlZCQvOwotICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ed2FybmluZ1w6IGRldGVjdGVkIGludGVybmFsIGluc3RhbGwsIHBh
c3NpbmcgZW50aXRsZW1lbnRzIHRvIHNpbXVsYXRvciBhbnl3YXlcLi87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL21heSBub3QgZnVuY3Rpb24gaW4gdGhlIFNpbXVsYXRvciBiZWNhdXNlIEFk
IEhvYy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL1wvdXNyXC9iaW5cL2NsYW5nIC4qPyBc
PiBcUysuc2IvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8geGNvZGVidWlsZFxbWzAtOV0r
OlswLTlhLWZdK1xdXHMrRFZUQXNzZXJ0aW9uczogV2FybmluZyBpbiAuKi87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL14oRGV0YWlsc3xPYmplY3R8TWV0aG9kfEZ1bmN0aW9ufFRocmVhZCk6
LzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlBsZWFzZSBmaWxlIGEgYnVnIGF0IC87Ci0g
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL2NyZWF0ZWQgYnkgYW4gdW5zdXBwb3J0ZWQgWENEZXBl
bmRlbmN5R3JhcGggYnVpbGQkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvd2FybmluZzog
VGhlIGFzc2lnbm1lbnQgb2YgJy4qJyBhdCAiLioiIHVzZXMgXCRcKGluaGVyaXRlZFwpLiBJbiB0
aGUgbmV3IGJ1aWxkIHN5c3RlbSB0aGlzIHdpbGwgaW5oZXJpdCBmcm9tIGFuIGVhcmxpZXIgZGVm
aW5pdGlvbiBvZiAnLionIGluIHRoaXMgeGNjb25maWcgZmlsZSBvciBpdHMgaW1wb3J0czsgdGhl
IG9sZCBidWlsZCBzeXN0ZW0gd291bGQgZGlzY2FyZCBlYXJsaWVyIGRlZmluaXRpb25zLiBUaGlz
IG1heSByZXN1bHQgaW4gY2hhbmdlcyB0byByZXNvbHZlZCBidWlsZCBzZXR0aW5nIHZhbHVlcy4v
OwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8uKiBjb20uYXBwbGUuYWN0b29sLmNvbXBpbGF0
aW9uLXJlc3VsdHMgLiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8uKlwvQXNzZXRzLmNh
ci87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLy4qXC9hc3NldGNhdGFsb2dfZ2VuZXJhdGVk
X2luZm8ucGxpc3QvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebW91bnQ6IC4rIGZhaWxl
ZCB3aXRoLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVzaW5nIC4rIHByb2R1Y3Rpb24g
ZW52aXJvbm1lbnQuJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3JlcGxhY2luZyBleGlz
dGluZyBzaWduYXR1cmUkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVubG9ja2luZyAn
LipcLmtleWNoYWluLWRiJyQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXGQrIGxvY2Fs
aXphYmxlIHN0cmluZ3MkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxkKyBwbHVyYWwg
cnVsZXMkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlRoZSBsaXN0IG9mIGV4cG9ydGVk
IHN5bWJvbHMgZGlkIG5vdCBjaGFuZ2UuJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15k
aXR0bzogQ2Fubm90IGdldCB0aGUgcmVhbCBwYXRoIGZvciBzb3VyY2UvOwotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eRHVwbGljYXRlIEVudHJ5IFdhcyBTa2lwcGVkOi87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL15BZGRpbmcgLio/ZW50aXRsZW1lbnRzLzsKLSAgICByZXR1cm4gMSBp
ZiAkbGluZSA9fiAvXk1ha2luZyBhcHAgYnVuZGxlIGxhdW5jaGFibGUvOwotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eRmluaXNoZWQgYWRkaW5nIGVudGl0bGVtZW50c1wuJC87Ci0gICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL14uKiB3aWxsIG5vdCBiZSBjb2RlIHNpZ25lZCBiZWNhdXNlIGl0
cyBzZXR0aW5ncyBkb24ndCBzcGVjaWZ5IGEgZGV2ZWxvcG1lbnQgdGVhbS4kLzsKLQotICAgIGlm
ICgkcGxhdGZvcm0gZXEgIndpbiIpIHsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15c
cyoodG91Y2h8cGVybHxjYXR8cm0gLWZ8ZGVsfHB5dGhvbnxcL3VzclwvYmluXC9nXCtcK3xncGVy
ZnxlY2hvfHNlZHxpZiBcWyBcLWZ8V2ViQ29yZVwvZ2VuZXJhdGUtZXhwb3J0LWZpbGUpIC87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqKGlmIG5vdCBleGlzdCBcInxpZiBlcnJv
cmxldmVsIDEpLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyheXHMqfE1TQjMwNzM6
XHMrKShzZXQgfFJFTSB8Y21kIFwvYykvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
XlxzKltjQ106XFxbcFBdcm9ncmFtIFtmRl1pbGVzLipcXC4qXFwoQ0x8bWlkbClcLmV4ZSAvOwot
ICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKlByb2Nlc3NpbmcgLipcLihhY2Z8aHxp
ZGwpXHMqJC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqcHJpbnRmIC87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqXC91c3JcL2JpblwvYmFzaFxzKi87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqb2ZmbGluZWFzbTogTm90aGluZyBjaGFu
Z2VkLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyBcZCsgRmlsZVwoc1wpIGNvcGll
ZC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqRmlsZSBub3QgZm91bmQgLSBc
KlwuaC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ta2RpclxzK1wiLzsKLSAgICAg
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3hjb3B5IFwveSBcL2QgXCIvOwotICAgICAgICByZXR1
cm4gMSBpZiAkbGluZSA9fiAvXC5vYmpcIlxzKiQvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvOlxzKyhjbWQgXC9jfHNldClccysvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvTVNCMzA3MzpccyskLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL01TQjMwNzM6
XHMraWYgbm90IGV4aXN0LzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3doaWNoLmV4
ZSBiYXNoLzsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXih0
b3VjaHxwZXJsfGNhdHxybSAtZnxweXRob258XC91c3JcL2JpblwvZ1wrXCt8XC9iaW5cL2xufGdw
ZXJmfGVjaG98c2VkfGlmIFxbIFwtZnxXZWJDb3JlXC9nZW5lcmF0ZS1leHBvcnQtZmlsZXx3cml0
ZS1maWxlfGNobW9kKSAvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXiAgICAvICYm
ICFzaG91bGRTaG93U3Vic2VxdWVudExpbmUoJHByZXZpb3VzTGluZSk7Ci0gICAgICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ecHJpbnRmIC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eb2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLzsKLSAgICB9Ci0gICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL15TaG93aW5nIGZpcnN0LzsKLQotICAgIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZyBiL1Rvb2xzL1NjcmlwdHMvcHJlcGFy
ZS1DaGFuZ2VMb2cKaW5kZXggNDEwNjNjMGIxOTcwLi43MTNkZTk5NGQ4ZmUgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cKKysrIGIvVG9vbHMvU2NyaXB0cy9wcmVw
YXJlLUNoYW5nZUxvZwpAQCAtNjMsMzAgKzYzLDIyIEBAIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsK
IHVzZSBMaXN0OjpVdGlsIHF3L21heC87CiB1c2UgUE9TSVggcXcoc3RyZnRpbWUpOwogdXNlIFZD
U1V0aWxzOwordXNlIHdlYmtpdHBlcmw6OmNoYW5nZWxvZzsKIAotc3ViIGFjdHVhbGx5R2VuZXJh
dGVGdW5jdGlvbkxpc3RzKCQkJCQkJCk7Ci1zdWIgYXR0cmlidXRlQ29tbWFuZCgkJCQpOwogc3Vi
IGNoYW5nZUxvZ0RhdGUoJCk7CiBzdWIgY2hhbmdlTG9nRW1haWxBZGRyZXNzRnJvbUFyZ3MoJCQp
Owogc3ViIGNoYW5nZUxvZ05hbWVGcm9tQXJncygkJCk7Ci1zdWIgY29tcHV0ZU1vZGlmaWVkRnVu
Y3Rpb25zKCQkJCk7CiBzdWIgY3JlYXRlUGF0Y2hDb21tYW5kKCQkJCQpOwotc3ViIGRlY29kZUVu
dGl0aWVzKCQpOwogc3ViIGRldGVybWluZVByb3BlcnR5Q2hhbmdlcygkJCQpOwogc3ViIGRpZmZD
b21tYW5kKCQkJCQpOwogc3ViIGRpZmZGcm9tVG9TdHJpbmcoJCQkKTsKLXN1YiBleHRyYWN0TGlu
ZVJhbmdlQWZ0ZXJDaGFuZ2UoJCk7Ci1zdWIgZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgk
KTsKIHN1YiBmZXRjaEJ1Z1hNTERhdGEoJCQpOwotc3ViIGZldGNoQnVnRGVzY3JpcHRpb25Gcm9t
QnVnWE1MRGF0YSgkJCQpOwotc3ViIGZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YSgkJCk7CiBz
dWIgZmluZENoYW5nZUxvZ3MoJCQpOwogc3ViIGZpbmRPcmlnaW5hbEZpbGVGcm9tU3ZuKCQpOwog
c3ViIGdlbmVyYXRlRmlsZUxpc3QoXCUkJCRcJSk7CiBzdWIgZ2VuZXJhdGVGdW5jdGlvbkxpc3Rz
KCQkJCQkKTsKIHN1YiBnZW5lcmF0ZU5ld0NoYW5nZUxvZ3MoJCQkJCQkJCQkJCQkJCQkKTsKIHN1
YiBnZXRMYXRlc3RDaGFuZ2VMb2dzKCQpOwotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcygk
JCk7CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJCQpOwogc3ViIGRlbGV0
ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2VzX2Zvcl9jcHAoXEBcQCk7CiBzdWIgaXNfZnVuY3Rpb25f
aW5fbmFtZXNwYWNlKCQkKTsKQEAgLTk1LDcgKzg3LDYgQEAgc3ViIGdldF9mdW5jdGlvbl9saW5l
X3Jhbmdlc19mb3JfamF2YXNjcmlwdCgkJCk7CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2Vz
X2Zvcl9wZXJsKCQkKTsKIHN1YiBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcygkJCk7
CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCgkJCk7Ci1zdWIgcGFyc2VT
d2lmdEZ1bmN0aW9uQXJncygkKTsKIHN1YiBpc0FkZGVkU3RhdHVzKCQpOwogc3ViIGlzQ29uZmxp
Y3RTdGF0dXMoJCQkKTsKIHN1YiBpc01vZGlmaWVkU3RhdHVzKCQpOwpAQCAtMzEzLDEzNiArMzA0
LDYgQEAgc3ViIGdlbmVyYXRlRnVuY3Rpb25MaXN0cygkJCQkJCkKICAgICBhY3R1YWxseUdlbmVy
YXRlRnVuY3Rpb25MaXN0cygkY2hhbmdlZEZpbGVzLCAkZnVuY3Rpb25MaXN0cywgJGdpdENvbW1p
dCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlLCBcJWRlbGVnYXRlSGFzaCk7CiB9CiAKLXN1YiBhY3R1
YWxseUdlbmVyYXRlRnVuY3Rpb25MaXN0cygkJCQkJCQpCi17Ci0gICAgbXkgKCRjaGFuZ2VkRmls
ZXMsICRmdW5jdGlvbkxpc3RzLCAkZ2l0Q29tbWl0LCAkZ2l0SW5kZXgsICRtZXJnZUJhc2UsICRk
ZWxlZ2F0ZUhhc2hSZWYpID0gQF87Ci0KLSAgICBteSAlbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdl
ZDsKLSAgICBteSAlbGluZV9yYW5nZXNfYmVmb3JlX2NoYW5nZWQ7Ci0gICAgaWYgKEAkY2hhbmdl
ZEZpbGVzKSB7Ci0gICAgICAgICMgRm9yIGVhY2ggZmlsZSwgYnVpbGQgYSBsaXN0IG9mIG1vZGlm
aWVkIGxpbmVzLgotICAgICAgICAjIFVzZSBsaW5lIG51bWJlcnMgZnJvbSB0aGUgImFmdGVyIiBz
aWRlIG9mIGVhY2ggZGlmZi4KLSAgICAgICAgcHJpbnQgU1RERVJSICIgIFJldmlld2luZyBkaWZm
IHRvIGRldGVybWluZSB3aGljaCBsaW5lcyBjaGFuZ2VkLlxuIjsKLSAgICAgICAgbXkgJGZpbGU7
Ci0gICAgICAgIG15ICRkaWZmRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hSZWYtPntvcGVuRGlm
Zn0oJGNoYW5nZWRGaWxlcywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlKTsKLSAg
ICAgICAgaWYgKCEkZGlmZkZpbGVIYW5kbGUpIHsKLSAgICAgICAgICAgIGRpZSAiVGhlIGRpZmYg
ZmFpbGVkOiAkIS5cbiI7Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKDwkZGlmZkZpbGVIYW5k
bGU+KSB7Ci0gICAgICAgICAgICBteSAkZmlsZVBhdGggPSBwYXJzZURpZmZTdGFydExpbmUoJF8p
OwotICAgICAgICAgICAgJGZpbGUgPSAkZGVsZWdhdGVIYXNoUmVmLT57bm9ybWFsaXplUGF0aH0o
JGZpbGVQYXRoKSBpZiAkZmlsZVBhdGg7Ci0gICAgICAgICAgICBpZiAoZGVmaW5lZCAkZmlsZSkg
ewotICAgICAgICAgICAgICAgIG15ICgkYmVmb3JlX3N0YXJ0LCAkYmVmb3JlX2VuZCkgPSBleHRy
YWN0TGluZVJhbmdlQmVmb3JlQ2hhbmdlKCRfKTsKLSAgICAgICAgICAgICAgICBpZiAoJGJlZm9y
ZV9zdGFydCA+PSAxICYmICRiZWZvcmVfZW5kID49IDEpIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaCBAeyRsaW5lX3Jhbmdlc19iZWZvcmVfY2hhbmdlZHskZmlsZX19LCBbICRiZWZvcmVfc3Rh
cnQsICRiZWZvcmVfZW5kIF07Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01N
SVQvKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAk
ZmlsZSBjb250YWlucyB0aGUgc3RyaW5nIERPX05PVF9DT01NSVQsIGxpbmUgJC5cbiI7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG15ICgkYWZ0ZXJfc3RhcnQsICRhZnRlcl9l
bmQpID0gZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlKCRfKTsKLSAgICAgICAgICAgICAgICBp
ZiAoJGFmdGVyX3N0YXJ0ID49IDEgJiYgJGFmdGVyX2VuZCA+PSAxKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2ggQHskbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmlsZX19LCBbICRhZnRl
cl9zdGFydCwgJGFmdGVyX2VuZCBdOwotICAgICAgICAgICAgICAgIH0gZWxzaWYgKC9ET19OT1Rf
Q09NTUlULykgewotICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIldBUk5JTkc6IGZp
bGUgJGZpbGUgY29udGFpbnMgdGhlIHN0cmluZyBET19OT1RfQ09NTUlULCBsaW5lICQuXG4iOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjbG9z
ZSgkZGlmZkZpbGVIYW5kbGUpOwotICAgIH0KLQotICAgICMgRm9yIGVhY2ggc291cmNlIGZpbGUs
IGNvbnZlcnQgbGluZSByYW5nZSB0byBmdW5jdGlvbiBsaXN0LgotICAgIHByaW50IFNUREVSUiAi
ICBFeHRyYWN0aW5nIGFmZmVjdGVkIGZ1bmN0aW9uIG5hbWVzIGZyb20gc291cmNlIGZpbGVzLlxu
IjsKLSAgICBteSAlZmlsZXNUb0V4YW1pbmUgPSBtYXAgeyAkXyA9PiAxIH0gKGtleXMoJWxpbmVf
cmFuZ2VzX2JlZm9yZV9jaGFuZ2VkKSwga2V5cyglbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZCkp
OwotICAgIGZvcmVhY2ggbXkgJGZpbGUgKGtleXMgJWZpbGVzVG9FeGFtaW5lKSB7Ci0gICAgICAg
IG15ICVzYXdfZnVuY3Rpb247Ci0KLSAgICAgICAgIyBGaW5kIGFsbCB0aGUgZnVuY3Rpb25zIGlu
IHRoZSBmaWxlLgotICAgICAgICBteSAkc291cmNlRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hS
ZWYtPntvcGVuRmlsZX0oJGZpbGUpOwotICAgICAgICBuZXh0IHVubGVzcyAkc291cmNlRmlsZUhh
bmRsZTsKLSAgICAgICAgbXkgQGFmdGVyQ2hhbmdlRnVuY3Rpb25SYW5nZXMgPSBnZXRfZnVuY3Rp
b25fbGluZV9yYW5nZXMoJHNvdXJjZUZpbGVIYW5kbGUsICRmaWxlKTsKLSAgICAgICAgY2xvc2Uo
JHNvdXJjZUZpbGVIYW5kbGUpOwotCi0gICAgICAgICMgRmluZCBtb2RpZmllZCBmdW5jdGlvbnMg
aW4gdGhlIGZpbGUuCi0gICAgICAgIGlmICgkbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmls
ZX0pIHsKLSAgICAgICAgICAgIG15IEBjaGFuZ2VfcmFuZ2VzID0gKEB7JGxpbmVfcmFuZ2VzX2Fm
dGVyX2NoYW5nZWR7JGZpbGV9fSwgW10pOwotICAgICAgICAgICAgbXkgQGZ1bmN0aW9ucyA9IGNv
bXB1dGVNb2RpZmllZEZ1bmN0aW9ucygkZmlsZSwgXEBjaGFuZ2VfcmFuZ2VzLCBcQGFmdGVyQ2hh
bmdlRnVuY3Rpb25SYW5nZXMpOwotCi0gICAgICAgICAgICAjIEZvcm1hdCB0aGUgbGlzdCBvZiBm
dW5jdGlvbnMuCi0gICAgICAgICAgICBpZiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgICAg
ICRmdW5jdGlvbkxpc3RzLT57JGZpbGV9ID0gIiIgaWYgIWRlZmluZWQgJGZ1bmN0aW9uTGlzdHMt
PnskZmlsZX07Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gLj0gIlxu
ICAgICAgICAoIiAuIGpvaW4oIik6XG4gICAgICAgICgiLCBAZnVuY3Rpb25zKSAuICIpOiI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgIyBGaW5kIHRoZSBkZWxldGVkIGZ1bmN0
aW9ucyBpbiB0aGUgb3JpZ2luYWwgZmlsZS4KLSAgICAgICAgaWYgKCRsaW5lX3Jhbmdlc19iZWZv
cmVfY2hhbmdlZHskZmlsZX0pIHsKLSAgICAgICAgICAgIG15ICRvcmlnaW5hbEZpbGVIYW5kbGUg
PSAkZGVsZWdhdGVIYXNoUmVmLT57b3Blbk9yaWdpbmFsRmlsZX0oJGZpbGUsICRnaXRDb21taXQs
ICRnaXRJbmRleCwgJG1lcmdlQmFzZSk7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkb3JpZ2lu
YWxGaWxlSGFuZGxlOwotICAgICAgICAgICAgbXkgQGJlZm9yZUNoYW5nZUZ1bmN0aW9uUmFuZ2Vz
ID0gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzKCRvcmlnaW5hbEZpbGVIYW5kbGUsICRmaWxlKTsK
LSAgICAgICAgICAgIGNsb3NlKCRvcmlnaW5hbEZpbGVIYW5kbGUpOwotCi0gICAgICAgICAgICBt
eSAlZXhpc3RzQWZ0ZXJDaGFuZ2UgPSBtYXAgeyAkXy0+WzJdID0+IDEgfSBAYWZ0ZXJDaGFuZ2VG
dW5jdGlvblJhbmdlczsKLQotICAgICAgICAgICAgbXkgQGZ1bmN0aW9uczsKLSAgICAgICAgICAg
IG15ICVzYXdGdW5jdGlvbnM7Ci0gICAgICAgICAgICBmb3IgbXkgJGZ1bmN0aW9uUmFuZ2UgKEBi
ZWZvcmVDaGFuZ2VGdW5jdGlvblJhbmdlcykgewotICAgICAgICAgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSAkZnVuY3Rpb25SYW5nZS0+WzJdOwotICAgICAgICAgICAgICAgIGlmICghJGV4aXN0
c0FmdGVyQ2hhbmdleyRmdW5jdGlvbk5hbWV9ICYmICEkc2F3RnVuY3Rpb25zeyRmdW5jdGlvbk5h
bWV9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2ggQGZ1bmN0aW9ucywgJGZ1bmN0aW9uTmFt
ZTsKLSAgICAgICAgICAgICAgICAgICAgJHNhd0Z1bmN0aW9uc3skZnVuY3Rpb25OYW1lfSA9IDE7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIEZvcm1h
dCB0aGUgbGlzdCBvZiBkZWxldGVkIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgIGlmIChAZnVuY3Rp
b25zKSB7Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gPSAiIiBpZiAh
ZGVmaW5lZCAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfTsKLSAgICAgICAgICAgICAgICAkZnVuY3Rp
b25MaXN0cy0+eyRmaWxlfSAuPSAiXG4gICAgICAgICgiIC4gam9pbigiKTogRGVsZXRlZC5cbiAg
ICAgICAgKCIsIEBmdW5jdGlvbnMpIC4gIik6IERlbGV0ZWQuIjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLX0KLQotc3ViIGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucygkJCQpCi17
Ci0gICAgbXkgKCRmaWxlLCAkY2hhbmdlZExpbmVSYW5nZXMsICRmdW5jdGlvblJhbmdlcykgPSBA
XzsKLQotICAgIG15ICVzYXdGdW5jdGlvbjsKLQotICAgICMgRmluZCBhbGwgdGhlIG1vZGlmaWVk
IGZ1bmN0aW9ucy4KLSAgICBteSBAZnVuY3Rpb25zOwotICAgIG15IEBjaGFuZ2VfcmFuZ2VzID0g
QHskY2hhbmdlZExpbmVSYW5nZXN9OwotICAgIG15IEBjaGFuZ2VfcmFuZ2UgPSAoMCwgMCk7Ci0g
ICAgRlVOQ1RJT046IGZvcmVhY2ggbXkgJGZ1bmN0aW9uX3JhbmdlX3JlZiAoQHskZnVuY3Rpb25S
YW5nZXN9KSB7Ci0gICAgICAgIG15IEBmdW5jdGlvbl9yYW5nZSA9IEB7JGZ1bmN0aW9uX3Jhbmdl
X3JlZn07Ci0KLSAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2suIElmIHRoZSBmdW5jdGlv
biBuYW1lIGlzIGVtcHR5LCBza2lwIGl0LgotICAgICAgICAjIFRoZSBjcHAsIHB5dGhvbiwgamF2
YXNjcmlwdCwgcGVybCwgY3NzIGFuZCBqYXZhIHBhcnNlcnMKLSAgICAgICAgIyBhcmUgbm90IHBl
cmZlY3RseSBpbXBsZW1lbnRlZCBhbmQgc29tZXRpbWVzIGZ1bmN0aW9uIG5hbWVzIGNhbm5vdCBi
ZSByZXRyaWV2ZWQKLSAgICAgICAgIyBjb3JyZWN0bHkuIEFzIHlvdSBjYW4gc2VlIGluIGdldF9m
dW5jdGlvbl9saW5lX3Jhbmdlc19YWFhYKCksIHRob3NlIHBhcnNlcnMKLSAgICAgICAgIyBhcmUg
bm90IGludGVuZGVkIHRvIGltcGxlbWVudCByZWFsIHBhcnNlcnMgYnV0IGludGVuZGVkIHRvIGp1
c3QgcmV0cmlldmUgZnVuY3Rpb24gbmFtZXMKLSAgICAgICAgIyBmb3IgbW9zdCBwcmFjdGljYWwg
c3ludGF4ZXMuCi0gICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvbl9yYW5nZVsyXTsKLQotICAg
ICAgICAjIEFkdmFuY2UgdG8gc3VjY2Vzc2l2ZSBjaGFuZ2UgcmFuZ2VzLgotICAgICAgICBmb3Ig
KDs7IEBjaGFuZ2VfcmFuZ2UgPSBAe3NoaWZ0IEBjaGFuZ2VfcmFuZ2VzfSkgewotICAgICAgICAg
ICAgbGFzdCBGVU5DVElPTiB1bmxlc3MgQGNoYW5nZV9yYW5nZTsKLQotICAgICAgICAgICAgIyBJ
ZiBwYXN0IHRoaXMgZnVuY3Rpb24sIG1vdmUgb24gdG8gdGhlIG5leHQgb25lLgotICAgICAgICAg
ICAgbmV4dCBGVU5DVElPTiBpZiAkY2hhbmdlX3JhbmdlWzBdID4gJGZ1bmN0aW9uX3JhbmdlWzFd
OwotCi0gICAgICAgICAgICAjIElmIGFuIG92ZXJsYXAgd2l0aCB0aGlzIGZ1bmN0aW9uIHJhbmdl
LCByZWNvcmQgdGhlIGZ1bmN0aW9uIG5hbWUuCi0gICAgICAgICAgICBpZiAoJGNoYW5nZV9yYW5n
ZVsxXSA+PSAkZnVuY3Rpb25fcmFuZ2VbMF0KLSAgICAgICAgICAgICAgICBhbmQgJGNoYW5nZV9y
YW5nZVswXSA8PSAkZnVuY3Rpb25fcmFuZ2VbMV0pIHsKLSAgICAgICAgICAgICAgICBpZiAoISRz
YXdGdW5jdGlvbnskZnVuY3Rpb25fcmFuZ2VbMl19KSB7Ci0gICAgICAgICAgICAgICAgICAgICRz
YXdGdW5jdGlvbnskZnVuY3Rpb25fcmFuZ2VbMl19ID0gMTsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25fcmFuZ2VbMl07Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIG5leHQgRlVOQ1RJT047Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gQGZ1bmN0aW9uczsKLX0KLQogc3ViIGNoYW5nZUxvZ0RhdGUo
JCkKIHsKICAgICBteSAoJHRpbWVab25lKSA9IEBfOwpAQCAtNTAwLDMyICszNjEsNiBAQCBzdWIg
ZmV0Y2hCdWdYTUxEYXRhKCQkKQogICAgIHJldHVybiAkeG1sRGF0YTsKIH0KIAotc3ViIGZldGNo
QnVnRGVzY3JpcHRpb25Gcm9tQnVnWE1MRGF0YSgkJCQpCi17Ci0gICAgbXkgKCRidWdVUkwsICRi
dWdOdW1iZXIsICRidWdYTUxEYXRhKSA9IEBfOwotCi0gICAgaWYgKCRidWdYTUxEYXRhICF+IC88
c2hvcnRfZGVzYz4oLiopPFwvc2hvcnRfZGVzYz4vKSB7Ci0gICAgICAgIHByaW50IFNUREVSUiAi
ICBCdWcgJGJ1Z051bWJlciBoYXMgbm8gYnVnIGRlc2NyaXB0aW9uLiBNYXliZSB5b3Ugc2V0IHdy
b25nIGJ1ZyBJRD9cbiI7Ci0gICAgICAgIHByaW50IFNUREVSUiAiICBUaGUgYnVnIFVSTDogJGJ1
Z1VSTFxuIjsKLSAgICAgICAgZXhpdCAxOwotICAgIH0KLQotICAgIG15ICRidWdEZXNjcmlwdGlv
biA9IGRlY29kZUVudGl0aWVzKCQxKTsKLSAgICBwcmludCBTVERFUlIgIiAgRGVzY3JpcHRpb24g
ZnJvbSBidWcgJGJ1Z051bWJlcjpcbiAgICBcIiRidWdEZXNjcmlwdGlvblwiLlxuIjsKLSAgICBy
ZXR1cm4gJGJ1Z0Rlc2NyaXB0aW9uOwotfQotCi1zdWIgZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxE
YXRhKCQkKQotewotICAgIG15ICgkYnVnTnVtYmVyLCAkYnVnWE1MRGF0YSkgPSBAXzsKLQotICAg
IHJldHVybiAiIiBpZiAkYnVnWE1MRGF0YSAhfiBtfDx0aGV0ZXh0PlxzKigoJmx0Oyk/cmRhcjov
Lyhwcm9ibGVtLyk/XGQrKCZndDspPyl8OwotCi0gICAgbXkgJGJ1Z1JhZGFyVVJMID0gZGVjb2Rl
RW50aXRpZXMoJDEpOwotICAgIHByaW50IFNUREVSUiAiICBSYWRhciBVUkwgZnJvbSBidWcgJGJ1
Z051bWJlcjpcbiAgICBcIiRidWdSYWRhclVSTFwiLlxuIjsKLSAgICByZXR1cm4gJGJ1Z1JhZGFy
VVJMOwotfQotCiBzdWIgZmluZENoYW5nZUxvZ3MoJCQpCiB7CiAgICAgbXkgKCRmdW5jdGlvbkxp
c3RzLCAkcmVxdWlyZUNoYW5nZUxvZ1RvRXhpc3QpID0gQF87CkBAIC03NjEsMzUgKzU5Niw2IEBA
IHN1YiBvcGVuQ2hhbmdlTG9ncygkKQogICAgIH0KIH0KIAotc3ViIGdldF9mdW5jdGlvbl9saW5l
X3JhbmdlcygkJCkKLXsKLSAgICBteSAoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSA9IEBfOwot
Ci0gICAgIyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2UgbGFuZ3VhZ2UgYmFzZWQgb24gdGhl
IGZpbGUgZXh0ZW5zaW9uLgotCi0gICAgcmV0dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19m
b3JfY3BwKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC4oY3xj
cHB8bXxtbXxoKSQvOwotICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2ph
dmEoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLmphdmEkLzsK
LSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0KCRmaWxl
X2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC5qcyQvOwotICAgIHJldHVy
biBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcygkZmlsZV9oYW5kbGUsICRmaWxlX25h
bWUpIGlmICRmaWxlX25hbWUgPX4gL1wuY3NzJC87Ci0gICAgcmV0dXJuIGdldF9mdW5jdGlvbl9s
aW5lX3Jhbmdlc19mb3JfcGVybCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25h
bWUgPX4gL1wucFtsbV0kLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zv
cl9weXRob24oJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLnB5
JC8gb3IgJGZpbGVfbmFtZSA9fiAvbWFzdGVyXC5jZmckLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRm
aWxlX25hbWUgPX4gL1wuc3dpZnQkLzsKLQotICAgICMgVHJ5IHRvIGRldGVybWluZSB0aGUgc291
cmNlIGxhbmd1YWdlIGJhc2VkIG9uIHRoZSBzY3JpcHQgaW50ZXJwcmV0ZXIuCi0KLSAgICBteSAk
Zmlyc3RfbGluZSA9IDwkZmlsZV9oYW5kbGU+OwotICAgIHNlZWsoJGZpbGVfaGFuZGxlLCAwLCAw
KTsKLQotICAgIHJldHVybiAoKSB1bmxlc3MgJGZpcnN0X2xpbmUgPX4gbXxeIyEoPzovdXNyL2Jp
bi9lbnZccyspPyhcUyspfDsKLSAgICBteSAkaW50ZXJwcmV0ZXIgPSAkMTsKLQotICAgIHJldHVy
biBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3BlcmwoJGZpbGVfaGFuZGxlLCAkZmlsZV9u
YW1lKSBpZiAkaW50ZXJwcmV0ZXIgPX4gL3BlcmwkLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9u
X2xpbmVfcmFuZ2VzX2Zvcl9weXRob24oJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkaW50
ZXJwcmV0ZXIgPX4gL3B5dGhvbiQvOwotCi0gICAgcmV0dXJuICgpOwotfQotCi0KIHN1YiBtZXRo
b2RfZGVjbF90b19zZWxlY3RvcigkKQogewogICAgIChteSAkbWV0aG9kX2RlY2wpID0gQF87CkBA
IC04MTcsMTIyMiArNjIzLDYgQEAgc3ViIG1ldGhvZF9kZWNsX3RvX3NlbGVjdG9yKCQpCiAgICAg
cmV0dXJuICRfOwogfQogCi0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSBy
YW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDIGZ1bmN0aW9ucy4KLSMgQSBmdW5j
dGlvbiBuYW1lIGlzIHRoZSBsYXN0IHdvcmQgYmVmb3JlIGFuIG9wZW4gcGFyZW50aGVzaXMgYmVm
b3JlIHRoZSBvdXRlcgotIyBsZXZlbCBvcGVuIGJyYWNlLiBBIGZ1bmN0aW9uIHN0YXJ0cyBhdCB0
aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRoZSBsYXN0IGNsb3NlCi0jIGJyYWNlIG9yIHNlbWlj
b2xvbiBiZWZvcmUgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhlIGNsb3NlIGJyYWNl
LgotIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3Ig
YWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJp
cGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0
X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJCQpCi17Ci0gICAgbXkgKCRmaWxlX2hhbmRs
ZSwgJGZpbGVfbmFtZSkgPSBAXzsKLQotICAgIG15IEByYW5nZXM7Ci0KLSAgICBteSAkaW5fY29t
bWVudCA9IDA7Ci0gICAgbXkgJGluX21hY3JvID0gMDsKLSAgICBteSAkaW5fbWV0aG9kX2RlY2xh
cmF0aW9uID0gMDsKLSAgICBteSAkaW5fcGFyZW50aGVzZXMgPSAwOwotICAgIG15ICRxdW90YXRp
b25fbWFyazsKLSAgICBteSAkaW5fYnJhY2VzID0gMDsKLSAgICBteSAkaW5fdG9wbGV2ZWxfYXJy
YXlfYnJhY2UgPSAwOwotICAgIG15ICRicmFjZV9zdGFydCA9IDA7Ci0gICAgbXkgJGJyYWNlX2Vu
ZCA9IDA7Ci0gICAgbXkgJG5hbWVzcGFjZV9zdGFydCA9IC0xOwotICAgIG15ICRza2lwX3RpbF9i
cmFjZV9vcl9zZW1pY29sb24gPSAwOwotICAgIG15ICRlcXVhbF9vYnNlcnZlZCA9IDA7Ci0KLSAg
ICBteSAkd29yZCA9ICIiOwotICAgIG15ICRpbnRlcmZhY2VfbmFtZSA9ICIiOwotCi0gICAgbXkg
JHBvdGVudGlhbF9tZXRob2RfY2hhciA9ICIiOwotICAgIG15ICRwb3RlbnRpYWxfbWV0aG9kX3Nw
ZWMgPSAiIjsKLQotICAgIG15ICRwb3RlbnRpYWxfc3RhcnQgPSAwOwotICAgIG15ICRwb3RlbnRp
YWxfbmFtZSA9ICIiOwotCi0gICAgbXkgJHN0YXJ0ID0gMDsKLSAgICBteSAkbmFtZSA9ICIiOwot
Ci0gICAgbXkgJG5leHRfd29yZF9jb3VsZF9iZV9uYW1lc3BhY2UgPSAwOwotICAgIG15ICRwb3Rl
bnRpYWxfbmFtZXNwYWNlID0gIiI7Ci0gICAgbXkgQG5hbWVzcGFjZXM7Ci0gICAgbXkgQGFsbF9u
YW1lc3BhY2VzOwotCi0gICAgd2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7Ci0gICAgICAgICMgSGFu
ZGxlIGNvbnRpbnVlZCBxdW90ZWQgc3RyaW5nLgotICAgICAgICBpZiAoJHF1b3RhdGlvbl9tYXJr
KSB7Ci0gICAgICAgICAgICBpZiAoIXMtKFteXFxdfFxcLikqJHF1b3RhdGlvbl9tYXJrLS0pIHsK
LSAgICAgICAgICAgICAgICBpZiAoIW0tXFwkLSkgewotICAgICAgICAgICAgICAgICAgICB3YXJu
ICJtaXNtYXRjaGVkIHF1b3RlcyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7Ci0gICAgICAg
ICAgICAgICAgICAgIHVuZGVmICRxdW90YXRpb25fbWFyazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVuZGVmICRx
dW90YXRpb25fbWFyazsKLSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBt
dWx0aS1saW5lIGNvbW1lbnQuCi0gICAgICAgIGlmICgkaW5fY29tbWVudCkgewotICAgICAgICAg
ICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOwotICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAwOwot
ICAgICAgICB9Ci0KLSAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG1hY3JvLgotICAgICAgICBp
ZiAoJGluX21hY3JvKSB7Ci0gICAgICAgICAgICAkaW5fbWFjcm8gPSAwIHVubGVzcyAvXFwkLzsK
LSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAjIEhhbmRsZSBzdGFydCBv
ZiBtYWNybyAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUpLgotICAgICAgICBpZiAoL15c
cypcIy8pIHsKLSAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYgL14oW15cXF18XFwuKSpcXCQv
OwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbW1l
bnRzIGFuZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgd2hpbGUgKG0tKC9cKnwvL3xcJ3xcIiktKSB7
ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5Ci0gICAgICAgICAgICBteSAk
bWF0Y2ggPSAkMTsKLSAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEgIi8qIikgewotICAgICAgICAg
ICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgewotICAgICAgICAgICAgICAgICAgICBzLS9cKi4q
LS07Ci0gICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0gMTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikgewotICAgICAgICAgICAg
ICAgIHMtLy8uKi0tOwotICAgICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKLSAgICAgICAgICAg
ICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0tKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghcy0kbWF0Y2guKlxcJC0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3
YXJuICJtaXNtYXRjaGVkIHF1b3RlcyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzLSRtYXRjaC4qLS07Ci0gICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkcXVvdGF0aW9uX21hcmsgPSAkbWF0Y2g7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotCi0gICAgICAgICMgY29udGludWVkIG1ldGhvZCBkZWNsYXJhdGlvbgot
ICAgICAgICBpZiAoJGluX21ldGhvZF9kZWNsYXJhdGlvbikgewotICAgICAgICAgICAgICBteSAk
b3JpZ2luYWwgPSAkXzsKLSAgICAgICAgICAgICAgbXkgJG1ldGhvZF9jb250ID0gJF87Ci0KLSAg
ICAgICAgICAgICAgY2hvbXAgJG1ldGhvZF9jb250OwotICAgICAgICAgICAgICAkbWV0aG9kX2Nv
bnQgPX4gcy9bO1x7XS4qLy87Ci0gICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX3NwZWMg
PSAiJHtwb3RlbnRpYWxfbWV0aG9kX3NwZWN9ICR7bWV0aG9kX2NvbnR9IjsKLQotICAgICAgICAg
ICAgICAkXyA9ICRvcmlnaW5hbDsKLSAgICAgICAgICAgICAgaWYgKC87LykgewotICAgICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX21ldGhvZF9zcGVjID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhv
ZF9jaGFyID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0g
MDsKLSAgICAgICAgICAgICAgICAgIHMvXlteO1x7XSovLzsKLSAgICAgICAgICAgICAgfSBlbHNp
ZiAoL3svKSB7Ci0gICAgICAgICAgICAgICAgICBteSAkc2VsZWN0b3IgPSBtZXRob2RfZGVjbF90
b19zZWxlY3RvciAoJHBvdGVudGlhbF9tZXRob2Rfc3BlYyk7Ci0gICAgICAgICAgICAgICAgICAk
cG90ZW50aWFsX25hbWUgPSAiJHtwb3RlbnRpYWxfbWV0aG9kX2NoYXJ9XFske2ludGVyZmFjZV9u
YW1lfSAke3NlbGVjdG9yfVxdIjsKLQotICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRo
b2Rfc3BlYyA9ICIiOwotICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2RfY2hhciA9
ICIiOwotICAgICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7Ci0KLSAg
ICAgICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAgICAgICAgcy9eW147
e10qLy87Ci0gICAgICAgICAgICAgIH0gZWxzaWYgKC9cQGVuZC8pIHsKLSAgICAgICAgICAgICAg
ICAgICRpbl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOwotICAgICAgICAgICAgICAgICAgJGludGVy
ZmFjZV9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKLSAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0KLSAgICAgICAgIyBzdGFydCBvZiBtZXRob2QgZGVjbGFyYXRpb24K
LSAgICAgICAgaWYgKChteSAkbWV0aG9kX2NoYXIsIG15ICRtZXRob2Rfc3BlYykgPSBtJl4oWy0r
XSkoW14wLTk7XVteO10qKTs/JCYpIHsKLSAgICAgICAgICAgIG15ICRvcmlnaW5hbCA9ICRfOwot
Ci0gICAgICAgICAgICBpZiAoJGludGVyZmFjZV9uYW1lKSB7Ci0gICAgICAgICAgICAgICAgY2hv
bXAgJG1ldGhvZF9zcGVjOwotICAgICAgICAgICAgICAgICRtZXRob2Rfc3BlYyA9fiBzL1x7Liov
LzsKLQotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAkbWV0aG9kX2No
YXI7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICRtZXRob2Rfc3Bl
YzsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47Ci0gICAgICAgICAgICAg
ICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDE7Ci0gICAgICAgICAgICB9IGVsc2UgeyAKLSAg
ICAgICAgICAgICAgICB3YXJuICJkZWNsYXJpbmcgYSBtZXRob2QgYnV0IGRvbid0IGhhdmUgaW50
ZXJmYWNlIG9uIGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAgaWYgKC9cey8pIHsKLSAgICAgICAg
ICAgICAgbXkgJHNlbGVjdG9yID0gbWV0aG9kX2RlY2xfdG9fc2VsZWN0b3IgKCRwb3RlbnRpYWxf
bWV0aG9kX3NwZWMpOwotICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAiJHtwb3RlbnRp
YWxfbWV0aG9kX2NoYXJ9XFske2ludGVyZmFjZV9uYW1lfSAke3NlbGVjdG9yfVxdIjsKLQotICAg
ICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9zcGVjID0gIiI7Ci0gICAgICAgICAgICAgICRw
b3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAiIjsKLSAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAg
ICBzL15bXntdKi8vOwotICAgICAgICAgICAgfSBlbHNpZiAoL1xAZW5kLykgewotICAgICAgICAg
ICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKLSAgICAgICAgICAgICAgJGludGVyZmFj
ZV9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0KLSAgICAgICAgIyBGaW5kIGZ1bmN0aW9uLCBpbnRlcmZhY2UgYW5kIG1ldGhvZCBuYW1lcy4K
LSAgICAgICAgd2hpbGUgKG0mKCg/OltbOndvcmQ6XV0rOjopKm9wZXJhdG9yKD86WyBcdF0qXChc
KXxbXigpXSopfFtbOndvcmQ6XTw+On5dK3xbKCl7fTo7PV0pfFxAKD86aW1wbGVtZW50YXRpb258
aW50ZXJmYWNlfHByb3RvY29sKVxzKyhcdyspW157XSomZykgewotICAgICAgICAgICAgIyBTa2lw
IGFuIGFycmF5IGRlZmluaXRpb24gYXQgdGhlIHRvcCBsZXZlbC4KLSAgICAgICAgICAgICMgZS5n
LiBzdGF0aWMgaW50IGFycltdID0geyAxLCAyLCAzIH07Ci0gICAgICAgICAgICBpZiAoJDEpIHsK
LSAgICAgICAgICAgICAgICBpZiAoJDEgZXEgIj0iIGFuZCAhJGluX3BhcmVudGhlc2VzIGFuZCAh
JGluX2JyYWNlcykgewotICAgICAgICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQgPSAxOwot
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCQxIGVxICJ7IiBhbmQgJGVxdWFsX29ic2VydmVkKSB7
Ci0gICAgICAgICAgICAgICAgICAgICMgVGhpcyAneycgaXMgdGhlIGJlZ2lubmluZyBvZiBhbiBh
cnJheSBkZWZpbml0aW9uLCBub3QgdGhlIGJlZ2lubmluZyBvZiBhIG1ldGhvZC4KLSAgICAgICAg
ICAgICAgICAgICAgJGluX3RvcGxldmVsX2FycmF5X2JyYWNlID0gMTsKLSAgICAgICAgICAgICAg
ICAgICAgJGluX2JyYWNlcysrOwotICAgICAgICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQg
PSAwOwotICAgICAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgICAgIH0gZWxzaWYg
KCQxICF+IC9bIFx0XS8pIHsKLSAgICAgICAgICAgICAgICAgICAgJGVxdWFsX29ic2VydmVkID0g
MDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgaW50
ZXJmYWNlIG5hbWUKLSAgICAgICAgICAgIGlmICgkMikgewotICAgICAgICAgICAgICAgICRpbnRl
cmZhY2VfbmFtZSA9ICQyOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICMgT3BlbiBwYXJlbnRoZXNpcy4KLSAgICAgICAgICAgIGlmICgkMSBlcSAi
KCIpIHsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAkd29yZCB1bmxlc3MgJGlu
X3BhcmVudGhlc2VzIHx8ICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gfHwgZ3JlcCB7ICR3
b3JkIGVxICRfIH0gKCJDRl9FTlVNIiwgIkNGX09QVElPTlMiLCAiTlNfRU5VTSIsICJOU19PUFRJ
T05TIik7Ci0gICAgICAgICAgICAgICAgJGluX3BhcmVudGhlc2VzKys7Ci0gICAgICAgICAgICAg
ICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBDbG9zZSBwYXJlbnRoZXNp
cy4KLSAgICAgICAgICAgIGlmICgkMSBlcSAiKSIpIHsKLSAgICAgICAgICAgICAgICAkaW5fcGFy
ZW50aGVzZXMtLTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAoJDEgZXEgImNvbnN0IiBhbmQgISRpbl9wYXJlbnRoZXNlcykgewotICAgICAg
ICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSAuPSAiIGNvbnN0IjsKLSAgICAgICAgICAgICAgICBu
ZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoJDEgZXEgInZvbGF0aWxlIiBh
bmQgISRpbl9wYXJlbnRoZXNlcykgewotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSAu
PSAiIHZvbGF0aWxlIjsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAjIEMrKyBhdXRvIGZ1bmN0aW9uKCkgLT4gdHlwZQotICAgICAgICAgICAgaWYg
KCQxIGVxICI+IikgewotICAgICAgICAgICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29s
b24gPSAxIHVubGVzcyAoJGluX3BhcmVudGhlc2VzIHx8ICRpbl9icmFjZXMpOwotICAgICAgICAg
ICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgQysrIGNvbnN0cnVj
dG9yIGluaXRpYWxpemVycwotICAgICAgICAgICAgaWYgKCQxIGVxICI6IikgewotICAgICAgICAg
ICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAxIHVubGVzcyAoJGluX3BhcmVu
dGhlc2VzIHx8ICRpbl9icmFjZXMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIE9w
ZW4gYnJhY2UuCi0gICAgICAgICAgICBpZiAoJDEgZXEgInsiKSB7Ci0gICAgICAgICAgICAgICAg
JHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9IDA7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
ISRpbl9icmFjZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lc3BhY2Vfc3RhcnQg
Pj0gMCBhbmQgJG5hbWVzcGFjZV9zdGFydCA8ICRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyAkbmFtZXNwYWNlX3N0YXJ0IC4gIiIsICRw
b3RlbnRpYWxfc3RhcnQgLSAxLCAkbmFtZSBdOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRwb3RlbnRpYWxfbmFtZXNwYWNlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoIEBuYW1lc3BhY2VzLCAkcG90ZW50aWFsX25hbWVzcGFjZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQGFsbF9uYW1lc3BhY2VzLCAkcG90ZW50aWFsX25h
bWVzcGFjZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZXNwYWNlID0g
IiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgIyBQcm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFt
ZSBhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBvZiB0aGUgb3V0ZXIgbGV2ZWwg
c2V0IG9mIGJyYWNlcyAoZnVuY3Rpb24gYm9keT8pLgotICAgICAgICAgICAgICAgICAgICBpZiAo
JHBvdGVudGlhbF9zdGFydCkgewotICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJHBv
dGVudGlhbF9zdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJHBvdGVudGlh
bF9uYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzICYmICRuYW1l
ICYmIChsZW5ndGgoJG5hbWUpIDwgMiB8fCBzdWJzdHIoJG5hbWUsMSwxKSBuZSAiWyIpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBqb2luICgnOjonLCBAbmFtZXNwYWNl
cywgJG5hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0KLSAgICAgICAgICAgICAgICAkYnJhY2Vfc3RhcnQgPSAkLiBpZiAoISRp
bl9icmFjZXMpOwotICAgICAgICAgICAgICAgICRpbl9icmFjZXMrKzsKLSAgICAgICAgICAgICAg
ICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIENsb3NlIGJyYWNlLgotICAg
ICAgICAgICAgaWYgKCQxIGVxICJ9IikgewotICAgICAgICAgICAgICAgIGlmICghJGluX2JyYWNl
cyAmJiBAbmFtZXNwYWNlcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoJG5hbWVzcGFjZV9z
dGFydCA+PSAwIGFuZCAkbmFtZXNwYWNlX3N0YXJ0IDwgJC4pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2ggQHJhbmdlcywgWyAkbmFtZXNwYWNlX3N0YXJ0IC4gIiIsICQuIC0gMSwgJG5h
bWUgXTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHBvcCBA
bmFtZXNwYWNlczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICIiOwotICAgICAg
ICAgICAgICAgICAgICAgICAgJG5hbWVzcGFjZV9zdGFydCA9IC0xOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgJGluX2JyYWNlcy0tOwotICAgICAgICAgICAgICAgICRicmFjZV9lbmQg
PSAkLiBpZiAoISRpbl9icmFjZXMpOwotCi0gICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0
ZXIgbGV2ZWwgc2V0IG9mIGJyYWNlcy4KLSAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUg
YSBmdW5jdGlvbiBib2R5LgotICAgICAgICAgICAgICAgIGlmICghJGluX2JyYWNlcyBhbmQgJG5h
bWUpIHsKLSAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBlbmQgb2YgYW4gYXJyYXkg
ZGVmaW5pdGlvbiBhdCB0aGUgdG9wIGxldmVsLCBub3QgdGhlIGVuZCBvZiBhIG1ldGhvZC4KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRpbl90b3BsZXZlbF9hcnJheV9icmFjZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgJGluX3RvcGxldmVsX2FycmF5X2JyYWNlID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJHN0YXJ0LCAkLiwgJG5hbWUgXTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
bmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3Bh
Y2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkbmFtZSA9ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgJG5h
bWVzcGFjZV9zdGFydCA9IC0xOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAg
ICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgIyBTZW1pY29sb24uCi0gICAgICAgICAgICBpZiAoJDEg
ZXEgIjsiKSB7Ci0gICAgICAgICAgICAgICAgJHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9
IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAg
ICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgIyBJZ25vcmUgImNvbnN0IiBtZXRob2QgcXVhbGlmaWVyLgotICAgICAgICAgICAg
aWYgKCQxIGVxICJjb25zdCIpIHsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAoJDEgZXEgIm5hbWVzcGFjZSIgfHwgJDEgZXEgImNsYXNzIiB8
fCAkMSBlcSAic3RydWN0IikgewotICAgICAgICAgICAgICAgICRuZXh0X3dvcmRfY291bGRfYmVf
bmFtZXNwYWNlID0gMTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAjIFdvcmQuCi0gICAgICAgICAgICAkd29yZCA9ICQxOwotICAgICAgICAgICAg
aWYgKCEkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCRuZXh0X3dvcmRfY291bGRfYmVfbmFtZXNwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZXNwYWNlID0gJHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRuZXh0X3dv
cmRfY291bGRfYmVfbmFtZXNwYWNlID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2lmICgkcG90
ZW50aWFsX25hbWVzcGFjZSkgewotICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVz
cGFjZSA9ICIiOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghJGlu
X3BhcmVudGhlc2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAw
OwotICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAiIjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCEkcG90ZW50aWFsX3N0YXJ0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAg
JHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgd2FybiAibWlzc2luZyBjbG9zZSBicmFjZXMgaW4gJGZp
bGVfbmFtZSAocHJvYmFibGUgc3RhcnQgYXQgJGJyYWNlX3N0YXJ0KVxuIiBpZiAoJGluX2JyYWNl
cyA+IDApOwotICAgIHdhcm4gInRvbyBtYW55IGNsb3NlIGJyYWNlcyBpbiAkZmlsZV9uYW1lIChw
cm9iYWJsZSBzdGFydCBhdCAkYnJhY2VfZW5kKVxuIiBpZiAoJGluX2JyYWNlcyA8IDApOwotCi0g
ICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRoZXNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9w
YXJlbnRoZXNlczsKLQotICAgIHJldHVybiBkZWxldGVfbmFtZXNwYWNlc19mcm9tX3Jhbmdlc19m
b3JfY3BwKEByYW5nZXMsIEBhbGxfbmFtZXNwYWNlcyk7Ci19Ci0KLQotIyBUYWtlIGluIHJlZmVy
ZW5jZXMgdG8gYW4gYXJyYXkgb2YgbGluZSByYW5nZXMgZm9yIEMgZnVuY3Rpb25zIGluIGEgZ2l2
ZW4gZmlsZSAKLSMgYW5kIGFuIGFycmF5IG9mIG5hbWVzcGFjZXMgZGVjbGFyZWQgaW4gdGhhdCBm
aWxlIGFuZCByZXR1cm4gYW4gdXBkYXRlZAotIyBsaXN0IG9mIGxpbmUgcmFuZ2VzIHdpdGggdGhl
IG5hbWVzcGFjZXMgcmVtb3ZlZC4KLQotc3ViIGRlbGV0ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2Vz
X2Zvcl9jcHAoXEBcQCkKLXsKLSAgICBteSAoJHJhbmdlcywgJG5hbWVzcGFjZXMpID0gQF87Ci0g
ICAgcmV0dXJuIGdyZXAgeyFpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJG5hbWVzcGFjZXMsICQk
X1syXSl9IEAkcmFuZ2VzOwotfQotCi0KLXN1YiBpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJCQp
Ci17Ci0gICAgbXkgKCRuYW1lc3BhY2VzLCAkZnVuY3Rpb25fbmFtZSkgPSBAXzsKLSAgICByZXR1
cm4gZ3JlcCB7JF8gZXEgJGZ1bmN0aW9uX25hbWV9IEAkbmFtZXNwYWNlczsKLX0KLQotCi0jIFJl
YWQgYSBmaWxlIGFuZCBnZXQgYWxsIHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQg
bG9vayBsaWtlIEphdmEKLSMgY2xhc3NlcywgaW50ZXJmYWNlcyBhbmQgbWV0aG9kcy4KLSMKLSMg
QSBjbGFzcyBvciBpbnRlcmZhY2UgbmFtZSBpcyB0aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZv
bGxvd3MKLSMgYGNsYXNzJyBvciBgaW50ZXJmYWNlJyB3aGVuIGZvbGxvd2VkIGJ5IGFuIG9wZW4g
Y3VybHkgYnJhY2UgYW5kIG5vdAotIyBhIHNlbWljb2xvbi4gSXQgY2FuIGFwcGVhciBhdCB0aGUg
dG9wIGxldmVsLCBvciBpbnNpZGUgYW5vdGhlciBjbGFzcwotIyBvciBpbnRlcmZhY2UgYmxvY2ss
IGJ1dCBub3QgaW5zaWRlIGEgZnVuY3Rpb24gYmxvY2sKLSMKLSMgQSBjbGFzcyBvciBpbnRlcmZh
Y2Ugc3RhcnRzIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGNsb3NlCi0j
IGJyYWNlIG9yIGFmdGVyIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBlbmRzIGF0IHRoZSBjbG9zZSBi
cmFjZS4KLSMKLSMgQSBmdW5jdGlvbiBuYW1lIGlzIHRoZSBsYXN0IHdvcmQgYmVmb3JlIGFuIG9w
ZW4gcGFyZW50aGVzaXMgYmVmb3JlCi0jIGFuIG9wZW4gYnJhY2UgcmF0aGVyIHRoYW4gYSBzZW1p
Y29sb24uIEl0IGNhbiBhcHBlYXIgYXQgdG9wIGxldmVsIG9yCi0jIGluc2lkZSBhIGNsYXNzIG9y
IGludGVyZmFjZSBibG9jaywgYnV0IG5vdCBpbnNpZGUgYSBmdW5jdGlvbiBibG9jay4KLSMKLSMg
QSBmdW5jdGlvbiBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgZmlyc3Qg
Y2xvc2UKLSMgYnJhY2Ugb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhl
IGNsb3NlIGJyYWNlLgotIwotIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0
IHdpbGwgd29yayBmb3IgYWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBp
cyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFt
ZSBdLgotCi1zdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhKCQkKQotewotICAg
IG15ICgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87Ci0KLSAgICBteSBAY3VycmVudF9z
Y29wZXM7Ci0KLSAgICBteSBAcmFuZ2VzOwotCi0gICAgbXkgJGluX2NvbW1lbnQgPSAwOwotICAg
IG15ICRpbl9tYWNybyA9IDA7Ci0gICAgbXkgJGluX3BhcmVudGhlc2VzID0gMDsKLSAgICBteSAk
aW5fYnJhY2VzID0gMDsKLSAgICBteSAkaW5fbm9uX2Jsb2NrX2JyYWNlcyA9IDA7Ci0gICAgbXkg
JGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOwotICAgIG15ICRpbl9jbGFzc19kZWNs
YXJhdGlvbiA9IDA7Ci0KLSAgICBteSAkd29yZCA9ICIiOwotCi0gICAgbXkgJHBvdGVudGlhbF9z
dGFydCA9IDA7Ci0gICAgbXkgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgbXkgJHBvdGVudGlh
bF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7Ci0KLSAgICBteSAkc3RhcnQgPSAwOwot
ICAgIG15ICRuYW1lID0gIiI7Ci0gICAgbXkgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19vcl9pbnRl
cmZhY2UgPSAwOwotCi0gICAgd2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7Ci0gICAgICAgICMgSGFu
ZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQuCi0gICAgICAgIGlmICgkaW5fY29tbWVu
dCkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOwotICAgICAgICAgICAgJGlu
X2NvbW1lbnQgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG1h
Y3JvLgotICAgICAgICBpZiAoJGluX21hY3JvKSB7Ci0gICAgICAgICAgICAkaW5fbWFjcm8gPSAw
IHVubGVzcyAvXFwkLzsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAj
IEhhbmRsZSBzdGFydCBvZiBtYWNybyAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUpLgot
ICAgICAgICBpZiAoL15ccypcIy8pIHsKLSAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYgL14o
W15cXF18XFwuKSpcXCQvOwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAg
ICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgd2hpbGUgKG0tKC9c
KnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5Ci0g
ICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKLSAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEgIi8q
IikgewotICAgICAgICAgICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgewotICAgICAgICAgICAg
ICAgICAgICBzLS9cKi4qLS07Ci0gICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0gMTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikg
ewotICAgICAgICAgICAgICAgIHMtLy8uKi0tOwotICAgICAgICAgICAgfSBlbHNlIHsgIyAnIG9y
ICIKLSAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0tKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4g
aW4gJGZpbGVfbmFtZVxuIjsKLSAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0tOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICMgRmlu
ZCBmdW5jdGlvbiBuYW1lcy4KLSAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fTtdKS1nKSB7Ci0g
ICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCi0gICAgICAgICAgICBpZiAoJDEgZXEgIigi
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAwOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAkaW5fcGFyZW50aGVzZXMrKzsKLSAgICAgICAgICAgICAgICBu
ZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lzLgot
ICAgICAgICAgICAgaWYgKCQxIGVxICIpIikgewotICAgICAgICAgICAgICAgICRpbl9wYXJlbnRo
ZXNlcy0tOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICMgT3BlbiBicmFjZS4KLSAgICAgICAgICAgIGlmICgkMSBlcSAieyIpIHsKLSAgICAgICAg
ICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAwOwotCi0gICAgICAgICAgICAgICAgIyBQ
cm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFtZSBhdCB0aGUKLSAgICAg
ICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBvdXRlciBsZXZlbCBzZXQgb2YgYnJhY2VzIChmdW5j
dGlvbi9jbGFzcy9pbnRlcmZhY2UgYm9keT8pLgotICAgICAgICAgICAgICAgIGlmICghJGluX25v
bl9ibG9ja19icmFjZXMKLSAgICAgICAgICAgICAgICAgICAgYW5kICghJGluX2JyYWNlcyBvciAk
Y3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSkKLSAgICAgICAgICAgICAgICAgICAg
YW5kICRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyAkc3RhcnQsICgkLiAt
IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbiAoJy4n
LCBAY3VycmVudF9zY29wZXMpIF07Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotCi0gICAgICAg
ICAgICAgICAgICAgICRjdXJyZW50X25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gJHBvdGVu
dGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZTsKLQotICAgICAgICAgICAgICAgICAgICAk
c3RhcnQgPSAkcG90ZW50aWFsX3N0YXJ0OwotICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRw
b3RlbnRpYWxfbmFtZTsKLQotICAgICAgICAgICAgICAgICAgICBwdXNoIChAY3VycmVudF9zY29w
ZXMsICRuYW1lKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAkaW5fbm9uX2Jsb2NrX2JyYWNlcysrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOwotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxf
c3RhcnQgPSAwOwotCi0gICAgICAgICAgICAgICAgJGluX2JyYWNlcysrOwotICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgQ2xvc2UgYnJhY2UuCi0g
ICAgICAgICAgICBpZiAoJDEgZXEgIn0iKSB7Ci0gICAgICAgICAgICAgICAgJGluX2JyYWNlcy0t
OwotCi0gICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0ZXIgbGV2ZWwgc2V0IG9mIGJyYWNl
cy4KLSAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUgYSBmdW5jdGlvbiBib2R5LgotICAg
ICAgICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19icmFjZXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCRuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5nZXMs
IFsgJHN0YXJ0LCAkLiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
b2luICgnLicsIEBjdXJyZW50X3Njb3BlcykgXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
cG9wIChAY3VycmVudF9zY29wZXMpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGN1
cnJlbnRfc2NvcGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbmFt
ZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAxOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJHN0YXJ0ID0gJC4gKyAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0g
ICRjdXJyZW50X3Njb3Blc1skI2N1cnJlbnRfc2NvcGVzLTFdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9uYW1l
X2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHN0YXJ0ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICAiIjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICRpbl9ub25fYmxvY2tfYnJhY2Vz
LS0gaWYgJGluX25vbl9ibG9ja19icmFjZXM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlh
bF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgIyBTZW1pY29sb24uCi0gICAgICAgICAgICBpZiAoJDEgZXEgIjsiKSB7Ci0gICAg
ICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVu
dGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIpIHsKLSAgICAgICAgICAgICAgICAkaW5fY2xh
c3NfZGVjbGFyYXRpb24gPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCQxIGVx
ICJjbGFzcyIgb3IgKCEkaW5fY2xhc3NfZGVjbGFyYXRpb24gYW5kICQxIGVxICJpbnRlcmZhY2Ui
KSkgewotICAgICAgICAgICAgICAgICRjbGFzc19vcl9pbnRlcmZhY2VfanVzdF9zZWVuID0gMTsK
LSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIFdv
cmQuCi0gICAgICAgICAgICAkd29yZCA9ICQxOwotICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50
aGVzZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3Nl
ZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Ci0gICAg
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKLSAgICAgICAgICAgICAgICAg
ICAgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOwotICAgICAgICAgICAgICAgICAg
ICAkcG90ZW50aWFsX25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoISRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFs
X3N0YXJ0ID0gJC47Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAkY2xhc3Nfb3JfaW50ZXJmYWNlX2p1c3Rfc2VlbiA9IDA7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3YXJuICJtaXNtYXRjaGVkIGJyYWNlcyBpbiAkZmls
ZV9uYW1lXG4iIGlmICRpbl9icmFjZXM7Ci0gICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRoZXNl
cyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9wYXJlbnRoZXNlczsKLQotICAgIHJldHVybiBAcmFu
Z2VzOwotfQotCi0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMg
b2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZQotIyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyBvciBt
ZXRob2RzLgotIwotIyBBIGZ1bmN0aW9uIG5hbWUgaXMgdGhlIHdvcmQgdGhhdCBpbW1lZGlhdGVs
eSBmb2xsb3dzIGBmdW5jdGlvbicgd2hlbgotIyBmb2xsb3dlZCBieSBhbiBvcGVuIGN1cmx5IGJy
YWNlLiBJdCBjYW4gYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWwsCi0jIG9yIGluc2lkZSBvdGhlciBm
dW5jdGlvbnMuIEZvciBleGFtcGxlOgotIwotIyAgICBmdW5jdGlvbiBuYW1lKCkgeyAvLyAobmFt
ZSkKLSMgICAgICAgIGZ1bmN0aW9uIGlubmVyKCkgeyB9IC8vIChuYW1lLmlubmVyKQotIyAgICB9
Ci0jCi0jIEFuIGFub255bW91cyBmdW5jdGlvbiBuYW1lIGlzIHRoZSBpZGVudGlmaWVyIG9uIHRo
ZSBsZWZ0IGhhbmQgc2lkZSBvZgotIyBhbiBhc3NpZ25tZW50IHdpdGggdGhlIGVxdWFscyBvcGVy
YXRvciBvciBvYmplY3Qgbm90YXRpb24gdGhhdCBoYXMgYQotIyB2YWx1ZSBzdGFydGluZyB3aXRo
IGBmdW5jdGlvbicgZm9sbG93ZWQgYW4gb3BlbiBjdXJseSBicmFjZS4KLSMgRm9yIGV4YW1wbGU6
Ci0jCi0jICAgIG5hbWVzcGFjZSA9IHsKLSMgICAgICAgIG5hbWU6IGZ1bmN0aW9uKCkge30gLy8g
KG5hbWVzcGFjZS5uYW1lKQotIyAgICB9Ci0jICAgIG5hbWVzcGFjZS5Gb28gPSBmdW5jdGlvbigp
IHt9IC8vIChuYW1lc3BhY2UuRm9vKQotIwotIyBBIGdldHRlciBvciBzZXR0ZXIgbmFtZSBpcyB0
aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3MgYGdldCcgb3IKLSMgYHNldCcgd2hlbiBm
b2xsb3dlZCBieSBwYXJhbXMgYW5kIGFuIG9wZW4gY3VybHkgYnJhY2UuIEZvciBleGFtcGxlOgot
IwotIyAgICBuYW1lc3BhY2UgPSB7Ci0jICAgICAgZ2V0IGZvbygpIHt9IC8vIChuYW1lc3BhY2Uu
Z2V0IGZvbykKLSMgICAgfQotIwotIyBBIG1ldGhvZCBuYW1lIGlzIHRoZSB3b3JkIGltbWVkaWF0
ZWx5IGJlZm9yZSBwYXJlbnRoZXNpcywgd2l0aCBhbiBvcGVuCi0jIGN1cmx5IGJyYWNlIGltbWVk
aWF0ZWx5IGZvbGxvd2luZyBjbG9zaW5nIHBhcmVudGhlc2lzLiBGb3IgYSBjbGFzcyBleHByZXNz
aW9uCi0jIHdlIHRha2UgdGhlIGFzc2lnbm1lbnQgaWRlbnRpZmllciBpbnN0ZWFkIG9mIHRoZSBj
bGFzcyBuYW1lIGZvciBuYW1lc3BhY2luZy4KLSMKLSMgICAgbmFtZXNwYWNlLkZvbyA9IGNsYXNz
IERvZXNOb3RNYXR0ZXIgZXh0ZW5kcyBCYXIgewotIyAgICAgICAgY29uc3RydWN0b3IoKSB7fSAv
LyAobmFtZXNwYWNlLkZvbykKLSMgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7fSAvLyAo
bmFtZXNwYWNlLkZvby5zdGF0aWNNZXRob2QpCi0jICAgICAgICBpbnN0YW5jZU1ldGhvZCgpIHt9
IC8vIChuYW1lc3BhY2UuRm9vLnByb3RvdHlwZS5pbnN0YW5jZU1ldGhvZCkKLSMgICAgICAgIGdl
dCBnZXR0ZXIoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5wcm90b3R5cGUuZ2V0IGdldHRlcikKLSMg
ICAgfQotIyAgICBjbGFzcyBDbGFzc05hbWUgewotIyAgICAgICAgY29uc3RydWN0b3IoKSB7fSAv
LyAoQ2xhc3NOYW1lKQotIyAgICAgICAgbWV0aG9kKCkge30gLy8gKENsYXNzTmFtZS5wcm90b3R5
cGUubWV0aG9kKQotIyAgICB9Ci0jCi0jIE1ldGhvZHMgbWF5IGV4aXN0IGluIG9iamVjdCBsaXRl
cmFscywgb3V0c2lkZSBvZiBjbGFzc2VzLgotIwotIyAgIEZvby5wcm90b3R5cGUgPSB7Ci0jICAg
ICAgIG1ldGhvZCgpIHt9LCAvLyAoRm9vLnByb3RvdHlwZS5tZXRob2QpCi0jICAgICAgIG90aGVy
TWV0aG9kKCkge30gLy8gKEZvby5wcm90b3R5cGUub3RoZXJNZXRob2QpCi0jICAgfQotIwotIyBD
b21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3IgYWxsIGJ1
dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczog
WyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0KCQkKQotewotICAgIG15ICgkZmlsZUhhbmRs
ZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQGN1cnJlbnRTY29wZXM7Ci0gICAgbXkgQGN1
cnJlbnRJZGVudGlmaWVyczsKLSAgICBteSBAY3VycmVudFBhcnNpbmdNb2RlID0gKCJnbG9iYWwi
KTsKLSAgICBteSBAY3VycmVudEZ1bmN0aW9uTmFtZXM7Ci0gICAgbXkgQGN1cnJlbnRGdW5jdGlv
bkRlcHRoczsKLSAgICBteSBAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lczsKLQotICAgIG15IEBy
YW5nZXM7Ci0KLSAgICBteSAkaW5Db21tZW50ID0gMDsKLSAgICBteSAkaW5RdW90ZWRUZXh0ID0g
IiI7Ci0gICAgbXkgJGluRXh0ZW5kcyA9IDA7Ci0gICAgbXkgJGluTWV0aG9kID0gMDsKLSAgICBt
eSAkaW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnMgPSAwOwotICAgIG15ICRwYXJlbnRoZXNl
c0RlcHRoID0gMDsKLSAgICBteSAkZ2xvYmFsUGFyZW50aGVzZXNEZXB0aCA9IDA7Ci0gICAgbXkg
JGJyYWNlc0RlcHRoID0gMDsKLQotICAgIG15ICRjbGFzc0p1c3RTZWVuID0gMDsKLSAgICBteSAk
cGFyZW50aGVzaXNKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJGZ1bmN0aW9uSnVzdFNlZW4gPSAwOwot
ICAgIG15ICRnZXR0ZXJKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJHNldHRlckp1c3RTZWVuID0gMDsK
LSAgICBteSAkYXN5bmNKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJGFzc2lnbm1lbnRKdXN0U2VlbiA9
IDA7Ci0gICAgbXkgJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gPSAwOwotCi0gICAgbXkgJGN1cnJl
bnRUb2tlbiA9ICIiOwotICAgIG15ICRsYXN0VG9rZW4gPSAiIjsKLSAgICBteSAkcG9zc2libGVN
ZXRob2ROYW1lID0gIiI7Ci0gICAgbXkgJHdvcmQgPSAiIjsKLQotICAgIHdoaWxlICg8JGZpbGVI
YW5kbGU+KSB7Ci0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQu
Ci0gICAgICAgIGlmICgkaW5Db21tZW50KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyBzLS4q
XCovLS07Ci0gICAgICAgICAgICAkaW5Db21tZW50ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAg
ICMgSGFuZGxlIGNvbnRpbnVlZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgaWYgKCRpblF1b3RlZFRl
eHQgbmUgIiIpIHsKLSAgICAgICAgICAgIG5leHQgaWYgL1xcJC87Ci0gICAgICAgICAgICBzLShb
XlxcXXxcXC4pKj8kaW5RdW90ZWRUZXh0LS07Ci0gICAgICAgICAgICAkaW5RdW90ZWRUZXh0ID0g
IiI7Ci0gICAgICAgIH0KLQotICAgICAgICAjIEhhbmRsZSBjb21tZW50cyBhbmQgcXVvdGVkIHRl
eHQuCi0gICAgICAgIHdoaWxlIChtLSgvXCp8Ly98XCd8XCIpLSkgeyAjIFwnIGFuZCBcIiBrZWVw
IGVtYWNzIHBlcmwgbW9kZSBoYXBweQotICAgICAgICAgICAgbXkgJG1hdGNoID0gJDE7Ci0gICAg
ICAgICAgICBpZiAoJG1hdGNoIGVxICcvKicpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXMtL1wq
Lio/XCovLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgcy0vXCouKi0tOwotICAgICAgICAgICAg
ICAgICAgICAkaW5Db21tZW50ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2lmICgkbWF0Y2ggZXEgJy8vJykgewotICAgICAgICAgICAgICAgIHMtLy8uKi0tOwotICAg
ICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKLSAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNo
KFteXFxdfFxcLikqPyRtYXRjaC1zdHJpbmdfYXBwZWFyZWRfaGVyZS0pIHsKLSAgICAgICAgICAg
ICAgICAgICAgJGluUXVvdGVkVGV4dCA9ICRtYXRjaCBpZiAvXFwkLzsKLSAgICAgICAgICAgICAg
ICAgICAgd2FybiAibWlzbWF0Y2hlZCBxdW90ZXMgYXQgbGluZSAkLiBpbiAkZmlsZU5hbWVcbiIg
aWYgJGluUXVvdGVkVGV4dCBlcSAiIjsKLSAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0t
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
ICMgRmluZCBmdW5jdGlvbiBuYW1lcy4KLSAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fT06Oywu
XSktZykgewotICAgICAgICAgICAgIyBTa2lwIGV2ZXJ5dGhpbmcgdW50aWwgInsiIGFmdGVyIGV4
dGVuZHMuCi0gICAgICAgICAgICBpZiAoJGluRXh0ZW5kcykgewotICAgICAgICAgICAgICAgIG5l
eHQgaWYgJDEgbmUgJ3snOwotICAgICAgICAgICAgICAgICRpbkV4dGVuZHMgPSAwOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAkbGFzdFRva2VuID0gJGN1cnJlbnRUb2tlbjsKLSAgICAg
ICAgICAgICRjdXJyZW50VG9rZW4gPSAkMTsKLQotICAgICAgICAgICAgIyBPcGVuIHBhcmVudGhl
c2lzLgotICAgICAgICAgICAgaWYgKCQxIGVxICcoJykgewotICAgICAgICAgICAgICAgICRwYXJl
bnRoZXNlc0RlcHRoKys7Ci0gICAgICAgICAgICAgICAgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGgr
KyBpZiAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3VycmVudFBhcnNpbmdNb2RlXSBlcSAiZ2xvYmFs
IjsKLSAgICAgICAgICAgICAgICAkcG9zc2libGVNZXRob2ROYW1lID0gam9pbignLicsIEBjdXJy
ZW50SWRlbnRpZmllcnMpOwotICAgICAgICAgICAgICAgICRpbkFub255bW91c0Z1bmN0aW9uUGFy
YW1ldGVycyA9IDEgaWYgJGZ1bmN0aW9uSnVzdFNlZW47Ci0gICAgICAgICAgICAgICAgJGZ1bmN0
aW9uSnVzdFNlZW4gPSAwOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICMgQ2xvc2UgcGFyZW50aGVzaXMuCi0gICAgICAgICAgICBpZiAoJDEgZXEg
JyknKSB7Ci0gICAgICAgICAgICAgICAgJHBhcmVudGhlc2VzRGVwdGgtLTsKLSAgICAgICAgICAg
ICAgICAkZ2xvYmFsUGFyZW50aGVzZXNEZXB0aC0tIGlmICRjdXJyZW50UGFyc2luZ01vZGVbJCNj
dXJyZW50UGFyc2luZ01vZGVdIGVxICJnbG9iYWwiOwotICAgICAgICAgICAgICAgIEBjdXJyZW50
SWRlbnRpZmllcnMgPSAoKSBpZiAkaW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnM7Ci0gICAg
ICAgICAgICAgICAgJGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzID0gMDsKLSAgICAgICAg
ICAgICAgICAkcGFyZW50aGVzaXNKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBPcGVuIGJyYWNlLgotICAgICAgICAgICAg
aWYgKCQxIGVxICd7JykgewotICAgICAgICAgICAgICAgIG15ICRtZXRob2ROYW1lID0gIiI7Ci0g
ICAgICAgICAgICAgICAgbXkgJG1vZGUgPSAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3VycmVudFBh
cnNpbmdNb2RlXTsKLQotICAgICAgICAgICAgICAgICMgTWV0aG9kLgotICAgICAgICAgICAgICAg
IGlmICgoJG1vZGUgZXEgJ2NsYXNzJyBvciAkbW9kZSBlcSAnZ2xvYmFsJykgYW5kICRwYXJlbnRo
ZXNpc0p1c3RTZWVuIGFuZCAoJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gb3IgJHBvc3NpYmxlTWV0
aG9kTmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRtb2RlIGVxICdjbGFzcycpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2ROYW1lID0gam9pbignLicsICRzdGF0aWNP
ckNvbnRydWN0b3JTZWVuID8gIiIgOiAicHJvdG90eXBlIiwgJHBvc3NpYmxlTWV0aG9kTmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
bWV0aG9kTmFtZSA9ICRwb3NzaWJsZU1ldGhvZE5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgICAgICAkbWV0aG9kTmFtZSA9fiBzL1wuezIsfS9cLi9nOyAjIFJl
bW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZE5h
bWUgPX4gcy9cLiQvLzsgIyBSZW1vdmUgdHJhaWxpbmcgcGVyaW9kLgotCi0gICAgICAgICAgICAg
ICAgICAgIG15ICRjdXJyZW50TWV0aG9kID0gam9pbignLicsIEBjdXJyZW50U2NvcGVzLCAkbWV0
aG9kTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICRjdXJyZW50TWV0aG9kID1+IHMvXC57Mix9
L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgotICAgICAgICAgICAgICAgICAg
ICAkY3VycmVudE1ldGhvZCA9fiBzL1wuJC8vOyAjIFJlbW92ZSB0cmFpbGluZyBwZXJpb2QuCi0K
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAibWV0aG9kIik7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVu
dE1ldGhvZCk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbkRlcHRo
cywgJGJyYWNlc0RlcHRoKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0
aW9uU3RhcnRMaW5lcywgJC4pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICRicmFjZXNEZXB0aCsrOwotICAgICAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsK
LQotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRTY29wZXMsIGpvaW4oJy4nLCAkbWV0aG9k
TmFtZSA/ICRtZXRob2ROYW1lIDogQGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAg
ICAgIEBjdXJyZW50SWRlbnRpZmllcnMgPSAoKTsKLQotICAgICAgICAgICAgICAgICRzdGF0aWNP
ckNvbnRydWN0b3JTZWVuID0gMDsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAjIENsb3NlIGJyYWNlLgotICAgICAgICAgICAgaWYgKCQxIGVxICd9
JykgewotICAgICAgICAgICAgICAgICRicmFjZXNEZXB0aC0tOwotICAgICAgICAgICAgICAgICRm
dW5jdGlvbkp1c3RTZWVuID0gMDsKLQotICAgICAgICAgICAgICAgIGlmIChAY3VycmVudEZ1bmN0
aW9uRGVwdGhzIGFuZCAkYnJhY2VzRGVwdGggPT0gJGN1cnJlbnRGdW5jdGlvbkRlcHRoc1skI2N1
cnJlbnRGdW5jdGlvbkRlcHRoc10pIHsKLSAgICAgICAgICAgICAgICAgICAgcG9wKEBjdXJyZW50
RnVuY3Rpb25EZXB0aHMpOwotICAgICAgICAgICAgICAgICAgICBwb3AoQGN1cnJlbnRQYXJzaW5n
TW9kZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJGN1cnJlbnROYW1lID0gcG9wKEBjdXJy
ZW50RnVuY3Rpb25OYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRzdGFydCA9IHBvcChA
Y3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgJGN1cnJl
bnROYW1lID1+IHMvXlwuLy9nOyAjIFJlbW92ZXMgbGVhZGluZyBwZXJpb2RzLgotCi0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydCwgJC4sICRjdXJyZW50TmFtZV0pOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHBvcChAY3VycmVudFNjb3Blcyk7
Ci0gICAgICAgICAgICAgICAgQGN1cnJlbnRJZGVudGlmaWVycyA9ICgpOwotCi0gICAgICAgICAg
ICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBEb3QuCi0gICAgICAg
ICAgICBpZiAoJDEgZXEgJy4nKSB7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBTZW1pY29sb24gb3IgY29tbWEuCi0gICAgICAgICAgICBpZiAo
JDEgZXEgJzsnIG9yICQxIGVxICcsJykgewotICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRp
ZmllcnMgPSAoKTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAjIENsYXNzLgotICAgICAgICAgICAgaWYgKCQxIGVxICdjbGFzcycpIHsKLSAgICAg
ICAgICAgICAgICAkY2xhc3NKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBFeHRlbmRzLgotICAgICAgICAgICAgaWYgKCQx
IGVxICdleHRlbmRzJykgewotICAgICAgICAgICAgICAgICRpbkV4dGVuZHMgPSAxOwotICAgICAg
ICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgRnVuY3Rpb24u
Ci0gICAgICAgICAgICBpZiAoJDEgZXEgJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgICAgICRm
dW5jdGlvbkp1c3RTZWVuID0gMTsKLQotICAgICAgICAgICAgICAgIGlmICgkYXNzaWdubWVudEp1
c3RTZWVuKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSBqb2lu
KCcuJywgKEBjdXJyZW50U2NvcGVzLCBAY3VycmVudElkZW50aWZpZXJzKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24gPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNv
bnNlY3V0aXZlIHBlcmlvZHMuCi0KLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBh
cnNpbmdNb2RlLCAiZnVuY3Rpb24iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVu
dEZ1bmN0aW9uTmFtZXMsICRjdXJyZW50RnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0aCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAjIEdldHRlciBwcmVmaXguCi0gICAgICAgICAgICBpZiAoJDEgZXEgJ2dldCcpIHsKLSAg
ICAgICAgICAgICAgICBuZXh0IGlmICRsYXN0VG9rZW4gZXEgJy4nOyAjIEF2b2lkIG1hcC5nZXQo
Li4uKS4KLSAgICAgICAgICAgICAgICAkZ2V0dGVySnVzdFNlZW4gPSAxOwotICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgU2V0dGVyIHByZWZpeC4K
LSAgICAgICAgICAgIGlmICgkMSBlcSAnc2V0JykgewotICAgICAgICAgICAgICAgIG5leHQgaWYg
JGxhc3RUb2tlbiBlcSAnLic7ICMgQXZvaWQgbWFwLnNldCguLi4pLgotICAgICAgICAgICAgICAg
ICRzZXR0ZXJKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBBc3luYyBwcmVmaXguCi0gICAgICAgICAgICBpZiAoJDEgZXEg
J2FzeW5jJykgewotICAgICAgICAgICAgICAgIG5leHQgaWYgJGxhc3RUb2tlbiBlcSAnLic7Ci0g
ICAgICAgICAgICAgICAgJGFzeW5jSnVzdFNlZW4gPSAxOwotICAgICAgICAgICAgICAgIG5leHQ7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgU3RhdGljLgotICAgICAgICAgICAgaWYg
KCQxIGVxICdzdGF0aWMnIG9yICQxIGVxICdjb25zdHJ1Y3RvcicpIHsKLSAgICAgICAgICAgICAg
ICAkc3RhdGljT3JDb250cnVjdG9yU2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBBc3NpZ25tZW50IG9wZXJhdG9yLgotICAgICAg
ICAgICAgaWYgKCQxIGVxICc9JyBvciAkMSBlcSAnOicpIHsKLSAgICAgICAgICAgICAgICAkYXNz
aWdubWVudEp1c3RTZWVuID0gMTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBuZXh0IGlmICRwYXJlbnRoZXNlc0RlcHRoID4gJGdsb2JhbFBhcmVu
dGhlc2VzRGVwdGg7Ci0KLSAgICAgICAgICAgICMgV29yZC4KLSAgICAgICAgICAgICR3b3JkID0g
JDE7Ci0KLSAgICAgICAgICAgIGlmICgkY2xhc3NKdXN0U2VlbikgewotICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdvcmQpIGlmICEkYXNzaWdubWVudEp1c3RTZWVu
OwotCi0gICAgICAgICAgICAgICAgbXkgJGN1cnJlbnRDbGFzcyA9IGpvaW4oJy4nLCAoQGN1cnJl
bnRTY29wZXMsIEBjdXJyZW50SWRlbnRpZmllcnMpKTsKLSAgICAgICAgICAgICAgICAkY3VycmVu
dENsYXNzID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgot
Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAiY2xhc3MiKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRDbGFzcyk7
Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVw
dGgpOwotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQu
KTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRnZXR0ZXJKdXN0U2VlbiBvciAkc2V0dGVySnVzdFNl
ZW4gb3IgJGFzeW5jSnVzdFNlZW4pIHsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJnZXQgJHdv
cmQiIGlmICRnZXR0ZXJKdXN0U2VlbjsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJzZXQgJHdv
cmQiIGlmICRzZXR0ZXJKdXN0U2VlbjsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJhc3luYyAk
d29yZCIgaWYgJGFzeW5jSnVzdFNlZW47Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50
SWRlbnRpZmllcnMsICR3b3JkKTsKLQotICAgICAgICAgICAgICAgIG15ICRtb2RlID0gJGN1cnJl
bnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJzaW5nTW9kZV07Ci0gICAgICAgICAgICAgICAgbXkg
JGN1cnJlbnRGdW5jdGlvbiA9IGpvaW4oJy4nLCAoQGN1cnJlbnRTY29wZXMsICgkbW9kZSBlcSAn
Y2xhc3MnIGFuZCAhJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4pID8gInByb3RvdHlwZSIgOiAiIiwg
QGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24g
PX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCi0KLSAgICAg
ICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJmdW5jdGlvbiIpOwotICAgICAg
ICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVudEZ1bmN0aW9uKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0
aCk7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcywgJC4p
OwotICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uSnVzdFNlZW4gYW5kICEkYXNzaWdubWVu
dEp1c3RTZWVuKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAk
d29yZCk7Ci0KLSAgICAgICAgICAgICAgICBteSAkY3VycmVudEZ1bmN0aW9uID0gam9pbignLics
IChAY3VycmVudFNjb3BlcywgQGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAgICAg
ICRjdXJyZW50RnVuY3Rpb24gPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZl
IHBlcmlvZHMuCi0KLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJm
dW5jdGlvbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAk
Y3VycmVudEZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25E
ZXB0aHMsICRicmFjZXNEZXB0aCk7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0
aW9uU3RhcnRMaW5lcywgJC4pOwotICAgICAgICAgICAgfSBlbHNpZiAoJHdvcmQgbmUgJ2lmJyBh
bmQgJHdvcmQgbmUgJ2ZvcicgYW5kICR3b3JkIG5lICdkbycgYW5kICR3b3JkIG5lICd3aGlsZScg
YW5kICR3b3JkIG5lICd3aGljaCcgYW5kICR3b3JkIG5lICd2YXInKSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAkd29yZCk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICRjbGFzc0p1c3RTZWVuID0gMDsKLSAgICAgICAgICAgICRwYXJlbnRoZXNpc0p1
c3RTZWVuID0gMDsKLSAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsKLSAgICAgICAg
ICAgICRnZXR0ZXJKdXN0U2VlbiA9IDA7Ci0gICAgICAgICAgICAkc2V0dGVySnVzdFNlZW4gPSAw
OwotICAgICAgICAgICAgJGFzeW5jSnVzdFNlZW4gPSAwOwotICAgICAgICAgICAgJGFzc2lnbm1l
bnRKdXN0U2VlbiA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3YXJuICJtaXNtYXRjaGVk
IGJyYWNlcyBpbiAkZmlsZU5hbWVcbiIgaWYgJGJyYWNlc0RlcHRoOwotICAgIHdhcm4gIm1pc21h
dGNoZWQgcGFyZW50aGVzZXMgaW4gJGZpbGVOYW1lXG4iIGlmICRwYXJlbnRoZXNlc0RlcHRoOwot
Ci0gICAgcmV0dXJuIEByYW5nZXM7Ci19Ci0KLSMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhl
IGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgUGVybCBmdW5jdGlvbnMu
IEZ1bmN0aW9ucwotIyBzdGFydCBvbiBhIGxpbmUgdGhhdCBzdGFydHMgd2l0aCAic3ViICIsIGFu
ZCBlbmQgb24gdGhlIGZpcnN0IGxpbmUgc3RhcnRpbmcgd2l0aCAifSIgdGhlcmVhZnRlci4KLSMK
LSMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBm
dW5jdGlvbiBdLgotCi1zdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9wZXJsKCQkKQot
ewotICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdl
czsKLQotICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSAiIjsKLSAgICBteSAkc3RhcnQgPSAwOwot
ICAgIG15ICRoZXJlRG9jdW1lbnRJZGVudGlmaWVyID0gIiI7Ci0KLSAgICB3aGlsZSAoPCRmaWxl
SGFuZGxlPikgewotICAgICAgICBjaG9tcDsKLSAgICAgICAgaWYgKCEkaGVyZURvY3VtZW50SWRl
bnRpZmllcikgewotICAgICAgICAgICAgaWYgKC9ec3ViXHMrKFtcd19dW1x3XGRfXSopLykgewot
ICAgICAgICAgICAgICAgICMgU2tpcCBvdmVyIGZvcndhcmQgZGVjbGFyYXRpb25zLCB3aGljaCBk
b24ndCBjb250YWluIGEgYnJhY2UgYW5kIGVuZCB3aXRoIGEgc2VtaWNvbG9uLgotICAgICAgICAg
ICAgICAgIG5leHQgaWYgLztccyokLzsKLQotICAgICAgICAgICAgICAgIGlmICgkY3VycmVudEZ1
bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4gIm5lc3RlZCBmdW5jdGlvbnMgZm91
bmQgYXQgdG9wLWxldmVsIGF0ICRmaWxlTmFtZTokLlxuIjsKLSAgICAgICAgICAgICAgICAgICAg
bmV4dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlv
biA9ICQxOwotICAgICAgICAgICAgICAgICRzdGFydCA9ICQuOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKC88PFxzKltcIlwnXT8oW1x3X11bXHdfXGRdKikvKSB7Ci0gICAgICAgICAg
ICAgICAgIyBFbnRlciBoZXJlLWRvY3VtZW50LgotICAgICAgICAgICAgICAgICRoZXJlRG9jdW1l
bnRJZGVudGlmaWVyID0gJDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaW5kZXgo
JF8sICJ9IikgPT0gMCkgewotICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRzdGFydDsKLSAg
ICAgICAgICAgICAgICBwdXNoKEByYW5nZXMsIFskc3RhcnQsICQuLCAkY3VycmVudEZ1bmN0aW9u
XSk7Ci0gICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOwotICAgICAgICAgICAg
ICAgICRzdGFydCA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRfIGVxICRo
ZXJlRG9jdW1lbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAjIEVzY2FwZSBmcm9tIGhlcmUt
ZG9jdW1lbnQuCi0gICAgICAgICAgICAkaGVyZURvY3VtZW50SWRlbnRpZmllciA9ICIiOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEByYW5nZXM7Ci19Ci0KLSMgUmVhZCBhIGZpbGUg
YW5kIGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2Ug
UHl0aG9uIGNsYXNzZXMsIG1ldGhvZHMsIG9yIGZ1bmN0aW9ucy4KLSMKLSMgRklYTUU6IE1heWJl
IHdlIHNob3VsZCB1c2UgUHl0aG9uJ3MgYXN0IG1vZHVsZSB0byBkbyB0aGUgcGFyc2luZyBmb3Ig
dXM/Ci0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRf
bGluZSwgZnVuY3Rpb24gXS4KLQotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcHl0
aG9uKCQkKQotewotICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAg
bXkgQHJhbmdlczsKLQotICAgIG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU2VudGluZWxSZWdF
eCA9IHFyIyg/OiIiInwnJycpIzsKLSAgICBteSAkbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFN0YXJ0
UmVnRXggPSBxciNccyokbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXgjOwotICAg
IG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXggPSBxciMkbXVsdGlsaW5lU3RyaW5n
TGl0ZXJhbFNlbnRpbmVsUmVnRXhccyokIzsKLQotICAgIG15IEBzY29wZVN0YWNrID0gKHsgbGlu
ZSA9PiAwLCBpbmRlbnQgPT4gLTEsIG5hbWUgPT4gdW5kZWYgfSk7Ci0gICAgbXkgJGxhc3RMaW5l
ID0gMDsKLSAgICBteSAkaW5Db21tZW50ID0gMDsKLSAgICB1bnRpbCAoJGxhc3RMaW5lKSB7Ci0g
ICAgICAgICRfID0gPCRmaWxlSGFuZGxlPjsKLSAgICAgICAgdW5sZXNzICgkXykgewotICAgICAg
ICAgICAgIyBUbyBwb3Agb3V0IGFsbCBwb3BwZWQgc2NvcGVzLCBydW4gdGhlIGxvb3Agb25jZSBt
b3JlIGFmdGVyCi0gICAgICAgICAgICAjIHdlIGVuY291bnRlcmVkIHRoZSBlbmQgb2YgdGhlIGZp
bGUuCi0gICAgICAgICAgICAkXyA9ICJwYXNzXG4iOwotICAgICAgICAgICAgJC4rKzsKLSAgICAg
ICAgICAgICRsYXN0TGluZSA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgY2hvbXA7Ci0gICAgICAg
IG5leHQgdW5sZXNzIC9eKFxzKikoW14jXS4qKSQvOyAjIFNraXAgbm9uLWluZGVudGVkIGxpbmVz
IHRoYXQgYmVnaW4gd2l0aCBhIGNvbW1lbnQuCi0KLSAgICAgICAgbXkgJGluZGVudCA9IGxlbmd0
aCAkMTsKLSAgICAgICAgbXkgJHJlc3QgPSAkMjsKLSAgICAgICAgbXkgJHNjb3BlID0gJHNjb3Bl
U3RhY2tbLTFdOwotCi0gICAgICAgIGlmICgkaW5kZW50IDw9ICRzY29wZS0+e2luZGVudH0pIHsK
LSAgICAgICAgICAgICMgRmluZCBhbGwgdGhlIHNjb3BlcyB0aGF0IHdlIGhhdmUganVzdCBleGl0
ZWQuCi0gICAgICAgICAgICBteSAkaSA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgJGkgPCBAc2Nv
cGVTdGFjazsgKyskaSkgewotICAgICAgICAgICAgICAgIGxhc3QgaWYgJGluZGVudCA8PSAkc2Nv
cGVTdGFja1skaV0tPntpbmRlbnR9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbXkgQHBv
cHBlZFNjb3BlcyA9IHNwbGljZSBAc2NvcGVTdGFjaywgJGk7Ci0KLSAgICAgICAgICAgICMgRm9y
IGVhY2ggc2NvcGUgdGhhdCB3YXMganVzdCBleGl0ZWQsIGFkZCBhIHJhbmdlIHRoYXQgZ29lcyBm
cm9tIHRoZSBzdGFydCBvZiB0aGF0Ci0gICAgICAgICAgICAjIHNjb3BlIHRvIHRoZSBzdGFydCBv
ZiB0aGUgbmV4dCBuZXN0ZWQgc2NvcGUsIG9yIHRvIHRoZSBsaW5lIGp1c3QgYmVmb3JlIHRoaXMg
b25lIGZvcgotICAgICAgICAgICAgIyB0aGUgaW5uZXJtb3N0IHNjb3BlLgotICAgICAgICAgICAg
Zm9yICgkaSA9IDA7ICRpIDwgQHBvcHBlZFNjb3BlczsgKyskaSkgewotICAgICAgICAgICAgICAg
IG15ICRsaW5lQWZ0ZXJFbmQgPSAkaSArIDEgPT0gQHBvcHBlZFNjb3BlcyA/ICQuIDogJHBvcHBl
ZFNjb3Blc1skaSArIDFdLT57bGluZX07Ci0gICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBb
JHBvcHBlZFNjb3Blc1skaV0tPntsaW5lfSwgJGxpbmVBZnRlckVuZCAtIDEsICRwb3BwZWRTY29w
ZXNbJGldLT57bmFtZX1dOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQHNjb3BlU3RhY2sg
b3Igd2FybiAiUG9wcGVkIG9mZiBsYXN0IHNjb3BlIGF0ICRmaWxlTmFtZTokLlxuIjsKLQotICAg
ICAgICAgICAgIyBTZXQgdGhlIG5vdy1jdXJyZW50IHNjb3BlIHRvIHN0YXJ0IGF0IHRoZSBjdXJy
ZW50IGxpbmUuIEFueSBsaW5lcyB3aXRoaW4gdGhpcyBzY29wZQotICAgICAgICAgICAgIyBiZWZv
cmUgdGhpcyBwb2ludCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8gQHJhbmdlcy4K
LSAgICAgICAgICAgICRzY29wZSA9ICRzY29wZVN0YWNrWy0xXTsKLSAgICAgICAgICAgICRzY29w
ZS0+e2xpbmV9ID0gJC47Ci0gICAgICAgIH0KLQotICAgICAgICAjIFNraXAgbXVsdGktbGluZSBz
dHJpbmcgbGl0ZXJhbHMgYW5kIGRvY3N0cmluZ3MuCi0gICAgICAgIG5leHQgaWYgLyRtdWx0aWxp
bmVTdHJpbmdMaXRlcmFsU3RhcnRSZWdFeC4qJG11bHRpbGluZVN0cmluZ0xpdGVyYWxFbmRSZWdF
eC87Ci0gICAgICAgIGlmICghJGluQ29tbWVudCAmJiAvJG11bHRpbGluZVN0cmluZ0xpdGVyYWxT
dGFydFJlZ0V4LykgewotICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7Ci0gICAgICAgIH0gZWxz
aWYgKCRpbkNvbW1lbnQgJiYgLyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXgvKSB7Ci0g
ICAgICAgICAgICAkaW5Db21tZW50ID0gMDsKLSAgICAgICAgfQotICAgICAgICBuZXh0IGlmICRp
bkNvbW1lbnQ7Ci0KLSAgICAgICAgbmV4dCBpZiAvXlxzKlsjJyJdLzsgIyBTa2lwIGluZGVudGVk
IGFuZCBub24taW5kZW50ZWQgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGEgY29tbWVudCBvciBzdHJp
bmcgbGl0ZXJhbCAoaW5jbHVkZXMgZG9jc3RyaW5ncykuCi0KLSAgICAgICAgbmV4dCB1bmxlc3Mg
JHJlc3QgPX4gLyg/OmNsYXNzfGRlZilccysoXHcrKS87Ci0gICAgICAgIG15ICRuYW1lID0gJDE7
Ci0gICAgICAgIG15ICRmdWxsTmFtZSA9ICRzY29wZS0+e25hbWV9ID8gam9pbignLicsICRzY29w
ZS0+e25hbWV9LCAkbmFtZSkgOiAkbmFtZTsKLSAgICAgICAgcHVzaCBAc2NvcGVTdGFjaywgeyBs
aW5lID0+ICQuLCBpbmRlbnQgPT4gJGluZGVudCwgbmFtZSA9PiAkZnVsbE5hbWUgfTsKLQotICAg
ICAgICBpZiAoJHNjb3BlLT57aW5kZW50fSA+PSAwKSB7Ci0gICAgICAgICAgICBwdXNoIEByYW5n
ZXMsIFskc2NvcGUtPntsaW5lfSwgJC4gLSAxLCAkc2NvcGUtPntuYW1lfV07Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gQHJhbmdlczsKLX0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0
IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDU1Mgc2Vs
ZWN0b3JzLiAgQSBzZWxlY3RvciBpcwotIyBhbnl0aGluZyBiZWZvcmUgYW4gb3BlbmluZyBicmFj
ZSBvbiBhIGxpbmUuIEEgc2VsZWN0b3Igc3RhcnRzIGF0IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhl
IG9wZW5pbmcKLSMgYnJhY2UgYW5kIGVuZHMgYXQgdGhlIGNsb3NpbmcgYnJhY2UuCi0jCi0jIFJl
c3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgc2VsZWN0
b3IgXS4KLQotc3ViIGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKCQkKQotewotICAg
IG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdlczsKLQot
ICAgIG15ICRpbkNvbW1lbnQgPSAwOwotICAgIG15ICRpbkJyYWNlID0gMDsKLSAgICBteSBAc3Rh
Y2s7Ci0gICAgbXkgJGNvbnRleHQ7Ci0gICAgbXkgQGN1cnJlbnRQYXJzZU1vZGUgPSAoImdsb2Jh
bCIpOwotICAgIG15IEBncm91cGluZ1N0YWNrOwotICAgIG15ICRzZWxlY3RvckJyYWNlcyA9IDA7
Ci0KLSAgICB3aGlsZSAoPCRmaWxlSGFuZGxlPikgewotICAgICAgICBmb3JlYWNoIG15ICR0b2tl
biAoc3BsaXQgbS0oXHt8XH18L1wqfFwqLyktLCAkXykgewotICAgICAgICAgICAgaWYgKCR0b2tl
biBlcSAieyIpIHsKLSAgICAgICAgICAgICAgICBpZiAoISRpbkNvbW1lbnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgJGluQnJhY2UgKz0gMTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAkc2VsZWN0b3JCcmFjZXMgKz0gMSBpZiAkY3VycmVudFBhcnNlTW9kZVskI2N1
cnJlbnRQYXJzZU1vZGVdIGVxICJzZWxlY3RvciI7Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4g
Im1pc21hdGNoZWQgb3BlbmluZyBicmFjZSBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYgJHNl
bGVjdG9yQnJhY2VzID4gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lm
ICgkdG9rZW4gZXEgIn0iKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghJGluQnJhY2Ugb3IgJGN1cnJlbnRQYXJzZU1vZGVbJCNj
dXJyZW50UGFyc2VNb2RlXSBlcSAiZ2xvYmFsIikgewotICAgICAgICAgICAgICAgICAgICAgICAg
d2FybiAibWlzbWF0Y2hlZCBjbG9zaW5nIGJyYWNlIGZvdW5kIGluICRmaWxlTmFtZTokLlxuIjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICAkaW5CcmFjZSAtPSAxOwotCi0gICAgICAgICAgICAgICAgICAg
IG15ICRwYXJzZU1vZGUgPSBwb3AoQGN1cnJlbnRQYXJzZU1vZGUpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoJHBhcnNlTW9kZSBlcSAic2VsZWN0b3IiKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBteSAkbmFtZSA9IHBvcChAc3RhY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkg
JHN0YXJ0TGluZSA9IHBvcChAc3RhY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGVu
ZExpbmUgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRncm91cGluZ1ByZWZpeCA9
IGpvaW4oIiAiLCBAZ3JvdXBpbmdTdGFjayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGVuZ3RoICRncm91cGluZ1ByZWZpeCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRn
cm91cGluZ1ByZWZpeCAuPSAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydExpbmUsICRlbmRMaW5lLCAkZ3Jv
dXBpbmdQcmVmaXggLiAkbmFtZV0pOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcGFy
c2VNb2RlIGVxICJtZWRpYSIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvcChAZ3JvdXBp
bmdTdGFjayk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAk
c2VsZWN0b3JCcmFjZXMgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxz
aWYgKCR0b2tlbiBlcSAiLyoiKSB7Ci0gICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7Ci0g
ICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIiovIikgewotICAgICAgICAgICAgICAgIHdh
cm4gIm1pc21hdGNoZWQgY29tbWVudCBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYgISRpbkNv
bW1lbnQ7Ci0gICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGlmICghJGluQ29tbWVudCBhbmQgJGN1cnJlbnRQYXJzZU1v
ZGVbJCNjdXJyZW50UGFyc2VNb2RlXSBuZSAic2VsZWN0b3IiIGFuZCAkdG9rZW4gIX4gL15bXHNc
dF0qJC8pIHsKLSAgICAgICAgICAgICAgICAgICAgJHRva2VuID1+IHMvXltcc1x0XSp8W1xzXHRd
KiQvL2c7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRzdGFydExpbmUgPSAkLjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCR0b2tlbiA9fiAvXlxAbWVkaWEvKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2VNb2RlLCAibWVkaWEiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGdyb3VwaW5nU3RhY2ssICR0b2tlbik7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2VN
b2RlLCAic2VsZWN0b3IiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQHN0YWNrLCAo
JHN0YXJ0TGluZSwgJHRva2VuKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAjIFNvcnQgYnkg
c3RhcnQgbGluZS4KLSAgICByZXR1cm4gc29ydCB7JGEtPlswXSA8PT4gJGItPlswXX0gQHJhbmdl
czsKLX0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhl
IHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBTd2lmdCBjbGFzc2VzLCBtZXRob2RzLAotIyBvciBmdW5j
dGlvbnMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBl
bmRfbGluZSwgZnVuY3Rpb24gXS4KLQotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jf
c3dpZnQoJCQpCi17Ci0gICAgbXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87Ci0KLSAg
ICBteSBAcmFuZ2VzOwotCi0gICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOwotICAgIG15ICRj
dXJyZW50VHlwZSA9ICIiOwotICAgIG15ICRmdW5jdGlvblN0YXJ0ID0gMDsKLSAgICBteSAkdHlw
ZVN0YXJ0ID0gMDsKLSAgICBteSAkZnVuY3Rpb25TY29wZURlcHRoID0gMDsKLSAgICBteSAkdHlw
ZVNjb3BlRGVwdGggPSAwOwotICAgIG15ICRzY29wZURlcHRoID0gMDsKLQotICAgIHdoaWxlICg8
JGZpbGVIYW5kbGU+KSB7Ci0gICAgICAgIGNob21wOwotICAgICAgICBuZXh0IGlmICgvXlxzKlwv
XC8uKi8pOwotICAgICAgICBpZiAoL2Z1bmNccysoW1x3X11bXHdcZF9dKilcKCguKilcKS8gfHwg
L3ZhclxzKyhbXHdfXVtcd1xkX10qKTpccysvKSB7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TY29w
ZURlcHRoID0gJHNjb3BlRGVwdGg7Ci0gICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gJDE7
Ci0gICAgICAgICAgICBpZiAoJDIpIHsKLSAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9u
ID0gIiRjdXJyZW50RnVuY3Rpb24oIi4gcGFyc2VTd2lmdEZ1bmN0aW9uQXJncygkMikgLiAiKSI7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoJGN1cnJlbnRUeXBlKSB7Ci0gICAgICAg
ICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIkY3VycmVudFR5cGUuJGN1cnJlbnRGdW5jdGlv
biI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9ICQuOwotICAg
ICAgICB9IGVsc2lmICgvKD86Y2xhc3N8c3RydWN0fGVudW18cHJvdG9jb2x8ZXh0ZW5zaW9uKVxz
KyhbXHdfXVtcd1xkX10qKS8pIHsKLSAgICAgICAgICAgICR0eXBlU2NvcGVEZXB0aCA9ICRzY29w
ZURlcHRoOwotICAgICAgICAgICAgJGN1cnJlbnRUeXBlID0gJDE7Ci0gICAgICAgICAgICAkdHlw
ZVN0YXJ0ID0gJC47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4KCRfLCAieyIpID4gLTEp
IHsKLSAgICAgICAgICAgICRzY29wZURlcHRoKys7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlu
ZGV4KCRfLCAifSIpID4gLTEpIHsKLSAgICAgICAgICAgICRzY29wZURlcHRoLS07Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCRzY29wZURlcHRoID09ICRmdW5jdGlvblNjb3BlRGVwdGgpIHsKLSAg
ICAgICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvblN0YXJ0OwotICAgICAgICAgICAgcHVzaChA
cmFuZ2VzLCBbJGZ1bmN0aW9uU3RhcnQsICQuLCAkY3VycmVudEZ1bmN0aW9uXSk7Ci0gICAgICAg
ICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiI7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9
IDA7Ci0gICAgICAgIH0gZWxzaWYgKCRzY29wZURlcHRoID09ICR0eXBlU2NvcGVEZXB0aCkgewot
ICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHR5cGVTdGFydDsKLSAgICAgICAgICAgICRjdXJyZW50
VHlwZSA9ICIiOwotICAgICAgICAgICAgJHR5cGVTdGFydCA9IDA7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gQHJhbmdlczsKLX0KLQotc3ViIHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3Mo
JCkKLXsKLSAgICBteSAoJGZ1bmN0aW9uQXJncykgPSBAXzsKLSAgICBteSBAd29yZHMgPSBzcGxp
dCAvLCAvLCAkZnVuY3Rpb25BcmdzOwotICAgIG15ICRhcmdDb3VudCA9IHNjYWxhcihAd29yZHMp
OwotICAgIGlmICgkYXJnQ291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSBl
bHNpZiAoJGFyZ0NvdW50ID4gMCkgewotICAgICAgICAjIElmIHRoZSBmaXJzdCBhcmd1bWVudCBp
cyB1bm5hbWVkLCBnaXZlIGl0IHRoZSBuYW1lICJfIgotICAgICAgICAkd29yZHNbMF0gPX4gcy9e
KFx3KzogLiopL18gJDEvOwotICAgICAgICByZXR1cm4gam9pbigiIiwgbWFwIHsgJF8gPX4gcy9e
KFx3KykuKi8kMS87ICIkXzoiIH0gQHdvcmRzKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3YXJu
ICJVbmtub3duIGFyZ3VtZW50IGNvdW50LlxuIjsKLSAgICB9Ci19Ci0KIHN1YiBwcm9jZXNzUGF0
aHMoXEApCiB7CiAgICAgbXkgKCRwYXRocykgPSBAXzsKQEAgLTIwODYsOCArNjc2LDggQEAgc3Vi
IGRpZmZDb21tYW5kKCQkJCQpCiB7CiAgICAgbXkgKCRwYXRocywgJGdpdENvbW1pdCwgJGdpdElu
ZGV4LCAkbWVyZ2VCYXNlKSA9IEBfOwogCi0gICAgIyBUaGUgZnVuY3Rpb24gb3ZlcmxhcCBkZXRl
Y3Rpb24gbG9naWMgaW4gY29tcHV0ZU1vZGlmaWVkRnVuY3Rpb25zKCkgYXNzdW1lcyB0aGF0IGl0
cyBsaW5lCi0gICAgIyByYW5nZXMgd2VyZSBmcm9tIGEgdW5pZmllZCBkaWZmIHdpdGhvdXQgYW55
IGNvbnRleHQgbGluZXMuCisgICAgIyBUaGUgZnVuY3Rpb24gb3ZlcmxhcCBkZXRlY3Rpb24gbG9n
aWMgaW4gd2Via2l0cGVybDo6Y2hhbmdlbG9nOjpjb21wdXRlTW9kaWZpZWRGdW5jdGlvbnMoKQor
ICAgICMgYXNzdW1lcyB0aGF0IGl0cyBsaW5lIHJhbmdlcyB3ZXJlIGZyb20gYSB1bmlmaWVkIGRp
ZmYgd2l0aG91dCBhbnkgY29udGV4dCBsaW5lcy4KICAgICBteSAkY29tbWFuZDsKICAgICBpZiAo
aXNTVk4oKSkgewogICAgICAgICBteSBAZXNjYXBlZFBhdGhzID0gbWFwKGVzY2FwZVN1YnZlcnNp
b25QYXRoKCRfKSwgQCRwYXRocyk7CkBAIC0yMTIwLDQ3ICs3MTAsNiBAQCBzdWIgc3RhdHVzQ29t
bWFuZCgkJCQkKQogICAgIHJldHVybiAiJGNvbW1hbmQgMj4mMSI7CiB9CiAKLXN1YiBhdHRyaWJ1
dGVDb21tYW5kKCQkJCkKLXsKLSAgICBteSAoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZSwgJGF0dHIp
ID0gQF87Ci0KLSAgICBteSAkcmVzdWx0OwotICAgIGlmIChpc1NWTigpKSB7Ci0gICAgICAgIG15
ICRkZXZOdWxsID0gRmlsZTo6U3BlYy0+ZGV2bnVsbCgpOwotICAgICAgICBteSAkZm91bmRBdHRy
aWJ1dGUgPSAwOwotICAgICAgICBteSAkc3ViUGF0aCA9ICIuIjsKLSAgICAgICAgbXkgKEBkaXJl
Y3RvcnlQYXJ0cykgPSBGaWxlOjpTcGVjLT5zcGxpdGRpcigkZmlsZSk7Ci0gICAgICAgIGZvcmVh
Y2ggbXkgJHBhcnQgKEBkaXJlY3RvcnlQYXJ0cykgewotICAgICAgICAgICAgaWYgKCRwYXJ0IGVx
ICIuIikgewotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAkc3ViUGF0aCA9IEZpbGU6OlNwZWMtPmpvaW4oJHN1YlBhdGgsICRwYXJ0KTsKLSAgICAgICAg
ICAgICRzdWJQYXRoID1+IHMvXlwuXC8vLzsKLSAgICAgICAgICAgIGlmICgkZm91bmRBdHRyaWJ1
dGUgfHwgZXhpc3RzICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gJiYgJGF0dHJp
YnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSBlcSAiMSIpIHsKLSAgICAgICAgICAgICAgICAk
YXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JHN1YlBhdGh9ID0gIjEiOwotICAgICAgICAgICAgICAg
ICRmb3VuZEF0dHJpYnV0ZSA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG15ICRjb21tYW5kID0gU1ZOIC4gIiBwcm9wZ2V0ICRhdHRyICckc3Vi
UGF0aCciOwotICAgICAgICAgICAgbXkgJGF0dHJpYiA9ICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRy
fXskc3ViUGF0aH0gfHwgYCRjb21tYW5kIDI+ICRkZXZOdWxsYDsKLSAgICAgICAgICAgIGNob21w
ICRhdHRyaWI7Ci0gICAgICAgICAgICBpZiAoJGF0dHJpYiBlcSAiMSIpIHsKLSAgICAgICAgICAg
ICAgICAkZm91bmRBdHRyaWJ1dGUgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgJGF0
dHJpYnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSA9ICRhdHRyaWIgfHwgIjAiOwotICAgICAg
ICB9Ci0gICAgICAgICRyZXN1bHQgPSAkYXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JGZpbGV9Owot
ICAgIH0gZWxzaWYgKGlzR2l0KCkpIHsKLSAgICAgICAgbXkgJGNvbW1hbmQgPSBHSVQgLiAiIGNo
ZWNrLWF0dHIgJGF0dHIgLS0gJyRmaWxlJyI7Ci0gICAgICAgICRyZXN1bHQgPSBgJGNvbW1hbmRg
OwotICAgICAgICBjaG9tcCAkcmVzdWx0OwotICAgICAgICAkcmVzdWx0ID1+IHMvLipcVyhcdykv
JDEvOwotICAgIH0KLQotICAgICRyZXN1bHQgPX4gcy9cRC8vZzsKLSAgICByZXR1cm4gaW50KCRy
ZXN1bHQgfHwgMCk7Ci19Ci0KIHN1YiBjcmVhdGVQYXRjaENvbW1hbmQoJCQkJCkKIHsKICAgICBt
eSAoJGNoYW5nZWRGaWxlc1N0cmluZywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNl
KSA9IEBfOwpAQCAtMjQ1OSwzNCArMTAwOCw2IEBAIHN1YiBwcm9wZXJ0eUNoYW5nZURlc2NyaXB0
aW9uKCQpCiAgICAgcmV0dXJuICRkZXNjcmlwdGlvbjsKIH0KIAotc3ViIGV4dHJhY3RMaW5lUmFu
Z2VBZnRlckNoYW5nZSgkKQotewotICAgIG15ICgkc3RyaW5nKSA9IEBfOwotICAgIG15ICRjaHVu
a1JhbmdlID0gcGFyc2VDaHVua1JhbmdlKCRzdHJpbmcpOwotICAgIGlmICghJGNodW5rUmFuZ2Up
IHsKLSAgICAgICAgcmV0dXJuICgtMSwgLTEpOyAjIE1hbGZvcm1lZAotICAgIH0KLSAgICBpZiAo
ISRjaHVua1JhbmdlLT57bmV3U3RhcnRpbmdMaW5lfSB8fCAhJGNodW5rUmFuZ2UtPntuZXdMaW5l
Q291bnR9KSB7Ci0gICAgICAgICAjIERlbGV0aW9uOyBubyBsaW5lcyBleGlzdCBhZnRlciBjaGFu
Z2UuCi0gICAgICAgIHJldHVybiAoJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9LCAkY2h1
bmtSYW5nZS0+e25ld1N0YXJ0aW5nTGluZX0pOwotICAgIH0KLSAgICByZXR1cm4gKCRjaHVua1Jh
bmdlLT57bmV3U3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9ICsg
JGNodW5rUmFuZ2UtPntuZXdMaW5lQ291bnR9IC0gMSk7Ci19Ci0KLXN1YiBleHRyYWN0TGluZVJh
bmdlQmVmb3JlQ2hhbmdlKCQpCi17Ci0gICAgbXkgKCRzdHJpbmcpID0gQF87Ci0gICAgbXkgJGNo
dW5rUmFuZ2UgPSBwYXJzZUNodW5rUmFuZ2UoJHN0cmluZyk7Ci0gICAgaWYgKCEkY2h1bmtSYW5n
ZSkgewotICAgICAgICByZXR1cm4gKC0xLCAtMSk7ICMgTWFsZm9ybWVkCi0gICAgfQotICAgIGlm
ICghJGNodW5rUmFuZ2UtPntzdGFydGluZ0xpbmV9IHx8ICEkY2h1bmtSYW5nZS0+e2xpbmVDb3Vu
dH0pIHsKLSAgICAgICAgIyBBZGRpdGlvbjsgbm8gbGluZXMgZXhpc3RlZCBiZWZvcmUgY2hhbmdl
LgotICAgICAgICByZXR1cm4gKCRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSwgJGNodW5rUmFu
Z2UtPntzdGFydGluZ0xpbmV9KTsKLSAgICB9Ci0gICAgcmV0dXJuICgkY2h1bmtSYW5nZS0+e3N0
YXJ0aW5nTGluZX0sICRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSArICRjaHVua1JhbmdlLT57
bGluZUNvdW50fSAtIDEpOwotfQotCiBzdWIgdGVzdExpc3RGb3JDaGFuZ2VMb2coQCkKIHsKICAg
ICBteSAoQHRlc3RzKSA9IEBfOwpAQCAtMjU3MywxNCArMTA5NCwzIEBAIHN1YiBub3JtYWxpemVM
aW5lRW5kaW5ncygkJCkKICAgICAkc3RyaW5nID1+IHMvXHI/XG4vJGVuZGwvZzsKICAgICByZXR1
cm4gJHN0cmluZzsKIH0KLQotc3ViIGRlY29kZUVudGl0aWVzKCQpCi17Ci0gICAgbXkgKCR0ZXh0
KSA9IEBfOwotICAgICR0ZXh0ID1+IHMvXCZsdDsvPC9nOwotICAgICR0ZXh0ID1+IHMvXCZndDsv
Pi9nOwotICAgICR0ZXh0ID1+IHMvXCZxdW90Oy9cIi9nOwotICAgICR0ZXh0ID1+IHMvXCZhcG9z
Oy9cJy9nOwotICAgICR0ZXh0ID1+IHMvXCZhbXA7L1wmL2c7Ci0gICAgcmV0dXJuICR0ZXh0Owot
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MgYi9Ub29scy9TY3JpcHRzL3J1
bi1sZWFrcwppbmRleCAyMDVmYzY0ZTJlNGEuLmU5NDM5YzExODMyZSAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy9ydW4tbGVha3MKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MKQEAgLTMz
LDExICszMywxMiBAQCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBH
ZXRvcHQ6Okxvbmc7Cit1c2UgQ2FycDsKK3VzZSBGaW5kQmluOwordXNlIGxpYiAkRmluZEJpbjo6
UmVhbEJpbjsKK3VzZSB3ZWJraXRwZXJsOjpsZWFrcyBxdyhydW5MZWFrcywgcGFyc2VMZWFrc091
dHB1dCk7CiAKLXN1YiBydW5MZWFrcygkJCk7Ci1zdWIgcGFyc2VMZWFrc091dHB1dChcQCk7CiBz
dWIgcmVtb3ZlTWF0Y2hpbmdSZWNvcmRzKFxAJFxAKTsKLXN1YiByZXBvcnRFcnJvcigkKTsKIAog
c3ViIG1haW4oKQogewpAQCAtNzEsNyArNzIsNyBAQCBzdWIgbWFpbigpCiAgICAgfQogCiAgICAg
aWYgKCEkcGlkT3JFeGVjdXRhYmxlTmFtZSkgewotICAgICAgICByZXBvcnRFcnJvcigiTWlzc2lu
ZyBhcmd1bWVudDogcGlkIHwgZXhlY3V0YWJsZS4iKTsKKyAgICAgICAgY2FycCAiTWlzc2luZyBh
cmd1bWVudDogcGlkIHwgZXhlY3V0YWJsZS4iOwogICAgICAgICBwcmludCBTVERFUlIgJHVzYWdl
OwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC04Myw5ICs4NCw2IEBAIHN1YiBtYWluKCkK
ICAgICB9CiAKICAgICBteSAkcGFyc2VkT3V0cHV0ID0gcGFyc2VMZWFrc091dHB1dChAJGxlYWtz
T3V0cHV0KTsKLSAgICBpZiAoISRwYXJzZWRPdXRwdXQpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgfQogCiAgICAgIyBGaWx0ZXIgb3V0cHV0LgogICAgICMgRklYTUU6IEFkanVzdCB0aGUgb3Zl
cmFsbCBsZWFrIGNvdW50IGluIHRoZSBvdXRwdXQgYWNjb3JkaW5nbHkuIFRoaXMgd2lsbCBhZmZl
Y3QgY2FsbGVycywgbm90YWJseSBsZWFrZGV0ZWN0b3IucHkuCkBAIC0xMTQsMTExICsxMTIsNiBA
QCBzdWIgbWFpbigpCiAKIGV4aXQobWFpbigpKTsKIAotIyBSZXR1cm5zIHRoZSBvdXRwdXQgb2Yg
dGhlIGxlYWtzIHRvb2wgaW4gbGlzdCBmb3JtLgotc3ViIHJ1bkxlYWtzKCQkKQotewotICAgIG15
ICgkdGFyZ2V0LCAkbWVtZ3JhcGhQYXRoKSA9IEBfOwotCi0gICAgaWYgKGRlZmluZWQgJG1lbWdy
YXBoUGF0aCkgewotICAgICAgICBgL3Vzci9iaW4vbGVha3MgXCIkdGFyZ2V0XCIgLS1vdXRwdXRH
cmFwaD1cIiRtZW1ncmFwaFBhdGhcImA7Ci0gICAgICAgICR0YXJnZXQgPSAkbWVtZ3JhcGhQYXRo
OwotICAgIH0KLQotICAgICMgVG8gZ2V0IGEgcmVzdWx0IHdlIGNhbiBwYXJzZSwgd2UgbmVlZCB0
byBwYXNzIC0tbGlzdCB0byBhbGwgdmVyc2lvbnMgb2YgdGhlIGxlYWtzIHRvb2wKLSAgICAjIHRo
YXQgcmVjb2duaXplIGl0LCBidXQgdGhlcmUgaXMgbm8gY2VydGFpbiB3YXkgdG8gdGVsbCBpbiBh
ZHZhbmNlICh0aGUgdmVyc2lvbiBvZiB0aGUKLSAgICAjIHRvb2wgaXMgbm90IGFsd2F5cyB0aWVk
IHRvIE9TIHZlcnNpb24sIGFuZCAtLWhlbHAgZG9lc24ndCBkb2N1bWVudCB0aGUgb3B0aW9uIGlu
IHNvbWUKLSAgICAjIG9mIHRoZSB0b29sIHZlcnNpb25zIHdoZXJlIGl0J3Mgc3VwcG9ydGVkIGFu
ZCBuZWVkZWQpLgotICAgIG15IEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJn
ZXRcIiAtLWxpc3RgOwotCi0gICAgIyBGSVhNRTogUmVtb3ZlIHRoZSBmYWxsYmFjayBvbmNlIG1h
Y09TIE1vamF2ZSBpcyB0aGUgb2xkZXN0IHN1cHBvcnRlZCB2ZXJzaW9uLgotICAgIG15ICRsZWFr
c0V4aXRDb2RlID0gJD8gPj4gODsKLSAgICBpZiAoJGxlYWtzRXhpdENvZGUgPiAxKSB7Ci0gICAg
ICAgIEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJnZXRcImA7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIFxAbGVha3NPdXRwdXQ7Ci19Ci0KLSMgUmV0dXJucyBhIGxpc3Qgb2YgaGFz
aCByZWZlcmVuY2VzIHdpdGggdGhlIGtleXMgeyBhZGRyZXNzLCBzaXplLCB0eXBlLCBjYWxsU3Rh
Y2ssIGxlYWtzT3V0cHV0IH0KLXN1YiBwYXJzZUxlYWtzT3V0cHV0KFxAKQotewotICAgIG15ICgk
bGVha3NPdXRwdXQpID0gQF87Ci0KLSAgICAjIEZvcm1hdDoKLSAgICAjICAgUHJvY2VzcyAwMDAw
MDogMTIzNCBub2RlcyBtYWxsb2NlZCBmb3IgMTIzNCBLQgotICAgICMgICBQcm9jZXNzIDAwMDAw
OiBYWCBsZWFrcyBmb3IgWFhYIHRvdGFsIGxlYWtlZCBieXRlcy4gICAgCi0gICAgIyAgIExlYWs6
IDB4MDAwMDAwMDAgc2l6ZT0xMjM0IFtpbnN0YW5jZSBvZiAnYmxhaCddCi0gICAgIyAgICAgICAw
eDAwMDAwMDAwIDB4MDAwMDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIGEuLmQuZS5lCi0gICAg
IyAgICAgICAuLi4KLSAgICAjICAgICAgIENhbGwgc3RhY2s6IGxlYWtfY2FsbGVyKCkgfCBsZWFr
KCkgfCBtYWxsb2MKLSAgICAjCi0gICAgIyAgIFdlIHRyZWF0IGV2ZXJ5IGxpbmUgZXhjZXB0IGZv
ciAgUHJvY2VzcyAwMDAwMDogYW5kIExlYWs6IGFzIG9wdGlvbmFsCi0KLSAgICBteSAkbGVha0Nv
dW50OwotICAgIG15IEBwYXJzZWRPdXRwdXQgPSAoKTsKLSAgICBteSAkcGFyc2luZ0xlYWsgPSAw
OwotICAgIG15ICRwYXJzZWRMZWFrQ291bnQgPSAwOwotICAgIGZvciBteSAkbGluZSAoQCRsZWFr
c091dHB1dCkgewotICAgICAgICBpZiAoJGxpbmUgPX4gL15Qcm9jZXNzIFxkKzogKFxkKykgbGVh
a3M/LykgewotICAgICAgICAgICAgJGxlYWtDb3VudCA9ICQxOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCRsaW5lIGVxICJcbiIpIHsKLSAgICAgICAgICAgICRwYXJzaW5nTGVhayA9IDA7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoJGxpbmUgPX4gL15MZWFrOiAvKSB7Ci0gICAgICAgICAg
ICAkcGFyc2luZ0xlYWsgPSAxOwotICAgICAgICAgICAgJHBhcnNlZExlYWtDb3VudCsrOwotICAg
ICAgICAgICAgbXkgKCRhZGRyZXNzKSA9ICgkbGluZSA9fiAvTGVhazogKFtbOnhkaWdpdDpdeF0r
KS8pOwotICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRhZGRyZXNzKSkgewotICAgICAgICAgICAg
ICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3QgcGFyc2UgTGVhayBhZGRyZXNzLiIpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXkgKCRzaXpl
KSA9ICgkbGluZSA9fiAvc2l6ZT0oW1s6ZGlnaXQ6XV0rKS8pOwotICAgICAgICAgICAgaWYgKCFk
ZWZpbmVkKCRzaXplKSkgewotICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3Qg
cGFyc2UgTGVhayBzaXplLiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBjb2RlIHNlZW1zIHdyb25nLCB0aGUgbGVh
a3MgdG9vbCBkb2Vzbid0IGFjdHVhbGx5IHVzZSBzaW5nbGUgcXVvdGVzLgotICAgICAgICAgICAg
IyBXZSBzaG91bGQgcmVjb25jaWxlIHdpdGggb3RoZXIgZm9ybWF0IGNoYW5nZXMgdGhhdCBoYXBw
ZW5lZCBzaW5jZSwgc3VjaCBhcyB0aGUKLSAgICAgICAgICAgICMgYWRkaXRpb24gb2Ygem9uZSBp
bmZvcm1hdGlvbi4KLSAgICAgICAgICAgIG15ICgkdHlwZSkgPSAoJGxpbmUgPX4gLycoW14nXSsp
Jy8pOyAjJwotICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCR0eXBlKSkgewotICAgICAgICAgICAg
ICAgICR0eXBlID0gIiI7ICMgVGhlIGxlYWtzIHRvb2wgc29tZXRpbWVzIG9taXRzIHRoZSB0eXBl
LgotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBteSAlbGVhayA9ICgKLSAgICAgICAgICAg
ICAgICAiYWRkcmVzcyIgPT4gJGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgInNpemUiID0+ICRz
aXplLAotICAgICAgICAgICAgICAgICJ0eXBlIiA9PiAkdHlwZSwKLSAgICAgICAgICAgICAgICAi
Y2FsbFN0YWNrIiA9PiAiIiwgIyBUaGUgbGVha3MgdG9vbCBzb21ldGltZXMgb21pdHMgdGhlIGNh
bGwgc3RhY2suCi0gICAgICAgICAgICAgICAgImxlYWtzT3V0cHV0IiA9PiAkbGluZQotICAgICAg
ICAgICAgKTsKLSAgICAgICAgICAgIHB1c2goQHBhcnNlZE91dHB1dCwgXCVsZWFrKTsKLSAgICAg
ICAgfSBlbHNpZiAoJHBhcnNpbmdMZWFrKSB7Ci0gICAgICAgICAgICAkcGFyc2VkT3V0cHV0WyQj
cGFyc2VkT3V0cHV0XS0+eyJsZWFrc091dHB1dCJ9IC49ICRsaW5lOwotICAgICAgICAgICAgaWYg
KCRsaW5lID1+IC9DYWxsIHN0YWNrOi8pIHsKLSAgICAgICAgICAgICAgICAkcGFyc2VkT3V0cHV0
WyQjcGFyc2VkT3V0cHV0XS0+eyJjYWxsU3RhY2sifSA9ICRsaW5lOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbXkgJW5vbkxlYWtMaW5lID0gKAotICAgICAg
ICAgICAgICAgICJsZWFrc091dHB1dCIgPT4gJGxpbmUKLSAgICAgICAgICAgICk7Ci0gICAgICAg
ICAgICBwdXNoKEBwYXJzZWRPdXRwdXQsIFwlbm9uTGVha0xpbmUpOwotICAgICAgICB9Ci0gICAg
fQotICAgIAotICAgIGlmICgkcGFyc2VkTGVha0NvdW50ICE9ICRsZWFrQ291bnQpIHsKLSAgICAg
ICAgcmVwb3J0RXJyb3IoIlBhcnNlZCBsZWFrIGNvdW50ICgkcGFyc2VkTGVha0NvdW50KSBkb2Vz
IG5vdCBtYXRjaCBsZWFrIGNvdW50IHJlcG9ydGVkIGJ5IGxlYWtzIHRvb2wgKCRsZWFrQ291bnQp
LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmV0dXJuIFxAcGFyc2VkT3V0cHV0
OwotfQotCiBzdWIgcmVtb3ZlTWF0Y2hpbmdSZWNvcmRzKFxAJFxAKQogewogICAgIG15ICgkcmVj
b3JkTGlzdCwgJGtleSwgJHJlZ2V4cExpc3QpID0gQF87CkBAIC0yMzYsMTAgKzEyOSwzIEBAIHN1
YiByZW1vdmVNYXRjaGluZ1JlY29yZHMoXEAkXEApCiAgICAgICAgICRpKys7CiAgICAgfQogfQot
Ci1zdWIgcmVwb3J0RXJyb3IoJCkKLXsKLSAgICBteSAoJGVycm9yTWVzc2FnZSkgPSBAXzsKLSAg
ICAKLSAgICBwcmludCBTVERFUlIgYmFzZW5hbWUoJDApIC4gIjogJGVycm9yTWVzc2FnZVxuIjsK
LX0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0ZGlycy5wbQppbmRleCBlYjI2ZDI3NTdmMDUuLjdiYTVlOTQ1ZmM5YyAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0ZGlycy5wbQpAQCAtNDcsNiArNDcsNyBAQCB1c2UgTGlzdDo6VXRpbDsKIHVzZSBQT1NJWDsK
IHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwogdXNlIFZDU1V0aWxzOwordXNlIHdlYmtpdHBl
cmw6OmRpcnM7CiAKIEJFR0lOIHsKICAgIHVzZSBFeHBvcnRlciAgICgpOwpAQCAtMTQ1LDcgKzE0
Niw2IEBAIG15ICR4Y29kZVNES1BsYXRmb3JtTmFtZTsKIG15ICRzaW11bGF0b3JJZGlvbTsKIG15
ICRjb25maWd1cmF0aW9uRm9yVmlzdWFsU3R1ZGlvOwogbXkgJGNvbmZpZ3VyYXRpb25Qcm9kdWN0
RGlyOwotbXkgJHNvdXJjZURpcjsKIG15ICRjdXJyZW50U1ZOUmV2aXNpb247CiBteSAkZGlkTG9h
ZElQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbjsKIG15ICRubVBhdGg7CkBAIC0xOTUsMjQgKzE5
NSw2IEBAIHN1YiBzZGtQbGF0Zm9ybURpcmVjdG9yeSgkKQogICAgIHJldHVybiAkc2RrUGxhdGZv
cm1EaXJlY3Rvcnk7CiB9CiAKLXN1YiBkZXRlcm1pbmVTb3VyY2VEaXIKLXsKLSAgICByZXR1cm4g
aWYgJHNvdXJjZURpcjsKLSAgICAkc291cmNlRGlyID0gJEZpbmRCaW46OkJpbjsKLSAgICAkc291
cmNlRGlyID1+IHN8LyskfHw7ICMgUmVtb3ZlIHRyYWlsaW5nICcvJyBhcyB3ZSB3b3VsZCBkaWUg
bGF0ZXIKLQotICAgICMgd2Fsa3MgdXAgcGF0aCBjaGVja2luZyBlYWNoIGRpcmVjdG9yeSB0byBz
ZWUgaWYgaXQgaXMgdGhlIG1haW4gV2ViS2l0IHByb2plY3QgZGlyLCAKLSAgICAjIGRlZmluZWQg
YnkgY29udGFpbmluZyBTb3VyY2VzLCBXZWJDb3JlLCBhbmQgSmF2YVNjcmlwdENvcmUuCi0gICAg
dW50aWwgKCgtZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIpICYmIC1k
IEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiU291cmNlIiwgIldlYkNvcmUiKSAmJiAt
ZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIsICJKYXZhU2NyaXB0Q29y
ZSIpKSB8fCAoLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJJbnRlcm5hbCIpICYm
IC1kIEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiT3BlblNvdXJjZSIpKSkKLSAgICB7
Ci0gICAgICAgIGlmICgkc291cmNlRGlyICF+IHN8L1teL10rJHx8KSB7Ci0gICAgICAgICAgICBk
aWUgIkNvdWxkIG5vdCBmaW5kIHRvcCBsZXZlbCB3ZWJraXQgZGlyZWN0b3J5IGFib3ZlIHNvdXJj
ZSBkaXJlY3RvcnkgdXNpbmcgRmluZEJpbi5cbiI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAk
c291cmNlRGlyID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIikg
aWYgLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIik7Ci19Ci0K
IHN1YiBjdXJyZW50UGVybFBhdGgoKQogewogICAgIG15ICR0aGlzUGVybCA9ICReWDsKQEAgLTIy
MiwxMiArMjA0LDYgQEAgc3ViIGN1cnJlbnRQZXJsUGF0aCgpCiAgICAgcmV0dXJuICR0aGlzUGVy
bDsKIH0KIAotIyB1c2VkIGZvciBzY3JpcHRzIHdoaWNoIGFyZSBzdG9yZWQgaW4gYSBub24tc3Rh
bmRhcmQgbG9jYXRpb24KLXN1YiBzZXRTb3VyY2VEaXIoJCkKLXsKLSAgICAoJHNvdXJjZURpcikg
PSBAXzsKLX0KLQogc3ViIGRldGVybWluZU5pbmphVmVyc2lvbgogewogICAgIGNob21wKG15ICRu
aW5qYVZlcnNpb24gPSBgbmluamEgLS12ZXJzaW9uYCk7CkBAIC0yNTcsNyArMjMzLDYgQEAgc3Vi
IHJlYWRYY29kZVVzZXJEZWZhdWx0KCQpCiBzdWIgZGV0ZXJtaW5lQmFzZVByb2R1Y3REaXIKIHsK
ICAgICByZXR1cm4gaWYgZGVmaW5lZCAkYmFzZVByb2R1Y3REaXI7Ci0gICAgZGV0ZXJtaW5lU291
cmNlRGlyKCk7CiAKICAgICBteSAkc2V0U2hhcmVkUHJlY29tcHNEaXI7CiAgICAgbXkgJGluZGV4
RGF0YVN0b3JlRGlyOwpAQCAtMjk4LDcgKzI3Myw3IEBAIHN1YiBkZXRlcm1pbmVCYXNlUHJvZHVj
dERpcgogICAgIH0KIAogICAgIGlmICghZGVmaW5lZCgkYmFzZVByb2R1Y3REaXIpKSB7ICMgUG9y
dC1zcGVjaWZpYyBjaGVja3MgZmFpbGVkLCB1c2UgZGVmYXVsdAotICAgICAgICAkYmFzZVByb2R1
Y3REaXIgPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIldlYktpdEJ1aWxkIik7Cisg
ICAgICAgICRiYXNlUHJvZHVjdERpciA9IEZpbGU6OlNwZWMtPmNhdGRpcihzb3VyY2VEaXIsICJX
ZWJLaXRCdWlsZCIpOwogICAgIH0KIAogICAgIGlmIChpc0dpdCgpICYmIGlzR2l0QnJhbmNoQnVp
bGQoKSkgewpAQCAtMzA3LDggKzI4Miw4IEBAIHN1YiBkZXRlcm1pbmVCYXNlUHJvZHVjdERpcgog
ICAgIH0KIAogICAgIGlmIChpc0FwcGxlQ29jb2FXZWJLaXQoKSkgewotICAgICAgICAkYmFzZVBy
b2R1Y3REaXIgPX4gc3xeXFEkKFNSQ1JPT1QpLy4uXEUkfCRzb3VyY2VEaXJ8OwotICAgICAgICAk
YmFzZVByb2R1Y3REaXIgPX4gc3xeXFEkKFNSQ1JPT1QpLy4uL3wkc291cmNlRGlyL3w7CisgICAg
ICAgICRiYXNlUHJvZHVjdERpciA9fiBzfF5cUSQoU1JDUk9PVCkvLi5cRSR8c291cmNlRGlyfDsK
KyAgICAgICAgJGJhc2VQcm9kdWN0RGlyID1+IHN8XlxRJChTUkNST09UKS8uLi98c291cmNlRGly
L3w7CiAgICAgICAgICRiYXNlUHJvZHVjdERpciA9fiBzfF5+L3wkRU5We0hPTUV9L3w7CiAgICAg
ICAgIGRpZSAiQ2FuJ3QgaGFuZGxlIFhjb2RlIHByb2R1Y3QgZGlyZWN0b3J5IHdpdGggYSB+IGlu
IGl0LlxuIiBpZiAkYmFzZVByb2R1Y3REaXIgPX4gL34vOwogICAgICAgICBkaWUgIkNhbid0IGhh
bmRsZSBYY29kZSBwcm9kdWN0IGRpcmVjdG9yeSB3aXRoIGEgdmFyaWFibGUgaW4gaXQuXG4iIGlm
ICRiYXNlUHJvZHVjdERpciA9fiAvXCQvOwpAQCAtODU2LDE2ICs4MzEsMTQgQEAgc3ViIGRldGVy
bWluZUN1cnJlbnRTVk5SZXZpc2lvbgogICAgICMgV2UgYWx3YXlzIHVwZGF0ZSB0aGUgY3VycmVu
dCBTVk4gcmV2aXNpb24gaGVyZSwgYW5kIGxlYXZlIHRoZSBjYWNoaW5nCiAgICAgIyB0byBjdXJy
ZW50U1ZOUmV2aXNpb24oKSwgc28gdGhhdCBjaGFuZ2VzIHRvIHRoZSBTVk4gcmV2aXNpb24gd2hp
bGUgdGhlCiAgICAgIyBzY3JpcHQgaXMgcnVubmluZyBjYW4gYmUgcGlja2VkIHVwIGJ5IGNhbGxp
bmcgdGhpcyBmdW5jdGlvbiBhZ2Fpbi4KLSAgICBkZXRlcm1pbmVTb3VyY2VEaXIoKTsKLSAgICAk
Y3VycmVudFNWTlJldmlzaW9uID0gc3ZuUmV2aXNpb25Gb3JEaXJlY3RvcnkoJHNvdXJjZURpcik7
CisgICAgJGN1cnJlbnRTVk5SZXZpc2lvbiA9IHN2blJldmlzaW9uRm9yRGlyZWN0b3J5KHNvdXJj
ZURpcik7CiAgICAgcmV0dXJuICRjdXJyZW50U1ZOUmV2aXNpb247CiB9CiAKIAogc3ViIGNoZGly
V2ViS2l0CiB7Ci0gICAgZGV0ZXJtaW5lU291cmNlRGlyKCk7Ci0gICAgY2hkaXIgJHNvdXJjZURp
ciBvciBkaWU7CisgICAgY2hkaXIgc291cmNlRGlyIG9yIGRpZTsKIH0KIAogc3ViIGJhc2VQcm9k
dWN0RGlyCkBAIC04NzQsMTIgKzg0Nyw2IEBAIHN1YiBiYXNlUHJvZHVjdERpcgogICAgIHJldHVy
biAkYmFzZVByb2R1Y3REaXI7CiB9CiAKLXN1YiBzb3VyY2VEaXIKLXsKLSAgICBkZXRlcm1pbmVT
b3VyY2VEaXIoKTsKLSAgICByZXR1cm4gJHNvdXJjZURpcjsKLX0KLQogc3ViIHByb2R1Y3REaXIK
IHsKICAgICBkZXRlcm1pbmVDb25maWd1cmF0aW9uUHJvZHVjdERpcigpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0xvYWRBc01vZHVsZS5wbSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk1NGVlOGJkODM1MS4uMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9Mb2FkQXNNb2R1bGUucG0KKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBwZXJsCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotIyBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCi0jIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0jIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIwot
IyBJbXBvcnRzIFBlcmwgc2NyaXB0cyBpbnRvIGEgcGFja2FnZSBmb3IgZWFzeSB1bml0IHRlc3Rp
bmcuCi0KLXBhY2thZ2UgTG9hZEFzTW9kdWxlOwotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdz
OwotCi11c2UgRmlsZTo6U3BlYzsKLXVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpTcGVjLT5j
YXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7Ci11c2Ugd2Via2l0ZGlyczsKLQotdXNl
IGJhc2UgJ0V4cG9ydGVyJzsKLXVzZSB2YXJzIHF3KEBFWFBPUlQgQEVYUE9SVF9PSyAlRVhQT1JU
X1RBR1MgJFZFUlNJT04pOwotCi1ARVhQT1JUID0gKCk7Ci1ARVhQT1JUX09LID0gKCk7Ci0lRVhQ
T1JUX1RBR1MgPSAoKTsKLSRWRVJTSU9OID0gJzEuMCc7Ci0KLXN1YiByZWFkRmlsZSgkKTsKLQot
c3ViIGltcG9ydAotewotICAgIG15ICgkc2VsZiwgJHBhY2thZ2UsICRzY3JpcHQpID0gQF87Ci0g
ICAgbXkgJHNjcmlwdFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKHNvdXJjZURpcigpLCAiVG9v
bHMiLCAiU2NyaXB0cyIsICRzY3JpcHQpOwotICAgIGV2YWwgIgotICAgICAgICBwYWNrYWdlICRw
YWNrYWdlOwotCi0gICAgICAgIHVzZSBzdHJpY3Q7Ci0gICAgICAgIHVzZSB3YXJuaW5nczsKLQot
ICAgICAgICB1c2UgYmFzZSAnRXhwb3J0ZXInOwotICAgICAgICB1c2UgdmFycyBxdyhcQEVYUE9S
VCBcQEVYUE9SVF9PSyBcJUVYUE9SVF9UQUdTIFwkVkVSU0lPTik7Ci0KLSAgICAgICAgXEBFWFBP
UlQgPSAoKTsKLSAgICAgICAgXEBFWFBPUlRfT0sgPSAoKTsKLSAgICAgICAgXCVFWFBPUlRfVEFH
UyA9ICgpOwotICAgICAgICBcJFZFUlNJT04gPSAnMS4wJzsKLQotICAgICAgICBzdWIgeyIgLiBy
ZWFkRmlsZSgkc2NyaXB0UGF0aCkgLiAifQotICAgICI7Ci19Ci0KLXN1YiByZWFkRmlsZSgkKQot
ewotICAgIG15ICRwYXRoID0gc2hpZnQ7Ci0gICAgbG9jYWwgJC8gPSB1bmRlZjsgIyBSZWFkIGlu
IHRoZSB3aG9sZSBmaWxlIGF0IG9uY2UuCi0gICAgb3BlbiBGSUxFLCAiPCIsICRwYXRoIG9yIGRp
ZSAiQ2Fubm90IG9wZW4gJHBhdGg6ICQhIjsKLSAgICBteSAkY29udGVudHMgPSA8RklMRT47Ci0g
ICAgY2xvc2UgRklMRTsKLSAgICByZXR1cm4gJGNvbnRlbnRzOwotfTsKLQotMTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9idWlsZC9vdXRwdXQucG0gYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvYnVpbGQvb3V0cHV0LnBtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMDRkOTdhYWVhMzUwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL2J1aWxkL291dHB1dC5wbQpAQCAtMCwwICsxLDE0NyBAQAorcGFja2Fn
ZSB3ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0OworCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdz
OwordXNlIENhcnA7CisKK0JFR0lOIHsKKyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgk
VkVSU0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRW
RVJTSU9OICAgICA9IDEuMDA7CisgICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBA
RVhQT1JUICAgICAgPSBxdygKKyAgICAgICAgICAgICAgICAgICAgc2hvdWxkSWdub3JlTGluZQor
ICAgICAgICAgICAgICAgICAgICAkcGxhdGZvcm0KKyAgICAgICAgICAgICAgICApOworICAgJUVY
UE9SVF9UQUdTID0gKCk7CisgICBARVhQT1JUX09LICAgPSAoKTsKK30KKworb3VyICRwbGF0Zm9y
bSA9ICdtYWMnOworCitteSAkaW5FbnRpdGxlbWVudHMgPSAwOworbXkgJGluRGV2aWNlUHJlcGFy
YXRpb25XYXJuaW5ncyA9IDA7CisKK3N1YiBzaG91bGRTaG93U3Vic2VxdWVudExpbmUgeworICAg
IG15ICRsaW5lID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvcmVmZXJlbmNl
ZCBmcm9tOiQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8obm90ZTp8ZXJyb3I6KS87CisK
KyAgICByZXR1cm4gMDsKK30KKworc3ViIHNob3VsZElnbm9yZUxpbmUgeworICAgIG15ICgkcHJl
dmlvdXNMaW5lLCAkbGluZSkgPSBAXzsKKworICAgIGlmICgkbGluZSA9fiAvXkVudGl0bGVtZW50
czokLykgeworICAgICAgICAkaW5FbnRpdGxlbWVudHMgPSAxOworICAgICAgICByZXR1cm4gMQor
ICAgIH0KKworICAgIGlmICgkaW5FbnRpdGxlbWVudHMpIHsKKyAgICAgICAgJGluRW50aXRsZW1l
bnRzID0gMCBpZiAkbGluZSA9fiAvXn0kLzsKKyAgICAgICAgcmV0dXJuIDEKKyAgICB9CisKKyAg
ICAjIGlQaG9uZSBwcmVwYXJhdGlvbiBlcnJvcnMgYWx3YXlzIHN0YXJ0IGFuZCBlbmQgd2l0aCBs
aW5lcyBjb250YWluaW5nICdpUGhvbmVDb25uZWN0OicuCisgICAgaWYgKCRpbkRldmljZVByZXBh
cmF0aW9uV2FybmluZ3MpIHsKKyAgICAgICAgJGluRGV2aWNlUHJlcGFyYXRpb25XYXJuaW5ncyA9
IDAgaWYgJGxpbmUgPX4gLz09IEVORDogVW5kZXJseWluZyBkZXZpY2UgcHJlcGFyYXRpb24gd2Fy
bmluZ3MgPT0vOworICAgICAgICByZXR1cm4gMQorICAgIH0KKworICAgIGlmICgkbGluZSA9fiAv
aVBob25lQ29ubmVjdDovKSB7CisgICAgICAgICRpbkRldmljZVByZXBhcmF0aW9uV2FybmluZ3Mg
PSAxOworICAgICAgICByZXR1cm4gMQorICAgIH0KKworICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eXHMqJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15Db21tYW5kIGxpbmUgaW52b2Nh
dGlvbjovOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eQnVpbGQgc2V0dGluZ3MgZnJvbSBj
b21tYW5kIGxpbmU6LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVzZXIgZGVmYXVsdHMg
ZnJvbSBjb21tYW5kIGxpbmU6LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlByZXBhcmUg
YnVpbGQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eQnVpbGQgc3lzdGVtIGluZm9ybWF0
aW9uLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXm5vdGU6IFBsYW5uaW5nIGJ1aWxkLzsK
KyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXm5vdGU6IENvbnN0cnVjdGluZyBidWlsZCBkZXNj
cmlwdGlvbi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBCdWlsZCBkZXNjcmlw
dGlvbiAoY29uc3RydWN0ZWR8bG9hZGVkKSBpbiAuKi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15ub3RlOiBVc2luZyBidWlsZCBkZXNjcmlwdGlvbiAuKi87CisgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL15ub3RlOiBVc2luZyBlYWdlciBjb21waWxhdGlvbi87CisgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15ub3RlOiBFeGVjdXRpb24gcG9saWN5IGV4Y2VwdGlvbiByZWdpc3RyYXRp
b24gZmFpbGVkIGFuZCB3YXMgc2tpcHBlZDogRXJyb3IgRG9tYWluPU5TUE9TSVhFcnJvckRvbWFp
biBDb2RlPTEgIk9wZXJhdGlvbiBub3QgcGVybWl0dGVkIi87CisgICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL15ub3RlOiBkZXRlY3RlZCBlbmNvZGluZyBvZiBpbnB1dCBmaWxlIGFzIFVuaWNvZGUg
XCguKlwpLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvbWFrZShcW1xkK1xdKT86IE5vdGhp
bmcgdG8gYmUgZG9uZSBmb3IvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eSmF2YVNjcmlw
dENvcmVcL2NyZWF0ZV9oYXNoX3RhYmxlLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrXC9Qcml2YXRlSGVhZGVyc1wvY3JlYXRlX2hhc2hfdGFibGUv
OworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eSmF2YVNjcmlwdENvcmVcL3BjcmVcL2RmdGFi
bGVzLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkNyZWF0aW5nIGhhc2h0YWJsZSBmb3Ig
LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXldyb3RlIG91dHB1dCB0byAvOworICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eVU5ET0NVTUVOVEVEOiAvOworICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9saWJ0b29sLipoYXMgbm8gc3ltYm9scy87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL14jIExvd2VyIGNhc2UgYWxsIHRoZSB2YWx1ZXMsIGFzIENTUyB2YWx1ZXMgYXJlIGNhc2Ut
aW5zZW5zaXRpdmUkLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXmlmIHNvcnQgLzsKKyAg
ICByZXR1cm4gMSBpZiAkbGluZSA9fiAvc2V0LXdlYmtpdC1jb25maWd1cmF0aW9uLzsKKyAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvXmJ1aWxkaW5nIGZpbGUgbGlzdC87CisgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15cLlwvJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15cUytcLmgk
LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxTK1wvJC87CisgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL15zZW50IFxkKyBieXRlcy87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL150
b3RhbCBzaXplIGlzLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvT25lIG9mIHRoZSB0d28g
d2lsbCBiZSB1c2VkXC4gV2hpY2ggb25lIGlzIHVuZGVmaW5lZFwuLzsKKyAgICByZXR1cm4gMSBp
ZiAkbGluZSA9fiAvVGhlIExlZ2FjeSBCdWlsZCBTeXN0ZW0gd2lsbCBiZSByZW1vdmVkIGluIGEg
ZnV0dXJlIHJlbGVhc2UvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXCggKHhjb2RlYnVp
bGR8aWYpIC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL153YXJuaW5nOiBjYW4ndCBmaW5k
IGFkZGl0aW9uYWwgU0RLLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXndhcm5pbmc6IG5v
IHVtYnJlbGxhIGhlYWRlciBmb3VuZCBmb3IgdGFyZ2V0ICcuKicsIG1vZHVsZSBtYXAgd2lsbCBu
b3QgYmUgZ2VuZXJhdGVkJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL153YXJuaW5nXDog
ZGV0ZWN0ZWQgaW50ZXJuYWwgaW5zdGFsbCwgcGFzc2luZyBlbnRpdGxlbWVudHMgdG8gc2ltdWxh
dG9yIGFueXdheVwuLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvbWF5IG5vdCBmdW5jdGlv
biBpbiB0aGUgU2ltdWxhdG9yIGJlY2F1c2UgQWQgSG9jLzsKKyAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXC91c3JcL2JpblwvY2xhbmcgLio/IFw+IFxTKy5zYi87CisgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gLyB4Y29kZWJ1aWxkXFtbMC05XSs6WzAtOWEtZl0rXF1ccytEVlRBc3NlcnRpb25z
OiBXYXJuaW5nIGluIC4qLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXihEZXRhaWxzfE9i
amVjdHxNZXRob2R8RnVuY3Rpb258VGhyZWFkKTovOworICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eUGxlYXNlIGZpbGUgYSBidWcgYXQgLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvY3Jl
YXRlZCBieSBhbiB1bnN1cHBvcnRlZCBYQ0RlcGVuZGVuY3lHcmFwaCBidWlsZCQvOworICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC93YXJuaW5nOiBUaGUgYXNzaWdubWVudCBvZiAnLionIGF0ICIu
KiIgdXNlcyBcJFwoaW5oZXJpdGVkXCkuIEluIHRoZSBuZXcgYnVpbGQgc3lzdGVtIHRoaXMgd2ls
bCBpbmhlcml0IGZyb20gYW4gZWFybGllciBkZWZpbml0aW9uIG9mICcuKicgaW4gdGhpcyB4Y2Nv
bmZpZyBmaWxlIG9yIGl0cyBpbXBvcnRzOyB0aGUgb2xkIGJ1aWxkIHN5c3RlbSB3b3VsZCBkaXNj
YXJkIGVhcmxpZXIgZGVmaW5pdGlvbnMuIFRoaXMgbWF5IHJlc3VsdCBpbiBjaGFuZ2VzIHRvIHJl
c29sdmVkIGJ1aWxkIHNldHRpbmcgdmFsdWVzLi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
Ly4qIGNvbS5hcHBsZS5hY3Rvb2wuY29tcGlsYXRpb24tcmVzdWx0cyAuKi87CisgICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gLy4qXC9Bc3NldHMuY2FyLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvLipcL2Fzc2V0Y2F0YWxvZ19nZW5lcmF0ZWRfaW5mby5wbGlzdC87CisgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15tb3VudDogLisgZmFpbGVkIHdpdGgvOworICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eVXNpbmcgLisgcHJvZHVjdGlvbiBlbnZpcm9ubWVudC4kLzsKKyAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvcmVwbGFjaW5nIGV4aXN0aW5nIHNpZ25hdHVyZSQvOworICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9eVW5sb2NraW5nICcuKlwua2V5Y2hhaW4tZGInJC87CisgICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15cZCsgbG9jYWxpemFibGUgc3RyaW5ncyQvOworICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9eXGQrIHBsdXJhbCBydWxlcyQvOworICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eVGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scyBkaWQgbm90IGNoYW5nZS4kLzsK
KyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXmRpdHRvOiBDYW5ub3QgZ2V0IHRoZSByZWFsIHBh
dGggZm9yIHNvdXJjZS87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15EdXBsaWNhdGUgRW50
cnkgV2FzIFNraXBwZWQ6LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkFkZGluZyAuKj9l
bnRpdGxlbWVudHMvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eTWFraW5nIGFwcCBidW5k
bGUgbGF1bmNoYWJsZS87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15GaW5pc2hlZCBhZGRp
bmcgZW50aXRsZW1lbnRzXC4kLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXi4qIHdpbGwg
bm90IGJlIGNvZGUgc2lnbmVkIGJlY2F1c2UgaXRzIHNldHRpbmdzIGRvbid0IHNwZWNpZnkgYSBk
ZXZlbG9wbWVudCB0ZWFtLiQvOworCisgICAgaWYgKCRwbGF0Zm9ybSBlcSAid2luIikgeworICAg
ICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKih0b3VjaHxwZXJsfGNhdHxybSAtZnxkZWx8
cHl0aG9ufFwvdXNyXC9iaW5cL2dcK1wrfGdwZXJmfGVjaG98c2VkfGlmIFxbIFwtZnxXZWJDb3Jl
XC9nZW5lcmF0ZS1leHBvcnQtZmlsZSkgLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15ccyooaWYgbm90IGV4aXN0IFwifGlmIGVycm9ybGV2ZWwgMSkvOworICAgICAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvKF5ccyp8TVNCMzA3MzpccyspKHNldCB8UkVNIHxjbWQgXC9jKS87Cisg
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqW2NDXTpcXFtwUF1yb2dyYW0gW2ZGXWls
ZXMuKlxcLipcXChDTHxtaWRsKVwuZXhlIC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eXHMqUHJvY2Vzc2luZyAuKlwuKGFjZnxofGlkbClccyokLzsKKyAgICAgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15ccypwcmludGYgLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15ccypcL3VzclwvYmluXC9iYXNoXHMqLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15ccypvZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQvOworICAgICAgICByZXR1cm4gMSBpZiAk
bGluZSA9fiAvIFxkKyBGaWxlXChzXCkgY29waWVkLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL15ccypGaWxlIG5vdCBmb3VuZCAtIFwqXC5oLzsKKyAgICAgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL21rZGlyXHMrXCIvOworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAveGNv
cHkgXC95IFwvZCBcIi87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9cLm9ialwiXHMq
JC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC86XHMrKGNtZCBcL2N8c2V0KVxzKy87
CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9NU0IzMDczOlxzKyQvOworICAgICAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvTVNCMzA3MzpccytpZiBub3QgZXhpc3QvOworICAgICAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvd2hpY2guZXhlIGJhc2gvOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eKHRvdWNofHBlcmx8Y2F0fHJtIC1mfHB5dGhvbnxc
L3VzclwvYmluXC9nXCtcK3xcL2JpblwvbG58Z3BlcmZ8ZWNob3xzZWR8aWYgXFsgXC1mfFdlYkNv
cmVcL2dlbmVyYXRlLWV4cG9ydC1maWxlfHdyaXRlLWZpbGV8Y2htb2QpIC87CisgICAgICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eICAgIC8gJiYgIXNob3VsZFNob3dTdWJzZXF1ZW50TGluZSgk
cHJldmlvdXNMaW5lKTsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15wcmludGYgLzsK
KyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15vZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5n
ZWQvOworICAgIH0KKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlNob3dpbmcgZmlyc3QvOwor
CisgICAgcmV0dXJuIDA7Cit9CisKKzE7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvY2hhbmdlbG9nLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2NoYW5nZWxvZy5w
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjJhMTY0YWI4MzBkYgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9jaGFuZ2Vsb2cucG0K
QEAgLTAsMCArMSwxNTI1IEBACisjIS91c3IvYmluL2VudiBwZXJsCisKKyMgQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisj
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitw
YWNrYWdlIHdlYmtpdHBlcmw6OmNoYW5nZWxvZzsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5n
czsKK3VzZSBDYXJwOwordXNlIEZpbGU6OlNwZWM7Cit1c2UgVkNTVXRpbHM7CisKK0JFR0lOIHsK
KyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwg
QEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRWRVJTSU9OICAgICA9IDEuMDA7CisgICBA
SVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBARVhQT1JUICAgICAgPSBxdygKKyAgICAg
ICAgICAgICAgICAgICAgYWN0dWFsbHlHZW5lcmF0ZUZ1bmN0aW9uTGlzdHMKKyAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlQ29tbWFuZAorICAgICAgICAgICAgICAgICAgICBleHRyYWN0TGlu
ZVJhbmdlQWZ0ZXJDaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFjdExpbmVSYW5nZUJl
Zm9yZUNoYW5nZQorICAgICAgICAgICAgICAgICAgICBmZXRjaEJ1Z0Rlc2NyaXB0aW9uRnJvbUJ1
Z1hNTERhdGEKKyAgICAgICAgICAgICAgICAgICAgZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxEYXRh
CisgICAgICAgICAgICAgICAgKTsKKyAgICVFWFBPUlRfVEFHUyA9ICgpOworICAgQEVYUE9SVF9P
SyAgID0gcXcoCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19m
b3JfY3BwCisgICAgICAgICAgICAgICAgICAgIGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3Jf
Y3NzCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2
YQorICAgICAgICAgICAgICAgICAgICBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmFz
Y3JpcHQKKyAgICAgICAgICAgICAgICAgICAgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9w
ZXJsCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcHl0
aG9uCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jfc3dp
ZnQKKyAgICAgICAgICAgICAgICApOworfQorCit1c2UgY29uc3RhbnQgU1ZOID0+ICJzdm4iOwor
dXNlIGNvbnN0YW50IEdJVCA9PiAiZ2l0IjsKKworc3ViIGFjdHVhbGx5R2VuZXJhdGVGdW5jdGlv
bkxpc3RzIHsKKyAgICBteSAoJGNoYW5nZWRGaWxlcywgJGZ1bmN0aW9uTGlzdHMsICRnaXRDb21t
aXQsICRnaXRJbmRleCwgJG1lcmdlQmFzZSwgJGRlbGVnYXRlSGFzaFJlZikgPSBAXzsKKworICAg
IG15ICVsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkOworICAgIG15ICVsaW5lX3Jhbmdlc19iZWZv
cmVfY2hhbmdlZDsKKyAgICBpZiAoQCRjaGFuZ2VkRmlsZXMpIHsKKyAgICAgICAgIyBGb3IgZWFj
aCBmaWxlLCBidWlsZCBhIGxpc3Qgb2YgbW9kaWZpZWQgbGluZXMuCisgICAgICAgICMgVXNlIGxp
bmUgbnVtYmVycyBmcm9tIHRoZSAiYWZ0ZXIiIHNpZGUgb2YgZWFjaCBkaWZmLgorICAgICAgICBw
cmludCBTVERFUlIgIiAgUmV2aWV3aW5nIGRpZmYgdG8gZGV0ZXJtaW5lIHdoaWNoIGxpbmVzIGNo
YW5nZWQuXG4iOworICAgICAgICBteSAkZmlsZTsKKyAgICAgICAgbXkgJGRpZmZGaWxlSGFuZGxl
ID0gJGRlbGVnYXRlSGFzaFJlZi0+e29wZW5EaWZmfSgkY2hhbmdlZEZpbGVzLCAkZ2l0Q29tbWl0
LCAkZ2l0SW5kZXgsICRtZXJnZUJhc2UpOworICAgICAgICBpZiAoISRkaWZmRmlsZUhhbmRsZSkg
eworICAgICAgICAgICAgZGllICJUaGUgZGlmZiBmYWlsZWQ6ICQhLlxuIjsKKyAgICAgICAgfQor
ICAgICAgICB3aGlsZSAoPCRkaWZmRmlsZUhhbmRsZT4pIHsKKyAgICAgICAgICAgIG15ICRmaWxl
UGF0aCA9IHBhcnNlRGlmZlN0YXJ0TGluZSgkXyk7CisgICAgICAgICAgICAkZmlsZSA9ICRkZWxl
Z2F0ZUhhc2hSZWYtPntub3JtYWxpemVQYXRofSgkZmlsZVBhdGgpIGlmICRmaWxlUGF0aDsKKyAg
ICAgICAgICAgIGlmIChkZWZpbmVkICRmaWxlKSB7CisgICAgICAgICAgICAgICAgbXkgKCRiZWZv
cmVfc3RhcnQsICRiZWZvcmVfZW5kKSA9IGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UoJF8p
OworICAgICAgICAgICAgICAgIGlmICgkYmVmb3JlX3N0YXJ0ID49IDEgJiYgJGJlZm9yZV9lbmQg
Pj0gMSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoIEB7JGxpbmVfcmFuZ2VzX2JlZm9yZV9j
aGFuZ2VkeyRmaWxlfX0sIFsgJGJlZm9yZV9zdGFydCwgJGJlZm9yZV9lbmQgXTsKKyAgICAgICAg
ICAgICAgICB9IGVsc2lmICgvRE9fTk9UX0NPTU1JVC8pIHsKKyAgICAgICAgICAgICAgICAgICAg
cHJpbnQgU1RERVJSICJXQVJOSU5HOiBmaWxlICRmaWxlIGNvbnRhaW5zIHRoZSBzdHJpbmcgRE9f
Tk9UX0NPTU1JVCwgbGluZSAkLlxuIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgbXkgKCRhZnRlcl9zdGFydCwgJGFmdGVyX2VuZCkgPSBleHRyYWN0TGluZVJhbmdlQWZ0ZXJD
aGFuZ2UoJF8pOworICAgICAgICAgICAgICAgIGlmICgkYWZ0ZXJfc3RhcnQgPj0gMSAmJiAkYWZ0
ZXJfZW5kID49IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyRsaW5lX3Jhbmdlc19h
ZnRlcl9jaGFuZ2VkeyRmaWxlfX0sIFsgJGFmdGVyX3N0YXJ0LCAkYWZ0ZXJfZW5kIF07CisgICAg
ICAgICAgICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01NSVQvKSB7CisgICAgICAgICAgICAgICAg
ICAgIHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAkZmlsZSBjb250YWlucyB0aGUgc3RyaW5n
IERPX05PVF9DT01NSVQsIGxpbmUgJC5cbiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGNsb3NlKCRkaWZmRmlsZUhhbmRsZSk7CisgICAgfQor
CisgICAgIyBGb3IgZWFjaCBzb3VyY2UgZmlsZSwgY29udmVydCBsaW5lIHJhbmdlIHRvIGZ1bmN0
aW9uIGxpc3QuCisgICAgcHJpbnQgU1RERVJSICIgIEV4dHJhY3RpbmcgYWZmZWN0ZWQgZnVuY3Rp
b24gbmFtZXMgZnJvbSBzb3VyY2UgZmlsZXMuXG4iOworICAgIG15ICVmaWxlc1RvRXhhbWluZSA9
IG1hcCB7ICRfID0+IDEgfSAoa2V5cyglbGluZV9yYW5nZXNfYmVmb3JlX2NoYW5nZWQpLCBrZXlz
KCVsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkKSk7CisgICAgZm9yZWFjaCBteSAkZmlsZSAoa2V5
cyAlZmlsZXNUb0V4YW1pbmUpIHsKKyAgICAgICAgbXkgJXNhd19mdW5jdGlvbjsKKworICAgICAg
ICAjIEZpbmQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGZpbGUuCisgICAgICAgIG15ICRzb3Vy
Y2VGaWxlSGFuZGxlID0gJGRlbGVnYXRlSGFzaFJlZi0+e29wZW5GaWxlfSgkZmlsZSk7CisgICAg
ICAgIG5leHQgdW5sZXNzICRzb3VyY2VGaWxlSGFuZGxlOworICAgICAgICBteSBAYWZ0ZXJDaGFu
Z2VGdW5jdGlvblJhbmdlcyA9IGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcygkc291cmNlRmlsZUhh
bmRsZSwgJGZpbGUpOworICAgICAgICBjbG9zZSgkc291cmNlRmlsZUhhbmRsZSk7CisKKyAgICAg
ICAgIyBGaW5kIG1vZGlmaWVkIGZ1bmN0aW9ucyBpbiB0aGUgZmlsZS4KKyAgICAgICAgaWYgKCRs
aW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkeyRmaWxlfSkgeworICAgICAgICAgICAgbXkgQGNoYW5n
ZV9yYW5nZXMgPSAoQHskbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmlsZX19LCBbXSk7Cisg
ICAgICAgICAgICBteSBAZnVuY3Rpb25zID0gY29tcHV0ZU1vZGlmaWVkRnVuY3Rpb25zKCRmaWxl
LCBcQGNoYW5nZV9yYW5nZXMsIFxAYWZ0ZXJDaGFuZ2VGdW5jdGlvblJhbmdlcyk7CisKKyAgICAg
ICAgICAgICMgRm9ybWF0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucy4KKyAgICAgICAgICAgIGlmIChA
ZnVuY3Rpb25zKSB7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gPSAi
IiBpZiAhZGVmaW5lZCAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfTsKKyAgICAgICAgICAgICAgICAk
ZnVuY3Rpb25MaXN0cy0+eyRmaWxlfSAuPSAiXG4gICAgICAgICgiIC4gam9pbigiKTpcbiAgICAg
ICAgKCIsIEBmdW5jdGlvbnMpIC4gIik6IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICAjIEZpbmQgdGhlIGRlbGV0ZWQgZnVuY3Rpb25zIGluIHRoZSBvcmlnaW5hbCBmaWxlLgor
ICAgICAgICBpZiAoJGxpbmVfcmFuZ2VzX2JlZm9yZV9jaGFuZ2VkeyRmaWxlfSkgeworICAgICAg
ICAgICAgbXkgJG9yaWdpbmFsRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hSZWYtPntvcGVuT3Jp
Z2luYWxGaWxlfSgkZmlsZSwgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlKTsKKyAg
ICAgICAgICAgIG5leHQgdW5sZXNzICRvcmlnaW5hbEZpbGVIYW5kbGU7CisgICAgICAgICAgICBt
eSBAYmVmb3JlQ2hhbmdlRnVuY3Rpb25SYW5nZXMgPSBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXMo
JG9yaWdpbmFsRmlsZUhhbmRsZSwgJGZpbGUpOworICAgICAgICAgICAgY2xvc2UoJG9yaWdpbmFs
RmlsZUhhbmRsZSk7CisKKyAgICAgICAgICAgIG15ICVleGlzdHNBZnRlckNoYW5nZSA9IG1hcCB7
ICRfLT5bMl0gPT4gMSB9IEBhZnRlckNoYW5nZUZ1bmN0aW9uUmFuZ2VzOworCisgICAgICAgICAg
ICBteSBAZnVuY3Rpb25zOworICAgICAgICAgICAgbXkgJXNhd0Z1bmN0aW9uczsKKyAgICAgICAg
ICAgIGZvciBteSAkZnVuY3Rpb25SYW5nZSAoQGJlZm9yZUNoYW5nZUZ1bmN0aW9uUmFuZ2VzKSB7
CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvblJhbmdlLT5bMl07
CisgICAgICAgICAgICAgICAgaWYgKCEkZXhpc3RzQWZ0ZXJDaGFuZ2V7JGZ1bmN0aW9uTmFtZX0g
JiYgISRzYXdGdW5jdGlvbnN7JGZ1bmN0aW9uTmFtZX0pIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25OYW1lOworICAgICAgICAgICAgICAgICAgICAkc2F3
RnVuY3Rpb25zeyRmdW5jdGlvbk5hbWV9ID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICMgRm9ybWF0IHRoZSBsaXN0IG9mIGRlbGV0ZWQgZnVuY3Rp
b25zLgorICAgICAgICAgICAgaWYgKEBmdW5jdGlvbnMpIHsKKyAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25MaXN0cy0+eyRmaWxlfSA9ICIiIGlmICFkZWZpbmVkICRmdW5jdGlvbkxpc3RzLT57JGZp
bGV9OworICAgICAgICAgICAgICAgICRmdW5jdGlvbkxpc3RzLT57JGZpbGV9IC49ICJcbiAgICAg
ICAgKCIgLiBqb2luKCIpOiBEZWxldGVkLlxuICAgICAgICAoIiwgQGZ1bmN0aW9ucykgLiAiKTog
RGVsZXRlZC4iOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitzdWIgZXh0
cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlIHsKKyAgICBteSAkc3RyaW5nID0gc2hpZnQ7CisgICAg
bXkgJGNodW5rUmFuZ2UgPSBwYXJzZUNodW5rUmFuZ2UoJHN0cmluZyk7CisgICAgaWYgKCEkY2h1
bmtSYW5nZSkgeworICAgICAgICByZXR1cm4gKC0xLCAtMSk7ICMgTWFsZm9ybWVkCisgICAgfQor
ICAgIGlmICghJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9IHx8ICEkY2h1bmtSYW5nZS0+
e25ld0xpbmVDb3VudH0pIHsKKyAgICAgICAgICMgRGVsZXRpb247IG5vIGxpbmVzIGV4aXN0IGFm
dGVyIGNoYW5nZS4KKyAgICAgICAgcmV0dXJuICgkY2h1bmtSYW5nZS0+e25ld1N0YXJ0aW5nTGlu
ZX0sICRjaHVua1JhbmdlLT57bmV3U3RhcnRpbmdMaW5lfSk7CisgICAgfQorICAgIHJldHVybiAo
JGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9LCAkY2h1bmtSYW5nZS0+e25ld1N0YXJ0aW5n
TGluZX0gKyAkY2h1bmtSYW5nZS0+e25ld0xpbmVDb3VudH0gLSAxKTsKK30KKworc3ViIGV4dHJh
Y3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UgeworICAgIG15ICRzdHJpbmcgPSBzaGlmdDsKKyAgICBt
eSAkY2h1bmtSYW5nZSA9IHBhcnNlQ2h1bmtSYW5nZSgkc3RyaW5nKTsKKyAgICBpZiAoISRjaHVu
a1JhbmdlKSB7CisgICAgICAgIHJldHVybiAoLTEsIC0xKTsgIyBNYWxmb3JtZWQKKyAgICB9Cisg
ICAgaWYgKCEkY2h1bmtSYW5nZS0+e3N0YXJ0aW5nTGluZX0gfHwgISRjaHVua1JhbmdlLT57bGlu
ZUNvdW50fSkgeworICAgICAgICAjIEFkZGl0aW9uOyBubyBsaW5lcyBleGlzdGVkIGJlZm9yZSBj
aGFuZ2UuCisgICAgICAgIHJldHVybiAoJGNodW5rUmFuZ2UtPntzdGFydGluZ0xpbmV9LCAkY2h1
bmtSYW5nZS0+e3N0YXJ0aW5nTGluZX0pOworICAgIH0KKyAgICByZXR1cm4gKCRjaHVua1Jhbmdl
LT57c3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntzdGFydGluZ0xpbmV9ICsgJGNodW5rUmFu
Z2UtPntsaW5lQ291bnR9IC0gMSk7Cit9CisKK3N1YiBhdHRyaWJ1dGVDb21tYW5kIHsKKyAgICBt
eSAoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZSwgJGF0dHIpID0gQF87CisKKyAgICBteSAkcmVzdWx0
OworICAgIGlmIChpc1NWTigpKSB7CisgICAgICAgIG15ICRkZXZOdWxsID0gRmlsZTo6U3BlYy0+
ZGV2bnVsbCgpOworICAgICAgICBteSAkZm91bmRBdHRyaWJ1dGUgPSAwOworICAgICAgICBteSAk
c3ViUGF0aCA9ICIuIjsKKyAgICAgICAgbXkgKEBkaXJlY3RvcnlQYXJ0cykgPSBGaWxlOjpTcGVj
LT5zcGxpdGRpcigkZmlsZSk7CisgICAgICAgIGZvcmVhY2ggbXkgJHBhcnQgKEBkaXJlY3RvcnlQ
YXJ0cykgeworICAgICAgICAgICAgaWYgKCRwYXJ0IGVxICIuIikgeworICAgICAgICAgICAgICAg
IG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkc3ViUGF0aCA9IEZpbGU6OlNwZWMt
PmpvaW4oJHN1YlBhdGgsICRwYXJ0KTsKKyAgICAgICAgICAgICRzdWJQYXRoID1+IHMvXlwuXC8v
LzsKKyAgICAgICAgICAgIGlmICgkZm91bmRBdHRyaWJ1dGUgfHwgZXhpc3RzICRhdHRyaWJ1dGVD
YWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gJiYgJGF0dHJpYnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQ
YXRofSBlcSAiMSIpIHsKKyAgICAgICAgICAgICAgICAkYXR0cmlidXRlQ2FjaGUtPnskYXR0cn17
JHN1YlBhdGh9ID0gIjEiOworICAgICAgICAgICAgICAgICRmb3VuZEF0dHJpYnV0ZSA9IDE7Cisg
ICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15ICRjb21t
YW5kID0gU1ZOIC4gIiBwcm9wZ2V0ICRhdHRyICckc3ViUGF0aCciOworICAgICAgICAgICAgbXkg
JGF0dHJpYiA9ICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gfHwgYCRjb21tYW5k
IDI+ICRkZXZOdWxsYDsKKyAgICAgICAgICAgIGNob21wICRhdHRyaWI7CisgICAgICAgICAgICBp
ZiAoJGF0dHJpYiBlcSAiMSIpIHsKKyAgICAgICAgICAgICAgICAkZm91bmRBdHRyaWJ1dGUgPSAx
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgJGF0dHJpYnV0ZUNhY2hlLT57JGF0dHJ9eyRz
dWJQYXRofSA9ICRhdHRyaWIgfHwgIjAiOworICAgICAgICB9CisgICAgICAgICRyZXN1bHQgPSAk
YXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JGZpbGV9OworICAgIH0gZWxzaWYgKGlzR2l0KCkpIHsK
KyAgICAgICAgbXkgJGNvbW1hbmQgPSBHSVQgLiAiIGNoZWNrLWF0dHIgJGF0dHIgLS0gJyRmaWxl
JyI7CisgICAgICAgICRyZXN1bHQgPSBgJGNvbW1hbmRgOworICAgICAgICBjaG9tcCAkcmVzdWx0
OworICAgICAgICAkcmVzdWx0ID1+IHMvLipcVyhcdykvJDEvOworICAgIH0KKworICAgICRyZXN1
bHQgPX4gcy9cRC8vZzsKKyAgICByZXR1cm4gaW50KCRyZXN1bHQgfHwgMCk7Cit9CisKK3N1YiBm
ZXRjaEJ1Z0Rlc2NyaXB0aW9uRnJvbUJ1Z1hNTERhdGEgeworICAgIG15ICgkYnVnVVJMLCAkYnVn
TnVtYmVyLCAkYnVnWE1MRGF0YSkgPSBAXzsKKworICAgIGlmICgkYnVnWE1MRGF0YSAhfiAvPHNo
b3J0X2Rlc2M+KC4qKTxcL3Nob3J0X2Rlc2M+LykgeworICAgICAgICBwcmludCBTVERFUlIgIiAg
QnVnICRidWdOdW1iZXIgaGFzIG5vIGJ1ZyBkZXNjcmlwdGlvbi4gTWF5YmUgeW91IHNldCB3cm9u
ZyBidWcgSUQ/XG4iOworICAgICAgICBwcmludCBTVERFUlIgIiAgVGhlIGJ1ZyBVUkw6ICRidWdV
UkxcbiI7CisgICAgICAgIGV4aXQgMTsKKyAgICB9CisKKyAgICBteSAkYnVnRGVzY3JpcHRpb24g
PSBkZWNvZGVFbnRpdGllcygkMSk7CisgICAgcHJpbnQgU1RERVJSICIgIERlc2NyaXB0aW9uIGZy
b20gYnVnICRidWdOdW1iZXI6XG4gICAgXCIkYnVnRGVzY3JpcHRpb25cIi5cbiI7CisgICAgcmV0
dXJuICRidWdEZXNjcmlwdGlvbjsKK30KKworc3ViIGZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0
YSB7CisgICAgbXkgKCRidWdOdW1iZXIsICRidWdYTUxEYXRhKSA9IEBfOworCisgICAgcmV0dXJu
ICIiIGlmICRidWdYTUxEYXRhICF+IG18PHRoZXRleHQ+XHMqKCgmbHQ7KT9yZGFyOi8vKHByb2Js
ZW0vKT9cZCsoJmd0Oyk/KXw7CisKKyAgICBteSAkYnVnUmFkYXJVUkwgPSBkZWNvZGVFbnRpdGll
cygkMSk7CisgICAgcHJpbnQgU1RERVJSICIgIFJhZGFyIFVSTCBmcm9tIGJ1ZyAkYnVnTnVtYmVy
OlxuICAgIFwiJGJ1Z1JhZGFyVVJMXCIuXG4iOworICAgIHJldHVybiAkYnVnUmFkYXJVUkw7Cit9
CisKK3N1YiBjb21wdXRlTW9kaWZpZWRGdW5jdGlvbnMgeworICAgIG15ICgkZmlsZSwgJGNoYW5n
ZWRMaW5lUmFuZ2VzLCAkZnVuY3Rpb25SYW5nZXMpID0gQF87CisKKyAgICBteSAlc2F3RnVuY3Rp
b247CisKKyAgICAjIEZpbmQgYWxsIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMuCisgICAgbXkgQGZ1
bmN0aW9uczsKKyAgICBteSBAY2hhbmdlX3JhbmdlcyA9IEB7JGNoYW5nZWRMaW5lUmFuZ2VzfTsK
KyAgICBteSBAY2hhbmdlX3JhbmdlID0gKDAsIDApOworICAgIEZVTkNUSU9OOiBmb3JlYWNoIG15
ICRmdW5jdGlvbl9yYW5nZV9yZWYgKEB7JGZ1bmN0aW9uUmFuZ2VzfSkgeworICAgICAgICBteSBA
ZnVuY3Rpb25fcmFuZ2UgPSBAeyRmdW5jdGlvbl9yYW5nZV9yZWZ9OworCisgICAgICAgICMgRklY
TUU6IFRoaXMgaXMgYSBoYWNrLiBJZiB0aGUgZnVuY3Rpb24gbmFtZSBpcyBlbXB0eSwgc2tpcCBp
dC4KKyAgICAgICAgIyBUaGUgY3BwLCBweXRob24sIGphdmFzY3JpcHQsIHBlcmwsIGNzcyBhbmQg
amF2YSBwYXJzZXJzCisgICAgICAgICMgYXJlIG5vdCBwZXJmZWN0bHkgaW1wbGVtZW50ZWQgYW5k
IHNvbWV0aW1lcyBmdW5jdGlvbiBuYW1lcyBjYW5ub3QgYmUgcmV0cmlldmVkCisgICAgICAgICMg
Y29ycmVjdGx5LiBBcyB5b3UgY2FuIHNlZSBpbiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfWFhY
WCgpLCB0aG9zZSBwYXJzZXJzCisgICAgICAgICMgYXJlIG5vdCBpbnRlbmRlZCB0byBpbXBsZW1l
bnQgcmVhbCBwYXJzZXJzIGJ1dCBpbnRlbmRlZCB0byBqdXN0IHJldHJpZXZlIGZ1bmN0aW9uIG5h
bWVzCisgICAgICAgICMgZm9yIG1vc3QgcHJhY3RpY2FsIHN5bnRheGVzLgorICAgICAgICBuZXh0
IHVubGVzcyAkZnVuY3Rpb25fcmFuZ2VbMl07CisKKyAgICAgICAgIyBBZHZhbmNlIHRvIHN1Y2Nl
c3NpdmUgY2hhbmdlIHJhbmdlcy4KKyAgICAgICAgZm9yICg7OyBAY2hhbmdlX3JhbmdlID0gQHtz
aGlmdCBAY2hhbmdlX3Jhbmdlc30pIHsKKyAgICAgICAgICAgIGxhc3QgRlVOQ1RJT04gdW5sZXNz
IEBjaGFuZ2VfcmFuZ2U7CisKKyAgICAgICAgICAgICMgSWYgcGFzdCB0aGlzIGZ1bmN0aW9uLCBt
b3ZlIG9uIHRvIHRoZSBuZXh0IG9uZS4KKyAgICAgICAgICAgIG5leHQgRlVOQ1RJT04gaWYgJGNo
YW5nZV9yYW5nZVswXSA+ICRmdW5jdGlvbl9yYW5nZVsxXTsKKworICAgICAgICAgICAgIyBJZiBh
biBvdmVybGFwIHdpdGggdGhpcyBmdW5jdGlvbiByYW5nZSwgcmVjb3JkIHRoZSBmdW5jdGlvbiBu
YW1lLgorICAgICAgICAgICAgaWYgKCRjaGFuZ2VfcmFuZ2VbMV0gPj0gJGZ1bmN0aW9uX3Jhbmdl
WzBdCisgICAgICAgICAgICAgICAgYW5kICRjaGFuZ2VfcmFuZ2VbMF0gPD0gJGZ1bmN0aW9uX3Jh
bmdlWzFdKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkc2F3RnVuY3Rpb257JGZ1bmN0aW9uX3Jh
bmdlWzJdfSkgeworICAgICAgICAgICAgICAgICAgICAkc2F3RnVuY3Rpb257JGZ1bmN0aW9uX3Jh
bmdlWzJdfSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2ggQGZ1bmN0aW9ucywgJGZ1bmN0
aW9uX3JhbmdlWzJdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXh0IEZV
TkNUSU9OOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEBm
dW5jdGlvbnM7Cit9CisKK3N1YiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXMgeworICAgIG15ICgk
ZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87CisKKyAgICAjIFRyeSB0byBkZXRlcm1pbmUg
dGhlIHNvdXJjZSBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgZmlsZSBleHRlbnNpb24uCisKKyAgICBy
ZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJGZpbGVfaGFuZGxlLCAkZmls
ZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLihjfGNwcHxtfG1tfGgpJC87CisgICAgcmV0dXJu
IGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YSgkZmlsZV9oYW5kbGUsICRmaWxlX25h
bWUpIGlmICRmaWxlX25hbWUgPX4gL1wuamF2YSQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25f
bGluZV9yYW5nZXNfZm9yX2phdmFzY3JpcHQoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAk
ZmlsZV9uYW1lID1+IC9cLmpzJC87CisgICAgcmV0dXJuIGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdl
c19mb3JfY3NzKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC5j
c3MkLzsKKyAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9wZXJsKCRmaWxl
X2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC5wW2xtXSQvOworICAgIHJl
dHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhvbigkZmlsZV9oYW5kbGUsICRm
aWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wucHkkLyBvciAkZmlsZV9uYW1lID1+IC9tYXN0
ZXJcLmNmZyQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3N3aWZ0
KCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC5zd2lmdCQvOwor
CisgICAgIyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2UgbGFuZ3VhZ2UgYmFzZWQgb24gdGhl
IHNjcmlwdCBpbnRlcnByZXRlci4KKworICAgIG15ICRmaXJzdF9saW5lID0gPCRmaWxlX2hhbmRs
ZT47CisgICAgc2VlaygkZmlsZV9oYW5kbGUsIDAsIDApOworCisgICAgcmV0dXJuICgpIHVubGVz
cyAkZmlyc3RfbGluZSA9fiBtfF4jISg/Oi91c3IvYmluL2VudlxzKyk/KFxTKyl8OworICAgIG15
ICRpbnRlcnByZXRlciA9ICQxOworCisgICAgcmV0dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdl
c19mb3JfcGVybCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRpbnRlcnByZXRlciA9fiAv
cGVybCQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhvbigk
ZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRpbnRlcnByZXRlciA9fiAvcHl0aG9uJC87CisK
KyAgICByZXR1cm4gKCk7Cit9CisKKyMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxpbmUg
cmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgQyBmdW5jdGlvbnMuCisjIEEgZnVu
Y3Rpb24gbmFtZSBpcyB0aGUgbGFzdCB3b3JkIGJlZm9yZSBhbiBvcGVuIHBhcmVudGhlc2lzIGJl
Zm9yZSB0aGUgb3V0ZXIKKyMgbGV2ZWwgb3BlbiBicmFjZS4gQSBmdW5jdGlvbiBzdGFydHMgYXQg
dGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgbGFzdCBjbG9zZQorIyBicmFjZSBvciBzZW1p
Y29sb24gYmVmb3JlIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBlbmRzIGF0IHRoZSBjbG9zZSBicmFj
ZS4KKyMgQ29tbWVudCBoYW5kbGluZyBpcyBzaW1wbGUtbWluZGVkIGJ1dCB3aWxsIHdvcmsgZm9y
IGFsbCBidXQgcGF0aG9sb2dpY2FsIGNhc2VzLgorIworIyBSZXN1bHQgaXMgYSBsaXN0IG9mIHRy
aXBsZXM6IFsgc3RhcnRfbGluZSwgZW5kX2xpbmUsIGZ1bmN0aW9uX25hbWUgXS4KKworc3ViIGdl
dF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfY3BwIHsKKyAgICBteSAoJGZpbGVfaGFuZGxlLCAk
ZmlsZV9uYW1lKSA9IEBfOworCisgICAgbXkgQHJhbmdlczsKKworICAgIG15ICRpbl9jb21tZW50
ID0gMDsKKyAgICBteSAkaW5fbWFjcm8gPSAwOworICAgIG15ICRpbl9tZXRob2RfZGVjbGFyYXRp
b24gPSAwOworICAgIG15ICRpbl9wYXJlbnRoZXNlcyA9IDA7CisgICAgbXkgJHF1b3RhdGlvbl9t
YXJrOworICAgIG15ICRpbl9icmFjZXMgPSAwOworICAgIG15ICRpbl90b3BsZXZlbF9hcnJheV9i
cmFjZSA9IDA7CisgICAgbXkgJGJyYWNlX3N0YXJ0ID0gMDsKKyAgICBteSAkYnJhY2VfZW5kID0g
MDsKKyAgICBteSAkbmFtZXNwYWNlX3N0YXJ0ID0gLTE7CisgICAgbXkgJHNraXBfdGlsX2JyYWNl
X29yX3NlbWljb2xvbiA9IDA7CisgICAgbXkgJGVxdWFsX29ic2VydmVkID0gMDsKKworICAgIG15
ICR3b3JkID0gIiI7CisgICAgbXkgJGludGVyZmFjZV9uYW1lID0gIiI7CisKKyAgICBteSAkcG90
ZW50aWFsX21ldGhvZF9jaGFyID0gIiI7CisgICAgbXkgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9
ICIiOworCisgICAgbXkgJHBvdGVudGlhbF9zdGFydCA9IDA7CisgICAgbXkgJHBvdGVudGlhbF9u
YW1lID0gIiI7CisKKyAgICBteSAkc3RhcnQgPSAwOworICAgIG15ICRuYW1lID0gIiI7CisKKyAg
ICBteSAkbmV4dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSA9IDA7CisgICAgbXkgJHBvdGVudGlh
bF9uYW1lc3BhY2UgPSAiIjsKKyAgICBteSBAbmFtZXNwYWNlczsKKyAgICBteSBAYWxsX25hbWVz
cGFjZXM7CisKKyAgICB3aGlsZSAoPCRmaWxlX2hhbmRsZT4pIHsKKyAgICAgICAgIyBIYW5kbGUg
Y29udGludWVkIHF1b3RlZCBzdHJpbmcuCisgICAgICAgIGlmICgkcXVvdGF0aW9uX21hcmspIHsK
KyAgICAgICAgICAgIGlmICghcy0oW15cXF18XFwuKSokcXVvdGF0aW9uX21hcmstLSkgeworICAg
ICAgICAgICAgICAgIGlmICghbS1cXCQtKSB7CisgICAgICAgICAgICAgICAgICAgIHdhcm4gIm1p
c21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKKyAgICAgICAgICAg
ICAgICAgICAgdW5kZWYgJHF1b3RhdGlvbl9tYXJrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdW5kZWYgJHF1b3Rh
dGlvbl9tYXJrOworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG11bHRp
LWxpbmUgY29tbWVudC4KKyAgICAgICAgaWYgKCRpbl9jb21tZW50KSB7CisgICAgICAgICAgICBu
ZXh0IHVubGVzcyBzLS4qXCovLS07CisgICAgICAgICAgICAkaW5fY29tbWVudCA9IDA7CisgICAg
ICAgIH0KKworICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgbWFjcm8uCisgICAgICAgIGlmICgk
aW5fbWFjcm8pIHsKKyAgICAgICAgICAgICRpbl9tYWNybyA9IDAgdW5sZXNzIC9cXCQvOworICAg
ICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCisgICAgICAgICMgSGFuZGxlIHN0YXJ0IG9mIG1h
Y3JvIChvciBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSkuCisgICAgICAgIGlmICgvXlxzKlwj
LykgeworICAgICAgICAgICAgJGluX21hY3JvID0gMSBpZiAvXihbXlxcXXxcXC4pKlxcJC87Cisg
ICAgICAgICAgICBuZXh0OworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29tbWVudHMg
YW5kIHF1b3RlZCB0ZXh0LgorICAgICAgICB3aGlsZSAobS0oL1wqfC8vfFwnfFwiKS0pIHsgIyBc
JyBhbmQgXCIga2VlcCBlbWFjcyBwZXJsIG1vZGUgaGFwcHkKKyAgICAgICAgICAgIG15ICRtYXRj
aCA9ICQxOworICAgICAgICAgICAgaWYgKCRtYXRjaCBlcSAiLyoiKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFzLS9cKi4qP1wqLy0tKSB7CisgICAgICAgICAgICAgICAgICAgIHMtL1wqLiotLTsK
KyAgICAgICAgICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAxOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzaWYgKCRtYXRjaCBlcSAiLy8iKSB7CisgICAgICAgICAgICAgICAg
cy0vLy4qLS07CisgICAgICAgICAgICB9IGVsc2UgeyAjICcgb3IgIgorICAgICAgICAgICAgICAg
IGlmICghcy0kbWF0Y2goW15cXF18XFwuKSo/JG1hdGNoLS0pIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFzLSRtYXRjaC4qXFwkLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4g
Im1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHMtJG1hdGNoLiotLTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRxdW90YXRpb25fbWFyayA9ICRtYXRjaDsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisKKyAgICAgICAgIyBjb250aW51ZWQgbWV0aG9kIGRlY2xhcmF0aW9uCisgICAg
ICAgIGlmICgkaW5fbWV0aG9kX2RlY2xhcmF0aW9uKSB7CisgICAgICAgICAgICAgIG15ICRvcmln
aW5hbCA9ICRfOworICAgICAgICAgICAgICBteSAkbWV0aG9kX2NvbnQgPSAkXzsKKworICAgICAg
ICAgICAgICBjaG9tcCAkbWV0aG9kX2NvbnQ7CisgICAgICAgICAgICAgICRtZXRob2RfY29udCA9
fiBzL1s7XHtdLiovLzsKKyAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICIk
e3BvdGVudGlhbF9tZXRob2Rfc3BlY30gJHttZXRob2RfY29udH0iOworCisgICAgICAgICAgICAg
ICRfID0gJG9yaWdpbmFsOworICAgICAgICAgICAgICBpZiAoLzsvKSB7CisgICAgICAgICAgICAg
ICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxf
bWV0aG9kX3NwZWMgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX2No
YXIgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOwor
ICAgICAgICAgICAgICAgICAgcy9eW147XHtdKi8vOworICAgICAgICAgICAgICB9IGVsc2lmICgv
ey8pIHsKKyAgICAgICAgICAgICAgICAgIG15ICRzZWxlY3RvciA9IG1ldGhvZF9kZWNsX3RvX3Nl
bGVjdG9yICgkcG90ZW50aWFsX21ldGhvZF9zcGVjKTsKKyAgICAgICAgICAgICAgICAgICRwb3Rl
bnRpYWxfbmFtZSA9ICIke3BvdGVudGlhbF9tZXRob2RfY2hhcn1cWyR7aW50ZXJmYWNlX25hbWV9
ICR7c2VsZWN0b3J9XF0iOworCisgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9z
cGVjID0gIiI7CisgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9jaGFyID0gIiI7
CisgICAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKKworICAgICAg
ICAgICAgICAgICAgJF8gPSAkb3JpZ2luYWw7CisgICAgICAgICAgICAgICAgICBzL15bXjt7XSov
LzsKKyAgICAgICAgICAgICAgfSBlbHNpZiAoL1xAZW5kLykgeworICAgICAgICAgICAgICAgICAg
JGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7CisgICAgICAgICAgICAgICAgICAkaW50ZXJmYWNl
X25hbWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOworICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKworICAgICAgICAjIHN0YXJ0IG9mIG1ldGhvZCBkZWNsYXJhdGlvbgorICAg
ICAgICBpZiAoKG15ICRtZXRob2RfY2hhciwgbXkgJG1ldGhvZF9zcGVjKSA9IG0mXihbLStdKShb
XjAtOTtdW147XSopOz8kJikgeworICAgICAgICAgICAgbXkgJG9yaWdpbmFsID0gJF87CisKKyAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlX25hbWUpIHsKKyAgICAgICAgICAgICAgICBjaG9tcCAk
bWV0aG9kX3NwZWM7CisgICAgICAgICAgICAgICAgJG1ldGhvZF9zcGVjID1+IHMvXHsuKi8vOwor
CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2RfY2hhciA9ICRtZXRob2RfY2hhcjsK
KyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9zcGVjID0gJG1ldGhvZF9zcGVjOwor
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKKyAgICAgICAgICAgICAgICAk
aW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgd2FybiAiZGVjbGFyaW5nIGEgbWV0aG9kIGJ1dCBkb24ndCBoYXZlIGludGVyZmFj
ZSBvbiBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAkXyA9ICRvcmlnaW5hbDsKKyAgICAgICAgICAgIGlmICgvXHsvKSB7CisgICAgICAgICAgICAg
IG15ICRzZWxlY3RvciA9IG1ldGhvZF9kZWNsX3RvX3NlbGVjdG9yICgkcG90ZW50aWFsX21ldGhv
ZF9zcGVjKTsKKyAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiR7cG90ZW50aWFsX21l
dGhvZF9jaGFyfVxbJHtpbnRlcmZhY2VfbmFtZX0gJHtzZWxlY3Rvcn1cXSI7CisKKyAgICAgICAg
ICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICIiOworICAgICAgICAgICAgICAkcG90ZW50
aWFsX21ldGhvZF9jaGFyID0gIiI7CisgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVjbGFyYXRp
b24gPSAwOworICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKKyAgICAgICAgICAgICAgcy9e
W157XSovLzsKKyAgICAgICAgICAgIH0gZWxzaWYgKC9cQGVuZC8pIHsKKyAgICAgICAgICAgICAg
JGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7CisgICAgICAgICAgICAgICRpbnRlcmZhY2VfbmFt
ZSA9ICIiOworICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworCisg
ICAgICAgICMgRmluZCBmdW5jdGlvbiwgaW50ZXJmYWNlIGFuZCBtZXRob2QgbmFtZXMuCisgICAg
ICAgIHdoaWxlIChtJigoPzpbWzp3b3JkOl1dKzo6KSpvcGVyYXRvcig/OlsgXHRdKlwoXCl8W14o
KV0qKXxbWzp3b3JkOl08Pjp+XSt8Wygpe306Oz1dKXxcQCg/OmltcGxlbWVudGF0aW9ufGludGVy
ZmFjZXxwcm90b2NvbClccysoXHcrKVtee10qJmcpIHsKKyAgICAgICAgICAgICMgU2tpcCBhbiBh
cnJheSBkZWZpbml0aW9uIGF0IHRoZSB0b3AgbGV2ZWwuCisgICAgICAgICAgICAjIGUuZy4gc3Rh
dGljIGludCBhcnJbXSA9IHsgMSwgMiwgMyB9OworICAgICAgICAgICAgaWYgKCQxKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCQxIGVxICI9IiBhbmQgISRpbl9wYXJlbnRoZXNlcyBhbmQgISRpbl9i
cmFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgJGVxdWFsX29ic2VydmVkID0gMTsKKyAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkMSBlcSAieyIgYW5kICRlcXVhbF9vYnNlcnZlZCkgeworICAg
ICAgICAgICAgICAgICAgICAjIFRoaXMgJ3snIGlzIHRoZSBiZWdpbm5pbmcgb2YgYW4gYXJyYXkg
ZGVmaW5pdGlvbiwgbm90IHRoZSBiZWdpbm5pbmcgb2YgYSBtZXRob2QuCisgICAgICAgICAgICAg
ICAgICAgICRpbl90b3BsZXZlbF9hcnJheV9icmFjZSA9IDE7CisgICAgICAgICAgICAgICAgICAg
ICRpbl9icmFjZXMrKzsKKyAgICAgICAgICAgICAgICAgICAgJGVxdWFsX29ic2VydmVkID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkMSAh
fiAvWyBcdF0vKSB7CisgICAgICAgICAgICAgICAgICAgICRlcXVhbF9vYnNlcnZlZCA9IDA7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIGludGVyZmFj
ZSBuYW1lCisgICAgICAgICAgICBpZiAoJDIpIHsKKyAgICAgICAgICAgICAgICAkaW50ZXJmYWNl
X25hbWUgPSAkMjsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCisgICAgICAgICAgICBpZiAoJDEgZXEgIigiKSB7
CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQgdW5sZXNzICRpbl9wYXJl
bnRoZXNlcyB8fCAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uIHx8IGdyZXAgeyAkd29yZCBl
cSAkXyB9ICgiQ0ZfRU5VTSIsICJDRl9PUFRJT05TIiwgIk5TX0VOVU0iLCAiTlNfT1BUSU9OUyIp
OworICAgICAgICAgICAgICAgICRpbl9wYXJlbnRoZXNlcysrOworICAgICAgICAgICAgICAgIG5l
eHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQ2xvc2UgcGFyZW50aGVzaXMuCisg
ICAgICAgICAgICBpZiAoJDEgZXEgIikiKSB7CisgICAgICAgICAgICAgICAgJGluX3BhcmVudGhl
c2VzLS07CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCQxIGVxICJjb25zdCIgYW5kICEkaW5fcGFyZW50aGVzZXMpIHsKKyAgICAgICAgICAg
ICAgICAkcG90ZW50aWFsX25hbWUgLj0gIiBjb25zdCI7CisgICAgICAgICAgICAgICAgbmV4dDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCQxIGVxICJ2b2xhdGlsZSIgYW5kICEk
aW5fcGFyZW50aGVzZXMpIHsKKyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgLj0gIiB2
b2xhdGlsZSI7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgIyBDKysgYXV0byBmdW5jdGlvbigpIC0+IHR5cGUKKyAgICAgICAgICAgIGlmICgkMSBl
cSAiPiIpIHsKKyAgICAgICAgICAgICAgICAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uID0g
MSB1bmxlc3MgKCRpbl9wYXJlbnRoZXNlcyB8fCAkaW5fYnJhY2VzKTsKKyAgICAgICAgICAgICAg
ICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIEMrKyBjb25zdHJ1Y3RvciBp
bml0aWFsaXplcnMKKyAgICAgICAgICAgIGlmICgkMSBlcSAiOiIpIHsKKyAgICAgICAgICAgICAg
ICAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uID0gMSB1bmxlc3MgKCRpbl9wYXJlbnRoZXNl
cyB8fCAkaW5fYnJhY2VzKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBPcGVuIGJy
YWNlLgorICAgICAgICAgICAgaWYgKCQxIGVxICJ7IikgeworICAgICAgICAgICAgICAgICRza2lw
X3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAwOworCisgICAgICAgICAgICAgICAgaWYgKCEkaW5f
YnJhY2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkbmFtZXNwYWNlX3N0YXJ0ID49IDAg
YW5kICRuYW1lc3BhY2Vfc3RhcnQgPCAkcG90ZW50aWFsX3N0YXJ0KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJG5hbWVzcGFjZV9zdGFydCAuICIiLCAkcG90ZW50
aWFsX3N0YXJ0IC0gMSwgJG5hbWUgXTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgICAgIGlmICgkcG90ZW50aWFsX25hbWVzcGFjZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcHVzaCBAbmFtZXNwYWNlcywgJHBvdGVudGlhbF9uYW1lc3BhY2U7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoIEBhbGxfbmFtZXNwYWNlcywgJHBvdGVudGlhbF9uYW1lc3Bh
Y2U7CisgICAgICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVzcGFjZSA9ICIiOwor
ICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkbmFtZXNwYWNlc1stMV07CisgICAgICAg
ICAgICAgICAgICAgICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAg
ICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgICMgUHJvbW90ZSBwb3RlbnRpYWwgbmFtZSB0byByZWFsIGZ1bmN0aW9uIG5hbWUgYXQg
dGhlCisgICAgICAgICAgICAgICAgICAgICMgc3RhcnQgb2YgdGhlIG91dGVyIGxldmVsIHNldCBv
ZiBicmFjZXMgKGZ1bmN0aW9uIGJvZHk/KS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCRwb3Rl
bnRpYWxfc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRzdGFydCA9ICRwb3RlbnRp
YWxfc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRwb3RlbnRpYWxfbmFt
ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChAbmFtZXNwYWNlcyAmJiAkbmFtZSAmJiAo
bGVuZ3RoKCRuYW1lKSA8IDIgfHwgc3Vic3RyKCRuYW1lLDEsMSkgbmUgIlsiKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gam9pbiAoJzo6JywgQG5hbWVzcGFjZXMsICRu
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVjbGFyYXRp
b24gPSAwOworCisgICAgICAgICAgICAgICAgJGJyYWNlX3N0YXJ0ID0gJC4gaWYgKCEkaW5fYnJh
Y2VzKTsKKyAgICAgICAgICAgICAgICAkaW5fYnJhY2VzKys7CisgICAgICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBDbG9zZSBicmFjZS4KKyAgICAgICAg
ICAgIGlmICgkMSBlcSAifSIpIHsKKyAgICAgICAgICAgICAgICBpZiAoISRpbl9icmFjZXMgJiYg
QG5hbWVzcGFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lc3BhY2Vfc3RhcnQg
Pj0gMCBhbmQgJG5hbWVzcGFjZV9zdGFydCA8ICQuKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoIEByYW5nZXMsIFsgJG5hbWVzcGFjZV9zdGFydCAuICIiLCAkLiAtIDEsICRuYW1lIF07
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBwb3AgQG5hbWVz
cGFjZXM7CisgICAgICAgICAgICAgICAgICAgIGlmIChAbmFtZXNwYWNlcykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJG5hbWUgPSAkbmFtZXNwYWNlc1stMV07CisgICAgICAgICAgICAgICAg
ICAgICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAiIjsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICRpbl9icmFjZXMtLTsKKyAgICAgICAgICAgICAgICAkYnJhY2VfZW5kID0gJC4g
aWYgKCEkaW5fYnJhY2VzKTsKKworICAgICAgICAgICAgICAgICMgRW5kIG9mIGFuIG91dGVyIGxl
dmVsIHNldCBvZiBicmFjZXMuCisgICAgICAgICAgICAgICAgIyBUaGlzIGNvdWxkIGJlIGEgZnVu
Y3Rpb24gYm9keS4KKyAgICAgICAgICAgICAgICBpZiAoISRpbl9icmFjZXMgYW5kICRuYW1lKSB7
CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgZW5kIG9mIGFuIGFycmF5IGRlZmlu
aXRpb24gYXQgdGhlIHRvcCBsZXZlbCwgbm90IHRoZSBlbmQgb2YgYSBtZXRob2QuCisgICAgICAg
ICAgICAgICAgICAgIGlmICgkaW5fdG9wbGV2ZWxfYXJyYXlfYnJhY2UpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICRpbl90b3BsZXZlbF9hcnJheV9icmFjZSA9IDA7CisgICAgICAgICAgICAg
ICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaCBAcmFuZ2VzLCBbICRzdGFydCwgJC4sICRuYW1lIF07CisgICAgICAgICAgICAg
ICAgICAgIGlmIChAbmFtZXNwYWNlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUg
PSAkbmFtZXNwYWNlc1stMV07CisgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZXNwYWNlX3N0
YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgJG5hbWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3Bh
Y2Vfc3RhcnQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAwOworICAgICAgICAgICAgICAg
ICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICMgU2VtaWNvbG9uLgorICAgICAgICAgICAgaWYgKCQxIGVxICI7
IikgeworICAgICAgICAgICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAwOwor
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAwOworICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVjbGFyYXRp
b24gPSAwOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICMgSWdub3JlICJjb25zdCIgbWV0aG9kIHF1YWxpZmllci4KKyAgICAgICAgICAgIGlmICgk
MSBlcSAiY29uc3QiKSB7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgaWYgKCQxIGVxICJuYW1lc3BhY2UiIHx8ICQxIGVxICJjbGFzcyIgfHwgJDEg
ZXEgInN0cnVjdCIpIHsKKyAgICAgICAgICAgICAgICAkbmV4dF93b3JkX2NvdWxkX2JlX25hbWVz
cGFjZSA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgIyBXb3JkLgorICAgICAgICAgICAgJHdvcmQgPSAkMTsKKyAgICAgICAgICAgIGlmICgh
JHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbikgeworICAgICAgICAgICAgICAgIGlmICgkbmV4
dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSkgeworICAgICAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX25hbWVzcGFjZSA9ICR3b3JkOworICAgICAgICAgICAgICAgICAgICAkbmV4dF93b3JkX2Nv
dWxkX2JlX25hbWVzcGFjZSA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHBvdGVudGlh
bF9uYW1lc3BhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lc3BhY2Ug
PSAiIjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoISRpbl9wYXJl
bnRoZXNlcykgeworICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGlmICghJHBvdGVudGlhbF9zdGFydCkgeworICAgICAgICAgICAg
ICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47CisgICAgICAgICAgICAgICAgICAgICRwb3Rl
bnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIHdhcm4gIm1pc3NpbmcgY2xvc2UgYnJhY2VzIGluICRmaWxlX25h
bWUgKHByb2JhYmxlIHN0YXJ0IGF0ICRicmFjZV9zdGFydClcbiIgaWYgKCRpbl9icmFjZXMgPiAw
KTsKKyAgICB3YXJuICJ0b28gbWFueSBjbG9zZSBicmFjZXMgaW4gJGZpbGVfbmFtZSAocHJvYmFi
bGUgc3RhcnQgYXQgJGJyYWNlX2VuZClcbiIgaWYgKCRpbl9icmFjZXMgPCAwKTsKKworICAgIHdh
cm4gIm1pc21hdGNoZWQgcGFyZW50aGVzZXMgaW4gJGZpbGVfbmFtZVxuIiBpZiAkaW5fcGFyZW50
aGVzZXM7CisKKyAgICByZXR1cm4gZGVsZXRlX25hbWVzcGFjZXNfZnJvbV9yYW5nZXNfZm9yX2Nw
cChcQHJhbmdlcywgXEBhbGxfbmFtZXNwYWNlcyk7Cit9CisKKworIyBUYWtlIGluIHJlZmVyZW5j
ZXMgdG8gYW4gYXJyYXkgb2YgbGluZSByYW5nZXMgZm9yIEMgZnVuY3Rpb25zIGluIGEgZ2l2ZW4g
ZmlsZQorIyBhbmQgYW4gYXJyYXkgb2YgbmFtZXNwYWNlcyBkZWNsYXJlZCBpbiB0aGF0IGZpbGUg
YW5kIHJldHVybiBhbiB1cGRhdGVkCisjIGxpc3Qgb2YgbGluZSByYW5nZXMgd2l0aCB0aGUgbmFt
ZXNwYWNlcyByZW1vdmVkLgorCitzdWIgZGVsZXRlX25hbWVzcGFjZXNfZnJvbV9yYW5nZXNfZm9y
X2NwcCB7CisgICAgbXkgKCRyYW5nZXNfcmVmLCAkbmFtZXNwYWNlc19yZWYpID0gQF87CisgICAg
cmV0dXJuIGdyZXAgeyFpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJG5hbWVzcGFjZXNfcmVmLCAk
JF9bMl0pfSBAJHJhbmdlc19yZWY7Cit9CisKKworc3ViIGlzX2Z1bmN0aW9uX2luX25hbWVzcGFj
ZSB7CisgICAgbXkgKCRuYW1lc3BhY2VzX3JlZiwgJGZ1bmN0aW9uX25hbWUpID0gQF87CisgICAg
cmV0dXJuIGdyZXAgeyRfIGVxICRmdW5jdGlvbl9uYW1lfSBAJG5hbWVzcGFjZXNfcmVmOworfQor
CisKKyMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGlu
Z3MgdGhhdCBsb29rIGxpa2UgSmF2YQorIyBjbGFzc2VzLCBpbnRlcmZhY2VzIGFuZCBtZXRob2Rz
LgorIworIyBBIGNsYXNzIG9yIGludGVyZmFjZSBuYW1lIGlzIHRoZSB3b3JkIHRoYXQgaW1tZWRp
YXRlbHkgZm9sbG93cworIyBgY2xhc3MnIG9yIGBpbnRlcmZhY2UnIHdoZW4gZm9sbG93ZWQgYnkg
YW4gb3BlbiBjdXJseSBicmFjZSBhbmQgbm90CisjIGEgc2VtaWNvbG9uLiBJdCBjYW4gYXBwZWFy
IGF0IHRoZSB0b3AgbGV2ZWwsIG9yIGluc2lkZSBhbm90aGVyIGNsYXNzCisjIG9yIGludGVyZmFj
ZSBibG9jaywgYnV0IG5vdCBpbnNpZGUgYSBmdW5jdGlvbiBibG9jaworIworIyBBIGNsYXNzIG9y
IGludGVyZmFjZSBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgZmlyc3Qg
Y2xvc2UKKyMgYnJhY2Ugb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhl
IGNsb3NlIGJyYWNlLgorIworIyBBIGZ1bmN0aW9uIG5hbWUgaXMgdGhlIGxhc3Qgd29yZCBiZWZv
cmUgYW4gb3BlbiBwYXJlbnRoZXNpcyBiZWZvcmUKKyMgYW4gb3BlbiBicmFjZSByYXRoZXIgdGhh
biBhIHNlbWljb2xvbi4gSXQgY2FuIGFwcGVhciBhdCB0b3AgbGV2ZWwgb3IKKyMgaW5zaWRlIGEg
Y2xhc3Mgb3IgaW50ZXJmYWNlIGJsb2NrLCBidXQgbm90IGluc2lkZSBhIGZ1bmN0aW9uIGJsb2Nr
LgorIworIyBBIGZ1bmN0aW9uIHN0YXJ0cyBhdCB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRo
ZSBmaXJzdCBjbG9zZQorIyBicmFjZSBvciBhZnRlciB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgZW5k
cyBhdCB0aGUgY2xvc2UgYnJhY2UuCisjCisjIENvbW1lbnQgaGFuZGxpbmcgaXMgc2ltcGxlLW1p
bmRlZCBidXQgd2lsbCB3b3JrIGZvciBhbGwgYnV0IHBhdGhvbG9naWNhbCBjYXNlcy4KKyMKKyMg
UmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBmdW5j
dGlvbl9uYW1lIF0uCisKK3N1YiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmEgewor
ICAgIG15ICgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87CisKKyAgICBteSBAY3VycmVu
dF9zY29wZXM7CisKKyAgICBteSBAcmFuZ2VzOworCisgICAgbXkgJGluX2NvbW1lbnQgPSAwOwor
ICAgIG15ICRpbl9tYWNybyA9IDA7CisgICAgbXkgJGluX3BhcmVudGhlc2VzID0gMDsKKyAgICBt
eSAkaW5fYnJhY2VzID0gMDsKKyAgICBteSAkaW5fbm9uX2Jsb2NrX2JyYWNlcyA9IDA7CisgICAg
bXkgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOworICAgIG15ICRpbl9jbGFzc19k
ZWNsYXJhdGlvbiA9IDA7CisKKyAgICBteSAkd29yZCA9ICIiOworCisgICAgbXkgJHBvdGVudGlh
bF9zdGFydCA9IDA7CisgICAgbXkgJHBvdGVudGlhbF9uYW1lID0gIiI7CisgICAgbXkgJHBvdGVu
dGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7CisKKyAgICBteSAkc3RhcnQgPSAw
OworICAgIG15ICRuYW1lID0gIiI7CisgICAgbXkgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19vcl9p
bnRlcmZhY2UgPSAwOworCisgICAgd2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7CisgICAgICAgICMg
SGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQuCisgICAgICAgIGlmICgkaW5fY29t
bWVudCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOworICAgICAgICAgICAg
JGluX2NvbW1lbnQgPSAwOworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29udGludWVk
IG1hY3JvLgorICAgICAgICBpZiAoJGluX21hY3JvKSB7CisgICAgICAgICAgICAkaW5fbWFjcm8g
PSAwIHVubGVzcyAvXFwkLzsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKworICAgICAg
ICAjIEhhbmRsZSBzdGFydCBvZiBtYWNybyAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUp
LgorICAgICAgICBpZiAoL15ccypcIy8pIHsKKyAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYg
L14oW15cXF18XFwuKSpcXCQvOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCisgICAg
ICAgICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4dC4KKyAgICAgICAgd2hpbGUgKG0t
KC9cKnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5
CisgICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKKyAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEg
Ii8qIikgeworICAgICAgICAgICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgeworICAgICAgICAg
ICAgICAgICAgICBzLS9cKi4qLS07CisgICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0g
MTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8v
IikgeworICAgICAgICAgICAgICAgIHMtLy8uKi0tOworICAgICAgICAgICAgfSBlbHNlIHsgIyAn
IG9yICIKKyAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0t
KSB7CisgICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUg
JC4gaW4gJGZpbGVfbmFtZVxuIjsKKyAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0tOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICMg
RmluZCBmdW5jdGlvbiBuYW1lcy4KKyAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fTtdKS1nKSB7
CisgICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCisgICAgICAgICAgICBpZiAoJDEgZXEg
IigiKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7CisgICAgICAgICAgICAgICAgICAg
ICRwb3RlbnRpYWxfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAwOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAkaW5fcGFyZW50aGVzZXMrKzsKKyAgICAgICAgICAgICAg
ICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lz
LgorICAgICAgICAgICAgaWYgKCQxIGVxICIpIikgeworICAgICAgICAgICAgICAgICRpbl9wYXJl
bnRoZXNlcy0tOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICMgT3BlbiBicmFjZS4KKyAgICAgICAgICAgIGlmICgkMSBlcSAieyIpIHsKKyAgICAg
ICAgICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAwOworCisgICAgICAgICAgICAgICAg
IyBQcm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFtZSBhdCB0aGUKKyAg
ICAgICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBvdXRlciBsZXZlbCBzZXQgb2YgYnJhY2VzIChm
dW5jdGlvbi9jbGFzcy9pbnRlcmZhY2UgYm9keT8pLgorICAgICAgICAgICAgICAgIGlmICghJGlu
X25vbl9ibG9ja19icmFjZXMKKyAgICAgICAgICAgICAgICAgICAgYW5kICghJGluX2JyYWNlcyBv
ciAkY3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSkKKyAgICAgICAgICAgICAgICAg
ICAgYW5kICRwb3RlbnRpYWxfc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1l
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyAkc3RhcnQsICgk
LiAtIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbiAo
Jy4nLCBAY3VycmVudF9zY29wZXMpIF07CisgICAgICAgICAgICAgICAgICAgIH0KKworCisgICAg
ICAgICAgICAgICAgICAgICRjdXJyZW50X25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gJHBv
dGVudGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZTsKKworICAgICAgICAgICAgICAgICAg
ICAkc3RhcnQgPSAkcG90ZW50aWFsX3N0YXJ0OworICAgICAgICAgICAgICAgICAgICAkbmFtZSA9
ICRwb3RlbnRpYWxfbmFtZTsKKworICAgICAgICAgICAgICAgICAgICBwdXNoIChAY3VycmVudF9z
Y29wZXMsICRuYW1lKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
ICAgICAkaW5fbm9uX2Jsb2NrX2JyYWNlcysrOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgICRwb3RlbnRp
YWxfc3RhcnQgPSAwOworCisgICAgICAgICAgICAgICAgJGluX2JyYWNlcysrOworICAgICAgICAg
ICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQ2xvc2UgYnJhY2Uu
CisgICAgICAgICAgICBpZiAoJDEgZXEgIn0iKSB7CisgICAgICAgICAgICAgICAgJGluX2JyYWNl
cy0tOworCisgICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0ZXIgbGV2ZWwgc2V0IG9mIGJy
YWNlcy4KKyAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUgYSBmdW5jdGlvbiBib2R5Lgor
ICAgICAgICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19icmFjZXMpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCRuYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5n
ZXMsIFsgJHN0YXJ0LCAkLiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBqb2luICgnLicsIEBjdXJyZW50X3Njb3BlcykgXTsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgcG9wIChAY3VycmVudF9zY29wZXMpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
QGN1cnJlbnRfc2NvcGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRf
bmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAxOworCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJHN0YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1l
ID0gICRjdXJyZW50X3Njb3Blc1skI2N1cnJlbnRfc2NvcGVzLTFdOworICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9u
YW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJHN0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICAiIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRpbl9ub25fYmxvY2tfYnJh
Y2VzLS0gaWYgJGluX25vbl9ibG9ja19icmFjZXM7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7CisgICAgICAgICAgICAgICAgJHBvdGVu
dGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgIyBTZW1pY29sb24uCisgICAgICAgICAgICBpZiAoJDEgZXEgIjsiKSB7Cisg
ICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7CisgICAgICAgICAgICAgICAgJHBv
dGVudGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIpIHsKKyAgICAgICAgICAgICAgICAkaW5f
Y2xhc3NfZGVjbGFyYXRpb24gPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCQx
IGVxICJjbGFzcyIgb3IgKCEkaW5fY2xhc3NfZGVjbGFyYXRpb24gYW5kICQxIGVxICJpbnRlcmZh
Y2UiKSkgeworICAgICAgICAgICAgICAgICRjbGFzc19vcl9pbnRlcmZhY2VfanVzdF9zZWVuID0g
MTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAj
IFdvcmQuCisgICAgICAgICAgICAkd29yZCA9ICQxOworICAgICAgICAgICAgaWYgKCEkaW5fcGFy
ZW50aGVzZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0
X3NlZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Cisg
ICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKKyAgICAgICAgICAgICAg
ICAgICAgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOworICAgICAgICAgICAgICAg
ICAgICAkcG90ZW50aWFsX25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gMTsKKyAgICAgICAg
ICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoISRwb3RlbnRpYWxfc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX3N0YXJ0ID0gJC47CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAkY2xhc3Nfb3JfaW50ZXJmYWNlX2p1c3Rfc2VlbiA9
IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3YXJuICJtaXNtYXRjaGVkIGJyYWNlcyBpbiAk
ZmlsZV9uYW1lXG4iIGlmICRpbl9icmFjZXM7CisgICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRo
ZXNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9wYXJlbnRoZXNlczsKKworICAgIHJldHVybiBA
cmFuZ2VzOworfQorCisKKworIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5n
ZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZQorIyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyBv
ciBtZXRob2RzLgorIworIyBBIGZ1bmN0aW9uIG5hbWUgaXMgdGhlIHdvcmQgdGhhdCBpbW1lZGlh
dGVseSBmb2xsb3dzIGBmdW5jdGlvbicgd2hlbgorIyBmb2xsb3dlZCBieSBhbiBvcGVuIGN1cmx5
IGJyYWNlLiBJdCBjYW4gYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWwsCisjIG9yIGluc2lkZSBvdGhl
ciBmdW5jdGlvbnMuIEZvciBleGFtcGxlOgorIworIyAgICBmdW5jdGlvbiBuYW1lKCkgeyAvLyAo
bmFtZSkKKyMgICAgICAgIGZ1bmN0aW9uIGlubmVyKCkgeyB9IC8vIChuYW1lLmlubmVyKQorIyAg
ICB9CisjCisjIEFuIGFub255bW91cyBmdW5jdGlvbiBuYW1lIGlzIHRoZSBpZGVudGlmaWVyIG9u
IHRoZSBsZWZ0IGhhbmQgc2lkZSBvZgorIyBhbiBhc3NpZ25tZW50IHdpdGggdGhlIGVxdWFscyBv
cGVyYXRvciBvciBvYmplY3Qgbm90YXRpb24gdGhhdCBoYXMgYQorIyB2YWx1ZSBzdGFydGluZyB3
aXRoIGBmdW5jdGlvbicgZm9sbG93ZWQgYW4gb3BlbiBjdXJseSBicmFjZS4KKyMgRm9yIGV4YW1w
bGU6CisjCisjICAgIG5hbWVzcGFjZSA9IHsKKyMgICAgICAgIG5hbWU6IGZ1bmN0aW9uKCkge30g
Ly8gKG5hbWVzcGFjZS5uYW1lKQorIyAgICB9CisjICAgIG5hbWVzcGFjZS5Gb28gPSBmdW5jdGlv
bigpIHt9IC8vIChuYW1lc3BhY2UuRm9vKQorIworIyBBIGdldHRlciBvciBzZXR0ZXIgbmFtZSBp
cyB0aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3MgYGdldCcgb3IKKyMgYHNldCcgd2hl
biBmb2xsb3dlZCBieSBwYXJhbXMgYW5kIGFuIG9wZW4gY3VybHkgYnJhY2UuIEZvciBleGFtcGxl
OgorIworIyAgICBuYW1lc3BhY2UgPSB7CisjICAgICAgZ2V0IGZvbygpIHt9IC8vIChuYW1lc3Bh
Y2UuZ2V0IGZvbykKKyMgICAgfQorIworIyBBIG1ldGhvZCBuYW1lIGlzIHRoZSB3b3JkIGltbWVk
aWF0ZWx5IGJlZm9yZSBwYXJlbnRoZXNpcywgd2l0aCBhbiBvcGVuCisjIGN1cmx5IGJyYWNlIGlt
bWVkaWF0ZWx5IGZvbGxvd2luZyBjbG9zaW5nIHBhcmVudGhlc2lzLiBGb3IgYSBjbGFzcyBleHBy
ZXNzaW9uCisjIHdlIHRha2UgdGhlIGFzc2lnbm1lbnQgaWRlbnRpZmllciBpbnN0ZWFkIG9mIHRo
ZSBjbGFzcyBuYW1lIGZvciBuYW1lc3BhY2luZy4KKyMKKyMgICAgbmFtZXNwYWNlLkZvbyA9IGNs
YXNzIERvZXNOb3RNYXR0ZXIgZXh0ZW5kcyBCYXIgeworIyAgICAgICAgY29uc3RydWN0b3IoKSB7
fSAvLyAobmFtZXNwYWNlLkZvbykKKyMgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7fSAv
LyAobmFtZXNwYWNlLkZvby5zdGF0aWNNZXRob2QpCisjICAgICAgICBpbnN0YW5jZU1ldGhvZCgp
IHt9IC8vIChuYW1lc3BhY2UuRm9vLnByb3RvdHlwZS5pbnN0YW5jZU1ldGhvZCkKKyMgICAgICAg
IGdldCBnZXR0ZXIoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5wcm90b3R5cGUuZ2V0IGdldHRlcikK
KyMgICAgfQorIyAgICBjbGFzcyBDbGFzc05hbWUgeworIyAgICAgICAgY29uc3RydWN0b3IoKSB7
fSAvLyAoQ2xhc3NOYW1lKQorIyAgICAgICAgbWV0aG9kKCkge30gLy8gKENsYXNzTmFtZS5wcm90
b3R5cGUubWV0aG9kKQorIyAgICB9CisjCisjIE1ldGhvZHMgbWF5IGV4aXN0IGluIG9iamVjdCBs
aXRlcmFscywgb3V0c2lkZSBvZiBjbGFzc2VzLgorIworIyAgIEZvby5wcm90b3R5cGUgPSB7Cisj
ICAgICAgIG1ldGhvZCgpIHt9LCAvLyAoRm9vLnByb3RvdHlwZS5tZXRob2QpCisjICAgICAgIG90
aGVyTWV0aG9kKCkge30gLy8gKEZvby5wcm90b3R5cGUub3RoZXJNZXRob2QpCisjICAgfQorIwor
IyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3IgYWxs
IGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCisjCisjIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxl
czogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgorCitzdWIgZ2V0X2Z1
bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0IHsKKyAgICBteSAoJGZpbGVIYW5kbGUs
ICRmaWxlTmFtZSkgPSBAXzsKKworICAgIG15IEBjdXJyZW50U2NvcGVzOworICAgIG15IEBjdXJy
ZW50SWRlbnRpZmllcnM7CisgICAgbXkgQGN1cnJlbnRQYXJzaW5nTW9kZSA9ICgiZ2xvYmFsIik7
CisgICAgbXkgQGN1cnJlbnRGdW5jdGlvbk5hbWVzOworICAgIG15IEBjdXJyZW50RnVuY3Rpb25E
ZXB0aHM7CisgICAgbXkgQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXM7CisKKyAgICBteSBAcmFu
Z2VzOworCisgICAgbXkgJGluQ29tbWVudCA9IDA7CisgICAgbXkgJGluUXVvdGVkVGV4dCA9ICIi
OworICAgIG15ICRpbkV4dGVuZHMgPSAwOworICAgIG15ICRpbk1ldGhvZCA9IDA7CisgICAgbXkg
JGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzID0gMDsKKyAgICBteSAkcGFyZW50aGVzZXNE
ZXB0aCA9IDA7CisgICAgbXkgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGggPSAwOworICAgIG15ICRi
cmFjZXNEZXB0aCA9IDA7CisKKyAgICBteSAkY2xhc3NKdXN0U2VlbiA9IDA7CisgICAgbXkgJHBh
cmVudGhlc2lzSnVzdFNlZW4gPSAwOworICAgIG15ICRmdW5jdGlvbkp1c3RTZWVuID0gMDsKKyAg
ICBteSAkZ2V0dGVySnVzdFNlZW4gPSAwOworICAgIG15ICRzZXR0ZXJKdXN0U2VlbiA9IDA7Cisg
ICAgbXkgJGFzeW5jSnVzdFNlZW4gPSAwOworICAgIG15ICRhc3NpZ25tZW50SnVzdFNlZW4gPSAw
OworICAgIG15ICRzdGF0aWNPckNvbnRydWN0b3JTZWVuID0gMDsKKworICAgIG15ICRjdXJyZW50
VG9rZW4gPSAiIjsKKyAgICBteSAkbGFzdFRva2VuID0gIiI7CisgICAgbXkgJHBvc3NpYmxlTWV0
aG9kTmFtZSA9ICIiOworICAgIG15ICR3b3JkID0gIiI7CisKKyAgICB3aGlsZSAoPCRmaWxlSGFu
ZGxlPikgeworICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgbXVsdGktbGluZSBjb21tZW50Lgor
ICAgICAgICBpZiAoJGluQ29tbWVudCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwq
Ly0tOworICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7CisgICAgICAgIH0KKworICAgICAgICAj
IEhhbmRsZSBjb250aW51ZWQgcXVvdGVkIHRleHQuCisgICAgICAgIGlmICgkaW5RdW90ZWRUZXh0
IG5lICIiKSB7CisgICAgICAgICAgICBuZXh0IGlmIC9cXCQvOworICAgICAgICAgICAgcy0oW15c
XF18XFwuKSo/JGluUXVvdGVkVGV4dC0tOworICAgICAgICAgICAgJGluUXVvdGVkVGV4dCA9ICIi
OworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29tbWVudHMgYW5kIHF1b3RlZCB0ZXh0
LgorICAgICAgICB3aGlsZSAobS0oL1wqfC8vfFwnfFwiKS0pIHsgIyBcJyBhbmQgXCIga2VlcCBl
bWFjcyBwZXJsIG1vZGUgaGFwcHkKKyAgICAgICAgICAgIG15ICRtYXRjaCA9ICQxOworICAgICAg
ICAgICAgaWYgKCRtYXRjaCBlcSAnLyonKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzLS9cKi4q
P1wqLy0tKSB7CisgICAgICAgICAgICAgICAgICAgIHMtL1wqLiotLTsKKyAgICAgICAgICAgICAg
ICAgICAgJGluQ29tbWVudCA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBl
bHNpZiAoJG1hdGNoIGVxICcvLycpIHsKKyAgICAgICAgICAgICAgICBzLS8vLiotLTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7ICMgJyBvciAiCisgICAgICAgICAgICAgICAgaWYgKCFzLSRtYXRjaChb
XlxcXXxcXC4pKj8kbWF0Y2gtc3RyaW5nX2FwcGVhcmVkX2hlcmUtKSB7CisgICAgICAgICAgICAg
ICAgICAgICRpblF1b3RlZFRleHQgPSAkbWF0Y2ggaWYgL1xcJC87CisgICAgICAgICAgICAgICAg
ICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVOYW1lXG4iIGlm
ICRpblF1b3RlZFRleHQgZXEgIiI7CisgICAgICAgICAgICAgICAgICAgIHMtJG1hdGNoLiotLTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAj
IEZpbmQgZnVuY3Rpb24gbmFtZXMuCisgICAgICAgIHdoaWxlIChtLShcdyt8Wygpe309OjssLl0p
LWcpIHsKKyAgICAgICAgICAgICMgU2tpcCBldmVyeXRoaW5nIHVudGlsICJ7IiBhZnRlciBleHRl
bmRzLgorICAgICAgICAgICAgaWYgKCRpbkV4dGVuZHMpIHsKKyAgICAgICAgICAgICAgICBuZXh0
IGlmICQxIG5lICd7JzsKKyAgICAgICAgICAgICAgICAkaW5FeHRlbmRzID0gMDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgJGxhc3RUb2tlbiA9ICRjdXJyZW50VG9rZW47CisgICAgICAg
ICAgICAkY3VycmVudFRva2VuID0gJDE7CisKKyAgICAgICAgICAgICMgT3BlbiBwYXJlbnRoZXNp
cy4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnKCcpIHsKKyAgICAgICAgICAgICAgICAkcGFyZW50
aGVzZXNEZXB0aCsrOworICAgICAgICAgICAgICAgICRnbG9iYWxQYXJlbnRoZXNlc0RlcHRoKysg
aWYgJGN1cnJlbnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJzaW5nTW9kZV0gZXEgImdsb2JhbCI7
CisgICAgICAgICAgICAgICAgJHBvc3NpYmxlTWV0aG9kTmFtZSA9IGpvaW4oJy4nLCBAY3VycmVu
dElkZW50aWZpZXJzKTsKKyAgICAgICAgICAgICAgICAkaW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFt
ZXRlcnMgPSAxIGlmICRmdW5jdGlvbkp1c3RTZWVuOworICAgICAgICAgICAgICAgICRmdW5jdGlv
bkp1c3RTZWVuID0gMDsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lzLgorICAgICAgICAgICAgaWYgKCQxIGVxICcp
JykgeworICAgICAgICAgICAgICAgICRwYXJlbnRoZXNlc0RlcHRoLS07CisgICAgICAgICAgICAg
ICAgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGgtLSBpZiAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3Vy
cmVudFBhcnNpbmdNb2RlXSBlcSAiZ2xvYmFsIjsKKyAgICAgICAgICAgICAgICBAY3VycmVudElk
ZW50aWZpZXJzID0gKCkgaWYgJGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzOworICAgICAg
ICAgICAgICAgICRpbkFub255bW91c0Z1bmN0aW9uUGFyYW1ldGVycyA9IDA7CisgICAgICAgICAg
ICAgICAgJHBhcmVudGhlc2lzSnVzdFNlZW4gPSAxOworICAgICAgICAgICAgICAgIG5leHQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgT3BlbiBicmFjZS4KKyAgICAgICAgICAgIGlm
ICgkMSBlcSAneycpIHsKKyAgICAgICAgICAgICAgICBteSAkbWV0aG9kTmFtZSA9ICIiOworICAg
ICAgICAgICAgICAgIG15ICRtb2RlID0gJGN1cnJlbnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJz
aW5nTW9kZV07CisKKyAgICAgICAgICAgICAgICAjIE1ldGhvZC4KKyAgICAgICAgICAgICAgICBp
ZiAoKCRtb2RlIGVxICdjbGFzcycgb3IgJG1vZGUgZXEgJ2dsb2JhbCcpIGFuZCAkcGFyZW50aGVz
aXNKdXN0U2VlbiBhbmQgKCRzdGF0aWNPckNvbnRydWN0b3JTZWVuIG9yICRwb3NzaWJsZU1ldGhv
ZE5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkbW9kZSBlcSAnY2xhc3MnKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kTmFtZSA9IGpvaW4oJy4nLCAkc3RhdGljT3JD
b250cnVjdG9yU2VlbiA/ICIiIDogInByb3RvdHlwZSIsICRwb3NzaWJsZU1ldGhvZE5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJG1l
dGhvZE5hbWUgPSAkcG9zc2libGVNZXRob2ROYW1lOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgJG1ldGhvZE5hbWUgPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1v
dmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCisgICAgICAgICAgICAgICAgICAgICRtZXRob2ROYW1l
ID1+IHMvXC4kLy87ICMgUmVtb3ZlIHRyYWlsaW5nIHBlcmlvZC4KKworICAgICAgICAgICAgICAg
ICAgICBteSAkY3VycmVudE1ldGhvZCA9IGpvaW4oJy4nLCBAY3VycmVudFNjb3BlcywgJG1ldGhv
ZE5hbWUpOworICAgICAgICAgICAgICAgICAgICAkY3VycmVudE1ldGhvZCA9fiBzL1wuezIsfS9c
Li9nOyAjIFJlbW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KKyAgICAgICAgICAgICAgICAgICAg
JGN1cnJlbnRNZXRob2QgPX4gcy9cLiQvLzsgIyBSZW1vdmUgdHJhaWxpbmcgcGVyaW9kLgorCisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzaW5nTW9kZSwgIm1ldGhvZCIpOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRN
ZXRob2QpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMs
ICRicmFjZXNEZXB0aCk7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlv
blN0YXJ0TGluZXMsICQuKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAk
YnJhY2VzRGVwdGgrKzsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25KdXN0U2VlbiA9IDA7CisK
KyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50U2NvcGVzLCBqb2luKCcuJywgJG1ldGhvZE5h
bWUgPyAkbWV0aG9kTmFtZSA6IEBjdXJyZW50SWRlbnRpZmllcnMpKTsKKyAgICAgICAgICAgICAg
ICBAY3VycmVudElkZW50aWZpZXJzID0gKCk7CisKKyAgICAgICAgICAgICAgICAkc3RhdGljT3JD
b250cnVjdG9yU2VlbiA9IDA7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgIyBDbG9zZSBicmFjZS4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnfScp
IHsKKyAgICAgICAgICAgICAgICAkYnJhY2VzRGVwdGgtLTsKKyAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25KdXN0U2VlbiA9IDA7CisKKyAgICAgICAgICAgICAgICBpZiAoQGN1cnJlbnRGdW5jdGlv
bkRlcHRocyBhbmQgJGJyYWNlc0RlcHRoID09ICRjdXJyZW50RnVuY3Rpb25EZXB0aHNbJCNjdXJy
ZW50RnVuY3Rpb25EZXB0aHNdKSB7CisgICAgICAgICAgICAgICAgICAgIHBvcChAY3VycmVudEZ1
bmN0aW9uRGVwdGhzKTsKKyAgICAgICAgICAgICAgICAgICAgcG9wKEBjdXJyZW50UGFyc2luZ01v
ZGUpOworCisgICAgICAgICAgICAgICAgICAgIG15ICRjdXJyZW50TmFtZSA9IHBvcChAY3VycmVu
dEZ1bmN0aW9uTmFtZXMpOworICAgICAgICAgICAgICAgICAgICBteSAkc3RhcnQgPSBwb3AoQGN1
cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMpOworCisgICAgICAgICAgICAgICAgICAgICRjdXJyZW50
TmFtZSA9fiBzL15cLi8vZzsgIyBSZW1vdmVzIGxlYWRpbmcgcGVyaW9kcy4KKworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEByYW5nZXMsIFskc3RhcnQsICQuLCAkY3VycmVudE5hbWVdKTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwb3AoQGN1cnJlbnRTY29wZXMpOwor
ICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRpZmllcnMgPSAoKTsKKworICAgICAgICAgICAg
ICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgRG90LgorICAgICAgICAg
ICAgaWYgKCQxIGVxICcuJykgeworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICMgU2VtaWNvbG9uIG9yIGNvbW1hLgorICAgICAgICAgICAgaWYgKCQx
IGVxICc7JyBvciAkMSBlcSAnLCcpIHsKKyAgICAgICAgICAgICAgICBAY3VycmVudElkZW50aWZp
ZXJzID0gKCk7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgIyBDbGFzcy4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnY2xhc3MnKSB7CisgICAgICAg
ICAgICAgICAgJGNsYXNzSnVzdFNlZW4gPSAxOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICMgRXh0ZW5kcy4KKyAgICAgICAgICAgIGlmICgkMSBl
cSAnZXh0ZW5kcycpIHsKKyAgICAgICAgICAgICAgICAkaW5FeHRlbmRzID0gMTsKKyAgICAgICAg
ICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIEZ1bmN0aW9uLgor
ICAgICAgICAgICAgaWYgKCQxIGVxICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25KdXN0U2VlbiA9IDE7CisKKyAgICAgICAgICAgICAgICBpZiAoJGFzc2lnbm1lbnRKdXN0
U2VlbikgeworICAgICAgICAgICAgICAgICAgICBteSAkY3VycmVudEZ1bmN0aW9uID0gam9pbign
LicsIChAY3VycmVudFNjb3BlcywgQGN1cnJlbnRJZGVudGlmaWVycykpOworICAgICAgICAgICAg
ICAgICAgICAkY3VycmVudEZ1bmN0aW9uID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25z
ZWN1dGl2ZSBwZXJpb2RzLgorCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJz
aW5nTW9kZSwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRG
dW5jdGlvbk5hbWVzLCAkY3VycmVudEZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVwdGgpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25TdGFydExpbmVzLCAkLik7CisgICAgICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgIyBHZXR0ZXIgcHJlZml4LgorICAgICAgICAgICAgaWYgKCQxIGVxICdnZXQnKSB7CisgICAg
ICAgICAgICAgICAgbmV4dCBpZiAkbGFzdFRva2VuIGVxICcuJzsgIyBBdm9pZCBtYXAuZ2V0KC4u
LikuCisgICAgICAgICAgICAgICAgJGdldHRlckp1c3RTZWVuID0gMTsKKyAgICAgICAgICAgICAg
ICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIFNldHRlciBwcmVmaXguCisg
ICAgICAgICAgICBpZiAoJDEgZXEgJ3NldCcpIHsKKyAgICAgICAgICAgICAgICBuZXh0IGlmICRs
YXN0VG9rZW4gZXEgJy4nOyAjIEF2b2lkIG1hcC5zZXQoLi4uKS4KKyAgICAgICAgICAgICAgICAk
c2V0dGVySnVzdFNlZW4gPSAxOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICMgQXN5bmMgcHJlZml4LgorICAgICAgICAgICAgaWYgKCQxIGVxICdh
c3luYycpIHsKKyAgICAgICAgICAgICAgICBuZXh0IGlmICRsYXN0VG9rZW4gZXEgJy4nOworICAg
ICAgICAgICAgICAgICRhc3luY0p1c3RTZWVuID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIFN0YXRpYy4KKyAgICAgICAgICAgIGlmICgk
MSBlcSAnc3RhdGljJyBvciAkMSBlcSAnY29uc3RydWN0b3InKSB7CisgICAgICAgICAgICAgICAg
JHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gPSAxOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICMgQXNzaWdubWVudCBvcGVyYXRvci4KKyAgICAgICAg
ICAgIGlmICgkMSBlcSAnPScgb3IgJDEgZXEgJzonKSB7CisgICAgICAgICAgICAgICAgJGFzc2ln
bm1lbnRKdXN0U2VlbiA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbmV4dCBpZiAkcGFyZW50aGVzZXNEZXB0aCA+ICRnbG9iYWxQYXJlbnRo
ZXNlc0RlcHRoOworCisgICAgICAgICAgICAjIFdvcmQuCisgICAgICAgICAgICAkd29yZCA9ICQx
OworCisgICAgICAgICAgICBpZiAoJGNsYXNzSnVzdFNlZW4pIHsKKyAgICAgICAgICAgICAgICBw
dXNoKEBjdXJyZW50SWRlbnRpZmllcnMsICR3b3JkKSBpZiAhJGFzc2lnbm1lbnRKdXN0U2VlbjsK
KworICAgICAgICAgICAgICAgIG15ICRjdXJyZW50Q2xhc3MgPSBqb2luKCcuJywgKEBjdXJyZW50
U2NvcGVzLCBAY3VycmVudElkZW50aWZpZXJzKSk7CisgICAgICAgICAgICAgICAgJGN1cnJlbnRD
bGFzcyA9fiBzL1wuezIsfS9cLi9nOyAjIFJlbW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KKwor
ICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzaW5nTW9kZSwgImNsYXNzIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uTmFtZXMsICRjdXJyZW50Q2xhc3MpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbkRlcHRocywgJGJyYWNlc0RlcHRo
KTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25TdGFydExpbmVzLCAkLik7
CisgICAgICAgICAgICB9IGVsc2lmICgkZ2V0dGVySnVzdFNlZW4gb3IgJHNldHRlckp1c3RTZWVu
IG9yICRhc3luY0p1c3RTZWVuKSB7CisgICAgICAgICAgICAgICAgJHdvcmQgPSAiZ2V0ICR3b3Jk
IiBpZiAkZ2V0dGVySnVzdFNlZW47CisgICAgICAgICAgICAgICAgJHdvcmQgPSAic2V0ICR3b3Jk
IiBpZiAkc2V0dGVySnVzdFNlZW47CisgICAgICAgICAgICAgICAgJHdvcmQgPSAiYXN5bmMgJHdv
cmQiIGlmICRhc3luY0p1c3RTZWVuOworCisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudElk
ZW50aWZpZXJzLCAkd29yZCk7CisKKyAgICAgICAgICAgICAgICBteSAkbW9kZSA9ICRjdXJyZW50
UGFyc2luZ01vZGVbJCNjdXJyZW50UGFyc2luZ01vZGVdOworICAgICAgICAgICAgICAgIG15ICRj
dXJyZW50RnVuY3Rpb24gPSBqb2luKCcuJywgKEBjdXJyZW50U2NvcGVzLCAoJG1vZGUgZXEgJ2Ns
YXNzJyBhbmQgISRzdGF0aWNPckNvbnRydWN0b3JTZWVuKSA/ICJwcm90b3R5cGUiIDogIiIsIEBj
dXJyZW50SWRlbnRpZmllcnMpKTsKKyAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID1+
IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgorCisgICAgICAg
ICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAiZnVuY3Rpb24iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRGdW5jdGlvbik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVwdGgp
OworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsK
KyAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbkp1c3RTZWVuIGFuZCAhJGFzc2lnbm1lbnRK
dXN0U2VlbikgeworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdv
cmQpOworCisgICAgICAgICAgICAgICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9IGpvaW4oJy4nLCAo
QGN1cnJlbnRTY29wZXMsIEBjdXJyZW50SWRlbnRpZmllcnMpKTsKKyAgICAgICAgICAgICAgICAk
Y3VycmVudEZ1bmN0aW9uID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBw
ZXJpb2RzLgorCisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAiZnVu
Y3Rpb24iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1
cnJlbnRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVw
dGhzLCAkYnJhY2VzRGVwdGgpOworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlv
blN0YXJ0TGluZXMsICQuKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCR3b3JkIG5lICdpZicgYW5k
ICR3b3JkIG5lICdmb3InIGFuZCAkd29yZCBuZSAnZG8nIGFuZCAkd29yZCBuZSAnd2hpbGUnIGFu
ZCAkd29yZCBuZSAnd2hpY2gnIGFuZCAkd29yZCBuZSAndmFyJykgeworICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdvcmQpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAkY2xhc3NKdXN0U2VlbiA9IDA7CisgICAgICAgICAgICAkcGFyZW50aGVzaXNKdXN0
U2VlbiA9IDA7CisgICAgICAgICAgICAkZnVuY3Rpb25KdXN0U2VlbiA9IDA7CisgICAgICAgICAg
ICAkZ2V0dGVySnVzdFNlZW4gPSAwOworICAgICAgICAgICAgJHNldHRlckp1c3RTZWVuID0gMDsK
KyAgICAgICAgICAgICRhc3luY0p1c3RTZWVuID0gMDsKKyAgICAgICAgICAgICRhc3NpZ25tZW50
SnVzdFNlZW4gPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgd2FybiAibWlzbWF0Y2hlZCBi
cmFjZXMgaW4gJGZpbGVOYW1lXG4iIGlmICRicmFjZXNEZXB0aDsKKyAgICB3YXJuICJtaXNtYXRj
aGVkIHBhcmVudGhlc2VzIGluICRmaWxlTmFtZVxuIiBpZiAkcGFyZW50aGVzZXNEZXB0aDsKKwor
ICAgIHJldHVybiBAcmFuZ2VzOworfQorCisjIFJlYWQgYSBmaWxlIGFuZCBnZXQgYWxsIHRoZSBs
aW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQgbG9vayBsaWtlIFBlcmwgZnVuY3Rpb25zLiBG
dW5jdGlvbnMKKyMgc3RhcnQgb24gYSBsaW5lIHRoYXQgc3RhcnRzIHdpdGggInN1YiAiLCBhbmQg
ZW5kIG9uIHRoZSBmaXJzdCBsaW5lIHN0YXJ0aW5nIHdpdGggIn0iIHRoZXJlYWZ0ZXIuCisjCisj
IFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVu
Y3Rpb24gXS4KKworc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybCB7CisgICAg
bXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87CisKKyAgICBteSBAcmFuZ2VzOworCisg
ICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOworICAgIG15ICRzdGFydCA9IDA7CisgICAgbXkg
JGhlcmVEb2N1bWVudElkZW50aWZpZXIgPSAiIjsKKworICAgIHdoaWxlICg8JGZpbGVIYW5kbGU+
KSB7CisgICAgICAgIGNob21wOworICAgICAgICBpZiAoISRoZXJlRG9jdW1lbnRJZGVudGlmaWVy
KSB7CisgICAgICAgICAgICBpZiAoL15zdWJccysoW1x3X11bXHdcZF9dKikvKSB7CisgICAgICAg
ICAgICAgICAgIyBTa2lwIG92ZXIgZm9yd2FyZCBkZWNsYXJhdGlvbnMsIHdoaWNoIGRvbid0IGNv
bnRhaW4gYSBicmFjZSBhbmQgZW5kIHdpdGggYSBzZW1pY29sb24uCisgICAgICAgICAgICAgICAg
bmV4dCBpZiAvO1xzKiQvOworCisgICAgICAgICAgICAgICAgaWYgKCRjdXJyZW50RnVuY3Rpb24p
IHsKKyAgICAgICAgICAgICAgICAgICAgd2FybiAibmVzdGVkIGZ1bmN0aW9ucyBmb3VuZCBhdCB0
b3AtbGV2ZWwgYXQgJGZpbGVOYW1lOiQuXG4iOworICAgICAgICAgICAgICAgICAgICBuZXh0Owor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gJDE7
CisgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJC47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoLzw8XHMqW1wiXCddPyhbXHdfXVtcd19cZF0qKS8pIHsKKyAgICAgICAgICAgICAgICAj
IEVudGVyIGhlcmUtZG9jdW1lbnQuCisgICAgICAgICAgICAgICAgJGhlcmVEb2N1bWVudElkZW50
aWZpZXIgPSAkMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbmRleCgkXywgIn0i
KSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHN0YXJ0OworICAgICAgICAg
ICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydCwgJC4sICRjdXJyZW50RnVuY3Rpb25dKTsKKyAg
ICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiI7CisgICAgICAgICAgICAgICAgJHN0
YXJ0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNpZiAoJF8gZXEgJGhlcmVEb2N1
bWVudElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICMgRXNjYXBlIGZyb20gaGVyZS1kb2N1bWVu
dC4KKyAgICAgICAgICAgICRoZXJlRG9jdW1lbnRJZGVudGlmaWVyID0gIiI7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICByZXR1cm4gQHJhbmdlczsKK30KKworIyBSZWFkIGEgZmlsZSBhbmQgZ2V0
IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBQeXRob24g
Y2xhc3NlcywgbWV0aG9kcywgb3IgZnVuY3Rpb25zLgorIworIyBGSVhNRTogTWF5YmUgd2Ugc2hv
dWxkIHVzZSBQeXRob24ncyBhc3QgbW9kdWxlIHRvIGRvIHRoZSBwYXJzaW5nIGZvciB1cz8KKyMK
KyMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBm
dW5jdGlvbiBdLgorCitzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRob24gewor
ICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOworCisgICAgbXkgQHJhbmdlczsK
KworICAgIG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU2VudGluZWxSZWdFeCA9IHFyIyg/OiIi
InwnJycpIzsKKyAgICBteSAkbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFN0YXJ0UmVnRXggPSBxciNc
cyokbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXgjOworICAgIG15ICRtdWx0aWxp
bmVTdHJpbmdMaXRlcmFsRW5kUmVnRXggPSBxciMkbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRp
bmVsUmVnRXhccyokIzsKKworICAgIG15IEBzY29wZVN0YWNrID0gKHsgbGluZSA9PiAwLCBpbmRl
bnQgPT4gLTEsIG5hbWUgPT4gdW5kZWYgfSk7CisgICAgbXkgJGxhc3RMaW5lID0gMDsKKyAgICBt
eSAkaW5Db21tZW50ID0gMDsKKyAgICB1bnRpbCAoJGxhc3RMaW5lKSB7CisgICAgICAgICRfID0g
PCRmaWxlSGFuZGxlPjsKKyAgICAgICAgdW5sZXNzICgkXykgeworICAgICAgICAgICAgIyBUbyBw
b3Agb3V0IGFsbCBwb3BwZWQgc2NvcGVzLCBydW4gdGhlIGxvb3Agb25jZSBtb3JlIGFmdGVyCisg
ICAgICAgICAgICAjIHdlIGVuY291bnRlcmVkIHRoZSBlbmQgb2YgdGhlIGZpbGUuCisgICAgICAg
ICAgICAkXyA9ICJwYXNzXG4iOworICAgICAgICAgICAgJC4rKzsKKyAgICAgICAgICAgICRsYXN0
TGluZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgY2hvbXA7CisgICAgICAgIG5leHQgdW5sZXNz
IC9eKFxzKikoW14jXS4qKSQvOyAjIFNraXAgbm9uLWluZGVudGVkIGxpbmVzIHRoYXQgYmVnaW4g
d2l0aCBhIGNvbW1lbnQuCisKKyAgICAgICAgbXkgJGluZGVudCA9IGxlbmd0aCAkMTsKKyAgICAg
ICAgbXkgJHJlc3QgPSAkMjsKKyAgICAgICAgbXkgJHNjb3BlID0gJHNjb3BlU3RhY2tbLTFdOwor
CisgICAgICAgIGlmICgkaW5kZW50IDw9ICRzY29wZS0+e2luZGVudH0pIHsKKyAgICAgICAgICAg
ICMgRmluZCBhbGwgdGhlIHNjb3BlcyB0aGF0IHdlIGhhdmUganVzdCBleGl0ZWQuCisgICAgICAg
ICAgICBteSAkaSA9IDA7CisgICAgICAgICAgICBmb3IgKDsgJGkgPCBAc2NvcGVTdGFjazsgKysk
aSkgeworICAgICAgICAgICAgICAgIGxhc3QgaWYgJGluZGVudCA8PSAkc2NvcGVTdGFja1skaV0t
PntpbmRlbnR9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXkgQHBvcHBlZFNjb3BlcyA9
IHNwbGljZSBAc2NvcGVTdGFjaywgJGk7CisKKyAgICAgICAgICAgICMgRm9yIGVhY2ggc2NvcGUg
dGhhdCB3YXMganVzdCBleGl0ZWQsIGFkZCBhIHJhbmdlIHRoYXQgZ29lcyBmcm9tIHRoZSBzdGFy
dCBvZiB0aGF0CisgICAgICAgICAgICAjIHNjb3BlIHRvIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBu
ZXN0ZWQgc2NvcGUsIG9yIHRvIHRoZSBsaW5lIGp1c3QgYmVmb3JlIHRoaXMgb25lIGZvcgorICAg
ICAgICAgICAgIyB0aGUgaW5uZXJtb3N0IHNjb3BlLgorICAgICAgICAgICAgZm9yICgkaSA9IDA7
ICRpIDwgQHBvcHBlZFNjb3BlczsgKyskaSkgeworICAgICAgICAgICAgICAgIG15ICRsaW5lQWZ0
ZXJFbmQgPSAkaSArIDEgPT0gQHBvcHBlZFNjb3BlcyA/ICQuIDogJHBvcHBlZFNjb3Blc1skaSAr
IDFdLT57bGluZX07CisgICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBbJHBvcHBlZFNjb3Bl
c1skaV0tPntsaW5lfSwgJGxpbmVBZnRlckVuZCAtIDEsICRwb3BwZWRTY29wZXNbJGldLT57bmFt
ZX1dOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQHNjb3BlU3RhY2sgb3Igd2FybiAiUG9w
cGVkIG9mZiBsYXN0IHNjb3BlIGF0ICRmaWxlTmFtZTokLlxuIjsKKworICAgICAgICAgICAgIyBT
ZXQgdGhlIG5vdy1jdXJyZW50IHNjb3BlIHRvIHN0YXJ0IGF0IHRoZSBjdXJyZW50IGxpbmUuIEFu
eSBsaW5lcyB3aXRoaW4gdGhpcyBzY29wZQorICAgICAgICAgICAgIyBiZWZvcmUgdGhpcyBwb2lu
dCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8gQHJhbmdlcy4KKyAgICAgICAgICAg
ICRzY29wZSA9ICRzY29wZVN0YWNrWy0xXTsKKyAgICAgICAgICAgICRzY29wZS0+e2xpbmV9ID0g
JC47CisgICAgICAgIH0KKworICAgICAgICAjIFNraXAgbXVsdGktbGluZSBzdHJpbmcgbGl0ZXJh
bHMgYW5kIGRvY3N0cmluZ3MuCisgICAgICAgIG5leHQgaWYgLyRtdWx0aWxpbmVTdHJpbmdMaXRl
cmFsU3RhcnRSZWdFeC4qJG11bHRpbGluZVN0cmluZ0xpdGVyYWxFbmRSZWdFeC87CisgICAgICAg
IGlmICghJGluQ29tbWVudCAmJiAvJG11bHRpbGluZVN0cmluZ0xpdGVyYWxTdGFydFJlZ0V4Lykg
eworICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7CisgICAgICAgIH0gZWxzaWYgKCRpbkNvbW1l
bnQgJiYgLyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXgvKSB7CisgICAgICAgICAgICAk
aW5Db21tZW50ID0gMDsKKyAgICAgICAgfQorICAgICAgICBuZXh0IGlmICRpbkNvbW1lbnQ7CisK
KyAgICAgICAgbmV4dCBpZiAvXlxzKlsjJyJdLzsgIyBTa2lwIGluZGVudGVkIGFuZCBub24taW5k
ZW50ZWQgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGEgY29tbWVudCBvciBzdHJpbmcgbGl0ZXJhbCAo
aW5jbHVkZXMgZG9jc3RyaW5ncykuCisKKyAgICAgICAgbmV4dCB1bmxlc3MgJHJlc3QgPX4gLyg/
OmNsYXNzfGRlZilccysoXHcrKS87CisgICAgICAgIG15ICRuYW1lID0gJDE7CisgICAgICAgIG15
ICRmdWxsTmFtZSA9ICRzY29wZS0+e25hbWV9ID8gam9pbignLicsICRzY29wZS0+e25hbWV9LCAk
bmFtZSkgOiAkbmFtZTsKKyAgICAgICAgcHVzaCBAc2NvcGVTdGFjaywgeyBsaW5lID0+ICQuLCBp
bmRlbnQgPT4gJGluZGVudCwgbmFtZSA9PiAkZnVsbE5hbWUgfTsKKworICAgICAgICBpZiAoJHNj
b3BlLT57aW5kZW50fSA+PSAwKSB7CisgICAgICAgICAgICBwdXNoIEByYW5nZXMsIFskc2NvcGUt
PntsaW5lfSwgJC4gLSAxLCAkc2NvcGUtPntuYW1lfV07CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gQHJhbmdlczsKK30KKworIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGlu
ZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDU1Mgc2VsZWN0b3JzLiAgQSBz
ZWxlY3RvciBpcworIyBhbnl0aGluZyBiZWZvcmUgYW4gb3BlbmluZyBicmFjZSBvbiBhIGxpbmUu
IEEgc2VsZWN0b3Igc3RhcnRzIGF0IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIG9wZW5pbmcKKyMg
YnJhY2UgYW5kIGVuZHMgYXQgdGhlIGNsb3NpbmcgYnJhY2UuCisjCisjIFJlc3VsdCBpcyBhIGxp
c3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgc2VsZWN0b3IgXS4KKworc3Vi
IGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzIHsKKyAgICBteSAoJGZpbGVIYW5kbGUs
ICRmaWxlTmFtZSkgPSBAXzsKKworICAgIG15IEByYW5nZXM7CisKKyAgICBteSAkaW5Db21tZW50
ID0gMDsKKyAgICBteSAkaW5CcmFjZSA9IDA7CisgICAgbXkgQHN0YWNrOworICAgIG15ICRjb250
ZXh0OworICAgIG15IEBjdXJyZW50UGFyc2VNb2RlID0gKCJnbG9iYWwiKTsKKyAgICBteSBAZ3Jv
dXBpbmdTdGFjazsKKyAgICBteSAkc2VsZWN0b3JCcmFjZXMgPSAwOworCisgICAgd2hpbGUgKDwk
ZmlsZUhhbmRsZT4pIHsKKyAgICAgICAgZm9yZWFjaCBteSAkdG9rZW4gKHNwbGl0IG0tKFx7fFx9
fC9cKnxcKi8pLSwgJF8pIHsKKyAgICAgICAgICAgIGlmICgkdG9rZW4gZXEgInsiKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50KSB7CisgICAgICAgICAgICAgICAgICAgICRpbkJy
YWNlICs9IDE7CisgICAgICAgICAgICAgICAgICAgICRzZWxlY3RvckJyYWNlcyArPSAxIGlmICRj
dXJyZW50UGFyc2VNb2RlWyQjY3VycmVudFBhcnNlTW9kZV0gZXEgInNlbGVjdG9yIjsKKyAgICAg
ICAgICAgICAgICAgICAgd2FybiAibWlzbWF0Y2hlZCBvcGVuaW5nIGJyYWNlIGZvdW5kIGluICRm
aWxlTmFtZTokLlxuIiBpZiAkc2VsZWN0b3JCcmFjZXMgPiAxOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzaWYgKCR0b2tlbiBlcSAifSIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoISRpbkNvbW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEkaW5CcmFjZSBvciAk
Y3VycmVudFBhcnNlTW9kZVskI2N1cnJlbnRQYXJzZU1vZGVdIGVxICJnbG9iYWwiKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB3YXJuICJtaXNtYXRjaGVkIGNsb3NpbmcgYnJhY2UgZm91bmQg
aW4gJGZpbGVOYW1lOiQuXG4iOworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICRpbkJyYWNlIC09IDE7CisK
KyAgICAgICAgICAgICAgICAgICAgbXkgJHBhcnNlTW9kZSA9IHBvcChAY3VycmVudFBhcnNlTW9k
ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcGFyc2VNb2RlIGVxICJzZWxlY3RvciIpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gcG9wKEBzdGFjayk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBteSAkc3RhcnRMaW5lID0gcG9wKEBzdGFjayk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBteSAkZW5kTGluZSA9ICQuOworICAgICAgICAgICAgICAgICAgICAgICAg
bXkgJGdyb3VwaW5nUHJlZml4ID0gam9pbigiICIsIEBncm91cGluZ1N0YWNrKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChsZW5ndGggJGdyb3VwaW5nUHJlZml4KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJGdyb3VwaW5nUHJlZml4IC49ICIgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAcmFuZ2VzLCBbJHN0YXJ0
TGluZSwgJGVuZExpbmUsICRncm91cGluZ1ByZWZpeCAuICRuYW1lXSk7CisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRwYXJzZU1vZGUgZXEgIm1lZGlhIikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgcG9wKEBncm91cGluZ1N0YWNrKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICRzZWxlY3RvckJyYWNlcyA9IDA7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNpZiAoJHRva2VuIGVxICIvKiIpIHsKKyAgICAgICAgICAgICAg
ICAkaW5Db21tZW50ID0gMTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCR0b2tlbiBlcSAiKi8iKSB7
CisgICAgICAgICAgICAgICAgd2FybiAibWlzbWF0Y2hlZCBjb21tZW50IGZvdW5kIGluICRmaWxl
TmFtZTokLlxuIiBpZiAhJGluQ29tbWVudDsKKyAgICAgICAgICAgICAgICAkaW5Db21tZW50ID0g
MDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50
IGFuZCAkY3VycmVudFBhcnNlTW9kZVskI2N1cnJlbnRQYXJzZU1vZGVdIG5lICJzZWxlY3RvciIg
YW5kICR0b2tlbiAhfiAvXltcc1x0XSokLykgeworICAgICAgICAgICAgICAgICAgICAkdG9rZW4g
PX4gcy9eW1xzXHRdKnxbXHNcdF0qJC8vZzsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHN0YXJ0
TGluZSA9ICQuOworICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2VuID1+IC9eXEBtZWRpYS8p
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzZU1vZGUsICJtZWRp
YSIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAZ3JvdXBpbmdTdGFjaywgJHRva2Vu
KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRQYXJzZU1vZGUsICJzZWxlY3RvciIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAc3RhY2ssICgkc3RhcnRMaW5lLCAkdG9rZW4pKTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgICMgU29ydCBieSBzdGFydCBsaW5lLgorICAgIHJldHVybiBzb3J0IHskYS0+WzBd
IDw9PiAkYi0+WzBdfSBAcmFuZ2VzOworfQorCisjIFJlYWQgYSBmaWxlIGFuZCBnZXQgYWxsIHRo
ZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQgbG9vayBsaWtlIFN3aWZ0IGNsYXNzZXMs
IG1ldGhvZHMsCisjIG9yIGZ1bmN0aW9ucy4KKyMKKyMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlw
bGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBmdW5jdGlvbiBdLgorCitzdWIgZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCB7CisgICAgbXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5h
bWUpID0gQF87CisKKyAgICBteSBAcmFuZ2VzOworCisgICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9
ICIiOworICAgIG15ICRjdXJyZW50VHlwZSA9ICIiOworICAgIG15ICRmdW5jdGlvblN0YXJ0ID0g
MDsKKyAgICBteSAkdHlwZVN0YXJ0ID0gMDsKKyAgICBteSAkZnVuY3Rpb25TY29wZURlcHRoID0g
MDsKKyAgICBteSAkdHlwZVNjb3BlRGVwdGggPSAwOworICAgIG15ICRzY29wZURlcHRoID0gMDsK
KworICAgIHdoaWxlICg8JGZpbGVIYW5kbGU+KSB7CisgICAgICAgIGNob21wOworICAgICAgICBu
ZXh0IGlmICgvXlxzKlwvXC8uKi8pOworICAgICAgICBpZiAoL2Z1bmNccysoW1x3X11bXHdcZF9d
KilcKCguKilcKS8gfHwgL3ZhclxzKyhbXHdfXVtcd1xkX10qKTpccysvKSB7CisgICAgICAgICAg
ICAkZnVuY3Rpb25TY29wZURlcHRoID0gJHNjb3BlRGVwdGg7CisgICAgICAgICAgICAkY3VycmVu
dEZ1bmN0aW9uID0gJDE7CisgICAgICAgICAgICBpZiAoJDIpIHsKKyAgICAgICAgICAgICAgICAk
Y3VycmVudEZ1bmN0aW9uID0gIiRjdXJyZW50RnVuY3Rpb24oIi4gcGFyc2VTd2lmdEZ1bmN0aW9u
QXJncygkMikgLiAiKSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoJGN1cnJlbnRU
eXBlKSB7CisgICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIkY3VycmVudFR5cGUu
JGN1cnJlbnRGdW5jdGlvbiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkZnVuY3Rpb25T
dGFydCA9ICQuOworICAgICAgICB9IGVsc2lmICgvKD86Y2xhc3N8c3RydWN0fGVudW18cHJvdG9j
b2x8ZXh0ZW5zaW9uKVxzKyhbXHdfXVtcd1xkX10qKS8pIHsKKyAgICAgICAgICAgICR0eXBlU2Nv
cGVEZXB0aCA9ICRzY29wZURlcHRoOworICAgICAgICAgICAgJGN1cnJlbnRUeXBlID0gJDE7Cisg
ICAgICAgICAgICAkdHlwZVN0YXJ0ID0gJC47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluZGV4
KCRfLCAieyIpID4gLTEpIHsKKyAgICAgICAgICAgICRzY29wZURlcHRoKys7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGluZGV4KCRfLCAifSIpID4gLTEpIHsKKyAgICAgICAgICAgICRzY29wZURl
cHRoLS07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRzY29wZURlcHRoID09ICRmdW5jdGlvblNj
b3BlRGVwdGgpIHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvblN0YXJ0OworICAg
ICAgICAgICAgcHVzaChAcmFuZ2VzLCBbJGZ1bmN0aW9uU3RhcnQsICQuLCAkY3VycmVudEZ1bmN0
aW9uXSk7CisgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiI7CisgICAgICAgICAgICAk
ZnVuY3Rpb25TdGFydCA9IDA7CisgICAgICAgIH0gZWxzaWYgKCRzY29wZURlcHRoID09ICR0eXBl
U2NvcGVEZXB0aCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHR5cGVTdGFydDsKKyAgICAg
ICAgICAgICRjdXJyZW50VHlwZSA9ICIiOworICAgICAgICAgICAgJHR5cGVTdGFydCA9IDA7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQHJhbmdlczsKK30KKworc3ViIHBhcnNlU3dp
ZnRGdW5jdGlvbkFyZ3MgeworICAgIG15ICRmdW5jdGlvbkFyZ3MgPSBzaGlmdDsKKworICAgIG15
IEB3b3JkcyA9IHNwbGl0IC8sIC8sICRmdW5jdGlvbkFyZ3M7CisgICAgbXkgJGFyZ0NvdW50ID0g
c2NhbGFyKEB3b3Jkcyk7CisgICAgaWYgKCRhcmdDb3VudCA9PSAwKSB7CisgICAgICAgIHJldHVy
biAiIjsKKyAgICB9IGVsc2lmICgkYXJnQ291bnQgPiAwKSB7CisgICAgICAgICMgSWYgdGhlIGZp
cnN0IGFyZ3VtZW50IGlzIHVubmFtZWQsIGdpdmUgaXQgdGhlIG5hbWUgIl8iCisgICAgICAgICR3
b3Jkc1swXSA9fiBzL14oXHcrOiAuKikvXyAkMS87CisgICAgICAgIHJldHVybiBqb2luKCIiLCBt
YXAgeyAkXyA9fiBzL14oXHcrKS4qLyQxLzsgIiRfOiIgfSBAd29yZHMpOworICAgIH0gZWxzZSB7
CisgICAgICAgIHdhcm4gIlVua25vd24gYXJndW1lbnQgY291bnQuXG4iOworICAgIH0KK30KKwor
c3ViIGRlY29kZUVudGl0aWVzIHsKKyAgICBteSAkdGV4dCA9IHNoaWZ0OworICAgICR0ZXh0ID1+
IHMvXCZsdDsvPC9nOworICAgICR0ZXh0ID1+IHMvXCZndDsvPi9nOworICAgICR0ZXh0ID1+IHMv
XCZxdW90Oy9cIi9nOworICAgICR0ZXh0ID1+IHMvXCZhcG9zOy9cJy9nOworICAgICR0ZXh0ID1+
IHMvXCZhbXA7L1wmL2c7CisgICAgcmV0dXJuICR0ZXh0OworfQorCisxOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2RpcnMucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvZGlycy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY1ZTFk
MDI1ZjA3MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9kaXJz
LnBtCkBAIC0wLDAgKzEsODEgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKworIyBDb3B5cmlnaHQg
KEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3BhY2thZ2Ugd2Via2l0cGVybDo6ZGlyczsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsK
K3VzZSBDYXJwOwordXNlIEZpbGU6OlNwZWM7CisKK0JFR0lOIHsKKyAgIHVzZSBFeHBvcnRlciAg
ICgpOworICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9S
VF9UQUdTKTsKKyAgICRWRVJTSU9OICAgICA9IDEuMDA7CisgICBASVNBICAgICAgICAgPSBxdyhF
eHBvcnRlcik7CisgICBARVhQT1JUICAgICAgPSBxdygKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlRGlyCisgICAgICAgICAgICAgICAgICAgIHNldFNvdXJjZURpcgorICAgICAgICAgICAgICAg
ICk7CisgICAlRVhQT1JUX1RBR1MgPSAoKTsKKyAgIEBFWFBPUlRfT0sgICA9ICgpOworfQorCitt
eSAkc291cmNlRGlyOworCitzdWIgc291cmNlRGlyCit7CisgICAgZGV0ZXJtaW5lU291cmNlRGly
KCk7CisgICAgcmV0dXJuICRzb3VyY2VEaXI7Cit9CisKKyMgdXNlZCBmb3Igc2NyaXB0cyB3aGlj
aCBhcmUgc3RvcmVkIGluIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9uCitzdWIgc2V0U291cmNlRGly
KCQpCit7CisgICAgKCRzb3VyY2VEaXIpID0gQF87Cit9CisKK3N1YiBkZXRlcm1pbmVTb3VyY2VE
aXIKK3sKKyAgICByZXR1cm4gaWYgJHNvdXJjZURpcjsKKyAgICAkc291cmNlRGlyID0gJEZpbmRC
aW46OlJlYWxCaW47CisgICAgJHNvdXJjZURpciA9fiBzfC8rJHx8OyAjIFJlbW92ZSB0cmFpbGlu
ZyAnLycgYXMgd2Ugd291bGQgZGllIGxhdGVyCisKKyAgICAjIHdhbGtzIHVwIHBhdGggY2hlY2tp
bmcgZWFjaCBkaXJlY3RvcnkgdG8gc2VlIGlmIGl0IGlzIHRoZSBtYWluIFdlYktpdCBwcm9qZWN0
IGRpciwKKyAgICAjIGRlZmluZWQgYnkgY29udGFpbmluZyBTb3VyY2VzLCBXZWJDb3JlLCBhbmQg
SmF2YVNjcmlwdENvcmUuCisgICAgdW50aWwgKCgtZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJj
ZURpciwgIlNvdXJjZSIpICYmIC1kIEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiU291
cmNlIiwgIldlYkNvcmUiKSAmJiAtZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNv
dXJjZSIsICJKYXZhU2NyaXB0Q29yZSIpKSB8fCAoLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3Vy
Y2VEaXIsICJJbnRlcm5hbCIpICYmIC1kIEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAi
T3BlblNvdXJjZSIpKSkKKyAgICB7CisgICAgICAgIGlmICgkc291cmNlRGlyICF+IHN8L1teL10r
JHx8KSB7CisgICAgICAgICAgICBjcm9hayAiQ291bGQgbm90IGZpbmQgdG9wIGxldmVsIHdlYmtp
dCBkaXJlY3RvcnkgYWJvdmUgc291cmNlIGRpcmVjdG9yeSB1c2luZyBGaW5kQmluLiI7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICAkc291cmNlRGlyID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3Vy
Y2VEaXIsICJPcGVuU291cmNlIikgaWYgLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIs
ICJPcGVuU291cmNlIik7Cit9CisKKzE7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHBlcmwvZmlsdGVyLWJ1aWxkLXdlYmtpdF91bml0dGVzdC9zaG91bGRJZ25vcmVMaW5lX3VuaXR0
ZXN0cy5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9maWx0ZXItYnVpbGQtd2Via2l0X3Vu
aXR0ZXN0L3Nob3VsZElnbm9yZUxpbmVfdW5pdHRlc3RzLnBsCmluZGV4IGMzODMwM2NjYmNlNS4u
MjJmMGE0MGZkNzJjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZmlsdGVy
LWJ1aWxkLXdlYmtpdF91bml0dGVzdC9zaG91bGRJZ25vcmVMaW5lX3VuaXR0ZXN0cy5wbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZmlsdGVyLWJ1aWxkLXdlYmtpdF91bml0dGVzdC9z
aG91bGRJZ25vcmVMaW5lX3VuaXR0ZXN0cy5wbApAQCAtMzEsMTQgKzMxLDExIEBAIHVzZSB3YXJu
aW5nczsKIHVzZSBFbmdsaXNoOwogdXNlIEZpbmRCaW47CiB1c2UgVGVzdDo6TW9yZTsKLXVzZSBs
aWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwotdXNlIExvYWRBc01v
ZHVsZSBxdyhGaWx0ZXJCdWlsZFdlYktpdCBmaWx0ZXItYnVpbGQtd2Via2l0KTsKK3VzZSBsaWIg
RmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpSZWFsQmluLCAiLi4iLCAiLi4iKTsKK3VzZSB3
ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0IHF3KHNob3VsZElnbm9yZUxpbmUpOwogCiBzdWIgZGVz
Y3JpcHRpb24oJCk7CiAKLUBGaWx0ZXJCdWlsZFdlYktpdDo6RVhQT1JUX09LID0gcXcoc2hvdWxk
SWdub3JlTGluZSk7Ci1GaWx0ZXJCdWlsZFdlYktpdC0+aW1wb3J0KEBGaWx0ZXJCdWlsZFdlYktp
dDo6RVhQT1JUX09LKTsKLQogIwogIyBUZXN0IHdoaXRlc3BhY2UKICMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9sZWFrcy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9sZWFrcy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmMwODcy
Y2ZiZGYzNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9sZWFr
cy5wbQpAQCAtMCwwICsxLDE1NCBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCisjIENvcHlyaWdo
dCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworIyBTY3JpcHQgdG8gcnVuIHRoZSBNYWMgT1MgWCBsZWFrcyB0b29sIHdpdGggbW9yZSBleHBy
ZXNzaXZlICctZXhjbHVkZScgbGlzdHMuCisKK3BhY2thZ2Ugd2Via2l0cGVybDo6bGVha3M7CisK
K3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgQ2FycDsKKwordXNlIEZpbGU6OkJhc2Vu
YW1lOworCitCRUdJTiB7CisgICB1c2UgRXhwb3J0ZXIgICAoKTsKKyAgIG91ciAoJFZFUlNJT04s
IEBJU0EsIEBFWFBPUlQsIEBFWFBPUlRfT0ssICVFWFBPUlRfVEFHUyk7CisgICAkVkVSU0lPTiAg
ICAgPSAxLjAwOworICAgQElTQSAgICAgICAgID0gcXcoRXhwb3J0ZXIpOworICAgQEVYUE9SVCAg
ICAgID0gcXcoCisgICAgICAgICAgICAgICAgICAgIHJ1bkxlYWtzCisgICAgICAgICAgICAgICAg
ICAgIHBhcnNlTGVha3NPdXRwdXQKKyAgICAgICAgICAgICAgICApOworICAgJUVYUE9SVF9UQUdT
ID0gKCk7CisgICBARVhQT1JUX09LICAgPSAoKTsKK30KKworIyBSZXR1cm5zIHRoZSBvdXRwdXQg
b2YgdGhlIGxlYWtzIHRvb2wgaW4gbGlzdCBmb3JtLgorc3ViIHJ1bkxlYWtzKCQkKQoreworICAg
IG15ICgkdGFyZ2V0LCAkbWVtZ3JhcGhQYXRoKSA9IEBfOworCisgICAgaWYgKGRlZmluZWQgJG1l
bWdyYXBoUGF0aCkgeworICAgICAgICBgL3Vzci9iaW4vbGVha3MgXCIkdGFyZ2V0XCIgLS1vdXRw
dXRHcmFwaD1cIiRtZW1ncmFwaFBhdGhcImA7CisgICAgICAgICR0YXJnZXQgPSAkbWVtZ3JhcGhQ
YXRoOworICAgIH0KKworICAgICMgVG8gZ2V0IGEgcmVzdWx0IHdlIGNhbiBwYXJzZSwgd2UgbmVl
ZCB0byBwYXNzIC0tbGlzdCB0byBhbGwgdmVyc2lvbnMgb2YgdGhlIGxlYWtzIHRvb2wKKyAgICAj
IHRoYXQgcmVjb2duaXplIGl0LCBidXQgdGhlcmUgaXMgbm8gY2VydGFpbiB3YXkgdG8gdGVsbCBp
biBhZHZhbmNlICh0aGUgdmVyc2lvbiBvZiB0aGUKKyAgICAjIHRvb2wgaXMgbm90IGFsd2F5cyB0
aWVkIHRvIE9TIHZlcnNpb24sIGFuZCAtLWhlbHAgZG9lc24ndCBkb2N1bWVudCB0aGUgb3B0aW9u
IGluIHNvbWUKKyAgICAjIG9mIHRoZSB0b29sIHZlcnNpb25zIHdoZXJlIGl0J3Mgc3VwcG9ydGVk
IGFuZCBuZWVkZWQpLgorICAgIG15IEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0
YXJnZXRcIiAtLWxpc3RgOworCisgICAgIyBGSVhNRTogUmVtb3ZlIHRoZSBmYWxsYmFjayBvbmNl
IG1hY09TIE1vamF2ZSBpcyB0aGUgb2xkZXN0IHN1cHBvcnRlZCB2ZXJzaW9uLgorICAgIG15ICRs
ZWFrc0V4aXRDb2RlID0gJD8gPj4gODsKKyAgICBpZiAoJGxlYWtzRXhpdENvZGUgPiAxKSB7Cisg
ICAgICAgIEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJnZXRcImA7CisgICAg
fQorCisgICAgcmV0dXJuIFxAbGVha3NPdXRwdXQ7Cit9CisKKyMgUmV0dXJucyBhIGxpc3Qgb2Yg
aGFzaCByZWZlcmVuY2VzIHdpdGggdGhlIGtleXMgeyBhZGRyZXNzLCBzaXplLCB0eXBlLCBjYWxs
U3RhY2ssIGxlYWtzT3V0cHV0IH0KK3N1YiBwYXJzZUxlYWtzT3V0cHV0KFxAKQoreworICAgIG15
ICgkbGVha3NPdXRwdXQpID0gQF87CisKKyAgICAjIEZvcm1hdDoKKyAgICAjICAgUHJvY2VzcyAw
MDAwMDogMTIzNCBub2RlcyBtYWxsb2NlZCBmb3IgMTIzNCBLQgorICAgICMgICBQcm9jZXNzIDAw
MDAwOiBYWCBsZWFrcyBmb3IgWFhYIHRvdGFsIGxlYWtlZCBieXRlcy4KKyAgICAjICAgTGVhazog
MHgwMDAwMDAwMCBzaXplPTEyMzQgW2luc3RhbmNlIG9mICdibGFoJ10KKyAgICAjICAgICAgIDB4
MDAwMDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIDB4MDAwMDAwMDAgYS4uZC5lLmUKKyAgICAj
ICAgICAgIC4uLgorICAgICMgICAgICAgQ2FsbCBzdGFjazogbGVha19jYWxsZXIoKSB8IGxlYWso
KSB8IG1hbGxvYworICAgICMKKyAgICAjICAgV2UgdHJlYXQgZXZlcnkgbGluZSBleGNlcHQgZm9y
ICBQcm9jZXNzIDAwMDAwOiBhbmQgTGVhazogYXMgb3B0aW9uYWwKKworICAgIG15ICRsZWFrQ291
bnQ7CisgICAgbXkgQHBhcnNlZE91dHB1dCA9ICgpOworICAgIG15ICRwYXJzaW5nTGVhayA9IDA7
CisgICAgbXkgJHBhcnNlZExlYWtDb3VudCA9IDA7CisgICAgZm9yIG15ICRsaW5lIChAJGxlYWtz
T3V0cHV0KSB7CisgICAgICAgIGlmICgkbGluZSA9fiAvXlByb2Nlc3MgXGQrOiAoXGQrKSBsZWFr
cz8vKSB7CisgICAgICAgICAgICAkbGVha0NvdW50ID0gJDE7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoJGxpbmUgZXEgIlxuIikgeworICAgICAgICAgICAgJHBhcnNpbmdMZWFrID0gMDsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICgkbGluZSA9fiAvXkxlYWs6IC8pIHsKKyAgICAgICAgICAg
ICRwYXJzaW5nTGVhayA9IDE7CisgICAgICAgICAgICAkcGFyc2VkTGVha0NvdW50Kys7CisgICAg
ICAgICAgICBteSAoJGFkZHJlc3MpID0gKCRsaW5lID1+IC9MZWFrOiAoW1s6eGRpZ2l0Ol14XSsp
Lyk7CisgICAgICAgICAgICBpZiAoIWRlZmluZWQoJGFkZHJlc3MpKSB7CisgICAgICAgICAgICAg
ICAgY3JvYWsgIkNvdWxkIG5vdCBwYXJzZSBMZWFrIGFkZHJlc3MuIjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgbXkgKCRzaXplKSA9ICgkbGluZSA9fiAvc2l6ZT0oW1s6ZGlnaXQ6XV0r
KS8pOworICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRzaXplKSkgeworICAgICAgICAgICAgICAg
IGNyb2FrICJDb3VsZCBub3QgcGFyc2UgTGVhayBzaXplLiI7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICMgRklYTUU6IFRoaXMgY29kZSBzZWVtcyB3cm9uZywgdGhlIGxlYWtzIHRvb2wg
ZG9lc24ndCBhY3R1YWxseSB1c2Ugc2luZ2xlIHF1b3Rlcy4KKyAgICAgICAgICAgICMgV2Ugc2hv
dWxkIHJlY29uY2lsZSB3aXRoIG90aGVyIGZvcm1hdCBjaGFuZ2VzIHRoYXQgaGFwcGVuZWQgc2lu
Y2UsIHN1Y2ggYXMgdGhlCisgICAgICAgICAgICAjIGFkZGl0aW9uIG9mIHpvbmUgaW5mb3JtYXRp
b24uCisgICAgICAgICAgICBteSAoJHR5cGUpID0gKCRsaW5lID1+IC8nKFteJ10rKScvKTsgIycK
KyAgICAgICAgICAgIGlmICghZGVmaW5lZCgkdHlwZSkpIHsKKyAgICAgICAgICAgICAgICAkdHlw
ZSA9ICIiOyAjIFRoZSBsZWFrcyB0b29sIHNvbWV0aW1lcyBvbWl0cyB0aGUgdHlwZS4KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbXkgJWxlYWsgPSAoCisgICAgICAgICAgICAgICAgImFk
ZHJlc3MiID0+ICRhZGRyZXNzLAorICAgICAgICAgICAgICAgICJzaXplIiA9PiAkc2l6ZSwKKyAg
ICAgICAgICAgICAgICAidHlwZSIgPT4gJHR5cGUsCisgICAgICAgICAgICAgICAgImNhbGxTdGFj
ayIgPT4gIiIsICMgVGhlIGxlYWtzIHRvb2wgc29tZXRpbWVzIG9taXRzIHRoZSBjYWxsIHN0YWNr
LgorICAgICAgICAgICAgICAgICJsZWFrc091dHB1dCIgPT4gJGxpbmUKKyAgICAgICAgICAgICk7
CisgICAgICAgICAgICBwdXNoKEBwYXJzZWRPdXRwdXQsIFwlbGVhayk7CisgICAgICAgIH0gZWxz
aWYgKCRwYXJzaW5nTGVhaykgeworICAgICAgICAgICAgJHBhcnNlZE91dHB1dFskI3BhcnNlZE91
dHB1dF0tPnsibGVha3NPdXRwdXQifSAuPSAkbGluZTsKKyAgICAgICAgICAgIGlmICgkbGluZSA9
fiAvQ2FsbCBzdGFjazovKSB7CisgICAgICAgICAgICAgICAgJHBhcnNlZE91dHB1dFskI3BhcnNl
ZE91dHB1dF0tPnsiY2FsbFN0YWNrIn0gPSAkbGluZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIG15ICVub25MZWFrTGluZSA9ICgKKyAgICAgICAgICAgICAg
ICAibGVha3NPdXRwdXQiID0+ICRsaW5lCisgICAgICAgICAgICApOworICAgICAgICAgICAgcHVz
aChAcGFyc2VkT3V0cHV0LCBcJW5vbkxlYWtMaW5lKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGlmICgkcGFyc2VkTGVha0NvdW50ICE9ICRsZWFrQ291bnQpIHsKKyAgICAgICAgY3JvYWsgIlBh
cnNlZCBsZWFrIGNvdW50ICgkcGFyc2VkTGVha0NvdW50KSBkb2VzIG5vdCBtYXRjaCBsZWFrIGNv
dW50IHJlcG9ydGVkIGJ5IGxlYWtzIHRvb2wgKCRsZWFrQ291bnQpLiI7CisgICAgfQorCisgICAg
cmV0dXJuIFxAcGFyc2VkT3V0cHV0OworfQorCisxOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2V4dHJhY3RMaW5lUmFuZ2VC
ZWZvcmVBbmRBZnRlckNoYW5nZS5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJl
LUNoYW5nZUxvZ191bml0dGVzdC9leHRyYWN0TGluZVJhbmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2Uu
cGwKaW5kZXggYTc5MmUzYjIxOTY5Li44NjgzYjQ4YjIxMDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9leHRyYWN0TGluZVJh
bmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2UucGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2V4dHJhY3RMaW5lUmFuZ2VCZWZvcmVBbmRBZnRl
ckNoYW5nZS5wbApAQCAtMjcsOCArMjcsMTEgQEAgdXNlIHdhcm5pbmdzOwogCiB1c2UgVGVzdDo6
TW9yZTsKIHVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46
OkJpbiwgIi4uIik7Ci11c2UgTG9hZEFzTW9kdWxlIHF3KFByZXBhcmVDaGFuZ2VMb2cgcHJlcGFy
ZS1DaGFuZ2VMb2cpOwordXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwg
Ii4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVybDo6Y2hhbmdlbG9nIHF3KAorICAgIGV4dHJhY3RM
aW5lUmFuZ2VCZWZvcmVDaGFuZ2UKKyAgICBleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UKKyk7
CiAKIG15IEB0ZXN0Q2FzZUhhc2hSZWZzID0gKAogIyMjIwpAQCAtMTk3LDEwICsyMDAsMTAgQEAg
Zm9yZWFjaCBteSAkdGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hSZWZzKSB7CiAgICAgbXkgJGV4cGVj
dGVkUmVzdWx0cyA9ICR0ZXN0Q2FzZS0+e2V4cGVjdGVkUmVzdWx0c307CiAKICAgICBteSAkdGVz
dE5hbWVTdGFydCA9ICJleHRyYWN0TGluZVJhbmdlQmVmb3JlQ2hhbmdlKCk6ICR0ZXN0Q2FzZS0+
e3Rlc3ROYW1lfTogY29tcGFyaW5nIjsKLSAgICBteSBAZ290ID0gUHJlcGFyZUNoYW5nZUxvZzo6
ZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgkdGVzdENhc2UtPntpbnB1dFRleHR9KTsKKyAg
ICBteSBAZ290ID0gZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgkdGVzdENhc2UtPntpbnB1
dFRleHR9KTsKICAgICBpc19kZWVwbHkoXEBnb3QsICRleHBlY3RlZFJlc3VsdHMtPntiZWZvcmVD
aGFuZ2V9LCAiJHRlc3ROYW1lU3RhcnQgcmV0dXJuIHZhbHVlLiIpOwogCiAgICAgJHRlc3ROYW1l
U3RhcnQgPSAiZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlKCk6ICR0ZXN0Q2FzZS0+e3Rlc3RO
YW1lfTogY29tcGFyaW5nIjsKLSAgICBAZ290ID0gUHJlcGFyZUNoYW5nZUxvZzo6ZXh0cmFjdExp
bmVSYW5nZUFmdGVyQ2hhbmdlKCR0ZXN0Q2FzZS0+e2lucHV0VGV4dH0pOworICAgIEBnb3QgPSBl
eHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UoJHRlc3RDYXNlLT57aW5wdXRUZXh0fSk7CiAgICAg
aXNfZGVlcGx5KFxAZ290LCAkZXhwZWN0ZWRSZXN1bHRzLT57YWZ0ZXJDaGFuZ2V9LCAiJHRlc3RO
YW1lU3RhcnQgcmV0dXJuIHZhbHVlLiIpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2ZldGNoUmFkYXJVUkxGcm9tQnVn
WE1MRGF0YS5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191
bml0dGVzdC9mZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEucGwKaW5kZXggZmE0MTFmMjEwYWJj
Li4zYzc0MzFjZTg2NjEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVw
YXJlLUNoYW5nZUxvZ191bml0dGVzdC9mZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEucGwKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2Zl
dGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YS5wbApAQCAtMjcsOCArMjcsOCBAQCB1c2Ugd2Fybmlu
Z3M7CiAKIHVzZSBUZXN0OjpNb3JlOwogdXNlIEZpbmRCaW47Ci11c2UgbGliIEZpbGU6OlNwZWMt
PmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKLXVzZSBMb2FkQXNNb2R1bGUgcXcoUHJlcGFy
ZUNoYW5nZUxvZyBwcmVwYXJlLUNoYW5nZUxvZyk7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRp
cigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKK3VzZSB3ZWJraXRwZXJsOjpjaGFuZ2Vsb2cg
cXcoZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxEYXRhKTsKIAogIyBOT1RFOiBBIEJ1Z3ppbGxhIENv
bW1lbnQgWE1MIGxvb2tzIGxpa2U6CiAjCkBAIC0xNTYsNiArMTU2LDYgQEAgcGxhbih0ZXN0cyA9
PiAkdGVzdENhc2VzQ291bnQpOwogCiBmb3JlYWNoIG15ICR0ZXN0Q2FzZSAoQHRlc3RDYXNlSGFz
aFJlZnMpIHsKICAgICBteSAkZXhwZWN0ZWQgPSAkdGVzdENhc2UtPntleHBlY3RlZH07Ci0gICAg
bXkgJGdvdCA9IFByZXBhcmVDaGFuZ2VMb2c6OmZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YSgx
NTI4MzksICR0ZXN0Q2FzZS0+e2lucHV0VGV4dH0pOworICAgIG15ICRnb3QgPSBmZXRjaFJhZGFy
VVJMRnJvbUJ1Z1hNTERhdGEoMTUyODM5LCAkdGVzdENhc2UtPntpbnB1dFRleHR9KTsKICAgICBp
cygkZ290LCAkZXhwZWN0ZWQsICR0ZXN0Q2FzZS0+e3Rlc3ROYW1lfSk7CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZmls
ZW5hbWVXaXRoUGFyZW50aGVzZXMucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFy
ZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGwKaW5kZXggOWRi
OGY4OWZhMjIwLi44MTIwZWMwN2JlYmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9maWxlbmFtZVdpdGhQYXJlbnRoZXNlcy5w
bAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRl
c3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGwKQEAgLTMwLDExICszMCwxMCBAQCB1c2Ugd2Fy
bmluZ3M7CiB1c2UgRmlsZTo6VGVtcDsKIHVzZSBGaW5kQmluOwogdXNlIFRlc3Q6Ok1vcmU7Cit1
c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKK3Vz
ZSB3ZWJraXRwZXJsOjpjaGFuZ2Vsb2cgcXcoYXR0cmlidXRlQ29tbWFuZCk7CiB1c2UgVkNTVXRp
bHM7CiAKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwot
dXNlIExvYWRBc01vZHVsZSBxdyhQcmVwYXJlQ2hhbmdlTG9nIHByZXBhcmUtQ2hhbmdlTG9nKTsK
LQogcGxhbih0ZXN0cyA9PiAxKTsKIAogc3ViIHdyaXRlRmlsZVdpdGhDb250ZW50KCQkKQpAQCAt
NTQsNyArNTMsNyBAQCB3cml0ZUZpbGVXaXRoQ29udGVudChGaWxlOjpTcGVjLT5jYXRmaWxlKCR0
ZW1wb3JhcnlEaXJlY3RvcnksICIuZ2l0YXR0cmlidXRlcyIpLAogbXkgJGF0dHJpYnV0ZUNhY2hl
ID0ge307CiBteSAkcmVzdWx0ID0gMDsKIGNoZGlyICR0ZW1wb3JhcnlEaXJlY3Rvcnk7Ci0kcmVz
dWx0ID0gUHJlcGFyZUNoYW5nZUxvZzo6YXR0cmlidXRlQ29tbWFuZCgkYXR0cmlidXRlQ2FjaGUs
ICRmaWxlbmFtZSwgImZvbyIpOworJHJlc3VsdCA9IGF0dHJpYnV0ZUNvbW1hbmQoJGF0dHJpYnV0
ZUNhY2hlLCAkZmlsZW5hbWUsICJmb28iKTsKIGNoZGlyICcuLic7CiAKIGlzKCRyZXN1bHQsIDEs
ICJTaG91bGQgc3VjY2Vzc2Z1bGx5IGdldCBmb28gYXR0cmlidXRlIGZyb20gZmlsZSB3aXRoIHBh
cmVudGhlc2VzIGluIG5hbWUuIik7CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZ2VuZXJhdGVGdW5jdGlvbkxpc3RzLnBsIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2dlbmVy
YXRlRnVuY3Rpb25MaXN0cy5wbAppbmRleCA1ZTU1OTM3MjUzYzQuLmQ4ZGNhMjE2YjQxOSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0
ZXN0L2dlbmVyYXRlRnVuY3Rpb25MaXN0cy5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZ2VuZXJhdGVGdW5jdGlvbkxpc3RzLnBsCkBA
IC0yOCwxMSArMjgsMTAgQEAgdXNlIHdhcm5pbmdzOwogdXNlIEZpbGU6OlRlbXA7CiB1c2UgRmlu
ZEJpbjsKIHVzZSBUZXN0OjpNb3JlOwordXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRC
aW46OkJpbiwgIi4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVybDo6Y2hhbmdlbG9nIHF3KGFjdHVh
bGx5R2VuZXJhdGVGdW5jdGlvbkxpc3RzKTsKIHVzZSBWQ1NVdGlsczsKIAotdXNlIGxpYiBGaWxl
OjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7Ci11c2UgTG9hZEFzTW9kdWxlIHF3
KFByZXBhcmVDaGFuZ2VMb2cgcHJlcGFyZS1DaGFuZ2VMb2cpOwotCiBteSAkRVhBTVBMRV9DUFAg
PSA8PEVPRjsKICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUgPGNtYXRoPgpAQCAtNTM2LDcg
KzUzNSw3IEBAIGZvcmVhY2ggbXkgJHRlc3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykgewogICAg
ICk7CiAgICAgbXkgJWZ1bmN0aW9uTGlzdHM7CiAgICAgZGlzY2FyZE91dHB1dChzdWIgewotICAg
ICAgICBQcmVwYXJlQ2hhbmdlTG9nOjphY3R1YWxseUdlbmVyYXRlRnVuY3Rpb25MaXN0cyhbJGZp
bGVuYW1lXSwgXCVmdW5jdGlvbkxpc3RzLCB1bmRlZiwgdW5kZWYsIHVuZGVmLCBcJWRlbGVnYXRl
SGFzaCk7CisgICAgICAgIGFjdHVhbGx5R2VuZXJhdGVGdW5jdGlvbkxpc3RzKFskZmlsZW5hbWVd
LCBcJWZ1bmN0aW9uTGlzdHMsIHVuZGVmLCB1bmRlZiwgdW5kZWYsIFwlZGVsZWdhdGVIYXNoKTsK
ICAgICB9KTsKICAgICBjaG9tcChteSAkZXhwZWN0ZWQgPSAkdGVzdENhc2UtPntleHBlY3RlZH0p
OwogICAgIGlzKCRmdW5jdGlvbkxpc3RzeyRmaWxlbmFtZX0sICRleHBlY3RlZCwgJHRlc3RDYXNl
LT57dGVzdE5hbWV9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVw
YXJlLUNoYW5nZUxvZ191bml0dGVzdC9wYXJzZXJfdW5pdHRlc3RzLnBsIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L3BhcnNlcl91bml0dGVzdHMu
cGwKaW5kZXggNzE1N2ZmZWRlZWRjLi5lZmUyYWQwZDI5NDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9wYXJzZXJfdW5pdHRl
c3RzLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191
bml0dGVzdC9wYXJzZXJfdW5pdHRlc3RzLnBsCkBAIC0zMSwxMSArMzEsMjAgQEAgdXNlIEZpbGU6
OlRlbXAgcXcodGVtcGZpbGUpOwogdXNlIEZpbmRCaW47CiB1c2UgR2V0b3B0OjpMb25nOwogdXNl
IFRlc3Q6Ok1vcmU7Ci11c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAi
Li4iKTsKLXVzZSBMb2FkQXNNb2R1bGUgcXcoUHJlcGFyZUNoYW5nZUxvZyBwcmVwYXJlLUNoYW5n
ZUxvZyk7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iLCAi
Li4iKTsKK3VzZSBWQ1NVdGlsczsKK3VzZSB3ZWJraXRwZXJsOjpjaGFuZ2Vsb2cgcXcoCisgICAg
Z2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAKKyAgICBnZXRfc2VsZWN0b3JfbGluZV9y
YW5nZXNfZm9yX2NzcworICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YQorICAg
IGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YXNjcmlwdAorICAgIGdldF9mdW5jdGlv
bl9saW5lX3Jhbmdlc19mb3JfcGVybAorICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jf
cHl0aG9uCisgICAgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdAorKTsKK3VzZSB3
ZWJraXRwZXJsOjpkaXJzOwogCiBzdWIgY2FwdHVyZU91dHB1dCgkKTsKLXN1YiBjb252ZXJ0QWJz
b2x1dGVQYXRoVG9SZWxhdGl2ZVVuaXhQYXRoKCQkKTsKIHN1YiByZWFkVGVzdEZpbGVzKCQpOwog
CiB1c2UgY29uc3RhbnQgRVhQRUNURURfUkVTVUxUU19TVUZGSVggPT4gIi1leHBlY3RlZC50eHQi
OwpAQCAtNjksNyArNzgsNyBAQCBmb3JlYWNoIG15ICR0ZXN0RmlsZSAoc29ydCBAdGVzdEZpbGVz
KSB7CiBwbGFuKHRlc3RzID0+IHNjYWxhciBAdGVzdFNldCk7CiBmb3JlYWNoIG15ICR0ZXN0IChA
dGVzdFNldCkgewogICAgIG9wZW4gRkgsICI8ICR0ZXN0LT57aW5wdXRGaWxlfSIgb3IgZGllICJD
YW5ub3Qgb3BlbiAkdGVzdC0+e2lucHV0RmlsZX06ICQhIjsKLSAgICBteSAkcGFyc2VyID0gZXZh
bCAiXFwmUHJlcGFyZUNoYW5nZUxvZzo6JHRlc3QtPnttZXRob2R9IjsKKyAgICBteSAkcGFyc2Vy
ID0gZXZhbCAiXFwmJHRlc3QtPnttZXRob2R9IjsKICAgICBteSBAcmFuZ2VzOwogICAgIG15ICgk
c3Rkb3V0LCAkc3RkZXJyKSA9IGNhcHR1cmVPdXRwdXQoc3ViIHsgQHJhbmdlcyA9ICRwYXJzZXIt
PihcKkZILCAkdGVzdC0+e2lucHV0RmlsZX0pOyB9KTsKICAgICBjbG9zZSBGSDsKQEAgLTEzMCwx
MSArMTM5LDEwIEBAIHN1YiBjYXB0dXJlT3V0cHV0KCQpCiAgICAgcmV0dXJuICgkc3Rkb3V0LCAk
c3RkZXJyKTsKIH0KIAotc3ViIGNvbnZlcnRBYnNvbHV0ZVBhdGhUb1JlbGF0aXZlVW5peFBhdGgo
JCQpCi17CitzdWIgY29udmVydEFic29sdXRlUGF0aFRvUmVsYXRpdmVVbml4UGF0aCB7CiAgICAg
bXkgKCRzdHJpbmcsICRwYXRoKSA9IEBfOwotICAgIG15ICRzb3VyY2VEaXIgPSBMb2FkQXNNb2R1
bGU6OnVuaXhQYXRoKExvYWRBc01vZHVsZTo6c291cmNlRGlyKCkpOwotICAgIG15ICRyZWxhdGl2
ZVVuaXhQYXRoID0gTG9hZEFzTW9kdWxlOjp1bml4UGF0aCgkcGF0aCk7CisgICAgbXkgJHNvdXJj
ZURpciA9IHVuaXhQYXRoKHNvdXJjZURpcigpKTsKKyAgICBteSAkcmVsYXRpdmVVbml4UGF0aCA9
IHVuaXhQYXRoKCRwYXRoKTsKICAgICAkc291cmNlRGlyIC49ICIvIiB1bmxlc3MgJHNvdXJjZURp
ciA9fiBtLS8kLTsKICAgICBteSAkcXVvdGVkU291cmNlRGlyID0gcXVvdGVtZXRhKCRzb3VyY2VE
aXIpOwogICAgICRyZWxhdGl2ZVVuaXhQYXRoICA9fiBzLyRxdW90ZWRTb3VyY2VEaXIvLzsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVu
LWxlYWtzLXJlcG9ydC12MS4wLnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFr
c191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYxLjAucGwKaW5kZXggM2YzZjVlODNkMWM3Li4y
YWQ4OGVjODIyOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVh
a3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCkBA
IC0yOSw5ICsyOSw5IEBAIHVzZSB3YXJuaW5nczsKIAogdXNlIEZpbGU6OlNwZWM7CiB1c2UgRmlu
ZEJpbjsKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwor
dXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7CiB1
c2UgVGVzdDo6TW9yZTsKLXVzZSBMb2FkQXNNb2R1bGUgcXcoUnVuTGVha3MgcnVuLWxlYWtzKTsK
K3VzZSB3ZWJraXRwZXJsOjpsZWFrcyBxdyhwYXJzZUxlYWtzT3V0cHV0KTsKIAogbXkgQGlucHV0
ID0gc3BsaXQoL1xuLywgPDxFT0YpOwogUHJvY2VzcyAxNjAyOiA4NjY3MSBub2RlcyBtYWxsb2Nl
ZCBmb3IgMTMyNjEgS0IKQEAgLTE2Miw3ICsxNjIsNyBAQCBFT0YKICAgfSwKIF07CiAKLW15ICRh
Y3R1YWxPdXRwdXQgPSBSdW5MZWFrczo6cGFyc2VMZWFrc091dHB1dChAaW5wdXQpOworbXkgJGFj
dHVhbE91dHB1dCA9IHBhcnNlTGVha3NPdXRwdXQoQGlucHV0KTsKIAogcGxhbih0ZXN0cyA9PiAx
KTsKIGlzX2RlZXBseSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRPdXRwdXQsICJsZWFrcyBSZXBv
cnQgVmVyc2lvbiAxLjAgLSBubyBjYWxsIHN0YWNrIik7CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1u
ZXcucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1s
ZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwKaW5kZXggMDZiYzU4ZDBlMDljLi5hMzgxN2U2ODA5OTIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3Qv
cnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwKQEAgLTMw
LDkgKzMwLDkgQEAgdXNlIHdhcm5pbmdzOwogCiB1c2UgRmlsZTo6U3BlYzsKIHVzZSBGaW5kQmlu
OwotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7Cit1c2Ug
bGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKIHVzZSBU
ZXN0OjpNb3JlOwotdXNlIExvYWRBc01vZHVsZSBxdyhSdW5MZWFrcyBydW4tbGVha3MpOwordXNl
IHdlYmtpdHBlcmw6OmxlYWtzIHF3KHBhcnNlTGVha3NPdXRwdXQpOwogCiBteSBAaW5wdXQgPSBz
cGxpdCgvXG4vLCA8PEVPRik7CiBQcm9jZXNzOiAgICAgICAgIER1bXBSZW5kZXJUcmVlIFsyOTkw
M10KQEAgLTE2OCw3ICsxNjgsNyBAQCBFT0YKICAgfSwKIF07CiAKLW15ICRhY3R1YWxPdXRwdXQg
PSBSdW5MZWFrczo6cGFyc2VMZWFrc091dHB1dChAaW5wdXQpOworbXkgJGFjdHVhbE91dHB1dCA9
IHBhcnNlTGVha3NPdXRwdXQoQGlucHV0KTsKIAogcGxhbih0ZXN0cyA9PiAxKTsKIGlzX2RlZXBs
eSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRPdXRwdXQsICJsZWFrcyBSZXBvcnQgVmVyc2lvbiAy
LjAgKG5ldykiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVh
a3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbCBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5w
bAppbmRleCA2NmY5YWQzNTYzMWUuLjIwMmRjMzFkNGQwMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYyLjAt
b2xkLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3Qv
cnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbApAQCAtMzAsOSArMzAsOSBAQCB1c2Ugd2Fybmlu
Z3M7CiAKIHVzZSBGaWxlOjpTcGVjOwogdXNlIEZpbmRCaW47Ci11c2UgbGliIEZpbGU6OlNwZWMt
PmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKK3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGly
KCRGaW5kQmluOjpCaW4sICIuLiIsICIuLiIpOwogdXNlIFRlc3Q6Ok1vcmU7Ci11c2UgTG9hZEFz
TW9kdWxlIHF3KFJ1bkxlYWtzIHJ1bi1sZWFrcyk7Cit1c2Ugd2Via2l0cGVybDo6bGVha3MgcXco
cGFyc2VMZWFrc091dHB1dCk7CiAKIG15IEBpbnB1dCA9IHNwbGl0KC9cbi8sIDw8RU9GKTsKIGxl
YWtzIFJlcG9ydCBWZXJzaW9uOiAgMi4wCkBAIC0xMTgsNyArMTE4LDcgQEAgRU9GCiAgIH0sCiBd
OwogCi1teSAkYWN0dWFsT3V0cHV0ID0gUnVuTGVha3M6OnBhcnNlTGVha3NPdXRwdXQoQGlucHV0
KTsKK215ICRhY3R1YWxPdXRwdXQgPSBwYXJzZUxlYWtzT3V0cHV0KEBpbnB1dCk7CiAKIHBsYW4o
dGVzdHMgPT4gMSk7CiBpc19kZWVwbHkoJGFjdHVhbE91dHB1dCwgJGV4cGVjdGVkT3V0cHV0LCAi
bGVha3MgUmVwb3J0IFZlcnNpb24gMi4wIChvbGQpIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441617</attachid>
            <date>2021-10-18 09:39:58 -0700</date>
            <delta_ts>2021-10-18 10:30:06 -0700</delta_ts>
            <desc>Stop using keyword-like usage of subroutine</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>162185</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMWQ2
ZmJjMGFiYTcuLjYxOGQwZDUxMTFiMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0xMC0xNyAgQmFzdWtlIFN1
enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW3dlYmtpdHBlcmxdIFN0
b3AgdXNpbmcgTG9hZEFzTW9kdWxlLnBtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIG1vZHVsZSBsb2FkIGEgc2NyaXB0IGZpbGUgYXMgbW9kdWxl
IHdpdGggYSBiaXQgdHJpY2t5IHdheS4gSXQgcHJldmVudHMgdGhlIHByb3BlcgorICAgICAgICB1
c2FnZSBvZiBwYWNrYWdlIGFmdGVyIGFsbC4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtb2R1bGUgaXMg
dG8gdGVzdCByb3V0aW5lcyBkZWZpbmVkIGluIHRoZQorICAgICAgICBzY3JpcHQuIEl0IGp1c3Qg
YmUgd3Jvbmcgd2l0aCBzdWNoIHdheS4gSWYgeW91IGhhdmUgc29tZXRoaW5nIHRvIHRlc3QsIGl0
IHNob3VsZCBiZSBzZXBhcmF0ZWQKKyAgICAgICAgYXMgYSBtb2R1bGUgYW5kIGJlIGltcG9ydGVk
IHRvIHRoZSBzY3JpcHQuIFRoZW4gdW5pdCB0ZXN0IGNhbiBsb2FkIHRoZSBtb2R1bGUgYW5kIGNh
biB0ZXN0CisgICAgICAgIHdpdGhvdXQgYW55IHNvcnQgb2YgdHJvdWJsZS4KKworICAgICAgICAq
IFNjcmlwdHMvZmlsdGVyLWJ1aWxkLXdlYmtpdDoKKyAgICAgICAgKHNldE91dHB1dEZvcm1hdE9w
dGlvbik6CisgICAgICAgIChzaG91bGRTaG93U3Vic2VxdWVudExpbmUpOiBNb3ZlZCB0byB3ZWJr
aXRwZXJsL2J1aWxkL291dHB1dC5wbS4KKyAgICAgICAgKHNob3VsZElnbm9yZUxpbmUpOiBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nOgorICAgICAgICAoZ2VuZXJh
dGVGdW5jdGlvbkxpc3RzKToKKyAgICAgICAgKGZldGNoQnVnWE1MRGF0YSk6CisgICAgICAgIChv
cGVuQ2hhbmdlTG9ncyk6CisgICAgICAgIChtZXRob2RfZGVjbF90b19zZWxlY3Rvcik6CisgICAg
ICAgIChkaWZmQ29tbWFuZCk6CisgICAgICAgIChzdGF0dXNDb21tYW5kKToKKyAgICAgICAgKHBy
b3BlcnR5Q2hhbmdlRGVzY3JpcHRpb24pOgorICAgICAgICAobm9ybWFsaXplTGluZUVuZGluZ3Mp
OgorICAgICAgICAoYWN0dWFsbHlHZW5lcmF0ZUZ1bmN0aW9uTGlzdHMpOiBNb3ZlZCB0byB3ZWJr
aXRwZXJsL2NoYW5nZWxvZy4KKyAgICAgICAgKGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucyk6IERp
dHRvLgorICAgICAgICAoZmV0Y2hCdWdEZXNjcmlwdGlvbkZyb21CdWdYTUxEYXRhKTogRGl0dG8u
CisgICAgICAgIChmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEpOiBEaXR0by4KKyAgICAgICAg
KGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcyk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9u
X2xpbmVfcmFuZ2VzX2Zvcl9jcHApOiBEaXR0by4KKyAgICAgICAgKGRlbGV0ZV9uYW1lc3BhY2Vz
X2Zyb21fcmFuZ2VzX2Zvcl9jcHApOiBEaXR0by4KKyAgICAgICAgKGlzX2Z1bmN0aW9uX2luX25h
bWVzcGFjZSk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9q
YXZhKTogRGl0dG8uCisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmFz
Y3JpcHQpOiBEaXR0by4KKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVy
bCk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRob24p
OiBEaXR0by4KKyAgICAgICAgKGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKTogRGl0
dG8uCisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3N3aWZ0KTogRGl0dG8u
CisgICAgICAgIChwYXJzZVN3aWZ0RnVuY3Rpb25BcmdzKTogRGl0dG8uCisgICAgICAgIChhdHRy
aWJ1dGVDb21tYW5kKTogRGl0dG8uCisgICAgICAgIChleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFu
Z2UpOiBEaXR0by4KKyAgICAgICAgKGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UpOiBEaXR0
by4KKyAgICAgICAgKGRlY29kZUVudGl0aWVzKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9y
dW4tbGVha3M6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKHJlbW92ZU1hdGNoaW5nUmVjb3Jk
cyk6CisgICAgICAgIChydW5MZWFrcyk6IE1vdmVkIHRvIHdlYmtpdHBlcmwvbGVha3MucG0uCisg
ICAgICAgIChwYXJzZUxlYWtzT3V0cHV0KTogRGl0dG8uCisgICAgICAgIChyZXBvcnRFcnJvcik6
IERlbGV0ZWQuIFVzZSBDYXJwOjpjcm9hayBpbnN0ZWFkLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0ZGlycy5wbToKKyAgICAgICAgKGRldGVybWluZUJhc2VQcm9kdWN0RGlyKToKKyAgICAgICAg
KGRldGVybWluZUN1cnJlbnRTVk5SZXZpc2lvbik6CisgICAgICAgIChjaGRpcldlYktpdCk6Cisg
ICAgICAgIChkZXRlcm1pbmVTb3VyY2VEaXIpOiBNb3ZlZCB0byB3ZWJraXRwZXJsL2RpcnMucG0u
CisgICAgICAgIChzZXRTb3VyY2VEaXIpOiBEaXR0by4KKyAgICAgICAgKHNvdXJjZURpcik6IERp
dHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG06IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2J1aWxkL291dHB1dC5wbTogRXh0cmFj
dGVkIGZyb20gVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0LgorICAgICAgICAoc2hv
dWxkU2hvd1N1YnNlcXVlbnRMaW5lKToKKyAgICAgICAgKHNob3VsZElnbm9yZUxpbmUpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9jaGFuZ2Vsb2cucG06IEV4dHJhY3RlZCBmcm9tIFRv
b2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cuCisgICAgICAgIChhY3R1YWxseUdlbmVyYXRl
RnVuY3Rpb25MaXN0cyk6CisgICAgICAgIChleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UpOgor
ICAgICAgICAoZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSk6CisgICAgICAgIChhdHRyaWJ1
dGVDb21tYW5kKToKKyAgICAgICAgKGZldGNoQnVnRGVzY3JpcHRpb25Gcm9tQnVnWE1MRGF0YSk6
CisgICAgICAgIChmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEpOgorICAgICAgICAoY29tcHV0
ZU1vZGlmaWVkRnVuY3Rpb25zKToKKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcyk6
CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2NwcCk6CisgICAgICAgIChk
ZWxldGVfbmFtZXNwYWNlc19mcm9tX3Jhbmdlc19mb3JfY3BwKToKKyAgICAgICAgKGlzX2Z1bmN0
aW9uX2luX25hbWVzcGFjZSk6CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9y
X2phdmEpOgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0
KToKKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybCk6CisgICAgICAg
IChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhvbik6CisgICAgICAgIChnZXRfc2Vs
ZWN0b3JfbGluZV9yYW5nZXNfZm9yX2Nzcyk6CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9y
YW5nZXNfZm9yX3N3aWZ0KToKKyAgICAgICAgKHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3MpOgorICAg
ICAgICAoZGVjb2RlRW50aXRpZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9kaXJz
LnBtOiBFeHRyYWN0ZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMuCisgICAgICAgIChz
b3VyY2VEaXIpOgorICAgICAgICAoc2V0U291cmNlRGlyKToKKyAgICAgICAgKGRldGVybWluZVNv
dXJjZURpcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2ZpbHRlci1idWlsZC13ZWJr
aXRfdW5pdHRlc3Qvc2hvdWxkSWdub3JlTGluZV91bml0dGVzdHMucGw6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL2xlYWtzLnBtOiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1s
ZWFrcy4KKyAgICAgICAgKHJ1bkxlYWtzKToKKyAgICAgICAgKHBhcnNlTGVha3NPdXRwdXQpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9l
eHRyYWN0TGluZVJhbmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2UucGw6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2ZldGNoUmFkYXJVUkxGcm9t
QnVnWE1MRGF0YS5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFu
Z2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGw6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rp
b25MaXN0cy5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VM
b2dfdW5pdHRlc3QvcGFyc2VyX3VuaXR0ZXN0cy5wbDoKKyAgICAgICAgKGNvbnZlcnRBYnNvbHV0
ZVBhdGhUb1JlbGF0aXZlVW5peFBhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4w
LW5ldy5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0
L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1vbGQucGw6CisKIDIwMjEtMTAtMTUgIEJKIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBoYW5kbGUg
UHJvbWlzZSBvYmplY3RzIHJldHVybmVkIGZyb20gZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRh
YgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0IGIvVG9vbHMv
U2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0CmluZGV4IGZjMmE1YzRhOGViZi4uNTMwMzFkYjM0
MWJmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQKKysrIGIv
VG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0CkBAIC0zMyw2ICszMyw3IEBAIHVzZSBG
aW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBW
Q1NVdGlsczsKK3VzZSB3ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0IHF3KHNob3VsZElnbm9yZUxp
bmUgJHBsYXRmb3JtKTsKIAogdXNlIGNvbnN0YW50IHsKICAgICBTVFlMRV9QTEFJTiA9PiAwLApA
QCAtNjYsNyArNjcsNiBAQCBIVE1MRk9PVEVSCiBzdWIgcHJpbnRMaW5lKCQkKTsKIHN1YiBzZXRM
b2dmaWxlT3B0aW9uKCQkKTsKIHN1YiBzZXRPdXRwdXRGb3JtYXRPcHRpb24oJCQpOwotc3ViIHNo
b3VsZElnbm9yZUxpbmUoJCQpOwogc3ViIHVzYWdlQW5kRXhpdCgpOwogCiAjIERlZmluZWQgaW4g
VkNTVXRpbHMuCkBAIC03NCw3ICs3NCw2IEBAIHN1YiBwb3NzaWJseUNvbG9yZWQoJCQpOwogCiAj
IEdsb2JhbCB2YXJpYWJsZXMgdXNlZCBvbmx5IGluIGdsb2JhbCBzY29wZS4KIG15ICRvdXRwdXRQ
YXRoID0gIiZTVERPVVQiOwotbXkgJHBsYXRmb3JtID0gIm1hYyI7CiBteSAkc2hvd0hlbHA7CiAK
ICMgR2xvYmFsIHZhcmlhYmxlcyB1c2VkIGluIGdsb2JhbCBhbmQgc3Vicm91dGluZSBzY29wZS4K
QEAgLTgyLDggKzgxLDYgQEAgb3VyICRsb2dVbmZpbHRlcmVkT3V0cHV0Owogb3VyICRvdXRwdXRG
b3JtYXQgPSAidGV4dCI7CiBvdXIgJHVuZmlsdGVyZWRPdXRwdXRQYXRoID0gImJ1aWxkLmxvZyI7
CiBvdXIgJHVzZUNvbG9yID0gLXQgU1RET1VUOwotb3VyICRpbkVudGl0bGVtZW50cyA9IDA7Ci1v
dXIgJGluRGV2aWNlUHJlcGFyYXRpb25XYXJuaW5ncyA9IDA7CiAKIHN1YiB1c2FnZUFuZEV4aXQo
KQogewpAQCAtMjc2LDEyNyArMjczLDMgQEAgc3ViIHNldE91dHB1dEZvcm1hdE9wdGlvbigkJCkK
ICAgICB9CiAgICAgJG91dHB1dEZvcm1hdCA9ICR2YWx1ZTsKIH0KLQotc3ViIHNob3VsZFNob3dT
dWJzZXF1ZW50TGluZSgkKQotewotICAgIG15ICgkbGluZSkgPSBAXzsKLQotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9yZWZlcmVuY2VkIGZyb206JC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gLyhub3RlOnxlcnJvcjopLzsKLQotICAgIHJldHVybiAwOwotfQotCi1zdWIgc2hvdWxkSWdu
b3JlTGluZSgkJCkKLXsKLSAgICBteSAoJHByZXZpb3VzTGluZSwgJGxpbmUpID0gQF87Ci0KLSAg
ICBpZiAoJGxpbmUgPX4gL15FbnRpdGxlbWVudHM6JC8pIHsKLSAgICAgICAgJGluRW50aXRsZW1l
bnRzID0gMTsKLSAgICAgICAgcmV0dXJuIDEKLSAgICB9Ci0KLSAgICBpZiAoJGluRW50aXRsZW1l
bnRzKSB7Ci0gICAgICAgICRpbkVudGl0bGVtZW50cyA9IDAgaWYgJGxpbmUgPX4gL159JC87Ci0g
ICAgICAgIHJldHVybiAxCi0gICAgfQotCi0gICAgIyBpUGhvbmUgcHJlcGFyYXRpb24gZXJyb3Jz
IGFsd2F5cyBzdGFydCBhbmQgZW5kIHdpdGggbGluZXMgY29udGFpbmluZyAnaVBob25lQ29ubmVj
dDonLgotICAgIGlmICgkaW5EZXZpY2VQcmVwYXJhdGlvbldhcm5pbmdzKSB7Ci0gICAgICAgICRp
bkRldmljZVByZXBhcmF0aW9uV2FybmluZ3MgPSAwIGlmICRsaW5lID1+IC89PSBFTkQ6IFVuZGVy
bHlpbmcgZGV2aWNlIHByZXBhcmF0aW9uIHdhcm5pbmdzID09LzsKLSAgICAgICAgcmV0dXJuIDEK
LSAgICB9Ci0KLSAgICBpZiAoJGxpbmUgPX4gL2lQaG9uZUNvbm5lY3Q6LykgewotICAgICAgICAk
aW5EZXZpY2VQcmVwYXJhdGlvbldhcm5pbmdzID0gMTsKLSAgICAgICAgcmV0dXJuIDEKLSAgICB9
Ci0KLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKiQvOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eQ29tbWFuZCBsaW5lIGludm9jYXRpb246LzsKLSAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXkJ1aWxkIHNldHRpbmdzIGZyb20gY29tbWFuZCBsaW5lOi87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15Vc2VyIGRlZmF1bHRzIGZyb20gY29tbWFuZCBsaW5lOi87Ci0gICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15QcmVwYXJlIGJ1aWxkLzsKLSAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXkJ1aWxkIHN5c3RlbSBpbmZvcm1hdGlvbi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15ub3RlOiBQbGFubmluZyBidWlsZC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15u
b3RlOiBDb25zdHJ1Y3RpbmcgYnVpbGQgZGVzY3JpcHRpb24vOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9ebm90ZTogQnVpbGQgZGVzY3JpcHRpb24gKGNvbnN0cnVjdGVkfGxvYWRlZCkgaW4g
LiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogVXNpbmcgYnVpbGQgZGVzY3Jp
cHRpb24gLiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogVXNpbmcgZWFnZXIg
Y29tcGlsYXRpb24vOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogRXhlY3V0aW9u
IHBvbGljeSBleGNlcHRpb24gcmVnaXN0cmF0aW9uIGZhaWxlZCBhbmQgd2FzIHNraXBwZWQ6IEVy
cm9yIERvbWFpbj1OU1BPU0lYRXJyb3JEb21haW4gQ29kZT0xICJPcGVyYXRpb24gbm90IHBlcm1p
dHRlZCIvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogZGV0ZWN0ZWQgZW5jb2Rp
bmcgb2YgaW5wdXQgZmlsZSBhcyBVbmljb2RlIFwoLipcKS87Ci0gICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL21ha2UoXFtcZCtcXSk/OiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yLzsKLSAgICByZXR1
cm4gMSBpZiAkbGluZSA9fiAvXkphdmFTY3JpcHRDb3JlXC9jcmVhdGVfaGFzaF90YWJsZS87Ci0g
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL0phdmFTY3JpcHRDb3JlLmZyYW1ld29ya1wvUHJpdmF0
ZUhlYWRlcnNcL2NyZWF0ZV9oYXNoX3RhYmxlLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
XkphdmFTY3JpcHRDb3JlXC9wY3JlXC9kZnRhYmxlcy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15DcmVhdGluZyBoYXNodGFibGUgZm9yIC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15Xcm90ZSBvdXRwdXQgdG8gLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVORE9DVU1F
TlRFRDogLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvbGlidG9vbC4qaGFzIG5vIHN5bWJv
bHMvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eIyBMb3dlciBjYXNlIGFsbCB0aGUgdmFs
dWVzLCBhcyBDU1MgdmFsdWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlJC87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15pZiBzb3J0IC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3NldC13
ZWJraXQtY29uZmlndXJhdGlvbi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15idWlsZGlu
ZyBmaWxlIGxpc3QvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXC5cLyQvOwotICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eXFMrXC5oJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15cUytcLyQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ec2VudCBcZCsgYnl0ZXMvOwot
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9edG90YWwgc2l6ZSBpcy87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL09uZSBvZiB0aGUgdHdvIHdpbGwgYmUgdXNlZFwuIFdoaWNoIG9uZSBpcyB1
bmRlZmluZWRcLi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL1RoZSBMZWdhY3kgQnVpbGQg
U3lzdGVtIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLzsKLSAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvXlwoICh4Y29kZWJ1aWxkfGlmKSAvOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9ed2FybmluZzogY2FuJ3QgZmluZCBhZGRpdGlvbmFsIFNESy87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL153YXJuaW5nOiBubyB1bWJyZWxsYSBoZWFkZXIgZm91bmQgZm9yIHRh
cmdldCAnLionLCBtb2R1bGUgbWFwIHdpbGwgbm90IGJlIGdlbmVyYXRlZCQvOwotICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ed2FybmluZ1w6IGRldGVjdGVkIGludGVybmFsIGluc3RhbGwsIHBh
c3NpbmcgZW50aXRsZW1lbnRzIHRvIHNpbXVsYXRvciBhbnl3YXlcLi87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL21heSBub3QgZnVuY3Rpb24gaW4gdGhlIFNpbXVsYXRvciBiZWNhdXNlIEFk
IEhvYy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL1wvdXNyXC9iaW5cL2NsYW5nIC4qPyBc
PiBcUysuc2IvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8geGNvZGVidWlsZFxbWzAtOV0r
OlswLTlhLWZdK1xdXHMrRFZUQXNzZXJ0aW9uczogV2FybmluZyBpbiAuKi87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL14oRGV0YWlsc3xPYmplY3R8TWV0aG9kfEZ1bmN0aW9ufFRocmVhZCk6
LzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlBsZWFzZSBmaWxlIGEgYnVnIGF0IC87Ci0g
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL2NyZWF0ZWQgYnkgYW4gdW5zdXBwb3J0ZWQgWENEZXBl
bmRlbmN5R3JhcGggYnVpbGQkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvd2FybmluZzog
VGhlIGFzc2lnbm1lbnQgb2YgJy4qJyBhdCAiLioiIHVzZXMgXCRcKGluaGVyaXRlZFwpLiBJbiB0
aGUgbmV3IGJ1aWxkIHN5c3RlbSB0aGlzIHdpbGwgaW5oZXJpdCBmcm9tIGFuIGVhcmxpZXIgZGVm
aW5pdGlvbiBvZiAnLionIGluIHRoaXMgeGNjb25maWcgZmlsZSBvciBpdHMgaW1wb3J0czsgdGhl
IG9sZCBidWlsZCBzeXN0ZW0gd291bGQgZGlzY2FyZCBlYXJsaWVyIGRlZmluaXRpb25zLiBUaGlz
IG1heSByZXN1bHQgaW4gY2hhbmdlcyB0byByZXNvbHZlZCBidWlsZCBzZXR0aW5nIHZhbHVlcy4v
OwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8uKiBjb20uYXBwbGUuYWN0b29sLmNvbXBpbGF0
aW9uLXJlc3VsdHMgLiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8uKlwvQXNzZXRzLmNh
ci87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLy4qXC9hc3NldGNhdGFsb2dfZ2VuZXJhdGVk
X2luZm8ucGxpc3QvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebW91bnQ6IC4rIGZhaWxl
ZCB3aXRoLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVzaW5nIC4rIHByb2R1Y3Rpb24g
ZW52aXJvbm1lbnQuJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3JlcGxhY2luZyBleGlz
dGluZyBzaWduYXR1cmUkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVubG9ja2luZyAn
LipcLmtleWNoYWluLWRiJyQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXGQrIGxvY2Fs
aXphYmxlIHN0cmluZ3MkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxkKyBwbHVyYWwg
cnVsZXMkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlRoZSBsaXN0IG9mIGV4cG9ydGVk
IHN5bWJvbHMgZGlkIG5vdCBjaGFuZ2UuJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15k
aXR0bzogQ2Fubm90IGdldCB0aGUgcmVhbCBwYXRoIGZvciBzb3VyY2UvOwotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eRHVwbGljYXRlIEVudHJ5IFdhcyBTa2lwcGVkOi87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL15BZGRpbmcgLio/ZW50aXRsZW1lbnRzLzsKLSAgICByZXR1cm4gMSBp
ZiAkbGluZSA9fiAvXk1ha2luZyBhcHAgYnVuZGxlIGxhdW5jaGFibGUvOwotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eRmluaXNoZWQgYWRkaW5nIGVudGl0bGVtZW50c1wuJC87Ci0gICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL14uKiB3aWxsIG5vdCBiZSBjb2RlIHNpZ25lZCBiZWNhdXNlIGl0
cyBzZXR0aW5ncyBkb24ndCBzcGVjaWZ5IGEgZGV2ZWxvcG1lbnQgdGVhbS4kLzsKLQotICAgIGlm
ICgkcGxhdGZvcm0gZXEgIndpbiIpIHsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15c
cyoodG91Y2h8cGVybHxjYXR8cm0gLWZ8ZGVsfHB5dGhvbnxcL3VzclwvYmluXC9nXCtcK3xncGVy
ZnxlY2hvfHNlZHxpZiBcWyBcLWZ8V2ViQ29yZVwvZ2VuZXJhdGUtZXhwb3J0LWZpbGUpIC87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqKGlmIG5vdCBleGlzdCBcInxpZiBlcnJv
cmxldmVsIDEpLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyheXHMqfE1TQjMwNzM6
XHMrKShzZXQgfFJFTSB8Y21kIFwvYykvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
XlxzKltjQ106XFxbcFBdcm9ncmFtIFtmRl1pbGVzLipcXC4qXFwoQ0x8bWlkbClcLmV4ZSAvOwot
ICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKlByb2Nlc3NpbmcgLipcLihhY2Z8aHxp
ZGwpXHMqJC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqcHJpbnRmIC87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqXC91c3JcL2JpblwvYmFzaFxzKi87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqb2ZmbGluZWFzbTogTm90aGluZyBjaGFu
Z2VkLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyBcZCsgRmlsZVwoc1wpIGNvcGll
ZC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqRmlsZSBub3QgZm91bmQgLSBc
KlwuaC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ta2RpclxzK1wiLzsKLSAgICAg
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3hjb3B5IFwveSBcL2QgXCIvOwotICAgICAgICByZXR1
cm4gMSBpZiAkbGluZSA9fiAvXC5vYmpcIlxzKiQvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvOlxzKyhjbWQgXC9jfHNldClccysvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvTVNCMzA3MzpccyskLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL01TQjMwNzM6
XHMraWYgbm90IGV4aXN0LzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3doaWNoLmV4
ZSBiYXNoLzsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXih0
b3VjaHxwZXJsfGNhdHxybSAtZnxweXRob258XC91c3JcL2JpblwvZ1wrXCt8XC9iaW5cL2xufGdw
ZXJmfGVjaG98c2VkfGlmIFxbIFwtZnxXZWJDb3JlXC9nZW5lcmF0ZS1leHBvcnQtZmlsZXx3cml0
ZS1maWxlfGNobW9kKSAvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXiAgICAvICYm
ICFzaG91bGRTaG93U3Vic2VxdWVudExpbmUoJHByZXZpb3VzTGluZSk7Ci0gICAgICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ecHJpbnRmIC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eb2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLzsKLSAgICB9Ci0gICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL15TaG93aW5nIGZpcnN0LzsKLQotICAgIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZyBiL1Rvb2xzL1NjcmlwdHMvcHJlcGFy
ZS1DaGFuZ2VMb2cKaW5kZXggNDEwNjNjMGIxOTcwLi43MTNkZTk5NGQ4ZmUgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cKKysrIGIvVG9vbHMvU2NyaXB0cy9wcmVw
YXJlLUNoYW5nZUxvZwpAQCAtNjMsMzAgKzYzLDIyIEBAIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsK
IHVzZSBMaXN0OjpVdGlsIHF3L21heC87CiB1c2UgUE9TSVggcXcoc3RyZnRpbWUpOwogdXNlIFZD
U1V0aWxzOwordXNlIHdlYmtpdHBlcmw6OmNoYW5nZWxvZzsKIAotc3ViIGFjdHVhbGx5R2VuZXJh
dGVGdW5jdGlvbkxpc3RzKCQkJCQkJCk7Ci1zdWIgYXR0cmlidXRlQ29tbWFuZCgkJCQpOwogc3Vi
IGNoYW5nZUxvZ0RhdGUoJCk7CiBzdWIgY2hhbmdlTG9nRW1haWxBZGRyZXNzRnJvbUFyZ3MoJCQp
Owogc3ViIGNoYW5nZUxvZ05hbWVGcm9tQXJncygkJCk7Ci1zdWIgY29tcHV0ZU1vZGlmaWVkRnVu
Y3Rpb25zKCQkJCk7CiBzdWIgY3JlYXRlUGF0Y2hDb21tYW5kKCQkJCQpOwotc3ViIGRlY29kZUVu
dGl0aWVzKCQpOwogc3ViIGRldGVybWluZVByb3BlcnR5Q2hhbmdlcygkJCQpOwogc3ViIGRpZmZD
b21tYW5kKCQkJCQpOwogc3ViIGRpZmZGcm9tVG9TdHJpbmcoJCQkKTsKLXN1YiBleHRyYWN0TGlu
ZVJhbmdlQWZ0ZXJDaGFuZ2UoJCk7Ci1zdWIgZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgk
KTsKIHN1YiBmZXRjaEJ1Z1hNTERhdGEoJCQpOwotc3ViIGZldGNoQnVnRGVzY3JpcHRpb25Gcm9t
QnVnWE1MRGF0YSgkJCQpOwotc3ViIGZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YSgkJCk7CiBz
dWIgZmluZENoYW5nZUxvZ3MoJCQpOwogc3ViIGZpbmRPcmlnaW5hbEZpbGVGcm9tU3ZuKCQpOwog
c3ViIGdlbmVyYXRlRmlsZUxpc3QoXCUkJCRcJSk7CiBzdWIgZ2VuZXJhdGVGdW5jdGlvbkxpc3Rz
KCQkJCQkKTsKIHN1YiBnZW5lcmF0ZU5ld0NoYW5nZUxvZ3MoJCQkJCQkJCQkJCQkJCQkKTsKIHN1
YiBnZXRMYXRlc3RDaGFuZ2VMb2dzKCQpOwotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcygk
JCk7CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJCQpOwogc3ViIGRlbGV0
ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2VzX2Zvcl9jcHAoXEBcQCk7CiBzdWIgaXNfZnVuY3Rpb25f
aW5fbmFtZXNwYWNlKCQkKTsKQEAgLTk1LDcgKzg3LDYgQEAgc3ViIGdldF9mdW5jdGlvbl9saW5l
X3Jhbmdlc19mb3JfamF2YXNjcmlwdCgkJCk7CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2Vz
X2Zvcl9wZXJsKCQkKTsKIHN1YiBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcygkJCk7
CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCgkJCk7Ci1zdWIgcGFyc2VT
d2lmdEZ1bmN0aW9uQXJncygkKTsKIHN1YiBpc0FkZGVkU3RhdHVzKCQpOwogc3ViIGlzQ29uZmxp
Y3RTdGF0dXMoJCQkKTsKIHN1YiBpc01vZGlmaWVkU3RhdHVzKCQpOwpAQCAtMzEzLDEzNiArMzA0
LDYgQEAgc3ViIGdlbmVyYXRlRnVuY3Rpb25MaXN0cygkJCQkJCkKICAgICBhY3R1YWxseUdlbmVy
YXRlRnVuY3Rpb25MaXN0cygkY2hhbmdlZEZpbGVzLCAkZnVuY3Rpb25MaXN0cywgJGdpdENvbW1p
dCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlLCBcJWRlbGVnYXRlSGFzaCk7CiB9CiAKLXN1YiBhY3R1
YWxseUdlbmVyYXRlRnVuY3Rpb25MaXN0cygkJCQkJCQpCi17Ci0gICAgbXkgKCRjaGFuZ2VkRmls
ZXMsICRmdW5jdGlvbkxpc3RzLCAkZ2l0Q29tbWl0LCAkZ2l0SW5kZXgsICRtZXJnZUJhc2UsICRk
ZWxlZ2F0ZUhhc2hSZWYpID0gQF87Ci0KLSAgICBteSAlbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdl
ZDsKLSAgICBteSAlbGluZV9yYW5nZXNfYmVmb3JlX2NoYW5nZWQ7Ci0gICAgaWYgKEAkY2hhbmdl
ZEZpbGVzKSB7Ci0gICAgICAgICMgRm9yIGVhY2ggZmlsZSwgYnVpbGQgYSBsaXN0IG9mIG1vZGlm
aWVkIGxpbmVzLgotICAgICAgICAjIFVzZSBsaW5lIG51bWJlcnMgZnJvbSB0aGUgImFmdGVyIiBz
aWRlIG9mIGVhY2ggZGlmZi4KLSAgICAgICAgcHJpbnQgU1RERVJSICIgIFJldmlld2luZyBkaWZm
IHRvIGRldGVybWluZSB3aGljaCBsaW5lcyBjaGFuZ2VkLlxuIjsKLSAgICAgICAgbXkgJGZpbGU7
Ci0gICAgICAgIG15ICRkaWZmRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hSZWYtPntvcGVuRGlm
Zn0oJGNoYW5nZWRGaWxlcywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlKTsKLSAg
ICAgICAgaWYgKCEkZGlmZkZpbGVIYW5kbGUpIHsKLSAgICAgICAgICAgIGRpZSAiVGhlIGRpZmYg
ZmFpbGVkOiAkIS5cbiI7Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKDwkZGlmZkZpbGVIYW5k
bGU+KSB7Ci0gICAgICAgICAgICBteSAkZmlsZVBhdGggPSBwYXJzZURpZmZTdGFydExpbmUoJF8p
OwotICAgICAgICAgICAgJGZpbGUgPSAkZGVsZWdhdGVIYXNoUmVmLT57bm9ybWFsaXplUGF0aH0o
JGZpbGVQYXRoKSBpZiAkZmlsZVBhdGg7Ci0gICAgICAgICAgICBpZiAoZGVmaW5lZCAkZmlsZSkg
ewotICAgICAgICAgICAgICAgIG15ICgkYmVmb3JlX3N0YXJ0LCAkYmVmb3JlX2VuZCkgPSBleHRy
YWN0TGluZVJhbmdlQmVmb3JlQ2hhbmdlKCRfKTsKLSAgICAgICAgICAgICAgICBpZiAoJGJlZm9y
ZV9zdGFydCA+PSAxICYmICRiZWZvcmVfZW5kID49IDEpIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaCBAeyRsaW5lX3Jhbmdlc19iZWZvcmVfY2hhbmdlZHskZmlsZX19LCBbICRiZWZvcmVfc3Rh
cnQsICRiZWZvcmVfZW5kIF07Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01N
SVQvKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAk
ZmlsZSBjb250YWlucyB0aGUgc3RyaW5nIERPX05PVF9DT01NSVQsIGxpbmUgJC5cbiI7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG15ICgkYWZ0ZXJfc3RhcnQsICRhZnRlcl9l
bmQpID0gZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlKCRfKTsKLSAgICAgICAgICAgICAgICBp
ZiAoJGFmdGVyX3N0YXJ0ID49IDEgJiYgJGFmdGVyX2VuZCA+PSAxKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2ggQHskbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmlsZX19LCBbICRhZnRl
cl9zdGFydCwgJGFmdGVyX2VuZCBdOwotICAgICAgICAgICAgICAgIH0gZWxzaWYgKC9ET19OT1Rf
Q09NTUlULykgewotICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIldBUk5JTkc6IGZp
bGUgJGZpbGUgY29udGFpbnMgdGhlIHN0cmluZyBET19OT1RfQ09NTUlULCBsaW5lICQuXG4iOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjbG9z
ZSgkZGlmZkZpbGVIYW5kbGUpOwotICAgIH0KLQotICAgICMgRm9yIGVhY2ggc291cmNlIGZpbGUs
IGNvbnZlcnQgbGluZSByYW5nZSB0byBmdW5jdGlvbiBsaXN0LgotICAgIHByaW50IFNUREVSUiAi
ICBFeHRyYWN0aW5nIGFmZmVjdGVkIGZ1bmN0aW9uIG5hbWVzIGZyb20gc291cmNlIGZpbGVzLlxu
IjsKLSAgICBteSAlZmlsZXNUb0V4YW1pbmUgPSBtYXAgeyAkXyA9PiAxIH0gKGtleXMoJWxpbmVf
cmFuZ2VzX2JlZm9yZV9jaGFuZ2VkKSwga2V5cyglbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZCkp
OwotICAgIGZvcmVhY2ggbXkgJGZpbGUgKGtleXMgJWZpbGVzVG9FeGFtaW5lKSB7Ci0gICAgICAg
IG15ICVzYXdfZnVuY3Rpb247Ci0KLSAgICAgICAgIyBGaW5kIGFsbCB0aGUgZnVuY3Rpb25zIGlu
IHRoZSBmaWxlLgotICAgICAgICBteSAkc291cmNlRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hS
ZWYtPntvcGVuRmlsZX0oJGZpbGUpOwotICAgICAgICBuZXh0IHVubGVzcyAkc291cmNlRmlsZUhh
bmRsZTsKLSAgICAgICAgbXkgQGFmdGVyQ2hhbmdlRnVuY3Rpb25SYW5nZXMgPSBnZXRfZnVuY3Rp
b25fbGluZV9yYW5nZXMoJHNvdXJjZUZpbGVIYW5kbGUsICRmaWxlKTsKLSAgICAgICAgY2xvc2Uo
JHNvdXJjZUZpbGVIYW5kbGUpOwotCi0gICAgICAgICMgRmluZCBtb2RpZmllZCBmdW5jdGlvbnMg
aW4gdGhlIGZpbGUuCi0gICAgICAgIGlmICgkbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmls
ZX0pIHsKLSAgICAgICAgICAgIG15IEBjaGFuZ2VfcmFuZ2VzID0gKEB7JGxpbmVfcmFuZ2VzX2Fm
dGVyX2NoYW5nZWR7JGZpbGV9fSwgW10pOwotICAgICAgICAgICAgbXkgQGZ1bmN0aW9ucyA9IGNv
bXB1dGVNb2RpZmllZEZ1bmN0aW9ucygkZmlsZSwgXEBjaGFuZ2VfcmFuZ2VzLCBcQGFmdGVyQ2hh
bmdlRnVuY3Rpb25SYW5nZXMpOwotCi0gICAgICAgICAgICAjIEZvcm1hdCB0aGUgbGlzdCBvZiBm
dW5jdGlvbnMuCi0gICAgICAgICAgICBpZiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgICAg
ICRmdW5jdGlvbkxpc3RzLT57JGZpbGV9ID0gIiIgaWYgIWRlZmluZWQgJGZ1bmN0aW9uTGlzdHMt
PnskZmlsZX07Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gLj0gIlxu
ICAgICAgICAoIiAuIGpvaW4oIik6XG4gICAgICAgICgiLCBAZnVuY3Rpb25zKSAuICIpOiI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgIyBGaW5kIHRoZSBkZWxldGVkIGZ1bmN0
aW9ucyBpbiB0aGUgb3JpZ2luYWwgZmlsZS4KLSAgICAgICAgaWYgKCRsaW5lX3Jhbmdlc19iZWZv
cmVfY2hhbmdlZHskZmlsZX0pIHsKLSAgICAgICAgICAgIG15ICRvcmlnaW5hbEZpbGVIYW5kbGUg
PSAkZGVsZWdhdGVIYXNoUmVmLT57b3Blbk9yaWdpbmFsRmlsZX0oJGZpbGUsICRnaXRDb21taXQs
ICRnaXRJbmRleCwgJG1lcmdlQmFzZSk7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkb3JpZ2lu
YWxGaWxlSGFuZGxlOwotICAgICAgICAgICAgbXkgQGJlZm9yZUNoYW5nZUZ1bmN0aW9uUmFuZ2Vz
ID0gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzKCRvcmlnaW5hbEZpbGVIYW5kbGUsICRmaWxlKTsK
LSAgICAgICAgICAgIGNsb3NlKCRvcmlnaW5hbEZpbGVIYW5kbGUpOwotCi0gICAgICAgICAgICBt
eSAlZXhpc3RzQWZ0ZXJDaGFuZ2UgPSBtYXAgeyAkXy0+WzJdID0+IDEgfSBAYWZ0ZXJDaGFuZ2VG
dW5jdGlvblJhbmdlczsKLQotICAgICAgICAgICAgbXkgQGZ1bmN0aW9uczsKLSAgICAgICAgICAg
IG15ICVzYXdGdW5jdGlvbnM7Ci0gICAgICAgICAgICBmb3IgbXkgJGZ1bmN0aW9uUmFuZ2UgKEBi
ZWZvcmVDaGFuZ2VGdW5jdGlvblJhbmdlcykgewotICAgICAgICAgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSAkZnVuY3Rpb25SYW5nZS0+WzJdOwotICAgICAgICAgICAgICAgIGlmICghJGV4aXN0
c0FmdGVyQ2hhbmdleyRmdW5jdGlvbk5hbWV9ICYmICEkc2F3RnVuY3Rpb25zeyRmdW5jdGlvbk5h
bWV9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2ggQGZ1bmN0aW9ucywgJGZ1bmN0aW9uTmFt
ZTsKLSAgICAgICAgICAgICAgICAgICAgJHNhd0Z1bmN0aW9uc3skZnVuY3Rpb25OYW1lfSA9IDE7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIEZvcm1h
dCB0aGUgbGlzdCBvZiBkZWxldGVkIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgIGlmIChAZnVuY3Rp
b25zKSB7Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gPSAiIiBpZiAh
ZGVmaW5lZCAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfTsKLSAgICAgICAgICAgICAgICAkZnVuY3Rp
b25MaXN0cy0+eyRmaWxlfSAuPSAiXG4gICAgICAgICgiIC4gam9pbigiKTogRGVsZXRlZC5cbiAg
ICAgICAgKCIsIEBmdW5jdGlvbnMpIC4gIik6IERlbGV0ZWQuIjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLX0KLQotc3ViIGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucygkJCQpCi17
Ci0gICAgbXkgKCRmaWxlLCAkY2hhbmdlZExpbmVSYW5nZXMsICRmdW5jdGlvblJhbmdlcykgPSBA
XzsKLQotICAgIG15ICVzYXdGdW5jdGlvbjsKLQotICAgICMgRmluZCBhbGwgdGhlIG1vZGlmaWVk
IGZ1bmN0aW9ucy4KLSAgICBteSBAZnVuY3Rpb25zOwotICAgIG15IEBjaGFuZ2VfcmFuZ2VzID0g
QHskY2hhbmdlZExpbmVSYW5nZXN9OwotICAgIG15IEBjaGFuZ2VfcmFuZ2UgPSAoMCwgMCk7Ci0g
ICAgRlVOQ1RJT046IGZvcmVhY2ggbXkgJGZ1bmN0aW9uX3JhbmdlX3JlZiAoQHskZnVuY3Rpb25S
YW5nZXN9KSB7Ci0gICAgICAgIG15IEBmdW5jdGlvbl9yYW5nZSA9IEB7JGZ1bmN0aW9uX3Jhbmdl
X3JlZn07Ci0KLSAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2suIElmIHRoZSBmdW5jdGlv
biBuYW1lIGlzIGVtcHR5LCBza2lwIGl0LgotICAgICAgICAjIFRoZSBjcHAsIHB5dGhvbiwgamF2
YXNjcmlwdCwgcGVybCwgY3NzIGFuZCBqYXZhIHBhcnNlcnMKLSAgICAgICAgIyBhcmUgbm90IHBl
cmZlY3RseSBpbXBsZW1lbnRlZCBhbmQgc29tZXRpbWVzIGZ1bmN0aW9uIG5hbWVzIGNhbm5vdCBi
ZSByZXRyaWV2ZWQKLSAgICAgICAgIyBjb3JyZWN0bHkuIEFzIHlvdSBjYW4gc2VlIGluIGdldF9m
dW5jdGlvbl9saW5lX3Jhbmdlc19YWFhYKCksIHRob3NlIHBhcnNlcnMKLSAgICAgICAgIyBhcmUg
bm90IGludGVuZGVkIHRvIGltcGxlbWVudCByZWFsIHBhcnNlcnMgYnV0IGludGVuZGVkIHRvIGp1
c3QgcmV0cmlldmUgZnVuY3Rpb24gbmFtZXMKLSAgICAgICAgIyBmb3IgbW9zdCBwcmFjdGljYWwg
c3ludGF4ZXMuCi0gICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvbl9yYW5nZVsyXTsKLQotICAg
ICAgICAjIEFkdmFuY2UgdG8gc3VjY2Vzc2l2ZSBjaGFuZ2UgcmFuZ2VzLgotICAgICAgICBmb3Ig
KDs7IEBjaGFuZ2VfcmFuZ2UgPSBAe3NoaWZ0IEBjaGFuZ2VfcmFuZ2VzfSkgewotICAgICAgICAg
ICAgbGFzdCBGVU5DVElPTiB1bmxlc3MgQGNoYW5nZV9yYW5nZTsKLQotICAgICAgICAgICAgIyBJ
ZiBwYXN0IHRoaXMgZnVuY3Rpb24sIG1vdmUgb24gdG8gdGhlIG5leHQgb25lLgotICAgICAgICAg
ICAgbmV4dCBGVU5DVElPTiBpZiAkY2hhbmdlX3JhbmdlWzBdID4gJGZ1bmN0aW9uX3JhbmdlWzFd
OwotCi0gICAgICAgICAgICAjIElmIGFuIG92ZXJsYXAgd2l0aCB0aGlzIGZ1bmN0aW9uIHJhbmdl
LCByZWNvcmQgdGhlIGZ1bmN0aW9uIG5hbWUuCi0gICAgICAgICAgICBpZiAoJGNoYW5nZV9yYW5n
ZVsxXSA+PSAkZnVuY3Rpb25fcmFuZ2VbMF0KLSAgICAgICAgICAgICAgICBhbmQgJGNoYW5nZV9y
YW5nZVswXSA8PSAkZnVuY3Rpb25fcmFuZ2VbMV0pIHsKLSAgICAgICAgICAgICAgICBpZiAoISRz
YXdGdW5jdGlvbnskZnVuY3Rpb25fcmFuZ2VbMl19KSB7Ci0gICAgICAgICAgICAgICAgICAgICRz
YXdGdW5jdGlvbnskZnVuY3Rpb25fcmFuZ2VbMl19ID0gMTsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25fcmFuZ2VbMl07Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIG5leHQgRlVOQ1RJT047Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gQGZ1bmN0aW9uczsKLX0KLQogc3ViIGNoYW5nZUxvZ0RhdGUo
JCkKIHsKICAgICBteSAoJHRpbWVab25lKSA9IEBfOwpAQCAtNTAwLDMyICszNjEsNiBAQCBzdWIg
ZmV0Y2hCdWdYTUxEYXRhKCQkKQogICAgIHJldHVybiAkeG1sRGF0YTsKIH0KIAotc3ViIGZldGNo
QnVnRGVzY3JpcHRpb25Gcm9tQnVnWE1MRGF0YSgkJCQpCi17Ci0gICAgbXkgKCRidWdVUkwsICRi
dWdOdW1iZXIsICRidWdYTUxEYXRhKSA9IEBfOwotCi0gICAgaWYgKCRidWdYTUxEYXRhICF+IC88
c2hvcnRfZGVzYz4oLiopPFwvc2hvcnRfZGVzYz4vKSB7Ci0gICAgICAgIHByaW50IFNUREVSUiAi
ICBCdWcgJGJ1Z051bWJlciBoYXMgbm8gYnVnIGRlc2NyaXB0aW9uLiBNYXliZSB5b3Ugc2V0IHdy
b25nIGJ1ZyBJRD9cbiI7Ci0gICAgICAgIHByaW50IFNUREVSUiAiICBUaGUgYnVnIFVSTDogJGJ1
Z1VSTFxuIjsKLSAgICAgICAgZXhpdCAxOwotICAgIH0KLQotICAgIG15ICRidWdEZXNjcmlwdGlv
biA9IGRlY29kZUVudGl0aWVzKCQxKTsKLSAgICBwcmludCBTVERFUlIgIiAgRGVzY3JpcHRpb24g
ZnJvbSBidWcgJGJ1Z051bWJlcjpcbiAgICBcIiRidWdEZXNjcmlwdGlvblwiLlxuIjsKLSAgICBy
ZXR1cm4gJGJ1Z0Rlc2NyaXB0aW9uOwotfQotCi1zdWIgZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxE
YXRhKCQkKQotewotICAgIG15ICgkYnVnTnVtYmVyLCAkYnVnWE1MRGF0YSkgPSBAXzsKLQotICAg
IHJldHVybiAiIiBpZiAkYnVnWE1MRGF0YSAhfiBtfDx0aGV0ZXh0PlxzKigoJmx0Oyk/cmRhcjov
Lyhwcm9ibGVtLyk/XGQrKCZndDspPyl8OwotCi0gICAgbXkgJGJ1Z1JhZGFyVVJMID0gZGVjb2Rl
RW50aXRpZXMoJDEpOwotICAgIHByaW50IFNUREVSUiAiICBSYWRhciBVUkwgZnJvbSBidWcgJGJ1
Z051bWJlcjpcbiAgICBcIiRidWdSYWRhclVSTFwiLlxuIjsKLSAgICByZXR1cm4gJGJ1Z1JhZGFy
VVJMOwotfQotCiBzdWIgZmluZENoYW5nZUxvZ3MoJCQpCiB7CiAgICAgbXkgKCRmdW5jdGlvbkxp
c3RzLCAkcmVxdWlyZUNoYW5nZUxvZ1RvRXhpc3QpID0gQF87CkBAIC03NjEsMzUgKzU5Niw2IEBA
IHN1YiBvcGVuQ2hhbmdlTG9ncygkKQogICAgIH0KIH0KIAotc3ViIGdldF9mdW5jdGlvbl9saW5l
X3JhbmdlcygkJCkKLXsKLSAgICBteSAoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSA9IEBfOwot
Ci0gICAgIyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2UgbGFuZ3VhZ2UgYmFzZWQgb24gdGhl
IGZpbGUgZXh0ZW5zaW9uLgotCi0gICAgcmV0dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19m
b3JfY3BwKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC4oY3xj
cHB8bXxtbXxoKSQvOwotICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2ph
dmEoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLmphdmEkLzsK
LSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0KCRmaWxl
X2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC5qcyQvOwotICAgIHJldHVy
biBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcygkZmlsZV9oYW5kbGUsICRmaWxlX25h
bWUpIGlmICRmaWxlX25hbWUgPX4gL1wuY3NzJC87Ci0gICAgcmV0dXJuIGdldF9mdW5jdGlvbl9s
aW5lX3Jhbmdlc19mb3JfcGVybCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25h
bWUgPX4gL1wucFtsbV0kLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zv
cl9weXRob24oJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLnB5
JC8gb3IgJGZpbGVfbmFtZSA9fiAvbWFzdGVyXC5jZmckLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRm
aWxlX25hbWUgPX4gL1wuc3dpZnQkLzsKLQotICAgICMgVHJ5IHRvIGRldGVybWluZSB0aGUgc291
cmNlIGxhbmd1YWdlIGJhc2VkIG9uIHRoZSBzY3JpcHQgaW50ZXJwcmV0ZXIuCi0KLSAgICBteSAk
Zmlyc3RfbGluZSA9IDwkZmlsZV9oYW5kbGU+OwotICAgIHNlZWsoJGZpbGVfaGFuZGxlLCAwLCAw
KTsKLQotICAgIHJldHVybiAoKSB1bmxlc3MgJGZpcnN0X2xpbmUgPX4gbXxeIyEoPzovdXNyL2Jp
bi9lbnZccyspPyhcUyspfDsKLSAgICBteSAkaW50ZXJwcmV0ZXIgPSAkMTsKLQotICAgIHJldHVy
biBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3BlcmwoJGZpbGVfaGFuZGxlLCAkZmlsZV9u
YW1lKSBpZiAkaW50ZXJwcmV0ZXIgPX4gL3BlcmwkLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9u
X2xpbmVfcmFuZ2VzX2Zvcl9weXRob24oJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkaW50
ZXJwcmV0ZXIgPX4gL3B5dGhvbiQvOwotCi0gICAgcmV0dXJuICgpOwotfQotCi0KIHN1YiBtZXRo
b2RfZGVjbF90b19zZWxlY3RvcigkKQogewogICAgIChteSAkbWV0aG9kX2RlY2wpID0gQF87CkBA
IC04MTcsMTIyMiArNjIzLDYgQEAgc3ViIG1ldGhvZF9kZWNsX3RvX3NlbGVjdG9yKCQpCiAgICAg
cmV0dXJuICRfOwogfQogCi0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSBy
YW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDIGZ1bmN0aW9ucy4KLSMgQSBmdW5j
dGlvbiBuYW1lIGlzIHRoZSBsYXN0IHdvcmQgYmVmb3JlIGFuIG9wZW4gcGFyZW50aGVzaXMgYmVm
b3JlIHRoZSBvdXRlcgotIyBsZXZlbCBvcGVuIGJyYWNlLiBBIGZ1bmN0aW9uIHN0YXJ0cyBhdCB0
aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRoZSBsYXN0IGNsb3NlCi0jIGJyYWNlIG9yIHNlbWlj
b2xvbiBiZWZvcmUgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhlIGNsb3NlIGJyYWNl
LgotIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3Ig
YWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJp
cGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0
X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJCQpCi17Ci0gICAgbXkgKCRmaWxlX2hhbmRs
ZSwgJGZpbGVfbmFtZSkgPSBAXzsKLQotICAgIG15IEByYW5nZXM7Ci0KLSAgICBteSAkaW5fY29t
bWVudCA9IDA7Ci0gICAgbXkgJGluX21hY3JvID0gMDsKLSAgICBteSAkaW5fbWV0aG9kX2RlY2xh
cmF0aW9uID0gMDsKLSAgICBteSAkaW5fcGFyZW50aGVzZXMgPSAwOwotICAgIG15ICRxdW90YXRp
b25fbWFyazsKLSAgICBteSAkaW5fYnJhY2VzID0gMDsKLSAgICBteSAkaW5fdG9wbGV2ZWxfYXJy
YXlfYnJhY2UgPSAwOwotICAgIG15ICRicmFjZV9zdGFydCA9IDA7Ci0gICAgbXkgJGJyYWNlX2Vu
ZCA9IDA7Ci0gICAgbXkgJG5hbWVzcGFjZV9zdGFydCA9IC0xOwotICAgIG15ICRza2lwX3RpbF9i
cmFjZV9vcl9zZW1pY29sb24gPSAwOwotICAgIG15ICRlcXVhbF9vYnNlcnZlZCA9IDA7Ci0KLSAg
ICBteSAkd29yZCA9ICIiOwotICAgIG15ICRpbnRlcmZhY2VfbmFtZSA9ICIiOwotCi0gICAgbXkg
JHBvdGVudGlhbF9tZXRob2RfY2hhciA9ICIiOwotICAgIG15ICRwb3RlbnRpYWxfbWV0aG9kX3Nw
ZWMgPSAiIjsKLQotICAgIG15ICRwb3RlbnRpYWxfc3RhcnQgPSAwOwotICAgIG15ICRwb3RlbnRp
YWxfbmFtZSA9ICIiOwotCi0gICAgbXkgJHN0YXJ0ID0gMDsKLSAgICBteSAkbmFtZSA9ICIiOwot
Ci0gICAgbXkgJG5leHRfd29yZF9jb3VsZF9iZV9uYW1lc3BhY2UgPSAwOwotICAgIG15ICRwb3Rl
bnRpYWxfbmFtZXNwYWNlID0gIiI7Ci0gICAgbXkgQG5hbWVzcGFjZXM7Ci0gICAgbXkgQGFsbF9u
YW1lc3BhY2VzOwotCi0gICAgd2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7Ci0gICAgICAgICMgSGFu
ZGxlIGNvbnRpbnVlZCBxdW90ZWQgc3RyaW5nLgotICAgICAgICBpZiAoJHF1b3RhdGlvbl9tYXJr
KSB7Ci0gICAgICAgICAgICBpZiAoIXMtKFteXFxdfFxcLikqJHF1b3RhdGlvbl9tYXJrLS0pIHsK
LSAgICAgICAgICAgICAgICBpZiAoIW0tXFwkLSkgewotICAgICAgICAgICAgICAgICAgICB3YXJu
ICJtaXNtYXRjaGVkIHF1b3RlcyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7Ci0gICAgICAg
ICAgICAgICAgICAgIHVuZGVmICRxdW90YXRpb25fbWFyazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVuZGVmICRx
dW90YXRpb25fbWFyazsKLSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBt
dWx0aS1saW5lIGNvbW1lbnQuCi0gICAgICAgIGlmICgkaW5fY29tbWVudCkgewotICAgICAgICAg
ICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOwotICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAwOwot
ICAgICAgICB9Ci0KLSAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG1hY3JvLgotICAgICAgICBp
ZiAoJGluX21hY3JvKSB7Ci0gICAgICAgICAgICAkaW5fbWFjcm8gPSAwIHVubGVzcyAvXFwkLzsK
LSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAjIEhhbmRsZSBzdGFydCBv
ZiBtYWNybyAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUpLgotICAgICAgICBpZiAoL15c
cypcIy8pIHsKLSAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYgL14oW15cXF18XFwuKSpcXCQv
OwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbW1l
bnRzIGFuZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgd2hpbGUgKG0tKC9cKnwvL3xcJ3xcIiktKSB7
ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5Ci0gICAgICAgICAgICBteSAk
bWF0Y2ggPSAkMTsKLSAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEgIi8qIikgewotICAgICAgICAg
ICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgewotICAgICAgICAgICAgICAgICAgICBzLS9cKi4q
LS07Ci0gICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0gMTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikgewotICAgICAgICAgICAg
ICAgIHMtLy8uKi0tOwotICAgICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKLSAgICAgICAgICAg
ICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0tKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghcy0kbWF0Y2guKlxcJC0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3
YXJuICJtaXNtYXRjaGVkIHF1b3RlcyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzLSRtYXRjaC4qLS07Ci0gICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkcXVvdGF0aW9uX21hcmsgPSAkbWF0Y2g7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotCi0gICAgICAgICMgY29udGludWVkIG1ldGhvZCBkZWNsYXJhdGlvbgot
ICAgICAgICBpZiAoJGluX21ldGhvZF9kZWNsYXJhdGlvbikgewotICAgICAgICAgICAgICBteSAk
b3JpZ2luYWwgPSAkXzsKLSAgICAgICAgICAgICAgbXkgJG1ldGhvZF9jb250ID0gJF87Ci0KLSAg
ICAgICAgICAgICAgY2hvbXAgJG1ldGhvZF9jb250OwotICAgICAgICAgICAgICAkbWV0aG9kX2Nv
bnQgPX4gcy9bO1x7XS4qLy87Ci0gICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX3NwZWMg
PSAiJHtwb3RlbnRpYWxfbWV0aG9kX3NwZWN9ICR7bWV0aG9kX2NvbnR9IjsKLQotICAgICAgICAg
ICAgICAkXyA9ICRvcmlnaW5hbDsKLSAgICAgICAgICAgICAgaWYgKC87LykgewotICAgICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX21ldGhvZF9zcGVjID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhv
ZF9jaGFyID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0g
MDsKLSAgICAgICAgICAgICAgICAgIHMvXlteO1x7XSovLzsKLSAgICAgICAgICAgICAgfSBlbHNp
ZiAoL3svKSB7Ci0gICAgICAgICAgICAgICAgICBteSAkc2VsZWN0b3IgPSBtZXRob2RfZGVjbF90
b19zZWxlY3RvciAoJHBvdGVudGlhbF9tZXRob2Rfc3BlYyk7Ci0gICAgICAgICAgICAgICAgICAk
cG90ZW50aWFsX25hbWUgPSAiJHtwb3RlbnRpYWxfbWV0aG9kX2NoYXJ9XFske2ludGVyZmFjZV9u
YW1lfSAke3NlbGVjdG9yfVxdIjsKLQotICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRo
b2Rfc3BlYyA9ICIiOwotICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2RfY2hhciA9
ICIiOwotICAgICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7Ci0KLSAg
ICAgICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAgICAgICAgcy9eW147
e10qLy87Ci0gICAgICAgICAgICAgIH0gZWxzaWYgKC9cQGVuZC8pIHsKLSAgICAgICAgICAgICAg
ICAgICRpbl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOwotICAgICAgICAgICAgICAgICAgJGludGVy
ZmFjZV9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKLSAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0KLSAgICAgICAgIyBzdGFydCBvZiBtZXRob2QgZGVjbGFyYXRpb24K
LSAgICAgICAgaWYgKChteSAkbWV0aG9kX2NoYXIsIG15ICRtZXRob2Rfc3BlYykgPSBtJl4oWy0r
XSkoW14wLTk7XVteO10qKTs/JCYpIHsKLSAgICAgICAgICAgIG15ICRvcmlnaW5hbCA9ICRfOwot
Ci0gICAgICAgICAgICBpZiAoJGludGVyZmFjZV9uYW1lKSB7Ci0gICAgICAgICAgICAgICAgY2hv
bXAgJG1ldGhvZF9zcGVjOwotICAgICAgICAgICAgICAgICRtZXRob2Rfc3BlYyA9fiBzL1x7Liov
LzsKLQotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAkbWV0aG9kX2No
YXI7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICRtZXRob2Rfc3Bl
YzsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47Ci0gICAgICAgICAgICAg
ICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDE7Ci0gICAgICAgICAgICB9IGVsc2UgeyAKLSAg
ICAgICAgICAgICAgICB3YXJuICJkZWNsYXJpbmcgYSBtZXRob2QgYnV0IGRvbid0IGhhdmUgaW50
ZXJmYWNlIG9uIGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAgaWYgKC9cey8pIHsKLSAgICAgICAg
ICAgICAgbXkgJHNlbGVjdG9yID0gbWV0aG9kX2RlY2xfdG9fc2VsZWN0b3IgKCRwb3RlbnRpYWxf
bWV0aG9kX3NwZWMpOwotICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAiJHtwb3RlbnRp
YWxfbWV0aG9kX2NoYXJ9XFske2ludGVyZmFjZV9uYW1lfSAke3NlbGVjdG9yfVxdIjsKLQotICAg
ICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9zcGVjID0gIiI7Ci0gICAgICAgICAgICAgICRw
b3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAiIjsKLSAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAg
ICBzL15bXntdKi8vOwotICAgICAgICAgICAgfSBlbHNpZiAoL1xAZW5kLykgewotICAgICAgICAg
ICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKLSAgICAgICAgICAgICAgJGludGVyZmFj
ZV9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0KLSAgICAgICAgIyBGaW5kIGZ1bmN0aW9uLCBpbnRlcmZhY2UgYW5kIG1ldGhvZCBuYW1lcy4K
LSAgICAgICAgd2hpbGUgKG0mKCg/OltbOndvcmQ6XV0rOjopKm9wZXJhdG9yKD86WyBcdF0qXChc
KXxbXigpXSopfFtbOndvcmQ6XTw+On5dK3xbKCl7fTo7PV0pfFxAKD86aW1wbGVtZW50YXRpb258
aW50ZXJmYWNlfHByb3RvY29sKVxzKyhcdyspW157XSomZykgewotICAgICAgICAgICAgIyBTa2lw
IGFuIGFycmF5IGRlZmluaXRpb24gYXQgdGhlIHRvcCBsZXZlbC4KLSAgICAgICAgICAgICMgZS5n
LiBzdGF0aWMgaW50IGFycltdID0geyAxLCAyLCAzIH07Ci0gICAgICAgICAgICBpZiAoJDEpIHsK
LSAgICAgICAgICAgICAgICBpZiAoJDEgZXEgIj0iIGFuZCAhJGluX3BhcmVudGhlc2VzIGFuZCAh
JGluX2JyYWNlcykgewotICAgICAgICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQgPSAxOwot
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCQxIGVxICJ7IiBhbmQgJGVxdWFsX29ic2VydmVkKSB7
Ci0gICAgICAgICAgICAgICAgICAgICMgVGhpcyAneycgaXMgdGhlIGJlZ2lubmluZyBvZiBhbiBh
cnJheSBkZWZpbml0aW9uLCBub3QgdGhlIGJlZ2lubmluZyBvZiBhIG1ldGhvZC4KLSAgICAgICAg
ICAgICAgICAgICAgJGluX3RvcGxldmVsX2FycmF5X2JyYWNlID0gMTsKLSAgICAgICAgICAgICAg
ICAgICAgJGluX2JyYWNlcysrOwotICAgICAgICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQg
PSAwOwotICAgICAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgICAgIH0gZWxzaWYg
KCQxICF+IC9bIFx0XS8pIHsKLSAgICAgICAgICAgICAgICAgICAgJGVxdWFsX29ic2VydmVkID0g
MDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgaW50
ZXJmYWNlIG5hbWUKLSAgICAgICAgICAgIGlmICgkMikgewotICAgICAgICAgICAgICAgICRpbnRl
cmZhY2VfbmFtZSA9ICQyOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICMgT3BlbiBwYXJlbnRoZXNpcy4KLSAgICAgICAgICAgIGlmICgkMSBlcSAi
KCIpIHsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAkd29yZCB1bmxlc3MgJGlu
X3BhcmVudGhlc2VzIHx8ICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gfHwgZ3JlcCB7ICR3
b3JkIGVxICRfIH0gKCJDRl9FTlVNIiwgIkNGX09QVElPTlMiLCAiTlNfRU5VTSIsICJOU19PUFRJ
T05TIik7Ci0gICAgICAgICAgICAgICAgJGluX3BhcmVudGhlc2VzKys7Ci0gICAgICAgICAgICAg
ICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBDbG9zZSBwYXJlbnRoZXNp
cy4KLSAgICAgICAgICAgIGlmICgkMSBlcSAiKSIpIHsKLSAgICAgICAgICAgICAgICAkaW5fcGFy
ZW50aGVzZXMtLTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAoJDEgZXEgImNvbnN0IiBhbmQgISRpbl9wYXJlbnRoZXNlcykgewotICAgICAg
ICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSAuPSAiIGNvbnN0IjsKLSAgICAgICAgICAgICAgICBu
ZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoJDEgZXEgInZvbGF0aWxlIiBh
bmQgISRpbl9wYXJlbnRoZXNlcykgewotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSAu
PSAiIHZvbGF0aWxlIjsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAjIEMrKyBhdXRvIGZ1bmN0aW9uKCkgLT4gdHlwZQotICAgICAgICAgICAgaWYg
KCQxIGVxICI+IikgewotICAgICAgICAgICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29s
b24gPSAxIHVubGVzcyAoJGluX3BhcmVudGhlc2VzIHx8ICRpbl9icmFjZXMpOwotICAgICAgICAg
ICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgQysrIGNvbnN0cnVj
dG9yIGluaXRpYWxpemVycwotICAgICAgICAgICAgaWYgKCQxIGVxICI6IikgewotICAgICAgICAg
ICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAxIHVubGVzcyAoJGluX3BhcmVu
dGhlc2VzIHx8ICRpbl9icmFjZXMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIE9w
ZW4gYnJhY2UuCi0gICAgICAgICAgICBpZiAoJDEgZXEgInsiKSB7Ci0gICAgICAgICAgICAgICAg
JHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9IDA7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
ISRpbl9icmFjZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lc3BhY2Vfc3RhcnQg
Pj0gMCBhbmQgJG5hbWVzcGFjZV9zdGFydCA8ICRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyAkbmFtZXNwYWNlX3N0YXJ0IC4gIiIsICRw
b3RlbnRpYWxfc3RhcnQgLSAxLCAkbmFtZSBdOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRwb3RlbnRpYWxfbmFtZXNwYWNlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoIEBuYW1lc3BhY2VzLCAkcG90ZW50aWFsX25hbWVzcGFjZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQGFsbF9uYW1lc3BhY2VzLCAkcG90ZW50aWFsX25h
bWVzcGFjZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZXNwYWNlID0g
IiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgIyBQcm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFt
ZSBhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBvZiB0aGUgb3V0ZXIgbGV2ZWwg
c2V0IG9mIGJyYWNlcyAoZnVuY3Rpb24gYm9keT8pLgotICAgICAgICAgICAgICAgICAgICBpZiAo
JHBvdGVudGlhbF9zdGFydCkgewotICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJHBv
dGVudGlhbF9zdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJHBvdGVudGlh
bF9uYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzICYmICRuYW1l
ICYmIChsZW5ndGgoJG5hbWUpIDwgMiB8fCBzdWJzdHIoJG5hbWUsMSwxKSBuZSAiWyIpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBqb2luICgnOjonLCBAbmFtZXNwYWNl
cywgJG5hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0KLSAgICAgICAgICAgICAgICAkYnJhY2Vfc3RhcnQgPSAkLiBpZiAoISRp
bl9icmFjZXMpOwotICAgICAgICAgICAgICAgICRpbl9icmFjZXMrKzsKLSAgICAgICAgICAgICAg
ICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIENsb3NlIGJyYWNlLgotICAg
ICAgICAgICAgaWYgKCQxIGVxICJ9IikgewotICAgICAgICAgICAgICAgIGlmICghJGluX2JyYWNl
cyAmJiBAbmFtZXNwYWNlcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoJG5hbWVzcGFjZV9z
dGFydCA+PSAwIGFuZCAkbmFtZXNwYWNlX3N0YXJ0IDwgJC4pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2ggQHJhbmdlcywgWyAkbmFtZXNwYWNlX3N0YXJ0IC4gIiIsICQuIC0gMSwgJG5h
bWUgXTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHBvcCBA
bmFtZXNwYWNlczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICIiOwotICAgICAg
ICAgICAgICAgICAgICAgICAgJG5hbWVzcGFjZV9zdGFydCA9IC0xOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgJGluX2JyYWNlcy0tOwotICAgICAgICAgICAgICAgICRicmFjZV9lbmQg
PSAkLiBpZiAoISRpbl9icmFjZXMpOwotCi0gICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0
ZXIgbGV2ZWwgc2V0IG9mIGJyYWNlcy4KLSAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUg
YSBmdW5jdGlvbiBib2R5LgotICAgICAgICAgICAgICAgIGlmICghJGluX2JyYWNlcyBhbmQgJG5h
bWUpIHsKLSAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBlbmQgb2YgYW4gYXJyYXkg
ZGVmaW5pdGlvbiBhdCB0aGUgdG9wIGxldmVsLCBub3QgdGhlIGVuZCBvZiBhIG1ldGhvZC4KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRpbl90b3BsZXZlbF9hcnJheV9icmFjZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgJGluX3RvcGxldmVsX2FycmF5X2JyYWNlID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJHN0YXJ0LCAkLiwgJG5hbWUgXTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
bmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3Bh
Y2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkbmFtZSA9ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgJG5h
bWVzcGFjZV9zdGFydCA9IC0xOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAg
ICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgIyBTZW1pY29sb24uCi0gICAgICAgICAgICBpZiAoJDEg
ZXEgIjsiKSB7Ci0gICAgICAgICAgICAgICAgJHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9
IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAg
ICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgIyBJZ25vcmUgImNvbnN0IiBtZXRob2QgcXVhbGlmaWVyLgotICAgICAgICAgICAg
aWYgKCQxIGVxICJjb25zdCIpIHsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAoJDEgZXEgIm5hbWVzcGFjZSIgfHwgJDEgZXEgImNsYXNzIiB8
fCAkMSBlcSAic3RydWN0IikgewotICAgICAgICAgICAgICAgICRuZXh0X3dvcmRfY291bGRfYmVf
bmFtZXNwYWNlID0gMTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAjIFdvcmQuCi0gICAgICAgICAgICAkd29yZCA9ICQxOwotICAgICAgICAgICAg
aWYgKCEkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCRuZXh0X3dvcmRfY291bGRfYmVfbmFtZXNwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZXNwYWNlID0gJHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRuZXh0X3dv
cmRfY291bGRfYmVfbmFtZXNwYWNlID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2lmICgkcG90
ZW50aWFsX25hbWVzcGFjZSkgewotICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVz
cGFjZSA9ICIiOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghJGlu
X3BhcmVudGhlc2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAw
OwotICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAiIjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCEkcG90ZW50aWFsX3N0YXJ0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAg
JHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgd2FybiAibWlzc2luZyBjbG9zZSBicmFjZXMgaW4gJGZp
bGVfbmFtZSAocHJvYmFibGUgc3RhcnQgYXQgJGJyYWNlX3N0YXJ0KVxuIiBpZiAoJGluX2JyYWNl
cyA+IDApOwotICAgIHdhcm4gInRvbyBtYW55IGNsb3NlIGJyYWNlcyBpbiAkZmlsZV9uYW1lIChw
cm9iYWJsZSBzdGFydCBhdCAkYnJhY2VfZW5kKVxuIiBpZiAoJGluX2JyYWNlcyA8IDApOwotCi0g
ICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRoZXNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9w
YXJlbnRoZXNlczsKLQotICAgIHJldHVybiBkZWxldGVfbmFtZXNwYWNlc19mcm9tX3Jhbmdlc19m
b3JfY3BwKEByYW5nZXMsIEBhbGxfbmFtZXNwYWNlcyk7Ci19Ci0KLQotIyBUYWtlIGluIHJlZmVy
ZW5jZXMgdG8gYW4gYXJyYXkgb2YgbGluZSByYW5nZXMgZm9yIEMgZnVuY3Rpb25zIGluIGEgZ2l2
ZW4gZmlsZSAKLSMgYW5kIGFuIGFycmF5IG9mIG5hbWVzcGFjZXMgZGVjbGFyZWQgaW4gdGhhdCBm
aWxlIGFuZCByZXR1cm4gYW4gdXBkYXRlZAotIyBsaXN0IG9mIGxpbmUgcmFuZ2VzIHdpdGggdGhl
IG5hbWVzcGFjZXMgcmVtb3ZlZC4KLQotc3ViIGRlbGV0ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2Vz
X2Zvcl9jcHAoXEBcQCkKLXsKLSAgICBteSAoJHJhbmdlcywgJG5hbWVzcGFjZXMpID0gQF87Ci0g
ICAgcmV0dXJuIGdyZXAgeyFpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJG5hbWVzcGFjZXMsICQk
X1syXSl9IEAkcmFuZ2VzOwotfQotCi0KLXN1YiBpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJCQp
Ci17Ci0gICAgbXkgKCRuYW1lc3BhY2VzLCAkZnVuY3Rpb25fbmFtZSkgPSBAXzsKLSAgICByZXR1
cm4gZ3JlcCB7JF8gZXEgJGZ1bmN0aW9uX25hbWV9IEAkbmFtZXNwYWNlczsKLX0KLQotCi0jIFJl
YWQgYSBmaWxlIGFuZCBnZXQgYWxsIHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQg
bG9vayBsaWtlIEphdmEKLSMgY2xhc3NlcywgaW50ZXJmYWNlcyBhbmQgbWV0aG9kcy4KLSMKLSMg
QSBjbGFzcyBvciBpbnRlcmZhY2UgbmFtZSBpcyB0aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZv
bGxvd3MKLSMgYGNsYXNzJyBvciBgaW50ZXJmYWNlJyB3aGVuIGZvbGxvd2VkIGJ5IGFuIG9wZW4g
Y3VybHkgYnJhY2UgYW5kIG5vdAotIyBhIHNlbWljb2xvbi4gSXQgY2FuIGFwcGVhciBhdCB0aGUg
dG9wIGxldmVsLCBvciBpbnNpZGUgYW5vdGhlciBjbGFzcwotIyBvciBpbnRlcmZhY2UgYmxvY2ss
IGJ1dCBub3QgaW5zaWRlIGEgZnVuY3Rpb24gYmxvY2sKLSMKLSMgQSBjbGFzcyBvciBpbnRlcmZh
Y2Ugc3RhcnRzIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGNsb3NlCi0j
IGJyYWNlIG9yIGFmdGVyIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBlbmRzIGF0IHRoZSBjbG9zZSBi
cmFjZS4KLSMKLSMgQSBmdW5jdGlvbiBuYW1lIGlzIHRoZSBsYXN0IHdvcmQgYmVmb3JlIGFuIG9w
ZW4gcGFyZW50aGVzaXMgYmVmb3JlCi0jIGFuIG9wZW4gYnJhY2UgcmF0aGVyIHRoYW4gYSBzZW1p
Y29sb24uIEl0IGNhbiBhcHBlYXIgYXQgdG9wIGxldmVsIG9yCi0jIGluc2lkZSBhIGNsYXNzIG9y
IGludGVyZmFjZSBibG9jaywgYnV0IG5vdCBpbnNpZGUgYSBmdW5jdGlvbiBibG9jay4KLSMKLSMg
QSBmdW5jdGlvbiBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgZmlyc3Qg
Y2xvc2UKLSMgYnJhY2Ugb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhl
IGNsb3NlIGJyYWNlLgotIwotIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0
IHdpbGwgd29yayBmb3IgYWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBp
cyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFt
ZSBdLgotCi1zdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhKCQkKQotewotICAg
IG15ICgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87Ci0KLSAgICBteSBAY3VycmVudF9z
Y29wZXM7Ci0KLSAgICBteSBAcmFuZ2VzOwotCi0gICAgbXkgJGluX2NvbW1lbnQgPSAwOwotICAg
IG15ICRpbl9tYWNybyA9IDA7Ci0gICAgbXkgJGluX3BhcmVudGhlc2VzID0gMDsKLSAgICBteSAk
aW5fYnJhY2VzID0gMDsKLSAgICBteSAkaW5fbm9uX2Jsb2NrX2JyYWNlcyA9IDA7Ci0gICAgbXkg
JGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOwotICAgIG15ICRpbl9jbGFzc19kZWNs
YXJhdGlvbiA9IDA7Ci0KLSAgICBteSAkd29yZCA9ICIiOwotCi0gICAgbXkgJHBvdGVudGlhbF9z
dGFydCA9IDA7Ci0gICAgbXkgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgbXkgJHBvdGVudGlh
bF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7Ci0KLSAgICBteSAkc3RhcnQgPSAwOwot
ICAgIG15ICRuYW1lID0gIiI7Ci0gICAgbXkgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19vcl9pbnRl
cmZhY2UgPSAwOwotCi0gICAgd2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7Ci0gICAgICAgICMgSGFu
ZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQuCi0gICAgICAgIGlmICgkaW5fY29tbWVu
dCkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOwotICAgICAgICAgICAgJGlu
X2NvbW1lbnQgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG1h
Y3JvLgotICAgICAgICBpZiAoJGluX21hY3JvKSB7Ci0gICAgICAgICAgICAkaW5fbWFjcm8gPSAw
IHVubGVzcyAvXFwkLzsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAj
IEhhbmRsZSBzdGFydCBvZiBtYWNybyAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUpLgot
ICAgICAgICBpZiAoL15ccypcIy8pIHsKLSAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYgL14o
W15cXF18XFwuKSpcXCQvOwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAg
ICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgd2hpbGUgKG0tKC9c
KnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5Ci0g
ICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKLSAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEgIi8q
IikgewotICAgICAgICAgICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgewotICAgICAgICAgICAg
ICAgICAgICBzLS9cKi4qLS07Ci0gICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0gMTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikg
ewotICAgICAgICAgICAgICAgIHMtLy8uKi0tOwotICAgICAgICAgICAgfSBlbHNlIHsgIyAnIG9y
ICIKLSAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0tKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4g
aW4gJGZpbGVfbmFtZVxuIjsKLSAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0tOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICMgRmlu
ZCBmdW5jdGlvbiBuYW1lcy4KLSAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fTtdKS1nKSB7Ci0g
ICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCi0gICAgICAgICAgICBpZiAoJDEgZXEgIigi
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAwOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAkaW5fcGFyZW50aGVzZXMrKzsKLSAgICAgICAgICAgICAgICBu
ZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lzLgot
ICAgICAgICAgICAgaWYgKCQxIGVxICIpIikgewotICAgICAgICAgICAgICAgICRpbl9wYXJlbnRo
ZXNlcy0tOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICMgT3BlbiBicmFjZS4KLSAgICAgICAgICAgIGlmICgkMSBlcSAieyIpIHsKLSAgICAgICAg
ICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAwOwotCi0gICAgICAgICAgICAgICAgIyBQ
cm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFtZSBhdCB0aGUKLSAgICAg
ICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBvdXRlciBsZXZlbCBzZXQgb2YgYnJhY2VzIChmdW5j
dGlvbi9jbGFzcy9pbnRlcmZhY2UgYm9keT8pLgotICAgICAgICAgICAgICAgIGlmICghJGluX25v
bl9ibG9ja19icmFjZXMKLSAgICAgICAgICAgICAgICAgICAgYW5kICghJGluX2JyYWNlcyBvciAk
Y3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSkKLSAgICAgICAgICAgICAgICAgICAg
YW5kICRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyAkc3RhcnQsICgkLiAt
IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbiAoJy4n
LCBAY3VycmVudF9zY29wZXMpIF07Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotCi0gICAgICAg
ICAgICAgICAgICAgICRjdXJyZW50X25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gJHBvdGVu
dGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZTsKLQotICAgICAgICAgICAgICAgICAgICAk
c3RhcnQgPSAkcG90ZW50aWFsX3N0YXJ0OwotICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRw
b3RlbnRpYWxfbmFtZTsKLQotICAgICAgICAgICAgICAgICAgICBwdXNoIChAY3VycmVudF9zY29w
ZXMsICRuYW1lKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAkaW5fbm9uX2Jsb2NrX2JyYWNlcysrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOwotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxf
c3RhcnQgPSAwOwotCi0gICAgICAgICAgICAgICAgJGluX2JyYWNlcysrOwotICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgQ2xvc2UgYnJhY2UuCi0g
ICAgICAgICAgICBpZiAoJDEgZXEgIn0iKSB7Ci0gICAgICAgICAgICAgICAgJGluX2JyYWNlcy0t
OwotCi0gICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0ZXIgbGV2ZWwgc2V0IG9mIGJyYWNl
cy4KLSAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUgYSBmdW5jdGlvbiBib2R5LgotICAg
ICAgICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19icmFjZXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCRuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5nZXMs
IFsgJHN0YXJ0LCAkLiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
b2luICgnLicsIEBjdXJyZW50X3Njb3BlcykgXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
cG9wIChAY3VycmVudF9zY29wZXMpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGN1
cnJlbnRfc2NvcGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbmFt
ZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAxOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJHN0YXJ0ID0gJC4gKyAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0g
ICRjdXJyZW50X3Njb3Blc1skI2N1cnJlbnRfc2NvcGVzLTFdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9uYW1l
X2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHN0YXJ0ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICAiIjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICRpbl9ub25fYmxvY2tfYnJhY2Vz
LS0gaWYgJGluX25vbl9ibG9ja19icmFjZXM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlh
bF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgIyBTZW1pY29sb24uCi0gICAgICAgICAgICBpZiAoJDEgZXEgIjsiKSB7Ci0gICAg
ICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVu
dGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIpIHsKLSAgICAgICAgICAgICAgICAkaW5fY2xh
c3NfZGVjbGFyYXRpb24gPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCQxIGVx
ICJjbGFzcyIgb3IgKCEkaW5fY2xhc3NfZGVjbGFyYXRpb24gYW5kICQxIGVxICJpbnRlcmZhY2Ui
KSkgewotICAgICAgICAgICAgICAgICRjbGFzc19vcl9pbnRlcmZhY2VfanVzdF9zZWVuID0gMTsK
LSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIFdv
cmQuCi0gICAgICAgICAgICAkd29yZCA9ICQxOwotICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50
aGVzZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3Nl
ZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Ci0gICAg
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKLSAgICAgICAgICAgICAgICAg
ICAgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOwotICAgICAgICAgICAgICAgICAg
ICAkcG90ZW50aWFsX25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoISRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFs
X3N0YXJ0ID0gJC47Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAkY2xhc3Nfb3JfaW50ZXJmYWNlX2p1c3Rfc2VlbiA9IDA7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3YXJuICJtaXNtYXRjaGVkIGJyYWNlcyBpbiAkZmls
ZV9uYW1lXG4iIGlmICRpbl9icmFjZXM7Ci0gICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRoZXNl
cyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9wYXJlbnRoZXNlczsKLQotICAgIHJldHVybiBAcmFu
Z2VzOwotfQotCi0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMg
b2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZQotIyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyBvciBt
ZXRob2RzLgotIwotIyBBIGZ1bmN0aW9uIG5hbWUgaXMgdGhlIHdvcmQgdGhhdCBpbW1lZGlhdGVs
eSBmb2xsb3dzIGBmdW5jdGlvbicgd2hlbgotIyBmb2xsb3dlZCBieSBhbiBvcGVuIGN1cmx5IGJy
YWNlLiBJdCBjYW4gYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWwsCi0jIG9yIGluc2lkZSBvdGhlciBm
dW5jdGlvbnMuIEZvciBleGFtcGxlOgotIwotIyAgICBmdW5jdGlvbiBuYW1lKCkgeyAvLyAobmFt
ZSkKLSMgICAgICAgIGZ1bmN0aW9uIGlubmVyKCkgeyB9IC8vIChuYW1lLmlubmVyKQotIyAgICB9
Ci0jCi0jIEFuIGFub255bW91cyBmdW5jdGlvbiBuYW1lIGlzIHRoZSBpZGVudGlmaWVyIG9uIHRo
ZSBsZWZ0IGhhbmQgc2lkZSBvZgotIyBhbiBhc3NpZ25tZW50IHdpdGggdGhlIGVxdWFscyBvcGVy
YXRvciBvciBvYmplY3Qgbm90YXRpb24gdGhhdCBoYXMgYQotIyB2YWx1ZSBzdGFydGluZyB3aXRo
IGBmdW5jdGlvbicgZm9sbG93ZWQgYW4gb3BlbiBjdXJseSBicmFjZS4KLSMgRm9yIGV4YW1wbGU6
Ci0jCi0jICAgIG5hbWVzcGFjZSA9IHsKLSMgICAgICAgIG5hbWU6IGZ1bmN0aW9uKCkge30gLy8g
KG5hbWVzcGFjZS5uYW1lKQotIyAgICB9Ci0jICAgIG5hbWVzcGFjZS5Gb28gPSBmdW5jdGlvbigp
IHt9IC8vIChuYW1lc3BhY2UuRm9vKQotIwotIyBBIGdldHRlciBvciBzZXR0ZXIgbmFtZSBpcyB0
aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3MgYGdldCcgb3IKLSMgYHNldCcgd2hlbiBm
b2xsb3dlZCBieSBwYXJhbXMgYW5kIGFuIG9wZW4gY3VybHkgYnJhY2UuIEZvciBleGFtcGxlOgot
IwotIyAgICBuYW1lc3BhY2UgPSB7Ci0jICAgICAgZ2V0IGZvbygpIHt9IC8vIChuYW1lc3BhY2Uu
Z2V0IGZvbykKLSMgICAgfQotIwotIyBBIG1ldGhvZCBuYW1lIGlzIHRoZSB3b3JkIGltbWVkaWF0
ZWx5IGJlZm9yZSBwYXJlbnRoZXNpcywgd2l0aCBhbiBvcGVuCi0jIGN1cmx5IGJyYWNlIGltbWVk
aWF0ZWx5IGZvbGxvd2luZyBjbG9zaW5nIHBhcmVudGhlc2lzLiBGb3IgYSBjbGFzcyBleHByZXNz
aW9uCi0jIHdlIHRha2UgdGhlIGFzc2lnbm1lbnQgaWRlbnRpZmllciBpbnN0ZWFkIG9mIHRoZSBj
bGFzcyBuYW1lIGZvciBuYW1lc3BhY2luZy4KLSMKLSMgICAgbmFtZXNwYWNlLkZvbyA9IGNsYXNz
IERvZXNOb3RNYXR0ZXIgZXh0ZW5kcyBCYXIgewotIyAgICAgICAgY29uc3RydWN0b3IoKSB7fSAv
LyAobmFtZXNwYWNlLkZvbykKLSMgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7fSAvLyAo
bmFtZXNwYWNlLkZvby5zdGF0aWNNZXRob2QpCi0jICAgICAgICBpbnN0YW5jZU1ldGhvZCgpIHt9
IC8vIChuYW1lc3BhY2UuRm9vLnByb3RvdHlwZS5pbnN0YW5jZU1ldGhvZCkKLSMgICAgICAgIGdl
dCBnZXR0ZXIoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5wcm90b3R5cGUuZ2V0IGdldHRlcikKLSMg
ICAgfQotIyAgICBjbGFzcyBDbGFzc05hbWUgewotIyAgICAgICAgY29uc3RydWN0b3IoKSB7fSAv
LyAoQ2xhc3NOYW1lKQotIyAgICAgICAgbWV0aG9kKCkge30gLy8gKENsYXNzTmFtZS5wcm90b3R5
cGUubWV0aG9kKQotIyAgICB9Ci0jCi0jIE1ldGhvZHMgbWF5IGV4aXN0IGluIG9iamVjdCBsaXRl
cmFscywgb3V0c2lkZSBvZiBjbGFzc2VzLgotIwotIyAgIEZvby5wcm90b3R5cGUgPSB7Ci0jICAg
ICAgIG1ldGhvZCgpIHt9LCAvLyAoRm9vLnByb3RvdHlwZS5tZXRob2QpCi0jICAgICAgIG90aGVy
TWV0aG9kKCkge30gLy8gKEZvby5wcm90b3R5cGUub3RoZXJNZXRob2QpCi0jICAgfQotIwotIyBD
b21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3IgYWxsIGJ1
dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczog
WyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0KCQkKQotewotICAgIG15ICgkZmlsZUhhbmRs
ZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQGN1cnJlbnRTY29wZXM7Ci0gICAgbXkgQGN1
cnJlbnRJZGVudGlmaWVyczsKLSAgICBteSBAY3VycmVudFBhcnNpbmdNb2RlID0gKCJnbG9iYWwi
KTsKLSAgICBteSBAY3VycmVudEZ1bmN0aW9uTmFtZXM7Ci0gICAgbXkgQGN1cnJlbnRGdW5jdGlv
bkRlcHRoczsKLSAgICBteSBAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lczsKLQotICAgIG15IEBy
YW5nZXM7Ci0KLSAgICBteSAkaW5Db21tZW50ID0gMDsKLSAgICBteSAkaW5RdW90ZWRUZXh0ID0g
IiI7Ci0gICAgbXkgJGluRXh0ZW5kcyA9IDA7Ci0gICAgbXkgJGluTWV0aG9kID0gMDsKLSAgICBt
eSAkaW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnMgPSAwOwotICAgIG15ICRwYXJlbnRoZXNl
c0RlcHRoID0gMDsKLSAgICBteSAkZ2xvYmFsUGFyZW50aGVzZXNEZXB0aCA9IDA7Ci0gICAgbXkg
JGJyYWNlc0RlcHRoID0gMDsKLQotICAgIG15ICRjbGFzc0p1c3RTZWVuID0gMDsKLSAgICBteSAk
cGFyZW50aGVzaXNKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJGZ1bmN0aW9uSnVzdFNlZW4gPSAwOwot
ICAgIG15ICRnZXR0ZXJKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJHNldHRlckp1c3RTZWVuID0gMDsK
LSAgICBteSAkYXN5bmNKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJGFzc2lnbm1lbnRKdXN0U2VlbiA9
IDA7Ci0gICAgbXkgJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gPSAwOwotCi0gICAgbXkgJGN1cnJl
bnRUb2tlbiA9ICIiOwotICAgIG15ICRsYXN0VG9rZW4gPSAiIjsKLSAgICBteSAkcG9zc2libGVN
ZXRob2ROYW1lID0gIiI7Ci0gICAgbXkgJHdvcmQgPSAiIjsKLQotICAgIHdoaWxlICg8JGZpbGVI
YW5kbGU+KSB7Ci0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQu
Ci0gICAgICAgIGlmICgkaW5Db21tZW50KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyBzLS4q
XCovLS07Ci0gICAgICAgICAgICAkaW5Db21tZW50ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAg
ICMgSGFuZGxlIGNvbnRpbnVlZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgaWYgKCRpblF1b3RlZFRl
eHQgbmUgIiIpIHsKLSAgICAgICAgICAgIG5leHQgaWYgL1xcJC87Ci0gICAgICAgICAgICBzLShb
XlxcXXxcXC4pKj8kaW5RdW90ZWRUZXh0LS07Ci0gICAgICAgICAgICAkaW5RdW90ZWRUZXh0ID0g
IiI7Ci0gICAgICAgIH0KLQotICAgICAgICAjIEhhbmRsZSBjb21tZW50cyBhbmQgcXVvdGVkIHRl
eHQuCi0gICAgICAgIHdoaWxlIChtLSgvXCp8Ly98XCd8XCIpLSkgeyAjIFwnIGFuZCBcIiBrZWVw
IGVtYWNzIHBlcmwgbW9kZSBoYXBweQotICAgICAgICAgICAgbXkgJG1hdGNoID0gJDE7Ci0gICAg
ICAgICAgICBpZiAoJG1hdGNoIGVxICcvKicpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXMtL1wq
Lio/XCovLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgcy0vXCouKi0tOwotICAgICAgICAgICAg
ICAgICAgICAkaW5Db21tZW50ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2lmICgkbWF0Y2ggZXEgJy8vJykgewotICAgICAgICAgICAgICAgIHMtLy8uKi0tOwotICAg
ICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKLSAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNo
KFteXFxdfFxcLikqPyRtYXRjaC1zdHJpbmdfYXBwZWFyZWRfaGVyZS0pIHsKLSAgICAgICAgICAg
ICAgICAgICAgJGluUXVvdGVkVGV4dCA9ICRtYXRjaCBpZiAvXFwkLzsKLSAgICAgICAgICAgICAg
ICAgICAgd2FybiAibWlzbWF0Y2hlZCBxdW90ZXMgYXQgbGluZSAkLiBpbiAkZmlsZU5hbWVcbiIg
aWYgJGluUXVvdGVkVGV4dCBlcSAiIjsKLSAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0t
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
ICMgRmluZCBmdW5jdGlvbiBuYW1lcy4KLSAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fT06Oywu
XSktZykgewotICAgICAgICAgICAgIyBTa2lwIGV2ZXJ5dGhpbmcgdW50aWwgInsiIGFmdGVyIGV4
dGVuZHMuCi0gICAgICAgICAgICBpZiAoJGluRXh0ZW5kcykgewotICAgICAgICAgICAgICAgIG5l
eHQgaWYgJDEgbmUgJ3snOwotICAgICAgICAgICAgICAgICRpbkV4dGVuZHMgPSAwOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAkbGFzdFRva2VuID0gJGN1cnJlbnRUb2tlbjsKLSAgICAg
ICAgICAgICRjdXJyZW50VG9rZW4gPSAkMTsKLQotICAgICAgICAgICAgIyBPcGVuIHBhcmVudGhl
c2lzLgotICAgICAgICAgICAgaWYgKCQxIGVxICcoJykgewotICAgICAgICAgICAgICAgICRwYXJl
bnRoZXNlc0RlcHRoKys7Ci0gICAgICAgICAgICAgICAgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGgr
KyBpZiAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3VycmVudFBhcnNpbmdNb2RlXSBlcSAiZ2xvYmFs
IjsKLSAgICAgICAgICAgICAgICAkcG9zc2libGVNZXRob2ROYW1lID0gam9pbignLicsIEBjdXJy
ZW50SWRlbnRpZmllcnMpOwotICAgICAgICAgICAgICAgICRpbkFub255bW91c0Z1bmN0aW9uUGFy
YW1ldGVycyA9IDEgaWYgJGZ1bmN0aW9uSnVzdFNlZW47Ci0gICAgICAgICAgICAgICAgJGZ1bmN0
aW9uSnVzdFNlZW4gPSAwOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICMgQ2xvc2UgcGFyZW50aGVzaXMuCi0gICAgICAgICAgICBpZiAoJDEgZXEg
JyknKSB7Ci0gICAgICAgICAgICAgICAgJHBhcmVudGhlc2VzRGVwdGgtLTsKLSAgICAgICAgICAg
ICAgICAkZ2xvYmFsUGFyZW50aGVzZXNEZXB0aC0tIGlmICRjdXJyZW50UGFyc2luZ01vZGVbJCNj
dXJyZW50UGFyc2luZ01vZGVdIGVxICJnbG9iYWwiOwotICAgICAgICAgICAgICAgIEBjdXJyZW50
SWRlbnRpZmllcnMgPSAoKSBpZiAkaW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnM7Ci0gICAg
ICAgICAgICAgICAgJGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzID0gMDsKLSAgICAgICAg
ICAgICAgICAkcGFyZW50aGVzaXNKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBPcGVuIGJyYWNlLgotICAgICAgICAgICAg
aWYgKCQxIGVxICd7JykgewotICAgICAgICAgICAgICAgIG15ICRtZXRob2ROYW1lID0gIiI7Ci0g
ICAgICAgICAgICAgICAgbXkgJG1vZGUgPSAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3VycmVudFBh
cnNpbmdNb2RlXTsKLQotICAgICAgICAgICAgICAgICMgTWV0aG9kLgotICAgICAgICAgICAgICAg
IGlmICgoJG1vZGUgZXEgJ2NsYXNzJyBvciAkbW9kZSBlcSAnZ2xvYmFsJykgYW5kICRwYXJlbnRo
ZXNpc0p1c3RTZWVuIGFuZCAoJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gb3IgJHBvc3NpYmxlTWV0
aG9kTmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRtb2RlIGVxICdjbGFzcycpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2ROYW1lID0gam9pbignLicsICRzdGF0aWNP
ckNvbnRydWN0b3JTZWVuID8gIiIgOiAicHJvdG90eXBlIiwgJHBvc3NpYmxlTWV0aG9kTmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
bWV0aG9kTmFtZSA9ICRwb3NzaWJsZU1ldGhvZE5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgICAgICAkbWV0aG9kTmFtZSA9fiBzL1wuezIsfS9cLi9nOyAjIFJl
bW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZE5h
bWUgPX4gcy9cLiQvLzsgIyBSZW1vdmUgdHJhaWxpbmcgcGVyaW9kLgotCi0gICAgICAgICAgICAg
ICAgICAgIG15ICRjdXJyZW50TWV0aG9kID0gam9pbignLicsIEBjdXJyZW50U2NvcGVzLCAkbWV0
aG9kTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICRjdXJyZW50TWV0aG9kID1+IHMvXC57Mix9
L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgotICAgICAgICAgICAgICAgICAg
ICAkY3VycmVudE1ldGhvZCA9fiBzL1wuJC8vOyAjIFJlbW92ZSB0cmFpbGluZyBwZXJpb2QuCi0K
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAibWV0aG9kIik7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVu
dE1ldGhvZCk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbkRlcHRo
cywgJGJyYWNlc0RlcHRoKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0
aW9uU3RhcnRMaW5lcywgJC4pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICRicmFjZXNEZXB0aCsrOwotICAgICAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsK
LQotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRTY29wZXMsIGpvaW4oJy4nLCAkbWV0aG9k
TmFtZSA/ICRtZXRob2ROYW1lIDogQGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAg
ICAgIEBjdXJyZW50SWRlbnRpZmllcnMgPSAoKTsKLQotICAgICAgICAgICAgICAgICRzdGF0aWNP
ckNvbnRydWN0b3JTZWVuID0gMDsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAjIENsb3NlIGJyYWNlLgotICAgICAgICAgICAgaWYgKCQxIGVxICd9
JykgewotICAgICAgICAgICAgICAgICRicmFjZXNEZXB0aC0tOwotICAgICAgICAgICAgICAgICRm
dW5jdGlvbkp1c3RTZWVuID0gMDsKLQotICAgICAgICAgICAgICAgIGlmIChAY3VycmVudEZ1bmN0
aW9uRGVwdGhzIGFuZCAkYnJhY2VzRGVwdGggPT0gJGN1cnJlbnRGdW5jdGlvbkRlcHRoc1skI2N1
cnJlbnRGdW5jdGlvbkRlcHRoc10pIHsKLSAgICAgICAgICAgICAgICAgICAgcG9wKEBjdXJyZW50
RnVuY3Rpb25EZXB0aHMpOwotICAgICAgICAgICAgICAgICAgICBwb3AoQGN1cnJlbnRQYXJzaW5n
TW9kZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJGN1cnJlbnROYW1lID0gcG9wKEBjdXJy
ZW50RnVuY3Rpb25OYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRzdGFydCA9IHBvcChA
Y3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgJGN1cnJl
bnROYW1lID1+IHMvXlwuLy9nOyAjIFJlbW92ZXMgbGVhZGluZyBwZXJpb2RzLgotCi0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydCwgJC4sICRjdXJyZW50TmFtZV0pOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHBvcChAY3VycmVudFNjb3Blcyk7
Ci0gICAgICAgICAgICAgICAgQGN1cnJlbnRJZGVudGlmaWVycyA9ICgpOwotCi0gICAgICAgICAg
ICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBEb3QuCi0gICAgICAg
ICAgICBpZiAoJDEgZXEgJy4nKSB7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBTZW1pY29sb24gb3IgY29tbWEuCi0gICAgICAgICAgICBpZiAo
JDEgZXEgJzsnIG9yICQxIGVxICcsJykgewotICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRp
ZmllcnMgPSAoKTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAjIENsYXNzLgotICAgICAgICAgICAgaWYgKCQxIGVxICdjbGFzcycpIHsKLSAgICAg
ICAgICAgICAgICAkY2xhc3NKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBFeHRlbmRzLgotICAgICAgICAgICAgaWYgKCQx
IGVxICdleHRlbmRzJykgewotICAgICAgICAgICAgICAgICRpbkV4dGVuZHMgPSAxOwotICAgICAg
ICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgRnVuY3Rpb24u
Ci0gICAgICAgICAgICBpZiAoJDEgZXEgJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgICAgICRm
dW5jdGlvbkp1c3RTZWVuID0gMTsKLQotICAgICAgICAgICAgICAgIGlmICgkYXNzaWdubWVudEp1
c3RTZWVuKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSBqb2lu
KCcuJywgKEBjdXJyZW50U2NvcGVzLCBAY3VycmVudElkZW50aWZpZXJzKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24gPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNv
bnNlY3V0aXZlIHBlcmlvZHMuCi0KLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBh
cnNpbmdNb2RlLCAiZnVuY3Rpb24iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVu
dEZ1bmN0aW9uTmFtZXMsICRjdXJyZW50RnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0aCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAjIEdldHRlciBwcmVmaXguCi0gICAgICAgICAgICBpZiAoJDEgZXEgJ2dldCcpIHsKLSAg
ICAgICAgICAgICAgICBuZXh0IGlmICRsYXN0VG9rZW4gZXEgJy4nOyAjIEF2b2lkIG1hcC5nZXQo
Li4uKS4KLSAgICAgICAgICAgICAgICAkZ2V0dGVySnVzdFNlZW4gPSAxOwotICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgU2V0dGVyIHByZWZpeC4K
LSAgICAgICAgICAgIGlmICgkMSBlcSAnc2V0JykgewotICAgICAgICAgICAgICAgIG5leHQgaWYg
JGxhc3RUb2tlbiBlcSAnLic7ICMgQXZvaWQgbWFwLnNldCguLi4pLgotICAgICAgICAgICAgICAg
ICRzZXR0ZXJKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBBc3luYyBwcmVmaXguCi0gICAgICAgICAgICBpZiAoJDEgZXEg
J2FzeW5jJykgewotICAgICAgICAgICAgICAgIG5leHQgaWYgJGxhc3RUb2tlbiBlcSAnLic7Ci0g
ICAgICAgICAgICAgICAgJGFzeW5jSnVzdFNlZW4gPSAxOwotICAgICAgICAgICAgICAgIG5leHQ7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgU3RhdGljLgotICAgICAgICAgICAgaWYg
KCQxIGVxICdzdGF0aWMnIG9yICQxIGVxICdjb25zdHJ1Y3RvcicpIHsKLSAgICAgICAgICAgICAg
ICAkc3RhdGljT3JDb250cnVjdG9yU2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBBc3NpZ25tZW50IG9wZXJhdG9yLgotICAgICAg
ICAgICAgaWYgKCQxIGVxICc9JyBvciAkMSBlcSAnOicpIHsKLSAgICAgICAgICAgICAgICAkYXNz
aWdubWVudEp1c3RTZWVuID0gMTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBuZXh0IGlmICRwYXJlbnRoZXNlc0RlcHRoID4gJGdsb2JhbFBhcmVu
dGhlc2VzRGVwdGg7Ci0KLSAgICAgICAgICAgICMgV29yZC4KLSAgICAgICAgICAgICR3b3JkID0g
JDE7Ci0KLSAgICAgICAgICAgIGlmICgkY2xhc3NKdXN0U2VlbikgewotICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdvcmQpIGlmICEkYXNzaWdubWVudEp1c3RTZWVu
OwotCi0gICAgICAgICAgICAgICAgbXkgJGN1cnJlbnRDbGFzcyA9IGpvaW4oJy4nLCAoQGN1cnJl
bnRTY29wZXMsIEBjdXJyZW50SWRlbnRpZmllcnMpKTsKLSAgICAgICAgICAgICAgICAkY3VycmVu
dENsYXNzID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgot
Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAiY2xhc3MiKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRDbGFzcyk7
Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVw
dGgpOwotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQu
KTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRnZXR0ZXJKdXN0U2VlbiBvciAkc2V0dGVySnVzdFNl
ZW4gb3IgJGFzeW5jSnVzdFNlZW4pIHsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJnZXQgJHdv
cmQiIGlmICRnZXR0ZXJKdXN0U2VlbjsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJzZXQgJHdv
cmQiIGlmICRzZXR0ZXJKdXN0U2VlbjsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJhc3luYyAk
d29yZCIgaWYgJGFzeW5jSnVzdFNlZW47Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50
SWRlbnRpZmllcnMsICR3b3JkKTsKLQotICAgICAgICAgICAgICAgIG15ICRtb2RlID0gJGN1cnJl
bnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJzaW5nTW9kZV07Ci0gICAgICAgICAgICAgICAgbXkg
JGN1cnJlbnRGdW5jdGlvbiA9IGpvaW4oJy4nLCAoQGN1cnJlbnRTY29wZXMsICgkbW9kZSBlcSAn
Y2xhc3MnIGFuZCAhJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4pID8gInByb3RvdHlwZSIgOiAiIiwg
QGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24g
PX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCi0KLSAgICAg
ICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJmdW5jdGlvbiIpOwotICAgICAg
ICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVudEZ1bmN0aW9uKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0
aCk7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcywgJC4p
OwotICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uSnVzdFNlZW4gYW5kICEkYXNzaWdubWVu
dEp1c3RTZWVuKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAk
d29yZCk7Ci0KLSAgICAgICAgICAgICAgICBteSAkY3VycmVudEZ1bmN0aW9uID0gam9pbignLics
IChAY3VycmVudFNjb3BlcywgQGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAgICAg
ICRjdXJyZW50RnVuY3Rpb24gPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZl
IHBlcmlvZHMuCi0KLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJm
dW5jdGlvbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAk
Y3VycmVudEZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25E
ZXB0aHMsICRicmFjZXNEZXB0aCk7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0
aW9uU3RhcnRMaW5lcywgJC4pOwotICAgICAgICAgICAgfSBlbHNpZiAoJHdvcmQgbmUgJ2lmJyBh
bmQgJHdvcmQgbmUgJ2ZvcicgYW5kICR3b3JkIG5lICdkbycgYW5kICR3b3JkIG5lICd3aGlsZScg
YW5kICR3b3JkIG5lICd3aGljaCcgYW5kICR3b3JkIG5lICd2YXInKSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAkd29yZCk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICRjbGFzc0p1c3RTZWVuID0gMDsKLSAgICAgICAgICAgICRwYXJlbnRoZXNpc0p1
c3RTZWVuID0gMDsKLSAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsKLSAgICAgICAg
ICAgICRnZXR0ZXJKdXN0U2VlbiA9IDA7Ci0gICAgICAgICAgICAkc2V0dGVySnVzdFNlZW4gPSAw
OwotICAgICAgICAgICAgJGFzeW5jSnVzdFNlZW4gPSAwOwotICAgICAgICAgICAgJGFzc2lnbm1l
bnRKdXN0U2VlbiA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3YXJuICJtaXNtYXRjaGVk
IGJyYWNlcyBpbiAkZmlsZU5hbWVcbiIgaWYgJGJyYWNlc0RlcHRoOwotICAgIHdhcm4gIm1pc21h
dGNoZWQgcGFyZW50aGVzZXMgaW4gJGZpbGVOYW1lXG4iIGlmICRwYXJlbnRoZXNlc0RlcHRoOwot
Ci0gICAgcmV0dXJuIEByYW5nZXM7Ci19Ci0KLSMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhl
IGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgUGVybCBmdW5jdGlvbnMu
IEZ1bmN0aW9ucwotIyBzdGFydCBvbiBhIGxpbmUgdGhhdCBzdGFydHMgd2l0aCAic3ViICIsIGFu
ZCBlbmQgb24gdGhlIGZpcnN0IGxpbmUgc3RhcnRpbmcgd2l0aCAifSIgdGhlcmVhZnRlci4KLSMK
LSMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBm
dW5jdGlvbiBdLgotCi1zdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9wZXJsKCQkKQot
ewotICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdl
czsKLQotICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSAiIjsKLSAgICBteSAkc3RhcnQgPSAwOwot
ICAgIG15ICRoZXJlRG9jdW1lbnRJZGVudGlmaWVyID0gIiI7Ci0KLSAgICB3aGlsZSAoPCRmaWxl
SGFuZGxlPikgewotICAgICAgICBjaG9tcDsKLSAgICAgICAgaWYgKCEkaGVyZURvY3VtZW50SWRl
bnRpZmllcikgewotICAgICAgICAgICAgaWYgKC9ec3ViXHMrKFtcd19dW1x3XGRfXSopLykgewot
ICAgICAgICAgICAgICAgICMgU2tpcCBvdmVyIGZvcndhcmQgZGVjbGFyYXRpb25zLCB3aGljaCBk
b24ndCBjb250YWluIGEgYnJhY2UgYW5kIGVuZCB3aXRoIGEgc2VtaWNvbG9uLgotICAgICAgICAg
ICAgICAgIG5leHQgaWYgLztccyokLzsKLQotICAgICAgICAgICAgICAgIGlmICgkY3VycmVudEZ1
bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4gIm5lc3RlZCBmdW5jdGlvbnMgZm91
bmQgYXQgdG9wLWxldmVsIGF0ICRmaWxlTmFtZTokLlxuIjsKLSAgICAgICAgICAgICAgICAgICAg
bmV4dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlv
biA9ICQxOwotICAgICAgICAgICAgICAgICRzdGFydCA9ICQuOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKC88PFxzKltcIlwnXT8oW1x3X11bXHdfXGRdKikvKSB7Ci0gICAgICAgICAg
ICAgICAgIyBFbnRlciBoZXJlLWRvY3VtZW50LgotICAgICAgICAgICAgICAgICRoZXJlRG9jdW1l
bnRJZGVudGlmaWVyID0gJDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaW5kZXgo
JF8sICJ9IikgPT0gMCkgewotICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRzdGFydDsKLSAg
ICAgICAgICAgICAgICBwdXNoKEByYW5nZXMsIFskc3RhcnQsICQuLCAkY3VycmVudEZ1bmN0aW9u
XSk7Ci0gICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOwotICAgICAgICAgICAg
ICAgICRzdGFydCA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRfIGVxICRo
ZXJlRG9jdW1lbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAjIEVzY2FwZSBmcm9tIGhlcmUt
ZG9jdW1lbnQuCi0gICAgICAgICAgICAkaGVyZURvY3VtZW50SWRlbnRpZmllciA9ICIiOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEByYW5nZXM7Ci19Ci0KLSMgUmVhZCBhIGZpbGUg
YW5kIGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2Ug
UHl0aG9uIGNsYXNzZXMsIG1ldGhvZHMsIG9yIGZ1bmN0aW9ucy4KLSMKLSMgRklYTUU6IE1heWJl
IHdlIHNob3VsZCB1c2UgUHl0aG9uJ3MgYXN0IG1vZHVsZSB0byBkbyB0aGUgcGFyc2luZyBmb3Ig
dXM/Ci0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRf
bGluZSwgZnVuY3Rpb24gXS4KLQotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcHl0
aG9uKCQkKQotewotICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAg
bXkgQHJhbmdlczsKLQotICAgIG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU2VudGluZWxSZWdF
eCA9IHFyIyg/OiIiInwnJycpIzsKLSAgICBteSAkbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFN0YXJ0
UmVnRXggPSBxciNccyokbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXgjOwotICAg
IG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXggPSBxciMkbXVsdGlsaW5lU3RyaW5n
TGl0ZXJhbFNlbnRpbmVsUmVnRXhccyokIzsKLQotICAgIG15IEBzY29wZVN0YWNrID0gKHsgbGlu
ZSA9PiAwLCBpbmRlbnQgPT4gLTEsIG5hbWUgPT4gdW5kZWYgfSk7Ci0gICAgbXkgJGxhc3RMaW5l
ID0gMDsKLSAgICBteSAkaW5Db21tZW50ID0gMDsKLSAgICB1bnRpbCAoJGxhc3RMaW5lKSB7Ci0g
ICAgICAgICRfID0gPCRmaWxlSGFuZGxlPjsKLSAgICAgICAgdW5sZXNzICgkXykgewotICAgICAg
ICAgICAgIyBUbyBwb3Agb3V0IGFsbCBwb3BwZWQgc2NvcGVzLCBydW4gdGhlIGxvb3Agb25jZSBt
b3JlIGFmdGVyCi0gICAgICAgICAgICAjIHdlIGVuY291bnRlcmVkIHRoZSBlbmQgb2YgdGhlIGZp
bGUuCi0gICAgICAgICAgICAkXyA9ICJwYXNzXG4iOwotICAgICAgICAgICAgJC4rKzsKLSAgICAg
ICAgICAgICRsYXN0TGluZSA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgY2hvbXA7Ci0gICAgICAg
IG5leHQgdW5sZXNzIC9eKFxzKikoW14jXS4qKSQvOyAjIFNraXAgbm9uLWluZGVudGVkIGxpbmVz
IHRoYXQgYmVnaW4gd2l0aCBhIGNvbW1lbnQuCi0KLSAgICAgICAgbXkgJGluZGVudCA9IGxlbmd0
aCAkMTsKLSAgICAgICAgbXkgJHJlc3QgPSAkMjsKLSAgICAgICAgbXkgJHNjb3BlID0gJHNjb3Bl
U3RhY2tbLTFdOwotCi0gICAgICAgIGlmICgkaW5kZW50IDw9ICRzY29wZS0+e2luZGVudH0pIHsK
LSAgICAgICAgICAgICMgRmluZCBhbGwgdGhlIHNjb3BlcyB0aGF0IHdlIGhhdmUganVzdCBleGl0
ZWQuCi0gICAgICAgICAgICBteSAkaSA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgJGkgPCBAc2Nv
cGVTdGFjazsgKyskaSkgewotICAgICAgICAgICAgICAgIGxhc3QgaWYgJGluZGVudCA8PSAkc2Nv
cGVTdGFja1skaV0tPntpbmRlbnR9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbXkgQHBv
cHBlZFNjb3BlcyA9IHNwbGljZSBAc2NvcGVTdGFjaywgJGk7Ci0KLSAgICAgICAgICAgICMgRm9y
IGVhY2ggc2NvcGUgdGhhdCB3YXMganVzdCBleGl0ZWQsIGFkZCBhIHJhbmdlIHRoYXQgZ29lcyBm
cm9tIHRoZSBzdGFydCBvZiB0aGF0Ci0gICAgICAgICAgICAjIHNjb3BlIHRvIHRoZSBzdGFydCBv
ZiB0aGUgbmV4dCBuZXN0ZWQgc2NvcGUsIG9yIHRvIHRoZSBsaW5lIGp1c3QgYmVmb3JlIHRoaXMg
b25lIGZvcgotICAgICAgICAgICAgIyB0aGUgaW5uZXJtb3N0IHNjb3BlLgotICAgICAgICAgICAg
Zm9yICgkaSA9IDA7ICRpIDwgQHBvcHBlZFNjb3BlczsgKyskaSkgewotICAgICAgICAgICAgICAg
IG15ICRsaW5lQWZ0ZXJFbmQgPSAkaSArIDEgPT0gQHBvcHBlZFNjb3BlcyA/ICQuIDogJHBvcHBl
ZFNjb3Blc1skaSArIDFdLT57bGluZX07Ci0gICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBb
JHBvcHBlZFNjb3Blc1skaV0tPntsaW5lfSwgJGxpbmVBZnRlckVuZCAtIDEsICRwb3BwZWRTY29w
ZXNbJGldLT57bmFtZX1dOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQHNjb3BlU3RhY2sg
b3Igd2FybiAiUG9wcGVkIG9mZiBsYXN0IHNjb3BlIGF0ICRmaWxlTmFtZTokLlxuIjsKLQotICAg
ICAgICAgICAgIyBTZXQgdGhlIG5vdy1jdXJyZW50IHNjb3BlIHRvIHN0YXJ0IGF0IHRoZSBjdXJy
ZW50IGxpbmUuIEFueSBsaW5lcyB3aXRoaW4gdGhpcyBzY29wZQotICAgICAgICAgICAgIyBiZWZv
cmUgdGhpcyBwb2ludCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8gQHJhbmdlcy4K
LSAgICAgICAgICAgICRzY29wZSA9ICRzY29wZVN0YWNrWy0xXTsKLSAgICAgICAgICAgICRzY29w
ZS0+e2xpbmV9ID0gJC47Ci0gICAgICAgIH0KLQotICAgICAgICAjIFNraXAgbXVsdGktbGluZSBz
dHJpbmcgbGl0ZXJhbHMgYW5kIGRvY3N0cmluZ3MuCi0gICAgICAgIG5leHQgaWYgLyRtdWx0aWxp
bmVTdHJpbmdMaXRlcmFsU3RhcnRSZWdFeC4qJG11bHRpbGluZVN0cmluZ0xpdGVyYWxFbmRSZWdF
eC87Ci0gICAgICAgIGlmICghJGluQ29tbWVudCAmJiAvJG11bHRpbGluZVN0cmluZ0xpdGVyYWxT
dGFydFJlZ0V4LykgewotICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7Ci0gICAgICAgIH0gZWxz
aWYgKCRpbkNvbW1lbnQgJiYgLyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXgvKSB7Ci0g
ICAgICAgICAgICAkaW5Db21tZW50ID0gMDsKLSAgICAgICAgfQotICAgICAgICBuZXh0IGlmICRp
bkNvbW1lbnQ7Ci0KLSAgICAgICAgbmV4dCBpZiAvXlxzKlsjJyJdLzsgIyBTa2lwIGluZGVudGVk
IGFuZCBub24taW5kZW50ZWQgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGEgY29tbWVudCBvciBzdHJp
bmcgbGl0ZXJhbCAoaW5jbHVkZXMgZG9jc3RyaW5ncykuCi0KLSAgICAgICAgbmV4dCB1bmxlc3Mg
JHJlc3QgPX4gLyg/OmNsYXNzfGRlZilccysoXHcrKS87Ci0gICAgICAgIG15ICRuYW1lID0gJDE7
Ci0gICAgICAgIG15ICRmdWxsTmFtZSA9ICRzY29wZS0+e25hbWV9ID8gam9pbignLicsICRzY29w
ZS0+e25hbWV9LCAkbmFtZSkgOiAkbmFtZTsKLSAgICAgICAgcHVzaCBAc2NvcGVTdGFjaywgeyBs
aW5lID0+ICQuLCBpbmRlbnQgPT4gJGluZGVudCwgbmFtZSA9PiAkZnVsbE5hbWUgfTsKLQotICAg
ICAgICBpZiAoJHNjb3BlLT57aW5kZW50fSA+PSAwKSB7Ci0gICAgICAgICAgICBwdXNoIEByYW5n
ZXMsIFskc2NvcGUtPntsaW5lfSwgJC4gLSAxLCAkc2NvcGUtPntuYW1lfV07Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gQHJhbmdlczsKLX0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0
IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDU1Mgc2Vs
ZWN0b3JzLiAgQSBzZWxlY3RvciBpcwotIyBhbnl0aGluZyBiZWZvcmUgYW4gb3BlbmluZyBicmFj
ZSBvbiBhIGxpbmUuIEEgc2VsZWN0b3Igc3RhcnRzIGF0IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhl
IG9wZW5pbmcKLSMgYnJhY2UgYW5kIGVuZHMgYXQgdGhlIGNsb3NpbmcgYnJhY2UuCi0jCi0jIFJl
c3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgc2VsZWN0
b3IgXS4KLQotc3ViIGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKCQkKQotewotICAg
IG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdlczsKLQot
ICAgIG15ICRpbkNvbW1lbnQgPSAwOwotICAgIG15ICRpbkJyYWNlID0gMDsKLSAgICBteSBAc3Rh
Y2s7Ci0gICAgbXkgJGNvbnRleHQ7Ci0gICAgbXkgQGN1cnJlbnRQYXJzZU1vZGUgPSAoImdsb2Jh
bCIpOwotICAgIG15IEBncm91cGluZ1N0YWNrOwotICAgIG15ICRzZWxlY3RvckJyYWNlcyA9IDA7
Ci0KLSAgICB3aGlsZSAoPCRmaWxlSGFuZGxlPikgewotICAgICAgICBmb3JlYWNoIG15ICR0b2tl
biAoc3BsaXQgbS0oXHt8XH18L1wqfFwqLyktLCAkXykgewotICAgICAgICAgICAgaWYgKCR0b2tl
biBlcSAieyIpIHsKLSAgICAgICAgICAgICAgICBpZiAoISRpbkNvbW1lbnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgJGluQnJhY2UgKz0gMTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAkc2VsZWN0b3JCcmFjZXMgKz0gMSBpZiAkY3VycmVudFBhcnNlTW9kZVskI2N1
cnJlbnRQYXJzZU1vZGVdIGVxICJzZWxlY3RvciI7Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4g
Im1pc21hdGNoZWQgb3BlbmluZyBicmFjZSBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYgJHNl
bGVjdG9yQnJhY2VzID4gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lm
ICgkdG9rZW4gZXEgIn0iKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghJGluQnJhY2Ugb3IgJGN1cnJlbnRQYXJzZU1vZGVbJCNj
dXJyZW50UGFyc2VNb2RlXSBlcSAiZ2xvYmFsIikgewotICAgICAgICAgICAgICAgICAgICAgICAg
d2FybiAibWlzbWF0Y2hlZCBjbG9zaW5nIGJyYWNlIGZvdW5kIGluICRmaWxlTmFtZTokLlxuIjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICAkaW5CcmFjZSAtPSAxOwotCi0gICAgICAgICAgICAgICAgICAg
IG15ICRwYXJzZU1vZGUgPSBwb3AoQGN1cnJlbnRQYXJzZU1vZGUpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoJHBhcnNlTW9kZSBlcSAic2VsZWN0b3IiKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBteSAkbmFtZSA9IHBvcChAc3RhY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkg
JHN0YXJ0TGluZSA9IHBvcChAc3RhY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGVu
ZExpbmUgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRncm91cGluZ1ByZWZpeCA9
IGpvaW4oIiAiLCBAZ3JvdXBpbmdTdGFjayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGVuZ3RoICRncm91cGluZ1ByZWZpeCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRn
cm91cGluZ1ByZWZpeCAuPSAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydExpbmUsICRlbmRMaW5lLCAkZ3Jv
dXBpbmdQcmVmaXggLiAkbmFtZV0pOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcGFy
c2VNb2RlIGVxICJtZWRpYSIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvcChAZ3JvdXBp
bmdTdGFjayk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAk
c2VsZWN0b3JCcmFjZXMgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxz
aWYgKCR0b2tlbiBlcSAiLyoiKSB7Ci0gICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7Ci0g
ICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIiovIikgewotICAgICAgICAgICAgICAgIHdh
cm4gIm1pc21hdGNoZWQgY29tbWVudCBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYgISRpbkNv
bW1lbnQ7Ci0gICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGlmICghJGluQ29tbWVudCBhbmQgJGN1cnJlbnRQYXJzZU1v
ZGVbJCNjdXJyZW50UGFyc2VNb2RlXSBuZSAic2VsZWN0b3IiIGFuZCAkdG9rZW4gIX4gL15bXHNc
dF0qJC8pIHsKLSAgICAgICAgICAgICAgICAgICAgJHRva2VuID1+IHMvXltcc1x0XSp8W1xzXHRd
KiQvL2c7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRzdGFydExpbmUgPSAkLjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCR0b2tlbiA9fiAvXlxAbWVkaWEvKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2VNb2RlLCAibWVkaWEiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGdyb3VwaW5nU3RhY2ssICR0b2tlbik7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2VN
b2RlLCAic2VsZWN0b3IiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQHN0YWNrLCAo
JHN0YXJ0TGluZSwgJHRva2VuKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAjIFNvcnQgYnkg
c3RhcnQgbGluZS4KLSAgICByZXR1cm4gc29ydCB7JGEtPlswXSA8PT4gJGItPlswXX0gQHJhbmdl
czsKLX0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhl
IHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBTd2lmdCBjbGFzc2VzLCBtZXRob2RzLAotIyBvciBmdW5j
dGlvbnMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBl
bmRfbGluZSwgZnVuY3Rpb24gXS4KLQotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jf
c3dpZnQoJCQpCi17Ci0gICAgbXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87Ci0KLSAg
ICBteSBAcmFuZ2VzOwotCi0gICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOwotICAgIG15ICRj
dXJyZW50VHlwZSA9ICIiOwotICAgIG15ICRmdW5jdGlvblN0YXJ0ID0gMDsKLSAgICBteSAkdHlw
ZVN0YXJ0ID0gMDsKLSAgICBteSAkZnVuY3Rpb25TY29wZURlcHRoID0gMDsKLSAgICBteSAkdHlw
ZVNjb3BlRGVwdGggPSAwOwotICAgIG15ICRzY29wZURlcHRoID0gMDsKLQotICAgIHdoaWxlICg8
JGZpbGVIYW5kbGU+KSB7Ci0gICAgICAgIGNob21wOwotICAgICAgICBuZXh0IGlmICgvXlxzKlwv
XC8uKi8pOwotICAgICAgICBpZiAoL2Z1bmNccysoW1x3X11bXHdcZF9dKilcKCguKilcKS8gfHwg
L3ZhclxzKyhbXHdfXVtcd1xkX10qKTpccysvKSB7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TY29w
ZURlcHRoID0gJHNjb3BlRGVwdGg7Ci0gICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gJDE7
Ci0gICAgICAgICAgICBpZiAoJDIpIHsKLSAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9u
ID0gIiRjdXJyZW50RnVuY3Rpb24oIi4gcGFyc2VTd2lmdEZ1bmN0aW9uQXJncygkMikgLiAiKSI7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoJGN1cnJlbnRUeXBlKSB7Ci0gICAgICAg
ICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIkY3VycmVudFR5cGUuJGN1cnJlbnRGdW5jdGlv
biI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9ICQuOwotICAg
ICAgICB9IGVsc2lmICgvKD86Y2xhc3N8c3RydWN0fGVudW18cHJvdG9jb2x8ZXh0ZW5zaW9uKVxz
KyhbXHdfXVtcd1xkX10qKS8pIHsKLSAgICAgICAgICAgICR0eXBlU2NvcGVEZXB0aCA9ICRzY29w
ZURlcHRoOwotICAgICAgICAgICAgJGN1cnJlbnRUeXBlID0gJDE7Ci0gICAgICAgICAgICAkdHlw
ZVN0YXJ0ID0gJC47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4KCRfLCAieyIpID4gLTEp
IHsKLSAgICAgICAgICAgICRzY29wZURlcHRoKys7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlu
ZGV4KCRfLCAifSIpID4gLTEpIHsKLSAgICAgICAgICAgICRzY29wZURlcHRoLS07Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCRzY29wZURlcHRoID09ICRmdW5jdGlvblNjb3BlRGVwdGgpIHsKLSAg
ICAgICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvblN0YXJ0OwotICAgICAgICAgICAgcHVzaChA
cmFuZ2VzLCBbJGZ1bmN0aW9uU3RhcnQsICQuLCAkY3VycmVudEZ1bmN0aW9uXSk7Ci0gICAgICAg
ICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiI7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9
IDA7Ci0gICAgICAgIH0gZWxzaWYgKCRzY29wZURlcHRoID09ICR0eXBlU2NvcGVEZXB0aCkgewot
ICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHR5cGVTdGFydDsKLSAgICAgICAgICAgICRjdXJyZW50
VHlwZSA9ICIiOwotICAgICAgICAgICAgJHR5cGVTdGFydCA9IDA7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gQHJhbmdlczsKLX0KLQotc3ViIHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3Mo
JCkKLXsKLSAgICBteSAoJGZ1bmN0aW9uQXJncykgPSBAXzsKLSAgICBteSBAd29yZHMgPSBzcGxp
dCAvLCAvLCAkZnVuY3Rpb25BcmdzOwotICAgIG15ICRhcmdDb3VudCA9IHNjYWxhcihAd29yZHMp
OwotICAgIGlmICgkYXJnQ291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSBl
bHNpZiAoJGFyZ0NvdW50ID4gMCkgewotICAgICAgICAjIElmIHRoZSBmaXJzdCBhcmd1bWVudCBp
cyB1bm5hbWVkLCBnaXZlIGl0IHRoZSBuYW1lICJfIgotICAgICAgICAkd29yZHNbMF0gPX4gcy9e
KFx3KzogLiopL18gJDEvOwotICAgICAgICByZXR1cm4gam9pbigiIiwgbWFwIHsgJF8gPX4gcy9e
KFx3KykuKi8kMS87ICIkXzoiIH0gQHdvcmRzKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3YXJu
ICJVbmtub3duIGFyZ3VtZW50IGNvdW50LlxuIjsKLSAgICB9Ci19Ci0KIHN1YiBwcm9jZXNzUGF0
aHMoXEApCiB7CiAgICAgbXkgKCRwYXRocykgPSBAXzsKQEAgLTIwODYsOCArNjc2LDggQEAgc3Vi
IGRpZmZDb21tYW5kKCQkJCQpCiB7CiAgICAgbXkgKCRwYXRocywgJGdpdENvbW1pdCwgJGdpdElu
ZGV4LCAkbWVyZ2VCYXNlKSA9IEBfOwogCi0gICAgIyBUaGUgZnVuY3Rpb24gb3ZlcmxhcCBkZXRl
Y3Rpb24gbG9naWMgaW4gY29tcHV0ZU1vZGlmaWVkRnVuY3Rpb25zKCkgYXNzdW1lcyB0aGF0IGl0
cyBsaW5lCi0gICAgIyByYW5nZXMgd2VyZSBmcm9tIGEgdW5pZmllZCBkaWZmIHdpdGhvdXQgYW55
IGNvbnRleHQgbGluZXMuCisgICAgIyBUaGUgZnVuY3Rpb24gb3ZlcmxhcCBkZXRlY3Rpb24gbG9n
aWMgaW4gd2Via2l0cGVybDo6Y2hhbmdlbG9nOjpjb21wdXRlTW9kaWZpZWRGdW5jdGlvbnMoKQor
ICAgICMgYXNzdW1lcyB0aGF0IGl0cyBsaW5lIHJhbmdlcyB3ZXJlIGZyb20gYSB1bmlmaWVkIGRp
ZmYgd2l0aG91dCBhbnkgY29udGV4dCBsaW5lcy4KICAgICBteSAkY29tbWFuZDsKICAgICBpZiAo
aXNTVk4oKSkgewogICAgICAgICBteSBAZXNjYXBlZFBhdGhzID0gbWFwKGVzY2FwZVN1YnZlcnNp
b25QYXRoKCRfKSwgQCRwYXRocyk7CkBAIC0yMTIwLDQ3ICs3MTAsNiBAQCBzdWIgc3RhdHVzQ29t
bWFuZCgkJCQkKQogICAgIHJldHVybiAiJGNvbW1hbmQgMj4mMSI7CiB9CiAKLXN1YiBhdHRyaWJ1
dGVDb21tYW5kKCQkJCkKLXsKLSAgICBteSAoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZSwgJGF0dHIp
ID0gQF87Ci0KLSAgICBteSAkcmVzdWx0OwotICAgIGlmIChpc1NWTigpKSB7Ci0gICAgICAgIG15
ICRkZXZOdWxsID0gRmlsZTo6U3BlYy0+ZGV2bnVsbCgpOwotICAgICAgICBteSAkZm91bmRBdHRy
aWJ1dGUgPSAwOwotICAgICAgICBteSAkc3ViUGF0aCA9ICIuIjsKLSAgICAgICAgbXkgKEBkaXJl
Y3RvcnlQYXJ0cykgPSBGaWxlOjpTcGVjLT5zcGxpdGRpcigkZmlsZSk7Ci0gICAgICAgIGZvcmVh
Y2ggbXkgJHBhcnQgKEBkaXJlY3RvcnlQYXJ0cykgewotICAgICAgICAgICAgaWYgKCRwYXJ0IGVx
ICIuIikgewotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAkc3ViUGF0aCA9IEZpbGU6OlNwZWMtPmpvaW4oJHN1YlBhdGgsICRwYXJ0KTsKLSAgICAgICAg
ICAgICRzdWJQYXRoID1+IHMvXlwuXC8vLzsKLSAgICAgICAgICAgIGlmICgkZm91bmRBdHRyaWJ1
dGUgfHwgZXhpc3RzICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gJiYgJGF0dHJp
YnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSBlcSAiMSIpIHsKLSAgICAgICAgICAgICAgICAk
YXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JHN1YlBhdGh9ID0gIjEiOwotICAgICAgICAgICAgICAg
ICRmb3VuZEF0dHJpYnV0ZSA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG15ICRjb21tYW5kID0gU1ZOIC4gIiBwcm9wZ2V0ICRhdHRyICckc3Vi
UGF0aCciOwotICAgICAgICAgICAgbXkgJGF0dHJpYiA9ICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRy
fXskc3ViUGF0aH0gfHwgYCRjb21tYW5kIDI+ICRkZXZOdWxsYDsKLSAgICAgICAgICAgIGNob21w
ICRhdHRyaWI7Ci0gICAgICAgICAgICBpZiAoJGF0dHJpYiBlcSAiMSIpIHsKLSAgICAgICAgICAg
ICAgICAkZm91bmRBdHRyaWJ1dGUgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgJGF0
dHJpYnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSA9ICRhdHRyaWIgfHwgIjAiOwotICAgICAg
ICB9Ci0gICAgICAgICRyZXN1bHQgPSAkYXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JGZpbGV9Owot
ICAgIH0gZWxzaWYgKGlzR2l0KCkpIHsKLSAgICAgICAgbXkgJGNvbW1hbmQgPSBHSVQgLiAiIGNo
ZWNrLWF0dHIgJGF0dHIgLS0gJyRmaWxlJyI7Ci0gICAgICAgICRyZXN1bHQgPSBgJGNvbW1hbmRg
OwotICAgICAgICBjaG9tcCAkcmVzdWx0OwotICAgICAgICAkcmVzdWx0ID1+IHMvLipcVyhcdykv
JDEvOwotICAgIH0KLQotICAgICRyZXN1bHQgPX4gcy9cRC8vZzsKLSAgICByZXR1cm4gaW50KCRy
ZXN1bHQgfHwgMCk7Ci19Ci0KIHN1YiBjcmVhdGVQYXRjaENvbW1hbmQoJCQkJCkKIHsKICAgICBt
eSAoJGNoYW5nZWRGaWxlc1N0cmluZywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNl
KSA9IEBfOwpAQCAtMjQ1OSwzNCArMTAwOCw2IEBAIHN1YiBwcm9wZXJ0eUNoYW5nZURlc2NyaXB0
aW9uKCQpCiAgICAgcmV0dXJuICRkZXNjcmlwdGlvbjsKIH0KIAotc3ViIGV4dHJhY3RMaW5lUmFu
Z2VBZnRlckNoYW5nZSgkKQotewotICAgIG15ICgkc3RyaW5nKSA9IEBfOwotICAgIG15ICRjaHVu
a1JhbmdlID0gcGFyc2VDaHVua1JhbmdlKCRzdHJpbmcpOwotICAgIGlmICghJGNodW5rUmFuZ2Up
IHsKLSAgICAgICAgcmV0dXJuICgtMSwgLTEpOyAjIE1hbGZvcm1lZAotICAgIH0KLSAgICBpZiAo
ISRjaHVua1JhbmdlLT57bmV3U3RhcnRpbmdMaW5lfSB8fCAhJGNodW5rUmFuZ2UtPntuZXdMaW5l
Q291bnR9KSB7Ci0gICAgICAgICAjIERlbGV0aW9uOyBubyBsaW5lcyBleGlzdCBhZnRlciBjaGFu
Z2UuCi0gICAgICAgIHJldHVybiAoJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9LCAkY2h1
bmtSYW5nZS0+e25ld1N0YXJ0aW5nTGluZX0pOwotICAgIH0KLSAgICByZXR1cm4gKCRjaHVua1Jh
bmdlLT57bmV3U3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9ICsg
JGNodW5rUmFuZ2UtPntuZXdMaW5lQ291bnR9IC0gMSk7Ci19Ci0KLXN1YiBleHRyYWN0TGluZVJh
bmdlQmVmb3JlQ2hhbmdlKCQpCi17Ci0gICAgbXkgKCRzdHJpbmcpID0gQF87Ci0gICAgbXkgJGNo
dW5rUmFuZ2UgPSBwYXJzZUNodW5rUmFuZ2UoJHN0cmluZyk7Ci0gICAgaWYgKCEkY2h1bmtSYW5n
ZSkgewotICAgICAgICByZXR1cm4gKC0xLCAtMSk7ICMgTWFsZm9ybWVkCi0gICAgfQotICAgIGlm
ICghJGNodW5rUmFuZ2UtPntzdGFydGluZ0xpbmV9IHx8ICEkY2h1bmtSYW5nZS0+e2xpbmVDb3Vu
dH0pIHsKLSAgICAgICAgIyBBZGRpdGlvbjsgbm8gbGluZXMgZXhpc3RlZCBiZWZvcmUgY2hhbmdl
LgotICAgICAgICByZXR1cm4gKCRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSwgJGNodW5rUmFu
Z2UtPntzdGFydGluZ0xpbmV9KTsKLSAgICB9Ci0gICAgcmV0dXJuICgkY2h1bmtSYW5nZS0+e3N0
YXJ0aW5nTGluZX0sICRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSArICRjaHVua1JhbmdlLT57
bGluZUNvdW50fSAtIDEpOwotfQotCiBzdWIgdGVzdExpc3RGb3JDaGFuZ2VMb2coQCkKIHsKICAg
ICBteSAoQHRlc3RzKSA9IEBfOwpAQCAtMjU3MywxNCArMTA5NCwzIEBAIHN1YiBub3JtYWxpemVM
aW5lRW5kaW5ncygkJCkKICAgICAkc3RyaW5nID1+IHMvXHI/XG4vJGVuZGwvZzsKICAgICByZXR1
cm4gJHN0cmluZzsKIH0KLQotc3ViIGRlY29kZUVudGl0aWVzKCQpCi17Ci0gICAgbXkgKCR0ZXh0
KSA9IEBfOwotICAgICR0ZXh0ID1+IHMvXCZsdDsvPC9nOwotICAgICR0ZXh0ID1+IHMvXCZndDsv
Pi9nOwotICAgICR0ZXh0ID1+IHMvXCZxdW90Oy9cIi9nOwotICAgICR0ZXh0ID1+IHMvXCZhcG9z
Oy9cJy9nOwotICAgICR0ZXh0ID1+IHMvXCZhbXA7L1wmL2c7Ci0gICAgcmV0dXJuICR0ZXh0Owot
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MgYi9Ub29scy9TY3JpcHRzL3J1
bi1sZWFrcwppbmRleCAyMDVmYzY0ZTJlNGEuLmU5NDM5YzExODMyZSAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy9ydW4tbGVha3MKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MKQEAgLTMz
LDExICszMywxMiBAQCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBH
ZXRvcHQ6Okxvbmc7Cit1c2UgQ2FycDsKK3VzZSBGaW5kQmluOwordXNlIGxpYiAkRmluZEJpbjo6
UmVhbEJpbjsKK3VzZSB3ZWJraXRwZXJsOjpsZWFrcyBxdyhydW5MZWFrcywgcGFyc2VMZWFrc091
dHB1dCk7CiAKLXN1YiBydW5MZWFrcygkJCk7Ci1zdWIgcGFyc2VMZWFrc091dHB1dChcQCk7CiBz
dWIgcmVtb3ZlTWF0Y2hpbmdSZWNvcmRzKFxAJFxAKTsKLXN1YiByZXBvcnRFcnJvcigkKTsKIAog
c3ViIG1haW4oKQogewpAQCAtNzEsNyArNzIsNyBAQCBzdWIgbWFpbigpCiAgICAgfQogCiAgICAg
aWYgKCEkcGlkT3JFeGVjdXRhYmxlTmFtZSkgewotICAgICAgICByZXBvcnRFcnJvcigiTWlzc2lu
ZyBhcmd1bWVudDogcGlkIHwgZXhlY3V0YWJsZS4iKTsKKyAgICAgICAgY2FycCAiTWlzc2luZyBh
cmd1bWVudDogcGlkIHwgZXhlY3V0YWJsZS4iOwogICAgICAgICBwcmludCBTVERFUlIgJHVzYWdl
OwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC04Myw5ICs4NCw2IEBAIHN1YiBtYWluKCkK
ICAgICB9CiAKICAgICBteSAkcGFyc2VkT3V0cHV0ID0gcGFyc2VMZWFrc091dHB1dChAJGxlYWtz
T3V0cHV0KTsKLSAgICBpZiAoISRwYXJzZWRPdXRwdXQpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgfQogCiAgICAgIyBGaWx0ZXIgb3V0cHV0LgogICAgICMgRklYTUU6IEFkanVzdCB0aGUgb3Zl
cmFsbCBsZWFrIGNvdW50IGluIHRoZSBvdXRwdXQgYWNjb3JkaW5nbHkuIFRoaXMgd2lsbCBhZmZl
Y3QgY2FsbGVycywgbm90YWJseSBsZWFrZGV0ZWN0b3IucHkuCkBAIC0xMTQsMTExICsxMTIsNiBA
QCBzdWIgbWFpbigpCiAKIGV4aXQobWFpbigpKTsKIAotIyBSZXR1cm5zIHRoZSBvdXRwdXQgb2Yg
dGhlIGxlYWtzIHRvb2wgaW4gbGlzdCBmb3JtLgotc3ViIHJ1bkxlYWtzKCQkKQotewotICAgIG15
ICgkdGFyZ2V0LCAkbWVtZ3JhcGhQYXRoKSA9IEBfOwotCi0gICAgaWYgKGRlZmluZWQgJG1lbWdy
YXBoUGF0aCkgewotICAgICAgICBgL3Vzci9iaW4vbGVha3MgXCIkdGFyZ2V0XCIgLS1vdXRwdXRH
cmFwaD1cIiRtZW1ncmFwaFBhdGhcImA7Ci0gICAgICAgICR0YXJnZXQgPSAkbWVtZ3JhcGhQYXRo
OwotICAgIH0KLQotICAgICMgVG8gZ2V0IGEgcmVzdWx0IHdlIGNhbiBwYXJzZSwgd2UgbmVlZCB0
byBwYXNzIC0tbGlzdCB0byBhbGwgdmVyc2lvbnMgb2YgdGhlIGxlYWtzIHRvb2wKLSAgICAjIHRo
YXQgcmVjb2duaXplIGl0LCBidXQgdGhlcmUgaXMgbm8gY2VydGFpbiB3YXkgdG8gdGVsbCBpbiBh
ZHZhbmNlICh0aGUgdmVyc2lvbiBvZiB0aGUKLSAgICAjIHRvb2wgaXMgbm90IGFsd2F5cyB0aWVk
IHRvIE9TIHZlcnNpb24sIGFuZCAtLWhlbHAgZG9lc24ndCBkb2N1bWVudCB0aGUgb3B0aW9uIGlu
IHNvbWUKLSAgICAjIG9mIHRoZSB0b29sIHZlcnNpb25zIHdoZXJlIGl0J3Mgc3VwcG9ydGVkIGFu
ZCBuZWVkZWQpLgotICAgIG15IEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJn
ZXRcIiAtLWxpc3RgOwotCi0gICAgIyBGSVhNRTogUmVtb3ZlIHRoZSBmYWxsYmFjayBvbmNlIG1h
Y09TIE1vamF2ZSBpcyB0aGUgb2xkZXN0IHN1cHBvcnRlZCB2ZXJzaW9uLgotICAgIG15ICRsZWFr
c0V4aXRDb2RlID0gJD8gPj4gODsKLSAgICBpZiAoJGxlYWtzRXhpdENvZGUgPiAxKSB7Ci0gICAg
ICAgIEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJnZXRcImA7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIFxAbGVha3NPdXRwdXQ7Ci19Ci0KLSMgUmV0dXJucyBhIGxpc3Qgb2YgaGFz
aCByZWZlcmVuY2VzIHdpdGggdGhlIGtleXMgeyBhZGRyZXNzLCBzaXplLCB0eXBlLCBjYWxsU3Rh
Y2ssIGxlYWtzT3V0cHV0IH0KLXN1YiBwYXJzZUxlYWtzT3V0cHV0KFxAKQotewotICAgIG15ICgk
bGVha3NPdXRwdXQpID0gQF87Ci0KLSAgICAjIEZvcm1hdDoKLSAgICAjICAgUHJvY2VzcyAwMDAw
MDogMTIzNCBub2RlcyBtYWxsb2NlZCBmb3IgMTIzNCBLQgotICAgICMgICBQcm9jZXNzIDAwMDAw
OiBYWCBsZWFrcyBmb3IgWFhYIHRvdGFsIGxlYWtlZCBieXRlcy4gICAgCi0gICAgIyAgIExlYWs6
IDB4MDAwMDAwMDAgc2l6ZT0xMjM0IFtpbnN0YW5jZSBvZiAnYmxhaCddCi0gICAgIyAgICAgICAw
eDAwMDAwMDAwIDB4MDAwMDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIGEuLmQuZS5lCi0gICAg
IyAgICAgICAuLi4KLSAgICAjICAgICAgIENhbGwgc3RhY2s6IGxlYWtfY2FsbGVyKCkgfCBsZWFr
KCkgfCBtYWxsb2MKLSAgICAjCi0gICAgIyAgIFdlIHRyZWF0IGV2ZXJ5IGxpbmUgZXhjZXB0IGZv
ciAgUHJvY2VzcyAwMDAwMDogYW5kIExlYWs6IGFzIG9wdGlvbmFsCi0KLSAgICBteSAkbGVha0Nv
dW50OwotICAgIG15IEBwYXJzZWRPdXRwdXQgPSAoKTsKLSAgICBteSAkcGFyc2luZ0xlYWsgPSAw
OwotICAgIG15ICRwYXJzZWRMZWFrQ291bnQgPSAwOwotICAgIGZvciBteSAkbGluZSAoQCRsZWFr
c091dHB1dCkgewotICAgICAgICBpZiAoJGxpbmUgPX4gL15Qcm9jZXNzIFxkKzogKFxkKykgbGVh
a3M/LykgewotICAgICAgICAgICAgJGxlYWtDb3VudCA9ICQxOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCRsaW5lIGVxICJcbiIpIHsKLSAgICAgICAgICAgICRwYXJzaW5nTGVhayA9IDA7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoJGxpbmUgPX4gL15MZWFrOiAvKSB7Ci0gICAgICAgICAg
ICAkcGFyc2luZ0xlYWsgPSAxOwotICAgICAgICAgICAgJHBhcnNlZExlYWtDb3VudCsrOwotICAg
ICAgICAgICAgbXkgKCRhZGRyZXNzKSA9ICgkbGluZSA9fiAvTGVhazogKFtbOnhkaWdpdDpdeF0r
KS8pOwotICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRhZGRyZXNzKSkgewotICAgICAgICAgICAg
ICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3QgcGFyc2UgTGVhayBhZGRyZXNzLiIpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXkgKCRzaXpl
KSA9ICgkbGluZSA9fiAvc2l6ZT0oW1s6ZGlnaXQ6XV0rKS8pOwotICAgICAgICAgICAgaWYgKCFk
ZWZpbmVkKCRzaXplKSkgewotICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3Qg
cGFyc2UgTGVhayBzaXplLiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBjb2RlIHNlZW1zIHdyb25nLCB0aGUgbGVh
a3MgdG9vbCBkb2Vzbid0IGFjdHVhbGx5IHVzZSBzaW5nbGUgcXVvdGVzLgotICAgICAgICAgICAg
IyBXZSBzaG91bGQgcmVjb25jaWxlIHdpdGggb3RoZXIgZm9ybWF0IGNoYW5nZXMgdGhhdCBoYXBw
ZW5lZCBzaW5jZSwgc3VjaCBhcyB0aGUKLSAgICAgICAgICAgICMgYWRkaXRpb24gb2Ygem9uZSBp
bmZvcm1hdGlvbi4KLSAgICAgICAgICAgIG15ICgkdHlwZSkgPSAoJGxpbmUgPX4gLycoW14nXSsp
Jy8pOyAjJwotICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCR0eXBlKSkgewotICAgICAgICAgICAg
ICAgICR0eXBlID0gIiI7ICMgVGhlIGxlYWtzIHRvb2wgc29tZXRpbWVzIG9taXRzIHRoZSB0eXBl
LgotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBteSAlbGVhayA9ICgKLSAgICAgICAgICAg
ICAgICAiYWRkcmVzcyIgPT4gJGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgInNpemUiID0+ICRz
aXplLAotICAgICAgICAgICAgICAgICJ0eXBlIiA9PiAkdHlwZSwKLSAgICAgICAgICAgICAgICAi
Y2FsbFN0YWNrIiA9PiAiIiwgIyBUaGUgbGVha3MgdG9vbCBzb21ldGltZXMgb21pdHMgdGhlIGNh
bGwgc3RhY2suCi0gICAgICAgICAgICAgICAgImxlYWtzT3V0cHV0IiA9PiAkbGluZQotICAgICAg
ICAgICAgKTsKLSAgICAgICAgICAgIHB1c2goQHBhcnNlZE91dHB1dCwgXCVsZWFrKTsKLSAgICAg
ICAgfSBlbHNpZiAoJHBhcnNpbmdMZWFrKSB7Ci0gICAgICAgICAgICAkcGFyc2VkT3V0cHV0WyQj
cGFyc2VkT3V0cHV0XS0+eyJsZWFrc091dHB1dCJ9IC49ICRsaW5lOwotICAgICAgICAgICAgaWYg
KCRsaW5lID1+IC9DYWxsIHN0YWNrOi8pIHsKLSAgICAgICAgICAgICAgICAkcGFyc2VkT3V0cHV0
WyQjcGFyc2VkT3V0cHV0XS0+eyJjYWxsU3RhY2sifSA9ICRsaW5lOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbXkgJW5vbkxlYWtMaW5lID0gKAotICAgICAg
ICAgICAgICAgICJsZWFrc091dHB1dCIgPT4gJGxpbmUKLSAgICAgICAgICAgICk7Ci0gICAgICAg
ICAgICBwdXNoKEBwYXJzZWRPdXRwdXQsIFwlbm9uTGVha0xpbmUpOwotICAgICAgICB9Ci0gICAg
fQotICAgIAotICAgIGlmICgkcGFyc2VkTGVha0NvdW50ICE9ICRsZWFrQ291bnQpIHsKLSAgICAg
ICAgcmVwb3J0RXJyb3IoIlBhcnNlZCBsZWFrIGNvdW50ICgkcGFyc2VkTGVha0NvdW50KSBkb2Vz
IG5vdCBtYXRjaCBsZWFrIGNvdW50IHJlcG9ydGVkIGJ5IGxlYWtzIHRvb2wgKCRsZWFrQ291bnQp
LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmV0dXJuIFxAcGFyc2VkT3V0cHV0
OwotfQotCiBzdWIgcmVtb3ZlTWF0Y2hpbmdSZWNvcmRzKFxAJFxAKQogewogICAgIG15ICgkcmVj
b3JkTGlzdCwgJGtleSwgJHJlZ2V4cExpc3QpID0gQF87CkBAIC0yMzYsMTAgKzEyOSwzIEBAIHN1
YiByZW1vdmVNYXRjaGluZ1JlY29yZHMoXEAkXEApCiAgICAgICAgICRpKys7CiAgICAgfQogfQot
Ci1zdWIgcmVwb3J0RXJyb3IoJCkKLXsKLSAgICBteSAoJGVycm9yTWVzc2FnZSkgPSBAXzsKLSAg
ICAKLSAgICBwcmludCBTVERFUlIgYmFzZW5hbWUoJDApIC4gIjogJGVycm9yTWVzc2FnZVxuIjsK
LX0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0ZGlycy5wbQppbmRleCBlYjI2ZDI3NTdmMDUuLmMyOWRhNTNkMGMwOCAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0ZGlycy5wbQpAQCAtNDcsNiArNDcsNyBAQCB1c2UgTGlzdDo6VXRpbDsKIHVzZSBQT1NJWDsK
IHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwogdXNlIFZDU1V0aWxzOwordXNlIHdlYmtpdHBl
cmw6OmRpcnM7CiAKIEJFR0lOIHsKICAgIHVzZSBFeHBvcnRlciAgICgpOwpAQCAtMTQ1LDcgKzE0
Niw2IEBAIG15ICR4Y29kZVNES1BsYXRmb3JtTmFtZTsKIG15ICRzaW11bGF0b3JJZGlvbTsKIG15
ICRjb25maWd1cmF0aW9uRm9yVmlzdWFsU3R1ZGlvOwogbXkgJGNvbmZpZ3VyYXRpb25Qcm9kdWN0
RGlyOwotbXkgJHNvdXJjZURpcjsKIG15ICRjdXJyZW50U1ZOUmV2aXNpb247CiBteSAkZGlkTG9h
ZElQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbjsKIG15ICRubVBhdGg7CkBAIC0xOTUsMjQgKzE5
NSw2IEBAIHN1YiBzZGtQbGF0Zm9ybURpcmVjdG9yeSgkKQogICAgIHJldHVybiAkc2RrUGxhdGZv
cm1EaXJlY3Rvcnk7CiB9CiAKLXN1YiBkZXRlcm1pbmVTb3VyY2VEaXIKLXsKLSAgICByZXR1cm4g
aWYgJHNvdXJjZURpcjsKLSAgICAkc291cmNlRGlyID0gJEZpbmRCaW46OkJpbjsKLSAgICAkc291
cmNlRGlyID1+IHN8LyskfHw7ICMgUmVtb3ZlIHRyYWlsaW5nICcvJyBhcyB3ZSB3b3VsZCBkaWUg
bGF0ZXIKLQotICAgICMgd2Fsa3MgdXAgcGF0aCBjaGVja2luZyBlYWNoIGRpcmVjdG9yeSB0byBz
ZWUgaWYgaXQgaXMgdGhlIG1haW4gV2ViS2l0IHByb2plY3QgZGlyLCAKLSAgICAjIGRlZmluZWQg
YnkgY29udGFpbmluZyBTb3VyY2VzLCBXZWJDb3JlLCBhbmQgSmF2YVNjcmlwdENvcmUuCi0gICAg
dW50aWwgKCgtZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIpICYmIC1k
IEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiU291cmNlIiwgIldlYkNvcmUiKSAmJiAt
ZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIsICJKYXZhU2NyaXB0Q29y
ZSIpKSB8fCAoLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJJbnRlcm5hbCIpICYm
IC1kIEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiT3BlblNvdXJjZSIpKSkKLSAgICB7
Ci0gICAgICAgIGlmICgkc291cmNlRGlyICF+IHN8L1teL10rJHx8KSB7Ci0gICAgICAgICAgICBk
aWUgIkNvdWxkIG5vdCBmaW5kIHRvcCBsZXZlbCB3ZWJraXQgZGlyZWN0b3J5IGFib3ZlIHNvdXJj
ZSBkaXJlY3RvcnkgdXNpbmcgRmluZEJpbi5cbiI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAk
c291cmNlRGlyID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIikg
aWYgLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIik7Ci19Ci0K
IHN1YiBjdXJyZW50UGVybFBhdGgoKQogewogICAgIG15ICR0aGlzUGVybCA9ICReWDsKQEAgLTIy
MiwxMiArMjA0LDYgQEAgc3ViIGN1cnJlbnRQZXJsUGF0aCgpCiAgICAgcmV0dXJuICR0aGlzUGVy
bDsKIH0KIAotIyB1c2VkIGZvciBzY3JpcHRzIHdoaWNoIGFyZSBzdG9yZWQgaW4gYSBub24tc3Rh
bmRhcmQgbG9jYXRpb24KLXN1YiBzZXRTb3VyY2VEaXIoJCkKLXsKLSAgICAoJHNvdXJjZURpcikg
PSBAXzsKLX0KLQogc3ViIGRldGVybWluZU5pbmphVmVyc2lvbgogewogICAgIGNob21wKG15ICRu
aW5qYVZlcnNpb24gPSBgbmluamEgLS12ZXJzaW9uYCk7CkBAIC0yNTcsMTEgKzIzMywxMSBAQCBz
dWIgcmVhZFhjb2RlVXNlckRlZmF1bHQoJCkKIHN1YiBkZXRlcm1pbmVCYXNlUHJvZHVjdERpcgog
ewogICAgIHJldHVybiBpZiBkZWZpbmVkICRiYXNlUHJvZHVjdERpcjsKLSAgICBkZXRlcm1pbmVT
b3VyY2VEaXIoKTsKIAogICAgIG15ICRzZXRTaGFyZWRQcmVjb21wc0RpcjsKICAgICBteSAkaW5k
ZXhEYXRhU3RvcmVEaXI7CiAgICAgJGJhc2VQcm9kdWN0RGlyID0gJEVOVnsiV0VCS0lUX09VVFBV
VERJUiJ9OworICAgICRzb3VyY2VEaXIgPSBzb3VyY2VEaXIoKQogCiAgICAgaWYgKCFkZWZpbmVk
KCRiYXNlUHJvZHVjdERpcikgYW5kIGlzQXBwbGVDb2NvYVdlYktpdCgpKSB7CiAgICAgICAgICMg
U2lsZW50bHkgcmVtb3ZlIH4vTGlicmFyeS9QcmVmZXJlbmNlcy94Y29kZWJ1aWxkLnBsaXN0IHdo
aWNoIGNhbgpAQCAtODU2LDE2ICs4MzIsMTQgQEAgc3ViIGRldGVybWluZUN1cnJlbnRTVk5SZXZp
c2lvbgogICAgICMgV2UgYWx3YXlzIHVwZGF0ZSB0aGUgY3VycmVudCBTVk4gcmV2aXNpb24gaGVy
ZSwgYW5kIGxlYXZlIHRoZSBjYWNoaW5nCiAgICAgIyB0byBjdXJyZW50U1ZOUmV2aXNpb24oKSwg
c28gdGhhdCBjaGFuZ2VzIHRvIHRoZSBTVk4gcmV2aXNpb24gd2hpbGUgdGhlCiAgICAgIyBzY3Jp
cHQgaXMgcnVubmluZyBjYW4gYmUgcGlja2VkIHVwIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBh
Z2Fpbi4KLSAgICBkZXRlcm1pbmVTb3VyY2VEaXIoKTsKLSAgICAkY3VycmVudFNWTlJldmlzaW9u
ID0gc3ZuUmV2aXNpb25Gb3JEaXJlY3RvcnkoJHNvdXJjZURpcik7CisgICAgJGN1cnJlbnRTVk5S
ZXZpc2lvbiA9IHN2blJldmlzaW9uRm9yRGlyZWN0b3J5KHNvdXJjZURpcigpKTsKICAgICByZXR1
cm4gJGN1cnJlbnRTVk5SZXZpc2lvbjsKIH0KIAogCiBzdWIgY2hkaXJXZWJLaXQKIHsKLSAgICBk
ZXRlcm1pbmVTb3VyY2VEaXIoKTsKLSAgICBjaGRpciAkc291cmNlRGlyIG9yIGRpZTsKKyAgICBj
aGRpciBzb3VyY2VEaXIoKSBvciBkaWU7CiB9CiAKIHN1YiBiYXNlUHJvZHVjdERpcgpAQCAtODc0
LDEyICs4NDgsNiBAQCBzdWIgYmFzZVByb2R1Y3REaXIKICAgICByZXR1cm4gJGJhc2VQcm9kdWN0
RGlyOwogfQogCi1zdWIgc291cmNlRGlyCi17Ci0gICAgZGV0ZXJtaW5lU291cmNlRGlyKCk7Ci0g
ICAgcmV0dXJuICRzb3VyY2VEaXI7Ci19Ci0KIHN1YiBwcm9kdWN0RGlyCiB7CiAgICAgZGV0ZXJt
aW5lQ29uZmlndXJhdGlvblByb2R1Y3REaXIoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvTG9h
ZEFzTW9kdWxlLnBtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTRlZThiZDgzNTEu
LjAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvTG9hZEFzTW9kdWxl
LnBtCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcGVybAot
IwotIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
IyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotIyBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSMKLSMgSW1wb3J0cyBQZXJs
IHNjcmlwdHMgaW50byBhIHBhY2thZ2UgZm9yIGVhc3kgdW5pdCB0ZXN0aW5nLgotCi1wYWNrYWdl
IExvYWRBc01vZHVsZTsKLQotdXNlIHN0cmljdDsKLXVzZSB3YXJuaW5nczsKLQotdXNlIEZpbGU6
OlNwZWM7Ci11c2UgRmluZEJpbjsKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmlu
OjpCaW4sICIuLiIsICIuLiIpOwotdXNlIHdlYmtpdGRpcnM7Ci0KLXVzZSBiYXNlICdFeHBvcnRl
cic7Ci11c2UgdmFycyBxdyhARVhQT1JUIEBFWFBPUlRfT0sgJUVYUE9SVF9UQUdTICRWRVJTSU9O
KTsKLQotQEVYUE9SVCA9ICgpOwotQEVYUE9SVF9PSyA9ICgpOwotJUVYUE9SVF9UQUdTID0gKCk7
Ci0kVkVSU0lPTiA9ICcxLjAnOwotCi1zdWIgcmVhZEZpbGUoJCk7Ci0KLXN1YiBpbXBvcnQKLXsK
LSAgICBteSAoJHNlbGYsICRwYWNrYWdlLCAkc2NyaXB0KSA9IEBfOwotICAgIG15ICRzY3JpcHRQ
YXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZShzb3VyY2VEaXIoKSwgIlRvb2xzIiwgIlNjcmlwdHMi
LCAkc2NyaXB0KTsKLSAgICBldmFsICIKLSAgICAgICAgcGFja2FnZSAkcGFja2FnZTsKLQotICAg
ICAgICB1c2Ugc3RyaWN0OwotICAgICAgICB1c2Ugd2FybmluZ3M7Ci0KLSAgICAgICAgdXNlIGJh
c2UgJ0V4cG9ydGVyJzsKLSAgICAgICAgdXNlIHZhcnMgcXcoXEBFWFBPUlQgXEBFWFBPUlRfT0sg
XCVFWFBPUlRfVEFHUyBcJFZFUlNJT04pOwotCi0gICAgICAgIFxARVhQT1JUID0gKCk7Ci0gICAg
ICAgIFxARVhQT1JUX09LID0gKCk7Ci0gICAgICAgIFwlRVhQT1JUX1RBR1MgPSAoKTsKLSAgICAg
ICAgXCRWRVJTSU9OID0gJzEuMCc7Ci0KLSAgICAgICAgc3ViIHsiIC4gcmVhZEZpbGUoJHNjcmlw
dFBhdGgpIC4gIn0KLSAgICAiOwotfQotCi1zdWIgcmVhZEZpbGUoJCkKLXsKLSAgICBteSAkcGF0
aCA9IHNoaWZ0OwotICAgIGxvY2FsICQvID0gdW5kZWY7ICMgUmVhZCBpbiB0aGUgd2hvbGUgZmls
ZSBhdCBvbmNlLgotICAgIG9wZW4gRklMRSwgIjwiLCAkcGF0aCBvciBkaWUgIkNhbm5vdCBvcGVu
ICRwYXRoOiAkISI7Ci0gICAgbXkgJGNvbnRlbnRzID0gPEZJTEU+OwotICAgIGNsb3NlIEZJTEU7
Ci0gICAgcmV0dXJuICRjb250ZW50czsKLX07Ci0KLTE7CmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHBlcmwvYnVpbGQvb3V0cHV0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L2J1aWxkL291dHB1dC5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjA0ZDk3YWFlYTM1MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9idWlsZC9vdXRwdXQucG0KQEAgLTAsMCArMSwxNDcgQEAKK3BhY2thZ2Ugd2Via2l0cGVybDo6
YnVpbGQ6Om91dHB1dDsKKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBDYXJwOwor
CitCRUdJTiB7CisgICB1c2UgRXhwb3J0ZXIgICAoKTsKKyAgIG91ciAoJFZFUlNJT04sIEBJU0Es
IEBFWFBPUlQsIEBFWFBPUlRfT0ssICVFWFBPUlRfVEFHUyk7CisgICAkVkVSU0lPTiAgICAgPSAx
LjAwOworICAgQElTQSAgICAgICAgID0gcXcoRXhwb3J0ZXIpOworICAgQEVYUE9SVCAgICAgID0g
cXcoCisgICAgICAgICAgICAgICAgICAgIHNob3VsZElnbm9yZUxpbmUKKyAgICAgICAgICAgICAg
ICAgICAgJHBsYXRmb3JtCisgICAgICAgICAgICAgICAgKTsKKyAgICVFWFBPUlRfVEFHUyA9ICgp
OworICAgQEVYUE9SVF9PSyAgID0gKCk7Cit9CisKK291ciAkcGxhdGZvcm0gPSAnbWFjJzsKKwor
bXkgJGluRW50aXRsZW1lbnRzID0gMDsKK215ICRpbkRldmljZVByZXBhcmF0aW9uV2FybmluZ3Mg
PSAwOworCitzdWIgc2hvdWxkU2hvd1N1YnNlcXVlbnRMaW5lIHsKKyAgICBteSAkbGluZSA9IHNo
aWZ0OworCisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3JlZmVyZW5jZWQgZnJvbTokLzsKKyAg
ICByZXR1cm4gMSBpZiAkbGluZSA9fiAvKG5vdGU6fGVycm9yOikvOworCisgICAgcmV0dXJuIDA7
Cit9CisKK3N1YiBzaG91bGRJZ25vcmVMaW5lIHsKKyAgICBteSAoJHByZXZpb3VzTGluZSwgJGxp
bmUpID0gQF87CisKKyAgICBpZiAoJGxpbmUgPX4gL15FbnRpdGxlbWVudHM6JC8pIHsKKyAgICAg
ICAgJGluRW50aXRsZW1lbnRzID0gMTsKKyAgICAgICAgcmV0dXJuIDEKKyAgICB9CisKKyAgICBp
ZiAoJGluRW50aXRsZW1lbnRzKSB7CisgICAgICAgICRpbkVudGl0bGVtZW50cyA9IDAgaWYgJGxp
bmUgPX4gL159JC87CisgICAgICAgIHJldHVybiAxCisgICAgfQorCisgICAgIyBpUGhvbmUgcHJl
cGFyYXRpb24gZXJyb3JzIGFsd2F5cyBzdGFydCBhbmQgZW5kIHdpdGggbGluZXMgY29udGFpbmlu
ZyAnaVBob25lQ29ubmVjdDonLgorICAgIGlmICgkaW5EZXZpY2VQcmVwYXJhdGlvbldhcm5pbmdz
KSB7CisgICAgICAgICRpbkRldmljZVByZXBhcmF0aW9uV2FybmluZ3MgPSAwIGlmICRsaW5lID1+
IC89PSBFTkQ6IFVuZGVybHlpbmcgZGV2aWNlIHByZXBhcmF0aW9uIHdhcm5pbmdzID09LzsKKyAg
ICAgICAgcmV0dXJuIDEKKyAgICB9CisKKyAgICBpZiAoJGxpbmUgPX4gL2lQaG9uZUNvbm5lY3Q6
LykgeworICAgICAgICAkaW5EZXZpY2VQcmVwYXJhdGlvbldhcm5pbmdzID0gMTsKKyAgICAgICAg
cmV0dXJuIDEKKyAgICB9CisKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKiQvOworICAg
IHJldHVybiAxIGlmICRsaW5lID1+IC9eQ29tbWFuZCBsaW5lIGludm9jYXRpb246LzsKKyAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvXkJ1aWxkIHNldHRpbmdzIGZyb20gY29tbWFuZCBsaW5lOi87
CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15Vc2VyIGRlZmF1bHRzIGZyb20gY29tbWFuZCBs
aW5lOi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15QcmVwYXJlIGJ1aWxkLzsKKyAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvXkJ1aWxkIHN5c3RlbSBpbmZvcm1hdGlvbi87CisgICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBQbGFubmluZyBidWlsZC87CisgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15ub3RlOiBDb25zdHJ1Y3RpbmcgYnVpbGQgZGVzY3JpcHRpb24vOworICAg
IHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogQnVpbGQgZGVzY3JpcHRpb24gKGNvbnN0cnVj
dGVkfGxvYWRlZCkgaW4gLiovOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogVXNp
bmcgYnVpbGQgZGVzY3JpcHRpb24gLiovOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90
ZTogVXNpbmcgZWFnZXIgY29tcGlsYXRpb24vOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9e
bm90ZTogRXhlY3V0aW9uIHBvbGljeSBleGNlcHRpb24gcmVnaXN0cmF0aW9uIGZhaWxlZCBhbmQg
d2FzIHNraXBwZWQ6IEVycm9yIERvbWFpbj1OU1BPU0lYRXJyb3JEb21haW4gQ29kZT0xICJPcGVy
YXRpb24gbm90IHBlcm1pdHRlZCIvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTog
ZGV0ZWN0ZWQgZW5jb2Rpbmcgb2YgaW5wdXQgZmlsZSBhcyBVbmljb2RlIFwoLipcKS87CisgICAg
cmV0dXJuIDEgaWYgJGxpbmUgPX4gL21ha2UoXFtcZCtcXSk/OiBOb3RoaW5nIHRvIGJlIGRvbmUg
Zm9yLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkphdmFTY3JpcHRDb3JlXC9jcmVhdGVf
aGFzaF90YWJsZS87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL0phdmFTY3JpcHRDb3JlLmZy
YW1ld29ya1wvUHJpdmF0ZUhlYWRlcnNcL2NyZWF0ZV9oYXNoX3RhYmxlLzsKKyAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvXkphdmFTY3JpcHRDb3JlXC9wY3JlXC9kZnRhYmxlcy87CisgICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15DcmVhdGluZyBoYXNodGFibGUgZm9yIC87CisgICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL15Xcm90ZSBvdXRwdXQgdG8gLzsKKyAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXlVORE9DVU1FTlRFRDogLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvbGlidG9v
bC4qaGFzIG5vIHN5bWJvbHMvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eIyBMb3dlciBj
YXNlIGFsbCB0aGUgdmFsdWVzLCBhcyBDU1MgdmFsdWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlJC87
CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15pZiBzb3J0IC87CisgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL3NldC13ZWJraXQtY29uZmlndXJhdGlvbi87CisgICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL15idWlsZGluZyBmaWxlIGxpc3QvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9e
XC5cLyQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXFMrXC5oJC87CisgICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL15cUytcLyQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ec2Vu
dCBcZCsgYnl0ZXMvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9edG90YWwgc2l6ZSBpcy87
CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL09uZSBvZiB0aGUgdHdvIHdpbGwgYmUgdXNlZFwu
IFdoaWNoIG9uZSBpcyB1bmRlZmluZWRcLi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL1Ro
ZSBMZWdhY3kgQnVpbGQgU3lzdGVtIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNl
LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlwoICh4Y29kZWJ1aWxkfGlmKSAvOworICAg
IHJldHVybiAxIGlmICRsaW5lID1+IC9ed2FybmluZzogY2FuJ3QgZmluZCBhZGRpdGlvbmFsIFNE
Sy87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL153YXJuaW5nOiBubyB1bWJyZWxsYSBoZWFk
ZXIgZm91bmQgZm9yIHRhcmdldCAnLionLCBtb2R1bGUgbWFwIHdpbGwgbm90IGJlIGdlbmVyYXRl
ZCQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ed2FybmluZ1w6IGRldGVjdGVkIGludGVy
bmFsIGluc3RhbGwsIHBhc3NpbmcgZW50aXRsZW1lbnRzIHRvIHNpbXVsYXRvciBhbnl3YXlcLi87
CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL21heSBub3QgZnVuY3Rpb24gaW4gdGhlIFNpbXVs
YXRvciBiZWNhdXNlIEFkIEhvYy87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL1wvdXNyXC9i
aW5cL2NsYW5nIC4qPyBcPiBcUysuc2IvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8geGNv
ZGVidWlsZFxbWzAtOV0rOlswLTlhLWZdK1xdXHMrRFZUQXNzZXJ0aW9uczogV2FybmluZyBpbiAu
Ki87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL14oRGV0YWlsc3xPYmplY3R8TWV0aG9kfEZ1
bmN0aW9ufFRocmVhZCk6LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlBsZWFzZSBmaWxl
IGEgYnVnIGF0IC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL2NyZWF0ZWQgYnkgYW4gdW5z
dXBwb3J0ZWQgWENEZXBlbmRlbmN5R3JhcGggYnVpbGQkLzsKKyAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvd2FybmluZzogVGhlIGFzc2lnbm1lbnQgb2YgJy4qJyBhdCAiLioiIHVzZXMgXCRcKGlu
aGVyaXRlZFwpLiBJbiB0aGUgbmV3IGJ1aWxkIHN5c3RlbSB0aGlzIHdpbGwgaW5oZXJpdCBmcm9t
IGFuIGVhcmxpZXIgZGVmaW5pdGlvbiBvZiAnLionIGluIHRoaXMgeGNjb25maWcgZmlsZSBvciBp
dHMgaW1wb3J0czsgdGhlIG9sZCBidWlsZCBzeXN0ZW0gd291bGQgZGlzY2FyZCBlYXJsaWVyIGRl
ZmluaXRpb25zLiBUaGlzIG1heSByZXN1bHQgaW4gY2hhbmdlcyB0byByZXNvbHZlZCBidWlsZCBz
ZXR0aW5nIHZhbHVlcy4vOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8uKiBjb20uYXBwbGUu
YWN0b29sLmNvbXBpbGF0aW9uLXJlc3VsdHMgLiovOworICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC8uKlwvQXNzZXRzLmNhci87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLy4qXC9hc3NldGNh
dGFsb2dfZ2VuZXJhdGVkX2luZm8ucGxpc3QvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9e
bW91bnQ6IC4rIGZhaWxlZCB3aXRoLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVzaW5n
IC4rIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQuJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L3JlcGxhY2luZyBleGlzdGluZyBzaWduYXR1cmUkLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvXlVubG9ja2luZyAnLipcLmtleWNoYWluLWRiJyQvOworICAgIHJldHVybiAxIGlmICRsaW5l
ID1+IC9eXGQrIGxvY2FsaXphYmxlIHN0cmluZ3MkLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvXlxkKyBwbHVyYWwgcnVsZXMkLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlRoZSBs
aXN0IG9mIGV4cG9ydGVkIHN5bWJvbHMgZGlkIG5vdCBjaGFuZ2UuJC87CisgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15kaXR0bzogQ2Fubm90IGdldCB0aGUgcmVhbCBwYXRoIGZvciBzb3VyY2Uv
OworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eRHVwbGljYXRlIEVudHJ5IFdhcyBTa2lwcGVk
Oi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15BZGRpbmcgLio/ZW50aXRsZW1lbnRzLzsK
KyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXk1ha2luZyBhcHAgYnVuZGxlIGxhdW5jaGFibGUv
OworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eRmluaXNoZWQgYWRkaW5nIGVudGl0bGVtZW50
c1wuJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL14uKiB3aWxsIG5vdCBiZSBjb2RlIHNp
Z25lZCBiZWNhdXNlIGl0cyBzZXR0aW5ncyBkb24ndCBzcGVjaWZ5IGEgZGV2ZWxvcG1lbnQgdGVh
bS4kLzsKKworICAgIGlmICgkcGxhdGZvcm0gZXEgIndpbiIpIHsKKyAgICAgICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15ccyoodG91Y2h8cGVybHxjYXR8cm0gLWZ8ZGVsfHB5dGhvbnxcL3Vzclwv
YmluXC9nXCtcK3xncGVyZnxlY2hvfHNlZHxpZiBcWyBcLWZ8V2ViQ29yZVwvZ2VuZXJhdGUtZXhw
b3J0LWZpbGUpIC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqKGlmIG5vdCBl
eGlzdCBcInxpZiBlcnJvcmxldmVsIDEpLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
LyheXHMqfE1TQjMwNzM6XHMrKShzZXQgfFJFTSB8Y21kIFwvYykvOworICAgICAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvXlxzKltjQ106XFxbcFBdcm9ncmFtIFtmRl1pbGVzLipcXC4qXFwoQ0x8
bWlkbClcLmV4ZSAvOworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKlByb2Nlc3Np
bmcgLipcLihhY2Z8aHxpZGwpXHMqJC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9e
XHMqcHJpbnRmIC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqXC91c3JcL2Jp
blwvYmFzaFxzKi87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqb2ZmbGluZWFz
bTogTm90aGluZyBjaGFuZ2VkLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyBcZCsg
RmlsZVwoc1wpIGNvcGllZC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqRmls
ZSBub3QgZm91bmQgLSBcKlwuaC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ta2Rp
clxzK1wiLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3hjb3B5IFwveSBcL2QgXCIv
OworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXC5vYmpcIlxzKiQvOworICAgICAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvOlxzKyhjbWQgXC9jfHNldClccysvOworICAgICAgICByZXR1
cm4gMSBpZiAkbGluZSA9fiAvTVNCMzA3MzpccyskLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL01TQjMwNzM6XHMraWYgbm90IGV4aXN0LzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL3doaWNoLmV4ZSBiYXNoLzsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gMSBp
ZiAkbGluZSA9fiAvXih0b3VjaHxwZXJsfGNhdHxybSAtZnxweXRob258XC91c3JcL2JpblwvZ1wr
XCt8XC9iaW5cL2xufGdwZXJmfGVjaG98c2VkfGlmIFxbIFwtZnxXZWJDb3JlXC9nZW5lcmF0ZS1l
eHBvcnQtZmlsZXx3cml0ZS1maWxlfGNobW9kKSAvOworICAgICAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXiAgICAvICYmICFzaG91bGRTaG93U3Vic2VxdWVudExpbmUoJHByZXZpb3VzTGluZSk7
CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ecHJpbnRmIC87CisgICAgICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9eb2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLzsKKyAgICB9Cisg
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15TaG93aW5nIGZpcnN0LzsKKworICAgIHJldHVybiAw
OworfQorCisxOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2NoYW5nZWxv
Zy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9jaGFuZ2Vsb2cucG0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYTE2NGFiODMwZGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvY2hhbmdlbG9nLnBtCkBAIC0wLDAgKzEsMTUy
NSBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCisjIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
IyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcGFja2FnZSB3ZWJraXRw
ZXJsOjpjaGFuZ2Vsb2c7CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgQ2FycDsK
K3VzZSBGaWxlOjpTcGVjOwordXNlIFZDU1V0aWxzOworCitCRUdJTiB7CisgICB1c2UgRXhwb3J0
ZXIgICAoKTsKKyAgIG91ciAoJFZFUlNJT04sIEBJU0EsIEBFWFBPUlQsIEBFWFBPUlRfT0ssICVF
WFBPUlRfVEFHUyk7CisgICAkVkVSU0lPTiAgICAgPSAxLjAwOworICAgQElTQSAgICAgICAgID0g
cXcoRXhwb3J0ZXIpOworICAgQEVYUE9SVCAgICAgID0gcXcoCisgICAgICAgICAgICAgICAgICAg
IGFjdHVhbGx5R2VuZXJhdGVGdW5jdGlvbkxpc3RzCisgICAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZUNvbW1hbmQKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hh
bmdlCisgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UKKyAg
ICAgICAgICAgICAgICAgICAgZmV0Y2hCdWdEZXNjcmlwdGlvbkZyb21CdWdYTUxEYXRhCisgICAg
ICAgICAgICAgICAgICAgIGZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YQorICAgICAgICAgICAg
ICAgICk7CisgICAlRVhQT1JUX1RBR1MgPSAoKTsKKyAgIEBFWFBPUlRfT0sgICA9IHF3KAorICAg
ICAgICAgICAgICAgICAgICBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2NwcAorICAgICAg
ICAgICAgICAgICAgICBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcworICAgICAgICAg
ICAgICAgICAgICBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmEKKyAgICAgICAgICAg
ICAgICAgICAgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0CisgICAgICAg
ICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybAorICAgICAgICAg
ICAgICAgICAgICBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhvbgorICAgICAgICAg
ICAgICAgICAgICBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3N3aWZ0CisgICAgICAgICAg
ICAgICAgKTsKK30KKwordXNlIGNvbnN0YW50IFNWTiA9PiAic3ZuIjsKK3VzZSBjb25zdGFudCBH
SVQgPT4gImdpdCI7CisKK3N1YiBhY3R1YWxseUdlbmVyYXRlRnVuY3Rpb25MaXN0cyB7CisgICAg
bXkgKCRjaGFuZ2VkRmlsZXMsICRmdW5jdGlvbkxpc3RzLCAkZ2l0Q29tbWl0LCAkZ2l0SW5kZXgs
ICRtZXJnZUJhc2UsICRkZWxlZ2F0ZUhhc2hSZWYpID0gQF87CisKKyAgICBteSAlbGluZV9yYW5n
ZXNfYWZ0ZXJfY2hhbmdlZDsKKyAgICBteSAlbGluZV9yYW5nZXNfYmVmb3JlX2NoYW5nZWQ7Cisg
ICAgaWYgKEAkY2hhbmdlZEZpbGVzKSB7CisgICAgICAgICMgRm9yIGVhY2ggZmlsZSwgYnVpbGQg
YSBsaXN0IG9mIG1vZGlmaWVkIGxpbmVzLgorICAgICAgICAjIFVzZSBsaW5lIG51bWJlcnMgZnJv
bSB0aGUgImFmdGVyIiBzaWRlIG9mIGVhY2ggZGlmZi4KKyAgICAgICAgcHJpbnQgU1RERVJSICIg
IFJldmlld2luZyBkaWZmIHRvIGRldGVybWluZSB3aGljaCBsaW5lcyBjaGFuZ2VkLlxuIjsKKyAg
ICAgICAgbXkgJGZpbGU7CisgICAgICAgIG15ICRkaWZmRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhh
c2hSZWYtPntvcGVuRGlmZn0oJGNoYW5nZWRGaWxlcywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAk
bWVyZ2VCYXNlKTsKKyAgICAgICAgaWYgKCEkZGlmZkZpbGVIYW5kbGUpIHsKKyAgICAgICAgICAg
IGRpZSAiVGhlIGRpZmYgZmFpbGVkOiAkIS5cbiI7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUg
KDwkZGlmZkZpbGVIYW5kbGU+KSB7CisgICAgICAgICAgICBteSAkZmlsZVBhdGggPSBwYXJzZURp
ZmZTdGFydExpbmUoJF8pOworICAgICAgICAgICAgJGZpbGUgPSAkZGVsZWdhdGVIYXNoUmVmLT57
bm9ybWFsaXplUGF0aH0oJGZpbGVQYXRoKSBpZiAkZmlsZVBhdGg7CisgICAgICAgICAgICBpZiAo
ZGVmaW5lZCAkZmlsZSkgeworICAgICAgICAgICAgICAgIG15ICgkYmVmb3JlX3N0YXJ0LCAkYmVm
b3JlX2VuZCkgPSBleHRyYWN0TGluZVJhbmdlQmVmb3JlQ2hhbmdlKCRfKTsKKyAgICAgICAgICAg
ICAgICBpZiAoJGJlZm9yZV9zdGFydCA+PSAxICYmICRiZWZvcmVfZW5kID49IDEpIHsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaCBAeyRsaW5lX3Jhbmdlc19iZWZvcmVfY2hhbmdlZHskZmlsZX19
LCBbICRiZWZvcmVfc3RhcnQsICRiZWZvcmVfZW5kIF07CisgICAgICAgICAgICAgICAgfSBlbHNp
ZiAoL0RPX05PVF9DT01NSVQvKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAi
V0FSTklORzogZmlsZSAkZmlsZSBjb250YWlucyB0aGUgc3RyaW5nIERPX05PVF9DT01NSVQsIGxp
bmUgJC5cbiI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG15ICgkYWZ0ZXJf
c3RhcnQsICRhZnRlcl9lbmQpID0gZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlKCRfKTsKKyAg
ICAgICAgICAgICAgICBpZiAoJGFmdGVyX3N0YXJ0ID49IDEgJiYgJGFmdGVyX2VuZCA+PSAxKSB7
CisgICAgICAgICAgICAgICAgICAgIHB1c2ggQHskbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHsk
ZmlsZX19LCBbICRhZnRlcl9zdGFydCwgJGFmdGVyX2VuZCBdOworICAgICAgICAgICAgICAgIH0g
ZWxzaWYgKC9ET19OT1RfQ09NTUlULykgeworICAgICAgICAgICAgICAgICAgICBwcmludCBTVERF
UlIgIldBUk5JTkc6IGZpbGUgJGZpbGUgY29udGFpbnMgdGhlIHN0cmluZyBET19OT1RfQ09NTUlU
LCBsaW5lICQuXG4iOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBjbG9zZSgkZGlmZkZpbGVIYW5kbGUpOworICAgIH0KKworICAgICMgRm9yIGVh
Y2ggc291cmNlIGZpbGUsIGNvbnZlcnQgbGluZSByYW5nZSB0byBmdW5jdGlvbiBsaXN0LgorICAg
IHByaW50IFNUREVSUiAiICBFeHRyYWN0aW5nIGFmZmVjdGVkIGZ1bmN0aW9uIG5hbWVzIGZyb20g
c291cmNlIGZpbGVzLlxuIjsKKyAgICBteSAlZmlsZXNUb0V4YW1pbmUgPSBtYXAgeyAkXyA9PiAx
IH0gKGtleXMoJWxpbmVfcmFuZ2VzX2JlZm9yZV9jaGFuZ2VkKSwga2V5cyglbGluZV9yYW5nZXNf
YWZ0ZXJfY2hhbmdlZCkpOworICAgIGZvcmVhY2ggbXkgJGZpbGUgKGtleXMgJWZpbGVzVG9FeGFt
aW5lKSB7CisgICAgICAgIG15ICVzYXdfZnVuY3Rpb247CisKKyAgICAgICAgIyBGaW5kIGFsbCB0
aGUgZnVuY3Rpb25zIGluIHRoZSBmaWxlLgorICAgICAgICBteSAkc291cmNlRmlsZUhhbmRsZSA9
ICRkZWxlZ2F0ZUhhc2hSZWYtPntvcGVuRmlsZX0oJGZpbGUpOworICAgICAgICBuZXh0IHVubGVz
cyAkc291cmNlRmlsZUhhbmRsZTsKKyAgICAgICAgbXkgQGFmdGVyQ2hhbmdlRnVuY3Rpb25SYW5n
ZXMgPSBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXMoJHNvdXJjZUZpbGVIYW5kbGUsICRmaWxlKTsK
KyAgICAgICAgY2xvc2UoJHNvdXJjZUZpbGVIYW5kbGUpOworCisgICAgICAgICMgRmluZCBtb2Rp
ZmllZCBmdW5jdGlvbnMgaW4gdGhlIGZpbGUuCisgICAgICAgIGlmICgkbGluZV9yYW5nZXNfYWZ0
ZXJfY2hhbmdlZHskZmlsZX0pIHsKKyAgICAgICAgICAgIG15IEBjaGFuZ2VfcmFuZ2VzID0gKEB7
JGxpbmVfcmFuZ2VzX2FmdGVyX2NoYW5nZWR7JGZpbGV9fSwgW10pOworICAgICAgICAgICAgbXkg
QGZ1bmN0aW9ucyA9IGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucygkZmlsZSwgXEBjaGFuZ2VfcmFu
Z2VzLCBcQGFmdGVyQ2hhbmdlRnVuY3Rpb25SYW5nZXMpOworCisgICAgICAgICAgICAjIEZvcm1h
dCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMuCisgICAgICAgICAgICBpZiAoQGZ1bmN0aW9ucykgewor
ICAgICAgICAgICAgICAgICRmdW5jdGlvbkxpc3RzLT57JGZpbGV9ID0gIiIgaWYgIWRlZmluZWQg
JGZ1bmN0aW9uTGlzdHMtPnskZmlsZX07CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMt
PnskZmlsZX0gLj0gIlxuICAgICAgICAoIiAuIGpvaW4oIik6XG4gICAgICAgICgiLCBAZnVuY3Rp
b25zKSAuICIpOiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgIyBGaW5kIHRo
ZSBkZWxldGVkIGZ1bmN0aW9ucyBpbiB0aGUgb3JpZ2luYWwgZmlsZS4KKyAgICAgICAgaWYgKCRs
aW5lX3Jhbmdlc19iZWZvcmVfY2hhbmdlZHskZmlsZX0pIHsKKyAgICAgICAgICAgIG15ICRvcmln
aW5hbEZpbGVIYW5kbGUgPSAkZGVsZWdhdGVIYXNoUmVmLT57b3Blbk9yaWdpbmFsRmlsZX0oJGZp
bGUsICRnaXRDb21taXQsICRnaXRJbmRleCwgJG1lcmdlQmFzZSk7CisgICAgICAgICAgICBuZXh0
IHVubGVzcyAkb3JpZ2luYWxGaWxlSGFuZGxlOworICAgICAgICAgICAgbXkgQGJlZm9yZUNoYW5n
ZUZ1bmN0aW9uUmFuZ2VzID0gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzKCRvcmlnaW5hbEZpbGVI
YW5kbGUsICRmaWxlKTsKKyAgICAgICAgICAgIGNsb3NlKCRvcmlnaW5hbEZpbGVIYW5kbGUpOwor
CisgICAgICAgICAgICBteSAlZXhpc3RzQWZ0ZXJDaGFuZ2UgPSBtYXAgeyAkXy0+WzJdID0+IDEg
fSBAYWZ0ZXJDaGFuZ2VGdW5jdGlvblJhbmdlczsKKworICAgICAgICAgICAgbXkgQGZ1bmN0aW9u
czsKKyAgICAgICAgICAgIG15ICVzYXdGdW5jdGlvbnM7CisgICAgICAgICAgICBmb3IgbXkgJGZ1
bmN0aW9uUmFuZ2UgKEBiZWZvcmVDaGFuZ2VGdW5jdGlvblJhbmdlcykgeworICAgICAgICAgICAg
ICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb25SYW5nZS0+WzJdOworICAgICAgICAgICAg
ICAgIGlmICghJGV4aXN0c0FmdGVyQ2hhbmdleyRmdW5jdGlvbk5hbWV9ICYmICEkc2F3RnVuY3Rp
b25zeyRmdW5jdGlvbk5hbWV9KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2ggQGZ1bmN0aW9u
cywgJGZ1bmN0aW9uTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgJHNhd0Z1bmN0aW9uc3skZnVu
Y3Rpb25OYW1lfSA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAjIEZvcm1hdCB0aGUgbGlzdCBvZiBkZWxldGVkIGZ1bmN0aW9ucy4KKyAgICAgICAg
ICAgIGlmIChAZnVuY3Rpb25zKSB7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnsk
ZmlsZX0gPSAiIiBpZiAhZGVmaW5lZCAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfTsKKyAgICAgICAg
ICAgICAgICAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfSAuPSAiXG4gICAgICAgICgiIC4gam9pbigi
KTogRGVsZXRlZC5cbiAgICAgICAgKCIsIEBmdW5jdGlvbnMpIC4gIik6IERlbGV0ZWQuIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworc3ViIGV4dHJhY3RMaW5lUmFuZ2VB
ZnRlckNoYW5nZSB7CisgICAgbXkgJHN0cmluZyA9IHNoaWZ0OworICAgIG15ICRjaHVua1Jhbmdl
ID0gcGFyc2VDaHVua1JhbmdlKCRzdHJpbmcpOworICAgIGlmICghJGNodW5rUmFuZ2UpIHsKKyAg
ICAgICAgcmV0dXJuICgtMSwgLTEpOyAjIE1hbGZvcm1lZAorICAgIH0KKyAgICBpZiAoISRjaHVu
a1JhbmdlLT57bmV3U3RhcnRpbmdMaW5lfSB8fCAhJGNodW5rUmFuZ2UtPntuZXdMaW5lQ291bnR9
KSB7CisgICAgICAgICAjIERlbGV0aW9uOyBubyBsaW5lcyBleGlzdCBhZnRlciBjaGFuZ2UuCisg
ICAgICAgIHJldHVybiAoJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9LCAkY2h1bmtSYW5n
ZS0+e25ld1N0YXJ0aW5nTGluZX0pOworICAgIH0KKyAgICByZXR1cm4gKCRjaHVua1JhbmdlLT57
bmV3U3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9ICsgJGNodW5r
UmFuZ2UtPntuZXdMaW5lQ291bnR9IC0gMSk7Cit9CisKK3N1YiBleHRyYWN0TGluZVJhbmdlQmVm
b3JlQ2hhbmdlIHsKKyAgICBteSAkc3RyaW5nID0gc2hpZnQ7CisgICAgbXkgJGNodW5rUmFuZ2Ug
PSBwYXJzZUNodW5rUmFuZ2UoJHN0cmluZyk7CisgICAgaWYgKCEkY2h1bmtSYW5nZSkgeworICAg
ICAgICByZXR1cm4gKC0xLCAtMSk7ICMgTWFsZm9ybWVkCisgICAgfQorICAgIGlmICghJGNodW5r
UmFuZ2UtPntzdGFydGluZ0xpbmV9IHx8ICEkY2h1bmtSYW5nZS0+e2xpbmVDb3VudH0pIHsKKyAg
ICAgICAgIyBBZGRpdGlvbjsgbm8gbGluZXMgZXhpc3RlZCBiZWZvcmUgY2hhbmdlLgorICAgICAg
ICByZXR1cm4gKCRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntzdGFy
dGluZ0xpbmV9KTsKKyAgICB9CisgICAgcmV0dXJuICgkY2h1bmtSYW5nZS0+e3N0YXJ0aW5nTGlu
ZX0sICRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSArICRjaHVua1JhbmdlLT57bGluZUNvdW50
fSAtIDEpOworfQorCitzdWIgYXR0cmlidXRlQ29tbWFuZCB7CisgICAgbXkgKCRhdHRyaWJ1dGVD
YWNoZSwgJGZpbGUsICRhdHRyKSA9IEBfOworCisgICAgbXkgJHJlc3VsdDsKKyAgICBpZiAoaXNT
Vk4oKSkgeworICAgICAgICBteSAkZGV2TnVsbCA9IEZpbGU6OlNwZWMtPmRldm51bGwoKTsKKyAg
ICAgICAgbXkgJGZvdW5kQXR0cmlidXRlID0gMDsKKyAgICAgICAgbXkgJHN1YlBhdGggPSAiLiI7
CisgICAgICAgIG15IChAZGlyZWN0b3J5UGFydHMpID0gRmlsZTo6U3BlYy0+c3BsaXRkaXIoJGZp
bGUpOworICAgICAgICBmb3JlYWNoIG15ICRwYXJ0IChAZGlyZWN0b3J5UGFydHMpIHsKKyAgICAg
ICAgICAgIGlmICgkcGFydCBlcSAiLiIpIHsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgJHN1YlBhdGggPSBGaWxlOjpTcGVjLT5qb2luKCRzdWJQYXRo
LCAkcGFydCk7CisgICAgICAgICAgICAkc3ViUGF0aCA9fiBzL15cLlwvLy87CisgICAgICAgICAg
ICBpZiAoJGZvdW5kQXR0cmlidXRlIHx8IGV4aXN0cyAkYXR0cmlidXRlQ2FjaGUtPnskYXR0cn17
JHN1YlBhdGh9ICYmICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gZXEgIjEiKSB7
CisgICAgICAgICAgICAgICAgJGF0dHJpYnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSA9ICIx
IjsKKyAgICAgICAgICAgICAgICAkZm91bmRBdHRyaWJ1dGUgPSAxOworICAgICAgICAgICAgICAg
IG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBteSAkY29tbWFuZCA9IFNWTiAuICIg
cHJvcGdldCAkYXR0ciAnJHN1YlBhdGgnIjsKKyAgICAgICAgICAgIG15ICRhdHRyaWIgPSAkYXR0
cmlidXRlQ2FjaGUtPnskYXR0cn17JHN1YlBhdGh9IHx8IGAkY29tbWFuZCAyPiAkZGV2TnVsbGA7
CisgICAgICAgICAgICBjaG9tcCAkYXR0cmliOworICAgICAgICAgICAgaWYgKCRhdHRyaWIgZXEg
IjEiKSB7CisgICAgICAgICAgICAgICAgJGZvdW5kQXR0cmlidXRlID0gMTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gPSAkYXR0
cmliIHx8ICIwIjsKKyAgICAgICAgfQorICAgICAgICAkcmVzdWx0ID0gJGF0dHJpYnV0ZUNhY2hl
LT57JGF0dHJ9eyRmaWxlfTsKKyAgICB9IGVsc2lmIChpc0dpdCgpKSB7CisgICAgICAgIG15ICRj
b21tYW5kID0gR0lUIC4gIiBjaGVjay1hdHRyICRhdHRyIC0tICckZmlsZSciOworICAgICAgICAk
cmVzdWx0ID0gYCRjb21tYW5kYDsKKyAgICAgICAgY2hvbXAgJHJlc3VsdDsKKyAgICAgICAgJHJl
c3VsdCA9fiBzLy4qXFcoXHcpLyQxLzsKKyAgICB9CisKKyAgICAkcmVzdWx0ID1+IHMvXEQvL2c7
CisgICAgcmV0dXJuIGludCgkcmVzdWx0IHx8IDApOworfQorCitzdWIgZmV0Y2hCdWdEZXNjcmlw
dGlvbkZyb21CdWdYTUxEYXRhIHsKKyAgICBteSAoJGJ1Z1VSTCwgJGJ1Z051bWJlciwgJGJ1Z1hN
TERhdGEpID0gQF87CisKKyAgICBpZiAoJGJ1Z1hNTERhdGEgIX4gLzxzaG9ydF9kZXNjPiguKik8
XC9zaG9ydF9kZXNjPi8pIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICIgIEJ1ZyAkYnVnTnVtYmVy
IGhhcyBubyBidWcgZGVzY3JpcHRpb24uIE1heWJlIHlvdSBzZXQgd3JvbmcgYnVnIElEP1xuIjsK
KyAgICAgICAgcHJpbnQgU1RERVJSICIgIFRoZSBidWcgVVJMOiAkYnVnVVJMXG4iOworICAgICAg
ICBleGl0IDE7CisgICAgfQorCisgICAgbXkgJGJ1Z0Rlc2NyaXB0aW9uID0gZGVjb2RlRW50aXRp
ZXMoJDEpOworICAgIHByaW50IFNUREVSUiAiICBEZXNjcmlwdGlvbiBmcm9tIGJ1ZyAkYnVnTnVt
YmVyOlxuICAgIFwiJGJ1Z0Rlc2NyaXB0aW9uXCIuXG4iOworICAgIHJldHVybiAkYnVnRGVzY3Jp
cHRpb247Cit9CisKK3N1YiBmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEgeworICAgIG15ICgk
YnVnTnVtYmVyLCAkYnVnWE1MRGF0YSkgPSBAXzsKKworICAgIHJldHVybiAiIiBpZiAkYnVnWE1M
RGF0YSAhfiBtfDx0aGV0ZXh0PlxzKigoJmx0Oyk/cmRhcjovLyhwcm9ibGVtLyk/XGQrKCZndDsp
Pyl8OworCisgICAgbXkgJGJ1Z1JhZGFyVVJMID0gZGVjb2RlRW50aXRpZXMoJDEpOworICAgIHBy
aW50IFNUREVSUiAiICBSYWRhciBVUkwgZnJvbSBidWcgJGJ1Z051bWJlcjpcbiAgICBcIiRidWdS
YWRhclVSTFwiLlxuIjsKKyAgICByZXR1cm4gJGJ1Z1JhZGFyVVJMOworfQorCitzdWIgY29tcHV0
ZU1vZGlmaWVkRnVuY3Rpb25zIHsKKyAgICBteSAoJGZpbGUsICRjaGFuZ2VkTGluZVJhbmdlcywg
JGZ1bmN0aW9uUmFuZ2VzKSA9IEBfOworCisgICAgbXkgJXNhd0Z1bmN0aW9uOworCisgICAgIyBG
aW5kIGFsbCB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zLgorICAgIG15IEBmdW5jdGlvbnM7CisgICAg
bXkgQGNoYW5nZV9yYW5nZXMgPSBAeyRjaGFuZ2VkTGluZVJhbmdlc307CisgICAgbXkgQGNoYW5n
ZV9yYW5nZSA9ICgwLCAwKTsKKyAgICBGVU5DVElPTjogZm9yZWFjaCBteSAkZnVuY3Rpb25fcmFu
Z2VfcmVmIChAeyRmdW5jdGlvblJhbmdlc30pIHsKKyAgICAgICAgbXkgQGZ1bmN0aW9uX3Jhbmdl
ID0gQHskZnVuY3Rpb25fcmFuZ2VfcmVmfTsKKworICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGEg
aGFjay4gSWYgdGhlIGZ1bmN0aW9uIG5hbWUgaXMgZW1wdHksIHNraXAgaXQuCisgICAgICAgICMg
VGhlIGNwcCwgcHl0aG9uLCBqYXZhc2NyaXB0LCBwZXJsLCBjc3MgYW5kIGphdmEgcGFyc2Vycwor
ICAgICAgICAjIGFyZSBub3QgcGVyZmVjdGx5IGltcGxlbWVudGVkIGFuZCBzb21ldGltZXMgZnVu
Y3Rpb24gbmFtZXMgY2Fubm90IGJlIHJldHJpZXZlZAorICAgICAgICAjIGNvcnJlY3RseS4gQXMg
eW91IGNhbiBzZWUgaW4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX1hYWFgoKSwgdGhvc2UgcGFy
c2VycworICAgICAgICAjIGFyZSBub3QgaW50ZW5kZWQgdG8gaW1wbGVtZW50IHJlYWwgcGFyc2Vy
cyBidXQgaW50ZW5kZWQgdG8ganVzdCByZXRyaWV2ZSBmdW5jdGlvbiBuYW1lcworICAgICAgICAj
IGZvciBtb3N0IHByYWN0aWNhbCBzeW50YXhlcy4KKyAgICAgICAgbmV4dCB1bmxlc3MgJGZ1bmN0
aW9uX3JhbmdlWzJdOworCisgICAgICAgICMgQWR2YW5jZSB0byBzdWNjZXNzaXZlIGNoYW5nZSBy
YW5nZXMuCisgICAgICAgIGZvciAoOzsgQGNoYW5nZV9yYW5nZSA9IEB7c2hpZnQgQGNoYW5nZV9y
YW5nZXN9KSB7CisgICAgICAgICAgICBsYXN0IEZVTkNUSU9OIHVubGVzcyBAY2hhbmdlX3Jhbmdl
OworCisgICAgICAgICAgICAjIElmIHBhc3QgdGhpcyBmdW5jdGlvbiwgbW92ZSBvbiB0byB0aGUg
bmV4dCBvbmUuCisgICAgICAgICAgICBuZXh0IEZVTkNUSU9OIGlmICRjaGFuZ2VfcmFuZ2VbMF0g
PiAkZnVuY3Rpb25fcmFuZ2VbMV07CisKKyAgICAgICAgICAgICMgSWYgYW4gb3ZlcmxhcCB3aXRo
IHRoaXMgZnVuY3Rpb24gcmFuZ2UsIHJlY29yZCB0aGUgZnVuY3Rpb24gbmFtZS4KKyAgICAgICAg
ICAgIGlmICgkY2hhbmdlX3JhbmdlWzFdID49ICRmdW5jdGlvbl9yYW5nZVswXQorICAgICAgICAg
ICAgICAgIGFuZCAkY2hhbmdlX3JhbmdlWzBdIDw9ICRmdW5jdGlvbl9yYW5nZVsxXSkgeworICAg
ICAgICAgICAgICAgIGlmICghJHNhd0Z1bmN0aW9ueyRmdW5jdGlvbl9yYW5nZVsyXX0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgJHNhd0Z1bmN0aW9ueyRmdW5jdGlvbl9yYW5nZVsyXX0gPSAxOwor
ICAgICAgICAgICAgICAgICAgICBwdXNoIEBmdW5jdGlvbnMsICRmdW5jdGlvbl9yYW5nZVsyXTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV4dCBGVU5DVElPTjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBAZnVuY3Rpb25zOworfQor
CitzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzIHsKKyAgICBteSAoJGZpbGVfaGFuZGxlLCAk
ZmlsZV9uYW1lKSA9IEBfOworCisgICAgIyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2UgbGFu
Z3VhZ2UgYmFzZWQgb24gdGhlIGZpbGUgZXh0ZW5zaW9uLgorCisgICAgcmV0dXJuIGdldF9mdW5j
dGlvbl9saW5lX3Jhbmdlc19mb3JfY3BwKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZp
bGVfbmFtZSA9fiAvXC4oY3xjcHB8bXxtbXxoKSQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25f
bGluZV9yYW5nZXNfZm9yX2phdmEoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9u
YW1lID1+IC9cLmphdmEkLzsKKyAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zv
cl9qYXZhc2NyaXB0KCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAv
XC5qcyQvOworICAgIHJldHVybiBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcygkZmls
ZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wuY3NzJC87CisgICAgcmV0
dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybCgkZmlsZV9oYW5kbGUsICRmaWxl
X25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wucFtsbV0kLzsKKyAgICByZXR1cm4gZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRob24oJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAk
ZmlsZV9uYW1lID1+IC9cLnB5JC8gb3IgJGZpbGVfbmFtZSA9fiAvbWFzdGVyXC5jZmckLzsKKyAg
ICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCgkZmlsZV9oYW5kbGUs
ICRmaWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wuc3dpZnQkLzsKKworICAgICMgVHJ5IHRv
IGRldGVybWluZSB0aGUgc291cmNlIGxhbmd1YWdlIGJhc2VkIG9uIHRoZSBzY3JpcHQgaW50ZXJw
cmV0ZXIuCisKKyAgICBteSAkZmlyc3RfbGluZSA9IDwkZmlsZV9oYW5kbGU+OworICAgIHNlZWso
JGZpbGVfaGFuZGxlLCAwLCAwKTsKKworICAgIHJldHVybiAoKSB1bmxlc3MgJGZpcnN0X2xpbmUg
PX4gbXxeIyEoPzovdXNyL2Jpbi9lbnZccyspPyhcUyspfDsKKyAgICBteSAkaW50ZXJwcmV0ZXIg
PSAkMTsKKworICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3BlcmwoJGZp
bGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkaW50ZXJwcmV0ZXIgPX4gL3BlcmwkLzsKKyAgICBy
ZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRob24oJGZpbGVfaGFuZGxlLCAk
ZmlsZV9uYW1lKSBpZiAkaW50ZXJwcmV0ZXIgPX4gL3B5dGhvbiQvOworCisgICAgcmV0dXJuICgp
OworfQorCisjIFJlYWQgYSBmaWxlIGFuZCBnZXQgYWxsIHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUg
dGhpbmdzIHRoYXQgbG9vayBsaWtlIEMgZnVuY3Rpb25zLgorIyBBIGZ1bmN0aW9uIG5hbWUgaXMg
dGhlIGxhc3Qgd29yZCBiZWZvcmUgYW4gb3BlbiBwYXJlbnRoZXNpcyBiZWZvcmUgdGhlIG91dGVy
CisjIGxldmVsIG9wZW4gYnJhY2UuIEEgZnVuY3Rpb24gc3RhcnRzIGF0IHRoZSBmaXJzdCBjaGFy
YWN0ZXIgYWZ0ZXIgdGhlIGxhc3QgY2xvc2UKKyMgYnJhY2Ugb3Igc2VtaWNvbG9uIGJlZm9yZSB0
aGUgZnVuY3Rpb24gbmFtZSBhbmQgZW5kcyBhdCB0aGUgY2xvc2UgYnJhY2UuCisjIENvbW1lbnQg
aGFuZGxpbmcgaXMgc2ltcGxlLW1pbmRlZCBidXQgd2lsbCB3b3JrIGZvciBhbGwgYnV0IHBhdGhv
bG9naWNhbCBjYXNlcy4KKyMKKyMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0
X2xpbmUsIGVuZF9saW5lLCBmdW5jdGlvbl9uYW1lIF0uCisKK3N1YiBnZXRfZnVuY3Rpb25fbGlu
ZV9yYW5nZXNfZm9yX2NwcCB7CisgICAgbXkgKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgPSBA
XzsKKworICAgIG15IEByYW5nZXM7CisKKyAgICBteSAkaW5fY29tbWVudCA9IDA7CisgICAgbXkg
JGluX21hY3JvID0gMDsKKyAgICBteSAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKKyAgICBt
eSAkaW5fcGFyZW50aGVzZXMgPSAwOworICAgIG15ICRxdW90YXRpb25fbWFyazsKKyAgICBteSAk
aW5fYnJhY2VzID0gMDsKKyAgICBteSAkaW5fdG9wbGV2ZWxfYXJyYXlfYnJhY2UgPSAwOworICAg
IG15ICRicmFjZV9zdGFydCA9IDA7CisgICAgbXkgJGJyYWNlX2VuZCA9IDA7CisgICAgbXkgJG5h
bWVzcGFjZV9zdGFydCA9IC0xOworICAgIG15ICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24g
PSAwOworICAgIG15ICRlcXVhbF9vYnNlcnZlZCA9IDA7CisKKyAgICBteSAkd29yZCA9ICIiOwor
ICAgIG15ICRpbnRlcmZhY2VfbmFtZSA9ICIiOworCisgICAgbXkgJHBvdGVudGlhbF9tZXRob2Rf
Y2hhciA9ICIiOworICAgIG15ICRwb3RlbnRpYWxfbWV0aG9kX3NwZWMgPSAiIjsKKworICAgIG15
ICRwb3RlbnRpYWxfc3RhcnQgPSAwOworICAgIG15ICRwb3RlbnRpYWxfbmFtZSA9ICIiOworCisg
ICAgbXkgJHN0YXJ0ID0gMDsKKyAgICBteSAkbmFtZSA9ICIiOworCisgICAgbXkgJG5leHRfd29y
ZF9jb3VsZF9iZV9uYW1lc3BhY2UgPSAwOworICAgIG15ICRwb3RlbnRpYWxfbmFtZXNwYWNlID0g
IiI7CisgICAgbXkgQG5hbWVzcGFjZXM7CisgICAgbXkgQGFsbF9uYW1lc3BhY2VzOworCisgICAg
d2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7CisgICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBxdW90
ZWQgc3RyaW5nLgorICAgICAgICBpZiAoJHF1b3RhdGlvbl9tYXJrKSB7CisgICAgICAgICAgICBp
ZiAoIXMtKFteXFxdfFxcLikqJHF1b3RhdGlvbl9tYXJrLS0pIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIW0tXFwkLSkgeworICAgICAgICAgICAgICAgICAgICB3YXJuICJtaXNtYXRjaGVkIHF1b3Rl
cyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7CisgICAgICAgICAgICAgICAgICAgIHVuZGVm
ICRxdW90YXRpb25fbWFyazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVuZGVmICRxdW90YXRpb25fbWFyazsKKyAg
ICAgICAgfQorCisgICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQu
CisgICAgICAgIGlmICgkaW5fY29tbWVudCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0u
KlwqLy0tOworICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAwOworICAgICAgICB9CisKKyAgICAg
ICAgIyBIYW5kbGUgY29udGludWVkIG1hY3JvLgorICAgICAgICBpZiAoJGluX21hY3JvKSB7Cisg
ICAgICAgICAgICAkaW5fbWFjcm8gPSAwIHVubGVzcyAvXFwkLzsKKyAgICAgICAgICAgIG5leHQ7
CisgICAgICAgIH0KKworICAgICAgICAjIEhhbmRsZSBzdGFydCBvZiBtYWNybyAob3IgYW55IHBy
ZXByb2Nlc3NvciBkaXJlY3RpdmUpLgorICAgICAgICBpZiAoL15ccypcIy8pIHsKKyAgICAgICAg
ICAgICRpbl9tYWNybyA9IDEgaWYgL14oW15cXF18XFwuKSpcXCQvOworICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgfQorCisgICAgICAgICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4
dC4KKyAgICAgICAgd2hpbGUgKG0tKC9cKnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAg
ZW1hY3MgcGVybCBtb2RlIGhhcHB5CisgICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKKyAgICAg
ICAgICAgIGlmICgkbWF0Y2ggZXEgIi8qIikgeworICAgICAgICAgICAgICAgIGlmICghcy0vXCou
Kj9cKi8tLSkgeworICAgICAgICAgICAgICAgICAgICBzLS9cKi4qLS07CisgICAgICAgICAgICAg
ICAgICAgICRpbl9jb21tZW50ID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikgeworICAgICAgICAgICAgICAgIHMtLy8uKi0tOworICAg
ICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKKyAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNo
KFteXFxdfFxcLikqPyRtYXRjaC0tKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghcy0kbWF0
Y2guKlxcJC0tKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3YXJuICJtaXNtYXRjaGVkIHF1
b3RlcyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzLSRtYXRjaC4qLS07CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAkcXVvdGF0aW9uX21hcmsgPSAkbWF0Y2g7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworCisg
ICAgICAgICMgY29udGludWVkIG1ldGhvZCBkZWNsYXJhdGlvbgorICAgICAgICBpZiAoJGluX21l
dGhvZF9kZWNsYXJhdGlvbikgeworICAgICAgICAgICAgICBteSAkb3JpZ2luYWwgPSAkXzsKKyAg
ICAgICAgICAgICAgbXkgJG1ldGhvZF9jb250ID0gJF87CisKKyAgICAgICAgICAgICAgY2hvbXAg
JG1ldGhvZF9jb250OworICAgICAgICAgICAgICAkbWV0aG9kX2NvbnQgPX4gcy9bO1x7XS4qLy87
CisgICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX3NwZWMgPSAiJHtwb3RlbnRpYWxfbWV0
aG9kX3NwZWN9ICR7bWV0aG9kX2NvbnR9IjsKKworICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5h
bDsKKyAgICAgICAgICAgICAgaWYgKC87LykgeworICAgICAgICAgICAgICAgICAgJHBvdGVudGlh
bF9zdGFydCA9IDA7CisgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9zcGVjID0g
IiI7CisgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9jaGFyID0gIiI7CisgICAg
ICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKKyAgICAgICAgICAgICAg
ICAgIHMvXlteO1x7XSovLzsKKyAgICAgICAgICAgICAgfSBlbHNpZiAoL3svKSB7CisgICAgICAg
ICAgICAgICAgICBteSAkc2VsZWN0b3IgPSBtZXRob2RfZGVjbF90b19zZWxlY3RvciAoJHBvdGVu
dGlhbF9tZXRob2Rfc3BlYyk7CisgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAi
JHtwb3RlbnRpYWxfbWV0aG9kX2NoYXJ9XFske2ludGVyZmFjZV9uYW1lfSAke3NlbGVjdG9yfVxd
IjsKKworICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICIiOworICAg
ICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2RfY2hhciA9ICIiOworICAgICAgICAgICAg
ICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7CisKKyAgICAgICAgICAgICAgICAgICRf
ID0gJG9yaWdpbmFsOworICAgICAgICAgICAgICAgICAgcy9eW147e10qLy87CisgICAgICAgICAg
ICAgIH0gZWxzaWYgKC9cQGVuZC8pIHsKKyAgICAgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVj
bGFyYXRpb24gPSAwOworICAgICAgICAgICAgICAgICAgJGludGVyZmFjZV9uYW1lID0gIiI7Cisg
ICAgICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKKyAgICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisK
KyAgICAgICAgIyBzdGFydCBvZiBtZXRob2QgZGVjbGFyYXRpb24KKyAgICAgICAgaWYgKChteSAk
bWV0aG9kX2NoYXIsIG15ICRtZXRob2Rfc3BlYykgPSBtJl4oWy0rXSkoW14wLTk7XVteO10qKTs/
JCYpIHsKKyAgICAgICAgICAgIG15ICRvcmlnaW5hbCA9ICRfOworCisgICAgICAgICAgICBpZiAo
JGludGVyZmFjZV9uYW1lKSB7CisgICAgICAgICAgICAgICAgY2hvbXAgJG1ldGhvZF9zcGVjOwor
ICAgICAgICAgICAgICAgICRtZXRob2Rfc3BlYyA9fiBzL1x7LiovLzsKKworICAgICAgICAgICAg
ICAgICRwb3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAkbWV0aG9kX2NoYXI7CisgICAgICAgICAgICAg
ICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICRtZXRob2Rfc3BlYzsKKyAgICAgICAgICAgICAg
ICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47CisgICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdhcm4g
ImRlY2xhcmluZyBhIG1ldGhvZCBidXQgZG9uJ3QgaGF2ZSBpbnRlcmZhY2Ugb24gbGluZSAkLiBp
biAkZmlsZV9uYW1lXG4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJF8gPSAkb3JpZ2lu
YWw7CisgICAgICAgICAgICBpZiAoL1x7LykgeworICAgICAgICAgICAgICBteSAkc2VsZWN0b3Ig
PSBtZXRob2RfZGVjbF90b19zZWxlY3RvciAoJHBvdGVudGlhbF9tZXRob2Rfc3BlYyk7CisgICAg
ICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIke3BvdGVudGlhbF9tZXRob2RfY2hhcn1cWyR7
aW50ZXJmYWNlX25hbWV9ICR7c2VsZWN0b3J9XF0iOworCisgICAgICAgICAgICAgICRwb3RlbnRp
YWxfbWV0aG9kX3NwZWMgPSAiIjsKKyAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2RfY2hh
ciA9ICIiOworICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKKyAgICAg
ICAgICAgICAgJF8gPSAkb3JpZ2luYWw7CisgICAgICAgICAgICAgIHMvXltee10qLy87CisgICAg
ICAgICAgICB9IGVsc2lmICgvXEBlbmQvKSB7CisgICAgICAgICAgICAgICRpbl9tZXRob2RfZGVj
bGFyYXRpb24gPSAwOworICAgICAgICAgICAgICAkaW50ZXJmYWNlX25hbWUgPSAiIjsKKyAgICAg
ICAgICAgICAgJF8gPSAkb3JpZ2luYWw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICBuZXh0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKworICAgICAgICAjIEZpbmQg
ZnVuY3Rpb24sIGludGVyZmFjZSBhbmQgbWV0aG9kIG5hbWVzLgorICAgICAgICB3aGlsZSAobSYo
KD86W1s6d29yZDpdXSs6Oikqb3BlcmF0b3IoPzpbIFx0XSpcKFwpfFteKCldKil8W1s6d29yZDpd
PD46fl0rfFsoKXt9Ojs9XSl8XEAoPzppbXBsZW1lbnRhdGlvbnxpbnRlcmZhY2V8cHJvdG9jb2wp
XHMrKFx3KylbXntdKiZnKSB7CisgICAgICAgICAgICAjIFNraXAgYW4gYXJyYXkgZGVmaW5pdGlv
biBhdCB0aGUgdG9wIGxldmVsLgorICAgICAgICAgICAgIyBlLmcuIHN0YXRpYyBpbnQgYXJyW10g
PSB7IDEsIDIsIDMgfTsKKyAgICAgICAgICAgIGlmICgkMSkgeworICAgICAgICAgICAgICAgIGlm
ICgkMSBlcSAiPSIgYW5kICEkaW5fcGFyZW50aGVzZXMgYW5kICEkaW5fYnJhY2VzKSB7CisgICAg
ICAgICAgICAgICAgICAgICRlcXVhbF9vYnNlcnZlZCA9IDE7CisgICAgICAgICAgICAgICAgfSBl
bHNpZiAoJDEgZXEgInsiIGFuZCAkZXF1YWxfb2JzZXJ2ZWQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgIyBUaGlzICd7JyBpcyB0aGUgYmVnaW5uaW5nIG9mIGFuIGFycmF5IGRlZmluaXRpb24sIG5v
dCB0aGUgYmVnaW5uaW5nIG9mIGEgbWV0aG9kLgorICAgICAgICAgICAgICAgICAgICAkaW5fdG9w
bGV2ZWxfYXJyYXlfYnJhY2UgPSAxOworICAgICAgICAgICAgICAgICAgICAkaW5fYnJhY2VzKys7
CisgICAgICAgICAgICAgICAgICAgICRlcXVhbF9vYnNlcnZlZCA9IDA7CisgICAgICAgICAgICAg
ICAgICAgIG5leHQ7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJDEgIX4gL1sgXHRdLykgewor
ICAgICAgICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQgPSAwOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBpbnRlcmZhY2UgbmFtZQorICAgICAg
ICAgICAgaWYgKCQyKSB7CisgICAgICAgICAgICAgICAgJGludGVyZmFjZV9uYW1lID0gJDI7Cisg
ICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBPcGVu
IHBhcmVudGhlc2lzLgorICAgICAgICAgICAgaWYgKCQxIGVxICIoIikgeworICAgICAgICAgICAg
ICAgICRwb3RlbnRpYWxfbmFtZSA9ICR3b3JkIHVubGVzcyAkaW5fcGFyZW50aGVzZXMgfHwgJHNr
aXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiB8fCBncmVwIHsgJHdvcmQgZXEgJF8gfSAoIkNGX0VO
VU0iLCAiQ0ZfT1BUSU9OUyIsICJOU19FTlVNIiwgIk5TX09QVElPTlMiKTsKKyAgICAgICAgICAg
ICAgICAkaW5fcGFyZW50aGVzZXMrKzsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lzLgorICAgICAgICAgICAgaWYg
KCQxIGVxICIpIikgeworICAgICAgICAgICAgICAgICRpbl9wYXJlbnRoZXNlcy0tOworICAgICAg
ICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgkMSBlcSAi
Y29uc3QiIGFuZCAhJGluX3BhcmVudGhlc2VzKSB7CisgICAgICAgICAgICAgICAgJHBvdGVudGlh
bF9uYW1lIC49ICIgY29uc3QiOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICgkMSBlcSAidm9sYXRpbGUiIGFuZCAhJGluX3BhcmVudGhlc2Vz
KSB7CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lIC49ICIgdm9sYXRpbGUiOworICAg
ICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQysrIGF1
dG8gZnVuY3Rpb24oKSAtPiB0eXBlCisgICAgICAgICAgICBpZiAoJDEgZXEgIj4iKSB7CisgICAg
ICAgICAgICAgICAgJHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9IDEgdW5sZXNzICgkaW5f
cGFyZW50aGVzZXMgfHwgJGluX2JyYWNlcyk7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgIyBDKysgY29uc3RydWN0b3IgaW5pdGlhbGl6ZXJzCisg
ICAgICAgICAgICBpZiAoJDEgZXEgIjoiKSB7CisgICAgICAgICAgICAgICAgJHNraXBfdGlsX2Jy
YWNlX29yX3NlbWljb2xvbiA9IDEgdW5sZXNzICgkaW5fcGFyZW50aGVzZXMgfHwgJGluX2JyYWNl
cyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgT3BlbiBicmFjZS4KKyAgICAgICAg
ICAgIGlmICgkMSBlcSAieyIpIHsKKyAgICAgICAgICAgICAgICAkc2tpcF90aWxfYnJhY2Vfb3Jf
c2VtaWNvbG9uID0gMDsKKworICAgICAgICAgICAgICAgIGlmICghJGluX2JyYWNlcykgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoJG5hbWVzcGFjZV9zdGFydCA+PSAwIGFuZCAkbmFtZXNwYWNl
X3N0YXJ0IDwgJHBvdGVudGlhbF9zdGFydCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aCBAcmFuZ2VzLCBbICRuYW1lc3BhY2Vfc3RhcnQgLiAiIiwgJHBvdGVudGlhbF9zdGFydCAtIDEs
ICRuYW1lIF07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBp
ZiAoJHBvdGVudGlhbF9uYW1lc3BhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2gg
QG5hbWVzcGFjZXMsICRwb3RlbnRpYWxfbmFtZXNwYWNlOworICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaCBAYWxsX25hbWVzcGFjZXMsICRwb3RlbnRpYWxfbmFtZXNwYWNlOworICAgICAgICAg
ICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lc3BhY2UgPSAiIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICRuYW1lID0gJG5hbWVzcGFjZXNbLTFdOworICAgICAgICAgICAgICAgICAgICAg
ICAgJG5hbWVzcGFjZV9zdGFydCA9ICQuICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
eHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAjIFByb21v
dGUgcG90ZW50aWFsIG5hbWUgdG8gcmVhbCBmdW5jdGlvbiBuYW1lIGF0IHRoZQorICAgICAgICAg
ICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBvdXRlciBsZXZlbCBzZXQgb2YgYnJhY2VzIChmdW5j
dGlvbiBib2R5PykuCisgICAgICAgICAgICAgICAgICAgIGlmICgkcG90ZW50aWFsX3N0YXJ0KSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAkc3RhcnQgPSAkcG90ZW50aWFsX3N0YXJ0OworICAg
ICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkcG90ZW50aWFsX25hbWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoQG5hbWVzcGFjZXMgJiYgJG5hbWUgJiYgKGxlbmd0aCgkbmFtZSkg
PCAyIHx8IHN1YnN0cigkbmFtZSwxLDEpIG5lICJbIikpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkbmFtZSA9IGpvaW4gKCc6OicsIEBuYW1lc3BhY2VzLCAkbmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKKworICAg
ICAgICAgICAgICAgICRicmFjZV9zdGFydCA9ICQuIGlmICghJGluX2JyYWNlcyk7CisgICAgICAg
ICAgICAgICAgJGluX2JyYWNlcysrOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICMgQ2xvc2UgYnJhY2UuCisgICAgICAgICAgICBpZiAoJDEgZXEg
In0iKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkaW5fYnJhY2VzICYmIEBuYW1lc3BhY2VzKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICgkbmFtZXNwYWNlX3N0YXJ0ID49IDAgYW5kICRuYW1l
c3BhY2Vfc3RhcnQgPCAkLikgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2Vz
LCBbICRuYW1lc3BhY2Vfc3RhcnQgLiAiIiwgJC4gLSAxLCAkbmFtZSBdOworICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcG9wIEBuYW1lc3BhY2VzOworICAgICAg
ICAgICAgICAgICAgICBpZiAoQG5hbWVzcGFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICRuYW1lID0gJG5hbWVzcGFjZXNbLTFdOworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWVz
cGFjZV9zdGFydCA9ICQuICsgMTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICRuYW1lID0gIiI7CisgICAgICAgICAgICAgICAgICAgICAgICAk
bmFtZXNwYWNlX3N0YXJ0ID0gLTE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAkaW5f
YnJhY2VzLS07CisgICAgICAgICAgICAgICAgJGJyYWNlX2VuZCA9ICQuIGlmICghJGluX2JyYWNl
cyk7CisKKyAgICAgICAgICAgICAgICAjIEVuZCBvZiBhbiBvdXRlciBsZXZlbCBzZXQgb2YgYnJh
Y2VzLgorICAgICAgICAgICAgICAgICMgVGhpcyBjb3VsZCBiZSBhIGZ1bmN0aW9uIGJvZHkuCisg
ICAgICAgICAgICAgICAgaWYgKCEkaW5fYnJhY2VzIGFuZCAkbmFtZSkgeworICAgICAgICAgICAg
ICAgICAgICAjIFRoaXMgaXMgdGhlIGVuZCBvZiBhbiBhcnJheSBkZWZpbml0aW9uIGF0IHRoZSB0
b3AgbGV2ZWwsIG5vdCB0aGUgZW5kIG9mIGEgbWV0aG9kLgorICAgICAgICAgICAgICAgICAgICBp
ZiAoJGluX3RvcGxldmVsX2FycmF5X2JyYWNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAk
aW5fdG9wbGV2ZWxfYXJyYXlfYnJhY2UgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHB1c2ggQHJh
bmdlcywgWyAkc3RhcnQsICQuLCAkbmFtZSBdOworICAgICAgICAgICAgICAgICAgICBpZiAoQG5h
bWVzcGFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJG5hbWVzcGFjZXNb
LTFdOworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWVzcGFjZV9zdGFydCA9ICQuICsgMTsK
KyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRu
YW1lID0gIiI7CisgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0gLTE7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25h
bWUgPSAiIjsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAjIFNlbWljb2xvbi4KKyAgICAgICAgICAgIGlmICgkMSBlcSAiOyIpIHsKKyAgICAgICAg
ICAgICAgICAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uID0gMDsKKyAgICAgICAgICAgICAg
ICAkcG90ZW50aWFsX3N0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUg
PSAiIjsKKyAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKKyAgICAg
ICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIElnbm9yZSAi
Y29uc3QiIG1ldGhvZCBxdWFsaWZpZXIuCisgICAgICAgICAgICBpZiAoJDEgZXEgImNvbnN0Iikg
eworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICgkMSBlcSAibmFtZXNwYWNlIiB8fCAkMSBlcSAiY2xhc3MiIHx8ICQxIGVxICJzdHJ1Y3QiKSB7
CisgICAgICAgICAgICAgICAgJG5leHRfd29yZF9jb3VsZF9iZV9uYW1lc3BhY2UgPSAxOworICAg
ICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgV29yZC4K
KyAgICAgICAgICAgICR3b3JkID0gJDE7CisgICAgICAgICAgICBpZiAoISRza2lwX3RpbF9icmFj
ZV9vcl9zZW1pY29sb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoJG5leHRfd29yZF9jb3VsZF9i
ZV9uYW1lc3BhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lc3BhY2Ug
PSAkd29yZDsKKyAgICAgICAgICAgICAgICAgICAgJG5leHRfd29yZF9jb3VsZF9iZV9uYW1lc3Bh
Y2UgPSAwOworICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRwb3RlbnRpYWxfbmFtZXNwYWNlKSB7
CisgICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZXNwYWNlID0gIiI7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7CisgICAgICAgICAgICAgICAg
ICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBpZiAoISRwb3RlbnRpYWxfc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVu
dGlhbF9zdGFydCA9ICQuOworICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAi
IjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICB3YXJuICJtaXNzaW5nIGNsb3NlIGJyYWNlcyBpbiAkZmlsZV9uYW1lIChwcm9iYWJsZSBz
dGFydCBhdCAkYnJhY2Vfc3RhcnQpXG4iIGlmICgkaW5fYnJhY2VzID4gMCk7CisgICAgd2FybiAi
dG9vIG1hbnkgY2xvc2UgYnJhY2VzIGluICRmaWxlX25hbWUgKHByb2JhYmxlIHN0YXJ0IGF0ICRi
cmFjZV9lbmQpXG4iIGlmICgkaW5fYnJhY2VzIDwgMCk7CisKKyAgICB3YXJuICJtaXNtYXRjaGVk
IHBhcmVudGhlc2VzIGluICRmaWxlX25hbWVcbiIgaWYgJGluX3BhcmVudGhlc2VzOworCisgICAg
cmV0dXJuIGRlbGV0ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2VzX2Zvcl9jcHAoXEByYW5nZXMsIFxA
YWxsX25hbWVzcGFjZXMpOworfQorCisKKyMgVGFrZSBpbiByZWZlcmVuY2VzIHRvIGFuIGFycmF5
IG9mIGxpbmUgcmFuZ2VzIGZvciBDIGZ1bmN0aW9ucyBpbiBhIGdpdmVuIGZpbGUKKyMgYW5kIGFu
IGFycmF5IG9mIG5hbWVzcGFjZXMgZGVjbGFyZWQgaW4gdGhhdCBmaWxlIGFuZCByZXR1cm4gYW4g
dXBkYXRlZAorIyBsaXN0IG9mIGxpbmUgcmFuZ2VzIHdpdGggdGhlIG5hbWVzcGFjZXMgcmVtb3Zl
ZC4KKworc3ViIGRlbGV0ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2VzX2Zvcl9jcHAgeworICAgIG15
ICgkcmFuZ2VzX3JlZiwgJG5hbWVzcGFjZXNfcmVmKSA9IEBfOworICAgIHJldHVybiBncmVwIHsh
aXNfZnVuY3Rpb25faW5fbmFtZXNwYWNlKCRuYW1lc3BhY2VzX3JlZiwgJCRfWzJdKX0gQCRyYW5n
ZXNfcmVmOworfQorCisKK3N1YiBpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UgeworICAgIG15ICgk
bmFtZXNwYWNlc19yZWYsICRmdW5jdGlvbl9uYW1lKSA9IEBfOworICAgIHJldHVybiBncmVwIHsk
XyBlcSAkZnVuY3Rpb25fbmFtZX0gQCRuYW1lc3BhY2VzX3JlZjsKK30KKworCisjIFJlYWQgYSBm
aWxlIGFuZCBnZXQgYWxsIHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQgbG9vayBs
aWtlIEphdmEKKyMgY2xhc3NlcywgaW50ZXJmYWNlcyBhbmQgbWV0aG9kcy4KKyMKKyMgQSBjbGFz
cyBvciBpbnRlcmZhY2UgbmFtZSBpcyB0aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3MK
KyMgYGNsYXNzJyBvciBgaW50ZXJmYWNlJyB3aGVuIGZvbGxvd2VkIGJ5IGFuIG9wZW4gY3VybHkg
YnJhY2UgYW5kIG5vdAorIyBhIHNlbWljb2xvbi4gSXQgY2FuIGFwcGVhciBhdCB0aGUgdG9wIGxl
dmVsLCBvciBpbnNpZGUgYW5vdGhlciBjbGFzcworIyBvciBpbnRlcmZhY2UgYmxvY2ssIGJ1dCBu
b3QgaW5zaWRlIGEgZnVuY3Rpb24gYmxvY2sKKyMKKyMgQSBjbGFzcyBvciBpbnRlcmZhY2Ugc3Rh
cnRzIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGNsb3NlCisjIGJyYWNl
IG9yIGFmdGVyIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBlbmRzIGF0IHRoZSBjbG9zZSBicmFjZS4K
KyMKKyMgQSBmdW5jdGlvbiBuYW1lIGlzIHRoZSBsYXN0IHdvcmQgYmVmb3JlIGFuIG9wZW4gcGFy
ZW50aGVzaXMgYmVmb3JlCisjIGFuIG9wZW4gYnJhY2UgcmF0aGVyIHRoYW4gYSBzZW1pY29sb24u
IEl0IGNhbiBhcHBlYXIgYXQgdG9wIGxldmVsIG9yCisjIGluc2lkZSBhIGNsYXNzIG9yIGludGVy
ZmFjZSBibG9jaywgYnV0IG5vdCBpbnNpZGUgYSBmdW5jdGlvbiBibG9jay4KKyMKKyMgQSBmdW5j
dGlvbiBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgZmlyc3QgY2xvc2UK
KyMgYnJhY2Ugb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhlIGNsb3Nl
IGJyYWNlLgorIworIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwg
d29yayBmb3IgYWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCisjCisjIFJlc3VsdCBpcyBhIGxp
c3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgor
CitzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhIHsKKyAgICBteSAoJGZpbGVf
aGFuZGxlLCAkZmlsZV9uYW1lKSA9IEBfOworCisgICAgbXkgQGN1cnJlbnRfc2NvcGVzOworCisg
ICAgbXkgQHJhbmdlczsKKworICAgIG15ICRpbl9jb21tZW50ID0gMDsKKyAgICBteSAkaW5fbWFj
cm8gPSAwOworICAgIG15ICRpbl9wYXJlbnRoZXNlcyA9IDA7CisgICAgbXkgJGluX2JyYWNlcyA9
IDA7CisgICAgbXkgJGluX25vbl9ibG9ja19icmFjZXMgPSAwOworICAgIG15ICRjbGFzc19vcl9p
bnRlcmZhY2VfanVzdF9zZWVuID0gMDsKKyAgICBteSAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAw
OworCisgICAgbXkgJHdvcmQgPSAiIjsKKworICAgIG15ICRwb3RlbnRpYWxfc3RhcnQgPSAwOwor
ICAgIG15ICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgIG15ICRwb3RlbnRpYWxfbmFtZV9pc19j
bGFzc19vcl9pbnRlcmZhY2UgPSAwOworCisgICAgbXkgJHN0YXJ0ID0gMDsKKyAgICBteSAkbmFt
ZSA9ICIiOworICAgIG15ICRjdXJyZW50X25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gMDsK
KworICAgIHdoaWxlICg8JGZpbGVfaGFuZGxlPikgeworICAgICAgICAjIEhhbmRsZSBjb250aW51
ZWQgbXVsdGktbGluZSBjb21tZW50LgorICAgICAgICBpZiAoJGluX2NvbW1lbnQpIHsKKyAgICAg
ICAgICAgIG5leHQgdW5sZXNzIHMtLipcKi8tLTsKKyAgICAgICAgICAgICRpbl9jb21tZW50ID0g
MDsKKyAgICAgICAgfQorCisgICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBtYWNyby4KKyAgICAg
ICAgaWYgKCRpbl9tYWNybykgeworICAgICAgICAgICAgJGluX21hY3JvID0gMCB1bmxlc3MgL1xc
JC87CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgc3Rh
cnQgb2YgbWFjcm8gKG9yIGFueSBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlKS4KKyAgICAgICAgaWYg
KC9eXHMqXCMvKSB7CisgICAgICAgICAgICAkaW5fbWFjcm8gPSAxIGlmIC9eKFteXFxdfFxcLikq
XFwkLzsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKworICAgICAgICAjIEhhbmRsZSBj
b21tZW50cyBhbmQgcXVvdGVkIHRleHQuCisgICAgICAgIHdoaWxlIChtLSgvXCp8Ly98XCd8XCIp
LSkgeyAjIFwnIGFuZCBcIiBrZWVwIGVtYWNzIHBlcmwgbW9kZSBoYXBweQorICAgICAgICAgICAg
bXkgJG1hdGNoID0gJDE7CisgICAgICAgICAgICBpZiAoJG1hdGNoIGVxICIvKiIpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIXMtL1wqLio/XCovLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgcy0v
XCouKi0tOworICAgICAgICAgICAgICAgICAgICAkaW5fY29tbWVudCA9IDE7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNpZiAoJG1hdGNoIGVxICIvLyIpIHsKKyAgICAgICAg
ICAgICAgICBzLS8vLiotLTsKKyAgICAgICAgICAgIH0gZWxzZSB7ICMgJyBvciAiCisgICAgICAg
ICAgICAgICAgaWYgKCFzLSRtYXRjaChbXlxcXXxcXC4pKj8kbWF0Y2gtLSkgeworICAgICAgICAg
ICAgICAgICAgICB3YXJuICJtaXNtYXRjaGVkIHF1b3RlcyBhdCBsaW5lICQuIGluICRmaWxlX25h
bWVcbiI7CisgICAgICAgICAgICAgICAgICAgIHMtJG1hdGNoLiotLTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAjIEZpbmQgZnVuY3Rpb24g
bmFtZXMuCisgICAgICAgIHdoaWxlIChtLShcdyt8Wygpe307XSktZykgeworICAgICAgICAgICAg
IyBPcGVuIHBhcmVudGhlc2lzLgorICAgICAgICAgICAgaWYgKCQxIGVxICIoIikgeworICAgICAg
ICAgICAgICAgIGlmICghJGluX3BhcmVudGhlc2VzKSB7CisgICAgICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZSA9ICR3b3JkOworICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25h
bWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgJGluX3BhcmVudGhlc2VzKys7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgIyBDbG9zZSBwYXJlbnRoZXNpcy4KKyAgICAgICAgICAg
IGlmICgkMSBlcSAiKSIpIHsKKyAgICAgICAgICAgICAgICAkaW5fcGFyZW50aGVzZXMtLTsKKyAg
ICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIE9wZW4g
YnJhY2UuCisgICAgICAgICAgICBpZiAoJDEgZXEgInsiKSB7CisgICAgICAgICAgICAgICAgJGlu
X2NsYXNzX2RlY2xhcmF0aW9uID0gMDsKKworICAgICAgICAgICAgICAgICMgUHJvbW90ZSBwb3Rl
bnRpYWwgbmFtZSB0byByZWFsIGZ1bmN0aW9uIG5hbWUgYXQgdGhlCisgICAgICAgICAgICAgICAg
IyBzdGFydCBvZiB0aGUgb3V0ZXIgbGV2ZWwgc2V0IG9mIGJyYWNlcyAoZnVuY3Rpb24vY2xhc3Mv
aW50ZXJmYWNlIGJvZHk/KS4KKyAgICAgICAgICAgICAgICBpZiAoISRpbl9ub25fYmxvY2tfYnJh
Y2VzCisgICAgICAgICAgICAgICAgICAgIGFuZCAoISRpbl9icmFjZXMgb3IgJGN1cnJlbnRfbmFt
ZV9pc19jbGFzc19vcl9pbnRlcmZhY2UpCisgICAgICAgICAgICAgICAgICAgIGFuZCAkcG90ZW50
aWFsX3N0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkbmFtZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJHN0YXJ0LCAoJC4gLSAxKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvaW4gKCcuJywgQGN1cnJlbnRf
c2NvcGVzKSBdOworICAgICAgICAgICAgICAgICAgICB9CisKKworICAgICAgICAgICAgICAgICAg
ICAkY3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9ICRwb3RlbnRpYWxfbmFtZV9p
c19jbGFzc19vcl9pbnRlcmZhY2U7CisKKyAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJHBv
dGVudGlhbF9zdGFydDsKKyAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkcG90ZW50aWFsX25h
bWU7CisKKyAgICAgICAgICAgICAgICAgICAgcHVzaCAoQGN1cnJlbnRfc2NvcGVzLCAkbmFtZSk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgJGluX25vbl9i
bG9ja19icmFjZXMrKzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAkcG90
ZW50aWFsX25hbWUgPSAiIjsKKyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gMDsK
KworICAgICAgICAgICAgICAgICRpbl9icmFjZXMrKzsKKyAgICAgICAgICAgICAgICBuZXh0Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIENsb3NlIGJyYWNlLgorICAgICAgICAgICAg
aWYgKCQxIGVxICJ9IikgeworICAgICAgICAgICAgICAgICRpbl9icmFjZXMtLTsKKworICAgICAg
ICAgICAgICAgICMgRW5kIG9mIGFuIG91dGVyIGxldmVsIHNldCBvZiBicmFjZXMuCisgICAgICAg
ICAgICAgICAgIyBUaGlzIGNvdWxkIGJlIGEgZnVuY3Rpb24gYm9keS4KKyAgICAgICAgICAgICAg
ICBpZiAoISRpbl9ub25fYmxvY2tfYnJhY2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgk
bmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBbICRzdGFydCwg
JC4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbiAoJy4nLCBA
Y3VycmVudF9zY29wZXMpIF07CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcCAoQGN1cnJl
bnRfc2NvcGVzKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBjdXJyZW50X3Njb3Bl
cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjdXJyZW50X25hbWVfaXNfY2xhc3Nf
b3JfaW50ZXJmYWNlID0gMTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFydCA9
ICQuICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICAkY3VycmVudF9z
Y29wZXNbJCNjdXJyZW50X3Njb3Blcy0xXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19v
cl9pbnRlcmZhY2UgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFydCA9IDA7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAgIiI7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAkaW5fbm9uX2Jsb2NrX2JyYWNlcy0tIGlmICRpbl9u
b25fYmxvY2tfYnJhY2VzOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfc3RhcnQgPSAwOworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIi
OworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMg
U2VtaWNvbG9uLgorICAgICAgICAgICAgaWYgKCQxIGVxICI7IikgeworICAgICAgICAgICAgICAg
ICRwb3RlbnRpYWxfc3RhcnQgPSAwOworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9
ICIiOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmICgkMSBlcSAiY2xhc3MiKSB7CisgICAgICAgICAgICAgICAgJGluX2NsYXNzX2RlY2xhcmF0
aW9uID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgkMSBlcSAiY2xhc3MiIG9y
ICghJGluX2NsYXNzX2RlY2xhcmF0aW9uIGFuZCAkMSBlcSAiaW50ZXJmYWNlIikpIHsKKyAgICAg
ICAgICAgICAgICAkY2xhc3Nfb3JfaW50ZXJmYWNlX2p1c3Rfc2VlbiA9IDE7CisgICAgICAgICAg
ICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBXb3JkLgorICAgICAg
ICAgICAgJHdvcmQgPSAkMTsKKyAgICAgICAgICAgIGlmICghJGluX3BhcmVudGhlc2VzKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCRjbGFzc19vcl9pbnRlcmZhY2VfanVzdF9zZWVuKSB7CisgICAg
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICR3b3JkOworICAgICAgICAgICAgICAg
ICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47CisgICAgICAgICAgICAgICAgICAgICRjbGFzc19v
cl9pbnRlcmZhY2VfanVzdF9zZWVuID0gMDsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlh
bF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDE7CisgICAgICAgICAgICAgICAgICAgIG5l
eHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEk
cG90ZW50aWFsX3N0YXJ0KSB7CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9ICQu
OworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOworICAgICAgICB9
CisgICAgfQorCisgICAgd2FybiAibWlzbWF0Y2hlZCBicmFjZXMgaW4gJGZpbGVfbmFtZVxuIiBp
ZiAkaW5fYnJhY2VzOworICAgIHdhcm4gIm1pc21hdGNoZWQgcGFyZW50aGVzZXMgaW4gJGZpbGVf
bmFtZVxuIiBpZiAkaW5fcGFyZW50aGVzZXM7CisKKyAgICByZXR1cm4gQHJhbmdlczsKK30KKwor
CisKKyMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGlu
Z3MgdGhhdCBsb29rIGxpa2UKKyMgSmF2YVNjcmlwdCBmdW5jdGlvbnMgb3IgbWV0aG9kcy4KKyMK
KyMgQSBmdW5jdGlvbiBuYW1lIGlzIHRoZSB3b3JkIHRoYXQgaW1tZWRpYXRlbHkgZm9sbG93cyBg
ZnVuY3Rpb24nIHdoZW4KKyMgZm9sbG93ZWQgYnkgYW4gb3BlbiBjdXJseSBicmFjZS4gSXQgY2Fu
IGFwcGVhciBhdCB0aGUgdG9wIGxldmVsLAorIyBvciBpbnNpZGUgb3RoZXIgZnVuY3Rpb25zLiBG
b3IgZXhhbXBsZToKKyMKKyMgICAgZnVuY3Rpb24gbmFtZSgpIHsgLy8gKG5hbWUpCisjICAgICAg
ICBmdW5jdGlvbiBpbm5lcigpIHsgfSAvLyAobmFtZS5pbm5lcikKKyMgICAgfQorIworIyBBbiBh
bm9ueW1vdXMgZnVuY3Rpb24gbmFtZSBpcyB0aGUgaWRlbnRpZmllciBvbiB0aGUgbGVmdCBoYW5k
IHNpZGUgb2YKKyMgYW4gYXNzaWdubWVudCB3aXRoIHRoZSBlcXVhbHMgb3BlcmF0b3Igb3Igb2Jq
ZWN0IG5vdGF0aW9uIHRoYXQgaGFzIGEKKyMgdmFsdWUgc3RhcnRpbmcgd2l0aCBgZnVuY3Rpb24n
IGZvbGxvd2VkIGFuIG9wZW4gY3VybHkgYnJhY2UuCisjIEZvciBleGFtcGxlOgorIworIyAgICBu
YW1lc3BhY2UgPSB7CisjICAgICAgICBuYW1lOiBmdW5jdGlvbigpIHt9IC8vIChuYW1lc3BhY2Uu
bmFtZSkKKyMgICAgfQorIyAgICBuYW1lc3BhY2UuRm9vID0gZnVuY3Rpb24oKSB7fSAvLyAobmFt
ZXNwYWNlLkZvbykKKyMKKyMgQSBnZXR0ZXIgb3Igc2V0dGVyIG5hbWUgaXMgdGhlIHdvcmQgdGhh
dCBpbW1lZGlhdGVseSBmb2xsb3dzIGBnZXQnIG9yCisjIGBzZXQnIHdoZW4gZm9sbG93ZWQgYnkg
cGFyYW1zIGFuZCBhbiBvcGVuIGN1cmx5IGJyYWNlLiBGb3IgZXhhbXBsZToKKyMKKyMgICAgbmFt
ZXNwYWNlID0geworIyAgICAgIGdldCBmb28oKSB7fSAvLyAobmFtZXNwYWNlLmdldCBmb28pCisj
ICAgIH0KKyMKKyMgQSBtZXRob2QgbmFtZSBpcyB0aGUgd29yZCBpbW1lZGlhdGVseSBiZWZvcmUg
cGFyZW50aGVzaXMsIHdpdGggYW4gb3BlbgorIyBjdXJseSBicmFjZSBpbW1lZGlhdGVseSBmb2xs
b3dpbmcgY2xvc2luZyBwYXJlbnRoZXNpcy4gRm9yIGEgY2xhc3MgZXhwcmVzc2lvbgorIyB3ZSB0
YWtlIHRoZSBhc3NpZ25tZW50IGlkZW50aWZpZXIgaW5zdGVhZCBvZiB0aGUgY2xhc3MgbmFtZSBm
b3IgbmFtZXNwYWNpbmcuCisjCisjICAgIG5hbWVzcGFjZS5Gb28gPSBjbGFzcyBEb2VzTm90TWF0
dGVyIGV4dGVuZHMgQmFyIHsKKyMgICAgICAgIGNvbnN0cnVjdG9yKCkge30gLy8gKG5hbWVzcGFj
ZS5Gb28pCisjICAgICAgICBzdGF0aWMgc3RhdGljTWV0aG9kKCkge30gLy8gKG5hbWVzcGFjZS5G
b28uc3RhdGljTWV0aG9kKQorIyAgICAgICAgaW5zdGFuY2VNZXRob2QoKSB7fSAvLyAobmFtZXNw
YWNlLkZvby5wcm90b3R5cGUuaW5zdGFuY2VNZXRob2QpCisjICAgICAgICBnZXQgZ2V0dGVyKCkg
e30gLy8gKG5hbWVzcGFjZS5Gb28ucHJvdG90eXBlLmdldCBnZXR0ZXIpCisjICAgIH0KKyMgICAg
Y2xhc3MgQ2xhc3NOYW1lIHsKKyMgICAgICAgIGNvbnN0cnVjdG9yKCkge30gLy8gKENsYXNzTmFt
ZSkKKyMgICAgICAgIG1ldGhvZCgpIHt9IC8vIChDbGFzc05hbWUucHJvdG90eXBlLm1ldGhvZCkK
KyMgICAgfQorIworIyBNZXRob2RzIG1heSBleGlzdCBpbiBvYmplY3QgbGl0ZXJhbHMsIG91dHNp
ZGUgb2YgY2xhc3Nlcy4KKyMKKyMgICBGb28ucHJvdG90eXBlID0geworIyAgICAgICBtZXRob2Qo
KSB7fSwgLy8gKEZvby5wcm90b3R5cGUubWV0aG9kKQorIyAgICAgICBvdGhlck1ldGhvZCgpIHt9
IC8vIChGb28ucHJvdG90eXBlLm90aGVyTWV0aG9kKQorIyAgIH0KKyMKKyMgQ29tbWVudCBoYW5k
bGluZyBpcyBzaW1wbGUtbWluZGVkIGJ1dCB3aWxsIHdvcmsgZm9yIGFsbCBidXQgcGF0aG9sb2dp
Y2FsIGNhc2VzLgorIworIyBSZXN1bHQgaXMgYSBsaXN0IG9mIHRyaXBsZXM6IFsgc3RhcnRfbGlu
ZSwgZW5kX2xpbmUsIGZ1bmN0aW9uX25hbWUgXS4KKworc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jh
bmdlc19mb3JfamF2YXNjcmlwdCB7CisgICAgbXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0g
QF87CisKKyAgICBteSBAY3VycmVudFNjb3BlczsKKyAgICBteSBAY3VycmVudElkZW50aWZpZXJz
OworICAgIG15IEBjdXJyZW50UGFyc2luZ01vZGUgPSAoImdsb2JhbCIpOworICAgIG15IEBjdXJy
ZW50RnVuY3Rpb25OYW1lczsKKyAgICBteSBAY3VycmVudEZ1bmN0aW9uRGVwdGhzOworICAgIG15
IEBjdXJyZW50RnVuY3Rpb25TdGFydExpbmVzOworCisgICAgbXkgQHJhbmdlczsKKworICAgIG15
ICRpbkNvbW1lbnQgPSAwOworICAgIG15ICRpblF1b3RlZFRleHQgPSAiIjsKKyAgICBteSAkaW5F
eHRlbmRzID0gMDsKKyAgICBteSAkaW5NZXRob2QgPSAwOworICAgIG15ICRpbkFub255bW91c0Z1
bmN0aW9uUGFyYW1ldGVycyA9IDA7CisgICAgbXkgJHBhcmVudGhlc2VzRGVwdGggPSAwOworICAg
IG15ICRnbG9iYWxQYXJlbnRoZXNlc0RlcHRoID0gMDsKKyAgICBteSAkYnJhY2VzRGVwdGggPSAw
OworCisgICAgbXkgJGNsYXNzSnVzdFNlZW4gPSAwOworICAgIG15ICRwYXJlbnRoZXNpc0p1c3RT
ZWVuID0gMDsKKyAgICBteSAkZnVuY3Rpb25KdXN0U2VlbiA9IDA7CisgICAgbXkgJGdldHRlckp1
c3RTZWVuID0gMDsKKyAgICBteSAkc2V0dGVySnVzdFNlZW4gPSAwOworICAgIG15ICRhc3luY0p1
c3RTZWVuID0gMDsKKyAgICBteSAkYXNzaWdubWVudEp1c3RTZWVuID0gMDsKKyAgICBteSAkc3Rh
dGljT3JDb250cnVjdG9yU2VlbiA9IDA7CisKKyAgICBteSAkY3VycmVudFRva2VuID0gIiI7Cisg
ICAgbXkgJGxhc3RUb2tlbiA9ICIiOworICAgIG15ICRwb3NzaWJsZU1ldGhvZE5hbWUgPSAiIjsK
KyAgICBteSAkd29yZCA9ICIiOworCisgICAgd2hpbGUgKDwkZmlsZUhhbmRsZT4pIHsKKyAgICAg
ICAgIyBIYW5kbGUgY29udGludWVkIG11bHRpLWxpbmUgY29tbWVudC4KKyAgICAgICAgaWYgKCRp
bkNvbW1lbnQpIHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzIHMtLipcKi8tLTsKKyAgICAgICAg
ICAgICRpbkNvbW1lbnQgPSAwOworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29udGlu
dWVkIHF1b3RlZCB0ZXh0LgorICAgICAgICBpZiAoJGluUXVvdGVkVGV4dCBuZSAiIikgeworICAg
ICAgICAgICAgbmV4dCBpZiAvXFwkLzsKKyAgICAgICAgICAgIHMtKFteXFxdfFxcLikqPyRpblF1
b3RlZFRleHQtLTsKKyAgICAgICAgICAgICRpblF1b3RlZFRleHQgPSAiIjsKKyAgICAgICAgfQor
CisgICAgICAgICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4dC4KKyAgICAgICAgd2hp
bGUgKG0tKC9cKnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2Rl
IGhhcHB5CisgICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKKyAgICAgICAgICAgIGlmICgkbWF0
Y2ggZXEgJy8qJykgeworICAgICAgICAgICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgeworICAg
ICAgICAgICAgICAgICAgICBzLS9cKi4qLS07CisgICAgICAgICAgICAgICAgICAgICRpbkNvbW1l
bnQgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzaWYgKCRtYXRjaCBl
cSAnLy8nKSB7CisgICAgICAgICAgICAgICAgcy0vLy4qLS07CisgICAgICAgICAgICB9IGVsc2Ug
eyAjICcgb3IgIgorICAgICAgICAgICAgICAgIGlmICghcy0kbWF0Y2goW15cXF18XFwuKSo/JG1h
dGNoLXN0cmluZ19hcHBlYXJlZF9oZXJlLSkgeworICAgICAgICAgICAgICAgICAgICAkaW5RdW90
ZWRUZXh0ID0gJG1hdGNoIGlmIC9cXCQvOworICAgICAgICAgICAgICAgICAgICB3YXJuICJtaXNt
YXRjaGVkIHF1b3RlcyBhdCBsaW5lICQuIGluICRmaWxlTmFtZVxuIiBpZiAkaW5RdW90ZWRUZXh0
IGVxICIiOworICAgICAgICAgICAgICAgICAgICBzLSRtYXRjaC4qLS07CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgIyBGaW5kIGZ1bmN0aW9u
IG5hbWVzLgorICAgICAgICB3aGlsZSAobS0oXHcrfFsoKXt9PTo7LC5dKS1nKSB7CisgICAgICAg
ICAgICAjIFNraXAgZXZlcnl0aGluZyB1bnRpbCAieyIgYWZ0ZXIgZXh0ZW5kcy4KKyAgICAgICAg
ICAgIGlmICgkaW5FeHRlbmRzKSB7CisgICAgICAgICAgICAgICAgbmV4dCBpZiAkMSBuZSAneyc7
CisgICAgICAgICAgICAgICAgJGluRXh0ZW5kcyA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICRsYXN0VG9rZW4gPSAkY3VycmVudFRva2VuOworICAgICAgICAgICAgJGN1cnJlbnRU
b2tlbiA9ICQxOworCisgICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCisgICAgICAgICAg
ICBpZiAoJDEgZXEgJygnKSB7CisgICAgICAgICAgICAgICAgJHBhcmVudGhlc2VzRGVwdGgrKzsK
KyAgICAgICAgICAgICAgICAkZ2xvYmFsUGFyZW50aGVzZXNEZXB0aCsrIGlmICRjdXJyZW50UGFy
c2luZ01vZGVbJCNjdXJyZW50UGFyc2luZ01vZGVdIGVxICJnbG9iYWwiOworICAgICAgICAgICAg
ICAgICRwb3NzaWJsZU1ldGhvZE5hbWUgPSBqb2luKCcuJywgQGN1cnJlbnRJZGVudGlmaWVycyk7
CisgICAgICAgICAgICAgICAgJGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzID0gMSBpZiAk
ZnVuY3Rpb25KdXN0U2VlbjsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25KdXN0U2VlbiA9IDA7
CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBD
bG9zZSBwYXJlbnRoZXNpcy4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnKScpIHsKKyAgICAgICAg
ICAgICAgICAkcGFyZW50aGVzZXNEZXB0aC0tOworICAgICAgICAgICAgICAgICRnbG9iYWxQYXJl
bnRoZXNlc0RlcHRoLS0gaWYgJGN1cnJlbnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJzaW5nTW9k
ZV0gZXEgImdsb2JhbCI7CisgICAgICAgICAgICAgICAgQGN1cnJlbnRJZGVudGlmaWVycyA9ICgp
IGlmICRpbkFub255bW91c0Z1bmN0aW9uUGFyYW1ldGVyczsKKyAgICAgICAgICAgICAgICAkaW5B
bm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnMgPSAwOworICAgICAgICAgICAgICAgICRwYXJlbnRo
ZXNpc0p1c3RTZWVuID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAjIE9wZW4gYnJhY2UuCisgICAgICAgICAgICBpZiAoJDEgZXEgJ3snKSB7
CisgICAgICAgICAgICAgICAgbXkgJG1ldGhvZE5hbWUgPSAiIjsKKyAgICAgICAgICAgICAgICBt
eSAkbW9kZSA9ICRjdXJyZW50UGFyc2luZ01vZGVbJCNjdXJyZW50UGFyc2luZ01vZGVdOworCisg
ICAgICAgICAgICAgICAgIyBNZXRob2QuCisgICAgICAgICAgICAgICAgaWYgKCgkbW9kZSBlcSAn
Y2xhc3MnIG9yICRtb2RlIGVxICdnbG9iYWwnKSBhbmQgJHBhcmVudGhlc2lzSnVzdFNlZW4gYW5k
ICgkc3RhdGljT3JDb250cnVjdG9yU2VlbiBvciAkcG9zc2libGVNZXRob2ROYW1lKSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAoJG1vZGUgZXEgJ2NsYXNzJykgeworICAgICAgICAgICAgICAg
ICAgICAgICAgJG1ldGhvZE5hbWUgPSBqb2luKCcuJywgJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4g
PyAiIiA6ICJwcm90b3R5cGUiLCAkcG9zc2libGVNZXRob2ROYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2ROYW1lID0gJHBv
c3NpYmxlTWV0aG9kTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgICAgICRtZXRob2ROYW1lID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2
ZSBwZXJpb2RzLgorICAgICAgICAgICAgICAgICAgICAkbWV0aG9kTmFtZSA9fiBzL1wuJC8vOyAj
IFJlbW92ZSB0cmFpbGluZyBwZXJpb2QuCisKKyAgICAgICAgICAgICAgICAgICAgbXkgJGN1cnJl
bnRNZXRob2QgPSBqb2luKCcuJywgQGN1cnJlbnRTY29wZXMsICRtZXRob2ROYW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgJGN1cnJlbnRNZXRob2QgPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVz
IGNvbnNlY3V0aXZlIHBlcmlvZHMuCisgICAgICAgICAgICAgICAgICAgICRjdXJyZW50TWV0aG9k
ID1+IHMvXC4kLy87ICMgUmVtb3ZlIHRyYWlsaW5nIHBlcmlvZC4KKworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJtZXRob2QiKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uTmFtZXMsICRjdXJyZW50TWV0aG9kKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVwdGgp
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25TdGFydExpbmVzLCAk
Lik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgJGJyYWNlc0RlcHRoKys7
CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9uSnVzdFNlZW4gPSAwOworCisgICAgICAgICAgICAg
ICAgcHVzaChAY3VycmVudFNjb3Blcywgam9pbignLicsICRtZXRob2ROYW1lID8gJG1ldGhvZE5h
bWUgOiBAY3VycmVudElkZW50aWZpZXJzKSk7CisgICAgICAgICAgICAgICAgQGN1cnJlbnRJZGVu
dGlmaWVycyA9ICgpOworCisgICAgICAgICAgICAgICAgJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4g
PSAwOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICMgQ2xvc2UgYnJhY2UuCisgICAgICAgICAgICBpZiAoJDEgZXEgJ30nKSB7CisgICAgICAgICAg
ICAgICAgJGJyYWNlc0RlcHRoLS07CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9uSnVzdFNlZW4g
PSAwOworCisgICAgICAgICAgICAgICAgaWYgKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMgYW5kICRi
cmFjZXNEZXB0aCA9PSAkY3VycmVudEZ1bmN0aW9uRGVwdGhzWyQjY3VycmVudEZ1bmN0aW9uRGVw
dGhzXSkgeworICAgICAgICAgICAgICAgICAgICBwb3AoQGN1cnJlbnRGdW5jdGlvbkRlcHRocyk7
CisgICAgICAgICAgICAgICAgICAgIHBvcChAY3VycmVudFBhcnNpbmdNb2RlKTsKKworICAgICAg
ICAgICAgICAgICAgICBteSAkY3VycmVudE5hbWUgPSBwb3AoQGN1cnJlbnRGdW5jdGlvbk5hbWVz
KTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHN0YXJ0ID0gcG9wKEBjdXJyZW50RnVuY3Rpb25T
dGFydExpbmVzKTsKKworICAgICAgICAgICAgICAgICAgICAkY3VycmVudE5hbWUgPX4gcy9eXC4v
L2c7ICMgUmVtb3ZlcyBsZWFkaW5nIHBlcmlvZHMuCisKKyAgICAgICAgICAgICAgICAgICAgcHVz
aChAcmFuZ2VzLCBbJHN0YXJ0LCAkLiwgJGN1cnJlbnROYW1lXSk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgcG9wKEBjdXJyZW50U2NvcGVzKTsKKyAgICAgICAgICAgICAg
ICBAY3VycmVudElkZW50aWZpZXJzID0gKCk7CisKKyAgICAgICAgICAgICAgICBuZXh0OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAjIERvdC4KKyAgICAgICAgICAgIGlmICgkMSBlcSAn
LicpIHsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAjIFNlbWljb2xvbiBvciBjb21tYS4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnOycgb3IgJDEg
ZXEgJywnKSB7CisgICAgICAgICAgICAgICAgQGN1cnJlbnRJZGVudGlmaWVycyA9ICgpOworICAg
ICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQ2xhc3Mu
CisgICAgICAgICAgICBpZiAoJDEgZXEgJ2NsYXNzJykgeworICAgICAgICAgICAgICAgICRjbGFz
c0p1c3RTZWVuID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAjIEV4dGVuZHMuCisgICAgICAgICAgICBpZiAoJDEgZXEgJ2V4dGVuZHMnKSB7
CisgICAgICAgICAgICAgICAgJGluRXh0ZW5kcyA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBGdW5jdGlvbi4KKyAgICAgICAgICAgIGlm
ICgkMSBlcSAnZnVuY3Rpb24nKSB7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9uSnVzdFNlZW4g
PSAxOworCisgICAgICAgICAgICAgICAgaWYgKCRhc3NpZ25tZW50SnVzdFNlZW4pIHsKKyAgICAg
ICAgICAgICAgICAgICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9IGpvaW4oJy4nLCAoQGN1cnJlbnRT
Y29wZXMsIEBjdXJyZW50SWRlbnRpZmllcnMpKTsKKyAgICAgICAgICAgICAgICAgICAgJGN1cnJl
bnRGdW5jdGlvbiA9fiBzL1wuezIsfS9cLi9nOyAjIFJlbW92ZXMgY29uc2VjdXRpdmUgcGVyaW9k
cy4KKworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJmdW5j
dGlvbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywg
JGN1cnJlbnRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5j
dGlvbkRlcHRocywgJGJyYWNlc0RlcHRoKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAY3Vy
cmVudEZ1bmN0aW9uU3RhcnRMaW5lcywgJC4pOworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgR2V0dGVyIHBy
ZWZpeC4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnZ2V0JykgeworICAgICAgICAgICAgICAgIG5l
eHQgaWYgJGxhc3RUb2tlbiBlcSAnLic7ICMgQXZvaWQgbWFwLmdldCguLi4pLgorICAgICAgICAg
ICAgICAgICRnZXR0ZXJKdXN0U2VlbiA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgIyBTZXR0ZXIgcHJlZml4LgorICAgICAgICAgICAgaWYg
KCQxIGVxICdzZXQnKSB7CisgICAgICAgICAgICAgICAgbmV4dCBpZiAkbGFzdFRva2VuIGVxICcu
JzsgIyBBdm9pZCBtYXAuc2V0KC4uLikuCisgICAgICAgICAgICAgICAgJHNldHRlckp1c3RTZWVu
ID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAjIEFzeW5jIHByZWZpeC4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnYXN5bmMnKSB7CisgICAg
ICAgICAgICAgICAgbmV4dCBpZiAkbGFzdFRva2VuIGVxICcuJzsKKyAgICAgICAgICAgICAgICAk
YXN5bmNKdXN0U2VlbiA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgIyBTdGF0aWMuCisgICAgICAgICAgICBpZiAoJDEgZXEgJ3N0YXRpYycg
b3IgJDEgZXEgJ2NvbnN0cnVjdG9yJykgeworICAgICAgICAgICAgICAgICRzdGF0aWNPckNvbnRy
dWN0b3JTZWVuID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAjIEFzc2lnbm1lbnQgb3BlcmF0b3IuCisgICAgICAgICAgICBpZiAoJDEgZXEg
Jz0nIG9yICQxIGVxICc6JykgeworICAgICAgICAgICAgICAgICRhc3NpZ25tZW50SnVzdFNlZW4g
PSAxOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IG5leHQgaWYgJHBhcmVudGhlc2VzRGVwdGggPiAkZ2xvYmFsUGFyZW50aGVzZXNEZXB0aDsKKwor
ICAgICAgICAgICAgIyBXb3JkLgorICAgICAgICAgICAgJHdvcmQgPSAkMTsKKworICAgICAgICAg
ICAgaWYgKCRjbGFzc0p1c3RTZWVuKSB7CisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudElk
ZW50aWZpZXJzLCAkd29yZCkgaWYgISRhc3NpZ25tZW50SnVzdFNlZW47CisKKyAgICAgICAgICAg
ICAgICBteSAkY3VycmVudENsYXNzID0gam9pbignLicsIChAY3VycmVudFNjb3BlcywgQGN1cnJl
bnRJZGVudGlmaWVycykpOworICAgICAgICAgICAgICAgICRjdXJyZW50Q2xhc3MgPX4gcy9cLnsy
LH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCisKKyAgICAgICAgICAgICAg
ICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJjbGFzcyIpOworICAgICAgICAgICAgICAgIHB1
c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVudENsYXNzKTsKKyAgICAgICAgICAgICAg
ICBwdXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0aCk7CisgICAgICAgICAg
ICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcywgJC4pOworICAgICAgICAgICAg
fSBlbHNpZiAoJGdldHRlckp1c3RTZWVuIG9yICRzZXR0ZXJKdXN0U2VlbiBvciAkYXN5bmNKdXN0
U2VlbikgeworICAgICAgICAgICAgICAgICR3b3JkID0gImdldCAkd29yZCIgaWYgJGdldHRlckp1
c3RTZWVuOworICAgICAgICAgICAgICAgICR3b3JkID0gInNldCAkd29yZCIgaWYgJHNldHRlckp1
c3RTZWVuOworICAgICAgICAgICAgICAgICR3b3JkID0gImFzeW5jICR3b3JkIiBpZiAkYXN5bmNK
dXN0U2VlbjsKKworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdv
cmQpOworCisgICAgICAgICAgICAgICAgbXkgJG1vZGUgPSAkY3VycmVudFBhcnNpbmdNb2RlWyQj
Y3VycmVudFBhcnNpbmdNb2RlXTsKKyAgICAgICAgICAgICAgICBteSAkY3VycmVudEZ1bmN0aW9u
ID0gam9pbignLicsIChAY3VycmVudFNjb3BlcywgKCRtb2RlIGVxICdjbGFzcycgYW5kICEkc3Rh
dGljT3JDb250cnVjdG9yU2VlbikgPyAicHJvdG90eXBlIiA6ICIiLCBAY3VycmVudElkZW50aWZp
ZXJzKSk7CisgICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9fiBzL1wuezIsfS9cLi9n
OyAjIFJlbW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KKworICAgICAgICAgICAgICAgIHB1c2go
QGN1cnJlbnRQYXJzaW5nTW9kZSwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgcHVzaChA
Y3VycmVudEZ1bmN0aW9uTmFtZXMsICRjdXJyZW50RnVuY3Rpb24pOworICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRGdW5jdGlvbkRlcHRocywgJGJyYWNlc0RlcHRoKTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25TdGFydExpbmVzLCAkLik7CisgICAgICAgICAgICB9
IGVsc2lmICgkZnVuY3Rpb25KdXN0U2VlbiBhbmQgISRhc3NpZ25tZW50SnVzdFNlZW4pIHsKKyAg
ICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50SWRlbnRpZmllcnMsICR3b3JkKTsKKworICAgICAg
ICAgICAgICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSBqb2luKCcuJywgKEBjdXJyZW50U2NvcGVz
LCBAY3VycmVudElkZW50aWZpZXJzKSk7CisgICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlv
biA9fiBzL1wuezIsfS9cLi9nOyAjIFJlbW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KKworICAg
ICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzaW5nTW9kZSwgImZ1bmN0aW9uIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uTmFtZXMsICRjdXJyZW50RnVuY3Rpb24p
OworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbkRlcHRocywgJGJyYWNlc0Rl
cHRoKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25TdGFydExpbmVzLCAk
Lik7CisgICAgICAgICAgICB9IGVsc2lmICgkd29yZCBuZSAnaWYnIGFuZCAkd29yZCBuZSAnZm9y
JyBhbmQgJHdvcmQgbmUgJ2RvJyBhbmQgJHdvcmQgbmUgJ3doaWxlJyBhbmQgJHdvcmQgbmUgJ3do
aWNoJyBhbmQgJHdvcmQgbmUgJ3ZhcicpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50
SWRlbnRpZmllcnMsICR3b3JkKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgJGNsYXNz
SnVzdFNlZW4gPSAwOworICAgICAgICAgICAgJHBhcmVudGhlc2lzSnVzdFNlZW4gPSAwOworICAg
ICAgICAgICAgJGZ1bmN0aW9uSnVzdFNlZW4gPSAwOworICAgICAgICAgICAgJGdldHRlckp1c3RT
ZWVuID0gMDsKKyAgICAgICAgICAgICRzZXR0ZXJKdXN0U2VlbiA9IDA7CisgICAgICAgICAgICAk
YXN5bmNKdXN0U2VlbiA9IDA7CisgICAgICAgICAgICAkYXNzaWdubWVudEp1c3RTZWVuID0gMDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHdhcm4gIm1pc21hdGNoZWQgYnJhY2VzIGluICRmaWxl
TmFtZVxuIiBpZiAkYnJhY2VzRGVwdGg7CisgICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRoZXNl
cyBpbiAkZmlsZU5hbWVcbiIgaWYgJHBhcmVudGhlc2VzRGVwdGg7CisKKyAgICByZXR1cm4gQHJh
bmdlczsKK30KKworIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2Yg
dGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBQZXJsIGZ1bmN0aW9ucy4gRnVuY3Rpb25zCisjIHN0
YXJ0IG9uIGEgbGluZSB0aGF0IHN0YXJ0cyB3aXRoICJzdWIgIiwgYW5kIGVuZCBvbiB0aGUgZmly
c3QgbGluZSBzdGFydGluZyB3aXRoICJ9IiB0aGVyZWFmdGVyLgorIworIyBSZXN1bHQgaXMgYSBs
aXN0IG9mIHRyaXBsZXM6IFsgc3RhcnRfbGluZSwgZW5kX2xpbmUsIGZ1bmN0aW9uIF0uCisKK3N1
YiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3BlcmwgeworICAgIG15ICgkZmlsZUhhbmRs
ZSwgJGZpbGVOYW1lKSA9IEBfOworCisgICAgbXkgQHJhbmdlczsKKworICAgIG15ICRjdXJyZW50
RnVuY3Rpb24gPSAiIjsKKyAgICBteSAkc3RhcnQgPSAwOworICAgIG15ICRoZXJlRG9jdW1lbnRJ
ZGVudGlmaWVyID0gIiI7CisKKyAgICB3aGlsZSAoPCRmaWxlSGFuZGxlPikgeworICAgICAgICBj
aG9tcDsKKyAgICAgICAgaWYgKCEkaGVyZURvY3VtZW50SWRlbnRpZmllcikgeworICAgICAgICAg
ICAgaWYgKC9ec3ViXHMrKFtcd19dW1x3XGRfXSopLykgeworICAgICAgICAgICAgICAgICMgU2tp
cCBvdmVyIGZvcndhcmQgZGVjbGFyYXRpb25zLCB3aGljaCBkb24ndCBjb250YWluIGEgYnJhY2Ug
YW5kIGVuZCB3aXRoIGEgc2VtaWNvbG9uLgorICAgICAgICAgICAgICAgIG5leHQgaWYgLztccyok
LzsKKworICAgICAgICAgICAgICAgIGlmICgkY3VycmVudEZ1bmN0aW9uKSB7CisgICAgICAgICAg
ICAgICAgICAgIHdhcm4gIm5lc3RlZCBmdW5jdGlvbnMgZm91bmQgYXQgdG9wLWxldmVsIGF0ICRm
aWxlTmFtZTokLlxuIjsKKyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICQxOworICAgICAgICAgICAg
ICAgICRzdGFydCA9ICQuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKC88PFxzKltc
IlwnXT8oW1x3X11bXHdfXGRdKikvKSB7CisgICAgICAgICAgICAgICAgIyBFbnRlciBoZXJlLWRv
Y3VtZW50LgorICAgICAgICAgICAgICAgICRoZXJlRG9jdW1lbnRJZGVudGlmaWVyID0gJDE7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW5kZXgoJF8sICJ9IikgPT0gMCkgeworICAg
ICAgICAgICAgICAgIG5leHQgdW5sZXNzICRzdGFydDsKKyAgICAgICAgICAgICAgICBwdXNoKEBy
YW5nZXMsIFskc3RhcnQsICQuLCAkY3VycmVudEZ1bmN0aW9uXSk7CisgICAgICAgICAgICAgICAg
JGN1cnJlbnRGdW5jdGlvbiA9ICIiOworICAgICAgICAgICAgICAgICRzdGFydCA9IDA7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0gZWxzaWYgKCRfIGVxICRoZXJlRG9jdW1lbnRJZGVudGlmaWVy
KSB7CisgICAgICAgICAgICAjIEVzY2FwZSBmcm9tIGhlcmUtZG9jdW1lbnQuCisgICAgICAgICAg
ICAkaGVyZURvY3VtZW50SWRlbnRpZmllciA9ICIiOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIEByYW5nZXM7Cit9CisKKyMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxpbmUg
cmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgUHl0aG9uIGNsYXNzZXMsIG1ldGhv
ZHMsIG9yIGZ1bmN0aW9ucy4KKyMKKyMgRklYTUU6IE1heWJlIHdlIHNob3VsZCB1c2UgUHl0aG9u
J3MgYXN0IG1vZHVsZSB0byBkbyB0aGUgcGFyc2luZyBmb3IgdXM/CisjCisjIFJlc3VsdCBpcyBh
IGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb24gXS4KKwor
c3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcHl0aG9uIHsKKyAgICBteSAoJGZpbGVI
YW5kbGUsICRmaWxlTmFtZSkgPSBAXzsKKworICAgIG15IEByYW5nZXM7CisKKyAgICBteSAkbXVs
dGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXggPSBxciMoPzoiIiJ8JycnKSM7CisgICAg
bXkgJG11bHRpbGluZVN0cmluZ0xpdGVyYWxTdGFydFJlZ0V4ID0gcXIjXHMqJG11bHRpbGluZVN0
cmluZ0xpdGVyYWxTZW50aW5lbFJlZ0V4IzsKKyAgICBteSAkbXVsdGlsaW5lU3RyaW5nTGl0ZXJh
bEVuZFJlZ0V4ID0gcXIjJG11bHRpbGluZVN0cmluZ0xpdGVyYWxTZW50aW5lbFJlZ0V4XHMqJCM7
CisKKyAgICBteSBAc2NvcGVTdGFjayA9ICh7IGxpbmUgPT4gMCwgaW5kZW50ID0+IC0xLCBuYW1l
ID0+IHVuZGVmIH0pOworICAgIG15ICRsYXN0TGluZSA9IDA7CisgICAgbXkgJGluQ29tbWVudCA9
IDA7CisgICAgdW50aWwgKCRsYXN0TGluZSkgeworICAgICAgICAkXyA9IDwkZmlsZUhhbmRsZT47
CisgICAgICAgIHVubGVzcyAoJF8pIHsKKyAgICAgICAgICAgICMgVG8gcG9wIG91dCBhbGwgcG9w
cGVkIHNjb3BlcywgcnVuIHRoZSBsb29wIG9uY2UgbW9yZSBhZnRlcgorICAgICAgICAgICAgIyB3
ZSBlbmNvdW50ZXJlZCB0aGUgZW5kIG9mIHRoZSBmaWxlLgorICAgICAgICAgICAgJF8gPSAicGFz
c1xuIjsKKyAgICAgICAgICAgICQuKys7CisgICAgICAgICAgICAkbGFzdExpbmUgPSAxOworICAg
ICAgICB9CisgICAgICAgIGNob21wOworICAgICAgICBuZXh0IHVubGVzcyAvXihccyopKFteI10u
KikkLzsgIyBTa2lwIG5vbi1pbmRlbnRlZCBsaW5lcyB0aGF0IGJlZ2luIHdpdGggYSBjb21tZW50
LgorCisgICAgICAgIG15ICRpbmRlbnQgPSBsZW5ndGggJDE7CisgICAgICAgIG15ICRyZXN0ID0g
JDI7CisgICAgICAgIG15ICRzY29wZSA9ICRzY29wZVN0YWNrWy0xXTsKKworICAgICAgICBpZiAo
JGluZGVudCA8PSAkc2NvcGUtPntpbmRlbnR9KSB7CisgICAgICAgICAgICAjIEZpbmQgYWxsIHRo
ZSBzY29wZXMgdGhhdCB3ZSBoYXZlIGp1c3QgZXhpdGVkLgorICAgICAgICAgICAgbXkgJGkgPSAw
OworICAgICAgICAgICAgZm9yICg7ICRpIDwgQHNjb3BlU3RhY2s7ICsrJGkpIHsKKyAgICAgICAg
ICAgICAgICBsYXN0IGlmICRpbmRlbnQgPD0gJHNjb3BlU3RhY2tbJGldLT57aW5kZW50fTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIG15IEBwb3BwZWRTY29wZXMgPSBzcGxpY2UgQHNjb3Bl
U3RhY2ssICRpOworCisgICAgICAgICAgICAjIEZvciBlYWNoIHNjb3BlIHRoYXQgd2FzIGp1c3Qg
ZXhpdGVkLCBhZGQgYSByYW5nZSB0aGF0IGdvZXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhhdAorICAg
ICAgICAgICAgIyBzY29wZSB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQgbmVzdGVkIHNjb3BlLCBv
ciB0byB0aGUgbGluZSBqdXN0IGJlZm9yZSB0aGlzIG9uZSBmb3IKKyAgICAgICAgICAgICMgdGhl
IGlubmVybW9zdCBzY29wZS4KKyAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IEBwb3BwZWRT
Y29wZXM7ICsrJGkpIHsKKyAgICAgICAgICAgICAgICBteSAkbGluZUFmdGVyRW5kID0gJGkgKyAx
ID09IEBwb3BwZWRTY29wZXMgPyAkLiA6ICRwb3BwZWRTY29wZXNbJGkgKyAxXS0+e2xpbmV9Owor
ICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyRwb3BwZWRTY29wZXNbJGldLT57bGluZX0s
ICRsaW5lQWZ0ZXJFbmQgLSAxLCAkcG9wcGVkU2NvcGVzWyRpXS0+e25hbWV9XTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIEBzY29wZVN0YWNrIG9yIHdhcm4gIlBvcHBlZCBvZmYgbGFzdCBz
Y29wZSBhdCAkZmlsZU5hbWU6JC5cbiI7CisKKyAgICAgICAgICAgICMgU2V0IHRoZSBub3ctY3Vy
cmVudCBzY29wZSB0byBzdGFydCBhdCB0aGUgY3VycmVudCBsaW5lLiBBbnkgbGluZXMgd2l0aGlu
IHRoaXMgc2NvcGUKKyAgICAgICAgICAgICMgYmVmb3JlIHRoaXMgcG9pbnQgc2hvdWxkIGFscmVh
ZHkgaGF2ZSBiZWVuIGFkZGVkIHRvIEByYW5nZXMuCisgICAgICAgICAgICAkc2NvcGUgPSAkc2Nv
cGVTdGFja1stMV07CisgICAgICAgICAgICAkc2NvcGUtPntsaW5lfSA9ICQuOworICAgICAgICB9
CisKKyAgICAgICAgIyBTa2lwIG11bHRpLWxpbmUgc3RyaW5nIGxpdGVyYWxzIGFuZCBkb2NzdHJp
bmdzLgorICAgICAgICBuZXh0IGlmIC8kbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFN0YXJ0UmVnRXgu
KiRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXgvOworICAgICAgICBpZiAoISRpbkNvbW1l
bnQgJiYgLyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU3RhcnRSZWdFeC8pIHsKKyAgICAgICAgICAg
ICRpbkNvbW1lbnQgPSAxOworICAgICAgICB9IGVsc2lmICgkaW5Db21tZW50ICYmIC8kbXVsdGls
aW5lU3RyaW5nTGl0ZXJhbEVuZFJlZ0V4LykgeworICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7
CisgICAgICAgIH0KKyAgICAgICAgbmV4dCBpZiAkaW5Db21tZW50OworCisgICAgICAgIG5leHQg
aWYgL15ccypbIyciXS87ICMgU2tpcCBpbmRlbnRlZCBhbmQgbm9uLWluZGVudGVkIGxpbmVzIHRo
YXQgYmVnaW4gd2l0aCBhIGNvbW1lbnQgb3Igc3RyaW5nIGxpdGVyYWwgKGluY2x1ZGVzIGRvY3N0
cmluZ3MpLgorCisgICAgICAgIG5leHQgdW5sZXNzICRyZXN0ID1+IC8oPzpjbGFzc3xkZWYpXHMr
KFx3KykvOworICAgICAgICBteSAkbmFtZSA9ICQxOworICAgICAgICBteSAkZnVsbE5hbWUgPSAk
c2NvcGUtPntuYW1lfSA/IGpvaW4oJy4nLCAkc2NvcGUtPntuYW1lfSwgJG5hbWUpIDogJG5hbWU7
CisgICAgICAgIHB1c2ggQHNjb3BlU3RhY2ssIHsgbGluZSA9PiAkLiwgaW5kZW50ID0+ICRpbmRl
bnQsIG5hbWUgPT4gJGZ1bGxOYW1lIH07CisKKyAgICAgICAgaWYgKCRzY29wZS0+e2luZGVudH0g
Pj0gMCkgeworICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBbJHNjb3BlLT57bGluZX0sICQuIC0g
MSwgJHNjb3BlLT57bmFtZX1dOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEByYW5n
ZXM7Cit9CisKKyMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRo
ZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgQ1NTIHNlbGVjdG9ycy4gIEEgc2VsZWN0b3IgaXMKKyMg
YW55dGhpbmcgYmVmb3JlIGFuIG9wZW5pbmcgYnJhY2Ugb24gYSBsaW5lLiBBIHNlbGVjdG9yIHN0
YXJ0cyBhdCB0aGUgbGluZSBjb250YWluaW5nIHRoZSBvcGVuaW5nCisjIGJyYWNlIGFuZCBlbmRz
IGF0IHRoZSBjbG9zaW5nIGJyYWNlLgorIworIyBSZXN1bHQgaXMgYSBsaXN0IG9mIHRyaXBsZXM6
IFsgc3RhcnRfbGluZSwgZW5kX2xpbmUsIHNlbGVjdG9yIF0uCisKK3N1YiBnZXRfc2VsZWN0b3Jf
bGluZV9yYW5nZXNfZm9yX2NzcyB7CisgICAgbXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0g
QF87CisKKyAgICBteSBAcmFuZ2VzOworCisgICAgbXkgJGluQ29tbWVudCA9IDA7CisgICAgbXkg
JGluQnJhY2UgPSAwOworICAgIG15IEBzdGFjazsKKyAgICBteSAkY29udGV4dDsKKyAgICBteSBA
Y3VycmVudFBhcnNlTW9kZSA9ICgiZ2xvYmFsIik7CisgICAgbXkgQGdyb3VwaW5nU3RhY2s7Cisg
ICAgbXkgJHNlbGVjdG9yQnJhY2VzID0gMDsKKworICAgIHdoaWxlICg8JGZpbGVIYW5kbGU+KSB7
CisgICAgICAgIGZvcmVhY2ggbXkgJHRva2VuIChzcGxpdCBtLShce3xcfXwvXCp8XCovKS0sICRf
KSB7CisgICAgICAgICAgICBpZiAoJHRva2VuIGVxICJ7IikgeworICAgICAgICAgICAgICAgIGlm
ICghJGluQ29tbWVudCkgeworICAgICAgICAgICAgICAgICAgICAkaW5CcmFjZSArPSAxOworICAg
ICAgICAgICAgICAgICAgICAkc2VsZWN0b3JCcmFjZXMgKz0gMSBpZiAkY3VycmVudFBhcnNlTW9k
ZVskI2N1cnJlbnRQYXJzZU1vZGVdIGVxICJzZWxlY3RvciI7CisgICAgICAgICAgICAgICAgICAg
IHdhcm4gIm1pc21hdGNoZWQgb3BlbmluZyBicmFjZSBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIg
aWYgJHNlbGVjdG9yQnJhY2VzID4gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
IGVsc2lmICgkdG9rZW4gZXEgIn0iKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghJGluQnJhY2Ugb3IgJGN1cnJlbnRQYXJzZU1v
ZGVbJCNjdXJyZW50UGFyc2VNb2RlXSBlcSAiZ2xvYmFsIikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgd2FybiAibWlzbWF0Y2hlZCBjbG9zaW5nIGJyYWNlIGZvdW5kIGluICRmaWxlTmFtZTok
LlxuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgICAgICAkaW5CcmFjZSAtPSAxOworCisgICAgICAgICAgICAg
ICAgICAgIG15ICRwYXJzZU1vZGUgPSBwb3AoQGN1cnJlbnRQYXJzZU1vZGUpOworICAgICAgICAg
ICAgICAgICAgICBpZiAoJHBhcnNlTW9kZSBlcSAic2VsZWN0b3IiKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBteSAkbmFtZSA9IHBvcChAc3RhY2spOworICAgICAgICAgICAgICAgICAgICAg
ICAgbXkgJHN0YXJ0TGluZSA9IHBvcChAc3RhY2spOworICAgICAgICAgICAgICAgICAgICAgICAg
bXkgJGVuZExpbmUgPSAkLjsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ICRncm91cGluZ1By
ZWZpeCA9IGpvaW4oIiAiLCBAZ3JvdXBpbmdTdGFjayk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobGVuZ3RoICRncm91cGluZ1ByZWZpeCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICRncm91cGluZ1ByZWZpeCAuPSAiICIKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydExpbmUsICRlbmRMaW5l
LCAkZ3JvdXBpbmdQcmVmaXggLiAkbmFtZV0pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2lm
ICgkcGFyc2VNb2RlIGVxICJtZWRpYSIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcChA
Z3JvdXBpbmdTdGFjayk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
ICAgICAkc2VsZWN0b3JCcmFjZXMgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzaWYgKCR0b2tlbiBlcSAiLyoiKSB7CisgICAgICAgICAgICAgICAgJGluQ29tbWVudCA9
IDE7CisgICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIiovIikgeworICAgICAgICAgICAg
ICAgIHdhcm4gIm1pc21hdGNoZWQgY29tbWVudCBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYg
ISRpbkNvbW1lbnQ7CisgICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghJGluQ29tbWVudCBhbmQgJGN1cnJlbnRQ
YXJzZU1vZGVbJCNjdXJyZW50UGFyc2VNb2RlXSBuZSAic2VsZWN0b3IiIGFuZCAkdG9rZW4gIX4g
L15bXHNcdF0qJC8pIHsKKyAgICAgICAgICAgICAgICAgICAgJHRva2VuID1+IHMvXltcc1x0XSp8
W1xzXHRdKiQvL2c7CisgICAgICAgICAgICAgICAgICAgIG15ICRzdGFydExpbmUgPSAkLjsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCR0b2tlbiA9fiAvXlxAbWVkaWEvKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2VNb2RlLCAibWVkaWEiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGdyb3VwaW5nU3RhY2ssICR0b2tlbik7CisgICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50
UGFyc2VNb2RlLCAic2VsZWN0b3IiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQHN0
YWNrLCAoJHN0YXJ0TGluZSwgJHRva2VuKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAjIFNv
cnQgYnkgc3RhcnQgbGluZS4KKyAgICByZXR1cm4gc29ydCB7JGEtPlswXSA8PT4gJGItPlswXX0g
QHJhbmdlczsKK30KKworIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMg
b2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBTd2lmdCBjbGFzc2VzLCBtZXRob2RzLAorIyBv
ciBmdW5jdGlvbnMuCisjCisjIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9s
aW5lLCBlbmRfbGluZSwgZnVuY3Rpb24gXS4KKworc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdl
c19mb3Jfc3dpZnQgeworICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOworCisg
ICAgbXkgQHJhbmdlczsKKworICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSAiIjsKKyAgICBteSAk
Y3VycmVudFR5cGUgPSAiIjsKKyAgICBteSAkZnVuY3Rpb25TdGFydCA9IDA7CisgICAgbXkgJHR5
cGVTdGFydCA9IDA7CisgICAgbXkgJGZ1bmN0aW9uU2NvcGVEZXB0aCA9IDA7CisgICAgbXkgJHR5
cGVTY29wZURlcHRoID0gMDsKKyAgICBteSAkc2NvcGVEZXB0aCA9IDA7CisKKyAgICB3aGlsZSAo
PCRmaWxlSGFuZGxlPikgeworICAgICAgICBjaG9tcDsKKyAgICAgICAgbmV4dCBpZiAoL15ccypc
L1wvLiovKTsKKyAgICAgICAgaWYgKC9mdW5jXHMrKFtcd19dW1x3XGRfXSopXCgoLiopXCkvIHx8
IC92YXJccysoW1x3X11bXHdcZF9dKik6XHMrLykgeworICAgICAgICAgICAgJGZ1bmN0aW9uU2Nv
cGVEZXB0aCA9ICRzY29wZURlcHRoOworICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICQx
OworICAgICAgICAgICAgaWYgKCQyKSB7CisgICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlv
biA9ICIkY3VycmVudEZ1bmN0aW9uKCIuIHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3MoJDIpIC4gIiki
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCRjdXJyZW50VHlwZSkgeworICAgICAg
ICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24gPSAiJGN1cnJlbnRUeXBlLiRjdXJyZW50RnVuY3Rp
b24iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJGZ1bmN0aW9uU3RhcnQgPSAkLjsKKyAg
ICAgICAgfSBlbHNpZiAoLyg/OmNsYXNzfHN0cnVjdHxlbnVtfHByb3RvY29sfGV4dGVuc2lvbilc
cysoW1x3X11bXHdcZF9dKikvKSB7CisgICAgICAgICAgICAkdHlwZVNjb3BlRGVwdGggPSAkc2Nv
cGVEZXB0aDsKKyAgICAgICAgICAgICRjdXJyZW50VHlwZSA9ICQxOworICAgICAgICAgICAgJHR5
cGVTdGFydCA9ICQuOworICAgICAgICB9CisgICAgICAgIGlmIChpbmRleCgkXywgInsiKSA+IC0x
KSB7CisgICAgICAgICAgICAkc2NvcGVEZXB0aCsrOworICAgICAgICB9CisgICAgICAgIGlmIChp
bmRleCgkXywgIn0iKSA+IC0xKSB7CisgICAgICAgICAgICAkc2NvcGVEZXB0aC0tOworICAgICAg
ICB9CisgICAgICAgIGlmICgkc2NvcGVEZXB0aCA9PSAkZnVuY3Rpb25TY29wZURlcHRoKSB7Cisg
ICAgICAgICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb25TdGFydDsKKyAgICAgICAgICAgIHB1c2go
QHJhbmdlcywgWyRmdW5jdGlvblN0YXJ0LCAkLiwgJGN1cnJlbnRGdW5jdGlvbl0pOworICAgICAg
ICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOworICAgICAgICAgICAgJGZ1bmN0aW9uU3RhcnQg
PSAwOworICAgICAgICB9IGVsc2lmICgkc2NvcGVEZXB0aCA9PSAkdHlwZVNjb3BlRGVwdGgpIHsK
KyAgICAgICAgICAgIG5leHQgdW5sZXNzICR0eXBlU3RhcnQ7CisgICAgICAgICAgICAkY3VycmVu
dFR5cGUgPSAiIjsKKyAgICAgICAgICAgICR0eXBlU3RhcnQgPSAwOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIEByYW5nZXM7Cit9CisKK3N1YiBwYXJzZVN3aWZ0RnVuY3Rpb25Bcmdz
IHsKKyAgICBteSAkZnVuY3Rpb25BcmdzID0gc2hpZnQ7CisKKyAgICBteSBAd29yZHMgPSBzcGxp
dCAvLCAvLCAkZnVuY3Rpb25BcmdzOworICAgIG15ICRhcmdDb3VudCA9IHNjYWxhcihAd29yZHMp
OworICAgIGlmICgkYXJnQ291bnQgPT0gMCkgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfSBl
bHNpZiAoJGFyZ0NvdW50ID4gMCkgeworICAgICAgICAjIElmIHRoZSBmaXJzdCBhcmd1bWVudCBp
cyB1bm5hbWVkLCBnaXZlIGl0IHRoZSBuYW1lICJfIgorICAgICAgICAkd29yZHNbMF0gPX4gcy9e
KFx3KzogLiopL18gJDEvOworICAgICAgICByZXR1cm4gam9pbigiIiwgbWFwIHsgJF8gPX4gcy9e
KFx3KykuKi8kMS87ICIkXzoiIH0gQHdvcmRzKTsKKyAgICB9IGVsc2UgeworICAgICAgICB3YXJu
ICJVbmtub3duIGFyZ3VtZW50IGNvdW50LlxuIjsKKyAgICB9Cit9CisKK3N1YiBkZWNvZGVFbnRp
dGllcyB7CisgICAgbXkgJHRleHQgPSBzaGlmdDsKKyAgICAkdGV4dCA9fiBzL1wmbHQ7LzwvZzsK
KyAgICAkdGV4dCA9fiBzL1wmZ3Q7Lz4vZzsKKyAgICAkdGV4dCA9fiBzL1wmcXVvdDsvXCIvZzsK
KyAgICAkdGV4dCA9fiBzL1wmYXBvczsvXCcvZzsKKyAgICAkdGV4dCA9fiBzL1wmYW1wOy9cJi9n
OworICAgIHJldHVybiAkdGV4dDsKK30KKworMTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9kaXJzLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2RpcnMucG0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNWUxZDAyNWYwNzEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZGlycy5wbQpAQCAtMCwwICsx
LDgxIEBACisjIS91c3IvYmluL2VudiBwZXJsCisKKyMgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitwYWNrYWdlIHdlYmtp
dHBlcmw6OmRpcnM7CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgQ2FycDsKK3Vz
ZSBGaWxlOjpTcGVjOworCitCRUdJTiB7CisgICB1c2UgRXhwb3J0ZXIgICAoKTsKKyAgIG91ciAo
JFZFUlNJT04sIEBJU0EsIEBFWFBPUlQsIEBFWFBPUlRfT0ssICVFWFBPUlRfVEFHUyk7CisgICAk
VkVSU0lPTiAgICAgPSAxLjAwOworICAgQElTQSAgICAgICAgID0gcXcoRXhwb3J0ZXIpOworICAg
QEVYUE9SVCAgICAgID0gcXcoCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZURpcgorICAgICAg
ICAgICAgICAgICAgICBzZXRTb3VyY2VEaXIKKyAgICAgICAgICAgICAgICApOworICAgJUVYUE9S
VF9UQUdTID0gKCk7CisgICBARVhQT1JUX09LICAgPSAoKTsKK30KKworbXkgJHNvdXJjZURpcjsK
Kworc3ViIHNvdXJjZURpcgoreworICAgIGRldGVybWluZVNvdXJjZURpcigpOworICAgIHJldHVy
biAkc291cmNlRGlyOworfQorCisjIHVzZWQgZm9yIHNjcmlwdHMgd2hpY2ggYXJlIHN0b3JlZCBp
biBhIG5vbi1zdGFuZGFyZCBsb2NhdGlvbgorc3ViIHNldFNvdXJjZURpcigkKQoreworICAgICgk
c291cmNlRGlyKSA9IEBfOworfQorCitzdWIgZGV0ZXJtaW5lU291cmNlRGlyCit7CisgICAgcmV0
dXJuIGlmICRzb3VyY2VEaXI7CisgICAgJHNvdXJjZURpciA9ICRGaW5kQmluOjpSZWFsQmluOwor
ICAgICRzb3VyY2VEaXIgPX4gc3wvKyR8fDsgIyBSZW1vdmUgdHJhaWxpbmcgJy8nIGFzIHdlIHdv
dWxkIGRpZSBsYXRlcgorCisgICAgIyB3YWxrcyB1cCBwYXRoIGNoZWNraW5nIGVhY2ggZGlyZWN0
b3J5IHRvIHNlZSBpZiBpdCBpcyB0aGUgbWFpbiBXZWJLaXQgcHJvamVjdCBkaXIsCisgICAgIyBk
ZWZpbmVkIGJ5IGNvbnRhaW5pbmcgU291cmNlcywgV2ViQ29yZSwgYW5kIEphdmFTY3JpcHRDb3Jl
LgorICAgIHVudGlsICgoLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJTb3VyY2Ui
KSAmJiAtZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIsICJXZWJDb3Jl
IikgJiYgLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJTb3VyY2UiLCAiSmF2YVNj
cmlwdENvcmUiKSkgfHwgKC1kIEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiSW50ZXJu
YWwiKSAmJiAtZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIk9wZW5Tb3VyY2UiKSkp
CisgICAgeworICAgICAgICBpZiAoJHNvdXJjZURpciAhfiBzfC9bXi9dKyR8fCkgeworICAgICAg
ICAgICAgY3JvYWsgIkNvdWxkIG5vdCBmaW5kIHRvcCBsZXZlbCB3ZWJraXQgZGlyZWN0b3J5IGFi
b3ZlIHNvdXJjZSBkaXJlY3RvcnkgdXNpbmcgRmluZEJpbi4iOworICAgICAgICB9CisgICAgfQor
CisgICAgJHNvdXJjZURpciA9IEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiT3BlblNv
dXJjZSIpIGlmIC1kIEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiT3BlblNvdXJjZSIp
OworfQorCisxOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2ZpbHRlci1i
dWlsZC13ZWJraXRfdW5pdHRlc3Qvc2hvdWxkSWdub3JlTGluZV91bml0dGVzdHMucGwgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvZmlsdGVyLWJ1aWxkLXdlYmtpdF91bml0dGVzdC9zaG91bGRJ
Z25vcmVMaW5lX3VuaXR0ZXN0cy5wbAppbmRleCBjMzgzMDNjY2JjZTUuLjIyZjBhNDBmZDcyYyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2ZpbHRlci1idWlsZC13ZWJraXRf
dW5pdHRlc3Qvc2hvdWxkSWdub3JlTGluZV91bml0dGVzdHMucGwKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL2ZpbHRlci1idWlsZC13ZWJraXRfdW5pdHRlc3Qvc2hvdWxkSWdub3JlTGlu
ZV91bml0dGVzdHMucGwKQEAgLTMxLDE0ICszMSwxMSBAQCB1c2Ugd2FybmluZ3M7CiB1c2UgRW5n
bGlzaDsKIHVzZSBGaW5kQmluOwogdXNlIFRlc3Q6Ok1vcmU7Ci11c2UgbGliIEZpbGU6OlNwZWMt
PmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKLXVzZSBMb2FkQXNNb2R1bGUgcXcoRmlsdGVy
QnVpbGRXZWJLaXQgZmlsdGVyLWJ1aWxkLXdlYmtpdCk7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNh
dGRpcigkRmluZEJpbjo6UmVhbEJpbiwgIi4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVybDo6YnVp
bGQ6Om91dHB1dCBxdyhzaG91bGRJZ25vcmVMaW5lKTsKIAogc3ViIGRlc2NyaXB0aW9uKCQpOwog
Ci1ARmlsdGVyQnVpbGRXZWJLaXQ6OkVYUE9SVF9PSyA9IHF3KHNob3VsZElnbm9yZUxpbmUpOwot
RmlsdGVyQnVpbGRXZWJLaXQtPmltcG9ydChARmlsdGVyQnVpbGRXZWJLaXQ6OkVYUE9SVF9PSyk7
Ci0KICMKICMgVGVzdCB3aGl0ZXNwYWNlCiAjCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHBlcmwvbGVha3MucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvbGVha3MucG0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jMDg3MmNmYmRmMzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvbGVha3MucG0KQEAgLTAsMCAr
MSwxNTQgQEAKKyMhL3Vzci9iaW4vZW52IHBlcmwKKworIyBDb3B5cmlnaHQgKEMpIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgU2NyaXB0IHRv
IHJ1biB0aGUgTWFjIE9TIFggbGVha3MgdG9vbCB3aXRoIG1vcmUgZXhwcmVzc2l2ZSAnLWV4Y2x1
ZGUnIGxpc3RzLgorCitwYWNrYWdlIHdlYmtpdHBlcmw6OmxlYWtzOworCit1c2Ugc3RyaWN0Owor
dXNlIHdhcm5pbmdzOwordXNlIENhcnA7CisKK3VzZSBGaWxlOjpCYXNlbmFtZTsKKworQkVHSU4g
eworICAgdXNlIEV4cG9ydGVyICAgKCk7CisgICBvdXIgKCRWRVJTSU9OLCBASVNBLCBARVhQT1JU
LCBARVhQT1JUX09LLCAlRVhQT1JUX1RBR1MpOworICAgJFZFUlNJT04gICAgID0gMS4wMDsKKyAg
IEBJU0EgICAgICAgICA9IHF3KEV4cG9ydGVyKTsKKyAgIEBFWFBPUlQgICAgICA9IHF3KAorICAg
ICAgICAgICAgICAgICAgICBydW5MZWFrcworICAgICAgICAgICAgICAgICAgICBwYXJzZUxlYWtz
T3V0cHV0CisgICAgICAgICAgICAgICAgKTsKKyAgICVFWFBPUlRfVEFHUyA9ICgpOworICAgQEVY
UE9SVF9PSyAgID0gKCk7Cit9CisKKyMgUmV0dXJucyB0aGUgb3V0cHV0IG9mIHRoZSBsZWFrcyB0
b29sIGluIGxpc3QgZm9ybS4KK3N1YiBydW5MZWFrcygkJCkKK3sKKyAgICBteSAoJHRhcmdldCwg
JG1lbWdyYXBoUGF0aCkgPSBAXzsKKworICAgIGlmIChkZWZpbmVkICRtZW1ncmFwaFBhdGgpIHsK
KyAgICAgICAgYC91c3IvYmluL2xlYWtzIFwiJHRhcmdldFwiIC0tb3V0cHV0R3JhcGg9XCIkbWVt
Z3JhcGhQYXRoXCJgOworICAgICAgICAkdGFyZ2V0ID0gJG1lbWdyYXBoUGF0aDsKKyAgICB9CisK
KyAgICAjIFRvIGdldCBhIHJlc3VsdCB3ZSBjYW4gcGFyc2UsIHdlIG5lZWQgdG8gcGFzcyAtLWxp
c3QgdG8gYWxsIHZlcnNpb25zIG9mIHRoZSBsZWFrcyB0b29sCisgICAgIyB0aGF0IHJlY29nbml6
ZSBpdCwgYnV0IHRoZXJlIGlzIG5vIGNlcnRhaW4gd2F5IHRvIHRlbGwgaW4gYWR2YW5jZSAodGhl
IHZlcnNpb24gb2YgdGhlCisgICAgIyB0b29sIGlzIG5vdCBhbHdheXMgdGllZCB0byBPUyB2ZXJz
aW9uLCBhbmQgLS1oZWxwIGRvZXNuJ3QgZG9jdW1lbnQgdGhlIG9wdGlvbiBpbiBzb21lCisgICAg
IyBvZiB0aGUgdG9vbCB2ZXJzaW9ucyB3aGVyZSBpdCdzIHN1cHBvcnRlZCBhbmQgbmVlZGVkKS4K
KyAgICBteSBAbGVha3NPdXRwdXQgPSBgL3Vzci9iaW4vbGVha3MgXCIkdGFyZ2V0XCIgLS1saXN0
YDsKKworICAgICMgRklYTUU6IFJlbW92ZSB0aGUgZmFsbGJhY2sgb25jZSBtYWNPUyBNb2phdmUg
aXMgdGhlIG9sZGVzdCBzdXBwb3J0ZWQgdmVyc2lvbi4KKyAgICBteSAkbGVha3NFeGl0Q29kZSA9
ICQ/ID4+IDg7CisgICAgaWYgKCRsZWFrc0V4aXRDb2RlID4gMSkgeworICAgICAgICBAbGVha3NP
dXRwdXQgPSBgL3Vzci9iaW4vbGVha3MgXCIkdGFyZ2V0XCJgOworICAgIH0KKworICAgIHJldHVy
biBcQGxlYWtzT3V0cHV0OworfQorCisjIFJldHVybnMgYSBsaXN0IG9mIGhhc2ggcmVmZXJlbmNl
cyB3aXRoIHRoZSBrZXlzIHsgYWRkcmVzcywgc2l6ZSwgdHlwZSwgY2FsbFN0YWNrLCBsZWFrc091
dHB1dCB9CitzdWIgcGFyc2VMZWFrc091dHB1dChcQCkKK3sKKyAgICBteSAoJGxlYWtzT3V0cHV0
KSA9IEBfOworCisgICAgIyBGb3JtYXQ6CisgICAgIyAgIFByb2Nlc3MgMDAwMDA6IDEyMzQgbm9k
ZXMgbWFsbG9jZWQgZm9yIDEyMzQgS0IKKyAgICAjICAgUHJvY2VzcyAwMDAwMDogWFggbGVha3Mg
Zm9yIFhYWCB0b3RhbCBsZWFrZWQgYnl0ZXMuCisgICAgIyAgIExlYWs6IDB4MDAwMDAwMDAgc2l6
ZT0xMjM0IFtpbnN0YW5jZSBvZiAnYmxhaCddCisgICAgIyAgICAgICAweDAwMDAwMDAwIDB4MDAw
MDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIGEuLmQuZS5lCisgICAgIyAgICAgICAuLi4KKyAg
ICAjICAgICAgIENhbGwgc3RhY2s6IGxlYWtfY2FsbGVyKCkgfCBsZWFrKCkgfCBtYWxsb2MKKyAg
ICAjCisgICAgIyAgIFdlIHRyZWF0IGV2ZXJ5IGxpbmUgZXhjZXB0IGZvciAgUHJvY2VzcyAwMDAw
MDogYW5kIExlYWs6IGFzIG9wdGlvbmFsCisKKyAgICBteSAkbGVha0NvdW50OworICAgIG15IEBw
YXJzZWRPdXRwdXQgPSAoKTsKKyAgICBteSAkcGFyc2luZ0xlYWsgPSAwOworICAgIG15ICRwYXJz
ZWRMZWFrQ291bnQgPSAwOworICAgIGZvciBteSAkbGluZSAoQCRsZWFrc091dHB1dCkgeworICAg
ICAgICBpZiAoJGxpbmUgPX4gL15Qcm9jZXNzIFxkKzogKFxkKykgbGVha3M/LykgeworICAgICAg
ICAgICAgJGxlYWtDb3VudCA9ICQxOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCRsaW5lIGVx
ICJcbiIpIHsKKyAgICAgICAgICAgICRwYXJzaW5nTGVhayA9IDA7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoJGxpbmUgPX4gL15MZWFrOiAvKSB7CisgICAgICAgICAgICAkcGFyc2luZ0xlYWsg
PSAxOworICAgICAgICAgICAgJHBhcnNlZExlYWtDb3VudCsrOworICAgICAgICAgICAgbXkgKCRh
ZGRyZXNzKSA9ICgkbGluZSA9fiAvTGVhazogKFtbOnhkaWdpdDpdeF0rKS8pOworICAgICAgICAg
ICAgaWYgKCFkZWZpbmVkKCRhZGRyZXNzKSkgeworICAgICAgICAgICAgICAgIGNyb2FrICJDb3Vs
ZCBub3QgcGFyc2UgTGVhayBhZGRyZXNzLiI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IG15ICgkc2l6ZSkgPSAoJGxpbmUgPX4gL3NpemU9KFtbOmRpZ2l0Ol1dKykvKTsKKyAgICAgICAg
ICAgIGlmICghZGVmaW5lZCgkc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICBjcm9hayAiQ291bGQg
bm90IHBhcnNlIExlYWsgc2l6ZS4iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIEZJ
WE1FOiBUaGlzIGNvZGUgc2VlbXMgd3JvbmcsIHRoZSBsZWFrcyB0b29sIGRvZXNuJ3QgYWN0dWFs
bHkgdXNlIHNpbmdsZSBxdW90ZXMuCisgICAgICAgICAgICAjIFdlIHNob3VsZCByZWNvbmNpbGUg
d2l0aCBvdGhlciBmb3JtYXQgY2hhbmdlcyB0aGF0IGhhcHBlbmVkIHNpbmNlLCBzdWNoIGFzIHRo
ZQorICAgICAgICAgICAgIyBhZGRpdGlvbiBvZiB6b25lIGluZm9ybWF0aW9uLgorICAgICAgICAg
ICAgbXkgKCR0eXBlKSA9ICgkbGluZSA9fiAvJyhbXiddKyknLyk7ICMnCisgICAgICAgICAgICBp
ZiAoIWRlZmluZWQoJHR5cGUpKSB7CisgICAgICAgICAgICAgICAgJHR5cGUgPSAiIjsgIyBUaGUg
bGVha3MgdG9vbCBzb21ldGltZXMgb21pdHMgdGhlIHR5cGUuCisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIG15ICVsZWFrID0gKAorICAgICAgICAgICAgICAgICJhZGRyZXNzIiA9PiAkYWRk
cmVzcywKKyAgICAgICAgICAgICAgICAic2l6ZSIgPT4gJHNpemUsCisgICAgICAgICAgICAgICAg
InR5cGUiID0+ICR0eXBlLAorICAgICAgICAgICAgICAgICJjYWxsU3RhY2siID0+ICIiLCAjIFRo
ZSBsZWFrcyB0b29sIHNvbWV0aW1lcyBvbWl0cyB0aGUgY2FsbCBzdGFjay4KKyAgICAgICAgICAg
ICAgICAibGVha3NPdXRwdXQiID0+ICRsaW5lCisgICAgICAgICAgICApOworICAgICAgICAgICAg
cHVzaChAcGFyc2VkT3V0cHV0LCBcJWxlYWspOworICAgICAgICB9IGVsc2lmICgkcGFyc2luZ0xl
YWspIHsKKyAgICAgICAgICAgICRwYXJzZWRPdXRwdXRbJCNwYXJzZWRPdXRwdXRdLT57ImxlYWtz
T3V0cHV0In0gLj0gJGxpbmU7CisgICAgICAgICAgICBpZiAoJGxpbmUgPX4gL0NhbGwgc3RhY2s6
LykgeworICAgICAgICAgICAgICAgICRwYXJzZWRPdXRwdXRbJCNwYXJzZWRPdXRwdXRdLT57ImNh
bGxTdGFjayJ9ID0gJGxpbmU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBteSAlbm9uTGVha0xpbmUgPSAoCisgICAgICAgICAgICAgICAgImxlYWtzT3V0cHV0
IiA9PiAkbGluZQorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHB1c2goQHBhcnNlZE91dHB1
dCwgXCVub25MZWFrTGluZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoJHBhcnNlZExl
YWtDb3VudCAhPSAkbGVha0NvdW50KSB7CisgICAgICAgIGNyb2FrICJQYXJzZWQgbGVhayBjb3Vu
dCAoJHBhcnNlZExlYWtDb3VudCkgZG9lcyBub3QgbWF0Y2ggbGVhayBjb3VudCByZXBvcnRlZCBi
eSBsZWFrcyB0b29sICgkbGVha0NvdW50KS4iOworICAgIH0KKworICAgIHJldHVybiBcQHBhcnNl
ZE91dHB1dDsKK30KKworMTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9w
cmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9leHRyYWN0TGluZVJhbmdlQmVmb3JlQW5kQWZ0ZXJD
aGFuZ2UucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5p
dHRlc3QvZXh0cmFjdExpbmVSYW5nZUJlZm9yZUFuZEFmdGVyQ2hhbmdlLnBsCmluZGV4IGE3OTJl
M2IyMTk2OS4uODY4M2I0OGIyMTAxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZXh0cmFjdExpbmVSYW5nZUJlZm9yZUFuZEFm
dGVyQ2hhbmdlLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5n
ZUxvZ191bml0dGVzdC9leHRyYWN0TGluZVJhbmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2UucGwKQEAg
LTI3LDggKzI3LDExIEBAIHVzZSB3YXJuaW5nczsKIAogdXNlIFRlc3Q6Ok1vcmU7CiB1c2UgRmlu
ZEJpbjsKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwot
dXNlIExvYWRBc01vZHVsZSBxdyhQcmVwYXJlQ2hhbmdlTG9nIHByZXBhcmUtQ2hhbmdlTG9nKTsK
K3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIsICIuLiIpOwor
dXNlIHdlYmtpdHBlcmw6OmNoYW5nZWxvZyBxdygKKyAgICBleHRyYWN0TGluZVJhbmdlQmVmb3Jl
Q2hhbmdlCisgICAgZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlCispOwogCiBteSBAdGVzdENh
c2VIYXNoUmVmcyA9ICgKICMjIyMKQEAgLTE5NywxMCArMjAwLDEwIEBAIGZvcmVhY2ggbXkgJHRl
c3RDYXNlIChAdGVzdENhc2VIYXNoUmVmcykgewogICAgIG15ICRleHBlY3RlZFJlc3VsdHMgPSAk
dGVzdENhc2UtPntleHBlY3RlZFJlc3VsdHN9OwogCiAgICAgbXkgJHRlc3ROYW1lU3RhcnQgPSAi
ZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgpOiAkdGVzdENhc2UtPnt0ZXN0TmFtZX06IGNv
bXBhcmluZyI7Ci0gICAgbXkgQGdvdCA9IFByZXBhcmVDaGFuZ2VMb2c6OmV4dHJhY3RMaW5lUmFu
Z2VCZWZvcmVDaGFuZ2UoJHRlc3RDYXNlLT57aW5wdXRUZXh0fSk7CisgICAgbXkgQGdvdCA9IGV4
dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UoJHRlc3RDYXNlLT57aW5wdXRUZXh0fSk7CiAgICAg
aXNfZGVlcGx5KFxAZ290LCAkZXhwZWN0ZWRSZXN1bHRzLT57YmVmb3JlQ2hhbmdlfSwgIiR0ZXN0
TmFtZVN0YXJ0IHJldHVybiB2YWx1ZS4iKTsKIAogICAgICR0ZXN0TmFtZVN0YXJ0ID0gImV4dHJh
Y3RMaW5lUmFuZ2VBZnRlckNoYW5nZSgpOiAkdGVzdENhc2UtPnt0ZXN0TmFtZX06IGNvbXBhcmlu
ZyI7Ci0gICAgQGdvdCA9IFByZXBhcmVDaGFuZ2VMb2c6OmV4dHJhY3RMaW5lUmFuZ2VBZnRlckNo
YW5nZSgkdGVzdENhc2UtPntpbnB1dFRleHR9KTsKKyAgICBAZ290ID0gZXh0cmFjdExpbmVSYW5n
ZUFmdGVyQ2hhbmdlKCR0ZXN0Q2FzZS0+e2lucHV0VGV4dH0pOwogICAgIGlzX2RlZXBseShcQGdv
dCwgJGV4cGVjdGVkUmVzdWx0cy0+e2FmdGVyQ2hhbmdlfSwgIiR0ZXN0TmFtZVN0YXJ0IHJldHVy
biB2YWx1ZS4iKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVw
YXJlLUNoYW5nZUxvZ191bml0dGVzdC9mZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEucGwgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZmV0Y2hS
YWRhclVSTEZyb21CdWdYTUxEYXRhLnBsCmluZGV4IGZhNDExZjIxMGFiYy4uM2M3NDMxY2U4NjYx
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2df
dW5pdHRlc3QvZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxEYXRhLnBsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9mZXRjaFJhZGFyVVJMRnJv
bUJ1Z1hNTERhdGEucGwKQEAgLTI3LDggKzI3LDggQEAgdXNlIHdhcm5pbmdzOwogCiB1c2UgVGVz
dDo6TW9yZTsKIHVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRC
aW46OkJpbiwgIi4uIik7Ci11c2UgTG9hZEFzTW9kdWxlIHF3KFByZXBhcmVDaGFuZ2VMb2cgcHJl
cGFyZS1DaGFuZ2VMb2cpOwordXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJp
biwgIi4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVybDo6Y2hhbmdlbG9nIHF3KGZldGNoUmFkYXJV
UkxGcm9tQnVnWE1MRGF0YSk7CiAKICMgTk9URTogQSBCdWd6aWxsYSBDb21tZW50IFhNTCBsb29r
cyBsaWtlOgogIwpAQCAtMTU2LDYgKzE1Niw2IEBAIHBsYW4odGVzdHMgPT4gJHRlc3RDYXNlc0Nv
dW50KTsKIAogZm9yZWFjaCBteSAkdGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hSZWZzKSB7CiAgICAg
bXkgJGV4cGVjdGVkID0gJHRlc3RDYXNlLT57ZXhwZWN0ZWR9OwotICAgIG15ICRnb3QgPSBQcmVw
YXJlQ2hhbmdlTG9nOjpmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEoMTUyODM5LCAkdGVzdENh
c2UtPntpbnB1dFRleHR9KTsKKyAgICBteSAkZ290ID0gZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxE
YXRhKDE1MjgzOSwgJHRlc3RDYXNlLT57aW5wdXRUZXh0fSk7CiAgICAgaXMoJGdvdCwgJGV4cGVj
dGVkLCAkdGVzdENhc2UtPnt0ZXN0TmFtZX0pOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2ZpbGVuYW1lV2l0aFBhcmVu
dGhlc2VzLnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3Vu
aXR0ZXN0L2ZpbGVuYW1lV2l0aFBhcmVudGhlc2VzLnBsCmluZGV4IDlkYjhmODlmYTIyMC4uODEy
MGVjMDdiZWJmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1D
aGFuZ2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2ZpbGVuYW1lV2l0
aFBhcmVudGhlc2VzLnBsCkBAIC0zMCwxMSArMzAsMTAgQEAgdXNlIHdhcm5pbmdzOwogdXNlIEZp
bGU6OlRlbXA7CiB1c2UgRmluZEJpbjsKIHVzZSBUZXN0OjpNb3JlOwordXNlIGxpYiBGaWxlOjpT
cGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVybDo6
Y2hhbmdlbG9nIHF3KGF0dHJpYnV0ZUNvbW1hbmQpOwogdXNlIFZDU1V0aWxzOwogCi11c2UgbGli
IEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKLXVzZSBMb2FkQXNNb2R1
bGUgcXcoUHJlcGFyZUNoYW5nZUxvZyBwcmVwYXJlLUNoYW5nZUxvZyk7Ci0KIHBsYW4odGVzdHMg
PT4gMSk7CiAKIHN1YiB3cml0ZUZpbGVXaXRoQ29udGVudCgkJCkKQEAgLTU0LDcgKzUzLDcgQEAg
d3JpdGVGaWxlV2l0aENvbnRlbnQoRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkdGVtcG9yYXJ5RGlyZWN0
b3J5LCAiLmdpdGF0dHJpYnV0ZXMiKSwKIG15ICRhdHRyaWJ1dGVDYWNoZSA9IHt9OwogbXkgJHJl
c3VsdCA9IDA7CiBjaGRpciAkdGVtcG9yYXJ5RGlyZWN0b3J5OwotJHJlc3VsdCA9IFByZXBhcmVD
aGFuZ2VMb2c6OmF0dHJpYnV0ZUNvbW1hbmQoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZW5hbWUsICJm
b28iKTsKKyRyZXN1bHQgPSBhdHRyaWJ1dGVDb21tYW5kKCRhdHRyaWJ1dGVDYWNoZSwgJGZpbGVu
YW1lLCAiZm9vIik7CiBjaGRpciAnLi4nOwogCiBpcygkcmVzdWx0LCAxLCAiU2hvdWxkIHN1Y2Nl
c3NmdWxseSBnZXQgZm9vIGF0dHJpYnV0ZSBmcm9tIGZpbGUgd2l0aCBwYXJlbnRoZXNlcyBpbiBu
YW1lLiIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hh
bmdlTG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rpb25MaXN0cy5wbCBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9nZW5lcmF0ZUZ1bmN0aW9uTGlz
dHMucGwKaW5kZXggNWU1NTkzNzI1M2M0Li5kOGRjYTIxNmI0MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9nZW5lcmF0ZUZ1
bmN0aW9uTGlzdHMucGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hh
bmdlTG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rpb25MaXN0cy5wbApAQCAtMjgsMTEgKzI4LDEw
IEBAIHVzZSB3YXJuaW5nczsKIHVzZSBGaWxlOjpUZW1wOwogdXNlIEZpbmRCaW47CiB1c2UgVGVz
dDo6TW9yZTsKK3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIs
ICIuLiIpOwordXNlIHdlYmtpdHBlcmw6OmNoYW5nZWxvZyBxdyhhY3R1YWxseUdlbmVyYXRlRnVu
Y3Rpb25MaXN0cyk7CiB1c2UgVkNTVXRpbHM7CiAKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGly
KCRGaW5kQmluOjpCaW4sICIuLiIpOwotdXNlIExvYWRBc01vZHVsZSBxdyhQcmVwYXJlQ2hhbmdl
TG9nIHByZXBhcmUtQ2hhbmdlTG9nKTsKLQogbXkgJEVYQU1QTEVfQ1BQID0gPDxFT0Y7CiAjaW5j
bHVkZSA8Y2Fzc2VydD4KICNpbmNsdWRlIDxjbWF0aD4KQEAgLTUzNiw3ICs1MzUsNyBAQCBmb3Jl
YWNoIG15ICR0ZXN0Q2FzZSAoQHRlc3RDYXNlSGFzaFJlZnMpIHsKICAgICApOwogICAgIG15ICVm
dW5jdGlvbkxpc3RzOwogICAgIGRpc2NhcmRPdXRwdXQoc3ViIHsKLSAgICAgICAgUHJlcGFyZUNo
YW5nZUxvZzo6YWN0dWFsbHlHZW5lcmF0ZUZ1bmN0aW9uTGlzdHMoWyRmaWxlbmFtZV0sIFwlZnVu
Y3Rpb25MaXN0cywgdW5kZWYsIHVuZGVmLCB1bmRlZiwgXCVkZWxlZ2F0ZUhhc2gpOworICAgICAg
ICBhY3R1YWxseUdlbmVyYXRlRnVuY3Rpb25MaXN0cyhbJGZpbGVuYW1lXSwgXCVmdW5jdGlvbkxp
c3RzLCB1bmRlZiwgdW5kZWYsIHVuZGVmLCBcJWRlbGVnYXRlSGFzaCk7CiAgICAgfSk7CiAgICAg
Y2hvbXAobXkgJGV4cGVjdGVkID0gJHRlc3RDYXNlLT57ZXhwZWN0ZWR9KTsKICAgICBpcygkZnVu
Y3Rpb25MaXN0c3skZmlsZW5hbWV9LCAkZXhwZWN0ZWQsICR0ZXN0Q2FzZS0+e3Rlc3ROYW1lfSk7
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2df
dW5pdHRlc3QvcGFyc2VyX3VuaXR0ZXN0cy5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9w
cmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9wYXJzZXJfdW5pdHRlc3RzLnBsCmluZGV4IDcxNTdm
ZmVkZWVkYy4uZWZlMmFkMGQyOTQ5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBl
cmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvcGFyc2VyX3VuaXR0ZXN0cy5wbAorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvcGFyc2Vy
X3VuaXR0ZXN0cy5wbApAQCAtMzEsMTEgKzMxLDIwIEBAIHVzZSBGaWxlOjpUZW1wIHF3KHRlbXBm
aWxlKTsKIHVzZSBGaW5kQmluOwogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBUZXN0OjpNb3JlOwot
dXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7Ci11c2UgTG9h
ZEFzTW9kdWxlIHF3KFByZXBhcmVDaGFuZ2VMb2cgcHJlcGFyZS1DaGFuZ2VMb2cpOwordXNlIGxp
YiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7Cit1c2UgVkNT
VXRpbHM7Cit1c2Ugd2Via2l0cGVybDo6Y2hhbmdlbG9nIHF3KAorICAgIGdldF9mdW5jdGlvbl9s
aW5lX3Jhbmdlc19mb3JfY3BwCisgICAgZ2V0X3NlbGVjdG9yX2xpbmVfcmFuZ2VzX2Zvcl9jc3MK
KyAgICBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmEKKyAgICBnZXRfZnVuY3Rpb25f
bGluZV9yYW5nZXNfZm9yX2phdmFzY3JpcHQKKyAgICBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNf
Zm9yX3BlcmwKKyAgICBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhvbgorICAgIGdl
dF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jfc3dpZnQKKyk7Cit1c2Ugd2Via2l0cGVybDo6ZGly
czsKIAogc3ViIGNhcHR1cmVPdXRwdXQoJCk7Ci1zdWIgY29udmVydEFic29sdXRlUGF0aFRvUmVs
YXRpdmVVbml4UGF0aCgkJCk7CiBzdWIgcmVhZFRlc3RGaWxlcygkKTsKIAogdXNlIGNvbnN0YW50
IEVYUEVDVEVEX1JFU1VMVFNfU1VGRklYID0+ICItZXhwZWN0ZWQudHh0IjsKQEAgLTY5LDcgKzc4
LDcgQEAgZm9yZWFjaCBteSAkdGVzdEZpbGUgKHNvcnQgQHRlc3RGaWxlcykgewogcGxhbih0ZXN0
cyA9PiBzY2FsYXIgQHRlc3RTZXQpOwogZm9yZWFjaCBteSAkdGVzdCAoQHRlc3RTZXQpIHsKICAg
ICBvcGVuIEZILCAiPCAkdGVzdC0+e2lucHV0RmlsZX0iIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHRl
c3QtPntpbnB1dEZpbGV9OiAkISI7Ci0gICAgbXkgJHBhcnNlciA9IGV2YWwgIlxcJlByZXBhcmVD
aGFuZ2VMb2c6OiR0ZXN0LT57bWV0aG9kfSI7CisgICAgbXkgJHBhcnNlciA9IGV2YWwgIlxcJiR0
ZXN0LT57bWV0aG9kfSI7CiAgICAgbXkgQHJhbmdlczsKICAgICBteSAoJHN0ZG91dCwgJHN0ZGVy
cikgPSBjYXB0dXJlT3V0cHV0KHN1YiB7IEByYW5nZXMgPSAkcGFyc2VyLT4oXCpGSCwgJHRlc3Qt
PntpbnB1dEZpbGV9KTsgfSk7CiAgICAgY2xvc2UgRkg7CkBAIC0xMzAsMTEgKzEzOSwxMCBAQCBz
dWIgY2FwdHVyZU91dHB1dCgkKQogICAgIHJldHVybiAoJHN0ZG91dCwgJHN0ZGVycik7CiB9CiAK
LXN1YiBjb252ZXJ0QWJzb2x1dGVQYXRoVG9SZWxhdGl2ZVVuaXhQYXRoKCQkKQoteworc3ViIGNv
bnZlcnRBYnNvbHV0ZVBhdGhUb1JlbGF0aXZlVW5peFBhdGggewogICAgIG15ICgkc3RyaW5nLCAk
cGF0aCkgPSBAXzsKLSAgICBteSAkc291cmNlRGlyID0gTG9hZEFzTW9kdWxlOjp1bml4UGF0aChM
b2FkQXNNb2R1bGU6OnNvdXJjZURpcigpKTsKLSAgICBteSAkcmVsYXRpdmVVbml4UGF0aCA9IExv
YWRBc01vZHVsZTo6dW5peFBhdGgoJHBhdGgpOworICAgIG15ICRzb3VyY2VEaXIgPSB1bml4UGF0
aChzb3VyY2VEaXIoKSk7CisgICAgbXkgJHJlbGF0aXZlVW5peFBhdGggPSB1bml4UGF0aCgkcGF0
aCk7CiAgICAgJHNvdXJjZURpciAuPSAiLyIgdW5sZXNzICRzb3VyY2VEaXIgPX4gbS0vJC07CiAg
ICAgbXkgJHF1b3RlZFNvdXJjZURpciA9IHF1b3RlbWV0YSgkc291cmNlRGlyKTsKICAgICAkcmVs
YXRpdmVVbml4UGF0aCAgPX4gcy8kcXVvdGVkU291cmNlRGlyLy87CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQt
djEuMC5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVu
LWxlYWtzLXJlcG9ydC12MS4wLnBsCmluZGV4IDNmM2Y1ZTgzZDFjNy4uMmFkODhlYzgyMjk2IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1
bi1sZWFrcy1yZXBvcnQtdjEuMC5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVu
LWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjEuMC5wbApAQCAtMjksOSArMjksOSBA
QCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBGaWxlOjpTcGVjOwogdXNlIEZpbmRCaW47Ci11c2UgbGli
IEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKK3VzZSBsaWIgRmlsZTo6
U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIsICIuLiIpOwogdXNlIFRlc3Q6Ok1vcmU7
Ci11c2UgTG9hZEFzTW9kdWxlIHF3KFJ1bkxlYWtzIHJ1bi1sZWFrcyk7Cit1c2Ugd2Via2l0cGVy
bDo6bGVha3MgcXcocGFyc2VMZWFrc091dHB1dCk7CiAKIG15IEBpbnB1dCA9IHNwbGl0KC9cbi8s
IDw8RU9GKTsKIFByb2Nlc3MgMTYwMjogODY2NzEgbm9kZXMgbWFsbG9jZWQgZm9yIDEzMjYxIEtC
CkBAIC0xNjIsNyArMTYyLDcgQEAgRU9GCiAgIH0sCiBdOwogCi1teSAkYWN0dWFsT3V0cHV0ID0g
UnVuTGVha3M6OnBhcnNlTGVha3NPdXRwdXQoQGlucHV0KTsKK215ICRhY3R1YWxPdXRwdXQgPSBw
YXJzZUxlYWtzT3V0cHV0KEBpbnB1dCk7CiAKIHBsYW4odGVzdHMgPT4gMSk7CiBpc19kZWVwbHko
JGFjdHVhbE91dHB1dCwgJGV4cGVjdGVkT3V0cHV0LCAibGVha3MgUmVwb3J0IFZlcnNpb24gMS4w
IC0gbm8gY2FsbCBzdGFjayIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJs
L3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYyLjAtbmV3LnBsIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYy
LjAtbmV3LnBsCmluZGV4IDA2YmM1OGQwZTA5Yy4uYTM4MTdlNjgwOTkyIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBv
cnQtdjIuMC1uZXcucGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191
bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYyLjAtbmV3LnBsCkBAIC0zMCw5ICszMCw5IEBAIHVz
ZSB3YXJuaW5nczsKIAogdXNlIEZpbGU6OlNwZWM7CiB1c2UgRmluZEJpbjsKLXVzZSBsaWIgRmls
ZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIpOwordXNlIGxpYiBGaWxlOjpTcGVj
LT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7CiB1c2UgVGVzdDo6TW9yZTsKLXVz
ZSBMb2FkQXNNb2R1bGUgcXcoUnVuTGVha3MgcnVuLWxlYWtzKTsKK3VzZSB3ZWJraXRwZXJsOjps
ZWFrcyBxdyhwYXJzZUxlYWtzT3V0cHV0KTsKIAogbXkgQGlucHV0ID0gc3BsaXQoL1xuLywgPDxF
T0YpOwogUHJvY2VzczogICAgICAgICBEdW1wUmVuZGVyVHJlZSBbMjk5MDNdCkBAIC0xNjgsNyAr
MTY4LDcgQEAgRU9GCiAgIH0sCiBdOwogCi1teSAkYWN0dWFsT3V0cHV0ID0gUnVuTGVha3M6OnBh
cnNlTGVha3NPdXRwdXQoQGlucHV0KTsKK215ICRhY3R1YWxPdXRwdXQgPSBwYXJzZUxlYWtzT3V0
cHV0KEBpbnB1dCk7CiAKIHBsYW4odGVzdHMgPT4gMSk7CiBpc19kZWVwbHkoJGFjdHVhbE91dHB1
dCwgJGV4cGVjdGVkT3V0cHV0LCAibGVha3MgUmVwb3J0IFZlcnNpb24gMi4wIChuZXcpIik7CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1
bi1sZWFrcy1yZXBvcnQtdjIuMC1vbGQucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVu
LWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1vbGQucGwKaW5kZXggNjZmOWFk
MzU2MzFlLi4yMDJkYzMxZDRkMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVy
bC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbAorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBv
cnQtdjIuMC1vbGQucGwKQEAgLTMwLDkgKzMwLDkgQEAgdXNlIHdhcm5pbmdzOwogCiB1c2UgRmls
ZTo6U3BlYzsKIHVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRC
aW46OkJpbiwgIi4uIik7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6Qmlu
LCAiLi4iLCAiLi4iKTsKIHVzZSBUZXN0OjpNb3JlOwotdXNlIExvYWRBc01vZHVsZSBxdyhSdW5M
ZWFrcyBydW4tbGVha3MpOwordXNlIHdlYmtpdHBlcmw6OmxlYWtzIHF3KHBhcnNlTGVha3NPdXRw
dXQpOwogCiBteSBAaW5wdXQgPSBzcGxpdCgvXG4vLCA8PEVPRik7CiBsZWFrcyBSZXBvcnQgVmVy
c2lvbjogIDIuMApAQCAtMTE4LDcgKzExOCw3IEBAIEVPRgogICB9LAogXTsKIAotbXkgJGFjdHVh
bE91dHB1dCA9IFJ1bkxlYWtzOjpwYXJzZUxlYWtzT3V0cHV0KEBpbnB1dCk7CitteSAkYWN0dWFs
T3V0cHV0ID0gcGFyc2VMZWFrc091dHB1dChAaW5wdXQpOwogCiBwbGFuKHRlc3RzID0+IDEpOwog
aXNfZGVlcGx5KCRhY3R1YWxPdXRwdXQsICRleHBlY3RlZE91dHB1dCwgImxlYWtzIFJlcG9ydCBW
ZXJzaW9uIDIuMCAob2xkKSIpOwo=
</data>
<flag name="commit-queue"
          id="465930"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>441622</attachid>
            <date>2021-10-18 10:30:06 -0700</date>
            <delta_ts>2021-10-18 14:17:10 -0700</delta_ts>
            <desc>Fix</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>162046</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMWQ2
ZmJjMGFiYTcuLjYxOGQwZDUxMTFiMiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMyBAQAorMjAyMS0xMC0xNyAgQmFzdWtlIFN1
enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CisKKyAgICAgICAgW3dlYmtpdHBlcmxdIFN0
b3AgdXNpbmcgTG9hZEFzTW9kdWxlLnBtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzE4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIG1vZHVsZSBsb2FkIGEgc2NyaXB0IGZpbGUgYXMgbW9kdWxl
IHdpdGggYSBiaXQgdHJpY2t5IHdheS4gSXQgcHJldmVudHMgdGhlIHByb3BlcgorICAgICAgICB1
c2FnZSBvZiBwYWNrYWdlIGFmdGVyIGFsbC4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtb2R1bGUgaXMg
dG8gdGVzdCByb3V0aW5lcyBkZWZpbmVkIGluIHRoZQorICAgICAgICBzY3JpcHQuIEl0IGp1c3Qg
YmUgd3Jvbmcgd2l0aCBzdWNoIHdheS4gSWYgeW91IGhhdmUgc29tZXRoaW5nIHRvIHRlc3QsIGl0
IHNob3VsZCBiZSBzZXBhcmF0ZWQKKyAgICAgICAgYXMgYSBtb2R1bGUgYW5kIGJlIGltcG9ydGVk
IHRvIHRoZSBzY3JpcHQuIFRoZW4gdW5pdCB0ZXN0IGNhbiBsb2FkIHRoZSBtb2R1bGUgYW5kIGNh
biB0ZXN0CisgICAgICAgIHdpdGhvdXQgYW55IHNvcnQgb2YgdHJvdWJsZS4KKworICAgICAgICAq
IFNjcmlwdHMvZmlsdGVyLWJ1aWxkLXdlYmtpdDoKKyAgICAgICAgKHNldE91dHB1dEZvcm1hdE9w
dGlvbik6CisgICAgICAgIChzaG91bGRTaG93U3Vic2VxdWVudExpbmUpOiBNb3ZlZCB0byB3ZWJr
aXRwZXJsL2J1aWxkL291dHB1dC5wbS4KKyAgICAgICAgKHNob3VsZElnbm9yZUxpbmUpOiBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3ByZXBhcmUtQ2hhbmdlTG9nOgorICAgICAgICAoZ2VuZXJh
dGVGdW5jdGlvbkxpc3RzKToKKyAgICAgICAgKGZldGNoQnVnWE1MRGF0YSk6CisgICAgICAgIChv
cGVuQ2hhbmdlTG9ncyk6CisgICAgICAgIChtZXRob2RfZGVjbF90b19zZWxlY3Rvcik6CisgICAg
ICAgIChkaWZmQ29tbWFuZCk6CisgICAgICAgIChzdGF0dXNDb21tYW5kKToKKyAgICAgICAgKHBy
b3BlcnR5Q2hhbmdlRGVzY3JpcHRpb24pOgorICAgICAgICAobm9ybWFsaXplTGluZUVuZGluZ3Mp
OgorICAgICAgICAoYWN0dWFsbHlHZW5lcmF0ZUZ1bmN0aW9uTGlzdHMpOiBNb3ZlZCB0byB3ZWJr
aXRwZXJsL2NoYW5nZWxvZy4KKyAgICAgICAgKGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucyk6IERp
dHRvLgorICAgICAgICAoZmV0Y2hCdWdEZXNjcmlwdGlvbkZyb21CdWdYTUxEYXRhKTogRGl0dG8u
CisgICAgICAgIChmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEpOiBEaXR0by4KKyAgICAgICAg
KGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcyk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9u
X2xpbmVfcmFuZ2VzX2Zvcl9jcHApOiBEaXR0by4KKyAgICAgICAgKGRlbGV0ZV9uYW1lc3BhY2Vz
X2Zyb21fcmFuZ2VzX2Zvcl9jcHApOiBEaXR0by4KKyAgICAgICAgKGlzX2Z1bmN0aW9uX2luX25h
bWVzcGFjZSk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9q
YXZhKTogRGl0dG8uCisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmFz
Y3JpcHQpOiBEaXR0by4KKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVy
bCk6IERpdHRvLgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9weXRob24p
OiBEaXR0by4KKyAgICAgICAgKGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKTogRGl0
dG8uCisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3N3aWZ0KTogRGl0dG8u
CisgICAgICAgIChwYXJzZVN3aWZ0RnVuY3Rpb25BcmdzKTogRGl0dG8uCisgICAgICAgIChhdHRy
aWJ1dGVDb21tYW5kKTogRGl0dG8uCisgICAgICAgIChleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFu
Z2UpOiBEaXR0by4KKyAgICAgICAgKGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UpOiBEaXR0
by4KKyAgICAgICAgKGRlY29kZUVudGl0aWVzKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9y
dW4tbGVha3M6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKHJlbW92ZU1hdGNoaW5nUmVjb3Jk
cyk6CisgICAgICAgIChydW5MZWFrcyk6IE1vdmVkIHRvIHdlYmtpdHBlcmwvbGVha3MucG0uCisg
ICAgICAgIChwYXJzZUxlYWtzT3V0cHV0KTogRGl0dG8uCisgICAgICAgIChyZXBvcnRFcnJvcik6
IERlbGV0ZWQuIFVzZSBDYXJwOjpjcm9hayBpbnN0ZWFkLgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0ZGlycy5wbToKKyAgICAgICAgKGRldGVybWluZUJhc2VQcm9kdWN0RGlyKToKKyAgICAgICAg
KGRldGVybWluZUN1cnJlbnRTVk5SZXZpc2lvbik6CisgICAgICAgIChjaGRpcldlYktpdCk6Cisg
ICAgICAgIChkZXRlcm1pbmVTb3VyY2VEaXIpOiBNb3ZlZCB0byB3ZWJraXRwZXJsL2RpcnMucG0u
CisgICAgICAgIChzZXRTb3VyY2VEaXIpOiBEaXR0by4KKyAgICAgICAgKHNvdXJjZURpcik6IERp
dHRvLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG06IFJlbW92
ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2J1aWxkL291dHB1dC5wbTogRXh0cmFj
dGVkIGZyb20gVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0LgorICAgICAgICAoc2hv
dWxkU2hvd1N1YnNlcXVlbnRMaW5lKToKKyAgICAgICAgKHNob3VsZElnbm9yZUxpbmUpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9jaGFuZ2Vsb2cucG06IEV4dHJhY3RlZCBmcm9tIFRv
b2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cuCisgICAgICAgIChhY3R1YWxseUdlbmVyYXRl
RnVuY3Rpb25MaXN0cyk6CisgICAgICAgIChleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UpOgor
ICAgICAgICAoZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSk6CisgICAgICAgIChhdHRyaWJ1
dGVDb21tYW5kKToKKyAgICAgICAgKGZldGNoQnVnRGVzY3JpcHRpb25Gcm9tQnVnWE1MRGF0YSk6
CisgICAgICAgIChmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEpOgorICAgICAgICAoY29tcHV0
ZU1vZGlmaWVkRnVuY3Rpb25zKToKKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcyk6
CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2NwcCk6CisgICAgICAgIChk
ZWxldGVfbmFtZXNwYWNlc19mcm9tX3Jhbmdlc19mb3JfY3BwKToKKyAgICAgICAgKGlzX2Z1bmN0
aW9uX2luX25hbWVzcGFjZSk6CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9y
X2phdmEpOgorICAgICAgICAoZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0
KToKKyAgICAgICAgKGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybCk6CisgICAgICAg
IChnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhvbik6CisgICAgICAgIChnZXRfc2Vs
ZWN0b3JfbGluZV9yYW5nZXNfZm9yX2Nzcyk6CisgICAgICAgIChnZXRfZnVuY3Rpb25fbGluZV9y
YW5nZXNfZm9yX3N3aWZ0KToKKyAgICAgICAgKHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3MpOgorICAg
ICAgICAoZGVjb2RlRW50aXRpZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9kaXJz
LnBtOiBFeHRyYWN0ZWQgZnJvbSBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMuCisgICAgICAgIChz
b3VyY2VEaXIpOgorICAgICAgICAoc2V0U291cmNlRGlyKToKKyAgICAgICAgKGRldGVybWluZVNv
dXJjZURpcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL2ZpbHRlci1idWlsZC13ZWJr
aXRfdW5pdHRlc3Qvc2hvdWxkSWdub3JlTGluZV91bml0dGVzdHMucGw6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL2xlYWtzLnBtOiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3J1bi1s
ZWFrcy4KKyAgICAgICAgKHJ1bkxlYWtzKToKKyAgICAgICAgKHBhcnNlTGVha3NPdXRwdXQpOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9l
eHRyYWN0TGluZVJhbmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2UucGw6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2ZldGNoUmFkYXJVUkxGcm9t
QnVnWE1MRGF0YS5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFu
Z2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGw6CisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rp
b25MaXN0cy5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VM
b2dfdW5pdHRlc3QvcGFyc2VyX3VuaXR0ZXN0cy5wbDoKKyAgICAgICAgKGNvbnZlcnRBYnNvbHV0
ZVBhdGhUb1JlbGF0aXZlVW5peFBhdGgpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4w
LW5ldy5wbDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0
L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1vbGQucGw6CisKIDIwMjEtMTAtMTUgIEJKIEJ1cmcgIDxi
YnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBoYW5kbGUg
UHJvbWlzZSBvYmplY3RzIHJldHVybmVkIGZyb20gZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRh
YgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0IGIvVG9vbHMv
U2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0CmluZGV4IGZjMmE1YzRhOGViZi4uNTMwMzFkYjM0
MWJmIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2ZpbHRlci1idWlsZC13ZWJraXQKKysrIGIv
VG9vbHMvU2NyaXB0cy9maWx0ZXItYnVpbGQtd2Via2l0CkBAIC0zMyw2ICszMyw3IEBAIHVzZSBG
aW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIEdldG9wdDo6TG9uZzsKIHVzZSBW
Q1NVdGlsczsKK3VzZSB3ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0IHF3KHNob3VsZElnbm9yZUxp
bmUgJHBsYXRmb3JtKTsKIAogdXNlIGNvbnN0YW50IHsKICAgICBTVFlMRV9QTEFJTiA9PiAwLApA
QCAtNjYsNyArNjcsNiBAQCBIVE1MRk9PVEVSCiBzdWIgcHJpbnRMaW5lKCQkKTsKIHN1YiBzZXRM
b2dmaWxlT3B0aW9uKCQkKTsKIHN1YiBzZXRPdXRwdXRGb3JtYXRPcHRpb24oJCQpOwotc3ViIHNo
b3VsZElnbm9yZUxpbmUoJCQpOwogc3ViIHVzYWdlQW5kRXhpdCgpOwogCiAjIERlZmluZWQgaW4g
VkNTVXRpbHMuCkBAIC03NCw3ICs3NCw2IEBAIHN1YiBwb3NzaWJseUNvbG9yZWQoJCQpOwogCiAj
IEdsb2JhbCB2YXJpYWJsZXMgdXNlZCBvbmx5IGluIGdsb2JhbCBzY29wZS4KIG15ICRvdXRwdXRQ
YXRoID0gIiZTVERPVVQiOwotbXkgJHBsYXRmb3JtID0gIm1hYyI7CiBteSAkc2hvd0hlbHA7CiAK
ICMgR2xvYmFsIHZhcmlhYmxlcyB1c2VkIGluIGdsb2JhbCBhbmQgc3Vicm91dGluZSBzY29wZS4K
QEAgLTgyLDggKzgxLDYgQEAgb3VyICRsb2dVbmZpbHRlcmVkT3V0cHV0Owogb3VyICRvdXRwdXRG
b3JtYXQgPSAidGV4dCI7CiBvdXIgJHVuZmlsdGVyZWRPdXRwdXRQYXRoID0gImJ1aWxkLmxvZyI7
CiBvdXIgJHVzZUNvbG9yID0gLXQgU1RET1VUOwotb3VyICRpbkVudGl0bGVtZW50cyA9IDA7Ci1v
dXIgJGluRGV2aWNlUHJlcGFyYXRpb25XYXJuaW5ncyA9IDA7CiAKIHN1YiB1c2FnZUFuZEV4aXQo
KQogewpAQCAtMjc2LDEyNyArMjczLDMgQEAgc3ViIHNldE91dHB1dEZvcm1hdE9wdGlvbigkJCkK
ICAgICB9CiAgICAgJG91dHB1dEZvcm1hdCA9ICR2YWx1ZTsKIH0KLQotc3ViIHNob3VsZFNob3dT
dWJzZXF1ZW50TGluZSgkKQotewotICAgIG15ICgkbGluZSkgPSBAXzsKLQotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9yZWZlcmVuY2VkIGZyb206JC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gLyhub3RlOnxlcnJvcjopLzsKLQotICAgIHJldHVybiAwOwotfQotCi1zdWIgc2hvdWxkSWdu
b3JlTGluZSgkJCkKLXsKLSAgICBteSAoJHByZXZpb3VzTGluZSwgJGxpbmUpID0gQF87Ci0KLSAg
ICBpZiAoJGxpbmUgPX4gL15FbnRpdGxlbWVudHM6JC8pIHsKLSAgICAgICAgJGluRW50aXRsZW1l
bnRzID0gMTsKLSAgICAgICAgcmV0dXJuIDEKLSAgICB9Ci0KLSAgICBpZiAoJGluRW50aXRsZW1l
bnRzKSB7Ci0gICAgICAgICRpbkVudGl0bGVtZW50cyA9IDAgaWYgJGxpbmUgPX4gL159JC87Ci0g
ICAgICAgIHJldHVybiAxCi0gICAgfQotCi0gICAgIyBpUGhvbmUgcHJlcGFyYXRpb24gZXJyb3Jz
IGFsd2F5cyBzdGFydCBhbmQgZW5kIHdpdGggbGluZXMgY29udGFpbmluZyAnaVBob25lQ29ubmVj
dDonLgotICAgIGlmICgkaW5EZXZpY2VQcmVwYXJhdGlvbldhcm5pbmdzKSB7Ci0gICAgICAgICRp
bkRldmljZVByZXBhcmF0aW9uV2FybmluZ3MgPSAwIGlmICRsaW5lID1+IC89PSBFTkQ6IFVuZGVy
bHlpbmcgZGV2aWNlIHByZXBhcmF0aW9uIHdhcm5pbmdzID09LzsKLSAgICAgICAgcmV0dXJuIDEK
LSAgICB9Ci0KLSAgICBpZiAoJGxpbmUgPX4gL2lQaG9uZUNvbm5lY3Q6LykgewotICAgICAgICAk
aW5EZXZpY2VQcmVwYXJhdGlvbldhcm5pbmdzID0gMTsKLSAgICAgICAgcmV0dXJuIDEKLSAgICB9
Ci0KLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKiQvOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eQ29tbWFuZCBsaW5lIGludm9jYXRpb246LzsKLSAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXkJ1aWxkIHNldHRpbmdzIGZyb20gY29tbWFuZCBsaW5lOi87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15Vc2VyIGRlZmF1bHRzIGZyb20gY29tbWFuZCBsaW5lOi87Ci0gICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15QcmVwYXJlIGJ1aWxkLzsKLSAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXkJ1aWxkIHN5c3RlbSBpbmZvcm1hdGlvbi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15ub3RlOiBQbGFubmluZyBidWlsZC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15u
b3RlOiBDb25zdHJ1Y3RpbmcgYnVpbGQgZGVzY3JpcHRpb24vOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9ebm90ZTogQnVpbGQgZGVzY3JpcHRpb24gKGNvbnN0cnVjdGVkfGxvYWRlZCkgaW4g
LiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogVXNpbmcgYnVpbGQgZGVzY3Jp
cHRpb24gLiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogVXNpbmcgZWFnZXIg
Y29tcGlsYXRpb24vOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogRXhlY3V0aW9u
IHBvbGljeSBleGNlcHRpb24gcmVnaXN0cmF0aW9uIGZhaWxlZCBhbmQgd2FzIHNraXBwZWQ6IEVy
cm9yIERvbWFpbj1OU1BPU0lYRXJyb3JEb21haW4gQ29kZT0xICJPcGVyYXRpb24gbm90IHBlcm1p
dHRlZCIvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebm90ZTogZGV0ZWN0ZWQgZW5jb2Rp
bmcgb2YgaW5wdXQgZmlsZSBhcyBVbmljb2RlIFwoLipcKS87Ci0gICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL21ha2UoXFtcZCtcXSk/OiBOb3RoaW5nIHRvIGJlIGRvbmUgZm9yLzsKLSAgICByZXR1
cm4gMSBpZiAkbGluZSA9fiAvXkphdmFTY3JpcHRDb3JlXC9jcmVhdGVfaGFzaF90YWJsZS87Ci0g
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL0phdmFTY3JpcHRDb3JlLmZyYW1ld29ya1wvUHJpdmF0
ZUhlYWRlcnNcL2NyZWF0ZV9oYXNoX3RhYmxlLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
XkphdmFTY3JpcHRDb3JlXC9wY3JlXC9kZnRhYmxlcy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15DcmVhdGluZyBoYXNodGFibGUgZm9yIC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15Xcm90ZSBvdXRwdXQgdG8gLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVORE9DVU1F
TlRFRDogLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvbGlidG9vbC4qaGFzIG5vIHN5bWJv
bHMvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eIyBMb3dlciBjYXNlIGFsbCB0aGUgdmFs
dWVzLCBhcyBDU1MgdmFsdWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlJC87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL15pZiBzb3J0IC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3NldC13
ZWJraXQtY29uZmlndXJhdGlvbi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15idWlsZGlu
ZyBmaWxlIGxpc3QvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXC5cLyQvOwotICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eXFMrXC5oJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4g
L15cUytcLyQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ec2VudCBcZCsgYnl0ZXMvOwot
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9edG90YWwgc2l6ZSBpcy87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL09uZSBvZiB0aGUgdHdvIHdpbGwgYmUgdXNlZFwuIFdoaWNoIG9uZSBpcyB1
bmRlZmluZWRcLi87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL1RoZSBMZWdhY3kgQnVpbGQg
U3lzdGVtIHdpbGwgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLzsKLSAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvXlwoICh4Y29kZWJ1aWxkfGlmKSAvOwotICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9ed2FybmluZzogY2FuJ3QgZmluZCBhZGRpdGlvbmFsIFNESy87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL153YXJuaW5nOiBubyB1bWJyZWxsYSBoZWFkZXIgZm91bmQgZm9yIHRh
cmdldCAnLionLCBtb2R1bGUgbWFwIHdpbGwgbm90IGJlIGdlbmVyYXRlZCQvOwotICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ed2FybmluZ1w6IGRldGVjdGVkIGludGVybmFsIGluc3RhbGwsIHBh
c3NpbmcgZW50aXRsZW1lbnRzIHRvIHNpbXVsYXRvciBhbnl3YXlcLi87Ci0gICAgcmV0dXJuIDEg
aWYgJGxpbmUgPX4gL21heSBub3QgZnVuY3Rpb24gaW4gdGhlIFNpbXVsYXRvciBiZWNhdXNlIEFk
IEhvYy87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL1wvdXNyXC9iaW5cL2NsYW5nIC4qPyBc
PiBcUysuc2IvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8geGNvZGVidWlsZFxbWzAtOV0r
OlswLTlhLWZdK1xdXHMrRFZUQXNzZXJ0aW9uczogV2FybmluZyBpbiAuKi87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL14oRGV0YWlsc3xPYmplY3R8TWV0aG9kfEZ1bmN0aW9ufFRocmVhZCk6
LzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlBsZWFzZSBmaWxlIGEgYnVnIGF0IC87Ci0g
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL2NyZWF0ZWQgYnkgYW4gdW5zdXBwb3J0ZWQgWENEZXBl
bmRlbmN5R3JhcGggYnVpbGQkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvd2FybmluZzog
VGhlIGFzc2lnbm1lbnQgb2YgJy4qJyBhdCAiLioiIHVzZXMgXCRcKGluaGVyaXRlZFwpLiBJbiB0
aGUgbmV3IGJ1aWxkIHN5c3RlbSB0aGlzIHdpbGwgaW5oZXJpdCBmcm9tIGFuIGVhcmxpZXIgZGVm
aW5pdGlvbiBvZiAnLionIGluIHRoaXMgeGNjb25maWcgZmlsZSBvciBpdHMgaW1wb3J0czsgdGhl
IG9sZCBidWlsZCBzeXN0ZW0gd291bGQgZGlzY2FyZCBlYXJsaWVyIGRlZmluaXRpb25zLiBUaGlz
IG1heSByZXN1bHQgaW4gY2hhbmdlcyB0byByZXNvbHZlZCBidWlsZCBzZXR0aW5nIHZhbHVlcy4v
OwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8uKiBjb20uYXBwbGUuYWN0b29sLmNvbXBpbGF0
aW9uLXJlc3VsdHMgLiovOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8uKlwvQXNzZXRzLmNh
ci87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLy4qXC9hc3NldGNhdGFsb2dfZ2VuZXJhdGVk
X2luZm8ucGxpc3QvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ebW91bnQ6IC4rIGZhaWxl
ZCB3aXRoLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVzaW5nIC4rIHByb2R1Y3Rpb24g
ZW52aXJvbm1lbnQuJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3JlcGxhY2luZyBleGlz
dGluZyBzaWduYXR1cmUkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlVubG9ja2luZyAn
LipcLmtleWNoYWluLWRiJyQvOwotICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXGQrIGxvY2Fs
aXphYmxlIHN0cmluZ3MkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxkKyBwbHVyYWwg
cnVsZXMkLzsKLSAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlRoZSBsaXN0IG9mIGV4cG9ydGVk
IHN5bWJvbHMgZGlkIG5vdCBjaGFuZ2UuJC87Ci0gICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15k
aXR0bzogQ2Fubm90IGdldCB0aGUgcmVhbCBwYXRoIGZvciBzb3VyY2UvOwotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eRHVwbGljYXRlIEVudHJ5IFdhcyBTa2lwcGVkOi87Ci0gICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL15BZGRpbmcgLio/ZW50aXRsZW1lbnRzLzsKLSAgICByZXR1cm4gMSBp
ZiAkbGluZSA9fiAvXk1ha2luZyBhcHAgYnVuZGxlIGxhdW5jaGFibGUvOwotICAgIHJldHVybiAx
IGlmICRsaW5lID1+IC9eRmluaXNoZWQgYWRkaW5nIGVudGl0bGVtZW50c1wuJC87Ci0gICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL14uKiB3aWxsIG5vdCBiZSBjb2RlIHNpZ25lZCBiZWNhdXNlIGl0
cyBzZXR0aW5ncyBkb24ndCBzcGVjaWZ5IGEgZGV2ZWxvcG1lbnQgdGVhbS4kLzsKLQotICAgIGlm
ICgkcGxhdGZvcm0gZXEgIndpbiIpIHsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15c
cyoodG91Y2h8cGVybHxjYXR8cm0gLWZ8ZGVsfHB5dGhvbnxcL3VzclwvYmluXC9nXCtcK3xncGVy
ZnxlY2hvfHNlZHxpZiBcWyBcLWZ8V2ViQ29yZVwvZ2VuZXJhdGUtZXhwb3J0LWZpbGUpIC87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqKGlmIG5vdCBleGlzdCBcInxpZiBlcnJv
cmxldmVsIDEpLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyheXHMqfE1TQjMwNzM6
XHMrKShzZXQgfFJFTSB8Y21kIFwvYykvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
XlxzKltjQ106XFxbcFBdcm9ncmFtIFtmRl1pbGVzLipcXC4qXFwoQ0x8bWlkbClcLmV4ZSAvOwot
ICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKlByb2Nlc3NpbmcgLipcLihhY2Z8aHxp
ZGwpXHMqJC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqcHJpbnRmIC87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqXC91c3JcL2JpblwvYmFzaFxzKi87Ci0g
ICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqb2ZmbGluZWFzbTogTm90aGluZyBjaGFu
Z2VkLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyBcZCsgRmlsZVwoc1wpIGNvcGll
ZC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqRmlsZSBub3QgZm91bmQgLSBc
KlwuaC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9ta2RpclxzK1wiLzsKLSAgICAg
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3hjb3B5IFwveSBcL2QgXCIvOwotICAgICAgICByZXR1
cm4gMSBpZiAkbGluZSA9fiAvXC5vYmpcIlxzKiQvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvOlxzKyhjbWQgXC9jfHNldClccysvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvTVNCMzA3MzpccyskLzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL01TQjMwNzM6
XHMraWYgbm90IGV4aXN0LzsKLSAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL3doaWNoLmV4
ZSBiYXNoLzsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXih0
b3VjaHxwZXJsfGNhdHxybSAtZnxweXRob258XC91c3JcL2JpblwvZ1wrXCt8XC9iaW5cL2xufGdw
ZXJmfGVjaG98c2VkfGlmIFxbIFwtZnxXZWJDb3JlXC9nZW5lcmF0ZS1leHBvcnQtZmlsZXx3cml0
ZS1maWxlfGNobW9kKSAvOwotICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXiAgICAvICYm
ICFzaG91bGRTaG93U3Vic2VxdWVudExpbmUoJHByZXZpb3VzTGluZSk7Ci0gICAgICAgIHJldHVy
biAxIGlmICRsaW5lID1+IC9ecHJpbnRmIC87Ci0gICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eb2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLzsKLSAgICB9Ci0gICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL15TaG93aW5nIGZpcnN0LzsKLQotICAgIHJldHVybiAwOwotfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9wcmVwYXJlLUNoYW5nZUxvZyBiL1Rvb2xzL1NjcmlwdHMvcHJlcGFy
ZS1DaGFuZ2VMb2cKaW5kZXggNDEwNjNjMGIxOTcwLi43MTNkZTk5NGQ4ZmUgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvcHJlcGFyZS1DaGFuZ2VMb2cKKysrIGIvVG9vbHMvU2NyaXB0cy9wcmVw
YXJlLUNoYW5nZUxvZwpAQCAtNjMsMzAgKzYzLDIyIEBAIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsK
IHVzZSBMaXN0OjpVdGlsIHF3L21heC87CiB1c2UgUE9TSVggcXcoc3RyZnRpbWUpOwogdXNlIFZD
U1V0aWxzOwordXNlIHdlYmtpdHBlcmw6OmNoYW5nZWxvZzsKIAotc3ViIGFjdHVhbGx5R2VuZXJh
dGVGdW5jdGlvbkxpc3RzKCQkJCQkJCk7Ci1zdWIgYXR0cmlidXRlQ29tbWFuZCgkJCQpOwogc3Vi
IGNoYW5nZUxvZ0RhdGUoJCk7CiBzdWIgY2hhbmdlTG9nRW1haWxBZGRyZXNzRnJvbUFyZ3MoJCQp
Owogc3ViIGNoYW5nZUxvZ05hbWVGcm9tQXJncygkJCk7Ci1zdWIgY29tcHV0ZU1vZGlmaWVkRnVu
Y3Rpb25zKCQkJCk7CiBzdWIgY3JlYXRlUGF0Y2hDb21tYW5kKCQkJCQpOwotc3ViIGRlY29kZUVu
dGl0aWVzKCQpOwogc3ViIGRldGVybWluZVByb3BlcnR5Q2hhbmdlcygkJCQpOwogc3ViIGRpZmZD
b21tYW5kKCQkJCQpOwogc3ViIGRpZmZGcm9tVG9TdHJpbmcoJCQkKTsKLXN1YiBleHRyYWN0TGlu
ZVJhbmdlQWZ0ZXJDaGFuZ2UoJCk7Ci1zdWIgZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgk
KTsKIHN1YiBmZXRjaEJ1Z1hNTERhdGEoJCQpOwotc3ViIGZldGNoQnVnRGVzY3JpcHRpb25Gcm9t
QnVnWE1MRGF0YSgkJCQpOwotc3ViIGZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YSgkJCk7CiBz
dWIgZmluZENoYW5nZUxvZ3MoJCQpOwogc3ViIGZpbmRPcmlnaW5hbEZpbGVGcm9tU3ZuKCQpOwog
c3ViIGdlbmVyYXRlRmlsZUxpc3QoXCUkJCRcJSk7CiBzdWIgZ2VuZXJhdGVGdW5jdGlvbkxpc3Rz
KCQkJCQkKTsKIHN1YiBnZW5lcmF0ZU5ld0NoYW5nZUxvZ3MoJCQkJCQkJCQkJCQkJCQkKTsKIHN1
YiBnZXRMYXRlc3RDaGFuZ2VMb2dzKCQpOwotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlcygk
JCk7CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJCQpOwogc3ViIGRlbGV0
ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2VzX2Zvcl9jcHAoXEBcQCk7CiBzdWIgaXNfZnVuY3Rpb25f
aW5fbmFtZXNwYWNlKCQkKTsKQEAgLTk1LDcgKzg3LDYgQEAgc3ViIGdldF9mdW5jdGlvbl9saW5l
X3Jhbmdlc19mb3JfamF2YXNjcmlwdCgkJCk7CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2Vz
X2Zvcl9wZXJsKCQkKTsKIHN1YiBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcygkJCk7
CiBzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCgkJCk7Ci1zdWIgcGFyc2VT
d2lmdEZ1bmN0aW9uQXJncygkKTsKIHN1YiBpc0FkZGVkU3RhdHVzKCQpOwogc3ViIGlzQ29uZmxp
Y3RTdGF0dXMoJCQkKTsKIHN1YiBpc01vZGlmaWVkU3RhdHVzKCQpOwpAQCAtMzEzLDEzNiArMzA0
LDYgQEAgc3ViIGdlbmVyYXRlRnVuY3Rpb25MaXN0cygkJCQkJCkKICAgICBhY3R1YWxseUdlbmVy
YXRlRnVuY3Rpb25MaXN0cygkY2hhbmdlZEZpbGVzLCAkZnVuY3Rpb25MaXN0cywgJGdpdENvbW1p
dCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlLCBcJWRlbGVnYXRlSGFzaCk7CiB9CiAKLXN1YiBhY3R1
YWxseUdlbmVyYXRlRnVuY3Rpb25MaXN0cygkJCQkJCQpCi17Ci0gICAgbXkgKCRjaGFuZ2VkRmls
ZXMsICRmdW5jdGlvbkxpc3RzLCAkZ2l0Q29tbWl0LCAkZ2l0SW5kZXgsICRtZXJnZUJhc2UsICRk
ZWxlZ2F0ZUhhc2hSZWYpID0gQF87Ci0KLSAgICBteSAlbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdl
ZDsKLSAgICBteSAlbGluZV9yYW5nZXNfYmVmb3JlX2NoYW5nZWQ7Ci0gICAgaWYgKEAkY2hhbmdl
ZEZpbGVzKSB7Ci0gICAgICAgICMgRm9yIGVhY2ggZmlsZSwgYnVpbGQgYSBsaXN0IG9mIG1vZGlm
aWVkIGxpbmVzLgotICAgICAgICAjIFVzZSBsaW5lIG51bWJlcnMgZnJvbSB0aGUgImFmdGVyIiBz
aWRlIG9mIGVhY2ggZGlmZi4KLSAgICAgICAgcHJpbnQgU1RERVJSICIgIFJldmlld2luZyBkaWZm
IHRvIGRldGVybWluZSB3aGljaCBsaW5lcyBjaGFuZ2VkLlxuIjsKLSAgICAgICAgbXkgJGZpbGU7
Ci0gICAgICAgIG15ICRkaWZmRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hSZWYtPntvcGVuRGlm
Zn0oJGNoYW5nZWRGaWxlcywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNlKTsKLSAg
ICAgICAgaWYgKCEkZGlmZkZpbGVIYW5kbGUpIHsKLSAgICAgICAgICAgIGRpZSAiVGhlIGRpZmYg
ZmFpbGVkOiAkIS5cbiI7Ci0gICAgICAgIH0KLSAgICAgICAgd2hpbGUgKDwkZGlmZkZpbGVIYW5k
bGU+KSB7Ci0gICAgICAgICAgICBteSAkZmlsZVBhdGggPSBwYXJzZURpZmZTdGFydExpbmUoJF8p
OwotICAgICAgICAgICAgJGZpbGUgPSAkZGVsZWdhdGVIYXNoUmVmLT57bm9ybWFsaXplUGF0aH0o
JGZpbGVQYXRoKSBpZiAkZmlsZVBhdGg7Ci0gICAgICAgICAgICBpZiAoZGVmaW5lZCAkZmlsZSkg
ewotICAgICAgICAgICAgICAgIG15ICgkYmVmb3JlX3N0YXJ0LCAkYmVmb3JlX2VuZCkgPSBleHRy
YWN0TGluZVJhbmdlQmVmb3JlQ2hhbmdlKCRfKTsKLSAgICAgICAgICAgICAgICBpZiAoJGJlZm9y
ZV9zdGFydCA+PSAxICYmICRiZWZvcmVfZW5kID49IDEpIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaCBAeyRsaW5lX3Jhbmdlc19iZWZvcmVfY2hhbmdlZHskZmlsZX19LCBbICRiZWZvcmVfc3Rh
cnQsICRiZWZvcmVfZW5kIF07Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01N
SVQvKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAk
ZmlsZSBjb250YWlucyB0aGUgc3RyaW5nIERPX05PVF9DT01NSVQsIGxpbmUgJC5cbiI7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG15ICgkYWZ0ZXJfc3RhcnQsICRhZnRlcl9l
bmQpID0gZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlKCRfKTsKLSAgICAgICAgICAgICAgICBp
ZiAoJGFmdGVyX3N0YXJ0ID49IDEgJiYgJGFmdGVyX2VuZCA+PSAxKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2ggQHskbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmlsZX19LCBbICRhZnRl
cl9zdGFydCwgJGFmdGVyX2VuZCBdOwotICAgICAgICAgICAgICAgIH0gZWxzaWYgKC9ET19OT1Rf
Q09NTUlULykgewotICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIldBUk5JTkc6IGZp
bGUgJGZpbGUgY29udGFpbnMgdGhlIHN0cmluZyBET19OT1RfQ09NTUlULCBsaW5lICQuXG4iOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjbG9z
ZSgkZGlmZkZpbGVIYW5kbGUpOwotICAgIH0KLQotICAgICMgRm9yIGVhY2ggc291cmNlIGZpbGUs
IGNvbnZlcnQgbGluZSByYW5nZSB0byBmdW5jdGlvbiBsaXN0LgotICAgIHByaW50IFNUREVSUiAi
ICBFeHRyYWN0aW5nIGFmZmVjdGVkIGZ1bmN0aW9uIG5hbWVzIGZyb20gc291cmNlIGZpbGVzLlxu
IjsKLSAgICBteSAlZmlsZXNUb0V4YW1pbmUgPSBtYXAgeyAkXyA9PiAxIH0gKGtleXMoJWxpbmVf
cmFuZ2VzX2JlZm9yZV9jaGFuZ2VkKSwga2V5cyglbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZCkp
OwotICAgIGZvcmVhY2ggbXkgJGZpbGUgKGtleXMgJWZpbGVzVG9FeGFtaW5lKSB7Ci0gICAgICAg
IG15ICVzYXdfZnVuY3Rpb247Ci0KLSAgICAgICAgIyBGaW5kIGFsbCB0aGUgZnVuY3Rpb25zIGlu
IHRoZSBmaWxlLgotICAgICAgICBteSAkc291cmNlRmlsZUhhbmRsZSA9ICRkZWxlZ2F0ZUhhc2hS
ZWYtPntvcGVuRmlsZX0oJGZpbGUpOwotICAgICAgICBuZXh0IHVubGVzcyAkc291cmNlRmlsZUhh
bmRsZTsKLSAgICAgICAgbXkgQGFmdGVyQ2hhbmdlRnVuY3Rpb25SYW5nZXMgPSBnZXRfZnVuY3Rp
b25fbGluZV9yYW5nZXMoJHNvdXJjZUZpbGVIYW5kbGUsICRmaWxlKTsKLSAgICAgICAgY2xvc2Uo
JHNvdXJjZUZpbGVIYW5kbGUpOwotCi0gICAgICAgICMgRmluZCBtb2RpZmllZCBmdW5jdGlvbnMg
aW4gdGhlIGZpbGUuCi0gICAgICAgIGlmICgkbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdlZHskZmls
ZX0pIHsKLSAgICAgICAgICAgIG15IEBjaGFuZ2VfcmFuZ2VzID0gKEB7JGxpbmVfcmFuZ2VzX2Fm
dGVyX2NoYW5nZWR7JGZpbGV9fSwgW10pOwotICAgICAgICAgICAgbXkgQGZ1bmN0aW9ucyA9IGNv
bXB1dGVNb2RpZmllZEZ1bmN0aW9ucygkZmlsZSwgXEBjaGFuZ2VfcmFuZ2VzLCBcQGFmdGVyQ2hh
bmdlRnVuY3Rpb25SYW5nZXMpOwotCi0gICAgICAgICAgICAjIEZvcm1hdCB0aGUgbGlzdCBvZiBm
dW5jdGlvbnMuCi0gICAgICAgICAgICBpZiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgICAg
ICRmdW5jdGlvbkxpc3RzLT57JGZpbGV9ID0gIiIgaWYgIWRlZmluZWQgJGZ1bmN0aW9uTGlzdHMt
PnskZmlsZX07Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gLj0gIlxu
ICAgICAgICAoIiAuIGpvaW4oIik6XG4gICAgICAgICgiLCBAZnVuY3Rpb25zKSAuICIpOiI7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgIyBGaW5kIHRoZSBkZWxldGVkIGZ1bmN0
aW9ucyBpbiB0aGUgb3JpZ2luYWwgZmlsZS4KLSAgICAgICAgaWYgKCRsaW5lX3Jhbmdlc19iZWZv
cmVfY2hhbmdlZHskZmlsZX0pIHsKLSAgICAgICAgICAgIG15ICRvcmlnaW5hbEZpbGVIYW5kbGUg
PSAkZGVsZWdhdGVIYXNoUmVmLT57b3Blbk9yaWdpbmFsRmlsZX0oJGZpbGUsICRnaXRDb21taXQs
ICRnaXRJbmRleCwgJG1lcmdlQmFzZSk7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkb3JpZ2lu
YWxGaWxlSGFuZGxlOwotICAgICAgICAgICAgbXkgQGJlZm9yZUNoYW5nZUZ1bmN0aW9uUmFuZ2Vz
ID0gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzKCRvcmlnaW5hbEZpbGVIYW5kbGUsICRmaWxlKTsK
LSAgICAgICAgICAgIGNsb3NlKCRvcmlnaW5hbEZpbGVIYW5kbGUpOwotCi0gICAgICAgICAgICBt
eSAlZXhpc3RzQWZ0ZXJDaGFuZ2UgPSBtYXAgeyAkXy0+WzJdID0+IDEgfSBAYWZ0ZXJDaGFuZ2VG
dW5jdGlvblJhbmdlczsKLQotICAgICAgICAgICAgbXkgQGZ1bmN0aW9uczsKLSAgICAgICAgICAg
IG15ICVzYXdGdW5jdGlvbnM7Ci0gICAgICAgICAgICBmb3IgbXkgJGZ1bmN0aW9uUmFuZ2UgKEBi
ZWZvcmVDaGFuZ2VGdW5jdGlvblJhbmdlcykgewotICAgICAgICAgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSAkZnVuY3Rpb25SYW5nZS0+WzJdOwotICAgICAgICAgICAgICAgIGlmICghJGV4aXN0
c0FmdGVyQ2hhbmdleyRmdW5jdGlvbk5hbWV9ICYmICEkc2F3RnVuY3Rpb25zeyRmdW5jdGlvbk5h
bWV9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2ggQGZ1bmN0aW9ucywgJGZ1bmN0aW9uTmFt
ZTsKLSAgICAgICAgICAgICAgICAgICAgJHNhd0Z1bmN0aW9uc3skZnVuY3Rpb25OYW1lfSA9IDE7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIEZvcm1h
dCB0aGUgbGlzdCBvZiBkZWxldGVkIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgIGlmIChAZnVuY3Rp
b25zKSB7Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uTGlzdHMtPnskZmlsZX0gPSAiIiBpZiAh
ZGVmaW5lZCAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfTsKLSAgICAgICAgICAgICAgICAkZnVuY3Rp
b25MaXN0cy0+eyRmaWxlfSAuPSAiXG4gICAgICAgICgiIC4gam9pbigiKTogRGVsZXRlZC5cbiAg
ICAgICAgKCIsIEBmdW5jdGlvbnMpIC4gIik6IERlbGV0ZWQuIjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLX0KLQotc3ViIGNvbXB1dGVNb2RpZmllZEZ1bmN0aW9ucygkJCQpCi17
Ci0gICAgbXkgKCRmaWxlLCAkY2hhbmdlZExpbmVSYW5nZXMsICRmdW5jdGlvblJhbmdlcykgPSBA
XzsKLQotICAgIG15ICVzYXdGdW5jdGlvbjsKLQotICAgICMgRmluZCBhbGwgdGhlIG1vZGlmaWVk
IGZ1bmN0aW9ucy4KLSAgICBteSBAZnVuY3Rpb25zOwotICAgIG15IEBjaGFuZ2VfcmFuZ2VzID0g
QHskY2hhbmdlZExpbmVSYW5nZXN9OwotICAgIG15IEBjaGFuZ2VfcmFuZ2UgPSAoMCwgMCk7Ci0g
ICAgRlVOQ1RJT046IGZvcmVhY2ggbXkgJGZ1bmN0aW9uX3JhbmdlX3JlZiAoQHskZnVuY3Rpb25S
YW5nZXN9KSB7Ci0gICAgICAgIG15IEBmdW5jdGlvbl9yYW5nZSA9IEB7JGZ1bmN0aW9uX3Jhbmdl
X3JlZn07Ci0KLSAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhIGhhY2suIElmIHRoZSBmdW5jdGlv
biBuYW1lIGlzIGVtcHR5LCBza2lwIGl0LgotICAgICAgICAjIFRoZSBjcHAsIHB5dGhvbiwgamF2
YXNjcmlwdCwgcGVybCwgY3NzIGFuZCBqYXZhIHBhcnNlcnMKLSAgICAgICAgIyBhcmUgbm90IHBl
cmZlY3RseSBpbXBsZW1lbnRlZCBhbmQgc29tZXRpbWVzIGZ1bmN0aW9uIG5hbWVzIGNhbm5vdCBi
ZSByZXRyaWV2ZWQKLSAgICAgICAgIyBjb3JyZWN0bHkuIEFzIHlvdSBjYW4gc2VlIGluIGdldF9m
dW5jdGlvbl9saW5lX3Jhbmdlc19YWFhYKCksIHRob3NlIHBhcnNlcnMKLSAgICAgICAgIyBhcmUg
bm90IGludGVuZGVkIHRvIGltcGxlbWVudCByZWFsIHBhcnNlcnMgYnV0IGludGVuZGVkIHRvIGp1
c3QgcmV0cmlldmUgZnVuY3Rpb24gbmFtZXMKLSAgICAgICAgIyBmb3IgbW9zdCBwcmFjdGljYWwg
c3ludGF4ZXMuCi0gICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvbl9yYW5nZVsyXTsKLQotICAg
ICAgICAjIEFkdmFuY2UgdG8gc3VjY2Vzc2l2ZSBjaGFuZ2UgcmFuZ2VzLgotICAgICAgICBmb3Ig
KDs7IEBjaGFuZ2VfcmFuZ2UgPSBAe3NoaWZ0IEBjaGFuZ2VfcmFuZ2VzfSkgewotICAgICAgICAg
ICAgbGFzdCBGVU5DVElPTiB1bmxlc3MgQGNoYW5nZV9yYW5nZTsKLQotICAgICAgICAgICAgIyBJ
ZiBwYXN0IHRoaXMgZnVuY3Rpb24sIG1vdmUgb24gdG8gdGhlIG5leHQgb25lLgotICAgICAgICAg
ICAgbmV4dCBGVU5DVElPTiBpZiAkY2hhbmdlX3JhbmdlWzBdID4gJGZ1bmN0aW9uX3JhbmdlWzFd
OwotCi0gICAgICAgICAgICAjIElmIGFuIG92ZXJsYXAgd2l0aCB0aGlzIGZ1bmN0aW9uIHJhbmdl
LCByZWNvcmQgdGhlIGZ1bmN0aW9uIG5hbWUuCi0gICAgICAgICAgICBpZiAoJGNoYW5nZV9yYW5n
ZVsxXSA+PSAkZnVuY3Rpb25fcmFuZ2VbMF0KLSAgICAgICAgICAgICAgICBhbmQgJGNoYW5nZV9y
YW5nZVswXSA8PSAkZnVuY3Rpb25fcmFuZ2VbMV0pIHsKLSAgICAgICAgICAgICAgICBpZiAoISRz
YXdGdW5jdGlvbnskZnVuY3Rpb25fcmFuZ2VbMl19KSB7Ci0gICAgICAgICAgICAgICAgICAgICRz
YXdGdW5jdGlvbnskZnVuY3Rpb25fcmFuZ2VbMl19ID0gMTsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25fcmFuZ2VbMl07Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIG5leHQgRlVOQ1RJT047Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gQGZ1bmN0aW9uczsKLX0KLQogc3ViIGNoYW5nZUxvZ0RhdGUo
JCkKIHsKICAgICBteSAoJHRpbWVab25lKSA9IEBfOwpAQCAtNTAwLDMyICszNjEsNiBAQCBzdWIg
ZmV0Y2hCdWdYTUxEYXRhKCQkKQogICAgIHJldHVybiAkeG1sRGF0YTsKIH0KIAotc3ViIGZldGNo
QnVnRGVzY3JpcHRpb25Gcm9tQnVnWE1MRGF0YSgkJCQpCi17Ci0gICAgbXkgKCRidWdVUkwsICRi
dWdOdW1iZXIsICRidWdYTUxEYXRhKSA9IEBfOwotCi0gICAgaWYgKCRidWdYTUxEYXRhICF+IC88
c2hvcnRfZGVzYz4oLiopPFwvc2hvcnRfZGVzYz4vKSB7Ci0gICAgICAgIHByaW50IFNUREVSUiAi
ICBCdWcgJGJ1Z051bWJlciBoYXMgbm8gYnVnIGRlc2NyaXB0aW9uLiBNYXliZSB5b3Ugc2V0IHdy
b25nIGJ1ZyBJRD9cbiI7Ci0gICAgICAgIHByaW50IFNUREVSUiAiICBUaGUgYnVnIFVSTDogJGJ1
Z1VSTFxuIjsKLSAgICAgICAgZXhpdCAxOwotICAgIH0KLQotICAgIG15ICRidWdEZXNjcmlwdGlv
biA9IGRlY29kZUVudGl0aWVzKCQxKTsKLSAgICBwcmludCBTVERFUlIgIiAgRGVzY3JpcHRpb24g
ZnJvbSBidWcgJGJ1Z051bWJlcjpcbiAgICBcIiRidWdEZXNjcmlwdGlvblwiLlxuIjsKLSAgICBy
ZXR1cm4gJGJ1Z0Rlc2NyaXB0aW9uOwotfQotCi1zdWIgZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxE
YXRhKCQkKQotewotICAgIG15ICgkYnVnTnVtYmVyLCAkYnVnWE1MRGF0YSkgPSBAXzsKLQotICAg
IHJldHVybiAiIiBpZiAkYnVnWE1MRGF0YSAhfiBtfDx0aGV0ZXh0PlxzKigoJmx0Oyk/cmRhcjov
Lyhwcm9ibGVtLyk/XGQrKCZndDspPyl8OwotCi0gICAgbXkgJGJ1Z1JhZGFyVVJMID0gZGVjb2Rl
RW50aXRpZXMoJDEpOwotICAgIHByaW50IFNUREVSUiAiICBSYWRhciBVUkwgZnJvbSBidWcgJGJ1
Z051bWJlcjpcbiAgICBcIiRidWdSYWRhclVSTFwiLlxuIjsKLSAgICByZXR1cm4gJGJ1Z1JhZGFy
VVJMOwotfQotCiBzdWIgZmluZENoYW5nZUxvZ3MoJCQpCiB7CiAgICAgbXkgKCRmdW5jdGlvbkxp
c3RzLCAkcmVxdWlyZUNoYW5nZUxvZ1RvRXhpc3QpID0gQF87CkBAIC03NjEsMzUgKzU5Niw2IEBA
IHN1YiBvcGVuQ2hhbmdlTG9ncygkKQogICAgIH0KIH0KIAotc3ViIGdldF9mdW5jdGlvbl9saW5l
X3JhbmdlcygkJCkKLXsKLSAgICBteSAoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSA9IEBfOwot
Ci0gICAgIyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2UgbGFuZ3VhZ2UgYmFzZWQgb24gdGhl
IGZpbGUgZXh0ZW5zaW9uLgotCi0gICAgcmV0dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19m
b3JfY3BwKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC4oY3xj
cHB8bXxtbXxoKSQvOwotICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2ph
dmEoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLmphdmEkLzsK
LSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0KCRmaWxl
X2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAvXC5qcyQvOwotICAgIHJldHVy
biBnZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcygkZmlsZV9oYW5kbGUsICRmaWxlX25h
bWUpIGlmICRmaWxlX25hbWUgPX4gL1wuY3NzJC87Ci0gICAgcmV0dXJuIGdldF9mdW5jdGlvbl9s
aW5lX3Jhbmdlc19mb3JfcGVybCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25h
bWUgPX4gL1wucFtsbV0kLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zv
cl9weXRob24oJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLnB5
JC8gb3IgJGZpbGVfbmFtZSA9fiAvbWFzdGVyXC5jZmckLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRm
aWxlX25hbWUgPX4gL1wuc3dpZnQkLzsKLQotICAgICMgVHJ5IHRvIGRldGVybWluZSB0aGUgc291
cmNlIGxhbmd1YWdlIGJhc2VkIG9uIHRoZSBzY3JpcHQgaW50ZXJwcmV0ZXIuCi0KLSAgICBteSAk
Zmlyc3RfbGluZSA9IDwkZmlsZV9oYW5kbGU+OwotICAgIHNlZWsoJGZpbGVfaGFuZGxlLCAwLCAw
KTsKLQotICAgIHJldHVybiAoKSB1bmxlc3MgJGZpcnN0X2xpbmUgPX4gbXxeIyEoPzovdXNyL2Jp
bi9lbnZccyspPyhcUyspfDsKLSAgICBteSAkaW50ZXJwcmV0ZXIgPSAkMTsKLQotICAgIHJldHVy
biBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3BlcmwoJGZpbGVfaGFuZGxlLCAkZmlsZV9u
YW1lKSBpZiAkaW50ZXJwcmV0ZXIgPX4gL3BlcmwkLzsKLSAgICByZXR1cm4gZ2V0X2Z1bmN0aW9u
X2xpbmVfcmFuZ2VzX2Zvcl9weXRob24oJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkaW50
ZXJwcmV0ZXIgPX4gL3B5dGhvbiQvOwotCi0gICAgcmV0dXJuICgpOwotfQotCi0KIHN1YiBtZXRo
b2RfZGVjbF90b19zZWxlY3RvcigkKQogewogICAgIChteSAkbWV0aG9kX2RlY2wpID0gQF87CkBA
IC04MTcsMTIyMiArNjIzLDYgQEAgc3ViIG1ldGhvZF9kZWNsX3RvX3NlbGVjdG9yKCQpCiAgICAg
cmV0dXJuICRfOwogfQogCi0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSBy
YW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDIGZ1bmN0aW9ucy4KLSMgQSBmdW5j
dGlvbiBuYW1lIGlzIHRoZSBsYXN0IHdvcmQgYmVmb3JlIGFuIG9wZW4gcGFyZW50aGVzaXMgYmVm
b3JlIHRoZSBvdXRlcgotIyBsZXZlbCBvcGVuIGJyYWNlLiBBIGZ1bmN0aW9uIHN0YXJ0cyBhdCB0
aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRoZSBsYXN0IGNsb3NlCi0jIGJyYWNlIG9yIHNlbWlj
b2xvbiBiZWZvcmUgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhlIGNsb3NlIGJyYWNl
LgotIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3Ig
YWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJp
cGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0
X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAoJCQpCi17Ci0gICAgbXkgKCRmaWxlX2hhbmRs
ZSwgJGZpbGVfbmFtZSkgPSBAXzsKLQotICAgIG15IEByYW5nZXM7Ci0KLSAgICBteSAkaW5fY29t
bWVudCA9IDA7Ci0gICAgbXkgJGluX21hY3JvID0gMDsKLSAgICBteSAkaW5fbWV0aG9kX2RlY2xh
cmF0aW9uID0gMDsKLSAgICBteSAkaW5fcGFyZW50aGVzZXMgPSAwOwotICAgIG15ICRxdW90YXRp
b25fbWFyazsKLSAgICBteSAkaW5fYnJhY2VzID0gMDsKLSAgICBteSAkaW5fdG9wbGV2ZWxfYXJy
YXlfYnJhY2UgPSAwOwotICAgIG15ICRicmFjZV9zdGFydCA9IDA7Ci0gICAgbXkgJGJyYWNlX2Vu
ZCA9IDA7Ci0gICAgbXkgJG5hbWVzcGFjZV9zdGFydCA9IC0xOwotICAgIG15ICRza2lwX3RpbF9i
cmFjZV9vcl9zZW1pY29sb24gPSAwOwotICAgIG15ICRlcXVhbF9vYnNlcnZlZCA9IDA7Ci0KLSAg
ICBteSAkd29yZCA9ICIiOwotICAgIG15ICRpbnRlcmZhY2VfbmFtZSA9ICIiOwotCi0gICAgbXkg
JHBvdGVudGlhbF9tZXRob2RfY2hhciA9ICIiOwotICAgIG15ICRwb3RlbnRpYWxfbWV0aG9kX3Nw
ZWMgPSAiIjsKLQotICAgIG15ICRwb3RlbnRpYWxfc3RhcnQgPSAwOwotICAgIG15ICRwb3RlbnRp
YWxfbmFtZSA9ICIiOwotCi0gICAgbXkgJHN0YXJ0ID0gMDsKLSAgICBteSAkbmFtZSA9ICIiOwot
Ci0gICAgbXkgJG5leHRfd29yZF9jb3VsZF9iZV9uYW1lc3BhY2UgPSAwOwotICAgIG15ICRwb3Rl
bnRpYWxfbmFtZXNwYWNlID0gIiI7Ci0gICAgbXkgQG5hbWVzcGFjZXM7Ci0gICAgbXkgQGFsbF9u
YW1lc3BhY2VzOwotCi0gICAgd2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7Ci0gICAgICAgICMgSGFu
ZGxlIGNvbnRpbnVlZCBxdW90ZWQgc3RyaW5nLgotICAgICAgICBpZiAoJHF1b3RhdGlvbl9tYXJr
KSB7Ci0gICAgICAgICAgICBpZiAoIXMtKFteXFxdfFxcLikqJHF1b3RhdGlvbl9tYXJrLS0pIHsK
LSAgICAgICAgICAgICAgICBpZiAoIW0tXFwkLSkgewotICAgICAgICAgICAgICAgICAgICB3YXJu
ICJtaXNtYXRjaGVkIHF1b3RlcyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7Ci0gICAgICAg
ICAgICAgICAgICAgIHVuZGVmICRxdW90YXRpb25fbWFyazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVuZGVmICRx
dW90YXRpb25fbWFyazsKLSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBt
dWx0aS1saW5lIGNvbW1lbnQuCi0gICAgICAgIGlmICgkaW5fY29tbWVudCkgewotICAgICAgICAg
ICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOwotICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAwOwot
ICAgICAgICB9Ci0KLSAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG1hY3JvLgotICAgICAgICBp
ZiAoJGluX21hY3JvKSB7Ci0gICAgICAgICAgICAkaW5fbWFjcm8gPSAwIHVubGVzcyAvXFwkLzsK
LSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAjIEhhbmRsZSBzdGFydCBv
ZiBtYWNybyAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUpLgotICAgICAgICBpZiAoL15c
cypcIy8pIHsKLSAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYgL14oW15cXF18XFwuKSpcXCQv
OwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAgICMgSGFuZGxlIGNvbW1l
bnRzIGFuZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgd2hpbGUgKG0tKC9cKnwvL3xcJ3xcIiktKSB7
ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5Ci0gICAgICAgICAgICBteSAk
bWF0Y2ggPSAkMTsKLSAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEgIi8qIikgewotICAgICAgICAg
ICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgewotICAgICAgICAgICAgICAgICAgICBzLS9cKi4q
LS07Ci0gICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0gMTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikgewotICAgICAgICAgICAg
ICAgIHMtLy8uKi0tOwotICAgICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKLSAgICAgICAgICAg
ICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0tKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghcy0kbWF0Y2guKlxcJC0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3
YXJuICJtaXNtYXRjaGVkIHF1b3RlcyBhdCBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzLSRtYXRjaC4qLS07Ci0gICAgICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkcXVvdGF0aW9uX21hcmsgPSAkbWF0Y2g7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLQotCi0gICAgICAgICMgY29udGludWVkIG1ldGhvZCBkZWNsYXJhdGlvbgot
ICAgICAgICBpZiAoJGluX21ldGhvZF9kZWNsYXJhdGlvbikgewotICAgICAgICAgICAgICBteSAk
b3JpZ2luYWwgPSAkXzsKLSAgICAgICAgICAgICAgbXkgJG1ldGhvZF9jb250ID0gJF87Ci0KLSAg
ICAgICAgICAgICAgY2hvbXAgJG1ldGhvZF9jb250OwotICAgICAgICAgICAgICAkbWV0aG9kX2Nv
bnQgPX4gcy9bO1x7XS4qLy87Ci0gICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX3NwZWMg
PSAiJHtwb3RlbnRpYWxfbWV0aG9kX3NwZWN9ICR7bWV0aG9kX2NvbnR9IjsKLQotICAgICAgICAg
ICAgICAkXyA9ICRvcmlnaW5hbDsKLSAgICAgICAgICAgICAgaWYgKC87LykgewotICAgICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX21ldGhvZF9zcGVjID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhv
ZF9jaGFyID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0g
MDsKLSAgICAgICAgICAgICAgICAgIHMvXlteO1x7XSovLzsKLSAgICAgICAgICAgICAgfSBlbHNp
ZiAoL3svKSB7Ci0gICAgICAgICAgICAgICAgICBteSAkc2VsZWN0b3IgPSBtZXRob2RfZGVjbF90
b19zZWxlY3RvciAoJHBvdGVudGlhbF9tZXRob2Rfc3BlYyk7Ci0gICAgICAgICAgICAgICAgICAk
cG90ZW50aWFsX25hbWUgPSAiJHtwb3RlbnRpYWxfbWV0aG9kX2NoYXJ9XFske2ludGVyZmFjZV9u
YW1lfSAke3NlbGVjdG9yfVxdIjsKLQotICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRo
b2Rfc3BlYyA9ICIiOwotICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2RfY2hhciA9
ICIiOwotICAgICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7Ci0KLSAg
ICAgICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAgICAgICAgcy9eW147
e10qLy87Ci0gICAgICAgICAgICAgIH0gZWxzaWYgKC9cQGVuZC8pIHsKLSAgICAgICAgICAgICAg
ICAgICRpbl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOwotICAgICAgICAgICAgICAgICAgJGludGVy
ZmFjZV9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKLSAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0KLSAgICAgICAgIyBzdGFydCBvZiBtZXRob2QgZGVjbGFyYXRpb24K
LSAgICAgICAgaWYgKChteSAkbWV0aG9kX2NoYXIsIG15ICRtZXRob2Rfc3BlYykgPSBtJl4oWy0r
XSkoW14wLTk7XVteO10qKTs/JCYpIHsKLSAgICAgICAgICAgIG15ICRvcmlnaW5hbCA9ICRfOwot
Ci0gICAgICAgICAgICBpZiAoJGludGVyZmFjZV9uYW1lKSB7Ci0gICAgICAgICAgICAgICAgY2hv
bXAgJG1ldGhvZF9zcGVjOwotICAgICAgICAgICAgICAgICRtZXRob2Rfc3BlYyA9fiBzL1x7Liov
LzsKLQotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAkbWV0aG9kX2No
YXI7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICRtZXRob2Rfc3Bl
YzsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47Ci0gICAgICAgICAgICAg
ICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDE7Ci0gICAgICAgICAgICB9IGVsc2UgeyAKLSAg
ICAgICAgICAgICAgICB3YXJuICJkZWNsYXJpbmcgYSBtZXRob2QgYnV0IGRvbid0IGhhdmUgaW50
ZXJmYWNlIG9uIGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAgaWYgKC9cey8pIHsKLSAgICAgICAg
ICAgICAgbXkgJHNlbGVjdG9yID0gbWV0aG9kX2RlY2xfdG9fc2VsZWN0b3IgKCRwb3RlbnRpYWxf
bWV0aG9kX3NwZWMpOwotICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAiJHtwb3RlbnRp
YWxfbWV0aG9kX2NoYXJ9XFske2ludGVyZmFjZV9uYW1lfSAke3NlbGVjdG9yfVxdIjsKLQotICAg
ICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9zcGVjID0gIiI7Ci0gICAgICAgICAgICAgICRw
b3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAiIjsKLSAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAg
ICBzL15bXntdKi8vOwotICAgICAgICAgICAgfSBlbHNpZiAoL1xAZW5kLykgewotICAgICAgICAg
ICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMDsKLSAgICAgICAgICAgICAgJGludGVyZmFj
ZV9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0KLSAgICAgICAgIyBGaW5kIGZ1bmN0aW9uLCBpbnRlcmZhY2UgYW5kIG1ldGhvZCBuYW1lcy4K
LSAgICAgICAgd2hpbGUgKG0mKCg/OltbOndvcmQ6XV0rOjopKm9wZXJhdG9yKD86WyBcdF0qXChc
KXxbXigpXSopfFtbOndvcmQ6XTw+On5dK3xbKCl7fTo7PV0pfFxAKD86aW1wbGVtZW50YXRpb258
aW50ZXJmYWNlfHByb3RvY29sKVxzKyhcdyspW157XSomZykgewotICAgICAgICAgICAgIyBTa2lw
IGFuIGFycmF5IGRlZmluaXRpb24gYXQgdGhlIHRvcCBsZXZlbC4KLSAgICAgICAgICAgICMgZS5n
LiBzdGF0aWMgaW50IGFycltdID0geyAxLCAyLCAzIH07Ci0gICAgICAgICAgICBpZiAoJDEpIHsK
LSAgICAgICAgICAgICAgICBpZiAoJDEgZXEgIj0iIGFuZCAhJGluX3BhcmVudGhlc2VzIGFuZCAh
JGluX2JyYWNlcykgewotICAgICAgICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQgPSAxOwot
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCQxIGVxICJ7IiBhbmQgJGVxdWFsX29ic2VydmVkKSB7
Ci0gICAgICAgICAgICAgICAgICAgICMgVGhpcyAneycgaXMgdGhlIGJlZ2lubmluZyBvZiBhbiBh
cnJheSBkZWZpbml0aW9uLCBub3QgdGhlIGJlZ2lubmluZyBvZiBhIG1ldGhvZC4KLSAgICAgICAg
ICAgICAgICAgICAgJGluX3RvcGxldmVsX2FycmF5X2JyYWNlID0gMTsKLSAgICAgICAgICAgICAg
ICAgICAgJGluX2JyYWNlcysrOwotICAgICAgICAgICAgICAgICAgICAkZXF1YWxfb2JzZXJ2ZWQg
PSAwOwotICAgICAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgICAgIH0gZWxzaWYg
KCQxICF+IC9bIFx0XS8pIHsKLSAgICAgICAgICAgICAgICAgICAgJGVxdWFsX29ic2VydmVkID0g
MDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgaW50
ZXJmYWNlIG5hbWUKLSAgICAgICAgICAgIGlmICgkMikgewotICAgICAgICAgICAgICAgICRpbnRl
cmZhY2VfbmFtZSA9ICQyOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICMgT3BlbiBwYXJlbnRoZXNpcy4KLSAgICAgICAgICAgIGlmICgkMSBlcSAi
KCIpIHsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAkd29yZCB1bmxlc3MgJGlu
X3BhcmVudGhlc2VzIHx8ICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gfHwgZ3JlcCB7ICR3
b3JkIGVxICRfIH0gKCJDRl9FTlVNIiwgIkNGX09QVElPTlMiLCAiTlNfRU5VTSIsICJOU19PUFRJ
T05TIik7Ci0gICAgICAgICAgICAgICAgJGluX3BhcmVudGhlc2VzKys7Ci0gICAgICAgICAgICAg
ICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBDbG9zZSBwYXJlbnRoZXNp
cy4KLSAgICAgICAgICAgIGlmICgkMSBlcSAiKSIpIHsKLSAgICAgICAgICAgICAgICAkaW5fcGFy
ZW50aGVzZXMtLTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAoJDEgZXEgImNvbnN0IiBhbmQgISRpbl9wYXJlbnRoZXNlcykgewotICAgICAg
ICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSAuPSAiIGNvbnN0IjsKLSAgICAgICAgICAgICAgICBu
ZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoJDEgZXEgInZvbGF0aWxlIiBh
bmQgISRpbl9wYXJlbnRoZXNlcykgewotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSAu
PSAiIHZvbGF0aWxlIjsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAjIEMrKyBhdXRvIGZ1bmN0aW9uKCkgLT4gdHlwZQotICAgICAgICAgICAgaWYg
KCQxIGVxICI+IikgewotICAgICAgICAgICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29s
b24gPSAxIHVubGVzcyAoJGluX3BhcmVudGhlc2VzIHx8ICRpbl9icmFjZXMpOwotICAgICAgICAg
ICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgQysrIGNvbnN0cnVj
dG9yIGluaXRpYWxpemVycwotICAgICAgICAgICAgaWYgKCQxIGVxICI6IikgewotICAgICAgICAg
ICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAxIHVubGVzcyAoJGluX3BhcmVu
dGhlc2VzIHx8ICRpbl9icmFjZXMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIE9w
ZW4gYnJhY2UuCi0gICAgICAgICAgICBpZiAoJDEgZXEgInsiKSB7Ci0gICAgICAgICAgICAgICAg
JHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9IDA7Ci0KLSAgICAgICAgICAgICAgICBpZiAo
ISRpbl9icmFjZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lc3BhY2Vfc3RhcnQg
Pj0gMCBhbmQgJG5hbWVzcGFjZV9zdGFydCA8ICRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyAkbmFtZXNwYWNlX3N0YXJ0IC4gIiIsICRw
b3RlbnRpYWxfc3RhcnQgLSAxLCAkbmFtZSBdOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRwb3RlbnRpYWxfbmFtZXNwYWNlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoIEBuYW1lc3BhY2VzLCAkcG90ZW50aWFsX25hbWVzcGFjZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQGFsbF9uYW1lc3BhY2VzLCAkcG90ZW50aWFsX25h
bWVzcGFjZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZXNwYWNlID0g
IiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICAgICAgIyBQcm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFt
ZSBhdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBvZiB0aGUgb3V0ZXIgbGV2ZWwg
c2V0IG9mIGJyYWNlcyAoZnVuY3Rpb24gYm9keT8pLgotICAgICAgICAgICAgICAgICAgICBpZiAo
JHBvdGVudGlhbF9zdGFydCkgewotICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJHBv
dGVudGlhbF9zdGFydDsKLSAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gJHBvdGVudGlh
bF9uYW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzICYmICRuYW1l
ICYmIChsZW5ndGgoJG5hbWUpIDwgMiB8fCBzdWJzdHIoJG5hbWUsMSwxKSBuZSAiWyIpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBqb2luICgnOjonLCBAbmFtZXNwYWNl
cywgJG5hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0KLSAgICAgICAgICAgICAgICAkYnJhY2Vfc3RhcnQgPSAkLiBpZiAoISRp
bl9icmFjZXMpOwotICAgICAgICAgICAgICAgICRpbl9icmFjZXMrKzsKLSAgICAgICAgICAgICAg
ICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIENsb3NlIGJyYWNlLgotICAg
ICAgICAgICAgaWYgKCQxIGVxICJ9IikgewotICAgICAgICAgICAgICAgIGlmICghJGluX2JyYWNl
cyAmJiBAbmFtZXNwYWNlcykgewotICAgICAgICAgICAgICAgICAgICBpZiAoJG5hbWVzcGFjZV9z
dGFydCA+PSAwIGFuZCAkbmFtZXNwYWNlX3N0YXJ0IDwgJC4pIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2ggQHJhbmdlcywgWyAkbmFtZXNwYWNlX3N0YXJ0IC4gIiIsICQuIC0gMSwgJG5h
bWUgXTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHBvcCBA
bmFtZXNwYWNlczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICIiOwotICAgICAg
ICAgICAgICAgICAgICAgICAgJG5hbWVzcGFjZV9zdGFydCA9IC0xOwotICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgJGluX2JyYWNlcy0tOwotICAgICAgICAgICAgICAgICRicmFjZV9lbmQg
PSAkLiBpZiAoISRpbl9icmFjZXMpOwotCi0gICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0
ZXIgbGV2ZWwgc2V0IG9mIGJyYWNlcy4KLSAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUg
YSBmdW5jdGlvbiBib2R5LgotICAgICAgICAgICAgICAgIGlmICghJGluX2JyYWNlcyBhbmQgJG5h
bWUpIHsKLSAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRoZSBlbmQgb2YgYW4gYXJyYXkg
ZGVmaW5pdGlvbiBhdCB0aGUgdG9wIGxldmVsLCBub3QgdGhlIGVuZCBvZiBhIG1ldGhvZC4KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRpbl90b3BsZXZlbF9hcnJheV9icmFjZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgJGluX3RvcGxldmVsX2FycmF5X2JyYWNlID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJHN0YXJ0LCAkLiwgJG5hbWUgXTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKEBuYW1lc3BhY2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
bmFtZSA9ICRuYW1lc3BhY2VzWy0xXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3Bh
Y2Vfc3RhcnQgPSAkLiArIDE7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAkbmFtZSA9ICIiOwotICAgICAgICAgICAgICAgICAgICAgICAgJG5h
bWVzcGFjZV9zdGFydCA9IC0xOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAg
ICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgIyBTZW1pY29sb24uCi0gICAgICAgICAgICBpZiAoJDEg
ZXEgIjsiKSB7Ci0gICAgICAgICAgICAgICAgJHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9
IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAg
ICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNs
YXJhdGlvbiA9IDA7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgIyBJZ25vcmUgImNvbnN0IiBtZXRob2QgcXVhbGlmaWVyLgotICAgICAgICAgICAg
aWYgKCQxIGVxICJjb25zdCIpIHsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAoJDEgZXEgIm5hbWVzcGFjZSIgfHwgJDEgZXEgImNsYXNzIiB8
fCAkMSBlcSAic3RydWN0IikgewotICAgICAgICAgICAgICAgICRuZXh0X3dvcmRfY291bGRfYmVf
bmFtZXNwYWNlID0gMTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAjIFdvcmQuCi0gICAgICAgICAgICAkd29yZCA9ICQxOwotICAgICAgICAgICAg
aWYgKCEkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KCRuZXh0X3dvcmRfY291bGRfYmVfbmFtZXNwYWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZXNwYWNlID0gJHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRuZXh0X3dv
cmRfY291bGRfYmVfbmFtZXNwYWNlID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2lmICgkcG90
ZW50aWFsX25hbWVzcGFjZSkgewotICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVz
cGFjZSA9ICIiOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICghJGlu
X3BhcmVudGhlc2VzKSB7Ci0gICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAw
OwotICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgPSAiIjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCEkcG90ZW50aWFsX3N0YXJ0KSB7Ci0gICAgICAg
ICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAg
JHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgd2FybiAibWlzc2luZyBjbG9zZSBicmFjZXMgaW4gJGZp
bGVfbmFtZSAocHJvYmFibGUgc3RhcnQgYXQgJGJyYWNlX3N0YXJ0KVxuIiBpZiAoJGluX2JyYWNl
cyA+IDApOwotICAgIHdhcm4gInRvbyBtYW55IGNsb3NlIGJyYWNlcyBpbiAkZmlsZV9uYW1lIChw
cm9iYWJsZSBzdGFydCBhdCAkYnJhY2VfZW5kKVxuIiBpZiAoJGluX2JyYWNlcyA8IDApOwotCi0g
ICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRoZXNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9w
YXJlbnRoZXNlczsKLQotICAgIHJldHVybiBkZWxldGVfbmFtZXNwYWNlc19mcm9tX3Jhbmdlc19m
b3JfY3BwKEByYW5nZXMsIEBhbGxfbmFtZXNwYWNlcyk7Ci19Ci0KLQotIyBUYWtlIGluIHJlZmVy
ZW5jZXMgdG8gYW4gYXJyYXkgb2YgbGluZSByYW5nZXMgZm9yIEMgZnVuY3Rpb25zIGluIGEgZ2l2
ZW4gZmlsZSAKLSMgYW5kIGFuIGFycmF5IG9mIG5hbWVzcGFjZXMgZGVjbGFyZWQgaW4gdGhhdCBm
aWxlIGFuZCByZXR1cm4gYW4gdXBkYXRlZAotIyBsaXN0IG9mIGxpbmUgcmFuZ2VzIHdpdGggdGhl
IG5hbWVzcGFjZXMgcmVtb3ZlZC4KLQotc3ViIGRlbGV0ZV9uYW1lc3BhY2VzX2Zyb21fcmFuZ2Vz
X2Zvcl9jcHAoXEBcQCkKLXsKLSAgICBteSAoJHJhbmdlcywgJG5hbWVzcGFjZXMpID0gQF87Ci0g
ICAgcmV0dXJuIGdyZXAgeyFpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJG5hbWVzcGFjZXMsICQk
X1syXSl9IEAkcmFuZ2VzOwotfQotCi0KLXN1YiBpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2UoJCQp
Ci17Ci0gICAgbXkgKCRuYW1lc3BhY2VzLCAkZnVuY3Rpb25fbmFtZSkgPSBAXzsKLSAgICByZXR1
cm4gZ3JlcCB7JF8gZXEgJGZ1bmN0aW9uX25hbWV9IEAkbmFtZXNwYWNlczsKLX0KLQotCi0jIFJl
YWQgYSBmaWxlIGFuZCBnZXQgYWxsIHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQg
bG9vayBsaWtlIEphdmEKLSMgY2xhc3NlcywgaW50ZXJmYWNlcyBhbmQgbWV0aG9kcy4KLSMKLSMg
QSBjbGFzcyBvciBpbnRlcmZhY2UgbmFtZSBpcyB0aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZv
bGxvd3MKLSMgYGNsYXNzJyBvciBgaW50ZXJmYWNlJyB3aGVuIGZvbGxvd2VkIGJ5IGFuIG9wZW4g
Y3VybHkgYnJhY2UgYW5kIG5vdAotIyBhIHNlbWljb2xvbi4gSXQgY2FuIGFwcGVhciBhdCB0aGUg
dG9wIGxldmVsLCBvciBpbnNpZGUgYW5vdGhlciBjbGFzcwotIyBvciBpbnRlcmZhY2UgYmxvY2ss
IGJ1dCBub3QgaW5zaWRlIGEgZnVuY3Rpb24gYmxvY2sKLSMKLSMgQSBjbGFzcyBvciBpbnRlcmZh
Y2Ugc3RhcnRzIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGZpcnN0IGNsb3NlCi0j
IGJyYWNlIG9yIGFmdGVyIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBlbmRzIGF0IHRoZSBjbG9zZSBi
cmFjZS4KLSMKLSMgQSBmdW5jdGlvbiBuYW1lIGlzIHRoZSBsYXN0IHdvcmQgYmVmb3JlIGFuIG9w
ZW4gcGFyZW50aGVzaXMgYmVmb3JlCi0jIGFuIG9wZW4gYnJhY2UgcmF0aGVyIHRoYW4gYSBzZW1p
Y29sb24uIEl0IGNhbiBhcHBlYXIgYXQgdG9wIGxldmVsIG9yCi0jIGluc2lkZSBhIGNsYXNzIG9y
IGludGVyZmFjZSBibG9jaywgYnV0IG5vdCBpbnNpZGUgYSBmdW5jdGlvbiBibG9jay4KLSMKLSMg
QSBmdW5jdGlvbiBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgZmlyc3Qg
Y2xvc2UKLSMgYnJhY2Ugb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uIG5hbWUgYW5kIGVuZHMgYXQgdGhl
IGNsb3NlIGJyYWNlLgotIwotIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0
IHdpbGwgd29yayBmb3IgYWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBp
cyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFt
ZSBdLgotCi1zdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhKCQkKQotewotICAg
IG15ICgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87Ci0KLSAgICBteSBAY3VycmVudF9z
Y29wZXM7Ci0KLSAgICBteSBAcmFuZ2VzOwotCi0gICAgbXkgJGluX2NvbW1lbnQgPSAwOwotICAg
IG15ICRpbl9tYWNybyA9IDA7Ci0gICAgbXkgJGluX3BhcmVudGhlc2VzID0gMDsKLSAgICBteSAk
aW5fYnJhY2VzID0gMDsKLSAgICBteSAkaW5fbm9uX2Jsb2NrX2JyYWNlcyA9IDA7Ci0gICAgbXkg
JGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOwotICAgIG15ICRpbl9jbGFzc19kZWNs
YXJhdGlvbiA9IDA7Ci0KLSAgICBteSAkd29yZCA9ICIiOwotCi0gICAgbXkgJHBvdGVudGlhbF9z
dGFydCA9IDA7Ci0gICAgbXkgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAgbXkgJHBvdGVudGlh
bF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7Ci0KLSAgICBteSAkc3RhcnQgPSAwOwot
ICAgIG15ICRuYW1lID0gIiI7Ci0gICAgbXkgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19vcl9pbnRl
cmZhY2UgPSAwOwotCi0gICAgd2hpbGUgKDwkZmlsZV9oYW5kbGU+KSB7Ci0gICAgICAgICMgSGFu
ZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQuCi0gICAgICAgIGlmICgkaW5fY29tbWVu
dCkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwqLy0tOwotICAgICAgICAgICAgJGlu
X2NvbW1lbnQgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgIyBIYW5kbGUgY29udGludWVkIG1h
Y3JvLgotICAgICAgICBpZiAoJGluX21hY3JvKSB7Ci0gICAgICAgICAgICAkaW5fbWFjcm8gPSAw
IHVubGVzcyAvXFwkLzsKLSAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgIH0KLQotICAgICAgICAj
IEhhbmRsZSBzdGFydCBvZiBtYWNybyAob3IgYW55IHByZXByb2Nlc3NvciBkaXJlY3RpdmUpLgot
ICAgICAgICBpZiAoL15ccypcIy8pIHsKLSAgICAgICAgICAgICRpbl9tYWNybyA9IDEgaWYgL14o
W15cXF18XFwuKSpcXCQvOwotICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgfQotCi0gICAgICAg
ICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgd2hpbGUgKG0tKC9c
KnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAgZW1hY3MgcGVybCBtb2RlIGhhcHB5Ci0g
ICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKLSAgICAgICAgICAgIGlmICgkbWF0Y2ggZXEgIi8q
IikgewotICAgICAgICAgICAgICAgIGlmICghcy0vXCouKj9cKi8tLSkgewotICAgICAgICAgICAg
ICAgICAgICBzLS9cKi4qLS07Ci0gICAgICAgICAgICAgICAgICAgICRpbl9jb21tZW50ID0gMTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lmICgkbWF0Y2ggZXEgIi8vIikg
ewotICAgICAgICAgICAgICAgIHMtLy8uKi0tOwotICAgICAgICAgICAgfSBlbHNlIHsgIyAnIG9y
ICIKLSAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNoKFteXFxdfFxcLikqPyRtYXRjaC0tKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4g
aW4gJGZpbGVfbmFtZVxuIjsKLSAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0tOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgICMgRmlu
ZCBmdW5jdGlvbiBuYW1lcy4KLSAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fTtdKS1nKSB7Ci0g
ICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCi0gICAgICAgICAgICBpZiAoJDEgZXEgIigi
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Ci0gICAgICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAwOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAkaW5fcGFyZW50aGVzZXMrKzsKLSAgICAgICAgICAgICAgICBu
ZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lzLgot
ICAgICAgICAgICAgaWYgKCQxIGVxICIpIikgewotICAgICAgICAgICAgICAgICRpbl9wYXJlbnRo
ZXNlcy0tOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICMgT3BlbiBicmFjZS4KLSAgICAgICAgICAgIGlmICgkMSBlcSAieyIpIHsKLSAgICAgICAg
ICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAwOwotCi0gICAgICAgICAgICAgICAgIyBQ
cm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rpb24gbmFtZSBhdCB0aGUKLSAgICAg
ICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBvdXRlciBsZXZlbCBzZXQgb2YgYnJhY2VzIChmdW5j
dGlvbi9jbGFzcy9pbnRlcmZhY2UgYm9keT8pLgotICAgICAgICAgICAgICAgIGlmICghJGluX25v
bl9ibG9ja19icmFjZXMKLSAgICAgICAgICAgICAgICAgICAgYW5kICghJGluX2JyYWNlcyBvciAk
Y3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSkKLSAgICAgICAgICAgICAgICAgICAg
YW5kICRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHJhbmdlcywgWyAkc3RhcnQsICgkLiAt
IDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbiAoJy4n
LCBAY3VycmVudF9zY29wZXMpIF07Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotCi0gICAgICAg
ICAgICAgICAgICAgICRjdXJyZW50X25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gJHBvdGVu
dGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZTsKLQotICAgICAgICAgICAgICAgICAgICAk
c3RhcnQgPSAkcG90ZW50aWFsX3N0YXJ0OwotICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICRw
b3RlbnRpYWxfbmFtZTsKLQotICAgICAgICAgICAgICAgICAgICBwdXNoIChAY3VycmVudF9zY29w
ZXMsICRuYW1lKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICAkaW5fbm9uX2Jsb2NrX2JyYWNlcysrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOwotICAgICAgICAgICAgICAgICRwb3RlbnRpYWxf
c3RhcnQgPSAwOwotCi0gICAgICAgICAgICAgICAgJGluX2JyYWNlcysrOwotICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgQ2xvc2UgYnJhY2UuCi0g
ICAgICAgICAgICBpZiAoJDEgZXEgIn0iKSB7Ci0gICAgICAgICAgICAgICAgJGluX2JyYWNlcy0t
OwotCi0gICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0ZXIgbGV2ZWwgc2V0IG9mIGJyYWNl
cy4KLSAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUgYSBmdW5jdGlvbiBib2R5LgotICAg
ICAgICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19icmFjZXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCRuYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5nZXMs
IFsgJHN0YXJ0LCAkLiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBq
b2luICgnLicsIEBjdXJyZW50X3Njb3BlcykgXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAg
cG9wIChAY3VycmVudF9zY29wZXMpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGN1
cnJlbnRfc2NvcGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbmFt
ZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAxOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJHN0YXJ0ID0gJC4gKyAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0g
ICRjdXJyZW50X3Njb3Blc1skI2N1cnJlbnRfc2NvcGVzLTFdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY3VycmVudF9uYW1l
X2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHN0YXJ0ID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSA9ICAiIjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICRpbl9ub25fYmxvY2tfYnJhY2Vz
LS0gaWYgJGluX25vbl9ibG9ja19icmFjZXM7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlh
bF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgIyBTZW1pY29sb24uCi0gICAgICAgICAgICBpZiAoJDEgZXEgIjsiKSB7Ci0gICAg
ICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Ci0gICAgICAgICAgICAgICAgJHBvdGVu
dGlhbF9uYW1lID0gIiI7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIpIHsKLSAgICAgICAgICAgICAgICAkaW5fY2xh
c3NfZGVjbGFyYXRpb24gPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCQxIGVx
ICJjbGFzcyIgb3IgKCEkaW5fY2xhc3NfZGVjbGFyYXRpb24gYW5kICQxIGVxICJpbnRlcmZhY2Ui
KSkgewotICAgICAgICAgICAgICAgICRjbGFzc19vcl9pbnRlcmZhY2VfanVzdF9zZWVuID0gMTsK
LSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAjIFdv
cmQuCi0gICAgICAgICAgICAkd29yZCA9ICQxOwotICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50
aGVzZXMpIHsKLSAgICAgICAgICAgICAgICBpZiAoJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3Nl
ZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Ci0gICAg
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsKLSAgICAgICAgICAgICAgICAg
ICAgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOwotICAgICAgICAgICAgICAgICAg
ICAkcG90ZW50aWFsX25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJmYWNlID0gMTsKLSAgICAgICAgICAg
ICAgICAgICAgbmV4dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoISRwb3RlbnRpYWxfc3RhcnQpIHsKLSAgICAgICAgICAgICAgICAkcG90ZW50aWFs
X3N0YXJ0ID0gJC47Ci0gICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAkY2xhc3Nfb3JfaW50ZXJmYWNlX2p1c3Rfc2VlbiA9IDA7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3YXJuICJtaXNtYXRjaGVkIGJyYWNlcyBpbiAkZmls
ZV9uYW1lXG4iIGlmICRpbl9icmFjZXM7Ci0gICAgd2FybiAibWlzbWF0Y2hlZCBwYXJlbnRoZXNl
cyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9wYXJlbnRoZXNlczsKLQotICAgIHJldHVybiBAcmFu
Z2VzOwotfQotCi0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMg
b2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZQotIyBKYXZhU2NyaXB0IGZ1bmN0aW9ucyBvciBt
ZXRob2RzLgotIwotIyBBIGZ1bmN0aW9uIG5hbWUgaXMgdGhlIHdvcmQgdGhhdCBpbW1lZGlhdGVs
eSBmb2xsb3dzIGBmdW5jdGlvbicgd2hlbgotIyBmb2xsb3dlZCBieSBhbiBvcGVuIGN1cmx5IGJy
YWNlLiBJdCBjYW4gYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWwsCi0jIG9yIGluc2lkZSBvdGhlciBm
dW5jdGlvbnMuIEZvciBleGFtcGxlOgotIwotIyAgICBmdW5jdGlvbiBuYW1lKCkgeyAvLyAobmFt
ZSkKLSMgICAgICAgIGZ1bmN0aW9uIGlubmVyKCkgeyB9IC8vIChuYW1lLmlubmVyKQotIyAgICB9
Ci0jCi0jIEFuIGFub255bW91cyBmdW5jdGlvbiBuYW1lIGlzIHRoZSBpZGVudGlmaWVyIG9uIHRo
ZSBsZWZ0IGhhbmQgc2lkZSBvZgotIyBhbiBhc3NpZ25tZW50IHdpdGggdGhlIGVxdWFscyBvcGVy
YXRvciBvciBvYmplY3Qgbm90YXRpb24gdGhhdCBoYXMgYQotIyB2YWx1ZSBzdGFydGluZyB3aXRo
IGBmdW5jdGlvbicgZm9sbG93ZWQgYW4gb3BlbiBjdXJseSBicmFjZS4KLSMgRm9yIGV4YW1wbGU6
Ci0jCi0jICAgIG5hbWVzcGFjZSA9IHsKLSMgICAgICAgIG5hbWU6IGZ1bmN0aW9uKCkge30gLy8g
KG5hbWVzcGFjZS5uYW1lKQotIyAgICB9Ci0jICAgIG5hbWVzcGFjZS5Gb28gPSBmdW5jdGlvbigp
IHt9IC8vIChuYW1lc3BhY2UuRm9vKQotIwotIyBBIGdldHRlciBvciBzZXR0ZXIgbmFtZSBpcyB0
aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3MgYGdldCcgb3IKLSMgYHNldCcgd2hlbiBm
b2xsb3dlZCBieSBwYXJhbXMgYW5kIGFuIG9wZW4gY3VybHkgYnJhY2UuIEZvciBleGFtcGxlOgot
IwotIyAgICBuYW1lc3BhY2UgPSB7Ci0jICAgICAgZ2V0IGZvbygpIHt9IC8vIChuYW1lc3BhY2Uu
Z2V0IGZvbykKLSMgICAgfQotIwotIyBBIG1ldGhvZCBuYW1lIGlzIHRoZSB3b3JkIGltbWVkaWF0
ZWx5IGJlZm9yZSBwYXJlbnRoZXNpcywgd2l0aCBhbiBvcGVuCi0jIGN1cmx5IGJyYWNlIGltbWVk
aWF0ZWx5IGZvbGxvd2luZyBjbG9zaW5nIHBhcmVudGhlc2lzLiBGb3IgYSBjbGFzcyBleHByZXNz
aW9uCi0jIHdlIHRha2UgdGhlIGFzc2lnbm1lbnQgaWRlbnRpZmllciBpbnN0ZWFkIG9mIHRoZSBj
bGFzcyBuYW1lIGZvciBuYW1lc3BhY2luZy4KLSMKLSMgICAgbmFtZXNwYWNlLkZvbyA9IGNsYXNz
IERvZXNOb3RNYXR0ZXIgZXh0ZW5kcyBCYXIgewotIyAgICAgICAgY29uc3RydWN0b3IoKSB7fSAv
LyAobmFtZXNwYWNlLkZvbykKLSMgICAgICAgIHN0YXRpYyBzdGF0aWNNZXRob2QoKSB7fSAvLyAo
bmFtZXNwYWNlLkZvby5zdGF0aWNNZXRob2QpCi0jICAgICAgICBpbnN0YW5jZU1ldGhvZCgpIHt9
IC8vIChuYW1lc3BhY2UuRm9vLnByb3RvdHlwZS5pbnN0YW5jZU1ldGhvZCkKLSMgICAgICAgIGdl
dCBnZXR0ZXIoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5wcm90b3R5cGUuZ2V0IGdldHRlcikKLSMg
ICAgfQotIyAgICBjbGFzcyBDbGFzc05hbWUgewotIyAgICAgICAgY29uc3RydWN0b3IoKSB7fSAv
LyAoQ2xhc3NOYW1lKQotIyAgICAgICAgbWV0aG9kKCkge30gLy8gKENsYXNzTmFtZS5wcm90b3R5
cGUubWV0aG9kKQotIyAgICB9Ci0jCi0jIE1ldGhvZHMgbWF5IGV4aXN0IGluIG9iamVjdCBsaXRl
cmFscywgb3V0c2lkZSBvZiBjbGFzc2VzLgotIwotIyAgIEZvby5wcm90b3R5cGUgPSB7Ci0jICAg
ICAgIG1ldGhvZCgpIHt9LCAvLyAoRm9vLnByb3RvdHlwZS5tZXRob2QpCi0jICAgICAgIG90aGVy
TWV0aG9kKCkge30gLy8gKEZvby5wcm90b3R5cGUub3RoZXJNZXRob2QpCi0jICAgfQotIwotIyBD
b21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0IHdpbGwgd29yayBmb3IgYWxsIGJ1
dCBwYXRob2xvZ2ljYWwgY2FzZXMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczog
WyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFtZSBdLgotCi1zdWIgZ2V0X2Z1bmN0
aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0KCQkKQotewotICAgIG15ICgkZmlsZUhhbmRs
ZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQGN1cnJlbnRTY29wZXM7Ci0gICAgbXkgQGN1
cnJlbnRJZGVudGlmaWVyczsKLSAgICBteSBAY3VycmVudFBhcnNpbmdNb2RlID0gKCJnbG9iYWwi
KTsKLSAgICBteSBAY3VycmVudEZ1bmN0aW9uTmFtZXM7Ci0gICAgbXkgQGN1cnJlbnRGdW5jdGlv
bkRlcHRoczsKLSAgICBteSBAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lczsKLQotICAgIG15IEBy
YW5nZXM7Ci0KLSAgICBteSAkaW5Db21tZW50ID0gMDsKLSAgICBteSAkaW5RdW90ZWRUZXh0ID0g
IiI7Ci0gICAgbXkgJGluRXh0ZW5kcyA9IDA7Ci0gICAgbXkgJGluTWV0aG9kID0gMDsKLSAgICBt
eSAkaW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnMgPSAwOwotICAgIG15ICRwYXJlbnRoZXNl
c0RlcHRoID0gMDsKLSAgICBteSAkZ2xvYmFsUGFyZW50aGVzZXNEZXB0aCA9IDA7Ci0gICAgbXkg
JGJyYWNlc0RlcHRoID0gMDsKLQotICAgIG15ICRjbGFzc0p1c3RTZWVuID0gMDsKLSAgICBteSAk
cGFyZW50aGVzaXNKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJGZ1bmN0aW9uSnVzdFNlZW4gPSAwOwot
ICAgIG15ICRnZXR0ZXJKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJHNldHRlckp1c3RTZWVuID0gMDsK
LSAgICBteSAkYXN5bmNKdXN0U2VlbiA9IDA7Ci0gICAgbXkgJGFzc2lnbm1lbnRKdXN0U2VlbiA9
IDA7Ci0gICAgbXkgJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gPSAwOwotCi0gICAgbXkgJGN1cnJl
bnRUb2tlbiA9ICIiOwotICAgIG15ICRsYXN0VG9rZW4gPSAiIjsKLSAgICBteSAkcG9zc2libGVN
ZXRob2ROYW1lID0gIiI7Ci0gICAgbXkgJHdvcmQgPSAiIjsKLQotICAgIHdoaWxlICg8JGZpbGVI
YW5kbGU+KSB7Ci0gICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQu
Ci0gICAgICAgIGlmICgkaW5Db21tZW50KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyBzLS4q
XCovLS07Ci0gICAgICAgICAgICAkaW5Db21tZW50ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAg
ICMgSGFuZGxlIGNvbnRpbnVlZCBxdW90ZWQgdGV4dC4KLSAgICAgICAgaWYgKCRpblF1b3RlZFRl
eHQgbmUgIiIpIHsKLSAgICAgICAgICAgIG5leHQgaWYgL1xcJC87Ci0gICAgICAgICAgICBzLShb
XlxcXXxcXC4pKj8kaW5RdW90ZWRUZXh0LS07Ci0gICAgICAgICAgICAkaW5RdW90ZWRUZXh0ID0g
IiI7Ci0gICAgICAgIH0KLQotICAgICAgICAjIEhhbmRsZSBjb21tZW50cyBhbmQgcXVvdGVkIHRl
eHQuCi0gICAgICAgIHdoaWxlIChtLSgvXCp8Ly98XCd8XCIpLSkgeyAjIFwnIGFuZCBcIiBrZWVw
IGVtYWNzIHBlcmwgbW9kZSBoYXBweQotICAgICAgICAgICAgbXkgJG1hdGNoID0gJDE7Ci0gICAg
ICAgICAgICBpZiAoJG1hdGNoIGVxICcvKicpIHsKLSAgICAgICAgICAgICAgICBpZiAoIXMtL1wq
Lio/XCovLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgcy0vXCouKi0tOwotICAgICAgICAgICAg
ICAgICAgICAkaW5Db21tZW50ID0gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2lmICgkbWF0Y2ggZXEgJy8vJykgewotICAgICAgICAgICAgICAgIHMtLy8uKi0tOwotICAg
ICAgICAgICAgfSBlbHNlIHsgIyAnIG9yICIKLSAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNo
KFteXFxdfFxcLikqPyRtYXRjaC1zdHJpbmdfYXBwZWFyZWRfaGVyZS0pIHsKLSAgICAgICAgICAg
ICAgICAgICAgJGluUXVvdGVkVGV4dCA9ICRtYXRjaCBpZiAvXFwkLzsKLSAgICAgICAgICAgICAg
ICAgICAgd2FybiAibWlzbWF0Y2hlZCBxdW90ZXMgYXQgbGluZSAkLiBpbiAkZmlsZU5hbWVcbiIg
aWYgJGluUXVvdGVkVGV4dCBlcSAiIjsKLSAgICAgICAgICAgICAgICAgICAgcy0kbWF0Y2guKi0t
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
ICMgRmluZCBmdW5jdGlvbiBuYW1lcy4KLSAgICAgICAgd2hpbGUgKG0tKFx3K3xbKCl7fT06Oywu
XSktZykgewotICAgICAgICAgICAgIyBTa2lwIGV2ZXJ5dGhpbmcgdW50aWwgInsiIGFmdGVyIGV4
dGVuZHMuCi0gICAgICAgICAgICBpZiAoJGluRXh0ZW5kcykgewotICAgICAgICAgICAgICAgIG5l
eHQgaWYgJDEgbmUgJ3snOwotICAgICAgICAgICAgICAgICRpbkV4dGVuZHMgPSAwOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAkbGFzdFRva2VuID0gJGN1cnJlbnRUb2tlbjsKLSAgICAg
ICAgICAgICRjdXJyZW50VG9rZW4gPSAkMTsKLQotICAgICAgICAgICAgIyBPcGVuIHBhcmVudGhl
c2lzLgotICAgICAgICAgICAgaWYgKCQxIGVxICcoJykgewotICAgICAgICAgICAgICAgICRwYXJl
bnRoZXNlc0RlcHRoKys7Ci0gICAgICAgICAgICAgICAgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGgr
KyBpZiAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3VycmVudFBhcnNpbmdNb2RlXSBlcSAiZ2xvYmFs
IjsKLSAgICAgICAgICAgICAgICAkcG9zc2libGVNZXRob2ROYW1lID0gam9pbignLicsIEBjdXJy
ZW50SWRlbnRpZmllcnMpOwotICAgICAgICAgICAgICAgICRpbkFub255bW91c0Z1bmN0aW9uUGFy
YW1ldGVycyA9IDEgaWYgJGZ1bmN0aW9uSnVzdFNlZW47Ci0gICAgICAgICAgICAgICAgJGZ1bmN0
aW9uSnVzdFNlZW4gPSAwOwotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICMgQ2xvc2UgcGFyZW50aGVzaXMuCi0gICAgICAgICAgICBpZiAoJDEgZXEg
JyknKSB7Ci0gICAgICAgICAgICAgICAgJHBhcmVudGhlc2VzRGVwdGgtLTsKLSAgICAgICAgICAg
ICAgICAkZ2xvYmFsUGFyZW50aGVzZXNEZXB0aC0tIGlmICRjdXJyZW50UGFyc2luZ01vZGVbJCNj
dXJyZW50UGFyc2luZ01vZGVdIGVxICJnbG9iYWwiOwotICAgICAgICAgICAgICAgIEBjdXJyZW50
SWRlbnRpZmllcnMgPSAoKSBpZiAkaW5Bbm9ueW1vdXNGdW5jdGlvblBhcmFtZXRlcnM7Ci0gICAg
ICAgICAgICAgICAgJGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzID0gMDsKLSAgICAgICAg
ICAgICAgICAkcGFyZW50aGVzaXNKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBPcGVuIGJyYWNlLgotICAgICAgICAgICAg
aWYgKCQxIGVxICd7JykgewotICAgICAgICAgICAgICAgIG15ICRtZXRob2ROYW1lID0gIiI7Ci0g
ICAgICAgICAgICAgICAgbXkgJG1vZGUgPSAkY3VycmVudFBhcnNpbmdNb2RlWyQjY3VycmVudFBh
cnNpbmdNb2RlXTsKLQotICAgICAgICAgICAgICAgICMgTWV0aG9kLgotICAgICAgICAgICAgICAg
IGlmICgoJG1vZGUgZXEgJ2NsYXNzJyBvciAkbW9kZSBlcSAnZ2xvYmFsJykgYW5kICRwYXJlbnRo
ZXNpc0p1c3RTZWVuIGFuZCAoJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gb3IgJHBvc3NpYmxlTWV0
aG9kTmFtZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCRtb2RlIGVxICdjbGFzcycpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2ROYW1lID0gam9pbignLicsICRzdGF0aWNP
ckNvbnRydWN0b3JTZWVuID8gIiIgOiAicHJvdG90eXBlIiwgJHBvc3NpYmxlTWV0aG9kTmFtZSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAk
bWV0aG9kTmFtZSA9ICRwb3NzaWJsZU1ldGhvZE5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgICAgICAgICAkbWV0aG9kTmFtZSA9fiBzL1wuezIsfS9cLi9nOyAjIFJl
bW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KLSAgICAgICAgICAgICAgICAgICAgJG1ldGhvZE5h
bWUgPX4gcy9cLiQvLzsgIyBSZW1vdmUgdHJhaWxpbmcgcGVyaW9kLgotCi0gICAgICAgICAgICAg
ICAgICAgIG15ICRjdXJyZW50TWV0aG9kID0gam9pbignLicsIEBjdXJyZW50U2NvcGVzLCAkbWV0
aG9kTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICRjdXJyZW50TWV0aG9kID1+IHMvXC57Mix9
L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgotICAgICAgICAgICAgICAgICAg
ICAkY3VycmVudE1ldGhvZCA9fiBzL1wuJC8vOyAjIFJlbW92ZSB0cmFpbGluZyBwZXJpb2QuCi0K
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAibWV0aG9kIik7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVu
dE1ldGhvZCk7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbkRlcHRo
cywgJGJyYWNlc0RlcHRoKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0
aW9uU3RhcnRMaW5lcywgJC4pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
ICRicmFjZXNEZXB0aCsrOwotICAgICAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsK
LQotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRTY29wZXMsIGpvaW4oJy4nLCAkbWV0aG9k
TmFtZSA/ICRtZXRob2ROYW1lIDogQGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAg
ICAgIEBjdXJyZW50SWRlbnRpZmllcnMgPSAoKTsKLQotICAgICAgICAgICAgICAgICRzdGF0aWNP
ckNvbnRydWN0b3JTZWVuID0gMDsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAjIENsb3NlIGJyYWNlLgotICAgICAgICAgICAgaWYgKCQxIGVxICd9
JykgewotICAgICAgICAgICAgICAgICRicmFjZXNEZXB0aC0tOwotICAgICAgICAgICAgICAgICRm
dW5jdGlvbkp1c3RTZWVuID0gMDsKLQotICAgICAgICAgICAgICAgIGlmIChAY3VycmVudEZ1bmN0
aW9uRGVwdGhzIGFuZCAkYnJhY2VzRGVwdGggPT0gJGN1cnJlbnRGdW5jdGlvbkRlcHRoc1skI2N1
cnJlbnRGdW5jdGlvbkRlcHRoc10pIHsKLSAgICAgICAgICAgICAgICAgICAgcG9wKEBjdXJyZW50
RnVuY3Rpb25EZXB0aHMpOwotICAgICAgICAgICAgICAgICAgICBwb3AoQGN1cnJlbnRQYXJzaW5n
TW9kZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbXkgJGN1cnJlbnROYW1lID0gcG9wKEBjdXJy
ZW50RnVuY3Rpb25OYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRzdGFydCA9IHBvcChA
Y3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgJGN1cnJl
bnROYW1lID1+IHMvXlwuLy9nOyAjIFJlbW92ZXMgbGVhZGluZyBwZXJpb2RzLgotCi0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydCwgJC4sICRjdXJyZW50TmFtZV0pOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHBvcChAY3VycmVudFNjb3Blcyk7
Ci0gICAgICAgICAgICAgICAgQGN1cnJlbnRJZGVudGlmaWVycyA9ICgpOwotCi0gICAgICAgICAg
ICAgICAgbmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBEb3QuCi0gICAgICAg
ICAgICBpZiAoJDEgZXEgJy4nKSB7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBTZW1pY29sb24gb3IgY29tbWEuCi0gICAgICAgICAgICBpZiAo
JDEgZXEgJzsnIG9yICQxIGVxICcsJykgewotICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRp
ZmllcnMgPSAoKTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAjIENsYXNzLgotICAgICAgICAgICAgaWYgKCQxIGVxICdjbGFzcycpIHsKLSAgICAg
ICAgICAgICAgICAkY2xhc3NKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBFeHRlbmRzLgotICAgICAgICAgICAgaWYgKCQx
IGVxICdleHRlbmRzJykgewotICAgICAgICAgICAgICAgICRpbkV4dGVuZHMgPSAxOwotICAgICAg
ICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgRnVuY3Rpb24u
Ci0gICAgICAgICAgICBpZiAoJDEgZXEgJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgICAgICRm
dW5jdGlvbkp1c3RTZWVuID0gMTsKLQotICAgICAgICAgICAgICAgIGlmICgkYXNzaWdubWVudEp1
c3RTZWVuKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSBqb2lu
KCcuJywgKEBjdXJyZW50U2NvcGVzLCBAY3VycmVudElkZW50aWZpZXJzKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24gPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNv
bnNlY3V0aXZlIHBlcmlvZHMuCi0KLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBh
cnNpbmdNb2RlLCAiZnVuY3Rpb24iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY3VycmVu
dEZ1bmN0aW9uTmFtZXMsICRjdXJyZW50RnVuY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0aCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAjIEdldHRlciBwcmVmaXguCi0gICAgICAgICAgICBpZiAoJDEgZXEgJ2dldCcpIHsKLSAg
ICAgICAgICAgICAgICBuZXh0IGlmICRsYXN0VG9rZW4gZXEgJy4nOyAjIEF2b2lkIG1hcC5nZXQo
Li4uKS4KLSAgICAgICAgICAgICAgICAkZ2V0dGVySnVzdFNlZW4gPSAxOwotICAgICAgICAgICAg
ICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgU2V0dGVyIHByZWZpeC4K
LSAgICAgICAgICAgIGlmICgkMSBlcSAnc2V0JykgewotICAgICAgICAgICAgICAgIG5leHQgaWYg
JGxhc3RUb2tlbiBlcSAnLic7ICMgQXZvaWQgbWFwLnNldCguLi4pLgotICAgICAgICAgICAgICAg
ICRzZXR0ZXJKdXN0U2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBBc3luYyBwcmVmaXguCi0gICAgICAgICAgICBpZiAoJDEgZXEg
J2FzeW5jJykgewotICAgICAgICAgICAgICAgIG5leHQgaWYgJGxhc3RUb2tlbiBlcSAnLic7Ci0g
ICAgICAgICAgICAgICAgJGFzeW5jSnVzdFNlZW4gPSAxOwotICAgICAgICAgICAgICAgIG5leHQ7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICMgU3RhdGljLgotICAgICAgICAgICAgaWYg
KCQxIGVxICdzdGF0aWMnIG9yICQxIGVxICdjb25zdHJ1Y3RvcicpIHsKLSAgICAgICAgICAgICAg
ICAkc3RhdGljT3JDb250cnVjdG9yU2VlbiA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgIyBBc3NpZ25tZW50IG9wZXJhdG9yLgotICAgICAg
ICAgICAgaWYgKCQxIGVxICc9JyBvciAkMSBlcSAnOicpIHsKLSAgICAgICAgICAgICAgICAkYXNz
aWdubWVudEp1c3RTZWVuID0gMTsKLSAgICAgICAgICAgICAgICBuZXh0OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBuZXh0IGlmICRwYXJlbnRoZXNlc0RlcHRoID4gJGdsb2JhbFBhcmVu
dGhlc2VzRGVwdGg7Ci0KLSAgICAgICAgICAgICMgV29yZC4KLSAgICAgICAgICAgICR3b3JkID0g
JDE7Ci0KLSAgICAgICAgICAgIGlmICgkY2xhc3NKdXN0U2VlbikgewotICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdvcmQpIGlmICEkYXNzaWdubWVudEp1c3RTZWVu
OwotCi0gICAgICAgICAgICAgICAgbXkgJGN1cnJlbnRDbGFzcyA9IGpvaW4oJy4nLCAoQGN1cnJl
bnRTY29wZXMsIEBjdXJyZW50SWRlbnRpZmllcnMpKTsKLSAgICAgICAgICAgICAgICAkY3VycmVu
dENsYXNzID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgot
Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAiY2xhc3MiKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRDbGFzcyk7
Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVw
dGgpOwotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQu
KTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRnZXR0ZXJKdXN0U2VlbiBvciAkc2V0dGVySnVzdFNl
ZW4gb3IgJGFzeW5jSnVzdFNlZW4pIHsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJnZXQgJHdv
cmQiIGlmICRnZXR0ZXJKdXN0U2VlbjsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJzZXQgJHdv
cmQiIGlmICRzZXR0ZXJKdXN0U2VlbjsKLSAgICAgICAgICAgICAgICAkd29yZCA9ICJhc3luYyAk
d29yZCIgaWYgJGFzeW5jSnVzdFNlZW47Ci0KLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50
SWRlbnRpZmllcnMsICR3b3JkKTsKLQotICAgICAgICAgICAgICAgIG15ICRtb2RlID0gJGN1cnJl
bnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJzaW5nTW9kZV07Ci0gICAgICAgICAgICAgICAgbXkg
JGN1cnJlbnRGdW5jdGlvbiA9IGpvaW4oJy4nLCAoQGN1cnJlbnRTY29wZXMsICgkbW9kZSBlcSAn
Y2xhc3MnIGFuZCAhJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4pID8gInByb3RvdHlwZSIgOiAiIiwg
QGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAgICAgICRjdXJyZW50RnVuY3Rpb24g
PX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCi0KLSAgICAg
ICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJmdW5jdGlvbiIpOwotICAgICAg
ICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVudEZ1bmN0aW9uKTsK
LSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0
aCk7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uU3RhcnRMaW5lcywgJC4p
OwotICAgICAgICAgICAgfSBlbHNpZiAoJGZ1bmN0aW9uSnVzdFNlZW4gYW5kICEkYXNzaWdubWVu
dEp1c3RTZWVuKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAk
d29yZCk7Ci0KLSAgICAgICAgICAgICAgICBteSAkY3VycmVudEZ1bmN0aW9uID0gam9pbignLics
IChAY3VycmVudFNjb3BlcywgQGN1cnJlbnRJZGVudGlmaWVycykpOwotICAgICAgICAgICAgICAg
ICRjdXJyZW50RnVuY3Rpb24gPX4gcy9cLnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZl
IHBlcmlvZHMuCi0KLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2luZ01vZGUsICJm
dW5jdGlvbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAk
Y3VycmVudEZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25E
ZXB0aHMsICRicmFjZXNEZXB0aCk7Ci0gICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0
aW9uU3RhcnRMaW5lcywgJC4pOwotICAgICAgICAgICAgfSBlbHNpZiAoJHdvcmQgbmUgJ2lmJyBh
bmQgJHdvcmQgbmUgJ2ZvcicgYW5kICR3b3JkIG5lICdkbycgYW5kICR3b3JkIG5lICd3aGlsZScg
YW5kICR3b3JkIG5lICd3aGljaCcgYW5kICR3b3JkIG5lICd2YXInKSB7Ci0gICAgICAgICAgICAg
ICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAkd29yZCk7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICRjbGFzc0p1c3RTZWVuID0gMDsKLSAgICAgICAgICAgICRwYXJlbnRoZXNpc0p1
c3RTZWVuID0gMDsKLSAgICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsKLSAgICAgICAg
ICAgICRnZXR0ZXJKdXN0U2VlbiA9IDA7Ci0gICAgICAgICAgICAkc2V0dGVySnVzdFNlZW4gPSAw
OwotICAgICAgICAgICAgJGFzeW5jSnVzdFNlZW4gPSAwOwotICAgICAgICAgICAgJGFzc2lnbm1l
bnRKdXN0U2VlbiA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB3YXJuICJtaXNtYXRjaGVk
IGJyYWNlcyBpbiAkZmlsZU5hbWVcbiIgaWYgJGJyYWNlc0RlcHRoOwotICAgIHdhcm4gIm1pc21h
dGNoZWQgcGFyZW50aGVzZXMgaW4gJGZpbGVOYW1lXG4iIGlmICRwYXJlbnRoZXNlc0RlcHRoOwot
Ci0gICAgcmV0dXJuIEByYW5nZXM7Ci19Ci0KLSMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhl
IGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgUGVybCBmdW5jdGlvbnMu
IEZ1bmN0aW9ucwotIyBzdGFydCBvbiBhIGxpbmUgdGhhdCBzdGFydHMgd2l0aCAic3ViICIsIGFu
ZCBlbmQgb24gdGhlIGZpcnN0IGxpbmUgc3RhcnRpbmcgd2l0aCAifSIgdGhlcmVhZnRlci4KLSMK
LSMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBm
dW5jdGlvbiBdLgotCi1zdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9wZXJsKCQkKQot
ewotICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdl
czsKLQotICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSAiIjsKLSAgICBteSAkc3RhcnQgPSAwOwot
ICAgIG15ICRoZXJlRG9jdW1lbnRJZGVudGlmaWVyID0gIiI7Ci0KLSAgICB3aGlsZSAoPCRmaWxl
SGFuZGxlPikgewotICAgICAgICBjaG9tcDsKLSAgICAgICAgaWYgKCEkaGVyZURvY3VtZW50SWRl
bnRpZmllcikgewotICAgICAgICAgICAgaWYgKC9ec3ViXHMrKFtcd19dW1x3XGRfXSopLykgewot
ICAgICAgICAgICAgICAgICMgU2tpcCBvdmVyIGZvcndhcmQgZGVjbGFyYXRpb25zLCB3aGljaCBk
b24ndCBjb250YWluIGEgYnJhY2UgYW5kIGVuZCB3aXRoIGEgc2VtaWNvbG9uLgotICAgICAgICAg
ICAgICAgIG5leHQgaWYgLztccyokLzsKLQotICAgICAgICAgICAgICAgIGlmICgkY3VycmVudEZ1
bmN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4gIm5lc3RlZCBmdW5jdGlvbnMgZm91
bmQgYXQgdG9wLWxldmVsIGF0ICRmaWxlTmFtZTokLlxuIjsKLSAgICAgICAgICAgICAgICAgICAg
bmV4dDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlv
biA9ICQxOwotICAgICAgICAgICAgICAgICRzdGFydCA9ICQuOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKC88PFxzKltcIlwnXT8oW1x3X11bXHdfXGRdKikvKSB7Ci0gICAgICAgICAg
ICAgICAgIyBFbnRlciBoZXJlLWRvY3VtZW50LgotICAgICAgICAgICAgICAgICRoZXJlRG9jdW1l
bnRJZGVudGlmaWVyID0gJDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaW5kZXgo
JF8sICJ9IikgPT0gMCkgewotICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRzdGFydDsKLSAg
ICAgICAgICAgICAgICBwdXNoKEByYW5nZXMsIFskc3RhcnQsICQuLCAkY3VycmVudEZ1bmN0aW9u
XSk7Ci0gICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOwotICAgICAgICAgICAg
ICAgICRzdGFydCA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKCRfIGVxICRo
ZXJlRG9jdW1lbnRJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICAjIEVzY2FwZSBmcm9tIGhlcmUt
ZG9jdW1lbnQuCi0gICAgICAgICAgICAkaGVyZURvY3VtZW50SWRlbnRpZmllciA9ICIiOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIEByYW5nZXM7Ci19Ci0KLSMgUmVhZCBhIGZpbGUg
YW5kIGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2Ug
UHl0aG9uIGNsYXNzZXMsIG1ldGhvZHMsIG9yIGZ1bmN0aW9ucy4KLSMKLSMgRklYTUU6IE1heWJl
IHdlIHNob3VsZCB1c2UgUHl0aG9uJ3MgYXN0IG1vZHVsZSB0byBkbyB0aGUgcGFyc2luZyBmb3Ig
dXM/Ci0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRf
bGluZSwgZnVuY3Rpb24gXS4KLQotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcHl0
aG9uKCQkKQotewotICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAg
bXkgQHJhbmdlczsKLQotICAgIG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU2VudGluZWxSZWdF
eCA9IHFyIyg/OiIiInwnJycpIzsKLSAgICBteSAkbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFN0YXJ0
UmVnRXggPSBxciNccyokbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXgjOwotICAg
IG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXggPSBxciMkbXVsdGlsaW5lU3RyaW5n
TGl0ZXJhbFNlbnRpbmVsUmVnRXhccyokIzsKLQotICAgIG15IEBzY29wZVN0YWNrID0gKHsgbGlu
ZSA9PiAwLCBpbmRlbnQgPT4gLTEsIG5hbWUgPT4gdW5kZWYgfSk7Ci0gICAgbXkgJGxhc3RMaW5l
ID0gMDsKLSAgICBteSAkaW5Db21tZW50ID0gMDsKLSAgICB1bnRpbCAoJGxhc3RMaW5lKSB7Ci0g
ICAgICAgICRfID0gPCRmaWxlSGFuZGxlPjsKLSAgICAgICAgdW5sZXNzICgkXykgewotICAgICAg
ICAgICAgIyBUbyBwb3Agb3V0IGFsbCBwb3BwZWQgc2NvcGVzLCBydW4gdGhlIGxvb3Agb25jZSBt
b3JlIGFmdGVyCi0gICAgICAgICAgICAjIHdlIGVuY291bnRlcmVkIHRoZSBlbmQgb2YgdGhlIGZp
bGUuCi0gICAgICAgICAgICAkXyA9ICJwYXNzXG4iOwotICAgICAgICAgICAgJC4rKzsKLSAgICAg
ICAgICAgICRsYXN0TGluZSA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgY2hvbXA7Ci0gICAgICAg
IG5leHQgdW5sZXNzIC9eKFxzKikoW14jXS4qKSQvOyAjIFNraXAgbm9uLWluZGVudGVkIGxpbmVz
IHRoYXQgYmVnaW4gd2l0aCBhIGNvbW1lbnQuCi0KLSAgICAgICAgbXkgJGluZGVudCA9IGxlbmd0
aCAkMTsKLSAgICAgICAgbXkgJHJlc3QgPSAkMjsKLSAgICAgICAgbXkgJHNjb3BlID0gJHNjb3Bl
U3RhY2tbLTFdOwotCi0gICAgICAgIGlmICgkaW5kZW50IDw9ICRzY29wZS0+e2luZGVudH0pIHsK
LSAgICAgICAgICAgICMgRmluZCBhbGwgdGhlIHNjb3BlcyB0aGF0IHdlIGhhdmUganVzdCBleGl0
ZWQuCi0gICAgICAgICAgICBteSAkaSA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgJGkgPCBAc2Nv
cGVTdGFjazsgKyskaSkgewotICAgICAgICAgICAgICAgIGxhc3QgaWYgJGluZGVudCA8PSAkc2Nv
cGVTdGFja1skaV0tPntpbmRlbnR9OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbXkgQHBv
cHBlZFNjb3BlcyA9IHNwbGljZSBAc2NvcGVTdGFjaywgJGk7Ci0KLSAgICAgICAgICAgICMgRm9y
IGVhY2ggc2NvcGUgdGhhdCB3YXMganVzdCBleGl0ZWQsIGFkZCBhIHJhbmdlIHRoYXQgZ29lcyBm
cm9tIHRoZSBzdGFydCBvZiB0aGF0Ci0gICAgICAgICAgICAjIHNjb3BlIHRvIHRoZSBzdGFydCBv
ZiB0aGUgbmV4dCBuZXN0ZWQgc2NvcGUsIG9yIHRvIHRoZSBsaW5lIGp1c3QgYmVmb3JlIHRoaXMg
b25lIGZvcgotICAgICAgICAgICAgIyB0aGUgaW5uZXJtb3N0IHNjb3BlLgotICAgICAgICAgICAg
Zm9yICgkaSA9IDA7ICRpIDwgQHBvcHBlZFNjb3BlczsgKyskaSkgewotICAgICAgICAgICAgICAg
IG15ICRsaW5lQWZ0ZXJFbmQgPSAkaSArIDEgPT0gQHBvcHBlZFNjb3BlcyA/ICQuIDogJHBvcHBl
ZFNjb3Blc1skaSArIDFdLT57bGluZX07Ci0gICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBb
JHBvcHBlZFNjb3Blc1skaV0tPntsaW5lfSwgJGxpbmVBZnRlckVuZCAtIDEsICRwb3BwZWRTY29w
ZXNbJGldLT57bmFtZX1dOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQHNjb3BlU3RhY2sg
b3Igd2FybiAiUG9wcGVkIG9mZiBsYXN0IHNjb3BlIGF0ICRmaWxlTmFtZTokLlxuIjsKLQotICAg
ICAgICAgICAgIyBTZXQgdGhlIG5vdy1jdXJyZW50IHNjb3BlIHRvIHN0YXJ0IGF0IHRoZSBjdXJy
ZW50IGxpbmUuIEFueSBsaW5lcyB3aXRoaW4gdGhpcyBzY29wZQotICAgICAgICAgICAgIyBiZWZv
cmUgdGhpcyBwb2ludCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8gQHJhbmdlcy4K
LSAgICAgICAgICAgICRzY29wZSA9ICRzY29wZVN0YWNrWy0xXTsKLSAgICAgICAgICAgICRzY29w
ZS0+e2xpbmV9ID0gJC47Ci0gICAgICAgIH0KLQotICAgICAgICAjIFNraXAgbXVsdGktbGluZSBz
dHJpbmcgbGl0ZXJhbHMgYW5kIGRvY3N0cmluZ3MuCi0gICAgICAgIG5leHQgaWYgLyRtdWx0aWxp
bmVTdHJpbmdMaXRlcmFsU3RhcnRSZWdFeC4qJG11bHRpbGluZVN0cmluZ0xpdGVyYWxFbmRSZWdF
eC87Ci0gICAgICAgIGlmICghJGluQ29tbWVudCAmJiAvJG11bHRpbGluZVN0cmluZ0xpdGVyYWxT
dGFydFJlZ0V4LykgewotICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7Ci0gICAgICAgIH0gZWxz
aWYgKCRpbkNvbW1lbnQgJiYgLyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXgvKSB7Ci0g
ICAgICAgICAgICAkaW5Db21tZW50ID0gMDsKLSAgICAgICAgfQotICAgICAgICBuZXh0IGlmICRp
bkNvbW1lbnQ7Ci0KLSAgICAgICAgbmV4dCBpZiAvXlxzKlsjJyJdLzsgIyBTa2lwIGluZGVudGVk
IGFuZCBub24taW5kZW50ZWQgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGEgY29tbWVudCBvciBzdHJp
bmcgbGl0ZXJhbCAoaW5jbHVkZXMgZG9jc3RyaW5ncykuCi0KLSAgICAgICAgbmV4dCB1bmxlc3Mg
JHJlc3QgPX4gLyg/OmNsYXNzfGRlZilccysoXHcrKS87Ci0gICAgICAgIG15ICRuYW1lID0gJDE7
Ci0gICAgICAgIG15ICRmdWxsTmFtZSA9ICRzY29wZS0+e25hbWV9ID8gam9pbignLicsICRzY29w
ZS0+e25hbWV9LCAkbmFtZSkgOiAkbmFtZTsKLSAgICAgICAgcHVzaCBAc2NvcGVTdGFjaywgeyBs
aW5lID0+ICQuLCBpbmRlbnQgPT4gJGluZGVudCwgbmFtZSA9PiAkZnVsbE5hbWUgfTsKLQotICAg
ICAgICBpZiAoJHNjb3BlLT57aW5kZW50fSA+PSAwKSB7Ci0gICAgICAgICAgICBwdXNoIEByYW5n
ZXMsIFskc2NvcGUtPntsaW5lfSwgJC4gLSAxLCAkc2NvcGUtPntuYW1lfV07Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICByZXR1cm4gQHJhbmdlczsKLX0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0
IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBDU1Mgc2Vs
ZWN0b3JzLiAgQSBzZWxlY3RvciBpcwotIyBhbnl0aGluZyBiZWZvcmUgYW4gb3BlbmluZyBicmFj
ZSBvbiBhIGxpbmUuIEEgc2VsZWN0b3Igc3RhcnRzIGF0IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhl
IG9wZW5pbmcKLSMgYnJhY2UgYW5kIGVuZHMgYXQgdGhlIGNsb3NpbmcgYnJhY2UuCi0jCi0jIFJl
c3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgc2VsZWN0
b3IgXS4KLQotc3ViIGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKCQkKQotewotICAg
IG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwotCi0gICAgbXkgQHJhbmdlczsKLQot
ICAgIG15ICRpbkNvbW1lbnQgPSAwOwotICAgIG15ICRpbkJyYWNlID0gMDsKLSAgICBteSBAc3Rh
Y2s7Ci0gICAgbXkgJGNvbnRleHQ7Ci0gICAgbXkgQGN1cnJlbnRQYXJzZU1vZGUgPSAoImdsb2Jh
bCIpOwotICAgIG15IEBncm91cGluZ1N0YWNrOwotICAgIG15ICRzZWxlY3RvckJyYWNlcyA9IDA7
Ci0KLSAgICB3aGlsZSAoPCRmaWxlSGFuZGxlPikgewotICAgICAgICBmb3JlYWNoIG15ICR0b2tl
biAoc3BsaXQgbS0oXHt8XH18L1wqfFwqLyktLCAkXykgewotICAgICAgICAgICAgaWYgKCR0b2tl
biBlcSAieyIpIHsKLSAgICAgICAgICAgICAgICBpZiAoISRpbkNvbW1lbnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgJGluQnJhY2UgKz0gMTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAkc2VsZWN0b3JCcmFjZXMgKz0gMSBpZiAkY3VycmVudFBhcnNlTW9kZVskI2N1
cnJlbnRQYXJzZU1vZGVdIGVxICJzZWxlY3RvciI7Ci0gICAgICAgICAgICAgICAgICAgIHdhcm4g
Im1pc21hdGNoZWQgb3BlbmluZyBicmFjZSBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYgJHNl
bGVjdG9yQnJhY2VzID4gMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2lm
ICgkdG9rZW4gZXEgIn0iKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICghJGluQnJhY2Ugb3IgJGN1cnJlbnRQYXJzZU1vZGVbJCNj
dXJyZW50UGFyc2VNb2RlXSBlcSAiZ2xvYmFsIikgewotICAgICAgICAgICAgICAgICAgICAgICAg
d2FybiAibWlzbWF0Y2hlZCBjbG9zaW5nIGJyYWNlIGZvdW5kIGluICRmaWxlTmFtZTokLlxuIjsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgICAgICAkaW5CcmFjZSAtPSAxOwotCi0gICAgICAgICAgICAgICAgICAg
IG15ICRwYXJzZU1vZGUgPSBwb3AoQGN1cnJlbnRQYXJzZU1vZGUpOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoJHBhcnNlTW9kZSBlcSAic2VsZWN0b3IiKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBteSAkbmFtZSA9IHBvcChAc3RhY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkg
JHN0YXJ0TGluZSA9IHBvcChAc3RhY2spOwotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGVu
ZExpbmUgPSAkLjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRncm91cGluZ1ByZWZpeCA9
IGpvaW4oIiAiLCBAZ3JvdXBpbmdTdGFjayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGVuZ3RoICRncm91cGluZ1ByZWZpeCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRn
cm91cGluZ1ByZWZpeCAuPSAiICIKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydExpbmUsICRlbmRMaW5lLCAkZ3Jv
dXBpbmdQcmVmaXggLiAkbmFtZV0pOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2lmICgkcGFy
c2VNb2RlIGVxICJtZWRpYSIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBvcChAZ3JvdXBp
bmdTdGFjayk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAk
c2VsZWN0b3JCcmFjZXMgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxz
aWYgKCR0b2tlbiBlcSAiLyoiKSB7Ci0gICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7Ci0g
ICAgICAgICAgICB9IGVsc2lmICgkdG9rZW4gZXEgIiovIikgewotICAgICAgICAgICAgICAgIHdh
cm4gIm1pc21hdGNoZWQgY29tbWVudCBmb3VuZCBpbiAkZmlsZU5hbWU6JC5cbiIgaWYgISRpbkNv
bW1lbnQ7Ci0gICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGlmICghJGluQ29tbWVudCBhbmQgJGN1cnJlbnRQYXJzZU1v
ZGVbJCNjdXJyZW50UGFyc2VNb2RlXSBuZSAic2VsZWN0b3IiIGFuZCAkdG9rZW4gIX4gL15bXHNc
dF0qJC8pIHsKLSAgICAgICAgICAgICAgICAgICAgJHRva2VuID1+IHMvXltcc1x0XSp8W1xzXHRd
KiQvL2c7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRzdGFydExpbmUgPSAkLjsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCR0b2tlbiA9fiAvXlxAbWVkaWEvKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2VNb2RlLCAibWVkaWEiKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGdyb3VwaW5nU3RhY2ssICR0b2tlbik7Ci0gICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50UGFyc2VN
b2RlLCAic2VsZWN0b3IiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQHN0YWNrLCAo
JHN0YXJ0TGluZSwgJHRva2VuKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAjIFNvcnQgYnkg
c3RhcnQgbGluZS4KLSAgICByZXR1cm4gc29ydCB7JGEtPlswXSA8PT4gJGItPlswXX0gQHJhbmdl
czsKLX0KLQotIyBSZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhl
IHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBTd2lmdCBjbGFzc2VzLCBtZXRob2RzLAotIyBvciBmdW5j
dGlvbnMuCi0jCi0jIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBl
bmRfbGluZSwgZnVuY3Rpb24gXS4KLQotc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3Jf
c3dpZnQoJCQpCi17Ci0gICAgbXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87Ci0KLSAg
ICBteSBAcmFuZ2VzOwotCi0gICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOwotICAgIG15ICRj
dXJyZW50VHlwZSA9ICIiOwotICAgIG15ICRmdW5jdGlvblN0YXJ0ID0gMDsKLSAgICBteSAkdHlw
ZVN0YXJ0ID0gMDsKLSAgICBteSAkZnVuY3Rpb25TY29wZURlcHRoID0gMDsKLSAgICBteSAkdHlw
ZVNjb3BlRGVwdGggPSAwOwotICAgIG15ICRzY29wZURlcHRoID0gMDsKLQotICAgIHdoaWxlICg8
JGZpbGVIYW5kbGU+KSB7Ci0gICAgICAgIGNob21wOwotICAgICAgICBuZXh0IGlmICgvXlxzKlwv
XC8uKi8pOwotICAgICAgICBpZiAoL2Z1bmNccysoW1x3X11bXHdcZF9dKilcKCguKilcKS8gfHwg
L3ZhclxzKyhbXHdfXVtcd1xkX10qKTpccysvKSB7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TY29w
ZURlcHRoID0gJHNjb3BlRGVwdGg7Ci0gICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gJDE7
Ci0gICAgICAgICAgICBpZiAoJDIpIHsKLSAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9u
ID0gIiRjdXJyZW50RnVuY3Rpb24oIi4gcGFyc2VTd2lmdEZ1bmN0aW9uQXJncygkMikgLiAiKSI7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoJGN1cnJlbnRUeXBlKSB7Ci0gICAgICAg
ICAgICAgICAgJGN1cnJlbnRGdW5jdGlvbiA9ICIkY3VycmVudFR5cGUuJGN1cnJlbnRGdW5jdGlv
biI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9ICQuOwotICAg
ICAgICB9IGVsc2lmICgvKD86Y2xhc3N8c3RydWN0fGVudW18cHJvdG9jb2x8ZXh0ZW5zaW9uKVxz
KyhbXHdfXVtcd1xkX10qKS8pIHsKLSAgICAgICAgICAgICR0eXBlU2NvcGVEZXB0aCA9ICRzY29w
ZURlcHRoOwotICAgICAgICAgICAgJGN1cnJlbnRUeXBlID0gJDE7Ci0gICAgICAgICAgICAkdHlw
ZVN0YXJ0ID0gJC47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGluZGV4KCRfLCAieyIpID4gLTEp
IHsKLSAgICAgICAgICAgICRzY29wZURlcHRoKys7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlu
ZGV4KCRfLCAifSIpID4gLTEpIHsKLSAgICAgICAgICAgICRzY29wZURlcHRoLS07Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCRzY29wZURlcHRoID09ICRmdW5jdGlvblNjb3BlRGVwdGgpIHsKLSAg
ICAgICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvblN0YXJ0OwotICAgICAgICAgICAgcHVzaChA
cmFuZ2VzLCBbJGZ1bmN0aW9uU3RhcnQsICQuLCAkY3VycmVudEZ1bmN0aW9uXSk7Ci0gICAgICAg
ICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiI7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9
IDA7Ci0gICAgICAgIH0gZWxzaWYgKCRzY29wZURlcHRoID09ICR0eXBlU2NvcGVEZXB0aCkgewot
ICAgICAgICAgICAgbmV4dCB1bmxlc3MgJHR5cGVTdGFydDsKLSAgICAgICAgICAgICRjdXJyZW50
VHlwZSA9ICIiOwotICAgICAgICAgICAgJHR5cGVTdGFydCA9IDA7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gQHJhbmdlczsKLX0KLQotc3ViIHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3Mo
JCkKLXsKLSAgICBteSAoJGZ1bmN0aW9uQXJncykgPSBAXzsKLSAgICBteSBAd29yZHMgPSBzcGxp
dCAvLCAvLCAkZnVuY3Rpb25BcmdzOwotICAgIG15ICRhcmdDb3VudCA9IHNjYWxhcihAd29yZHMp
OwotICAgIGlmICgkYXJnQ291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfSBl
bHNpZiAoJGFyZ0NvdW50ID4gMCkgewotICAgICAgICAjIElmIHRoZSBmaXJzdCBhcmd1bWVudCBp
cyB1bm5hbWVkLCBnaXZlIGl0IHRoZSBuYW1lICJfIgotICAgICAgICAkd29yZHNbMF0gPX4gcy9e
KFx3KzogLiopL18gJDEvOwotICAgICAgICByZXR1cm4gam9pbigiIiwgbWFwIHsgJF8gPX4gcy9e
KFx3KykuKi8kMS87ICIkXzoiIH0gQHdvcmRzKTsKLSAgICB9IGVsc2UgewotICAgICAgICB3YXJu
ICJVbmtub3duIGFyZ3VtZW50IGNvdW50LlxuIjsKLSAgICB9Ci19Ci0KIHN1YiBwcm9jZXNzUGF0
aHMoXEApCiB7CiAgICAgbXkgKCRwYXRocykgPSBAXzsKQEAgLTIwODYsOCArNjc2LDggQEAgc3Vi
IGRpZmZDb21tYW5kKCQkJCQpCiB7CiAgICAgbXkgKCRwYXRocywgJGdpdENvbW1pdCwgJGdpdElu
ZGV4LCAkbWVyZ2VCYXNlKSA9IEBfOwogCi0gICAgIyBUaGUgZnVuY3Rpb24gb3ZlcmxhcCBkZXRl
Y3Rpb24gbG9naWMgaW4gY29tcHV0ZU1vZGlmaWVkRnVuY3Rpb25zKCkgYXNzdW1lcyB0aGF0IGl0
cyBsaW5lCi0gICAgIyByYW5nZXMgd2VyZSBmcm9tIGEgdW5pZmllZCBkaWZmIHdpdGhvdXQgYW55
IGNvbnRleHQgbGluZXMuCisgICAgIyBUaGUgZnVuY3Rpb24gb3ZlcmxhcCBkZXRlY3Rpb24gbG9n
aWMgaW4gd2Via2l0cGVybDo6Y2hhbmdlbG9nOjpjb21wdXRlTW9kaWZpZWRGdW5jdGlvbnMoKQor
ICAgICMgYXNzdW1lcyB0aGF0IGl0cyBsaW5lIHJhbmdlcyB3ZXJlIGZyb20gYSB1bmlmaWVkIGRp
ZmYgd2l0aG91dCBhbnkgY29udGV4dCBsaW5lcy4KICAgICBteSAkY29tbWFuZDsKICAgICBpZiAo
aXNTVk4oKSkgewogICAgICAgICBteSBAZXNjYXBlZFBhdGhzID0gbWFwKGVzY2FwZVN1YnZlcnNp
b25QYXRoKCRfKSwgQCRwYXRocyk7CkBAIC0yMTIwLDQ3ICs3MTAsNiBAQCBzdWIgc3RhdHVzQ29t
bWFuZCgkJCQkKQogICAgIHJldHVybiAiJGNvbW1hbmQgMj4mMSI7CiB9CiAKLXN1YiBhdHRyaWJ1
dGVDb21tYW5kKCQkJCkKLXsKLSAgICBteSAoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZSwgJGF0dHIp
ID0gQF87Ci0KLSAgICBteSAkcmVzdWx0OwotICAgIGlmIChpc1NWTigpKSB7Ci0gICAgICAgIG15
ICRkZXZOdWxsID0gRmlsZTo6U3BlYy0+ZGV2bnVsbCgpOwotICAgICAgICBteSAkZm91bmRBdHRy
aWJ1dGUgPSAwOwotICAgICAgICBteSAkc3ViUGF0aCA9ICIuIjsKLSAgICAgICAgbXkgKEBkaXJl
Y3RvcnlQYXJ0cykgPSBGaWxlOjpTcGVjLT5zcGxpdGRpcigkZmlsZSk7Ci0gICAgICAgIGZvcmVh
Y2ggbXkgJHBhcnQgKEBkaXJlY3RvcnlQYXJ0cykgewotICAgICAgICAgICAgaWYgKCRwYXJ0IGVx
ICIuIikgewotICAgICAgICAgICAgICAgIG5leHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAkc3ViUGF0aCA9IEZpbGU6OlNwZWMtPmpvaW4oJHN1YlBhdGgsICRwYXJ0KTsKLSAgICAgICAg
ICAgICRzdWJQYXRoID1+IHMvXlwuXC8vLzsKLSAgICAgICAgICAgIGlmICgkZm91bmRBdHRyaWJ1
dGUgfHwgZXhpc3RzICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gJiYgJGF0dHJp
YnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSBlcSAiMSIpIHsKLSAgICAgICAgICAgICAgICAk
YXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JHN1YlBhdGh9ID0gIjEiOwotICAgICAgICAgICAgICAg
ICRmb3VuZEF0dHJpYnV0ZSA9IDE7Ci0gICAgICAgICAgICAgICAgbmV4dDsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIG15ICRjb21tYW5kID0gU1ZOIC4gIiBwcm9wZ2V0ICRhdHRyICckc3Vi
UGF0aCciOwotICAgICAgICAgICAgbXkgJGF0dHJpYiA9ICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRy
fXskc3ViUGF0aH0gfHwgYCRjb21tYW5kIDI+ICRkZXZOdWxsYDsKLSAgICAgICAgICAgIGNob21w
ICRhdHRyaWI7Ci0gICAgICAgICAgICBpZiAoJGF0dHJpYiBlcSAiMSIpIHsKLSAgICAgICAgICAg
ICAgICAkZm91bmRBdHRyaWJ1dGUgPSAxOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgJGF0
dHJpYnV0ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSA9ICRhdHRyaWIgfHwgIjAiOwotICAgICAg
ICB9Ci0gICAgICAgICRyZXN1bHQgPSAkYXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JGZpbGV9Owot
ICAgIH0gZWxzaWYgKGlzR2l0KCkpIHsKLSAgICAgICAgbXkgJGNvbW1hbmQgPSBHSVQgLiAiIGNo
ZWNrLWF0dHIgJGF0dHIgLS0gJyRmaWxlJyI7Ci0gICAgICAgICRyZXN1bHQgPSBgJGNvbW1hbmRg
OwotICAgICAgICBjaG9tcCAkcmVzdWx0OwotICAgICAgICAkcmVzdWx0ID1+IHMvLipcVyhcdykv
JDEvOwotICAgIH0KLQotICAgICRyZXN1bHQgPX4gcy9cRC8vZzsKLSAgICByZXR1cm4gaW50KCRy
ZXN1bHQgfHwgMCk7Ci19Ci0KIHN1YiBjcmVhdGVQYXRjaENvbW1hbmQoJCQkJCkKIHsKICAgICBt
eSAoJGNoYW5nZWRGaWxlc1N0cmluZywgJGdpdENvbW1pdCwgJGdpdEluZGV4LCAkbWVyZ2VCYXNl
KSA9IEBfOwpAQCAtMjQ1OSwzNCArMTAwOCw2IEBAIHN1YiBwcm9wZXJ0eUNoYW5nZURlc2NyaXB0
aW9uKCQpCiAgICAgcmV0dXJuICRkZXNjcmlwdGlvbjsKIH0KIAotc3ViIGV4dHJhY3RMaW5lUmFu
Z2VBZnRlckNoYW5nZSgkKQotewotICAgIG15ICgkc3RyaW5nKSA9IEBfOwotICAgIG15ICRjaHVu
a1JhbmdlID0gcGFyc2VDaHVua1JhbmdlKCRzdHJpbmcpOwotICAgIGlmICghJGNodW5rUmFuZ2Up
IHsKLSAgICAgICAgcmV0dXJuICgtMSwgLTEpOyAjIE1hbGZvcm1lZAotICAgIH0KLSAgICBpZiAo
ISRjaHVua1JhbmdlLT57bmV3U3RhcnRpbmdMaW5lfSB8fCAhJGNodW5rUmFuZ2UtPntuZXdMaW5l
Q291bnR9KSB7Ci0gICAgICAgICAjIERlbGV0aW9uOyBubyBsaW5lcyBleGlzdCBhZnRlciBjaGFu
Z2UuCi0gICAgICAgIHJldHVybiAoJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9LCAkY2h1
bmtSYW5nZS0+e25ld1N0YXJ0aW5nTGluZX0pOwotICAgIH0KLSAgICByZXR1cm4gKCRjaHVua1Jh
bmdlLT57bmV3U3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9ICsg
JGNodW5rUmFuZ2UtPntuZXdMaW5lQ291bnR9IC0gMSk7Ci19Ci0KLXN1YiBleHRyYWN0TGluZVJh
bmdlQmVmb3JlQ2hhbmdlKCQpCi17Ci0gICAgbXkgKCRzdHJpbmcpID0gQF87Ci0gICAgbXkgJGNo
dW5rUmFuZ2UgPSBwYXJzZUNodW5rUmFuZ2UoJHN0cmluZyk7Ci0gICAgaWYgKCEkY2h1bmtSYW5n
ZSkgewotICAgICAgICByZXR1cm4gKC0xLCAtMSk7ICMgTWFsZm9ybWVkCi0gICAgfQotICAgIGlm
ICghJGNodW5rUmFuZ2UtPntzdGFydGluZ0xpbmV9IHx8ICEkY2h1bmtSYW5nZS0+e2xpbmVDb3Vu
dH0pIHsKLSAgICAgICAgIyBBZGRpdGlvbjsgbm8gbGluZXMgZXhpc3RlZCBiZWZvcmUgY2hhbmdl
LgotICAgICAgICByZXR1cm4gKCRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSwgJGNodW5rUmFu
Z2UtPntzdGFydGluZ0xpbmV9KTsKLSAgICB9Ci0gICAgcmV0dXJuICgkY2h1bmtSYW5nZS0+e3N0
YXJ0aW5nTGluZX0sICRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSArICRjaHVua1JhbmdlLT57
bGluZUNvdW50fSAtIDEpOwotfQotCiBzdWIgdGVzdExpc3RGb3JDaGFuZ2VMb2coQCkKIHsKICAg
ICBteSAoQHRlc3RzKSA9IEBfOwpAQCAtMjU3MywxNCArMTA5NCwzIEBAIHN1YiBub3JtYWxpemVM
aW5lRW5kaW5ncygkJCkKICAgICAkc3RyaW5nID1+IHMvXHI/XG4vJGVuZGwvZzsKICAgICByZXR1
cm4gJHN0cmluZzsKIH0KLQotc3ViIGRlY29kZUVudGl0aWVzKCQpCi17Ci0gICAgbXkgKCR0ZXh0
KSA9IEBfOwotICAgICR0ZXh0ID1+IHMvXCZsdDsvPC9nOwotICAgICR0ZXh0ID1+IHMvXCZndDsv
Pi9nOwotICAgICR0ZXh0ID1+IHMvXCZxdW90Oy9cIi9nOwotICAgICR0ZXh0ID1+IHMvXCZhcG9z
Oy9cJy9nOwotICAgICR0ZXh0ID1+IHMvXCZhbXA7L1wmL2c7Ci0gICAgcmV0dXJuICR0ZXh0Owot
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MgYi9Ub29scy9TY3JpcHRzL3J1
bi1sZWFrcwppbmRleCAyMDVmYzY0ZTJlNGEuLmU5NDM5YzExODMyZSAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy9ydW4tbGVha3MKKysrIGIvVG9vbHMvU2NyaXB0cy9ydW4tbGVha3MKQEAgLTMz
LDExICszMywxMiBAQCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBGaWxlOjpCYXNlbmFtZTsKIHVzZSBH
ZXRvcHQ6Okxvbmc7Cit1c2UgQ2FycDsKK3VzZSBGaW5kQmluOwordXNlIGxpYiAkRmluZEJpbjo6
UmVhbEJpbjsKK3VzZSB3ZWJraXRwZXJsOjpsZWFrcyBxdyhydW5MZWFrcywgcGFyc2VMZWFrc091
dHB1dCk7CiAKLXN1YiBydW5MZWFrcygkJCk7Ci1zdWIgcGFyc2VMZWFrc091dHB1dChcQCk7CiBz
dWIgcmVtb3ZlTWF0Y2hpbmdSZWNvcmRzKFxAJFxAKTsKLXN1YiByZXBvcnRFcnJvcigkKTsKIAog
c3ViIG1haW4oKQogewpAQCAtNzEsNyArNzIsNyBAQCBzdWIgbWFpbigpCiAgICAgfQogCiAgICAg
aWYgKCEkcGlkT3JFeGVjdXRhYmxlTmFtZSkgewotICAgICAgICByZXBvcnRFcnJvcigiTWlzc2lu
ZyBhcmd1bWVudDogcGlkIHwgZXhlY3V0YWJsZS4iKTsKKyAgICAgICAgY2FycCAiTWlzc2luZyBh
cmd1bWVudDogcGlkIHwgZXhlY3V0YWJsZS4iOwogICAgICAgICBwcmludCBTVERFUlIgJHVzYWdl
OwogICAgICAgICByZXR1cm4gMTsKICAgICB9CkBAIC04Myw5ICs4NCw2IEBAIHN1YiBtYWluKCkK
ICAgICB9CiAKICAgICBteSAkcGFyc2VkT3V0cHV0ID0gcGFyc2VMZWFrc091dHB1dChAJGxlYWtz
T3V0cHV0KTsKLSAgICBpZiAoISRwYXJzZWRPdXRwdXQpIHsKLSAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgfQogCiAgICAgIyBGaWx0ZXIgb3V0cHV0LgogICAgICMgRklYTUU6IEFkanVzdCB0aGUgb3Zl
cmFsbCBsZWFrIGNvdW50IGluIHRoZSBvdXRwdXQgYWNjb3JkaW5nbHkuIFRoaXMgd2lsbCBhZmZl
Y3QgY2FsbGVycywgbm90YWJseSBsZWFrZGV0ZWN0b3IucHkuCkBAIC0xMTQsMTExICsxMTIsNiBA
QCBzdWIgbWFpbigpCiAKIGV4aXQobWFpbigpKTsKIAotIyBSZXR1cm5zIHRoZSBvdXRwdXQgb2Yg
dGhlIGxlYWtzIHRvb2wgaW4gbGlzdCBmb3JtLgotc3ViIHJ1bkxlYWtzKCQkKQotewotICAgIG15
ICgkdGFyZ2V0LCAkbWVtZ3JhcGhQYXRoKSA9IEBfOwotCi0gICAgaWYgKGRlZmluZWQgJG1lbWdy
YXBoUGF0aCkgewotICAgICAgICBgL3Vzci9iaW4vbGVha3MgXCIkdGFyZ2V0XCIgLS1vdXRwdXRH
cmFwaD1cIiRtZW1ncmFwaFBhdGhcImA7Ci0gICAgICAgICR0YXJnZXQgPSAkbWVtZ3JhcGhQYXRo
OwotICAgIH0KLQotICAgICMgVG8gZ2V0IGEgcmVzdWx0IHdlIGNhbiBwYXJzZSwgd2UgbmVlZCB0
byBwYXNzIC0tbGlzdCB0byBhbGwgdmVyc2lvbnMgb2YgdGhlIGxlYWtzIHRvb2wKLSAgICAjIHRo
YXQgcmVjb2duaXplIGl0LCBidXQgdGhlcmUgaXMgbm8gY2VydGFpbiB3YXkgdG8gdGVsbCBpbiBh
ZHZhbmNlICh0aGUgdmVyc2lvbiBvZiB0aGUKLSAgICAjIHRvb2wgaXMgbm90IGFsd2F5cyB0aWVk
IHRvIE9TIHZlcnNpb24sIGFuZCAtLWhlbHAgZG9lc24ndCBkb2N1bWVudCB0aGUgb3B0aW9uIGlu
IHNvbWUKLSAgICAjIG9mIHRoZSB0b29sIHZlcnNpb25zIHdoZXJlIGl0J3Mgc3VwcG9ydGVkIGFu
ZCBuZWVkZWQpLgotICAgIG15IEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJn
ZXRcIiAtLWxpc3RgOwotCi0gICAgIyBGSVhNRTogUmVtb3ZlIHRoZSBmYWxsYmFjayBvbmNlIG1h
Y09TIE1vamF2ZSBpcyB0aGUgb2xkZXN0IHN1cHBvcnRlZCB2ZXJzaW9uLgotICAgIG15ICRsZWFr
c0V4aXRDb2RlID0gJD8gPj4gODsKLSAgICBpZiAoJGxlYWtzRXhpdENvZGUgPiAxKSB7Ci0gICAg
ICAgIEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBcIiR0YXJnZXRcImA7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIFxAbGVha3NPdXRwdXQ7Ci19Ci0KLSMgUmV0dXJucyBhIGxpc3Qgb2YgaGFz
aCByZWZlcmVuY2VzIHdpdGggdGhlIGtleXMgeyBhZGRyZXNzLCBzaXplLCB0eXBlLCBjYWxsU3Rh
Y2ssIGxlYWtzT3V0cHV0IH0KLXN1YiBwYXJzZUxlYWtzT3V0cHV0KFxAKQotewotICAgIG15ICgk
bGVha3NPdXRwdXQpID0gQF87Ci0KLSAgICAjIEZvcm1hdDoKLSAgICAjICAgUHJvY2VzcyAwMDAw
MDogMTIzNCBub2RlcyBtYWxsb2NlZCBmb3IgMTIzNCBLQgotICAgICMgICBQcm9jZXNzIDAwMDAw
OiBYWCBsZWFrcyBmb3IgWFhYIHRvdGFsIGxlYWtlZCBieXRlcy4gICAgCi0gICAgIyAgIExlYWs6
IDB4MDAwMDAwMDAgc2l6ZT0xMjM0IFtpbnN0YW5jZSBvZiAnYmxhaCddCi0gICAgIyAgICAgICAw
eDAwMDAwMDAwIDB4MDAwMDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIGEuLmQuZS5lCi0gICAg
IyAgICAgICAuLi4KLSAgICAjICAgICAgIENhbGwgc3RhY2s6IGxlYWtfY2FsbGVyKCkgfCBsZWFr
KCkgfCBtYWxsb2MKLSAgICAjCi0gICAgIyAgIFdlIHRyZWF0IGV2ZXJ5IGxpbmUgZXhjZXB0IGZv
ciAgUHJvY2VzcyAwMDAwMDogYW5kIExlYWs6IGFzIG9wdGlvbmFsCi0KLSAgICBteSAkbGVha0Nv
dW50OwotICAgIG15IEBwYXJzZWRPdXRwdXQgPSAoKTsKLSAgICBteSAkcGFyc2luZ0xlYWsgPSAw
OwotICAgIG15ICRwYXJzZWRMZWFrQ291bnQgPSAwOwotICAgIGZvciBteSAkbGluZSAoQCRsZWFr
c091dHB1dCkgewotICAgICAgICBpZiAoJGxpbmUgPX4gL15Qcm9jZXNzIFxkKzogKFxkKykgbGVh
a3M/LykgewotICAgICAgICAgICAgJGxlYWtDb3VudCA9ICQxOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKCRsaW5lIGVxICJcbiIpIHsKLSAgICAgICAgICAgICRwYXJzaW5nTGVhayA9IDA7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoJGxpbmUgPX4gL15MZWFrOiAvKSB7Ci0gICAgICAgICAg
ICAkcGFyc2luZ0xlYWsgPSAxOwotICAgICAgICAgICAgJHBhcnNlZExlYWtDb3VudCsrOwotICAg
ICAgICAgICAgbXkgKCRhZGRyZXNzKSA9ICgkbGluZSA9fiAvTGVhazogKFtbOnhkaWdpdDpdeF0r
KS8pOwotICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRhZGRyZXNzKSkgewotICAgICAgICAgICAg
ICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3QgcGFyc2UgTGVhayBhZGRyZXNzLiIpOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbXkgKCRzaXpl
KSA9ICgkbGluZSA9fiAvc2l6ZT0oW1s6ZGlnaXQ6XV0rKS8pOwotICAgICAgICAgICAgaWYgKCFk
ZWZpbmVkKCRzaXplKSkgewotICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJDb3VsZCBub3Qg
cGFyc2UgTGVhayBzaXplLiIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgIyBGSVhNRTogVGhpcyBjb2RlIHNlZW1zIHdyb25nLCB0aGUgbGVh
a3MgdG9vbCBkb2Vzbid0IGFjdHVhbGx5IHVzZSBzaW5nbGUgcXVvdGVzLgotICAgICAgICAgICAg
IyBXZSBzaG91bGQgcmVjb25jaWxlIHdpdGggb3RoZXIgZm9ybWF0IGNoYW5nZXMgdGhhdCBoYXBw
ZW5lZCBzaW5jZSwgc3VjaCBhcyB0aGUKLSAgICAgICAgICAgICMgYWRkaXRpb24gb2Ygem9uZSBp
bmZvcm1hdGlvbi4KLSAgICAgICAgICAgIG15ICgkdHlwZSkgPSAoJGxpbmUgPX4gLycoW14nXSsp
Jy8pOyAjJwotICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCR0eXBlKSkgewotICAgICAgICAgICAg
ICAgICR0eXBlID0gIiI7ICMgVGhlIGxlYWtzIHRvb2wgc29tZXRpbWVzIG9taXRzIHRoZSB0eXBl
LgotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBteSAlbGVhayA9ICgKLSAgICAgICAgICAg
ICAgICAiYWRkcmVzcyIgPT4gJGFkZHJlc3MsCi0gICAgICAgICAgICAgICAgInNpemUiID0+ICRz
aXplLAotICAgICAgICAgICAgICAgICJ0eXBlIiA9PiAkdHlwZSwKLSAgICAgICAgICAgICAgICAi
Y2FsbFN0YWNrIiA9PiAiIiwgIyBUaGUgbGVha3MgdG9vbCBzb21ldGltZXMgb21pdHMgdGhlIGNh
bGwgc3RhY2suCi0gICAgICAgICAgICAgICAgImxlYWtzT3V0cHV0IiA9PiAkbGluZQotICAgICAg
ICAgICAgKTsKLSAgICAgICAgICAgIHB1c2goQHBhcnNlZE91dHB1dCwgXCVsZWFrKTsKLSAgICAg
ICAgfSBlbHNpZiAoJHBhcnNpbmdMZWFrKSB7Ci0gICAgICAgICAgICAkcGFyc2VkT3V0cHV0WyQj
cGFyc2VkT3V0cHV0XS0+eyJsZWFrc091dHB1dCJ9IC49ICRsaW5lOwotICAgICAgICAgICAgaWYg
KCRsaW5lID1+IC9DYWxsIHN0YWNrOi8pIHsKLSAgICAgICAgICAgICAgICAkcGFyc2VkT3V0cHV0
WyQjcGFyc2VkT3V0cHV0XS0+eyJjYWxsU3RhY2sifSA9ICRsaW5lOwotICAgICAgICAgICAgfQot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbXkgJW5vbkxlYWtMaW5lID0gKAotICAgICAg
ICAgICAgICAgICJsZWFrc091dHB1dCIgPT4gJGxpbmUKLSAgICAgICAgICAgICk7Ci0gICAgICAg
ICAgICBwdXNoKEBwYXJzZWRPdXRwdXQsIFwlbm9uTGVha0xpbmUpOwotICAgICAgICB9Ci0gICAg
fQotICAgIAotICAgIGlmICgkcGFyc2VkTGVha0NvdW50ICE9ICRsZWFrQ291bnQpIHsKLSAgICAg
ICAgcmVwb3J0RXJyb3IoIlBhcnNlZCBsZWFrIGNvdW50ICgkcGFyc2VkTGVha0NvdW50KSBkb2Vz
IG5vdCBtYXRjaCBsZWFrIGNvdW50IHJlcG9ydGVkIGJ5IGxlYWtzIHRvb2wgKCRsZWFrQ291bnQp
LiIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcmV0dXJuIFxAcGFyc2VkT3V0cHV0
OwotfQotCiBzdWIgcmVtb3ZlTWF0Y2hpbmdSZWNvcmRzKFxAJFxAKQogewogICAgIG15ICgkcmVj
b3JkTGlzdCwgJGtleSwgJHJlZ2V4cExpc3QpID0gQF87CkBAIC0yMzYsMTAgKzEyOSwzIEBAIHN1
YiByZW1vdmVNYXRjaGluZ1JlY29yZHMoXEAkXEApCiAgICAgICAgICRpKys7CiAgICAgfQogfQot
Ci1zdWIgcmVwb3J0RXJyb3IoJCkKLXsKLSAgICBteSAoJGVycm9yTWVzc2FnZSkgPSBAXzsKLSAg
ICAKLSAgICBwcmludCBTVERFUlIgYmFzZW5hbWUoJDApIC4gIjogJGVycm9yTWVzc2FnZVxuIjsK
LX0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0ZGlycy5wbQppbmRleCBlYjI2ZDI3NTdmMDUuLjE0NWEzYTIyMjJmMiAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0ZGlycy5wbQpAQCAtNDcsNiArNDcsNyBAQCB1c2UgTGlzdDo6VXRpbDsKIHVzZSBQT1NJWDsK
IHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwogdXNlIFZDU1V0aWxzOwordXNlIHdlYmtpdHBl
cmw6OmRpcnM7CiAKIEJFR0lOIHsKICAgIHVzZSBFeHBvcnRlciAgICgpOwpAQCAtMTQ1LDcgKzE0
Niw2IEBAIG15ICR4Y29kZVNES1BsYXRmb3JtTmFtZTsKIG15ICRzaW11bGF0b3JJZGlvbTsKIG15
ICRjb25maWd1cmF0aW9uRm9yVmlzdWFsU3R1ZGlvOwogbXkgJGNvbmZpZ3VyYXRpb25Qcm9kdWN0
RGlyOwotbXkgJHNvdXJjZURpcjsKIG15ICRjdXJyZW50U1ZOUmV2aXNpb247CiBteSAkZGlkTG9h
ZElQaG9uZVNpbXVsYXRvck5vdGlmaWNhdGlvbjsKIG15ICRubVBhdGg7CkBAIC0xOTUsMjQgKzE5
NSw2IEBAIHN1YiBzZGtQbGF0Zm9ybURpcmVjdG9yeSgkKQogICAgIHJldHVybiAkc2RrUGxhdGZv
cm1EaXJlY3Rvcnk7CiB9CiAKLXN1YiBkZXRlcm1pbmVTb3VyY2VEaXIKLXsKLSAgICByZXR1cm4g
aWYgJHNvdXJjZURpcjsKLSAgICAkc291cmNlRGlyID0gJEZpbmRCaW46OkJpbjsKLSAgICAkc291
cmNlRGlyID1+IHN8LyskfHw7ICMgUmVtb3ZlIHRyYWlsaW5nICcvJyBhcyB3ZSB3b3VsZCBkaWUg
bGF0ZXIKLQotICAgICMgd2Fsa3MgdXAgcGF0aCBjaGVja2luZyBlYWNoIGRpcmVjdG9yeSB0byBz
ZWUgaWYgaXQgaXMgdGhlIG1haW4gV2ViS2l0IHByb2plY3QgZGlyLCAKLSAgICAjIGRlZmluZWQg
YnkgY29udGFpbmluZyBTb3VyY2VzLCBXZWJDb3JlLCBhbmQgSmF2YVNjcmlwdENvcmUuCi0gICAg
dW50aWwgKCgtZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIpICYmIC1k
IEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiU291cmNlIiwgIldlYkNvcmUiKSAmJiAt
ZCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIsICJKYXZhU2NyaXB0Q29y
ZSIpKSB8fCAoLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJJbnRlcm5hbCIpICYm
IC1kIEZpbGU6OlNwZWMtPmNhdGRpcigkc291cmNlRGlyLCAiT3BlblNvdXJjZSIpKSkKLSAgICB7
Ci0gICAgICAgIGlmICgkc291cmNlRGlyICF+IHN8L1teL10rJHx8KSB7Ci0gICAgICAgICAgICBk
aWUgIkNvdWxkIG5vdCBmaW5kIHRvcCBsZXZlbCB3ZWJraXQgZGlyZWN0b3J5IGFib3ZlIHNvdXJj
ZSBkaXJlY3RvcnkgdXNpbmcgRmluZEJpbi5cbiI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAk
c291cmNlRGlyID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIikg
aWYgLWQgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIik7Ci19Ci0K
IHN1YiBjdXJyZW50UGVybFBhdGgoKQogewogICAgIG15ICR0aGlzUGVybCA9ICReWDsKQEAgLTIy
MiwxMiArMjA0LDYgQEAgc3ViIGN1cnJlbnRQZXJsUGF0aCgpCiAgICAgcmV0dXJuICR0aGlzUGVy
bDsKIH0KIAotIyB1c2VkIGZvciBzY3JpcHRzIHdoaWNoIGFyZSBzdG9yZWQgaW4gYSBub24tc3Rh
bmRhcmQgbG9jYXRpb24KLXN1YiBzZXRTb3VyY2VEaXIoJCkKLXsKLSAgICAoJHNvdXJjZURpcikg
PSBAXzsKLX0KLQogc3ViIGRldGVybWluZU5pbmphVmVyc2lvbgogewogICAgIGNob21wKG15ICRu
aW5qYVZlcnNpb24gPSBgbmluamEgLS12ZXJzaW9uYCk7CkBAIC0yNTcsOCArMjMzLDggQEAgc3Vi
IHJlYWRYY29kZVVzZXJEZWZhdWx0KCQpCiBzdWIgZGV0ZXJtaW5lQmFzZVByb2R1Y3REaXIKIHsK
ICAgICByZXR1cm4gaWYgZGVmaW5lZCAkYmFzZVByb2R1Y3REaXI7Ci0gICAgZGV0ZXJtaW5lU291
cmNlRGlyKCk7CiAKKyAgICBteSAkc291cmNlRGlyID0gc291cmNlRGlyKCk7CiAgICAgbXkgJHNl
dFNoYXJlZFByZWNvbXBzRGlyOwogICAgIG15ICRpbmRleERhdGFTdG9yZURpcjsKICAgICAkYmFz
ZVByb2R1Y3REaXIgPSAkRU5WeyJXRUJLSVRfT1VUUFVURElSIn07CkBAIC04NTYsMTYgKzgzMiwx
NCBAQCBzdWIgZGV0ZXJtaW5lQ3VycmVudFNWTlJldmlzaW9uCiAgICAgIyBXZSBhbHdheXMgdXBk
YXRlIHRoZSBjdXJyZW50IFNWTiByZXZpc2lvbiBoZXJlLCBhbmQgbGVhdmUgdGhlIGNhY2hpbmcK
ICAgICAjIHRvIGN1cnJlbnRTVk5SZXZpc2lvbigpLCBzbyB0aGF0IGNoYW5nZXMgdG8gdGhlIFNW
TiByZXZpc2lvbiB3aGlsZSB0aGUKICAgICAjIHNjcmlwdCBpcyBydW5uaW5nIGNhbiBiZSBwaWNr
ZWQgdXAgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFnYWluLgotICAgIGRldGVybWluZVNvdXJj
ZURpcigpOwotICAgICRjdXJyZW50U1ZOUmV2aXNpb24gPSBzdm5SZXZpc2lvbkZvckRpcmVjdG9y
eSgkc291cmNlRGlyKTsKKyAgICAkY3VycmVudFNWTlJldmlzaW9uID0gc3ZuUmV2aXNpb25Gb3JE
aXJlY3Rvcnkoc291cmNlRGlyKCkpOwogICAgIHJldHVybiAkY3VycmVudFNWTlJldmlzaW9uOwog
fQogCiAKIHN1YiBjaGRpcldlYktpdAogewotICAgIGRldGVybWluZVNvdXJjZURpcigpOwotICAg
IGNoZGlyICRzb3VyY2VEaXIgb3IgZGllOworICAgIGNoZGlyIHNvdXJjZURpcigpIG9yIGRpZTsK
IH0KIAogc3ViIGJhc2VQcm9kdWN0RGlyCkBAIC04NzQsMTIgKzg0OCw2IEBAIHN1YiBiYXNlUHJv
ZHVjdERpcgogICAgIHJldHVybiAkYmFzZVByb2R1Y3REaXI7CiB9CiAKLXN1YiBzb3VyY2VEaXIK
LXsKLSAgICBkZXRlcm1pbmVTb3VyY2VEaXIoKTsKLSAgICByZXR1cm4gJHNvdXJjZURpcjsKLX0K
LQogc3ViIHByb2R1Y3REaXIKIHsKICAgICBkZXRlcm1pbmVDb25maWd1cmF0aW9uUHJvZHVjdERp
cigpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0xvYWRBc01vZHVsZS5w
bSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDk1NGVlOGJkODM1MS4uMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cGVybC9Mb2FkQXNNb2R1bGUucG0KKysrIC9kZXYvbnVsbApAQCAtMSw4
MCArMCwwIEBACi0jIS91c3IvYmluL2VudiBwZXJsCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCi0jIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCi0jIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotIwotIyBJbXBvcnRzIFBlcmwgc2NyaXB0cyBpbnRvIGEgcGFja2FnZSBm
b3IgZWFzeSB1bml0IHRlc3RpbmcuCi0KLXBhY2thZ2UgTG9hZEFzTW9kdWxlOwotCi11c2Ugc3Ry
aWN0OwotdXNlIHdhcm5pbmdzOwotCi11c2UgRmlsZTo6U3BlYzsKLXVzZSBGaW5kQmluOwotdXNl
IGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7Ci11c2Ug
d2Via2l0ZGlyczsKLQotdXNlIGJhc2UgJ0V4cG9ydGVyJzsKLXVzZSB2YXJzIHF3KEBFWFBPUlQg
QEVYUE9SVF9PSyAlRVhQT1JUX1RBR1MgJFZFUlNJT04pOwotCi1ARVhQT1JUID0gKCk7Ci1ARVhQ
T1JUX09LID0gKCk7Ci0lRVhQT1JUX1RBR1MgPSAoKTsKLSRWRVJTSU9OID0gJzEuMCc7Ci0KLXN1
YiByZWFkRmlsZSgkKTsKLQotc3ViIGltcG9ydAotewotICAgIG15ICgkc2VsZiwgJHBhY2thZ2Us
ICRzY3JpcHQpID0gQF87Ci0gICAgbXkgJHNjcmlwdFBhdGggPSBGaWxlOjpTcGVjLT5jYXRmaWxl
KHNvdXJjZURpcigpLCAiVG9vbHMiLCAiU2NyaXB0cyIsICRzY3JpcHQpOwotICAgIGV2YWwgIgot
ICAgICAgICBwYWNrYWdlICRwYWNrYWdlOwotCi0gICAgICAgIHVzZSBzdHJpY3Q7Ci0gICAgICAg
IHVzZSB3YXJuaW5nczsKLQotICAgICAgICB1c2UgYmFzZSAnRXhwb3J0ZXInOwotICAgICAgICB1
c2UgdmFycyBxdyhcQEVYUE9SVCBcQEVYUE9SVF9PSyBcJUVYUE9SVF9UQUdTIFwkVkVSU0lPTik7
Ci0KLSAgICAgICAgXEBFWFBPUlQgPSAoKTsKLSAgICAgICAgXEBFWFBPUlRfT0sgPSAoKTsKLSAg
ICAgICAgXCVFWFBPUlRfVEFHUyA9ICgpOwotICAgICAgICBcJFZFUlNJT04gPSAnMS4wJzsKLQot
ICAgICAgICBzdWIgeyIgLiByZWFkRmlsZSgkc2NyaXB0UGF0aCkgLiAifQotICAgICI7Ci19Ci0K
LXN1YiByZWFkRmlsZSgkKQotewotICAgIG15ICRwYXRoID0gc2hpZnQ7Ci0gICAgbG9jYWwgJC8g
PSB1bmRlZjsgIyBSZWFkIGluIHRoZSB3aG9sZSBmaWxlIGF0IG9uY2UuCi0gICAgb3BlbiBGSUxF
LCAiPCIsICRwYXRoIG9yIGRpZSAiQ2Fubm90IG9wZW4gJHBhdGg6ICQhIjsKLSAgICBteSAkY29u
dGVudHMgPSA8RklMRT47Ci0gICAgY2xvc2UgRklMRTsKLSAgICByZXR1cm4gJGNvbnRlbnRzOwot
fTsKLQotMTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9idWlsZC9vdXRw
dXQucG0gYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvYnVpbGQvb3V0cHV0LnBtCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDRkOTdhYWVhMzUwCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2J1aWxkL291dHB1dC5wbQpAQCAtMCww
ICsxLDE0NyBAQAorcGFja2FnZSB3ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0OworCit1c2Ugc3Ry
aWN0OwordXNlIHdhcm5pbmdzOwordXNlIENhcnA7CisKK0JFR0lOIHsKKyAgIHVzZSBFeHBvcnRl
ciAgICgpOworICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVY
UE9SVF9UQUdTKTsKKyAgICRWRVJTSU9OICAgICA9IDEuMDA7CisgICBASVNBICAgICAgICAgPSBx
dyhFeHBvcnRlcik7CisgICBARVhQT1JUICAgICAgPSBxdygKKyAgICAgICAgICAgICAgICAgICAg
c2hvdWxkSWdub3JlTGluZQorICAgICAgICAgICAgICAgICAgICAkcGxhdGZvcm0KKyAgICAgICAg
ICAgICAgICApOworICAgJUVYUE9SVF9UQUdTID0gKCk7CisgICBARVhQT1JUX09LICAgPSAoKTsK
K30KKworb3VyICRwbGF0Zm9ybSA9ICdtYWMnOworCitteSAkaW5FbnRpdGxlbWVudHMgPSAwOwor
bXkgJGluRGV2aWNlUHJlcGFyYXRpb25XYXJuaW5ncyA9IDA7CisKK3N1YiBzaG91bGRTaG93U3Vi
c2VxdWVudExpbmUgeworICAgIG15ICRsaW5lID0gc2hpZnQ7CisKKyAgICByZXR1cm4gMSBpZiAk
bGluZSA9fiAvcmVmZXJlbmNlZCBmcm9tOiQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC8o
bm90ZTp8ZXJyb3I6KS87CisKKyAgICByZXR1cm4gMDsKK30KKworc3ViIHNob3VsZElnbm9yZUxp
bmUgeworICAgIG15ICgkcHJldmlvdXNMaW5lLCAkbGluZSkgPSBAXzsKKworICAgIGlmICgkbGlu
ZSA9fiAvXkVudGl0bGVtZW50czokLykgeworICAgICAgICAkaW5FbnRpdGxlbWVudHMgPSAxOwor
ICAgICAgICByZXR1cm4gMQorICAgIH0KKworICAgIGlmICgkaW5FbnRpdGxlbWVudHMpIHsKKyAg
ICAgICAgJGluRW50aXRsZW1lbnRzID0gMCBpZiAkbGluZSA9fiAvXn0kLzsKKyAgICAgICAgcmV0
dXJuIDEKKyAgICB9CisKKyAgICAjIGlQaG9uZSBwcmVwYXJhdGlvbiBlcnJvcnMgYWx3YXlzIHN0
YXJ0IGFuZCBlbmQgd2l0aCBsaW5lcyBjb250YWluaW5nICdpUGhvbmVDb25uZWN0OicuCisgICAg
aWYgKCRpbkRldmljZVByZXBhcmF0aW9uV2FybmluZ3MpIHsKKyAgICAgICAgJGluRGV2aWNlUHJl
cGFyYXRpb25XYXJuaW5ncyA9IDAgaWYgJGxpbmUgPX4gLz09IEVORDogVW5kZXJseWluZyBkZXZp
Y2UgcHJlcGFyYXRpb24gd2FybmluZ3MgPT0vOworICAgICAgICByZXR1cm4gMQorICAgIH0KKwor
ICAgIGlmICgkbGluZSA9fiAvaVBob25lQ29ubmVjdDovKSB7CisgICAgICAgICRpbkRldmljZVBy
ZXBhcmF0aW9uV2FybmluZ3MgPSAxOworICAgICAgICByZXR1cm4gMQorICAgIH0KKworICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eXHMqJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15D
b21tYW5kIGxpbmUgaW52b2NhdGlvbjovOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eQnVp
bGQgc2V0dGluZ3MgZnJvbSBjb21tYW5kIGxpbmU6LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvXlVzZXIgZGVmYXVsdHMgZnJvbSBjb21tYW5kIGxpbmU6LzsKKyAgICByZXR1cm4gMSBpZiAk
bGluZSA9fiAvXlByZXBhcmUgYnVpbGQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eQnVp
bGQgc3lzdGVtIGluZm9ybWF0aW9uLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXm5vdGU6
IFBsYW5uaW5nIGJ1aWxkLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXm5vdGU6IENvbnN0
cnVjdGluZyBidWlsZCBkZXNjcmlwdGlvbi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15u
b3RlOiBCdWlsZCBkZXNjcmlwdGlvbiAoY29uc3RydWN0ZWR8bG9hZGVkKSBpbiAuKi87CisgICAg
cmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBVc2luZyBidWlsZCBkZXNjcmlwdGlvbiAuKi87
CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBVc2luZyBlYWdlciBjb21waWxhdGlv
bi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBFeGVjdXRpb24gcG9saWN5IGV4
Y2VwdGlvbiByZWdpc3RyYXRpb24gZmFpbGVkIGFuZCB3YXMgc2tpcHBlZDogRXJyb3IgRG9tYWlu
PU5TUE9TSVhFcnJvckRvbWFpbiBDb2RlPTEgIk9wZXJhdGlvbiBub3QgcGVybWl0dGVkIi87Cisg
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ub3RlOiBkZXRlY3RlZCBlbmNvZGluZyBvZiBpbnB1
dCBmaWxlIGFzIFVuaWNvZGUgXCguKlwpLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvbWFr
ZShcW1xkK1xdKT86IE5vdGhpbmcgdG8gYmUgZG9uZSBmb3IvOworICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9eSmF2YVNjcmlwdENvcmVcL2NyZWF0ZV9oYXNoX3RhYmxlLzsKKyAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrXC9Qcml2YXRlSGVhZGVyc1wv
Y3JlYXRlX2hhc2hfdGFibGUvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eSmF2YVNjcmlw
dENvcmVcL3BjcmVcL2RmdGFibGVzLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXkNyZWF0
aW5nIGhhc2h0YWJsZSBmb3IgLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXldyb3RlIG91
dHB1dCB0byAvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eVU5ET0NVTUVOVEVEOiAvOwor
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9saWJ0b29sLipoYXMgbm8gc3ltYm9scy87CisgICAg
cmV0dXJuIDEgaWYgJGxpbmUgPX4gL14jIExvd2VyIGNhc2UgYWxsIHRoZSB2YWx1ZXMsIGFzIENT
UyB2YWx1ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUkLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvXmlmIHNvcnQgLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvc2V0LXdlYmtpdC1jb25m
aWd1cmF0aW9uLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXmJ1aWxkaW5nIGZpbGUgbGlz
dC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15cLlwvJC87CisgICAgcmV0dXJuIDEgaWYg
JGxpbmUgPX4gL15cUytcLmgkLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxTK1wvJC87
CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15zZW50IFxkKyBieXRlcy87CisgICAgcmV0dXJu
IDEgaWYgJGxpbmUgPX4gL150b3RhbCBzaXplIGlzLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvT25lIG9mIHRoZSB0d28gd2lsbCBiZSB1c2VkXC4gV2hpY2ggb25lIGlzIHVuZGVmaW5lZFwu
LzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvVGhlIExlZ2FjeSBCdWlsZCBTeXN0ZW0gd2ls
bCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHJlbGVhc2UvOworICAgIHJldHVybiAxIGlmICRsaW5l
ID1+IC9eXCggKHhjb2RlYnVpbGR8aWYpIC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL153
YXJuaW5nOiBjYW4ndCBmaW5kIGFkZGl0aW9uYWwgU0RLLzsKKyAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXndhcm5pbmc6IG5vIHVtYnJlbGxhIGhlYWRlciBmb3VuZCBmb3IgdGFyZ2V0ICcuKics
IG1vZHVsZSBtYXAgd2lsbCBub3QgYmUgZ2VuZXJhdGVkJC87CisgICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL153YXJuaW5nXDogZGV0ZWN0ZWQgaW50ZXJuYWwgaW5zdGFsbCwgcGFzc2luZyBlbnRp
dGxlbWVudHMgdG8gc2ltdWxhdG9yIGFueXdheVwuLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9
fiAvbWF5IG5vdCBmdW5jdGlvbiBpbiB0aGUgU2ltdWxhdG9yIGJlY2F1c2UgQWQgSG9jLzsKKyAg
ICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXC91c3JcL2JpblwvY2xhbmcgLio/IFw+IFxTKy5zYi87
CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLyB4Y29kZWJ1aWxkXFtbMC05XSs6WzAtOWEtZl0r
XF1ccytEVlRBc3NlcnRpb25zOiBXYXJuaW5nIGluIC4qLzsKKyAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXihEZXRhaWxzfE9iamVjdHxNZXRob2R8RnVuY3Rpb258VGhyZWFkKTovOworICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eUGxlYXNlIGZpbGUgYSBidWcgYXQgLzsKKyAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAvY3JlYXRlZCBieSBhbiB1bnN1cHBvcnRlZCBYQ0RlcGVuZGVuY3lHcmFw
aCBidWlsZCQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC93YXJuaW5nOiBUaGUgYXNzaWdu
bWVudCBvZiAnLionIGF0ICIuKiIgdXNlcyBcJFwoaW5oZXJpdGVkXCkuIEluIHRoZSBuZXcgYnVp
bGQgc3lzdGVtIHRoaXMgd2lsbCBpbmhlcml0IGZyb20gYW4gZWFybGllciBkZWZpbml0aW9uIG9m
ICcuKicgaW4gdGhpcyB4Y2NvbmZpZyBmaWxlIG9yIGl0cyBpbXBvcnRzOyB0aGUgb2xkIGJ1aWxk
IHN5c3RlbSB3b3VsZCBkaXNjYXJkIGVhcmxpZXIgZGVmaW5pdGlvbnMuIFRoaXMgbWF5IHJlc3Vs
dCBpbiBjaGFuZ2VzIHRvIHJlc29sdmVkIGJ1aWxkIHNldHRpbmcgdmFsdWVzLi87CisgICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gLy4qIGNvbS5hcHBsZS5hY3Rvb2wuY29tcGlsYXRpb24tcmVzdWx0
cyAuKi87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gLy4qXC9Bc3NldHMuY2FyLzsKKyAgICBy
ZXR1cm4gMSBpZiAkbGluZSA9fiAvLipcL2Fzc2V0Y2F0YWxvZ19nZW5lcmF0ZWRfaW5mby5wbGlz
dC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15tb3VudDogLisgZmFpbGVkIHdpdGgvOwor
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eVXNpbmcgLisgcHJvZHVjdGlvbiBlbnZpcm9ubWVu
dC4kLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvcmVwbGFjaW5nIGV4aXN0aW5nIHNpZ25h
dHVyZSQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eVW5sb2NraW5nICcuKlwua2V5Y2hh
aW4tZGInJC87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15cZCsgbG9jYWxpemFibGUgc3Ry
aW5ncyQvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXGQrIHBsdXJhbCBydWxlcyQvOwor
ICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eVGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scyBk
aWQgbm90IGNoYW5nZS4kLzsKKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXmRpdHRvOiBDYW5u
b3QgZ2V0IHRoZSByZWFsIHBhdGggZm9yIHNvdXJjZS87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15EdXBsaWNhdGUgRW50cnkgV2FzIFNraXBwZWQ6LzsKKyAgICByZXR1cm4gMSBpZiAkbGlu
ZSA9fiAvXkFkZGluZyAuKj9lbnRpdGxlbWVudHMvOworICAgIHJldHVybiAxIGlmICRsaW5lID1+
IC9eTWFraW5nIGFwcCBidW5kbGUgbGF1bmNoYWJsZS87CisgICAgcmV0dXJuIDEgaWYgJGxpbmUg
PX4gL15GaW5pc2hlZCBhZGRpbmcgZW50aXRsZW1lbnRzXC4kLzsKKyAgICByZXR1cm4gMSBpZiAk
bGluZSA9fiAvXi4qIHdpbGwgbm90IGJlIGNvZGUgc2lnbmVkIGJlY2F1c2UgaXRzIHNldHRpbmdz
IGRvbid0IHNwZWNpZnkgYSBkZXZlbG9wbWVudCB0ZWFtLiQvOworCisgICAgaWYgKCRwbGF0Zm9y
bSBlcSAid2luIikgeworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvXlxzKih0b3VjaHxw
ZXJsfGNhdHxybSAtZnxkZWx8cHl0aG9ufFwvdXNyXC9iaW5cL2dcK1wrfGdwZXJmfGVjaG98c2Vk
fGlmIFxbIFwtZnxXZWJDb3JlXC9nZW5lcmF0ZS1leHBvcnQtZmlsZSkgLzsKKyAgICAgICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15ccyooaWYgbm90IGV4aXN0IFwifGlmIGVycm9ybGV2ZWwgMSkv
OworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvKF5ccyp8TVNCMzA3MzpccyspKHNldCB8
UkVNIHxjbWQgXC9jKS87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eXHMqW2NDXTpc
XFtwUF1yb2dyYW0gW2ZGXWlsZXMuKlxcLipcXChDTHxtaWRsKVwuZXhlIC87CisgICAgICAgIHJl
dHVybiAxIGlmICRsaW5lID1+IC9eXHMqUHJvY2Vzc2luZyAuKlwuKGFjZnxofGlkbClccyokLzsK
KyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ccypwcmludGYgLzsKKyAgICAgICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15ccypcL3VzclwvYmluXC9iYXNoXHMqLzsKKyAgICAgICAgcmV0
dXJuIDEgaWYgJGxpbmUgPX4gL15ccypvZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQvOworICAg
ICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvIFxkKyBGaWxlXChzXCkgY29waWVkLzsKKyAgICAg
ICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15ccypGaWxlIG5vdCBmb3VuZCAtIFwqXC5oLzsKKyAg
ICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL21rZGlyXHMrXCIvOworICAgICAgICByZXR1cm4g
MSBpZiAkbGluZSA9fiAveGNvcHkgXC95IFwvZCBcIi87CisgICAgICAgIHJldHVybiAxIGlmICRs
aW5lID1+IC9cLm9ialwiXHMqJC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC86XHMr
KGNtZCBcL2N8c2V0KVxzKy87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9NU0IzMDcz
OlxzKyQvOworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvTVNCMzA3MzpccytpZiBub3Qg
ZXhpc3QvOworICAgICAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAvd2hpY2guZXhlIGJhc2gvOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eKHRvdWNofHBlcmx8
Y2F0fHJtIC1mfHB5dGhvbnxcL3VzclwvYmluXC9nXCtcK3xcL2JpblwvbG58Z3BlcmZ8ZWNob3xz
ZWR8aWYgXFsgXC1mfFdlYkNvcmVcL2dlbmVyYXRlLWV4cG9ydC1maWxlfHdyaXRlLWZpbGV8Y2ht
b2QpIC87CisgICAgICAgIHJldHVybiAxIGlmICRsaW5lID1+IC9eICAgIC8gJiYgIXNob3VsZFNo
b3dTdWJzZXF1ZW50TGluZSgkcHJldmlvdXNMaW5lKTsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxp
bmUgPX4gL15wcmludGYgLzsKKyAgICAgICAgcmV0dXJuIDEgaWYgJGxpbmUgPX4gL15vZmZsaW5l
YXNtOiBOb3RoaW5nIGNoYW5nZWQvOworICAgIH0KKyAgICByZXR1cm4gMSBpZiAkbGluZSA9fiAv
XlNob3dpbmcgZmlyc3QvOworCisgICAgcmV0dXJuIDA7Cit9CisKKzE7CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvY2hhbmdlbG9nLnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRwZXJsL2NoYW5nZWxvZy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjJhMTY0YWI4MzBkYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9jaGFuZ2Vsb2cucG0KQEAgLTAsMCArMSwxNTI1IEBACisjIS91c3IvYmluL2VudiBwZXJs
CisKKyMgQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitwYWNrYWdlIHdlYmtpdHBlcmw6OmNoYW5nZWxvZzsKKwordXNlIHN0
cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBDYXJwOwordXNlIEZpbGU6OlNwZWM7Cit1c2UgVkNT
VXRpbHM7CisKK0JFR0lOIHsKKyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgkVkVSU0lP
TiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRWRVJTSU9O
ICAgICA9IDEuMDA7CisgICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBARVhQT1JU
ICAgICAgPSBxdygKKyAgICAgICAgICAgICAgICAgICAgYWN0dWFsbHlHZW5lcmF0ZUZ1bmN0aW9u
TGlzdHMKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlQ29tbWFuZAorICAgICAgICAgICAg
ICAgICAgICBleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UKKyAgICAgICAgICAgICAgICAgICAg
ZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZQorICAgICAgICAgICAgICAgICAgICBmZXRjaEJ1
Z0Rlc2NyaXB0aW9uRnJvbUJ1Z1hNTERhdGEKKyAgICAgICAgICAgICAgICAgICAgZmV0Y2hSYWRh
clVSTEZyb21CdWdYTUxEYXRhCisgICAgICAgICAgICAgICAgKTsKKyAgICVFWFBPUlRfVEFHUyA9
ICgpOworICAgQEVYUE9SVF9PSyAgID0gcXcoCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5j
dGlvbl9saW5lX3Jhbmdlc19mb3JfY3BwCisgICAgICAgICAgICAgICAgICAgIGdldF9zZWxlY3Rv
cl9saW5lX3Jhbmdlc19mb3JfY3NzCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9s
aW5lX3Jhbmdlc19mb3JfamF2YQorICAgICAgICAgICAgICAgICAgICBnZXRfZnVuY3Rpb25fbGlu
ZV9yYW5nZXNfZm9yX2phdmFzY3JpcHQKKyAgICAgICAgICAgICAgICAgICAgZ2V0X2Z1bmN0aW9u
X2xpbmVfcmFuZ2VzX2Zvcl9wZXJsCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9s
aW5lX3Jhbmdlc19mb3JfcHl0aG9uCisgICAgICAgICAgICAgICAgICAgIGdldF9mdW5jdGlvbl9s
aW5lX3Jhbmdlc19mb3Jfc3dpZnQKKyAgICAgICAgICAgICAgICApOworfQorCit1c2UgY29uc3Rh
bnQgU1ZOID0+ICJzdm4iOwordXNlIGNvbnN0YW50IEdJVCA9PiAiZ2l0IjsKKworc3ViIGFjdHVh
bGx5R2VuZXJhdGVGdW5jdGlvbkxpc3RzIHsKKyAgICBteSAoJGNoYW5nZWRGaWxlcywgJGZ1bmN0
aW9uTGlzdHMsICRnaXRDb21taXQsICRnaXRJbmRleCwgJG1lcmdlQmFzZSwgJGRlbGVnYXRlSGFz
aFJlZikgPSBAXzsKKworICAgIG15ICVsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkOworICAgIG15
ICVsaW5lX3Jhbmdlc19iZWZvcmVfY2hhbmdlZDsKKyAgICBpZiAoQCRjaGFuZ2VkRmlsZXMpIHsK
KyAgICAgICAgIyBGb3IgZWFjaCBmaWxlLCBidWlsZCBhIGxpc3Qgb2YgbW9kaWZpZWQgbGluZXMu
CisgICAgICAgICMgVXNlIGxpbmUgbnVtYmVycyBmcm9tIHRoZSAiYWZ0ZXIiIHNpZGUgb2YgZWFj
aCBkaWZmLgorICAgICAgICBwcmludCBTVERFUlIgIiAgUmV2aWV3aW5nIGRpZmYgdG8gZGV0ZXJt
aW5lIHdoaWNoIGxpbmVzIGNoYW5nZWQuXG4iOworICAgICAgICBteSAkZmlsZTsKKyAgICAgICAg
bXkgJGRpZmZGaWxlSGFuZGxlID0gJGRlbGVnYXRlSGFzaFJlZi0+e29wZW5EaWZmfSgkY2hhbmdl
ZEZpbGVzLCAkZ2l0Q29tbWl0LCAkZ2l0SW5kZXgsICRtZXJnZUJhc2UpOworICAgICAgICBpZiAo
ISRkaWZmRmlsZUhhbmRsZSkgeworICAgICAgICAgICAgZGllICJUaGUgZGlmZiBmYWlsZWQ6ICQh
LlxuIjsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoPCRkaWZmRmlsZUhhbmRsZT4pIHsKKyAg
ICAgICAgICAgIG15ICRmaWxlUGF0aCA9IHBhcnNlRGlmZlN0YXJ0TGluZSgkXyk7CisgICAgICAg
ICAgICAkZmlsZSA9ICRkZWxlZ2F0ZUhhc2hSZWYtPntub3JtYWxpemVQYXRofSgkZmlsZVBhdGgp
IGlmICRmaWxlUGF0aDsKKyAgICAgICAgICAgIGlmIChkZWZpbmVkICRmaWxlKSB7CisgICAgICAg
ICAgICAgICAgbXkgKCRiZWZvcmVfc3RhcnQsICRiZWZvcmVfZW5kKSA9IGV4dHJhY3RMaW5lUmFu
Z2VCZWZvcmVDaGFuZ2UoJF8pOworICAgICAgICAgICAgICAgIGlmICgkYmVmb3JlX3N0YXJ0ID49
IDEgJiYgJGJlZm9yZV9lbmQgPj0gMSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoIEB7JGxp
bmVfcmFuZ2VzX2JlZm9yZV9jaGFuZ2VkeyRmaWxlfX0sIFsgJGJlZm9yZV9zdGFydCwgJGJlZm9y
ZV9lbmQgXTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgvRE9fTk9UX0NPTU1JVC8pIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJXQVJOSU5HOiBmaWxlICRmaWxlIGNvbnRh
aW5zIHRoZSBzdHJpbmcgRE9fTk9UX0NPTU1JVCwgbGluZSAkLlxuIjsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgbXkgKCRhZnRlcl9zdGFydCwgJGFmdGVyX2VuZCkgPSBleHRy
YWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UoJF8pOworICAgICAgICAgICAgICAgIGlmICgkYWZ0ZXJf
c3RhcnQgPj0gMSAmJiAkYWZ0ZXJfZW5kID49IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVz
aCBAeyRsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkeyRmaWxlfX0sIFsgJGFmdGVyX3N0YXJ0LCAk
YWZ0ZXJfZW5kIF07CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoL0RPX05PVF9DT01NSVQvKSB7
CisgICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiV0FSTklORzogZmlsZSAkZmlsZSBj
b250YWlucyB0aGUgc3RyaW5nIERPX05PVF9DT01NSVQsIGxpbmUgJC5cbiI7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNsb3NlKCRkaWZmRmls
ZUhhbmRsZSk7CisgICAgfQorCisgICAgIyBGb3IgZWFjaCBzb3VyY2UgZmlsZSwgY29udmVydCBs
aW5lIHJhbmdlIHRvIGZ1bmN0aW9uIGxpc3QuCisgICAgcHJpbnQgU1RERVJSICIgIEV4dHJhY3Rp
bmcgYWZmZWN0ZWQgZnVuY3Rpb24gbmFtZXMgZnJvbSBzb3VyY2UgZmlsZXMuXG4iOworICAgIG15
ICVmaWxlc1RvRXhhbWluZSA9IG1hcCB7ICRfID0+IDEgfSAoa2V5cyglbGluZV9yYW5nZXNfYmVm
b3JlX2NoYW5nZWQpLCBrZXlzKCVsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkKSk7CisgICAgZm9y
ZWFjaCBteSAkZmlsZSAoa2V5cyAlZmlsZXNUb0V4YW1pbmUpIHsKKyAgICAgICAgbXkgJXNhd19m
dW5jdGlvbjsKKworICAgICAgICAjIEZpbmQgYWxsIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGZpbGUu
CisgICAgICAgIG15ICRzb3VyY2VGaWxlSGFuZGxlID0gJGRlbGVnYXRlSGFzaFJlZi0+e29wZW5G
aWxlfSgkZmlsZSk7CisgICAgICAgIG5leHQgdW5sZXNzICRzb3VyY2VGaWxlSGFuZGxlOworICAg
ICAgICBteSBAYWZ0ZXJDaGFuZ2VGdW5jdGlvblJhbmdlcyA9IGdldF9mdW5jdGlvbl9saW5lX3Jh
bmdlcygkc291cmNlRmlsZUhhbmRsZSwgJGZpbGUpOworICAgICAgICBjbG9zZSgkc291cmNlRmls
ZUhhbmRsZSk7CisKKyAgICAgICAgIyBGaW5kIG1vZGlmaWVkIGZ1bmN0aW9ucyBpbiB0aGUgZmls
ZS4KKyAgICAgICAgaWYgKCRsaW5lX3Jhbmdlc19hZnRlcl9jaGFuZ2VkeyRmaWxlfSkgeworICAg
ICAgICAgICAgbXkgQGNoYW5nZV9yYW5nZXMgPSAoQHskbGluZV9yYW5nZXNfYWZ0ZXJfY2hhbmdl
ZHskZmlsZX19LCBbXSk7CisgICAgICAgICAgICBteSBAZnVuY3Rpb25zID0gY29tcHV0ZU1vZGlm
aWVkRnVuY3Rpb25zKCRmaWxlLCBcQGNoYW5nZV9yYW5nZXMsIFxAYWZ0ZXJDaGFuZ2VGdW5jdGlv
blJhbmdlcyk7CisKKyAgICAgICAgICAgICMgRm9ybWF0IHRoZSBsaXN0IG9mIGZ1bmN0aW9ucy4K
KyAgICAgICAgICAgIGlmIChAZnVuY3Rpb25zKSB7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
TGlzdHMtPnskZmlsZX0gPSAiIiBpZiAhZGVmaW5lZCAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfTsK
KyAgICAgICAgICAgICAgICAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfSAuPSAiXG4gICAgICAgICgi
IC4gam9pbigiKTpcbiAgICAgICAgKCIsIEBmdW5jdGlvbnMpIC4gIik6IjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICAjIEZpbmQgdGhlIGRlbGV0ZWQgZnVuY3Rpb25zIGluIHRo
ZSBvcmlnaW5hbCBmaWxlLgorICAgICAgICBpZiAoJGxpbmVfcmFuZ2VzX2JlZm9yZV9jaGFuZ2Vk
eyRmaWxlfSkgeworICAgICAgICAgICAgbXkgJG9yaWdpbmFsRmlsZUhhbmRsZSA9ICRkZWxlZ2F0
ZUhhc2hSZWYtPntvcGVuT3JpZ2luYWxGaWxlfSgkZmlsZSwgJGdpdENvbW1pdCwgJGdpdEluZGV4
LCAkbWVyZ2VCYXNlKTsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRvcmlnaW5hbEZpbGVIYW5k
bGU7CisgICAgICAgICAgICBteSBAYmVmb3JlQ2hhbmdlRnVuY3Rpb25SYW5nZXMgPSBnZXRfZnVu
Y3Rpb25fbGluZV9yYW5nZXMoJG9yaWdpbmFsRmlsZUhhbmRsZSwgJGZpbGUpOworICAgICAgICAg
ICAgY2xvc2UoJG9yaWdpbmFsRmlsZUhhbmRsZSk7CisKKyAgICAgICAgICAgIG15ICVleGlzdHNB
ZnRlckNoYW5nZSA9IG1hcCB7ICRfLT5bMl0gPT4gMSB9IEBhZnRlckNoYW5nZUZ1bmN0aW9uUmFu
Z2VzOworCisgICAgICAgICAgICBteSBAZnVuY3Rpb25zOworICAgICAgICAgICAgbXkgJXNhd0Z1
bmN0aW9uczsKKyAgICAgICAgICAgIGZvciBteSAkZnVuY3Rpb25SYW5nZSAoQGJlZm9yZUNoYW5n
ZUZ1bmN0aW9uUmFuZ2VzKSB7CisgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRm
dW5jdGlvblJhbmdlLT5bMl07CisgICAgICAgICAgICAgICAgaWYgKCEkZXhpc3RzQWZ0ZXJDaGFu
Z2V7JGZ1bmN0aW9uTmFtZX0gJiYgISRzYXdGdW5jdGlvbnN7JGZ1bmN0aW9uTmFtZX0pIHsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaCBAZnVuY3Rpb25zLCAkZnVuY3Rpb25OYW1lOworICAgICAg
ICAgICAgICAgICAgICAkc2F3RnVuY3Rpb25zeyRmdW5jdGlvbk5hbWV9ID0gMTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgRm9ybWF0IHRoZSBsaXN0
IG9mIGRlbGV0ZWQgZnVuY3Rpb25zLgorICAgICAgICAgICAgaWYgKEBmdW5jdGlvbnMpIHsKKyAg
ICAgICAgICAgICAgICAkZnVuY3Rpb25MaXN0cy0+eyRmaWxlfSA9ICIiIGlmICFkZWZpbmVkICRm
dW5jdGlvbkxpc3RzLT57JGZpbGV9OworICAgICAgICAgICAgICAgICRmdW5jdGlvbkxpc3RzLT57
JGZpbGV9IC49ICJcbiAgICAgICAgKCIgLiBqb2luKCIpOiBEZWxldGVkLlxuICAgICAgICAoIiwg
QGZ1bmN0aW9ucykgLiAiKTogRGVsZXRlZC4iOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorfQorCitzdWIgZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlIHsKKyAgICBteSAkc3Ry
aW5nID0gc2hpZnQ7CisgICAgbXkgJGNodW5rUmFuZ2UgPSBwYXJzZUNodW5rUmFuZ2UoJHN0cmlu
Zyk7CisgICAgaWYgKCEkY2h1bmtSYW5nZSkgeworICAgICAgICByZXR1cm4gKC0xLCAtMSk7ICMg
TWFsZm9ybWVkCisgICAgfQorICAgIGlmICghJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9
IHx8ICEkY2h1bmtSYW5nZS0+e25ld0xpbmVDb3VudH0pIHsKKyAgICAgICAgICMgRGVsZXRpb247
IG5vIGxpbmVzIGV4aXN0IGFmdGVyIGNoYW5nZS4KKyAgICAgICAgcmV0dXJuICgkY2h1bmtSYW5n
ZS0+e25ld1N0YXJ0aW5nTGluZX0sICRjaHVua1JhbmdlLT57bmV3U3RhcnRpbmdMaW5lfSk7Cisg
ICAgfQorICAgIHJldHVybiAoJGNodW5rUmFuZ2UtPntuZXdTdGFydGluZ0xpbmV9LCAkY2h1bmtS
YW5nZS0+e25ld1N0YXJ0aW5nTGluZX0gKyAkY2h1bmtSYW5nZS0+e25ld0xpbmVDb3VudH0gLSAx
KTsKK30KKworc3ViIGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UgeworICAgIG15ICRzdHJp
bmcgPSBzaGlmdDsKKyAgICBteSAkY2h1bmtSYW5nZSA9IHBhcnNlQ2h1bmtSYW5nZSgkc3RyaW5n
KTsKKyAgICBpZiAoISRjaHVua1JhbmdlKSB7CisgICAgICAgIHJldHVybiAoLTEsIC0xKTsgIyBN
YWxmb3JtZWQKKyAgICB9CisgICAgaWYgKCEkY2h1bmtSYW5nZS0+e3N0YXJ0aW5nTGluZX0gfHwg
ISRjaHVua1JhbmdlLT57bGluZUNvdW50fSkgeworICAgICAgICAjIEFkZGl0aW9uOyBubyBsaW5l
cyBleGlzdGVkIGJlZm9yZSBjaGFuZ2UuCisgICAgICAgIHJldHVybiAoJGNodW5rUmFuZ2UtPntz
dGFydGluZ0xpbmV9LCAkY2h1bmtSYW5nZS0+e3N0YXJ0aW5nTGluZX0pOworICAgIH0KKyAgICBy
ZXR1cm4gKCRjaHVua1JhbmdlLT57c3RhcnRpbmdMaW5lfSwgJGNodW5rUmFuZ2UtPntzdGFydGlu
Z0xpbmV9ICsgJGNodW5rUmFuZ2UtPntsaW5lQ291bnR9IC0gMSk7Cit9CisKK3N1YiBhdHRyaWJ1
dGVDb21tYW5kIHsKKyAgICBteSAoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZSwgJGF0dHIpID0gQF87
CisKKyAgICBteSAkcmVzdWx0OworICAgIGlmIChpc1NWTigpKSB7CisgICAgICAgIG15ICRkZXZO
dWxsID0gRmlsZTo6U3BlYy0+ZGV2bnVsbCgpOworICAgICAgICBteSAkZm91bmRBdHRyaWJ1dGUg
PSAwOworICAgICAgICBteSAkc3ViUGF0aCA9ICIuIjsKKyAgICAgICAgbXkgKEBkaXJlY3RvcnlQ
YXJ0cykgPSBGaWxlOjpTcGVjLT5zcGxpdGRpcigkZmlsZSk7CisgICAgICAgIGZvcmVhY2ggbXkg
JHBhcnQgKEBkaXJlY3RvcnlQYXJ0cykgeworICAgICAgICAgICAgaWYgKCRwYXJ0IGVxICIuIikg
eworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkc3Vi
UGF0aCA9IEZpbGU6OlNwZWMtPmpvaW4oJHN1YlBhdGgsICRwYXJ0KTsKKyAgICAgICAgICAgICRz
dWJQYXRoID1+IHMvXlwuXC8vLzsKKyAgICAgICAgICAgIGlmICgkZm91bmRBdHRyaWJ1dGUgfHwg
ZXhpc3RzICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3ViUGF0aH0gJiYgJGF0dHJpYnV0ZUNh
Y2hlLT57JGF0dHJ9eyRzdWJQYXRofSBlcSAiMSIpIHsKKyAgICAgICAgICAgICAgICAkYXR0cmli
dXRlQ2FjaGUtPnskYXR0cn17JHN1YlBhdGh9ID0gIjEiOworICAgICAgICAgICAgICAgICRmb3Vu
ZEF0dHJpYnV0ZSA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIG15ICRjb21tYW5kID0gU1ZOIC4gIiBwcm9wZ2V0ICRhdHRyICckc3ViUGF0aCci
OworICAgICAgICAgICAgbXkgJGF0dHJpYiA9ICRhdHRyaWJ1dGVDYWNoZS0+eyRhdHRyfXskc3Vi
UGF0aH0gfHwgYCRjb21tYW5kIDI+ICRkZXZOdWxsYDsKKyAgICAgICAgICAgIGNob21wICRhdHRy
aWI7CisgICAgICAgICAgICBpZiAoJGF0dHJpYiBlcSAiMSIpIHsKKyAgICAgICAgICAgICAgICAk
Zm91bmRBdHRyaWJ1dGUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJGF0dHJpYnV0
ZUNhY2hlLT57JGF0dHJ9eyRzdWJQYXRofSA9ICRhdHRyaWIgfHwgIjAiOworICAgICAgICB9Cisg
ICAgICAgICRyZXN1bHQgPSAkYXR0cmlidXRlQ2FjaGUtPnskYXR0cn17JGZpbGV9OworICAgIH0g
ZWxzaWYgKGlzR2l0KCkpIHsKKyAgICAgICAgbXkgJGNvbW1hbmQgPSBHSVQgLiAiIGNoZWNrLWF0
dHIgJGF0dHIgLS0gJyRmaWxlJyI7CisgICAgICAgICRyZXN1bHQgPSBgJGNvbW1hbmRgOworICAg
ICAgICBjaG9tcCAkcmVzdWx0OworICAgICAgICAkcmVzdWx0ID1+IHMvLipcVyhcdykvJDEvOwor
ICAgIH0KKworICAgICRyZXN1bHQgPX4gcy9cRC8vZzsKKyAgICByZXR1cm4gaW50KCRyZXN1bHQg
fHwgMCk7Cit9CisKK3N1YiBmZXRjaEJ1Z0Rlc2NyaXB0aW9uRnJvbUJ1Z1hNTERhdGEgeworICAg
IG15ICgkYnVnVVJMLCAkYnVnTnVtYmVyLCAkYnVnWE1MRGF0YSkgPSBAXzsKKworICAgIGlmICgk
YnVnWE1MRGF0YSAhfiAvPHNob3J0X2Rlc2M+KC4qKTxcL3Nob3J0X2Rlc2M+LykgeworICAgICAg
ICBwcmludCBTVERFUlIgIiAgQnVnICRidWdOdW1iZXIgaGFzIG5vIGJ1ZyBkZXNjcmlwdGlvbi4g
TWF5YmUgeW91IHNldCB3cm9uZyBidWcgSUQ/XG4iOworICAgICAgICBwcmludCBTVERFUlIgIiAg
VGhlIGJ1ZyBVUkw6ICRidWdVUkxcbiI7CisgICAgICAgIGV4aXQgMTsKKyAgICB9CisKKyAgICBt
eSAkYnVnRGVzY3JpcHRpb24gPSBkZWNvZGVFbnRpdGllcygkMSk7CisgICAgcHJpbnQgU1RERVJS
ICIgIERlc2NyaXB0aW9uIGZyb20gYnVnICRidWdOdW1iZXI6XG4gICAgXCIkYnVnRGVzY3JpcHRp
b25cIi5cbiI7CisgICAgcmV0dXJuICRidWdEZXNjcmlwdGlvbjsKK30KKworc3ViIGZldGNoUmFk
YXJVUkxGcm9tQnVnWE1MRGF0YSB7CisgICAgbXkgKCRidWdOdW1iZXIsICRidWdYTUxEYXRhKSA9
IEBfOworCisgICAgcmV0dXJuICIiIGlmICRidWdYTUxEYXRhICF+IG18PHRoZXRleHQ+XHMqKCgm
bHQ7KT9yZGFyOi8vKHByb2JsZW0vKT9cZCsoJmd0Oyk/KXw7CisKKyAgICBteSAkYnVnUmFkYXJV
UkwgPSBkZWNvZGVFbnRpdGllcygkMSk7CisgICAgcHJpbnQgU1RERVJSICIgIFJhZGFyIFVSTCBm
cm9tIGJ1ZyAkYnVnTnVtYmVyOlxuICAgIFwiJGJ1Z1JhZGFyVVJMXCIuXG4iOworICAgIHJldHVy
biAkYnVnUmFkYXJVUkw7Cit9CisKK3N1YiBjb21wdXRlTW9kaWZpZWRGdW5jdGlvbnMgeworICAg
IG15ICgkZmlsZSwgJGNoYW5nZWRMaW5lUmFuZ2VzLCAkZnVuY3Rpb25SYW5nZXMpID0gQF87CisK
KyAgICBteSAlc2F3RnVuY3Rpb247CisKKyAgICAjIEZpbmQgYWxsIHRoZSBtb2RpZmllZCBmdW5j
dGlvbnMuCisgICAgbXkgQGZ1bmN0aW9uczsKKyAgICBteSBAY2hhbmdlX3JhbmdlcyA9IEB7JGNo
YW5nZWRMaW5lUmFuZ2VzfTsKKyAgICBteSBAY2hhbmdlX3JhbmdlID0gKDAsIDApOworICAgIEZV
TkNUSU9OOiBmb3JlYWNoIG15ICRmdW5jdGlvbl9yYW5nZV9yZWYgKEB7JGZ1bmN0aW9uUmFuZ2Vz
fSkgeworICAgICAgICBteSBAZnVuY3Rpb25fcmFuZ2UgPSBAeyRmdW5jdGlvbl9yYW5nZV9yZWZ9
OworCisgICAgICAgICMgRklYTUU6IFRoaXMgaXMgYSBoYWNrLiBJZiB0aGUgZnVuY3Rpb24gbmFt
ZSBpcyBlbXB0eSwgc2tpcCBpdC4KKyAgICAgICAgIyBUaGUgY3BwLCBweXRob24sIGphdmFzY3Jp
cHQsIHBlcmwsIGNzcyBhbmQgamF2YSBwYXJzZXJzCisgICAgICAgICMgYXJlIG5vdCBwZXJmZWN0
bHkgaW1wbGVtZW50ZWQgYW5kIHNvbWV0aW1lcyBmdW5jdGlvbiBuYW1lcyBjYW5ub3QgYmUgcmV0
cmlldmVkCisgICAgICAgICMgY29ycmVjdGx5LiBBcyB5b3UgY2FuIHNlZSBpbiBnZXRfZnVuY3Rp
b25fbGluZV9yYW5nZXNfWFhYWCgpLCB0aG9zZSBwYXJzZXJzCisgICAgICAgICMgYXJlIG5vdCBp
bnRlbmRlZCB0byBpbXBsZW1lbnQgcmVhbCBwYXJzZXJzIGJ1dCBpbnRlbmRlZCB0byBqdXN0IHJl
dHJpZXZlIGZ1bmN0aW9uIG5hbWVzCisgICAgICAgICMgZm9yIG1vc3QgcHJhY3RpY2FsIHN5bnRh
eGVzLgorICAgICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb25fcmFuZ2VbMl07CisKKyAgICAgICAg
IyBBZHZhbmNlIHRvIHN1Y2Nlc3NpdmUgY2hhbmdlIHJhbmdlcy4KKyAgICAgICAgZm9yICg7OyBA
Y2hhbmdlX3JhbmdlID0gQHtzaGlmdCBAY2hhbmdlX3Jhbmdlc30pIHsKKyAgICAgICAgICAgIGxh
c3QgRlVOQ1RJT04gdW5sZXNzIEBjaGFuZ2VfcmFuZ2U7CisKKyAgICAgICAgICAgICMgSWYgcGFz
dCB0aGlzIGZ1bmN0aW9uLCBtb3ZlIG9uIHRvIHRoZSBuZXh0IG9uZS4KKyAgICAgICAgICAgIG5l
eHQgRlVOQ1RJT04gaWYgJGNoYW5nZV9yYW5nZVswXSA+ICRmdW5jdGlvbl9yYW5nZVsxXTsKKwor
ICAgICAgICAgICAgIyBJZiBhbiBvdmVybGFwIHdpdGggdGhpcyBmdW5jdGlvbiByYW5nZSwgcmVj
b3JkIHRoZSBmdW5jdGlvbiBuYW1lLgorICAgICAgICAgICAgaWYgKCRjaGFuZ2VfcmFuZ2VbMV0g
Pj0gJGZ1bmN0aW9uX3JhbmdlWzBdCisgICAgICAgICAgICAgICAgYW5kICRjaGFuZ2VfcmFuZ2Vb
MF0gPD0gJGZ1bmN0aW9uX3JhbmdlWzFdKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkc2F3RnVu
Y3Rpb257JGZ1bmN0aW9uX3JhbmdlWzJdfSkgeworICAgICAgICAgICAgICAgICAgICAkc2F3RnVu
Y3Rpb257JGZ1bmN0aW9uX3JhbmdlWzJdfSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHB1c2gg
QGZ1bmN0aW9ucywgJGZ1bmN0aW9uX3JhbmdlWzJdOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBuZXh0IEZVTkNUSU9OOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIEBmdW5jdGlvbnM7Cit9CisKK3N1YiBnZXRfZnVuY3Rpb25fbGluZV9y
YW5nZXMgeworICAgIG15ICgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87CisKKyAgICAj
IFRyeSB0byBkZXRlcm1pbmUgdGhlIHNvdXJjZSBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgZmlsZSBl
eHRlbnNpb24uCisKKyAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAo
JGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLihjfGNwcHxtfG1t
fGgpJC87CisgICAgcmV0dXJuIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YSgkZmls
ZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wuamF2YSQvOworICAgIHJl
dHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX2phdmFzY3JpcHQoJGZpbGVfaGFuZGxl
LCAkZmlsZV9uYW1lKSBpZiAkZmlsZV9uYW1lID1+IC9cLmpzJC87CisgICAgcmV0dXJuIGdldF9z
ZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYg
JGZpbGVfbmFtZSA9fiAvXC5jc3MkLzsKKyAgICByZXR1cm4gZ2V0X2Z1bmN0aW9uX2xpbmVfcmFu
Z2VzX2Zvcl9wZXJsKCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFtZSA9fiAv
XC5wW2xtXSQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9yYW5nZXNfZm9yX3B5dGhv
bigkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRmaWxlX25hbWUgPX4gL1wucHkkLyBvciAk
ZmlsZV9uYW1lID1+IC9tYXN0ZXJcLmNmZyQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGlu
ZV9yYW5nZXNfZm9yX3N3aWZ0KCRmaWxlX2hhbmRsZSwgJGZpbGVfbmFtZSkgaWYgJGZpbGVfbmFt
ZSA9fiAvXC5zd2lmdCQvOworCisgICAgIyBUcnkgdG8gZGV0ZXJtaW5lIHRoZSBzb3VyY2UgbGFu
Z3VhZ2UgYmFzZWQgb24gdGhlIHNjcmlwdCBpbnRlcnByZXRlci4KKworICAgIG15ICRmaXJzdF9s
aW5lID0gPCRmaWxlX2hhbmRsZT47CisgICAgc2VlaygkZmlsZV9oYW5kbGUsIDAsIDApOworCisg
ICAgcmV0dXJuICgpIHVubGVzcyAkZmlyc3RfbGluZSA9fiBtfF4jISg/Oi91c3IvYmluL2Vudlxz
Kyk/KFxTKyl8OworICAgIG15ICRpbnRlcnByZXRlciA9ICQxOworCisgICAgcmV0dXJuIGdldF9m
dW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybCgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlm
ICRpbnRlcnByZXRlciA9fiAvcGVybCQvOworICAgIHJldHVybiBnZXRfZnVuY3Rpb25fbGluZV9y
YW5nZXNfZm9yX3B5dGhvbigkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpIGlmICRpbnRlcnByZXRl
ciA9fiAvcHl0aG9uJC87CisKKyAgICByZXR1cm4gKCk7Cit9CisKKyMgUmVhZCBhIGZpbGUgYW5k
IGdldCBhbGwgdGhlIGxpbmUgcmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgQyBm
dW5jdGlvbnMuCisjIEEgZnVuY3Rpb24gbmFtZSBpcyB0aGUgbGFzdCB3b3JkIGJlZm9yZSBhbiBv
cGVuIHBhcmVudGhlc2lzIGJlZm9yZSB0aGUgb3V0ZXIKKyMgbGV2ZWwgb3BlbiBicmFjZS4gQSBm
dW5jdGlvbiBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgbGFzdCBjbG9z
ZQorIyBicmFjZSBvciBzZW1pY29sb24gYmVmb3JlIHRoZSBmdW5jdGlvbiBuYW1lIGFuZCBlbmRz
IGF0IHRoZSBjbG9zZSBicmFjZS4KKyMgQ29tbWVudCBoYW5kbGluZyBpcyBzaW1wbGUtbWluZGVk
IGJ1dCB3aWxsIHdvcmsgZm9yIGFsbCBidXQgcGF0aG9sb2dpY2FsIGNhc2VzLgorIworIyBSZXN1
bHQgaXMgYSBsaXN0IG9mIHRyaXBsZXM6IFsgc3RhcnRfbGluZSwgZW5kX2xpbmUsIGZ1bmN0aW9u
X25hbWUgXS4KKworc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfY3BwIHsKKyAgICBt
eSAoJGZpbGVfaGFuZGxlLCAkZmlsZV9uYW1lKSA9IEBfOworCisgICAgbXkgQHJhbmdlczsKKwor
ICAgIG15ICRpbl9jb21tZW50ID0gMDsKKyAgICBteSAkaW5fbWFjcm8gPSAwOworICAgIG15ICRp
bl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOworICAgIG15ICRpbl9wYXJlbnRoZXNlcyA9IDA7Cisg
ICAgbXkgJHF1b3RhdGlvbl9tYXJrOworICAgIG15ICRpbl9icmFjZXMgPSAwOworICAgIG15ICRp
bl90b3BsZXZlbF9hcnJheV9icmFjZSA9IDA7CisgICAgbXkgJGJyYWNlX3N0YXJ0ID0gMDsKKyAg
ICBteSAkYnJhY2VfZW5kID0gMDsKKyAgICBteSAkbmFtZXNwYWNlX3N0YXJ0ID0gLTE7CisgICAg
bXkgJHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbiA9IDA7CisgICAgbXkgJGVxdWFsX29ic2Vy
dmVkID0gMDsKKworICAgIG15ICR3b3JkID0gIiI7CisgICAgbXkgJGludGVyZmFjZV9uYW1lID0g
IiI7CisKKyAgICBteSAkcG90ZW50aWFsX21ldGhvZF9jaGFyID0gIiI7CisgICAgbXkgJHBvdGVu
dGlhbF9tZXRob2Rfc3BlYyA9ICIiOworCisgICAgbXkgJHBvdGVudGlhbF9zdGFydCA9IDA7Cisg
ICAgbXkgJHBvdGVudGlhbF9uYW1lID0gIiI7CisKKyAgICBteSAkc3RhcnQgPSAwOworICAgIG15
ICRuYW1lID0gIiI7CisKKyAgICBteSAkbmV4dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSA9IDA7
CisgICAgbXkgJHBvdGVudGlhbF9uYW1lc3BhY2UgPSAiIjsKKyAgICBteSBAbmFtZXNwYWNlczsK
KyAgICBteSBAYWxsX25hbWVzcGFjZXM7CisKKyAgICB3aGlsZSAoPCRmaWxlX2hhbmRsZT4pIHsK
KyAgICAgICAgIyBIYW5kbGUgY29udGludWVkIHF1b3RlZCBzdHJpbmcuCisgICAgICAgIGlmICgk
cXVvdGF0aW9uX21hcmspIHsKKyAgICAgICAgICAgIGlmICghcy0oW15cXF18XFwuKSokcXVvdGF0
aW9uX21hcmstLSkgeworICAgICAgICAgICAgICAgIGlmICghbS1cXCQtKSB7CisgICAgICAgICAg
ICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVfbmFt
ZVxuIjsKKyAgICAgICAgICAgICAgICAgICAgdW5kZWYgJHF1b3RhdGlvbl9tYXJrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgdW5kZWYgJHF1b3RhdGlvbl9tYXJrOworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5k
bGUgY29udGludWVkIG11bHRpLWxpbmUgY29tbWVudC4KKyAgICAgICAgaWYgKCRpbl9jb21tZW50
KSB7CisgICAgICAgICAgICBuZXh0IHVubGVzcyBzLS4qXCovLS07CisgICAgICAgICAgICAkaW5f
Y29tbWVudCA9IDA7CisgICAgICAgIH0KKworICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgbWFj
cm8uCisgICAgICAgIGlmICgkaW5fbWFjcm8pIHsKKyAgICAgICAgICAgICRpbl9tYWNybyA9IDAg
dW5sZXNzIC9cXCQvOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCisgICAgICAgICMg
SGFuZGxlIHN0YXJ0IG9mIG1hY3JvIChvciBhbnkgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZSkuCisg
ICAgICAgIGlmICgvXlxzKlwjLykgeworICAgICAgICAgICAgJGluX21hY3JvID0gMSBpZiAvXihb
XlxcXXxcXC4pKlxcJC87CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisKKyAgICAgICAg
IyBIYW5kbGUgY29tbWVudHMgYW5kIHF1b3RlZCB0ZXh0LgorICAgICAgICB3aGlsZSAobS0oL1wq
fC8vfFwnfFwiKS0pIHsgIyBcJyBhbmQgXCIga2VlcCBlbWFjcyBwZXJsIG1vZGUgaGFwcHkKKyAg
ICAgICAgICAgIG15ICRtYXRjaCA9ICQxOworICAgICAgICAgICAgaWYgKCRtYXRjaCBlcSAiLyoi
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzLS9cKi4qP1wqLy0tKSB7CisgICAgICAgICAgICAg
ICAgICAgIHMtL1wqLiotLTsKKyAgICAgICAgICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAxOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzaWYgKCRtYXRjaCBlcSAiLy8iKSB7
CisgICAgICAgICAgICAgICAgcy0vLy4qLS07CisgICAgICAgICAgICB9IGVsc2UgeyAjICcgb3Ig
IgorICAgICAgICAgICAgICAgIGlmICghcy0kbWF0Y2goW15cXF18XFwuKSo/JG1hdGNoLS0pIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKCFzLSRtYXRjaC4qXFwkLS0pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVf
bmFtZVxuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtJG1hdGNoLiotLTsKKyAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRxdW90YXRpb25f
bWFyayA9ICRtYXRjaDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisKKyAgICAgICAgIyBjb250aW51ZWQgbWV0aG9k
IGRlY2xhcmF0aW9uCisgICAgICAgIGlmICgkaW5fbWV0aG9kX2RlY2xhcmF0aW9uKSB7CisgICAg
ICAgICAgICAgIG15ICRvcmlnaW5hbCA9ICRfOworICAgICAgICAgICAgICBteSAkbWV0aG9kX2Nv
bnQgPSAkXzsKKworICAgICAgICAgICAgICBjaG9tcCAkbWV0aG9kX2NvbnQ7CisgICAgICAgICAg
ICAgICRtZXRob2RfY29udCA9fiBzL1s7XHtdLiovLzsKKyAgICAgICAgICAgICAgJHBvdGVudGlh
bF9tZXRob2Rfc3BlYyA9ICIke3BvdGVudGlhbF9tZXRob2Rfc3BlY30gJHttZXRob2RfY29udH0i
OworCisgICAgICAgICAgICAgICRfID0gJG9yaWdpbmFsOworICAgICAgICAgICAgICBpZiAoLzsv
KSB7CisgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gMDsKKyAgICAgICAgICAg
ICAgICAgICRwb3RlbnRpYWxfbWV0aG9kX3NwZWMgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRw
b3RlbnRpYWxfbWV0aG9kX2NoYXIgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRpbl9tZXRob2Rf
ZGVjbGFyYXRpb24gPSAwOworICAgICAgICAgICAgICAgICAgcy9eW147XHtdKi8vOworICAgICAg
ICAgICAgICB9IGVsc2lmICgvey8pIHsKKyAgICAgICAgICAgICAgICAgIG15ICRzZWxlY3RvciA9
IG1ldGhvZF9kZWNsX3RvX3NlbGVjdG9yICgkcG90ZW50aWFsX21ldGhvZF9zcGVjKTsKKyAgICAg
ICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIke3BvdGVudGlhbF9tZXRob2RfY2hhcn1c
WyR7aW50ZXJmYWNlX25hbWV9ICR7c2VsZWN0b3J9XF0iOworCisgICAgICAgICAgICAgICAgICAk
cG90ZW50aWFsX21ldGhvZF9zcGVjID0gIiI7CisgICAgICAgICAgICAgICAgICAkcG90ZW50aWFs
X21ldGhvZF9jaGFyID0gIiI7CisgICAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0
aW9uID0gMDsKKworICAgICAgICAgICAgICAgICAgJF8gPSAkb3JpZ2luYWw7CisgICAgICAgICAg
ICAgICAgICBzL15bXjt7XSovLzsKKyAgICAgICAgICAgICAgfSBlbHNpZiAoL1xAZW5kLykgewor
ICAgICAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7CisgICAgICAgICAg
ICAgICAgICAkaW50ZXJmYWNlX25hbWUgPSAiIjsKKyAgICAgICAgICAgICAgICAgICRfID0gJG9y
aWdpbmFsOworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgbmV4dDsK
KyAgICAgICAgICAgICAgfQorICAgICAgICB9CisKKworICAgICAgICAjIHN0YXJ0IG9mIG1ldGhv
ZCBkZWNsYXJhdGlvbgorICAgICAgICBpZiAoKG15ICRtZXRob2RfY2hhciwgbXkgJG1ldGhvZF9z
cGVjKSA9IG0mXihbLStdKShbXjAtOTtdW147XSopOz8kJikgeworICAgICAgICAgICAgbXkgJG9y
aWdpbmFsID0gJF87CisKKyAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlX25hbWUpIHsKKyAgICAg
ICAgICAgICAgICBjaG9tcCAkbWV0aG9kX3NwZWM7CisgICAgICAgICAgICAgICAgJG1ldGhvZF9z
cGVjID1+IHMvXHsuKi8vOworCisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2RfY2hh
ciA9ICRtZXRob2RfY2hhcjsKKyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9zcGVj
ID0gJG1ldGhvZF9zcGVjOworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAkLjsK
KyAgICAgICAgICAgICAgICAkaW5fbWV0aG9kX2RlY2xhcmF0aW9uID0gMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgd2FybiAiZGVjbGFyaW5nIGEgbWV0aG9kIGJ1dCBk
b24ndCBoYXZlIGludGVyZmFjZSBvbiBsaW5lICQuIGluICRmaWxlX25hbWVcbiI7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsKKyAgICAgICAgICAgIGlmICgvXHsv
KSB7CisgICAgICAgICAgICAgIG15ICRzZWxlY3RvciA9IG1ldGhvZF9kZWNsX3RvX3NlbGVjdG9y
ICgkcG90ZW50aWFsX21ldGhvZF9zcGVjKTsKKyAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1l
ID0gIiR7cG90ZW50aWFsX21ldGhvZF9jaGFyfVxbJHtpbnRlcmZhY2VfbmFtZX0gJHtzZWxlY3Rv
cn1cXSI7CisKKyAgICAgICAgICAgICAgJHBvdGVudGlhbF9tZXRob2Rfc3BlYyA9ICIiOworICAg
ICAgICAgICAgICAkcG90ZW50aWFsX21ldGhvZF9jaGFyID0gIiI7CisgICAgICAgICAgICAgICRp
bl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOworICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsK
KyAgICAgICAgICAgICAgcy9eW157XSovLzsKKyAgICAgICAgICAgIH0gZWxzaWYgKC9cQGVuZC8p
IHsKKyAgICAgICAgICAgICAgJGluX21ldGhvZF9kZWNsYXJhdGlvbiA9IDA7CisgICAgICAgICAg
ICAgICRpbnRlcmZhY2VfbmFtZSA9ICIiOworICAgICAgICAgICAgICAkXyA9ICRvcmlnaW5hbDsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworCisgICAgICAgICMgRmluZCBmdW5jdGlvbiwgaW50ZXJmYWNlIGFuZCBt
ZXRob2QgbmFtZXMuCisgICAgICAgIHdoaWxlIChtJigoPzpbWzp3b3JkOl1dKzo6KSpvcGVyYXRv
cig/OlsgXHRdKlwoXCl8W14oKV0qKXxbWzp3b3JkOl08Pjp+XSt8Wygpe306Oz1dKXxcQCg/Omlt
cGxlbWVudGF0aW9ufGludGVyZmFjZXxwcm90b2NvbClccysoXHcrKVtee10qJmcpIHsKKyAgICAg
ICAgICAgICMgU2tpcCBhbiBhcnJheSBkZWZpbml0aW9uIGF0IHRoZSB0b3AgbGV2ZWwuCisgICAg
ICAgICAgICAjIGUuZy4gc3RhdGljIGludCBhcnJbXSA9IHsgMSwgMiwgMyB9OworICAgICAgICAg
ICAgaWYgKCQxKSB7CisgICAgICAgICAgICAgICAgaWYgKCQxIGVxICI9IiBhbmQgISRpbl9wYXJl
bnRoZXNlcyBhbmQgISRpbl9icmFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgJGVxdWFsX29i
c2VydmVkID0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkMSBlcSAieyIgYW5kICRlcXVh
bF9vYnNlcnZlZCkgeworICAgICAgICAgICAgICAgICAgICAjIFRoaXMgJ3snIGlzIHRoZSBiZWdp
bm5pbmcgb2YgYW4gYXJyYXkgZGVmaW5pdGlvbiwgbm90IHRoZSBiZWdpbm5pbmcgb2YgYSBtZXRo
b2QuCisgICAgICAgICAgICAgICAgICAgICRpbl90b3BsZXZlbF9hcnJheV9icmFjZSA9IDE7Cisg
ICAgICAgICAgICAgICAgICAgICRpbl9icmFjZXMrKzsKKyAgICAgICAgICAgICAgICAgICAgJGVx
dWFsX29ic2VydmVkID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAg
ICAgICB9IGVsc2lmICgkMSAhfiAvWyBcdF0vKSB7CisgICAgICAgICAgICAgICAgICAgICRlcXVh
bF9vYnNlcnZlZCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAjIGludGVyZmFjZSBuYW1lCisgICAgICAgICAgICBpZiAoJDIpIHsKKyAgICAgICAg
ICAgICAgICAkaW50ZXJmYWNlX25hbWUgPSAkMjsKKyAgICAgICAgICAgICAgICBuZXh0OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCisgICAgICAgICAg
ICBpZiAoJDEgZXEgIigiKSB7CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdv
cmQgdW5sZXNzICRpbl9wYXJlbnRoZXNlcyB8fCAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9u
IHx8IGdyZXAgeyAkd29yZCBlcSAkXyB9ICgiQ0ZfRU5VTSIsICJDRl9PUFRJT05TIiwgIk5TX0VO
VU0iLCAiTlNfT1BUSU9OUyIpOworICAgICAgICAgICAgICAgICRpbl9wYXJlbnRoZXNlcysrOwor
ICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQ2xv
c2UgcGFyZW50aGVzaXMuCisgICAgICAgICAgICBpZiAoJDEgZXEgIikiKSB7CisgICAgICAgICAg
ICAgICAgJGluX3BhcmVudGhlc2VzLS07CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgaWYgKCQxIGVxICJjb25zdCIgYW5kICEkaW5fcGFyZW50aGVz
ZXMpIHsKKyAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWUgLj0gIiBjb25zdCI7CisgICAg
ICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCQxIGVx
ICJ2b2xhdGlsZSIgYW5kICEkaW5fcGFyZW50aGVzZXMpIHsKKyAgICAgICAgICAgICAgICAkcG90
ZW50aWFsX25hbWUgLj0gIiB2b2xhdGlsZSI7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgIyBDKysgYXV0byBmdW5jdGlvbigpIC0+IHR5cGUKKyAg
ICAgICAgICAgIGlmICgkMSBlcSAiPiIpIHsKKyAgICAgICAgICAgICAgICAkc2tpcF90aWxfYnJh
Y2Vfb3Jfc2VtaWNvbG9uID0gMSB1bmxlc3MgKCRpbl9wYXJlbnRoZXNlcyB8fCAkaW5fYnJhY2Vz
KTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAj
IEMrKyBjb25zdHJ1Y3RvciBpbml0aWFsaXplcnMKKyAgICAgICAgICAgIGlmICgkMSBlcSAiOiIp
IHsKKyAgICAgICAgICAgICAgICAkc2tpcF90aWxfYnJhY2Vfb3Jfc2VtaWNvbG9uID0gMSB1bmxl
c3MgKCRpbl9wYXJlbnRoZXNlcyB8fCAkaW5fYnJhY2VzKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgIyBPcGVuIGJyYWNlLgorICAgICAgICAgICAgaWYgKCQxIGVxICJ7IikgeworICAg
ICAgICAgICAgICAgICRza2lwX3RpbF9icmFjZV9vcl9zZW1pY29sb24gPSAwOworCisgICAgICAg
ICAgICAgICAgaWYgKCEkaW5fYnJhY2VzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkbmFt
ZXNwYWNlX3N0YXJ0ID49IDAgYW5kICRuYW1lc3BhY2Vfc3RhcnQgPCAkcG90ZW50aWFsX3N0YXJ0
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJG5hbWVzcGFjZV9z
dGFydCAuICIiLCAkcG90ZW50aWFsX3N0YXJ0IC0gMSwgJG5hbWUgXTsKKyAgICAgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmICgkcG90ZW50aWFsX25hbWVzcGFjZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAbmFtZXNwYWNlcywgJHBvdGVudGlhbF9u
YW1lc3BhY2U7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBhbGxfbmFtZXNwYWNlcywg
JHBvdGVudGlhbF9uYW1lc3BhY2U7CisgICAgICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFs
X25hbWVzcGFjZSA9ICIiOworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkbmFtZXNw
YWNlc1stMV07CisgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0gJC4g
KyAxOworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgICMgUHJvbW90ZSBwb3RlbnRpYWwgbmFtZSB0byByZWFs
IGZ1bmN0aW9uIG5hbWUgYXQgdGhlCisgICAgICAgICAgICAgICAgICAgICMgc3RhcnQgb2YgdGhl
IG91dGVyIGxldmVsIHNldCBvZiBicmFjZXMgKGZ1bmN0aW9uIGJvZHk/KS4KKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCRwb3RlbnRpYWxfc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICRzdGFydCA9ICRwb3RlbnRpYWxfc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAkbmFt
ZSA9ICRwb3RlbnRpYWxfbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChAbmFtZXNw
YWNlcyAmJiAkbmFtZSAmJiAobGVuZ3RoKCRuYW1lKSA8IDIgfHwgc3Vic3RyKCRuYW1lLDEsMSkg
bmUgIlsiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lID0gam9pbiAoJzo6
JywgQG5hbWVzcGFjZXMsICRuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICRp
bl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOworCisgICAgICAgICAgICAgICAgJGJyYWNlX3N0YXJ0
ID0gJC4gaWYgKCEkaW5fYnJhY2VzKTsKKyAgICAgICAgICAgICAgICAkaW5fYnJhY2VzKys7Cisg
ICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBDbG9z
ZSBicmFjZS4KKyAgICAgICAgICAgIGlmICgkMSBlcSAifSIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoISRpbl9icmFjZXMgJiYgQG5hbWVzcGFjZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCRuYW1lc3BhY2Vfc3RhcnQgPj0gMCBhbmQgJG5hbWVzcGFjZV9zdGFydCA8ICQuKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoIEByYW5nZXMsIFsgJG5hbWVzcGFjZV9zdGFydCAuICIi
LCAkLiAtIDEsICRuYW1lIF07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgICAgICBwb3AgQG5hbWVzcGFjZXM7CisgICAgICAgICAgICAgICAgICAgIGlmIChAbmFtZXNw
YWNlcykgeworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAkbmFtZXNwYWNlc1stMV07
CisgICAgICAgICAgICAgICAgICAgICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0gJC4gKyAxOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUg
PSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAtMTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICRpbl9icmFjZXMtLTsKKyAgICAgICAgICAgICAg
ICAkYnJhY2VfZW5kID0gJC4gaWYgKCEkaW5fYnJhY2VzKTsKKworICAgICAgICAgICAgICAgICMg
RW5kIG9mIGFuIG91dGVyIGxldmVsIHNldCBvZiBicmFjZXMuCisgICAgICAgICAgICAgICAgIyBU
aGlzIGNvdWxkIGJlIGEgZnVuY3Rpb24gYm9keS4KKyAgICAgICAgICAgICAgICBpZiAoISRpbl9i
cmFjZXMgYW5kICRuYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICMgVGhpcyBpcyB0aGUgZW5k
IG9mIGFuIGFycmF5IGRlZmluaXRpb24gYXQgdGhlIHRvcCBsZXZlbCwgbm90IHRoZSBlbmQgb2Yg
YSBtZXRob2QuCisgICAgICAgICAgICAgICAgICAgIGlmICgkaW5fdG9wbGV2ZWxfYXJyYXlfYnJh
Y2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRpbl90b3BsZXZlbF9hcnJheV9icmFjZSA9
IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgcHVzaCBAcmFuZ2VzLCBbICRzdGFydCwgJC4sICRuYW1l
IF07CisgICAgICAgICAgICAgICAgICAgIGlmIChAbmFtZXNwYWNlcykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgJG5hbWUgPSAkbmFtZXNwYWNlc1stMV07CisgICAgICAgICAgICAgICAgICAg
ICAgICAkbmFtZXNwYWNlX3N0YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSAiIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICRuYW1lc3BhY2Vfc3RhcnQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAw
OworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAg
IG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgU2VtaWNvbG9uLgorICAgICAg
ICAgICAgaWYgKCQxIGVxICI7IikgeworICAgICAgICAgICAgICAgICRza2lwX3RpbF9icmFjZV9v
cl9zZW1pY29sb24gPSAwOworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAwOwor
ICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgICRp
bl9tZXRob2RfZGVjbGFyYXRpb24gPSAwOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICMgSWdub3JlICJjb25zdCIgbWV0aG9kIHF1YWxpZmllci4K
KyAgICAgICAgICAgIGlmICgkMSBlcSAiY29uc3QiKSB7CisgICAgICAgICAgICAgICAgbmV4dDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCQxIGVxICJuYW1lc3BhY2UiIHx8ICQx
IGVxICJjbGFzcyIgfHwgJDEgZXEgInN0cnVjdCIpIHsKKyAgICAgICAgICAgICAgICAkbmV4dF93
b3JkX2NvdWxkX2JlX25hbWVzcGFjZSA9IDE7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgIyBXb3JkLgorICAgICAgICAgICAgJHdvcmQgPSAkMTsK
KyAgICAgICAgICAgIGlmICghJHNraXBfdGlsX2JyYWNlX29yX3NlbWljb2xvbikgeworICAgICAg
ICAgICAgICAgIGlmICgkbmV4dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSkgeworICAgICAgICAg
ICAgICAgICAgICAkcG90ZW50aWFsX25hbWVzcGFjZSA9ICR3b3JkOworICAgICAgICAgICAgICAg
ICAgICAkbmV4dF93b3JkX2NvdWxkX2JlX25hbWVzcGFjZSA9IDA7CisgICAgICAgICAgICAgICAg
fSBlbHNpZiAoJHBvdGVudGlhbF9uYW1lc3BhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBv
dGVudGlhbF9uYW1lc3BhY2UgPSAiIjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBpZiAoISRpbl9wYXJlbnRoZXNlcykgeworICAgICAgICAgICAgICAgICAgICAkcG90ZW50
aWFsX3N0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghJHBvdGVudGlhbF9zdGFy
dCkgeworICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47CisgICAgICAg
ICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHdhcm4gIm1pc3NpbmcgY2xvc2Ug
YnJhY2VzIGluICRmaWxlX25hbWUgKHByb2JhYmxlIHN0YXJ0IGF0ICRicmFjZV9zdGFydClcbiIg
aWYgKCRpbl9icmFjZXMgPiAwKTsKKyAgICB3YXJuICJ0b28gbWFueSBjbG9zZSBicmFjZXMgaW4g
JGZpbGVfbmFtZSAocHJvYmFibGUgc3RhcnQgYXQgJGJyYWNlX2VuZClcbiIgaWYgKCRpbl9icmFj
ZXMgPCAwKTsKKworICAgIHdhcm4gIm1pc21hdGNoZWQgcGFyZW50aGVzZXMgaW4gJGZpbGVfbmFt
ZVxuIiBpZiAkaW5fcGFyZW50aGVzZXM7CisKKyAgICByZXR1cm4gZGVsZXRlX25hbWVzcGFjZXNf
ZnJvbV9yYW5nZXNfZm9yX2NwcChcQHJhbmdlcywgXEBhbGxfbmFtZXNwYWNlcyk7Cit9CisKKwor
IyBUYWtlIGluIHJlZmVyZW5jZXMgdG8gYW4gYXJyYXkgb2YgbGluZSByYW5nZXMgZm9yIEMgZnVu
Y3Rpb25zIGluIGEgZ2l2ZW4gZmlsZQorIyBhbmQgYW4gYXJyYXkgb2YgbmFtZXNwYWNlcyBkZWNs
YXJlZCBpbiB0aGF0IGZpbGUgYW5kIHJldHVybiBhbiB1cGRhdGVkCisjIGxpc3Qgb2YgbGluZSBy
YW5nZXMgd2l0aCB0aGUgbmFtZXNwYWNlcyByZW1vdmVkLgorCitzdWIgZGVsZXRlX25hbWVzcGFj
ZXNfZnJvbV9yYW5nZXNfZm9yX2NwcCB7CisgICAgbXkgKCRyYW5nZXNfcmVmLCAkbmFtZXNwYWNl
c19yZWYpID0gQF87CisgICAgcmV0dXJuIGdyZXAgeyFpc19mdW5jdGlvbl9pbl9uYW1lc3BhY2Uo
JG5hbWVzcGFjZXNfcmVmLCAkJF9bMl0pfSBAJHJhbmdlc19yZWY7Cit9CisKKworc3ViIGlzX2Z1
bmN0aW9uX2luX25hbWVzcGFjZSB7CisgICAgbXkgKCRuYW1lc3BhY2VzX3JlZiwgJGZ1bmN0aW9u
X25hbWUpID0gQF87CisgICAgcmV0dXJuIGdyZXAgeyRfIGVxICRmdW5jdGlvbl9uYW1lfSBAJG5h
bWVzcGFjZXNfcmVmOworfQorCisKKyMgUmVhZCBhIGZpbGUgYW5kIGdldCBhbGwgdGhlIGxpbmUg
cmFuZ2VzIG9mIHRoZSB0aGluZ3MgdGhhdCBsb29rIGxpa2UgSmF2YQorIyBjbGFzc2VzLCBpbnRl
cmZhY2VzIGFuZCBtZXRob2RzLgorIworIyBBIGNsYXNzIG9yIGludGVyZmFjZSBuYW1lIGlzIHRo
ZSB3b3JkIHRoYXQgaW1tZWRpYXRlbHkgZm9sbG93cworIyBgY2xhc3MnIG9yIGBpbnRlcmZhY2Un
IHdoZW4gZm9sbG93ZWQgYnkgYW4gb3BlbiBjdXJseSBicmFjZSBhbmQgbm90CisjIGEgc2VtaWNv
bG9uLiBJdCBjYW4gYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWwsIG9yIGluc2lkZSBhbm90aGVyIGNs
YXNzCisjIG9yIGludGVyZmFjZSBibG9jaywgYnV0IG5vdCBpbnNpZGUgYSBmdW5jdGlvbiBibG9j
aworIworIyBBIGNsYXNzIG9yIGludGVyZmFjZSBzdGFydHMgYXQgdGhlIGZpcnN0IGNoYXJhY3Rl
ciBhZnRlciB0aGUgZmlyc3QgY2xvc2UKKyMgYnJhY2Ugb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uIG5h
bWUgYW5kIGVuZHMgYXQgdGhlIGNsb3NlIGJyYWNlLgorIworIyBBIGZ1bmN0aW9uIG5hbWUgaXMg
dGhlIGxhc3Qgd29yZCBiZWZvcmUgYW4gb3BlbiBwYXJlbnRoZXNpcyBiZWZvcmUKKyMgYW4gb3Bl
biBicmFjZSByYXRoZXIgdGhhbiBhIHNlbWljb2xvbi4gSXQgY2FuIGFwcGVhciBhdCB0b3AgbGV2
ZWwgb3IKKyMgaW5zaWRlIGEgY2xhc3Mgb3IgaW50ZXJmYWNlIGJsb2NrLCBidXQgbm90IGluc2lk
ZSBhIGZ1bmN0aW9uIGJsb2NrLgorIworIyBBIGZ1bmN0aW9uIHN0YXJ0cyBhdCB0aGUgZmlyc3Qg
Y2hhcmFjdGVyIGFmdGVyIHRoZSBmaXJzdCBjbG9zZQorIyBicmFjZSBvciBhZnRlciB0aGUgZnVu
Y3Rpb24gbmFtZSBhbmQgZW5kcyBhdCB0aGUgY2xvc2UgYnJhY2UuCisjCisjIENvbW1lbnQgaGFu
ZGxpbmcgaXMgc2ltcGxlLW1pbmRlZCBidXQgd2lsbCB3b3JrIGZvciBhbGwgYnV0IHBhdGhvbG9n
aWNhbCBjYXNlcy4KKyMKKyMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xp
bmUsIGVuZF9saW5lLCBmdW5jdGlvbl9uYW1lIF0uCisKK3N1YiBnZXRfZnVuY3Rpb25fbGluZV9y
YW5nZXNfZm9yX2phdmEgeworICAgIG15ICgkZmlsZV9oYW5kbGUsICRmaWxlX25hbWUpID0gQF87
CisKKyAgICBteSBAY3VycmVudF9zY29wZXM7CisKKyAgICBteSBAcmFuZ2VzOworCisgICAgbXkg
JGluX2NvbW1lbnQgPSAwOworICAgIG15ICRpbl9tYWNybyA9IDA7CisgICAgbXkgJGluX3BhcmVu
dGhlc2VzID0gMDsKKyAgICBteSAkaW5fYnJhY2VzID0gMDsKKyAgICBteSAkaW5fbm9uX2Jsb2Nr
X2JyYWNlcyA9IDA7CisgICAgbXkgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAwOwor
ICAgIG15ICRpbl9jbGFzc19kZWNsYXJhdGlvbiA9IDA7CisKKyAgICBteSAkd29yZCA9ICIiOwor
CisgICAgbXkgJHBvdGVudGlhbF9zdGFydCA9IDA7CisgICAgbXkgJHBvdGVudGlhbF9uYW1lID0g
IiI7CisgICAgbXkgJHBvdGVudGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7CisK
KyAgICBteSAkc3RhcnQgPSAwOworICAgIG15ICRuYW1lID0gIiI7CisgICAgbXkgJGN1cnJlbnRf
bmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAwOworCisgICAgd2hpbGUgKDwkZmlsZV9oYW5k
bGU+KSB7CisgICAgICAgICMgSGFuZGxlIGNvbnRpbnVlZCBtdWx0aS1saW5lIGNvbW1lbnQuCisg
ICAgICAgIGlmICgkaW5fY29tbWVudCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3Mgcy0uKlwq
Ly0tOworICAgICAgICAgICAgJGluX2NvbW1lbnQgPSAwOworICAgICAgICB9CisKKyAgICAgICAg
IyBIYW5kbGUgY29udGludWVkIG1hY3JvLgorICAgICAgICBpZiAoJGluX21hY3JvKSB7CisgICAg
ICAgICAgICAkaW5fbWFjcm8gPSAwIHVubGVzcyAvXFwkLzsKKyAgICAgICAgICAgIG5leHQ7Cisg
ICAgICAgIH0KKworICAgICAgICAjIEhhbmRsZSBzdGFydCBvZiBtYWNybyAob3IgYW55IHByZXBy
b2Nlc3NvciBkaXJlY3RpdmUpLgorICAgICAgICBpZiAoL15ccypcIy8pIHsKKyAgICAgICAgICAg
ICRpbl9tYWNybyA9IDEgaWYgL14oW15cXF18XFwuKSpcXCQvOworICAgICAgICAgICAgbmV4dDsK
KyAgICAgICAgfQorCisgICAgICAgICMgSGFuZGxlIGNvbW1lbnRzIGFuZCBxdW90ZWQgdGV4dC4K
KyAgICAgICAgd2hpbGUgKG0tKC9cKnwvL3xcJ3xcIiktKSB7ICMgXCcgYW5kIFwiIGtlZXAgZW1h
Y3MgcGVybCBtb2RlIGhhcHB5CisgICAgICAgICAgICBteSAkbWF0Y2ggPSAkMTsKKyAgICAgICAg
ICAgIGlmICgkbWF0Y2ggZXEgIi8qIikgeworICAgICAgICAgICAgICAgIGlmICghcy0vXCouKj9c
Ki8tLSkgeworICAgICAgICAgICAgICAgICAgICBzLS9cKi4qLS07CisgICAgICAgICAgICAgICAg
ICAgICRpbl9jb21tZW50ID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2lmICgkbWF0Y2ggZXEgIi8vIikgeworICAgICAgICAgICAgICAgIHMtLy8uKi0tOworICAgICAg
ICAgICAgfSBlbHNlIHsgIyAnIG9yICIKKyAgICAgICAgICAgICAgICBpZiAoIXMtJG1hdGNoKFte
XFxdfFxcLikqPyRtYXRjaC0tKSB7CisgICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNo
ZWQgcXVvdGVzIGF0IGxpbmUgJC4gaW4gJGZpbGVfbmFtZVxuIjsKKyAgICAgICAgICAgICAgICAg
ICAgcy0kbWF0Y2guKi0tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgICMgRmluZCBmdW5jdGlvbiBuYW1lcy4KKyAgICAgICAgd2hpbGUgKG0t
KFx3K3xbKCl7fTtdKS1nKSB7CisgICAgICAgICAgICAjIE9wZW4gcGFyZW50aGVzaXMuCisgICAg
ICAgICAgICBpZiAoJDEgZXEgIigiKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkaW5fcGFyZW50
aGVzZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gJHdvcmQ7Cisg
ICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2Ug
PSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkaW5fcGFyZW50aGVzZXMr
KzsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAj
IENsb3NlIHBhcmVudGhlc2lzLgorICAgICAgICAgICAgaWYgKCQxIGVxICIpIikgeworICAgICAg
ICAgICAgICAgICRpbl9wYXJlbnRoZXNlcy0tOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICMgT3BlbiBicmFjZS4KKyAgICAgICAgICAgIGlmICgk
MSBlcSAieyIpIHsKKyAgICAgICAgICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAwOwor
CisgICAgICAgICAgICAgICAgIyBQcm9tb3RlIHBvdGVudGlhbCBuYW1lIHRvIHJlYWwgZnVuY3Rp
b24gbmFtZSBhdCB0aGUKKyAgICAgICAgICAgICAgICAjIHN0YXJ0IG9mIHRoZSBvdXRlciBsZXZl
bCBzZXQgb2YgYnJhY2VzIChmdW5jdGlvbi9jbGFzcy9pbnRlcmZhY2UgYm9keT8pLgorICAgICAg
ICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19icmFjZXMKKyAgICAgICAgICAgICAgICAgICAg
YW5kICghJGluX2JyYWNlcyBvciAkY3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSkK
KyAgICAgICAgICAgICAgICAgICAgYW5kICRwb3RlbnRpYWxfc3RhcnQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCRuYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHJh
bmdlcywgWyAkc3RhcnQsICgkLiAtIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgam9pbiAoJy4nLCBAY3VycmVudF9zY29wZXMpIF07CisgICAgICAgICAgICAg
ICAgICAgIH0KKworCisgICAgICAgICAgICAgICAgICAgICRjdXJyZW50X25hbWVfaXNfY2xhc3Nf
b3JfaW50ZXJmYWNlID0gJHBvdGVudGlhbF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZTsKKwor
ICAgICAgICAgICAgICAgICAgICAkc3RhcnQgPSAkcG90ZW50aWFsX3N0YXJ0OworICAgICAgICAg
ICAgICAgICAgICAkbmFtZSA9ICRwb3RlbnRpYWxfbmFtZTsKKworICAgICAgICAgICAgICAgICAg
ICBwdXNoIChAY3VycmVudF9zY29wZXMsICRuYW1lKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAkaW5fbm9uX2Jsb2NrX2JyYWNlcysrOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfbmFtZSA9ICIiOworICAgICAg
ICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAwOworCisgICAgICAgICAgICAgICAgJGluX2Jy
YWNlcysrOworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICMgQ2xvc2UgYnJhY2UuCisgICAgICAgICAgICBpZiAoJDEgZXEgIn0iKSB7CisgICAgICAg
ICAgICAgICAgJGluX2JyYWNlcy0tOworCisgICAgICAgICAgICAgICAgIyBFbmQgb2YgYW4gb3V0
ZXIgbGV2ZWwgc2V0IG9mIGJyYWNlcy4KKyAgICAgICAgICAgICAgICAjIFRoaXMgY291bGQgYmUg
YSBmdW5jdGlvbiBib2R5LgorICAgICAgICAgICAgICAgIGlmICghJGluX25vbl9ibG9ja19icmFj
ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRuYW1lKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoIEByYW5nZXMsIFsgJHN0YXJ0LCAkLiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqb2luICgnLicsIEBjdXJyZW50X3Njb3BlcykgXTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgcG9wIChAY3VycmVudF9zY29wZXMpOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoQGN1cnJlbnRfc2NvcGVzKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJGN1cnJlbnRfbmFtZV9pc19jbGFzc19vcl9pbnRlcmZhY2UgPSAxOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJC4gKyAxOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICRuYW1lID0gICRjdXJyZW50X3Njb3Blc1skI2N1cnJlbnRfc2NvcGVzLTFd
OworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAkY3VycmVudF9uYW1lX2lzX2NsYXNzX29yX2ludGVyZmFjZSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkbmFtZSA9ICAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
ICRpbl9ub25fYmxvY2tfYnJhY2VzLS0gaWYgJGluX25vbl9ibG9ja19icmFjZXM7CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7CisgICAg
ICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICAgICAgbmV4dDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBTZW1pY29sb24uCisgICAgICAgICAgICBp
ZiAoJDEgZXEgIjsiKSB7CisgICAgICAgICAgICAgICAgJHBvdGVudGlhbF9zdGFydCA9IDA7Cisg
ICAgICAgICAgICAgICAgJHBvdGVudGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIpIHsKKyAg
ICAgICAgICAgICAgICAkaW5fY2xhc3NfZGVjbGFyYXRpb24gPSAxOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCQxIGVxICJjbGFzcyIgb3IgKCEkaW5fY2xhc3NfZGVjbGFyYXRpb24g
YW5kICQxIGVxICJpbnRlcmZhY2UiKSkgeworICAgICAgICAgICAgICAgICRjbGFzc19vcl9pbnRl
cmZhY2VfanVzdF9zZWVuID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAjIFdvcmQuCisgICAgICAgICAgICAkd29yZCA9ICQxOworICAgICAg
ICAgICAgaWYgKCEkaW5fcGFyZW50aGVzZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGNsYXNz
X29yX2ludGVyZmFjZV9qdXN0X3NlZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgJHBvdGVudGlh
bF9uYW1lID0gJHdvcmQ7CisgICAgICAgICAgICAgICAgICAgICRwb3RlbnRpYWxfc3RhcnQgPSAk
LjsKKyAgICAgICAgICAgICAgICAgICAgJGNsYXNzX29yX2ludGVyZmFjZV9qdXN0X3NlZW4gPSAw
OworICAgICAgICAgICAgICAgICAgICAkcG90ZW50aWFsX25hbWVfaXNfY2xhc3Nfb3JfaW50ZXJm
YWNlID0gMTsKKyAgICAgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoISRwb3RlbnRpYWxfc3RhcnQpIHsKKyAgICAg
ICAgICAgICAgICAkcG90ZW50aWFsX3N0YXJ0ID0gJC47CisgICAgICAgICAgICAgICAgJHBvdGVu
dGlhbF9uYW1lID0gIiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAkY2xhc3Nfb3JfaW50
ZXJmYWNlX2p1c3Rfc2VlbiA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3YXJuICJtaXNt
YXRjaGVkIGJyYWNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9icmFjZXM7CisgICAgd2FybiAi
bWlzbWF0Y2hlZCBwYXJlbnRoZXNlcyBpbiAkZmlsZV9uYW1lXG4iIGlmICRpbl9wYXJlbnRoZXNl
czsKKworICAgIHJldHVybiBAcmFuZ2VzOworfQorCisKKworIyBSZWFkIGEgZmlsZSBhbmQgZ2V0
IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZQorIyBKYXZh
U2NyaXB0IGZ1bmN0aW9ucyBvciBtZXRob2RzLgorIworIyBBIGZ1bmN0aW9uIG5hbWUgaXMgdGhl
IHdvcmQgdGhhdCBpbW1lZGlhdGVseSBmb2xsb3dzIGBmdW5jdGlvbicgd2hlbgorIyBmb2xsb3dl
ZCBieSBhbiBvcGVuIGN1cmx5IGJyYWNlLiBJdCBjYW4gYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWws
CisjIG9yIGluc2lkZSBvdGhlciBmdW5jdGlvbnMuIEZvciBleGFtcGxlOgorIworIyAgICBmdW5j
dGlvbiBuYW1lKCkgeyAvLyAobmFtZSkKKyMgICAgICAgIGZ1bmN0aW9uIGlubmVyKCkgeyB9IC8v
IChuYW1lLmlubmVyKQorIyAgICB9CisjCisjIEFuIGFub255bW91cyBmdW5jdGlvbiBuYW1lIGlz
IHRoZSBpZGVudGlmaWVyIG9uIHRoZSBsZWZ0IGhhbmQgc2lkZSBvZgorIyBhbiBhc3NpZ25tZW50
IHdpdGggdGhlIGVxdWFscyBvcGVyYXRvciBvciBvYmplY3Qgbm90YXRpb24gdGhhdCBoYXMgYQor
IyB2YWx1ZSBzdGFydGluZyB3aXRoIGBmdW5jdGlvbicgZm9sbG93ZWQgYW4gb3BlbiBjdXJseSBi
cmFjZS4KKyMgRm9yIGV4YW1wbGU6CisjCisjICAgIG5hbWVzcGFjZSA9IHsKKyMgICAgICAgIG5h
bWU6IGZ1bmN0aW9uKCkge30gLy8gKG5hbWVzcGFjZS5uYW1lKQorIyAgICB9CisjICAgIG5hbWVz
cGFjZS5Gb28gPSBmdW5jdGlvbigpIHt9IC8vIChuYW1lc3BhY2UuRm9vKQorIworIyBBIGdldHRl
ciBvciBzZXR0ZXIgbmFtZSBpcyB0aGUgd29yZCB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvd3MgYGdl
dCcgb3IKKyMgYHNldCcgd2hlbiBmb2xsb3dlZCBieSBwYXJhbXMgYW5kIGFuIG9wZW4gY3VybHkg
YnJhY2UuIEZvciBleGFtcGxlOgorIworIyAgICBuYW1lc3BhY2UgPSB7CisjICAgICAgZ2V0IGZv
bygpIHt9IC8vIChuYW1lc3BhY2UuZ2V0IGZvbykKKyMgICAgfQorIworIyBBIG1ldGhvZCBuYW1l
IGlzIHRoZSB3b3JkIGltbWVkaWF0ZWx5IGJlZm9yZSBwYXJlbnRoZXNpcywgd2l0aCBhbiBvcGVu
CisjIGN1cmx5IGJyYWNlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBjbG9zaW5nIHBhcmVudGhlc2lz
LiBGb3IgYSBjbGFzcyBleHByZXNzaW9uCisjIHdlIHRha2UgdGhlIGFzc2lnbm1lbnQgaWRlbnRp
ZmllciBpbnN0ZWFkIG9mIHRoZSBjbGFzcyBuYW1lIGZvciBuYW1lc3BhY2luZy4KKyMKKyMgICAg
bmFtZXNwYWNlLkZvbyA9IGNsYXNzIERvZXNOb3RNYXR0ZXIgZXh0ZW5kcyBCYXIgeworIyAgICAg
ICAgY29uc3RydWN0b3IoKSB7fSAvLyAobmFtZXNwYWNlLkZvbykKKyMgICAgICAgIHN0YXRpYyBz
dGF0aWNNZXRob2QoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5zdGF0aWNNZXRob2QpCisjICAgICAg
ICBpbnN0YW5jZU1ldGhvZCgpIHt9IC8vIChuYW1lc3BhY2UuRm9vLnByb3RvdHlwZS5pbnN0YW5j
ZU1ldGhvZCkKKyMgICAgICAgIGdldCBnZXR0ZXIoKSB7fSAvLyAobmFtZXNwYWNlLkZvby5wcm90
b3R5cGUuZ2V0IGdldHRlcikKKyMgICAgfQorIyAgICBjbGFzcyBDbGFzc05hbWUgeworIyAgICAg
ICAgY29uc3RydWN0b3IoKSB7fSAvLyAoQ2xhc3NOYW1lKQorIyAgICAgICAgbWV0aG9kKCkge30g
Ly8gKENsYXNzTmFtZS5wcm90b3R5cGUubWV0aG9kKQorIyAgICB9CisjCisjIE1ldGhvZHMgbWF5
IGV4aXN0IGluIG9iamVjdCBsaXRlcmFscywgb3V0c2lkZSBvZiBjbGFzc2VzLgorIworIyAgIEZv
by5wcm90b3R5cGUgPSB7CisjICAgICAgIG1ldGhvZCgpIHt9LCAvLyAoRm9vLnByb3RvdHlwZS5t
ZXRob2QpCisjICAgICAgIG90aGVyTWV0aG9kKCkge30gLy8gKEZvby5wcm90b3R5cGUub3RoZXJN
ZXRob2QpCisjICAgfQorIworIyBDb21tZW50IGhhbmRsaW5nIGlzIHNpbXBsZS1taW5kZWQgYnV0
IHdpbGwgd29yayBmb3IgYWxsIGJ1dCBwYXRob2xvZ2ljYWwgY2FzZXMuCisjCisjIFJlc3VsdCBp
cyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwgZnVuY3Rpb25fbmFt
ZSBdLgorCitzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9qYXZhc2NyaXB0IHsKKyAg
ICBteSAoJGZpbGVIYW5kbGUsICRmaWxlTmFtZSkgPSBAXzsKKworICAgIG15IEBjdXJyZW50U2Nv
cGVzOworICAgIG15IEBjdXJyZW50SWRlbnRpZmllcnM7CisgICAgbXkgQGN1cnJlbnRQYXJzaW5n
TW9kZSA9ICgiZ2xvYmFsIik7CisgICAgbXkgQGN1cnJlbnRGdW5jdGlvbk5hbWVzOworICAgIG15
IEBjdXJyZW50RnVuY3Rpb25EZXB0aHM7CisgICAgbXkgQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGlu
ZXM7CisKKyAgICBteSBAcmFuZ2VzOworCisgICAgbXkgJGluQ29tbWVudCA9IDA7CisgICAgbXkg
JGluUXVvdGVkVGV4dCA9ICIiOworICAgIG15ICRpbkV4dGVuZHMgPSAwOworICAgIG15ICRpbk1l
dGhvZCA9IDA7CisgICAgbXkgJGluQW5vbnltb3VzRnVuY3Rpb25QYXJhbWV0ZXJzID0gMDsKKyAg
ICBteSAkcGFyZW50aGVzZXNEZXB0aCA9IDA7CisgICAgbXkgJGdsb2JhbFBhcmVudGhlc2VzRGVw
dGggPSAwOworICAgIG15ICRicmFjZXNEZXB0aCA9IDA7CisKKyAgICBteSAkY2xhc3NKdXN0U2Vl
biA9IDA7CisgICAgbXkgJHBhcmVudGhlc2lzSnVzdFNlZW4gPSAwOworICAgIG15ICRmdW5jdGlv
bkp1c3RTZWVuID0gMDsKKyAgICBteSAkZ2V0dGVySnVzdFNlZW4gPSAwOworICAgIG15ICRzZXR0
ZXJKdXN0U2VlbiA9IDA7CisgICAgbXkgJGFzeW5jSnVzdFNlZW4gPSAwOworICAgIG15ICRhc3Np
Z25tZW50SnVzdFNlZW4gPSAwOworICAgIG15ICRzdGF0aWNPckNvbnRydWN0b3JTZWVuID0gMDsK
KworICAgIG15ICRjdXJyZW50VG9rZW4gPSAiIjsKKyAgICBteSAkbGFzdFRva2VuID0gIiI7Cisg
ICAgbXkgJHBvc3NpYmxlTWV0aG9kTmFtZSA9ICIiOworICAgIG15ICR3b3JkID0gIiI7CisKKyAg
ICB3aGlsZSAoPCRmaWxlSGFuZGxlPikgeworICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgbXVs
dGktbGluZSBjb21tZW50LgorICAgICAgICBpZiAoJGluQ29tbWVudCkgeworICAgICAgICAgICAg
bmV4dCB1bmxlc3Mgcy0uKlwqLy0tOworICAgICAgICAgICAgJGluQ29tbWVudCA9IDA7CisgICAg
ICAgIH0KKworICAgICAgICAjIEhhbmRsZSBjb250aW51ZWQgcXVvdGVkIHRleHQuCisgICAgICAg
IGlmICgkaW5RdW90ZWRUZXh0IG5lICIiKSB7CisgICAgICAgICAgICBuZXh0IGlmIC9cXCQvOwor
ICAgICAgICAgICAgcy0oW15cXF18XFwuKSo/JGluUXVvdGVkVGV4dC0tOworICAgICAgICAgICAg
JGluUXVvdGVkVGV4dCA9ICIiOworICAgICAgICB9CisKKyAgICAgICAgIyBIYW5kbGUgY29tbWVu
dHMgYW5kIHF1b3RlZCB0ZXh0LgorICAgICAgICB3aGlsZSAobS0oL1wqfC8vfFwnfFwiKS0pIHsg
IyBcJyBhbmQgXCIga2VlcCBlbWFjcyBwZXJsIG1vZGUgaGFwcHkKKyAgICAgICAgICAgIG15ICRt
YXRjaCA9ICQxOworICAgICAgICAgICAgaWYgKCRtYXRjaCBlcSAnLyonKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFzLS9cKi4qP1wqLy0tKSB7CisgICAgICAgICAgICAgICAgICAgIHMtL1wqLiot
LTsKKyAgICAgICAgICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNpZiAoJG1hdGNoIGVxICcvLycpIHsKKyAgICAgICAgICAgICAg
ICBzLS8vLiotLTsKKyAgICAgICAgICAgIH0gZWxzZSB7ICMgJyBvciAiCisgICAgICAgICAgICAg
ICAgaWYgKCFzLSRtYXRjaChbXlxcXXxcXC4pKj8kbWF0Y2gtc3RyaW5nX2FwcGVhcmVkX2hlcmUt
KSB7CisgICAgICAgICAgICAgICAgICAgICRpblF1b3RlZFRleHQgPSAkbWF0Y2ggaWYgL1xcJC87
CisgICAgICAgICAgICAgICAgICAgIHdhcm4gIm1pc21hdGNoZWQgcXVvdGVzIGF0IGxpbmUgJC4g
aW4gJGZpbGVOYW1lXG4iIGlmICRpblF1b3RlZFRleHQgZXEgIiI7CisgICAgICAgICAgICAgICAg
ICAgIHMtJG1hdGNoLiotLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICAjIEZpbmQgZnVuY3Rpb24gbmFtZXMuCisgICAgICAgIHdoaWxlICht
LShcdyt8Wygpe309OjssLl0pLWcpIHsKKyAgICAgICAgICAgICMgU2tpcCBldmVyeXRoaW5nIHVu
dGlsICJ7IiBhZnRlciBleHRlbmRzLgorICAgICAgICAgICAgaWYgKCRpbkV4dGVuZHMpIHsKKyAg
ICAgICAgICAgICAgICBuZXh0IGlmICQxIG5lICd7JzsKKyAgICAgICAgICAgICAgICAkaW5FeHRl
bmRzID0gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgJGxhc3RUb2tlbiA9ICRjdXJy
ZW50VG9rZW47CisgICAgICAgICAgICAkY3VycmVudFRva2VuID0gJDE7CisKKyAgICAgICAgICAg
ICMgT3BlbiBwYXJlbnRoZXNpcy4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnKCcpIHsKKyAgICAg
ICAgICAgICAgICAkcGFyZW50aGVzZXNEZXB0aCsrOworICAgICAgICAgICAgICAgICRnbG9iYWxQ
YXJlbnRoZXNlc0RlcHRoKysgaWYgJGN1cnJlbnRQYXJzaW5nTW9kZVskI2N1cnJlbnRQYXJzaW5n
TW9kZV0gZXEgImdsb2JhbCI7CisgICAgICAgICAgICAgICAgJHBvc3NpYmxlTWV0aG9kTmFtZSA9
IGpvaW4oJy4nLCBAY3VycmVudElkZW50aWZpZXJzKTsKKyAgICAgICAgICAgICAgICAkaW5Bbm9u
eW1vdXNGdW5jdGlvblBhcmFtZXRlcnMgPSAxIGlmICRmdW5jdGlvbkp1c3RTZWVuOworICAgICAg
ICAgICAgICAgICRmdW5jdGlvbkp1c3RTZWVuID0gMDsKKyAgICAgICAgICAgICAgICBuZXh0Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIENsb3NlIHBhcmVudGhlc2lzLgorICAgICAg
ICAgICAgaWYgKCQxIGVxICcpJykgeworICAgICAgICAgICAgICAgICRwYXJlbnRoZXNlc0RlcHRo
LS07CisgICAgICAgICAgICAgICAgJGdsb2JhbFBhcmVudGhlc2VzRGVwdGgtLSBpZiAkY3VycmVu
dFBhcnNpbmdNb2RlWyQjY3VycmVudFBhcnNpbmdNb2RlXSBlcSAiZ2xvYmFsIjsKKyAgICAgICAg
ICAgICAgICBAY3VycmVudElkZW50aWZpZXJzID0gKCkgaWYgJGluQW5vbnltb3VzRnVuY3Rpb25Q
YXJhbWV0ZXJzOworICAgICAgICAgICAgICAgICRpbkFub255bW91c0Z1bmN0aW9uUGFyYW1ldGVy
cyA9IDA7CisgICAgICAgICAgICAgICAgJHBhcmVudGhlc2lzSnVzdFNlZW4gPSAxOworICAgICAg
ICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgT3BlbiBicmFj
ZS4KKyAgICAgICAgICAgIGlmICgkMSBlcSAneycpIHsKKyAgICAgICAgICAgICAgICBteSAkbWV0
aG9kTmFtZSA9ICIiOworICAgICAgICAgICAgICAgIG15ICRtb2RlID0gJGN1cnJlbnRQYXJzaW5n
TW9kZVskI2N1cnJlbnRQYXJzaW5nTW9kZV07CisKKyAgICAgICAgICAgICAgICAjIE1ldGhvZC4K
KyAgICAgICAgICAgICAgICBpZiAoKCRtb2RlIGVxICdjbGFzcycgb3IgJG1vZGUgZXEgJ2dsb2Jh
bCcpIGFuZCAkcGFyZW50aGVzaXNKdXN0U2VlbiBhbmQgKCRzdGF0aWNPckNvbnRydWN0b3JTZWVu
IG9yICRwb3NzaWJsZU1ldGhvZE5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkbW9k
ZSBlcSAnY2xhc3MnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kTmFtZSA9IGpv
aW4oJy4nLCAkc3RhdGljT3JDb250cnVjdG9yU2VlbiA/ICIiIDogInByb3RvdHlwZSIsICRwb3Nz
aWJsZU1ldGhvZE5hbWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICAgICAgJG1ldGhvZE5hbWUgPSAkcG9zc2libGVNZXRob2ROYW1lOworICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgJG1ldGhvZE5hbWUgPX4gcy9c
LnsyLH0vXC4vZzsgIyBSZW1vdmVzIGNvbnNlY3V0aXZlIHBlcmlvZHMuCisgICAgICAgICAgICAg
ICAgICAgICRtZXRob2ROYW1lID1+IHMvXC4kLy87ICMgUmVtb3ZlIHRyYWlsaW5nIHBlcmlvZC4K
KworICAgICAgICAgICAgICAgICAgICBteSAkY3VycmVudE1ldGhvZCA9IGpvaW4oJy4nLCBAY3Vy
cmVudFNjb3BlcywgJG1ldGhvZE5hbWUpOworICAgICAgICAgICAgICAgICAgICAkY3VycmVudE1l
dGhvZCA9fiBzL1wuezIsfS9cLi9nOyAjIFJlbW92ZXMgY29uc2VjdXRpdmUgcGVyaW9kcy4KKyAg
ICAgICAgICAgICAgICAgICAgJGN1cnJlbnRNZXRob2QgPX4gcy9cLiQvLzsgIyBSZW1vdmUgdHJh
aWxpbmcgcGVyaW9kLgorCisgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzaW5n
TW9kZSwgIm1ldGhvZCIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rp
b25OYW1lcywgJGN1cnJlbnRNZXRob2QpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJy
ZW50RnVuY3Rpb25EZXB0aHMsICRicmFjZXNEZXB0aCk7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAkYnJhY2VzRGVwdGgrKzsKKyAgICAgICAgICAgICAgICAkZnVuY3Rp
b25KdXN0U2VlbiA9IDA7CisKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50U2NvcGVzLCBq
b2luKCcuJywgJG1ldGhvZE5hbWUgPyAkbWV0aG9kTmFtZSA6IEBjdXJyZW50SWRlbnRpZmllcnMp
KTsKKyAgICAgICAgICAgICAgICBAY3VycmVudElkZW50aWZpZXJzID0gKCk7CisKKyAgICAgICAg
ICAgICAgICAkc3RhdGljT3JDb250cnVjdG9yU2VlbiA9IDA7CisgICAgICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIyBDbG9zZSBicmFjZS4KKyAgICAgICAg
ICAgIGlmICgkMSBlcSAnfScpIHsKKyAgICAgICAgICAgICAgICAkYnJhY2VzRGVwdGgtLTsKKyAg
ICAgICAgICAgICAgICAkZnVuY3Rpb25KdXN0U2VlbiA9IDA7CisKKyAgICAgICAgICAgICAgICBp
ZiAoQGN1cnJlbnRGdW5jdGlvbkRlcHRocyBhbmQgJGJyYWNlc0RlcHRoID09ICRjdXJyZW50RnVu
Y3Rpb25EZXB0aHNbJCNjdXJyZW50RnVuY3Rpb25EZXB0aHNdKSB7CisgICAgICAgICAgICAgICAg
ICAgIHBvcChAY3VycmVudEZ1bmN0aW9uRGVwdGhzKTsKKyAgICAgICAgICAgICAgICAgICAgcG9w
KEBjdXJyZW50UGFyc2luZ01vZGUpOworCisgICAgICAgICAgICAgICAgICAgIG15ICRjdXJyZW50
TmFtZSA9IHBvcChAY3VycmVudEZ1bmN0aW9uTmFtZXMpOworICAgICAgICAgICAgICAgICAgICBt
eSAkc3RhcnQgPSBwb3AoQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMpOworCisgICAgICAgICAg
ICAgICAgICAgICRjdXJyZW50TmFtZSA9fiBzL15cLi8vZzsgIyBSZW1vdmVzIGxlYWRpbmcgcGVy
aW9kcy4KKworICAgICAgICAgICAgICAgICAgICBwdXNoKEByYW5nZXMsIFskc3RhcnQsICQuLCAk
Y3VycmVudE5hbWVdKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwb3Ao
QGN1cnJlbnRTY29wZXMpOworICAgICAgICAgICAgICAgIEBjdXJyZW50SWRlbnRpZmllcnMgPSAo
KTsKKworICAgICAgICAgICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICMgRG90LgorICAgICAgICAgICAgaWYgKCQxIGVxICcuJykgeworICAgICAgICAgICAgICAgIG5l
eHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgU2VtaWNvbG9uIG9yIGNvbW1hLgor
ICAgICAgICAgICAgaWYgKCQxIGVxICc7JyBvciAkMSBlcSAnLCcpIHsKKyAgICAgICAgICAgICAg
ICBAY3VycmVudElkZW50aWZpZXJzID0gKCk7CisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgIyBDbGFzcy4KKyAgICAgICAgICAgIGlmICgkMSBlcSAn
Y2xhc3MnKSB7CisgICAgICAgICAgICAgICAgJGNsYXNzSnVzdFNlZW4gPSAxOworICAgICAgICAg
ICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgRXh0ZW5kcy4KKyAg
ICAgICAgICAgIGlmICgkMSBlcSAnZXh0ZW5kcycpIHsKKyAgICAgICAgICAgICAgICAkaW5FeHRl
bmRzID0gMTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAjIEZ1bmN0aW9uLgorICAgICAgICAgICAgaWYgKCQxIGVxICdmdW5jdGlvbicpIHsKKyAg
ICAgICAgICAgICAgICAkZnVuY3Rpb25KdXN0U2VlbiA9IDE7CisKKyAgICAgICAgICAgICAgICBp
ZiAoJGFzc2lnbm1lbnRKdXN0U2VlbikgeworICAgICAgICAgICAgICAgICAgICBteSAkY3VycmVu
dEZ1bmN0aW9uID0gam9pbignLicsIChAY3VycmVudFNjb3BlcywgQGN1cnJlbnRJZGVudGlmaWVy
cykpOworICAgICAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID1+IHMvXC57Mix9L1wu
L2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgorCisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGN1cnJlbnRQYXJzaW5nTW9kZSwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbk5hbWVzLCAkY3VycmVudEZ1bmN0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVwdGgp
OworICAgICAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25TdGFydExpbmVzLCAk
Lik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbmV4dDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgIyBHZXR0ZXIgcHJlZml4LgorICAgICAgICAgICAgaWYgKCQx
IGVxICdnZXQnKSB7CisgICAgICAgICAgICAgICAgbmV4dCBpZiAkbGFzdFRva2VuIGVxICcuJzsg
IyBBdm9pZCBtYXAuZ2V0KC4uLikuCisgICAgICAgICAgICAgICAgJGdldHRlckp1c3RTZWVuID0g
MTsKKyAgICAgICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAj
IFNldHRlciBwcmVmaXguCisgICAgICAgICAgICBpZiAoJDEgZXEgJ3NldCcpIHsKKyAgICAgICAg
ICAgICAgICBuZXh0IGlmICRsYXN0VG9rZW4gZXEgJy4nOyAjIEF2b2lkIG1hcC5zZXQoLi4uKS4K
KyAgICAgICAgICAgICAgICAkc2V0dGVySnVzdFNlZW4gPSAxOworICAgICAgICAgICAgICAgIG5l
eHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQXN5bmMgcHJlZml4LgorICAgICAg
ICAgICAgaWYgKCQxIGVxICdhc3luYycpIHsKKyAgICAgICAgICAgICAgICBuZXh0IGlmICRsYXN0
VG9rZW4gZXEgJy4nOworICAgICAgICAgICAgICAgICRhc3luY0p1c3RTZWVuID0gMTsKKyAgICAg
ICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjIFN0YXRpYy4K
KyAgICAgICAgICAgIGlmICgkMSBlcSAnc3RhdGljJyBvciAkMSBlcSAnY29uc3RydWN0b3InKSB7
CisgICAgICAgICAgICAgICAgJHN0YXRpY09yQ29udHJ1Y3RvclNlZW4gPSAxOworICAgICAgICAg
ICAgICAgIG5leHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgQXNzaWdubWVudCBv
cGVyYXRvci4KKyAgICAgICAgICAgIGlmICgkMSBlcSAnPScgb3IgJDEgZXEgJzonKSB7CisgICAg
ICAgICAgICAgICAgJGFzc2lnbm1lbnRKdXN0U2VlbiA9IDE7CisgICAgICAgICAgICAgICAgbmV4
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbmV4dCBpZiAkcGFyZW50aGVzZXNEZXB0
aCA+ICRnbG9iYWxQYXJlbnRoZXNlc0RlcHRoOworCisgICAgICAgICAgICAjIFdvcmQuCisgICAg
ICAgICAgICAkd29yZCA9ICQxOworCisgICAgICAgICAgICBpZiAoJGNsYXNzSnVzdFNlZW4pIHsK
KyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50SWRlbnRpZmllcnMsICR3b3JkKSBpZiAhJGFz
c2lnbm1lbnRKdXN0U2VlbjsKKworICAgICAgICAgICAgICAgIG15ICRjdXJyZW50Q2xhc3MgPSBq
b2luKCcuJywgKEBjdXJyZW50U2NvcGVzLCBAY3VycmVudElkZW50aWZpZXJzKSk7CisgICAgICAg
ICAgICAgICAgJGN1cnJlbnRDbGFzcyA9fiBzL1wuezIsfS9cLi9nOyAjIFJlbW92ZXMgY29uc2Vj
dXRpdmUgcGVyaW9kcy4KKworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzaW5nTW9k
ZSwgImNsYXNzIik7CisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uTmFtZXMs
ICRjdXJyZW50Q2xhc3MpOworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlvbkRl
cHRocywgJGJyYWNlc0RlcHRoKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rp
b25TdGFydExpbmVzLCAkLik7CisgICAgICAgICAgICB9IGVsc2lmICgkZ2V0dGVySnVzdFNlZW4g
b3IgJHNldHRlckp1c3RTZWVuIG9yICRhc3luY0p1c3RTZWVuKSB7CisgICAgICAgICAgICAgICAg
JHdvcmQgPSAiZ2V0ICR3b3JkIiBpZiAkZ2V0dGVySnVzdFNlZW47CisgICAgICAgICAgICAgICAg
JHdvcmQgPSAic2V0ICR3b3JkIiBpZiAkc2V0dGVySnVzdFNlZW47CisgICAgICAgICAgICAgICAg
JHdvcmQgPSAiYXN5bmMgJHdvcmQiIGlmICRhc3luY0p1c3RTZWVuOworCisgICAgICAgICAgICAg
ICAgcHVzaChAY3VycmVudElkZW50aWZpZXJzLCAkd29yZCk7CisKKyAgICAgICAgICAgICAgICBt
eSAkbW9kZSA9ICRjdXJyZW50UGFyc2luZ01vZGVbJCNjdXJyZW50UGFyc2luZ01vZGVdOworICAg
ICAgICAgICAgICAgIG15ICRjdXJyZW50RnVuY3Rpb24gPSBqb2luKCcuJywgKEBjdXJyZW50U2Nv
cGVzLCAoJG1vZGUgZXEgJ2NsYXNzJyBhbmQgISRzdGF0aWNPckNvbnRydWN0b3JTZWVuKSA/ICJw
cm90b3R5cGUiIDogIiIsIEBjdXJyZW50SWRlbnRpZmllcnMpKTsKKyAgICAgICAgICAgICAgICAk
Y3VycmVudEZ1bmN0aW9uID1+IHMvXC57Mix9L1wuL2c7ICMgUmVtb3ZlcyBjb25zZWN1dGl2ZSBw
ZXJpb2RzLgorCisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudFBhcnNpbmdNb2RlLCAiZnVu
Y3Rpb24iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50RnVuY3Rpb25OYW1lcywgJGN1
cnJlbnRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVudEZ1bmN0aW9uRGVw
dGhzLCAkYnJhY2VzRGVwdGgpOworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRGdW5jdGlv
blN0YXJ0TGluZXMsICQuKTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRmdW5jdGlvbkp1c3RTZWVu
IGFuZCAhJGFzc2lnbm1lbnRKdXN0U2VlbikgeworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJl
bnRJZGVudGlmaWVycywgJHdvcmQpOworCisgICAgICAgICAgICAgICAgbXkgJGN1cnJlbnRGdW5j
dGlvbiA9IGpvaW4oJy4nLCAoQGN1cnJlbnRTY29wZXMsIEBjdXJyZW50SWRlbnRpZmllcnMpKTsK
KyAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID1+IHMvXC57Mix9L1wuL2c7ICMgUmVt
b3ZlcyBjb25zZWN1dGl2ZSBwZXJpb2RzLgorCisgICAgICAgICAgICAgICAgcHVzaChAY3VycmVu
dFBhcnNpbmdNb2RlLCAiZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBjdXJyZW50
RnVuY3Rpb25OYW1lcywgJGN1cnJlbnRGdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcHVzaChA
Y3VycmVudEZ1bmN0aW9uRGVwdGhzLCAkYnJhY2VzRGVwdGgpOworICAgICAgICAgICAgICAgIHB1
c2goQGN1cnJlbnRGdW5jdGlvblN0YXJ0TGluZXMsICQuKTsKKyAgICAgICAgICAgIH0gZWxzaWYg
KCR3b3JkIG5lICdpZicgYW5kICR3b3JkIG5lICdmb3InIGFuZCAkd29yZCBuZSAnZG8nIGFuZCAk
d29yZCBuZSAnd2hpbGUnIGFuZCAkd29yZCBuZSAnd2hpY2gnIGFuZCAkd29yZCBuZSAndmFyJykg
eworICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRJZGVudGlmaWVycywgJHdvcmQpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAkY2xhc3NKdXN0U2VlbiA9IDA7CisgICAgICAgICAg
ICAkcGFyZW50aGVzaXNKdXN0U2VlbiA9IDA7CisgICAgICAgICAgICAkZnVuY3Rpb25KdXN0U2Vl
biA9IDA7CisgICAgICAgICAgICAkZ2V0dGVySnVzdFNlZW4gPSAwOworICAgICAgICAgICAgJHNl
dHRlckp1c3RTZWVuID0gMDsKKyAgICAgICAgICAgICRhc3luY0p1c3RTZWVuID0gMDsKKyAgICAg
ICAgICAgICRhc3NpZ25tZW50SnVzdFNlZW4gPSAwOworICAgICAgICB9CisgICAgfQorCisgICAg
d2FybiAibWlzbWF0Y2hlZCBicmFjZXMgaW4gJGZpbGVOYW1lXG4iIGlmICRicmFjZXNEZXB0aDsK
KyAgICB3YXJuICJtaXNtYXRjaGVkIHBhcmVudGhlc2VzIGluICRmaWxlTmFtZVxuIiBpZiAkcGFy
ZW50aGVzZXNEZXB0aDsKKworICAgIHJldHVybiBAcmFuZ2VzOworfQorCisjIFJlYWQgYSBmaWxl
IGFuZCBnZXQgYWxsIHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQgbG9vayBsaWtl
IFBlcmwgZnVuY3Rpb25zLiBGdW5jdGlvbnMKKyMgc3RhcnQgb24gYSBsaW5lIHRoYXQgc3RhcnRz
IHdpdGggInN1YiAiLCBhbmQgZW5kIG9uIHRoZSBmaXJzdCBsaW5lIHN0YXJ0aW5nIHdpdGggIn0i
IHRoZXJlYWZ0ZXIuCisjCisjIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9s
aW5lLCBlbmRfbGluZSwgZnVuY3Rpb24gXS4KKworc3ViIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdl
c19mb3JfcGVybCB7CisgICAgbXkgKCRmaWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87CisKKyAg
ICBteSBAcmFuZ2VzOworCisgICAgbXkgJGN1cnJlbnRGdW5jdGlvbiA9ICIiOworICAgIG15ICRz
dGFydCA9IDA7CisgICAgbXkgJGhlcmVEb2N1bWVudElkZW50aWZpZXIgPSAiIjsKKworICAgIHdo
aWxlICg8JGZpbGVIYW5kbGU+KSB7CisgICAgICAgIGNob21wOworICAgICAgICBpZiAoISRoZXJl
RG9jdW1lbnRJZGVudGlmaWVyKSB7CisgICAgICAgICAgICBpZiAoL15zdWJccysoW1x3X11bXHdc
ZF9dKikvKSB7CisgICAgICAgICAgICAgICAgIyBTa2lwIG92ZXIgZm9yd2FyZCBkZWNsYXJhdGlv
bnMsIHdoaWNoIGRvbid0IGNvbnRhaW4gYSBicmFjZSBhbmQgZW5kIHdpdGggYSBzZW1pY29sb24u
CisgICAgICAgICAgICAgICAgbmV4dCBpZiAvO1xzKiQvOworCisgICAgICAgICAgICAgICAgaWYg
KCRjdXJyZW50RnVuY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgd2FybiAibmVzdGVkIGZ1
bmN0aW9ucyBmb3VuZCBhdCB0b3AtbGV2ZWwgYXQgJGZpbGVOYW1lOiQuXG4iOworICAgICAgICAg
ICAgICAgICAgICBuZXh0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkY3Vy
cmVudEZ1bmN0aW9uID0gJDE7CisgICAgICAgICAgICAgICAgJHN0YXJ0ID0gJC47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoLzw8XHMqW1wiXCddPyhbXHdfXVtcd19cZF0qKS8pIHsK
KyAgICAgICAgICAgICAgICAjIEVudGVyIGhlcmUtZG9jdW1lbnQuCisgICAgICAgICAgICAgICAg
JGhlcmVEb2N1bWVudElkZW50aWZpZXIgPSAkMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChpbmRleCgkXywgIn0iKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mg
JHN0YXJ0OworICAgICAgICAgICAgICAgIHB1c2goQHJhbmdlcywgWyRzdGFydCwgJC4sICRjdXJy
ZW50RnVuY3Rpb25dKTsKKyAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiI7Cisg
ICAgICAgICAgICAgICAgJHN0YXJ0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNp
ZiAoJF8gZXEgJGhlcmVEb2N1bWVudElkZW50aWZpZXIpIHsKKyAgICAgICAgICAgICMgRXNjYXBl
IGZyb20gaGVyZS1kb2N1bWVudC4KKyAgICAgICAgICAgICRoZXJlRG9jdW1lbnRJZGVudGlmaWVy
ID0gIiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQHJhbmdlczsKK30KKworIyBS
ZWFkIGEgZmlsZSBhbmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0
IGxvb2sgbGlrZSBQeXRob24gY2xhc3NlcywgbWV0aG9kcywgb3IgZnVuY3Rpb25zLgorIworIyBG
SVhNRTogTWF5YmUgd2Ugc2hvdWxkIHVzZSBQeXRob24ncyBhc3QgbW9kdWxlIHRvIGRvIHRoZSBw
YXJzaW5nIGZvciB1cz8KKyMKKyMgUmVzdWx0IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0
X2xpbmUsIGVuZF9saW5lLCBmdW5jdGlvbiBdLgorCitzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFu
Z2VzX2Zvcl9weXRob24geworICAgIG15ICgkZmlsZUhhbmRsZSwgJGZpbGVOYW1lKSA9IEBfOwor
CisgICAgbXkgQHJhbmdlczsKKworICAgIG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsU2VudGlu
ZWxSZWdFeCA9IHFyIyg/OiIiInwnJycpIzsKKyAgICBteSAkbXVsdGlsaW5lU3RyaW5nTGl0ZXJh
bFN0YXJ0UmVnRXggPSBxciNccyokbXVsdGlsaW5lU3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXgj
OworICAgIG15ICRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXggPSBxciMkbXVsdGlsaW5l
U3RyaW5nTGl0ZXJhbFNlbnRpbmVsUmVnRXhccyokIzsKKworICAgIG15IEBzY29wZVN0YWNrID0g
KHsgbGluZSA9PiAwLCBpbmRlbnQgPT4gLTEsIG5hbWUgPT4gdW5kZWYgfSk7CisgICAgbXkgJGxh
c3RMaW5lID0gMDsKKyAgICBteSAkaW5Db21tZW50ID0gMDsKKyAgICB1bnRpbCAoJGxhc3RMaW5l
KSB7CisgICAgICAgICRfID0gPCRmaWxlSGFuZGxlPjsKKyAgICAgICAgdW5sZXNzICgkXykgewor
ICAgICAgICAgICAgIyBUbyBwb3Agb3V0IGFsbCBwb3BwZWQgc2NvcGVzLCBydW4gdGhlIGxvb3Ag
b25jZSBtb3JlIGFmdGVyCisgICAgICAgICAgICAjIHdlIGVuY291bnRlcmVkIHRoZSBlbmQgb2Yg
dGhlIGZpbGUuCisgICAgICAgICAgICAkXyA9ICJwYXNzXG4iOworICAgICAgICAgICAgJC4rKzsK
KyAgICAgICAgICAgICRsYXN0TGluZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgY2hvbXA7Cisg
ICAgICAgIG5leHQgdW5sZXNzIC9eKFxzKikoW14jXS4qKSQvOyAjIFNraXAgbm9uLWluZGVudGVk
IGxpbmVzIHRoYXQgYmVnaW4gd2l0aCBhIGNvbW1lbnQuCisKKyAgICAgICAgbXkgJGluZGVudCA9
IGxlbmd0aCAkMTsKKyAgICAgICAgbXkgJHJlc3QgPSAkMjsKKyAgICAgICAgbXkgJHNjb3BlID0g
JHNjb3BlU3RhY2tbLTFdOworCisgICAgICAgIGlmICgkaW5kZW50IDw9ICRzY29wZS0+e2luZGVu
dH0pIHsKKyAgICAgICAgICAgICMgRmluZCBhbGwgdGhlIHNjb3BlcyB0aGF0IHdlIGhhdmUganVz
dCBleGl0ZWQuCisgICAgICAgICAgICBteSAkaSA9IDA7CisgICAgICAgICAgICBmb3IgKDsgJGkg
PCBAc2NvcGVTdGFjazsgKyskaSkgeworICAgICAgICAgICAgICAgIGxhc3QgaWYgJGluZGVudCA8
PSAkc2NvcGVTdGFja1skaV0tPntpbmRlbnR9OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
bXkgQHBvcHBlZFNjb3BlcyA9IHNwbGljZSBAc2NvcGVTdGFjaywgJGk7CisKKyAgICAgICAgICAg
ICMgRm9yIGVhY2ggc2NvcGUgdGhhdCB3YXMganVzdCBleGl0ZWQsIGFkZCBhIHJhbmdlIHRoYXQg
Z29lcyBmcm9tIHRoZSBzdGFydCBvZiB0aGF0CisgICAgICAgICAgICAjIHNjb3BlIHRvIHRoZSBz
dGFydCBvZiB0aGUgbmV4dCBuZXN0ZWQgc2NvcGUsIG9yIHRvIHRoZSBsaW5lIGp1c3QgYmVmb3Jl
IHRoaXMgb25lIGZvcgorICAgICAgICAgICAgIyB0aGUgaW5uZXJtb3N0IHNjb3BlLgorICAgICAg
ICAgICAgZm9yICgkaSA9IDA7ICRpIDwgQHBvcHBlZFNjb3BlczsgKyskaSkgeworICAgICAgICAg
ICAgICAgIG15ICRsaW5lQWZ0ZXJFbmQgPSAkaSArIDEgPT0gQHBvcHBlZFNjb3BlcyA/ICQuIDog
JHBvcHBlZFNjb3Blc1skaSArIDFdLT57bGluZX07CisgICAgICAgICAgICAgICAgcHVzaCBAcmFu
Z2VzLCBbJHBvcHBlZFNjb3Blc1skaV0tPntsaW5lfSwgJGxpbmVBZnRlckVuZCAtIDEsICRwb3Bw
ZWRTY29wZXNbJGldLT57bmFtZX1dOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQHNjb3Bl
U3RhY2sgb3Igd2FybiAiUG9wcGVkIG9mZiBsYXN0IHNjb3BlIGF0ICRmaWxlTmFtZTokLlxuIjsK
KworICAgICAgICAgICAgIyBTZXQgdGhlIG5vdy1jdXJyZW50IHNjb3BlIHRvIHN0YXJ0IGF0IHRo
ZSBjdXJyZW50IGxpbmUuIEFueSBsaW5lcyB3aXRoaW4gdGhpcyBzY29wZQorICAgICAgICAgICAg
IyBiZWZvcmUgdGhpcyBwb2ludCBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gYWRkZWQgdG8gQHJh
bmdlcy4KKyAgICAgICAgICAgICRzY29wZSA9ICRzY29wZVN0YWNrWy0xXTsKKyAgICAgICAgICAg
ICRzY29wZS0+e2xpbmV9ID0gJC47CisgICAgICAgIH0KKworICAgICAgICAjIFNraXAgbXVsdGkt
bGluZSBzdHJpbmcgbGl0ZXJhbHMgYW5kIGRvY3N0cmluZ3MuCisgICAgICAgIG5leHQgaWYgLyRt
dWx0aWxpbmVTdHJpbmdMaXRlcmFsU3RhcnRSZWdFeC4qJG11bHRpbGluZVN0cmluZ0xpdGVyYWxF
bmRSZWdFeC87CisgICAgICAgIGlmICghJGluQ29tbWVudCAmJiAvJG11bHRpbGluZVN0cmluZ0xp
dGVyYWxTdGFydFJlZ0V4LykgeworICAgICAgICAgICAgJGluQ29tbWVudCA9IDE7CisgICAgICAg
IH0gZWxzaWYgKCRpbkNvbW1lbnQgJiYgLyRtdWx0aWxpbmVTdHJpbmdMaXRlcmFsRW5kUmVnRXgv
KSB7CisgICAgICAgICAgICAkaW5Db21tZW50ID0gMDsKKyAgICAgICAgfQorICAgICAgICBuZXh0
IGlmICRpbkNvbW1lbnQ7CisKKyAgICAgICAgbmV4dCBpZiAvXlxzKlsjJyJdLzsgIyBTa2lwIGlu
ZGVudGVkIGFuZCBub24taW5kZW50ZWQgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGEgY29tbWVudCBv
ciBzdHJpbmcgbGl0ZXJhbCAoaW5jbHVkZXMgZG9jc3RyaW5ncykuCisKKyAgICAgICAgbmV4dCB1
bmxlc3MgJHJlc3QgPX4gLyg/OmNsYXNzfGRlZilccysoXHcrKS87CisgICAgICAgIG15ICRuYW1l
ID0gJDE7CisgICAgICAgIG15ICRmdWxsTmFtZSA9ICRzY29wZS0+e25hbWV9ID8gam9pbignLics
ICRzY29wZS0+e25hbWV9LCAkbmFtZSkgOiAkbmFtZTsKKyAgICAgICAgcHVzaCBAc2NvcGVTdGFj
aywgeyBsaW5lID0+ICQuLCBpbmRlbnQgPT4gJGluZGVudCwgbmFtZSA9PiAkZnVsbE5hbWUgfTsK
KworICAgICAgICBpZiAoJHNjb3BlLT57aW5kZW50fSA+PSAwKSB7CisgICAgICAgICAgICBwdXNo
IEByYW5nZXMsIFskc2NvcGUtPntsaW5lfSwgJC4gLSAxLCAkc2NvcGUtPntuYW1lfV07CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQHJhbmdlczsKK30KKworIyBSZWFkIGEgZmlsZSBh
bmQgZ2V0IGFsbCB0aGUgbGluZSByYW5nZXMgb2YgdGhlIHRoaW5ncyB0aGF0IGxvb2sgbGlrZSBD
U1Mgc2VsZWN0b3JzLiAgQSBzZWxlY3RvciBpcworIyBhbnl0aGluZyBiZWZvcmUgYW4gb3Blbmlu
ZyBicmFjZSBvbiBhIGxpbmUuIEEgc2VsZWN0b3Igc3RhcnRzIGF0IHRoZSBsaW5lIGNvbnRhaW5p
bmcgdGhlIG9wZW5pbmcKKyMgYnJhY2UgYW5kIGVuZHMgYXQgdGhlIGNsb3NpbmcgYnJhY2UuCisj
CisjIFJlc3VsdCBpcyBhIGxpc3Qgb2YgdHJpcGxlczogWyBzdGFydF9saW5lLCBlbmRfbGluZSwg
c2VsZWN0b3IgXS4KKworc3ViIGdldF9zZWxlY3Rvcl9saW5lX3Jhbmdlc19mb3JfY3NzIHsKKyAg
ICBteSAoJGZpbGVIYW5kbGUsICRmaWxlTmFtZSkgPSBAXzsKKworICAgIG15IEByYW5nZXM7CisK
KyAgICBteSAkaW5Db21tZW50ID0gMDsKKyAgICBteSAkaW5CcmFjZSA9IDA7CisgICAgbXkgQHN0
YWNrOworICAgIG15ICRjb250ZXh0OworICAgIG15IEBjdXJyZW50UGFyc2VNb2RlID0gKCJnbG9i
YWwiKTsKKyAgICBteSBAZ3JvdXBpbmdTdGFjazsKKyAgICBteSAkc2VsZWN0b3JCcmFjZXMgPSAw
OworCisgICAgd2hpbGUgKDwkZmlsZUhhbmRsZT4pIHsKKyAgICAgICAgZm9yZWFjaCBteSAkdG9r
ZW4gKHNwbGl0IG0tKFx7fFx9fC9cKnxcKi8pLSwgJF8pIHsKKyAgICAgICAgICAgIGlmICgkdG9r
ZW4gZXEgInsiKSB7CisgICAgICAgICAgICAgICAgaWYgKCEkaW5Db21tZW50KSB7CisgICAgICAg
ICAgICAgICAgICAgICRpbkJyYWNlICs9IDE7CisgICAgICAgICAgICAgICAgICAgICRzZWxlY3Rv
ckJyYWNlcyArPSAxIGlmICRjdXJyZW50UGFyc2VNb2RlWyQjY3VycmVudFBhcnNlTW9kZV0gZXEg
InNlbGVjdG9yIjsKKyAgICAgICAgICAgICAgICAgICAgd2FybiAibWlzbWF0Y2hlZCBvcGVuaW5n
IGJyYWNlIGZvdW5kIGluICRmaWxlTmFtZTokLlxuIiBpZiAkc2VsZWN0b3JCcmFjZXMgPiAxOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzaWYgKCR0b2tlbiBlcSAifSIpIHsK
KyAgICAgICAgICAgICAgICBpZiAoISRpbkNvbW1lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCEkaW5CcmFjZSBvciAkY3VycmVudFBhcnNlTW9kZVskI2N1cnJlbnRQYXJzZU1vZGVdIGVx
ICJnbG9iYWwiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3YXJuICJtaXNtYXRjaGVkIGNs
b3NpbmcgYnJhY2UgZm91bmQgaW4gJGZpbGVOYW1lOiQuXG4iOworICAgICAgICAgICAgICAgICAg
ICAgICAgbmV4dDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAg
ICRpbkJyYWNlIC09IDE7CisKKyAgICAgICAgICAgICAgICAgICAgbXkgJHBhcnNlTW9kZSA9IHBv
cChAY3VycmVudFBhcnNlTW9kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkcGFyc2VNb2Rl
IGVxICJzZWxlY3RvciIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYW1lID0gcG9w
KEBzdGFjayk7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAkc3RhcnRMaW5lID0gcG9wKEBz
dGFjayk7CisgICAgICAgICAgICAgICAgICAgICAgICBteSAkZW5kTGluZSA9ICQuOworICAgICAg
ICAgICAgICAgICAgICAgICAgbXkgJGdyb3VwaW5nUHJlZml4ID0gam9pbigiICIsIEBncm91cGlu
Z1N0YWNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGggJGdyb3VwaW5nUHJl
Zml4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGdyb3VwaW5nUHJlZml4IC49ICIg
IgorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcHVz
aChAcmFuZ2VzLCBbJHN0YXJ0TGluZSwgJGVuZExpbmUsICRncm91cGluZ1ByZWZpeCAuICRuYW1l
XSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRwYXJzZU1vZGUgZXEgIm1lZGlhIikg
eworICAgICAgICAgICAgICAgICAgICAgICAgcG9wKEBncm91cGluZ1N0YWNrKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICRzZWxlY3RvckJyYWNlcyA9IDA7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNpZiAoJHRva2VuIGVxICIvKiIp
IHsKKyAgICAgICAgICAgICAgICAkaW5Db21tZW50ID0gMTsKKyAgICAgICAgICAgIH0gZWxzaWYg
KCR0b2tlbiBlcSAiKi8iKSB7CisgICAgICAgICAgICAgICAgd2FybiAibWlzbWF0Y2hlZCBjb21t
ZW50IGZvdW5kIGluICRmaWxlTmFtZTokLlxuIiBpZiAhJGluQ29tbWVudDsKKyAgICAgICAgICAg
ICAgICAkaW5Db21tZW50ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWYgKCEkaW5Db21tZW50IGFuZCAkY3VycmVudFBhcnNlTW9kZVskI2N1cnJlbnRQYXJzZU1v
ZGVdIG5lICJzZWxlY3RvciIgYW5kICR0b2tlbiAhfiAvXltcc1x0XSokLykgeworICAgICAgICAg
ICAgICAgICAgICAkdG9rZW4gPX4gcy9eW1xzXHRdKnxbXHNcdF0qJC8vZzsKKyAgICAgICAgICAg
ICAgICAgICAgbXkgJHN0YXJ0TGluZSA9ICQuOworICAgICAgICAgICAgICAgICAgICBpZiAoJHRv
a2VuID1+IC9eXEBtZWRpYS8pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJl
bnRQYXJzZU1vZGUsICJtZWRpYSIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAZ3Jv
dXBpbmdTdGFjaywgJHRva2VuKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGN1cnJlbnRQYXJzZU1vZGUsICJzZWxlY3RvciIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAc3RhY2ssICgkc3RhcnRMaW5lLCAkdG9rZW4p
KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgICMgU29ydCBieSBzdGFydCBsaW5lLgorICAgIHJl
dHVybiBzb3J0IHskYS0+WzBdIDw9PiAkYi0+WzBdfSBAcmFuZ2VzOworfQorCisjIFJlYWQgYSBm
aWxlIGFuZCBnZXQgYWxsIHRoZSBsaW5lIHJhbmdlcyBvZiB0aGUgdGhpbmdzIHRoYXQgbG9vayBs
aWtlIFN3aWZ0IGNsYXNzZXMsIG1ldGhvZHMsCisjIG9yIGZ1bmN0aW9ucy4KKyMKKyMgUmVzdWx0
IGlzIGEgbGlzdCBvZiB0cmlwbGVzOiBbIHN0YXJ0X2xpbmUsIGVuZF9saW5lLCBmdW5jdGlvbiBd
LgorCitzdWIgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9zd2lmdCB7CisgICAgbXkgKCRm
aWxlSGFuZGxlLCAkZmlsZU5hbWUpID0gQF87CisKKyAgICBteSBAcmFuZ2VzOworCisgICAgbXkg
JGN1cnJlbnRGdW5jdGlvbiA9ICIiOworICAgIG15ICRjdXJyZW50VHlwZSA9ICIiOworICAgIG15
ICRmdW5jdGlvblN0YXJ0ID0gMDsKKyAgICBteSAkdHlwZVN0YXJ0ID0gMDsKKyAgICBteSAkZnVu
Y3Rpb25TY29wZURlcHRoID0gMDsKKyAgICBteSAkdHlwZVNjb3BlRGVwdGggPSAwOworICAgIG15
ICRzY29wZURlcHRoID0gMDsKKworICAgIHdoaWxlICg8JGZpbGVIYW5kbGU+KSB7CisgICAgICAg
IGNob21wOworICAgICAgICBuZXh0IGlmICgvXlxzKlwvXC8uKi8pOworICAgICAgICBpZiAoL2Z1
bmNccysoW1x3X11bXHdcZF9dKilcKCguKilcKS8gfHwgL3ZhclxzKyhbXHdfXVtcd1xkX10qKTpc
cysvKSB7CisgICAgICAgICAgICAkZnVuY3Rpb25TY29wZURlcHRoID0gJHNjb3BlRGVwdGg7Cisg
ICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gJDE7CisgICAgICAgICAgICBpZiAoJDIpIHsK
KyAgICAgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0gIiRjdXJyZW50RnVuY3Rpb24oIi4g
cGFyc2VTd2lmdEZ1bmN0aW9uQXJncygkMikgLiAiKSI7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoJGN1cnJlbnRUeXBlKSB7CisgICAgICAgICAgICAgICAgJGN1cnJlbnRGdW5jdGlv
biA9ICIkY3VycmVudFR5cGUuJGN1cnJlbnRGdW5jdGlvbiI7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAkZnVuY3Rpb25TdGFydCA9ICQuOworICAgICAgICB9IGVsc2lmICgvKD86Y2xhc3N8
c3RydWN0fGVudW18cHJvdG9jb2x8ZXh0ZW5zaW9uKVxzKyhbXHdfXVtcd1xkX10qKS8pIHsKKyAg
ICAgICAgICAgICR0eXBlU2NvcGVEZXB0aCA9ICRzY29wZURlcHRoOworICAgICAgICAgICAgJGN1
cnJlbnRUeXBlID0gJDE7CisgICAgICAgICAgICAkdHlwZVN0YXJ0ID0gJC47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGluZGV4KCRfLCAieyIpID4gLTEpIHsKKyAgICAgICAgICAgICRzY29wZURl
cHRoKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluZGV4KCRfLCAifSIpID4gLTEpIHsKKyAg
ICAgICAgICAgICRzY29wZURlcHRoLS07CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRzY29wZURl
cHRoID09ICRmdW5jdGlvblNjb3BlRGVwdGgpIHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRm
dW5jdGlvblN0YXJ0OworICAgICAgICAgICAgcHVzaChAcmFuZ2VzLCBbJGZ1bmN0aW9uU3RhcnQs
ICQuLCAkY3VycmVudEZ1bmN0aW9uXSk7CisgICAgICAgICAgICAkY3VycmVudEZ1bmN0aW9uID0g
IiI7CisgICAgICAgICAgICAkZnVuY3Rpb25TdGFydCA9IDA7CisgICAgICAgIH0gZWxzaWYgKCRz
Y29wZURlcHRoID09ICR0eXBlU2NvcGVEZXB0aCkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3Mg
JHR5cGVTdGFydDsKKyAgICAgICAgICAgICRjdXJyZW50VHlwZSA9ICIiOworICAgICAgICAgICAg
JHR5cGVTdGFydCA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gQHJhbmdlczsK
K30KKworc3ViIHBhcnNlU3dpZnRGdW5jdGlvbkFyZ3MgeworICAgIG15ICRmdW5jdGlvbkFyZ3Mg
PSBzaGlmdDsKKworICAgIG15IEB3b3JkcyA9IHNwbGl0IC8sIC8sICRmdW5jdGlvbkFyZ3M7Cisg
ICAgbXkgJGFyZ0NvdW50ID0gc2NhbGFyKEB3b3Jkcyk7CisgICAgaWYgKCRhcmdDb3VudCA9PSAw
KSB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9IGVsc2lmICgkYXJnQ291bnQgPiAwKSB7Cisg
ICAgICAgICMgSWYgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHVubmFtZWQsIGdpdmUgaXQgdGhlIG5h
bWUgIl8iCisgICAgICAgICR3b3Jkc1swXSA9fiBzL14oXHcrOiAuKikvXyAkMS87CisgICAgICAg
IHJldHVybiBqb2luKCIiLCBtYXAgeyAkXyA9fiBzL14oXHcrKS4qLyQxLzsgIiRfOiIgfSBAd29y
ZHMpOworICAgIH0gZWxzZSB7CisgICAgICAgIHdhcm4gIlVua25vd24gYXJndW1lbnQgY291bnQu
XG4iOworICAgIH0KK30KKworc3ViIGRlY29kZUVudGl0aWVzIHsKKyAgICBteSAkdGV4dCA9IHNo
aWZ0OworICAgICR0ZXh0ID1+IHMvXCZsdDsvPC9nOworICAgICR0ZXh0ID1+IHMvXCZndDsvPi9n
OworICAgICR0ZXh0ID1+IHMvXCZxdW90Oy9cIi9nOworICAgICR0ZXh0ID1+IHMvXCZhcG9zOy9c
Jy9nOworICAgICR0ZXh0ID1+IHMvXCZhbXA7L1wmL2c7CisgICAgcmV0dXJuICR0ZXh0OworfQor
CisxOwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2RpcnMucG0gYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvZGlycy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmY1ZTFkMDI1ZjA3MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9kaXJzLnBtCkBAIC0wLDAgKzEsODEgQEAKKyMhL3Vzci9iaW4vZW52IHBl
cmwKKworIyBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
IyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK3BhY2thZ2Ugd2Via2l0cGVybDo6ZGlyczsKKwordXNlIHN0cmlj
dDsKK3VzZSB3YXJuaW5nczsKK3VzZSBDYXJwOwordXNlIEZpbGU6OlNwZWM7CisKK0JFR0lOIHsK
KyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgkVkVSU0lPTiwgQElTQSwgQEVYUE9SVCwg
QEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRWRVJTSU9OICAgICA9IDEuMDA7CisgICBA
SVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBARVhQT1JUICAgICAgPSBxdygKKyAgICAg
ICAgICAgICAgICAgICAgc291cmNlRGlyCisgICAgICAgICAgICAgICAgICAgIHNldFNvdXJjZURp
cgorICAgICAgICAgICAgICAgICk7CisgICAlRVhQT1JUX1RBR1MgPSAoKTsKKyAgIEBFWFBPUlRf
T0sgICA9ICgpOworfQorCitteSAkc291cmNlRGlyOworCitzdWIgc291cmNlRGlyCit7CisgICAg
ZGV0ZXJtaW5lU291cmNlRGlyKCk7CisgICAgcmV0dXJuICRzb3VyY2VEaXI7Cit9CisKKyMgdXNl
ZCBmb3Igc2NyaXB0cyB3aGljaCBhcmUgc3RvcmVkIGluIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9u
CitzdWIgc2V0U291cmNlRGlyKCQpCit7CisgICAgKCRzb3VyY2VEaXIpID0gQF87Cit9CisKK3N1
YiBkZXRlcm1pbmVTb3VyY2VEaXIKK3sKKyAgICByZXR1cm4gaWYgJHNvdXJjZURpcjsKKyAgICAk
c291cmNlRGlyID0gJEZpbmRCaW46OlJlYWxCaW47CisgICAgJHNvdXJjZURpciA9fiBzfC8rJHx8
OyAjIFJlbW92ZSB0cmFpbGluZyAnLycgYXMgd2Ugd291bGQgZGllIGxhdGVyCisKKyAgICAjIHdh
bGtzIHVwIHBhdGggY2hlY2tpbmcgZWFjaCBkaXJlY3RvcnkgdG8gc2VlIGlmIGl0IGlzIHRoZSBt
YWluIFdlYktpdCBwcm9qZWN0IGRpciwKKyAgICAjIGRlZmluZWQgYnkgY29udGFpbmluZyBTb3Vy
Y2VzLCBXZWJDb3JlLCBhbmQgSmF2YVNjcmlwdENvcmUuCisgICAgdW50aWwgKCgtZCBGaWxlOjpT
cGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIlNvdXJjZSIpICYmIC1kIEZpbGU6OlNwZWMtPmNhdGRp
cigkc291cmNlRGlyLCAiU291cmNlIiwgIldlYkNvcmUiKSAmJiAtZCBGaWxlOjpTcGVjLT5jYXRk
aXIoJHNvdXJjZURpciwgIlNvdXJjZSIsICJKYXZhU2NyaXB0Q29yZSIpKSB8fCAoLWQgRmlsZTo6
U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJJbnRlcm5hbCIpICYmIC1kIEZpbGU6OlNwZWMtPmNh
dGRpcigkc291cmNlRGlyLCAiT3BlblNvdXJjZSIpKSkKKyAgICB7CisgICAgICAgIGlmICgkc291
cmNlRGlyICF+IHN8L1teL10rJHx8KSB7CisgICAgICAgICAgICBjcm9hayAiQ291bGQgbm90IGZp
bmQgdG9wIGxldmVsIHdlYmtpdCBkaXJlY3RvcnkgYWJvdmUgc291cmNlIGRpcmVjdG9yeSB1c2lu
ZyBGaW5kQmluLiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAkc291cmNlRGlyID0gRmlsZTo6
U3BlYy0+Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIikgaWYgLWQgRmlsZTo6U3BlYy0+
Y2F0ZGlyKCRzb3VyY2VEaXIsICJPcGVuU291cmNlIik7Cit9CisKKzE7CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZmlsdGVyLWJ1aWxkLXdlYmtpdF91bml0dGVzdC9zaG91
bGRJZ25vcmVMaW5lX3VuaXR0ZXN0cy5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9maWx0
ZXItYnVpbGQtd2Via2l0X3VuaXR0ZXN0L3Nob3VsZElnbm9yZUxpbmVfdW5pdHRlc3RzLnBsCmlu
ZGV4IGMzODMwM2NjYmNlNS4uMjJmMGE0MGZkNzJjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvZmlsdGVyLWJ1aWxkLXdlYmtpdF91bml0dGVzdC9zaG91bGRJZ25vcmVMaW5l
X3VuaXR0ZXN0cy5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvZmlsdGVyLWJ1aWxk
LXdlYmtpdF91bml0dGVzdC9zaG91bGRJZ25vcmVMaW5lX3VuaXR0ZXN0cy5wbApAQCAtMzEsMTQg
KzMxLDExIEBAIHVzZSB3YXJuaW5nczsKIHVzZSBFbmdsaXNoOwogdXNlIEZpbmRCaW47CiB1c2Ug
VGVzdDo6TW9yZTsKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIu
LiIpOwotdXNlIExvYWRBc01vZHVsZSBxdyhGaWx0ZXJCdWlsZFdlYktpdCBmaWx0ZXItYnVpbGQt
d2Via2l0KTsKK3VzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpSZWFsQmluLCAi
Li4iLCAiLi4iKTsKK3VzZSB3ZWJraXRwZXJsOjpidWlsZDo6b3V0cHV0IHF3KHNob3VsZElnbm9y
ZUxpbmUpOwogCiBzdWIgZGVzY3JpcHRpb24oJCk7CiAKLUBGaWx0ZXJCdWlsZFdlYktpdDo6RVhQ
T1JUX09LID0gcXcoc2hvdWxkSWdub3JlTGluZSk7Ci1GaWx0ZXJCdWlsZFdlYktpdC0+aW1wb3J0
KEBGaWx0ZXJCdWlsZFdlYktpdDo6RVhQT1JUX09LKTsKLQogIwogIyBUZXN0IHdoaXRlc3BhY2UK
ICMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9sZWFrcy5wbSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cGVybC9sZWFrcy5wbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmMwODcyY2ZiZGYzNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9sZWFrcy5wbQpAQCAtMCwwICsxLDE1NCBAQAorIyEvdXNyL2Jpbi9lbnYg
cGVybAorCisjIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorIyAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisjIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIyBTY3JpcHQgdG8gcnVuIHRoZSBNYWMgT1MgWCBsZWFrcyB0
b29sIHdpdGggbW9yZSBleHByZXNzaXZlICctZXhjbHVkZScgbGlzdHMuCisKK3BhY2thZ2Ugd2Vi
a2l0cGVybDo6bGVha3M7CisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgQ2FycDsK
KwordXNlIEZpbGU6OkJhc2VuYW1lOworCitCRUdJTiB7CisgICB1c2UgRXhwb3J0ZXIgICAoKTsK
KyAgIG91ciAoJFZFUlNJT04sIEBJU0EsIEBFWFBPUlQsIEBFWFBPUlRfT0ssICVFWFBPUlRfVEFH
Uyk7CisgICAkVkVSU0lPTiAgICAgPSAxLjAwOworICAgQElTQSAgICAgICAgID0gcXcoRXhwb3J0
ZXIpOworICAgQEVYUE9SVCAgICAgID0gcXcoCisgICAgICAgICAgICAgICAgICAgIHJ1bkxlYWtz
CisgICAgICAgICAgICAgICAgICAgIHBhcnNlTGVha3NPdXRwdXQKKyAgICAgICAgICAgICAgICAp
OworICAgJUVYUE9SVF9UQUdTID0gKCk7CisgICBARVhQT1JUX09LICAgPSAoKTsKK30KKworIyBS
ZXR1cm5zIHRoZSBvdXRwdXQgb2YgdGhlIGxlYWtzIHRvb2wgaW4gbGlzdCBmb3JtLgorc3ViIHJ1
bkxlYWtzKCQkKQoreworICAgIG15ICgkdGFyZ2V0LCAkbWVtZ3JhcGhQYXRoKSA9IEBfOworCisg
ICAgaWYgKGRlZmluZWQgJG1lbWdyYXBoUGF0aCkgeworICAgICAgICBgL3Vzci9iaW4vbGVha3Mg
XCIkdGFyZ2V0XCIgLS1vdXRwdXRHcmFwaD1cIiRtZW1ncmFwaFBhdGhcImA7CisgICAgICAgICR0
YXJnZXQgPSAkbWVtZ3JhcGhQYXRoOworICAgIH0KKworICAgICMgVG8gZ2V0IGEgcmVzdWx0IHdl
IGNhbiBwYXJzZSwgd2UgbmVlZCB0byBwYXNzIC0tbGlzdCB0byBhbGwgdmVyc2lvbnMgb2YgdGhl
IGxlYWtzIHRvb2wKKyAgICAjIHRoYXQgcmVjb2duaXplIGl0LCBidXQgdGhlcmUgaXMgbm8gY2Vy
dGFpbiB3YXkgdG8gdGVsbCBpbiBhZHZhbmNlICh0aGUgdmVyc2lvbiBvZiB0aGUKKyAgICAjIHRv
b2wgaXMgbm90IGFsd2F5cyB0aWVkIHRvIE9TIHZlcnNpb24sIGFuZCAtLWhlbHAgZG9lc24ndCBk
b2N1bWVudCB0aGUgb3B0aW9uIGluIHNvbWUKKyAgICAjIG9mIHRoZSB0b29sIHZlcnNpb25zIHdo
ZXJlIGl0J3Mgc3VwcG9ydGVkIGFuZCBuZWVkZWQpLgorICAgIG15IEBsZWFrc091dHB1dCA9IGAv
dXNyL2Jpbi9sZWFrcyBcIiR0YXJnZXRcIiAtLWxpc3RgOworCisgICAgIyBGSVhNRTogUmVtb3Zl
IHRoZSBmYWxsYmFjayBvbmNlIG1hY09TIE1vamF2ZSBpcyB0aGUgb2xkZXN0IHN1cHBvcnRlZCB2
ZXJzaW9uLgorICAgIG15ICRsZWFrc0V4aXRDb2RlID0gJD8gPj4gODsKKyAgICBpZiAoJGxlYWtz
RXhpdENvZGUgPiAxKSB7CisgICAgICAgIEBsZWFrc091dHB1dCA9IGAvdXNyL2Jpbi9sZWFrcyBc
IiR0YXJnZXRcImA7CisgICAgfQorCisgICAgcmV0dXJuIFxAbGVha3NPdXRwdXQ7Cit9CisKKyMg
UmV0dXJucyBhIGxpc3Qgb2YgaGFzaCByZWZlcmVuY2VzIHdpdGggdGhlIGtleXMgeyBhZGRyZXNz
LCBzaXplLCB0eXBlLCBjYWxsU3RhY2ssIGxlYWtzT3V0cHV0IH0KK3N1YiBwYXJzZUxlYWtzT3V0
cHV0KFxAKQoreworICAgIG15ICgkbGVha3NPdXRwdXQpID0gQF87CisKKyAgICAjIEZvcm1hdDoK
KyAgICAjICAgUHJvY2VzcyAwMDAwMDogMTIzNCBub2RlcyBtYWxsb2NlZCBmb3IgMTIzNCBLQgor
ICAgICMgICBQcm9jZXNzIDAwMDAwOiBYWCBsZWFrcyBmb3IgWFhYIHRvdGFsIGxlYWtlZCBieXRl
cy4KKyAgICAjICAgTGVhazogMHgwMDAwMDAwMCBzaXplPTEyMzQgW2luc3RhbmNlIG9mICdibGFo
J10KKyAgICAjICAgICAgIDB4MDAwMDAwMDAgMHgwMDAwMDAwMCAweDAwMDAwMDAwIDB4MDAwMDAw
MDAgYS4uZC5lLmUKKyAgICAjICAgICAgIC4uLgorICAgICMgICAgICAgQ2FsbCBzdGFjazogbGVh
a19jYWxsZXIoKSB8IGxlYWsoKSB8IG1hbGxvYworICAgICMKKyAgICAjICAgV2UgdHJlYXQgZXZl
cnkgbGluZSBleGNlcHQgZm9yICBQcm9jZXNzIDAwMDAwOiBhbmQgTGVhazogYXMgb3B0aW9uYWwK
KworICAgIG15ICRsZWFrQ291bnQ7CisgICAgbXkgQHBhcnNlZE91dHB1dCA9ICgpOworICAgIG15
ICRwYXJzaW5nTGVhayA9IDA7CisgICAgbXkgJHBhcnNlZExlYWtDb3VudCA9IDA7CisgICAgZm9y
IG15ICRsaW5lIChAJGxlYWtzT3V0cHV0KSB7CisgICAgICAgIGlmICgkbGluZSA9fiAvXlByb2Nl
c3MgXGQrOiAoXGQrKSBsZWFrcz8vKSB7CisgICAgICAgICAgICAkbGVha0NvdW50ID0gJDE7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoJGxpbmUgZXEgIlxuIikgeworICAgICAgICAgICAgJHBh
cnNpbmdMZWFrID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgkbGluZSA9fiAvXkxlYWs6
IC8pIHsKKyAgICAgICAgICAgICRwYXJzaW5nTGVhayA9IDE7CisgICAgICAgICAgICAkcGFyc2Vk
TGVha0NvdW50Kys7CisgICAgICAgICAgICBteSAoJGFkZHJlc3MpID0gKCRsaW5lID1+IC9MZWFr
OiAoW1s6eGRpZ2l0Ol14XSspLyk7CisgICAgICAgICAgICBpZiAoIWRlZmluZWQoJGFkZHJlc3Mp
KSB7CisgICAgICAgICAgICAgICAgY3JvYWsgIkNvdWxkIG5vdCBwYXJzZSBMZWFrIGFkZHJlc3Mu
IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbXkgKCRzaXplKSA9ICgkbGluZSA9fiAv
c2l6ZT0oW1s6ZGlnaXQ6XV0rKS8pOworICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCRzaXplKSkg
eworICAgICAgICAgICAgICAgIGNyb2FrICJDb3VsZCBub3QgcGFyc2UgTGVhayBzaXplLiI7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICMgRklYTUU6IFRoaXMgY29kZSBzZWVtcyB3cm9u
ZywgdGhlIGxlYWtzIHRvb2wgZG9lc24ndCBhY3R1YWxseSB1c2Ugc2luZ2xlIHF1b3Rlcy4KKyAg
ICAgICAgICAgICMgV2Ugc2hvdWxkIHJlY29uY2lsZSB3aXRoIG90aGVyIGZvcm1hdCBjaGFuZ2Vz
IHRoYXQgaGFwcGVuZWQgc2luY2UsIHN1Y2ggYXMgdGhlCisgICAgICAgICAgICAjIGFkZGl0aW9u
IG9mIHpvbmUgaW5mb3JtYXRpb24uCisgICAgICAgICAgICBteSAoJHR5cGUpID0gKCRsaW5lID1+
IC8nKFteJ10rKScvKTsgIycKKyAgICAgICAgICAgIGlmICghZGVmaW5lZCgkdHlwZSkpIHsKKyAg
ICAgICAgICAgICAgICAkdHlwZSA9ICIiOyAjIFRoZSBsZWFrcyB0b29sIHNvbWV0aW1lcyBvbWl0
cyB0aGUgdHlwZS4KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbXkgJWxlYWsgPSAoCisg
ICAgICAgICAgICAgICAgImFkZHJlc3MiID0+ICRhZGRyZXNzLAorICAgICAgICAgICAgICAgICJz
aXplIiA9PiAkc2l6ZSwKKyAgICAgICAgICAgICAgICAidHlwZSIgPT4gJHR5cGUsCisgICAgICAg
ICAgICAgICAgImNhbGxTdGFjayIgPT4gIiIsICMgVGhlIGxlYWtzIHRvb2wgc29tZXRpbWVzIG9t
aXRzIHRoZSBjYWxsIHN0YWNrLgorICAgICAgICAgICAgICAgICJsZWFrc091dHB1dCIgPT4gJGxp
bmUKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBwdXNoKEBwYXJzZWRPdXRwdXQsIFwlbGVh
ayk7CisgICAgICAgIH0gZWxzaWYgKCRwYXJzaW5nTGVhaykgeworICAgICAgICAgICAgJHBhcnNl
ZE91dHB1dFskI3BhcnNlZE91dHB1dF0tPnsibGVha3NPdXRwdXQifSAuPSAkbGluZTsKKyAgICAg
ICAgICAgIGlmICgkbGluZSA9fiAvQ2FsbCBzdGFjazovKSB7CisgICAgICAgICAgICAgICAgJHBh
cnNlZE91dHB1dFskI3BhcnNlZE91dHB1dF0tPnsiY2FsbFN0YWNrIn0gPSAkbGluZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG15ICVub25MZWFrTGluZSA9
ICgKKyAgICAgICAgICAgICAgICAibGVha3NPdXRwdXQiID0+ICRsaW5lCisgICAgICAgICAgICAp
OworICAgICAgICAgICAgcHVzaChAcGFyc2VkT3V0cHV0LCBcJW5vbkxlYWtMaW5lKTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmICgkcGFyc2VkTGVha0NvdW50ICE9ICRsZWFrQ291bnQpIHsK
KyAgICAgICAgY3JvYWsgIlBhcnNlZCBsZWFrIGNvdW50ICgkcGFyc2VkTGVha0NvdW50KSBkb2Vz
IG5vdCBtYXRjaCBsZWFrIGNvdW50IHJlcG9ydGVkIGJ5IGxlYWtzIHRvb2wgKCRsZWFrQ291bnQp
LiI7CisgICAgfQorCisgICAgcmV0dXJuIFxAcGFyc2VkT3V0cHV0OworfQorCisxOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0
L2V4dHJhY3RMaW5lUmFuZ2VCZWZvcmVBbmRBZnRlckNoYW5nZS5wbCBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9leHRyYWN0TGluZVJhbmdlQmVm
b3JlQW5kQWZ0ZXJDaGFuZ2UucGwKaW5kZXggYTc5MmUzYjIxOTY5Li44NjgzYjQ4YjIxMDEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0
dGVzdC9leHRyYWN0TGluZVJhbmdlQmVmb3JlQW5kQWZ0ZXJDaGFuZ2UucGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2V4dHJhY3RMaW5l
UmFuZ2VCZWZvcmVBbmRBZnRlckNoYW5nZS5wbApAQCAtMjcsOCArMjcsMTEgQEAgdXNlIHdhcm5p
bmdzOwogCiB1c2UgVGVzdDo6TW9yZTsKIHVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpTcGVj
LT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7Ci11c2UgTG9hZEFzTW9kdWxlIHF3KFByZXBh
cmVDaGFuZ2VMb2cgcHJlcGFyZS1DaGFuZ2VMb2cpOwordXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRk
aXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVybDo6Y2hhbmdlbG9n
IHF3KAorICAgIGV4dHJhY3RMaW5lUmFuZ2VCZWZvcmVDaGFuZ2UKKyAgICBleHRyYWN0TGluZVJh
bmdlQWZ0ZXJDaGFuZ2UKKyk7CiAKIG15IEB0ZXN0Q2FzZUhhc2hSZWZzID0gKAogIyMjIwpAQCAt
MTk3LDEwICsyMDAsMTAgQEAgZm9yZWFjaCBteSAkdGVzdENhc2UgKEB0ZXN0Q2FzZUhhc2hSZWZz
KSB7CiAgICAgbXkgJGV4cGVjdGVkUmVzdWx0cyA9ICR0ZXN0Q2FzZS0+e2V4cGVjdGVkUmVzdWx0
c307CiAKICAgICBteSAkdGVzdE5hbWVTdGFydCA9ICJleHRyYWN0TGluZVJhbmdlQmVmb3JlQ2hh
bmdlKCk6ICR0ZXN0Q2FzZS0+e3Rlc3ROYW1lfTogY29tcGFyaW5nIjsKLSAgICBteSBAZ290ID0g
UHJlcGFyZUNoYW5nZUxvZzo6ZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5nZSgkdGVzdENhc2Ut
PntpbnB1dFRleHR9KTsKKyAgICBteSBAZ290ID0gZXh0cmFjdExpbmVSYW5nZUJlZm9yZUNoYW5n
ZSgkdGVzdENhc2UtPntpbnB1dFRleHR9KTsKICAgICBpc19kZWVwbHkoXEBnb3QsICRleHBlY3Rl
ZFJlc3VsdHMtPntiZWZvcmVDaGFuZ2V9LCAiJHRlc3ROYW1lU3RhcnQgcmV0dXJuIHZhbHVlLiIp
OwogCiAgICAgJHRlc3ROYW1lU3RhcnQgPSAiZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlKCk6
ICR0ZXN0Q2FzZS0+e3Rlc3ROYW1lfTogY29tcGFyaW5nIjsKLSAgICBAZ290ID0gUHJlcGFyZUNo
YW5nZUxvZzo6ZXh0cmFjdExpbmVSYW5nZUFmdGVyQ2hhbmdlKCR0ZXN0Q2FzZS0+e2lucHV0VGV4
dH0pOworICAgIEBnb3QgPSBleHRyYWN0TGluZVJhbmdlQWZ0ZXJDaGFuZ2UoJHRlc3RDYXNlLT57
aW5wdXRUZXh0fSk7CiAgICAgaXNfZGVlcGx5KFxAZ290LCAkZXhwZWN0ZWRSZXN1bHRzLT57YWZ0
ZXJDaGFuZ2V9LCAiJHRlc3ROYW1lU3RhcnQgcmV0dXJuIHZhbHVlLiIpOwogfQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2Zl
dGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YS5wbCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9w
cmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9mZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEucGwK
aW5kZXggZmE0MTFmMjEwYWJjLi4zYzc0MzFjZTg2NjEgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9mZXRjaFJhZGFyVVJMRnJv
bUJ1Z1hNTERhdGEucGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hh
bmdlTG9nX3VuaXR0ZXN0L2ZldGNoUmFkYXJVUkxGcm9tQnVnWE1MRGF0YS5wbApAQCAtMjcsOCAr
MjcsOCBAQCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBUZXN0OjpNb3JlOwogdXNlIEZpbmRCaW47Ci11
c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKLXVzZSBMb2Fk
QXNNb2R1bGUgcXcoUHJlcGFyZUNoYW5nZUxvZyBwcmVwYXJlLUNoYW5nZUxvZyk7Cit1c2UgbGli
IEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKK3VzZSB3ZWJr
aXRwZXJsOjpjaGFuZ2Vsb2cgcXcoZmV0Y2hSYWRhclVSTEZyb21CdWdYTUxEYXRhKTsKIAogIyBO
T1RFOiBBIEJ1Z3ppbGxhIENvbW1lbnQgWE1MIGxvb2tzIGxpa2U6CiAjCkBAIC0xNTYsNiArMTU2
LDYgQEAgcGxhbih0ZXN0cyA9PiAkdGVzdENhc2VzQ291bnQpOwogCiBmb3JlYWNoIG15ICR0ZXN0
Q2FzZSAoQHRlc3RDYXNlSGFzaFJlZnMpIHsKICAgICBteSAkZXhwZWN0ZWQgPSAkdGVzdENhc2Ut
PntleHBlY3RlZH07Ci0gICAgbXkgJGdvdCA9IFByZXBhcmVDaGFuZ2VMb2c6OmZldGNoUmFkYXJV
UkxGcm9tQnVnWE1MRGF0YSgxNTI4MzksICR0ZXN0Q2FzZS0+e2lucHV0VGV4dH0pOworICAgIG15
ICRnb3QgPSBmZXRjaFJhZGFyVVJMRnJvbUJ1Z1hNTERhdGEoMTUyODM5LCAkdGVzdENhc2UtPntp
bnB1dFRleHR9KTsKICAgICBpcygkZ290LCAkZXhwZWN0ZWQsICR0ZXN0Q2FzZS0+e3Rlc3ROYW1l
fSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFu
Z2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGwgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50
aGVzZXMucGwKaW5kZXggOWRiOGY4OWZhMjIwLi44MTIwZWMwN2JlYmYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9maWxlbmFt
ZVdpdGhQYXJlbnRoZXNlcy5wbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFy
ZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZmlsZW5hbWVXaXRoUGFyZW50aGVzZXMucGwKQEAgLTMwLDEx
ICszMCwxMCBAQCB1c2Ugd2FybmluZ3M7CiB1c2UgRmlsZTo6VGVtcDsKIHVzZSBGaW5kQmluOwog
dXNlIFRlc3Q6Ok1vcmU7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6Qmlu
LCAiLi4iLCAiLi4iKTsKK3VzZSB3ZWJraXRwZXJsOjpjaGFuZ2Vsb2cgcXcoYXR0cmlidXRlQ29t
bWFuZCk7CiB1c2UgVkNTVXRpbHM7CiAKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5k
QmluOjpCaW4sICIuLiIpOwotdXNlIExvYWRBc01vZHVsZSBxdyhQcmVwYXJlQ2hhbmdlTG9nIHBy
ZXBhcmUtQ2hhbmdlTG9nKTsKLQogcGxhbih0ZXN0cyA9PiAxKTsKIAogc3ViIHdyaXRlRmlsZVdp
dGhDb250ZW50KCQkKQpAQCAtNTQsNyArNTMsNyBAQCB3cml0ZUZpbGVXaXRoQ29udGVudChGaWxl
OjpTcGVjLT5jYXRmaWxlKCR0ZW1wb3JhcnlEaXJlY3RvcnksICIuZ2l0YXR0cmlidXRlcyIpLAog
bXkgJGF0dHJpYnV0ZUNhY2hlID0ge307CiBteSAkcmVzdWx0ID0gMDsKIGNoZGlyICR0ZW1wb3Jh
cnlEaXJlY3Rvcnk7Ci0kcmVzdWx0ID0gUHJlcGFyZUNoYW5nZUxvZzo6YXR0cmlidXRlQ29tbWFu
ZCgkYXR0cmlidXRlQ2FjaGUsICRmaWxlbmFtZSwgImZvbyIpOworJHJlc3VsdCA9IGF0dHJpYnV0
ZUNvbW1hbmQoJGF0dHJpYnV0ZUNhY2hlLCAkZmlsZW5hbWUsICJmb28iKTsKIGNoZGlyICcuLic7
CiAKIGlzKCRyZXN1bHQsIDEsICJTaG91bGQgc3VjY2Vzc2Z1bGx5IGdldCBmb28gYXR0cmlidXRl
IGZyb20gZmlsZSB3aXRoIHBhcmVudGhlc2VzIGluIG5hbWUuIik7CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZ2VuZXJhdGVG
dW5jdGlvbkxpc3RzLnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdl
TG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rpb25MaXN0cy5wbAppbmRleCA1ZTU1OTM3MjUzYzQu
LmQ4ZGNhMjE2YjQxOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBh
cmUtQ2hhbmdlTG9nX3VuaXR0ZXN0L2dlbmVyYXRlRnVuY3Rpb25MaXN0cy5wbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvcHJlcGFyZS1DaGFuZ2VMb2dfdW5pdHRlc3QvZ2VuZXJhdGVG
dW5jdGlvbkxpc3RzLnBsCkBAIC0yOCwxMSArMjgsMTAgQEAgdXNlIHdhcm5pbmdzOwogdXNlIEZp
bGU6OlRlbXA7CiB1c2UgRmluZEJpbjsKIHVzZSBUZXN0OjpNb3JlOwordXNlIGxpYiBGaWxlOjpT
cGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIiwgIi4uIik7Cit1c2Ugd2Via2l0cGVybDo6
Y2hhbmdlbG9nIHF3KGFjdHVhbGx5R2VuZXJhdGVGdW5jdGlvbkxpc3RzKTsKIHVzZSBWQ1NVdGls
czsKIAotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJpbiwgIi4uIik7Ci11
c2UgTG9hZEFzTW9kdWxlIHF3KFByZXBhcmVDaGFuZ2VMb2cgcHJlcGFyZS1DaGFuZ2VMb2cpOwot
CiBteSAkRVhBTVBMRV9DUFAgPSA8PEVPRjsKICNpbmNsdWRlIDxjYXNzZXJ0PgogI2luY2x1ZGUg
PGNtYXRoPgpAQCAtNTM2LDcgKzUzNSw3IEBAIGZvcmVhY2ggbXkgJHRlc3RDYXNlIChAdGVzdENh
c2VIYXNoUmVmcykgewogICAgICk7CiAgICAgbXkgJWZ1bmN0aW9uTGlzdHM7CiAgICAgZGlzY2Fy
ZE91dHB1dChzdWIgewotICAgICAgICBQcmVwYXJlQ2hhbmdlTG9nOjphY3R1YWxseUdlbmVyYXRl
RnVuY3Rpb25MaXN0cyhbJGZpbGVuYW1lXSwgXCVmdW5jdGlvbkxpc3RzLCB1bmRlZiwgdW5kZWYs
IHVuZGVmLCBcJWRlbGVnYXRlSGFzaCk7CisgICAgICAgIGFjdHVhbGx5R2VuZXJhdGVGdW5jdGlv
bkxpc3RzKFskZmlsZW5hbWVdLCBcJWZ1bmN0aW9uTGlzdHMsIHVuZGVmLCB1bmRlZiwgdW5kZWYs
IFwlZGVsZWdhdGVIYXNoKTsKICAgICB9KTsKICAgICBjaG9tcChteSAkZXhwZWN0ZWQgPSAkdGVz
dENhc2UtPntleHBlY3RlZH0pOwogICAgIGlzKCRmdW5jdGlvbkxpc3RzeyRmaWxlbmFtZX0sICRl
eHBlY3RlZCwgJHRlc3RDYXNlLT57dGVzdE5hbWV9KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9wYXJzZXJfdW5pdHRlc3Rz
LnBsIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3ByZXBhcmUtQ2hhbmdlTG9nX3VuaXR0ZXN0
L3BhcnNlcl91bml0dGVzdHMucGwKaW5kZXggNzE1N2ZmZWRlZWRjLi5lZmUyYWQwZDI5NDkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9wcmVwYXJlLUNoYW5nZUxvZ191bml0
dGVzdC9wYXJzZXJfdW5pdHRlc3RzLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9w
cmVwYXJlLUNoYW5nZUxvZ191bml0dGVzdC9wYXJzZXJfdW5pdHRlc3RzLnBsCkBAIC0zMSwxMSAr
MzEsMjAgQEAgdXNlIEZpbGU6OlRlbXAgcXcodGVtcGZpbGUpOwogdXNlIEZpbmRCaW47CiB1c2Ug
R2V0b3B0OjpMb25nOwogdXNlIFRlc3Q6Ok1vcmU7Ci11c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRp
cigkRmluZEJpbjo6QmluLCAiLi4iKTsKLXVzZSBMb2FkQXNNb2R1bGUgcXcoUHJlcGFyZUNoYW5n
ZUxvZyBwcmVwYXJlLUNoYW5nZUxvZyk7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmlu
ZEJpbjo6QmluLCAiLi4iLCAiLi4iKTsKK3VzZSBWQ1NVdGlsczsKK3VzZSB3ZWJraXRwZXJsOjpj
aGFuZ2Vsb2cgcXcoCisgICAgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zvcl9jcHAKKyAgICBn
ZXRfc2VsZWN0b3JfbGluZV9yYW5nZXNfZm9yX2NzcworICAgIGdldF9mdW5jdGlvbl9saW5lX3Jh
bmdlc19mb3JfamF2YQorICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfamF2YXNjcmlw
dAorICAgIGdldF9mdW5jdGlvbl9saW5lX3Jhbmdlc19mb3JfcGVybAorICAgIGdldF9mdW5jdGlv
bl9saW5lX3Jhbmdlc19mb3JfcHl0aG9uCisgICAgZ2V0X2Z1bmN0aW9uX2xpbmVfcmFuZ2VzX2Zv
cl9zd2lmdAorKTsKK3VzZSB3ZWJraXRwZXJsOjpkaXJzOwogCiBzdWIgY2FwdHVyZU91dHB1dCgk
KTsKLXN1YiBjb252ZXJ0QWJzb2x1dGVQYXRoVG9SZWxhdGl2ZVVuaXhQYXRoKCQkKTsKIHN1YiBy
ZWFkVGVzdEZpbGVzKCQpOwogCiB1c2UgY29uc3RhbnQgRVhQRUNURURfUkVTVUxUU19TVUZGSVgg
PT4gIi1leHBlY3RlZC50eHQiOwpAQCAtNjksNyArNzgsNyBAQCBmb3JlYWNoIG15ICR0ZXN0Rmls
ZSAoc29ydCBAdGVzdEZpbGVzKSB7CiBwbGFuKHRlc3RzID0+IHNjYWxhciBAdGVzdFNldCk7CiBm
b3JlYWNoIG15ICR0ZXN0IChAdGVzdFNldCkgewogICAgIG9wZW4gRkgsICI8ICR0ZXN0LT57aW5w
dXRGaWxlfSIgb3IgZGllICJDYW5ub3Qgb3BlbiAkdGVzdC0+e2lucHV0RmlsZX06ICQhIjsKLSAg
ICBteSAkcGFyc2VyID0gZXZhbCAiXFwmUHJlcGFyZUNoYW5nZUxvZzo6JHRlc3QtPnttZXRob2R9
IjsKKyAgICBteSAkcGFyc2VyID0gZXZhbCAiXFwmJHRlc3QtPnttZXRob2R9IjsKICAgICBteSBA
cmFuZ2VzOwogICAgIG15ICgkc3Rkb3V0LCAkc3RkZXJyKSA9IGNhcHR1cmVPdXRwdXQoc3ViIHsg
QHJhbmdlcyA9ICRwYXJzZXItPihcKkZILCAkdGVzdC0+e2lucHV0RmlsZX0pOyB9KTsKICAgICBj
bG9zZSBGSDsKQEAgLTEzMCwxMSArMTM5LDEwIEBAIHN1YiBjYXB0dXJlT3V0cHV0KCQpCiAgICAg
cmV0dXJuICgkc3Rkb3V0LCAkc3RkZXJyKTsKIH0KIAotc3ViIGNvbnZlcnRBYnNvbHV0ZVBhdGhU
b1JlbGF0aXZlVW5peFBhdGgoJCQpCi17CitzdWIgY29udmVydEFic29sdXRlUGF0aFRvUmVsYXRp
dmVVbml4UGF0aCB7CiAgICAgbXkgKCRzdHJpbmcsICRwYXRoKSA9IEBfOwotICAgIG15ICRzb3Vy
Y2VEaXIgPSBMb2FkQXNNb2R1bGU6OnVuaXhQYXRoKExvYWRBc01vZHVsZTo6c291cmNlRGlyKCkp
OwotICAgIG15ICRyZWxhdGl2ZVVuaXhQYXRoID0gTG9hZEFzTW9kdWxlOjp1bml4UGF0aCgkcGF0
aCk7CisgICAgbXkgJHNvdXJjZURpciA9IHVuaXhQYXRoKHNvdXJjZURpcigpKTsKKyAgICBteSAk
cmVsYXRpdmVVbml4UGF0aCA9IHVuaXhQYXRoKCRwYXRoKTsKICAgICAkc291cmNlRGlyIC49ICIv
IiB1bmxlc3MgJHNvdXJjZURpciA9fiBtLS8kLTsKICAgICBteSAkcXVvdGVkU291cmNlRGlyID0g
cXVvdGVtZXRhKCRzb3VyY2VEaXIpOwogICAgICRyZWxhdGl2ZVVuaXhQYXRoICA9fiBzLyRxdW90
ZWRTb3VyY2VEaXIvLzsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4t
bGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4tbGVha3MtcmVwb3J0LXYxLjAucGwKaW5k
ZXggM2YzZjVlODNkMWM3Li4yYWQ4OGVjODIyOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12MS4wLnBsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtz
LXJlcG9ydC12MS4wLnBsCkBAIC0yOSw5ICsyOSw5IEBAIHVzZSB3YXJuaW5nczsKIAogdXNlIEZp
bGU6OlNwZWM7CiB1c2UgRmluZEJpbjsKLXVzZSBsaWIgRmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5k
QmluOjpCaW4sICIuLiIpOwordXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46OkJp
biwgIi4uIiwgIi4uIik7CiB1c2UgVGVzdDo6TW9yZTsKLXVzZSBMb2FkQXNNb2R1bGUgcXcoUnVu
TGVha3MgcnVuLWxlYWtzKTsKK3VzZSB3ZWJraXRwZXJsOjpsZWFrcyBxdyhwYXJzZUxlYWtzT3V0
cHV0KTsKIAogbXkgQGlucHV0ID0gc3BsaXQoL1xuLywgPDxFT0YpOwogUHJvY2VzcyAxNjAyOiA4
NjY3MSBub2RlcyBtYWxsb2NlZCBmb3IgMTMyNjEgS0IKQEAgLTE2Miw3ICsxNjIsNyBAQCBFT0YK
ICAgfSwKIF07CiAKLW15ICRhY3R1YWxPdXRwdXQgPSBSdW5MZWFrczo6cGFyc2VMZWFrc091dHB1
dChAaW5wdXQpOworbXkgJGFjdHVhbE91dHB1dCA9IHBhcnNlTGVha3NPdXRwdXQoQGlucHV0KTsK
IAogcGxhbih0ZXN0cyA9PiAxKTsKIGlzX2RlZXBseSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRP
dXRwdXQsICJsZWFrcyBSZXBvcnQgVmVyc2lvbiAxLjAgLSBubyBjYWxsIHN0YWNrIik7CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1s
ZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxl
YWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQtdjIuMC1uZXcucGwKaW5kZXggMDZiYzU4ZDBl
MDljLi5hMzgxN2U2ODA5OTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW5ldy5wbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHBlcmwvcnVuLWxlYWtzX3VuaXR0ZXN0L3J1bi1sZWFrcy1yZXBvcnQt
djIuMC1uZXcucGwKQEAgLTMwLDkgKzMwLDkgQEAgdXNlIHdhcm5pbmdzOwogCiB1c2UgRmlsZTo6
U3BlYzsKIHVzZSBGaW5kQmluOwotdXNlIGxpYiBGaWxlOjpTcGVjLT5jYXRkaXIoJEZpbmRCaW46
OkJpbiwgIi4uIik7Cit1c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAi
Li4iLCAiLi4iKTsKIHVzZSBUZXN0OjpNb3JlOwotdXNlIExvYWRBc01vZHVsZSBxdyhSdW5MZWFr
cyBydW4tbGVha3MpOwordXNlIHdlYmtpdHBlcmw6OmxlYWtzIHF3KHBhcnNlTGVha3NPdXRwdXQp
OwogCiBteSBAaW5wdXQgPSBzcGxpdCgvXG4vLCA8PEVPRik7CiBQcm9jZXNzOiAgICAgICAgIER1
bXBSZW5kZXJUcmVlIFsyOTkwM10KQEAgLTE2OCw3ICsxNjgsNyBAQCBFT0YKICAgfSwKIF07CiAK
LW15ICRhY3R1YWxPdXRwdXQgPSBSdW5MZWFrczo6cGFyc2VMZWFrc091dHB1dChAaW5wdXQpOwor
bXkgJGFjdHVhbE91dHB1dCA9IHBhcnNlTGVha3NPdXRwdXQoQGlucHV0KTsKIAogcGxhbih0ZXN0
cyA9PiAxKTsKIGlzX2RlZXBseSgkYWN0dWFsT3V0cHV0LCAkZXhwZWN0ZWRPdXRwdXQsICJsZWFr
cyBSZXBvcnQgVmVyc2lvbiAyLjAgKG5ldykiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5w
bCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9ydW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtz
LXJlcG9ydC12Mi4wLW9sZC5wbAppbmRleCA2NmY5YWQzNTYzMWUuLjIwMmRjMzFkNGQwMCAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL3J1bi1sZWFrc191bml0dGVzdC9ydW4t
bGVha3MtcmVwb3J0LXYyLjAtb2xkLnBsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9y
dW4tbGVha3NfdW5pdHRlc3QvcnVuLWxlYWtzLXJlcG9ydC12Mi4wLW9sZC5wbApAQCAtMzAsOSAr
MzAsOSBAQCB1c2Ugd2FybmluZ3M7CiAKIHVzZSBGaWxlOjpTcGVjOwogdXNlIEZpbmRCaW47Ci11
c2UgbGliIEZpbGU6OlNwZWMtPmNhdGRpcigkRmluZEJpbjo6QmluLCAiLi4iKTsKK3VzZSBsaWIg
RmlsZTo6U3BlYy0+Y2F0ZGlyKCRGaW5kQmluOjpCaW4sICIuLiIsICIuLiIpOwogdXNlIFRlc3Q6
Ok1vcmU7Ci11c2UgTG9hZEFzTW9kdWxlIHF3KFJ1bkxlYWtzIHJ1bi1sZWFrcyk7Cit1c2Ugd2Vi
a2l0cGVybDo6bGVha3MgcXcocGFyc2VMZWFrc091dHB1dCk7CiAKIG15IEBpbnB1dCA9IHNwbGl0
KC9cbi8sIDw8RU9GKTsKIGxlYWtzIFJlcG9ydCBWZXJzaW9uOiAgMi4wCkBAIC0xMTgsNyArMTE4
LDcgQEAgRU9GCiAgIH0sCiBdOwogCi1teSAkYWN0dWFsT3V0cHV0ID0gUnVuTGVha3M6OnBhcnNl
TGVha3NPdXRwdXQoQGlucHV0KTsKK215ICRhY3R1YWxPdXRwdXQgPSBwYXJzZUxlYWtzT3V0cHV0
KEBpbnB1dCk7CiAKIHBsYW4odGVzdHMgPT4gMSk7CiBpc19kZWVwbHkoJGFjdHVhbE91dHB1dCwg
JGV4cGVjdGVkT3V0cHV0LCAibGVha3MgUmVwb3J0IFZlcnNpb24gMi4wIChvbGQpIik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>