<?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>145380</bug_id>
          
          <creation_ts>2015-05-26 08:51:50 -0700</creation_ts>
          <short_desc>Add Content-DPR header support</short_desc>
          <delta_ts>2022-11-08 02:36:45 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212405</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="Yoav Weiss">yoav</reporter>
          <assigned_to name="Noam Rosenthal">noam</assigned_to>
          <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>colin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>igrigorik</cc>
    
    <cc>japhet</cc>
    
    <cc>jfernandez</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mitz</cc>
    
    <cc>mjs</cc>
    
    <cc>mnot</cc>
    
    <cc>nicolas</cc>
    
    <cc>noam</cc>
    
    <cc>pdr</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>rniwa</cc>
    
    <cc>steven</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1097315</commentid>
    <comment_count>0</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2015-05-26 08:51:50 -0700</bug_when>
    <thetext>Add Content-DPR header support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097318</commentid>
    <comment_count>1</comment_count>
      <attachid>253706</attachid>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2015-05-26 09:08:10 -0700</bug_when>
    <thetext>Created attachment 253706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097319</commentid>
    <comment_count>2</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2015-05-26 09:14:48 -0700</bug_when>
    <thetext>This is the first patch in the implementation of Client-Hints, but is also also useful in the context of srcset alone.

It implements &quot;Content-DPR&quot; response header support, so that the server can impact the intrinsic dimensions of the displayed image.

That enables automatic image resizing without taking into account whether the image has CSS dimensions or not. (and therefore enables automatic image resizing without the risk of breaking layout)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097589</commentid>
    <comment_count>3</comment_count>
      <attachid>253706</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-26 22:20:38 -0700</bug_when>
    <thetext>Comment on attachment 253706
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Spec: http://igrigorik.github.io/http-client-hints/#confirming-selected-dpr

Which value wins when Content-DPR doesn&apos;t agree with image&apos;s internal metadata?

I thought that most formats had that already, making duplication of the same functionality in HTTP harmful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097608</commentid>
    <comment_count>4</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2015-05-27 00:10:15 -0700</bug_when>
    <thetext>The image&apos;s internal meta data determines the initial image dimensions, and then Content-DPR (Just like srcset&apos;s x or w descriptors) determine the image density which then scales the original intrinsic dimensions up or down.

So Content-DPR doesn&apos;t override the image&apos;s meta data but complements it. It does OTOH override srcset&apos;s descriptors, in case they were used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097643</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-27 09:45:39 -0700</bug_when>
    <thetext>What is image density then? I assumed that you were talking about dpi/ppi, but that&apos;s internal image metadata. It is already known without http headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097857</commentid>
    <comment_count>6</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2015-05-28 00:09:22 -0700</bug_when>
    <thetext>If you are referring to the density info that images contain (e.g. http://www.w3.org/TR/PNG/#11pHYs and the Xdensity, Ydensity in JFIF&apos;s APP0 marker), these seem to be largely ignored by both browsers and desktop image viewers, which means we cannot start supporting them without breaking content. 
Also, since the same image can be served in different width &amp; density combinations, I&apos;d say baking this info into the image is not ideal. (e.g. a 600px wide image that is displayed over the entire viewport can be served to a 1x, 600px wide screen or to a 2x, 300px wide screen)

FWIW, the header we&apos;re discussing here does the same thing that srcset&apos;s descriptors are already doing in markup across all modern browsers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097866</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-28 01:18:50 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; If you are referring to the density info that images contain (e.g.
&gt; http://www.w3.org/TR/PNG/#11pHYs and the Xdensity, Ydensity in JFIF&apos;s APP0
&gt; marker), these seem to be largely ignored by both browsers and desktop image
&gt; viewers, which means we cannot start supporting them without breaking
&gt; content. 

What is the specific case that concerns you? Browsers ignore the Content-DPR header field too.

&gt; Also, since the same image can be served in different width &amp; density
&gt; combinations, I&apos;d say baking this info into the image is not ideal. (e.g. a
&gt; 600px wide image that is displayed over the entire viewport can be served to
&gt; a 1x, 600px wide screen or to a 2x, 300px wide screen)

What is the use case for that? One can just use CSS to stretch to 100%.

&gt; FWIW, the header we&apos;re discussing here does the same thing that srcset&apos;s
&gt; descriptors are already doing in markup across all modern browsers.

This also sounds like an argument against it. The distinction between markup and transport layer data is intentional, and when there are multiple ways to achieve the same thing, that invariably causes complications.

This is like the Munchkin game - game rules say one thing, text on a card says another, someone plays a card that reverses all the rules, and conflicts are officially resolved by who yells the loudest... It&apos;s fun, but why would anyone want browsers to work like that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097869</commentid>
    <comment_count>8</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2015-05-28 01:36:46 -0700</bug_when>
    <thetext>&gt; What is the specific case that concerns you? Browsers ignore the Content-DPR header field too.

If browsers would start taking the density data images have integrated into account now, current images (that have that data set to something) would have the wrong intrinsic dimensions, and current content which layout depends on image intrinsic dimensions would break, without any opt-in signals from the content&apos;s author.

Now, browsers also ignore the Content-DPR header, but since there&apos;s practically zero existing content out there with that header, that&apos;s not an issue. The Content-DPR header would be an opt-in signal for the browser to take the provided density into account.

&gt; What is the use case for that? One can just use CSS to stretch to 100%.

Yes, CSS overrides intrinsic dimensions. That doesn&apos;t mean that intrinsic dimensions are not useful when CSS is missing (because the image was accessed directly, or because the author didn&apos;t bother, which happens quite often).

&gt; This also sounds like an argument against it. The distinction between markup and transport layer data is intentional, and when there are multiple ways to achieve the same thing, that invariably causes complications.

Which complications would this cause? The relationship here between srcset and the Content-DPR header is well defined. srcset&apos;s descriptor is applied, unless the server-side have overridden it, using Content-DPR.

That enables automatic image resizing (with either srcset or Client-Hints) without taking styling info into account, which adds significant complexity. Content-DPR enables the server-side to adapt the intrinsic dimensions to those of the original image, so that if layout relies on them, it will not break.

&gt; This is like the Munchkin game - game rules say one thing, text on a card says another, someone plays a card that reverses all the rules, and conflicts are officially resolved by who yells the loudest... It&apos;s fun, but why would anyone want browsers to work like that?

I&apos;m not familiar with that game.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097903</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-28 09:56:55 -0700</bug_when>
    <thetext>&gt; If browsers would start taking the density data images have integrated into account now, current images (that have that data set to something) would have the wrong intrinsic dimensions, and current content which layout depends on image intrinsic dimensions would break, without any opt-in signals from the content&apos;s author.

This is a lot easier to resolve by adding an opt-in in HTML that would tell the engine to respect image dpi.

Adding such a signal at transport level does not make sense, it&apos;s not a feature of transport. Doing this would cause conflicts with loading infrastructure - http caches, appcache, blobs, service workers all need to be analyzed for potential issues, and for impact on future design directions, which is not an easy thing to do. Some of these may be OK, but others certainly aren&apos;t, notably, one can&apos;t add Content-DPR to a Blob.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097906</commentid>
    <comment_count>10</comment_count>
      <attachid>253706</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-05-28 10:23:04 -0700</bug_when>
    <thetext>Comment on attachment 253706
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:9
&gt;&gt; +        Spec: http://igrigorik.github.io/http-client-hints/#confirming-selected-dpr
&gt; 
&gt; Which value wins when Content-DPR doesn&apos;t agree with image&apos;s internal metadata?
&gt; 
&gt; I thought that most formats had that already, making duplication of the same functionality in HTTP harmful.

&quot;In case the server returned Content-DPR value contradicts previous client-side DPR indication, the server returned value must take precedence.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1097996</commentid>
    <comment_count>11</comment_count>
    <who name="Ilya Grigorik">igrigorik</who>
    <bug_when>2015-05-28 16:13:50 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; If browsers would start taking the density data images have integrated into account now, current images (that have that data set to something) would have the wrong intrinsic dimensions, and current content which layout depends on image intrinsic dimensions would break, without any opt-in signals from the content&apos;s author.
&gt; 
&gt; This is a lot easier to resolve by adding an opt-in in HTML that would tell
&gt; the engine to respect image dpi.

That would require that *all* images on the page contain correct values: if any image has this data missing, or is embedding incorrect values, then they would be rendered incorrectly. This is a non-starter given the vast volume of existing image content on the web that may or may not already have this metadata on it.. and much of which is not controlled by the origin that would enable this flag. You would have to introduce an entirely new (and consistent across all image formats) field, such that we can guarantee that its presence is a clear opt-in indicator that the display density should be adapted; we can&apos;t --safely-- piggyback on existing fields for this purpose.

Further, as Yoav already pointed out, the same image can be served for different width &amp; density combinations.. which means that your HTTP server would now need to be able to read/write image meta-data on the fly, as opposed to writing out a simple response header -- first is expensive (read/modify image header) and requires new capability in each server, second is cheap, simple, and works on every existing server.

Last but not least, &quot;width: 100%&quot; is not a solution.. There are many cases where the display size is determined by the image itself, not by some outside container or explicit width value on it -- this is a valid and very common use case on the web (e.g. viewing image URL directly). In order for such images to be displayed correctly, we need an explicit &quot;intended DPR&quot; signal on the response.

In short, (1) the density opt-in needs to be per image, not per document (this breaks down for direct image view also), (2) it has to be &quot;safe&quot;, (3) it needs to be cheap to generate at response time by the server, (4) we can&apos;t rely on developer-provided width / container width. As a result, the combination of all of these is, I believe, best met by the proposed Content-DPR response header.

&gt; Adding such a signal at transport level does not make sense, it&apos;s not a
&gt; feature of transport. Doing this would cause conflicts with loading
&gt; infrastructure - http caches, appcache, blobs, service workers all need to
&gt; be analyzed for potential issues, and for impact on future design
&gt; directions, which is not an easy thing to do. 

This is not true, there are no conflicts here, we&apos;re talking about simple content negotiation [1] that has well established mechanisms: client advertises its capabilities via request headers; server selects optimal response variant based on provided request fields; server advertises properties of the response that dictate how it should be cached and processed by the client and any intermediaries. This is robust, widely used (e.g. gzip, format negotiation, etc), and nothing new.

[1] http://httpwg.github.io/specs/rfc7231.html#content.negotiation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098032</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-28 17:32:46 -0700</bug_when>
    <thetext>&gt; That would require that *all* images on the page contain correct values

As you acknowledge later, there is no problem when opt-in is per image (or per class when specified in CSS).

&gt; Further, as Yoav already pointed out, the same image can be served for different width &amp; density combinations

The best way to handle that is via HTML/CSS sizing.

&gt; we&apos;re talking about simple content negotiation

Content negotiation has been a huge failure on the Web, it just doesn&apos;t work. This is pretty well established common knowledge, which matches my experience too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098078</commentid>
    <comment_count>13</comment_count>
    <who name="Ilya Grigorik">igrigorik</who>
    <bug_when>2015-05-28 22:20:26 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; That would require that *all* images on the page contain correct values
&gt; 
&gt; As you acknowledge later, there is no problem when opt-in is per image (or
&gt; per class when specified in CSS).
&gt;
&gt; &gt; Further, as Yoav already pointed out, the same image can be served for different width &amp; density combinations
&gt; 
&gt; The best way to handle that is via HTML/CSS sizing.

For both of the above comments, we can&apos;t rely on HTML/CSS sizing as &quot;best&quot; or only solution: both are optional and we need a solution that works for cases where neither is specified. Case in point, if I&apos;m opening a direct link to the image, I expect it to be displayed correctly, and there is no HTML or CSS context there.. We need the client to advertise its desired DPR and server to confirm what is has provided.
 
&gt; &gt; we&apos;re talking about simple content negotiation
&gt; 
&gt; Content negotiation has been a huge failure on the Web, it just doesn&apos;t
&gt; work. This is pretty well established common knowledge, which matches my
&gt; experience too.

That&apos;s not true. Yes, there are cases where content negotiation was proposed for certain use cases but failed to gain adoption for various reasons, but this does not imply that the underlying mechanism is &quot;broken&quot;. You&apos;re successfully using it to negotiate gzip&apos;ed versions of text assets on this very page; it&apos;s being used (very successfully) to negotiate and deliver various new image formats (e.g. WebP, JPEG-XR), and so on. It works.

Stepping back.. the intent here is to help developers automate delivery of images. Markup based solutions are good to have, but there is no reason to force developers to write unnecessary boilerplate where client and server can use well-established mechanisms to do this on their behalf (and markup has its own limitations, as noted above). Better, automation + content-negotiation allows us to deliver an improved experience to all existing content without any code modifications - e.g. existing &lt;img src=..&gt; tags become DPR-aware without any changes. This is a win on all sides.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098081</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-28 22:36:08 -0700</bug_when>
    <thetext>&gt; Case in point, if I&apos;m opening a direct link to the image

Standalone images are a rare case, and it is always possible to solve any problems with those by embedding them in an HTML document. We do not need to add complicated features to the platform to enable silly approaches - making every possible silly approach fixable at some other level is not the goal.

Yes, it is always possible to advocate for addition of features with theoretical &quot;what ifs&quot; like this one, but new features should solve real problems, not provide an umpteenth way to solve a problem that&apos;s already solved.

&gt; You&apos;re successfully using it to negotiate gzip&apos;ed versions of text assets on this very page;

This is a transport level feature, so it is implemented at the correct level. There is no content negotiation going on in this case.

&gt; it&apos;s being used (very successfully) to negotiate and deliver various new image formats (e.g. WebP, JPEG-XR), and so on. It works.

This is surprising if true. Negotiation of HTML vs. XHTML was a tragic failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098432</commentid>
    <comment_count>15</comment_count>
    <who name="Mark Nottingham">mnot</who>
    <bug_when>2015-05-31 18:20:30 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; Case in point, if I&apos;m opening a direct link to the image
&gt; 
&gt; Standalone images are a rare case, and it is always possible to solve any
&gt; problems with those by embedding them in an HTML document. We do not need to
&gt; add complicated features to the platform to enable silly approaches - making
&gt; every possible silly approach fixable at some other level is not the goal.

You called the proposal &quot;silly&quot; twice in the same sentence -- is that really necessary? 
 
&gt; Yes, it is always possible to advocate for addition of features with
&gt; theoretical &quot;what ifs&quot; like this one, but new features should solve real
&gt; problems, not provide an umpteenth way to solve a problem that&apos;s already
&gt; solved.

Content-DPR is a big win for servers and services that want to support responsive images without modifying HTML/CSS. Modifying response bodies has a server-side performance hit, and also introduces bugs. 

Talking to various teams that work on Web Performance Optimisation products, this is very much a real problem; perhaps it&apos;s just not as visible to you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1098454</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-05-31 23:38:51 -0700</bug_when>
    <thetext>&gt; You called the proposal &quot;silly&quot; twice in the same sentence -- is that really necessary? 

Thank you for educating me about manners, but you misread the comment. What is silly is the idea that one should add features to browsing engines that enable changing layout via HTTP header fields, not the specific proposal for how to do that.

&gt; Modifying response bodies has a server-side performance hit, and also introduces bugs.

You don&apos;t have to modify HTML on the fly, it can be simply written to support multiple image resolutions (like authors already do it today).

We had nearly exactly identical ideas implemented before, and the results were not pretty. The implementations continue to pollute the web platform long after they became unnecessary.

Perhaps the closest historic analogy is text re-encoding, where a dumb browser could only support one charset, and then the server - or even a proxy - would re-encode text/* responses, also changing Content-Type to include the updated charset (updating the charset inside HTML would have had a performance hit, and would have introduced bugs). The right short-term answer was of course to have browsers support multiple encodings, and it was implemented nearly immediately - but the consequences of an HTTP level solution still complicate our lives through convoluted rules for charset selection in text/* vs. application/* content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1099572</commentid>
    <comment_count>17</comment_count>
    <who name="Ilya Grigorik">igrigorik</who>
    <bug_when>2015-06-04 12:56:22 -0700</bug_when>
    <thetext>&gt; Standalone images are a rare case, and it is always possible to solve any problems with those by embedding them in an HTML document.

Do you have data on &quot;rare&quot;? I expect the browser to behave correctly when I open an image in it, and its not unusual for users to share direct image links. My server can&apos;t magically wrap every direct image request (unknowable property since we can&apos;t count on Referrer) into an HTML document with appropriate size markup such that its displayed at correct resolution.

&gt; We had nearly exactly identical ideas implemented before, and the results were not pretty. The implementations continue to pollute the web platform long after they became unnecessary.

Are you referring to images in particular? If so, what were those ideas and what were the results?

Last but not least, the fact that a markup solution is available (with known limitations, as described above) is not an argument that automation is unnecessary or not desired. We don&apos;t force iOS or Android developers to enumerate every resolution variant when an image is used -- both platforms rely on naming conventions to avoid exactly this pain. DPR request header + Content-DPR response header confirmation is the equivalent for web developers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300816</commentid>
    <comment_count>18</comment_count>
      <attachid>253706</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-04-24 19:07:17 -0700</bug_when>
    <thetext>Comment on attachment 253706
Patch

This patch has been pending review since 2015 with no recent activity.
It seems unlikely that it would even still apply to trunk in its current form.

Clearing from the review queue.

Feel free to update and resubmit if the patch is still relevant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585342</commentid>
    <comment_count>19</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-10-30 07:23:10 -0700</bug_when>
    <thetext>I am taking this bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585343</commentid>
    <comment_count>20</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-10-30 07:23:57 -0700</bug_when>
    <thetext>I am taking this bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585347</commentid>
    <comment_count>21</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2019-10-30 07:35:25 -0700</bug_when>
    <thetext>Thanks for picking this up! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585843</commentid>
    <comment_count>22</comment_count>
      <attachid>382445</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-10-31 03:52:55 -0700</bug_when>
    <thetext>Created attachment 382445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585847</commentid>
    <comment_count>23</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-10-31 04:02:38 -0700</bug_when>
    <thetext>I&apos;ve submitted a new patch.
I saw that there was some contention about this patch back in 2015, I tried to address it in the change log.

Since the time of this discussion, the content-dpr header has landed in chromium and is used in production by CDN providers for what it was intended for, allowing the image pixel size to be different from the image intrinsic size for layout by allowing image providers/delivery-mechanisms to tell the user agents which density (DPR) is used in the image.

In some cases, for example, it lets CDNs serve a lower quality image when higher network latency is detected/projected, without the risk that that lower-quality image will break layout due to a different intrinsic size. That&apos;s a cheap win for performance and user experience, since it doesn&apos;t require web authors to change anything - the work required is minor changes by the user agents (this patch for example) and image delivery networks.

If there is still no consensus about it I would like to open the discussion to involve more people, and I&apos;ll switch over to @webkit-dev. There&apos;s also an option to put in the patch with a runtime feature-flag and experiment with it. Otherwise, I would love to receive some comments on the actual patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586017</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-31 12:37:18 -0700</bug_when>
    <thetext>The recent thinking about client hints in general is that it adds new fingerprinting surface to tracking pixels. Those 1px images typically don&apos;t get to run JS so the amount of information it can gather is limited. With this feature, it can gather extra bit of information, and a lot more with other client hints.

For these things, client hints including but not limited to Content-DPR header is not something Apple&apos;s WebKit is interested in implementing at this point in time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586019</commentid>
    <comment_count>25</comment_count>
      <attachid>382445</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-31 12:37:51 -0700</bug_when>
    <thetext>Comment on attachment 382445
Patch

This clearly needs a feature flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586031</commentid>
    <comment_count>26</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-10-31 12:59:36 -0700</bug_when>
    <thetext>There is definitely no consensus. Image resolution is not a transport level feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586192</commentid>
    <comment_count>27</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-10-31 18:33:26 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #24)
&gt; The recent thinking about client hints in general is that it adds new
&gt; fingerprinting surface to tracking pixels. Those 1px images typically don&apos;t
&gt; get to run JS so the amount of information it can gather is limited. With
&gt; this feature, it can gather extra bit of information, and a lot more with
&gt; other client hints.
&gt; 
&gt; For these things, client hints including but not limited to Content-DPR
&gt; header is not something Apple&apos;s WebKit is interested in implementing at this
&gt; point in time.

Content-DPR in its current form, unlike client hints, doesn&apos;t send any request headers. Am I missing something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586200</commentid>
    <comment_count>28</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-10-31 19:00:22 -0700</bug_when>
    <thetext>(In reply to Noam Rosenthal from comment #27)
&gt; (In reply to Ryosuke Niwa from comment #24)
&gt; &gt; The recent thinking about client hints in general is that it adds new
&gt; &gt; fingerprinting surface to tracking pixels. Those 1px images typically don&apos;t
&gt; &gt; get to run JS so the amount of information it can gather is limited. With
&gt; &gt; this feature, it can gather extra bit of information, and a lot more with
&gt; &gt; other client hints.
&gt; &gt; 
&gt; &gt; For these things, client hints including but not limited to Content-DPR
&gt; &gt; header is not something Apple&apos;s WebKit is interested in implementing at this
&gt; &gt; point in time.
&gt; 
&gt; Content-DPR in its current form, unlike client hints, doesn&apos;t send any
&gt; request headers. Am I missing something?

Oh, I see. Yeah, this is slightly different because the header is in the response. We probably need to do a separate privacy review of this feature and see if it poses a new threat.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586312</commentid>
    <comment_count>29</comment_count>
      <attachid>382569</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-11-01 03:30:40 -0700</bug_when>
    <thetext>Created attachment 382569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586313</commentid>
    <comment_count>30</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-11-01 03:31:25 -0700</bug_when>
    <thetext>New patch protects this feature behind a settings flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586314</commentid>
    <comment_count>31</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-11-01 03:32:12 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #28)
&gt; We probably need to do a separate privacy review of this feature
&gt; and see if it poses a new threat.

Cool, what is required for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1586826</commentid>
    <comment_count>32</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2019-11-03 02:34:12 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #24)
&gt; The recent thinking about client hints in general is that it adds new
&gt; fingerprinting surface to tracking pixels. Those 1px images typically don&apos;t
&gt; get to run JS so the amount of information it can gather is limited. With
&gt; this feature, it can gather extra bit of information, and a lot more with
&gt; other client hints.
&gt; 

That used to be true, but that is no longer the case, according to the latest PRs [1]

Feature Policy is now used to control which hints can and cannot be delegated to third parties.


[1] https://github.com/yoavweiss/client-hints-infrastructure/blob/master/specification_situation.md</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587133</commentid>
    <comment_count>33</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2019-11-04 13:41:18 -0800</bug_when>
    <thetext>(In reply to Yoav Weiss from comment #32)
&gt; (In reply to Ryosuke Niwa from comment #24)
&gt; &gt; The recent thinking about client hints in general is that it adds new
&gt; &gt; fingerprinting surface to tracking pixels. Those 1px images typically don&apos;t
&gt; &gt; get to run JS so the amount of information it can gather is limited. With
&gt; &gt; this feature, it can gather extra bit of information, and a lot more with
&gt; &gt; other client hints.
&gt; &gt; 
&gt; 
&gt; That used to be true, but that is no longer the case, according to the
&gt; latest PRs [1]
&gt; 
&gt; Feature Policy is now used to control which hints can and cannot be
&gt; delegated to third parties.

I don&apos;t want to derail the discussion too much but I don&apos;t think that&apos;s sufficient. Adding an attribute is too low of a bar to gate that kind of fingerprintability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587323</commentid>
    <comment_count>34</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-11-04 23:47:36 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #25)
&gt; Comment on attachment 382445 [details]
&gt; Patch
&gt; 
&gt; This clearly needs a feature flag.

Done (runtime flag). Does it need a build flag as well IYO?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587324</commentid>
    <comment_count>35</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-11-04 23:49:33 -0800</bug_when>
    <thetext>
&gt; &gt; Feature Policy is now used to control which hints can and cannot be
&gt; &gt; delegated to third parties.
&gt; 
&gt; I don&apos;t want to derail the discussion too much but I don&apos;t think that&apos;s
&gt; sufficient. Adding an attribute is too low of a bar to gate that kind of
&gt; fingerprintability.

Yes, let&apos;s leave this discussion to when client hint spec is more mature, and stay focused on content-dpr which doesn&apos;t have these issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588155</commentid>
    <comment_count>36</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2019-11-07 02:25:07 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #26)
&gt; There is definitely no consensus. Image resolution is not a transport level
&gt; feature.

I would argue that it technically is a transport level feature on the server side, if you consider CDNs a transport layer. CDNs are implementing image-resolution optimizations in a similar manner to how gzip works for text, which is what content-dpr is about... 
It&apos;s true that it&apos;s an innovation on top of what transport layers and CDNs used to do, and that it is specific to images, and that blurring the lines between content and transport is somewhat experimental and new.

But isn&apos;t innovation in optimizing ways to transport images something we want to support in the web, and is generally better for everyone?(In reply to Ryosuke Niwa from comment #25)
&gt; Comment on attachment 382445 [details]
&gt; Patch
&gt; 
&gt; This clearly needs a feature flag.

@rniwa, this has been resolved. Can we re-review? would love to respond to any additional comments if it&apos;s required before landing the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588241</commentid>
    <comment_count>37</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2019-11-07 08:41:41 -0800</bug_when>
    <thetext>&gt; If there is still no consensus about it I would like to open the discussion to involve more people, and I&apos;ll switch over to @webkit-dev. 

As there is no consensus, please do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1656340</commentid>
    <comment_count>38</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2020-05-27 05:08:24 -0700</bug_when>
    <thetext>Following this feedback, discussions on the mailing list and with standard bodies, continuing with an approach of indicating image density inline, as EXIF metadata: https://bugs.webkit.org/show_bug.cgi?id=212405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693776</commentid>
    <comment_count>39</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-10-01 09:54:53 -0700</bug_when>
    <thetext>(In reply to Noam Rosenthal from comment #38)
&gt; Following this feedback, discussions on the mailing list and with standard
&gt; bodies, continuing with an approach of indicating image density inline, as
&gt; EXIF metadata: https://bugs.webkit.org/show_bug.cgi?id=212405

So the patch of this bug does not need review anymore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1693782</commentid>
    <comment_count>40</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2020-10-01 10:07:42 -0700</bug_when>
    <thetext>(In reply to Peng Liu from comment #39)
&gt; (In reply to Noam Rosenthal from comment #38)
&gt; &gt; Following this feedback, discussions on the mailing list and with standard
&gt; &gt; bodies, continuing with an approach of indicating image density inline, as
&gt; &gt; EXIF metadata: https://bugs.webkit.org/show_bug.cgi?id=212405
&gt; 
&gt; So the patch of this bug does not need review anymore?

Correct. Thanks for clearing the flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697194</commentid>
    <comment_count>41</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-10-13 01:05:39 -0700</bug_when>
    <thetext>Let&apos;s close this bug then. We can file a new bug to track EXIF implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697197</commentid>
    <comment_count>42</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2020-10-13 01:11:17 -0700</bug_when>
    <thetext>There is already a new bug for the EXIF implementation, OK to close this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697199</commentid>
    <comment_count>43</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-10-13 01:13:32 -0700</bug_when>
    <thetext>(In reply to Noam Rosenthal from comment #42)
&gt; There is already a new bug for the EXIF implementation, OK to close this one.

Could you add the new bug to &quot;See Also&quot; section of the bug?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253706</attachid>
            <date>2015-05-26 09:08:10 -0700</date>
            <delta_ts>2019-10-31 03:52:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145380-20150526180758.patch</filename>
            <type>text/plain</type>
            <size>10193</size>
            <attacher name="Yoav Weiss">yoav</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg0NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmRjMTRiZjRjMzVlODk3
ZmFkNzY4ODZlNmY0OTliNzgzMGJmMDIyNC4uMjA0MjQ0NTA3YjE0ODVlYTlmZTcxMGEzNjhhZTky
YmVmMjY0YjIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTI2ICBZb2F2
IFdlaXNzICA8eW9hdkB5b2F2LndzPgorCisgICAgICAgIEFkZCBDb250ZW50LURQUiBoZWFkZXIg
c3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ1MzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIENvbnRlbnQtRFBSIGhlYWRlciBpcyBwYXJ0IG9mIENsaWVudC1IaW50cy4KKyAgICAgICAg
U3BlYzogaHR0cDovL2lncmlnb3Jpay5naXRodWIuaW8vaHR0cC1jbGllbnQtaGludHMvI2NvbmZp
cm1pbmctc2VsZWN0ZWQtZHByCisgICAgICAgIFRoZSBoZWFkZXIgaXMgYWxzbyB1c2VmdWwgZm9y
IGF1dG9tYXRpYyBnZW5lcmF0aW9uIG9mIHNyY3NldCBtYXJrdXAuCisKKyAgICAgICAgVGhpcyBj
aGFuZ2UgYWRkcyBzdXBwb3J0IGZvciB0aGF0IGhlYWRlciwgc28gdGhhdCBpdCB3b3VsZCBpbXBh
Y3QgdGhlCisgICAgICAgIGltYWdlJ3MgaW50cmluc2ljIGRpbWVuc2lvbnMuCisKKyAgICAgICAg
VGVzdDogaHR0cC90ZXN0cy9pbWFnZXMvaW1hZ2Utd2l0aC1kcHItaGVhZGVyLmh0bWwKKworICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OnJlc3BvbnNlUmVjZWl2ZWQpOiBNYWludGFpbiBzdGF0ZSBvZiB0aGUgcmVjZWl2ZWQgQ29udGVu
dC1EUFIgaGVhZGVyLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKTogVXNlIHRoZSByZWNlaXZlZCBDb250ZW50LURQUiBoZWFk
ZXIgdmFsdWUgdG8gaW1wYWN0IGltYWdlIGludHJpbnNpYyBkaW1lbnNpb25zLgorCiAyMDE1LTA1
LTE2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAoU3VicGl4ZWwpOiBEYXNoZWQgdW5kZXJsaW5lIGlzIG1pc3Npbmcgd2hlbiBib3ggaXMgcG9z
aXRpb25lZCBhdCBzdWJwaXhlbHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAppbmRleCBmMzY4N2I3ODU3YTA0MmNiZTUyNDE2ZTBhYjkxNjY2NTBiMTUyZmE1
Li44NWZhOThmYzgxOWI4M2E0MGRjODg4ZjYyMGYxZjE5MzVhMGUwYzNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTYwLDYgKzYwLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogQ2FjaGVkSW1hZ2U6OkNhY2hlZEltYWdlKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBTZXNzaW9uSUQgc2Vzc2lvbklEKQogICAgIDogQ2Fj
aGVkUmVzb3VyY2UocmVzb3VyY2VSZXF1ZXN0LCBJbWFnZVJlc291cmNlLCBzZXNzaW9uSUQpCiAg
ICAgLCBtX2ltYWdlKDApCisgICAgLCBtX2RldmljZVBpeGVsUmF0aW9IZWFkZXJWYWx1ZSgxLjAp
CisgICAgLCBtX2hhc0RldmljZVBpeGVsUmF0aW9IZWFkZXJWYWx1ZShmYWxzZSkKICAgICAsIG1f
aXNNYW51YWxseUNhY2hlZChmYWxzZSkKICAgICAsIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSh0
cnVlKQogewpAQCAtNjksNiArNzEsOCBAQCBDYWNoZWRJbWFnZTo6Q2FjaGVkSW1hZ2UoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIFNlc3Npb25JRCBzZXNzaQogQ2FjaGVk
SW1hZ2U6OkNhY2hlZEltYWdlKEltYWdlKiBpbWFnZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKICAg
ICA6IENhY2hlZFJlc291cmNlKFJlc291cmNlUmVxdWVzdCgpLCBJbWFnZVJlc291cmNlLCBzZXNz
aW9uSUQpCiAgICAgLCBtX2ltYWdlKGltYWdlKQorICAgICwgbV9kZXZpY2VQaXhlbFJhdGlvSGVh
ZGVyVmFsdWUoMS4wKQorICAgICwgbV9oYXNEZXZpY2VQaXhlbFJhdGlvSGVhZGVyVmFsdWUoZmFs
c2UpCiAgICAgLCBtX2lzTWFudWFsbHlDYWNoZWQoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFBhaW50
QnJva2VuSW1hZ2UodHJ1ZSkKIHsKQEAgLTc5LDYgKzgzLDggQEAgQ2FjaGVkSW1hZ2U6OkNhY2hl
ZEltYWdlKEltYWdlKiBpbWFnZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKIENhY2hlZEltYWdlOjpD
YWNoZWRJbWFnZShjb25zdCBVUkwmIHVybCwgSW1hZ2UqIGltYWdlLCBTZXNzaW9uSUQgc2Vzc2lv
bklEKQogICAgIDogQ2FjaGVkUmVzb3VyY2UoUmVzb3VyY2VSZXF1ZXN0KHVybCksIEltYWdlUmVz
b3VyY2UsIHNlc3Npb25JRCkKICAgICAsIG1faW1hZ2UoaW1hZ2UpCisgICAgLCBtX2RldmljZVBp
eGVsUmF0aW9IZWFkZXJWYWx1ZSgxLjApCisgICAgLCBtX2hhc0RldmljZVBpeGVsUmF0aW9IZWFk
ZXJWYWx1ZShmYWxzZSkKICAgICAsIG1faXNNYW51YWxseUNhY2hlZChmYWxzZSkKICAgICAsIG1f
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZSh0cnVlKQogewpAQCAtODksNiArOTUsOCBAQCBDYWNoZWRJ
bWFnZTo6Q2FjaGVkSW1hZ2UoY29uc3QgVVJMJiB1cmwsIEltYWdlKiBpbWFnZSwgU2Vzc2lvbklE
IHNlc3Npb25JRCkKIENhY2hlZEltYWdlOjpDYWNoZWRJbWFnZShjb25zdCBVUkwmIHVybCwgSW1h
Z2UqIGltYWdlLCBDYWNoZWRJbWFnZTo6Q2FjaGVCZWhhdmlvclR5cGUgdHlwZSwgU2Vzc2lvbklE
IHNlc3Npb25JRCkKICAgICA6IENhY2hlZFJlc291cmNlKFJlc291cmNlUmVxdWVzdCh1cmwpLCBJ
bWFnZVJlc291cmNlLCBzZXNzaW9uSUQpCiAgICAgLCBtX2ltYWdlKGltYWdlKQorICAgICwgbV9k
ZXZpY2VQaXhlbFJhdGlvSGVhZGVyVmFsdWUoMS4wKQorICAgICwgbV9oYXNEZXZpY2VQaXhlbFJh
dGlvSGVhZGVyVmFsdWUoZmFsc2UpCiAgICAgLCBtX2lzTWFudWFsbHlDYWNoZWQodHlwZSA9PSBD
YWNoZWRJbWFnZTo6TWFudWFsbHlDYWNoZWQpCiAgICAgLCBtX3Nob3VsZFBhaW50QnJva2VuSW1h
Z2UodHJ1ZSkKIHsKQEAgLTQ1MSw2ICs0NTksMTMgQEAgdm9pZCBDYWNoZWRJbWFnZTo6cmVzcG9u
c2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBpZiAo
IW1fcmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIGNsZWFyKCk7CisgICAgYm9vbCBoYXNEZXZp
Y2VQaXhlbFJhdGlvSGVhZGVyVmFsdWU7CisgICAgbV9kZXZpY2VQaXhlbFJhdGlvSGVhZGVyVmFs
dWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmllbGQoQXRvbWljU3RyaW5nKCJjb250ZW50LWRwciIp
KS50b0Zsb2F0KCZoYXNEZXZpY2VQaXhlbFJhdGlvSGVhZGVyVmFsdWUpOworICAgIG1faGFzRGV2
aWNlUGl4ZWxSYXRpb0hlYWRlclZhbHVlID0gaGFzRGV2aWNlUGl4ZWxSYXRpb0hlYWRlclZhbHVl
OworICAgIGlmICghbV9oYXNEZXZpY2VQaXhlbFJhdGlvSGVhZGVyVmFsdWUgfHwgbV9kZXZpY2VQ
aXhlbFJhdGlvSGVhZGVyVmFsdWUgPD0gMC4wKSB7CisgICAgICAgIG1fZGV2aWNlUGl4ZWxSYXRp
b0hlYWRlclZhbHVlID0gMS4wOworICAgICAgICBtX2hhc0RldmljZVBpeGVsUmF0aW9IZWFkZXJW
YWx1ZSA9IGZhbHNlOworICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZl
ZChyZXNwb25zZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmgKaW5kZXggODg1OTI1MjMyYjYzYWI1OTBkNDM4NmRjYzJjZWY2MjY1OGJkMjg0My4uMjExODRj
MmRlZDA2N2RiNTVmODc5MTJiMjAzZDIxMWY2YmQ4MTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTg5LDYgKzg5LDEwIEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaXNPcmlnaW5DbGVhbihTZWN1cml0eU9yaWdpbiopOwogCisgICAgLy8gVGhlIGRldmlj
ZSBwaXhlbCByYXRpbyB3ZSBnb3QgZnJvbSB0aGUgc2VydmVyIGZvciB0aGlzIGltYWdlLCBvciAx
LjAuCisgICAgZmxvYXQgZGV2aWNlUGl4ZWxSYXRpb0hlYWRlclZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9kZXZpY2VQaXhlbFJhdGlvSGVhZGVyVmFsdWU7IH0KKyAgICBib29sIGhhc0RldmljZVBp
eGVsUmF0aW9IZWFkZXJWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzRGV2aWNlUGl4ZWxSYXRp
b0hlYWRlclZhbHVlOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhcigpOwogCkBAIC0xMzMs
NiArMTM3LDggQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHSW1hZ2VDYWNoZT4gbV9zdmdJbWFnZUNhY2hlOworICAgIGZsb2F0
IG1fZGV2aWNlUGl4ZWxSYXRpb0hlYWRlclZhbHVlOworICAgIHVuc2lnbmVkIG1faGFzRGV2aWNl
UGl4ZWxSYXRpb0hlYWRlclZhbHVlIDogMTsKICAgICB1bnNpZ25lZCBtX2lzTWFudWFsbHlDYWNo
ZWQgOiAxOwogICAgIHVuc2lnbmVkIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSA6IDE7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggN2M4MDc2MDhlYWFl
M2MyMmM0Y2ZjODAxZjExZDU2OGNlNGQ0ZDVkNy4uZjJkNzJiOWMyZmZhOWNmY2Y4Yzk3MWMxNDNm
ODViOWQ4MTAyZDdmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CkBAIC0yMzksNyArMjM5LDEwIEBAIHZvaWQgUmVuZGVySW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFw
cGVkSW1hZ2VQdHIgbmV3SW1hZ2UsIGNvbnN0IEludFJlY3QqIHJlY3QpCiAKICAgICBpZiAobmV3
SW1hZ2UgIT0gaW1hZ2VSZXNvdXJjZSgpLmltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQogICAgICAg
ICByZXR1cm47Ci0gICAgCisKKyAgICBpZiAoaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkg
JiYgaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCktPmhhc0RldmljZVBpeGVsUmF0aW9IZWFk
ZXJWYWx1ZSgpKQorICAgICAgICBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbyA9IDEgLyBpbWFnZVJl
c291cmNlKCkuY2FjaGVkSW1hZ2UoKS0+ZGV2aWNlUGl4ZWxSYXRpb0hlYWRlclZhbHVlKCk7CisK
ICAgICBpZiAoIW1fZGlkSW5jcmVtZW50VmlzdWFsbHlOb25FbXB0eVBpeGVsQ291bnQpIHsKICAg
ICAgICAgLy8gQXQgYSB6b29tIGxldmVsIG9mIDEgdGhlIGltYWdlIGlzIGd1YXJhbnRlZWQgdG8g
aGF2ZSBhbiBpbnRlZ2VyIHNpemUuCiAgICAgICAgIHZpZXcoKS5mcmFtZVZpZXcoKS5pbmNyZW1l
bnRWaXN1YWxseU5vbkVtcHR5UGl4ZWxDb3VudChmbG9vcmVkSW50U2l6ZShpbWFnZVJlc291cmNl
KCkuaW1hZ2VTaXplKDEuMGYpKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTJlNDQ0ZWRlYmRiNjZlOWJmZjIwYTIyMTIx
ZjE1YmQ2ZGNiNTM5MS4uNWY3NDU3NmQ2Y2U4ZTNlNThiYWNjNzI0YjQ0NGM5MzYxYjNmMmM4NCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE1LTA1LTI2ICBZb2F2IFdlaXNzICA8eW9hdkB5b2F2
LndzPgorCisgICAgICAgIEFkZCBDb250ZW50LURQUiBoZWFkZXIgc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MzgwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIENvbnRlbnQtRFBSIGhl
YWRlciBpcyBwYXJ0IG9mIENsaWVudC1IaW50cy4KKyAgICAgICAgU3BlYzogaHR0cDovL2lncmln
b3Jpay5naXRodWIuaW8vaHR0cC1jbGllbnQtaGludHMvI2NvbmZpcm1pbmctc2VsZWN0ZWQtZHBy
CisgICAgICAgIFRoZSBoZWFkZXIgaXMgYWxzbyB1c2VmdWwgZm9yIGF1dG9tYXRpYyBnZW5lcmF0
aW9uIG9mIHNyY3NldCBtYXJrdXAuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWRkcyBhIHRlc3Qg
dGhhdCBtYWtlcyBzdXJlIHRoZSBDb250ZW50LURQUiBoZWFkZXIgaW1wYWN0cyB0aGUKKyAgICAg
ICAgaW1hZ2UncyBpbnRyaW5zaWMgZGltZW5zaW9ucy4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
aW1hZ2VzL2ltYWdlLXdpdGgtZHByLWhlYWRlci1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2ltYWdlcy9pbWFnZS13aXRoLWRwci1oZWFkZXIuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZXMvZHByLnBocDogQWRkZWQuCisKIDIwMTUt
MDUtMTYgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNT
SU9OIChTdWJwaXhlbCk6IERhc2hlZCB1bmRlcmxpbmUgaXMgbWlzc2luZyB3aGVuIGJveCBpcyBw
b3NpdGlvbmVkIGF0IHN1YnBpeGVscy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW1hZ2VzL2ltYWdlLXdpdGgtZHByLWhlYWRlci1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbWFnZXMvaW1hZ2Utd2l0aC1kcHItaGVhZGVyLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTQ0NDRiYzM3NjZiYjJiNDJiZTIwOTNkZDE5MTM2ZmUzZmM0ZWQ0YgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW1hZ2VzL2ltYWdlLXdpdGgt
ZHByLWhlYWRlci1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGJvZHk+Cis8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9zcXVh
cmUxMDAucG5nIiBoZWlnaHQ9IjI1IiB3aWR0aD0iMjUiPgorPGltZyBzcmM9Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZyIgaGVpZ2h0PSI0MCIgd2lkdGg9IjQw
Ij4KKzxpbWcgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL3NxdWFyZTEwMC5w
bmciIGhlaWdodD0iMjAwIiB3aWR0aD0iMjAwIj4KKzxpbWcgc3JjPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmciIGhlaWdodD0iMjUiIHdpZHRoPSIyNSI+Cis8
aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9zcXVhcmUxMDAucG5nIiBo
ZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCI+Cis8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3Jlc291cmNlcy9zcXVhcmUxMDAucG5nIiBoZWlnaHQ9IjI1IiB3aWR0aD0iMjUiPgorPGltZyBz
cmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZyIgaGVpZ2h0
PSIyNSIgd2lkdGg9IjI1Ij4KKzxpbWcgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3Vy
Y2VzL3NxdWFyZTEwMC5wbmciIGhlaWdodD0iMTAwIiB3aWR0aD0iMTAwIj4KKzwvYm9keT4KKzwv
aHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbWFnZXMvaW1hZ2Ut
d2l0aC1kcHItaGVhZGVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9pbWFn
ZS13aXRoLWRwci1oZWFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MGQ3N2IzZjg4NmI1MjNjYzQ3MWQy
ZmVmM2VlNTQwZWRjNzQxNTk4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbWFnZXMvaW1hZ2Utd2l0aC1kcHItaGVhZGVyLmh0bWwKQEAgLTAsMCArMSwyMSBAQAor
PCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzwhLS0gRFBSIGluIGhlYWRlciAtLT4KKzxpbWcgc3Jj
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL2Rwci5waHA/bmFtZT1zcXVhcmUxMDAu
cG5nJm1pbWVUeXBlPWltYWdlL3BuZyZkcHI9NC4wIj4KKzwhLS0gZnJhY3Rpb25hbCBEUFIgLS0+
Cis8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9kcHIucGhwP25hbWU9
c3F1YXJlMTAwLnBuZyZtaW1lVHlwZT1pbWFnZS9wbmcmZHByPTIuNSI+Cis8IS0tIERQUiBzbWFs
bGVyIHRoYW4gMSAtLT4KKzxpbWcgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2Vz
L2Rwci5waHA/bmFtZT1zcXVhcmUxMDAucG5nJm1pbWVUeXBlPWltYWdlL3BuZyZkcHI9MC41Ij4K
KzwhLS0gRFBSIGluIHNyY3NldCAtLT4KKzxpbWcgc3Jjc2V0PSJodHRwOi8vMTI3LjAuMC4xOjgw
MDAvcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmcgNHgiPgorPCEtLSBpbnZhbGlkIERQUiBpbiBoZWFk
ZXIgLS0+Cis8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9kcHIucGhw
P25hbWU9c3F1YXJlMTAwLnBuZyZtaW1lVHlwZT1pbWFnZS9wbmcmZHByPXh4Ij4KKzwhLS0gY29t
YmluZSBoZWFkZXIgd2l0aCBzcmNzZXQgLS0+Cis8aW1nIHNyY3NldD0iaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3Jlc291cmNlcy9kcHIucGhwP25hbWU9c3F1YXJlMTAwLnBuZyZtaW1lVHlwZT1pbWFn
ZS9wbmcmZHByPXh4IDR4Ij4KKzxpbWcgc3Jjc2V0PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVz
b3VyY2VzL2Rwci5waHA/bmFtZT1zcXVhcmUxMDAucG5nJm1pbWVUeXBlPWltYWdlL3BuZyZkcHI9
NC4wIDJ4Ij4KKzwhLS0gZXhwbGljaXQgd2lkdGggYWxzbyBnaXZlbiAtLT4KKzxpbWcgc3JjPSJo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL2Rwci5waHA/bmFtZT1zcXVhcmUxMDAucG5n
Jm1pbWVUeXBlPWltYWdlL3BuZyZkcHI9NC4wIgorICAgICB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEw
MCI+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvcmVzb3VyY2VzL2Rwci5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9k
cHIucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAxZDI5MThiMGVlZmMwNmJmMGEyNzI5ZDc5MDFlMWNkMzRlZTA0
YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9k
cHIucGhwCkBAIC0wLDAgKzEsMjEgQEAKKzw/cGhwCiskbmFtZSA9ICRfR0VUWyduYW1lJ107Cisk
bWltZVR5cGUgPSAkX0dFVFsnbWltZVR5cGUnXTsKKyRkcHIgPSAkX0dFVFsnZHByJ107CisKK2hl
YWRlcignQ29udGVudC1UeXBlOiAnIC4gJG1pbWVUeXBlKTsKK2hlYWRlcignQ29udGVudC1MZW5n
dGg6ICcgLiBmaWxlc2l6ZSgkbmFtZSkpOworaWYgKGlzc2V0KCRfR0VUWydleHBpcmVzJ10pKQor
ICBoZWFkZXIoJ0NhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCcpOworZWxzZQorICBoZWFkZXIoJ0Nh
Y2hlLWNvbnRyb2w6IG1heC1hZ2U9ODY0MDAnKTsKK2hlYWRlcignRVRhZzogZHByaW1hZ2UnKTsK
KworaWYgKCRfU0VSVkVSWydIVFRQX0lGX05PTkVfTUFUQ0gnXSA9PSAnZHByaW1hZ2UnKSB7Cisg
IGhlYWRlcignSFRUUC8xLjEgMzA0IE5vdCBNb2RpZmllZCcpOworICBleGl0OworfQorCitoZWFk
ZXIoJ0NvbnRlbnQtRFBSOiAnLiAkZHByKTsKKworcmVhZGZpbGUoJG5hbWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382445</attachid>
            <date>2019-10-31 03:52:55 -0700</date>
            <delta_ts>2019-11-01 03:30:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145380-20191031125252.patch</filename>
            <type>text/plain</type>
            <size>10173</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJjYmFlNzU3MjY4MmJl
ZTQyOWQ3NjA1ODQyMDkxMTYzZjliMWYyZi4uOTdlNTE3ZmNhOWY4ZWQzNThmZjE1NDI4NzI5ZDBh
ODUxZDJjN2NiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEwLTMxICBOb2Ft
IFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgQ29udGVudC1EUFIg
aGVhZGVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NTM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENvbnRlbnQtRFBSIGlzIGEgbmV3IHJlc3BvbnNlIGhlYWRlciB0aGF0IGVuYWJsZXMg
Y29udGVudCBkZWxpdmVyeSBtZWNoYW5pc21zIChzZXJ2ZXJzLCBDRE5zKQorICAgICAgICB0byBk
ZWxpdmVyIGltYWdlcyB3aXRoIGRpZmZlcmVudCBwaXhlbCBkZW5zaXRpZXMsIHdoaWxlIG1haW50
YWluaW5nIHRoZSBpbWFnZSdzIGludHJpbnNpYyBzaXplCisgICAgICAgIGZvciBsYXlvdXQgcHVy
cG9zZXMuCisKKyAgICAgICAgVGhpcyBmaXhlcyBhbiBpc3N1ZSB3aXRoIHRoZSBpbnRlcmFjdGlv
biBiZXR3ZWVuIGRldmljZVBpeGVsUmF0aW8gYW5kIGxheW91dCBiYXNlZCBvbiBpbWFnZSBpbnRy
aW5zaWMgc2l6ZXMsCisgICAgICAgIGFzIHNvIGZhciB0aGUgaW1hZ2UncyBhY3R1YWwgcGl4ZWwg
ZGltZW5zaW9ucyBoYXZlIGJlZW4gdXNlZCBmb3IgY29tcHV0aW5nIGl0cyBpbnRyaW5zaWMgc2l6
ZSwgd2hpbGUgaW4gcHJhY3RpY2UgCisgICAgICAgIHRob3NlIGFyZSBzb21ldGltZXMgbW9kaWZp
ZWQgZm9yIGRlbnNpdHkgYW5kIHNob3VsZG4ndCBhZmZlY3QgdGhlIHNpemUuCisKKyAgICAgICAg
U3BlYzogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1jbGll
bnQtaGludHMtMDYjc2VjdGlvbi0zLjEuMQorCisgICAgICAgIFRoZSBDb250ZW50LURQUiBoZWFk
ZXIgaXMgcGFydCBvZiBDbGllbnQtSGludHMsIGJ1dCBoYXMgdmFsdWUgb24gaXRzIG93bi4KKwor
ICAgICAgICBCYXNlZCBvbiBhIHBhdGNoIGJ5IFlvYXYgV2Vpc3MuCisKKyAgICAgICAgVGVzdHM6
IGltYWdlcy9pbWFnZS13aXRoLWRwci1oZWFkZXIKKworICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6IFJl
YWQgbmV3IHJlc3BvbnNlIGhlYWRlciB2YWx1ZQorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
SFRUUEhlYWRlck5hbWVzLmluOiBBZGQgbmV3IGhlYWRlciBuYW1lCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcDogQ29tcGVuc2F0ZSBmb3IgY29udGVudCBEUFIgaW4gaW1hZ2Ug
RFBSCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6dXBkYXRlSW1hZ2VEZXZpY2VQaXhlbFJhdGlvRnJvbUNvbnRlbnRJZk5l
ZWRlZCk6CisKIDIwMTktMTAtMzAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbUGljdHVyZS1pbi1QaWN0dXJlIFdlYiBBUEldIEVuYWJsZSB0aGUgc3VwcG9ydCBm
b3IgaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRl
eCBjZWZiZTMyYjU2YTZkZWNhNWM5MTEzNDhlYWIxMGIxMDY2YzllZGY1Li5iNWFhMWE0YTAzODdk
OWIwMzVhYzg0MjAwMzk4N2FmYTVhMTcyMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTU3NSw2ICs1NzUsMTIgQEAgdm9pZCBDYWNoZWRJbWFn
ZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsK
ICAgICBpZiAoIW1fcmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAgIGNsZWFyKCk7CisKKyAgICBi
b29sIGhhc1ZhbGlkRGV2aWNlUGl4ZWxSYXRpb0hlYWRlclZhbHVlOworICAgIGZsb2F0IGRldmlj
ZVBpeGVsUmF0aW9IZWFkZXJWYWx1ZSA9IHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChXZWJDb3Jl
OjpIVFRQSGVhZGVyTmFtZTo6Q29udGVudERQUikudG9GbG9hdCgmaGFzVmFsaWREZXZpY2VQaXhl
bFJhdGlvSGVhZGVyVmFsdWUpOworICAgIG1faGFzQ29udGVudERldmljZVBpeGVsUmF0aW8gPSBo
YXNWYWxpZERldmljZVBpeGVsUmF0aW9IZWFkZXJWYWx1ZSAmJiBkZXZpY2VQaXhlbFJhdGlvSGVh
ZGVyVmFsdWUgPiAwOworICAgIG1fY29udGVudERldmljZVBpeGVsUmF0aW8gPSBtX2hhc0NvbnRl
bnREZXZpY2VQaXhlbFJhdGlvID8gZGV2aWNlUGl4ZWxSYXRpb0hlYWRlclZhbHVlIDogMTsKKwog
ICAgIENhY2hlZFJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAppbmRleCA0YWIzNTUzOGM4YmEw
OGY5MWZkNDU5NWFjMDA1N2I3ZDhjNGIxNTA2Li5jNGI2YTM0MTljYzVjMjM1YWZkODFhNDdkMDAz
NTY1MmM0MjEwNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
aApAQCAtODUsNiArODUsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkKENhY2hlZFJlc291cmNl
TG9hZGVyJikgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzT3JpZ2luQ2xlYW4oU2VjdXJpdHlPcmln
aW4qKTsKKyAgICBmbG9hdCBjb250ZW50RGV2aWNlUGl4ZWxSYXRpbygpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudERldmljZVBpeGVsUmF0aW87IH0KKyAgICBib29sIGhhc0NvbnRlbnREZXZpY2VQ
aXhlbFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNDb250ZW50RGV2aWNlUGl4ZWxSYXRpbzsg
fQogCiAgICAgYm9vbCBpc0NsaWVudFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKENhY2hlZEltYWdl
Q2xpZW50JikgY29uc3Q7CiAgICAgdm9pZCBhZGRDbGllbnRXYWl0aW5nRm9yQXN5bmNEZWNvZGlu
ZyhDYWNoZWRJbWFnZUNsaWVudCYpOwpAQCAtMTg3LDYgKzE4OSw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2lzTWFudWFsbHlDYWNoZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91bGRQYWlu
dEJyb2tlbkltYWdlIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV9mb3JjZVVwZGF0ZUltYWdlRGF0YUVu
YWJsZWRGb3JUZXN0aW5nIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzQ29udGVudERldmljZVBp
eGVsUmF0aW8geyBmYWxzZSB9OworICAgIGZsb2F0IG1fY29udGVudERldmljZVBpeGVsUmF0aW8g
eyAxIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJOYW1lcy5pbiBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck5hbWVzLmluCmluZGV4IGQzZDk2NWU3YzNl
NjdlYjU5YTFmZDEyY2IzM2NiNzFhODRhM2NlYTEuLjBhZTdkZTljZTI1MWZiYWQ0MGRiYTk5NTRj
OTEwYjAwY2IzMThhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck5hbWVzLmluCkBAIC00MSw2ICs0MSw3IEBAIEF1dGhvcml6YXRpb24KIENh
Y2hlLUNvbnRyb2wKIENvbm5lY3Rpb24KIENvbnRlbnQtRGlzcG9zaXRpb24KK0NvbnRlbnQtRFBS
CiBDb250ZW50LUVuY29kaW5nCiBDb250ZW50LUxhbmd1YWdlCiBDb250ZW50LUxlbmd0aApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKaW5kZXggM2ZhNjRiZDgzNzlkMzY5
NTBmMmM4OWFlZjM2NmY0ZDk4MDFhNDVjZC4uNDNjNTQ1ZGQxNjRmYzJkNGFmYzMzNjk0Mjc5ZTU1
YmQzNjhlNjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBA
IC0yNTksNiArMjU5LDEyIEBAIHZvaWQgUmVuZGVySW1hZ2U6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5CiAjZW5kaWYKIH0KIAor
dm9pZCBSZW5kZXJJbWFnZTo6dXBkYXRlSW1hZ2VEZXZpY2VQaXhlbFJhdGlvRnJvbUNvbnRlbnRJ
Zk5lZWRlZCgpCit7CisgICAgaWYgKGltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpICYmIGlt
YWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpLT5oYXNDb250ZW50RGV2aWNlUGl4ZWxSYXRpbygp
KQorICAgICAgICBtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbyA9IDEuMGYgLyBpbWFnZVJlc291cmNl
KCkuY2FjaGVkSW1hZ2UoKS0+Y29udGVudERldmljZVBpeGVsUmF0aW8oKTsKK30KKwogdm9pZCBS
ZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciBuZXdJbWFnZSwgY29uc3Qg
SW50UmVjdCogcmVjdCkKIHsKICAgICBpZiAocmVuZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCkBA
IC0yNzAsNiArMjc2LDggQEAgdm9pZCBSZW5kZXJJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJ
bWFnZVB0ciBuZXdJbWFnZSwgY29uc3QgSW50UmVjdCogcmVjdCkKICAgICBpZiAobmV3SW1hZ2Ug
IT0gaW1hZ2VSZXNvdXJjZSgpLmltYWdlUHRyKCkgfHwgIW5ld0ltYWdlKQogICAgICAgICByZXR1
cm47CiAKKyAgICB1cGRhdGVJbWFnZURldmljZVBpeGVsUmF0aW9Gcm9tQ29udGVudElmTmVlZGVk
KCk7CisKICAgICAvLyBBdCBhIHpvb20gbGV2ZWwgb2YgMSB0aGUgaW1hZ2UgaXMgZ3VhcmFudGVl
ZCB0byBoYXZlIGFuIGludGVnZXIgc2l6ZS4KICAgICBpbmNyZW1lbnRWaXN1YWxseU5vbkVtcHR5
UGl4ZWxDb3VudElmTmVlZGVkKGZsb29yZWRJbnRTaXplKGltYWdlUmVzb3VyY2UoKS5pbWFnZVNp
emUoMS4wZikpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaAppbmRleCBl
Y2Q1ZmM3MzIxZTNjNDk2M2FkZGIyNTRkNjczNzVjZTFkMzQyN2IwLi5mMjdmMDkyY2I4Y2I5YTZh
Yjk5ZTRmY2I1ZmJkM2EwMTlmOGEwOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2UuaApAQCAtMTAzLDYgKzEwMyw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAKICAgICB2b2lk
IGluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50SWZOZWVkZWQoY29uc3QgSW50U2l6
ZSYpOworICAgIHZvaWQgdXBkYXRlSW1hZ2VEZXZpY2VQaXhlbFJhdGlvRnJvbUNvbnRlbnRJZk5l
ZWRlZCgpOwogCiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiAiUmVuZGVySW1hZ2UiOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzc4MzM2NjkxY2FiYmFh
YmMzYjJmODI5NzlkZTIwNTY2NDczNmNjOC4uMWI1NjFhMTJkYWJjZGJmZjJiZDlhNDdlNDkyNjFl
NTk1NzE1NWNmOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE5LTEwLTMxICBZb2F2IFdlaXNz
ICA8eW9hdkB5b2F2LndzPgorCisgICAgICAgIEFkZCBDb250ZW50LURQUiBoZWFkZXIgc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1Mzgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIENv
bnRlbnQtRFBSIGhlYWRlciBpcyBwYXJ0IG9mIENsaWVudC1IaW50cy4KKyAgICAgICAgU3BlYzog
aHR0cDovL2lncmlnb3Jpay5naXRodWIuaW8vaHR0cC1jbGllbnQtaGludHMvI2NvbmZpcm1pbmct
c2VsZWN0ZWQtZHByCisgICAgICAgIFRoZSBoZWFkZXIgaXMgYWxzbyB1c2VmdWwgZm9yIGF1dG9t
YXRpYyBnZW5lcmF0aW9uIG9mIHNyY3NldCBtYXJrdXAuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ug
YWRkcyBhIHRlc3QgdGhhdCBtYWtlcyBzdXJlIHRoZSBDb250ZW50LURQUiBoZWFkZXIgaW1wYWN0
cyB0aGUKKyAgICAgICAgaW1hZ2UncyBpbnRyaW5zaWMgZGltZW5zaW9ucy4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvaW1hZ2VzL2ltYWdlLXdpdGgtZHByLWhlYWRlci1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2ltYWdlcy9pbWFnZS13aXRoLWRwci1oZWFkZXIu
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZXMvZHByLnBocDogQWRk
ZWQuCisKIDIwMTktMTAtMzAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAogICAg
ICAgICBbUGljdHVyZS1pbi1QaWN0dXJlIFdlYiBBUEldIEVuYWJsZSB0aGUgc3VwcG9ydCBmb3Ig
aU9TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9pbWFnZS13aXRo
LWRwci1oZWFkZXItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW1hZ2Vz
L2ltYWdlLXdpdGgtZHByLWhlYWRlci1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NDQ0YmMz
NzY2YmIyYjQyYmUyMDkzZGQxOTEzNmZlM2ZjNGVkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9pbWFnZS13aXRoLWRwci1oZWFkZXItZXhwZWN0ZWQu
aHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPGltZyBzcmM9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZyIgaGVpZ2h0PSIy
NSIgd2lkdGg9IjI1Ij4KKzxpbWcgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2Vz
L3NxdWFyZTEwMC5wbmciIGhlaWdodD0iNDAiIHdpZHRoPSI0MCI+Cis8aW1nIHNyYz0iaHR0cDov
LzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9zcXVhcmUxMDAucG5nIiBoZWlnaHQ9IjIwMCIgd2lk
dGg9IjIwMCI+Cis8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9zcXVh
cmUxMDAucG5nIiBoZWlnaHQ9IjI1IiB3aWR0aD0iMjUiPgorPGltZyBzcmM9Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZyIgaGVpZ2h0PSIxMDAiIHdpZHRoPSIx
MDAiPgorPGltZyBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvc3F1YXJlMTAw
LnBuZyIgaGVpZ2h0PSIyNSIgd2lkdGg9IjI1Ij4KKzxpbWcgc3JjPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmciIGhlaWdodD0iMjUiIHdpZHRoPSIyNSI+Cis8
aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9zcXVhcmUxMDAucG5nIiBo
ZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW1hZ2VzL2ltYWdlLXdpdGgtZHByLWhlYWRlci5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbWFnZXMvaW1hZ2Utd2l0aC1kcHItaGVhZGVyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNTBkNzdiM2Y4ODZiNTIzY2M0NzFkMmZlZjNlZTU0MGVkYzc0MTU5OAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW1hZ2VzL2ltYWdlLXdp
dGgtZHByLWhlYWRlci5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJv
ZHk+Cis8IS0tIERQUiBpbiBoZWFkZXIgLS0+Cis8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3Jlc291cmNlcy9kcHIucGhwP25hbWU9c3F1YXJlMTAwLnBuZyZtaW1lVHlwZT1pbWFnZS9w
bmcmZHByPTQuMCI+Cis8IS0tIGZyYWN0aW9uYWwgRFBSIC0tPgorPGltZyBzcmM9Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvZHByLnBocD9uYW1lPXNxdWFyZTEwMC5wbmcmbWltZVR5
cGU9aW1hZ2UvcG5nJmRwcj0yLjUiPgorPCEtLSBEUFIgc21hbGxlciB0aGFuIDEgLS0+Cis8aW1n
IHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9kcHIucGhwP25hbWU9c3F1YXJl
MTAwLnBuZyZtaW1lVHlwZT1pbWFnZS9wbmcmZHByPTAuNSI+Cis8IS0tIERQUiBpbiBzcmNzZXQg
LS0+Cis8aW1nIHNyY3NldD0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9zcXVhcmUx
MDAucG5nIDR4Ij4KKzwhLS0gaW52YWxpZCBEUFIgaW4gaGVhZGVyIC0tPgorPGltZyBzcmM9Imh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvZHByLnBocD9uYW1lPXNxdWFyZTEwMC5wbmcm
bWltZVR5cGU9aW1hZ2UvcG5nJmRwcj14eCI+Cis8IS0tIGNvbWJpbmUgaGVhZGVyIHdpdGggc3Jj
c2V0IC0tPgorPGltZyBzcmNzZXQ9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvZHBy
LnBocD9uYW1lPXNxdWFyZTEwMC5wbmcmbWltZVR5cGU9aW1hZ2UvcG5nJmRwcj14eCA0eCI+Cis8
aW1nIHNyY3NldD0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9kcHIucGhwP25hbWU9
c3F1YXJlMTAwLnBuZyZtaW1lVHlwZT1pbWFnZS9wbmcmZHByPTQuMCAyeCI+Cis8IS0tIGV4cGxp
Y2l0IHdpZHRoIGFsc28gZ2l2ZW4gLS0+Cis8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3Jlc291cmNlcy9kcHIucGhwP25hbWU9c3F1YXJlMTAwLnBuZyZtaW1lVHlwZT1pbWFnZS9wbmcm
ZHByPTQuMCIKKyAgICAgd2lkdGg9IjEwMCIgaGVpZ2h0PSIxMDAiPgorCis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9kcHIucGhw
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZXMvZHByLnBocApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MWQyOTE4YjBlZWZjMDZiZjBhMjcyOWQ3OTAxZTFjZDM0ZWUwNGM4Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZXMvZHByLnBocApAQCAtMCwwICsxLDIx
IEBACis8P3BocAorJG5hbWUgPSAkX0dFVFsnbmFtZSddOworJG1pbWVUeXBlID0gJF9HRVRbJ21p
bWVUeXBlJ107CiskZHByID0gJF9HRVRbJ2RwciddOworCitoZWFkZXIoJ0NvbnRlbnQtVHlwZTog
JyAuICRtaW1lVHlwZSk7CitoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJG5h
bWUpKTsKK2lmIChpc3NldCgkX0dFVFsnZXhwaXJlcyddKSkKKyAgaGVhZGVyKCdDYWNoZS1jb250
cm9sOiBtYXgtYWdlPTAnKTsKK2Vsc2UKKyAgaGVhZGVyKCdDYWNoZS1jb250cm9sOiBtYXgtYWdl
PTg2NDAwJyk7CitoZWFkZXIoJ0VUYWc6IGRwcmltYWdlJyk7CisKK2lmICgkX1NFUlZFUlsnSFRU
UF9JRl9OT05FX01BVENIJ10gPT0gJ2RwcmltYWdlJykgeworICBoZWFkZXIoJ0hUVFAvMS4xIDMw
NCBOb3QgTW9kaWZpZWQnKTsKKyAgZXhpdDsKK30KKworaGVhZGVyKCdDb250ZW50LURQUjogJy4g
JGRwcik7CisKK3JlYWRmaWxlKCRuYW1lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382569</attachid>
            <date>2019-11-01 03:30:40 -0700</date>
            <delta_ts>2020-10-01 09:55:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145380-20191101123038.patch</filename>
            <type>text/plain</type>
            <size>12156</size>
            <attacher name="Noam Rosenthal">noam</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGJjYmFlNzU3MjY4MmJl
ZTQyOWQ3NjA1ODQyMDkxMTYzZjliMWYyZi4uOTdlNTE3ZmNhOWY4ZWQzNThmZjE1NDI4NzI5ZDBh
ODUxZDJjN2NiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE5LTEwLTMxICBOb2Ft
IFJvc2VudGhhbCAgPG5vYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgQ29udGVudC1EUFIg
aGVhZGVyIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0NTM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIENvbnRlbnQtRFBSIGlzIGEgbmV3IHJlc3BvbnNlIGhlYWRlciB0aGF0IGVuYWJsZXMg
Y29udGVudCBkZWxpdmVyeSBtZWNoYW5pc21zIChzZXJ2ZXJzLCBDRE5zKQorICAgICAgICB0byBk
ZWxpdmVyIGltYWdlcyB3aXRoIGRpZmZlcmVudCBwaXhlbCBkZW5zaXRpZXMsIHdoaWxlIG1haW50
YWluaW5nIHRoZSBpbWFnZSdzIGludHJpbnNpYyBzaXplCisgICAgICAgIGZvciBsYXlvdXQgcHVy
cG9zZXMuCisKKyAgICAgICAgVGhpcyBmaXhlcyBhbiBpc3N1ZSB3aXRoIHRoZSBpbnRlcmFjdGlv
biBiZXR3ZWVuIGRldmljZVBpeGVsUmF0aW8gYW5kIGxheW91dCBiYXNlZCBvbiBpbWFnZSBpbnRy
aW5zaWMgc2l6ZXMsCisgICAgICAgIGFzIHNvIGZhciB0aGUgaW1hZ2UncyBhY3R1YWwgcGl4ZWwg
ZGltZW5zaW9ucyBoYXZlIGJlZW4gdXNlZCBmb3IgY29tcHV0aW5nIGl0cyBpbnRyaW5zaWMgc2l6
ZSwgd2hpbGUgaW4gcHJhY3RpY2UgCisgICAgICAgIHRob3NlIGFyZSBzb21ldGltZXMgbW9kaWZp
ZWQgZm9yIGRlbnNpdHkgYW5kIHNob3VsZG4ndCBhZmZlY3QgdGhlIHNpemUuCisKKyAgICAgICAg
U3BlYzogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1jbGll
bnQtaGludHMtMDYjc2VjdGlvbi0zLjEuMQorCisgICAgICAgIFRoZSBDb250ZW50LURQUiBoZWFk
ZXIgaXMgcGFydCBvZiBDbGllbnQtSGludHMsIGJ1dCBoYXMgdmFsdWUgb24gaXRzIG93bi4KKwor
ICAgICAgICBCYXNlZCBvbiBhIHBhdGNoIGJ5IFlvYXYgV2Vpc3MuCisKKyAgICAgICAgVGVzdHM6
IGltYWdlcy9pbWFnZS13aXRoLWRwci1oZWFkZXIKKworICAgICAgICAqIGxvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6IFJl
YWQgbmV3IHJlc3BvbnNlIGhlYWRlciB2YWx1ZQorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
SFRUUEhlYWRlck5hbWVzLmluOiBBZGQgbmV3IGhlYWRlciBuYW1lCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcDogQ29tcGVuc2F0ZSBmb3IgY29udGVudCBEUFIgaW4gaW1hZ2Ug
RFBSCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZTo6dXBkYXRlSW1hZ2VEZXZpY2VQaXhlbFJhdGlvRnJvbUNvbnRlbnRJZk5l
ZWRlZCk6CisKIDIwMTktMTAtMzAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KIAog
ICAgICAgICBbUGljdHVyZS1pbi1QaWN0dXJlIFdlYiBBUEldIEVuYWJsZSB0aGUgc3VwcG9ydCBm
b3IgaU9TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRl
eCBjZWZiZTMyYjU2YTZkZWNhNWM5MTEzNDhlYWIxMGIxMDY2YzllZGY1Li41ZmRjNTJlMjU5Mzdk
NzM4NmQwZTQ1NjNmNDIzMTM2MWE0ZWE2MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTU3MSwxMCArNTcxLDIzIEBAIHZvaWQgQ2FjaGVkSW1h
Z2U6OmVycm9yKENhY2hlZFJlc291cmNlOjpTdGF0dXMgc3RhdHVzKQogICAgIG5vdGlmeU9ic2Vy
dmVycygpOwogfQogCit2b2lkIENhY2hlZEltYWdlOjpwYXJzZUNvbnRlbnREZXZpY2VQaXhlbFJh
dGlvSWZOZWVkZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYg
KCFsb2FkZXIoKSB8fCAhbG9hZGVyKCktPmZyYW1lKCkgfHwgIWxvYWRlcigpLT5mcmFtZSgpLT5z
ZXR0aW5ncygpLmltYWdlQ29udGVudERQUkhlYWRlckVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYm9vbCBoYXNWYWxpZERldmljZVBpeGVsUmF0aW9IZWFkZXJWYWx1ZTsKKyAgICBm
bG9hdCBkZXZpY2VQaXhlbFJhdGlvSGVhZGVyVmFsdWUgPSByZXNwb25zZS5odHRwSGVhZGVyRmll
bGQoV2ViQ29yZTo6SFRUUEhlYWRlck5hbWU6OkNvbnRlbnREUFIpLnRvRmxvYXQoJmhhc1ZhbGlk
RGV2aWNlUGl4ZWxSYXRpb0hlYWRlclZhbHVlKTsKKyAgICBtX2hhc0NvbnRlbnREZXZpY2VQaXhl
bFJhdGlvID0gaGFzVmFsaWREZXZpY2VQaXhlbFJhdGlvSGVhZGVyVmFsdWUgJiYgZGV2aWNlUGl4
ZWxSYXRpb0hlYWRlclZhbHVlID4gMDsKKyAgICBtX2NvbnRlbnREZXZpY2VQaXhlbFJhdGlvID0g
bV9oYXNDb250ZW50RGV2aWNlUGl4ZWxSYXRpbyA/IGRldmljZVBpeGVsUmF0aW9IZWFkZXJWYWx1
ZSA6IDE7Cit9CisKIHZvaWQgQ2FjaGVkSW1hZ2U6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgaWYgKCFtX3Jlc3BvbnNlLmlzTnVsbCgp
KQogICAgICAgICBjbGVhcigpOworICAgIAorICAgIHBhcnNlQ29udGVudERldmljZVBpeGVsUmF0
aW9JZk5lZWRlZChyZXNwb25zZSk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2
ZWQocmVzcG9uc2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5oCmluZGV4IDRhYjM1NTM4YzhiYTA4ZjkxZmQ0NTk1YWMwMDU3YjdkOGM0YjE1MDYuLmVjYjY1
N2FlNzA3MzIyYjVkYzQ5NDgyZjEyZmExOGNhN2ViZThiZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC04NSw2ICs4NSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXImKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNP
cmlnaW5DbGVhbihTZWN1cml0eU9yaWdpbiopOworICAgIGZsb2F0IGNvbnRlbnREZXZpY2VQaXhl
bFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50RGV2aWNlUGl4ZWxSYXRpbzsgfQorICAg
IGJvb2wgaGFzQ29udGVudERldmljZVBpeGVsUmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2hhc0Nv
bnRlbnREZXZpY2VQaXhlbFJhdGlvOyB9CiAKICAgICBib29sIGlzQ2xpZW50V2FpdGluZ0ZvckFz
eW5jRGVjb2RpbmcoQ2FjaGVkSW1hZ2VDbGllbnQmKSBjb25zdDsKICAgICB2b2lkIGFkZENsaWVu
dFdhaXRpbmdGb3JBc3luY0RlY29kaW5nKENhY2hlZEltYWdlQ2xpZW50Jik7CkBAIC0xNjUsNiAr
MTY3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUJ1ZmZlckludGVybmFsKFNoYXJlZEJ1
ZmZlciYpOwogCiAgICAgdm9pZCBkaWRSZXBsYWNlU2hhcmVkQnVmZmVyQ29udGVudHMoKSBvdmVy
cmlkZTsKKyAgICAKKyAgICB2b2lkIHBhcnNlQ29udGVudERldmljZVBpeGVsUmF0aW9JZk5lZWRl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICBzdHJ1Y3QgQ29udGFpbmVyQ29udGV4
dCB7CiAgICAgICAgIExheW91dFNpemUgY29udGFpbmVyU2l6ZTsKQEAgLTE4Nyw2ICsxOTEsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc01hbnVhbGx5Q2FjaGVkIHsgZmFsc2UgfTsKICAgICBi
b29sIG1fc2hvdWxkUGFpbnRCcm9rZW5JbWFnZSB7IHRydWUgfTsKICAgICBib29sIG1fZm9yY2VV
cGRhdGVJbWFnZURhdGFFbmFibGVkRm9yVGVzdGluZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hh
c0NvbnRlbnREZXZpY2VQaXhlbFJhdGlvIHsgZmFsc2UgfTsKKyAgICBmbG9hdCBtX2NvbnRlbnRE
ZXZpY2VQaXhlbFJhdGlvIHsgMSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IDVlMzVmYWM3MjZlZjZhZDlmMmViZWRiMzhmOTIw
NTMxM2FlZDg0NTcuLjlhZWY4NmQ3OGFkZTZhZTcyODNmOGY1OTllNzI1MjMxZjAyNWVkNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTU2MCw2ICs1NjAsOSBAQCBodHRwRXF1aXZF
bmFibGVkOgogY29udGVudERpc3Bvc2l0aW9uQXR0YWNobWVudFNhbmRib3hFbmFibGVkOgogICBp
bml0aWFsOiBmYWxzZQogCitpbWFnZUNvbnRlbnREUFJIZWFkZXJFbmFibGVkOgorICBpbml0aWFs
OiBmYWxzZQorCiB1c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OgogICB0eXBlOiBVc2VySW50
ZXJmYWNlRGlyZWN0aW9uUG9saWN5CiAgIGluaXRpYWw6IFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Q
b2xpY3k6OkNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUEhlYWRlck5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQSGVhZGVyTmFtZXMuaW4KaW5kZXggZDNkOTY1ZTdjM2U2N2ViNTlhMWZkMTJjYjMzY2I3MWE4
NGEzY2VhMS4uMGFlN2RlOWNlMjUxZmJhZDQwZGJhOTk1NGM5MTBiMDBjYjMxOGEyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTmFtZXMuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTmFtZXMuaW4K
QEAgLTQxLDYgKzQxLDcgQEAgQXV0aG9yaXphdGlvbgogQ2FjaGUtQ29udHJvbAogQ29ubmVjdGlv
bgogQ29udGVudC1EaXNwb3NpdGlvbgorQ29udGVudC1EUFIKIENvbnRlbnQtRW5jb2RpbmcKIENv
bnRlbnQtTGFuZ3VhZ2UKIENvbnRlbnQtTGVuZ3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckltYWdlLmNwcAppbmRleCAzZmE2NGJkODM3OWQzNjk1MGYyYzg5YWVmMzY2ZjRkOTgwMWE0
NWNkLi40M2M1NDVkZDE2NGZjMmQ0YWZjMzM2OTQyNzllNTViZDM2OGU2ODM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKQEAgLTI1OSw2ICsyNTksMTIgQEAgdm9p
ZCBSZW5kZXJJbWFnZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHkKICNlbmRpZgogfQogCit2b2lkIFJlbmRlckltYWdlOjp1cGRh
dGVJbWFnZURldmljZVBpeGVsUmF0aW9Gcm9tQ29udGVudElmTmVlZGVkKCkKK3sKKyAgICBpZiAo
aW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkgJiYgaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZElt
YWdlKCktPmhhc0NvbnRlbnREZXZpY2VQaXhlbFJhdGlvKCkpCisgICAgICAgIG1faW1hZ2VEZXZp
Y2VQaXhlbFJhdGlvID0gMS4wZiAvIGltYWdlUmVzb3VyY2UoKS5jYWNoZWRJbWFnZSgpLT5jb250
ZW50RGV2aWNlUGl4ZWxSYXRpbygpOworfQorCiB2b2lkIFJlbmRlckltYWdlOjppbWFnZUNoYW5n
ZWQoV3JhcHBlZEltYWdlUHRyIG5ld0ltYWdlLCBjb25zdCBJbnRSZWN0KiByZWN0KQogewogICAg
IGlmIChyZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSkKQEAgLTI3MCw2ICsyNzYsOCBAQCB2b2lk
IFJlbmRlckltYWdlOjppbWFnZUNoYW5nZWQoV3JhcHBlZEltYWdlUHRyIG5ld0ltYWdlLCBjb25z
dCBJbnRSZWN0KiByZWN0KQogICAgIGlmIChuZXdJbWFnZSAhPSBpbWFnZVJlc291cmNlKCkuaW1h
Z2VQdHIoKSB8fCAhbmV3SW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAorICAgIHVwZGF0ZUltYWdl
RGV2aWNlUGl4ZWxSYXRpb0Zyb21Db250ZW50SWZOZWVkZWQoKTsKKwogICAgIC8vIEF0IGEgem9v
bSBsZXZlbCBvZiAxIHRoZSBpbWFnZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYW4gaW50ZWdlciBz
aXplLgogICAgIGluY3JlbWVudFZpc3VhbGx5Tm9uRW1wdHlQaXhlbENvdW50SWZOZWVkZWQoZmxv
b3JlZEludFNpemUoaW1hZ2VSZXNvdXJjZSgpLmltYWdlU2l6ZSgxLjBmKSkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCmluZGV4IGVjZDVmYzczMjFlM2M0OTYzYWRkYjI1
NGQ2NzM3NWNlMWQzNDI3YjAuLmYyN2YwOTJjYjhjYjlhNmFiOTllNGZjYjVmYmQzYTAxOWY4YTA5
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5oCkBAIC0xMDMsNiArMTAz
LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogICAgIHZvaWQgaW5jcmVtZW50VmlzdWFsbHlOb25F
bXB0eVBpeGVsQ291bnRJZk5lZWRlZChjb25zdCBJbnRTaXplJik7CisgICAgdm9pZCB1cGRhdGVJ
bWFnZURldmljZVBpeGVsUmF0aW9Gcm9tQ29udGVudElmTmVlZGVkKCk7CiAKIHByaXZhdGU6CiAg
ICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJSZW5k
ZXJJbWFnZSI7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCBjNzgzMzY2OTFjYWJiYWFiYzNiMmY4Mjk3OWRlMjA1NjY0NzM2
Y2M4Li4zYjJmOGU5YmNhZTA3NjVhYjEyOGYyZmE0ZTFmYjc4ZDE5NWI3ZjYyIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTktMTAtMzEgIE5vYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEFkZCBDb250ZW50LURQUiBoZWFkZXIgc3VwcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1MzgwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIENvbnRlbnQtRFBSIGhlYWRl
ciBpcyBwYXJ0IG9mIENsaWVudC1IaW50cywgYnV0IGhhcyB2YWx1ZSBvbiBpdHMgb3duLgorICAg
ICAgICBTcGVjOiBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1odHRwYmlz
LWNsaWVudC1oaW50cy0wNiNzZWN0aW9uLTMuMS4xCisKKyAgICAgICAgVGhlIGhlYWRlciBpcyBh
bHNvIHVzZWZ1bCBmb3IgYXV0b21hdGljIGdlbmVyYXRpb24gb2Ygc3Jjc2V0IG1hcmt1cC4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgdGVzdCB0aGF0IG1ha2VzIHN1cmUgdGhlIENvbnRl
bnQtRFBSIGhlYWRlciBpbXBhY3RzIHRoZQorICAgICAgICBpbWFnZSdzIGludHJpbnNpYyBkaW1l
bnNpb25zLgorCisgICAgICAgIEJhc2VkIG9uIGEgcGF0Y2ggYnkgWW9hdiBXZWlzcy4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvaW1hZ2VzL2ltYWdlLXdpdGgtZHByLWhlYWRlci1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2ltYWdlcy9pbWFnZS13aXRoLWRwci1o
ZWFkZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZXMvZHByLnBo
cDogQWRkZWQuCisKIDIwMTktMTAtMzAgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4K
IAogICAgICAgICBbUGljdHVyZS1pbi1QaWN0dXJlIFdlYiBBUEldIEVuYWJsZSB0aGUgc3VwcG9y
dCBmb3IgaU9TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9pbWFn
ZS13aXRoLWRwci1oZWFkZXItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW1hZ2VzL2ltYWdlLXdpdGgtZHByLWhlYWRlci1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0
NDQ0YmMzNzY2YmIyYjQyYmUyMDkzZGQxOTEzNmZlM2ZjNGVkNGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9pbWFnZS13aXRoLWRwci1oZWFkZXItZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPGlt
ZyBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZyIgaGVp
Z2h0PSIyNSIgd2lkdGg9IjI1Ij4KKzxpbWcgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVz
b3VyY2VzL3NxdWFyZTEwMC5wbmciIGhlaWdodD0iNDAiIHdpZHRoPSI0MCI+Cis8aW1nIHNyYz0i
aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9zcXVhcmUxMDAucG5nIiBoZWlnaHQ9IjIw
MCIgd2lkdGg9IjIwMCI+Cis8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNl
cy9zcXVhcmUxMDAucG5nIiBoZWlnaHQ9IjI1IiB3aWR0aD0iMjUiPgorPGltZyBzcmM9Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZyIgaGVpZ2h0PSIxMDAiIHdp
ZHRoPSIxMDAiPgorPGltZyBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvc3F1
YXJlMTAwLnBuZyIgaGVpZ2h0PSIyNSIgd2lkdGg9IjI1Ij4KKzxpbWcgc3JjPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmciIGhlaWdodD0iMjUiIHdpZHRoPSIy
NSI+Cis8aW1nIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9zcXVhcmUxMDAu
cG5nIiBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW1hZ2VzL2ltYWdlLXdpdGgtZHByLWhlYWRl
ci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbWFnZXMvaW1hZ2Utd2l0aC1kcHItaGVh
ZGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAwMDQzYzBiNmNiYmFiYzc4Yjg4NmJkN2EyMzU0NTQ3YzNi
ZGM2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW1hZ2VzL2lt
YWdlLXdpdGgtZHByLWhlYWRlci5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGJvZHk+Cis8IS0tIERQUiBpbiBoZWFkZXIgLS0+Cis8aW1nIGRhdGEtc3JjPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL2Rwci5waHA/bmFtZT1zcXVhcmUxMDAucG5nJm1pbWVU
eXBlPWltYWdlL3BuZyZkcHI9NC4wIj4KKzwhLS0gZnJhY3Rpb25hbCBEUFIgLS0+Cis8aW1nIGRh
dGEtc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL2Rwci5waHA/bmFtZT1zcXVh
cmUxMDAucG5nJm1pbWVUeXBlPWltYWdlL3BuZyZkcHI9Mi41Ij4KKzwhLS0gRFBSIHNtYWxsZXIg
dGhhbiAxIC0tPgorPGltZyBkYXRhLXNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNl
cy9kcHIucGhwP25hbWU9c3F1YXJlMTAwLnBuZyZtaW1lVHlwZT1pbWFnZS9wbmcmZHByPTAuNSI+
Cis8IS0tIERQUiBpbiBzcmNzZXQgLS0+Cis8aW1nIGRhdGEtc3Jjc2V0PSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmcgNHgiPgorPCEtLSBpbnZhbGlkIERQUiBp
biBoZWFkZXIgLS0+Cis8aW1nIGRhdGEtc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcmVzb3Vy
Y2VzL2Rwci5waHA/bmFtZT1zcXVhcmUxMDAucG5nJm1pbWVUeXBlPWltYWdlL3BuZyZkcHI9eHgi
PgorPCEtLSBjb21iaW5lIGhlYWRlciB3aXRoIHNyY3NldCAtLT4KKzxpbWcgZGF0YS1zcmNzZXQ9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMvZHByLnBocD9uYW1lPXNxdWFyZTEwMC5w
bmcmbWltZVR5cGU9aW1hZ2UvcG5nJmRwcj14eCA0eCI+Cis8aW1nIGRhdGEtc3Jjc2V0PSJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvcmVzb3VyY2VzL2Rwci5waHA/bmFtZT1zcXVhcmUxMDAucG5nJm1p
bWVUeXBlPWltYWdlL3BuZyZkcHI9NC4wIDJ4Ij4KKzwhLS0gZXhwbGljaXQgd2lkdGggYWxzbyBn
aXZlbiAtLT4KKzxpbWcgZGF0YS1zcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9yZXNvdXJjZXMv
ZHByLnBocD9uYW1lPXNxdWFyZTEwMC5wbmcmbWltZVR5cGU9aW1hZ2UvcG5nJmRwcj00LjAiCisg
ICAgIHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlv
biB0ZXN0RG9uZSgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlQ29u
dGVudERQUkhlYWRlckVuYWJsZWQodHJ1ZSk7CisKK3NldFRpbWVvdXQoKCkgPT4geworICAgIGNv
bnN0IGltYWdlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2ltZycpOworICAgIFsuLi5p
bWFnZXNdLmZvckVhY2goaW1nID0+IHsKKyAgICAgICAgaWYgKGltZy5oYXNBdHRyaWJ1dGUoJ2Rh
dGEtc3JjJykpIHsKKyAgICAgICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGltZy5nZXRB
dHRyaWJ1dGUoJ2RhdGEtc3JjJykpCisgICAgICAgIH0KKyAgICAgICAgaWYgKGltZy5oYXNBdHRy
aWJ1dGUoJ2RhdGEtc3Jjc2V0JykpIHsKKyAgICAgICAgICAgIGltZy5zZXRBdHRyaWJ1dGUoJ3Ny
Y3NldCcsIGltZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3Jjc2V0JykpCisgICAgICAgIH0KKyAgICB9
KQorCisgICAgc2V0VGltZW91dCh0ZXN0RG9uZSwgNTAwKTsKK30sIDApOworCit0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKzwvc2NyaXB0PgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlcy9kcHIucGhwIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZXMvZHByLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMWQyOTE4YjBlZWZj
MDZiZjBhMjcyOWQ3OTAxZTFjZDM0ZWUwNGM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9yZXNvdXJjZXMvZHByLnBocApAQCAtMCwwICsxLDIxIEBACis8P3BocAor
JG5hbWUgPSAkX0dFVFsnbmFtZSddOworJG1pbWVUeXBlID0gJF9HRVRbJ21pbWVUeXBlJ107Cisk
ZHByID0gJF9HRVRbJ2RwciddOworCitoZWFkZXIoJ0NvbnRlbnQtVHlwZTogJyAuICRtaW1lVHlw
ZSk7CitoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJG5hbWUpKTsKK2lmIChp
c3NldCgkX0dFVFsnZXhwaXJlcyddKSkKKyAgaGVhZGVyKCdDYWNoZS1jb250cm9sOiBtYXgtYWdl
PTAnKTsKK2Vsc2UKKyAgaGVhZGVyKCdDYWNoZS1jb250cm9sOiBtYXgtYWdlPTg2NDAwJyk7Cito
ZWFkZXIoJ0VUYWc6IGRwcmltYWdlJyk7CisKK2lmICgkX1NFUlZFUlsnSFRUUF9JRl9OT05FX01B
VENIJ10gPT0gJ2RwcmltYWdlJykgeworICBoZWFkZXIoJ0hUVFAvMS4xIDMwNCBOb3QgTW9kaWZp
ZWQnKTsKKyAgZXhpdDsKK30KKworaGVhZGVyKCdDb250ZW50LURQUjogJy4gJGRwcik7CisKK3Jl
YWRmaWxlKCRuYW1lKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>