<?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>146133</bug_id>
          
          <creation_ts>2015-06-18 17:36:58 -0700</creation_ts>
          <short_desc>Crash in com.apple.WebKit.WebContent at com.apple.JavaScriptCore: JSC::FTL::fixFunctionBasedOnStackMaps + 17225</short_desc>
          <delta_ts>2015-06-19 15:28:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1103109</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-18 17:36:58 -0700</bug_when>
    <thetext>The FTL inline cache code uses constants sizes to allocate space for inline cache code.  Those constants are empirically determined, yet we seems to hit cases where the constants are exceeded.  when that happens we don&apos;t have any fallback, instead we RELEASE_ASSERT.

Instead, if the code we want to generate is larger than is available, we should generate the code out of line and jump to it from the inline area.

&lt;rdar://problem/20772159&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103111</commentid>
    <comment_count>1</comment_count>
      <attachid>255157</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-18 17:39:30 -0700</bug_when>
    <thetext>Created attachment 255157
Work in progress that forces the out of line case all the time.  Posted for EWS testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103112</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-18 17:41:25 -0700</bug_when>
    <thetext>Attachment 255157 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLJITFinalizer.h:45:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLJITFinalizer.h:46:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/ftl/FTLCompile.cpp:167:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/ftl/FTLCompile.cpp:168:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/ftl/FTLCompile.cpp:199:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:114:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:115:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 7 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103114</commentid>
    <comment_count>3</comment_count>
      <attachid>255157</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-06-18 17:55:05 -0700</bug_when>
    <thetext>Comment on attachment 255157
Work in progress that forces the out of line case all the time.  Posted for EWS testing.

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

&gt; Source/JavaScriptCore/assembler/LinkBuffer.h:112
&gt; +        if (macroAssembler.m_assembler.buffer().codeSize() &gt; size || size &gt; 10) {

I assume the &quot;10&quot; here is just for testing?

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:168
&gt; +static void generateICIfPossibleOutOfLineIfNot(State&amp; state, VM&amp; vm, CodeBlock* codeBlock, CCallHelpers&amp; code, char* startOfInlineCode, size_t sizeOfInlineCode, const char* codeDescription, const std::function&lt;void(LinkBuffer&amp;, CCallHelpers&amp;, bool wasCompiledInline)&gt;&amp; callback)
&gt; +{
&gt; +    bool compiledInline = true;
&gt; +
&gt; +    std::unique_ptr&lt;LinkBuffer&gt; codeLinkBuffer;
&gt; +    size_t actualCodeSize = code.m_assembler.buffer().codeSize();
&gt; +
&gt; +    if ((actualCodeSize &gt; sizeOfInlineCode) || (sizeOfInlineCode &gt; 10)) {
&gt; +        // If there isn&apos;t enough space in the provided inline code area, allocate out of line
&gt; +        // executable memory to link the provided code.  Place a jump at the beginning of the
&gt; +        // inline area and jump to the out of line code.  Similarly return by appending a jump

This function seems redundant with the LinkBuffer thing.  Will we have both or just one of them?

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:231
&gt; +        auto postLink = [&amp;](LinkBuffer&amp; linkBuffer, CCallHelpers&amp;, bool)
&gt; +        {

We usually say lambdas this way:

auto postLink = [&amp;] (LinkBuffer&amp; linkBuffer, CCallHelpers&amp;, bool) {

That is, space between &quot;]&quot; and &quot;(&quot; and we put the &quot;{&quot; on the same line.  I don&apos;t know how this style arose, but I saw that WK2 code was doing it so that&apos;s how I started writing my lambdas.  Now I guess it has taken over.  But stylebot doesn&apos;t know yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103322</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-19 11:27:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 255157 [details]
&gt; Work in progress that forces the out of line case all the time.  Posted for
&gt; EWS testing.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=255157&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/assembler/LinkBuffer.h:112
&gt; &gt; +        if (macroAssembler.m_assembler.buffer().codeSize() &gt; size || size &gt; 10) {
&gt; 
&gt; I assume the &quot;10&quot; here is just for testing?

Yes.

&gt; &gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:168
&gt; &gt; +static void generateICIfPossibleOutOfLineIfNot(State&amp; state, VM&amp; vm, CodeBlock* codeBlock, CCallHelpers&amp; code, char* startOfInlineCode, size_t sizeOfInlineCode, const char* codeDescription, const std::function&lt;void(LinkBuffer&amp;, CCallHelpers&amp;, bool wasCompiledInline)&gt;&amp; callback)
&gt; &gt; +{
&gt; &gt; +    bool compiledInline = true;
&gt; &gt; +
&gt; &gt; +    std::unique_ptr&lt;LinkBuffer&gt; codeLinkBuffer;
&gt; &gt; +    size_t actualCodeSize = code.m_assembler.buffer().codeSize();
&gt; &gt; +
&gt; &gt; +    if ((actualCodeSize &gt; sizeOfInlineCode) || (sizeOfInlineCode &gt; 10)) {
&gt; &gt; +        // If there isn&apos;t enough space in the provided inline code area, allocate out of line
&gt; &gt; +        // executable memory to link the provided code.  Place a jump at the beginning of the
&gt; &gt; +        // inline area and jump to the out of line code.  Similarly return by appending a jump
&gt; 
&gt; This function seems redundant with the LinkBuffer thing.  Will we have both
&gt; or just one of them?

The new LinkBuffer constructor was the first try at a fix.  It will be removed.

&gt; &gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:231
&gt; &gt; +        auto postLink = [&amp;](LinkBuffer&amp; linkBuffer, CCallHelpers&amp;, bool)
&gt; &gt; +        {
&gt; 
&gt; We usually say lambdas this way:
&gt; 
&gt; auto postLink = [&amp;] (LinkBuffer&amp; linkBuffer, CCallHelpers&amp;, bool) {
&gt; 
&gt; That is, space between &quot;]&quot; and &quot;(&quot; and we put the &quot;{&quot; on the same line.  I
&gt; don&apos;t know how this style arose, but I saw that WK2 code was doing it so
&gt; that&apos;s how I started writing my lambdas.  Now I guess it has taken over. 
&gt; But stylebot doesn&apos;t know yet.

I updated the lambdas accordingly.  I inlined the three smaller ones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103323</commentid>
    <comment_count>5</comment_count>
      <attachid>255202</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-19 11:28:01 -0700</bug_when>
    <thetext>Created attachment 255202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103325</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-19 11:30:35 -0700</bug_when>
    <thetext>Attachment 255202 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLCompile.cpp:272:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103341</commentid>
    <comment_count>7</comment_count>
      <attachid>255202</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-06-19 11:45:29 -0700</bug_when>
    <thetext>Comment on attachment 255202
Patch

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

r=me with some edits below.

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:170
&gt; +        // Fill the middle with nop&apos;s

Needs a &quot;.&quot;.

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:175
&gt; +        codeLinkBuffer = std::make_unique&lt;LinkBuffer&gt;(vm, code, codeBlock, JITCompilationCanFail);

We shouldn&apos;t use JITCompilationCanFail because we don&apos;t have a recovery path, so it&apos;s a security bug to allow compilation to fail without crashing. Let&apos;s use JITCompilationMustSucceed.

Long-term, we should write the recover path -- but we didn&apos;t have it before, so I won&apos;t ask you to add it in this patch.

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:178
&gt; +        MacroAssembler callToOutOfLineJit;

Let&apos;s call this callToOutOfLineCode. We&apos;re not calling to a JIT, and &quot;Jit&quot; is the wrong style.

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:183
&gt; +        // Fill the remainder of the inline space with nops

Let&apos;s say why we&apos;re doing this (for the disassembler), and put a &quot;.&quot; at the end.

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:195
&gt; +        codeLinkBuffer = std::make_unique&lt;LinkBuffer&gt;(vm, code, startOfInlineCode, sizeOfInlineCode);
&gt; +
&gt; +        // Fill the remainder of the inline space with nops
&gt; +        MacroAssembler::AssemblerType_T::fillNops(bitwise_cast&lt;char*&gt;(startOfInlineCode) + actualCodeSize, sizeOfInlineCode - actualCodeSize);
&gt; +    }
&gt; +
&gt; +    callback(*codeLinkBuffer.get(), code, compiledInline);

I think this would read more clearly if you put the common case first followed by early return. That way, we don&apos;t need to track a boolean to say what we did, and we don&apos;t need to malloc the link buffer in the common case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103351</commentid>
    <comment_count>8</comment_count>
      <attachid>255211</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-19 12:08:00 -0700</bug_when>
    <thetext>Created attachment 255211
Patch for landing

Made changes suggested by Geoff.

Fixed a debug build failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103354</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-19 12:09:59 -0700</bug_when>
    <thetext>Attachment 255211 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLCompile.cpp:272:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103371</commentid>
    <comment_count>10</comment_count>
      <attachid>255217</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-19 12:46:25 -0700</bug_when>
    <thetext>Created attachment 255217
Updated patch to fix build

Turns out LinkBuffer::isValid() is used in other places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103372</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-19 12:48:25 -0700</bug_when>
    <thetext>Attachment 255217 did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLCompile.cpp:272:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103441</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-06-19 15:28:59 -0700</bug_when>
    <thetext>Committed r185772: &lt;http://trac.webkit.org/changeset/185772&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255157</attachid>
            <date>2015-06-18 17:39:30 -0700</date>
            <delta_ts>2015-06-19 11:28:01 -0700</delta_ts>
            <desc>Work in progress that forces the out of line case all the time.  Posted for EWS testing.</desc>
            <filename>out-of-line-large-inline-calls-wip2.patch</filename>
            <type>text/plain</type>
            <size>15558</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShy
ZXZpc2lvbiAxODU2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICwgbV9pbml0aWFsU2l6ZSgwKQogI2VuZGlmCiAgICAgICAgICwgbV9kaWRBbGxvY2F0ZShmYWxz
ZSkKKyAgICAgICAgLCBtX2FsbG9jYXRlZE91dE9mTGluZShmYWxzZSkKICAgICAgICAgLCBtX2Nv
ZGUoMCkKICAgICAgICAgLCBtX3ZtKCZ2bSkKICNpZm5kZWYgTkRFQlVHCkBAIC05NSwxMiArOTYs
NjAgQEAgcHVibGljOgogICAgICAgICBsaW5rQ29kZShtYWNyb0Fzc2VtYmxlciwgb3duZXJVSUQs
IGVmZm9ydCk7CiAgICAgfQogCisgICAgTGlua0J1ZmZlcihWTSYgdm0sIE1hY3JvQXNzZW1ibGVy
JiBtYWNyb0Fzc2VtYmxlciwgdm9pZCogb3duZXJVSUQsIHZvaWQqIGNvZGUsIHNpemVfdCBzaXpl
KQorICAgICAgICA6IG1fc2l6ZShzaXplKQorI2lmIEVOQUJMRShCUkFOQ0hfQ09NUEFDVElPTikK
KyAgICAgICAgLCBtX2luaXRpYWxTaXplKDApCisjZW5kaWYKKyAgICAgICAgLCBtX2RpZEFsbG9j
YXRlKGZhbHNlKQorICAgICAgICAsIG1fYWxsb2NhdGVkT3V0T2ZMaW5lKGZhbHNlKQorICAgICAg
ICAsIG1fY29kZShjb2RlKQorICAgICAgICAsIG1fdm0oJnZtKQorI2lmbmRlZiBOREVCVUcKKyAg
ICAgICAgLCBtX2NvbXBsZXRlZChmYWxzZSkKKyNlbmRpZgorICAgIHsKKyAgICAgICAgaWYgKG1h
Y3JvQXNzZW1ibGVyLm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCkgPiBzaXplIHx8IHNp
emUgPiAxMCkgeworICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlIGlu
IHRoZSBwcm92aWRlZCBpbmxpbmUgY29kZSBhcmVhLCBhbGxvY2F0ZSBvdXQgb2YgbGluZQorICAg
ICAgICAgICAgLy8gZXhlY3V0YWJsZSBtZW1vcnkgdG8gbGluayB0aGUgcHJvdmlkZWQgY29kZS4g
IFBsYWNlIGEganVtcCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAgICAgICAgICAgLy8gaW5s
aW5lIGFyZWEgYW5kIGp1bXAgdG8gdGhlIG91dCBvZiBsaW5lIGNvZGUuICBTaW1pbGFybHkgcmV0
dXJuIGJ5IGFwcGVuZGluZyBhIGp1bXAKKyAgICAgICAgICAgIC8vIHRvIHRoZSBwcm92aWRlZCBj
b2RlIHRoYXQgZ29lcyB0byB0aGUgaW5zdHJ1Y3Rpb24gYWZ0ZXIgdGhlIGlubGluZSBjb2RlLgor
ICAgICAgICAgICAgLy8gRmlsbCB0aGUgbWlkZGxlIHdpdGggbm9wJ3MKKyAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHJldHVyblRvTWFpbmxpbmUgPSBtYWNyb0Fzc2VtYmxlci5qdW1w
KCk7CisgICAgICAgICAgICBtX2FsbG9jYXRlZE91dE9mTGluZSA9IHRydWU7CisgICAgICAgICAg
ICBtX2NvZGUgPSAwOworCisgICAgICAgICAgICAvLyBBbGxvY2F0ZSBvdXQgb2YgbGluZSBleGVj
dXRhYmxlIG1lbW9yeSBhbmQgbGluayB0aGUgcHJvdmlkZWQgY29kZSB0aGVyZS4KKyAgICAgICAg
ICAgIGxpbmtDb2RlKG1hY3JvQXNzZW1ibGVyLCBvd25lclVJRCwgSklUQ29tcGlsYXRpb25DYW5G
YWlsKTsKKworICAgICAgICAgICAgLy8gUGxhbnQgYSBqbXAgaW4gdGhlIGlubGluZSBidWZmZXIg
dG8gdGhlIG91dCBvZiBsaW5lIGNvZGUuCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlciBjYWxs
VG9PdXRPZkxpbmVKaXQ7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9P
dXRPZkxpbmUgPSBjYWxsVG9PdXRPZkxpbmVKaXQuanVtcCgpOworICAgICAgICAgICAgTGlua0J1
ZmZlciBpbmxpbmVCdWZmZXIodm0sIGNhbGxUb091dE9mTGluZUppdCwgY29kZSwgc2l6ZSk7Cisg
ICAgICAgICAgICBpbmxpbmVCdWZmZXIubGluayhqdW1wVG9PdXRPZkxpbmUsIENvZGVMb2NhdGlv
bkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNz
KG1fY29kZSkpLmxhYmVsQXRPZmZzZXQoMCkpOworCisgICAgICAgICAgICAvLyBGaWxsIHRoZSBy
ZW1haW5kZXIgb2YgdGhlIGlubGluZSBzcGFjZSB3aXRoIG5vcHMKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpBc3NlbWJsZXJUeXBlX1Q6OmZpbGxOb3BzKAorICAgICAgICAgICAgICAgIGJp
dHdpc2VfY2FzdDxjaGFyKj4oY29kZSkgKyBpbmxpbmVCdWZmZXIuc2l6ZSgpLCBzaXplIC0gaW5s
aW5lQnVmZmVyLnNpemUoKSk7CisKKyAgICAgICAgICAgIC8vIExpbmsgdGhlIGVuZCBvZiB0aGUg
b3V0IG9mIGxpbmUgY29kZSB0byByaWdodCBhZnRlciB0aGUgaW5saW5lIGFyZWEuCisgICAgICAg
ICAgICBsaW5rKHJldHVyblRvTWFpbmxpbmUsIENvZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGNvZGUpKS5sYWJlbEF0T2Zm
c2V0KHNpemUpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxpbmtDb2RlKG1hY3Jv
QXNzZW1ibGVyLCAwLCBKSVRDb21waWxhdGlvbkNhbkZhaWwpOworCisgICAgICAgICAgICAvLyBG
aWxsIHRoZSByZW1haW5kZXIgb2YgdGhlIGlubGluZSBzcGFjZSB3aXRoIG5vcHMKKyAgICAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBc3NlbWJsZXJUeXBlX1Q6OmZpbGxOb3BzKAorICAgICAgICAg
ICAgICAgIGJpdHdpc2VfY2FzdDxjaGFyKj4oY29kZSkgKyBtX3NpemUsIHNpemUgLSBtX3NpemUp
OworICAgICAgICB9CisgICAgfQorCiAgICAgTGlua0J1ZmZlcihWTSYgdm0sIE1hY3JvQXNzZW1i
bGVyJiBtYWNyb0Fzc2VtYmxlciwgdm9pZCogY29kZSwgc2l6ZV90IHNpemUpCiAgICAgICAgIDog
bV9zaXplKHNpemUpCiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQogICAgICAgICAsIG1f
aW5pdGlhbFNpemUoMCkKICNlbmRpZgogICAgICAgICAsIG1fZGlkQWxsb2NhdGUoZmFsc2UpCisg
ICAgICAgICwgbV9hbGxvY2F0ZWRPdXRPZkxpbmUoZmFsc2UpCiAgICAgICAgICwgbV9jb2RlKGNv
ZGUpCiAgICAgICAgICwgbV92bSgmdm0pCiAjaWZuZGVmIE5ERUJVRwpAQCAtMTEzLDcgKzE2Miw3
IEBAIHB1YmxpYzoKICAgICB+TGlua0J1ZmZlcigpCiAgICAgewogICAgIH0KLSAgICAKKwogICAg
IGJvb2wgZGlkRmFpbFRvQWxsb2NhdGUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICFt
X2RpZEFsbG9jYXRlOwpAQCAtMTIzLDYgKzE3MiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICByZXR1cm4gIWRpZEZhaWxUb0FsbG9jYXRlKCk7CiAgICAgfQorCisgICAgYm9vbCBhbGxvY2F0
ZWRPdXRPZkxpbmUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYWxsb2NhdGVkT3V0
T2ZMaW5lOworICAgIH0KICAgICAKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSB1c2VkIHRvIGxp
bmsgb3Igc2V0IHZhbHVlcyBhdCBjb2RlIGdlbmVyYXRpb24gdGltZS4KIApAQCAtMzA4LDYgKzM2
Miw3IEBAIHByaXZhdGU6CiAgICAgQXNzZW1ibGVyRGF0YSBtX2Fzc2VtYmxlclN0b3JhZ2U7CiAj
ZW5kaWYKICAgICBib29sIG1fZGlkQWxsb2NhdGU7CisgICAgYm9vbCBtX2FsbG9jYXRlZE91dE9m
TGluZTsKICAgICB2b2lkKiBtX2NvZGU7CiAgICAgVk0qIG1fdm07CiAjaWZuZGVmIE5ERUJVRwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAx
ODU2MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDUwIEBAIHN0YXRpYyBpbnQgb2Zmc2V0T2ZTdGFja1Jl
Z2lvbihTdGFja01hcHMKICAgICByZXR1cm4gY2FwdHVyZWRMb2NhdGlvbi5hZGRlbmQoKSAvIHNp
emVvZihSZWdpc3Rlcik7CiB9CiAKK3N0YXRpYyB2b2lkIGdlbmVyYXRlSUNJZlBvc3NpYmxlT3V0
T2ZMaW5lSWZOb3QoU3RhdGUmIHN0YXRlLCBWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBD
Q2FsbEhlbHBlcnMmIGNvZGUsIGNoYXIqIHN0YXJ0T2ZJbmxpbmVDb2RlLCBzaXplX3Qgc2l6ZU9m
SW5saW5lQ29kZSwgY29uc3QgY2hhciogY29kZURlc2NyaXB0aW9uLCBjb25zdCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoTGlua0J1ZmZlciYsIENDYWxsSGVscGVycyYsIGJvb2wgd2FzQ29tcGlsZWRJbmxp
bmUpPiYgY2FsbGJhY2spCit7CisgICAgYm9vbCBjb21waWxlZElubGluZSA9IHRydWU7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gY29kZUxpbmtCdWZmZXI7CisgICAgc2l6ZV90
IGFjdHVhbENvZGVTaXplID0gY29kZS5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6ZSgpOwor
CisgICAgaWYgKChhY3R1YWxDb2RlU2l6ZSA+IHNpemVPZklubGluZUNvZGUpIHx8IChzaXplT2ZJ
bmxpbmVDb2RlID4gMTApKSB7CisgICAgICAgIC8vIElmIHRoZXJlIGlzbid0IGVub3VnaCBzcGFj
ZSBpbiB0aGUgcHJvdmlkZWQgaW5saW5lIGNvZGUgYXJlYSwgYWxsb2NhdGUgb3V0IG9mIGxpbmUK
KyAgICAgICAgLy8gZXhlY3V0YWJsZSBtZW1vcnkgdG8gbGluayB0aGUgcHJvdmlkZWQgY29kZS4g
IFBsYWNlIGEganVtcCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAgICAgICAvLyBpbmxpbmUg
YXJlYSBhbmQganVtcCB0byB0aGUgb3V0IG9mIGxpbmUgY29kZS4gIFNpbWlsYXJseSByZXR1cm4g
YnkgYXBwZW5kaW5nIGEganVtcAorICAgICAgICAvLyB0byB0aGUgcHJvdmlkZWQgY29kZSB0aGF0
IGdvZXMgdG8gdGhlIGluc3RydWN0aW9uIGFmdGVyIHRoZSBpbmxpbmUgY29kZS4KKyAgICAgICAg
Ly8gRmlsbCB0aGUgbWlkZGxlIHdpdGggbm9wJ3MKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgcmV0dXJuVG9NYWlubGluZSA9IGNvZGUuanVtcCgpOworICAgICAgICBjb21waWxlZElubGlu
ZSA9IGZhbHNlOworCisgICAgICAgIC8vIEFsbG9jYXRlIG91dCBvZiBsaW5lIGV4ZWN1dGFibGUg
bWVtb3J5IGFuZCBsaW5rIHRoZSBwcm92aWRlZCBjb2RlIHRoZXJlLgorICAgICAgICBjb2RlTGlu
a0J1ZmZlciA9IHN0ZDo6bWFrZV91bmlxdWU8TGlua0J1ZmZlcj4odm0sIGNvZGUsIGNvZGVCbG9j
aywgSklUQ29tcGlsYXRpb25DYW5GYWlsKTsKKworICAgICAgICAvLyBQbGFudCBhIGptcCBpbiB0
aGUgaW5saW5lIGJ1ZmZlciB0byB0aGUgb3V0IG9mIGxpbmUgY29kZS4KKyAgICAgICAgTWFjcm9B
c3NlbWJsZXIgY2FsbFRvT3V0T2ZMaW5lSml0OworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBqdW1wVG9PdXRPZkxpbmUgPSBjYWxsVG9PdXRPZkxpbmVKaXQuanVtcCgpOworICAgICAgICBM
aW5rQnVmZmVyIGlubGluZUJ1ZmZlcih2bSwgY2FsbFRvT3V0T2ZMaW5lSml0LCBzdGFydE9mSW5s
aW5lQ29kZSwgc2l6ZU9mSW5saW5lQ29kZSk7CisgICAgICAgIGlubGluZUJ1ZmZlci5saW5rKGp1
bXBUb091dE9mTGluZSwgY29kZUxpbmtCdWZmZXItPmVudHJ5cG9pbnQoKSk7CisKKyAgICAgICAg
Ly8gRmlsbCB0aGUgcmVtYWluZGVyIG9mIHRoZSBpbmxpbmUgc3BhY2Ugd2l0aCBub3BzCisgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBc3NlbWJsZXJUeXBlX1Q6OmZpbGxOb3BzKGJpdHdpc2VfY2Fz
dDxjaGFyKj4oc3RhcnRPZklubGluZUNvZGUpICsgaW5saW5lQnVmZmVyLnNpemUoKSwgc2l6ZU9m
SW5saW5lQ29kZSAtIGlubGluZUJ1ZmZlci5zaXplKCkpOworCisgICAgICAgIC8vIExpbmsgdGhl
IGVuZCBvZiB0aGUgb3V0IG9mIGxpbmUgY29kZSB0byByaWdodCBhZnRlciB0aGUgaW5saW5lIGFy
ZWEuCisgICAgICAgIGNvZGVMaW5rQnVmZmVyLT5saW5rKHJldHVyblRvTWFpbmxpbmUsIENvZGVM
b2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKHN0YXJ0T2ZJbmxpbmVDb2RlKSkubGFiZWxBdE9mZnNldChzaXplT2ZJbmxpbmVDb2Rl
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29kZUxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPExpbmtCdWZmZXI+KHZtLCBjb2RlLCBzdGFydE9mSW5saW5lQ29kZSwgc2l6ZU9mSW5saW5l
Q29kZSk7CisKKyAgICAgICAgLy8gRmlsbCB0aGUgcmVtYWluZGVyIG9mIHRoZSBpbmxpbmUgc3Bh
Y2Ugd2l0aCBub3BzCisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBc3NlbWJsZXJUeXBlX1Q6OmZp
bGxOb3BzKGJpdHdpc2VfY2FzdDxjaGFyKj4oc3RhcnRPZklubGluZUNvZGUpICsgYWN0dWFsQ29k
ZVNpemUsIHNpemVPZklubGluZUNvZGUgLSBhY3R1YWxDb2RlU2l6ZSk7CisgICAgfQorCisgICAg
Y2FsbGJhY2soKmNvZGVMaW5rQnVmZmVyLmdldCgpLCBjb2RlLCBjb21waWxlZElubGluZSk7CisK
KyAgICBpZiAoIWNvbXBpbGVkSW5saW5lKSB7CisgICAgICAgIHN0YXRlLmZpbmFsaXplci0+b3V0
T2ZMaW5lQ29kZUluZm9zLmFwcGVuZChPdXRPZkxpbmVJbmZvKFdURjo6bW92ZShjb2RlTGlua0J1
ZmZlciksIGNvZGVEZXNjcmlwdGlvbikpOworICAgIH0KK30KKwogdGVtcGxhdGU8dHlwZW5hbWUg
RGVzY3JpcHRvclR5cGU+CiB2b2lkIGdlbmVyYXRlSUNGYXN0UGF0aCgKICAgICBTdGF0ZSYgc3Rh
dGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0ZWRGdW5j
dGlvbiwKQEAgLTE4MSw3ICsyMjUsMjIgQEAgdm9pZCBnZW5lcmF0ZUlDRmFzdFBhdGgoCiAgICAg
ICAgIAogICAgICAgICBjaGFyKiBzdGFydE9mSUMgPQogICAgICAgICAgICAgYml0d2lzZV9jYXN0
PGNoYXIqPihnZW5lcmF0ZWRGdW5jdGlvbikgKyByZWNvcmQuaW5zdHJ1Y3Rpb25PZmZzZXQ7Ci0g
ICAgICAgIAorCisjaWYgMQorICAgICAgICBhdXRvIHBvc3RMaW5rID0gWyZdKExpbmtCdWZmZXIm
IGxpbmtCdWZmZXIsIENDYWxsSGVscGVycyYsIGJvb2wpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRlLmZpbmFsaXplci0+c2lkZUNvZGVMaW5rQnVmZmVyLT5saW5rKAorICAgICAgICAgICAg
ICAgIGljLm1fc2xvd1BhdGhEb25lW2ldLCBDb2RlTG9jYXRpb25MYWJlbChzdGFydE9mSUMgKyBz
aXplT2ZJQykpOworCisgICAgICAgICAgICBsaW5rQnVmZmVyLmxpbmsoCisgICAgICAgICAgICAg
ICAgZ2VuZXJhdG9yLnNsb3dQYXRoSnVtcCgpLAorICAgICAgICAgICAgICAgIHN0YXRlLmZpbmFs
aXplci0+c2lkZUNvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mKGdlbmVyYXRvci5zbG93UGF0aEJl
Z2luKCkpKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9yLmZpbmFsaXplKGxpbmtCdWZmZXIsICpz
dGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlcik7CisgICAgICAgIH07CisKKyAgICAg
ICAgZ2VuZXJhdGVJQ0lmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9j
aywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsICJpbmxpbmUgY2FjaGUgZmFzdCBw
YXRoIiwgcG9zdExpbmspOworI2Vsc2UKICAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKHZt
LCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQyk7CiAgICAgICAgIC8vIE5vdGU6IHdl
IGNvdWxkIGhhbmRsZSB0aGUgIWlzVmFsaWQoKSBjYXNlLiBXZSBqdXN0IGRvbid0IGFwcGVhciB0
byBoYXZlIGEKICAgICAgICAgLy8gcmVhc29uIHRvIGRvIHNvLCB5ZXQuCkBAIC0xOTgsNiArMjU3
LDcgQEAgdm9pZCBnZW5lcmF0ZUlDRmFzdFBhdGgoCiAgICAgICAgICAgICBzdGF0ZS5maW5hbGl6
ZXItPnNpZGVDb2RlTGlua0J1ZmZlci0+bG9jYXRpb25PZihnZW5lcmF0b3Iuc2xvd1BhdGhCZWdp
bigpKSk7CiAgICAgICAgIAogICAgICAgICBnZW5lcmF0b3IuZmluYWxpemUobGlua0J1ZmZlciwg
KnN0YXRlLmZpbmFsaXplci0+c2lkZUNvZGVMaW5rQnVmZmVyKTsKKyNlbmRpZgogICAgIH0KIH0K
IApAQCAtMjMyLDcgKzI5MiwzMiBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUNoZWNrSW5JQ0Zhc3RQ
YXRoKAogCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZJQyA9CiAgICAgICAgICAgICBiaXR3aXNlX2Nh
c3Q8Y2hhcio+KGdlbmVyYXRlZEZ1bmN0aW9uKSArIHJlY29yZC5pbnN0cnVjdGlvbk9mZnNldDsK
LSAgICAgICAgCisKKyNpZiAxCisgICAgICAgIGF1dG8gcG9zdExpbmsgPSBbJl0oTGlua0J1ZmZl
ciYgZmFzdFBhdGgsIENDYWxsSGVscGVycyYsIGJvb2wpCisgICAgICAgIHsKKyAgICAgICAgICAg
IExpbmtCdWZmZXImIHNsb3dQYXRoID0gKnN0YXRlLmZpbmFsaXplci0+c2lkZUNvZGVMaW5rQnVm
ZmVyOworCisgICAgICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlci0+
bGluaygKKyAgICAgICAgICAgICAgICBpYy5tX3Nsb3dQYXRoRG9uZVtpXSwgQ29kZUxvY2F0aW9u
TGFiZWwoc3RhcnRPZklDICsgc2l6ZU9mSUMpKTsKKworICAgICAgICAgICAgQ29kZUxvY2F0aW9u
TGFiZWwgc2xvd1BhdGhCZWdpbkxvYyA9IHNsb3dQYXRoLmxvY2F0aW9uT2Yoc2xvd1BhdGhCZWdp
bik7CisgICAgICAgICAgICBmYXN0UGF0aC5saW5rKGp1bXAsIHNsb3dQYXRoQmVnaW5Mb2MpOwor
CisgICAgICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiA9IHNsb3dQ
YXRoLmxvY2F0aW9uT2YoY2FsbCk7CisKKyAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRh
Q2FsbFRvRG9uZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCisg
ICAgICAgICAgICAgICAgY2FsbFJldHVybkxvY2F0aW9uLCBmYXN0UGF0aC5sb2NhdGlvbk9mKGRv
bmUpKTsKKworICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9KdW1wID0gTWFj
cm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKKyAgICAgICAgICAgICAgICBj
YWxsUmV0dXJuTG9jYXRpb24sIGZhc3RQYXRoLmxvY2F0aW9uT2YoanVtcCkpOworICAgICAgICAg
ICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gY2FsbFJldHVybkxvY2F0aW9uOworICAg
ICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IE1hY3JvQXNzZW1i
bGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCisgICAgICAgICAgICAgICAgY2FsbFJldHVy
bkxvY2F0aW9uLCBzbG93UGF0aEJlZ2luTG9jKTsKKyAgICAgICAgfTsKKworICAgICAgICBnZW5l
cmF0ZUlDSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KHN0YXRlLCB2bSwgY29kZUJsb2NrLCBmYXN0
UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQywgIkNoZWNrSW4gaW5saW5lIGNhY2hlIiwgcG9z
dExpbmspOworI2Vsc2UKICAgICAgICAgTGlua0J1ZmZlciBmYXN0UGF0aCh2bSwgZmFzdFBhdGhK
SVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMpOwogICAgICAgICBMaW5rQnVmZmVyJiBzbG93UGF0aCA9
ICpzdGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlcjsKICAgICAgICAgLy8gTm90ZTog
d2UgY291bGQgaGFuZGxlIHRoZSAhaXNWYWxpZCgpIGNhc2UuIFdlIGp1c3QgZG9uJ3QgYXBwZWFy
IHRvIGhhdmUgYQpAQCAtMjU4LDcgKzM0Myw3IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlQ2hlY2tJ
bklDRmFzdFBhdGgoCiAgICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGxS
ZXR1cm5Mb2NhdGlvbjsKICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2Fz
ZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCiAgICAgICAgICAg
ICBjYWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoQmVnaW5Mb2MpOwotICAgICAgICAKKyNlbmRp
ZgogICAgIH0KIH0KIApAQCAtNTYxLDcgKzY0NiwxNiBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlv
bkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgIGNhbGwuZW1pdChmYXN0UGF0aEpJVCk7CiAgICAg
ICAgIAogICAgICAgICBjaGFyKiBzdGFydE9mSUMgPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGdlbmVy
YXRlZEZ1bmN0aW9uKSArIGNhbGwubV9pbnN0cnVjdGlvbk9mZnNldDsKLSAgICAgICAgCisKKyNp
ZiAxCisgICAgICAgIGF1dG8gcG9zdExpbmsgPSBbJl0oTGlua0J1ZmZlciYgbGlua0J1ZmZlciwg
Q0NhbGxIZWxwZXJzJiwgYm9vbCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FsbC5saW5rKHZt
LCBsaW5rQnVmZmVyKTsKKyAgICAgICAgfTsKKworICAgICAgICBnZW5lcmF0ZUlDSWZQb3NzaWJs
ZU91dE9mTGluZUlmTm90KHN0YXRlLCB2bSwgY29kZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRP
ZklDLCBzaXplT2ZDYWxsKCksICJKU0NhbGwgaW5saW5lIGNhY2hlIiwgcG9zdExpbmspOworCisj
ZWxzZQogICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sIGZhc3RQYXRoSklULCBzdGFy
dE9mSUMsIHNpemVPZkNhbGwoKSk7CiAgICAgICAgIGlmICghbGlua0J1ZmZlci5pc1ZhbGlkKCkp
IHsKICAgICAgICAgICAgIGRhdGFMb2coIkZhaWxlZCB0byBpbnNlcnQgaW5saW5lIGNhY2hlIGZv
ciBjYWxsIGJlY2F1c2Ugd2UgdGhvdWdodCB0aGUgc2l6ZSB3b3VsZCBiZSAiLCBzaXplT2ZDYWxs
KCksICIgYnV0IGl0IGVuZGVkIHVwIGJlaW5nICIsIGZhc3RQYXRoSklULm1fYXNzZW1ibGVyLmNv
ZGVTaXplKCksICIgcHJpb3IgdG8gY29tcGFjdGlvbi5cbiIpOwpAQCAtNTcwLDggKzY2NCwxMiBA
QCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgIAogICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QXNzZW1ibGVyVHlwZV9UOjpmaWxsTm9wcygKICAgICAgICAg
ICAgIHN0YXJ0T2ZJQyArIGxpbmtCdWZmZXIuc2l6ZSgpLCBzaXplT2ZDYWxsKCkgLSBsaW5rQnVm
ZmVyLnNpemUoKSk7Ci0gICAgICAgIAogICAgICAgICBjYWxsLmxpbmsodm0sIGxpbmtCdWZmZXIp
OworI2VuZGlmCisjaWYgMAorICAgICAgICBpZiAobGlua0J1ZmZlci5hbGxvY2F0ZWRPdXRPZkxp
bmUoKSkKKyAgICAgICAgICAgIEZJTkFMSVpFX0NPREUobGlua0J1ZmZlciwgKCJPdXQgb2YgbGlu
ZSBjYWxsIGNhY2hlIikpOworI2VuZGlmCiAgICAgfQogICAgIAogICAgIGFkanVzdENhbGxJQ3NG
b3JTdGFja21hcHMoc3RhdGUuanNDYWxsVmFyYXJnc2VzLCByZWNvcmRNYXApOwpAQCAtNTg1LDYg
KzY4MywxNCBAQCBzdGF0aWMgdm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAg
ICAgIGNoYXIqIHN0YXJ0T2ZJQyA9IGJpdHdpc2VfY2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rp
b24pICsgY2FsbC5tX2luc3RydWN0aW9uT2Zmc2V0OwogICAgICAgICBzaXplX3Qgc2l6ZU9mSUMg
PSBzaXplT2ZJQ0ZvcihjYWxsLm5vZGUoKSk7CiAKKyNpZiAxCisgICAgICAgIGF1dG8gcG9zdExp
bmsgPSBbJl0oTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgQ0NhbGxIZWxwZXJzJiwgYm9vbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgY2FsbC5saW5rKHZtLCBsaW5rQnVmZmVyLCBzdGF0ZS5maW5h
bGl6ZXItPmhhbmRsZUV4Y2VwdGlvbnNMaW5rQnVmZmVyLT5lbnRyeXBvaW50KCkpOworICAgICAg
ICB9OworCisgICAgICAgIGdlbmVyYXRlSUNJZlBvc3NpYmxlT3V0T2ZMaW5lSWZOb3Qoc3RhdGUs
IHZtLCBjb2RlQmxvY2ssIGZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVPZklDLCAidmFyYXJn
cyBjYWxsIGlubGluZSBjYWNoZSIsIHBvc3RMaW5rKTsKKyNlbHNlCiAgICAgICAgIExpbmtCdWZm
ZXIgbGlua0J1ZmZlcih2bSwgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMpOwogICAg
ICAgICBpZiAoIWxpbmtCdWZmZXIuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCJG
YWlsZWQgdG8gaW5zZXJ0IGlubGluZSBjYWNoZSBmb3IgdmFyYXJncyBjYWxsIChzcGVjaWZpY2Fs
bHksICIsIEdyYXBoOjpvcE5hbWUoY2FsbC5ub2RlKCktPm9wKCkpLCAiKSBiZWNhdXNlIHdlIHRo
b3VnaHQgdGhlIHNpemUgd291bGQgYmUgIiwgc2l6ZU9mSUMsICIgYnV0IGl0IGVuZGVkIHVwIGJl
aW5nICIsIGZhc3RQYXRoSklULm1fYXNzZW1ibGVyLmNvZGVTaXplKCksICIgcHJpb3IgdG8gY29t
cGFjdGlvbi5cbiIpOwpAQCAtNTk1LDYgKzcwMSw3IEBAIHN0YXRpYyB2b2lkIGZpeEZ1bmN0aW9u
QmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgICAgIHN0YXJ0T2ZJQyArIGxpbmtCdWZmZXIuc2l6
ZSgpLCBzaXplT2ZJQyAtIGxpbmtCdWZmZXIuc2l6ZSgpKTsKICAgICAgICAgCiAgICAgICAgIGNh
bGwubGluayh2bSwgbGlua0J1ZmZlciwgc3RhdGUuZmluYWxpemVyLT5oYW5kbGVFeGNlcHRpb25z
TGlua0J1ZmZlci0+ZW50cnlwb2ludCgpKTsKKyNlbmRpZgogICAgIH0KICAgICAKICAgICBSZXBh
dGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDE4NTYyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI3LDcgKzEyNywxMyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5j
dGlvbigpCiAgICAgICAgICAgICAgICAgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1f
cGxhbi5jb2RlQmxvY2suZ2V0KCksIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSkpCiAgICAgICAg
ICAgICAuZXhlY3V0YWJsZU1lbW9yeSgpKTsKICAgICB9Ci0gICAgCisKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgb3V0T2ZMaW5lQ29kZUluZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAg
IGppdENvZGUtPmFkZEhhbmRsZShGSU5BTElaRV9ERkdfQ09ERSgKKyAgICAgICAgICAgICpvdXRP
ZkxpbmVDb2RlSW5mb3NbaV0ubV9saW5rQnVmZmVyLAorICAgICAgICAgICAgKCJGVEwgb3V0IG9m
IGxpbmUgY29kZSBmb3IgJXMiLCBvdXRPZkxpbmVDb2RlSW5mb3NbaV0ubV9jb2RlRGVzY3JpcHRp
b24pKS5leGVjdXRhYmxlTWVtb3J5KCkpOworICAgIH0KKwogICAgIGppdENvZGUtPmluaXRpYWxp
emVBcml0eUNoZWNrRW50cnlwb2ludCgKICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCiAgICAg
ICAgICAgICAqZW50cnlwb2ludExpbmtCdWZmZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVEZpbmFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmgJKHJldmlzaW9uIDE4NTYyNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDExICszOSwyMyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKK2NsYXNz
IE91dE9mTGluZUluZm8geworcHVibGljOgorICAgIE91dE9mTGluZUluZm8oc3RkOjp1bmlxdWVf
cHRyPExpbmtCdWZmZXI+IGxpbmtCdWZmZXIsIGNvbnN0IGNoYXIqIGNvZGVEZXNjcmlwdGlvbikK
KyAgICA6IG1fbGlua0J1ZmZlcihXVEY6Om1vdmUobGlua0J1ZmZlcikpCisgICAgLCBtX2NvZGVE
ZXNjcmlwdGlvbihjb2RlRGVzY3JpcHRpb24pCisgICAgeworICAgIH0KKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxMaW5rQnVmZmVyPiBtX2xpbmtCdWZmZXI7CisgICAgY29uc3QgY2hhciogbV9jb2Rl
RGVzY3JpcHRpb247Cit9OworCiBjbGFzcyBKSVRGaW5hbGl6ZXIgOiBwdWJsaWMgREZHOjpGaW5h
bGl6ZXIgewogcHVibGljOgogICAgIEpJVEZpbmFsaXplcihERkc6OlBsYW4mKTsKICAgICB2aXJ0
dWFsIH5KSVRGaW5hbGl6ZXIoKTsKLSAgICAKKwogICAgIHNpemVfdCBjb2RlU2l6ZSgpIG92ZXJy
aWRlOwogICAgIGJvb2wgZmluYWxpemUoKSBvdmVycmlkZTsKICAgICBib29sIGZpbmFsaXplRnVu
Y3Rpb24oKSBvdmVycmlkZTsKQEAgLTUyLDYgKzY0LDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxMaW5rQnVmZmVyPiBlbnRyeXBvaW50TGlua0J1ZmZlcjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8TGlua0J1ZmZlcj4gc2lkZUNvZGVMaW5rQnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxMaW5rQnVmZmVyPiBoYW5kbGVFeGNlcHRpb25zTGlua0J1ZmZlcjsKKyAgICBWZWN0b3I8T3V0
T2ZMaW5lSW5mbz4gb3V0T2ZMaW5lQ29kZUluZm9zOwogICAgIFZlY3RvcjxTbG93UGF0aENhbGw+
IHNsb3dQYXRoQ2FsbHM7IC8vIENhbGxzIGluc2lkZSB0aGUgc2lkZSBjb2RlLgogICAgIFZlY3Rv
cjxPU1JFeGl0Q29tcGlsYXRpb25JbmZvPiBvc3JFeGl0OwogICAgIEdlbmVyYXRlZEZ1bmN0aW9u
IGZ1bmN0aW9uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAko
cmV2aXNpb24gMTg1NjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNyArMTg3LDcgQEAgdHlwZWRlZiBjb25zdCBjaGFy
KiBvcHRpb25TdHJpbmc7CiAgICAgdihib29sLCBlbmFibGVNb3ZIaW50UmVtb3ZhbCwgdHJ1ZSwg
bnVsbHB0cikgXAogICAgIHYoYm9vbCwgZW5hYmxlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcsIHRy
dWUsIG51bGxwdHIpIFwKICAgICBcCi0gICAgdihib29sLCBlbmFibGVDb25jdXJyZW50SklULCB0
cnVlLCAiYWxsb3dzIHRoZSBERkcgLyBGVEwgY29tcGlsYXRpb24gaW4gdGhyZWFkcyBvdGhlciB0
aGFuIHRoZSBleGVjdXRpbmcgSlMgdGhyZWFkIikgXAorICAgIHYoYm9vbCwgZW5hYmxlQ29uY3Vy
cmVudEpJVCwgZmFsc2UsICJhbGxvd3MgdGhlIERGRyAvIEZUTCBjb21waWxhdGlvbiBpbiB0aHJl
YWRzIG90aGVyIHRoYW4gdGhlIGV4ZWN1dGluZyBKUyB0aHJlYWQiKSBcCiAgICAgdih1bnNpZ25l
ZCwgbnVtYmVyT2ZERkdDb21waWxlclRocmVhZHMsIGNvbXB1dGVOdW1iZXJPZldvcmtlclRocmVh
ZHMoMiwgMikgLSAxLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwgbnVtYmVyT2ZGVExDb21w
aWxlclRocmVhZHMsIGNvbXB1dGVOdW1iZXJPZldvcmtlclRocmVhZHMoOCwgMikgLSAxLCBudWxs
cHRyKSBcCiAgICAgdihpbnQzMiwgcHJpb3JpdHlEZWx0YU9mREZHQ29tcGlsZXJUaHJlYWRzLCBj
b21wdXRlUHJpb3JpdHlEZWx0YU9mV29ya2VyVGhyZWFkcygtMSwgMCksIG51bGxwdHIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255202</attachid>
            <date>2015-06-19 11:28:01 -0700</date>
            <delta_ts>2015-06-19 12:08:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>146133.patch</filename>
            <type>text/plain</type>
            <size>14448</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NzU2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE1LTA2LTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENyYXNoIGluIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBjb20uYXBwbGUuSmF2
YVNjcmlwdENvcmU6IEpTQzo6RlRMOjpmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMgKyAxNzIy
NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBn
ZW5lcmF0aW5nIGNvZGUgdG8gcHV0IGluIGlubGluZSBjYWNoaW5nIGFyZWFzLCBpZiB0aGVyZSBp
c24ndCBlbm91Z2ggc3BhY2UsCisgICAgICAgIHRoZW4gY3JlYXRlIGFuZCBsaW5rIHRvIGFuIG91
dCBvZiBsaW5lIGFyZWEuICBXZSBjb25uZWN0IHRoZSBpbmxpbmUgY29kZSB0byB0aGlzCisgICAg
ICAgIG91dCBvZiBsaW5lIGNvZGUgYXJlYSBieSBwbGFudGluZyBhIGp1bXAgZnJvbSB0aGUgaW5s
aW5lIGFyZWEgdG8gdGhlIG91dCBvZiBsaW5lCisgICAgICAgIGNvZGUgYW5kIGFwcGVuZGluZyBh
IGp1bXAgYXQgdGhlIGVuZCBvZiB0aGUgb3V0IG9mIGxpbmUgY29kZSBiY2sgdG8gdGhlIGluc3Ry
dWN0aW9uCisgICAgICAgIGZvbGxvd2luZyB0aGUgaW5saW5lIGFyZWEuICBXZSBmaWxsIHRoZSB1
bnVzZWQgaW5saW5lIGFyZWEgd2l0aCBub3BzLCBwcmltYXJpbHkgdG8gCisgICAgICAgIGVuc3Vy
ZSB0aGUgZGlzYXNzZW1ibGVyIGRvZXNuJ3QgZ2V0IGNvbmZ1c2VkLgorCisgICAgICAgICogYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6aXNWYWxpZCk6
IERlbGV0ZWQuICBObyBsb25nZXIgdXNlZC4KKworICAgICAgICAqIGZ0bC9GVExDb21waWxlLmNw
cDoKKyAgICAgICAgKGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KTogTmV3
IGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UKKyAgICAg
ICAgaW4gdGhlIGlubGluZSBjb2RlIGFyZWEgZm9yIHRoZSBjb2RlIHRvIGxpbmsuICBJZiBzbywg
aXQgbGlua3MgaW5saW5lLCBvdGhlcndpc2UgaXQgbGlua3MgdGhlCisgICAgICAgIGNvZGUgb3V0
IG9mIGxpbmUgYW5kIHBsYW50cyBhcHByb3ByaWF0ZSBqdW1wcyB0by9mcm9tIHRoZSBvdXQgb2Yg
bGluZSBjb2RlLgorICAgICAgICAoZ2VuZXJhdGVJQ0Zhc3RQYXRoKToKKyAgICAgICAgKGdlbmVy
YXRlQ2hlY2tJbklDRmFzdFBhdGgpOgorICAgICAgICAoZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tN
YXBzKToKKyAgICAgICAgVXNlIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90
KCkgdG8gbGluayBjb2RlIGludGVuZGVkIGZvciBpbmxpbmUgY2FjaGUgc3BhY2UuCisKKyAgICAg
ICAgKiBmdGwvRlRMSklURmluYWxpemVyLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpKSVRGaW5h
bGl6ZXI6OmZpbmFsaXplRnVuY3Rpb24pOgorICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIu
aDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRPZkxpbmVDb2RlSW5mbzo6T3V0T2ZMaW5lQ29kZUlu
Zm8pOgorICAgICAgICBBZGRlZCBjb2RlIHRvIGZpbmFsaXplIGFueSBvdXQgb2YgbGluZSBMaW5r
QnVmZmVyIGNyZWF0ZWQgYnkgZ2VuZXJhdGVJbmxpbmVJZlBvc3NpYmxlT3V0T2ZMaW5lSWZOb3Qo
KS4KKwogMjAxNS0wNi0xOSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEF2b2lkIGdldE93blByb3BlcnR5TmFtZXMvU3ltYm9s
cyBvbiB2ZXJ5IGxhcmdlIGxpc3RzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTg1NzU1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSwxMSAr
MTE5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gIW1fZGlkQWxsb2NhdGU7CiAgICAgfQog
Ci0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhZGlkRmFp
bFRvQWxsb2NhdGUoKTsKLSAgICB9Ci0gICAgCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNl
ZCB0byBsaW5rIG9yIHNldCB2YWx1ZXMgYXQgY29kZSBnZW5lcmF0aW9uIHRpbWUuCiAKICAgICB2
b2lkIGxpbmsoQ2FsbCBjYWxsLCBGdW5jdGlvblB0ciBmdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMTg1NzU1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTU1LDYgKzE1NSw0OSBAQCBzdGF0aWMgaW50IG9mZnNldE9mU3RhY2tSZWdpb24oU3RhY2tNYXBz
CiAgICAgcmV0dXJuIGNhcHR1cmVkTG9jYXRpb24uYWRkZW5kKCkgLyBzaXplb2YoUmVnaXN0ZXIp
OwogfQogCitzdGF0aWMgdm9pZCBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5v
dChTdGF0ZSYgc3RhdGUsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENDYWxsSGVscGVy
cyYgY29kZSwgY2hhciogc3RhcnRPZklubGluZUNvZGUsIHNpemVfdCBzaXplT2ZJbmxpbmVDb2Rl
LCBjb25zdCBjaGFyKiBjb2RlRGVzY3JpcHRpb24sIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChM
aW5rQnVmZmVyJiwgQ0NhbGxIZWxwZXJzJiwgYm9vbCB3YXNDb21waWxlZElubGluZSk+JiBjYWxs
YmFjaykKK3sKKyAgICBib29sIGNvbXBpbGVkSW5saW5lID0gdHJ1ZTsKKworICAgIHN0ZDo6dW5p
cXVlX3B0cjxMaW5rQnVmZmVyPiBjb2RlTGlua0J1ZmZlcjsKKyAgICBzaXplX3QgYWN0dWFsQ29k
ZVNpemUgPSBjb2RlLm1fYXNzZW1ibGVyLmJ1ZmZlcigpLmNvZGVTaXplKCk7CisKKyAgICBpZiAo
YWN0dWFsQ29kZVNpemUgPiBzaXplT2ZJbmxpbmVDb2RlKSB7CisgICAgICAgIC8vIElmIHRoZXJl
IGlzbid0IGVub3VnaCBzcGFjZSBpbiB0aGUgcHJvdmlkZWQgaW5saW5lIGNvZGUgYXJlYSwgYWxs
b2NhdGUgb3V0IG9mIGxpbmUKKyAgICAgICAgLy8gZXhlY3V0YWJsZSBtZW1vcnkgdG8gbGluayB0
aGUgcHJvdmlkZWQgY29kZS4gUGxhY2UgYSBqdW1wIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCisg
ICAgICAgIC8vIGlubGluZSBhcmVhIGFuZCBqdW1wIHRvIHRoZSBvdXQgb2YgbGluZSBjb2RlLiBT
aW1pbGFybHkgcmV0dXJuIGJ5IGFwcGVuZGluZyBhIGp1bXAKKyAgICAgICAgLy8gdG8gdGhlIHBy
b3ZpZGVkIGNvZGUgdGhhdCBnb2VzIHRvIHRoZSBpbnN0cnVjdGlvbiBhZnRlciB0aGUgaW5saW5l
IGNvZGUuCisgICAgICAgIC8vIEZpbGwgdGhlIG1pZGRsZSB3aXRoIG5vcCdzCisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIHJldHVyblRvTWFpbmxpbmUgPSBjb2RlLmp1bXAoKTsKKyAgICAg
ICAgY29tcGlsZWRJbmxpbmUgPSBmYWxzZTsKKworICAgICAgICAvLyBBbGxvY2F0ZSBvdXQgb2Yg
bGluZSBleGVjdXRhYmxlIG1lbW9yeSBhbmQgbGluayB0aGUgcHJvdmlkZWQgY29kZSB0aGVyZS4K
KyAgICAgICAgY29kZUxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExpbmtCdWZmZXI+KHZt
LCBjb2RlLCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uQ2FuRmFpbCk7CisKKyAgICAgICAgLy8g
UGxhbnQgYSBqbXAgaW4gdGhlIGlubGluZSBidWZmZXIgdG8gdGhlIG91dCBvZiBsaW5lIGNvZGUu
CisgICAgICAgIE1hY3JvQXNzZW1ibGVyIGNhbGxUb091dE9mTGluZUppdDsKKyAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAganVtcFRvT3V0T2ZMaW5lID0gY2FsbFRvT3V0T2ZMaW5lSml0Lmp1
bXAoKTsKKyAgICAgICAgTGlua0J1ZmZlciBpbmxpbmVCdWZmZXIodm0sIGNhbGxUb091dE9mTGlu
ZUppdCwgc3RhcnRPZklubGluZUNvZGUsIHNpemVPZklubGluZUNvZGUpOworICAgICAgICBpbmxp
bmVCdWZmZXIubGluayhqdW1wVG9PdXRPZkxpbmUsIGNvZGVMaW5rQnVmZmVyLT5lbnRyeXBvaW50
KCkpOworCisgICAgICAgIC8vIEZpbGwgdGhlIHJlbWFpbmRlciBvZiB0aGUgaW5saW5lIHNwYWNl
IHdpdGggbm9wcworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QXNzZW1ibGVyVHlwZV9UOjpmaWxs
Tm9wcyhiaXR3aXNlX2Nhc3Q8Y2hhcio+KHN0YXJ0T2ZJbmxpbmVDb2RlKSArIGlubGluZUJ1ZmZl
ci5zaXplKCksIHNpemVPZklubGluZUNvZGUgLSBpbmxpbmVCdWZmZXIuc2l6ZSgpKTsKKworICAg
ICAgICAvLyBMaW5rIHRoZSBlbmQgb2YgdGhlIG91dCBvZiBsaW5lIGNvZGUgdG8gcmlnaHQgYWZ0
ZXIgdGhlIGlubGluZSBhcmVhLgorICAgICAgICBjb2RlTGlua0J1ZmZlci0+bGluayhyZXR1cm5U
b01haW5saW5lLCBDb2RlTG9jYXRpb25MYWJlbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0
ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhzdGFydE9mSW5saW5lQ29kZSkpLmxhYmVsQXRPZmZzZXQo
c2l6ZU9mSW5saW5lQ29kZSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNvZGVMaW5rQnVmZmVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxMaW5rQnVmZmVyPih2bSwgY29kZSwgc3RhcnRPZklubGluZUNv
ZGUsIHNpemVPZklubGluZUNvZGUpOworCisgICAgICAgIC8vIEZpbGwgdGhlIHJlbWFpbmRlciBv
ZiB0aGUgaW5saW5lIHNwYWNlIHdpdGggbm9wcworICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QXNz
ZW1ibGVyVHlwZV9UOjpmaWxsTm9wcyhiaXR3aXNlX2Nhc3Q8Y2hhcio+KHN0YXJ0T2ZJbmxpbmVD
b2RlKSArIGFjdHVhbENvZGVTaXplLCBzaXplT2ZJbmxpbmVDb2RlIC0gYWN0dWFsQ29kZVNpemUp
OworICAgIH0KKworICAgIGNhbGxiYWNrKCpjb2RlTGlua0J1ZmZlci5nZXQoKSwgY29kZSwgY29t
cGlsZWRJbmxpbmUpOworCisgICAgaWYgKCFjb21waWxlZElubGluZSkKKyAgICAgICAgc3RhdGUu
ZmluYWxpemVyLT5vdXRPZkxpbmVDb2RlSW5mb3MuYXBwZW5kKE91dE9mTGluZUNvZGVJbmZvKFdU
Rjo6bW92ZShjb2RlTGlua0J1ZmZlciksIGNvZGVEZXNjcmlwdGlvbikpOworfQorCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBEZXNjcmlwdG9yVHlwZT4KIHZvaWQgZ2VuZXJhdGVJQ0Zhc3RQYXRoKAogICAg
IFN0YXRlJiBzdGF0ZSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEdlbmVyYXRlZEZ1bmN0aW9uIGdl
bmVyYXRlZEZ1bmN0aW9uLApAQCAtMTgxLDIzICsyMjQsMTYgQEAgdm9pZCBnZW5lcmF0ZUlDRmFz
dFBhdGgoCiAgICAgICAgIAogICAgICAgICBjaGFyKiBzdGFydE9mSUMgPQogICAgICAgICAgICAg
Yml0d2lzZV9jYXN0PGNoYXIqPihnZW5lcmF0ZWRGdW5jdGlvbikgKyByZWNvcmQuaW5zdHJ1Y3Rp
b25PZmZzZXQ7Ci0gICAgICAgIAotICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZmZXIodm0sIGZh
c3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVPZklDKTsKLSAgICAgICAgLy8gTm90ZTogd2UgY291
bGQgaGFuZGxlIHRoZSAhaXNWYWxpZCgpIGNhc2UuIFdlIGp1c3QgZG9uJ3QgYXBwZWFyIHRvIGhh
dmUgYQotICAgICAgICAvLyByZWFzb24gdG8gZG8gc28sIHlldC4KLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQobGlua0J1ZmZlci5pc1ZhbGlkKCkpOwotICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkFzc2VtYmxlclR5cGVfVDo6ZmlsbE5vcHMoCi0gICAgICAgICAgICBzdGFydE9mSUMg
KyBsaW5rQnVmZmVyLnNpemUoKSwgc2l6ZU9mSUMgLSBsaW5rQnVmZmVyLnNpemUoKSk7Ci0gICAg
ICAgIAotICAgICAgICBzdGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlci0+bGluaygK
LSAgICAgICAgICAgIGljLm1fc2xvd1BhdGhEb25lW2ldLCBDb2RlTG9jYXRpb25MYWJlbChzdGFy
dE9mSUMgKyBzaXplT2ZJQykpOwotICAgICAgICAKLSAgICAgICAgbGlua0J1ZmZlci5saW5rKAot
ICAgICAgICAgICAgZ2VuZXJhdG9yLnNsb3dQYXRoSnVtcCgpLAotICAgICAgICAgICAgc3RhdGUu
ZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2YoZ2VuZXJhdG9yLnNsb3dQ
YXRoQmVnaW4oKSkpOwotICAgICAgICAKLSAgICAgICAgZ2VuZXJhdG9yLmZpbmFsaXplKGxpbmtC
dWZmZXIsICpzdGF0ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlcik7CisKKyAgICAgICAg
Z2VuZXJhdGVJbmxpbmVJZlBvc3NpYmxlT3V0T2ZMaW5lSWZOb3Qoc3RhdGUsIHZtLCBjb2RlQmxv
Y2ssIGZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVPZklDLCAiaW5saW5lIGNhY2hlIGZhc3Qg
cGF0aCIsIFsmXSAoTGlua0J1ZmZlciYgbGlua0J1ZmZlciwgQ0NhbGxIZWxwZXJzJiwgYm9vbCkg
eworICAgICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXItPmxpbmso
aWMubV9zbG93UGF0aERvbmVbaV0sCisgICAgICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwo
c3RhcnRPZklDICsgc2l6ZU9mSUMpKTsKKworICAgICAgICAgICAgbGlua0J1ZmZlci5saW5rKGdl
bmVyYXRvci5zbG93UGF0aEp1bXAoKSwKKyAgICAgICAgICAgICAgICBzdGF0ZS5maW5hbGl6ZXIt
PnNpZGVDb2RlTGlua0J1ZmZlci0+bG9jYXRpb25PZihnZW5lcmF0b3Iuc2xvd1BhdGhCZWdpbigp
KSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5maW5hbGl6ZShsaW5rQnVmZmVyLCAqc3RhdGUu
ZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXIpOworICAgICAgICB9KTsKICAgICB9CiB9CiAK
QEAgLTIzMiwzMyArMjY4LDI5IEBAIHN0YXRpYyB2b2lkIGdlbmVyYXRlQ2hlY2tJbklDRmFzdFBh
dGgoCiAKICAgICAgICAgY2hhciogc3RhcnRPZklDID0KICAgICAgICAgICAgIGJpdHdpc2VfY2Fz
dDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsgcmVjb3JkLmluc3RydWN0aW9uT2Zmc2V0Owot
ICAgICAgICAKLSAgICAgICAgTGlua0J1ZmZlciBmYXN0UGF0aCh2bSwgZmFzdFBhdGhKSVQsIHN0
YXJ0T2ZJQywgc2l6ZU9mSUMpOwotICAgICAgICBMaW5rQnVmZmVyJiBzbG93UGF0aCA9ICpzdGF0
ZS5maW5hbGl6ZXItPnNpZGVDb2RlTGlua0J1ZmZlcjsKLSAgICAgICAgLy8gTm90ZTogd2UgY291
bGQgaGFuZGxlIHRoZSAhaXNWYWxpZCgpIGNhc2UuIFdlIGp1c3QgZG9uJ3QgYXBwZWFyIHRvIGhh
dmUgYQotICAgICAgICAvLyByZWFzb24gdG8gZG8gc28sIHlldC4KLSAgICAgICAgUkVMRUFTRV9B
U1NFUlQoZmFzdFBhdGguaXNWYWxpZCgpKTsKIAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QXNz
ZW1ibGVyVHlwZV9UOjpmaWxsTm9wcygKLSAgICAgICAgICAgIHN0YXJ0T2ZJQyArIGZhc3RQYXRo
LnNpemUoKSwgc2l6ZU9mSUMgLSBmYXN0UGF0aC5zaXplKCkpOwotICAgICAgICAKLSAgICAgICAg
c3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXItPmxpbmsoCi0gICAgICAgICAgICBp
Yy5tX3Nsb3dQYXRoRG9uZVtpXSwgQ29kZUxvY2F0aW9uTGFiZWwoc3RhcnRPZklDICsgc2l6ZU9m
SUMpKTsKLSAgICAgICAgCi0gICAgICAgIENvZGVMb2NhdGlvbkxhYmVsIHNsb3dQYXRoQmVnaW5M
b2MgPSBzbG93UGF0aC5sb2NhdGlvbk9mKHNsb3dQYXRoQmVnaW4pOwotICAgICAgICBmYXN0UGF0
aC5saW5rKGp1bXAsIHNsb3dQYXRoQmVnaW5Mb2MpOworICAgICAgICBhdXRvIHBvc3RMaW5rID0g
WyZdIChMaW5rQnVmZmVyJiBmYXN0UGF0aCwgQ0NhbGxIZWxwZXJzJiwgYm9vbCkgeworICAgICAg
ICAgICAgTGlua0J1ZmZlciYgc2xvd1BhdGggPSAqc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxp
bmtCdWZmZXI7CiAKLSAgICAgICAgQ29kZUxvY2F0aW9uQ2FsbCBjYWxsUmV0dXJuTG9jYXRpb24g
PSBzbG93UGF0aC5sb2NhdGlvbk9mKGNhbGwpOworICAgICAgICAgICAgc3RhdGUuZmluYWxpemVy
LT5zaWRlQ29kZUxpbmtCdWZmZXItPmxpbmsoCisgICAgICAgICAgICAgICAgaWMubV9zbG93UGF0
aERvbmVbaV0sIENvZGVMb2NhdGlvbkxhYmVsKHN0YXJ0T2ZJQyArIHNpemVPZklDKSk7CiAKLSAg
ICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKLSAgICAgICAgICAgIGNhbGxSZXR1cm5Mb2NhdGlvbiwg
ZmFzdFBhdGgubG9jYXRpb25PZihkb25lKSk7CisgICAgICAgICAgICBDb2RlTG9jYXRpb25MYWJl
bCBzbG93UGF0aEJlZ2luTG9jID0gc2xvd1BhdGgubG9jYXRpb25PZihzbG93UGF0aEJlZ2luKTsK
KyAgICAgICAgICAgIGZhc3RQYXRoLmxpbmsoanVtcCwgc2xvd1BhdGhCZWdpbkxvYyk7CiAKLSAg
ICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9KdW1wID0gTWFjcm9Bc3NlbWJsZXI6OmRp
ZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKLSAgICAgICAgICAgIGNhbGxSZXR1cm5Mb2NhdGlvbiwg
ZmFzdFBhdGgubG9jYXRpb25PZihqdW1wKSk7Ci0gICAgICAgIHN0dWJJbmZvLmNhbGxSZXR1cm5M
b2NhdGlvbiA9IGNhbGxSZXR1cm5Mb2NhdGlvbjsKLSAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVs
dGFDYWxsVG9TbG93Q2FzZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQ
dHIoCi0gICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoQmVnaW5Mb2MpOwot
ICAgICAgICAKKyAgICAgICAgICAgIENvZGVMb2NhdGlvbkNhbGwgY2FsbFJldHVybkxvY2F0aW9u
ID0gc2xvd1BhdGgubG9jYXRpb25PZihjYWxsKTsKKworICAgICAgICAgICAgc3R1YkluZm8ucGF0
Y2guZGVsdGFDYWxsVG9Eb25lID0gTWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29k
ZVB0cigKKyAgICAgICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24sIGZhc3RQYXRoLmxvY2F0
aW9uT2YoZG9uZSkpOworCisgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb0p1
bXAgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKAorICAgICAgICAg
ICAgICAgIGNhbGxSZXR1cm5Mb2NhdGlvbiwgZmFzdFBhdGgubG9jYXRpb25PZihqdW1wKSk7Cisg
ICAgICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBjYWxsUmV0dXJuTG9jYXRp
b247CisgICAgICAgICAgICBzdHViSW5mby5wYXRjaC5kZWx0YUNhbGxUb1Nsb3dDYXNlID0gTWFj
cm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKKyAgICAgICAgICAgICAgICBj
YWxsUmV0dXJuTG9jYXRpb24sIHNsb3dQYXRoQmVnaW5Mb2MpOworICAgICAgICB9OworCisgICAg
ICAgIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KHN0YXRlLCB2bSwgY29k
ZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQywgIkNoZWNrSW4gaW5saW5l
IGNhY2hlIiwgcG9zdExpbmspOwogICAgIH0KIH0KIApAQCAtNTU5LDE5ICs1OTEsMTIgQEAgc3Rh
dGljIHZvaWQgZml4RnVuY3Rpb25CYXNlZE9uU3RhY2tNYXBzKAogCiAgICAgICAgIENDYWxsSGVs
cGVycyBmYXN0UGF0aEpJVCgmdm0sIGNvZGVCbG9jayk7CiAgICAgICAgIGNhbGwuZW1pdChmYXN0
UGF0aEpJVCk7Ci0gICAgICAgIAorCiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZJQyA9IGJpdHdpc2Vf
Y2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsgY2FsbC5tX2luc3RydWN0aW9uT2Zmc2V0
OwotICAgICAgICAKLSAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKHZtLCBmYXN0UGF0aEpJ
VCwgc3RhcnRPZklDLCBzaXplT2ZDYWxsKCkpOwotICAgICAgICBpZiAoIWxpbmtCdWZmZXIuaXNW
YWxpZCgpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJGYWlsZWQgdG8gaW5zZXJ0IGlubGluZSBj
YWNoZSBmb3IgY2FsbCBiZWNhdXNlIHdlIHRob3VnaHQgdGhlIHNpemUgd291bGQgYmUgIiwgc2l6
ZU9mQ2FsbCgpLCAiIGJ1dCBpdCBlbmRlZCB1cCBiZWluZyAiLCBmYXN0UGF0aEpJVC5tX2Fzc2Vt
Ymxlci5jb2RlU2l6ZSgpLCAiIHByaW9yIHRvIGNvbXBhY3Rpb24uXG4iKTsKLSAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpBc3NlbWJsZXJUeXBlX1Q6OmZpbGxOb3BzKAotICAgICAgICAg
ICAgc3RhcnRPZklDICsgbGlua0J1ZmZlci5zaXplKCksIHNpemVPZkNhbGwoKSAtIGxpbmtCdWZm
ZXIuc2l6ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIGNhbGwubGluayh2bSwgbGlua0J1ZmZlcik7
CisKKyAgICAgICAgZ2VuZXJhdGVJbmxpbmVJZlBvc3NpYmxlT3V0T2ZMaW5lSWZOb3Qoc3RhdGUs
IHZtLCBjb2RlQmxvY2ssIGZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVPZkNhbGwoKSwgIkpT
Q2FsbCBpbmxpbmUgY2FjaGUiLCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIENDYWxsSGVs
cGVycyYsIGJvb2wpIHsKKyAgICAgICAgICAgIGNhbGwubGluayh2bSwgbGlua0J1ZmZlcik7Cisg
ICAgICAgIH0pOwogICAgIH0KICAgICAKICAgICBhZGp1c3RDYWxsSUNzRm9yU3RhY2ttYXBzKHN0
YXRlLmpzQ2FsbFZhcmFyZ3NlcywgcmVjb3JkTWFwKTsKQEAgLTU4MSwyMCArNjA2LDEzIEBAIHN0
YXRpYyB2b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKICAgICAgICAgCiAgICAgICAg
IENDYWxsSGVscGVycyBmYXN0UGF0aEpJVCgmdm0sIGNvZGVCbG9jayk7CiAgICAgICAgIGNhbGwu
ZW1pdChmYXN0UGF0aEpJVCwgdmFyYXJnc1NwaWxsU2xvdHNPZmZzZXQpOwotICAgICAgICAKKwog
ICAgICAgICBjaGFyKiBzdGFydE9mSUMgPSBiaXR3aXNlX2Nhc3Q8Y2hhcio+KGdlbmVyYXRlZEZ1
bmN0aW9uKSArIGNhbGwubV9pbnN0cnVjdGlvbk9mZnNldDsKICAgICAgICAgc2l6ZV90IHNpemVP
ZklDID0gc2l6ZU9mSUNGb3IoY2FsbC5ub2RlKCkpOwogCi0gICAgICAgIExpbmtCdWZmZXIgbGlu
a0J1ZmZlcih2bSwgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMpOwotICAgICAgICBp
ZiAoIWxpbmtCdWZmZXIuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBkYXRhTG9nKCJGYWlsZWQg
dG8gaW5zZXJ0IGlubGluZSBjYWNoZSBmb3IgdmFyYXJncyBjYWxsIChzcGVjaWZpY2FsbHksICIs
IEdyYXBoOjpvcE5hbWUoY2FsbC5ub2RlKCktPm9wKCkpLCAiKSBiZWNhdXNlIHdlIHRob3VnaHQg
dGhlIHNpemUgd291bGQgYmUgIiwgc2l6ZU9mSUMsICIgYnV0IGl0IGVuZGVkIHVwIGJlaW5nICIs
IGZhc3RQYXRoSklULm1fYXNzZW1ibGVyLmNvZGVTaXplKCksICIgcHJpb3IgdG8gY29tcGFjdGlv
bi5cbiIpOwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFzc2VtYmxlclR5cGVfVDo6
ZmlsbE5vcHMoCi0gICAgICAgICAgICBzdGFydE9mSUMgKyBsaW5rQnVmZmVyLnNpemUoKSwgc2l6
ZU9mSUMgLSBsaW5rQnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIAotICAgICAgICBjYWxsLmxpbmso
dm0sIGxpbmtCdWZmZXIsIHN0YXRlLmZpbmFsaXplci0+aGFuZGxlRXhjZXB0aW9uc0xpbmtCdWZm
ZXItPmVudHJ5cG9pbnQoKSk7CisgICAgICAgIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9m
TGluZUlmTm90KHN0YXRlLCB2bSwgY29kZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBz
aXplT2ZJQywgInZhcmFyZ3MgY2FsbCBpbmxpbmUgY2FjaGUiLCBbJl0gKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIsIENDYWxsSGVscGVycyYsIGJvb2wpIHsKKyAgICAgICAgICAgIGNhbGwubGluayh2
bSwgbGlua0J1ZmZlciwgc3RhdGUuZmluYWxpemVyLT5oYW5kbGVFeGNlcHRpb25zTGlua0J1ZmZl
ci0+ZW50cnlwb2ludCgpKTsKKyAgICAgICAgfSk7CiAgICAgfQogICAgIAogICAgIFJlcGF0Y2hC
dWZmZXIgcmVwYXRjaEJ1ZmZlcihjb2RlQmxvY2spOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAkocmV2aXNpb24gMTg1NzU1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjcsNyArMTI3LDEzIEBAIGJvb2wgSklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9u
KCkKICAgICAgICAgICAgICAgICB0b0NTdHJpbmcoQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9wbGFu
LmNvZGVCbG9jay5nZXQoKSwgSklUQ29kZTo6RlRMSklUKSkuZGF0YSgpKSkKICAgICAgICAgICAg
IC5leGVjdXRhYmxlTWVtb3J5KCkpOwogICAgIH0KLSAgICAKKworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBvdXRPZkxpbmVDb2RlSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaml0
Q29kZS0+YWRkSGFuZGxlKEZJTkFMSVpFX0RGR19DT0RFKAorICAgICAgICAgICAgKm91dE9mTGlu
ZUNvZGVJbmZvc1tpXS5tX2xpbmtCdWZmZXIsCisgICAgICAgICAgICAoIkZUTCBvdXQgb2YgbGlu
ZSBjb2RlIGZvciAlcyIsIG91dE9mTGluZUNvZGVJbmZvc1tpXS5tX2NvZGVEZXNjcmlwdGlvbikp
LmV4ZWN1dGFibGVNZW1vcnkoKSk7CisgICAgfQorCiAgICAgaml0Q29kZS0+aW5pdGlhbGl6ZUFy
aXR5Q2hlY2tFbnRyeXBvaW50KAogICAgICAgICBGSU5BTElaRV9ERkdfQ09ERSgKICAgICAgICAg
ICAgICplbnRyeXBvaW50TGlua0J1ZmZlciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSklURmluYWxpemVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExKSVRGaW5hbGl6ZXIuaAkocmV2aXNpb24gMTg1NzU1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExKSVRGaW5hbGl6ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzksMTEg
KzM5LDIzIEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAorY2xhc3MgT3V0
T2ZMaW5lQ29kZUluZm8geworcHVibGljOgorICAgIE91dE9mTGluZUNvZGVJbmZvKHN0ZDo6dW5p
cXVlX3B0cjxMaW5rQnVmZmVyPiBsaW5rQnVmZmVyLCBjb25zdCBjaGFyKiBjb2RlRGVzY3JpcHRp
b24pCisgICAgICAgIDogbV9saW5rQnVmZmVyKFdURjo6bW92ZShsaW5rQnVmZmVyKSkKKyAgICAg
ICAgLCBtX2NvZGVEZXNjcmlwdGlvbihjb2RlRGVzY3JpcHRpb24pCisgICAgeworICAgIH0KKwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBtX2xpbmtCdWZmZXI7CisgICAgY29uc3Qg
Y2hhciogbV9jb2RlRGVzY3JpcHRpb247Cit9OworCiBjbGFzcyBKSVRGaW5hbGl6ZXIgOiBwdWJs
aWMgREZHOjpGaW5hbGl6ZXIgewogcHVibGljOgogICAgIEpJVEZpbmFsaXplcihERkc6OlBsYW4m
KTsKICAgICB2aXJ0dWFsIH5KSVRGaW5hbGl6ZXIoKTsKLSAgICAKKwogICAgIHNpemVfdCBjb2Rl
U2l6ZSgpIG92ZXJyaWRlOwogICAgIGJvb2wgZmluYWxpemUoKSBvdmVycmlkZTsKICAgICBib29s
IGZpbmFsaXplRnVuY3Rpb24oKSBvdmVycmlkZTsKQEAgLTUyLDYgKzY0LDcgQEAgcHVibGljOgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBlbnRyeXBvaW50TGlua0J1ZmZlcjsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gc2lkZUNvZGVMaW5rQnVmZmVyOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxMaW5rQnVmZmVyPiBoYW5kbGVFeGNlcHRpb25zTGlua0J1ZmZlcjsKKyAg
ICBWZWN0b3I8T3V0T2ZMaW5lQ29kZUluZm8+IG91dE9mTGluZUNvZGVJbmZvczsKICAgICBWZWN0
b3I8U2xvd1BhdGhDYWxsPiBzbG93UGF0aENhbGxzOyAvLyBDYWxscyBpbnNpZGUgdGhlIHNpZGUg
Y29kZS4KICAgICBWZWN0b3I8T1NSRXhpdENvbXBpbGF0aW9uSW5mbz4gb3NyRXhpdDsKICAgICBH
ZW5lcmF0ZWRGdW5jdGlvbiBmdW5jdGlvbjsK
</data>
<flag name="review"
          id="280257"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255211</attachid>
            <date>2015-06-19 12:08:00 -0700</date>
            <delta_ts>2015-06-19 12:46:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>146133-2.patch</filename>
            <type>text/plain</type>
            <size>15013</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NzU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBA
CisyMDE1LTA2LTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENyYXNoIGluIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBjb20uYXBwbGUuSmF2
YVNjcmlwdENvcmU6IEpTQzo6RlRMOjpmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMgKyAxNzIy
NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBn
ZW5lcmF0aW5nIGNvZGUgdG8gcHV0IGluIGlubGluZSBjYWNoaW5nIGFyZWFzLCBpZiB0aGVyZSBp
c24ndCBlbm91Z2ggc3BhY2UsCisgICAgICAgIHRoZW4gY3JlYXRlIGFuZCBsaW5rIHRvIGFuIG91
dCBvZiBsaW5lIGFyZWEuICBXZSBjb25uZWN0IHRoZSBpbmxpbmUgY29kZSB0byB0aGlzCisgICAg
ICAgIG91dCBvZiBsaW5lIGNvZGUgYXJlYSBieSBwbGFudGluZyBhIGp1bXAgZnJvbSB0aGUgaW5s
aW5lIGFyZWEgdG8gdGhlIG91dCBvZiBsaW5lCisgICAgICAgIGNvZGUgYW5kIGFwcGVuZGluZyBh
IGp1bXAgYXQgdGhlIGVuZCBvZiB0aGUgb3V0IG9mIGxpbmUgY29kZSBiY2sgdG8gdGhlIGluc3Ry
dWN0aW9uCisgICAgICAgIGZvbGxvd2luZyB0aGUgaW5saW5lIGFyZWEuICBXZSBmaWxsIHRoZSB1
bnVzZWQgaW5saW5lIGFyZWEgd2l0aCBub3BzLCBwcmltYXJpbHkgdG8gCisgICAgICAgIGVuc3Vy
ZSB0aGUgZGlzYXNzZW1ibGVyIGRvZXNuJ3QgZ2V0IGNvbmZ1c2VkLgorCisgICAgICAgICogYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpMaW5rQnVmZmVyOjpwZXJmb3Jt
RmluYWxpemF0aW9uKTogVXBkYXRlZCBBU1NFUlQgYWZ0ZXIgcmVtb3ZpbmcgaXNWYWxpZCgpLgor
ICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgIChKU0M6OkxpbmtCdWZm
ZXI6OmlzVmFsaWQpOiBEZWxldGVkLiAgTm8gbG9uZ2VyIHVzZWQuCisKKyAgICAgICAgKiBmdGwv
RlRMQ29tcGlsZS5jcHA6CisgICAgICAgIChnZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxp
bmVJZk5vdCk6IE5ldyBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgaWYgdGhlcmUgaXMgZW5vdWdo
IHNwYWNlCisgICAgICAgIGluIHRoZSBpbmxpbmUgY29kZSBhcmVhIGZvciB0aGUgY29kZSB0byBs
aW5rLiAgSWYgc28sIGl0IGxpbmtzIGlubGluZSwgb3RoZXJ3aXNlIGl0IGxpbmtzIHRoZQorICAg
ICAgICBjb2RlIG91dCBvZiBsaW5lIGFuZCBwbGFudHMgYXBwcm9wcmlhdGUganVtcHMgdG8vZnJv
bSB0aGUgb3V0IG9mIGxpbmUgY29kZS4KKyAgICAgICAgKGdlbmVyYXRlSUNGYXN0UGF0aCk6Cisg
ICAgICAgIChnZW5lcmF0ZUNoZWNrSW5JQ0Zhc3RQYXRoKToKKyAgICAgICAgKGZpeEZ1bmN0aW9u
QmFzZWRPblN0YWNrTWFwcyk6CisgICAgICAgIFVzZSBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVP
dXRPZkxpbmVJZk5vdCgpIHRvIGxpbmsgY29kZSBpbnRlbmRlZCBmb3IgaW5saW5lIGNhY2hlIHNw
YWNlLgorCisgICAgICAgICogZnRsL0ZUTEpJVEZpbmFsaXplci5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6SklURmluYWxpemVyOjpmaW5hbGl6ZUZ1bmN0aW9uKToKKyAgICAgICAgKiBmdGwvRlRM
SklURmluYWxpemVyLmg6CisgICAgICAgIChKU0M6OkZUTDo6T3V0T2ZMaW5lQ29kZUluZm86Ok91
dE9mTGluZUNvZGVJbmZvKToKKyAgICAgICAgQWRkZWQgY29kZSB0byBmaW5hbGl6ZSBhbnkgb3V0
IG9mIGxpbmUgTGlua0J1ZmZlciBjcmVhdGVkIGJ5IGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91
dE9mTGluZUlmTm90KCkuCisKIDIwMTUtMDYtMTkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBdm9pZCBnZXRPd25Qcm9wZXJ0
eU5hbWVzL1N5bWJvbHMgb24gdmVyeSBsYXJnZSBsaXN0cwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCShyZXZpc2lvbiAxODU3NTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBMaW5rQnVmZmVyOjpwZXJmb3JtRmluYWxp
emF0aW9uKCkKICNpZm5kZWYgTkRFQlVHCiAgICAgQVNTRVJUKCFpc0NvbXBpbGF0aW9uVGhyZWFk
KCkpOwogICAgIEFTU0VSVCghbV9jb21wbGV0ZWQpOwotICAgIEFTU0VSVChpc1ZhbGlkKCkpOwor
ICAgIEFTU0VSVCghZGlkRmFpbFRvQWxsb2NhdGUoKSk7CiAgICAgbV9jb21wbGV0ZWQgPSB0cnVl
OwogI2VuZGlmCiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTg1NzU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSwxMSArMTE5LDYg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gIW1fZGlkQWxsb2NhdGU7CiAgICAgfQogCi0gICAg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAhZGlkRmFpbFRvQWxs
b2NhdGUoKTsKLSAgICB9Ci0gICAgCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB0byBs
aW5rIG9yIHNldCB2YWx1ZXMgYXQgY29kZSBnZW5lcmF0aW9uIHRpbWUuCiAKICAgICB2b2lkIGxp
bmsoQ2FsbCBjYWxsLCBGdW5jdGlvblB0ciBmdW5jdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMTg1NzU1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYg
KzE1NSw0OSBAQCBzdGF0aWMgaW50IG9mZnNldE9mU3RhY2tSZWdpb24oU3RhY2tNYXBzCiAgICAg
cmV0dXJuIGNhcHR1cmVkTG9jYXRpb24uYWRkZW5kKCkgLyBzaXplb2YoUmVnaXN0ZXIpOwogfQog
CitzdGF0aWMgdm9pZCBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChTdGF0
ZSYgc3RhdGUsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENDYWxsSGVscGVycyYgY29k
ZSwgY2hhciogc3RhcnRPZklubGluZUNvZGUsIHNpemVfdCBzaXplT2ZJbmxpbmVDb2RlLCBjb25z
dCBjaGFyKiBjb2RlRGVzY3JpcHRpb24sIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChMaW5rQnVm
ZmVyJiwgQ0NhbGxIZWxwZXJzJiwgYm9vbCB3YXNDb21waWxlZElubGluZSk+JiBjYWxsYmFjaykK
K3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gY29kZUxpbmtCdWZmZXI7CisgICAg
c2l6ZV90IGFjdHVhbENvZGVTaXplID0gY29kZS5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6
ZSgpOworCisgICAgaWYgKGFjdHVhbENvZGVTaXplIDw9IHNpemVPZklubGluZUNvZGUpIHsKKyAg
ICAgICAgTGlua0J1ZmZlciBjb2RlTGlua0J1ZmZlcih2bSwgY29kZSwgc3RhcnRPZklubGluZUNv
ZGUsIHNpemVPZklubGluZUNvZGUpOworCisgICAgICAgIC8vIEZpbGwgdGhlIHJlbWFpbmRlciBv
ZiB0aGUgaW5saW5lIHNwYWNlIHdpdGggbm9wcyB0byBhdm9pZCBjb25mdXNpbmcgdGhlIGRpc2Fz
c2VtYmxlci4KKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFzc2VtYmxlclR5cGVfVDo6ZmlsbE5v
cHMoYml0d2lzZV9jYXN0PGNoYXIqPihzdGFydE9mSW5saW5lQ29kZSkgKyBhY3R1YWxDb2RlU2l6
ZSwgc2l6ZU9mSW5saW5lQ29kZSAtIGFjdHVhbENvZGVTaXplKTsKKworICAgICAgICBjYWxsYmFj
ayhjb2RlTGlua0J1ZmZlciwgY29kZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIElmIHRoZXJlIGlzbid0IGVub3VnaCBzcGFjZSBpbiB0aGUgcHJvdmlkZWQgaW5s
aW5lIGNvZGUgYXJlYSwgYWxsb2NhdGUgb3V0IG9mIGxpbmUKKyAgICAvLyBleGVjdXRhYmxlIG1l
bW9yeSB0byBsaW5rIHRoZSBwcm92aWRlZCBjb2RlLiBQbGFjZSBhIGp1bXAgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUKKyAgICAvLyBpbmxpbmUgYXJlYSBhbmQganVtcCB0byB0aGUgb3V0IG9mIGxp
bmUgY29kZS4gU2ltaWxhcmx5IHJldHVybiBieSBhcHBlbmRpbmcgYSBqdW1wCisgICAgLy8gdG8g
dGhlIHByb3ZpZGVkIGNvZGUgdGhhdCBnb2VzIHRvIHRoZSBpbnN0cnVjdGlvbiBhZnRlciB0aGUg
aW5saW5lIGNvZGUuCisgICAgLy8gRmlsbCB0aGUgbWlkZGxlIHdpdGggbm9wJ3MuCisgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgcmV0dXJuVG9NYWlubGluZSA9IGNvZGUuanVtcCgpOworCisgICAg
Ly8gQWxsb2NhdGUgb3V0IG9mIGxpbmUgZXhlY3V0YWJsZSBtZW1vcnkgYW5kIGxpbmsgdGhlIHBy
b3ZpZGVkIGNvZGUgdGhlcmUuCisgICAgY29kZUxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtCdWZmZXI+KHZtLCBjb2RlLCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2Nl
ZWQpOworCisgICAgLy8gUGxhbnQgYSBqbXAgaW4gdGhlIGlubGluZSBidWZmZXIgdG8gdGhlIG91
dCBvZiBsaW5lIGNvZGUuCisgICAgTWFjcm9Bc3NlbWJsZXIgY2FsbFRvT3V0T2ZMaW5lQ29kZTsK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9PdXRPZkxpbmUgPSBjYWxsVG9PdXRPZkxp
bmVDb2RlLmp1bXAoKTsKKyAgICBMaW5rQnVmZmVyIGlubGluZUJ1ZmZlcih2bSwgY2FsbFRvT3V0
T2ZMaW5lQ29kZSwgc3RhcnRPZklubGluZUNvZGUsIHNpemVPZklubGluZUNvZGUpOworICAgIGlu
bGluZUJ1ZmZlci5saW5rKGp1bXBUb091dE9mTGluZSwgY29kZUxpbmtCdWZmZXItPmVudHJ5cG9p
bnQoKSk7CisKKyAgICAvLyBGaWxsIHRoZSByZW1haW5kZXIgb2YgdGhlIGlubGluZSBzcGFjZSB3
aXRoIG5vcHMgdG8gYXZvaWQgY29uZnVzaW5nIHRoZSBkaXNhc3NlbWJsZXIuCisgICAgTWFjcm9B
c3NlbWJsZXI6OkFzc2VtYmxlclR5cGVfVDo6ZmlsbE5vcHMoYml0d2lzZV9jYXN0PGNoYXIqPihz
dGFydE9mSW5saW5lQ29kZSkgKyBpbmxpbmVCdWZmZXIuc2l6ZSgpLCBzaXplT2ZJbmxpbmVDb2Rl
IC0gaW5saW5lQnVmZmVyLnNpemUoKSk7CisKKyAgICAvLyBMaW5rIHRoZSBlbmQgb2YgdGhlIG91
dCBvZiBsaW5lIGNvZGUgdG8gcmlnaHQgYWZ0ZXIgdGhlIGlubGluZSBhcmVhLgorICAgIGNvZGVM
aW5rQnVmZmVyLT5saW5rKHJldHVyblRvTWFpbmxpbmUsIENvZGVMb2NhdGlvbkxhYmVsKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHN0YXJ0T2ZJbmxp
bmVDb2RlKSkubGFiZWxBdE9mZnNldChzaXplT2ZJbmxpbmVDb2RlKSk7CisKKyAgICBjYWxsYmFj
aygqY29kZUxpbmtCdWZmZXIuZ2V0KCksIGNvZGUsIGZhbHNlKTsKKworICAgIHN0YXRlLmZpbmFs
aXplci0+b3V0T2ZMaW5lQ29kZUluZm9zLmFwcGVuZChPdXRPZkxpbmVDb2RlSW5mbyhXVEY6Om1v
dmUoY29kZUxpbmtCdWZmZXIpLCBjb2RlRGVzY3JpcHRpb24pKTsKK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgRGVzY3JpcHRvclR5cGU+CiB2b2lkIGdlbmVyYXRlSUNGYXN0UGF0aCgKICAgICBTdGF0
ZSYgc3RhdGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0
ZWRGdW5jdGlvbiwKQEAgLTE4MSwyMyArMjI0LDE2IEBAIHZvaWQgZ2VuZXJhdGVJQ0Zhc3RQYXRo
KAogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRPZklDID0KICAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsgcmVjb3JkLmluc3RydWN0aW9uT2Zm
c2V0OwotICAgICAgICAKLSAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKHZtLCBmYXN0UGF0
aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQyk7Ci0gICAgICAgIC8vIE5vdGU6IHdlIGNvdWxkIGhh
bmRsZSB0aGUgIWlzVmFsaWQoKSBjYXNlLiBXZSBqdXN0IGRvbid0IGFwcGVhciB0byBoYXZlIGEK
LSAgICAgICAgLy8gcmVhc29uIHRvIGRvIHNvLCB5ZXQuCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKLSAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBc3NlbWJsZXJUeXBlX1Q6OmZpbGxOb3BzKAotICAgICAgICAgICAgc3RhcnRPZklDICsgbGlu
a0J1ZmZlci5zaXplKCksIHNpemVPZklDIC0gbGlua0J1ZmZlci5zaXplKCkpOwotICAgICAgICAK
LSAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXItPmxpbmsoCi0gICAg
ICAgICAgICBpYy5tX3Nsb3dQYXRoRG9uZVtpXSwgQ29kZUxvY2F0aW9uTGFiZWwoc3RhcnRPZklD
ICsgc2l6ZU9mSUMpKTsKLSAgICAgICAgCi0gICAgICAgIGxpbmtCdWZmZXIubGluaygKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5zbG93UGF0aEp1bXAoKSwKLSAgICAgICAgICAgIHN0YXRlLmZpbmFs
aXplci0+c2lkZUNvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mKGdlbmVyYXRvci5zbG93UGF0aEJl
Z2luKCkpKTsKLSAgICAgICAgCi0gICAgICAgIGdlbmVyYXRvci5maW5hbGl6ZShsaW5rQnVmZmVy
LCAqc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXIpOworCisgICAgICAgIGdlbmVy
YXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KHN0YXRlLCB2bSwgY29kZUJsb2NrLCBm
YXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQywgImlubGluZSBjYWNoZSBmYXN0IHBhdGgi
LCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIENDYWxsSGVscGVycyYsIGJvb2wpIHsKKyAg
ICAgICAgICAgIHN0YXRlLmZpbmFsaXplci0+c2lkZUNvZGVMaW5rQnVmZmVyLT5saW5rKGljLm1f
c2xvd1BhdGhEb25lW2ldLAorICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHN0YXJ0
T2ZJQyArIHNpemVPZklDKSk7CisKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhnZW5lcmF0
b3Iuc2xvd1BhdGhKdW1wKCksCisgICAgICAgICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRl
Q29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2YoZ2VuZXJhdG9yLnNsb3dQYXRoQmVnaW4oKSkpOwor
CisgICAgICAgICAgICBnZW5lcmF0b3IuZmluYWxpemUobGlua0J1ZmZlciwgKnN0YXRlLmZpbmFs
aXplci0+c2lkZUNvZGVMaW5rQnVmZmVyKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCkBAIC0y
MzIsMzMgKzI2OCwyOSBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUNoZWNrSW5JQ0Zhc3RQYXRoKAog
CiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZJQyA9CiAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KGdlbmVyYXRlZEZ1bmN0aW9uKSArIHJlY29yZC5pbnN0cnVjdGlvbk9mZnNldDsKLSAgICAg
ICAgCi0gICAgICAgIExpbmtCdWZmZXIgZmFzdFBhdGgodm0sIGZhc3RQYXRoSklULCBzdGFydE9m
SUMsIHNpemVPZklDKTsKLSAgICAgICAgTGlua0J1ZmZlciYgc2xvd1BhdGggPSAqc3RhdGUuZmlu
YWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXI7Ci0gICAgICAgIC8vIE5vdGU6IHdlIGNvdWxkIGhh
bmRsZSB0aGUgIWlzVmFsaWQoKSBjYXNlLiBXZSBqdXN0IGRvbid0IGFwcGVhciB0byBoYXZlIGEK
LSAgICAgICAgLy8gcmVhc29uIHRvIGRvIHNvLCB5ZXQuCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGZhc3RQYXRoLmlzVmFsaWQoKSk7CiAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFzc2VtYmxl
clR5cGVfVDo6ZmlsbE5vcHMoCi0gICAgICAgICAgICBzdGFydE9mSUMgKyBmYXN0UGF0aC5zaXpl
KCksIHNpemVPZklDIC0gZmFzdFBhdGguc2l6ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRl
LmZpbmFsaXplci0+c2lkZUNvZGVMaW5rQnVmZmVyLT5saW5rKAotICAgICAgICAgICAgaWMubV9z
bG93UGF0aERvbmVbaV0sIENvZGVMb2NhdGlvbkxhYmVsKHN0YXJ0T2ZJQyArIHNpemVPZklDKSk7
Ci0gICAgICAgIAotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBzbG93UGF0aEJlZ2luTG9jID0g
c2xvd1BhdGgubG9jYXRpb25PZihzbG93UGF0aEJlZ2luKTsKLSAgICAgICAgZmFzdFBhdGgubGlu
ayhqdW1wLCBzbG93UGF0aEJlZ2luTG9jKTsKKyAgICAgICAgYXV0byBwb3N0TGluayA9IFsmXSAo
TGlua0J1ZmZlciYgZmFzdFBhdGgsIENDYWxsSGVscGVycyYsIGJvb2wpIHsKKyAgICAgICAgICAg
IExpbmtCdWZmZXImIHNsb3dQYXRoID0gKnN0YXRlLmZpbmFsaXplci0+c2lkZUNvZGVMaW5rQnVm
ZmVyOwogCi0gICAgICAgIENvZGVMb2NhdGlvbkNhbGwgY2FsbFJldHVybkxvY2F0aW9uID0gc2xv
d1BhdGgubG9jYXRpb25PZihjYWxsKTsKKyAgICAgICAgICAgIHN0YXRlLmZpbmFsaXplci0+c2lk
ZUNvZGVMaW5rQnVmZmVyLT5saW5rKAorICAgICAgICAgICAgICAgIGljLm1fc2xvd1BhdGhEb25l
W2ldLCBDb2RlTG9jYXRpb25MYWJlbChzdGFydE9mSUMgKyBzaXplT2ZJQykpOwogCi0gICAgICAg
IHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24sIGZhc3RQ
YXRoLmxvY2F0aW9uT2YoZG9uZSkpOworICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgc2xv
d1BhdGhCZWdpbkxvYyA9IHNsb3dQYXRoLmxvY2F0aW9uT2Yoc2xvd1BhdGhCZWdpbik7CisgICAg
ICAgICAgICBmYXN0UGF0aC5saW5rKGp1bXAsIHNsb3dQYXRoQmVnaW5Mb2MpOwogCi0gICAgICAg
IHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvSnVtcCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24sIGZhc3RQ
YXRoLmxvY2F0aW9uT2YoanVtcCkpOwotICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24gPSBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvU2xvd0Nhc2UgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKAot
ICAgICAgICAgICAgY2FsbFJldHVybkxvY2F0aW9uLCBzbG93UGF0aEJlZ2luTG9jKTsKLSAgICAg
ICAgCisgICAgICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiA9IHNs
b3dQYXRoLmxvY2F0aW9uT2YoY2FsbCk7CisKKyAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRl
bHRhQ2FsbFRvRG9uZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIo
CisgICAgICAgICAgICAgICAgY2FsbFJldHVybkxvY2F0aW9uLCBmYXN0UGF0aC5sb2NhdGlvbk9m
KGRvbmUpKTsKKworICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9KdW1wID0g
TWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKKyAgICAgICAgICAgICAg
ICBjYWxsUmV0dXJuTG9jYXRpb24sIGZhc3RQYXRoLmxvY2F0aW9uT2YoanVtcCkpOworICAgICAg
ICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gY2FsbFJldHVybkxvY2F0aW9uOwor
ICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IE1hY3JvQXNz
ZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCisgICAgICAgICAgICAgICAgY2FsbFJl
dHVybkxvY2F0aW9uLCBzbG93UGF0aEJlZ2luTG9jKTsKKyAgICAgICAgfTsKKworICAgICAgICBn
ZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9j
aywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsICJDaGVja0luIGlubGluZSBjYWNo
ZSIsIHBvc3RMaW5rKTsKICAgICB9CiB9CiAKQEAgLTU1OSwxOSArNTkxLDEyIEBAIHN0YXRpYyB2
b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKIAogICAgICAgICBDQ2FsbEhlbHBlcnMg
ZmFzdFBhdGhKSVQoJnZtLCBjb2RlQmxvY2spOwogICAgICAgICBjYWxsLmVtaXQoZmFzdFBhdGhK
SVQpOwotICAgICAgICAKKwogICAgICAgICBjaGFyKiBzdGFydE9mSUMgPSBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KGdlbmVyYXRlZEZ1bmN0aW9uKSArIGNhbGwubV9pbnN0cnVjdGlvbk9mZnNldDsKLSAg
ICAgICAgCi0gICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgZmFzdFBhdGhKSVQsIHN0
YXJ0T2ZJQywgc2l6ZU9mQ2FsbCgpKTsKLSAgICAgICAgaWYgKCFsaW5rQnVmZmVyLmlzVmFsaWQo
KSkgewotICAgICAgICAgICAgZGF0YUxvZygiRmFpbGVkIHRvIGluc2VydCBpbmxpbmUgY2FjaGUg
Zm9yIGNhbGwgYmVjYXVzZSB3ZSB0aG91Z2h0IHRoZSBzaXplIHdvdWxkIGJlICIsIHNpemVPZkNh
bGwoKSwgIiBidXQgaXQgZW5kZWQgdXAgYmVpbmcgIiwgZmFzdFBhdGhKSVQubV9hc3NlbWJsZXIu
Y29kZVNpemUoKSwgIiBwcmlvciB0byBjb21wYWN0aW9uLlxuIik7Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QXNzZW1ibGVyVHlwZV9UOjpmaWxsTm9wcygKLSAgICAgICAgICAgIHN0
YXJ0T2ZJQyArIGxpbmtCdWZmZXIuc2l6ZSgpLCBzaXplT2ZDYWxsKCkgLSBsaW5rQnVmZmVyLnNp
emUoKSk7Ci0gICAgICAgIAotICAgICAgICBjYWxsLmxpbmsodm0sIGxpbmtCdWZmZXIpOworCisg
ICAgICAgIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KHN0YXRlLCB2bSwg
Y29kZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZDYWxsKCksICJKU0NhbGwg
aW5saW5lIGNhY2hlIiwgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBDQ2FsbEhlbHBlcnMm
LCBib29sKSB7CisgICAgICAgICAgICBjYWxsLmxpbmsodm0sIGxpbmtCdWZmZXIpOworICAgICAg
ICB9KTsKICAgICB9CiAgICAgCiAgICAgYWRqdXN0Q2FsbElDc0ZvclN0YWNrbWFwcyhzdGF0ZS5q
c0NhbGxWYXJhcmdzZXMsIHJlY29yZE1hcCk7CkBAIC01ODEsMjAgKzYwNiwxMyBAQCBzdGF0aWMg
dm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgIAogICAgICAgICBDQ2Fs
bEhlbHBlcnMgZmFzdFBhdGhKSVQoJnZtLCBjb2RlQmxvY2spOwogICAgICAgICBjYWxsLmVtaXQo
ZmFzdFBhdGhKSVQsIHZhcmFyZ3NTcGlsbFNsb3RzT2Zmc2V0KTsKLSAgICAgICAgCisKICAgICAg
ICAgY2hhciogc3RhcnRPZklDID0gYml0d2lzZV9jYXN0PGNoYXIqPihnZW5lcmF0ZWRGdW5jdGlv
bikgKyBjYWxsLm1faW5zdHJ1Y3Rpb25PZmZzZXQ7CiAgICAgICAgIHNpemVfdCBzaXplT2ZJQyA9
IHNpemVPZklDRm9yKGNhbGwubm9kZSgpKTsKIAotICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIodm0sIGZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVPZklDKTsKLSAgICAgICAgaWYgKCFs
aW5rQnVmZmVyLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgZGF0YUxvZygiRmFpbGVkIHRvIGlu
c2VydCBpbmxpbmUgY2FjaGUgZm9yIHZhcmFyZ3MgY2FsbCAoc3BlY2lmaWNhbGx5LCAiLCBHcmFw
aDo6b3BOYW1lKGNhbGwubm9kZSgpLT5vcCgpKSwgIikgYmVjYXVzZSB3ZSB0aG91Z2h0IHRoZSBz
aXplIHdvdWxkIGJlICIsIHNpemVPZklDLCAiIGJ1dCBpdCBlbmRlZCB1cCBiZWluZyAiLCBmYXN0
UGF0aEpJVC5tX2Fzc2VtYmxlci5jb2RlU2l6ZSgpLCAiIHByaW9yIHRvIGNvbXBhY3Rpb24uXG4i
KTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBc3NlbWJsZXJUeXBlX1Q6OmZpbGxO
b3BzKAotICAgICAgICAgICAgc3RhcnRPZklDICsgbGlua0J1ZmZlci5zaXplKCksIHNpemVPZklD
IC0gbGlua0J1ZmZlci5zaXplKCkpOwotICAgICAgICAKLSAgICAgICAgY2FsbC5saW5rKHZtLCBs
aW5rQnVmZmVyLCBzdGF0ZS5maW5hbGl6ZXItPmhhbmRsZUV4Y2VwdGlvbnNMaW5rQnVmZmVyLT5l
bnRyeXBvaW50KCkpOworICAgICAgICBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJ
Zk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9jaywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9m
SUMsICJ2YXJhcmdzIGNhbGwgaW5saW5lIGNhY2hlIiwgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyLCBDQ2FsbEhlbHBlcnMmLCBib29sKSB7CisgICAgICAgICAgICBjYWxsLmxpbmsodm0sIGxp
bmtCdWZmZXIsIHN0YXRlLmZpbmFsaXplci0+aGFuZGxlRXhjZXB0aW9uc0xpbmtCdWZmZXItPmVu
dHJ5cG9pbnQoKSk7CisgICAgICAgIH0pOwogICAgIH0KICAgICAKICAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDE4NTc1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI3LDcgKzEyNywxMyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiAg
ICAgICAgICAgICAgICAgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2Rl
QmxvY2suZ2V0KCksIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSkpCiAgICAgICAgICAgICAuZXhl
Y3V0YWJsZU1lbW9yeSgpKTsKICAgICB9Ci0gICAgCisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgb3V0T2ZMaW5lQ29kZUluZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGppdENvZGUt
PmFkZEhhbmRsZShGSU5BTElaRV9ERkdfQ09ERSgKKyAgICAgICAgICAgICpvdXRPZkxpbmVDb2Rl
SW5mb3NbaV0ubV9saW5rQnVmZmVyLAorICAgICAgICAgICAgKCJGVEwgb3V0IG9mIGxpbmUgY29k
ZSBmb3IgJXMiLCBvdXRPZkxpbmVDb2RlSW5mb3NbaV0ubV9jb2RlRGVzY3JpcHRpb24pKS5leGVj
dXRhYmxlTWVtb3J5KCkpOworICAgIH0KKwogICAgIGppdENvZGUtPmluaXRpYWxpemVBcml0eUNo
ZWNrRW50cnlwb2ludCgKICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCiAgICAgICAgICAgICAq
ZW50cnlwb2ludExpbmtCdWZmZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEpJVEZpbmFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklURmluYWxpemVyLmgJKHJldmlzaW9uIDE4NTc1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDExICszOSwy
MyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKK2NsYXNzIE91dE9mTGlu
ZUNvZGVJbmZvIHsKK3B1YmxpYzoKKyAgICBPdXRPZkxpbmVDb2RlSW5mbyhzdGQ6OnVuaXF1ZV9w
dHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciwgY29uc3QgY2hhciogY29kZURlc2NyaXB0aW9uKQor
ICAgICAgICA6IG1fbGlua0J1ZmZlcihXVEY6Om1vdmUobGlua0J1ZmZlcikpCisgICAgICAgICwg
bV9jb2RlRGVzY3JpcHRpb24oY29kZURlc2NyaXB0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOworICAgIGNvbnN0IGNoYXIq
IG1fY29kZURlc2NyaXB0aW9uOworfTsKKwogY2xhc3MgSklURmluYWxpemVyIDogcHVibGljIERG
Rzo6RmluYWxpemVyIHsKIHB1YmxpYzoKICAgICBKSVRGaW5hbGl6ZXIoREZHOjpQbGFuJik7CiAg
ICAgdmlydHVhbCB+SklURmluYWxpemVyKCk7Ci0gICAgCisKICAgICBzaXplX3QgY29kZVNpemUo
KSBvdmVycmlkZTsKICAgICBib29sIGZpbmFsaXplKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBmaW5h
bGl6ZUZ1bmN0aW9uKCkgb3ZlcnJpZGU7CkBAIC01Miw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gZW50cnlwb2ludExpbmtCdWZmZXI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IHNpZGVDb2RlTGlua0J1ZmZlcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGlua0J1ZmZlcj4gaGFuZGxlRXhjZXB0aW9uc0xpbmtCdWZmZXI7CisgICAgVmVj
dG9yPE91dE9mTGluZUNvZGVJbmZvPiBvdXRPZkxpbmVDb2RlSW5mb3M7CiAgICAgVmVjdG9yPFNs
b3dQYXRoQ2FsbD4gc2xvd1BhdGhDYWxsczsgLy8gQ2FsbHMgaW5zaWRlIHRoZSBzaWRlIGNvZGUu
CiAgICAgVmVjdG9yPE9TUkV4aXRDb21waWxhdGlvbkluZm8+IG9zckV4aXQ7CiAgICAgR2VuZXJh
dGVkRnVuY3Rpb24gZnVuY3Rpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255217</attachid>
            <date>2015-06-19 12:46:25 -0700</date>
            <delta_ts>2015-06-19 12:46:25 -0700</delta_ts>
            <desc>Updated patch to fix build</desc>
            <filename>146133-3.patch</filename>
            <type>text/plain</type>
            <size>13759</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg1NzYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBA
CisyMDE1LTA2LTE5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENyYXNoIGluIGNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCBhdCBjb20uYXBwbGUuSmF2
YVNjcmlwdENvcmU6IEpTQzo6RlRMOjpmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMgKyAxNzIy
NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTMz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBn
ZW5lcmF0aW5nIGNvZGUgdG8gcHV0IGluIGlubGluZSBjYWNoaW5nIGFyZWFzLCBpZiB0aGVyZSBp
c24ndCBlbm91Z2ggc3BhY2UsCisgICAgICAgIHRoZW4gY3JlYXRlIGFuZCBsaW5rIHRvIGFuIG91
dCBvZiBsaW5lIGFyZWEuICBXZSBjb25uZWN0IHRoZSBpbmxpbmUgY29kZSB0byB0aGlzCisgICAg
ICAgIG91dCBvZiBsaW5lIGNvZGUgYXJlYSBieSBwbGFudGluZyBhIGp1bXAgZnJvbSB0aGUgaW5s
aW5lIGFyZWEgdG8gdGhlIG91dCBvZiBsaW5lCisgICAgICAgIGNvZGUgYW5kIGFwcGVuZGluZyBh
IGp1bXAgYXQgdGhlIGVuZCBvZiB0aGUgb3V0IG9mIGxpbmUgY29kZSBiY2sgdG8gdGhlIGluc3Ry
dWN0aW9uCisgICAgICAgIGZvbGxvd2luZyB0aGUgaW5saW5lIGFyZWEuICBXZSBmaWxsIHRoZSB1
bnVzZWQgaW5saW5lIGFyZWEgd2l0aCBub3BzLCBwcmltYXJpbHkgdG8gCisgICAgICAgIGVuc3Vy
ZSB0aGUgZGlzYXNzZW1ibGVyIGRvZXNuJ3QgZ2V0IGNvbmZ1c2VkLgorCisgICAgICAgICogZnRs
L0ZUTENvbXBpbGUuY3BwOgorICAgICAgICAoZ2VuZXJhdGVJbmxpbmVJZlBvc3NpYmxlT3V0T2ZM
aW5lSWZOb3QpOiBOZXcgZnVuY3Rpb24gdGhhdCBkZXRlcm1pbmVzIGlmIHRoZXJlIGlzIGVub3Vn
aCBzcGFjZQorICAgICAgICBpbiB0aGUgaW5saW5lIGNvZGUgYXJlYSBmb3IgdGhlIGNvZGUgdG8g
bGluay4gIElmIHNvLCBpdCBsaW5rcyBpbmxpbmUsIG90aGVyd2lzZSBpdCBsaW5rcyB0aGUKKyAg
ICAgICAgY29kZSBvdXQgb2YgbGluZSBhbmQgcGxhbnRzIGFwcHJvcHJpYXRlIGp1bXBzIHRvL2Zy
b20gdGhlIG91dCBvZiBsaW5lIGNvZGUuCisgICAgICAgIChnZW5lcmF0ZUlDRmFzdFBhdGgpOgor
ICAgICAgICAoZ2VuZXJhdGVDaGVja0luSUNGYXN0UGF0aCk6CisgICAgICAgIChmaXhGdW5jdGlv
bkJhc2VkT25TdGFja01hcHMpOgorICAgICAgICBVc2UgZ2VuZXJhdGVJbmxpbmVJZlBvc3NpYmxl
T3V0T2ZMaW5lSWZOb3QoKSB0byBsaW5rIGNvZGUgaW50ZW5kZWQgZm9yIGlubGluZSBjYWNoZSBz
cGFjZS4KKworICAgICAgICAqIGZ0bC9GVExKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbik6CisgICAgICAgICogZnRsL0ZU
TEpJVEZpbmFsaXplci5oOgorICAgICAgICAoSlNDOjpGVEw6Ok91dE9mTGluZUNvZGVJbmZvOjpP
dXRPZkxpbmVDb2RlSW5mbyk6CisgICAgICAgIEFkZGVkIGNvZGUgdG8gZmluYWxpemUgYW55IG91
dCBvZiBsaW5lIExpbmtCdWZmZXIgY3JlYXRlZCBieSBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVP
dXRPZkxpbmVJZk5vdCgpLgorCiAyMDE1LTA2LTE5ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFy
b0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogQXZvaWQgZ2V0T3duUHJvcGVy
dHlOYW1lcy9TeW1ib2xzIG9uIHZlcnkgbGFyZ2UgbGlzdHMKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQ29tcGlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkocmV2aXNpb24gMTg1NzYzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYg
KzE1NSw0OSBAQCBzdGF0aWMgaW50IG9mZnNldE9mU3RhY2tSZWdpb24oU3RhY2tNYXBzCiAgICAg
cmV0dXJuIGNhcHR1cmVkTG9jYXRpb24uYWRkZW5kKCkgLyBzaXplb2YoUmVnaXN0ZXIpOwogfQog
CitzdGF0aWMgdm9pZCBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChTdGF0
ZSYgc3RhdGUsIFZNJiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIENDYWxsSGVscGVycyYgY29k
ZSwgY2hhciogc3RhcnRPZklubGluZUNvZGUsIHNpemVfdCBzaXplT2ZJbmxpbmVDb2RlLCBjb25z
dCBjaGFyKiBjb2RlRGVzY3JpcHRpb24sIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZChMaW5rQnVm
ZmVyJiwgQ0NhbGxIZWxwZXJzJiwgYm9vbCB3YXNDb21waWxlZElubGluZSk+JiBjYWxsYmFjaykK
K3sKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gY29kZUxpbmtCdWZmZXI7CisgICAg
c2l6ZV90IGFjdHVhbENvZGVTaXplID0gY29kZS5tX2Fzc2VtYmxlci5idWZmZXIoKS5jb2RlU2l6
ZSgpOworCisgICAgaWYgKGFjdHVhbENvZGVTaXplIDw9IHNpemVPZklubGluZUNvZGUpIHsKKyAg
ICAgICAgTGlua0J1ZmZlciBjb2RlTGlua0J1ZmZlcih2bSwgY29kZSwgc3RhcnRPZklubGluZUNv
ZGUsIHNpemVPZklubGluZUNvZGUpOworCisgICAgICAgIC8vIEZpbGwgdGhlIHJlbWFpbmRlciBv
ZiB0aGUgaW5saW5lIHNwYWNlIHdpdGggbm9wcyB0byBhdm9pZCBjb25mdXNpbmcgdGhlIGRpc2Fz
c2VtYmxlci4KKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFzc2VtYmxlclR5cGVfVDo6ZmlsbE5v
cHMoYml0d2lzZV9jYXN0PGNoYXIqPihzdGFydE9mSW5saW5lQ29kZSkgKyBhY3R1YWxDb2RlU2l6
ZSwgc2l6ZU9mSW5saW5lQ29kZSAtIGFjdHVhbENvZGVTaXplKTsKKworICAgICAgICBjYWxsYmFj
ayhjb2RlTGlua0J1ZmZlciwgY29kZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIC8vIElmIHRoZXJlIGlzbid0IGVub3VnaCBzcGFjZSBpbiB0aGUgcHJvdmlkZWQgaW5s
aW5lIGNvZGUgYXJlYSwgYWxsb2NhdGUgb3V0IG9mIGxpbmUKKyAgICAvLyBleGVjdXRhYmxlIG1l
bW9yeSB0byBsaW5rIHRoZSBwcm92aWRlZCBjb2RlLiBQbGFjZSBhIGp1bXAgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUKKyAgICAvLyBpbmxpbmUgYXJlYSBhbmQganVtcCB0byB0aGUgb3V0IG9mIGxp
bmUgY29kZS4gU2ltaWxhcmx5IHJldHVybiBieSBhcHBlbmRpbmcgYSBqdW1wCisgICAgLy8gdG8g
dGhlIHByb3ZpZGVkIGNvZGUgdGhhdCBnb2VzIHRvIHRoZSBpbnN0cnVjdGlvbiBhZnRlciB0aGUg
aW5saW5lIGNvZGUuCisgICAgLy8gRmlsbCB0aGUgbWlkZGxlIHdpdGggbm9wJ3MuCisgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgcmV0dXJuVG9NYWlubGluZSA9IGNvZGUuanVtcCgpOworCisgICAg
Ly8gQWxsb2NhdGUgb3V0IG9mIGxpbmUgZXhlY3V0YWJsZSBtZW1vcnkgYW5kIGxpbmsgdGhlIHBy
b3ZpZGVkIGNvZGUgdGhlcmUuCisgICAgY29kZUxpbmtCdWZmZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PExpbmtCdWZmZXI+KHZtLCBjb2RlLCBjb2RlQmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2Nl
ZWQpOworCisgICAgLy8gUGxhbnQgYSBqbXAgaW4gdGhlIGlubGluZSBidWZmZXIgdG8gdGhlIG91
dCBvZiBsaW5lIGNvZGUuCisgICAgTWFjcm9Bc3NlbWJsZXIgY2FsbFRvT3V0T2ZMaW5lQ29kZTsK
KyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9PdXRPZkxpbmUgPSBjYWxsVG9PdXRPZkxp
bmVDb2RlLmp1bXAoKTsKKyAgICBMaW5rQnVmZmVyIGlubGluZUJ1ZmZlcih2bSwgY2FsbFRvT3V0
T2ZMaW5lQ29kZSwgc3RhcnRPZklubGluZUNvZGUsIHNpemVPZklubGluZUNvZGUpOworICAgIGlu
bGluZUJ1ZmZlci5saW5rKGp1bXBUb091dE9mTGluZSwgY29kZUxpbmtCdWZmZXItPmVudHJ5cG9p
bnQoKSk7CisKKyAgICAvLyBGaWxsIHRoZSByZW1haW5kZXIgb2YgdGhlIGlubGluZSBzcGFjZSB3
aXRoIG5vcHMgdG8gYXZvaWQgY29uZnVzaW5nIHRoZSBkaXNhc3NlbWJsZXIuCisgICAgTWFjcm9B
c3NlbWJsZXI6OkFzc2VtYmxlclR5cGVfVDo6ZmlsbE5vcHMoYml0d2lzZV9jYXN0PGNoYXIqPihz
dGFydE9mSW5saW5lQ29kZSkgKyBpbmxpbmVCdWZmZXIuc2l6ZSgpLCBzaXplT2ZJbmxpbmVDb2Rl
IC0gaW5saW5lQnVmZmVyLnNpemUoKSk7CisKKyAgICAvLyBMaW5rIHRoZSBlbmQgb2YgdGhlIG91
dCBvZiBsaW5lIGNvZGUgdG8gcmlnaHQgYWZ0ZXIgdGhlIGlubGluZSBhcmVhLgorICAgIGNvZGVM
aW5rQnVmZmVyLT5saW5rKHJldHVyblRvTWFpbmxpbmUsIENvZGVMb2NhdGlvbkxhYmVsKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHN0YXJ0T2ZJbmxp
bmVDb2RlKSkubGFiZWxBdE9mZnNldChzaXplT2ZJbmxpbmVDb2RlKSk7CisKKyAgICBjYWxsYmFj
aygqY29kZUxpbmtCdWZmZXIuZ2V0KCksIGNvZGUsIGZhbHNlKTsKKworICAgIHN0YXRlLmZpbmFs
aXplci0+b3V0T2ZMaW5lQ29kZUluZm9zLmFwcGVuZChPdXRPZkxpbmVDb2RlSW5mbyhXVEY6Om1v
dmUoY29kZUxpbmtCdWZmZXIpLCBjb2RlRGVzY3JpcHRpb24pKTsKK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgRGVzY3JpcHRvclR5cGU+CiB2b2lkIGdlbmVyYXRlSUNGYXN0UGF0aCgKICAgICBTdGF0
ZSYgc3RhdGUsIENvZGVCbG9jayogY29kZUJsb2NrLCBHZW5lcmF0ZWRGdW5jdGlvbiBnZW5lcmF0
ZWRGdW5jdGlvbiwKQEAgLTE4MSwyMyArMjI0LDE2IEBAIHZvaWQgZ2VuZXJhdGVJQ0Zhc3RQYXRo
KAogICAgICAgICAKICAgICAgICAgY2hhciogc3RhcnRPZklDID0KICAgICAgICAgICAgIGJpdHdp
c2VfY2FzdDxjaGFyKj4oZ2VuZXJhdGVkRnVuY3Rpb24pICsgcmVjb3JkLmluc3RydWN0aW9uT2Zm
c2V0OwotICAgICAgICAKLSAgICAgICAgTGlua0J1ZmZlciBsaW5rQnVmZmVyKHZtLCBmYXN0UGF0
aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQyk7Ci0gICAgICAgIC8vIE5vdGU6IHdlIGNvdWxkIGhh
bmRsZSB0aGUgIWlzVmFsaWQoKSBjYXNlLiBXZSBqdXN0IGRvbid0IGFwcGVhciB0byBoYXZlIGEK
LSAgICAgICAgLy8gcmVhc29uIHRvIGRvIHNvLCB5ZXQuCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGxpbmtCdWZmZXIuaXNWYWxpZCgpKTsKLSAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpBc3NlbWJsZXJUeXBlX1Q6OmZpbGxOb3BzKAotICAgICAgICAgICAgc3RhcnRPZklDICsgbGlu
a0J1ZmZlci5zaXplKCksIHNpemVPZklDIC0gbGlua0J1ZmZlci5zaXplKCkpOwotICAgICAgICAK
LSAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXItPmxpbmsoCi0gICAg
ICAgICAgICBpYy5tX3Nsb3dQYXRoRG9uZVtpXSwgQ29kZUxvY2F0aW9uTGFiZWwoc3RhcnRPZklD
ICsgc2l6ZU9mSUMpKTsKLSAgICAgICAgCi0gICAgICAgIGxpbmtCdWZmZXIubGluaygKLSAgICAg
ICAgICAgIGdlbmVyYXRvci5zbG93UGF0aEp1bXAoKSwKLSAgICAgICAgICAgIHN0YXRlLmZpbmFs
aXplci0+c2lkZUNvZGVMaW5rQnVmZmVyLT5sb2NhdGlvbk9mKGdlbmVyYXRvci5zbG93UGF0aEJl
Z2luKCkpKTsKLSAgICAgICAgCi0gICAgICAgIGdlbmVyYXRvci5maW5hbGl6ZShsaW5rQnVmZmVy
LCAqc3RhdGUuZmluYWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXIpOworCisgICAgICAgIGdlbmVy
YXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KHN0YXRlLCB2bSwgY29kZUJsb2NrLCBm
YXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZJQywgImlubGluZSBjYWNoZSBmYXN0IHBhdGgi
LCBbJl0gKExpbmtCdWZmZXImIGxpbmtCdWZmZXIsIENDYWxsSGVscGVycyYsIGJvb2wpIHsKKyAg
ICAgICAgICAgIHN0YXRlLmZpbmFsaXplci0+c2lkZUNvZGVMaW5rQnVmZmVyLT5saW5rKGljLm1f
c2xvd1BhdGhEb25lW2ldLAorICAgICAgICAgICAgICAgIENvZGVMb2NhdGlvbkxhYmVsKHN0YXJ0
T2ZJQyArIHNpemVPZklDKSk7CisKKyAgICAgICAgICAgIGxpbmtCdWZmZXIubGluayhnZW5lcmF0
b3Iuc2xvd1BhdGhKdW1wKCksCisgICAgICAgICAgICAgICAgc3RhdGUuZmluYWxpemVyLT5zaWRl
Q29kZUxpbmtCdWZmZXItPmxvY2F0aW9uT2YoZ2VuZXJhdG9yLnNsb3dQYXRoQmVnaW4oKSkpOwor
CisgICAgICAgICAgICBnZW5lcmF0b3IuZmluYWxpemUobGlua0J1ZmZlciwgKnN0YXRlLmZpbmFs
aXplci0+c2lkZUNvZGVMaW5rQnVmZmVyKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCkBAIC0y
MzIsMzMgKzI2OCwyOSBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUNoZWNrSW5JQ0Zhc3RQYXRoKAog
CiAgICAgICAgIGNoYXIqIHN0YXJ0T2ZJQyA9CiAgICAgICAgICAgICBiaXR3aXNlX2Nhc3Q8Y2hh
cio+KGdlbmVyYXRlZEZ1bmN0aW9uKSArIHJlY29yZC5pbnN0cnVjdGlvbk9mZnNldDsKLSAgICAg
ICAgCi0gICAgICAgIExpbmtCdWZmZXIgZmFzdFBhdGgodm0sIGZhc3RQYXRoSklULCBzdGFydE9m
SUMsIHNpemVPZklDKTsKLSAgICAgICAgTGlua0J1ZmZlciYgc2xvd1BhdGggPSAqc3RhdGUuZmlu
YWxpemVyLT5zaWRlQ29kZUxpbmtCdWZmZXI7Ci0gICAgICAgIC8vIE5vdGU6IHdlIGNvdWxkIGhh
bmRsZSB0aGUgIWlzVmFsaWQoKSBjYXNlLiBXZSBqdXN0IGRvbid0IGFwcGVhciB0byBoYXZlIGEK
LSAgICAgICAgLy8gcmVhc29uIHRvIGRvIHNvLCB5ZXQuCi0gICAgICAgIFJFTEVBU0VfQVNTRVJU
KGZhc3RQYXRoLmlzVmFsaWQoKSk7CiAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFzc2VtYmxl
clR5cGVfVDo6ZmlsbE5vcHMoCi0gICAgICAgICAgICBzdGFydE9mSUMgKyBmYXN0UGF0aC5zaXpl
KCksIHNpemVPZklDIC0gZmFzdFBhdGguc2l6ZSgpKTsKLSAgICAgICAgCi0gICAgICAgIHN0YXRl
LmZpbmFsaXplci0+c2lkZUNvZGVMaW5rQnVmZmVyLT5saW5rKAotICAgICAgICAgICAgaWMubV9z
bG93UGF0aERvbmVbaV0sIENvZGVMb2NhdGlvbkxhYmVsKHN0YXJ0T2ZJQyArIHNpemVPZklDKSk7
Ci0gICAgICAgIAotICAgICAgICBDb2RlTG9jYXRpb25MYWJlbCBzbG93UGF0aEJlZ2luTG9jID0g
c2xvd1BhdGgubG9jYXRpb25PZihzbG93UGF0aEJlZ2luKTsKLSAgICAgICAgZmFzdFBhdGgubGlu
ayhqdW1wLCBzbG93UGF0aEJlZ2luTG9jKTsKKyAgICAgICAgYXV0byBwb3N0TGluayA9IFsmXSAo
TGlua0J1ZmZlciYgZmFzdFBhdGgsIENDYWxsSGVscGVycyYsIGJvb2wpIHsKKyAgICAgICAgICAg
IExpbmtCdWZmZXImIHNsb3dQYXRoID0gKnN0YXRlLmZpbmFsaXplci0+c2lkZUNvZGVMaW5rQnVm
ZmVyOwogCi0gICAgICAgIENvZGVMb2NhdGlvbkNhbGwgY2FsbFJldHVybkxvY2F0aW9uID0gc2xv
d1BhdGgubG9jYXRpb25PZihjYWxsKTsKKyAgICAgICAgICAgIHN0YXRlLmZpbmFsaXplci0+c2lk
ZUNvZGVMaW5rQnVmZmVyLT5saW5rKAorICAgICAgICAgICAgICAgIGljLm1fc2xvd1BhdGhEb25l
W2ldLCBDb2RlTG9jYXRpb25MYWJlbChzdGFydE9mSUMgKyBzaXplT2ZJQykpOwogCi0gICAgICAg
IHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24sIGZhc3RQ
YXRoLmxvY2F0aW9uT2YoZG9uZSkpOworICAgICAgICAgICAgQ29kZUxvY2F0aW9uTGFiZWwgc2xv
d1BhdGhCZWdpbkxvYyA9IHNsb3dQYXRoLmxvY2F0aW9uT2Yoc2xvd1BhdGhCZWdpbik7CisgICAg
ICAgICAgICBmYXN0UGF0aC5saW5rKGp1bXAsIHNsb3dQYXRoQmVnaW5Mb2MpOwogCi0gICAgICAg
IHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2FsbFRvSnVtcCA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJl
bmNlQmV0d2VlbkNvZGVQdHIoCi0gICAgICAgICAgICBjYWxsUmV0dXJuTG9jYXRpb24sIGZhc3RQ
YXRoLmxvY2F0aW9uT2YoanVtcCkpOwotICAgICAgICBzdHViSW5mby5jYWxsUmV0dXJuTG9jYXRp
b24gPSBjYWxsUmV0dXJuTG9jYXRpb247Ci0gICAgICAgIHN0dWJJbmZvLnBhdGNoLmRlbHRhQ2Fs
bFRvU2xvd0Nhc2UgPSBNYWNyb0Fzc2VtYmxlcjo6ZGlmZmVyZW5jZUJldHdlZW5Db2RlUHRyKAot
ICAgICAgICAgICAgY2FsbFJldHVybkxvY2F0aW9uLCBzbG93UGF0aEJlZ2luTG9jKTsKLSAgICAg
ICAgCisgICAgICAgICAgICBDb2RlTG9jYXRpb25DYWxsIGNhbGxSZXR1cm5Mb2NhdGlvbiA9IHNs
b3dQYXRoLmxvY2F0aW9uT2YoY2FsbCk7CisKKyAgICAgICAgICAgIHN0dWJJbmZvLnBhdGNoLmRl
bHRhQ2FsbFRvRG9uZSA9IE1hY3JvQXNzZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIo
CisgICAgICAgICAgICAgICAgY2FsbFJldHVybkxvY2F0aW9uLCBmYXN0UGF0aC5sb2NhdGlvbk9m
KGRvbmUpKTsKKworICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9KdW1wID0g
TWFjcm9Bc3NlbWJsZXI6OmRpZmZlcmVuY2VCZXR3ZWVuQ29kZVB0cigKKyAgICAgICAgICAgICAg
ICBjYWxsUmV0dXJuTG9jYXRpb24sIGZhc3RQYXRoLmxvY2F0aW9uT2YoanVtcCkpOworICAgICAg
ICAgICAgc3R1YkluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gY2FsbFJldHVybkxvY2F0aW9uOwor
ICAgICAgICAgICAgc3R1YkluZm8ucGF0Y2guZGVsdGFDYWxsVG9TbG93Q2FzZSA9IE1hY3JvQXNz
ZW1ibGVyOjpkaWZmZXJlbmNlQmV0d2VlbkNvZGVQdHIoCisgICAgICAgICAgICAgICAgY2FsbFJl
dHVybkxvY2F0aW9uLCBzbG93UGF0aEJlZ2luTG9jKTsKKyAgICAgICAgfTsKKworICAgICAgICBn
ZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJZk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9j
aywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9mSUMsICJDaGVja0luIGlubGluZSBjYWNo
ZSIsIHBvc3RMaW5rKTsKICAgICB9CiB9CiAKQEAgLTU1OSwxOSArNTkxLDEyIEBAIHN0YXRpYyB2
b2lkIGZpeEZ1bmN0aW9uQmFzZWRPblN0YWNrTWFwcygKIAogICAgICAgICBDQ2FsbEhlbHBlcnMg
ZmFzdFBhdGhKSVQoJnZtLCBjb2RlQmxvY2spOwogICAgICAgICBjYWxsLmVtaXQoZmFzdFBhdGhK
SVQpOwotICAgICAgICAKKwogICAgICAgICBjaGFyKiBzdGFydE9mSUMgPSBiaXR3aXNlX2Nhc3Q8
Y2hhcio+KGdlbmVyYXRlZEZ1bmN0aW9uKSArIGNhbGwubV9pbnN0cnVjdGlvbk9mZnNldDsKLSAg
ICAgICAgCi0gICAgICAgIExpbmtCdWZmZXIgbGlua0J1ZmZlcih2bSwgZmFzdFBhdGhKSVQsIHN0
YXJ0T2ZJQywgc2l6ZU9mQ2FsbCgpKTsKLSAgICAgICAgaWYgKCFsaW5rQnVmZmVyLmlzVmFsaWQo
KSkgewotICAgICAgICAgICAgZGF0YUxvZygiRmFpbGVkIHRvIGluc2VydCBpbmxpbmUgY2FjaGUg
Zm9yIGNhbGwgYmVjYXVzZSB3ZSB0aG91Z2h0IHRoZSBzaXplIHdvdWxkIGJlICIsIHNpemVPZkNh
bGwoKSwgIiBidXQgaXQgZW5kZWQgdXAgYmVpbmcgIiwgZmFzdFBhdGhKSVQubV9hc3NlbWJsZXIu
Y29kZVNpemUoKSwgIiBwcmlvciB0byBjb21wYWN0aW9uLlxuIik7Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6QXNzZW1ibGVyVHlwZV9UOjpmaWxsTm9wcygKLSAgICAgICAgICAgIHN0
YXJ0T2ZJQyArIGxpbmtCdWZmZXIuc2l6ZSgpLCBzaXplT2ZDYWxsKCkgLSBsaW5rQnVmZmVyLnNp
emUoKSk7Ci0gICAgICAgIAotICAgICAgICBjYWxsLmxpbmsodm0sIGxpbmtCdWZmZXIpOworCisg
ICAgICAgIGdlbmVyYXRlSW5saW5lSWZQb3NzaWJsZU91dE9mTGluZUlmTm90KHN0YXRlLCB2bSwg
Y29kZUJsb2NrLCBmYXN0UGF0aEpJVCwgc3RhcnRPZklDLCBzaXplT2ZDYWxsKCksICJKU0NhbGwg
aW5saW5lIGNhY2hlIiwgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVmZmVyLCBDQ2FsbEhlbHBlcnMm
LCBib29sKSB7CisgICAgICAgICAgICBjYWxsLmxpbmsodm0sIGxpbmtCdWZmZXIpOworICAgICAg
ICB9KTsKICAgICB9CiAgICAgCiAgICAgYWRqdXN0Q2FsbElDc0ZvclN0YWNrbWFwcyhzdGF0ZS5q
c0NhbGxWYXJhcmdzZXMsIHJlY29yZE1hcCk7CkBAIC01ODEsMjAgKzYwNiwxMyBAQCBzdGF0aWMg
dm9pZCBmaXhGdW5jdGlvbkJhc2VkT25TdGFja01hcHMoCiAgICAgICAgIAogICAgICAgICBDQ2Fs
bEhlbHBlcnMgZmFzdFBhdGhKSVQoJnZtLCBjb2RlQmxvY2spOwogICAgICAgICBjYWxsLmVtaXQo
ZmFzdFBhdGhKSVQsIHZhcmFyZ3NTcGlsbFNsb3RzT2Zmc2V0KTsKLSAgICAgICAgCisKICAgICAg
ICAgY2hhciogc3RhcnRPZklDID0gYml0d2lzZV9jYXN0PGNoYXIqPihnZW5lcmF0ZWRGdW5jdGlv
bikgKyBjYWxsLm1faW5zdHJ1Y3Rpb25PZmZzZXQ7CiAgICAgICAgIHNpemVfdCBzaXplT2ZJQyA9
IHNpemVPZklDRm9yKGNhbGwubm9kZSgpKTsKIAotICAgICAgICBMaW5rQnVmZmVyIGxpbmtCdWZm
ZXIodm0sIGZhc3RQYXRoSklULCBzdGFydE9mSUMsIHNpemVPZklDKTsKLSAgICAgICAgaWYgKCFs
aW5rQnVmZmVyLmlzVmFsaWQoKSkgewotICAgICAgICAgICAgZGF0YUxvZygiRmFpbGVkIHRvIGlu
c2VydCBpbmxpbmUgY2FjaGUgZm9yIHZhcmFyZ3MgY2FsbCAoc3BlY2lmaWNhbGx5LCAiLCBHcmFw
aDo6b3BOYW1lKGNhbGwubm9kZSgpLT5vcCgpKSwgIikgYmVjYXVzZSB3ZSB0aG91Z2h0IHRoZSBz
aXplIHdvdWxkIGJlICIsIHNpemVPZklDLCAiIGJ1dCBpdCBlbmRlZCB1cCBiZWluZyAiLCBmYXN0
UGF0aEpJVC5tX2Fzc2VtYmxlci5jb2RlU2l6ZSgpLCAiIHByaW9yIHRvIGNvbXBhY3Rpb24uXG4i
KTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBc3NlbWJsZXJUeXBlX1Q6OmZpbGxO
b3BzKAotICAgICAgICAgICAgc3RhcnRPZklDICsgbGlua0J1ZmZlci5zaXplKCksIHNpemVPZklD
IC0gbGlua0J1ZmZlci5zaXplKCkpOwotICAgICAgICAKLSAgICAgICAgY2FsbC5saW5rKHZtLCBs
aW5rQnVmZmVyLCBzdGF0ZS5maW5hbGl6ZXItPmhhbmRsZUV4Y2VwdGlvbnNMaW5rQnVmZmVyLT5l
bnRyeXBvaW50KCkpOworICAgICAgICBnZW5lcmF0ZUlubGluZUlmUG9zc2libGVPdXRPZkxpbmVJ
Zk5vdChzdGF0ZSwgdm0sIGNvZGVCbG9jaywgZmFzdFBhdGhKSVQsIHN0YXJ0T2ZJQywgc2l6ZU9m
SUMsICJ2YXJhcmdzIGNhbGwgaW5saW5lIGNhY2hlIiwgWyZdIChMaW5rQnVmZmVyJiBsaW5rQnVm
ZmVyLCBDQ2FsbEhlbHBlcnMmLCBib29sKSB7CisgICAgICAgICAgICBjYWxsLmxpbmsodm0sIGxp
bmtCdWZmZXIsIHN0YXRlLmZpbmFsaXplci0+aGFuZGxlRXhjZXB0aW9uc0xpbmtCdWZmZXItPmVu
dHJ5cG9pbnQoKSk7CisgICAgICAgIH0pOwogICAgIH0KICAgICAKICAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIoY29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEpJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDE4NTc2MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI3LDcgKzEyNywxMyBAQCBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbigpCiAg
ICAgICAgICAgICAgICAgdG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2Rl
QmxvY2suZ2V0KCksIEpJVENvZGU6OkZUTEpJVCkpLmRhdGEoKSkpCiAgICAgICAgICAgICAuZXhl
Y3V0YWJsZU1lbW9yeSgpKTsKICAgICB9Ci0gICAgCisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgb3V0T2ZMaW5lQ29kZUluZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGppdENvZGUt
PmFkZEhhbmRsZShGSU5BTElaRV9ERkdfQ09ERSgKKyAgICAgICAgICAgICpvdXRPZkxpbmVDb2Rl
SW5mb3NbaV0ubV9saW5rQnVmZmVyLAorICAgICAgICAgICAgKCJGVEwgb3V0IG9mIGxpbmUgY29k
ZSBmb3IgJXMiLCBvdXRPZkxpbmVDb2RlSW5mb3NbaV0ubV9jb2RlRGVzY3JpcHRpb24pKS5leGVj
dXRhYmxlTWVtb3J5KCkpOworICAgIH0KKwogICAgIGppdENvZGUtPmluaXRpYWxpemVBcml0eUNo
ZWNrRW50cnlwb2ludCgKICAgICAgICAgRklOQUxJWkVfREZHX0NPREUoCiAgICAgICAgICAgICAq
ZW50cnlwb2ludExpbmtCdWZmZXIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEpJVEZpbmFsaXplci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMSklURmluYWxpemVyLmgJKHJldmlzaW9uIDE4NTc2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMSklURmluYWxpemVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDExICszOSwy
MyBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKK2NsYXNzIE91dE9mTGlu
ZUNvZGVJbmZvIHsKK3B1YmxpYzoKKyAgICBPdXRPZkxpbmVDb2RlSW5mbyhzdGQ6OnVuaXF1ZV9w
dHI8TGlua0J1ZmZlcj4gbGlua0J1ZmZlciwgY29uc3QgY2hhciogY29kZURlc2NyaXB0aW9uKQor
ICAgICAgICA6IG1fbGlua0J1ZmZlcihXVEY6Om1vdmUobGlua0J1ZmZlcikpCisgICAgICAgICwg
bV9jb2RlRGVzY3JpcHRpb24oY29kZURlc2NyaXB0aW9uKQorICAgIHsKKyAgICB9CisKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gbV9saW5rQnVmZmVyOworICAgIGNvbnN0IGNoYXIq
IG1fY29kZURlc2NyaXB0aW9uOworfTsKKwogY2xhc3MgSklURmluYWxpemVyIDogcHVibGljIERG
Rzo6RmluYWxpemVyIHsKIHB1YmxpYzoKICAgICBKSVRGaW5hbGl6ZXIoREZHOjpQbGFuJik7CiAg
ICAgdmlydHVhbCB+SklURmluYWxpemVyKCk7Ci0gICAgCisKICAgICBzaXplX3QgY29kZVNpemUo
KSBvdmVycmlkZTsKICAgICBib29sIGZpbmFsaXplKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBmaW5h
bGl6ZUZ1bmN0aW9uKCkgb3ZlcnJpZGU7CkBAIC01Miw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8TGlua0J1ZmZlcj4gZW50cnlwb2ludExpbmtCdWZmZXI7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPExpbmtCdWZmZXI+IHNpZGVDb2RlTGlua0J1ZmZlcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TGlua0J1ZmZlcj4gaGFuZGxlRXhjZXB0aW9uc0xpbmtCdWZmZXI7CisgICAgVmVj
dG9yPE91dE9mTGluZUNvZGVJbmZvPiBvdXRPZkxpbmVDb2RlSW5mb3M7CiAgICAgVmVjdG9yPFNs
b3dQYXRoQ2FsbD4gc2xvd1BhdGhDYWxsczsgLy8gQ2FsbHMgaW5zaWRlIHRoZSBzaWRlIGNvZGUu
CiAgICAgVmVjdG9yPE9TUkV4aXRDb21waWxhdGlvbkluZm8+IG9zckV4aXQ7CiAgICAgR2VuZXJh
dGVkRnVuY3Rpb24gZnVuY3Rpb247Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>