<?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>41616</bug_id>
          
          <creation_ts>2010-07-05 07:57:21 -0700</creation_ts>
          <short_desc>[Chromium] DeviceOrientation plumbing</short_desc>
          <delta_ts>2010-08-10 06:17:05 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>39588</dependson>
    
    <dependson>42257</dependson>
    
    <dependson>42265</dependson>
    
    <dependson>43258</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andreip</cc>
    
    <cc>bulach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>fishd</cc>
    
    <cc>jorlow</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>246647</commentid>
    <comment_count>0</comment_count>
      <attachid>60534</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-05 07:57:21 -0700</bug_when>
    <thetext>Created attachment 60534
Patch

Provide an implementation of WebCore::DeviceOrientationClient for Chromium: DeviceOrientationClientImpl. This will in turn use a WebDeviceOrientationServiceBridge (implemented by WebDeviceOrientationServiceBridgeImpl) to communicate with a WebDeviceOrientationService on the Chromium side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246650</commentid>
    <comment_count>1</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-05 08:01:24 -0700</bug_when>
    <thetext>This is a work in progress as the patch for bug 39588 is not in yet and interfaces may change, but early comments are most welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247128</commentid>
    <comment_count>2</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2010-07-06 10:38:34 -0700</bug_when>
    <thetext>// Called by the service.
//   virtual void setLastOrientation(double alpha, double beta, double gamma) = 0;


What is this for? The spec doesn&apos;t define any concept of cached orientation (unlike Geolocation) so I am not sure what is this used for.


//#if ENABLE(DEVICE_ORIENTATION)
 //    if (!m_webViewImpl-&gt;page())
 //      return;
 //    m_webViewImpl-&gt;page()-&gt;deviceOrientation()-&gt;onDeviceOrientationChange(alpha, beta, gamma);
// #endif

Why is just the block of code guarded by the #ifdef. I think the entire file should be guarded.

&gt; explicit WebDeviceOrientationServiceBridgeImpl(DeviceOrientationClientImpl*  deviceOrientationClientImpl);

You should leave out the param name if all it does is to repeat the type name.

One question about the architecture: You have:

DeviceOrientationClientImpl owns a WebDeviceOrientationServiceBridgeImpl object, which has a pointer back to the client and a pointer to a WebDeviceOrientationService instance.

What is the point of the bridge? Why can&apos;t the ClientImpl simply own the WebDeviceOrientationService instance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247390</commentid>
    <comment_count>3</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-07 01:43:02 -0700</bug_when>
    <thetext>Thanks for the review!

(In reply to comment #2)
&gt; // Called by the service.
&gt; //   virtual void setLastOrientation(double alpha, double beta, double gamma) = 0;
&gt; 
&gt; 
&gt; What is this for? The spec doesn&apos;t define any concept of cached orientation (unlike Geolocation) so I am not sure what is this used for.
It&apos;s for communicating an orientation update back to the WebKit code (but you&apos;re right, there&apos;s no caching). The name seems ill chosen; I&apos;ll rename it to updateOrientation.

&gt; 
&gt; 
&gt; //#if ENABLE(DEVICE_ORIENTATION)
&gt;  //    if (!m_webViewImpl-&gt;page())
&gt;  //      return;
&gt;  //    m_webViewImpl-&gt;page()-&gt;deviceOrientation()-&gt;onDeviceOrientationChange(alpha, beta, gamma);
&gt; // #endif
&gt; 
&gt; Why is just the block of code guarded by the #ifdef. I think the entire file should be guarded.
It&apos;s there because if ENABLE(DEVICE_ORIENTATION) is false, then page()-&gt;deviceOrientation() does not compile.

I&apos;m not sure how enable guards are normally used, but I tried to follow Steve&apos;s code in bug 57646, where rather than guarding the whole files (e.g. DeviceOrientation.h and .cpp), the guards are put in place to make the code unavailable, i.e. it will never be executed if the switch is off, but it is still compiled.

I&apos;m happy to change this if it&apos;s wrong, but I need more convincing first :)

&gt; 
&gt; &gt; explicit WebDeviceOrientationServiceBridgeImpl(DeviceOrientationClientImpl*  deviceOrientationClientImpl);
&gt; 
&gt; You should leave out the param name if all it does is to repeat the type name.
Will fix.

&gt; 
&gt; One question about the architecture: You have:
&gt; 
&gt; DeviceOrientationClientImpl owns a WebDeviceOrientationServiceBridgeImpl object, which has a pointer back to the client and a pointer to a WebDeviceOrientationService instance.
&gt; 
&gt; What is the point of the bridge? Why can&apos;t the ClientImpl simply own the WebDeviceOrientationService instance?
Thanks for bringing this up. It&apos;s an area that I think is tricky, so please correct me if my reasoning seems wrong:

ClientImpl could own the WebDeviceOrientationService instance, but the WebDeviceOrientationService instance (DeviceOrientationDispatcher) would not be able to communicate back into WebKit. Since ClientImpl is not a public interface, code outside WebKit can&apos;t refer to it (and it can&apos;t be public as it relies on WebCore). So that&apos;s the role of the bridge: to provide an interface that code outside WebKit can use to communicate with the ClientImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249813</commentid>
    <comment_count>4</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-12 07:07:37 -0700</bug_when>
    <thetext>Marcus, can you please look at the logic in this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249814</commentid>
    <comment_count>5</comment_count>
      <attachid>60534</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-12 07:07:41 -0700</bug_when>
    <thetext>Comment on attachment 60534
Patch

WebKit/chromium/src/WebViewImpl.h:44
 +  #if ENABLE(DEVICE_ORIENTATION)
We shoudl just turn it on now at compile time, but hide it behind a runtime flag.  Then you don&apos;t need this stuff.

WebKit/chromium/src/WebDeviceOrientationServiceBridgeImpl.h:14
 +   *     * Neither the name of Google Inc. nor the names of its
Use 2 clause license

WebKit/chromium/src/WebDeviceOrientationServiceBridgeImpl.h:42
 +      explicit WebDeviceOrientationServiceBridgeImpl(DeviceOrientationClientImpl* deviceOrientationClientImpl);
only name parameters in .h files when it adds information

WebKit/chromium/src/WebDeviceOrientationServiceBridgeImpl.cpp:89
 +      m_webDeviceOrientationService = NULL;
use 0 not NULL in webkit code

WebKit/chromium/src/WebDeviceOrientationServiceBridgeImpl.cpp:35
 +  #include &quot;WebDeviceOrientationService.h&quot;
alpha order

WebKit/chromium/src/WebDeviceOrientationServiceBridgeImpl.cpp:14
 +   *     * Neither the name of Google Inc. nor the names of its
2 clause

WebKit/chromium/src/DeviceOrientationClientImpl.h:40
 +  } // namespace WebCore
don&apos;t need the //

WebKit/chromium/src/DeviceOrientationClientImpl.cpp:51
 +        return;
4 spaces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250052</commentid>
    <comment_count>6</comment_count>
      <attachid>60534</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-12 14:22:44 -0700</bug_when>
    <thetext>Comment on attachment 60534
Patch

WebKit/chromium/public/WebDeviceOrientationService.h:41
 +      virtual void attachBridge(WebDeviceOrientationServiceBridge* bridge) { WEBKIT_ASSERT_NOT_REACHED(); }
nit: no need for a parameter name.  webkit style is to exclude the parameter name
when it adds no information.

WebKit/chromium/public/WebDeviceOrientationServiceBridge.h:36
 +  // Bridge between a DeviceOrientationClientImpl and a WebDeviceOrientationService.
please avoid mentioning implementation classes in the public API.  it isn&apos;t
relevant to a consumer of the API.

WebKit/chromium/public/WebDeviceOrientationServiceBridge.h:37
 +  class WebDeviceOrientationServiceBridge {
usually we use the term Client to describe the interface that receives
notifications from some service.

Foo has a FooClient
FooService has a FooServiceClient

Is there some reason why Bridge is better than Client?

WebKit/chromium/public/WebDeviceOrientationService.h:41
 +      virtual void attachBridge(WebDeviceOrientationServiceBridge* bridge) { WEBKIT_ASSERT_NOT_REACHED(); }
can you have more than one bridge attached?  or is it limited
to just one bridge attached at a time?

have you considered just adding these methods to WebViewClient,
maybe named a bit differently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250482</commentid>
    <comment_count>7</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-13 07:14:25 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 60534 [details])
Thanks for the review.

&gt; WebKit/chromium/src/WebViewImpl.h:44
&gt;  +  #if ENABLE(DEVICE_ORIENTATION)
&gt; We shoudl just turn it on now at compile time, but hide it behind a runtime flag.  Then you don&apos;t need this stuff.
Hmm, but we can&apos;t turn it on before we have landed an implementation, and we can&apos;t land this implementation without the enable guards if the switch is off, so I guess the plan would be to keep them for now and remove them eventually?

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientationServiceBridgeImpl.h:14
&gt;  +   *     * Neither the name of Google Inc. nor the names of its
&gt; Use 2 clause license
Will fix.

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientationServiceBridgeImpl.h:42
&gt;  +      explicit WebDeviceOrientationServiceBridgeImpl(DeviceOrientationClientImpl* deviceOrientationClientImpl);
&gt; only name parameters in .h files when it adds information
Will fix.

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientationServiceBridgeImpl.cpp:89
&gt;  +      m_webDeviceOrientationService = NULL;
&gt; use 0 not NULL in webkit code
Will fix.

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientationServiceBridgeImpl.cpp:35
&gt;  +  #include &quot;WebDeviceOrientationService.h&quot;
&gt; alpha order
Will fix.

&gt; 
&gt; WebKit/chromium/src/WebDeviceOrientationServiceBridgeImpl.cpp:14
&gt;  +   *     * Neither the name of Google Inc. nor the names of its
&gt; 2 clause
Will fix

&gt; 
&gt; WebKit/chromium/src/DeviceOrientationClientImpl.h:40
&gt;  +  } // namespace WebCore
&gt; don&apos;t need the //
Will fix. What&apos;s the convention for this? Looking at the guidelines, they seem to put a comment like this at the closing of most namespaces, but not in every case?

&gt; 
&gt; WebKit/chromium/src/DeviceOrientationClientImpl.cpp:51
&gt;  +        return;
&gt; 4 spaces
Whoops. Thanks for pointing that out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250501</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-13 07:49:11 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 60534 [details] [details])
&gt; Thanks for the review.
&gt; 
&gt; &gt; WebKit/chromium/src/WebViewImpl.h:44
&gt; &gt;  +  #if ENABLE(DEVICE_ORIENTATION)
&gt; &gt; We shoudl just turn it on now at compile time, but hide it behind a runtime flag.  Then you don&apos;t need this stuff.
&gt; Hmm, but we can&apos;t turn it on before we have landed an implementation, and we can&apos;t land this implementation without the enable guards if the switch is off, so I guess the plan would be to keep them for now and remove them eventually?

I never really had a problem with this in IndexedDB.  I just turned it off via the runtime enabled mechanism.  If you explicitly turn it on and try to use it in javascript, yeah, it&apos;ll crash chrome, but that&apos;s OK.  Because it can&apos;t be accessed without the flag enabled it&apos;s fine.

Will that not work for you though?  If so, I&apos;m fine with you putting this stuff in.  It&apos;s just that I can&apos;t think of many features that have needed it.

&gt; &gt; 
&gt; &gt; WebKit/chromium/src/DeviceOrientationClientImpl.h:40
&gt; &gt;  +  } // namespace WebCore
&gt; &gt; don&apos;t need the //
&gt; Will fix. What&apos;s the convention for this? Looking at the guidelines, they seem to put a comment like this at the closing of most namespaces, but not in every case?

Cases like these are too obvious to bother with.  Where in the style guideline does it mandate this though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250538</commentid>
    <comment_count>9</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-13 08:55:54 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 60534 [details])
Thanks for the review.

&gt; WebKit/chromium/public/WebDeviceOrientationService.h:41
&gt;  +      virtual void attachBridge(WebDeviceOrientationServiceBridge* bridge) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; nit: no need for a parameter name.  webkit style is to exclude the parameter name
&gt; when it adds no information.
Fixed.

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientationServiceBridge.h:36
&gt;  +  // Bridge between a DeviceOrientationClientImpl and a WebDeviceOrientationService.
&gt; please avoid mentioning implementation classes in the public API.  it isn&apos;t
&gt; relevant to a consumer of the API.
Hmm, removing this comment as I have trouble finding a sensible alternative.

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientationServiceBridge.h:37
&gt;  +  class WebDeviceOrientationServiceBridge {
&gt; usually we use the term Client to describe the interface that receives
&gt; notifications from some service.
&gt; 
&gt; Foo has a FooClient
&gt; FooService has a FooServiceClient
&gt; 
&gt; Is there some reason why Bridge is better than Client?
Well, there is already a DeviceOrientationClient, but on the WebCore side. And that&apos;s why we provide a bridge: so the service can send notifications to it (the bridge is being renamed to just WebDeviceOrientationBridge, btw). I guess we could also have a WebKit::DeviceOrientationClient, but I think that would be more confusing?

&gt; 
&gt; WebKit/chromium/public/WebDeviceOrientationService.h:41
&gt;  +      virtual void attachBridge(WebDeviceOrientationServiceBridge* bridge) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; can you have more than one bridge attached?  or is it limited
&gt; to just one bridge attached at a time?
It&apos;s built to be able to have multiple bridges attached at the same time.

&gt; 
&gt; have you considered just adding these methods to WebViewClient,
&gt; maybe named a bit differently?
I hadn&apos;t, as I started off mimicking the geolocation design. I guess one could certainly put it in there, but would it be preferable? I kind of like having it in its own class, as WebViewClient is quite large, but it&apos;s not something I feel strongly about.



(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (From update of attachment 60534 [details] [details] [details])
&gt; &gt; Thanks for the review.
&gt; &gt; 
&gt; &gt; &gt; WebKit/chromium/src/WebViewImpl.h:44
&gt; &gt; &gt;  +  #if ENABLE(DEVICE_ORIENTATION)
&gt; &gt; &gt; We shoudl just turn it on now at compile time, but hide it behind a runtime flag.  Then you don&apos;t need this stuff.
&gt; &gt; Hmm, but we can&apos;t turn it on before we have landed an implementation, and we can&apos;t land this implementation without the enable guards if the switch is off, so I guess the plan would be to keep them for now and remove them eventually?
&gt; 
&gt; I never really had a problem with this in IndexedDB.  I just turned it off via the runtime enabled mechanism.  If you explicitly turn it on and try to use it in javascript, yeah, it&apos;ll crash chrome, but that&apos;s OK.  Because it can&apos;t be accessed without the flag enabled it&apos;s fine.
&gt; 
&gt; Will that not work for you though?  If so, I&apos;m fine with you putting this stuff in.  It&apos;s just that I can&apos;t think of many features that have needed it.
I will look into this.

&gt; 
&gt; &gt; &gt; 
&gt; &gt; &gt; WebKit/chromium/src/DeviceOrientationClientImpl.h:40
&gt; &gt; &gt;  +  } // namespace WebCore
&gt; &gt; &gt; don&apos;t need the //
&gt; &gt; Will fix. What&apos;s the convention for this? Looking at the guidelines, they seem to put a comment like this at the closing of most namespaces, but not in every case?
&gt; 
&gt; Cases like these are too obvious to bother with.  Where in the style guideline does it mandate this though?
I don&apos;t think it&apos;s mandated, but they seem to do it like this in the examples involving namespaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250598</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-07-13 10:24:02 -0700</bug_when>
    <thetext>&gt; &gt; WebKit/chromium/public/WebDeviceOrientationServiceBridge.h:37
&gt; &gt;  +  class WebDeviceOrientationServiceBridge {
&gt; &gt; usually we use the term Client to describe the interface that receives
&gt; &gt; notifications from some service.
&gt; &gt; 
&gt; &gt; Foo has a FooClient
&gt; &gt; FooService has a FooServiceClient
&gt; &gt; 
&gt; &gt; Is there some reason why Bridge is better than Client?
&gt; Well, there is already a DeviceOrientationClient, but on the WebCore side. And 
&gt; that&apos;s why we provide a bridge: so the service can send notifications to it (the 
&gt; bridge is being renamed to just WebDeviceOrientationBridge, btw). I guess we could 
&gt; also have a WebKit::DeviceOrientationClient, but I think that would be more 
&gt; confusing?

My suggestion is to name this interface WebKit::WebDeviceOrientationClient.  It is
a reflection of WebCore::DeviceOrientationClient, so naming it consistently makes
good sense.  DeviceOrientationClientImpl is an adapter between DeviceOrientationClient
and WebDeviceOrientationClient.  We have several examples of this very pattern already.


&gt; &gt; WebKit/chromium/public/WebDeviceOrientationService.h:41
&gt; &gt;  +      virtual void attachBridge(WebDeviceOrientationServiceBridge* bridge) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; &gt; can you have more than one bridge attached?  or is it limited
&gt; &gt; to just one bridge attached at a time?
&gt; It&apos;s built to be able to have multiple bridges attached at the same time.

I guess I was wondering why that is necessary.


&gt; &gt; have you considered just adding these methods to WebViewClient,
&gt; &gt; maybe named a bit differently?
&gt; I hadn&apos;t, as I started off mimicking the geolocation design. I guess one could certainly put 
&gt; it in there, but would it be preferable? I kind of like having it in its own class, as 
&gt; WebViewClient is quite large, but it&apos;s not something I feel strongly about.

Notice that geolocation uses the terms Bridge even at the WebCore level.

I&apos;m concerned that this patch is way more complicated than it needs to be.  I&apos;m not even
convinced that WebDeviceOrientationClient is necessary now.

When I look at the WebCore interfaces, I just see DeviceOrientationClient and
DeviceOrientationController.  It seems like you want to route the client methods to the
embedder and have the embedder call the controller method when the orientation changes.
Given that there are only 3 methods in question, perhaps it would be simpler to just
add those to WebView and WebViewClient.

If you wanted to create sub-interfaces to help group things, then I think you can do so like so:

  class WebDeviceOrientationClient {
  public:
      virtual void startUpdating() = 0;
      virtual void stopUpdating() = 0;
  };

  class WebDeviceOrientationController {
  public:
      virtual void setClient(WebDeviceOrientationClient*) = 0;
      virtual void didChangeDeviceOrientation(double, double, double) = 0;
  };

  class WebView {
  public:
      ...
      virtual WebDeviceOrientationController* deviceOrientationController() = 0;
  };

But to be honest, I would prefer that you just add the methods to WebView and WebViewClient.  I don&apos;t
think there are enough methods here to warrant the additional interfaces.  Or, do you plan to add
more in the future?

Implementation wise, you can make DeviceOrientationClientImpl implement both the 
WebDeviceOrientationClient and WebDeviceOrientationController interfaces.  It can
be owned by the WebViewImpl just like the EditorClientImpl and friends.

NOTE:  I&apos;m surprised by the name &quot;onDeviceOrientationChange&quot; used by DeviceOrientationController.  That
doesn&apos;t match WebKit conventions, which is usually to avoid &quot;on&quot; in favor of &quot;did&quot;.  That&apos;s why I
suggested calling the corresponding WebKit API method didChangeDeviceOrientation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254783</commentid>
    <comment_count>11</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-22 07:43:15 -0700</bug_when>
    <thetext>Sorry for the delay. The underlying code is now all in place. Thank you very much for all comments so far.

Uploading rebased patch, refactored to use Darin&apos;s suggestion of just adding the methods to WebView and WebViewClient which simplified the design a great deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254786</commentid>
    <comment_count>12</comment_count>
      <attachid>62295</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-22 07:43:46 -0700</bug_when>
    <thetext>Created attachment 62295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254797</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-22 08:13:06 -0700</bug_when>
    <thetext>Attachment 62295 did not build on chromium:
Build output: http://queues.webkit.org/results/3413726</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257103</commentid>
    <comment_count>14</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-28 04:33:54 -0700</bug_when>
    <thetext>Rebasing and hoping it will build on the cr-linux bot (WebKit/chromium/DEPS referred to too old Chromium revision last time).

Also: ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257104</commentid>
    <comment_count>15</comment_count>
      <attachid>62811</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-28 04:34:23 -0700</bug_when>
    <thetext>Created attachment 62811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257128</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 06:11:25 -0700</bug_when>
    <thetext>Attachment 62811 did not build on chromium:
Build output: http://queues.webkit.org/results/3610365</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257194</commentid>
    <comment_count>17</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-07-28 09:19:03 -0700</bug_when>
    <thetext>Darin, are you satisfied?

Hans, can you please rebase this (since Steve just refactored the page clien code a bit)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257200</commentid>
    <comment_count>18</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-07-28 09:28:58 -0700</bug_when>
    <thetext>You might want to hold of on submitting this until Bug 39589 is fixed. That bug attempts to add a shared mock for testing DeviceOrientation and may affect the plumbing for the DeviceOrientationClient in WebKit. Unfortunately, it&apos;s still embroiled in significant debate. Comments welcome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257216</commentid>
    <comment_count>19</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-28 09:53:54 -0700</bug_when>
    <thetext>Rebasing.

The reason it doesn&apos;t build on cr-linux is I forgot to add the compile-time enable flag in features.gypi. That is on its way in in Bug 43122.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257217</commentid>
    <comment_count>20</comment_count>
      <attachid>62840</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-28 09:54:24 -0700</bug_when>
    <thetext>Created attachment 62840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257293</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 12:31:43 -0700</bug_when>
    <thetext>Attachment 62840 did not build on chromium:
Build output: http://queues.webkit.org/results/3399978</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257339</commentid>
    <comment_count>22</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-07-28 13:35:26 -0700</bug_when>
    <thetext>I have some (probably stupid) questions about the design that will help me do the same for AccelerometerEvents. I expect I misunderstand the way WebKit approaches these things, so sorry in advance.

Why do you need the didChangeDeviceOrientation method on WebView? My thought was that your real implementation would be the ClientImpl (or an instance of it), and when the orientation actually changes it gets to the controller via the view -&gt; page -&gt; controller link. It seems weird (to me) that you have the ClientImpl called by WebView, and then have it go back to the view to call the controller. 

In other words, why doesn&apos;t your platform implementation of the client just call directly into the controller?

Here&apos;s what I was thinking of doing (for Accelerometer):

A WebAccelerometerClient class in WebKit/WebCoreSupport that implements the WebCore::AccelerometerClient interface. Then the real implementation is a WebAccelerometerClientCoreMotion object. This is instantiated in the WebView platform code, and passed in as you construct the Page (and thus given to the AccelerometerController). 

That way we don&apos;t need the start/stopDeviceOrientationUpdates methods on the WebView client either. The controller already tells the client when to start or stop updating. Or is there some reason you want WebView to be able to start/stop?

Again, sorry if these questions show my lack of understanding!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257657</commentid>
    <comment_count>23</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-07-29 06:54:12 -0700</bug_when>
    <thetext>Partially answering my own question: you need the API on WebView because the Page is private (at least it is in the mac build).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258231</commentid>
    <comment_count>24</comment_count>
      <attachid>62840</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-07-30 09:37:32 -0700</bug_when>
    <thetext>Comment on attachment 62840
Patch

Cancelling review request for now as the design might change a bit after Bug 39589 went in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262648</commentid>
    <comment_count>25</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-08-10 06:17:05 -0700</bug_when>
    <thetext>Bug 43258 ended up doing the whole plumbing, so marking this fixed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60534</attachid>
            <date>2010-07-05 07:57:21 -0700</date>
            <delta_ts>2010-07-22 07:43:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>deviceorientation.patch</filename>
            <type>text/plain</type>
            <size>21242</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKaW5kZXggZTJkYTFiNC4uYzQ0OGU3MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTEx
MSw2ICsxMTEsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9udGVu
ZENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzTWVzc2FnZURh
dGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc01lc3NhZ2VUcmFuc3Bv
cnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvblNlcnZp
Y2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvblNlcnZp
Y2VCcmlkZ2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEb2N1bWVudC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkRyYWdEYXRhLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViRWRpdGluZ0FjdGlvbi5oJywKQEAgLTI1Myw2ICsyNTUsOCBAQAogICAgICAgICAg
ICAgICAgICdzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9EZXZUb29sc1JQQy5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RldlRvb2xzUlBDSlMuaCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9E
cmFnQ2xpZW50SW1wbC5jcHAnLApAQCAtMzMyLDYgKzMzNiw4IEBACiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRl
dlRvb2xzRnJvbnRlbmRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29s
c0Zyb250ZW5kSW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0
aW9uU2VydmljZUJyaWRnZUltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uU2VydmljZUJyaWRnZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJEb2N1bWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRHJhZ0RhdGEuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkVsZW1lbnQuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlLmggYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uU2VydmljZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhYWIxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uU2VydmljZS5oCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2VfaAorI2RlZmluZSBX
ZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2VfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlQnJp
ZGdlOworCitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2UgeworcHVibGljOgorICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2hCcmlkZ2UoV2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlQnJp
ZGdlKiBicmlkZ2UpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRldGFjaEJyaWRnZShXZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2VCcmlkZ2UqIGJy
aWRnZSkgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlX2gKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2
aWNlQnJpZGdlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9yaWVudGF0aW9u
U2VydmljZUJyaWRnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZDgy
YzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU9y
aWVudGF0aW9uU2VydmljZUJyaWRnZS5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZp
Y2VPcmllbnRhdGlvblNlcnZpY2VCcmlkZ2VfaAorI2RlZmluZSBXZWJEZXZpY2VPcmllbnRhdGlv
blNlcnZpY2VCcmlkZ2VfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gQnJpZGdlIGJldHdl
ZW4gYSBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwgYW5kIGEgV2ViRGV2aWNlT3JpZW50YXRp
b25TZXJ2aWNlLgorY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlQnJpZGdlIHsKK3B1
YmxpYzoKKyAgICAvLyBDYWxsZWQgYnkgdGhlIHNlcnZpY2UuCisgICAgdmlydHVhbCB2b2lkIHNl
dExhc3RPcmllbnRhdGlvbihkb3VibGUgYWxwaGEsIGRvdWJsZSBiZXRhLCBkb3VibGUgZ2FtbWEp
ID0gMDsKKworICAgIC8vIENhbGxlZCBieSB0aGUgY2xpZW50LgorICAgIHZpcnR1YWwgdm9pZCBz
dGFydFVwZGF0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVu
dGF0aW9uU2VydmljZUJyaWRnZV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CmluZGV4IGE1OTI4OWQuLjY1NDE4NWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0Ns
aWVudC5oCkBAIC00NCw2ICs0NCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdDsKK2NsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uU2VydmljZTsK
IGNsYXNzIFdlYkRyYWdEYXRhOwogY2xhc3MgV2ViRmlsZUNob29zZXJDb21wbGV0aW9uOwogY2xh
c3MgV2ViRnJhbWU7CkBAIC0zMTcsNiArMzE4LDExIEBAIHB1YmxpYzoKICAgICAvLyBBY2Nlc3Mg
dGhlIGVtYmVkZGVyIEFQSSBmb3IgZ2VvbG9jYXRpb24gc2VydmljZXMuCiAgICAgdmlydHVhbCBX
ZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2VydmljZSogZ2VvbG9jYXRpb25TZXJ2aWNlKCkgeyByZXR1
cm4gMDsgfQogCisgICAgLy8gRGV2aWNlIE9yaWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBBY2Nlc3MgdGhlIGVtYmVk
ZGVyIEFQSSBmb3IgZGV2aWNlIG9yaWVudGF0aW9uIHNlcnZpY2VzLgorICAgIHZpcnR1YWwgV2Vi
S2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2UqIGRldmljZU9yaWVudGF0aW9uU2Vydmlj
ZSgpIHsgcmV0dXJuIDA7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3Q2xpZW50KCkgeyB9
CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNs
aWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiZWY2ZTUKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50SW1wbC5jcHAKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbi5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsLmgiCisjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6RGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRJbXBsKFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCkKKyAgICAgICAgOiBt
X3dlYlZpZXdJbXBsKHdlYlZpZXdJbXBsKQorICAgICAgICAsIG1fYnJpZGdlKG5ldyBXZWJEZXZp
Y2VPcmllbnRhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKHRoaXMpKQoreworfQorCit2b2lkIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6c2V0TGFzdE9yaWVudGF0aW9uKGRvdWJsZSBhbHBoYSwg
ZG91YmxlIGJldGEsIGRvdWJsZSBnYW1tYSkKK3sKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQorICAgIGlmICghbV93ZWJWaWV3SW1wbC0+cGFnZSgpKQorICAgICAgcmV0dXJuOworICAg
IG1fd2ViVmlld0ltcGwtPnBhZ2UoKS0+ZGV2aWNlT3JpZW50YXRpb24oKS0+b25EZXZpY2VPcmll
bnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpOworI2VuZGlmCit9CisKK3ZvaWQgRGV2
aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBtX2JyaWRn
ZS0+c3RhcnRVcGRhdGluZygpOworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50SW1w
bDo6c3RvcFVwZGF0aW5nKCkKK3sKKyAgICBtX2JyaWRnZS0+c3RvcFVwZGF0aW5nKCk7Cit9CisK
K1dlYkNvcmU6OlBhZ2UqIERldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6cGFnZSgpCit7Cisg
ICAgcmV0dXJuIG1fd2ViVmlld0ltcGwtPnBhZ2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU9yaWVudGF0aW9uQ2xp
ZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudElt
cGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmE4YTA5Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudElt
cGwuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBs
X2gKKyNkZWZpbmUgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsX2gKKworI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25T
ZXJ2aWNlQnJpZGdlLmgiCisjaW5jbHVkZSAiT3duUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFBhZ2U7Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViVmlld0ltcGw7CisKK2NsYXNzIERldmljZU9yaWVudGF0aW9uQ2xpZW50
SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudCB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKFdlYlZpZXdJbXBsKiB3
ZWJWaWV3SW1wbCk7CisgICAgdm9pZCBzZXRMYXN0T3JpZW50YXRpb24oZG91YmxlIGFscGhhLCBk
b3VibGUgYmV0YSwgZG91YmxlIGdhbW1hKTsKKworICAgIC8vIEZyb20gV2ViQ29yZTo6RGV2aWNl
T3JpZW50YXRpb25DbGllbnQuCisgICAgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdm9pZCBz
dG9wVXBkYXRpbmcoKTsKKworICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UoKTsKKworcHJpdmF0ZToK
KyAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKKyAgICBPd25QdHI8V2ViRGV2aWNlT3Jp
ZW50YXRpb25TZXJ2aWNlQnJpZGdlPiBtX2JyaWRnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsX2gKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlQnJpZGdl
SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVudGF0aW9uU2Vydmlj
ZUJyaWRnZUltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2Yjc2
NzQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU9yaWVu
dGF0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uU2VydmljZUJyaWRnZUltcGwu
aCIKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUg
IldlYkRldmljZU9yaWVudGF0aW9uU2VydmljZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJDaHJvbWVDbGllbnRJbXBsLmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorI2lu
Y2x1ZGUgIkNocm9tZS5oIgorI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpXZWJEZXZp
Y2VPcmllbnRhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKERldmljZU9yaWVudGF0aW9uQ2xpZW50SW1w
bCogZGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKQorICAgICAgICA6IG1fZGV2aWNlT3JpZW50
YXRpb25DbGllbnRJbXBsKGRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbCkKKyAgICAgICAgLCBt
X3dlYkRldmljZU9yaWVudGF0aW9uU2VydmljZSgwKQoreworfQorCitXZWJEZXZpY2VPcmllbnRh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsOjp+V2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlQnJpZGdl
SW1wbCgpCit7CisgICAgaWYgKG1fd2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlKQorICAgICAg
ICBkZXRhY2goKTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2VCcmlkZ2VJ
bXBsOjpzZXRMYXN0T3JpZW50YXRpb24oZG91YmxlIGFscGhhLCBkb3VibGUgYmV0YSwgZG91Ymxl
IGdhbW1hKQoreworICAgIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLT5zZXRMYXN0T3Jp
ZW50YXRpb24oYWxwaGEsIGJldGEsIGdhbW1hKTsKK30KKwordm9pZCBXZWJEZXZpY2VPcmllbnRh
dGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBpZiAoIW1fd2Vi
RGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlKQorICAgICAgICBhdHRhY2goKTsKK30KKwordm9pZCBX
ZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2VCcmlkZ2VJbXBsOjpzdG9wVXBkYXRpbmcoKQorewor
ICAgIGRldGFjaCgpOworfQorCit2b2lkIFdlYkRldmljZU9yaWVudGF0aW9uU2VydmljZUJyaWRn
ZUltcGw6OmF0dGFjaCgpCit7CisgICAgQVNTRVJUKCFtX3dlYkRldmljZU9yaWVudGF0aW9uU2Vy
dmljZSk7CisgICAgQ2hyb21lQ2xpZW50SW1wbCogY2hyb21lQ2xpZW50SW1wbCA9IHN0YXRpY19j
YXN0PENocm9tZUNsaWVudEltcGwqPihtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC0+cGFn
ZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkpOworICAgIFdlYlZpZXdDbGllbnQqIHdlYlZpZXdDbGll
bnQgPSBjaHJvbWVDbGllbnRJbXBsLT53ZWJWaWV3KCktPmNsaWVudCgpOworICAgIFdlYkRldmlj
ZU9yaWVudGF0aW9uU2VydmljZSogd2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlID0gd2ViVmll
d0NsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlKCk7CisKKyAgICBpZiAod2ViRGV2aWNl
T3JpZW50YXRpb25TZXJ2aWNlKSB7CisgICAgICAgIHdlYkRldmljZU9yaWVudGF0aW9uU2Vydmlj
ZS0+YXR0YWNoQnJpZGdlKHRoaXMpOworICAgICAgICBtX3dlYkRldmljZU9yaWVudGF0aW9uU2Vy
dmljZSA9IHdlYkRldmljZU9yaWVudGF0aW9uU2VydmljZTsKKyAgICB9Cit9CisKK3ZvaWQgV2Vi
RGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlQnJpZGdlSW1wbDo6ZGV0YWNoKCkKK3sKKyAgICBBU1NF
UlQobV93ZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2UpOworICAgIG1fd2ViRGV2aWNlT3JpZW50
YXRpb25TZXJ2aWNlLT5kZXRhY2hCcmlkZ2UodGhpcyk7CisgICAgbV93ZWJEZXZpY2VPcmllbnRh
dGlvblNlcnZpY2UgPSBOVUxMOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJraXQKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRpb25TZXJ2aWNlQnJpZGdl
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2VC
cmlkZ2VJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2YjUyZAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlT3JpZW50YXRp
b25TZXJ2aWNlQnJpZGdlSW1wbC5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTAsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VP
cmllbnRhdGlvblNlcnZpY2VCcmlkZ2VJbXBsX2gKKyNkZWZpbmUgV2ViRGV2aWNlT3JpZW50YXRp
b25TZXJ2aWNlQnJpZGdlSW1wbF9oCisKKyNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvblNl
cnZpY2VCcmlkZ2UuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBEZXZpY2VPcmllbnRh
dGlvbkNsaWVudEltcGw7CitjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2U7CisKK2Ns
YXNzIFdlYkRldmljZU9yaWVudGF0aW9uU2VydmljZUJyaWRnZUltcGwgOiBwdWJsaWMgV2ViRGV2
aWNlT3JpZW50YXRpb25TZXJ2aWNlQnJpZGdlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJE
ZXZpY2VPcmllbnRhdGlvblNlcnZpY2VCcmlkZ2VJbXBsKERldmljZU9yaWVudGF0aW9uQ2xpZW50
SW1wbCogZGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKTsKKyAgICB+V2ViRGV2aWNlT3JpZW50
YXRpb25TZXJ2aWNlQnJpZGdlSW1wbCgpOworICAgIHZvaWQgc2V0TGFzdE9yaWVudGF0aW9uKGRv
dWJsZSBhbHBoYSwgZG91YmxlIGJldGEsIGRvdWJsZSBnYW1tYSk7CisgICAgdm9pZCBzdGFydFVw
ZGF0aW5nKCk7CisgICAgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKworcHJpdmF0ZToKKyAgICB2b2lk
IGF0dGFjaCgpOworICAgIHZvaWQgZGV0YWNoKCk7CisKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNs
aWVudEltcGwqIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOworICAgIFdlYkRldmljZU9y
aWVudGF0aW9uU2VydmljZSogbV93ZWJEZXZpY2VPcmllbnRhdGlvblNlcnZpY2U7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkRldmljZU9yaWVudGF0aW9uU2Vy
dmljZUJyaWRnZUltcGxfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA0NWI5
MTE3Li43NmQ0NDRkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMjIxLDYg
KzIyMSw5IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQs
IFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgLCBtX2Nocm9tZUNsaWVudElt
cGwodGhpcykKICAgICAsIG1fY29udGV4dE1lbnVDbGllbnRJbXBsKHRoaXMpCiAgICAgLCBtX2Ry
YWdDbGllbnRJbXBsKHRoaXMpCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyAgICAs
IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKHRoaXMpCisjZW5kaWYKICAgICAsIG1fZWRp
dG9yQ2xpZW50SW1wbCh0aGlzKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnRJbXBsKHRoaXMpCiAg
ICAgLCBtX29ic2VydmVkTmV3TmF2aWdhdGlvbihmYWxzZSkKQEAgLTI2Myw3ICsyNjYsMTEgQEAg
V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9v
bHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICBpZiAoZGV2VG9vbHNDbGllbnQpCiAgICAgICAg
IG1fZGV2VG9vbHNBZ2VudCA9IG5ldyBXZWJEZXZUb29sc0FnZW50SW1wbCh0aGlzLCBkZXZUb29s
c0NsaWVudCk7CiAKKyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQorICAgIG1fcGFnZS5z
ZXQobmV3IFBhZ2UoJm1fY2hyb21lQ2xpZW50SW1wbCwgJm1fY29udGV4dE1lbnVDbGllbnRJbXBs
LCAmbV9lZGl0b3JDbGllbnRJbXBsLCAmbV9kcmFnQ2xpZW50SW1wbCwgJm1faW5zcGVjdG9yQ2xp
ZW50SW1wbCwgMCwgMCwgJm1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKSk7CisjZWxzZQog
ICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UoJm1fY2hyb21lQ2xpZW50SW1wbCwgJm1fY29udGV4dE1l
bnVDbGllbnRJbXBsLCAmbV9lZGl0b3JDbGllbnRJbXBsLCAmbV9kcmFnQ2xpZW50SW1wbCwgJm1f
aW5zcGVjdG9yQ2xpZW50SW1wbCwgMCwgMCwgMCkpOworI2VuZGlmCiAKICAgICAvLyB0aGUgcGFn
ZSB3aWxsIHRha2Ugb3duZXJzaGlwIG9mIHRoZSB2YXJpb3VzIGNsaWVudHMKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCmluZGV4IGRiMmExZDIuLjhiMDE0OWEgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKQEAgLTQxLDYgKzQxLDkgQEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3RD
bGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkNv
bnRleHRNZW51Q2xpZW50SW1wbC5oIgorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisj
aW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmgiCisjZW5kaWYKICNpbmNsdWRl
ICJEcmFnQ2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudEltcGwuaCIKICNpbmNs
dWRlICJHcmFwaGljc0xheWVyLmgiCkBAIC0zNzQsNiArMzc3LDkgQEAgcHJpdmF0ZToKICAgICBC
YWNrRm9yd2FyZExpc3RDbGllbnRJbXBsIG1fYmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbDsKICAg
ICBDaHJvbWVDbGllbnRJbXBsIG1fY2hyb21lQ2xpZW50SW1wbDsKICAgICBDb250ZXh0TWVudUNs
aWVudEltcGwgbV9jb250ZXh0TWVudUNsaWVudEltcGw7CisjaWYgRU5BQkxFKERFVklDRV9PUklF
TlRBVElPTikKKyAgICBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwgbV9kZXZpY2VPcmllbnRh
dGlvbkNsaWVudEltcGw7CisjZW5kaWYKICAgICBEcmFnQ2xpZW50SW1wbCBtX2RyYWdDbGllbnRJ
bXBsOwogICAgIEVkaXRvckNsaWVudEltcGwgbV9lZGl0b3JDbGllbnRJbXBsOwogICAgIEluc3Bl
Y3RvckNsaWVudEltcGwgbV9pbnNwZWN0b3JDbGllbnRJbXBsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62295</attachid>
            <date>2010-07-22 07:43:46 -0700</date>
            <delta_ts>2010-07-28 04:34:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41616-20100722154342.patch</filename>
            <type>text/plain</type>
            <size>12914</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDNhZGQ5NTYwNTA4NzViYjAzODRlZDU3YjVlNDkyZjE1OTRmMzJjMjQu
LjVkNTA4MWRhZGNmYjBiZDhjZmYxMzcwZGEwYTA1YzAwM2Q4YmE3YzkgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMzIEBACisyMDEwLTA3LTIyICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0Nocm9taXVtXSBEZXZpY2VPcmllbnRhdGlvbiBwbHVtYmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE2MTYKKworICAgICAgICBQbHVtYmluZyBm
b3IgZGV2aWNlIG9yaWVudGF0aW9uIGluIENocm9taXVtLgorICAgICAgICBQcm92aWRlIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50SW1wbCB0aGF0IGNhbGxzIG9uCisgICAgICAgIFdlYlZpZXdDbGll
bnQgdG8gc3RhcnQgYW5kIHN0b3Agb3JpZW50YXRpb24gdXBkYXRlcywKKyAgICAgICAgYW5kIHJl
Y2VpdmVzIHVwZGF0ZXMgZnJvbSB0aGUgV2ViVmlldyBpbnN0YW5jZSwgV2ViVmlld0ltcGwuCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAg
ICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Ns
aWVudDo6c3RhcnREZXZpY2VPcmllbnRhdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50OjpzdG9wRGV2aWNlT3JpZW50YXRpb25VcGRhdGVzKToKKyAgICAgICAgKiBz
cmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjp+RGV2
aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50
YXRpb25DbGllbnRJbXBsOjp1cGRhdGVPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjpsYXN0T3JpZW50YXRpb24pOgor
ICAgICAgICAqIHNyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuaDogQWRkZWQuCisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZENoYW5nZURl
dmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0w
Ny0yMSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA2NmVmNTdlZGEw
YzExNTJiOTg4OWMwOGE5MDIwM2M5N2ZjYWEyYWJmLi4xZmE3NzdlNmE1M2YyM2E5ZWU5MTBiM2Fl
NzZiN2M2ZTg2ZDFhYTM0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAor
KysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjg5LDYgKzI4OSw4IEBACiAgICAg
ICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL0RldlRvb2xzUlBDLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRGV2VG9vbHNSUENK
Uy5oJywKKyAgICAgICAgICAgICAgICAnc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5j
cHAnLAorICAgICAgICAgICAgICAgICdzcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAn
c3JjL0RyYWdDbGllbnRJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXcuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDI2
ZDcyNjkzMjQzNGI4MmVhMTg4YjlkNTUwNGRlNTZkMmIzYmQ0NmEuLmNlNjU5ZjYwMGIxZDI0MDA0
Y2ExYjEwMWRmOTA2MTFkNTY5ZjFlZjAgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlldy5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC0z
MzksNiArMzM5LDEwIEBAIHB1YmxpYzoKICAgICAvLyBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgYWxy
ZWFkeSBleGlzdC4KICAgICB2aXJ0dWFsIFdlYkdMRVMyQ29udGV4dCogZ2xlczJDb250ZXh0KCkg
PSAwOwogCisgICAgLy8gRGV2aWNlIE9yaWVudGF0aW9uIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
RGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9v
bCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3Vi
bGUgZ2FtbWEpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3KCkge30KIH07CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDExZmIyMzNlZDgzNmFkOTIyMDEw
NmIzMDNhMDllNDZhZjkzYmEwOTYuLmJhYWU3NjgzMGViMzUzNDAwOWQ2ZjY5OTg2ZDRkMGEwMTJj
YTA5MGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC0zMzMsNiAr
MzMzLDEyIEBAIHB1YmxpYzoKICAgICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3IgZ2Vv
bG9jYXRpb24gc2VydmljZXMuCiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYkdlb2xvY2F0aW9uU2Vy
dmljZSogZ2VvbG9jYXRpb25TZXJ2aWNlKCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gRGV2aWNl
IE9yaWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKyAgICAvLyBBc2sgdGhlIGVtYmVkZGVyIHRvIHN0YXJ0IHNlbmRpbmcgZGV2aWNl
IG9yaWVudGF0aW9uIHVwZGF0ZXMuCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RGV2aWNlT3JpZW50
YXRpb25VcGRhdGVzKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHN0b3BEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZXMoKSB7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3Q2xpZW50KCkgeyB9CiB9
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVu
dEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudElt
cGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjAxMDFmYjI4NDgzMGEyNzJiMDQ5ZjdmYzllNWFhMTEwOWIxNWI3
YjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU9yaWVudGF0
aW9uQ2xpZW50SW1wbC5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuaCIKKworI2luY2x1
ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250
cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIK
KyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRGV2aWNl
T3JpZW50YXRpb25DbGllbnRJbXBsOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwoV2ViVmll
d0ltcGwqIHdlYlZpZXdJbXBsKQorICAgICAgICA6IG1fd2ViVmlld0ltcGwod2ViVmlld0ltcGwp
Cit7Cit9CisKK0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6fkRldmljZU9yaWVudGF0aW9u
Q2xpZW50SW1wbCgpCit7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjp1
cGRhdGVPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29s
IGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJs
ZSBnYW1tYSkKK3sKKyAgICBtX2xhc3RPcmllbnRhdGlvbiA9IFdlYkNvcmU6OkRldmljZU9yaWVu
dGF0aW9uOjpjcmVhdGUoY2FuUHJvdmlkZUFscGhhLCBhbHBoYSwgY2FuUHJvdmlkZUJldGEsIGJl
dGEsIGNhblByb3ZpZGVHYW1tYSwgZ2FtbWEpOworICAgIGlmICghbV93ZWJWaWV3SW1wbC0+cGFn
ZSgpKQorICAgICAgICByZXR1cm47CisgICAgbV93ZWJWaWV3SW1wbC0+cGFnZSgpLT5kZXZpY2VP
cmllbnRhdGlvbkNvbnRyb2xsZXIoKS0+ZGlkQ2hhbmdlRGV2aWNlT3JpZW50YXRpb24obV9sYXN0
T3JpZW50YXRpb24uZ2V0KCkpOworfQorCit2b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50SW1w
bDo6c3RhcnRVcGRhdGluZygpCit7CisgICAgbV93ZWJWaWV3SW1wbC0+Y2xpZW50KCktPnN0YXJ0
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVzKCk7Cit9CisKK3ZvaWQgRGV2aWNlT3JpZW50YXRpb25D
bGllbnRJbXBsOjpzdG9wVXBkYXRpbmcoKQoreworICAgIG1fd2ViVmlld0ltcGwtPmNsaWVudCgp
LT5zdG9wRGV2aWNlT3JpZW50YXRpb25VcGRhdGVzKCk7Cit9CisKK1dlYkNvcmU6OkRldmljZU9y
aWVudGF0aW9uKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGw6Omxhc3RPcmllbnRhdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGFzdE9yaWVudGF0aW9uLmdldCgpOworfQorCisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZp
Y2VPcmllbnRhdGlvbkNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjIzNjJlOGY2YjAzZTgwOWRkNjhmYTlh
NWI3OWNlZGM4ODVkMmQ4YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsX2gKKyNkZWZpbmUgRGV2aWNlT3JpZW50
YXRpb25DbGllbnRJbXBsX2gKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50Lmgi
CisjaW5jbHVkZSAiUmVmUHRyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERldmlj
ZU9yaWVudGF0aW9uOworY2xhc3MgUGFnZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFz
cyBXZWJWaWV3SW1wbDsKKworY2xhc3MgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsIDogcHVi
bGljIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwoV2ViVmlld0ltcGwqKTsKKyAgICB+RGV2
aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKCk7CisgICAgdm9pZCB1cGRhdGVPcmllbnRhdGlvbihi
b29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBk
b3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CisKKyAgICAv
LyBGcm9tIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50LgorICAgIHZvaWQgc3RhcnRV
cGRhdGluZygpOworICAgIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgV2ViQ29yZTo6RGV2aWNl
T3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdl
YlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOworICAgIFJlZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmll
bnRhdGlvbj4gbV9sYXN0T3JpZW50YXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIERldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbF9oCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCmluZGV4IDgzYzg4MjI4NjViYjNmZTA5M2EzNjZiY2JhYTBhZWU4NWY2
MDIwNjUuLjAyNDRjYTZhNGYzMjhkNTE4OWFjYjdhYTc4NGZhMzFkNTMzZjRjY2EgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiQ1NT
U3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNsdWRl
ICJDdXJzb3IuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRE9NVXRpbGl0aWVzUHJpdmF0ZS5oIgpAQCAtMTA2LDYgKzEwNyw3IEBACiAjaW5jbHVkZSAi
V2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVJbXBsLmgiCiAjaW5jbHVkZSAiV2Vi
UmVjdC5oIgorI2luY2x1ZGUgIldlYlJ1bnRpbWVGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYlNl
dHRpbmdzSW1wbC5oIgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZlY3Rv
ci5oIgpAQCAtMjMwLDYgKzIzMiw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3
Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgLCBt
X2Nocm9tZUNsaWVudEltcGwodGhpcykKICAgICAsIG1fY29udGV4dE1lbnVDbGllbnRJbXBsKHRo
aXMpCiAgICAgLCBtX2RyYWdDbGllbnRJbXBsKHRoaXMpCisgICAgLCBtX2RldmljZU9yaWVudGF0
aW9uQ2xpZW50SW1wbChXZWJSdW50aW1lRmVhdHVyZXM6OmlzRGV2aWNlT3JpZW50YXRpb25FbmFi
bGVkKCkgPyBuZXcgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKHRoaXMpIDogMCkKICAgICAs
IG1fZWRpdG9yQ2xpZW50SW1wbCh0aGlzKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnRJbXBsKHRo
aXMpCiAgICAgLCBtX29ic2VydmVkTmV3TmF2aWdhdGlvbihmYWxzZSkKQEAgLTI3Miw3ICsyNzUs
NyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJE
ZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgIGlmIChkZXZUb29sc0NsaWVudCkKICAg
ICAgICAgbV9kZXZUb29sc0FnZW50ID0gbmV3IFdlYkRldlRvb2xzQWdlbnRJbXBsKHRoaXMsIGRl
dlRvb2xzQ2xpZW50KTsKIAotICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UoJm1fY2hyb21lQ2xpZW50
SW1wbCwgJm1fY29udGV4dE1lbnVDbGllbnRJbXBsLCAmbV9lZGl0b3JDbGllbnRJbXBsLCAmbV9k
cmFnQ2xpZW50SW1wbCwgJm1faW5zcGVjdG9yQ2xpZW50SW1wbCwgMCwgMCwgMCwgMCkpOworICAg
IG1fcGFnZS5zZXQobmV3IFBhZ2UoJm1fY2hyb21lQ2xpZW50SW1wbCwgJm1fY29udGV4dE1lbnVD
bGllbnRJbXBsLCAmbV9lZGl0b3JDbGllbnRJbXBsLCAmbV9kcmFnQ2xpZW50SW1wbCwgJm1faW5z
cGVjdG9yQ2xpZW50SW1wbCwgMCwgMCwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuZ2V0
KCksIDApKTsKIAogICAgIC8vIHRoZSBwYWdlIHdpbGwgdGFrZSBvd25lcnNoaXAgb2YgdGhlIHZh
cmlvdXMgY2xpZW50cwogCkBAIC0yMTg4LDQgKzIxOTEsMTMgQEAgV2ViR0xFUzJDb250ZXh0KiBX
ZWJWaWV3SW1wbDo6Z2xlczJDb250ZXh0KCkKICAgICByZXR1cm4gbV9nbGVzMkNvbnRleHQuZ2V0
KCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKGJv
b2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRv
dWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKQoreworICAgIGlm
IChtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbCkgeworICAgICAgICBtX2RldmljZU9yaWVu
dGF0aW9uQ2xpZW50SW1wbC0+dXBkYXRlT3JpZW50YXRpb24oY2FuUHJvdmlkZUFscGhhLCBhbHBo
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhblByb3ZpZGVCZXRhLCBiZXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSk7CisgICAg
fQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApp
bmRleCAzMTJmMjBmNjQ3Yjk2M2RmMTA3MzY5MzJlNmU2NWQyOTIxNmJjMmFlLi4yYmFkMTQxNjk4
NjMyMjMxZmFhODM4ZTNiMzRjN2QyNzJkOGU0OWE2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCkBAIC03MCw2ICs3MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0b2NvbXBs
ZXRlUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ7CiBjbGFz
cyBDb250ZXh0TWVudUNsaWVudEltcGw7CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudElt
cGw7CiBjbGFzcyBEcmFnU2Nyb2xsVGltZXI7CiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVudDsKQEAgLTE5MSw2ICsxOTIsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2
ZUJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bUN1c3RvbUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbik7CisgICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZURldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3Vi
bGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3Zp
ZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKIAogICAgIC8vIFdlYlZpZXdJbXBsCiAKQEAgLTM4OSw2
ICszOTEsNyBAQCBwcml2YXRlOgogICAgIEJhY2tGb3J3YXJkTGlzdENsaWVudEltcGwgbV9iYWNr
Rm9yd2FyZExpc3RDbGllbnRJbXBsOwogICAgIENocm9tZUNsaWVudEltcGwgbV9jaHJvbWVDbGll
bnRJbXBsOwogICAgIENvbnRleHRNZW51Q2xpZW50SW1wbCBtX2NvbnRleHRNZW51Q2xpZW50SW1w
bDsKKyAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsPiBtX2RldmljZU9yaWVu
dGF0aW9uQ2xpZW50SW1wbDsKICAgICBEcmFnQ2xpZW50SW1wbCBtX2RyYWdDbGllbnRJbXBsOwog
ICAgIEVkaXRvckNsaWVudEltcGwgbV9lZGl0b3JDbGllbnRJbXBsOwogICAgIEluc3BlY3RvckNs
aWVudEltcGwgbV9pbnNwZWN0b3JDbGllbnRJbXBsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62811</attachid>
            <date>2010-07-28 04:34:23 -0700</date>
            <delta_ts>2010-07-28 09:54:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41616-20100728123421.patch</filename>
            <type>text/plain</type>
            <size>12879</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDc2MjdhODg3NWUzMmQ1NWUxMzQzNThhNzQwNDMzYzAxYzMwMjU1MDIu
LjhkY2QwZGQ5YzYxOWVlYTM5NzRlNDEzNWU0MTY4ZjQ4ZjE5MTQ1N2EgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMzIEBACisyMDEwLTA3LTI4ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0Nocm9taXVtXSBEZXZpY2VPcmllbnRhdGlvbiBwbHVtYmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE2MTYKKworICAgICAgICBQbHVtYmluZyBm
b3IgZGV2aWNlIG9yaWVudGF0aW9uIGluIENocm9taXVtLgorICAgICAgICBQcm92aWRlIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50SW1wbCB0aGF0IGNhbGxzIG9uCisgICAgICAgIFdlYlZpZXdDbGll
bnQgdG8gc3RhcnQgYW5kIHN0b3Agb3JpZW50YXRpb24gdXBkYXRlcywKKyAgICAgICAgYW5kIHJl
Y2VpdmVzIHVwZGF0ZXMgZnJvbSB0aGUgV2ViVmlldyBpbnN0YW5jZSwgV2ViVmlld0ltcGwuCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAg
ICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Ns
aWVudDo6c3RhcnREZXZpY2VPcmllbnRhdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50OjpzdG9wRGV2aWNlT3JpZW50YXRpb25VcGRhdGVzKToKKyAgICAgICAgKiBz
cmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjp+RGV2
aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50
YXRpb25DbGllbnRJbXBsOjp1cGRhdGVPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjpsYXN0T3JpZW50YXRpb24pOgor
ICAgICAgICAqIHNyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuaDogQWRkZWQuCisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZENoYW5nZURl
dmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0w
Ny0yNyAgS2ludWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgT2phbiBWYWZhaS4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggOTdlZmRkY2I1NzEzZDMxZGJm
YTM2ZGJjYjEyNGYwYzE4MDIwMGZhMy4uZDAyNTVmN2Q0NTgwOWEwOTk2MDgwZGQwMjA3Y2IxMmM5
MDM3Njk0NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI5OSw2ICsyOTksOCBAQAogICAgICAgICAgICAg
ICAgICdzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9E
ZXZUb29sc1JQQy5oJywKICAgICAgICAgICAgICAgICAnc3JjL0RldlRvb2xzUlBDSlMuaCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuY3BwJywKKyAg
ICAgICAgICAgICAgICAnc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL0RPTVV0aWxpdGllc1ByaXZhdGUuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9EcmFn
Q2xpZW50SW1wbC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAppbmRleCAxYjk0ZGEyZmQy
N2Q0ZjY4NDQ4YmQ1OTIwZTVlZDE4YjQ4NjkxNDY1Li5mNThjNTJmMmJhOWEwYWZhOTdhMTZiOTQy
ZWMwNzY1YmUyMTIzYTQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZp
ZXcuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaApAQCAtMzQxLDYgKzM0
MSwxMCBAQCBwdWJsaWM6CiAgICAgLy8gY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhp
c3QuCiAgICAgdmlydHVhbCBXZWJHTEVTMkNvbnRleHQqIGdsZXMyQ29udGV4dCgpID0gMDsKIAor
ICAgIC8vIERldmljZSBPcmllbnRhdGlvbiBzdXBwb3J0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZURldmljZU9y
aWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJv
dmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1h
KSA9IDA7CisKIHByb3RlY3RlZDoKICAgICB+V2ViVmlldygpIHt9CiB9OwpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCA0NjI4YzJmNDQzZDM1MDJmZTUyYjc2NDJiYTQ4
NWIwMzdkYTU1MjU0Li4xMGQ0MjY4YTVmOWM5N2JhYTI5NWQ4YzYyZGU1YmZiNTkzMDhiNWM5IDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAtMzQxLDYgKzM0MSwxMiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElu
cHV0Q29udHJvbGxlcigKICAgICAgICAgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lciopIHsgcmV0dXJu
IDA7IH0KIAorICAgIC8vIERldmljZSBPcmllbnRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gQXNrIHRoZSBlbWJlZGRlciB0
byBzdGFydCBzZW5kaW5nIGRldmljZSBvcmllbnRhdGlvbiB1cGRhdGVzLgorICAgIHZpcnR1YWwg
dm9pZCBzdGFydERldmljZU9yaWVudGF0aW9uVXBkYXRlcygpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzdG9wRGV2aWNlT3JpZW50YXRpb25VcGRhdGVzKCkgeyB9CisKIHByb3RlY3RlZDoKICAgICB+
V2ViVmlld0NsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2
aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMTAxZmIyODQ4MzBhMjcy
YjA0OWY3ZmM5ZTVhYTExMDliMTViN2IwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsNzAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25D
bGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUg
IkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJXZWJWaWV3Q2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6RGV2aWNlT3JpZW50
YXRpb25DbGllbnRJbXBsKFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCkKKyAgICAgICAgOiBtX3dl
YlZpZXdJbXBsKHdlYlZpZXdJbXBsKQoreworfQorCitEZXZpY2VPcmllbnRhdGlvbkNsaWVudElt
cGw6On5EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwoKQoreworfQorCit2b2lkIERldmljZU9y
aWVudGF0aW9uQ2xpZW50SW1wbDo6dXBkYXRlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxw
aGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wg
Y2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit7CisgICAgbV9sYXN0T3JpZW50YXRpb24g
PSBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbjo6Y3JlYXRlKGNhblByb3ZpZGVBbHBoYSwgYWxw
aGEsIGNhblByb3ZpZGVCZXRhLCBiZXRhLCBjYW5Qcm92aWRlR2FtbWEsIGdhbW1hKTsKKyAgICBp
ZiAoIW1fd2ViVmlld0ltcGwtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fd2ViVmll
d0ltcGwtPnBhZ2UoKS0+ZGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKCktPmRpZENoYW5nZURl
dmljZU9yaWVudGF0aW9uKG1fbGFzdE9yaWVudGF0aW9uLmdldCgpKTsKK30KKwordm9pZCBEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudEltcGw6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIG1fd2ViVmll
d0ltcGwtPmNsaWVudCgpLT5zdGFydERldmljZU9yaWVudGF0aW9uVXBkYXRlcygpOworfQorCit2
b2lkIERldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6c3RvcFVwZGF0aW5nKCkKK3sKKyAgICBt
X3dlYlZpZXdJbXBsLT5jbGllbnQoKS0+c3RvcERldmljZU9yaWVudGF0aW9uVXBkYXRlcygpOwor
fQorCitXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbiogRGV2aWNlT3JpZW50YXRpb25DbGllbnRJ
bXBsOjpsYXN0T3JpZW50YXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2xhc3RPcmllbnRh
dGlvbi5nZXQoKTsKK30KKworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmggYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIy
MzYyZThmNmIwM2U4MDlkZDY4ZmE5YTViNzljZWRjODg1ZDJkOGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5oCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbF9o
CisjZGVmaW5lIERldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbF9oCisKKyNpbmNsdWRlICJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIlJlZlB0ci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBEZXZpY2VPcmllbnRhdGlvbjsKK2NsYXNzIFBhZ2U7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViVmlld0ltcGw7CisKK2NsYXNzIERldmljZU9yaWVu
dGF0aW9uQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKFdl
YlZpZXdJbXBsKik7CisgICAgfkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbCgpOworICAgIHZv
aWQgdXBkYXRlT3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwg
Ym9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBk
b3VibGUgZ2FtbWEpOworCisgICAgLy8gRnJvbSBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNs
aWVudC4KKyAgICB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2b2lkIHN0b3BVcGRhdGluZygp
OworICAgIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uKiBsYXN0T3JpZW50YXRpb24oKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3SW1wbDsKKyAgICBSZWZQ
dHI8V2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24+IG1fbGFzdE9yaWVudGF0aW9uOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dEltcGxfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAwYjUyODJiOGE5ZTIx
NjdlZDI2OTIwYjQzMDVmNmQ4NGFjOTYwN2IyLi4wZjFmMGUzMDAwZjA5Y2M4Y2I0OTlhNTE1YWI0
OWQ5M2MxODU3N2I3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDEsNiAr
NDEsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1
ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAiRGV2aWNlT3JpZW50
YXRpb25DbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1
bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRPTVV0aWxpdGllc1ByaXZhdGUuaCIKQEAgLTEwNiw2
ICsxMDcsNyBAQAogI2luY2x1ZGUgIldlYlBvaW50LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51
SW1wbC5oIgogI2luY2x1ZGUgIldlYlJlY3QuaCIKKyNpbmNsdWRlICJXZWJSdW50aW1lRmVhdHVy
ZXMuaCIKICNpbmNsdWRlICJXZWJTZXR0aW5nc0ltcGwuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcu
aCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKQEAgLTIzMCw2ICsyMzIsNyBAQCBXZWJWaWV3SW1w
bDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xp
ZW50KiBkZXZUb29scwogICAgICwgbV9jaHJvbWVDbGllbnRJbXBsKHRoaXMpCiAgICAgLCBtX2Nv
bnRleHRNZW51Q2xpZW50SW1wbCh0aGlzKQogICAgICwgbV9kcmFnQ2xpZW50SW1wbCh0aGlzKQor
ICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwoV2ViUnVudGltZUZlYXR1cmVzOjpp
c0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpID8gbmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50
SW1wbCh0aGlzKSA6IDApCiAgICAgLCBtX2VkaXRvckNsaWVudEltcGwodGhpcykKICAgICAsIG1f
aW5zcGVjdG9yQ2xpZW50SW1wbCh0aGlzKQogICAgICwgbV9vYnNlcnZlZE5ld05hdmlnYXRpb24o
ZmFsc2UpCkBAIC0yNzUsNyArMjc4LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZp
ZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICBp
ZiAoZGV2VG9vbHNDbGllbnQpCiAgICAgICAgIG1fZGV2VG9vbHNBZ2VudCA9IG5ldyBXZWJEZXZU
b29sc0FnZW50SW1wbCh0aGlzLCBkZXZUb29sc0NsaWVudCk7CiAKLSAgICBtX3BhZ2Uuc2V0KG5l
dyBQYWdlKCZtX2Nocm9tZUNsaWVudEltcGwsICZtX2NvbnRleHRNZW51Q2xpZW50SW1wbCwgJm1f
ZWRpdG9yQ2xpZW50SW1wbCwgJm1fZHJhZ0NsaWVudEltcGwsICZtX2luc3BlY3RvckNsaWVudElt
cGwsIDAsIDAsIDAsIDApKTsKKyAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdlKCZtX2Nocm9tZUNsaWVu
dEltcGwsICZtX2NvbnRleHRNZW51Q2xpZW50SW1wbCwgJm1fZWRpdG9yQ2xpZW50SW1wbCwgJm1f
ZHJhZ0NsaWVudEltcGwsICZtX2luc3BlY3RvckNsaWVudEltcGwsIDAsIDAsIG1fZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRJbXBsLmdldCgpLCAwKSk7CiAKICAgICAvLyB0aGUgcGFnZSB3aWxsIHRh
a2Ugb3duZXJzaGlwIG9mIHRoZSB2YXJpb3VzIGNsaWVudHMKIApAQCAtMjE5Nyw0ICsyMjAwLDEz
IEBAIFdlYkdMRVMyQ29udGV4dCogV2ViVmlld0ltcGw6OmdsZXMyQ29udGV4dCgpCiAgICAgcmV0
dXJuIG1fZ2xlczJDb250ZXh0LmdldCgpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpkaWRDaGFu
Z2VEZXZpY2VPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBi
b29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRv
dWJsZSBnYW1tYSkKK3sKKyAgICBpZiAobV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwpIHsK
KyAgICAgICAgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwtPnVwZGF0ZU9yaWVudGF0aW9u
KGNhblByb3ZpZGVBbHBoYSwgYWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5Qcm92aWRlQmV0YSwgYmV0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhblByb3Zp
ZGVHYW1tYSwgZ2FtbWEpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggNTMwZmJmNWI5YmU5MzNlOWIzNDI2ODUzZjM5Zjgx
ZjM0MTgxM2EzZC4uZWFkNmQ5Nzc0ZTdlZTQ1ZTg1M2ZmMmQxODA4ZjExZmY2NWFhZDAyZSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNzEsNiArNzEsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIGNsYXNzIEF1dG9jb21wbGV0ZVBvcHVwTWVudUNsaWVudDsKIGNsYXNzIEF1dG9GaWxs
UG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOworY2xhc3MgRGV2
aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwogY2xhc3Mg
V2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFdlYkRldlRvb2xzQWdlbnRDbGllbnQ7CkBA
IC0xOTQsNiArMTk1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7CiAg
ICAgdmlydHVhbCB2b2lkIHBlcmZvcm1DdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBh
Y3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VEZXZpY2VPcmllbnRhdGlvbihib29s
IGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3Vi
bGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSk7CiAKICAgICAvLyBX
ZWJWaWV3SW1wbAogCkBAIC0zOTIsNiArMzk0LDcgQEAgcHJpdmF0ZToKICAgICBCYWNrRm9yd2Fy
ZExpc3RDbGllbnRJbXBsIG1fYmFja0ZvcndhcmRMaXN0Q2xpZW50SW1wbDsKICAgICBDaHJvbWVD
bGllbnRJbXBsIG1fY2hyb21lQ2xpZW50SW1wbDsKICAgICBDb250ZXh0TWVudUNsaWVudEltcGwg
bV9jb250ZXh0TWVudUNsaWVudEltcGw7CisgICAgT3duUHRyPERldmljZU9yaWVudGF0aW9uQ2xp
ZW50SW1wbD4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGw7CiAgICAgRHJhZ0NsaWVudElt
cGwgbV9kcmFnQ2xpZW50SW1wbDsKICAgICBFZGl0b3JDbGllbnRJbXBsIG1fZWRpdG9yQ2xpZW50
SW1wbDsKICAgICBJbnNwZWN0b3JDbGllbnRJbXBsIG1faW5zcGVjdG9yQ2xpZW50SW1wbDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62840</attachid>
            <date>2010-07-28 09:54:24 -0700</date>
            <delta_ts>2010-07-30 09:37:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41616-20100728175422.patch</filename>
            <type>text/plain</type>
            <size>12656</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGQ3NWNkOTgzM2RhOTkwZTc3ZTI3MzQzZjdkZTY2YzJkZGU3Njg1NWEu
LjFkYTA1M2ZjZjc0OTRjNjJmNmJmZThjMmQyYWNiMGNlYzQ0MzU2ODAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDMzIEBACisyMDEwLTA3LTI4ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0Nocm9taXVtXSBEZXZpY2VPcmllbnRhdGlvbiBwbHVtYmluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE2MTYKKworICAgICAgICBQbHVtYmluZyBm
b3IgZGV2aWNlIG9yaWVudGF0aW9uIGluIENocm9taXVtLgorICAgICAgICBQcm92aWRlIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50SW1wbCB0aGF0IGNhbGxzIG9uCisgICAgICAgIFdlYlZpZXdDbGll
bnQgdG8gc3RhcnQgYW5kIHN0b3Agb3JpZW50YXRpb24gdXBkYXRlcywKKyAgICAgICAgYW5kIHJl
Y2VpdmVzIHVwZGF0ZXMgZnJvbSB0aGUgV2ViVmlldyBpbnN0YW5jZSwgV2ViVmlld0ltcGwuCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAg
ICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Ns
aWVudDo6c3RhcnREZXZpY2VPcmllbnRhdGlvblVwZGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50OjpzdG9wRGV2aWNlT3JpZW50YXRpb25VcGRhdGVzKToKKyAgICAgICAgKiBz
cmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjp+RGV2
aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6RGV2aWNlT3JpZW50
YXRpb25DbGllbnRJbXBsOjp1cGRhdGVPcmllbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJL
aXQ6OkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAg
KFdlYktpdDo6RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjpsYXN0T3JpZW50YXRpb24pOgor
ICAgICAgICAqIHNyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuaDogQWRkZWQuCisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmRpZENoYW5nZURl
dmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0w
Ny0yNiAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA5N2VmZGRjYjU3MTNkMzFk
YmZhMzZkYmNiMTI0ZjBjMTgwMjAwZmEzLi5kMDI1NWY3ZDQ1ODA5YTA5OTYwODBkZDAyMDdjYjEy
YzkwMzc2OTQ0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjk5LDYgKzI5OSw4IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0RldlRvb2xzUlBDLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRGV2VG9vbHNSUENKUy5oJywK
KyAgICAgICAgICAgICAgICAnc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5jcHAnLAor
ICAgICAgICAgICAgICAgICdzcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Ry
YWdDbGllbnRJbXBsLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZXcuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDFiOTRkYTJm
ZDI3ZDRmNjg0NDhiZDU5MjBlNWVkMThiNDg2OTE0NjUuLmY1OGM1MmYyYmE5YTBhZmE5N2ExNmI5
NDJlYzA3NjViZTIxMjNhNDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlldy5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC0zNDEsNiAr
MzQxLDEwIEBAIHB1YmxpYzoKICAgICAvLyBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgYWxyZWFkeSBl
eGlzdC4KICAgICB2aXJ0dWFsIFdlYkdMRVMyQ29udGV4dCogZ2xlczJDb250ZXh0KCkgPSAwOwog
CisgICAgLy8gRGV2aWNlIE9yaWVudGF0aW9uIHN1cHBvcnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRGV2aWNl
T3JpZW50YXRpb24oYm9vbCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Q
cm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2Ft
bWEpID0gMDsKKwogcHJvdGVjdGVkOgogICAgIH5XZWJWaWV3KCkge30KIH07CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDQ2MjhjMmY0NDNkMzUwMmZlNTJiNzY0MmJh
NDg1YjAzN2RhNTUyNTQuLjEwZDQyNjhhNWY5Yzk3YmFhMjk1ZDhjNjJkZTViZmI1OTMwOGI1Yzkg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC0zNDEsNiArMzQxLDEy
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlNwZWVjaElucHV0Q29udHJvbGxlciogc3BlZWNo
SW5wdXRDb250cm9sbGVyKAogICAgICAgICBXZWJTcGVlY2hJbnB1dExpc3RlbmVyKikgeyByZXR1
cm4gMDsgfQogCisgICAgLy8gRGV2aWNlIE9yaWVudGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBBc2sgdGhlIGVtYmVkZGVy
IHRvIHN0YXJ0IHNlbmRpbmcgZGV2aWNlIG9yaWVudGF0aW9uIHVwZGF0ZXMuCisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0RGV2aWNlT3JpZW50YXRpb25VcGRhdGVzKCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIHN0b3BEZXZpY2VPcmllbnRhdGlvblVwZGF0ZXMoKSB7IH0KKwogcHJvdGVjdGVkOgogICAg
IH5XZWJWaWV3Q2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9E
ZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxMDFmYjI4NDgzMGEy
NzJiMDQ5ZjdmYzllNWFhMTEwOWIxNWI3YjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL0RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC5jcHAKQEAgLTAsMCArMSw3MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlv
bkNsaWVudEltcGwuaCIKKworI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uLmgiCisjaW5jbHVk
ZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjpEZXZpY2VPcmll
bnRhdGlvbkNsaWVudEltcGwoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsKQorICAgICAgICA6IG1f
d2ViVmlld0ltcGwod2ViVmlld0ltcGwpCit7Cit9CisKK0RldmljZU9yaWVudGF0aW9uQ2xpZW50
SW1wbDo6fkRldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbCgpCit7Cit9CisKK3ZvaWQgRGV2aWNl
T3JpZW50YXRpb25DbGllbnRJbXBsOjp1cGRhdGVPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVB
bHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9v
bCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkKK3sKKyAgICBtX2xhc3RPcmllbnRhdGlv
biA9IFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uOjpjcmVhdGUoY2FuUHJvdmlkZUFscGhhLCBh
bHBoYSwgY2FuUHJvdmlkZUJldGEsIGJldGEsIGNhblByb3ZpZGVHYW1tYSwgZ2FtbWEpOworICAg
IGlmICghbV93ZWJWaWV3SW1wbC0+cGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgbV93ZWJW
aWV3SW1wbC0+cGFnZSgpLT5kZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIoKS0+ZGlkQ2hhbmdl
RGV2aWNlT3JpZW50YXRpb24obV9sYXN0T3JpZW50YXRpb24uZ2V0KCkpOworfQorCit2b2lkIERl
dmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDo6c3RhcnRVcGRhdGluZygpCit7CisgICAgbV93ZWJW
aWV3SW1wbC0+Y2xpZW50KCktPnN0YXJ0RGV2aWNlT3JpZW50YXRpb25VcGRhdGVzKCk7Cit9CisK
K3ZvaWQgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsOjpzdG9wVXBkYXRpbmcoKQoreworICAg
IG1fd2ViVmlld0ltcGwtPmNsaWVudCgpLT5zdG9wRGV2aWNlT3JpZW50YXRpb25VcGRhdGVzKCk7
Cit9CisKK1dlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVu
dEltcGw6Omxhc3RPcmllbnRhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGFzdE9yaWVu
dGF0aW9uLmdldCgpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuaCBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjIzNjJlOGY2YjAzZTgwOWRkNjhmYTlhNWI3OWNlZGM4ODVkMmQ4YgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsLmgKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBs
X2gKKyNkZWZpbmUgRGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsX2gKKworI2luY2x1ZGUgIkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVmUHRyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIERldmljZU9yaWVudGF0aW9uOworY2xhc3MgUGFnZTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJWaWV3SW1wbDsKKworY2xhc3MgRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwo
V2ViVmlld0ltcGwqKTsKKyAgICB+RGV2aWNlT3JpZW50YXRpb25DbGllbnRJbXBsKCk7CisgICAg
dm9pZCB1cGRhdGVPcmllbnRhdGlvbihib29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhh
LCBib29sIGNhblByb3ZpZGVCZXRhLCBkb3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEs
IGRvdWJsZSBnYW1tYSk7CisKKyAgICAvLyBGcm9tIFdlYkNvcmU6OkRldmljZU9yaWVudGF0aW9u
Q2xpZW50LgorICAgIHZvaWQgc3RhcnRVcGRhdGluZygpOworICAgIHZvaWQgc3RvcFVwZGF0aW5n
KCk7CisgICAgV2ViQ29yZTo6RGV2aWNlT3JpZW50YXRpb24qIGxhc3RPcmllbnRhdGlvbigpIGNv
bnN0OworCitwcml2YXRlOgorICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOworICAgIFJl
ZlB0cjxXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbj4gbV9sYXN0T3JpZW50YXRpb247Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIERldmljZU9yaWVudGF0aW9uQ2xp
ZW50SW1wbF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGJiNmQwN2MyNzVm
MWJmOGE2ZDQ0NTY1MjAwZTg0OTIyMmU0ZjgzNTkuLmZlMDI5OTAyYTgxYmJkZWQ2NTdhZWIzMTZk
NmUwMTI0ODJjOTIxMGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC00MSw2
ICs0MSw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1Zh
bHVlS2V5d29yZHMuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKKyNpbmNsdWRlICJEZXZpY2VPcmll
bnRhdGlvbkNsaWVudEltcGwuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRE9NVXRpbGl0aWVzUHJpdmF0ZS5oIgpAQCAtMTA2
LDYgKzEwNyw3IEBACiAjaW5jbHVkZSAiV2ViUG9pbnQuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1l
bnVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUmVjdC5oIgorI2luY2x1ZGUgIldlYlJ1bnRpbWVGZWF0
dXJlcy5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzSW1wbC5oIgogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgpAQCAtMjMwLDYgKzIzMiw3IEBAIFdlYlZpZXdJ
bXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRD
bGllbnQqIGRldlRvb2xzCiAgICAgLCBtX2Nocm9tZUNsaWVudEltcGwodGhpcykKICAgICAsIG1f
Y29udGV4dE1lbnVDbGllbnRJbXBsKHRoaXMpCiAgICAgLCBtX2RyYWdDbGllbnRJbXBsKHRoaXMp
CisgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbChXZWJSdW50aW1lRmVhdHVyZXM6
OmlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkgPyBuZXcgRGV2aWNlT3JpZW50YXRpb25DbGll
bnRJbXBsKHRoaXMpIDogMCkKICAgICAsIG1fZWRpdG9yQ2xpZW50SW1wbCh0aGlzKQogICAgICwg
bV9pbnNwZWN0b3JDbGllbnRJbXBsKHRoaXMpCiAgICAgLCBtX29ic2VydmVkTmV3TmF2aWdhdGlv
bihmYWxzZSkKQEAgLTI4NCw2ICsyODcsNyBAQCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2Vi
Vmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogI2lm
IEVOQUJMRShJTlBVVF9TUEVFQ0gpCiAgICAgcGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQg
PSAmbV9zcGVlY2hJbnB1dENsaWVudDsKICNlbmRpZgorICAgIHBhZ2VDbGllbnRzLmRldmljZU9y
aWVudGF0aW9uQ2xpZW50ID0gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGwuZ2V0KCk7CiAg
ICAgbV9wYWdlLnNldChuZXcgUGFnZShwYWdlQ2xpZW50cykpOwogCiAgICAgLy8gdGhlIHBhZ2Ug
d2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgdmFyaW91cyBjbGllbnRzCkBAIC0yMjAzLDQgKzIy
MDcsMTMgQEAgV2ViR0xFUzJDb250ZXh0KiBXZWJWaWV3SW1wbDo6Z2xlczJDb250ZXh0KCkKICAg
ICByZXR1cm4gbV9nbGVzMkNvbnRleHQuZ2V0KCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OmRp
ZENoYW5nZURldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxw
aGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1t
YSwgZG91YmxlIGdhbW1hKQoreworICAgIGlmIChtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1w
bCkgeworICAgICAgICBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbC0+dXBkYXRlT3JpZW50
YXRpb24oY2FuUHJvdmlkZUFscGhhLCBhbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhblByb3ZpZGVCZXRhLCBiZXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fu
UHJvdmlkZUdhbW1hLCBnYW1tYSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCA1MzBmYmY1YjliZTkzM2U5YjM0MjY4NTNm
MzlmODFmMzQxODEzYTNkLi5lYWQ2ZDk3NzRlN2VlNDVlODUzZmYyZDE4MDhmMTFmZjY1YWFkMDJl
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC03MSw2ICs3MSw3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgQXV0b2NvbXBsZXRlUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQXV0
b0ZpbGxQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudEltcGw7CitjbGFz
cyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudEltcGw7CiBjbGFzcyBEcmFnU2Nyb2xsVGltZXI7CiBj
bGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudENsaWVu
dDsKQEAgLTE5NCw2ICsxOTUsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlRm9yZWdyb3VuZENvbG9y
KTsKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybUN1c3RvbUNvbnRleHRNZW51QWN0aW9uKHVuc2ln
bmVkIGFjdGlvbik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZURldmljZU9yaWVudGF0aW9u
KGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEs
IGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1tYSwgZG91YmxlIGdhbW1hKTsKIAogICAg
IC8vIFdlYlZpZXdJbXBsCiAKQEAgLTM5Miw2ICszOTQsNyBAQCBwcml2YXRlOgogICAgIEJhY2tG
b3J3YXJkTGlzdENsaWVudEltcGwgbV9iYWNrRm9yd2FyZExpc3RDbGllbnRJbXBsOwogICAgIENo
cm9tZUNsaWVudEltcGwgbV9jaHJvbWVDbGllbnRJbXBsOwogICAgIENvbnRleHRNZW51Q2xpZW50
SW1wbCBtX2NvbnRleHRNZW51Q2xpZW50SW1wbDsKKyAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRp
b25DbGllbnRJbXBsPiBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50SW1wbDsKICAgICBEcmFnQ2xp
ZW50SW1wbCBtX2RyYWdDbGllbnRJbXBsOwogICAgIEVkaXRvckNsaWVudEltcGwgbV9lZGl0b3JD
bGllbnRJbXBsOwogICAgIEluc3BlY3RvckNsaWVudEltcGwgbV9pbnNwZWN0b3JDbGllbnRJbXBs
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>