<?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>90678</bug_id>
          
          <creation_ts>2012-07-06 05:44:25 -0700</creation_ts>
          <short_desc>JavaScript: Drop the “escaped reserved words as identifiers” compatibility measure</short_desc>
          <delta_ts>2015-06-10 16:43:59 -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>JavaScriptCore</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>https://mathias.html5.org/specs/javascript/#escaped-reserved-words</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>145844</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mathias Bynens">mathias</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eoconnor</cc>
    
    <cc>erights</cc>
    
    <cc>ggaren</cc>
    
    <cc>mathias</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>peter</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>664032</commentid>
    <comment_count>0</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2012-07-06 05:44:25 -0700</bug_when>
    <thetext>For example, `var var;` throws a syntax error, but e.g. `var v\u0061r;` works fine, currently. This is a violation of the ECMAScript 5.1 spec, and used to be a compatibility requirement: http://mathias.html5.org/specs/javascript/#escaped-reserved-words One year ago, all browsers except IE fulfilled this.

Half a year ago Firefox dropped this non-standard addition (https://bugzilla.mozilla.org/show_bug.cgi?id=694360) and hasn’t seen any compatibility issues since.

Please align with Firefox and IE by removing this non-standard extension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664038</commentid>
    <comment_count>1</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2012-07-06 05:49:28 -0700</bug_when>
    <thetext>I’ve filed the same bug here:

* Opera/Carakan: https://bugs.opera.com/browse/DSK-369398
* Chrome/V8: http://code.google.com/p/v8/issues/detail?id=2222</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664325</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-07-06 19:30:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/11824059&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664365</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-07-07 01:19:16 -0700</bug_when>
    <thetext>See also: bug 42471.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664394</commentid>
    <comment_count>4</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2012-07-07 10:15:08 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; See also: bug 42471.

Note that bug 42471 deals with IdentifierNames, while this bug (90678) is about Identifiers. Identifiers are IdentifierNames that are not reserved words.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664743</commentid>
    <comment_count>5</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2012-07-09 02:04:09 -0700</bug_when>
    <thetext>See also: https://bugs.ecmascript.org/show_bug.cgi?id=277</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930554</commentid>
    <comment_count>6</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2013-09-18 00:30:14 -0700</bug_when>
    <thetext>FWIW, https://bugs.ecmascript.org/show_bug.cgi?id=277 is accepted, and Allen says he will make it clear (in ES6) that escaped reserved words are not allowed. The same goes for escaped regular expression flags.

Now would be a good time to drop this non-standard behavior that is apparently not a backwards compatibility concern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959166</commentid>
    <comment_count>7</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2013-12-12 04:13:52 -0800</bug_when>
    <thetext>Confirmed: ES6 drops the “escaped reserved words as identifiers” compatibility measure.

This will be fixed in v8: https://code.google.com/p/v8/issues/detail?id=2222#c4
SpiderMonkey already has ES6-compliant behavior: https://bugzilla.mozilla.org/show_bug.cgi?id=744784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1008428</commentid>
    <comment_count>8</comment_count>
    <who name="Mark S. Miller">erights</who>
    <bug_when>2014-05-11 11:01:47 -0700</bug_when>
    <thetext>What is the status of this? It is security significant for systems that pre-filter or translate code in order to enforce restrictions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100789</commentid>
    <comment_count>9</comment_count>
      <attachid>254602</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-09 14:21:06 -0700</bug_when>
    <thetext>Created attachment 254602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100803</commentid>
    <comment_count>10</comment_count>
      <attachid>254602</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-09 14:43:50 -0700</bug_when>
    <thetext>Comment on attachment 254602
Patch

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

&gt; Source/JavaScriptCore/parser/Lexer.cpp:-1092
&gt; -        if (remaining &lt; maxTokenLength) {

I don’t understand what the purpose of this check was, nor why it’s OK to remove it now.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1090
&gt; +        const HashTableValue* entry = m_vm-&gt;keywords-&gt;getKeyword(*ident);

If shouldCreateIdentifier is false, then ident will be null, and this will crash. Is it not legal to call this function with shouldCreateIdentifier false and without LexerFlagsIgnoreReservedWords? Isn’t there any code that calls it that way?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100808</commentid>
    <comment_count>11</comment_count>
      <attachid>254602</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-09 15:06:42 -0700</bug_when>
    <thetext>Comment on attachment 254602
Patch

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

thank you for your review.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:-1092
&gt;&gt; -        if (remaining &lt; maxTokenLength) {
&gt; 
&gt; I don’t understand what the purpose of this check was, nor why it’s OK to remove it now.

As far as I checked the Lexer&apos;s code, I think this `remaining &lt; maxTokenLength` is micro-optimization code.
`maxTokenLength` indicates the maximum keyword length + 1 (according to the KeywordLookupGenerator.py). (currently 11 for `instanceof`)

For remaining &gt;= maxTokenLength case (&amp; if the code doesn&apos;t contain escape sequences), we checked keyword in `parseIdentifier`. So here, we just checked `remaining &lt; maxTokenLength` case. (!bufferRequired ensured that this branch is executed for identifiers not containing escapes).

But now, this branch is also executed for identifiers containing escape sequence. So the above short circuit is no longer effective.

However, I think `parseIdentifierSlowCase` is always executed for identifiers containing escape sequence. Anyway, this guard is needed to be removed.

&gt;&gt; Source/JavaScriptCore/parser/Lexer.cpp:1090
&gt;&gt; +        const HashTableValue* entry = m_vm-&gt;keywords-&gt;getKeyword(*ident);
&gt; 
&gt; If shouldCreateIdentifier is false, then ident will be null, and this will crash. Is it not legal to call this function with shouldCreateIdentifier false and without LexerFlagsIgnoreReservedWords? Isn’t there any code that calls it that way?

Good question.
`shouldCreateIdentifier` becomes false when `lexerFlags` has `LexexFlagsDontBuildKeywords`.
And `LexexFlagsDontBuildKeywords` is used in `SyntaxChecker::DontBuildKeywords`.

When using `DontBuildKeywords`, the parse always use `LexerFlagsIgnoreReservedWords`.
So when `LexexFlagsDontBuildKeywords` is specified, `LexerFlagsIgnoreReservedWords` is always specified.
As a result, if `!(lexerFlags &amp; LexerFlagsIgnoreReservedWords)` becomes true, `LexexFlagsDontBuildKeywords` is never specified. (so, `shouldCreateIdentifier` is always true, this is the reason why `ASSERT(shouldCreateIdentifier);` is inserted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101005</commentid>
    <comment_count>12</comment_count>
      <attachid>254602</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-10 06:26:11 -0700</bug_when>
    <thetext>Comment on attachment 254602
Patch

Clearing flags on attachment: 254602

Committed r185414: &lt;http://trac.webkit.org/changeset/185414&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101006</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-10 06:26:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101028</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-06-10 08:32:59 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 254602 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 254602
&gt; 
&gt; Committed r185414: &lt;http://trac.webkit.org/changeset/185414&gt;

It broke mozilla-tests.yaml/ecma_3/Unicode/uc-003.js everywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101029</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-06-10 08:34:33 -0700</bug_when>
    <thetext>And it made 50+ assert (and exit early) on the debug bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101043</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-10 09:39:31 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 145844</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101049</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-10 10:00:27 -0700</bug_when>
    <thetext>This caused problems like this:
https://build.webkit.org/builders/Apple%20Yosemite%20Debug%20WK2%20%28Tests%29/builds/4856</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101065</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-10 11:40:40 -0700</bug_when>
    <thetext>Oops. Thank you for creating the rolling back.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101089</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-10 12:25:15 -0700</bug_when>
    <thetext>It seems that leveraged path is never executed before this patch. (m_buffer16.shrink(0); is missing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101124</commentid>
    <comment_count>20</comment_count>
      <attachid>254679</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-06-10 14:57:35 -0700</bug_when>
    <thetext>Created attachment 254679
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101146</commentid>
    <comment_count>21</comment_count>
      <attachid>254679</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-10 15:50:15 -0700</bug_when>
    <thetext>Comment on attachment 254679
Patch

OK, lets try this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101151</commentid>
    <comment_count>22</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-10 15:58:53 -0700</bug_when>
    <thetext>I spot-checked js/kde/parse.html crashed with the first patch but not with the second, which leads me to believe that this won&apos;t break anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101163</commentid>
    <comment_count>23</comment_count>
      <attachid>254679</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-10 16:43:53 -0700</bug_when>
    <thetext>Comment on attachment 254679
Patch

Clearing flags on attachment: 254679

Committed r185437: &lt;http://trac.webkit.org/changeset/185437&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101164</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-10 16:43:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254602</attachid>
            <date>2015-06-09 14:21:06 -0700</date>
            <delta_ts>2015-06-10 14:57:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90678-20150610062039.patch</filename>
            <type>text/plain</type>
            <size>15779</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1MzcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
OTllMWU4ZjcwNDNkM2Y5NDUxYmY0OWYyNmI2Mzg3ZGZiNzU5MTI3Li5mNThkNzY2NjFiNGI4NDNk
NDg1YWM1MzRjMDgxNTkwMzYyMWQwZTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyMCBAQAogMjAxNS0wNi0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBKYXZhU2NyaXB0OiBEcm9wIHRoZSDigJxlc2NhcGVkIHJlc2VydmVk
IHdvcmRzIGFzIGlkZW50aWZpZXJz4oCdIGNvbXBhdGliaWxpdHkgbWVhc3VyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZnRlciBFUzYsIGVzY2FwZWQg
cmVzZXJ2ZWQgd29yZHMgaW4gaWRlbnRpZmllcnMgYXJlIHByb2hpYml0ZWQuCisKKyAgICAgICAg
KiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjpMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6
cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9yZXNlcnZl
ZC13b3JkLXdpdGgtZXNjYXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTeW50YXgpOgorICAg
ICAgICAodGVzdFN5bnRheEVycm9yKToKKworMjAxNS0wNi0wOSAgWXVzdWtlIFN1enVraSAgPHV0
YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAgICBJbnRyb2R1Y2UgZ2V0dGVyIGRlZmluaXRp
b24gaW50byBzdGF0aWMgaGFzaCB0YWJsZXMgYW5kIHVzZSBpdCBmb3IgZ2V0dGVycyBpbiBSZWdF
eHAucHJvdG90eXBlLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ1NzA1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXgg
N2IxMTliYTQ2NGQzMjVjMzU5MTBkMjhlYzE2NDFmNGFkYWE4NWM1MC4uMGY5MGRlMjM2MzM4MmM4
ODQ1Nzc0ZWE0ZTAxNGEyMTZkNTZmOWMzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAKQEAgLTEwNDAsNyArMTA0MCw2IEBAIGJvb2wgaXNTYWZlQnVpbHRpbklkZW50aWZp
ZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCkKIAogdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZT4gdGVtcGxhdGU8Ym9vbCBzaG91bGRDcmVhdGVJZGVudGlmaWVyPiBKU1Rv
a2VuVHlwZSBMZXhlcjxDaGFyYWN0ZXJUeXBlPjo6cGFyc2VJZGVudGlmaWVyU2xvd0Nhc2UoSlNU
b2tlbkRhdGEqIHRva2VuRGF0YSwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2Rl
KQogewotICAgIGNvbnN0IHB0cmRpZmZfdCByZW1haW5pbmcgPSBtX2NvZGVFbmQgLSBtX2NvZGU7
CiAgICAgYXV0byBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50U291cmNlUHRyKCk7CiAgICAgYm9v
bCBidWZmZXJSZXF1aXJlZCA9IGZhbHNlOwogCkBAIC0xMDg2LDE4ICsxMDg1LDEzIEBAIGJvb2wg
aXNTYWZlQnVpbHRpbklkZW50aWZpZXIoVk0mIHZtLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCkK
ICAgICB9IGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAKLSAgICBp
ZiAoTElLRUxZKCFidWZmZXJSZXF1aXJlZCAmJiAhKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdu
b3JlUmVzZXJ2ZWRXb3JkcykpKSB7CisgICAgaWYgKExJS0VMWSghKGxleGVyRmxhZ3MgJiBMZXhl
ckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CiAgICAgICAgIEFTU0VSVChzaG91bGRDcmVh
dGVJZGVudGlmaWVyKTsKLSAgICAgICAgLy8gS2V5d29yZHMgbXVzdCBub3QgYmUgcmVjb2duaXpl
ZCBpZiB0aGVyZSB3YXMgYW4gXHVYWFhYIGluIHRoZSBpZGVudGlmaWVyLgotICAgICAgICBpZiAo
cmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKLSAgICAgICAgICAgIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlKiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7Ci0gICAg
ICAgICAgICBBU1NFUlQoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB8fCAhZW50cnkpOwot
ICAgICAgICAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSURFTlQ7Ci0g
ICAgICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5UeXBlPihl
bnRyeS0+bGV4ZXJWYWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0gUkVTRVJW
RURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBJREVOVDsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVlKiBlbnRy
eSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CisgICAgICAgIGlmICghZW50
cnkpCisgICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIEpTVG9rZW5UeXBlIHRva2Vu
ID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOworICAgICAg
ICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9kZSA/IHRv
a2VuIDogSURFTlQ7CiAgICAgfQogCiAgICAgbV9idWZmZXIxNi5zaHJpbmsoMCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jlc2VydmVkLXdvcmQtd2l0
aC1lc2NhcGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jlc2VydmVk
LXdvcmQtd2l0aC1lc2NhcGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwYTc1ZjVjY2RmY2UwMDE1OGY1MDJi
YjhlNWE5MzZkOGJmOWI5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcmVzZXJ2ZWQtd29yZC13aXRoLWVzY2FwZS5qcwpAQCAtMCwwICsxLDE0
MSBAQAorZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKKyAgICB0cnkgeworICAgICAgICBl
dmFsKHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yIGlu
c3RhbmNlb2YgU3ludGF4RXJyb3IpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBl
cnJvcjogIiArIFN0cmluZyhlcnJvcikpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFN5bnRh
eEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgeworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5
IHsKKyAgICAgICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJy
b3IgPSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHN5bnRheCBlcnJvciBub3QgdGhyb3duIik7CisKKyAgICBpZiAoU3RyaW5nKGVy
cm9yKSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIg
KyBTdHJpbmcoZXJyb3IpKTsKK30KKwordGVzdFN5bnRheCgidmFyIGNvY29hIik7Cit0ZXN0U3lu
dGF4KCJ2YXIgY1x1MDA2ZmNvYSIpOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIg
dmFyYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFy
JyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIg
dlx1MDA2MXJgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3Jk
ICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgdmFyIHZcdXswMDYxfXJgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNl
IHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CisKK3Rlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YHZhciB2YXIgPSAyMDAwMDAwO2AsIFN0cmluZy5yYXdgU3lu
dGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBuYW1l
LmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHZcdTAwNjFyID0gMjAwMDAwMDtg
LCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYx
cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFy
IHZcdXswMDYxfXIgPSAyMDAwMDAwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVz
ZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOworCit0ZXN0
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIge3Zhcn0gPSBvYmopYCwgU3RyaW5nLnJhd2BTeW50
YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9y
IGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIge3ZcdTAw
NjFyfSA9IG9iamAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0
ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRh
eEVycm9yKFN0cmluZy5yYXdgdmFyIHt2XHV7MDA2MX1yfSA9IG9iamAsIFN0cmluZy5yYXdgU3lu
dGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZv
ciBrZXl3b3JkICd2YXInLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIge3Zh
cjp2YXJ9ID0gb2JqKWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtl
eXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgdmFyIHt2YXI6dlx1MDA2MXJ9ID0gb2JqYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsK
K3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciB7dmFyOnZcdXswMDYxfXJ9ID0gb2JqYCwg
U3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9
cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2
YXIgW3Zhcl0gPSBvYmpgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBr
ZXl3b3JkICd2YXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJp
bmcucmF3YHZhciBbdlx1MDA2MXJdID0gb2JqYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rl
c3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciBbdlx1ezAwNjF9cl0gPSBvYmpgLCBTdHJpbmcu
cmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBh
IHZhcmlhYmxlIG5hbWUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YFt2YXJdID0g
b2JqYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd2YXInYCk7
Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2Bbdlx1MDA2MXJdID0gb2JqYCwgU3RyaW5nLnJh
d2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd2XHUwMDYxcidgKTsKK3Rlc3RTeW50
YXhFcnJvcihTdHJpbmcucmF3YFt2XHV7MDA2MX1yXSA9IG9iamAsIFN0cmluZy5yYXdgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAndlx1ezAwNjF9cidgKTsKKwordGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gdmFyKCkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIGZ1bmN0aW9uIG5hbWUuYCk7Cit0
ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiB2XHUwMDYxcigpIHsgfWAsIFN0cmlu
Zy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBh
IGZ1bmN0aW9uIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiB2
XHV7MDA2MX1yKCkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUg
a2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSBmdW5jdGlvbiBuYW1lLmApOworCit0ZXN0U3ludGF4
RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiBhKHZhcikgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhF
cnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7
Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiBhKHZcdTAwNjFyKSB7IH1gLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicg
YXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rp
b24gYSh2XHV7MDA2MX1yKSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNl
IHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CisKK3Rlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoe3Zhcn0pIHsgfWAsIFN0cmluZy5yYXdg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4
IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rp
b24gYSh7dlx1MDA2MXJ9KSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNl
IGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsK
K3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoe3ZcdXswMDYxfXJ9KSB7IH1g
LCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3Ry
dWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKKwordGVzdFN5bnRheEVycm9yKFN0
cmluZy5yYXdgZnVuY3Rpb24gYSh7dmFyOnZhcn0pIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJy
b3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwor
dGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gYSh7dmFyOnZcdTAwNjFyfSkgeyB9
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2
MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1
bmN0aW9uIGEoe3Zhcjp2XHV7MDA2MX1yfSkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJpYWJsZSBuYW1lLmAp
OworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiBhKFt2YXJdKSB7IH1gLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEg
dmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEo
W3ZcdTAwNjFyXSkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUg
a2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJv
cihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoW3ZcdXswMDYxfXJdKSB7IH1gLCBTdHJpbmcucmF3YFN5
bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZhcmlh
YmxlIG5hbWUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiB2YXIo
KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAn
dmFyJyBhcyBhIGZ1bmN0aW9uIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2Ao
ZnVuY3Rpb24gdlx1MDA2MXIoKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90
IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgZnVuY3Rpb24gbmFtZS5gKTsKK3Rlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiB2XHV7MDA2MX1yKCkgeyB9KWAsIFN0cmlu
Zy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFz
IGEgZnVuY3Rpb24gbmFtZS5gKTsKKwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0
aW9uIGEodmFyKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUg
a2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2AoZnVuY3Rpb24gYSh2XHUwMDYxcikgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJy
b3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUu
YCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh2XHV7MDA2MX1yKSB7
IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1
ezAwNjF9cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AoZnVuY3Rpb24gYSh7dmFyfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENh
bm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2
YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoe3ZcdTAwNjFy
fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQg
ZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoe3ZcdXswMDYxfXJ9KSB7IH0pYCwgU3RyaW5nLnJh
d2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50
YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChm
dW5jdGlvbiBhKHt2YXI6dmFyfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRh
eEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoe3Zhcjp2XHUwMDYxcn0pIHsgfSlgLCBTdHJp
bmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMg
YSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9u
IGEoe3Zhcjp2XHV7MDA2MX1yfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKKwor
dGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3Zhcl0pIHsgfSlgLCBTdHJp
bmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFy
aWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt2
XHUwMDYxcl0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBr
ZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9y
KFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3ZcdXswMDYxfXJdKSB7IH0pYCwgU3RyaW5nLnJhd2BT
eW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJp
YWJsZSBuYW1lLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYShb
e3Zhcn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZp
YXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYShbe3ZcdTAwNjFyfV0pIHsgfSlgLCBTdHJp
bmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9u
IHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3
YChmdW5jdGlvbiBhKFt7dlx1ezAwNjF9cn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdv
cmQgJ3ZhcicuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7
dmFyOnZhcn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUg
a2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2AoZnVuY3Rpb24gYShbe3Zhcjp2XHUwMDYxcn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BT
eW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFi
bGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7dmFy
OnZcdXswMDYxfXJ9XSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2Ug
dGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKKwordGVzdFN5
bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW1t2YXJdXSkgeyB9KWAsIFN0cmluZy5y
YXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJs
ZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW1t2XHUw
MDYxcl1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5
d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihT
dHJpbmcucmF3YChmdW5jdGlvbiBhKFtbdlx1ezAwNjF9cl1dKSB7IH0pYCwgU3RyaW5nLnJhd2BT
eW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJp
YWJsZSBuYW1lLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7
IGhlbGxvOiB7dmFyfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNl
IGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsK
K3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IHt2XHUwMDYx
cn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRl
ZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4
RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiB7dlx1ezAwNjF9cn19KSB7IH0p
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0
cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihT
dHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IHt2YXI6dmFyfX0pIHsgfSlgLCBTdHJpbmcu
cmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFyaWFi
bGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVs
bG86IHt2YXI6dlx1MDA2MXJ9fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiB7dmFyOnZcdXswMDYx
fXJ9fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdv
cmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKKwordGVzdFN5bnRheEVycm9y
KFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyBoZWxsbzogW3Zhcl19KSB7IH0pYCwgU3RyaW5nLnJh
d2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxl
IG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxv
OiBbdlx1MDA2MXJdfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2Ug
dGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3ludGF4
RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiBbdlx1ezAwNjF9cl19KSB7IH0p
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAw
NjF9cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJh
d2AoZnVuY3Rpb24gYSh7IDA6IHt2YXJ9IH0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9y
OiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29y
ZCAndmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDog
e3ZcdTAwNjFyfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFi
YnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rl
c3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3ZcdXswMDYxfXJ9fSkg
eyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVj
b25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOworCit0ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2YXI6dmFyfX0pIHsgfSlgLCBTdHJpbmcu
cmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFyaWFi
bGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDog
e3Zhcjp2XHUwMDYxcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVz
ZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50
YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3Zhcjp2XHV7MDA2MX1yfX0pIHsg
fSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7
MDA2MX1yJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcu
cmF3YChmdW5jdGlvbiBhKHsgMDoge3ZhbHVlOnZhcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50
YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUu
YCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2YWx1ZTp2
XHUwMDYxcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUg
a2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJv
cihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3ZhbHVlOnZcdXswMDYxfXJ9fSkgeyB9KWAs
IFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYx
fXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKKwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdg
KGZ1bmN0aW9uIGEoeyAwOiBbdmFyXX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBD
YW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDogW3ZcdTAwNjFyXX0pIHsgfSlg
LCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYx
cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1
bmN0aW9uIGEoeyAwOiBbdlx1ezAwNjF9cl19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJpYWJsZSBuYW1l
LmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B0cnkgeyB9IGNhdGNoKHZhcikgeyB9
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBh
cyBhIGNhdGNoIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B0
cnkgeyB9IGNhdGNoKHZcdTAwNjFyKSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSBjYXRjaCB2YXJpYWJsZSBuYW1lLmAp
OwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdHJ5IHsgfSBjYXRjaCh2XHV7MDA2MX1yKSB7
IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7
MDA2MX1yJyBhcyBhIGNhdGNoIHZhcmlhYmxlIG5hbWUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihT
dHJpbmcucmF3YGNsYXNzIHZhciB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3Qg
dXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgY2xhc3MgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJv
cihTdHJpbmcucmF3YGNsYXNzIHZcdTAwNjFyIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6
IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIGNsYXNzIG5hbWUuYCk7Cit0
ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BjbGFzcyB2XHV7MDA2MX1yIHsgfWAsIFN0cmluZy5y
YXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEg
Y2xhc3MgbmFtZS5gKTsKKworLy8gQWxsb3dlZCBpbiBub24ta2V5d29yZCBhd2FyZSBjb250ZXh0
LgordGVzdFN5bnRheChTdHJpbmcucmF3YCh7IHZcdTAwNjFyOiAnQ29jb2EnIH0pYCk7Cit0ZXN0
U3ludGF4KFN0cmluZy5yYXdgKHsgdlx1ezAwNjF9cjogJ0NvY29hJyB9KWApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254679</attachid>
            <date>2015-06-10 14:57:35 -0700</date>
            <delta_ts>2015-06-10 16:43:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90678-20150611065706.patch</filename>
            <type>text/plain</type>
            <size>16859</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OGQ1MGI4N2NlOGIyZjdlYzc1ZDIyZjY0NDhmODliOTk2NzBhNTNjLi4xZGIwYWEyZWY2Y2M3Y2Uw
YmExZDk3YTZhYjVlMDA4NDcwMmQ3MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNS0wNi0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBKYXZhU2NyaXB0OiBEcm9wIHRoZSDigJxlc2NhcGVkIHJlc2VydmVk
IHdvcmRzIGFzIGlkZW50aWZpZXJz4oCdIGNvbXBhdGliaWxpdHkgbWVhc3VyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZnRlciBFUzYsIGVzY2FwZWQg
cmVzZXJ2ZWQgd29yZHMgaW4gaWRlbnRpZmllcnMgYXJlIHByb2hpYml0ZWQuCisgICAgICAgIEFm
dGVyIHBhcnNpbmcgSWRlbnRpZmllciwgd2Ugc2hvdWxkIHBlcmZvcm0gYG1fYnVmZmVyMTYuc2hy
aW5rKDApYC4KKworICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Okxl
eGVyPENoYXJhY3RlclR5cGU+OjpwYXJzZUlkZW50aWZpZXJTbG93Q2FzZSk6CisgICAgICAgICog
dGVzdHMvbW96aWxsYS9lY21hXzMvVW5pY29kZS91Yy0wMDMuanM6CisgICAgICAgICh0ZXN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvcmVzZXJ2ZWQtd29yZC13aXRoLWVzY2Fw
ZS5qczogQWRkZWQuCisgICAgICAgICh0ZXN0U3ludGF4KToKKyAgICAgICAgKHRlc3RTeW50YXhF
cnJvcik6CisKIDIwMTUtMDYtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODU0MTQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDdiMTE5YmE0NjRkMzI1YzM1OTEwZDI4
ZWMxNjQxZjRhZGFhODVjNTAuLjVjMGMzZjliMTJkMWQxMWM1YjY5MmM0NTkzNTcxZWM0NjgyZGMx
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0xMDQwLDcgKzEw
NDAsNiBAQCBib29sIGlzU2FmZUJ1aWx0aW5JZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHRlbXBsYXRl
PGJvb2wgc2hvdWxkQ3JlYXRlSWRlbnRpZmllcj4gSlNUb2tlblR5cGUgTGV4ZXI8Q2hhcmFjdGVy
VHlwZT46OnBhcnNlSWRlbnRpZmllclNsb3dDYXNlKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIHVu
c2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKLSAgICBjb25zdCBwdHJkaWZm
X3QgcmVtYWluaW5nID0gbV9jb2RlRW5kIC0gbV9jb2RlOwogICAgIGF1dG8gaWRlbnRpZmllclN0
YXJ0ID0gY3VycmVudFNvdXJjZVB0cigpOwogICAgIGJvb2wgYnVmZmVyUmVxdWlyZWQgPSBmYWxz
ZTsKIApAQCAtMTA4NiwyMSArMTA4NSwxNyBAQCBib29sIGlzU2FmZUJ1aWx0aW5JZGVudGlmaWVy
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciogaWRlbnQpCiAgICAgfSBlbHNlCiAgICAgICAgIHRv
a2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogCi0gICAgaWYgKExJS0VMWSghYnVmZmVyUmVxdWly
ZWQgJiYgIShsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKSkgewor
ICAgIG1fYnVmZmVyMTYuc2hyaW5rKDApOworCisgICAgaWYgKExJS0VMWSghKGxleGVyRmxhZ3Mg
JiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcykpKSB7CiAgICAgICAgIEFTU0VSVChzaG91
bGRDcmVhdGVJZGVudGlmaWVyKTsKLSAgICAgICAgLy8gS2V5d29yZHMgbXVzdCBub3QgYmUgcmVj
b2duaXplZCBpZiB0aGVyZSB3YXMgYW4gXHVYWFhYIGluIHRoZSBpZGVudGlmaWVyLgotICAgICAg
ICBpZiAocmVtYWluaW5nIDwgbWF4VG9rZW5MZW5ndGgpIHsKLSAgICAgICAgICAgIGNvbnN0IEhh
c2hUYWJsZVZhbHVlKiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7
Ci0gICAgICAgICAgICBBU1NFUlQoKHJlbWFpbmluZyA8IG1heFRva2VuTGVuZ3RoKSB8fCAhZW50
cnkpOwotICAgICAgICAgICAgaWYgKCFlbnRyeSkKLSAgICAgICAgICAgICAgICByZXR1cm4gSURF
TlQ7Ci0gICAgICAgICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IHN0YXRpY19jYXN0PEpTVG9rZW5U
eXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKTsKLSAgICAgICAgICAgIHJldHVybiAodG9rZW4gIT0g
UkVTRVJWRURfSUZfU1RSSUNUKSB8fCBzdHJpY3RNb2RlID8gdG9rZW4gOiBJREVOVDsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIGNvbnN0IEhhc2hUYWJsZVZhbHVl
KiBlbnRyeSA9IG1fdm0tPmtleXdvcmRzLT5nZXRLZXl3b3JkKCppZGVudCk7CisgICAgICAgIGlm
ICghZW50cnkpCisgICAgICAgICAgICByZXR1cm4gSURFTlQ7CisgICAgICAgIEpTVG9rZW5UeXBl
IHRva2VuID0gc3RhdGljX2Nhc3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpOwor
ICAgICAgICByZXR1cm4gKHRva2VuICE9IFJFU0VSVkVEX0lGX1NUUklDVCkgfHwgc3RyaWN0TW9k
ZSA/IHRva2VuIDogSURFTlQ7CiAgICAgfQogCi0gICAgbV9idWZmZXIxNi5zaHJpbmsoMCk7CiAg
ICAgcmV0dXJuIElERU5UOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvbW96aWxsYS9lY21hXzMvVW5pY29kZS91Yy0wMDMuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvbW96aWxsYS9lY21hXzMvVW5pY29kZS91Yy0wMDMuanMKaW5kZXggNzAwNGNm
NGJjZTVlODQyNzdhZGM3NGYxMGFjNThlY2Y4NDJkNWJmNy4uMmIwODA5ZjU5MGNmNzZhYmQ5NGUz
Y2Y4MWE0MDVlYjNiYTFhNzhjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL21vemlsbGEvZWNtYV8zL1VuaWNvZGUvdWMtMDAzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS90ZXN0cy9tb3ppbGxhL2VjbWFfMy9Vbmljb2RlL3VjLTAwMy5qcwpAQCAtMzAsNyAr
MzAsNiBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIHZhciBcdTAwNDEgPSA1OwogICAgIHZhciBB
XHUwM0IyID0gMTU7Ci0gICAgdmFyIGNcdTAwNjFzZSA9IDI1OwogCiAgICAgcHJpbnRTdGF0dXMg
KCJFc2NhcGVzIGluIGlkZW50aWZpZXJzIHRlc3QuIik7CiAgICAgcHJpbnRCdWdOdW1iZXIgKDIz
NjA4KTsKQEAgLTQ0LDEwICs0Myw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAg
ICAgICJFc2NhcGVkIG5vbi1BU0NJSSBJZGVudGlmaWVyIHRlc3QiKTsKICAgICByZXBvcnRDb21w
YXJlICgxNiwgZXZhbCgiKytBXHUwM0IyIiksCiAgICAgICAgICAgICAgICAgICAgIkVzY2FwZWQg
bm9uLUFTQ0lJIElkZW50aWZpZXIgdGVzdCIpOwotICAgIHJlcG9ydENvbXBhcmUgKDI1LCBldmFs
KCJjXFx1MDAiICsgIjYxc2UiKSwKLSAgICAgICAgICAgICAgICAgICAiRXNjYXBlZCBrZXl3b3Jk
IElkZW50aWZpZXIgdGVzdCIpOwotICAgIHJlcG9ydENvbXBhcmUgKDI2LCBldmFsKCIrK2NcXHUw
MCIgKyAiNjFzZSIpLAotICAgICAgICAgICAgICAgICAgICJFc2NhcGVkIGtleXdvcmQgSWRlbnRp
ZmllciB0ZXN0Iik7CiAgICAgCiAgICAgZXhpdEZ1bmMgKCJ0ZXN0Iik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jlc2VydmVkLXdvcmQtd2l0aC1l
c2NhcGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jlc2VydmVkLXdv
cmQtd2l0aC1lc2NhcGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEwYTc1ZjVjY2RmY2UwMDE1OGY1MDJiYjhl
NWE5MzZkOGJmOWI5NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvcmVzZXJ2ZWQtd29yZC13aXRoLWVzY2FwZS5qcwpAQCAtMCwwICsxLDE0MSBA
QAorZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKKyAgICB0cnkgeworICAgICAgICBldmFs
KHNjcmlwdCk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgaWYgKGVycm9yIGluc3Rh
bmNlb2YgU3ludGF4RXJyb3IpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJv
cjogIiArIFN0cmluZyhlcnJvcikpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdFN5bnRheEVy
cm9yKHNjcmlwdCwgbWVzc2FnZSkgeworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsK
KyAgICAgICAgZXZhbChzY3JpcHQpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3Ig
PSBlOworICAgIH0KKyAgICBpZiAoIWVycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIHN5bnRheCBlcnJvciBub3QgdGhyb3duIik7CisKKyAgICBpZiAoU3RyaW5nKGVycm9y
KSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBT
dHJpbmcoZXJyb3IpKTsKK30KKwordGVzdFN5bnRheCgidmFyIGNvY29hIik7Cit0ZXN0U3ludGF4
KCJ2YXIgY1x1MDA2ZmNvYSIpOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIgdmFy
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBh
cyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIgdlx1
MDA2MXJgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2
XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5y
YXdgdmFyIHZcdXswMDYxfXJgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRo
ZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CisKK3Rlc3RTeW50
YXhFcnJvcihTdHJpbmcucmF3YHZhciB2YXIgPSAyMDAwMDAwO2AsIFN0cmluZy5yYXdgU3ludGF4
RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBuYW1lLmAp
OwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHZcdTAwNjFyID0gMjAwMDAwMDtgLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicg
YXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHZc
dXswMDYxfXIgPSAyMDAwMDAwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0
aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOworCit0ZXN0U3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIge3Zhcn0gPSBvYmopYCwgU3RyaW5nLnJhd2BTeW50YXhF
cnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtl
eXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIge3ZcdTAwNjFy
fSA9IG9iamAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQg
ZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgdmFyIHt2XHV7MDA2MX1yfSA9IG9iamAsIFN0cmluZy5yYXdgU3ludGF4
RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBr
ZXl3b3JkICd2YXInLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIge3Zhcjp2
YXJ9ID0gb2JqKWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdv
cmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5y
YXdgdmFyIHt2YXI6dlx1MDA2MXJ9ID0gb2JqYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rl
c3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciB7dmFyOnZcdXswMDYxfXJ9ID0gb2JqYCwgU3Ry
aW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicg
YXMgYSB2YXJpYWJsZSBuYW1lLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIg
W3Zhcl0gPSBvYmpgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3
b3JkICd2YXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcu
cmF3YHZhciBbdlx1MDA2MXJdID0gb2JqYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90
IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YHZhciBbdlx1ezAwNjF9cl0gPSBvYmpgLCBTdHJpbmcucmF3
YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZh
cmlhYmxlIG5hbWUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YFt2YXJdID0gb2Jq
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd2YXInYCk7Cit0
ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2Bbdlx1MDA2MXJdID0gb2JqYCwgU3RyaW5nLnJhd2BT
eW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd2XHUwMDYxcidgKTsKK3Rlc3RTeW50YXhF
cnJvcihTdHJpbmcucmF3YFt2XHV7MDA2MX1yXSA9IG9iamAsIFN0cmluZy5yYXdgU3ludGF4RXJy
b3I6IFVuZXhwZWN0ZWQga2V5d29yZCAndlx1ezAwNjF9cidgKTsKKwordGVzdFN5bnRheEVycm9y
KFN0cmluZy5yYXdgZnVuY3Rpb24gdmFyKCkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIGZ1bmN0aW9uIG5hbWUuYCk7Cit0ZXN0
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiB2XHUwMDYxcigpIHsgfWAsIFN0cmluZy5y
YXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIGZ1
bmN0aW9uIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiB2XHV7
MDA2MX1yKCkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5
d29yZCAndlx1ezAwNjF9cicgYXMgYSBmdW5jdGlvbiBuYW1lLmApOworCit0ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2BmdW5jdGlvbiBhKHZhcikgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0
ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiBhKHZcdTAwNjFyKSB7IH1gLCBTdHJp
bmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMg
YSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24g
YSh2XHV7MDA2MX1yKSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRo
ZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CisKK3Rlc3RTeW50
YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoe3Zhcn0pIHsgfWAsIFN0cmluZy5yYXdgU3lu
dGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZv
ciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24g
YSh7dlx1MDA2MXJ9KSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFi
YnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rl
c3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoe3ZcdXswMDYxfXJ9KSB7IH1gLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0
aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKKwordGVzdFN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgZnVuY3Rpb24gYSh7dmFyOnZhcn0pIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6
IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVz
dFN5bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gYSh7dmFyOnZcdTAwNjFyfSkgeyB9YCwg
U3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXIn
IGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0
aW9uIGEoe3Zhcjp2XHV7MDA2MX1yfSkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwor
Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiBhKFt2YXJdKSB7IH1gLCBTdHJp
bmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFy
aWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoW3Zc
dTAwNjFyXSkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5
d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihT
dHJpbmcucmF3YGZ1bmN0aW9uIGEoW3ZcdXswMDYxfXJdKSB7IH1gLCBTdHJpbmcucmF3YFN5bnRh
eEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZhcmlhYmxl
IG5hbWUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiB2YXIoKSB7
IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFy
JyBhcyBhIGZ1bmN0aW9uIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVu
Y3Rpb24gdlx1MDA2MXIoKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVz
ZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgZnVuY3Rpb24gbmFtZS5gKTsKK3Rlc3RTeW50
YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiB2XHV7MDA2MX1yKCkgeyB9KWAsIFN0cmluZy5y
YXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEg
ZnVuY3Rpb24gbmFtZS5gKTsKKwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9u
IGEodmFyKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5
d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AoZnVuY3Rpb24gYSh2XHUwMDYxcikgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6
IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7
Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh2XHV7MDA2MX1yKSB7IH0p
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAw
NjF9cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJh
d2AoZnVuY3Rpb24gYSh7dmFyfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXIn
LmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoe3ZcdTAwNjFyfSkg
eyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVj
b25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9y
KFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoe3ZcdXswMDYxfXJ9KSB7IH0pYCwgU3RyaW5nLnJhd2BT
eW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXgg
Zm9yIGtleXdvcmQgJ3ZhcicuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5j
dGlvbiBhKHt2YXI6dmFyfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1
c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoe3Zhcjp2XHUwMDYxcn0pIHsgfSlgLCBTdHJpbmcu
cmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2
YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEo
e3Zhcjp2XHV7MDA2MX1yfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1
c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKKwordGVz
dFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3Zhcl0pIHsgfSlgLCBTdHJpbmcu
cmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFyaWFi
bGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt2XHUw
MDYxcl0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3
b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0
cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3ZcdXswMDYxfXJdKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50
YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJpYWJs
ZSBuYW1lLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYShbe3Zh
cn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRl
ZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4
RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYShbe3ZcdTAwNjFyfV0pIHsgfSlgLCBTdHJpbmcu
cmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5
bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChm
dW5jdGlvbiBhKFt7dlx1ezAwNjF9cn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQg
J3ZhcicuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7dmFy
OnZhcn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5
d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AoZnVuY3Rpb24gYShbe3Zhcjp2XHUwMDYxcn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50
YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUg
bmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7dmFyOnZc
dXswMDYxfXJ9XSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhl
IGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKKwordGVzdFN5bnRh
eEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW1t2YXJdXSkgeyB9KWAsIFN0cmluZy5yYXdg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBu
YW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW1t2XHUwMDYx
cl1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29y
ZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJp
bmcucmF3YChmdW5jdGlvbiBhKFtbdlx1ezAwNjF9cl1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50
YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJpYWJs
ZSBuYW1lLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhl
bGxvOiB7dmFyfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFi
YnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rl
c3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IHt2XHUwMDYxcn19
KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBk
ZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiB7dlx1ezAwNjF9cn19KSB7IH0pYCwg
U3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVj
dGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJp
bmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IHt2YXI6dmFyfX0pIHsgfSlgLCBTdHJpbmcucmF3
YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFyaWFibGUg
bmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86
IHt2YXI6dlx1MDA2MXJ9fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1
c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiB7dmFyOnZcdXswMDYxfXJ9
fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQg
J3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKKwordGVzdFN5bnRheEVycm9yKFN0
cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyBoZWxsbzogW3Zhcl19KSB7IH0pYCwgU3RyaW5nLnJhd2BT
eW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5h
bWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiBb
dlx1MDA2MXJdfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhl
IGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiBbdlx1ezAwNjF9cl19KSB7IH0pYCwg
U3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9
cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2Ao
ZnVuY3Rpb24gYSh7IDA6IHt2YXJ9IH0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBD
YW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAn
dmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3Zc
dTAwNjFyfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJl
dmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3ZcdXswMDYxfXJ9fSkgeyB9
KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25z
dHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOworCit0ZXN0U3ludGF4RXJyb3Io
U3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2YXI6dmFyfX0pIHsgfSlgLCBTdHJpbmcucmF3
YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFyaWFibGUg
bmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3Zh
cjp2XHUwMDYxcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0
aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhF
cnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3Zhcjp2XHV7MDA2MX1yfX0pIHsgfSlg
LCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2
MX1yJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3
YChmdW5jdGlvbiBhKHsgMDoge3ZhbHVlOnZhcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhF
cnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7
Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2YWx1ZTp2XHUw
MDYxcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5
d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihT
dHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3ZhbHVlOnZcdXswMDYxfXJ9fSkgeyB9KWAsIFN0
cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXIn
IGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKKwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1
bmN0aW9uIGEoeyAwOiBbdmFyXX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKK3Rlc3RTeW50
YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDogW3ZcdTAwNjFyXX0pIHsgfSlgLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicg
YXMgYSB2YXJpYWJsZSBuYW1lLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0
aW9uIGEoeyAwOiBbdlx1ezAwNjF9cl19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJpYWJsZSBuYW1lLmAp
OworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B0cnkgeyB9IGNhdGNoKHZhcikgeyB9YCwg
U3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBh
IGNhdGNoIHZhcmlhYmxlIG5hbWUuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B0cnkg
eyB9IGNhdGNoKHZcdTAwNjFyKSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3Qg
dXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSBjYXRjaCB2YXJpYWJsZSBuYW1lLmApOwor
dGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdHJ5IHsgfSBjYXRjaCh2XHV7MDA2MX1yKSB7IH1g
LCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2
MX1yJyBhcyBhIGNhdGNoIHZhcmlhYmxlIG5hbWUuYCk7CisKK3Rlc3RTeW50YXhFcnJvcihTdHJp
bmcucmF3YGNsYXNzIHZhciB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNl
IHRoZSBrZXl3b3JkICd2YXInIGFzIGEgY2xhc3MgbmFtZS5gKTsKK3Rlc3RTeW50YXhFcnJvcihT
dHJpbmcucmF3YGNsYXNzIHZcdTAwNjFyIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENh
bm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIGNsYXNzIG5hbWUuYCk7Cit0ZXN0
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BjbGFzcyB2XHV7MDA2MX1yIHsgfWAsIFN0cmluZy5yYXdg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgY2xh
c3MgbmFtZS5gKTsKKworLy8gQWxsb3dlZCBpbiBub24ta2V5d29yZCBhd2FyZSBjb250ZXh0Lgor
dGVzdFN5bnRheChTdHJpbmcucmF3YCh7IHZcdTAwNjFyOiAnQ29jb2EnIH0pYCk7Cit0ZXN0U3lu
dGF4KFN0cmluZy5yYXdgKHsgdlx1ezAwNjF9cjogJ0NvY29hJyB9KWApOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>