<?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>11673</bug_id>
          
          <creation_ts>2006-11-21 21:34:31 -0800</creation_ts>
          <short_desc>REGRESSION(r14067): Dojo examples don&apos;t load in iframe</short_desc>
          <delta_ts>2007-05-23 10:36:49 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WORKSFORME</resolution>
          
          
          <bug_file_loc>http://dojotoolkit.org/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, NeedsReduction, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>13846</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Lilek">dev+webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>44805</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2006-11-21 21:34:31 -0800</bug_when>
    <thetext>The examples at the provided url (click the &quot;See it in Action&quot; tab for the examples) don&apos;t load in the iframes on the example page, but loading them in a new tab/window loads them fine (http://dojotoolkit.org/dojo/demos/widget/Mail.html).  Appears to be a side effect of the loader refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34198</commentid>
    <comment_count>1</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2007-01-19 06:42:38 -0800</bug_when>
    <thetext>Works for me... Reporter: please check in latest nightly, and reopen if it still doesn&apos;t work for you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>34208</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-01-19 11:13:54 -0800</bug_when>
    <thetext>Reopening as this is still an issue.

Load the website, click &quot;see it in action&quot;, click &quot;Demo Applications&quot; and finally &quot;View Demo&quot; under the Mail example.  Firefox loads it fine, WebKit doesn&apos;t.  I get a number of these errors printed to the console in my debug build of r18973:

ERROR: unimplemented propertyID: 46
(/Users/matt/Code/WebKit/WebCore/css/CSSComputedStyleDeclaration.cpp:1474 WTF::PassRefPtr&lt;WebCore::CSSValue&gt; WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue(int, WebCore::EUpdateLayout) const)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>33325</commentid>
    <comment_count>3</comment_count>
    <who name="Stephanie Lewis">slewis</who>
    <bug_when>2007-01-22 18:01:25 -0800</bug_when>
    <thetext>In Radar&lt;rdar://problem/4947072&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>32672</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-01-26 01:58:12 -0800</bug_when>
    <thetext>As I suspected, implementing computed style for box-sizing got rid fo the log message but didn&apos;t make the Dojo examples work.

The actual problem does seem to be something related to frame loading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23553</commentid>
    <comment_count>5</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-12 23:47:33 -0800</bug_when>
    <thetext>I&apos;m not sure this has anything to do with loading. If you look at the frame source for the example frame, or inspect it in the web inspector, it looks like the elements are all there, and have proper style and layout metrics. But nothing seems to paint!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23544</commentid>
    <comment_count>6</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-02-13 07:53:19 -0800</bug_when>
    <thetext>I was just looking at this last night.  The reason we&apos;re not painting is because they&apos;re setting the width of the example iframe&apos;s parent div to 0 in ToT.  I&apos;m not sure if thats an intermediate step that happens on all browsers but is then changed and that isn&apos;t happening on ToT (spoofing as another browser doesn&apos;t do anything) or what as reducing the Dojo code is, erm, &quot;fun&quot;...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22755</commentid>
    <comment_count>7</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-19 22:42:38 -0800</bug_when>
    <thetext>Works in r13060.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22756</commentid>
    <comment_count>8</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-02-19 22:45:51 -0800</bug_when>
    <thetext>Whatever caused this happened between r14055 and r14071.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22554</commentid>
    <comment_count>9</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-20 02:32:48 -0800</bug_when>
    <thetext>I definitively tracked this down to r14067. It seems like that patch should only have affected computed margin and padding; not clear why it results in a width of 0px.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22037</commentid>
    <comment_count>10</comment_count>
      <attachid>13337</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-22 19:53:11 -0800</bug_when>
    <thetext>Created attachment 13337
start on a reduction

Here&apos;s a start on a reduction, all in one file. It&apos;s still huge. I think I may have also over-reduced this, ass adding back the iframe I took out does result in the frame showing up now, although the height of its containing div is still wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22029</commentid>
    <comment_count>11</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-22 19:59:15 -0800</bug_when>
    <thetext>Indeed, my reduction still fails with the revision before the regression, so I think it is just an unrelated Safari/Firefox behavior difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22006</commentid>
    <comment_count>12</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-23 00:30:19 -0800</bug_when>
    <thetext>Revision that regressed this is http://trac.webkit.org/projects/webkit/changeset/14067</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>21692</commentid>
    <comment_count>13</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-02-25 16:22:58 -0800</bug_when>
    <thetext>I talked to Alex Russel of Dojo fame about this, and he pointed out that soon a new version of the Dojo site will be launching. The preview version does&apos;t show this bug with ToT WebKit, but ironically, it fails in a similar way with Safari 2.0.4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15456</commentid>
    <comment_count>14</comment_count>
    <who name="Matt Lilek">dev+webkit</who>
    <bug_when>2007-04-06 11:01:50 -0700</bug_when>
    <thetext>Dojo updated their website and this bug doesn&apos;t show anymore.  Closing since we could never figure out exactly what caused it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>13337</attachid>
            <date>2007-02-22 19:53:11 -0800</date>
            <delta_ts>2007-02-22 19:53:11 -0800</delta_ts>
            <desc>start on a reduction</desc>
            <filename>dojo-bug.html</filename>
            <type>text/html</type>
            <size>111438</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c3R5bGU+Ci5kZW1vQ29udGFpbmVyVGFicyB7Cgl3aWR0aDogMTAwJTsK
CWhlaWdodDogNDAwcHg7Cn0KCi5kb2pvTGF5b3V0Q29udGFpbmVyIHsgCiAgICBwb3NpdGlvbjog
cmVsYXRpdmU7IAogICAgZGlzcGxheTogYmxvY2s7IAp9Cgpib2R5IC5kb2pvQWxpZ25Ub3AsIGJv
ZHkgLmRvam9BbGlnbkJvdHRvbSwgYm9keSAuZG9qb0FsaWduTGVmdCwgYm9keSAuZG9qb0FsaWdu
UmlnaHQgeyAKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsgCiAgICBvdmVyZmxvdzogaGlkZGVuOyAK
fQoKYm9keSAuZG9qb0FsaWduQ2xpZW50IHsgCiAgICBwb3NpdGlvbjogYWJzb2x1dGUgCn0KCi5k
b2pvQWxpZ25DbGllbnQgewogICAgIG92ZXJmbG93OiBhdXRvOyAKfQo8L3N0eWxlPgo8c2NyaXB0
PgogIGRqQ29uZmlnID0geyAiaXNEZWJ1ZyI6IGZhbHNlLCAiYWxsb3dRdWVyeUNvbmZpZyI6IGZh
bHNlLCAibGlicmFyeVNjcmlwdFVyaSI6ICIiLCAiaWVQcmV2ZW50Q2xvYmJlciI6IGZhbHNlLCAi
aWVDbG9iYmVyTWluaW1hbCI6IHRydWUsICJwcmV2ZW50QmFja0J1dHRvbkZpeCI6IHRydWUsICJz
ZWFyY2hJZHMiOiBbXSwgInBhcnNlV2lkZ2V0cyI6IHRydWUgfTsKCiAgdmFyIGRqX2dsb2JhbCA9
IHRoaXM7CgogIHZhciBkb2pvID0geyB9OwoKICBkb2pvLnZlcnNpb24gPSB7ICJtYWpvciI6IDAs
ICJtaW5vciI6IDMsICJwYXRjaCI6IDAsICJmbGFnIjogIisiLCAicmV2aXNpb24iOiBOdW1iZXIo
IiRSZXY6IDQwMzAgJCIubWF0Y2goL1swLTldKy8pWzBdKSwgInRvU3RyaW5nIjogZnVuY3Rpb24g
KCkKICB7CiAgICB3aXRoIChkb2pvLnZlcnNpb24pIAogICAgewogICAgICByZXR1cm4gbWFqb3Ir
Ii4iK21pbm9yKyIuIitwYXRjaCtmbGFnKyIgKCIrcmV2aXNpb24rIikiOwogICAgfQogIH0gfTsK
ICBkb2pvLmV2YWxQcm9wID0gZnVuY3Rpb24gKF8zLCBfNCwgXzUpCiAgewogICAgcmV0dXJuIChf
NCAmJiAhKHR5cGVvZiAoXzQgPyBfNCA6IGRqX2dsb2JhbClbXzNdID09ICJ1bmRlZmluZWQiKSA/
IF80W18zXSA6IChfNSA/IChfNFtfM10gPSB7IH0pIDogdW5kZWZpbmVkKSk7CiAgfTsKICBkb2pv
LnBhcnNlT2JqUGF0aCA9IGZ1bmN0aW9uIChfNiwgXzcsIF84KQogIHsKICAgIHZhciBfOSA9IChf
NyA/IF83IDogZGpfZ2xvYmFsKTsKICAgIHZhciBfYSA9IF82LnNwbGl0KCIuIik7CiAgICB2YXIg
X2IgPSBfYS5wb3AoKTsKICAgIGZvciAoaSA9IDAsIGwgPSBfYS5sZW5ndGg7IGkgPCBsICYmIF85
OyBpKyspCiAgICAgIHsKICAgICAgICBfOSA9IGRvam8uZXZhbFByb3AoX2FbaV0sIF85LCBfOCk7
CiAgICAgIH0KICAgIHJldHVybiB7ICJvYmoiOiBfOSwgInByb3AiOiBfYiB9OwogIH07CiAgZG9q
by5ldmFsT2JqUGF0aCA9IGZ1bmN0aW9uIChfZCwgX2UpCiAgewogICAgaWYgKHR5cGVvZiBfZCAh
PSAic3RyaW5nIikKICAgICAgewogICAgICAgIHJldHVybiBkal9nbG9iYWw7CiAgICAgIH0KICAg
IGlmIChfZC5pbmRleE9mKCIuIikgPT0gLTEpCiAgICAgIHsKICAgICAgICByZXR1cm4gZG9qby5l
dmFsUHJvcChfZCwgZGpfZ2xvYmFsLCBfZSk7CiAgICAgIH0KICAgIHdpdGggKGRvam8ucGFyc2VP
YmpQYXRoKF9kLCBkal9nbG9iYWwsIF9lKSkgCiAgICB7CiAgICAgIHJldHVybiBkb2pvLmV2YWxQ
cm9wKHByb3AsIG9iaiwgX2UpOwogICAgfQogIH07CiAgZG9qby5pbmhlcml0cyA9IGZ1bmN0aW9u
IChfMWMsIF8xZCkKICB7CiAgICBfMWMucHJvdG90eXBlID0gbmV3IF8xZCgpOwogICAgXzFjLnBy
b3RvdHlwZS5jb25zdHJ1Y3RvciA9IF8xYzsKICAgIF8xYy5zdXBlcmNsYXNzID0gXzFkLnByb3Rv
dHlwZTsKICAgIF8xY1sic3VwZXIiXSA9IF8xZC5wcm90b3R5cGU7CiAgfTsKICBkb2pvLmhvc3Rl
bnYgPSB7fTsKICAoZnVuY3Rpb24gKCkKICB7CiAgICB2YXIgXzI3ID0geyAicGtnRmlsZU5hbWUi
OiAiX19wYWNrYWdlX18iLCAibG9hZGluZ19tb2R1bGVzXyI6IHsgfSwgImxvYWRlZF9tb2R1bGVz
XyI6IHsgfSwgImFkZGVkVG9Mb2FkaW5nQ291bnQiOiBbXSwgInJlbW92ZWRGcm9tTG9hZGluZ0Nv
dW50IjogW10sICJpbkZsaWdodENvdW50IjogMCwgIm1vZHVsZVByZWZpeGVzXyI6IHsgImRvam8i
OiB7ICJuYW1lIjogImRvam8iLCAidmFsdWUiOiAic3JjIiB9IH0sICJzZXRNb2R1bGVQcmVmaXgi
OiBmdW5jdGlvbiAoXzI4LCBfMjkpCiAgICB7CiAgICAgIHRoaXMubW9kdWxlUHJlZml4ZXNfW18y
OF0gPSB7ICJuYW1lIjogXzI4LCAidmFsdWUiOiBfMjkgfTsKICAgIH0sICJnZXRNb2R1bGVQcmVm
aXgiOiBmdW5jdGlvbiAoXzJhKQogICAgewogICAgICB2YXIgbXAgPSB0aGlzLm1vZHVsZVByZWZp
eGVzXzsKICAgICAgaWYgKChtcFtfMmFdKSAmJiAobXBbXzJhXVsibmFtZSJdKSkKICAgICAgICB7
CiAgICAgICAgICByZXR1cm4gbXBbXzJhXS52YWx1ZTsKICAgICAgICB9CiAgICAgIHJldHVybiBf
MmE7CiAgICB9LCAicG9zdF9sb2FkXyI6IGZhbHNlLCAibW9kdWxlc0xvYWRlZExpc3RlbmVycyI6
IFtdLCAibG9hZE5vdGlmeWluZyI6IGZhbHNlIH07CiAgICBmb3IgKHZhciBfMmMgaW4gXzI3KQog
ICAgICB7CiAgICAgICAgZG9qby5ob3N0ZW52W18yY10gPSBfMjdbXzJjXTsKICAgICAgfQogIH0p
KCk7CiAgZG9qby5ob3N0ZW52LmxvYWRlZCA9IGZ1bmN0aW9uICgpCiAgewogICB0aGlzLmxvYWRO
b3RpZnlpbmcgPSB0cnVlOwogICAgdGhpcy5wb3N0X2xvYWRfID0gdHJ1ZTsKICAgIHZhciBtbGwg
PSB0aGlzLm1vZHVsZXNMb2FkZWRMaXN0ZW5lcnM7CiAgICBmb3IgKHggPSAwOyB4IDwgbWxsLmxl
bmd0aDsgeCsrKQogICAgICB7CiAgICAgICAgbWxsW3hdKCk7CiAgICAgIH0KICAgIHRoaXMubW9k
dWxlc0xvYWRlZExpc3RlbmVycyA9IFtdOwogICAgdGhpcy5sb2FkTm90aWZ5aW5nID0gZmFsc2U7
CiAgfTsKICBkb2pvLmFkZE9uTG9hZCA9IGZ1bmN0aW9uIChvYmosIF8zYykKICB7CiAgICB2YXIg
ZGggPSBkb2pvLmhvc3RlbnY7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKQogICAgICB7
CiAgICAgICAgZGgubW9kdWxlc0xvYWRlZExpc3RlbmVycy5wdXNoKG9iaik7CiAgICAgIH0KICAg
IGVsc2UKICAgICAgewogICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkKICAgICAgICAg
IHsKICAgICAgICAgICAgZGgubW9kdWxlc0xvYWRlZExpc3RlbmVycy5wdXNoKGZ1bmN0aW9uICgp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBvYmpbXzNjXSgpOwogICAgICAgICAgICB9KTsK
ICAgICAgICAgIH0KICAgICAgfQogICAgaWYgKGRoLnBvc3RfbG9hZF8gJiYgZGguaW5GbGlnaHRD
b3VudCA9PSAwICYmICFkaC5sb2FkTm90aWZ5aW5nKQogICAgICB7CiAgICAgICAgZGguY2FsbExv
YWRlZCgpOwogICAgICB9CiAgfTsKICBkb2pvLmhvc3RlbnYuY2FsbExvYWRlZCA9IGZ1bmN0aW9u
ICgpCiAgewogICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09ICJvYmplY3QiKQogICAgICB7CiAg
ICAgICAgc2V0VGltZW91dCgiZG9qby5ob3N0ZW52LmxvYWRlZCgpOyIsIDApOwogICAgICB9CiAg
ICBlbHNlCiAgICAgIHsKICAgICAgICBkb2pvLmhvc3RlbnYubG9hZGVkKCk7CiAgICAgIH0KICB9
OwogIGRvam8uaG9zdGVudi5fZ2xvYmFsX29taXRfbW9kdWxlX2NoZWNrID0gZmFsc2U7CgogIGRv
am8uaG9zdGVudi5zZWFyY2hJZHMgPSBbXTsKICBkb2pvLmhvc3RlbnYuZGVmYXVsdERlYnVnQ29u
dGFpbmVySWQgPSAiZG9qb0RlYnVnIjsKICBmdW5jdGlvbiBkal9hZGROb2RlRXZ0SGRscihfODAs
IF84MSwgZnAsIF84MykKICB7CiAgICB2YXIgXzg0ID0gXzgwWyJvbiIrXzgxXSB8fCBmdW5jdGlv
biAoKQogICAgewogICAgfTsKICAgIF84MFsib24iK184MV0gPSBmdW5jdGlvbiAoKQogICAgewog
ICAgICBmcC5hcHBseShfODAsIGFyZ3VtZW50cyk7CiAgICAgIF84NC5hcHBseShfODAsIGFyZ3Vt
ZW50cyk7CiAgICB9OwogICAgcmV0dXJuIHRydWU7CiAgfQogIGRqX2FkZE5vZGVFdnRIZGxyKHdp
bmRvdywgImxvYWQiLCBmdW5jdGlvbiAoKQogIHsKICAgIGlmIChhcmd1bWVudHMuY2FsbGVlLmlu
aXRpYWxpemVkKQogICAgICB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICBhcmd1bWVudHMu
Y2FsbGVlLmluaXRpYWxpemVkID0gdHJ1ZTsKICAgIHZhciBfODUgPSBmdW5jdGlvbiAoKQogICAg
ewogICAgfTsKICAgIGlmIChkb2pvLmhvc3RlbnYuaW5GbGlnaHRDb3VudCA9PSAwKQogICAgICB7
CiAgICAgICAgICBpZiAoIWRvam8uaG9zdGVudi5wb3N0X2xvYWRfKQogICAgICAJICAgIHsKICAg
ICAgICAJZG9qby5ob3N0ZW52LmNhbGxMb2FkZWQoKTsKCSAgICB9OwogICAgICB9CiAgICBlbHNl
CiAgICAgIHsKICAgICAgICBkb2pvLmFkZE9uTG9hZChfODUpOwogICAgICB9CiAgfSk7CiAgZG9q
by5hZGRPbkxvYWQoZnVuY3Rpb24gKCkKICB7CiAgICB2YXIgXzg2ID0gW107CiAgICBpZiAoZGpD
b25maWcuc2VhcmNoSWRzICYmIGRqQ29uZmlnLnNlYXJjaElkcy5sZW5ndGggPiAwKQogICAgICB7
CiAgICAgICAgXzg2ID0gXzg2LmNvbmNhdChkakNvbmZpZy5zZWFyY2hJZHMpOwogICAgICB9CiAg
ICBpZiAoZG9qby5ob3N0ZW52LnNlYXJjaElkcyAmJiBkb2pvLmhvc3RlbnYuc2VhcmNoSWRzLmxl
bmd0aCA+IDApCiAgICAgIHsKICAgICAgICBfODYgPSBfODYuY29uY2F0KGRvam8uaG9zdGVudi5z
ZWFyY2hJZHMpOwogICAgICB9CiAgICBpZiAoKGRqQ29uZmlnLnBhcnNlV2lkZ2V0cykgfHwgKF84
Ni5sZW5ndGggPiAwKSkKICAgICAgewogICAgICAgIGlmIChkb2pvLmV2YWxPYmpQYXRoKCJkb2pv
LndpZGdldC5QYXJzZSIpKQogICAgICAgICAge3RyeSAKICAgICAgICAgICAgewogICAgICAgICAg
ICAgIHZhciBfODcgPSBuZXcgZG9qby54bWwuUGFyc2UoKTsKICAgICAgICAgICAgICBpZiAoXzg2
Lmxlbmd0aCA+IDApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGZvciAoeCA9
IDA7IHggPCBfODYubGVuZ3RoOyB4KyspCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgdmFyIF84OSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKF84Nlt4XSk7CiAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIV84OSkKICAgICAgICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICB2YXIgXzhhID0gXzg3LnBhcnNlRWxlbWVudChfODks
IG51bGwsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgZG9qby53aWRnZXQuZ2V0UGFyc2Vy
KCkuY3JlYXRlQ29tcG9uZW50cyhfOGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgIGlmIChkakNvbmZpZy5wYXJzZVdpZGdldHMpCiAgICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgdmFyIF84YSA9IF84Ny5wYXJzZUVsZW1lbnQoZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSB8fCBkb2N1bWVudC5ib2R5LCBudWxsLCB0
cnVlKTsKICAgICAgICAgICAgICAgICAgICAgIGRvam8ud2lkZ2V0LmdldFBhcnNlcigpLmNyZWF0
ZUNvbXBvbmVudHMoXzhhKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY2F0Y2ggKGUpCiAgICAgICAgICAgIHsKICAgICAg
ICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgfSk7CiAgZG9qby5ieUlkID0gZnVuY3Rpb24g
KGlkLCBkb2MpCiAgewogICAgaWYgKGlkICYmICh0eXBlb2YgaWQgPT0gInN0cmluZyIgfHwgaWQg
aW5zdGFuY2VvZiBTdHJpbmcpKQogICAgICB7CiAgICAgICAgaWYgKCFkb2MpCiAgICAgICAgICB7
CiAgICAgICAgICAgIGRvYyA9IGRvY3VtZW50OwogICAgICAgICAgfQogICAgICAgIHJldHVybiBk
b2MuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICB9CiAgICByZXR1cm4gaWQ7CiAgfTsKCiAgZG9q
by5sYW5nID0ge307CiAgZG9qby5sYW5nLmV4dGVuZCA9IGZ1bmN0aW9uIChfYWIsIF9hOCkKICB7
CiAgICB2YXIgX2E5ID0geyB9OwogICAgZm9yICh2YXIgeCBpbiBfYTgpCiAgICAgIHsKICAgICAg
ICBpZiAodHlwZW9mIF9hOVt4XSA9PSAidW5kZWZpbmVkIiB8fCBfYTlbeF0gIT0gX2E4W3hdKQog
ICAgICAgICAgewogICAgICAgICAgICBfYWIucHJvdG90eXBlW3hdID0gX2E4W3hdOwogICAgICAg
ICAgfQogICAgICB9CgogIH07CiAgZG9qby5sYW5nLmZpbmQgPSBmdW5jdGlvbiAoYXJyLCB2YWws
IF9hZiwgX2IwKQogIHsKICAgIHZhciBfYjIgPSBkb2pvLmxhbmcuaXNTdHJpbmcoYXJyKTsKICAg
IGlmIChfYjIpCiAgICAgIHsKICAgICAgICBhcnIgPSBhcnIuc3BsaXQoIiIpOwogICAgICB9CiAg
ICBpZiAoX2IwKQogICAgICB7CiAgICAgICAgdmFyIF9iMyA9IC0xOwogICAgICAgIHZhciBpID0g
YXJyLmxlbmd0aC0xOwogICAgICAgIHZhciBlbmQgPSAtMTsKICAgICAgfQogICAgZWxzZQogICAg
ICB7CiAgICAgICAgdmFyIF9iMyA9IDE7CiAgICAgICAgdmFyIGkgPSAwOwogICAgICAgIHZhciBl
bmQgPSBhcnIubGVuZ3RoOwogICAgICB9CiAgICBpZiAoX2FmKQogICAgICB7CiAgICAgICAgd2hp
bGUgKGkgIT0gZW5kKQogICAgICAgICAgewogICAgICAgICAgICBpZiAoYXJyW2ldID09PSB2YWwp
CiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgICAg
fQogICAgICAgICAgICBpICs9IF9iMzsKICAgICAgICAgIH0KICAgICAgfQogICAgZWxzZQogICAg
ICB7CiAgICAgICAgd2hpbGUgKGkgIT0gZW5kKQogICAgICAgICAgewogICAgICAgICAgICBpZiAo
YXJyW2ldID09IHZhbCkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gaTsK
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGkgKz0gX2IzOwogICAgICAgICAgfQogICAgICB9
CiAgICByZXR1cm4gLTE7CiAgfTsKICBkb2pvLmxhbmcuaW5kZXhPZiA9IGRvam8ubGFuZy5maW5k
OwogIGRvam8ubGFuZy5pbkFycmF5ID0gZnVuY3Rpb24gKGFyciwgdmFsKQogIHsKICAgIHJldHVy
biBkb2pvLmxhbmcuZmluZChhcnIsIHZhbCkgPiAtMTsKICB9OwogIGRvam8ubGFuZy5pc0FycmF5
ID0gZnVuY3Rpb24gKHdoKQogIHsKICAgIHJldHVybiAod2ggaW5zdGFuY2VvZiBBcnJheSB8fCB0
eXBlb2Ygd2ggPT0gImFycmF5Iik7CiAgfTsKICBkb2pvLmxhbmcuaXNGdW5jdGlvbiA9IGZ1bmN0
aW9uICh3aCkKICB7CiAgICBpZiAoIXdoKQogICAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICB9CiAgICByZXR1cm4gKHdoIGluc3RhbmNlb2YgRnVuY3Rpb24gfHwgdHlwZW9mIHdoID09
ICJmdW5jdGlvbiIpOwogIH07CiAgZG9qby5sYW5nLmlzU3RyaW5nID0gZnVuY3Rpb24gKHdoKQog
IHsKICAgIHJldHVybiAod2ggaW5zdGFuY2VvZiBTdHJpbmcgfHwgdHlwZW9mIHdoID09ICJzdHJp
bmciKTsKICB9OwogIGRvam8ubGFuZy5pc0FsaWVuID0gZnVuY3Rpb24gKHdoKQogIHsKICAgIGlm
ICghd2gpCiAgICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIHJldHVybiAh
ZG9qby5sYW5nLmlzRnVuY3Rpb24oKSAmJiAvXHtccypcW25hdGl2ZSBjb2RlXF1ccypcfS8udGVz
dChTdHJpbmcod2gpKTsKICB9OwogIGRvam8ubGFuZy5pc051bWJlciA9IGZ1bmN0aW9uICh3aCkK
ICB7CiAgICByZXR1cm4gKHdoIGluc3RhbmNlb2YgTnVtYmVyIHx8IHR5cGVvZiB3aCA9PSAibnVt
YmVyIik7CiAgfTsKICBkb2pvLmxhbmcuaXNVbmRlZmluZWQgPSBmdW5jdGlvbiAod2gpCiAgewog
ICAgcmV0dXJuICgod2ggPT0gdW5kZWZpbmVkKSAmJiAodHlwZW9mIHdoID09ICJ1bmRlZmluZWQi
KSk7CiAgfTsKICBkb2pvLmxhbmcuZm9yRWFjaCA9IGZ1bmN0aW9uIChfZDEsIF9kMiwgX2QzKQog
IHsKICAgIGlmIChBcnJheS5mb3JFYWNoKQogICAgICB7CiAgICAgICAgQXJyYXkuZm9yRWFjaChf
ZDEsIF9kMiwgX2QzKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CiAgICAgICAgaWYgKCFfZDMp
CiAgICAgICAgICB7CiAgICAgICAgICAgIF9kMyA9IGRqX2dsb2JhbDsKICAgICAgICAgIH0KICAg
ICAgICBmb3IgKGkgPSAwLCBsID0gX2QxLmxlbmd0aDsgaSA8IGw7IGkrKykKICAgICAgICAgIHsK
ICAgICAgICAgICAgX2QyLmNhbGwoX2QzLCBfZDFbaV0sIGksIF9kMSk7CiAgICAgICAgICB9CiAg
ICAgIH0KICB9OwogIGRvam8ubGFuZy5maWx0ZXIgPSBmdW5jdGlvbiAoYXJyLCBfZTIsIF9lMykK
ICB7CiAgICB2YXIgX2U0ID0gZG9qby5sYW5nLmlzU3RyaW5nKGFycik7CiAgICBpZiAoX2U0KQog
ICAgICB7CiAgICAgICAgYXJyID0gYXJyLnNwbGl0KCIiKTsKICAgICAgfQogICAgaWYgKEFycmF5
LmZpbHRlcikKICAgICAgewogICAgICAgIHZhciBfZTUgPSBBcnJheS5maWx0ZXIoYXJyLCBfZTIs
IF9lMyk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewogICAgICAgIGlmICghX2UzKQogICAgICAg
ICAgewogICAgICAgICAgICBfZTMgPSBkal9nbG9iYWw7CiAgICAgICAgICB9CiAgICAgICAgdmFy
IF9lNSA9IFtdOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspCiAgICAg
ICAgICB7CiAgICAgICAgICAgIGlmIChfZTIuY2FsbChfZTMsIGFycltpXSwgaSwgYXJyKSkKICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBfZTUucHVzaChhcnJbaV0pOwogICAgICAgICAg
ICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgaWYgKF9lNCkKICAgICAgewogICAgICAgIHJl
dHVybiBfZTUuam9pbigiIik7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewogICAgICAgIHJldHVy
biBfZTU7CiAgICAgIH0KICB9OwogIGRvam8uZG9tID0ge307CiAgZG9qby5kb20uRUxFTUVOVF9O
T0RFID0gMTsKICBkb2pvLmRvbS5BVFRSSUJVVEVfTk9ERSA9IDI7CiAgZG9qby5kb20uVEVYVF9O
T0RFID0gMzsKICBkb2pvLmRvbS5DREFUQV9TRUNUSU9OX05PREUgPSA0OwogIGRvam8uZG9tLkVO
VElUWV9SRUZFUkVOQ0VfTk9ERSA9IDU7CiAgZG9qby5kb20uRU5USVRZX05PREUgPSA2OwogIGRv
am8uZG9tLlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSA9IDc7CiAgZG9qby5kb20uQ09NTUVO
VF9OT0RFID0gODsKICBkb2pvLmRvbS5ET0NVTUVOVF9OT0RFID0gOTsKICBkb2pvLmRvbS5ET0NV
TUVOVF9UWVBFX05PREUgPSAxMDsKICBkb2pvLmRvbS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFID0g
MTE7CiAgZG9qby5kb20uTk9UQVRJT05fTk9ERSA9IDEyOwogIGRvam8uZG9tLmRvam9tbCA9ICJo
dHRwOi8vd3d3LmRvam90b29sa2l0Lm9yZy8yMDA0L2Rvam9tbCI7CgogIGRvam8ueG1sID0ge307
CiAgZG9qby54bWwuUGFyc2UgPSBmdW5jdGlvbiAoKQogIHsKICAgIGZ1bmN0aW9uIGdldERvam9U
YWdOYW1lKG5vZGUpCiAgICB7CiAgICAgIHZhciBfMTQzID0gbm9kZS50YWdOYW1lOwogICAgICBp
ZiAoXzE0My5zdWJzdHIoMCwgNSkudG9Mb3dlckNhc2UoKSAhPSAiZG9qbzoiKQogICAgICAgIHsK
ICAgICAgICAgIGlmIChfMTQzLnN1YnN0cigwLCA0KS50b0xvd2VyQ2FzZSgpID09ICJkb2pvIikK
ICAgICAgICAgICAgewogICAgICAgICAgICAgIHJldHVybiAiZG9qbzoiK18xNDMuc3Vic3RyaW5n
KDQpLnRvTG93ZXJDYXNlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIHZhciBkanQgPSBub2Rl
LmdldEF0dHJpYnV0ZSgiZG9qb1R5cGUiKSB8fCBub2RlLmdldEF0dHJpYnV0ZSgiZG9qb3R5cGUi
KTsKICAgICAgICAgIGlmIChkanQpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICByZXR1cm4g
ImRvam86IitkanQudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgfQogICAgICAgICAgaWYgKG5v
ZGUuZ2V0QXR0cmlidXRlTlMgJiYgbm9kZS5nZXRBdHRyaWJ1dGVOUyhkb2pvLmRvbS5kb2pvbWws
ICJ0eXBlIikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICByZXR1cm4gImRvam86Iitub2Rl
LmdldEF0dHJpYnV0ZU5TKGRvam8uZG9tLmRvam9tbCwgInR5cGUiKS50b0xvd2VyQ2FzZSgpOwog
ICAgICAgICAgICB9dHJ5IAogICAgICAgICAgewogICAgICAgICAgICBkanQgPSBub2RlLmdldEF0
dHJpYnV0ZSgiZG9qbzp0eXBlIik7CiAgICAgICAgICB9CiAgICAgICAgICBjYXRjaCAoZSkKICAg
ICAgICAgIHsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChkanQpCiAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICByZXR1cm4gImRvam86IitkanQudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAg
fQogICAgICAgICAgaWYgKCFkal9nbG9iYWxbImRqQ29uZmlnIl0gfHwgIWRqQ29uZmlnWyJpZ25v
cmVDbGFzc05hbWVzIl0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICB2YXIgXzE0NSA9IG5v
ZGUuY2xhc3NOYW1lIHx8IG5vZGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpOwogICAgICAgICAgICAg
IGlmIChfMTQ1ICYmIF8xNDUuaW5kZXhPZiAmJiBfMTQ1LmluZGV4T2YoImRvam8tIikgIT0gLTEp
CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHZhciBfMTQ2ID0gXzE0NS5zcGxp
dCgiICIpOwogICAgICAgICAgICAgICAgICBmb3IgKHggPSAwOyB4IDwgXzE0Ni5sZW5ndGg7IHgr
KykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBpZiAoXzE0Nlt4
XS5sZW5ndGggPiA1ICYmIF8xNDZbeF0uaW5kZXhPZigiZG9qby0iKSA+PSAwKQogICAgICAgICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJkb2pvOiIr
XzE0Nlt4XS5zdWJzdHIoNSkudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgICAgcmV0dXJuIF8xNDMudG9Mb3dlckNhc2UoKTsKICAgIH0KICAgIHRoaXMu
cGFyc2VFbGVtZW50ID0gZnVuY3Rpb24gKG5vZGUsIF8xNDksIF8xNGEsIF8xNGIpCiAgICB7CiAg
ICAgIGlmIChub2RlLmdldEF0dHJpYnV0ZSgicGFyc2VXaWRnZXRzIikgPT0gImZhbHNlIikKICAg
ICAgICB7CiAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgIH0KICAgICAgdmFyIF8xNGMgPSB7
IH07CiAgICAgIHZhciBfMTRkID0gZ2V0RG9qb1RhZ05hbWUobm9kZSk7CiAgICAgIF8xNGNbXzE0
ZF0gPSBbXTsKICAgICAgaWYgKCghXzE0YSkgfHwgKF8xNGQuc3Vic3RyKDAsIDQpLnRvTG93ZXJD
YXNlKCkgPT0gImRvam8iKSkKICAgICAgICB7CiAgICAgICAgICB2YXIgXzE0ZSA9IHsgZG9qb1R5
cGU6IHsgdmFsdWU6ICJEZW1vTmF2aWdhdG9yIn0gfTsKICAgICAgICAgIGZvciAodmFyIGF0dHIg
aW4gXzE0ZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmICgoIV8xNGNbXzE0ZF1bYXR0
cl0pIHx8ICh0eXBlb2YgXzE0Y1tfMTRkXVthdHRyXSAhPSAiYXJyYXkiKSkKICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgXzE0Y1tfMTRkXVthdHRyXSA9IFtdOwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgIF8xNGNbXzE0ZF1bYXR0cl0ucHVzaChfMTRlW2F0dHJdKTsK
ICAgICAgICAgICAgfQogICAgICAgICAgXzE0Y1tfMTRkXS5ub2RlUmVmID0gbm9kZTsKICAgICAg
ICAgIF8xNGMudGFnTmFtZSA9IF8xNGQ7CiAgICAgICAgICBfMTRjLmluZGV4ID0gXzE0YiB8fCAw
OwogICAgICAgIH0KICAgICAgdmFyIF8xNTAgPSAwOwogICAgICB2YXIgdGNuLCBpID0gMCwgbm9k
ZXMgPSBub2RlLmNoaWxkTm9kZXM7CiAgICAgIHdoaWxlICh0Y24gPSBub2Rlc1tpKytdKQogICAg
ICAgIHsKICAgICAgICAgIHN3aXRjaCAodGNuLm5vZGVUeXBlKSB7CiAgICAgICAgICAgIGNhc2Ug
ZG9qby5kb20uRUxFTUVOVF9OT0RFOgogICAgICAgICAgICAgIF8xNTArKzsKICAgICAgICAgICAg
ICB2YXIgY3RuID0gZ2V0RG9qb1RhZ05hbWUodGNuKTsKICAgICAgICAgICAgICBpZiAoIV8xNGNb
Y3RuXSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgXzE0Y1tjdG5dID0gW107
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgXzE0Y1tjdG5dLnB1c2godGhpcy5wYXJz
ZUVsZW1lbnQodGNuLCB0cnVlLCBfMTRhLCBfMTUwKSk7CiAgICAgICAgICAgICAgaWYgKCh0Y24u
Y2hpbGROb2Rlcy5sZW5ndGggPT0gMSkgJiYgKHRjbi5jaGlsZE5vZGVzLml0ZW0oMCkubm9kZVR5
cGUgPT0gZG9qby5kb20uVEVYVF9OT0RFKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgXzE0Y1tjdG5dW18xNGNbY3RuXS5sZW5ndGgtMV0udmFsdWUgPSB0Y24uY2hpbGROb2Rl
cy5pdGVtKDApLm5vZGVWYWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgY2FzZSBkb2pvLmRvbS5URVhUX05PREU6CiAgICAgICAgICAgICAgaWYg
KG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPT0gMSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgXzE0Y1tfMTRkXS5wdXNoKHsgInZhbHVlIjogbm9kZS5jaGlsZE5vZGVzLml0ZW0o
MCkubm9kZVZhbHVlIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAg
ICAgIH0KICAgICAgcmV0dXJuIF8xNGM7CiAgICB9OwogIH07CiAgZG9qby5sYW5nLmhpdGNoID0g
ZnVuY3Rpb24gKF8xNTgsIF8xNTkpCiAgewogICAgaWYgKGRvam8ubGFuZy5pc1N0cmluZyhfMTU5
KSkKICAgICAgewogICAgICAgIHZhciBmY24gPSBfMTU4W18xNTldOwogICAgICB9CiAgICBlbHNl
CiAgICAgIHsKICAgICAgICB2YXIgZmNuID0gXzE1OTsKICAgICAgfQogICAgcmV0dXJuIGZ1bmN0
aW9uICgpCiAgICB7CiAgICAgIHJldHVybiBmY24uYXBwbHkoXzE1OCwgYXJndW1lbnRzKTsKICAg
IH07CiAgfTsKICBkb2pvLmxhbmcuYW5vbkN0ciA9IDA7CiAgZG9qby5sYW5nLmFub24gPSB7IH07
CiAgZG9qby5sYW5nLm5hbWVBbm9uRnVuYyA9IGZ1bmN0aW9uIChfMTViLCBfMTVjKQogIHsKICAg
IHZhciBuc28gPSAoXzE1YyB8fCBkb2pvLmxhbmcuYW5vbik7CiAgICBpZiAoKGRqX2dsb2JhbFsi
ZGpDb25maWciXSkgJiYgKGRqQ29uZmlnWyJzbG93QW5vbkZ1bmNMb29rdXBzIl0gPT0gdHJ1ZSkp
CiAgICAgIHsKICAgICAgICBmb3IgKHZhciB4IGluIG5zbykKICAgICAgICAgIHsKICAgICAgICAg
ICAgaWYgKG5zb1t4XSA9PT0gXzE1YikKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBy
ZXR1cm4geDsKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgIHZhciByZXQg
PSAiX18iK2Rvam8ubGFuZy5hbm9uQ3RyKys7CiAgICB3aGlsZSAodHlwZW9mIG5zb1tyZXRdICE9
ICJ1bmRlZmluZWQiKQogICAgICB7CiAgICAgICAgcmV0ID0gIl9fIitkb2pvLmxhbmcuYW5vbkN0
cisrOwogICAgICB9CiAgICBuc29bcmV0XSA9IF8xNWI7CiAgICByZXR1cm4gcmV0OwogIH07CiAg
ZG9qby5sYW5nLmdldE5hbWVJbk9iaiA9IGZ1bmN0aW9uIChucywgaXRlbSkKICB7CiAgICBpZiAo
IW5zKQogICAgICB7CiAgICAgICAgbnMgPSBkal9nbG9iYWw7CiAgICAgIH0KICAgIGZvciAodmFy
IHggaW4gbnMpCiAgICAgIHsKICAgICAgICBpZiAobnNbeF0gPT09IGl0ZW0pCiAgICAgICAgICB7
CiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKHgpOwogICAgICAgICAgfQogICAgICB9CiAg
ICByZXR1cm4gbnVsbDsKICB9OwogIGRvam8ubGFuZy5zZXRPYmpQYXRoVmFsdWUgPSBmdW5jdGlv
biAoXzE4NywgXzE4OCwgXzE4OSwgXzE4YSkKICB7CiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8
IDQpCiAgICAgIHsKICAgICAgICBfMThhID0gdHJ1ZTsKICAgICAgfQogICAgd2l0aCAoZG9qby5w
YXJzZU9ialBhdGgoXzE4NywgXzE4OSwgXzE4YSkpIAogICAgewogICAgICBpZiAob2JqICYmIChf
MThhIHx8IChwcm9wIGluIG9iaikpKQogICAgICAgIHsKICAgICAgICAgIG9ialtwcm9wXSA9IF8x
ODg7CiAgICAgICAgfQogICAgfQogIH07CiAgZG9qby5sYW5nLmRlY2xhcmUgPSBmdW5jdGlvbiAo
XzE4YiwgXzE4YywgXzE4ZCwgaW5pdCkKICB7CiAgICB2YXIgY3RvciA9IGZ1bmN0aW9uICgpCiAg
ICB7CiAgICAgIHZhciBzZWxmID0gdGhpcy5fZ2V0UHJvcENvbnRleHQoKTsKICAgICAgdmFyIHMg
PSBzZWxmLmNvbnN0cnVjdG9yLnN1cGVyY2xhc3M7CiAgICAgIGlmIChzICYmIChzLmNvbnN0cnVj
dG9yKSkKICAgICAgICB7CiAgICAgICAgICBpZiAocy5jb25zdHJ1Y3RvciA9PSBhcmd1bWVudHMu
Y2FsbGVlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgdGhpcy5pbmhlcml0ZWQoImNvbnN0
cnVjdG9yIiwgYXJndW1lbnRzKTsKICAgICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgdGhpcy5faW5oZXJpdGVkKHMsICJjb25zdHJ1Y3RvciIsIGFy
Z3VtZW50cyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIGlmICgoIXRoaXMucHJvdG90
eXBpbmcpICYmIChzZWxmLmluaXRpYWxpemVyKSkKICAgICAgICB7CiAgICAgICAgICBzZWxmLmlu
aXRpYWxpemVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgfQogICAgfTsKICAgIHZh
ciBzY3AgPSAoXzE4YyA/IF8xOGMucHJvdG90eXBlIDogbnVsbCk7CiAgICBpZiAoc2NwKQogICAg
ICB7CiAgICAgICAgc2NwLnByb3RvdHlwaW5nID0gdHJ1ZTsKICAgICAgICBjdG9yLnByb3RvdHlw
ZSA9IG5ldyBfMThjKCk7CiAgICAgICAgc2NwLnByb3RvdHlwaW5nID0gZmFsc2U7CiAgICAgIH0K
ICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvcjsKICAgIGN0b3Iuc3VwZXJjbGFz
cyA9IHNjcDsKICAgIGRvam8ubGFuZy5leHRlbmQoY3RvciwgZG9qby5sYW5nLmRlY2xhcmUuYmFz
ZSk7CiAgICBfMThkID0gKF8xOGQgfHwgeyB9KTsKICAgIF8xOGQuaW5pdGlhbGl6ZXIgPSAoXzE4
ZC5pbml0aWFsaXplcikgfHwgaW5pdCB8fCAoZnVuY3Rpb24gKCkKICAgIHsKICAgIH0pOwogICAg
XzE4ZC5jbGFzc05hbWUgPSBfMThiOwogICAgZG9qby5sYW5nLmV4dGVuZChjdG9yLCBfMThkKTsK
ICAgIGRvam8ubGFuZy5zZXRPYmpQYXRoVmFsdWUoXzE4YiwgY3RvciwgbnVsbCwgdHJ1ZSk7CiAg
fTsKICBkb2pvLmxhbmcuZGVjbGFyZS5iYXNlID0geyAiX2dldFByb3BDb250ZXh0IjogZnVuY3Rp
b24gKCkKICB7CiAgICByZXR1cm4gKHRoaXMuX19fcHJvdG8gfHwgdGhpcyk7CiAgfSwgIl9pbmhl
cml0ZWQiOiBmdW5jdGlvbiAoXzE5MywgXzE5NCwgYXJncykKICB7CiAgICB2YXIgXzE5NiA9IHRo
aXMuX19fcHJvdG87CiAgICB0aGlzLl9fX3Byb3RvID0gXzE5MzsKICAgIHZhciBfMTk3ID0gXzE5
M1tfMTk0XS5hcHBseSh0aGlzLCAoYXJncyB8fCBbXSkpOwogICAgdGhpcy5fX19wcm90byA9IF8x
OTY7CiAgICByZXR1cm4gXzE5NzsKICB9LCAiaW5oZXJpdGVkIjogZnVuY3Rpb24gKHByb3AsIGFy
Z3MpCiAgewogICAgdmFyIHAgPSB0aGlzLl9nZXRQcm9wQ29udGV4dCgpOwogICAgZG8gCiAgICAg
IHsKICAgICAgICBpZiAoKCFwLmNvbnN0cnVjdG9yKSB8fCAoIXAuY29uc3RydWN0b3Iuc3VwZXJj
bGFzcykpCiAgICAgICAgICB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KICAgICAg
ICBwID0gcC5jb25zdHJ1Y3Rvci5zdXBlcmNsYXNzOwogICAgICB9CiAgICB3aGlsZSAoIShwcm9w
IGluIHApKTsKICAgIDsKICAgIHJldHVybiAodHlwZW9mIHBbcHJvcF0gPT0gImZ1bmN0aW9uIiA/
IHRoaXMuX2luaGVyaXRlZChwLCBwcm9wLCBhcmdzKSA6IHBbcHJvcF0pOwogIH0gfTsKICBkb2pv
LmRlY2xhcmUgPSBkb2pvLmxhbmcuZGVjbGFyZTsKICBkb2pvLmV2ZW50ID0gbmV3IGZ1bmN0aW9u
ICgpCiAgewogICAgdGhpcy5jYW5UaW1lb3V0ID0gZG9qby5sYW5nLmlzRnVuY3Rpb24oZGpfZ2xv
YmFsWyJzZXRUaW1lb3V0Il0pIHx8IGRvam8ubGFuZy5pc0FsaWVuKGRqX2dsb2JhbFsic2V0VGlt
ZW91dCJdKTsKICAgIGZ1bmN0aW9uIGludGVycG9sYXRlQXJncyhhcmdzKQogICAgewogICAgICB2
YXIgZGwgPSBkb2pvLmxhbmc7CiAgICAgIHZhciBhbyA9IHsgInNyY09iaiI6IGRqX2dsb2JhbCwg
InNyY0Z1bmMiOiBudWxsLCAiYWR2aWNlT2JqIjogZGpfZ2xvYmFsLCAiYWR2aWNlRnVuYyI6IG51
bGwsICJhcm91bmRPYmoiOiBudWxsLCAiYXJvdW5kRnVuYyI6IG51bGwsICJhZHZpY2VUeXBlIjog
KGFyZ3MubGVuZ3RoID4gMikgPyBhcmdzWzBdIDogImFmdGVyIiwgInByZWNlZGVuY2UiOiAibGFz
dCIsICJvbmNlIjogZmFsc2UsICJkZWxheSI6IG51bGwsICJyYXRlIjogMCwgImFkdmljZU1zZyI6
IGZhbHNlIH07CiAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHsKICAgICAgICBjYXNlIDA6CiAg
ICAgICAgICByZXR1cm47CiAgICAgICAgY2FzZSAxOgogICAgICAgICAgcmV0dXJuOwogICAgICAg
IGNhc2UgMzoKICAgICAgICAgICAgICAgICAgICAgIGFvLmFkdmljZVR5cGUgPSAiYWZ0ZXIiOwog
ICAgICAgICAgICAgICAgICAgICAgYW8uc3JjT2JqID0gYXJnc1swXTsKICAgICAgICAgICAgICAg
ICAgICAgIGFvLnNyY0Z1bmMgPSBhcmdzWzFdOwogICAgICAgICAgICAgICAgICAgICAgdmFyIF8x
OWUgPSBkb2pvLmxhbmcubmFtZUFub25GdW5jKGFyZ3NbMl0sIGFvLmFkdmljZU9iaik7CiAgICAg
ICAgICAgICAgICAgICAgICBhby5hZHZpY2VGdW5jID0gXzE5ZTsKICAgICAgICAgIGJyZWFrOwog
ICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICBhby5hZHZpY2VUeXBlID0gImFmdGVyIjsKICAg
ICAgICAgICAgICBhby5zcmNPYmogPSBhcmdzWzBdOwogICAgICAgICAgICAgIGFvLnNyY0Z1bmMg
PSBhcmdzWzFdOwogICAgICAgICAgICAgIGFvLmFkdmljZU9iaiA9IGFyZ3NbMl07CiAgICAgICAg
ICAgICAgYW8uYWR2aWNlRnVuYyA9IGFyZ3NbM107CiAgICAgICAgICBicmVhazsKICAgICAgfQog
ICAgICBpZiAoZGwuaXNGdW5jdGlvbihhby5hcm91bmRGdW5jKSkKICAgICAgICB7CiAgICAgICAg
ICB2YXIgXzE5ZSA9IGRvam8ubGFuZy5uYW1lQW5vbkZ1bmMoYW8uYXJvdW5kRnVuYywgYW8uYXJv
dW5kT2JqKTsKICAgICAgICAgIGFvLmFyb3VuZEZ1bmMgPSBfMTllOwogICAgICAgIH0KICAgICAg
aWYgKCFkbC5pc1N0cmluZyhhby5zcmNGdW5jKSkKICAgICAgICB7CiAgICAgICAgICBhby5zcmNG
dW5jID0gZG9qby5sYW5nLmdldE5hbWVJbk9iaihhby5zcmNPYmosIGFvLnNyY0Z1bmMpOwogICAg
ICAgIH0KICAgICAgaWYgKCFkbC5pc1N0cmluZyhhby5hZHZpY2VGdW5jKSkKICAgICAgICB7CiAg
ICAgICAgICBhby5hZHZpY2VGdW5jID0gZG9qby5sYW5nLmdldE5hbWVJbk9iaihhby5hZHZpY2VP
YmosIGFvLmFkdmljZUZ1bmMpOwogICAgICAgIH0KICAgICAgaWYgKChhby5hcm91bmRPYmopICYm
ICghZGwuaXNTdHJpbmcoYW8uYXJvdW5kRnVuYykpKQogICAgICAgIHsKICAgICAgICAgIGFvLmFy
b3VuZEZ1bmMgPSBkb2pvLmxhbmcuZ2V0TmFtZUluT2JqKGFvLmFyb3VuZE9iaiwgYW8uYXJvdW5k
RnVuYyk7CiAgICAgICAgfQogICAgICByZXR1cm4gYW87CiAgICB9CiAgICB0aGlzLmNvbm5lY3Qg
PSBmdW5jdGlvbiAoKQogICAgewogICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKQogICAg
ICAgIHsKICAgICAgICAgIHZhciBhbyA9IGFyZ3VtZW50c1swXTsKICAgICAgICB9CiAgICAgIGVs
c2UKICAgICAgICB7CiAgICAgICAgICB2YXIgYW8gPSBpbnRlcnBvbGF0ZUFyZ3MoYXJndW1lbnRz
KTsKICAgICAgICB9CiAgICAgIGlmIChkb2pvLmxhbmcuaXNBcnJheShhby5zcmNPYmopICYmIGFv
LnNyY09iaiAhPSAiIikKICAgICAgICB7CiAgICAgICAgICB2YXIgXzFhMCA9IHsgfTsKICAgICAg
ICAgIGZvciAodmFyIHggaW4gYW8pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBfMWEwW3hd
ID0gYW9beF07CiAgICAgICAgICAgIH0KICAgICAgICAgIHZhciBtanBzID0gW107CiAgICAgICAg
ICBkb2pvLmxhbmcuZm9yRWFjaChhby5zcmNPYmosIGZ1bmN0aW9uIChzcmMpCiAgICAgICAgICB7
CiAgICAgICAgICAgIGlmIChkb2pvLmxhbmcuaXNTdHJpbmcoc3JjKSkKICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICBzcmMgPSBkb2pvLmJ5SWQoc3JjKTsKICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgIF8xYTAuc3JjT2JqID0gc3JjOwogICAgICAgICAgICBtanBzLnB1c2goZG9qby5l
dmVudC5jb25uZWN0LmNhbGwoZG9qby5ldmVudCwgXzFhMCkpOwogICAgICAgICAgfSk7CiAgICAg
ICAgICByZXR1cm4gbWpwczsKICAgICAgICB9CiAgICAgIHZhciBtanAgPSBkb2pvLmV2ZW50Lk1l
dGhvZEpvaW5Qb2ludC5nZXRGb3JNZXRob2QoYW8uc3JjT2JqLCBhby5zcmNGdW5jKTsKICAgICAg
aWYgKGFvLmFkdmljZUZ1bmMpCiAgICAgICAgewogICAgICAgICAgdmFyIG1qcDIgPSBkb2pvLmV2
ZW50Lk1ldGhvZEpvaW5Qb2ludC5nZXRGb3JNZXRob2QoYW8uYWR2aWNlT2JqLCBhby5hZHZpY2VG
dW5jKTsKICAgICAgICB9CiAgICAgIG1qcC5rd0FkZEFkdmljZShhbyk7CiAgICAgIHJldHVybiBt
anA7CiAgICB9OwogICAgdGhpcy5sb2cgPSBmdW5jdGlvbiAoYTEsIGEyKQogICAgewogICAgICB2
YXIgXzFhODsKICAgICAgaWYgKChhcmd1bWVudHMubGVuZ3RoID09IDEpICYmICh0eXBlb2YgYTEg
PT0gIm9iamVjdCIpKQogICAgICAgIHsKICAgICAgICAgIF8xYTggPSBhMTsKICAgICAgICB9CiAg
ICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBfMWE4ID0geyAic3JjT2JqIjogYTEsICJzcmNG
dW5jIjogYTIgfTsKICAgICAgICB9CiAgICAgIF8xYTguYWR2aWNlRnVuYyA9IGZ1bmN0aW9uICgp
CiAgICAgIHsKICAgICAgICB2YXIgXzFhOSA9IFtdOwogICAgICAgIGZvciAoeCA9IDA7IHggPCBh
cmd1bWVudHMubGVuZ3RoOyB4KyspCiAgICAgICAgICB7CiAgICAgICAgICAgIF8xYTkucHVzaChh
cmd1bWVudHNbeF0pOwogICAgICAgICAgfQogICAgICB9OwogICAgICB0aGlzLmt3Q29ubmVjdChf
MWE4KTsKICAgIH07CiAgICB0aGlzLmNvbm5lY3RCZWZvcmUgPSBmdW5jdGlvbiAoKQogICAgewog
ICAgICB2YXIgYXJncyA9IFsiYmVmb3JlIl07CiAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyBpKyspCiAgICAgICAgewogICAgICAgICAgYXJncy5wdXNoKGFyZ3VtZW50c1tp
XSk7CiAgICAgICAgfQogICAgICByZXR1cm4gdGhpcy5jb25uZWN0LmFwcGx5KHRoaXMsIGFyZ3Mp
OwogICAgfTsKICAgIHRoaXMuY29ubmVjdEFyb3VuZCA9IGZ1bmN0aW9uICgpCiAgICB7CiAgICAg
IHZhciBhcmdzID0gWyJhcm91bmQiXTsKICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ3VtZW50cy5s
ZW5ndGg7IGkrKykKICAgICAgICB7CiAgICAgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTsK
ICAgICAgICB9CiAgICAgIHJldHVybiB0aGlzLmNvbm5lY3QuYXBwbHkodGhpcywgYXJncyk7CiAg
ICB9OwogICAgdGhpcy5jb25uZWN0T25jZSA9IGZ1bmN0aW9uICgpCiAgICB7CiAgICAgIHZhciBh
byA9IGludGVycG9sYXRlQXJncyhhcmd1bWVudHMpOwogICAgICBhby5vbmNlID0gdHJ1ZTsKICAg
ICAgcmV0dXJuIHRoaXMuY29ubmVjdChhbyk7CiAgICB9OwogICAgdGhpcy5fa3dDb25uZWN0SW1w
bCA9IGZ1bmN0aW9uIChfMWIwLCBfMWIxKQogICAgewogICAgICB2YXIgZm4gPSBfMWIxID8gImRp
c2Nvbm5lY3QiIDogImNvbm5lY3QiOwogICAgICBpZiAodHlwZW9mIF8xYjBbInNyY0Z1bmMiXSA9
PSAiZnVuY3Rpb24iKQogICAgICAgIHsKICAgICAgICAgIF8xYjAuc3JjT2JqID0gXzFiMFsic3Jj
T2JqIl0gfHwgZGpfZ2xvYmFsOwogICAgICAgICAgdmFyIF8xYjMgPSBkb2pvLmxhbmcubmFtZUFu
b25GdW5jKF8xYjAuc3JjRnVuYywgXzFiMC5zcmNPYmopOwogICAgICAgICAgXzFiMC5zcmNGdW5j
ID0gXzFiMzsKICAgICAgICB9CiAgICAgIGlmICh0eXBlb2YgXzFiMFsiYWR2aWNlRnVuYyJdID09
ICJmdW5jdGlvbiIpCiAgICAgICAgewogICAgICAgICAgXzFiMC5hZHZpY2VPYmogPSBfMWIwWyJh
ZHZpY2VPYmoiXSB8fCBkal9nbG9iYWw7CiAgICAgICAgICB2YXIgXzFiMyA9IGRvam8ubGFuZy5u
YW1lQW5vbkZ1bmMoXzFiMC5hZHZpY2VGdW5jLCBfMWIwLmFkdmljZU9iaik7CiAgICAgICAgICBf
MWIwLmFkdmljZUZ1bmMgPSBfMWIzOwogICAgICAgIH0KICAgICAgcmV0dXJuIGRvam8uZXZlbnRb
Zm5dKChfMWIwWyJ0eXBlIl0gfHwgXzFiMFsiYWR2aWNlVHlwZSJdIHx8ICJhZnRlciIpLCBfMWIw
WyJzcmNPYmoiXSB8fCBkal9nbG9iYWwsIF8xYjBbInNyY0Z1bmMiXSwgXzFiMFsiYWR2aWNlT2Jq
Il0gfHwgXzFiMFsidGFyZ2V0T2JqIl0gfHwgZGpfZ2xvYmFsLCBfMWIwWyJhZHZpY2VGdW5jIl0g
fHwgXzFiMFsidGFyZ2V0RnVuYyJdLCBfMWIwWyJhcm91bmRPYmoiXSwgXzFiMFsiYXJvdW5kRnVu
YyJdLCBfMWIwWyJvbmNlIl0sIF8xYjBbImRlbGF5Il0sIF8xYjBbInJhdGUiXSwgXzFiMFsiYWR2
aWNlTXNnIl0gfHwgZmFsc2UpOwogICAgfTsKICAgIHRoaXMua3dDb25uZWN0ID0gZnVuY3Rpb24g
KF8xYjQpCiAgICB7CiAgICAgIHJldHVybiB0aGlzLl9rd0Nvbm5lY3RJbXBsKF8xYjQsIGZhbHNl
KTsKICAgIH07CiAgfTsKICBkb2pvLmV2ZW50Lk1ldGhvZEludm9jYXRpb24gPSBmdW5jdGlvbiAo
XzFiOCwgb2JqLCBhcmdzKQogIHsKICAgIHRoaXMuanBfID0gXzFiODsKICAgIHRoaXMub2JqZWN0
ID0gb2JqOwogICAgdGhpcy5hcmdzID0gW107CiAgICBmb3IgKHggPSAwOyB4IDwgYXJncy5sZW5n
dGg7IHgrKykKICAgICAgewogICAgICAgIHRoaXMuYXJnc1t4XSA9IGFyZ3NbeF07CiAgICAgIH0K
ICAgIHRoaXMuYXJvdW5kX2luZGV4ID0gLTE7CiAgfTsKICBkb2pvLmV2ZW50Lk1ldGhvZEludm9j
YXRpb24ucHJvdG90eXBlLnByb2NlZWQgPSBmdW5jdGlvbiAoKQogIHsKICAgIHRoaXMuYXJvdW5k
X2luZGV4Kys7CiAgICBpZiAodGhpcy5hcm91bmRfaW5kZXggPj0gdGhpcy5qcF8uYXJvdW5kLmxl
bmd0aCkKICAgICAgewogICAgICAgIHJldHVybiB0aGlzLmpwXy5vYmplY3RbdGhpcy5qcF8ubWV0
aG9kbmFtZV0uYXBwbHkodGhpcy5qcF8ub2JqZWN0LCB0aGlzLmFyZ3MpOwogICAgICB9CiAgICBl
bHNlCiAgICAgIHsKICAgICAgICB2YXIgdGkgPSB0aGlzLmpwXy5hcm91bmRbdGhpcy5hcm91bmRf
aW5kZXhdOwogICAgICAgIHZhciBtb2JqID0gdGlbMF0gfHwgZGpfZ2xvYmFsOwogICAgICAgIHZh
ciBtZXRoID0gdGlbMV07CiAgICAgICAgcmV0dXJuIG1vYmpbbWV0aF0uY2FsbChtb2JqLCB0aGlz
KTsKICAgICAgfQogIH07CiAgZG9qby5ldmVudC5NZXRob2RKb2luUG9pbnQgPSBmdW5jdGlvbiAo
b2JqLCBfMWMwKQogIHsKICAgIHRoaXMub2JqZWN0ID0gb2JqIHx8IGRqX2dsb2JhbDsKICAgIHRo
aXMubWV0aG9kbmFtZSA9IF8xYzA7CiAgICB0aGlzLm1ldGhvZGZ1bmMgPSB0aGlzLm9iamVjdFtf
MWMwXTsKICAgIHRoaXMuYmVmb3JlID0gW107CiAgICB0aGlzLmFmdGVyID0gW107CiAgICB0aGlz
LmFyb3VuZCA9IFtdOwogIH07CiAgZG9qby5ldmVudC5NZXRob2RKb2luUG9pbnQuZ2V0Rm9yTWV0
aG9kID0gZnVuY3Rpb24gKG9iaiwgXzFjMikKICB7CiAgICBpZiAoIW9iaikKICAgICAgewogICAg
ICAgIG9iaiA9IGRqX2dsb2JhbDsKICAgICAgfQogICAgaWYgKCFvYmpbXzFjMl0pCiAgICAgIHsK
ICAgICAgICBvYmpbXzFjMl0gPSBmdW5jdGlvbiAoKQogICAgICAgIHsKICAgICAgICB9OwogICAg
ICB9CiAgICBlbHNlCiAgICAgIHsKICAgICAgICBpZiAoKCFkb2pvLmxhbmcuaXNGdW5jdGlvbihv
YmpbXzFjMl0pKSAmJiAoIWRvam8ubGFuZy5pc0FsaWVuKG9ialtfMWMyXSkpKQogICAgICAgICAg
ewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgIH0KICAgICAgfQogICAgdmFyIF8x
YzMgPSBfMWMyKyIkam9pbnBvaW50IjsKICAgIHZhciBfMWM0ID0gXzFjMisiJGpvaW5wb2ludCRt
ZXRob2QiOwogICAgdmFyIF8xYzUgPSBvYmpbXzFjM107CiAgICBpZiAoIV8xYzUpCiAgICAgIHsK
ICAgICAgICB2YXIgXzFjNiA9IGZhbHNlOwogICAgICAgIGlmIChkb2pvLmV2ZW50WyJicm93c2Vy
Il0pCiAgICAgICAgICB7CiAgICAgICAgICAgIGlmICgob2JqWyJhdHRhY2hFdmVudCJdKSB8fCAo
b2JqWyJub2RlVHlwZSJdKSB8fCAob2JqWyJhZGRFdmVudExpc3RlbmVyIl0pKQogICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgIF8xYzYgPSB0cnVlOwogICAgICAgICAgICAgICAgZG9qby5l
dmVudC5icm93c2VyLmFkZENsb2JiZXJOb2RlQXR0cnMob2JqLCBbXzFjMyxfMWM0LF8xYzJdKTsK
ICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgdmFyIF8xYzcgPSBvYmpbXzFjMl0u
bGVuZ3RoOwogICAgICAgIG9ialtfMWM0XSA9IG9ialtfMWMyXTsKICAgICAgICBfMWM1ID0gb2Jq
W18xYzNdID0gbmV3IGRvam8uZXZlbnQuTWV0aG9kSm9pblBvaW50KG9iaiwgXzFjNCk7CiAgICAg
ICAgb2JqW18xYzJdID0gZnVuY3Rpb24gKCkKICAgICAgICB7CiAgICAgICAgICB2YXIgYXJncyA9
IFtdOwogICAgICAgICAgaWYgKF8xYzYgJiYgKCFhcmd1bWVudHMubGVuZ3RoKSkKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIHZhciBldnQgPSBudWxsO3RyeSAKICAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICBpZiAob2JqLm93bmVyRG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICBldnQgPSBvYmoub3duZXJEb2N1bWVudC5wYXJlbnRXaW5kb3cu
ZXZlbnQ7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGlmIChvYmouZG9jdW1lbnRFbGVtZW50KQog
ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBldnQgPSBvYmou
ZG9jdW1lbnRFbGVtZW50Lm93bmVyRG9jdW1lbnQucGFyZW50V2luZG93LmV2ZW50OwogICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXZ0ID0gd2luZG93LmV2ZW50OwogICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgIGNhdGNoIChlKQogICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGV2
dCA9IHdpbmRvdy5ldmVudDsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKGV2dCkK
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGRvam8uZXZlbnQu
YnJvd3Nlci5maXhFdmVudChldnQsIHRoaXMpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgZm9yICh4ID0g
MDsgeCA8IGFyZ3VtZW50cy5sZW5ndGg7IHgrKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgaWYgKCh4ID09IDApICYmIF8xYzYgJiYgKGRvam8uZXZlbnQuYnJvd3Nlci5pc0V2
ZW50KGFyZ3VtZW50c1t4XSkpKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgIGFyZ3MucHVzaChkb2pvLmV2ZW50LmJyb3dzZXIuZml4RXZlbnQoYXJndW1lbnRzW3hd
LCB0aGlzKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGFyZ3Vt
ZW50c1t4XSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgICByZXR1cm4gXzFjNS5ydW4uYXBwbHkoXzFjNSwgYXJncyk7CiAgICAg
ICAgfTsKICAgICAgICBvYmpbXzFjMl0uX19wcmVKb2luQXJpdHkgPSBfMWM3OwogICAgICB9CiAg
ICByZXR1cm4gXzFjNTsKICB9OwogIGRvam8ubGFuZy5leHRlbmQoZG9qby5ldmVudC5NZXRob2RK
b2luUG9pbnQsIHsgInVuaW50ZXJjZXB0IjogZnVuY3Rpb24gKCkKICB7CiAgICB0aGlzLm9iamVj
dFt0aGlzLm1ldGhvZG5hbWVdID0gdGhpcy5tZXRob2RmdW5jOwogICAgdGhpcy5iZWZvcmUgPSBb
XTsKICAgIHRoaXMuYWZ0ZXIgPSBbXTsKICAgIHRoaXMuYXJvdW5kID0gW107CiAgfSwgInJ1biI6
IGZ1bmN0aW9uICgpCiAgewogICAgdmFyIG9iaiA9IHRoaXMub2JqZWN0IHx8IGRqX2dsb2JhbDsK
ICAgIHZhciBhcmdzID0gYXJndW1lbnRzOwogICAgdmFyIF8xY2QgPSBbXTsKICAgIGZvciAoeCA9
IDA7IHggPCBhcmdzLmxlbmd0aDsgeCsrKQogICAgICB7CiAgICAgICAgXzFjZFt4XSA9IGFyZ3Nb
eF07CiAgICAgIH0KICAgIHZhciBfMWNmID0gZnVuY3Rpb24gKG1hcnIpCiAgICB7CiAgICAgIGlm
ICghbWFycikKICAgICAgICB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICB2YXIg
XzFkMSA9IG1hcnJbMF0gfHwgZGpfZ2xvYmFsOwogICAgICB2YXIgXzFkMiA9IG1hcnJbMV07CiAg
ICAgIHZhciBfMWQzID0gbWFyclsyXSB8fCBkal9nbG9iYWw7CiAgICAgIHZhciBfMWQ0ID0gbWFy
clszXTsKICAgICAgdmFyIG1zZyA9IG1hcnJbNl07CiAgICAgIHZhciBfMWQ2OwogICAgICB2YXIg
dG8gPSB7ICJhcmdzIjogW10sICJqcF8iOiB0aGlzLCAib2JqZWN0Ijogb2JqLCAicHJvY2VlZCI6
IGZ1bmN0aW9uICgpCiAgICAgIHsKICAgICAgICByZXR1cm4gXzFkMVtfMWQyXS5hcHBseShfMWQx
LCB0by5hcmdzKTsKICAgICAgfSB9OwogICAgICB0by5hcmdzID0gXzFjZDsKICAgICAgdmFyIF8x
ZDggPSBwYXJzZUludChtYXJyWzRdKTsKICAgICAgdmFyIF8xZDkgPSAoKCFpc05hTihfMWQ4KSkg
JiYgKG1hcnJbNF0gIT09IG51bGwpICYmICh0eXBlb2YgbWFycls0XSAhPSAidW5kZWZpbmVkIikp
OwogICAgICBpZiAobWFycls1XSkKICAgICAgICB7CiAgICAgICAgICB2YXIgcmF0ZSA9IHBhcnNl
SW50KG1hcnJbNV0pOwogICAgICAgICAgdmFyIGN1ciA9IG5ldyBEYXRlKCk7CiAgICAgICAgICB2
YXIgXzFkYyA9IGZhbHNlOwogICAgICAgICAgaWYgKChtYXJyWyJsYXN0Il0pICYmICgoY3VyLW1h
cnIubGFzdCkgPD0gcmF0ZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAoZG9qby5l
dmVudC5jYW5UaW1lb3V0KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBpZiAo
bWFyclsiZGVsYXlUaW1lciJdKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgIGNsZWFyVGltZW91dChtYXJyLmRlbGF5VGltZXIpOwogICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgdmFyIHRvZCA9IHBhcnNlSW50KHJhdGUqMik7CiAgICAgICAg
ICAgICAgICAgIHZhciBtY3B5ID0gbWFycjsKICAgICAgICAgICAgICAgICAgbWFyci5kZWxheVRp
bWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKQogICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgbWNweVs1XSA9IDA7CiAgICAgICAgICAgICAgICAgICAgXzFjZihtY3B5KTsK
ICAgICAgICAgICAgICAgICAgfSwgdG9kKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAg
ICAgICAgICAgIG1hcnIubGFzdCA9IGN1cjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAg
aWYgKF8xZDQpCiAgICAgICAgewogICAgICAgICAgXzFkM1tfMWQ0XS5jYWxsKF8xZDMsIHRvKTsK
ICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBpZiAoXzFkOSkKICAgICAg
ICAgICAgewogICAgICAgICAgICAgIGRqX2dsb2JhbFsic2V0VGltZW91dCJdKGZ1bmN0aW9uICgp
CiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKG1zZykKICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgIF8xZDFbXzFkMl0uY2FsbChfMWQxLCB0byk7CiAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgIF8xZDFbXzFkMl0uYXBwbHkoXzFkMSwgYXJncyk7CiAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICB9LCBfMWQ4KTsKICAgICAgICAgICAgfQogICAgICAg
ICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKG1zZykKICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgXzFkMVtfMWQyXS5jYWxsKF8xZDEsIHRvKTsKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgIF8xZDFbXzFkMl0uYXBwbHkoXzFkMSwgYXJncyk7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgaWYgKHRoaXMuYmVmb3JlLmxlbmd0
aCA+IDApCiAgICAgIHsKICAgICAgICBkb2pvLmxhbmcuZm9yRWFjaCh0aGlzLmJlZm9yZSwgXzFj
Zik7CiAgICAgIH0KICAgIHZhciBfMWRmOwogICAgaWYgKHRoaXMuYXJvdW5kLmxlbmd0aCA+IDAp
CiAgICAgIHsKICAgICAgICB2YXIgbWkgPSBuZXcgZG9qby5ldmVudC5NZXRob2RJbnZvY2F0aW9u
KHRoaXMsIG9iaiwgYXJncyk7CiAgICAgICAgXzFkZiA9IG1pLnByb2NlZWQoKTsKICAgICAgfQog
ICAgZWxzZQogICAgICB7CiAgICAgICAgaWYgKHRoaXMubWV0aG9kZnVuYykKICAgICAgICAgIHsK
ICAgICAgICAgICAgXzFkZiA9IHRoaXMub2JqZWN0W3RoaXMubWV0aG9kbmFtZV0uYXBwbHkodGhp
cy5vYmplY3QsIGFyZ3MpOwogICAgICAgICAgfQogICAgICB9CiAgICBpZiAodGhpcy5hZnRlci5s
ZW5ndGggPiAwKQogICAgICB7CiAgICAgICAgZG9qby5sYW5nLmZvckVhY2godGhpcy5hZnRlciwg
XzFjZik7CiAgICAgIH0KICAgIHJldHVybiAodGhpcy5tZXRob2RmdW5jKSA/IF8xZGYgOiBudWxs
OwogIH0sICJnZXRBcnIiOiBmdW5jdGlvbiAoa2luZCkKICB7CiAgICB2YXIgYXJyID0gdGhpcy5h
ZnRlcjsKICAgIGlmICgodHlwZW9mIGtpbmQgPT0gInN0cmluZyIpICYmIChraW5kLmluZGV4T2Yo
ImJlZm9yZSIpICE9IC0xKSkKICAgICAgewogICAgICAgIGFyciA9IHRoaXMuYmVmb3JlOwogICAg
ICB9CiAgICBlbHNlCiAgICAgIHsKICAgICAgICBpZiAoa2luZCA9PSAiYXJvdW5kIikKICAgICAg
ICAgIHsKICAgICAgICAgICAgYXJyID0gdGhpcy5hcm91bmQ7CiAgICAgICAgICB9CiAgICAgIH0K
ICAgIHJldHVybiBhcnI7CiAgfSwgImt3QWRkQWR2aWNlIjogZnVuY3Rpb24gKGFyZ3MpCiAgewog
ICAgdGhpcy5hZGRBZHZpY2UoYXJnc1siYWR2aWNlT2JqIl0sIGFyZ3NbImFkdmljZUZ1bmMiXSwg
YXJnc1siYXJvdW5kT2JqIl0sIGFyZ3NbImFyb3VuZEZ1bmMiXSwgYXJnc1siYWR2aWNlVHlwZSJd
LCBhcmdzWyJwcmVjZWRlbmNlIl0sIGFyZ3NbIm9uY2UiXSwgYXJnc1siZGVsYXkiXSwgYXJnc1si
cmF0ZSJdLCBhcmdzWyJhZHZpY2VNc2ciXSk7CiAgfSwgImFkZEFkdmljZSI6IGZ1bmN0aW9uIChf
MWU0LCBfMWU1LCBfMWU2LCBfMWU3LCBfMWU4LCBfMWU5LCBvbmNlLCBfMWViLCByYXRlLCBfMWVk
KQogIHsKICAgIHZhciBhcnIgPSB0aGlzLmdldEFycihfMWU4KTsKICAgIHZhciBhbyA9IFtfMWU0
LF8xZTUsXzFlNixfMWU3LF8xZWIscmF0ZSxfMWVkXTsKICAgIGlmIChvbmNlKQogICAgICB7CiAg
ICAgICAgaWYgKHRoaXMuaGFzQWR2aWNlKF8xZTQsIF8xZTUsIF8xZTgsIGFycikgPj0gMCkKICAg
ICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgfQogICAgICB9CiAgICBpZiAo
XzFlOSA9PSAiZmlyc3QiKQogICAgICB7CiAgICAgICAgYXJyLnVuc2hpZnQoYW8pOwogICAgICB9
CiAgICBlbHNlCiAgICAgIHsKICAgICAgICBhcnIucHVzaChhbyk7CiAgICAgIH0KICB9LCAiaGFz
QWR2aWNlIjogZnVuY3Rpb24gKF8xZjAsIF8xZjEsIF8xZjIsIGFycikKICB7CiAgICBpZiAoIWFy
cikKICAgICAgewogICAgICAgIGFyciA9IHRoaXMuZ2V0QXJyKF8xZjIpOwogICAgICB9CiAgICB2
YXIgaW5kID0gLTE7CiAgICBmb3IgKHggPSAwOyB4IDwgYXJyLmxlbmd0aDsgeCsrKQogICAgICB7
CiAgICAgICAgaWYgKChhcnJbeF1bMF0gPT0gXzFmMCkgJiYgKGFyclt4XVsxXSA9PSBfMWYxKSkK
ICAgICAgICAgIHsKICAgICAgICAgICAgaW5kID0geDsKICAgICAgICAgIH0KICAgICAgfQogICAg
cmV0dXJuIGluZDsKICB9LCAicmVtb3ZlQWR2aWNlIjogZnVuY3Rpb24gKF8xZjYsIF8xZjcsIF8x
ZjgsIG9uY2UpCiAgewogICAgdmFyIGFyciA9IHRoaXMuZ2V0QXJyKF8xZjgpOwogICAgdmFyIGlu
ZCA9IHRoaXMuaGFzQWR2aWNlKF8xZjYsIF8xZjcsIF8xZjgsIGFycik7CiAgICBpZiAoaW5kID09
IC0xKQogICAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB3aGlsZSAoaW5k
ICE9IC0xKQogICAgICB7CiAgICAgICAgYXJyLnNwbGljZShpbmQsIDEpOwogICAgICAgIGlmIChv
bmNlKQogICAgICAgICAgewogICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KICAgICAgICBp
bmQgPSB0aGlzLmhhc0FkdmljZShfMWY2LCBfMWY3LCBfMWY4LCBhcnIpOwogICAgICB9CiAgICBy
ZXR1cm4gdHJ1ZTsKICB9IH0pOwogIGRvam8uZXZlbnQudG9waWMgPSBuZXcgZnVuY3Rpb24gKCkK
ICB7CiAgICB0aGlzLnRvcGljcyA9IHsgfTsKICAgIHRoaXMuZ2V0VG9waWMgPSBmdW5jdGlvbiAo
XzFmYykKICAgIHsKICAgICAgaWYgKCF0aGlzLnRvcGljc1tfMWZjXSkKICAgICAgICB7CiAgICAg
ICAgICB0aGlzLnRvcGljc1tfMWZjXSA9IG5ldyB0aGlzLlRvcGljSW1wbChfMWZjKTsKICAgICAg
ICB9CiAgICAgIHJldHVybiB0aGlzLnRvcGljc1tfMWZjXTsKICAgIH07CiAgICB0aGlzLnJlZ2lz
dGVyUHVibGlzaGVyID0gZnVuY3Rpb24gKF8xZmQsIG9iaiwgXzFmZikKICAgIHsKICAgICAgdmFy
IF8xZmQgPSB0aGlzLmdldFRvcGljKF8xZmQpOwogICAgICBfMWZkLnJlZ2lzdGVyUHVibGlzaGVy
KG9iaiwgXzFmZik7CiAgICB9OwogICAgdGhpcy5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoXzIwMCwg
b2JqLCBfMjAyKQogICAgewogICAgICB2YXIgXzIwMCA9IHRoaXMuZ2V0VG9waWMoXzIwMCk7CiAg
ICAgIF8yMDAuc3Vic2NyaWJlKG9iaiwgXzIwMik7CiAgICB9OwogICAgdGhpcy51bnN1YnNjcmli
ZSA9IGZ1bmN0aW9uIChfMjAzLCBvYmosIF8yMDUpCiAgICB7CiAgICAgIHZhciBfMjAzID0gdGhp
cy5nZXRUb3BpYyhfMjAzKTsKICAgICAgXzIwMy51bnN1YnNjcmliZShvYmosIF8yMDUpOwogICAg
fTsKICAgIHRoaXMuZGVzdHJveSA9IGZ1bmN0aW9uIChfMjA2KQogICAgewogICAgICB0aGlzLmdl
dFRvcGljKF8yMDYpLmRlc3Ryb3koKTsKICAgICAgZGVsZXRlIHRoaXMudG9waWNzW18yMDZdOwog
ICAgfTsKICAgIHRoaXMucHVibGlzaCA9IGZ1bmN0aW9uIChfMjA3LCBfMjA4KQogICAgewogICAg
ICB2YXIgXzIwNyA9IHRoaXMuZ2V0VG9waWMoXzIwNyk7CiAgICAgIHZhciBhcmdzID0gW107CiAg
ICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIgJiYgKGRvam8ubGFuZy5pc0FycmF5KF8yMDgp
IHx8IF8yMDguY2FsbGVlKSkKICAgICAgICB7CiAgICAgICAgICBhcmdzID0gXzIwODsKICAgICAg
ICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICB2YXIgYXJncyA9IFtdOwogICAgICAg
ICAgZm9yICh4ID0gMTsgeCA8IGFyZ3VtZW50cy5sZW5ndGg7IHgrKykKICAgICAgICAgICAgewog
ICAgICAgICAgICAgIGFyZ3MucHVzaChhcmd1bWVudHNbeF0pOwogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgICBfMjA3LnNlbmRNZXNzYWdlLmFwcGx5KF8yMDcsIGFyZ3MpOwogICAgfTsKICB9
OwogIGRvam8uZXZlbnQudG9waWMuVG9waWNJbXBsID0gZnVuY3Rpb24gKF8yMGIpCiAgewogICAg
dGhpcy50b3BpY05hbWUgPSBfMjBiOwogICAgdGhpcy5zdWJzY3JpYmUgPSBmdW5jdGlvbiAoXzIw
YywgXzIwZCkKICAgIHsKICAgICAgdmFyIHRmID0gXzIwZCB8fCBfMjBjOwogICAgICB2YXIgdG8g
PSAoIV8yMGQpID8gZGpfZ2xvYmFsIDogXzIwYzsKICAgICAgZG9qby5ldmVudC5rd0Nvbm5lY3Qo
eyAic3JjT2JqIjogdGhpcywgInNyY0Z1bmMiOiAic2VuZE1lc3NhZ2UiLCAiYWR2aWNlT2JqIjog
dG8sICJhZHZpY2VGdW5jIjogdGYgfSk7CiAgICB9OwogICAgdGhpcy51bnN1YnNjcmliZSA9IGZ1
bmN0aW9uIChfMjEwLCBfMjExKQogICAgewogICAgICB2YXIgdGYgPSAoIV8yMTEpID8gXzIxMCA6
IF8yMTE7CiAgICAgIHZhciB0byA9ICghXzIxMSkgPyBudWxsIDogXzIxMDsKICAgIH07CiAgICB0
aGlzLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKQogICAgewogICAgfTsKICAgIHRoaXMucmVnaXN0ZXJQ
dWJsaXNoZXIgPSBmdW5jdGlvbiAoXzIxNCwgXzIxNSkKICAgIHsKICAgICAgZG9qby5ldmVudC5j
b25uZWN0KF8yMTQsIF8yMTUsIHRoaXMsICJzZW5kTWVzc2FnZSIpOwogICAgfTsKICAgIHRoaXMu
c2VuZE1lc3NhZ2UgPSBmdW5jdGlvbiAoXzIxNikKICAgIHsKICAgIH07CiAgfTsKICBkb2pvLmV2
ZW50LmJyb3dzZXIgPSBuZXcgZnVuY3Rpb24gKCkKICB7CiAgICB2YXIgXzIyMSA9IDA7CiAgICB0
aGlzLmNsZWFuID0gZnVuY3Rpb24gKG5vZGUpCiAgICB7CiAgICB9OwogICAgdGhpcy5hZGRDbG9i
YmVyTm9kZSA9IGZ1bmN0aW9uIChub2RlKQogICAgewogICAgICBpZiAoIW5vZGVbIl9fZG9DbG9i
YmVyX18iXSkKICAgICAgICB7CiAgICAgICAgICBub2RlLl9fZG9DbG9iYmVyX18gPSB0cnVlOwog
ICAgICAgICAgbm9kZS5fX2Nsb2JiZXJBdHRyc19fID0gW107CiAgICAgICAgfQogICAgfTsKICAg
IHRoaXMuYWRkQ2xvYmJlck5vZGVBdHRycyA9IGZ1bmN0aW9uIChub2RlLCBfMjI1KQogICAgewog
ICAgICB0aGlzLmFkZENsb2JiZXJOb2RlKG5vZGUpOwogICAgICBmb3IgKHggPSAwOyB4IDwgXzIy
NS5sZW5ndGg7IHgrKykKICAgICAgICB7CiAgICAgICAgICBub2RlLl9fY2xvYmJlckF0dHJzX18u
cHVzaChfMjI1W3hdKTsKICAgICAgICB9CiAgICB9OwogICAgdGhpcy5yZW1vdmVMaXN0ZW5lciA9
IGZ1bmN0aW9uIChub2RlLCBfMjI4LCBmcCwgXzIyYSkKICAgIHsKICAgICAgaWYgKCFfMjJhKQog
ICAgICAgIHsKICAgICAgICAgIHZhciBfMjJhID0gZmFsc2U7CiAgICAgICAgfQogICAgICBfMjI4
ID0gXzIyOC50b0xvd2VyQ2FzZSgpOwogICAgICBpZiAoXzIyOC5zdWJzdHIoMCwgMikgPT0gIm9u
IikKICAgICAgICB7CiAgICAgICAgICBfMjI4ID0gXzIyOC5zdWJzdHIoMik7CiAgICAgICAgfQog
ICAgICBpZiAobm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKQogICAgICAgIHsKICAgICAgICAgIG5v
ZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihfMjI4LCBmcCwgXzIyYSk7CiAgICAgICAgfQogICAgfTsK
ICAgIHRoaXMuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbiAobm9kZSwgXzIyYywgZnAsIF8yMmUsIF8y
MmYpCiAgICB7CiAgICAgIGlmICghbm9kZSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm47CiAg
ICAgICAgfQogICAgICBpZiAoIV8yMmUpCiAgICAgICAgewogICAgICAgICAgdmFyIF8yMmUgPSBm
YWxzZTsKICAgICAgICB9CiAgICAgIF8yMmMgPSBfMjJjLnRvTG93ZXJDYXNlKCk7CiAgICAgIGlm
IChfMjJjLnN1YnN0cigwLCAyKSAhPSAib24iKQogICAgICAgIHsKICAgICAgICAgIF8yMmMgPSAi
b24iK18yMmM7CiAgICAgICAgfQogICAgICBpZiAoIV8yMmYpCiAgICAgICAgewogICAgICAgICAg
dmFyIF8yMzAgPSBmdW5jdGlvbiAoZXZ0KQogICAgICAgICAgewogICAgICAgICAgICBpZiAoIWV2
dCkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBldnQgPSB3aW5kb3cuZXZlbnQ7CiAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcmV0ID0gZnAoZG9qby5ldmVudC5icm93c2Vy
LmZpeEV2ZW50KGV2dCwgdGhpcykpOwogICAgICAgICAgICBpZiAoXzIyZSkKICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICBkb2pvLmV2ZW50LmJyb3dzZXIuc3RvcEV2ZW50KGV2dCk7CiAg
ICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICAgfTsKICAgICAg
ICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBfMjMwID0gZnA7CiAgICAgICAgfQog
ICAgICBpZiAobm9kZS5hZGRFdmVudExpc3RlbmVyKQogICAgICAgIHsKICAgICAgICAgIG5vZGUu
YWRkRXZlbnRMaXN0ZW5lcihfMjJjLnN1YnN0cigyKSwgXzIzMCwgXzIyZSk7CiAgICAgICAgICBy
ZXR1cm4gXzIzMDsKICAgICAgICB9CiAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBpZiAo
dHlwZW9mIG5vZGVbXzIyY10gPT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgewogICAgICAgICAg
ICAgIHZhciBfMjMzID0gbm9kZVtfMjJjXTsKICAgICAgICAgICAgICBub2RlW18yMmNdID0gZnVu
Y3Rpb24gKGUpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgXzIzMyhlKTsKICAgICAg
ICAgICAgICAgIHJldHVybiBfMjMwKGUpOwogICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0K
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgIG5vZGVbXzIyY10gPSBf
MjMwOwogICAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gXzIzMDsKICAgICAgICB9CiAgICB9
OwogICAgdGhpcy5pc0V2ZW50ID0gZnVuY3Rpb24gKG9iaikKICAgIHsKICAgICAgcmV0dXJuICh0
eXBlb2Ygb2JqICE9ICJ1bmRlZmluZWQiKSAmJiAodHlwZW9mIEV2ZW50ICE9ICJ1bmRlZmluZWQi
KSAmJiAob2JqLmV2ZW50UGhhc2UpOwogICAgfTsKICAgIHRoaXMuY3VycmVudEV2ZW50ID0gbnVs
bDsKICAgIHRoaXMuY2FsbExpc3RlbmVyID0gZnVuY3Rpb24gKF8yMzYsIF8yMzcpCiAgICB7CiAg
ICAgIGRvam8uZXZlbnQuYnJvd3Nlci5jdXJyZW50RXZlbnQuY3VycmVudFRhcmdldCA9IF8yMzc7
CiAgICAgIHJldHVybiBfMjM2LmNhbGwoXzIzNywgZG9qby5ldmVudC5icm93c2VyLmN1cnJlbnRF
dmVudCk7CiAgICB9OwogICAgdGhpcy5zdG9wUHJvcGFnYXRpb24gPSBmdW5jdGlvbiAoKQogICAg
ewogICAgICBkb2pvLmV2ZW50LmJyb3dzZXIuY3VycmVudEV2ZW50LmNhbmNlbEJ1YmJsZSA9IHRy
dWU7CiAgICB9OwogICAgdGhpcy5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uICgpCiAgICB7CiAg
ICAgIGRvam8uZXZlbnQuYnJvd3Nlci5jdXJyZW50RXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsK
ICAgIH07CiAgICB0aGlzLmtleXMgPSB7ICJLRVlfQkFDS1NQQUNFIjogOCwgIktFWV9UQUIiOiA5
LCAiS0VZX0VOVEVSIjogMTMsICJLRVlfU0hJRlQiOiAxNiwgIktFWV9DVFJMIjogMTcsICJLRVlf
QUxUIjogMTgsICJLRVlfUEFVU0UiOiAxOSwgIktFWV9DQVBTX0xPQ0siOiAyMCwgIktFWV9FU0NB
UEUiOiAyNywgIktFWV9TUEFDRSI6IDMyLCAiS0VZX1BBR0VfVVAiOiAzMywgIktFWV9QQUdFX0RP
V04iOiAzNCwgIktFWV9FTkQiOiAzNSwgIktFWV9IT01FIjogMzYsICJLRVlfTEVGVF9BUlJPVyI6
IDM3LCAiS0VZX1VQX0FSUk9XIjogMzgsICJLRVlfUklHSFRfQVJST1ciOiAzOSwgIktFWV9ET1dO
X0FSUk9XIjogNDAsICJLRVlfSU5TRVJUIjogNDUsICJLRVlfREVMRVRFIjogNDYsICJLRVlfTEVG
VF9XSU5ET1ciOiA5MSwgIktFWV9SSUdIVF9XSU5ET1ciOiA5MiwgIktFWV9TRUxFQ1QiOiA5Mywg
IktFWV9GMSI6IDExMiwgIktFWV9GMiI6IDExMywgIktFWV9GMyI6IDExNCwgIktFWV9GNCI6IDEx
NSwgIktFWV9GNSI6IDExNiwgIktFWV9GNiI6IDExNywgIktFWV9GNyI6IDExOCwgIktFWV9GOCI6
IDExOSwgIktFWV9GOSI6IDEyMCwgIktFWV9GMTAiOiAxMjEsICJLRVlfRjExIjogMTIyLCAiS0VZ
X0YxMiI6IDEyMywgIktFWV9OVU1fTE9DSyI6IDE0NCwgIktFWV9TQ1JPTExfTE9DSyI6IDE0NSB9
OwogICAgdGhpcy5yZXZLZXlzID0gW107CiAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5rZXlzKQog
ICAgICB7CiAgICAgICAgdGhpcy5yZXZLZXlzW3RoaXMua2V5c1trZXldXSA9IGtleTsKICAgICAg
fQogICAgdGhpcy5maXhFdmVudCA9IGZ1bmN0aW9uIChldnQsIF8yM2EpCiAgICB7CiAgICAgIGlm
ICgoIWV2dCkgJiYgKHdpbmRvd1siZXZlbnQiXSkpCiAgICAgICAgewogICAgICAgICAgdmFyIGV2
dCA9IHdpbmRvdy5ldmVudDsKICAgICAgICB9CiAgICAgIGlmICgoZXZ0WyJ0eXBlIl0pICYmIChl
dnRbInR5cGUiXS5pbmRleE9mKCJrZXkiKSA9PSAwKSkKICAgICAgICB7CiAgICAgICAgICBldnQu
a2V5cyA9IHRoaXMucmV2S2V5czsKICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLmtleXMp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBldnRba2V5XSA9IHRoaXMua2V5c1trZXldOwog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgICByZXR1cm4gZXZ0OwogICAgfTsKICAgIHRoaXMu
c3RvcEV2ZW50ID0gZnVuY3Rpb24gKGV2KQogICAgewogICAgICBpZiAod2luZG93LmV2ZW50KQog
ICAgICAgIHsKICAgICAgICAgIGV2LnJldHVyblZhbHVlID0gZmFsc2U7CiAgICAgICAgICBldi5j
YW5jZWxCdWJibGUgPSB0cnVlOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsKICAgICAg
ICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICBldi5zdG9wUHJvcGFnYXRpb24oKTsK
ICAgICAgICB9CiAgICB9OwogIH07CiAgZG9qby53aWRnZXQgPSB7fTsKICBkb2pvLndpZGdldC5t
YW5hZ2VyID0gbmV3IGZ1bmN0aW9uICgpCiAgewogICAgdGhpcy53aWRnZXRzID0gW107CiAgICB0
aGlzLndpZGdldElkcyA9IFtdOwogICAgdGhpcy50b3BXaWRnZXRzID0geyB9OwogICAgdmFyIF8y
M2QgPSB7IH07CiAgICB2YXIgXzIzZSA9IFtdOwogICAgdGhpcy5nZXRVbmlxdWVJZCA9IGZ1bmN0
aW9uIChfMjNmKQogICAgewogICAgICByZXR1cm4gXzIzZisiXyIrKF8yM2RbXzIzZl0gIT0gdW5k
ZWZpbmVkID8gKytfMjNkW18yM2ZdIDogXzIzZFtfMjNmXSA9IDApOwogICAgfTsKICAgIHRoaXMu
YWRkID0gZnVuY3Rpb24gKF8yNDApCiAgICB7CiAgICAgIHRoaXMud2lkZ2V0cy5wdXNoKF8yNDAp
OwogICAgICBpZiAoIV8yNDAuZXh0cmFBcmdzWyJpZCJdKQogICAgICAgIHsKICAgICAgICAgIF8y
NDAuZXh0cmFBcmdzWyJpZCJdID0gXzI0MC5leHRyYUFyZ3NbIklEIl07CiAgICAgICAgfQogICAg
ICBpZiAoXzI0MC53aWRnZXRJZCA9PSAiIikKICAgICAgICB7CiAgICAgICAgICBpZiAoXzI0MFsi
aWQiXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIF8yNDAud2lkZ2V0SWQgPSBfMjQwWyJp
ZCJdOwogICAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICBpZiAoXzI0MC5leHRyYUFyZ3NbImlkIl0pCiAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgIF8yNDAud2lkZ2V0SWQgPSBfMjQwLmV4dHJhQXJnc1siaWQiXTsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgIF8yNDAud2lkZ2V0SWQgPSB0aGlzLmdldFVuaXF1ZUlkKF8yNDAud2lkZ2V0VHlwZSk7
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIHRoaXMud2lk
Z2V0SWRzW18yNDAud2lkZ2V0SWRdID0gXzI0MDsKICAgIH07CiAgICB0aGlzLmRlc3Ryb3lBbGwg
PSBmdW5jdGlvbiAoKQogICAgewogICAgICBmb3IgKHggPSB0aGlzLndpZGdldHMubGVuZ3RoLTE7
IHggPj0gMDsgeC0tKQogICAgICAgIHt0cnkgCiAgICAgICAgICB7CiAgICAgICAgICAgIHRoaXMu
d2lkZ2V0c1t4XS5kZXN0cm95KHRydWUpOwogICAgICAgICAgICBkZWxldGUgdGhpcy53aWRnZXRz
W3hdOwogICAgICAgICAgfQogICAgICAgICAgY2F0Y2ggKGUpCiAgICAgICAgICB7CiAgICAgICAg
ICB9CiAgICAgICAgfQogICAgfTsKICAgIHRoaXMucmVtb3ZlID0gZnVuY3Rpb24gKF8yNDIpCiAg
ICB7CiAgICAgIHZhciB0dyA9IHRoaXMud2lkZ2V0c1tfMjQyXS53aWRnZXRJZDsKICAgICAgZGVs
ZXRlIHRoaXMud2lkZ2V0SWRzW3R3XTsKICAgICAgdGhpcy53aWRnZXRzLnNwbGljZShfMjQyLCAx
KTsKICAgIH07CiAgICB0aGlzLnJlbW92ZUJ5SWQgPSBmdW5jdGlvbiAoaWQpCiAgICB7CiAgICAg
IGZvciAoaSA9IDA7IGkgPCB0aGlzLndpZGdldHMubGVuZ3RoOyBpKyspCiAgICAgICAgewogICAg
ICAgICAgaWYgKHRoaXMud2lkZ2V0c1tpXS53aWRnZXRJZCA9PSBpZCkKICAgICAgICAgICAgewog
ICAgICAgICAgICAgIHRoaXMucmVtb3ZlKGkpOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIHRoaXMuZ2V0V2lkZ2V0QnlJZCA9IGZ1bmN0aW9u
IChpZCkKICAgIHsKICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0SWRzW2lkXTsKICAgIH07CiAgICB0
aGlzLmdldFdpZGdldHNCeVR5cGUgPSBmdW5jdGlvbiAodHlwZSkKICAgIHsKICAgICAgdmFyIGx0
ID0gdHlwZS50b0xvd2VyQ2FzZSgpOwogICAgICB2YXIgcmV0ID0gW107CiAgICAgIGRvam8ubGFu
Zy5mb3JFYWNoKHRoaXMud2lkZ2V0cywgZnVuY3Rpb24gKHgpCiAgICAgIHsKICAgICAgICBpZiAo
eC53aWRnZXRUeXBlLnRvTG93ZXJDYXNlKCkgPT0gbHQpCiAgICAgICAgICB7CiAgICAgICAgICAg
IHJldC5wdXNoKHgpOwogICAgICAgICAgfQogICAgICB9KTsKICAgICAgcmV0dXJuIHJldDsKICAg
IH07CiAgICB0aGlzLmdldFdpZGdldHNPZlR5cGUgPSBmdW5jdGlvbiAoaWQpCiAgICB7CiAgICAg
IGRvam8uZGVwcmVjYXRlZCgiZ2V0V2lkZ2V0c09mVHlwZSIsICJ1c2UgZ2V0V2lkZ2V0c0J5VHlw
ZSIsICIwLjQiKTsKICAgICAgcmV0dXJuIGRvam8ud2lkZ2V0Lm1hbmFnZXIuZ2V0V2lkZ2V0c0J5
VHlwZShpZCk7CiAgICB9OwogICAgdGhpcy5nZXRBbGxXaWRnZXRzID0gZnVuY3Rpb24gKCkKICAg
IHsKICAgICAgcmV0dXJuIHRoaXMud2lkZ2V0cy5jb25jYXQoKTsKICAgIH07CiAgICB0aGlzLmdl
dFdpZGdldEJ5Tm9kZSA9IGZ1bmN0aW9uIChub2RlKQogICAgewogICAgICB2YXIgdyA9IHRoaXMu
Z2V0QWxsV2lkZ2V0cygpOwogICAgICBmb3IgKGkgPSAwOyBpIDwgdy5sZW5ndGg7IGkrKykKICAg
ICAgICB7CiAgICAgICAgICBpZiAod1tpXS5kb21Ob2RlID09IG5vZGUpCiAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICByZXR1cm4gd1tpXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAg
cmV0dXJuIG51bGw7CiAgICB9OwogICAgdGhpcy5ieUlkID0gdGhpcy5nZXRXaWRnZXRCeUlkOwog
ICAgdGhpcy5ieVR5cGUgPSB0aGlzLmdldFdpZGdldHNCeVR5cGU7CiAgICB0aGlzLmJ5RmlsdGVy
ID0gdGhpcy5nZXRXaWRnZXRzQnlGaWx0ZXI7CiAgICB0aGlzLmJ5Tm9kZSA9IHRoaXMuZ2V0V2lk
Z2V0QnlOb2RlOwogICAgdmFyIF8yNTMgPSB7IH07CiAgICB2YXIgXzI1NCA9IFsiZG9qby53aWRn
ZXQiXTsKICAgIGZvciAoaSA9IDA7IGkgPCBfMjU0Lmxlbmd0aDsgaSsrKQogICAgICB7CiAgICAg
ICAgXzI1NFtfMjU0W2ldXSA9IHRydWU7CiAgICAgIH0KICAgIHRoaXMucmVnaXN0ZXJXaWRnZXRQ
YWNrYWdlID0gZnVuY3Rpb24gKF8yNTYpCiAgICB7CiAgICAgIGlmICghXzI1NFtfMjU2XSkKICAg
ICAgICB7CiAgICAgICAgICBfMjU0W18yNTZdID0gdHJ1ZTsKICAgICAgICAgIF8yNTQucHVzaChf
MjU2KTsKICAgICAgICB9CiAgICB9OwogICAgdGhpcy5nZXRJbXBsZW1lbnRhdGlvbiA9IGZ1bmN0
aW9uIChfMjU4LCBfMjU5LCBfMjVhKQogICAgewogICAgICB2YXIgaW1wbCA9IHRoaXMuZ2V0SW1w
bGVtZW50YXRpb25OYW1lKF8yNTgpOwogICAgICBpZiAoaW1wbCkKICAgICAgICB7CiAgICAgICAg
ICB2YXIgcmV0ID0gbmV3IGltcGwoXzI1OSk7CiAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAg
IH0KICAgIH07CiAgICB0aGlzLmdldEltcGxlbWVudGF0aW9uTmFtZSA9IGZ1bmN0aW9uIChfMjVk
KQogICAgewogICAgICB2YXIgXzI1ZSA9IF8yNWQudG9Mb3dlckNhc2UoKTsKICAgICAgdmFyIGlt
cGwgPSBfMjUzW18yNWVdOwogICAgICBpZiAoaW1wbCkKICAgICAgICB7CiAgICAgICAgICByZXR1
cm4gaW1wbDsKICAgICAgICB9CiAgICAgIGlmICghXzIzZS5sZW5ndGgpCiAgICAgICAgewogICAg
ICAgICAgXzIzZS5wdXNoKCJodG1sIik7CiAgICAgICAgICBfMjNlLnB1c2goIiIpOwogICAgICAg
IH0KICAgICAgZm9yIChpID0gMDsgaSA8IF8yNTQubGVuZ3RoOyBpKyspCiAgICAgICAgewogICAg
ICAgICAgdmFyIF8yNjMgPSBkb2pvLmV2YWxPYmpQYXRoKF8yNTRbaV0pOwogICAgICAgICAgaWYg
KCFfMjYzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
IH0KICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBfMjNlLmxlbmd0aDsgaisrKQogICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgaWYgKCFfMjYzW18yM2Vbal1dKQogICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICBmb3IgKHZhciBfMjY1IGluIF8yNjNbXzIzZVtqXV0pCiAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgIGlmIChfMjY1LnRvTG93ZXJDYXNlKCkgIT0gXzI1ZSkKICAgICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgIF8yNTNbXzI1ZV0gPSBfMjYzW18yM2Vbal1dW18yNjVd
OwogICAgICAgICAgICAgICAgICByZXR1cm4gXzI1M1tfMjVlXTsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgfQogICAgICAgICAgZm9yIChqID0gMDsgaiA8IF8yM2UubGVuZ3RoOyBqKysp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBmb3IgKHZhciBfMjY1IGluIF8yNjMpCiAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIGlmIChfMjY1LnRvTG93ZXJDYXNlKCkgIT0g
KF8yM2Vbal0rXzI1ZSkpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICBfMjUz
W18yNWVdID0gXzI2M1tfMjY1XTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIF8yNTNbXzI1ZV07
CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIHRocm93IG5l
dyBFcnJvcigiQ291bGQgbm90IGxvY2F0ZSBcIiIrXzI1ZCsiXCIgY2xhc3MiKTsKICAgIH07CiAg
ICB0aGlzLnJlc2l6aW5nID0gZmFsc2U7CiAgICB0aGlzLm9uV2luZG93UmVzaXplZCA9IGZ1bmN0
aW9uICgpCiAgICB7CiAgICAgIGlmICh0aGlzLnJlc2l6aW5nKQogICAgICAgIHsKICAgICAgICAg
IHJldHVybjsKICAgICAgICB9dHJ5IAogICAgICB7CiAgICAgICAgdGhpcy5yZXNpemluZyA9IHRy
dWU7CiAgICAgICAgZm9yICh2YXIgaWQgaW4gdGhpcy50b3BXaWRnZXRzKQogICAgICAgICAgewog
ICAgICAgICAgICB2YXIgXzI2NyA9IHRoaXMudG9wV2lkZ2V0c1tpZF07CiAgICAgICAgICAgIGlm
IChfMjY3Lm9uUGFyZW50UmVzaXplZCkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBf
MjY3Lm9uUGFyZW50UmVzaXplZCgpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAg
fQogICAgICBjYXRjaCAoZSkKICAgICAgewogICAgICB9CiAgICAgIGZpbmFsbHkgCiAgICAgIHsK
ICAgICAgICB0aGlzLnJlc2l6aW5nID0gZmFsc2U7CiAgICAgIH0KICAgIH07CiAgICBpZiAodHlw
ZW9mIHdpbmRvdyAhPSAidW5kZWZpbmVkIikKICAgICAgewogICAgICAgIGRvam8uYWRkT25Mb2Fk
KHRoaXMsICJvbldpbmRvd1Jlc2l6ZWQiKTsKICAgICAgICBkb2pvLmV2ZW50LmNvbm5lY3Qod2lu
ZG93LCAib25yZXNpemUiLCB0aGlzLCAib25XaW5kb3dSZXNpemVkIik7CiAgICAgIH0KICB9Owog
IChmdW5jdGlvbiAoKQogIHsKICAgIHZhciBkdyA9IGRvam8ud2lkZ2V0OwogICAgdmFyIGR3bSA9
IGR3Lm1hbmFnZXI7CiAgICB2YXIgZyA9IGZ1bmN0aW9uIChfMjZjLCBfMjZkKQogICAgewogICAg
ICBkd1soXzI2ZCB8fCBfMjZjKV0gPSBkb2pvLmxhbmcuaGl0Y2goZG9qby53aWRnZXQubWFuYWdl
ciwgXzI2Yyk7CiAgICB9OwogICAgZygiYWRkIiwgImFkZFdpZGdldCIpOwogICAgZygiZGVzdHJv
eUFsbCIsICJkZXN0cm95QWxsV2lkZ2V0cyIpOwogICAgZygicmVtb3ZlIiwgInJlbW92ZVdpZGdl
dCIpOwogICAgZygicmVtb3ZlQnlJZCIsICJyZW1vdmVXaWRnZXRCeUlkIik7CiAgICBnKCJnZXRX
aWRnZXRCeUlkIik7CiAgICBnKCJnZXRXaWRnZXRCeUlkIiwgImJ5SWQiKTsKICAgIGcoImdldFdp
ZGdldHNCeVR5cGUiKTsKICAgIGcoImdldFdpZGdldHNCeUZpbHRlciIpOwogICAgZygiZ2V0V2lk
Z2V0c0J5VHlwZSIsICJieVR5cGUiKTsKICAgIGcoImdldFdpZGdldHNCeUZpbHRlciIsICJieUZp
bHRlciIpOwogICAgZygiZ2V0V2lkZ2V0QnlOb2RlIiwgImJ5Tm9kZSIpOwogICAgZHcuYWxsID0g
ZnVuY3Rpb24gKG4pCiAgICB7CiAgICAgIHZhciBfMjZmID0gZHdtLmdldEFsbFdpZGdldHMuYXBw
bHkoZHdtLCBhcmd1bWVudHMpOwogICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDApCiAgICAg
ICAgewogICAgICAgICAgcmV0dXJuIF8yNmZbbl07CiAgICAgICAgfQogICAgICByZXR1cm4gXzI2
ZjsKICAgIH07CiAgICBnKCJyZWdpc3RlcldpZGdldFBhY2thZ2UiKTsKICAgIGcoImdldEltcGxl
bWVudGF0aW9uIiwgImdldFdpZGdldEltcGxlbWVudGF0aW9uIik7CiAgICBnKCJnZXRJbXBsZW1l
bnRhdGlvbk5hbWUiLCAiZ2V0V2lkZ2V0SW1wbGVtZW50YXRpb25OYW1lIik7CiAgICBkdy53aWRn
ZXRzID0gZHdtLndpZGdldHM7CiAgICBkdy53aWRnZXRJZHMgPSBkd20ud2lkZ2V0SWRzOwogICAg
ZHcucm9vdCA9IGR3bS5yb290OwogIH0pKCk7CiAgZG9qby5kZWNsYXJlKCJkb2pvLndpZGdldC5X
aWRnZXQiLCBudWxsLCB7ICJpbml0aWFsaXplciI6IGZ1bmN0aW9uICgpCiAgewogICAgdGhpcy5j
aGlsZHJlbiA9IFtdOwogICAgdGhpcy5leHRyYUFyZ3MgPSB7IH07CiAgfSwgInBhcmVudCI6IG51
bGwsICJpc1RvcExldmVsIjogZmFsc2UsICJpc01vZGFsIjogZmFsc2UsICJpc0VuYWJsZWQiOiB0
cnVlLCAiaXNIaWRkZW4iOiBmYWxzZSwgImlzQ29udGFpbmVyIjogZmFsc2UsICJ3aWRnZXRJZCI6
ICIiLCAid2lkZ2V0VHlwZSI6ICJXaWRnZXQiLCAidG9TdHJpbmciOiBmdW5jdGlvbiAoKQogIHsK
ICAgIHJldHVybiAiW1dpZGdldCAiK3RoaXMud2lkZ2V0VHlwZSsiLCAiKyh0aGlzLndpZGdldElk
IHx8ICJOTyBJRCIpKyJdIjsKICB9LCAicmVwciI6IGZ1bmN0aW9uICgpCiAgewogICAgcmV0dXJu
IHRoaXMudG9TdHJpbmcoKTsKICB9LCAiZW5hYmxlIjogZnVuY3Rpb24gKCkKICB7CiAgICB0aGlz
LmlzRW5hYmxlZCA9IHRydWU7CiAgfSwgImRpc2FibGUiOiBmdW5jdGlvbiAoKQogIHsKICAgIHRo
aXMuaXNFbmFibGVkID0gZmFsc2U7CiAgfSwgImhpZGUiOiBmdW5jdGlvbiAoKQogIHsKICAgIHRo
aXMuaXNIaWRkZW4gPSB0cnVlOwogIH0sICJzaG93IjogZnVuY3Rpb24gKCkKICB7CiAgICB0aGlz
LmlzSGlkZGVuID0gZmFsc2U7CiAgfSwgIm9uUmVzaXplZCI6IGZ1bmN0aW9uICgpCiAgewogICAg
dGhpcy5ub3RpZnlDaGlsZHJlbk9mUmVzaXplKCk7CiAgfSwgIm5vdGlmeUNoaWxkcmVuT2ZSZXNp
emUiOiBmdW5jdGlvbiAoKQogIHsKICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxl
bmd0aDsgaSsrKQogICAgICB7CiAgICAgICAgdmFyIF8yNzEgPSB0aGlzLmNoaWxkcmVuW2ldOwog
ICAgICAgIGlmIChfMjcxLm9uUmVzaXplZCkKICAgICAgICAgIHsKICAgICAgICAgICAgXzI3MS5v
blJlc2l6ZWQoKTsKICAgICAgICAgIH0KICAgICAgfQogIH0sICJjcmVhdGUiOiBmdW5jdGlvbiAo
YXJncywgXzI3MywgXzI3NCkKICB7CiAgICB0aGlzLnNhdGlzZnlQcm9wZXJ0eVNldHMoYXJncywg
XzI3MywgXzI3NCk7CiAgICB0aGlzLm1peEluUHJvcGVydGllcyhhcmdzLCBfMjczLCBfMjc0KTsK
ICAgIHRoaXMucG9zdE1peEluUHJvcGVydGllcyhhcmdzLCBfMjczLCBfMjc0KTsKICAgIGRvam8u
d2lkZ2V0Lm1hbmFnZXIuYWRkKHRoaXMpOwogICAgdGhpcy5idWlsZFJlbmRlcmluZyhhcmdzLCBf
MjczLCBfMjc0KTsKICAgIHRoaXMuaW5pdGlhbGl6ZShhcmdzLCBfMjczLCBfMjc0KTsKICAgIHRo
aXMucG9zdEluaXRpYWxpemUoYXJncywgXzI3MywgXzI3NCk7CiAgICB0aGlzLnBvc3RDcmVhdGUo
YXJncywgXzI3MywgXzI3NCk7CiAgICByZXR1cm4gdGhpczsKICB9LCAiZGVzdHJveSI6IGZ1bmN0
aW9uIChfMjc1KQogIHsKICAgIHRoaXMuZGVzdHJveUNoaWxkcmVuKCk7CiAgICB0aGlzLnVuaW5p
dGlhbGl6ZSgpOwogICAgdGhpcy5kZXN0cm95UmVuZGVyaW5nKF8yNzUpOwogICAgZG9qby53aWRn
ZXQubWFuYWdlci5yZW1vdmVCeUlkKHRoaXMud2lkZ2V0SWQpOwogIH0sICJkZXN0cm95Q2hpbGRy
ZW4iOiBmdW5jdGlvbiAoKQogIHsKICAgIHdoaWxlICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDAp
CiAgICAgIHsKICAgICAgICB2YXIgdGMgPSB0aGlzLmNoaWxkcmVuWzBdOwogICAgICAgIHRoaXMu
cmVtb3ZlQ2hpbGQodGMpOwogICAgICAgIHRjLmRlc3Ryb3koKTsKICAgICAgfQogIH0sICJnZXRD
aGlsZHJlbk9mVHlwZSI6IGZ1bmN0aW9uICh0eXBlLCBfMjc4KQogIHsKICAgIHZhciByZXQgPSBb
XTsKICAgIHZhciBfMjdhID0gZG9qby5sYW5nLmlzRnVuY3Rpb24odHlwZSk7CiAgICBpZiAoIV8y
N2EpCiAgICAgIHsKICAgICAgICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpOwogICAgICB9CiAg
ICBmb3IgKHggPSAwOyB4IDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7IHgrKykKICAgICAgewogICAg
ICAgIGlmIChfMjdhKQogICAgICAgICAgewogICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlblt4
XSBpbnN0YW5jZW9mIHR5cGUpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0LnB1
c2godGhpcy5jaGlsZHJlblt4XSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAg
IGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW5beF0ud2lkZ2V0
VHlwZS50b0xvd2VyQ2FzZSgpID09IHR5cGUpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgcmV0LnB1c2godGhpcy5jaGlsZHJlblt4XSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAg
fQogICAgICAgIGlmIChfMjc4KQogICAgICAgICAgewogICAgICAgICAgICByZXQgPSByZXQuY29u
Y2F0KHRoaXMuY2hpbGRyZW5beF0uZ2V0Q2hpbGRyZW5PZlR5cGUodHlwZSwgXzI3OCkpOwogICAg
ICAgICAgfQogICAgICB9CiAgICByZXR1cm4gcmV0OwogIH0sICJnZXREZXNjZW5kYW50cyI6IGZ1
bmN0aW9uICgpCiAgewogICAgdmFyIF8yN2MgPSBbXTsKICAgIHZhciBfMjdkID0gW3RoaXNdOwog
ICAgdmFyIGVsZW07CiAgICB3aGlsZSAoZWxlbSA9IF8yN2QucG9wKCkpCiAgICAgIHsKICAgICAg
ICBfMjdjLnB1c2goZWxlbSk7CiAgICAgICAgZG9qby5sYW5nLmZvckVhY2goZWxlbS5jaGlsZHJl
biwgZnVuY3Rpb24gKGVsZW0pCiAgICAgICAgewogICAgICAgICAgXzI3ZC5wdXNoKGVsZW0pOwog
ICAgICAgIH0pOwogICAgICB9CiAgICByZXR1cm4gXzI3YzsKICB9LCAic2F0aXNmeVByb3BlcnR5
U2V0cyI6IGZ1bmN0aW9uIChhcmdzKQogIHsKICAgIHJldHVybiBhcmdzOwogIH0sICJtaXhJblBy
b3BlcnRpZXMiOiBmdW5jdGlvbiAoYXJncywgZnJhZykKICB7CiAgICBpZiAoKGFyZ3NbImZhc3RN
aXhJbiJdKSB8fCAoZnJhZ1siZmFzdE1peEluIl0pKQogICAgICB7CiAgICAgICAgZm9yICh2YXIg
eCBpbiBhcmdzKQogICAgICAgICAgewogICAgICAgICAgICB0aGlzW3hdID0gYXJnc1t4XTsKICAg
ICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICAgIH0KICAgIHZhciBfMjg0OwogICAgdmFyIF8y
ODUgPSBkb2pvLndpZGdldC5sY0FyZ3NDYWNoZVt0aGlzLndpZGdldFR5cGVdOwogICAgaWYgKF8y
ODUgPT0gbnVsbCkKICAgICAgewogICAgICAgIF8yODUgPSB7IH07CiAgICAgICAgZm9yICh2YXIg
eSBpbiB0aGlzKQogICAgICAgICAgewogICAgICAgICAgICBfMjg1WygobmV3IFN0cmluZyh5KSku
dG9Mb3dlckNhc2UoKSldID0geTsKICAgICAgICAgIH0KICAgICAgICBkb2pvLndpZGdldC5sY0Fy
Z3NDYWNoZVt0aGlzLndpZGdldFR5cGVdID0gXzI4NTsKICAgICAgfQogICAgdmFyIF8yODcgPSB7
IH07CiAgICBmb3IgKHZhciB4IGluIGFyZ3MpCiAgICAgIHsKICAgICAgICBpZiAoIXRoaXNbeF0p
CiAgICAgICAgICB7CiAgICAgICAgICAgIHZhciB5ID0gXzI4NVsobmV3IFN0cmluZyh4KSkudG9M
b3dlckNhc2UoKV07CiAgICAgICAgICAgIGlmICh5KQogICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgIGFyZ3NbeV0gPSBhcmdzW3hdOwogICAgICAgICAgICAgICAgeCA9IHk7CiAgICAgICAg
ICAgICAgfQogICAgICAgICAgfQogICAgICAgIGlmIChfMjg3W3hdKQogICAgICAgICAgewogICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgIH0KICAgICAgICBfMjg3W3hdID0gdHJ1ZTsKICAg
ICAgICBpZiAoKHR5cGVvZiB0aGlzW3hdKSAhPSAodHlwZW9mIF8yODQpKQogICAgICAgICAgewog
ICAgICAgICAgICBpZiAodHlwZW9mIGFyZ3NbeF0gIT0gInN0cmluZyIpCiAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgdGhpc1t4XSA9IGFyZ3NbeF07CiAgICAgICAgICAgICAgfQogICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaWYgKGRvam8ubGFu
Zy5pc1N0cmluZyh0aGlzW3hdKSkKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgIHRoaXNbeF0gPSBhcmdzW3hdOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZG9qby5s
YW5nLmlzTnVtYmVyKHRoaXNbeF0pKQogICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzW3hdID0gbmV3IE51bWJlcihhcmdzW3hdKTsKICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodGhpc1t4XSBpbnN0YW5jZW9mIEJvb2xl
YW4gfHwgdHlwZW9mIHRoaXNbeF0gPT0gImJvb2xlYW4iKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW3hdID0gKGFyZ3NbeF0udG9M
b3dlckNhc2UoKSA9PSAiZmFsc2UiKSA/IGZhbHNlIDogdHJ1ZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9qby5sYW5nLmlzRnVu
Y3Rpb24odGhpc1t4XSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJnc1t4XS5zZWFyY2goL1teXHdcLl0rL2kpID09
IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzW3hdID0gZG9qby5ldmFsT2JqUGF0aChhcmdzW3hdLCBm
YWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdG4gPSBkb2pvLmxhbmcu
bmFtZUFub25GdW5jKG5ldyBGdW5jdGlvbihhcmdzW3hdKSwgdGhpcyk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvam8uZXZlbnQuY29ubmVjdCh0aGlzLCB4LCB0aGlzLCB0
bik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChkb2pvLmxhbmcuaXNBcnJheSh0aGlzW3hdKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1t4XSA9IGFy
Z3NbeF0uc3BsaXQoIjsiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlz
W3hdIGluc3RhbmNlb2YgRGF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW3hdID0gbmV3
IERhdGUoTnVtYmVyKGFyZ3NbeF0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXNbeF0gPT0gIm9iamVjdCIpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1t4XSBpbnN0YW5jZW9mIGRvam8udXJpLlVyaSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1t4XSA9IGFyZ3NbeF07
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgXzI4OSA9IGFyZ3NbeF0uc3BsaXQoIjsiKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh5ID0gMDsg
eSA8IF8yODkubGVuZ3RoOyB5KyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIHNpID0gXzI4OVt5XS5pbmRleE9mKCI6Iik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHNpICE9IC0xKSAmJiAo
XzI4OVt5XS5sZW5ndGggPiBzaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzW3hdW18yODlbeV0uc3Vic3RyKDAsIHNpKS5yZXBsYWNl
KC9eXHMrfFxzKyQvZywgIiIpXSA9IF8yODlbeV0uc3Vic3RyKHNpKzEpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW3hdID0gYXJnc1t4XTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAg
IHRoaXMuZXh0cmFBcmdzW3gudG9Mb3dlckNhc2UoKV0gPSBhcmdzW3hdOwogICAgICAgICAgfQog
ICAgICB9CiAgfSwgInBvc3RNaXhJblByb3BlcnRpZXMiOiBmdW5jdGlvbiAoKQogIHsKICB9LCAi
aW5pdGlhbGl6ZSI6IGZ1bmN0aW9uIChhcmdzLCBmcmFnKQogIHsKICAgIHJldHVybiBmYWxzZTsK
ICB9LCAicG9zdEluaXRpYWxpemUiOiBmdW5jdGlvbiAoYXJncywgZnJhZykKICB7CiAgICByZXR1
cm4gZmFsc2U7CiAgfSwgInBvc3RDcmVhdGUiOiBmdW5jdGlvbiAoYXJncywgZnJhZykKICB7CiAg
ICByZXR1cm4gZmFsc2U7CiAgfSwgInVuaW5pdGlhbGl6ZSI6IGZ1bmN0aW9uICgpCiAgewogICAg
cmV0dXJuIGZhbHNlOwogIH0sICJidWlsZFJlbmRlcmluZyI6IGZ1bmN0aW9uICgpCiAgewogICAg
cmV0dXJuIGZhbHNlOwogIH0sICJkZXN0cm95UmVuZGVyaW5nIjogZnVuY3Rpb24gKCkKICB7CiAg
ICByZXR1cm4gZmFsc2U7CiAgfSwgImNsZWFuVXAiOiBmdW5jdGlvbiAoKQogIHsKICAgIHJldHVy
biBmYWxzZTsKICB9LCAiYWRkZWRUbyI6IGZ1bmN0aW9uIChfMjkxKQogIHsKICB9LCAiYWRkQ2hp
bGQiOiBmdW5jdGlvbiAoXzI5MikKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfSwgInJlbW92ZUNo
aWxkIjogZnVuY3Rpb24gKF8yOTMpCiAgewogICAgZm9yICh4ID0gMDsgeCA8IHRoaXMuY2hpbGRy
ZW4ubGVuZ3RoOyB4KyspCiAgICAgIHsKICAgICAgICBpZiAodGhpcy5jaGlsZHJlblt4XSA9PT0g
XzI5MykKICAgICAgICAgIHsKICAgICAgICAgICAgdGhpcy5jaGlsZHJlbi5zcGxpY2UoeCwgMSk7
CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICB9CiAgICByZXR1cm4gXzI5MzsK
ICB9LCAicmVzaXplIjogZnVuY3Rpb24gKF8yOTUsIF8yOTYpCiAgewogICAgdGhpcy5zZXRXaWR0
aChfMjk1KTsKICAgIHRoaXMuc2V0SGVpZ2h0KF8yOTYpOwogIH0sICJzZXRXaWR0aCI6IGZ1bmN0
aW9uIChfMjk3KQogIHsKICAgIGlmICgodHlwZW9mIF8yOTcgPT0gInN0cmluZyIpICYmIChfMjk3
LnN1YnN0cigtMSkgPT0gIiUiKSkKICAgICAgewogICAgICAgIHRoaXMuc2V0UGVyY2VudGFnZVdp
ZHRoKF8yOTcpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKICAgICAgICB0aGlzLnNldE5hdGl2
ZVdpZHRoKF8yOTcpOwogICAgICB9CiAgfSwgInNldEhlaWdodCI6IGZ1bmN0aW9uIChfMjk4KQog
IHsKICAgIGlmICgodHlwZW9mIF8yOTggPT0gInN0cmluZyIpICYmIChfMjk4LnN1YnN0cigtMSkg
PT0gIiUiKSkKICAgICAgewogICAgICAgIHRoaXMuc2V0UGVyY2VudGFnZUhlaWdodChfMjk4KTsK
ICAgICAgfQogICAgZWxzZQogICAgICB7CiAgICAgICAgdGhpcy5zZXROYXRpdmVIZWlnaHQoXzI5
OCk7CiAgICAgIH0KICB9LCAic2V0UGVyY2VudGFnZUhlaWdodCI6IGZ1bmN0aW9uIChfMjk5KQog
IHsKICAgIHJldHVybiBmYWxzZTsKICB9LCAic2V0TmF0aXZlSGVpZ2h0IjogZnVuY3Rpb24gKF8y
OWEpCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0sICJzZXRQZXJjZW50YWdlV2lkdGgiOiBmdW5j
dGlvbiAoXzI5YikKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfSwgInNldE5hdGl2ZVdpZHRoIjog
ZnVuY3Rpb24gKF8yOWMpCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0sICJnZXRQcmV2aW91c1Np
YmxpbmciOiBmdW5jdGlvbiAoKQogIHsKICAgIHZhciBpZHggPSB0aGlzLmdldFBhcmVudEluZGV4
KCk7CiAgICBpZiAoaWR4IDw9IDApCiAgICAgIHsKICAgICAgICByZXR1cm4gbnVsbDsKICAgICAg
fQogICAgcmV0dXJuIHRoaXMuZ2V0U2libGluZ3MoKVtpZHgtMV07CiAgfSwgImdldFNpYmxpbmdz
IjogZnVuY3Rpb24gKCkKICB7CiAgICByZXR1cm4gdGhpcy5wYXJlbnQuY2hpbGRyZW47CiAgfSwg
ImdldFBhcmVudEluZGV4IjogZnVuY3Rpb24gKCkKICB7CiAgICByZXR1cm4gZG9qby5sYW5nLmlu
ZGV4T2YodGhpcy5nZXRTaWJsaW5ncygpLCB0aGlzLCB0cnVlKTsKICB9LCAiZ2V0TmV4dFNpYmxp
bmciOiBmdW5jdGlvbiAoKQogIHsKICAgIHZhciBpZHggPSB0aGlzLmdldFBhcmVudEluZGV4KCk7
CiAgICBpZiAoaWR4ID09IHRoaXMuZ2V0U2libGluZ3MoKS5sZW5ndGgtMSkKICAgICAgewogICAg
ICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICBpZiAoaWR4IDwgMCkKICAgICAgewogICAgICAg
IHJldHVybiBudWxsOwogICAgICB9CiAgICByZXR1cm4gdGhpcy5nZXRTaWJsaW5ncygpW2lkeCsx
XTsKICB9IH0pOwogIGRvam8ud2lkZ2V0LmxjQXJnc0NhY2hlID0geyB9OwogIGRvam8ud2lkZ2V0
LnRhZ3MgPSB7IH07CiAgZG9qby53aWRnZXQudGFncy5hZGRQYXJzZVRyZWVIYW5kbGVyID0gZnVu
Y3Rpb24gKHQpCiAgewogICAgdmFyIHR5cGUgPSB0LnRvTG93ZXJDYXNlKCk7CiAgICB0aGlzW3R5
cGVdID0gZnVuY3Rpb24gKGZyYWcsIF8yYjAsIF8yYjEsIF8yYjIsIF8yYjMpCiAgICB7CiAgICB2
YXIgXzJiNCA9IHR5cGUuc3BsaXQoIjoiKTsKICAgIF8yYjQgPSAoXzJiNC5sZW5ndGggPT0gMikg
PyBfMmI0WzFdIDogdHlwZTsKICAgIHZhciBfMmI1ID0gXzJiMyB8fCBfMmIwLnBhcnNlUHJvcGVy
dGllcyhmcmFnWyJkb2pvOiIrXzJiNF0pOwogICAgdmFyIF8yYjYgPSBkb2pvLndpZGdldC5tYW5h
Z2VyLmdldEltcGxlbWVudGF0aW9uKF8yYjQpOwogICAgaWYgKCFfMmI2KQogICAgICB7CiAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZmluZCBcIiIrXzJiNCsiXCIgd2lkZ2V0Iik7CiAg
ICAgIH0KICAgIGVsc2UKICAgICAgewogICAgICAgIGlmICghXzJiNi5jcmVhdGUpCiAgICAgICAg
ICB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiXCIiK18yYjQrIlwiIHdpZGdldCBvYmpl
Y3QgZG9lcyBub3QgYXBwZWFyIHRvIGltcGxlbWVudCAqV2lkZ2V0Iik7CiAgICAgICAgICB9CiAg
ICAgIH0KICAgIF8yYjVbImRvam9pbnNlcnRpb25pbmRleCJdID0gXzJiMjsKICAgIHZhciByZXQg
PSBfMmI2LmNyZWF0ZShfMmI1LCBmcmFnLCBfMmIxKTsKICAgIHJldHVybiByZXQ7CiAgICB9Owog
IH07CiAgZG9qby53aWRnZXQudGFncy5hZGRQYXJzZVRyZWVIYW5kbGVyKCJkb2pvOndpZGdldCIp
OwogIGRvam8ud2lkZ2V0LnRhZ3NbImRvam86cHJvcGVydHlzZXQiXSA9IGZ1bmN0aW9uIChfMmE2
LCBfMmE3LCBfMmE4KQogIHsKICAgIHZhciBfMmE5ID0gXzJhNy5wYXJzZVByb3BlcnRpZXMoXzJh
NlsiZG9qbzpwcm9wZXJ0eXNldCJdKTsKICB9OwogIGRvam8ud2lkZ2V0LnRhZ3NbImRvam86Y29u
bmVjdCJdID0gZnVuY3Rpb24gKF8yYWEsIF8yYWIsIF8yYWMpCiAgewogICAgdmFyIF8yYWQgPSBf
MmFiLnBhcnNlUHJvcGVydGllcyhfMmFhWyJkb2pvOmNvbm5lY3QiXSk7CiAgfTsKICBkb2pvLndp
ZGdldC5kZWZpbmVXaWRnZXQgPSBmdW5jdGlvbiAoXzJiOCwgXzJiOSwgXzJiYSwgXzJiYiwgY3Rv
cikKICB7CiAgICB2YXIgXzJiZCA9IF8yYjguc3BsaXQoIi4iKTsKICAgIHZhciB0eXBlID0gXzJi
ZC5wb3AoKTsKICAgIGlmIChfMmJiKQogICAgICB7CiAgICAgICAgd2hpbGUgKChfMmJkLmxlbmd0
aCkgJiYgKF8yYmQucG9wKCkgIT0gXzJiYikpCiAgICAgICAgICB7CiAgICAgICAgICB9CiAgICAg
IH0KICAgIF8yYmQgPSBfMmJkLmpvaW4oIi4iKTsKICAgIGRvam8ud2lkZ2V0Lm1hbmFnZXIucmVn
aXN0ZXJXaWRnZXRQYWNrYWdlKF8yYmQpOwogICAgZG9qby53aWRnZXQudGFncy5hZGRQYXJzZVRy
ZWVIYW5kbGVyKCJkb2pvOiIrdHlwZS50b0xvd2VyQ2FzZSgpKTsKICAgIGlmICghXzJiYSkKICAg
ICAgewogICAgICAgIF8yYmEgPSB7IH07CiAgICAgIH0KICAgIF8yYmEud2lkZ2V0VHlwZSA9IHR5
cGU7CiAgICBpZiAoKCFjdG9yKSAmJiAoXzJiYVsiY2xhc3NDb25zdHJ1Y3RvciJdKSkKICAgICAg
ewogICAgICAgIGN0b3IgPSBfMmJhLmNsYXNzQ29uc3RydWN0b3I7CiAgICAgICAgZGVsZXRlIF8y
YmEuY2xhc3NDb25zdHJ1Y3RvcjsKICAgICAgfQogICAgZG9qby5kZWNsYXJlKF8yYjgsIF8yYjks
IF8yYmEsIGN0b3IpOwogIH07CiAgZG9qby53aWRnZXQuUGFyc2UgPSBmdW5jdGlvbiAoXzJiZikK
ICB7CiAgICB0aGlzLnByb3BlcnR5U2V0c0xpc3QgPSBbXTsKICAgIHRoaXMuZnJhZ21lbnQgPSBf
MmJmOwogICAgdGhpcy5jcmVhdGVDb21wb25lbnRzID0gZnVuY3Rpb24gKGZyYWcsIF8yYzEpCiAg
ICB7CiAgICAgIHZhciBfMmMyID0gW107CiAgICAgIHZhciBfMmMzID0gZmFsc2U7dHJ5IAogICAg
ICB7CiAgICAgICAgaWYgKGZyYWcgJiYgKGZyYWdbInRhZ05hbWUiXSkgJiYgKGZyYWcgIT0gZnJh
Z1sibm9kZVJlZiJdKSkKICAgICAgICAgIHsKICAgICAgICAgICAgdmFyIF8yYzQgPSBkb2pvLndp
ZGdldC50YWdzOwogICAgICAgICAgICB2YXIgdG5hID0gU3RyaW5nKGZyYWdbInRhZ05hbWUiXSku
c3BsaXQoIjsiKTsKICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IHRuYS5sZW5ndGg7IHgrKykK
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgbHRuID0gKHRuYVt4XS5yZXBsYWNl
KC9eXHMrfFxzKyQvZywgIiIpKS50b0xvd2VyQ2FzZSgpOwogICAgICAgICAgICAgICAgaWYgKF8y
YzRbbHRuXSkKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIF8yYzMgPSB0
cnVlOwogICAgICAgICAgICAgICAgICAgIGZyYWcudGFnTmFtZSA9IGx0bjsKICAgICAgICAgICAg
ICAgICAgICB2YXIgcmV0ID0gXzJjNFtsdG5dKGZyYWcsIHRoaXMsIF8yYzEsIGZyYWdbImluZGV4
Il0pOwogICAgICAgICAgICAgICAgICAgIF8yYzIucHVzaChyZXQpOwogICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICAgIGNhdGNoIChlKQog
ICAgICB7CiAgICAgIH0KICAgICAgaWYgKCFfMmMzKQogICAgICAgIHsKICAgICAgICAgIF8yYzIg
PSBfMmMyLmNvbmNhdCh0aGlzLmNyZWF0ZVN1YkNvbXBvbmVudHMoZnJhZywgXzJjMSkpOwogICAg
ICAgIH0KICAgICAgcmV0dXJuIF8yYzI7CiAgICB9OwogICAgdGhpcy5jcmVhdGVTdWJDb21wb25l
bnRzID0gZnVuY3Rpb24gKF8yYzksIF8yY2EpCiAgICB7CiAgICAgIHZhciBmcmFnLCBjb21wcyA9
IFtdOwogICAgICBmb3IgKHZhciBpdGVtIGluIF8yYzkpCiAgICAgICAgewogICAgICAgICAgZnJh
ZyA9IF8yYzlbaXRlbV07CiAgICAgICAgICBpZiAoZnJhZyAmJiAodHlwZW9mIGZyYWcgPT0gIm9i
amVjdCIpICYmIChmcmFnICE9IF8yYzkubm9kZVJlZikgJiYgKGZyYWcgIT0gXzJjOVsidGFnTmFt
ZSJdKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIGNvbXBzID0gY29tcHMuY29uY2F0KHRo
aXMuY3JlYXRlQ29tcG9uZW50cyhmcmFnLCBfMmNhKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9
CiAgICAgIHJldHVybiBjb21wczsKICAgIH07CiAgICB0aGlzLnBhcnNlUHJvcGVydHlTZXRzID0g
ZnVuY3Rpb24gKF8yY2QpCiAgICB7CiAgICAgIHJldHVybiBbXTsKICAgICAgdmFyIF8yY2UgPSBb
XTsKICAgICAgZm9yICh2YXIgaXRlbSBpbiBfMmNkKQogICAgICAgIHsKICAgICAgICAgIGlmICgo
XzJjZFtpdGVtXVsidGFnTmFtZSJdID09ICJkb2pvOnByb3BlcnR5c2V0IikpCiAgICAgICAgICAg
IHsKICAgICAgICAgICAgICBfMmNlLnB1c2goXzJjZFtpdGVtXSk7CiAgICAgICAgICAgIH0KICAg
ICAgICB9CiAgICAgIHRoaXMucHJvcGVydHlTZXRzTGlzdC5wdXNoKF8yY2UpOwogICAgICByZXR1
cm4gXzJjZTsKICAgIH07CiAgICB0aGlzLnBhcnNlUHJvcGVydGllcyA9IGZ1bmN0aW9uIChfMmQw
KQogICAgewogICAgICB2YXIgXzJkMSA9IHsgfTsKICAgICAgZm9yICh2YXIgaXRlbSBpbiBfMmQw
KQogICAgICAgIHsKICAgICAgICAgIGlmICgoXzJkMFtpdGVtXSA9PSBfMmQwWyJ0YWdOYW1lIl0p
IHx8IChfMmQwW2l0ZW1dID09IF8yZDAubm9kZVJlZikpCiAgICAgICAgICAgIHsKICAgICAgICAg
ICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKChfMmQw
W2l0ZW1dWyJ0YWdOYW1lIl0pICYmIChkb2pvLndpZGdldC50YWdzW18yZDBbaXRlbV0udGFnTmFt
ZS50b0xvd2VyQ2FzZSgpXSkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBpZiAo
KF8yZDBbaXRlbV1bMF0pICYmIChfMmQwW2l0ZW1dWzBdLnZhbHVlICE9ICIiKSAmJiAoXzJkMFtp
dGVtXVswXS52YWx1ZSAhPSBudWxsKSkKICAgICAgICAgICAgICAgICAgICB7dHJ5IAogICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbS50b0xvd2Vy
Q2FzZSgpID09ICJkYXRhcHJvdmlkZXIiKQogICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfMmQzID0gdGhpczsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXMuZ2V0RGF0YVByb3ZpZGVyKF8yZDMsIF8yZDBbaXRlbV1bMF0udmFs
dWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgXzJkMS5kYXRhUHJvdmlkZXIgPSB0aGlz
LmRhdGFQcm92aWRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgIF8yZDFbaXRlbV0gPSBfMmQwW2l0ZW1dWzBdLnZhbHVlOwogICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgXzJkNCA9IHRoaXMucGFyc2VQcm9wZXJ0aWVzKF8yZDBbaXRlbV0pOwog
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfMmQ1IGluIF8yZDQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgXzJkMVtfMmQ1XSA9
IF8yZDRbXzJkNV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpCiAgICAgICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICByZXR1cm4gXzJkMTsK
ICAgIH07CiAgICB0aGlzLmdldERhdGFQcm92aWRlciA9IGZ1bmN0aW9uIChfMmQ2LCBfMmQ3KQog
ICAgewogICAgfTsKICAgIHRoaXMuZ2V0UHJvcGVydHlTZXRCeUlkID0gZnVuY3Rpb24gKF8yZGEp
CiAgICB7CiAgICAgIGZvciAoeCA9IDA7IHggPCB0aGlzLnByb3BlcnR5U2V0c0xpc3QubGVuZ3Ro
OyB4KyspCiAgICAgICAgewogICAgICAgICAgaWYgKF8yZGEgPT0gdGhpcy5wcm9wZXJ0eVNldHNM
aXN0W3hdWyJpZCJdWzBdLnZhbHVlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMucHJvcGVydHlTZXRzTGlzdFt4XTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAg
cmV0dXJuICIiOwogICAgfTsKICAgIHRoaXMuZ2V0UHJvcGVydHlTZXRzQnlUeXBlID0gZnVuY3Rp
b24gKF8yZGMpCiAgICB7CiAgICAgIHZhciBfMmRkID0gW107CiAgICAgIGZvciAoeCA9IDA7IHgg
PCB0aGlzLnByb3BlcnR5U2V0c0xpc3QubGVuZ3RoOyB4KyspCiAgICAgICAgewogICAgICAgICAg
dmFyIGNwbCA9IHRoaXMucHJvcGVydHlTZXRzTGlzdFt4XTsKICAgICAgICAgIHZhciBjcGNjID0g
Y3BsWyJjb21wb25lbnRDbGFzcyJdIHx8IGNwbFsiY29tcG9uZW50VHlwZSJdIHx8IG51bGw7CiAg
ICAgICAgICBpZiAoY3BjYyAmJiAocHJvcGVydHlTZXRJZCA9PSBjcGNjWzBdLnZhbHVlKSkKICAg
ICAgICAgICAgewogICAgICAgICAgICAgIF8yZGQucHVzaChjcGwpOwogICAgICAgICAgICB9CiAg
ICAgICAgfQogICAgICByZXR1cm4gXzJkZDsKICAgIH07CiAgICB0aGlzLmdldFByb3BlcnR5U2V0
cyA9IGZ1bmN0aW9uIChfMmUxKQogICAgewogICAgICB2YXIgcHBsID0gImRvam86cHJvcGVydHlw
cm92aWRlcmxpc3QiOwogICAgICB2YXIgXzJlMyA9IFtdOwogICAgICB2YXIgXzJlNCA9IF8yZTFb
InRhZ05hbWUiXTsKICAgICAgaWYgKF8yZTFbcHBsXSkKICAgICAgICB7CiAgICAgICAgICB2YXIg
XzJlNSA9IF8yZTFbcHBsXS52YWx1ZS5zcGxpdCgiICIpOwogICAgICAgICAgZm9yICh2YXIgXzJl
NiBpbiBfMmU1KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKChfMmU2LmluZGV4T2Yo
Ii4uIikgPT0gLTEpICYmIChfMmU2LmluZGV4T2YoIjovLyIpID09IC0xKSkKICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgdmFyIF8yZTcgPSB0aGlzLmdldFByb3BlcnR5U2V0QnlJ
ZChfMmU2KTsKICAgICAgICAgICAgICAgICAgaWYgKF8yZTcgIT0gIiIpCiAgICAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICAgXzJlMy5wdXNoKF8yZTcpOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAg
IHJldHVybiAodGhpcy5nZXRQcm9wZXJ0eVNldHNCeVR5cGUoXzJlNCkpLmNvbmNhdChfMmUzKTsK
ICAgIH07CiAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudEZyb21TY3JpcHQgPSBmdW5jdGlvbiAoXzJl
OCwgXzJlOSwgXzJlYSkKICAgIHsKICAgICAgdmFyIGx0biA9ICJkb2pvOiIrXzJlOS50b0xvd2Vy
Q2FzZSgpOwogICAgICBpZiAoZG9qby53aWRnZXQudGFnc1tsdG5dKQogICAgICAgIHsKICAgICAg
ICAgIF8yZWEuZmFzdE1peEluID0gdHJ1ZTsKICAgICAgICAgIHJldHVybiBbZG9qby53aWRnZXQu
dGFnc1tsdG5dKF8yZWEsIHRoaXMsIG51bGwsIG51bGwsIF8yZWEpXTsKICAgICAgICB9CiAgICB9
OwogIH07CiAgZG9qby53aWRnZXQuX3BhcnNlcl9jb2xsZWN0aW9uID0geyAiZG9qbyI6IG5ldyBk
b2pvLndpZGdldC5QYXJzZSgpIH07CiAgZG9qby53aWRnZXQuZ2V0UGFyc2VyID0gZnVuY3Rpb24g
KG5hbWUpCiAgewogICAgaWYgKCFuYW1lKQogICAgICB7CiAgICAgICAgbmFtZSA9ICJkb2pvIjsK
ICAgICAgfQogICAgaWYgKCF0aGlzLl9wYXJzZXJfY29sbGVjdGlvbltuYW1lXSkKICAgICAgewog
ICAgICAgIHRoaXMuX3BhcnNlcl9jb2xsZWN0aW9uW25hbWVdID0gbmV3IGRvam8ud2lkZ2V0LlBh
cnNlKCk7CiAgICAgIH0KICAgIHJldHVybiB0aGlzLl9wYXJzZXJfY29sbGVjdGlvbltuYW1lXTsK
ICB9OwogIGRvam8ud2lkZ2V0LmNyZWF0ZVdpZGdldCA9IGZ1bmN0aW9uIChuYW1lLCBfMmVlLCBf
MmVmLCBfMmYwKQogIHsKICAgIHZhciBfMmYxID0gbmFtZS50b0xvd2VyQ2FzZSgpOwogICAgdmFy
IF8yZjIgPSAiZG9qbzoiK18yZjE7CiAgICB2YXIgXzJmMyA9IChkb2pvLmJ5SWQobmFtZSkgJiYg
KCFkb2pvLndpZGdldC50YWdzW18yZjJdKSk7CiAgICBpZiAoKGFyZ3VtZW50cy5sZW5ndGggPT0g
MSkgJiYgKCh0eXBlb2YgbmFtZSAhPSAic3RyaW5nIikgfHwgXzJmMykpCiAgICAgIHsKICAgICAg
ICB2YXIgeHAgPSBuZXcgZG9qby54bWwuUGFyc2UoKTsKICAgICAgICB2YXIgdG4gPSBfMmYzID8g
ZG9qby5ieUlkKG5hbWUpIDogbmFtZTsKICAgICAgICByZXR1cm4gZG9qby53aWRnZXQuZ2V0UGFy
c2VyKCkuY3JlYXRlQ29tcG9uZW50cyh4cC5wYXJzZUVsZW1lbnQodG4sIG51bGwsIHRydWUpKVsw
XTsKICAgICAgfQogICAgZnVuY3Rpb24gZnJvbVNjcmlwdChfMmY2LCBuYW1lLCBfMmY4KQogICAg
ewogICAgICBfMmY4W18yZjJdID0geyAiZG9qb3R5cGUiOiBbeyAidmFsdWUiOiBfMmYxIH1dLCAi
bm9kZVJlZiI6IF8yZjYsICJmYXN0TWl4SW4iOiB0cnVlIH07CiAgICAgIHJldHVybiBkb2pvLndp
ZGdldC5nZXRQYXJzZXIoKS5jcmVhdGVDb21wb25lbnRGcm9tU2NyaXB0KF8yZjYsIG5hbWUsIF8y
ZjgsIHRydWUpOwogICAgfQogICAgaWYgKHR5cGVvZiBuYW1lICE9ICJzdHJpbmciICYmIHR5cGVv
ZiBfMmVlID09ICJzdHJpbmciKQogICAgICB7CiAgICAgICAgZG9qby5kZXByZWNhdGVkKCJkb2pv
LndpZGdldC5jcmVhdGVXaWRnZXQiLCAiYXJndW1lbnQgb3JkZXIgaXMgbm93IG9mIHRoZSBmb3Jt
ICIrImRvam8ud2lkZ2V0LmNyZWF0ZVdpZGdldChOQU1FLCBbUFJPUEVSVElFUywgW1JFRkVSRU5D
RU5PREUsIFtQT1NJVElPTl1dXSkiLCAiMC40Iik7CiAgICAgICAgcmV0dXJuIGZyb21TY3JpcHQo
bmFtZSwgXzJlZSwgXzJlZik7CiAgICAgIH0KICAgIF8yZWUgPSBfMmVlIHx8IHsgfTsKICAgIHZh
ciBfMmY5ID0gZmFsc2U7CiAgICB2YXIgdG4gPSBudWxsOwogICAgdmFyIGggPSB0cnVlOwogICAg
aWYgKGgpCiAgICAgIHsKICAgICAgICB0biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKICAgICAgfQogICAgaWYgKCFfMmVmKQogICAgICB7CiAgICAgICAgXzJmOSA9IHRydWU7CiAg
ICAgICAgXzJlZiA9IHRuOwogICAgICAgIGlmIChoKQogICAgICAgICAgewogICAgICAgICAgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKF8yZWYpOwogICAgICAgICAgfQogICAgICB9CiAgICBl
bHNlCiAgICAgIHsKICAgICAgICAgICAgdG4gPSBfMmVmOwogICAgICB9CiAgICB2YXIgXzJmYiA9
IGZyb21TY3JpcHQodG4sIG5hbWUsIF8yZWUpOwogICAgaWYgKCFfMmZiWzBdIHx8IHR5cGVvZiBf
MmZiWzBdLndpZGdldFR5cGUgPT0gInVuZGVmaW5lZCIpCiAgICAgIHsKICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoImNyZWF0ZVdpZGdldDogQ3JlYXRpb24gb2YgXCIiK25hbWUrIlwiIHdpZGdldCBm
YWlsZWQuIik7CiAgICAgIH0KICAgIGlmIChfMmY5KQogICAgICB7CiAgICAgICAgaWYgKF8yZmJb
MF0uZG9tTm9kZS5wYXJlbnROb2RlKQogICAgICAgICAgewogICAgICAgICAgICBfMmZiWzBdLmRv
bU5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChfMmZiWzBdLmRvbU5vZGUpOwogICAgICAgICAg
fQogICAgICB9CiAgICByZXR1cm4gXzJmYlswXTsKICB9OwogIGRvam8udXJpID0gbmV3IGZ1bmN0
aW9uICgpCiAgewogICAgdGhpcy5qb2luUGF0aCA9IGZ1bmN0aW9uICgpCiAgICB7CiAgICAgIHZh
ciBhcnIgPSBbXTsKICAgICAgZm9yIChpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykK
ICAgICAgICB7CiAgICAgICAgICBhcnIucHVzaChhcmd1bWVudHNbaV0pOwogICAgICAgIH0KICAg
ICAgcmV0dXJuIGFyci5qb2luKCIvIikucmVwbGFjZSgvXC97Mix9L2csICIvIikucmVwbGFjZSgv
KChodHRwcyp8ZnRwcyopOikvaSwgIiQxLyIpOwogICAgfTsKICAgIHRoaXMuZG9qb1VyaSA9IGZ1
bmN0aW9uICh1cmkpCiAgICB7CiAgICAgIHJldHVybiBuZXcgZG9qby51cmkuVXJpKCIuLyIsIHVy
aSk7CiAgICB9OwogICAgdGhpcy5VcmkgPSBmdW5jdGlvbiAoKQogICAgewogICAgICB2YXIgdXJp
ID0gYXJndW1lbnRzWzBdOwogICAgICBmb3IgKGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsg
aSsrKQogICAgICAgIHsKICAgICAgICAgIGlmICghYXJndW1lbnRzW2ldKQogICAgICAgICAgICB7
CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgIHZhciBfMzA1
ID0gbmV3IGRvam8udXJpLlVyaShhcmd1bWVudHNbaV0udG9TdHJpbmcoKSk7CiAgICAgICAgICB2
YXIgXzMwNiA9IG5ldyBkb2pvLnVyaS5VcmkodXJpLnRvU3RyaW5nKCkpOwogICAgICAgICAgaWYg
KF8zMDUucGF0aCA9PSAiIiAmJiBfMzA1LnNjaGVtZSA9PSBudWxsICYmIF8zMDUuYXV0aG9yaXR5
ID09IG51bGwgJiYgXzMwNS5xdWVyeSA9PSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgaWYgKF8zMDUuZnJhZ21lbnQgIT0gbnVsbCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgXzMwNi5mcmFnbWVudCA9IF8zMDUuZnJhZ21lbnQ7CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgXzMwNSA9IF8zMDY7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgewogICAgICAgICAgICAgIGlmIChfMzA1LnNjaGVtZSA9PSBudWxsKQogICAg
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICBfMzA1LnNjaGVtZSA9IF8zMDYuc2NoZW1l
OwogICAgICAgICAgICAgICAgICBpZiAoXzMwNS5hdXRob3JpdHkgPT0gbnVsbCkKICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICBfMzA1LmF1dGhvcml0eSA9IF8zMDYu
YXV0aG9yaXR5OwogICAgICAgICAgICAgICAgICAgICAgaWYgKF8zMDUucGF0aC5jaGFyQXQoMCkg
IT0gIi8iKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHBhdGggPSBfMzA2LnBhdGguc3Vic3RyaW5nKDAsIF8zMDYucGF0aC5sYXN0SW5kZXhP
ZigiLyIpKzEpK18zMDUucGF0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VncyA9
IHBhdGguc3BsaXQoIi8iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBq
IDwgc2Vncy5sZW5ndGg7IGorKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNlZ3Nbal0gPT0gIi4iKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChqID09IHNlZ3MubGVuZ3RoLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdzW2pdID0gIiI7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ3Muc3BsaWNlKGosIDEpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGotLTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqID4gMCAm
JiAhKGogPT0gMSAmJiBzZWdzWzBdID09ICIiKSAmJiBzZWdzW2pdID09ICIuLiIgJiYgc2Vnc1tq
LTFdICE9ICIuLiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA9PSBzZWdzLmxlbmd0aC0xKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdzLnNwbGljZShqLCAxKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vnc1tqLTFdID0gIiI7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdzLnNwbGljZShq
LTEsIDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqIC09IDI7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
XzMwNS5wYXRoID0gc2Vncy5qb2luKCIvIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAg
ICAgIHVyaSA9ICIiOwogICAgICAgICAgaWYgKF8zMDUuc2NoZW1lICE9IG51bGwpCiAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICB1cmkgKz0gXzMwNS5zY2hlbWUrIjoiOwogICAgICAgICAgICB9
CiAgICAgICAgICBpZiAoXzMwNS5hdXRob3JpdHkgIT0gbnVsbCkKICAgICAgICAgICAgewogICAg
ICAgICAgICAgIHVyaSArPSAiLy8iK18zMDUuYXV0aG9yaXR5OwogICAgICAgICAgICB9CiAgICAg
ICAgICB1cmkgKz0gXzMwNS5wYXRoOwogICAgICAgICAgaWYgKF8zMDUucXVlcnkgIT0gbnVsbCkK
ICAgICAgICAgICAgewogICAgICAgICAgICAgIHVyaSArPSAiPyIrXzMwNS5xdWVyeTsKICAgICAg
ICAgICAgfQogICAgICAgICAgaWYgKF8zMDUuZnJhZ21lbnQgIT0gbnVsbCkKICAgICAgICAgICAg
ewogICAgICAgICAgICAgIHVyaSArPSAiIyIrXzMwNS5mcmFnbWVudDsKICAgICAgICAgICAgfQog
ICAgICAgIH0KICAgICAgdGhpcy51cmkgPSB1cmkudG9TdHJpbmcoKTsKICAgICAgdmFyIF8zMGEg
PSAiXigoW146Lz8jXSspOik/KC8vKFteLz8jXSopKT8oW14/I10qKShcXD8oW14jXSopKT8oIygu
KikpPyQiOwogICAgICB2YXIgciA9IHRoaXMudXJpLm1hdGNoKG5ldyBSZWdFeHAoXzMwYSkpOwog
ICAgICB0aGlzLnNjaGVtZSA9IHJbMl0gfHwgKHJbMV0gPyAiIiA6IG51bGwpOwogICAgICB0aGlz
LmF1dGhvcml0eSA9IHJbNF0gfHwgKHJbM10gPyAiIiA6IG51bGwpOwogICAgICB0aGlzLnBhdGgg
PSByWzVdOwogICAgICB0aGlzLnF1ZXJ5ID0gcls3XSB8fCAocls2XSA/ICIiIDogbnVsbCk7CiAg
ICAgIHRoaXMuZnJhZ21lbnQgPSByWzldIHx8IChyWzhdID8gIiIgOiBudWxsKTsKICAgICAgaWYg
KHRoaXMuYXV0aG9yaXR5ICE9IG51bGwpCiAgICAgICAgewogICAgICAgICAgXzMwYSA9ICJeKCgo
W146XSs6KT8oW15AXSspKUApPyhbXjpdKikoOihbMC05XSspKT8kIjsKICAgICAgICAgIHIgPSB0
aGlzLmF1dGhvcml0eS5tYXRjaChuZXcgUmVnRXhwKF8zMGEpKTsKICAgICAgICAgIHRoaXMudXNl
ciA9IHJbM10gfHwgbnVsbDsKICAgICAgICAgIHRoaXMucGFzc3dvcmQgPSByWzRdIHx8IG51bGw7
CiAgICAgICAgICB0aGlzLmhvc3QgPSByWzVdOwogICAgICAgICAgdGhpcy5wb3J0ID0gcls3XSB8
fCBudWxsOwogICAgICAgIH0KICAgICAgdGhpcy50b1N0cmluZyA9IGZ1bmN0aW9uICgpCiAgICAg
IHsKICAgICAgICByZXR1cm4gdGhpcy51cmk7CiAgICAgIH07CiAgICB9OwogIH07CiAgZG9qby53
aWRnZXQuX2Nzc0ZpbGVzID0geyB9OwogIGRvam8ud2lkZ2V0Ll9jc3NTdHJpbmdzID0geyB9Owog
IGRvam8ud2lkZ2V0Ll90ZW1wbGF0ZUNhY2hlID0geyB9OwogIGRvam8ud2lkZ2V0LmRlZmF1bHRT
dHJpbmdzID0geyAiZG9qb1Jvb3QiOiAiLi8iLCAiYmFzZVNjcmlwdFVyaSI6ICIuLyIgfTsKICBk
b2pvLndpZGdldC5maWxsRnJvbVRlbXBsYXRlQ2FjaGUgPSBmdW5jdGlvbiAob2JqLCBfMzBkLCBf
MzBlLCBfMzBmLCBfMzEwKQogIHsKICAgIHZhciBfMzEzID0gZG9qby53aWRnZXQuX3RlbXBsYXRl
Q2FjaGU7CiAgICB2YXIgd3QgPSBvYmoud2lkZ2V0VHlwZTsKICAgIHZhciB0cyA9IF8zMTNbd3Rd
OwogICAgaWYgKCF0cykKICAgICAgewogICAgICAgIF8zMTNbd3RdID0geyAic3RyaW5nIjogbnVs
bCwgIm5vZGUiOiBudWxsIH07CiAgICAgICAgaWYgKF8zMTApCiAgICAgICAgICB7CiAgICAgICAg
ICAgIHRzID0geyB9OwogICAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAg
ICAgICAgdHMgPSBfMzEzW3d0XTsKICAgICAgICAgIH0KICAgICAgfQogICAgaWYgKCghb2JqLnRl
bXBsYXRlTm9kZSkgJiYgKCFfMzEwKSkKICAgICAgewogICAgICAgIG9iai50ZW1wbGF0ZU5vZGUg
PSB0c1sibm9kZSJdOwogICAgICB9CiAgICBpZiAoKCF0c1sic3RyaW5nIl0pICYmICghXzMxMCkp
CiAgICAgIHsKICAgICAgICB0cy5zdHJpbmcgPSBvYmoudGVtcGxhdGVTdHJpbmc7CiAgICAgIH0K
ICB9OwogIGRvam8ud2lkZ2V0Ll90ZW1wbGF0ZUNhY2hlLmR1bW15Q291bnQgPSAwOwogIGRvam8u
d2lkZ2V0LmF0dGFjaFByb3BlcnRpZXMgPSBbImRvam9BdHRhY2hQb2ludCIsImlkIl07CiAgZG9q
by53aWRnZXQuZXZlbnRBdHRhY2hQcm9wZXJ0eSA9ICJkb2pvQXR0YWNoRXZlbnQiOwogIGRvam8u
d2lkZ2V0Lm9uQnVpbGRQcm9wZXJ0eSA9ICJkb2pvT25CdWlsZCI7CiAgZG9qby53aWRnZXQud2Fp
TmFtZXMgPSBbIndhaVJvbGUiLCJ3YWlTdGF0ZSJdOwogIGRvam8ud2lkZ2V0LndhaSA9IHsgIndh
aVJvbGUiOiB7ICJuYW1lIjogIndhaVJvbGUiLCAibmFtZXNwYWNlIjogImh0dHA6Ly93d3cudzMu
b3JnL1RSL3hodG1sMiIsICJhbGlhcyI6ICJ4MiIsICJwcmVmaXgiOiAid2Fpcm9sZToiLCAibnNO
YW1lIjogInJvbGUiIH0sICJ3YWlTdGF0ZSI6IHsgIm5hbWUiOiAid2FpU3RhdGUiLCAibmFtZXNw
YWNlIjogImh0dHA6Ly93d3cudzMub3JnLzIwMDUvMDcvYWFhIiwgImFsaWFzIjogImFhYSIsICJw
cmVmaXgiOiAiIiwgIm5zTmFtZSI6ICJzdGF0ZSIgfSwgInNldEF0dHIiOiBmdW5jdGlvbiAobm9k
ZSwgYXR0ciwgXzMxYikKICB7CiAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyh0aGlzW2F0dHJd
Lm5hbWVzcGFjZSwgdGhpc1thdHRyXS5uc05hbWUsIHRoaXNbYXR0cl0ucHJlZml4K18zMWIpOwog
IH0gfTsKICBkb2pvLndpZGdldC5hdHRhY2hUZW1wbGF0ZU5vZGVzID0gZnVuY3Rpb24gKF8zMWMs
IF8zMWQsIF8zMWUpCiAgewogICAgdmFyIF8zMWYgPSBkb2pvLmRvbS5FTEVNRU5UX05PREU7CiAg
ICBmdW5jdGlvbiB0cmltKHN0cikKICAgIHsKICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eXHMr
fFxzKyQvZywgIiIpOwogICAgfQogICAgaWYgKCFfMzFjKQogICAgICB7CiAgICAgICAgXzMxYyA9
IF8zMWQuZG9tTm9kZTsKICAgICAgfQogICAgaWYgKF8zMWMubm9kZVR5cGUgIT0gXzMxZikKICAg
ICAgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgdmFyIF8zMjEgPSBfMzFjLmFsbCB8fCBf
MzFjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik7CiAgICB2YXIgXzMyMiA9IF8zMWQ7CiAgICBm
b3IgKHggPSAtMTsgeCA8IF8zMjEubGVuZ3RoOyB4KyspCiAgICAgIHsKICAgICAgICB2YXIgXzMy
NCA9ICh4ID09IC0xKSA/IF8zMWMgOiBfMzIxW3hdOwogICAgICAgIHZhciBfMzI1ID0gW107CiAg
ICAgICAgZm9yICh5ID0gMDsgeSA8IHRoaXMuYXR0YWNoUHJvcGVydGllcy5sZW5ndGg7IHkrKykK
ICAgICAgICAgIHsKICAgICAgICAgICAgdmFyIF8zMjcgPSBfMzI0LmdldEF0dHJpYnV0ZSh0aGlz
LmF0dGFjaFByb3BlcnRpZXNbeV0pOwogICAgICAgICAgICBpZiAoXzMyNykKICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICBfMzI1ID0gXzMyNy5zcGxpdCgiOyIpOwogICAgICAgICAgICAg
ICAgZm9yICh6ID0gMDsgeiA8IF8zMjUubGVuZ3RoOyB6KyspCiAgICAgICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgXzMxZFtfMzI1W3pdXSA9IF8zMjQ7CiAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICAgICAg
IH0KICAgICAgICBkb2pvLmxhbmcuZm9yRWFjaChkb2pvLndpZGdldC53YWlOYW1lcywgZnVuY3Rp
b24gKG5hbWUpCiAgICAgICAgewogICAgICAgICAgdmFyIHdhaSA9IGRvam8ud2lkZ2V0LndhaVtu
YW1lXTsKICAgICAgICAgIHZhciB2YWwgPSBfMzI0LmdldEF0dHJpYnV0ZSh3YWkubmFtZSk7CiAg
ICAgICAgICBpZiAodmFsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgZG9qby53aWRnZXQu
d2FpLnNldEF0dHIoXzMyNCwgd2FpLm5hbWUsIHZhbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9
LCB0aGlzKTsKICAgICAgICB2YXIgXzMzYSA9IF8zMjQuZ2V0QXR0cmlidXRlKHRoaXMub25CdWls
ZFByb3BlcnR5KTsKICAgICAgICBpZiAoXzMzYSkKICAgICAgICAgIHsKICAgICAgICAgICAgZXZh
bCgidmFyIG5vZGUgPSBiYXNlTm9kZTsgdmFyIHdpZGdldCA9IHRhcmdldE9iajsgIitfMzNhKTsK
ICAgICAgICAgIH0KICAgICAgfQogIH07CiAgZG9qby5kZWNsYXJlKCJkb2pvLndpZGdldC5Eb21X
aWRnZXQiLCBkb2pvLndpZGdldC5XaWRnZXQsIHsgImluaXRpYWxpemVyIjogZnVuY3Rpb24gKCkK
ICB7CiAgICBpZiAoKGFyZ3VtZW50cy5sZW5ndGggPiAwKSAmJiAodHlwZW9mIGFyZ3VtZW50c1sw
XSA9PSAib2JqZWN0IikpCiAgICAgIHsKICAgICAgICB0aGlzLmNyZWF0ZShhcmd1bWVudHNbMF0p
OwogICAgICB9CiAgfSwgInRlbXBsYXRlTm9kZSI6IG51bGwsICJ0ZW1wbGF0ZVN0cmluZyI6IG51
bGwsICJ0ZW1wbGF0ZUNzc1N0cmluZyI6IG51bGwsICJwcmV2ZW50Q2xvYmJlciI6IGZhbHNlLCAi
ZG9tTm9kZSI6IG51bGwsICJjb250YWluZXJOb2RlIjogbnVsbCwgImFkZENoaWxkIjogZnVuY3Rp
b24gKF8zNDIsIF8zNDMsIHBvcywgcmVmLCBfMzQ2KQogIHsKICAgIGlmICghdGhpcy5pc0NvbnRh
aW5lcikKICAgICAgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgICBlbHNlCiAgICAg
IHsKICAgICAgICB0aGlzLmFkZFdpZGdldEFzRGlyZWN0Q2hpbGQoXzM0MiwgXzM0MywgcG9zLCBy
ZWYsIF8zNDYpOwogICAgICAgIHRoaXMucmVnaXN0ZXJDaGlsZChfMzQyLCBfMzQ2KTsKICAgICAg
fQogICAgcmV0dXJuIF8zNDI7CiAgfSwgImFkZFdpZGdldEFzRGlyZWN0Q2hpbGQiOiBmdW5jdGlv
biAoXzM0NywgXzM0OCwgcG9zLCByZWYsIF8zNGIpCiAgewogICAgaWYgKCghdGhpcy5jb250YWlu
ZXJOb2RlKSAmJiAoIV8zNDgpKQogICAgICB7CiAgICAgICAgdGhpcy5jb250YWluZXJOb2RlID0g
dGhpcy5kb21Ob2RlOwogICAgICB9CiAgICB2YXIgY24gPSBfMzQ4ID8gXzM0OCA6IHRoaXMuY29u
dGFpbmVyTm9kZTsKICAgIGlmICghcG9zKQogICAgICB7CiAgICAgICAgcG9zID0gImFmdGVyIjsK
ICAgICAgfQogICAgaWYgKCFyZWYpCiAgICAgIHsKICAgICAgICBpZiAoIWNuKQogICAgICAgICAg
ewogICAgICAgICAgICBjbiA9IGRvY3VtZW50LmJvZHk7CiAgICAgICAgICB9CiAgICAgICAgcmVm
ID0gY24ubGFzdENoaWxkOwogICAgICB9CiAgICBpZiAoIV8zNGIpCiAgICAgIHsKICAgICAgICBf
MzRiID0gMDsKICAgICAgfQogICAgXzM0Ny5kb21Ob2RlLnNldEF0dHJpYnV0ZSgiZG9qb2luc2Vy
dGlvbmluZGV4IiwgXzM0Yik7CiAgICBpZiAoIXJlZikKICAgICAgewogICAgICAgIGNuLmFwcGVu
ZENoaWxkKF8zNDcuZG9tTm9kZSk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewogICAgICAgICAg
ICAgICAgY24uYXBwZW5kQ2hpbGQoXzM0Ny5kb21Ob2RlKTsKICAgICAgfQogIH0sICJyZWdpc3Rl
ckNoaWxkIjogZnVuY3Rpb24gKF8zNGQsIF8zNGUpCiAgewogICAgXzM0ZC5kb2pvSW5zZXJ0aW9u
SW5kZXggPSBfMzRlOwogICAgdmFyIGlkeCA9IC0xOwogICAgZm9yIChpID0gMDsgaSA8IHRoaXMu
Y2hpbGRyZW4ubGVuZ3RoOyBpKyspCiAgICAgIHsKICAgICAgICBpZiAodGhpcy5jaGlsZHJlbltp
XS5kb2pvSW5zZXJ0aW9uSW5kZXggPCBfMzRlKQogICAgICAgICAgewogICAgICAgICAgICBpZHgg
PSBpOwogICAgICAgICAgfQogICAgICB9CiAgICB0aGlzLmNoaWxkcmVuLnNwbGljZShpZHgrMSwg
MCwgXzM0ZCk7CiAgICBfMzRkLnBhcmVudCA9IHRoaXM7CiAgICBfMzRkLmFkZGVkVG8odGhpcyk7
CiAgICBkZWxldGUgZG9qby53aWRnZXQubWFuYWdlci50b3BXaWRnZXRzW18zNGQud2lkZ2V0SWRd
OwogIH0sICJyZW1vdmVDaGlsZCI6IGZ1bmN0aW9uIChfMzUxKQogIHsKICAgIHZhciBub2RlID0g
XzM1MS5kb21Ob2RlOwogICAgaWYgKG5vZGUgJiYgbm9kZS5wYXJlbnROb2RlKQogICAgICB7CiAg
ICAgICAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChub2RlKTsKICAgICAgfQog
ICAgcmV0dXJuIGRvam8ud2lkZ2V0LkRvbVdpZGdldC5zdXBlcmNsYXNzLnJlbW92ZUNoaWxkLmNh
bGwodGhpcywgXzM1MSk7CiAgfSwgImdldEZyYWdOb2RlUmVmIjogZnVuY3Rpb24gKGZyYWcpCiAg
ewogICAgcmV0dXJuIChmcmFnID8gZnJhZ1siZG9qbzoiK3RoaXMud2lkZ2V0VHlwZS50b0xvd2Vy
Q2FzZSgpXVsibm9kZVJlZiJdIDogbnVsbCk7CiAgfSwgInBvc3RJbml0aWFsaXplIjogZnVuY3Rp
b24gKGFyZ3MsIGZyYWcsIF8zNTUpCiAgewogICAgdmFyIF8zNTYgPSB0aGlzLmdldEZyYWdOb2Rl
UmVmKGZyYWcpOwogICAgaWYgKF8zNTUgJiYgKF8zNTUuc25hcmZDaGlsZERvbU91dHB1dCB8fCAh
XzM1NikpCiAgICAgIHsKICAgICAgICBfMzU1LmFkZFdpZGdldEFzRGlyZWN0Q2hpbGQodGhpcywg
IiIsICJpbnNlcnRBdEluZGV4IiwgIiIsIGFyZ3NbImRvam9pbnNlcnRpb25pbmRleCJdLCBfMzU2
KTsKICAgICAgfQogICAgZWxzZQogICAgICB7CiAgICAgICAgaWYgKF8zNTYpCiAgICAgICAgICB7
CiAgICAgICAgICAgIGlmICh0aGlzLmRvbU5vZGUgJiYgKHRoaXMuZG9tTm9kZSAhPT0gXzM1Nikp
CiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIF8zNTcgPSBfMzU2LnBhcmVudE5v
ZGUucmVwbGFjZUNoaWxkKHRoaXMuZG9tTm9kZSwgXzM1Nik7CiAgICAgICAgICAgICAgfQogICAg
ICAgICAgfQogICAgICB9CiAgICBpZiAoXzM1NSkKICAgICAgewogICAgICAgIF8zNTUucmVnaXN0
ZXJDaGlsZCh0aGlzLCBhcmdzLmRvam9pbnNlcnRpb25pbmRleCk7CiAgICAgIH0KICAgIGVsc2UK
ICAgICAgewogICAgICAgIGRvam8ud2lkZ2V0Lm1hbmFnZXIudG9wV2lkZ2V0c1t0aGlzLndpZGdl
dElkXSA9IHRoaXM7CiAgICAgIH0KICAgIGlmICh0aGlzLmlzQ29udGFpbmVyKQogICAgICB7CiAg
ICAgICAgdmFyIF8zNTggPSBkb2pvLndpZGdldC5nZXRQYXJzZXIoKTsKICAgICAgICBfMzU4LmNy
ZWF0ZVN1YkNvbXBvbmVudHMoZnJhZywgdGhpcyk7CiAgICAgIH0KICB9LCAiYnVpbGRSZW5kZXJp
bmciOiBmdW5jdGlvbiAoYXJncywgZnJhZykKICB7CiAgICB2YXIgdHMgPSBkb2pvLndpZGdldC5f
dGVtcGxhdGVDYWNoZVt0aGlzLndpZGdldFR5cGVdOwogICAgaWYgKCghdGhpcy5wcmV2ZW50Q2xv
YmJlcikgJiYgKCh0aGlzLnRlbXBsYXRlUGF0aCkgfHwgKHRoaXMudGVtcGxhdGVOb2RlKSB8fCAo
KHRoaXNbInRlbXBsYXRlU3RyaW5nIl0pICYmICh0aGlzLnRlbXBsYXRlU3RyaW5nLmxlbmd0aCkp
IHx8ICgodHlwZW9mIHRzICE9ICJ1bmRlZmluZWQiKSAmJiAoKHRzWyJzdHJpbmciXSkgfHwgKHRz
WyJub2RlIl0pKSkpKQogICAgICB7CiAgICAgICAgdGhpcy5idWlsZEZyb21UZW1wbGF0ZShhcmdz
LCBmcmFnKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CiAgICAgICAgdGhpcy5kb21Ob2RlID0g
dGhpcy5nZXRGcmFnTm9kZVJlZihmcmFnKTsKICAgICAgfQogICAgdGhpcy5maWxsSW5UZW1wbGF0
ZShhcmdzLCBmcmFnKTsKICB9LCAiYnVpbGRGcm9tVGVtcGxhdGUiOiBmdW5jdGlvbiAoYXJncywg
ZnJhZykKICB7CiAgICB2YXIgXzM1ZSA9IGZhbHNlOwogICAgZG9qby53aWRnZXQuZmlsbEZyb21U
ZW1wbGF0ZUNhY2hlKHRoaXMsIG51bGwsIG51bGwsIG51bGwsIF8zNWUpOwogICAgdmFyIHRzID0g
ZG9qby53aWRnZXQuX3RlbXBsYXRlQ2FjaGVbdGhpcy53aWRnZXRUeXBlXTsKICAgIGlmICh0cyAm
JiAoIV8zNWUpKQogICAgICB7CiAgICAgICAgaWYgKCF0aGlzLnRlbXBsYXRlU3RyaW5nLmxlbmd0
aCkKICAgICAgICAgIHsKICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZVN0cmluZyA9IHRzWyJzdHJp
bmciXTsKICAgICAgICAgIH0KICAgICAgICBpZiAoIXRoaXMudGVtcGxhdGVOb2RlKQogICAgICAg
ICAgewogICAgICAgICAgICB0aGlzLnRlbXBsYXRlTm9kZSA9IHRzWyJub2RlIl07CiAgICAgICAg
ICB9CiAgICAgIH0KICAgIHZhciBfMzYwID0gZmFsc2U7CiAgICB2YXIgbm9kZSA9IG51bGw7CiAg
ICB2YXIgdHN0ciA9IHRoaXMudGVtcGxhdGVTdHJpbmc7CiAgICBpZiAoKCF0aGlzLnRlbXBsYXRl
Tm9kZSkgJiYgKHRoaXMudGVtcGxhdGVTdHJpbmcpKQogICAgICB7CiAgICAgICAgXzM2MCA9IHRo
aXMudGVtcGxhdGVTdHJpbmcubWF0Y2goL1wkXHsoW15cfV0rKVx9L2cpOwogICAgICAgIGlmIChf
MzYwKQogICAgICAgICAgewogICAgICAgICAgICB2YXIgaGFzaCA9IHRoaXMuc3RyaW5ncyB8fCB7
IH07CiAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBkb2pvLndpZGdldC5kZWZhdWx0U3RyaW5n
cykKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoZG9qby5sYW5nLmlzVW5kZWZp
bmVkKGhhc2hba2V5XSkpCiAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBo
YXNoW2tleV0gPSBkb2pvLndpZGdldC5kZWZhdWx0U3RyaW5nc1trZXldOwogICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAg
IHsKICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZU5vZGUgPSB0aGlzLmNyZWF0ZU5vZGVzRnJvbVRl
eHQodGhpcy50ZW1wbGF0ZVN0cmluZywgdHJ1ZSlbMF07CiAgICAgICAgICAgIGlmICghXzM1ZSkK
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0cy5ub2RlID0gdGhpcy50ZW1wbGF0ZU5v
ZGU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICB9CiAgICBpZiAoKCF0aGlzLnRl
bXBsYXRlTm9kZSkgJiYgKCFfMzYwKSkKICAgICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgfQogICAgZWxzZQogICAgICB7CiAgICAgICAgaWYgKCFfMzYwKQogICAgICAgICAgewogICAg
ICAgICAgICBub2RlID0gdGhpcy50ZW1wbGF0ZU5vZGUuY2xvbmVOb2RlKHRydWUpOwogICAgICAg
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICB7
CiAgICAgICAgICAgIG5vZGUgPSB0aGlzLmNyZWF0ZU5vZGVzRnJvbVRleHQodHN0ciwgdHJ1ZSlb
MF07CiAgICAgICAgICB9CiAgICAgIH0KICAgIHRoaXMuZG9tTm9kZSA9IG5vZGU7CiAgICB0aGlz
LmF0dGFjaFRlbXBsYXRlTm9kZXModGhpcy5kb21Ob2RlLCB0aGlzKTsKICB9LCAiYXR0YWNoVGVt
cGxhdGVOb2RlcyI6IGZ1bmN0aW9uIChfMzY5LCBfMzZhKQogIHsKICAgIGlmICghXzM2YSkKICAg
ICAgewogICAgICAgIF8zNmEgPSB0aGlzOwogICAgICB9CiAgICByZXR1cm4gZG9qby53aWRnZXQu
YXR0YWNoVGVtcGxhdGVOb2RlcyhfMzY5LCBfMzZhLCBbXSk7CiAgfSwgImZpbGxJblRlbXBsYXRl
IjogZnVuY3Rpb24gKCkKICB7CiAgfSwgImRlc3Ryb3lSZW5kZXJpbmciOiBmdW5jdGlvbiAoKQog
IHt0cnkgCiAgICB7CiAgICAgIGRlbGV0ZSB0aGlzLmRvbU5vZGU7CiAgICB9CiAgICBjYXRjaCAo
ZSkKICAgIHsKICAgIH0KICB9LCAiY2xlYW5VcCI6IGZ1bmN0aW9uICgpCiAgewogIH0sICJnZXRD
b250YWluZXJIZWlnaHQiOiBmdW5jdGlvbiAoKQogIHsKICB9LCAiZ2V0Q29udGFpbmVyV2lkdGgi
OiBmdW5jdGlvbiAoKQogIHsKICB9LCAiY3JlYXRlTm9kZXNGcm9tVGV4dCI6IGZ1bmN0aW9uICgp
CiAgewogIH0gfSk7CiAgKGZ1bmN0aW9uICgpCiAgewogICAgdmFyIGRiID0gZG9jdW1lbnRbImJv
ZHkiXSB8fCBkb2N1bWVudFsiZG9jdW1lbnRFbGVtZW50Il07CiAgICBkb2pvLmRvbS5ib3hTaXpp
bmcgPSB7ICJNQVJHSU5fQk9YIjogIm1hcmdpbi1ib3giLCAiQk9SREVSX0JPWCI6ICJib3JkZXIt
Ym94IiwgIlBBRERJTkdfQk9YIjogInBhZGRpbmctYm94IiwgIkNPTlRFTlRfQk9YIjogImNvbnRl
bnQtYm94IiB9OwogICAgdmFyIGJzID0gZG9qby5kb20uYm94U2l6aW5nOwogICAgZG9qby5kb20u
aXNCb3JkZXJCb3ggPSBmdW5jdGlvbiAobm9kZSkKICAgIHsKICAgICAgICAgIGlmIChhcmd1bWVu
dHMubGVuZ3RoID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBub2RlID0gZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50OwogICAgICAgICAgICB9CiAgICAgICAgICB2YXIgXzM5MiA9IGRv
am8uZG9tLmdldFN0eWxlKG5vZGUsICItbW96LWJveC1zaXppbmciKTsKICAgICAgICAgIGlmICgh
XzM5MikKICAgICAgICAgICAgewogICAgICAgICAgICAgIF8zOTIgPSBkb2pvLmRvbS5nZXRTdHls
ZShub2RlLCAiYm94LXNpemluZyIpOwogICAgICAgICAgICB9CiAgICAgICAgICByZXR1cm4gKF8z
OTIgPyBfMzkyID09IGJzLkJPUkRFUl9CT1ggOiBmYWxzZSk7CiAgICB9OwogICAgZG9qby5kb20u
Z2V0VW5pdFZhbHVlID0gZnVuY3Rpb24gKG5vZGUsIF8zOTUsIF8zOTYpCiAgICB7CiAgICAgIHZh
ciBzID0gZG9qby5kb20uZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCBfMzk1KTsKICAgICAgaWYgKCgh
cykgfHwgKChzID09ICJhdXRvIikgJiYgXzM5NikpCiAgICAgICAgewogICAgICAgICAgcmV0dXJu
IHsgInZhbHVlIjogMCwgInVuaXRzIjogInB4IiB9OwogICAgICAgIH0KICAgICAgaWYgKGRvam8u
bGFuZy5pc1VuZGVmaW5lZChzKSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gZG9qby5kb20u
Z2V0VW5pdFZhbHVlLmJhZDsKICAgICAgICB9CiAgICAgIHZhciBfMzk4ID0gcy5tYXRjaCgvKFwt
P1tcZC5dKykoW2EteiVdKikvaSk7CiAgICAgIGlmICghXzM5OCkKICAgICAgICB7CiAgICAgICAg
ICByZXR1cm4gZG9qby5kb20uZ2V0VW5pdFZhbHVlLmJhZDsKICAgICAgICB9CiAgICAgIHJldHVy
biB7ICJ2YWx1ZSI6IE51bWJlcihfMzk4WzFdKSwgInVuaXRzIjogXzM5OFsyXS50b0xvd2VyQ2Fz
ZSgpIH07CiAgICB9OwogICAgZG9qby5kb20uZ2V0VW5pdFZhbHVlLmJhZCA9IHsgInZhbHVlIjog
TmFOLCAidW5pdHMiOiAiIiB9OwogICAgZG9qby5kb20uZ2V0UGl4ZWxWYWx1ZSA9IGZ1bmN0aW9u
IChub2RlLCBfMzlhLCBfMzliKQogICAgewogICAgICB2YXIgXzM5YyA9IGRvam8uZG9tLmdldFVu
aXRWYWx1ZShub2RlLCBfMzlhLCBfMzliKTsKICAgICAgaWYgKGlzTmFOKF8zOWMudmFsdWUpKQog
ICAgICAgIHsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgaWYgKChfMzljLnZh
bHVlKSAmJiAoXzM5Yy51bml0cyAhPSAicHgiKSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4g
TmFOOwogICAgICAgIH0KICAgICAgcmV0dXJuIF8zOWMudmFsdWU7CiAgICB9OwogICAgZG9qby5k
b20uc2V0UG9zaXRpdmVQaXhlbFZhbHVlID0gZnVuY3Rpb24gKG5vZGUsIF8zOWUsIF8zOWYpCiAg
ICB7CiAgICAgIGlmIChpc05hTihfMzlmKSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgfQogICAgICBub2RlLnN0eWxlW18zOWVdID0gTWF0aC5tYXgoMCwgXzM5Zikr
InB4IjsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9OwogICAgZG9qby5kb20uX3N1bVBpeGVsVmFs
dWVzID0gZnVuY3Rpb24gKG5vZGUsIF8zYTEsIF8zYTIpCiAgICB7CiAgICAgIHZhciBfM2EzID0g
MDsKICAgICAgZm9yICh4ID0gMDsgeCA8IF8zYTEubGVuZ3RoOyB4KyspCiAgICAgICAgewogICAg
ICAgICAgXzNhMyArPSBkb2pvLmRvbS5nZXRQaXhlbFZhbHVlKG5vZGUsIF8zYTFbeF0sIF8zYTIp
OwogICAgICAgIH0KICAgICAgcmV0dXJuIF8zYTM7CiAgICB9OwogICAgZG9qby5kb20uaXNQb3Np
dGlvbkFic29sdXRlID0gZnVuY3Rpb24gKG5vZGUpCiAgICB7CiAgICAgIHJldHVybiAoZG9qby5k
b20uZ2V0Q29tcHV0ZWRTdHlsZShub2RlLCAicG9zaXRpb24iKSA9PSAiYWJzb2x1dGUiKTsKICAg
IH07CiAgICBkb2pvLmRvbS5nZXRCb3JkZXJFeHRlbnQgPSBmdW5jdGlvbiAobm9kZSwgc2lkZSkK
ICAgIHsKICAgICAgcmV0dXJuIChkb2pvLmRvbS5nZXRTdHlsZShub2RlLCAiYm9yZGVyLSIrc2lk
ZSsiLXN0eWxlIikgPT0gIm5vbmUiID8gMCA6IGRvam8uZG9tLmdldFBpeGVsVmFsdWUobm9kZSwg
ImJvcmRlci0iK3NpZGUrIi13aWR0aCIpKTsKICAgIH07CiAgICBkb2pvLmRvbS5nZXRNYXJnaW5X
aWR0aCA9IGZ1bmN0aW9uIChub2RlKQogICAgewogICAgICByZXR1cm4gZG9qby5kb20uX3N1bVBp
eGVsVmFsdWVzKG5vZGUsIFsibWFyZ2luLWxlZnQiLCJtYXJnaW4tcmlnaHQiXSwgZG9qby5kb20u
aXNQb3NpdGlvbkFic29sdXRlKG5vZGUpKTsKICAgIH07CiAgICBkb2pvLmRvbS5nZXRCb3JkZXJX
aWR0aCA9IGZ1bmN0aW9uIChub2RlKQogICAgewogICAgICByZXR1cm4gZG9qby5kb20uZ2V0Qm9y
ZGVyRXh0ZW50KG5vZGUsICJsZWZ0IikrZG9qby5kb20uZ2V0Qm9yZGVyRXh0ZW50KG5vZGUsICJy
aWdodCIpOwogICAgfTsKICAgIGRvam8uZG9tLmdldFBhZGRpbmdXaWR0aCA9IGZ1bmN0aW9uIChu
b2RlKQogICAgewogICAgICByZXR1cm4gZG9qby5kb20uX3N1bVBpeGVsVmFsdWVzKG5vZGUsIFsi
cGFkZGluZy1sZWZ0IiwicGFkZGluZy1yaWdodCJdLCB0cnVlKTsKICAgIH07CiAgICBkb2pvLmRv
bS5nZXRQYWRCb3JkZXJXaWR0aCA9IGZ1bmN0aW9uIChub2RlKQogICAgewogICAgICByZXR1cm4g
ZG9qby5kb20uZ2V0UGFkZGluZ1dpZHRoKG5vZGUpK2Rvam8uZG9tLmdldEJvcmRlcldpZHRoKG5v
ZGUpOwogICAgfTsKICAgIGRvam8uZG9tLmdldENvbnRlbnRCb3hXaWR0aCA9IGZ1bmN0aW9uIChu
b2RlKQogICAgewogICAgICBub2RlID0gZG9qby5ieUlkKG5vZGUpOwogICAgICByZXR1cm4gbm9k
ZS5vZmZzZXRXaWR0aC1kb2pvLmRvbS5nZXRQYWRCb3JkZXJXaWR0aChub2RlKTsKICAgIH07CiAg
ICBkb2pvLmRvbS5nZXRCb3JkZXJCb3hXaWR0aCA9IGZ1bmN0aW9uIChub2RlKQogICAgewogICAg
ICBub2RlID0gZG9qby5ieUlkKG5vZGUpOwogICAgICByZXR1cm4gbm9kZS5vZmZzZXRXaWR0aDsK
ICAgIH07CiAgICBkb2pvLmRvbS5nZXRNYXJnaW5Cb3hXaWR0aCA9IGZ1bmN0aW9uIChub2RlKQog
ICAgewogICAgICByZXR1cm4gZG9qby5kb20uZ2V0SW5uZXJXaWR0aChub2RlKStkb2pvLmRvbS5n
ZXRNYXJnaW5XaWR0aChub2RlKTsKICAgIH07CiAgICBkb2pvLmRvbS5zZXRDb250ZW50Qm94V2lk
dGggPSBmdW5jdGlvbiAobm9kZSwgXzNiMCkKICAgIHsKICAgICAgbm9kZSA9IGRvam8uYnlJZChu
b2RlKTsKICAgICAgaWYgKGRvam8uZG9tLmlzQm9yZGVyQm94KG5vZGUpKQogICAgICAgIHsKICAg
ICAgICAgIF8zYjAgKz0gZG9qby5kb20uZ2V0UGFkQm9yZGVyV2lkdGgobm9kZSk7CiAgICAgICAg
fQogICAgICByZXR1cm4gZG9qby5kb20uc2V0UG9zaXRpdmVQaXhlbFZhbHVlKG5vZGUsICJ3aWR0
aCIsIF8zYjApOwogICAgfTsKICAgIGRvam8uZG9tLnNldE1hcmdpbkJveFdpZHRoID0gZnVuY3Rp
b24gKG5vZGUsIF8zYjIpCiAgICB7CiAgICAgIG5vZGUgPSBkb2pvLmJ5SWQobm9kZSk7CiAgICAg
IGlmICghZG9qby5kb20uaXNCb3JkZXJCb3gobm9kZSkpCiAgICAgICAgewogICAgICAgICAgXzNi
MiAtPSBkb2pvLmRvbS5nZXRQYWRCb3JkZXJXaWR0aChub2RlKTsKICAgICAgICB9CiAgICAgIF8z
YjIgLT0gZG9qby5kb20uZ2V0TWFyZ2luV2lkdGgobm9kZSk7CiAgICAgIHJldHVybiBkb2pvLmRv
bS5zZXRQb3NpdGl2ZVBpeGVsVmFsdWUobm9kZSwgIndpZHRoIiwgXzNiMik7CiAgICB9OwogICAg
ZG9qby5kb20uZ2V0Q29udGVudFdpZHRoID0gZG9qby5kb20uZ2V0Q29udGVudEJveFdpZHRoOwog
ICAgZG9qby5kb20uZ2V0SW5uZXJXaWR0aCA9IGRvam8uZG9tLmdldEJvcmRlckJveFdpZHRoOwog
ICAgZG9qby5kb20uZ2V0T3V0ZXJXaWR0aCA9IGRvam8uZG9tLmdldE1hcmdpbkJveFdpZHRoOwog
ICAgZG9qby5kb20uc2V0Q29udGVudFdpZHRoID0gZG9qby5kb20uc2V0Q29udGVudEJveFdpZHRo
OwogICAgZG9qby5kb20uc2V0T3V0ZXJXaWR0aCA9IGRvam8uZG9tLnNldE1hcmdpbkJveFdpZHRo
OwogICAgZG9qby5kb20uZ2V0TWFyZ2luSGVpZ2h0ID0gZnVuY3Rpb24gKG5vZGUpCiAgICB7CiAg
ICAgIHJldHVybiBkb2pvLmRvbS5fc3VtUGl4ZWxWYWx1ZXMobm9kZSwgWyJtYXJnaW4tdG9wIiwi
bWFyZ2luLWJvdHRvbSJdLCBkb2pvLmRvbS5pc1Bvc2l0aW9uQWJzb2x1dGUobm9kZSkpOwogICAg
fTsKICAgIGRvam8uZG9tLmdldEJvcmRlckhlaWdodCA9IGZ1bmN0aW9uIChub2RlKQogICAgewog
ICAgICByZXR1cm4gZG9qby5kb20uZ2V0Qm9yZGVyRXh0ZW50KG5vZGUsICJ0b3AiKStkb2pvLmRv
bS5nZXRCb3JkZXJFeHRlbnQobm9kZSwgImJvdHRvbSIpOwogICAgfTsKICAgIGRvam8uZG9tLmdl
dFBhZGRpbmdIZWlnaHQgPSBmdW5jdGlvbiAobm9kZSkKICAgIHsKICAgICAgcmV0dXJuIGRvam8u
ZG9tLl9zdW1QaXhlbFZhbHVlcyhub2RlLCBbInBhZGRpbmctdG9wIiwicGFkZGluZy1ib3R0b20i
XSwgdHJ1ZSk7CiAgICB9OwogICAgZG9qby5kb20uZ2V0UGFkQm9yZGVySGVpZ2h0ID0gZnVuY3Rp
b24gKG5vZGUpCiAgICB7CiAgICAgIHJldHVybiBkb2pvLmRvbS5nZXRQYWRkaW5nSGVpZ2h0KG5v
ZGUpK2Rvam8uZG9tLmdldEJvcmRlckhlaWdodChub2RlKTsKICAgIH07CiAgICBkb2pvLmRvbS5n
ZXRDb250ZW50Qm94SGVpZ2h0ID0gZnVuY3Rpb24gKG5vZGUpCiAgICB7CiAgICAgIG5vZGUgPSBk
b2pvLmJ5SWQobm9kZSk7CiAgICAgIHJldHVybiBub2RlLm9mZnNldEhlaWdodC1kb2pvLmRvbS5n
ZXRQYWRCb3JkZXJIZWlnaHQobm9kZSk7CiAgICB9OwogICAgZG9qby5kb20uZ2V0Qm9yZGVyQm94
SGVpZ2h0ID0gZnVuY3Rpb24gKG5vZGUpCiAgIHsKICAgICAgbm9kZSA9IGRvam8uYnlJZChub2Rl
KTsKICAgICAgcmV0dXJuIG5vZGUub2Zmc2V0SGVpZ2h0OwogICAgfTsKICAgIGRvam8uZG9tLmdl
dE1hcmdpbkJveEhlaWdodCA9IGZ1bmN0aW9uIChub2RlKQogICAgewogICAgICByZXR1cm4gZG9q
by5kb20uZ2V0SW5uZXJIZWlnaHQobm9kZSkrZG9qby5kb20uZ2V0TWFyZ2luSGVpZ2h0KG5vZGUp
OwogICAgfTsKICAgIGRvam8uZG9tLnNldENvbnRlbnRCb3hIZWlnaHQgPSBmdW5jdGlvbiAobm9k
ZSwgXzNiYikKICAgIHsKICAgICAgbm9kZSA9IGRvam8uYnlJZChub2RlKTsKICAgICAgaWYgKGRv
am8uZG9tLmlzQm9yZGVyQm94KG5vZGUpKQogICAgICAgIHsKICAgICAgICAgIF8zYmIgKz0gZG9q
by5kb20uZ2V0UGFkQm9yZGVySGVpZ2h0KG5vZGUpOwogICAgICAgIH0KICAgICAgcmV0dXJuIGRv
am8uZG9tLnNldFBvc2l0aXZlUGl4ZWxWYWx1ZShub2RlLCAiaGVpZ2h0IiwgXzNiYik7CiAgICB9
OwogICAgZG9qby5kb20uc2V0TWFyZ2luQm94SGVpZ2h0ID0gZnVuY3Rpb24gKG5vZGUsIF8zYmQp
CiAgICB7CiAgICAgIG5vZGUgPSBkb2pvLmJ5SWQobm9kZSk7CiAgICAgIGlmICghZG9qby5kb20u
aXNCb3JkZXJCb3gobm9kZSkpCiAgICAgICAgewogICAgICAgICAgXzNiZCAtPSBkb2pvLmRvbS5n
ZXRQYWRCb3JkZXJIZWlnaHQobm9kZSk7CiAgICAgICAgfQogICAgICBfM2JkIC09IGRvam8uZG9t
LmdldE1hcmdpbkhlaWdodChub2RlKTsKICAgICAgcmV0dXJuIGRvam8uZG9tLnNldFBvc2l0aXZl
UGl4ZWxWYWx1ZShub2RlLCAiaGVpZ2h0IiwgXzNiZCk7CiAgICB9OwogICAgZG9qby5kb20uZ2V0
Q29udGVudEhlaWdodCA9IGRvam8uZG9tLmdldENvbnRlbnRCb3hIZWlnaHQ7CiAgICBkb2pvLmRv
bS5nZXRJbm5lckhlaWdodCA9IGRvam8uZG9tLmdldEJvcmRlckJveEhlaWdodDsKICAgIGRvam8u
ZG9tLmdldE91dGVySGVpZ2h0ID0gZG9qby5kb20uZ2V0TWFyZ2luQm94SGVpZ2h0OwogICAgZG9q
by5kb20uc2V0Q29udGVudEhlaWdodCA9IGRvam8uZG9tLnNldENvbnRlbnRCb3hIZWlnaHQ7CiAg
ICBkb2pvLmRvbS5zZXRPdXRlckhlaWdodCA9IGRvam8uZG9tLnNldE1hcmdpbkJveEhlaWdodDsK
ICAgIGRvam8uZG9tLnN0eWxlU2hlZXQgPSBudWxsOwogICAgZG9qby5kb20uZ2V0Q29tcHV0ZWRT
dHlsZSA9IGZ1bmN0aW9uIChub2RlLCBfM2VjLCBfM2VkKQogICAgewogICAgICBub2RlID0gZG9q
by5ieUlkKG5vZGUpOwogICAgICB2YXIgXzNlYyA9IGRvam8uZG9tLnRvU2VsZWN0b3JDYXNlKF8z
ZWMpOwogICAgICB2YXIgXzNlZSA9IGRvam8uZG9tLnRvQ2FtZWxDYXNlKF8zZWMpOwogICAgICBp
ZiAoIW5vZGUgfHwgIW5vZGUuc3R5bGUpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuIF8zZWQ7
CiAgICAgICAgfQogICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgaWYgKGRvY3VtZW50LmRl
ZmF1bHRWaWV3KQogICAgICAgICAgICB7dHJ5IAogICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgIHZhciBjcyA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUobm9kZSwg
IiIpOwogICAgICAgICAgICAgICAgaWYgKGNzKQogICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNzLmdldFByb3BlcnR5VmFsdWUoXzNlYyk7CiAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgY2F0Y2ggKGUpCiAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgaWYgKG5vZGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSkK
ICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlLnN0eWxl
LmdldFByb3BlcnR5VmFsdWUoXzNlYyk7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBf
M2VkOwogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBpZiAobm9kZS5jdXJyZW50
U3R5bGUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlLmN1
cnJlbnRTdHlsZVtfM2VlXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAg
IH0KICAgICAgaWYgKG5vZGUuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZSkKICAgICAgICB7CiAgICAg
ICAgICByZXR1cm4gbm9kZS5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKF8zZWMpOwogICAgICAgIH0K
ICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIHJldHVybiBfM2VkOwogICAgICAgIH0KICAg
IH07CiAgICBkb2pvLmRvbS5nZXRTdHlsZVByb3BlcnR5ID0gZnVuY3Rpb24gKG5vZGUsIF8zZjEp
CiAgICB7CiAgICAgIG5vZGUgPSBkb2pvLmJ5SWQobm9kZSk7CiAgICAgIHJldHVybiAobm9kZSAm
JiBub2RlLnN0eWxlID8gbm9kZS5zdHlsZVtkb2pvLmRvbS50b0NhbWVsQ2FzZShfM2YxKV0gOiB1
bmRlZmluZWQpOwogICAgfTsKICAgIGRvam8uZG9tLmdldFN0eWxlID0gZnVuY3Rpb24gKG5vZGUs
IF8zZjMpCiAgICB7CiAgICAgIHZhciBfM2Y0ID0gZG9qby5kb20uZ2V0U3R5bGVQcm9wZXJ0eShu
b2RlLCBfM2YzKTsKICAgICAgcmV0dXJuIChfM2Y0ID8gXzNmNCA6IGRvam8uZG9tLmdldENvbXB1
dGVkU3R5bGUobm9kZSwgXzNmMykpOwogICAgfTsKICAgIGRvam8uZG9tLnNldFN0eWxlID0gZnVu
Y3Rpb24gKG5vZGUsIF8zZjYsIF8zZjcpCiAgICB7CiAgICAgIG5vZGUgPSBkb2pvLmJ5SWQobm9k
ZSk7CiAgICAgIGlmIChub2RlICYmIG5vZGUuc3R5bGUpCiAgICAgICAgewogICAgICAgICAgdmFy
IF8zZjggPSBkb2pvLmRvbS50b0NhbWVsQ2FzZShfM2Y2KTsKICAgICAgICAgIG5vZGUuc3R5bGVb
XzNmOF0gPSBfM2Y3OwogICAgICAgIH0KICAgIH07CiAgICBkb2pvLmRvbS50b0NhbWVsQ2FzZSA9
IGZ1bmN0aW9uIChfM2Y5KQogICAgewogICAgICB2YXIgYXJyID0gXzNmOS5zcGxpdCgiLSIpLCBj
YyA9IGFyclswXTsKICAgICAgZm9yIChpID0gMTsgaSA8IGFyci5sZW5ndGg7IGkrKykKICAgICAg
ICB7CiAgICAgICAgICBjYyArPSBhcnJbaV0uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYXJyW2ld
LnN1YnN0cmluZygxKTsKICAgICAgICB9CiAgICAgIHJldHVybiBjYzsKICAgIH07CiAgICBkb2pv
LmRvbS50b1NlbGVjdG9yQ2FzZSA9IGZ1bmN0aW9uIChfM2ZjKQogICAgewogICAgICByZXR1cm4g
XzNmYy5yZXBsYWNlKC8oW0EtWl0pL2csICItJDEiKS50b0xvd2VyQ2FzZSgpOwogICAgfTsKICAg
IGRvam8uZG9tLnNldE9wYWNpdHkgPSBmdW5jdGlvbiBzZXRPcGFjaXR5KG5vZGUsIF8zZmUsIF8z
ZmYpCiAgICB7CiAgICAgIG5vZGUgPSBkb2pvLmJ5SWQobm9kZSk7CiAgICAgIGlmICghXzNmZikK
ICAgICAgICB7CiAgICAgICAgICBpZiAoXzNmZSA+PSAxKQogICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgIF8zZmUgPSAwLjk5OTk5OTsKICAgICAgICAgICAgfQogICAgICAgICAgZWxzZQog
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKF8zZmUgPCAwKQogICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICBfM2ZlID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgfQogICAgICAgIH0KICAgICAgICAgICAgICBub2RlLnN0eWxlLm9wYWNpdHkgPSBfM2ZlOwog
ICAgICAgICAgICAgIG5vZGUuc3R5bGUuTW96T3BhY2l0eSA9IF8zZmU7CiAgICAgICAgICAgICAg
bm9kZS5zdHlsZS5LaHRtbE9wYWNpdHkgPSBfM2ZlOwogICAgfTsKICAgIGRvam8uZG9tLmdldE9w
YWNpdHkgPSBmdW5jdGlvbiBnZXRPcGFjaXR5KG5vZGUpCiAgICB7CiAgICAgIG5vZGUgPSBkb2pv
LmJ5SWQobm9kZSk7CiAgICAgICAgICB2YXIgb3BhYyA9IG5vZGUuc3R5bGUub3BhY2l0eSB8fCBu
b2RlLnN0eWxlLk1vek9wYWNpdHkgfHwgbm9kZS5zdHlsZS5LaHRtbE9wYWNpdHkgfHwgMTsKICAg
ICAgcmV0dXJuIG9wYWMgPj0gMC45OTk5OTkgPyAxIDogTnVtYmVyKG9wYWMpOwogICAgfTsKICAg
IGRvam8uZG9tLnNob3cgPSBmdW5jdGlvbiAobm9kZSkKICAgIHsKICAgICAgbm9kZSA9IGRvam8u
YnlJZChub2RlKTsKICAgICAgaWYgKGRvam8uZG9tLmdldFN0eWxlUHJvcGVydHkobm9kZSwgImRp
c3BsYXkiKSA9PSAibm9uZSIpCiAgICAgICAgewogICAgICAgICAgZG9qby5kb20uc2V0U3R5bGUo
bm9kZSwgImRpc3BsYXkiLCAobm9kZS5kb2pvRGlzcGxheUNhY2hlIHx8ICIiKSk7CiAgICAgICAg
ICBub2RlLmRvam9EaXNwbGF5Q2FjaGUgPSB1bmRlZmluZWQ7CiAgICAgICAgfQogICAgfTsKICAg
IGRvam8uZG9tLmhpZGUgPSBmdW5jdGlvbiAobm9kZSkKICAgIHsKICAgICAgbm9kZSA9IGRvam8u
YnlJZChub2RlKTsKICAgICAgaWYgKHR5cGVvZiBub2RlWyJkb2pvRGlzcGxheUNhY2hlIl0gPT0g
InVuZGVmaW5lZCIpCiAgICAgICAgewogICAgICAgICAgdmFyIGQgPSBkb2pvLmRvbS5nZXRTdHls
ZVByb3BlcnR5KG5vZGUsICJkaXNwbGF5Iik7CiAgICAgICAgICBpZiAoZCAhPSAibm9uZSIpCiAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICBub2RlLmRvam9EaXNwbGF5Q2FjaGUgPSBkOwogICAg
ICAgICAgICB9CiAgICAgICAgfQogICAgICBkb2pvLmRvbS5zZXRTdHlsZShub2RlLCAiZGlzcGxh
eSIsICJub25lIik7CiAgICB9OwogICAgZG9qby5kb20uaXNTaG93aW5nID0gZnVuY3Rpb24gKG5v
ZGUpCiAgICB7CiAgICAgIHJldHVybiAoZG9qby5kb20uZ2V0U3R5bGVQcm9wZXJ0eShub2RlLCAi
ZGlzcGxheSIpICE9ICJub25lIik7CiAgICB9OwoKICB9KSgpOwogIGRvam8uc3RyaW5nID0ge307
CiAgZG9qby5zdHJpbmcudHJpbSA9IGZ1bmN0aW9uIChzdHIsIHdoKQogIHsKICAgIGlmICghc3Ry
LnJlcGxhY2UpCiAgICAgIHsKICAgICAgICByZXR1cm4gc3RyOwogICAgICB9CiAgICBpZiAoIXN0
ci5sZW5ndGgpCiAgICAgIHsKICAgICAgICByZXR1cm4gc3RyOwogICAgICB9CiAgICB2YXIgcmUg
PSAod2ggPiAwKSA/ICgvXlxzKy8pIDogKHdoIDwgMCkgPyAoL1xzKyQvKSA6ICgvXlxzK3xccysk
L2cpOwogICAgcmV0dXJuIHN0ci5yZXBsYWNlKHJlLCAiIik7CiAgfTsKICBkb2pvLnN0cmluZy50
cmltU3RhcnQgPSBmdW5jdGlvbiAoc3RyKQogIHsKICAgIHJldHVybiBkb2pvLnN0cmluZy50cmlt
KHN0ciwgMSk7CiAgfTsKICBkb2pvLmRvbS5nZXRDbGFzcyA9IGZ1bmN0aW9uIChub2RlKQogIHsK
ICAgIG5vZGUgPSBkb2pvLmJ5SWQobm9kZSk7CiAgICBpZiAoIW5vZGUpCiAgICAgIHsKICAgICAg
ICByZXR1cm4gIiI7CiAgICAgIH0KICAgIHZhciBjcyA9ICIiOwogICAgaWYgKG5vZGUuY2xhc3NO
YW1lKQogICAgICB7CiAgICAgICAgY3MgPSBub2RlLmNsYXNzTmFtZTsKICAgICAgfQogICAgZWxz
ZQogICAgICB7CiAgICAgICAgaWYgKG5vZGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKQogICAgICAg
ICAgewogICAgICAgICAgICBjcyA9IG5vZGUuZ2V0QXR0cmlidXRlKCJjbGFzcyIpOwogICAgICAg
ICAgfQogICAgICB9CiAgICByZXR1cm4gZG9qby5zdHJpbmcudHJpbShjcyk7CiAgfTsKICBkb2pv
LmRvbS5nZXRDbGFzc2VzID0gZnVuY3Rpb24gKG5vZGUpCiAgewogICAgdmFyIGMgPSBkb2pvLmRv
bS5nZXRDbGFzcyhub2RlKTsKICAgIHJldHVybiAoYyA9PSAiIikgPyBbXSA6IGMuc3BsaXQoL1xz
Ky9nKTsKICB9OwogIGRvam8uZG9tLmFkZENsYXNzID0gZnVuY3Rpb24gKG5vZGUsIF80NTkpCiAg
ewogICAgaWYgKGRvam8ubGFuZy5pbkFycmF5KGRvam8uZG9tLmdldENsYXNzZXMobm9kZSksIF80
NTkpKQogICAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICBfNDU5ID0gZG9q
by5zdHJpbmcudHJpbShkb2pvLmRvbS5nZXRDbGFzcyhub2RlKSsiICIrXzQ1OSk7CiAgICByZXR1
cm4gZG9qby5kb20uc2V0Q2xhc3Mobm9kZSwgXzQ1OSk7CiAgfTsKICBkb2pvLmRvbS5zZXRDbGFz
cyA9IGZ1bmN0aW9uIChub2RlLCBfNDViKQogIHsKICAgIG5vZGUgPSBkb2pvLmJ5SWQobm9kZSk7
CiAgICB2YXIgY3MgPSBuZXcgU3RyaW5nKF80NWIpO3RyeSAKICAgIHsKICAgICAgaWYgKHR5cGVv
ZiBub2RlLmNsYXNzTmFtZSA9PSAic3RyaW5nIikKICAgICAgICB7CiAgICAgICAgICBub2RlLmNs
YXNzTmFtZSA9IGNzOwogICAgICAgIH0KICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIGlm
IChub2RlLnNldEF0dHJpYnV0ZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIG5vZGUuc2V0
QXR0cmlidXRlKCJjbGFzcyIsIF80NWIpOwogICAgICAgICAgICAgIG5vZGUuY2xhc3NOYW1lID0g
Y3M7CiAgICAgICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGNhdGNo
IChlKQogICAgewogICAgfQogICAgcmV0dXJuIHRydWU7CiAgfTsKICBkb2pvLmRvbS5yZW1vdmVD
bGFzcyA9IGZ1bmN0aW9uIChub2RlLCBfNDVlLCBfNDVmKQogIHsKICAgIHZhciBfNDVlID0gZG9q
by5zdHJpbmcudHJpbShuZXcgU3RyaW5nKF80NWUpKTt0cnkgCiAgICB7CiAgICAgIHZhciBjcyA9
IGRvam8uZG9tLmdldENsYXNzZXMobm9kZSk7CiAgICAgIHZhciBuY2EgPSBbXTsKICAgICAgaWYg
KF80NWYpCiAgICAgICAgewogICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNzLmxlbmd0aDsgaSsr
KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgaWYgKGNzW2ldLmluZGV4T2YoXzQ1ZSkgPT0g
LTEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIG5jYS5wdXNoKGNzW2ldKTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgZWxzZQogICAg
ICAgIHsKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjcy5sZW5ndGg7IGkrKykKICAgICAgICAg
ICAgewogICAgICAgICAgICAgIGlmIChjc1tpXSAhPSBfNDVlKQogICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICBuY2EucHVzaChjc1tpXSk7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICAgIGRvam8uZG9tLnNldENsYXNzKG5vZGUsIG5jYS5qb2lu
KCIgIikpOwogICAgfQogICAgY2F0Y2ggKGUpCiAgICB7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsK
ICB9OwogIGRvam8uZG9tLmNsYXNzTWF0Y2hUeXBlID0geyAiQ29udGFpbnNBbGwiOiAwLCAiQ29u
dGFpbnNBbnkiOiAxLCAiSXNPbmx5IjogMiB9OwogIGRvam8uZG9tLmNvcHlTdHlsZSA9IGZ1bmN0
aW9uIChfNDg4LCBfNDg5KQogIHsKICAgICAgICBfNDg4LnN0eWxlLmNzc1RleHQgPSBfNDg5LnN0
eWxlLmNzc1RleHQ7CiAgICBkb2pvLmRvbS5hZGRDbGFzcyhfNDg4LCBkb2pvLmRvbS5nZXRDbGFz
cyhfNDg5KSk7CiAgfTsKICBkb2pvLmRvbS5jcmVhdGVOb2Rlc0Zyb21UZXh0ID0gZnVuY3Rpb24g
KHR4dCwgdHJpbSkKICB7CiAgICBpZiAodHJpbSkKICAgICAgewogICAgICAgIHR4dCA9IGRvam8u
c3RyaW5nLnRyaW0odHh0KTsKICAgICAgfQogICAgdmFyIHRuID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CiAgICB0bi5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CiAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKHRuKTsKICAgIHZhciBfNGNjID0gIm5vbmUiOwogICAgaWYg
KCgvXjx0W2RoXVtcc1xyXG4+XS9pKS50ZXN0KGRvam8uc3RyaW5nLnRyaW1TdGFydCh0eHQpKSkK
ICAgICAgewogICAgICAgIHR4dCA9ICI8dGFibGU+PHRib2R5Pjx0cj4iK3R4dCsiPC90cj48L3Ri
b2R5PjwvdGFibGU+IjsKICAgICAgICBfNGNjID0gImNlbGwiOwogICAgICB9CiAgICBlbHNlCiAg
ICAgIHsKICAgICAgICBpZiAoKC9ePHRyW1xzXHJcbj5dL2kpLnRlc3QoZG9qby5zdHJpbmcudHJp
bVN0YXJ0KHR4dCkpKQogICAgICAgICAgewogICAgICAgICAgICB0eHQgPSAiPHRhYmxlPjx0Ym9k
eT4iK3R4dCsiPC90Ym9keT48L3RhYmxlPiI7CiAgICAgICAgICAgIF80Y2MgPSAicm93IjsKICAg
ICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgIGlmICgoL148KHRo
ZWFkfHRib2R5fHRmb290KVtcc1xyXG4+XS9pKS50ZXN0KGRvam8uc3RyaW5nLnRyaW1TdGFydCh0
eHQpKSkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0eHQgPSAiPHRhYmxlPiIrdHh0
KyI8L3RhYmxlPiI7CiAgICAgICAgICAgICAgICBfNGNjID0gInNlY3Rpb24iOwogICAgICAgICAg
ICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgdG4uaW5uZXJIVE1MID0gdHh0OwogICAgaWYg
KHRuWyJub3JtYWxpemUiXSkKICAgICAgewogICAgICAgIHRuLm5vcm1hbGl6ZSgpOwogICAgICB9
CiAgICB2YXIgXzRjZCA9IG51bGw7CiAgICBzd2l0Y2ggKF80Y2MpIHsKICAgICAgY2FzZSAiY2Vs
bCI6CiAgICAgICAgXzRjZCA9IHRuLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ciIpWzBdOwogICAg
ICAgIGJyZWFrOwogICAgICBjYXNlICJyb3ciOgogICAgICAgIF80Y2QgPSB0bi5nZXRFbGVtZW50
c0J5VGFnTmFtZSgidGJvZHkiKVswXTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAic2VjdGlv
biI6CiAgICAgICAgXzRjZCA9IHRuLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0YWJsZSIpWzBdOwog
ICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgIF80Y2QgPSB0bjsKICAgICAgICBi
cmVhazsKICAgIH0KICAgIHZhciBfNGNlID0gW107CiAgICBmb3IgKHggPSAwOyB4IDwgXzRjZC5j
aGlsZE5vZGVzLmxlbmd0aDsgeCsrKQogICAgICB7CiAgICAgICAgXzRjZS5wdXNoKF80Y2QuY2hp
bGROb2Rlc1t4XS5jbG9uZU5vZGUodHJ1ZSkpOwogICAgICB9CiAgICB0bi5zdHlsZS5kaXNwbGF5
ID0gIm5vbmUiOwogICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0bik7CiAgICByZXR1cm4g
XzRjZTsKICB9OwogIGRvam8ubGZ4ID0ge307CiAgZG9qby5sZnguSUFuaW1hdGlvbiA9IGZ1bmN0
aW9uICgpCiAgewogIH07CiAgZG9qby5sYW5nLmV4dGVuZChkb2pvLmxmeC5JQW5pbWF0aW9uLCB7
ICJjdXJ2ZSI6IG51bGwsICJkdXJhdGlvbiI6IDEwMDAsICJlYXNpbmciOiBudWxsLCAicmVwZWF0
Q291bnQiOiAwLCAicmF0ZSI6IDI1LCAiaGFuZGxlciI6IG51bGwsICJiZWZvcmVCZWdpbiI6IG51
bGwsICJvbkJlZ2luIjogbnVsbCwgIm9uQW5pbWF0ZSI6IG51bGwsICJvbkVuZCI6IG51bGwsICJv
blBsYXkiOiBudWxsLCAib25QYXVzZSI6IG51bGwsICJvblN0b3AiOiBudWxsLCAicGxheSI6IG51
bGwsICJwYXVzZSI6IG51bGwsICJzdG9wIjogbnVsbCwgImZpcmUiOiBmdW5jdGlvbiAoZXZ0LCBh
cmdzKQogIHsKICAgIGlmICh0aGlzW2V2dF0pCiAgICAgIHsKICAgICAgICB0aGlzW2V2dF0uYXBw
bHkodGhpcywgKGFyZ3MgfHwgW10pKTsKICAgICAgfQogIH0sICJfYWN0aXZlIjogZmFsc2UsICJf
cGF1c2VkIjogZmFsc2UgfSk7CiAgZG9qby5sZnguQW5pbWF0aW9uID0gZnVuY3Rpb24gKF81MDEs
IF81MDIsIF81MDMsIF81MDQsIF81MDUsIHJhdGUpCiAgewogICAgZG9qby5sZnguSUFuaW1hdGlv
bi5jYWxsKHRoaXMpOwogICAgaWYgKGRvam8ubGFuZy5pc051bWJlcihfNTAxKSB8fCAoIV81MDEg
JiYgXzUwMi5nZXRWYWx1ZSkpCiAgICAgIHsKICAgICAgICByYXRlID0gXzUwNTsKICAgICAgICBf
NTA1ID0gXzUwNDsKICAgICAgICBfNTA0ID0gXzUwMzsKICAgICAgICBfNTAzID0gXzUwMjsKICAg
ICAgICBfNTAyID0gXzUwMTsKICAgICAgICBfNTAxID0gbnVsbDsKICAgICAgfQogICAgZWxzZQog
ICAgICB7CiAgICAgICAgaWYgKF81MDEuZ2V0VmFsdWUgfHwgZG9qby5sYW5nLmlzQXJyYXkoXzUw
MSkpCiAgICAgICAgICB7CiAgICAgICAgICAgIHJhdGUgPSBfNTA0OwogICAgICAgICAgICBfNTA1
ID0gXzUwMzsKICAgICAgICAgICAgXzUwNCA9IF81MDI7CiAgICAgICAgICAgIF81MDMgPSBfNTAx
OwogICAgICAgICAgICBfNTAyID0gbnVsbDsKICAgICAgICAgICAgXzUwMSA9IG51bGw7CiAgICAg
ICAgICB9CiAgICAgIH0KICAgICAgICB0aGlzLmN1cnZlID0gXzUwMzsKICAgIGlmIChfNTAyICE9
IG51bGwgJiYgXzUwMiA+IDApCiAgICAgIHsKICAgICAgICB0aGlzLmR1cmF0aW9uID0gXzUwMjsK
ICAgICAgfQogICAgaWYgKF81MDUpCiAgICAgIHsKICAgICAgICB0aGlzLnJlcGVhdENvdW50ID0g
XzUwNTsKICAgICAgfQogICAgaWYgKHJhdGUpCiAgICAgIHsKICAgICAgICB0aGlzLnJhdGUgPSBy
YXRlOwogICAgICB9CiAgICBpZiAoXzUwMSkKICAgICAgewogICAgICAgIHRoaXMuaGFuZGxlciA9
IF81MDEuaGFuZGxlcjsKICAgICAgICB0aGlzLmJlZm9yZUJlZ2luID0gXzUwMS5iZWZvcmVCZWdp
bjsKICAgICAgICB0aGlzLm9uQmVnaW4gPSBfNTAxLm9uQmVnaW47CiAgICAgICAgdGhpcy5vbkVu
ZCA9IF81MDEub25FbmQ7CiAgICAgICAgdGhpcy5vblBsYXkgPSBfNTAxLm9uUGxheTsKICAgICAg
ICB0aGlzLm9uUGF1c2UgPSBfNTAxLm9uUGF1c2U7CiAgICAgICAgdGhpcy5vblN0b3AgPSBfNTAx
Lm9uU3RvcDsKICAgICAgICB0aGlzLm9uQW5pbWF0ZSA9IF81MDEub25BbmltYXRlOwogICAgICB9
CiAgICBpZiAoXzUwNCAmJiBkb2pvLmxhbmcuaXNGdW5jdGlvbihfNTA0KSkKICAgICAgewogICAg
ICAgIHRoaXMuZWFzaW5nID0gXzUwNDsKICAgICAgfQogIH07CiAgZG9qby5pbmhlcml0cyhkb2pv
LmxmeC5BbmltYXRpb24sIGRvam8ubGZ4LklBbmltYXRpb24pOwogIGRvam8ubGFuZy5leHRlbmQo
ZG9qby5sZnguQW5pbWF0aW9uLCB7ICJfc3RhcnRUaW1lIjogbnVsbCwgIl9lbmRUaW1lIjogbnVs
bCwgIl90aW1lciI6IG51bGwsICJfcGVyY2VudCI6IDAsICJfc3RhcnRSZXBlYXRDb3VudCI6IDAs
ICJwbGF5IjogZnVuY3Rpb24gKF81MDcsIF81MDgpCiAgewogICAgaWYgKF81MDgpCiAgICAgIHsK
ICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpOwogICAgICAgIHRoaXMuX2FjdGl2ZSA9
IGZhbHNlOwogICAgICAgIHRoaXMuX3BhdXNlZCA9IGZhbHNlOwogICAgICAgIHRoaXMuX3BlcmNl
bnQgPSAwOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKICAgICAgICBpZiAodGhpcy5fYWN0aXZl
ICYmICF0aGlzLl9wYXVzZWQpCiAgICAgICAgICB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgIH0KICAgICAgfQogICAgdGhpcy5maXJlKCJoYW5kbGVyIiwgWyJiZWZvcmVCZWdpbiJdKTsK
ICAgIHRoaXMuZmlyZSgiYmVmb3JlQmVnaW4iKTsKICAgIGlmIChfNTA3ID4gMCkKICAgICAgewog
ICAgICAgIHNldFRpbWVvdXQoZG9qby5sYW5nLmhpdGNoKHRoaXMsIGZ1bmN0aW9uICgpCiAgICAg
ICAgewogICAgICAgICAgdGhpcy5wbGF5KG51bGwsIF81MDgpOwogICAgICAgIH0pLCBfNTA3KTsK
ICAgICAgICByZXR1cm47CiAgICAgIH0KICAgIHRoaXMuX3N0YXJ0VGltZSA9IG5ldyBEYXRlKCku
dmFsdWVPZigpOwogICAgaWYgKHRoaXMuX3BhdXNlZCkKICAgICAgewogICAgICAgIHRoaXMuX3N0
YXJ0VGltZSAtPSAodGhpcy5kdXJhdGlvbip0aGlzLl9wZXJjZW50LzEwMCk7CiAgICAgIH0KICAg
IHRoaXMuX2VuZFRpbWUgPSB0aGlzLl9zdGFydFRpbWUrdGhpcy5kdXJhdGlvbjsKICAgIHRoaXMu
X2FjdGl2ZSA9IHRydWU7CiAgICB0aGlzLl9wYXVzZWQgPSBmYWxzZTsKICAgIHZhciBzdGVwID0g
dGhpcy5fcGVyY2VudC8xMDA7CiAgICB2YXIgXzUwYSA9IHRoaXMuY3VydmUuZ2V0VmFsdWUoc3Rl
cCk7CiAgICBpZiAodGhpcy5fcGVyY2VudCA9PSAwKQogICAgICB7CiAgICAgICAgaWYgKCF0aGlz
Ll9zdGFydFJlcGVhdENvdW50KQogICAgICAgICAgewogICAgICAgICAgICB0aGlzLl9zdGFydFJl
cGVhdENvdW50ID0gdGhpcy5yZXBlYXRDb3VudDsKICAgICAgICAgIH0KICAgICAgICB0aGlzLmZp
cmUoImhhbmRsZXIiLCBbImJlZ2luIixfNTBhXSk7CiAgICAgICAgdGhpcy5maXJlKCJvbkJlZ2lu
IiwgW181MGFdKTsKICAgICAgfQogICAgdGhpcy5maXJlKCJoYW5kbGVyIiwgWyJwbGF5IixfNTBh
XSk7CiAgICB0aGlzLmZpcmUoIm9uUGxheSIsIFtfNTBhXSk7CiAgICB0aGlzLl9jeWNsZSgpOwog
IH0sICJwYXVzZSI6IGZ1bmN0aW9uICgpCiAgewogICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVy
KTsKICAgIGlmICghdGhpcy5fYWN0aXZlKQogICAgICB7CiAgICAgICAgcmV0dXJuOwogICAgICB9
CiAgICB0aGlzLl9wYXVzZWQgPSB0cnVlOwogICAgdmFyIF81MGIgPSB0aGlzLmN1cnZlLmdldFZh
bHVlKHRoaXMuX3BlcmNlbnQvMTAwKTsKICAgIHRoaXMuZmlyZSgiaGFuZGxlciIsIFsicGF1c2Ui
LF81MGJdKTsKICAgIHRoaXMuZmlyZSgib25QYXVzZSIsIFtfNTBiXSk7CiAgfSwgImdvdG9QZXJj
ZW50IjogZnVuY3Rpb24gKHBjdCwgXzUwZCkKICB7CiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGlt
ZXIpOwogICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTsKICAgIHRoaXMuX3BhdXNlZCA9IHRydWU7CiAg
ICB0aGlzLl9wZXJjZW50ID0gcGN0OwogICAgaWYgKF81MGQpCiAgICAgIHsKICAgICAgICB0aGlz
LnBsYXkoKTsKICAgICAgfQogIH0sICJzdG9wIjogZnVuY3Rpb24gKF81MGUpCiAgewogICAgY2xl
YXJUaW1lb3V0KHRoaXMuX3RpbWVyKTsKICAgIHZhciBzdGVwID0gdGhpcy5fcGVyY2VudC8xMDA7
CiAgICBpZiAoXzUwZSkKICAgICAgewogICAgICAgIHN0ZXAgPSAxOwogICAgICB9CiAgICB2YXIg
XzUxMCA9IHRoaXMuY3VydmUuZ2V0VmFsdWUoc3RlcCk7CiAgICB0aGlzLmZpcmUoImhhbmRsZXIi
LCBbInN0b3AiLF81MTBdKTsKICAgIHRoaXMuZmlyZSgib25TdG9wIiwgW181MTBdKTsKICAgIHRo
aXMuX2FjdGl2ZSA9IGZhbHNlOwogICAgdGhpcy5fcGF1c2VkID0gZmFsc2U7CiAgfSwgInN0YXR1
cyI6IGZ1bmN0aW9uICgpCiAgewogICAgaWYgKHRoaXMuX2FjdGl2ZSkKICAgICAgewogICAgICAg
IHJldHVybiB0aGlzLl9wYXVzZWQgPyAicGF1c2VkIiA6ICJwbGF5aW5nIjsKICAgICAgfQogICAg
ZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuICJzdG9wcGVkIjsKICAgICAgfQogIH0sICJfY3lj
bGUiOiBmdW5jdGlvbiAoKQogIHsKICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lcik7CiAgICBp
ZiAodGhpcy5fYWN0aXZlKQogICAgICB7CiAgICAgICAgdmFyIGN1cnIgPSBuZXcgRGF0ZSgpLnZh
bHVlT2YoKTsKICAgICAgICB2YXIgc3RlcCA9IChjdXJyLXRoaXMuX3N0YXJ0VGltZSkvKHRoaXMu
X2VuZFRpbWUtdGhpcy5fc3RhcnRUaW1lKTsKICAgICAgICBpZiAoc3RlcCA+PSAxKQogICAgICAg
ICAgewogICAgICAgICAgICBzdGVwID0gMTsKICAgICAgICAgICAgdGhpcy5fcGVyY2VudCA9IDEw
MDsKICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgIHRoaXMu
X3BlcmNlbnQgPSBzdGVwKjEwMDsKICAgICAgICAgIH0KICAgICAgICBpZiAodGhpcy5lYXNpbmcg
JiYgZG9qby5sYW5nLmlzRnVuY3Rpb24odGhpcy5lYXNpbmcpKQogICAgICAgICAgewogICAgICAg
ICAgICBzdGVwID0gdGhpcy5lYXNpbmcoc3RlcCk7CiAgICAgICAgICB9CiAgICAgICAgdmFyIF81
MTMgPSB0aGlzLmN1cnZlLmdldFZhbHVlKHN0ZXApOwogICAgICAgIHRoaXMuZmlyZSgiaGFuZGxl
ciIsIFsiYW5pbWF0ZSIsXzUxM10pOwogICAgICAgIHRoaXMuZmlyZSgib25BbmltYXRlIiwgW181
MTNdKTsKICAgICAgICBpZiAoc3RlcCA8IDEpCiAgICAgICAgICB7CiAgICAgICAgICAgIHRoaXMu
X3RpbWVyID0gc2V0VGltZW91dChkb2pvLmxhbmcuaGl0Y2godGhpcywgIl9jeWNsZSIpLCB0aGlz
LnJhdGUpOwogICAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAgICAgICAg
dGhpcy5fYWN0aXZlID0gZmFsc2U7CiAgICAgICAgICAgIHRoaXMuZmlyZSgiaGFuZGxlciIsIFsi
ZW5kIl0pOwogICAgICAgICAgICB0aGlzLmZpcmUoIm9uRW5kIik7CiAgICAgICAgICAgIGlmICh0
aGlzLnJlcGVhdENvdW50ID4gMCkKICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB0aGlz
LnJlcGVhdENvdW50LS07CiAgICAgICAgICAgICAgICB0aGlzLnBsYXkobnVsbCwgdHJ1ZSk7CiAg
ICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgaWYgKHRoaXMucmVwZWF0Q291bnQgPT0gLTEpCiAgICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICB0aGlzLnBsYXkobnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgIGlmICh0aGlzLl9zdGFydFJlcGVhdENvdW50KQogICAgICAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlcGVhdENvdW50ID0gdGhpcy5fc3RhcnRS
ZXBlYXRDb3VudDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRSZXBlYXRDb3Vu
dCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICB9IH0pOwogIGRvam8ubGZ4Ll9ieUlkID0g
ZnVuY3Rpb24gKF81MjkpCiAgewogICAgaWYgKGRvam8ubGFuZy5pc0FycmF5KF81MjkpKQogICAg
ICB7CiAgICAgICAgaWYgKCFfNTI5LmFscmVhZHlDaGVja2VkKQogICAgICAgICAgewogICAgICAg
ICAgICB2YXIgbiA9IFtdOwogICAgICAgICAgICBkb2pvLmxhbmcuZm9yRWFjaChfNTI5LCBmdW5j
dGlvbiAobm9kZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgIG4ucHVzaChkb2pvLmJ5SWQo
bm9kZSkpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgbi5hbHJlYWR5Q2hlY2tlZCA9IHRy
dWU7CiAgICAgICAgICAgIHJldHVybiBuOwogICAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAg
ICAgIHsKICAgICAgICAgICAgcmV0dXJuIF81Mjk7CiAgICAgICAgICB9CiAgICAgIH0KICAgIGVs
c2UKICAgICAgewogICAgICAgIHZhciBuID0gW107CiAgICAgICAgbi5wdXNoKGRvam8uYnlJZChf
NTI5KSk7CiAgICAgICAgbi5hbHJlYWR5Q2hlY2tlZCA9IHRydWU7CiAgICAgICAgcmV0dXJuIG47
CiAgICAgIH0KICB9OwogIGRvam8ubGZ4LnByb3BlcnR5QW5pbWF0aW9uID0gZnVuY3Rpb24gKF81
MmMsIF81MmQsIF81MmUsIF81MmYpCiAgewogICAgXzUyYyA9IGRvam8ubGZ4Ll9ieUlkKF81MmMp
OwogICAgICAgIGRvam8ubGFuZy5mb3JFYWNoKF81MmQsIGZ1bmN0aW9uIChwcm9wKQogICAgICAg
IHsKICAgICAgICAgIGlmICh0eXBlb2YgcHJvcFsic3RhcnQiXSA9PSAidW5kZWZpbmVkIikKICAg
ICAgICAgICAgewogICAgICAgICAgICAgIGlmIChwcm9wLnByb3BlcnR5ICE9ICJvcGFjaXR5IikK
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgcHJvcC5zdGFydCA9IHBhcnNlSW50
KGRvam8uZG9tLmdldENvbXB1dGVkU3R5bGUoXzUyY1swXSwgcHJvcC5wcm9wZXJ0eSkpOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgcHJvcC5zdGFydCA9IGRvam8uZG9tLmdldE9wYWNpdHkoXzUyY1swXSk7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgIHZhciBfNTMxID0g
ZnVuY3Rpb24gKF81MzIpCiAgICB7CiAgICAgIHZhciBfNTMzID0gbmV3IEFycmF5KF81MzIubGVu
Z3RoKTsKICAgICAgZm9yIChpID0gMDsgaSA8IF81MzIubGVuZ3RoOyBpKyspCiAgICAgICAgewog
ICAgICAgICAgXzUzM1tpXSA9IE1hdGgucm91bmQoXzUzMltpXSk7CiAgICAgICAgfQogICAgICBy
ZXR1cm4gXzUzMzsKICAgIH07CiAgICB2YXIgXzUzNSA9IGZ1bmN0aW9uIChuLCBfNTM3KQogICAg
ewogICAgICBuID0gZG9qby5ieUlkKG4pOwogICAgICBpZiAoIW4gfHwgIW4uc3R5bGUpCiAgICAg
ICAgewogICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgZm9yICh2YXIgcyBpbiBfNTM3
KQogICAgICAgIHsKICAgICAgICAgIGlmIChzID09ICJvcGFjaXR5IikKICAgICAgICAgICAgewog
ICAgICAgICAgICAgIGRvam8uZG9tLnNldE9wYWNpdHkobiwgXzUzN1tzXSk7CiAgICAgICAgICAg
IH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgIG4uc3R5bGVbc10g
PSBfNTM3W3NdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIHZhciBfNTM5ID0g
ZnVuY3Rpb24gKF81M2EpCiAgICB7CiAgICAgIHRoaXMuX3Byb3BlcnRpZXMgPSBfNTNhOwogICAg
ICB0aGlzLmRpZmZzID0gbmV3IEFycmF5KF81M2EubGVuZ3RoKTsKICAgICAgZG9qby5sYW5nLmZv
ckVhY2goXzUzYSwgZnVuY3Rpb24gKHByb3AsIGkpCiAgICAgIHsKICAgICAgICBpZiAoZG9qby5s
YW5nLmlzQXJyYXkocHJvcC5zdGFydCkpCiAgICAgICAgICB7CiAgICAgICAgICAgIHRoaXMuZGlm
ZnNbaV0gPSBudWxsOwogICAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgIHRoaXMuZGlmZnNbaV0gPSBwcm9wLmVuZC1wcm9wLnN0YXJ0OwogICAgICAgICAg
fQogICAgICB9LCB0aGlzKTsKICAgICAgdGhpcy5nZXRWYWx1ZSA9IGZ1bmN0aW9uIChuKQogICAg
ICB7CiAgICAgICAgdmFyIHJldCA9IHsgfTsKICAgICAgICBkb2pvLmxhbmcuZm9yRWFjaCh0aGlz
Ll9wcm9wZXJ0aWVzLCBmdW5jdGlvbiAocHJvcCwgaSkKICAgICAgICB7CiAgICAgICAgICB2YXIg
XzU0MSA9IG51bGw7CiAgICAgICAgICBpZiAoZG9qby5sYW5nLmlzQXJyYXkocHJvcC5zdGFydCkp
CiAgICAgICAgICAgIHsKICAgICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgIF81NDEgPSAoKHRoaXMuZGlmZnNbaV0pKm4pK3Byb3Auc3RhcnQr
KHByb3AucHJvcGVydHkgIT0gIm9wYWNpdHkiID8gcHJvcC51bml0cyB8fCAicHgiIDogIiIpOwog
ICAgICAgICAgICB9CiAgICAgICAgICByZXRbZG9qby5kb20udG9DYW1lbENhc2UocHJvcC5wcm9w
ZXJ0eSldID0gXzU0MTsKICAgICAgICB9LCB0aGlzKTsKICAgICAgICByZXR1cm4gcmV0OwogICAg
ICB9OwogICAgfTsKICAgIHZhciBhbmltID0gbmV3IGRvam8ubGZ4LkFuaW1hdGlvbihfNTJlLCBu
ZXcgXzUzOShfNTJkKSwgXzUyZik7CiAgICBkb2pvLmV2ZW50LmNvbm5lY3QoYW5pbSwgIm9uQW5p
bWF0ZSIsIGZ1bmN0aW9uIChfNTQ0KQogICAgewogICAgICBkb2pvLmxhbmcuZm9yRWFjaChfNTJj
LCBmdW5jdGlvbiAobm9kZSkKICAgICAgewogICAgICAgIF81MzUobm9kZSwgXzU0NCk7CiAgICAg
IH0pOwogICAgfSk7CiAgICByZXR1cm4gYW5pbTsKICB9OwogIGRvam8ubGZ4LmZhZGVPdXQgPSBm
dW5jdGlvbiAoXzU0ZSwgXzU0ZiwgXzU1MCwgXzU1MSkKICB7CiAgICBfNTRlID0gZG9qby5sZngu
X2J5SWQoXzU0ZSk7CiAgICB2YXIgYW5pbSA9IGRvam8ubGZ4LnByb3BlcnR5QW5pbWF0aW9uKF81
NGUsIFt7ICJwcm9wZXJ0eSI6ICJvcGFjaXR5IiwgInN0YXJ0IjogZG9qby5kb20uZ2V0T3BhY2l0
eShfNTRlWzBdKSwgImVuZCI6IDAgfV0sIF81NGYsIF81NTApOwogICAgaWYgKF81NTEpCiAgICAg
IHsKICAgICAgICBkb2pvLmV2ZW50LmNvbm5lY3QoYW5pbSwgIm9uRW5kIiwgZnVuY3Rpb24gKCkK
ICAgICAgICB7CiAgICAgICAgICBfNTUxKF81NGUsIGFuaW0pOwogICAgICAgIH0pOwogICAgICB9
CiAgICByZXR1cm4gYW5pbTsKICB9OwogIGRvam8ubGZ4LmZhZGVIaWRlID0gZnVuY3Rpb24gKF81
NTgsIF81NTksIF81NWEsIF81NWIpCiAgewogICAgdmFyIGFuaW0gPSBkb2pvLmxmeC5mYWRlT3V0
KF81NTgsIF81NTksIF81NWEsIGZ1bmN0aW9uICgpCiAgICB7CiAgICAgIGRvam8uZG9tLmhpZGUo
XzU1OCk7CiAgICAgIF81NWIoXzU1OCwgYW5pbSk7CiAgICB9KTsKICAgIHJldHVybiBhbmltOwog
IH07CiAgZG9qby5sZngudG9nZ2xlID0ge307CiAgZG9qby5sZngudG9nZ2xlLnBsYWluID0geyAi
c2hvdyI6IGZ1bmN0aW9uIChub2RlLCBfNWI1LCBfNWI2LCBfNWI3KQogIHsKICAgIGRvam8uZG9t
LnNob3cobm9kZSk7CiAgICBpZiAoZG9qby5sYW5nLmlzRnVuY3Rpb24oXzViNykpCiAgICAgIHsK
ICAgICAgICBfNWI3KCk7CiAgICAgIH0KICB9LCAiaGlkZSI6IGZ1bmN0aW9uIChub2RlLCBfNWI5
LCBfNWJhLCBfNWJiKQogIHsKICAgIGRvam8uZG9tLmhpZGUobm9kZSk7CiAgICBpZiAoZG9qby5s
YW5nLmlzRnVuY3Rpb24oXzViYikpCiAgICAgIHsKICAgICAgICBfNWJiKCk7CiAgICAgIH0KICB9
IH07CiAgZG9qby5kZWNsYXJlKCJkb2pvLndpZGdldC5IdG1sV2lkZ2V0IiwgZG9qby53aWRnZXQu
RG9tV2lkZ2V0LCB7ICJ3aWRnZXRUeXBlIjogIkh0bWxXaWRnZXQiLCAidGVtcGxhdGVDc3NQYXRo
IjogbnVsbCwgInRlbXBsYXRlUGF0aCI6IG51bGwsICJ0b2dnbGUiOiAicGxhaW4iLCAidG9nZ2xl
RHVyYXRpb24iOiAxNTAsICJhbmltYXRpb25JblByb2dyZXNzIjogZmFsc2UsICJpbml0aWFsaXpl
IjogZnVuY3Rpb24gKGFyZ3MsIGZyYWcpCiAgewogIH0sICJwb3N0TWl4SW5Qcm9wZXJ0aWVzIjog
ZnVuY3Rpb24gKGFyZ3MsIGZyYWcpCiAgewogICAgdGhpcy50b2dnbGVPYmogPSBkb2pvLmxmeC50
b2dnbGVbdGhpcy50b2dnbGUudG9Mb3dlckNhc2UoKV0gfHwgZG9qby5sZngudG9nZ2xlLnBsYWlu
OwogIH0sICJnZXRDb250YWluZXJIZWlnaHQiOiBmdW5jdGlvbiAoKQogIHsKICB9LCAiZ2V0Q29u
dGFpbmVyV2lkdGgiOiBmdW5jdGlvbiAoKQogIHsKICAgIHJldHVybiB0aGlzLnBhcmVudC5kb21O
b2RlLm9mZnNldFdpZHRoOwogIH0sICJzZXROYXRpdmVIZWlnaHQiOiBmdW5jdGlvbiAoXzVkYSkK
ICB7CiAgICB2YXIgY2ggPSB0aGlzLmdldENvbnRhaW5lckhlaWdodCgpOwogIH0sICJjcmVhdGVO
b2Rlc0Zyb21UZXh0IjogZnVuY3Rpb24gKHR4dCwgd3JhcCkKICB7CiAgICByZXR1cm4gZG9qby5k
b20uY3JlYXRlTm9kZXNGcm9tVGV4dCh0eHQsIHdyYXApOwogIH0sICJkZXN0cm95UmVuZGVyaW5n
IjogZnVuY3Rpb24gKF81ZGUpCiAge3RyeSAKICAgIHsKICAgICAgaWYgKCFfNWRlKQogICAgICAg
IHsKICAgICAgICAgIGRvam8uZXZlbnQuYnJvd3Nlci5jbGVhbih0aGlzLmRvbU5vZGUpOwogICAg
ICAgIH0KICAgICAgdGhpcy5kb21Ob2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5kb21O
b2RlKTsKICAgICAgZGVsZXRlIHRoaXMuZG9tTm9kZTsKICAgIH0KICAgIGNhdGNoIChlKQogICAg
ewogICAgfQogIH0sICJpc1Nob3dpbmciOiBmdW5jdGlvbiAoKQogIHsKICAgIHJldHVybiBkb2pv
LmRvbS5pc1Nob3dpbmcodGhpcy5kb21Ob2RlKTsKICB9LCAidG9nZ2xlU2hvd2luZyI6IGZ1bmN0
aW9uICgpCiAgewogICAgaWYgKHRoaXMuaXNIaWRkZW4pCiAgICAgIHsKICAgICAgICB0aGlzLnNo
b3coKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CiAgICAgICAgdGhpcy5oaWRlKCk7CiAgICAg
IH0KICB9LCAic2hvdyI6IGZ1bmN0aW9uICgpCiAgewogICAgdGhpcy5hbmltYXRpb25JblByb2dy
ZXNzID0gdHJ1ZTsKICAgIHRoaXMuaXNIaWRkZW4gPSBmYWxzZTsKICAgIHRoaXMudG9nZ2xlT2Jq
LnNob3codGhpcy5kb21Ob2RlLCB0aGlzLnRvZ2dsZUR1cmF0aW9uLCBudWxsLCBkb2pvLmxhbmcu
aGl0Y2godGhpcywgdGhpcy5vblNob3cpLCB0aGlzLmV4cGxvZGVTcmMpOwogIH0sICJvblNob3ci
OiBmdW5jdGlvbiAoKQogIHsKICAgIHRoaXMuYW5pbWF0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOwog
IH0sICJoaWRlIjogZnVuY3Rpb24gKCkKICB7CiAgICB0aGlzLmFuaW1hdGlvbkluUHJvZ3Jlc3Mg
PSB0cnVlOwogICAgdGhpcy5pc0hpZGRlbiA9IHRydWU7CiAgICB0aGlzLnRvZ2dsZU9iai5oaWRl
KHRoaXMuZG9tTm9kZSwgdGhpcy50b2dnbGVEdXJhdGlvbiwgbnVsbCwgZG9qby5sYW5nLmhpdGNo
KHRoaXMsIHRoaXMub25IaWRlKSwgdGhpcy5leHBsb2RlU3JjKTsKICB9LCAib25IaWRlIjogZnVu
Y3Rpb24gKCkKICB7CiAgICB0aGlzLmFuaW1hdGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKICB9LCAi
X2lzUmVzaXplZCI6IGZ1bmN0aW9uICh3LCBoKQogIHsKICAgIGlmICghdGhpcy5pc1Nob3dpbmco
KSkKICAgICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgdyA9IHcgfHwgZG9q
by5kb20uZ2V0T3V0ZXJXaWR0aCh0aGlzLmRvbU5vZGUpOwogICAgaCA9IGggfHwgZG9qby5kb20u
Z2V0T3V0ZXJIZWlnaHQodGhpcy5kb21Ob2RlKTsKICAgIGlmICh0aGlzLndpZHRoID09IHcgJiYg
dGhpcy5oZWlnaHQgPT0gaCkKICAgICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQog
ICAgdGhpcy53aWR0aCA9IHc7CiAgICB0aGlzLmhlaWdodCA9IGg7CiAgICByZXR1cm4gdHJ1ZTsK
ICB9LCAib25QYXJlbnRSZXNpemVkIjogZnVuY3Rpb24gKCkKICB7CiAgICBpZiAoIXRoaXMuX2lz
UmVzaXplZCgpKQogICAgICB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICB0aGlzLm9uUmVz
aXplZCgpOwogIH0sICJyZXNpemVUbyI6IGZ1bmN0aW9uICh3LCBoKQogIHsKICAgIGlmICghdGhp
cy5faXNSZXNpemVkKHcsIGgpKQogICAgICB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICBk
b2pvLmRvbS5zZXRPdXRlcldpZHRoKHRoaXMuZG9tTm9kZSwgdyk7CiAgICBkb2pvLmRvbS5zZXRP
dXRlckhlaWdodCh0aGlzLmRvbU5vZGUsIGgpOwogICAgdGhpcy5vblJlc2l6ZWQoKTsKICB9LCAi
cmVzaXplU29vbiI6IGZ1bmN0aW9uICgpCiAgewogICAgaWYgKHRoaXMuaXNTaG93aW5nKCkpCiAg
ICAgIHsKICAgICAgICBzZXRUaW1lb3V0KHRoaXMsIHRoaXMub25SZXNpemVkLCAwKTsKICAgICAg
fQogIH0sICJvblJlc2l6ZWQiOiBmdW5jdGlvbiAoKQogIHsKICAgIGRvam8ubGFuZy5mb3JFYWNo
KHRoaXMuY2hpbGRyZW4sIGZ1bmN0aW9uIChfNWUzKQogICAgewogICAgICBfNWUzLm9uUGFyZW50
UmVzaXplZCgpOwogICAgfSk7CiAgfSB9KTsKCgogIGRvam8ud2lkZ2V0LmRlZmluZVdpZGdldCgi
ZG9qby53aWRnZXQuaHRtbC5CIiwgZG9qby53aWRnZXQuSHRtbFdpZGdldCwgeyAgfSk7Cgpkb2pv
LmRvbS5sYXlvdXQgPSBmdW5jdGlvbihjb250YWluZXIsIGNoaWxkcmVuLCBsYXlvdXRQcmlvcml0
eSkgewoJZG9qby5kb20uYWRkQ2xhc3MoY29udGFpbmVyLCAiZG9qb0xheW91dENvbnRhaW5lciIp
OwoKCS8vIGNvcHkgY2hpbGRyZW4gYXJyYXkgYW5kIHJlbW92ZSBlbGVtZW50cyB3L291dCBsYXlv
dXQKCWNoaWxkcmVuID0gZG9qby5sYW5nLmZpbHRlcihjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQp
ewoJCXJldHVybiBkb2pvLmxhbmcuaW5BcnJheShbInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdo
dCIsImNsaWVudCIsImZsb29kIl0sIGNoaWxkLmxheW91dEFsaWduKQoJfSk7CgoJLy8gcmVtYWlu
aW5nIHNwYWNlIChibGFuayBhcmVhIHdoZXJlIG5vdGhpbmcgaGFzIGJlZW4gd3JpdHRlbikKCXZh
ciBmPXsKCQl0b3A6IGRvam8uZG9tLmdldFBpeGVsVmFsdWUoY29udGFpbmVyLCAicGFkZGluZy10
b3AiLCB0cnVlKSwKCQlsZWZ0OiBkb2pvLmRvbS5nZXRQaXhlbFZhbHVlKGNvbnRhaW5lciwgInBh
ZGRpbmctbGVmdCIsIHRydWUpLAoJCWhlaWdodDogZG9qby5kb20uZ2V0Q29udGVudEhlaWdodChj
b250YWluZXIpLAoJCXdpZHRoOiBkb2pvLmRvbS5nZXRDb250ZW50V2lkdGgoY29udGFpbmVyKQoJ
fTsKCgkvLyBzZXQgcG9zaXRpb25zL3NpemVzCglkb2pvLmxhbmcuZm9yRWFjaChjaGlsZHJlbiwg
ZnVuY3Rpb24oY2hpbGQpewoJCXZhciBlbG09Y2hpbGQuZG9tTm9kZTsKCQl2YXIgcG9zPWNoaWxk
LmxheW91dEFsaWduOwoKCQkvLyBzZXQgZWxlbSB0byB1cHBlciBsZWZ0IGNvcm5lciBvZiB1bnVz
ZWQgc3BhY2U7IG1heSBtb3ZlIGl0IGxhdGVyCgkJd2l0aChlbG0uc3R5bGUpewoJCQlsZWZ0ID0g
Zi5sZWZ0KyJweCI7CgkJCXRvcCA9IGYudG9wKyJweCI7CgkJCWJvdHRvbSA9ICJhdXRvIjsKCQkJ
cmlnaHQgPSAiYXV0byI7CgkJfQoKCQkvLyBzZXQgc2l6ZSAmJiBhZGp1c3QgcmVjb3JkIG9mIHJl
bWFpbmluZyBzcGFjZS4KCQkvLyBub3RlIHRoYXQgc2V0dGluZyB0aGUgd2lkdGggb2YgYSA8ZGl2
PiBtYXkgYWZmZWN0IGl0J3MgaGVpZ2h0LgoJCS8vIFRPRE86IHNhbWUgaXMgdHJ1ZSBmb3Igd2lk
Z2V0cyBidXQgbmVlZCB0byBpbXBsZW1lbnQgQVBJIHRvIHN1cHBvcnQgdGhhdAoJCWlmICggKHBv
cz09InRvcCIpfHwocG9zPT0iYm90dG9tIikgKSB7CgkJCWRvam8uZG9tLnNldE91dGVyV2lkdGgo
ZWxtLCBmLndpZHRoKTsKCQkJdmFyIGggPSBkb2pvLmRvbS5nZXRPdXRlckhlaWdodChlbG0pOwoJ
CQlmLmhlaWdodCAtPSBoOwoJCQlpZihwb3M9PSJ0b3AiKXsKCQkJCWYudG9wICs9IGg7CgkJCX1l
bHNlewoJCQkJZWxtLnN0eWxlLnRvcCA9IGYudG9wICsgZi5oZWlnaHQgKyAicHgiOwoJCQl9CgkJ
fSBlbHNlIGlmKHBvcz09ImZsb29kIiB8fCBwb3M9PSJjbGllbnQiKXsKCQkJZG9qby5kb20uc2V0
T3V0ZXJXaWR0aChlbG0sIGYud2lkdGgpOwoJCQlkb2pvLmRvbS5zZXRPdXRlckhlaWdodChlbG0s
IGYuaGVpZ2h0KTsKCQl9CgkJCgl9KTsKfTsKCmRvam8ud2lkZ2V0Lmh0bWwuVGFiQ29udGFpbmVy
ID0gZnVuY3Rpb24oKSB7Cglkb2pvLndpZGdldC5IdG1sV2lkZ2V0LmNhbGwodGhpcyk7Cn0KCmRv
am8uaW5oZXJpdHMoZG9qby53aWRnZXQuaHRtbC5UYWJDb250YWluZXIsIGRvam8ud2lkZ2V0Lkh0
bWxXaWRnZXQpOwoKZG9qby5sYW5nLmV4dGVuZChkb2pvLndpZGdldC5odG1sLlRhYkNvbnRhaW5l
ciwgewoJd2lkZ2V0VHlwZTogIlRhYkNvbnRhaW5lciIsCiAgICBpc0NvbnRhaW5lcjogdHJ1ZSwK
CgkvLyBDb25zdHJ1Y3RvciBhcmd1bWVudHMKCWxhYmVsUG9zaXRpb246ICJ0b3AiLAoJY2xvc2VC
dXR0b246ICJub25lIiwKCgl1c2VWaXNpYmlsaXR5OiBmYWxzZSwJCS8vIHRydWUtLT51c2Ugdmlz
aWJpbGl0eTpoaWRkZW4gaW5zdGVhZCBvZiBkaXNwbGF5Om5vbmUKCQoJLy8gaWYgZmFsc2UsIFRh
YkNvbnRhaW5lcnMgc2l6ZSBjaGFuZ2VzIGFjY29yZGluZyB0byBzaXplIG9mIGN1cnJlbnRseSBz
ZWxlY3RlZCB0YWIKCWRvTGF5b3V0OiB0cnVlLAoKCXRlbXBsYXRlU3RyaW5nOiAnPGRpdiBjbGFz
cz0iZG9qb1RhYkNvbnRhaW5lciIgd2FpUm9sZT0idGFicGFuZWwiPjxkaXYgZG9qb0F0dGFjaFBv
aW50PSJkb2pvVGFiTGFiZWxzIj48L2Rpdj48ZGl2IGNsYXNzPSJkb2pvVGFiUGFuZVdyYXBwZXIi
IGRvam9BdHRhY2hQb2ludD0iY29udGFpbmVyTm9kZSIgPjwvZGl2PjwvZGl2PicsCgoJc2VsZWN0
ZWRUYWI6ICIiLAkJLy8gaW5pdGlhbGx5IHNlbGVjdGVkIHRhYiAod2lkZ2V0SWQpCgoJZmlsbElu
VGVtcGxhdGU6IGZ1bmN0aW9uKGFyZ3MsIGZyYWcpIHsKCQkvLyBDb3B5IHN0eWxlIGluZm8gZnJv
bSBpbnB1dCBub2RlIHRvIG91dHB1dCBub2RlCgkJdmFyIHNvdXJjZSA9IHRoaXMuZ2V0RnJhZ05v
ZGVSZWYoZnJhZyk7CgkJZG9qby5kb20uY29weVN0eWxlKHRoaXMuZG9tTm9kZSwgc291cmNlKTsK
CgkJZG9qby53aWRnZXQuaHRtbC5UYWJDb250YWluZXIuc3VwZXJjbGFzcy5maWxsSW5UZW1wbGF0
ZS5jYWxsKHRoaXMsIGFyZ3MsIGZyYWcpOwoJfSwKCglwb3N0Q3JlYXRlOiBmdW5jdGlvbihhcmdz
LCBmcmFnKSB7CgkJLy8gTG9hZCBhbGwgdGhlIHRhYnMsIGNyZWF0aW5nIGEgbGFiZWwgZm9yIGVh
Y2ggb25lCgkJZm9yKHZhciBpPTA7IGk8dGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7CgkJCXRo
aXMuX3NldHVwVGFiKHRoaXMuY2hpbGRyZW5baV0pOwoJCX0KCgkJaWYgKHRoaXMuZG9MYXlvdXQp
ewoJCQlkb2pvLmRvbS5hZGRDbGFzcyh0aGlzLmRvam9UYWJMYWJlbHMsICJkb2pvVGFiTGFiZWxz
LSIrdGhpcy5sYWJlbFBvc2l0aW9uKTsKCQl9IGVsc2UgewoJCQlkb2pvLmRvbS5hZGRDbGFzcyh0
aGlzLmRvam9UYWJMYWJlbHMsICJkb2pvVGFiTGFiZWxzLSIrdGhpcy5sYWJlbFBvc2l0aW9uKyIt
bm9MYXlvdXQiKTsKCQl9CgogICAgICAgIHRoaXMuX2RvU2l6aW5nKCk7CgoJCS8vIERpc3BsYXkg
dGhlIHNlbGVjdGVkIHRhYgoJCWlmKHRoaXMuc2VsZWN0ZWRUYWJXaWRnZXQpewoJCQl0aGlzLnNl
bGVjdFRhYih0aGlzLnNlbGVjdGVkVGFiV2lkZ2V0LCB0cnVlKTsKCQl9Cgl9LAoKCWFkZENoaWxk
OiBmdW5jdGlvbihjaGlsZCwgb3ZlcnJpZGVDb250YWluZXJOb2RlLCBwb3MsIHJlZiwgaW5zZXJ0
SW5kZXgpewoJCXRoaXMuX3NldHVwVGFiKGNoaWxkKTsKCQlkb2pvLndpZGdldC5odG1sLlRhYkNv
bnRhaW5lci5zdXBlcmNsYXNzLmFkZENoaWxkLmNhbGwodGhpcyxjaGlsZCwgb3ZlcnJpZGVDb250
YWluZXJOb2RlLCBwb3MsIHJlZiwgaW5zZXJ0SW5kZXgpOwoKCQkvLyBpbiBjYXNlIHRoZSB0YWIg
bGFiZWxzIGhhdmUgb3ZlcmZsb3dlZCBmcm9tIG9uZSBsaW5lIHRvIHR3byBsaW5lcwoJfSwKCglf
c2V0dXBUYWI6IGZ1bmN0aW9uKHRhYil7CgkJdGFiLmRvbU5vZGUuc3R5bGUuZGlzcGxheT0ibm9u
ZSI7CgoJCS8vIENyZWF0ZSBsYWJlbAoJCXRhYi5kaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKCQlkb2pvLndpZGdldC53YWkuc2V0QXR0cih0YWIuZGl2LCAid2FpUm9sZSIsICJ0
YWIiKTsKCQlkb2pvLmRvbS5hZGRDbGFzcyh0YWIuZGl2LCAiZG9qb1RhYlBhbmVUYWIiKTsKCQl2
YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKCQlzcGFuLmlubmVySFRN
TCA9IHRhYi5sYWJlbDsKCQl0YWIuZGl2LmFwcGVuZENoaWxkKHNwYW4pOwoJCXRoaXMuZG9qb1Rh
YkxhYmVscy5hcHBlbmRDaGlsZCh0YWIuZGl2KTsKCQkKCQl2YXIgc2VsZiA9IHRoaXM7CgkJZG9q
by5ldmVudC5jb25uZWN0KHRhYi5kaXYsICJvbmNsaWNrIiwgZnVuY3Rpb24oKXsgc2VsZi5zZWxl
Y3RUYWIodGFiKTsgfSk7CgoJCWlmKCF0aGlzLnNlbGVjdGVkVGFiV2lkZ2V0IHx8IHRoaXMuc2Vs
ZWN0ZWRUYWI9PXRhYi53aWRnZXRJZCB8fCB0YWIuc2VsZWN0ZWQpewogICAgCQl0aGlzLnNlbGVj
dGVkVGFiV2lkZ2V0ID0gdGFiOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRoaXMuX2hp
ZGVUYWIodGFiKTsKICAgICAgICB9CgoJCWRvam8uZG9tLmFkZENsYXNzKHRhYi5kb21Ob2RlLCAi
ZG9qb1RhYlBhbmUiKTsKCQl3aXRoKHRhYi5kb21Ob2RlLnN0eWxlKXsKCQkJdG9wID0gZG9qby5k
b20uZ2V0UGl4ZWxWYWx1ZSh0aGlzLmNvbnRhaW5lck5vZGUsICJwYWRkaW5nLXRvcCIsIHRydWUp
OwoJCQlsZWZ0ID0gZG9qby5kb20uZ2V0UGl4ZWxWYWx1ZSh0aGlzLmNvbnRhaW5lck5vZGUsICJw
YWRkaW5nLWxlZnQiLCB0cnVlKTsKCQl9Cgl9LAoKCS8vIENvbmZpZ3VyZSB0aGUgY29udGVudCBw
YW5lIHRvIHRha2UgdXAgYWxsIHRoZSBzcGFjZSBleGNlcHQgZm9yIHdoZXJlIHRoZSB0YWIgbGFi
ZWxzIGFyZQoJX2RvU2l6aW5nOiBmdW5jdGlvbigpewoJCS8vIHBvc2l0aW9uIHRoZSBsYWJlbHMg
YW5kIHRoZSBjb250YWluZXIgbm9kZQoJCXZhciBsYWJlbEFsaWduPXRoaXMubGFiZWxQb3NpdGlv
bi5yZXBsYWNlKC8taC8sIiIpOwoJCXZhciBjaGlsZHJlbiA9IFsKCQkJe2RvbU5vZGU6IHRoaXMu
ZG9qb1RhYkxhYmVscywgbGF5b3V0QWxpZ246IGxhYmVsQWxpZ259LAoJCQl7ZG9tTm9kZTogdGhp
cy5jb250YWluZXJOb2RlLCBsYXlvdXRBbGlnbjogImNsaWVudCJ9CgkJXTsKCgoJCWlmICh0aGlz
LmRvTGF5b3V0KSB7CgkJCWRvam8uZG9tLmxheW91dCh0aGlzLmRvbU5vZGUsIGNoaWxkcmVuKTsK
CQl9IAoJCQkKCQkvLyBzaXplIHRoZSBjdXJyZW50IHRhYgoJCS8vIFRPRE86IHNob3VsZCBoYXZl
IHB0ciB0byBjdXJyZW50IHRhYiByYXRoZXIgdGhhbiBzZWFyY2hpbmcKCQl2YXIgY3c9ZG9qby5k
b20uZ2V0Q29udGVudFdpZHRoKHRoaXMuY29udGFpbmVyTm9kZSk7CgkJdmFyIGNoPWRvam8uZG9t
LmdldENvbnRlbnRIZWlnaHQodGhpcy5jb250YWluZXJOb2RlKTsKCQlkb2pvLmxhbmcuZm9yRWFj
aCh0aGlzLmNoaWxkcmVuLCBmdW5jdGlvbihjaGlsZCl7CgkJCS8vaWYgKHRoaXMuZG9MYXlvdXQp
IHsKCQkJCWlmKGNoaWxkLnNlbGVjdGVkKXsKCQkJCQljaGlsZC5yZXNpemVUbyhjdywgY2gpOwoJ
CQkJfSAKCQkJLy99IGVsc2UgewoJCQkvLwljaGlsZC5vblJlc2l6ZWQoKTsKCQkJLy99CgkJfSk7
CgkJCgl9LAoKICAgIHJlbW92ZUNoaWxkOiBmdW5jdGlvbih0YWIpIHsKCgkJLy8gcmVtb3ZlIHRh
YiBldmVudCBoYW5kbGVycwoJCWlmICh0aGlzLmNsb3NlQnV0dG9uPT0idGFiIikgewoJCQl2YXIg
aW1nID0gdGFiLmRpdi5sYXN0Q2hpbGQubGFzdENoaWxkOwoJCQlpZiAoaW1nKSB7CgkJCQlkb2pv
LmRvbS5yZW1vdmVDbGFzcyhpbWcsICJkb2pvVGFiUGFuZVRhYkNsb3NlIiwgZnVuY3Rpb24gKCkg
eyB9KTsKCQkJfQoJCX0KCiAgICAgICAgZG9qby53aWRnZXQuaHRtbC5UYWJDb250YWluZXIuc3Vw
ZXJjbGFzcy5yZW1vdmVDaGlsZC5jYWxsKHRoaXMsIHRhYik7CgogICAgICAgIGRvam8uZG9tLnJl
bW92ZUNsYXNzKHRhYi5kb21Ob2RlLCAiZG9qb1RhYlBhbmUiKTsKICAgICAgICB0aGlzLmRvam9U
YWJMYWJlbHMucmVtb3ZlQ2hpbGQodGFiLmRpdik7CiAgICAgICAgZGVsZXRlKHRhYi5kaXYpOwoK
ICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRhYldpZGdldCA9PT0gdGFiKSB7CiAgICAgICAgICAg
IHRoaXMuc2VsZWN0ZWRUYWJXaWRnZXQgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgIGlmICh0aGlz
LmNoaWxkcmVuLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0VGFiKHRo
aXMuY2hpbGRyZW5bMF0sIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCQkvLyBpbiBj
YXNlIHRoZSB0YWIgbGFiZWxzIGhhdmUgb3ZlcmZsb3dlZCBmcm9tIG9uZSBsaW5lIHRvIHR3byBs
aW5lcwogICAgfSwKCiAgICBzZWxlY3RUYWI6IGZ1bmN0aW9uKHRhYiwgX25vUmVmcmVzaCkgewoJ
CS8vIERlc2VsZWN0IG9sZCB0YWIgYW5kIHNlbGVjdCBuZXcgb25lCgkJaWYgKHRoaXMuc2VsZWN0
ZWRUYWJXaWRnZXQpIHsKCQkJdGhpcy5faGlkZVRhYih0aGlzLnNlbGVjdGVkVGFiV2lkZ2V0KTsK
CQl9CgkJdGhpcy5zZWxlY3RlZFRhYldpZGdldCA9IHRhYjsKCQl0aGlzLl9zaG93VGFiKHRhYiwg
X25vUmVmcmVzaCk7Cgl9LAoKCV9zaG93VGFiOiBmdW5jdGlvbih0YWIsIF9ub1JlZnJlc2gpIHsK
CQlkb2pvLmRvbS5hZGRDbGFzcyh0YWIuZGl2LCAiY3VycmVudCIpOwoJCXRhYi5zZWxlY3RlZD10
cnVlOwoJCWlmICggdGhpcy51c2VWaXNpYmlsaXR5ICkgewoJCQl0YWIuZG9tTm9kZS5zdHlsZS52
aXNpYmlsaXR5PSJ2aXNpYmxlIjsKCQl9IGVsc2UgewoJCQkJdGFiLnNob3coKTsKCgkJCS8vIFhY
WDogdGhlIHZhbHVlcyBiZWxvdyBhcmUgd2hhdCBnb2VzIHdyb25nIGluIFNhZmFyaSwgYXBwYXJl
bnRseQoJCQl0YWIucmVzaXplVG8oCgkJCQlkb2pvLmRvbS5nZXRDb250ZW50V2lkdGgodGhpcy5j
b250YWluZXJOb2RlKSwKCQkJCWRvam8uZG9tLmdldENvbnRlbnRIZWlnaHQodGhpcy5jb250YWlu
ZXJOb2RlKQoJCQkpOwoJCX0KCX0sCgoJX2hpZGVUYWI6IGZ1bmN0aW9uKHRhYikgewoJCWRvam8u
ZG9tLnJlbW92ZUNsYXNzKHRhYi5kaXYsICJjdXJyZW50Iik7CgkJdGFiLnNlbGVjdGVkPWZhbHNl
OwoJCWlmKCB0aGlzLnVzZVZpc2liaWxpdHkgKXsKCQkJdGFiLmRvbU5vZGUuc3R5bGUudmlzaWJp
bGl0eT0iaGlkZGVuIjsKCQl9ZWxzZXsKCQkJdGFiLmhpZGUoKTsKCQl9Cgl9LAoKCV9ydW5PbkNs
b3NlVGFiOiBmdW5jdGlvbih0YWIpIHsKCQl2YXIgb25jID0gdGFiLmV4dHJhQXJncy5vbkNsb3Nl
IHx8IHRhYi5leHRyYUFyZ3Mub25jbG9zZTsKCQl2YXIgZmNuID0gZG9qby5sYW5nLmlzRnVuY3Rp
b24ob25jKSA/IG9uYyA6IHdpbmRvd1tvbmNdOwoJCXZhciByZW1vdmUgPSBkb2pvLmxhbmcuaXNG
dW5jdGlvbihmY24pID8gZmNuKHRoaXMsdGFiKSA6IHRydWU7CgkJaWYocmVtb3ZlKSB7CgkJCXRo
aXMucmVtb3ZlQ2hpbGQodGFiKTsKCQkJLy8gbWFrZXMgc3VyZSB3ZSBjYW4gY2xlYW4gdXAgZXhl
Y3V0ZVNjcmlwdHMgaW4gQ29udGVudFBhbmUgb25VbkxvYWQKCQkJdGFiLmRlc3Ryb3koKTsKCQl9
Cgl9LAoKCW9uUmVzaXplZDogZnVuY3Rpb24oKSB7Cgl9Cn0pOwpkb2pvLndpZGdldC50YWdzLmFk
ZFBhcnNlVHJlZUhhbmRsZXIoImRvam86VGFiQ29udGFpbmVyIik7Cgpkb2pvLndpZGdldC5kZWZp
bmVXaWRnZXQoIm15LndpZGdldC5kZW1vRW5naW5lLkRlbW9JdGVtIiwgCglkb2pvLndpZGdldC5I
dG1sV2lkZ2V0LCAKCXsKCQl0ZW1wbGF0ZVN0cmluZzogJzxkaXYgY2xhc3M9ImRvbU5vZGUiIGRv
am9BdHRhY2hQb2ludD0iZG9tTm9kZSI+IDxkaXYgZG9qb0F0dGFjaFBvaW50PSJzdW1tYXJ5Qm94
Tm9kZSI+IDx0YWJsZSB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIw
IiA8dGJvZHk+IDx0cj4gPHRkIGRvam9BdHRhY2hQb2ludD0ic2NyZWVuc2hvdFRkTm9kZSIgdmFs
aWduPSJ0b3AiIHdpZHRoPSIxJSI+IDxpbnB1dCBkb2pvQXR0YWNoUG9pbnQ9InRodW1ibmFpbElt
YWdlTm9kZSIgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCduYXZcJykub2JqLm9u
U2VsZWN0RGVtbygpIiB0eXBlPSJidXR0b24iIHZhbHVlPSJjbGljayBtZSIvPiA8L3RkPiA8dGQg
ZG9qb0F0dGFjaFBvaW50PSJzdW1tYXJ5Q29udGFpbmVyTm9kZSIgdmFsaWduPSJ0b3AiPiA8L3Rk
PiA8L3RyPiA8L3Rib2R5PiA8L3RhYmxlPiA8L2Rpdj4gPC9kaXY+JywKCgkJcG9zdENyZWF0ZTog
ZnVuY3Rpb24oKSB7CgkJCWRvam8uZG9tLmFkZENsYXNzKHRoaXMuc3VtbWFyeUJveE5vZGUsIHRo
aXMuc3VtbWFyeUJveENsYXNzKTsKCQkJZG9qby5kb20uYWRkQ2xhc3ModGhpcy5zY3JlZW5zaG90
VGROb2RlLCB0aGlzLnNjcmVlbnNob3RUZENsYXNzKTsKCgkJCXRoaXMudGh1bWJuYWlsSW1hZ2VO
b2RlLnNyYyA9IHRoaXMudGh1bWJuYWlsOwoJCQl0aGlzLnRodW1ibmFpbEltYWdlTm9kZS5uYW1l
PXRoaXMubmFtZTsKCQl9LAoJCW9uU2VsZWN0RGVtbzogZnVuY3Rpb24oKSB7CgkJCS8vQXR0YWNo
IHRvIHRoaXMgdG8gZG8gc29tZXRoaW5nIHdoZW4gYSBkZW1vIGlzIHNlbGVjdGVkCgkJfQoJfSwK
CSIiLAoJZnVuY3Rpb24oKSB7CgkJdGhpcy5kZW1vID0gIiI7CgoJCXRoaXMuZG9tTm9kZUNsYXNz
PSJkZW1vSXRlbVdyYXBwZXIiOwoKCQl0aGlzLnN1bW1hcnlCb3hOb2RlPSIiOwoJCXRoaXMuc3Vt
bWFyeUJveENsYXNzPSJkZW1vSXRlbVN1bW1hcnlCb3giOwoKCQl0aGlzLnRodW1ibmFpbEltYWdl
Tm9kZT0iIjsKCQl0aGlzLnZpZXdEZW1vSW1hZ2VOb2RlPSIiOwoKCQl0aGlzLnNjcmVlbnNob3RU
ZE5vZGU9IiI7CgkJdGhpcy5zY3JlZW5zaG90VGRDbGFzcz0iZGVtb0l0ZW1TY3JlZW5zaG90IjsK
CgkJdGhpcy5uYW1lPSJTb21lIERlbW8iOwoJCXRoaXMuZGVzY3JpcHRpb249IlRoaXMgaXMgdGhl
IGRlc2NyaXB0aW9uIG9mIHRoaXMgZGVtby4iOwoJCXRoaXMudGh1bWJuYWlsPSJpbWFnZXMvdGVz
dF90aHVtYi5naWYiOwoJCXRoaXMudmlld0RlbW9JbWFnZT0iaW1hZ2VzL3ZpZXdEZW1vLnBuZyI7
Cgl9Cik7CgovLyBUaGVzZSBhcmd1bWVudHMgY2FuIGJlIHNwZWNpZmllZCBmb3IgdGhlIGNoaWxk
cmVuIG9mIGEgVGFiQ29udGFpbmVyLgovLyBTaW5jZSBhbnkgd2lkZ2V0IGNhbiBiZSBzcGVjaWZp
ZWQgYXMgYSBUYWJDb250YWluZXIgY2hpbGQsIG1peCB0aGVtCi8vIGludG8gdGhlIGJhc2Ugd2lk
Z2V0IGNsYXNzLiAgKFRoaXMgaXMgYSBoYWNrLCBidXQgaXQncyBlZmZlY3RpdmUuKQpkb2pvLmxh
bmcuZXh0ZW5kKGRvam8ud2lkZ2V0LldpZGdldCwgewoJbGFiZWw6ICIiLAoJc2VsZWN0ZWQ6IGZh
bHNlCS8vIGlzIHRoaXMgdGFiIGN1cnJlbnRseSBzZWxlY3RlZD8KfSk7CgoKZG9qby53aWRnZXQu
ZGVmaW5lV2lkZ2V0KCJteS53aWRnZXQuZGVtb0VuZ2luZS5EZW1vTmF2aWdhdG9yIiwgCglkb2pv
LndpZGdldC5IdG1sV2lkZ2V0LCAKCXsKCQl0ZW1wbGF0ZVN0cmluZzogJzxkaXYgaWQ9Im5hdiIg
ZG9qb0F0dGFjaFBvaW50PSJkb21Ob2RlIj4gPHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2lu
Zz0iMCIgY2VsbHBhZGRpbmc9IjUiPiA8dGJvZHk+IDx0ciBkb2pvQXR0YWNoUG9pbnQ9Im5hdmln
YXRpb25Db250YWluZXIiPiA8dGQgZG9qb0F0dGFjaFBvaW50PSJkZW1vTGlzdE5vZGUiIHZhbGln
bj0idG9wIj4gPGRpdiBkb2pvQXR0YWNoUG9pbnQ9ImRlbW9MaXN0V3JhcHBlck5vZGUiPiA8ZGl2
IGRvam9BdHRhY2hQb2ludD0iZGVtb0xpc3RDb250YWluZXJOb2RlIj4gPC9kaXY+PC9kaXY+PC90
ZD48L3RyPiA8dHI+PHRkIGNvbHNwYW49IjIiPjxkaXYgZG9qb0F0dGFjaFBvaW50PSJkZW1vTm9k
ZSI+PC9kaXY+IDwvdGQ+IDwvdHI+IDwvdGJvZHk+IDwvdGFibGU+IDwvZGl2PicsCgoJCXBvc3RD
cmVhdGU6IGZ1bmN0aW9uKCkgewoJCQl0aGlzLmRvbU5vZGUub2JqID0gdGhpczsKCQkJZG9qby5k
b20uYWRkQ2xhc3ModGhpcy5kb21Ob2RlLHRoaXMuZG9tTm9kZUNsYXNzKTsKCQkJZG9qby5kb20u
YWRkQ2xhc3ModGhpcy5kZW1vTGlzdFdyYXBwZXJOb2RlLHRoaXMuZGVtb0xpc3RXcmFwcGVyQ2xh
c3MpOwoJCQlkb2pvLmRvbS5hZGRDbGFzcyh0aGlzLmRlbW9MaXN0Q29udGFpbmVyTm9kZSx0aGlz
LmRlbW9MaXN0Q29udGFpbmVyQ2xhc3MpOwoKCQkJCWRvam8uZG9tLmhpZGUodGhpcy5kZW1vTGlz
dFdyYXBwZXJOb2RlKTsgCgoJCQl0aGlzLmFkZERlbW8oIk1haWwiKTsKCgkJCXRoaXMuZGVtb0Nv
bnRhaW5lciA9IGRvam8ud2lkZ2V0LmNyZWF0ZVdpZGdldCgiRGVtb0NvbnRhaW5lciIse3JldHVy
bkltYWdlOiB0aGlzLnJldHVybkltYWdlfSx0aGlzLmRlbW9Ob2RlKTsKCQkJdGhpcy5kZW1vQ29u
dGFpbmVyLmhpZGUoKTsKCQl9LAoKCQlzaG93OiBmdW5jdGlvbigpIHsKCQkJZG9qby5kb20uc2hv
dyh0aGlzLmRvbU5vZGUpOwoJCQlkb2pvLmRvbS5zZXRPcGFjaXR5KHRoaXMuZG9tTm9kZSwxKTsK
CQkJZG9qby5kb20uc2V0T3BhY2l0eSh0aGlzLm5hdmlnYXRpb25Db250YWluZXIsMSk7CgoJCX0s
CgoJCWFkZERlbW86IGZ1bmN0aW9uKGRlbW9OYW1lKSB7CgoJCQkJZG9qby5kb20uc2hvdyh0aGlz
LmRlbW9MaXN0V3JhcHBlck5vZGUpOwoKCQkJdmFyIG5ld0RlbW8gPSBkb2pvLndpZGdldC5jcmVh
dGVXaWRnZXQoIkRlbW9JdGVtIix7dmlld0RlbW9JbWFnZTogdGhpcy52aWV3RGVtb0ltYWdlLCBu
YW1lOiIiLCBkZXNjcmlwdGlvbjogIiIsIHRodW1ibmFpbDogIiJ9KTsKCQkJdGhpcy5kZW1vTGlz
dENoaWxkcmVuLnB1c2gobmV3RGVtbyk7CgkJCXRoaXMuZGVtb0xpc3RDb250YWluZXJOb2RlLmFw
cGVuZENoaWxkKG5ld0RlbW8uZG9tTm9kZSk7CQoJCQlkb2pvLmV2ZW50LmNvbm5lY3QobmV3RGVt
bywib25TZWxlY3REZW1vIix0aGlzLCJvblNlbGVjdERlbW8iKTsKCQl9LAoKCQlvblNlbGVjdERl
bW86IGZ1bmN0aW9uKGUpIHsKCQkJLy9BdHRhY2ggdG8gdGhpcyB0byBkbyBzb21ldGhpbmcgd2hl
biBhIGRlbW8gaXMgc2VsZWN0ZWQKCgkJCQkvL2Rvam8uZG9tLmhpZGUodGhpcy5uYXZpZ2F0aW9u
Q29udGFpbmVyKSA7CgkJCQkvL3RoaXMuZGVtb0NvbnRhaW5lci5zaG93KCk7CgkJCQkvL3RoaXMu
ZGVtb0NvbnRhaW5lci5zaG93RGVtbygpOwoKCQkJCWRvam8ubGZ4LmZhZGVIaWRlKHRoaXMubmF2
aWdhdGlvbkNvbnRhaW5lciw1MCxudWxsLGRvam8ubGFuZy5oaXRjaCh0aGlzLCBmdW5jdGlvbigp
IHsKCQkJCQl0aGlzLmRlbW9Db250YWluZXIuc2hvdygpOwkKCQkJCQl0aGlzLmRlbW9Db250YWlu
ZXIuc2hvd0RlbW8oKTsKCQkJCX0pKS5wbGF5KCk7CgoJCQl0aGlzLmRlbW9Db250YWluZXIubG9h
ZERlbW8odGhpcy5yZWdpc3RyeS5kZWZpbml0aW9uc1tlLnRhcmdldC5uYW1lXS51cmwpOwoJCX0K
CQkKCX0sCgkiIiwKCWZ1bmN0aW9uKCkgewoJCXRoaXMucmVnaXN0cnk9ZnVuY3Rpb24oKXt9OwoK
CQl0aGlzLm5hdmlnYXRpb25Db250YWluZXI9IiI7CgoJCXRoaXMuZG9tTm9kZUNsYXNzPSJkZW1v
TmF2aWdhdG9yIjsKCgkJdGhpcy5kZW1vTm9kZT0iIjsKCQl0aGlzLmRlbW9Db250YWluZXI9IiI7
CgoJCXRoaXMuZGVtb0xpc3RXcmFwcGVyTm9kZT0iIjsKCQl0aGlzLmRlbW9MaXN0V3JhcHBlckNs
YXNzPSJkZW1vTmF2aWdhdG9yTGlzdFdyYXBwZXIiOwoJCXRoaXMuZGVtb0xpc3RDb250YWluZXJD
bGFzcz0iZGVtb05hdmlnYXRvckxpc3RDb250YWluZXIiOwoKCQl0aGlzLnJldHVybkltYWdlPSJp
bWFnZXMvZG9qb0RlbW9zLmdpZiI7CgkJdGhpcy52aWV3RGVtb0ltYWdlPSJpbWFnZXMvdmlld0Rl
bW8ucG5nIjsKCQl0aGlzLmRlbW9MaXN0Q2hpbGRyZW4gPSBbXTsKCQl0aGlzLmNhdGVnb3JpZXND
aGlsZHJlbiA9IFtdOwoJfQopOwoKCmRvam8ud2lkZ2V0LmRlZmluZVdpZGdldCgibXkud2lkZ2V0
LmRlbW9FbmdpbmUuRGVtb1BhbmUiLCAKCWRvam8ud2lkZ2V0Lkh0bWxXaWRnZXQsIAoJewoJICAg
ICAgICAvLyBPb3BzLCBJIG92ZXJyZWR1Y2VkIGl0LCB0aGlzIG5vdyBzaG93cyB0aGUgaWZyYW1l
LCBhbHRob3VnaCB0aGUgaGVpZ2h0IHN0aWxsIGRvZXNuJ3QgbWF0Y2gKCQkvLyBGaXJlZm94Cgkg
ICAgICAgIC8vIHRlbXBsYXRlU3RyaW5nOiAnPGRpdiBzdHlsZT0iYmFja2dyb3VuZDogZ3JlZW4i
PjxpZnJhbWUgc3JjPSJkYXRhOnRleHQvaHRtbCw8Ym9keSBiZ2NvbG9yPXJlZD4iPjwvaWZyYW1l
PjwvZGl2PicsCgoJICAgICAgICB0ZW1wbGF0ZVN0cmluZzogJzxkaXYgc3R5bGU9ImJhY2tncm91
bmQ6IGdyZWVuIj48L2Rpdj4nLAoJfQopOwoKZG9qby53aWRnZXQuZGVmaW5lV2lkZ2V0KCJteS53
aWRnZXQuZGVtb0VuZ2luZS5EZW1vQ29udGFpbmVyIiwgCglkb2pvLndpZGdldC5IdG1sV2lkZ2V0
LCAKCXsKCQl0ZW1wbGF0ZVN0cmluZzogJzxkaXYgZG9qb0F0dGFjaFBvaW50PSJkb21Ob2RlIj4g
PHRhYmxlIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjUiPiA8dGJv
ZHk+IDx0ciBkb2pvQXR0YWNoUG9pbnQ9ImhlYWRlck5vZGUiPiA8dGQgZG9qb0F0dGFjaFBvaW50
PSJyZXR1cm5Ob2RlIiB2YWxpZ249Im1pZGRsZSIgd2lkdGg9IjElIj4gPGltZyBkb2pvQXR0YWNo
UG9pbnQ9InJldHVybkltYWdlTm9kZSIgLz48L3RkPjwvdHI+IDx0cj4gPHRkIGNvbHNwYW49IjMi
PiA8ZGl2IGRvam9BdHRhY2hQb2ludD0idGFiTm9kZSI+IDwvZGl2PiA8L3RkPiA8L3RyPiA8L3Ri
b2R5PiA8L3RhYmxlPiA8L2Rpdj4nLAoKCQlwb3N0Q3JlYXRlOiBmdW5jdGlvbigpIHsKCQkJZG9q
by5kb20uYWRkQ2xhc3ModGhpcy50YWJOb2RlLCB0aGlzLnRhYkNsYXNzKTsKCQkJZG9qby5kb20u
YWRkQ2xhc3ModGhpcy5yZXR1cm5JbWFnZU5vZGUsIHRoaXMucmV0dXJuQ2xhc3MpOwoKCQkJdGhp
cy50YWJDb250YWluZXIgPSBkb2pvLndpZGdldC5jcmVhdGVXaWRnZXQoIlRhYkNvbnRhaW5lciIs
e30sdGhpcy50YWJOb2RlKTsKCgkJCXRoaXMuZGVtb1RhYiA9IGRvam8ud2lkZ2V0LmNyZWF0ZVdp
ZGdldCgiRGVtb1BhbmUiLHt9KTsKCQkJdGhpcy50YWJDb250YWluZXIuYWRkQ2hpbGQodGhpcy5k
ZW1vVGFiKTsKCgkJCWRvam8uZG9tLnNldE9wYWNpdHkodGhpcy5kb21Ob2RlLDApOwoJCQlkb2pv
LmRvbS5oaWRlKHRoaXMuZG9tTm9kZSk7CgkJfSwKCgkJbG9hZERlbW86IGZ1bmN0aW9uKHVybCkg
ewoJCQl0aGlzLmRlbW9UYWIuX2xhdW5jaERlbW8oKTsKCQkJdGhpcy5zaG93RGVtbygpOwoJCX0s
CgoJCXNob3dEZW1vOiBmdW5jdGlvbigpIHsKCQkJdGhpcy50YWJDb250YWluZXIuc2VsZWN0VGFi
KHRoaXMuZGVtb1RhYik7CgkJfSwKCgkJc2hvdzogZnVuY3Rpb24oKSB7CgkJCWRvam8uZG9tLnNl
dE9wYWNpdHkodGhpcy5kb21Ob2RlLDEpOwoJCQlkb2pvLmRvbS5zaG93KHRoaXMuZG9tTm9kZSk7
CgkJCXRoaXMudGFiQ29udGFpbmVyLm9uUGFyZW50UmVzaXplZCgpOwoJCX0KCX0sCgkiIiwKCWZ1
bmN0aW9uKCkgewoKCQl0aGlzLnRhYkNvbnRhaW5lcj0iIjsKCQl0aGlzLmRlbW9UYWI9IiI7CgoJ
CXRoaXMudGFiTm9kZT0iIjsKCQl0aGlzLnRhYkNsYXNzID0gImRlbW9Db250YWluZXJUYWJzIjsK
CX0KKTsKPC9zY3JpcHQ+Cgo8L2hlYWQ+Cjxib2R5PgoJPGRpdiBpZD0iY29udGVudCI+IAoJCTxk
aXYgZG9qb1R5cGU9IkRlbW9OYXZpZ2F0b3IiPjwvZGl2PiAKCTwvZGl2Pgo8L2JvZHk+CjwvaHRt
bD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>