<?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>161099</bug_id>
          
          <creation_ts>2016-08-23 12:28:53 -0700</creation_ts>
          <short_desc>We initialize functions too early in an eval</short_desc>
          <delta_ts>2017-04-30 07:53:21 -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 Local 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>
          <dependson>163208</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1222359</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-23 12:28:53 -0700</bug_when>
    <thetext>For example, this throws an exception:
```eval(&quot;&apos;use strict&apos;; class C { constructor() { print(&apos;foo&apos;); } }; function foo() { return new C; }; foo()&quot;)```
saying that we can&apos;t find variable &quot;C&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226307</commentid>
    <comment_count>1</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-09-04 14:06:36 -0700</bug_when>
    <thetext>I suspect that there is some issue in resolving scope for class variable in function within eval:
&gt;&gt;&gt; eval(&quot;&apos;use strict&apos;; class C { constructor() { print(&apos;foo&apos;); } }; function foo() { return new C; }; print(C); foo()&quot;)
class C { constructor() { print(&apos;foo&apos;); } }
Exception: ReferenceError: Can&apos;t find variable: C

It finds C variable in print but doesn&apos;t find it inside of the function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226394</commentid>
    <comment_count>2</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-09-05 02:04:09 -0700</bug_when>
    <thetext>I think issue that during generation of ByteCode for EvalNode we add declared function into codeBlock by following code(https://trac.webkit.org/browser/trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp#L681):
    for (size_t i = 0; i &lt; functionStack.size(); ++i)
     m_codeBlock-&gt;addFunctionDecl(makeFunction(functionStack[i]));
It seems that following code fix this issue:
for (FunctionMetadataNode* function : functionStack)
     m_functionsToInitialize.append(std::make_pair(function, GlobalFunctionVariable));

 But I need to run all tests, before creation of the patch,  to see if this change does not break any other tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226419</commentid>
    <comment_count>3</comment_count>
      <attachid>287950</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-09-05 07:00:35 -0700</bug_when>
    <thetext>Created attachment 287950
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226455</commentid>
    <comment_count>4</comment_count>
      <attachid>287950</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-09-05 09:56:48 -0700</bug_when>
    <thetext>Comment on attachment 287950
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:680
&gt;      const DeclarationStacks::FunctionStack&amp; functionStack = evalNode-&gt;functionStack();

I noticed that this patch modernizes the style a bit. Given that, I think this line of code would be better as:

    auto&amp; functionStack = evalNode-&gt;functionStack();

But, even better, we don’t need the local variable now that we are using a modern for loop below.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:681
&gt; +    for (FunctionMetadataNode* function : functionStack)

I think this would be better with the type &quot;auto*&quot;. The old code didn’t need to explicitly cite the type name, and writing the type out does not make the new code better.

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:682
&gt; +        m_functionsToInitialize.append(std::make_pair(function, GlobalFunctionVariable));

I typically prefer to use the initializer list syntax instead of make_pair, so I would write:

    for (auto&amp; function : evalNode-&gt;functionStack())
        m_functionsToInitialize.append({ function, GlobalFunctionVariable });

If it compiles like this, I suggest you consider this style. Our auto* if you prefer to emphasize the fact that it’s a pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226522</commentid>
    <comment_count>5</comment_count>
      <attachid>287950</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-05 16:52:07 -0700</bug_when>
    <thetext>Comment on attachment 287950
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:682
&gt;&gt; +        m_functionsToInitialize.append(std::make_pair(function, GlobalFunctionVariable));
&gt; 
&gt; I typically prefer to use the initializer list syntax instead of make_pair, so I would write:
&gt; 
&gt;     for (auto&amp; function : evalNode-&gt;functionStack())
&gt;         m_functionsToInitialize.append({ function, GlobalFunctionVariable });
&gt; 
&gt; If it compiles like this, I suggest you consider this style. Our auto* if you prefer to emphasize the fact that it’s a pointer.

Nit: GlobalFunctionVariable will not longer mean what it used to with this patch. We should probably find a new name.

&gt; LayoutTests/js/script-tests/eval-access-to-class-in-function-declaration.js:7
&gt; +shouldNotThrow(&quot;eval(\&quot;\&apos;use strict\&apos;;class C { constructor() { this.id=\&apos;value\&apos;; } };  function arr() { return new C }; result = arr();\&quot;)&quot;);

Please add some sloppy mode tests and make sure that the scope before the eval contains the variables that you expect it to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226525</commentid>
    <comment_count>6</comment_count>
      <attachid>287950</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-09-05 17:07:32 -0700</bug_when>
    <thetext>Comment on attachment 287950
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:682
&gt;&gt;&gt; +        m_functionsToInitialize.append(std::make_pair(function, GlobalFunctionVariable));
&gt;&gt; 
&gt;&gt; I typically prefer to use the initializer list syntax instead of make_pair, so I would write:
&gt;&gt; 
&gt;&gt;     for (auto&amp; function : evalNode-&gt;functionStack())
&gt;&gt;         m_functionsToInitialize.append({ function, GlobalFunctionVariable });
&gt;&gt; 
&gt;&gt; If it compiles like this, I suggest you consider this style. Our auto* if you prefer to emphasize the fact that it’s a pointer.
&gt; 
&gt; Nit: GlobalFunctionVariable will not longer mean what it used to with this patch. We should probably find a new name.

Actually, I&apos;m not sure if this code is correct. Consider this:

function foo() {
    {
         let Foo = 20;
         eval(&quot;function Foo() { }&quot;); // I suspect this will bind to the &quot;let Foo&quot; variable, however, I think we should be throwing a syntax error here upon parsing the eval (this is what other browsers do, however, I&apos;d need to read the spec to convince myself that this is correct).
    }
}

The rules for function declarations inside an eval are quite weird. I believe they&apos;re defined in annex B of the spec.

Also, consider this example:

function foo() {
     let Foo = 20;
     {
          eval(&quot;function Foo() { }&quot;) // Also a syntax error in other browsers after parsing the eval.
     }
     return Foo;
}

Since we&apos;re changing the behavior, I think it&apos;s probably worth implementing the entire semantics defined in annex B. There are weird block scoping semantics for functions inside the eval, and also, there are semantics for how that function
binds to an identifier outside the eval. For example:
eval(&quot;
   let Foo = 20;
   {
        function Foo() { }
        print(Foo); // Should print the function
   }
   print(Foo); // Should print 20
&quot;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226609</commentid>
    <comment_count>7</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2016-09-06 00:30:04 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 287950 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=287950&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:680
&gt; &gt;      const DeclarationStacks::FunctionStack&amp; functionStack = evalNode-&gt;functionStack();
&gt; 
&gt; I noticed that this patch modernizes the style a bit. Given that, I think
&gt; this line of code would be better as:
&gt; 
&gt;     auto&amp; functionStack = evalNode-&gt;functionStack();
&gt; 
&gt; But, even better, we don’t need the local variable now that we are using a
&gt; modern for loop below.
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:681
&gt; &gt; +    for (FunctionMetadataNode* function : functionStack)
&gt; 
&gt; I think this would be better with the type &quot;auto*&quot;. The old code didn’t need
&gt; to explicitly cite the type name, and writing the type out does not make the
&gt; new code better.
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:682
&gt; &gt; +        m_functionsToInitialize.append(std::make_pair(function, GlobalFunctionVariable));
&gt; 
&gt; I typically prefer to use the initializer list syntax instead of make_pair,
&gt; so I would write:
&gt; 
&gt;     for (auto&amp; function : evalNode-&gt;functionStack())
&gt;         m_functionsToInitialize.append({ function, GlobalFunctionVariable });
&gt; 
&gt; If it compiles like this, I suggest you consider this style. Our auto* if
&gt; you prefer to emphasize the fact that it’s a pointer.

Thanks for review! It seems that this fix require more changes that I expected, but I&apos;ll include your suggestion in new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300327</commentid>
    <comment_count>8</comment_count>
      <attachid>287950</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-04-23 06:53:07 -0700</bug_when>
    <thetext>Comment on attachment 287950
Patch

Patch does not cover more complex case. I&apos;ll try to provide new patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300365</commentid>
    <comment_count>9</comment_count>
      <attachid>307942</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-04-23 14:00:18 -0700</bug_when>
    <thetext>Created attachment 307942
Patch

Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300614</commentid>
    <comment_count>10</comment_count>
      <attachid>307942</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-24 12:45:18 -0700</bug_when>
    <thetext>Comment on attachment 307942
Patch

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

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:111
&gt; +                    // We know this will resolve to the top level scope or global object because our parser/global initialization code 

Nit: I&apos;d rename the &quot;globalScope&quot;/&quot;globalObjectScope&quot; variable below.

Also, I think this needs some explaining of correctness for eval for sloppy mode:
This is a top level function, and it&apos;s an error to ever create a top level function name that would resolve to a lexical variable. E.g:
```
function f() {
      {
            let x;
            {
                   /// error thrown here
                    eval(&quot;function x(){}&quot;);
            }
      }
}
```
Therefore, we&apos;re guaranteed to have this resolve to a top level variable.

Also, it&apos;s worth noting that if you fix this case:
```
function foo() {
        try {
            throw 10;
        } catch(e) {
             eval(&quot;function e(){}&quot;);
        }
}
```

will potentially break how your code is written now.

&gt; Source/JavaScriptCore/interpreter/Interpreter.cpp:1173
&gt; +                variableObject-&gt;methodTable()-&gt;put(variableObject, callFrame, function-&gt;name(), jsUndefined(), slot);

I think it&apos;s worth a comment here that we need to create these properties because of how bytecode generator emits code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301080</commentid>
    <comment_count>11</comment_count>
      <attachid>308110</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-04-25 10:03:38 -0700</bug_when>
    <thetext>Created attachment 308110
Patch

Fix comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301085</commentid>
    <comment_count>12</comment_count>
      <attachid>307942</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-04-25 10:14:01 -0700</bug_when>
    <thetext>Comment on attachment 307942
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:111
&gt;&gt; +                    // We know this will resolve to the top level scope or global object because our parser/global initialization code 
&gt; 
&gt; Nit: I&apos;d rename the &quot;globalScope&quot;/&quot;globalObjectScope&quot; variable below.
&gt; 
&gt; Also, I think this needs some explaining of correctness for eval for sloppy mode:
&gt; This is a top level function, and it&apos;s an error to ever create a top level function name that would resolve to a lexical variable. E.g:
&gt; ```
&gt; function f() {
&gt;       {
&gt;             let x;
&gt;             {
&gt;                    /// error thrown here
&gt;                     eval(&quot;function x(){}&quot;);
&gt;             }
&gt;       }
&gt; }
&gt; ```
&gt; Therefore, we&apos;re guaranteed to have this resolve to a top level variable.
&gt; 
&gt; Also, it&apos;s worth noting that if you fix this case:
&gt; ```
&gt; function foo() {
&gt;         try {
&gt;             throw 10;
&gt;         } catch(e) {
&gt;              eval(&quot;function e(){}&quot;);
&gt;         }
&gt; }
&gt; ```
&gt; 
&gt; will potentially break how your code is written now.

I&apos;ve added your comment.Also I&apos;m working now on the fix for SyntaxError in catch block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1301122</commentid>
    <comment_count>13</comment_count>
      <attachid>308110</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-25 11:19:05 -0700</bug_when>
    <thetext>Comment on attachment 308110
Patch

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

r=me

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:129
&gt; +                    RefPtr&lt;RegisterID&gt; tolLevelObjectScope = emitResolveScope(nullptr, Variable(metadata-&gt;ident()));
&gt; +                    tolLevelScope = newBlockScopeVariable();
&gt; +                    emitMove(tolLevelScope.get(), tolLevelObjectScope.get());

I wonder if the solution in the future is to use your new scope resolution bytecode. Since a syntax error is created if it returns undefined, I think we&apos;re guaranteed to find the correct scope.
That said, we&apos;d do it only for sloppy mode, and for strict mode, we would still do this code that&apos;s written here. Maybe you&apos;ll need to move to this when doing the catch variable.

Also, I think at some point, we should move strict mode off of using the StrictActivation object. It should just use a locally created lexical environment.

&gt; JSTests/stress/eval-func-decl-with-let-const-class.js:78
&gt; +        let f;

can you assert the value of &quot;f&quot; here after the evals.

&gt; JSTests/stress/eval-func-decl-with-let-const-class.js:87
&gt; +        let f;

ditto

&gt; JSTests/stress/eval-func-decl-with-let-const-class.js:95
&gt; +        let f;

ditto

&gt; JSTests/stress/eval-func-decl-with-let-const-class.js:102
&gt; +        let f;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303106</commentid>
    <comment_count>14</comment_count>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-04-30 07:52:51 -0700</bug_when>
    <thetext>Patch landed https://trac.webkit.org/r215986</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1303107</commentid>
    <comment_count>15</comment_count>
      <attachid>308110</attachid>
    <who name="GSkachkov">gskachkov</who>
    <bug_when>2017-04-30 07:53:11 -0700</bug_when>
    <thetext>Comment on attachment 308110
Patch

Clear flags</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287950</attachid>
            <date>2016-09-05 07:00:35 -0700</date>
            <delta_ts>2017-04-23 14:00:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161099-20160905165814.patch</filename>
            <type>text/plain</type>
            <size>5049</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
MjE1NmRhNWM0ZDIxZTEyNWExZTk3NTBjZDc2OWYxNWUyNmY0MTBlLi5lOTg0NzA5N2YyMTllYTFk
Y2ZkZTBlYjM5YTBkMTUzY2M0YjMxYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNi0wOS0wNSAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBXZSBpbml0aWFsaXplIGZ1bmN0aW9ucyB0b28gZWFybHkgaW4g
YW4gZXZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IpOgorCiAyMDE2LTA5LTAzICBTa2FjaGtv
diBPbGVrc2FuZHIgIDxnc2thY2hrb3ZAZ21haWwuY29tPgogCiAgICAgICAgIEVTNjogQ2xhc3Nl
czogU2hvdWxkIGJlIGFsbG93ZWQgdG8gY3JlYXRlIGEgc3RhdGljIG1ldGhvZCB3aXRoIG5hbWUg
ImFyZ3VtZW50cyIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMjAwOTU0MzY4NGQ2MGUxMTBiM2JlODli
MDNhMTFkMDI4NWUxMzFjMi4uYTIwZTBkMWU4NGVlNjg2Yzc3ZjMyZTRkMTA0NTQ2OWU0MDhhZGJk
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTY3OCw4ICs2NzgsOCBAQCBCeXRlY29kZUdlbmVyYXRv
cjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBFdmFsTm9kZSogZXZhbE5vZGUsIFVubGlua2Vk
RXZhbENvZAogICAgIGFsbG9jYXRlQW5kRW1pdFNjb3BlKCk7CiAKICAgICBjb25zdCBEZWNsYXJh
dGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayYgZnVuY3Rpb25TdGFjayA9IGV2YWxOb2RlLT5mdW5j
dGlvblN0YWNrKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvblN0YWNrLnNp
emUoKTsgKytpKQotICAgICAgICBtX2NvZGVCbG9jay0+YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5j
dGlvbihmdW5jdGlvblN0YWNrW2ldKSk7CisgICAgZm9yIChGdW5jdGlvbk1ldGFkYXRhTm9kZSog
ZnVuY3Rpb24gOiBmdW5jdGlvblN0YWNrKQorICAgICAgICBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6
ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUp
KTsKIAogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckRlY2xhcmF0aW9ucyA9IGV2
YWxOb2RlLT52YXJEZWNsYXJhdGlvbnMoKTsKICAgICB1bnNpZ25lZCBudW1WYXJpYWJsZXMgPSB2
YXJEZWNsYXJhdGlvbnMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDhjNzY1MzkxNjUyMTA3YWQ0NWE1OTJhYTY0
MDdlMzZhMDAxYTE0ZDIuLjYxMTdmNzBkYWY0MWE3YTljMzQwZDE3YjUxZDlhMjU5YzQ2Yzc0Zjkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNi0wOS0wNSAgU2thY2hrb3YgT2xla3NhbmRyICA8
Z3NrYWNoa292QGdtYWlsLmNvbT4KKworICAgICAgICBXZSBpbml0aWFsaXplIGZ1bmN0aW9ucyB0
b28gZWFybHkgaW4gYW4gZXZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYxMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBqcy9ldmFsLWFjY2Vzcy10by1jbGFzcy1pbi1mdW5jdGlvbi1kZWNsYXJh
dGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2V2YWwtYWNjZXNzLXRvLWNs
YXNzLWluLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL3Nj
cmlwdC10ZXN0cy9ldmFsLWFjY2Vzcy10by1jbGFzcy1pbi1mdW5jdGlvbi1kZWNsYXJhdGlvbi5q
czogQWRkZWQuCisKIDIwMTYtMDktMDMgIFNrYWNoa292IE9sZWtzYW5kciAgPGdza2FjaGtvdkBn
bWFpbC5jb20+CiAKICAgICAgICAgRVM2OiBDbGFzc2VzOiBTaG91bGQgYmUgYWxsb3dlZCB0byBj
cmVhdGUgYSBzdGF0aWMgbWV0aG9kIHdpdGggbmFtZSAiYXJndW1lbnRzIgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvanMvZXZhbC1hY2Nlc3MtdG8tY2xhc3MtaW4tZnVuY3Rpb24tZGVjbGFyYXRp
b24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZXZhbC1hY2Nlc3MtdG8tY2xhc3MtaW4t
ZnVuY3Rpb24tZGVjbGFyYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1ODgxYzllNGMw
Yjg4YTk2Nzc3ZmRlMDI5ODRiZTMzM2ViODM3MDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9qcy9ldmFsLWFjY2Vzcy10by1jbGFzcy1pbi1mdW5jdGlvbi1kZWNsYXJhdGlvbi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0IGNhc2UgY2hlY2tzIHdoZXRoZXIg
Y2xhc3MgYWNjZXNpYmxlIGluIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHdpdGhpbiBldmFsCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGV2YWwoIid1c2Ugc3RyaWN0JztjbGFz
cyBDIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuaWQ9J3ZhbHVlJzsgfSB9OyAgZnVuY3Rpb24gYXJy
KCkgeyByZXR1cm4gbmV3IEMgfTsgYXJyKCk7IikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQ
QVNTIGV2YWwoIid1c2Ugc3RyaWN0JztjbGFzcyBDIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuaWQ9
J3ZhbHVlJzsgfSB9OyAgZnVuY3Rpb24gYXJyKCkgeyByZXR1cm4gbmV3IEMgfTsgcmVzdWx0ID0g
YXJyKCk7IikgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHJlc3VsdC5pZCBpcyAndmFs
dWUnCitQQVNTIHR5cGVvZiBhcnIgaXMgJ3VuZGVmaW5lZCcKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9q
cy9ldmFsLWFjY2Vzcy10by1jbGFzcy1pbi1mdW5jdGlvbi1kZWNsYXJhdGlvbi5odG1sIGIvTGF5
b3V0VGVzdHMvanMvZXZhbC1hY2Nlc3MtdG8tY2xhc3MtaW4tZnVuY3Rpb24tZGVjbGFyYXRpb24u
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yNWJjNjBmMzVmZmM0MTBiODQxODRmZjhhYTQyZjdjM2JlMzNlYzE4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZXZhbC1hY2Nlc3MtdG8tY2xhc3Mt
aW4tZnVuY3Rpb24tZGVjbGFyYXRpb24uaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZXZhbC1hY2Nlc3MtdG8tY2xhc3Mt
aW4tZnVuY3Rpb24tZGVjbGFyYXRpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9ldmFsLWFjY2Vzcy10by1jbGFzcy1pbi1mdW5jdGlvbi1kZWNsYXJhdGlvbi5qcyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9ldmFsLWFjY2Vzcy10by1jbGFzcy1pbi1mdW5j
dGlvbi1kZWNsYXJhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ZTUzNWQwMzE2MDNjOGI4ODI5ZWQ3ZDBk
NTNjNGQzNjIwZThlMjU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0
LXRlc3RzL2V2YWwtYWNjZXNzLXRvLWNsYXNzLWluLWZ1bmN0aW9uLWRlY2xhcmF0aW9uLmpzCkBA
IC0wLDAgKzEsOSBAQAorZGVzY3JpcHRpb24oCisiVGhpcyB0ZXN0IGNhc2UgY2hlY2tzIHdoZXRo
ZXIgY2xhc3MgYWNjZXNpYmxlIGluIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHdpdGhpbiBldmFsIgor
KTsKKworc2hvdWxkTm90VGhyb3coImV2YWwoXCJcJ3VzZSBzdHJpY3RcJztjbGFzcyBDIHsgY29u
c3RydWN0b3IoKSB7IHRoaXMuaWQ9XCd2YWx1ZVwnOyB9IH07ICBmdW5jdGlvbiBhcnIoKSB7IHJl
dHVybiBuZXcgQyB9OyBhcnIoKTtcIikiKTsKK3ZhciByZXN1bHQ7IAorc2hvdWxkTm90VGhyb3co
ImV2YWwoXCJcJ3VzZSBzdHJpY3RcJztjbGFzcyBDIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuaWQ9
XCd2YWx1ZVwnOyB9IH07ICBmdW5jdGlvbiBhcnIoKSB7IHJldHVybiBuZXcgQyB9OyByZXN1bHQg
PSBhcnIoKTtcIikiKTsKK3Nob3VsZEJlKCJyZXN1bHQuaWQiLCAiJ3ZhbHVlJyIpOworc2hvdWxk
QmUoInR5cGVvZiBhcnIiLCAiJ3VuZGVmaW5lZCciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307942</attachid>
            <date>2017-04-23 14:00:18 -0700</date>
            <delta_ts>2017-04-25 10:03:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161099-20170423230015.patch</filename>
            <type>text/plain</type>
            <size>8182</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NDZhY2YzMDlmY2Q0YjEwNDEzMTlmZjAwNWE3ZGUxYmU1OGMzMTM0Li4wOTI4M2RjOWI2OGFkYWVk
ODFmMjRjMWM5MmM2MDAzNGJiZDI1NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNy0wNC0yMyAgT2xla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBXZSBpbml0aWFsaXplIGZ1bmN0aW9ucyB0b28gZWFybHkgaW4g
YW4gZXZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q3VycmVudCBwYXRjaCBhbGxvdyB0byBmaXggcHJvYmxlbSB3aXRoIHNjb3BlIGluIGZ1bmN0aW9u
IHRoYXQgaXMgCisgICAgICAgIGRlY2xhcmVkIHdpdGhpbiBldmFsLiBCZWZvcmUgc2NvcGUgd2Fz
IHNldCBpbnNpZGUgSW50ZXJwcmV0YXRvci5jcHAgYW5kIGl0CisgICAgICAgIHdhcyBzY29wZSB3
aGVyZSBldmFsIGlzIGV4ZWN1dGVkLCBidXQgaW4gdGhpcyBjYXNlIGZ1bmN0aW9uIHdvdWxkIG5v
dCAKKyAgICAgICAgc2VlIGxldC9jb25zdCB2YXJpYWJsZXMgYW5kIGNsYXNzZXMgZGVjbGF0ZWQg
aW4gZXZhbC4KKyAgICAgICAgVGhpcyBwYXRjaCBkZXZpZGUgZGVjbGFyYXRpb24gYW5kIGJpbmRp
bmcgaW4gdHdvIG9wZXJhdGlvbiwgZmlyc3QganVzdCBkZWNsYXJlCisgICAgICAgIHZhcmlhYmxl
IHdpdGggZnVuY3Rpb24gbmFtZSwgYW5kIHNlY29uZCBiaW5kIHZhcmlhYmxlIHRvIGZ1bmN0aW9u
IHdpdGggY29ycmVjdCAKKyAgICAgICAgc2NvcGUKKworICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZSk6CisKIDIwMTctMDQtMTggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIHIyMTE2NzAgYnJva2UgZG91YmxlIHRvIGludCBjb252ZXJzaW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCBhZDBmNDE3OWY3MGU0NjI5ZWFiZjIwMDA5ZDk0MWZmZWQyYzk3
MDc4Li5mMDU1MDUwZWQ5MWNiZmQ3OGZmYzg0MzVlMTU5N2M5MmQ0MjMyYWEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtMTA2LDkgKzEwNiw5IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSgpCiAgICAgICAgICAgICBlbWl0TmV3RnVuY3Rpb24odGVtcC5nZXQoKSwgbWV0
YWRhdGEpOwogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uVHlwZSA9PSBOb3JtYWxGdW5jdGlvblZh
cmlhYmxlKQogICAgICAgICAgICAgICAgIGluaXRpYWxpemVWYXJpYWJsZSh2YXJpYWJsZShtZXRh
ZGF0YS0+aWRlbnQoKSksIHRlbXAuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoZnVuY3Rp
b25UeXBlID09IEdsb2JhbEZ1bmN0aW9uVmFyaWFibGUpIHsKKyAgICAgICAgICAgIGVsc2UgaWYg
KGZ1bmN0aW9uVHlwZSA9PSBUb3BMZXZlbEZ1bmN0aW9uVmFyaWFibGUpIHsKICAgICAgICAgICAg
ICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cg
dGhpcyB3aWxsIHJlc29sdmUgdG8gdGhlIGdsb2JhbCBvYmplY3QgYmVjYXVzZSBvdXIgcGFyc2Vy
L2dsb2JhbCBpbml0aWFsaXphdGlvbiBjb2RlIAorICAgICAgICAgICAgICAgICAgICAvLyBXZSBr
bm93IHRoaXMgd2lsbCByZXNvbHZlIHRvIHRoZSB0b3AgbGV2ZWwgc2NvcGUgb3IgZ2xvYmFsIG9i
amVjdCBiZWNhdXNlIG91ciBwYXJzZXIvZ2xvYmFsIGluaXRpYWxpemF0aW9uIGNvZGUgCiAgICAg
ICAgICAgICAgICAgICAgIC8vIGRvZXNuJ3QgYWxsb3cgbGV0L2NvbnN0L2NsYXNzIHZhcmlhYmxl
cyB0byBoYXZlIHRoZSBzYW1lIG5hbWVzIGFzIGZ1bmN0aW9ucy4KICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdsb2JhbE9iamVjdFNjb3BlID0gZW1pdFJlc29sdmVTY29w
ZShudWxscHRyLCBWYXJpYWJsZShtZXRhZGF0YS0+aWRlbnQoKSkpOyAKICAgICAgICAgICAgICAg
ICAgICAgZ2xvYmFsU2NvcGUgPSBuZXdCbG9ja1Njb3BlVmFyaWFibGUoKTsgCkBAIC0yMDAsNyAr
MjAwLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgUHJv
Z3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICBjb25zdCBGdW5jdGlvblN0YWNr
JiBmdW5jdGlvblN0YWNrID0gcHJvZ3JhbU5vZGUtPmZ1bmN0aW9uU3RhY2soKTsKIAogICAgIGZv
ciAoYXV0byogZnVuY3Rpb24gOiBmdW5jdGlvblN0YWNrKQotICAgICAgICBtX2Z1bmN0aW9uc1Rv
SW5pdGlhbGl6ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIEdsb2JhbEZ1bmN0aW9u
VmFyaWFibGUpKTsKKyAgICAgICAgbV9mdW5jdGlvbnNUb0luaXRpYWxpemUuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGZ1bmN0aW9uLCBUb3BMZXZlbEZ1bmN0aW9uVmFyaWFibGUpKTsKIAogICAgIGlm
IChPcHRpb25zOjp2YWxpZGF0ZUJ5dGVjb2RlKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBlbnRy
eSA6IHByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSkKQEAgLTc1Niw4ICs3NTYsMTAgQEAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZhbE5vZGUqIGV2
YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKIAogICAgIGVtaXRDaGVja1RyYXBzKCk7CiAgICAgCi0g
ICAgZm9yIChGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gOiBldmFsTm9kZS0+ZnVuY3Rp
b25TdGFjaygpKQorICAgIGZvciAoRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0aW9uIDogZXZh
bE5vZGUtPmZ1bmN0aW9uU3RhY2soKSkgewogICAgICAgICBtX2NvZGVCbG9jay0+YWRkRnVuY3Rp
b25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgICAgICBtX2Z1bmN0aW9uc1RvSW5p
dGlhbGl6ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIFRvcExldmVsRnVuY3Rpb25W
YXJpYWJsZSkpOworICAgIH0KIAogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIHZhckRl
Y2xhcmF0aW9ucyA9IGV2YWxOb2RlLT52YXJEZWNsYXJhdGlvbnMoKTsKICAgICBWZWN0b3I8SWRl
bnRpZmllciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHZhcmlhYmxlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApp
bmRleCBlZWMwYTRmNmRlZGMwZDUxODIxNWFjMTE2M2I4MmRjNTFjNmEyMWZiLi4zMDM3MGY5OTIz
MGM1NjkyNWFlYWM3NWM5NmRlYzU1NDkxMzIxMTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0xMTExLDcg
KzExMTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ryb25nPFN5bWJvbFRhYmxlPiBt
X2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGU7CiAgICAgICAgIGludCBtX2dlbmVyYXRvckZyYW1l
U3ltYm9sVGFibGVJbmRleCB7IDAgfTsKIAotICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFibGVU
eXBlIDogdWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9uVmFy
aWFibGUgfTsKKyAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBO
b3JtYWxGdW5jdGlvblZhcmlhYmxlLCBUb3BMZXZlbEZ1bmN0aW9uVmFyaWFibGUgfTsKICAgICAg
ICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0aW9uVmFyaWFi
bGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9J
bml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKICAgICAgICAgUmVzdFBhcmFtZXRlck5vZGUq
IG1fcmVzdFBhcmFtZXRlciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZlZjgzMjRjNGI5ZGJjODRhZGNi
MjZiZTNjZmQyM2YxZDdiMTZhNGIuLjA3ZGVlMWExMTkxY2ExZThlMmQwYTZjOTJkZGVlMTZjZGM1
ZmNhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcApAQCAtMTE3MCw3ICsxMTcwLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhl
Y3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUK
ICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3BMZXZlbEZ1bmN0aW9u
RGVjbHM7ICsraSkgewogICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAgICAgICAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdCh2YXJpYWJsZU9iamVjdCk7Ci0gICAgICAgICAgICAgICAgdmFyaWFibGVP
YmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh2YXJpYWJsZU9iamVjdCwgY2FsbEZyYW1lLCBmdW5j
dGlvbi0+bmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBzY29wZSksIHNs
b3QpOworICAgICAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5wdXQo
dmFyaWFibGVPYmplY3QsIGNhbGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUoKSwganNVbmRlZmluZWQo
KSwgc2xvdCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtVG9wTGV2ZWxGdW5jdGlvbkRlY2xzOyArK2kpIHsK
QEAgLTExNzksNyArMTE3OSw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4
ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgICAgICAg
ICAgICAgaWYgKHJlc29sdmVkU2NvcGUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4odGhyb3dTeW50YXhFcnJvcihjYWxsRnJhbWUsIHRocm93
U2NvcGUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgdmFyaWFibGUgaW4gZXZh
bDogJyIsIFN0cmluZyhmdW5jdGlvbi0+bmFtZSgpLmltcGwoKSksICInIikpKTsKICAgICAgICAg
ICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh2YXJpYWJsZU9iamVjdCk7Ci0gICAgICAgICAg
ICAgICAgdmFyaWFibGVPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh2YXJpYWJsZU9iamVjdCwg
Y2FsbEZyYW1lLCBmdW5jdGlvbi0+bmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0
aW9uLCBzY29wZSksIHNsb3QpOworICAgICAgICAgICAgICAgIHZhcmlhYmxlT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5wdXQodmFyaWFibGVPYmplY3QsIGNhbGxGcmFtZSwgZnVuY3Rpb24tPm5hbWUo
KSwganNVbmRlZmluZWQoKSwgc2xvdCk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBjaGVja2VkUmV0dXJuKHRocm93U2NvcGUuZXhjZXB0aW9uKCkpKTsK
ICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCBlY2RlMjk0M2EwZTY4ZTMyZjNiMTIxYTM4MzlhZTNiYTQ0Zjk5Yzhh
Li5jNzY5YTAyOWIwMDkyNjgzMzkyM2E3N2M2YzkyYzk3Y2NkZDVjNjI1IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTA0LTIzICBPbGVrc2FuZHIgU2thY2hrb3YgIDxnc2thY2hrb3ZAZ21haWwuY29tPgor
CisgICAgICAgIFdlIGluaXRpYWxpemUgZnVuY3Rpb25zIHRvbyBlYXJseSBpbiBhbiBldmFsCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEwOTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9l
dmFsLWZ1bmMtZGVjbC13aXRoLWxldC1jb25zdC1jbGFzcy5qczogQWRkZWQuCisgICAgICAgIChh
c3NlcnQpOgorCiAyMDE3LTA0LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICByMjExNjcwIGJyb2tlIGRvdWJsZSB0byBpbnQgY29udmVyc2lvbi4KZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL2V2YWwtZnVuYy1kZWNsLXdpdGgtbGV0LWNvbnN0LWNsYXNzLmpz
IGIvSlNUZXN0cy9zdHJlc3MvZXZhbC1mdW5jLWRlY2wtd2l0aC1sZXQtY29uc3QtY2xhc3MuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGEyNWExNmQwYzkxYzhkYmI0MjNkMjYxYmU4YWQzZjg3MTYyYTVmNgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2V2YWwtZnVuYy1kZWNsLXdpdGgtbGV0LWNv
bnN0LWNsYXNzLmpzCkBAIC0wLDAgKzEsMjYgQEAKK3ZhciBhc3NlcnQgPSBmdW5jdGlvbiAocmVz
dWx0LCBleHBlY3RlZCkgeworICAgIGlmIChyZXN1bHQgIT09IGV4cGVjdGVkKSB7CisgICAgICAg
IHRocm93IG5ldyBFcnJvcignRXJyb3IgaW4gYXNzZXJ0LiBFeHBlY3RlZC0nICsgZXhwZWN0ZWQg
KyAnIGJ1dCB3YXMgJyArIHJlc3VsdCk7CisgICAgfQorfTsKKwordmFyIHJlc3VsdCA9IDA7CisK
K2V2YWwoIid1c2Ugc3RyaWN0JzsgbGV0IHkgPSA1OyBmdW5jdGlvbiBmKCkgeyByZXN1bHQgPSB5
O30gZigpIik7Cithc3NlcnQocmVzdWx0LCA1KTsKKworZXZhbCgiJ3VzZSBzdHJpY3QnOyBjb25z
dCB4ID0gMTA7IGZ1bmN0aW9uIGYoKSB7IHJlc3VsdCA9IHg7fSBmKCkiKTsKK2Fzc2VydChyZXN1
bHQsIDEwKTsKKworZXZhbCgiJ3VzZSBzdHJpY3QnOyBjbGFzcyBDIHsgY29uc3RydWN0b3IoKSB7
IHRoaXMuaWQgPSAnZm9vJzsgfSB9OyBmdW5jdGlvbiBmb28oKSB7IHJldHVybiAobmV3IEMpLmlk
OyB9OyByZXN1bHQgPSBmb28oKTsiKTsKK2Fzc2VydChyZXN1bHQsICdmb28nKTsKKworCitldmFs
KCJsZXQgeSA9IDE1OyBmdW5jdGlvbiBmKCkgeyByZXN1bHQgPSB5O30gZigpIik7Cithc3NlcnQo
cmVzdWx0LCAxNSk7CisKK2V2YWwoImNvbnN0IHggPSAyMDsgZnVuY3Rpb24gZigpIHsgcmVzdWx0
ID0geDt9IGYoKSIpOworYXNzZXJ0KHJlc3VsdCwgMjApOworCitldmFsKCJjbGFzcyBBIHsgY29u
c3RydWN0b3IoKSB7IHRoaXMuaWQgPSAnYm9vJzsgfSB9OyBmdW5jdGlvbiBmb28oKSB7IHJldHVy
biAobmV3IEEpLmlkOyB9OyByZXN1bHQgPSBmb28oKTsiKTsKK2Fzc2VydChyZXN1bHQsICdib28n
KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308110</attachid>
            <date>2017-04-25 10:03:38 -0700</date>
            <delta_ts>2017-04-30 07:53:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161099-20170425190335.patch</filename>
            <type>text/plain</type>
            <size>12536</size>
            <attacher name="GSkachkov">gskachkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NDZhY2YzMDlmY2Q0YjEwNDEzMTlmZjAwNWE3ZGUxYmU1OGMzMTM0Li4wOTI4M2RjOWI2OGFkYWVk
ODFmMjRjMWM5MmM2MDAzNGJiZDI1NDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNy0wNC0yMyAgT2xla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdt
YWlsLmNvbT4KKworICAgICAgICBXZSBpbml0aWFsaXplIGZ1bmN0aW9ucyB0b28gZWFybHkgaW4g
YW4gZXZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYxMDk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q3VycmVudCBwYXRjaCBhbGxvdyB0byBmaXggcHJvYmxlbSB3aXRoIHNjb3BlIGluIGZ1bmN0aW9u
IHRoYXQgaXMgCisgICAgICAgIGRlY2xhcmVkIHdpdGhpbiBldmFsLiBCZWZvcmUgc2NvcGUgd2Fz
IHNldCBpbnNpZGUgSW50ZXJwcmV0YXRvci5jcHAgYW5kIGl0CisgICAgICAgIHdhcyBzY29wZSB3
aGVyZSBldmFsIGlzIGV4ZWN1dGVkLCBidXQgaW4gdGhpcyBjYXNlIGZ1bmN0aW9uIHdvdWxkIG5v
dCAKKyAgICAgICAgc2VlIGxldC9jb25zdCB2YXJpYWJsZXMgYW5kIGNsYXNzZXMgZGVjbGF0ZWQg
aW4gZXZhbC4KKyAgICAgICAgVGhpcyBwYXRjaCBkZXZpZGUgZGVjbGFyYXRpb24gYW5kIGJpbmRp
bmcgaW4gdHdvIG9wZXJhdGlvbiwgZmlyc3QganVzdCBkZWNsYXJlCisgICAgICAgIHZhcmlhYmxl
IHdpdGggZnVuY3Rpb24gbmFtZSwgYW5kIHNlY29uZCBiaW5kIHZhcmlhYmxlIHRvIGZ1bmN0aW9u
IHdpdGggY29ycmVjdCAKKyAgICAgICAgc2NvcGUKKworICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVy
YXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZSk6CisKIDIwMTctMDQtMTggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIHIyMTE2NzAgYnJva2UgZG91YmxlIHRvIGludCBjb252ZXJzaW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAppbmRleCBhZDBmNDE3OWY3MGU0NjI5ZWFiZjIwMDA5ZDk0MWZmZWQyYzk3
MDc4Li5jMDYyNzQzZTFiNjY3Nzg2MWRiODA5Mjg2MGEwZjc4OTI2ZWZkYTY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcApAQCAtOTksMjIgKzk5LDM2IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZSgpCiAKICAgICB7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB0ZW1wID0g
bmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnbG9iYWxTY29wZTsK
KyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRvbExldmVsU2NvcGU7CiAgICAgICAgIGZvciAo
YXV0byBmdW5jdGlvblBhaXIgOiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZSkgewogICAgICAgICAg
ICAgRnVuY3Rpb25NZXRhZGF0YU5vZGUqIG1ldGFkYXRhID0gZnVuY3Rpb25QYWlyLmZpcnN0Owog
ICAgICAgICAgICAgRnVuY3Rpb25WYXJpYWJsZVR5cGUgZnVuY3Rpb25UeXBlID0gZnVuY3Rpb25Q
YWlyLnNlY29uZDsKICAgICAgICAgICAgIGVtaXROZXdGdW5jdGlvbih0ZW1wLmdldCgpLCBtZXRh
ZGF0YSk7CiAgICAgICAgICAgICBpZiAoZnVuY3Rpb25UeXBlID09IE5vcm1hbEZ1bmN0aW9uVmFy
aWFibGUpCiAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZVZhcmlhYmxlKHZhcmlhYmxlKG1ldGFk
YXRhLT5pZGVudCgpKSwgdGVtcC5nZXQoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChmdW5jdGlv
blR5cGUgPT0gR2xvYmFsRnVuY3Rpb25WYXJpYWJsZSkgewotICAgICAgICAgICAgICAgIGlmICgh
Z2xvYmFsU2NvcGUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyB0aGlzIHdpbGwg
cmVzb2x2ZSB0byB0aGUgZ2xvYmFsIG9iamVjdCBiZWNhdXNlIG91ciBwYXJzZXIvZ2xvYmFsIGlu
aXRpYWxpemF0aW9uIGNvZGUgCisgICAgICAgICAgICBlbHNlIGlmIChmdW5jdGlvblR5cGUgPT0g
VG9wTGV2ZWxGdW5jdGlvblZhcmlhYmxlKSB7CisgICAgICAgICAgICAgICAgaWYgKCF0b2xMZXZl
bFNjb3BlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhpcyB3aWxsIHJlc29s
dmUgdG8gdGhlIHRvcCBsZXZlbCBzY29wZSBvciBnbG9iYWwgb2JqZWN0IGJlY2F1c2Ugb3VyIHBh
cnNlci9nbG9iYWwgaW5pdGlhbGl6YXRpb24gY29kZSAKICAgICAgICAgICAgICAgICAgICAgLy8g
ZG9lc24ndCBhbGxvdyBsZXQvY29uc3QvY2xhc3MgdmFyaWFibGVzIHRvIGhhdmUgdGhlIHNhbWUg
bmFtZXMgYXMgZnVuY3Rpb25zLgotICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gZ2xvYmFsT2JqZWN0U2NvcGUgPSBlbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIFZhcmlhYmxl
KG1ldGFkYXRhLT5pZGVudCgpKSk7IAotICAgICAgICAgICAgICAgICAgICBnbG9iYWxTY29wZSA9
IG5ld0Jsb2NrU2NvcGVWYXJpYWJsZSgpOyAKLSAgICAgICAgICAgICAgICAgICAgZW1pdE1vdmUo
Z2xvYmFsU2NvcGUuZ2V0KCksIGdsb2JhbE9iamVjdFNjb3BlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBpcyBhIHRvcCBsZXZlbCBmdW5jdGlvbiwgYW5kIGl0J3MgYW4gZXJy
b3IgdG8gZXZlciBjcmVhdGUgYSB0b3AgbGV2ZWwgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAg
ICAgLy8gbmFtZSB0aGF0IHdvdWxkIHJlc29sdmUgdG8gYSBsZXhpY2FsIHZhcmlhYmxlLiBFLmc6
CisgICAgICAgICAgICAgICAgICAgIC8vIGBgYAorICAgICAgICAgICAgICAgICAgICAvLyAgICAg
ZnVuY3Rpb24gZigpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIC8vICAgICAgICAgICAgIGxldCB4OworICAgICAgICAgICAgICAgICAgICAv
LyAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgIC8vLy8g
ZXJyb3IgdGhyb3duIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAg
ICBldmFsKCJmdW5jdGlvbiB4KCl7fSIpOworICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAvLyAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBgYGAKKyAgICAgICAgICAgICAg
ICAgICAgLy8gVGhlcmVmb3JlLCB3ZSdyZSBndWFyYW50ZWVkIHRvIGhhdmUgdGhpcyByZXNvbHZl
IHRvIGEgdG9wIGxldmVsIHZhcmlhYmxlLgorICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdG9sTGV2ZWxPYmplY3RTY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
VmFyaWFibGUobWV0YWRhdGEtPmlkZW50KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgdG9sTGV2
ZWxTY29wZSA9IG5ld0Jsb2NrU2NvcGVWYXJpYWJsZSgpOworICAgICAgICAgICAgICAgICAgICBl
bWl0TW92ZSh0b2xMZXZlbFNjb3BlLmdldCgpLCB0b2xMZXZlbE9iamVjdFNjb3BlLmdldCgpKTsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZW1pdFB1dFRvU2NvcGUoZ2xvYmFs
U2NvcGUuZ2V0KCksIFZhcmlhYmxlKG1ldGFkYXRhLT5pZGVudCgpKSwgdGVtcC5nZXQoKSwgVGhy
b3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6Ok5vdEluaXRpYWxpemF0aW9uKTsKKyAg
ICAgICAgICAgICAgICBlbWl0UHV0VG9TY29wZSh0b2xMZXZlbFNjb3BlLmdldCgpLCBWYXJpYWJs
ZShtZXRhZGF0YS0+aWRlbnQoKSksIHRlbXAuZ2V0KCksIFRocm93SWZOb3RGb3VuZCwgSW5pdGlh
bGl6YXRpb25Nb2RlOjpOb3RJbml0aWFsaXphdGlvbik7CiAgICAgICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CkBA
IC0yMDAsNyArMjE0LDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZN
JiB2bSwgUHJvZ3JhbU5vZGUqIHByb2dyYW1Ob2RlLCBVbmxpbmtlZFAKICAgICBjb25zdCBGdW5j
dGlvblN0YWNrJiBmdW5jdGlvblN0YWNrID0gcHJvZ3JhbU5vZGUtPmZ1bmN0aW9uU3RhY2soKTsK
IAogICAgIGZvciAoYXV0byogZnVuY3Rpb24gOiBmdW5jdGlvblN0YWNrKQotICAgICAgICBtX2Z1
bmN0aW9uc1RvSW5pdGlhbGl6ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIEdsb2Jh
bEZ1bmN0aW9uVmFyaWFibGUpKTsKKyAgICAgICAgbV9mdW5jdGlvbnNUb0luaXRpYWxpemUuYXBw
ZW5kKHN0ZDo6bWFrZV9wYWlyKGZ1bmN0aW9uLCBUb3BMZXZlbEZ1bmN0aW9uVmFyaWFibGUpKTsK
IAogICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUJ5dGVjb2RlKCkpIHsKICAgICAgICAgZm9yIChh
dXRvJiBlbnRyeSA6IHByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlvbnMoKSkKQEAgLTc1Niw4ICs3
NzAsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRXZh
bE5vZGUqIGV2YWxOb2RlLCBVbmxpbmtlZEV2YWxDb2QKIAogICAgIGVtaXRDaGVja1RyYXBzKCk7
CiAgICAgCi0gICAgZm9yIChGdW5jdGlvbk1ldGFkYXRhTm9kZSogZnVuY3Rpb24gOiBldmFsTm9k
ZS0+ZnVuY3Rpb25TdGFjaygpKQorICAgIGZvciAoRnVuY3Rpb25NZXRhZGF0YU5vZGUqIGZ1bmN0
aW9uIDogZXZhbE5vZGUtPmZ1bmN0aW9uU3RhY2soKSkgewogICAgICAgICBtX2NvZGVCbG9jay0+
YWRkRnVuY3Rpb25EZWNsKG1ha2VGdW5jdGlvbihmdW5jdGlvbikpOworICAgICAgICBtX2Z1bmN0
aW9uc1RvSW5pdGlhbGl6ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoZnVuY3Rpb24sIFRvcExldmVs
RnVuY3Rpb25WYXJpYWJsZSkpOworICAgIH0KIAogICAgIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1l
bnQmIHZhckRlY2xhcmF0aW9ucyA9IGV2YWxOb2RlLT52YXJEZWNsYXJhdGlvbnMoKTsKICAgICBW
ZWN0b3I8SWRlbnRpZmllciwgMCwgVW5zYWZlVmVjdG9yT3ZlcmZsb3c+IHZhcmlhYmxlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaAppbmRleCBlZWMwYTRmNmRlZGMwZDUxODIxNWFjMTE2M2I4MmRjNTFjNmEyMWZiLi4z
MDM3MGY5OTIzMGM1NjkyNWFlYWM3NWM5NmRlYzU1NDkxMzIxMTIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBA
IC0xMTExLDcgKzExMTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ryb25nPFN5bWJv
bFRhYmxlPiBtX2dlbmVyYXRvckZyYW1lU3ltYm9sVGFibGU7CiAgICAgICAgIGludCBtX2dlbmVy
YXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCB7IDAgfTsKIAotICAgICAgICBlbnVtIEZ1bmN0aW9u
VmFyaWFibGVUeXBlIDogdWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1
bmN0aW9uVmFyaWFibGUgfTsKKyAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVp
bnQ4X3QgeyBOb3JtYWxGdW5jdGlvblZhcmlhYmxlLCBUb3BMZXZlbEZ1bmN0aW9uVmFyaWFibGUg
fTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbk1ldGFkYXRhTm9kZSosIEZ1bmN0
aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wg
bV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzIHsgZmFsc2UgfTsKICAgICAgICAgUmVzdFBhcmFt
ZXRlck5vZGUqIG1fcmVzdFBhcmFtZXRlciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGZlZjgzMjRjNGI5
ZGJjODRhZGNiMjZiZTNjZmQyM2YxZDdiMTZhNGIuLjZkZDgxYTk5OWU5OWFjNjg1ZTc4NzE4Nzcx
N2E1OGEwZGZlNzllNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcApAQCAtMTE3MCw3ICsxMTcwLDggQEAgSlNWYWx1ZSBJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IEpTVmFsdWUKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3BMZXZl
bEZ1bmN0aW9uRGVjbHM7ICsraSkgewogICAgICAgICAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAgICAgICAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdCh2YXJpYWJsZU9iamVjdCk7Ci0gICAgICAgICAgICAgICAg
dmFyaWFibGVPYmplY3QtPm1ldGhvZFRhYmxlKCktPnB1dCh2YXJpYWJsZU9iamVjdCwgY2FsbEZy
YW1lLCBmdW5jdGlvbi0+bmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGZ1bmN0aW9uLCBz
Y29wZSksIHNsb3QpOworICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgY3JlYXRlIHRoaXMgdmFy
aWFibGVzIGJlY2F1c2UgaXQgd2lsbCBiZSB1c2VkIHRvIGVtaXRzIGNvZGUgYnkgYnl0ZWNvZGUg
Z2VuZXJhdG9yCisgICAgICAgICAgICAgICAgdmFyaWFibGVPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PnB1dCh2YXJpYWJsZU9iamVjdCwgY2FsbEZyYW1lLCBmdW5jdGlvbi0+bmFtZSgpLCBqc1VuZGVm
aW5lZCgpLCBzbG90KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Ub3BMZXZlbEZ1bmN0aW9uRGVjbHM7ICsr
aSkgewpAQCAtMTE3OSw3ICsxMTgwLDggQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShF
dmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUKICAgICAg
ICAgICAgICAgICBpZiAocmVzb2x2ZWRTY29wZS5pc1VuZGVmaW5lZCgpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1N5bnRheEVycm9yKGNhbGxGcmFtZSwg
dGhyb3dTY29wZSwgbWFrZVN0cmluZygiQ2FuJ3QgY3JlYXRlIGR1cGxpY2F0ZSB2YXJpYWJsZSBp
biBldmFsOiAnIiwgU3RyaW5nKGZ1bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwgIiciKSkpOwogICAg
ICAgICAgICAgICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KHZhcmlhYmxlT2JqZWN0KTsKLSAgICAg
ICAgICAgICAgICB2YXJpYWJsZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHZhcmlhYmxlT2Jq
ZWN0LCBjYWxsRnJhbWUsIGZ1bmN0aW9uLT5uYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
ZnVuY3Rpb24sIHNjb3BlKSwgc2xvdCk7CisgICAgICAgICAgICAgICAgLy8gV2UgbmVlZCBjcmVh
dGUgdGhpcyB2YXJpYWJsZXMgYmVjYXVzZSBpdCB3aWxsIGJlIHVzZWQgdG8gZW1pdHMgY29kZSBi
eSBieXRlY29kZSBnZW5lcmF0b3IKKyAgICAgICAgICAgICAgICB2YXJpYWJsZU9iamVjdC0+bWV0
aG9kVGFibGUoKS0+cHV0KHZhcmlhYmxlT2JqZWN0LCBjYWxsRnJhbWUsIGZ1bmN0aW9uLT5uYW1l
KCksIGpzVW5kZWZpbmVkKCksIHNsb3QpOwogICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgY2hlY2tlZFJldHVybih0aHJvd1Njb3BlLmV4Y2VwdGlvbigpKSk7
CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZWNkZTI5NDNhMGU2OGUzMmYzYjEyMWEzODM5YWUzYmE0NGY5OWM4
YS4uNTY1ODViZmI4Mjk4YzhiZjNiODJkNTI1MTQ4MWRmZDQ3ZmQ5ZDRmMiAxMDA2NDQKLS0tIGEv
SlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxNy0wNC0yMyAgT2xla3NhbmRyIFNrYWNoa292ICA8Z3NrYWNoa292QGdtYWlsLmNvbT4K
KworICAgICAgICBXZSBpbml0aWFsaXplIGZ1bmN0aW9ucyB0b28gZWFybHkgaW4gYW4gZXZhbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxMDk5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mv
ZXZhbC1mdW5jLWRlY2wtd2l0aC1sZXQtY29uc3QtY2xhc3MuanM6IEFkZGVkLgorCiAyMDE3LTA0
LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICByMjExNjcwIGJy
b2tlIGRvdWJsZSB0byBpbnQgY29udmVyc2lvbi4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2V2YWwtZnVuYy1kZWNsLXdpdGgtbGV0LWNvbnN0LWNsYXNzLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
ZXZhbC1mdW5jLWRlY2wtd2l0aC1sZXQtY29uc3QtY2xhc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2EyMGE4
MWJjMzExZmRmNDE3YTU0ZTFlNTZjZThkYzM3NWY0MTY4ZAotLS0gL2Rldi9udWxsCisrKyBiL0pT
VGVzdHMvc3RyZXNzL2V2YWwtZnVuYy1kZWNsLXdpdGgtbGV0LWNvbnN0LWNsYXNzLmpzCkBAIC0w
LDAgKzEsMTEwIEBACit2YXIgYXNzZXJ0ID0gZnVuY3Rpb24gKHJlc3VsdCwgZXhwZWN0ZWQpIHsK
KyAgICBpZiAocmVzdWx0ICE9PSBleHBlY3RlZCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J0Vycm9yIGluIGFzc2VydC4gRXhwZWN0ZWQtJyArIGV4cGVjdGVkICsgJyBidXQgd2FzICcgKyBy
ZXN1bHQpOworICAgIH0KK307CisKK3ZhciBhc3NlcnRUaHJvdyA9IGZ1bmN0aW9uIChjYiwgZXhw
ZWN0ZWQpIHsKKyAgICBsZXQgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGNiKCk7
CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGVycm9yID0gZTsgIAorICAgIH0KKyAgICBpZiAo
ZXJyb3IgPT09IG51bGwpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvciBpcyBleHBl
Y3RlZC4gRXhwZWN0ZWQgIicgKyBleHBlY3RlZCArICciIGJ1dCBlcnJvciB3YXMgbm90IHRocm93
bi4iJyk7CisgICAgfQorICAgIGlmIChlcnJvci50b1N0cmluZygpICE9PSBleHBlY3RlZCkgewor
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yIGlzIGV4cGVjdGVkLiBFeHBlY3RlZCAiJyAr
IGV4cGVjdGVkICsgJyIgYnV0IGVycm9yIHdhcyAiJyArIGVycm9yICsgJyInKTsKKyAgICB9Cit9
OworCit2YXIgYXNzZXJ0Tm90VGhyb3cgPSBmdW5jdGlvbiAoY2IpIHsKKyAgICB0cnkgIHsKKyAg
ICAgICAgY2IoKTsgICAKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgdGhyb3cgbmV3IEVycm9y
KCdFcnJvciBpcyBub3QgZXhwZWN0ZWQuIEJ1dCB3YXMgdGhyb3cgZXJyb3I6ICInICsgZXhwZWN0
ZWQgKyAnIicpOworICAgIH0KK30KKwordmFyIHJlc3VsdCA9IDA7CisKK2V2YWwoIid1c2Ugc3Ry
aWN0JzsgbGV0IHkgPSA1OyBmdW5jdGlvbiBmKCkgeyByZXN1bHQgPSB5O30gZigpIik7Cithc3Nl
cnQocmVzdWx0LCA1KTsKKworZXZhbCgiJ3VzZSBzdHJpY3QnOyBjb25zdCB4ID0gMTA7IGZ1bmN0
aW9uIGYoKSB7IHJlc3VsdCA9IHg7fSBmKCkiKTsKK2Fzc2VydChyZXN1bHQsIDEwKTsKKworZXZh
bCgiJ3VzZSBzdHJpY3QnOyBjbGFzcyBBIHsgY29uc3RydWN0b3IoKSB7IHRoaXMuaWQgPSAnZm9v
JzsgfSB9OyBmdW5jdGlvbiBmb28oKSB7IHJldHVybiAobmV3IEEpLmlkOyB9OyByZXN1bHQgPSBm
b28oKTsiKTsKK2Fzc2VydChyZXN1bHQsICdmb28nKTsKKworCitldmFsKCJsZXQgeSA9IDE1OyBm
dW5jdGlvbiBmKCkgeyByZXN1bHQgPSB5O30gZigpIik7Cithc3NlcnQocmVzdWx0LCAxNSk7CisK
K2V2YWwoImNvbnN0IHggPSAyMDsgZnVuY3Rpb24gZigpIHsgcmVzdWx0ID0geDt9IGYoKSIpOwor
YXNzZXJ0KHJlc3VsdCwgMjApOworCitldmFsKCJjbGFzcyBCIHsgY29uc3RydWN0b3IoKSB7IHRo
aXMuaWQgPSAnYm9vJzsgfSB9OyBmdW5jdGlvbiBmb28oKSB7IHJldHVybiAobmV3IEIpLmlkOyB9
OyByZXN1bHQgPSBmb28oKTsiKTsKK2Fzc2VydChyZXN1bHQsICdib28nKTsKKworZnVuY3Rpb24g
Zm9vICgpIHsKKyAgICB2YXIgcmVzID0gMDsKKworICAgIGV2YWwoIid1c2Ugc3RyaWN0JzsgbGV0
IHkgPSA1OyBmdW5jdGlvbiBmKCkgeyByZXMgPSB5O30gZigpIik7CisgICAgYXNzZXJ0KHJlcywg
NSk7CisKKyAgICBldmFsKCIndXNlIHN0cmljdCc7IGNvbnN0IHggPSAxMDsgZnVuY3Rpb24gZigp
IHsgcmVzdWx0ID0geDt9IGYoKSIpOworICAgIGFzc2VydChyZXMsIDEwKTsKKworICAgIGV2YWwo
Iid1c2Ugc3RyaWN0JzsgY2xhc3MgQyB7IGNvbnN0cnVjdG9yKCkgeyB0aGlzLmlkID0gJ2Zvbyc7
IH0gfTsgZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4gKG5ldyBDKS5pZDsgfTsgcmVzdWx0ID0gZm9v
KCk7Iik7CisgICAgYXNzZXJ0KHJlcywgJ2ZvbycpOworCisKKyAgICBldmFsKCJsZXQgeSA9IDE1
OyBmdW5jdGlvbiBmKCkgeyByZXN1bHQgPSB5O30gZigpIik7CisgICAgYXNzZXJ0KHJlcywgMTUp
OworCisgICAgZXZhbCgiY29uc3QgeCA9IDIwOyBmdW5jdGlvbiBmKCkgeyByZXN1bHQgPSB4O30g
ZigpIik7CisgICAgYXNzZXJ0KHJlcywgMjApOworCisgICAgZXZhbCgiY2xhc3MgRCB7IGNvbnN0
cnVjdG9yKCkgeyB0aGlzLmlkID0gJ2Jvbyc7IH0gfTsgZnVuY3Rpb24gZm9vKCkgeyByZXR1cm4g
KG5ldyBEKS5pZDsgfTsgcmVzdWx0ID0gZm9vKCk7Iik7CisgICAgYXNzZXJ0KHJlcywgJ2Jvbycp
OworfQorCitmb28oKTsKKworZnVuY3Rpb24gYm9vICgpIHsKKyAgICB7CisgICAgICAgIGxldCBm
OworICAgICAgICBldmFsKCIndXNlIHN0cmljdCc7IGxldCB5ID0gNTsgZnVuY3Rpb24gZigpIHsg
cmVzdWx0ID0geTt9IGYoKSIpOworICAgICAgICBldmFsKCIndXNlIHN0cmljdCc7IGNvbnN0IHgg
PSAxMDsgZnVuY3Rpb24gZigpIHsgcmVzdWx0ID0geDt9IGYoKSIpOworICAgICAgICBldmFsKCIn
dXNlIHN0cmljdCc7IGNsYXNzIEUgeyBjb25zdHJ1Y3RvcigpIHsgdGhpcy5pZCA9ICdmb28nOyB9
IH07IGZ1bmN0aW9uIGYoKSB7IHJldHVybiAobmV3IEUpLmlkOyB9OyByZXN1bHQgPSBmKCk7Iik7
CisgICAgfQorfQorCitmdW5jdGlvbiBiYXIgKCkgeworICAgIHsKKyAgICAgICAgbGV0IGY7Cisg
ICAgICAgIGV2YWwoImxldCB5ID0gMTU7IGZ1bmN0aW9uIGYoKSB7IHJlc3VsdCA9IHk7fSBmKCki
KTsKKyAgICB9CisKK30KKworZnVuY3Rpb24gZm9vYmFyICgpIHsKKyAgICB7CisgICAgICAgIGxl
dCBmOworICAgICAgICBldmFsKCJjb25zdCB4ID0gMjA7IGZ1bmN0aW9uIGYoKSB7IHJlc3VsdCA9
IHg7IH0gZigpIik7CisgICAgfQorfQorCitmdW5jdGlvbiBiYXooKSB7CisgICAgeworICAgICAg
ICBsZXQgZjsKKyAgICAgICAgZXZhbCgiY29uc3QgeCA9IDIwOyBmdW5jdGlvbiBmKCkgeyByZXN1
bHQgPSB4OyB9IGYoKSIpOworICAgIH0gICAKK30KKworYXNzZXJ0Tm90VGhyb3coKCkgPT4gYm9v
KCkpOworYXNzZXJ0VGhyb3coKCkgPT4gYmFyKCksICdTeW50YXhFcnJvcjogQ2FuXCd0IGNyZWF0
ZSBkdXBsaWNhdGUgdmFyaWFibGUgaW4gZXZhbDogXCdmXCcnKTsKK2Fzc2VydFRocm93KCgpID0+
IGZvb2JhcigpLCAnU3ludGF4RXJyb3I6IENhblwndCBjcmVhdGUgZHVwbGljYXRlIHZhcmlhYmxl
IGluIGV2YWw6IFwnZlwnJyk7Cithc3NlcnRUaHJvdygoKSA9PiBiYXooKSwgJ1N5bnRheEVycm9y
OiBDYW5cJ3QgY3JlYXRlIGR1cGxpY2F0ZSB2YXJpYWJsZSBpbiBldmFsOiBcJ2ZcJycpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>