<?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>146934</bug_id>
          
          <creation_ts>2015-07-14 12:21:36 -0700</creation_ts>
          <short_desc>[ES6] Arrow function syntax. Arrow function should support the destructuring parameters.</short_desc>
          <delta_ts>2016-01-16 16:04:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140855</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="GSkachkov">gskachkov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1109414</commentid>
    <comment_count>0</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2015-07-14 12:21:36 -0700</bug_when>
    <thetext>Arrow function should support the destructuring parameters.
Example: 
1 ([a,b]) =&gt; a*b // OK
2 [a,b] =&gt; a*b   //Syntax error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154235</commentid>
    <comment_count>1</comment_count>
      <attachid>268657</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-01-10 11:20:28 -0800</bug_when>
    <thetext>Created attachment 268657
Patch

Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154291</commentid>
    <comment_count>2</comment_count>
      <attachid>268657</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-10 16:59:16 -0800</bug_when>
    <thetext>Comment on attachment 268657
Patch

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

&gt; Source/JavaScriptCore/parser/Parser.h:1080
&gt; +        else if (match(OPENPAREN)) {
&gt; +            // Let&apos;s check if this destructuring paramters
&gt; +            SavePoint saveArrowFunctionPoint = createSavePoint();
&gt; +            next(); // Consume OPENPAREN;
&gt; +            auto pattern = tryParseDestructuringPatternExpression(context, AssignmentContext::DeclarationStatement);
&gt; +            isArrowFunction = pattern &amp;&amp; consume(CLOSEPAREN) &amp;&amp; match(ARROWFUNCTION);
&gt; +            
&gt; +            restoreSavePoint(saveArrowFunctionPoint);
&gt; +        }
&gt; +        

This code isn&apos;t correct.
It won&apos;t parse:
```
(a, b, {c}, [d], {e, f}) =&gt; ...;
```

I suggest an alternate approach here:
have this code check if we have the single parameter name with no parens case:
```
let x = a=&gt;a;
``` 
and otherwise, we already know how to parse &quot;(p1, p2, ...)&quot; style parameter lists
in another function in the parser. We should use that same code here. Either we use
it directly as is (probably not possible), or we should abstract that code in such a way
that this code can use it. That way, we don&apos;t have to places in the parser where we parse parameters.

The reason we have this problem in the first place is that we have two places where we parse
parameters, lets not make that mistake again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155039</commentid>
    <comment_count>3</comment_count>
      <attachid>268861</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-01-13 00:00:40 -0800</bug_when>
    <thetext>Created attachment 268861
Patch

Patch with fixed comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155042</commentid>
    <comment_count>4</comment_count>
      <attachid>268657</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-01-13 00:10:21 -0800</bug_when>
    <thetext>Comment on attachment 268657
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1080
&gt;&gt; +        
&gt; 
&gt; This code isn&apos;t correct.
&gt; It won&apos;t parse:
&gt; ```
&gt; (a, b, {c}, [d], {e, f}) =&gt; ...;
&gt; ```
&gt; 
&gt; I suggest an alternate approach here:
&gt; have this code check if we have the single parameter name with no parens case:
&gt; ```
&gt; let x = a=&gt;a;
&gt; ``` 
&gt; and otherwise, we already know how to parse &quot;(p1, p2, ...)&quot; style parameter lists
&gt; in another function in the parser. We should use that same code here. Either we use
&gt; it directly as is (probably not possible), or we should abstract that code in such a way
&gt; that this code can use it. That way, we don&apos;t have to places in the parser where we parse parameters.
&gt; 
&gt; The reason we have this problem in the first place is that we have two places where we parse
&gt; parameters, lets not make that mistake again.

I&apos;ve tried to use function that parse parameters - parseFormalParameters, however parseFormalParameters adds parsed parameters to current scope, so I had to make face scope to avoid errors. 
Could you please check if it acceptable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155149</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-13 11:46:40 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 268657 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268657&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/parser/Parser.h:1080
&gt; &gt;&gt; +        
&gt; &gt; 
&gt; &gt; This code isn&apos;t correct.
&gt; &gt; It won&apos;t parse:
&gt; &gt; ```
&gt; &gt; (a, b, {c}, [d], {e, f}) =&gt; ...;
&gt; &gt; ```
&gt; &gt; 
&gt; &gt; I suggest an alternate approach here:
&gt; &gt; have this code check if we have the single parameter name with no parens case:
&gt; &gt; ```
&gt; &gt; let x = a=&gt;a;
&gt; &gt; ``` 
&gt; &gt; and otherwise, we already know how to parse &quot;(p1, p2, ...)&quot; style parameter lists
&gt; &gt; in another function in the parser. We should use that same code here. Either we use
&gt; &gt; it directly as is (probably not possible), or we should abstract that code in such a way
&gt; &gt; that this code can use it. That way, we don&apos;t have to places in the parser where we parse parameters.
&gt; &gt; 
&gt; &gt; The reason we have this problem in the first place is that we have two places where we parse
&gt; &gt; parameters, lets not make that mistake again.
&gt; 
&gt; I&apos;ve tried to use function that parse parameters - parseFormalParameters,
&gt; however parseFormalParameters adds parsed parameters to current scope, so I
&gt; had to make face scope to avoid errors. 
&gt; Could you please check if it acceptable?

I think this approach is okay. It&apos;s unfortunate we have to create
a scope here, but this is probably the most reliable way to future-proof
this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155159</commentid>
    <comment_count>6</comment_count>
      <attachid>268861</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-13 11:59:26 -0800</bug_when>
    <thetext>Comment on attachment 268861
Patch

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

this seems like the right approach, just a few comments to clean up the code.

&gt; Source/JavaScriptCore/parser/Parser.h:1047
&gt; +    ALWAYS_INLINE bool isArrowFunctionNoOrOneParamter()
&gt;      {
&gt;          bool isArrowFunction = false;
&gt;          
&gt; -        if (match(EOFTOK))
&gt; +        if (match(EOFTOK) || (!match(IDENT) &amp;&amp; !match(OPENPAREN)))
&gt;              return isArrowFunction;
&gt;          
&gt;          SavePoint saveArrowFunctionPoint = createSavePoint();
&gt; +        if (match(IDENT))
&gt; +            isArrowFunction = consume(IDENT) &amp;&amp; match(ARROWFUNCTION);
&gt; +        else if (consume(OPENPAREN) &amp;&amp; consume(CLOSEPAREN))
&gt; +            isArrowFunction = match(ARROWFUNCTION);
&gt;          
&gt; -        if (consume(OPENPAREN)) {
&gt; -            bool isArrowFunctionParamters = true;
&gt; +        restoreSavePoint(saveArrowFunctionPoint);
&gt; +        
&gt; +        return isArrowFunction;
&gt; +    }

This function has some redundancy with the below function, lets just combine
the necessary bits into the below function.

&gt; Source/JavaScriptCore/parser/Parser.h:1049
&gt; +    template &lt;class TreeBuilder&gt; bool isArrowFunctionParamters(TreeBuilder&amp; context)

We don&apos;t need to templatize this once we move it to SyntaxChecker (see below).
Also, this function has been misspelled, lets fix the spelling in this patch:
&quot;isArrowFunctionParamters&quot; =&gt; &quot;isArrowFunctionParameters&quot;

&gt; Source/JavaScriptCore/parser/Parser.h:1057
&gt; +        if (isArrowFunctionNoOrOneParamter())
&gt; +            isArrowFunction = true;

Instead of calling the above function, you
can just check:
```
if (match(IDENT)) {
   save point create;
   next();
   check if arrow function
   save point restore;
} else if ....
```

&gt; Source/JavaScriptCore/parser/Parser.h:1066
&gt; +            unsigned parametersCount = 1;

start this at zero.
Even though we ignore this number, it should start at zero.

&gt; Source/JavaScriptCore/parser/Parser.h:1067
&gt; +            isArrowFunction = parseFormalParameters(context, context.createFormalParameterList(), parametersCount) &amp;&amp; consume(CLOSEPAREN) &amp;&amp; match(ARROWFUNCTION);

Instead of passing in &quot;context&quot; here, we should create a SyntaxChecker and pass that in.
That way we&apos;re not actually allocating AST nodes that we throw away.

&gt; LayoutTests/js/script-tests/arrowfunction-syntax.js:79
&gt;  

add a test or a few tests for rest parameters:
```
(...rest) =&gt; rest;
```
etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155407</commentid>
    <comment_count>7</comment_count>
      <attachid>268951</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-01-14 02:19:30 -0800</bug_when>
    <thetext>Created attachment 268951
Patch

Patch with fixed comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1155491</commentid>
    <comment_count>8</comment_count>
      <attachid>268861</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-01-14 11:02:49 -0800</bug_when>
    <thetext>Comment on attachment 268861
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1047
&gt;&gt; +    }
&gt; 
&gt; This function has some redundancy with the below function, lets just combine
&gt; the necessary bits into the below function.

Merged into one function

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1049
&gt;&gt; +    template &lt;class TreeBuilder&gt; bool isArrowFunctionParamters(TreeBuilder&amp; context)
&gt; 
&gt; We don&apos;t need to templatize this once we move it to SyntaxChecker (see below).
&gt; Also, this function has been misspelled, lets fix the spelling in this patch:
&gt; &quot;isArrowFunctionParamters&quot; =&gt; &quot;isArrowFunctionParameters&quot;

Fixed

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1057
&gt;&gt; +            isArrowFunction = true;
&gt; 
&gt; Instead of calling the above function, you
&gt; can just check:
&gt; ```
&gt; if (match(IDENT)) {
&gt;    save point create;
&gt;    next();
&gt;    check if arrow function
&gt;    save point restore;
&gt; } else if ....
&gt; ```

Refactored

&gt;&gt; Source/JavaScriptCore/parser/Parser.h:1067
&gt;&gt; +            isArrowFunction = parseFormalParameters(context, context.createFormalParameterList(), parametersCount) &amp;&amp; consume(CLOSEPAREN) &amp;&amp; match(ARROWFUNCTION);
&gt; 
&gt; Instead of passing in &quot;context&quot; here, we should create a SyntaxChecker and pass that in.
&gt; That way we&apos;re not actually allocating AST nodes that we throw away.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156078</commentid>
    <comment_count>9</comment_count>
      <attachid>268951</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-01-15 18:48:16 -0800</bug_when>
    <thetext>Comment on attachment 268951
Patch

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

&gt; Source/JavaScriptCore/parser/Parser.cpp:377
&gt; +bool Parser&lt;LexerType&gt;::isArrowFunctionParameters()

This looks good to me, just some really small nits on how to write the function:

&gt; Source/JavaScriptCore/parser/Parser.cpp:382
&gt; +        
&gt; +    if (match(EOFTOK) || (!match(OPENPAREN) &amp;&amp; !match(IDENT)))
&gt; +        return isArrowFunction;

I would write this like:
```
if (match(EOFTOK))
    return false;
bool isOpenParen = match(OPENPAREN);
bool isIdent = match(IDENT);
if (!isOpenParen &amp;&amp; !isIdent)
    return false;
```
Then, below, you can use these booleans instead of performing the match(...) twice.
I say this because I think that LLVM will CSE this, but lets take matters into our own hand.

&gt; Source/JavaScriptCore/parser/Parser.cpp:386
&gt; +    if (match(IDENT)) {

Then this could be: &quot;if (isIdent) { next(); isArrowFunction = match(ARROWFUNCTION) }

&gt; Source/JavaScriptCore/parser/Parser.cpp:388
&gt; +    } else if (consume(OPENPAREN)) {

Then I would change this to a pure else clause.
Then, I would have the first two lines be:
RELEASE_ASSERT(isOpenParen); // your check at the top of the function guarantees it, so lets not pretend it isn&apos;t true.
next();

&gt; Source/JavaScriptCore/parser/Parser.cpp:390
&gt; +            isArrowFunction = consume(CLOSEPAREN) &amp;&amp; match(ARROWFUNCTION);

I would write this as:
if {
    next();
    isArrowFunction = match(ARROWFUNCTION);
}

&gt; Source/JavaScriptCore/parser/Parser.cpp:393
&gt; +                // We make fake scope, otherwise parseFormalParameters will add variable to current scope that lead to errors

style: indentation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156180</commentid>
    <comment_count>10</comment_count>
      <attachid>269172</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-01-16 09:09:32 -0800</bug_when>
    <thetext>Created attachment 269172
Patch

Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156221</commentid>
    <comment_count>11</comment_count>
      <attachid>268951</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-01-16 13:58:10 -0800</bug_when>
    <thetext>Comment on attachment 268951
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:382
&gt;&gt; +        return isArrowFunction;
&gt; 
&gt; I would write this like:
&gt; ```
&gt; if (match(EOFTOK))
&gt;     return false;
&gt; bool isOpenParen = match(OPENPAREN);
&gt; bool isIdent = match(IDENT);
&gt; if (!isOpenParen &amp;&amp; !isIdent)
&gt;     return false;
&gt; ```
&gt; Then, below, you can use these booleans instead of performing the match(...) twice.
&gt; I say this because I think that LLVM will CSE this, but lets take matters into our own hand.

This condition is refactored</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156236</commentid>
    <comment_count>12</comment_count>
      <attachid>269172</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-16 16:04:51 -0800</bug_when>
    <thetext>Comment on attachment 269172
Patch

Clearing flags on attachment: 269172

Committed r195178: &lt;http://trac.webkit.org/changeset/195178&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156237</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-16 16:04:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268657</attachid>
            <date>2016-01-10 11:20:28 -0800</date>
            <delta_ts>2016-01-13 00:00:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146934-20160110211956.patch</filename>
            <type>text/plain</type>
            <size>9228</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
M2NiZjhlMzYyYTg4NTBjZjY2NzQ2ZWUwOWZiNTIwZmIwMWNjYTU5Li5mYmM1Y2IwZDEzODg0ZDk1
OWYxZmM0YjBjYjQ1MDQ3N2Q2M2YwZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNi0wMS0xMCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNob3VsZCBzdXBwb3J0IHRoZSBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IHN1cHBvcnQgb2YgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJzLCBiZWZvcmUgYXJyb3cgZnVuY3Rp
b24gZXhwZWN0IG9ubHkgc2ltcGxlIHBhcmFtZXRlcnMsCisgICAgICAgIGUuZy4gKCksICh4KSwg
KHgsIHkpIG9yIHggaW4gYXNzaWdtZW50IGV4cHJlc3Npby4gVG8gc3VwcG9ydCBkZXN0cnVjdHVy
aW5nIHBhcmFtZXRlcnMgYWRkZWQgYWRkaXRpb25hbCBjaGVjayB0aGF0IGNoZWNrIAorICAgICAg
ICBmb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbXRlcnMgaWYgY2hlY2sgZG9lcyBub3QgcGFzcyBmb3Ig
c2ltcGxlIHBhcmFtZXRlcnMuCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgor
ICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjppc0Fycm93
RnVuY3Rpb25TaW1wbGVQYXJhbXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmlzQXJyb3dG
dW5jdGlvblBhcmFtdGVycyk6CisKIDIwMTYtMDEtMDkgIFNrYWNoa292IE9sZWtzYW5kciAgPGdz
a2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4
LiBHZXQgcmlkIG9mIEpTQXJyb3dGdW5jdGlvbiBhbmQgdXNlIHN0YW5kYXJkIEpTRnVuY3Rpb24g
Y2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBlMjgwMDdk
OTQ1MDAwNDRlNTg3OTQ1NzIzMDJiMzc3MDNkZDViZDg4Li5kMDFmZTRmMjVkMGM4Yzc2ZTVmMzY3
Mzk5N2UxOGQ5NTUxOGRiNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCkBAIC0yODc3LDcgKzI4NzcsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbgogI2VuZGlm
CiAKICNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIGlmIChpc0Fycm93
RnVuY3Rpb25QYXJhbXRlcnMoKSkKKyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzKGNv
bnRleHQpKQogICAgICAgICByZXR1cm4gcGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihjb250
ZXh0KTsKICNlbmRpZgogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5k
ZXggYTExYjM1YzEwMWZlNWI4NDljYjIzMzA5NmM1NjgzMTM3MDY2Y2FiZi4uN2EwMjNjOGVhNzQ3
NWRiYzdlMjQyMjVjYjE2MTE2YTI2MDVlYzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4g
bWF0Y2goU0VNSUNPTE9OKSB8fCBtYXRjaChDT01NQSkgfHwgbWF0Y2goQ0xPU0VQQVJFTikgfHwg
bWF0Y2goQ0xPU0VCUkFDRSkgfHwgbWF0Y2goQ0xPU0VCUkFDS0VUKSB8fCBtYXRjaChFT0ZUT0sp
IHx8IG1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCk7CiAgICAgfQogICAgIAotICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0Fycm93RnVuY3Rpb25QYXJhbXRlcnMoKQorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0Fycm93RnVuY3Rpb25TaW1wbGVQYXJhbXRlcnMoKQogICAgIHsKICAgICAgICAgYm9v
bCBpc0Fycm93RnVuY3Rpb24gPSBmYWxzZTsKICAgICAgICAgCkBAIC0xMDYyLDYgKzEwNjIsMjUg
QEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlzQXJyb3dGdW5jdGlvbjsKICAgICB9CiAgICAg
CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIGlzQXJyb3dGdW5jdGlvblBh
cmFtdGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKKyAgICB7CisgICAgICAgIGJvb2wgaXNBcnJv
d0Z1bmN0aW9uID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9u
U2ltcGxlUGFyYW10ZXJzKCkpCisgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOwor
ICAgICAgICBlbHNlIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7CisgICAgICAgICAgICAvLyBMZXQn
cyBjaGVjayBpZiB0aGlzIGRlc3RydWN0dXJpbmcgcGFyYW10ZXJzCisgICAgICAgICAgICBTYXZl
UG9pbnQgc2F2ZUFycm93RnVuY3Rpb25Qb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOworICAgICAg
ICAgICAgbmV4dCgpOyAvLyBDb25zdW1lIE9QRU5QQVJFTjsKKyAgICAgICAgICAgIGF1dG8gcGF0
dGVybiA9IHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9uKGNvbnRleHQsIEFz
c2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7CisgICAgICAgICAgICBpc0Fy
cm93RnVuY3Rpb24gPSBwYXR0ZXJuICYmIGNvbnN1bWUoQ0xPU0VQQVJFTikgJiYgbWF0Y2goQVJS
T1dGVU5DVElPTik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQo
c2F2ZUFycm93RnVuY3Rpb25Qb2ludCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJl
dHVybiBpc0Fycm93RnVuY3Rpb247CisgICAgfQorICAgIAogICAgIEFMV0FZU19JTkxJTkUgdW5z
aWduZWQgdG9rZW5TdGFydCgpCiAgICAgewogICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0
aW9uLnN0YXJ0T2Zmc2V0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUyZDc0NTYwNmI5NTM0NDEyZmM2YmU3ODM4NTlhZTY3
OTc4N2QyNTIuLjYxZGUwNzA4MmJkZTg0ZDM0YzViYTM5Y2RmNDA4YjkwZjVjZTFmODUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNSBAQAorMjAxNi0wMS0xMCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNo
a292QGdtYWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFy
cm93IGZ1bmN0aW9uIHNob3VsZCBzdXBwb3J0IHRoZSBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcnMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MzQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzL2Fy
cm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvYXJy
b3dmdW5jdGlvbi1zeW50YXgtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMuanM6CisgICAgICAgICoganMvc2NyaXB0LXRl
c3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LmpzOgorCiAyMDE2LTAxLTA1ICBTa2FjaGtvdiBPbGVr
c2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIEFycm93IGZ1bmN0
aW9uIHN5bnRheC4gQXJyb3cgZnVuY3Rpb24gc3BlY2lmaWMgZmVhdHVyZXMuIExleGljYWwgYmlu
ZCAiYXJndW1lbnRzIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1z
eW50YXgtZXJyb3JzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24t
c3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQKaW5kZXggN2YyZDNkNDRkNzg1ZmIzNmU4NjU3N2Ex
NjQ4OTkxMWI2YWFmZGU0YS4uNzU1M2Y0MWI5ZDE4NDc4MTlmYzU2NzRkYWZkMzJhOWRhMDQxOWFk
NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3Jz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1l
cnJvcnMtZXhwZWN0ZWQudHh0CkBAIC0xMjMsNiArMTIzLDE0IEBAIFBBU1MgdmFyIGFmMj0oeSkK
ID0+eSsxIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4n
LgogUEFTUyB2YXIgYWYzPSh4LCB5KQogPT55KzEgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIHRva2VuICc9PicuCitQQVNTIChbYSwgYl0gPT4gYSArIGIpKFsiYV8iLCAi
Yl8iXSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9Picu
IEV4cGVjdGVkICcpJyB0byBlbmQgYSBjb21wb3VuZCBleHByZXNzaW9uLi4KK1BBU1MgKHthLCBi
fSA9PiBhICsgYikoe2E6ImFfIiwgYjoiYl8ifSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVjdGVkICcpJyB0byBlbmQgYSBjb21wb3VuZCBl
eHByZXNzaW9uLi4KK1BBU1MgKHtjOmEsZDpifSA9PiBhICsgYikoe2M6ImFfIiwgZDoiYl8ifSkg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVj
dGVkICcpJyB0byBlbmQgYSBjb21wb3VuZCBleHByZXNzaW9uLi4KK1BBU1MgKHtjOmIsZDphfSA9
PiBhICsgYikoe2M6ImFfIiwgZDoiYl8ifSkgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVjdGVkICcpJyB0byBlbmQgYSBjb21wb3VuZCBleHBy
ZXNzaW9uLi4KK1BBU1MgdmFyIGFycjEgPSBbYSwgYl0gPT4gYSArIGI7IHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIg
dmFyaWFibGUgZGVjbGFyYXRpb24uLgorUEFTUyB2YXIgYXJyMiA9IHthLCBifSA9PiBhICsgYjsg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVj
dGVkICc7JyBhZnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbi4uCitQQVNTIHZhciBhcnIzID0ge2M6
YSxkOmJ9ID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uLi4KK1BB
U1MgdmFyIGFycjMgPSB7YzpiLGQ6YX0gPT4gYSArIGI7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhF
cnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIgdmFyaWFibGUg
ZGVjbGFyYXRpb24uLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1leHBlY3Rl
ZC50eHQKaW5kZXggYWU2ODhjN2Y4ZWI0YTUwYWIwMGZjMmUxZmU5MmVkZTUxNjg5OWYzMC4uYjcx
NDZjM2E3ZDI2YTc5ODhkNTFlODI2ZDdjZDBkYThmYmE1NzdkZiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWV4cGVjdGVkLnR4dApAQCAtNDAsNiArNDAsMTQg
QEAgUEFTUyAoZnVuY3Rpb24gZnVuY1NlbGZFeGVjQUUxKHZhbHVlKSB7IHZhciBmID0geCA9PiB4
KzE7IHJldHVybiBmKHZhbHVlKTt9KSgxMjMKIFBBU1MgKGZ1bmN0aW9uIGZ1bmNTZWxmRXhlY0FF
Mih2YWx1ZSkgeyB2YXIgZiA9IHggPT4geyB4Kys7IHJldHVybiB4ICsgMTsgfTsgcmV0dXJuIGYo
dmFsdWUpO30pKDEyMyk7IGlzIDEyNQogUEFTUyAoZnVuY3Rpb24gZnVuY1NlbGZFeGVjQUUzKHZh
bHVlKSB7IHZhciBmID0gKHgpID0+IHsgeCsrOyByZXR1cm4geCArIDE7IH07IHJldHVybiBmKHZh
bHVlKTt9KSgxMjMpOyBpcyAxMjUKIFBBU1MgKGZ1bmN0aW9uIGZ1bmNTZWxmRXhlY0FFNCh2YWx1
ZSkgeyB2YXIgZiA9ICh4LCB5KSA9PiB7IHgrKzsgcmV0dXJuIHggKyB5OyB9OyByZXR1cm4gZih2
YWx1ZSwgdmFsdWUgKiAyKTt9KSgxMjMpOyBpcyAzNzAKK1BBU1MgKChbYSwgYl0pID0+IGEgKyBi
KShbImFfIiwgImJfIl0pIGlzICJhX2JfIgorUEFTUyAoKHthLCBifSkgPT4gYSArIGIpKHthOiJh
XyIsIGI6ImJfIn0pIGlzICJhX2JfIgorUEFTUyAoKHtjOmEsIGQ6Yn0pID0+IGEgKyBiKSh7Yzoi
YV8iLCBkOiJiXyJ9KSBpcyAiYV9iXyIKK1BBU1MgKCh7YzpiLCBkOmF9KSA9PiBhICsgYikoe2M6
ImFfIiwgZDoiYl8ifSkgaXMgImJfYV8iCitQQVNTIGFycjEoWyJhXyIsICJiXyJdKSBpcyAiYV9i
XyIKK1BBU1MgYXJyMih7YToiYV8iLCBiOiJiXyJ9KSBpcyAiYV9iXyIKK1BBU1MgYXJyMyh7Yzoi
YV8iLCBkOiJiXyJ9KSBpcyAiYV9iXyIKK1BBU1MgYXJyNCh7YzoiYV8iLCBkOiJiXyJ9KSBpcyAi
Yl9hXyIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3lu
dGF4LWVycm9ycy5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LXN5bnRheC1lcnJvcnMuanMKaW5kZXggODQxMGM1MzU1NjNmNzExMmI2M2JmM2JiOGI3NTZlMjUy
Yjg5ZjA2Mi4uNWEyMjYzNGM4NzUyNTI3ZTM4NDc0NTJhZjM2NjVhZDY3OGUyZmYxMiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVy
cm9ycy5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1z
eW50YXgtZXJyb3JzLmpzCkBAIC0zOCw0ICszOCwxNCBAQCBzaG91bGRUaHJvdygidmFyIGFmMT15
XG49PnkrMSIpOwogc2hvdWxkVGhyb3coInZhciBhZjI9KHkpXG49PnkrMSIpOwogc2hvdWxkVGhy
b3coInZhciBhZjM9KHgsIHkpXG49PnkrMSIpOwogCitzaG91bGRUaHJvdygnKFthLCBiXSA9PiBh
ICsgYikoWyJhXyIsICJiXyJdKScgKTsKK3Nob3VsZFRocm93KCcoe2EsIGJ9ID0+IGEgKyBiKSh7
YToiYV8iLCBiOiJiXyJ9KScpOworc2hvdWxkVGhyb3coJyh7YzphLGQ6Yn0gPT4gYSArIGIpKHtj
OiJhXyIsIGQ6ImJfIn0pJyk7CitzaG91bGRUaHJvdygnKHtjOmIsZDphfSA9PiBhICsgYikoe2M6
ImFfIiwgZDoiYl8ifSknKTsKKworc2hvdWxkVGhyb3coJ3ZhciBhcnIxID0gW2EsIGJdID0+IGEg
KyBiOycpOworc2hvdWxkVGhyb3coJ3ZhciBhcnIyID0ge2EsIGJ9ID0+IGEgKyBiOycpOworc2hv
dWxkVGhyb3coJ3ZhciBhcnIzID0ge2M6YSxkOmJ9ID0+IGEgKyBiOycpOworc2hvdWxkVGhyb3co
J3ZhciBhcnIzID0ge2M6YixkOmF9ID0+IGEgKyBiOycpOworCiB2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJv
d2Z1bmN0aW9uLXN5bnRheC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1
bmN0aW9uLXN5bnRheC5qcwppbmRleCA0MmFjMzViY2E0ZGE2YzFiY2ExMzY2MmZlZGFmYjc1NmNi
MDgwNzYyLi43YWNhN2NkYWI1ZjlkODNmYjBkZGQ0MmFiZjdhNDM2ZjEzYzkyNTE3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXguanMK
KysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4Lmpz
CkBAIC03OSw0ICs3OSwyMSBAQCBzaG91bGRCZSgnKGZ1bmN0aW9uIGZ1bmNTZWxmRXhlY0FFMyh2
YWx1ZSkgeyB2YXIgZiA9ICh4KSA9PiB7IHgrKzsgcmV0dXJuIHggKyAxOwogCiBzaG91bGRCZSgn
KGZ1bmN0aW9uIGZ1bmNTZWxmRXhlY0FFNCh2YWx1ZSkgeyB2YXIgZiA9ICh4LCB5KSA9PiB7IHgr
KzsgcmV0dXJuIHggKyB5OyB9OyByZXR1cm4gZih2YWx1ZSwgdmFsdWUgKiAyKTt9KSgxMjMpOycs
ICczNzAnKTsKIAorc2hvdWxkQmUoJygoW2EsIGJdKSA9PiBhICsgYikoWyJhXyIsICJiXyJdKScs
ICciYV9iXyInKTsKK3Nob3VsZEJlKCcoKHthLCBifSkgPT4gYSArIGIpKHthOiJhXyIsIGI6ImJf
In0pJywgJyJhX2JfIicpOworc2hvdWxkQmUoJygoe2M6YSwgZDpifSkgPT4gYSArIGIpKHtjOiJh
XyIsIGQ6ImJfIn0pJywgJyJhX2JfIicpOworc2hvdWxkQmUoJygoe2M6YiwgZDphfSkgPT4gYSAr
IGIpKHtjOiJhXyIsIGQ6ImJfIn0pJywgJyJiX2FfIicpOworCit2YXIgYXJyMSA9IChbYSwgYl0p
ID0+IGEgKyBiOworc2hvdWxkQmUoJ2FycjEoWyJhXyIsICJiXyJdKScsICciYV9iXyInKTsKKwor
dmFyIGFycjIgPSAoe2EsIGJ9KSA9PiBhICsgYjsKK3Nob3VsZEJlKCdhcnIyKHthOiJhXyIsIGI6
ImJfIn0pJywgJyJhX2JfIicpOworCit2YXIgYXJyMyA9ICh7YzphLCBkOmJ9KSA9PiBhICsgYjsK
K3Nob3VsZEJlKCdhcnIzKHtjOiJhXyIsIGQ6ImJfIn0pJywgJyJhX2JfIicpOworCit2YXIgYXJy
NCA9ICh7YzpiLCBkOmF9KSA9PiBhICsgYjsKK3Nob3VsZEJlKCdhcnI0KHtjOiJhXyIsIGQ6ImJf
In0pJywgJyJiX2FfIicpOworCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268861</attachid>
            <date>2016-01-13 00:00:40 -0800</date>
            <delta_ts>2016-01-14 02:19:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146934-20160113100009.patch</filename>
            <type>text/plain</type>
            <size>11871</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
M2NiZjhlMzYyYTg4NTBjZjY2NzQ2ZWUwOWZiNTIwZmIwMWNjYTU5Li5lMzZmNWYyMDM0MTQ5MGMz
ZmIyNzgyOWJkYzJjNjUzYWQyYTM1ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNi0wMS0xMiAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNob3VsZCBzdXBwb3J0IHRoZSBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IHN1cHBvcnQgb2YgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJzLCBiZWZvcmUgYXJyb3cgZnVuY3Rp
b24gZXhwZWN0IG9ubHkgc2ltcGxlIHBhcmFtZXRlcnMsCisgICAgICAgIGUuZy4gKCksICh4KSwg
KHgsIHkpIG9yIHggaW4gYXNzaWdtZW50IGV4cHJlc3Npby4gVG8gc3VwcG9ydCBkZXN0cnVjdHVy
aW5nIHBhcmFtZXRlcnMgYWRkZWQKKyAgICAgICAgYWRkaXRpb25hbCBjaGVjayB0aGF0IGNoZWNr
IGZvciBkZXN0cnVjdHVyaW5nIHBhcmFtdGVycyBpZiBjaGVjayBkb2VzIG5vdCBwYXNzIGZvciBz
aW1wbGUgcGFyYW1ldGVycy4KKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik6Cisg
ICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmlzQXJyb3dG
dW5jdGlvbk5vT3JPbmVQYXJhbXRlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6aXNBcnJvd0Z1
bmN0aW9uUGFyYW10ZXJzKToKKwogMjAxNi0wMS0wOSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3Nr
YWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXgu
IEdldCByaWQgb2YgSlNBcnJvd0Z1bmN0aW9uIGFuZCB1c2Ugc3RhbmRhcmQgSlNGdW5jdGlvbiBj
bGFzcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGUyODAwN2Q5
NDUwMDA0NGU1ODc5NDU3MjMwMmIzNzcwM2RkNWJkODguLmQwMWZlNGYyNWQwYzhjNzZlNWYzNjcz
OTk3ZTE4ZDk1NTE4ZGI0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTI4NzcsNyArMjg3Nyw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgaWYgKGlzQXJyb3dG
dW5jdGlvblBhcmFtdGVycygpKQorICAgIGlmIChpc0Fycm93RnVuY3Rpb25QYXJhbXRlcnMoY29u
dGV4dCkpCiAgICAgICAgIHJldHVybiBwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKGNvbnRl
eHQpOwogI2VuZGlmCiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRl
eCBhMTFiMzVjMTAxZmU1Yjg0OWNiMjMzMDk2YzU2ODMxMzcwNjZjYWJmLi5jYTUwNDQ5NzAxMTNi
Nzc1ODhhMWQ5NWFjMDEzOWY2NGMwYjViMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKQEAgLTEwMjgsMzcgKzEwMjgsNDkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJu
IG1hdGNoKFNFTUlDT0xPTikgfHwgbWF0Y2goQ09NTUEpIHx8IG1hdGNoKENMT1NFUEFSRU4pIHx8
IG1hdGNoKENMT1NFQlJBQ0UpIHx8IG1hdGNoKENMT1NFQlJBQ0tFVCkgfHwgbWF0Y2goRU9GVE9L
KSB8fCBtX2xleGVyLT5wcmV2VGVybWluYXRvcigpOwogICAgIH0KICAgICAKLSAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzKCkKKyAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uTm9Pck9uZVBhcmFtdGVyKCkKICAgICB7CiAgICAgICAgIGJv
b2wgaXNBcnJvd0Z1bmN0aW9uID0gZmFsc2U7CiAgICAgICAgIAotICAgICAgICBpZiAobWF0Y2go
RU9GVE9LKSkKKyAgICAgICAgaWYgKG1hdGNoKEVPRlRPSykgfHwgKCFtYXRjaChJREVOVCkgJiYg
IW1hdGNoKE9QRU5QQVJFTikpKQogICAgICAgICAgICAgcmV0dXJuIGlzQXJyb3dGdW5jdGlvbjsK
ICAgICAgICAgCiAgICAgICAgIFNhdmVQb2ludCBzYXZlQXJyb3dGdW5jdGlvblBvaW50ID0gY3Jl
YXRlU2F2ZVBvaW50KCk7CisgICAgICAgIGlmIChtYXRjaChJREVOVCkpCisgICAgICAgICAgICBp
c0Fycm93RnVuY3Rpb24gPSBjb25zdW1lKElERU5UKSAmJiBtYXRjaChBUlJPV0ZVTkNUSU9OKTsK
KyAgICAgICAgZWxzZSBpZiAoY29uc3VtZShPUEVOUEFSRU4pICYmIGNvbnN1bWUoQ0xPU0VQQVJF
TikpCisgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSBtYXRjaChBUlJPV0ZVTkNUSU9OKTsK
ICAgICAgICAgCi0gICAgICAgIGlmIChjb25zdW1lKE9QRU5QQVJFTikpIHsKLSAgICAgICAgICAg
IGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzID0gdHJ1ZTsKKyAgICAgICAgcmVzdG9yZVNh
dmVQb2ludChzYXZlQXJyb3dGdW5jdGlvblBvaW50KTsKKyAgICAgICAgCisgICAgICAgIHJldHVy
biBpc0Fycm93RnVuY3Rpb247CisgICAgfQorCisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtdGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkK
KyAgICB7CisgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gZmFsc2U7CisgICAgICAgIAor
ICAgICAgICBpZiAobWF0Y2goRU9GVE9LKSB8fCAoIW1hdGNoKE9QRU5QQVJFTikgJiYgIW1hdGNo
KElERU5UKSkpCisgICAgICAgICAgICByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uOworICAgICAgICAK
KyAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlvbk5vT3JPbmVQYXJhbXRlcigpKQorICAgICAgICAg
ICAgaXNBcnJvd0Z1bmN0aW9uID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAobWF0Y2goT1BFTlBB
UkVOKSkgeworICAgICAgICAgICAgU2F2ZVBvaW50IHNhdmVBcnJvd0Z1bmN0aW9uUG9pbnQgPSBj
cmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAgICAgIG5leHQoKTsKKworICAgICAgICAgICAgLy8g
V2UgbWFrZSBmYWtlIHNjb3BlLCBvdGhlcndpc2UgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzIHdpbGwg
YWRkIHZhcmlhYmxlIHRvIGN1cnJlbnQgc2NvcGUgdGhhdCBsZWFkIHRvIGVycm9ycworICAgICAg
ICAgICAgQXV0b1BvcFNjb3BlUmVmIGZha2VTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAg
ICAgICAgICBmYWtlU2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgd2hpbGUgKGNvbnN1
bWUoSURFTlQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoQ09NTUEpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghbWF0Y2goSURFTlQpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpc0Fycm93RnVuY3Rpb25QYXJhbXRlcnMgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgdW5zaWduZWQgcGFyYW1ldGVyc0NvdW50ID0gMTsKKyAgICAgICAgICAgIGlzQXJyb3dGdW5j
dGlvbiA9IHBhcnNlRm9ybWFsUGFyYW1ldGVycyhjb250ZXh0LCBjb250ZXh0LmNyZWF0ZUZvcm1h
bFBhcmFtZXRlckxpc3QoKSwgcGFyYW1ldGVyc0NvdW50KSAmJiBjb25zdW1lKENMT1NFUEFSRU4p
ICYmIG1hdGNoKEFSUk9XRlVOQ1RJT04pOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAo
aXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUo
Q0xPU0VQQVJFTikgJiYgbWF0Y2goQVJST1dGVU5DVElPTikpCi0gICAgICAgICAgICAgICAgICAg
IGlzQXJyb3dGdW5jdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBp
ZiAoY29uc3VtZShJREVOVCkgJiYgbWF0Y2goQVJST1dGVU5DVElPTikpCi0gICAgICAgICAgICBp
c0Fycm93RnVuY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgcG9wU2NvcGUoZmFrZVNjb3BlLCBU
cmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlQXJyb3dGdW5jdGlvblBvaW50KTsKKyAgICAgICAg
fQogCi0gICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZUFycm93RnVuY3Rpb25Qb2ludCk7Ci0g
ICAgICAgIAogICAgICAgICByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uOwogICAgIH0KICAgICAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCA1MmQ3NDU2MDZiOTUzNDQxMmZjNmJlNzgzODU5YWU2Nzk3ODdkMjUyLi42OGZmYzg0YTAw
NmVmYTA5NmZjNjliZGQ0NTBmMzdiY2Q4ODE1OTcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTYtMDEtMTIgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBzaG91bGQg
c3VwcG9ydCB0aGUgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTM0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1l
cnJvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50
YXgtZXJyb3JzLmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5
bnRheC5qczoKKwogMjAxNi0wMS0wNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgImFyZ3VtZW50cyIKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhwZWN0
ZWQudHh0CmluZGV4IDdmMmQzZDQ0ZDc4NWZiMzZlODY1NzdhMTY0ODk5MTFiNmFhZmRlNGEuLjc1
NTNmNDFiOWQxODQ3ODE5ZmM1Njc0ZGFmZDMyYTlkYTA0MTlhZDcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLWV4cGVjdGVkLnR4dApA
QCAtMTIzLDYgKzEyMywxNCBAQCBQQVNTIHZhciBhZjI9KHkpCiA9PnkrMSB0aHJldyBleGNlcHRp
b24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz0+Jy4KIFBBU1MgdmFyIGFmMz0oeCwg
eSkKID0+eSsxIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAn
PT4nLgorUEFTUyAoW2EsIGJdID0+IGEgKyBiKShbImFfIiwgImJfIl0pIHRocmV3IGV4Y2VwdGlv
biBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnKScgdG8gZW5k
IGEgY29tcG91bmQgZXhwcmVzc2lvbi4uCitQQVNTICh7YSwgYn0gPT4gYSArIGIpKHthOiJhXyIs
IGI6ImJfIn0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAn
PT4nLiBFeHBlY3RlZCAnKScgdG8gZW5kIGEgY29tcG91bmQgZXhwcmVzc2lvbi4uCitQQVNTICh7
YzphLGQ6Yn0gPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0pIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnKScgdG8gZW5kIGEgY29t
cG91bmQgZXhwcmVzc2lvbi4uCitQQVNTICh7YzpiLGQ6YX0gPT4gYSArIGIpKHtjOiJhXyIsIGQ6
ImJfIn0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4n
LiBFeHBlY3RlZCAnKScgdG8gZW5kIGEgY29tcG91bmQgZXhwcmVzc2lvbi4uCitQQVNTIHZhciBh
cnIxID0gW2EsIGJdID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhw
ZWN0ZWQgdG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9u
Li4KK1BBU1MgdmFyIGFycjIgPSB7YSwgYn0gPT4gYSArIGI7IHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIgdmFyaWFi
bGUgZGVjbGFyYXRpb24uLgorUEFTUyB2YXIgYXJyMyA9IHtjOmEsZDpifSA9PiBhICsgYjsgdGhy
ZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVjdGVk
ICc7JyBhZnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbi4uCitQQVNTIHZhciBhcnIzID0ge2M6Yixk
OmF9ID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uLi4KIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXhwZWN0ZWQudHh0CmluZGV4IGFlNjg4Yzdm
OGViNGE1MGFiMDBmYzJlMWZlOTJlZGU1MTY4OTlmMzAuLmJhNzI3Zjk4MTM1NDYxZWEzZDgxMTE1
NzAwZjg5ZDI2MmJiOWQxNmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rp
b24tc3ludGF4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9u
LXN5bnRheC1leHBlY3RlZC50eHQKQEAgLTQwLDYgKzQwLDIwIEBAIFBBU1MgKGZ1bmN0aW9uIGZ1
bmNTZWxmRXhlY0FFMSh2YWx1ZSkgeyB2YXIgZiA9IHggPT4geCsxOyByZXR1cm4gZih2YWx1ZSk7
fSkoMTIzCiBQQVNTIChmdW5jdGlvbiBmdW5jU2VsZkV4ZWNBRTIodmFsdWUpIHsgdmFyIGYgPSB4
ID0+IHsgeCsrOyByZXR1cm4geCArIDE7IH07IHJldHVybiBmKHZhbHVlKTt9KSgxMjMpOyBpcyAx
MjUKIFBBU1MgKGZ1bmN0aW9uIGZ1bmNTZWxmRXhlY0FFMyh2YWx1ZSkgeyB2YXIgZiA9ICh4KSA9
PiB7IHgrKzsgcmV0dXJuIHggKyAxOyB9OyByZXR1cm4gZih2YWx1ZSk7fSkoMTIzKTsgaXMgMTI1
CiBQQVNTIChmdW5jdGlvbiBmdW5jU2VsZkV4ZWNBRTQodmFsdWUpIHsgdmFyIGYgPSAoeCwgeSkg
PT4geyB4Kys7IHJldHVybiB4ICsgeTsgfTsgcmV0dXJuIGYodmFsdWUsIHZhbHVlICogMik7fSko
MTIzKTsgaXMgMzcwCitQQVNTICgoW2EsIGJdKSA9PiBhICsgYikoWyJhXyIsICJiXyJdKSBpcyAi
YV9iXyIKK1BBU1MgKCh7YSwgYn0pID0+IGEgKyBiKSh7YToiYV8iLCBiOiJiXyJ9KSBpcyAiYV9i
XyIKK1BBU1MgKCh7YzphLCBkOmJ9KSA9PiBhICsgYikoe2M6ImFfIiwgZDoiYl8ifSkgaXMgImFf
Yl8iCitQQVNTICgoe2M6YiwgZDphfSkgPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0pIGlzICJi
X2FfIgorUEFTUyAoKHgsIHksIHtjOmIsIGQ6YX0pID0+IHggKyB5ICsgYSArIGIpKCJ4XyIsICJ5
XyIsIHtjOiJhXyIsIGQ6ImJfIn0pIGlzICJ4X3lfYl9hXyIKK1BBU1MgKCh7YzpiLCBkOmF9LCB4
LCB5KSA9PiB4ICsgeSArIGEgKyBiKSh7YzoiYV8iLCBkOiJiXyJ9LCAieF8iLCAieV8iKSBpcyAi
eF95X2JfYV8iCitQQVNTICgoeCwgeSwge2M6YiwgZDphfSwgW2UsIGZdKSA9PiB4ICsgeSArIGEg
KyBiICsgZSArIGYpKCJ4XyIsICJ5XyIsIHtjOiJhXyIsIGQ6ImJfIn0sIFsiZV8iLCAiZl8iXSkg
aXMgInhfeV9iX2FfZV9mXyIKK1BBU1MgYXJyMShbImFfIiwgImJfIl0pIGlzICJhX2JfIgorUEFT
UyBhcnIyKHthOiJhXyIsIGI6ImJfIn0pIGlzICJhX2JfIgorUEFTUyBhcnIzKHtjOiJhXyIsIGQ6
ImJfIn0pIGlzICJhX2JfIgorUEFTUyBhcnI0KHtjOiJhXyIsIGQ6ImJfIn0pIGlzICJiX2FfIgor
UEFTUyBhcnI1KCJ4XyIsICJ5XyIsIHtjOiJhXyIsIGQ6ImJfIn0pIGlzICJ4X3lfYl9hXyIKK1BB
U1MgYXJyNih7YzoiYV8iLCBkOiJiXyJ9LCAieF8iLCAieV8iKSBpcyAieF95X2JfYV8iCitQQVNT
IGFycjcoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8ifSwgWyJlXyIsICJmXyJdKSBpcyAieF95
X2JfYV9lX2ZfIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlv
bi1zeW50YXgtZXJyb3JzLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVu
Y3Rpb24tc3ludGF4LWVycm9ycy5qcwppbmRleCA4NDEwYzUzNTU2M2Y3MTEyYjYzYmYzYmI4Yjc1
NmUyNTJiODlmMDYyLi41YTIyNjM0Yzg3NTI1MjdlMzg0NzQ1MmFmMzY2NWFkNjc4ZTJmZjEyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50
YXgtZXJyb3JzLmpzCisrKyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0
aW9uLXN5bnRheC1lcnJvcnMuanMKQEAgLTM4LDQgKzM4LDE0IEBAIHNob3VsZFRocm93KCJ2YXIg
YWYxPXlcbj0+eSsxIik7CiBzaG91bGRUaHJvdygidmFyIGFmMj0oeSlcbj0+eSsxIik7CiBzaG91
bGRUaHJvdygidmFyIGFmMz0oeCwgeSlcbj0+eSsxIik7CiAKK3Nob3VsZFRocm93KCcoW2EsIGJd
ID0+IGEgKyBiKShbImFfIiwgImJfIl0pJyApOworc2hvdWxkVGhyb3coJyh7YSwgYn0gPT4gYSAr
IGIpKHthOiJhXyIsIGI6ImJfIn0pJyk7CitzaG91bGRUaHJvdygnKHtjOmEsZDpifSA9PiBhICsg
Yikoe2M6ImFfIiwgZDoiYl8ifSknKTsKK3Nob3VsZFRocm93KCcoe2M6YixkOmF9ID0+IGEgKyBi
KSh7YzoiYV8iLCBkOiJiXyJ9KScpOworCitzaG91bGRUaHJvdygndmFyIGFycjEgPSBbYSwgYl0g
PT4gYSArIGI7Jyk7CitzaG91bGRUaHJvdygndmFyIGFycjIgPSB7YSwgYn0gPT4gYSArIGI7Jyk7
CitzaG91bGRUaHJvdygndmFyIGFycjMgPSB7YzphLGQ6Yn0gPT4gYSArIGI7Jyk7CitzaG91bGRU
aHJvdygndmFyIGFycjMgPSB7YzpiLGQ6YX0gPT4gYSArIGI7Jyk7CisKIHZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3Rz
L2Fycm93ZnVuY3Rpb24tc3ludGF4LmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fy
cm93ZnVuY3Rpb24tc3ludGF4LmpzCmluZGV4IDQyYWMzNWJjYTRkYTZjMWJjYTEzNjYyZmVkYWZi
NzU2Y2IwODA3NjIuLjI4ZDg5ZjZkNmI0MzcwMDhhZmNmODkwZTJiOGFmMDhmYTcxOWI3Y2MgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRh
eC5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50
YXguanMKQEAgLTc5LDQgKzc5LDM0IEBAIHNob3VsZEJlKCcoZnVuY3Rpb24gZnVuY1NlbGZFeGVj
QUUzKHZhbHVlKSB7IHZhciBmID0gKHgpID0+IHsgeCsrOyByZXR1cm4geCArIDE7CiAKIHNob3Vs
ZEJlKCcoZnVuY3Rpb24gZnVuY1NlbGZFeGVjQUU0KHZhbHVlKSB7IHZhciBmID0gKHgsIHkpID0+
IHsgeCsrOyByZXR1cm4geCArIHk7IH07IHJldHVybiBmKHZhbHVlLCB2YWx1ZSAqIDIpO30pKDEy
Myk7JywgJzM3MCcpOwogCitzaG91bGRCZSgnKChbYSwgYl0pID0+IGEgKyBiKShbImFfIiwgImJf
Il0pJywgJyJhX2JfIicpOworc2hvdWxkQmUoJygoe2EsIGJ9KSA9PiBhICsgYikoe2E6ImFfIiwg
YjoiYl8ifSknLCAnImFfYl8iJyk7CitzaG91bGRCZSgnKCh7YzphLCBkOmJ9KSA9PiBhICsgYiko
e2M6ImFfIiwgZDoiYl8ifSknLCAnImFfYl8iJyk7CitzaG91bGRCZSgnKCh7YzpiLCBkOmF9KSA9
PiBhICsgYikoe2M6ImFfIiwgZDoiYl8ifSknLCAnImJfYV8iJyk7CitzaG91bGRCZSgnKCh4LCB5
LCB7YzpiLCBkOmF9KSA9PiB4ICsgeSArIGEgKyBiKSgieF8iLCAieV8iLCB7YzoiYV8iLCBkOiJi
XyJ9KScsICcieF95X2JfYV8iJyk7CitzaG91bGRCZSgnKCh7YzpiLCBkOmF9LCB4LCB5KSA9PiB4
ICsgeSArIGEgKyBiKSh7YzoiYV8iLCBkOiJiXyJ9LCAieF8iLCAieV8iKScsICcieF95X2JfYV8i
Jyk7CitzaG91bGRCZSgnKCh4LCB5LCB7YzpiLCBkOmF9LCBbZSwgZl0pID0+IHggKyB5ICsgYSAr
IGIgKyBlICsgZikoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8ifSwgWyJlXyIsICJmXyJdKScs
ICcieF95X2JfYV9lX2ZfIicpOworCisKK3ZhciBhcnIxID0gKFthLCBiXSkgPT4gYSArIGI7Citz
aG91bGRCZSgnYXJyMShbImFfIiwgImJfIl0pJywgJyJhX2JfIicpOworCit2YXIgYXJyMiA9ICh7
YSwgYn0pID0+IGEgKyBiOworc2hvdWxkQmUoJ2FycjIoe2E6ImFfIiwgYjoiYl8ifSknLCAnImFf
Yl8iJyk7CisKK3ZhciBhcnIzID0gKHtjOmEsIGQ6Yn0pID0+IGEgKyBiOworc2hvdWxkQmUoJ2Fy
cjMoe2M6ImFfIiwgZDoiYl8ifSknLCAnImFfYl8iJyk7CisKK3ZhciBhcnI0ID0gKHtjOmIsIGQ6
YX0pID0+IGEgKyBiOworc2hvdWxkQmUoJ2FycjQoe2M6ImFfIiwgZDoiYl8ifSknLCAnImJfYV8i
Jyk7CisKK3ZhciBhcnI1ID0gKHgsIHksIHtjOmIsIGQ6YX0pID0+IHggKyB5ICsgYSArIGI7Citz
aG91bGRCZSgnYXJyNSgieF8iLCAieV8iLCB7YzoiYV8iLCBkOiJiXyJ9KScsICcieF95X2JfYV8i
Jyk7CisKK3ZhciBhcnI2ID0gKHtjOmIsIGQ6YX0sIHgsIHkpID0+IHggKyB5ICsgYSArIGI7Citz
aG91bGRCZSgnYXJyNih7YzoiYV8iLCBkOiJiXyJ9LCAieF8iLCAieV8iKScsICcieF95X2JfYV8i
Jyk7CisKK3ZhciBhcnI3ID0gKHgsIHksIHtjOmIsIGQ6YX0sIFtlLCBmXSkgPT4geCArIHkgKyBh
ICsgYiArIGUgKyBmOworc2hvdWxkQmUoJ2FycjcoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8i
fSwgWyJlXyIsICJmXyJdKScsICcieF95X2JfYV9lX2ZfIicpOworCiB2YXIgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268951</attachid>
            <date>2016-01-14 02:19:30 -0800</date>
            <delta_ts>2016-01-16 09:09:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146934-20160114121859.patch</filename>
            <type>text/plain</type>
            <size>13378</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
M2NiZjhlMzYyYTg4NTBjZjY2NzQ2ZWUwOWZiNTIwZmIwMWNjYTU5Li5kYjIyYWZjZGZmZGE2MjVj
NmI2MTVjMDYxNzYwMDkyNWMwOTE0OTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNi0wMS0xNCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNob3VsZCBzdXBwb3J0IHRoZSBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IHN1cHBvcnQgb2YgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJzLCBiZWZvcmUgYXJyb3cgZnVuY3Rp
b24gZXhwZWN0IG9ubHkgc2ltcGxlIHBhcmFtZXRlcnMsCisgICAgICAgIGUuZy4gKCksICh4KSwg
KHgsIHkpIG9yIHggaW4gYXNzaWdtZW50IGV4cHJlc3Npby4gVG8gc3VwcG9ydCBkZXN0cnVjdHVy
aW5nIHBhcmFtZXRlcnMgYWRkZWQKKyAgICAgICAgYWRkaXRpb25hbCBjaGVjayB0aGF0IGNoZWNr
IGZvciBkZXN0cnVjdHVyaW5nIHBhcmFtdGVycyBpZiBjaGVjayBkb2VzIG5vdCBwYXNzIGZvciBz
aW1wbGUgcGFyYW1ldGVycy4KKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycyk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisKIDIwMTYtMDEtMDkgIFNrYWNoa292IE9s
ZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gQXJyb3cgZnVu
Y3Rpb24gc3ludGF4LiBHZXQgcmlkIG9mIEpTQXJyb3dGdW5jdGlvbiBhbmQgdXNlIHN0YW5kYXJk
IEpTRnVuY3Rpb24gY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApp
bmRleCBlMjgwMDdkOTQ1MDAwNDRlNTg3OTQ1NzIzMDJiMzc3MDNkZDViZDg4Li4yZjAxNGI0NGRl
ZWI0YWVkZjJiMTJiZDg1ZjE1YzZlNjMxNjQ0ZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCkBAIC0zNzQsNiArMzc0LDQwIEBAIHZvaWQgUGFyc2VyPExleGVyVHlw
ZT46OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBEZWNs
YXJhCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Citib29sIFBhcnNlcjxMZXhl
clR5cGU+Ojppc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCkKK3sKKyAgICBib29sIGlzQXJyb3dG
dW5jdGlvbiA9IGZhbHNlOworICAgICAgICAKKyAgICBpZiAobWF0Y2goRU9GVE9LKSB8fCAoIW1h
dGNoKE9QRU5QQVJFTikgJiYgIW1hdGNoKElERU5UKSkpCisgICAgICAgIHJldHVybiBpc0Fycm93
RnVuY3Rpb247CisKKyAgICBTYXZlUG9pbnQgc2F2ZUFycm93RnVuY3Rpb25Qb2ludCA9IGNyZWF0
ZVNhdmVQb2ludCgpOworICAgICAgICAKKyAgICBpZiAobWF0Y2goSURFTlQpKSB7CisgICAgICAg
IGlzQXJyb3dGdW5jdGlvbiA9IGNvbnN1bWUoSURFTlQpICYmIG1hdGNoKEFSUk9XRlVOQ1RJT04p
OworICAgIH0gZWxzZSBpZiAoY29uc3VtZShPUEVOUEFSRU4pKSB7CisgICAgICAgIGlmIChtYXRj
aChDTE9TRVBBUkVOKSkKKyAgICAgICAgICAgIGlzQXJyb3dGdW5jdGlvbiA9IGNvbnN1bWUoQ0xP
U0VQQVJFTikgJiYgbWF0Y2goQVJST1dGVU5DVElPTik7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgU3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwg
bV9sZXhlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgLy8gV2UgbWFrZSBmYWtlIHNjb3BlLCBv
dGhlcndpc2UgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzIHdpbGwgYWRkIHZhcmlhYmxlIHRvIGN1cnJl
bnQgc2NvcGUgdGhhdCBsZWFkIHRvIGVycm9ycworICAgICAgICAgICAgQXV0b1BvcFNjb3BlUmVm
IGZha2VTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgICAgICBmYWtlU2NvcGUtPnNl
dFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKTsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlcnNDb3VudCA9IDA7
CisgICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoc3lu
dGF4Q2hlY2tlciwgc3ludGF4Q2hlY2tlci5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCksIHBh
cmFtZXRlcnNDb3VudCkgJiYgY29uc3VtZShDTE9TRVBBUkVOKSAmJiBtYXRjaChBUlJPV0ZVTkNU
SU9OKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcFNjb3BlKGZha2VTY29wZSwg
c3ludGF4Q2hlY2tlci5OZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgICAgICB9CisgICAgfQor
ICAgICAgICAKKyAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVBcnJvd0Z1bmN0aW9uUG9pbnQpOwor
ICAgICAgICAKKyAgICByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uOworfQorICAgIAorCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6YWxsb3dBdXRv
bWF0aWNTZW1pY29sb24oKQogewogICAgIHJldHVybiBtYXRjaChDTE9TRUJSQUNFKSB8fCBtYXRj
aChFT0ZUT0spIHx8IG1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCk7CkBAIC0yODc3LDcgKzI5MTEs
NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoRVM2X0FS
Uk9XRlVOQ1RJT05fU1lOVEFYKQotICAgIGlmIChpc0Fycm93RnVuY3Rpb25QYXJhbXRlcnMoKSkK
KyAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycygpKQogICAgICAgICByZXR1cm4gcGFy
c2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihjb250ZXh0KTsKICNlbmRpZgogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTExYjM1YzEwMWZlNWI4NDljYjIzMzA5
NmM1NjgzMTM3MDY2Y2FiZi4uMzI5ZWRiZTcyNTM1ZjMyOTNiYWYzZmExNWNiZTViY2FlY2EyOTY3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xMDI3LDQxICsxMDI3
LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtYXRjaChTRU1JQ09MT04pIHx8
IG1hdGNoKENPTU1BKSB8fCBtYXRjaChDTE9TRVBBUkVOKSB8fCBtYXRjaChDTE9TRUJSQUNFKSB8
fCBtYXRjaChDTE9TRUJSQUNLRVQpIHx8IG1hdGNoKEVPRlRPSykgfHwgbV9sZXhlci0+cHJldlRl
cm1pbmF0b3IoKTsKICAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dG
dW5jdGlvblBhcmFtdGVycygpCi0gICAgewotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9
IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgaWYgKG1hdGNoKEVPRlRPSykpCi0gICAgICAgICAg
ICByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uOwotICAgICAgICAKLSAgICAgICAgU2F2ZVBvaW50IHNh
dmVBcnJvd0Z1bmN0aW9uUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKLSAgICAgICAgCi0gICAg
ICAgIGlmIChjb25zdW1lKE9QRU5QQVJFTikpIHsKLSAgICAgICAgICAgIGJvb2wgaXNBcnJvd0Z1
bmN0aW9uUGFyYW10ZXJzID0gdHJ1ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgd2hpbGUg
KGNvbnN1bWUoSURFTlQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoQ09NTUEpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2goSURFTlQpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpc0Fycm93RnVuY3Rpb25QYXJhbXRlcnMgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoQ0xPU0VQQVJFTikgJiYgbWF0Y2goQVJST1dGVU5D
VElPTikpCi0gICAgICAgICAgICAgICAgICAgIGlzQXJyb3dGdW5jdGlvbiA9IHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoY29uc3VtZShJREVOVCkgJiYgbWF0Y2goQVJS
T1dGVU5DVElPTikpCi0gICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOwogCi0gICAg
ICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZUFycm93RnVuY3Rpb25Qb2ludCk7Ci0gICAgICAgIAot
ICAgICAgICByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uOwotICAgIH0KLSAgICAKICAgICBBTFdBWVNf
SU5MSU5FIHVuc2lnbmVkIHRva2VuU3RhcnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9r
ZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKQEAgLTEyNTgsNiArMTIyNCw4IEBAIHByaXZhdGU6
CiAgICAgZW51bSBjbGFzcyBGdW5jdGlvbkRlZmluaXRpb25UeXBlIHsgRXhwcmVzc2lvbiwgRGVj
bGFyYXRpb24sIE1ldGhvZCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJl
cXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3Bl
LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlw
ZSk7CiAgICAgCisgICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRl
cnMoKTsKKyAgICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1v
ZGUsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFs
UGFyYW1ldGVyTGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MmQ3NDU2MDZiOTUzNDQxMmZjNmJlNzgzODU5YWU2Nzk3ODdkMjUyLi5jYjNiNDM2
MTg0NGY3MGQ1MWQ5ZjUwYjFmNmJhZGExNWNjZDk0ZTU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTYtMDEtMTQgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisK
KyAgICAgICAgW0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBzaG91
bGQgc3VwcG9ydCB0aGUgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTM0CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN5bnRh
eC1lcnJvcnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tc3ludGF4
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1z
eW50YXgtZXJyb3JzLmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9u
LXN5bnRheC5qczoKKwogMjAxNi0wMS0wNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292
QGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93
IGZ1bmN0aW9uIHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgImFyZ3VtZW50cyIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhw
ZWN0ZWQudHh0CmluZGV4IDdmMmQzZDQ0ZDc4NWZiMzZlODY1NzdhMTY0ODk5MTFiNmFhZmRlNGEu
Ljc1NTNmNDFiOWQxODQ3ODE5ZmM1Njc0ZGFmZDMyYTlkYTA0MTlhZDcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLWV4cGVjdGVkLnR4
dApAQCAtMTIzLDYgKzEyMywxNCBAQCBQQVNTIHZhciBhZjI9KHkpCiA9PnkrMSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz0+Jy4KIFBBU1MgdmFyIGFmMz0o
eCwgeSkKID0+eSsxIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAnPT4nLgorUEFTUyAoW2EsIGJdID0+IGEgKyBiKShbImFfIiwgImJfIl0pIHRocmV3IGV4Y2Vw
dGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnKScgdG8g
ZW5kIGEgY29tcG91bmQgZXhwcmVzc2lvbi4uCitQQVNTICh7YSwgYn0gPT4gYSArIGIpKHthOiJh
XyIsIGI6ImJfIn0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAnPT4nLiBFeHBlY3RlZCAnKScgdG8gZW5kIGEgY29tcG91bmQgZXhwcmVzc2lvbi4uCitQQVNT
ICh7YzphLGQ6Yn0gPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0pIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnKScgdG8gZW5kIGEg
Y29tcG91bmQgZXhwcmVzc2lvbi4uCitQQVNTICh7YzpiLGQ6YX0gPT4gYSArIGIpKHtjOiJhXyIs
IGQ6ImJfIn0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAn
PT4nLiBFeHBlY3RlZCAnKScgdG8gZW5kIGEgY29tcG91bmQgZXhwcmVzc2lvbi4uCitQQVNTIHZh
ciBhcnIxID0gW2EsIGJdID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQgdG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0
aW9uLi4KK1BBU1MgdmFyIGFycjIgPSB7YSwgYn0gPT4gYSArIGI7IHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIgdmFy
aWFibGUgZGVjbGFyYXRpb24uLgorUEFTUyB2YXIgYXJyMyA9IHtjOmEsZDpifSA9PiBhICsgYjsg
dGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVj
dGVkICc7JyBhZnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbi4uCitQQVNTIHZhciBhcnIzID0ge2M6
YixkOmF9ID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uLi4KIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXhwZWN0ZWQudHh0CmluZGV4IGFlNjg4
YzdmOGViNGE1MGFiMDBmYzJlMWZlOTJlZGU1MTY4OTlmMzAuLjhlNTBjMDZlNTEwM2RiNDY1OWVk
ZmMzYjY1YWY1Zjk2MGY2ZTBhZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVu
Y3Rpb24tc3ludGF4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0
aW9uLXN5bnRheC1leHBlY3RlZC50eHQKQEAgLTQwLDYgKzQwLDIyIEBAIFBBU1MgKGZ1bmN0aW9u
IGZ1bmNTZWxmRXhlY0FFMSh2YWx1ZSkgeyB2YXIgZiA9IHggPT4geCsxOyByZXR1cm4gZih2YWx1
ZSk7fSkoMTIzCiBQQVNTIChmdW5jdGlvbiBmdW5jU2VsZkV4ZWNBRTIodmFsdWUpIHsgdmFyIGYg
PSB4ID0+IHsgeCsrOyByZXR1cm4geCArIDE7IH07IHJldHVybiBmKHZhbHVlKTt9KSgxMjMpOyBp
cyAxMjUKIFBBU1MgKGZ1bmN0aW9uIGZ1bmNTZWxmRXhlY0FFMyh2YWx1ZSkgeyB2YXIgZiA9ICh4
KSA9PiB7IHgrKzsgcmV0dXJuIHggKyAxOyB9OyByZXR1cm4gZih2YWx1ZSk7fSkoMTIzKTsgaXMg
MTI1CiBQQVNTIChmdW5jdGlvbiBmdW5jU2VsZkV4ZWNBRTQodmFsdWUpIHsgdmFyIGYgPSAoeCwg
eSkgPT4geyB4Kys7IHJldHVybiB4ICsgeTsgfTsgcmV0dXJuIGYodmFsdWUsIHZhbHVlICogMik7
fSkoMTIzKTsgaXMgMzcwCitQQVNTICgoW2EsIGJdKSA9PiBhICsgYikoWyJhXyIsICJiXyJdKSBp
cyAiYV9iXyIKK1BBU1MgKCh7YSwgYn0pID0+IGEgKyBiKSh7YToiYV8iLCBiOiJiXyJ9KSBpcyAi
YV9iXyIKK1BBU1MgKCh7YzphLCBkOmJ9KSA9PiBhICsgYikoe2M6ImFfIiwgZDoiYl8ifSkgaXMg
ImFfYl8iCitQQVNTICgoe2M6YiwgZDphfSkgPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0pIGlz
ICJiX2FfIgorUEFTUyAoKHgsIHksIHtjOmIsIGQ6YX0pID0+IHggKyB5ICsgYSArIGIpKCJ4XyIs
ICJ5XyIsIHtjOiJhXyIsIGQ6ImJfIn0pIGlzICJ4X3lfYl9hXyIKK1BBU1MgKCh7YzpiLCBkOmF9
LCB4LCB5KSA9PiB4ICsgeSArIGEgKyBiKSh7YzoiYV8iLCBkOiJiXyJ9LCAieF8iLCAieV8iKSBp
cyAieF95X2JfYV8iCitQQVNTICgoeCwgeSwge2M6YiwgZDphfSwgW2UsIGZdKSA9PiB4ICsgeSAr
IGEgKyBiICsgZSArIGYpKCJ4XyIsICJ5XyIsIHtjOiJhXyIsIGQ6ImJfIn0sIFsiZV8iLCAiZl8i
XSkgaXMgInhfeV9iX2FfZV9mXyIKK1BBU1MgKCh4LCB5LCB7YzpiLCBkOmF9LCBbZSwgZl0sIC4u
LnRoZUFyZ3MpID0+IHggKyB5ICsgYSArIGIgKyBlICsgZiArIHRoZUFyZ3NbMF0gKyB0aGVBcmdz
WzFdKSgieF8iLCAieV8iLCB7YzoiYV8iLCBkOiJiXyJ9LCBbImVfIiwgImZfIl0sICJnXyIsICJo
XyIpIGlzICJ4X3lfYl9hX2VfZl9nX2hfIgorUEFTUyBhcnIxKFsiYV8iLCAiYl8iXSkgaXMgImFf
Yl8iCitQQVNTIGFycjIoe2E6ImFfIiwgYjoiYl8ifSkgaXMgImFfYl8iCitQQVNTIGFycjMoe2M6
ImFfIiwgZDoiYl8ifSkgaXMgImFfYl8iCitQQVNTIGFycjQoe2M6ImFfIiwgZDoiYl8ifSkgaXMg
ImJfYV8iCitQQVNTIGFycjUoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8ifSkgaXMgInhfeV9i
X2FfIgorUEFTUyBhcnI2KHtjOiJhXyIsIGQ6ImJfIn0sICJ4XyIsICJ5XyIpIGlzICJ4X3lfYl9h
XyIKK1BBU1MgYXJyNygieF8iLCAieV8iLCB7YzoiYV8iLCBkOiJiXyJ9LCBbImVfIiwgImZfIl0p
IGlzICJ4X3lfYl9hX2VfZl8iCitQQVNTIGFycjgoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8i
fSwgWyJlXyIsICJmXyJdLCAiZ18iLCAiaF8iKSBpcyAieF95X2JfYV9lX2ZfZ19oXyIKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5q
cyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJv
cnMuanMKaW5kZXggODQxMGM1MzU1NjNmNzExMmI2M2JmM2JiOGI3NTZlMjUyYjg5ZjA2Mi4uNWEy
MjYzNGM4NzUyNTI3ZTM4NDc0NTJhZjM2NjVhZDY3OGUyZmYxMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qcworKysg
Yi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3Jz
LmpzCkBAIC0zOCw0ICszOCwxNCBAQCBzaG91bGRUaHJvdygidmFyIGFmMT15XG49PnkrMSIpOwog
c2hvdWxkVGhyb3coInZhciBhZjI9KHkpXG49PnkrMSIpOwogc2hvdWxkVGhyb3coInZhciBhZjM9
KHgsIHkpXG49PnkrMSIpOwogCitzaG91bGRUaHJvdygnKFthLCBiXSA9PiBhICsgYikoWyJhXyIs
ICJiXyJdKScgKTsKK3Nob3VsZFRocm93KCcoe2EsIGJ9ID0+IGEgKyBiKSh7YToiYV8iLCBiOiJi
XyJ9KScpOworc2hvdWxkVGhyb3coJyh7YzphLGQ6Yn0gPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJf
In0pJyk7CitzaG91bGRUaHJvdygnKHtjOmIsZDphfSA9PiBhICsgYikoe2M6ImFfIiwgZDoiYl8i
fSknKTsKKworc2hvdWxkVGhyb3coJ3ZhciBhcnIxID0gW2EsIGJdID0+IGEgKyBiOycpOworc2hv
dWxkVGhyb3coJ3ZhciBhcnIyID0ge2EsIGJ9ID0+IGEgKyBiOycpOworc2hvdWxkVGhyb3coJ3Zh
ciBhcnIzID0ge2M6YSxkOmJ9ID0+IGEgKyBiOycpOworc2hvdWxkVGhyb3coJ3ZhciBhcnIzID0g
e2M6YixkOmF9ID0+IGEgKyBiOycpOworCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5
bnRheC5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRh
eC5qcwppbmRleCA0MmFjMzViY2E0ZGE2YzFiY2ExMzY2MmZlZGFmYjc1NmNiMDgwNzYyLi45NTcz
MGQ1ODVmMDFhZWY1N2M0NDE5ZWVjNjM1ZWEwMzJjMzAxMWViIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXguanMKKysrIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LmpzCkBAIC03OSw0ICs3
OSwzNyBAQCBzaG91bGRCZSgnKGZ1bmN0aW9uIGZ1bmNTZWxmRXhlY0FFMyh2YWx1ZSkgeyB2YXIg
ZiA9ICh4KSA9PiB7IHgrKzsgcmV0dXJuIHggKyAxOwogCiBzaG91bGRCZSgnKGZ1bmN0aW9uIGZ1
bmNTZWxmRXhlY0FFNCh2YWx1ZSkgeyB2YXIgZiA9ICh4LCB5KSA9PiB7IHgrKzsgcmV0dXJuIHgg
KyB5OyB9OyByZXR1cm4gZih2YWx1ZSwgdmFsdWUgKiAyKTt9KSgxMjMpOycsICczNzAnKTsKIAor
c2hvdWxkQmUoJygoW2EsIGJdKSA9PiBhICsgYikoWyJhXyIsICJiXyJdKScsICciYV9iXyInKTsK
K3Nob3VsZEJlKCcoKHthLCBifSkgPT4gYSArIGIpKHthOiJhXyIsIGI6ImJfIn0pJywgJyJhX2Jf
IicpOworc2hvdWxkQmUoJygoe2M6YSwgZDpifSkgPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0p
JywgJyJhX2JfIicpOworc2hvdWxkQmUoJygoe2M6YiwgZDphfSkgPT4gYSArIGIpKHtjOiJhXyIs
IGQ6ImJfIn0pJywgJyJiX2FfIicpOworc2hvdWxkQmUoJygoeCwgeSwge2M6YiwgZDphfSkgPT4g
eCArIHkgKyBhICsgYikoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8ifSknLCAnInhfeV9iX2Ff
IicpOworc2hvdWxkQmUoJygoe2M6YiwgZDphfSwgeCwgeSkgPT4geCArIHkgKyBhICsgYikoe2M6
ImFfIiwgZDoiYl8ifSwgInhfIiwgInlfIiknLCAnInhfeV9iX2FfIicpOworc2hvdWxkQmUoJygo
eCwgeSwge2M6YiwgZDphfSwgW2UsIGZdKSA9PiB4ICsgeSArIGEgKyBiICsgZSArIGYpKCJ4XyIs
ICJ5XyIsIHtjOiJhXyIsIGQ6ImJfIn0sIFsiZV8iLCAiZl8iXSknLCAnInhfeV9iX2FfZV9mXyIn
KTsKK3Nob3VsZEJlKCcoKHgsIHksIHtjOmIsIGQ6YX0sIFtlLCBmXSwgLi4udGhlQXJncykgPT4g
eCArIHkgKyBhICsgYiArIGUgKyBmICsgdGhlQXJnc1swXSArIHRoZUFyZ3NbMV0pKCJ4XyIsICJ5
XyIsIHtjOiJhXyIsIGQ6ImJfIn0sIFsiZV8iLCAiZl8iXSwgImdfIiwgImhfIiknLCAnInhfeV9i
X2FfZV9mX2dfaF8iJyk7CisKK3ZhciBhcnIxID0gKFthLCBiXSkgPT4gYSArIGI7CitzaG91bGRC
ZSgnYXJyMShbImFfIiwgImJfIl0pJywgJyJhX2JfIicpOworCit2YXIgYXJyMiA9ICh7YSwgYn0p
ID0+IGEgKyBiOworc2hvdWxkQmUoJ2FycjIoe2E6ImFfIiwgYjoiYl8ifSknLCAnImFfYl8iJyk7
CisKK3ZhciBhcnIzID0gKHtjOmEsIGQ6Yn0pID0+IGEgKyBiOworc2hvdWxkQmUoJ2FycjMoe2M6
ImFfIiwgZDoiYl8ifSknLCAnImFfYl8iJyk7CisKK3ZhciBhcnI0ID0gKHtjOmIsIGQ6YX0pID0+
IGEgKyBiOworc2hvdWxkQmUoJ2FycjQoe2M6ImFfIiwgZDoiYl8ifSknLCAnImJfYV8iJyk7CisK
K3ZhciBhcnI1ID0gKHgsIHksIHtjOmIsIGQ6YX0pID0+IHggKyB5ICsgYSArIGI7CitzaG91bGRC
ZSgnYXJyNSgieF8iLCAieV8iLCB7YzoiYV8iLCBkOiJiXyJ9KScsICcieF95X2JfYV8iJyk7CisK
K3ZhciBhcnI2ID0gKHtjOmIsIGQ6YX0sIHgsIHkpID0+IHggKyB5ICsgYSArIGI7CitzaG91bGRC
ZSgnYXJyNih7YzoiYV8iLCBkOiJiXyJ9LCAieF8iLCAieV8iKScsICcieF95X2JfYV8iJyk7CisK
K3ZhciBhcnI3ID0gKHgsIHksIHtjOmIsIGQ6YX0sIFtlLCBmXSkgPT4geCArIHkgKyBhICsgYiAr
IGUgKyBmOworc2hvdWxkQmUoJ2FycjcoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8ifSwgWyJl
XyIsICJmXyJdKScsICcieF95X2JfYV9lX2ZfIicpOworCit2YXIgYXJyOCA9ICh4LCB5LCB7Yzpi
LCBkOmF9LCBbZSwgZl0sIC4uLnRoZUFyZ3MpID0+IHggKyB5ICsgYSArIGIgKyBlICsgZiArIHRo
ZUFyZ3NbMF0gKyB0aGVBcmdzWzFdOworc2hvdWxkQmUoJ2FycjgoInhfIiwgInlfIiwge2M6ImFf
IiwgZDoiYl8ifSwgWyJlXyIsICJmXyJdLCAiZ18iLCAiaF8iKScsICcieF95X2JfYV9lX2ZfZ19o
XyInKTsKKwogdmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269172</attachid>
            <date>2016-01-16 09:09:32 -0800</date>
            <delta_ts>2016-01-16 16:04:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146934-20160116190901.patch</filename>
            <type>text/plain</type>
            <size>13483</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0NjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
M2NiZjhlMzYyYTg4NTBjZjY2NzQ2ZWUwOWZiNTIwZmIwMWNjYTU5Li5kYjIyYWZjZGZmZGE2MjVj
NmI2MTVjMDYxNzYwMDkyNWMwOTE0OTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNi0wMS0xNCAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1
bmN0aW9uIHNob3VsZCBzdXBwb3J0IHRoZSBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY5MzQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEFkZGVk
IHN1cHBvcnQgb2YgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJzLCBiZWZvcmUgYXJyb3cgZnVuY3Rp
b24gZXhwZWN0IG9ubHkgc2ltcGxlIHBhcmFtZXRlcnMsCisgICAgICAgIGUuZy4gKCksICh4KSwg
KHgsIHkpIG9yIHggaW4gYXNzaWdtZW50IGV4cHJlc3Npby4gVG8gc3VwcG9ydCBkZXN0cnVjdHVy
aW5nIHBhcmFtZXRlcnMgYWRkZWQKKyAgICAgICAgYWRkaXRpb25hbCBjaGVjayB0aGF0IGNoZWNr
IGZvciBkZXN0cnVjdHVyaW5nIHBhcmFtdGVycyBpZiBjaGVjayBkb2VzIG5vdCBwYXNzIGZvciBz
aW1wbGUgcGFyYW1ldGVycy4KKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6aXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycyk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisKIDIwMTYtMDEtMDkgIFNrYWNoa292IE9s
ZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CiAKICAgICAgICAgW0VTNl0gQXJyb3cgZnVu
Y3Rpb24gc3ludGF4LiBHZXQgcmlkIG9mIEpTQXJyb3dGdW5jdGlvbiBhbmQgdXNlIHN0YW5kYXJk
IEpTRnVuY3Rpb24gY2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApp
bmRleCBlMjgwMDdkOTQ1MDAwNDRlNTg3OTQ1NzIzMDJiMzc3MDNkZDViZDg4Li4zY2FjODA0ZTI5
Y2JlMmMwZDk0Yzg3N2NhNWUxZTVhNGY2MzUyZGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwCkBAIC0zNzQsNiArMzc0LDQ5IEBAIHZvaWQgUGFyc2VyPExleGVyVHlw
ZT46OmRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqIHNvdXJjZUVsZW1lbnRzLCBEZWNs
YXJhCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Citib29sIFBhcnNlcjxMZXhl
clR5cGU+Ojppc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKCkKK3sKKyAgICBib29sIGlzQXJyb3dG
dW5jdGlvbiA9IGZhbHNlOworCisgICAgaWYgKG1hdGNoKEVPRlRPSykpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAKKyAgICBib29sIGlzT3BlblBhcmVuID0gbWF0Y2goT1BFTlBBUkVOKTsK
KyAgICBib29sIGlzSWRlbnQgPSBtYXRjaChJREVOVCk7CisgICAgCisgICAgaWYgKCFpc09wZW5Q
YXJlbiAmJiAhaXNJZGVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgU2F2ZVBvaW50
IHNhdmVBcnJvd0Z1bmN0aW9uUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKKyAgICAgICAgCisg
ICAgaWYgKGlzSWRlbnQpIHsKKyAgICAgICAgbmV4dCgpOworICAgICAgICBpc0Fycm93RnVuY3Rp
b24gPSBtYXRjaChBUlJPV0ZVTkNUSU9OKTsKKyAgICB9IGVsc2UgeworICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc09wZW5QYXJlbik7CisgICAgICAgIG5leHQoKTsKKyAgICAgICAgaWYgKG1hdGNo
KENMT1NFUEFSRU4pKSB7CisgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICBpc0Fycm93
RnVuY3Rpb24gPSBtYXRjaChBUlJPV0ZVTkNUSU9OKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIFN5bnRheENoZWNrZXIgc3ludGF4Q2hlY2tlcihjb25zdF9jYXN0PFZNKj4obV92bSks
IG1fbGV4ZXIuZ2V0KCkpOworICAgICAgICAgICAgLy8gV2UgbWFrZSBmYWtlIHNjb3BlLCBvdGhl
cndpc2UgcGFyc2VGb3JtYWxQYXJhbWV0ZXJzIHdpbGwgYWRkIHZhcmlhYmxlIHRvIGN1cnJlbnQg
c2NvcGUgdGhhdCBsZWFkIHRvIGVycm9ycworICAgICAgICAgICAgQXV0b1BvcFNjb3BlUmVmIGZh
a2VTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgICAgICBmYWtlU2NvcGUtPnNldFNv
dXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHVuc2lnbmVkIHBhcmFtZXRlcnNDb3VudCA9IDA7Cisg
ICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoc3ludGF4
Q2hlY2tlciwgc3ludGF4Q2hlY2tlci5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KCksIHBhcmFt
ZXRlcnNDb3VudCkgJiYgY29uc3VtZShDTE9TRVBBUkVOKSAmJiBtYXRjaChBUlJPV0ZVTkNUSU9O
KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcFNjb3BlKGZha2VTY29wZSwgc3lu
dGF4Q2hlY2tlci5OZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgICAgICB9CisgICAgfQorICAg
ICAgICAKKyAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVBcnJvd0Z1bmN0aW9uUG9pbnQpOworICAg
ICAgICAKKyAgICByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgogYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6YWxsb3dBdXRvbWF0aWNTZW1p
Y29sb24oKQogewogICAgIHJldHVybiBtYXRjaChDTE9TRUJSQUNFKSB8fCBtYXRjaChFT0ZUT0sp
IHx8IG1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCk7CkBAIC0yODc3LDcgKzI5MjAsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUFzc2lnbm1lbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJ
T05fU1lOVEFYKQotICAgIGlmIChpc0Fycm93RnVuY3Rpb25QYXJhbXRlcnMoKSkKKyAgICBpZiAo
aXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycygpKQogICAgICAgICByZXR1cm4gcGFyc2VBcnJvd0Z1
bmN0aW9uRXhwcmVzc2lvbihjb250ZXh0KTsKICNlbmRpZgogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYTExYjM1YzEwMWZlNWI4NDljYjIzMzA5NmM1NjgzMTM3
MDY2Y2FiZi4uMzI5ZWRiZTcyNTM1ZjMyOTNiYWYzZmExNWNiZTViY2FlY2EyOTY3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xMDI3LDQxICsxMDI3LDcgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIHJldHVybiBtYXRjaChTRU1JQ09MT04pIHx8IG1hdGNoKENP
TU1BKSB8fCBtYXRjaChDTE9TRVBBUkVOKSB8fCBtYXRjaChDTE9TRUJSQUNFKSB8fCBtYXRjaChD
TE9TRUJSQUNLRVQpIHx8IG1hdGNoKEVPRlRPSykgfHwgbV9sZXhlci0+cHJldlRlcm1pbmF0b3Io
KTsKICAgICB9Ci0gICAgCi0gICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBh
cmFtdGVycygpCi0gICAgewotICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNlOwot
ICAgICAgICAKLSAgICAgICAgaWYgKG1hdGNoKEVPRlRPSykpCi0gICAgICAgICAgICByZXR1cm4g
aXNBcnJvd0Z1bmN0aW9uOwotICAgICAgICAKLSAgICAgICAgU2F2ZVBvaW50IHNhdmVBcnJvd0Z1
bmN0aW9uUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChj
b25zdW1lKE9QRU5QQVJFTikpIHsKLSAgICAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uUGFy
YW10ZXJzID0gdHJ1ZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgd2hpbGUgKGNvbnN1bWUo
SURFTlQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN1bWUoQ09NTUEpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICghbWF0Y2goSURFTlQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpc0Fycm93RnVuY3Rpb25QYXJhbXRlcnMgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uUGFyYW10ZXJzKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGNvbnN1bWUoQ0xPU0VQQVJFTikgJiYgbWF0Y2goQVJST1dGVU5DVElPTikpCi0g
ICAgICAgICAgICAgICAgICAgIGlzQXJyb3dGdW5jdGlvbiA9IHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0gZWxzZSBpZiAoY29uc3VtZShJREVOVCkgJiYgbWF0Y2goQVJST1dGVU5DVElP
TikpCi0gICAgICAgICAgICBpc0Fycm93RnVuY3Rpb24gPSB0cnVlOwogCi0gICAgICAgIHJlc3Rv
cmVTYXZlUG9pbnQoc2F2ZUFycm93RnVuY3Rpb25Qb2ludCk7Ci0gICAgICAgIAotICAgICAgICBy
ZXR1cm4gaXNBcnJvd0Z1bmN0aW9uOwotICAgIH0KLSAgICAKICAgICBBTFdBWVNfSU5MSU5FIHVu
c2lnbmVkIHRva2VuU3RhcnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2Nh
dGlvbi5zdGFydE9mZnNldDsKQEAgLTEyNTgsNiArMTIyNCw4IEBAIHByaXZhdGU6CiAgICAgZW51
bSBjbGFzcyBGdW5jdGlvbkRlZmluaXRpb25UeXBlIHsgRXhwcmVzc2lvbiwgRGVjbGFyYXRpb24s
IE1ldGhvZCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5F
IGJvb2wgcGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImLCBGdW5jdGlvblJlcXVpcmVtZW50
cywgU291cmNlUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1
Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJG
dW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25EZWZpbml0aW9uVHlwZSk7CiAgICAg
CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKTsKKyAg
ICAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFy
c2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBTb3VyY2VQYXJzZU1vZGUsIFBhcnNl
ckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IE5FVkVSX0lOTElORSB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Rm9ybWFsUGFyYW1ldGVy
TGlzdCBjcmVhdGVHZW5lcmF0b3JQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJik7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1
MmQ3NDU2MDZiOTUzNDQxMmZjNmJlNzgzODU5YWU2Nzk3ODdkMjUyLi5jYjNiNDM2MTg0NGY3MGQ1
MWQ5ZjUwYjFmNmJhZGExNWNjZDk0ZTU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDEt
MTQgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBnbWFpbC5jb20+CisKKyAgICAgICAg
W0VTNl0gQXJyb3cgZnVuY3Rpb24gc3ludGF4LiBBcnJvdyBmdW5jdGlvbiBzaG91bGQgc3VwcG9y
dCB0aGUgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2OTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBqcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJy
b3JzLmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRheC5q
czoKKwogMjAxNi0wMS0wNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNv
bT4KIAogICAgICAgICBbRVM2XSBBcnJvdyBmdW5jdGlvbiBzeW50YXguIEFycm93IGZ1bmN0aW9u
IHNwZWNpZmljIGZlYXR1cmVzLiBMZXhpY2FsIGJpbmQgImFyZ3VtZW50cyIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMtZXhwZWN0ZWQudHh0
CmluZGV4IDdmMmQzZDQ0ZDc4NWZiMzZlODY1NzdhMTY0ODk5MTFiNmFhZmRlNGEuLjc1NTNmNDFi
OWQxODQ3ODE5ZmM1Njc0ZGFmZDMyYTlkYTA0MTlhZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2pzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLWV4cGVjdGVkLnR4dApAQCAtMTIz
LDYgKzEyMywxNCBAQCBQQVNTIHZhciBhZjI9KHkpCiA9PnkrMSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz0+Jy4KIFBBU1MgdmFyIGFmMz0oeCwgeSkKID0+
eSsxIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLgor
UEFTUyAoW2EsIGJdID0+IGEgKyBiKShbImFfIiwgImJfIl0pIHRocmV3IGV4Y2VwdGlvbiBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnKScgdG8gZW5kIGEgY29t
cG91bmQgZXhwcmVzc2lvbi4uCitQQVNTICh7YSwgYn0gPT4gYSArIGIpKHthOiJhXyIsIGI6ImJf
In0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBF
eHBlY3RlZCAnKScgdG8gZW5kIGEgY29tcG91bmQgZXhwcmVzc2lvbi4uCitQQVNTICh7YzphLGQ6
Yn0gPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnKScgdG8gZW5kIGEgY29tcG91bmQg
ZXhwcmVzc2lvbi4uCitQQVNTICh7YzpiLGQ6YX0gPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0p
IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBl
Y3RlZCAnKScgdG8gZW5kIGEgY29tcG91bmQgZXhwcmVzc2lvbi4uCitQQVNTIHZhciBhcnIxID0g
W2EsIGJdID0+IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJz0+Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uLi4KK1BB
U1MgdmFyIGFycjIgPSB7YSwgYn0gPT4gYSArIGI7IHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnPT4nLiBFeHBlY3RlZCAnOycgYWZ0ZXIgdmFyaWFibGUgZGVj
bGFyYXRpb24uLgorUEFTUyB2YXIgYXJyMyA9IHtjOmEsZDpifSA9PiBhICsgYjsgdGhyZXcgZXhj
ZXB0aW9uIFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9PicuIEV4cGVjdGVkICc7JyBh
ZnRlciB2YXJpYWJsZSBkZWNsYXJhdGlvbi4uCitQQVNTIHZhciBhcnIzID0ge2M6YixkOmF9ID0+
IGEgKyBiOyB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz0+
Jy4gRXhwZWN0ZWQgJzsnIGFmdGVyIHZhcmlhYmxlIGRlY2xhcmF0aW9uLi4KIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvanMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
anMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXhwZWN0ZWQudHh0CmluZGV4IGFlNjg4YzdmOGViNGE1
MGFiMDBmYzJlMWZlOTJlZGU1MTY4OTlmMzAuLjhlNTBjMDZlNTEwM2RiNDY1OWVkZmMzYjY1YWY1
Zjk2MGY2ZTBhZGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2Fycm93ZnVuY3Rpb24tc3lu
dGF4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9hcnJvd2Z1bmN0aW9uLXN5bnRh
eC1leHBlY3RlZC50eHQKQEAgLTQwLDYgKzQwLDIyIEBAIFBBU1MgKGZ1bmN0aW9uIGZ1bmNTZWxm
RXhlY0FFMSh2YWx1ZSkgeyB2YXIgZiA9IHggPT4geCsxOyByZXR1cm4gZih2YWx1ZSk7fSkoMTIz
CiBQQVNTIChmdW5jdGlvbiBmdW5jU2VsZkV4ZWNBRTIodmFsdWUpIHsgdmFyIGYgPSB4ID0+IHsg
eCsrOyByZXR1cm4geCArIDE7IH07IHJldHVybiBmKHZhbHVlKTt9KSgxMjMpOyBpcyAxMjUKIFBB
U1MgKGZ1bmN0aW9uIGZ1bmNTZWxmRXhlY0FFMyh2YWx1ZSkgeyB2YXIgZiA9ICh4KSA9PiB7IHgr
KzsgcmV0dXJuIHggKyAxOyB9OyByZXR1cm4gZih2YWx1ZSk7fSkoMTIzKTsgaXMgMTI1CiBQQVNT
IChmdW5jdGlvbiBmdW5jU2VsZkV4ZWNBRTQodmFsdWUpIHsgdmFyIGYgPSAoeCwgeSkgPT4geyB4
Kys7IHJldHVybiB4ICsgeTsgfTsgcmV0dXJuIGYodmFsdWUsIHZhbHVlICogMik7fSkoMTIzKTsg
aXMgMzcwCitQQVNTICgoW2EsIGJdKSA9PiBhICsgYikoWyJhXyIsICJiXyJdKSBpcyAiYV9iXyIK
K1BBU1MgKCh7YSwgYn0pID0+IGEgKyBiKSh7YToiYV8iLCBiOiJiXyJ9KSBpcyAiYV9iXyIKK1BB
U1MgKCh7YzphLCBkOmJ9KSA9PiBhICsgYikoe2M6ImFfIiwgZDoiYl8ifSkgaXMgImFfYl8iCitQ
QVNTICgoe2M6YiwgZDphfSkgPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0pIGlzICJiX2FfIgor
UEFTUyAoKHgsIHksIHtjOmIsIGQ6YX0pID0+IHggKyB5ICsgYSArIGIpKCJ4XyIsICJ5XyIsIHtj
OiJhXyIsIGQ6ImJfIn0pIGlzICJ4X3lfYl9hXyIKK1BBU1MgKCh7YzpiLCBkOmF9LCB4LCB5KSA9
PiB4ICsgeSArIGEgKyBiKSh7YzoiYV8iLCBkOiJiXyJ9LCAieF8iLCAieV8iKSBpcyAieF95X2Jf
YV8iCitQQVNTICgoeCwgeSwge2M6YiwgZDphfSwgW2UsIGZdKSA9PiB4ICsgeSArIGEgKyBiICsg
ZSArIGYpKCJ4XyIsICJ5XyIsIHtjOiJhXyIsIGQ6ImJfIn0sIFsiZV8iLCAiZl8iXSkgaXMgInhf
eV9iX2FfZV9mXyIKK1BBU1MgKCh4LCB5LCB7YzpiLCBkOmF9LCBbZSwgZl0sIC4uLnRoZUFyZ3Mp
ID0+IHggKyB5ICsgYSArIGIgKyBlICsgZiArIHRoZUFyZ3NbMF0gKyB0aGVBcmdzWzFdKSgieF8i
LCAieV8iLCB7YzoiYV8iLCBkOiJiXyJ9LCBbImVfIiwgImZfIl0sICJnXyIsICJoXyIpIGlzICJ4
X3lfYl9hX2VfZl9nX2hfIgorUEFTUyBhcnIxKFsiYV8iLCAiYl8iXSkgaXMgImFfYl8iCitQQVNT
IGFycjIoe2E6ImFfIiwgYjoiYl8ifSkgaXMgImFfYl8iCitQQVNTIGFycjMoe2M6ImFfIiwgZDoi
Yl8ifSkgaXMgImFfYl8iCitQQVNTIGFycjQoe2M6ImFfIiwgZDoiYl8ifSkgaXMgImJfYV8iCitQ
QVNTIGFycjUoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8ifSkgaXMgInhfeV9iX2FfIgorUEFT
UyBhcnI2KHtjOiJhXyIsIGQ6ImJfIn0sICJ4XyIsICJ5XyIpIGlzICJ4X3lfYl9hXyIKK1BBU1Mg
YXJyNygieF8iLCAieV8iLCB7YzoiYV8iLCBkOiJiXyJ9LCBbImVfIiwgImZfIl0pIGlzICJ4X3lf
Yl9hX2VfZl8iCitQQVNTIGFycjgoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8ifSwgWyJlXyIs
ICJmXyJdLCAiZ18iLCAiaF8iKSBpcyAieF95X2JfYV9lX2ZfZ19oXyIKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qcyBiL0xheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRheC1lcnJvcnMuanMKaW5k
ZXggODQxMGM1MzU1NjNmNzExMmI2M2JmM2JiOGI3NTZlMjUyYjg5ZjA2Mi4uNWEyMjYzNGM4NzUy
NTI3ZTM4NDc0NTJhZjM2NjVhZDY3OGUyZmYxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LWVycm9ycy5qcworKysgYi9MYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXgtZXJyb3JzLmpzCkBAIC0z
OCw0ICszOCwxNCBAQCBzaG91bGRUaHJvdygidmFyIGFmMT15XG49PnkrMSIpOwogc2hvdWxkVGhy
b3coInZhciBhZjI9KHkpXG49PnkrMSIpOwogc2hvdWxkVGhyb3coInZhciBhZjM9KHgsIHkpXG49
PnkrMSIpOwogCitzaG91bGRUaHJvdygnKFthLCBiXSA9PiBhICsgYikoWyJhXyIsICJiXyJdKScg
KTsKK3Nob3VsZFRocm93KCcoe2EsIGJ9ID0+IGEgKyBiKSh7YToiYV8iLCBiOiJiXyJ9KScpOwor
c2hvdWxkVGhyb3coJyh7YzphLGQ6Yn0gPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0pJyk7Citz
aG91bGRUaHJvdygnKHtjOmIsZDphfSA9PiBhICsgYikoe2M6ImFfIiwgZDoiYl8ifSknKTsKKwor
c2hvdWxkVGhyb3coJ3ZhciBhcnIxID0gW2EsIGJdID0+IGEgKyBiOycpOworc2hvdWxkVGhyb3co
J3ZhciBhcnIyID0ge2EsIGJ9ID0+IGEgKyBiOycpOworc2hvdWxkVGhyb3coJ3ZhciBhcnIzID0g
e2M6YSxkOmJ9ID0+IGEgKyBiOycpOworc2hvdWxkVGhyb3coJ3ZhciBhcnIzID0ge2M6YixkOmF9
ID0+IGEgKyBiOycpOworCiB2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRheC5qcyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9hcnJvd2Z1bmN0aW9uLXN5bnRheC5qcwppbmRl
eCA0MmFjMzViY2E0ZGE2YzFiY2ExMzY2MmZlZGFmYjc1NmNiMDgwNzYyLi45NTczMGQ1ODVmMDFh
ZWY1N2M0NDE5ZWVjNjM1ZWEwMzJjMzAxMWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvYXJyb3dmdW5jdGlvbi1zeW50YXguanMKKysrIGIvTGF5b3V0VGVzdHMvanMv
c2NyaXB0LXRlc3RzL2Fycm93ZnVuY3Rpb24tc3ludGF4LmpzCkBAIC03OSw0ICs3OSwzNyBAQCBz
aG91bGRCZSgnKGZ1bmN0aW9uIGZ1bmNTZWxmRXhlY0FFMyh2YWx1ZSkgeyB2YXIgZiA9ICh4KSA9
PiB7IHgrKzsgcmV0dXJuIHggKyAxOwogCiBzaG91bGRCZSgnKGZ1bmN0aW9uIGZ1bmNTZWxmRXhl
Y0FFNCh2YWx1ZSkgeyB2YXIgZiA9ICh4LCB5KSA9PiB7IHgrKzsgcmV0dXJuIHggKyB5OyB9OyBy
ZXR1cm4gZih2YWx1ZSwgdmFsdWUgKiAyKTt9KSgxMjMpOycsICczNzAnKTsKIAorc2hvdWxkQmUo
JygoW2EsIGJdKSA9PiBhICsgYikoWyJhXyIsICJiXyJdKScsICciYV9iXyInKTsKK3Nob3VsZEJl
KCcoKHthLCBifSkgPT4gYSArIGIpKHthOiJhXyIsIGI6ImJfIn0pJywgJyJhX2JfIicpOworc2hv
dWxkQmUoJygoe2M6YSwgZDpifSkgPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0pJywgJyJhX2Jf
IicpOworc2hvdWxkQmUoJygoe2M6YiwgZDphfSkgPT4gYSArIGIpKHtjOiJhXyIsIGQ6ImJfIn0p
JywgJyJiX2FfIicpOworc2hvdWxkQmUoJygoeCwgeSwge2M6YiwgZDphfSkgPT4geCArIHkgKyBh
ICsgYikoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8ifSknLCAnInhfeV9iX2FfIicpOworc2hv
dWxkQmUoJygoe2M6YiwgZDphfSwgeCwgeSkgPT4geCArIHkgKyBhICsgYikoe2M6ImFfIiwgZDoi
Yl8ifSwgInhfIiwgInlfIiknLCAnInhfeV9iX2FfIicpOworc2hvdWxkQmUoJygoeCwgeSwge2M6
YiwgZDphfSwgW2UsIGZdKSA9PiB4ICsgeSArIGEgKyBiICsgZSArIGYpKCJ4XyIsICJ5XyIsIHtj
OiJhXyIsIGQ6ImJfIn0sIFsiZV8iLCAiZl8iXSknLCAnInhfeV9iX2FfZV9mXyInKTsKK3Nob3Vs
ZEJlKCcoKHgsIHksIHtjOmIsIGQ6YX0sIFtlLCBmXSwgLi4udGhlQXJncykgPT4geCArIHkgKyBh
ICsgYiArIGUgKyBmICsgdGhlQXJnc1swXSArIHRoZUFyZ3NbMV0pKCJ4XyIsICJ5XyIsIHtjOiJh
XyIsIGQ6ImJfIn0sIFsiZV8iLCAiZl8iXSwgImdfIiwgImhfIiknLCAnInhfeV9iX2FfZV9mX2df
aF8iJyk7CisKK3ZhciBhcnIxID0gKFthLCBiXSkgPT4gYSArIGI7CitzaG91bGRCZSgnYXJyMShb
ImFfIiwgImJfIl0pJywgJyJhX2JfIicpOworCit2YXIgYXJyMiA9ICh7YSwgYn0pID0+IGEgKyBi
Oworc2hvdWxkQmUoJ2FycjIoe2E6ImFfIiwgYjoiYl8ifSknLCAnImFfYl8iJyk7CisKK3ZhciBh
cnIzID0gKHtjOmEsIGQ6Yn0pID0+IGEgKyBiOworc2hvdWxkQmUoJ2FycjMoe2M6ImFfIiwgZDoi
Yl8ifSknLCAnImFfYl8iJyk7CisKK3ZhciBhcnI0ID0gKHtjOmIsIGQ6YX0pID0+IGEgKyBiOwor
c2hvdWxkQmUoJ2FycjQoe2M6ImFfIiwgZDoiYl8ifSknLCAnImJfYV8iJyk7CisKK3ZhciBhcnI1
ID0gKHgsIHksIHtjOmIsIGQ6YX0pID0+IHggKyB5ICsgYSArIGI7CitzaG91bGRCZSgnYXJyNSgi
eF8iLCAieV8iLCB7YzoiYV8iLCBkOiJiXyJ9KScsICcieF95X2JfYV8iJyk7CisKK3ZhciBhcnI2
ID0gKHtjOmIsIGQ6YX0sIHgsIHkpID0+IHggKyB5ICsgYSArIGI7CitzaG91bGRCZSgnYXJyNih7
YzoiYV8iLCBkOiJiXyJ9LCAieF8iLCAieV8iKScsICcieF95X2JfYV8iJyk7CisKK3ZhciBhcnI3
ID0gKHgsIHksIHtjOmIsIGQ6YX0sIFtlLCBmXSkgPT4geCArIHkgKyBhICsgYiArIGUgKyBmOwor
c2hvdWxkQmUoJ2FycjcoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8ifSwgWyJlXyIsICJmXyJd
KScsICcieF95X2JfYV9lX2ZfIicpOworCit2YXIgYXJyOCA9ICh4LCB5LCB7YzpiLCBkOmF9LCBb
ZSwgZl0sIC4uLnRoZUFyZ3MpID0+IHggKyB5ICsgYSArIGIgKyBlICsgZiArIHRoZUFyZ3NbMF0g
KyB0aGVBcmdzWzFdOworc2hvdWxkQmUoJ2FycjgoInhfIiwgInlfIiwge2M6ImFfIiwgZDoiYl8i
fSwgWyJlXyIsICJmXyJdLCAiZ18iLCAiaF8iKScsICcieF95X2JfYV9lX2ZfZ19oXyInKTsKKwog
dmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>