<?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>168921</bug_id>
          
          <creation_ts>2017-02-27 11:41:30 -0800</creation_ts>
          <short_desc>Add css-status page on webkit.org</short_desc>
          <delta_ts>2017-02-28 14:30:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>jond</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1281460</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-02-27 11:41:30 -0800</bug_when>
    <thetext>Add css-status page on webkit.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281472</commentid>
    <comment_count>1</comment_count>
      <attachid>302862</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-02-27 12:12:47 -0800</bug_when>
    <thetext>Created attachment 302862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281530</commentid>
    <comment_count>2</comment_count>
      <attachid>302862</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-02-27 14:29:46 -0800</bug_when>
    <thetext>Comment on attachment 302862
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=302862&amp;action=review

&gt; Websites/webkit.org/wp-content/themes/webkit/css-status.php:215
&gt; +.values li {
&gt; +    
&gt; +}

Needed?

&gt; Websites/webkit.org/wp-content/themes/webkit/css-status.php:684
&gt; +            // FIXME: we should pull in a classList polyfill.

What doesn&apos;t support classList but does support Promises?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1281960</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-02-28 14:30:51 -0800</bug_when>
    <thetext>https://webkit.org/css-status/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302862</attachid>
            <date>2017-02-27 12:12:47 -0800</date>
            <delta_ts>2017-02-27 14:29:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168921-20170227120952.patch</filename>
            <type>text/plain</type>
            <size>48392</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEzMDgyCmRpZmYgLS1naXQgYS9XZWJzaXRlcy93ZWJraXQu
b3JnL0NoYW5nZUxvZyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCmluZGV4IDc1ZmU2
ZjlkMDcyNDllYjgwNWQ4ZGEyMWNhMDY2OGM1MjJlNzQwN2QuLjZjZjhjZGNhYmRiYzU5MjU1MmUx
Yjc5NWZhMzE5MzJhYWIxZjExNmEgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hh
bmdlTG9nCisrKyBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTctMDItMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGNzcy1zdGF0dXMgcGFnZSBvbiB3ZWJraXQub3JnCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg5MjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZCBhIHBhZ2UgdGhh
dCBzaG93cyB0aGUgc3RhdHVzIG9mIENTUyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMsIHNjcmFwZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uLgorICAgICAgICAKKyAg
ICAgICAgVGhpcyBpcyBtb2RlbGVkIGFmdGVyIHRoZSBmZWF0dXJlIHN0YXR1cyBwYWdlLiBQcm9w
ZXJ0aWVzIGNhbiBiZSBmaWx0ZXJlZCBieSBzdGF0dXMKKyAgICAgICAgYW5kIHRoZSBzcGVjIHRo
ZXkgYmVsb25nIHRvLgorCisgICAgICAgICogd3AtY29udGVudC90aGVtZXMvd2Via2l0L2Nzcy1z
dGF0dXMucGhwOiBBZGRlZC4KKwogMjAxNy0wMi0yMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtSZXNvdXJjZSBUaW1pbmddIEFkZCBFeHBlcmltZW50
YWwgRmVhdHVyZSBGbGFnCmRpZmYgLS1naXQgYS9XZWJzaXRlcy93ZWJraXQub3JnL3dwLWNvbnRl
bnQvdGhlbWVzL3dlYmtpdC9jc3Mtc3RhdHVzLnBocCBiL1dlYnNpdGVzL3dlYmtpdC5vcmcvd3At
Y29udGVudC90aGVtZXMvd2Via2l0L2Nzcy1zdGF0dXMucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkN2E5NDBh
YjdhNzAwNzFhNTVhMTcyMDE2YWJjMTU1ZTcxMzEzMWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJz
aXRlcy93ZWJraXQub3JnL3dwLWNvbnRlbnQvdGhlbWVzL3dlYmtpdC9jc3Mtc3RhdHVzLnBocApA
QCAtMCwwICsxLDE0NTMgQEAKKzw/cGhwCisvKioKKyAqIFRlbXBsYXRlIE5hbWU6IENTUyBTdGF0
dXMgUGFnZQorICoqLworPz4KKzw/cGhwIGdldF9oZWFkZXIoKTsgPz4KKzxzY3JpcHQ+CitmdW5j
dGlvbiB4aHJQcm9taXNlKHVybCkgeworICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihy
ZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgdmFyIHhoclJlcXVlc3QgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKKyAgICAgICAgeGhyUmVxdWVzdC5vcGVuKCdHRVQnLCB1cmwsIHRydWUpOworICAg
ICAgICB4aHJSZXF1ZXN0LnJlc3BvbnNlVHlwZSA9ICJqc29uIjsKKworICAgICAgICB4aHJSZXF1
ZXN0Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgaWYgKHhoclJlcXVlc3Quc3Rh
dHVzID09IDIwMCB8fCB4aHJSZXF1ZXN0LnN0YXR1cyA9PSAwKSB7CisgICAgICAgICAgICAgICAg
aWYgKHhoclJlcXVlc3QucmVzcG9uc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSh4
aHJSZXF1ZXN0LnJlc3BvbnNlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICByZWplY3QoeyByZXF1ZXN0OiB4aHJSZXF1ZXN0LCB1cmw6dXJsfSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZWpl
Y3QoeyByZXF1ZXN0OiB4aHJSZXF1ZXN0LCB1cmw6dXJsfSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH07CisgICAgICAgIHhoclJlcXVlc3Qub25lcnJvciA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgcmVqZWN0KHsgcmVxdWVzdDogeGhyUmVxdWVzdCwgdXJsOnVybH0pOworICAgICAgICB9
OworICAgICAgICB4aHJSZXF1ZXN0LnNlbmQoKTsKKyAgICB9KTsKK30KKwordmFyIG9yaWdpbiA9
IG5ldyBVUkwoImh0dHBzOi8vPD9waHAgZWNobyBzdHJwb3MoV1BfSE9TVCwgIndlYmtpdC5vcmci
KSAhPT0gZmFsc2UgPyAic3ZuLndlYmtpdC5vcmciIDogV1BfSE9TVDsgPz4vIik7Cit2YXIgbG9h
ZENTU1Byb3BlcnRpZXMgPSB4aHJQcm9taXNlKG5ldyBVUkwoIi9yZXBvc2l0b3J5L3dlYmtpdC90
cnVuay9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uIiwgb3JpZ2luKSk7CisK
Ky8qCisgICAgVE9ETzoKKyAgICAgICAgInIiIG5vdCBsYWJlbGVkIGFzIFNWRy4gbmVlZHMgdHdv
IGxpbmtzIChjaXJjbGUgYW5kIHJhZGlhbEdyYWRpZW50KQorICAgICAgICBmaWx0ZXIgb24gdW5z
cGVjaWZpZWQgcHJvcGVydGllcy92YWx1ZXMKKworICAgICAgICBuZWVkIHNlcGFyYXRlIGZpbHRl
cnMgb24gcHJvcGVydGllcyBhbmQgdmFsdWVzCisgICAgICAgIAorICAgICAgICBiYWNrZ3JvdW5k
LXJlcGVhdC14IGlzbid0IGEgd2ViLWV4cG9zZWQgbG9uZ2hhbmQgaW4gdGhlIGJhY2tncm91bmQg
cHJvcGVydHkuCisKKyAgICAgICAgTmVlZCB0byBpbmRpY2F0ZSB0aGF0IHNvbWUgcHJvcGVydGll
cyBhcHBseSB0byBTVkcgYW5kIEhUTUw6CisgICAgICAgICAgICBwb2ludGVyLWV2ZW50cworICAg
ICAgICAgICAgcGFpbnQtb3JkZXIKKworICAgICAgICBBbm5vdGF0ZSBhcHBlYXJhbmNlIHZhbHVl
cy4KKyAgICAgICAgQW5ub3RhdGUgdGhpbmdzIHRoYXQgb25seSB3b3JrIGluIEBydWxlcyBsaWtl
IHNyYyBvciBwYWdlLCBzaXplLCB1bmljb2RlLXJhbmdlLCBzcmMsIGRldmljZSBvcmllbnRhdGlv
biBzdHVmZi4KKworICAgICAgICBEZW5vdGUgcmVwbGFjZW1lbnQgcHJvcGVydGllcyAmIHZhbHVl
cyAoZS5nLiB3b3JkLXdyYXAgaXMgbm93IG92ZXJmbG93LXdyYXAuKSBvdGhlciB0aGFuIGluIGNv
bW1lbnRzCisKKyAgICAgICAgU2hvdyBzdGF0dXMgY29tbWVudHMKKyAgICAgICAgTWFyayB0aGlu
Z3MgcGVuZGluZyByZW1vdmFsCisgICAgICAgIEFkZCBhIHJlbW92ZWQgc3RhdHVzLgorCisgICAg
UFJPUEVSVFkgSVNTVUVTCisgICAgICAgIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eSBpcyBu
b3QgdW5wcmVmaXhlZAorICAgICAgICAiYW5pbWF0YWJsZSIgd3JvbmcgZm9yIGFuaW1hdGlvbiBw
cm9wZXJ0aWVzLgorCisgICAgTWFyayB0aGluZ3MgYXMgbm90IGFwcGxpY2FibGUgdG8gdGhlIG9w
ZW4gd2ViOgorICAgICAgICAgICAgLXdlYmtpdC1ib3JkZXItZml0CisgICAgICAgICAgICAtYXBw
bGUtdHJhaWxpbmctd29yZAorICAgICAgICAgICAgLXdlYmtpdC1jb2x1bW4tcHJvZ3Jlc3MKKyAg
ICAgICAgICAgIC13ZWJraXQtY29sdW1uLWF4aXMKKworICAgICAgICAgICAgLXdlYmtpdC1ib3Jk
ZXItZml0Py4gcjE5ODYyIGZvciBpQ2hhdC4KKyAgICAgICAgICAgIHN0YXR1cyBvZiBtYXJnaW4t
Y29sbGFwc2UgcHJvcGVydGllcworCisgICAgTWFyayB0aGluZ3MgYXMgaW50ZXJuYWwtb25seToK
KyAgICAgICAgICAgIC13ZWJraXQtbWFycXVlZSoKKyAgICAgICAgICAgIC13ZWJraXQtdGV4dC1z
ZWN1cml0eQorICAgICAgICAgICAgLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdAor
ICAgICAgICAgICAgLXdlYmtpdC1uYnNwLW1vZGUgPworICAgICAgICAgICAgLXdlYmtpdC1mb250
LXNpemUtZGVsdGE/CisqLworPC9zY3JpcHQ+CisKKzxzdHlsZT4KKworLnBhZ2UgeworICAgIGRp
c3BsYXk6IC13ZWJraXQtZmxleDsKKyAgICBkaXNwbGF5OiBmbGV4OworICAgIC13ZWJraXQtZmxl
eC13cmFwOiB3cmFwOworICAgIGZsZXgtd3JhcDogd3JhcDsKKyAgICAtd2Via2l0LWp1c3RpZnkt
Y29udGVudDogc3BhY2UtYmV0d2VlbjsKKyAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdl
ZW47CisgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICB3aWR0aDogMTAwJTsKK30KKwor
LnBhZ2UgaDEgeworICAgIGZvbnQtc2l6ZTogNC4ycmVtOworICAgIGZvbnQtd2VpZ2h0OiAyMDA7
CisgICAgbGluZS1oZWlnaHQ6IDZyZW07CisgICAgY29sb3I6IGJsYWNrOworICAgIHRleHQtYWxp
Z246IGxlZnQ7CisgICAgbWFyZ2luOiAzcmVtIGF1dG87CisgICAgd2lkdGg6IDEwMCU7Cit9CisK
Ky5wYWdlIGgxIGEgeworICAgIGNvbG9yOiAjNDQ0OworfQorCisucGFnZSBoMiB7CisgICAgZm9u
dC13ZWlnaHQ6IDIwMDsKKyAgICBmb250LXNpemU6IDNyZW07Cit9CisKKy5wYWdlIGgzIHsKKyAg
ICBmb250LXdlaWdodDogNDAwOworICAgIGZvbnQtc2l6ZTogMi4ycmVtOworfQorCisucGFnZSBw
IHsKKyAgICBtYXJnaW4tYm90dG9tOiAzcmVtOworfQorCisucHJvcGVydHktY291bnQgeworICAg
IHRleHQtYWxpZ246IHJpZ2h0OworICAgIGNvbG9yOiAjOTk5OworfQorCisjcHJvcGVydHktbGlz
dCB7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIHdpZHRoOiA2NSU7CisgICAgd29y
ZC13cmFwOiBicmVhay13b3JkOworfQorCisvKiBIaWRlIHRoZSBpbnRlcm5hbCBsaW5rcyBvbiBz
ZWFyY2ggc2luY2UgdGhleSBhcmUgdW5saWtlbHkgdG8gd29yay4gKi8KKyNzZWFyY2g6cmVxdWly
ZWQ6dmFsaWQgKyAqICAuaW50ZXJuYWwtcmVmZXJlbmNlIHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQorCisucHJvcGVydHktaGVhZGVyID4gaDM6Zmlyc3Qtb2YtdHlwZSB7CisgICAgbWFyZ2luOiAw
OworfQorCit1bC5wcm9wZXJ0aWVzIHsKKyAgICBwYWRkaW5nOiAwOworfQorCisucHJvcGVydGll
cyAucHJvcGVydHkgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBkaXNwbGF5OiBibG9j
azsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5OworICAgIGJvcmRlcjogMXB4IHNvbGlk
ICNkZGQ7CisgICAgYm9yZGVyLXJhZGl1czogM3B4OworICAgIHBhZGRpbmc6IDFlbTsKKyAgICBt
YXJnaW46IDFlbSAwICFpbXBvcnRhbnQ7CisgICAgbWF4LWhlaWdodDogaW50cmluc2ljOworICAg
IG1pbi1oZWlnaHQ6IDNyZW07CisgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgIGN1cnNvcjog
cG9pbnRlcjsKKyAgICAtd2Via2l0LXRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBl
YXNlLWluOworICAgIC1tb3otdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2Ut
aW47CisgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzIGVhc2UtaW47Cit9CisK
Ky5wcm9wZXJ0aWVzIC5wcm9wZXJ0eTpob3ZlciB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hp
dGU7Cit9CisKKy5wcm9wZXJ0eS5vcGVuZWQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRl
OworICAgIG1heC1oZWlnaHQ6IDEyMHJlbTsKK30KKworLnByb3BlcnR5LWRlc2NyaXB0aW9uIC50
b2dnbGVhYmxlIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCisucHJvcGVydHkub3BlbmVkIC5w
cm9wZXJ0eS1kZXNjcmlwdGlvbiAudG9nZ2xlYWJsZSB7CisgICAgZGlzcGxheTogYmxvY2s7Cisg
ICAgbWFyZ2luLXRvcDogMXJlbTsKK30KKworLm1vcmUtaW5mbyB7CisgICAgbWFyZ2luLXRvcDog
MC41ZW07Cit9CisKKy5zdWItZmVhdHVyZXMgeworICAgIGZvbnQtc2l6ZTogMS41cmVtOworICAg
IGNvbG9yOiAjNTU1OworfQorCisuc3ViLWZlYXR1cmVzIHVsIHsKKyAgICBsaXN0LXN0eWxlOiBu
b25lOworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBwYWRkaW5nOiAwOworICAgIG1h
cmdpbjogMDsKK30KKworLnN1Yi1mZWF0dXJlcyBsaSB7CisgICAgZGlzcGxheTogaW5saW5lOwor
fQorCisuc3ViLWZlYXR1cmVzIGxpOmFmdGVyIHsKKyAgICBjb250ZW50OiAiLCAiOworfQorCisu
c3ViLWZlYXR1cmVzIGxpOmxhc3QtY2hpbGQ6YWZ0ZXIgeworICAgIGNvbnRlbnQ6ICIiOworfQor
Cit1bC52YWx1ZXMgeworICAgIG1hcmdpbi1sZWZ0OiAzZW07CisgICAgbWFyZ2luLXRvcDogMC41
ZW07CisgICAgY3Vyc29yOiBkZWZhdWx0OworfQorCisudmFsdWVzIGxpIHsKKyAgICAKK30KKwor
LnZhbHVlcyBsaS5oaWRkZW4geworICAgIGNvbG9yOiAjNDQ0OworfQorCisucHJvcGVydHktaGVh
ZGVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgcGFkZGluZy1yaWdodDogM3JlbTsK
K30KKworLnByb3BlcnR5LWhlYWRlcjphZnRlciB7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2Nr
OworICAgIGNvbnRlbnQ6ICIiOworICAgIGJhY2tncm91bmQ6IHVybCgnaW1hZ2VzL21lbnUtZG93
bi5zdmcnKSBuby1yZXBlYXQgNTAlOworICAgIGJhY2tncm91bmQtc2l6ZTogMnJlbTsKKyAgICB3
aWR0aDogMnJlbTsKKyAgICBoZWlnaHQ6IDJyZW07CisgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgIHJpZ2h0OiAwOworICAgIHRvcDogMC41cmVtOworICAgIC13ZWJraXQtdHJhbnNpdGlvbjog
dHJhbnNmb3JtIDAuM3MgZWFzZS1vdXQ7CisgICAgLW1vei10cmFuc2l0aW9uOiB0cmFuc2Zvcm0g
MC4zcyBlYXNlLW91dDsKKyAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyBlYXNlLW91dDsK
K30KKworLnByb3BlcnR5Lm9wZW5lZCAucHJvcGVydHktaGVhZGVyOmFmdGVyIHsKKyAgICAtd2Vi
a2l0LXRyYW5zZm9ybTogcm90YXRlWCgtMTgwZGVnKTsKKyAgICAtbW96LXRyYW5zZm9ybTogcm90
YXRlWCgtMTgwZGVnKTsKKyAgICB0cmFuc2Zvcm06IHJvdGF0ZVgoLTE4MGRlZyk7Cit9CisKKy5w
cm9wZXJ0eS1oZWFkZXIgaDMgLmludGVybmFsLXJlZmVyZW5jZSBhIHsKKyAgICBjb2xvcjogIzk5
OTsKKyAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgICAgcGFkZGluZy1sZWZ0OiAwLjVlbTsK
K30KKworLnByb3BlcnR5LWhlYWRlciBoMyAuc3BlYy1sYWJlbCB7CisgICAgY29sb3I6ICM5OTk7
CisgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGZvbnQtd2VpZ2h0OiAyMDA7Cit9CisK
Ky5wcm9wZXJ0eS1oZWFkZXIgaDMgLnNwZWMtbGFiZWwgYSB7CisgICAgY29sb3I6ICM5OTk7Cisg
ICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOworICAgIGZvbnQtd2VpZ2h0OiAyMDA7Cit9CisKKy5z
cGVjLWxhYmVsOjpiZWZvcmUgeworICAgIGNvbnRlbnQ6ICcg4oCUICc7Cit9CisucHJvcGVydHkt
aGVhZGVyIGgzIGEgeworICAgIGNvbG9yOiAjNDQ0OworfQorCisucHJvcGVydHktaGVhZGVyIC5w
cm9wZXJ0eS1hbGlhcyB7CisgICAgZm9udC1zaXplOiBzbWFsbGVyOworICAgIGNvbG9yOiAjOTk5
OworfQorCisucHJvcGVydHktaGVhZGVyIHAgeworICAgIG1hcmdpbi10b3A6IDAuNXJlbTsKKyAg
ICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cit9CisKKy52YWx1ZS1hbGlhcyB7CisgICAgY29sb3I6
ICM5OTk7Cit9CisKKy52YWx1ZS1zdGF0dXMgeworICAgIGNvbG9yOiAjOTk5OworfQorCisucHJv
cGVydHktaGVhZGVyIGgzIC5pbnRlcm5hbC1yZWZlcmVuY2UgYTpob3ZlciB7CisgICAgY29sb3I6
IGluaGVyaXQ7CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cit9CisKKy5wcm9wZXJ0
eS5pcy1oaWRkZW4geworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisKK3VsLnByb3BlcnR5LWRldGFp
bHMgeworICAgIG1hcmdpbjogMDsKK30KKy5wcm9wZXJ0eS1zdGF0dXNJdGVtIHsKKyAgICBtYXJn
aW4tcmlnaHQ6IDAuNWVtOworfQorCisucHJvcGVydHktc3RhdHVzIHsKKyAgICBmb250LXNpemU6
IDJyZW07CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKKyAgICBtaW4td2lkdGg6IDRlbTsKKyAgICB0ZXh0LWFsaWduOiByaWdodDsKKyAgICBkaXNw
bGF5OiBub25lOyAvKiBIaWRlIHN0YXR1cyBmb3Igbm93LiAqLworfQorCisucHJvcGVydHktc3Rh
dHVzLAorLnByb3BlcnR5LXN0YXR1cyBhIHsKKyAgICBjb2xvcjogIzk5OTsKK30KKworLnByb3Bl
cnR5IC5zdGF0dXMtbWFya2VyIHsKKyAgICB3aWR0aDogMDsKKyAgICBoZWlnaHQ6IDA7CisgICAg
cG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICBsZWZ0OiAwOworICAgIGJvcmRl
ci1zdHlsZTogc29saWQ7CisgICAgYm9yZGVyLXdpZHRoOiAyMHB4IDIwcHggMCAwOworICAgIGJv
cmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJl
bnQ7Cit9CisKKyNzdGF0dXMtZmlsdGVycyAuZG9uZSwKKy5wcm9wZXJ0eS1zdGF0dXMuZG9uZSwK
Ky5wcm9wZXJ0eS1zdGF0dXMuZG9uZSBhIHsKKyAgICBjb2xvcjogIzMzOTkwMDsKK30KKworLnN0
YXR1cy1tYXJrZXIuZG9uZSB7CisgICAgYm9yZGVyLWNvbG9yOiAjMzM5OTAwIHRyYW5zcGFyZW50
IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OworfQorCisjc3RhdHVzLWZpbHRlcnMgLmluLWRldmVs
b3BtZW50LAorLnByb3BlcnR5LXN0YXR1cy5pbi1kZXZlbG9wbWVudCwKKy5wcm9wZXJ0eS1zdGF0
dXMuaW4tZGV2ZWxvcG1lbnQgYSB7CisgICAgY29sb3I6ICNmNDZjMGU7Cit9CisKKy5zdGF0dXMt
bWFya2VyLmluLWRldmVsb3BtZW50IHsKKyAgICBib3JkZXItY29sb3I6ICNmNDZjMGUgdHJhbnNw
YXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Cit9CisKKyNzdGF0dXMtZmlsdGVycyAubm8t
YWN0aXZlLWRldmVsb3BtZW50LAorLnByb3BlcnR5LXN0YXR1cy5uby1hY3RpdmUtZGV2ZWxvcG1l
bnQsCisucHJvcGVydHktc3RhdHVzLm5vLWFjdGl2ZS1kZXZlbG9wbWVudCBhIHsKKyAgICBjb2xv
cjogIzU4NThENjsKK30KKworLnN0YXR1cy1tYXJrZXIubm8tYWN0aXZlLWRldmVsb3BtZW50IHsK
KyAgICBib3JkZXItY29sb3I6ICM1ODU4RDYgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNw
YXJlbnQ7Cit9CisKKyNzdGF0dXMtZmlsdGVycyAucGFydGlhbC1zdXBwb3J0LAorLnByb3BlcnR5
LXN0YXR1cy5wYXJ0aWFsLXN1cHBvcnQsCisucHJvcGVydHktc3RhdHVzLnBhcnRpYWwtc3VwcG9y
dCBhIHsKKyAgICBjb2xvcjogIzU0OGM4YzsKK30KKworLnN0YXR1cy1tYXJrZXIucGFydGlhbC1z
dXBwb3J0IHsKKyAgICBib3JkZXItY29sb3I6ICM1NDhjOGMgdHJhbnNwYXJlbnQgdHJhbnNwYXJl
bnQgdHJhbnNwYXJlbnQ7Cit9CisKKyNzdGF0dXMtZmlsdGVycyAucHJvdG90eXBpbmcsCisucHJv
cGVydHktc3RhdHVzLnByb3RvdHlwaW5nLAorLnByb3BlcnR5LXN0YXR1cy5wcm90b3R5cGluZyBh
IHsKKyAgICBjb2xvcjogIzAwN0FGRjsKK30KKworLnN0YXR1cy1tYXJrZXIucHJvdG90eXBpbmcg
eworICAgIGJvcmRlci1jb2xvcjogIzAwN0FGRiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFu
c3BhcmVudDsKK30KKworI3N0YXR1cy1maWx0ZXJzIC5leHBlcmltZW50YWwsCisucHJvcGVydHkt
c3RhdHVzLmV4cGVyaW1lbnRhbCwKKy5wcm9wZXJ0eS1zdGF0dXMuZXhwZXJpbWVudGFsIGEgewor
ICAgIGNvbG9yOiAjMDA3QUZGOworfQorCisuc3RhdHVzLW1hcmtlci5leHBlcmltZW50YWwgewor
ICAgIGJvcmRlci1jb2xvcjogIzAwN0FGRiB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3Bh
cmVudDsKK30KKworI3N0YXR1cy1maWx0ZXJzIC51bmRlci1jb25zaWRlcmF0aW9uLAorLnByb3Bl
cnR5LXN0YXR1cy51bmRlci1jb25zaWRlcmF0aW9uLAorLnByb3BlcnR5LXN0YXR1cy51bmRlci1j
b25zaWRlcmF0aW9uIGEgeworICAgIGNvbG9yOiAjY2M5ZDAwOworfQorCisuc3RhdHVzLW1hcmtl
ci51bmRlci1jb25zaWRlcmF0aW9uIHsKKyAgICBib3JkZXItY29sb3I6ICNGRkM1MDAgdHJhbnNw
YXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Cit9CisKKy5wcm9wZXJ0eS1zdGF0dXMucmVt
b3ZlZCwKKy5wcm9wZXJ0eS1zdGF0dXMucmVtb3ZlZCBhIHsKKyAgICBjb2xvcjogIzk5OTsKK30K
KworLnN0YXR1cy1tYXJrZXIucmVtb3ZlZCB7CisgICAgYm9yZGVyLWNvbG9yOiAjOTk5IHRyYW5z
cGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OworfQorCisjc3RhdHVzLWZpbHRlcnMgLm5v
bi1zdGFuZGFyZCwKKy5wcm9wZXJ0eS1zdGF0dXMubm9uLXN0YW5kYXJkLAorLnByb3BlcnR5LXN0
YXR1cy5ub24tc3RhbmRhcmQgYSB7CisgICAgY29sb3I6ICM4MDAwRkY7Cit9CisKKy5zdGF0dXMt
bWFya2VyLm5vbi1zdGFuZGFyZCB7CisgICAgYm9yZGVyLWNvbG9yOiAjODAwMEZGIHRyYW5zcGFy
ZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OworfQorCisjc3RhdHVzLWZpbHRlcnMgLm5vdC1j
b25zaWRlcmluZywKKy5wcm9wZXJ0eS1zdGF0dXMubm90LWNvbnNpZGVyaW5nLAorLnByb3BlcnR5
LXN0YXR1cy5ub3QtY29uc2lkZXJpbmcgYSB7CisgICAgY29sb3I6ICM3RjdGN0Y7Cit9CisKKy5z
dGF0dXMtbWFya2VyLm5vdC1jb25zaWRlcmluZyB7CisgICAgYm9yZGVyLWNvbG9yOiAjN0Y3RjdG
IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OworfQorCisjc3RhdHVzLWZpbHRl
cnMgLm5vdC1pbXBsZW1lbnRlZCwKKy5wcm9wZXJ0eS1zdGF0dXMubm90LWltcGxlbWVudGVkLAor
LnByb3BlcnR5LXN0YXR1cy5ub3QtaW1wbGVtZW50ZWQgYSB7CisgICAgY29sb3I6ICM0QzRDNEM7
Cit9CisKKy5zdGF0dXMtbWFya2VyLm5vdC1pbXBsZW1lbnRlZCB7CisgICAgYm9yZGVyLWNvbG9y
OiAjNEM0QzRDIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50OworfQorCisjc3Rh
dHVzLWZpbHRlcnMgLm9ic29sZXRlLAorLnByb3BlcnR5LXN0YXR1cy5vYnNvbGV0ZSwKKy5wcm9w
ZXJ0eS1zdGF0dXMub2Jzb2xldGUgYSB7CisgICAgY29sb3I6ICM4MDQwMDA7Cit9CisKKy5zdGF0
dXMtbWFya2VyLm9ic29sZXRlIHsKKyAgICBib3JkZXItY29sb3I6ICM4MDQwMDAgdHJhbnNwYXJl
bnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7Cit9CisKKworc2lkZWJhciB7CisgICAgd2lkdGg6
IC13ZWJraXQtY2FsYygzMy4zMyUgLSAzcmVtKTsKKyAgICB3aWR0aDogLW1vei1jYWxjKDMzLjMz
JSAtIDNyZW0pOworICAgIHdpZHRoOiBjYWxjKDMzLjMzJSAtIDNyZW0pOworICAgIGRpc3BsYXk6
IGlubGluZS1ibG9jazsKKyAgICBtYXJnaW4tcmlnaHQ6IDNyZW07CisgICAgZm9udC1zaXplOiAy
cmVtOworICAgIG1hcmdpbi1sZWZ0OiAxcmVtOworfQorCisucHJvcGVydHktZmlsdGVycyB7Cisg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgIHRvcDogMDsKKyAgICBtYXJnaW4tdG9wOiAwLjVl
bTsKK30KKworI3NlYXJjaCB7CisgICAgZm9udC1zaXplOiAycmVtOworICAgIHBhZGRpbmc6IDFy
ZW07CisgICAgYm9yZGVyLXJhZGl1czogM3B4OworICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2Nj
Y2M7CisgICAgd2lkdGg6IDEwMCU7CisgICAgbWFyZ2luLXRvcDogMS41cmVtOworICAgIGJveC1z
aXppbmc6IGJvcmRlci1ib3g7Cit9CisKKy5wcm9wZXJ0eS1maWx0ZXJzIHVsIHsKKyAgICBtYXJn
aW4tdG9wOiAwLjVyZW07CisgICAgbWFyZ2luLWJvdHRvbTogMS41cmVtOworfQorCisucHJvcGVy
dHktZmlsdGVycyB1bCBsaSB7CisgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtOworfQorCisucHJv
cGVydHktZmlsdGVycyBsYWJlbCA+IGlucHV0IHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cisg
ICAgdG9wOiAtM3B4OworfQorCisucHJlZml4ZXMgeworICAgIGRpc3BsYXk6IG5vbmU7Cit9CisK
KyNzcGVjaWZpY2F0aW9ucyB7CisgICAgbWF4LWhlaWdodDogMjlyZW07CisgICAgb3ZlcmZsb3c6
IGF1dG87Cit9CisKKyNzcGVjaWZpY2F0aW9ucyBsaSB7CisgICAgZm9udC1zaXplOiBzbWFsbGVy
OworICAgIGN1cnNvcjogaGFuZDsKKyAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07CisgICAgbWFy
Z2luLWxlZnQ6IDJyZW07Cit9CisKK2gzIGFbbmFtZV0sIC5hZG1pbi1iYXIgaDMgYVtuYW1lXSB7
CisgICAgdG9wOiBpbml0aWFsOworICAgIHdpZHRoOiBhdXRvOworICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOyAvKiBPdmVycmlkZSB2aXNpYmlsaXR5
OmhpZGRlbiBmcm9tIHRoZW1lcy93ZWJraXQvc3R5bGUuY3NzICovCit9CisKK0BtZWRpYSBvbmx5
IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTA4cHgpIHsKKyAgICAjcHJvcGVydHktZmlsdGVycywK
KyAgICAjcHJvcGVydHktbGlzdCB7CisgICAgICAgIHdpZHRoOiAxMDAlOworICAgIH0KKworICAg
ICNwcm9wZXJ0eS1maWx0ZXJzIHsKKyAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKKyAg
ICAgICAgYm9yZGVyLXJhZGl1czogM3B4OworICAgICAgICBiYWNrZ3JvdW5kOiAjZjZmNmY2Owor
ICAgICAgICBwYWRkaW5nOiAxcmVtOworICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94Owor
ICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7CisgICAgICAgIG1hcmdpbi1ib3R0b206IDNyZW07Cisg
ICAgfQorCisgICAgLnByb3BlcnR5LWhlYWRlciBoMyB7CisgICAgICAgIGZvbnQtc2l6ZTogMnJl
bTsKKyAgICB9CisKKyAgICAucHJvcGVydHktc3RhdHVzIHsKKyAgICAgICAgZm9udC1zaXplOiAx
LjZyZW07CisgICAgICAgIG1hcmdpbi10b3A6IDAuNHJlbTsKKyAgICB9Cit9CisKKzwvc3R5bGU+
CisgICAgPD9waHAgaWYgKGhhdmVfcG9zdHMoKSkgOiB3aGlsZSAoaGF2ZV9wb3N0cygpKSA6IHRo
ZV9wb3N0KCk7ID8+CisKKyAgICAgICAgPGRpdiBjbGFzcz0icGFnZSBmZWF0dXJlLXN0YXR1cy1w
YWdlIiBpZD0icG9zdC08P3BocCB0aGVfSUQoKTsgPz4iPgorICAgICAgICAgICAgPD9waHAgZWNo
byBzdHJfcmVwZWF0KCcmbmJzcDsnLCAyMDApOz8+CisgICAgICAgICAgICA8aDE+PGEgaHJlZj0i
PD9waHAgZWNobyBnZXRfcGVybWFsaW5rKCkgPz4iIHJlbD0iYm9va21hcmsiIHRpdGxlPSJQZXJt
YW5lbnQgTGluazogPD9waHAgdGhlX3RpdGxlKCk7ID8+Ij48P3BocCB0aGVfdGl0bGUoKTsgPz48
L2E+PC9oMT4KKworICAgICAgICAgICAgPHNpZGViYXI+CisgICAgICAgICAgICAgICAgPGZvcm0g
aWQ9InByb3BlcnR5LWZpbHRlcnMiIGNsYXNzPSJwcm9wZXJ0eS1maWx0ZXJzIj4KKyAgICAgICAg
ICAgICAgICAgICAgPGgyPkZpbHRlcnM8L2gyPgorICAgICAgICAgICAgICAgICAgICA8aW5wdXQg
dHlwZT0idGV4dCIgaWQ9InNlYXJjaCIgcGxhY2Vob2xkZXI9IlNlYXJjaCBmaWx0ZXImaGVsbGlw
OyIgdGl0bGU9IkZpbHRlciB0aGUgcHJvcGVydHkgbGlzdC4iIHJlcXVpcmVkPgorICAgICAgICAg
ICAgICAgICAgICA8aDI+RmlsdGVyIGJ5IFN0YXR1czwvaDI+CisgICAgICAgICAgICAgICAgICAg
IDx1bCBpZD0ic3RhdHVzLWZpbHRlcnMiPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAg
ICAgICAgICAgICAgIDwvZm9ybT4KKworICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InByZWZp
eGVzIj4KKyAgICAgICAgICAgICAgICAgICAgPGgyPkZpbHRlciBieSBQcmVmaXg8L2gyPgorICAg
ICAgICAgICAgICAgICAgICA8dWwgaWQ9InByZWZpeC1maWx0ZXJzIj4KKyAgICAgICAgICAgICAg
ICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvc2lkZWJh
cj4KKworICAgICAgICAgICAgPGRpdiBpZD0icHJvcGVydHktbGlzdCI+CisgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0icHJvcGVydHktY291bnQiPgorICAgICAgICAgICAgICAgICAgICA8cD48
c3BhbiBpZD0icHJvcGVydHktY291bnQiPjwvc3Bhbj4gPHNwYW4gaWQ9InByb3BlcnR5LXBsdXJh
bGl6ZSI+cHJvcGVydGllczwvc3Bhbj48L3A+CisgICAgICAgICAgICAgICAgPC9kaXY+CisgICAg
ICAgICAgICA8L2Rpdj4KKworICAgICAgICAgICAgPHRlbXBsYXRlIGlkPSJzdWNjZXNzLXRlbXBs
YXRlIj4KKyAgICAgICAgICAgICAgICA8dWwgY2xhc3M9InByb3BlcnRpZXMiIGlkPSJwcm9wZXJ0
aWVzLWNvbnRhaW5lciI+PC91bD4KKworICAgICAgICAgICAgICAgIDxwPkNhbm5vdCBmaW5kIHNv
bWV0aGluZz8gWW91IGNhbiBjb250YWN0IDxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vd2Vi
a2l0Ij5Ad2Via2l0PC9hPiBvbiBUd2l0dGVyIG9yIGNvbnRhY3QgdGhlIDxhIGhyZWY9Imh0dHBz
Oi8vbGlzdHMud2Via2l0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3dlYmtpdC1oZWxwIj53ZWJraXQt
aGVscDwvYT4gbWFpbGluZyBsaXN0IGZvciBxdWVzdGlvbnMuPC9wPgorICAgICAgICAgICAgICAg
IDxwPllvdSBjYW4gYWxzbyA8YSBocmVmPSIvY29udHJpYnV0aW5nLWNvZGUvIj5jb250cmlidXRl
IHRvIGZlYXR1cmVzPC9hPiBkaXJlY3RseSwgdGhlIGVudGlyZSBwcm9qZWN0IGlzIE9wZW4gU291
cmNlLiBUbyByZXBvcnQgYnVncyBvbiBleGlzdGluZyBmZWF0dXJlcyBvciBjaGVjayBleGlzdGlu
ZyBidWcgcmVwb3J0cywgc2VlIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnIj5odHRw
czovL2J1Z3Mud2Via2l0Lm9yZzwvYT4uPC9wPgorICAgICAgICAgICAgPC90ZW1wbGF0ZT4KKyAg
ICAgICAgICAgIDx0ZW1wbGF0ZSBpZD0iZXJyb3ItdGVtcGxhdGUiPgorICAgICAgICAgICAgICAg
IDxwPkVycm9yOiB1bmFibGUgdG8gbG9hZCB0aGUgZmVhdHVyZXMgbGlzdCAoPHNwYW4gaWQ9ImVy
cm9yLW1lc3NhZ2UiPjwvc3Bhbj4pLjwvcD4KKyAgICAgICAgICAgICAgICA8cD5JZiB0aGlzIGlz
IG5vdCByZXNvbHZlZCBzb29uLCBwbGVhc2UgY29udGFjdCA8YSBocmVmPSJodHRwczovL3R3aXR0
ZXIuY29tL3dlYmtpdCI+QHdlYmtpdDwvYT4gb24gVHdpdHRlciBvciB0aGUgPGEgaHJlZj0iaHR0
cHM6Ly9saXN0cy53ZWJraXQub3JnL21haWxtYW4vbGlzdGluZm8vd2Via2l0LWhlbHAiPndlYmtp
dC1oZWxwPC9hPiBtYWlsaW5nIGxpc3QuPC9wPgorICAgICAgICAgICAgPC90ZW1wbGF0ZT4KKyAg
ICAgICAgPC9kaXY+CisKKyAgICA8P3BocCAvL2NvbW1lbnRzX3RlbXBsYXRlKCk7ID8+CisKKyAg
ICA8P3BocCBlbmR3aGlsZTsgZWxzZTogPz4KKworICAgICAgICA8cD5ObyBwb3N0cy48L3A+CisK
KyAgICA8P3BocCBlbmRpZjsgPz4KKworCis8c2NyaXB0PgorZnVuY3Rpb24gaW5pdGlhbGl6ZVN0
YXR1c1BhZ2UoKSB7CisKKyAgICBmdW5jdGlvbiBzb3J0QWxwaGFiZXRpY2FsbHkoYXJyYXkpCisg
ICAgeworICAgICAgICBmdW5jdGlvbiByZXBsYWNlRGFzaFByZWZpeChuYW1lKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAobmFtZVswXSA9PSAnLScpCisgICAgICAgICAgICAgICAgcmV0dXJu
ICdaJyArIG5hbWUuc2xpY2UoMSk7CisgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAg
fQorCisgICAgICAgIGFycmF5LnNvcnQoZnVuY3Rpb24oYSwgYikgeworICAgICAgICAgICAgLy8g
U29ydCB0aGUgcHJlZml4ZWQgcHJvcGVydGllcyB0byB0aGUgZW5kLgorICAgICAgICAgICAgdmFy
IGFOYW1lID0gcmVwbGFjZURhc2hQcmVmaXgoYS5uYW1lLnRvTG93ZXJDYXNlKCkpOworICAgICAg
ICAgICAgdmFyIGJOYW1lID0gcmVwbGFjZURhc2hQcmVmaXgoYi5uYW1lLnRvTG93ZXJDYXNlKCkp
OworCisgICAgICAgICAgICB2YXIgbmFtZUNvbXBhcmVSZXN1bHQgPSBhTmFtZS5sb2NhbGVDb21w
YXJlKGJOYW1lKTsKKworICAgICAgICAgICAgaWYgKG5hbWVDb21wYXJlUmVzdWx0KQorICAgICAg
ICAgICAgICAgIHJldHVybiBuYW1lQ29tcGFyZVJlc3VsdDsKKworICAgICAgICAgICAgLy8gU3Rh
dHVzIHNvcnQKKyAgICAgICAgICAgIHZhciBhU3RhdHVzID0gYS5zdGF0dXMgIT0gdW5kZWZpbmVk
ID8gYS5zdGF0dXMuc3RhdHVzLnRvTG93ZXJDYXNlKCkgOiAnJzsKKyAgICAgICAgICAgIHZhciBi
U3RhdHVzID0gYi5zdGF0dXMgIT0gdW5kZWZpbmVkID8gYi5zdGF0dXMuc3RhdHVzLnRvTG93ZXJD
YXNlKCkgOiAnJzsKKworICAgICAgICAgICAgcmV0dXJuIGFTdGF0dXMubG9jYWxlQ29tcGFyZShi
U3RhdHVzKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gcHJvcGVydHlOYW1l
QWxpYXNlcyhwcm9wZXJ0eU9iamVjdCkKKyAgICB7CisgICAgICAgIGlmICgnY29kZWdlbi1wcm9w
ZXJ0aWVzJyBpbiBwcm9wZXJ0eU9iamVjdCAmJiAnYWxpYXNlcycgaW4gcHJvcGVydHlPYmplY3Rb
J2NvZGVnZW4tcHJvcGVydGllcyddKQorICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5T2JqZWN0
Wydjb2RlZ2VuLXByb3BlcnRpZXMnXS5hbGlhc2VzOworCisgICAgICAgIHJldHVybiBbXTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBwcm9wZXJ0eUxvbmdoYW5kcyhwcm9wZXJ0eU9iamVjdCkKKyAg
ICB7CisgICAgICAgIGlmICgnY29kZWdlbi1wcm9wZXJ0aWVzJyBpbiBwcm9wZXJ0eU9iamVjdCAm
JiAnbG9uZ2hhbmRzJyBpbiBwcm9wZXJ0eU9iamVjdFsnY29kZWdlbi1wcm9wZXJ0aWVzJ10pCisg
ICAgICAgICAgICByZXR1cm4gcHJvcGVydHlPYmplY3RbJ2NvZGVnZW4tcHJvcGVydGllcyddLmxv
bmdoYW5kczsKKworICAgICAgICByZXR1cm4gW107CisgICAgfQorCisgICAgY29uc3QgcHJlZml4
UmVnZXhwID0gL14oLXdlYmtpdC18LWVwdWItfC1hcHBsZS0pKC4rKSQvOworCisgICAgZnVuY3Rp
b24gY3JlYXRlUHJvcGVydHlWaWV3KGNhdGVnb3J5T2JqZWN0LCBwcm9wZXJ0eU9iamVjdCkKKyAg
ICB7CisgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUxpbmtXaXRoSGVhZGluZyhlbGVtZW50TmFtZSwg
aGVhZGluZywgbGlua1RleHQsIGxpbmtVcmwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBj
b250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKTsKKyAgICAgICAg
ICAgIGlmIChoZWFkaW5nKSB7CisgICAgICAgICAgICAgICAgY29udGFpbmVyLnRleHRDb250ZW50
ID0gaGVhZGluZyArICI6ICI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgbGluayA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKKyAgICAgICAgICAgIGxpbmsudGV4dENvbnRl
bnQgPSBsaW5rVGV4dDsKKyAgICAgICAgICAgIGxpbmsuaHJlZiA9IGxpbmtVcmw7CisgICAgICAg
ICAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQobGluayk7CisgICAgICAgICAgICByZXR1cm4gY29u
dGFpbmVyOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBhcHBlbmRWYWx1
ZVdpdGhMaW5rKGNvbnRhaW5lciwgdmFsdWUsIGxpbmspCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChsaW5rKSB7CisgICAgICAgICAgICAgICAgdmFyIGFuY2hvciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2EnKTsKKyAgICAgICAgICAgICAgICBhbmNob3IuaHJlZiA9IGxpbms7CisgICAg
ICAgICAgICAgICAgYW5jaG9yLnRleHRDb250ZW50ID0gdmFsdWU7CisgICAgICAgICAgICAgICAg
Y29udGFpbmVyLmFwcGVuZENoaWxkKGFuY2hvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBjb250YWluZXIudGV4dENv
bnRlbnQgPSB2YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG1ha2VUd2l0dGVy
TGluayh0d2l0dGVySGFuZGxlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodHdpdHRlckhh
bmRsZVswXSA9PSAiQCIpCisgICAgICAgICAgICAgICAgdHdpdHRlckhhbmRsZSA9IHR3aXR0ZXJI
YW5kbGUuc3Vic3RyaW5nKDEpOworICAgICAgICAgICAgcmV0dXJuICJodHRwczovL3R3aXR0ZXIu
Y29tLyIgKyB0d2l0dGVySGFuZGxlOworICAgICAgICB9CisKKyAgICAgICAgdmFyIGhhc1NwZWNp
ZmljYXRpb25PYmplY3QgPSAic3BlY2lmaWNhdGlvbiIgaW4gcHJvcGVydHlPYmplY3Q7CisgICAg
ICAgIHZhciBzcGVjaWZpY2F0aW9uT2JqZWN0ID0gcHJvcGVydHlPYmplY3Quc3BlY2lmaWNhdGlv
bjsKKworICAgICAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGkn
KTsKKworICAgICAgICB2YXIgaGFzU3BlY0xpbmsgPSBzcGVjaWZpY2F0aW9uT2JqZWN0ICYmICJ1
cmwiIGluIHNwZWNpZmljYXRpb25PYmplY3Q7CisgICAgICAgIHZhciBoYXNSZWZlcmVuY2VMaW5r
ID0gY2F0ZWdvcnlPYmplY3QgJiYgInVybCIgaW4gY2F0ZWdvcnlPYmplY3Q7CisgICAgICAgIHZh
ciBoYXNEb2N1bWVudGF0aW9uTGluayA9IChzcGVjaWZpY2F0aW9uT2JqZWN0ICYmICJkb2N1bWVu
dGF0aW9uLXVybCIgaW4gc3BlY2lmaWNhdGlvbk9iamVjdCkgfHwgKGNhdGVnb3J5T2JqZWN0ICYm
ICJkb2N1bWVudGF0aW9uLXVybCIgaW4gY2F0ZWdvcnlPYmplY3QpOworICAgICAgICB2YXIgaGFz
Q29udGFjdE9iamVjdCA9IHNwZWNpZmljYXRpb25PYmplY3QgJiYgImNvbnRhY3QiIGluIHNwZWNp
ZmljYXRpb25PYmplY3Q7CisKKyAgICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Ns
aWNrJywgZnVuY3Rpb24gKGUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcHVs
bCBpbiBhIGNsYXNzTGlzdCBwb2x5ZmlsbC4KKyAgICAgICAgICAgIGlmIChjb250YWluZXIuY2xh
c3NOYW1lLmluZGV4T2YoJ29wZW5lZCcpICE9PSAtMSkgeworICAgICAgICAgICAgICAgIGNvbnRh
aW5lci5jbGFzc05hbWUgPSBjb250YWluZXIuY2xhc3NOYW1lLnJlcGxhY2UoJyBvcGVuZWQnLCcn
KTsKKyAgICAgICAgICAgIH0gZWxzZSBjb250YWluZXIuY2xhc3NOYW1lICs9ICIgb3BlbmVkIjsK
KyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICJwcm9wZXJ0eSI7
CisKKyAgICAgICAgdmFyIHNsdWcgPSBwcm9wZXJ0eU9iamVjdC5uYW1lLnRvTG93ZXJDYXNlKCku
cmVwbGFjZSgvIC9nLCAnLScpOworICAgICAgICBjb250YWluZXIuc2V0QXR0cmlidXRlKCJpZCIs
ICJwcm9wZXJ0eS0iICsgc2x1Zyk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5oYXNo
ICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoID09ICIjIiArIGNvbnRhaW5lci5nZXRBdHRyaWJ1dGUo
J2lkJykpIHsKKyAgICAgICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgKz0gIiBvcGVuZWQiOwor
ICAgICAgICB9CisKKyAgICAgICAgdmFyIGNvcm5lclN0YXR1cyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgICAgICBjb3JuZXJTdGF0dXMuY2xhc3NOYW1lID0gInN0YXR1cy1t
YXJrZXIgIjsKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGNvcm5lclN0YXR1cyk7CisK
KyAgICAgICAgdmFyIGRlc2NyaXB0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgICAgIGRlc2NyaXB0aW9uQ29udGFpbmVyLmNsYXNzTmFtZSA9ICJwcm9w
ZXJ0eS1kZXNjcmlwdGlvbiI7CisKKyAgICAgICAgdmFyIGZlYXR1cmVIZWFkZXJDb250YWluZXIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZmVhdHVyZUhlYWRlckNv
bnRhaW5lci5jbGFzc05hbWUgPSAicHJvcGVydHktaGVhZGVyIjsKKyAgICAgICAgZGVzY3JpcHRp
b25Db250YWluZXIuYXBwZW5kQ2hpbGQoZmVhdHVyZUhlYWRlckNvbnRhaW5lcik7CisKKyAgICAg
ICAgdmFyIHRpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImgzIik7CisgICAg
ICAgIHZhciBhbmNob3JMaW5rRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsK
KyAgICAgICAgYW5jaG9yTGlua0VsZW1lbnQuaHJlZiA9ICIjIiArIGNvbnRhaW5lci5nZXRBdHRy
aWJ1dGUoImlkIik7CisgICAgICAgIGFuY2hvckxpbmtFbGVtZW50Lm5hbWUgPSBjb250YWluZXIu
Z2V0QXR0cmlidXRlKCJpZCIpOworICAgICAgICBhbmNob3JMaW5rRWxlbWVudC50ZXh0Q29udGVu
dCA9IHByb3BlcnR5T2JqZWN0Lm5hbWU7CisgICAgICAgIHRpdGxlRWxlbWVudC5hcHBlbmRDaGls
ZChhbmNob3JMaW5rRWxlbWVudCk7CisKKyAgICAgICAgaWYgKGNhdGVnb3J5T2JqZWN0KSB7Cisg
ICAgICAgICAgICBpZiAoaGFzU3BlY0xpbmspIHsKKyAgICAgICAgICAgICAgICB2YXIgc3BlY1Nw
YW4gPSBjcmVhdGVMaW5rV2l0aEhlYWRpbmcoInNwYW4iLCBudWxsLCBjYXRlZ29yeU9iamVjdC5z
aG9ydG5hbWUsIHNwZWNpZmljYXRpb25PYmplY3QudXJsKTsKKyAgICAgICAgICAgICAgICBzcGVj
U3Bhbi5jbGFzc05hbWUgPSAnc3BlYy1sYWJlbCc7CisgICAgICAgICAgICAgICAgdGl0bGVFbGVt
ZW50LmFwcGVuZENoaWxkKHNwZWNTcGFuKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgdmFyIGxhYmVsU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
KyAgICAgICAgICAgICAgICBsYWJlbFNwYW4uY2xhc3NOYW1lID0gJ3NwZWMtbGFiZWwnOworICAg
ICAgICAgICAgICAgIGxhYmVsU3Bhbi50ZXh0Q29udGVudCA9IGNhdGVnb3J5T2JqZWN0LnNob3J0
bmFtZTsKKyAgICAgICAgICAgICAgICB0aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQobGFiZWxTcGFu
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZlYXR1cmVIZWFkZXJDb250
YWluZXIuYXBwZW5kQ2hpbGQodGl0bGVFbGVtZW50KTsKKworICAgICAgICB2YXIgYWxpYXNlcyA9
IHByb3BlcnR5TmFtZUFsaWFzZXMocHJvcGVydHlPYmplY3QpOworICAgICAgICBpZiAoYWxpYXNl
cy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0eUFsaWFzRGl2ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBwcm9wZXJ0eUFsaWFzRGl2LmNsYXNz
TmFtZSA9ICdwcm9wZXJ0eS1hbGlhcyc7CisgICAgICAgICAgICBwcm9wZXJ0eUFsaWFzRGl2LnRl
eHRDb250ZW50ID0gJ0Fsc28gc3VwcG9ydGVkIGFzOiAnICsgYWxpYXNlcy5qb2luKCcsICcpOwor
ICAgICAgICAgICAgZmVhdHVyZUhlYWRlckNvbnRhaW5lci5hcHBlbmRDaGlsZChwcm9wZXJ0eUFs
aWFzRGl2KTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0b2dnbGVkQ29udGVudENvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICB0b2dnbGVkQ29udGVu
dENvbnRhaW5lci5jbGFzc05hbWUgPSAidG9nZ2xlYWJsZSI7CisgICAgICAgIGZlYXR1cmVIZWFk
ZXJDb250YWluZXIuYXBwZW5kQ2hpbGQodG9nZ2xlZENvbnRlbnRDb250YWluZXIpOworCisgICAg
ICAgIHZhciBsb25naGFuZHMgPSBwcm9wZXJ0eUxvbmdoYW5kcyhwcm9wZXJ0eU9iamVjdCk7Cisg
ICAgICAgIGlmIChsb25naGFuZHMubGVuZ3RoKSB7CisgICAgICAgICAgICB2YXIgbG9uZ2hhbmRz
RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgICAgICBsb25naGFu
ZHNEaXYuY2xhc3NOYW1lID0gJ2xvbmdoYW5kcyc7CisKKyAgICAgICAgICAgIGxvbmdoYW5kc0Rp
di50ZXh0Q29udGVudCA9ICdTaG9ydGhhbmQgZm9yICc7CisKKyAgICAgICAgICAgIGZvciAodmFy
IGkgaW4gbG9uZ2hhbmRzKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPiAwKQorICAgICAgICAg
ICAgICAgICAgICBsb25naGFuZHNEaXYuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJywgJykpOworICAgICAgICAgICAgICAgIHZhciBsb25naGFuZCA9IGxvbmdoYW5kc1tpXTsK
KyAgICAgICAgICAgICAgICB2YXIgbG9uZ2hhbmRMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiYSIpOworICAgICAgICAgICAgICAgIGxvbmdoYW5kTGluay5ocmVmID0gIiNwcm9wZXJ0eS0i
ICsgbG9uZ2hhbmQ7CisgICAgICAgICAgICAgICAgbG9uZ2hhbmRMaW5rLnRleHRDb250ZW50ID0g
bG9uZ2hhbmQ7CisgICAgICAgICAgICAgICAgbG9uZ2hhbmRzRGl2LmFwcGVuZENoaWxkKGxvbmdo
YW5kTGluayk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgdG9nZ2xlZENv
bnRlbnRDb250YWluZXIuYXBwZW5kQ2hpbGQobG9uZ2hhbmRzRGl2KTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgZnVuY3Rpb24gY29sbGFwc2VQcmVmaXhlZFZhbHVlcyh2YWx1ZXMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciByZW1haW5pbmdWYWx1ZXMgPSBbXTsKKyAgICAgICAg
ICAgIHZhciBwcmVmaXhNYXAgPSB7fTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh2
YXIgdmFsdWVPYmogb2YgdmFsdWVzKSB7CisgICAgICAgICAgICAgICAgdmFyIHZhbHVlTmFtZSA9
IHZhbHVlT2JqLnZhbHVlOworCisgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHByZWZpeFJl
Z2V4cC5leGVjKHZhbHVlTmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkgeworICAg
ICAgICAgICAgICAgICAgICB2YXIgdW5wcmVmaXhlZCA9IHJlc3VsdFsyXTsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIHVucHJlZml4ZWRWYWx1ZSA9IGZpbmRWYWx1ZUJ5TmFtZSh2YWx1ZXMsIHVu
cHJlZml4ZWQpOworICAgICAgICAgICAgICAgICAgICBpZiAodW5wcmVmaXhlZFZhbHVlKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAocHJlZml4TWFwW3VucHJlZml4ZWRWYWx1ZS52YWx1ZV0g
PSBwcmVmaXhNYXBbdW5wcmVmaXhlZFZhbHVlLnZhbHVlXSB8fCBbXSkucHVzaCh2YWx1ZU5hbWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
cmVtYWluaW5nVmFsdWVzLnB1c2godmFsdWVPYmopOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBmb3IgKHZhciBwcmVmaXhlZCBpbiBwcmVmaXhNYXApIHsKKyAgICAg
ICAgICAgICAgICB2YXIgdW5wcmVmaXhlZFZhbHVlID0gZmluZFZhbHVlQnlOYW1lKHJlbWFpbmlu
Z1ZhbHVlcywgcHJlZml4ZWQpOworICAgICAgICAgICAgICAgIHVucHJlZml4ZWRWYWx1ZS5hbGlh
c2VzID0gcHJlZml4TWFwW3ByZWZpeGVkXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgcmV0dXJuIHJlbWFpbmluZ1ZhbHVlczsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChwcm9wZXJ0eU9iamVjdC52YWx1ZXMubGVuZ3RoKSB7CisgICAgICAgICAgICB2YXIgdmFs
dWVzSGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaDQiKTsKKyAgICAgICAgICAgIHZh
bHVlc0hlYWRlci50ZXh0Q29udGVudCA9ICdTdXBwb3J0ZWQgVmFsdWVzOic7CisgICAgICAgICAg
ICB0b2dnbGVkQ29udGVudENvbnRhaW5lci5hcHBlbmRDaGlsZCh2YWx1ZXNIZWFkZXIpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICB2YXIgdmFsdWVzTGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInVsIik7CisgICAgICAgICAgICB2YWx1ZXNMaXN0LmNsYXNzTmFtZSA9ICd2YWx1ZXMn
OworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdmFsdWVzID0gY29sbGFwc2VQcmVmaXhl
ZFZhbHVlcyhwcm9wZXJ0eU9iamVjdC52YWx1ZXMpOworICAgICAgICAgICAgZm9yICh2YXIgdmFs
dWVPYmogb2YgdmFsdWVzKSB7CisgICAgICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2YWx1
ZU9iai5lbCA9IGxpOworCisgICAgICAgICAgICAgICAgdmFyIGxpbmsgPSB1bmRlZmluZWQ7Cisg
ICAgICAgICAgICAgICAgdmFyIHZhbHVlQWxpYXNlcyA9IHVuZGVmaW5lZDsKKyAgICAgICAgICAg
ICAgICB2YXIgc3RhdHVzID0gdW5kZWZpbmVkOworICAgICAgICAgICAgICAgIGlmICgnYWxpYXNl
cycgaW4gdmFsdWVPYmopCisgICAgICAgICAgICAgICAgICAgIHZhbHVlQWxpYXNlcyA9IHZhbHVl
T2JqLmFsaWFzZXM7CisKKyAgICAgICAgICAgICAgICBpZiAoJ3N0YXR1cycgaW4gdmFsdWVPYmop
CisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHZhbHVlT2JqLnN0YXR1czsKKworICAgICAg
ICAgICAgICAgIGlmICgndXJsJyBpbiB2YWx1ZU9iaikKKyAgICAgICAgICAgICAgICAgICAgbGlu
ayA9IHZhbHVlT2JqWyd1cmwnXTsKKworICAgICAgICAgICAgICAgIGFwcGVuZFZhbHVlV2l0aExp
bmsobGksIHZhbHVlT2JqLnZhbHVlLCBsaW5rKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBpZiAodmFsdWVBbGlhc2VzKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzcGFu
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgICAgICAgICAgICAgICAgICBz
cGFuLnRleHRDb250ZW50ID0gJyAoJyArIHZhbHVlQWxpYXNlcy5qb2luKCcsICcpICsgJyknOwor
ICAgICAgICAgICAgICAgICAgICBzcGFuLmNsYXNzTmFtZSA9ICd2YWx1ZS1hbGlhcyc7CisgICAg
ICAgICAgICAgICAgICAgIGxpLmFwcGVuZENoaWxkKHNwYW4pOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzKSB7CisgICAgICAg
ICAgICAgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwor
ICAgICAgICAgICAgICAgICAgICBzcGFuLnRleHRDb250ZW50ID0gJyAoJyArIHN0YXR1cyArICcp
JzsKKyAgICAgICAgICAgICAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSAndmFsdWUtc3RhdHVzJzsK
KyAgICAgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoc3Bhbik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhbHVlc0xpc3QuYXBwZW5k
Q2hpbGQobGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdG9nZ2xlZENvbnRlbnRDb250
YWluZXIuYXBwZW5kQ2hpbGQodmFsdWVzTGlzdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHZhciBzdGF0dXNDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CisgICAgICAgIGNvcm5lclN0YXR1cy5jbGFzc05hbWUgKz0gc3RhdHVzQ2xhc3NOYW1lID0gcHJv
cGVydHlPYmplY3Quc3RhdHVzLnN0YXR1cy50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLyAvZywgJy0n
KTsKKyAgICAgICAgc3RhdHVzQ29udGFpbmVyLmNsYXNzTmFtZSA9ICJwcm9wZXJ0eS1zdGF0dXMg
IiArIHN0YXR1c0NsYXNzTmFtZTsKKyAgICAgICAgaWYgKCJ3ZWJraXQtdXJsIiBpbiBwcm9wZXJ0
eU9iamVjdCkgeworICAgICAgICAgICAgdmFyIHN0YXR1c0xpbmsgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJhIik7CisgICAgICAgICAgICBzdGF0dXNMaW5rLmhyZWYgPSBwcm9wZXJ0eU9iamVj
dFsid2Via2l0LXVybCJdOworICAgICAgICAgICAgc3RhdHVzTGluay50ZXh0Q29udGVudCA9IHBy
b3BlcnR5T2JqZWN0LnN0YXR1cy5zdGF0dXM7CisgICAgICAgICAgICBzdGF0dXNDb250YWluZXIu
YXBwZW5kQ2hpbGQoc3RhdHVzTGluayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBz
dGF0dXNDb250YWluZXIudGV4dENvbnRlbnQgPSBwcm9wZXJ0eU9iamVjdC5zdGF0dXMuc3RhdHVz
OworICAgICAgICB9CisKKyAgICAgICAgdG9nZ2xlZENvbnRlbnRDb250YWluZXIuYXBwZW5kQ2hp
bGQoc3RhdHVzQ29udGFpbmVyKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzcGVjaWZpY2F0aW9u
T2JqZWN0ICYmICJkZXNjcmlwdGlvbiIgaW4gc3BlY2lmaWNhdGlvbk9iamVjdCkgeworICAgICAg
ICAgICAgdmFyIHRlc3REZXNjcmlwdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsK
KyAgICAgICAgICAgIHRlc3REZXNjcmlwdGlvbi5jbGFzc05hbWUgPSAicHJvcGVydHktZGVzYyI7
CisgICAgICAgICAgICB0ZXN0RGVzY3JpcHRpb24uaW5uZXJIVE1MID0gc3BlY2lmaWNhdGlvbk9i
amVjdC5kZXNjcmlwdGlvbjsKKyAgICAgICAgICAgIHRvZ2dsZWRDb250ZW50Q29udGFpbmVyLmFw
cGVuZENoaWxkKHRlc3REZXNjcmlwdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3Bl
Y2lmaWNhdGlvbk9iamVjdCAmJiAiY29tbWVudCIgaW4gc3BlY2lmaWNhdGlvbk9iamVjdCkgewor
ICAgICAgICAgICAgaWYgKCJkZXNjcmlwdGlvbiIgaW4gc3BlY2lmaWNhdGlvbk9iamVjdCkgewor
ICAgICAgICAgICAgICAgIHZhciBociA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhyIik7Cisg
ICAgICAgICAgICAgICAgaHIuY2xhc3NOYW1lID0gJ2NvbW1lbnQnOworICAgICAgICAgICAgICAg
IHRvZ2dsZWRDb250ZW50Q29udGFpbmVyLmFwcGVuZENoaWxkKGhyKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHZhciBjb21tZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwor
ICAgICAgICAgICAgY29tbWVudC5jbGFzc05hbWUgPSAnY29tbWVudCc7CisgICAgICAgICAgICBj
b21tZW50LmlubmVySFRNTCA9IHNwZWNpZmljYXRpb25PYmplY3QuY29tbWVudDsKKyAgICAgICAg
ICAgIHRvZ2dsZWRDb250ZW50Q29udGFpbmVyLmFwcGVuZENoaWxkKGNvbW1lbnQpOworICAgICAg
ICB9CisKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRlc2NyaXB0aW9uQ29udGFpbmVy
KTsKKyAgICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGdldE1vc3RTcGVjaWZpY1Byb3BlcnR5KGNh
dGVnb3J5T2JqZWN0LCBzcGVjaWZpY2F0aW9uT2JqZWN0LCBhdHRyaWJ1dGVOYW1lKQorICAgICAg
ICB7CisgICAgICAgICAgICAvLyBUaGUgdXJsIGluIHRoZSBzcGVjaWZpY2F0aW9uIG9iamVjdCBp
cyBtb3JlIHNwZWNpZmljLCBzbyB1c2UgaXQgaWYgcHJlc2VudC4KKyAgICAgICAgICAgIGlmIChz
cGVjaWZpY2F0aW9uT2JqZWN0ICYmIGF0dHJpYnV0ZU5hbWUgaW4gc3BlY2lmaWNhdGlvbk9iamVj
dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BlY2lmaWNhdGlvbk9iamVjdFthdHRyaWJ1dGVO
YW1lXTsKKworICAgICAgICAgICAgcmV0dXJuIGNhdGVnb3J5T2JqZWN0W2F0dHJpYnV0ZU5hbWVd
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGhhc0RvY3VtZW50YXRpb25MaW5rIHx8IGhhc1Jl
ZmVyZW5jZUxpbmsgfHwgaGFzQ29udGFjdE9iamVjdCkgeworICAgICAgICAgICAgdmFyIG1vcmVJ
bmZvTGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIik7CisgICAgICAgICAgICBtb3Jl
SW5mb0xpc3QuY2xhc3NOYW1lID0gJ21vcmUtaW5mbyc7CisgICAgICAgICAgICBpZiAoaGFzRG9j
dW1lbnRhdGlvbkxpbmspIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgdXJsIGluIHRoZSBzcGVj
aWZpY2F0aW9uIG9iamVjdCBpcyBtb3JlIHNwZWNpZmljLCBzbyB1c2UgaXQgaWYgcHJlc2VudC4K
KyAgICAgICAgICAgICAgICB2YXIgdXJsID0gZ2V0TW9zdFNwZWNpZmljUHJvcGVydHkoY2F0ZWdv
cnlPYmplY3QsIHNwZWNpZmljYXRpb25PYmplY3QsICdkb2N1bWVudGF0aW9uLXVybCcpOworICAg
ICAgICAgICAgICAgIG1vcmVJbmZvTGlzdC5hcHBlbmRDaGlsZChjcmVhdGVMaW5rV2l0aEhlYWRp
bmcoImxpIiwgIkRvY3VtZW50YXRpb24iLCB1cmwsIHVybCkpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAoaGFzUmVmZXJlbmNlTGluaykgeworICAgICAgICAgICAgICAgIHZhciB1
cmwgPSBnZXRNb3N0U3BlY2lmaWNQcm9wZXJ0eShjYXRlZ29yeU9iamVjdCwgc3BlY2lmaWNhdGlv
bk9iamVjdCwgJ3VybCcpOworICAgICAgICAgICAgICAgIG1vcmVJbmZvTGlzdC5hcHBlbmRDaGls
ZChjcmVhdGVMaW5rV2l0aEhlYWRpbmcoImxpIiwgIlJlZmVyZW5jZSIsIHVybCwgdXJsKSk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChoYXNDb250YWN0T2JqZWN0KSB7CisgICAg
ICAgICAgICAgICAgdmFyIGxpID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAg
ICAgICAgICAgICBsaS50ZXh0Q29udGVudCA9ICJDb250YWN0OiAiOworICAgICAgICAgICAgICAg
IHZhciBjb250YWN0T2JqZWN0ID0gc3BlY2lmaWNhdGlvbk9iamVjdC5jb250YWN0OworICAgICAg
ICAgICAgICAgIGlmIChjb250YWN0T2JqZWN0LnR3aXR0ZXIpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbGkuYXBwZW5kQ2hpbGQoY3JlYXRlTGlua1dpdGhIZWFkaW5nKCJzcGFuIiwgbnVsbCwgY29u
dGFjdE9iamVjdC50d2l0dGVyLCBtYWtlVHdpdHRlckxpbmsoY29udGFjdE9iamVjdC50d2l0dGVy
KSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY29udGFjdE9iamVj
dC5lbWFpbCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29udGFjdE9iamVjdC50d2l0dGVy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiIC0gIikpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIHZhciBlbWFpbFRleHQgPSBjb250YWN0T2JqZWN0LmVtYWlsOworICAgICAgICAgICAg
ICAgICAgICBpZiAoY29udGFjdE9iamVjdC5uYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbWFpbFRleHQgPSBjb250YWN0T2JqZWN0Lm5hbWU7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgbGkuYXBwZW5kQ2hpbGQoY3JlYXRlTGlua1dpdGhIZWFkaW5n
KCJzcGFuIiwgbnVsbCwgZW1haWxUZXh0LCAibWFpbHRvOiIgKyBjb250YWN0T2JqZWN0LmVtYWls
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1vcmVJbmZvTGlzdC5hcHBl
bmRDaGlsZChsaSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRvZ2dsZWRDb250ZW50
Q29udGFpbmVyLmFwcGVuZENoaWxkKG1vcmVJbmZvTGlzdCk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gY29udGFpbmVyOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiByZW5kZXJTcGVj
aWZpY2F0aW9ucyhjYXRlZ29yaWVzLCBwcm9wZXJ0aWVzKQorICAgIHsKKyAgICAgICAgdmFyIHNw
ZWNpZmljYXRpb25zTGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVjaWZpY2F0aW9u
cycpOworCisgICAgICAgIHZhciBhbGxDYXRlZ29yaWVzID0gT2JqZWN0LmtleXMoY2F0ZWdvcmll
cykuc29ydCgpOworICAgICAgICBmb3IgKHZhciBjYXRlZ29yeUtleSBvZiBhbGxDYXRlZ29yaWVz
KSB7CisgICAgICAgICAgICB2YXIgY2F0ZWdvcnkgPSBjYXRlZ29yaWVzW2NhdGVnb3J5S2V5XTsK
KyAgICAgICAgICAgIHZhciBlbnRyeSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7Cisg
ICAgICAgICAgICB2YXIgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwor
ICAgICAgICAgICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsK
KyAgICAgICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsJ3JhZGlvJyk7CisgICAgICAg
ICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgY2F0ZWdvcnlLZXkpOworICAgICAgICAg
ICAgaW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywgJ2NhdGVnb3JpZXMnKTsKKyAgICAgICAgICAg
IGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgeyB1cGRhdGVTZWFy
Y2gocHJvcGVydGllcyk7IH0pOworICAgICAgICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQoaW5wdXQp
OworICAgICAgICAgICAgbGFiZWwuY2xhc3NOYW1lID0gY2F0ZWdvcnlLZXkudG9Mb2NhbGVMb3dl
ckNhc2UoKS5yZXBsYWNlKC8gL2csICctJyk7CisgICAgICAgICAgICBsYWJlbC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICIgKyBjYXRlZ29yeVsnc2hvcnRuYW1lJ10pKTsK
KyAgICAgICAgICAgIGVudHJ5LmFwcGVuZENoaWxkKGxhYmVsKTsKKyAgICAgICAgICAgIHNwZWNp
ZmljYXRpb25zTGlzdC5hcHBlbmRDaGlsZChlbnRyeSk7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgZnVuY3Rpb24gZ2V0UHJvcGVydHlDYXRlZ29yeShwcm9wZXJ0eU9iamVjdCkKKyAgICB7
CisgICAgICAgIGlmICgnc3BlY2lmaWNhdGlvbicgaW4gcHJvcGVydHlPYmplY3QgJiYgJ2NhdGVn
b3J5JyBpbiBwcm9wZXJ0eU9iamVjdC5zcGVjaWZpY2F0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IHByb3BlcnR5T2JqZWN0LnNwZWNpZmljYXRpb24uY2F0ZWdvcnk7CisKKyAgICAgICAgcmV0dXJu
IHVuZGVmaW5lZDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiByZW5kZXJQcm9wZXJ0aWVzKGNhdGVn
b3JpZXMsIHByb3BlcnR5T2JqZWN0cykKKyAgICB7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzQ29u
dGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3BlcnRpZXMtY29udGFpbmVyJyk7
CisgICAgICAgIGZvciAodmFyIHByb3BlcnR5T2JqZWN0IG9mIHByb3BlcnR5T2JqZWN0cykgewor
ICAgICAgICAgICAgdmFyIGNhdGVnb3J5ID0gZ2V0UHJvcGVydHlDYXRlZ29yeShwcm9wZXJ0eU9i
amVjdCk7CisgICAgICAgICAgICBwcm9wZXJ0aWVzQ29udGFpbmVyLmFwcGVuZENoaWxkKGNyZWF0
ZVByb3BlcnR5VmlldyhjYXRlZ29yaWVzW2NhdGVnb3J5XSwgcHJvcGVydHlPYmplY3QpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIGNvbnZlcnRUb1RpdGxlQ2FzZShzdHJpbmcp
CisgICAgeworICAgICAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL1x3XFMqL2csIGZ1bmN0aW9u
KHR4dCl7CisgICAgICAgICAgICByZXR1cm4gdHh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsg
dHh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBpbml0U2VhcmNoKHByb3BlcnRpZXMsIGNhdGVnb3JpZXMpCisgICAgeworICAgICAg
ICB2YXIgZmlsdGVyc0Zvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvcGVydHktZmls
dGVycycpOworICAgICAgICB2YXIgc3RhdHVzQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3N0YXR1cy1maWx0ZXJzJyk7CisgICAgICAgIHZhciBpbnB1dEZpZWxkID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaCcpOworICAgICAgICB2YXIgZmVhdHVyZXNFbHMgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucHJvcGVydGllcyA+IGxpJyk7CisgICAgICAgIHZh
ciBzdGF0dXNGaWx0ZXJzID0ge307CisKKyAgICAgICAgdmFyIHN0YXR1c09yZGVyID0gWworICAg
ICAgICAgICAgJ2RvbmUnLAorICAgICAgICAgICAgJ2luIGRldmVsb3BtZW50JywKKyAgICAgICAg
ICAgICd1bmRlciBjb25zaWRlcmF0aW9uJywKKyAgICAgICAgICAgICdleHBlcmltZW50YWwnLAor
ICAgICAgICAgICAgJ25vbi1zdGFuZGFyZCcsCisgICAgICAgICAgICAnbm90IGNvbnNpZGVyaW5n
JywKKyAgICAgICAgICAgICdub3QgaW1wbGVtZW50ZWQnLAorICAgICAgICAgICAgJ29ic29sZXRl
JywKKyAgICAgICAgXTsKKworICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24ocHJv
cGVydHksIGkpIHsKKyAgICAgICAgICAgIHByb3BlcnR5LmVsID0gZmVhdHVyZXNFbHNbaV07Cisg
ICAgICAgICAgICBwcm9wZXJ0eS52aXNpYmxlID0gdHJ1ZTsKKworICAgICAgICAgICAgLy8gRklY
TUU6IG5lZWQgc3RhdHVzIHBlciB2YWx1ZSBhcyB3ZWxsLgorICAgICAgICAgICAgaWYgKHByb3Bl
cnR5LnN0YXR1cyAhPSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eVN0YXR1
c0tleSA9IHByb3BlcnR5LnN0YXR1cy5zdGF0dXMudG9Mb2NhbGVMb3dlckNhc2UoKTsKKworICAg
ICAgICAgICAgICAgIGlmICghc3RhdHVzRmlsdGVyc1twcm9wZXJ0eVN0YXR1c0tleV0pCisgICAg
ICAgICAgICAgICAgICAgIHN0YXR1c0ZpbHRlcnNbcHJvcGVydHlTdGF0dXNLZXldID0gcHJvcGVy
dHkuc3RhdHVzLnN0YXR1czsKKworICAgICAgICAgICAgICAgIGlmIChzdGF0dXNPcmRlci5pbmRl
eE9mKHByb3BlcnR5U3RhdHVzS2V5KSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgd2luZG93
LmNvbnNvbGUubG9nKCdTdGF0dXMgJyArIHByb3BlcnR5U3RhdHVzS2V5ICsgJyBpcyBub3Qgb25l
IG9mIHRoZSBwcmVkZWZpbmVkIHN0YXR1cyBrZXlzICcsIHN0YXR1c09yZGVyKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBrZXkgb2Ygc3Rh
dHVzT3JkZXIpIHsKKyAgICAgICAgICAgIHZhciBzdGF0dXMgPSBzdGF0dXNGaWx0ZXJzW2tleV07
CisgICAgICAgICAgICB2YXIgZW50cnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOwor
ICAgICAgICAgICAgdmFyIGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsK
KyAgICAgICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7
CisgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCdjaGVja2JveCcpOworICAg
ICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd2YWx1ZScsIGtleSk7CisgICAgICAgICAgICBp
bnB1dC5jbGFzc05hbWUgPSAnc3RhdHVzLWNoZWNrYm94JzsKKyAgICAgICAgICAgIGlucHV0LmFk
ZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGZ1bmN0aW9uKCkgeyB1cGRhdGVTZWFyY2gocHJvcGVy
dGllcyk7IH0pOworICAgICAgICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQoaW5wdXQpOworICAgICAg
ICAgICAgbGFiZWwuY2xhc3NOYW1lID0gc3RhdHVzLnJlcGxhY2UoLyAvZywgJy0nKTsKKyAgICAg
ICAgICAgIGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgIiArIGNv
bnZlcnRUb1RpdGxlQ2FzZShzdGF0dXMpKSk7CisgICAgICAgICAgICBlbnRyeS5hcHBlbmRDaGls
ZChsYWJlbCk7CisgICAgICAgICAgICBzdGF0dXNDb250YWluZXIuYXBwZW5kQ2hpbGQoZW50cnkp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBBcHBlbmQgdGhlIHNwZWNpYWwgIkJ5
IFNwZWNpZmljYXRpb24iIGNoZWNrYm94CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBlbnRy
eSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICB2YXIgbGFiZWwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOworICAgICAgICAgICAgdmFyIGlucHV0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgICAgIGlucHV0Lmlk
ID0gJ2J5LXNwZWMtY2hlY2tib3gnOworICAgICAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd0
eXBlJywnY2hlY2tib3gnKTsKKyAgICAgICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2No
YW5nZScsIGZ1bmN0aW9uKCkgeyB1cGRhdGVTZWFyY2gocHJvcGVydGllcyk7IH0pOworICAgICAg
ICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQoaW5wdXQpOworICAgICAgICAgICAgbGFiZWwuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiBCeSBTcGVjaWZpY2F0aW9uOiIpKTsKKyAg
ICAgICAgICAgIGVudHJ5LmFwcGVuZENoaWxkKGxhYmVsKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgdmFyIHNwZWNzTGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7CisgICAg
ICAgICAgICBzcGVjc0xpc3QuY2xhc3NOYW1lID0gJ3NwZWNpZmljYXRpb25zJzsKKyAgICAgICAg
ICAgIHNwZWNzTGlzdC5pZCA9ICdzcGVjaWZpY2F0aW9ucyc7CisgICAgICAgICAgICBlbnRyeS5h
cHBlbmRDaGlsZChzcGVjc0xpc3QpOworICAgICAgICAgICAgCisgICAgICAgICAgICBzdGF0dXND
b250YWluZXIuYXBwZW5kQ2hpbGQoZW50cnkpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHBy
ZWZpeENvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmVmaXgtZmlsdGVycycp
OworICAgICAgICB2YXIgcHJlZml4RmlsdGVycyA9IHt9OworICAgICAgICBwcmVmaXhGaWx0ZXJz
WydwcmVmaXgtc3VwcG9ydGVkLXByb3BlcnR5J10gPSAnUHJvcGVydHkgd2l0aCBhbmQgd2l0aG91
dCBwcmVmaXgnOworICAgICAgICBwcmVmaXhGaWx0ZXJzWydwcmVmaXgtb25seS1wcm9wZXJ0eSdd
ID0gJ1ByZWZpeGVkLW9ubHkgUHJvcGVydGllcyc7CisgICAgICAgIHByZWZpeEZpbHRlcnNbJ3By
ZWZpeC1zdXBwb3J0ZWQtdmFsdWUnXSA9ICdQcmVmaXhlZCBWYWx1ZXMnOworICAgICAgICBwcmVm
aXhGaWx0ZXJzWydwcmVmaXgtb25seS12YWx1ZSddID0gJ1ByZWZpeGVkLW9ubHkgVmFsdWVzJzsK
KworICAgICAgICBmb3IgKHZhciBrZXkgaW4gcHJlZml4RmlsdGVycykgeworICAgICAgICAgICAg
dmFyIHN0YXR1cyA9IHByZWZpeEZpbHRlcnNba2V5XTsKKyAgICAgICAgICAgIHZhciBlbnRyeSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICB2YXIgbGFiZWwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOworICAgICAgICAgICAgdmFyIGlucHV0ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgICAgIGlucHV0LnNldEF0
dHJpYnV0ZSgndHlwZScsJ2NoZWNrYm94Jyk7CisgICAgICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1
dGUoJ3ZhbHVlJywga2V5KTsKKyAgICAgICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2No
YW5nZScsIGZ1bmN0aW9uKCkgeyB1cGRhdGVTZWFyY2gocHJvcGVydGllcyk7IH0pOworICAgICAg
ICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQoaW5wdXQpOworICAgICAgICAgICAgbGFiZWwuY2xhc3NO
YW1lID0gc3RhdHVzLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgvIC9nLCAnLScpOworICAg
ICAgICAgICAgbGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiAiICsg
c3RhdHVzKSk7CisgICAgICAgICAgICBlbnRyeS5hcHBlbmRDaGlsZChsYWJlbCk7CisgICAgICAg
ICAgICBwcmVmaXhDb250YWluZXIuYXBwZW5kQ2hpbGQoZW50cnkpOworICAgICAgICB9CisKKyAg
ICAgICAgZmlsdGVyc0Zvcm0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoZSkg
eworICAgICAgICAgICAgaWYgKCBmaWx0ZXJzRm9ybS5jbGFzc05hbWUuaW5kZXhPZignb3BlbmVk
JykgIT09IC0xICkgeworICAgICAgICAgICAgICAgIGZpbHRlcnNGb3JtLmNsYXNzTmFtZSA9IGZp
bHRlcnNGb3JtLmNsYXNzTmFtZS5yZXBsYWNlKCcgb3BlbmVkJywnJyk7CisgICAgICAgICAgICB9
IGVsc2UgZmlsdGVyc0Zvcm0uY2xhc3NOYW1lICs9ICcgb3BlbmVkJzsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgaW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCdpbnB1dCcsIGZ1bmN0aW9uKCkg
eyB1cGRhdGVTZWFyY2gocHJvcGVydGllcyk7IH0pOworCisgICAgICAgIHZhciBpbnB1dHMgPSBb
XS5zbGljZS5jYWxsKGZpbHRlcnNGb3JtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpKTsK
KyAgICAgICAgaW5wdXRzLmZvckVhY2goZnVuY3Rpb24gKGlucHV0LGkpIHsKKyAgICAgICAgICAg
IGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKKyAgICAgICAg
ICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OworCisgICAgICAgIHJlbmRlclNwZWNpZmljYXRpb25zKGNhdGVnb3JpZXMsIHByb3BlcnRpZXMp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGdldFZhbHVlc09mQ2hlY2tlZEl0ZW1zKGl0ZW1zKQor
ICAgIHsKKyAgICAgICAgdmFyIGNoZWNrZWRWYWx1ZXMgPSBbXTsKKyAgICAgICAgaXRlbXMuZm9y
RWFjaChmdW5jdGlvbihpdGVtLGkpIHsKKyAgICAgICAgICAgIGlmIChpdGVtLmNoZWNrZWQpCisg
ICAgICAgICAgICAgICAgY2hlY2tlZFZhbHVlcy5wdXNoKGl0ZW0udmFsdWUpOworICAgICAgICB9
KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBjaGVja2VkVmFsdWVzOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHNlbGVjdGVkU3BlY2lmaWNhdGlvbnMoKQorICAgIHsKKyAgICAgICAgaWYgKCFk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYnktc3BlYy1jaGVja2JveCcpLmNoZWNrZWQpCisgICAg
ICAgICAgICByZXR1cm4gW107CisKKyAgICAgICAgdmFyIHNwZWNpZmljYXRpb25zTGlzdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcGVjaWZpY2F0aW9ucycpOworICAgICAgICByZXR1cm4g
Z2V0VmFsdWVzT2ZDaGVja2VkSXRlbXMoW10uc2xpY2UuY2FsbChzcGVjaWZpY2F0aW9uc0xpc3Qu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JykpKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rp
b24gdXBkYXRlU2VhcmNoKHByb3BlcnRpZXMpCisgICAgeworICAgICAgICB2YXIgaW5wdXRGaWVs
ZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWFyY2gnKTsKKyAgICAgICAgdmFyIHN0YXR1
c0NvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdGF0dXMtZmlsdGVycycpOwor
CisgICAgICAgIHZhciBzZWFyY2hUZXJtID0gaW5wdXRGaWVsZC52YWx1ZS50cmltKCkudG9Mb3dl
ckNhc2UoKTsKKyAgICAgICAgdmFyIGFjdGl2ZVN0YXR1c0ZpbHRlcnMgPSBnZXRWYWx1ZXNPZkNo
ZWNrZWRJdGVtcyhbXS5zbGljZS5jYWxsKHN0YXR1c0NvbnRhaW5lci5xdWVyeVNlbGVjdG9yQWxs
KCcuc3RhdHVzLWNoZWNrYm94JykpKTsKKworICAgICAgICB2YXIgcHJlZml4Q29udGFpbmVyID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZWZpeC1maWx0ZXJzJyk7CisgICAgICAgIHZhciBh
Y3RpdmVQcmVmaXhGaWx0ZXJzID0gZ2V0VmFsdWVzT2ZDaGVja2VkSXRlbXMoW10uc2xpY2UuY2Fs
bChwcmVmaXhDb250YWluZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lucHV0JykpKTsKKworICAg
ICAgICB2YXIgbnVtVmlzaWJsZSA9IHNlYXJjaFByb3BlcnRpZXMocHJvcGVydGllcywgc2VhcmNo
VGVybSwgc2VsZWN0ZWRTcGVjaWZpY2F0aW9ucygpLCBhY3RpdmVTdGF0dXNGaWx0ZXJzLCBhY3Rp
dmVQcmVmaXhGaWx0ZXJzKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3Bl
cnR5LXBsdXJhbGl6ZScpLnRleHRDb250ZW50ID0gbnVtVmlzaWJsZSA9PSAxID8gJ3Byb3BlcnR5
JyA6ICdwcm9wZXJ0aWVzJzsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Byb3Bl
cnR5LWNvdW50JykudGV4dENvbnRlbnQgPSBudW1WaXNpYmxlOworICAgICAgICAKKyAgICAgICAg
dXBkYXRlU3BlY3NTdGF0ZSgpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB1cGRhdGVTcGVj
c1N0YXRlKCkKKyAgICB7CisgICAgICAgIHZhciBzcGVjc0VuYWJsZWQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYnktc3BlYy1jaGVja2JveCcpLmNoZWNrZWQ7CisgICAgICAgIHZhciBzcGVj
aWZpY2F0aW9uc0xpc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3BlY2lmaWNhdGlvbnMn
KTsKKyAgICAgICAgCisgICAgICAgIHZhciByYWRpb2J1dHRvbnMgPSBbXS5zbGljZS5jYWxsKHNw
ZWNpZmljYXRpb25zTGlzdC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKSk7CisgICAgICAg
IHJhZGlvYnV0dG9ucy5mb3JFYWNoKGZ1bmN0aW9uKHJhZGlvYnV0dG9uLGkpIHsKKyAgICAgICAg
ICAgIHJhZGlvYnV0dG9uLmRpc2FibGVkID0gIXNwZWNzRW5hYmxlZDsKKyAgICAgICAgfSk7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gdmFsdWVPckFsaWFzSXNQcmVmaXhlZCh2YWx1ZU9iaikKKyAg
ICB7CisgICAgICAgIGlmIChwcmVmaXhSZWdleHAuZXhlYyh2YWx1ZU9iai52YWx1ZSkpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIGlmICgnYWxpYXMnIGluIHZh
bHVlT2JqKSB7CisgICAgICAgICAgICBmb3IgKHZhciBhbGlhcyBvZiB2YWx1ZU9iai5hbGlhc2Vz
KSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWZpeFJlZ2V4cC5leGVjKGFsaWFzKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBmaWx0
ZXJWYWx1ZXMocHJvcGVydHlPYmplY3QsIHNlYXJjaFRlcm0sIGNhdGVnb3JpZXMsIHN0YXR1c0Zp
bHRlcnMpCisgICAgeworICAgICAgICBmb3IgKHZhciB2YWx1ZU9iaiBvZiBwcm9wZXJ0eU9iamVj
dC52YWx1ZXMpIHsKKyAgICAgICAgICAgIGlmICghdmFsdWVPYmouZWwpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIHZhciB2aXNpYmxlID0gZmFsc2U7CisgICAgICAg
ICAgICB2aXNpYmxlID0gdmFsdWVPYmoudmFsdWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJj
aFRlcm0pICE9PSAtMTsKKworICAgICAgICAgICAgaWYgKCF2aXNpYmxlKSB7CisgICAgICAgICAg
ICAgICAgZm9yICh2YXIgY3VyclZhbHVlT2JqIG9mIHByb3BlcnR5T2JqZWN0LnZhbHVlcykgewor
ICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVPckFsaWFzSXNQcmVmaXhlZChjdXJyVmFsdWVP
YmopKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIXZpc2libGUpIHsKKyAg
ICAgICAgICAgICAgICBmb3IgKHZhciBjdXJyVmFsdWVPYmogb2YgcHJvcGVydHlPYmplY3QudmFs
dWVzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhSZWdleHAuZXhlYyhjdXJyVmFs
dWVPYmoudmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodmlzaWJs
ZSkKKyAgICAgICAgICAgICAgICB2YWx1ZU9iai5lbC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4n
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2YWx1ZU9iai5lbC5jbGFzc0xp
c3QuYWRkKCdoaWRkZW4nKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIHNlYXJj
aFByb3BlcnRpZXMocHJvcGVydGllcywgc2VhcmNoVGVybSwgY2F0ZWdvcmllcywgc3RhdHVzRmls
dGVycywgcHJlZml4RmlsdGVycykKKyAgICB7CisgICAgICAgIHZhciB2aXNpYmxlQ291bnQgPSAw
OworICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24ocHJvcGVydHlPYmplY3QpIHsK
KyAgICAgICAgICAgIHZhciBtYXRjaGVzU3RhdHVzU2VhcmNoID0gaXNTdGF0dXNGaWx0ZXJlZChw
cm9wZXJ0eU9iamVjdCwgc3RhdHVzRmlsdGVycyk7CisgICAgICAgICAgICB2YXIgbWF0Y2hlc1By
ZWZpeFNlYXJjaCA9IGlzUHJlZml4RmlsdGVyZWQocHJvcGVydHlPYmplY3QsIHByZWZpeEZpbHRl
cnMpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdmlzaWJsZSA9IHByb3BlcnR5SXNT
ZWFyY2hNYXRjaChwcm9wZXJ0eU9iamVjdCwgc2VhcmNoVGVybSkgJiYgaXNDYXRlZ29yeU1hdGNo
KHByb3BlcnR5T2JqZWN0LCBjYXRlZ29yaWVzKSAmJiBtYXRjaGVzU3RhdHVzU2VhcmNoICYmIG1h
dGNoZXNQcmVmaXhTZWFyY2g7CisgICAgICAgICAgICBpZiAodmlzaWJsZSAmJiAhcHJvcGVydHlP
YmplY3QudmlzaWJsZSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU9iamVjdC5lbC5jbGFzc05h
bWUgPSAncHJvcGVydHknOworICAgICAgICAgICAgZWxzZSBpZiAoIXZpc2libGUgJiYgcHJvcGVy
dHlPYmplY3QudmlzaWJsZSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0eU9iamVjdC5lbC5jbGFz
c05hbWUgPSAncHJvcGVydHkgaXMtaGlkZGVuJzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKHZpc2libGUpIHsKKyAgICAgICAgICAgICAgICBmaWx0ZXJWYWx1ZXMocHJvcGVydHlPYmpl
Y3QsIHNlYXJjaFRlcm0pOworICAgICAgICAgICAgICAgICsrdmlzaWJsZUNvdW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBwcm9wZXJ0eU9iamVjdC52aXNpYmxlID0gdmlzaWJsZTsK
KyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdmlzaWJsZUNvdW50OworICAg
IH0KKworICAgIGZ1bmN0aW9uIHByb3BlcnR5SXNTZWFyY2hNYXRjaChwcm9wZXJ0eU9iamVjdCwg
c2VhcmNoVGVybSkKKyAgICB7CisgICAgICAgIGlmIChwcm9wZXJ0eU9iamVjdC5uYW1lLnRvTG93
ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hUZXJtKSAhPT0gLTEpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICBpZiAoJ2tleXdvcmRzJyBpbiBwcm9wZXJ0eU9iamVjdCkgeworICAg
ICAgICAgICAgZm9yICh2YXIga2V5d29yZCBvZiBwcm9wZXJ0eU9iamVjdC5rZXl3b3Jkcykgewor
ICAgICAgICAgICAgICAgIGlmIChrZXl3b3JkLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hU
ZXJtKSAhPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciB2YWx1ZU9iaiBvZiBw
cm9wZXJ0eU9iamVjdC52YWx1ZXMpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZU9iai52YWx1ZS50
b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVGVybSkgIT09IC0xKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGZ1bmN0aW9uIGdldFNwZWNpZmljYXRpb25DYXRlZ29yeShwcm9wZXJ0eU9iamVjdCkK
KyAgICB7CisgICAgICAgIGlmICgnc3BlY2lmaWNhdGlvbicgaW4gcHJvcGVydHlPYmplY3QpIHsK
KyAgICAgICAgICAgIHZhciBzcGVjaWZpY2F0aW9uID0gcHJvcGVydHlPYmplY3Quc3BlY2lmaWNh
dGlvbjsKKyAgICAgICAgICAgIGlmICgnY2F0ZWdvcnknIGluIHNwZWNpZmljYXRpb24pIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gc3BlY2lmaWNhdGlvbi5jYXRlZ29yeTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKworICAgIGZ1
bmN0aW9uIGlzQ2F0ZWdvcnlNYXRjaChwcm9wZXJ0eU9iamVjdCwgY2F0ZWdvcmllcykKKyAgICB7
CisgICAgICAgIGlmICghY2F0ZWdvcmllcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICB2YXIgY2F0ZWdvcnk7CisgICAgICAgIGlmIChjYXRlZ29yeSA9IGdldFNw
ZWNpZmljYXRpb25DYXRlZ29yeShwcm9wZXJ0eU9iamVjdCkpIHsKKyAgICAgICAgICAgIGlmIChj
YXRlZ29yaWVzLmluZGV4T2YoY2F0ZWdvcnkpICE9PSAtMSkgeworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gcHJvcGVydHlPckFsaWFzSXNQcmVmaXhlZChw
cm9wZXJ0eU9iamVjdCkKKyAgICB7CisgICAgICAgIGlmIChwcmVmaXhSZWdleHAuZXhlYyhwcm9w
ZXJ0eU9iamVjdC5uYW1lKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAKKyAg
ICAgICAgZm9yICh2YXIgYWxpYXMgb2YgcHJvcGVydHlOYW1lQWxpYXNlcyhwcm9wZXJ0eU9iamVj
dCkpIHsKKyAgICAgICAgICAgIGlmIChwcmVmaXhSZWdleHAuZXhlYyhhbGlhcykpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBpc1N0YXR1c0ZpbHRlcmVkKHByb3BlcnR5
T2JqZWN0LCBhY3RpdmVGaWx0ZXJzKQorICAgIHsKKyAgICAgICAgaWYgKGFjdGl2ZUZpbHRlcnMu
bGVuZ3RoID09IDApCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHByb3Bl
cnR5T2JqZWN0LnN0YXR1cyA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAoYWN0aXZlRmlsdGVycy5pbmRleE9mKHByb3BlcnR5T2JqZWN0LnN0YXR1
cy5zdGF0dXMudG9Mb3dlckNhc2UoKSkgIT09IC0xKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZnVuY3Rpb24g
aXNQcmVmaXhGaWx0ZXJlZChwcm9wZXJ0eU9iamVjdCwgYWN0aXZlRmlsdGVycykKKyAgICB7Cisg
ICAgICAgIGlmIChhY3RpdmVGaWx0ZXJzLmxlbmd0aCA9PSAwKQorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICAgICAgaWYgKGFjdGl2ZUZpbHRlcnMuaW5kZXhPZigncHJlZml4LW9ubHkt
cHJvcGVydHknKSAhPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gcHJlZml4UmVnZXhwLmV4ZWMo
cHJvcGVydHlPYmplY3QubmFtZSk7CisKKyAgICAgICAgaWYgKGFjdGl2ZUZpbHRlcnMuaW5kZXhP
ZigncHJlZml4LXN1cHBvcnRlZC1wcm9wZXJ0eScpICE9PSAtMSkKKyAgICAgICAgICAgIHJldHVy
biBwcm9wZXJ0eU9yQWxpYXNJc1ByZWZpeGVkKHByb3BlcnR5T2JqZWN0KTsKKworICAgICAgICBp
ZiAoYWN0aXZlRmlsdGVycy5pbmRleE9mKCdwcmVmaXgtc3VwcG9ydGVkLXZhbHVlJykgIT09IC0x
KSB7CisgICAgICAgICAgICBmb3IgKHZhciB2YWx1ZU9iaiBvZiBwcm9wZXJ0eU9iamVjdC52YWx1
ZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWVPckFsaWFzSXNQcmVmaXhlZCh2YWx1ZU9i
aikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGFjdGl2ZUZpbHRlcnMuaW5kZXhPZigncHJlZml4LW9ubHkt
dmFsdWUnKSAhPT0gLTEpIHsKKyAgICAgICAgICAgIGZvciAodmFyIHZhbHVlT2JqIG9mIHByb3Bl
cnR5T2JqZWN0LnZhbHVlcykgeworICAgICAgICAgICAgICAgIGlmIChwcmVmaXhSZWdleHAuZXhl
Yyh2YWx1ZU9iai52YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gZmluZFZhbHVlQnlOYW1lKHZhbHVlcywgbmFtZSkKKyAgICB7
CisgICAgICAgIHJldHVybiB2YWx1ZXMuZmluZChmdW5jdGlvbihlbGVtZW50KSB7CisgICAgICAg
ICAgICByZXR1cm4gZWxlbWVudC52YWx1ZSA9PT0gbmFtZTsKKyAgICAgICAgfSkKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBtZXJnZVByb3BlcnRpZXModW5wcmVmaXhlZFByb3BlcnR5T2JqLCBwcmVm
aXhlZFByb3BlcnR5T2JqKQorICAgIHsKKyAgICAgICAgKHVucHJlZml4ZWRQcm9wZXJ0eU9ialsn
Y29kZWdlbi1wcm9wZXJ0aWVzJ10uYWxpYXNlcyA9IHVucHJlZml4ZWRQcm9wZXJ0eU9ialsnY29k
ZWdlbi1wcm9wZXJ0aWVzJ10uYWxpYXNlcyB8fCBbXSkucHVzaChwcmVmaXhlZFByb3BlcnR5T2Jq
Lm5hbWUpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgdmFsdWVPYmogb2YgcHJlZml4ZWRQ
cm9wZXJ0eU9iai52YWx1ZXMpIHsKKyAgICAgICAgICAgIGlmICghZmluZFZhbHVlQnlOYW1lKHVu
cHJlZml4ZWRQcm9wZXJ0eU9iai52YWx1ZXMsIHZhbHVlT2JqLnZhbHVlKSkKKyAgICAgICAgICAg
ICAgICBwcmVmaXhlZFByb3BlcnR5T2JqLnZhbHVlcy5wdXNoKHZhbHVlT2JqKTsKKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiB1bnByZWZpeGVkUHJvcGVydHlPYmo7CisgICAgfQorICAgIAor
ICAgIC8vIFNvbWV0aW1lcyB3ZSBoYXZlIHNlcGFyYXRlIGVudHJpZXMgZm9yIC13ZWJraXQtZm9v
IGFuZCBmb28uCisgICAgZnVuY3Rpb24gY29sbGFwc2VQcmVmaXhlZFByb3BlcnRpZXMocHJvcGVy
dGllcykKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIGZpbmRQcm9wZXJ0eUJ5TmFtZShwcm9wZXJ0
aWVzLCBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gcHJvcGVydGllcy5maW5k
KGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5uYW1l
ID09PSBuYW1lOworICAgICAgICAgICAgfSkKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZW1h
aW5pbmdQcm9wZXJ0aWVzID0gW107CisgICAgICAgIHZhciBwcmVmaXhNYXAgPSB7fTsKKworICAg
ICAgICBmb3IgKHZhciBwcm9wZXJ0eU9iaiBvZiBwcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICB2
YXIgcHJvcGVydHlOYW1lID0gcHJvcGVydHlPYmoubmFtZTsKKworICAgICAgICAgICAgdmFyIHJl
c3VsdCA9IHByZWZpeFJlZ2V4cC5leGVjKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBpZiAo
cmVzdWx0KSB7CisgICAgICAgICAgICAgICAgdmFyIHVucHJlZml4ZWQgPSByZXN1bHRbMl07Cisg
ICAgICAgICAgICAgICAgdmFyIHVucHJlZml4ZWRQcm9wZXJ0eSA9IGZpbmRQcm9wZXJ0eUJ5TmFt
ZShwcm9wZXJ0aWVzLCB1bnByZWZpeGVkKTsKKyAgICAgICAgICAgICAgICBpZiAodW5wcmVmaXhl
ZFByb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgICAgIG1lcmdlUHJvcGVydGllcyh1bnByZWZp
eGVkUHJvcGVydHksIHByb3BlcnR5T2JqKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZW1haW5p
bmdQcm9wZXJ0aWVzLnB1c2gocHJvcGVydHlPYmopOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gcmVtYWluaW5nUHJvcGVydGllczsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
YW5vbmljYWxpemVWYWx1ZXMocHJvcGVydHlPYmplY3QpCisgICAgeworICAgICAgICB2YXIgdmFs
dWVPYmplY3RzID0gW107CisgICAgICAgIC8vIENvbnZlcnQgYWxsIHZhbHVlcyB0byBvYmplY3Rz
LgorICAgICAgICBpZiAoJ3ZhbHVlcycgaW4gcHJvcGVydHlPYmplY3QpIHsKKyAgICAgICAgICAg
IGZvciAodmFyIHZhbHVlIG9mIHByb3BlcnR5T2JqZWN0LnZhbHVlcykgeworICAgICAgICAgICAg
ICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKQorICAgICAgICAgICAgICAgICAgICB2
YWx1ZU9iamVjdHMucHVzaCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZU9iamVjdHMucHVzaCh7ICd2YWx1ZScgOiB2YWx1ZSB9KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcm9wZXJ0eU9iamVjdC52YWx1ZXMgPSB2YWx1
ZU9iamVjdHM7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGNhbm9uaWNhbGl6ZVN0YXR1cyhw
cm9wZXJ0eU9iamVjdCwgY2F0ZWdvcmllcykKKyAgICB7CisgICAgICAgIC8vIEluaGVyaXQgInN0
YXR1cyIgZnJvbSB0aGUgY2F0ZW9ncnkgaWYgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkLgorICAg
ICAgICBpZiAoISgnc3RhdHVzJyBpbiBwcm9wZXJ0eU9iamVjdCkpIHsKKyAgICAgICAgICAgIHZh
ciBjYXRlZ29yeSA9IGdldFNwZWNpZmljYXRpb25DYXRlZ29yeShwcm9wZXJ0eU9iamVjdCkKKyAg
ICAgICAgICAgIGlmIChjYXRlZ29yeSkgeworICAgICAgICAgICAgICAgIHZhciBjYXRlZ29yeU9i
amVjdCA9IGNhdGVnb3JpZXNbY2F0ZWdvcnldOworICAgICAgICAgICAgICAgIGlmIChjYXRlZ29y
eU9iamVjdCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoJ3N0YXR1cycgaW4gY2F0ZWdvcnlP
YmplY3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5T2JqZWN0LnN0YXR1cyA9
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3RhdHVzJyA6IGNhdGVnb3J5T2JqZWN0
LnN0YXR1cworICAgICAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIC8vIENvbnZlcnQgYWxsIHZhbHVlcyB0byBvYmplY3RzLgorICAgICAgICAgICAg
aWYgKHR5cGVvZiBwcm9wZXJ0eU9iamVjdC5zdGF0dXMgPT09ICdzdHJpbmcnKQorICAgICAgICAg
ICAgICAgIHByb3BlcnR5T2JqZWN0LnN0YXR1cyA9IHsgJ3N0YXR1cyc6IHByb3BlcnR5T2JqZWN0
LnN0YXR1cyB9OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEoJ3N0YXR1cycgaW4gcHJvcGVy
dHlPYmplY3QpKSB7CisgICAgICAgICAgICBwcm9wZXJ0eU9iamVjdC5zdGF0dXMgPSB7CisgICAg
ICAgICAgICAgICAgJ3N0YXR1cycgOiAnZG9uZScsCisgICAgICAgICAgICAgICAgJ2VuYWJsZWQt
YnktZGVmYXVsdCcgOiB0cnVlCisgICAgICAgICAgICB9OworICAgICAgICB9IGVsc2UgaWYgKCEo
J3N0YXR1cycgaW4gcHJvcGVydHlPYmplY3Quc3RhdHVzKSkKKyAgICAgICAgICAgIHByb3BlcnR5
T2JqZWN0LnN0YXR1cy5zdGF0dXMgPSAnZG9uZSc7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9u
IGRpc3BsYXlGZWF0dXJlcyhyZXN1bHRzKQorICAgIHsKKyAgICAgICAgdmFyIG1haW5Db250ZW50
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb3BlcnR5LWxpc3QiKTsKKyAgICAgICAgdmFy
IHN1Y2Nlc3NTdWJ0cmVlID0gZG9jdW1lbnQuaW1wb3J0Tm9kZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgic3VjY2Vzcy10ZW1wbGF0ZSIpLmNvbnRlbnQsIHRydWUpOworICAgICAgICBtYWluQ29u
dGVudC5hcHBlbmRDaGlsZChzdWNjZXNzU3VidHJlZSk7CisgICAgICAgIAorICAgICAgICB2YXIg
cHJvcGVydGllcyA9IHJlc3VsdHNbMF1bJ3Byb3BlcnRpZXMnXTsKKyAgICAgICAgdmFyIGV2ZXJ5
dGhpbmdUb1Nob3cgPSBbXTsKKyAgICAgICAgCisgICAgICAgIHZhciBjYXRlZ29yaWVzID0gcmVz
dWx0c1swXVsnY2F0ZWdvcmllcyddOworCisgICAgICAgIGZvciAodmFyIHByb3BlcnR5IGluIHBy
b3BlcnRpZXMpIHsKKyAgICAgICAgICAgIHZhciBwcm9wZXJ0eU9iamVjdCA9IHByb3BlcnRpZXNb
cHJvcGVydHldOworICAgICAgICAgICAgcHJvcGVydHlPYmplY3QubmFtZSA9IHByb3BlcnR5Owor
CisgICAgICAgICAgICBjYW5vbmljYWxpemVWYWx1ZXMocHJvcGVydHlPYmplY3QpOworICAgICAg
ICAgICAgY2Fub25pY2FsaXplU3RhdHVzKHByb3BlcnR5T2JqZWN0LCBjYXRlZ29yaWVzKTsKKwor
ICAgICAgICAgICAgZXZlcnl0aGluZ1RvU2hvdy5wdXNoKHByb3BlcnR5T2JqZWN0KTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgZXZlcnl0aGluZ1RvU2hvdyA9IGNvbGxhcHNlUHJlZml4
ZWRQcm9wZXJ0aWVzKGV2ZXJ5dGhpbmdUb1Nob3cpOworICAgICAgICBzb3J0QWxwaGFiZXRpY2Fs
bHkoZXZlcnl0aGluZ1RvU2hvdyk7CisgICAgICAgIAorICAgICAgICByZW5kZXJQcm9wZXJ0aWVz
KGNhdGVnb3JpZXMsIGV2ZXJ5dGhpbmdUb1Nob3cpOworCisgICAgICAgIGluaXRTZWFyY2goZXZl
cnl0aGluZ1RvU2hvdywgY2F0ZWdvcmllcyk7CisgICAgICAgIAorICAgICAgICB1cGRhdGVTZWFy
Y2goZXZlcnl0aGluZ1RvU2hvdyk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZGlzcGxheUVycm9y
KGVycm9yKQorICAgIHsKKyAgICAgICAgd2luZG93LmNvbnNvbGUubG9nKCdkaXNwbGF5RXJyb3In
LCBlcnJvcikKKyAgICAgICAgdmFyIG1haW5Db250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInByb3BlcnR5LWxpc3QiKTsKKyAgICAgICAgdmFyIHN1Y2Nlc3NTdWJ0cmVlID0gZG9jdW1l
bnQuaW1wb3J0Tm9kZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZXJyb3ItdGVtcGxhdGUiKS5j
b250ZW50LCB0cnVlKTsKKworICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gIlVuYWJsZSB0byBs
b2FkICIgKyBlcnJvci51cmw7CisKKyAgICAgICAgaWYgKGVycm9yLnJlcXVlc3Quc3RhdHVzICE9
PSAyMDApIHsKKyAgICAgICAgICAgIGVycm9yTWVzc2FnZSArPSAiLCBzdGF0dXM6ICIgKyBlcnJv
ci5yZXF1ZXN0LnN0YXR1cyArICIgLSAiICsgZXJyb3IucmVxdWVzdC5zdGF0dXNUZXh0OworICAg
ICAgICB9IGVsc2UgaWYgKCFlcnJvci5yZXNwb25zZSkgeworICAgICAgICAgICAgZXJyb3JNZXNz
YWdlICs9ICIsIHRoZSBKU09OIGZpbGUgY2Fubm90IGJlIHByb2Nlc3NlZC4iOworICAgICAgICB9
CisKKyAgICAgICAgc3VjY2Vzc1N1YnRyZWUucXVlcnlTZWxlY3RvcigiI2Vycm9yLW1lc3NhZ2Ui
KS50ZXh0Q29udGVudCA9IGVycm9yTWVzc2FnZTsKKworICAgICAgICBtYWluQ29udGVudC5hcHBl
bmRDaGlsZChzdWNjZXNzU3VidHJlZSk7CisgICAgfQorCisgICAgUHJvbWlzZS5hbGwoW2xvYWRD
U1NQcm9wZXJ0aWVzXSkudGhlbihkaXNwbGF5RmVhdHVyZXMpLmNhdGNoKGRpc3BsYXlFcnJvcik7
Cit9CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBpbml0
aWFsaXplU3RhdHVzUGFnZSk7Cis8L3NjcmlwdD4KKworPD9waHAgZ2V0X2Zvb3RlcigpOyA/Pgo=
</data>
<flag name="review"
          id="324554"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>