<?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>40048</bug_id>
          
          <creation_ts>2010-06-02 02:33:36 -0700</creation_ts>
          <short_desc>Make HTML5Lexer go fast</short_desc>
          <delta_ts>2010-06-04 23:58:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>39259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>233165</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-02 02:33:36 -0700</bug_when>
    <thetext>Make HTML5Lexer go fast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233167</commentid>
    <comment_count>1</comment_count>
      <attachid>57638</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-02 02:35:16 -0700</bug_when>
    <thetext>Created attachment 57638
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233601</commentid>
    <comment_count>2</comment_count>
      <attachid>57733</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-02 21:43:03 -0700</bug_when>
    <thetext>Created attachment 57733
more work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233637</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-03 00:08:01 -0700</bug_when>
    <thetext>Looks like ~1% speedup.  I was hoping for more.  I still think it&apos;s worth doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233650</commentid>
    <comment_count>4</comment_count>
      <attachid>57742</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-03 00:50:31 -0700</bug_when>
    <thetext>Created attachment 57742
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233652</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-03 00:52:07 -0700</bug_when>
    <thetext>Attachment 57742 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/html/HTML5Lexer.cpp:357:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233665</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-03 01:35:58 -0700</bug_when>
    <thetext>Attachment 57742 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/3045014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234081</commentid>
    <comment_count>7</comment_count>
      <attachid>57742</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-04 00:33:34 -0700</bug_when>
    <thetext>Comment on attachment 57742
Patch

I can&apos;t really review a change this large in depth.  But I&apos;ll give some comments and we should talk more in person.

WebCore/html/HTML5Lexer.cpp:346
 +  #define BEGIN_STATE_MAP()                                                  \
Why does this need to be a macro?

WebCore/html/HTML5Lexer.cpp:353
 +  #define END_STATE() ASSERT_NOT_REACHED(); break;
I think instead of using END_STATE we should just use blocks { }

WebCore/html/HTML5Lexer.cpp:420
 +          if (cc == &apos;&amp;&apos;)
If we didn&apos;t change the indent in this change it would be easier to read.

WebCore/html/HTML5Lexer.cpp:428
 +              ADVANCE_TO(TagOpenState);
Seems we could do all the ADVANCE_TO search/replace in a separate change to minimize this diff.

I think this is great.  It just needs to be done in smaller pieces if you want more substantial comments.

I like the idea of using macros.  I like the idea of using gotos.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234090</commentid>
    <comment_count>8</comment_count>
      <attachid>57850</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-04 00:52:26 -0700</bug_when>
    <thetext>Created attachment 57850
Diff w/o changing indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234246</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 09:32:47 -0700</bug_when>
    <thetext>&gt; WebCore/html/HTML5Lexer.cpp:346
&gt;  +  #define BEGIN_STATE_MAP()                                                  \
&gt; Why does this need to be a macro?

I just thought it was more balanced, but we don&apos;t need to use a macro here.

&gt; WebCore/html/HTML5Lexer.cpp:353
&gt;  +  #define END_STATE() ASSERT_NOT_REACHED(); break;
&gt; I think instead of using END_STATE we should just use blocks { }

Using blocks seems independent of whether we use END_STATE.  We still want to assert that we don&apos;t ever fall through.

&gt; WebCore/html/HTML5Lexer.cpp:420
&gt;  +          if (cc == &apos;&amp;&apos;)
&gt; If we didn&apos;t change the indent in this change it would be easier to read.

Thanks for uploading a diff with a different indent.

&gt; WebCore/html/HTML5Lexer.cpp:428
&gt;  +              ADVANCE_TO(TagOpenState);
&gt; Seems we could do all the ADVANCE_TO search/replace in a separate change to minimize this diff.

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234319</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 12:06:29 -0700</bug_when>
    <thetext>Committed r60694: &lt;http://trac.webkit.org/changeset/60694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234329</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 12:19:53 -0700</bug_when>
    <thetext>Committed r60696: &lt;http://trac.webkit.org/changeset/60696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234334</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 12:30:22 -0700</bug_when>
    <thetext>Committed r60697: &lt;http://trac.webkit.org/changeset/60697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234337</commentid>
    <comment_count>13</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 12:38:45 -0700</bug_when>
    <thetext>Committed r60699: &lt;http://trac.webkit.org/changeset/60699&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234341</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 12:44:38 -0700</bug_when>
    <thetext>Committed r60701: &lt;http://trac.webkit.org/changeset/60701&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234347</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 12:54:45 -0700</bug_when>
    <thetext>Committed r60702: &lt;http://trac.webkit.org/changeset/60702&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234349</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 13:00:54 -0700</bug_when>
    <thetext>Committed r60703: &lt;http://trac.webkit.org/changeset/60703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234352</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 13:06:33 -0700</bug_when>
    <thetext>Committed r60704: &lt;http://trac.webkit.org/changeset/60704&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234399</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 14:56:54 -0700</bug_when>
    <thetext>Committed r60711: &lt;http://trac.webkit.org/changeset/60711&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234400</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 15:12:51 -0700</bug_when>
    <thetext>Committed r60712: &lt;http://trac.webkit.org/changeset/60712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234403</commentid>
    <comment_count>20</comment_count>
      <attachid>57921</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 15:24:54 -0700</bug_when>
    <thetext>Created attachment 57921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234404</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 15:25:45 -0700</bug_when>
    <thetext>Ok, after landing like a billion wind-up patches, this patch should hopefully be reviewable now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234407</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-04 15:58:17 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60712 might have broken GTK Linux 32-bit Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/60712
http://trac.webkit.org/changeset/60713
http://trac.webkit.org/changeset/60709
http://trac.webkit.org/changeset/60710
http://trac.webkit.org/changeset/60711</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234410</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-04 15:58:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/60711 might have broken GTK Linux 32-bit Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/60712
http://trac.webkit.org/changeset/60713
http://trac.webkit.org/changeset/60709
http://trac.webkit.org/changeset/60710
http://trac.webkit.org/changeset/60711</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234528</commentid>
    <comment_count>24</comment_count>
      <attachid>57921</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-04 22:24:50 -0700</bug_when>
    <thetext>Comment on attachment 57921
Patch

WebCore/html/HTML5Lexer.cpp:323
 +  #define RECONSUME_IN(StateName)                                            \
Intentionally changing which column the \ is in?

WebCore/html/HTML5Lexer.cpp:327
 +          goto StateName;                                                    \
And the case of StateName?

WebCore/html/HTML5Lexer.cpp:334
 +          if (source.isEmpty())                                              \
Why does this check go after the advance and not before? (aka, after processing)?

WebCore/html/HTML5Lexer.cpp:399
 +      if (source.isEmpty())
You write this check in two places.  Should it be a macro?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234529</commentid>
    <comment_count>25</comment_count>
      <attachid>57921</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-04 22:26:28 -0700</bug_when>
    <thetext>Comment on attachment 57921
Patch

Would like an answer to the &quot;why does the isEmpty check go there&quot; question before landing, but in general looks good!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234556</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 23:29:40 -0700</bug_when>
    <thetext>&gt; WebCore/html/HTML5Lexer.cpp:323
&gt;  +  #define RECONSUME_IN(StateName)                                            \
&gt; Intentionally changing which column the \ is in?

Now, that&apos;s an artifact of merging back in code from the ASAD patch.

&gt; WebCore/html/HTML5Lexer.cpp:327
&gt;  +          goto StateName;                                                    \
&gt; And the case of StateName?

Same here.  I&apos;ll change this one back.

&gt; WebCore/html/HTML5Lexer.cpp:334
&gt;  +          if (source.isEmpty())                                              \
&gt; Why does this check go after the advance and not before? (aka, after processing)?

We process the lookahead character and then advance when we&apos;re done &quot;consuming&quot; it.  If we&apos;ve just advanced over the last character of the string, there&apos;s no lookahead character and nothing left to do, we so we return.

The spec has a mix of when it decides to consume the lookahead character.  I went with this design because it&apos;s what the PreloadScanner does.  Now that we&apos;re using gotos instead of a jump table, we can do this verbatim the way the spec works, if you like, which would mean having a CONSUME macro at the beginning of most (but not all) states.

I don&apos;t think there&apos;s a big difference one way or the other.  We might go with whatever is faster.

&gt; WebCore/html/HTML5Lexer.cpp:399
&gt;  +      if (source.isEmpty())
&gt; You write this check in two places.  Should it be a macro?

Maybe.  It tried to keep the macros under control, but we can proliferate them more if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234558</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-04 23:58:08 -0700</bug_when>
    <thetext>Committed r60739: &lt;http://trac.webkit.org/changeset/60739&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57638</attachid>
            <date>2010-06-02 02:35:16 -0700</date>
            <delta_ts>2010-06-02 21:42:59 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-40048-20100602023515.patch</filename>
            <type>text/plain</type>
            <size>96244</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MjhhMWYyMDkwNGE0NGQwMGNhN2ZiMDM0MmQ2MDY5MGEyMDY4ZDg3My4uNGM0ZTU4MWMxYjM2ZWNl
YzIwOWYzOWU4YzMwZTNhODUyZmRhYWQzZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wNi0wMiAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgSFRNTDVMZXhlciBnbyBmYXN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDA0OAorCisgICAgICAgIE5v
IG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogaHRtbC9IVE1MNUxleGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUw1TGV4ZXI6OnByb2Nlc3NFbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhlcjo6
bmV4dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6Om1haW5Mb29wKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6OmVtaXRDdXJyZW50VG9rZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTDVMZXhlcjo6c2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4pOgor
ICAgICAgICAqIGh0bWwvSFRNTDVMZXhlci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhl
cjo6bmV4dCk6CisKIDIwMTAtMDUtMzEgIEx5b24gQ2hlbiAgPGxpYWNoZW5AcmltLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MNUxleGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmNwcAppbmRleCAwOThh
ZTUzZGRlNGI0N2Y5YmVmMTE5NTE2OTc2YzMxN2Q4YTlkN2ZjLi40MTRlYjcyOTM1ZDI1ZWM5MzQ1
NTMyMzU3NTk0NzEwMzIzOGM2NDVhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhl
ci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwCkBAIC0xNTUsNyArMTU1LDYg
QEAgdm9pZCBIVE1MNUxleGVyOjpyZXNldCgpCiAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAg
ICBtX3Rva2VuID0gMDsKICAgICBtX3NraXBMZWFkaW5nTmV3TGluZUZvckxpc3RpbmcgPSBmYWxz
ZTsKLSAgICBtX2VtaXRQZW5kaW5nID0gZmFsc2U7CiAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENo
YXJhY3RlciA9ICdcMCc7CiB9CiAKQEAgLTMwNCwxMCArMzAzLDExIEBAIHVuc2lnbmVkIEhUTUw1
TGV4ZXI6OmNvbnN1bWVFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVu
b3VnaENoYXJhCiAgICAgcmV0dXJuIDA7CiB9CiAKLWlubGluZSBib29sIEhUTUw1TGV4ZXI6OnBy
b2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UpCitpbmxpbmUgYm9vbCBIVE1MNUxl
eGVyOjpwcm9jZXNzRW50aXR5KFVDaGFyIGNjKQogeworICAgIG1fc291cmNlLT5wdXNoKGNjKTsK
ICAgICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCB2YWx1
ZSA9IGNvbnN1bWVFbnRpdHkoc291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKKyAgICB1bnNp
Z25lZCB2YWx1ZSA9IGNvbnN1bWVFbnRpdHkoKm1fc291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJz
KTsKICAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGlmICghdmFsdWUpCkBAIC0zMjMsNiArMzIzLDcgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0
VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgIC8v
IHdpdGggdGhlIHNhbWUgdG9rZW4gc28gd2UgY2FuIGZpbmlzaCBpdC4KICAgICBBU1NFUlQoIW1f
dG9rZW4gfHwgbV90b2tlbiA9PSAmdG9rZW4gfHwgdG9rZW4udHlwZSgpID09IEhUTUw1VG9rZW46
OlVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdG9rZW4gPSAmdG9rZW47CisgICAgbV9zb3VyY2UgPSAm
c291cmNlOwogCiAgICAgaWYgKCFtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkgJiYgIWlz
RW5kVGFnQnVmZmVyaW5nU3RhdGUobV9zdGF0ZSkpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIGNhbGwgZmx1c2hCdWZmZXJlZEVuZFRhZygpLgpAQCAtMzQwLDExODMgKzM0MSwxMTkw
IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBI
VE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJ1x4MEEn
KTsKICAgICBtX3NraXBMZWFkaW5nTmV3TGluZUZvckxpc3RpbmcgPSBmYWxzZTsKIAorICAgIHJl
dHVybiBtYWluTG9vcCgpOworfQorCisjZGVmaW5lIEJFR0lOX1NUQVRFX01BUCgpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgVUNoYXIgY2Mg
PSBuZXh0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgaWYgKCFjYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBmYWxzZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3dp
dGNoIChtX3N0YXRlKSB7CisKKyNkZWZpbmUgQkVHSU5fU1RBVEUoU3RhdGVOYW1lKSBjYXNlIFN0
YXRlTmFtZTogU3RhdGVOYW1lOgorI2RlZmluZSBFTkRfU1RBVEUoKSBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgYnJlYWs7CisjZGVmaW5lIEVORF9TVEFURV9NQVAoKSB9CisKKyNkZWZpbmUgUkVDT05T
VU1FX0lOKFN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlTmFtZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
Z290byBTdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBBRFZBTkNFX1RPKFN0
YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gU3RhdGVOYW1lOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjYyA9IG5l
eHQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBpZiAoIWNjKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRC
dWZmZXJlZENoYXJhY3RlclRva2VuKCk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBn
b3RvIFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIEVNSVRfQU5EX1JFU1VN
RV9JTihTdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZU5hbWU7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVtaXRDdXJy
ZW50VG9rZW4oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
X0ZMVVNIX0JVRkZFUkVEX0VORF9UQUcoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQVNTRVJUKG1fdG9rZW4t
PnR5cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIgfHwgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICAgIG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2VuOjpVbmluaXRpYWxpemVk
KTsgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRv
a2VuOjpDaGFyYWN0ZXIpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcobV9idWZmZXJlZEVuZFRhZ05hbWUpOyAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xl
YXIoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworI2RlZmluZSBGTFVTSF9BTkRfQURWQU5DRV9UTyhTdGF0ZU5hbWUpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBtX3N0YXRlID0gU3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBfRkxVU0hfQlVGRkVSRURfRU5EX1RBRygpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBBRFZBTkNFX1RP
KFN0YXRlTmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIEZMVVNIX0VNSVRfQU5EX1JFU1VNRV9J
TihTdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9GTFVTSF9CVUZGRVJFRF9F
TkRfVEFHKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK2Jvb2wgSFRNTDVMZXhlcjo6
bWFpbkxvb3AoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBkYXNoRGFzaFN0
cmluZywgKCItLSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG9jdHlwZVN0
cmluZywgKCJkb2N0eXBlIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBwdWJs
aWNTdHJpbmcsICgicHVibGljIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBz
eXN0ZW1TdHJpbmcsICgic3lzdGVtIikpOworCiAgICAgLy8gU291cmNlOiBodHRwOi8vd3d3Lndo
YXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyN0b2tlbmlzYXRpb24wCi0gICAg
Ly8gRklYTUU6IFRoaXMgd2hpbGUgc2hvdWxkIHN0b3AgYXMgc29vbiBhcyB3ZSBoYXZlIGEgdG9r
ZW4gdG8gcmV0dXJuLgotICAgIHdoaWxlICghc291cmNlLmlzRW1wdHkoKSkgewotICAgICAgICBV
Q2hhciBjYyA9ICpzb3VyY2U7Ci0gICAgICAgIHN3aXRjaCAobV9zdGF0ZSkgewotICAgICAgICBj
YXNlIERhdGFTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICcmJykKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGU7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPCcpIHsKLSAgICAgICAgICAgICAgICBpZiAobV90b2tlbi0+dHlw
ZSgpID09IEhUTUw1VG9rZW46OkNoYXJhY3RlcikgewotICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBoYXZlIGEgYnVuY2ggb2YgY2hhcmFjdGVyIHRva2VucyBxdWV1ZWQgdXAgdGhhdCB3ZQotICAg
ICAgICAgICAgICAgICAgICAvLyBhcmUgZW1pdHRpbmcgbGF6aWx5IGhlcmUuCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gVGFnT3BlblN0YXRlOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlOiB7Ci0gICAgICAgICAg
ICBpZiAoIXByb2Nlc3NFbnRpdHkoc291cmNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hv
dWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAgICAgICAgICAgIG1fc3Rh
dGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIFJDREFUQVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJyYnKQotICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlOwotICAg
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBS
Q0RBVEFMZXNzVGhhblNpZ25TdGF0ZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQ2hhcmFjdGVyUmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZTogewotICAgICAgICAgICAg
aWYgKCFwcm9jZXNzRW50aXR5KHNvdXJjZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNob3Vs
ZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7Ci0gICAgICAgICAgICBtX3N0YXRl
ID0gUkNEQVRBU3RhdGU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIFJBV1RFWFRTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICc8JykKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhU3RhdGU6IHsKLSAgICAg
ICAgICAgIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERh
dGFMZXNzVGhhblNpZ25TdGF0ZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIEJFR0lOX1NUQVRFX01B
UCgpCisKKyAgICBCRUdJTl9TVEFURShEYXRhU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnJicp
CisgICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlKTsK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAgICAgICBpZiAobV90b2tlbi0+
dHlwZSgpID09IEhUTUw1VG9rZW46OkNoYXJhY3RlcikgeworICAgICAgICAgICAgICAgIC8vIFdl
IGhhdmUgYSBidW5jaCBvZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1cCB0aGF0IHdlCisgICAg
ICAgICAgICAgICAgLy8gYXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgorICAgICAgICAgICAgICAg
IG1fc291cmNlLT5wdXNoKGNjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnT3BlblN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURW
QU5DRV9UTyhEYXRhU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgUExBSU5URVhUU3Rh
dGU6IHsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJl
bmNlSW5EYXRhU3RhdGUpCisgICAgICAgIGlmICghcHJvY2Vzc0VudGl0eShjYykpCisgICAgICAg
ICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAg
UkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NU
QVRFKFJDREFUQVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJyYnKQorICAgICAgICAgICAgQURW
QU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlKTsKKyAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJzwnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFMZXNzVGhhblNpZ25T
dGF0ZSk7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBU3RhdGUpOworICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0
YXRlKQorICAgICAgICBpZiAoIXByb2Nlc3NFbnRpdHkoY2MpKQorICAgICAgICAgICAgcmV0dXJu
IHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIFJFQ09OU1VNRV9J
TihSQ0RBVEFTdGF0ZSk7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFJBV1RF
WFRTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8o
UkFXVEVYVExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW1p
dENoYXJhY3RlcihjYyk7CisgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVFN0YXRlKTsKKyAgICBF
TkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YVN0YXRlKQorICAgICAgICBp
ZiAoY2MgPT0gJzwnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhTGVzc1RoYW5T
aWduU3RhdGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsK
KyAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOworICAgIEVORF9TVEFURSgpCisK
KyAgICBCRUdJTl9TVEFURShQTEFJTlRFWFRTdGF0ZSkKKyAgICAgICAgZW1pdENoYXJhY3Rlcihj
Yyk7CisgICAgICAgIEFEVkFOQ0VfVE8oUExBSU5URVhUU3RhdGUpOworICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShUYWdPcGVuU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnIScp
CisgICAgICAgICAgICBBRFZBTkNFX1RPKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKTsKKyAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhFbmRUYWdP
cGVuU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Cisg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpblN0YXJ0VGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAg
ICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2Mg
Pj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5TdGFydFRh
ZyhjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJz8nKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAg
ICAgICAgICAgLy8gVGhlIHNwZWMgY29uc3VtZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGJlZm9y
ZSBzd2l0Y2hpbmcKKyAgICAgICAgICAgIC8vIHRvIHRoZSBib2d1cyBjb21tZW50IHN0YXRlLCBi
dXQgaXQncyBlYXNpZXIgdG8gaW1wbGVtZW50CisgICAgICAgICAgICAvLyBpZiB3ZSByZWNvbnN1
bWUgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLgorICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3Vz
Q29tbWVudFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBSRUNP
TlNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFRhZ09wZW5TdGF0
ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICchJykKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gTWFya3VwRGVjbGFyYXRpb25PcGVuU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9
PSAnLycpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEVuZFRhZ09wZW5TdGF0ZTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAg
ICBtX3Rva2VuLT5iZWdpblN0YXJ0VGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IFRhZ05hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0g
J2EnICYmIGNjIDw9ICd6JykgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luU3RhcnRU
YWcoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBUYWdOYW1lU3RhdGU7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICc/JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzQ29tbWVudFN0YXRlOwotICAg
ICAgICAgICAgICAgIC8vIFRoZSBzcGVjIGNvbnN1bWVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBi
ZWZvcmUgc3dpdGNoaW5nCi0gICAgICAgICAgICAgICAgLy8gdG8gdGhlIGJvZ3VzIGNvbW1lbnQg
c3RhdGUsIGJ1dCBpdCdzIGVhc2llciB0byBpbXBsZW1lbnQKLSAgICAgICAgICAgICAgICAvLyBp
ZiB3ZSByZWNvbnN1bWUgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLgotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAg
ICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJF
R0lOX1NUQVRFKEVuZFRhZ09wZW5TdGF0ZSkKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8
PSAnWicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKHRvTG93ZXJDYXNlKGNj
KSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAgbV90b2tlbi0+YmVn
aW5FbmRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJv
Z3VzQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEVuZFRhZ09wZW5TdGF0
ZTogewotICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBUYWdOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNj
ID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkVu
ZFRhZyhjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFRhZ05hbWVTdGF0ZTsKKyAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAg
IEJFR0lOX1NUQVRFKFRhZ05hbWVTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJy8nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUp
OworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNV
TUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICda
JykKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOworICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICAgICAgQURWQU5DRV9UTyhU
YWdOYW1lU3RhdGUpOworICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShSQ0RBVEFM
ZXNzVGhhblNpZ25TdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAg
bV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVk
RW5kVGFnTmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRU
YWdPcGVuU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cignPCcpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKFJDREFUQVN0YXRlKTsKKyAgICAgICAg
fQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShSQ0RBVEFFbmRUYWdPcGVuU3Rh
dGUpCisgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBt
X3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVu
ZFRhZyh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRU
YWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicp
IHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAg
ICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRB
RW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CisgICAgICAgIH0KKyAgICBFTkRfU1RBVEUoKQor
CisgICAgQkVHSU5fU1RBVEUoUkNEQVRBRW5kVGFnTmFtZVN0YXRlKQorICAgICAgICBpZiAoY2Mg
Pj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBw
ZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2Mp
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAgICBtX3Rl
bXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRh
ZyhjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdc
eDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7CisgICAgICAgICAgICAgICAgaWYg
KGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FE
VkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWco
KSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdT
dGFydFRhZ1N0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAg
ICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
RGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CisgICAgICAg
ICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAg
RkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVGFnTmFtZVN0YXRlOiB7Ci0gICAgICAgICAgICBp
ZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0g
JyAnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGU7
Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09
ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAn
QScgJiYgY2MgPD0gJ1onKQotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZSh0
b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvTmFtZShjYyk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBw
cm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
PCcpOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOworICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOworICAgICAgICAgICAgbV9i
dWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RB
VEFTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBSQ0RBVEFMZXNzVGhhblNpZ25TdGF0
ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICcvJykgewotICAgICAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRF
bmRUYWdOYW1lLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFJDREFUQUVu
ZFRhZ09wZW5TdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1p
dENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQ0RBVEFTdGF0ZTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgUkNEQVRBRW5kVGFnT3BlblN0YXRlOiB7Ci0g
ICAgICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgICAg
IG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgYWRkVG9Qb3Nz
aWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBS
Q0RBVEFFbmRUYWdOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAm
JiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQo
Y2MpOwotICAgICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBSQ0RBVEFFbmRUYWdOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAg
ICBlbWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFJDREFUQVN0
YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBSQ0RBVEFFbmRUYWdOYW1lU3RhdGU6
IHsKLSAgICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAg
ICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBhZGRU
b1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2Mp
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDkn
IHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9w
cmlhdGVFbmRUYWcoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNlbGZD
bG9zaW5nU3RhcnRUYWdTdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1heWJlRmx1c2hC
dWZmZXJlZEVuZFRhZygpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcignLycpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1f
dGVtcG9yYXJ5QnVmZmVyKTsKLSAgICAgICAgICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5j
bGVhcigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQ0RBVEFTdGF0ZTsKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgUkFXVEVYVExlc3NUaGFuU2lnblN0YXRlOiB7Ci0gICAgICAg
ICAgICBpZiAoY2MgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
Y2xlYXIoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNF
bXB0eSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkFXVEVYVEVuZFRhZ09wZW5TdGF0
ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
PCcpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQVdURVhUU3RhdGU7Ci0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIFJBV1RFWFRFbmRUYWdPcGVuU3RhdGU6IHsKLSAgICAgICAgICAg
IGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFn
KHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFJBV1RFWFRFbmRU
YWdOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAn
eicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAg
ICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBSQVdURVhURW5kVGFnTmFtZVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENo
YXJhY3RlcignLycpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQVdURVhUU3RhdGU7Ci0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFJBV1RFWFRFbmRUYWdOYW1lU3RhdGU6IHsKLSAg
ICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAg
bV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBhZGRUb1Bvc3Np
YmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49
ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5h
cHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNj
ID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVF
bmRUYWcoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNlbGZDbG9zaW5n
U3RhcnRUYWdTdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1heWJlRmx1c2hCdWZmZXJl
ZEVuZFRhZygpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAg
bWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
LycpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9y
YXJ5QnVmZmVyKTsKLSAgICAgICAgICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigp
OwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQVdURVhUU3RhdGU7Ci0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFNjcmlwdERhdGFMZXNzVGhhblNpZ25TdGF0ZTogewotICAgICAgICAg
ICAgaWYgKGNjID09ICcvJykgewotICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNs
ZWFyKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1w
dHkoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFbmRUYWdPcGVuU3Rh
dGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICchJykgewotICAgICAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCchJyk7
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVTdGFydFN0YXRlOwot
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFTdGF0ZTsKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUVuZFRhZ09wZW5TdGF0ZTogewotICAgICAgICAg
ICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBv
cmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRU
YWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0
YUVuZFRhZ05hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNj
IDw9ICd6JykgewotICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7
Ci0gICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAg
ICBlbWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERh
dGFTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUVuZFRhZ05h
bWVTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAg
ICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAg
ICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewotICAgICAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVu
ZFRhZyhjYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChjYyA9
PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykgewotICAgICAgICAgICAgICAgICAgICBpZiAo
aXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5
YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
Jz4nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFy
YWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwotICAgICAgICAgICAgICAgIG1fYnVmZmVyZWRFbmRU
YWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFTdGF0
ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3Rh
dGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2Fw
ZVN0YXJ0RGFzaFN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBT
Y3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAn
LScpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRXNjYXBlZFN0YXRlOiB7Ci0gICAg
ICAgICAgICBpZiAoY2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rlcihj
Yyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkRGFzaFN0YXRl
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGU7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGU6IHsKLSAgICAgICAgICAg
IGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGU7Ci0gICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGU6IHsK
LSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cihjYyk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGU7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFu
U2lnblN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy8nKSB7Ci0gICAgICAgICAgICAg
ICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9i
dWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAg
ICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAg
ICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBtX3RlbXBv
cmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHRE
YXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBT
Y3JpcHREYXRhRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3Jp
cHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID49ICdB
JyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBl
bmQoY2MpOwotICAgICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2Uo
Y2MpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdO
YW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicp
IHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAg
ICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0
YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUVz
Y2FwZWRFbmRUYWdOYW1lU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2Mg
PD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsK
LSAgICAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAg
ICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIGFk
ZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwg
Y2MgPT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFn
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVO
YW1lU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRU
YWcoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0
ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRl
OwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAg
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKLSAgICAgICAgICAgICAgICBt
X2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBT
Y3JpcHREYXRhRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3Jp
cHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdc
eDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJyB8fCBjYyA9
PSAnLycgfHwgY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7
Ci0gICAgICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUJ1ZmZlcklzKHNjcmlwdFRhZy5sb2NhbE5h
bWUoKSkpCi0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNj
YXBlZFN0YXRlOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNj
ID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2Uo
Y2MpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jykgewot
ICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlOiB7Ci0gICAgICAgICAg
ICBpZiAoY2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRl
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpIHsKLSAgICAgICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURv
dWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAo
Y2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7Ci0gICAgICAgICAgICAgICAgZW1p
dENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFEb3Vi
bGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBT
Y3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZTog
ewotICAgICAgICAgICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKGNjKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc8JykgewotICAgICAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHRE
YXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlOworICAgIEVORF9TVEFURSgpCisKKyAg
ICBCRUdJTl9TVEFURShSQVdURVhUTGVzc1RoYW5TaWduU3RhdGUpCisgICAgICAgIGlmIChjYyA9
PSAnLycpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CisgICAgICAg
ICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ09wZW5TdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4o
UkFXVEVYVFN0YXRlKTsKKyAgICAgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9T
VEFURShSQVdURVhURW5kVGFnT3BlblN0YXRlKQorICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNj
IDw9ICdaJykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAg
ICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZm
ZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOworICAg
ICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQVdURVhUU3RhdGUpOwor
ICAgICAgICB9CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRFbmRU
YWdOYW1lU3RhdGUpCisgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAg
ICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Q
b3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhS
QVdURVhURW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYg
Y2MgPD0gJ3onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwor
ICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7CisgICAgICAgICAgICBBRFZBTkNF
X1RPKFJBV1RFWFRFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNj
ID09ICcgJykgeworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisg
ICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5h
bWVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykgeworICAgICAgICAg
ICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZM
VVNIX0FORF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
Y2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhU3RhdGU7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlOworICAgICAg
ICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAg
IEZMVVNIX0VNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1Ro
YW5TaWduU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZl
ci5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNj
YXBlRW5kU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGU6IHsKLSAgICAgICAgICAgIGlm
IChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAn
ICcgfHwgY2MgPT0gJy8nIHx8IGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoY2MpOwotICAgICAgICAgICAgICAgIGlmICh0ZW1wb3JhcnlCdWZmZXJJcyhzY3JpcHRU
YWcubG9jYWxOYW1lKCkpKQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0
YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAgZW1pdENo
YXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRv
TG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8
PSAneicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZTsK
LSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlOiB7
Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAn
XHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTZWxmQ2xvc2lu
Z1N0YXJ0VGFnU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAg
ICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICda
JykgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwotICAgICAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykp
OwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVOYW1lU3RhdGU7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wn
JyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nKQotICAgICAgICAgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwot
ICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKCcvJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3Rlciht
X3RlbXBvcmFyeUJ1ZmZlcik7CisgICAgICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVh
cigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKFJBV1RFWFRTdGF0ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBBdHRyaWJ1dGVOYW1lU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9
PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlOwotICAgICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTZWxm
Q2xvc2luZ1N0YXJ0VGFnU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPScpCi0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGU7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVu
dFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykKLSAgICAgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8
fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nKQotICAgICAgICAgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShj
Yyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZU5hbWVTdGF0ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBZnRlckF0dHJpYnV0ZU5h
bWVTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScg
fHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
U2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz0n
KQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlOwot
ICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1
cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAg
ICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKLSAgICAgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQXR0cmlidXRlTmFtZVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0gJzwnKQot
ICAgICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1f
dG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0
ZU5hbWVTdGF0ZTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0
YUxlc3NUaGFuU2lnblN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAg
ICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVy
ZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFFbmRUYWdPcGVuU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICchJykgeworICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOworICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
IScpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlU3RhcnRTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgfQorICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRlKQor
ICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90ZW1w
b3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWco
dG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRh
Z05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jykg
eworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAg
IGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAg
ICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgICAgICB9CisgICAgRU5EX1NU
QVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGUpCisgICAg
ICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xv
d2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFt
ZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Cisg
ICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRk
VG9Qb3NzaWJsZUVuZFRhZyhjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFF
bmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGNjID09
ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgewor
ICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAg
ICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgICAgIGlmIChp
c0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZB
TkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICc+JykgeworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkp
CisgICAgICAgICAgICAgICAgICAgIEZMVVNIX0VNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUp
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsK
KyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKKyAgICAgICAgICAgIG1fYnVmZmVy
ZWRFbmRUYWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0
YVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3Rh
dGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNj
ID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnIicpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJp
YnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAn
JicpIHsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0
YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnXCcnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVWYWx1ZVNpbmds
ZVF1b3RlZFN0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAg
ICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRv
a2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICc8JyB8fCBjYyA9PSAnPScgfHwg
Y2MgPT0gJ2AnKQotICAgICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RB
VEUoU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnLScpIHsK
KyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgIEVORF9TVEFURSgpCisKKyAg
ICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpCisgICAgICAgIGlm
IChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZFN0YXRlKQorICAg
ICAgICBpZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpOworICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2Nh
cGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQXR0cmlidXRlVmFsdWVEb3VibGVR
dW90ZWRTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICciJykKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlOwotICAgICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENoYXJhY3Rl
clJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZTsKLSAgICAgICAgICAgICAgICBtX2FkZGl0
aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJyInOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisg
ICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpCisgICAgICAgIGlmIChj
YyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2Fw
ZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZW1pdENo
YXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3Rh
dGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRT
dGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdcJycpCi0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGNjID09ICcmJykgewotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJSZWZl
cmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGU7Ci0gICAgICAgICAgICAgICAgbV9hZGRpdGlvbmFs
QWxsb3dlZENoYXJhY3RlciA9ICdcJyc7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBC
RUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpCisgICAgICAgIGlmIChj
YyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc8JykgeworICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2Nh
cGVkTGVzc1RoYW5TaWduU3RhdGU7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFF
c2NhcGVkRGFzaERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Cisg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZTogewot
ICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4
MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmli
dXRlTmFtZVN0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0
ZTsKLSAgICAgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJz4nOwor
ICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZExlc3NU
aGFuU2lnblN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICBtX3Rl
bXBvcmFyeUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRFbmRU
YWdOYW1lLmlzRW1wdHkoKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2Nh
cGVkRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2Mg
PD0gJ1onKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7
CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUp
OworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwor
ICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRh
RXNjYXBlZFN0YXRlKTsKKyAgICAgICAgfQorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9T
VEFURShTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZSkKKyAgICAgICAgaWYgKGNjID49
ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVu
ZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CisgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgYWRkVG9Qb3Nz
aWJsZUVuZFRhZyhjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVk
RW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgfQorICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVT
dGF0ZSkKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAg
IG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxl
RW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScg
JiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2Mp
OworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7CisgICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09
ICdceDBDJyB8fCBjYyA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0
ZUVuZFRhZygpKQorICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhCZWZv
cmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAgICAg
ICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUp
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBl
bWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBj
YyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScgfHwgY2MgPT0gJ2AnKQotICAgICAg
ICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJv
cHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZMVVNIX0VNSVRfQU5EX1JFU1VN
RV9JTihEYXRhU3RhdGUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKKyAgICAg
ICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBSRUNPTlNV
TUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBD
aGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGU6IHsKLSAgICAgICAgICAgIGJv
b2wgbm90RW5vdWdoQ2hhcmFjdGVycyA9IGZhbHNlOwotICAgICAgICAgICAgdW5zaWduZWQgdmFs
dWUgPSBjb25zdW1lRW50aXR5KHNvdXJjZSwgbm90RW5vdWdoQ2hhcmFjdGVycyk7Ci0gICAgICAg
ICAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICByZXR1cm4gc2hv
dWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAgICAgICAgICAgIGlmICgh
dmFsdWUpCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSgn
JicpOwotICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPCAweEZGRkYpCi0gICAgICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh2YWx1ZSk7Ci0gICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKFUx
Nl9MRUFEKHZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1
dGVWYWx1ZShVMTZfVFJBSUwodmFsdWUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8v
IFdlJ3JlIHN1cHBvc2VkIHRvIHN3aXRjaCBiYWNrIHRvIHRoZSBhdHRyaWJ1dGUgdmFsdWUgc3Rh
dGUgdGhhdAotICAgICAgICAgICAgLy8gd2Ugd2VyZSBpbiB3aGVuIHdlIHdlcmUgc3dpdGNoZWQg
aW50byB0aGlzIHN0YXRlLiAgUmF0aGVyIHRoYW4KLSAgICAgICAgICAgIC8vIGtlZXBpbmcgdHJh
Y2sgb2YgdGhpcyBleHBsaWN0bHksIHdlIG9ic2VydmUgdGhhdCB0aGUgcHJldmlvdXMKLSAgICAg
ICAgICAgIC8vIHN0YXRlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IG1fYWRkaXRpb25hbEFsbG93ZWRD
aGFyYWN0ZXIuCi0gICAgICAgICAgICBpZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9
PSAnIicpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVv
dGVkU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFj
dGVyID09ICdcJycpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZVZhbHVlU2lu
Z2xlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX2FkZGl0aW9uYWxBbGxvd2Vk
Q2hhcmFjdGVyID09ICc+JykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlVmFs
dWVVbnF1b3RlZFN0YXRlOworICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3Jp
cHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8
fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJyB8fCBjYyA9PSAnLycg
fHwgY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAg
ICAgIGlmICh0ZW1wb3JhcnlCdWZmZXJJcyhzY3JpcHRUYWcubG9jYWxOYW1lKCkpKQorICAgICAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyQXR0cmlidXRl
VmFsdWVRdW90ZWRTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9
PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJy8nKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTZWxmQ2xvc2luZ1N0YXJ0VGFn
U3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAg
ICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0
ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlOwot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8g
RklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZTogewotICAgICAgICAgICAg
aWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
ICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5h
bWVTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0
b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91Ymxl
RXNjYXBlU3RhcnRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9
ICd6JykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBtX3Rl
bXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
UkVDT05TVU1FX0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAgIEVORF9TVEFURSgpCisK
KyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKQorICAgICAgICBp
ZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoU3RhdGUpOworICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc8JykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5T
aWduU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3Rlcihj
Yyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUp
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQm9ndXNDb21tZW50U3RhdGU6IHsKLSAgICAgICAg
ICAgIG1fdG9rZW4tPmJlZ2luQ29tbWVudCgpOwotICAgICAgICAgICAgd2hpbGUgKCFzb3VyY2Uu
aXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgY2MgPSAqc291cmNlOwotICAgICAgICAgICAg
ICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICAgICAgc291
cmNlLmFkdmFuY2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVtaXRDdXJyZW50VG9r
ZW4oKTsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICBpZiAo
c291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisK
KyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZSkKKyAgICAg
ICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAg
ICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRM
ZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hh
cmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBNYXJrdXBEZWNsYXJhdGlvbk9wZW5T
dGF0ZTogewotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRhc2hEYXNo
U3RyaW5nLCAoIi0tIikpOwotICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGRvY3R5cGVTdHJpbmcsICgiZG9jdHlwZSIpKTsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLScp
IHsKLSAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1
bHQgPSBzb3VyY2UubG9va0FoZWFkKGRhc2hEYXNoU3RyaW5nKTsKLSAgICAgICAgICAgICAgICBp
ZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAg
ICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsKLSAgICAgICAgICAgICAgICAgICAg
c291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsKLSAgICAgICAgICAgICAgICAgICAgbV90b2tl
bi0+YmVnaW5Db21tZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50
U3RhcnRTdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0
ZXJzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFj
dGVyVG9rZW4oc291cmNlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ0QnIHx8IGNj
ID09ICdkJykgewotICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVz
dWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UoZG9jdHlwZVN0cmluZyk7
Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNo
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nh
c2Uoc291cmNlLCAiZG9jdHlwZSIpOwotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9D
VFlQRVN0YXRlOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3Rl
cnMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0
ZXJUb2tlbihzb3VyY2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSdyZSBzdGlsbCBtaXNzaW5nIHRoZSBiaXRz
IGFib3V0IHRoZSBpbnNlcnRpb24gbW9kZSBiZWluZyBpbiBmb3JlaWduIGNvbnRlbnQ6Ci0gICAg
ICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNtYXJrdXAtZGVjbGFyYXRpb24tb3Blbi1z
dGF0ZQotICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgIG1fc3RhdGUg
PSBCb2d1c0NvbW1lbnRTdGF0ZTsKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5f
U1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKQorICAgICAgICBpZiAo
Y2MgPT0gJy0nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChjYyA9PSAnPCcpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2Mp
OworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFu
U2lnblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3Rh
dGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Cisg
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOwogICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgQ29tbWVudFN0YXJ0U3RhdGU6IHsKLSAgICAgICAgICAgIGlm
IChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGFydERhc2hT
dGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RB
VEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSkKKyAgICAgICAgaWYg
KGNjID09ICcvJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAg
ICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3Jp
cHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICBFTkRfU1RB
VEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKQor
ICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycg
fHwgY2MgPT0gJyAnIHx8IGNjID09ICcvJyB8fCBjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUJ1ZmZlcklzKHNjcmlw
dFRhZy5sb2NhbE5hbWUoKSkpCisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBRFZBTkNF
X1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNj
ID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwor
ICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRvTG93ZXJDYXNlKGNjKSk7Cisg
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQo
Y2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3Rh
dGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRh
RG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUo
QmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNj
ID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURW
QU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9
PSAnLycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7
CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1on
KSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBj
YyA9PSAnPScpCiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
ICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFT
dGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudFN0YXRl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJp
YnV0ZSgpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQot
ICAgICAgICBjYXNlIENvbW1lbnRTdGFydERhc2hTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNj
ID09ICctJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVuZFN0YXRlOwotICAg
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBdHRyaWJ1
dGVOYW1lU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8
IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVy
QXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQorICAgICAg
ICAgICAgQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICBlbHNl
IGlmIChjYyA9PSAnPScpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZVZh
bHVlU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlU
X0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYm
IGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1l
KHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNj
ID09ICdcJycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9JykKICAgICAgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBDb21tZW50U3RhdGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTog
SGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQ29tbWVudFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy0nKQotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50RW5kRGFzaFN0YXRlOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29tbWVudEVuZERhc2hTdGF0ZTogewotICAgICAg
ICAgICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVu
ZFN0YXRlOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21t
ZW50KGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudFN0YXRlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFt
ZShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBDb21tZW50RW5kU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChj
YyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7
Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1l
bnQoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50RW5kU3BhY2VTdGF0ZTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyEnKSB7Ci0gICAgICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVuZEJhbmdT
dGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy0nKSB7Ci0gICAgICAgICAgICAg
ICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0Nv
bW1lbnQoJy0nKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2Mp
OwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJv
cGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEFmdGVyQXR0cmlidXRl
TmFtZVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBj
YyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJz0nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1
ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz0nKQorICAgICAgICAgICAgRU1JVF9B
TkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBj
YyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycgfHwgY2MgPT0g
JzwnKQogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
b21tZW50KGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudFN0YXRlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENvbW1lbnRFbmRCYW5n
U3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0Nv
bW1lbnQoJyEnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVuZERhc2hTdGF0
ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAg
ZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
Q29tbWVudCgnLScpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgn
LScpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnIScpOwotICAg
ICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IENvbW1lbnRTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQXR0cmlidXRlTmFtZShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0
ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21tZW50RW5kU3BhY2VTdGF0
ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2Mg
PT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy0nKQotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBDb21tZW50RW5kRGFzaFN0YXRlOwotICAgICAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBET0NUWVBFU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9
PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZURPQ1RZUEVOYW1lU3RhdGU7Ci0gICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAg
RU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUp
CisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBD
JyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZVZh
bHVlU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpCisgICAgICAgICAgICBBRFZB
TkNFX1RPKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICBlbHNlIGlm
IChjYyA9PSAnJicpCisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oQXR0cmlidXRlVmFsdWVVbnF1
b3RlZFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJ1wnJykKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIGVsc2Ug
aWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAg
ICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgaWYgKGNjID09ICc8JyB8fCBjYyA9PSAnPScgfHwgY2MgPT0gJ2AnKQogICAgICAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJl
Zm9yZURPQ1RZUEVOYW1lU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1
ZShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBCZWZvcmVET0NUWVBFTmFtZVN0YXRlOiB7Ci0g
ICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgw
QycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxz
ZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luRE9DVFlQRSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBET0NUWVBFTmFtZVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsK
KyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVEb3VibGVR
dW90ZWRTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICciJykKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJyYnKSB7CisgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJyIn
OworICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZh
bHVlU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9BdHRyaWJ1dGVWYWx1ZShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZh
bHVlRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBdHRy
aWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1wnJykKKyAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKKyAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7CisgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxv
d2VkQ2hhcmFjdGVyID0gJ1wnJzsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVm
ZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgQURW
QU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfQorICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisg
ICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKQorICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnJicpIHsKKyAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93
ZWRDaGFyYWN0ZXIgPSAnPic7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVy
ZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4n
KQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8
JyB8fCBjYyA9PSAnPScgfHwgY2MgPT0gJ2AnKQogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKCk7Ci0gICAgICAg
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRv
a2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKGNjKTsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKICAg
ICAgICAgfQotICAgICAgICBjYXNlIERPQ1RZUEVOYW1lU3RhdGU6IHsKLSAgICAgICAgICAgIGlm
IChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAn
ICcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyRE9DVFlQRU5hbWVTdGF0ZTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJy
ZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAg
ICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKQotICAgICAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisg
ICAgQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKSB7
CisgICAgICAgIG1fc291cmNlLT5wdXNoKGNjKTsKKyAgICAgICAgYm9vbCBub3RFbm91Z2hDaGFy
YWN0ZXJzID0gZmFsc2U7CisgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gY29uc3VtZUVudGl0eSgq
bV9zb3VyY2UsIG5vdEVub3VnaENoYXJhY3RlcnMpOworICAgICAgICBpZiAobm90RW5vdWdoQ2hh
cmFjdGVycykKKyAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbigpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9BdHRyaWJ1dGVWYWx1ZSgnJicpOworICAgICAgICBlbHNlIGlmICh2YWx1ZSA8IDB4RkZGRikK
KyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUodmFsdWUpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUo
VTE2X0xFQUQodmFsdWUpKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRl
VmFsdWUoVTE2X1RSQUlMKHZhbHVlKSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gV2UncmUgc3Vw
cG9zZWQgdG8gc3dpdGNoIGJhY2sgdG8gdGhlIGF0dHJpYnV0ZSB2YWx1ZSBzdGF0ZSB0aGF0Cisg
ICAgICAgIC8vIHdlIHdlcmUgaW4gd2hlbiB3ZSB3ZXJlIHN3aXRjaGVkIGludG8gdGhpcyBzdGF0
ZS4gIFJhdGhlciB0aGFuCisgICAgICAgIC8vIGtlZXBpbmcgdHJhY2sgb2YgdGhpcyBleHBsaWN0
bHksIHdlIG9ic2VydmUgdGhhdCB0aGUgcHJldmlvdXMKKyAgICAgICAgLy8gc3RhdGUgY2FuIGJl
IGRldGVybWluZWQgYnkgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3Rlci4KKyAgICAgICAgaWYg
KG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJyInKQorICAgICAgICAgICAgQURWQU5D
RV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
bV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnXCcnKQorICAgICAgICAgICAgQURWQU5D
RV9UTyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
bV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnPicpCisgICAgICAgICAgICBBRFZBTkNF
X1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICBFTkRfU1RBVEUoKQorCisgICAg
QkVHSU5fU1RBVEUoQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKQorICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9z
aW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAg
ICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3Jl
QXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyRE9DVFlQ
RU5hbWVTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgw
QScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVu
dFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IHB1YmxpY1N0cmluZywgKCJwdWJsaWMiKSk7Ci0gICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIHN5c3RlbVN0cmluZywgKCJzeXN0ZW0iKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGNjID09ICdQJyB8fCBjYyA9PSAncCcpIHsKLSAgICAgICAgICAgICAgICAgICAgU2Vn
bWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZEln
bm9yaW5nQ2FzZShwdWJsaWNTdHJpbmcpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0
ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAicHVibGljIik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJET0NUWVBFUHVibGljS2V5d29y
ZFN0YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hh
cmFjdGVycykKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJ1MnIHx8IGNjID09ICdzJykgewotICAgICAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJp
bmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNl
KHN5c3RlbVN0cmluZyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVu
dGVkU3RyaW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0
cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJzeXN0ZW0iKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQot
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3Rl
clRva2VuKHNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gQm9ndXNET0NUWVBFU3RhdGU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUo
KQorCisgICAgQkVHSU5fU1RBVEUoU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKQorICAgICAgICBp
ZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAg
ICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJlZm9y
ZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBZnRlckRPQ1RZ
UEVQdWJsaWNLZXl3b3JkU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwg
Y2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGU7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5
U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyRG91YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycp
IHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1f
dG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAg
ICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERh
dGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgICAgICBicmVhazsKKyAg
ICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQm9ndXNDb21tZW50U3RhdGUpCisgICAg
ICAgIGlmIChtX3Rva2VuLT50eXBlKCkgIT0gSFRNTDVUb2tlbjo6Q29tbWVudCkKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmJlZ2luQ29tbWVudCgpOworICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAg
ICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNDb21tZW50U3Rh
dGUpOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RB
VEUoKQorCisgICAgQkVHSU5fU1RBVEUoTWFya3VwRGVjbGFyYXRpb25PcGVuU3RhdGUpCisgICAg
ICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0Fo
ZWFkUmVzdWx0IHJlc3VsdCA9IG1fc291cmNlLT5sb29rQWhlYWQoZGFzaERhc2hTdHJpbmcpOwor
ICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Cisg
ICAgICAgICAgICAgICAgbV9zb3VyY2UtPmFkdmFuY2VBbmRBU1NFUlQoJy0nKTsKKyAgICAgICAg
ICAgICAgICBtX3NvdXJjZS0+YWR2YW5jZUFuZEFTU0VSVCgnLScpOworICAgICAgICAgICAgICAg
IG1fdG9rZW4tPmJlZ2luQ29tbWVudCgpOworICAgICAgICAgICAgICAgIC8vIE9PUFM6IGNjID0g
Pz8/CisgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKENvbW1lbnRTdGFydFN0YXRlKTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdo
Q2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hh
cmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnRCcgfHwgY2MgPT0gJ2Qn
KSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQg
PSBtX3NvdXJjZS0+bG9va0FoZWFkSWdub3JpbmdDYXNlKGRvY3R5cGVTdHJpbmcpOworICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAg
ICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZSgqbV9zb3VyY2UsICJk
b2N0eXBlIik7CisgICAgICAgICAgICAgICAgLy8gT09QUzogY2MgPSA/Pz8KKyAgICAgICAgICAg
ICAgICBSRUNPTlNVTUVfSU4oRE9DVFlQRVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
cmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAg
ICAgfQorICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAvLyBGSVhNRTogV2UncmUg
c3RpbGwgbWlzc2luZyB0aGUgYml0cyBhYm91dCB0aGUgaW5zZXJ0aW9uIG1vZGUgYmVpbmcgaW4g
Zm9yZWlnbiBjb250ZW50OgorICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mv
d2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNtYXJrdXAt
ZGVjbGFyYXRpb24tb3Blbi1zdGF0ZQorICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAg
ICBSRUNPTlNVTUVfSU4oQm9ndXNDb21tZW50U3RhdGUpOworICAgIEVORF9TVEFURSgpCisKKyAg
ICBCRUdJTl9TVEFURShDb21tZW50U3RhcnRTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICctJykK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXJ0RGFzaFN0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAg
ICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAg
QURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQmVmb3Jl
RE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdc
eDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewotICAg
ICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91Ymxl
UXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAg
ICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1
b3RlZFN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQm9ndXNET0NUWVBFU3RhdGU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBF
TkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0YXJ0RGFzaFN0YXRlKQorICAg
ICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3Rh
dGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScp
OworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTog
SGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUo
Q29tbWVudFN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgQURWQU5D
RV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21t
ZW50U3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShDb21tZW50RW5kRGFzaFN0
YXRlKQorICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhDb21t
ZW50RW5kU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ29tbWVudCgnLScpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNj
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKKyAgICAgICAgfQorICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisg
ICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZFN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJz4nKQor
ICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2Ug
aWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09
ICcgJykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
b21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwor
ICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3BhY2VTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJyEnKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAg
ICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kQmFuZ1N0YXRlKTsKKyAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwor
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3Rl
ZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJyInKQotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGU7Ci0gICAgICAgICAgICBl
bHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1
cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lk
ZW50aWZpZXIoY2MpOwotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHku
Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENvbW1lbnRFbmRCYW5nU3Rh
dGUpCisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ29tbWVudCgnLScpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCct
Jyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJyEnKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7
CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnIScpOworICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsK
KyAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBF
TkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZFNwYWNlU3RhdGUpCisgICAg
ICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBj
YyA9PSAnICcpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Cisg
ICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTcGFjZVN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnLScpCisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmREYXNo
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FO
RF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50
U3RhdGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5
LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShET0NUWVBFU3RhdGUpCisgICAg
ICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBj
YyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVOYW1lU3RhdGUp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSBET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlOiB7Ci0g
ICAgICAgICAgICBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0
ZXJET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4o
KTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNj
KTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShCZWZvcmVET0NUWVBFTmFtZVN0YXRlKQorICAg
ICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwg
Y2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFTmFtZVN0YXRl
KTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAg
ICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+
JykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4t
PmJlZ2luRE9DVFlQRSgpOworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAg
ICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBZnRlckRPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScg
fHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNT
dGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAg
IGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRl
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnIicpIHsKLSAgICAgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50
aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVT
eXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICdcJycpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAg
ICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVv
dGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gQm9ndXNET0NUWVBFU3RhdGU7CisgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShET0NU
WVBFTmFtZVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8
fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRl
ckRPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAg
ICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2Mg
Pj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1l
KHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3Rh
dGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1l
KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAg
IH0KKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5EX1NUQVRF
KCkKKworICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSkKKyAgICAgICAgaWYg
KGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcg
JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAg
ICAgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3Rh
dGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnUCcgfHwgY2MgPT0g
J3AnKSB7CisgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQg
cmVzdWx0ID0gbV9zb3VyY2UtPmxvb2tBaGVhZElnbm9yaW5nQ2FzZShwdWJsaWNTdHJpbmcpOwor
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkg
eworICAgICAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNl
KCptX3NvdXJjZSwgInB1YmxpYyIpOworICAgICAgICAgICAgICAgICAgICAvLyBPT1BTOiBjYyA9
ID8/CisgICAgICAgICAgICAgICAgICAgIFJFQ09OU1VNRV9JTihBZnRlckRPQ1RZUEVQdWJsaWNL
ZXl3b3JkU3RhdGUpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICdTJyB8fCBjYyA9PSAncycpIHsKKyAgICAgICAgICAgICAgICBTZWdtZW50
ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBtX3NvdXJjZS0+bG9va0FoZWFkSWdu
b3JpbmdDYXNlKHN5c3RlbVN0cmluZyk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBT
ZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VT
dHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoKm1fc291cmNlLCAic3lzdGVtIik7CisgICAgICAg
ICAgICAgICAgICAgIC8vIE9PUFM6IGNjID0gPz8KKyAgICAgICAgICAgICAgICAgICAgUkVDT05T
VU1FX0lOKEFmdGVyRE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJz
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVy
VG9rZW4oKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJv
cigpOworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQmV0d2VlbkRP
Q1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlOiB7Ci0gICAgICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3Rl
bUlkZW50aWZpZXJzU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAg
ICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyInKSB7Ci0gICAg
ICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVR
dW90ZWRTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewotICAgICAg
ICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVv
dGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gQm9ndXNET0NUWVBFU3RhdGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQor
CisgICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRlKQorICAgICAg
ICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2Mg
PT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGljSWRlbnRp
ZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CisgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmll
clRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lk
ZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wn
JykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4t
PnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNF
X1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAg
ICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgQURWQU5D
RV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBZnRlckRP
Q1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScg
fHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGU7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0Vt
cHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVu
dGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdc
JycpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAg
IG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAg
ICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBh
cnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlKQor
ICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycg
fHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFUHVibGlj
SWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CisgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CisgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5D
RV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Cisg
ICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1F
X0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQmVmb3Jl
RE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdc
eDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnIicpIHsKLSAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3Rl
ZFN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7Ci0gICAgICAgICAg
ICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRT
dGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAg
ICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzRE9DVFlQRVN0YXRlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5EX1NU
QVRFKCkKKworICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVv
dGVkU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnIicpCisgICAgICAgICAgICBBRFZBTkNFX1RP
KEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNj
ID09ICc+JykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHVibGlj
SWRlbnRpZmllcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVu
dGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNj
ID09ICciJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJET0NUWVBFU3lzdGVtSWRl
bnRpZmllclN0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAg
ICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBC
RUdJTl9TVEFURShET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKQorICAg
ICAgICBpZiAoY2MgPT0gJ1wnJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBF
UHVibGljSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Cisg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNj
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVR
dW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBET0NUWVBFU3lzdGVtSWRlbnRp
ZmllclNpbmdsZVF1b3RlZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1wnJykKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRl
OwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAg
ICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
RGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShB
ZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgw
OScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAg
ICAgICBBRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5E
X1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKKyAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJs
aWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NU
WVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnXCcnKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NU
WVBFU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQWZ0ZXJET0NUWVBFU3lzdGVtSWRl
bnRpZmllclN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdc
eDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1p
dEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzRE9DVFlQRVN0YXRlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5E
X1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVt
SWRlbnRpZmllcnNTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgw
QScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8o
QmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgeworICAgICAgICAgICAgbV90b2tl
bi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgeworICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVt
SWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQm9ndXNET0NUWVBFU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9
PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBC
RUdJTl9TVEFURShBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUpCisgICAgICAgIGlmIChj
YyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcp
CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3Rh
dGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0
eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmll
ckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7Cisg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lz
dGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRh
U3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
KyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJv
Z3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIENEQVRBU2VjdGlvblN0
YXRlOiB7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9T
VEFURSgpCisKKyAgICBCRUdJTl9TVEFURShCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0
YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAn
XHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBF
U3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgaWYgKGNjID09ICciJykgeworICAgICAg
ICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgeworICAgICAgICAgICAgbV90b2tl
bi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwog
ICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9
CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0
YXRlKQorICAgICAgICBpZiAoY2MgPT0gJyInKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRl
ckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAn
PicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlkZW50
aWZpZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmll
ckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBzb3VyY2UuYWR2YW5jZSgp
OwotICAgICAgICBpZiAobV9lbWl0UGVuZGluZykgewotICAgICAgICAgICAgbV9lbWl0UGVuZGlu
ZyA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShE
T0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKQorICAgICAgICBpZiAoY2Mg
PT0gJ1wnJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRp
ZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAg
ICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7
CiAgICAgICAgIH0KLSAgICB9Ci0gICAgLy8gV2UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBp
bnB1dCBzdHJlYW0uICBJZiB3ZSBoYXZlIGEgY2hhcmFjdGVyCi0gICAgLy8gdG9rZW4gYnVmZmVy
ZWQsIHdlIHNob3VsZCBlbWl0IGl0LgotICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFy
YWN0ZXJUb2tlbihzb3VyY2UpOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJs
eS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lzdGVt
SWRlbnRpZmllclN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBB
JyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhB
ZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9
PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgQURW
QU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRF
KEJvZ3VzRE9DVFlQRVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAg
RU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNE
T0NUWVBFU3RhdGUpOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAg
ICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uU3RhdGUpCisgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIEFEVkFOQ0VfVE8oQ0RBVEFTZWN0aW9uU3Rh
dGUpOworICAgIEVORF9TVEFURSgpCisKKyAgICBFTkRfU1RBVEVfTUFQKCkKKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogaW5saW5lIGJvb2wgSFRN
TDVMZXhlcjo6dGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgU3RyaW5nJiBleHBlY3RlZFN0cmluZykK
QEAgLTE1NTksMzcgKzE1NjcsMTYgQEAgaW5saW5lIHZvaWQgSFRNTDVMZXhlcjo6ZW1pdFBhcnNl
RXJyb3IoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWlubGluZSB2b2lkIEhUTUw1TGV4
ZXI6Om1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpCi17Ci0gICAgQVNTRVJUKG1fdG9rZW4tPnR5
cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIgfHwgbV90b2tlbi0+dHlwZSgpID09IEhUTUw1
VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVU
b2tlbjo6Q2hhcmFjdGVyKSB7Ci0gICAgICAgIC8vIFdlIGhhdmUgYSBjaGFyYWN0ZXIgdG9rZW4g
cXVldWVkIHVwLiAgV2UgbmVlZCB0byBlbWl0IGl0IGJlZm9yZSB3ZQotICAgICAgICAvLyBjYW4g
c3RhcnQgYmVnaW4gdGhlIGJ1ZmZlcmVkIGVuZCB0YWcgdG9rZW4uCi0gICAgICAgIGVtaXRDdXJy
ZW50VG9rZW4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmbHVzaEJ1ZmZlcmVkRW5k
VGFnKCk7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmZsdXNoQnVmZmVyZWRFbmRUYWco
KQotewotICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1lKTsKLSAg
ICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgIGlmIChtX3N0YXRlID09IERhdGFT
dGF0ZSkKLSAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotfQotCiBpbmxpbmUgdm9pZCBIVE1M
NUxleGVyOjplbWl0Q3VycmVudFRva2VuKCkKIHsKICAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgp
ICE9IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIG1fZW1pdFBlbmRpbmcgPSB0cnVl
OwogICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6U3RhcnRUYWcpCiAgICAg
ICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOwogfQogCi1pbmxp
bmUgYm9vbCBIVE1MNUxleGVyOjpzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihjb25z
dCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKK2lubGluZSBib29sIEhUTUw1TGV4ZXI6OnNob3Vs
ZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCkKIHsKLSAgICByZXR1cm4gc291cmNlLmlzQ2xv
c2VkKCkgJiYgbV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9rZW46OkNoYXJhY3RlcjsKKyAgICBy
ZXR1cm4gbV9zb3VyY2UtPmlzQ2xvc2VkKCkgJiYgbV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9r
ZW46OkNoYXJhY3RlcjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1TGV4
ZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmgKaW5kZXggMDg2MTJlNjZiN2U1ZWFiZDg4
NzZjOWM1NWUyY2YzZjZmNTFmZmM2Mi4uZWNkZDdjNDk4MTY4MmY1ZjA2OWE3YTM0ZDMzNmY0ZjYz
MDY0YmEyNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTDVMZXhlci5oCkBAIC0xMzMsMTAgKzEzMywyMyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGlubGluZSB2b2lkIGVtaXRDb2RlUG9pbnQodW5zaWduZWQpOwogCiAg
ICAgICAgIHVuc2lnbmVkIGNvbnN1bWVFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiwgYm9vbCYgbm90
RW5vdWdoQ2hhcmFjdGVycyk7Ci0gICAgICAgIGlubGluZSBib29sIHByb2Nlc3NFbnRpdHkoU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UpOworICAgICAgICBpbmxpbmUgYm9vbCBwcm9jZXNzRW50aXR5
KFVDaGFyIGNjKTsKIAogICAgICAgICBpbmxpbmUgYm9vbCB0ZW1wb3JhcnlCdWZmZXJJcyhjb25z
dCBTdHJpbmcmKTsKIAorICAgICAgICBpbmxpbmUgYm9vbCBtYWluTG9vcCgpOworICAgICAgICAK
KyAgICAgICAgaW5saW5lIFVDaGFyIG5leHQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
bV9zb3VyY2UtPmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1wwJzsKKyAgICAg
ICAgICAgIFVDaGFyIGNjID0gKiptX3NvdXJjZTsKKyAgICAgICAgICAgIG1fc291cmNlLT5hZHZh
bmNlKCk7CisgICAgICAgICAgICBpZiAoY2MgPT0gJ1wwJykKKyAgICAgICAgICAgICAgICByZXR1
cm4gMHhGRkZEOworICAgICAgICAgICAgcmV0dXJuIGNjOworICAgICAgICB9CisKICAgICAgICAg
Ly8gU29tZXRpbWVzIHdlIHNwZWN1bGF0aXZlbHkgY29uc3VtZSBpbnB1dCBjaGFyYWN0ZXJzIGFu
ZCB3ZSBkb24ndAogICAgICAgICAvLyBrbm93IHdoZXRoZXIgdGhleSByZXByZXNlbnQgZW5kIHRh
Z3Mgb3IgUkNEQVRBLCBldGMuICBUaGVzZQogICAgICAgICAvLyBmdW5jdGlvbnMgaGVscCBtYW5h
Z2UgdGhlc2Ugc3RhdGUuCkBAIC0xNDUsMTggKzE1OCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGlubGluZSB2b2lkIG1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpOwogICAgICAg
ICBpbmxpbmUgdm9pZCBmbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7CiAKLSAgICAgICAgaW5saW5lIGJv
b2wgc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oY29uc3QgU2VnbWVudGVkU3RyaW5n
Jik7CisgICAgICAgIGlubGluZSBib29sIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2Vu
KCk7CiAKICAgICAgICAgU3RhdGUgbV9zdGF0ZTsKIAogICAgICAgICBBdG9taWNTdHJpbmcgbV9h
cHByb3ByaWF0ZUVuZFRhZ05hbWU7CiAKLSAgICAgICAgLy8gbV90b2tlbiBpcyBvd25lZCBieSB0
aGUgY2FsbGVyLiAgSWYgbmV4dFRva2VuIGlzIG5vdCBvbiB0aGUgc3RhY2ssCi0gICAgICAgIC8v
IHRoaXMgbWVtYmVyIG1pZ2h0IGJlIHBvaW50aW5nIHRvIHVuYWxsb2NhdGVkIG1lbW9yeS4KKyAg
ICAgICAgLy8gbV90b2tlbiBhbmQgbV9zb3VyY2UgYXJlIG93bmVkIGJ5IHRoZSBjYWxsZXIuIElm
IG5leHRUb2tlbiBpcyBub3QKKyAgICAgICAgLy8gb24gdGhlIHN0YWNrLCB0aGVzZSBtZW1iZXJz
IG1pZ2h0IGJlIHBvaW50aW5nIHRvIHVuYWxsb2NhdGVkIG1lbW9yeS4KICAgICAgICAgSFRNTDVU
b2tlbiogbV90b2tlbjsKKyAgICAgICAgU2VnbWVudGVkU3RyaW5nKiBtX3NvdXJjZTsKIAogICAg
ICAgICBib29sIG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZzsKLSAgICAgICAgYm9vbCBt
X2VtaXRQZW5kaW5nOwogCiAgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvI3RlbXBvcmFyeS1idWZmZXIKICAgICAgICAgVmVjdG9yPFVD
aGFyLCAzMj4gbV90ZW1wb3JhcnlCdWZmZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57733</attachid>
            <date>2010-06-02 21:43:03 -0700</date>
            <delta_ts>2010-06-03 00:50:26 -0700</delta_ts>
            <desc>more work in progress</desc>
            <filename>bug-40048-20100602214302.patch</filename>
            <type>text/plain</type>
            <size>98628</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDYwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMDIgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IEhUTUw1TGV4ZXIgZ28gZmFzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAwNDgKKworICAgICAgICAqIGh0bWwvSFRNTDVMZXhlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
NUxleGVyOjpjb25zdW1lRW50aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6OnBy
b2Nlc3NFbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhlcjo6bmV4dFRva2VuKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6Om1haW5Mb29wKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUw1TGV4ZXI6OmVtaXRDdXJyZW50VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TDVMZXhlcjo6c2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4pOgorICAgICAgICAqIGh0
bWwvSFRNTDVMZXhlci5oOgorCiAyMDEwLTA2LTAyICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCkluZGV4OiBXZWJD
b3JlL2h0bWwvSFRNTDVMZXhlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUw1
TGV4ZXIuY3BwCShyZXZpc2lvbiA2MDU4OSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDcgKzE1Niw2IEBAIHZvaWQgSFRNTDVMZXhlcjo6cmVz
ZXQoKQogICAgIG1fdG9rZW4gPSAwOwogICAgIG1fbGluZU51bWJlciA9IDA7CiAgICAgbV9za2lw
TGVhZGluZ05ld0xpbmVGb3JMaXN0aW5nID0gZmFsc2U7Ci0gICAgbV9lbWl0UGVuZGluZyA9IGZh
bHNlOwogICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnXDAnOwogfQogCkBAIC0y
MzksNyArMjM4LDcgQEAgdW5zaWduZWQgSFRNTDVMZXhlcjo6Y29uc3VtZUVudGl0eShTZWdtZQog
ICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdGJykKICAgICAgICAgICAg
ICAgICByZXN1bHQgPSByZXN1bHQgKiAxNiArIDEwICsgY2MgLSAnQSc7CiAgICAgICAgICAgICBl
bHNlIGlmIChjYyA9PSAnOycpIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZVBhc3RO
b25OZXdsaW5lKCk7CisgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2UoKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKICAgICAgICAgICAgIH0gZWxz
ZSAKICAgICAgICAgICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKQEAgLTI0
OSw3ICsyNDgsNyBAQCB1bnNpZ25lZCBIVE1MNUxleGVyOjpjb25zdW1lRW50aXR5KFNlZ21lCiAg
ICAgICAgICAgICBpZiAoY2MgPj0gJzAnICYmIGNjIDw9ICc5JykKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSByZXN1bHQgKiAxMCArIGNjIC0gJzAnOwogICAgICAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJzsnKSB7Ci0gICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VQYXN0Tm9uTmV3bGluZSgp
OworICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGxlZ2FsRW50aXR5Rm9yKHJlc3VsdCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICByZXR1cm4gbGVnYWxFbnRpdHlGb3IocmVzdWx0KTsKQEAgLTMwNSwxMCArMzA0LDEw
IEBAIHVuc2lnbmVkIEhUTUw1TGV4ZXI6OmNvbnN1bWVFbnRpdHkoU2VnbWUKICAgICByZXR1cm4g
MDsKIH0KIAotaW5saW5lIGJvb2wgSFRNTDVMZXhlcjo6cHJvY2Vzc0VudGl0eShTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSkKK2lubGluZSBib29sIEhUTUw1TGV4ZXI6OnByb2Nlc3NFbnRpdHkoKQog
ewogICAgIGJvb2wgbm90RW5vdWdoQ2hhcmFjdGVycyA9IGZhbHNlOwotICAgIHVuc2lnbmVkIHZh
bHVlID0gY29uc3VtZUVudGl0eShzb3VyY2UsIG5vdEVub3VnaENoYXJhY3RlcnMpOworICAgIHVu
c2lnbmVkIHZhbHVlID0gY29uc3VtZUVudGl0eSgqbV9zb3VyY2UsIG5vdEVub3VnaENoYXJhY3Rl
cnMpOwogICAgIGlmIChub3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKCF2YWx1ZSkKQEAgLTMyNCw5ICszMjMsOSBAQCBib29sIEhUTUw1TGV4ZXI6Om5l
eHRUb2tlbihTZWdtZW50ZWRTdHJpCiAgICAgLy8gd2l0aCB0aGUgc2FtZSB0b2tlbiBzbyB3ZSBj
YW4gZmluaXNoIGl0LgogICAgIEFTU0VSVCghbV90b2tlbiB8fCBtX3Rva2VuID09ICZ0b2tlbiB8
fCB0b2tlbi50eXBlKCkgPT0gSFRNTDVUb2tlbjo6VW5pbml0aWFsaXplZCk7CiAgICAgbV90b2tl
biA9ICZ0b2tlbjsKKyAgICBtX3NvdXJjZSA9ICZzb3VyY2U7CiAKICAgICBpZiAoIW1fYnVmZmVy
ZWRFbmRUYWdOYW1lLmlzRW1wdHkoKSAmJiAhaXNFbmRUYWdCdWZmZXJpbmdTdGF0ZShtX3N0YXRl
KSkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgY2FsbCBmbHVzaEJ1ZmZlcmVkRW5k
VGFnKCkuCiAgICAgICAgIC8vIFdlIHN0YXJ0ZWQgYW4gZW5kIHRhZyBkdXJpbmcgb3VyIGxhc3Qg
aXRlcmF0aW9uLgogICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhtX2J1ZmZlcmVkRW5kVGFn
TmFtZSk7CiAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CkBAIC0zNDEsMTE4
NCArMzQwLDExOTYgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaQog
ICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnXHgwQScpOwogICAgIG1fc2tpcExlYWRp
bmdOZXdMaW5lRm9yTGlzdGluZyA9IGZhbHNlOwogCisgICAgcmV0dXJuIG1haW5Mb29wKCk7Cit9
CisKKyNkZWZpbmUgQkVHSU5fU1RBVEVfTUFQKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAobV9zb3VyY2UtPmlzRW1wdHkoKSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0
dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICBVQ2hhciBjYyA9ICoqbV9zb3VyY2U7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKKwor
I2RlZmluZSBCRUdJTl9TVEFURShTdGF0ZU5hbWUpIGNhc2UgU3RhdGVOYW1lOiBTdGF0ZU5hbWU6
CisjZGVmaW5lIEVORF9TVEFURSgpIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBicmVhazsKKyNkZWZp
bmUgRU5EX1NUQVRFX01BUCgpIH0KKworI2RlZmluZSBSRUNPTlNVTUVfSU4oU3RhdGVOYW1lKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBtX3N0YXRlID0gU3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjYyA9ICoqbV9zb3VyY2U7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBnb3RvIFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIEFEVkFOQ0VfVE8o
U3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZU5hbWU7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fc291
cmNlLT5hZHZhbmNlKG1fbGluZU51bWJlcik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIGlmIChtX3NvdXJjZS0+aXNFbXB0eSgpKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1p
dEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGNjID0gKiptX3NvdXJjZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIGdvdG8gU3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgRU1JVF9BTkRfUkVTVU1FX0lOKFN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zdGF0
ZSA9IFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgbV9zb3VyY2UtPmFkdmFuY2UobV9saW5lTnVtYmVyKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
cmV0dXJuIHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBfRkxVU0hfQlVGRkVS
RURfRU5EX1RBRygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgpID09IEhU
TUw1VG9rZW46OkNoYXJhY3RlciB8fCAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
bV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOyAgICAgICAgICAg
ICAgXAorICAgICAgICBtX3NvdXJjZS0+YWR2YW5jZShtX2xpbmVOdW1iZXIpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09
IEhUTUw1VG9rZW46OkNoYXJhY3RlcikgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhtX2J1ZmZlcmVkRW5kVGFn
TmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX2J1ZmZlcmVkRW5kVGFn
TmFtZS5jbGVhcigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIEZMVVNIX0FORF9BRFZBTkNFX1RPKFN0YXRlTmFt
ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9GTFVTSF9CVUZGRVJFRF9FTkRfVEFH
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlm
IChtX3NvdXJjZS0+aXNFbXB0eSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVy
VG9rZW4oKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNjID0gKiptX3NvdXJjZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGdvdG8gU3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgRkxVU0hfRU1J
VF9BTkRfUkVTVU1FX0lOKFN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlTmFtZTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX0ZM
VVNIX0JVRkZFUkVEX0VORF9UQUcoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworYm9v
bCBIVE1MNUxleGVyOjptYWluTG9vcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGRhc2hEYXNoU3RyaW5nLCAoIi0tIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBkb2N0eXBlU3RyaW5nLCAoImRvY3R5cGUiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHB1YmxpY1N0cmluZywgKCJwdWJsaWMiKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChTdHJpbmcsIHN5c3RlbVN0cmluZywgKCJzeXN0ZW0iKSk7CisKICAgICAvLyBTb3VyY2U6
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3Rva2Vu
aXNhdGlvbjAKLSAgICAvLyBGSVhNRTogVGhpcyB3aGlsZSBzaG91bGQgc3RvcCBhcyBzb29uIGFz
IHdlIGhhdmUgYSB0b2tlbiB0byByZXR1cm4uCi0gICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIFVDaGFyIGNjID0gKnNvdXJjZTsKLSAgICAgICAgc3dpdGNoIChtX3N0YXRl
KSB7Ci0gICAgICAgIGNhc2UgRGF0YVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJyYn
KQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0
ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc8JykgewotICAgICAgICAgICAgICAgIGlm
IChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6Q2hhcmFjdGVyKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIFdlIGhhdmUgYSBidW5jaCBvZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVlZCB1
cCB0aGF0IHdlCi0gICAgICAgICAgICAgICAgICAgIC8vIGFyZSBlbWl0dGluZyBsYXppbHkgaGVy
ZS4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBUYWdPcGVuU3RhdGU7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGU6
IHsKLSAgICAgICAgICAgIGlmICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwotICAg
ICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgUkNEQVRBU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9
PSAnJicpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENoYXJhY3RlclJlZmVyZW5jZUluUkNE
QVRBU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IFJDREFUQUxlc3NUaGFuU2lnblN0YXRlOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgQkVHSU5fU1RBVEVfTUFQKCkKKworICAgIEJFR0lOX1NUQVRFKERhdGFTdGF0ZSkKKyAgICAg
ICAgaWYgKGNjID09ICcmJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJl
bmNlSW5EYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpIHsKKyAgICAgICAg
ICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6Q2hhcmFjdGVyKSB7CisgICAg
ICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGJ1bmNoIG9mIGNoYXJhY3RlciB0b2tlbnMgcXVldWVk
IHVwIHRoYXQgd2UKKyAgICAgICAgICAgICAgICAvLyBhcmUgZW1pdHRpbmcgbGF6aWx5IGhlcmUu
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBBRFZBTkNFX1RPKFRhZ09wZW5TdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRGF0YVN0YXRlKTsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGU6
IHsKLSAgICAgICAgICAgIGlmICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwotICAg
ICAgICAgICAgbV9zdGF0ZSA9IFJDREFUQVN0YXRlOwotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBSQVdURVhUU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChj
YyA9PSAnPCcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFJBV1RFWFRMZXNzVGhhblNpZ25T
dGF0ZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFU
RShDaGFyYWN0ZXJSZWZlcmVuY2VJbkRhdGFTdGF0ZSkKKyAgICAgICAgaWYgKCFwcm9jZXNzRW50
aXR5KCkpCisgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9r
ZW4oKTsKKyAgICAgICAgUkVDT05TVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgRU5EX1NUQVRFKCkK
KworICAgIEJFR0lOX1NUQVRFKFJDREFUQVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJyYnKQor
ICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlKTsK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RB
VEFMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoY2MpOworICAgICAgICBBRFZBTkNFX1RPKFJDREFUQVN0YXRlKTsKKyAgICBFTkRfU1RB
VEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZSkK
KyAgICAgICAgaWYgKCFwcm9jZXNzRW50aXR5KCkpCisgICAgICAgICAgICByZXR1cm4gc2hvdWxk
RW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgUkVDT05TVU1FX0lOKFJDREFU
QVN0YXRlKTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoUkFXVEVYVFN0YXRl
KQorICAgICAgICBpZiAoY2MgPT0gJzwnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhU
TGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKGNjKTsKKyAgICAgICAgQURWQU5DRV9UTyhSQVdURVhUU3RhdGUpOworICAgIEVORF9TVEFU
RSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhU3RhdGUpCisgICAgICAgIGlmIChjYyA9
PSAnPCcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFMZXNzVGhhblNpZ25TdGF0
ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAg
ICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJF
R0lOX1NUQVRFKFBMQUlOVEVYVFN0YXRlKQorICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAg
ICAgICAgQURWQU5DRV9UTyhQTEFJTlRFWFRTdGF0ZSk7CisgICAgRU5EX1NUQVRFKCkKKworICAg
IEJFR0lOX1NUQVRFKFRhZ09wZW5TdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICchJykKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oTWFya3VwRGVjbGFyYXRpb25PcGVuU3RhdGUpOworICAgICAgICBl
bHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEVuZFRhZ09wZW5TdGF0
ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmJlZ2luU3RhcnRUYWcodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScg
JiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpblN0YXJ0VGFnKGNjKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnPycpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAg
ICAvLyBUaGUgc3BlYyBjb25zdW1lcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYmVmb3JlIHN3aXRj
aGluZworICAgICAgICAgICAgLy8gdG8gdGhlIGJvZ3VzIGNvbW1lbnQgc3RhdGUsIGJ1dCBpdCdz
IGVhc2llciB0byBpbXBsZW1lbnQKKyAgICAgICAgICAgIC8vIGlmIHdlIHJlY29uc3VtZSB0aGUg
Y3VycmVudCBjaGFyYWN0ZXIuCisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oQm9ndXNDb21tZW50
U3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
KyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihEYXRhU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YVN0YXRlOiB7
Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBT
Y3JpcHREYXRhTGVzc1RoYW5TaWduU3RhdGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBFTkRfU1RB
VEUoKQorCisgICAgQkVHSU5fU1RBVEUoRW5kVGFnT3BlblN0YXRlKQorICAgICAgICBpZiAoY2Mg
Pj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWco
dG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsK
KyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CisgICAgICAgICAg
ICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05h
bWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgQURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQm9ndXNDb21tZW50U3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
UExBSU5URVhUU3RhdGU6IHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAg
IEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShUYWdOYW1lU3RhdGUpCisgICAgICAgIGlm
IChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAn
ICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2VsZkNs
b3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAg
ICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNj
ID49ICdBJyAmJiBjYyA8PSAnWicpCisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUo
dG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9OYW1lKGNjKTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisg
ICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAg
QkVHSU5fU1RBVEUoUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAn
LycpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CisgICAgICAgICAg
ICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oUkNEQVRBRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RB
VEFTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBUYWdPcGVuU3RhdGU6IHsKLSAgICAg
ICAgICAgIGlmIChjYyA9PSAnIScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IE1hcmt1cERl
Y2xhcmF0aW9uT3BlblN0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBFbmRUYWdPcGVuU3RhdGU7Ci0gICAgICAgICAgICBlbHNl
IGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+
YmVnaW5TdGFydFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBUYWdOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8
PSAneicpIHsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpblN0YXJ0VGFnKGNjKTsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnTmFtZVN0YXRlOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPycpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0NvbW1lbnRTdGF0ZTsKLSAgICAgICAgICAgICAg
ICAvLyBUaGUgc3BlYyBjb25zdW1lcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYmVmb3JlIHN3aXRj
aGluZwotICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBib2d1cyBjb21tZW50IHN0YXRlLCBidXQg
aXQncyBlYXNpZXIgdG8gaW1wbGVtZW50Ci0gICAgICAgICAgICAgICAgLy8gaWYgd2UgcmVjb25z
dW1lIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOworICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShS
Q0RBVEFFbmRUYWdPcGVuU3RhdGUpCisgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1on
KSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAgICAg
ICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURW
QU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49
ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVu
ZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
Jy8nKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBFbmRUYWdPcGVuU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA+PSAn
QScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWco
dG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnTmFtZVN0YXRl
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAg
ICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcoY2MpOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBUYWdOYW1lU3RhdGU7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRF
KFJDREFUQUVuZFRhZ05hbWVTdGF0ZSkKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAn
WicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAg
ICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2Mg
Pj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBw
ZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOworICAgICAgICAg
ICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4
MEMnIHx8IGNjID09ICcgJykgeworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5k
VGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKEJlZm9yZUF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykgewor
ICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAg
ICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gQm9ndXNDb21tZW50U3RhdGU7Ci0gICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAg
ICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4K
LSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOworICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOworICAgICAgICAgICAgbV9idWZmZXJlZEVu
ZFRhZ05hbWUuY2xlYXIoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBUYWdOYW1lU3RhdGU6IHsKLSAgICAgICAgICAgIGlm
IChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAn
ICcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0g
Jz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdB
JyAmJiBjYyA8PSAnWicpCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRv
TG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9OYW1lKGNjKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lO
X1NUQVRFKFJBV1RFWFRMZXNzVGhhblNpZ25TdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICcvJykg
eworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIEFT
U0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgQURWQU5D
RV9UTyhSQVdURVhURW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQVdURVhU
U3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgUkNEQVRBTGVzc1RoYW5TaWduU3RhdGU6
IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBv
cmFyeUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5k
VGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQ0RBVEFFbmRU
YWdPcGVuU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkNEQVRBU3RhdGU7Ci0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ09wZW5T
dGF0ZSkKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAg
IG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxl
RW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRF
bmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAn
eicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAg
ICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFX
VEVYVEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7CisgICAgICAg
ICAgICBSRUNPTlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNl
IFJDREFUQUVuZFRhZ09wZW5TdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBj
YyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2Mp
OwotICAgICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkNEQVRBRW5kVGFnTmFtZVN0YXRlOwotICAgICAg
ICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICAg
ICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBhZGRUb1Bv
c3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkNEQVRBRW5kVGFn
TmFtZVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hh
cmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOwotICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBSQ0RBVEFTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ05hbWVT
dGF0ZSkKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAg
IG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxl
RW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRF
bmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAn
eicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAg
ICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFX
VEVYVEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAg
ICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRl
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAg
aWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5E
X0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRU
YWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFT
dGF0ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBSRUNP
TlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFJDREFUQUVu
ZFRhZ05hbWVTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicp
IHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAg
ICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewotICAgICAgICAgICAgICAg
IG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgYWRkVG9Qb3Nz
aWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlm
IChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAn
ICcpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBt
X3N0YXRlID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFn
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwotICAgICAgICAgICAgICAgIG1fYnVmZmVy
ZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFJDREFUQVN0
YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYnJlYWs7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFM
ZXNzVGhhblNpZ25TdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAg
bV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVk
RW5kVGFnTmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnIScpIHsKKyAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJyEn
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOworICAgICAg
ICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBSQVdURVhUTGVzc1RoYW5TaWduU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAn
LycpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwotICAgICAg
ICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBSQVdURVhURW5kVGFnT3BlblN0YXRlOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IFJBV1RFWFRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgIEVORF9TVEFURSgpCisKKyAg
ICBCRUdJTl9TVEFURShTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRlKQorICAgICAgICBpZiAoY2Mg
Pj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBw
ZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2Mp
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAg
bV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVF
bmRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsK
KyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihTY3JpcHREYXRhU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgUkFXVEVYVEVuZFRh
Z09wZW5TdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsK
LSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAg
ICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewotICAgICAgICAgICAgICAgIG1fdGVtcG9y
YXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRh
ZyhjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFJBV1RFWFRFbmRUYWdOYW1lU3RhdGU7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwn
KTsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IFJBV1RFWFRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBF
TkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSkK
KyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFn
KHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFbmRU
YWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicp
IHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAg
ICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0
RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAg
ICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRl
KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAg
aWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5E
X0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRU
YWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFT
dGF0ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKKyAg
ICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBSRUNP
TlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFJBV1RF
WFRFbmRUYWdOYW1lU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0g
J1onKSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAg
ICAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIGFkZFRv
UG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2Mg
PT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1l
U3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWco
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVu
ZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKLSAgICAgICAgICAgICAgICBtX2J1
ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQVdU
RVhUU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0
RGF0YUVzY2FwZVN0YXJ0U3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RXNjYXBlU3RhcnREYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9T
VEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAn
LScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5D
RV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZFN0YXRlKQorICAgICAgICBpZiAo
Y2MgPT0gJy0nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpOworICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRM
ZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUp
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlOiB7
Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRh
Z05hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVu
ZFRhZ09wZW5TdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyEnKSB7Ci0gICAg
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJyEnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZVN0
YXJ0U3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFU
RSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSkKKyAgICAg
ICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAg
ICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7CisgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVz
Y2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRW5kVGFnT3Bl
blN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAg
ICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAg
ICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlOwotICAgICAgICAgICAgfSBlbHNl
IGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3Jh
cnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFn
KGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0
ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
PCcpOwotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3Jp
cHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3Jp
cHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8
JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25T
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1pdENo
YXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSBTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2Mg
Pj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVy
LmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2Vy
Q2FzZShjYykpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3on
KSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAg
ICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2Mg
PT0gJ1x4MEMnIHx8IGNjID09ICcgJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHBy
b3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVm
b3JlQXR0cmlidXRlTmFtZVN0YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVz
aEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1heWJlRmx1c2hCdWZmZXJl
ZEVuZFRhZygpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cignPCcpOwotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7Ci0gICAg
ICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgRU5EX1NUQVRFKCkKKworICAg
IEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpCisgICAgICAg
IGlmIChjYyA9PSAnLycpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7
CisgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKKyAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIG1fdGVtcG9y
YXJ5QnVmZmVyLmFwcGVuZCh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcp
OworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNj
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3Rh
dGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwor
ICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGU6IHsKLSAgICAgICAg
ICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0YXRl
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0
RGF0YVN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYnJlYWs7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlw
dERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlKQorICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNj
IDw9ICdaJykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAg
ICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOworICAgICAg
ICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFn
KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1l
U3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcp
OworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOworICAgICAgICAgICAgUkVDT05TVU1F
X0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2Ny
aXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy0n
KSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFTdGF0ZTsKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUo
U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpCisgICAgICAgIGlmIChjYyA+PSAnQScg
JiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2Mp
OworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOworICAg
ICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAg
bV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVF
bmRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZEVuZFRh
Z05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4
MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAg
ICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBw
cm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0Vf
VE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
PT0gJz4nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAg
ICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKKyAgICAgICAgICAg
IG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4o
U2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHRE
YXRhRXNjYXBlZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy0nKSB7Ci0gICAgICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNj
cmlwdERhdGFFc2NhcGVkRGFzaFN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
PCcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5T
aWduU3RhdGU7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVTdGFydFN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09
ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnIHx8IGNjID09ICcvJyB8fCBjYyA9
PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgaWYg
KHRlbXBvcmFyeUJ1ZmZlcklzKHNjcmlwdFRhZy5sb2NhbE5hbWUoKSkpCisgICAgICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZTogewotICAgICAgICAg
ICAgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGU7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZTsKLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRv
TG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVF
c2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0g
J3onKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERh
dGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBS
RUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgRU5EX1NUQVRFKCkKKwor
ICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpCisgICAgICAgIGlm
IChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNp
Z25TdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGU6
IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcihjYyk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGU7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hT
dGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFz
aERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAgICAg
ICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURv
dWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRh
RXNjYXBlZExlc3NUaGFuU2lnblN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy8nKSB7
Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGU7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAg
ICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7
Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGU7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rlcihj
Yyk7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAg
ICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9T
VEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpCisgICAgICAgIGlmIChj
YyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc8JykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5T
aWduU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZTogewot
ICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAg
ICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIGFkZFRvUG9z
c2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
U2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1
ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2Mp
OwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVT
dGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cignPCcpOwotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5f
U1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSkKKyAgICAgICAg
aWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgQURWQU5DRV9UTyhT
Y3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICBFTkRf
U1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRl
KQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgw
QycgfHwgY2MgPT0gJyAnIHx8IGNjID09ICcvJyB8fCBjYyA9PSAnPicpIHsKKyAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUJ1ZmZlcklzKHNj
cmlwdFRhZy5sb2NhbE5hbWUoKSkpCisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBRFZB
TkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYg
KGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2Mp
OworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRvTG93ZXJDYXNlKGNjKSk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBl
bmQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5k
U3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHRE
YXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RB
VEUoQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8
IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAg
QURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChj
YyA9PSAnLycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0
ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JF
U1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0g
J1onKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOworICAg
ICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8
fCBjYyA9PSAnPScpCisgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOworICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRl
TmFtZVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFNjcmlwdERhdGFFc2NhcGVkRW5k
VGFnTmFtZVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykg
ewotICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAg
ICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICAgICAg
bV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBhZGRUb1Bvc3Np
YmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcg
JykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRl
OwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWco
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgbV9idWZmZXJl
ZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0
YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJs
eS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlTmFtZVN0YXRl
KQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgw
QycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0ZU5h
bWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0g
Jz0nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1F
X0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicp
IHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2Fz
ZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8
IGNjID09ICc8JyB8fCBjYyA9PSAnPScpCisgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7CisgICAg
ICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSBTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZTogewotICAgICAgICAgICAg
aWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09
ICcgJyB8fCBjYyA9PSAnLycgfHwgY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdENo
YXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUJ1ZmZlcklzKHNjcmlw
dFRhZy5sb2NhbE5hbWUoKSkpCi0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHRE
YXRhRG91YmxlRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkU3RhdGU7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQo
dG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNj
IDw9ICd6JykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAg
ICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZFN0YXRlOwotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShBZnRlckF0dHJpYnV0ZU5hbWVTdGF0ZSkKKyAgICAgICAgaWYg
KGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcg
JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9z
aW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc9JykKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgIGVsc2Ug
aWYgKGNjID09ICc9JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUp
OworICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAg
ICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYg
KGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JykKKyAgICAgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7
CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAg
IGNhc2UgU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNj
ID09ICctJykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFEb3VibGVFc2Nh
cGVkTGVzc1RoYW5TaWduU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShCZWZvcmVBdHRy
aWJ1dGVWYWx1ZVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBB
JyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhC
ZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKQor
ICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKTsK
KyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKQorICAgICAgICAgICAgUkVDT05TVU1FX0lOKEF0
dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICdcJycp
CisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGUp
OworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8IGNj
ID09ICdgJykKKyAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7CisgICAgICAgICAgICBBRFZBTkNF
X1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNj
ID09ICctJykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGU7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgewotICAgICAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91Ymxl
RXNjYXBlZExlc3NUaGFuU2lnblN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2Ny
aXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgRU5E
X1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkU3Rh
dGUpCisgICAgICAgIGlmIChjYyA9PSAnIicpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVy
QXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcmJykg
eworICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICciJzsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmli
dXRlVmFsdWUoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJs
ZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFNjcmlwdERhdGFEb3VibGVF
c2NhcGVkRGFzaERhc2hTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICctJykKLSAgICAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09
ICc8JykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRl
OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVWYWx1
ZVNpbmdsZVF1b3RlZFN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1wnJykKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJyYnKSB7CisgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFj
dGVyID0gJ1wnJzsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5B
dHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhB
dHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNl
IFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGU6IHsKLSAgICAgICAgICAg
IGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAg
ICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGU7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBl
ZFN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAg
IEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3Rh
dGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdc
eDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0
ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcmJykgeworICAgICAgICAgICAg
bV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICc+JzsKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0
YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09
ICdcJycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9JyB8fCBjYyA9PSAnYCcpCisgICAgICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0
cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZVVu
cXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YURvdWJsZUVz
Y2FwZUVuZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdc
eDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnIHx8IGNjID09ICcvJyB8fCBjYyA9PSAn
PicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAg
ICBpZiAodGVtcG9yYXJ5QnVmZmVySXMoc2NyaXB0VGFnLmxvY2FsTmFtZSgpKSkKLSAgICAgICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkU3RhdGU7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURvdWJs
ZUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9
ICdaJykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAg
ICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBw
ZW5kKGNjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENo
YXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSkgeworICAgICAgICBib29sIG5v
dEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBjb25z
dW1lRW50aXR5KCptX3NvdXJjZSwgbm90RW5vdWdoQ2hhcmFjdGVycyk7CisgICAgICAgIGlmIChu
b3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJl
ZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKCcmJyk7CisgICAgICAgIGVsc2UgaWYgKHZhbHVl
IDwgMHhGRkZGKQorICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh2
YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRy
aWJ1dGVWYWx1ZShVMTZfTEVBRCh2YWx1ZSkpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9BdHRyaWJ1dGVWYWx1ZShVMTZfVFJBSUwodmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAv
LyBXZSdyZSBzdXBwb3NlZCB0byBzd2l0Y2ggYmFjayB0byB0aGUgYXR0cmlidXRlIHZhbHVlIHN0
YXRlIHRoYXQKKyAgICAgICAgLy8gd2Ugd2VyZSBpbiB3aGVuIHdlIHdlcmUgc3dpdGNoZWQgaW50
byB0aGlzIHN0YXRlLiAgUmF0aGVyIHRoYW4KKyAgICAgICAgLy8ga2VlcGluZyB0cmFjayBvZiB0
aGlzIGV4cGxpY3RseSwgd2Ugb2JzZXJ2ZSB0aGF0IHRoZSBwcmV2aW91cworICAgICAgICAvLyBz
dGF0ZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyLgor
ICAgICAgICBpZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnIicpCisgICAgICAg
ICAgICBSRUNPTlNVTUVfSU4oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wnJykKKyAgICAg
ICAgICAgIFJFQ09OU1VNRV9JTihBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKKyAg
ICAgICAgZWxzZSBpZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnPicpCisgICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3Rh
dGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdc
eDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0
ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIFJF
Q09OU1VNRV9JTihCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAg
IGNhc2UgQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0g
J1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGU7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRv
a2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAg
IH0gZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgICAgIG1f
dG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBBdHRyaWJ1dGVOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0g
Jz0nKQotICAgICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAg
ICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0
dHJpYnV0ZU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFU
RShTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnPicpIHsKKyAg
ICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRl
KTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEF0dHJpYnV0ZU5hbWVTdGF0ZTogewotICAgICAg
ICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8
IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJBdHRyaWJ1dGVOYW1l
U3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGNjID09ICc9JykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlVmFs
dWVTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAg
ICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0
YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKQotICAg
ICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShj
YykpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICciJyB8
fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScpCi0gICAgICAgICAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9B
dHRyaWJ1dGVOYW1lKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlTmFt
ZVN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0Yg
cHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBF
T0YgcHJvcGVybHkuCisgICAgICAgIGJyZWFrOworICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJ
Tl9TVEFURShCb2d1c0NvbW1lbnRTdGF0ZSkKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc3RhdGUg
aXNuJ3QgY29ycmVjdCBiZWNhdXNlIHdlJ2xsIHRlcm1pbmF0ZSB0aGUKKyAgICAgICAgLy8gY29t
bWVudCBlYXJseSBpZiB3ZSBkb24ndCBoYXZlIHRoZSB3aG9sZSBpbnB1dCBzdHJlYW0gYXZhaWxh
YmxlLgorICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKKyAgICAgICAgd2hpbGUgKCFt
X3NvdXJjZS0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBjYyA9ICoqbV9zb3VyY2U7CisgICAg
ICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9J
TihEYXRhU3RhdGUpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsK
KyAgICAgICAgICAgIG1fc291cmNlLT5hZHZhbmNlKG1fbGluZU51bWJlcik7CisgICAgICAgIH0K
KyAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAg
ICBCRUdJTl9TVEFURShNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSkKKyAgICAgICAgaWYgKGNj
ID09ICctJykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQg
cmVzdWx0ID0gbV9zb3VyY2UtPmxvb2tBaGVhZChkYXNoRGFzaFN0cmluZyk7CisgICAgICAgICAg
ICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAgICAg
ICAgICBtX3NvdXJjZS0+YWR2YW5jZUFuZEFTU0VSVCgnLScpOworICAgICAgICAgICAgICAgIG1f
c291cmNlLT5hZHZhbmNlQW5kQVNTRVJUKCctJyk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+
YmVnaW5Db21tZW50KCk7CisgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKENvbW1lbnRTdGFy
dFN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmlu
Zzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1p
dEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnRCcg
fHwgY2MgPT0gJ2QnKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJl
c3VsdCByZXN1bHQgPSBtX3NvdXJjZS0+bG9va0FoZWFkSWdub3JpbmdDYXNlKGRvY3R5cGVTdHJp
bmcpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNo
KSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZSgq
bV9zb3VyY2UsICJkb2N0eXBlIik7CisgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKERPQ1RZ
UEVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJp
bmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVt
aXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0KKyAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICAgICAgLy8gRklYTUU6IFdlJ3JlIHN0aWxsIG1pc3NpbmcgdGhlIGJpdHMg
YWJvdXQgdGhlIGluc2VydGlvbiBtb2RlIGJlaW5nIGluIGZvcmVpZ24gY29udGVudDoKKyAgICAg
ICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9t
dWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjbWFya3VwLWRlY2xhcmF0aW9uLW9wZW4tc3RhdGUK
KyAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3VzQ29t
bWVudFN0YXRlKTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29tbWVudFN0
YXJ0U3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnLScpCisgICAgICAgICAgICBBRFZBTkNFX1RP
KENvbW1lbnRTdGFydERhc2hTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+Jykgewor
ICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRl
KTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlOiB7Ci0g
ICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgw
QycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTZWxmQ2xvc2luZ1N0
YXJ0VGFnU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPScpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGU7Ci0gICAgICAgICAgICBl
bHNlIGlmIChjYyA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmFkZE5ld0F0dHJpYnV0ZSgpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0
cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBB
dHRyaWJ1dGVOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcpCi0gICAgICAgICAgICAg
ICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3
QXR0cmlidXRlKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVO
YW1lKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlTmFtZVN0YXRlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHku
Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENvbW1lbnRTdGFydERhc2hT
dGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICctJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29t
bWVudEVuZFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0Nv
bW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Cisg
ICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0g
J1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKQotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlOwot
ICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0g
ICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlm
IChjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8IGNjID09ICdgJykKLSAgICAgICAgICAgICAgICAg
ICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0
dHJpYnV0ZVZhbHVlKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlVmFs
dWVVbnF1b3RlZFN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAg
ICBCRUdJTl9TVEFURShDb21tZW50U3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnLScpCisgICAg
ICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmREYXNoU3RhdGUpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBdHRyaWJ1
dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJyInKQot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGU7
Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnJicpIHsKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlOwotICAgICAgICAg
ICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnIic7Ci0gICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNj
KTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShDb21tZW50RW5kRGFzaFN0YXRlKQorICAgICAg
ICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3RhdGUp
OworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgn
LScpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEF0
dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAn
XCcnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVk
U3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnJicpIHsKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlOwotICAg
ICAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnXCcnOwotICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVW
YWx1ZShjYyk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4K
KyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZFN0YXRlKQorICAg
ICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwg
Y2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3Bh
Y2VTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyEnKSB7CisgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kQmFuZ1N0
YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsK
KyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50
KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNF
X1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBdHRyaWJ1dGVWYWx1
ZVVucXVvdGVkU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0g
J1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNj
ID09ICcmJykgewotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJSZWZlcmVuY2VJ
bkF0dHJpYnV0ZVZhbHVlU3RhdGU7Ci0gICAgICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dl
ZENoYXJhY3RlciA9ICc+JzsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0g
ICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlm
IChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8IGNj
ID09ICdgJykKLSAgICAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVO
RF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShDb21tZW50RW5kQmFuZ1N0YXRlKQorICAgICAg
ICBpZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQo
Jy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCchJyk7CisgICAgICAgICAgICBBRFZBTkNF
X1RPKENvbW1lbnRFbmREYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykK
KyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0NvbW1lbnQoJyEnKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVu
dChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGU6IHsK
LSAgICAgICAgICAgIGJvb2wgbm90RW5vdWdoQ2hhcmFjdGVycyA9IGZhbHNlOwotICAgICAgICAg
ICAgdW5zaWduZWQgdmFsdWUgPSBjb25zdW1lRW50aXR5KHNvdXJjZSwgbm90RW5vdWdoQ2hhcmFj
dGVycyk7Ci0gICAgICAgICAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAg
ICAgICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9B
dHRyaWJ1dGVWYWx1ZSgnJicpOwotICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPCAweEZGRkYp
Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh2YWx1ZSk7
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0
dHJpYnV0ZVZhbHVlKFUxNl9MRUFEKHZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShVMTZfVFJBSUwodmFsdWUpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIC8vIFdlJ3JlIHN1cHBvc2VkIHRvIHN3aXRjaCBiYWNrIHRvIHRoZSBhdHRy
aWJ1dGUgdmFsdWUgc3RhdGUgdGhhdAotICAgICAgICAgICAgLy8gd2Ugd2VyZSBpbiB3aGVuIHdl
IHdlcmUgc3dpdGNoZWQgaW50byB0aGlzIHN0YXRlLiAgUmF0aGVyIHRoYW4KLSAgICAgICAgICAg
IC8vIGtlZXBpbmcgdHJhY2sgb2YgdGhpcyBleHBsaWN0bHksIHdlIG9ic2VydmUgdGhhdCB0aGUg
cHJldmlvdXMKLSAgICAgICAgICAgIC8vIHN0YXRlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IG1fYWRk
aXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIuCi0gICAgICAgICAgICBpZiAobV9hZGRpdGlvbmFsQWxs
b3dlZENoYXJhY3RlciA9PSAnIicpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0
ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX2FkZGl0aW9u
YWxBbGxvd2VkQ2hhcmFjdGVyID09ICdcJycpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0
dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX2Fk
ZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICc+JykKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisK
KyAgICBCRUdJTl9TVEFURShDb21tZW50RW5kU3BhY2VTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09
ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgewor
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQ29tbWVudEVuZFNwYWNlU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICctJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihE
YXRhU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
Q29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGU6IHsKLSAg
ICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBD
JyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0
ZU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShET0NUWVBFU3RhdGUp
CisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBD
JyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVOYW1l
U3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Cisg
ICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGU6IHsKLSAgICAgICAgICAg
IGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
ICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVO
YW1lU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUo
KQorCisgICAgQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSkKKyAgICAgICAgaWYg
KGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcg
JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAg
ICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPmJlZ2luRE9DVFlQRSh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRP
Q1RZUEUoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBFTUlU
X0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fdG9rZW4tPmJlZ2luRE9DVFlQRShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZ
UEVOYW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQm9ndXNDb21tZW50U3RhdGU6
IHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQ29tbWVudCgpOwotICAgICAgICAgICAgd2hp
bGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgY2MgPSAqc291cmNlOwot
ICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAg
ICAgICAgICAgc291cmNlLmFkdmFuY2UobV9saW5lTnVtYmVyKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRh
U3RhdGU7Ci0gICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5
LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShET0NUWVBFTmFtZVN0YXRl
KQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgw
QycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVOYW1l
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FO
RF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNj
IDw9ICdaJykgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93ZXJDYXNl
KGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZTogewotICAgICAgICAgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTdHJpbmcsIGRhc2hEYXNoU3RyaW5nLCAoIi0tIikpOwotICAgICAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRvY3R5cGVTdHJpbmcsICgiZG9jdHlwZSIpKTsK
LSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBTZWdtZW50ZWRT
dHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGRhc2hEYXNo
U3RyaW5nKTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5E
X1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSkKKyAgICAg
ICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNj
ID09ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRlKTsK
KyAgICAgICAgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihE
YXRhU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnUCcgfHwg
Y2MgPT0gJ3AnKSB7CisgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRS
ZXN1bHQgcmVzdWx0ID0gbV9zb3VyY2UtPmxvb2tBaGVhZElnbm9yaW5nQ2FzZShwdWJsaWNTdHJp
bmcpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRN
YXRjaCkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScp
OwotICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScpOwotICAg
ICAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGFydFN0YXRlOwotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9y
aW5nQ2FzZSgqbV9zb3VyY2UsICJwdWJsaWMiKTsKKyAgICAgICAgICAgICAgICAgICAgUkVDT05T
VU1FX0lOKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJz
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVy
VG9rZW4oc291cmNlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ0QnIHx8IGNjID09
ICdkJykgewotICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0
IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UoZG9jdHlwZVN0cmluZyk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tl
bigpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnUycgfHwgY2MgPT0gJ3MnKSB7Cisg
ICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0g
bV9zb3VyY2UtPmxvb2tBaGVhZElnbm9yaW5nQ2FzZShzeXN0ZW1TdHJpbmcpOwogICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgewotICAgICAg
ICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJjZSwg
ImRvY3R5cGUiKTsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTdGF0ZTsK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGFkdmFu
Y2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoKm1fc291cmNlLCAic3lzdGVtIik7CisgICAg
ICAgICAgICAgICAgICAgIFJFQ09OU1VNRV9JTihBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3Rh
dGUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmlu
Zzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3Vs
ZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSdyZSBzdGlsbCBtaXNzaW5nIHRoZSBiaXRzIGFib3V0IHRoZSBpbnNlcnRpb24gbW9kZSBiZWlu
ZyBpbiBmb3JlaWduIGNvbnRlbnQ6Ci0gICAgICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRt
bCNtYXJrdXAtZGVjbGFyYXRpb24tb3Blbi1zdGF0ZQogICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0NvbW1lbnRTdGF0ZTsKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29tbWVudFN0YXJ0U3RhdGU6
IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IENvbW1lbnRTdGFydERhc2hTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+Jykg
ewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgZW1p
dEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29t
bWVudChjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGF0ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21tZW50U3RhcnREYXNo
U3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IENvbW1lbnRFbmRTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+Jykg
ewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgZW1p
dEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0g
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29t
bWVudCgnLScpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGF0ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21tZW50U3RhdGU6IHsKLSAgICAgICAg
ICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRFbmRE
YXNoU3RhdGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21tZW50
RW5kRGFzaFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy0nKQotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBDb21tZW50RW5kU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBDb21tZW50U3RhdGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFu
ZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgQ29tbWVudEVuZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJz4nKSB7Ci0g
ICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgewotICAgICAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
b21tZW50KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCct
Jyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVuZFNwYWNlU3RhdGU7Ci0gICAgICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICchJykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRFbmRCYW5nU3RhdGU7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7Ci0g
ICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgICAgICBtX3Rv
a2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50U3RhdGU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJs
eS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29tbWVudEVu
ZEJhbmdTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ29tbWVudCgnIScpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50RW5kRGFz
aFN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAg
ICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFT
dGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21t
ZW50KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCchJyk7
Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gQ29tbWVudFN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIENvbW1lbnRFbmRTcGFjZVN0YXRlOiB7Ci0gICAgICAgICAg
ICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2Mg
PT0gJyAnKQotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IENvbW1lbnRFbmREYXNoU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsK
LSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
Q29tbWVudFN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIERPQ1RZUEVTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9
PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IEJlZm9yZURPQ1RZUEVOYW1lU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQmVmb3JlRE9DVFlQRU5h
bWVTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScg
fHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAg
ICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gRE9DVFlQRU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoY2MpOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBET0NUWVBFTmFtZVN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8g
RklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIERPQ1RZUEVOYW1lU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9
PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyRE9DVFlQRU5hbWVTdGF0ZTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9r
ZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAg
fSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKQotICAgICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQWZ0ZXJET0NUWVBFTmFtZVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGNjID09ICc+Jykgewot
ICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHVibGljU3RyaW5nLCAoInB1YmxpYyIpKTsKLSAg
ICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3lzdGVtU3RyaW5nLCAo
InN5c3RlbSIpKTsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJ1AnIHx8IGNjID09ICdwJykg
ewotICAgICAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCBy
ZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHB1YmxpY1N0cmluZyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5n
Q2FzZShzb3VyY2UsICJwdWJsaWMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2Vn
bWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnUycgfHwgY2MgPT0gJ3MnKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNv
dXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uoc3lzdGVtU3RyaW5nKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJj
ZSwgInN5c3RlbSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyRE9D
VFlQRVN5c3RlbUtleXdvcmRTdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJp
bmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
c2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZUEVT
dGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBZnRl
ckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgw
OScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGU7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJU
b0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVQdWJsaWNJ
ZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICdcJycpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3Rh
dGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAg
IGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmll
clN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8
fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+
c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9y
KCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBl
bWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlOiB7
Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJyInKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBB
ZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChj
YyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tl
bigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIo
Y2MpOwotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIERPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyU2luZ2xlUXVvdGVkU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXCcnKQotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGU7
Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAg
ICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBE
YXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoY2MpOwotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAg
ICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZTog
ewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0g
J1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmV0d2VlbkRP
Q1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlOwotICAgICAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICciJykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAg
ICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90
ZWRTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewotICAgICAgICAg
ICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVi
bGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
RE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZ
UEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBZnRlckRP
Q1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2Mg
PT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZB
TkNFX1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICBlbHNl
IGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAg
ICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRl
KTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CisgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1w
dHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZp
ZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Cisg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRl
bnRpZmllcnNTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAn
XHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gQmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlOwotICAg
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJl
bnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICciJykgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRT
eXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzRE9D
VFlQRVN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBF
T0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEJlZm9y
ZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScg
fHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAg
ICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lk
ZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQ
dWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNj
ID09ICdcJycpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0Vt
cHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykgewor
ICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGU6
IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09
ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZURP
Q1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAn
IicpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAg
IG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50
aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVT
eXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAg
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRv
a2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RP
Q1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShET0NU
WVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKQorICAgICAgICBpZiAoY2MgPT0g
JyInKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVy
U3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAg
RU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoY2MpOworICAgICAgICAgICAg
QURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKICAg
ICAgICAgfQotICAgICAgICBjYXNlIEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGU6
IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09
ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBpZiAoY2MgPT0gJyInKSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRl
bnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJ1wnJykgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50
aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVT
eXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAg
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRv
a2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RP
Q1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShET0NU
WVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKQorICAgICAgICBpZiAoY2MgPT0g
J1wnJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRpZmll
clN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAg
IEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3Rl
ZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJyInKQotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGU7Ci0gICAgICAgICAgICBl
bHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1
cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlk
ZW50aWZpZXIoY2MpOwotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHku
Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1Ymxp
Y0lkZW50aWZpZXJTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgw
QScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8o
QmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgeworICAgICAgICAgICAgZW1pdFBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0Vt
cHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsK
KyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRQ
dWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhE
T0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0
YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlOwotICAgICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIGVtaXRDdXJy
ZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVu
dGlmaWVyKGNjKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5Lgot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5
LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShCZXR3ZWVuRE9DVFlQRVB1Ymxp
Y0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwg
Y2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBB
RFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSk7
CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAgICAg
ICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUp
OworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKKyAgICAgICAgICAgIG1fdG9rZW4t
PnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNF
X1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0
ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2Mg
PT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9r
ZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisK
KyAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUpCisgICAgICAg
IGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9
PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVy
VG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRl
bnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcn
KSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+
c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAg
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9J
TihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBBRFZBTkNF
X1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEJvZ3VzRE9D
VFlQRVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAg
ICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3Rh
dGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9w
ZXJseS4KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBw
cm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9
PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGlmIChj
YyA9PSAnIicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0Vt
cHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsK
KyAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVv
dGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAg
ZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAg
ICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgIH0K
LSAgICAgICAgY2FzZSBDREFUQVNlY3Rpb25TdGF0ZTogeworICAgICAgICAvLyBGSVhNRTogSGFu
ZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09
ICciJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmll
clN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlkZW50aWZp
ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllckRv
dWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVP
RiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdcJycp
CisgICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0
ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBFTUlU
X0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihjYyk7CisgICAgICAgICAgICBBRFZB
TkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAg
ICB9Ci0gICAgICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7Ci0gICAgICAgIGlmICht
X2VtaXRQZW5kaW5nKSB7Ci0gICAgICAgICAgICBtX2VtaXRQZW5kaW5nID0gZmFsc2U7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5c3Rl
bUlkZW50aWZpZXJTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgw
QScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8o
QWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9Ci0gICAgfQotICAgIC8vIFdl
J3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyZWFtLiAgSWYgd2UgaGF2ZSBhIGNo
YXJhY3RlcgotICAgIC8vIHRva2VuIGJ1ZmZlcmVkLCB3ZSBzaG91bGQgZW1pdCBpdC4KLSAgICBy
ZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKKyAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJF
R0lOX1NUQVRFKEJvZ3VzRE9DVFlQRVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAg
ICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIEFEVkFOQ0Vf
VE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9w
ZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9uU3Rh
dGUpCisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIEFEVkFOQ0VfVE8oQ0RBVEFT
ZWN0aW9uU3RhdGUpOworICAgIEVORF9TVEFURSgpCisKKyAgICBFTkRfU1RBVEVfTUFQKCkKKwor
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogaW5saW5l
IGJvb2wgSFRNTDVMZXhlcjo6dGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgU3RyaW5nJiBleHBlY3Rl
ZFN0cmluZykKQEAgLTE1NjEsMzcgKzE1NzIsMTYgQEAgaW5saW5lIHZvaWQgSFRNTDVMZXhlcjo6
ZW1pdFBhcnNlRXJyb3IoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWlubGluZSB2b2lk
IEhUTUw1TGV4ZXI6Om1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpCi17Ci0gICAgQVNTRVJUKG1f
dG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIgfHwgbV90b2tlbi0+dHlwZSgp
ID09IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIGlmIChtX3Rva2VuLT50eXBlKCkg
PT0gSFRNTDVUb2tlbjo6Q2hhcmFjdGVyKSB7Ci0gICAgICAgIC8vIFdlIGhhdmUgYSBjaGFyYWN0
ZXIgdG9rZW4gcXVldWVkIHVwLiAgV2UgbmVlZCB0byBlbWl0IGl0IGJlZm9yZSB3ZQotICAgICAg
ICAvLyBjYW4gc3RhcnQgYmVnaW4gdGhlIGJ1ZmZlcmVkIGVuZCB0YWcgdG9rZW4uCi0gICAgICAg
IGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmbHVzaEJ1
ZmZlcmVkRW5kVGFnKCk7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmZsdXNoQnVmZmVy
ZWRFbmRUYWcoKQotewotICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdO
YW1lKTsKLSAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgIGlmIChtX3N0YXRl
ID09IERhdGFTdGF0ZSkKLSAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotfQotCiBpbmxpbmUg
dm9pZCBIVE1MNUxleGVyOjplbWl0Q3VycmVudFRva2VuKCkKIHsKICAgICBBU1NFUlQobV90b2tl
bi0+dHlwZSgpICE9IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIG1fZW1pdFBlbmRp
bmcgPSB0cnVlOwogICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6U3RhcnRU
YWcpCiAgICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOwog
fQogCi1pbmxpbmUgYm9vbCBIVE1MNUxleGVyOjpzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbihjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKK2lubGluZSBib29sIEhUTUw1TGV4
ZXI6OnNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCkKIHsKLSAgICByZXR1cm4gc291
cmNlLmlzQ2xvc2VkKCkgJiYgbV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9rZW46OkNoYXJhY3Rl
cjsKKyAgICByZXR1cm4gbV9zb3VyY2UtPmlzQ2xvc2VkKCkgJiYgbV90b2tlbi0+dHlwZSgpID09
IEhUTUw1VG9rZW46OkNoYXJhY3RlcjsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUw1
TGV4ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oCShyZXZpc2lv
biA2MDU4OSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzNiwzMSArMTM2LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW5saW5lIHZv
aWQgZW1pdENvZGVQb2ludCh1bnNpZ25lZCk7CiAKICAgICAgICAgdW5zaWduZWQgY29uc3VtZUVu
dGl0eShTZWdtZW50ZWRTdHJpbmcmLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKLSAgICAg
ICAgaW5saW5lIGJvb2wgcHJvY2Vzc0VudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSk7Cisg
ICAgICAgIGlubGluZSBib29sIHByb2Nlc3NFbnRpdHkoKTsKIAogICAgICAgICBpbmxpbmUgYm9v
bCB0ZW1wb3JhcnlCdWZmZXJJcyhjb25zdCBTdHJpbmcmKTsKIAorICAgICAgICBpbmxpbmUgYm9v
bCBtYWluTG9vcCgpOworCiAgICAgICAgIC8vIFNvbWV0aW1lcyB3ZSBzcGVjdWxhdGl2ZWx5IGNv
bnN1bWUgaW5wdXQgY2hhcmFjdGVycyBhbmQgd2UgZG9uJ3QKICAgICAgICAgLy8ga25vdyB3aGV0
aGVyIHRoZXkgcmVwcmVzZW50IGVuZCB0YWdzIG9yIFJDREFUQSwgZXRjLiAgVGhlc2UKICAgICAg
ICAgLy8gZnVuY3Rpb25zIGhlbHAgbWFuYWdlIHRoZXNlIHN0YXRlLgogICAgICAgICBpbmxpbmUg
dm9pZCBhZGRUb1Bvc3NpYmxlRW5kVGFnKFVDaGFyIGNjKTsKICAgICAgICAgaW5saW5lIGJvb2wg
aXNBcHByb3ByaWF0ZUVuZFRhZygpOwotICAgICAgICBpbmxpbmUgdm9pZCBtYXliZUZsdXNoQnVm
ZmVyZWRFbmRUYWcoKTsKLSAgICAgICAgaW5saW5lIHZvaWQgZmx1c2hCdWZmZXJlZEVuZFRhZygp
OwogCi0gICAgICAgIGlubGluZSBib29sIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2Vu
KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOworICAgICAgICBpbmxpbmUgYm9vbCBzaG91bGRFbWl0
QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwogCiAgICAgICAgIFN0YXRlIG1fc3RhdGU7CiAKICAg
ICAgICAgQXRvbWljU3RyaW5nIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lOwogCi0gICAgICAgIC8v
IG1fdG9rZW4gaXMgb3duZWQgYnkgdGhlIGNhbGxlci4gIElmIG5leHRUb2tlbiBpcyBub3Qgb24g
dGhlIHN0YWNrLAotICAgICAgICAvLyB0aGlzIG1lbWJlciBtaWdodCBiZSBwb2ludGluZyB0byB1
bmFsbG9jYXRlZCBtZW1vcnkuCisgICAgICAgIC8vIG1fdG9rZW4gYW5kIG1fc291cmNlIGFyZSBv
d25lZCBieSB0aGUgY2FsbGVyLiBJZiBuZXh0VG9rZW4gaXMgbm90CisgICAgICAgIC8vIG9uIHRo
ZSBzdGFjaywgdGhlc2UgbWVtYmVycyBtaWdodCBiZSBwb2ludGluZyB0byB1bmFsbG9jYXRlZCBt
ZW1vcnkuCiAgICAgICAgIEhUTUw1VG9rZW4qIG1fdG9rZW47CisgICAgICAgIFNlZ21lbnRlZFN0
cmluZyogbV9zb3VyY2U7CisKICAgICAgICAgaW50IG1fbGluZU51bWJlcjsKIAogICAgICAgICBi
b29sIG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZzsKLSAgICAgICAgYm9vbCBtX2VtaXRQ
ZW5kaW5nOwogCiAgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBw
cy9jdXJyZW50LXdvcmsvI3RlbXBvcmFyeS1idWZmZXIKICAgICAgICAgVmVjdG9yPFVDaGFyLCAz
Mj4gbV90ZW1wb3JhcnlCdWZmZXI7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MDYwMykKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA2
LTAyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBIVE1MNUxleGVyIGdvIGZhc3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDQ4CisKKyAg
ICAgICAgKiBodG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0OgorICAgICAgICAqIGh0
bWw1bGliL3dlYmtpdC1yZXN1bWVyLWV4cGVjdGVkLWh0bWw1LnR4dDoKKwogMjAxMC0wNi0wMiAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4g
VGVzdCBleHBlY3RhdGlvbiB1cGRhdGUuCkluZGV4OiBMYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5u
ZXItZXhwZWN0ZWQtaHRtbDUudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0bWw1bGli
L3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQJKHJldmlzaW9uIDYwNTg5KQorKysgTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTIsNyArMTIsMTAgQEAgcmVzb3VyY2VzL3Rlc3RzMS5kYXQ6CiAzNAogMzUKIDM3CiszOAogNDEK
KzQ1Cis0OAogNTAKIDUxCiA1MgpAQCAtMjcwLDcgKzI3Myw4IEBAIHJlc291cmNlcy90ZXN0czE2
LmRhdDoKIDE4MAogMTg2CiAKLXJlc291cmNlcy93ZWJraXQwMS5kYXQ6IFBBU1MKK3Jlc291cmNl
cy93ZWJraXQwMS5kYXQ6CisxMwogCiByZXNvdXJjZXMvZG9jdHlwZTAxLmRhdDogUEFTUwogCklu
ZGV4OiBMYXlvdXRUZXN0cy9odG1sNWxpYi93ZWJraXQtcmVzdW1lci1leHBlY3RlZC1odG1sNS50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHRtbDVsaWIvd2Via2l0LXJlc3VtZXItZXhw
ZWN0ZWQtaHRtbDUudHh0CShyZXZpc2lvbiA2MDU4OSkKKysrIExheW91dFRlc3RzL2h0bWw1bGli
L3dlYmtpdC1yZXN1bWVyLWV4cGVjdGVkLWh0bWw1LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTU4
LDYgKzE1OCw4IEBAIENPTlNPTEUgTUVTU0FHRTogbGluZSAzOiBGT088c3Bhbj5CQVI8L3MKIENP
TlNPTEUgTUVTU0FHRTogbGluZSAzOiBGT088c3Bhbj5CQVI8L3NwYW4+QkFaCiBDb250ZW50LVR5
cGU6IHRleHQvcGxhaW4KIHJlc291cmNlcy93ZWJraXQwMS5kYXQ6Cis1MTcuMQorNTE4LjIKIDUx
OS4zCiA1MjAuNAogNTIxLjUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57742</attachid>
            <date>2010-06-03 00:50:31 -0700</date>
            <delta_ts>2010-06-04 00:52:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40048-20100603005029.patch</filename>
            <type>text/plain</type>
            <size>96811</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDYxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDYtMDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IEhUTUw1TGV4ZXIgZ28gZmFzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAwNDgKKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdXMgZnJvbSB1
c2luZyBhIGp1bXAgdGFibGUgZm9yIGVhY2ggY2hhcmFjdGVyIHRvCisgICAgICAgIHVzaW5nIGFi
c29sdXRlIGp1bXBzIGJldHdlZW4gcGFyc2VyIHN0YXRlcy4gIFRoaXMgYXBwZWFycyB0byBiZSBh
Ym91dCBhCisgICAgICAgIDElIGltcHJvdmVtZW50IG9uIHRoZSBwYXJzZXIgYmVuY2ggbWFyayAo
d2hpY2ggaXMgMS8xMHRoIG9mIHdoYXQgd2UKKyAgICAgICAgbmVlZCB0byBjYXRjaCB0aGUgb2xk
IHBhcnNlcikuCisKKyAgICAgICAgSSd2ZSBrZXB0IHRoZSB1bmRlcmx5aW5nIGxvZ2ljIGFzIGNs
b3NlIHRvIHRoZSBvbGQgbG9naWMgYXMgcG9zc2libGUuCisgICAgICAgIFRoaXMgbmV3IGZvcm0g
d2lsbCBtYWtlIGl0IGVhc2llciB0byBoYW5kbGUgdGhlIGlucHV0IHN0cmVhbSBwYXJ0IG9mCisg
ICAgICAgIHRoZSBzcGVjIGFuZCB0byBtYWtlIGZ1cnRoZXIgcGVyZm9ybWFuY2UgaW1wcm92ZW1l
bnRzLgorCisgICAgICAgICogaHRtbC9IVE1MNUxleGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUw1TGV4ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6OmNvbnN1
bWVFbnRpdHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhlcjo6cHJvY2Vzc0VudGl0eSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjpuZXh0VG9rZW4pOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTDVMZXhlcjo6bWFpbkxvb3ApOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhl
cjo6ZW1pdEN1cnJlbnRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjpzaG91
bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbik6CisgICAgICAgICogaHRtbC9IVE1MNUxleGVy
Lmg6CisKIDIwMTAtMDYtMDIgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TDVMZXhlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwCShy
ZXZpc2lvbiA2MDYxMCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU2LDcgKzE1Niw2IEBAIHZvaWQgSFRNTDVMZXhlcjo6cmVzZXQoKQogICAgIG1f
dG9rZW4gPSAwOwogICAgIG1fbGluZU51bWJlciA9IDA7CiAgICAgbV9za2lwTGVhZGluZ05ld0xp
bmVGb3JMaXN0aW5nID0gZmFsc2U7Ci0gICAgbV9lbWl0UGVuZGluZyA9IGZhbHNlOwogICAgIG1f
YWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnXDAnOwogfQogCkBAIC0zMDUsMTAgKzMwNCwx
MCBAQCB1bnNpZ25lZCBIVE1MNUxleGVyOjpjb25zdW1lRW50aXR5KFNlZ21lCiAgICAgcmV0dXJu
IDA7CiB9CiAKLWlubGluZSBib29sIEhUTUw1TGV4ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UpCitpbmxpbmUgYm9vbCBIVE1MNUxleGVyOjpwcm9jZXNzRW50aXR5KCkK
IHsKICAgICBib29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCB2
YWx1ZSA9IGNvbnN1bWVFbnRpdHkoc291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKKyAgICB1
bnNpZ25lZCB2YWx1ZSA9IGNvbnN1bWVFbnRpdHkoKm1fc291cmNlLCBub3RFbm91Z2hDaGFyYWN0
ZXJzKTsKICAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghdmFsdWUpCkBAIC0zMjQsOSArMzIzLDkgQEAgYm9vbCBIVE1MNUxleGVyOjpu
ZXh0VG9rZW4oU2VnbWVudGVkU3RyaQogICAgIC8vIHdpdGggdGhlIHNhbWUgdG9rZW4gc28gd2Ug
Y2FuIGZpbmlzaCBpdC4KICAgICBBU1NFUlQoIW1fdG9rZW4gfHwgbV90b2tlbiA9PSAmdG9rZW4g
fHwgdG9rZW4udHlwZSgpID09IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwogICAgIG1fdG9r
ZW4gPSAmdG9rZW47CisgICAgbV9zb3VyY2UgPSAmc291cmNlOwogCiAgICAgaWYgKCFtX2J1ZmZl
cmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkgJiYgIWlzRW5kVGFnQnVmZmVyaW5nU3RhdGUobV9zdGF0
ZSkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNhbGwgZmx1c2hCdWZmZXJlZEVu
ZFRhZygpLgogICAgICAgICAvLyBXZSBzdGFydGVkIGFuIGVuZCB0YWcgZHVyaW5nIG91ciBsYXN0
IGl0ZXJhdGlvbi4KICAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcobV9idWZmZXJlZEVuZFRh
Z05hbWUpOwogICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwpAQCAtMzQxLDEx
ODQgKzM0MCwxMTk2IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmkK
ICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlQoJ1x4MEEnKTsKICAgICBtX3NraXBMZWFk
aW5nTmV3TGluZUZvckxpc3RpbmcgPSBmYWxzZTsKIAorICAgIHJldHVybiBtYWluTG9vcCgpOwor
fQorCisjZGVmaW5lIEJFR0lOX1NUQVRFX01BUCgpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKG1fc291cmNlLT5pc0VtcHR5KCkpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJl
dHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOyAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgVUNoYXIgY2MgPSAqKm1fc291cmNlOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisK
KyNkZWZpbmUgQkVHSU5fU1RBVEUoU3RhdGVOYW1lKSBjYXNlIFN0YXRlTmFtZTogU3RhdGVOYW1l
OgorI2RlZmluZSBFTkRfU1RBVEUoKSBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgYnJlYWs7CisjZGVm
aW5lIEVORF9TVEFURV9NQVAoKSB9CisKKyNkZWZpbmUgUkVDT05TVU1FX0lOKFN0YXRlTmFtZSkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2MgPSAqKm1fc291cmNlOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgZ290byBTdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBBRFZBTkNFX1RP
KFN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gU3RhdGVOYW1lOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3Nv
dXJjZS0+YWR2YW5jZShtX2xpbmVOdW1iZXIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBpZiAobV9zb3VyY2UtPmlzRW1wdHkoKSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVt
aXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBjYyA9ICoqbV9zb3VyY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBnb3RvIFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIEVNSVRfQU5EX1JFU1VNRV9JTihTdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fc3Rh
dGUgPSBTdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIG1fc291cmNlLT5hZHZhbmNlKG1fbGluZU51bWJlcik7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgX0ZMVVNIX0JVRkZF
UkVEX0VORF9UQUcoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQVNTRVJUKG1fdG9rZW4tPnR5cGUoKSA9PSBI
VE1MNVRva2VuOjpDaGFyYWN0ZXIgfHwgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg
IG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2VuOjpVbmluaXRpYWxpemVkKTsgICAgICAgICAg
ICAgIFwKKyAgICAgICAgbV9zb3VyY2UtPmFkdmFuY2UobV9saW5lTnVtYmVyKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9
PSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcobV9idWZmZXJlZEVuZFRh
Z05hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9idWZmZXJlZEVuZFRh
Z05hbWUuY2xlYXIoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBGTFVTSF9BTkRfQURWQU5DRV9UTyhTdGF0ZU5h
bWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBtX3N0YXRlID0gU3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfRkxVU0hfQlVGRkVSRURfRU5EX1RB
RygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBp
ZiAobV9zb3VyY2UtPmlzRW1wdHkoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3Rl
clRva2VuKCk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjYyA9ICoqbV9zb3VyY2U7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBnb3RvIFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIEZMVVNIX0VN
SVRfQU5EX1JFU1VNRV9JTihTdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZU5hbWU7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9G
TFVTSF9CVUZGRVJFRF9FTkRfVEFHKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK2Jv
b2wgSFRNTDVMZXhlcjo6bWFpbkxvb3AoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBkYXNoRGFzaFN0cmluZywgKCItLSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgZG9jdHlwZVN0cmluZywgKCJkb2N0eXBlIikpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBwdWJsaWNTdHJpbmcsICgicHVibGljIikpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBzeXN0ZW1TdHJpbmcsICgic3lzdGVtIikpOworCiAgICAgLy8gU291cmNl
OiBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyN0b2tl
bmlzYXRpb24wCi0gICAgLy8gRklYTUU6IFRoaXMgd2hpbGUgc2hvdWxkIHN0b3AgYXMgc29vbiBh
cyB3ZSBoYXZlIGEgdG9rZW4gdG8gcmV0dXJuLgotICAgIHdoaWxlICghc291cmNlLmlzRW1wdHko
KSkgewotICAgICAgICBVQ2hhciBjYyA9ICpzb3VyY2U7Ci0gICAgICAgIHN3aXRjaCAobV9zdGF0
ZSkgewotICAgICAgICBjYXNlIERhdGFTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICcm
JykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3Rh
dGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpIHsKLSAgICAgICAgICAgICAgICBp
ZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9rZW46OkNoYXJhY3RlcikgewotICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBoYXZlIGEgYnVuY2ggb2YgY2hhcmFjdGVyIHRva2VucyBxdWV1ZWQg
dXAgdGhhdCB3ZQotICAgICAgICAgICAgICAgICAgICAvLyBhcmUgZW1pdHRpbmcgbGF6aWx5IGhl
cmUuCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnT3BlblN0YXRlOwotICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRl
OiB7Ci0gICAgICAgICAgICBpZiAoIXByb2Nlc3NFbnRpdHkoc291cmNlKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAg
ICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIFJDREFUQVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2Mg
PT0gJyYnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJSZWZlcmVuY2VJblJD
REFUQVN0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBSQ0RBVEFMZXNzVGhhblNpZ25TdGF0ZTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIGJyZWFrOwor
ICAgIEJFR0lOX1NUQVRFX01BUCgpCisKKyAgICBCRUdJTl9TVEFURShEYXRhU3RhdGUpCisgICAg
ICAgIGlmIChjYyA9PSAnJicpCisgICAgICAgICAgICBBRFZBTkNFX1RPKENoYXJhY3RlclJlZmVy
ZW5jZUluRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAg
ICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9rZW46OkNoYXJhY3RlcikgeworICAg
ICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBidW5jaCBvZiBjaGFyYWN0ZXIgdG9rZW5zIHF1ZXVl
ZCB1cCB0aGF0IHdlCisgICAgICAgICAgICAgICAgLy8gYXJlIGVtaXR0aW5nIGxhemlseSBoZXJl
LgorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQURWQU5DRV9UTyhUYWdPcGVuU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRl
OiB7Ci0gICAgICAgICAgICBpZiAoIXByb2Nlc3NFbnRpdHkoc291cmNlKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAg
ICAgICAgICAgIG1fc3RhdGUgPSBSQ0RBVEFTdGF0ZTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgUkFXVEVYVFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAo
Y2MgPT0gJzwnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQVdURVhUTGVzc1RoYW5TaWdu
U3RhdGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rlcihj
Yyk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RB
VEUoQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUpCisgICAgICAgIGlmICghcHJvY2Vzc0Vu
dGl0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRv
a2VuKCk7CisgICAgICAgIFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOworICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShSQ0RBVEFTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICcmJykK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5SQ0RBVEFTdGF0ZSk7
CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNE
QVRBTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbWl0Q2hh
cmFjdGVyKGNjKTsKKyAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFTdGF0ZSk7CisgICAgRU5EX1NU
QVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGUp
CisgICAgICAgIGlmICghcHJvY2Vzc0VudGl0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHNob3Vs
ZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RB
VEFTdGF0ZSk7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRTdGF0
ZSkKKyAgICAgICAgaWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVY
VExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcihjYyk7CisgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVFN0YXRlKTsKKyAgICBFTkRfU1RB
VEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YVN0YXRlKQorICAgICAgICBpZiAoY2Mg
PT0gJzwnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhTGVzc1RoYW5TaWduU3Rh
dGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3RhdGUpOworICAgIEVORF9TVEFURSgpCisKKyAgICBC
RUdJTl9TVEFURShQTEFJTlRFWFRTdGF0ZSkKKyAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Cisg
ICAgICAgIEFEVkFOQ0VfVE8oUExBSU5URVhUU3RhdGUpOworICAgIEVORF9TVEFURSgpCisKKyAg
ICBCRUdJTl9TVEFURShUYWdPcGVuU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnIScpCisgICAg
ICAgICAgICBBRFZBTkNFX1RPKE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJy8nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhFbmRUYWdPcGVuU3Rh
dGUpOworICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAg
ICAgICBtX3Rva2VuLT5iZWdpblN0YXJ0VGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAg
ICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2En
ICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5TdGFydFRhZyhjYyk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJz8nKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgLy8gVGhlIHNwZWMgY29uc3VtZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGJlZm9yZSBzd2l0
Y2hpbmcKKyAgICAgICAgICAgIC8vIHRvIHRoZSBib2d1cyBjb21tZW50IHN0YXRlLCBidXQgaXQn
cyBlYXNpZXIgdG8gaW1wbGVtZW50CisgICAgICAgICAgICAvLyBpZiB3ZSByZWNvbnN1bWUgdGhl
IGN1cnJlbnQgY2hhcmFjdGVyLgorICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVu
dFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBSRUNPTlNVTUVf
SU4oRGF0YVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFNjcmlwdERhdGFTdGF0ZTog
ewotICAgICAgICAgICAgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
U2NyaXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgRU5EX1NU
QVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEVuZFRhZ09wZW5TdGF0ZSkKKyAgICAgICAgaWYgKGNj
ID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFn
KHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAg
ICAgbV90b2tlbi0+YmVnaW5FbmRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdO
YW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAg
ZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRGF0YVN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oQm9ndXNDb21tZW50U3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2UgUExBSU5URVhUU3RhdGU6IHsKLSAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5Lgor
ICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShUYWdOYW1lU3RhdGUpCisgICAgICAg
IGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9
PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7
CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Vs
ZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAg
ICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYg
KGNjID49ICdBJyAmJiBjYyA8PSAnWicpCisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05h
bWUodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9OYW1lKGNjKTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHku
CisgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKKyAgICBFTkRfU1RBVEUoKQorCisg
ICAgQkVHSU5fU1RBVEUoUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpCisgICAgICAgIGlmIChjYyA9
PSAnLycpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFyKCk7CisgICAgICAg
ICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihS
Q0RBVEFTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBUYWdPcGVuU3RhdGU6IHsKLSAg
ICAgICAgICAgIGlmIChjYyA9PSAnIScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IE1hcmt1
cERlY2xhcmF0aW9uT3BlblN0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBFbmRUYWdPcGVuU3RhdGU7Ci0gICAgICAgICAgICBl
bHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAgbV90b2tl
bi0+YmVnaW5TdGFydFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBUYWdOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBj
YyA8PSAneicpIHsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpblN0YXJ0VGFnKGNjKTsK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnTmFtZVN0YXRlOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnPycpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0NvbW1lbnRTdGF0ZTsKLSAgICAgICAgICAg
ICAgICAvLyBUaGUgc3BlYyBjb25zdW1lcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYmVmb3JlIHN3
aXRjaGluZwotICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBib2d1cyBjb21tZW50IHN0YXRlLCBi
dXQgaXQncyBlYXNpZXIgdG8gaW1wbGVtZW50Ci0gICAgICAgICAgICAgICAgLy8gaWYgd2UgcmVj
b25zdW1lIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOworICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFU
RShSQ0RBVEFFbmRUYWdPcGVuU3RhdGUpCisgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0g
J1onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOworICAgICAg
ICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAg
QURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNj
ID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFw
cGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoJy8nKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBFbmRUYWdPcGVuU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA+
PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRU
YWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnTmFtZVN0
YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0g
ICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5FbmRUYWcoY2MpOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBUYWdOYW1lU3RhdGU7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NU
QVRFKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSkKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8
PSAnWicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAg
ICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAg
ICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
YXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcoY2MpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0g
J1x4MEMnIHx8IGNjID09ICcgJykgeworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRl
RW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKEJlZm9y
ZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykg
eworICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAg
ICAgICAgICAgIEZMVVNIX0FORF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gQm9ndXNDb21tZW50U3RhdGU7Ci0gICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkK
KyAgICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJs
eS4KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwor
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOworICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOworICAgICAgICAgICAgbV9idWZmZXJl
ZEVuZFRhZ05hbWUuY2xlYXIoKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBUYWdOYW1lU3RhdGU6IHsKLSAgICAgICAgICAg
IGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9
PSAnICcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0
ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49
ICdBJyAmJiBjYyA8PSAnWicpCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1l
KHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV90
b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJF
R0lOX1NUQVRFKFJBV1RFWFRMZXNzVGhhblNpZ25TdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICcv
JykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAg
IEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgQURW
QU5DRV9UTyhSQVdURVhURW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQVdU
RVhUU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgUkNEQVRBTGVzc1RoYW5TaWduU3Rh
dGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBtX3Rl
bXBvcmFyeUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVk
RW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQ0RBVEFF
bmRUYWdPcGVuU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkNEQVRBU3RhdGU7
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ09w
ZW5TdGF0ZSkKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAg
ICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3Np
YmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RF
WFRFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8
PSAneicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAg
ICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8o
UkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKCc8Jyk7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7CisgICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBj
YXNlIFJDREFUQUVuZFRhZ09wZW5TdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID49ICdBJyAm
JiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQo
Y2MpOwotICAgICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2Mp
KTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkNEQVRBRW5kVGFnTmFtZVN0YXRlOwotICAg
ICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAg
ICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBhZGRU
b1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkNEQVRBRW5k
VGFnTmFtZVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBSQ0RBVEFTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ05h
bWVTdGF0ZSkKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAg
ICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3Np
YmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RF
WFRFbmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8
PSAneicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAg
ICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8o
UkFXVEVYVEVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0g
JyAnKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAg
ICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0
YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hf
QU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVF
bmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERh
dGFTdGF0ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBS
RUNPTlNVTUVfSU4oUkFXVEVYVFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFJDREFU
QUVuZFRhZ05hbWVTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAn
WicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAg
ICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewotICAgICAgICAgICAg
ICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgYWRkVG9Q
b3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9
PSAnICcpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWVT
dGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygp
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5k
VGFnKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwotICAgICAgICAgICAgICAgIG1fYnVm
ZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFJDREFU
QVN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERh
dGFMZXNzVGhhblNpZ25TdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICcvJykgeworICAgICAgICAg
ICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZl
cmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRW5kVGFnT3BlblN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnIScpIHsKKyAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
JyEnKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOworICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSBSQVdURVhUTGVzc1RoYW5TaWduU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9
PSAnLycpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwotICAg
ICAgICAgICAgICAgIEFTU0VSVChtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBSQVdURVhURW5kVGFnT3BlblN0YXRlOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IFJBV1RFWFRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgIEVORF9TVEFURSgpCisK
KyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRlKQorICAgICAgICBpZiAo
Y2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
YXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2Uo
Y2MpKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAg
ICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2li
bGVFbmRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFt
ZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwn
KTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAgIFJFQ09OU1VN
RV9JTihTY3JpcHREYXRhU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgUkFXVEVYVEVu
ZFRhZ09wZW5TdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicp
IHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAg
ICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gUkFXVEVYVEVuZFRhZ05hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewotICAgICAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVu
ZFRhZyhjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFJBV1RFWFRFbmRUYWdOYW1lU3Rh
dGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
JzwnKTsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IFJBV1RFWFRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0
ZSkKKyAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5k
VGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFF
bmRUYWdOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAn
eicpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAg
ICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBp
ZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0g
JyAnKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAg
ICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0
YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hf
QU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVF
bmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERh
dGFTdGF0ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsK
KyAgICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBS
RUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFJB
V1RFWFRFbmRUYWdOYW1lU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2Mg
PD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsK
LSAgICAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAg
ICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIGFk
ZFRvUG9zc2libGVFbmRUYWcoY2MpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwg
Y2MgPT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFn
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVO
YW1lU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRU
YWcoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0
ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRl
OwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAg
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4t
PmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKLSAgICAgICAgICAgICAgICBt
X2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBS
QVdURVhUU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBicmVhazsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2Ny
aXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnLScpIHsKKyAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHRE
YXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJF
Q09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJ
Tl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpCisgICAgICAgIGlmIChjYyA9
PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURW
QU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgIEVORF9TVEFU
RSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZFN0YXRlKQorICAgICAgICBp
ZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpOworICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2Fw
ZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZW1pdENo
YXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3Rh
dGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUxlc3NUaGFuU2lnblN0YXRl
OiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1w
b3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVu
ZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0
YUVuZFRhZ09wZW5TdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyEnKSB7Ci0g
ICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJyEnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2Fw
ZVN0YXJ0U3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRl
OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9T
VEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZSkKKyAg
ICAgICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Cisg
ICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhTY3Jp
cHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRW5kVGFn
T3BlblN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewot
ICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAg
ICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1w
b3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5k
VGFnKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVuZFRhZ05hbWVT
dGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cignPCcpOwotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShT
Y3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnLScpIHsK
KyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhT
Y3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc8JykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNp
Z25TdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1p
dENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSBTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAo
Y2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVm
ZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xv
d2VyQ2FzZShjYykpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0g
J3onKSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAg
ICAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwg
Y2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNB
cHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0g
QmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVG
bHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8n
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1heWJlRmx1c2hCdWZm
ZXJlZEVuZFRhZygpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcignPCcpOwotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7Ci0g
ICAgICAgICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgRU5EX1NUQVRFKCkKKwor
ICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpCisgICAg
ICAgIGlmIChjYyA9PSAnLycpIHsKKyAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNsZWFy
KCk7CisgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGUp
OworICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwor
ICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKKyAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmFwcGVuZCh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5D
RV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
PCcpOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBtX3RlbXBv
cmFyeUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5k
KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0
U3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcp
OworICAgICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGU6IHsKLSAgICAg
ICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0
YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2Ny
aXB0RGF0YVN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNj
cmlwdERhdGFFc2NhcGVkRW5kVGFnT3BlblN0YXRlKQorICAgICAgICBpZiAoY2MgPj0gJ0EnICYm
IGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsK
KyAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKKyAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5k
VGFnKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdO
YW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
PCcpOworICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOworICAgICAgICAgICAgUkVDT05T
VU1FX0lOKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
U2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0g
Jy0nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFTdGF0ZTsKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RB
VEUoU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGUpCisgICAgICAgIGlmIChjYyA+PSAn
QScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQo
Y2MpOworICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwor
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7
CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAgICAg
ICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKKyAgICAgICAgICAgIGFkZFRvUG9zc2li
bGVFbmRUYWcoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZEVu
ZFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY2MgPT0g
J1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAg
ICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlz
QXBwcm9wcmlhdGVFbmRUYWcoKSkKKyAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFO
Q0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRUYWcoKSkK
KyAgICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJzwnKTsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKKyAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQ2hhcmFjdGVyKG1fdGVtcG9yYXJ5QnVmZmVyKTsKKyAgICAgICAg
ICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVf
SU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3Jp
cHREYXRhRXNjYXBlZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy0nKSB7Ci0gICAg
ICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IFNjcmlwdERhdGFFc2NhcGVkRGFzaFN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnPCcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkTGVzc1Ro
YW5TaWduU3RhdGU7CisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERh
dGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNj
ID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnIHx8IGNjID09ICcvJyB8fCBj
YyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAg
aWYgKHRlbXBvcmFyeUJ1ZmZlcklzKHNjcmlwdFRhZy5sb2NhbE5hbWUoKSkpCisgICAgICAgICAg
ICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRXNjYXBlZERhc2hTdGF0ZTogewotICAgICAg
ICAgICAgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2Mp
OwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3Rh
dGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZTsKLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAg
IGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5k
KHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3Vi
bGVFc2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2Mg
PD0gJ3onKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgRU5EX1NUQVRFKCkK
KworICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpCisgICAgICAg
IGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAg
ICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZSk7CisgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNj
KTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhh
blNpZ25TdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3Rh
dGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgZW1pdENo
YXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGU7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAg
IEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERh
c2hTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICctJykgeworICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVk
RGFzaERhc2hTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CisgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0
RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHRE
YXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy8n
KSB7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNFbXB0eSgpKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGU7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rlcihj
Yyk7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAgICAg
ICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGU7Ci0g
ICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAg
ICAgICAgICBlbWl0Q2hhcmFjdGVyKCc8Jyk7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cihjYyk7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAg
ICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJ
Tl9TVEFURShTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpCisgICAgICAgIGlm
IChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgeworICAgICAgICAgICAgZW1pdENoYXJhY3Rlcihj
Yyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1Ro
YW5TaWduU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFT
dGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsK
KyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW5TdGF0ZTog
ewotICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIGFkZFRv
UG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFy
eUJ1ZmZlci5hcHBlbmQoY2MpOwotICAgICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWco
Y2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05h
bWVTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcignPCcpOwotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAv
LyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVH
SU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSkKKyAgICAg
ICAgaWYgKGNjID09ICcvJykgeworICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAg
ICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICBF
TkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0
YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAn
XHgwQycgfHwgY2MgPT0gJyAnIHx8IGNjID09ICcvJyB8fCBjYyA9PSAnPicpIHsKKyAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUJ1ZmZlcklz
KHNjcmlwdFRhZy5sb2NhbE5hbWUoKSkpCisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3Jp
cHREYXRhRXNjYXBlZFN0YXRlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAgICAgICB9IGVsc2Ug
aWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIo
Y2MpOworICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRvTG93ZXJDYXNlKGNj
KSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmRTdGF0
ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgeworICAgICAg
ICAgICAgZW1pdENoYXJhY3RlcihjYyk7CisgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5h
cHBlbmQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBl
RW5kU3RhdGUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3Jp
cHREYXRhRG91YmxlRXNjYXBlZFN0YXRlKTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5f
U1RBVEUoQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDkn
IHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAg
ICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICBlbHNlIGlm
IChjYyA9PSAnLycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5E
X1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2Mg
PD0gJ1onKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwor
ICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8
JyB8fCBjYyA9PSAnPScpCisgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOworICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9BdHRyaWJ1dGVOYW1lKGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmli
dXRlTmFtZVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFNjcmlwdERhdGFFc2NhcGVk
RW5kVGFnTmFtZVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICda
JykgewotICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAg
ICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAg
ICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICAg
ICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBhZGRUb1Bv
c3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09
ICcgJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZVN0
YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzQXBwcm9wcmlhdGVFbmRU
YWcoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwotICAgICAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgbV9idWZm
ZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0
RGF0YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9w
ZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlTmFtZVN0
YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAn
XHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckF0dHJpYnV0
ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJz0nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRl
KTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVT
VU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAn
WicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2Vy
Q2FzZShjYykpOworICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcn
IHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScpCisgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Cisg
ICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAg
ICAgICAgY2FzZSBTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnRTdGF0ZTogewotICAgICAgICAg
ICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNj
ID09ICcgJyB8fCBjYyA9PSAnLycgfHwgY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1p
dENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgaWYgKHRlbXBvcmFyeUJ1ZmZlcklzKHNj
cmlwdFRhZy5sb2NhbE5hbWUoKSkpCi0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3Jp
cHREYXRhRG91YmxlRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkU3RhdGU7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBl
bmQodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYm
IGNjIDw9ICd6JykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZFN0YXRlOwot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFU
RSgpCisKKyAgICBCRUdJTl9TVEFURShBZnRlckF0dHJpYnV0ZU5hbWVTdGF0ZSkKKyAgICAgICAg
aWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09
ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpOwor
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZD
bG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc9JykKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7CisgICAgICAgIGVs
c2UgaWYgKGNjID09ICc9JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3Rh
dGUpOworICAgICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CisgICAgICAg
ICAgICBtX3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5D
RV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
aWYgKGNjID09ICciJyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JykKKyAgICAgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmlidXRl
KCk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2MpOworICAg
ICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZTogewotICAgICAgICAgICAgaWYg
KGNjID09ICctJykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7Ci0gICAgICAgICAgICAgICAgZW1pdENo
YXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFEb3VibGVF
c2NhcGVkTGVzc1RoYW5TaWduU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShCZWZvcmVB
dHRyaWJ1dGVWYWx1ZVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdc
eDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9U
TyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyIn
KQorICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRl
KTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKQorICAgICAgICAgICAgUkVDT05TVU1FX0lO
KEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICdc
JycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3Rh
dGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8
IGNjID09ICdgJykKKyAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7CisgICAgICAgICAgICBBRFZB
TkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAg
Y2FzZSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZTogewotICAgICAgICAgICAgaWYg
KGNjID09ICctJykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZERhc2hEYXNoU3RhdGU7
Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgewotICAgICAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91
YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
U2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAg
RU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVk
U3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnIicpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEFm
dGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcm
JykgeworICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICciJzsKKyAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0
cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURv
dWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIFNjcmlwdERhdGFEb3Vi
bGVFc2NhcGVkRGFzaERhc2hTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICctJykKLSAg
ICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNj
ID09ICc8JykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRl
OwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBl
bWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0
YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRT
dGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVW
YWx1ZVNpbmdsZVF1b3RlZFN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1wnJykKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKKyAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJyYnKSB7CisgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hh
cmFjdGVyID0gJ1wnJzsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNl
SW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBj
YXNlIFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGU6IHsKLSAgICAgICAg
ICAgIGlmIChjYyA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsK
LSAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGU7Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNj
YXBlZFN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5Lgor
ICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVWYWx1ZVVucXVvdGVk
U3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09
ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJp
YnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcmJykgeworICAgICAgICAg
ICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICc+JzsKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0
YVN0YXRlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNj
ID09ICdcJycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9JyB8fCBjYyA9PSAnYCcpCisgICAgICAg
ICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
QXR0cmlidXRlVmFsdWUoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1
ZVVucXVvdGVkU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YURvdWJs
ZUVzY2FwZUVuZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09
ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnIHx8IGNjID09ICcvJyB8fCBjYyA9
PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAg
ICAgICBpZiAodGVtcG9yYXJ5QnVmZmVySXMoc2NyaXB0VGFnLmxvY2FsTmFtZSgpKSkKLSAgICAg
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkU3RhdGU7Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURv
dWJsZUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNj
IDw9ICdaJykgewotICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAg
ICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0b0xvd2VyQ2FzZShjYykpOwotICAgICAg
ICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7Ci0gICAgICAgICAgICAg
ICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
YXBwZW5kKGNjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRF
KENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSkgeworICAgICAgICBib29s
IG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKKyAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBj
b25zdW1lRW50aXR5KCptX3NvdXJjZSwgbm90RW5vdWdoQ2hhcmFjdGVycyk7CisgICAgICAgIGlm
IChub3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZm
ZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKCcmJyk7CisgICAgICAgIGVsc2UgaWYgKHZh
bHVlIDwgMHhGRkZGKQorICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1
ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9B
dHRyaWJ1dGVWYWx1ZShVMTZfTEVBRCh2YWx1ZSkpOworICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9BdHRyaWJ1dGVWYWx1ZShVMTZfVFJBSUwodmFsdWUpKTsKKyAgICAgICAgfQorICAgICAg
ICAvLyBXZSdyZSBzdXBwb3NlZCB0byBzd2l0Y2ggYmFjayB0byB0aGUgYXR0cmlidXRlIHZhbHVl
IHN0YXRlIHRoYXQKKyAgICAgICAgLy8gd2Ugd2VyZSBpbiB3aGVuIHdlIHdlcmUgc3dpdGNoZWQg
aW50byB0aGlzIHN0YXRlLiAgUmF0aGVyIHRoYW4KKyAgICAgICAgLy8ga2VlcGluZyB0cmFjayBv
ZiB0aGlzIGV4cGxpY3RseSwgd2Ugb2JzZXJ2ZSB0aGF0IHRoZSBwcmV2aW91cworICAgICAgICAv
LyBzdGF0ZSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVy
LgorICAgICAgICBpZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnIicpCisgICAg
ICAgICAgICBSRUNPTlNVTUVfSU4oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgaWYgKG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJ1wnJykKKyAg
ICAgICAgICAgIFJFQ09OU1VNRV9JTihBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsK
KyAgICAgICAgZWxzZSBpZiAobV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnPicpCisg
ICAgICAgICAgICBSRUNPTlNVTUVfSU4oQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAg
IEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVk
U3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09
ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJp
YnV0ZU5hbWVTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2Mg
PT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGU7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVu
dFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgICAg
IG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBBdHRyaWJ1dGVOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2Mg
PT0gJz0nKQotICAgICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwotICAgICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IEF0dHJpYnV0ZU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9T
VEFURShTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnPicpIHsK
KyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNV
TUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0
YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEF0dHJpYnV0ZU5hbWVTdGF0ZTogewotICAg
ICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMn
IHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJBdHRyaWJ1dGVO
YW1lU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGNjID09ICc9JykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRl
VmFsdWVTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAg
ICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0
YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKQot
ICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2Fz
ZShjYykpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNjID09ICci
JyB8fCBjYyA9PSAnXCcnIHx8IGNjID09ICc8JyB8fCBjYyA9PSAnPScpCi0gICAgICAgICAgICAg
ICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9BdHRyaWJ1dGVOYW1lKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRl
TmFtZVN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBF
T0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCisgICAgICAgIGJyZWFrOworICAgIEVORF9TVEFURSgpCisKKyAgICBC
RUdJTl9TVEFURShCb2d1c0NvbW1lbnRTdGF0ZSkKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc3Rh
dGUgaXNuJ3QgY29ycmVjdCBiZWNhdXNlIHdlJ2xsIHRlcm1pbmF0ZSB0aGUKKyAgICAgICAgLy8g
Y29tbWVudCBlYXJseSBpZiB3ZSBkb24ndCBoYXZlIHRoZSB3aG9sZSBpbnB1dCBzdHJlYW0gYXZh
aWxhYmxlLgorICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKKyAgICAgICAgd2hpbGUg
KCFtX3NvdXJjZS0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBjYyA9ICoqbV9zb3VyY2U7Cisg
ICAgICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNj
KTsKKyAgICAgICAgICAgIG1fc291cmNlLT5hZHZhbmNlKG1fbGluZU51bWJlcik7CisgICAgICAg
IH0KKyAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisK
KyAgICBCRUdJTl9TVEFURShNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZSkKKyAgICAgICAgaWYg
KGNjID09ICctJykgeworICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1
bHQgcmVzdWx0ID0gbV9zb3VyY2UtPmxvb2tBaGVhZChkYXNoRGFzaFN0cmluZyk7CisgICAgICAg
ICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKKyAgICAgICAg
ICAgICAgICBtX3NvdXJjZS0+YWR2YW5jZUFuZEFTU0VSVCgnLScpOworICAgICAgICAgICAgICAg
IG1fc291cmNlLT5hZHZhbmNlQW5kQVNTRVJUKCctJyk7CisgICAgICAgICAgICAgICAgbV90b2tl
bi0+YmVnaW5Db21tZW50KCk7CisgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKENvbW1lbnRT
dGFydFN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0
cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxk
RW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
RCcgfHwgY2MgPT0gJ2QnKSB7CisgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVh
ZFJlc3VsdCByZXN1bHQgPSBtX3NvdXJjZS0+bG9va0FoZWFkSWdub3JpbmdDYXNlKGRvY3R5cGVT
dHJpbmcpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1h
dGNoKSB7CisgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2Fz
ZSgqbV9zb3VyY2UsICJkb2N0eXBlIik7CisgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKERP
Q1RZUEVTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRT
dHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNob3Vs
ZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgIH0KKyAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICAgICAgLy8gRklYTUU6IFdlJ3JlIHN0aWxsIG1pc3NpbmcgdGhlIGJp
dHMgYWJvdXQgdGhlIGluc2VydGlvbiBtb2RlIGJlaW5nIGluIGZvcmVpZ24gY29udGVudDoKKyAg
ICAgICAgLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29y
ay9tdWx0aXBhZ2UvdG9rZW5pemF0aW9uLmh0bWwjbWFya3VwLWRlY2xhcmF0aW9uLW9wZW4tc3Rh
dGUKKyAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3Vz
Q29tbWVudFN0YXRlKTsKKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29tbWVu
dFN0YXJ0U3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnLScpCisgICAgICAgICAgICBBRFZBTkNF
X1RPKENvbW1lbnRTdGFydERhc2hTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+Jykg
eworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JF
U1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0
YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyQXR0cmlidXRlTmFtZVN0YXRlOiB7
Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAn
XHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTZWxmQ2xvc2lu
Z1N0YXJ0VGFnU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPScpCi0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGU7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2Vu
KCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewotICAgICAgICAgICAgICAgIG1fdG9r
ZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
QXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBBdHRyaWJ1dGVOYW1lU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcpCi0gICAgICAgICAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YWRk
TmV3QXR0cmlidXRlKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1
dGVOYW1lKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlTmFtZVN0YXRl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJv
cGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKENvbW1lbnRTdGFydERh
c2hTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICctJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8o
Q29tbWVudEVuZFN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERh
dGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0NvbW1lbnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7
CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSBCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2Mg
PT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKQot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRl
OwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGlmIChjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8IGNjID09ICdgJykKLSAgICAgICAgICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0F0dHJpYnV0ZVZhbHVlKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRl
VmFsdWVVbnF1b3RlZFN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisK
KyAgICBCRUdJTl9TVEFURShDb21tZW50U3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnLScpCisg
ICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmREYXNoU3RhdGUpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAg
ICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBdHRy
aWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJyIn
KQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3Rh
dGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnJicpIHsKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlOwotICAgICAg
ICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnIic7Ci0gICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVl
KGNjKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAg
IEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShDb21tZW50RW5kRGFzaFN0YXRlKQorICAg
ICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kU3Rh
dGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVu
dCgnLScpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNl
IEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9
PSAnXCcnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckF0dHJpYnV0ZVZhbHVlUXVv
dGVkU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnJicpIHsKLSAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlOwot
ICAgICAgICAgICAgICAgIG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPSAnXCcnOwotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1
dGVWYWx1ZShjYyk7Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4K
LSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJs
eS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZFN0YXRlKQor
ICAgICAgICBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERh
dGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScg
fHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb0NvbW1lbnQoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5k
U3BhY2VTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyEnKSB7CisgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50RW5kQmFu
Z1N0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnLScpIHsKKyAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0n
KTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAg
ICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21t
ZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKKyAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZB
TkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBdHRyaWJ1dGVW
YWx1ZVVucXVvdGVkU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2Mg
PT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGNjID09ICcmJykgewotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJSZWZlcmVu
Y2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGU7Ci0gICAgICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxs
b3dlZENoYXJhY3RlciA9ICc+JzsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7
Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nIHx8
IGNjID09ICdgJykKLSAgICAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNjKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAg
IEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShDb21tZW50RW5kQmFuZ1N0YXRlKQorICAg
ICAgICBpZiAoY2MgPT0gJy0nKSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1l
bnQoJy0nKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCchJyk7CisgICAgICAgICAgICBBRFZB
TkNFX1RPKENvbW1lbnRFbmREYXNoU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+
JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOworICAgICAg
ICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CisgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb0NvbW1lbnQoJyEnKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29t
bWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGU6
IHsKLSAgICAgICAgICAgIGJvb2wgbm90RW5vdWdoQ2hhcmFjdGVycyA9IGZhbHNlOwotICAgICAg
ICAgICAgdW5zaWduZWQgdmFsdWUgPSBjb25zdW1lRW50aXR5KHNvdXJjZSwgbm90RW5vdWdoQ2hh
cmFjdGVycyk7Ci0gICAgICAgICAgICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsK
LSAgICAgICAgICAgIGlmICghdmFsdWUpCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9BdHRyaWJ1dGVWYWx1ZSgnJicpOwotICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPCAweEZG
RkYpCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZSh2YWx1
ZSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRU
b0F0dHJpYnV0ZVZhbHVlKFUxNl9MRUFEKHZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShVMTZfVFJBSUwodmFsdWUpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIC8vIFdlJ3JlIHN1cHBvc2VkIHRvIHN3aXRjaCBiYWNrIHRvIHRoZSBh
dHRyaWJ1dGUgdmFsdWUgc3RhdGUgdGhhdAotICAgICAgICAgICAgLy8gd2Ugd2VyZSBpbiB3aGVu
IHdlIHdlcmUgc3dpdGNoZWQgaW50byB0aGlzIHN0YXRlLiAgUmF0aGVyIHRoYW4KLSAgICAgICAg
ICAgIC8vIGtlZXBpbmcgdHJhY2sgb2YgdGhpcyBleHBsaWN0bHksIHdlIG9ic2VydmUgdGhhdCB0
aGUgcHJldmlvdXMKLSAgICAgICAgICAgIC8vIHN0YXRlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IG1f
YWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIuCi0gICAgICAgICAgICBpZiAobV9hZGRpdGlvbmFs
QWxsb3dlZENoYXJhY3RlciA9PSAnIicpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJp
YnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChtX2FkZGl0
aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICdcJycpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IEF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmICht
X2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID09ICc+JykKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShDb21tZW50RW5kU3BhY2VTdGF0ZSkKKyAgICAgICAgaWYgKGNj
ID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykg
eworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQ29tbWVudEVuZFNwYWNlU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNj
ID09ICctJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9J
TihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGU6IHsK
LSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdc
eDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJp
YnV0ZU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigp
OwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShET0NUWVBFU3Rh
dGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdc
eDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVO
YW1lU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
CisgICAgICAgICAgICBSRUNPTlNVTUVfSU4oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGU6IHsKLSAgICAgICAg
ICAgIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1
dGVOYW1lU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RB
VEUoKQorCisgICAgQkVHSU5fU1RBVEUoQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSkKKyAgICAgICAg
aWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09
ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgIG1f
dG9rZW4tPmJlZ2luRE9DVFlQRSh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgQURWQU5D
RV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsK
KyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5iZWdp
bkRPQ1RZUEUoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBF
TUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRShjYyk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERP
Q1RZUEVOYW1lU3RhdGUpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQm9ndXNDb21tZW50U3Rh
dGU6IHsKLSAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luQ29tbWVudCgpOwotICAgICAgICAgICAg
d2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgY2MgPSAqc291cmNl
OwotICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAg
ICAgICAgICAgICAgc291cmNlLmFkdmFuY2UobV9saW5lTnVtYmVyKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBE
YXRhU3RhdGU7Ci0gICAgICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShET0NUWVBFTmFtZVN0
YXRlKQorICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAn
XHgwQycgfHwgY2MgPT0gJyAnKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVO
YW1lU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICBFTUlU
X0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYm
IGNjIDw9ICdaJykgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKHRvTG93ZXJD
YXNlKGNjKSk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVOYW1lU3RhdGUpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1lKGNjKTsKKyAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgY2FzZSBNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZTogewotICAgICAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHJpbmcsIGRhc2hEYXNoU3RyaW5nLCAoIi0tIikpOwotICAgICAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRvY3R5cGVTdHJpbmcsICgiZG9jdHlwZSIp
KTsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBTZWdtZW50
ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkKGRhc2hE
YXNoU3RyaW5nKTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAg
RU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSkKKyAg
ICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8
IGNjID09ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFTmFtZVN0YXRl
KTsKKyAgICAgICAgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9J
TihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnUCcg
fHwgY2MgPT0gJ3AnKSB7CisgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhl
YWRSZXN1bHQgcmVzdWx0ID0gbV9zb3VyY2UtPmxvb2tBaGVhZElnbm9yaW5nQ2FzZShwdWJsaWNT
dHJpbmcpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpE
aWRNYXRjaCkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgn
LScpOwotICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScpOwot
ICAgICAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGFydFN0YXRlOwotICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVEln
bm9yaW5nQ2FzZSgqbV9zb3VyY2UsICJwdWJsaWMiKTsKKyAgICAgICAgICAgICAgICAgICAgUkVD
T05TVU1FX0lOKEFmdGVyRE9DVFlQRVB1YmxpY0tleXdvcmRTdGF0ZSk7CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0
ZXJzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFj
dGVyVG9rZW4oc291cmNlKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ0QnIHx8IGNj
ID09ICdkJykgewotICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVz
dWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UoZG9jdHlwZVN0cmluZyk7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbigpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnUycgfHwgY2MgPT0gJ3MnKSB7
CisgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0
ID0gbV9zb3VyY2UtPmxvb2tBaGVhZElnbm9yaW5nQ2FzZShzeXN0ZW1TdHJpbmcpOwogICAgICAg
ICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgewotICAg
ICAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNvdXJj
ZSwgImRvY3R5cGUiKTsKLSAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTdGF0
ZTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGFk
dmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoKm1fc291cmNlLCAic3lzdGVtIik7Cisg
ICAgICAgICAgICAgICAgICAgIFJFQ09OU1VNRV9JTihBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3Jk
U3RhdGUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0
cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNo
b3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBXZSdyZSBzdGlsbCBtaXNzaW5nIHRoZSBiaXRzIGFib3V0IHRoZSBpbnNlcnRpb24gbW9kZSBi
ZWluZyBpbiBmb3JlaWduIGNvbnRlbnQ6Ci0gICAgICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3
Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24u
aHRtbCNtYXJrdXAtZGVjbGFyYXRpb24tb3Blbi1zdGF0ZQogICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0NvbW1lbnRTdGF0ZTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29tbWVudFN0YXJ0U3Rh
dGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IENvbW1lbnRTdGFydERhc2hTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+
JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAg
ZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
Q29tbWVudChjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGF0ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5Lgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21tZW50U3RhcnRE
YXNoU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IENvbW1lbnRFbmRTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+
JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAg
ZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
Q29tbWVudCgnLScpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChj
Yyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGF0ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21tZW50U3RhdGU6IHsKLSAgICAg
ICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRF
bmREYXNoU3RhdGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHBy
b3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21t
ZW50RW5kRGFzaFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy0nKQotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBDb21tZW50RW5kU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAg
ICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBDb21tZW50U3RhdGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTog
SGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQ29tbWVudEVuZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJz4nKSB7
Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdceDA5JyB8
fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgewotICAgICAgICAg
ICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50
KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVuZFNwYWNlU3RhdGU7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICchJykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9y
KCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRFbmRCYW5nU3RhdGU7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7
Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5h
cHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50U3Rh
dGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9w
ZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ29tbWVu
dEVuZEJhbmdTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICctJykgewotICAgICAgICAg
ICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFw
cGVuZFRvQ29tbWVudCgnIScpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50RW5k
RGFzaFN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAg
ICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERh
dGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9Db21tZW50KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
b21tZW50KCctJyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCch
Jyk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudFN0YXRlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIENvbW1lbnRFbmRTcGFjZVN0YXRlOiB7Ci0gICAgICAg
ICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwg
Y2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7
Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IENvbW1lbnRFbmREYXNoU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicp
IHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gQ29tbWVudFN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIERPQ1RZUEVTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQmVmb3JlRE9DVFlQRU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IEJlZm9yZURPQ1RZUEVOYW1lU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQmVmb3JlRE9DVFlQ
RU5hbWVTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgw
QScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUodG9Mb3dlckNhc2UoY2MpKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gRE9DVFlQRU5hbWVTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoKTsKLSAgICAgICAgICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoY2MpOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBET0NUWVBFTmFtZVN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIERPQ1RZUEVOYW1lU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChj
YyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcp
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyRE9DVFlQRU5hbWVTdGF0ZTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50
VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAg
ICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKQotICAgICAgICAgICAgICAgIG1f
dG9rZW4tPmFwcGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgQWZ0ZXJET0NUWVBFTmFtZVN0YXRlOiB7Ci0gICAgICAgICAgICBp
ZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0g
JyAnKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgaWYgKGNjID09ICc+Jykg
ewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHVibGljU3RyaW5nLCAoInB1YmxpYyIpKTsK
LSAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3lzdGVtU3RyaW5n
LCAoInN5c3RlbSIpKTsKLSAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJ1AnIHx8IGNjID09ICdw
JykgewotICAgICAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3Vs
dCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHB1YmxpY1N0cmluZyk7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRj
aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9y
aW5nQ2FzZShzb3VyY2UsICJwdWJsaWMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0g
U2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnUycgfHwgY2MgPT0gJ3MnKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9
IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uoc3lzdGVtU3RyaW5nKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKHNv
dXJjZSwgInN5c3RlbSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVy
RE9DVFlQRVN5c3RlbUtleXdvcmRTdGF0ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRT
dHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZ
UEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9G
IHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBB
ZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAn
XHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGU7
Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKLSAgICAgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZp
ZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVQdWJs
aWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNj
ID09ICdcJycpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVk
U3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBCZWZvcmVET0NUWVBFUHVibGljSWRlbnRp
ZmllclN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBB
JyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7Ci0gICAgICAgICAgICAgICAgbV90b2tl
bi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZTsKLSAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewotICAgICAgICAgICAgICAgIG1fdG9rZW4t
PnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAg
ICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0
ZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRl
OiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJyInKQotICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlm
IChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAg
ICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRU
b2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZp
ZXIoY2MpOwotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIERPQ1RZUEVQdWJsaWNJZGVu
dGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXCcnKQot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3Rh
dGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAg
ICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoY2MpOwotICAgICAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0
ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2Mg
PT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmV0d2Vl
bkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlOwotICAgICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICciJykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAg
ICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVR
dW90ZWRTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewotICAgICAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0
UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RP
Q1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShBZnRl
ckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwg
Y2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAgICBB
RFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAgICAgICBl
bHNlIGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAg
ICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAg
ICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0
YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CisgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRv
RW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50
aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7
CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRl
KTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVt
SWRlbnRpZmllcnNTdGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9
PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gQmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlOwot
ICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1
cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICciJykgewotICAgICAgICAgICAgICAgIG1fdG9rZW4t
PnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5z
ZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3Vz
RE9DVFlQRVN0YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEJl
Zm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgw
OScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAg
ICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpOworICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1Ymxp
Y0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICdcJycpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJU
b0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVu
dGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykg
eworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3Rh
dGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNj
ID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9y
ZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9
PSAnIicpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3Rh
dGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlk
ZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZ
UEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAg
ICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVu
dFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1
c0RPQ1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShE
T0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKQorICAgICAgICBpZiAoY2Mg
PT0gJyInKQorICAgICAgICAgICAgQURWQU5DRV9UTyhBZnRlckRPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAg
ICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoY2MpOworICAgICAgICAg
ICAgQURWQU5DRV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsK
ICAgICAgICAgfQotICAgICAgICBjYXNlIEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3Rh
dGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNj
ID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBpZiAoY2MgPT0gJyInKSB7Ci0gICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVt
SWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJ1wnJykgewotICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlk
ZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZ
UEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAg
ICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVu
dFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAg
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1
c0RPQ1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShE
T0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKQorICAgICAgICBpZiAoY2Mg
PT0gJ1wnJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFUHVibGljSWRlbnRp
ZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAg
ICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKKyAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1
b3RlZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJyInKQotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBBZnRlckRPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGU7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigp
OwotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1p
dEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3Rl
bUlkZW50aWZpZXIoY2MpOwotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJv
cGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1
YmxpY0lkZW50aWZpZXJTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAn
XHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlKTsKKyAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERh
dGFTdGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgeworICAgICAgICAgICAgZW1p
dFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJU
b0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVu
dGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycp
IHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5z
ZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9U
TyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3Rl
ZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlOwotICAgICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsK
LSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIGVtaXRD
dXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAg
ICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1J
ZGVudGlmaWVyKGNjKTsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5
LgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Bl
cmx5LgorICAgIEVORF9TVEFURSgpCisKKyAgICBCRUdJTl9TVEFURShCZXR3ZWVuRE9DVFlQRVB1
YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGUpCisgICAgICAgIGlmIChjYyA9PSAnXHgwOScg
fHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCisgICAgICAgICAg
ICBBRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0
ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgIEVNSVRfQU5EX1JF
U1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKKyAgICAg
ICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAg
ICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3Rh
dGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKKyAgICAgICAgICAgIG1fdG9r
ZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZB
TkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRl
KTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJT
dGF0ZTogewotICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwg
Y2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50
VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgorICAgIEVORF9TVEFURSgp
CisKKyAgICBCRUdJTl9TVEFURShBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGUpCisgICAg
ICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBj
YyA9PSAnICcpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVu
dGlmaWVyU3RhdGUpOworICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAgICAg
IGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlm
aWVyVG9FbXB0eVN0cmluZygpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVt
SWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
XCcnKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV90b2tl
bi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKKyAgICAgICAgICAgIEFEVkFO
Q0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwor
ICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBBRFZB
TkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEJvZ3Vz
RE9DVFlQRVN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAg
ICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRh
U3RhdGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBw
cm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVP
RiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQmVmb3JlRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgIGlm
IChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJU
b0VtcHR5U3RyaW5nKCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVu
dGlmaWVyRG91YmxlUXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycp
IHsKKyAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5n
KCk7CisgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xl
UXVvdGVkU3RhdGUpOworICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAg
ICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
ICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CisgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBDREFUQVNlY3Rpb25TdGF0ZTogeworICAgICAgICAvLyBGSVhNRTog
SGFuZGxlIEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUo
RE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSkKKyAgICAgICAgaWYgKGNj
ID09ICciJykKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRp
ZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlkZW50
aWZpZXIoY2MpOworICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmll
ckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgfQorICAgICAgICAvLyBGSVhNRTogSGFuZGxl
IEVPRiBwcm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdc
JycpCisgICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJT
dGF0ZSk7CisgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgeworICAgICAgICAgICAgZW1pdFBh
cnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBF
TUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihjYyk7CisgICAgICAgICAgICBB
RFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAg
ICAgICB9Ci0gICAgICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7Ci0gICAgICAgIGlm
IChtX2VtaXRQZW5kaW5nKSB7Ci0gICAgICAgICAgICBtX2VtaXRQZW5kaW5nID0gZmFsc2U7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJv
cGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAgIEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTdGF0ZSkKKyAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAn
XHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKKyAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKKyAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJz4nKQorICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Cisg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICB9Ci0gICAgfQotICAgIC8v
IFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyZWFtLiAgSWYgd2UgaGF2ZSBh
IGNoYXJhY3RlcgotICAgIC8vIHRva2VuIGJ1ZmZlcmVkLCB3ZSBzaG91bGQgZW1pdCBpdC4KLSAg
ICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKKyAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCisgICAgRU5EX1NUQVRFKCkKKworICAg
IEJFR0lOX1NUQVRFKEJvZ3VzRE9DVFlQRVN0YXRlKQorICAgICAgICBpZiAoY2MgPT0gJz4nKQor
ICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgIEFEVkFO
Q0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOworICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBw
cm9wZXJseS4KKyAgICBFTkRfU1RBVEUoKQorCisgICAgQkVHSU5fU1RBVEUoQ0RBVEFTZWN0aW9u
U3RhdGUpCisgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgIEFEVkFOQ0VfVE8oQ0RB
VEFTZWN0aW9uU3RhdGUpOworICAgIEVORF9TVEFURSgpCisKKyAgICBFTkRfU1RBVEVfTUFQKCkK
KworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogaW5s
aW5lIGJvb2wgSFRNTDVMZXhlcjo6dGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgU3RyaW5nJiBleHBl
Y3RlZFN0cmluZykKQEAgLTE1NjEsMzcgKzE1NzIsMTYgQEAgaW5saW5lIHZvaWQgSFRNTDVMZXhl
cjo6ZW1pdFBhcnNlRXJyb3IoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWlubGluZSB2
b2lkIEhUTUw1TGV4ZXI6Om1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpCi17Ci0gICAgQVNTRVJU
KG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIgfHwgbV90b2tlbi0+dHlw
ZSgpID09IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIGlmIChtX3Rva2VuLT50eXBl
KCkgPT0gSFRNTDVUb2tlbjo6Q2hhcmFjdGVyKSB7Ci0gICAgICAgIC8vIFdlIGhhdmUgYSBjaGFy
YWN0ZXIgdG9rZW4gcXVldWVkIHVwLiAgV2UgbmVlZCB0byBlbWl0IGl0IGJlZm9yZSB3ZQotICAg
ICAgICAvLyBjYW4gc3RhcnQgYmVnaW4gdGhlIGJ1ZmZlcmVkIGVuZCB0YWcgdG9rZW4uCi0gICAg
ICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmbHVz
aEJ1ZmZlcmVkRW5kVGFnKCk7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmZsdXNoQnVm
ZmVyZWRFbmRUYWcoKQotewotICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRU
YWdOYW1lKTsKLSAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgIGlmIChtX3N0
YXRlID09IERhdGFTdGF0ZSkKLSAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotfQotCiBpbmxp
bmUgdm9pZCBIVE1MNUxleGVyOjplbWl0Q3VycmVudFRva2VuKCkKIHsKICAgICBBU1NFUlQobV90
b2tlbi0+dHlwZSgpICE9IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIG1fZW1pdFBl
bmRpbmcgPSB0cnVlOwogICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6U3Rh
cnRUYWcpCiAgICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgp
OwogfQogCi1pbmxpbmUgYm9vbCBIVE1MNUxleGVyOjpzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0
ZXJUb2tlbihjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKK2lubGluZSBib29sIEhUTUw1
TGV4ZXI6OnNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCkKIHsKLSAgICByZXR1cm4g
c291cmNlLmlzQ2xvc2VkKCkgJiYgbV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9rZW46OkNoYXJh
Y3RlcjsKKyAgICByZXR1cm4gbV9zb3VyY2UtPmlzQ2xvc2VkKCkgJiYgbV90b2tlbi0+dHlwZSgp
ID09IEhUTUw1VG9rZW46OkNoYXJhY3RlcjsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9odG1sL0hU
TUw1TGV4ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oCShyZXZp
c2lvbiA2MDYxMCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzNiwzMSArMTM2LDMyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW5saW5l
IHZvaWQgZW1pdENvZGVQb2ludCh1bnNpZ25lZCk7CiAKICAgICAgICAgdW5zaWduZWQgY29uc3Vt
ZUVudGl0eShTZWdtZW50ZWRTdHJpbmcmLCBib29sJiBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKLSAg
ICAgICAgaW5saW5lIGJvb2wgcHJvY2Vzc0VudGl0eShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSk7
CisgICAgICAgIGlubGluZSBib29sIHByb2Nlc3NFbnRpdHkoKTsKIAogICAgICAgICBpbmxpbmUg
Ym9vbCB0ZW1wb3JhcnlCdWZmZXJJcyhjb25zdCBTdHJpbmcmKTsKIAorICAgICAgICBpbmxpbmUg
Ym9vbCBtYWluTG9vcCgpOworCiAgICAgICAgIC8vIFNvbWV0aW1lcyB3ZSBzcGVjdWxhdGl2ZWx5
IGNvbnN1bWUgaW5wdXQgY2hhcmFjdGVycyBhbmQgd2UgZG9uJ3QKICAgICAgICAgLy8ga25vdyB3
aGV0aGVyIHRoZXkgcmVwcmVzZW50IGVuZCB0YWdzIG9yIFJDREFUQSwgZXRjLiAgVGhlc2UKICAg
ICAgICAgLy8gZnVuY3Rpb25zIGhlbHAgbWFuYWdlIHRoZXNlIHN0YXRlLgogICAgICAgICBpbmxp
bmUgdm9pZCBhZGRUb1Bvc3NpYmxlRW5kVGFnKFVDaGFyIGNjKTsKICAgICAgICAgaW5saW5lIGJv
b2wgaXNBcHByb3ByaWF0ZUVuZFRhZygpOwotICAgICAgICBpbmxpbmUgdm9pZCBtYXliZUZsdXNo
QnVmZmVyZWRFbmRUYWcoKTsKLSAgICAgICAgaW5saW5lIHZvaWQgZmx1c2hCdWZmZXJlZEVuZFRh
ZygpOwogCi0gICAgICAgIGlubGluZSBib29sIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRv
a2VuKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpOworICAgICAgICBpbmxpbmUgYm9vbCBzaG91bGRF
bWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigpOwogCiAgICAgICAgIFN0YXRlIG1fc3RhdGU7CiAK
ICAgICAgICAgQXRvbWljU3RyaW5nIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lOwogCi0gICAgICAg
IC8vIG1fdG9rZW4gaXMgb3duZWQgYnkgdGhlIGNhbGxlci4gIElmIG5leHRUb2tlbiBpcyBub3Qg
b24gdGhlIHN0YWNrLAotICAgICAgICAvLyB0aGlzIG1lbWJlciBtaWdodCBiZSBwb2ludGluZyB0
byB1bmFsbG9jYXRlZCBtZW1vcnkuCisgICAgICAgIC8vIG1fdG9rZW4gYW5kIG1fc291cmNlIGFy
ZSBvd25lZCBieSB0aGUgY2FsbGVyLiBJZiBuZXh0VG9rZW4gaXMgbm90CisgICAgICAgIC8vIG9u
IHRoZSBzdGFjaywgdGhlc2UgbWVtYmVycyBtaWdodCBiZSBwb2ludGluZyB0byB1bmFsbG9jYXRl
ZCBtZW1vcnkuCiAgICAgICAgIEhUTUw1VG9rZW4qIG1fdG9rZW47CisgICAgICAgIFNlZ21lbnRl
ZFN0cmluZyogbV9zb3VyY2U7CisKICAgICAgICAgaW50IG1fbGluZU51bWJlcjsKIAogICAgICAg
ICBib29sIG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZzsKLSAgICAgICAgYm9vbCBtX2Vt
aXRQZW5kaW5nOwogCiAgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWIt
YXBwcy9jdXJyZW50LXdvcmsvI3RlbXBvcmFyeS1idWZmZXIKICAgICAgICAgVmVjdG9yPFVDaGFy
LCAzMj4gbV90ZW1wb3JhcnlCdWZmZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57850</attachid>
            <date>2010-06-04 00:52:26 -0700</date>
            <delta_ts>2010-06-04 15:24:49 -0700</delta_ts>
            <desc>Diff w/o changing indent</desc>
            <filename>bug-40048-20100604005225.patch</filename>
            <type>text/plain</type>
            <size>78878</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzE4YzY5ODJmNjZmNmE5NzAwYjdlMDJjOWM2OGMyZDQ5MTE3MzM4NS4uMTkxNGQxZTYxNjVlZGE1
MGY0MmE4NGRlNzRiY2M1ZjIzYmZjN2Y0ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wNi0wNCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgSFRNTDVMZXhlciBnbyBmYXN0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDA0OAorCisgICAgICAgIFRo
aXMgcGF0Y2ggY2hhbmdlcyB1cyBmcm9tIHVzaW5nIGEganVtcCB0YWJsZSBmb3IgZWFjaCBjaGFy
YWN0ZXIgdG8KKyAgICAgICAgdXNpbmcgYWJzb2x1dGUganVtcHMgYmV0d2VlbiBwYXJzZXIgc3Rh
dGVzLiAgVGhpcyBhcHBlYXJzIHRvIGJlIGFib3V0IGEKKyAgICAgICAgMSUgaW1wcm92ZW1lbnQg
b24gdGhlIHBhcnNlciBiZW5jaCBtYXJrICh3aGljaCBpcyAxLzEwdGggb2Ygd2hhdCB3ZQorICAg
ICAgICBuZWVkIHRvIGNhdGNoIHRoZSBvbGQgcGFyc2VyKS4KKworICAgICAgICBJJ3ZlIGtlcHQg
dGhlIHVuZGVybHlpbmcgbG9naWMgYXMgY2xvc2UgdG8gdGhlIG9sZCBsb2dpYyBhcyBwb3NzaWJs
ZS4KKyAgICAgICAgVGhpcyBuZXcgZm9ybSB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIGhhbmRsZSB0
aGUgaW5wdXQgc3RyZWFtIHBhcnQgb2YKKyAgICAgICAgdGhlIHNwZWMgYW5kIHRvIG1ha2UgZnVy
dGhlciBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuCisKKyAgICAgICAgKiBodG1sL0hUTUw1TGV4
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhlcjo6cmVzZXQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTDVMZXhlcjo6Y29uc3VtZUVudGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MNUxleGVyOjpwcm9jZXNzRW50aXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6
Om5leHRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjptYWluTG9vcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjplbWl0Q3VycmVudFRva2VuKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUw1TGV4ZXI6OnNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKToK
KyAgICAgICAgKiBodG1sL0hUTUw1TGV4ZXIuaDoKKwogMjAxMC0wNi0wMyAgQWJoaXNoZWsgQXJ5
YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2Fy
bHNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MNUxleGVyLmNwcAppbmRleCBhODE0MTY1NDFjOGU2ZWI4MDZjYmUwYThkYjk3MDEx
MDYxZWVmNTZlLi4yMGJiYzA4MTUzMzUwYWFiZDA5ODhjMGNkNGE2Y2Y5YzNhNzhhZDM1IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUw1TGV4ZXIuY3BwCkBAIC0xNTYsNyArMTU2LDYgQEAgdm9pZCBIVE1MNUxleGVyOjpyZXNldCgp
CiAgICAgbV90b2tlbiA9IDA7CiAgICAgbV9saW5lTnVtYmVyID0gMDsKICAgICBtX3NraXBMZWFk
aW5nTmV3TGluZUZvckxpc3RpbmcgPSBmYWxzZTsKLSAgICBtX2VtaXRQZW5kaW5nID0gZmFsc2U7
CiAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJhY3RlciA9ICdcMCc7CiB9CiAKQEAgLTMwNSwx
MCArMzA0LDEwIEBAIHVuc2lnbmVkIEhUTUw1TGV4ZXI6OmNvbnN1bWVFbnRpdHkoU2VnbWVudGVk
U3RyaW5nJiBzb3VyY2UsIGJvb2wmIG5vdEVub3VnaENoYXJhCiAgICAgcmV0dXJuIDA7CiB9CiAK
LWlubGluZSBib29sIEhUTUw1TGV4ZXI6OnByb2Nlc3NFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UpCitpbmxpbmUgYm9vbCBIVE1MNUxleGVyOjpwcm9jZXNzRW50aXR5KCkKIHsKICAgICBi
b29sIG5vdEVub3VnaENoYXJhY3RlcnMgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCB2YWx1ZSA9IGNv
bnN1bWVFbnRpdHkoc291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKKyAgICB1bnNpZ25lZCB2
YWx1ZSA9IGNvbnN1bWVFbnRpdHkoKm1fc291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKICAg
ICBpZiAobm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghdmFsdWUpCkBAIC0zMjQsOSArMzIzLDkgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4o
U2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgIC8vIHdpdGgg
dGhlIHNhbWUgdG9rZW4gc28gd2UgY2FuIGZpbmlzaCBpdC4KICAgICBBU1NFUlQoIW1fdG9rZW4g
fHwgbV90b2tlbiA9PSAmdG9rZW4gfHwgdG9rZW4udHlwZSgpID09IEhUTUw1VG9rZW46OlVuaW5p
dGlhbGl6ZWQpOwogICAgIG1fdG9rZW4gPSAmdG9rZW47CisgICAgbV9zb3VyY2UgPSAmc291cmNl
OwogCiAgICAgaWYgKCFtX2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkgJiYgIWlzRW5kVGFn
QnVmZmVyaW5nU3RhdGUobV9zdGF0ZSkpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxk
IGNhbGwgZmx1c2hCdWZmZXJlZEVuZFRhZygpLgogICAgICAgICAvLyBXZSBzdGFydGVkIGFuIGVu
ZCB0YWcgZHVyaW5nIG91ciBsYXN0IGl0ZXJhdGlvbi4KICAgICAgICAgbV90b2tlbi0+YmVnaW5F
bmRUYWcobV9idWZmZXJlZEVuZFRhZ05hbWUpOwogICAgICAgICBtX2J1ZmZlcmVkRW5kVGFnTmFt
ZS5jbGVhcigpOwpAQCAtMzQxLDY4MiArMzQwLDcxNSBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgICAg
IHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCdceDBBJyk7CiAgICAgbV9za2lwTGVhZGluZ05ld0xp
bmVGb3JMaXN0aW5nID0gZmFsc2U7CiAKKyAgICByZXR1cm4gbWFpbkxvb3AoKTsKK30KKworI2Rl
ZmluZSBCRUdJTl9TVEFURV9NQVAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIGlmIChtX3NvdXJjZS0+aXNFbXB0eSgpKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gc2hv
dWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIFVDaGFyIGNjID0gKiptX3NvdXJjZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN3aXRjaCAobV9zdGF0ZSkgeworCisjZGVmaW5l
IEJFR0lOX1NUQVRFKFN0YXRlTmFtZSkgY2FzZSBTdGF0ZU5hbWU6IFN0YXRlTmFtZToKKyNkZWZp
bmUgRU5EX1NUQVRFKCkgQVNTRVJUX05PVF9SRUFDSEVEKCk7IGJyZWFrOworI2RlZmluZSBFTkRf
U1RBVEVfTUFQKCkgfQorCisjZGVmaW5lIFJFQ09OU1VNRV9JTihTdGF0ZU5hbWUpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIG1fc3RhdGUgPSBTdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNjID0gKiptX3NvdXJjZTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGdvdG8g
U3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgQURWQU5DRV9UTyhTdGF0ZU5h
bWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBk
byB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlTmFtZTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zb3VyY2UtPmFk
dmFuY2UobV9saW5lTnVtYmVyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgaWYgKG1fc291cmNlLT5pc0VtcHR5KCkpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVy
ZWRDaGFyYWN0ZXJUb2tlbigpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2MgPSAq
Km1fc291cmNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgZ290byBTdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBFTUlUX0FORF9SRVNVTUVfSU4oU3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gU3Rh
dGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBtX3NvdXJjZS0+YWR2YW5jZShtX2xpbmVOdW1iZXIpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4g
dHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIF9GTFVTSF9CVUZGRVJFRF9FTkRf
VEFHKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tl
bjo6Q2hhcmFjdGVyIHx8ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICBtX3Rva2Vu
LT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6VW5pbml0aWFsaXplZCk7ICAgICAgICAgICAgICBcCisg
ICAgICAgIG1fc291cmNlLT5hZHZhbmNlKG1fbGluZU51bWJlcik7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVU
b2tlbjo6Q2hhcmFjdGVyKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1lKTsg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNs
ZWFyKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU3RhdGVOYW1lKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgbV9zdGF0ZSA9IFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX0ZMVVNIX0JVRkZFUkVEX0VORF9UQUcoKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKG1fc291
cmNlLT5pc0VtcHR5KCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbigp
OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2MgPSAqKm1fc291cmNlOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290
byBTdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBGTFVTSF9FTUlUX0FORF9S
RVNVTUVfSU4oU3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBtX3N0YXRlID0gU3RhdGVOYW1lOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfRkxVU0hfQlVG
RkVSRURfRU5EX1RBRygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitib29sIEhUTUw1
TGV4ZXI6Om1haW5Mb29wKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZGFz
aERhc2hTdHJpbmcsICgiLS0iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRv
Y3R5cGVTdHJpbmcsICgiZG9jdHlwZSIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgcHVibGljU3RyaW5nLCAoInB1YmxpYyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgc3lzdGVtU3RyaW5nLCAoInN5c3RlbSIpKTsKKwogICAgIC8vIFNvdXJjZTogaHR0cDov
L3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jdG9rZW5pc2F0aW9u
MAotICAgIC8vIEZJWE1FOiBUaGlzIHdoaWxlIHNob3VsZCBzdG9wIGFzIHNvb24gYXMgd2UgaGF2
ZSBhIHRva2VuIHRvIHJldHVybi4KLSAgICB3aGlsZSAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgVUNoYXIgY2MgPSAqc291cmNlOwotICAgICAgICBzd2l0Y2ggKG1fc3RhdGUpIHsKLSAg
ICAgICAgY2FzZSBEYXRhU3RhdGU6IHsKKyAgICBCRUdJTl9TVEFURV9NQVAoKQorCisgICAgICAg
IEJFR0lOX1NUQVRFKERhdGFTdGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA9PSAnJicpCi0gICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlOworICAg
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5EYXRhU3RhdGUpOwog
ICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1f
dG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gV2UgaGF2ZSBhIGJ1bmNoIG9mIGNoYXJhY3RlciB0b2tlbnMgcXVldWVkIHVwIHRo
YXQgd2UKICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGVtaXR0aW5nIGxhemlseSBoZXJlLgog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IFRhZ09wZW5TdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnT3BlblN0YXRlKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0
YXRlOiB7Ci0gICAgICAgICAgICBpZiAoIXByb2Nlc3NFbnRpdHkoc291cmNlKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsK
LSAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIFJDREFUQVN0YXRlOiB7CisgICAgICAgICAgICAgICAg
QURWQU5DRV9UTyhEYXRhU3RhdGUpOworICAgICAgICAgICAgfQorICAgICAgICBFTkRfU1RBVEUo
KQorCisgICAgICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJlZmVyZW5jZUluRGF0YVN0YXRlKQor
ICAgICAgICAgICAgaWYgKCFwcm9jZXNzRW50aXR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CisgICAgICAgICAgICBSRUNPTlNV
TUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9T
VEFURShSQ0RBVEFTdGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA9PSAnJicpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGU7CisgICAgICAg
ICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJSZWZlcmVuY2VJblJDREFUQVN0YXRlKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
UkNEQVRBTGVzc1RoYW5TaWduU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RB
VEFMZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIENoYXJhY3RlclJlZmVyZW5jZUluUkNEQVRBU3RhdGU6IHsKLSAgICAgICAgICAgIGlm
ICghcHJvY2Vzc0VudGl0eShzb3VyY2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRF
bWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOwotICAgICAgICAgICAgbV9zdGF0ZSA9
IFJDREFUQVN0YXRlOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBSQVdURVhUU3RhdGU6IHsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBU3RhdGUp
OworICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKENoYXJhY3RlclJl
ZmVyZW5jZUluUkNEQVRBU3RhdGUpCisgICAgICAgICAgICBpZiAoIXByb2Nlc3NFbnRpdHkoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
KTsKKyAgICAgICAgICAgIFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CisgICAgICAgIEVORF9T
VEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoUkFXVEVYVFN0YXRlKQogICAgICAgICAgICAg
aWYgKGNjID09ICc8JykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkFXVEVYVExlc3NUaGFu
U2lnblN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFXVEVYVExlc3NUaGFuU2ln
blN0YXRlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KGNjKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0
RGF0YVN0YXRlOiB7CisgICAgICAgICAgICBBRFZBTkNFX1RPKFJBV1RFWFRTdGF0ZSk7CisgICAg
ICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YVN0YXRlKQog
ICAgICAgICAgICAgaWYgKGNjID09ICc8JykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2Ny
aXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgUExBSU5URVhUU3RhdGU6IHsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2Ny
aXB0RGF0YVN0YXRlKTsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFU
RShQTEFJTlRFWFRTdGF0ZSkKICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUYWdPcGVuU3RhdGU6IHsKKyAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oUExBSU5URVhUU3RhdGUpOworICAgICAgICBFTkRfU1RBVEUo
KQorCisgICAgICAgIEJFR0lOX1NUQVRFKFRhZ09wZW5TdGF0ZSkKICAgICAgICAgICAgIGlmIChj
YyA9PSAnIScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IE1hcmt1cERlY2xhcmF0aW9uT3Bl
blN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oTWFya3VwRGVjbGFyYXRpb25PcGVu
U3RhdGUpOwogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBFbmRUYWdPcGVuU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhF
bmRUYWdPcGVuU3RhdGUpOwogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9
ICdaJykgewogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luU3RhcnRUYWcodG9Mb3dlckNh
c2UoY2MpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gVGFnTmFtZVN0YXRlOworICAgICAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oVGFnTmFtZVN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmJl
Z2luU3RhcnRUYWcoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBUYWdOYW1lU3RhdGU7
CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhUYWdOYW1lU3RhdGUpOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnPycpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigp
OwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0NvbW1lbnRTdGF0ZTsKICAgICAgICAg
ICAgICAgICAvLyBUaGUgc3BlYyBjb25zdW1lcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIgYmVmb3Jl
IHN3aXRjaGluZwogICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBib2d1cyBjb21tZW50IHN0YXRl
LCBidXQgaXQncyBlYXNpZXIgdG8gaW1wbGVtZW50CiAgICAgICAgICAgICAgICAgLy8gaWYgd2Ug
cmVjb25zdW1lIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICBSRUNPTlNVTUVfSU4oQm9ndXNDb21tZW50U3RhdGUpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAgICAgICAgICAgICAgZW1pdENo
YXJhY3RlcignPCcpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBFbmRUYWdPcGVuU3RhdGU6IHsKKyAgICAgICAg
RU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShFbmRUYWdPcGVuU3RhdGUpCiAgICAg
ICAgICAgICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewogICAgICAgICAgICAgICAgIG1f
dG9rZW4tPmJlZ2luRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IFRhZ05hbWVTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVT
dGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsK
ICAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkVuZFRhZyhjYyk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IFRhZ05hbWVTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFRh
Z05hbWVTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAg
ICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERh
dGFTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKERhdGFTdGF0ZSk7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzQ29tbWVudFN0YXRlOwotICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgIFJFQ09OU1VNRV9JTihCb2d1c0NvbW1lbnRTdGF0ZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJs
eS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVGFnTmFtZVN0
YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoVGFnTmFt
ZVN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwg
Y2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVm
b3JlQXR0cmlidXRlTmFtZVN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3Jl
QXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRU
b2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpCisgICAgICAgICAgICAgICAgQURW
QU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOworICAgICAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJz4nKQorICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUp
OworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykKICAgICAgICAg
ICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUodG9Mb3dlckNhc2UoY2MpKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUoY2MpOwogICAg
ICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFJDREFUQUxlc3NUaGFuU2lnblN0YXRlOiB7Cisg
ICAgICAgICAgICBBRFZBTkNFX1RPKFRhZ05hbWVTdGF0ZSk7CisgICAgICAgIEVORF9TVEFURSgp
CisKKyAgICAgICAgQkVHSU5fU1RBVEUoUkNEQVRBTGVzc1RoYW5TaWduU3RhdGUpCiAgICAgICAg
ICAgICBpZiAoY2MgPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
Y2xlYXIoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobV9idWZmZXJlZEVuZFRhZ05hbWUuaXNF
bXB0eSgpKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkNEQVRBRW5kVGFnT3BlblN0YXRl
OworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnT3BlblN0YXRlKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQ0RBVEFTdGF0ZTsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgICAgICBSRUNPTlNVTUVfSU4oUkNEQVRBU3RhdGUpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBS
Q0RBVEFFbmRUYWdPcGVuU3RhdGU6IHsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBC
RUdJTl9TVEFURShSQ0RBVEFFbmRUYWdPcGVuU3RhdGUpCiAgICAgICAgICAgICBpZiAoY2MgPj0g
J0EnICYmIGNjIDw9ICdaJykgewogICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFw
cGVuZChjYyk7CiAgICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyh0b0xvd2VyQ2Fz
ZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBSQ0RBVEFFbmRUYWdOYW1lU3RhdGU7
CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhSQ0RBVEFFbmRUYWdOYW1lU3RhdGUpOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CiAgICAgICAgICAg
ICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBhZGRU
b1Bvc3NpYmxlRW5kVGFnKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkNEQVRBRW5k
VGFnTmFtZVN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5kVGFnTmFt
ZVN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJh
Y3RlcignPCcpOwogICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gUkNEQVRBU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKFJDREFUQVN0YXRlKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgUkNEQVRBRW5k
VGFnTmFtZVN0YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RB
VEUoUkNEQVRBRW5kVGFnTmFtZVN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID49ICdBJyAmJiBj
YyA8PSAnWicpIHsKICAgICAgICAgICAgICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2Mp
OwogICAgICAgICAgICAgICAgIGFkZFRvUG9zc2libGVFbmRUYWcodG9Mb3dlckNhc2UoY2MpKTsK
KyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFJDREFUQUVuZFRhZ05hbWVTdGF0ZSk7CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKICAgICAgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgICAgIGFkZFRv
UG9zc2libGVFbmRUYWcoY2MpOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkNEQVRBRW5k
VGFnTmFtZVN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYg
KGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcg
JykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRl
OwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRl
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAgICAgICAgICAgICAgICAgICAgRkxVU0hf
QU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHBy
b3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0
YVN0YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFn
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKICAg
ICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7CiAgICAgICAgICAgICAgICAgbV90b2tl
bi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwogICAgICAgICAgICAgICAg
IG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IFJDREFUQVN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IFJFQ09OU1VNRV9JTihSQ0RBVEFTdGF0ZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFJBV1RFWFRMZXNzVGhhblNpZ25TdGF0ZTog
eworICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKFJBV1RFWFRMZXNz
VGhhblNpZ25TdGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA9PSAnLycpIHsKICAgICAgICAgICAg
ICAgICBtX3RlbXBvcmFyeUJ1ZmZlci5jbGVhcigpOwogICAgICAgICAgICAgICAgIEFTU0VSVCht
X2J1ZmZlcmVkRW5kVGFnTmFtZS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBSQVdURVhURW5kVGFnT3BlblN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oUkFX
VEVYVEVuZFRhZ09wZW5TdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkFXVEVY
VFN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihSQVdURVhUU3RhdGUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBSQVdURVhURW5kVGFnT3BlblN0YXRlOiB7CisgICAg
ICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ09wZW5T
dGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CiAgICAgICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBh
ZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IFJBV1RFWFRFbmRUYWdOYW1lU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9U
TyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0g
J2EnICYmIGNjIDw9ICd6JykgewogICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFw
cGVuZChjYyk7CiAgICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0gICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IFJBV1RFWFRFbmRUYWdOYW1lU3RhdGU7CisgICAgICAgICAg
ICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwogICAgICAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gUkFXVEVY
VFN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihSQVdURVhUU3RhdGUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBSQVdURVhURW5kVGFnTmFtZVN0YXRlOiB7CisgICAg
ICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoUkFXVEVYVEVuZFRhZ05hbWVT
dGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CiAgICAgICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAgICBh
ZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICAgICAgQURW
QU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewogICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVm
ZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7
CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhSQVdURVhURW5kVGFnTmFtZVN0YXRlKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAgICAgICAgICAgICAgICAgICAgRkxVU0hf
QU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICcvJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHBy
b3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2Vs
ZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVz
aEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVu
ZFRhZygpKQorICAgICAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2Vs
ZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICc+JykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAgICAgICAgICAgICAgICAgICAg
RkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKICAgICAgICAgICAgICAgICBlbWl0
Q2hhcmFjdGVyKCcvJyk7CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0
ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwogICAgICAgICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdO
YW1lLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFJBV1RFWFRTdGF0ZTsKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBSRUNPTlNVTUVfSU4oUkFX
VEVYVFN0YXRlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUxlc3NUaGFuU2lnblN0YXRlOiB7CisgICAgICAgIEVO
RF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUxlc3NUaGFuU2lnblN0
YXRlKQogICAgICAgICAgICAgaWYgKGNjID09ICcvJykgewogICAgICAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRF
bmRUYWdOYW1lLmlzRW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERh
dGFFbmRUYWdPcGVuU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRh
RW5kVGFnT3BlblN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyEnKSB7CiAg
ICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwogICAgICAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJyEnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2Fw
ZVN0YXJ0U3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBl
U3RhcnRTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRD
aGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0YXRl
OwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIFJFQ09OU1VNRV9J
TihTY3JpcHREYXRhU3RhdGUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRW5kVGFnT3BlblN0YXRlOiB7CisgICAg
ICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVuZFRhZ09w
ZW5TdGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CiAgICAg
ICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAgICAg
ICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGU7CisgICAgICAgICAgICAgICAgQURW
QU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6JykgewogICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5
QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhj
Yyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFbmRUYWdOYW1lU3RhdGU7
CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcp
OwogICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gU2NyaXB0RGF0YVN0YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhU3RhdGUpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRh
RW5kVGFnTmFtZVN0YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5f
U1RBVEUoU2NyaXB0RGF0YUVuZFRhZ05hbWVTdGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA+PSAn
QScgJiYgY2MgPD0gJ1onKSB7CiAgICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBw
ZW5kKGNjKTsKICAgICAgICAgICAgICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNl
KGNjKSk7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0
YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ2EnICYmIGNjIDw9ICd6Jykgewog
ICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAg
ICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7CisgICAgICAgICAgICAgICAgQURWQU5DRV9U
TyhTY3JpcHREYXRhRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4
MEMnIHx8IGNjID09ICcgJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0
ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3JlQXR0
cmlidXRlTmFtZVN0YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZl
cmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygp
KQorICAgICAgICAgICAgICAgICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oQmVmb3JlQXR0
cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICcvJykg
ewotICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNBcHByb3ByaWF0ZUVuZFRhZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVGbHVz
aEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNBcHByb3ByaWF0ZUVu
ZFRhZygpKQorICAgICAgICAgICAgICAgICAgICAgICAgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lO
KERhdGFTdGF0ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVtaXRDaGFy
YWN0ZXIoJzwnKTsKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCcvJyk7CiAgICAgICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9DaGFyYWN0ZXIobV90ZW1wb3JhcnlCdWZmZXIpOwog
ICAgICAgICAgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1lLmNsZWFyKCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2Ny
aXB0RGF0YUVzY2FwZVN0YXJ0U3RhdGU6IHsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAg
ICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnRTdGF0ZSkKICAgICAgICAgICAgIGlm
IChjYyA9PSAnLScpIHsKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZVN0YXJ0RGFzaFN0YXRlOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YVN0
YXRlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBTY3JpcHREYXRhRXNjYXBlU3RhcnRE
YXNoU3RhdGU6IHsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVT
dGFydERhc2hTdGF0ZSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBSRUNP
TlNVTUVfSU4oU2NyaXB0RGF0YVN0YXRlKTsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAg
ICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoU3RhdGUpCiAgICAgICAgICAg
ICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZTsK
LSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERh
dGFTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUVzY2FwZWRT
dGF0ZTogeworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNo
RGFzaFN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIFJFQ09OU1VN
RV9JTihTY3JpcHREYXRhU3RhdGUpOworICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJF
R0lOX1NUQVRFKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpCiAgICAgICAgICAgICBpZiAoY2MgPT0g
Jy0nKSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkRGFzaFN0YXRlOworICAgICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoU3RhdGUpOwogICAgICAgICAgICAgfSBl
bHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFF
c2NhcGVkTGVzc1RoYW5TaWduU3RhdGU7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKKyAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOworICAgICAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YUVzY2FwZWREYXNo
U3RhdGU6IHsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShTY3Jp
cHREYXRhRXNjYXBlZERhc2hTdGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKICAg
ICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oU2NyaXB0RGF0YUVzY2FwZWREYXNoRGFzaFN0YXRlKTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJzwnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNj
YXBlZExlc3NUaGFuU2lnblN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0
RGF0YUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
U2NyaXB0RGF0YUVzY2FwZWRTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFFc2NhcGVkU3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6
IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIFNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2hTdGF0ZTogewotICAgICAgICAgICAg
aWYgKGNjID09ICctJykKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFU
RShTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpCisgICAgICAgICAgICBpZiAoY2MgPT0g
Jy0nKSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICBl
bHNlIGlmIChjYyA9PSAnPCcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFF
c2NhcGVkTGVzc1RoYW5TaWduU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3Jp
cHREYXRhRXNjYXBlZERhc2hEYXNoU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnPCcpCisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZExlc3NU
aGFuU2lnblN0YXRlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAg
ICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBT
Y3JpcHREYXRhU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhU3Rh
dGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVy
KGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZTsK
KyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFFc2NhcGVkU3RhdGUpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNjcmlwdERhdGFFc2Nh
cGVkTGVzc1RoYW5TaWduU3RhdGU6IHsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBC
RUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKQogICAgICAgICAg
ICAgaWYgKGNjID09ICcvJykgewogICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVyLmNs
ZWFyKCk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYnVmZmVyZWRFbmRUYWdOYW1lLmlzRW1w
dHkoKSk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkRW5kVGFn
T3BlblN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRF
bmRUYWdPcGVuU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2Mg
PD0gJ1onKSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwogICAgICAgICAg
ICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVm
ZmVyLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRv
TG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFEb3Vi
bGVFc2NhcGVTdGFydFN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0
YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAn
YScgJiYgY2MgPD0gJ3onKSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignPCcpOwog
ICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgICAgIG1fdGVt
cG9yYXJ5QnVmZmVyLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIu
YXBwZW5kKGNjKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURvdWJsZUVz
Y2FwZVN0YXJ0U3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91
YmxlRXNjYXBlU3RhcnRTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoJzwnKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0
RGF0YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
ICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNjcmlwdERhdGFF
c2NhcGVkRW5kVGFnT3BlblN0YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAg
QkVHSU5fU1RBVEUoU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuU3RhdGUpCiAgICAgICAgICAg
ICBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewogICAgICAgICAgICAgICAgIG1fdGVtcG9y
YXJ5QnVmZmVyLmFwcGVuZChjYyk7CiAgICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRh
Zyh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRh
RXNjYXBlZEVuZFRhZ05hbWVTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
Pj0gJ2EnICYmIGNjIDw9ICd6JykgewogICAgICAgICAgICAgICAgIG1fdGVtcG9yYXJ5QnVmZmVy
LmFwcGVuZChjYyk7CiAgICAgICAgICAgICAgICAgYWRkVG9Qb3NzaWJsZUVuZFRhZyhjYyk7Ci0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZVN0YXRl
OworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1l
U3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKCc8Jyk7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcignLycpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRXNjYXBlZFN0YXRlOwotICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBl
ZFN0YXRlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdOYW1lU3RhdGU6IHsKKyAgICAgICAg
RU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRXNjYXBlZEVuZFRh
Z05hbWVTdGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CiAg
ICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKGNjKTsKICAgICAgICAgICAg
ICAgICBhZGRUb1Bvc3NpYmxlRW5kVGFnKHRvTG93ZXJDYXNlKGNjKSk7CisgICAgICAgICAgICAg
ICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWVTdGF0ZSk7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGNjID49ICdhJyAmJiBjYyA8PSAneicpIHsKICAgICAgICAgICAgICAg
ICBtX3RlbXBvcmFyeUJ1ZmZlci5hcHBlbmQoY2MpOwogICAgICAgICAgICAgICAgIGFkZFRvUG9z
c2libGVFbmRUYWcoY2MpOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YUVz
Y2FwZWRFbmRUYWdOYW1lU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwg
Y2MgPT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFn
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVO
YW1lU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRU
YWcoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBGTFVTSF9BTkRfQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVO
YW1lU3RhdGUpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy8nKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGU7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBGTFVTSF9BTkRfQURWQU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlm
IChpc0FwcHJvcHJpYXRlRW5kVGFnKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXliZUZsdXNoQnVmZmVy
ZWRFbmRUYWcoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0FwcHJvcHJpYXRlRW5kVGFnKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBGTFVTSF9FTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0
YXRlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
PCcpOwogICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJy8nKTsKICAgICAgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0NoYXJhY3RlcihtX3RlbXBvcmFyeUJ1ZmZlcik7CiAgICAgICAg
ICAgICAgICAgbV9idWZmZXJlZEVuZFRhZ05hbWUuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICBSRUNPTlNVTUVfSU4oU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZSk7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlOiB7CisgICAgICAgIEVORF9TVEFU
RSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3Rh
dGUpCiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9
PSAnXHgwQycgfHwgY2MgPT0gJyAnIHx8IGNjID09ICcvJyB8fCBjYyA9PSAnPicpIHsKICAgICAg
ICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKICAgICAgICAgICAgICAgICBpZiAodGVtcG9y
YXJ5QnVmZmVySXMoc2NyaXB0VGFnLmxvY2FsTmFtZSgpKSkKLSAgICAgICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGU7CisgICAgICAgICAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2Fw
ZWRTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBl
ZFN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykg
ewogICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgICAgIG1f
dGVtcG9yYXJ5QnVmZmVyLmFwcGVuZCh0b0xvd2VyQ2FzZShjYykpOworICAgICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0U3RhdGUpOwogICAgICAgICAg
ICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CiAgICAgICAgICAgICAgICAg
ZW1pdENoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBw
ZW5kKGNjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IFNjcmlwdERhdGFFc2NhcGVkU3RhdGU7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNj
cmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGU6IHsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RP
KFNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydFN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKKyAg
ICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShTY3JpcHREYXRhRG91Ymxl
RXNjYXBlZFN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAgICAgICAg
ICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHRE
YXRhRG91YmxlRXNjYXBlZERhc2hTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNj
cmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaFN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJzwnKSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3Rh
dGU7Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlw
dERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpOworICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKKyAgICAgICAgICAgICAgICBB
RFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAgICAgICAgICAgfQog
ICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFz
aFN0YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoU2Ny
aXB0RGF0YURvdWJsZUVzY2FwZWREYXNoU3RhdGUpCiAgICAgICAgICAgICBpZiAoY2MgPT0gJy0n
KSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZTsKKyAgICAgICAg
ICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2hTdGF0ZSk7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc8JykgewogICAgICAgICAgICAgICAgIGVt
aXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91
YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8o
U2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ25TdGF0ZSk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlOworICAgICAgICAgICAg
ICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YURvdWJsZUVzY2Fw
ZWREYXNoRGFzaFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJy0nKQorICAgICAgICBF
TkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVk
RGFzaERhc2hTdGF0ZSkKKyAgICAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKICAgICAgICAgICAg
ICAgICBlbWl0Q2hhcmFjdGVyKGNjKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc8Jykg
eworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNo
RGFzaFN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJzwnKSB7CiAgICAgICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNj
cmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGU7CisgICAgICAgICAgICAgICAg
QURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnblN0YXRlKTsKICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICAgICAgZW1pdENo
YXJhY3RlcihjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNjcmlwdERhdGFTdGF0ZTsK
KyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFTdGF0ZSk7CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91YmxlRXNjYXBlZFN0YXRlOworICAgICAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRTdGF0ZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0YURvdWJsZUVz
Y2FwZWRMZXNzVGhhblNpZ25TdGF0ZTogeworICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAg
IEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkTGVzc1RoYW5TaWduU3RhdGUpCiAg
ICAgICAgICAgICBpZiAoY2MgPT0gJy8nKSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3Rl
cihjYyk7CiAgICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuY2xlYXIoKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YURv
dWJsZUVzY2FwZWRTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgU2NyaXB0RGF0
YURvdWJsZUVzY2FwZUVuZFN0YXRlOiB7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhTY3Jp
cHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgUkVDT05TVU1FX0lOKFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGUpOworICAg
ICAgICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKFNjcmlwdERhdGFEb3VibGVF
c2NhcGVFbmRTdGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4
MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcgfHwgY2MgPT0gJy8nIHx8IGNjID09ICc+
JykgewogICAgICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoY2MpOwogICAgICAgICAgICAgICAg
IGlmICh0ZW1wb3JhcnlCdWZmZXJJcyhzY3JpcHRUYWcubG9jYWxOYW1lKCkpKQotICAgICAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gU2NyaXB0RGF0YUVzY2FwZWRTdGF0ZTsKKyAgICAgICAgICAg
ICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRXNjYXBlZFN0YXRlKTsKICAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBTY3JpcHREYXRhRG91Ymxl
RXNjYXBlZFN0YXRlOworICAgICAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNjcmlwdERhdGFE
b3VibGVFc2NhcGVkU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYg
Y2MgPD0gJ1onKSB7CiAgICAgICAgICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAgICAg
ICAgICAgICAgbV90ZW1wb3JhcnlCdWZmZXIuYXBwZW5kKHRvTG93ZXJDYXNlKGNjKSk7CisgICAg
ICAgICAgICAgICAgQURWQU5DRV9UTyhTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kU3RhdGUpOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnYScgJiYgY2MgPD0gJ3onKSB7CiAgICAgICAg
ICAgICAgICAgZW1pdENoYXJhY3RlcihjYyk7CiAgICAgICAgICAgICAgICAgbV90ZW1wb3JhcnlC
dWZmZXIuYXBwZW5kKGNjKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IFNjcmlwdERhdGFEb3VibGVFc2NhcGVkU3RhdGU7Ci0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZTogeworICAgICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oU2NyaXB0RGF0YURvdWJsZUVzY2FwZUVuZFN0YXRlKTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIFJFQ09OU1VNRV9JTihTY3JpcHREYXRhRG91YmxlRXNj
YXBlZFN0YXRlKTsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShC
ZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGUpCiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8
IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlTmFt
ZVN0YXRlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICcvJykKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOwotICAgICAgICAgICAgZWxzZSBp
ZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNl
bGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicp
CisgICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAg
ICAgICBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7CiAgICAgICAgICAgICAgICAg
bV90b2tlbi0+YWRkTmV3QXR0cmlidXRlKCk7CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+YXBw
ZW5kVG9BdHRyaWJ1dGVOYW1lKHRvTG93ZXJDYXNlKGNjKSk7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IEF0dHJpYnV0ZU5hbWVTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGlmIChjYyA9PSAnIicgfHwgY2MgPT0gJ1wnJyB8fCBjYyA9PSAnPCcgfHwgY2MgPT0gJz0nKQog
ICAgICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG1f
dG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0
ZU5hbWVTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZU5hbWVTdGF0
ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9w
ZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQXR0cmli
dXRlTmFtZVN0YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RB
VEUoQXR0cmlidXRlTmFtZVN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGU7CisgICAgICAgICAgICAgICAgQURW
QU5DRV9UTyhBZnRlckF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgICAgICBlbHNlIGlmIChj
YyA9PSAnLycpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNlbGZDbG9zaW5nU3RhcnRUYWdT
dGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0
ZSk7CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPScpCi0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChj
YyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2Mg
Pj0gJ0EnICYmIGNjIDw9ICdaJykKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0
dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQorICAg
ICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAg
ZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewogICAgICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwor
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNj
ID09ICdcJycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9JykKICAgICAgICAgICAgICAgICAgICAg
ZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0F0dHJp
YnV0ZU5hbWUoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVOYW1lU3Rh
dGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyQXR0cmlidXRl
TmFtZVN0YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUo
QWZ0ZXJBdHRyaWJ1dGVOYW1lU3RhdGUpCiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8
IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJBdHRyaWJ1dGVOYW1l
U3RhdGUpOwogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJy8nKQotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGU7CisgICAgICAgICAgICAgICAgQURW
QU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwogICAgICAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJz0nKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVWYWx1
ZVN0YXRlOwotICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz0nKSB7Ci0gICAgICAgICAgICAg
ICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3Rh
dGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKKyAg
ICAgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAg
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz0nKQorICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JF
U1VNRV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNj
IDw9ICdaJykgewogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwog
ICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZSh0b0xvd2VyQ2Fz
ZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVOYW1lU3RhdGU7Cisg
ICAgICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVOYW1lU3RhdGUpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNjID09ICdcJycg
fHwgY2MgPT0gJzwnKQogICAgICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAg
ICAgICAgICAgICAgIG1fdG9rZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwogICAgICAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvQXR0cmlidXRlTmFtZShjYyk7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IEF0dHJpYnV0ZU5hbWVTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKEF0
dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTog
SGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZTogeworICAgICAgICBFTkRfU1RBVEUo
KQorCisgICAgICAgIEJFR0lOX1NUQVRFKEJlZm9yZUF0dHJpYnV0ZVZhbHVlU3RhdGUpCiAgICAg
ICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycg
fHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIEFE
VkFOQ0VfVE8oQmVmb3JlQXR0cmlidXRlVmFsdWVTdGF0ZSk7CiAgICAgICAgICAgICBlbHNlIGlm
IChjYyA9PSAnIicpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZVZhbHVlRG91
YmxlUXVvdGVkU3RhdGU7Ci0gICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnJicpIHsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gQXR0cmlidXRlVmFsdWVVbnF1b3RlZFN0YXRlOwotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKQot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRl
OworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWRT
dGF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnJicpCisgICAgICAgICAgICAgICAg
UkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICBl
bHNlIGlmIChjYyA9PSAnXCcnKQorICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQXR0cmlidXRl
VmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicp
IHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIGVt
aXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwor
ICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJzwnIHx8IGNjID09ICc9JyB8
fCBjYyA9PSAnYCcpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAg
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZTsKKyAgICAgICAg
ICAgICAgICBBRFZBTkNFX1RPKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEF0dHJp
YnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGU6IHsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAg
ICAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1b3RlZFN0YXRlKQogICAgICAg
ICAgICAgaWYgKGNjID09ICciJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJBdHRy
aWJ1dGVWYWx1ZVF1b3RlZFN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJB
dHRyaWJ1dGVWYWx1ZVF1b3RlZFN0YXRlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICcm
JykgewotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJp
YnV0ZVZhbHVlU3RhdGU7CiAgICAgICAgICAgICAgICAgbV9hZGRpdGlvbmFsQWxsb3dlZENoYXJh
Y3RlciA9ICciJzsKLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRyaWJ1dGVWYWx1
ZShjYyk7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1ZURvdWJsZVF1
b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgp
CisKKyAgICAgICAgQkVHSU5fU1RBVEUoQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWRTdGF0ZSkK
ICAgICAgICAgICAgIGlmIChjYyA9PSAnXCcnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBB
ZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9U
TyhBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkU3RhdGUpOwogICAgICAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJyYnKSB7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENoYXJhY3RlclJlZmVyZW5j
ZUluQXR0cmlidXRlVmFsdWVTdGF0ZTsKICAgICAgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxv
d2VkQ2hhcmFjdGVyID0gJ1wnJzsKLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQ2hhcmFjdGVyUmVmZXJlbmNlSW5BdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9BdHRy
aWJ1dGVWYWx1ZShjYyk7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhBdHRyaWJ1dGVWYWx1
ZVNpbmdsZVF1b3RlZFN0YXRlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGU6IHsKKyAgICAgICAgRU5EX1NU
QVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUp
CiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAn
XHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRy
aWJ1dGVOYW1lU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1
dGVOYW1lU3RhdGUpOwogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyYnKSB7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0
ZTsKICAgICAgICAgICAgICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJz4nOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0
Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhDaGFyYWN0ZXJS
ZWZlcmVuY2VJbkF0dHJpYnV0ZVZhbHVlU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnPicpCisgICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7
CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJyInIHx8IGNj
ID09ICdcJycgfHwgY2MgPT0gJzwnIHx8IGNjID09ICc9JyB8fCBjYyA9PSAnYCcpCiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9BdHRyaWJ1dGVWYWx1ZShjYyk7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhB
dHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
Ly8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIENoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0
ZTogeworICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKENoYXJhY3Rl
clJlZmVyZW5jZUluQXR0cmlidXRlVmFsdWVTdGF0ZSkgewogICAgICAgICAgICAgYm9vbCBub3RF
bm91Z2hDaGFyYWN0ZXJzID0gZmFsc2U7Ci0gICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IGNv
bnN1bWVFbnRpdHkoc291cmNlLCBub3RFbm91Z2hDaGFyYWN0ZXJzKTsKKyAgICAgICAgICAgIHVu
c2lnbmVkIHZhbHVlID0gY29uc3VtZUVudGl0eSgqbV9zb3VyY2UsIG5vdEVub3VnaENoYXJhY3Rl
cnMpOwogICAgICAgICAgICAgaWYgKG5vdEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CiAg
ICAgICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRv
QXR0cmlidXRlVmFsdWUoJyYnKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIDwgMHhGRkZG
KQpAQCAtMTAzMCw0OTUgKzEwNjIsNDc0IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgICAgIC8v
IGtlZXBpbmcgdHJhY2sgb2YgdGhpcyBleHBsaWN0bHksIHdlIG9ic2VydmUgdGhhdCB0aGUgcHJl
dmlvdXMKICAgICAgICAgICAgIC8vIHN0YXRlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IG1fYWRkaXRp
b25hbEFsbG93ZWRDaGFyYWN0ZXIuCiAgICAgICAgICAgICBpZiAobV9hZGRpdGlvbmFsQWxsb3dl
ZENoYXJhY3RlciA9PSAnIicpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEF0dHJpYnV0ZVZh
bHVlRG91YmxlUXVvdGVkU3RhdGU7CisgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKEF0dHJp
YnV0ZVZhbHVlRG91YmxlUXVvdGVkU3RhdGUpOwogICAgICAgICAgICAgZWxzZSBpZiAobV9hZGRp
dGlvbmFsQWxsb3dlZENoYXJhY3RlciA9PSAnXCcnKQotICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlOworICAgICAgICAgICAgICAgIFJFQ09O
U1VNRV9JTihBdHRyaWJ1dGVWYWx1ZVNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKG1fYWRkaXRpb25hbEFsbG93ZWRDaGFyYWN0ZXIgPT0gJz4nKQotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBBdHRyaWJ1dGVWYWx1ZVVucXVvdGVkU3RhdGU7CisgICAgICAgICAgICAg
ICAgUkVDT05TVU1FX0lOKEF0dHJpYnV0ZVZhbHVlVW5xdW90ZWRTdGF0ZSk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyQXR0cmlidXRlVmFsdWVR
dW90ZWRTdGF0ZTogeworICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRF
KEFmdGVyQXR0cmlidXRlVmFsdWVRdW90ZWRTdGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA9PSAn
XHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCi0gICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZTsKKyAgICAgICAg
ICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnLycpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IFNlbGZDbG9z
aW5nU3RhcnRUYWdTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAg
ICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBRFZB
TkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdTdGF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChj
YyA9PSAnPicpCisgICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7
CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVBdHRyaWJ1dGVOYW1lU3RhdGU7Ci0gICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJlZm9y
ZUF0dHJpYnV0ZU5hbWVTdGF0ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlOiB7CisgICAgICAgIEVORF9TVEFU
RSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKQogICAg
ICAgICAgICAgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBEYXRhU3RhdGU7CisgICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lO
KERhdGFTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRQ
YXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZUF0dHJpYnV0ZU5h
bWVTdGF0ZTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBSRUNP
TlNVTUVfSU4oQmVmb3JlQXR0cmlidXRlTmFtZVN0YXRlKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBCb2d1c0NvbW1lbnRTdGF0ZTogeworICAgICAgICBF
TkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKEJvZ3VzQ29tbWVudFN0YXRlKQorICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgc3RhdGUgaXNuJ3QgY29ycmVjdCBiZWNhdXNlIHdlJ2xs
IHRlcm1pbmF0ZSB0aGUKKyAgICAgICAgICAgIC8vIGNvbW1lbnQgZWFybHkgaWYgd2UgZG9uJ3Qg
aGF2ZSB0aGUgd2hvbGUgaW5wdXQgc3RyZWFtIGF2YWlsYWJsZS4KICAgICAgICAgICAgIG1fdG9r
ZW4tPmJlZ2luQ29tbWVudCgpOwotICAgICAgICAgICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgY2MgPSAqc291cmNlOworICAgICAgICAgICAgd2hpbGUgKCFt
X3NvdXJjZS0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgY2MgPSAqKm1fc291cmNlOwog
ICAgICAgICAgICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKICAg
ICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAg
ICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7CisgICAgICAgICAgICAgICAgbV9zb3Vy
Y2UtPmFkdmFuY2UobV9saW5lTnVtYmVyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVt
aXRDdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAg
ICAgICAgICBpZiAoc291cmNlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRs
ZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlOiB7Ci0gICAgICAgICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgZGFzaERhc2hTdHJpbmcsICgiLS0iKSk7Ci0gICAgICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG9jdHlwZVN0cmluZywgKCJkb2N0eXBlIikpOwor
ICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKE1hcmt1cERlY2xhcmF0
aW9uT3BlblN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID09ICctJykgewotICAgICAgICAgICAg
ICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29r
QWhlYWQoZGFzaERhc2hTdHJpbmcpOworICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6
TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IG1fc291cmNlLT5sb29rQWhlYWQoZGFzaERhc2hTdHJp
bmcpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRN
YXRjaCkgewotICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScp
OwotICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVCgnLScpOworICAg
ICAgICAgICAgICAgICAgICBtX3NvdXJjZS0+YWR2YW5jZUFuZEFTU0VSVCgnLScpOworICAgICAg
ICAgICAgICAgICAgICBtX3NvdXJjZS0+YWR2YW5jZUFuZEFTU0VSVCgnLScpOwogICAgICAgICAg
ICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKLSAgICAgICAgICAgICAgICAgICAg
bV9zdGF0ZSA9IENvbW1lbnRTdGFydFN0YXRlOwotICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKENvbW1lbnRTdGFydFN0YXRlKTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5v
dEVub3VnaENoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0
QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJ0QnIHx8IGNjID09ICdkJykgewotICAgICAgICAgICAgICAgIFNlZ21lbnRl
ZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWRJZ25vcmlu
Z0Nhc2UoZG9jdHlwZVN0cmluZyk7CisgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpM
b29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gbV9zb3VyY2UtPmxvb2tBaGVhZElnbm9yaW5nQ2FzZShk
b2N0eXBlU3RyaW5nKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0
cmluZzo6RGlkTWF0Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFT
U0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJkb2N0eXBlIik7Ci0gICAgICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBET0NUWVBFU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgICAgICAgICBhZHZhbmNlU3RyaW5nQW5kQVNTRVJUSWdub3JpbmdDYXNlKCpt
X3NvdXJjZSwgImRvY3R5cGUiKTsKKyAgICAgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKERP
Q1RZUEVTdGF0ZSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVu
dGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oc291cmNlKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAgICAgICAgLy8g
RklYTUU6IFdlJ3JlIHN0aWxsIG1pc3NpbmcgdGhlIGJpdHMgYWJvdXQgdGhlIGluc2VydGlvbiBt
b2RlIGJlaW5nIGluIGZvcmVpZ24gY29udGVudDoKICAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3Rva2VuaXph
dGlvbi5odG1sI21hcmt1cC1kZWNsYXJhdGlvbi1vcGVuLXN0YXRlCiAgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzQ29tbWVudFN0YXRlOwot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDb21tZW50U3Rh
cnRTdGF0ZTogeworICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJvZ3VzQ29tbWVudFN0YXRlKTsK
KyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShDb21tZW50U3RhcnRT
dGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IENvbW1lbnRTdGFydERhc2hTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKENv
bW1lbnRTdGFydERhc2hTdGF0ZSk7CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsK
ICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIGVtaXRD
dXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOworICAg
ICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoY2MpOwot
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50U3RhdGU7CisgICAgICAgICAgICAgICAg
QURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8g
RklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIENvbW1lbnRTdGFydERhc2hTdGF0ZTogeworICAgICAgICBFTkRfU1RB
VEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKENvbW1lbnRTdGFydERhc2hTdGF0ZSkKICAgICAg
ICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRF
bmRTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTdGF0ZSk7CiAg
ICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFy
c2VFcnJvcigpOwotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOworICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JF
U1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAgICAgICAgICAgICBtX3Rva2Vu
LT5hcHBlbmRUb0NvbW1lbnQoY2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50
U3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENvbW1lbnRTdGF0ZTogewor
ICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKENvbW1lbnRTdGF0ZSkK
ICAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENv
bW1lbnRFbmREYXNoU3RhdGU7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgQURW
QU5DRV9UTyhDb21tZW50RW5kRGFzaFN0YXRlKTsKKyAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7CisgICAgICAgICAgICAgICAg
QURWQU5DRV9UTyhDb21tZW50U3RhdGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8g
RklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIENvbW1lbnRFbmREYXNoU3RhdGU6IHsKKyAgICAgICAgRU5EX1NUQVRF
KCkKKworICAgICAgICBCRUdJTl9TVEFURShDb21tZW50RW5kRGFzaFN0YXRlKQogICAgICAgICAg
ICAgaWYgKGNjID09ICctJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVuZFN0
YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZFN0YXRlKTsKICAgICAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgn
LScpOwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZB
TkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgQ29tbWVudEVuZFN0YXRlOiB7Ci0gICAgICAgICAgICBpZiAoY2MgPT0gJz4n
KSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdceDA5
JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykgeworICAgICAg
ICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKENvbW1lbnRFbmRTdGF0ZSkKKyAg
ICAgICAgICAgIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1F
X0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnXHgwOScgfHwgY2Mg
PT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpIHsKICAgICAgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29t
bWVudCgnLScpOwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudCgnLScp
OwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0gICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRFbmRTcGFjZVN0YXRlOworICAgICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQ29tbWVudEVuZFNwYWNlU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnIScpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50RW5kQmFuZ1N0YXRlOworICAgICAgICAgICAgICAg
IEFEVkFOQ0VfVE8oQ29tbWVudEVuZEJhbmdTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KGNjID09ICctJykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAg
ICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7CiAgICAgICAgICAgICAgICAg
bV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RP
KENvbW1lbnRFbmRTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21t
ZW50KCctJyk7CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KCctJyk7
CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gQ29tbWVudFN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0Vf
VE8oQ29tbWVudFN0YXRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBI
YW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBDb21tZW50RW5kQmFuZ1N0YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgpCisKKyAg
ICAgICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZEJhbmdTdGF0ZSkKICAgICAgICAgICAgIGlmIChj
YyA9PSAnLScpIHsKICAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0n
KTsKICAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJy0nKTsKICAgICAg
ICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQoJyEnKTsKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQ29tbWVudEVuZERhc2hTdGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVf
SU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIG1fdG9r
ZW4tPmFwcGVuZFRvQ29tbWVudCgnLScpOwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVu
ZFRvQ29tbWVudCgnLScpOwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVu
dCgnIScpOwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvQ29tbWVudChjYyk7Ci0g
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IENvbW1lbnRTdGF0ZTsKKyAgICAgICAgICAgICAgICBB
RFZBTkNFX1RPKENvbW1lbnRTdGF0ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgQ29tbWVudEVuZFNwYWNlU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChj
YyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcp
CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoQ29tbWVudEVuZFNw
YWNlU3RhdGUpCisgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8
fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9Db21tZW50KGNjKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICctJykKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gQ29tbWVudEVuZERhc2hTdGF0ZTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4o
KTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKENvbW1lbnRFbmRTcGFjZVN0YXRlKTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJy0nKQorICAgICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQ29tbWVudEVuZERhc2hTdGF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAn
PicpCisgICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb0NvbW1lbnQo
Y2MpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDb21tZW50U3RhdGU7CisgICAgICAgICAg
ICAgICAgQURWQU5DRV9UTyhDb21tZW50U3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIERPQ1RZUEVTdGF0ZTogeworICAgICAgICBFTkRfU1RBVEUo
KQorCisgICAgICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVTdGF0ZSkKICAgICAgICAgICAgIGlmIChj
YyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcp
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZURPQ1RZUEVOYW1lU3RhdGU7CisgICAg
ICAgICAgICAgICAgQURWQU5DRV9UTyhCZWZvcmVET0NUWVBFTmFtZVN0YXRlKTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IEJlZm9yZURPQ1RZUEVOYW1lU3RhdGU7Ci0gICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgUkVDT05TVU1FX0lOKEJlZm9yZURPQ1RZUEVOYW1l
U3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0Yg
cHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEJl
Zm9yZURPQ1RZUEVOYW1lU3RhdGU6IHsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBC
RUdJTl9TVEFURShCZWZvcmVET0NUWVBFTmFtZVN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID09
ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9yZURP
Q1RZUEVOYW1lU3RhdGUpOwogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9
ICdaJykgewogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSh0b0xvd2VyQ2Fz
ZShjYykpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBFTmFtZVN0YXRlOworICAg
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CiAgICAgICAgICAgICB9
IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKCk7CiAgICAgICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKKyAgICAgICAgICAgICAgICBF
TUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKGNjKTsKLSAgICAgICAgICAgICAgICBt
X3N0YXRlID0gRE9DVFlQRU5hbWVTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKERP
Q1RZUEVOYW1lU3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIERPQ1RZUEVOYW1lU3RhdGU6IHsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAg
ICBCRUdJTl9TVEFURShET0NUWVBFTmFtZVN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID09ICdc
eDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJET0NUWVBFTmFtZVN0YXRlOwotICAgICAgICAgICAg
ZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigp
OwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpCisgICAgICAgICAgICAgICAgQURWQU5DRV9U
TyhBZnRlckRPQ1RZUEVOYW1lU3RhdGUpOworICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4n
KQorICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOworICAgICAg
ICAgICAgZWxzZSBpZiAoY2MgPj0gJ0EnICYmIGNjIDw9ICdaJykgewogICAgICAgICAgICAgICAg
IG1fdG9rZW4tPmFwcGVuZFRvTmFtZSh0b0xvd2VyQ2FzZShjYykpOwotICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7
CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFTmFtZVN0YXRlKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBZnRlckRPQ1RZUEVOYW1lU3Rh
dGU6IHsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShBZnRlckRP
Q1RZUEVOYW1lU3RhdGUpCiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdc
eDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJy
ZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgcHVibGljU3RyaW5nLCAoInB1YmxpYyIpKTsKLSAgICAgICAgICAgICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgc3lzdGVtU3RyaW5nLCAoInN5c3RlbSIpKTsKKyAgICAgICAgICAg
ICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRU5hbWVTdGF0ZSk7CisgICAgICAgICAgICBpZiAo
Y2MgPT0gJz4nKQorICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUp
OworICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKGNjID09ICdQJyB8fCBj
YyA9PSAncCcpIHsKLSAgICAgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhl
YWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShwdWJsaWNTdHJp
bmcpOworICAgICAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3Vs
dCByZXN1bHQgPSBtX3NvdXJjZS0+bG9va0FoZWFkSWdub3JpbmdDYXNlKHB1YmxpY1N0cmluZyk7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRN
YXRjaCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVEln
bm9yaW5nQ2FzZShzb3VyY2UsICJwdWJsaWMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGU7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdB
bmRBU1NFUlRJZ25vcmluZ0Nhc2UoKm1fc291cmNlLCAicHVibGljIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICBSRUNPTlNVTUVfSU4oQWZ0ZXJET0NUWVBFUHVibGljS2V5d29yZFN0YXRlKTsK
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5n
OjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNo
b3VsZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKHNvdXJjZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdTJyB8fCBjYyA9PSAncycpIHsKLSAgICAgICAg
ICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhlYWRSZXN1bHQgcmVzdWx0ID0gc291
cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShzeXN0ZW1TdHJpbmcpOworICAgICAgICAgICAgICAg
ICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBtX3NvdXJjZS0+
bG9va0FoZWFkSWdub3JpbmdDYXNlKHN5c3RlbVN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJz
eXN0ZW0iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckRPQ1RZUEVT
eXN0ZW1LZXl3b3JkU3RhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uo
Km1fc291cmNlLCAic3lzdGVtIik7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUNPTlNVTUVf
SU4oQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlKTsKICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJz
KQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENoYXJh
Y3RlclRva2VuKHNvdXJjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hvdWxk
RW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKKyAgICAg
ICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3Jk
U3RhdGU6IHsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShBZnRl
ckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGUpCiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDkn
IHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBCZWZvcmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlOworICAg
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0
ZSk7CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKICAgICAgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50
aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVQ
dWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5D
RV9UTyhET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CiAgICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1w
dHlTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVB1YmxpY0lkZW50
aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZ
UEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAg
ICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJl
bnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CisgICAgICAg
ICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gQm9ndXNET0NUWVBF
U3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQmVmb3JlRE9DVFlQ
RVB1YmxpY0lkZW50aWZpZXJTdGF0ZTogeworICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAg
IEJFR0lOX1NUQVRFKEJlZm9yZURPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU3RhdGUpCiAgICAgICAg
ICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwg
Y2MgPT0gJyAnKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7CiAgICAgICAgICAgICBl
bHNlIGlmIChjYyA9PSAnIicpIHsKICAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJ
ZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NU
WVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlOworICAgICAgICAgICAgICAgIEFE
VkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBET0NUWVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlOworICAgICAg
ICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRT
dGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
LSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IERhdGFTdGF0ZTsKKyAgICAgICAgICAgICAgICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0
YVN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNF
X1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJ
WE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlOiB7
CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoRE9DVFlQRVB1Ymxp
Y0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSkKICAgICAgICAgICAgIGlmIChjYyA9PSAnIicp
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJT
dGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50
aWZpZXJTdGF0ZSk7CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAg
ICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVk
KCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBEYXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBFTUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKKyAg
ICAgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVv
dGVkU3RhdGUpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBF
T0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU6IHsKKyAgICAgICAgRU5E
X1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShET0NUWVBFUHVibGljSWRlbnRpZmllclNp
bmdsZVF1b3RlZFN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID09ICdcJycpCi0gICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZTsKKyAgICAg
ICAgICAgICAgICBBRFZBTkNFX1RPKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSk7
CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAg
ICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBE
YXRhU3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBFTUlUX0FORF9S
RVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKKyAgICAgICAgICAgICAg
ICBBRFZBTkNFX1RPKERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUpOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHku
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFmdGVyRE9DVFlQ
RVB1YmxpY0lkZW50aWZpZXJTdGF0ZTogeworICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAg
IEJFR0lOX1NUQVRFKEFmdGVyRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZSkKICAgICAgICAg
ICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBj
YyA9PSAnICcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJldHdlZW5ET0NUWVBFUHVibGlj
QW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+
JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnIicp
IHsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lz
dGVtSWRlbnRpZmllcnNTdGF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpCisg
ICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAgICAgICAg
ICBlbHNlIGlmIChjYyA9PSAnIicpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigp
OwogICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3Ry
aW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVy
RG91YmxlUXVvdGVkU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lz
dGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJ1wnJykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAg
ICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKLSAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90
ZWRTdGF0ZTsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKERPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyU2luZ2xlUXVvdGVkU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzRE9DVFlQRVN0YXRlOworICAgICAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVt
SWRlbnRpZmllcnNTdGF0ZTogeworICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lO
X1NUQVRFKEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSkKICAg
ICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBD
JyB8fCBjYyA9PSAnICcpCi0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJldHdlZW5ET0NUWVBF
UHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNj
ID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9
PSAnIicpIHsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKEJldHdlZW5ET0NUWVBFUHVibGlj
QW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAn
PicpCisgICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7CisgICAg
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKICAgICAgICAgICAgICAgICBtX3Rva2VuLT5z
ZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlOworICAgICAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0
ZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgICAg
ICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwotICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRl
OworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5n
bGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gQm9ndXNET0NUWVBFU3RhdGU7CisgICAgICAgICAgICAgICAg
QURWQU5DRV9UTyhCb2d1c0RPQ1RZUEVTdGF0ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29yZFN0YXRlOiB7Cisg
ICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoQWZ0ZXJET0NUWVBFU3lz
dGVtS2V5d29yZFN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAn
XHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAgICAgICAgICAgICBtX3N0
YXRlID0gQmVmb3JlRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZTsKKyAgICAgICAgICAgICAg
ICBBRFZBTkNFX1RPKEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwogICAgICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0
eVN0cmluZygpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBFU3lzdGVtSWRlbnRp
ZmllckRvdWJsZVF1b3RlZFN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9DVFlQ
RVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAg
ICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7
Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xl
UXVvdGVkU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBFU3lzdGVtSWRl
bnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
Jz4nKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsK
LSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOworICAgICAgICAgICAgICAgIEVN
SVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzRE9DVFlQRVN0YXRlOworICAg
ICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBFU3RhdGUpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCi0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVu
dGlmaWVyU3RhdGU6IHsKKyAgICAgICAgRU5EX1NUQVRFKCkKKworICAgICAgICBCRUdJTl9TVEFU
RShCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKQogICAgICAgICAgICAgaWYgKGNj
ID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykK
LSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBBRFZBTkNFX1RPKEJlZm9y
ZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGUpOwogICAgICAgICAgICAgaWYgKGNjID09ICci
JykgewogICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5
U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyRG91YmxlUXVvdGVkU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5DRV9UTyhET0NUWVBF
U3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoY2MgPT0gJ1wnJykgewogICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50
aWZpZXJUb0VtcHR5U3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVT
eXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7CisgICAgICAgICAgICAgICAgQURWQU5D
RV9UTyhET0NUWVBFU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlKTsKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAg
IGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRl
OworICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJv
Z3VzRE9DVFlQRVN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9ndXNET0NUWVBF
U3RhdGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0Yg
cHJvcGVybHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIERP
Q1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU6IHsKKyAgICAgICAgRU5EX1NU
QVRFKCkKKworICAgICAgICBCRUdJTl9TVEFURShET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJs
ZVF1b3RlZFN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID09ICciJykKLSAgICAgICAgICAgICAg
ICBtX3N0YXRlID0gQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlOworICAgICAgICAg
ICAgICAgIEFEVkFOQ0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJz
ZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAg
ICAgICBlbWl0Q3VycmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFT
dGF0ZTsKLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VN
RV9JTihEYXRhU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIoY2MpOworICAgICAgICAgICAgICAgIEFE
VkFOQ0VfVE8oRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRE9DVFlQRVN5c3RlbUlk
ZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZTogeworICAgICAgICBFTkRfU1RBVEUoKQorCisgICAg
ICAgIEJFR0lOX1NUQVRFKERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGUp
CiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1wnJykKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0g
QWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlOworICAgICAgICAgICAgICAgIEFEVkFO
Q0VfVE8oQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKTsKICAgICAgICAgICAgIGVs
c2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAg
ICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3Vy
cmVudFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIEVNSVRfQU5EX1JFU1VNRV9JTihEYXRhU3Rh
dGUpOworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBl
bmRUb1N5c3RlbUlkZW50aWZpZXIoY2MpOworICAgICAgICAgICAgICAgIEFEVkFOQ0VfVE8oRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZSk7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQWZ0ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmll
clN0YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUoQWZ0
ZXJET0NUWVBFU3lzdGVtSWRlbnRpZmllclN0YXRlKQogICAgICAgICAgICAgaWYgKGNjID09ICdc
eDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAg
ICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gRGF0YVN0YXRlOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBBRFZB
TkNFX1RPKEFmdGVyRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZSk7CisgICAgICAgICAgICBl
bHNlIGlmIChjYyA9PSAnPicpCisgICAgICAgICAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERh
dGFTdGF0ZSk7CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VF
cnJvcigpOwotICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RPQ1RZUEVTdGF0ZTsKKyAg
ICAgICAgICAgICAgICBBRFZBTkNFX1RPKEJvZ3VzRE9DVFlQRVN0YXRlKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBCb2d1c0RPQ1RZUEVTdGF0ZTogewot
ICAgICAgICAgICAgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50
VG9rZW4oKTsKLSAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwotICAgICAgICAg
ICAgfQorICAgICAgICBFTkRfU1RBVEUoKQorCisgICAgICAgIEJFR0lOX1NUQVRFKEJvZ3VzRE9D
VFlQRVN0YXRlKQorICAgICAgICAgICAgaWYgKGNjID09ICc+JykKKyAgICAgICAgICAgICAgICBF
TUlUX0FORF9SRVNVTUVfSU4oRGF0YVN0YXRlKTsKKyAgICAgICAgICAgIEFEVkFOQ0VfVE8oQm9n
dXNET0NUWVBFU3RhdGUpOwogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENEQVRBU2Vj
dGlvblN0YXRlOiB7CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICAgICAgQkVHSU5fU1RBVEUo
Q0RBVEFTZWN0aW9uU3RhdGUpCiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBzb3VyY2UuYWR2YW5j
ZShtX2xpbmVOdW1iZXIpOwotICAgICAgICBpZiAobV9lbWl0UGVuZGluZykgewotICAgICAgICAg
ICAgbV9lbWl0UGVuZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgLy8gV2UndmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBz
dHJlYW0uICBJZiB3ZSBoYXZlIGEgY2hhcmFjdGVyCi0gICAgLy8gdG9rZW4gYnVmZmVyZWQsIHdl
IHNob3VsZCBlbWl0IGl0LgotICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJU
b2tlbihzb3VyY2UpOworICAgICAgICAgICAgQURWQU5DRV9UTyhDREFUQVNlY3Rpb25TdGF0ZSk7
CisgICAgICAgIEVORF9TVEFURSgpCisKKyAgICBFTkRfU1RBVEVfTUFQKCkKKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogaW5saW5lIGJvb2wgSFRN
TDVMZXhlcjo6dGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgU3RyaW5nJiBleHBlY3RlZFN0cmluZykK
QEAgLTE1NjEsMzcgKzE1NzIsMTYgQEAgaW5saW5lIHZvaWQgSFRNTDVMZXhlcjo6ZW1pdFBhcnNl
RXJyb3IoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWlubGluZSB2b2lkIEhUTUw1TGV4
ZXI6Om1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpCi17Ci0gICAgQVNTRVJUKG1fdG9rZW4tPnR5
cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIgfHwgbV90b2tlbi0+dHlwZSgpID09IEhUTUw1
VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVU
b2tlbjo6Q2hhcmFjdGVyKSB7Ci0gICAgICAgIC8vIFdlIGhhdmUgYSBjaGFyYWN0ZXIgdG9rZW4g
cXVldWVkIHVwLiAgV2UgbmVlZCB0byBlbWl0IGl0IGJlZm9yZSB3ZQotICAgICAgICAvLyBjYW4g
c3RhcnQgYmVnaW4gdGhlIGJ1ZmZlcmVkIGVuZCB0YWcgdG9rZW4uCi0gICAgICAgIGVtaXRDdXJy
ZW50VG9rZW4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBmbHVzaEJ1ZmZlcmVkRW5k
VGFnKCk7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmZsdXNoQnVmZmVyZWRFbmRUYWco
KQotewotICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1lKTsKLSAg
ICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgIGlmIChtX3N0YXRlID09IERhdGFT
dGF0ZSkKLSAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotfQotCiBpbmxpbmUgdm9pZCBIVE1M
NUxleGVyOjplbWl0Q3VycmVudFRva2VuKCkKIHsKICAgICBBU1NFUlQobV90b2tlbi0+dHlwZSgp
ICE9IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIG1fZW1pdFBlbmRpbmcgPSB0cnVl
OwogICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6U3RhcnRUYWcpCiAgICAg
ICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+bmFtZSgpOwogfQogCi1pbmxp
bmUgYm9vbCBIVE1MNUxleGVyOjpzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihjb25z
dCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKK2lubGluZSBib29sIEhUTUw1TGV4ZXI6OnNob3Vs
ZEVtaXRCdWZmZXJlZENoYXJhY3RlclRva2VuKCkKIHsKLSAgICByZXR1cm4gc291cmNlLmlzQ2xv
c2VkKCkgJiYgbV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9rZW46OkNoYXJhY3RlcjsKKyAgICBy
ZXR1cm4gbV9zb3VyY2UtPmlzQ2xvc2VkKCkgJiYgbV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9r
ZW46OkNoYXJhY3RlcjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1TGV4
ZXIuaCBiL1dlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmgKaW5kZXggZDM0MDE0YTlmZGU0NzQ5ZjA1
NTBjZjk1Zjg1ODE5YzdkYjVmYmZhZi4uYTFkZmJlY2U2YmNiYTBiODRkZDlkNmZiN2FkZDk4YWY1
YTdkMTU3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTDVMZXhlci5oCkBAIC0xMzYsMzEgKzEzNiwzMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGlubGluZSB2b2lkIGVtaXRDb2RlUG9pbnQodW5zaWduZWQpOwogCiAg
ICAgICAgIHVuc2lnbmVkIGNvbnN1bWVFbnRpdHkoU2VnbWVudGVkU3RyaW5nJiwgYm9vbCYgbm90
RW5vdWdoQ2hhcmFjdGVycyk7Ci0gICAgICAgIGlubGluZSBib29sIHByb2Nlc3NFbnRpdHkoU2Vn
bWVudGVkU3RyaW5nJiBzb3VyY2UpOworICAgICAgICBpbmxpbmUgYm9vbCBwcm9jZXNzRW50aXR5
KCk7CiAKICAgICAgICAgaW5saW5lIGJvb2wgdGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgU3RyaW5n
Jik7CiAKKyAgICAgICAgaW5saW5lIGJvb2wgbWFpbkxvb3AoKTsKKwogICAgICAgICAvLyBTb21l
dGltZXMgd2Ugc3BlY3VsYXRpdmVseSBjb25zdW1lIGlucHV0IGNoYXJhY3RlcnMgYW5kIHdlIGRv
bid0CiAgICAgICAgIC8vIGtub3cgd2hldGhlciB0aGV5IHJlcHJlc2VudCBlbmQgdGFncyBvciBS
Q0RBVEEsIGV0Yy4gIFRoZXNlCiAgICAgICAgIC8vIGZ1bmN0aW9ucyBoZWxwIG1hbmFnZSB0aGVz
ZSBzdGF0ZS4KICAgICAgICAgaW5saW5lIHZvaWQgYWRkVG9Qb3NzaWJsZUVuZFRhZyhVQ2hhciBj
Yyk7CiAgICAgICAgIGlubGluZSBib29sIGlzQXBwcm9wcmlhdGVFbmRUYWcoKTsKLSAgICAgICAg
aW5saW5lIHZvaWQgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgIGlubGluZSB2
b2lkIGZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKIAotICAgICAgICBpbmxpbmUgYm9vbCBzaG91bGRF
bWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKKyAgICAg
ICAgaW5saW5lIGJvb2wgc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4oKTsKIAogICAg
ICAgICBTdGF0ZSBtX3N0YXRlOwogCiAgICAgICAgIEF0b21pY1N0cmluZyBtX2FwcHJvcHJpYXRl
RW5kVGFnTmFtZTsKIAotICAgICAgICAvLyBtX3Rva2VuIGlzIG93bmVkIGJ5IHRoZSBjYWxsZXIu
ICBJZiBuZXh0VG9rZW4gaXMgbm90IG9uIHRoZSBzdGFjaywKLSAgICAgICAgLy8gdGhpcyBtZW1i
ZXIgbWlnaHQgYmUgcG9pbnRpbmcgdG8gdW5hbGxvY2F0ZWQgbWVtb3J5LgorICAgICAgICAvLyBt
X3Rva2VuIGFuZCBtX3NvdXJjZSBhcmUgb3duZWQgYnkgdGhlIGNhbGxlci4gSWYgbmV4dFRva2Vu
IGlzIG5vdAorICAgICAgICAvLyBvbiB0aGUgc3RhY2ssIHRoZXNlIG1lbWJlcnMgbWlnaHQgYmUg
cG9pbnRpbmcgdG8gdW5hbGxvY2F0ZWQgbWVtb3J5LgogICAgICAgICBIVE1MNVRva2VuKiBtX3Rv
a2VuOworICAgICAgICBTZWdtZW50ZWRTdHJpbmcqIG1fc291cmNlOworCiAgICAgICAgIGludCBt
X2xpbmVOdW1iZXI7CiAKICAgICAgICAgYm9vbCBtX3NraXBMZWFkaW5nTmV3TGluZUZvckxpc3Rp
bmc7Ci0gICAgICAgIGJvb2wgbV9lbWl0UGVuZGluZzsKIAogICAgICAgICAvLyBodHRwOi8vd3d3
LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyN0ZW1wb3JhcnktYnVmZmVy
CiAgICAgICAgIFZlY3RvcjxVQ2hhciwgMzI+IG1fdGVtcG9yYXJ5QnVmZmVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57921</attachid>
            <date>2010-06-04 15:24:54 -0700</date>
            <delta_ts>2010-06-04 22:26:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40048-20100604152453.patch</filename>
            <type>text/plain</type>
            <size>10696</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MDcxMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTAtMDYtMDQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtl
IEhUTUw1TGV4ZXIgZ28gZmFzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDAwNDgKKworICAgICAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdXMgZnJvbSB1
c2luZyBhIGp1bXAgdGFibGUgZm9yIGVhY2ggY2hhcmFjdGVyIHRvCisgICAgICAgIHVzaW5nIGFi
c29sdXRlIGp1bXBzIGJldHdlZW4gcGFyc2VyIHN0YXRlcy4gIFRoaXMgYXBwZWFycyB0byBiZSBh
Ym91dCBhCisgICAgICAgIDElIGltcHJvdmVtZW50IG9uIHRoZSBwYXJzZXIgYmVuY2ggbWFyayAo
d2hpY2ggaXMgMS8xMHRoIG9mIHdoYXQgd2UKKyAgICAgICAgbmVlZCB0byBjYXRjaCB0aGUgb2xk
IHBhcnNlcikuCisKKyAgICAgICAgSSd2ZSBrZXB0IHRoZSB1bmRlcmx5aW5nIGxvZ2ljIGFzIGNs
b3NlIHRvIHRoZSBvbGQgbG9naWMgYXMgcG9zc2libGUuCisgICAgICAgIFRoaXMgbmV3IGZvcm0g
d2lsbCBtYWtlIGl0IGVhc2llciB0byBoYW5kbGUgdGhlIGlucHV0IHN0cmVhbSBwYXJ0IG9mCisg
ICAgICAgIHRoZSBzcGVjIGFuZCB0byBtYWtlIGZ1cnRoZXIgcGVyZm9ybWFuY2UgaW1wcm92ZW1l
bnRzLgorCisgICAgICAgICogaHRtbC9IVE1MNUxleGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUw1TGV4ZXI6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6Om5leHRU
b2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNUxleGVyOjplbWl0Q3VycmVudFRva2VuKToK
KyAgICAgICAgKiBodG1sL0hUTUw1TGV4ZXIuaDoKKwogMjAxMC0wNi0wNCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MNUxleGVyLmNwcAkocmV2aXNpb24gNjA3MTIpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TDVMZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw3ICsxNTYsNiBAQCB2b2lkIEhUTUw1
TGV4ZXI6OnJlc2V0KCkKICAgICBtX3Rva2VuID0gMDsKICAgICBtX2xpbmVOdW1iZXIgPSAwOwog
ICAgIG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZyA9IGZhbHNlOwotICAgIG1fZW1pdFBl
bmRpbmcgPSBmYWxzZTsKICAgICBtX2FkZGl0aW9uYWxBbGxvd2VkQ2hhcmFjdGVyID0gJ1wwJzsK
IH0KIApAQCAtMzE4LDM3ICszMTcsNjEgQEAgaW5saW5lIGJvb2wgSFRNTDVMZXhlcjo6cHJvY2Vz
c0VudGl0eShTZQogICAgIHJldHVybiB0cnVlOwogfQogCi0jZGVmaW5lIEJFR0lOX1NUQVRFKHN0
YXRlTmFtZSkgY2FzZSBzdGF0ZU5hbWU6CisjZGVmaW5lIEJFR0lOX1NUQVRFKHN0YXRlTmFtZSkg
Y2FzZSBzdGF0ZU5hbWU6IHN0YXRlTmFtZToKICNkZWZpbmUgRU5EX1NUQVRFKCkgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IGJyZWFrOwogCi0jZGVmaW5lIEVNSVRfQU5EX1JFU1VNRV9JTihzdGF0ZU5h
bWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1fc3RhdGUgPSBEYXRhU3Rh
dGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBnb3RvIGJyZWFrTGFiZWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgUkVDT05TVU1FX0lOKFN0YXRlTmFtZSkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgbV9zdGF0ZSA9IFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2MgPSAqc291cmNlOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290
byBTdGF0ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAotI2RlZmluZSBBRFZBTkNFX1RPKHN0YXRl
TmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBnb3RvIGJy
ZWFrTGFiZWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyNkZWZpbmUgQURWQU5DRV9UTyhTdGF0ZU5hbWUpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
bV9zdGF0ZSA9IFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgc291cmNlLmFkdmFuY2UobV9saW5lTnVtYmVyKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHNvdXJjZS5pc0Vt
cHR5KCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2Up
OyAgICAgICAgICAgICAgIFwKKyAgICAgICAgY2MgPSAqc291cmNlOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290byBTdGF0
ZU5hbWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAotI2RlZmluZSBSRUNPTlNVTUVfSU4oc3RhdGVOYW1l
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBkbyB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBnb3RvIGNvbnRpbnVl
TGFiZWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyNkZWZpbmUgRU1JVF9BTkRfUkVTVU1FX0lOKFN0YXRlTmFtZSkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zdGF0
ZSA9IFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgc291cmNlLmFkdmFuY2UobV9saW5lTnVtYmVyKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
cmV0dXJuIHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICB9IHdoaWxlIChmYWxzZSkKIAotI2RlZmluZSBGTFVTSF9FTUlUX0FO
RF9SRVNVTUVfSU4oc3RhdGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG1fc3RhdGUgPSBzdGF0ZU5hbWU7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBtYXli
ZUZsdXNoQnVmZmVyZWRFbmRUYWcoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgZ290byBicmVha0xhYmVsOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIF9GTFVTSF9CVUZGRVJFRF9F
TkRfVEFHKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIEFTU0VSVChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVU
b2tlbjo6Q2hhcmFjdGVyIHx8ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICBtX3Rv
a2VuLT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6VW5pbml0aWFsaXplZCk7ICAgICAgICAgICAgICBc
CisgICAgICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRN
TDVUb2tlbjo6Q2hhcmFjdGVyKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVyZWRFbmRUYWdOYW1l
KTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1fYnVmZmVyZWRFbmRUYWdOYW1l
LmNsZWFyKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3
aGlsZSAoZmFsc2UpCiAKLS8vIFdoZW4gd2UgbW92ZSBhd2F5IGZyb20gdXNpbmcgYSBqdW1wIHRh
YmxlLCB0aGVzZSBtYWNyb3Mgd2lsbCBiZSBkaWZmZXJlbnQuCi0jZGVmaW5lIEZMVVNIX0FORF9B
RFZBTkNFX1RPKHN0YXRlTmFtZSkgRkxVU0hfRU1JVF9BTkRfUkVTVU1FX0lOKHN0YXRlTmFtZSkK
KyNkZWZpbmUgRkxVU0hfQU5EX0FEVkFOQ0VfVE8oU3RhdGVOYW1lKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbV9zdGF0
ZSA9IFN0YXRlTmFtZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgX0ZMVVNIX0JVRkZFUkVEX0VORF9UQUcoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHNvdXJjZS5pc0VtcHR5KCkp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIHJldHVybiBzaG91bGRFbWl0QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihzb3VyY2UpOyAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgY2MgPSAqc291cmNlOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ290byBTdGF0ZU5hbWU7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBGTFVTSF9FTUlUX0FORF9SRVNVTUVfSU4oU3Rh
dGVOYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBtX3N0YXRlID0gU3RhdGVOYW1lOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfRkxVU0hfQlVGRkVSRURfRU5EX1RB
RygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBy
ZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQogCiBib29sIEhUTUw1TGV4ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiB7CkBAIC0z
NzMsMTIgKzM5NiwxMCBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJp
CiAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUKCdceDBBJyk7CiAgICAgbV9za2lwTGVh
ZGluZ05ld0xpbmVGb3JMaXN0aW5nID0gZmFsc2U7CiAKLSAgICAvLyBTb3VyY2U6IGh0dHA6Ly93
d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3Rva2VuaXNhdGlvbjAK
LSAgICAvLyBGSVhNRTogVGhpcyB3aGlsZSBzaG91bGQgc3RvcCBhcyBzb29uIGFzIHdlIGhhdmUg
YSB0b2tlbiB0byByZXR1cm4uCi0gICAgd2hpbGUgKCFzb3VyY2UuaXNFbXB0eSgpKSB7Ci0gICAg
Ly8gRklYTUU6IFRoaXMgaXMgYSBwdXJwb3NlZnVsIHN0eWxlIHZpb2xhdGlvbiBiZWNhdXNlIHRo
aXMgd2hpbGUgbG9vcCBpcwotICAgIC8vIGdvaW5nIHRvIGJlIHJlbW92ZWQgc29vbi4KKyAgICBp
ZiAoc291cmNlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHNob3VsZEVtaXRCdWZmZXJlZENo
YXJhY3RlclRva2VuKHNvdXJjZSk7CiAKKyAgICAvLyBTb3VyY2U6IGh0dHA6Ly93d3cud2hhdHdn
Lm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3Rva2VuaXNhdGlvbjAKICAgICBVQ2hh
ciBjYyA9ICpzb3VyY2U7CiAgICAgc3dpdGNoIChtX3N0YXRlKSB7CiAgICAgQkVHSU5fU1RBVEUo
RGF0YVN0YXRlKSB7CkBAIC0xMTExLDE5ICsxMTMyLDE5IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmkKICAgICBFTkRfU1RBVEUoKQogCiAgICAgQkVHSU5fU1RBVEUo
Qm9ndXNDb21tZW50U3RhdGUpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc3RhdGUgaXNuJ3Qg
Y29ycmVjdCBiZWNhdXNlIHdlJ2xsIHRlcm1pbmF0ZSB0aGUKKyAgICAgICAgLy8gY29tbWVudCBl
YXJseSBpZiB3ZSBkb24ndCBoYXZlIHRoZSB3aG9sZSBpbnB1dCBzdHJlYW0gYXZhaWxhYmxlLgog
ICAgICAgICBtX3Rva2VuLT5iZWdpbkNvbW1lbnQoKTsKICAgICAgICAgd2hpbGUgKCFzb3VyY2Uu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBjYyA9ICpzb3VyY2U7CiAgICAgICAgICAgICBpZiAo
Y2MgPT0gJz4nKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIEVNSVRf
QU5EX1JFU1VNRV9JTihEYXRhU3RhdGUpOwogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9D
b21tZW50KGNjKTsKICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlKG1fbGluZU51bWJlcik7CiAg
ICAgICAgIH0KLSAgICAgICAgRU1JVF9BTkRfUkVTVU1FX0lOKERhdGFTdGF0ZSk7Ci0gICAgICAg
IGlmIChzb3VyY2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IG1fc3RhdGUgPSBEYXRhU3RhdGU7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAvLyBG
SVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KLSAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEVO
RF9TVEFURSgpCiAKQEAgLTE1NzAsMjAgKzE1OTEsOCBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpCiAKICAgICB9CiAKLWJyZWFrTGFiZWw6Ci0gICAgc291cmNlLmFk
dmFuY2UobV9saW5lTnVtYmVyKTsKLSAgICBpZiAobV9lbWl0UGVuZGluZykgewotICAgICAgICBt
X2VtaXRQZW5kaW5nID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotY29u
dGludWVMYWJlbDoKLSAgICA7IC8vIFdlIG5lZWQgYW4gZW1wdHkgc3RhdGVtZW50IGhlcmUgdG8g
bWFrZSBjb250aW51ZUxhYmVsIGhhcHB5LgotICAgIH0gLy8gTWF0Y2hlcyB0aGUgIndoaWxlIiBh
Ym92ZS4KLQotICAgIC8vIFdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyZWFt
LiAgSWYgd2UgaGF2ZSBhIGNoYXJhY3RlcgotICAgIC8vIHRva2VuIGJ1ZmZlcmVkLCB3ZSBzaG91
bGQgZW1pdCBpdC4KLSAgICByZXR1cm4gc2hvdWxkRW1pdEJ1ZmZlcmVkQ2hhcmFjdGVyVG9rZW4o
c291cmNlKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9
CiAKIGlubGluZSBib29sIEhUTUw1TGV4ZXI6OnRlbXBvcmFyeUJ1ZmZlcklzKGNvbnN0IFN0cmlu
ZyYgZXhwZWN0ZWRTdHJpbmcpCkBAIC0xNjI2LDMwICsxNjM1LDkgQEAgaW5saW5lIHZvaWQgSFRN
TDVMZXhlcjo6ZW1pdFBhcnNlRXJyb3IoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWlu
bGluZSB2b2lkIEhUTUw1TGV4ZXI6Om1heWJlRmx1c2hCdWZmZXJlZEVuZFRhZygpCi17Ci0gICAg
QVNTRVJUKG1fdG9rZW4tPnR5cGUoKSA9PSBIVE1MNVRva2VuOjpDaGFyYWN0ZXIgfHwgbV90b2tl
bi0+dHlwZSgpID09IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIGlmIChtX3Rva2Vu
LT50eXBlKCkgPT0gSFRNTDVUb2tlbjo6Q2hhcmFjdGVyKSB7Ci0gICAgICAgIC8vIFdlIGhhdmUg
YSBjaGFyYWN0ZXIgdG9rZW4gcXVldWVkIHVwLiAgV2UgbmVlZCB0byBlbWl0IGl0IGJlZm9yZSB3
ZQotICAgICAgICAvLyBjYW4gc3RhcnQgYmVnaW4gdGhlIGJ1ZmZlcmVkIGVuZCB0YWcgdG9rZW4u
Ci0gICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBmbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci19Ci0KLWlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmZs
dXNoQnVmZmVyZWRFbmRUYWcoKQotewotICAgIG1fdG9rZW4tPmJlZ2luRW5kVGFnKG1fYnVmZmVy
ZWRFbmRUYWdOYW1lKTsKLSAgICBtX2J1ZmZlcmVkRW5kVGFnTmFtZS5jbGVhcigpOwotICAgIGlm
IChtX3N0YXRlID09IERhdGFTdGF0ZSkKLSAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwotfQot
CiBpbmxpbmUgdm9pZCBIVE1MNUxleGVyOjplbWl0Q3VycmVudFRva2VuKCkKIHsKICAgICBBU1NF
UlQobV90b2tlbi0+dHlwZSgpICE9IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpOwotICAgIG1f
ZW1pdFBlbmRpbmcgPSB0cnVlOwogICAgIGlmIChtX3Rva2VuLT50eXBlKCkgPT0gSFRNTDVUb2tl
bjo6U3RhcnRUYWcpCiAgICAgICAgIG1fYXBwcm9wcmlhdGVFbmRUYWdOYW1lID0gbV90b2tlbi0+
bmFtZSgpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oCShyZXZpc2lvbiA2MDY4OSkKKysrIFdlYkNvcmUv
aHRtbC9IVE1MNUxleGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw4ICsxNDUsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIGZ1bmN0aW9ucyBoZWxwIG1hbmFnZSB0aGVzZSBz
dGF0ZS4KICAgICAgICAgaW5saW5lIHZvaWQgYWRkVG9Qb3NzaWJsZUVuZFRhZyhVQ2hhciBjYyk7
CiAgICAgICAgIGlubGluZSBib29sIGlzQXBwcm9wcmlhdGVFbmRUYWcoKTsKLSAgICAgICAgaW5s
aW5lIHZvaWQgbWF5YmVGbHVzaEJ1ZmZlcmVkRW5kVGFnKCk7Ci0gICAgICAgIGlubGluZSB2b2lk
IGZsdXNoQnVmZmVyZWRFbmRUYWcoKTsKIAogICAgICAgICBpbmxpbmUgYm9vbCBzaG91bGRFbWl0
QnVmZmVyZWRDaGFyYWN0ZXJUb2tlbihjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKIApAQCAtMTYw
LDcgKzE1OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgaW50IG1fbGluZU51bWJl
cjsKIAogICAgICAgICBib29sIG1fc2tpcExlYWRpbmdOZXdMaW5lRm9yTGlzdGluZzsKLSAgICAg
ICAgYm9vbCBtX2VtaXRQZW5kaW5nOwogCiAgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9y
Zy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI3RlbXBvcmFyeS1idWZmZXIKICAgICAgICAg
VmVjdG9yPFVDaGFyLCAzMj4gbV90ZW1wb3JhcnlCdWZmZXI7Cg==
</data>
<flag name="review"
          id="42631"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>