<?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>158460</bug_id>
          
          <creation_ts>2016-06-06 22:33:45 -0700</creation_ts>
          <short_desc>Clarify SyntaxErrors around yield and unskip tests</short_desc>
          <delta_ts>2016-08-04 07:28:51 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>caitp</cc>
    
    <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1199907</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2016-06-06 22:33:45 -0700</bug_when>
    <thetext>Clarify SyntaxErrors around yield and unskip tests.

  - Source/JavaScriptCore/tests/stress/generator-syntax.js
  - Source/JavaScriptCore/tests/stress/yield-out-of-generator.js

These tests currently fail.

They seem to expect syntax errors for &quot;yield&quot; used outside of generators, but in actuality we are allowing it and in some cases &quot;yield&quot; is treated as a variable name.

It seems the test should be clarified / cleaned up, and maybe there is a legit issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199995</commentid>
    <comment_count>1</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-06-07 03:48:55 -0700</bug_when>
    <thetext>Incorrect tests:

In Source/JavaScriptCore/tests/stress/generator-syntax.js

```
testSyntaxError(`
var value = () =&gt; {
    yield
}
`, `SyntaxError: Unexpected keyword &apos;yield&apos;. Cannot use yield expression out of generator.`);
```

&quot;yield&quot; is always a BindingIdentifier in a ConciseBody production, not a YieldExpression (https://tc39.github.io/ecma262/#prod-ConciseBody)

```
testSyntaxError(`
var value = (val = yield) =&gt; {
}
`, `SyntaxError: Unexpected keyword &apos;yield&apos;. Cannot use yield expression out of generator.`);
```

&quot;yield&quot; in these arrow formal parameters is a BindingIdentifier, not a YieldExpression, due to the arrow function not being defined within a Generator (thus, with the [~Yield] parameterization)

```
testSyntaxError(`
function *gen() {
    function ng(val = yield) {
    }
}
`, `SyntaxError: Unexpected keyword &apos;yield&apos;. Cannot use yield expression out of generator.`);
```

Per https://tc39.github.io/ecma262/#prod-FunctionDeclaration, the &quot;yield&quot; in the formal parameters initializer is parsed with [~Yield] production, and is not a YieldExpression, totally legal.

```
testSyntaxError(`
function gen(val = yield) {
}
`, `SyntaxError: Unexpected keyword &apos;yield&apos;. Cannot use yield expression out of generator.`);
```

Again, [~Yield] production parameterization here

---

In Source/JavaScriptCore/tests/stress/yield-out-of-generator.js

Most of these tests are invalid, but many of  them are only invalid for the error reported. A lot of these should be &quot;Unexpected token `;`&quot; errors (when trying to parse the RHS of a MultiplicativeExpression, or &quot;unexpected whatever&quot; for yields that don&apos;t look like delegating yields.

The tests starting at line 97 in the file all appear valid, but the other ones need some fixups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200078</commentid>
    <comment_count>2</comment_count>
      <attachid>280712</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-06-07 09:41:46 -0700</bug_when>
    <thetext>Created attachment 280712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200081</commentid>
    <comment_count>3</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-06-07 09:44:15 -0700</bug_when>
    <thetext>Starter patch --- I have some other work to do today, but someone is welcome to take it over if they&apos;re interested.

I did a quick Octane run to see how bad the changes affected them, results are sort of inconclusive:

```
Benchmark report for Octane on EchoBeach (MacBookPro11,5).

VMs tested:
&quot;Baseline&quot; at /Users/caitp/git/WebKit/WebKitBuild/Baseline/jsc
&quot;Fixed&quot; at /Users/caitp/git/WebKit/WebKitBuild/Release/jsc

Collected 500 samples per benchmark/VM, with 50 VM invocations per benchmark. Emitted a call to
gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used
the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark
execution times with 95% confidence intervals in milliseconds.

                            Baseline                   Fixed                                       

gbemu          x2      20.33802+-0.27565         19.96352+-0.27174         might be 1.0188x faster
closure                 0.50537+-0.00378          0.50449+-0.00395       
jquery                  6.87450+-0.04099          6.85369+-0.07138       
typescript     x2     354.38279+-8.42951    ?   359.40035+-8.18052       ? might be 1.0142x slower

&lt;geometric&gt;            23.61085+-0.26073         23.55593+-0.25368         might be 1.0023x faster
```

I don&apos;t know if I really trust any of these results to be particularly meaningful, which means there _probably_ isn&apos;t a statistically significant impact on those Octane tests.

But, obviously that&apos;s only a small subset of benchmarks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200117</commentid>
    <comment_count>4</comment_count>
      <attachid>280721</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-06-07 10:37:58 -0700</bug_when>
    <thetext>Created attachment 280721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200150</commentid>
    <comment_count>5</comment_count>
      <attachid>280721</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-06-07 11:59:05 -0700</bug_when>
    <thetext>Comment on attachment 280721
Patch

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

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

Please add information here.

&gt; Source/JavaScriptCore/parser/Parser.cpp:2030
&gt; +
&gt; +        if (upperScopeIsGenerator)
&gt; +            functionScope-&gt;setMasqueradeArrowFunctionAsGenerator();
&gt; +
&gt;          parseFunctionParameters(syntaxChecker, mode, functionInfo);
&gt;          propagateError();
&gt;  
&gt; +        if (upperScopeIsGenerator)
&gt; +            functionScope-&gt;unsetMasqueradeArrowFunctionAsGenerator();
&gt; +

Is this really needed?
If so, it seems potentially incorrect because it parseFunctionParameters can be called recursively. Maybe it should be an RAII using SetForScope or something.

&gt; Source/JavaScriptCore/parser/Parser.cpp:3171
&gt; +    failIfFalse(currentScope()-&gt;isGenerator() &amp;&amp; !currentScope()-&gt;isArrowFunctionBoundary(), &quot;Cannot use yield expression out of generator&quot;);

I&apos;m confused about what this is solving.
Can you elaborate on the type of program?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1200164</commentid>
    <comment_count>6</comment_count>
      <attachid>280721</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-06-07 12:39:28 -0700</bug_when>
    <thetext>Comment on attachment 280721
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2030
&gt;&gt; +
&gt; 
&gt; Is this really needed?
&gt; If so, it seems potentially incorrect because it parseFunctionParameters can be called recursively. Maybe it should be an RAII using SetForScope or something.

Could be --- Like I said earlier, I think someone else should take over this patch, since I have a full plate of stuff to do this week. The test changes should be good, the parser changes that are needed for it are up to you guys. Or I can get back to this one later on when I have some time.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:3171
&gt;&gt; +    failIfFalse(currentScope()-&gt;isGenerator() &amp;&amp; !currentScope()-&gt;isArrowFunctionBoundary(), &quot;Cannot use yield expression out of generator&quot;);
&gt; 
&gt; I&apos;m confused about what this is solving.
&gt; Can you elaborate on the type of program?

As an example,

```
var yield = 1;
function* upperGenerator()
{
    var f = (index = yield) =&gt; index;
    yield f();
}

[...upperGenerator()];
```

In WebKit trunk, this code would print produce `[1]`.
however, per spec, ArrowFormalParameters inside of a generator body, are parsed with the [Yield] parameterization (https://tc39.github.io/ecma262/#prod-ArrowFormalParameters), so some extra logic is needed to report an error.

The FunctionParsePhase can&apos;t be relied on here as it&apos;s set to `Body` when parsing arrow formals for the last time (of course this could be changed, but this error message seems more &quot;correct&quot;, doesn&apos;t matter a whole lot to me though) --- so instead you rely on this extra test, where the two of them are only ever set together for arrow function within a generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216829</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-03 00:22:55 -0700</bug_when>
    <thetext>Caitlin, do you think you can rebase this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216899</commentid>
    <comment_count>8</comment_count>
      <attachid>285223</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-08-03 06:11:32 -0700</bug_when>
    <thetext>Created attachment 285223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216903</commentid>
    <comment_count>9</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-08-03 06:33:11 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created attachment 285223 [details]
&gt; Patch

I&apos;ve rebased, and am in the process of implementing the suggestion from c5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1216906</commentid>
    <comment_count>10</comment_count>
      <attachid>285226</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-08-03 07:06:57 -0700</bug_when>
    <thetext>Created attachment 285226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217151</commentid>
    <comment_count>11</comment_count>
      <attachid>285226</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-03 13:53:33 -0700</bug_when>
    <thetext>Comment on attachment 285226
Patch

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

LGTM, just a few comments.

&gt; Source/JavaScriptCore/parser/Parser.cpp:2038
&gt; +            Scope::MaybeParseAsGeneratorForScope parseAsGenerator(functionScope, upperScopeIsGenerator);

Nit: I actually think this would be easier to read if you just used SetForScope directly here.

&gt; Source/JavaScriptCore/parser/Parser.cpp:3187
&gt; +    failIfFalse(currentScope()-&gt;isGenerator() &amp;&amp; !currentScope()-&gt;isArrowFunctionBoundary(), &quot;Cannot use yield expression out of generator&quot;);

Why does Scope::setIsArrowFunction() not set m_isGenerator to false?
Is there a reason for this I&apos;m not seeing? If so, would that allow us to remove the SetForScope above?

&gt; Source/JavaScriptCore/parser/Parser.h:670
&gt; +    class MaybeParseAsGeneratorForScope;

Style: We tend to predeclare classes at the top of the file.

&gt; JSTests/stress/generator-syntax.js:57
&gt; +// Confusingly, FormalParameters[~Yield] does not product a SyntaxError for &quot;yield&quot;, even
&gt; +// inside of a generator (https://tc39.github.io/ecma262/#prod-FunctionDeclaration)

This is quite confusing indeed!
What does this even do? Resolve a variable named &quot;yield&quot;?
Maybe you can add a test that does that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217173</commentid>
    <comment_count>12</comment_count>
      <attachid>285226</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-08-03 14:08:44 -0700</bug_when>
    <thetext>Comment on attachment 285226
Patch

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

I&apos;ll try to get the next patch up in a few minutes.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2038
&gt;&gt; +            Scope::MaybeParseAsGeneratorForScope parseAsGenerator(functionScope, upperScopeIsGenerator);
&gt; 
&gt; Nit: I actually think this would be easier to read if you just used SetForScope directly here.

The caveat is making Scope fields public, or friending Parser&lt;T&gt;. Fine with me, but not always the preferred approach.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:3187
&gt;&gt; +    failIfFalse(currentScope()-&gt;isGenerator() &amp;&amp; !currentScope()-&gt;isArrowFunctionBoundary(), &quot;Cannot use yield expression out of generator&quot;);
&gt; 
&gt; Why does Scope::setIsArrowFunction() not set m_isGenerator to false?
&gt; Is there a reason for this I&apos;m not seeing? If so, would that allow us to remove the SetForScope above?

So here&apos;s the thing:

You parse arrow functions in two passes --- first you parse the arrow head, and after seeing =&gt;, add a second pass as a proper arrow function.

In pass #1, YieldExpressions are legal in the spec, until you see the =&gt; and discover you&apos;re actually parsing formal parameters.

Previously, pass #2 would reparse the &quot;yield&quot; as a BindingIdentifier, which in the context of an arrow closure within a generator function, is invalid and should report a SyntaxError.

So, the change essentially parses the arrow function formal parameters with the [+Yield] parameterization (it is a parameterized production in the spec https://tc39.github.io/ecma262/#prod-ArrowFormalParameters), so that we are able to report the error if needed.

After the formal parameters, you go back to parsing as a non-generator, and &quot;yield&quot; within the ConciseBody refers to the BindingIdentifier &quot;yield&quot;, thus we can&apos;t just propagate the &quot;m_isGenerator&quot; state inside arrow functions, it would propagate too much.

I hope that explains my reasoning for this approach

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:670
&gt;&gt; +    class MaybeParseAsGeneratorForScope;
&gt; 
&gt; Style: We tend to predeclare classes at the top of the file.

I&apos;m not sure it&apos;s possible to do that for nested classes in C++, is it? I admit I don&apos;t think I&apos;ve ever tried.

&gt;&gt; JSTests/stress/generator-syntax.js:57
&gt;&gt; +// inside of a generator (https://tc39.github.io/ecma262/#prod-FunctionDeclaration)
&gt; 
&gt; This is quite confusing indeed!
&gt; What does this even do? Resolve a variable named &quot;yield&quot;?
&gt; Maybe you can add a test that does that?

a non syntax checking test, I presume? sure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217188</commentid>
    <comment_count>13</comment_count>
      <attachid>285226</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-03 14:20:06 -0700</bug_when>
    <thetext>Comment on attachment 285226
Patch

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

:

&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2038
&gt;&gt;&gt; +            Scope::MaybeParseAsGeneratorForScope parseAsGenerator(functionScope, upperScopeIsGenerator);
&gt;&gt; 
&gt;&gt; Nit: I actually think this would be easier to read if you just used SetForScope directly here.
&gt; 
&gt; The caveat is making Scope fields public, or friending Parser&lt;T&gt;. Fine with me, but not always the preferred approach.

Right. I think it&apos;s OK to keep it as is.

&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:3187
&gt;&gt;&gt; +    failIfFalse(currentScope()-&gt;isGenerator() &amp;&amp; !currentScope()-&gt;isArrowFunctionBoundary(), &quot;Cannot use yield expression out of generator&quot;);
&gt;&gt; 
&gt;&gt; Why does Scope::setIsArrowFunction() not set m_isGenerator to false?
&gt;&gt; Is there a reason for this I&apos;m not seeing? If so, would that allow us to remove the SetForScope above?
&gt; 
&gt; So here&apos;s the thing:
&gt; 
&gt; You parse arrow functions in two passes --- first you parse the arrow head, and after seeing =&gt;, add a second pass as a proper arrow function.
&gt; 
&gt; In pass #1, YieldExpressions are legal in the spec, until you see the =&gt; and discover you&apos;re actually parsing formal parameters.
&gt; 
&gt; Previously, pass #2 would reparse the &quot;yield&quot; as a BindingIdentifier, which in the context of an arrow closure within a generator function, is invalid and should report a SyntaxError.
&gt; 
&gt; So, the change essentially parses the arrow function formal parameters with the [+Yield] parameterization (it is a parameterized production in the spec https://tc39.github.io/ecma262/#prod-ArrowFormalParameters), so that we are able to report the error if needed.
&gt; 
&gt; After the formal parameters, you go back to parsing as a non-generator, and &quot;yield&quot; within the ConciseBody refers to the BindingIdentifier &quot;yield&quot;, thus we can&apos;t just propagate the &quot;m_isGenerator&quot; state inside arrow functions, it would propagate too much.
&gt; 
&gt; I hope that explains my reasoning for this approach

It does. I understand the problem now. When parsing formal parameters of an arrow function inside a generator we&apos;re in a weird hybrid state.

&gt;&gt;&gt; Source/JavaScriptCore/parser/Parser.h:670
&gt;&gt;&gt; +    class MaybeParseAsGeneratorForScope;
&gt;&gt; 
&gt;&gt; Style: We tend to predeclare classes at the top of the file.
&gt; 
&gt; I&apos;m not sure it&apos;s possible to do that for nested classes in C++, is it? I admit I don&apos;t think I&apos;ve ever tried.

I see. You&apos;re defining the class in Parser.cpp. Ignore my suggestion, it&apos;s wrong.

&gt; Source/JavaScriptCore/parser/Parser.h:673
&gt; +    friend class ParseAsGeneratorForScope;

Where is this declared? Maybe this should be removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217195</commentid>
    <comment_count>14</comment_count>
      <attachid>285273</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-08-03 14:26:25 -0700</bug_when>
    <thetext>Created attachment 285273
Patch

Added a test and clarified comments around the surrounding new tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217205</commentid>
    <comment_count>15</comment_count>
      <attachid>285276</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-08-03 14:33:28 -0700</bug_when>
    <thetext>Created attachment 285276
Patch

Also delete the extra friend class in Parser.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217218</commentid>
    <comment_count>16</comment_count>
      <attachid>285276</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-03 14:44:04 -0700</bug_when>
    <thetext>Comment on attachment 285276
Patch

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

r=me
Have you also run test262 tests to check if you&apos;ve made new things pass?
You can do that by running:
./Tools/Scripts/run-jsc-stress-tests ./JSTests/test262.yaml

&gt; Source/JavaScriptCore/parser/Parser.cpp:2037
&gt; +            // Parse formal parameters with [+Yield] parameterization, if necessary

I think it&apos;s worth explaining a bit more for this comment to motivate why we need this.
For example, the example you described to me with how we parse arrow functions, and how
that conflicts with reparsing parameters when we finally realize we&apos;re parsing arrow function
parameters is worth writing here, instead of just saying we parse with the [+Yield] parameterization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217223</commentid>
    <comment_count>17</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-08-03 14:49:14 -0700</bug_when>
    <thetext>It&apos;s possible that there are new Test262 passing tests, but I&apos;m not sure how to run them, unless the habit of JSC devs is just to plug jsc into Brian Terlson&apos;s harness (which I haven&apos;t done yet).

Will expand on the comment a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217225</commentid>
    <comment_count>18</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-03 14:50:33 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; It&apos;s possible that there are new Test262 passing tests, but I&apos;m not sure how
&gt; to run them, unless the habit of JSC devs is just to plug jsc into Brian
&gt; Terlson&apos;s harness (which I haven&apos;t done yet).
&gt; 
&gt; Will expand on the comment a bit.

We have a version of test262 checked into webkit.
You can run it using:
./Tools/Scripts/run-jsc-stress-tests ./JSTests/test262.yaml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217235</commentid>
    <comment_count>19</comment_count>
      <attachid>285280</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-08-03 15:06:11 -0700</bug_when>
    <thetext>Created attachment 285280
Patch

Add to comment in Parser.cpp, and update test262 expectations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217301</commentid>
    <comment_count>20</comment_count>
      <attachid>285280</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-03 19:37:49 -0700</bug_when>
    <thetext>Comment on attachment 285280
Patch

Clearing flags on attachment: 285280

Committed r204111: &lt;http://trac.webkit.org/changeset/204111&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217302</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-03 19:37:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217350</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-08-04 02:31:51 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; Comment on attachment 285280 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 285280
&gt; 
&gt; Committed r204111: &lt;http://trac.webkit.org/changeset/204111&gt;

stress/generator-syntax.js fails on all bots, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217371</commentid>
    <comment_count>23</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-08-04 05:54:47 -0700</bug_when>
    <thetext>Strange that the file passes locally. Can you roll out the patchset? I&apos;ll send a fix later today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217391</commentid>
    <comment_count>24</comment_count>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2016-08-04 07:28:51 -0700</bug_when>
    <thetext>I was mistaken, they were not passing locally. I guess I changed them after verifying and figured it wouldn&apos;t break.

Test fixes are at https://bugs.webkit.org/show_bug.cgi?id=160550</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280712</attachid>
            <date>2016-06-07 09:41:46 -0700</date>
            <delta_ts>2016-06-07 10:37:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158460-20160607124322.patch</filename>
            <type>text/plain</type>
            <size>8598</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNzQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OTIyZWJlNWZlNmExNmM3NmQ0NjE5N2JkMDIwNWVmYmJlMjhiMjlhLi5iZWNkZjNkYzNkMDc1NDdl
NjNjNmQ4ZjU5YTRhMTIzOGI4ZTY0NWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNi0wNi0wNyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIENsYXJpZnkgU3ludGF4RXJyb3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lw
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTg0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZ
aWVsZEV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGU6OnNldE1hc3F1ZXJhZGVBcnJvd0Z1bmN0aW9uQXNHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpTY29wZTo6dW5zZXRNYXNxdWVyYWRlQXJyb3dGdW5jdGlvbkFzR2VuZXJhdG9yKToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qczoKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MveWllbGQtb3V0LW9mLWdlbmVyYXRvci5qczoKKwogMjAxNi0wNi0wNiAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0eXBvIGlu
IHRlc3QgbmFtZSB0cmFpbGluZy1jb21tYS1pbi1mdW5jdGlvbi1wYXJhbXRlcnMuanMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAxZGI0MzE1ZDUzYmYwZDFlZDJh
MWIxZDMzNGUzM2E0OTkyNzVkNDhhLi4wZTYzMWY3N2U2MWVhNDk4ZGE0MDY3ZTE1MTNjNGE0ZjQ2
NDJhNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMDE4
LDkgKzIwMTgsMTYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKIAogICAgICAgICBpZiAobG9h
ZENhY2hlZEZ1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBp
ZiAodXBwZXJTY29wZUlzR2VuZXJhdG9yKQorICAgICAgICAgICAgZnVuY3Rpb25TY29wZS0+c2V0
TWFzcXVlcmFkZUFycm93RnVuY3Rpb25Bc0dlbmVyYXRvcigpOworCiAgICAgICAgIHBhcnNlRnVu
Y3Rpb25QYXJhbWV0ZXJzKHN5bnRheENoZWNrZXIsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7CiAgICAg
ICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAKKyAgICAgICAgaWYgKHVwcGVyU2NvcGVJc0dlbmVyYXRv
cikKKyAgICAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnVuc2V0TWFzcXVlcmFkZUFycm93RnVuY3Rp
b25Bc0dlbmVyYXRvcigpOworCiAgICAgICAgIG1hdGNoT3JGYWlsKEFSUk9XRlVOQ1RJT04sICJF
eHBlY3RlZCBhICc9PicgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24gcGFyYW1ldGVyIGRlY2xhcmF0aW9u
Iik7CiAKICAgICAgICAgaWYgKG1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCkpCkBAIC0zMTYxLDcg
KzMxNjgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzcwogICAgIC8vICAgICB5aWVsZCBbbm8g
TGluZVRlcm1pbmF0b3IgaGVyZV0gKiBBc3NpZ25tZW50RXhwcmVzc2lvbls/SW4sIFlpZWxkXQog
CiAgICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
Z2VuZXJhdG9yLWZ1bmN0aW9uLWRlZmluaXRpb25zCi0gICAgZmFpbElmRmFsc2UoY3VycmVudFNj
b3BlKCktPmlzR2VuZXJhdG9yKCksICJDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9m
IGdlbmVyYXRvciIpOworICAgIGZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0dlbmVyYXRv
cigpICYmICFjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uQm91bmRhcnkoKSwgIkNhbm5v
dCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yIik7CiAKICAgICAvLyBodHRw
Oi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0b3ItZnVu
Y3Rpb24tZGVmaW5pdGlvbnMtc3RhdGljLXNlbWFudGljcy1lYXJseS1lcnJvcnMKICAgICBmYWls
SWZUcnVlKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNlID09IEZ1bmN0aW9uUGFyc2VQ
aGFzZTo6UGFyYW1ldGVycywgIkNhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiB3aXRoaW4gcGFy
YW1ldGVycyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggOWMxMTM3
ZWM0YjAwYzg2Y2MzNTUxN2Y1NDhhNjY1NGJiMzkwM2RmYS4uNzAzNGQxMjUzMDZmMWViMzUwZTFh
NmEyZjM3NDYwNmE3Zjg2Y2IzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC02ODgsNiArNjg4LDE5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRlc3RTZXQuYWRkKGlu
Zm8tPnVzZWRWYXJpYWJsZXMoKVtpXSk7CiAgICAgfQogCisgICAgLy8gVXNlZCB0byBwcm9kdWNl
IGNvcnJlY3QgZXJyb3IgbWVzc2FnZSB3aGVuIHBhcnNpbmcgQXJyb3cgZm9ybWFsIHBhcmFtZXRl
cnMKKyAgICB2b2lkIHNldE1hc3F1ZXJhZGVBcnJvd0Z1bmN0aW9uQXNHZW5lcmF0b3IoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGlzQXJyb3dGdW5jdGlvbkJvdW5kYXJ5KCkpOworICAgICAgICBt
X2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHVuc2V0TWFzcXVlcmFkZUFy
cm93RnVuY3Rpb25Bc0dlbmVyYXRvcigpCisgICAgeworICAgICAgICBBU1NFUlQoaXNBcnJvd0Z1
bmN0aW9uQm91bmRhcnkoKSk7CisgICAgICAgIG1faXNHZW5lcmF0b3IgPSBmYWxzZTsKKyAgICB9
CisKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJc0Z1bmN0aW9uKCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMK
aW5kZXggZjM5Nzk1OWU4OWE2MmFjZWZkYTM4YjdhZWEyM2Y5NjNmOWFjMGQ4Mi4uNzZkYjcwM2I3
NDM0NTJmN2JhZmQ1YTlkZTJhOWYzODdlZTdlMmZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qcwpAQCAtMSw0ICsx
LDMgQEAKLS8vQCBza2lwCiBmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgewogICAgIHRyeSB7
CiAgICAgICAgIGV2YWwoc2NyaXB0KTsKQEAgLTQxLDM4ICs0MCw0MSBAQCB0ZXN0U3ludGF4RXJy
b3IoYAogZnVuY3Rpb24gKiogZ2VuKCkgeyB9CiBgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJyonYCk7CiAKLS8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zLXN0YXRpYy1zZW1hbnRpY3MtZWFy
bHktZXJyb3JzCi10ZXN0U3ludGF4RXJyb3IoYAorLy8gInlpZWxkIiBpcyBuZXZlciBhIFlpZWxk
RXhwcmVzc2lvbiBpbiBhIENvbmNpc2VCb2R5IChwZXIgaHR0cDovL2VjbWEtaW50ZXJuYXRpb25h
bC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtYXJyb3ctZnVuY3Rpb24tZGVmaW5pdGlvbnMKKy8vIGFu
ZCBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Byb2QtQ29uY2lzZUJvZHkpCit0ZXN0
U3ludGF4KGAKIHZhciB2YWx1ZSA9ICgpID0+IHsKICAgICB5aWVsZAogfQotYCwgYFN5bnRheEVy
cm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNz
aW9uIG91dCBvZiBnZW5lcmF0b3IuYCk7CitgKTsKIAotdGVzdFN5bnRheEVycm9yKGAKK3Rlc3RT
eW50YXgoYAogdmFyIHZhbHVlID0gKHZhbCA9IHlpZWxkKSA9PiB7CiB9Ci1gLCBgU3ludGF4RXJy
b3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Np
b24gb3V0IG9mIGdlbmVyYXRvci5gKTsKK2ApOwogCi10ZXN0U3ludGF4RXJyb3IoYAorLy8gQ29u
ZnVzaW5nbHksIEZvcm1hbFBhcmFtZXRlcnNbfllpZWxkXSBkb2VzIG5vdCBwcm9kdWN0IGEgU3lu
dGF4RXJyb3IgZm9yICJ5aWVsZCIsIGV2ZW4KKy8vIGluc2lkZSBvZiBhIGdlbmVyYXRvciAoaHR0
cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNwcm9kLUZ1bmN0aW9uRGVjbGFyYXRpb24pCit0
ZXN0U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgZnVuY3Rpb24gbmcodmFsID0geWll
bGQpIHsKICAgICB9CiB9Ci1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWll
bGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci5gKTsKK2Ap
OwogCiB0ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gKmdlbigpIHsKICAgICB2YXIgbmcgPSAo
dmFsID0geWllbGQpID0+IHsKICAgICB9CiB9Ci1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uLmApOwor
YCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5
aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuYCk7CiAKLS8vIGh0dHA6Ly9lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdlbmVyYXRvci1mdW5jdGlvbi1kZWZp
bml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5LWVycm9ycwotdGVzdFN5bnRheEVycm9yKGAK
K3Rlc3RTeW50YXgoYAogZnVuY3Rpb24gZ2VuKHZhbCA9IHlpZWxkKSB7CiB9Ci1gLCBgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJl
c3Npb24gb3V0IG9mIGdlbmVyYXRvci5gKTsKK2ApOwogCisvLyBodHRwOi8vZWNtYS1pbnRlcm5h
dGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24tZGVmaW5pdGlv
bnMtc3RhdGljLXNlbWFudGljcy1lYXJseS1lcnJvcnMKIHRlc3RTeW50YXhFcnJvcihgCiBmdW5j
dGlvbiAqZ2VuKHZhbCA9IHlpZWxkKSB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3lpZWxkLW91dC1vZi1nZW5lcmF0b3IuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3lpZWxkLW91dC1vZi1nZW5lcmF0b3IuanMKaW5kZXgg
NjZmYzRlZTI4MjBmNWQwNGU5NjZjMmU2ZjljYzNlOGJkNTcyZWFmZi4uNjQyMDBjNzQ3MzA3YjMw
ODg1YWExNGQyYjM2NjFiYWY4NTg0ZDYyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy95aWVsZC1vdXQtb2YtZ2VuZXJhdG9yLmpzCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MveWllbGQtb3V0LW9mLWdlbmVyYXRvci5qcwpAQCAt
MSw0ICsxLDMgQEAKLS8vQCBza2lwCiBmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgewogICAg
IHRyeSB7CiAgICAgICAgIGV2YWwoc2NyaXB0KTsKQEAgLTIyLDUzICsyMSw1MyBAQCBmdW5jdGlv
biB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7CiAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7CiB9CiAKLXRlc3RTeW50YXhFcnJv
cihgCit0ZXN0U3ludGF4KGAKIHlpZWxkOwotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtl
eXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0
b3IuIik7CitgKTsKIAogdGVzdFN5bnRheEVycm9yKGAKIHlpZWxkKjsKLWAsICJTeW50YXhFcnJv
cjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lv
biBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2Vu
ICc7JyIpOwogCiB0ZXN0U3ludGF4RXJyb3IoYAogeWllbGQgMDsKLWAsICJTeW50YXhFcnJvcjog
VW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBv
dXQgb2YgZ2VuZXJhdG9yLiIpOworYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIG51bWJlciAn
MCciKTsKIAotdGVzdFN5bnRheEVycm9yKGAKK3Rlc3RTeW50YXgoYAogeWllbGQqIDA7Ci1gLCAi
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxk
IGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2ApOwogCi10ZXN0U3ludGF4RXJyb3Io
YAordGVzdFN5bnRheChgCiBmdW5jdGlvbiBoZWxsbygpIHsKICAgICB5aWVsZDsKIH0KLWAsICJT
eW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQg
ZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCk7CiAKIHRlc3RTeW50YXhFcnJvcihg
CiBmdW5jdGlvbiBoZWxsbygpIHsKICAgICB5aWVsZCo7CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0
IG9mIGdlbmVyYXRvci4iKTsKK2AsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnOyci
KTsKIAogdGVzdFN5bnRheEVycm9yKGAKIGZ1bmN0aW9uIGhlbGxvKCkgewogICAgIHlpZWxkIDA7
CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3Qg
dXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2AsICJTeW50YXhFcnJv
cjogVW5leHBlY3RlZCBudW1iZXIgJzAnIik7CiAKLXRlc3RTeW50YXhFcnJvcihgCit0ZXN0U3lu
dGF4KGAKIGZ1bmN0aW9uIGhlbGxvKCkgewogICAgIHlpZWxkKiAwOwogfQotYCwgIlN5bnRheEVy
cm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNz
aW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgKTsKIAotdGVzdFN5bnRheEVycm9yKGAKK3Rlc3RT
eW50YXgoYAogZnVuY3Rpb24gKmdlbigpIHsKICAgICBmdW5jdGlvbiBoZWxsbygpIHsKICAgICAg
ICAgeWllbGQ7CiAgICAgfQogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQg
J3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7
CitgKTsKIAogdGVzdFN5bnRheEVycm9yKGAKIGZ1bmN0aW9uICpnZW4oKSB7CkBAIC03Niw3ICs3
NSw3IEBAIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgICAgIHlpZWxkKjsKICAgICB9CiB9Ci1gLCAi
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxk
IGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2AsICJTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnOyciKTsKIAogdGVzdFN5bnRheEVycm9yKGAKIGZ1bmN0aW9uICpnZW4oKSB7
CkBAIC04NCwxNSArODMsMTUgQEAgZnVuY3Rpb24gKmdlbigpIHsKICAgICAgICAgeWllbGQgMDsK
ICAgICB9CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBD
YW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2AsICJTeW50
YXhFcnJvcjogVW5leHBlY3RlZCBudW1iZXIgJzAnIik7CiAKLXRlc3RTeW50YXhFcnJvcihgCit0
ZXN0U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgZnVuY3Rpb24gaGVsbG8oKSB7CiAg
ICAgICAgIHlpZWxkKiAwOwogICAgIH0KIH0KLWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBr
ZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJh
dG9yLiIpOworYCk7CiAKIHRlc3RTeW50YXgoYAogZnVuY3Rpb24gKmdlbigpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280721</attachid>
            <date>2016-06-07 10:37:58 -0700</date>
            <delta_ts>2016-08-03 06:11:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158460-20160607133934.patch</filename>
            <type>text/plain</type>
            <size>8782</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MmM3MjY2MGQyNzkzNjkzMmE0YzdkYmE4YjJhZTdhZGU2YTg5Mzc2Li4zYTI5MGFkNjFjOWMyZDU4
Y2ZjOTY2NTRkYzAxOTNjMzgwYzk1ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNi0wNi0wNyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIENsYXJpZnkgU3ludGF4RXJyb3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lw
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTg0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZ
aWVsZEV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGU6OnNldE1hc3F1ZXJhZGVBcnJvd0Z1bmN0aW9uQXNHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpTY29wZTo6dW5zZXRNYXNxdWVyYWRlQXJyb3dGdW5jdGlvbkFzR2VuZXJhdG9yKToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qczoKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MveWllbGQtb3V0LW9mLWdlbmVyYXRvci5qczoKKwogMjAxNi0wNi0wNyAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbSlNDXSBEbyBu
b3QgYWxsb2NhdGUgdW5uZWNlc3NhcnkgVVRGLTggc3RyaW5nIGZvciBlbmNvZGVYWFggZnVuY3Rp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggMWRiNDMxNWQ1
M2JmMGQxZWQyYTFiMWQzMzRlMzNhNDk5Mjc1ZDQ4YS4uMGU2MzFmNzdlNjFlYTQ5OGRhNDA2N2Ux
NTEzYzRhNGY0NjQyYTQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cApAQCAtMjAxOCw5ICsyMDE4LDE2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9v
bCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAKICAgICAg
ICAgaWYgKGxvYWRDYWNoZWRGdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAgICAgaWYgKHVwcGVyU2NvcGVJc0dlbmVyYXRvcikKKyAgICAgICAgICAgIGZ1bmN0aW9u
U2NvcGUtPnNldE1hc3F1ZXJhZGVBcnJvd0Z1bmN0aW9uQXNHZW5lcmF0b3IoKTsKKwogICAgICAg
ICBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBtb2RlLCBmdW5jdGlvbklu
Zm8pOwogICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwogCisgICAgICAgIGlmICh1cHBlclNjb3Bl
SXNHZW5lcmF0b3IpCisgICAgICAgICAgICBmdW5jdGlvblNjb3BlLT51bnNldE1hc3F1ZXJhZGVB
cnJvd0Z1bmN0aW9uQXNHZW5lcmF0b3IoKTsKKwogICAgICAgICBtYXRjaE9yRmFpbChBUlJPV0ZV
TkNUSU9OLCAiRXhwZWN0ZWQgYSAnPT4nIGFmdGVyIGFycm93IGZ1bmN0aW9uIHBhcmFtZXRlciBk
ZWNsYXJhdGlvbiIpOwogCiAgICAgICAgIGlmIChtX2xleGVyLT5wcmV2VGVybWluYXRvcigpKQpA
QCAtMzE2MSw3ICszMTY4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3MKICAgICAvLyAgICAg
eWllbGQgW25vIExpbmVUZXJtaW5hdG9yIGhlcmVdICogQXNzaWdubWVudEV4cHJlc3Npb25bP0lu
LCBZaWVsZF0KIAogICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYy
LzYuMC8jc2VjLWdlbmVyYXRvci1mdW5jdGlvbi1kZWZpbml0aW9ucwotICAgIGZhaWxJZkZhbHNl
KGN1cnJlbnRTY29wZSgpLT5pc0dlbmVyYXRvcigpLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNz
aW9uIG91dCBvZiBnZW5lcmF0b3IiKTsKKyAgICBmYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+
aXNHZW5lcmF0b3IoKSAmJiAhY3VycmVudFNjb3BlKCktPmlzQXJyb3dGdW5jdGlvbkJvdW5kYXJ5
KCksICJDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvciIpOwogCiAg
ICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZ2Vu
ZXJhdG9yLWZ1bmN0aW9uLWRlZmluaXRpb25zLXN0YXRpYy1zZW1hbnRpY3MtZWFybHktZXJyb3Jz
CiAgICAgZmFpbElmVHJ1ZShtX3BhcnNlclN0YXRlLmZ1bmN0aW9uUGFyc2VQaGFzZSA9PSBGdW5j
dGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMsICJDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24g
d2l0aGluIHBhcmFtZXRlcnMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmlu
ZGV4IDljMTEzN2VjNGIwMGM4NmNjMzU1MTdmNTQ4YTY2NTRiYjM5MDNkZmEuLjcwMzRkMTI1MzA2
ZjFlYjM1MGUxYTZhMmYzNzQ2MDZhN2Y4NmNiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaApAQCAtNjg4LDYgKzY4OCwxOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBkZXN0
U2V0LmFkZChpbmZvLT51c2VkVmFyaWFibGVzKClbaV0pOwogICAgIH0KIAorICAgIC8vIFVzZWQg
dG8gcHJvZHVjZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2Ugd2hlbiBwYXJzaW5nIEFycm93IGZvcm1h
bCBwYXJhbWV0ZXJzCisgICAgdm9pZCBzZXRNYXNxdWVyYWRlQXJyb3dGdW5jdGlvbkFzR2VuZXJh
dG9yKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSgpKTsK
KyAgICAgICAgbV9pc0dlbmVyYXRvciA9IHRydWU7CisgICAgfQorCisgICAgdm9pZCB1bnNldE1h
c3F1ZXJhZGVBcnJvd0Z1bmN0aW9uQXNHZW5lcmF0b3IoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzQXJyb3dGdW5jdGlvbkJvdW5kYXJ5KCkpOworICAgICAgICBtX2lzR2VuZXJhdG9yID0gZmFs
c2U7CisgICAgfQorCiBwcml2YXRlOgogICAgIHZvaWQgc2V0SXNGdW5jdGlvbigpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
c3ludGF4LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9nZW5lcmF0b3It
c3ludGF4LmpzCmluZGV4IGY1ZGI5YmMyZTM5N2Y1YjM2ODE2NGRlMDBmZWI3YzZlN2IyM2ZiZGQu
Ljc2ZGI3MDNiNzQzNDUyZjdiYWZkNWE5ZGUyYTlmMzg3ZWU3ZTJmYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qcworKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMK
QEAgLTEsNiArMSwzIEBACi0vLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTU4NDYwPiBDbGFyaWZ5
IFN5bnRheEVycm9ycyBhcm91bmQgeWllbGQgYW5kIHVuc2tpcCB0ZXN0cwotLy9AIHNraXAKLQog
ZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKICAgICB0cnkgewogICAgICAgICBldmFsKHNj
cmlwdCk7CkBAIC00MywzOCArNDAsNDEgQEAgdGVzdFN5bnRheEVycm9yKGAKIGZ1bmN0aW9uICoq
IGdlbigpIHsgfQogYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcqJ2ApOwogCi0v
LyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1hcnJvdy1m
dW5jdGlvbi1kZWZpbml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5LWVycm9ycwotdGVzdFN5
bnRheEVycm9yKGAKKy8vICJ5aWVsZCIgaXMgbmV2ZXIgYSBZaWVsZEV4cHJlc3Npb24gaW4gYSBD
b25jaXNlQm9keSAocGVyIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zCisvLyBhbmQgaHR0cHM6Ly90YzM5Lmdp
dGh1Yi5pby9lY21hMjYyLyNwcm9kLUNvbmNpc2VCb2R5KQordGVzdFN5bnRheChgCiB2YXIgdmFs
dWUgPSAoKSA9PiB7CiAgICAgeWllbGQKIH0KLWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBr
ZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJh
dG9yLmApOworYCk7CiAKLXRlc3RTeW50YXhFcnJvcihgCit0ZXN0U3ludGF4KGAKIHZhciB2YWx1
ZSA9ICh2YWwgPSB5aWVsZCkgPT4gewogfQotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtl
eXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0
b3IuYCk7CitgKTsKIAotdGVzdFN5bnRheEVycm9yKGAKKy8vIENvbmZ1c2luZ2x5LCBGb3JtYWxQ
YXJhbWV0ZXJzW35ZaWVsZF0gZG9lcyBub3QgcHJvZHVjdCBhIFN5bnRheEVycm9yIGZvciAieWll
bGQiLCBldmVuCisvLyBpbnNpZGUgb2YgYSBnZW5lcmF0b3IgKGh0dHBzOi8vdGMzOS5naXRodWIu
aW8vZWNtYTI2Mi8jcHJvZC1GdW5jdGlvbkRlY2xhcmF0aW9uKQordGVzdFN5bnRheChgCiBmdW5j
dGlvbiAqZ2VuKCkgewogICAgIGZ1bmN0aW9uIG5nKHZhbCA9IHlpZWxkKSB7CiAgICAgfQogfQot
YCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5
aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuYCk7CitgKTsKIAogdGVzdFN5bnRheEVy
cm9yKGAKIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgdmFyIG5nID0gKHZhbCA9IHlpZWxkKSA9PiB7
CiAgICAgfQogfQotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVj
dGVkICc7JyBhZnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbi5gKTsKK2AsIGBTeW50YXhFcnJvcjog
VW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBv
dXQgb2YgZ2VuZXJhdG9yLmApOwogCi0vLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24tZGVmaW5pdGlvbnMtc3RhdGljLXNl
bWFudGljcy1lYXJseS1lcnJvcnMKLXRlc3RTeW50YXhFcnJvcihgCit0ZXN0U3ludGF4KGAKIGZ1
bmN0aW9uIGdlbih2YWwgPSB5aWVsZCkgewogfQotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVk
IGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5l
cmF0b3IuYCk7CitgKTsKIAorLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtZ2VuZXJhdG9yLWZ1bmN0aW9uLWRlZmluaXRpb25zLXN0YXRpYy1zZW1hbnRp
Y3MtZWFybHktZXJyb3JzCiB0ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gKmdlbih2YWwgPSB5
aWVsZCkgewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy95aWVsZC1vdXQtb2YtZ2VuZXJhdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy95aWVsZC1vdXQtb2YtZ2VuZXJhdG9yLmpzCmluZGV4IDMzNDc3MDQ1NGNjZjNmN2Ri
YzQ0NmU3YWQxODA5ODkyZTNhZmQzN2UuLjY0MjAwYzc0NzMwN2IzMDg4NWFhMTRkMmIzNjYxYmFm
ODU4NGQ2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
eWllbGQtb3V0LW9mLWdlbmVyYXRvci5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3lpZWxkLW91dC1vZi1nZW5lcmF0b3IuanMKQEAgLTEsNiArMSwzIEBACi0vLyA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTU4NDYwPiBDbGFyaWZ5IFN5bnRheEVycm9ycyBhcm91bmQg
eWllbGQgYW5kIHVuc2tpcCB0ZXN0cwotLy9AIHNraXAKLQogZnVuY3Rpb24gdGVzdFN5bnRheChz
Y3JpcHQpIHsKICAgICB0cnkgewogICAgICAgICBldmFsKHNjcmlwdCk7CkBAIC0yNCw1MyArMjEs
NTMgQEAgZnVuY3Rpb24gdGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgewogICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOwogfQogCi10
ZXN0U3ludGF4RXJyb3IoYAordGVzdFN5bnRheChgCiB5aWVsZDsKLWAsICJTeW50YXhFcnJvcjog
VW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBv
dXQgb2YgZ2VuZXJhdG9yLiIpOworYCk7CiAKIHRlc3RTeW50YXhFcnJvcihgCiB5aWVsZCo7Ci1g
LCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlp
ZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2AsICJTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCB0b2tlbiAnOyciKTsKIAogdGVzdFN5bnRheEVycm9yKGAKIHlpZWxkIDA7Ci1gLCAi
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxk
IGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2AsICJTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCBudW1iZXIgJzAnIik7CiAKLXRlc3RTeW50YXhFcnJvcihgCit0ZXN0U3ludGF4KGAKIHlp
ZWxkKiAwOwotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fu
bm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgKTsKIAotdGVz
dFN5bnRheEVycm9yKGAKK3Rlc3RTeW50YXgoYAogZnVuY3Rpb24gaGVsbG8oKSB7CiAgICAgeWll
bGQ7CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5u
b3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2ApOwogCiB0ZXN0
U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gaGVsbG8oKSB7CiAgICAgeWllbGQqOwogfQotYCwgIlN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBl
eHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0
ZWQgdG9rZW4gJzsnIik7CiAKIHRlc3RTeW50YXhFcnJvcihgCiBmdW5jdGlvbiBoZWxsbygpIHsK
ICAgICB5aWVsZCAwOwogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lp
ZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7Citg
LCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVtYmVyICcwJyIpOwogCi10ZXN0U3ludGF4RXJy
b3IoYAordGVzdFN5bnRheChgCiBmdW5jdGlvbiBoZWxsbygpIHsKICAgICB5aWVsZCogMDsKIH0K
LWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2Ug
eWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCk7CiAKLXRlc3RTeW50YXhF
cnJvcihgCit0ZXN0U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgZnVuY3Rpb24gaGVs
bG8oKSB7CiAgICAgICAgIHlpZWxkOwogICAgIH0KIH0KLWAsICJTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2Yg
Z2VuZXJhdG9yLiIpOworYCk7CiAKIHRlc3RTeW50YXhFcnJvcihgCiBmdW5jdGlvbiAqZ2VuKCkg
ewpAQCAtNzgsNyArNzUsNyBAQCBmdW5jdGlvbiAqZ2VuKCkgewogICAgICAgICB5aWVsZCo7CiAg
ICAgfQogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fu
bm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgLCAiU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJzsnIik7CiAKIHRlc3RTeW50YXhFcnJvcihgCiBmdW5j
dGlvbiAqZ2VuKCkgewpAQCAtODYsMTUgKzgzLDE1IEBAIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAg
ICAgIHlpZWxkIDA7CiAgICAgfQogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdv
cmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3Iu
Iik7CitgLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVtYmVyICcwJyIpOwogCi10ZXN0U3lu
dGF4RXJyb3IoYAordGVzdFN5bnRheChgCiBmdW5jdGlvbiAqZ2VuKCkgewogICAgIGZ1bmN0aW9u
IGhlbGxvKCkgewogICAgICAgICB5aWVsZCogMDsKICAgICB9CiB9Ci1gLCAiU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24g
b3V0IG9mIGdlbmVyYXRvci4iKTsKK2ApOwogCiB0ZXN0U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4o
KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285223</attachid>
            <date>2016-08-03 06:11:32 -0700</date>
            <delta_ts>2016-08-03 07:06:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158460-20160803091009.patch</filename>
            <type>text/plain</type>
            <size>9121</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZGY4ODA1MWFiMjI1NmE1ZTk0N2VmMzM4YmI0OTVkNWU1NjI4OTMyLi5kMTI4MDQ3MzQ0NGU4NTdm
MmM4NjJhYmYzM2Q2MWRhZjQxYjA1MzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNi0wOC0wMyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIENsYXJpZnkgU3ludGF4RXJyb3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lw
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTg0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZ
aWVsZEV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpT
Qzo6U2NvcGU6OnNldE1hc3F1ZXJhZGVBcnJvd0Z1bmN0aW9uQXNHZW5lcmF0b3IpOgorICAgICAg
ICAoSlNDOjpTY29wZTo6dW5zZXRNYXNxdWVyYWRlQXJyb3dGdW5jdGlvbkFzR2VuZXJhdG9yKToK
KwogMjAxNi0wOC0wMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbXBsZW1lbnQgbmVzdGVkIHJlc3QgZGVzdHJ1Y3R1cmluZyB3LnIudCB0aGUgRVM3IHNwZWMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCAwYzk1NWUyMzVmMTI4
ZWQ1OThlYTliMDQzY2FmNThjZmJmZTQxM2VlLi4xMzFmYTIyNjg1MjcwMmU4MTMwMTJlYWY0ZDk2
YTI3MDExMjBlNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yMDI2LDkgKzIwMjYsMTYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKIAogICAgICAgICBp
ZiAobG9hZENhY2hlZEZ1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
ICAgICBpZiAodXBwZXJTY29wZUlzR2VuZXJhdG9yKQorICAgICAgICAgICAgZnVuY3Rpb25TY29w
ZS0+c2V0TWFzcXVlcmFkZUFycm93RnVuY3Rpb25Bc0dlbmVyYXRvcigpOworCiAgICAgICAgIHBh
cnNlRnVuY3Rpb25QYXJhbWV0ZXJzKHN5bnRheENoZWNrZXIsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7
CiAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAKKyAgICAgICAgaWYgKHVwcGVyU2NvcGVJc0dl
bmVyYXRvcikKKyAgICAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnVuc2V0TWFzcXVlcmFkZUFycm93
RnVuY3Rpb25Bc0dlbmVyYXRvcigpOworCiAgICAgICAgIG1hdGNoT3JGYWlsKEFSUk9XRlVOQ1RJ
T04sICJFeHBlY3RlZCBhICc9PicgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24gcGFyYW1ldGVyIGRlY2xh
cmF0aW9uIik7CiAKICAgICAgICAgaWYgKG1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCkpCkBAIC0z
MTczLDcgKzMxODAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzcwogICAgIC8vICAgICB5aWVs
ZCBbbm8gTGluZVRlcm1pbmF0b3IgaGVyZV0gKiBBc3NpZ25tZW50RXhwcmVzc2lvbls/SW4sIFlp
ZWxkXQogCiAgICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4w
LyNzZWMtZ2VuZXJhdG9yLWZ1bmN0aW9uLWRlZmluaXRpb25zCi0gICAgZmFpbElmRmFsc2UoY3Vy
cmVudFNjb3BlKCktPmlzR2VuZXJhdG9yKCksICJDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24g
b3V0IG9mIGdlbmVyYXRvciIpOworICAgIGZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0dl
bmVyYXRvcigpICYmICFjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uQm91bmRhcnkoKSwg
IkNhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yIik7CiAKICAgICAv
LyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0
b3ItZnVuY3Rpb24tZGVmaW5pdGlvbnMtc3RhdGljLXNlbWFudGljcy1lYXJseS1lcnJvcnMKICAg
ICBmYWlsSWZUcnVlKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNlID09IEZ1bmN0aW9u
UGFyc2VQaGFzZTo6UGFyYW1ldGVycywgIkNhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiB3aXRo
aW4gcGFyYW1ldGVycyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXgg
YTAwYjgwNDFkMjY2NmE0YzI2Y2VhYzc1Y2RjZTQzOGIwYjcxNWM5YS4uMjg3MDg5ZjNlZGFiMjZj
ZjkzZTI2NzFhNDczZGExNjMzYjMwMzQ1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oCkBAIC02NjcsNiArNjY3LDE5IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGRlc3RTZXQu
YWRkKGluZm8tPnVzZWRWYXJpYWJsZXMoKVtpXSk7CiAgICAgfQogCisgICAgLy8gVXNlZCB0byBw
cm9kdWNlIGNvcnJlY3QgZXJyb3IgbWVzc2FnZSB3aGVuIHBhcnNpbmcgQXJyb3cgZm9ybWFsIHBh
cmFtZXRlcnMKKyAgICB2b2lkIHNldE1hc3F1ZXJhZGVBcnJvd0Z1bmN0aW9uQXNHZW5lcmF0b3Io
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzQXJyb3dGdW5jdGlvbkJvdW5kYXJ5KCkpOworICAg
ICAgICBtX2lzR2VuZXJhdG9yID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIHVuc2V0TWFzcXVl
cmFkZUFycm93RnVuY3Rpb25Bc0dlbmVyYXRvcigpCisgICAgeworICAgICAgICBBU1NFUlQoaXNB
cnJvd0Z1bmN0aW9uQm91bmRhcnkoKSk7CisgICAgICAgIG1faXNHZW5lcmF0b3IgPSBmYWxzZTsK
KyAgICB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRJc0Z1bmN0aW9uKCkKICAgICB7CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJjYTYw
MDY3ZmJkMzBiOTA4ZjA2MDRhYWZiNzRlN2UzMGIyNjU5MGEuLmExM2E5NjgyMzgzYzM3YjQxMTYx
ZWNmYWI0Yjk1MTRiM2VjN2Y3YWIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDgtMDMgIENhaXRsaW4g
UG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBDbGFyaWZ5IFN5bnRheEVycm9y
cyBhcm91bmQgeWllbGQgYW5kIHVuc2tpcCB0ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qczoKKyAg
ICAgICAgKiBzdHJlc3MveWllbGQtb3V0LW9mLWdlbmVyYXRvci5qczoKKwogMjAxNi0wOC0wMyAg
U2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgbmVz
dGVkIHJlc3QgZGVzdHJ1Y3R1cmluZyB3LnIudCB0aGUgRVM3IHNwZWMKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0
b3Itc3ludGF4LmpzCmluZGV4IGY1ZGI5YmMyZTM5N2Y1YjM2ODE2NGRlMDBmZWI3YzZlN2IyM2Zi
ZGQuLjc2ZGI3MDNiNzQzNDUyZjdiYWZkNWE5ZGUyYTlmMzg3ZWU3ZTJmYWEgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
Z2VuZXJhdG9yLXN5bnRheC5qcwpAQCAtMSw2ICsxLDMgQEAKLS8vIDxodHRwczovL3dlYmtpdC5v
cmcvYi8xNTg0NjA+IENsYXJpZnkgU3ludGF4RXJyb3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lw
IHRlc3RzCi0vL0Agc2tpcAotCiBmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgewogICAgIHRy
eSB7CiAgICAgICAgIGV2YWwoc2NyaXB0KTsKQEAgLTQzLDM4ICs0MCw0MSBAQCB0ZXN0U3ludGF4
RXJyb3IoYAogZnVuY3Rpb24gKiogZ2VuKCkgeyB9CiBgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0
ZWQgdG9rZW4gJyonYCk7CiAKLS8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEt
MjYyLzYuMC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zLXN0YXRpYy1zZW1hbnRpY3Mt
ZWFybHktZXJyb3JzCi10ZXN0U3ludGF4RXJyb3IoYAorLy8gInlpZWxkIiBpcyBuZXZlciBhIFlp
ZWxkRXhwcmVzc2lvbiBpbiBhIENvbmNpc2VCb2R5IChwZXIgaHR0cDovL2VjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtYXJyb3ctZnVuY3Rpb24tZGVmaW5pdGlvbnMKKy8v
IGFuZCBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Byb2QtQ29uY2lzZUJvZHkpCit0
ZXN0U3ludGF4KGAKIHZhciB2YWx1ZSA9ICgpID0+IHsKICAgICB5aWVsZAogfQotYCwgYFN5bnRh
eEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHBy
ZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuYCk7CitgKTsKIAotdGVzdFN5bnRheEVycm9yKGAKK3Rl
c3RTeW50YXgoYAogdmFyIHZhbHVlID0gKHZhbCA9IHlpZWxkKSA9PiB7CiB9Ci1gLCBgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJl
c3Npb24gb3V0IG9mIGdlbmVyYXRvci5gKTsKK2ApOwogCi10ZXN0U3ludGF4RXJyb3IoYAorLy8g
Q29uZnVzaW5nbHksIEZvcm1hbFBhcmFtZXRlcnNbfllpZWxkXSBkb2VzIG5vdCBwcm9kdWN0IGEg
U3ludGF4RXJyb3IgZm9yICJ5aWVsZCIsIGV2ZW4KKy8vIGluc2lkZSBvZiBhIGdlbmVyYXRvciAo
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNwcm9kLUZ1bmN0aW9uRGVjbGFyYXRpb24p
Cit0ZXN0U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgZnVuY3Rpb24gbmcodmFsID0g
eWllbGQpIHsKICAgICB9CiB9Ci1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAn
eWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci5gKTsK
K2ApOwogCiB0ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gKmdlbigpIHsKICAgICB2YXIgbmcg
PSAodmFsID0geWllbGQpID0+IHsKICAgICB9CiB9Ci1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0
ZWQgdG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uLmAp
OworYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVz
ZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuYCk7CiAKLS8vIGh0dHA6Ly9lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdlbmVyYXRvci1mdW5jdGlvbi1k
ZWZpbml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5LWVycm9ycwotdGVzdFN5bnRheEVycm9y
KGAKK3Rlc3RTeW50YXgoYAogZnVuY3Rpb24gZ2VuKHZhbCA9IHlpZWxkKSB7CiB9Ci1gLCBgU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4
cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci5gKTsKK2ApOwogCisvLyBodHRwOi8vZWNtYS1pbnRl
cm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24tZGVmaW5p
dGlvbnMtc3RhdGljLXNlbWFudGljcy1lYXJseS1lcnJvcnMKIHRlc3RTeW50YXhFcnJvcihgCiBm
dW5jdGlvbiAqZ2VuKHZhbCA9IHlpZWxkKSB7CiB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy95aWVsZC1vdXQtb2YtZ2VuZXJhdG9yLmpzIGIvSlNUZXN0cy9zdHJlc3MveWllbGQtb3V0LW9m
LWdlbmVyYXRvci5qcwppbmRleCAzMzQ3NzA0NTRjY2YzZjdkYmM0NDZlN2FkMTgwOTg5MmUzYWZk
MzdlLi42NDIwMGM3NDczMDdiMzA4ODVhYTE0ZDJiMzY2MWJhZjg1ODRkNjJjIDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3N0cmVzcy95aWVsZC1vdXQtb2YtZ2VuZXJhdG9yLmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3lpZWxkLW91dC1vZi1nZW5lcmF0b3IuanMKQEAgLTEsNiArMSwzIEBACi0vLyA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTU4NDYwPiBDbGFyaWZ5IFN5bnRheEVycm9ycyBhcm91bmQgeWll
bGQgYW5kIHVuc2tpcCB0ZXN0cwotLy9AIHNraXAKLQogZnVuY3Rpb24gdGVzdFN5bnRheChzY3Jp
cHQpIHsKICAgICB0cnkgewogICAgICAgICBldmFsKHNjcmlwdCk7CkBAIC0yNCw1MyArMjEsNTMg
QEAgZnVuY3Rpb24gdGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZSkgewogICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOwogfQogCi10ZXN0
U3ludGF4RXJyb3IoYAordGVzdFN5bnRheChgCiB5aWVsZDsKLWAsICJTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQg
b2YgZ2VuZXJhdG9yLiIpOworYCk7CiAKIHRlc3RTeW50YXhFcnJvcihgCiB5aWVsZCo7Ci1gLCAi
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxk
IGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2AsICJTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnOyciKTsKIAogdGVzdFN5bnRheEVycm9yKGAKIHlpZWxkIDA7Ci1gLCAiU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4
cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2AsICJTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCBudW1iZXIgJzAnIik7CiAKLXRlc3RTeW50YXhFcnJvcihgCit0ZXN0U3ludGF4KGAKIHlpZWxk
KiAwOwotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90
IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgKTsKIAotdGVzdFN5
bnRheEVycm9yKGAKK3Rlc3RTeW50YXgoYAogZnVuY3Rpb24gaGVsbG8oKSB7CiAgICAgeWllbGQ7
CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3Qg
dXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2ApOwogCiB0ZXN0U3lu
dGF4RXJyb3IoYAogZnVuY3Rpb24gaGVsbG8oKSB7CiAgICAgeWllbGQqOwogfQotYCwgIlN5bnRh
eEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHBy
ZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJzsnIik7CiAKIHRlc3RTeW50YXhFcnJvcihgCiBmdW5jdGlvbiBoZWxsbygpIHsKICAg
ICB5aWVsZCAwOwogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxk
Jy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgLCAi
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVtYmVyICcwJyIpOwogCi10ZXN0U3ludGF4RXJyb3Io
YAordGVzdFN5bnRheChgCiBmdW5jdGlvbiBoZWxsbygpIHsKICAgICB5aWVsZCogMDsKIH0KLWAs
ICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWll
bGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCk7CiAKLXRlc3RTeW50YXhFcnJv
cihgCit0ZXN0U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgZnVuY3Rpb24gaGVsbG8o
KSB7CiAgICAgICAgIHlpZWxkOwogICAgIH0KIH0KLWAsICJTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2Vu
ZXJhdG9yLiIpOworYCk7CiAKIHRlc3RTeW50YXhFcnJvcihgCiBmdW5jdGlvbiAqZ2VuKCkgewpA
QCAtNzgsNyArNzUsNyBAQCBmdW5jdGlvbiAqZ2VuKCkgewogICAgICAgICB5aWVsZCo7CiAgICAg
fQogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90
IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgLCAiU3ludGF4RXJy
b3I6IFVuZXhwZWN0ZWQgdG9rZW4gJzsnIik7CiAKIHRlc3RTeW50YXhFcnJvcihgCiBmdW5jdGlv
biAqZ2VuKCkgewpAQCAtODYsMTUgKzgzLDE1IEBAIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgICAg
IHlpZWxkIDA7CiAgICAgfQogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQg
J3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7
CitgLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVtYmVyICcwJyIpOwogCi10ZXN0U3ludGF4
RXJyb3IoYAordGVzdFN5bnRheChgCiBmdW5jdGlvbiAqZ2VuKCkgewogICAgIGZ1bmN0aW9uIGhl
bGxvKCkgewogICAgICAgICB5aWVsZCogMDsKICAgICB9CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0
IG9mIGdlbmVyYXRvci4iKTsKK2ApOwogCiB0ZXN0U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oKSB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285226</attachid>
            <date>2016-08-03 07:06:57 -0700</date>
            <delta_ts>2016-08-03 14:26:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158460-20160803100534.patch</filename>
            <type>text/plain</type>
            <size>9800</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZGY4ODA1MWFiMjI1NmE1ZTk0N2VmMzM4YmI0OTVkNWU1NjI4OTMyLi45NWZhNjcwYjMzOWUxNmIw
MTkwNDUzNzZlYzQ0Y2ZlMmQ4MzlmM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNi0wOC0wMyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIENsYXJpZnkgU3ludGF4RXJyb3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lw
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTg0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggYW5kIHVuc2tpcCB0ZXN0cyB3aGljaCBlcnJvbmVvdXNseSBhc3NlcnRlZCB0aGF0IGB5aWVs
ZGAgaXMgbm90IGEKKyAgICAgICAgdmFsaWQgQmluZGluZ0lkZW50aWZpZXIsIGFuZCBpbXByb3Zl
IGVycm9yIG1lc3NhZ2UgZm9yIFlpZWxkRXhwcmVzc2lvbnMKKyAgICAgICAgb2NjdXJpbmcgaW4g
QXJyb3cgZm9ybWFsIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NvcGU6Ok1heWJlUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlOjpNYXli
ZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVlpZWxkRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorCiAy
MDE2LTA4LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudCBuZXN0ZWQgcmVzdCBkZXN0cnVjdHVyaW5nIHcuci50IHRoZSBFUzcgc3BlYwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDBjOTU1ZTIzNWYxMjhlZDU5
OGVhOWIwNDNjYWY1OGNmYmZlNDEzZWUuLjY4MGViMTQ4NzNjNmUwODY2OTQ4ZDA2NGViMDRlYTdl
ZTk2ZmRjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI0
MCw2ICsyNDAsMTIgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZQogICAgIG5leHQoKTsKIH0KIAor
Y2xhc3MgU2NvcGU6Ok1heWJlUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlIDogcHVibGljIFNldEZv
clNjb3BlPGJvb2w+IHsKK3B1YmxpYzoKKyAgICBNYXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29w
ZShTY29wZVJlZiYgc2NvcGUsIGJvb2wgc2hvdWxkUGFyc2VBc0dlbmVyYXRvcikKKyAgICAgICAg
OiBTZXRGb3JTY29wZTxib29sPihzY29wZS0+bV9pc0dlbmVyYXRvciwgc2hvdWxkUGFyc2VBc0dl
bmVyYXRvcikgeyB9Cit9OworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogUGFyc2Vy
PExleGVyVHlwZT46On5QYXJzZXIoKQogewpAQCAtMjAyNiw4ICsyMDMyLDEzIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkCiAKICAgICAgICAgaWYgKGxvYWRDYWNoZWRGdW5jdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKHN5
bnRheENoZWNrZXIsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7Ci0gICAgICAgIHByb3BhZ2F0ZUVycm9y
KCk7CisKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUGFyc2UgZm9ybWFsIHBhcmFtZXRlcnMg
d2l0aCBbK1lpZWxkXSBwYXJhbWV0ZXJpemF0aW9uLCBpZiBuZWNlc3NhcnkKKyAgICAgICAgICAg
IFNjb3BlOjpNYXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29wZSBwYXJzZUFzR2VuZXJhdG9yKGZ1
bmN0aW9uU2NvcGUsIHVwcGVyU2NvcGVJc0dlbmVyYXRvcik7CisgICAgICAgICAgICBwYXJzZUZ1
bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBtb2RlLCBmdW5jdGlvbkluZm8pOworICAg
ICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKKyAgICAgICAgfQogCiAgICAgICAgIG1hdGNoT3JG
YWlsKEFSUk9XRlVOQ1RJT04sICJFeHBlY3RlZCBhICc9PicgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24g
cGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CiAKQEAgLTMxNzMsNyArMzE4NCw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlWWllbGRFeHByZXNzCiAgICAgLy8gICAgIHlpZWxkIFtubyBMaW5lVGVybWluYXRvciBoZXJl
XSAqIEFzc2lnbm1lbnRFeHByZXNzaW9uWz9JbiwgWWllbGRdCiAKICAgICAvLyBodHRwOi8vZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24t
ZGVmaW5pdGlvbnMKLSAgICBmYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNHZW5lcmF0b3Io
KSwgIkNhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yIik7CisgICAg
ZmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzR2VuZXJhdG9yKCkgJiYgIWN1cnJlbnRTY29w
ZSgpLT5pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSgpLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNz
aW9uIG91dCBvZiBnZW5lcmF0b3IiKTsKIAogICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdlbmVyYXRvci1mdW5jdGlvbi1kZWZpbml0aW9ucy1z
dGF0aWMtc2VtYW50aWNzLWVhcmx5LWVycm9ycwogICAgIGZhaWxJZlRydWUobV9wYXJzZXJTdGF0
ZS5mdW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAi
Q2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBhMDBiODA0MWQyNjY2YTRjMjZjZWFjNzVj
ZGNlNDM4YjBiNzE1YzlhLi5mNzFjZTdmMjcwOTMzNmQzYWY4YmE2MjY5NzM2YWZlOWEzNmI4ZDE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTY2Nyw3ICs2NjcsMTEg
QEAgcHVibGljOgogICAgICAgICAgICAgZGVzdFNldC5hZGQoaW5mby0+dXNlZFZhcmlhYmxlcygp
W2ldKTsKICAgICB9CiAKKyAgICBjbGFzcyBNYXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29wZTsK
KwogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlOwor
CiAgICAgdm9pZCBzZXRJc0Z1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIG1faXNGdW5jdGlvbiA9
IHRydWU7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGJjYTYwMDY3ZmJkMzBiOTA4ZjA2MDRhYWZiNzRlN2UzMGIyNjU5MGEuLmQ4YTJiNWU0
NWMxMGY0NzVkZjJlNTM0MTg4NTk1ZTUyMTVmMTg2MGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDgt
MDMgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBDbGFyaWZ5
IFN5bnRheEVycm9ycyBhcm91bmQgeWllbGQgYW5kIHVuc2tpcCB0ZXN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NDYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGFuZCB1bnNraXAgdGVzdHMg
d2hpY2ggZXJyb25lb3VzbHkgYXNzZXJ0ZWQgdGhhdCBgeWllbGRgIGlzIG5vdCBhCisgICAgICAg
IHZhbGlkIEJpbmRpbmdJZGVudGlmaWVyLCBhbmQgaW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciBZ
aWVsZEV4cHJlc3Npb25zCisgICAgICAgIG9jY3VyaW5nIGluIEFycm93IGZvcm1hbCBwYXJhbWV0
ZXJzLgorCisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanM6CisgICAgICAgICog
c3RyZXNzL3lpZWxkLW91dC1vZi1nZW5lcmF0b3IuanM6CisKIDIwMTYtMDgtMDMgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG5lc3RlZCByZXN0
IGRlc3RydWN0dXJpbmcgdy5yLnQgdGhlIEVTNyBzcGVjCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRh
eC5qcwppbmRleCBmNWRiOWJjMmUzOTdmNWIzNjgxNjRkZTAwZmViN2M2ZTdiMjNmYmRkLi40ODdk
N2Q5NzcxNmI2ZDU0YzNiMDEwZjQ2NzExMzRhMDU1ZTY4NDFkIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1zeW50YXguanMKQEAgLTEsNiArMSwzIEBACi0vLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTU4
NDYwPiBDbGFyaWZ5IFN5bnRheEVycm9ycyBhcm91bmQgeWllbGQgYW5kIHVuc2tpcCB0ZXN0cwot
Ly9AIHNraXAKLQogZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKICAgICB0cnkgewogICAg
ICAgICBldmFsKHNjcmlwdCk7CkBAIC00MSw0MCArMzgsNDMgQEAgY2xhc3MgSGVsbG8gewogCiB0
ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gKiogZ2VuKCkgeyB9Ci1gLCBgU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgdG9rZW4gJyonYCk7CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJyoqJ2ApOwogCi0vLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1hcnJvdy1mdW5jdGlvbi1kZWZpbml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5
LWVycm9ycwotdGVzdFN5bnRheEVycm9yKGAKKy8vICJ5aWVsZCIgaXMgbmV2ZXIgYSBZaWVsZEV4
cHJlc3Npb24gaW4gYSBDb25jaXNlQm9keSAocGVyIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zCisvLyBhbmQg
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNwcm9kLUNvbmNpc2VCb2R5KQordGVzdFN5
bnRheChgCiB2YXIgdmFsdWUgPSAoKSA9PiB7CiAgICAgeWllbGQKIH0KLWAsIGBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lv
biBvdXQgb2YgZ2VuZXJhdG9yLmApOworYCk7CiAKLXRlc3RTeW50YXhFcnJvcihgCit0ZXN0U3lu
dGF4KGAKIHZhciB2YWx1ZSA9ICh2YWwgPSB5aWVsZCkgPT4gewogfQotYCwgYFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9u
IG91dCBvZiBnZW5lcmF0b3IuYCk7CitgKTsKIAotdGVzdFN5bnRheEVycm9yKGAKKy8vIENvbmZ1
c2luZ2x5LCBGb3JtYWxQYXJhbWV0ZXJzW35ZaWVsZF0gZG9lcyBub3QgcHJvZHVjdCBhIFN5bnRh
eEVycm9yIGZvciAieWllbGQiLCBldmVuCisvLyBpbnNpZGUgb2YgYSBnZW5lcmF0b3IgKGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jcHJvZC1GdW5jdGlvbkRlY2xhcmF0aW9uKQordGVz
dFN5bnRheChgCiBmdW5jdGlvbiAqZ2VuKCkgewogICAgIGZ1bmN0aW9uIG5nKHZhbCA9IHlpZWxk
KSB7CiAgICAgfQogfQotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxk
Jy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuYCk7CitgKTsK
IAogdGVzdFN5bnRheEVycm9yKGAKIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgdmFyIG5nID0gKHZh
bCA9IHlpZWxkKSA9PiB7CiAgICAgfQogfQotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRv
a2VuICc9PicuIEV4cGVjdGVkICc7JyBhZnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbi5gKTsKK2As
IGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWll
bGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLmApOwogCi0vLyBodHRwOi8vZWNtYS1pbnRl
cm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24tZGVmaW5p
dGlvbnMtc3RhdGljLXNlbWFudGljcy1lYXJseS1lcnJvcnMKLXRlc3RTeW50YXhFcnJvcihgCit0
ZXN0U3ludGF4KGAKIGZ1bmN0aW9uIGdlbih2YWwgPSB5aWVsZCkgewogfQotYCwgYFN5bnRheEVy
cm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNz
aW9uIG91dCBvZiBnZW5lcmF0b3IuYCk7CitgKTsKIAorLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZ2VuZXJhdG9yLWZ1bmN0aW9uLWRlZmluaXRpb25z
LXN0YXRpYy1zZW1hbnRpY3MtZWFybHktZXJyb3JzCiB0ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rp
b24gKmdlbih2YWwgPSB5aWVsZCkgewogfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MveWll
bGQtb3V0LW9mLWdlbmVyYXRvci5qcyBiL0pTVGVzdHMvc3RyZXNzL3lpZWxkLW91dC1vZi1nZW5l
cmF0b3IuanMKaW5kZXggMzM0NzcwNDU0Y2NmM2Y3ZGJjNDQ2ZTdhZDE4MDk4OTJlM2FmZDM3ZS4u
NjQyMDBjNzQ3MzA3YjMwODg1YWExNGQyYjM2NjFiYWY4NTg0ZDYyYyAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9zdHJlc3MveWllbGQtb3V0LW9mLWdlbmVyYXRvci5qcworKysgYi9KU1Rlc3RzL3N0cmVz
cy95aWVsZC1vdXQtb2YtZ2VuZXJhdG9yLmpzCkBAIC0xLDYgKzEsMyBAQAotLy8gPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzE1ODQ2MD4gQ2xhcmlmeSBTeW50YXhFcnJvcnMgYXJvdW5kIHlpZWxkIGFu
ZCB1bnNraXAgdGVzdHMKLS8vQCBza2lwCi0KIGZ1bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0KSB7
CiAgICAgdHJ5IHsKICAgICAgICAgZXZhbChzY3JpcHQpOwpAQCAtMjQsNTMgKzIxLDUzIEBAIGZ1
bmN0aW9uIHRlc3RTeW50YXhFcnJvcihzY3JpcHQsIG1lc3NhZ2UpIHsKICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJpbmcoZXJyb3IpKTsKIH0KIAotdGVzdFN5bnRh
eEVycm9yKGAKK3Rlc3RTeW50YXgoYAogeWllbGQ7Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0
ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdl
bmVyYXRvci4iKTsKK2ApOwogCiB0ZXN0U3ludGF4RXJyb3IoYAogeWllbGQqOwotYCwgIlN5bnRh
eEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHBy
ZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJzsnIik7CiAKIHRlc3RTeW50YXhFcnJvcihgCiB5aWVsZCAwOwotYCwgIlN5bnRheEVy
cm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNz
aW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVt
YmVyICcwJyIpOwogCi10ZXN0U3ludGF4RXJyb3IoYAordGVzdFN5bnRheChgCiB5aWVsZCogMDsK
LWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2Ug
eWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCk7CiAKLXRlc3RTeW50YXhF
cnJvcihgCit0ZXN0U3ludGF4KGAKIGZ1bmN0aW9uIGhlbGxvKCkgewogICAgIHlpZWxkOwogfQot
YCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5
aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgKTsKIAogdGVzdFN5bnRheEVy
cm9yKGAKIGZ1bmN0aW9uIGhlbGxvKCkgewogICAgIHlpZWxkKjsKIH0KLWAsICJTeW50YXhFcnJv
cjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lv
biBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2Vu
ICc7JyIpOwogCiB0ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gaGVsbG8oKSB7CiAgICAgeWll
bGQgMDsKIH0KLWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENh
bm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCwgIlN5bnRh
eEVycm9yOiBVbmV4cGVjdGVkIG51bWJlciAnMCciKTsKIAotdGVzdFN5bnRheEVycm9yKGAKK3Rl
c3RTeW50YXgoYAogZnVuY3Rpb24gaGVsbG8oKSB7CiAgICAgeWllbGQqIDA7CiB9Ci1gLCAiU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4
cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2ApOwogCi10ZXN0U3ludGF4RXJyb3IoYAor
dGVzdFN5bnRheChgCiBmdW5jdGlvbiAqZ2VuKCkgewogICAgIGZ1bmN0aW9uIGhlbGxvKCkgewog
ICAgICAgICB5aWVsZDsKICAgICB9CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5
d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRv
ci4iKTsKK2ApOwogCiB0ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gKmdlbigpIHsKQEAgLTc4
LDcgKzc1LDcgQEAgZnVuY3Rpb24gKmdlbigpIHsKICAgICAgICAgeWllbGQqOwogICAgIH0KIH0K
LWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2Ug
eWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCwgIlN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIHRva2VuICc7JyIpOwogCiB0ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gKmdl
bigpIHsKQEAgLTg2LDE1ICs4MywxNSBAQCBmdW5jdGlvbiAqZ2VuKCkgewogICAgICAgICB5aWVs
ZCAwOwogICAgIH0KIH0KLWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVs
ZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCwg
IlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIG51bWJlciAnMCciKTsKIAotdGVzdFN5bnRheEVycm9y
KGAKK3Rlc3RTeW50YXgoYAogZnVuY3Rpb24gKmdlbigpIHsKICAgICBmdW5jdGlvbiBoZWxsbygp
IHsKICAgICAgICAgeWllbGQqIDA7CiAgICAgfQogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVj
dGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBn
ZW5lcmF0b3IuIik7CitgKTsKIAogdGVzdFN5bnRheChgCiBmdW5jdGlvbiAqZ2VuKCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285273</attachid>
            <date>2016-08-03 14:26:25 -0700</date>
            <delta_ts>2016-08-03 14:33:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158460-20160803172501.patch</filename>
            <type>text/plain</type>
            <size>10682</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZGY4ODA1MWFiMjI1NmE1ZTk0N2VmMzM4YmI0OTVkNWU1NjI4OTMyLi45NWZhNjcwYjMzOWUxNmIw
MTkwNDUzNzZlYzQ0Y2ZlMmQ4MzlmM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNi0wOC0wMyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIENsYXJpZnkgU3ludGF4RXJyb3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lw
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTg0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggYW5kIHVuc2tpcCB0ZXN0cyB3aGljaCBlcnJvbmVvdXNseSBhc3NlcnRlZCB0aGF0IGB5aWVs
ZGAgaXMgbm90IGEKKyAgICAgICAgdmFsaWQgQmluZGluZ0lkZW50aWZpZXIsIGFuZCBpbXByb3Zl
IGVycm9yIG1lc3NhZ2UgZm9yIFlpZWxkRXhwcmVzc2lvbnMKKyAgICAgICAgb2NjdXJpbmcgaW4g
QXJyb3cgZm9ybWFsIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NvcGU6Ok1heWJlUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlOjpNYXli
ZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVlpZWxkRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorCiAy
MDE2LTA4LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudCBuZXN0ZWQgcmVzdCBkZXN0cnVjdHVyaW5nIHcuci50IHRoZSBFUzcgc3BlYwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDBjOTU1ZTIzNWYxMjhlZDU5
OGVhOWIwNDNjYWY1OGNmYmZlNDEzZWUuLjY4MGViMTQ4NzNjNmUwODY2OTQ4ZDA2NGViMDRlYTdl
ZTk2ZmRjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI0
MCw2ICsyNDAsMTIgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZQogICAgIG5leHQoKTsKIH0KIAor
Y2xhc3MgU2NvcGU6Ok1heWJlUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlIDogcHVibGljIFNldEZv
clNjb3BlPGJvb2w+IHsKK3B1YmxpYzoKKyAgICBNYXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29w
ZShTY29wZVJlZiYgc2NvcGUsIGJvb2wgc2hvdWxkUGFyc2VBc0dlbmVyYXRvcikKKyAgICAgICAg
OiBTZXRGb3JTY29wZTxib29sPihzY29wZS0+bV9pc0dlbmVyYXRvciwgc2hvdWxkUGFyc2VBc0dl
bmVyYXRvcikgeyB9Cit9OworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogUGFyc2Vy
PExleGVyVHlwZT46On5QYXJzZXIoKQogewpAQCAtMjAyNiw4ICsyMDMyLDEzIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkCiAKICAgICAgICAgaWYgKGxvYWRDYWNoZWRGdW5jdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKHN5
bnRheENoZWNrZXIsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7Ci0gICAgICAgIHByb3BhZ2F0ZUVycm9y
KCk7CisKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUGFyc2UgZm9ybWFsIHBhcmFtZXRlcnMg
d2l0aCBbK1lpZWxkXSBwYXJhbWV0ZXJpemF0aW9uLCBpZiBuZWNlc3NhcnkKKyAgICAgICAgICAg
IFNjb3BlOjpNYXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29wZSBwYXJzZUFzR2VuZXJhdG9yKGZ1
bmN0aW9uU2NvcGUsIHVwcGVyU2NvcGVJc0dlbmVyYXRvcik7CisgICAgICAgICAgICBwYXJzZUZ1
bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBtb2RlLCBmdW5jdGlvbkluZm8pOworICAg
ICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKKyAgICAgICAgfQogCiAgICAgICAgIG1hdGNoT3JG
YWlsKEFSUk9XRlVOQ1RJT04sICJFeHBlY3RlZCBhICc9PicgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24g
cGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CiAKQEAgLTMxNzMsNyArMzE4NCw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlWWllbGRFeHByZXNzCiAgICAgLy8gICAgIHlpZWxkIFtubyBMaW5lVGVybWluYXRvciBoZXJl
XSAqIEFzc2lnbm1lbnRFeHByZXNzaW9uWz9JbiwgWWllbGRdCiAKICAgICAvLyBodHRwOi8vZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24t
ZGVmaW5pdGlvbnMKLSAgICBmYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNHZW5lcmF0b3Io
KSwgIkNhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yIik7CisgICAg
ZmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzR2VuZXJhdG9yKCkgJiYgIWN1cnJlbnRTY29w
ZSgpLT5pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSgpLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNz
aW9uIG91dCBvZiBnZW5lcmF0b3IiKTsKIAogICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdlbmVyYXRvci1mdW5jdGlvbi1kZWZpbml0aW9ucy1z
dGF0aWMtc2VtYW50aWNzLWVhcmx5LWVycm9ycwogICAgIGZhaWxJZlRydWUobV9wYXJzZXJTdGF0
ZS5mdW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAi
Q2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBhMDBiODA0MWQyNjY2YTRjMjZjZWFjNzVj
ZGNlNDM4YjBiNzE1YzlhLi5mNzFjZTdmMjcwOTMzNmQzYWY4YmE2MjY5NzM2YWZlOWEzNmI4ZDE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTY2Nyw3ICs2NjcsMTEg
QEAgcHVibGljOgogICAgICAgICAgICAgZGVzdFNldC5hZGQoaW5mby0+dXNlZFZhcmlhYmxlcygp
W2ldKTsKICAgICB9CiAKKyAgICBjbGFzcyBNYXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29wZTsK
KwogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlOwor
CiAgICAgdm9pZCBzZXRJc0Z1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIG1faXNGdW5jdGlvbiA9
IHRydWU7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGJjYTYwMDY3ZmJkMzBiOTA4ZjA2MDRhYWZiNzRlN2UzMGIyNjU5MGEuLmQ4YTJiNWU0
NWMxMGY0NzVkZjJlNTM0MTg4NTk1ZTUyMTVmMTg2MGQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTYtMDgt
MDMgIENhaXRsaW4gUG90dGVyICA8Y2FpdHBAaWdhbGlhLmNvbT4KKworICAgICAgICBDbGFyaWZ5
IFN5bnRheEVycm9ycyBhcm91bmQgeWllbGQgYW5kIHVuc2tpcCB0ZXN0cworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NDYwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGFuZCB1bnNraXAgdGVzdHMg
d2hpY2ggZXJyb25lb3VzbHkgYXNzZXJ0ZWQgdGhhdCBgeWllbGRgIGlzIG5vdCBhCisgICAgICAg
IHZhbGlkIEJpbmRpbmdJZGVudGlmaWVyLCBhbmQgaW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciBZ
aWVsZEV4cHJlc3Npb25zCisgICAgICAgIG9jY3VyaW5nIGluIEFycm93IGZvcm1hbCBwYXJhbWV0
ZXJzLgorCisgICAgICAgICogc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanM6CisgICAgICAgICog
c3RyZXNzL3lpZWxkLW91dC1vZi1nZW5lcmF0b3IuanM6CisKIDIwMTYtMDgtMDMgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IG5lc3RlZCByZXN0
IGRlc3RydWN0dXJpbmcgdy5yLnQgdGhlIEVTNyBzcGVjCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRh
eC5qcwppbmRleCBmNWRiOWJjMmUzOTdmNWIzNjgxNjRkZTAwZmViN2M2ZTdiMjNmYmRkLi40ZWIz
NTQwOTg3YWRjMWNhNGQ2YTIxYTRkZTNmZTcxNWUxZjBkOWU4IDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L3N0cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRv
ci1zeW50YXguanMKQEAgLTEsNiArMSwzIEBACi0vLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTU4
NDYwPiBDbGFyaWZ5IFN5bnRheEVycm9ycyBhcm91bmQgeWllbGQgYW5kIHVuc2tpcCB0ZXN0cwot
Ly9AIHNraXAKLQogZnVuY3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKICAgICB0cnkgewogICAg
ICAgICBldmFsKHNjcmlwdCk7CkBAIC00MSw0MCArMzgsNzUgQEAgY2xhc3MgSGVsbG8gewogCiB0
ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gKiogZ2VuKCkgeyB9Ci1gLCBgU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgdG9rZW4gJyonYCk7CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJyoqJ2ApOwogCi0vLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1hcnJvdy1mdW5jdGlvbi1kZWZpbml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5
LWVycm9ycwotdGVzdFN5bnRheEVycm9yKGAKKy8vICJ5aWVsZCIgaXMgbmV2ZXIgYSBZaWVsZEV4
cHJlc3Npb24gaW4gYSBDb25jaXNlQm9keSAocGVyIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwu
b3JnL2VjbWEtMjYyLzYuMC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zCisvLyBhbmQg
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNwcm9kLUNvbmNpc2VCb2R5KQordGVzdFN5
bnRheChgCiB2YXIgdmFsdWUgPSAoKSA9PiB7CiAgICAgeWllbGQKIH0KLWAsIGBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lv
biBvdXQgb2YgZ2VuZXJhdG9yLmApOworYCk7CiAKLXRlc3RTeW50YXhFcnJvcihgCit0ZXN0U3lu
dGF4KGAKIHZhciB2YWx1ZSA9ICh2YWwgPSB5aWVsZCkgPT4gewogfQotYCwgYFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9u
IG91dCBvZiBnZW5lcmF0b3IuYCk7CitgKTsKIAotdGVzdFN5bnRheEVycm9yKGAKKy8vIENvbmZ1
c2luZ2x5LCBGb3JtYWxQYXJhbWV0ZXJzW35ZaWVsZF0gZG9lcyBub3QgcHJvZHVjdCBhIFN5bnRh
eEVycm9yIGZvciAieWllbGQiLCBldmVuCisvLyBpbnNpZGUgb2YgYSBnZW5lcmF0b3IgKGh0dHBz
Oi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jcHJvZC1GdW5jdGlvbkRlY2xhcmF0aW9uKSwKKy8v
IGJ1dCBpbnN0ZWFkIHJlc29sdmVzICJ5aWVsZCIgYXMgYSBCaW5kaW5nSWRlbnRpZmllcgordGVz
dFN5bnRheChgCiBmdW5jdGlvbiAqZ2VuKCkgewogICAgIGZ1bmN0aW9uIG5nKHZhbCA9IHlpZWxk
KSB7CiAgICAgfQogfQotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxk
Jy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuYCk7CitgKTsK
IAorLy8gQXJyb3cgZm9ybWFsIHBhcmFtZXRlcnMgd2l0aGluIEdlbmVyYXRvcnMgYXJlIHBhcmFt
ZXRlcml6ZWQgd2l0aCBbK1lpZWxkXSwgYnV0IGFyZQorLy8gc3RpbGwgZm9yYmlkZGVuIGZyb20g
aW5jbHVkaW5nIFlpZWxkRXhwcmVzc2lvbnMgaW4gQXJyb3dGb3JtYWxQYXJhbWV0ZXJzLgorLy8g
KGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jcHJvZC1BcnJvd0Zvcm1hbFBhcmFtZXRl
cnMpCiB0ZXN0U3ludGF4RXJyb3IoYAordmFyIHlpZWxkOwogZnVuY3Rpb24gKmdlbigpIHsKICAg
ICB2YXIgbmcgPSAodmFsID0geWllbGQpID0+IHsKICAgICB9CiB9Ci1gLCBgU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgdG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xh
cmF0aW9uLmApOworYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4g
Q2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuYCk7CisKKyhmdW5j
dGlvbiB0ZXN0WWllbGRCaW5kaW5nSWRlbnRpZmllcigpIHsKKyAgICB2YXIgeWllbGQgPSAiaGVs
bG8hIjsKKyAgICBmdW5jdGlvbiogZ2VuKCkgeworICAgICAgICB5aWVsZCAoZnVuY3Rpb24oeCA9
IHlpZWxkKSB7IHJldHVybiB4OyB9KSgpOworICAgIH0KKyAgICBpZiAoZ2VuKCkubmV4dCgpICE9
PSAiaGVsbG8hIikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBCaW5kaW5nSWRl
bnRpZmllciBidXQgZm91bmQgWWllbGRFeHByZXNzaW9uIik7Cit9KSgpOworCit0ZXN0U3ludGF4
KGAKK2Z1bmN0aW9uKiBnZW4oKSB7CisgICAgdmFyIG5nID0gKGl0ID0gZnVuY3Rpb24qKCkgeyB5
aWVsZCAxOyB9KSA9PiB7CisgICAgICAgIHJldHVybiBpdCgpLm5leHQoKTsKKyAgICB9CisgICAg
eWllbGQgbmcoKTsKK30KK2ApOwogCi0vLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24tZGVmaW5pdGlvbnMtc3RhdGljLXNl
bWFudGljcy1lYXJseS1lcnJvcnMKIHRlc3RTeW50YXhFcnJvcihgCi1mdW5jdGlvbiBnZW4odmFs
ID0geWllbGQpIHsKK2Z1bmN0aW9uKiBnZW4oKSB7CisgICAgdmFyIG5nID0gKGl0ID0gZnVuY3Rp
b24oKSB7IHlpZWxkIDE7IH0pID0+IHsKKyAgICAgICAgcmV0dXJuIGl0KCkubmV4dCgpOworICAg
IH0KKyAgICB5aWVsZCBuZygpOwogfQogYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdv
cmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3Iu
YCk7CiAKK3Rlc3RTeW50YXgoYAorZnVuY3Rpb24gZ2VuKHZhbCA9IHlpZWxkKSB7Cit9CitgKTsK
KworLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZ2Vu
ZXJhdG9yLWZ1bmN0aW9uLWRlZmluaXRpb25zLXN0YXRpYy1zZW1hbnRpY3MtZWFybHktZXJyb3Jz
CiB0ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gKmdlbih2YWwgPSB5aWVsZCkgewogfQpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MveWllbGQtb3V0LW9mLWdlbmVyYXRvci5qcyBiL0pTVGVz
dHMvc3RyZXNzL3lpZWxkLW91dC1vZi1nZW5lcmF0b3IuanMKaW5kZXggMzM0NzcwNDU0Y2NmM2Y3
ZGJjNDQ2ZTdhZDE4MDk4OTJlM2FmZDM3ZS4uNjQyMDBjNzQ3MzA3YjMwODg1YWExNGQyYjM2NjFi
YWY4NTg0ZDYyYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MveWllbGQtb3V0LW9mLWdlbmVy
YXRvci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy95aWVsZC1vdXQtb2YtZ2VuZXJhdG9yLmpzCkBA
IC0xLDYgKzEsMyBAQAotLy8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1ODQ2MD4gQ2xhcmlmeSBT
eW50YXhFcnJvcnMgYXJvdW5kIHlpZWxkIGFuZCB1bnNraXAgdGVzdHMKLS8vQCBza2lwCi0KIGZ1
bmN0aW9uIHRlc3RTeW50YXgoc2NyaXB0KSB7CiAgICAgdHJ5IHsKICAgICAgICAgZXZhbChzY3Jp
cHQpOwpAQCAtMjQsNTMgKzIxLDUzIEBAIGZ1bmN0aW9uIHRlc3RTeW50YXhFcnJvcihzY3JpcHQs
IG1lc3NhZ2UpIHsKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgZXJyb3I6ICIgKyBTdHJp
bmcoZXJyb3IpKTsKIH0KIAotdGVzdFN5bnRheEVycm9yKGAKK3Rlc3RTeW50YXgoYAogeWllbGQ7
Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNl
IHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2ApOwogCiB0ZXN0U3ludGF4
RXJyb3IoYAogeWllbGQqOwotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lp
ZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7Citg
LCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJzsnIik7CiAKIHRlc3RTeW50YXhFcnJv
cihgCiB5aWVsZCAwOwotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxk
Jy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgLCAi
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVtYmVyICcwJyIpOwogCi10ZXN0U3ludGF4RXJyb3Io
YAordGVzdFN5bnRheChgCiB5aWVsZCogMDsKLWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBr
ZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJh
dG9yLiIpOworYCk7CiAKLXRlc3RTeW50YXhFcnJvcihgCit0ZXN0U3ludGF4KGAKIGZ1bmN0aW9u
IGhlbGxvKCkgewogICAgIHlpZWxkOwogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtl
eXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0
b3IuIik7CitgKTsKIAogdGVzdFN5bnRheEVycm9yKGAKIGZ1bmN0aW9uIGhlbGxvKCkgewogICAg
IHlpZWxkKjsKIH0KLWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcu
IENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCwgIlN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc7JyIpOwogCiB0ZXN0U3ludGF4RXJyb3IoYAog
ZnVuY3Rpb24gaGVsbG8oKSB7CiAgICAgeWllbGQgMDsKIH0KLWAsICJTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQg
b2YgZ2VuZXJhdG9yLiIpOworYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIG51bWJlciAnMCci
KTsKIAotdGVzdFN5bnRheEVycm9yKGAKK3Rlc3RTeW50YXgoYAogZnVuY3Rpb24gaGVsbG8oKSB7
CiAgICAgeWllbGQqIDA7CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAn
eWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsK
K2ApOwogCi10ZXN0U3ludGF4RXJyb3IoYAordGVzdFN5bnRheChgCiBmdW5jdGlvbiAqZ2VuKCkg
ewogICAgIGZ1bmN0aW9uIGhlbGxvKCkgewogICAgICAgICB5aWVsZDsKICAgICB9CiB9Ci1gLCAi
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxk
IGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2ApOwogCiB0ZXN0U3ludGF4RXJyb3Io
YAogZnVuY3Rpb24gKmdlbigpIHsKQEAgLTc4LDcgKzc1LDcgQEAgZnVuY3Rpb24gKmdlbigpIHsK
ICAgICAgICAgeWllbGQqOwogICAgIH0KIH0KLWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBr
ZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJh
dG9yLiIpOworYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc7JyIpOwogCiB0ZXN0
U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gKmdlbigpIHsKQEAgLTg2LDE1ICs4MywxNSBAQCBmdW5j
dGlvbiAqZ2VuKCkgewogICAgICAgICB5aWVsZCAwOwogICAgIH0KIH0KLWAsICJTeW50YXhFcnJv
cjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lv
biBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIG51bWJl
ciAnMCciKTsKIAotdGVzdFN5bnRheEVycm9yKGAKK3Rlc3RTeW50YXgoYAogZnVuY3Rpb24gKmdl
bigpIHsKICAgICBmdW5jdGlvbiBoZWxsbygpIHsKICAgICAgICAgeWllbGQqIDA7CiAgICAgfQog
fQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVz
ZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgKTsKIAogdGVzdFN5bnRh
eChgCiBmdW5jdGlvbiAqZ2VuKCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285276</attachid>
            <date>2016-08-03 14:33:28 -0700</date>
            <delta_ts>2016-08-03 15:06:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158460-20160803173204.patch</filename>
            <type>text/plain</type>
            <size>10605</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZGY4ODA1MWFiMjI1NmE1ZTk0N2VmMzM4YmI0OTVkNWU1NjI4OTMyLi45NWZhNjcwYjMzOWUxNmIw
MTkwNDUzNzZlYzQ0Y2ZlMmQ4MzlmM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNi0wOC0wMyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIENsYXJpZnkgU3ludGF4RXJyb3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lw
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTg0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggYW5kIHVuc2tpcCB0ZXN0cyB3aGljaCBlcnJvbmVvdXNseSBhc3NlcnRlZCB0aGF0IGB5aWVs
ZGAgaXMgbm90IGEKKyAgICAgICAgdmFsaWQgQmluZGluZ0lkZW50aWZpZXIsIGFuZCBpbXByb3Zl
IGVycm9yIG1lc3NhZ2UgZm9yIFlpZWxkRXhwcmVzc2lvbnMKKyAgICAgICAgb2NjdXJpbmcgaW4g
QXJyb3cgZm9ybWFsIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NvcGU6Ok1heWJlUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlOjpNYXli
ZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVlpZWxkRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorCiAy
MDE2LTA4LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudCBuZXN0ZWQgcmVzdCBkZXN0cnVjdHVyaW5nIHcuci50IHRoZSBFUzcgc3BlYwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDBjOTU1ZTIzNWYxMjhlZDU5
OGVhOWIwNDNjYWY1OGNmYmZlNDEzZWUuLjY4MGViMTQ4NzNjNmUwODY2OTQ4ZDA2NGViMDRlYTdl
ZTk2ZmRjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI0
MCw2ICsyNDAsMTIgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZQogICAgIG5leHQoKTsKIH0KIAor
Y2xhc3MgU2NvcGU6Ok1heWJlUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlIDogcHVibGljIFNldEZv
clNjb3BlPGJvb2w+IHsKK3B1YmxpYzoKKyAgICBNYXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29w
ZShTY29wZVJlZiYgc2NvcGUsIGJvb2wgc2hvdWxkUGFyc2VBc0dlbmVyYXRvcikKKyAgICAgICAg
OiBTZXRGb3JTY29wZTxib29sPihzY29wZS0+bV9pc0dlbmVyYXRvciwgc2hvdWxkUGFyc2VBc0dl
bmVyYXRvcikgeyB9Cit9OworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogUGFyc2Vy
PExleGVyVHlwZT46On5QYXJzZXIoKQogewpAQCAtMjAyNiw4ICsyMDMyLDEzIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkCiAKICAgICAgICAgaWYgKGxvYWRDYWNoZWRGdW5jdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKHN5
bnRheENoZWNrZXIsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7Ci0gICAgICAgIHByb3BhZ2F0ZUVycm9y
KCk7CisKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUGFyc2UgZm9ybWFsIHBhcmFtZXRlcnMg
d2l0aCBbK1lpZWxkXSBwYXJhbWV0ZXJpemF0aW9uLCBpZiBuZWNlc3NhcnkKKyAgICAgICAgICAg
IFNjb3BlOjpNYXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29wZSBwYXJzZUFzR2VuZXJhdG9yKGZ1
bmN0aW9uU2NvcGUsIHVwcGVyU2NvcGVJc0dlbmVyYXRvcik7CisgICAgICAgICAgICBwYXJzZUZ1
bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBtb2RlLCBmdW5jdGlvbkluZm8pOworICAg
ICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKKyAgICAgICAgfQogCiAgICAgICAgIG1hdGNoT3JG
YWlsKEFSUk9XRlVOQ1RJT04sICJFeHBlY3RlZCBhICc9PicgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24g
cGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CiAKQEAgLTMxNzMsNyArMzE4NCw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlWWllbGRFeHByZXNzCiAgICAgLy8gICAgIHlpZWxkIFtubyBMaW5lVGVybWluYXRvciBoZXJl
XSAqIEFzc2lnbm1lbnRFeHByZXNzaW9uWz9JbiwgWWllbGRdCiAKICAgICAvLyBodHRwOi8vZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0b3ItZnVuY3Rpb24t
ZGVmaW5pdGlvbnMKLSAgICBmYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNHZW5lcmF0b3Io
KSwgIkNhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yIik7CisgICAg
ZmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzR2VuZXJhdG9yKCkgJiYgIWN1cnJlbnRTY29w
ZSgpLT5pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSgpLCAiQ2Fubm90IHVzZSB5aWVsZCBleHByZXNz
aW9uIG91dCBvZiBnZW5lcmF0b3IiKTsKIAogICAgIC8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9u
YWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdlbmVyYXRvci1mdW5jdGlvbi1kZWZpbml0aW9ucy1z
dGF0aWMtc2VtYW50aWNzLWVhcmx5LWVycm9ycwogICAgIGZhaWxJZlRydWUobV9wYXJzZXJTdGF0
ZS5mdW5jdGlvblBhcnNlUGhhc2UgPT0gRnVuY3Rpb25QYXJzZVBoYXNlOjpQYXJhbWV0ZXJzLCAi
Q2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBwYXJhbWV0ZXJzIik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBhMDBiODA0MWQyNjY2YTRjMjZjZWFjNzVj
ZGNlNDM4YjBiNzE1YzlhLi43Njk3YTI2NDk4ZDdiODEyNjA3ODk1NWE1MWJiNWZmMzc5Y2U2NDI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTY2Nyw2ICs2NjcsOCBA
QCBwdWJsaWM6CiAgICAgICAgICAgICBkZXN0U2V0LmFkZChpbmZvLT51c2VkVmFyaWFibGVzKClb
aV0pOwogICAgIH0KIAorICAgIGNsYXNzIE1heWJlUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlOwor
CiBwcml2YXRlOgogICAgIHZvaWQgc2V0SXNGdW5jdGlvbigpCiAgICAgewpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBiY2E2MDA2N2ZiZDMw
YjkwOGYwNjA0YWFmYjc0ZTdlMzBiMjY1OTBhLi5kOGEyYjVlNDVjMTBmNDc1ZGYyZTUzNDE4ODU5
NWU1MjE1ZjE4NjBkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA4LTAzICBDYWl0bGluIFBvdHRlciAg
PGNhaXRwQGlnYWxpYS5jb20+CisKKyAgICAgICAgQ2xhcmlmeSBTeW50YXhFcnJvcnMgYXJvdW5k
IHlpZWxkIGFuZCB1bnNraXAgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1ODQ2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEZpeCBhbmQgdW5za2lwIHRlc3RzIHdoaWNoIGVycm9uZW91c2x5IGFz
c2VydGVkIHRoYXQgYHlpZWxkYCBpcyBub3QgYQorICAgICAgICB2YWxpZCBCaW5kaW5nSWRlbnRp
ZmllciwgYW5kIGltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IgWWllbGRFeHByZXNzaW9ucworICAg
ICAgICBvY2N1cmluZyBpbiBBcnJvdyBmb3JtYWwgcGFyYW1ldGVycy4KKworICAgICAgICAqIHN0
cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzOgorICAgICAgICAqIHN0cmVzcy95aWVsZC1vdXQtb2Yt
Z2VuZXJhdG9yLmpzOgorCiAyMDE2LTA4LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIEltcGxlbWVudCBuZXN0ZWQgcmVzdCBkZXN0cnVjdHVyaW5nIHcuci50
IHRoZSBFUzcgc3BlYwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5bnRh
eC5qcyBiL0pTVGVzdHMvc3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMKaW5kZXggZjVkYjliYzJl
Mzk3ZjViMzY4MTY0ZGUwMGZlYjdjNmU3YjIzZmJkZC4uNGViMzU0MDk4N2FkYzFjYTRkNmEyMWE0
ZGUzZmU3MTVlMWYwZDllOCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9yLXN5
bnRheC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itc3ludGF4LmpzCkBAIC0xLDYg
KzEsMyBAQAotLy8gPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1ODQ2MD4gQ2xhcmlmeSBTeW50YXhF
cnJvcnMgYXJvdW5kIHlpZWxkIGFuZCB1bnNraXAgdGVzdHMKLS8vQCBza2lwCi0KIGZ1bmN0aW9u
IHRlc3RTeW50YXgoc2NyaXB0KSB7CiAgICAgdHJ5IHsKICAgICAgICAgZXZhbChzY3JpcHQpOwpA
QCAtNDEsNDAgKzM4LDc1IEBAIGNsYXNzIEhlbGxvIHsKIAogdGVzdFN5bnRheEVycm9yKGAKIGZ1
bmN0aW9uICoqIGdlbigpIHsgfQotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcq
J2ApOworYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcqKidgKTsKIAotLy8gaHR0
cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtYXJyb3ctZnVuY3Rp
b24tZGVmaW5pdGlvbnMtc3RhdGljLXNlbWFudGljcy1lYXJseS1lcnJvcnMKLXRlc3RTeW50YXhF
cnJvcihgCisvLyAieWllbGQiIGlzIG5ldmVyIGEgWWllbGRFeHByZXNzaW9uIGluIGEgQ29uY2lz
ZUJvZHkgKHBlciBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3Nl
Yy1hcnJvdy1mdW5jdGlvbi1kZWZpbml0aW9ucworLy8gYW5kIGh0dHBzOi8vdGMzOS5naXRodWIu
aW8vZWNtYTI2Mi8jcHJvZC1Db25jaXNlQm9keSkKK3Rlc3RTeW50YXgoYAogdmFyIHZhbHVlID0g
KCkgPT4gewogICAgIHlpZWxkCiB9Ci1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29y
ZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci5g
KTsKK2ApOwogCi10ZXN0U3ludGF4RXJyb3IoYAordGVzdFN5bnRheChgCiB2YXIgdmFsdWUgPSAo
dmFsID0geWllbGQpID0+IHsKIH0KLWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3Jk
ICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLmAp
OworYCk7CiAKLXRlc3RTeW50YXhFcnJvcihgCisvLyBDb25mdXNpbmdseSwgRm9ybWFsUGFyYW1l
dGVyc1t+WWllbGRdIGRvZXMgbm90IHByb2R1Y3QgYSBTeW50YXhFcnJvciBmb3IgInlpZWxkIiwg
ZXZlbgorLy8gaW5zaWRlIG9mIGEgZ2VuZXJhdG9yIChodHRwczovL3RjMzkuZ2l0aHViLmlvL2Vj
bWEyNjIvI3Byb2QtRnVuY3Rpb25EZWNsYXJhdGlvbiksCisvLyBidXQgaW5zdGVhZCByZXNvbHZl
cyAieWllbGQiIGFzIGEgQmluZGluZ0lkZW50aWZpZXIKK3Rlc3RTeW50YXgoYAogZnVuY3Rpb24g
KmdlbigpIHsKICAgICBmdW5jdGlvbiBuZyh2YWwgPSB5aWVsZCkgewogICAgIH0KIH0KLWAsIGBT
eW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQg
ZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLmApOworYCk7CiAKKy8vIEFycm93IGZvcm1hbCBw
YXJhbWV0ZXJzIHdpdGhpbiBHZW5lcmF0b3JzIGFyZSBwYXJhbWV0ZXJpemVkIHdpdGggWytZaWVs
ZF0sIGJ1dCBhcmUKKy8vIHN0aWxsIGZvcmJpZGRlbiBmcm9tIGluY2x1ZGluZyBZaWVsZEV4cHJl
c3Npb25zIGluIEFycm93Rm9ybWFsUGFyYW1ldGVycy4KKy8vIChodHRwczovL3RjMzkuZ2l0aHVi
LmlvL2VjbWEyNjIvI3Byb2QtQXJyb3dGb3JtYWxQYXJhbWV0ZXJzKQogdGVzdFN5bnRheEVycm9y
KGAKK3ZhciB5aWVsZDsKIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgdmFyIG5nID0gKHZhbCA9IHlp
ZWxkKSA9PiB7CiAgICAgfQogfQotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9
PicuIEV4cGVjdGVkICc7JyBhZnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbi5gKTsKK2AsIGBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhw
cmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLmApOworCisoZnVuY3Rpb24gdGVzdFlpZWxkQmluZGlu
Z0lkZW50aWZpZXIoKSB7CisgICAgdmFyIHlpZWxkID0gImhlbGxvISI7CisgICAgZnVuY3Rpb24q
IGdlbigpIHsKKyAgICAgICAgeWllbGQgKGZ1bmN0aW9uKHggPSB5aWVsZCkgeyByZXR1cm4geDsg
fSkoKTsKKyAgICB9CisgICAgaWYgKGdlbigpLm5leHQoKSAhPT0gImhlbGxvISIpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgQmluZGluZ0lkZW50aWZpZXIgYnV0IGZvdW5kIFlp
ZWxkRXhwcmVzc2lvbiIpOworfSkoKTsKKwordGVzdFN5bnRheChgCitmdW5jdGlvbiogZ2VuKCkg
eworICAgIHZhciBuZyA9IChpdCA9IGZ1bmN0aW9uKigpIHsgeWllbGQgMTsgfSkgPT4geworICAg
ICAgICByZXR1cm4gaXQoKS5uZXh0KCk7CisgICAgfQorICAgIHlpZWxkIG5nKCk7Cit9CitgKTsK
IAotLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZ2Vu
ZXJhdG9yLWZ1bmN0aW9uLWRlZmluaXRpb25zLXN0YXRpYy1zZW1hbnRpY3MtZWFybHktZXJyb3Jz
CiB0ZXN0U3ludGF4RXJyb3IoYAotZnVuY3Rpb24gZ2VuKHZhbCA9IHlpZWxkKSB7CitmdW5jdGlv
biogZ2VuKCkgeworICAgIHZhciBuZyA9IChpdCA9IGZ1bmN0aW9uKCkgeyB5aWVsZCAxOyB9KSA9
PiB7CisgICAgICAgIHJldHVybiBpdCgpLm5leHQoKTsKKyAgICB9CisgICAgeWllbGQgbmcoKTsK
IH0KIGAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1
c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLmApOwogCit0ZXN0U3ludGF4KGAK
K2Z1bmN0aW9uIGdlbih2YWwgPSB5aWVsZCkgeworfQorYCk7CisKKy8vIGh0dHA6Ly9lY21hLWlu
dGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdlbmVyYXRvci1mdW5jdGlvbi1kZWZp
bml0aW9ucy1zdGF0aWMtc2VtYW50aWNzLWVhcmx5LWVycm9ycwogdGVzdFN5bnRheEVycm9yKGAK
IGZ1bmN0aW9uICpnZW4odmFsID0geWllbGQpIHsKIH0KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3lpZWxkLW91dC1vZi1nZW5lcmF0b3IuanMgYi9KU1Rlc3RzL3N0cmVzcy95aWVsZC1vdXQt
b2YtZ2VuZXJhdG9yLmpzCmluZGV4IDMzNDc3MDQ1NGNjZjNmN2RiYzQ0NmU3YWQxODA5ODkyZTNh
ZmQzN2UuLjY0MjAwYzc0NzMwN2IzMDg4NWFhMTRkMmIzNjYxYmFmODU4NGQ2MmMgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvc3RyZXNzL3lpZWxkLW91dC1vZi1nZW5lcmF0b3IuanMKKysrIGIvSlNUZXN0
cy9zdHJlc3MveWllbGQtb3V0LW9mLWdlbmVyYXRvci5qcwpAQCAtMSw2ICsxLDMgQEAKLS8vIDxo
dHRwczovL3dlYmtpdC5vcmcvYi8xNTg0NjA+IENsYXJpZnkgU3ludGF4RXJyb3JzIGFyb3VuZCB5
aWVsZCBhbmQgdW5za2lwIHRlc3RzCi0vL0Agc2tpcAotCiBmdW5jdGlvbiB0ZXN0U3ludGF4KHNj
cmlwdCkgewogICAgIHRyeSB7CiAgICAgICAgIGV2YWwoc2NyaXB0KTsKQEAgLTI0LDUzICsyMSw1
MyBAQCBmdW5jdGlvbiB0ZXN0U3ludGF4RXJyb3Ioc2NyaXB0LCBtZXNzYWdlKSB7CiAgICAgICAg
IHRocm93IG5ldyBFcnJvcigiQmFkIGVycm9yOiAiICsgU3RyaW5nKGVycm9yKSk7CiB9CiAKLXRl
c3RTeW50YXhFcnJvcihgCit0ZXN0U3ludGF4KGAKIHlpZWxkOwotYCwgIlN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91
dCBvZiBnZW5lcmF0b3IuIik7CitgKTsKIAogdGVzdFN5bnRheEVycm9yKGAKIHlpZWxkKjsKLWAs
ICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWll
bGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCwgIlN5bnRheEVycm9yOiBVbmV4
cGVjdGVkIHRva2VuICc7JyIpOwogCiB0ZXN0U3ludGF4RXJyb3IoYAogeWllbGQgMDsKLWAsICJT
eW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQg
ZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCwgIlN5bnRheEVycm9yOiBVbmV4cGVj
dGVkIG51bWJlciAnMCciKTsKIAotdGVzdFN5bnRheEVycm9yKGAKK3Rlc3RTeW50YXgoYAogeWll
bGQqIDA7Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5u
b3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2ApOwogCi10ZXN0
U3ludGF4RXJyb3IoYAordGVzdFN5bnRheChgCiBmdW5jdGlvbiBoZWxsbygpIHsKICAgICB5aWVs
ZDsKIH0KLWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5v
dCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCk7CiAKIHRlc3RT
eW50YXhFcnJvcihgCiBmdW5jdGlvbiBoZWxsbygpIHsKICAgICB5aWVsZCo7CiB9Ci1gLCAiU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4
cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2AsICJTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCB0b2tlbiAnOyciKTsKIAogdGVzdFN5bnRheEVycm9yKGAKIGZ1bmN0aW9uIGhlbGxvKCkgewog
ICAgIHlpZWxkIDA7CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWll
bGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2As
ICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBudW1iZXIgJzAnIik7CiAKLXRlc3RTeW50YXhFcnJv
cihgCit0ZXN0U3ludGF4KGAKIGZ1bmN0aW9uIGhlbGxvKCkgewogICAgIHlpZWxkKiAwOwogfQot
YCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5
aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgKTsKIAotdGVzdFN5bnRheEVy
cm9yKGAKK3Rlc3RTeW50YXgoYAogZnVuY3Rpb24gKmdlbigpIHsKICAgICBmdW5jdGlvbiBoZWxs
bygpIHsKICAgICAgICAgeWllbGQ7CiAgICAgfQogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVj
dGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBn
ZW5lcmF0b3IuIik7CitgKTsKIAogdGVzdFN5bnRheEVycm9yKGAKIGZ1bmN0aW9uICpnZW4oKSB7
CkBAIC03OCw3ICs3NSw3IEBAIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgICAgIHlpZWxkKjsKICAg
ICB9CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5u
b3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2AsICJTeW50YXhF
cnJvcjogVW5leHBlY3RlZCB0b2tlbiAnOyciKTsKIAogdGVzdFN5bnRheEVycm9yKGAKIGZ1bmN0
aW9uICpnZW4oKSB7CkBAIC04NiwxNSArODMsMTUgQEAgZnVuY3Rpb24gKmdlbigpIHsKICAgICAg
ICAgeWllbGQgMDsKICAgICB9CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29y
ZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4i
KTsKK2AsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBudW1iZXIgJzAnIik7CiAKLXRlc3RTeW50
YXhFcnJvcihgCit0ZXN0U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgZnVuY3Rpb24g
aGVsbG8oKSB7CiAgICAgICAgIHlpZWxkKiAwOwogICAgIH0KIH0KLWAsICJTeW50YXhFcnJvcjog
VW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBv
dXQgb2YgZ2VuZXJhdG9yLiIpOworYCk7CiAKIHRlc3RTeW50YXgoYAogZnVuY3Rpb24gKmdlbigp
IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285280</attachid>
            <date>2016-08-03 15:06:11 -0700</date>
            <delta_ts>2016-08-04 07:23:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158460-20160803180447.patch</filename>
            <type>text/plain</type>
            <size>11787</size>
            <attacher name="Caitlin Potter (:caitp)">caitp</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MDc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZGY4ODA1MWFiMjI1NmE1ZTk0N2VmMzM4YmI0OTVkNWU1NjI4OTMyLi45NWZhNjcwYjMzOWUxNmIw
MTkwNDUzNzZlYzQ0Y2ZlMmQ4MzlmM2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNi0wOC0wMyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgorCisgICAgICAgIENsYXJpZnkgU3ludGF4RXJyb3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lw
IHRlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NTg0NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXggYW5kIHVuc2tpcCB0ZXN0cyB3aGljaCBlcnJvbmVvdXNseSBhc3NlcnRlZCB0aGF0IGB5aWVs
ZGAgaXMgbm90IGEKKyAgICAgICAgdmFsaWQgQmluZGluZ0lkZW50aWZpZXIsIGFuZCBpbXByb3Zl
IGVycm9yIG1lc3NhZ2UgZm9yIFlpZWxkRXhwcmVzc2lvbnMKKyAgICAgICAgb2NjdXJpbmcgaW4g
QXJyb3cgZm9ybWFsIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6U2NvcGU6Ok1heWJlUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlOjpNYXli
ZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVlpZWxkRXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorCiAy
MDE2LTA4LTAzICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIElt
cGxlbWVudCBuZXN0ZWQgcmVzdCBkZXN0cnVjdHVyaW5nIHcuci50IHRoZSBFUzcgc3BlYwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDBjOTU1ZTIzNWYxMjhlZDU5
OGVhOWIwNDNjYWY1OGNmYmZlNDEzZWUuLjUwOTY1M2EzNzBlNGY4NGRmMjk4YmIyMzc4MDkwZDc1
NmNlNTkwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI0
MCw2ICsyNDAsMTIgQEAgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlcihWTSogdm0sIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZQogICAgIG5leHQoKTsKIH0KIAor
Y2xhc3MgU2NvcGU6Ok1heWJlUGFyc2VBc0dlbmVyYXRvckZvclNjb3BlIDogcHVibGljIFNldEZv
clNjb3BlPGJvb2w+IHsKK3B1YmxpYzoKKyAgICBNYXliZVBhcnNlQXNHZW5lcmF0b3JGb3JTY29w
ZShTY29wZVJlZiYgc2NvcGUsIGJvb2wgc2hvdWxkUGFyc2VBc0dlbmVyYXRvcikKKyAgICAgICAg
OiBTZXRGb3JTY29wZTxib29sPihzY29wZS0+bV9pc0dlbmVyYXRvciwgc2hvdWxkUGFyc2VBc0dl
bmVyYXRvcikgeyB9Cit9OworCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogUGFyc2Vy
PExleGVyVHlwZT46On5QYXJzZXIoKQogewpAQCAtMjAyNiw4ICsyMDMyLDE0IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlv
bkluZm8oVHJlZUJ1aWxkCiAKICAgICAgICAgaWYgKGxvYWRDYWNoZWRGdW5jdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKHN5
bnRheENoZWNrZXIsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7Ci0gICAgICAgIHByb3BhZ2F0ZUVycm9y
KCk7CisKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUGFyc2UgZm9ybWFsIHBhcmFtZXRlcnMg
d2l0aCBbK1lpZWxkXSBwYXJhbWV0ZXJpemF0aW9uLCBpbiBvcmRlciB0byBiYW4gWWllbGRFeHBy
ZXNzaW9ucworICAgICAgICAgICAgLy8gaW4gQXJyb3dGb3JtYWxQYXJhbWV0ZXJzLCBwZXIgRVM2
ICNzZWMtYXJyb3ctZnVuY3Rpb24tZGVmaW5pdGlvbnMtc3RhdGljLXNlbWFudGljcy1lYXJseS1l
cnJvcnMuCisgICAgICAgICAgICBTY29wZTo6TWF5YmVQYXJzZUFzR2VuZXJhdG9yRm9yU2NvcGUg
cGFyc2VBc0dlbmVyYXRvcihmdW5jdGlvblNjb3BlLCB1cHBlclNjb3BlSXNHZW5lcmF0b3IpOwor
ICAgICAgICAgICAgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoc3ludGF4Q2hlY2tlciwgbW9kZSwg
ZnVuY3Rpb25JbmZvKTsKKyAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CisgICAgICAgIH0K
IAogICAgICAgICBtYXRjaE9yRmFpbChBUlJPV0ZVTkNUSU9OLCAiRXhwZWN0ZWQgYSAnPT4nIGFm
dGVyIGFycm93IGZ1bmN0aW9uIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIpOwogCkBAIC0zMTczLDcg
KzMxODUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVlpZWxkRXhwcmVzcwogICAgIC8vICAgICB5aWVsZCBbbm8g
TGluZVRlcm1pbmF0b3IgaGVyZV0gKiBBc3NpZ25tZW50RXhwcmVzc2lvbls/SW4sIFlpZWxkXQog
CiAgICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
Z2VuZXJhdG9yLWZ1bmN0aW9uLWRlZmluaXRpb25zCi0gICAgZmFpbElmRmFsc2UoY3VycmVudFNj
b3BlKCktPmlzR2VuZXJhdG9yKCksICJDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9m
IGdlbmVyYXRvciIpOworICAgIGZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0dlbmVyYXRv
cigpICYmICFjdXJyZW50U2NvcGUoKS0+aXNBcnJvd0Z1bmN0aW9uQm91bmRhcnkoKSwgIkNhbm5v
dCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yIik7CiAKICAgICAvLyBodHRw
Oi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZW5lcmF0b3ItZnVu
Y3Rpb24tZGVmaW5pdGlvbnMtc3RhdGljLXNlbWFudGljcy1lYXJseS1lcnJvcnMKICAgICBmYWls
SWZUcnVlKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNlID09IEZ1bmN0aW9uUGFyc2VQ
aGFzZTo6UGFyYW1ldGVycywgIkNhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiB3aXRoaW4gcGFy
YW1ldGVycyIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTAwYjgw
NDFkMjY2NmE0YzI2Y2VhYzc1Y2RjZTQzOGIwYjcxNWM5YS4uNzY5N2EyNjQ5OGQ3YjgxMjYwNzg5
NTVhNTFiYjVmZjM3OWNlNjQyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CkBAIC02NjcsNiArNjY3LDggQEAgcHVibGljOgogICAgICAgICAgICAgZGVzdFNldC5hZGQoaW5m
by0+dXNlZFZhcmlhYmxlcygpW2ldKTsKICAgICB9CiAKKyAgICBjbGFzcyBNYXliZVBhcnNlQXNH
ZW5lcmF0b3JGb3JTY29wZTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHNldElzRnVuY3Rpb24oKQog
ICAgIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYmNhNjAwNjdmYmQzMGI5MDhmMDYwNGFhZmI3NGU3ZTMwYjI2NTkwYS4uZDhhMmI1ZTQ1
YzEwZjQ3NWRmMmU1MzQxODg1OTVlNTIxNWYxODYwZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNi0wOC0w
MyAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgorCisgICAgICAgIENsYXJpZnkg
U3ludGF4RXJyb3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lwIHRlc3RzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg0NjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggYW5kIHVuc2tpcCB0ZXN0cyB3
aGljaCBlcnJvbmVvdXNseSBhc3NlcnRlZCB0aGF0IGB5aWVsZGAgaXMgbm90IGEKKyAgICAgICAg
dmFsaWQgQmluZGluZ0lkZW50aWZpZXIsIGFuZCBpbXByb3ZlIGVycm9yIG1lc3NhZ2UgZm9yIFlp
ZWxkRXhwcmVzc2lvbnMKKyAgICAgICAgb2NjdXJpbmcgaW4gQXJyb3cgZm9ybWFsIHBhcmFtZXRl
cnMuCisKKyAgICAgICAgKiBzdHJlc3MvZ2VuZXJhdG9yLXN5bnRheC5qczoKKyAgICAgICAgKiBz
dHJlc3MveWllbGQtb3V0LW9mLWdlbmVyYXRvci5qczoKKwogMjAxNi0wOC0wMyAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgbmVzdGVkIHJlc3Qg
ZGVzdHJ1Y3R1cmluZyB3LnIudCB0aGUgRVM3IHNwZWMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2dlbmVyYXRvci1zeW50YXguanMgYi9KU1Rlc3RzL3N0cmVzcy9nZW5lcmF0b3Itc3ludGF4
LmpzCmluZGV4IGY1ZGI5YmMyZTM5N2Y1YjM2ODE2NGRlMDBmZWI3YzZlN2IyM2ZiZGQuLjRlYjM1
NDA5ODdhZGMxY2E0ZDZhMjFhNGRlM2ZlNzE1ZTFmMGQ5ZTggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2dlbmVyYXRvci1zeW50YXguanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2VuZXJhdG9y
LXN5bnRheC5qcwpAQCAtMSw2ICsxLDMgQEAKLS8vIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTg0
NjA+IENsYXJpZnkgU3ludGF4RXJyb3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lwIHRlc3RzCi0v
L0Agc2tpcAotCiBmdW5jdGlvbiB0ZXN0U3ludGF4KHNjcmlwdCkgewogICAgIHRyeSB7CiAgICAg
ICAgIGV2YWwoc2NyaXB0KTsKQEAgLTQxLDQwICszOCw3NSBAQCBjbGFzcyBIZWxsbyB7CiAKIHRl
c3RTeW50YXhFcnJvcihgCiBmdW5jdGlvbiAqKiBnZW4oKSB7IH0KLWAsIGBTeW50YXhFcnJvcjog
VW5leHBlY3RlZCB0b2tlbiAnKidgKTsKK2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAnKionYCk7CiAKLS8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLWFycm93LWZ1bmN0aW9uLWRlZmluaXRpb25zLXN0YXRpYy1zZW1hbnRpY3MtZWFybHkt
ZXJyb3JzCi10ZXN0U3ludGF4RXJyb3IoYAorLy8gInlpZWxkIiBpcyBuZXZlciBhIFlpZWxkRXhw
cmVzc2lvbiBpbiBhIENvbmNpc2VCb2R5IChwZXIgaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5v
cmcvZWNtYS0yNjIvNi4wLyNzZWMtYXJyb3ctZnVuY3Rpb24tZGVmaW5pdGlvbnMKKy8vIGFuZCBo
dHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3Byb2QtQ29uY2lzZUJvZHkpCit0ZXN0U3lu
dGF4KGAKIHZhciB2YWx1ZSA9ICgpID0+IHsKICAgICB5aWVsZAogfQotYCwgYFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9u
IG91dCBvZiBnZW5lcmF0b3IuYCk7CitgKTsKIAotdGVzdFN5bnRheEVycm9yKGAKK3Rlc3RTeW50
YXgoYAogdmFyIHZhbHVlID0gKHZhbCA9IHlpZWxkKSA9PiB7CiB9Ci1gLCBgU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24g
b3V0IG9mIGdlbmVyYXRvci5gKTsKK2ApOwogCi10ZXN0U3ludGF4RXJyb3IoYAorLy8gQ29uZnVz
aW5nbHksIEZvcm1hbFBhcmFtZXRlcnNbfllpZWxkXSBkb2VzIG5vdCBwcm9kdWN0IGEgU3ludGF4
RXJyb3IgZm9yICJ5aWVsZCIsIGV2ZW4KKy8vIGluc2lkZSBvZiBhIGdlbmVyYXRvciAoaHR0cHM6
Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNwcm9kLUZ1bmN0aW9uRGVjbGFyYXRpb24pLAorLy8g
YnV0IGluc3RlYWQgcmVzb2x2ZXMgInlpZWxkIiBhcyBhIEJpbmRpbmdJZGVudGlmaWVyCit0ZXN0
U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oKSB7CiAgICAgZnVuY3Rpb24gbmcodmFsID0geWllbGQp
IHsKICAgICB9CiB9Ci1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQn
LiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci5gKTsKK2ApOwog
CisvLyBBcnJvdyBmb3JtYWwgcGFyYW1ldGVycyB3aXRoaW4gR2VuZXJhdG9ycyBhcmUgcGFyYW1l
dGVyaXplZCB3aXRoIFsrWWllbGRdLCBidXQgYXJlCisvLyBzdGlsbCBmb3JiaWRkZW4gZnJvbSBp
bmNsdWRpbmcgWWllbGRFeHByZXNzaW9ucyBpbiBBcnJvd0Zvcm1hbFBhcmFtZXRlcnMuCisvLyAo
aHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNwcm9kLUFycm93Rm9ybWFsUGFyYW1ldGVy
cykKIHRlc3RTeW50YXhFcnJvcihgCit2YXIgeWllbGQ7CiBmdW5jdGlvbiAqZ2VuKCkgewogICAg
IHZhciBuZyA9ICh2YWwgPSB5aWVsZCkgPT4gewogICAgIH0KIH0KLWAsIGBTeW50YXhFcnJvcjog
VW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIgdmFyaWFibGUgZGVjbGFy
YXRpb24uYCk7CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBD
YW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci5gKTsKKworKGZ1bmN0
aW9uIHRlc3RZaWVsZEJpbmRpbmdJZGVudGlmaWVyKCkgeworICAgIHZhciB5aWVsZCA9ICJoZWxs
byEiOworICAgIGZ1bmN0aW9uKiBnZW4oKSB7CisgICAgICAgIHlpZWxkIChmdW5jdGlvbih4ID0g
eWllbGQpIHsgcmV0dXJuIHg7IH0pKCk7CisgICAgfQorICAgIGlmIChnZW4oKS5uZXh0KCkgIT09
ICJoZWxsbyEiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIEJpbmRpbmdJZGVu
dGlmaWVyIGJ1dCBmb3VuZCBZaWVsZEV4cHJlc3Npb24iKTsKK30pKCk7CisKK3Rlc3RTeW50YXgo
YAorZnVuY3Rpb24qIGdlbigpIHsKKyAgICB2YXIgbmcgPSAoaXQgPSBmdW5jdGlvbiooKSB7IHlp
ZWxkIDE7IH0pID0+IHsKKyAgICAgICAgcmV0dXJuIGl0KCkubmV4dCgpOworICAgIH0KKyAgICB5
aWVsZCBuZygpOworfQorYCk7CiAKLS8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2Vj
bWEtMjYyLzYuMC8jc2VjLWdlbmVyYXRvci1mdW5jdGlvbi1kZWZpbml0aW9ucy1zdGF0aWMtc2Vt
YW50aWNzLWVhcmx5LWVycm9ycwogdGVzdFN5bnRheEVycm9yKGAKLWZ1bmN0aW9uIGdlbih2YWwg
PSB5aWVsZCkgeworZnVuY3Rpb24qIGdlbigpIHsKKyAgICB2YXIgbmcgPSAoaXQgPSBmdW5jdGlv
bigpIHsgeWllbGQgMTsgfSkgPT4geworICAgICAgICByZXR1cm4gaXQoKS5uZXh0KCk7CisgICAg
fQorICAgIHlpZWxkIG5nKCk7CiB9CiBgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29y
ZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci5g
KTsKIAordGVzdFN5bnRheChgCitmdW5jdGlvbiBnZW4odmFsID0geWllbGQpIHsKK30KK2ApOwor
CisvLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZW5l
cmF0b3ItZnVuY3Rpb24tZGVmaW5pdGlvbnMtc3RhdGljLXNlbWFudGljcy1lYXJseS1lcnJvcnMK
IHRlc3RTeW50YXhFcnJvcihgCiBmdW5jdGlvbiAqZ2VuKHZhbCA9IHlpZWxkKSB7CiB9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy95aWVsZC1vdXQtb2YtZ2VuZXJhdG9yLmpzIGIvSlNUZXN0
cy9zdHJlc3MveWllbGQtb3V0LW9mLWdlbmVyYXRvci5qcwppbmRleCAzMzQ3NzA0NTRjY2YzZjdk
YmM0NDZlN2FkMTgwOTg5MmUzYWZkMzdlLi42NDIwMGM3NDczMDdiMzA4ODVhYTE0ZDJiMzY2MWJh
Zjg1ODRkNjJjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy95aWVsZC1vdXQtb2YtZ2VuZXJh
dG9yLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3lpZWxkLW91dC1vZi1nZW5lcmF0b3IuanMKQEAg
LTEsNiArMSwzIEBACi0vLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTU4NDYwPiBDbGFyaWZ5IFN5
bnRheEVycm9ycyBhcm91bmQgeWllbGQgYW5kIHVuc2tpcCB0ZXN0cwotLy9AIHNraXAKLQogZnVu
Y3Rpb24gdGVzdFN5bnRheChzY3JpcHQpIHsKICAgICB0cnkgewogICAgICAgICBldmFsKHNjcmlw
dCk7CkBAIC0yNCw1MyArMjEsNTMgQEAgZnVuY3Rpb24gdGVzdFN5bnRheEVycm9yKHNjcmlwdCwg
bWVzc2FnZSkgewogICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBlcnJvcjogIiArIFN0cmlu
ZyhlcnJvcikpOwogfQogCi10ZXN0U3ludGF4RXJyb3IoYAordGVzdFN5bnRheChgCiB5aWVsZDsK
LWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2Ug
eWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCk7CiAKIHRlc3RTeW50YXhF
cnJvcihgCiB5aWVsZCo7Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWll
bGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2As
ICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnOyciKTsKIAogdGVzdFN5bnRheEVycm9y
KGAKIHlpZWxkIDA7Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQn
LiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2AsICJT
eW50YXhFcnJvcjogVW5leHBlY3RlZCBudW1iZXIgJzAnIik7CiAKLXRlc3RTeW50YXhFcnJvcihg
Cit0ZXN0U3ludGF4KGAKIHlpZWxkKiAwOwotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtl
eXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0
b3IuIik7CitgKTsKIAotdGVzdFN5bnRheEVycm9yKGAKK3Rlc3RTeW50YXgoYAogZnVuY3Rpb24g
aGVsbG8oKSB7CiAgICAgeWllbGQ7CiB9Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5
d29yZCAneWllbGQnLiBDYW5ub3QgdXNlIHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRv
ci4iKTsKK2ApOwogCiB0ZXN0U3ludGF4RXJyb3IoYAogZnVuY3Rpb24gaGVsbG8oKSB7CiAgICAg
eWllbGQqOwogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4g
Q2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0b3IuIik7CitgLCAiU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJzsnIik7CiAKIHRlc3RTeW50YXhFcnJvcihgCiBm
dW5jdGlvbiBoZWxsbygpIHsKICAgICB5aWVsZCAwOwogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4
cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBv
ZiBnZW5lcmF0b3IuIik7CitgLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVtYmVyICcwJyIp
OwogCi10ZXN0U3ludGF4RXJyb3IoYAordGVzdFN5bnRheChgCiBmdW5jdGlvbiBoZWxsbygpIHsK
ICAgICB5aWVsZCogMDsKIH0KLWAsICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5
aWVsZCcuIENhbm5vdCB1c2UgeWllbGQgZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOwor
YCk7CiAKLXRlc3RTeW50YXhFcnJvcihgCit0ZXN0U3ludGF4KGAKIGZ1bmN0aW9uICpnZW4oKSB7
CiAgICAgZnVuY3Rpb24gaGVsbG8oKSB7CiAgICAgICAgIHlpZWxkOwogICAgIH0KIH0KLWAsICJT
eW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICd5aWVsZCcuIENhbm5vdCB1c2UgeWllbGQg
ZXhwcmVzc2lvbiBvdXQgb2YgZ2VuZXJhdG9yLiIpOworYCk7CiAKIHRlc3RTeW50YXhFcnJvcihg
CiBmdW5jdGlvbiAqZ2VuKCkgewpAQCAtNzgsNyArNzUsNyBAQCBmdW5jdGlvbiAqZ2VuKCkgewog
ICAgICAgICB5aWVsZCo7CiAgICAgfQogfQotYCwgIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtl
eXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9uIG91dCBvZiBnZW5lcmF0
b3IuIik7CitgLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJzsnIik7CiAKIHRlc3RT
eW50YXhFcnJvcihgCiBmdW5jdGlvbiAqZ2VuKCkgewpAQCAtODYsMTUgKzgzLDE1IEBAIGZ1bmN0
aW9uICpnZW4oKSB7CiAgICAgICAgIHlpZWxkIDA7CiAgICAgfQogfQotYCwgIlN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIGtleXdvcmQgJ3lpZWxkJy4gQ2Fubm90IHVzZSB5aWVsZCBleHByZXNzaW9u
IG91dCBvZiBnZW5lcmF0b3IuIik7CitgLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVtYmVy
ICcwJyIpOwogCi10ZXN0U3ludGF4RXJyb3IoYAordGVzdFN5bnRheChgCiBmdW5jdGlvbiAqZ2Vu
KCkgewogICAgIGZ1bmN0aW9uIGhlbGxvKCkgewogICAgICAgICB5aWVsZCogMDsKICAgICB9CiB9
Ci1gLCAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAneWllbGQnLiBDYW5ub3QgdXNl
IHlpZWxkIGV4cHJlc3Npb24gb3V0IG9mIGdlbmVyYXRvci4iKTsKK2ApOwogCiB0ZXN0U3ludGF4
KGAKIGZ1bmN0aW9uICpnZW4oKSB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIueWFtbCBi
L0pTVGVzdHMvdGVzdDI2Mi55YW1sCmluZGV4IDQ3MTRjMzNjYjNiMGNjZjliODUyNjRhYmQ4OTNk
ZDVmN2Q4MTRlOGIuLjI1YzM3N2RmNjJkMGM0ODU2MzdlYzNlMmNhOWZmZmI5M2FlNTNkODEgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi55YW1s
CkBAIC01MzczOCw3ICs1MzczOCw3IEBACiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9l
eHByZXNzaW9ucy9hcnJvdy1mdW5jdGlvbi9vYmplY3QtbGl0ZXJhbC1yZXR1cm4tcmVxdWlyZXMt
Ym9keS1wYXJlbnMuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIs
IFsiLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9z
dGEuanMiXSwgWzpzdHJpY3RdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9hcnJvdy1mdW5jdGlvbi9wYXJhbS1kZmx0LXlpZWxkLWV4cHIuanMKLSAgY21kOiBydW5U
ZXN0MjYyIDpmYWlsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0
LmpzIiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCisgIGNtZDogcnVuVGVzdDI2
MiA6bm9ybWFsLCAiU3ludGF4RXJyb3IiLCBbIi4uLy4uLy4uLy4uL2hhcm5lc3MvYXNzZXJ0Lmpz
IiwgIi4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFtdCiAtIHBhdGg6IHRlc3QyNjIvdGVz
dC9sYW5ndWFnZS9leHByZXNzaW9ucy9hcnJvdy1mdW5jdGlvbi9wYXJhbS1kZmx0LXlpZWxkLWV4
cHIuanMKICAgY21kOiBydW5UZXN0MjYyIDpub3JtYWwsICJTeW50YXhFcnJvciIsIFsiLi4vLi4v
Li4vLi4vaGFybmVzcy9hc3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwg
WzpzdHJpY3RdCiAtIHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9hcnJv
dy1mdW5jdGlvbi9wYXJhbS1kZmx0LXlpZWxkLWlkLW5vbi1zdHJpY3QuanMK
</data>

          </attachment>
      

    </bug>

</bugzilla>