<?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>160183</bug_id>
          
          <creation_ts>2016-07-25 19:49:47 -0700</creation_ts>
          <short_desc>DOMTokenList should be iterable</short_desc>
          <delta_ts>2016-07-26 11:02:15 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1214444</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-25 19:49:47 -0700</bug_when>
    <thetext>DOMTokenList should be iterable:
- https://dom.spec.whatwg.org/#interface-domtokenlist

Chrome agrees with the specification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214445</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-25 19:50:46 -0700</bug_when>
    <thetext>@youennf: Feel free to take if you have time given that you know this better than I do. Otherwise, I&apos;ll do it when I find some time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214496</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-26 04:07:46 -0700</bug_when>
    <thetext>Patch should consist in one WebIDL line and plenty of testing lines I guess ;)
I&apos;ll try to write these.

I made a PR to simplify the testing of iterables in https://github.com/w3c/testharness.js/pull/201
Hopefully it will get merged at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214553</commentid>
    <comment_count>3</comment_count>
      <attachid>284598</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-26 09:29:46 -0700</bug_when>
    <thetext>Created attachment 284598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214562</commentid>
    <comment_count>4</comment_count>
      <attachid>284598</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-26 09:39:56 -0700</bug_when>
    <thetext>Comment on attachment 284598
Patch

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

r=me with comments.

&gt; Source/WebCore/ChangeLog:7
&gt; +

Please add a link to the specification.

&gt; LayoutTests/fast/dom/domTokenListIterator.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

&lt;!DOCTYPE html&gt;

&gt; LayoutTests/fast/dom/domTokenListIterator.html:12
&gt; +                testRunner.dumpAsText();

This should not be needed when you use js-test-pre.js

&gt; LayoutTests/fast/dom/domTokenListIterator.html:17
&gt; +            function checkItemType(item) {

There is a shouldBeType() function in js-test

&gt; LayoutTests/fast/dom/iterable-tests.js:26
&gt; +  shouldBe(&apos;end.done&apos;, &apos;true&apos;);

shouldBeTrue(&quot;end.done&quot;); ?

&gt; LayoutTests/fast/dom/iterable-tests.js:27
&gt; +  shouldBe(&apos;end.value&apos;, &apos;undefined&apos;);

shouldBeUndefined(&quot;end.value&quot;); ?

&gt; LayoutTests/fast/dom/iterable-tests.js:34
&gt; +shouldBeTrue(&apos;testedIterable.entries === entriesFunction&apos;);

shouldBe(&quot;testedIterable.entries&quot;, &quot;entriesFunction&quot;); ?

&gt; LayoutTests/fast/dom/iterable-tests.js:35
&gt; +shouldBeTrue(&apos;testedIterable.forEach === forEachFunction&apos;);

ditto

&gt; LayoutTests/fast/dom/iterable-tests.js:36
&gt; +shouldBeTrue(&apos;testedIterable.keys === keysFunction&apos;);

ditto

&gt; LayoutTests/fast/dom/iterable-tests.js:37
&gt; +shouldBeTrue(&apos;testedIterable.values === valuesFunction&apos;);

ditto

&gt; LayoutTests/fast/dom/iterable-tests.js:117
&gt; +    shouldBeTrue(&apos;checkItemType(v)&apos;);

shouldBeType() ?

&gt; LayoutTests/fast/dom/iterable-tests.js:124
&gt; +    shouldBeTrue(&apos;typeof k === &quot;number&quot;&apos;);

shouldBeType() ?

&gt; LayoutTests/fast/dom/iterable-tests.js:131
&gt; +    shouldBeTrue(&apos;typeof e[0] === &quot;number&quot;&apos;);

shouldBeType() ?

&gt; LayoutTests/fast/dom/iterable-tests.js:132
&gt; +    shouldBeTrue(&apos;e[1] === testedIterable[e[0]]&apos;);

shouldBe(&quot;e[1]&quot;, &quot;testedIterable[e[0]]&quot;); ?

&gt; LayoutTests/fast/dom/nodeListIterator.html:21
&gt; +            function checkItemType(item) {

shouldBeType() already exists in js-test-pre.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214563</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-26 09:40:15 -0700</bug_when>
    <thetext>Thanks for working on this!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214581</commentid>
    <comment_count>6</comment_count>
      <attachid>284602</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-26 10:31:51 -0700</bug_when>
    <thetext>Created attachment 284602
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214589</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-07-26 11:00:35 -0700</bug_when>
    <thetext>Thanks for the review.
I updated accordingly except for checkItemType which can handle Object and literal types.

&gt; &gt; LayoutTests/fast/dom/domTokenListIterator.html:17
&gt; &gt; +            function checkItemType(item) {
&gt; 
&gt; There is a shouldBeType() function in js-test


We need to handle Node items which use instanceof and string literals which use typeof.
I do not think DOMString mandates generating a String object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214590</commentid>
    <comment_count>8</comment_count>
      <attachid>284602</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 11:02:09 -0700</bug_when>
    <thetext>Comment on attachment 284602
Patch for landing

Clearing flags on attachment: 284602

Committed r203728: &lt;http://trac.webkit.org/changeset/203728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214591</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-26 11:02:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284598</attachid>
            <date>2016-07-26 09:29:46 -0700</date>
            <delta_ts>2016-07-26 10:31:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160183-20160726182836.patch</filename>
            <type>text/plain</type>
            <size>19416</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWYzMTY3Yjc5NDU3ZmU2
NzVmMWI3NWMzYmE3MzFmYjVjZjc2NzQ4My4uNjg5ZjkyMTA5ZmVmMmM0YjU4NDhkZmY3Y2ZkZmIy
YWU4NWQyZmJlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA3LTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBET01Ub2tlbkxpc3Qgc2hv
dWxkIGJlIGl0ZXJhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAxODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9kb21Ub2tlbkxpc3RJdGVyYXRvci5odG1sCisKKyAgICAg
ICAgKiBodG1sL0RPTVRva2VuTGlzdC5pZGw6IEFkZGVkIGl0ZXJhYmxlIHRvIHRoZSBpbnRlcmZh
Y2UgZGVzY3JpcHRpb24uCisKIDIwMTYtMDctMjUgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmls
bGFyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSByZXBlYXQoKSBzeW50YXggc2hv
dWxkIHRha2UgYSA8dHJhY2stbGlzdD4gYXJndW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVG9rZW5MaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5M
aXN0LmlkbAppbmRleCA1NzljYmIzNGI2OWQ3NTE5ZjIwODAyNDNhMDFmZjM0NTI5YWU1MWMwLi5k
MWU3MDEwYjYzM2VhYTEzOGIxYTNhNTVkNjg3MGY2ZDVmZjc4NThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9ET01Ub2tlbkxpc3QuaWRsCkBAIC0zNCw2ICszNCw4IEBACiAgICAgW1JhaXNlc0V4Y2VwdGlv
bl0gdm9pZCByZW1vdmUoRE9NU3RyaW5nLi4uIHRva2Vucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlv
bl0gYm9vbGVhbiB0b2dnbGUoRE9NU3RyaW5nIHRva2VuLCBvcHRpb25hbCBib29sZWFuIGZvcmNl
KTsKIAorICAgIGl0ZXJhYmxlPERPTVN0cmluZz47CisKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHZhbHVlOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9K
QVZBU0NSSVBUCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggODBhYjBlOTdiZWMyMzgwOWM0Mzc5NzEwNGE2NTI4ZDZjODVhZjky
Mi4uOWI3Zjk2Mzc3Y2NjM2Q3ZTcyOGQ3ZDRiNDQzMzY4ZDM2MDNmNzc1OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE2IEBACisyMDE2LTA3LTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBET01Ub2tlbkxpc3Qgc2hvdWxkIGJlIGl0ZXJhYmxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAxODMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL2RvbVRva2VuTGlz
dEl0ZXJhdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZG9tVG9r
ZW5MaXN0SXRlcmF0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaXRlcmFibGUt
dGVzdHMuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL25vZGVMaXN0SXRlcmF0b3ItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL25vZGVMaXN0SXRlcmF0b3IuaHRtbDogTWFr
aW5nIHVzZSBvZiBpdGVyYWJsZS10ZXN0cy5qcworCiAyMDE2LTA3LTI1ICBTZXJnaW8gVmlsbGFy
IFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3MtZ3JpZF0gcmVwZWF0
KCkgc3ludGF4IHNob3VsZCB0YWtlIGEgPHRyYWNrLWxpc3Q+IGFyZ3VtZW50CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21Ub2tlbkxpc3RJdGVyYXRvci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21Ub2tlbkxpc3RJdGVyYXRvci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGVlOWZhMjhjOGU2Y2MxOTBiNGNiMzU2OTdjNTU5MWUxODE0MGQ4ZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2RvbVRva2VuTGlzdEl0ZXJhdG9y
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDc2IEBACitUZXN0aW5nIG9mIERPTVRva2VuTGlzdCBp
dGVyYWJsZSBjYXBhY2l0aWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyB0ZXN0ZWRJdGVyYWJsZS5lbnRyaWVzID09PSBlbnRyaWVzRnVuY3Rpb24gaXMgdHJ1ZQorUEFT
UyB0ZXN0ZWRJdGVyYWJsZS5mb3JFYWNoID09PSBmb3JFYWNoRnVuY3Rpb24gaXMgdHJ1ZQorUEFT
UyB0ZXN0ZWRJdGVyYWJsZS5rZXlzID09PSBrZXlzRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyB0ZXN0
ZWRJdGVyYWJsZS52YWx1ZXMgPT09IHZhbHVlc0Z1bmN0aW9uIGlzIHRydWUKK1BBU1MgdGVzdGVk
SXRlcmFibGUubGVuZ3RoIGlzIDIKK1BBU1MgaXRlbSBpcyBjaGlsZHJlbltpbmRleCsrXQorUEFT
UyBpdGVtIGlzIGNoaWxkcmVuW2luZGV4KytdCitQQVNTIHBhaXJbMF0gaXMgY2hpbGRyZW5bMF0K
K1BBU1MgcGFpclsxXSBpcyBjaGlsZHJlblsxXQorUEFTUyBmb3JFYWNoQ29udGFpbmVyIGlzIHRl
c3RlZEl0ZXJhYmxlCitQQVNTIGZvckVhY2hJbmRleCBpcyBpbmRleAorUEFTUyBub2RlIGlzIGNo
aWxkcmVuW2luZGV4KytdCitQQVNTIHRoaXNWYWx1ZSBpcyB3aW5kb3cKK1BBU1MgZm9yRWFjaENv
bnRhaW5lciBpcyB0ZXN0ZWRJdGVyYWJsZQorUEFTUyBmb3JFYWNoSW5kZXggaXMgaW5kZXgKK1BB
U1Mgbm9kZSBpcyBjaGlsZHJlbltpbmRleCsrXQorUEFTUyB0aGlzVmFsdWUgaXMgd2luZG93CitQ
QVNTIHRoaXNWYWx1ZSBpcyB3aW5kb3cKK1BBU1MgdGhpc1ZhbHVlIGlzIHdpbmRvdworUEFTUyB0
aGlzVmFsdWUgaXMgZ2l2ZW5UaGlzVmFsdWUKK1BBU1MgdGhpc1ZhbHVlIGlzIGdpdmVuVGhpc1Zh
bHVlCitQQVNTIGl0ZXJhdG9yLm5leHQoKS52YWx1ZSBpcyAwCitQQVNTIGl0ZXJhdG9yLm5leHQo
KS52YWx1ZSBpcyAxCitQQVNTIGVuZC5kb25lIGlzIHRydWUKK1BBU1MgZW5kLnZhbHVlIGlzIHVu
ZGVmaW5lZAorUEFTUyBpdGVyYXRvci5uZXh0KCkudmFsdWUgaXMgY2hpbGRyZW5bMF0KK1BBU1Mg
aXRlcmF0b3IubmV4dCgpLnZhbHVlIGlzIGNoaWxkcmVuWzFdCitQQVNTIGVuZC5kb25lIGlzIHRy
dWUKK1BBU1MgZW5kLnZhbHVlIGlzIHVuZGVmaW5lZAorUEFTUyBwYWlyLmxlbmd0aCBpcyAyCitQ
QVNTIHBhaXJbMF0gaXMgMAorUEFTUyBwYWlyWzFdIGlzIGNoaWxkcmVuWzBdCitQQVNTIHBhaXIu
bGVuZ3RoIGlzIDIKK1BBU1MgcGFpclswXSBpcyAxCitQQVNTIHBhaXJbMV0gaXMgY2hpbGRyZW5b
MV0KK1BBU1MgZW5kLmRvbmUgaXMgdHJ1ZQorUEFTUyBlbmQudmFsdWUgaXMgdW5kZWZpbmVkCitQ
QVNTIGVuZC5kb25lIGlzIHRydWUKK1BBU1MgZW5kLnZhbHVlIGlzIHVuZGVmaW5lZAorUEFTUyBk
ZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSBpcyB0cnVlCitQQVNTIGRlc2NyaXB0b3Iud3JpdGFibGUg
aXMgdHJ1ZQorUEFTUyBkZXNjcmlwdG9yLmVudW1lcmFibGUgaXMgZmFsc2UKK1BBU1MgdGVzdGVk
SXRlcmFibGVQcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IHZhbHVlc0Z1bmN0aW9uOyBkaWQg
bm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgY2hlY2tJdGVtVHlwZShhKSBpcyB0cnVlCitQQVNT
IGNoZWNrSXRlbVR5cGUoYSkgaXMgdHJ1ZQorUEFTUyBjaGVja0l0ZW1UeXBlKGEpIGlzIHRydWUK
K1BBU1MgY2hlY2tJdGVtVHlwZShhKSBpcyB0cnVlCitQQVNTIGNvdW50ZXIgaXMgNAorUEFTUyBj
aGVja0l0ZW1UeXBlKHYpIGlzIHRydWUKK1BBU1MgY2hlY2tJdGVtVHlwZSh2KSBpcyB0cnVlCitQ
QVNTIGNoZWNrSXRlbVR5cGUodikgaXMgdHJ1ZQorUEFTUyBjaGVja0l0ZW1UeXBlKHYpIGlzIHRy
dWUKK1BBU1MgY291bnRlciBpcyA0CitQQVNTIHR5cGVvZiBrID09PSAibnVtYmVyIiBpcyB0cnVl
CitQQVNTIHR5cGVvZiBrID09PSAibnVtYmVyIiBpcyB0cnVlCitQQVNTIHR5cGVvZiBrID09PSAi
bnVtYmVyIiBpcyB0cnVlCitQQVNTIHR5cGVvZiBrID09PSAibnVtYmVyIiBpcyB0cnVlCitQQVNT
IGNvdW50ZXIgaXMgNAorUEFTUyB0eXBlb2YgZVswXSA9PT0gIm51bWJlciIgaXMgdHJ1ZQorUEFT
UyBlWzFdID09PSB0ZXN0ZWRJdGVyYWJsZVtlWzBdXSBpcyB0cnVlCitQQVNTIHR5cGVvZiBlWzBd
ID09PSAibnVtYmVyIiBpcyB0cnVlCitQQVNTIGVbMV0gPT09IHRlc3RlZEl0ZXJhYmxlW2VbMF1d
IGlzIHRydWUKK1BBU1MgdHlwZW9mIGVbMF0gPT09ICJudW1iZXIiIGlzIHRydWUKK1BBU1MgZVsx
XSA9PT0gdGVzdGVkSXRlcmFibGVbZVswXV0gaXMgdHJ1ZQorUEFTUyB0eXBlb2YgZVswXSA9PT0g
Im51bWJlciIgaXMgdHJ1ZQorUEFTUyBlWzFdID09PSB0ZXN0ZWRJdGVyYWJsZVtlWzBdXSBpcyB0
cnVlCitQQVNTIGNvdW50ZXIgaXMgNAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2RvbVRv
a2VuTGlzdEl0ZXJhdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21Ub2tlbkxpc3RJ
dGVyYXRvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZhZjk2YmIxNjIzOWExYzMzNTgxZTU2YTljN2YxMjg5
MjgzZjg2ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21Ub2tl
bkxpc3RJdGVyYXRvci5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
dGl0bGUgY2xhc3M9ImEgYiI+VGVzdGluZyBvZiBET01Ub2tlbkxpc3QgaXRlcmFibGUgY2FwYWNp
dGllczwvdGl0bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0aW5nIG9mIERPTVRva2VuTGlzdCBp
dGVyYWJsZSBjYXBhY2l0aWVzLicpOworCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICAgICAg
ICAgIHZhciB0ZXN0aW5nR3JvdW5kID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Rp
dGxlJylbMF07CisgICAgICAgICAgICB2YXIgY2xhc3NMaXN0ID0gdGVzdGluZ0dyb3VuZC5jbGFz
c0xpc3Q7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNoZWNrSXRlbVR5cGUoaXRlbSkgeworICAg
ICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ3N0cmluZyc7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBmdW5jdGlvbiBjcmVhdGVJdGVyYWJsZShpdGVtcykgeworICAgICAg
ICAgICAgICAgIGl0ZW1zLnB1c2goY2xhc3NMaXN0WzBdKTsKKyAgICAgICAgICAgICAgICBpdGVt
cy5wdXNoKGNsYXNzTGlzdFsxXSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsYXNzTGlzdDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZUl0ZXJhYmxlKCkgewor
ICAgICAgICAgICAgICAgIHRlc3RpbmdHcm91bmQuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJhIGIg
YyBkIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSJpdGVyYWJsZS10ZXN0cy5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pdGVyYWJsZS10ZXN0
cy5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2l0ZXJhYmxlLXRlc3RzLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ1MDc1Y2RjNmU5NDAzYTg1MTAzODE0M2YzMTFhMjkzMjMxMzU1ODQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9pdGVyYWJsZS10ZXN0cy5qcwpAQCAtMCwwICsxLDEz
NiBAQAorLy8gTW9kaWZ5aW5nIEFycmF5IHByb3RvdHlwZSB0byBlbnN1cmUgdGhpcyBkb2VzIG5v
dCBpbXBhY3QgaXRlcmFibGUgbWV0aG9kcy4KK3ZhciBlbnRyaWVzRnVuY3Rpb24gPSBBcnJheS5w
cm90b3R5cGUuZW50cmllczsKK0FycmF5LnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7
CisgICAgY29uc29sZS5sb2coIkFycmF5LnByb3RvdHlwZS5lbnRyaWVzIGNhbGxlZCIpOworICBy
ZXR1cm4gZW50cmllc0Z1bmN0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cit9Cit2YXIgZm9y
RWFjaEZ1bmN0aW9uID0gQXJyYXkucHJvdG90eXBlLmZvckVhY2g7CitBcnJheS5wcm90b3R5cGUu
Zm9yRWFjaCA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnNvbGUubG9nKCJBcnJheS5wcm90b3R5cGUu
Zm9yRWFjaCBjYWxsZWQiKTsKKyAgcmV0dXJuIGZvckVhY2hGdW5jdGlvbi5hcHBseSh0aGlzLCBh
cmd1bWVudHMpOworfQordmFyIGtleXNGdW5jdGlvbiA9IEFycmF5LnByb3RvdHlwZS5rZXlzOwor
QXJyYXkucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHsKKyAgICBjb25zb2xlLmxvZygiQXJy
YXkucHJvdG90eXBlLmtleXMgY2FsbGVkIik7CisgIHJldHVybiBrZXlzRnVuY3Rpb24uYXBwbHko
dGhpcywgYXJndW1lbnRzKTsKK30KK3ZhciB2YWx1ZXNGdW5jdGlvbiA9IEFycmF5LnByb3RvdHlw
ZS52YWx1ZXM7CitBcnJheS5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7CisgICAgY29u
c29sZS5sb2coIkFycmF5LnByb3RvdHlwZS52YWx1ZXMgY2FsbGVkIik7CisgIHJldHVybiB2YWx1
ZXNGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworfQorCit2YXIgZW5kOworZnVuY3Rp
b24gY2hlY2tFbmRJdGVyYXRvcihpdGVyYXRvclZhbHVlKSB7CisgIGVuZCA9IGl0ZXJhdG9yVmFs
dWU7CisgIHNob3VsZEJlKCdlbmQuZG9uZScsICd0cnVlJyk7CisgIHNob3VsZEJlKCdlbmQudmFs
dWUnLCAndW5kZWZpbmVkJyk7Cit9CisKKy8vIFNob3VsZCBjcmVhdGUgYW4gaXRlcmFibGUgd2l0
aCB0d28gaXRlbXMsIHB1dCBpbiBjaGlsZHJlbiBhcnJheQordmFyIGNoaWxkcmVuID0gW107Cit2
YXIgdGVzdGVkSXRlcmFibGUgPSBjcmVhdGVJdGVyYWJsZShjaGlsZHJlbik7CisKK3Nob3VsZEJl
VHJ1ZSgndGVzdGVkSXRlcmFibGUuZW50cmllcyA9PT0gZW50cmllc0Z1bmN0aW9uJyk7CitzaG91
bGRCZVRydWUoJ3Rlc3RlZEl0ZXJhYmxlLmZvckVhY2ggPT09IGZvckVhY2hGdW5jdGlvbicpOwor
c2hvdWxkQmVUcnVlKCd0ZXN0ZWRJdGVyYWJsZS5rZXlzID09PSBrZXlzRnVuY3Rpb24nKTsKK3No
b3VsZEJlVHJ1ZSgndGVzdGVkSXRlcmFibGUudmFsdWVzID09PSB2YWx1ZXNGdW5jdGlvbicpOwor
CitzaG91bGRCZSgidGVzdGVkSXRlcmFibGUubGVuZ3RoIiwgIjIiKTsKKwordmFyIGluZGV4ID0g
MDsKK2ZvciAodmFyIGl0ZW0gb2YgdGVzdGVkSXRlcmFibGUpCisgICAgc2hvdWxkQmUoJ2l0ZW0n
LCAnY2hpbGRyZW5baW5kZXgrK10nKTsKKworcGFpciA9IEFycmF5LmZyb20odGVzdGVkSXRlcmFi
bGUpOworc2hvdWxkQmUoJ3BhaXJbMF0nLCAnY2hpbGRyZW5bMF0nKTsKK3Nob3VsZEJlKCdwYWly
WzFdJywgJ2NoaWxkcmVuWzFdJyk7CisKK2luZGV4ID0gMDsKK3ZhciBub2RlOwordmFyIGZvckVh
Y2hJbmRleDsKK3ZhciBmb3JFYWNoQ29udGFpbmVyOwordmFyIHRoaXNWYWx1ZTsKK3Rlc3RlZEl0
ZXJhYmxlLmZvckVhY2goZnVuY3Rpb24obiwgaSwgYykgeworICAgIG5vZGUgPSBuOworICAgIGZv
ckVhY2hJbmRleCA9IGk7CisgICAgZm9yRWFjaENvbnRhaW5lciA9IGM7CisgICAgdGhpc1ZhbHVl
ID0gdGhpczsKKyAgICBzaG91bGRCZSgnZm9yRWFjaENvbnRhaW5lcicsICd0ZXN0ZWRJdGVyYWJs
ZScpOworICAgIHNob3VsZEJlKCdmb3JFYWNoSW5kZXgnLCAnaW5kZXgnKTsKKyAgICBzaG91bGRC
ZSgnbm9kZScsICdjaGlsZHJlbltpbmRleCsrXScpOworICAgIHNob3VsZEJlKCd0aGlzVmFsdWUn
LCAnd2luZG93Jyk7Cit9KTsKKwordGVzdGVkSXRlcmFibGUuZm9yRWFjaChmdW5jdGlvbigpIHsK
KyAgICB0aGlzVmFsdWUgPSB0aGlzOworICAgIHNob3VsZEJlKCd0aGlzVmFsdWUnLCAnd2luZG93
Jyk7Cit9LCB1bmRlZmluZWQpOworCit2YXIgZ2l2ZW5UaGlzVmFsdWUgPSB0ZXN0ZWRJdGVyYWJs
ZTsKK3Rlc3RlZEl0ZXJhYmxlLmZvckVhY2goZnVuY3Rpb24oKSB7CisgICAgdGhpc1ZhbHVlID0g
dGhpczsKKyAgICBzaG91bGRCZSgndGhpc1ZhbHVlJywgJ2dpdmVuVGhpc1ZhbHVlJyk7Cit9LCBn
aXZlblRoaXNWYWx1ZSk7CisKK3ZhciBpdGVyYXRvciA9IHRlc3RlZEl0ZXJhYmxlLmtleXMoKTsK
K3Nob3VsZEJlKCdpdGVyYXRvci5uZXh0KCkudmFsdWUnLCAnMCcpOworc2hvdWxkQmUoJ2l0ZXJh
dG9yLm5leHQoKS52YWx1ZScsICcxJyk7CitjaGVja0VuZEl0ZXJhdG9yKGl0ZXJhdG9yLm5leHQo
KSk7CisKK3ZhciBpdGVyYXRvciA9IHRlc3RlZEl0ZXJhYmxlLnZhbHVlcygpOworc2hvdWxkQmUo
J2l0ZXJhdG9yLm5leHQoKS52YWx1ZScsICdjaGlsZHJlblswXScpOworc2hvdWxkQmUoJ2l0ZXJh
dG9yLm5leHQoKS52YWx1ZScsICdjaGlsZHJlblsxXScpOworY2hlY2tFbmRJdGVyYXRvcihpdGVy
YXRvci5uZXh0KCkpOworCit2YXIgaXRlcmF0b3IgPSB0ZXN0ZWRJdGVyYWJsZS5lbnRyaWVzKCk7
Cit2YXIgcGFpciA9IGl0ZXJhdG9yLm5leHQoKS52YWx1ZTsKK3Nob3VsZEJlKCdwYWlyLmxlbmd0
aCcsICcyJyk7CitzaG91bGRCZSgncGFpclswXScsICcwJyk7CitzaG91bGRCZSgncGFpclsxXScs
ICdjaGlsZHJlblswXScpOworcGFpciA9IGl0ZXJhdG9yLm5leHQoKS52YWx1ZTsKK3Nob3VsZEJl
KCdwYWlyLmxlbmd0aCcsICcyJyk7CitzaG91bGRCZSgncGFpclswXScsICcxJyk7CitzaG91bGRC
ZSgncGFpclsxXScsICdjaGlsZHJlblsxXScpOworY2hlY2tFbmRJdGVyYXRvcihpdGVyYXRvci5u
ZXh0KCkpOworCisvLyBTaG91bGQgYWRkIDIgbmV3IGl0ZW1zLgordXBkYXRlSXRlcmFibGUoKTsK
KworY2hlY2tFbmRJdGVyYXRvcihpdGVyYXRvci5uZXh0KCkpOworCit2YXIgdGVzdGVkSXRlcmFi
bGVQcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodGVzdGVkSXRlcmFibGUpCit2YXIg
ZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGVzdGVkSXRlcmFi
bGVQcm90b3R5cGUsIFN5bWJvbC5pdGVyYXRvcik7CitzaG91bGRCZVRydWUoJ2Rlc2NyaXB0b3Iu
Y29uZmlndXJhYmxlJyk7CitzaG91bGRCZVRydWUoJ2Rlc2NyaXB0b3Iud3JpdGFibGUnKTsKK3No
b3VsZEJlRmFsc2UoJ2Rlc2NyaXB0b3IuZW51bWVyYWJsZScpOworCitzaG91bGROb3RUaHJvdygn
dGVzdGVkSXRlcmFibGVQcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IHZhbHVlc0Z1bmN0aW9u
OycpOwordmFyIGNvdW50ZXIgPSAwOworZm9yICh2YXIgYSBvZiB0ZXN0ZWRJdGVyYWJsZSkgewor
ICAgIHNob3VsZEJlVHJ1ZSgnY2hlY2tJdGVtVHlwZShhKScpOworICAgIGNvdW50ZXIrKzsKK30K
K3Nob3VsZEJlKCdjb3VudGVyJywgJzQnKTsKK2NvdW50ZXIgPSAwOworZm9yICh2YXIgdiBvZiB0
ZXN0ZWRJdGVyYWJsZS52YWx1ZXMoKSkgeworICAgIHNob3VsZEJlVHJ1ZSgnY2hlY2tJdGVtVHlw
ZSh2KScpOworICAgIGNvdW50ZXIrKzsKK30KK3Nob3VsZEJlKCdjb3VudGVyJywgJzQnKTsKKwor
Y291bnRlciA9IDA7Citmb3IgKHZhciBrIG9mIHRlc3RlZEl0ZXJhYmxlLmtleXMoKSkgeworICAg
IHNob3VsZEJlVHJ1ZSgndHlwZW9mIGsgPT09ICJudW1iZXIiJyk7CisgICAgY291bnRlcisrOwor
fQorc2hvdWxkQmUoJ2NvdW50ZXInLCAnNCcpOworCitjb3VudGVyID0gMDsKK2ZvciAodmFyIGUg
b2YgdGVzdGVkSXRlcmFibGUuZW50cmllcygpKSB7CisgICAgc2hvdWxkQmVUcnVlKCd0eXBlb2Yg
ZVswXSA9PT0gIm51bWJlciInKTsKKyAgICBzaG91bGRCZVRydWUoJ2VbMV0gPT09IHRlc3RlZEl0
ZXJhYmxlW2VbMF1dJyk7CisgICAgY291bnRlcisrOworfQorCitzaG91bGRCZSgnY291bnRlcics
ICc0Jyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2RlTGlzdEl0ZXJhdG9y
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vZGVMaXN0SXRlcmF0b3ItZXhw
ZWN0ZWQudHh0CmluZGV4IGJjMDNiYjVkZWM1OWJmZGQ0ZTQyNGIwOThkNDEwY2UwYWU0NzEyYWYu
LmRlMjcyMTZkNzY2YjI1ZWE2M2NlMDQyZTA1YmQxNjE2M2VhZDczMGEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL25vZGVMaXN0SXRlcmF0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL25vZGVMaXN0SXRlcmF0b3ItZXhwZWN0ZWQudHh0CkBAIC0zLDIw
ICszLDIwIEBAIFRlc3Rpbmcgb2YgTm9kZUxpc3QgaXRlcmFibGUgY2FwYWNpdGllcy4KIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIG5vZGVMaXN0LmVudHJpZXMgPT09IGVudHJp
ZXNGdW5jdGlvbiBpcyB0cnVlCi1QQVNTIG5vZGVMaXN0LmZvckVhY2ggPT09IGZvckVhY2hGdW5j
dGlvbiBpcyB0cnVlCi1QQVNTIG5vZGVMaXN0LmtleXMgPT09IGtleXNGdW5jdGlvbiBpcyB0cnVl
Ci1QQVNTIG5vZGVMaXN0LnZhbHVlcyA9PT0gdmFsdWVzRnVuY3Rpb24gaXMgdHJ1ZQotUEFTUyBu
b2RlTGlzdC5sZW5ndGggaXMgMgorUEFTUyB0ZXN0ZWRJdGVyYWJsZS5lbnRyaWVzID09PSBlbnRy
aWVzRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyB0ZXN0ZWRJdGVyYWJsZS5mb3JFYWNoID09PSBmb3JF
YWNoRnVuY3Rpb24gaXMgdHJ1ZQorUEFTUyB0ZXN0ZWRJdGVyYWJsZS5rZXlzID09PSBrZXlzRnVu
Y3Rpb24gaXMgdHJ1ZQorUEFTUyB0ZXN0ZWRJdGVyYWJsZS52YWx1ZXMgPT09IHZhbHVlc0Z1bmN0
aW9uIGlzIHRydWUKK1BBU1MgdGVzdGVkSXRlcmFibGUubGVuZ3RoIGlzIDIKIFBBU1MgaXRlbSBp
cyBjaGlsZHJlbltpbmRleCsrXQogUEFTUyBpdGVtIGlzIGNoaWxkcmVuW2luZGV4KytdCiBQQVNT
IHBhaXJbMF0gaXMgY2hpbGRyZW5bMF0KIFBBU1MgcGFpclsxXSBpcyBjaGlsZHJlblsxXQotUEFT
UyBmb3JFYWNoQ29udGFpbmVyIGlzIG5vZGVMaXN0CitQQVNTIGZvckVhY2hDb250YWluZXIgaXMg
dGVzdGVkSXRlcmFibGUKIFBBU1MgZm9yRWFjaEluZGV4IGlzIGluZGV4CiBQQVNTIG5vZGUgaXMg
Y2hpbGRyZW5baW5kZXgrK10KIFBBU1MgdGhpc1ZhbHVlIGlzIHdpbmRvdwotUEFTUyBmb3JFYWNo
Q29udGFpbmVyIGlzIG5vZGVMaXN0CitQQVNTIGZvckVhY2hDb250YWluZXIgaXMgdGVzdGVkSXRl
cmFibGUKIFBBU1MgZm9yRWFjaEluZGV4IGlzIGluZGV4CiBQQVNTIG5vZGUgaXMgY2hpbGRyZW5b
aW5kZXgrK10KIFBBU1MgdGhpc1ZhbHVlIGlzIHdpbmRvdwpAQCAtNDUsMTEgKzQ1LDMwIEBAIFBB
U1MgZW5kLnZhbHVlIGlzIHVuZGVmaW5lZAogUEFTUyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSBp
cyB0cnVlCiBQQVNTIGRlc2NyaXB0b3Iud3JpdGFibGUgaXMgdHJ1ZQogUEFTUyBkZXNjcmlwdG9y
LmVudW1lcmFibGUgaXMgZmFsc2UKLVBBU1MgTm9kZUxpc3QucHJvdG90eXBlW1N5bWJvbC5pdGVy
YXRvcl0gPSB2YWx1ZXNGdW5jdGlvbjsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCi1QQVNTIGEg
aW5zdGFuY2VvZiBOb2RlIGlzIHRydWUKLVBBU1MgYSBpbnN0YW5jZW9mIE5vZGUgaXMgdHJ1ZQot
UEFTUyBhIGluc3RhbmNlb2YgTm9kZSBpcyB0cnVlCi1QQVNTIGEgaW5zdGFuY2VvZiBOb2RlIGlz
IHRydWUKK1BBU1MgdGVzdGVkSXRlcmFibGVQcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IHZh
bHVlc0Z1bmN0aW9uOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgY2hlY2tJdGVtVHlw
ZShhKSBpcyB0cnVlCitQQVNTIGNoZWNrSXRlbVR5cGUoYSkgaXMgdHJ1ZQorUEFTUyBjaGVja0l0
ZW1UeXBlKGEpIGlzIHRydWUKK1BBU1MgY2hlY2tJdGVtVHlwZShhKSBpcyB0cnVlCitQQVNTIGNv
dW50ZXIgaXMgNAorUEFTUyBjaGVja0l0ZW1UeXBlKHYpIGlzIHRydWUKK1BBU1MgY2hlY2tJdGVt
VHlwZSh2KSBpcyB0cnVlCitQQVNTIGNoZWNrSXRlbVR5cGUodikgaXMgdHJ1ZQorUEFTUyBjaGVj
a0l0ZW1UeXBlKHYpIGlzIHRydWUKK1BBU1MgY291bnRlciBpcyA0CitQQVNTIHR5cGVvZiBrID09
PSAibnVtYmVyIiBpcyB0cnVlCitQQVNTIHR5cGVvZiBrID09PSAibnVtYmVyIiBpcyB0cnVlCitQ
QVNTIHR5cGVvZiBrID09PSAibnVtYmVyIiBpcyB0cnVlCitQQVNTIHR5cGVvZiBrID09PSAibnVt
YmVyIiBpcyB0cnVlCitQQVNTIGNvdW50ZXIgaXMgNAorUEFTUyB0eXBlb2YgZVswXSA9PT0gIm51
bWJlciIgaXMgdHJ1ZQorUEFTUyBlWzFdID09PSB0ZXN0ZWRJdGVyYWJsZVtlWzBdXSBpcyB0cnVl
CitQQVNTIHR5cGVvZiBlWzBdID09PSAibnVtYmVyIiBpcyB0cnVlCitQQVNTIGVbMV0gPT09IHRl
c3RlZEl0ZXJhYmxlW2VbMF1dIGlzIHRydWUKK1BBU1MgdHlwZW9mIGVbMF0gPT09ICJudW1iZXIi
IGlzIHRydWUKK1BBU1MgZVsxXSA9PT0gdGVzdGVkSXRlcmFibGVbZVswXV0gaXMgdHJ1ZQorUEFT
UyB0eXBlb2YgZVswXSA9PT0gIm51bWJlciIgaXMgdHJ1ZQorUEFTUyBlWzFdID09PSB0ZXN0ZWRJ
dGVyYWJsZVtlWzBdXSBpcyB0cnVlCiBQQVNTIGNvdW50ZXIgaXMgNAogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2Rl
TGlzdEl0ZXJhdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2RlTGlzdEl0ZXJhdG9y
Lmh0bWwKaW5kZXggNzFmOTliZTE3ZjNmOTg0YTVlYjI2MzE0NTQyMzY0ZDY1MjU5NGI2My4uY2Ew
MjM3NmIyMzMxYTRmZWZiYmQ0ODNlOWM5NDUwYzVjNjQ0YTc1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vbm9kZUxpc3RJdGVyYXRvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL25vZGVMaXN0SXRlcmF0b3IuaHRtbApAQCAtNywxMjYgKzcsMzEgQEAKICAgICAgICAg
PHNjcmlwdD4KICAgICAgICAgICAgIGRlc2NyaXB0aW9uKCdUZXN0aW5nIG9mIE5vZGVMaXN0IGl0
ZXJhYmxlIGNhcGFjaXRpZXMuJyk7CiAKLSAgICAgICAgICAgIC8vIE1vZGlmeWluZyBBcnJheSBw
cm90b3R5cGUgdG8gZW5zdXJlIHRoaXMgZG9lcyBub3QgaW1wYWN0IE5vZGVMaXN0IGl0ZXJhYmxl
IG1ldGhvZHMuCi0gICAgICAgICAgICB2YXIgZW50cmllc0Z1bmN0aW9uID0gQXJyYXkucHJvdG90
eXBlLmVudHJpZXM7Ci0gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJBcnJheS5wcm90b3R5cGUuZW50
cmllcyBjYWxsZWQiKTsKLSAgICAgICAgICAgICAgcmV0dXJuIGVudHJpZXNGdW5jdGlvbi5hcHBs
eSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIGZvckVh
Y2hGdW5jdGlvbiA9IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoOwotICAgICAgICAgICAgQXJyYXku
cHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xl
LmxvZygiQXJyYXkucHJvdG90eXBlLmZvckVhY2ggY2FsbGVkIik7Ci0gICAgICAgICAgICAgIHJl
dHVybiBmb3JFYWNoRnVuY3Rpb24uYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHZhciBrZXlzRnVuY3Rpb24gPSBBcnJheS5wcm90b3R5cGUua2V5czsK
LSAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgY29uc29sZS5sb2coIkFycmF5LnByb3RvdHlwZS5rZXlzIGNhbGxlZCIpOwotICAg
ICAgICAgICAgICByZXR1cm4ga2V5c0Z1bmN0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgdmFsdWVzRnVuY3Rpb24gPSBBcnJheS5wcm90
b3R5cGUudmFsdWVzOwotICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJBcnJheS5wcm90b3R5cGUudmFs
dWVzIGNhbGxlZCIpOwotICAgICAgICAgICAgICByZXR1cm4gdmFsdWVzRnVuY3Rpb24uYXBwbHko
dGhpcywgYXJndW1lbnRzKTsKLSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwog
Ci0gICAgICAgICAgICB2YXIgZW5kOwotICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tFbmRJdGVy
YXRvcihpdGVyYXRvclZhbHVlKSB7Ci0gICAgICAgICAgICAgIGVuZCA9IGl0ZXJhdG9yVmFsdWU7
Ci0gICAgICAgICAgICAgIHNob3VsZEJlKCdlbmQuZG9uZScsICd0cnVlJyk7Ci0gICAgICAgICAg
ICAgIHNob3VsZEJlKCdlbmQudmFsdWUnLCAndW5kZWZpbmVkJyk7Ci0gICAgICAgICAgICB9Ci0K
ICAgICAgICAgICAgIHZhciB0ZXN0aW5nR3JvdW5kID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7Ci0gICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBbZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2JyksIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29sJyldOwotICAgICAgICAgICAgdGVz
dGluZ0dyb3VuZC5hcHBlbmRDaGlsZChjaGlsZHJlblswXSk7Ci0gICAgICAgICAgICB0ZXN0aW5n
R3JvdW5kLmFwcGVuZENoaWxkKGNoaWxkcmVuWzFdKTsKKyAgICAgICAgICAgIHZhciBub2RlcyA9
IFtkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
b2wnKV07CisgICAgICAgICAgICB0ZXN0aW5nR3JvdW5kLmFwcGVuZENoaWxkKG5vZGVzWzBdKTsK
KyAgICAgICAgICAgIHRlc3RpbmdHcm91bmQuYXBwZW5kQ2hpbGQobm9kZXNbMV0pOwogICAgICAg
ICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXN0aW5nR3JvdW5kKTsKIAogICAgICAg
ICAgICAgdmFyIG5vZGVMaXN0ID0gdGVzdGluZ0dyb3VuZC5jaGlsZE5vZGVzOwogCi0gICAgICAg
ICAgICBzaG91bGRCZVRydWUoJ25vZGVMaXN0LmVudHJpZXMgPT09IGVudHJpZXNGdW5jdGlvbicp
OwotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCdub2RlTGlzdC5mb3JFYWNoID09PSBmb3JFYWNo
RnVuY3Rpb24nKTsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgnbm9kZUxpc3Qua2V5cyA9PT0g
a2V5c0Z1bmN0aW9uJyk7Ci0gICAgICAgICAgICBzaG91bGRCZVRydWUoJ25vZGVMaXN0LnZhbHVl
cyA9PT0gdmFsdWVzRnVuY3Rpb24nKTsKLQotICAgICAgICAgICAgc2hvdWxkQmUoIm5vZGVMaXN0
Lmxlbmd0aCIsICIyIik7Ci0KLSAgICAgICAgICAgIHZhciBpbmRleCA9IDA7Ci0gICAgICAgICAg
ICBmb3IgKHZhciBpdGVtIG9mIG5vZGVMaXN0KQotICAgICAgICAgICAgICAgIHNob3VsZEJlKCdp
dGVtJywgJ2NoaWxkcmVuW2luZGV4KytdJyk7Ci0KLSAgICAgICAgICAgIHBhaXIgPSBBcnJheS5m
cm9tKG5vZGVMaXN0KTsKLSAgICAgICAgICAgIHNob3VsZEJlKCdwYWlyWzBdJywgJ2NoaWxkcmVu
WzBdJyk7Ci0gICAgICAgICAgICBzaG91bGRCZSgncGFpclsxXScsICdjaGlsZHJlblsxXScpOwot
Ci0gICAgICAgICAgICBpbmRleCA9IDA7Ci0gICAgICAgICAgICB2YXIgbm9kZTsKLSAgICAgICAg
ICAgIHZhciBmb3JFYWNoSW5kZXg7Ci0gICAgICAgICAgICB2YXIgZm9yRWFjaENvbnRhaW5lcjsK
LSAgICAgICAgICAgIHZhciB0aGlzVmFsdWU7Ci0gICAgICAgICAgICBub2RlTGlzdC5mb3JFYWNo
KGZ1bmN0aW9uKG4sIGksIGMpIHsKLSAgICAgICAgICAgICAgICBub2RlID0gbjsKLSAgICAgICAg
ICAgICAgICBmb3JFYWNoSW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGZvckVhY2hDb250YWlu
ZXIgPSBjOwotICAgICAgICAgICAgICAgIHRoaXNWYWx1ZSA9IHRoaXM7Ci0gICAgICAgICAgICAg
ICAgc2hvdWxkQmUoJ2ZvckVhY2hDb250YWluZXInLCAnbm9kZUxpc3QnKTsKLSAgICAgICAgICAg
ICAgICBzaG91bGRCZSgnZm9yRWFjaEluZGV4JywgJ2luZGV4Jyk7Ci0gICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ25vZGUnLCAnY2hpbGRyZW5baW5kZXgrK10nKTsKLSAgICAgICAgICAgICAgICBz
aG91bGRCZSgndGhpc1ZhbHVlJywgJ3dpbmRvdycpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAg
ICAgICAgIG5vZGVMaXN0LmZvckVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhp
c1ZhbHVlID0gdGhpczsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgndGhpc1ZhbHVlJywgJ3dp
bmRvdycpOwotICAgICAgICAgICAgfSwgdW5kZWZpbmVkKTsKLQotICAgICAgICAgICAgdmFyIGdp
dmVuVGhpc1ZhbHVlID0gbm9kZUxpc3Q7Ci0gICAgICAgICAgICBub2RlTGlzdC5mb3JFYWNoKGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRoaXNWYWx1ZSA9IHRoaXM7Ci0gICAgICAgICAg
ICAgICAgc2hvdWxkQmUoJ3RoaXNWYWx1ZScsICdnaXZlblRoaXNWYWx1ZScpOwotICAgICAgICAg
ICAgfSwgZ2l2ZW5UaGlzVmFsdWUpOwotCi0gICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBub2Rl
TGlzdC5rZXlzKCk7Ci0gICAgICAgICAgICBzaG91bGRCZSgnaXRlcmF0b3IubmV4dCgpLnZhbHVl
JywgJzAnKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCdpdGVyYXRvci5uZXh0KCkudmFsdWUnLCAn
MScpOwotICAgICAgICAgICAgY2hlY2tFbmRJdGVyYXRvcihpdGVyYXRvci5uZXh0KCkpOwotCi0g
ICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBub2RlTGlzdC52YWx1ZXMoKTsKLSAgICAgICAgICAg
IHNob3VsZEJlKCdpdGVyYXRvci5uZXh0KCkudmFsdWUnLCAnY2hpbGRyZW5bMF0nKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlKCdpdGVyYXRvci5uZXh0KCkudmFsdWUnLCAnY2hpbGRyZW5bMV0nKTsK
LSAgICAgICAgICAgIGNoZWNrRW5kSXRlcmF0b3IoaXRlcmF0b3IubmV4dCgpKTsKLQotICAgICAg
ICAgICAgdmFyIGl0ZXJhdG9yID0gbm9kZUxpc3QuZW50cmllcygpOwotICAgICAgICAgICAgdmFy
IHBhaXIgPSBpdGVyYXRvci5uZXh0KCkudmFsdWU7Ci0gICAgICAgICAgICBzaG91bGRCZSgncGFp
ci5sZW5ndGgnLCAnMicpOwotICAgICAgICAgICAgc2hvdWxkQmUoJ3BhaXJbMF0nLCAnMCcpOwot
ICAgICAgICAgICAgc2hvdWxkQmUoJ3BhaXJbMV0nLCAnY2hpbGRyZW5bMF0nKTsKLSAgICAgICAg
ICAgIHBhaXIgPSBpdGVyYXRvci5uZXh0KCkudmFsdWU7Ci0gICAgICAgICAgICBzaG91bGRCZSgn
cGFpci5sZW5ndGgnLCAnMicpOwotICAgICAgICAgICAgc2hvdWxkQmUoJ3BhaXJbMF0nLCAnMScp
OwotICAgICAgICAgICAgc2hvdWxkQmUoJ3BhaXJbMV0nLCAnY2hpbGRyZW5bMV0nKTsKLSAgICAg
ICAgICAgIGNoZWNrRW5kSXRlcmF0b3IoaXRlcmF0b3IubmV4dCgpKTsKLQotICAgICAgICAgICAg
dGVzdGluZ0dyb3VuZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpKTsK
LSAgICAgICAgICAgIHRlc3RpbmdHcm91bmQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgncCcpKTsKLSAgICAgICAgICAgIGNoZWNrRW5kSXRlcmF0b3IoaXRlcmF0b3IubmV4dCgp
KTsKLQotICAgICAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKE5vZGVMaXN0LnByb3RvdHlwZSwgU3ltYm9sLml0ZXJhdG9yKTsKLSAgICAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgnZGVzY3JpcHRvci5jb25maWd1cmFibGUnKTsKLSAgICAgICAgICAg
IHNob3VsZEJlVHJ1ZSgnZGVzY3JpcHRvci53cml0YWJsZScpOwotICAgICAgICAgICAgc2hvdWxk
QmVGYWxzZSgnZGVzY3JpcHRvci5lbnVtZXJhYmxlJyk7Ci0KLSAgICAgICAgICAgIHNob3VsZE5v
dFRocm93KCdOb2RlTGlzdC5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IHZhbHVlc0Z1bmN0
aW9uOycpOwotICAgICAgICAgICAgdmFyIGNvdW50ZXIgPSAwOwotICAgICAgICAgICAgZm9yICh2
YXIgYSBvZiBub2RlTGlzdCkgewotICAgICAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgnYSBpbnN0
YW5jZW9mIE5vZGUnKTsKLSAgICAgICAgICAgICAgICBjb3VudGVyKys7CisgICAgICAgICAgICBm
dW5jdGlvbiBjaGVja0l0ZW1UeXBlKGl0ZW0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRl
bSBpbnN0YW5jZW9mIE5vZGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmdW5jdGlvbiBj
cmVhdGVJdGVyYWJsZShpdGVtcykgeworICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2gobm9kZXNb
MF0pOworICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2gobm9kZXNbMV0pOworICAgICAgICAgICAg
ICAgIHJldHVybiBub2RlTGlzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9u
IHVwZGF0ZUl0ZXJhYmxlKCkgeworICAgICAgICAgICAgICAgIHRlc3RpbmdHcm91bmQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKSk7CisgICAgICAgICAgICAgICAgdGVz
dGluZ0dyb3VuZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJykpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgc2hvdWxkQmUoJ2NvdW50ZXInLCAnNCcpOwogICAgICAg
ICA8L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Iml0ZXJhYmxlLXRlc3RzLmpzIj48L3Nj
cmlwdD4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284602</attachid>
            <date>2016-07-26 10:31:51 -0700</date>
            <delta_ts>2016-07-26 11:02:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-160183-20160726193041.patch</filename>
            <type>text/plain</type>
            <size>19994</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWYzMmJjNGQ0NTNjOTcw
MzcwYjEzZGUxYTYzNzJjZDIzZjBiNzI0Mi4uYmIxZGYzZGY5YjRkZTJjZDUzZjg0MTA5MDIyODUx
NzQ2M2E0ZjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTA3LTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBET01Ub2tlbkxpc3Qgc2hv
dWxkIGJlIGl0ZXJhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAxODMKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAg
ICAgICBET01Ub2tlbkxpc3Qgc2hvdWxkIGJlIGl0ZXJhYmxlIGFzIHBlciBodHRwczovL2RvbS5z
cGVjLndoYXR3Zy5vcmcvI2ludGVyZmFjZS1kb210b2tlbmxpc3QKKworICAgICAgICBUZXN0OiBm
YXN0L2RvbS9kb21Ub2tlbkxpc3RJdGVyYXRvci5odG1sCisKKyAgICAgICAgKiBodG1sL0RPTVRv
a2VuTGlzdC5pZGw6IEFkZGVkIGl0ZXJhYmxlIHRvIHRoZSBpbnRlcmZhY2UgZGVzY3JpcHRpb24u
CisKIDIwMTYtMDctMjYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIEFTU0VSVElPTiBGQUlMRUQ6ICFtX2ZyYW1lLT5wYWdlKCktPmRlZmVyc0xv
YWRpbmcoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzRGVidWdnZXJQYXVzZWQobV9m
cmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVG9rZW5MaXN0LmlkbAppbmRleCA1NzljYmIzNGI2OWQ3
NTE5ZjIwODAyNDNhMDFmZjM0NTI5YWU1MWMwLi5kMWU3MDEwYjYzM2VhYTEzOGIxYTNhNTVkNjg3
MGY2ZDVmZjc4NThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTVRva2VuTGlz
dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Ub2tlbkxpc3QuaWRsCkBAIC0zNCw2
ICszNCw4IEBACiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCByZW1vdmUoRE9NU3RyaW5nLi4u
IHRva2Vucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiB0b2dnbGUoRE9NU3RyaW5n
IHRva2VuLCBvcHRpb25hbCBib29sZWFuIGZvcmNlKTsKIAorICAgIGl0ZXJhYmxlPERPTVN0cmlu
Zz47CisKICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlOwogCiAjaWYgZGVmaW5lZChMQU5H
VUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFHRV9KQVZBU0NSSVBUCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjEyMDBiNDc5
YWI5OTUyMGMyNWIyMjgwZDI4ZWJlMjkzYjAxZDZiZC4uYjBhNGU5MmM2MGJiNDYxMTEzZWYwMjA5
ZjRhNmJiZmUxYzM1NTNjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDE2LTA3LTI2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAorICAgICAgICBET01Ub2tlbkxpc3Qgc2hv
dWxkIGJlIGl0ZXJhYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjAxODMKKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAg
ICAgICAqIGZhc3QvZG9tL2RvbVRva2VuTGlzdEl0ZXJhdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vZG9tVG9rZW5MaXN0SXRlcmF0b3IuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vaXRlcmFibGUtdGVzdHMuanM6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL25vZGVMaXN0SXRlcmF0b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9t
L25vZGVMaXN0SXRlcmF0b3IuaHRtbDogTWFraW5nIHVzZSBvZiBpdGVyYWJsZS10ZXN0cy5qcwor
CisyMDE2LTA3LTI2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAg
ICBSZW1vdmUgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjcm9zcy1vcmlnaW4gb3B0aW9uIGZyb20g
UmVzb3VyY2VMb2FkZXJPcHRpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTk0MTMKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
ZG9tVG9rZW5MaXN0SXRlcmF0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
ZG9tVG9rZW5MaXN0SXRlcmF0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwNTcwNTRiYjZl
Y2Q0NTlmZWU3YzhkNGMwNzIyNDAyMDI3Y2FhOTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9kb21Ub2tlbkxpc3RJdGVyYXRvci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw3NiBAQAorVGVzdGluZyBvZiBET01Ub2tlbkxpc3QgaXRlcmFibGUgY2FwYWNpdGllcy4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdGVkSXRlcmFibGUuZW50cmll
cyBpcyBlbnRyaWVzRnVuY3Rpb24KK1BBU1MgdGVzdGVkSXRlcmFibGUuZm9yRWFjaCBpcyBmb3JF
YWNoRnVuY3Rpb24KK1BBU1MgdGVzdGVkSXRlcmFibGUua2V5cyBpcyBrZXlzRnVuY3Rpb24KK1BB
U1MgdGVzdGVkSXRlcmFibGUudmFsdWVzIGlzIHZhbHVlc0Z1bmN0aW9uCitQQVNTIHRlc3RlZEl0
ZXJhYmxlLmxlbmd0aCBpcyAyCitQQVNTIGl0ZW0gaXMgY2hpbGRyZW5baW5kZXgrK10KK1BBU1Mg
aXRlbSBpcyBjaGlsZHJlbltpbmRleCsrXQorUEFTUyBwYWlyWzBdIGlzIGNoaWxkcmVuWzBdCitQ
QVNTIHBhaXJbMV0gaXMgY2hpbGRyZW5bMV0KK1BBU1MgZm9yRWFjaENvbnRhaW5lciBpcyB0ZXN0
ZWRJdGVyYWJsZQorUEFTUyBmb3JFYWNoSW5kZXggaXMgaW5kZXgKK1BBU1Mgbm9kZSBpcyBjaGls
ZHJlbltpbmRleCsrXQorUEFTUyB0aGlzVmFsdWUgaXMgd2luZG93CitQQVNTIGZvckVhY2hDb250
YWluZXIgaXMgdGVzdGVkSXRlcmFibGUKK1BBU1MgZm9yRWFjaEluZGV4IGlzIGluZGV4CitQQVNT
IG5vZGUgaXMgY2hpbGRyZW5baW5kZXgrK10KK1BBU1MgdGhpc1ZhbHVlIGlzIHdpbmRvdworUEFT
UyB0aGlzVmFsdWUgaXMgd2luZG93CitQQVNTIHRoaXNWYWx1ZSBpcyB3aW5kb3cKK1BBU1MgdGhp
c1ZhbHVlIGlzIGdpdmVuVGhpc1ZhbHVlCitQQVNTIHRoaXNWYWx1ZSBpcyBnaXZlblRoaXNWYWx1
ZQorUEFTUyBpdGVyYXRvci5uZXh0KCkudmFsdWUgaXMgMAorUEFTUyBpdGVyYXRvci5uZXh0KCku
dmFsdWUgaXMgMQorUEFTUyBlbmQuZG9uZSBpcyB0cnVlCitQQVNTIGVuZC52YWx1ZSBpcyB1bmRl
ZmluZWQuCitQQVNTIGl0ZXJhdG9yLm5leHQoKS52YWx1ZSBpcyBjaGlsZHJlblswXQorUEFTUyBp
dGVyYXRvci5uZXh0KCkudmFsdWUgaXMgY2hpbGRyZW5bMV0KK1BBU1MgZW5kLmRvbmUgaXMgdHJ1
ZQorUEFTUyBlbmQudmFsdWUgaXMgdW5kZWZpbmVkLgorUEFTUyBwYWlyLmxlbmd0aCBpcyAyCitQ
QVNTIHBhaXJbMF0gaXMgMAorUEFTUyBwYWlyWzFdIGlzIGNoaWxkcmVuWzBdCitQQVNTIHBhaXIu
bGVuZ3RoIGlzIDIKK1BBU1MgcGFpclswXSBpcyAxCitQQVNTIHBhaXJbMV0gaXMgY2hpbGRyZW5b
MV0KK1BBU1MgZW5kLmRvbmUgaXMgdHJ1ZQorUEFTUyBlbmQudmFsdWUgaXMgdW5kZWZpbmVkLgor
UEFTUyBlbmQuZG9uZSBpcyB0cnVlCitQQVNTIGVuZC52YWx1ZSBpcyB1bmRlZmluZWQuCitQQVNT
IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlIGlzIHRydWUKK1BBU1MgZGVzY3JpcHRvci53cml0YWJs
ZSBpcyB0cnVlCitQQVNTIGRlc2NyaXB0b3IuZW51bWVyYWJsZSBpcyBmYWxzZQorUEFTUyB0ZXN0
ZWRJdGVyYWJsZVByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gdmFsdWVzRnVuY3Rpb247IGRp
ZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBjaGVja0l0ZW1UeXBlKGEpIGlzIHRydWUKK1BB
U1MgY2hlY2tJdGVtVHlwZShhKSBpcyB0cnVlCitQQVNTIGNoZWNrSXRlbVR5cGUoYSkgaXMgdHJ1
ZQorUEFTUyBjaGVja0l0ZW1UeXBlKGEpIGlzIHRydWUKK1BBU1MgY291bnRlciBpcyA0CitQQVNT
IGNoZWNrSXRlbVR5cGUodikgaXMgdHJ1ZQorUEFTUyBjaGVja0l0ZW1UeXBlKHYpIGlzIHRydWUK
K1BBU1MgY2hlY2tJdGVtVHlwZSh2KSBpcyB0cnVlCitQQVNTIGNoZWNrSXRlbVR5cGUodikgaXMg
dHJ1ZQorUEFTUyBjb3VudGVyIGlzIDQKK1BBU1MgdHlwZW9mIGsgaXMgIm51bWJlciIKK1BBU1Mg
dHlwZW9mIGsgaXMgIm51bWJlciIKK1BBU1MgdHlwZW9mIGsgaXMgIm51bWJlciIKK1BBU1MgdHlw
ZW9mIGsgaXMgIm51bWJlciIKK1BBU1MgY291bnRlciBpcyA0CitQQVNTIHR5cGVvZiBlWzBdIGlz
ICJudW1iZXIiCitQQVNTIGVbMV0gaXMgdGVzdGVkSXRlcmFibGVbZVswXV0KK1BBU1MgdHlwZW9m
IGVbMF0gaXMgIm51bWJlciIKK1BBU1MgZVsxXSBpcyB0ZXN0ZWRJdGVyYWJsZVtlWzBdXQorUEFT
UyB0eXBlb2YgZVswXSBpcyAibnVtYmVyIgorUEFTUyBlWzFdIGlzIHRlc3RlZEl0ZXJhYmxlW2Vb
MF1dCitQQVNTIHR5cGVvZiBlWzBdIGlzICJudW1iZXIiCitQQVNTIGVbMV0gaXMgdGVzdGVkSXRl
cmFibGVbZVswXV0KK1BBU1MgY291bnRlciBpcyA0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vZG9tVG9rZW5MaXN0SXRlcmF0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2RvbVRv
a2VuTGlzdEl0ZXJhdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjllMzYzMTIxNDkyMjEyYmRiMGI3MmM5
YWZmMDA5OGQxZjc0Y2Y2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2RvbVRva2VuTGlzdEl0ZXJhdG9yLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlIGNsYXNzPSJhIGIiPlRlc3Rp
bmcgb2YgRE9NVG9rZW5MaXN0IGl0ZXJhYmxlIGNhcGFjaXRpZXM8L3RpdGxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBkZXNj
cmlwdGlvbignVGVzdGluZyBvZiBET01Ub2tlbkxpc3QgaXRlcmFibGUgY2FwYWNpdGllcy4nKTsK
KworICAgICAgICAgICAgdmFyIHRlc3RpbmdHcm91bmQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgndGl0bGUnKVswXTsKKyAgICAgICAgICAgIHZhciBjbGFzc0xpc3QgPSB0ZXN0aW5n
R3JvdW5kLmNsYXNzTGlzdDsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tJdGVtVHlwZShp
dGVtKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUl0ZXJhYmxlKGl0ZW1z
KSB7CisgICAgICAgICAgICAgICAgaXRlbXMucHVzaChjbGFzc0xpc3RbMF0pOworICAgICAgICAg
ICAgICAgIGl0ZW1zLnB1c2goY2xhc3NMaXN0WzFdKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y2xhc3NMaXN0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlSXRl
cmFibGUoKSB7CisgICAgICAgICAgICAgICAgdGVzdGluZ0dyb3VuZC5zZXRBdHRyaWJ1dGUoImNs
YXNzIiwgImEgYiBjIGQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICA8L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Iml0ZXJhYmxlLXRlc3RzLmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL2l0
ZXJhYmxlLXRlc3RzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vaXRlcmFibGUtdGVzdHMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTk0OTM2ZTA2OGRjMWJkNjUzYmIyMzEzNmY1ZTZjNWNlZGIyNzBiNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2l0ZXJhYmxlLXRlc3RzLmpzCkBA
IC0wLDAgKzEsMTM2IEBACisvLyBNb2RpZnlpbmcgQXJyYXkgcHJvdG90eXBlIHRvIGVuc3VyZSB0
aGlzIGRvZXMgbm90IGltcGFjdCBpdGVyYWJsZSBtZXRob2RzLgordmFyIGVudHJpZXNGdW5jdGlv
biA9IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzOworQXJyYXkucHJvdG90eXBlLmVudHJpZXMgPSBm
dW5jdGlvbigpIHsKKyAgICBjb25zb2xlLmxvZygiQXJyYXkucHJvdG90eXBlLmVudHJpZXMgY2Fs
bGVkIik7CisgIHJldHVybiBlbnRyaWVzRnVuY3Rpb24uYXBwbHkodGhpcywgYXJndW1lbnRzKTsK
K30KK3ZhciBmb3JFYWNoRnVuY3Rpb24gPSBBcnJheS5wcm90b3R5cGUuZm9yRWFjaDsKK0FycmF5
LnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oKSB7CisgICAgY29uc29sZS5sb2coIkFycmF5
LnByb3RvdHlwZS5mb3JFYWNoIGNhbGxlZCIpOworICByZXR1cm4gZm9yRWFjaEZ1bmN0aW9uLmFw
cGx5KHRoaXMsIGFyZ3VtZW50cyk7Cit9Cit2YXIga2V5c0Z1bmN0aW9uID0gQXJyYXkucHJvdG90
eXBlLmtleXM7CitBcnJheS5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkgeworICAgIGNvbnNv
bGUubG9nKCJBcnJheS5wcm90b3R5cGUua2V5cyBjYWxsZWQiKTsKKyAgcmV0dXJuIGtleXNGdW5j
dGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworfQordmFyIHZhbHVlc0Z1bmN0aW9uID0gQXJy
YXkucHJvdG90eXBlLnZhbHVlczsKK0FycmF5LnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbigp
IHsKKyAgICBjb25zb2xlLmxvZygiQXJyYXkucHJvdG90eXBlLnZhbHVlcyBjYWxsZWQiKTsKKyAg
cmV0dXJuIHZhbHVlc0Z1bmN0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cit9CisKK3ZhciBl
bmQ7CitmdW5jdGlvbiBjaGVja0VuZEl0ZXJhdG9yKGl0ZXJhdG9yVmFsdWUpIHsKKyAgZW5kID0g
aXRlcmF0b3JWYWx1ZTsKKyAgc2hvdWxkQmVUcnVlKCdlbmQuZG9uZScpOworICBzaG91bGRCZVVu
ZGVmaW5lZCgnZW5kLnZhbHVlJyk7Cit9CisKKy8vIFNob3VsZCBjcmVhdGUgYW4gaXRlcmFibGUg
d2l0aCB0d28gaXRlbXMsIHB1dCBpbiBjaGlsZHJlbiBhcnJheQordmFyIGNoaWxkcmVuID0gW107
Cit2YXIgdGVzdGVkSXRlcmFibGUgPSBjcmVhdGVJdGVyYWJsZShjaGlsZHJlbik7CisKK3Nob3Vs
ZEJlKCd0ZXN0ZWRJdGVyYWJsZS5lbnRyaWVzJywgJ2VudHJpZXNGdW5jdGlvbicpOworc2hvdWxk
QmUoJ3Rlc3RlZEl0ZXJhYmxlLmZvckVhY2gnLCAnZm9yRWFjaEZ1bmN0aW9uJyk7CitzaG91bGRC
ZSgndGVzdGVkSXRlcmFibGUua2V5cycsICdrZXlzRnVuY3Rpb24nKTsKK3Nob3VsZEJlKCd0ZXN0
ZWRJdGVyYWJsZS52YWx1ZXMnLCAndmFsdWVzRnVuY3Rpb24nKTsKKworc2hvdWxkQmUoInRlc3Rl
ZEl0ZXJhYmxlLmxlbmd0aCIsICIyIik7CisKK3ZhciBpbmRleCA9IDA7Citmb3IgKHZhciBpdGVt
IG9mIHRlc3RlZEl0ZXJhYmxlKQorICAgIHNob3VsZEJlKCdpdGVtJywgJ2NoaWxkcmVuW2luZGV4
KytdJyk7CisKK3BhaXIgPSBBcnJheS5mcm9tKHRlc3RlZEl0ZXJhYmxlKTsKK3Nob3VsZEJlKCdw
YWlyWzBdJywgJ2NoaWxkcmVuWzBdJyk7CitzaG91bGRCZSgncGFpclsxXScsICdjaGlsZHJlblsx
XScpOworCitpbmRleCA9IDA7Cit2YXIgbm9kZTsKK3ZhciBmb3JFYWNoSW5kZXg7Cit2YXIgZm9y
RWFjaENvbnRhaW5lcjsKK3ZhciB0aGlzVmFsdWU7Cit0ZXN0ZWRJdGVyYWJsZS5mb3JFYWNoKGZ1
bmN0aW9uKG4sIGksIGMpIHsKKyAgICBub2RlID0gbjsKKyAgICBmb3JFYWNoSW5kZXggPSBpOwor
ICAgIGZvckVhY2hDb250YWluZXIgPSBjOworICAgIHRoaXNWYWx1ZSA9IHRoaXM7CisgICAgc2hv
dWxkQmUoJ2ZvckVhY2hDb250YWluZXInLCAndGVzdGVkSXRlcmFibGUnKTsKKyAgICBzaG91bGRC
ZSgnZm9yRWFjaEluZGV4JywgJ2luZGV4Jyk7CisgICAgc2hvdWxkQmUoJ25vZGUnLCAnY2hpbGRy
ZW5baW5kZXgrK10nKTsKKyAgICBzaG91bGRCZSgndGhpc1ZhbHVlJywgJ3dpbmRvdycpOworfSk7
CisKK3Rlc3RlZEl0ZXJhYmxlLmZvckVhY2goZnVuY3Rpb24oKSB7CisgICAgdGhpc1ZhbHVlID0g
dGhpczsKKyAgICBzaG91bGRCZSgndGhpc1ZhbHVlJywgJ3dpbmRvdycpOworfSwgdW5kZWZpbmVk
KTsKKwordmFyIGdpdmVuVGhpc1ZhbHVlID0gdGVzdGVkSXRlcmFibGU7Cit0ZXN0ZWRJdGVyYWJs
ZS5mb3JFYWNoKGZ1bmN0aW9uKCkgeworICAgIHRoaXNWYWx1ZSA9IHRoaXM7CisgICAgc2hvdWxk
QmUoJ3RoaXNWYWx1ZScsICdnaXZlblRoaXNWYWx1ZScpOworfSwgZ2l2ZW5UaGlzVmFsdWUpOwor
Cit2YXIgaXRlcmF0b3IgPSB0ZXN0ZWRJdGVyYWJsZS5rZXlzKCk7CitzaG91bGRCZSgnaXRlcmF0
b3IubmV4dCgpLnZhbHVlJywgJzAnKTsKK3Nob3VsZEJlKCdpdGVyYXRvci5uZXh0KCkudmFsdWUn
LCAnMScpOworY2hlY2tFbmRJdGVyYXRvcihpdGVyYXRvci5uZXh0KCkpOworCit2YXIgaXRlcmF0
b3IgPSB0ZXN0ZWRJdGVyYWJsZS52YWx1ZXMoKTsKK3Nob3VsZEJlKCdpdGVyYXRvci5uZXh0KCku
dmFsdWUnLCAnY2hpbGRyZW5bMF0nKTsKK3Nob3VsZEJlKCdpdGVyYXRvci5uZXh0KCkudmFsdWUn
LCAnY2hpbGRyZW5bMV0nKTsKK2NoZWNrRW5kSXRlcmF0b3IoaXRlcmF0b3IubmV4dCgpKTsKKwor
dmFyIGl0ZXJhdG9yID0gdGVzdGVkSXRlcmFibGUuZW50cmllcygpOwordmFyIHBhaXIgPSBpdGVy
YXRvci5uZXh0KCkudmFsdWU7CitzaG91bGRCZSgncGFpci5sZW5ndGgnLCAnMicpOworc2hvdWxk
QmUoJ3BhaXJbMF0nLCAnMCcpOworc2hvdWxkQmUoJ3BhaXJbMV0nLCAnY2hpbGRyZW5bMF0nKTsK
K3BhaXIgPSBpdGVyYXRvci5uZXh0KCkudmFsdWU7CitzaG91bGRCZSgncGFpci5sZW5ndGgnLCAn
MicpOworc2hvdWxkQmUoJ3BhaXJbMF0nLCAnMScpOworc2hvdWxkQmUoJ3BhaXJbMV0nLCAnY2hp
bGRyZW5bMV0nKTsKK2NoZWNrRW5kSXRlcmF0b3IoaXRlcmF0b3IubmV4dCgpKTsKKworLy8gU2hv
dWxkIGFkZCAyIG5ldyBpdGVtcy4KK3VwZGF0ZUl0ZXJhYmxlKCk7CisKK2NoZWNrRW5kSXRlcmF0
b3IoaXRlcmF0b3IubmV4dCgpKTsKKwordmFyIHRlc3RlZEl0ZXJhYmxlUHJvdG90eXBlID0gT2Jq
ZWN0LmdldFByb3RvdHlwZU9mKHRlc3RlZEl0ZXJhYmxlKQordmFyIGRlc2NyaXB0b3IgPSBPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRlc3RlZEl0ZXJhYmxlUHJvdG90eXBlLCBTeW1i
b2wuaXRlcmF0b3IpOworc2hvdWxkQmVUcnVlKCdkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScpOwor
c2hvdWxkQmVUcnVlKCdkZXNjcmlwdG9yLndyaXRhYmxlJyk7CitzaG91bGRCZUZhbHNlKCdkZXNj
cmlwdG9yLmVudW1lcmFibGUnKTsKKworc2hvdWxkTm90VGhyb3coJ3Rlc3RlZEl0ZXJhYmxlUHJv
dG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSB2YWx1ZXNGdW5jdGlvbjsnKTsKK3ZhciBjb3VudGVy
ID0gMDsKK2ZvciAodmFyIGEgb2YgdGVzdGVkSXRlcmFibGUpIHsKKyAgICBzaG91bGRCZVRydWUo
J2NoZWNrSXRlbVR5cGUoYSknKTsKKyAgICBjb3VudGVyKys7Cit9CitzaG91bGRCZSgnY291bnRl
cicsICc0Jyk7Citjb3VudGVyID0gMDsKK2ZvciAodmFyIHYgb2YgdGVzdGVkSXRlcmFibGUudmFs
dWVzKCkpIHsKKyAgICBzaG91bGRCZVRydWUoJ2NoZWNrSXRlbVR5cGUodiknKTsKKyAgICBjb3Vu
dGVyKys7Cit9CitzaG91bGRCZSgnY291bnRlcicsICc0Jyk7CisKK2NvdW50ZXIgPSAwOworZm9y
ICh2YXIgayBvZiB0ZXN0ZWRJdGVyYWJsZS5rZXlzKCkpIHsKKyAgICBzaG91bGRCZSgndHlwZW9m
IGsnLCAnIm51bWJlciInKTsKKyAgICBjb3VudGVyKys7Cit9CitzaG91bGRCZSgnY291bnRlcics
ICc0Jyk7CisKK2NvdW50ZXIgPSAwOworZm9yICh2YXIgZSBvZiB0ZXN0ZWRJdGVyYWJsZS5lbnRy
aWVzKCkpIHsKKyAgICBzaG91bGRCZSgndHlwZW9mIGVbMF0nLCAnIm51bWJlciInKTsKKyAgICBz
aG91bGRCZSgnZVsxXScsICd0ZXN0ZWRJdGVyYWJsZVtlWzBdXScpOworICAgIGNvdW50ZXIrKzsK
K30KKworc2hvdWxkQmUoJ2NvdW50ZXInLCAnNCcpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vbm9kZUxpc3RJdGVyYXRvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9ub2RlTGlzdEl0ZXJhdG9yLWV4cGVjdGVkLnR4dAppbmRleCBiYzAzYmI1ZGVjNTliZmRk
NGU0MjRiMDk4ZDQxMGNlMGFlNDcxMmFmLi45MTE4MzJkMTQyYjYyZGJiM2MwYjUzMGNlZDY5YzFi
YTdjMDgyZjc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2RlTGlzdEl0ZXJh
dG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2RlTGlzdEl0ZXJh
dG9yLWV4cGVjdGVkLnR4dApAQCAtMywyMCArMywyMCBAQCBUZXN0aW5nIG9mIE5vZGVMaXN0IGl0
ZXJhYmxlIGNhcGFjaXRpZXMuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBu
b2RlTGlzdC5lbnRyaWVzID09PSBlbnRyaWVzRnVuY3Rpb24gaXMgdHJ1ZQotUEFTUyBub2RlTGlz
dC5mb3JFYWNoID09PSBmb3JFYWNoRnVuY3Rpb24gaXMgdHJ1ZQotUEFTUyBub2RlTGlzdC5rZXlz
ID09PSBrZXlzRnVuY3Rpb24gaXMgdHJ1ZQotUEFTUyBub2RlTGlzdC52YWx1ZXMgPT09IHZhbHVl
c0Z1bmN0aW9uIGlzIHRydWUKLVBBU1Mgbm9kZUxpc3QubGVuZ3RoIGlzIDIKK1BBU1MgdGVzdGVk
SXRlcmFibGUuZW50cmllcyBpcyBlbnRyaWVzRnVuY3Rpb24KK1BBU1MgdGVzdGVkSXRlcmFibGUu
Zm9yRWFjaCBpcyBmb3JFYWNoRnVuY3Rpb24KK1BBU1MgdGVzdGVkSXRlcmFibGUua2V5cyBpcyBr
ZXlzRnVuY3Rpb24KK1BBU1MgdGVzdGVkSXRlcmFibGUudmFsdWVzIGlzIHZhbHVlc0Z1bmN0aW9u
CitQQVNTIHRlc3RlZEl0ZXJhYmxlLmxlbmd0aCBpcyAyCiBQQVNTIGl0ZW0gaXMgY2hpbGRyZW5b
aW5kZXgrK10KIFBBU1MgaXRlbSBpcyBjaGlsZHJlbltpbmRleCsrXQogUEFTUyBwYWlyWzBdIGlz
IGNoaWxkcmVuWzBdCiBQQVNTIHBhaXJbMV0gaXMgY2hpbGRyZW5bMV0KLVBBU1MgZm9yRWFjaENv
bnRhaW5lciBpcyBub2RlTGlzdAorUEFTUyBmb3JFYWNoQ29udGFpbmVyIGlzIHRlc3RlZEl0ZXJh
YmxlCiBQQVNTIGZvckVhY2hJbmRleCBpcyBpbmRleAogUEFTUyBub2RlIGlzIGNoaWxkcmVuW2lu
ZGV4KytdCiBQQVNTIHRoaXNWYWx1ZSBpcyB3aW5kb3cKLVBBU1MgZm9yRWFjaENvbnRhaW5lciBp
cyBub2RlTGlzdAorUEFTUyBmb3JFYWNoQ29udGFpbmVyIGlzIHRlc3RlZEl0ZXJhYmxlCiBQQVNT
IGZvckVhY2hJbmRleCBpcyBpbmRleAogUEFTUyBub2RlIGlzIGNoaWxkcmVuW2luZGV4KytdCiBQ
QVNTIHRoaXNWYWx1ZSBpcyB3aW5kb3cKQEAgLTI3LDExICsyNywxMSBAQCBQQVNTIHRoaXNWYWx1
ZSBpcyBnaXZlblRoaXNWYWx1ZQogUEFTUyBpdGVyYXRvci5uZXh0KCkudmFsdWUgaXMgMAogUEFT
UyBpdGVyYXRvci5uZXh0KCkudmFsdWUgaXMgMQogUEFTUyBlbmQuZG9uZSBpcyB0cnVlCi1QQVNT
IGVuZC52YWx1ZSBpcyB1bmRlZmluZWQKK1BBU1MgZW5kLnZhbHVlIGlzIHVuZGVmaW5lZC4KIFBB
U1MgaXRlcmF0b3IubmV4dCgpLnZhbHVlIGlzIGNoaWxkcmVuWzBdCiBQQVNTIGl0ZXJhdG9yLm5l
eHQoKS52YWx1ZSBpcyBjaGlsZHJlblsxXQogUEFTUyBlbmQuZG9uZSBpcyB0cnVlCi1QQVNTIGVu
ZC52YWx1ZSBpcyB1bmRlZmluZWQKK1BBU1MgZW5kLnZhbHVlIGlzIHVuZGVmaW5lZC4KIFBBU1Mg
cGFpci5sZW5ndGggaXMgMgogUEFTUyBwYWlyWzBdIGlzIDAKIFBBU1MgcGFpclsxXSBpcyBjaGls
ZHJlblswXQpAQCAtMzksMTcgKzM5LDM2IEBAIFBBU1MgcGFpci5sZW5ndGggaXMgMgogUEFTUyBw
YWlyWzBdIGlzIDEKIFBBU1MgcGFpclsxXSBpcyBjaGlsZHJlblsxXQogUEFTUyBlbmQuZG9uZSBp
cyB0cnVlCi1QQVNTIGVuZC52YWx1ZSBpcyB1bmRlZmluZWQKK1BBU1MgZW5kLnZhbHVlIGlzIHVu
ZGVmaW5lZC4KIFBBU1MgZW5kLmRvbmUgaXMgdHJ1ZQotUEFTUyBlbmQudmFsdWUgaXMgdW5kZWZp
bmVkCitQQVNTIGVuZC52YWx1ZSBpcyB1bmRlZmluZWQuCiBQQVNTIGRlc2NyaXB0b3IuY29uZmln
dXJhYmxlIGlzIHRydWUKIFBBU1MgZGVzY3JpcHRvci53cml0YWJsZSBpcyB0cnVlCiBQQVNTIGRl
c2NyaXB0b3IuZW51bWVyYWJsZSBpcyBmYWxzZQotUEFTUyBOb2RlTGlzdC5wcm90b3R5cGVbU3lt
Ym9sLml0ZXJhdG9yXSA9IHZhbHVlc0Z1bmN0aW9uOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4K
LVBBU1MgYSBpbnN0YW5jZW9mIE5vZGUgaXMgdHJ1ZQotUEFTUyBhIGluc3RhbmNlb2YgTm9kZSBp
cyB0cnVlCi1QQVNTIGEgaW5zdGFuY2VvZiBOb2RlIGlzIHRydWUKLVBBU1MgYSBpbnN0YW5jZW9m
IE5vZGUgaXMgdHJ1ZQorUEFTUyB0ZXN0ZWRJdGVyYWJsZVByb3RvdHlwZVtTeW1ib2wuaXRlcmF0
b3JdID0gdmFsdWVzRnVuY3Rpb247IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgorUEFTUyBjaGVj
a0l0ZW1UeXBlKGEpIGlzIHRydWUKK1BBU1MgY2hlY2tJdGVtVHlwZShhKSBpcyB0cnVlCitQQVNT
IGNoZWNrSXRlbVR5cGUoYSkgaXMgdHJ1ZQorUEFTUyBjaGVja0l0ZW1UeXBlKGEpIGlzIHRydWUK
K1BBU1MgY291bnRlciBpcyA0CitQQVNTIGNoZWNrSXRlbVR5cGUodikgaXMgdHJ1ZQorUEFTUyBj
aGVja0l0ZW1UeXBlKHYpIGlzIHRydWUKK1BBU1MgY2hlY2tJdGVtVHlwZSh2KSBpcyB0cnVlCitQ
QVNTIGNoZWNrSXRlbVR5cGUodikgaXMgdHJ1ZQorUEFTUyBjb3VudGVyIGlzIDQKK1BBU1MgdHlw
ZW9mIGsgaXMgIm51bWJlciIKK1BBU1MgdHlwZW9mIGsgaXMgIm51bWJlciIKK1BBU1MgdHlwZW9m
IGsgaXMgIm51bWJlciIKK1BBU1MgdHlwZW9mIGsgaXMgIm51bWJlciIKK1BBU1MgY291bnRlciBp
cyA0CitQQVNTIHR5cGVvZiBlWzBdIGlzICJudW1iZXIiCitQQVNTIGVbMV0gaXMgdGVzdGVkSXRl
cmFibGVbZVswXV0KK1BBU1MgdHlwZW9mIGVbMF0gaXMgIm51bWJlciIKK1BBU1MgZVsxXSBpcyB0
ZXN0ZWRJdGVyYWJsZVtlWzBdXQorUEFTUyB0eXBlb2YgZVswXSBpcyAibnVtYmVyIgorUEFTUyBl
WzFdIGlzIHRlc3RlZEl0ZXJhYmxlW2VbMF1dCitQQVNTIHR5cGVvZiBlWzBdIGlzICJudW1iZXIi
CitQQVNTIGVbMV0gaXMgdGVzdGVkSXRlcmFibGVbZVswXV0KIFBBU1MgY291bnRlciBpcyA0CiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL25vZGVMaXN0SXRlcmF0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25v
ZGVMaXN0SXRlcmF0b3IuaHRtbAppbmRleCA3MWY5OWJlMTdmM2Y5ODRhNWViMjYzMTQ1NDIzNjRk
NjUyNTk0YjYzLi5kYTYxYzllOGIwOTc3YTEyZGIzNmNhZGFjMTBmYzdmYjVhMDNiMDFmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9ub2RlTGlzdEl0ZXJhdG9yLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vbm9kZUxpc3RJdGVyYXRvci5odG1sCkBAIC0xLDQgKzEsNCBA
QAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPCFET0NU
WVBFIGh0bWw+CiA8aHRtbD4KICAgICA8aGVhZD4KICAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CkBAIC03LDEyNiArNywyOCBAQAog
ICAgICAgICA8c2NyaXB0PgogICAgICAgICAgICAgZGVzY3JpcHRpb24oJ1Rlc3Rpbmcgb2YgTm9k
ZUxpc3QgaXRlcmFibGUgY2FwYWNpdGllcy4nKTsKIAotICAgICAgICAgICAgLy8gTW9kaWZ5aW5n
IEFycmF5IHByb3RvdHlwZSB0byBlbnN1cmUgdGhpcyBkb2VzIG5vdCBpbXBhY3QgTm9kZUxpc3Qg
aXRlcmFibGUgbWV0aG9kcy4KLSAgICAgICAgICAgIHZhciBlbnRyaWVzRnVuY3Rpb24gPSBBcnJh
eS5wcm90b3R5cGUuZW50cmllczsKLSAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5lbnRyaWVz
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkFycmF5LnByb3Rv
dHlwZS5lbnRyaWVzIGNhbGxlZCIpOwotICAgICAgICAgICAgICByZXR1cm4gZW50cmllc0Z1bmN0
aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2
YXIgZm9yRWFjaEZ1bmN0aW9uID0gQXJyYXkucHJvdG90eXBlLmZvckVhY2g7Ci0gICAgICAgICAg
ICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAg
IGNvbnNvbGUubG9nKCJBcnJheS5wcm90b3R5cGUuZm9yRWFjaCBjYWxsZWQiKTsKLSAgICAgICAg
ICAgICAgcmV0dXJuIGZvckVhY2hGdW5jdGlvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdmFyIGtleXNGdW5jdGlvbiA9IEFycmF5LnByb3RvdHlw
ZS5rZXlzOwotICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiQXJyYXkucHJvdG90eXBlLmtleXMgY2FsbGVk
Iik7Ci0gICAgICAgICAgICAgIHJldHVybiBrZXlzRnVuY3Rpb24uYXBwbHkodGhpcywgYXJndW1l
bnRzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciB2YWx1ZXNGdW5jdGlvbiA9IEFy
cmF5LnByb3RvdHlwZS52YWx1ZXM7Ci0gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUudmFsdWVz
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkFycmF5LnByb3Rv
dHlwZS52YWx1ZXMgY2FsbGVkIik7Ci0gICAgICAgICAgICAgIHJldHVybiB2YWx1ZXNGdW5jdGlv
bi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7Ci0KLSAgICAgICAgICAgIHZhciBlbmQ7Ci0gICAgICAgICAgICBmdW5jdGlvbiBjaGVj
a0VuZEl0ZXJhdG9yKGl0ZXJhdG9yVmFsdWUpIHsKLSAgICAgICAgICAgICAgZW5kID0gaXRlcmF0
b3JWYWx1ZTsKLSAgICAgICAgICAgICAgc2hvdWxkQmUoJ2VuZC5kb25lJywgJ3RydWUnKTsKLSAg
ICAgICAgICAgICAgc2hvdWxkQmUoJ2VuZC52YWx1ZScsICd1bmRlZmluZWQnKTsKLSAgICAgICAg
ICAgIH0KLQogICAgICAgICAgICAgdmFyIHRlc3RpbmdHcm91bmQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKLSAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IFtkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKSwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb2wnKV07Ci0gICAgICAg
ICAgICB0ZXN0aW5nR3JvdW5kLmFwcGVuZENoaWxkKGNoaWxkcmVuWzBdKTsKLSAgICAgICAgICAg
IHRlc3RpbmdHcm91bmQuYXBwZW5kQ2hpbGQoY2hpbGRyZW5bMV0pOworICAgICAgICAgICAgdmFy
IG5vZGVzID0gW2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdvbCcpXTsKKyAgICAgICAgICAgIHRlc3RpbmdHcm91bmQuYXBwZW5kQ2hpbGQobm9k
ZXNbMF0pOworICAgICAgICAgICAgdGVzdGluZ0dyb3VuZC5hcHBlbmRDaGlsZChub2Rlc1sxXSk7
CiAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlc3RpbmdHcm91bmQpOwog
CiAgICAgICAgICAgICB2YXIgbm9kZUxpc3QgPSB0ZXN0aW5nR3JvdW5kLmNoaWxkTm9kZXM7CiAK
LSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgnbm9kZUxpc3QuZW50cmllcyA9PT0gZW50cmllc0Z1
bmN0aW9uJyk7Ci0gICAgICAgICAgICBzaG91bGRCZVRydWUoJ25vZGVMaXN0LmZvckVhY2ggPT09
IGZvckVhY2hGdW5jdGlvbicpOwotICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCdub2RlTGlzdC5r
ZXlzID09PSBrZXlzRnVuY3Rpb24nKTsKLSAgICAgICAgICAgIHNob3VsZEJlVHJ1ZSgnbm9kZUxp
c3QudmFsdWVzID09PSB2YWx1ZXNGdW5jdGlvbicpOwotCi0gICAgICAgICAgICBzaG91bGRCZSgi
bm9kZUxpc3QubGVuZ3RoIiwgIjIiKTsKLQotICAgICAgICAgICAgdmFyIGluZGV4ID0gMDsKLSAg
ICAgICAgICAgIGZvciAodmFyIGl0ZW0gb2Ygbm9kZUxpc3QpCi0gICAgICAgICAgICAgICAgc2hv
dWxkQmUoJ2l0ZW0nLCAnY2hpbGRyZW5baW5kZXgrK10nKTsKLQotICAgICAgICAgICAgcGFpciA9
IEFycmF5LmZyb20obm9kZUxpc3QpOwotICAgICAgICAgICAgc2hvdWxkQmUoJ3BhaXJbMF0nLCAn
Y2hpbGRyZW5bMF0nKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCdwYWlyWzFdJywgJ2NoaWxkcmVu
WzFdJyk7Ci0KLSAgICAgICAgICAgIGluZGV4ID0gMDsKLSAgICAgICAgICAgIHZhciBub2RlOwot
ICAgICAgICAgICAgdmFyIGZvckVhY2hJbmRleDsKLSAgICAgICAgICAgIHZhciBmb3JFYWNoQ29u
dGFpbmVyOwotICAgICAgICAgICAgdmFyIHRoaXNWYWx1ZTsKLSAgICAgICAgICAgIG5vZGVMaXN0
LmZvckVhY2goZnVuY3Rpb24obiwgaSwgYykgewotICAgICAgICAgICAgICAgIG5vZGUgPSBuOwot
ICAgICAgICAgICAgICAgIGZvckVhY2hJbmRleCA9IGk7Ci0gICAgICAgICAgICAgICAgZm9yRWFj
aENvbnRhaW5lciA9IGM7Ci0gICAgICAgICAgICAgICAgdGhpc1ZhbHVlID0gdGhpczsKLSAgICAg
ICAgICAgICAgICBzaG91bGRCZSgnZm9yRWFjaENvbnRhaW5lcicsICdub2RlTGlzdCcpOwotICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCdmb3JFYWNoSW5kZXgnLCAnaW5kZXgnKTsKLSAgICAgICAg
ICAgICAgICBzaG91bGRCZSgnbm9kZScsICdjaGlsZHJlbltpbmRleCsrXScpOwotICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCd0aGlzVmFsdWUnLCAnd2luZG93Jyk7Ci0gICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgbm9kZUxpc3QuZm9yRWFjaChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
ICAgICB0aGlzVmFsdWUgPSB0aGlzOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCd0aGlzVmFs
dWUnLCAnd2luZG93Jyk7Ci0gICAgICAgICAgICB9LCB1bmRlZmluZWQpOwotCi0gICAgICAgICAg
ICB2YXIgZ2l2ZW5UaGlzVmFsdWUgPSBub2RlTGlzdDsKLSAgICAgICAgICAgIG5vZGVMaXN0LmZv
ckVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhpc1ZhbHVlID0gdGhpczsKLSAg
ICAgICAgICAgICAgICBzaG91bGRCZSgndGhpc1ZhbHVlJywgJ2dpdmVuVGhpc1ZhbHVlJyk7Ci0g
ICAgICAgICAgICB9LCBnaXZlblRoaXNWYWx1ZSk7Ci0KLSAgICAgICAgICAgIHZhciBpdGVyYXRv
ciA9IG5vZGVMaXN0LmtleXMoKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCdpdGVyYXRvci5uZXh0
KCkudmFsdWUnLCAnMCcpOwotICAgICAgICAgICAgc2hvdWxkQmUoJ2l0ZXJhdG9yLm5leHQoKS52
YWx1ZScsICcxJyk7Ci0gICAgICAgICAgICBjaGVja0VuZEl0ZXJhdG9yKGl0ZXJhdG9yLm5leHQo
KSk7Ci0KLSAgICAgICAgICAgIHZhciBpdGVyYXRvciA9IG5vZGVMaXN0LnZhbHVlcygpOwotICAg
ICAgICAgICAgc2hvdWxkQmUoJ2l0ZXJhdG9yLm5leHQoKS52YWx1ZScsICdjaGlsZHJlblswXScp
OwotICAgICAgICAgICAgc2hvdWxkQmUoJ2l0ZXJhdG9yLm5leHQoKS52YWx1ZScsICdjaGlsZHJl
blsxXScpOwotICAgICAgICAgICAgY2hlY2tFbmRJdGVyYXRvcihpdGVyYXRvci5uZXh0KCkpOwot
Ci0gICAgICAgICAgICB2YXIgaXRlcmF0b3IgPSBub2RlTGlzdC5lbnRyaWVzKCk7Ci0gICAgICAg
ICAgICB2YXIgcGFpciA9IGl0ZXJhdG9yLm5leHQoKS52YWx1ZTsKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCdwYWlyLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgICAgICBzaG91bGRCZSgncGFpclswXScs
ICcwJyk7Ci0gICAgICAgICAgICBzaG91bGRCZSgncGFpclsxXScsICdjaGlsZHJlblswXScpOwot
ICAgICAgICAgICAgcGFpciA9IGl0ZXJhdG9yLm5leHQoKS52YWx1ZTsKLSAgICAgICAgICAgIHNo
b3VsZEJlKCdwYWlyLmxlbmd0aCcsICcyJyk7Ci0gICAgICAgICAgICBzaG91bGRCZSgncGFpclsw
XScsICcxJyk7Ci0gICAgICAgICAgICBzaG91bGRCZSgncGFpclsxXScsICdjaGlsZHJlblsxXScp
OwotICAgICAgICAgICAgY2hlY2tFbmRJdGVyYXRvcihpdGVyYXRvci5uZXh0KCkpOwotCi0gICAg
ICAgICAgICB0ZXN0aW5nR3JvdW5kLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3VsJykpOwotICAgICAgICAgICAgdGVzdGluZ0dyb3VuZC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdwJykpOwotICAgICAgICAgICAgY2hlY2tFbmRJdGVyYXRvcihpdGVyYXRv
ci5uZXh0KCkpOwotCi0gICAgICAgICAgICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoTm9kZUxpc3QucHJvdG90eXBlLCBTeW1ib2wuaXRlcmF0b3IpOwot
ICAgICAgICAgICAgc2hvdWxkQmVUcnVlKCdkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZScpOwotICAg
ICAgICAgICAgc2hvdWxkQmVUcnVlKCdkZXNjcmlwdG9yLndyaXRhYmxlJyk7Ci0gICAgICAgICAg
ICBzaG91bGRCZUZhbHNlKCdkZXNjcmlwdG9yLmVudW1lcmFibGUnKTsKLQotICAgICAgICAgICAg
c2hvdWxkTm90VGhyb3coJ05vZGVMaXN0LnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gdmFs
dWVzRnVuY3Rpb247Jyk7Ci0gICAgICAgICAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgICAgICAg
ICBmb3IgKHZhciBhIG9mIG5vZGVMaXN0KSB7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmVUcnVl
KCdhIGluc3RhbmNlb2YgTm9kZScpOwotICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrSXRlbVR5cGUoaXRlbSkgeworICAgICAgICAgICAgICAgIHJl
dHVybiBpdGVtIGluc3RhbmNlb2YgTm9kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZ1
bmN0aW9uIGNyZWF0ZUl0ZXJhYmxlKGl0ZW1zKSB7CisgICAgICAgICAgICAgICAgaXRlbXMucHVz
aChub2Rlc1swXSk7CisgICAgICAgICAgICAgICAgaXRlbXMucHVzaChub2Rlc1sxXSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIG5vZGVMaXN0OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZnVuY3Rpb24gdXBkYXRlSXRlcmFibGUoKSB7CisgICAgICAgICAgICAgICAgdGVzdGluZ0dyb3Vu
ZC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpKTsKKyAgICAgICAgICAg
ICAgICB0ZXN0aW5nR3JvdW5kLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3An
KSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaG91bGRCZSgnY291bnRlcicsICc0Jyk7
CiAgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iaXRlcmFibGUtdGVzdHMu
anMiPjwvc2NyaXB0PgogICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiAgICAgPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>