<?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>63967</bug_id>
          
          <creation_ts>2011-07-05 19:12:04 -0700</creation_ts>
          <short_desc>Import qunit JavaScript unit testing framework</short_desc>
          <delta_ts>2011-07-05 19:30:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>432557</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-05 19:12:04 -0700</bug_when>
    <thetext>Import qunit JavaScript unit testing framework</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432559</commentid>
    <comment_count>1</comment_count>
      <attachid>99780</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-05 19:12:59 -0700</bug_when>
    <thetext>Created attachment 99780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432561</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-05 19:17:25 -0700</bug_when>
    <thetext>Attachment 99780 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/ThirdParty/ChangeLog&apos;, u&apos;Source/Thi...&quot; exit_code: 1

Last 3072 characters of output:
ter.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:269:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:270:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:271:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:279:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:282:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:289:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:290:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:291:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:292:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:293:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:294:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:295:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:296:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:300:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:301:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:302:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:303:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:304:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:305:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:306:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:307:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:308:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:309:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:310:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:311:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:312:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:313:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:317:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:318:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:319:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:322:  Line contains tab character.  [whitespace/tab] [5]
Source/ThirdParty/qunit/test/test.js:323:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 1431 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432566</commentid>
    <comment_count>3</comment_count>
      <attachid>99780</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-05 19:29:11 -0700</bug_when>
    <thetext>Comment on attachment 99780
Patch

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

OK.

&gt; Source/ThirdParty/qunit/qunit/qunit.css:7
&gt; + * Dual licensed under the MIT (MIT-LICENSE.txt)

MIT is OK?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432567</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-05 19:29:45 -0700</bug_when>
    <thetext>&gt; MIT is OK?

Yes.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432569</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-05 19:30:55 -0700</bug_when>
    <thetext>Committed r90427: &lt;http://trac.webkit.org/changeset/90427&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99780</attachid>
            <date>2011-07-05 19:12:59 -0700</date>
            <delta_ts>2011-07-05 19:29:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63967-20110705191258.patch</filename>
            <type>text/plain</type>
            <size>116792</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
VGhpcmRQYXJ0eS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwNDI2KQorKysgU291cmNlL1RoaXJkUGFy
dHkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDctMDUg
IEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBJbXBvcnQgcXVuaXQg
SmF2YVNjcmlwdCB1bml0IHRlc3RpbmcgZnJhbWV3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mzk2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlJ3JlIGdvaW5nIHRvIHVzZSB0aGlzIHVuaXQgdGVz
dGluZyBmcmFtZXdvcmsgdG8gdGVzdCBnYXJkZW4tby1tYXRpYy4KKworICAgICAgICAqIHF1bml0
OiBBZGRlZC4KKwogMjAxMS0wNi0wNCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgICogZ2x1OiBBZGRlZCBwcm9wZXJ0eSBzdm46aWdub3JlLgpJbmRleDogU291cmNl
L1RoaXJkUGFydHkvcXVuaXQvLmdpdGlnbm9yZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQ
YXJ0eS9xdW5pdC8uZ2l0aWdub3JlCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkv
cXVuaXQvLmdpdGlnbm9yZQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACisucHJvamVjdAor
Kn4KKyouZGlmZgorKi5wYXRjaAorLkRTX1N0b3JlCisKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L3F1bml0L1JFQURNRS5XZWJLaXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvcXVu
aXQvUkVBRE1FLldlYktpdAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L3F1bml0
L1JFQURNRS5XZWJLaXQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGhpcyBkaXJlY290
cnkgd2FzIGNyZWF0ZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kOgorCisgIGdpdCBjbG9u
ZSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3F1bml0LmdpdAorCitDb21taXQ6IGIwNjFlMjJj
NTRmNTQ4ZmEyYTc2OGYxNGFmNTg3NmM4MWFjZTVkMDkKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5
L3F1bml0L1JFQURNRS5tZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC9S
RUFETUUubWQJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC9SRUFETUUu
bWQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKK1tRVW5pdF0oaHR0cDovL2RvY3MuanF1
ZXJ5LmNvbS9RVW5pdCkgLSBBIEphdmFTY3JpcHQgVW5pdCBUZXN0aW5nIGZyYW1ld29yay4KKz09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1FVbml0IGlzIGEgcG93ZXJmdWwsIGVh
c3ktdG8tdXNlLCBKYXZhU2NyaXB0IHRlc3Qgc3VpdGUuIEl0J3MgdXNlZCBieSB0aGUgalF1ZXJ5
Citwcm9qZWN0IHRvIHRlc3QgaXRzIGNvZGUgYW5kIHBsdWdpbnMgYnV0IGlzIGNhcGFibGUgb2Yg
dGVzdGluZyBhbnkgZ2VuZXJpYworSmF2YVNjcmlwdCBjb2RlIChhbmQgZXZlbiBjYXBhYmxlIG9m
IHRlc3RpbmcgSmF2YVNjcmlwdCBjb2RlIG9uIHRoZSBzZXJ2ZXItc2lkZSkuCisKK1FVbml0IGlz
IGVzcGVjaWFsbHkgdXNlZnVsIGZvciByZWdyZXNzaW9uIHRlc3Rpbmc6IFdoZW5ldmVyIGEgYnVn
IGlzIHJlcG9ydGVkLAord3JpdGUgYSB0ZXN0IHRoYXQgYXNzZXJ0cyB0aGUgZXhpc3RlbmNlIG9m
IHRoYXQgcGFydGljdWxhciBidWcuIFRoZW4gZml4IGl0IGFuZAorY29tbWl0IGJvdGguIEV2ZXJ5
IHRpbWUgeW91IHdvcmsgb24gdGhlIGNvZGUgYWdhaW4sIHJ1biB0aGUgdGVzdHMuIElmIHRoZSBi
dWcKK2NvbWVzIHVwIGFnYWluIC0gYSByZWdyZXNzaW9uIC0geW91J2xsIHNwb3QgaXQgaW1tZWRp
YXRlbHkgYW5kIGtub3cgaG93IHRvIGZpeAoraXQsIGJlY2F1c2UgeW91IGtub3cgd2hhdCBjb2Rl
IHlvdSBqdXN0IGNoYW5nZWQuCisKK0hhdmluZyBnb29kIHVuaXQgdGVzdCBjb3ZlcmFnZSBtYWtl
cyBzYWZlIHJlZmFjdG9yaW5nIGVhc3kgYW5kIGNoZWFwLiBZb3UgY2FuCitydW4gdGhlIHRlc3Rz
IGFmdGVyIGVhY2ggc21hbGwgcmVmYWN0b3Jpbmcgc3RlcCBhbmQgYWx3YXlzIGtub3cgd2hhdCBj
aGFuZ2UKK2Jyb2tlIHNvbWV0aGluZy4KKworUVVuaXQgaXMgc2ltaWxhciB0byBvdGhlciB1bml0
IHRlc3RpbmcgZnJhbWV3b3JrcyBsaWtlIEpVbml0LCBidXQgbWFrZXMgdXNlIG9mCit0aGUgZmVh
dHVyZXMgSmF2YVNjcmlwdCBwcm92aWRlcyBhbmQgaGVscHMgd2l0aCB0ZXN0aW5nIGNvZGUgaW4g
dGhlIGJyb3dzZXIsIGVnLgord2l0aCBpdCdzIHN0b3Avc3RhcnQgZmFjaWxpdGllcyBmb3IgdGVz
dGluZyBhc3luY2hyb25vdXMgY29kZS4KKworSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIGhlbHBp
bmcgZGV2ZWxvcGluZyBRVW5pdCwgeW91IGFyZSBpbiB0aGUgcmlnaHQgcGxhY2UuCitGb3IgcmVs
YXRlZCBkaXNjdXNzaW9ucywgdmlzaXQgdGhlCitbUVVuaXQgYW5kIFRlc3RpbmcgZm9ydW1dKGh0
dHA6Ly9mb3J1bS5qcXVlcnkuY29tL3F1bml0LWFuZC10ZXN0aW5nKS4KKworUGxhbm5pbmcgZm9y
IGEgcXVuaXRqcy5jb20gc2l0ZSBhbmQgb3RoZXIgdGVzdGluZyB0b29scyByZWxhdGVkIHdvcmsg
bm93IGhhcHBlbnMKK29uIHRoZSBbalF1ZXJ5IFRlc3RpbmcgVGVhbSBwbGFubmluZyB3aWtpXSho
dHRwOi8vanF1ZXJ5dGVzdGluZy5wYndvcmtzLmNvbS93L3BhZ2UvNDE1NTYwMjYvRnJvbnRQYWdl
KS4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L3F1bml0L3BhY2thZ2UuanNvbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC9wYWNrYWdlLmpzb24JKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC9wYWNrYWdlLmpzb24JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjEgQEAKK3sKKwkibmFtZSI6ICJxdW5pdCIsCisJImF1dGhvciI6IHsKKwkJIm5hbWUi
OiAiSm9obiBSZXNpZyIsCisJCSJlbWFpbCI6ICJqZXJlc2lnQGdtYWlsLmNvbSIsCisJCSJ1cmwi
OiAiaHR0cDovL2Vqb2huLm9yZy8iCisJfSwKKwkibWFpbnRhaW5lciI6IHsKKwkJIm5hbWUiOiAi
SsO2cm4gWmFlZmZlcmVyIiwKKwkJImVtYWlsIjogImpvZXJuLnphZWZmZXJlckBnb29nbGVtYWls
LmNvbSIsCisJCSJ1cmwiOiAiaHR0cDovL2Jhc3Npc3RhbmNlLmRlLyIKKwl9LAorCSJ1cmwiOiAi
aHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9RVW5pdCIsCisJImxpY2Vuc2UiOiB7CisJCSJuYW1lIjog
Ik1JVCIsCisJCSJ1cmwiOiAiaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQt
bGljZW5zZS5waHAiCisJfSwKKwkiZGVzY3JpcHRpb24iOiAiQW4gZWFzeS10by11c2UgSmF2YVNj
cmlwdCBVbml0IFRlc3RpbmcgZnJhbWV3b3JrLiIsCisJImtleXdvcmRzIjogWyAidGVzdGluZyIs
ICJ1bml0IiwgImpxdWVyeSIgXSwKKwkibGliIjogInF1bml0IgorfQpJbmRleDogU291cmNlL1Ro
aXJkUGFydHkvcXVuaXQvcXVuaXQvcXVuaXQuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGly
ZFBhcnR5L3F1bml0L3F1bml0L3F1bml0LmNzcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L3F1bml0L3F1bml0L3F1bml0LmNzcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMjUg
QEAKKy8qKgorICogUVVuaXQgLSBBIEphdmFTY3JpcHQgVW5pdCBUZXN0aW5nIEZyYW1ld29yawor
ICoKKyAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vUVVuaXQKKyAqCisgKiBDb3B5cmlnaHQgKGMp
IDIwMTEgSm9obiBSZXNpZywgSsO2cm4gWmFlZmZlcmVyCisgKiBEdWFsIGxpY2Vuc2VkIHVuZGVy
IHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkKKyAqIG9yIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBs
aWNlbnNlcy4KKyAqLworCisvKiogRm9udCBGYW1pbHkgYW5kIFNpemVzICovCisKKyNxdW5pdC10
ZXN0cywgI3F1bml0LWhlYWRlciwgI3F1bml0LWJhbm5lciwgI3F1bml0LXRlc3RydW5uZXItdG9v
bGJhciwgI3F1bml0LXVzZXJBZ2VudCwgI3F1bml0LXRlc3RyZXN1bHQgeworCWZvbnQtZmFtaWx5
OiAiSGVsdmV0aWNhIE5ldWUgTGlnaHQiLCAiSGVsdmV0aWNhTmV1ZS1MaWdodCIsICJIZWx2ZXRp
Y2EgTmV1ZSIsIENhbGlicmksIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Cit9CisKKyNx
dW5pdC10ZXN0cnVubmVyLXRvb2xiYXIsICNxdW5pdC11c2VyQWdlbnQsICNxdW5pdC10ZXN0cmVz
dWx0LCAjcXVuaXQtdGVzdHMgbGkgeyBmb250LXNpemU6IHNtYWxsOyB9CisjcXVuaXQtdGVzdHMg
eyBmb250LXNpemU6IHNtYWxsZXI7IH0KKworCisvKiogUmVzZXRzICovCisKKyNxdW5pdC10ZXN0
cywgI3F1bml0LXRlc3RzIG9sLCAjcXVuaXQtaGVhZGVyLCAjcXVuaXQtYmFubmVyLCAjcXVuaXQt
dXNlckFnZW50LCAjcXVuaXQtdGVzdHJlc3VsdCB7CisJbWFyZ2luOiAwOworCXBhZGRpbmc6IDA7
Cit9CisKKworLyoqIEhlYWRlciAqLworCisjcXVuaXQtaGVhZGVyIHsKKwlwYWRkaW5nOiAwLjVl
bSAwIDAuNWVtIDFlbTsKKworCWNvbG9yOiAjODY5OWE0OworCWJhY2tncm91bmQtY29sb3I6ICMw
ZDMzNDk7CisKKwlmb250LXNpemU6IDEuNWVtOworCWxpbmUtaGVpZ2h0OiAxZW07CisJZm9udC13
ZWlnaHQ6IG5vcm1hbDsKKworCWJvcmRlci1yYWRpdXM6IDE1cHggMTVweCAwIDA7CisJLW1vei1i
b3JkZXItcmFkaXVzOiAxNXB4IDE1cHggMCAwOworCS13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1y
YWRpdXM6IDE1cHg7CisJLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxNXB4OworfQor
CisjcXVuaXQtaGVhZGVyIGEgeworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKKwljb2xvcjogI2My
Y2NkMTsKK30KKworI3F1bml0LWhlYWRlciBhOmhvdmVyLAorI3F1bml0LWhlYWRlciBhOmZvY3Vz
IHsKKwljb2xvcjogI2ZmZjsKK30KKworI3F1bml0LWJhbm5lciB7CisJaGVpZ2h0OiA1cHg7Cit9
CisKKyNxdW5pdC10ZXN0cnVubmVyLXRvb2xiYXIgeworCXBhZGRpbmc6IDAuNWVtIDAgMC41ZW0g
MmVtOworCWNvbG9yOiAjNUU3NDBCOworCWJhY2tncm91bmQtY29sb3I6ICNlZWU7Cit9CisKKyNx
dW5pdC11c2VyQWdlbnQgeworCXBhZGRpbmc6IDAuNWVtIDAgMC41ZW0gMi41ZW07CisJYmFja2dy
b3VuZC1jb2xvcjogIzJiODFhZjsKKwljb2xvcjogI2ZmZjsKKwl0ZXh0LXNoYWRvdzogcmdiYSgw
LCAwLCAwLCAwLjUpIDJweCAycHggMXB4OworfQorCisKKy8qKiBUZXN0czogUGFzcy9GYWlsICov
CisKKyNxdW5pdC10ZXN0cyB7CisJbGlzdC1zdHlsZS1wb3NpdGlvbjogaW5zaWRlOworfQorCisj
cXVuaXQtdGVzdHMgbGkgeworCXBhZGRpbmc6IDAuNGVtIDAuNWVtIDAuNGVtIDIuNWVtOworCWJv
cmRlci1ib3R0b206IDFweCBzb2xpZCAjZmZmOworCWxpc3Qtc3R5bGUtcG9zaXRpb246IGluc2lk
ZTsKK30KKworI3F1bml0LXRlc3RzLmhpZGVwYXNzIGxpLnBhc3MsICNxdW5pdC10ZXN0cy5oaWRl
cGFzcyBsaS5ydW5uaW5nICB7CisJZGlzcGxheTogbm9uZTsKK30KKworI3F1bml0LXRlc3RzIGxp
IHN0cm9uZyB7CisJY3Vyc29yOiBwb2ludGVyOworfQorCisjcXVuaXQtdGVzdHMgbGkgYSB7CisJ
cGFkZGluZzogMC41ZW07CisJY29sb3I6ICNjMmNjZDE7CisJdGV4dC1kZWNvcmF0aW9uOiBub25l
OworfQorI3F1bml0LXRlc3RzIGxpIGE6aG92ZXIsCisjcXVuaXQtdGVzdHMgbGkgYTpmb2N1cyB7
CisJY29sb3I6ICMwMDA7Cit9CisKKyNxdW5pdC10ZXN0cyBvbCB7CisJbWFyZ2luLXRvcDogMC41
ZW07CisJcGFkZGluZzogMC41ZW07CisKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOworCisJYm9y
ZGVyLXJhZGl1czogMTVweDsKKwktbW96LWJvcmRlci1yYWRpdXM6IDE1cHg7CisJLXdlYmtpdC1i
b3JkZXItcmFkaXVzOiAxNXB4OworCisJYm94LXNoYWRvdzogaW5zZXQgMHB4IDJweCAxM3B4ICM5
OTk7CisJLW1vei1ib3gtc2hhZG93OiBpbnNldCAwcHggMnB4IDEzcHggIzk5OTsKKwktd2Via2l0
LWJveC1zaGFkb3c6IGluc2V0IDBweCAycHggMTNweCAjOTk5OworfQorCisjcXVuaXQtdGVzdHMg
dGFibGUgeworCWJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7CisJbWFyZ2luLXRvcDogLjJlbTsK
K30KKworI3F1bml0LXRlc3RzIHRoIHsKKwl0ZXh0LWFsaWduOiByaWdodDsKKwl2ZXJ0aWNhbC1h
bGlnbjogdG9wOworCXBhZGRpbmc6IDAgLjVlbSAwIDA7Cit9CisKKyNxdW5pdC10ZXN0cyB0ZCB7
CisJdmVydGljYWwtYWxpZ246IHRvcDsKK30KKworI3F1bml0LXRlc3RzIHByZSB7CisJbWFyZ2lu
OiAwOworCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKKwl3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7Cit9
CisKKyNxdW5pdC10ZXN0cyBkZWwgeworCWJhY2tncm91bmQtY29sb3I6ICNlMGYyYmU7CisJY29s
b3I6ICMzNzRlMGM7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCisjcXVuaXQtdGVzdHMg
aW5zIHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZmZjYWNhOworCWNvbG9yOiAjNTAwOworCXRleHQt
ZGVjb3JhdGlvbjogbm9uZTsKK30KKworLyoqKiBUZXN0IENvdW50cyAqLworCisjcXVuaXQtdGVz
dHMgYi5jb3VudHMgICAgICAgICAgICAgICAgICAgICAgIHsgY29sb3I6IGJsYWNrOyB9CisjcXVu
aXQtdGVzdHMgYi5wYXNzZWQgICAgICAgICAgICAgICAgICAgICAgIHsgY29sb3I6ICM1RTc0MEI7
IH0KKyNxdW5pdC10ZXN0cyBiLmZhaWxlZCAgICAgICAgICAgICAgICAgICAgICAgeyBjb2xvcjog
IzcxMDkwOTsgfQorCisjcXVuaXQtdGVzdHMgbGkgbGkgeworCW1hcmdpbjogMC41ZW07CisJcGFk
ZGluZzogMC40ZW0gMC41ZW0gMC40ZW0gMC41ZW07CisJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsK
Kwlib3JkZXItYm90dG9tOiBub25lOworCWxpc3Qtc3R5bGUtcG9zaXRpb246IGluc2lkZTsKK30K
KworLyoqKiBQYXNzaW5nIFN0eWxlcyAqLworCisjcXVuaXQtdGVzdHMgbGkgbGkucGFzcyB7CisJ
Y29sb3I6ICM1RTc0MEI7CisJYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKKwlib3JkZXItbGVmdDog
MjZweCBzb2xpZCAjQzZFNzQ2OworfQorCisjcXVuaXQtdGVzdHMgLnBhc3MgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsgY29sb3I6ICM1MjhDRTA7IGJhY2tncm91bmQtY29sb3I6ICNEMkUwRTY7
IH0KKyNxdW5pdC10ZXN0cyAucGFzcyAudGVzdC1uYW1lICAgICAgICAgICAgICAgeyBjb2xvcjog
IzM2NjA5NzsgfQorCisjcXVuaXQtdGVzdHMgLnBhc3MgLnRlc3QtYWN0dWFsLAorI3F1bml0LXRl
c3RzIC5wYXNzIC50ZXN0LWV4cGVjdGVkICAgICAgICAgICB7IGNvbG9yOiAjOTk5OTk5OyB9CisK
KyNxdW5pdC1iYW5uZXIucXVuaXQtcGFzcyAgICAgICAgICAgICAgICAgICAgeyBiYWNrZ3JvdW5k
LWNvbG9yOiAjQzZFNzQ2OyB9CisKKy8qKiogRmFpbGluZyBTdHlsZXMgKi8KKworI3F1bml0LXRl
c3RzIGxpIGxpLmZhaWwgeworCWNvbG9yOiAjNzEwOTA5OworCWJhY2tncm91bmQtY29sb3I6ICNm
ZmY7CisJYm9yZGVyLWxlZnQ6IDI2cHggc29saWQgI0VFNTc1NzsKK30KKworI3F1bml0LXRlc3Rz
ID4gbGk6bGFzdC1jaGlsZCB7CisJYm9yZGVyLXJhZGl1czogMCAwIDE1cHggMTVweDsKKwktbW96
LWJvcmRlci1yYWRpdXM6IDAgMCAxNXB4IDE1cHg7CisJLXdlYmtpdC1ib3JkZXItYm90dG9tLXJp
Z2h0LXJhZGl1czogMTVweDsKKwktd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDE1
cHg7Cit9CisKKyNxdW5pdC10ZXN0cyAuZmFpbCAgICAgICAgICAgICAgICAgICAgICAgICAgeyBj
b2xvcjogIzAwMDAwMDsgYmFja2dyb3VuZC1jb2xvcjogI0VFNTc1NzsgfQorI3F1bml0LXRlc3Rz
IC5mYWlsIC50ZXN0LW5hbWUsCisjcXVuaXQtdGVzdHMgLmZhaWwgLm1vZHVsZS1uYW1lICAgICAg
ICAgICAgIHsgY29sb3I6ICMwMDAwMDA7IH0KKworI3F1bml0LXRlc3RzIC5mYWlsIC50ZXN0LWFj
dHVhbCAgICAgICAgICAgICB7IGNvbG9yOiAjRUU1NzU3OyB9CisjcXVuaXQtdGVzdHMgLmZhaWwg
LnRlc3QtZXhwZWN0ZWQgICAgICAgICAgIHsgY29sb3I6IGdyZWVuOyAgIH0KKworI3F1bml0LWJh
bm5lci5xdW5pdC1mYWlsICAgICAgICAgICAgICAgICAgICB7IGJhY2tncm91bmQtY29sb3I6ICNF
RTU3NTc7IH0KKworCisvKiogUmVzdWx0ICovCisKKyNxdW5pdC10ZXN0cmVzdWx0IHsKKwlwYWRk
aW5nOiAwLjVlbSAwLjVlbSAwLjVlbSAyLjVlbTsKKworCWNvbG9yOiAjMmI4MWFmOworCWJhY2tn
cm91bmQtY29sb3I6ICNEMkUwRTY7CisKKwlib3JkZXItYm90dG9tOiAxcHggc29saWQgd2hpdGU7
Cit9CisKKy8qKiBGaXh0dXJlICovCisKKyNxdW5pdC1maXh0dXJlIHsKKwlwb3NpdGlvbjogYWJz
b2x1dGU7CisJdG9wOiAtMTAwMDBweDsKKwlsZWZ0OiAtMTAwMDBweDsKK30KSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L3F1bml0L3F1bml0L3F1bml0LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L3F1bml0L3F1bml0L3F1bml0LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL1Ro
aXJkUGFydHkvcXVuaXQvcXVuaXQvcXVuaXQuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ0
OCBAQAorLyoqCisgKiBRVW5pdCAtIEEgSmF2YVNjcmlwdCBVbml0IFRlc3RpbmcgRnJhbWV3b3Jr
CisgKgorICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9RVW5pdAorICoKKyAqIENvcHlyaWdodCAo
YykgMjAxMSBKb2huIFJlc2lnLCBKw7ZybiBaYWVmZmVyZXIKKyAqIER1YWwgbGljZW5zZWQgdW5k
ZXIgdGhlIE1JVCAoTUlULUxJQ0VOU0UudHh0KQorICogb3IgR1BMIChHUEwtTElDRU5TRS50eHQp
IGxpY2Vuc2VzLgorICovCisKKyhmdW5jdGlvbih3aW5kb3cpIHsKKwordmFyIGRlZmluZWQgPSB7
CisJc2V0VGltZW91dDogdHlwZW9mIHdpbmRvdy5zZXRUaW1lb3V0ICE9PSAidW5kZWZpbmVkIiwK
KwlzZXNzaW9uU3RvcmFnZTogKGZ1bmN0aW9uKCkgeworCQl0cnkgeworCQkJcmV0dXJuICEhc2Vz
c2lvblN0b3JhZ2UuZ2V0SXRlbTsKKwkJfSBjYXRjaChlKXsKKwkJCXJldHVybiBmYWxzZTsKKwkJ
fQorICB9KSgpCit9OworCit2YXIgdGVzdElkID0gMDsKKwordmFyIFRlc3QgPSBmdW5jdGlvbihu
YW1lLCB0ZXN0TmFtZSwgZXhwZWN0ZWQsIHRlc3RFbnZpcm9ubWVudEFyZywgYXN5bmMsIGNhbGxi
YWNrKSB7CisJdGhpcy5uYW1lID0gbmFtZTsKKwl0aGlzLnRlc3ROYW1lID0gdGVzdE5hbWU7CisJ
dGhpcy5leHBlY3RlZCA9IGV4cGVjdGVkOworCXRoaXMudGVzdEVudmlyb25tZW50QXJnID0gdGVz
dEVudmlyb25tZW50QXJnOworCXRoaXMuYXN5bmMgPSBhc3luYzsKKwl0aGlzLmNhbGxiYWNrID0g
Y2FsbGJhY2s7CisJdGhpcy5hc3NlcnRpb25zID0gW107Cit9OworVGVzdC5wcm90b3R5cGUgPSB7
CisJaW5pdDogZnVuY3Rpb24oKSB7CisJCXZhciB0ZXN0cyA9IGlkKCJxdW5pdC10ZXN0cyIpOwor
CQlpZiAodGVzdHMpIHsKKwkJCXZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Ryb25n
Iik7CisJCQkJYi5pbm5lckhUTUwgPSAiUnVubmluZyAiICsgdGhpcy5uYW1lOworCQkJdmFyIGxp
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKwkJCQlsaS5hcHBlbmRDaGlsZCggYiAp
OworCQkJCWxpLmNsYXNzTmFtZSA9ICJydW5uaW5nIjsKKwkJCQlsaS5pZCA9IHRoaXMuaWQgPSAi
dGVzdC1vdXRwdXQiICsgdGVzdElkKys7CisJCQl0ZXN0cy5hcHBlbmRDaGlsZCggbGkgKTsKKwkJ
fQorCX0sCisJc2V0dXA6IGZ1bmN0aW9uKCkgeworCQlpZiAodGhpcy5tb2R1bGUgIT0gY29uZmln
LnByZXZpb3VzTW9kdWxlKSB7CisJCQlpZiAoIGNvbmZpZy5wcmV2aW91c01vZHVsZSApIHsKKwkJ
CQlRVW5pdC5tb2R1bGVEb25lKCB7CisJCQkJCW5hbWU6IGNvbmZpZy5wcmV2aW91c01vZHVsZSwK
KwkJCQkJZmFpbGVkOiBjb25maWcubW9kdWxlU3RhdHMuYmFkLAorCQkJCQlwYXNzZWQ6IGNvbmZp
Zy5tb2R1bGVTdGF0cy5hbGwgLSBjb25maWcubW9kdWxlU3RhdHMuYmFkLAorCQkJCQl0b3RhbDog
Y29uZmlnLm1vZHVsZVN0YXRzLmFsbAorCQkJCX0gKTsKKwkJCX0KKwkJCWNvbmZpZy5wcmV2aW91
c01vZHVsZSA9IHRoaXMubW9kdWxlOworCQkJY29uZmlnLm1vZHVsZVN0YXRzID0geyBhbGw6IDAs
IGJhZDogMCB9OworCQkJUVVuaXQubW9kdWxlU3RhcnQoIHsKKwkJCQluYW1lOiB0aGlzLm1vZHVs
ZQorCQkJfSApOworCQl9CisKKwkJY29uZmlnLmN1cnJlbnQgPSB0aGlzOworCQl0aGlzLnRlc3RF
bnZpcm9ubWVudCA9IGV4dGVuZCh7CisJCQlzZXR1cDogZnVuY3Rpb24oKSB7fSwKKwkJCXRlYXJk
b3duOiBmdW5jdGlvbigpIHt9CisJCX0sIHRoaXMubW9kdWxlVGVzdEVudmlyb25tZW50KTsKKwkJ
aWYgKHRoaXMudGVzdEVudmlyb25tZW50QXJnKSB7CisJCQlleHRlbmQodGhpcy50ZXN0RW52aXJv
bm1lbnQsIHRoaXMudGVzdEVudmlyb25tZW50QXJnKTsKKwkJfQorCisJCVFVbml0LnRlc3RTdGFy
dCggeworCQkJbmFtZTogdGhpcy50ZXN0TmFtZQorCQl9ICk7CisKKwkJLy8gYWxsb3cgdXRpbGl0
eSBmdW5jdGlvbnMgdG8gYWNjZXNzIHRoZSBjdXJyZW50IHRlc3QgZW52aXJvbm1lbnQKKwkJLy8g
VE9ETyB3aHk/PworCQlRVW5pdC5jdXJyZW50X3Rlc3RFbnZpcm9ubWVudCA9IHRoaXMudGVzdEVu
dmlyb25tZW50OworCisJCXRyeSB7CisJCQlpZiAoICFjb25maWcucG9sbHV0aW9uICkgeworCQkJ
CXNhdmVHbG9iYWwoKTsKKwkJCX0KKworCQkJdGhpcy50ZXN0RW52aXJvbm1lbnQuc2V0dXAuY2Fs
bCh0aGlzLnRlc3RFbnZpcm9ubWVudCk7CisJCX0gY2F0Y2goZSkgeworCQkJUVVuaXQub2soIGZh
bHNlLCAiU2V0dXAgZmFpbGVkIG9uICIgKyB0aGlzLnRlc3ROYW1lICsgIjogIiArIGUubWVzc2Fn
ZSApOworCQl9CisJfSwKKwlydW46IGZ1bmN0aW9uKCkgeworCQlpZiAoIHRoaXMuYXN5bmMgKSB7
CisJCQlRVW5pdC5zdG9wKCk7CisJCX0KKworCQlpZiAoIGNvbmZpZy5ub3RyeWNhdGNoICkgewor
CQkJdGhpcy5jYWxsYmFjay5jYWxsKHRoaXMudGVzdEVudmlyb25tZW50KTsKKwkJCXJldHVybjsK
KwkJfQorCQl0cnkgeworCQkJdGhpcy5jYWxsYmFjay5jYWxsKHRoaXMudGVzdEVudmlyb25tZW50
KTsKKwkJfSBjYXRjaChlKSB7CisJCQlmYWlsKCJUZXN0ICIgKyB0aGlzLnRlc3ROYW1lICsgIiBk
aWVkLCBleGNlcHRpb24gYW5kIHRlc3QgZm9sbG93cyIsIGUsIHRoaXMuY2FsbGJhY2spOworCQkJ
UVVuaXQub2soIGZhbHNlLCAiRGllZCBvbiB0ZXN0ICMiICsgKHRoaXMuYXNzZXJ0aW9ucy5sZW5n
dGggKyAxKSArICI6ICIgKyBlLm1lc3NhZ2UgKyAiIC0gIiArIFFVbml0LmpzRHVtcC5wYXJzZShl
KSApOworCQkJLy8gZWxzZSBuZXh0IHRlc3Qgd2lsbCBjYXJyeSB0aGUgcmVzcG9uc2liaWxpdHkK
KwkJCXNhdmVHbG9iYWwoKTsKKworCQkJLy8gUmVzdGFydCB0aGUgdGVzdHMgaWYgdGhleSdyZSBi
bG9ja2luZworCQkJaWYgKCBjb25maWcuYmxvY2tpbmcgKSB7CisJCQkJc3RhcnQoKTsKKwkJCX0K
KwkJfQorCX0sCisJdGVhcmRvd246IGZ1bmN0aW9uKCkgeworCQl0cnkgeworCQkJdGhpcy50ZXN0
RW52aXJvbm1lbnQudGVhcmRvd24uY2FsbCh0aGlzLnRlc3RFbnZpcm9ubWVudCk7CisJCQljaGVj
a1BvbGx1dGlvbigpOworCQl9IGNhdGNoKGUpIHsKKwkJCVFVbml0Lm9rKCBmYWxzZSwgIlRlYXJk
b3duIGZhaWxlZCBvbiAiICsgdGhpcy50ZXN0TmFtZSArICI6ICIgKyBlLm1lc3NhZ2UgKTsKKwkJ
fQorCX0sCisJZmluaXNoOiBmdW5jdGlvbigpIHsKKwkJaWYgKCB0aGlzLmV4cGVjdGVkICYmIHRo
aXMuZXhwZWN0ZWQgIT0gdGhpcy5hc3NlcnRpb25zLmxlbmd0aCApIHsKKwkJCVFVbml0Lm9rKCBm
YWxzZSwgIkV4cGVjdGVkICIgKyB0aGlzLmV4cGVjdGVkICsgIiBhc3NlcnRpb25zLCBidXQgIiAr
IHRoaXMuYXNzZXJ0aW9ucy5sZW5ndGggKyAiIHdlcmUgcnVuIiApOworCQl9CisKKwkJdmFyIGdv
b2QgPSAwLCBiYWQgPSAwLAorCQkJdGVzdHMgPSBpZCgicXVuaXQtdGVzdHMiKTsKKworCQljb25m
aWcuc3RhdHMuYWxsICs9IHRoaXMuYXNzZXJ0aW9ucy5sZW5ndGg7CisJCWNvbmZpZy5tb2R1bGVT
dGF0cy5hbGwgKz0gdGhpcy5hc3NlcnRpb25zLmxlbmd0aDsKKworCQlpZiAoIHRlc3RzICkgewor
CQkJdmFyIG9sICA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisKKwkJCWZvciAoIHZh
ciBpID0gMDsgaSA8IHRoaXMuYXNzZXJ0aW9ucy5sZW5ndGg7IGkrKyApIHsKKwkJCQl2YXIgYXNz
ZXJ0aW9uID0gdGhpcy5hc3NlcnRpb25zW2ldOworCisJCQkJdmFyIGxpID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKwkJCQlsaS5jbGFzc05hbWUgPSBhc3NlcnRpb24ucmVzdWx0ID8g
InBhc3MiIDogImZhaWwiOworCQkJCWxpLmlubmVySFRNTCA9IGFzc2VydGlvbi5tZXNzYWdlIHx8
IChhc3NlcnRpb24ucmVzdWx0ID8gIm9rYXkiIDogImZhaWxlZCIpOworCQkJCW9sLmFwcGVuZENo
aWxkKCBsaSApOworCisJCQkJaWYgKCBhc3NlcnRpb24ucmVzdWx0ICkgeworCQkJCQlnb29kKys7
CisJCQkJfSBlbHNlIHsKKwkJCQkJYmFkKys7CisJCQkJCWNvbmZpZy5zdGF0cy5iYWQrKzsKKwkJ
CQkJY29uZmlnLm1vZHVsZVN0YXRzLmJhZCsrOworCQkJCX0KKwkJCX0KKworCQkJLy8gc3RvcmUg
cmVzdWx0IHdoZW4gcG9zc2libGUKKwkJCWlmICggUVVuaXQuY29uZmlnLnJlb3JkZXIgJiYgZGVm
aW5lZC5zZXNzaW9uU3RvcmFnZSApIHsKKwkJCQlpZiAoYmFkKSB7CisJCQkJCXNlc3Npb25TdG9y
YWdlLnNldEl0ZW0oInF1bml0LSIgKyB0aGlzLm1vZHVsZSArICItIiArIHRoaXMudGVzdE5hbWUs
IGJhZCk7CisJCQkJfSBlbHNlIHsKKwkJCQkJc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgicXVu
aXQtIiArIHRoaXMubW9kdWxlICsgIi0iICsgdGhpcy50ZXN0TmFtZSk7CisJCQkJfQorCQkJfQor
CisJCQlpZiAoYmFkID09IDApIHsKKwkJCQlvbC5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworCQkJ
fQorCisJCQl2YXIgYiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0cm9uZyIpOworCQkJYi5p
bm5lckhUTUwgPSB0aGlzLm5hbWUgKyAiIDxiIGNsYXNzPSdjb3VudHMnPig8YiBjbGFzcz0nZmFp
bGVkJz4iICsgYmFkICsgIjwvYj4sIDxiIGNsYXNzPSdwYXNzZWQnPiIgKyBnb29kICsgIjwvYj4s
ICIgKyB0aGlzLmFzc2VydGlvbnMubGVuZ3RoICsgIik8L2I+IjsKKworCQkJdmFyIGEgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJhIik7CisJCQlhLmlubmVySFRNTCA9ICJSZXJ1biI7CisJCQlh
LmhyZWYgPSBRVW5pdC51cmwoeyBmaWx0ZXI6IGdldFRleHQoW2JdKS5yZXBsYWNlKC9cKFteKV0r
XCkkLywgIiIpLnJlcGxhY2UoLyheXHMqfFxzKiQpL2csICIiKSB9KTsKKworCQkJYWRkRXZlbnQo
YiwgImNsaWNrIiwgZnVuY3Rpb24oKSB7CisJCQkJdmFyIG5leHQgPSBiLm5leHRTaWJsaW5nLm5l
eHRTaWJsaW5nLAorCQkJCQlkaXNwbGF5ID0gbmV4dC5zdHlsZS5kaXNwbGF5OworCQkJCW5leHQu
c3R5bGUuZGlzcGxheSA9IGRpc3BsYXkgPT09ICJub25lIiA/ICJibG9jayIgOiAibm9uZSI7CisJ
CQl9KTsKKworCQkJYWRkRXZlbnQoYiwgImRibGNsaWNrIiwgZnVuY3Rpb24oZSkgeworCQkJCXZh
ciB0YXJnZXQgPSBlICYmIGUudGFyZ2V0ID8gZS50YXJnZXQgOiB3aW5kb3cuZXZlbnQuc3JjRWxl
bWVudDsKKwkJCQlpZiAoIHRhcmdldC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09ICJzcGFuIiB8
fCB0YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PSAiYiIgKSB7CisJCQkJCXRhcmdldCA9
IHRhcmdldC5wYXJlbnROb2RlOworCQkJCX0KKwkJCQlpZiAoIHdpbmRvdy5sb2NhdGlvbiAmJiB0
YXJnZXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gInN0cm9uZyIgKSB7CisJCQkJCXdpbmRv
dy5sb2NhdGlvbiA9IFFVbml0LnVybCh7IGZpbHRlcjogZ2V0VGV4dChbdGFyZ2V0XSkucmVwbGFj
ZSgvXChbXildK1wpJC8sICIiKS5yZXBsYWNlKC8oXlxzKnxccyokKS9nLCAiIikgfSk7CisJCQkJ
fQorCQkJfSk7CisKKwkJCXZhciBsaSA9IGlkKHRoaXMuaWQpOworCQkJbGkuY2xhc3NOYW1lID0g
YmFkID8gImZhaWwiIDogInBhc3MiOworCQkJbGkucmVtb3ZlQ2hpbGQoIGxpLmZpcnN0Q2hpbGQg
KTsKKwkJCWxpLmFwcGVuZENoaWxkKCBiICk7CisJCQlsaS5hcHBlbmRDaGlsZCggYSApOworCQkJ
bGkuYXBwZW5kQ2hpbGQoIG9sICk7CisKKwkJfSBlbHNlIHsKKwkJCWZvciAoIHZhciBpID0gMDsg
aSA8IHRoaXMuYXNzZXJ0aW9ucy5sZW5ndGg7IGkrKyApIHsKKwkJCQlpZiAoICF0aGlzLmFzc2Vy
dGlvbnNbaV0ucmVzdWx0ICkgeworCQkJCQliYWQrKzsKKwkJCQkJY29uZmlnLnN0YXRzLmJhZCsr
OworCQkJCQljb25maWcubW9kdWxlU3RhdHMuYmFkKys7CisJCQkJfQorCQkJfQorCQl9CisKKwkJ
dHJ5IHsKKwkJCVFVbml0LnJlc2V0KCk7CisJCX0gY2F0Y2goZSkgeworCQkJZmFpbCgicmVzZXQo
KSBmYWlsZWQsIGZvbGxvd2luZyBUZXN0ICIgKyB0aGlzLnRlc3ROYW1lICsgIiwgZXhjZXB0aW9u
IGFuZCByZXNldCBmbiBmb2xsb3dzIiwgZSwgUVVuaXQucmVzZXQpOworCQl9CisKKwkJUVVuaXQu
dGVzdERvbmUoIHsKKwkJCW5hbWU6IHRoaXMudGVzdE5hbWUsCisJCQlmYWlsZWQ6IGJhZCwKKwkJ
CXBhc3NlZDogdGhpcy5hc3NlcnRpb25zLmxlbmd0aCAtIGJhZCwKKwkJCXRvdGFsOiB0aGlzLmFz
c2VydGlvbnMubGVuZ3RoCisJCX0gKTsKKwl9LAorCisJcXVldWU6IGZ1bmN0aW9uKCkgeworCQl2
YXIgdGVzdCA9IHRoaXM7CisJCXN5bmNocm9uaXplKGZ1bmN0aW9uKCkgeworCQkJdGVzdC5pbml0
KCk7CisJCX0pOworCQlmdW5jdGlvbiBydW4oKSB7CisJCQkvLyBlYWNoIG9mIHRoZXNlIGNhbiBi
eSBhc3luYworCQkJc3luY2hyb25pemUoZnVuY3Rpb24oKSB7CisJCQkJdGVzdC5zZXR1cCgpOwor
CQkJfSk7CisJCQlzeW5jaHJvbml6ZShmdW5jdGlvbigpIHsKKwkJCQl0ZXN0LnJ1bigpOworCQkJ
fSk7CisJCQlzeW5jaHJvbml6ZShmdW5jdGlvbigpIHsKKwkJCQl0ZXN0LnRlYXJkb3duKCk7CisJ
CQl9KTsKKwkJCXN5bmNocm9uaXplKGZ1bmN0aW9uKCkgeworCQkJCXRlc3QuZmluaXNoKCk7CisJ
CQl9KTsKKwkJfQorCQkvLyBkZWZlciB3aGVuIHByZXZpb3VzIHRlc3QgcnVuIHBhc3NlZCwgaWYg
c3RvcmFnZSBpcyBhdmFpbGFibGUKKwkJdmFyIGJhZCA9IFFVbml0LmNvbmZpZy5yZW9yZGVyICYm
IGRlZmluZWQuc2Vzc2lvblN0b3JhZ2UgJiYgK3Nlc3Npb25TdG9yYWdlLmdldEl0ZW0oInF1bml0
LSIgKyB0aGlzLm1vZHVsZSArICItIiArIHRoaXMudGVzdE5hbWUpOworCQlpZiAoYmFkKSB7CisJ
CQlydW4oKTsKKwkJfSBlbHNlIHsKKwkJCXN5bmNocm9uaXplKHJ1bik7CisJCX07CisJfQorCit9
OworCit2YXIgUVVuaXQgPSB7CisKKwkvLyBjYWxsIG9uIHN0YXJ0IG9mIG1vZHVsZSB0ZXN0IHRv
IHByZXBlbmQgbmFtZSB0byBhbGwgdGVzdHMKKwltb2R1bGU6IGZ1bmN0aW9uKG5hbWUsIHRlc3RF
bnZpcm9ubWVudCkgeworCQljb25maWcuY3VycmVudE1vZHVsZSA9IG5hbWU7CisJCWNvbmZpZy5j
dXJyZW50TW9kdWxlVGVzdEVudmlyb21lbnQgPSB0ZXN0RW52aXJvbm1lbnQ7CisJfSwKKworCWFz
eW5jVGVzdDogZnVuY3Rpb24odGVzdE5hbWUsIGV4cGVjdGVkLCBjYWxsYmFjaykgeworCQlpZiAo
IGFyZ3VtZW50cy5sZW5ndGggPT09IDIgKSB7CisJCQljYWxsYmFjayA9IGV4cGVjdGVkOworCQkJ
ZXhwZWN0ZWQgPSAwOworCQl9CisKKwkJUVVuaXQudGVzdCh0ZXN0TmFtZSwgZXhwZWN0ZWQsIGNh
bGxiYWNrLCB0cnVlKTsKKwl9LAorCisJdGVzdDogZnVuY3Rpb24odGVzdE5hbWUsIGV4cGVjdGVk
LCBjYWxsYmFjaywgYXN5bmMpIHsKKwkJdmFyIG5hbWUgPSAnPHNwYW4gY2xhc3M9InRlc3QtbmFt
ZSI+JyArIHRlc3ROYW1lICsgJzwvc3Bhbj4nLCB0ZXN0RW52aXJvbm1lbnRBcmc7CisKKwkJaWYg
KCBhcmd1bWVudHMubGVuZ3RoID09PSAyICkgeworCQkJY2FsbGJhY2sgPSBleHBlY3RlZDsKKwkJ
CWV4cGVjdGVkID0gbnVsbDsKKwkJfQorCQkvLyBpcyAybmQgYXJndW1lbnQgYSB0ZXN0RW52aXJv
bm1lbnQ/CisJCWlmICggZXhwZWN0ZWQgJiYgdHlwZW9mIGV4cGVjdGVkID09PSAnb2JqZWN0Jykg
eworCQkJdGVzdEVudmlyb25tZW50QXJnID0gIGV4cGVjdGVkOworCQkJZXhwZWN0ZWQgPSBudWxs
OworCQl9CisKKwkJaWYgKCBjb25maWcuY3VycmVudE1vZHVsZSApIHsKKwkJCW5hbWUgPSAnPHNw
YW4gY2xhc3M9Im1vZHVsZS1uYW1lIj4nICsgY29uZmlnLmN1cnJlbnRNb2R1bGUgKyAiPC9zcGFu
PjogIiArIG5hbWU7CisJCX0KKworCQlpZiAoICF2YWxpZFRlc3QoY29uZmlnLmN1cnJlbnRNb2R1
bGUgKyAiOiAiICsgdGVzdE5hbWUpICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJdmFyIHRlc3Qg
PSBuZXcgVGVzdChuYW1lLCB0ZXN0TmFtZSwgZXhwZWN0ZWQsIHRlc3RFbnZpcm9ubWVudEFyZywg
YXN5bmMsIGNhbGxiYWNrKTsKKwkJdGVzdC5tb2R1bGUgPSBjb25maWcuY3VycmVudE1vZHVsZTsK
KwkJdGVzdC5tb2R1bGVUZXN0RW52aXJvbm1lbnQgPSBjb25maWcuY3VycmVudE1vZHVsZVRlc3RF
bnZpcm9tZW50OworCQl0ZXN0LnF1ZXVlKCk7CisJfSwKKworCS8qKgorCSAqIFNwZWNpZnkgdGhl
IG51bWJlciBvZiBleHBlY3RlZCBhc3NlcnRpb25zIHRvIGd1cmFudGVlIHRoYXQgZmFpbGVkIHRl
c3QgKG5vIGFzc2VydGlvbnMgYXJlIHJ1biBhdCBhbGwpIGRvbid0IHNsaXAgdGhyb3VnaC4KKwkg
Ki8KKwlleHBlY3Q6IGZ1bmN0aW9uKGFzc2VydHMpIHsKKwkJY29uZmlnLmN1cnJlbnQuZXhwZWN0
ZWQgPSBhc3NlcnRzOworCX0sCisKKwkvKioKKwkgKiBBc3NlcnRzIHRydWUuCisJICogQGV4YW1w
bGUgb2soICJhc2RmYXNkZiIubGVuZ3RoID4gNSwgIlRoZXJlIG11c3QgYmUgYXQgbGVhc3QgNSBj
aGFycyIgKTsKKwkgKi8KKwlvazogZnVuY3Rpb24oYSwgbXNnKSB7CisJCWEgPSAhIWE7CisJCXZh
ciBkZXRhaWxzID0geworCQkJcmVzdWx0OiBhLAorCQkJbWVzc2FnZTogbXNnCisJCX07CisJCW1z
ZyA9IGVzY2FwZUh0bWwobXNnKTsKKwkJUVVuaXQubG9nKGRldGFpbHMpOworCQljb25maWcuY3Vy
cmVudC5hc3NlcnRpb25zLnB1c2goeworCQkJcmVzdWx0OiBhLAorCQkJbWVzc2FnZTogbXNnCisJ
CX0pOworCX0sCisKKwkvKioKKwkgKiBDaGVja3MgdGhhdCB0aGUgZmlyc3QgdHdvIGFyZ3VtZW50
cyBhcmUgZXF1YWwsIHdpdGggYW4gb3B0aW9uYWwgbWVzc2FnZS4KKwkgKiBQcmludHMgb3V0IGJv
dGggYWN0dWFsIGFuZCBleHBlY3RlZCB2YWx1ZXMuCisJICoKKwkgKiBQcmVmZXJlZCB0byBvaygg
YWN0dWFsID09IGV4cGVjdGVkLCBtZXNzYWdlICkKKwkgKgorCSAqIEBleGFtcGxlIGVxdWFsKCBm
b3JtYXQoIlJlY2VpdmVkIHswfSBieXRlcy4iLCAyKSwgIlJlY2VpdmVkIDIgYnl0ZXMuIiApOwor
CSAqCisJICogQHBhcmFtIE9iamVjdCBhY3R1YWwKKwkgKiBAcGFyYW0gT2JqZWN0IGV4cGVjdGVk
CisJICogQHBhcmFtIFN0cmluZyBtZXNzYWdlIChvcHRpb25hbCkKKwkgKi8KKwllcXVhbDogZnVu
Y3Rpb24oYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworCQlRVW5pdC5wdXNoKGV4cGVjdGVk
ID09IGFjdHVhbCwgYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSk7CisJfSwKKworCW5vdEVxdWFs
OiBmdW5jdGlvbihhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisJCVFVbml0LnB1c2goZXhw
ZWN0ZWQgIT0gYWN0dWFsLCBhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKTsKKwl9LAorCisJZGVl
cEVxdWFsOiBmdW5jdGlvbihhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7CisJCVFVbml0LnB1
c2goUVVuaXQuZXF1aXYoYWN0dWFsLCBleHBlY3RlZCksIGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3Nh
Z2UpOworCX0sCisKKwlub3REZWVwRXF1YWw6IGZ1bmN0aW9uKGFjdHVhbCwgZXhwZWN0ZWQsIG1l
c3NhZ2UpIHsKKwkJUVVuaXQucHVzaCghUVVuaXQuZXF1aXYoYWN0dWFsLCBleHBlY3RlZCksIGFj
dHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpOworCX0sCisKKwlzdHJpY3RFcXVhbDogZnVuY3Rpb24o
YWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworCQlRVW5pdC5wdXNoKGV4cGVjdGVkID09PSBh
Y3R1YWwsIGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpOworCX0sCisKKwlub3RTdHJpY3RFcXVh
bDogZnVuY3Rpb24oYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkgeworCQlRVW5pdC5wdXNoKGV4
cGVjdGVkICE9PSBhY3R1YWwsIGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpOworCX0sCisKKwly
YWlzZXM6IGZ1bmN0aW9uKGJsb2NrLCBleHBlY3RlZCwgbWVzc2FnZSkgeworCQl2YXIgYWN0dWFs
LCBvayA9IGZhbHNlOworCisJCWlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnKSB7CisJ
CQltZXNzYWdlID0gZXhwZWN0ZWQ7CisJCQlleHBlY3RlZCA9IG51bGw7CisJCX0KKworCQl0cnkg
eworCQkJYmxvY2soKTsKKwkJfSBjYXRjaCAoZSkgeworCQkJYWN0dWFsID0gZTsKKwkJfQorCisJ
CWlmIChhY3R1YWwpIHsKKwkJCS8vIHdlIGRvbid0IHdhbnQgdG8gdmFsaWRhdGUgdGhyb3duIGVy
cm9yCisJCQlpZiAoIWV4cGVjdGVkKSB7CisJCQkJb2sgPSB0cnVlOworCQkJLy8gZXhwZWN0ZWQg
aXMgYSByZWdleHAKKwkJCX0gZWxzZSBpZiAoUVVuaXQub2JqZWN0VHlwZShleHBlY3RlZCkgPT09
ICJyZWdleHAiKSB7CisJCQkJb2sgPSBleHBlY3RlZC50ZXN0KGFjdHVhbCk7CisJCQkvLyBleHBl
Y3RlZCBpcyBhIGNvbnN0cnVjdG9yCisJCQl9IGVsc2UgaWYgKGFjdHVhbCBpbnN0YW5jZW9mIGV4
cGVjdGVkKSB7CisJCQkJb2sgPSB0cnVlOworCQkJLy8gZXhwZWN0ZWQgaXMgYSB2YWxpZGF0aW9u
IGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdHJ1ZSBpcyB2YWxpZGF0aW9uIHBhc3NlZAorCQkJfSBl
bHNlIGlmIChleHBlY3RlZC5jYWxsKHt9LCBhY3R1YWwpID09PSB0cnVlKSB7CisJCQkJb2sgPSB0
cnVlOworCQkJfQorCQl9CisKKwkJUVVuaXQub2sob2ssIG1lc3NhZ2UpOworCX0sCisKKwlzdGFy
dDogZnVuY3Rpb24oKSB7CisJCWNvbmZpZy5zZW1hcGhvcmUtLTsKKwkJaWYgKGNvbmZpZy5zZW1h
cGhvcmUgPiAwKSB7CisJCQkvLyBkb24ndCBzdGFydCB1bnRpbCBlcXVhbCBudW1iZXIgb2Ygc3Rv
cC1jYWxscworCQkJcmV0dXJuOworCQl9CisJCWlmIChjb25maWcuc2VtYXBob3JlIDwgMCkgewor
CQkJLy8gaWdub3JlIGlmIHN0YXJ0IGlzIGNhbGxlZCBtb3JlIG9mdGVuIHRoZW4gc3RvcAorCQkJ
Y29uZmlnLnNlbWFwaG9yZSA9IDA7CisJCX0KKwkJLy8gQSBzbGlnaHQgZGVsYXksIHRvIGF2b2lk
IGFueSBjdXJyZW50IGNhbGxiYWNrcworCQlpZiAoIGRlZmluZWQuc2V0VGltZW91dCApIHsKKwkJ
CXdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworCQkJCWlmICggY29uZmlnLnRpbWVvdXQg
KSB7CisJCQkJCWNsZWFyVGltZW91dChjb25maWcudGltZW91dCk7CisJCQkJfQorCisJCQkJY29u
ZmlnLmJsb2NraW5nID0gZmFsc2U7CisJCQkJcHJvY2VzcygpOworCQkJfSwgMTMpOworCQl9IGVs
c2UgeworCQkJY29uZmlnLmJsb2NraW5nID0gZmFsc2U7CisJCQlwcm9jZXNzKCk7CisJCX0KKwl9
LAorCisJc3RvcDogZnVuY3Rpb24odGltZW91dCkgeworCQljb25maWcuc2VtYXBob3JlKys7CisJ
CWNvbmZpZy5ibG9ja2luZyA9IHRydWU7CisKKwkJaWYgKCB0aW1lb3V0ICYmIGRlZmluZWQuc2V0
VGltZW91dCApIHsKKwkJCWNsZWFyVGltZW91dChjb25maWcudGltZW91dCk7CisJCQljb25maWcu
dGltZW91dCA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworCQkJCVFVbml0Lm9rKCBm
YWxzZSwgIlRlc3QgdGltZWQgb3V0IiApOworCQkJCVFVbml0LnN0YXJ0KCk7CisJCQl9LCB0aW1l
b3V0KTsKKwkJfQorCX0KK307CisKKy8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCBkZXByZWNh
dGVkCitRVW5pdC5lcXVhbHMgPSBRVW5pdC5lcXVhbDsKK1FVbml0LnNhbWUgPSBRVW5pdC5kZWVw
RXF1YWw7CisKKy8vIE1haW50YWluIGludGVybmFsIHN0YXRlCit2YXIgY29uZmlnID0geworCS8v
IFRoZSBxdWV1ZSBvZiB0ZXN0cyB0byBydW4KKwlxdWV1ZTogW10sCisKKwkvLyBibG9jayB1bnRp
bCBkb2N1bWVudCByZWFkeQorCWJsb2NraW5nOiB0cnVlLAorCisJLy8gYnkgZGVmYXVsdCwgcnVu
IHByZXZpb3VzbHkgZmFpbGVkIHRlc3RzIGZpcnN0CisJLy8gdmVyeSB1c2VmdWwgaW4gY29tYmlu
YXRpb24gd2l0aCAiSGlkZSBwYXNzZWQgdGVzdHMiIGNoZWNrZWQKKwlyZW9yZGVyOiB0cnVlLAor
CisJbm9nbG9iYWxzOiBmYWxzZSwKKwlub3RyeWNhdGNoOiBmYWxzZQorfTsKKworLy8gTG9hZCBw
YXJhbWF0ZXJzCisoZnVuY3Rpb24oKSB7CisJdmFyIGxvY2F0aW9uID0gd2luZG93LmxvY2F0aW9u
IHx8IHsgc2VhcmNoOiAiIiwgcHJvdG9jb2w6ICJmaWxlOiIgfSwKKwkJcGFyYW1zID0gbG9jYXRp
b24uc2VhcmNoLnNsaWNlKCAxICkuc3BsaXQoICImIiApLAorCQlsZW5ndGggPSBwYXJhbXMubGVu
Z3RoLAorCQl1cmxQYXJhbXMgPSB7fSwKKwkJY3VycmVudDsKKworCWlmICggcGFyYW1zWyAwIF0g
KSB7CisJCWZvciAoIHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrICkgeworCQkJY3VycmVudCA9
IHBhcmFtc1sgaSBdLnNwbGl0KCAiPSIgKTsKKwkJCWN1cnJlbnRbIDAgXSA9IGRlY29kZVVSSUNv
bXBvbmVudCggY3VycmVudFsgMCBdICk7CisJCQkvLyBhbGxvdyBqdXN0IGEga2V5IHRvIHR1cm4g
b24gYSBmbGFnLCBlLmcuLCB0ZXN0Lmh0bWw/bm9nbG9iYWxzCisJCQljdXJyZW50WyAxIF0gPSBj
dXJyZW50WyAxIF0gPyBkZWNvZGVVUklDb21wb25lbnQoIGN1cnJlbnRbIDEgXSApIDogdHJ1ZTsK
KwkJCXVybFBhcmFtc1sgY3VycmVudFsgMCBdIF0gPSBjdXJyZW50WyAxIF07CisJCQlpZiAoIGN1
cnJlbnRbIDAgXSBpbiBjb25maWcgKSB7CisJCQkJY29uZmlnWyBjdXJyZW50WyAwIF0gXSA9IGN1
cnJlbnRbIDEgXTsKKwkJCX0KKwkJfQorCX0KKworCVFVbml0LnVybFBhcmFtcyA9IHVybFBhcmFt
czsKKwljb25maWcuZmlsdGVyID0gdXJsUGFyYW1zLmZpbHRlcjsKKworCS8vIEZpZ3VyZSBvdXQg
aWYgd2UncmUgcnVubmluZyB0aGUgdGVzdHMgZnJvbSBhIHNlcnZlciBvciBub3QKKwlRVW5pdC5p
c0xvY2FsID0gISEobG9jYXRpb24ucHJvdG9jb2wgPT09ICdmaWxlOicpOworfSkoKTsKKworLy8g
RXhwb3NlIHRoZSBBUEkgYXMgZ2xvYmFsIHZhcmlhYmxlcywgdW5sZXNzIGFuICdleHBvcnRzJwor
Ly8gb2JqZWN0IGV4aXN0cywgaW4gdGhhdCBjYXNlIHdlIGFzc3VtZSB3ZSdyZSBpbiBDb21tb25K
UworaWYgKCB0eXBlb2YgZXhwb3J0cyA9PT0gInVuZGVmaW5lZCIgfHwgdHlwZW9mIHJlcXVpcmUg
PT09ICJ1bmRlZmluZWQiICkgeworCWV4dGVuZCh3aW5kb3csIFFVbml0KTsKKwl3aW5kb3cuUVVu
aXQgPSBRVW5pdDsKK30gZWxzZSB7CisJZXh0ZW5kKGV4cG9ydHMsIFFVbml0KTsKKwlleHBvcnRz
LlFVbml0ID0gUVVuaXQ7Cit9CisKKy8vIGRlZmluZSB0aGVzZSBhZnRlciBleHBvc2luZyBnbG9i
YWxzIHRvIGtlZXAgdGhlbSBpbiB0aGVzZSBRVW5pdCBuYW1lc3BhY2Ugb25seQorZXh0ZW5kKFFV
bml0LCB7CisJY29uZmlnOiBjb25maWcsCisKKwkvLyBJbml0aWFsaXplIHRoZSBjb25maWd1cmF0
aW9uIG9wdGlvbnMKKwlpbml0OiBmdW5jdGlvbigpIHsKKwkJZXh0ZW5kKGNvbmZpZywgeworCQkJ
c3RhdHM6IHsgYWxsOiAwLCBiYWQ6IDAgfSwKKwkJCW1vZHVsZVN0YXRzOiB7IGFsbDogMCwgYmFk
OiAwIH0sCisJCQlzdGFydGVkOiArbmV3IERhdGUsCisJCQl1cGRhdGVSYXRlOiAxMDAwLAorCQkJ
YmxvY2tpbmc6IGZhbHNlLAorCQkJYXV0b3N0YXJ0OiB0cnVlLAorCQkJYXV0b3J1bjogZmFsc2Us
CisJCQlmaWx0ZXI6ICIiLAorCQkJcXVldWU6IFtdLAorCQkJc2VtYXBob3JlOiAwCisJCX0pOwor
CisJCXZhciB0ZXN0cyA9IGlkKCAicXVuaXQtdGVzdHMiICksCisJCQliYW5uZXIgPSBpZCggInF1
bml0LWJhbm5lciIgKSwKKwkJCXJlc3VsdCA9IGlkKCAicXVuaXQtdGVzdHJlc3VsdCIgKTsKKwor
CQlpZiAoIHRlc3RzICkgeworCQkJdGVzdHMuaW5uZXJIVE1MID0gIiI7CisJCX0KKworCQlpZiAo
IGJhbm5lciApIHsKKwkJCWJhbm5lci5jbGFzc05hbWUgPSAiIjsKKwkJfQorCisJCWlmICggcmVz
dWx0ICkgeworCQkJcmVzdWx0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoIHJlc3VsdCApOworCQl9
CisKKwkJaWYgKCB0ZXN0cyApIHsKKwkJCXJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ICJwIiApOworCQkJcmVzdWx0LmlkID0gInF1bml0LXRlc3RyZXN1bHQiOworCQkJcmVzdWx0LmNs
YXNzTmFtZSA9ICJyZXN1bHQiOworCQkJdGVzdHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoIHJl
c3VsdCwgdGVzdHMgKTsKKwkJCXJlc3VsdC5pbm5lckhUTUwgPSAnUnVubmluZy4uLjxici8+Jm5i
c3A7JzsKKwkJfQorCX0sCisKKwkvKioKKwkgKiBSZXNldHMgdGhlIHRlc3Qgc2V0dXAuIFVzZWZ1
bCBmb3IgdGVzdHMgdGhhdCBtb2RpZnkgdGhlIERPTS4KKwkgKgorCSAqIElmIGpRdWVyeSBpcyBh
dmFpbGFibGUsIHVzZXMgalF1ZXJ5J3MgaHRtbCgpLCBvdGhlcndpc2UganVzdCBpbm5lckhUTUwu
CisJICovCisJcmVzZXQ6IGZ1bmN0aW9uKCkgeworCQlpZiAoIHdpbmRvdy5qUXVlcnkgKSB7CisJ
CQlqUXVlcnkoICIjcXVuaXQtZml4dHVyZSIgKS5odG1sKCBjb25maWcuZml4dHVyZSApOworCQl9
IGVsc2UgeworCQkJdmFyIG1haW4gPSBpZCggJ3F1bml0LWZpeHR1cmUnICk7CisJCQlpZiAoIG1h
aW4gKSB7CisJCQkJbWFpbi5pbm5lckhUTUwgPSBjb25maWcuZml4dHVyZTsKKwkJCX0KKwkJfQor
CX0sCisKKwkvKioKKwkgKiBUcmlnZ2VyIGFuIGV2ZW50IG9uIGFuIGVsZW1lbnQuCisJICoKKwkg
KiBAZXhhbXBsZSB0cmlnZ2VyRXZlbnQoIGRvY3VtZW50LmJvZHksICJjbGljayIgKTsKKwkgKgor
CSAqIEBwYXJhbSBET01FbGVtZW50IGVsZW0KKwkgKiBAcGFyYW0gU3RyaW5nIHR5cGUKKwkgKi8K
Kwl0cmlnZ2VyRXZlbnQ6IGZ1bmN0aW9uKCBlbGVtLCB0eXBlLCBldmVudCApIHsKKwkJaWYgKCBk
b2N1bWVudC5jcmVhdGVFdmVudCApIHsKKwkJCWV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQo
Ik1vdXNlRXZlbnRzIik7CisJCQlldmVudC5pbml0TW91c2VFdmVudCh0eXBlLCB0cnVlLCB0cnVl
LCBlbGVtLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcsCisJCQkJMCwgMCwgMCwgMCwgMCwgZmFs
c2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDAsIG51bGwpOworCQkJZWxlbS5kaXNwYXRjaEV2ZW50
KCBldmVudCApOworCisJCX0gZWxzZSBpZiAoIGVsZW0uZmlyZUV2ZW50ICkgeworCQkJZWxlbS5m
aXJlRXZlbnQoIm9uIit0eXBlKTsKKwkJfQorCX0sCisKKwkvLyBTYWZlIG9iamVjdCB0eXBlIGNo
ZWNraW5nCisJaXM6IGZ1bmN0aW9uKCB0eXBlLCBvYmogKSB7CisJCXJldHVybiBRVW5pdC5vYmpl
Y3RUeXBlKCBvYmogKSA9PSB0eXBlOworCX0sCisKKwlvYmplY3RUeXBlOiBmdW5jdGlvbiggb2Jq
ICkgeworCQlpZiAodHlwZW9mIG9iaiA9PT0gInVuZGVmaW5lZCIpIHsKKwkJCQlyZXR1cm4gInVu
ZGVmaW5lZCI7CisKKwkJLy8gY29uc2lkZXI6IHR5cGVvZiBudWxsID09PSBvYmplY3QKKwkJfQor
CQlpZiAob2JqID09PSBudWxsKSB7CisJCQkJcmV0dXJuICJudWxsIjsKKwkJfQorCisJCXZhciB0
eXBlID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKCBvYmogKQorCQkJLm1hdGNoKC9e
XFtvYmplY3RccyguKilcXSQvKVsxXSB8fCAnJzsKKworCQlzd2l0Y2ggKHR5cGUpIHsKKwkJCQlj
YXNlICdOdW1iZXInOgorCQkJCQkJaWYgKGlzTmFOKG9iaikpIHsKKwkJCQkJCQkJcmV0dXJuICJu
YW4iOworCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJcmV0dXJuICJudW1iZXIiOworCQkJCQkJfQor
CQkJCWNhc2UgJ1N0cmluZyc6CisJCQkJY2FzZSAnQm9vbGVhbic6CisJCQkJY2FzZSAnQXJyYXkn
OgorCQkJCWNhc2UgJ0RhdGUnOgorCQkJCWNhc2UgJ1JlZ0V4cCc6CisJCQkJY2FzZSAnRnVuY3Rp
b24nOgorCQkJCQkJcmV0dXJuIHR5cGUudG9Mb3dlckNhc2UoKTsKKwkJfQorCQlpZiAodHlwZW9m
IG9iaiA9PT0gIm9iamVjdCIpIHsKKwkJCQlyZXR1cm4gIm9iamVjdCI7CisJCX0KKwkJcmV0dXJu
IHVuZGVmaW5lZDsKKwl9LAorCisJcHVzaDogZnVuY3Rpb24ocmVzdWx0LCBhY3R1YWwsIGV4cGVj
dGVkLCBtZXNzYWdlKSB7CisJCXZhciBkZXRhaWxzID0geworCQkJcmVzdWx0OiByZXN1bHQsCisJ
CQltZXNzYWdlOiBtZXNzYWdlLAorCQkJYWN0dWFsOiBhY3R1YWwsCisJCQlleHBlY3RlZDogZXhw
ZWN0ZWQKKwkJfTsKKworCQltZXNzYWdlID0gZXNjYXBlSHRtbChtZXNzYWdlKSB8fCAocmVzdWx0
ID8gIm9rYXkiIDogImZhaWxlZCIpOworCQltZXNzYWdlID0gJzxzcGFuIGNsYXNzPSJ0ZXN0LW1l
c3NhZ2UiPicgKyBtZXNzYWdlICsgIjwvc3Bhbj4iOworCQlleHBlY3RlZCA9IGVzY2FwZUh0bWwo
UVVuaXQuanNEdW1wLnBhcnNlKGV4cGVjdGVkKSk7CisJCWFjdHVhbCA9IGVzY2FwZUh0bWwoUVVu
aXQuanNEdW1wLnBhcnNlKGFjdHVhbCkpOworCQl2YXIgb3V0cHV0ID0gbWVzc2FnZSArICc8dGFi
bGU+PHRyIGNsYXNzPSJ0ZXN0LWV4cGVjdGVkIj48dGg+RXhwZWN0ZWQ6IDwvdGg+PHRkPjxwcmU+
JyArIGV4cGVjdGVkICsgJzwvcHJlPjwvdGQ+PC90cj4nOworCQlpZiAoYWN0dWFsICE9IGV4cGVj
dGVkKSB7CisJCQlvdXRwdXQgKz0gJzx0ciBjbGFzcz0idGVzdC1hY3R1YWwiPjx0aD5SZXN1bHQ6
IDwvdGg+PHRkPjxwcmU+JyArIGFjdHVhbCArICc8L3ByZT48L3RkPjwvdHI+JzsKKwkJCW91dHB1
dCArPSAnPHRyIGNsYXNzPSJ0ZXN0LWRpZmYiPjx0aD5EaWZmOiA8L3RoPjx0ZD48cHJlPicgKyBR
VW5pdC5kaWZmKGV4cGVjdGVkLCBhY3R1YWwpICsnPC9wcmU+PC90ZD48L3RyPic7CisJCX0KKwkJ
aWYgKCFyZXN1bHQpIHsKKwkJCXZhciBzb3VyY2UgPSBzb3VyY2VGcm9tU3RhY2t0cmFjZSgpOwor
CQkJaWYgKHNvdXJjZSkgeworCQkJCWRldGFpbHMuc291cmNlID0gc291cmNlOworCQkJCW91dHB1
dCArPSAnPHRyIGNsYXNzPSJ0ZXN0LXNvdXJjZSI+PHRoPlNvdXJjZTogPC90aD48dGQ+PHByZT4n
ICsgZXNjYXBlSHRtbChzb3VyY2UpICsgJzwvcHJlPjwvdGQ+PC90cj4nOworCQkJfQorCQl9CisJ
CW91dHB1dCArPSAiPC90YWJsZT4iOworCisJCVFVbml0LmxvZyhkZXRhaWxzKTsKKworCQljb25m
aWcuY3VycmVudC5hc3NlcnRpb25zLnB1c2goeworCQkJcmVzdWx0OiAhIXJlc3VsdCwKKwkJCW1l
c3NhZ2U6IG91dHB1dAorCQl9KTsKKwl9LAorCisJdXJsOiBmdW5jdGlvbiggcGFyYW1zICkgewor
CQlwYXJhbXMgPSBleHRlbmQoIGV4dGVuZCgge30sIFFVbml0LnVybFBhcmFtcyApLCBwYXJhbXMg
KTsKKwkJdmFyIHF1ZXJ5c3RyaW5nID0gIj8iLAorCQkJa2V5OworCQlmb3IgKCBrZXkgaW4gcGFy
YW1zICkgeworCQkJcXVlcnlzdHJpbmcgKz0gZW5jb2RlVVJJQ29tcG9uZW50KCBrZXkgKSArICI9
IiArCisJCQkJZW5jb2RlVVJJQ29tcG9uZW50KCBwYXJhbXNbIGtleSBdICkgKyAiJiI7CisJCX0K
KwkJcmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHF1ZXJ5c3RyaW5nLnNsaWNlKCAw
LCAtMSApOworCX0sCisKKwkvLyBMb2dnaW5nIGNhbGxiYWNrczsgYWxsIHJlY2VpdmUgYSBzaW5n
bGUgYXJndW1lbnQgd2l0aCB0aGUgbGlzdGVkIHByb3BlcnRpZXMKKwkvLyBydW4gdGVzdC9sb2dz
Lmh0bWwgZm9yIGFueSByZWxhdGVkIGNoYW5nZXMKKwliZWdpbjogZnVuY3Rpb24oKSB7fSwKKwkv
LyBkb25lOiB7IGZhaWxlZCwgcGFzc2VkLCB0b3RhbCwgcnVudGltZSB9CisJZG9uZTogZnVuY3Rp
b24oKSB7fSwKKwkvLyBsb2c6IHsgcmVzdWx0LCBhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlIH0K
Kwlsb2c6IGZ1bmN0aW9uKCkge30sCisJLy8gdGVzdFN0YXJ0OiB7IG5hbWUgfQorCXRlc3RTdGFy
dDogZnVuY3Rpb24oKSB7fSwKKwkvLyB0ZXN0RG9uZTogeyBuYW1lLCBmYWlsZWQsIHBhc3NlZCwg
dG90YWwgfQorCXRlc3REb25lOiBmdW5jdGlvbigpIHt9LAorCS8vIG1vZHVsZVN0YXJ0OiB7IG5h
bWUgfQorCW1vZHVsZVN0YXJ0OiBmdW5jdGlvbigpIHt9LAorCS8vIG1vZHVsZURvbmU6IHsgbmFt
ZSwgZmFpbGVkLCBwYXNzZWQsIHRvdGFsIH0KKwltb2R1bGVEb25lOiBmdW5jdGlvbigpIHt9Cit9
KTsKKworaWYgKCB0eXBlb2YgZG9jdW1lbnQgPT09ICJ1bmRlZmluZWQiIHx8IGRvY3VtZW50LnJl
YWR5U3RhdGUgPT09ICJjb21wbGV0ZSIgKSB7CisJY29uZmlnLmF1dG9ydW4gPSB0cnVlOworfQor
CithZGRFdmVudCh3aW5kb3csICJsb2FkIiwgZnVuY3Rpb24oKSB7CisJUVVuaXQuYmVnaW4oe30p
OworCisJLy8gSW5pdGlhbGl6ZSB0aGUgY29uZmlnLCBzYXZpbmcgdGhlIGV4ZWN1dGlvbiBxdWV1
ZQorCXZhciBvbGRjb25maWcgPSBleHRlbmQoe30sIGNvbmZpZyk7CisJUVVuaXQuaW5pdCgpOwor
CWV4dGVuZChjb25maWcsIG9sZGNvbmZpZyk7CisKKwljb25maWcuYmxvY2tpbmcgPSBmYWxzZTsK
KworCXZhciB1c2VyQWdlbnQgPSBpZCgicXVuaXQtdXNlckFnZW50Iik7CisJaWYgKCB1c2VyQWdl
bnQgKSB7CisJCXVzZXJBZ2VudC5pbm5lckhUTUwgPSBuYXZpZ2F0b3IudXNlckFnZW50OworCX0K
Kwl2YXIgYmFubmVyID0gaWQoInF1bml0LWhlYWRlciIpOworCWlmICggYmFubmVyICkgeworCQli
YW5uZXIuaW5uZXJIVE1MID0gJzxhIGhyZWY9IicgKyBRVW5pdC51cmwoeyBmaWx0ZXI6IHVuZGVm
aW5lZCB9KSArICciPiAnICsgYmFubmVyLmlubmVySFRNTCArICc8L2E+ICcgKworCQkJJzxsYWJl
bD48aW5wdXQgbmFtZT0ibm9nbG9iYWxzIiB0eXBlPSJjaGVja2JveCInICsgKCBjb25maWcubm9n
bG9iYWxzID8gJyBjaGVja2VkPSJjaGVja2VkIicgOiAnJyApICsgJz5ub2dsb2JhbHM8L2xhYmVs
PicgKworCQkJJzxsYWJlbD48aW5wdXQgbmFtZT0ibm90cnljYXRjaCIgdHlwZT0iY2hlY2tib3gi
JyArICggY29uZmlnLm5vdHJ5Y2F0Y2ggPyAnIGNoZWNrZWQ9ImNoZWNrZWQiJyA6ICcnICkgKyAn
Pm5vdHJ5Y2F0Y2g8L2xhYmVsPic7CisJCWFkZEV2ZW50KCBiYW5uZXIsICJjaGFuZ2UiLCBmdW5j
dGlvbiggZXZlbnQgKSB7CisJCQl2YXIgcGFyYW1zID0ge307CisJCQlwYXJhbXNbIGV2ZW50LnRh
cmdldC5uYW1lIF0gPSBldmVudC50YXJnZXQuY2hlY2tlZCA/IHRydWUgOiB1bmRlZmluZWQ7CisJ
CQl3aW5kb3cubG9jYXRpb24gPSBRVW5pdC51cmwoIHBhcmFtcyApOworCQl9KTsKKwl9CisKKwl2
YXIgdG9vbGJhciA9IGlkKCJxdW5pdC10ZXN0cnVubmVyLXRvb2xiYXIiKTsKKwlpZiAoIHRvb2xi
YXIgKSB7CisJCXZhciBmaWx0ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwor
CQlmaWx0ZXIudHlwZSA9ICJjaGVja2JveCI7CisJCWZpbHRlci5pZCA9ICJxdW5pdC1maWx0ZXIt
cGFzcyI7CisJCWFkZEV2ZW50KCBmaWx0ZXIsICJjbGljayIsIGZ1bmN0aW9uKCkgeworCQkJdmFy
IG9sID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInF1bml0LXRlc3RzIik7CisJCQlpZiAoIGZp
bHRlci5jaGVja2VkICkgeworCQkJCW9sLmNsYXNzTmFtZSA9IG9sLmNsYXNzTmFtZSArICIgaGlk
ZXBhc3MiOworCQkJfSBlbHNlIHsKKwkJCQl2YXIgdG1wID0gIiAiICsgb2wuY2xhc3NOYW1lLnJl
cGxhY2UoIC9bXG5cdFxyXS9nLCAiICIgKSArICIgIjsKKwkJCQlvbC5jbGFzc05hbWUgPSB0bXAu
cmVwbGFjZSgvIGhpZGVwYXNzIC8sICIgIik7CisJCQl9CisJCQlpZiAoIGRlZmluZWQuc2Vzc2lv
blN0b3JhZ2UgKSB7CisJCQkJaWYgKGZpbHRlci5jaGVja2VkKSB7CisJCQkJCXNlc3Npb25TdG9y
YWdlLnNldEl0ZW0oInF1bml0LWZpbHRlci1wYXNzZWQtdGVzdHMiLCAgInRydWUiKTsKKwkJCQl9
IGVsc2UgeworCQkJCQlzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCJxdW5pdC1maWx0ZXItcGFz
c2VkLXRlc3RzIik7CisJCQkJfQorCQkJfQorCQl9KTsKKwkJaWYgKCBkZWZpbmVkLnNlc3Npb25T
dG9yYWdlICYmIHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oInF1bml0LWZpbHRlci1wYXNzZWQtdGVz
dHMiKSApIHsKKwkJCWZpbHRlci5jaGVja2VkID0gdHJ1ZTsKKwkJCXZhciBvbCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJxdW5pdC10ZXN0cyIpOworCQkJb2wuY2xhc3NOYW1lID0gb2wuY2xh
c3NOYW1lICsgIiBoaWRlcGFzcyI7CisJCX0KKwkJdG9vbGJhci5hcHBlbmRDaGlsZCggZmlsdGVy
ICk7CisKKwkJdmFyIGxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKKwkJ
bGFiZWwuc2V0QXR0cmlidXRlKCJmb3IiLCAicXVuaXQtZmlsdGVyLXBhc3MiKTsKKwkJbGFiZWwu
aW5uZXJIVE1MID0gIkhpZGUgcGFzc2VkIHRlc3RzIjsKKwkJdG9vbGJhci5hcHBlbmRDaGlsZCgg
bGFiZWwgKTsKKwl9CisKKwl2YXIgbWFpbiA9IGlkKCdxdW5pdC1maXh0dXJlJyk7CisJaWYgKCBt
YWluICkgeworCQljb25maWcuZml4dHVyZSA9IG1haW4uaW5uZXJIVE1MOworCX0KKworCWlmIChj
b25maWcuYXV0b3N0YXJ0KSB7CisJCVFVbml0LnN0YXJ0KCk7CisJfQorfSk7CisKK2Z1bmN0aW9u
IGRvbmUoKSB7CisJY29uZmlnLmF1dG9ydW4gPSB0cnVlOworCisJLy8gTG9nIHRoZSBsYXN0IG1v
ZHVsZSByZXN1bHRzCisJaWYgKCBjb25maWcuY3VycmVudE1vZHVsZSApIHsKKwkJUVVuaXQubW9k
dWxlRG9uZSggeworCQkJbmFtZTogY29uZmlnLmN1cnJlbnRNb2R1bGUsCisJCQlmYWlsZWQ6IGNv
bmZpZy5tb2R1bGVTdGF0cy5iYWQsCisJCQlwYXNzZWQ6IGNvbmZpZy5tb2R1bGVTdGF0cy5hbGwg
LSBjb25maWcubW9kdWxlU3RhdHMuYmFkLAorCQkJdG90YWw6IGNvbmZpZy5tb2R1bGVTdGF0cy5h
bGwKKwkJfSApOworCX0KKworCXZhciBiYW5uZXIgPSBpZCgicXVuaXQtYmFubmVyIiksCisJCXRl
c3RzID0gaWQoInF1bml0LXRlc3RzIiksCisJCXJ1bnRpbWUgPSArbmV3IERhdGUgLSBjb25maWcu
c3RhcnRlZCwKKwkJcGFzc2VkID0gY29uZmlnLnN0YXRzLmFsbCAtIGNvbmZpZy5zdGF0cy5iYWQs
CisJCWh0bWwgPSBbCisJCQknVGVzdHMgY29tcGxldGVkIGluICcsCisJCQlydW50aW1lLAorCQkJ
JyBtaWxsaXNlY29uZHMuPGJyLz4nLAorCQkJJzxzcGFuIGNsYXNzPSJwYXNzZWQiPicsCisJCQlw
YXNzZWQsCisJCQknPC9zcGFuPiB0ZXN0cyBvZiA8c3BhbiBjbGFzcz0idG90YWwiPicsCisJCQlj
b25maWcuc3RhdHMuYWxsLAorCQkJJzwvc3Bhbj4gcGFzc2VkLCA8c3BhbiBjbGFzcz0iZmFpbGVk
Ij4nLAorCQkJY29uZmlnLnN0YXRzLmJhZCwKKwkJCSc8L3NwYW4+IGZhaWxlZC4nCisJCV0uam9p
bignJyk7CisKKwlpZiAoIGJhbm5lciApIHsKKwkJYmFubmVyLmNsYXNzTmFtZSA9IChjb25maWcu
c3RhdHMuYmFkID8gInF1bml0LWZhaWwiIDogInF1bml0LXBhc3MiKTsKKwl9CisKKwlpZiAoIHRl
c3RzICkgeworCQlpZCggInF1bml0LXRlc3RyZXN1bHQiICkuaW5uZXJIVE1MID0gaHRtbDsKKwl9
CisKKwlpZiAoIHR5cGVvZiBkb2N1bWVudCAhPT0gInVuZGVmaW5lZCIgJiYgZG9jdW1lbnQudGl0
bGUgKSB7CisJCS8vIHNob3cg4pyWIGZvciBnb29kLCDinJQgZm9yIGJhZCBzdWl0ZSByZXN1bHQg
aW4gdGl0bGUKKwkJLy8gdXNlIGVzY2FwZSBzZXF1ZW5jZXMgaW4gY2FzZSBmaWxlIGdldHMgbG9h
ZGVkIHdpdGggbm9uLXV0Zi04LWNoYXJzZXQKKwkJZG9jdW1lbnQudGl0bGUgPSAoY29uZmlnLnN0
YXRzLmJhZCA/ICJcdTI3MTYiIDogIlx1MjcxNCIpICsgIiAiICsgZG9jdW1lbnQudGl0bGU7CisJ
fQorCisJUVVuaXQuZG9uZSggeworCQlmYWlsZWQ6IGNvbmZpZy5zdGF0cy5iYWQsCisJCXBhc3Nl
ZDogcGFzc2VkLAorCQl0b3RhbDogY29uZmlnLnN0YXRzLmFsbCwKKwkJcnVudGltZTogcnVudGlt
ZQorCX0gKTsKK30KKworZnVuY3Rpb24gdmFsaWRUZXN0KCBuYW1lICkgeworCXZhciBmaWx0ZXIg
PSBjb25maWcuZmlsdGVyLAorCQlydW4gPSBmYWxzZTsKKworCWlmICggIWZpbHRlciApIHsKKwkJ
cmV0dXJuIHRydWU7CisJfQorCisJdmFyIG5vdCA9IGZpbHRlci5jaGFyQXQoIDAgKSA9PT0gIiEi
OworCWlmICggbm90ICkgeworCQlmaWx0ZXIgPSBmaWx0ZXIuc2xpY2UoIDEgKTsKKwl9CisKKwlp
ZiAoIG5hbWUuaW5kZXhPZiggZmlsdGVyICkgIT09IC0xICkgeworCQlyZXR1cm4gIW5vdDsKKwl9
CisKKwlpZiAoIG5vdCApIHsKKwkJcnVuID0gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gcnVuOworfQor
CisvLyBzbyBmYXIgc3VwcG9ydHMgb25seSBGaXJlZm94LCBDaHJvbWUgYW5kIE9wZXJhIChidWdn
eSkKKy8vIGNvdWxkIGJlIGV4dGVuZGVkIGluIHRoZSBmdXR1cmUgdG8gdXNlIHNvbWV0aGluZyBs
aWtlIGh0dHBzOi8vZ2l0aHViLmNvbS9jc25vdmVyL1RyYWNlS2l0CitmdW5jdGlvbiBzb3VyY2VG
cm9tU3RhY2t0cmFjZSgpIHsKKwl0cnkgeworCQl0aHJvdyBuZXcgRXJyb3IoKTsKKwl9IGNhdGNo
ICggZSApIHsKKwkJaWYgKGUuc3RhY2t0cmFjZSkgeworCQkJLy8gT3BlcmEKKwkJCXJldHVybiBl
LnN0YWNrdHJhY2Uuc3BsaXQoIlxuIilbNl07CisJCX0gZWxzZSBpZiAoZS5zdGFjaykgeworCQkJ
Ly8gRmlyZWZveCwgQ2hyb21lCisJCQlyZXR1cm4gZS5zdGFjay5zcGxpdCgiXG4iKVs0XTsKKwkJ
fQorCX0KK30KKworZnVuY3Rpb24gZXNjYXBlSHRtbChzKSB7CisJaWYgKCFzKSB7CisJCXJldHVy
biAiIjsKKwl9CisJcyA9IHMgKyAiIjsKKwlyZXR1cm4gcy5yZXBsYWNlKC9bXCYiPD5cXF0vZywg
ZnVuY3Rpb24ocykgeworCQlzd2l0Y2gocykgeworCQkJY2FzZSAiJiI6IHJldHVybiAiJmFtcDsi
OworCQkJY2FzZSAiXFwiOiByZXR1cm4gIlxcXFwiOworCQkJY2FzZSAnIic6IHJldHVybiAnXCIn
OworCQkJY2FzZSAiPCI6IHJldHVybiAiJmx0OyI7CisJCQljYXNlICI+IjogcmV0dXJuICImZ3Q7
IjsKKwkJCWRlZmF1bHQ6IHJldHVybiBzOworCQl9CisJfSk7Cit9CisKK2Z1bmN0aW9uIHN5bmNo
cm9uaXplKCBjYWxsYmFjayApIHsKKwljb25maWcucXVldWUucHVzaCggY2FsbGJhY2sgKTsKKwor
CWlmICggY29uZmlnLmF1dG9ydW4gJiYgIWNvbmZpZy5ibG9ja2luZyApIHsKKwkJcHJvY2Vzcygp
OworCX0KK30KKworZnVuY3Rpb24gcHJvY2VzcygpIHsKKwl2YXIgc3RhcnQgPSAobmV3IERhdGUo
KSkuZ2V0VGltZSgpOworCisJd2hpbGUgKCBjb25maWcucXVldWUubGVuZ3RoICYmICFjb25maWcu
YmxvY2tpbmcgKSB7CisJCWlmICggY29uZmlnLnVwZGF0ZVJhdGUgPD0gMCB8fCAoKChuZXcgRGF0
ZSgpKS5nZXRUaW1lKCkgLSBzdGFydCkgPCBjb25maWcudXBkYXRlUmF0ZSkgKSB7CisJCQljb25m
aWcucXVldWUuc2hpZnQoKSgpOworCQl9IGVsc2UgeworCQkJd2luZG93LnNldFRpbWVvdXQoIHBy
b2Nlc3MsIDEzICk7CisJCQlicmVhazsKKwkJfQorCX0KKyAgaWYgKCFjb25maWcuYmxvY2tpbmcg
JiYgIWNvbmZpZy5xdWV1ZS5sZW5ndGgpIHsKKyAgICBkb25lKCk7CisgIH0KK30KKworZnVuY3Rp
b24gc2F2ZUdsb2JhbCgpIHsKKwljb25maWcucG9sbHV0aW9uID0gW107CisKKwlpZiAoIGNvbmZp
Zy5ub2dsb2JhbHMgKSB7CisJCWZvciAoIHZhciBrZXkgaW4gd2luZG93ICkgeworCQkJY29uZmln
LnBvbGx1dGlvbi5wdXNoKCBrZXkgKTsKKwkJfQorCX0KK30KKworZnVuY3Rpb24gY2hlY2tQb2xs
dXRpb24oIG5hbWUgKSB7CisJdmFyIG9sZCA9IGNvbmZpZy5wb2xsdXRpb247CisJc2F2ZUdsb2Jh
bCgpOworCisJdmFyIG5ld0dsb2JhbHMgPSBkaWZmKCBjb25maWcucG9sbHV0aW9uLCBvbGQgKTsK
KwlpZiAoIG5ld0dsb2JhbHMubGVuZ3RoID4gMCApIHsKKwkJb2soIGZhbHNlLCAiSW50cm9kdWNl
ZCBnbG9iYWwgdmFyaWFibGUocyk6ICIgKyBuZXdHbG9iYWxzLmpvaW4oIiwgIikgKTsKKwl9CisK
Kwl2YXIgZGVsZXRlZEdsb2JhbHMgPSBkaWZmKCBvbGQsIGNvbmZpZy5wb2xsdXRpb24gKTsKKwlp
ZiAoIGRlbGV0ZWRHbG9iYWxzLmxlbmd0aCA+IDAgKSB7CisJCW9rKCBmYWxzZSwgIkRlbGV0ZWQg
Z2xvYmFsIHZhcmlhYmxlKHMpOiAiICsgZGVsZXRlZEdsb2JhbHMuam9pbigiLCAiKSApOworCX0K
K30KKworLy8gcmV0dXJucyBhIG5ldyBBcnJheSB3aXRoIHRoZSBlbGVtZW50cyB0aGF0IGFyZSBp
biBhIGJ1dCBub3QgaW4gYgorZnVuY3Rpb24gZGlmZiggYSwgYiApIHsKKwl2YXIgcmVzdWx0ID0g
YS5zbGljZSgpOworCWZvciAoIHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKyApIHsK
KwkJZm9yICggdmFyIGogPSAwOyBqIDwgYi5sZW5ndGg7IGorKyApIHsKKwkJCWlmICggcmVzdWx0
W2ldID09PSBiW2pdICkgeworCQkJCXJlc3VsdC5zcGxpY2UoaSwgMSk7CisJCQkJaS0tOworCQkJ
CWJyZWFrOworCQkJfQorCQl9CisJfQorCXJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIGZh
aWwobWVzc2FnZSwgZXhjZXB0aW9uLCBjYWxsYmFjaykgeworCWlmICggdHlwZW9mIGNvbnNvbGUg
IT09ICJ1bmRlZmluZWQiICYmIGNvbnNvbGUuZXJyb3IgJiYgY29uc29sZS53YXJuICkgeworCQlj
b25zb2xlLmVycm9yKG1lc3NhZ2UpOworCQljb25zb2xlLmVycm9yKGV4Y2VwdGlvbik7CisJCWNv
bnNvbGUud2FybihjYWxsYmFjay50b1N0cmluZygpKTsKKworCX0gZWxzZSBpZiAoIHdpbmRvdy5v
cGVyYSAmJiBvcGVyYS5wb3N0RXJyb3IgKSB7CisJCW9wZXJhLnBvc3RFcnJvcihtZXNzYWdlLCBl
eGNlcHRpb24sIGNhbGxiYWNrLnRvU3RyaW5nKTsKKwl9Cit9CisKK2Z1bmN0aW9uIGV4dGVuZChh
LCBiKSB7CisJZm9yICggdmFyIHByb3AgaW4gYiApIHsKKwkJaWYgKCBiW3Byb3BdID09PSB1bmRl
ZmluZWQgKSB7CisJCQlkZWxldGUgYVtwcm9wXTsKKwkJfSBlbHNlIHsKKwkJCWFbcHJvcF0gPSBi
W3Byb3BdOworCQl9CisJfQorCisJcmV0dXJuIGE7Cit9CisKK2Z1bmN0aW9uIGFkZEV2ZW50KGVs
ZW0sIHR5cGUsIGZuKSB7CisJaWYgKCBlbGVtLmFkZEV2ZW50TGlzdGVuZXIgKSB7CisJCWVsZW0u
YWRkRXZlbnRMaXN0ZW5lciggdHlwZSwgZm4sIGZhbHNlICk7CisJfSBlbHNlIGlmICggZWxlbS5h
dHRhY2hFdmVudCApIHsKKwkJZWxlbS5hdHRhY2hFdmVudCggIm9uIiArIHR5cGUsIGZuICk7CisJ
fSBlbHNlIHsKKwkJZm4oKTsKKwl9Cit9CisKK2Z1bmN0aW9uIGlkKG5hbWUpIHsKKwlyZXR1cm4g
ISEodHlwZW9mIGRvY3VtZW50ICE9PSAidW5kZWZpbmVkIiAmJiBkb2N1bWVudCAmJiBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCkgJiYKKwkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIG5hbWUgKTsK
K30KKworLy8gVGVzdCBmb3IgZXF1YWxpdHkgYW55IEphdmFTY3JpcHQgdHlwZS4KKy8vIERpc2N1
c3Npb25zIGFuZCByZWZlcmVuY2U6IGh0dHA6Ly9waGlscmF0aGUuY29tL2FydGljbGVzL2VxdWl2
CisvLyBUZXN0IHN1aXRlczogaHR0cDovL3BoaWxyYXRoZS5jb20vdGVzdHMvZXF1aXYKKy8vIEF1
dGhvcjogUGhpbGlwcGUgUmF0aMOpIDxwcmF0aGVAZ21haWwuY29tPgorUVVuaXQuZXF1aXYgPSBm
dW5jdGlvbiAoKSB7CisKKyAgICB2YXIgaW5uZXJFcXVpdjsgLy8gdGhlIHJlYWwgZXF1aXYgZnVu
Y3Rpb24KKyAgICB2YXIgY2FsbGVycyA9IFtdOyAvLyBzdGFjayB0byBkZWNpZGUgYmV0d2VlbiBz
a2lwL2Fib3J0IGZ1bmN0aW9ucworICAgIHZhciBwYXJlbnRzID0gW107IC8vIHN0YWNrIHRvIGF2
b2lkaW5nIGxvb3BzIGZyb20gY2lyY3VsYXIgcmVmZXJlbmNpbmcKKworICAgIC8vIENhbGwgdGhl
IG8gcmVsYXRlZCBjYWxsYmFjayB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuCisgICAgZnVuY3Rp
b24gYmluZENhbGxiYWNrcyhvLCBjYWxsYmFja3MsIGFyZ3MpIHsKKyAgICAgICAgdmFyIHByb3Ag
PSBRVW5pdC5vYmplY3RUeXBlKG8pOworICAgICAgICBpZiAocHJvcCkgeworICAgICAgICAgICAg
aWYgKFFVbml0Lm9iamVjdFR5cGUoY2FsbGJhY2tzW3Byb3BdKSA9PT0gImZ1bmN0aW9uIikgewor
ICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFja3NbcHJvcF0uYXBwbHkoY2FsbGJhY2tzLCBh
cmdzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxi
YWNrc1twcm9wXTsgLy8gb3IgdW5kZWZpbmVkCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2YXIgY2FsbGJhY2tzID0gZnVuY3Rpb24gKCkgeworCisgICAgICAgIC8vIGZv
ciBzdHJpbmcsIGJvb2xlYW4sIG51bWJlciBhbmQgbnVsbAorICAgICAgICBmdW5jdGlvbiB1c2VT
dHJpY3RFcXVhbGl0eShiLCBhKSB7CisgICAgICAgICAgICBpZiAoYiBpbnN0YW5jZW9mIGEuY29u
c3RydWN0b3IgfHwgYSBpbnN0YW5jZW9mIGIuY29uc3RydWN0b3IpIHsKKyAgICAgICAgICAgICAg
ICAvLyB0byBjYXRjaCBzaG9ydCBhbm5vdGFpb24gVlMgJ25ldycgYW5ub3RhdGlvbiBvZiBhIGRl
Y2xhcmF0aW9uCisgICAgICAgICAgICAgICAgLy8gZS5nLiB2YXIgaSA9IDE7CisgICAgICAgICAg
ICAgICAgLy8gICAgICB2YXIgaiA9IG5ldyBOdW1iZXIoMSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGEgPT0gYjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGEgPT09IGI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gewor
ICAgICAgICAgICAgInN0cmluZyI6IHVzZVN0cmljdEVxdWFsaXR5LAorICAgICAgICAgICAgImJv
b2xlYW4iOiB1c2VTdHJpY3RFcXVhbGl0eSwKKyAgICAgICAgICAgICJudW1iZXIiOiB1c2VTdHJp
Y3RFcXVhbGl0eSwKKyAgICAgICAgICAgICJudWxsIjogdXNlU3RyaWN0RXF1YWxpdHksCisgICAg
ICAgICAgICAidW5kZWZpbmVkIjogdXNlU3RyaWN0RXF1YWxpdHksCisKKyAgICAgICAgICAgICJu
YW4iOiBmdW5jdGlvbiAoYikgeworICAgICAgICAgICAgICAgIHJldHVybiBpc05hTihiKTsKKyAg
ICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICJkYXRlIjogZnVuY3Rpb24gKGIsIGEpIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gUVVuaXQub2JqZWN0VHlwZShiKSA9PT0gImRhdGUiICYmIGEu
dmFsdWVPZigpID09PSBiLnZhbHVlT2YoKTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAg
ICJyZWdleHAiOiBmdW5jdGlvbiAoYiwgYSkgeworICAgICAgICAgICAgICAgIHJldHVybiBRVW5p
dC5vYmplY3RUeXBlKGIpID09PSAicmVnZXhwIiAmJgorICAgICAgICAgICAgICAgICAgICBhLnNv
dXJjZSA9PT0gYi5zb3VyY2UgJiYgLy8gdGhlIHJlZ2V4IGl0c2VsZgorICAgICAgICAgICAgICAg
ICAgICBhLmdsb2JhbCA9PT0gYi5nbG9iYWwgJiYgLy8gYW5kIGl0cyBtb2RpZmVycyAoZ21pKSAu
Li4KKyAgICAgICAgICAgICAgICAgICAgYS5pZ25vcmVDYXNlID09PSBiLmlnbm9yZUNhc2UgJiYK
KyAgICAgICAgICAgICAgICAgICAgYS5tdWx0aWxpbmUgPT09IGIubXVsdGlsaW5lOworICAgICAg
ICAgICAgfSwKKworICAgICAgICAgICAgLy8gLSBza2lwIHdoZW4gdGhlIHByb3BlcnR5IGlzIGEg
bWV0aG9kIG9mIGFuIGluc3RhbmNlIChPT1ApCisgICAgICAgICAgICAvLyAtIGFib3J0IG90aGVy
d2lzZSwKKyAgICAgICAgICAgIC8vICAgaW5pdGlhbCA9PT0gd291bGQgaGF2ZSBjYXRjaCBpZGVu
dGljYWwgcmVmZXJlbmNlcyBhbnl3YXkKKyAgICAgICAgICAgICJmdW5jdGlvbiI6IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2FsbGVyID0gY2FsbGVyc1tjYWxsZXJzLmxlbmd0
aCAtIDFdOworICAgICAgICAgICAgICAgIHJldHVybiBjYWxsZXIgIT09IE9iamVjdCAmJgorICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGNhbGxlciAhPT0gInVuZGVmaW5lZCI7CisgICAg
ICAgICAgICB9LAorCisgICAgICAgICAgICAiYXJyYXkiOiBmdW5jdGlvbiAoYiwgYSkgeworICAg
ICAgICAgICAgICAgIHZhciBpLCBqLCBsb29wOworICAgICAgICAgICAgICAgIHZhciBsZW47CisK
KyAgICAgICAgICAgICAgICAvLyBiIGNvdWxkIGJlIGFuIG9iamVjdCBsaXRlcmFsIGhlcmUKKyAg
ICAgICAgICAgICAgICBpZiAoICEgKFFVbml0Lm9iamVjdFR5cGUoYikgPT09ICJhcnJheSIpKSB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBsZW4gPSBhLmxlbmd0aDsKKyAgICAgICAgICAgICAgICBpZiAobGVu
ICE9PSBiLmxlbmd0aCkgeyAvLyBzYWZlIGFuZCBmYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vdHJh
Y2sgcmVmZXJlbmNlIHRvIGF2b2lkIGNpcmN1bGFyIHJlZmVyZW5jZXMKKyAgICAgICAgICAgICAg
ICBwYXJlbnRzLnB1c2goYSk7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsg
aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGxvb3AgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgZm9yKGo9MDtqPHBhcmVudHMubGVuZ3RoO2orKyl7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZihwYXJlbnRzW2pdID09PSBhW2ldKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb29wID0gdHJ1ZTsvL2RvbnQgcmV3YWxrIGFycmF5CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFsb29w
ICYmICEgaW5uZXJFcXVpdihhW2ldLCBiW2ldKSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
cGFyZW50cy5wb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBw
YXJlbnRzLnBvcCgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fSwKKworICAgICAgICAgICAgIm9iamVjdCI6IGZ1bmN0aW9uIChiLCBhKSB7CisgICAgICAgICAg
ICAgICAgdmFyIGksIGosIGxvb3A7CisgICAgICAgICAgICAgICAgdmFyIGVxID0gdHJ1ZTsgLy8g
dW5sZXNzIHdlIGNhbiBwcm9vdmUgaXQKKyAgICAgICAgICAgICAgICB2YXIgYVByb3BlcnRpZXMg
PSBbXSwgYlByb3BlcnRpZXMgPSBbXTsgLy8gY29sbGVjdGlvbiBvZiBzdHJpbmdzCisKKyAgICAg
ICAgICAgICAgICAvLyBjb21wYXJpbmcgY29uc3RydWN0b3JzIGlzIG1vcmUgc3RyaWN0IHRoYW4g
dXNpbmcgaW5zdGFuY2VvZgorICAgICAgICAgICAgICAgIGlmICggYS5jb25zdHJ1Y3RvciAhPT0g
Yi5jb25zdHJ1Y3RvcikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gc3RhY2sgY29uc3RydWN0b3IgYmVm
b3JlIHRyYXZlcnNpbmcgcHJvcGVydGllcworICAgICAgICAgICAgICAgIGNhbGxlcnMucHVzaChh
LmNvbnN0cnVjdG9yKTsKKyAgICAgICAgICAgICAgICAvL3RyYWNrIHJlZmVyZW5jZSB0byBhdm9p
ZCBjaXJjdWxhciByZWZlcmVuY2VzCisgICAgICAgICAgICAgICAgcGFyZW50cy5wdXNoKGEpOwor
CisgICAgICAgICAgICAgICAgZm9yIChpIGluIGEpIHsgLy8gYmUgc3RyaWN0OiBkb24ndCBlbnN1
cmVzIGhhc093blByb3BlcnR5IGFuZCBnbyBkZWVwCisgICAgICAgICAgICAgICAgICAgIGxvb3Ag
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yKGo9MDtqPHBhcmVudHMubGVuZ3RoO2or
Kyl7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihwYXJlbnRzW2pdID09PSBhW2ldKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3AgPSB0cnVlOyAvL2Rvbid0IGdvIGRvd24gdGhl
IHNhbWUgcGF0aCB0d2ljZQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGFQcm9wZXJ0aWVzLnB1c2goaSk7IC8vIGNvbGxlY3QgYSdzIHByb3BlcnRpZXMKKworICAg
ICAgICAgICAgICAgICAgICBpZiAoIWxvb3AgJiYgISBpbm5lckVxdWl2KGFbaV0sIGJbaV0pKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBlcSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBjYWxsZXJzLnBvcCgpOyAvLyB1bnN0YWNrLCB3ZSBhcmUgZG9uZQor
ICAgICAgICAgICAgICAgIHBhcmVudHMucG9wKCk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGkg
aW4gYikgeworICAgICAgICAgICAgICAgICAgICBiUHJvcGVydGllcy5wdXNoKGkpOyAvLyBjb2xs
ZWN0IGIncyBwcm9wZXJ0aWVzCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
Ly8gRW5zdXJlcyBpZGVudGljYWwgcHJvcGVydGllcyBuYW1lCisgICAgICAgICAgICAgICAgcmV0
dXJuIGVxICYmIGlubmVyRXF1aXYoYVByb3BlcnRpZXMuc29ydCgpLCBiUHJvcGVydGllcy5zb3J0
KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0oKTsKKworICAgIGlubmVyRXF1
aXYgPSBmdW5jdGlvbiAoKSB7IC8vIGNhbiB0YWtlIG11bHRpcGxlIGFyZ3VtZW50cworICAgICAg
ICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5hcHBseShhcmd1bWVudHMpOworICAg
ICAgICBpZiAoYXJncy5sZW5ndGggPCAyKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8g
ZW5kIHRyYW5zaXRpb24KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAoZnVuY3Rpb24gKGEs
IGIpIHsKKyAgICAgICAgICAgIGlmIChhID09PSBiKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7IC8vIGNhdGNoIHRoZSBtb3N0IHlvdSBjYW4KKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
YSA9PT0gbnVsbCB8fCBiID09PSBudWxsIHx8IHR5cGVvZiBhID09PSAidW5kZWZpbmVkIiB8fCB0
eXBlb2YgYiA9PT0gInVuZGVmaW5lZCIgfHwgUVVuaXQub2JqZWN0VHlwZShhKSAhPT0gUVVuaXQu
b2JqZWN0VHlwZShiKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gZG9uJ3Qg
bG9zZSB0aW1lIHdpdGggZXJyb3IgcHJvbmUgY2FzZXMKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGJpbmRDYWxsYmFja3MoYSwgY2FsbGJhY2tzLCBbYiwgYV0p
OworICAgICAgICAgICAgfQorCisgICAgICAgIC8vIGFwcGx5IHRyYW5zaXRpb24gd2l0aCAoMS4u
bikgYXJndW1lbnRzCisgICAgICAgIH0pKGFyZ3NbMF0sIGFyZ3NbMV0pICYmIGFyZ3VtZW50cy5j
YWxsZWUuYXBwbHkodGhpcywgYXJncy5zcGxpY2UoMSwgYXJncy5sZW5ndGggLTEpKTsKKyAgICB9
OworCisgICAgcmV0dXJuIGlubmVyRXF1aXY7CisKK30oKTsKKworLyoqCisgKiBqc0R1bXAKKyAq
IENvcHlyaWdodCAoYykgMjAwOCBBcmllbCBGbGVzbGVyIC0gYWZsZXNsZXIoYXQpZ21haWwoZG90
KWNvbSB8IGh0dHA6Ly9mbGVzbGVyLmJsb2dzcG90LmNvbQorICogTGljZW5zZWQgdW5kZXIgQlNE
IChodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCkKKyAq
IERhdGU6IDUvMTUvMjAwOAorICogQHByb2plY3REZXNjcmlwdGlvbiBBZHZhbmNlZCBhbmQgZXh0
ZW5zaWJsZSBkYXRhIGR1bXBpbmcgZm9yIEphdmFzY3JpcHQuCisgKiBAdmVyc2lvbiAxLjAuMAor
ICogQGF1dGhvciBBcmllbCBGbGVzbGVyCisgKiBAbGluayB7aHR0cDovL2ZsZXNsZXIuYmxvZ3Nw
b3QuY29tLzIwMDgvMDUvanNkdW1wLXByZXR0eS1kdW1wLW9mLWFueS1qYXZhc2NyaXB0Lmh0bWx9
CisgKi8KK1FVbml0LmpzRHVtcCA9IChmdW5jdGlvbigpIHsKKwlmdW5jdGlvbiBxdW90ZSggc3Ry
ICkgeworCQlyZXR1cm4gJyInICsgc3RyLnRvU3RyaW5nKCkucmVwbGFjZSgvIi9nLCAnXFwiJykg
KyAnIic7CisJfTsKKwlmdW5jdGlvbiBsaXRlcmFsKCBvICkgeworCQlyZXR1cm4gbyArICcnOwor
CX07CisJZnVuY3Rpb24gam9pbiggcHJlLCBhcnIsIHBvc3QgKSB7CisJCXZhciBzID0ganNEdW1w
LnNlcGFyYXRvcigpLAorCQkJYmFzZSA9IGpzRHVtcC5pbmRlbnQoKSwKKwkJCWlubmVyID0ganNE
dW1wLmluZGVudCgxKTsKKwkJaWYgKCBhcnIuam9pbiApCisJCQlhcnIgPSBhcnIuam9pbiggJywn
ICsgcyArIGlubmVyICk7CisJCWlmICggIWFyciApCisJCQlyZXR1cm4gcHJlICsgcG9zdDsKKwkJ
cmV0dXJuIFsgcHJlLCBpbm5lciArIGFyciwgYmFzZSArIHBvc3QgXS5qb2luKHMpOworCX07CisJ
ZnVuY3Rpb24gYXJyYXkoIGFyciApIHsKKwkJdmFyIGkgPSBhcnIubGVuZ3RoLAlyZXQgPSBBcnJh
eShpKTsKKwkJdGhpcy51cCgpOworCQl3aGlsZSAoIGktLSApCisJCQlyZXRbaV0gPSB0aGlzLnBh
cnNlKCBhcnJbaV0gKTsKKwkJdGhpcy5kb3duKCk7CisJCXJldHVybiBqb2luKCAnWycsIHJldCwg
J10nICk7CisJfTsKKworCXZhciByZU5hbWUgPSAvXmZ1bmN0aW9uIChcdyspLzsKKworCXZhciBq
c0R1bXAgPSB7CisJCXBhcnNlOmZ1bmN0aW9uKCBvYmosIHR5cGUgKSB7IC8vdHlwZSBpcyB1c2Vk
IG1vc3RseSBpbnRlcm5hbGx5LCB5b3UgY2FuIGZpeCBhIChjdXN0b20pdHlwZSBpbiBhZHZhbmNl
CisJCQl2YXIJcGFyc2VyID0gdGhpcy5wYXJzZXJzWyB0eXBlIHx8IHRoaXMudHlwZU9mKG9iaikg
XTsKKwkJCXR5cGUgPSB0eXBlb2YgcGFyc2VyOworCisJCQlyZXR1cm4gdHlwZSA9PSAnZnVuY3Rp
b24nID8gcGFyc2VyLmNhbGwoIHRoaXMsIG9iaiApIDoKKwkJCQkgICB0eXBlID09ICdzdHJpbmcn
ID8gcGFyc2VyIDoKKwkJCQkgICB0aGlzLnBhcnNlcnMuZXJyb3I7CisJCX0sCisJCXR5cGVPZjpm
dW5jdGlvbiggb2JqICkgeworCQkJdmFyIHR5cGU7CisJCQlpZiAoIG9iaiA9PT0gbnVsbCApIHsK
KwkJCQl0eXBlID0gIm51bGwiOworCQkJfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAidW5kZWZp
bmVkIikgeworCQkJCXR5cGUgPSAidW5kZWZpbmVkIjsKKwkJCX0gZWxzZSBpZiAoUVVuaXQuaXMo
IlJlZ0V4cCIsIG9iaikpIHsKKwkJCQl0eXBlID0gInJlZ2V4cCI7CisJCQl9IGVsc2UgaWYgKFFV
bml0LmlzKCJEYXRlIiwgb2JqKSkgeworCQkJCXR5cGUgPSAiZGF0ZSI7CisJCQl9IGVsc2UgaWYg
KFFVbml0LmlzKCJGdW5jdGlvbiIsIG9iaikpIHsKKwkJCQl0eXBlID0gImZ1bmN0aW9uIjsKKwkJ
CX0gZWxzZSBpZiAodHlwZW9mIG9iai5zZXRJbnRlcnZhbCAhPT0gdW5kZWZpbmVkICYmIHR5cGVv
ZiBvYmouZG9jdW1lbnQgIT09ICJ1bmRlZmluZWQiICYmIHR5cGVvZiBvYmoubm9kZVR5cGUgPT09
ICJ1bmRlZmluZWQiKSB7CisJCQkJdHlwZSA9ICJ3aW5kb3ciOworCQkJfSBlbHNlIGlmIChvYmou
bm9kZVR5cGUgPT09IDkpIHsKKwkJCQl0eXBlID0gImRvY3VtZW50IjsKKwkJCX0gZWxzZSBpZiAo
b2JqLm5vZGVUeXBlKSB7CisJCQkJdHlwZSA9ICJub2RlIjsKKwkJCX0gZWxzZSBpZiAodHlwZW9m
IG9iaiA9PT0gIm9iamVjdCIgJiYgdHlwZW9mIG9iai5sZW5ndGggPT09ICJudW1iZXIiICYmIG9i
ai5sZW5ndGggPj0gMCkgeworCQkJCXR5cGUgPSAiYXJyYXkiOworCQkJfSBlbHNlIHsKKwkJCQl0
eXBlID0gdHlwZW9mIG9iajsKKwkJCX0KKwkJCXJldHVybiB0eXBlOworCQl9LAorCQlzZXBhcmF0
b3I6ZnVuY3Rpb24oKSB7CisJCQlyZXR1cm4gdGhpcy5tdWx0aWxpbmUgPwl0aGlzLkhUTUwgPyAn
PGJyIC8+JyA6ICdcbicgOiB0aGlzLkhUTUwgPyAnJm5ic3A7JyA6ICcgJzsKKwkJfSwKKwkJaW5k
ZW50OmZ1bmN0aW9uKCBleHRyYSApIHsvLyBleHRyYSBjYW4gYmUgYSBudW1iZXIsIHNob3J0Y3V0
IGZvciBpbmNyZWFzaW5nLWNhbGxpbmctZGVjcmVhc2luZworCQkJaWYgKCAhdGhpcy5tdWx0aWxp
bmUgKQorCQkJCXJldHVybiAnJzsKKwkJCXZhciBjaHIgPSB0aGlzLmluZGVudENoYXI7CisJCQlp
ZiAoIHRoaXMuSFRNTCApCisJCQkJY2hyID0gY2hyLnJlcGxhY2UoL1x0L2csJyAgICcpLnJlcGxh
Y2UoLyAvZywnJm5ic3A7Jyk7CisJCQlyZXR1cm4gQXJyYXkoIHRoaXMuX2RlcHRoXyArIChleHRy
YXx8MCkgKS5qb2luKGNocik7CisJCX0sCisJCXVwOmZ1bmN0aW9uKCBhICkgeworCQkJdGhpcy5f
ZGVwdGhfICs9IGEgfHwgMTsKKwkJfSwKKwkJZG93bjpmdW5jdGlvbiggYSApIHsKKwkJCXRoaXMu
X2RlcHRoXyAtPSBhIHx8IDE7CisJCX0sCisJCXNldFBhcnNlcjpmdW5jdGlvbiggbmFtZSwgcGFy
c2VyICkgeworCQkJdGhpcy5wYXJzZXJzW25hbWVdID0gcGFyc2VyOworCQl9LAorCQkvLyBUaGUg
bmV4dCAzIGFyZSBleHBvc2VkIHNvIHlvdSBjYW4gdXNlIHRoZW0KKwkJcXVvdGU6cXVvdGUsCisJ
CWxpdGVyYWw6bGl0ZXJhbCwKKwkJam9pbjpqb2luLAorCQkvLworCQlfZGVwdGhfOiAxLAorCQkv
LyBUaGlzIGlzIHRoZSBsaXN0IG9mIHBhcnNlcnMsIHRvIG1vZGlmeSB0aGVtLCB1c2UganNEdW1w
LnNldFBhcnNlcgorCQlwYXJzZXJzOnsKKwkJCXdpbmRvdzogJ1tXaW5kb3ddJywKKwkJCWRvY3Vt
ZW50OiAnW0RvY3VtZW50XScsCisJCQllcnJvcjonW0VSUk9SXScsIC8vd2hlbiBubyBwYXJzZXIg
aXMgZm91bmQsIHNob3VsZG4ndCBoYXBwZW4KKwkJCXVua25vd246ICdbVW5rbm93bl0nLAorCQkJ
J251bGwnOidudWxsJywKKwkJCSd1bmRlZmluZWQnOid1bmRlZmluZWQnLAorCQkJJ2Z1bmN0aW9u
JzpmdW5jdGlvbiggZm4gKSB7CisJCQkJdmFyIHJldCA9ICdmdW5jdGlvbicsCisJCQkJCW5hbWUg
PSAnbmFtZScgaW4gZm4gPyBmbi5uYW1lIDogKHJlTmFtZS5leGVjKGZuKXx8W10pWzFdOy8vZnVu
Y3Rpb25zIG5ldmVyIGhhdmUgbmFtZSBpbiBJRQorCQkJCWlmICggbmFtZSApCisJCQkJCXJldCAr
PSAnICcgKyBuYW1lOworCQkJCXJldCArPSAnKCc7CisKKwkJCQlyZXQgPSBbIHJldCwgUVVuaXQu
anNEdW1wLnBhcnNlKCBmbiwgJ2Z1bmN0aW9uQXJncycgKSwgJyl7J10uam9pbignJyk7CisJCQkJ
cmV0dXJuIGpvaW4oIHJldCwgUVVuaXQuanNEdW1wLnBhcnNlKGZuLCdmdW5jdGlvbkNvZGUnKSwg
J30nICk7CisJCQl9LAorCQkJYXJyYXk6IGFycmF5LAorCQkJbm9kZWxpc3Q6IGFycmF5LAorCQkJ
YXJndW1lbnRzOiBhcnJheSwKKwkJCW9iamVjdDpmdW5jdGlvbiggbWFwICkgeworCQkJCXZhciBy
ZXQgPSBbIF07CisJCQkJUVVuaXQuanNEdW1wLnVwKCk7CisJCQkJZm9yICggdmFyIGtleSBpbiBt
YXAgKQorCQkJCQlyZXQucHVzaCggUVVuaXQuanNEdW1wLnBhcnNlKGtleSwna2V5JykgKyAnOiAn
ICsgUVVuaXQuanNEdW1wLnBhcnNlKG1hcFtrZXldKSApOworCQkJCVFVbml0LmpzRHVtcC5kb3du
KCk7CisJCQkJcmV0dXJuIGpvaW4oICd7JywgcmV0LCAnfScgKTsKKwkJCX0sCisJCQlub2RlOmZ1
bmN0aW9uKCBub2RlICkgeworCQkJCXZhciBvcGVuID0gUVVuaXQuanNEdW1wLkhUTUwgPyAnJmx0
OycgOiAnPCcsCisJCQkJCWNsb3NlID0gUVVuaXQuanNEdW1wLkhUTUwgPyAnJmd0OycgOiAnPic7
CisKKwkJCQl2YXIgdGFnID0gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLAorCQkJCQlyZXQg
PSBvcGVuICsgdGFnOworCisJCQkJZm9yICggdmFyIGEgaW4gUVVuaXQuanNEdW1wLkRPTUF0dHJz
ICkgeworCQkJCQl2YXIgdmFsID0gbm9kZVtRVW5pdC5qc0R1bXAuRE9NQXR0cnNbYV1dOworCQkJ
CQlpZiAoIHZhbCApCisJCQkJCQlyZXQgKz0gJyAnICsgYSArICc9JyArIFFVbml0LmpzRHVtcC5w
YXJzZSggdmFsLCAnYXR0cmlidXRlJyApOworCQkJCX0KKwkJCQlyZXR1cm4gcmV0ICsgY2xvc2Ug
KyBvcGVuICsgJy8nICsgdGFnICsgY2xvc2U7CisJCQl9LAorCQkJZnVuY3Rpb25BcmdzOmZ1bmN0
aW9uKCBmbiApIHsvL2Z1bmN0aW9uIGNhbGxzIGl0IGludGVybmFsbHksIGl0J3MgdGhlIGFyZ3Vt
ZW50cyBwYXJ0IG9mIHRoZSBmdW5jdGlvbgorCQkJCXZhciBsID0gZm4ubGVuZ3RoOworCQkJCWlm
ICggIWwgKSByZXR1cm4gJyc7CisKKwkJCQl2YXIgYXJncyA9IEFycmF5KGwpOworCQkJCXdoaWxl
ICggbC0tICkKKwkJCQkJYXJnc1tsXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoOTcrbCk7Ly85NyBp
cyAnYScKKwkJCQlyZXR1cm4gJyAnICsgYXJncy5qb2luKCcsICcpICsgJyAnOworCQkJfSwKKwkJ
CWtleTpxdW90ZSwgLy9vYmplY3QgY2FsbHMgaXQgaW50ZXJuYWxseSwgdGhlIGtleSBwYXJ0IG9m
IGFuIGl0ZW0gaW4gYSBtYXAKKwkJCWZ1bmN0aW9uQ29kZTonW2NvZGVdJywgLy9mdW5jdGlvbiBj
YWxscyBpdCBpbnRlcm5hbGx5LCBpdCdzIHRoZSBjb250ZW50IG9mIHRoZSBmdW5jdGlvbgorCQkJ
YXR0cmlidXRlOnF1b3RlLCAvL25vZGUgY2FsbHMgaXQgaW50ZXJuYWxseSwgaXQncyBhbiBodG1s
IGF0dHJpYnV0ZSB2YWx1ZQorCQkJc3RyaW5nOnF1b3RlLAorCQkJZGF0ZTpxdW90ZSwKKwkJCXJl
Z2V4cDpsaXRlcmFsLCAvL3JlZ2V4CisJCQludW1iZXI6bGl0ZXJhbCwKKwkJCSdib29sZWFuJzps
aXRlcmFsCisJCX0sCisJCURPTUF0dHJzOnsvL2F0dHJpYnV0ZXMgdG8gZHVtcCBmcm9tIG5vZGVz
LCBuYW1lPT5yZWFsTmFtZQorCQkJaWQ6J2lkJywKKwkJCW5hbWU6J25hbWUnLAorCQkJJ2NsYXNz
JzonY2xhc3NOYW1lJworCQl9LAorCQlIVE1MOmZhbHNlLC8vaWYgdHJ1ZSwgZW50aXRpZXMgYXJl
IGVzY2FwZWQgKCA8LCA+LCBcdCwgc3BhY2UgYW5kIFxuICkKKwkJaW5kZW50Q2hhcjonICAnLC8v
aW5kZW50YXRpb24gdW5pdAorCQltdWx0aWxpbmU6dHJ1ZSAvL2lmIHRydWUsIGl0ZW1zIGluIGEg
Y29sbGVjdGlvbiwgYXJlIHNlcGFyYXRlZCBieSBhIFxuLCBlbHNlIGp1c3QgYSBzcGFjZS4KKwl9
OworCisJcmV0dXJuIGpzRHVtcDsKK30pKCk7CisKKy8vIGZyb20gU2l6emxlLmpzCitmdW5jdGlv
biBnZXRUZXh0KCBlbGVtcyApIHsKKwl2YXIgcmV0ID0gIiIsIGVsZW07CisKKwlmb3IgKCB2YXIg
aSA9IDA7IGVsZW1zW2ldOyBpKysgKSB7CisJCWVsZW0gPSBlbGVtc1tpXTsKKworCQkvLyBHZXQg
dGhlIHRleHQgZnJvbSB0ZXh0IG5vZGVzIGFuZCBDREFUQSBub2RlcworCQlpZiAoIGVsZW0ubm9k
ZVR5cGUgPT09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PT0gNCApIHsKKwkJCXJldCArPSBlbGVtLm5v
ZGVWYWx1ZTsKKworCQkvLyBUcmF2ZXJzZSBldmVyeXRoaW5nIGVsc2UsIGV4Y2VwdCBjb21tZW50
IG5vZGVzCisJCX0gZWxzZSBpZiAoIGVsZW0ubm9kZVR5cGUgIT09IDggKSB7CisJCQlyZXQgKz0g
Z2V0VGV4dCggZWxlbS5jaGlsZE5vZGVzICk7CisJCX0KKwl9CisKKwlyZXR1cm4gcmV0OworfTsK
KworLyoKKyAqIEphdmFzY3JpcHQgRGlmZiBBbGdvcml0aG0KKyAqICBCeSBKb2huIFJlc2lnICho
dHRwOi8vZWpvaG4ub3JnLykKKyAqICBNb2RpZmllZCBieSBDaHUgQWxhbiAic3ByaXRlIgorICoK
KyAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KKyAqCisgKiBNb3JlIEluZm86Cisg
KiAgaHR0cDovL2Vqb2huLm9yZy9wcm9qZWN0cy9qYXZhc2NyaXB0LWRpZmYtYWxnb3JpdGhtLwor
ICoKKyAqIFVzYWdlOiBRVW5pdC5kaWZmKGV4cGVjdGVkLCBhY3R1YWwpCisgKgorICogUVVuaXQu
ZGlmZigidGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciIsICJ0aGUgcXVpY2sgZm94IGp1
bXBzIG92ZXIiKSA9PSAidGhlICBxdWljayA8ZGVsPmJyb3duIDwvZGVsPiBmb3ggPGRlbD5qdW1w
ZWQgPC9kZWw+PGlucz5qdW1wcyA8L2lucz4gb3ZlciIKKyAqLworUVVuaXQuZGlmZiA9IChmdW5j
dGlvbigpIHsKKwlmdW5jdGlvbiBkaWZmKG8sIG4peworCQl2YXIgbnMgPSBuZXcgT2JqZWN0KCk7
CisJCXZhciBvcyA9IG5ldyBPYmplY3QoKTsKKworCQlmb3IgKHZhciBpID0gMDsgaSA8IG4ubGVu
Z3RoOyBpKyspIHsKKwkJCWlmIChuc1tuW2ldXSA9PSBudWxsKQorCQkJCW5zW25baV1dID0gewor
CQkJCQlyb3dzOiBuZXcgQXJyYXkoKSwKKwkJCQkJbzogbnVsbAorCQkJCX07CisJCQluc1tuW2ld
XS5yb3dzLnB1c2goaSk7CisJCX0KKworCQlmb3IgKHZhciBpID0gMDsgaSA8IG8ubGVuZ3RoOyBp
KyspIHsKKwkJCWlmIChvc1tvW2ldXSA9PSBudWxsKQorCQkJCW9zW29baV1dID0geworCQkJCQly
b3dzOiBuZXcgQXJyYXkoKSwKKwkJCQkJbjogbnVsbAorCQkJCX07CisJCQlvc1tvW2ldXS5yb3dz
LnB1c2goaSk7CisJCX0KKworCQlmb3IgKHZhciBpIGluIG5zKSB7CisJCQlpZiAobnNbaV0ucm93
cy5sZW5ndGggPT0gMSAmJiB0eXBlb2Yob3NbaV0pICE9ICJ1bmRlZmluZWQiICYmIG9zW2ldLnJv
d3MubGVuZ3RoID09IDEpIHsKKwkJCQluW25zW2ldLnJvd3NbMF1dID0geworCQkJCQl0ZXh0OiBu
W25zW2ldLnJvd3NbMF1dLAorCQkJCQlyb3c6IG9zW2ldLnJvd3NbMF0KKwkJCQl9OworCQkJCW9b
b3NbaV0ucm93c1swXV0gPSB7CisJCQkJCXRleHQ6IG9bb3NbaV0ucm93c1swXV0sCisJCQkJCXJv
dzogbnNbaV0ucm93c1swXQorCQkJCX07CisJCQl9CisJCX0KKworCQlmb3IgKHZhciBpID0gMDsg
aSA8IG4ubGVuZ3RoIC0gMTsgaSsrKSB7CisJCQlpZiAobltpXS50ZXh0ICE9IG51bGwgJiYgbltp
ICsgMV0udGV4dCA9PSBudWxsICYmIG5baV0ucm93ICsgMSA8IG8ubGVuZ3RoICYmIG9bbltpXS5y
b3cgKyAxXS50ZXh0ID09IG51bGwgJiYKKwkJCW5baSArIDFdID09IG9bbltpXS5yb3cgKyAxXSkg
eworCQkJCW5baSArIDFdID0geworCQkJCQl0ZXh0OiBuW2kgKyAxXSwKKwkJCQkJcm93OiBuW2ld
LnJvdyArIDEKKwkJCQl9OworCQkJCW9bbltpXS5yb3cgKyAxXSA9IHsKKwkJCQkJdGV4dDogb1tu
W2ldLnJvdyArIDFdLAorCQkJCQlyb3c6IGkgKyAxCisJCQkJfTsKKwkJCX0KKwkJfQorCisJCWZv
ciAodmFyIGkgPSBuLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHsKKwkJCWlmIChuW2ldLnRleHQg
IT0gbnVsbCAmJiBuW2kgLSAxXS50ZXh0ID09IG51bGwgJiYgbltpXS5yb3cgPiAwICYmIG9bbltp
XS5yb3cgLSAxXS50ZXh0ID09IG51bGwgJiYKKwkJCW5baSAtIDFdID09IG9bbltpXS5yb3cgLSAx
XSkgeworCQkJCW5baSAtIDFdID0geworCQkJCQl0ZXh0OiBuW2kgLSAxXSwKKwkJCQkJcm93OiBu
W2ldLnJvdyAtIDEKKwkJCQl9OworCQkJCW9bbltpXS5yb3cgLSAxXSA9IHsKKwkJCQkJdGV4dDog
b1tuW2ldLnJvdyAtIDFdLAorCQkJCQlyb3c6IGkgLSAxCisJCQkJfTsKKwkJCX0KKwkJfQorCisJ
CXJldHVybiB7CisJCQlvOiBvLAorCQkJbjogbgorCQl9OworCX0KKworCXJldHVybiBmdW5jdGlv
bihvLCBuKXsKKwkJbyA9IG8ucmVwbGFjZSgvXHMrJC8sICcnKTsKKwkJbiA9IG4ucmVwbGFjZSgv
XHMrJC8sICcnKTsKKwkJdmFyIG91dCA9IGRpZmYobyA9PSAiIiA/IFtdIDogby5zcGxpdCgvXHMr
LyksIG4gPT0gIiIgPyBbXSA6IG4uc3BsaXQoL1xzKy8pKTsKKworCQl2YXIgc3RyID0gIiI7CisK
KwkJdmFyIG9TcGFjZSA9IG8ubWF0Y2goL1xzKy9nKTsKKwkJaWYgKG9TcGFjZSA9PSBudWxsKSB7
CisJCQlvU3BhY2UgPSBbIiAiXTsKKwkJfQorCQllbHNlIHsKKwkJCW9TcGFjZS5wdXNoKCIgIik7
CisJCX0KKwkJdmFyIG5TcGFjZSA9IG4ubWF0Y2goL1xzKy9nKTsKKwkJaWYgKG5TcGFjZSA9PSBu
dWxsKSB7CisJCQluU3BhY2UgPSBbIiAiXTsKKwkJfQorCQllbHNlIHsKKwkJCW5TcGFjZS5wdXNo
KCIgIik7CisJCX0KKworCQlpZiAob3V0Lm4ubGVuZ3RoID09IDApIHsKKwkJCWZvciAodmFyIGkg
PSAwOyBpIDwgb3V0Lm8ubGVuZ3RoOyBpKyspIHsKKwkJCQlzdHIgKz0gJzxkZWw+JyArIG91dC5v
W2ldICsgb1NwYWNlW2ldICsgIjwvZGVsPiI7CisJCQl9CisJCX0KKwkJZWxzZSB7CisJCQlpZiAo
b3V0Lm5bMF0udGV4dCA9PSBudWxsKSB7CisJCQkJZm9yIChuID0gMDsgbiA8IG91dC5vLmxlbmd0
aCAmJiBvdXQub1tuXS50ZXh0ID09IG51bGw7IG4rKykgeworCQkJCQlzdHIgKz0gJzxkZWw+JyAr
IG91dC5vW25dICsgb1NwYWNlW25dICsgIjwvZGVsPiI7CisJCQkJfQorCQkJfQorCisJCQlmb3Ig
KHZhciBpID0gMDsgaSA8IG91dC5uLmxlbmd0aDsgaSsrKSB7CisJCQkJaWYgKG91dC5uW2ldLnRl
eHQgPT0gbnVsbCkgeworCQkJCQlzdHIgKz0gJzxpbnM+JyArIG91dC5uW2ldICsgblNwYWNlW2ld
ICsgIjwvaW5zPiI7CisJCQkJfQorCQkJCWVsc2UgeworCQkJCQl2YXIgcHJlID0gIiI7CisKKwkJ
CQkJZm9yIChuID0gb3V0Lm5baV0ucm93ICsgMTsgbiA8IG91dC5vLmxlbmd0aCAmJiBvdXQub1tu
XS50ZXh0ID09IG51bGw7IG4rKykgeworCQkJCQkJcHJlICs9ICc8ZGVsPicgKyBvdXQub1tuXSAr
IG9TcGFjZVtuXSArICI8L2RlbD4iOworCQkJCQl9CisJCQkJCXN0ciArPSAiICIgKyBvdXQubltp
XS50ZXh0ICsgblNwYWNlW2ldICsgcHJlOworCQkJCX0KKwkJCX0KKwkJfQorCisJCXJldHVybiBz
dHI7CisJfTsKK30pKCk7CisKK30pKHRoaXMpOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvcXVu
aXQvdGVzdC9oZWFkbGVzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L3F1
bml0L3Rlc3QvaGVhZGxlc3MuaHRtbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5
L3F1bml0L3Rlc3QvaGVhZGxlc3MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorCTx0aXRsZT5RVW5pdCBUZXN0IFN1aXRl
PC90aXRsZT4KKwk8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3F1bml0L3F1bml0LmNz
cyIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorCTxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9Ii4uL3F1bml0L3F1bml0LmpzIj48L3NjcmlwdD4KKwk8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0ZXN0LmpzIj48L3NjcmlwdD4KKwk8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzYW1lLmpzIj48L3NjcmlwdD4KKwk8c2NyaXB0Pgor
CQl2YXIgbG9ncyA9IFsiYmVnaW4iLCAidGVzdFN0YXJ0IiwgInRlc3REb25lIiwgImxvZyIsICJt
b2R1bGVTdGFydCIsICJtb2R1bGVEb25lIiwgImRvbmUiXTsKKwkJZm9yICh2YXIgaSA9IDA7IGkg
PCBsb2dzLmxlbmd0aDsgaSsrKSB7CisJCQkoZnVuY3Rpb24oKSB7CisJCQkJdmFyIGxvZyA9IGxv
Z3NbaV07CisJCQkJUVVuaXRbbG9nXSA9IGZ1bmN0aW9uKCkgeworCQkJCQljb25zb2xlLmxvZyhs
b2csIGFyZ3VtZW50cyk7CisJCQkJfTsKKwkJCX0pKCk7CisJCX0KKwk8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorCTxkaXYgaWQ9InF1bml0LWZpeHR1cmUiPnRlc3QgbWFya3VwPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC90ZXN0L2luZGV4
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvcXVuaXQvdGVzdC9pbmRleC5o
dG1sCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvcXVuaXQvdGVzdC9pbmRleC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisJPG1ldGEgY2hhcnNldD0iVVRGLTgiIC8+CisJPHRpdGxlPlFVbml0IFRlc3Qg
U3VpdGU8L3RpdGxlPgorCTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vcXVuaXQvcXVu
aXQuY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisJPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vcXVuaXQvcXVuaXQuanMiPjwvc2NyaXB0PgorCTxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InRlc3QuanMiPjwvc2NyaXB0PgorCTxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNhbWUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+CisJPGgxIGlkPSJxdW5pdC1oZWFkZXIiPlFVbml0IFRlc3QgU3VpdGU8L2gxPgor
CTxoMiBpZD0icXVuaXQtYmFubmVyIj48L2gyPgorCTxkaXYgaWQ9InF1bml0LXRlc3RydW5uZXIt
dG9vbGJhciI+PC9kaXY+CisJPGgyIGlkPSJxdW5pdC11c2VyQWdlbnQiPjwvaDI+CisJPG9sIGlk
PSJxdW5pdC10ZXN0cyI+PC9vbD4KKwk8ZGl2IGlkPSJxdW5pdC1maXh0dXJlIj50ZXN0IG1hcmt1
cDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogU291cmNlL1RoaXJkUGFydHkvcXVuaXQv
dGVzdC9sb2dzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvcXVuaXQvdGVz
dC9sb2dzLmh0bWwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC90ZXN0
L2xvZ3MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorCTx0aXRsZT5RVW5pdCBUZXN0IFN1aXRlPC90aXRsZT4KKwk8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL3F1bml0L3F1bml0LmNzcyIgdHlwZT0idGV4dC9j
c3MiIG1lZGlhPSJzY3JlZW4iPgorCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
Ii4uL3F1bml0L3F1bml0LmpzIj48L3NjcmlwdD4KKwk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJsb2dzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorCTxoMSBpZD0i
cXVuaXQtaGVhZGVyIj5RVW5pdCBUZXN0IFN1aXRlPC9oMT4KKwk8aDIgaWQ9InF1bml0LWJhbm5l
ciI+PC9oMj4KKwk8ZGl2IGlkPSJxdW5pdC10ZXN0cnVubmVyLXRvb2xiYXIiPjwvZGl2PgorCTxo
MiBpZD0icXVuaXQtdXNlckFnZW50Ij48L2gyPgorCTxvbCBpZD0icXVuaXQtdGVzdHMiPjwvb2w+
CisJPGRpdiBpZD0icXVuaXQtZml4dHVyZSI+dGVzdCBtYXJrdXA8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L3F1bml0L3Rlc3QvbG9ncy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC90ZXN0L2xvZ3MuanMJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC90ZXN0L2xvZ3MuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTUwIEBACisvLyBUT0RPIGRpc2FibGUgcmVvcmRlcmluZyBmb3IgdGhpcyBzdWl0
ZSEKKworCit2YXIgYmVnaW4gPSAwLAorCW1vZHVsZVN0YXJ0ID0gMCwKKwltb2R1bGVEb25lID0g
MCwKKwl0ZXN0U3RhcnQgPSAwLAorCXRlc3REb25lID0gMCwKKwlsb2cgPSAwLAorCW1vZHVsZUNv
bnRleHQsCisJbW9kdWxlRG9uZUNvbnRleHQsCisJdGVzdENvbnRleHQsCisJdGVzdERvbmVDb250
ZXh0LAorCWxvZ0NvbnRleHQ7CisKK1FVbml0LmJlZ2luID0gZnVuY3Rpb24oKSB7CisJYmVnaW4r
KzsKK307CitRVW5pdC5kb25lID0gZnVuY3Rpb24oKSB7Cit9OworUVVuaXQubW9kdWxlU3RhcnQg
PSBmdW5jdGlvbihjb250ZXh0KSB7CisJbW9kdWxlU3RhcnQrKzsKKwltb2R1bGVDb250ZXh0ID0g
Y29udGV4dDsKK307CitRVW5pdC5tb2R1bGVEb25lID0gZnVuY3Rpb24oY29udGV4dCkgeworCW1v
ZHVsZURvbmUrKzsKKwltb2R1bGVEb25lQ29udGV4dCA9IGNvbnRleHQ7Cit9OworUVVuaXQudGVz
dFN0YXJ0ID0gZnVuY3Rpb24oY29udGV4dCkgeworCXRlc3RTdGFydCsrOworCXRlc3RDb250ZXh0
ID0gY29udGV4dDsKK307CitRVW5pdC50ZXN0RG9uZSA9IGZ1bmN0aW9uKGNvbnRleHQpIHsKKwl0
ZXN0RG9uZSsrOworCXRlc3REb25lQ29udGV4dCA9IGNvbnRleHQ7Cit9OworUVVuaXQubG9nID0g
ZnVuY3Rpb24oY29udGV4dCkgeworCWxvZysrOworCWxvZ0NvbnRleHQgPSBjb250ZXh0OworfTsK
KwordmFyIGxvZ3MgPSBbImJlZ2luIiwgInRlc3RTdGFydCIsICJ0ZXN0RG9uZSIsICJsb2ciLCAi
bW9kdWxlU3RhcnQiLCAibW9kdWxlRG9uZSIsICJkb25lIl07Citmb3IgKHZhciBpID0gMDsgaSA8
IGxvZ3MubGVuZ3RoOyBpKyspIHsKKwkoZnVuY3Rpb24oKSB7CisJCXZhciBsb2cgPSBsb2dzW2ld
LAorCQkJbG9nZ2VyID0gUVVuaXRbbG9nXTsKKwkJUVVuaXRbbG9nXSA9IGZ1bmN0aW9uKCkgewor
CQkJY29uc29sZS5sb2cobG9nLCBhcmd1bWVudHMpOworCQkJbG9nZ2VyLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7CisJCX07CisJfSkoKTsKK30KKworbW9kdWxlKCJsb2dzMSIpOworCit0ZXN0KCJ0
ZXN0MSIsIDEzLCBmdW5jdGlvbigpIHsKKwllcXVhbChiZWdpbiwgMSk7CisJZXF1YWwobW9kdWxl
U3RhcnQsIDEpOworCWVxdWFsKHRlc3RTdGFydCwgMSk7CisJZXF1YWwodGVzdERvbmUsIDApOwor
CWVxdWFsKG1vZHVsZURvbmUsIDApOworCisJZGVlcEVxdWFsKGxvZ0NvbnRleHQsIHsKKwkJcmVz
dWx0OiB0cnVlLAorCQltZXNzYWdlOiB1bmRlZmluZWQsCisJCWFjdHVhbDogMCwKKwkJZXhwZWN0
ZWQ6IDAKKwl9KTsKKwllcXVhbCgiZm9vIiwgImZvbyIsICJtc2ciKTsKKwlkZWVwRXF1YWwobG9n
Q29udGV4dCwgeworCQlyZXN1bHQ6IHRydWUsCisJCW1lc3NhZ2U6ICJtc2ciLAorCQlhY3R1YWw6
ICJmb28iLAorCQlleHBlY3RlZDogImZvbyIKKwl9KTsKKwlzdHJpY3RFcXVhbCh0ZXN0RG9uZUNv
bnRleHQsIHVuZGVmaW5lZCk7CisJZGVlcEVxdWFsKHRlc3RDb250ZXh0LCB7CisJCW5hbWU6ICJ0
ZXN0MSIKKwl9KTsKKwlzdHJpY3RFcXVhbChtb2R1bGVEb25lQ29udGV4dCwgdW5kZWZpbmVkKTsK
KwlkZWVwRXF1YWwobW9kdWxlQ29udGV4dCwgeworCQluYW1lOiAibG9nczEiCisJfSk7CisKKwll
cXVhbChsb2csIDEyKTsKK30pOwordGVzdCgidGVzdDIiLCAxMCwgZnVuY3Rpb24oKSB7CisJZXF1
YWwoYmVnaW4sIDEpOworCWVxdWFsKG1vZHVsZVN0YXJ0LCAxKTsKKwllcXVhbCh0ZXN0U3RhcnQs
IDIpOworCWVxdWFsKHRlc3REb25lLCAxKTsKKwllcXVhbChtb2R1bGVEb25lLCAwKTsKKworCWRl
ZXBFcXVhbCh0ZXN0RG9uZUNvbnRleHQsIHsKKwkJbmFtZTogInRlc3QxIiwKKwkJZmFpbGVkOiAw
LAorCQlwYXNzZWQ6IDEzLAorCQl0b3RhbDogMTMKKwl9KTsKKwlkZWVwRXF1YWwodGVzdENvbnRl
eHQsIHsKKwkJbmFtZTogInRlc3QyIgorCX0pOworCXN0cmljdEVxdWFsKG1vZHVsZURvbmVDb250
ZXh0LCB1bmRlZmluZWQpOworCWRlZXBFcXVhbChtb2R1bGVDb250ZXh0LCB7CisJCW5hbWU6ICJs
b2dzMSIKKwl9KTsKKworCWVxdWFsKGxvZywgMjIpOworfSk7CisKK21vZHVsZSgibG9nczIiKTsK
KwordGVzdCgidGVzdDEiLCA5LCBmdW5jdGlvbigpIHsKKwllcXVhbChiZWdpbiwgMSk7CisJZXF1
YWwobW9kdWxlU3RhcnQsIDIpOworCWVxdWFsKHRlc3RTdGFydCwgMyk7CisJZXF1YWwodGVzdERv
bmUsIDIpOworCWVxdWFsKG1vZHVsZURvbmUsIDEpOworCisJZGVlcEVxdWFsKHRlc3RDb250ZXh0
LCB7CisJCW5hbWU6ICJ0ZXN0MSIKKwl9KTsKKwlkZWVwRXF1YWwobW9kdWxlRG9uZUNvbnRleHQs
IHsKKwkJbmFtZTogImxvZ3MxIiwKKwkJZmFpbGVkOiAwLAorCQlwYXNzZWQ6IDIzLAorCQl0b3Rh
bDogMjMKKwl9KTsKKwlkZWVwRXF1YWwobW9kdWxlQ29udGV4dCwgeworCQluYW1lOiAibG9nczIi
CisJfSk7CisKKwllcXVhbChsb2csIDMxKTsKK30pOwordGVzdCgidGVzdDIiLCA4LCBmdW5jdGlv
bigpIHsKKwllcXVhbChiZWdpbiwgMSk7CisJZXF1YWwobW9kdWxlU3RhcnQsIDIpOworCWVxdWFs
KHRlc3RTdGFydCwgNCk7CisJZXF1YWwodGVzdERvbmUsIDMpOworCWVxdWFsKG1vZHVsZURvbmUs
IDEpOworCisJZGVlcEVxdWFsKHRlc3RDb250ZXh0LCB7CisJCW5hbWU6ICJ0ZXN0MiIKKwl9KTsK
KwlkZWVwRXF1YWwobW9kdWxlQ29udGV4dCwgeworCQluYW1lOiAibG9nczIiCisJfSk7CisKKwll
cXVhbChsb2csIDM5KTsKK30pOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvcXVuaXQvdGVzdC9z
YW1lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L3F1bml0L3Rlc3Qvc2FtZS5q
cwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L3F1bml0L3Rlc3Qvc2FtZS5qcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDIxIEBACittb2R1bGUoImVxdWl2Iik7CisKKwordGVz
dCgiUHJpbWl0aXZlIHR5cGVzIGFuZCBjb25zdGFudHMiLCBmdW5jdGlvbiAoKSB7CisgICAgZXF1
YWxzKFFVbml0LmVxdWl2KG51bGwsIG51bGwpLCB0cnVlLCAibnVsbCIpOworICAgIGVxdWFscyhR
VW5pdC5lcXVpdihudWxsLCB7fSksIGZhbHNlLCAibnVsbCIpOworICAgIGVxdWFscyhRVW5pdC5l
cXVpdihudWxsLCB1bmRlZmluZWQpLCBmYWxzZSwgIm51bGwiKTsKKyAgICBlcXVhbHMoUVVuaXQu
ZXF1aXYobnVsbCwgMCksIGZhbHNlLCAibnVsbCIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihu
dWxsLCBmYWxzZSksIGZhbHNlLCAibnVsbCIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihudWxs
LCAnJyksIGZhbHNlLCAibnVsbCIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihudWxsLCBbXSks
IGZhbHNlLCAibnVsbCIpOworCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KHVuZGVmaW5lZCwgdW5k
ZWZpbmVkKSwgdHJ1ZSwgInVuZGVmaW5lZCIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdih1bmRl
ZmluZWQsIG51bGwpLCBmYWxzZSwgInVuZGVmaW5lZCIpOworICAgIGVxdWFscyhRVW5pdC5lcXVp
dih1bmRlZmluZWQsIDApLCBmYWxzZSwgInVuZGVmaW5lZCIpOworICAgIGVxdWFscyhRVW5pdC5l
cXVpdih1bmRlZmluZWQsIGZhbHNlKSwgZmFsc2UsICJ1bmRlZmluZWQiKTsKKyAgICBlcXVhbHMo
UVVuaXQuZXF1aXYodW5kZWZpbmVkLCB7fSksIGZhbHNlLCAidW5kZWZpbmVkIik7CisgICAgZXF1
YWxzKFFVbml0LmVxdWl2KHVuZGVmaW5lZCwgW10pLCBmYWxzZSwgInVuZGVmaW5lZCIpOworICAg
IGVxdWFscyhRVW5pdC5lcXVpdih1bmRlZmluZWQsICIiKSwgZmFsc2UsICJ1bmRlZmluZWQiKTsK
KworICAgIC8vIE5hbiB1c3VhbGx5IGRvZXN0IG5vdCBlcXVhbCB0byBOYW4gdXNpbmcgdGhlICc9
PScgb3BlcmF0b3IuCisgICAgLy8gT25seSBpc05hTigpIGlzIGFibGUgdG8gZG8gaXQuCisgICAg
ZXF1YWxzKFFVbml0LmVxdWl2KDAvMCwgMC8wKSwgdHJ1ZSwgIk5hTiIpOyAvLyBOYU4gVlMgTmFO
CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KDEvMCwgMi8wKSwgdHJ1ZSwgIkluZmluaXR5Iik7IC8v
IEluZmluaXR5IFZTIEluZmluaXR5CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KC0xLzAsIDIvMCks
IGZhbHNlLCAiLUluZmluaXR5LCBJbmZpbml0eSIpOyAvLyAtSW5maW5pdHkgVlMgSW5maW5pdHkK
KyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoLTEvMCwgLTIvMCksIHRydWUsICItSW5maW5pdHksIC1J
bmZpbml0eSIpOyAvLyAtSW5maW5pdHkgVlMgLUluZmluaXR5CisgICAgZXF1YWxzKFFVbml0LmVx
dWl2KDAvMCwgMS8wKSwgZmFsc2UsICJOYU4sIEluZmluaXR5Iik7IC8vIE5hbiBWUyBJbmZpbml0
eQorICAgIGVxdWFscyhRVW5pdC5lcXVpdigxLzAsIDAvMCksIGZhbHNlLCAiTmFOLCBJbmZpbml0
eSIpOyAvLyBOYW4gVlMgSW5maW5pdHkKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoMC8wLCBudWxs
KSwgZmFsc2UsICJOYU4iKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoMC8wLCB1bmRlZmluZWQp
LCBmYWxzZSwgIk5hTiIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdigwLzAsIDApLCBmYWxzZSwg
Ik5hTiIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdigwLzAsIGZhbHNlKSwgZmFsc2UsICJOYU4i
KTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoMC8wLCBmdW5jdGlvbiAoKSB7fSksIGZhbHNlLCAi
TmFOIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KDEvMCwgbnVsbCksIGZhbHNlLCAiTmFOLCBJ
bmZpbml0eSIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdigxLzAsIHVuZGVmaW5lZCksIGZhbHNl
LCAiTmFOLCBJbmZpbml0eSIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdigxLzAsIDApLCBmYWxz
ZSwgIk5hTiwgSW5maW5pdHkiKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoMS8wLCAxKSwgZmFs
c2UsICJOYU4sIEluZmluaXR5Iik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KDEvMCwgZmFsc2Up
LCBmYWxzZSwgIk5hTiwgSW5maW5pdHkiKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoMS8wLCB0
cnVlKSwgZmFsc2UsICJOYU4sIEluZmluaXR5Iik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KDEv
MCwgZnVuY3Rpb24gKCkge30pLCBmYWxzZSwgIk5hTiwgSW5maW5pdHkiKTsKKworICAgIGVxdWFs
cyhRVW5pdC5lcXVpdigwLCAwKSwgdHJ1ZSwgIm51bWJlciIpOworICAgIGVxdWFscyhRVW5pdC5l
cXVpdigwLCAxKSwgZmFsc2UsICJudW1iZXIiKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoMSwg
MCksIGZhbHNlLCAibnVtYmVyIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KDEsIDEpLCB0cnVl
LCAibnVtYmVyIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KDEuMSwgMS4xKSwgdHJ1ZSwgIm51
bWJlciIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdigwLjAwMDAwMDUsIDAuMDAwMDAwNSksIHRy
dWUsICJudW1iZXIiKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoMCwgJycpLCBmYWxzZSwgIm51
bWJlciIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdigwLCAnMCcpLCBmYWxzZSwgIm51bWJlciIp
OworICAgIGVxdWFscyhRVW5pdC5lcXVpdigxLCAnMScpLCBmYWxzZSwgIm51bWJlciIpOworICAg
IGVxdWFscyhRVW5pdC5lcXVpdigwLCBmYWxzZSksIGZhbHNlLCAibnVtYmVyIik7CisgICAgZXF1
YWxzKFFVbml0LmVxdWl2KDEsIHRydWUpLCBmYWxzZSwgIm51bWJlciIpOworCisgICAgZXF1YWxz
KFFVbml0LmVxdWl2KHRydWUsIHRydWUpLCB0cnVlLCAiYm9vbGVhbiIpOworICAgIGVxdWFscyhR
VW5pdC5lcXVpdih0cnVlLCBmYWxzZSksIGZhbHNlLCAiYm9vbGVhbiIpOworICAgIGVxdWFscyhR
VW5pdC5lcXVpdihmYWxzZSwgdHJ1ZSksIGZhbHNlLCAiYm9vbGVhbiIpOworICAgIGVxdWFscyhR
VW5pdC5lcXVpdihmYWxzZSwgMCksIGZhbHNlLCAiYm9vbGVhbiIpOworICAgIGVxdWFscyhRVW5p
dC5lcXVpdihmYWxzZSwgbnVsbCksIGZhbHNlLCAiYm9vbGVhbiIpOworICAgIGVxdWFscyhRVW5p
dC5lcXVpdihmYWxzZSwgdW5kZWZpbmVkKSwgZmFsc2UsICJib29sZWFuIik7CisgICAgZXF1YWxz
KFFVbml0LmVxdWl2KHRydWUsIDEpLCBmYWxzZSwgImJvb2xlYW4iKTsKKyAgICBlcXVhbHMoUVVu
aXQuZXF1aXYodHJ1ZSwgbnVsbCksIGZhbHNlLCAiYm9vbGVhbiIpOworICAgIGVxdWFscyhRVW5p
dC5lcXVpdih0cnVlLCB1bmRlZmluZWQpLCBmYWxzZSwgImJvb2xlYW4iKTsKKworICAgIGVxdWFs
cyhRVW5pdC5lcXVpdignJywgJycpLCB0cnVlLCAic3RyaW5nIik7CisgICAgZXF1YWxzKFFVbml0
LmVxdWl2KCdhJywgJ2EnKSwgdHJ1ZSwgInN0cmluZyIpOworICAgIGVxdWFscyhRVW5pdC5lcXVp
digiZm9vYmFyIiwgImZvb2JhciIpLCB0cnVlLCAic3RyaW5nIik7CisgICAgZXF1YWxzKFFVbml0
LmVxdWl2KCJmb29iYXIiLCAiZm9vIiksIGZhbHNlLCAic3RyaW5nIik7CisgICAgZXF1YWxzKFFV
bml0LmVxdWl2KCcnLCAwKSwgZmFsc2UsICJzdHJpbmciKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1
aXYoJycsIGZhbHNlKSwgZmFsc2UsICJzdHJpbmciKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYo
JycsIG51bGwpLCBmYWxzZSwgInN0cmluZyIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdignJywg
dW5kZWZpbmVkKSwgZmFsc2UsICJzdHJpbmciKTsKKworICAgIC8vIFNob3J0IGFubm90YXRpb24g
VlMgbmV3IGFubm90YXRpb24KKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoMCwgbmV3IE51bWJlcigp
KSwgdHJ1ZSwgInNob3J0IGFubm90YXRpb24gVlMgbmV3IGFubm90YXRpb24iKTsKKyAgICBlcXVh
bHMoUVVuaXQuZXF1aXYobmV3IE51bWJlcigpLCAwKSwgdHJ1ZSwgInNob3J0IGFubm90YXRpb24g
VlMgbmV3IGFubm90YXRpb24iKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoMSwgbmV3IE51bWJl
cigxKSksIHRydWUsICJzaG9ydCBhbm5vdGF0aW9uIFZTIG5ldyBhbm5vdGF0aW9uIik7CisgICAg
ZXF1YWxzKFFVbml0LmVxdWl2KG5ldyBOdW1iZXIoMSksIDEpLCB0cnVlLCAic2hvcnQgYW5ub3Rh
dGlvbiBWUyBuZXcgYW5ub3RhdGlvbiIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihuZXcgTnVt
YmVyKDApLCAxKSwgZmFsc2UsICJzaG9ydCBhbm5vdGF0aW9uIFZTIG5ldyBhbm5vdGF0aW9uIik7
CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KDAsIG5ldyBOdW1iZXIoMSkpLCBmYWxzZSwgInNob3J0
IGFubm90YXRpb24gVlMgbmV3IGFubm90YXRpb24iKTsKKworICAgIGVxdWFscyhRVW5pdC5lcXVp
dihuZXcgU3RyaW5nKCksICIiKSwgdHJ1ZSwgInNob3J0IGFubm90YXRpb24gVlMgbmV3IGFubm90
YXRpb24iKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoIiIsIG5ldyBTdHJpbmcoKSksIHRydWUs
ICJzaG9ydCBhbm5vdGF0aW9uIFZTIG5ldyBhbm5vdGF0aW9uIik7CisgICAgZXF1YWxzKFFVbml0
LmVxdWl2KG5ldyBTdHJpbmcoIk15IFN0cmluZyIpLCAiTXkgU3RyaW5nIiksIHRydWUsICJzaG9y
dCBhbm5vdGF0aW9uIFZTIG5ldyBhbm5vdGF0aW9uIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2
KCJNeSBTdHJpbmciLCBuZXcgU3RyaW5nKCJNeSBTdHJpbmciKSksIHRydWUsICJzaG9ydCBhbm5v
dGF0aW9uIFZTIG5ldyBhbm5vdGF0aW9uIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KCJCYWQg
U3RyaW5nIiwgbmV3IFN0cmluZygiTXkgU3RyaW5nIikpLCBmYWxzZSwgInNob3J0IGFubm90YXRp
b24gVlMgbmV3IGFubm90YXRpb24iKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYobmV3IFN0cmlu
ZygiQmFkIFN0cmluZyIpLCAiTXkgU3RyaW5nIiksIGZhbHNlLCAic2hvcnQgYW5ub3RhdGlvbiBW
UyBuZXcgYW5ub3RhdGlvbiIpOworCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGZhbHNlLCBuZXcg
Qm9vbGVhbigpKSwgdHJ1ZSwgInNob3J0IGFubm90YXRpb24gVlMgbmV3IGFubm90YXRpb24iKTsK
KyAgICBlcXVhbHMoUVVuaXQuZXF1aXYobmV3IEJvb2xlYW4oKSwgZmFsc2UpLCB0cnVlLCAic2hv
cnQgYW5ub3RhdGlvbiBWUyBuZXcgYW5ub3RhdGlvbiIpOworICAgIGVxdWFscyhRVW5pdC5lcXVp
dih0cnVlLCBuZXcgQm9vbGVhbih0cnVlKSksIHRydWUsICJzaG9ydCBhbm5vdGF0aW9uIFZTIG5l
dyBhbm5vdGF0aW9uIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KG5ldyBCb29sZWFuKHRydWUp
LCB0cnVlKSwgdHJ1ZSwgInNob3J0IGFubm90YXRpb24gVlMgbmV3IGFubm90YXRpb24iKTsKKyAg
ICBlcXVhbHMoUVVuaXQuZXF1aXYodHJ1ZSwgbmV3IEJvb2xlYW4oMSkpLCB0cnVlLCAic2hvcnQg
YW5ub3RhdGlvbiBWUyBuZXcgYW5ub3RhdGlvbiIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihm
YWxzZSwgbmV3IEJvb2xlYW4oZmFsc2UpKSwgdHJ1ZSwgInNob3J0IGFubm90YXRpb24gVlMgbmV3
IGFubm90YXRpb24iKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYobmV3IEJvb2xlYW4oZmFsc2Up
LCBmYWxzZSksIHRydWUsICJzaG9ydCBhbm5vdGF0aW9uIFZTIG5ldyBhbm5vdGF0aW9uIik7Cisg
ICAgZXF1YWxzKFFVbml0LmVxdWl2KGZhbHNlLCBuZXcgQm9vbGVhbigwKSksIHRydWUsICJzaG9y
dCBhbm5vdGF0aW9uIFZTIG5ldyBhbm5vdGF0aW9uIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2
KHRydWUsIG5ldyBCb29sZWFuKGZhbHNlKSksIGZhbHNlLCAic2hvcnQgYW5ub3RhdGlvbiBWUyBu
ZXcgYW5ub3RhdGlvbiIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihuZXcgQm9vbGVhbihmYWxz
ZSksIHRydWUpLCBmYWxzZSwgInNob3J0IGFubm90YXRpb24gVlMgbmV3IGFubm90YXRpb24iKTsK
KworICAgIGVxdWFscyhRVW5pdC5lcXVpdihuZXcgT2JqZWN0KCksIHt9KSwgdHJ1ZSwgInNob3J0
IGFubm90YXRpb24gVlMgbmV3IGFubm90YXRpb24iKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYo
e30sIG5ldyBPYmplY3QoKSksIHRydWUsICJzaG9ydCBhbm5vdGF0aW9uIFZTIG5ldyBhbm5vdGF0
aW9uIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KG5ldyBPYmplY3QoKSwge2E6MX0pLCBmYWxz
ZSwgInNob3J0IGFubm90YXRpb24gVlMgbmV3IGFubm90YXRpb24iKTsKKyAgICBlcXVhbHMoUVVu
aXQuZXF1aXYoe2E6MX0sIG5ldyBPYmplY3QoKSksIGZhbHNlLCAic2hvcnQgYW5ub3RhdGlvbiBW
UyBuZXcgYW5ub3RhdGlvbiIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdih7YTp1bmRlZmluZWR9
LCBuZXcgT2JqZWN0KCkpLCBmYWxzZSwgInNob3J0IGFubm90YXRpb24gVlMgbmV3IGFubm90YXRp
b24iKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYobmV3IE9iamVjdCgpLCB7YTp1bmRlZmluZWR9
KSwgZmFsc2UsICJzaG9ydCBhbm5vdGF0aW9uIFZTIG5ldyBhbm5vdGF0aW9uIik7Cit9KTsKKwor
dGVzdCgiT2JqZWN0cyBCYXNpY3MuIiwgZnVuY3Rpb24oKSB7CisgICAgZXF1YWxzKFFVbml0LmVx
dWl2KHt9LCB7fSksIHRydWUpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdih7fSwgbnVsbCksIGZh
bHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoe30sIHVuZGVmaW5lZCksIGZhbHNlKTsKKyAg
ICBlcXVhbHMoUVVuaXQuZXF1aXYoe30sIDApLCBmYWxzZSk7CisgICAgZXF1YWxzKFFVbml0LmVx
dWl2KHt9LCBmYWxzZSksIGZhbHNlKTsKKworICAgIC8vIFRoaXMgdGVzdCBpcyBhIGhhcmQgb25l
LCBpdCBpcyB2ZXJ5IGltcG9ydGFudAorICAgIC8vIFJFQVNPTlM6CisgICAgLy8gICAgICAxKSBU
aGV5IGFyZSBvZiB0aGUgc2FtZSB0eXBlICJvYmplY3QiCisgICAgLy8gICAgICAyKSBbXSBpbnN0
YW5jZW9mIE9iamVjdCBpcyB0cnVlCisgICAgLy8gICAgICAzKSBUaGVpciBwcm9wZXJ0aWVzIGFy
ZSB0aGUgc2FtZSAoZG9lc24ndCBleGlzdHMpCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KHt9LCBb
XSksIGZhbHNlKTsKKworICAgIGVxdWFscyhRVW5pdC5lcXVpdih7YToxfSwge2E6MX0pLCB0cnVl
KTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoe2E6MX0sIHthOiIxIn0pLCBmYWxzZSk7CisgICAg
ZXF1YWxzKFFVbml0LmVxdWl2KHthOltdfSwge2E6W119KSwgdHJ1ZSk7CisgICAgZXF1YWxzKFFV
bml0LmVxdWl2KHthOnt9fSwge2E6bnVsbH0pLCBmYWxzZSk7CisgICAgZXF1YWxzKFFVbml0LmVx
dWl2KHthOjF9LCB7fSksIGZhbHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoe30sIHthOjF9
KSwgZmFsc2UpOworCisgICAgLy8gSGFyZCBvbmVzCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KHth
OnVuZGVmaW5lZH0sIHt9KSwgZmFsc2UpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdih7fSwge2E6
dW5kZWZpbmVkfSksIGZhbHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoCisgICAgICAgIHsK
KyAgICAgICAgICAgIGE6IFt7IGJhcjogdW5kZWZpbmVkIH1dCisgICAgICAgIH0sCisgICAgICAg
IHsKKyAgICAgICAgICAgIGE6IFt7IGJhdDogdW5kZWZpbmVkIH1dCisgICAgICAgIH0KKyAgICAp
LCBmYWxzZSk7Cit9KTsKKworCit0ZXN0KCJBcnJheXMgQmFzaWNzLiIsIGZ1bmN0aW9uKCkgewor
CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KFtdLCBbXSksIHRydWUpOworCisgICAgLy8gTWF5IGJl
IGEgaGFyZCBvbmUsIGNhbiBpbnZva2UgYSBjcmFzaCBhdCBleGVjdXRpb24uCisgICAgLy8gYmVj
YXVzZSB0aGVpciB0eXBlcyBhcmUgYm90aCAib2JqZWN0IiBidXQgbnVsbCBpc24ndAorICAgIC8v
IGxpa2UgYSB0cnVlIG9iamVjdCwgaXQgZG9lc24ndCBoYXZlIGFueSBwcm9wZXJ0eSBhdCBhbGwu
CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KFtdLCBudWxsKSwgZmFsc2UpOworCisgICAgZXF1YWxz
KFFVbml0LmVxdWl2KFtdLCB1bmRlZmluZWQpLCBmYWxzZSk7CisgICAgZXF1YWxzKFFVbml0LmVx
dWl2KFtdLCBmYWxzZSksIGZhbHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoW10sIDApLCBm
YWxzZSk7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KFtdLCAiIiksIGZhbHNlKTsKKworICAgIC8v
IE1heSBiZSBhIGhhcmQgb25lLCBidXQgbGVzcyBoYXJkCisgICAgLy8gdGhhbiB7fSB3aXRoIFtd
IChub3RlIHRoZSBvcmRlcikKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoW10sIHt9KSwgZmFsc2Up
OworCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KFtudWxsXSxbXSksIGZhbHNlKTsKKyAgICBlcXVh
bHMoUVVuaXQuZXF1aXYoW3VuZGVmaW5lZF0sW10pLCBmYWxzZSk7CisgICAgZXF1YWxzKFFVbml0
LmVxdWl2KFtdLFtudWxsXSksIGZhbHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoW10sW3Vu
ZGVmaW5lZF0pLCBmYWxzZSk7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KFtudWxsXSxbdW5kZWZp
bmVkXSksIGZhbHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoW1tdXSxbW11dKSwgdHJ1ZSk7
CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KFtbXSxbXSxbXV0sW1tdLFtdLFtdXSksIHRydWUpOwor
ICAgIGVxdWFscyhRVW5pdC5lcXVpdigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW10s
W10sW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW11dXV1dXV1dXV1dXV1dXV1dXV1dXV1d
XV1dXV1dXV1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbXSxbXSxbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW1tbW1tbW1tbXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV0pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOworICAgIGVxdWFscyhRVW5pdC5lcXVp
digKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW10sW10sW1tbW1tbW1tbW1tbW1tbW1tb
W1tbW1tbW1tbW1tbW11dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtbXSxbXSxbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1td
XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dKSwgLy8gc2hvcnRlcgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW1tdLFtdLFtbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tb
W3t9XV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXV1dXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbW10sW10sW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1tbW11dXV1dXV1dXV1d
XV1dXV1dXV1dXV1dXV1dXV1dXV1dKSwgLy8gZGVlcGVzdCBlbGVtZW50IG5vdCBhbiBhcnJheQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKworICAgIC8vIHNhbWUgbXVsdGlk
aW1lbnNpb25hbAorICAgIGVxdWFscyhRVW5pdC5lcXVpdigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbMSwyLDMsNCw1LDYsNyw4LDksIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMSwyLDMsNCw1LDYsNyw4LDksIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEsMiwzLDQsNSxbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWzYsNyw4LDksIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwy
LDMsNCxbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMiwzLDQsWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAxLDIsWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMSwyLDMsNCxbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwyLDMsNCw1LDYsNyw4LDks
WworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSwxLDIsMyw0LDUsNiw3LDgsOQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSw1LDYsNyw4
LDkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSw0LDUsNiw3LDgsOQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0sNSw2LDcsOCw5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdLDUsNiw3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXV0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWzEsMiwzLDQsNSw2LDcsOCw5LCBbCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDEsMiwzLDQsNSw2LDcsOCw5LCBbCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAxLDIsMyw0LDUsWworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFs2LDcsOCw5LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEsMiwzLDQsWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIsMyw0LFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwyLFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsMiwzLDQsWworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEs
MiwzLDQsNSw2LDcsOCw5LFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sMSwyLDMsNCw1LDYsNyw4
LDkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0sNSw2LDcsOCw5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0sNCw1LDYsNyw4LDkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLDUsNiw3LDgsOQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSw1LDYsNworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXV1dKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCAiTXVsdGlkaW1l
bnNpb25hbCIpOworCisgICAgLy8gZGlmZmVyZW50IG11bHRpZGltZW5zaW9uYWwKKyAgICBlcXVh
bHMoUVVuaXQuZXF1aXYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzEsMiwzLDQsNSw2
LDcsOCw5LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsMiwzLDQsNSw2LDcs
OCw5LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLDIsMyw0LDUsWwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs2LDcsOCw5LCBbCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsMiwzLDQsWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIsMyw0LFsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwyLFsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDEsMiwzLDQsWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEsMiwzLDQsNSw2LDcsOCw5LFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sMSwyLDMsNCw1LDYsNyw4LDkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sNSw2LDcsOCw5CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sNCw1LDYsNyw4LDkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLDUsNiw3
LDgsOQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSw1
LDYsNworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXV1dLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsxLDIsMyw0LDUsNiw3LDgsOSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxLDIsMyw0LDUsNiw3LDgsOSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMSwyLDMsNCw1LFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Niw3LDgsOSwgWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLDIsMyw0
LFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy
LDMsNCxbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDEsMixbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnMScsMiwzLDQsWyAgICAgICAgICAgICAgICAgLy8gc3RyaW5nIGlu
c3RlYWQgb2YgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMSwyLDMsNCw1LDYsNyw4LDksWworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSwxLDIsMyw0LDUsNiw3LDgsOQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSw1LDYsNyw4LDkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSw0LDUsNiw3LDgs
OQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0s
NSw2LDcsOCw5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBdLDUsNiw3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXV0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZhbHNlLCAiTXVsdGlkaW1lbnNpb25hbCIpOworCisgICAgLy8gZGlmZmVyZW50
IG11bHRpZGltZW5zaW9uYWwKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWzEsMiwzLDQsNSw2LDcsOCw5LCBbCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEsMiwzLDQsNSw2LDcsOCw5LCBbCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxLDIsMyw0LDUsWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFs2LDcsOCw5LCBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDEsMiwzLDQsWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDIsMyw0LFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMSwyLFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsMiwzLDQsWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsMiwzLDQsNSw2
LDcsOCw5LFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sMSwyLDMsNCw1LDYsNyw4LDkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0s
NSw2LDcsOCw5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0sNCw1LDYsNyw4LDkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdLDUsNiw3LDgsOQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSw1LDYsNworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXV1d
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxLDIsMyw0LDUsNiw3LDgsOSwgWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLDIsMyw0LDUsNiw3LDgsOSwgWworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwyLDMsNCw1LFsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbNiw3LDgsOSwgWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxLDIsMyw0LFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAyLDMsWyAgICAgICAgICAgICAgICAgICAvLyBtaXNz
aW5nIGFuIGVsZW1lbnQgKDQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDEsMixbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLDIsMyw0LFsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLDIsMyw0LDUs
Niw3LDgsOSxbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLDEsMiwzLDQsNSw2LDcsOCw5CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
LDUsNiw3LDgsOQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLDQsNSw2LDcsOCw5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSw1LDYsNyw4LDkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sNSw2LDcKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1d
XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsICJNdWx0aWRpbWVuc2lvbmFs
Iik7Cit9KTsKKwordGVzdCgiRnVuY3Rpb25zLiIsIGZ1bmN0aW9uKCkgeworICAgIHZhciBmMCA9
IGZ1bmN0aW9uICgpIHt9OworICAgIHZhciBmMSA9IGZ1bmN0aW9uICgpIHt9OworCisgICAgLy8g
ZjIgYW5kIGYzIGhhdmUgdGhlIHNhbWUgY29kZSwgZm9ybWF0dGVkIGRpZmZlcmVudGx5CisgICAg
dmFyIGYyID0gZnVuY3Rpb24gKCkge3ZhciBpID0gMDt9OworICAgIHZhciBmMyA9IGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgdmFyIGkgPSAwIC8vIHRoaXMgY29tbWVudCBhbmQgbm8gc2VtaWNvbWEg
YXMgZGlmZmVyZW5jZQorICAgIH07CisKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoZnVuY3Rpb24o
KSB7fSwgZnVuY3Rpb24oKSB7fSksIGZhbHNlLCAiQW5vbnltb3VzIGZ1bmN0aW9ucyIpOyAvLyBl
eGFjdCBzb3VyY2UgY29kZQorICAgIGVxdWFscyhRVW5pdC5lcXVpdihmdW5jdGlvbigpIHt9LCBm
dW5jdGlvbigpIHtyZXR1cm4gdHJ1ZTt9KSwgZmFsc2UsICJBbm9ueW1vdXMgZnVuY3Rpb25zIik7
CisKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoZjAsIGYwKSwgdHJ1ZSwgIkZ1bmN0aW9uIHJlZmVy
ZW5jZXMiKTsgLy8gc2FtZSByZWZlcmVuY2VzCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGYwLCBm
MSksIGZhbHNlLCAiRnVuY3Rpb24gcmVmZXJlbmNlcyIpOyAvLyBleGFjdCBzb3VyY2UgY29kZSwg
ZGlmZmVyZW50IHJlZmVyZW5jZXMKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoZjIsIGYzKSwgZmFs
c2UsICJGdW5jdGlvbiByZWZlcmVuY2VzIik7IC8vIGVxdWl2YWxlbnQgc291cmNlIGNvZGUsIGRp
ZmZlcmVudCByZWZlcmVuY2VzCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGYxLCBmMiksIGZhbHNl
LCAiRnVuY3Rpb24gcmVmZXJlbmNlcyIpOyAvLyBkaWZmZXJlbnQgc291cmNlIGNvZGUsIGRpZmZl
cmVudCByZWZlcmVuY2VzCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGZ1bmN0aW9uKCkge30sIHRy
dWUpLCBmYWxzZSk7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGZ1bmN0aW9uKCkge30sIHVuZGVm
aW5lZCksIGZhbHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoZnVuY3Rpb24oKSB7fSwgbnVs
bCksIGZhbHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoZnVuY3Rpb24oKSB7fSwge30pLCBm
YWxzZSk7Cit9KTsKKworCit0ZXN0KCJEYXRlIGluc3RhbmNlcy4iLCBmdW5jdGlvbigpIHsKKyAg
ICAvLyBEYXRlLCB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgRGF0ZS5wYXJzZSgpIGJlY2F1c2UgaXQg
cmV0dXJucyBhIG51bWJlci4KKyAgICAvLyBPbmx5IHRlc3QgdGhlIERhdGUgaW5zdGFuY2VzIGJ5
IHNldHRpbmcgdGhlbSBhIGZpeCBkYXRlLgorICAgIC8vIFRoZSBkYXRlIHVzZSBpcyBtaWRuaWdo
dCBKYW51YXJ5IDEsIDE5NzAKKworICAgIHZhciBkMSA9IG5ldyBEYXRlKCk7CisgICAgZDEuc2V0
VGltZSgwKTsgLy8gZml4IHRoZSBkYXRlCisKKyAgICB2YXIgZDIgPSBuZXcgRGF0ZSgpOworICAg
IGQyLnNldFRpbWUoMCk7IC8vIGZpeCB0aGUgZGF0ZQorCisgICAgdmFyIGQzID0gbmV3IERhdGUo
KTsgLy8gVGhlIHZlcnkgbm93CisKKyAgICAvLyBBbnl3YXkgdGhlaXIgdHlwZXMgZGlmZmVycywg
anVzdCBpbiBjYXNlIHRoZSBjb2RlIGZhaWxzIGluIHRoZSBvcmRlciBpbiB3aGljaCBpdCBkZWFs
cyB3aXRoIGRhdGUKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoZDEsIDApLCBmYWxzZSk7IC8vIGQx
LnZhbHVlT2YoKSByZXR1cm5zIDAsIGJ1dCBkMSBhbmQgMCBhcmUgZGlmZmVyZW50CisgICAgLy8g
dGVzdCBzYW1lIHZhbHVlcyBkYXRlIGFuZCBkaWZmZXJlbnQgaW5zdGFuY2VzIGVxdWFsaXR5Cisg
ICAgZXF1YWxzKFFVbml0LmVxdWl2KGQxLCBkMiksIHRydWUpOworICAgIC8vIHRlc3QgZGlmZmVy
ZW50IGRhdGUgYW5kIGRpZmZlcmVudCBpbnN0YW5jZXMgZGlmZmVyZW5jZQorICAgIGVxdWFscyhR
VW5pdC5lcXVpdihkMSwgZDMpLCBmYWxzZSk7Cit9KTsKKworCit0ZXN0KCJSZWdFeHAuIiwgZnVu
Y3Rpb24oKSB7CisgICAgLy8gTXVzdCB0ZXN0IGNhc2VzIHRoYXQgaW1wbHkgdGhvc2UgdHJhcHM6
CisgICAgLy8gdmFyIGEgPSAvLi87CisgICAgLy8gYSBpbnN0YW5jZW9mIE9iamVjdDsgICAgICAg
IC8vIE9vcHMKKyAgICAvLyBhIGluc3RhbmNlb2YgUmVnRXhwOyAgICAgICAgLy8gT29wcworICAg
IC8vIHR5cGVvZiBhID09PSAiZnVuY3Rpb24iOyAgICAvLyBPb3BzLCBmYWxzZSBpbiBJRSBhbmQg
T3BlcmEsIHRydWUgaW4gRkYgYW5kIFNhZmFyaSAoIm9iamVjdCIpCisKKyAgICAvLyBUZXN0cyBz
YW1lIHJlZ2V4IHdpdGggc2FtZSBtb2RpZmllcnMgaW4gZGlmZmVyZW50IG9yZGVyCisgICAgdmFy
IHIgPSAvZm9vLzsKKyAgICB2YXIgcjUgPSAvZm9vL2dpbTsKKyAgICB2YXIgcjYgPSAvZm9vL2dt
aTsKKyAgICB2YXIgcjcgPSAvZm9vL2lnbTsKKyAgICB2YXIgcjggPSAvZm9vL2ltZzsKKyAgICB2
YXIgcjkgPSAvZm9vL21pZzsKKyAgICB2YXIgcjEwID0gL2Zvby9tZ2k7CisgICAgdmFyIHJpMSA9
IC9mb28vaTsKKyAgICB2YXIgcmkyID0gL2Zvby9pOworICAgIHZhciBybTEgPSAvZm9vL207Cisg
ICAgdmFyIHJtMiA9IC9mb28vbTsKKyAgICB2YXIgcmcxID0gL2Zvby9nOworICAgIHZhciByZzIg
PSAvZm9vL2c7CisKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYocjUsIHI2KSwgdHJ1ZSwgIk1vZGlm
aWVyIG9yZGVyIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KHI1LCByNyksIHRydWUsICJNb2Rp
ZmllciBvcmRlciIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihyNSwgcjgpLCB0cnVlLCAiTW9k
aWZpZXIgb3JkZXIiKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYocjUsIHI5KSwgdHJ1ZSwgIk1v
ZGlmaWVyIG9yZGVyIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KHI1LCByMTApLCB0cnVlLCAi
TW9kaWZpZXIgb3JkZXIiKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYociwgcjUpLCBmYWxzZSwg
Ik1vZGlmaWVyIik7CisKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYocmkxLCByaTIpLCB0cnVlLCAi
TW9kaWZpZXIiKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYociwgcmkxKSwgZmFsc2UsICJNb2Rp
ZmllciIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihyaTEsIHJtMSksIGZhbHNlLCAiTW9kaWZp
ZXIiKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYociwgcm0xKSwgZmFsc2UsICJNb2RpZmllciIp
OworICAgIGVxdWFscyhRVW5pdC5lcXVpdihybTEsIHJpMSksIGZhbHNlLCAiTW9kaWZpZXIiKTsK
KyAgICBlcXVhbHMoUVVuaXQuZXF1aXYocm0xLCBybTIpLCB0cnVlLCAiTW9kaWZpZXIiKTsKKyAg
ICBlcXVhbHMoUVVuaXQuZXF1aXYocmcxLCBybTEpLCBmYWxzZSwgIk1vZGlmaWVyIik7CisgICAg
ZXF1YWxzKFFVbml0LmVxdWl2KHJtMSwgcmcxKSwgZmFsc2UsICJNb2RpZmllciIpOworICAgIGVx
dWFscyhRVW5pdC5lcXVpdihyZzEsIHJnMiksIHRydWUsICJNb2RpZmllciIpOworCisgICAgLy8g
RGlmZmVyZW50IHJlZ2V4LCBzYW1lIG1vZGlmaWVycworICAgIHZhciByMTEgPSAvW2Etel0vZ2k7
CisgICAgdmFyIHIxMyA9IC9bMC05XS9naTsgLy8gb29wcyEgZGlmZmVyZW50CisgICAgZXF1YWxz
KFFVbml0LmVxdWl2KHIxMSwgcjEzKSwgZmFsc2UsICJSZWdleCBwYXR0ZXJuIik7CisKKyAgICB2
YXIgcjE0ID0gLzAvaWc7CisgICAgdmFyIHIxNSA9IC8iMCIvaWc7IC8vIG9vcHMhIGRpZmZlcmVu
dAorICAgIGVxdWFscyhRVW5pdC5lcXVpdihyMTQsIHIxNSksIGZhbHNlLCAiUmVnZXggcGF0dGVy
biIpOworCisgICAgdmFyIHIxID0gL1tcblxyXHUyMDI4XHUyMDI5XS9nOworICAgIHZhciByMiA9
IC9bXG5cclx1MjAyOFx1MjAyOV0vZzsKKyAgICB2YXIgcjMgPSAvW1xuXHJcdTIwMjhcdTIwMjhd
L2c7IC8vIGRpZmZlcnMgZnJvbSByMQorICAgIHZhciByNCA9IC9bXG5cclx1MjAyOFx1MjAyOV0v
OyAgLy8gZGlmZmVycyBmcm9tIHIxCisKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYocjEsIHIyKSwg
dHJ1ZSwgIlJlZ2V4IHBhdHRlcm4iKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYocjEsIHIzKSwg
ZmFsc2UsICJSZWdleCBwYXR0ZXJuIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KHIxLCByNCks
IGZhbHNlLCAiUmVnZXggcGF0dGVybiIpOworCisgICAgLy8gTW9yZSBjb21wbGV4IHJlZ2V4Cisg
ICAgdmFyIHJlZ2V4MSA9ICJeWy1fLmEtejAtOV0rQChbLV9hLXowLTldK1xcLikrKFtBLVphLXpd
W0EtWmEtel18W0EtWmEtel1bQS1aYS16XVtBLVphLXpdKXwoKFswLTldWzAtOV0/fFswLTFdWzAt
OV1bMC05XXxbMl1bMC00XVswLTldfFsyXVs1XVswLTVdKSkkIjsKKyAgICB2YXIgcmVnZXgyID0g
Il5bLV8uYS16MC05XStAKFstX2EtejAtOV0rXFwuKSsoW0EtWmEtel1bQS1aYS16XXxbQS1aYS16
XVtBLVphLXpdW0EtWmEtel0pfCgoWzAtOV1bMC05XT98WzAtMV1bMC05XVswLTldfFsyXVswLTRd
WzAtOV18WzJdWzVdWzAtNV0pKSQiOworICAgIC8vIHJlZ2V4IDMgaXMgZGlmZmVyZW50OiAnLicg
bm90IGVzY2FwZWQKKyAgICB2YXIgcmVnZXgzID0gIl5bLV8uYS16MC05XStAKFstX2EtejAtOV0r
LikrKFtBLVphLXpdW0EtWmEtel18W0EtWmEtel1bQS1aYS16XVtBLVphLXpdKXwoKFswLTldWzAt
OV0/fFswLTFdWzAtOV1bMC05XXxbMl1bMC00XVswLTldfFsyXVs1XVswLTVdKSkkIjsKKworICAg
IHZhciByMjEgPSBuZXcgUmVnRXhwKHJlZ2V4MSk7CisgICAgdmFyIHIyMiA9IG5ldyBSZWdFeHAo
cmVnZXgyKTsKKyAgICB2YXIgcjIzID0gbmV3IFJlZ0V4cChyZWdleDMpOyAvLyBkaWZmIGZyb20g
cjIxLCBub3Qgc2FtZSBwYXR0ZXJuCisgICAgdmFyIHIyM2EgPSBuZXcgUmVnRXhwKHJlZ2V4Mywg
ImdpIik7IC8vIGRpZmYgZnJvbSByMjMsIG5vdCBzYW1lIG1vZGlmaWVyCisgICAgdmFyIHIyNGEg
PSBuZXcgUmVnRXhwKHJlZ2V4MywgImlnIik7IC8vIHNhbWUgYXMgcjIzYQorCisgICAgZXF1YWxz
KFFVbml0LmVxdWl2KHIyMSwgcjIyKSwgdHJ1ZSwgIkNvbXBsZXggUmVnZXgiKTsKKyAgICBlcXVh
bHMoUVVuaXQuZXF1aXYocjIxLCByMjMpLCBmYWxzZSwgIkNvbXBsZXggUmVnZXgiKTsKKyAgICBl
cXVhbHMoUVVuaXQuZXF1aXYocjIzLCByMjNhKSwgZmFsc2UsICJDb21wbGV4IFJlZ2V4Iik7Cisg
ICAgZXF1YWxzKFFVbml0LmVxdWl2KHIyM2EsIHIyNGEpLCB0cnVlLCAiQ29tcGxleCBSZWdleCIp
OworCisgICAgLy8gdHlwZW9mIHIxIGlzICJmdW5jdGlvbiIgaW4gc29tZSBicm93c2VycyBhbmQg
Im9iamVjdCIgaW4gb3RoZXJzIHNvIHdlIG11c3QgY292ZXIgdGhpcyB0ZXN0CisgICAgdmFyIHJl
ID0gLyAvOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihyZSwgZnVuY3Rpb24gKCkge30pLCBmYWxz
ZSwgIlJlZ2V4IGludGVybmFsIik7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KHJlLCB7fSksIGZh
bHNlLCAiUmVnZXggaW50ZXJuYWwiKTsKK30pOworCisKK3Rlc3QoIkNvbXBsZXggT2JqZWN0cy4i
LCBmdW5jdGlvbigpIHsKKworICAgIGZ1bmN0aW9uIGZuMSgpIHsKKyAgICAgICAgcmV0dXJuICJm
bjEiOworICAgIH0KKyAgICBmdW5jdGlvbiBmbjIoKSB7CisgICAgICAgIHJldHVybiAiZm4yIjsK
KyAgICB9CisKKyAgICAvLyBUcnkgdG8gaW52ZXJ0IHRoZSBvcmRlciBvZiBzb21lIHByb3BlcnRp
ZXMgdG8gbWFrZSBzdXJlIGl0IGlzIGNvdmVyZWQuCisgICAgLy8gSXQgY2FuIGZhaWxlZCB3aGVu
IHByb3BlcnRpZXMgYXJlIGNvbXBhcmVkIGJldHdlZW4gdW5zb3J0ZWQgYXJyYXlzLgorICAgIGVx
dWFscyhRVW5pdC5lcXVpdigKKyAgICAgICAgeworICAgICAgICAgICAgYTogMSwKKyAgICAgICAg
ICAgIGI6IG51bGwsCisgICAgICAgICAgICBjOiBbe31dLAorICAgICAgICAgICAgZDogeworICAg
ICAgICAgICAgICAgIGE6IDMuMTQxNTksCisgICAgICAgICAgICAgICAgYjogZmFsc2UsCisgICAg
ICAgICAgICAgICAgYzogeworICAgICAgICAgICAgICAgICAgICBlOiBmbjEsCisgICAgICAgICAg
ICAgICAgICAgIGY6IFtbW11dXSwKKyAgICAgICAgICAgICAgICAgICAgZzogeworICAgICAgICAg
ICAgICAgICAgICAgICAgajogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcjogInIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgczogWzEsMiwzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHVu
ZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB5OiAiWWFob28hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHo6IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcTogW10s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHA6IDEvMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbzogOTkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtOiBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGQ6IDAsCisgICAgICAgICAgICAg
ICAgICAgIGk6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIGg6ICJmYWxzZSIKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZTogdW5kZWZpbmVkLAorICAg
ICAgICAgICAgZzogIiIsCisgICAgICAgICAgICBoOiAiaCIsCisgICAgICAgICAgICBmOiB7fSwK
KyAgICAgICAgICAgIGk6IFtdCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGE6
IDEsCisgICAgICAgICAgICBiOiBudWxsLAorICAgICAgICAgICAgYzogW3t9XSwKKyAgICAgICAg
ICAgIGQ6IHsKKyAgICAgICAgICAgICAgICBiOiBmYWxzZSwKKyAgICAgICAgICAgICAgICBhOiAz
LjE0MTU5LAorICAgICAgICAgICAgICAgIGM6IHsKKyAgICAgICAgICAgICAgICAgICAgZDogMCwK
KyAgICAgICAgICAgICAgICAgICAgZTogZm4xLAorICAgICAgICAgICAgICAgICAgICBmOiBbW1td
XV0sCisgICAgICAgICAgICAgICAgICAgIGc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGo6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG46IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6
ICJyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHVuZGVmaW5lZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzOiBbMSwyLDNdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDog
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgejogbnVs
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6ICJZ
YWhvbyEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG86IDk5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwOiAxLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHE6IFtdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsOiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTog
bnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICBpOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBoOiAiZmFs
c2UiCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGU6IHVu
ZGVmaW5lZCwKKyAgICAgICAgICAgIGc6ICIiLAorICAgICAgICAgICAgZjoge30sCisgICAgICAg
ICAgICBoOiAiaCIsCisgICAgICAgICAgICBpOiBbXQorICAgICAgICB9CisgICAgKSwgdHJ1ZSk7
CisKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoCisgICAgICAgIHsKKyAgICAgICAgICAgIGE6IDEs
CisgICAgICAgICAgICBiOiBudWxsLAorICAgICAgICAgICAgYzogW3t9XSwKKyAgICAgICAgICAg
IGQ6IHsKKyAgICAgICAgICAgICAgICBhOiAzLjE0MTU5LAorICAgICAgICAgICAgICAgIGI6IGZh
bHNlLAorICAgICAgICAgICAgICAgIGM6IHsKKyAgICAgICAgICAgICAgICAgICAgZDogMCwKKyAg
ICAgICAgICAgICAgICAgICAgZTogZm4xLAorICAgICAgICAgICAgICAgICAgICBmOiBbW1tdXV0s
CisgICAgICAgICAgICAgICAgICAgIGc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGo6IHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrOiB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG46IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcjog
InIiLCAgIC8vIGRpZmZlcmVudDogbWlzc2luZyBhIHByb3BlcnR5CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzOiBbMSwyLDNdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdDogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdTogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3OiB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6IHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6ICJZYWhvbyEiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgejogbnVsbAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvOiA5OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDogMS8w
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxOiBbXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogdW5kZWZpbmVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG06IG51bGwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaDog
ImZhbHNlIiwKKyAgICAgICAgICAgICAgICAgICAgaTogdHJ1ZQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlOiB1bmRlZmluZWQsCisgICAgICAgICAgICBm
OiB7fSwKKyAgICAgICAgICAgIGc6ICIiLAorICAgICAgICAgICAgaDogImgiLAorICAgICAgICAg
ICAgaTogW10KKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgYTogMSwKKyAgICAg
ICAgICAgIGI6IG51bGwsCisgICAgICAgICAgICBjOiBbe31dLAorICAgICAgICAgICAgZDogewor
ICAgICAgICAgICAgICAgIGE6IDMuMTQxNTksCisgICAgICAgICAgICAgICAgYjogZmFsc2UsCisg
ICAgICAgICAgICAgICAgYzogeworICAgICAgICAgICAgICAgICAgICBkOiAwLAorICAgICAgICAg
ICAgICAgICAgICBlOiBmbjEsCisgICAgICAgICAgICAgICAgICAgIGY6IFtbW11dXSwKKyAgICAg
ICAgICAgICAgICAgICAgZzogeworICAgICAgICAgICAgICAgICAgICAgICAgajogeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGs6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcjogInIiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczogWzEsMiwzXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHU6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OiB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OiAiWWFob28hIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHo6IG51bGwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbzogOTksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHA6IDEvMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcTogW10KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGw6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtOiBudWxsCisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgIGg6ICJmYWxzZSIsCisgICAgICAgICAgICAgICAgICAgIGk6IHRydWUKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgZTogdW5kZWZpbmVkLAor
ICAgICAgICAgICAgZjoge30sCisgICAgICAgICAgICBnOiAiIiwKKyAgICAgICAgICAgIGg6ICJo
IiwKKyAgICAgICAgICAgIGk6IFtdCisgICAgICAgIH0KKyAgICApLCBmYWxzZSk7CisKKyAgICBl
cXVhbHMoUVVuaXQuZXF1aXYoCisgICAgICAgIHsKKyAgICAgICAgICAgIGE6IDEsCisgICAgICAg
ICAgICBiOiBudWxsLAorICAgICAgICAgICAgYzogW3t9XSwKKyAgICAgICAgICAgIGQ6IHsKKyAg
ICAgICAgICAgICAgICBhOiAzLjE0MTU5LAorICAgICAgICAgICAgICAgIGI6IGZhbHNlLAorICAg
ICAgICAgICAgICAgIGM6IHsKKyAgICAgICAgICAgICAgICAgICAgZDogMCwKKyAgICAgICAgICAg
ICAgICAgICAgZTogZm4xLAorICAgICAgICAgICAgICAgICAgICBmOiBbW1tdXV0sCisgICAgICAg
ICAgICAgICAgICAgIGc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGo6IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBrOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG46IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6ICJyIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM6IFsxLDIsM10sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0OiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdjogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTogIllhaG9vISIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6OiBudWxsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG86IDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwOiAxLzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHE6IFtdCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
OiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbTogbnVsbAorICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICAgICBoOiAiZmFsc2UiLAorICAgICAgICAgICAgICAgICAgICBpOiB0cnVlCisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGU6IHVuZGVmaW5lZCwKKyAg
ICAgICAgICAgIGY6IHt9LAorICAgICAgICAgICAgZzogIiIsCisgICAgICAgICAgICBoOiAiaCIs
CisgICAgICAgICAgICBpOiBbXQorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICBh
OiAxLAorICAgICAgICAgICAgYjogbnVsbCwKKyAgICAgICAgICAgIGM6IFt7fV0sCisgICAgICAg
ICAgICBkOiB7CisgICAgICAgICAgICAgICAgYTogMy4xNDE1OSwKKyAgICAgICAgICAgICAgICBi
OiBmYWxzZSwKKyAgICAgICAgICAgICAgICBjOiB7CisgICAgICAgICAgICAgICAgICAgIGQ6IDAs
CisgICAgICAgICAgICAgICAgICAgIGU6IGZuMSwKKyAgICAgICAgICAgICAgICAgICAgZjogW1tb
XV1dLAorICAgICAgICAgICAgICAgICAgICBnOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBq
OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgazogeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
OiAiciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOiBbMSwyLDNdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy90OiB1bmRlZmluZWQsICAgICAg
ICAgICAgICAgICAvLyBkaWZmZXJlbnQ6IG1pc3NpbmcgYSBwcm9wZXJ0eSB3aXRoIGFuIHVuZGVm
aW5lZCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTogMCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHg6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHk6ICJZYWhvbyEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgejogbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiA5
OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDogMS8wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBxOiBbXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbDogdW5kZWZpbmVkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG06IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgaDogImZhbHNlIiwKKyAgICAg
ICAgICAgICAgICAgICAgaTogdHJ1ZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICBlOiB1bmRlZmluZWQsCisgICAgICAgICAgICBmOiB7fSwKKyAgICAgICAg
ICAgIGc6ICIiLAorICAgICAgICAgICAgaDogImgiLAorICAgICAgICAgICAgaTogW10KKyAgICAg
ICAgfQorICAgICksIGZhbHNlKTsKKworICAgIGVxdWFscyhRVW5pdC5lcXVpdigKKyAgICAgICAg
eworICAgICAgICAgICAgYTogMSwKKyAgICAgICAgICAgIGI6IG51bGwsCisgICAgICAgICAgICBj
OiBbe31dLAorICAgICAgICAgICAgZDogeworICAgICAgICAgICAgICAgIGE6IDMuMTQxNTksCisg
ICAgICAgICAgICAgICAgYjogZmFsc2UsCisgICAgICAgICAgICAgICAgYzogeworICAgICAgICAg
ICAgICAgICAgICBkOiAwLAorICAgICAgICAgICAgICAgICAgICBlOiBmbjEsCisgICAgICAgICAg
ICAgICAgICAgIGY6IFtbW11dXSwKKyAgICAgICAgICAgICAgICAgICAgZzogeworICAgICAgICAg
ICAgICAgICAgICAgICAgajogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGs6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjogeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcjogInIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgczogWzEsMiwzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQ6IHVu
ZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU6IDAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2OiB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB4OiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB5OiAiWWFob28hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHo6IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbzogOTks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHA6IDEvMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcTogW10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGw6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtOiBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGg6ICJmYWxzZSIsCisgICAgICAg
ICAgICAgICAgICAgIGk6IHRydWUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgZTogdW5kZWZpbmVkLAorICAgICAgICAgICAgZjoge30sCisgICAgICAgICAg
ICBnOiAiIiwKKyAgICAgICAgICAgIGg6ICJoIiwKKyAgICAgICAgICAgIGk6IFtdCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIGE6IDEsCisgICAgICAgICAgICBiOiBudWxsLAor
ICAgICAgICAgICAgYzogW3t9XSwKKyAgICAgICAgICAgIGQ6IHsKKyAgICAgICAgICAgICAgICBh
OiAzLjE0MTU5LAorICAgICAgICAgICAgICAgIGI6IGZhbHNlLAorICAgICAgICAgICAgICAgIGM6
IHsKKyAgICAgICAgICAgICAgICAgICAgZDogMCwKKyAgICAgICAgICAgICAgICAgICAgZTogZm4x
LAorICAgICAgICAgICAgICAgICAgICBmOiBbW1tdXV0sCisgICAgICAgICAgICAgICAgICAgIGc6
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGo6IHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG46IHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHI6ICJyIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHM6IFsxLDIsM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0OiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1OiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHc6IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeTogIllhaG9vISIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6OiBudWxsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG86IDk5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwOiAxLzAsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHE6IHt9ICAgICAgICAgICAvLyBkaWZmZXJl
bnQgd2FzIFtdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBsOiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bTogbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICBoOiAiZmFsc2UiLAorICAgICAgICAgICAgICAgICAgICBp
OiB0cnVlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGU6
IHVuZGVmaW5lZCwKKyAgICAgICAgICAgIGY6IHt9LAorICAgICAgICAgICAgZzogIiIsCisgICAg
ICAgICAgICBoOiAiaCIsCisgICAgICAgICAgICBpOiBbXQorICAgICAgICB9CisgICAgKSwgZmFs
c2UpOworCisgICAgdmFyIHNhbWUxID0geworICAgICAgICBhOiBbCisgICAgICAgICAgICAic3Ry
aW5nIiwgbnVsbCwgMCwgIjEiLCAxLCB7CisgICAgICAgICAgICAgICAgcHJvcDogbnVsbCwKKyAg
ICAgICAgICAgICAgICBmb286IFsxLDIsbnVsbCx7fSwgW10sIFsxLDIsM11dLAorICAgICAgICAg
ICAgICAgIGJhcjogdW5kZWZpbmVkCisgICAgICAgICAgICB9LCAzLCAiSGV5ISIsICLOms6szr3O
tSDPgM6szr3PhM6xIM6zzr3Pic+Bzq/Ots6/z4XOvM61IM6xz4Igz4TPic69LCDOvM63z4fOsc69
zq7PgiDOtc+AzrnOtM65z4zPgc64z4nPg863z4IgzrXPgM65zrTOuc6/z4HOuM+Oz4POtc65z4Ig
z47PgiDOvM65zrEuIM6azrvPgCDOsc+CIgorICAgICAgICBdLAorICAgICAgICB1bmljb2RlOiAi
6ICBIOaxieivreS4reWtmOWcqCDmuK/mvrPlkozmtbflpJbnmoTljY7kurrlnIjkuK0g6LS15bee
IOaIkeWOu+S6huS5puW6lyDnjrDlnKjlsJrmnInkuokiLAorICAgICAgICBiOiAiYiIsCisgICAg
ICAgIGM6IGZuMQorICAgIH07CisKKyAgICB2YXIgc2FtZTIgPSB7CisgICAgICAgIGE6IFsKKyAg
ICAgICAgICAgICJzdHJpbmciLCBudWxsLCAwLCAiMSIsIDEsIHsKKyAgICAgICAgICAgICAgICBw
cm9wOiBudWxsLAorICAgICAgICAgICAgICAgIGZvbzogWzEsMixudWxsLHt9LCBbXSwgWzEsMiwz
XV0sCisgICAgICAgICAgICAgICAgYmFyOiB1bmRlZmluZWQKKyAgICAgICAgICAgIH0sIDMsICJI
ZXkhIiwgIs6azqzOvc61IM+AzqzOvc+EzrEgzrPOvc+Jz4HOr862zr/Phc68zrUgzrHPgiDPhM+J
zr0sIM68zrfPh86xzr3Ors+CIM61z4DOuc60zrnPjM+BzrjPic+DzrfPgiDOtc+AzrnOtM65zr/P
gc64z47Pg861zrnPgiDPjs+CIM68zrnOsS4gzprOu8+AIM6xz4IiCisgICAgICAgIF0sCisgICAg
ICAgIHVuaWNvZGU6ICLogIEg5rGJ6K+t5Lit5a2Y5ZyoIOa4r+a+s+WSjOa1t+WklueahOWNjuS6
uuWciOS4rSDotLXlt54g5oiR5Y675LqG5Lmm5bqXIOeOsOWcqOWwmuacieS6iSIsCisgICAgICAg
IGI6ICJiIiwKKyAgICAgICAgYzogZm4xCisgICAgfTsKKworICAgIHZhciBkaWZmMSA9IHsKKyAg
ICAgICAgYTogWworICAgICAgICAgICAgInN0cmluZyIsIG51bGwsIDAsICIxIiwgMSwgeworICAg
ICAgICAgICAgICAgIHByb3A6IG51bGwsCisgICAgICAgICAgICAgICAgZm9vOiBbMSwyLG51bGws
e30sIFtdLCBbMSwyLDMsNF1dLCAvLyBkaWZmZXJlbnQ6IDQgd2FzIGFkZCB0byB0aGUgYXJyYXkK
KyAgICAgICAgICAgICAgICBiYXI6IHVuZGVmaW5lZAorICAgICAgICAgICAgfSwgMywgIkhleSEi
LCAizprOrM69zrUgz4DOrM69z4TOsSDOs869z4nPgc6vzrbOv8+FzrzOtSDOsc+CIM+Ez4nOvSwg
zrzOt8+HzrHOvc6uz4IgzrXPgM65zrTOuc+Mz4HOuM+Jz4POt8+CIM61z4DOuc60zrnOv8+BzrjP
js+DzrXOuc+CIM+Oz4IgzrzOuc6xLiDOms67z4AgzrHPgiIKKyAgICAgICAgXSwKKyAgICAgICAg
dW5pY29kZTogIuiAgSDmsYnor63kuK3lrZjlnKgg5riv5r6z5ZKM5rW35aSW55qE5Y2O5Lq65ZyI
5LitIOi0teW3niDmiJHljrvkuobkuablupcg546w5Zyo5bCa5pyJ5LqJIiwKKyAgICAgICAgYjog
ImIiLAorICAgICAgICBjOiBmbjEKKyAgICB9OworCisgICAgdmFyIGRpZmYyID0geworICAgICAg
ICBhOiBbCisgICAgICAgICAgICAic3RyaW5nIiwgbnVsbCwgMCwgIjEiLCAxLCB7CisgICAgICAg
ICAgICAgICAgcHJvcDogbnVsbCwKKyAgICAgICAgICAgICAgICBmb286IFsxLDIsbnVsbCx7fSwg
W10sIFsxLDIsM11dLAorICAgICAgICAgICAgICAgIG5ld3Byb3A6IHVuZGVmaW5lZCwgLy8gZGlm
ZmVyZW50OiBuZXdwcm9wIHdhcyBhZGRlZAorICAgICAgICAgICAgICAgIGJhcjogdW5kZWZpbmVk
CisgICAgICAgICAgICB9LCAzLCAiSGV5ISIsICLOms6szr3OtSDPgM6szr3PhM6xIM6zzr3Pic+B
zq/Ots6/z4XOvM61IM6xz4Igz4TPic69LCDOvM63z4fOsc69zq7PgiDOtc+AzrnOtM65z4zPgc64
z4nPg863z4IgzrXPgM65zrTOuc6/z4HOuM+Oz4POtc65z4Igz47PgiDOvM65zrEuIM6azrvPgCDO
sc+CIgorICAgICAgICBdLAorICAgICAgICB1bmljb2RlOiAi6ICBIOaxieivreS4reWtmOWcqCDm
uK/mvrPlkozmtbflpJbnmoTljY7kurrlnIjkuK0g6LS15beeIOaIkeWOu+S6huS5puW6lyDnjrDl
nKjlsJrmnInkuokiLAorICAgICAgICBiOiAiYiIsCisgICAgICAgIGM6IGZuMQorICAgIH07CisK
KyAgICB2YXIgZGlmZjMgPSB7CisgICAgICAgIGE6IFsKKyAgICAgICAgICAgICJzdHJpbmciLCBu
dWxsLCAwLCAiMSIsIDEsIHsKKyAgICAgICAgICAgICAgICBwcm9wOiBudWxsLAorICAgICAgICAg
ICAgICAgIGZvbzogWzEsMixudWxsLHt9LCBbXSwgWzEsMiwzXV0sCisgICAgICAgICAgICAgICAg
YmFyOiB1bmRlZmluZWQKKyAgICAgICAgICAgIH0sIDMsICJIZXkhIiwgIs6azqzOvc61IM+AzqzO
vc+EzrEgzrPOvc+Jz4HOr862zr/Phc68zrUgzrHPgiDPhM+Jzr0sIM68zrfPh86xzr3Ors+CIM61
z4DOuc60zrnPjM+BzrjPic+DzrfPgiDOtc+AzrnOtM65zr/Pgc64z47Pg861zrnPgiDPjs+CIM68
zrnOsS4gzprOu8+AIM6xIiAvLyBkaWZmZXJlbnQ6IG1pc3NpbmcgbGFzdCBjaGFyCisgICAgICAg
IF0sCisgICAgICAgIHVuaWNvZGU6ICLogIEg5rGJ6K+t5Lit5a2Y5ZyoIOa4r+a+s+WSjOa1t+Wk
lueahOWNjuS6uuWciOS4rSDotLXlt54g5oiR5Y675LqG5Lmm5bqXIOeOsOWcqOWwmuacieS6iSIs
CisgICAgICAgIGI6ICJiIiwKKyAgICAgICAgYzogZm4xCisgICAgfTsKKworICAgIHZhciBkaWZm
NCA9IHsKKyAgICAgICAgYTogWworICAgICAgICAgICAgInN0cmluZyIsIG51bGwsIDAsICIxIiwg
MSwgeworICAgICAgICAgICAgICAgIHByb3A6IG51bGwsCisgICAgICAgICAgICAgICAgZm9vOiBb
MSwyLHVuZGVmaW5lZCx7fSwgW10sIFsxLDIsM11dLCAvLyBkaWZmZXJlbnQ6IHVuZGVmaW5lZCBp
bnN0ZWFkIG9mIG51bGwKKyAgICAgICAgICAgICAgICBiYXI6IHVuZGVmaW5lZAorICAgICAgICAg
ICAgfSwgMywgIkhleSEiLCAizprOrM69zrUgz4DOrM69z4TOsSDOs869z4nPgc6vzrbOv8+FzrzO
tSDOsc+CIM+Ez4nOvSwgzrzOt8+HzrHOvc6uz4IgzrXPgM65zrTOuc+Mz4HOuM+Jz4POt8+CIM61
z4DOuc60zrnOv8+BzrjPjs+DzrXOuc+CIM+Oz4IgzrzOuc6xLiDOms67z4AgzrHPgiIKKyAgICAg
ICAgXSwKKyAgICAgICAgdW5pY29kZTogIuiAgSDmsYnor63kuK3lrZjlnKgg5riv5r6z5ZKM5rW3
5aSW55qE5Y2O5Lq65ZyI5LitIOi0teW3niDmiJHljrvkuobkuablupcg546w5Zyo5bCa5pyJ5LqJ
IiwKKyAgICAgICAgYjogImIiLAorICAgICAgICBjOiBmbjEKKyAgICB9OworCisgICAgdmFyIGRp
ZmY1ID0geworICAgICAgICBhOiBbCisgICAgICAgICAgICAic3RyaW5nIiwgbnVsbCwgMCwgIjEi
LCAxLCB7CisgICAgICAgICAgICAgICAgcHJvcDogbnVsbCwKKyAgICAgICAgICAgICAgICBmb286
IFsxLDIsbnVsbCx7fSwgW10sIFsxLDIsM11dLAorICAgICAgICAgICAgICAgIGJhdDogdW5kZWZp
bmVkIC8vIGRpZmZlcmVudDogcHJvcGVydHkgbmFtZSBub3QgImJhciIKKyAgICAgICAgICAgIH0s
IDMsICJIZXkhIiwgIs6azqzOvc61IM+AzqzOvc+EzrEgzrPOvc+Jz4HOr862zr/Phc68zrUgzrHP
giDPhM+Jzr0sIM68zrfPh86xzr3Ors+CIM61z4DOuc60zrnPjM+BzrjPic+DzrfPgiDOtc+AzrnO
tM65zr/Pgc64z47Pg861zrnPgiDPjs+CIM68zrnOsS4gzprOu8+AIM6xz4IiCisgICAgICAgIF0s
CisgICAgICAgIHVuaWNvZGU6ICLogIEg5rGJ6K+t5Lit5a2Y5ZyoIOa4r+a+s+WSjOa1t+Wkluea
hOWNjuS6uuWciOS4rSDotLXlt54g5oiR5Y675LqG5Lmm5bqXIOeOsOWcqOWwmuacieS6iSIsCisg
ICAgICAgIGI6ICJiIiwKKyAgICAgICAgYzogZm4xCisgICAgfTsKKworICAgIGVxdWFscyhRVW5p
dC5lcXVpdihzYW1lMSwgc2FtZTIpLCB0cnVlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoc2Ft
ZTIsIHNhbWUxKSwgdHJ1ZSk7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KHNhbWUyLCBkaWZmMSks
IGZhbHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoZGlmZjEsIHNhbWUyKSwgZmFsc2UpOwor
CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KHNhbWUxLCBkaWZmMSksIGZhbHNlKTsKKyAgICBlcXVh
bHMoUVVuaXQuZXF1aXYoc2FtZTEsIGRpZmYyKSwgZmFsc2UpOworICAgIGVxdWFscyhRVW5pdC5l
cXVpdihzYW1lMSwgZGlmZjMpLCBmYWxzZSk7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KHNhbWUx
LCBkaWZmMyksIGZhbHNlKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoc2FtZTEsIGRpZmY0KSwg
ZmFsc2UpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihzYW1lMSwgZGlmZjUpLCBmYWxzZSk7Cisg
ICAgZXF1YWxzKFFVbml0LmVxdWl2KGRpZmY1LCBkaWZmMSksIGZhbHNlKTsKK30pOworCisKK3Rl
c3QoIkNvbXBsZXggQXJyYXlzLiIsIGZ1bmN0aW9uKCkgeworCisgICAgZnVuY3Rpb24gZm4oKSB7
CisgICAgfQorCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KAorICAgICAgICAgICAgICAgIFsxLCAy
LCAzLCB0cnVlLCB7fSwgbnVsbCwgWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhOiBbIiIsICcxJywgMF0KKyAgICAgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAgICAgNSwgNiwgNworICAgICAgICAgICAgICAgIF0sICJmb28iXSwKKyAg
ICAgICAgICAgICAgICBbMSwgMiwgMywgdHJ1ZSwge30sIG51bGwsIFsKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgYTogWyIiLCAnMScsIDBdCisgICAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIDUsIDYsIDcKKyAgICAgICAgICAg
ICAgICBdLCAiZm9vIl0pLAorICAgICAgICAgICAgdHJ1ZSk7CisKKyAgICBlcXVhbHMoUVVuaXQu
ZXF1aXYoCisgICAgICAgICAgICAgICAgWzEsIDIsIDMsIHRydWUsIHt9LCBudWxsLCBbCisgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGE6IFsiIiwgJzEnLCAw
XQorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICA1LCA2LCA3Cisg
ICAgICAgICAgICAgICAgXSwgImZvbyJdLAorICAgICAgICAgICAgICAgIFsxLCAyLCAzLCB0cnVl
LCB7fSwgbnVsbCwgWworICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBiOiBbIiIsICcxJywgMF0gICAgICAgICAvLyBub3Qgc2FtZSBwcm9wZXJ0eSBuYW1lCisg
ICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIDUsIDYsIDcKKyAgICAg
ICAgICAgICAgICBdLCAiZm9vIl0pLAorICAgICAgICAgICAgZmFsc2UpOworCisgICAgdmFyIGEg
PSBbeworICAgICAgICBiOiBmbiwKKyAgICAgICAgYzogZmFsc2UsCisgICAgICAgICJkbyI6ICJy
ZXNlcnZlZCB3b3JkIiwKKyAgICAgICAgImZvciI6IHsKKyAgICAgICAgICAgIGFyOiBbMyw1LDks
ImhleSEiLCBbXSwgeworICAgICAgICAgICAgICAgIGFyOiBbMSxbCisgICAgICAgICAgICAgICAg
ICAgIDMsNCw2LDksIG51bGwsIFtdLCBbXQorICAgICAgICAgICAgICAgIF1dLAorICAgICAgICAg
ICAgICAgIGU6IGZuLAorICAgICAgICAgICAgICAgIGY6IHVuZGVmaW5lZAorICAgICAgICAgICAg
fV0KKyAgICAgICAgfSwKKyAgICAgICAgZTogMC40MzQ0NQorICAgIH0sIDUsICJzdHJpbmciLCAw
LCBmbiwgZmFsc2UsIG51bGwsIHVuZGVmaW5lZCwgMCwgWworICAgICAgICA0LDUsNiw3LDgsOSwx
MSwyMiwzMyw0NCw1NSwiNjYiLCBudWxsLCBbXSwgW1tbW1szXV1dXSwgIjMiXSwge30sIDEvMAor
ICAgIF0sIFtdLCBbW1tdLCAiZm9vIiwgbnVsbCwgeworICAgICAgICBuOiAxLzAsCisgICAgICAg
IHo6IHsKKyAgICAgICAgICAgIGE6IFszLDQsNSw2LCJ5ZXAhIiwgdW5kZWZpbmVkLCB1bmRlZmlu
ZWRdLAorICAgICAgICAgICAgYjoge30KKyAgICAgICAgfQorICAgIH0sIHt9XV1dOworCisgICAg
ZXF1YWxzKFFVbml0LmVxdWl2KGEsCisgICAgICAgICAgICBbeworICAgICAgICAgICAgICAgIGI6
IGZuLAorICAgICAgICAgICAgICAgIGM6IGZhbHNlLAorICAgICAgICAgICAgICAgICJkbyI6ICJy
ZXNlcnZlZCB3b3JkIiwKKyAgICAgICAgICAgICAgICAiZm9yIjogeworICAgICAgICAgICAgICAg
ICAgICBhcjogWzMsNSw5LCJoZXkhIiwgW10sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFy
OiBbMSxbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyw0LDYsOSwgbnVsbCwgW10sIFtd
CisgICAgICAgICAgICAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGU6
IGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgZjogdW5kZWZpbmVkCisgICAgICAgICAgICAg
ICAgICAgIH1dCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBlOiAwLjQzNDQ1
CisgICAgICAgICAgICB9LCA1LCAic3RyaW5nIiwgMCwgZm4sIGZhbHNlLCBudWxsLCB1bmRlZmlu
ZWQsIDAsIFsKKyAgICAgICAgICAgICAgICA0LDUsNiw3LDgsOSwxMSwyMiwzMyw0NCw1NSwiNjYi
LCBudWxsLCBbXSwgW1tbW1szXV1dXSwgIjMiXSwge30sIDEvMAorICAgICAgICAgICAgXSwgW10s
IFtbW10sICJmb28iLCBudWxsLCB7CisgICAgICAgICAgICAgICAgbjogMS8wLAorICAgICAgICAg
ICAgICAgIHo6IHsKKyAgICAgICAgICAgICAgICAgICAgYTogWzMsNCw1LDYsInllcCEiLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZF0sCisgICAgICAgICAgICAgICAgICAgIGI6IHt9CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSwge31dXV0pLCB0cnVlKTsKKworICAgIGVxdWFscyhRVW5p
dC5lcXVpdihhLAorICAgICAgICAgICAgW3sKKyAgICAgICAgICAgICAgICBiOiBmbiwKKyAgICAg
ICAgICAgICAgICBjOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAiZG8iOiAicmVzZXJ2ZWQgd29y
ZCIsCisgICAgICAgICAgICAgICAgImZvciI6IHsKKyAgICAgICAgICAgICAgICAgICAgYXI6IFsz
LDUsOSwiaGV5ISIsIFtdLCB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcjogWzEsWworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMsNCw2LDksIG51bGwsIFtdLCBbXQorICAgICAgICAg
ICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAgICAgICAgICAgICAgICBlOiBmbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGY6IHVuZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICB9XQor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZTogMC40MzQ0NQorICAgICAgICAg
ICAgfSwgNSwgInN0cmluZyIsIDAsIGZuLCBmYWxzZSwgbnVsbCwgdW5kZWZpbmVkLCAwLCBbCisg
ICAgICAgICAgICAgICAgNCw1LDYsNyw4LDksMTEsMjIsMzMsNDQsNTUsIjY2IiwgbnVsbCwgW10s
IFtbW1tbMl1dXV0sICIzIl0sIHt9LCAxLzAgICAgLy8gZGlmZmVyZW50OiBbW1tbWzJdXV1dXSBp
bnN0ZWFkIG9mIFtbW1tbM11dXV1dCisgICAgICAgICAgICBdLCBbXSwgW1tbXSwgImZvbyIsIG51
bGwsIHsKKyAgICAgICAgICAgICAgICBuOiAxLzAsCisgICAgICAgICAgICAgICAgejogeworICAg
ICAgICAgICAgICAgICAgICBhOiBbMyw0LDUsNiwieWVwISIsIHVuZGVmaW5lZCwgdW5kZWZpbmVk
XSwKKyAgICAgICAgICAgICAgICAgICAgYjoge30KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9LCB7fV1dXSksIGZhbHNlKTsKKworICAgIGVxdWFscyhRVW5pdC5lcXVpdihhLAorICAg
ICAgICAgICAgW3sKKyAgICAgICAgICAgICAgICBiOiBmbiwKKyAgICAgICAgICAgICAgICBjOiBm
YWxzZSwKKyAgICAgICAgICAgICAgICAiZG8iOiAicmVzZXJ2ZWQgd29yZCIsCisgICAgICAgICAg
ICAgICAgImZvciI6IHsKKyAgICAgICAgICAgICAgICAgICAgYXI6IFszLDUsOSwiaGV5ISIsIFtd
LCB7CisgICAgICAgICAgICAgICAgICAgICAgICBhcjogWzEsWworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMsNCw2LDksIG51bGwsIFtdLCBbXQorICAgICAgICAgICAgICAgICAgICAgICAg
XV0sCisgICAgICAgICAgICAgICAgICAgICAgICBlOiBmbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGY6IHVuZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICB9XQorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgZTogMC40MzQ0NQorICAgICAgICAgICAgfSwgNSwgInN0cmlu
ZyIsIDAsIGZuLCBmYWxzZSwgbnVsbCwgdW5kZWZpbmVkLCAwLCBbCisgICAgICAgICAgICAgICAg
NCw1LDYsNyw4LDksMTEsMjIsMzMsNDQsNTUsIjY2IiwgbnVsbCwgW10sIFtbW1tbM11dXV0sICIz
Il0sIHt9LCAxLzAKKyAgICAgICAgICAgIF0sIFtdLCBbW1tdLCAiZm9vIiwgbnVsbCwgeworICAg
ICAgICAgICAgICAgIG46IC0xLzAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpZmZlcmVudCwgLUluZmluaXR5IGluc3Rl
YWQgb2YgSW5maW5pdHkKKyAgICAgICAgICAgICAgICB6OiB7CisgICAgICAgICAgICAgICAgICAg
IGE6IFszLDQsNSw2LCJ5ZXAhIiwgdW5kZWZpbmVkLCB1bmRlZmluZWRdLAorICAgICAgICAgICAg
ICAgICAgICBiOiB7fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIHt9XV1dKSwg
ZmFsc2UpOworCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGEsCisgICAgICAgICAgICBbeworICAg
ICAgICAgICAgICAgIGI6IGZuLAorICAgICAgICAgICAgICAgIGM6IGZhbHNlLAorICAgICAgICAg
ICAgICAgICJkbyI6ICJyZXNlcnZlZCB3b3JkIiwKKyAgICAgICAgICAgICAgICAiZm9yIjogewor
ICAgICAgICAgICAgICAgICAgICBhcjogWzMsNSw5LCJoZXkhIiwgW10sIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFyOiBbMSxbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMyw0LDYs
OSwgbnVsbCwgW10sIFtdCisgICAgICAgICAgICAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGU6IGZuLAorICAgICAgICAgICAgICAgICAgICAgICAgZjogdW5kZWZpbmVk
CisgICAgICAgICAgICAgICAgICAgIH1dCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICBlOiAwLjQzNDQ1CisgICAgICAgICAgICB9LCA1LCAic3RyaW5nIiwgMCwgZm4sIGZhbHNl
LCBudWxsLCB1bmRlZmluZWQsIDAsIFsKKyAgICAgICAgICAgICAgICA0LDUsNiw3LDgsOSwxMSwy
MiwzMyw0NCw1NSwiNjYiLCBudWxsLCBbXSwgW1tbW1szXV1dXSwgIjMiXSwge30sIDEvMAorICAg
ICAgICAgICAgXSwgW10sIFtbW10sICJmb28iLCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpZmZlcmVudDogbnVsbCBpcyBtaXNzaW5n
CisgICAgICAgICAgICAgICAgbjogMS8wLAorICAgICAgICAgICAgICAgIHo6IHsKKyAgICAgICAg
ICAgICAgICAgICAgYTogWzMsNCw1LDYsInllcCEiLCB1bmRlZmluZWQsIHVuZGVmaW5lZF0sCisg
ICAgICAgICAgICAgICAgICAgIGI6IHt9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSwge31dXV0pLCBmYWxzZSk7CisKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoYSwKKyAgICAgICAg
ICAgIFt7CisgICAgICAgICAgICAgICAgYjogZm4sCisgICAgICAgICAgICAgICAgYzogZmFsc2Us
CisgICAgICAgICAgICAgICAgImRvIjogInJlc2VydmVkIHdvcmQiLAorICAgICAgICAgICAgICAg
ICJmb3IiOiB7CisgICAgICAgICAgICAgICAgICAgIGFyOiBbMyw1LDksImhleSEiLCBbXSwgewor
ICAgICAgICAgICAgICAgICAgICAgICAgYXI6IFsxLFsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLDQsNiw5LCBudWxsLCBbXSwgW10KKyAgICAgICAgICAgICAgICAgICAgICAgIF1dLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZTogZm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g
ZGlmZmVyZW50OiBtaXNzaW5nIHByb3BlcnR5IGY6IHVuZGVmaW5lZAorICAgICAgICAgICAgICAg
ICAgICB9XQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgZTogMC40MzQ0NQor
ICAgICAgICAgICAgfSwgNSwgInN0cmluZyIsIDAsIGZuLCBmYWxzZSwgbnVsbCwgdW5kZWZpbmVk
LCAwLCBbCisgICAgICAgICAgICAgICAgNCw1LDYsNyw4LDksMTEsMjIsMzMsNDQsNTUsIjY2Iiwg
bnVsbCwgW10sIFtbW1tbM11dXV0sICIzIl0sIHt9LCAxLzAKKyAgICAgICAgICAgIF0sIFtdLCBb
W1tdLCAiZm9vIiwgbnVsbCwgeworICAgICAgICAgICAgICAgIG46IDEvMCwKKyAgICAgICAgICAg
ICAgICB6OiB7CisgICAgICAgICAgICAgICAgICAgIGE6IFszLDQsNSw2LCJ5ZXAhIiwgdW5kZWZp
bmVkLCB1bmRlZmluZWRdLAorICAgICAgICAgICAgICAgICAgICBiOiB7fQorICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sIHt9XV1dKSwgZmFsc2UpOworfSk7CisKKwordGVzdCgiUHJv
dG90eXBhbCBpbmhlcml0YW5jZSIsIGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIEdpem1vKGlk
KSB7CisgICAgICAgIHRoaXMuaWQgPSBpZDsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBIb296aXQo
aWQpIHsKKyAgICAgICAgdGhpcy5pZCA9IGlkOworICAgIH0KKyAgICBIb296aXQucHJvdG90eXBl
ID0gbmV3IEdpem1vKCk7CisKKyAgICB2YXIgZ2l6bW8gPSBuZXcgR2l6bW8oIm9rIik7CisgICAg
dmFyIGhvb3ppdCA9IG5ldyBIb296aXQoIm9rIik7CisKKyAgICAvLyBUcnkgdGhpcyB0ZXN0IG1h
bnkgdGltZXMgYWZ0ZXIgdGVzdCBvbiBpbnN0YW5jZXMgdGhhdCBob2xkIGZ1bmN0aW9uCisgICAg
Ly8gdG8gbWFrZSBzdXJlIHRoYXQgb3VyIGNvZGUgZG9lcyBub3QgbWVzcyB3aXRoIGxhc3Qgb2Jq
ZWN0IGNvbnN0cnVjdG9yIG1lbW9pemF0aW9uLgorICAgIGVxdWFscyhRVW5pdC5lcXVpdihmdW5j
dGlvbiAoKSB7fSwgZnVuY3Rpb24gKCkge30pLCBmYWxzZSk7CisKKyAgICAvLyBIb296aXQgaW5o
ZXJpdCBmcm9tIEdpem1vCisgICAgLy8gaG9veml0IGluc3RhbmNlb2YgSG9veml0OyAvLyB0cnVl
CisgICAgLy8gaG9veml0IGluc3RhbmNlb2YgR2l6bW87IC8vIHRydWUKKyAgICBlcXVhbHMoUVVu
aXQuZXF1aXYoaG9veml0LCBnaXptbyksIHRydWUpOworCisgICAgR2l6bW8ucHJvdG90eXBlLmJh
ciA9IHRydWU7IC8vIG5vdCBhIGZ1bmN0aW9uIGp1c3QgaW4gY2FzZSB3ZSBza2lwIHRoZW0KKwor
ICAgIC8vIEhvb3ppdCBpbmhlcml0IGZyb20gR2l6bW8KKyAgICAvLyBUaGV5IGFyZSBlcXVpdmFs
ZW50CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGhvb3ppdCwgZ2l6bW8pLCB0cnVlKTsKKworICAg
IC8vIE1ha2Ugc3VyZSB0aGlzIGlzIHN0aWxsIHRydWUgIWltcG9ydGFudAorICAgIC8vIFRoZSBy
ZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBJIGZvcmdvdCB0byByZXNldCB0aGUgbGFzdAorICAgIC8v
IGNhbGxlciB0byB3aGVyZSBpdCB3ZXJlIGNhbGxlZCBmcm9tLgorICAgIGVxdWFscyhRVW5pdC5l
cXVpdihmdW5jdGlvbiAoKSB7fSwgZnVuY3Rpb24gKCkge30pLCBmYWxzZSk7CisKKyAgICAvLyBN
YWtlIHN1cmUgdGhpcyBpcyBzdGlsbCB0cnVlICFpbXBvcnRhbnQKKyAgICBlcXVhbHMoUVVuaXQu
ZXF1aXYoaG9veml0LCBnaXptbyksIHRydWUpOworCisgICAgSG9veml0LnByb3RvdHlwZS5mb28g
PSB0cnVlOyAvLyBub3QgYSBmdW5jdGlvbiBqdXN0IGluIGNhc2Ugd2Ugc2tpcCB0aGVtCisKKyAg
ICAvLyBHaXptbyBkb2VzIG5vdCBpbmhlcml0IGZyb20gSG9veml0CisgICAgLy8gZ2l6bW8gaW5z
dGFuY2VvZiBHaXptbzsgLy8gdHJ1ZQorICAgIC8vIGdpem1vIGluc3RhbmNlb2YgSG9veml0OyAv
LyBmYWxzZQorICAgIC8vIFRoZXkgYXJlIG5vdCBlcXVpdmFsZW50CisgICAgZXF1YWxzKFFVbml0
LmVxdWl2KGhvb3ppdCwgZ2l6bW8pLCBmYWxzZSk7CisKKyAgICAvLyBNYWtlIHN1cmUgdGhpcyBp
cyBzdGlsbCB0cnVlICFpbXBvcnRhbnQKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoZnVuY3Rpb24g
KCkge30sIGZ1bmN0aW9uICgpIHt9KSwgZmFsc2UpOworfSk7CisKKwordGVzdCgiSW5zdGFuY2Vz
IiwgZnVuY3Rpb24oKSB7CisgICAgZnVuY3Rpb24gQSgpIHt9CisgICAgdmFyIGExID0gbmV3IEEo
KTsKKyAgICB2YXIgYTIgPSBuZXcgQSgpOworCisgICAgZnVuY3Rpb24gQigpIHsKKyAgICAgICAg
dGhpcy5mbiA9IGZ1bmN0aW9uICgpIHt9OworICAgIH0KKyAgICB2YXIgYjEgPSBuZXcgQigpOwor
ICAgIHZhciBiMiA9IG5ldyBCKCk7CisKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoYTEsIGEyKSwg
dHJ1ZSwgIlNhbWUgcHJvcGVydHksIHNhbWUgY29uc3RydWN0b3IiKTsKKworICAgIC8vIGIxLmZu
IGFuZCBiMi5mbiBhcmUgZnVuY3Rpb25zIGJ1dCB0aGV5IGFyZSBkaWZmZXJlbnQgcmVmZXJlbmNl
cworICAgIC8vIEJ1dCB3ZSBkZWNpZGVkIHRvIHNraXAgZnVuY3Rpb24gZm9yIGluc3RhbmNlcy4K
KyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoYjEsIGIyKSwgdHJ1ZSwgIlNhbWUgcHJvcGVydHksIHNh
bWUgY29uc3RydWN0b3IiKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoYTEsIGIxKSwgZmFsc2Us
ICJTYW1lIHByb3BlcnRpZXMgYnV0IGRpZmZlcmVudCBjb25zdHJ1Y3RvciIpOyAvLyBmYWlsZWQK
KworICAgIGZ1bmN0aW9uIENhcih5ZWFyKSB7CisgICAgICAgIHZhciBwcml2YXRlVmFyID0gMDsK
KyAgICAgICAgdGhpcy55ZWFyID0geWVhcjsKKyAgICAgICAgdGhpcy5pc09sZCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgcmV0dXJuIHllYXIgPiAxMDsKKyAgICAgICAgfTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBIdW1hbih5ZWFyKSB7CisgICAgICAgIHZhciBwcml2YXRlVmFyID0gMTsK
KyAgICAgICAgdGhpcy55ZWFyID0geWVhcjsKKyAgICAgICAgdGhpcy5pc09sZCA9IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgcmV0dXJuIHllYXIgPiA4MDsKKyAgICAgICAgfTsKKyAgICB9CisK
KyAgICB2YXIgY2FyID0gbmV3IENhcigzMCk7CisgICAgdmFyIGNhclNhbWUgPSBuZXcgQ2FyKDMw
KTsKKyAgICB2YXIgY2FyRGlmZiA9IG5ldyBDYXIoMTApOworICAgIHZhciBodW1hbiA9IG5ldyBI
dW1hbigzMCk7CisKKyAgICB2YXIgZGlmZiA9IHsKKyAgICAgICAgeWVhcjogMzAKKyAgICB9Owor
CisgICAgdmFyIHNhbWUgPSB7CisgICAgICAgIHllYXI6IDMwLAorICAgICAgICBpc09sZDogZnVu
Y3Rpb24gKCkge30KKyAgICB9OworCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGNhciwgY2FyKSwg
dHJ1ZSk7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGNhciwgY2FyRGlmZiksIGZhbHNlKTsKKyAg
ICBlcXVhbHMoUVVuaXQuZXF1aXYoY2FyLCBjYXJTYW1lKSwgdHJ1ZSk7CisgICAgZXF1YWxzKFFV
bml0LmVxdWl2KGNhciwgaHVtYW4pLCBmYWxzZSk7Cit9KTsKKworCit0ZXN0KCJDb21wbGV4IElu
c3RhbmNlcyBOZXN0aW5nICh3aXRoIGZ1bmN0aW9uIHZhbHVlIGluIGxpdGVyYWxzIGFuZC9vciBp
biBuZXN0ZWQgaW5zdGFuY2VzKSIsIGZ1bmN0aW9uKCkgeworICAgIGZ1bmN0aW9uIEEoZm4pIHsK
KyAgICAgICAgdGhpcy5hID0ge307CisgICAgICAgIHRoaXMuZm4gPSBmbjsKKyAgICAgICAgdGhp
cy5iID0ge2E6IFtdfTsKKyAgICAgICAgdGhpcy5vID0ge307CisgICAgICAgIHRoaXMuZm4xID0g
Zm47CisgICAgfQorICAgIGZ1bmN0aW9uIEIoZm4pIHsKKyAgICAgICAgdGhpcy5mbiA9IGZuOwor
ICAgICAgICB0aGlzLmZuMSA9IGZ1bmN0aW9uICgpIHt9OworICAgICAgICB0aGlzLmEgPSBuZXcg
QShmdW5jdGlvbiAoKSB7fSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gZm5PdXRzaWRlKCkgewor
ICAgIH0KKworICAgIGZ1bmN0aW9uIEMoZm4pIHsKKyAgICAgICAgZnVuY3Rpb24gZm5JbnNpZGUo
KSB7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy54ID0gMTA7CisgICAgICAgIHRoaXMuZm4gPSBm
bjsKKyAgICAgICAgdGhpcy5mbjEgPSBmdW5jdGlvbiAoKSB7fTsKKyAgICAgICAgdGhpcy5mbjIg
PSBmbkluc2lkZTsKKyAgICAgICAgdGhpcy5mbjMgPSB7CisgICAgICAgICAgICBhOiB0cnVlLAor
ICAgICAgICAgICAgYjogZm5PdXRzaWRlIC8vIG9rIG1ha2UgcmVmZXJlbmNlIHRvIGEgZnVuY3Rp
b24gaW4gYWxsIGluc3RhbmNlcyBzY29wZQorICAgICAgICB9OworICAgICAgICB0aGlzLm8xID0g
e307CisKKyAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGlnbm9yZWQuCisgICAgICAg
IC8vIEV2ZW4gaWYgaXQgaXMgbm90IHZpc2libGUgZm9yIGFsbCBpbnN0YW5jZXMgKGUuZy4gbG9j
a2VkIGluIGEgY2xvc3VyZXMpLAorICAgICAgICAvLyBpdCBpcyBmcm9tIGEgIHByb3BlcnR5IHRo
YXQgbWFrZXMgcGFydCBvZiBhbiBpbnN0YW5jZSAoZS5nLiBmcm9tIHRoZSBDIGNvbnN0cnVjdG9y
KQorICAgICAgICB0aGlzLmIxID0gbmV3IEIoZnVuY3Rpb24gKCkge30pOworICAgICAgICB0aGlz
LmIyID0gbmV3IEIoeworICAgICAgICAgICAgeDogeworICAgICAgICAgICAgICAgIGIyOiBuZXcg
QihmdW5jdGlvbigpIHt9KQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBEKGZuKSB7CisgICAgICAgIGZ1bmN0aW9uIGZuSW5zaWRlKCkgeworICAgICAg
ICB9CisgICAgICAgIHRoaXMueCA9IDEwOworICAgICAgICB0aGlzLmZuID0gZm47CisgICAgICAg
IHRoaXMuZm4xID0gZnVuY3Rpb24gKCkge307CisgICAgICAgIHRoaXMuZm4yID0gZm5JbnNpZGU7
CisgICAgICAgIHRoaXMuZm4zID0geworICAgICAgICAgICAgYTogdHJ1ZSwKKyAgICAgICAgICAg
IGI6IGZuT3V0c2lkZSwgLy8gb2sgbWFrZSByZWZlcmVuY2UgdG8gYSBmdW5jdGlvbiBpbiBhbGwg
aW5zdGFuY2VzIHNjb3BlCisKKyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd29uJ3QgYmUg
aW5nb3JlZC4KKyAgICAgICAgICAgIC8vIEl0IGlzbid0IHZpc2libGUgZm9yIGFsbCBDIGluc2Fu
Y2VzCisgICAgICAgICAgICAvLyBhbmQgaXQgaXMgbm90IGluIGEgcHJvcGVydHkgb2YgYW4gaW5z
dGFuY2UuIChpbiBhbiBPYmplY3QgaW5zdGFuY2VzIGUuZy4gdGhlIG9iamVjdCBsaXRlcmFsKQor
ICAgICAgICAgICAgYzogZm5JbnNpZGUKKyAgICAgICAgfTsKKyAgICAgICAgdGhpcy5vMSA9IHt9
OworCisgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBpZ25vcmVkLgorICAgICAgICAv
LyBFdmVuIGlmIGl0IGlzIG5vdCB2aXNpYmxlIGZvciBhbGwgaW5zdGFuY2VzIChlLmcuIGxvY2tl
ZCBpbiBhIGNsb3N1cmVzKSwKKyAgICAgICAgLy8gaXQgaXMgZnJvbSBhICBwcm9wZXJ0eSB0aGF0
IG1ha2VzIHBhcnQgb2YgYW4gaW5zdGFuY2UgKGUuZy4gZnJvbSB0aGUgQyBjb25zdHJ1Y3RvcikK
KyAgICAgICAgdGhpcy5iMSA9IG5ldyBCKGZ1bmN0aW9uICgpIHt9KTsKKyAgICAgICAgdGhpcy5i
MiA9IG5ldyBCKHsKKyAgICAgICAgICAgIHg6IHsKKyAgICAgICAgICAgICAgICBiMjogbmV3IEIo
ZnVuY3Rpb24oKSB7fSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gRShmbikgeworICAgICAgICBmdW5jdGlvbiBmbkluc2lkZSgpIHsKKyAgICAgICAg
fQorICAgICAgICB0aGlzLnggPSAxMDsKKyAgICAgICAgdGhpcy5mbiA9IGZuOworICAgICAgICB0
aGlzLmZuMSA9IGZ1bmN0aW9uICgpIHt9OworICAgICAgICB0aGlzLmZuMiA9IGZuSW5zaWRlOwor
ICAgICAgICB0aGlzLmZuMyA9IHsKKyAgICAgICAgICAgIGE6IHRydWUsCisgICAgICAgICAgICBi
OiBmbk91dHNpZGUgLy8gb2sgbWFrZSByZWZlcmVuY2UgdG8gYSBmdW5jdGlvbiBpbiBhbGwgaW5z
dGFuY2VzIHNjb3BlCisgICAgICAgIH07CisgICAgICAgIHRoaXMubzEgPSB7fTsKKworICAgICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgaWdub3JlZC4KKyAgICAgICAgLy8gRXZlbiBpZiBp
dCBpcyBub3QgdmlzaWJsZSBmb3IgYWxsIGluc3RhbmNlcyAoZS5nLiBsb2NrZWQgaW4gYSBjbG9z
dXJlcyksCisgICAgICAgIC8vIGl0IGlzIGZyb20gYSAgcHJvcGVydHkgdGhhdCBtYWtlcyBwYXJ0
IG9mIGFuIGluc3RhbmNlIChlLmcuIGZyb20gdGhlIEMgY29uc3RydWN0b3IpCisgICAgICAgIHRo
aXMuYjEgPSBuZXcgQihmdW5jdGlvbiAoKSB7fSk7CisgICAgICAgIHRoaXMuYjIgPSBuZXcgQih7
CisgICAgICAgICAgICB4OiB7CisgICAgICAgICAgICAgICAgYjE6IG5ldyBCKHthOiBmdW5jdGlv
bigpIHt9fSksCisgICAgICAgICAgICAgICAgYjI6IG5ldyBCKGZ1bmN0aW9uKCkge30pCisgICAg
ICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworCisgICAgdmFyIGExID0gbmV3IEEoZnVu
Y3Rpb24gKCkge30pOworICAgIHZhciBhMiA9IG5ldyBBKGZ1bmN0aW9uICgpIHt9KTsKKyAgICBl
cXVhbHMoUVVuaXQuZXF1aXYoYTEsIGEyKSwgdHJ1ZSk7CisKKyAgICBlcXVhbHMoUVVuaXQuZXF1
aXYoYTEsIGEyKSwgdHJ1ZSk7IC8vIGRpZmZlcmVudCBpbnN0YW5jZXMKKworICAgIHZhciBiMSA9
IG5ldyBCKGZ1bmN0aW9uICgpIHt9KTsKKyAgICB2YXIgYjIgPSBuZXcgQihmdW5jdGlvbiAoKSB7
fSk7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGIxLCBiMiksIHRydWUpOworCisgICAgdmFyIGMx
ID0gbmV3IEMoZnVuY3Rpb24gKCkge30pOworICAgIHZhciBjMiA9IG5ldyBDKGZ1bmN0aW9uICgp
IHt9KTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoYzEsIGMyKSwgdHJ1ZSk7CisKKyAgICB2YXIg
ZDEgPSBuZXcgRChmdW5jdGlvbiAoKSB7fSk7CisgICAgdmFyIGQyID0gbmV3IEQoZnVuY3Rpb24g
KCkge30pOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihkMSwgZDIpLCBmYWxzZSk7CisKKyAgICB2
YXIgZTEgPSBuZXcgRShmdW5jdGlvbiAoKSB7fSk7CisgICAgdmFyIGUyID0gbmV3IEUoZnVuY3Rp
b24gKCkge30pOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihlMSwgZTIpLCBmYWxzZSk7CisKK30p
OworCisKK3Rlc3QoJ29iamVjdCB3aXRoIHJlZmVyZW5jZXMgdG8gc2VsZiB3b250IGxvb3AnLCBm
dW5jdGlvbigpeworICAgIHZhciBjaXJjdWxhckEgPSB7CisgICAgICAgIGFiYzpudWxsCisgICAg
fSwgY2lyY3VsYXJCID0geworICAgICAgICBhYmM6bnVsbAorICAgIH07CisgICAgY2lyY3VsYXJB
LmFiYyA9IGNpcmN1bGFyQTsKKyAgICBjaXJjdWxhckIuYWJjID0gY2lyY3VsYXJCOworICAgIGVx
dWFscyhRVW5pdC5lcXVpdihjaXJjdWxhckEsIGNpcmN1bGFyQiksIHRydWUsICJTaG91bGQgbm90
IHJlcGVhdCB0ZXN0IG9uIG9iamVjdCAoYW1iaWdvdXMgdGVzdCkiKTsKKworICAgIGNpcmN1bGFy
QS5kZWYgPSAxOworICAgIGNpcmN1bGFyQi5kZWYgPSAxOworICAgIGVxdWFscyhRVW5pdC5lcXVp
dihjaXJjdWxhckEsIGNpcmN1bGFyQiksIHRydWUsICJTaG91bGQgbm90IHJlcGVhdCB0ZXN0IG9u
IG9iamVjdCAoYW1iaWdvdXMgdGVzdCkiKTsKKworICAgIGNpcmN1bGFyQS5kZWYgPSAxOworICAg
IGNpcmN1bGFyQi5kZWYgPSAwOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihjaXJjdWxhckEsIGNp
cmN1bGFyQiksIGZhbHNlLCAiU2hvdWxkIG5vdCByZXBlYXQgdGVzdCBvbiBvYmplY3QgKHVuYW1i
aWdvdXMgdGVzdCkiKTsKK30pOworCit0ZXN0KCdhcnJheSB3aXRoIHJlZmVyZW5jZXMgdG8gc2Vs
ZiB3b250IGxvb3AnLCBmdW5jdGlvbigpeworICAgIHZhciBjaXJjdWxhckEgPSBbXSwKKyAgICAg
ICAgY2lyY3VsYXJCID0gW107CisgICAgY2lyY3VsYXJBLnB1c2goY2lyY3VsYXJBKTsKKyAgICBj
aXJjdWxhckIucHVzaChjaXJjdWxhckIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihjaXJjdWxh
ckEsIGNpcmN1bGFyQiksIHRydWUsICJTaG91bGQgbm90IHJlcGVhdCB0ZXN0IG9uIGFycmF5IChh
bWJpZ291cyB0ZXN0KSIpOworCisgICAgY2lyY3VsYXJBLnB1c2goICdhYmMnICk7CisgICAgY2ly
Y3VsYXJCLnB1c2goICdhYmMnICk7CisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGNpcmN1bGFyQSwg
Y2lyY3VsYXJCKSwgdHJ1ZSwgIlNob3VsZCBub3QgcmVwZWF0IHRlc3Qgb24gYXJyYXkgKGFtYmln
b3VzIHRlc3QpIik7CisKKyAgICBjaXJjdWxhckEucHVzaCggJ2hlbGxvJyApOworICAgIGNpcmN1
bGFyQi5wdXNoKCAnZ29vZGJ5ZScgKTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYoY2lyY3VsYXJB
LCBjaXJjdWxhckIpLCBmYWxzZSwgIlNob3VsZCBub3QgcmVwZWF0IHRlc3Qgb24gYXJyYXkgKHVu
YW1iaWdvdXMgdGVzdCkiKTsKK30pOworCit0ZXN0KCdtaXhlZCBvYmplY3QvYXJyYXkgd2l0aCBy
ZWZlcmVuY2VzIHRvIHNlbGYgd29udCBsb29wJywgZnVuY3Rpb24oKXsKKyAgICB2YXIgY2lyY3Vs
YXJBID0gW3thYmM6bnVsbH1dLAorICAgICAgICBjaXJjdWxhckIgPSBbe2FiYzpudWxsfV07Cisg
ICAgY2lyY3VsYXJBWzBdLmFiYyA9IGNpcmN1bGFyQTsKKyAgICBjaXJjdWxhckJbMF0uYWJjID0g
Y2lyY3VsYXJCOworCisgICAgY2lyY3VsYXJBLnB1c2goY2lyY3VsYXJBKTsKKyAgICBjaXJjdWxh
ckIucHVzaChjaXJjdWxhckIpOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihjaXJjdWxhckEsIGNp
cmN1bGFyQiksIHRydWUsICJTaG91bGQgbm90IHJlcGVhdCB0ZXN0IG9uIG9iamVjdC9hcnJheSAo
YW1iaWdvdXMgdGVzdCkiKTsKKworICAgIGNpcmN1bGFyQVswXS5kZWYgPSAxOworICAgIGNpcmN1
bGFyQlswXS5kZWYgPSAxOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihjaXJjdWxhckEsIGNpcmN1
bGFyQiksIHRydWUsICJTaG91bGQgbm90IHJlcGVhdCB0ZXN0IG9uIG9iamVjdC9hcnJheSAoYW1i
aWdvdXMgdGVzdCkiKTsKKworICAgIGNpcmN1bGFyQVswXS5kZWYgPSAxOworICAgIGNpcmN1bGFy
QlswXS5kZWYgPSAwOworICAgIGVxdWFscyhRVW5pdC5lcXVpdihjaXJjdWxhckEsIGNpcmN1bGFy
QiksIGZhbHNlLCAiU2hvdWxkIG5vdCByZXBlYXQgdGVzdCBvbiBvYmplY3QvYXJyYXkgKHVuYW1i
aWdvdXMgdGVzdCkiKTsKK30pOworCit0ZXN0KCJUZXN0IHRoYXQgbXVzdCBiZSBkb25lIGF0IHRo
ZSBlbmQgYmVjYXVzZSB0aGV5IGV4dGVuZCBzb21lIHByaW1pdGl2ZSdzIHByb3RvdHlwZSIsIGZ1
bmN0aW9uKCkgeworICAgIC8vIFRyeSB0aGF0IGEgZnVuY3Rpb24gbG9va3MgbGlrZSBvdXIgcmVn
dWxhciBleHByZXNzaW9uLgorICAgIC8vIFRoaXMgdGVzdHMgaWYgd2UgY2hlY2sgdGhhdCBhIGFu
ZCBiIGFyZSByZWFsbHkgYm90aCBpbnN0YW5jZSBvZiBSZWdFeHAKKyAgICBGdW5jdGlvbi5wcm90
b3R5cGUuZ2xvYmFsID0gdHJ1ZTsKKyAgICBGdW5jdGlvbi5wcm90b3R5cGUubXVsdGlsaW5lID0g
dHJ1ZTsKKyAgICBGdW5jdGlvbi5wcm90b3R5cGUuaWdub3JlQ2FzZSA9IGZhbHNlOworICAgIEZ1
bmN0aW9uLnByb3RvdHlwZS5zb3VyY2UgPSAibXkgcmVnZXgiOworICAgIHZhciByZSA9IC9teSBy
ZWdleC9nbTsKKyAgICBlcXVhbHMoUVVuaXQuZXF1aXYocmUsIGZ1bmN0aW9uICgpIHt9KSwgZmFs
c2UsICJBIGZ1bmN0aW9uIHRoYXQgbG9va3MgdGhhdCBhIHJlZ2V4IGlzbid0IGEgcmVnZXgiKTsK
KyAgICAvLyBUaGlzIHRlc3Qgd2lsbCBlbnN1cmVzIGl0IHdvcmtzIGluIGJvdGggd2F5cywgYW5k
IEFMU08gZXNwZWNpYWxseSB0aGF0IHdlIGNhbiBtYWtlIGRpZmZlcmVuY2VzCisgICAgLy8gYmV0
d2VlbiBSZWdFeHAgYW5kIEZ1bmN0aW9uIGNvbnN0cnVjdG9yIGJlY2F1c2UgdHlwZW9mIG9uIGEg
UmVnRXhwdCBpbnN0YW5jZSBpcyAiZnVuY3Rpb24iCisgICAgZXF1YWxzKFFVbml0LmVxdWl2KGZ1
bmN0aW9uICgpIHt9LCByZSksIGZhbHNlLCAiU2FtZSBjb252ZXJzZWx5LCBidXQgZW5zdXJlcyB0
aGF0IGZ1bmN0aW9uIGFuZCByZWdleHAgYXJlIGRpc3RpbmN0IGJlY2F1c2UgdGhlaXIgY29uc3Ry
dWN0b3IgYXJlIGRpZmZlcmVudCIpOworfSk7CkluZGV4OiBTb3VyY2UvVGhpcmRQYXJ0eS9xdW5p
dC90ZXN0L3Rlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvcXVuaXQvdGVz
dC90ZXN0LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL1RoaXJkUGFydHkvcXVuaXQvdGVzdC90
ZXN0LmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyNCBAQAordGVzdCgibW9kdWxlIHdpdGhv
dXQgc2V0dXAvdGVhcmRvd24gKGRlZmF1bHQpIiwgZnVuY3Rpb24oKSB7CisJZXhwZWN0KDEpOwor
CW9rKHRydWUpOworfSk7CisKK3Rlc3QoImV4cGVjdCBpbiB0ZXN0IiwgMywgZnVuY3Rpb24oKSB7
CisJb2sodHJ1ZSk7CisJb2sodHJ1ZSk7CisJb2sodHJ1ZSk7Cit9KTsKKwordGVzdCgiZXhwZWN0
IGluIHRlc3QiLCAxLCBmdW5jdGlvbigpIHsKKwlvayh0cnVlKTsKK30pOworCittb2R1bGUoInNl
dHVwIHRlc3QiLCB7CisJc2V0dXA6IGZ1bmN0aW9uKCkgeworCQlvayh0cnVlKTsKKwl9Cit9KTsK
KwordGVzdCgibW9kdWxlIHdpdGggc2V0dXAiLCBmdW5jdGlvbigpIHsKKwlleHBlY3QoMik7CisJ
b2sodHJ1ZSk7Cit9KTsKKwordGVzdCgibW9kdWxlIHdpdGggc2V0dXAsIGV4cGVjdCBpbiB0ZXN0
IGNhbGwiLCAyLCBmdW5jdGlvbigpIHsKKwlvayh0cnVlKTsKK30pOworCit2YXIgc3RhdGU7CisK
K21vZHVsZSgic2V0dXAvdGVhcmRvd24gdGVzdCIsIHsKKwlzZXR1cDogZnVuY3Rpb24oKSB7CisJ
CXN0YXRlID0gdHJ1ZTsKKwkJb2sodHJ1ZSk7CisJfSwKKwl0ZWFyZG93bjogZnVuY3Rpb24oKSB7
CisJCW9rKHRydWUpOworCX0KK30pOworCit0ZXN0KCJtb2R1bGUgd2l0aCBzZXR1cC90ZWFyZG93
biIsIGZ1bmN0aW9uKCkgeworCWV4cGVjdCgzKTsKKwlvayh0cnVlKTsKK30pOworCittb2R1bGUo
InNldHVwL3RlYXJkb3duIHRlc3QgMiIpOworCit0ZXN0KCJtb2R1bGUgd2l0aG91dCBzZXR1cC90
ZWFyZG93biIsIGZ1bmN0aW9uKCkgeworCWV4cGVjdCgxKTsKKwlvayh0cnVlKTsKK30pOworCitp
ZiAodHlwZW9mIHNldFRpbWVvdXQgIT09ICd1bmRlZmluZWQnKSB7CitzdGF0ZSA9ICdmYWlsJzsK
KworbW9kdWxlKCJ0ZWFyZG93biBhbmQgc3RvcCIsIHsKKwl0ZWFyZG93bjogZnVuY3Rpb24oKSB7
CisJCWVxdWFsKHN0YXRlLCAiZG9uZSIsICJUZXN0IHRlYXJkb3duLiIpOworCX0KK30pOworCit0
ZXN0KCJ0ZWFyZG93biBtdXN0IGJlIGNhbGxlZCBhZnRlciB0ZXN0IGVuZGVkIiwgZnVuY3Rpb24o
KSB7CisJZXhwZWN0KDEpOworCXN0b3AoKTsKKwlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworCQlz
dGF0ZSA9ICJkb25lIjsKKwkJc3RhcnQoKTsKKwl9LCAxMyk7Cit9KTsKKworbW9kdWxlKCJhc3lu
YyBzZXR1cCB0ZXN0IiwgeworCXNldHVwOiBmdW5jdGlvbigpIHsKKwkJc3RvcCgpOworCQlzZXRU
aW1lb3V0KGZ1bmN0aW9uKCl7CisJCQlvayh0cnVlKTsKKwkJCXN0YXJ0KCk7CisJCX0sIDUwMCk7
CisJfQorfSk7CisKK2FzeW5jVGVzdCgibW9kdWxlIHdpdGggYXN5bmMgc2V0dXAiLCBmdW5jdGlv
bigpIHsKKwlleHBlY3QoMik7CisJb2sodHJ1ZSk7CisJc3RhcnQoKTsKK30pOworCittb2R1bGUo
ImFzeW5jIHRlYXJkb3duIHRlc3QiLCB7CisJdGVhcmRvd246IGZ1bmN0aW9uKCkgeworCQlzdG9w
KCk7CisJCXNldFRpbWVvdXQoZnVuY3Rpb24oKXsKKwkJCW9rKHRydWUpOworCQkJc3RhcnQoKTsK
KwkJfSwgNTAwKTsKKwl9Cit9KTsKKworYXN5bmNUZXN0KCJtb2R1bGUgd2l0aCBhc3luYyB0ZWFy
ZG93biIsIGZ1bmN0aW9uKCkgeworCWV4cGVjdCgyKTsKKwlvayh0cnVlKTsKKwlzdGFydCgpOwor
fSk7CisKK21vZHVsZSgiYXN5bmNUZXN0Iik7CisKK2FzeW5jVGVzdCgiYXN5bmNUZXN0IiwgZnVu
Y3Rpb24oKSB7CisJZXhwZWN0KDIpOworCW9rKHRydWUpOworCXNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisJCXN0YXRlID0gImRvbmUiOworCQlvayh0cnVlKTsKKwkJc3RhcnQoKTsKKwl9LCAxMyk7
Cit9KTsKKworYXN5bmNUZXN0KCJhc3luY1Rlc3QiLCAyLCBmdW5jdGlvbigpIHsKKwlvayh0cnVl
KTsKKwlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworCQlzdGF0ZSA9ICJkb25lIjsKKwkJb2sodHJ1
ZSk7CisJCXN0YXJ0KCk7CisJfSwgMTMpOworfSk7CisKK3Rlc3QoInN5bmMiLCAyLCBmdW5jdGlv
bigpIHsKKwlzdG9wKCk7CisJc2V0VGltZW91dChmdW5jdGlvbigpIHsKKwkJb2sodHJ1ZSk7CisJ
CXN0YXJ0KCk7CisJfSwgMTMpOworCXN0b3AoKTsKKwlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
CQlvayh0cnVlKTsKKwkJc3RhcnQoKTsKKwl9LCAxMjUpOworfSk7Cit9CisKK21vZHVsZSgic2F2
ZSBzY29wZSIsIHsKKwlzZXR1cDogZnVuY3Rpb24oKSB7CisJCXRoaXMuZm9vID0gImJhciI7CisJ
fSwKKwl0ZWFyZG93bjogZnVuY3Rpb24oKSB7CisJCWRlZXBFcXVhbCh0aGlzLmZvbywgImJhciIp
OworCX0KK30pOwordGVzdCgic2NvcGUgY2hlY2siLCBmdW5jdGlvbigpIHsKKwlleHBlY3QoMik7
CisJZGVlcEVxdWFsKHRoaXMuZm9vLCAiYmFyIik7Cit9KTsKKworbW9kdWxlKCJzaW1wbGUgdGVz
dEVudmlyb25tZW50IHNldHVwIiwgeworCWZvbzogImJhciIsCisJYnVnaWQ6ICIjNTMxMSIgLy8g
ZXhhbXBsZSBvZiBtZXRhLWRhdGEKK30pOwordGVzdCgic2NvcGUgY2hlY2siLCBmdW5jdGlvbigp
IHsKKwlkZWVwRXF1YWwodGhpcy5mb28sICJiYXIiKTsKK30pOwordGVzdCgibW9kaWZ5IHRlc3RF
bnZpcm9ubWVudCIsZnVuY3Rpb24oKSB7CisJdGhpcy5mb289ImhhbXN0ZXIiOworfSk7Cit0ZXN0
KCJ0ZXN0RW52aXJvbm1lbnQgcmVzZXQgZm9yIG5leHQgdGVzdCIsZnVuY3Rpb24oKSB7CisJZGVl
cEVxdWFsKHRoaXMuZm9vLCAiYmFyIik7Cit9KTsKKworbW9kdWxlKCJ0ZXN0RW52aXJvbm1lbnQg
d2l0aCBvYmplY3QiLCB7CisJb3B0aW9uczp7CisJCXJlY2lwZToic291cCIsCisJCWluZ3JlZGll
bnRzOlsiaGFtc3RlciIsIm9uaW9ucyJdCisJfQorfSk7Cit0ZXN0KCJzY29wZSBjaGVjayIsIGZ1
bmN0aW9uKCkgeworCWRlZXBFcXVhbCh0aGlzLm9wdGlvbnMsIHtyZWNpcGU6InNvdXAiLGluZ3Jl
ZGllbnRzOlsiaGFtc3RlciIsIm9uaW9ucyJdfSkgOworfSk7Cit0ZXN0KCJtb2RpZnkgdGVzdEVu
dmlyb25tZW50IixmdW5jdGlvbigpIHsKKwkvLyBzaW5jZSB3ZSBkbyBhIHNoYWxsb3cgY29weSwg
dGhlIHRlc3RFbnZpcm9ubWVudCBjYW4gYmUgbW9kaWZpZWQKKwl0aGlzLm9wdGlvbnMuaW5ncmVk
aWVudHMucHVzaCgiY2Fycm90cyIpOworfSk7Cit0ZXN0KCJ0ZXN0RW52aXJvbm1lbnQgcmVzZXQg
Zm9yIG5leHQgdGVzdCIsZnVuY3Rpb24oKSB7CisJZGVlcEVxdWFsKHRoaXMub3B0aW9ucywge3Jl
Y2lwZToic291cCIsaW5ncmVkaWVudHM6WyJoYW1zdGVyIiwib25pb25zIiwiY2Fycm90cyJdfSwg
IklzIHRoaXMgYSBidWcgb3IgYSBmZWF0dXJlPyBDb3VsZCBkbyBhIGRlZXAgY29weSIpIDsKK30p
OworCisKK21vZHVsZSgidGVzdEVudmlyb25tZW50IHRlc3RzIik7CisKK2Z1bmN0aW9uIG1ha2V1
cmwoKSB7CisJdmFyIHRlc3RFbnYgPSBRVW5pdC5jdXJyZW50X3Rlc3RFbnZpcm9ubWVudDsKKwl2
YXIgdXJsID0gdGVzdEVudi51cmwgfHwgJ2h0dHA6Ly9leGFtcGxlLmNvbS9zZWFyY2gnOworCXZh
ciBxICAgPSB0ZXN0RW52LnEgICB8fCAnYSBzZWFyY2ggdGVzdCc7CisJcmV0dXJuIHVybCArICc/
cT0nK2VuY29kZVVSSUNvbXBvbmVudChxKTsKK30KKwordGVzdCgibWFrZXVybCB3b3JraW5nIixm
dW5jdGlvbigpIHsKKwllcXVhbCggUVVuaXQuY3VycmVudF90ZXN0RW52aXJvbm1lbnQsIHRoaXMs
ICdUaGUgY3VycmVudCB0ZXN0RW52aXJvbm1lbnQgaXMgZ2xvYmFsJyk7CisJZXF1YWwoIG1ha2V1
cmwoKSwgJ2h0dHA6Ly9leGFtcGxlLmNvbS9zZWFyY2g/cT1hJTIwc2VhcmNoJTIwdGVzdCcsICdt
YWtldXJsIHJldHVybnMgYSBkZWZhdWx0IHVybCBpZiBub3RoaW5nIHNwZWNpZmllZCBpbiB0aGUg
dGVzdEVudmlyb25tZW50Jyk7Cit9KTsKKworbW9kdWxlKCJ0ZXN0RW52aXJvbm1lbnQgd2l0aCBt
YWtldXJsIHNldHRpbmdzIiwgeworCXVybDogJ2h0dHA6Ly9nb29nbGUuY29tLycsCisJcTogJ2Fu
b3RoZXJfc2VhcmNoX3Rlc3QnCit9KTsKK3Rlc3QoIm1ha2V1cmwgd29ya2luZyB3aXRoIHNldHRp
bmdzIGZyb20gdGVzdEVudmlyb25tZW50IiwgZnVuY3Rpb24oKSB7CisJZXF1YWwoIG1ha2V1cmwo
KSwgJ2h0dHA6Ly9nb29nbGUuY29tLz9xPWFub3RoZXJfc2VhcmNoX3Rlc3QnLCAncmF0aGVyIHRo
YW4gcGFzc2luZyBhcmd1bWVudHMsIHdlIHVzZSB0ZXN0IG1ldGFkYXRhIHRvIGZvcm0gdGhlIHVy
bCcpOworfSk7Cit0ZXN0KCJlYWNoIHRlc3QgY2FuIGV4dGVuZCB0aGUgbW9kdWxlIHRlc3RFbnZp
cm9ubWVudCIsIHsKKwlxOidoYW1zdGVyc291cCcKK30sIGZ1bmN0aW9uKCkgeworCWVxdWFsKCBt
YWtldXJsKCksICdodHRwOi8vZ29vZ2xlLmNvbS8/cT1oYW1zdGVyc291cCcsICd1cmwgZnJvbSBt
b2R1bGUsIHEgZnJvbSB0ZXN0Jyk7Cit9KTsKKworbW9kdWxlKCJqc0R1bXAiKTsKK3Rlc3QoImpz
RHVtcCBvdXRwdXQiLCBmdW5jdGlvbigpIHsKKwllcXVhbHMoIFFVbml0LmpzRHVtcC5wYXJzZShb
MSwgMl0pLCAiW1xuICAxLFxuICAyXG5dIiApOworCWVxdWFscyggUVVuaXQuanNEdW1wLnBhcnNl
KHt0b3A6IDUsIGxlZnQ6IDB9KSwgIntcbiAgXCJ0b3BcIjogNSxcbiAgXCJsZWZ0XCI6IDBcbn0i
ICk7CisJaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInF1bml0LWhlYWRlciIpKSB7CisJCWVxdWFscyggUVVuaXQuanNEdW1wLnBh
cnNlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJxdW5pdC1oZWFkZXIiKSksICI8aDEgaWQ9XCJx
dW5pdC1oZWFkZXJcIj48L2gxPiIgKTsKKwkJZXF1YWxzKCBRVW5pdC5qc0R1bXAucGFyc2UoZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImgxIikpLCAiW1xuICA8aDEgaWQ9XCJxdW5pdC1o
ZWFkZXJcIj48L2gxPlxuXSIgKTsKKwl9Cit9KTsKKworbW9kdWxlKCJhc3NlcnRpb25zIik7Cit0
ZXN0KCJyYWlzZXMiLGZ1bmN0aW9uKCkgeworCWZ1bmN0aW9uIEN1c3RvbUVycm9yKCBtZXNzYWdl
ICkgeworCQl0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlOworCX0KKworCUN1c3RvbUVycm9yLnByb3Rv
dHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkgeworCQlyZXR1cm4gdGhpcy5tZXNzYWdlOworCX07
CisKKwlyYWlzZXMoCisJCWZ1bmN0aW9uKCkgeworCQkJdGhyb3cgImVycm9yIgorCQl9CisJKTsK
KworCXJhaXNlcygKKwkJZnVuY3Rpb24oKSB7CisJCQl0aHJvdyAiZXJyb3IiCisJCX0sCisJCSdy
YWlzZXMgd2l0aCBqdXN0IGEgbWVzc2FnZSwgbm8gZXhwZWN0ZWQnCisJKTsKKworCXJhaXNlcygK
KwkJZnVuY3Rpb24oKSB7CisJCQl0aHJvdyBuZXcgQ3VzdG9tRXJyb3IoKTsKKwkJfSwKKwkJQ3Vz
dG9tRXJyb3IsCisJCSdyYWlzZWQgZXJyb3IgaXMgYW4gaW5zdGFuY2Ugb2YgQ3VzdG9tRXJyb3In
CisJKTsKKworCXJhaXNlcygKKwkJZnVuY3Rpb24oKSB7CisJCQl0aHJvdyBuZXcgQ3VzdG9tRXJy
b3IoInNvbWUgZXJyb3IgZGVzY3JpcHRpb24iKTsKKwkJfSwKKwkJL2Rlc2NyaXB0aW9uLywKKwkJ
InJhaXNlZCBlcnJvciBtZXNzYWdlIGNvbnRhaW5zICdkZXNjcmlwdGlvbiciCisJKTsKKworCXJh
aXNlcygKKwkJZnVuY3Rpb24oKSB7CisJCQl0aHJvdyBuZXcgQ3VzdG9tRXJyb3IoInNvbWUgZXJy
b3IgZGVzY3JpcHRpb24iKTsKKwkJfSwKKwkJZnVuY3Rpb24oIGVyciApIHsKKwkJCWlmICggKGVy
ciBpbnN0YW5jZW9mIEN1c3RvbUVycm9yKSAmJiAvZGVzY3JpcHRpb24vLnRlc3QoZXJyKSApIHsK
KwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfSwKKwkJImN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0
aW9uIgorCSk7CisKK30pOworCitpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAidW5kZWZpbmVkIikg
eworCittb2R1bGUoImZpeHR1cmUiKTsKK3Rlc3QoInNldHVwIiwgZnVuY3Rpb24oKSB7CisJZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInF1bml0LWZpeHR1cmUiKS5pbm5lckhUTUwgPSAiZm9vYmFy
IjsKK30pOwordGVzdCgiYmFzaWNzIiwgZnVuY3Rpb24oKSB7CisJZXF1YWwoIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJxdW5pdC1maXh0dXJlIikuaW5uZXJIVE1MLCAidGVzdCBtYXJrdXAiLCAi
YXV0b21hdGljYWxseSByZXNldCIgKTsKK30pOworCit9CisKK21vZHVsZSgiY3VzdG9tIGFzc2Vy
dGlvbnMiKTsKKyhmdW5jdGlvbigpIHsKKwlmdW5jdGlvbiBtb2QyKHZhbHVlLCBleHBlY3RlZCwg
bWVzc2FnZSkgeworCQl2YXIgYWN0dWFsID0gdmFsdWUgJSAyOworCQlRVW5pdC5wdXNoKGFjdHVh
bCA9PSBleHBlY3RlZCwgYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSk7CisJfQorCXRlc3QoIm1v
ZDIiLCBmdW5jdGlvbigpIHsKKwkJbW9kMigyLCAwLCAiMiAlIDIgPT0gMCIpOworCQltb2QyKDMs
IDEsICIzICUgMiA9PSAxIik7CisJfSkKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKwl2YXIgcmVz
ZXQgPSBRVW5pdC5yZXNldDsKKwlmdW5jdGlvbiBhZnRlclRlc3QoKSB7CisJCW9rKCBmYWxzZSwg
InJlc2V0IHNob3VsZCBub3QgbW9kaWZ5IHRlc3Qgc3RhdHVzIiApOworCX0KKwltb2R1bGUoInJl
c2V0Iik7CisJdGVzdCgicmVzZXQgcnVucyBhc3NlcnRpb25zIiwgZnVuY3Rpb24oKSB7CisJCVFV
bml0LnJlc2V0ID0gZnVuY3Rpb24oKSB7CisJCQlhZnRlclRlc3QoKTsKKwkJCXJlc2V0LmFwcGx5
KCB0aGlzLCBhcmd1bWVudHMgKTsKKwkJfTsKKwl9KTsKKwl0ZXN0KCJyZXNldCBydW5zIGFzc2Vy
dGlvbnMyIiwgZnVuY3Rpb24oKSB7CisJCVFVbml0LnJlc2V0ID0gcmVzZXQ7CisJfSk7Cit9KSgp
OworCittb2R1bGUoIm5vZ2xvYmFscyIsIHsKKwl0ZWFyZG93bjogZnVuY3Rpb24oKSB7CisJCWRl
bGV0ZSB3aW5kb3cuYmFkR2xvYmFsVmFyaWFibGVJbnRyb2R1Y2VkSW5UZXN0OworCX0KK30pOwor
dGVzdCgibGV0IHRlYXJkb3duIGNsZWFuIHVwIGdsb2JhbHMiLCBmdW5jdGlvbigpIHsKKwkvLyB0
aGlzIHRlc3Qgd2lsbCBhbHdheXMgcGFzcyBpZiBydW4gd2l0aG91dCA/bm9nbG9iYWxzPXRydWUK
Kwl3aW5kb3cuYmFkR2xvYmFsVmFyaWFibGVJbnRyb2R1Y2VkSW5UZXN0ID0gdHJ1ZTsKK30pOwo=
</data>
<flag name="review"
          id="94333"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>