<?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>158139</bug_id>
          
          <creation_ts>2016-05-26 17:30:10 -0700</creation_ts>
          <short_desc>SVGImage should report its memory cost to JS garbage collector</short_desc>
          <delta_ts>2016-06-01 16:29:19 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=158264</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=158274</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=158281</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>andersca</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ggaren</cc>
    
    <cc>jonlee</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1196927</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-05-26 17:30:10 -0700</bug_when>
    <thetext>If an SVG takes too much memory and it is not referenced by the current document, the garbage collector will not try to free it, unless it has to (like a memory warning from the OS). This can cause the WebProcess to jetsam because it tries to exceed its memory limit.

The SVGImage needs to report an approximation for its memory cost since it is hard and slow process to count all the bytes which are referenced by all the children nodes. This calculation can be very complex if the SVG has animating nodes. If the SVGImage under estimates its memory cost, this will fix the problem partially since the garbage collector will think that the WebProcess is not taking that much memory although it could be near its limit. If the SVGImage over estimates its memory cost, the garbage collector will work more aggressively and it will try more often to free unreferenced memory although there may not be anything to release. This might cause perf and power issues. So we have to be very careful in how much we report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196937</commentid>
    <comment_count>1</comment_count>
      <attachid>279932</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-05-26 18:25:04 -0700</bug_when>
    <thetext>Created attachment 279932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1196938</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-26 18:27:31 -0700</bug_when>
    <thetext>Attachment 279932 did not pass style-queue:


ERROR: Source/WebCore/svg/graphics/SVGImage.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 10 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>1196939</commentid>
    <comment_count>3</comment_count>
      <attachid>279932</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-05-26 18:28:34 -0700</bug_when>
    <thetext>Comment on attachment 279932
Patch

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

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:371
&gt; +    static const size_t MemoryCostFactor = 10;

I could not figure out where the rest of the memory are gone.  The calculated memory was almost 10% of the actual memory used by the WebProcess for the SVGImage.

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:420
&gt; +        reportApproximateMemoryCost();

Should we make this reporting only for iOS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1197153</commentid>
    <comment_count>4</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-05-27 12:13:19 -0700</bug_when>
    <thetext>The bug is fixed on WK1 but not for WK2 unless I multiply the memory cost of the SVGImage by a large factor (4-10). I need to investigate which process in WK2 allocates the extra memory and for what purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198042</commentid>
    <comment_count>5</comment_count>
      <attachid>280204</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-05-31 20:07:27 -0700</bug_when>
    <thetext>Created attachment 280204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198043</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-31 20:09:55 -0700</bug_when>
    <thetext>Attachment 280204 did not pass style-queue:


ERROR: Source/WebCore/svg/graphics/SVGImage.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 11 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>1198046</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-05-31 20:23:56 -0700</bug_when>
    <thetext>The remaining memory not accounted for here is the render tree in the SVG image.

We could have each renderer report its size, like this patch has each DOM node report its size, but that&apos;s a very intrusive solution and it&apos;s likely to become stale over time. Another approach is to estimate size of render tree based on size of DOM. But as long as we&apos;re going to estimate, we might as well do something even simpler: Just take the (uncompressed) encoded size of the SVG image and multiply by a constant scaling factor.

Every decoded image has some average decompression ratio relative to its encoded size. SVG image happens to have a 10X-100X ratio because SVG is such a crazy image format. That&apos;s why these simple images can trigger jetsam. But it&apos;s easy enough for us to measure a bunch of SVG images, compute an average decompression ratio, and apply that average to all images. The more complex estimation is still just an estimation, and not necessarily any more accurate.

Side note: We should also arrange for SVG images to honor our existing WebCore::MemoryCache mechanism for throwing away decoded image data on demand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198176</commentid>
    <comment_count>8</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-01 09:29:54 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; The remaining memory not accounted for here is the render tree in the SVG
&gt; image.
&gt; 
&gt; We could have each renderer report its size, like this patch has each DOM
&gt; node report its size, but that&apos;s a very intrusive solution and it&apos;s likely
&gt; to become stale over time. Another approach is to estimate size of render
&gt; tree based on size of DOM. But as long as we&apos;re going to estimate, we might
&gt; as well do something even simpler: Just take the (uncompressed) encoded size
&gt; of the SVG image and multiply by a constant scaling factor.
&gt; 

In SVGPolyElement::approximateMemoryCost() and SVGPathElement::approximateMemoryCost(), I added the size of the most expensive renderer: the RenderSVGPath. I also add an estimate for the associated Path object. It is not the perfect implementation but as you said having a cleaner and more accurate reporting for the renderers will be very intrusive.

&gt; Every decoded image has some average decompression ratio relative to its
&gt; encoded size. SVG image happens to have a 10X-100X ratio because SVG is such
&gt; a crazy image format. That&apos;s why these simple images can trigger jetsam. But
&gt; it&apos;s easy enough for us to measure a bunch of SVG images, compute an average
&gt; decompression ratio, and apply that average to all images. The more complex
&gt; estimation is still just an estimation, and not necessarily any more
&gt; accurate.
&gt; 

I will investigate this option but I don&apos;t think the ratio can be calculated easily or generalized. Unlike bitmap images, SVG images have the concept of defining resources and reusing them over and over. For every use element a shadow tree is cloned from the target resource. The shadow elements takes as much memory as the target elements. The shadow elements have to create new renderers as well. So although the encoded data might have a line like this:

&lt;use xlink:href=&quot;#SomeTarget&quot;/&gt;

The SVGImage decoder might have to be build big DOM and render trees for this markup line.

&gt; Side note: We should also arrange for SVG images to honor our existing
&gt; WebCore::MemoryCache mechanism for throwing away decoded image data on
&gt; demand.

I filed https://bugs.webkit.org/show_bug.cgi?id=158264 to track this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198177</commentid>
    <comment_count>9</comment_count>
      <attachid>280243</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-01 09:30:35 -0700</bug_when>
    <thetext>Created attachment 280243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198195</commentid>
    <comment_count>10</comment_count>
      <attachid>280243</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-06-01 10:22:15 -0700</bug_when>
    <thetext>Comment on attachment 280243
Patch

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

Geoff should give this its real review.

&gt; Source/WebCore/svg/SVGPathElement.cpp:370
&gt; +    // We need to count for the memory which is allocated by the RenderSVGPath::m_path.

s/count/account/

&gt; Source/WebCore/svg/SVGPolyElement.cpp:136
&gt; +    // We need to count for the memory which is allocated by the RenderSVGPath::m_path.

Ditto.

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:363
&gt; +    size_t decodeImagedMemoryCost = 0;

Imaged?

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:371
&gt; +    // FIXME: Adopt reportExtraMemoryVisited, and switch to reportExtraMemoryAllocated.
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=142595

Don&apos;t know anything about this mechanism, but it seems weird that we&apos;re adding new calls to deprecated functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198199</commentid>
    <comment_count>11</comment_count>
      <attachid>280248</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-01 11:01:38 -0700</bug_when>
    <thetext>Created attachment 280248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198202</commentid>
    <comment_count>12</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-06-01 11:09:59 -0700</bug_when>
    <thetext>Since we really want to fix this now, and this patch helps and does not hurt, I think it&apos;s OK to land this patch as-is with Tim&apos;s corrections. But a lot of follow-up is required:

(1) You need to adopt reportExtraMemoryAllocated + reportExtraMemoryVisited;

(2) You need to adopt setDecodedSize() + destroyDecodedData() in SVGImage and SVGImageForContainer.

(3) There are SVG elements that can have arbitrary size that aren&apos;t counted in this patch. So, this patch only works for a limited set of images.

For example, SVGSMILElement has vectors of conditions, begin times, and end times. There&apos;s also SVGAttributeToPropertyMap. SVGRenderStyle keeps a vector of SVGLength. SVGInlineTextBox has a vector of SVGTextFragment. SVGMarkerData has a vector of MarkerPosition. SVGSubPathData has a vector of FloatPoint. I have about 1000 more lines of find results to go through just to list the vectors -- and that doesn&apos;t cover any other kind of collection.

I don&apos;t think it&apos;s practical to exhaustively list all possible collections in all possible SVG data structures. This is why I prefer the constant scaling factor approach: all of these collections depend initially on some listing in the source text.

You mention that a scaling factor doesn&apos;t work for use elements. That&apos;s a good point. Let&apos;s multiply size of image by number of use elements.

Still, if you prefer the exhaustive approach, you can take that approach to solve (3). But we can&apos;t leave (3) unsolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198204</commentid>
    <comment_count>13</comment_count>
      <attachid>280243</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-01 11:13:05 -0700</bug_when>
    <thetext>Comment on attachment 280243
Patch

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

&gt;&gt; Source/WebCore/svg/SVGPathElement.cpp:370
&gt;&gt; +    // We need to count for the memory which is allocated by the RenderSVGPath::m_path.
&gt; 
&gt; s/count/account/

Fixed

&gt;&gt; Source/WebCore/svg/SVGPolyElement.cpp:136
&gt;&gt; +    // We need to count for the memory which is allocated by the RenderSVGPath::m_path.
&gt; 
&gt; Ditto.

Fixed

&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:363
&gt;&gt; +    size_t decodeImagedMemoryCost = 0;
&gt; 
&gt; Imaged?

Name was changed to decodedImageMemoryCost.

&gt;&gt; Source/WebCore/svg/graphics/SVGImage.cpp:371
&gt;&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=142595
&gt; 
&gt; Don&apos;t know anything about this mechanism, but it seems weird that we&apos;re adding new calls to deprecated functions.

I looked for reportExtraMemoryAllocated in the source code and I found it is rarely used outside JavaScriptCore. I tried the following code to do the reporting:

    JSC::JSLockHolder lock(document-&gt;vm());
    document-&gt;vm().heap.reportExtraMemoryAllocated(decodedImageMemoryCost + data()-&gt;size());

And also the following code

    JSC::JSLockHolder lock(document-&gt;topDocument().vm());
    document-&gt;topDocument().vm().heap.reportExtraMemoryAllocated(decodedImageMemoryCost + data()-&gt;size());

But these changes did not work correctly as deprecatedReportExtraMemory() does. I think there is still something missing related to reportExtraMemoryAllocated(). Otherwise all the FIXME comments should have been removed and deprecatedReportExtraMemory() was deleted .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198218</commentid>
    <comment_count>14</comment_count>
      <attachid>280248</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-01 11:48:51 -0700</bug_when>
    <thetext>Comment on attachment 280248
Patch

Clearing flags on attachment: 280248

Committed r201561: &lt;http://trac.webkit.org/changeset/201561&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198219</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-01 11:48:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198242</commentid>
    <comment_count>16</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2016-06-01 13:01:20 -0700</bug_when>
    <thetext>Said, should we have other bugs covering Geoff&apos;s points?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198323</commentid>
    <comment_count>17</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-01 16:05:43 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Since we really want to fix this now, and this patch helps and does not
&gt; hurt, I think it&apos;s OK to land this patch as-is with Tim&apos;s corrections. But a
&gt; lot of follow-up is required:
&gt; 
&gt; (1) You need to adopt reportExtraMemoryAllocated + reportExtraMemoryVisited;
&gt; 

I tried something similar the fix of https://bugs.webkit.org/show_bug.cgi?id=142595 but it did not work as expected. Maybe I was not getting the correct scriptExecutionContext() to get the heap from. See my comment below https://bugs.webkit.org/show_bug.cgi?id=158139#c13. By the way there are ten places in the code which are still using deprecatedReportExtraMemory().

I filed https://bugs.webkit.org/show_bug.cgi?id=158274 to track the switch from deprecatedReportExtraMemory() to reportExtraMemoryAllocated()+reportExtraMemoryVisited().

&gt; (2) You need to adopt setDecodedSize() + destroyDecodedData() in SVGImage
&gt; and SVGImageForContainer.
&gt; 

This is tracked by https://bugs.webkit.org/show_bug.cgi?id=158264.

&gt; (3) There are SVG elements that can have arbitrary size that aren&apos;t counted
&gt; in this patch. So, this patch only works for a limited set of images.
&gt; 
&gt; For example, SVGSMILElement has vectors of conditions, begin times, and end
&gt; times. There&apos;s also SVGAttributeToPropertyMap. SVGRenderStyle keeps a vector
&gt; of SVGLength. SVGInlineTextBox has a vector of SVGTextFragment.
&gt; SVGMarkerData has a vector of MarkerPosition. SVGSubPathData has a vector of
&gt; FloatPoint. I have about 1000 more lines of find results to go through just
&gt; to list the vectors -- and that doesn&apos;t cover any other kind of collection.
&gt; 
&gt; I don&apos;t think it&apos;s practical to exhaustively list all possible collections
&gt; in all possible SVG data structures. This is why I prefer the constant
&gt; scaling factor approach: all of these collections depend initially on some
&gt; listing in the source text.
&gt; 
&gt; You mention that a scaling factor doesn&apos;t work for use elements. That&apos;s a
&gt; good point. Let&apos;s multiply size of image by number of use elements.
&gt; 
&gt; Still, if you prefer the exhaustive approach, you can take that approach to
&gt; solve (3). But we can&apos;t leave (3) unsolved.

I filed https://bugs.webkit.org/show_bug.cgi?id=158281 to track this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198330</commentid>
    <comment_count>18</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2016-06-01 16:29:19 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Said, should we have other bugs covering Geoff&apos;s points?

Done. Three bugs were filed and attached in the See Also.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>279932</attachid>
            <date>2016-05-26 18:25:04 -0700</date>
            <delta_ts>2016-05-27 12:12:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158139-20160526182614.patch</filename>
            <type>text/plain</type>
            <size>9742</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTQ0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE2LTA1LTI2ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU1ZHSW1hZ2Ug
c2hvdWxkIHJlcG9ydCBpdHMgbWVtb3J5IGNvc3QgdG8gSlMgZ2FyYmFnZSBjb2xsZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODEzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpa2Ugd2hhdCB3
ZSBkbyBpbiBIVE1MSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkgYnkgcmVwb3J0aW5nIHRo
ZSBtZW1vcnkKKyAgICAgICAgY29zdCBvZiB0aGUgQml0bWFwSW1hZ2UsIHdlIG5lZWQgdG8gZG8g
c29tZXRoaW5nIHNpbWlsYXIgZm9yIHRoZSBTVkdJbWFnZS4gSW4KKyAgICAgICAgU1ZHSW1hZ2U6
OmRhdGFDaGFuZ2UoKSBhbmQgd2hlbiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgd2UgY2FuIGNh
bGN1bGF0ZQorICAgICAgICB0aGUgc2l6ZSBvZiBhbGwgdGhlIG5vZGVzIGFuZCB0aGVpciByZW5k
ZXJlcnMuIFdlIG5lZWQgdG8gdXNlIGFuIGFwcHJveGltYXRpb24KKyAgICAgICAgZm9yIHRoZSBt
ZW1vcnkgY29zdCBzaW5jZSBpdCBpcyBoYXJkIGFuZCBjb3N0bHkgdG8gZ2V0IGFuIGFjY3VyYXRl
IG51bWJlci4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6cmVwb3J0TWVtb3J5Rm9yRG9jdW1lbnRJZkZyYW1lbGVzcyk6VXNl
IE5vZGU6OmFwcHJveGltYXRlTWVtb3J5Q29zdCgpCisgICAgICAgIGluc3RlYWQgb2Ygc2l6ZW9m
KE5vZGUpLiBBIE5vZGUncyBkZXNjZW5kYW50IGNhbiBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGFu
ZAorICAgICAgICByZXR1cm4gYSBtb3JlIGFjY3VyYXRlIG1lbW9yeSBjb3N0LgorICAgICAgICAK
KyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6YXBwcm94aW1h
dGVNZW1vcnlDb3N0KTogRGVmaW5lIHRoaXMgbmV3IHZpcnR1YWwgZnVuY3Rpb24gaW4gdGhlCisg
ICAgICAgIE5vZGUgY2xhc3MuIEl0cyBkZWZhdWx0IHZhbHVlIGlzIHNpemVvZihOb2RlKSBidXQg
YW55IGRlc2NlbmRhbnQgY2FuIHJldHVybiBhCisgICAgICAgIG1vcmUgYWNjdXJhdGUgbnVtYmVy
LgorICAgICAgICAKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50Lmg6IE92ZXJyaWRl
IGFwcHJveGltYXRlTWVtb3J5Q29zdCgpIHRvIHJldHVybiAKKyAgICAgICAgc2l6ZW9mKFNWR0dy
YXBoaWNzRWxlbWVudCkuCisgICAgICAgIAorICAgICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoRWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlD
b3N0KTogT3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4KKyAgICAgICAgdGhlIG1lbW9y
eSBjb3N0IG9mIHRoZSBwb2ludHMgYW5kIHRoZSBtX3BhdGggb2YgdGhlIHJlbmRlcmVyLgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5oOgorICAgICAgICAKKyAgICAgICAgKiBzdmcvU1ZH
UG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OmFwcHJv
eGltYXRlTWVtb3J5Q29zdCk6IE92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuCisgICAg
ICAgIHRoZSBtZW1vcnkgY29zdCBvZiB0aGUgcG9pbnRzIGFuZCB0aGUgbV9wYXRoIG9mIHRoZSBy
ZW5kZXJlci4KKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuaDoKKworICAgICAgICAqIHN2
Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6cmVw
b3J0QXBwcm94aW1hdGVNZW1vcnlDb3N0KTogQ2FsY3VsYXRlIHRoZSBtZW1vcnkgY29zdCBvZiB0
aGUgCisgICAgICAgIG5vZGVzIGluIHRoZSBTVkdEb2N1bWVudCBvZiBhbiBTVkdJbWFnZS4gVGhl
biByZXBvcnQgdGhpcyBudW1iZXIgdG8gdGhlIEpTIGdhcmJhZ2UgCisgICAgICAgIGNvbGxlY3Rv
ci4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOiBB
ZnRlciBsb2FkaW5nIGFsbCB0aGUgU1ZHIGVuY29kZWQgZGF0YSBhbmQgYnVpbGRpbmcKKyAgICAg
ICAgaXRzIERPTSB0cmVlIGFuZCB0aGUgcmVuZGVyIHRyZWUsIHJlcG9ydCBpdHMgbWVtb3J5IGNv
c3QgdG8gdGhlIEpTIGdhcmJhZ2UgY29sbGVjdG9yLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oOgorCiAyMDE2LTA1LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4K
IAogICAgICAgICBNZWRpYSBxdWVyaWVzIGFuZCBwbGF0Zm9ybSBzY3JlZW4gbW9kZXJuaXphdGlv
biBhbmQgc3RyZWFtbGluaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjAxMzk1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5
LDEzICs4OSwxMyBAQCB2b2lkIHJlcG9ydE1lbW9yeUZvckRvY3VtZW50SWZGcmFtZWxlc3MoCiAg
ICAgaWYgKGRvY3VtZW50LmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNpemVfdCBu
b2RlQ291bnQgPSAwOworICAgIHNpemVfdCBtZW1vcnlDb3N0ID0gMDsKICAgICBmb3IgKE5vZGUq
IG5vZGUgPSAmZG9jdW1lbnQ7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2Rl
KSkKLSAgICAgICAgKytub2RlQ291bnQ7CisgICAgICAgIG1lbW9yeUNvc3QgKz0gbm9kZS0+YXBw
cm94aW1hdGVNZW1vcnlDb3N0KCk7CiAKICAgICAvLyBGSVhNRTogQWRvcHQgcmVwb3J0RXh0cmFN
ZW1vcnlWaXNpdGVkLCBhbmQgc3dpdGNoIHRvIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkLgog
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1OTUKLSAg
ICBzdGF0ZS5oZWFwKCktPmRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeShub2RlQ291bnQgKiBz
aXplb2YoTm9kZSkpOworICAgIHN0YXRlLmhlYXAoKS0+ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVt
b3J5KG1lbW9yeUNvc3QpOwogfQogCiBKU1ZhbHVlIHRvSlNOZXdseUNyZWF0ZWQoRXhlY1N0YXRl
KiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPERvY3VtZW50PiYm
IGRvY3VtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiAyMDEzOTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMsNiArMTQzLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVWYWx1ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBzZXROb2RlVmFsdWUoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZp
cnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBzaXplX3Qg
YXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gc2l6ZW9mKCp0aGlzKTsgfQog
ICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUoKSBjb25zdDsKICAgICBzdGF0aWMgcHRyZGlm
Zl90IHBhcmVudE5vZGVNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoTm9k
ZSwgbV9wYXJlbnROb2RlKTsgfQogICAgIEVsZW1lbnQqIHBhcmVudEVsZW1lbnQoKSBjb25zdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmgJKHJldmlzaW9uIDIw
MTM5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgLy8gImJhc2UgY2xhc3MiIG1l
dGhvZHMgZm9yIGFsbCB0aGUgZWxlbWVudHMgd2hpY2ggcmVuZGVyIGFzIHBhdGhzCiAgICAgdmly
dHVhbCB2b2lkIHRvQ2xpcFBhdGgoUGF0aCYpOwogICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikgb3ZlcnJpZGU7CisgICAgCisgICAgc2l6ZV90IGFwcHJveGltYXRlTWVtb3J5Q29z
dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHNpemVvZigqdGhpcyk7IH0KIAogcHJvdGVjdGVk
OgogICAgIFNWR0dyYXBoaWNzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQm
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjAx
Mzk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzYzLDYgKzM2MywxNSBAQCBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRl
YXJPZmY+IFNWCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3NpemVfdCBTVkdQYXRoRWxlbWVu
dDo6YXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGlzIGFuIGFw
cHJveGltYXRpb24gZm9yIGhvdyBtYW55IHBvaW50cyBhcmUgaW4gdGhlIHBhdGguCisgICAgc2l6
ZV90IHBvaW50c0NvdW50ID0gbV9wYXRoQnl0ZVN0cmVhbS5zaXplKCkgLyAxMDsKKyAgICBzaXpl
X3QgcG9pbnRzQ29zdCA9IHBvaW50c0NvdW50ICogc2l6ZW9mKEZsb2F0UG9pbnQpOworICAgIC8v
IFdlIG5lZWQgdG8gY291bnQgZm9yIHRoZSBtZW1vcnkgd2hpY2ggaXMgYWxsb2NhdGVkIGJ5IHRo
ZSBSZW5kZXJTVkdQYXRoOjptX3BhdGguCisgICAgcmV0dXJuIHNpemVvZigqdGhpcykgKyAocmVu
ZGVyZXIoKSA/IHBvaW50c0Nvc3QgKiAyICsgc2l6ZW9mKFJlbmRlclNWR1BhdGgpIDogcG9pbnRz
Q29zdCk7Cit9CisgICAgCiB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQo
U1ZHUGF0aFNlZ1JvbGUgcm9sZSwgTGlzdE1vZGlmaWNhdGlvbiBsaXN0TW9kaWZpY2F0aW9uKQog
ewogICAgIHN3aXRjaCAocm9sZSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50
LmgJKHJldmlzaW9uIDIwMTM5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDggQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhbmltYXRlZFByb3BlcnR5V2lsbEJlRGVsZXRlZCgpOwogCisgICAgc2l6ZV90IGFwcHJveGlt
YXRlTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIFNWR1BhdGhF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwMTM5NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw0ICsx
MzAsMTEgQEAgUmVmUHRyPFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaQogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxTVkdMaXN0UHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4qPihz
dGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0ZWRQb2ludExpc3Q+KGxvb2t1cE9yQ3JlYXRl
UG9pbnRzV3JhcHBlcih0aGlzKSktPmFuaW1WYWwoKS5nZXQoKSk7CiB9CiAKK3NpemVfdCBTVkdQ
b2x5RWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICBzaXplX3Qg
cG9pbnRzQ29zdCA9IHBvaW50TGlzdCgpLnNpemUoKSAqIHNpemVvZihGbG9hdFBvaW50KTsKKyAg
ICAvLyBXZSBuZWVkIHRvIGNvdW50IGZvciB0aGUgbWVtb3J5IHdoaWNoIGlzIGFsbG9jYXRlZCBi
eSB0aGUgUmVuZGVyU1ZHUGF0aDo6bV9wYXRoLgorICAgIHJldHVybiBzaXplb2YoKnRoaXMpICsg
KHJlbmRlcmVyKCkgPyBwb2ludHNDb3N0ICogMiArIHNpemVvZihSZW5kZXJTVkdQYXRoKSA6IHBv
aW50c0Nvc3QpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAko
cmV2aXNpb24gMjAxMzk1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgcHVibGljOgogICAgIFNWR1BvaW50TGlz
dCYgcG9pbnRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9wb2ludHMudmFsdWU7IH0KIAogICAgIHN0
YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHBvaW50c1Byb3BlcnR5SW5mbygpOworICAgIAor
ICAgIHNpemVfdCBhcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZTsKIAogcHJv
dGVjdGVkOgogICAgIFNWR1BvbHlFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZp
c2lvbiAyMDEzOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwxMCBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCisjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgi
CisjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU0xv
Y2suaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdJbWFnZTo6U1ZHSW1hZ2UoSW1hZ2VP
YnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFVSTCYgdXJsKQpAQCAtMzUzLDYgKzM1NywyNiBAQCB2
b2lkIFNWR0ltYWdlOjpyZXNldEFuaW1hdGlvbigpCiAgICAgc3RvcEFuaW1hdGlvbigpOwogfQog
Cit2b2lkIFNWR0ltYWdlOjpyZXBvcnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdAorewor
ICAgIEZyYW1lJiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgc2l6ZV90IG1lbW9y
eUNvc3QgPSAwOworCisgICAgZm9yIChOb2RlKiBub2RlID0gZnJhbWUuZG9jdW1lbnQoKTsgbm9k
ZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKQorICAgICAgICBtZW1vcnlDb3N0
ICs9IG5vZGUtPmFwcHJveGltYXRlTWVtb3J5Q29zdCgpOworCisgICAgLy8gRklYTUU6IEV4cGxh
aW4gd2hhdCB0aGlzIG1hZ2ljYWwgbnVtYmVyIGlzLiBUaGUgcmFyaW8gYmV0d2VlbiB3aGF0IGlz
IGNhbGN1bGF0ZWQKKyAgICAvLyBmb3IgdGhlIG1lbW9yeSBjb3N0IG9mIGFuIFNWR0ltYWdlIGFu
ZCB0aGUgYWN0dWFsIGFsbG9jYXRlZCBtZW1vcnkgZm9yIGl0IGlzCisgICAgLy8gYWxtb3N0IDE6
MTAuCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBNZW1vcnlDb3N0RmFjdG9yID0gMTA7CisKKyAg
ICBKU0M6OlZNJiB2bSA9IEpTRE9NV2luZG93QmFzZTo6Y29tbW9uVk0oKTsKKyAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKHZtKTsKKyAgICAvLyBGSVhNRTogQWRvcHQgcmVwb3J0RXh0cmFNZW1v
cnlWaXNpdGVkLCBhbmQgc3dpdGNoIHRvIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkLgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI1OTUKKyAgICB2
bS5oZWFwLmRlcHJlY2F0ZWRSZXBvcnRFeHRyYU1lbW9yeShtZW1vcnlDb3N0ICogTWVtb3J5Q29z
dEZhY3Rvcik7Cit9CisKIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQogewogICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGlzIGFuIGVtcHR5IGltYWdl
LgpAQCAtMzkzLDYgKzQxNyw3IEBAIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFuZ2VkKGJvb2wgYWxs
RGF0YVIKIAogICAgICAgICAvLyBTZXQgdGhlIGludHJpbnNpYyBzaXplIGJlZm9yZSBhIGNvbnRh
aW5lciBzaXplIGlzIGF2YWlsYWJsZS4KICAgICAgICAgbV9pbnRyaW5zaWNTaXplID0gY29udGFp
bmVyU2l6ZSgpOworICAgICAgICByZXBvcnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QoKTsKICAgICB9
CiAKICAgICByZXR1cm4gbV9wYWdlICE9IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMjAxMzk1KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIHVzZXNDb250YWluZXJTaXplKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoTGVuZ3Ro
JiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50
cmluc2ljUmF0aW8pIG92ZXJyaWRlOwogCisgICAgdm9pZCByZXBvcnRBcHByb3hpbWF0ZU1lbW9y
eUNvc3QoKSBjb25zdDsKICAgICBib29sIGRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBTVkdJbWFnZXMgd2lsbCBiZSB1bmFibGUgdG8g
cHJ1bmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280204</attachid>
            <date>2016-05-31 20:07:27 -0700</date>
            <delta_ts>2016-06-01 09:30:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158139-20160531200844.patch</filename>
            <type>text/plain</type>
            <size>10413</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE2LTA1LTMxICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU1ZHSW1hZ2Ug
c2hvdWxkIHJlcG9ydCBpdHMgbWVtb3J5IGNvc3QgdG8gSlMgZ2FyYmFnZSBjb2xsZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODEzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpa2Ugd2hhdCB3
ZSBkbyBpbiBIVE1MSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkgYnkgcmVwb3J0aW5nIHRo
ZSBtZW1vcnkKKyAgICAgICAgY29zdCBvZiB0aGUgQml0bWFwSW1hZ2UsIHdlIG5lZWQgdG8gZG8g
c29tZXRoaW5nIHNpbWlsYXIgZm9yIHRoZSBTVkdJbWFnZS4gSW4KKyAgICAgICAgU1ZHSW1hZ2U6
OmRhdGFDaGFuZ2UoKSBhbmQgd2hlbiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgd2UgY2FuIGNh
bGN1bGF0ZQorICAgICAgICB0aGUgc2l6ZSBvZiBhbGwgRE9NIG5vZGVzIGFuZCB0aGVpciByZW5k
ZXJlcnMuIFRoZSBzaXplIG9mIHRoZSBlbmNvZGVkIGRhdGEKKyAgICAgICAgaGFzIHRvIGJlIGFk
ZGVkIGFzIHdlbGwgdG8gdGhlIHRvdGFsIG1lbW9yeSBjb3N0LiBBbiBhcHByb3hpbWF0aW9uIGZv
ciB0aGUKKyAgICAgICAgbWVtb3J5IGNvc3QgaGFzIHRvIGJlIHVzZWQgc2luY2UgaXQgaXMgY29z
dGx5IHRvIGdldCBhbiBhY2N1cmF0ZSBudW1iZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRNZW1vcnlGb3JE
b2N1bWVudElmRnJhbWVsZXNzKTogVXNlIE5vZGU6OmFwcHJveGltYXRlTWVtb3J5Q29zdCgpCisg
ICAgICAgIGluc3RlYWQgb2Ygc2l6ZW9mKE5vZGUpLiBBIE5vZGUncyBkZXNjZW5kYW50IGNhbiBv
dmVycmlkZSB0aGlzIGZ1bmN0aW9uIGFuZAorICAgICAgICByZXR1cm4gYSBtb3JlIGFjY3VyYXRl
IG1lbW9yeSBjb3N0LgorICAgICAgICAKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6YXBwcm94aW1hdGVNZW1vcnlDb3N0KTogRGVmaW5lIHRoaXMgbmV3IHZp
cnR1YWwgZnVuY3Rpb24gaW4gdGhlCisgICAgICAgIE5vZGUgY2xhc3MuIEl0cyBkZWZhdWx0IHZh
bHVlIGlzIHNpemVvZihOb2RlKSBidXQgYW55IGRlc2NlbmRhbnQgY2FuIHJldHVybiBhCisgICAg
ICAgIG1vcmUgYWNjdXJhdGUgbnVtYmVyLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRhdGEpOiBEZWZpbmUg
YSBjb25zdCB2ZXJzaW9uIG9mIGRhdGEoKSBzbyBpdCBjYW4gYmUgY2FsbGVkCisgICAgICAgIHRo
ZSBjb25zdCBmdW5jdGlvbiBTVkdJbWFnZTo6cmVwb3J0QXBwcm94aW1hdGVNZW1vcnlDb3N0KCku
CisgICAgICAgIAorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaDogT3ZlcnJpZGUg
YXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgdG8gcmV0dXJuIAorICAgICAgICBzaXplb2YoU1ZHR3Jh
cGhpY3NFbGVtZW50KS4KKyAgICAgICAgCisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjphcHByb3hpbWF0ZU1lbW9yeUNv
c3QpOiBPdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybgorICAgICAgICB0aGUgbWVtb3J5
IGNvc3Qgb2YgdGhlIHBvaW50cyBhbmQgdGhlIG1fcGF0aCBvZiB0aGUgcmVuZGVyZXIuCisgICAg
ICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgIAorICAgICAgICAqIHN2Zy9TVkdQ
b2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YXBwcm94
aW1hdGVNZW1vcnlDb3N0KTogT3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4KKyAgICAg
ICAgdGhlIG1lbW9yeSBjb3N0IG9mIHRoZSBwb2ludHMgYW5kIHRoZSBtX3BhdGggb2YgdGhlIHJl
bmRlcmVyLgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6OnJlcG9ydEFwcHJveGltYXRlTWVtb3J5Q29zdCk6IENhbGN1bGF0ZSB0aGUgbWVtb3J5IGNv
c3Qgb2YgdGhlIAorICAgICAgICBub2RlcyBpbiB0aGUgU1ZHRG9jdW1lbnQgb2YgYW4gU1ZHSW1h
Z2UuIFRoZW4gcmVwb3J0IHRoaXMgbnVtYmVyIHRvIHRoZSBKUyBnYXJiYWdlIAorICAgICAgICBj
b2xsZWN0b3IuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFu
Z2VkKTogQWZ0ZXIgbG9hZGluZyBhbGwgdGhlIFNWRyBlbmNvZGVkIGRhdGEgYW5kIGJ1aWxkaW5n
CisgICAgICAgIGl0cyBET00gdHJlZSBhbmQgdGhlIHJlbmRlciB0cmVlLCByZXBvcnQgdGhlIHRv
dGFsIG1lbW9yeSBjb3N0IHRvIHRoZSBKUyBnYXJiYWdlIGNvbGxlY3Rvci4KKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKwogMjAxNi0wNS0zMSAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlcG9ydEV4dHJh
TWVtb3J5Q29zdCBJREwgYXR0cmlidXRlIHNob3VsZCBhbHNvIGJlIHVzZWQgdG8gZ2VuZXJhdGUg
ZXN0aW1hdGVkU2l6ZSBtZXRob2QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDE0NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODksMTMgKzg5LDEzIEBAIHZvaWQgcmVwb3J0TWVtb3J5Rm9yRG9jdW1lbnRJZkZyYW1lbGVzcygK
ICAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2l6ZV90
IG5vZGVDb3VudCA9IDA7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QgPSAwOwogICAgIGZvciAoTm9k
ZSogbm9kZSA9ICZkb2N1bWVudDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5v
ZGUpKQotICAgICAgICArK25vZGVDb3VudDsKKyAgICAgICAgbWVtb3J5Q29zdCArPSBub2RlLT5h
cHByb3hpbWF0ZU1lbW9yeUNvc3QoKTsKIAogICAgIC8vIEZJWE1FOiBBZG9wdCByZXBvcnRFeHRy
YU1lbW9yeVZpc2l0ZWQsIGFuZCBzd2l0Y2ggdG8gcmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjU5NQot
ICAgIHN0YXRlLmhlYXAoKS0+ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KG5vZGVDb3VudCAq
IHNpemVvZihOb2RlKSk7CisgICAgc3RhdGUuaGVhcCgpLT5kZXByZWNhdGVkUmVwb3J0RXh0cmFN
ZW1vcnkobWVtb3J5Q29zdCk7CiB9CiAKIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnQ+
JiYgZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDIwMTQ3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHNpemVf
dCBhcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiBzaXplb2YoKnRoaXMpOyB9
CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSgpIGNvbnN0OwogICAgIHN0YXRpYyBwdHJk
aWZmX3QgcGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihO
b2RlLCBtX3BhcmVudE5vZGUpOyB9CiAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCgpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lv
biAyMDE0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSkgPSAwOwogCiAgICAg
U2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVk
SW1hZ2VEYXRhLmdldCgpOyB9CiAKICAgICAvLyBBbmltYXRpb24gYmVnaW5zIHdoZW5ldmVyIHNv
bWVvbmUgZHJhd3MgdGhlIGltYWdlLCBzbyBzdGFydEFuaW1hdGlvbigpIGlzIG5vdCBub3JtYWxs
eSBjYWxsZWQuCiAgICAgLy8gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IHBhdXNlIG9uY2UgYWxsIG9i
c2VydmVycyBubyBsb25nZXIgd2FudCB0byByZW5kZXIgdGhlIGltYWdlIGFueXdoZXJlLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAkocmV2aXNpb24gMjAxNDcz
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdG9DbGlwUGF0
aChQYXRoJik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
IAorICAgIHNpemVfdCBhcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzaXplb2YoKnRoaXMpOyB9CisKIHByb3RlY3RlZDoKICAgICBTVkdHcmFwaGljc0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjAxNDczKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYzLDYgKzM2Mywx
NCBAQCBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IFNWCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK3NpemVfdCBTVkdQYXRoRWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlD
b3N0KCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gZm9yIHBhdGgg
bWVtb3J5IGNvc3Qgc2luY2UgdGhlIHBhdGggaXMgcGFyc2VkIG9uIGRlbWFuZC4KKyAgICBzaXpl
X3QgcGF0aE1lbW9yeUNvc3QgPSAobV9wYXRoQnl0ZVN0cmVhbS5zaXplKCkgLyAxMCkgKiBzaXpl
b2YoRmxvYXRQb2ludCk7CisgICAgLy8gV2UgbmVlZCB0byBjb3VudCBmb3IgdGhlIG1lbW9yeSB3
aGljaCBpcyBhbGxvY2F0ZWQgYnkgdGhlIFJlbmRlclNWR1BhdGg6Om1fcGF0aC4KKyAgICByZXR1
cm4gc2l6ZW9mKCp0aGlzKSArIChyZW5kZXJlcigpID8gcGF0aE1lbW9yeUNvc3QgKiAyICsgc2l6
ZW9mKFJlbmRlclNWR1BhdGgpIDogcGF0aE1lbW9yeUNvc3QpOworfQorCiB2b2lkIFNWR1BhdGhF
bGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQoU1ZHUGF0aFNlZ1JvbGUgcm9sZSwgTGlzdE1vZGlm
aWNhdGlvbiBsaXN0TW9kaWZpY2F0aW9uKQogewogICAgIHN3aXRjaCAocm9sZSkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHJldmlzaW9uIDIwMTQ3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiAr
MTAxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhbmltYXRlZFByb3BlcnR5V2lsbEJlRGVsZXRl
ZCgpOwogCisgICAgc2l6ZV90IGFwcHJveGltYXRlTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRl
OworCiBwcml2YXRlOgogICAgIFNWR1BhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwMTQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMCw0ICsxMzAsMTEgQEAgUmVmUHRyPFNWR0xpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnRMaQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4qPihzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0
ZWRQb2ludExpc3Q+KGxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcih0aGlzKSktPmFuaW1WYWwo
KS5nZXQoKSk7CiB9CiAKK3NpemVfdCBTVkdQb2x5RWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlD
b3N0KCkgY29uc3QKK3sKKyAgICBzaXplX3QgcG9pbnRzQ29zdCA9IHBvaW50TGlzdCgpLnNpemUo
KSAqIHNpemVvZihGbG9hdFBvaW50KTsKKyAgICAvLyBXZSBuZWVkIHRvIGNvdW50IGZvciB0aGUg
bWVtb3J5IHdoaWNoIGlzIGFsbG9jYXRlZCBieSB0aGUgUmVuZGVyU1ZHUGF0aDo6bV9wYXRoLgor
ICAgIHJldHVybiBzaXplb2YoKnRoaXMpICsgKHJlbmRlcmVyKCkgPyBwb2ludHNDb3N0ICogMiAr
IHNpemVvZihSZW5kZXJTVkdQYXRoKSA6IHBvaW50c0Nvc3QpOworfQorCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkocmV2aXNpb24gMjAxNDczKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDgg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogcG9pbnRzUHJv
cGVydHlJbmZvKCk7CiAKKyAgICBzaXplX3QgYXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgY29uc3Qg
b3ZlcnJpZGU7CisKIHByb3RlY3RlZDoKICAgICBTVkdQb2x5RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyMDE0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSwxMCBAQAogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCisjaW5jbHVkZSAi
SlNET01XaW5kb3dCYXNlLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CisjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTVkdJbWFn
ZTo6U1ZHSW1hZ2UoSW1hZ2VPYnNlcnZlciYgb2JzZXJ2ZXIsIGNvbnN0IFVSTCYgdXJsKQpAQCAt
MzUzLDYgKzM1NywyMSBAQCB2b2lkIFNWR0ltYWdlOjpyZXNldEFuaW1hdGlvbigpCiAgICAgc3Rv
cEFuaW1hdGlvbigpOwogfQogCit2b2lkIFNWR0ltYWdlOjpyZXBvcnRBcHByb3hpbWF0ZU1lbW9y
eUNvc3QoKSBjb25zdAoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZy
YW1lKCkuZG9jdW1lbnQoKTsKKyAgICBzaXplX3QgZGVjb2RlSW1hZ2VkTWVtb3J5Q29zdCA9IDA7
CisKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBkb2N1bWVudDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2
ZXJzYWw6Om5leHQoKm5vZGUpKQorICAgICAgICBkZWNvZGVJbWFnZWRNZW1vcnlDb3N0ICs9IG5v
ZGUtPmFwcHJveGltYXRlTWVtb3J5Q29zdCgpOworCisgICAgSlNDOjpWTSYgdm0gPSBKU0RPTVdp
bmRvd0Jhc2U6OmNvbW1vblZNKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7Cisg
ICAgLy8gRklYTUU6IEFkb3B0IHJlcG9ydEV4dHJhTWVtb3J5VmlzaXRlZCwgYW5kIHN3aXRjaCB0
byByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTk1CisgICAgdm0uaGVhcC5kZXByZWNhdGVkUmVwb3J0
RXh0cmFNZW1vcnkoZGVjb2RlSW1hZ2VkTWVtb3J5Q29zdCArIGRhdGEoKS0+c2l6ZSgpKTsKK30K
KwogYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAg
ICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgaXMgYW4gZW1wdHkgaW1hZ2UuCkBAIC0zOTMsNiAr
NDEyLDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUgogCiAgICAg
ICAgIC8vIFNldCB0aGUgaW50cmluc2ljIHNpemUgYmVmb3JlIGEgY29udGFpbmVyIHNpemUgaXMg
YXZhaWxhYmxlLgogICAgICAgICBtX2ludHJpbnNpY1NpemUgPSBjb250YWluZXJTaXplKCk7Cisg
ICAgICAgIHJlcG9ydEFwcHJveGltYXRlTWVtb3J5Q29zdCgpOwogICAgIH0KIAogICAgIHJldHVy
biBtX3BhZ2UgIT0gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9T
VkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5oCShyZXZpc2lvbiAyMDE0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBwcml2YXRlOgogICAg
IGJvb2wgdXNlc0NvbnRhaW5lclNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dp
ZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykg
b3ZlcnJpZGU7CiAKKyAgICB2b2lkIHJlcG9ydEFwcHJveGltYXRlTWVtb3J5Q29zdCgpIGNvbnN0
OwogICAgIGJvb2wgZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwog
CiAgICAgLy8gRklYTUU6IFNWR0ltYWdlcyB3aWxsIGJlIHVuYWJsZSB0byBwcnVuZSBiZWNhdXNl
IHRoaXMgZnVuY3Rpb24gaXMgbm90IGltcGxlbWVudGVkIHlldC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280243</attachid>
            <date>2016-06-01 09:30:35 -0700</date>
            <delta_ts>2016-06-01 11:01:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158139-20160601093153.patch</filename>
            <type>text/plain</type>
            <size>10728</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE2LTA1LTMxICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU1ZHSW1hZ2Ug
c2hvdWxkIHJlcG9ydCBpdHMgbWVtb3J5IGNvc3QgdG8gSlMgZ2FyYmFnZSBjb2xsZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODEzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpa2Ugd2hhdCB3
ZSBkbyBpbiBIVE1MSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkgYnkgcmVwb3J0aW5nIHRo
ZSBtZW1vcnkKKyAgICAgICAgY29zdCBvZiB0aGUgQml0bWFwSW1hZ2UsIHdlIG5lZWQgdG8gZG8g
c29tZXRoaW5nIHNpbWlsYXIgZm9yIHRoZSBTVkdJbWFnZS4gSW4KKyAgICAgICAgU1ZHSW1hZ2U6
OmRhdGFDaGFuZ2UoKSBhbmQgd2hlbiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgd2UgY2FuIGNh
bGN1bGF0ZQorICAgICAgICB0aGUgc2l6ZSBvZiBhbGwgRE9NIG5vZGVzIGFuZCB0aGVpciByZW5k
ZXJlcnMuIFRoZSBzaXplIG9mIHRoZSBlbmNvZGVkIGRhdGEKKyAgICAgICAgaGFzIHRvIGJlIGFk
ZGVkIGFzIHdlbGwgdG8gdGhlIHRvdGFsIG1lbW9yeSBjb3N0LiBBbiBhcHByb3hpbWF0aW9uIGZv
ciB0aGUKKyAgICAgICAgbWVtb3J5IGNvc3QgaGFzIHRvIGJlIHVzZWQgc2luY2UgaXQgaXMgY29z
dGx5IHRvIGdldCBhbiBhY2N1cmF0ZSBudW1iZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRNZW1vcnlGb3JE
b2N1bWVudElmRnJhbWVsZXNzKTogVXNlIE5vZGU6OmFwcHJveGltYXRlTWVtb3J5Q29zdCgpCisg
ICAgICAgIGluc3RlYWQgb2Ygc2l6ZW9mKE5vZGUpLiBBIE5vZGUncyBkZXNjZW5kYW50IGNhbiBv
dmVycmlkZSB0aGlzIGZ1bmN0aW9uIGFuZAorICAgICAgICByZXR1cm4gYSBtb3JlIGFjY3VyYXRl
IG1lbW9yeSBjb3N0LgorICAgICAgICAKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6YXBwcm94aW1hdGVNZW1vcnlDb3N0KTogRGVmaW5lIHRoaXMgbmV3IHZp
cnR1YWwgZnVuY3Rpb24gaW4gdGhlCisgICAgICAgIE5vZGUgY2xhc3MuIEl0cyBkZWZhdWx0IHZh
bHVlIGlzIHNpemVvZihOb2RlKSBidXQgYW55IGRlc2NlbmRhbnQgY2FuIHJldHVybiBhCisgICAg
ICAgIG1vcmUgYWNjdXJhdGUgbnVtYmVyLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRhdGEpOiBEZWZpbmUg
YSBjb25zdCB2ZXJzaW9uIG9mIGRhdGEoKSBzbyBpdCBjYW4gYmUgY2FsbGVkCisgICAgICAgIHRo
ZSBjb25zdCBmdW5jdGlvbiBTVkdJbWFnZTo6cmVwb3J0QXBwcm94aW1hdGVNZW1vcnlDb3N0KCku
CisgICAgICAgIAorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaDogT3ZlcnJpZGUg
YXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgdG8gcmV0dXJuIAorICAgICAgICBzaXplb2YoU1ZHR3Jh
cGhpY3NFbGVtZW50KS4KKyAgICAgICAgCisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjphcHByb3hpbWF0ZU1lbW9yeUNv
c3QpOiBPdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybgorICAgICAgICB0aGUgbWVtb3J5
IGNvc3Qgb2YgdGhlIHBvaW50cyBhbmQgdGhlIG1fcGF0aCBvZiB0aGUgcmVuZGVyZXIuCisgICAg
ICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgIAorICAgICAgICAqIHN2Zy9TVkdQ
b2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YXBwcm94
aW1hdGVNZW1vcnlDb3N0KTogT3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4KKyAgICAg
ICAgdGhlIG1lbW9yeSBjb3N0IG9mIHRoZSBwb2ludHMgYW5kIHRoZSBtX3BhdGggb2YgdGhlIHJl
bmRlcmVyLgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6OnJlcG9ydEFwcHJveGltYXRlTWVtb3J5Q29zdCk6IENhbGN1bGF0ZSB0aGUgbWVtb3J5IGNv
c3Qgb2YgdGhlIAorICAgICAgICBub2RlcyBpbiB0aGUgU1ZHRG9jdW1lbnQgb2YgYW4gU1ZHSW1h
Z2UuIFRoZW4gcmVwb3J0IHRoaXMgbnVtYmVyIHRvIHRoZSBKUyBnYXJiYWdlIAorICAgICAgICBj
b2xsZWN0b3IuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFu
Z2VkKTogQWZ0ZXIgbG9hZGluZyBhbGwgdGhlIFNWRyBlbmNvZGVkIGRhdGEgYW5kIGJ1aWxkaW5n
CisgICAgICAgIGl0cyBET00gdHJlZSBhbmQgdGhlIHJlbmRlciB0cmVlLCByZXBvcnQgdGhlIHRv
dGFsIG1lbW9yeSBjb3N0IHRvIHRoZSBKUyBnYXJiYWdlIGNvbGxlY3Rvci4KKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKwogMjAxNi0wNS0zMSAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlcG9ydEV4dHJh
TWVtb3J5Q29zdCBJREwgYXR0cmlidXRlIHNob3VsZCBhbHNvIGJlIHVzZWQgdG8gZ2VuZXJhdGUg
ZXN0aW1hdGVkU2l6ZSBtZXRob2QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDE0NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODksMTMgKzg5LDEzIEBAIHZvaWQgcmVwb3J0TWVtb3J5Rm9yRG9jdW1lbnRJZkZyYW1lbGVzcygK
ICAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2l6ZV90
IG5vZGVDb3VudCA9IDA7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QgPSAwOwogICAgIGZvciAoTm9k
ZSogbm9kZSA9ICZkb2N1bWVudDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5v
ZGUpKQotICAgICAgICArK25vZGVDb3VudDsKKyAgICAgICAgbWVtb3J5Q29zdCArPSBub2RlLT5h
cHByb3hpbWF0ZU1lbW9yeUNvc3QoKTsKIAogICAgIC8vIEZJWE1FOiBBZG9wdCByZXBvcnRFeHRy
YU1lbW9yeVZpc2l0ZWQsIGFuZCBzd2l0Y2ggdG8gcmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjU5NQot
ICAgIHN0YXRlLmhlYXAoKS0+ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KG5vZGVDb3VudCAq
IHNpemVvZihOb2RlKSk7CisgICAgc3RhdGUuaGVhcCgpLT5kZXByZWNhdGVkUmVwb3J0RXh0cmFN
ZW1vcnkobWVtb3J5Q29zdCk7CiB9CiAKIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnQ+
JiYgZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDIwMTQ3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHNpemVf
dCBhcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiBzaXplb2YoKnRoaXMpOyB9
CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSgpIGNvbnN0OwogICAgIHN0YXRpYyBwdHJk
aWZmX3QgcGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihO
b2RlLCBtX3BhcmVudE5vZGUpOyB9CiAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCgpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lv
biAyMDE0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSkgPSAwOwogCiAgICAg
U2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVk
SW1hZ2VEYXRhLmdldCgpOyB9CiAKICAgICAvLyBBbmltYXRpb24gYmVnaW5zIHdoZW5ldmVyIHNv
bWVvbmUgZHJhd3MgdGhlIGltYWdlLCBzbyBzdGFydEFuaW1hdGlvbigpIGlzIG5vdCBub3JtYWxs
eSBjYWxsZWQuCiAgICAgLy8gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IHBhdXNlIG9uY2UgYWxsIG9i
c2VydmVycyBubyBsb25nZXIgd2FudCB0byByZW5kZXIgdGhlIGltYWdlIGFueXdoZXJlLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAkocmV2aXNpb24gMjAxNDcz
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdG9DbGlwUGF0
aChQYXRoJik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
IAorICAgIHNpemVfdCBhcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzaXplb2YoKnRoaXMpOyB9CisKIHByb3RlY3RlZDoKICAgICBTVkdHcmFwaGljc0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjAxNDczKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYzLDYgKzM2Mywx
NCBAQCBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IFNWCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK3NpemVfdCBTVkdQYXRoRWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlD
b3N0KCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gZm9yIHBhdGgg
bWVtb3J5IGNvc3Qgc2luY2UgdGhlIHBhdGggaXMgcGFyc2VkIG9uIGRlbWFuZC4KKyAgICBzaXpl
X3QgcGF0aE1lbW9yeUNvc3QgPSAobV9wYXRoQnl0ZVN0cmVhbS5zaXplKCkgLyAxMCkgKiBzaXpl
b2YoRmxvYXRQb2ludCk7CisgICAgLy8gV2UgbmVlZCB0byBjb3VudCBmb3IgdGhlIG1lbW9yeSB3
aGljaCBpcyBhbGxvY2F0ZWQgYnkgdGhlIFJlbmRlclNWR1BhdGg6Om1fcGF0aC4KKyAgICByZXR1
cm4gc2l6ZW9mKCp0aGlzKSArIChyZW5kZXJlcigpID8gcGF0aE1lbW9yeUNvc3QgKiAyICsgc2l6
ZW9mKFJlbmRlclNWR1BhdGgpIDogcGF0aE1lbW9yeUNvc3QpOworfQorCiB2b2lkIFNWR1BhdGhF
bGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQoU1ZHUGF0aFNlZ1JvbGUgcm9sZSwgTGlzdE1vZGlm
aWNhdGlvbiBsaXN0TW9kaWZpY2F0aW9uKQogewogICAgIHN3aXRjaCAocm9sZSkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHJldmlzaW9uIDIwMTQ3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiAr
MTAxLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBhbmltYXRlZFByb3BlcnR5V2lsbEJlRGVsZXRl
ZCgpOwogCisgICAgc2l6ZV90IGFwcHJveGltYXRlTWVtb3J5Q29zdCgpIGNvbnN0IG92ZXJyaWRl
OworCiBwcml2YXRlOgogICAgIFNWR1BhdGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDIwMTQ3MykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMCw0ICsxMzAsMTEgQEAgUmVmUHRyPFNWR0xpc3RQcm9wZXJ0
eVRlYXJPZmY8U1ZHUG9pbnRMaQogICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdMaXN0UHJvcGVy
dHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4qPihzdGF0aWNfcmVmZXJlbmNlX2Nhc3Q8U1ZHQW5pbWF0
ZWRQb2ludExpc3Q+KGxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcih0aGlzKSktPmFuaW1WYWwo
KS5nZXQoKSk7CiB9CiAKK3NpemVfdCBTVkdQb2x5RWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlD
b3N0KCkgY29uc3QKK3sKKyAgICBzaXplX3QgcG9pbnRzQ29zdCA9IHBvaW50TGlzdCgpLnNpemUo
KSAqIHNpemVvZihGbG9hdFBvaW50KTsKKyAgICAvLyBXZSBuZWVkIHRvIGNvdW50IGZvciB0aGUg
bWVtb3J5IHdoaWNoIGlzIGFsbG9jYXRlZCBieSB0aGUgUmVuZGVyU1ZHUGF0aDo6bV9wYXRoLgor
ICAgIHJldHVybiBzaXplb2YoKnRoaXMpICsgKHJlbmRlcmVyKCkgPyBwb2ludHNDb3N0ICogMiAr
IHNpemVvZihSZW5kZXJTVkdQYXRoKSA6IHBvaW50c0Nvc3QpOworfQorCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAkocmV2aXNpb24gMjAxNDczKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDgg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogcG9pbnRzUHJv
cGVydHlJbmZvKCk7CiAKKyAgICBzaXplX3QgYXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgY29uc3Qg
b3ZlcnJpZGU7CisKIHByb3RlY3RlZDoKICAgICBTVkdQb2x5RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
U1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyMDE0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiU1ZHSW1hZ2UuaCIKIAogI2luY2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRWxlbWVudEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTM2LDYgKzM3LDcgQEAKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmgiCiAjaW5jbHVkZSAi
TWFpbkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFnZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdSb290LmgiCkBAIC00OCw2ICs1MCw4IEBACiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVu
dC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzUzLDYgKzM1NywyMSBAQCB2b2lkIFNWR0lt
YWdlOjpyZXNldEFuaW1hdGlvbigpCiAgICAgc3RvcEFuaW1hdGlvbigpOwogfQogCit2b2lkIFNW
R0ltYWdlOjpyZXBvcnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdAoreworICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBzaXpl
X3QgZGVjb2RlSW1hZ2VkTWVtb3J5Q29zdCA9IDA7CisKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBk
b2N1bWVudDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKQorICAgICAg
ICBkZWNvZGVJbWFnZWRNZW1vcnlDb3N0ICs9IG5vZGUtPmFwcHJveGltYXRlTWVtb3J5Q29zdCgp
OworCisgICAgSlNDOjpWTSYgdm0gPSBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCk7CisgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9jayh2bSk7CisgICAgLy8gRklYTUU6IEFkb3B0IHJlcG9ydEV4
dHJhTWVtb3J5VmlzaXRlZCwgYW5kIHN3aXRjaCB0byByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRl
ZC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyNTk1
CisgICAgdm0uaGVhcC5kZXByZWNhdGVkUmVwb3J0RXh0cmFNZW1vcnkoZGVjb2RlSW1hZ2VkTWVt
b3J5Q29zdCArIGRhdGEoKS0+c2l6ZSgpKTsKK30KKwogYm9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5n
ZWQoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCiB7CiAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYg
aXMgYW4gZW1wdHkgaW1hZ2UuCkBAIC0zOTMsNiArNDEyLDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0
YUNoYW5nZWQoYm9vbCBhbGxEYXRhUgogCiAgICAgICAgIC8vIFNldCB0aGUgaW50cmluc2ljIHNp
emUgYmVmb3JlIGEgY29udGFpbmVyIHNpemUgaXMgYXZhaWxhYmxlLgogICAgICAgICBtX2ludHJp
bnNpY1NpemUgPSBjb250YWluZXJTaXplKCk7CisgICAgICAgIHJlcG9ydEFwcHJveGltYXRlTWVt
b3J5Q29zdCgpOwogICAgIH0KIAogICAgIHJldHVybiBtX3BhZ2UgIT0gbnVsbHB0cjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5oCShyZXZpc2lvbiAyMDE0NzMpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtODIsNiArODIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXNlc0NvbnRhaW5lclNpemUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgdm9pZCBjb21wdXRlSW50cmluc2lj
RGltZW5zaW9ucyhMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdo
dCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIHJlcG9y
dEFwcHJveGltYXRlTWVtb3J5Q29zdCgpIGNvbnN0OwogICAgIGJvb2wgZGF0YUNoYW5nZWQoYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwogCiAgICAgLy8gRklYTUU6IFNWR0ltYWdlcyB3
aWxsIGJlIHVuYWJsZSB0byBwcnVuZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgbm90IGltcGxl
bWVudGVkIHlldC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280248</attachid>
            <date>2016-06-01 11:01:38 -0700</date>
            <delta_ts>2016-06-01 11:48:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158139-20160601110255.patch</filename>
            <type>text/plain</type>
            <size>10732</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE2LTA1LTMxICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgU1ZHSW1hZ2Ug
c2hvdWxkIHJlcG9ydCBpdHMgbWVtb3J5IGNvc3QgdG8gSlMgZ2FyYmFnZSBjb2xsZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODEzOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExpa2Ugd2hhdCB3
ZSBkbyBpbiBIVE1MSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVkKCkgYnkgcmVwb3J0aW5nIHRo
ZSBtZW1vcnkKKyAgICAgICAgY29zdCBvZiB0aGUgQml0bWFwSW1hZ2UsIHdlIG5lZWQgdG8gZG8g
c29tZXRoaW5nIHNpbWlsYXIgZm9yIHRoZSBTVkdJbWFnZS4gSW4KKyAgICAgICAgU1ZHSW1hZ2U6
OmRhdGFDaGFuZ2UoKSBhbmQgd2hlbiBhbGxEYXRhUmVjZWl2ZWQgaXMgdHJ1ZSwgd2UgY2FuIGNh
bGN1bGF0ZQorICAgICAgICB0aGUgc2l6ZSBvZiBhbGwgRE9NIG5vZGVzIGFuZCB0aGVpciByZW5k
ZXJlcnMuIFRoZSBzaXplIG9mIHRoZSBlbmNvZGVkIGRhdGEKKyAgICAgICAgaGFzIHRvIGJlIGFk
ZGVkIGFzIHdlbGwgdG8gdGhlIHRvdGFsIG1lbW9yeSBjb3N0LiBBbiBhcHByb3hpbWF0aW9uIGZv
ciB0aGUKKyAgICAgICAgbWVtb3J5IGNvc3QgaGFzIHRvIGJlIHVzZWQgc2luY2UgaXQgaXMgY29z
dGx5IHRvIGdldCBhbiBhY2N1cmF0ZSBudW1iZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpyZXBvcnRNZW1vcnlGb3JE
b2N1bWVudElmRnJhbWVsZXNzKTogVXNlIE5vZGU6OmFwcHJveGltYXRlTWVtb3J5Q29zdCgpCisg
ICAgICAgIGluc3RlYWQgb2Ygc2l6ZW9mKE5vZGUpLiBBIE5vZGUncyBkZXNjZW5kYW50IGNhbiBv
dmVycmlkZSB0aGlzIGZ1bmN0aW9uIGFuZAorICAgICAgICByZXR1cm4gYSBtb3JlIGFjY3VyYXRl
IG1lbW9yeSBjb3N0LgorICAgICAgICAKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6YXBwcm94aW1hdGVNZW1vcnlDb3N0KTogRGVmaW5lIHRoaXMgbmV3IHZp
cnR1YWwgZnVuY3Rpb24gaW4gdGhlCisgICAgICAgIE5vZGUgY2xhc3MuIEl0cyBkZWZhdWx0IHZh
bHVlIGlzIHNpemVvZihOb2RlKSBidXQgYW55IGRlc2NlbmRhbnQgY2FuIHJldHVybiBhCisgICAg
ICAgIG1vcmUgYWNjdXJhdGUgbnVtYmVyLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRhdGEpOiBEZWZpbmUg
YSBjb25zdCB2ZXJzaW9uIG9mIGRhdGEoKSBzbyBpdCBjYW4gYmUgY2FsbGVkCisgICAgICAgIHRo
ZSBjb25zdCBmdW5jdGlvbiBTVkdJbWFnZTo6cmVwb3J0QXBwcm94aW1hdGVNZW1vcnlDb3N0KCku
CisgICAgICAgIAorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaDogT3ZlcnJpZGUg
YXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgdG8gcmV0dXJuIAorICAgICAgICBzaXplb2YoU1ZHR3Jh
cGhpY3NFbGVtZW50KS4KKyAgICAgICAgCisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjphcHByb3hpbWF0ZU1lbW9yeUNv
c3QpOiBPdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIHJldHVybgorICAgICAgICB0aGUgbWVtb3J5
IGNvc3Qgb2YgdGhlIHBvaW50cyBhbmQgdGhlIG1fcGF0aCBvZiB0aGUgcmVuZGVyZXIuCisgICAg
ICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgIAorICAgICAgICAqIHN2Zy9TVkdQ
b2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6YXBwcm94
aW1hdGVNZW1vcnlDb3N0KTogT3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4KKyAgICAg
ICAgdGhlIG1lbW9yeSBjb3N0IG9mIHRoZSBwb2ludHMgYW5kIHRoZSBtX3BhdGggb2YgdGhlIHJl
bmRlcmVyLgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5oOgorICAgICAgICAKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6OnJlcG9ydEFwcHJveGltYXRlTWVtb3J5Q29zdCk6IENhbGN1bGF0ZSB0aGUgbWVtb3J5IGNv
c3Qgb2YgdGhlIAorICAgICAgICBub2RlcyBpbiB0aGUgU1ZHRG9jdW1lbnQgb2YgYW4gU1ZHSW1h
Z2UuIFRoZW4gcmVwb3J0IHRoaXMgbnVtYmVyIHRvIHRoZSBKUyBnYXJiYWdlIAorICAgICAgICBj
b2xsZWN0b3IuCisgICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRhdGFDaGFu
Z2VkKTogQWZ0ZXIgbG9hZGluZyBhbGwgdGhlIFNWRyBlbmNvZGVkIGRhdGEgYW5kIGJ1aWxkaW5n
CisgICAgICAgIGl0cyBET00gdHJlZSBhbmQgdGhlIHJlbmRlciB0cmVlLCByZXBvcnQgdGhlIHRv
dGFsIG1lbW9yeSBjb3N0IHRvIHRoZSBKUyBnYXJiYWdlIGNvbGxlY3Rvci4KKyAgICAgICAgKiBz
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaDoKKwogMjAxNi0wNS0zMSAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlcG9ydEV4dHJh
TWVtb3J5Q29zdCBJREwgYXR0cmlidXRlIHNob3VsZCBhbHNvIGJlIHVzZWQgdG8gZ2VuZXJhdGUg
ZXN0aW1hdGVkU2l6ZSBtZXRob2QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RG9jdW1lbnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAyMDE0NzMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODksMTMgKzg5LDEzIEBAIHZvaWQgcmVwb3J0TWVtb3J5Rm9yRG9jdW1lbnRJZkZyYW1lbGVzcygK
ICAgICBpZiAoZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2l6ZV90
IG5vZGVDb3VudCA9IDA7CisgICAgc2l6ZV90IG1lbW9yeUNvc3QgPSAwOwogICAgIGZvciAoTm9k
ZSogbm9kZSA9ICZkb2N1bWVudDsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5v
ZGUpKQotICAgICAgICArK25vZGVDb3VudDsKKyAgICAgICAgbWVtb3J5Q29zdCArPSBub2RlLT5h
cHByb3hpbWF0ZU1lbW9yeUNvc3QoKTsKIAogICAgIC8vIEZJWE1FOiBBZG9wdCByZXBvcnRFeHRy
YU1lbW9yeVZpc2l0ZWQsIGFuZCBzd2l0Y2ggdG8gcmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQu
CiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjU5NQot
ICAgIHN0YXRlLmhlYXAoKS0+ZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KG5vZGVDb3VudCAq
IHNpemVvZihOb2RlKSk7CisgICAgc3RhdGUuaGVhcCgpLT5kZXByZWNhdGVkUmVwb3J0RXh0cmFN
ZW1vcnkobWVtb3J5Q29zdCk7CiB9CiAKIEpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3Rh
dGUqIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8RG9jdW1lbnQ+
JiYgZG9jdW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHJldmlzaW9uIDIwMTQ3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw2ICsxNDMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZVZhbHVlKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHNldE5vZGVWYWx1ZShjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHNpemVf
dCBhcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdCB7IHJldHVybiBzaXplb2YoKnRoaXMpOyB9
CiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSgpIGNvbnN0OwogICAgIHN0YXRpYyBwdHJk
aWZmX3QgcGFyZW50Tm9kZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihO
b2RlLCBtX3BhcmVudE5vZGUpOyB9CiAgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCgpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCShyZXZpc2lv
biAyMDE0NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkZXN0cm95RGVjb2RlZERhdGEoYm9vbCBkZXN0cm95QWxsID0gdHJ1ZSkgPSAwOwogCiAgICAg
U2hhcmVkQnVmZmVyKiBkYXRhKCkgeyByZXR1cm4gbV9lbmNvZGVkSW1hZ2VEYXRhLmdldCgpOyB9
CisgICAgY29uc3QgU2hhcmVkQnVmZmVyKiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVk
SW1hZ2VEYXRhLmdldCgpOyB9CiAKICAgICAvLyBBbmltYXRpb24gYmVnaW5zIHdoZW5ldmVyIHNv
bWVvbmUgZHJhd3MgdGhlIGltYWdlLCBzbyBzdGFydEFuaW1hdGlvbigpIGlzIG5vdCBub3JtYWxs
eSBjYWxsZWQuCiAgICAgLy8gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IHBhdXNlIG9uY2UgYWxsIG9i
c2VydmVycyBubyBsb25nZXIgd2FudCB0byByZW5kZXIgdGhlIGltYWdlIGFueXdoZXJlLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuaAkocmV2aXNpb24gMjAxNDcz
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdG9DbGlwUGF0
aChQYXRoJik7CiAgICAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnRSZW5k
ZXJlcihSZW5kZXJTdHlsZSYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsK
IAorICAgIHNpemVfdCBhcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiBzaXplb2YoKnRoaXMpOyB9CisKIHByb3RlY3RlZDoKICAgICBTVkdHcmFwaGljc0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMjAxNDczKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYzLDYgKzM2Mywx
NCBAQCBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmY+IFNWCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKK3NpemVfdCBTVkdQYXRoRWxlbWVudDo6YXBwcm94aW1hdGVNZW1vcnlD
b3N0KCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGlzIGFuIGFwcHJveGltYXRpb24gZm9yIHBhdGgg
bWVtb3J5IGNvc3Qgc2luY2UgdGhlIHBhdGggaXMgcGFyc2VkIG9uIGRlbWFuZC4KKyAgICBzaXpl
X3QgcGF0aE1lbW9yeUNvc3QgPSAobV9wYXRoQnl0ZVN0cmVhbS5zaXplKCkgLyAxMCkgKiBzaXpl
b2YoRmxvYXRQb2ludCk7CisgICAgLy8gV2UgbmVlZCB0byBhY2NvdW50IGZvciB0aGUgbWVtb3J5
IHdoaWNoIGlzIGFsbG9jYXRlZCBieSB0aGUgUmVuZGVyU1ZHUGF0aDo6bV9wYXRoLgorICAgIHJl
dHVybiBzaXplb2YoKnRoaXMpICsgKHJlbmRlcmVyKCkgPyBwYXRoTWVtb3J5Q29zdCAqIDIgKyBz
aXplb2YoUmVuZGVyU1ZHUGF0aCkgOiBwYXRoTWVtb3J5Q29zdCk7Cit9CisKIHZvaWQgU1ZHUGF0
aEVsZW1lbnQ6OnBhdGhTZWdMaXN0Q2hhbmdlZChTVkdQYXRoU2VnUm9sZSByb2xlLCBMaXN0TW9k
aWZpY2F0aW9uIGxpc3RNb2RpZmljYXRpb24pCiB7CiAgICAgc3dpdGNoIChyb2xlKSB7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAkocmV2aXNpb24gMjAxNDczKQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2
ICsxMDEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFuaW1hdGVkUHJvcGVydHlXaWxsQmVEZWxl
dGVkKCk7CiAKKyAgICBzaXplX3QgYXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgY29uc3Qgb3ZlcnJp
ZGU7CisKIHByaXZhdGU6CiAgICAgU1ZHUGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAko
cmV2aXNpb24gMjAxNDczKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDQgKzEzMCwxMSBAQCBSZWZQdHI8U1ZHTGlzdFByb3Bl
cnR5VGVhck9mZjxTVkdQb2ludExpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0xpc3RQcm9w
ZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0Pio+KHN0YXRpY19yZWZlcmVuY2VfY2FzdDxTVkdBbmlt
YXRlZFBvaW50TGlzdD4obG9va3VwT3JDcmVhdGVQb2ludHNXcmFwcGVyKHRoaXMpKS0+YW5pbVZh
bCgpLmdldCgpKTsKIH0KIAorc2l6ZV90IFNWR1BvbHlFbGVtZW50OjphcHByb3hpbWF0ZU1lbW9y
eUNvc3QoKSBjb25zdAoreworICAgIHNpemVfdCBwb2ludHNDb3N0ID0gcG9pbnRMaXN0KCkuc2l6
ZSgpICogc2l6ZW9mKEZsb2F0UG9pbnQpOworICAgIC8vIFdlIG5lZWQgdG8gYWNjb3VudCBmb3Ig
dGhlIG1lbW9yeSB3aGljaCBpcyBhbGxvY2F0ZWQgYnkgdGhlIFJlbmRlclNWR1BhdGg6Om1fcGF0
aC4KKyAgICByZXR1cm4gc2l6ZW9mKCp0aGlzKSArIChyZW5kZXJlcigpID8gcG9pbnRzQ29zdCAq
IDIgKyBzaXplb2YoUmVuZGVyU1ZHUGF0aCkgOiBwb2ludHNDb3N0KTsKK30KKwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgJKHJldmlzaW9uIDIwMTQ3MykKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIHBvaW50
c1Byb3BlcnR5SW5mbygpOwogCisgICAgc2l6ZV90IGFwcHJveGltYXRlTWVtb3J5Q29zdCgpIGNv
bnN0IG92ZXJyaWRlOworCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHUG9seUVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9TVkdJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAkocmV2aXNpb24gMjAxNDczKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIlNWR0ltYWdlLmgiCiAKICNpbmNsdWRlICJDaHJvbWUuaCIKKyNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkVsZW1l
bnRJdGVyYXRvci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkBAIC0zNiw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2luY2x1
ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHUm9vdC5oIgpAQCAtNDgsNiArNTAsOCBAQAogI2luY2x1ZGUgIlNWR1NWR0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIK
KyNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM1Myw2ICszNTcsMjEgQEAgdm9pZCBT
VkdJbWFnZTo6cmVzZXRBbmltYXRpb24oKQogICAgIHN0b3BBbmltYXRpb24oKTsKIH0KIAordm9p
ZCBTVkdJbWFnZTo6cmVwb3J0QXBwcm94aW1hdGVNZW1vcnlDb3N0KCkgY29uc3QKK3sKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CisgICAg
c2l6ZV90IGRlY29kZWRJbWFnZU1lbW9yeUNvc3QgPSAwOworCisgICAgZm9yIChOb2RlKiBub2Rl
ID0gZG9jdW1lbnQ7IG5vZGU7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlKSkKKyAg
ICAgICAgZGVjb2RlZEltYWdlTWVtb3J5Q29zdCArPSBub2RlLT5hcHByb3hpbWF0ZU1lbW9yeUNv
c3QoKTsKKworICAgIEpTQzo6Vk0mIHZtID0gSlNET01XaW5kb3dCYXNlOjpjb21tb25WTSgpOwor
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sodm0pOworICAgIC8vIEZJWE1FOiBBZG9wdCByZXBv
cnRFeHRyYU1lbW9yeVZpc2l0ZWQsIGFuZCBzd2l0Y2ggdG8gcmVwb3J0RXh0cmFNZW1vcnlBbGxv
Y2F0ZWQuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
MjU5NQorICAgIHZtLmhlYXAuZGVwcmVjYXRlZFJlcG9ydEV4dHJhTWVtb3J5KGRlY29kZWRJbWFn
ZU1lbW9yeUNvc3QgKyBkYXRhKCktPnNpemUoKSk7Cit9CisKIGJvb2wgU1ZHSW1hZ2U6OmRhdGFD
aGFuZ2VkKGJvb2wgYWxsRGF0YVJlY2VpdmVkKQogewogICAgIC8vIERvbid0IGRvIGFueXRoaW5n
IGlmIGlzIGFuIGVtcHR5IGltYWdlLgpAQCAtMzkzLDYgKzQxMiw3IEBAIGJvb2wgU1ZHSW1hZ2U6
OmRhdGFDaGFuZ2VkKGJvb2wgYWxsRGF0YVIKIAogICAgICAgICAvLyBTZXQgdGhlIGludHJpbnNp
YyBzaXplIGJlZm9yZSBhIGNvbnRhaW5lciBzaXplIGlzIGF2YWlsYWJsZS4KICAgICAgICAgbV9p
bnRyaW5zaWNTaXplID0gY29udGFpbmVyU2l6ZSgpOworICAgICAgICByZXBvcnRBcHByb3hpbWF0
ZU1lbW9yeUNvc3QoKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9wYWdlICE9IG51bGxwdHI7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuaAkocmV2aXNpb24gMjAxNDcz
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyLDYgKzgyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIHVzZXNDb250YWluZXJTaXpl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgY29tcHV0ZUludHJp
bnNpY0RpbWVuc2lvbnMoTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNI
ZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIG92ZXJyaWRlOwogCisgICAgdm9pZCBy
ZXBvcnRBcHByb3hpbWF0ZU1lbW9yeUNvc3QoKSBjb25zdDsKICAgICBib29sIGRhdGFDaGFuZ2Vk
KGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZTsKIAogICAgIC8vIEZJWE1FOiBTVkdJbWFn
ZXMgd2lsbCBiZSB1bmFibGUgdG8gcHJ1bmUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBp
bXBsZW1lbnRlZCB5ZXQuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>