<?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>154849</bug_id>
          
          <creation_ts>2016-03-01 01:20:34 -0800</creation_ts>
          <short_desc>Remove DeferredWrapper::resolve&lt;Vector&lt;unsigned char&gt;&gt;</short_desc>
          <delta_ts>2016-03-24 03:36:52 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>150497</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1169398</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-01 01:20:34 -0800</bug_when>
    <thetext>Following on bug 154820, it may be better to pass an ArrayBuffer in lieu of a Vector&lt;char&gt;, Vector&lt;uint8_t&gt; to promises.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169422</commentid>
    <comment_count>1</comment_count>
      <attachid>272560</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-01 05:24:16 -0800</bug_when>
    <thetext>Created attachment 272560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169454</commentid>
    <comment_count>2</comment_count>
      <attachid>272560</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-01 09:22:43 -0800</bug_when>
    <thetext>Comment on attachment 272560
Patch

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

A step in the right direction, overlaps another patch in process, and has some problems handling memory exhaustion.

&gt; Source/JavaScriptCore/runtime/ArrayBuffer.h:156
&gt; -PassRefPtr&lt;ArrayBuffer&gt; ArrayBuffer::create(const void* source, unsigned byteLength)
&gt; +RefPtr&lt;ArrayBuffer&gt; ArrayBuffer::create(const void* source, unsigned byteLength)

This overlaps a patch that someone is currently working on to fix all the ArrayBuffer constructors to not use PassRefPtr any more. As I noticed when reviewing that patch, there’s something particularly bad about a function named create that can actually return nullptr given our usual idiom. I think this function should be renamed tryCreate.

If we want to use a function for normal cases where we need the buffer to be allocated and it’s not optional to succeed, then we should make one that crashes if it can’t allocate, like most memory allocations in WebKit. And that function can be named create, and it should return a Ref&lt;ArrayBuffer&gt;, not a RefPtr&lt;ArrayBuffer&gt;.

&gt; Source/WebCore/Modules/fetch/FetchBody.cpp:108
&gt; -        RefPtr&lt;ArrayBuffer&gt; buffer = ArrayBuffer::create(data.data(), data.size());
&gt; -        promise.resolve(buffer);
&gt; +        promise.resolve(ArrayBuffer::create(data.data(), data.size()));

This calls the “tryCreate” function, but does not check for null.

&gt; Source/WebCore/Modules/mediastream/RTCDataChannel.cpp:284
&gt; +        scheduleDispatchEvent(MessageEvent::create(ArrayBuffer::create(data, dataLength)));

This calls the “tryCreate” function, but does not check for null.

&gt; Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:170
&gt; +        wrapper.resolve(ArrayBuffer::create(result.data(), result.size()));

This calls the “tryCreate” function, but does not check for null.

&gt; Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:222
&gt; +        wrapper.resolve(ArrayBuffer::create(result.data(), result.size()));

This calls the “tryCreate” function, but does not check for null.

&gt; Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:374
&gt; +        wrapper.resolve(ArrayBuffer::create(result.data(), result.size()));

This calls the “tryCreate” function, but does not check for null.

&gt; Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:616
&gt; +        wrapper.resolve(ArrayBuffer::create(result.data(), result.size()));

This calls the “tryCreate” function, but does not check for null.

&gt; Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp:676
&gt; +            wrapper.resolve(ArrayBuffer::create(encryptedData.data(), encryptedData.size()));

This calls the “tryCreate” function, but does not check for null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169455</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-01 09:23:01 -0800</bug_when>
    <thetext>I like what you are doing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169466</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-01 09:38:34 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 272560 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272560&amp;action=review
&gt; 
&gt; A step in the right direction, overlaps another patch in process, and has
&gt; some problems handling memory exhaustion.
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/ArrayBuffer.h:156
&gt; &gt; -PassRefPtr&lt;ArrayBuffer&gt; ArrayBuffer::create(const void* source, unsigned byteLength)
&gt; &gt; +RefPtr&lt;ArrayBuffer&gt; ArrayBuffer::create(const void* source, unsigned byteLength)
&gt; 
&gt; This overlaps a patch that someone is currently working on to fix all the
&gt; ArrayBuffer constructors to not use PassRefPtr any more. As I noticed when
&gt; reviewing that patch, there’s something particularly bad about a function
&gt; named create that can actually return nullptr given our usual idiom. I think
&gt; this function should be renamed tryCreate.
&gt; 
&gt; If we want to use a function for normal cases where we need the buffer to be
&gt; allocated and it’s not optional to succeed, then we should make one that
&gt; crashes if it can’t allocate, like most memory allocations in WebKit. And
&gt; that function can be named create, and it should return a Ref&lt;ArrayBuffer&gt;,
&gt; not a RefPtr&lt;ArrayBuffer&gt;.
&gt; 
&gt; &gt; Source/WebCore/Modules/fetch/FetchBody.cpp:108
&gt; &gt; -        RefPtr&lt;ArrayBuffer&gt; buffer = ArrayBuffer::create(data.data(), data.size());
&gt; &gt; -        promise.resolve(buffer);
&gt; &gt; +        promise.resolve(ArrayBuffer::create(data.data(), data.size()));
&gt; 
&gt; This calls the “tryCreate” function, but does not check for null.

The null check is done in the toJS(...ArrayBuffer*) function and will translate to a JS null value. This patch does not bring anything new here actually.

That said, I agree &quot;create&quot; should actually crash when allocation fails.
I will wait for the other patch to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171965</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-07 23:54:20 -0800</bug_when>
    <thetext>&gt; That said, I agree &quot;create&quot; should actually crash when allocation fails.
&gt; I will wait for the other patch to land.

There is some changes in the fetch spec, particularly step 5 of https://fetch.spec.whatwg.org/#body-mixin.
In some cases, crashing is fine, in some others, throwing an exception might be better.
Having &quot;tryCreate&quot; in addition to &quot;create&quot; is therefore potentially useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172038</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-08 08:49:28 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; That said, I agree &quot;create&quot; should actually crash when allocation fails.
&gt; &gt; I will wait for the other patch to land.
&gt; 
&gt; There is some changes in the fetch spec, particularly step 5 of
&gt; https://fetch.spec.whatwg.org/#body-mixin.
&gt; In some cases, crashing is fine, in some others, throwing an exception might
&gt; be better.
&gt; Having &quot;tryCreate&quot; in addition to &quot;create&quot; is therefore potentially useful.

I figured that would be the case. That’s why we have the try and non-try variants of various functions like fastMalloc itself. For allocations that will always succeed we use the non-try version so we get crashes instead of other types of security vulnerabilities when we get it wrong. For allocations that can fail, the try version helps make it clear that we need to check for and handle failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1172040</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-08 08:51:29 -0800</bug_when>
    <thetext>I think the urgent first step is to rename the functions that may fail to tryCreate. Then at our leisure we can do things like: 1) add non-try variants, 2) get rid of the try variant entirely in cases where it’s not needed, 3) fix call sites to use the appropriate version.

I think it’s dangerous to have functions with the “try” semantic for memory allocation that do not express that in their names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176983</commentid>
    <comment_count>8</comment_count>
      <attachid>274655</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-22 08:53:30 -0700</bug_when>
    <thetext>Created attachment 274655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1176997</commentid>
    <comment_count>9</comment_count>
      <attachid>274655</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-03-22 09:29:56 -0700</bug_when>
    <thetext>Comment on attachment 274655
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMPromise.cpp:100
&gt; +    if (!arrayBuffer)
&gt; +        promise.reject&lt;ExceptionCode&gt;(TypeError);
&gt; +    promise.resolve(arrayBuffer);

I think this is missing a return statement. Is it really OK to both reject and resolve?

&gt; Source/WebCore/bindings/js/JSDOMPromise.h:59
&gt; +void fulfillPromiseWithArrayBuffer(DeferredWrapper&amp;, const RefPtr&lt;ArrayBuffer&gt;&amp;);

Type here is peculiar. It should be one of these types:

    ArrayBuffer*
    RefPtr&lt;ArrayBuffer&gt;&amp;&amp;

We almost never want to pass const RefPtr&lt;ArrayBuffer&gt;&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177644</commentid>
    <comment_count>10</comment_count>
      <attachid>274825</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-24 00:37:31 -0700</bug_when>
    <thetext>Created attachment 274825
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177645</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-03-24 00:39:37 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #9)
&gt; Comment on attachment 274655 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=274655&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMPromise.cpp:100
&gt; &gt; +    if (!arrayBuffer)
&gt; &gt; +        promise.reject&lt;ExceptionCode&gt;(TypeError);
&gt; &gt; +    promise.resolve(arrayBuffer);
&gt; 
&gt; I think this is missing a return statement. Is it really OK to both reject
&gt; and resolve?

Yes, I fixed that.
Also, I replaced the rejected value to an OutOfMemory error which is more appropriate.

&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMPromise.h:59
&gt; &gt; +void fulfillPromiseWithArrayBuffer(DeferredWrapper&amp;, const RefPtr&lt;ArrayBuffer&gt;&amp;);
&gt; 
&gt; Type here is peculiar. It should be one of these types:
&gt; 
&gt;     ArrayBuffer*
&gt;     RefPtr&lt;ArrayBuffer&gt;&amp;&amp;
&gt; 
&gt; We almost never want to pass const RefPtr&lt;ArrayBuffer&gt;&amp;.

Switched to ArrayBuffer* then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177655</commentid>
    <comment_count>12</comment_count>
      <attachid>274825</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-24 03:36:47 -0700</bug_when>
    <thetext>Comment on attachment 274825
Patch for landing

Clearing flags on attachment: 274825

Committed r198622: &lt;http://trac.webkit.org/changeset/198622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177656</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-24 03:36:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272560</attachid>
            <date>2016-03-01 05:24:16 -0800</date>
            <delta_ts>2016-03-22 08:53:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154849-20160301142400.patch</filename>
            <type>text/plain</type>
            <size>12008</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YzQ2YTgyZjRlNTM3MjM3NzQzODJjODYyNWIwMDEwOWNhMDY2MTQyLi5mNWUyZTEzYWZiNjRhMDQ4
ZTMyNTI3MTg5YWU1MzhiMzI0NzgwNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxNi0wMy0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIFJlbW92ZSBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8VmVj
dG9yPHVuc2lnbmVkIGNoYXI+PgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU0ODQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBydW50aW1lL0FycmF5QnVmZmVyLmg6CisgICAgICAgIChKU0M6OkFycmF5
QnVmZmVyOjpjcmVhdGUpOiBDaGFuZ2VkIG9uZSBvZiB0aGUgY3JlYXRlKCkgbWV0aG9kcyB0byBy
ZXR1cm4gYSBSZWZQdHIgYW5kIG5vdCBhIFBhc3NSZWZQdHIuCisKIDIwMTYtMDItMjkgIFl1c3Vr
ZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gUHJpdmF0
ZSBzeW1ib2xzIHNob3VsZCBub3QgYmUgdHJhcHBlZCBieSBwcm94eSBoYW5kbGVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggODRhNDlkZWU3MGRmM2UzNTA5OTE1M2JkNWZjM2I2Zjg1ZWM2NGQzMS4uYjg5ZGZmZDI2
NzdhYWQ1MGEyMDE4MzRiYTUxN2I3OTJjZWFkMjYwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDE2LTAzLTAxICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgUmVtb3ZlIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxWZWN0b3I8dW5z
aWduZWQgY2hhcj4+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTQ4NDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5OjphcnJheUJ1ZmZl
cik6IFVwZGF0ZWQgYWNjb3JkaW5nIEFycmF5QnVmZmVyOjpjcmVhdGUgcmV0dXJuaW5nIGEgUmVm
UHRyLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UlRDRGF0YUNoYW5uZWw6OmRpZFJlY2VpdmVSYXdEYXRhKTogRGl0
dG8uCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAgICAgIChXZWJD
b3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmUpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU3Vi
dGxlQ3J5cHRvOjplbmNyeXB0KTogQ3JlYXRpbmcgdGhlIEFycmF5QnVmZmVyIGluIGxpZXUgb2Yg
cGFzc2luZyBhIFZlY3Rvcjx1aW50OF90PiB0byB0aGUgcHJvbWlzZS4KKyAgICAgICAgKFdlYkNv
cmU6OkpTU3VidGxlQ3J5cHRvOjpkZWNyeXB0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpK
U1N1YnRsZUNyeXB0bzo6c2lnbik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVD
cnlwdG86OmRpZ2VzdCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86
OmV4cG9ydEtleSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86Ondy
YXBLZXkpOiBEaXR0by4KKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KTogVXBkYXRlZCBhY2NvcmRpbmcg
QXJyYXlCdWZmZXI6OmNyZWF0ZSByZXR1cm5pbmcgYSBSZWZQdHIuCisgICAgICAgICogZG9tL01l
c3NhZ2VFdmVudC5oOgorCiAyMDE2LTAyLTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxl
dEBjcmYuY2Fub24uZnI+CiAKICAgICAgICAgW0ZldGNoIEFQSV0gU3VwcG9ydCBSZXF1ZXN0IGFu
ZCBSZXNwb25zZSBibG9iKCkgd2hlbiBib2R5IGRhdGEgaXMgYSBibG9iCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAppbmRleCBhN2I2ZjMzZDc4OTQyMWE5YWJj
MTU5OWU5MDdjMDVhMWM4OTc3NWNlLi5iYTY2Y2YwZjI0NDZjNDg3MTc3NjUzZjBlZjc2Y2JkYTNk
YTQwZDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgK
QEAgLTkyLDcgKzkyLDcgQEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1Jl
ZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgaW5saW5lIFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZSh1bnNpZ25lZCBudW1FbGVtZW50cywgdW5zaWduZWQg
ZWxlbWVudEJ5dGVTaXplKTsKICAgICBzdGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZm
ZXI+IGNyZWF0ZShBcnJheUJ1ZmZlciopOwotICAgIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxB
cnJheUJ1ZmZlcj4gY3JlYXRlKGNvbnN0IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbmd0
aCk7CisgICAgc3RhdGljIGlubGluZSBSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZShjb25zdCB2
b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpOwogICAgIHN0YXRpYyBpbmxpbmUgUGFz
c1JlZlB0cjxBcnJheUJ1ZmZlcj4gY3JlYXRlKEFycmF5QnVmZmVyQ29udGVudHMmKTsKICAgICBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGNyZWF0ZUFkb3B0ZWQoY29uc3Qg
dm9pZCogZGF0YSwgdW5zaWduZWQgYnl0ZUxlbmd0aCk7CiAKQEAgLTE1Myw3ICsxNTMsNyBAQCBQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKEFycmF5QnVmZmVyKiBv
dGhlcikKICAgICByZXR1cm4gQXJyYXlCdWZmZXI6OmNyZWF0ZShvdGhlci0+ZGF0YSgpLCBvdGhl
ci0+Ynl0ZUxlbmd0aCgpKTsKIH0KIAotUGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZm
ZXI6OmNyZWF0ZShjb25zdCB2b2lkKiBzb3VyY2UsIHVuc2lnbmVkIGJ5dGVMZW5ndGgpCitSZWZQ
dHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVhdGUoY29uc3Qgdm9pZCogc291cmNlLCB1
bnNpZ25lZCBieXRlTGVuZ3RoKQogewogICAgIEFycmF5QnVmZmVyQ29udGVudHMgY29udGVudHM7
CiAgICAgQXJyYXlCdWZmZXJDb250ZW50czo6dHJ5QWxsb2NhdGUoYnl0ZUxlbmd0aCwgMSwgQXJy
YXlCdWZmZXJDb250ZW50czo6WmVyb0luaXRpYWxpemUsIGNvbnRlbnRzKTsKQEAgLTE2Miw3ICsx
NjIsNyBAQCBQYXNzUmVmUHRyPEFycmF5QnVmZmVyPiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGNvbnN0
IHZvaWQqIHNvdXJjZSwgdW5zaWduZWQgYnl0ZUxlbgogICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0gYWRvcHRSZWYobmV3IEFycmF5QnVmZmVyKGNvbnRlbnRzKSk7CiAgICAgQVNTRVJU
KCFieXRlTGVuZ3RoIHx8IHNvdXJjZSk7CiAgICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBzb3Vy
Y2UsIGJ5dGVMZW5ndGgpOwotICAgIHJldHVybiBidWZmZXIucmVsZWFzZSgpOworICAgIHJldHVy
biBidWZmZXI7CiB9CiAKIFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpjcmVh
dGUoQXJyYXlCdWZmZXJDb250ZW50cyYgY29udGVudHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoQm9keS5jcHAKaW5kZXggZmRiYTVjZGNkZDFlYTdlMTNmYmNhZTYzMGU3M2Zm
YTFlNDhhN2ZiNi4uYzM5ODVmZGQ3MDAzMWUyMTIxY2ZiOWI0M2ZlMWNhMjJhOGMwOWE0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtMTA1LDggKzEw
NSw3IEBAIHZvaWQgRmV0Y2hCb2R5OjphcnJheUJ1ZmZlcihBcnJheUJ1ZmZlclByb21pc2UmJiBw
cm9taXNlKQogICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6VGV4dCkgewogICAgICAgICAvLyBGSVhN
RTogSWRlYWxseSB3ZSB3b3VsZCBsaWtlIHRvIGhhdmUgYW4gQXJyYXlCdWZmZXIgZGlyZWN0bHkg
ZnJvbSBtX3RleHQuCiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhID0gZXh0cmFjdEZyb21UZXh0
KCk7Ci0gICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNy
ZWF0ZShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOwotICAgICAgICBwcm9taXNlLnJlc29sdmUo
YnVmZmVyKTsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKEFycmF5QnVmZmVyOjpjcmVhdGUoZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8g
RklYTUU6IFN1cHBvcnQgb3RoZXIgdHlwZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCmluZGV4IDRiZTBjNTg2NTg1ZmE2
NmI3OWEzZTI4NGMxMjEzNWI2MmQxNTEwMzEuLmE5YTM5MDlkN2U3MTBjMmVmNjg2MTRkNDBmNWQx
OGRjN2Y4ZTU5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRGF0YUNoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRGF0YUNoYW5uZWwuY3BwCkBAIC0yODEsOCArMjgxLDcgQEAgdm9pZCBSVENEYXRh
Q2hhbm5lbDo6ZGlkUmVjZWl2ZVJhd0RhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFM
ZW5ndGgpCiAgICAgfQogCiAgICAgaWYgKG1fYmluYXJ5VHlwZSA9PSBCaW5hcnlUeXBlQXJyYXlC
dWZmZXIpIHsKLSAgICAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBidWZmZXIgPSBBcnJheUJ1ZmZl
cjo6Y3JlYXRlKGRhdGEsIGRhdGFMZW5ndGgpOwotICAgICAgICBzY2hlZHVsZURpc3BhdGNoRXZl
bnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoYnVmZmVyLnJlbGVhc2UoKSkpOworICAgICAgICBzY2hl
ZHVsZURpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoQXJyYXlCdWZmZXI6OmNyZWF0
ZShkYXRhLCBkYXRhTGVuZ3RoKSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2Uu
aAppbmRleCA3MzllZDhhOWRjMGU3MmQ4OWIzYWU3M2ViYWZkNjI4NTE1NjUzMjI2Li45NWNkMzJk
NTIzZGVkN2ZkYWQ4YzBkZTZmNjkxNTUyOTQwZGVmY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtMTY1LDE2ICsxNjUsNiBAQCBpbmxpbmUgdm9pZCBE
ZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8SlNDOjpKU1ZhbHVlPihjb25zdCBKU0M6OkpTVmFsdWUm
IHZhbHVlKQogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKICAgICByZXNvbHZl
KCpleGVjLCB2YWx1ZSk7CiB9Ci10ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBw
ZXI6OnJlc29sdmU8VmVjdG9yPHVuc2lnbmVkIGNoYXI+Pihjb25zdCBWZWN0b3I8dW5zaWduZWQg
Y2hhcj4mIHJlc3VsdCkKLXsKLSAgICBBU1NFUlQobV9kZWZlcnJlZCk7Ci0gICAgQVNTRVJUKG1f
Z2xvYmFsT2JqZWN0KTsKLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0
LT5nbG9iYWxFeGVjKCk7Ci0gICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAg
IFJlZlB0cjxBcnJheUJ1ZmZlcj4gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShyZXN1bHQu
ZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKLSAgICByZXNvbHZlKCpleGVjLCB0b0pTKGV4ZWMsIG1f
Z2xvYmFsT2JqZWN0LmdldCgpLCBidWZmZXIuZ2V0KCkpKTsKLX0KIAogdGVtcGxhdGU8PgogaW5s
aW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlKGNvbnN0IHN0ZDo6bnVsbHB0cl90JikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9t
LmNwcAppbmRleCBmM2I2ZjY3NTQ1NGQ2NmQxNjRlNWVhZGFjYmZlMzVkMDcxOWEyMTk0Li45NzEw
MGE2Y2YzMWUxNzVmYzliODY0OWU0NTc3YmQ1N2RmNzA5OGI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCkBAIC0xNjcsNyAr
MTY3LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZW5jcnlwdChFeGVjU3RhdGUmIHN0YXRl
KQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU1Byb21pc2VEZWZl
cnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIERlZmVycmVkV3JhcHBl
ciB3cmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCk7CiAgICAg
YXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBy
ZXN1bHQpIG11dGFibGUgewotICAgICAgICB3cmFwcGVyLnJlc29sdmUocmVzdWx0KTsKKyAgICAg
ICAgd3JhcHBlci5yZXNvbHZlKEFycmF5QnVmZmVyOjpjcmVhdGUocmVzdWx0LmRhdGEoKSwgcmVz
dWx0LnNpemUoKSkpOwogICAgIH07CiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBl
cl0oKSBtdXRhYmxlIHsKICAgICAgICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7CkBAIC0yMTks
NyArMjE5LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZGVjcnlwdChFeGVjU3RhdGUmIHN0
YXRlKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU1Byb21pc2VE
ZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIERlZmVycmVkV3Jh
cHBlciB3cmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCk7CiAg
ICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB3cmFwcGVyLnJlc29sdmUocmVzdWx0KTsKKyAg
ICAgICAgd3JhcHBlci5yZXNvbHZlKEFycmF5QnVmZmVyOjpjcmVhdGUocmVzdWx0LmRhdGEoKSwg
cmVzdWx0LnNpemUoKSkpOwogICAgIH07CiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3Jh
cHBlcl0oKSBtdXRhYmxlIHsKICAgICAgICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7CkBAIC0y
NzEsNyArMjcxLDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6c2lnbihFeGVjU3RhdGUmIHN0
YXRlKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU1Byb21pc2VE
ZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIERlZmVycmVkV3Jh
cHBlciB3cmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCk7CiAg
ICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB3cmFwcGVyLnJlc29sdmUocmVzdWx0KTsKKyAg
ICAgICAgd3JhcHBlci5yZXNvbHZlKEFycmF5QnVmZmVyOjpjcmVhdGUocmVzdWx0LmRhdGEoKSwg
cmVzdWx0LnNpemUoKSkpOwogICAgIH07CiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3Jh
cHBlcl0oKSBtdXRhYmxlIHsKICAgICAgICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7CkBAIC0z
NzEsNyArMzcxLDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZGlnZXN0KEV4ZWNTdGF0ZSYg
c3RhdGUpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTUHJvbWlz
ZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CiAgICAgRGVmZXJyZWRX
cmFwcGVyIHdyYXBwZXIoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKTsK
ICAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXShjb25zdCBWZWN0b3I8dWludDhf
dD4mIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQpOwor
ICAgICAgICB3cmFwcGVyLnJlc29sdmUoQXJyYXlCdWZmZXI6OmNyZWF0ZShyZXN1bHQuZGF0YSgp
LCByZXN1bHQuc2l6ZSgpKSk7CiAgICAgfTsKICAgICBhdXRvIGZhaWx1cmVDYWxsYmFjayA9IFt3
cmFwcGVyXSgpIG11dGFibGUgewogICAgICAgICB3cmFwcGVyLnJlamVjdChudWxscHRyKTsKQEAg
LTYxMyw3ICs2MTMsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpleHBvcnRLZXkoRXhlY1N0
YXRlJiBzdGF0ZSkKICAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNQ
cm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpKTsKICAgICBEZWZl
cnJlZFdyYXBwZXIgd3JhcHBlcigmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJy
ZWQpOwogICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgd3JhcHBlci5yZXNvbHZlKHJlc3Vs
dCk7CisgICAgICAgIHdyYXBwZXIucmVzb2x2ZShBcnJheUJ1ZmZlcjo6Y3JlYXRlKHJlc3VsdC5k
YXRhKCksIHJlc3VsdC5zaXplKCkpKTsKICAgICB9OwogICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNr
ID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIp
OwpAQCAtNjczLDcgKzY3Myw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OndyYXBLZXkoRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICAgICAgYXV0byBlbmNyeXB0U3VjY2Vzc0NhbGxiYWNrID0gW3dy
YXBwZXIsIGFsZ29yaXRobVB0ciwgcGFyYW1ldGVyc1B0cl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBlbmNyeXB0ZWREYXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRlbGV0ZSBhbGdvcml0aG1Q
dHI7CiAgICAgICAgICAgICBkZWxldGUgcGFyYW1ldGVyc1B0cjsKLSAgICAgICAgICAgIHdyYXBw
ZXIucmVzb2x2ZShlbmNyeXB0ZWREYXRhKTsKKyAgICAgICAgICAgIHdyYXBwZXIucmVzb2x2ZShB
cnJheUJ1ZmZlcjo6Y3JlYXRlKGVuY3J5cHRlZERhdGEuZGF0YSgpLCBlbmNyeXB0ZWREYXRhLnNp
emUoKSkpOwogICAgICAgICB9OwogICAgICAgICBhdXRvIGVuY3J5cHRGYWlsdXJlQ2FsbGJhY2sg
PSBbd3JhcHBlciwgYWxnb3JpdGhtUHRyLCBwYXJhbWV0ZXJzUHRyXSgpIG11dGFibGUgewogICAg
ICAgICAgICAgZGVsZXRlIGFsZ29yaXRobVB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5j
cHAKaW5kZXggOWQ4MGJiNjAxNTU0OWFmNzFmZjkzMTNmNDNmOWMwZTY3ZTk0YWNmOC4uZGU0MDg0
ZmRiYzNmNzE5NmNiNzNmYjViYjZlZDE5YWVlNDNjNDMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VFdmVudC5jcHAKQEAgLTEwMiwxMCArMTAyLDEwIEBAIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KFBhc3NSZWZQdHI8QmxvYj4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCiB7CiB9CiAK
LU1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luKQorTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoUmVmUHRy
PEFycmF5QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQogICAgIDogRXZlbnQo
ZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgZmFsc2UsIGZhbHNlKQogICAgICwgbV9kYXRhVHlw
ZShEYXRhVHlwZUFycmF5QnVmZmVyKQotICAgICwgbV9kYXRhQXNBcnJheUJ1ZmZlcihkYXRhKQor
ICAgICwgbV9kYXRhQXNBcnJheUJ1ZmZlcihXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9vcmlnaW4o
b3JpZ2luKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVu
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IGRjZThlMGJmOGVk
OTcwODVmZjUyNjRkNjM2NDBlMzg5NGUzZTFkZTcuLjFjNGEyNzkxZjliOGZmYjgxNTg2M2U3ZjI3
NWI2MGVlNjk4OTFjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTcxLDkgKzcx
LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2Fn
ZUV2ZW50KGRhdGEsIG9yaWdpbikpOwogICAgIH0KLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVu
dD4gY3JlYXRlKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luID0gU3RyaW5nKCkpCisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShSZWZQ
dHI8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSBTdHJpbmcoKSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChkYXRhLCBv
cmlnaW4pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KFdURk1v
dmUoZGF0YSksIG9yaWdpbikpOwogICAgIH0KICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4g
Y3JlYXRlRm9yQmluZGluZ3MoKQogICAgIHsKQEAgLTEyNyw3ICsxMjcsNyBAQCBwcml2YXRlOgog
CiAgICAgZXhwbGljaXQgTWVzc2FnZUV2ZW50KGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4pOwogICAgIGV4cGxpY2l0IE1lc3NhZ2VFdmVudChQYXNzUmVmUHRyPEJsb2I+
IGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKLSAgICBleHBsaWNpdCBNZXNzYWdlRXZlbnQo
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOworICAg
IGV4cGxpY2l0IE1lc3NhZ2VFdmVudChSZWZQdHI8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4pOwogCiAgICAgRGF0YVR5cGUgbV9kYXRhVHlwZTsKICAgICBEZXByZWNh
dGVkOjpTY3JpcHRWYWx1ZSBtX2RhdGFBc1NjcmlwdFZhbHVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274655</attachid>
            <date>2016-03-22 08:53:30 -0700</date>
            <delta_ts>2016-03-24 00:37:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154849-20160322165330.patch</filename>
            <type>text/plain</type>
            <size>8969</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2Y3MTFhMzE3NDBlZjgw
MzBkODIwZWNjNDBkMDJjNzE1OTNkZDgwOS4uMzJjZjIyYjhmNzBkNzQ4YmNlYmZlNTY5M2UyZjZk
Njk3YTlhOGY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTAzLTIyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxWZWN0b3I8dW5zaWduZWQgY2hhcj4+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4NDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgZnVsZmlsbFBy
b21pc2VXaXRoQXJyYXlCdWZmZXIgdG8gcmVzb2x2ZSBhIHByb21pc2Ugd2l0aCBhbiBBcnJheUJ1
ZmZlci4KKyAgICAgICAgSWYgdGhlIEFycmF5QnVmZmVyIGlzIG51bGwsIHRoZSBwcm9taXNlIGlz
IHJlamVjdGVkLgorCisgICAgICAgIE5vdCBjb3ZlcmVkIGJ5IHRlc3RzIHNpbmNlIHdlIHdvdWxk
IG5lZWQgdG8gbWFrZSB0cnlDcmVhdGUgcmV0dXJuIG51bGwgb24gZmFpbGluZyBhbGxvY2F0aW9u
LgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmV0Y2hCb2R5Ojpwcm9jZXNzSWZFbXB0eU9yRGlzdHVyYmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkZldGNoQm9keTo6bG9hZGVkQXNBcnJheUJ1ZmZlcik6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZ1bGZpbGxQcm9taXNl
V2l0aEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxKU0M6OkpTVmFsdWU+
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZSk6
IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OmVuY3J5cHQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OmRlY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNT
dWJ0bGVDcnlwdG86OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OmRp
Z2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRvOjp3cmFwS2V5KToKKwogMjAxNi0wMy0yMSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIFNo
YXJlZEJ1ZmZlciB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9k
eS5jcHAKaW5kZXggNmNlNTZkZTY2ZTgyODZlOGZkMmQwZTgyZWM4ZGRkODZkOWYyZmEyNS4uZjQ0
NzIwMjI1NGQ4OWZhOTAzNmU1YTUwNTNkNjI2OTFjYWUyNDE2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcApAQCAtOTcsNyArOTcsNyBAQCBib29sIEZldGNo
Qm9keTo6cHJvY2Vzc0lmRW1wdHlPckRpc3R1cmJlZChDb25zdW1lcjo6VHlwZSB0eXBlLCBEZWZl
cnJlZFdyYXBwZXImCiAgICAgICAgICAgICBwcm9taXNlLnJlamVjdDxFeGNlcHRpb25Db2RlPihT
WU5UQVhfRVJSKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjYXNlIENvbnN1
bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcjoKLSAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShBcnJh
eUJ1ZmZlcjo6dHJ5Q3JlYXRlKG51bGxwdHIsIDApKTsKKyAgICAgICAgICAgIGZ1bGZpbGxQcm9t
aXNlV2l0aEFycmF5QnVmZmVyKHByb21pc2UsIG51bGxwdHIsIDApOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZVRleHQoQ29u
c3VtZXI6OlR5cGUgdHlwZSwgRGVmZXJyZWRXcmFwcGVyJiYgcHJvbWlzZSkKIAogICAgIGlmICh0
eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcikgewogICAgICAgICBWZWN0b3I8Y2hh
cj4gZGF0YSA9IGV4dHJhY3RGcm9tVGV4dCgpOwotICAgICAgICBwcm9taXNlLnJlc29sdmU8UmVm
UHRyPEFycmF5QnVmZmVyPj4oQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpKTsKKyAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIocHJvbWlz
ZSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBTdHJpbmcgY29udGVudFR5cGUgPSBCbG9iOjpub3JtYWxpemVkQ29udGVudFR5cGUoZXh0cmFj
dE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX21pbWVUeXBlKSk7CkBAIC0yMjYsNyArMjI2LDcgQEAg
dm9pZCBGZXRjaEJvZHk6OmxvYWRlZEFzQXJyYXlCdWZmZXIoUmVmUHRyPEFycmF5QnVmZmVyPiYm
IGJ1ZmZlcikKICAgICBBU1NFUlQobV9jb25zdW1lcik7CiAgICAgQVNTRVJUKG1fY29uc3VtZXIt
PnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkJsb2IgfHwgbV9jb25zdW1lci0+dHlwZSA9PSBDb25z
dW1lcjo6VHlwZTo6QXJyYXlCdWZmZXIpOwogICAgIGlmIChtX2NvbnN1bWVyLT50eXBlID09IENv
bnN1bWVyOjpUeXBlOjpBcnJheUJ1ZmZlcikKLSAgICAgICAgbV9jb25zdW1lci0+cHJvbWlzZS5y
ZXNvbHZlKGJ1ZmZlcik7CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKG1f
Y29uc3VtZXItPnByb21pc2UsIGJ1ZmZlcik7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVCht
X2Jsb2IpOwogICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCmluZGV4IGJmYzVkN2YzNzliNGViYmY2YzczNmY2MDll
MGZiMDNlNDJmZDMwZGYuLmMyYzA2ZWMzZjdiNDIxMmZjNjc5ZTUzMGNkZDU2MDlhZmU3OGE1ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcApAQCAtOTMs
NCArOTMsMTYgQEAgdm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhKU09OKERlZmVycmVkV3JhcHBlciYg
cHJvbWlzZSwgY29uc3QgU3RyaW5nJiBkYXRhKQogICAgICAgICBwcm9taXNlLnJlc29sdmUodmFs
dWUpOwogfQogCit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKERlZmVycmVkV3Jh
cHBlciYgcHJvbWlzZSwgY29uc3QgUmVmUHRyPEFycmF5QnVmZmVyPiYgYXJyYXlCdWZmZXIpCit7
CisgICAgaWYgKCFhcnJheUJ1ZmZlcikKKyAgICAgICAgcHJvbWlzZS5yZWplY3Q8RXhjZXB0aW9u
Q29kZT4oVHlwZUVycm9yKTsKKyAgICBwcm9taXNlLnJlc29sdmUoYXJyYXlCdWZmZXIpOworfQor
Cit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBlciYgcHJv
bWlzZSwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IGxlbmd0aCkKK3sKKyAgICBmdWxmaWxsUHJv
bWlzZVdpdGhBcnJheUJ1ZmZlcihwcm9taXNlLCBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEs
IGxlbmd0aCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZS5oCmluZGV4IDU3Y2IzYmQ3NjgyOTY3MzVlOGMzMjVjYzdhOTliYzEzMjY3ZTRjM2IuLjA4Nzdl
M2NiODY4YWM5NTJjM2M0N2ZlYzdhZmUyNzRmMjQ1ZTI2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC01Niw2ICs1Niw4IEBAIHByaXZhdGU6CiB9Owog
CiB2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oRGVmZXJyZWRXcmFwcGVyJiwgY29uc3QgU3Ry
aW5nJik7Cit2b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKERlZmVycmVkV3JhcHBl
ciYsIGNvbnN0IFJlZlB0cjxBcnJheUJ1ZmZlcj4mKTsKK3ZvaWQgZnVsZmlsbFByb21pc2VXaXRo
QXJyYXlCdWZmZXIoRGVmZXJyZWRXcmFwcGVyJiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiB2b2lk
IHJlamVjdFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUds
b2JhbE9iamVjdCYsIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQmKTsKIAogaW5saW5lIEpTQzo6SlNW
YWx1ZSBjYWxsUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBwcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTUHJvbWlz
ZURlZmVycmVkKikpCkBAIC0xNjYsMTYgKzE2OCw2IEBAIGlubGluZSB2b2lkIERlZmVycmVkV3Jh
cHBlcjo6cmVzb2x2ZTxKU0M6OkpTVmFsdWU+KGNvbnN0IEpTQzo6SlNWYWx1ZSYgdmFsdWUpCiAg
ICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwogICAgIHJlc29sdmUoKmV4ZWMsIHZh
bHVlKTsKIH0KLXRlbXBsYXRlPD4KLWlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2
ZTxWZWN0b3I8dW5zaWduZWQgY2hhcj4+KGNvbnN0IFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgcmVz
dWx0KQotewotICAgIEFTU0VSVChtX2RlZmVycmVkKTsKLSAgICBBU1NFUlQobV9nbG9iYWxPYmpl
Y3QpOwotICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKTsKLSAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7Ci0gICAgYXV0byBidWZm
ZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkp
OwotICAgIHJlc29sdmUoKmV4ZWMsIHRvSlMoZXhlYywgbV9nbG9iYWxPYmplY3QuZ2V0KCksIGJ1
ZmZlci5nZXQoKSkpOwotfQogCiB0ZW1wbGF0ZTw+CiBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBw
ZXI6OnJlc29sdmUoY29uc3Qgc3RkOjpudWxscHRyX3QmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCmluZGV4IGYzYjZmNjc1NDU0
ZDY2ZDE2NGU1ZWFkYWNiZmUzNWQwNzE5YTIxOTQuLjRmYTY3ODI0ZTc1ZWRiNWNiM2U2YmE4ODAx
YTZhNzRhY2NmODhkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
U3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1N1YnRsZUNyeXB0b0N1c3RvbS5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBKU1ZhbHVlIEpTU3Vi
dGxlQ3J5cHRvOjplbmNyeXB0KEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgSlNQcm9taXNlRGVmZXJy
ZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCBn
bG9iYWxPYmplY3QoKSk7CiAgICAgRGVmZXJyZWRXcmFwcGVyIHdyYXBwZXIoJnN0YXRlLCBnbG9i
YWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKTsKICAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9
IFt3cmFwcGVyXShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAg
ICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQpOworICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhB
cnJheUJ1ZmZlcih3cmFwcGVyLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKICAgICB9
OwogICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CiAgICAg
ICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIEpTVmFsdWUg
SlNTdWJ0bGVDcnlwdG86OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBKU1Byb21pc2VE
ZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3Rh
dGUsIGdsb2JhbE9iamVjdCgpKTsKICAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcigmc3RhdGUs
IGdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpOwogICAgIGF1dG8gc3VjY2Vzc0NhbGxi
YWNrID0gW3dyYXBwZXJdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KSBtdXRhYmxlIHsK
LSAgICAgICAgd3JhcHBlci5yZXNvbHZlKHJlc3VsdCk7CisgICAgICAgIGZ1bGZpbGxQcm9taXNl
V2l0aEFycmF5QnVmZmVyKHdyYXBwZXIsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOwog
ICAgIH07CiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsK
ICAgICAgICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7CkBAIC0yNzEsNyArMjcxLDcgQEAgSlNW
YWx1ZSBKU1N1YnRsZUNyeXB0bzo6c2lnbihFeGVjU3RhdGUmIHN0YXRlKQogICAgIEpTUHJvbWlz
ZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZz
dGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwogICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKCZzdGF0
ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21pc2VEZWZlcnJlZCk7CiAgICAgYXV0byBzdWNjZXNzQ2Fs
bGJhY2sgPSBbd3JhcHBlcl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpIG11dGFibGUg
ewotICAgICAgICB3cmFwcGVyLnJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIod3JhcHBlciwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7
CiAgICAgfTsKICAgICBhdXRvIGZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUg
ewogICAgICAgICB3cmFwcGVyLnJlamVjdChudWxscHRyKTsKQEAgLTM3MSw3ICszNzEsNyBAQCBK
U1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpkaWdlc3QoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBKU1By
b21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0
ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpKTsKICAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcigm
c3RhdGUsIGdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQpOwogICAgIGF1dG8gc3VjY2Vz
c0NhbGxiYWNrID0gW3dyYXBwZXJdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KSBtdXRh
YmxlIHsKLSAgICAgICAgd3JhcHBlci5yZXNvbHZlKHJlc3VsdCk7CisgICAgICAgIGZ1bGZpbGxQ
cm9taXNlV2l0aEFycmF5QnVmZmVyKHdyYXBwZXIsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXpl
KCkpOwogICAgIH07CiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRh
YmxlIHsKICAgICAgICAgd3JhcHBlci5yZWplY3QobnVsbHB0cik7CkBAIC02MTMsNyArNjEzLDcg
QEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCiAg
ICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZlcnJlZCA9IEpTUHJvbWlzZURlZmVycmVk
OjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7CiAgICAgRGVmZXJyZWRXcmFwcGVyIHdy
YXBwZXIoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgcHJvbWlzZURlZmVycmVkKTsKICAgICBhdXRv
IHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXShjb25zdCBWZWN0b3I8dWludDhfdD4mIHJlc3Vs
dCkgbXV0YWJsZSB7Ci0gICAgICAgIHdyYXBwZXIucmVzb2x2ZShyZXN1bHQpOworICAgICAgICBm
dWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcih3cmFwcGVyLCByZXN1bHQuZGF0YSgpLCByZXN1
bHQuc2l6ZSgpKTsKICAgICB9OwogICAgIGF1dG8gZmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXJd
KCkgbXV0YWJsZSB7CiAgICAgICAgIHdyYXBwZXIucmVqZWN0KG51bGxwdHIpOwpAQCAtNjczLDcg
KzY3Myw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0
ZSkKICAgICAgICAgYXV0byBlbmNyeXB0U3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXIsIGFsZ29y
aXRobVB0ciwgcGFyYW1ldGVyc1B0cl0oY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBlbmNyeXB0ZWRE
YXRhKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRlbGV0ZSBhbGdvcml0aG1QdHI7CiAgICAgICAg
ICAgICBkZWxldGUgcGFyYW1ldGVyc1B0cjsKLSAgICAgICAgICAgIHdyYXBwZXIucmVzb2x2ZShl
bmNyeXB0ZWREYXRhKTsKKyAgICAgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVy
KHdyYXBwZXIsIGVuY3J5cHRlZERhdGEuZGF0YSgpLCBlbmNyeXB0ZWREYXRhLnNpemUoKSk7CiAg
ICAgICAgIH07CiAgICAgICAgIGF1dG8gZW5jcnlwdEZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVy
LCBhbGdvcml0aG1QdHIsIHBhcmFtZXRlcnNQdHJdKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBk
ZWxldGUgYWxnb3JpdGhtUHRyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274825</attachid>
            <date>2016-03-24 00:37:31 -0700</date>
            <delta_ts>2016-03-24 03:36:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-154849-20160324083731.patch</filename>
            <type>text/plain</type>
            <size>9061</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk4NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlkYTAwNDU2Yzc5OGM5
MjA4ZGFiNTE0ZDgxZGJjNzM0OTlmNjAxYi4uMDc3M2I0NzIzZmM4MjkzYzRkZDI2ZGM4MzgwZjky
MjQ0NDYwMWU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE2LTAzLTIzICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgUmVtb3Zl
IERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxWZWN0b3I8dW5zaWduZWQgY2hhcj4+CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ4NDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGRpbmcgZnVsZmlsbFByb21p
c2VXaXRoQXJyYXlCdWZmZXIgdG8gcmVzb2x2ZSBhIHByb21pc2Ugd2l0aCBhbiBBcnJheUJ1ZmZl
ci4KKyAgICAgICAgSWYgdGhlIEFycmF5QnVmZmVyIGlzIG51bGwsIHRoZSBwcm9taXNlIGlzIHJl
amVjdGVkIHdpdGggYW4gT3V0T2ZNZW1vcnkgZXhjZXB0aW9uLgorCisgICAgICAgIE5vdCBjb3Zl
cmVkIGJ5IHRlc3RzIHNpbmNlIHdlIHdvdWxkIG5lZWQgdG8gbWFrZSB0cnlDcmVhdGUgcmV0dXJu
IG51bGwgb24gZmFpbGluZyBhbGxvY2F0aW9uLgorCisgICAgICAgICogTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpwcm9jZXNzSWZFbXB0
eU9yRGlzdHVyYmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6bG9hZGVkQXNBcnJh
eUJ1ZmZlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3Jh
cHBlcjo6cmVzb2x2ZTxKU0M6OkpTVmFsdWU+KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZSk6IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVD
cnlwdG86OmVuY3J5cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OmRlY3J5
cHQpOgorICAgICAgICAoV2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OnNpZ24pOgorICAgICAgICAo
V2ViQ29yZTo6SlNTdWJ0bGVDcnlwdG86OmRpZ2VzdCk6CisgICAgICAgIChXZWJDb3JlOjpKU1N1
YnRsZUNyeXB0bzo6ZXhwb3J0S2V5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTU3VidGxlQ3J5cHRv
Ojp3cmFwS2V5KToKKwogMjAxNi0wMy0yMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgQ1NQOiBTaW1wbGlmeSBsb2dpYyBmb3IgY2hlY2tpbmcgcG9saWNpZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCA2Y2U1NmRl
NjZlODI4NmU4ZmQyZDBlODJlYzhkZGQ4NmQ5ZjJmYTI1Li4xYzA1OTdlMzE5MDIyMWUxYzhjN2I0
NzVhNDkxZDEwYWRhZjA5NzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Zl
dGNoL0ZldGNoQm9keS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRj
aEJvZHkuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgRmV0Y2hCb2R5Ojpwcm9jZXNzSWZFbXB0
eU9yRGlzdHVyYmVkKENvbnN1bWVyOjpUeXBlIHR5cGUsIERlZmVycmVkV3JhcHBlciYKICAgICAg
ICAgICAgIHByb21pc2UucmVqZWN0PEV4Y2VwdGlvbkNvZGU+KFNZTlRBWF9FUlIpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGNhc2UgQ29uc3VtZXI6OlR5cGU6OkFycmF5QnVm
ZmVyOgotICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKEFycmF5QnVmZmVyOjp0cnlDcmVhdGUo
bnVsbHB0ciwgMCkpOworICAgICAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIo
cHJvbWlzZSwgbnVsbHB0ciwgMCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTc0LDcgKzE3
NCw3IEBAIHZvaWQgRmV0Y2hCb2R5Ojpjb25zdW1lVGV4dChDb25zdW1lcjo6VHlwZSB0eXBlLCBE
ZWZlcnJlZFdyYXBwZXImJiBwcm9taXNlKQogCiAgICAgaWYgKHR5cGUgPT0gQ29uc3VtZXI6OlR5
cGU6OkFycmF5QnVmZmVyKSB7CiAgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhID0gZXh0cmFjdEZy
b21UZXh0KCk7Ci0gICAgICAgIHByb21pc2UucmVzb2x2ZTxSZWZQdHI8QXJyYXlCdWZmZXI+PihB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSkpOworICAgICAg
ICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihwcm9taXNlLCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFN0cmluZyBjb250ZW50VHlw
ZSA9IEJsb2I6Om5vcm1hbGl6ZWRDb250ZW50VHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFU
eXBlKG1fbWltZVR5cGUpKTsKQEAgLTIyNiw3ICsyMjYsNyBAQCB2b2lkIEZldGNoQm9keTo6bG9h
ZGVkQXNBcnJheUJ1ZmZlcihSZWZQdHI8QXJyYXlCdWZmZXI+JiYgYnVmZmVyKQogICAgIEFTU0VS
VChtX2NvbnN1bWVyKTsKICAgICBBU1NFUlQobV9jb25zdW1lci0+dHlwZSA9PSBDb25zdW1lcjo6
VHlwZTo6QmxvYiB8fCBtX2NvbnN1bWVyLT50eXBlID09IENvbnN1bWVyOjpUeXBlOjpBcnJheUJ1
ZmZlcik7CiAgICAgaWYgKG1fY29uc3VtZXItPnR5cGUgPT0gQ29uc3VtZXI6OlR5cGU6OkFycmF5
QnVmZmVyKQotICAgICAgICBtX2NvbnN1bWVyLT5wcm9taXNlLnJlc29sdmUoYnVmZmVyKTsKKyAg
ICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIobV9jb25zdW1lci0+cHJvbWlzZSwg
YnVmZmVyLmdldCgpKTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKG1fYmxvYik7CiAgICAg
ICAgIFZlY3RvcjxjaGFyPiBkYXRhOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZS5jcHAKaW5kZXggYmZjNWQ3ZjM3OWI0ZWJiZjZjNzM2ZjYwOWUwZmIwM2U0MmZkMzBk
Zi4uNzdmZjY5OWYwNDExMjY3YmEwM2YyZGEwZWNhNjk1YWIwYTY3YzlmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuY3BwCkBAIC05Myw0ICs5MywxOCBAQCB2
b2lkIGZ1bGZpbGxQcm9taXNlV2l0aEpTT04oRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNlLCBjb25z
dCBTdHJpbmcmIGRhdGEpCiAgICAgICAgIHByb21pc2UucmVzb2x2ZSh2YWx1ZSk7CiB9CiAKK3Zv
aWQgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIoRGVmZXJyZWRXcmFwcGVyJiBwcm9taXNl
LCBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIpCit7CisgICAgaWYgKCFhcnJheUJ1ZmZlcikgewor
ICAgICAgICBwcm9taXNlLnJlamVjdDxKU1ZhbHVlPihjcmVhdGVPdXRPZk1lbW9yeUVycm9yKHBy
b21pc2UuZ2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhlYygpKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgcHJvbWlzZS5yZXNvbHZlKGFycmF5QnVmZmVyKTsKK30KKwordm9pZCBmdWxmaWxs
UHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBwZXImIHByb21pc2UsIGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBsZW5ndGgpCit7CisgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlC
dWZmZXIocHJvbWlzZSwgQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShkYXRhLCBsZW5ndGgpLmdldCgp
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAppbmRl
eCA1N2NiM2JkNzY4Mjk2NzM1ZThjMzI1Y2M3YTk5YmMxMzI2N2U0YzNiLi42YTcwNjRlNWVjMDI5
MDk4ZjFjZDhiMmE2YzRkZWVkM2RkODgyN2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaApAQCAtNTYsNiArNTYsOCBAQCBwcml2YXRlOgogfTsKIAogdm9pZCBm
dWxmaWxsUHJvbWlzZVdpdGhKU09OKERlZmVycmVkV3JhcHBlciYsIGNvbnN0IFN0cmluZyYpOwor
dm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihEZWZlcnJlZFdyYXBwZXImLCBBcnJh
eUJ1ZmZlciopOwordm9pZCBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcihEZWZlcnJlZFdy
YXBwZXImLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKIHZvaWQgcmVqZWN0UHJvbWlzZVdpdGhFeGNl
cHRpb25JZkFueShKU0M6OkV4ZWNTdGF0ZSYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1By
b21pc2VEZWZlcnJlZCYpOwogCiBpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNlRnVuY3Rp
b24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIHByb21pc2VGdW5j
dGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNQcm9taXNlRGVmZXJyZWQqKSkKQEAgLTE2Niwx
NiArMTY4LDYgQEAgaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPEpTQzo6SlNW
YWx1ZT4oY29uc3QgSlNDOjpKU1ZhbHVlJiB2YWx1ZSkKICAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoZXhlYyk7CiAgICAgcmVzb2x2ZSgqZXhlYywgdmFsdWUpOwogfQotdGVtcGxhdGU8Pgot
aW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPFZlY3Rvcjx1bnNpZ25lZCBjaGFy
Pj4oY29uc3QgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiByZXN1bHQpCi17Ci0gICAgQVNTRVJUKG1f
ZGVmZXJyZWQpOwotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7Ci0gICAgSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcihleGVjKTsKLSAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7Ci0gICAgcmVzb2x2ZSgqZXhlYywg
dG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdC5nZXQoKSwgYnVmZmVyLmdldCgpKSk7Ci19CiAKIHRl
bXBsYXRlPD4KIGlubGluZSB2b2lkIERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZShjb25zdCBzdGQ6
Om51bGxwdHJfdCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1
YnRsZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRs
ZUNyeXB0b0N1c3RvbS5jcHAKaW5kZXggZjNiNmY2NzU0NTRkNjZkMTY0ZTVlYWRhY2JmZTM1ZDA3
MTlhMjE5NC4uNGZhNjc4MjRlNzVlZGI1Y2IzZTZiYTg4MDFhNmE3NGFjY2Y4OGRhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNw
cApAQCAtMTY3LDcgKzE2Nyw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhl
Y1N0YXRlJiBzdGF0ZSkKICAgICBKU1Byb21pc2VEZWZlcnJlZCogcHJvbWlzZURlZmVycmVkID0g
SlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsIGdsb2JhbE9iamVjdCgpKTsKICAgICBE
ZWZlcnJlZFdyYXBwZXIgd3JhcHBlcigmc3RhdGUsIGdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVm
ZXJyZWQpOwogICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dyYXBwZXJdKGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAgd3JhcHBlci5yZXNvbHZlKHJl
c3VsdCk7CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5QnVmZmVyKHdyYXBwZXIsIHJl
c3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOwogICAgIH07CiAgICAgYXV0byBmYWlsdXJlQ2Fs
bGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKICAgICAgICAgd3JhcHBlci5yZWplY3QobnVs
bHB0cik7CkBAIC0yMTksNyArMjE5LDcgQEAgSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZGVjcnlw
dChFeGVjU3RhdGUmIHN0YXRlKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJy
ZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpOwog
ICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCksIHByb21p
c2VEZWZlcnJlZCk7CiAgICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB3cmFwcGVyLnJlc29s
dmUocmVzdWx0KTsKKyAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIod3JhcHBl
ciwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7CiAgICAgfTsKICAgICBhdXRvIGZhaWx1
cmVDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgewogICAgICAgICB3cmFwcGVyLnJlamVj
dChudWxscHRyKTsKQEAgLTI3MSw3ICsyNzEsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpz
aWduKEV4ZWNTdGF0ZSYgc3RhdGUpCiAgICAgSlNQcm9taXNlRGVmZXJyZWQqIHByb21pc2VEZWZl
cnJlZCA9IEpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSk7
CiAgICAgRGVmZXJyZWRXcmFwcGVyIHdyYXBwZXIoJnN0YXRlLCBnbG9iYWxPYmplY3QoKSwgcHJv
bWlzZURlZmVycmVkKTsKICAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXShjb25z
dCBWZWN0b3I8dWludDhfdD4mIHJlc3VsdCkgbXV0YWJsZSB7Ci0gICAgICAgIHdyYXBwZXIucmVz
b2x2ZShyZXN1bHQpOworICAgICAgICBmdWxmaWxsUHJvbWlzZVdpdGhBcnJheUJ1ZmZlcih3cmFw
cGVyLCByZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsKICAgICB9OwogICAgIGF1dG8gZmFp
bHVyZUNhbGxiYWNrID0gW3dyYXBwZXJdKCkgbXV0YWJsZSB7CiAgICAgICAgIHdyYXBwZXIucmVq
ZWN0KG51bGxwdHIpOwpAQCAtMzcxLDcgKzM3MSw3IEBAIEpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86
OmRpZ2VzdChFeGVjU3RhdGUmIHN0YXRlKQogICAgIEpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNl
RGVmZXJyZWQgPSBKU1Byb21pc2VEZWZlcnJlZDo6Y3JlYXRlKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0
KCkpOwogICAgIERlZmVycmVkV3JhcHBlciB3cmFwcGVyKCZzdGF0ZSwgZ2xvYmFsT2JqZWN0KCks
IHByb21pc2VEZWZlcnJlZCk7CiAgICAgYXV0byBzdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0o
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpIG11dGFibGUgewotICAgICAgICB3cmFwcGVy
LnJlc29sdmUocmVzdWx0KTsKKyAgICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIo
d3JhcHBlciwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7CiAgICAgfTsKICAgICBhdXRv
IGZhaWx1cmVDYWxsYmFjayA9IFt3cmFwcGVyXSgpIG11dGFibGUgewogICAgICAgICB3cmFwcGVy
LnJlamVjdChudWxscHRyKTsKQEAgLTYxMyw3ICs2MTMsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5
cHRvOjpleHBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKICAgICBKU1Byb21pc2VEZWZlcnJlZCog
cHJvbWlzZURlZmVycmVkID0gSlNQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZSgmc3RhdGUsIGdsb2Jh
bE9iamVjdCgpKTsKICAgICBEZWZlcnJlZFdyYXBwZXIgd3JhcHBlcigmc3RhdGUsIGdsb2JhbE9i
amVjdCgpLCBwcm9taXNlRGVmZXJyZWQpOwogICAgIGF1dG8gc3VjY2Vzc0NhbGxiYWNrID0gW3dy
YXBwZXJdKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KSBtdXRhYmxlIHsKLSAgICAgICAg
d3JhcHBlci5yZXNvbHZlKHJlc3VsdCk7CisgICAgICAgIGZ1bGZpbGxQcm9taXNlV2l0aEFycmF5
QnVmZmVyKHdyYXBwZXIsIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOwogICAgIH07CiAg
ICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKICAgICAgICAg
d3JhcHBlci5yZWplY3QobnVsbHB0cik7CkBAIC02NzMsNyArNjczLDcgQEAgSlNWYWx1ZSBKU1N1
YnRsZUNyeXB0bzo6d3JhcEtleShFeGVjU3RhdGUmIHN0YXRlKQogICAgICAgICBhdXRvIGVuY3J5
cHRTdWNjZXNzQ2FsbGJhY2sgPSBbd3JhcHBlciwgYWxnb3JpdGhtUHRyLCBwYXJhbWV0ZXJzUHRy
XShjb25zdCBWZWN0b3I8dWludDhfdD4mIGVuY3J5cHRlZERhdGEpIG11dGFibGUgewogICAgICAg
ICAgICAgZGVsZXRlIGFsZ29yaXRobVB0cjsKICAgICAgICAgICAgIGRlbGV0ZSBwYXJhbWV0ZXJz
UHRyOwotICAgICAgICAgICAgd3JhcHBlci5yZXNvbHZlKGVuY3J5cHRlZERhdGEpOworICAgICAg
ICAgICAgZnVsZmlsbFByb21pc2VXaXRoQXJyYXlCdWZmZXIod3JhcHBlciwgZW5jcnlwdGVkRGF0
YS5kYXRhKCksIGVuY3J5cHRlZERhdGEuc2l6ZSgpKTsKICAgICAgICAgfTsKICAgICAgICAgYXV0
byBlbmNyeXB0RmFpbHVyZUNhbGxiYWNrID0gW3dyYXBwZXIsIGFsZ29yaXRobVB0ciwgcGFyYW1l
dGVyc1B0cl0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGRlbGV0ZSBhbGdvcml0aG1QdHI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>