<?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>47078</bug_id>
          
          <creation_ts>2010-10-04 04:19:11 -0700</creation_ts>
          <short_desc>[Chromium] DeviceMotion plumbing</short_desc>
          <delta_ts>2013-04-08 14:16:10 -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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hans Wennborg">hans</reporter>
          <assigned_to name="Hans Wennborg">hans</assigned_to>
          <cc>bulach</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jorlow</cc>
    
    <cc>schenney</cc>
    
    <cc>syoichi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288870</commentid>
    <comment_count>0</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-10-04 04:19:11 -0700</bug_when>
    <thetext>[Chromium] DeviceMotion plumbing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288900</commentid>
    <comment_count>1</comment_count>
      <attachid>69625</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-10-04 06:17:19 -0700</bug_when>
    <thetext>Created attachment 69625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288983</commentid>
    <comment_count>2</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-04 10:02:16 -0700</bug_when>
    <thetext>Please cc darin on reviews that touch the WebKit layer.

WIll review later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289012</commentid>
    <comment_count>3</comment_count>
      <attachid>69625</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-04 11:16:19 -0700</bug_when>
    <thetext>Comment on attachment 69625
Patch

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

&gt; WebKit/chromium/public/WebDeviceMotionData.h:42
&gt; +    WEBKIT_API static WebDeviceMotionData* create(bool canProvideXAcceleration, double xAcceleration,

why heap allocated?

normally, when we use WebPrivatePtr to implement a type, it means that we
provide a constructor, destructor, initialize, reset, assign, etc. methods.
please see WebNode for an example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289020</commentid>
    <comment_count>4</comment_count>
      <attachid>69625</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-04 11:27:01 -0700</bug_when>
    <thetext>Comment on attachment 69625
Patch

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

looks pretty good minus comments

&gt; WebKit/chromium/public/WebDeviceMotionClient.h:38
&gt; +    virtual void setController(WebDeviceMotionController*) = 0;

We no longer make webkit api&apos;s pure virtual.  Use WEBKIT_ASSERT_NOT_IMPLEMENTED and return 0 when necessary.

&gt;&gt; WebKit/chromium/public/WebDeviceMotionData.h:42
&gt;&gt; +    WEBKIT_API static WebDeviceMotionData* create(bool canProvideXAcceleration, double xAcceleration,
&gt; 
&gt; why heap allocated?
&gt; 
&gt; normally, when we use WebPrivatePtr to implement a type, it means that we
&gt; provide a constructor, destructor, initialize, reset, assign, etc. methods.
&gt; please see WebNode for an example.

Note that we use heap allocation only when we have virtual methods and code living in Chromium.

&gt; WebKit/chromium/src/DeviceMotionClientProxy.cpp:72
&gt; +

newline seems excessive...could maybe even combine the two if statements with an ||

&gt; WebKit/chromium/src/DeviceMotionClientProxy.h:43
&gt; +    ~DeviceMotionClientProxy();

Virtual is probably good for documentation

&gt; WebKit/chromium/src/WebDeviceMotionController.cpp:43
&gt; +    PassRefPtr&lt;WebCore::DeviceMotionData&gt; motion(*deviceMotionData);

RefPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289656</commentid>
    <comment_count>5</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-10-05 09:29:30 -0700</bug_when>
    <thetext>Thank you both for the review.

(In reply to comment #3)
&gt; (From update of attachment 69625 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69625&amp;action=review
&gt; 
&gt; &gt; WebKit/chromium/public/WebDeviceMotionData.h:42
&gt; &gt; +    WEBKIT_API static WebDeviceMotionData* create(bool canProvideXAcceleration, double xAcceleration,
&gt; 
&gt; why heap allocated?
Fixed that now.

&gt; normally, when we use WebPrivatePtr to implement a type, it means that we
&gt; provide a constructor, destructor, initialize, reset, assign, etc. methods.
&gt; please see WebNode for an example.
Done. (Skipping assign because I don&apos;t think it&apos;s needed.)

(In reply to comment #4)
&gt; (From update of attachment 69625 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69625&amp;action=review
&gt; 
&gt; looks pretty good minus comments
&gt; 
&gt; &gt; WebKit/chromium/public/WebDeviceMotionClient.h:38
&gt; &gt; +    virtual void setController(WebDeviceMotionController*) = 0;
&gt; 
&gt; We no longer make webkit api&apos;s pure virtual.  Use WEBKIT_ASSERT_NOT_IMPLEMENTED and return 0 when necessary.
Done using WEBKIT_ASSERT_NOT_REACHED (couldn&apos;t find WEBKIT_ASSERT_NOT_IMPLEMENTED.)

&gt; 
&gt; &gt;&gt; WebKit/chromium/public/WebDeviceMotionData.h:42
&gt; &gt;&gt; +    WEBKIT_API static WebDeviceMotionData* create(bool canProvideXAcceleration, double xAcceleration,
&gt; &gt; 
&gt; &gt; why heap allocated?
&gt; &gt; 
&gt; &gt; normally, when we use WebPrivatePtr to implement a type, it means that we
&gt; &gt; provide a constructor, destructor, initialize, reset, assign, etc. methods.
&gt; &gt; please see WebNode for an example.
&gt; 
&gt; Note that we use heap allocation only when we have virtual methods and code living in Chromium.
&gt; 
&gt; &gt; WebKit/chromium/src/DeviceMotionClientProxy.cpp:72
&gt; &gt; +
&gt; 
&gt; newline seems excessive...could maybe even combine the two if statements with an ||
Done. Keeping them on separate lines as they kind of test for different things, and I hope to remove the former statement eventually.

&gt; 
&gt; &gt; WebKit/chromium/src/DeviceMotionClientProxy.h:43
&gt; &gt; +    ~DeviceMotionClientProxy();
&gt; 
&gt; Virtual is probably good for documentation
Done.

&gt; 
&gt; &gt; WebKit/chromium/src/WebDeviceMotionController.cpp:43
&gt; &gt; +    PassRefPtr&lt;WebCore::DeviceMotionData&gt; motion(*deviceMotionData);
&gt; 
&gt; RefPtr
Done. It got slightly involved though :S (compiler doesn&apos;t see that it can use WebDeviceMotionData&apos;s conversion operator to PassRefPtr and use that to construct a RefPtr)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289657</commentid>
    <comment_count>6</comment_count>
      <attachid>69795</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-10-05 09:29:56 -0700</bug_when>
    <thetext>Created attachment 69795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289663</commentid>
    <comment_count>7</comment_count>
      <attachid>69795</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-05 09:37:51 -0700</bug_when>
    <thetext>Comment on attachment 69795
Patch

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

LGTM, but it&apos;d be nice to have Darin sign off on it.

&gt; WebKit/chromium/public/WebDeviceMotionClient.h:43
&gt; +    virtual WebDeviceMotionData* currentDeviceMotion() const { WEBKIT_ASSERT_NOT_REACHED(); return 0; }

anything over one statement needs to be on multiple lines.  Unfortunately.

&gt; WebKit/chromium/public/WebDeviceMotionController.h:39
&gt; +    WebDeviceMotionController(WebCore::DeviceMotionController*);

Needs WEBKIT_API

&gt; WebKit/chromium/src/WebDeviceMotionController.cpp:43
&gt; +    RefPtr&lt;WebCore::DeviceMotionData&gt; motion(static_cast&lt;PassRefPtr&lt;WebCore::DeviceMotionData&gt; &gt;(*deviceMotionData));

Ugh...ok, maybe what was there was better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289669</commentid>
    <comment_count>8</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-10-05 09:44:36 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 69795 [details])
&gt; &gt; WebKit/chromium/public/WebDeviceMotionController.h:39
&gt; &gt; +    WebDeviceMotionController(WebCore::DeviceMotionController*);
&gt; 
&gt; Needs WEBKIT_API

But it will never be called from outside WebKit (and can never be, because outside WebKit, the caller would not be able to pass in a WebCore::DeviceMotionController*).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290160</commentid>
    <comment_count>9</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-10-06 02:44:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 69795 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69795&amp;action=review
&gt; 
&gt; LGTM, but it&apos;d be nice to have Darin sign off on it.
&gt; 
&gt; &gt; WebKit/chromium/public/WebDeviceMotionClient.h:43
&gt; &gt; +    virtual WebDeviceMotionData* currentDeviceMotion() const { WEBKIT_ASSERT_NOT_REACHED(); return 0; }
&gt; 
&gt; anything over one statement needs to be on multiple lines.  Unfortunately.
Done.

&gt; &gt; WebKit/chromium/public/WebDeviceMotionController.h:39
&gt; &gt; +    WebDeviceMotionController(WebCore::DeviceMotionController*);
&gt; 
&gt; Needs WEBKIT_API
As noted above, the intention is not to make this part of the API, as it is only called inside the WebKit layer.

Is it ok to just ommit the WEBKIT_API like I did, or should I use #if WEBKIT_IMPLEMENTATION to hide it? (And then probably declare a dummy private default constructor to make ut unconstructable.)

&gt; &gt; WebKit/chromium/src/WebDeviceMotionController.cpp:43
&gt; &gt; +    RefPtr&lt;WebCore::DeviceMotionData&gt; motion(static_cast&lt;PassRefPtr&lt;WebCore::DeviceMotionData&gt; &gt;(*deviceMotionData));
&gt; 
&gt; Ugh...ok, maybe what was there was better.
Putting it back the way it was.


Darin: does this look ok to you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290161</commentid>
    <comment_count>10</comment_count>
      <attachid>69908</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-10-06 02:45:07 -0700</bug_when>
    <thetext>Created attachment 69908
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290325</commentid>
    <comment_count>11</comment_count>
      <attachid>69908</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-06 08:45:36 -0700</bug_when>
    <thetext>Comment on attachment 69908
Patch

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

&gt; WebKit/chromium/public/WebDeviceMotionClient.h:40
&gt; +    virtual void setController(WebDeviceMotionController*) { WEBKIT_ASSERT_NOT_REACHED(); }

why is setController an explicit method here?  couldn&apos;t you also pass the WebDeviceMotionController
to the method on WebViewClient used to fetch the WebDeviceMotionClient?

when does the WebDeviceMotionController pointer get freed?

&gt; WebKit/chromium/public/WebDeviceMotionClient.h:43
&gt; +    virtual WebDeviceMotionData* currentDeviceMotion() const

nit: currentDeviceMotion -&gt; currentDeviceMotionData

why is currentDeviceMotion returned by pointer and not by value?  the whole
point of using WebPrivatePtr&lt;...wrapping a RefCounted type...&gt; is to support
passing the container type by value.

&gt; WebKit/chromium/public/WebDeviceMotionController.h:39
&gt; +    WebDeviceMotionController(WebCore::DeviceMotionController*);

this constructor should be wrapped with WEBKIT_IMPLEMENTATION, and i presume
that the default constructor should be declared but marked private.  i see
that WebDeviceOrientationController has the same problem.

&gt; WebKit/chromium/public/WebDeviceMotionController.h:47
&gt; +    WebCore::DeviceMotionController* m_controller;

i don&apos;t understand what the memory management is here?  this looks like a crash
waiting to happen.

&gt; WebKit/chromium/public/WebDeviceMotionData.h:39
&gt; +class WebDeviceMotionData {

Looking at the way this class is used, I&apos;m not sure why you didn&apos;t just
do the same thing as you did for WebDeviceOrientation.  It seems like it
does not need to be a wrapper around the WebCore type.  It can just be
a simple class with member variables for the various fields.

&gt; WebKit/chromium/public/WebDeviceMotionData.h:74
&gt; +    WEBKIT_API void init();

what is the reason for making these private?

why aren&apos;t you providing a copy constructor and assignment operator?  those
are typically provided since WebDeviceMotionData is really just like a
RefPtr&lt;DeviceMotionData&gt;.  it can be copied around, and all of the memory
management happens implicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290331</commentid>
    <comment_count>12</comment_count>
      <attachid>69908</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-10-06 08:51:41 -0700</bug_when>
    <thetext>Comment on attachment 69908
Patch

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

&gt; WebKit/chromium/public/WebDeviceMotionData.h:42
&gt; +    WebDeviceMotionData(bool canProvideXAcceleration, double xAcceleration,

also, functions with large numbers of parameters are really unfortunate.  it is
very easy to make a mistake when calling such a function.

a better solution would probably look like this:

  class WebFoo {
  public:
      WebFoo() : m_hasBar(false), m_bar(0.0) {
      }

      void setBar(double bar) {
          m_hasBar = true;
          m_bar = bar;
      }
      bool hasBar() const { return m_hasBar; }
      double bar() const { return m_bar; }

      // ditto for other fields

  private:
      bool m_hasBar;
      double m_bar;
  };

at the place where you construct and initialize such a class, you would just
have a bunch of setBar calls, one for each of the properties you want to set.

on the chromium side, this structure would be trivial to write ParamTraits for
in order to support IPC serialization.  see chrome/common/webkit_param_traits.h.

if you applied this approach to device orientation as well, then you could
delete ViewMsg_DeviceOrientationUpdated_Params.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290998</commentid>
    <comment_count>13</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-10-07 07:34:36 -0700</bug_when>
    <thetext>Thank you very much for the review.

&gt; &gt; WebKit/chromium/public/WebDeviceMotionClient.h:40
&gt; &gt; +    virtual void setController(WebDeviceMotionController*) { WEBKIT_ASSERT_NOT_REACHED(); }
&gt; 
&gt; why is setController an explicit method here?  couldn&apos;t you also pass the WebDeviceMotionController
&gt; to the method on WebViewClient used to fetch the WebDeviceMotionClient?
Hmm, the DeviceMotionController that WebDeviceMotionController wraps is created and owned by the Page, which is created *after* the WebDeviceMotionClient, so I don&apos;t see how we could make that work.

The setController method here mirrors the setController method on DeviceMotionClient. I suppose we could find another way to push motion data to the controller, but I think we would end up needing it anyway when adding a mock client similar to DeviceOrientationClientMock, which I plan to do.

&gt; when does the WebDeviceMotionController pointer get freed?
The client whose setController method is called is responsible for freeing it. I suppose I could add a comment about that, or do you think there is a way to show it more clearly through code?

&gt; &gt; WebKit/chromium/public/WebDeviceMotionClient.h:43
&gt; &gt; +    virtual WebDeviceMotionData* currentDeviceMotion() const
&gt; 
&gt; nit: currentDeviceMotion -&gt; currentDeviceMotionData
Hmm, the method is called currentDeviceMotion in DeviceMotionClient. I&apos;m happy to rename them both, but in that case I&apos;d like to do them at the same time, and in a separate patch.

&gt; why is currentDeviceMotion returned by pointer and not by value?  the whole
&gt; point of using WebPrivatePtr&lt;...wrapping a RefCounted type...&gt; is to support
&gt; passing the container type by value.
It&apos;s returned by pointer to match the DeviceMotionClient method, and so that the method can return NULL (meaning it has no current motion data). I think this is better than adding a null state to WebDeviceMotionData like we did with WebDeviceOrientation, but I don&apos;t have any strong feelings here.

&gt; &gt; WebKit/chromium/public/WebDeviceMotionController.h:39
&gt; &gt; +    WebDeviceMotionController(WebCore::DeviceMotionController*);
&gt; 
&gt; this constructor should be wrapped with WEBKIT_IMPLEMENTATION, and i presume
&gt; that the default constructor should be declared but marked private.  i see
&gt; that WebDeviceOrientationController has the same problem.
Done. I will apply this and the other improvements from this discussion to the device orientation code when this patch passes review.

&gt; &gt; WebKit/chromium/public/WebDeviceMotionController.h:47
&gt; &gt; +    WebCore::DeviceMotionController* m_controller;
&gt; 
&gt; i don&apos;t understand what the memory management is here?  this looks like a crash
&gt; waiting to happen.
The memory management here is the same as for DeviceMotionClient::setController. The setController method takes a weak pointer to the controller. Since the controller is a WebCore class we can&apos;t just pass it to the WebDeviceMotionClient::setController method, but put it in this thin wrapper, and let the WebDeviceMotionClient take ownership of the wrapper.

Thinking more about this, we should probably forward the DeviceMotionClient::deviceMotionControllerDestroyed() method too, so we can signal when the pointer to the controller becomes invalid. Doing that.

&gt; &gt; WebKit/chromium/public/WebDeviceMotionData.h:39
&gt; &gt; +class WebDeviceMotionData {
&gt; 
&gt; Looking at the way this class is used, I&apos;m not sure why you didn&apos;t just
&gt; do the same thing as you did for WebDeviceOrientation.  It seems like it
&gt; does not need to be a wrapper around the WebCore type.  It can just be
&gt; a simple class with member variables for the various fields.
Doing this. You&apos;re right, it is probably easier.

&gt; &gt; WebKit/chromium/public/WebDeviceMotionData.h:74
&gt; &gt; +    WEBKIT_API void init();
&gt; 
&gt; what is the reason for making these private?
This does not apply to the new WebDeviceMotionData.

&gt; why aren&apos;t you providing a copy constructor and assignment operator?  those
&gt; are typically provided since WebDeviceMotionData is really just like a
&gt; RefPtr&lt;DeviceMotionData&gt;.  it can be copied around, and all of the memory
&gt; management happens implicitly.
This does not exist in the new WebDeviceMotionData.

(In reply to comment #12)
&gt; &gt; WebKit/chromium/public/WebDeviceMotionData.h:42
&gt; &gt; +    WebDeviceMotionData(bool canProvideXAcceleration, double xAcceleration,
&gt; 
&gt; also, functions with large numbers of parameters are really unfortunate.  it is
&gt; very easy to make a mistake when calling such a function.
&gt; 
&gt; a better solution would probably look like this:
&gt; 
&gt;   class WebFoo {
&gt;   public:
&gt;       WebFoo() : m_hasBar(false), m_bar(0.0) {
&gt;       }
&gt; 
&gt;       void setBar(double bar) {
&gt;           m_hasBar = true;
&gt;           m_bar = bar;
&gt;       }
&gt;       bool hasBar() const { return m_hasBar; }
&gt;       double bar() const { return m_bar; }
&gt; 
&gt;       // ditto for other fields
&gt; 
&gt;   private:
&gt;       bool m_hasBar;
&gt;       double m_bar;
&gt;   };
&gt; 
&gt; at the place where you construct and initialize such a class, you would just
&gt; have a bunch of setBar calls, one for each of the properties you want to set.
Doing this. Will update the device orientation code to do the same after this patch.

&gt; on the chromium side, this structure would be trivial to write ParamTraits for
&gt; in order to support IPC serialization.  see chrome/common/webkit_param_traits.h.
Will do.

&gt; if you applied this approach to device orientation as well, then you could
&gt; delete ViewMsg_DeviceOrientationUpdated_Params.
Looking forward to it :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290999</commentid>
    <comment_count>14</comment_count>
      <attachid>70089</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-10-07 07:35:03 -0700</bug_when>
    <thetext>Created attachment 70089
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291764</commentid>
    <comment_count>15</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-08 11:02:59 -0700</bug_when>
    <thetext>Darin, are you happy with this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293480</commentid>
    <comment_count>16</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2010-10-13 10:00:49 -0700</bug_when>
    <thetext>I&apos;m now blocked on this. Any input would be most welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293501</commentid>
    <comment_count>17</comment_count>
      <attachid>70089</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-10-13 10:36:06 -0700</bug_when>
    <thetext>Comment on attachment 70089
Patch

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

these are my only concerns.  Are you ok Darin?

&gt; WebKit/chromium/src/WebDeviceMotionController.cpp:41
&gt; +void WebDeviceMotionController::didChangeDeviceMotion(const WebDeviceMotionData* deviceMotionData)

In cases like this, we should use &amp; rather than *.

&gt; WebKit/chromium/src/WebDeviceMotionController.cpp:43
&gt; +    PassRefPtr&lt;WebCore::DeviceMotionData&gt; motion(*deviceMotionData);

I&apos;m still surprised this can&apos;t be done any more cleanly...but I know sometimes this stuff can be a mess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328054</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2010-12-30 15:41:39 -0800</bug_when>
    <thetext>Is this still pending?  Does this patch still apply?  It&apos;s been sitting here a long time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>328952</commentid>
    <comment_count>19</comment_count>
      <attachid>70089</attachid>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2011-01-04 04:18:47 -0800</bug_when>
    <thetext>Comment on attachment 70089
Patch

This is not currently pending (and the patch most likely doesn&apos;t apply anymore).

I expect to get back to this eventually, but taking it out of the review queue for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650168</commentid>
    <comment_count>20</comment_count>
    <who name="Hans Wennborg">hans</who>
    <bug_when>2012-06-15 07:36:44 -0700</bug_when>
    <thetext>For anyone interested, this work has moved to Bug 89197.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69625</attachid>
            <date>2010-10-04 06:17:19 -0700</date>
            <delta_ts>2010-10-05 09:29:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47078-20101004141717.patch</filename>
            <type>text/plain</type>
            <size>33915</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMzY4NjZiZGNkNTUxNDM1ZWI3NjljMTU3NjZiMjhkYTk5ZTM4MDY2Li43Yzg2ZDk4
ODIzZWY1ZDYxNmNkYTVjZTE4Y2Y3ZGUxNDcwNzlmYTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMDQgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIERldmlj
ZU1vdGlvbiBwbHVtYmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDcwNzgKKworICAgICAgICBTaW5jZSBEZXZpY2VNb3Rpb24gaXMgbm8gbG9uZ2Vy
IGRpc2FibGVkIGJ5IHRlc3Rfc2hlbGwgYW5kIERSVCwgdGhlc2UKKyAgICAgICAgYmFzZWxpbmVz
IG5lZWQgYW4gdXBkYXRlLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRp
ZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0xMC0wNCAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdGVzdCBl
eHBlY3RhdGlvbiB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1saW51eC9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVu
dGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhw
ZWN0ZWQudHh0CmluZGV4IDMxMzc3MmI1MThjN2UzNTI4MjYwYjM2ZWEwYTZlOGQzOWE1NTI3Njgu
LmE4NjRlMTg3OTZhYjcyMjk0NjVjZTAxZjVkMmRjYjM4MmE1Nzk1ODIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVy
dGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogVGhp
cyB0ZXN0IGR1bXBzIGFsbCBvZiB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSByZWFjaGFibGUgZnJv
bSB0aGUgd2luZG93LkRldmljZU1vdGlvbkV2ZW50IHdpbmRvdy5vbmRldmljZW1vdGlvbiwgd2lu
ZG93LkRldmljZU9yaWVudGF0aW9uRXZlbnQgYW5kIHdpbmRvdy5vbmRldmljZW9yaWVudGF0aW9u
IG9iamVjdHMsIGFsb25nIHdpdGggdGhlaXIgdHlwZXMuIFRoZXNlIHByb3BlcnRpZXMgYXJlIGN1
cnJlbnRseSBndWFyZGVkIGJ5IEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04uCiAKLXdpbmRvdy5E
ZXZpY2VNb3Rpb25FdmVudCBbdW5kZWZpbmVkXQotd2luZG93Lm9uZGV2aWNlbW90aW9uIFt1bmRl
ZmluZWRdCit3aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgW2Z1bmN0aW9uXQord2luZG93Lm9uZGV2
aWNlbW90aW9uIFtudWxsXQogd2luZG93LkRldmljZU9yaWVudGF0aW9uRXZlbnQgW2Z1bmN0aW9u
XQogd2luZG93Lm9uZGV2aWNlb3JpZW50YXRpb24gW251bGxdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1v
cmllbnRhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggMzEzNzcyYjUxOGM3ZTM1MjgyNjBiMzZlYTBh
NmU4ZDM5YTU1Mjc2OC4uYTg2NGUxODc5NmFiNzIyOTQ2NWNlMDFmNWQyZGNiMzgyYTU3OTU4MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsx
LDYgQEAKIFRoaXMgdGVzdCBkdW1wcyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgcmVh
Y2hhYmxlIGZyb20gdGhlIHdpbmRvdy5EZXZpY2VNb3Rpb25FdmVudCB3aW5kb3cub25kZXZpY2Vt
b3Rpb24sIHdpbmRvdy5EZXZpY2VPcmllbnRhdGlvbkV2ZW50IGFuZCB3aW5kb3cub25kZXZpY2Vv
cmllbnRhdGlvbiBvYmplY3RzLCBhbG9uZyB3aXRoIHRoZWlyIHR5cGVzLiBUaGVzZSBwcm9wZXJ0
aWVzIGFyZSBjdXJyZW50bHkgZ3VhcmRlZCBieSBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OLgog
Ci13aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgW3VuZGVmaW5lZF0KLXdpbmRvdy5vbmRldmljZW1v
dGlvbiBbdW5kZWZpbmVkXQord2luZG93LkRldmljZU1vdGlvbkV2ZW50IFtmdW5jdGlvbl0KK3dp
bmRvdy5vbmRldmljZW1vdGlvbiBbbnVsbF0KIHdpbmRvdy5EZXZpY2VPcmllbnRhdGlvbkV2ZW50
IFtmdW5jdGlvbl0KIHdpbmRvdy5vbmRldmljZW9yaWVudGF0aW9uIFtudWxsXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDMxMzc3MmI1MThjN2UzNTI4
MjYwYjM2ZWEwYTZlOGQzOWE1NTI3NjguLmE4NjRlMTg3OTZhYjcyMjk0NjVjZTAxZjVkMmRjYjM4
MmE1Nzk1ODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9kb20v
V2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQK
QEAgLTEsNiArMSw2IEBACiBUaGlzIHRlc3QgZHVtcHMgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHRo
YXQgYXJlIHJlYWNoYWJsZSBmcm9tIHRoZSB3aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgd2luZG93
Lm9uZGV2aWNlbW90aW9uLCB3aW5kb3cuRGV2aWNlT3JpZW50YXRpb25FdmVudCBhbmQgd2luZG93
Lm9uZGV2aWNlb3JpZW50YXRpb24gb2JqZWN0cywgYWxvbmcgd2l0aCB0aGVpciB0eXBlcy4gVGhl
c2UgcHJvcGVydGllcyBhcmUgY3VycmVudGx5IGd1YXJkZWQgYnkgRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTi4KIAotd2luZG93LkRldmljZU1vdGlvbkV2ZW50IFt1bmRlZmluZWRdCi13aW5kb3cu
b25kZXZpY2Vtb3Rpb24gW3VuZGVmaW5lZF0KK3dpbmRvdy5EZXZpY2VNb3Rpb25FdmVudCBbZnVu
Y3Rpb25dCit3aW5kb3cub25kZXZpY2Vtb3Rpb24gW251bGxdCiB3aW5kb3cuRGV2aWNlT3JpZW50
YXRpb25FdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cub25kZXZpY2VvcmllbnRhdGlvbiBbbnVsbF0K
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGU2YzgwMGI2ZmVjOGJjY2FmODhiYzBjYjViZTcwZmIxYjJkZTAxNzku
LmU0ODY4MGMzNmY2ZTI5YmIwMDJkYzZjNjJkNDAxYTllZGQwNjVkYTcgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU0IEBACisyMDEwLTEwLTA0ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0Nocm9taXVtXSBEZXZpY2VNb3Rpb24gcGx1bWJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDc4CisKKyAgICAgICAgUGx1bWJpbmcgZm9yIERl
dmljZU1vdGlvbi4gVGhlIHBhdHRlcm4gaXMgdGhlIHNhbWUgYXMgZm9yCisgICAgICAgIERldmlj
ZU9yaWVudGF0aW9uOgorCisgICAgICAgIERldmljZU1vdGlvblByb3h5IGltcGxlbWVudHMgV2Vi
Q29yZTo6RGV2aWNlTW90aW9uQ2xpZW50LgorICAgICAgICBUaGlzIGlzIHBhc3NlZCBpbnRvIHRo
ZSBQYWdlLCBhbmQgcHJveGllcyBmdW5jdGlvbiBjYWxscyB0bworICAgICAgICBhIFdlYkRldmlj
ZU1vdGlvbkNsaWVudCwgd2hpY2ggY2FuIHRoZW4gYmUgaW1wbGVtZW50ZWQgQ2hyb21pdW0gc2lk
ZSwKKyAgICAgICAgYW5kIGlzIHByb3ZpZGVkIGJ5IHRoZSBXZWJWaWV3Q2xpZW50LgorICAgICAg
ICBXcmFwcGVycyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBjbGFzc2VzIHRoYXQgbmVlZCBpdC4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVtb3ZlcyB0aGUgaGFyZCBkaXNhYmxlIG9mIHRoZSBy
dW50aW1lIGZsYWcgZm9yCisgICAgICAgIERldmljZU1vdGlvbi4gVGhlIGZlYXR1cmUgaXMgc3Rp
bGwgZGlzYWJsZWQgaW4gQ2hyb21pdW0sIGJ1dCBlbmFibGVkCisgICAgICAgIG90aGVyd2hlcmUs
IGUuZy4gaW4gdGVzdF9zaGVsbCBhbmQgRFJULgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAg
ICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlTW90aW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJEZXZpY2VNb3Rpb25DbGllbnQ6On5XZWJEZXZpY2VNb3Rpb25DbGllbnQpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIHB1YmxpYy9XZWJEZXZpY2VNb3Rpb25EYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZXZpY2VNb3Rpb25EYXRhOjpXZWJEZXZpY2VNb3Rpb25EYXRhKToKKyAgICAgICAg
KiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50
OjpkZXZpY2VNb3Rpb25DbGllbnQpOgorICAgICAgICAqIHNyYy9EZXZpY2VNb3Rpb25DbGllbnRQ
cm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94
eTo6RGV2aWNlTW90aW9uQ2xpZW50UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VNb3Rp
b25DbGllbnRQcm94eTo6fkRldmljZU1vdGlvbkNsaWVudFByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6RGV2aWNlTW90aW9uQ2xpZW50UHJveHk6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
S2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OkRldmljZU1vdGlvbkNsaWVudFByb3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6Y3VycmVudERldmljZU1vdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkRldmljZU1vdGlvbkNsaWVudFByb3h5OjpkZXZpY2VNb3Rpb25Db250
cm9sbGVyRGVzdHJveWVkKToKKyAgICAgICAgKiBzcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHku
aDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6V2ViRGV2
aWNlTW90aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU1vdGlvbkNv
bnRyb2xsZXI6OmRpZENoYW5nZURldmljZU1vdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRl
dmljZU1vdGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIpOgorICAgICAgICAqIHNyYy9XZWJEZXZp
Y2VNb3Rpb25EYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU1vdGlv
bkRhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU1vdGlvbkRhdGE6Oldl
YkRldmljZU1vdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VNb3Rpb25EYXRh
OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VNb3Rpb25EYXRhOjpvcGVy
YXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEwLTAxICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5hdGUgQ2hhcGluLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAppbmRleCA2YjUxMDhmNjVjNjg5ZTRkNWNmZTE0OTgzY2QwMzE1MThiOGUxNzdlLi5lZmRl
OTNhMmM3OTBjMTRmNjc2ZjMwMGJiNTAwZGNiNzQxODRkODE5IDEwMDY0NAotLS0gYS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAt
MTI2LDYgKzEyNiw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDcm9zc09yaWdpblBy
ZWZsaWdodFJlc3VsdENhY2hlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ1N0cmlu
Zy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkN1cnNvckluZm8uaCcsCisgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25EYXRhLmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViRE9NRXZlbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJET01F
dmVudExpc3RlbmVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRE9NTW91c2VFdmVu
dC5oJywKQEAgLTEzOSw2ICsxNDAsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2
VG9vbHNBZ2VudENsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xz
RnJvbnRlbmQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29sc0Zyb250ZW5k
Q2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2aWNlTW90aW9uQ2xpZW50
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb24uaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oJywK
QEAgLTMxMCw2ICszMTIsOCBAQAogICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudElt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuaCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9EZXZpY2VNb3Rpb25DbGllbnRQcm94eS5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9E
ZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9E
ZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmgnLAogICAgICAgICAgICAgICAgICdzcmMvRE9N
VXRpbGl0aWVzUHJpdmF0ZS5jcHAnLApAQCAtNDA5LDYgKzQxMyw4IEBACiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YkRldlRvb2xzRnJvbnRlbmRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZU
b29sc0Zyb250ZW5kSW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU1vdGlv
bkNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU1vdGlvbkRh
dGEuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0aW9uLmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ29udHJvbGxlci5j
cHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25D
bGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlTW90aW9uQ2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTI5ZGE0OTM5NTAzNTMyMWFjODcxZTFiNTMxNjg3NDg3Y2U4YTNmMQotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlTW90aW9uQ2xp
ZW50LmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGV2aWNlTW90aW9uQ2xp
ZW50X2gKKyNkZWZpbmUgV2ViRGV2aWNlTW90aW9uQ2xpZW50X2gKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYkRldmljZU1vdGlvbkNvbnRyb2xsZXI7CitjbGFzcyBXZWJEZXZpY2VN
b3Rpb25EYXRhOworCitjbGFzcyBXZWJEZXZpY2VNb3Rpb25DbGllbnQgeworcHVibGljOgorICAg
IHZpcnR1YWwgfldlYkRldmljZU1vdGlvbkNsaWVudCgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udHJvbGxlcihXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyKikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRp
bmcoKSA9IDA7CisgICAgdmlydHVhbCBXZWJEZXZpY2VNb3Rpb25EYXRhKiBjdXJyZW50RGV2aWNl
TW90aW9uKCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBXZWJEZXZpY2VNb3Rpb25DbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NjAyYTkzZGIxZTEw
ZDQ4MzU5ODdjN2ZhYzFkYjMzNGI3NGNjYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcl9oCisjZGVmaW5lIFdl
YkRldmljZU1vdGlvbkNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRGV2aWNlTW90aW9uQ29udHJvbGxlcjsgfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlTW90aW9uRGF0YTsKKworY2xhc3MgV2Vi
RGV2aWNlTW90aW9uQ29udHJvbGxlciB7CitwdWJsaWM6CisgICAgV2ViRGV2aWNlTW90aW9uQ29u
dHJvbGxlcihXZWJDb3JlOjpEZXZpY2VNb3Rpb25Db250cm9sbGVyKik7CisgICAgV0VCS0lUX0FQ
SSB2b2lkIGRpZENoYW5nZURldmljZU1vdGlvbihjb25zdCBXZWJEZXZpY2VNb3Rpb25EYXRhKik7
CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJDb3JlOjpEZXZpY2VNb3Rpb25D
b250cm9sbGVyKiBjb250cm9sbGVyKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBX
ZWJDb3JlOjpEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBtX2NvbnRyb2xsZXI7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkRldmljZU1vdGlvbkNvbnRyb2xsZXJf
aApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25EYXRh
LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU1vdGlvbkRhdGEuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mYzZjZGQ2MGRhMmMyNTVhMzFjNDZhYzUzODJlODMxNjU0ZmYxZTcwCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25EYXRhLmgKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGV2aWNlTW90aW9uRGF0YV9oCisjZGVm
aW5lIFdlYkRldmljZU1vdGlvbkRhdGFfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViUHJpdmF0ZVB0ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERldmlj
ZU1vdGlvbkRhdGE7IH0KKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXVEYg
eyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQorI2VuZGlmCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEZXZpY2VNb3Rpb25EYXRhIHsKK3B1YmxpYzoK
KyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJEZXZpY2VNb3Rpb25EYXRhKiBjcmVhdGUoKTsKKyAg
ICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJEZXZpY2VNb3Rpb25EYXRhKiBjcmVhdGUoYm9vbCBjYW5Q
cm92aWRlWEFjY2VsZXJhdGlvbiwgZG91YmxlIHhBY2NlbGVyYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZVlBY2Nl
bGVyYXRpb24sIGRvdWJsZSB5QWNjZWxlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVaQWNjZWxlcmF0aW9uLCBk
b3VibGUgekFjY2VsZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlWEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHksIGRvdWJsZSB4QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlWUFjY2Vs
ZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jh
dml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBjYW5Qcm92aWRlWkFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB6QWNj
ZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlQWxwaGFSb3RhdGlvblJhdGUsIGRv
dWJsZSBhbHBoYVJvdGF0aW9uUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlQmV0YVJvdGF0aW9uUmF0ZSwgIGRvdWJs
ZSBiZXRhUm90YXRpb25SYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVHYW1tYVJvdGF0aW9uUmF0ZSwgZG91YmxlIGdh
bW1hUm90YXRpb25SYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGNhblByb3ZpZGVJbnRlcnZhbCwgZG91YmxlIGludGVydmFsKTsKKwor
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkRldmljZU1vdGlvbkRhdGEoY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+Jik7CisgICAgV2ViRGV2
aWNlTW90aW9uRGF0YSYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpE
ZXZpY2VNb3Rpb25EYXRhPiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpEZXZpY2VNb3Rpb25EYXRhPigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV2Vi
RGV2aWNlTW90aW9uRGF0YSgpIHt9CisKKyAgICBXZWJQcml2YXRlUHRyPFdlYkNvcmU6OkRldmlj
ZU1vdGlvbkRhdGE+IG1fZGV2aWNlTW90aW9uRGF0YTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdAorCisjZW5kaWYgLy8gV2ViRGV2aWNlTW90aW9uRGF0YV9oCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlld0NsaWVudC5oCmluZGV4IGI4MjFlMzgxYzNlOGNmNTdiNWRiM2UwNTA4N2I0MjM4
OWVhODA2MGMuLjFlZGFlNTc3NjRjMTMyMzllNGZkNjIwMDg2MjE0M2Q2OWFmYmFlNDYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC00NSw2ICs0NSw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKK2NsYXNzIFdl
YkRldmljZU1vdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50Owog
Y2xhc3MgV2ViRHJhZ0RhdGE7CiBjbGFzcyBXZWJFbGVtZW50OwpAQCAtMzQ4LDYgKzM0OSw4IEBA
IHB1YmxpYzoKICAgICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3IgZGV2aWNlIG9yaWVu
dGF0aW9uIHNlcnZpY2VzLgogICAgIHZpcnR1YWwgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQq
IGRldmljZU9yaWVudGF0aW9uQ2xpZW50KCkgeyByZXR1cm4gMDsgfQogCisgICAgLy8gQWNjZXNz
IHRoZSBlbWJlZGRlciBBUEkgZm9yIGRldmljZSBtb3Rpb24gc2VydmljZXMuCisgICAgdmlydHVh
bCBXZWJEZXZpY2VNb3Rpb25DbGllbnQqIGRldmljZU1vdGlvbkNsaWVudCgpIHsgcmV0dXJuIDA7
IH0KIAogICAgIC8vIFpvb20gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL0RldmljZU1vdGlvbkNsaWVudFByb3h5LmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2
aWNlTW90aW9uQ2xpZW50UHJveHkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhM2UyMTc0YjI0ZTQyZTUyZDZh
YTI5MzYwOWY5MTFkYTA1NDBjNzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL0RldmljZU1vdGlvbkNsaWVudFByb3h5LmNwcApAQCAtMCwwICsxLDg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRldmljZU1vdGlvbkNsaWVudFByb3h5Lmgi
CisKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25EYXRhLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlTW90
aW9uQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIldlYkRldmljZU1vdGlvbkRhdGEuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRGV2aWNlTW90
aW9uQ29udHJvbGxlcjsgfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRGV2aWNlTW90aW9uQ2xp
ZW50UHJveHk6OkRldmljZU1vdGlvbkNsaWVudFByb3h5KFdlYkRldmljZU1vdGlvbkNsaWVudCog
Y2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQoreworfQorCitEZXZpY2VNb3Rpb25DbGll
bnRQcm94eTo6fkRldmljZU1vdGlvbkNsaWVudFByb3h5KCkKK3sKK30KKwordm9pZCBEZXZpY2VN
b3Rpb25DbGllbnRQcm94eTo6c2V0Q29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VNb3Rpb25Db250
cm9sbGVyKiBjb250cm9sbGVyKQoreworICAgIGlmICghbV9jbGllbnQpIC8vIEZJWE1FOiBHZXQg
cmlkIG9mIHRoZXNlIG51bGwgY2hlY2tzIG9uY2UgZGV2aWNlIG1vdGlvbiBpcyBlbmFibGVkIGJ5
IGRlZmF1bHQuCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+c2V0Q29udHJvbGxlcihu
ZXcgV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcihjb250cm9sbGVyKSk7Cit9CisKK3ZvaWQgRGV2
aWNlTW90aW9uQ2xpZW50UHJveHk6OnN0YXJ0VXBkYXRpbmcoKQoreworICAgIGlmICghbV9jbGll
bnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+c3RhcnRVcGRhdGluZygpOworfQor
Cit2b2lkIERldmljZU1vdGlvbkNsaWVudFByb3h5OjpzdG9wVXBkYXRpbmcoKQoreworICAgIGlm
ICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsKKyAgICBtX2NsaWVudC0+c3RvcFVwZGF0aW5n
KCk7Cit9CisKK1dlYkNvcmU6OkRldmljZU1vdGlvbkRhdGEqIERldmljZU1vdGlvbkNsaWVudFBy
b3h5OjpjdXJyZW50RGV2aWNlTW90aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY2xpZW50KQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICghbV9jbGllbnQtPmN1cnJlbnREZXZpY2VNb3Rp
b24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBDYWNoZSB0aGUgRGV2aWNlTW90aW9u
RGF0YSBwb2ludGVyIHNvIGl0cyByZWZlcmVuY2UgY291bnQgZG9lcyBub3QgZHJvcCB0byB6ZXJv
IHVwb24gcmV0dXJuLgorICAgIG1fY3VycmVudERldmljZU1vdGlvbiA9ICptX2NsaWVudC0+Y3Vy
cmVudERldmljZU1vdGlvbigpOworICAgIHJldHVybiBtX2N1cnJlbnREZXZpY2VNb3Rpb24uZ2V0
KCk7Cit9CisKK3ZvaWQgRGV2aWNlTW90aW9uQ2xpZW50UHJveHk6OmRldmljZU1vdGlvbkNvbnRy
b2xsZXJEZXN0cm95ZWQoKQoreworICAgIC8vIE91ciBsaWZldGltZSBpcyBib3VuZCB0byB0aGUg
V2ViVmlld0ltcGwuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9EZXZpY2VNb3Rpb25DbGllbnRQcm94eS5oIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9EZXZpY2VNb3Rpb25DbGllbnRQcm94eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyZjdiMTM2M2Zk
Y2EwMTE4M2Y0YmNmMGM0MTgzMDFiN2Y2ZjFjOWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0RldmljZU1vdGlvbkNsaWVudFByb3h5LmgKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgRGV2aWNlTW90aW9uQ2xpZW50UHJveHlfaAorI2RlZmluZSBEZXZpY2VN
b3Rpb25DbGllbnRQcm94eV9oCisKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGllbnQuaCIKKyNp
bmNsdWRlICJXZWJEZXZpY2VNb3Rpb25DbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERldmljZU1vdGlvbkNvbnRyb2xsZXI7Citj
bGFzcyBEZXZpY2VNb3Rpb25EYXRhOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
RGV2aWNlTW90aW9uQ2xpZW50UHJveHkgOiBwdWJsaWMgV2ViQ29yZTo6RGV2aWNlTW90aW9uQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBEZXZpY2VNb3Rpb25DbGllbnRQcm94eShXZWJEZXZpY2VNb3Rp
b25DbGllbnQqKTsKKyAgICB+RGV2aWNlTW90aW9uQ2xpZW50UHJveHkoKTsKKworICAgIC8vIERl
dmljZU1vdGlvbkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKFdlYkNvcmU6
OkRldmljZU1vdGlvbkNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGlu
ZygpOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkRldmljZU1vdGlvbkRhdGEqIGN1cnJlbnREZXZpY2VNb3Rpb24oKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpOworCitwcml2YXRl
OgorICAgIFdlYkRldmljZU1vdGlvbkNsaWVudCogbV9jbGllbnQ7CisgICAgbXV0YWJsZSBSZWZQ
dHI8V2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YT4gbV9jdXJyZW50RGV2aWNlTW90aW9uOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBEZXZpY2VNb3Rpb25DbGllbnRQ
cm94eV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU1vdGlvbkNv
bnRyb2xsZXIuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VNb3Rpb25Db250cm9s
bGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42MjM4OGIzZTNmNzFmZmM5M2U3NTliNTFhMTcwNzBjMWE1Mjlj
YTY0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VNb3Rp
b25Db250cm9sbGVyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUg
IkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25EYXRhLmgi
CisjaW5jbHVkZSAiV2ViRGV2aWNlTW90aW9uRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVy
OjpXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyKFdlYkNvcmU6OkRldmljZU1vdGlvbkNvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIpCisgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKK3sKK30KKwor
dm9pZCBXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpkaWRDaGFuZ2VEZXZpY2VNb3Rpb24oY29u
c3QgV2ViRGV2aWNlTW90aW9uRGF0YSogZGV2aWNlTW90aW9uRGF0YSkKK3sKKyAgICBQYXNzUmVm
UHRyPFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+IG1vdGlvbigqZGV2aWNlTW90aW9uRGF0YSk7
CisgICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VEZXZpY2VNb3Rpb24obW90aW9uLmdldCgpKTsK
K30KKworV2ViQ29yZTo6RGV2aWNlTW90aW9uQ29udHJvbGxlciogV2ViRGV2aWNlTW90aW9uQ29u
dHJvbGxlcjo6Y29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udHJvbGxlcjsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRldmljZU1vdGlvbkRhdGEuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZp
Y2VNb3Rpb25EYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYmI1YTI1OGZiYjNjNzE5YWMxNDUxYjAyMTc5
ZjY5OTQ5OTg4NGM4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZpY2VNb3Rpb25EYXRhLmNwcApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYkRldmljZU1vdGlvbkRhdGEuaCIKKworI2luY2x1ZGUgIkRl
dmljZU1vdGlvbkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKwordXNpbmcgV2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYkRldmljZU1vdGlvbkRhdGEqIFdlYkRldmljZU1vdGlvbkRh
dGE6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG5ldyBXZWJEZXZpY2VNb3Rpb25EYXRhKERldmlj
ZU1vdGlvbkRhdGE6OmNyZWF0ZSgpKTsKK30KKworV2ViRGV2aWNlTW90aW9uRGF0YSogV2ViRGV2
aWNlTW90aW9uRGF0YTo6Y3JlYXRlKGJvb2wgY2FuUHJvdmlkZVhBY2NlbGVyYXRpb24sIGRvdWJs
ZSB4QWNjZWxlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZVlBY2NlbGVyYXRpb24sIGRvdWJsZSB5QWNjZWxlcmF0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgY2FuUHJvdmlkZVpBY2NlbGVyYXRpb24sIGRvdWJsZSB6QWNjZWxlcmF0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlk
ZVhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgeEFjY2VsZXJhdGlvbkluY2x1
ZGluZ0dyYXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBjYW5Qcm92aWRlWUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJs
ZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVaQWNjZWxlcmF0aW9uSW5j
bHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJv
dmlkZUFscGhhUm90YXRpb25SYXRlLCBkb3VibGUgYWxwaGFSb3RhdGlvblJhdGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRl
QmV0YVJvdGF0aW9uUmF0ZSwgIGRvdWJsZSBiZXRhUm90YXRpb25SYXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1h
Um90YXRpb25SYXRlLCBkb3VibGUgZ2FtbWFSb3RhdGlvblJhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlSW50ZXJ2YWws
IGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAgICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6QWNjZWxl
cmF0aW9uPiBhY2NlbGVyYXRpb247CisgICAgaWYgKGNhblByb3ZpZGVYQWNjZWxlcmF0aW9uIHx8
IGNhblByb3ZpZGVZQWNjZWxlcmF0aW9uIHx8IGNhblByb3ZpZGVaQWNjZWxlcmF0aW9uKSB7Cisg
ICAgICAgIGFjY2VsZXJhdGlvbiA9IERldmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbjo6Y3Jl
YXRlKGNhblByb3ZpZGVYQWNjZWxlcmF0aW9uLCB4QWNjZWxlcmF0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5Qcm92
aWRlWUFjY2VsZXJhdGlvbiwgeUFjY2VsZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuUHJvdmlkZVpBY2NlbGVy
YXRpb24sIHpBY2NlbGVyYXRpb24pOworICAgIH0KKworICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25E
YXRhOjpBY2NlbGVyYXRpb24+IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHk7CisgICAgaWYg
KGNhblByb3ZpZGVYQWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSB8fCBjYW5Qcm92aWRlWUFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkgfHwgY2FuUHJvdmlkZVpBY2NlbGVyYXRpb25JbmNs
dWRpbmdHcmF2aXR5KSB7CisgICAgICAgIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkgPSBE
ZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb246OmNyZWF0ZShjYW5Qcm92aWRlWEFjY2VsZXJh
dGlvbkluY2x1ZGluZ0dyYXZpdHksIHhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2FuUHJvdmlkZVlBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5
LCB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNh
blByb3ZpZGVaQWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgekFjY2VsZXJhdGlvbkluY2x1
ZGluZ0dyYXZpdHkpOworICAgIH0KKworICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhOjpSb3Rh
dGlvblJhdGU+IHJvdGF0aW9uUmF0ZTsKKyAgICBpZiAoY2FuUHJvdmlkZUFscGhhUm90YXRpb25S
YXRlIHx8IGNhblByb3ZpZGVCZXRhUm90YXRpb25SYXRlIHx8IGNhblByb3ZpZGVHYW1tYVJvdGF0
aW9uUmF0ZSkgeworICAgICAgICByb3RhdGlvblJhdGUgPSBEZXZpY2VNb3Rpb25EYXRhOjpSb3Rh
dGlvblJhdGU6OmNyZWF0ZShjYW5Qcm92aWRlQWxwaGFSb3RhdGlvblJhdGUsIGFscGhhUm90YXRp
b25SYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYW5Qcm92aWRlQmV0YVJvdGF0aW9uUmF0ZSwgYmV0YVJvdGF0aW9uUmF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FuUHJvdmlkZUdhbW1hUm90YXRpb25SYXRlLCBnYW1tYVJvdGF0aW9uUmF0ZSk7
CisgICAgfQorCisgICAgcmV0dXJuIG5ldyBXZWJEZXZpY2VNb3Rpb25EYXRhKFdlYkNvcmU6OkRl
dmljZU1vdGlvbkRhdGE6OmNyZWF0ZShhY2NlbGVyYXRpb24uZ2V0KCksIGFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHkuZ2V0KCksIHJvdGF0aW9uUmF0ZS5nZXQoKSwgY2FuUHJvdmlkZUludGVy
dmFsLCBpbnRlcnZhbCkpOworfQorCitXZWJEZXZpY2VNb3Rpb25EYXRhOjpXZWJEZXZpY2VNb3Rp
b25EYXRhKGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YT4mIGRldmlj
ZU1vdGlvbkRhdGEpCisgICAgOiBtX2RldmljZU1vdGlvbkRhdGEoZGV2aWNlTW90aW9uRGF0YSkK
K3sKK30KKworV2ViRGV2aWNlTW90aW9uRGF0YSYgV2ViRGV2aWNlTW90aW9uRGF0YTo6b3BlcmF0
b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25EYXRhPiYgZGV2
aWNlTW90aW9uRGF0YSkKK3sKKyAgICBtX2RldmljZU1vdGlvbkRhdGEgPSBkZXZpY2VNb3Rpb25E
YXRhOworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViRGV2aWNlTW90aW9uRGF0YTo6b3BlcmF0
b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25EYXRhPigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fZGV2aWNlTW90aW9uRGF0YS5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDQwODM4MDY1ZDU0N2FkNmI3
NmEwNjVjNTk2Y2ZmNDFkZmNhNTFhMDkuLmU5M2U2MjAzMTc3ZmZmZTE0Y2U2YWM5MTEyMDliYThh
MWY2ODhkMzUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC00Miw2ICs0Miw3
IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5
d29yZHMuaCIKICNpbmNsdWRlICJDdXJzb3IuaCIKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGll
bnRQcm94eS5oIgogI2luY2x1ZGUgIkRldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC0xOTAs
OSArMTkxLDYgQEAgc3RhdGljIGNvbnN0IFBvcHVwQ29udGFpbmVyU2V0dGluZ3MgYXV0b0ZpbGxQ
b3B1cFNldHRpbmdzID0gewogCiBXZWJWaWV3KiBXZWJWaWV3OjpjcmVhdGUoV2ViVmlld0NsaWVu
dCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBkZXZUb29sc0NsaWVudCkKIHsKLSAg
ICAvLyBLZWVwIHJ1bnRpbWUgZmxhZyBmb3IgZGV2aWNlIG1vdGlvbiB0dXJuZWQgb2ZmIHVudGls
IGl0J3MgaW1wbGVtZW50ZWQuCi0gICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVEZXZpY2VN
b3Rpb24oZmFsc2UpOwotCiAgICAgLy8gUGFzcyB0aGUgV2ViVmlld0ltcGwncyBzZWxmLXJlZmVy
ZW5jZSB0byB0aGUgY2FsbGVyLgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlld0ltcGwo
Y2xpZW50LCBkZXZUb29sc0NsaWVudCkpLmxlYWtSZWYoKTsKIH0KQEAgLTI4Miw2ICsyODAsNyBA
QCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZU
b29sc0FnZW50Q2xpZW50KiBkZXZUb29scwogICAgICwgbV9zcGVlY2hJbnB1dENsaWVudChjbGll
bnQpCiAjZW5kaWYKICAgICAsIG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShuZXcgRGV2
aWNlT3JpZW50YXRpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU9yaWVudGF0
aW9uQ2xpZW50KCkgOiAwKSkKKyAgICAsIG1fZGV2aWNlTW90aW9uQ2xpZW50UHJveHkobmV3IERl
dmljZU1vdGlvbkNsaWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNlTW90aW9uQ2xpZW50
KCkgOiAwKSkKIHsKICAgICAvLyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwIGRvZXMgdGhlIHNhbWUg
dGhpbmcsIGV4Y2VwdCB0aGV5IGNhbGwgdGhlCiAgICAgLy8gS0pTIHNwZWNpZmljIHdyYXBwZXIg
YXJvdW5kIHRoaXMgbWV0aG9kLiBXZSBuZWVkIHRvIGhhdmUgdGhyZWFkaW5nCkBAIC0zMDUsNiAr
MzA0LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwg
V2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICBwYWdlQ2xpZW50cy5zcGVlY2hJ
bnB1dENsaWVudCA9ICZtX3NwZWVjaElucHV0Q2xpZW50OwogI2VuZGlmCiAgICAgcGFnZUNsaWVu
dHMuZGV2aWNlT3JpZW50YXRpb25DbGllbnQgPSBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJv
eHkuZ2V0KCk7CisgICAgcGFnZUNsaWVudHMuZGV2aWNlTW90aW9uQ2xpZW50ID0gbV9kZXZpY2VN
b3Rpb25DbGllbnRQcm94eS5nZXQoKTsKIAogICAgIG1fcGFnZS5zZXQobmV3IFBhZ2UocGFnZUNs
aWVudHMpKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDE2NWQ2YzEyYWRiNmRl
OTdlMzNmMWU1YWMxMzg4MzFjOGZkNDM3YzkuLjFkOGQ0NDBmODQ0OWRiMGM4MDAzYjg2Yjc1MzMw
MzU1MTNkNzQwMDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTcyLDYgKzcyLDcg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBBdXRvY29tcGxldGVQb3B1cE1lbnVDbGllbnQ7
CiBjbGFzcyBBdXRvRmlsbFBvcHVwTWVudUNsaWVudDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50
SW1wbDsKK2NsYXNzIERldmljZU1vdGlvbkNsaWVudFByb3h5OwogY2xhc3MgRGV2aWNlT3JpZW50
YXRpb25DbGllbnRQcm94eTsKIGNsYXNzIERyYWdTY3JvbGxUaW1lcjsKIGNsYXNzIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3Q7CkBAIC01NTAsNiArNTUxLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
V2ViQ29yZTo6U2hhcmVkR3JhcGhpY3NDb250ZXh0M0Q+IG1fc2hhcmVkQ29udGV4dDNEOwogI2Vu
ZGlmCiAgICAgT3duUHRyPERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk+IG1fZGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRQcm94eTsKKyAgICBPd25QdHI8RGV2aWNlTW90aW9uQ2xpZW50UHJveHk+
IG1fZGV2aWNlTW90aW9uQ2xpZW50UHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69795</attachid>
            <date>2010-10-05 09:29:56 -0700</date>
            <delta_ts>2010-10-06 02:45:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47078-20101005172954.patch</filename>
            <type>text/plain</type>
            <size>35382</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYzJmMzgzYTA5ZjM5NzAwZWM0ZmQwOGYyNGFiOTU4MzkzYzIyYjU5Li5lMzE3ZWY5
ZDY1YTE5Y2I4NmMzODA0NWVmMzAzM2VhYjg5NDQ3Zjc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMDUgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIERldmlj
ZU1vdGlvbiBwbHVtYmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDcwNzgKKworICAgICAgICBTaW5jZSBEZXZpY2VNb3Rpb24gaXMgbm8gbG9uZ2Vy
IGRpc2FibGVkIGJ5IHRlc3Rfc2hlbGwgYW5kIERSVCwgdGhlc2UKKyAgICAgICAgYmFzZWxpbmVz
IG5lZWQgYW4gdXBkYXRlLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRp
ZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0xMC0wNSAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdGVzdCBl
eHBlY3RhdGlvbiB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1saW51eC9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVu
dGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhw
ZWN0ZWQudHh0CmluZGV4IDMxMzc3MmI1MThjN2UzNTI4MjYwYjM2ZWEwYTZlOGQzOWE1NTI3Njgu
LmE4NjRlMTg3OTZhYjcyMjk0NjVjZTAxZjVkMmRjYjM4MmE1Nzk1ODIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVy
dGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogVGhp
cyB0ZXN0IGR1bXBzIGFsbCBvZiB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSByZWFjaGFibGUgZnJv
bSB0aGUgd2luZG93LkRldmljZU1vdGlvbkV2ZW50IHdpbmRvdy5vbmRldmljZW1vdGlvbiwgd2lu
ZG93LkRldmljZU9yaWVudGF0aW9uRXZlbnQgYW5kIHdpbmRvdy5vbmRldmljZW9yaWVudGF0aW9u
IG9iamVjdHMsIGFsb25nIHdpdGggdGhlaXIgdHlwZXMuIFRoZXNlIHByb3BlcnRpZXMgYXJlIGN1
cnJlbnRseSBndWFyZGVkIGJ5IEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04uCiAKLXdpbmRvdy5E
ZXZpY2VNb3Rpb25FdmVudCBbdW5kZWZpbmVkXQotd2luZG93Lm9uZGV2aWNlbW90aW9uIFt1bmRl
ZmluZWRdCit3aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgW2Z1bmN0aW9uXQord2luZG93Lm9uZGV2
aWNlbW90aW9uIFtudWxsXQogd2luZG93LkRldmljZU9yaWVudGF0aW9uRXZlbnQgW2Z1bmN0aW9u
XQogd2luZG93Lm9uZGV2aWNlb3JpZW50YXRpb24gW251bGxdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1v
cmllbnRhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggMzEzNzcyYjUxOGM3ZTM1MjgyNjBiMzZlYTBh
NmU4ZDM5YTU1Mjc2OC4uYTg2NGUxODc5NmFiNzIyOTQ2NWNlMDFmNWQyZGNiMzgyYTU3OTU4MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsx
LDYgQEAKIFRoaXMgdGVzdCBkdW1wcyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgcmVh
Y2hhYmxlIGZyb20gdGhlIHdpbmRvdy5EZXZpY2VNb3Rpb25FdmVudCB3aW5kb3cub25kZXZpY2Vt
b3Rpb24sIHdpbmRvdy5EZXZpY2VPcmllbnRhdGlvbkV2ZW50IGFuZCB3aW5kb3cub25kZXZpY2Vv
cmllbnRhdGlvbiBvYmplY3RzLCBhbG9uZyB3aXRoIHRoZWlyIHR5cGVzLiBUaGVzZSBwcm9wZXJ0
aWVzIGFyZSBjdXJyZW50bHkgZ3VhcmRlZCBieSBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OLgog
Ci13aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgW3VuZGVmaW5lZF0KLXdpbmRvdy5vbmRldmljZW1v
dGlvbiBbdW5kZWZpbmVkXQord2luZG93LkRldmljZU1vdGlvbkV2ZW50IFtmdW5jdGlvbl0KK3dp
bmRvdy5vbmRldmljZW1vdGlvbiBbbnVsbF0KIHdpbmRvdy5EZXZpY2VPcmllbnRhdGlvbkV2ZW50
IFtmdW5jdGlvbl0KIHdpbmRvdy5vbmRldmljZW9yaWVudGF0aW9uIFtudWxsXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDMxMzc3MmI1MThjN2UzNTI4
MjYwYjM2ZWEwYTZlOGQzOWE1NTI3NjguLmE4NjRlMTg3OTZhYjcyMjk0NjVjZTAxZjVkMmRjYjM4
MmE1Nzk1ODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9kb20v
V2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQK
QEAgLTEsNiArMSw2IEBACiBUaGlzIHRlc3QgZHVtcHMgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHRo
YXQgYXJlIHJlYWNoYWJsZSBmcm9tIHRoZSB3aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgd2luZG93
Lm9uZGV2aWNlbW90aW9uLCB3aW5kb3cuRGV2aWNlT3JpZW50YXRpb25FdmVudCBhbmQgd2luZG93
Lm9uZGV2aWNlb3JpZW50YXRpb24gb2JqZWN0cywgYWxvbmcgd2l0aCB0aGVpciB0eXBlcy4gVGhl
c2UgcHJvcGVydGllcyBhcmUgY3VycmVudGx5IGd1YXJkZWQgYnkgRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTi4KIAotd2luZG93LkRldmljZU1vdGlvbkV2ZW50IFt1bmRlZmluZWRdCi13aW5kb3cu
b25kZXZpY2Vtb3Rpb24gW3VuZGVmaW5lZF0KK3dpbmRvdy5EZXZpY2VNb3Rpb25FdmVudCBbZnVu
Y3Rpb25dCit3aW5kb3cub25kZXZpY2Vtb3Rpb24gW251bGxdCiB3aW5kb3cuRGV2aWNlT3JpZW50
YXRpb25FdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cub25kZXZpY2VvcmllbnRhdGlvbiBbbnVsbF0K
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDY0ZDIxZmI1NWYxMzEyZWU4YzA5NzQ3MDU4Y2RiYmUyZmY4Y2U3MzQu
LjQwYTNhMWJjY2U4MDA4YzkxZTg5ODEwY2FhYmNhZWY1OGY2YTgwN2YgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU0IEBACisyMDEwLTEwLTA1ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0Nocm9taXVtXSBEZXZpY2VNb3Rpb24gcGx1bWJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDc4CisKKyAgICAgICAgUGx1bWJpbmcgZm9yIERl
dmljZU1vdGlvbi4gVGhlIHBhdHRlcm4gaXMgdGhlIHNhbWUgYXMgZm9yCisgICAgICAgIERldmlj
ZU9yaWVudGF0aW9uOgorCisgICAgICAgIERldmljZU1vdGlvblByb3h5IGltcGxlbWVudHMgV2Vi
Q29yZTo6RGV2aWNlTW90aW9uQ2xpZW50LgorICAgICAgICBUaGlzIGlzIHBhc3NlZCBpbnRvIHRo
ZSBQYWdlLCBhbmQgcHJveGllcyBmdW5jdGlvbiBjYWxscyB0bworICAgICAgICBhIFdlYkRldmlj
ZU1vdGlvbkNsaWVudCwgd2hpY2ggY2FuIHRoZW4gYmUgaW1wbGVtZW50ZWQgQ2hyb21pdW0gc2lk
ZSwKKyAgICAgICAgYW5kIGlzIHByb3ZpZGVkIGJ5IHRoZSBXZWJWaWV3Q2xpZW50LgorICAgICAg
ICBXcmFwcGVycyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBjbGFzc2VzIHRoYXQgbmVlZCBpdC4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVtb3ZlcyB0aGUgaGFyZCBkaXNhYmxlIG9mIHRoZSBy
dW50aW1lIGZsYWcgZm9yCisgICAgICAgIERldmljZU1vdGlvbi4gVGhlIGZlYXR1cmUgaXMgc3Rp
bGwgZGlzYWJsZWQgaW4gQ2hyb21pdW0sIGJ1dCBlbmFibGVkCisgICAgICAgIG90aGVyd2hlcmUs
IGUuZy4gaW4gdGVzdF9zaGVsbCBhbmQgRFJULgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAg
ICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlTW90aW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJEZXZpY2VNb3Rpb25DbGllbnQ6On5XZWJEZXZpY2VNb3Rpb25DbGllbnQpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIHB1YmxpYy9XZWJEZXZpY2VNb3Rpb25EYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZXZpY2VNb3Rpb25EYXRhOjpXZWJEZXZpY2VNb3Rpb25EYXRhKToKKyAgICAgICAg
KiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50
OjpkZXZpY2VNb3Rpb25DbGllbnQpOgorICAgICAgICAqIHNyYy9EZXZpY2VNb3Rpb25DbGllbnRQ
cm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94
eTo6RGV2aWNlTW90aW9uQ2xpZW50UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VNb3Rp
b25DbGllbnRQcm94eTo6fkRldmljZU1vdGlvbkNsaWVudFByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6RGV2aWNlTW90aW9uQ2xpZW50UHJveHk6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
S2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OkRldmljZU1vdGlvbkNsaWVudFByb3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6Y3VycmVudERldmljZU1vdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkRldmljZU1vdGlvbkNsaWVudFByb3h5OjpkZXZpY2VNb3Rpb25Db250
cm9sbGVyRGVzdHJveWVkKToKKyAgICAgICAgKiBzcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHku
aDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6V2ViRGV2
aWNlTW90aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU1vdGlvbkNv
bnRyb2xsZXI6OmRpZENoYW5nZURldmljZU1vdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRl
dmljZU1vdGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIpOgorICAgICAgICAqIHNyYy9XZWJEZXZp
Y2VNb3Rpb25EYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU1vdGlv
bkRhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU1vdGlvbkRhdGE6Oldl
YkRldmljZU1vdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VNb3Rpb25EYXRh
OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VNb3Rpb25EYXRhOjpvcGVy
YXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEwLTA0ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKaW5kZXggNGNjOTUxYjZiM2EzMWVhOTExZDI2ODFmZTNlZjA5Y2YzNmM2ZjhlOC4u
ZTc2ODQ0Njg4YTRiNTNhZTM4NWFmMGU3M2NjYzM4YjQ1MjVlN2EyZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
QEAgLTEyNyw2ICsxMjcsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ3Jvc3NPcmln
aW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNT
dHJpbmcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDdXJzb3JJbmZvLmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2aWNlTW90aW9uRGF0YS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkRPTUV2ZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
RE9NRXZlbnRMaXN0ZW5lci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRPTU1vdXNl
RXZlbnQuaCcsCkBAIC0xNDAsNiArMTQxLDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YkRldlRvb2xzQWdlbnRDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZU
b29sc0Zyb250ZW5kLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9u
dGVuZENsaWVudC5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldmljZU1vdGlvbkNs
aWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnQuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
aCcsCkBAIC0zMTEsNiArMzEzLDggQEAKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdl
bnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmgnLAorICAgICAg
ICAgICAgICAgICdzcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHkuY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL0RldmljZU1vdGlvbkNsaWVudFByb3h5LmgnLAogICAgICAgICAgICAgICAgICdz
cmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L0RPTVV0aWxpdGllc1ByaXZhdGUuY3BwJywKQEAgLTQxMCw2ICs0MTQsOCBAQAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RGV2VG9vbHNGcm9udGVuZEltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VN
b3Rpb25Db250cm9sbGVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VNb3Rp
b25EYXRhLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbi5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2Nr
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xs
ZXIuY3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlTW90
aW9uQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU1vdGlvbkNsaWVu
dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkwY2NkZDY1MjU2ZDg3MDUyN2QxZTY4NmJmNGEzZjU1NGE4ZTM3N2YK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU1vdGlv
bkNsaWVudC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRldmljZU1vdGlv
bkNsaWVudF9oCisjZGVmaW5lIFdlYkRldmljZU1vdGlvbkNsaWVudF9oCisKKyNpbmNsdWRlICJX
ZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU1vdGlv
bkNvbnRyb2xsZXI7CitjbGFzcyBXZWJEZXZpY2VNb3Rpb25EYXRhOworCitjbGFzcyBXZWJEZXZp
Y2VNb3Rpb25DbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfldlYkRldmljZU1vdGlvbkNs
aWVudCgpIHt9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihXZWJEZXZpY2VNb3Rp
b25Db250cm9sbGVyKikgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRVcGRhdGluZygpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisgICAgdmlydHVhbCBXZWJEZXZpY2VNb3Rpb25EYXRhKiBjdXJyZW50RGV2aWNl
TW90aW9uKCkgY29uc3QgeyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYkRldmljZU1vdGlv
bkNsaWVudF9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU1v
dGlvbkNvbnRyb2xsZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlTW90aW9u
Q29udHJvbGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2MDJhOTNkYjFlMTBkNDgzNTk4N2M3ZmFjMWRiMzM0
Yjc0Y2NiZjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRl
dmljZU1vdGlvbkNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyX2gKKyNkZWZpbmUgV2ViRGV2aWNlTW90aW9uQ29udHJv
bGxlcl9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBj
bGFzcyBEZXZpY2VNb3Rpb25Db250cm9sbGVyOyB9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJEZXZpY2VNb3Rpb25EYXRhOworCitjbGFzcyBXZWJEZXZpY2VNb3Rpb25Db250cm9s
bGVyIHsKK3B1YmxpYzoKKyAgICBXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyKFdlYkNvcmU6OkRl
dmljZU1vdGlvbkNvbnRyb2xsZXIqKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgZGlkQ2hhbmdlRGV2
aWNlTW90aW9uKGNvbnN0IFdlYkRldmljZU1vdGlvbkRhdGEqKTsKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorICAgIFdlYkNvcmU6OkRldmljZU1vdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xs
ZXIoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkNvcmU6OkRldmljZU1vdGlv
bkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU1vdGlvbkRhdGEuaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRGV2aWNlTW90aW9uRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBkMTMyZTViYWUwZWUz
ZjQxYTIzYWExNjIyZDQxYTI0MmE2NDExOGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkRldmljZU1vdGlvbkRhdGEuaApAQCAtMCwwICsxLDkyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJEZXZpY2VNb3Rpb25EYXRhX2gKKyNkZWZpbmUgV2ViRGV2aWNlTW90aW9u
RGF0YV9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQcml2YXRlUHRy
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRGV2aWNlTW90aW9uRGF0YTsgfQorI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNlIFdURiB7IHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBjbGFzcyBQYXNzUmVmUHRyOyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYkRldmljZU1vdGlvbkRhdGEgeworcHVibGljOgorICAgIFdlYkRldmljZU1vdGlv
bkRhdGEoKSB7IGluaXQoKTsgfQorICAgIFdlYkRldmljZU1vdGlvbkRhdGEoYm9vbCBjYW5Qcm92
aWRlWEFjY2VsZXJhdGlvbiwgZG91YmxlIHhBY2NlbGVyYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGNhblByb3ZpZGVZQWNjZWxlcmF0aW9uLCBkb3VibGUgeUFjY2VsZXJhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZVpBY2NlbGVyYXRpb24s
IGRvdWJsZSB6QWNjZWxlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Q
cm92aWRlWEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB4QWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlk
ZVlBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgeUFjY2VsZXJhdGlvbkluY2x1
ZGluZ0dyYXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVaQWNj
ZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdH
cmF2aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlQWxwaGFSb3Rh
dGlvblJhdGUsIGRvdWJsZSBhbHBoYVJvdGF0aW9uUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgY2FuUHJvdmlkZUJldGFSb3RhdGlvblJhdGUsICBkb3VibGUgYmV0YVJvdGF0aW9u
UmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hUm90YXRp
b25SYXRlLCBkb3VibGUgZ2FtbWFSb3RhdGlvblJhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGNhblByb3ZpZGVJbnRlcnZhbCwgZG91YmxlIGludGVydmFsKQorICAgIHsKKyAgICAg
ICAgaW5pdChjYW5Qcm92aWRlWEFjY2VsZXJhdGlvbiwgeEFjY2VsZXJhdGlvbiwKKyAgICAgICAg
ICAgICBjYW5Qcm92aWRlWUFjY2VsZXJhdGlvbiwgeUFjY2VsZXJhdGlvbiwKKyAgICAgICAgICAg
ICBjYW5Qcm92aWRlWkFjY2VsZXJhdGlvbiwgekFjY2VsZXJhdGlvbiwKKyAgICAgICAgICAgICBj
YW5Qcm92aWRlWEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIHhBY2NlbGVyYXRpb25JbmNs
dWRpbmdHcmF2aXR5LAorICAgICAgICAgICAgIGNhblByb3ZpZGVZQWNjZWxlcmF0aW9uSW5jbHVk
aW5nR3Jhdml0eSwgeUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksCisgICAgICAgICAgICAg
Y2FuUHJvdmlkZVpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCB6QWNjZWxlcmF0aW9uSW5j
bHVkaW5nR3Jhdml0eSwKKyAgICAgICAgICAgICBjYW5Qcm92aWRlQWxwaGFSb3RhdGlvblJhdGUs
IGFscGhhUm90YXRpb25SYXRlLAorICAgICAgICAgICAgIGNhblByb3ZpZGVCZXRhUm90YXRpb25S
YXRlLCAgYmV0YVJvdGF0aW9uUmF0ZSwKKyAgICAgICAgICAgICBjYW5Qcm92aWRlR2FtbWFSb3Rh
dGlvblJhdGUsIGdhbW1hUm90YXRpb25SYXRlLAorICAgICAgICAgICAgIGNhblByb3ZpZGVJbnRl
cnZhbCwgaW50ZXJ2YWwpOworICAgIH0KKworICAgIH5XZWJEZXZpY2VNb3Rpb25EYXRhKCkgeyBy
ZXNldCgpOyB9CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJEZXZpY2VNb3Rp
b25EYXRhKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25EYXRhPiYp
OworICAgIFdlYkRldmljZU1vdGlvbkRhdGEmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YT4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YT4oKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIFdFQktJVF9BUEkgdm9pZCBpbml0KCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIGlu
aXQoYm9vbCBjYW5Qcm92aWRlWEFjY2VsZXJhdGlvbiwgZG91YmxlIHhBY2NlbGVyYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlWUFjY2VsZXJhdGlvbiwgZG91
YmxlIHlBY2NlbGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92
aWRlWkFjY2VsZXJhdGlvbiwgZG91YmxlIHpBY2NlbGVyYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBjYW5Qcm92aWRlWEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRv
dWJsZSB4QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGNhblByb3ZpZGVZQWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgZG91Ymxl
IHlBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgY2FuUHJvdmlkZVpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgekFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBjYW5Qcm92aWRlQWxwaGFSb3RhdGlvblJhdGUsIGRvdWJsZSBhbHBoYVJvdGF0aW9uUmF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVCZXRhUm90YXRpb25SYXRl
LCAgZG91YmxlIGJldGFSb3RhdGlvblJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBjYW5Qcm92aWRlR2FtbWFSb3RhdGlvblJhdGUsIGRvdWJsZSBnYW1tYVJvdGF0aW9uUmF0ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVJbnRlcnZhbCwgZG91Ymxl
IGludGVydmFsKTsKKyAgICBXRUJLSVRfQVBJIHZvaWQgcmVzZXQoKTsKKworICAgIFdlYlByaXZh
dGVQdHI8V2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YT4gbV9kZXZpY2VNb3Rpb25EYXRhOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJEZXZpY2VNb3Rpb25EYXRh
X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggYjgyMWUzODFjM2U4
Y2Y1N2I1ZGIzZTA1MDg3YjQyMzg5ZWE4MDYwYy4uMWVkYWU1Nzc2NGMxMzIzOWU0ZmQ2MjAwODYy
MTQzZDY5YWZiYWU0NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
Q2xpZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAg
LTQ1LDYgKzQ1LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0OworY2xhc3MgV2ViRGV2aWNlTW90aW9uQ2xpZW50OwogY2xhc3MgV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnQ7CiBjbGFzcyBXZWJEcmFnRGF0YTsKIGNsYXNzIFdlYkVsZW1lbnQ7
CkBAIC0zNDgsNiArMzQ5LDggQEAgcHVibGljOgogICAgIC8vIEFjY2VzcyB0aGUgZW1iZWRkZXIg
QVBJIGZvciBkZXZpY2Ugb3JpZW50YXRpb24gc2VydmljZXMuCiAgICAgdmlydHVhbCBXZWJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudCogZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7IHJldHVybiAw
OyB9CiAKKyAgICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3IgZGV2aWNlIG1vdGlvbiBz
ZXJ2aWNlcy4KKyAgICB2aXJ0dWFsIFdlYkRldmljZU1vdGlvbkNsaWVudCogZGV2aWNlTW90aW9u
Q2xpZW50KCkgeyByZXR1cm4gMDsgfQogCiAgICAgLy8gWm9vbSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHkuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9EZXZpY2VNb3Rpb25DbGllbnRQcm94eS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmQ5YTMxZjU4MTU4NmE2YWI0MDc4ZTJiZGFhMTE4NWE0ZGE0NGJjMQotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHkuY3BwCkBAIC0w
LDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGV2aWNl
TW90aW9uQ2xpZW50UHJveHkuaCIKKworI2luY2x1ZGUgIkRldmljZU1vdGlvbkRhdGEuaCIKKyNp
bmNsdWRlICJXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNl
TW90aW9uRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeyBjbGFzcyBEZXZpY2VNb3Rpb25Db250cm9sbGVyOyB9CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6RGV2aWNlTW90aW9uQ2xpZW50UHJveHkoV2Vi
RGV2aWNlTW90aW9uQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7Cit9
CisKK0RldmljZU1vdGlvbkNsaWVudFByb3h5Ojp+RGV2aWNlTW90aW9uQ2xpZW50UHJveHkoKQor
eworfQorCit2b2lkIERldmljZU1vdGlvbkNsaWVudFByb3h5OjpzZXRDb250cm9sbGVyKFdlYkNv
cmU6OkRldmljZU1vdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgaWYgKCFtX2Ns
aWVudCkgLy8gRklYTUU6IEdldCByaWQgb2YgdGhlc2UgbnVsbCBjaGVja3Mgb25jZSBkZXZpY2Ug
bW90aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xp
ZW50LT5zZXRDb250cm9sbGVyKG5ldyBXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyKGNvbnRyb2xs
ZXIpKTsKK30KKwordm9pZCBEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZygp
Cit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5z
dGFydFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgRGV2aWNlTW90aW9uQ2xpZW50UHJveHk6OnN0b3BV
cGRhdGluZygpCit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1f
Y2xpZW50LT5zdG9wVXBkYXRpbmcoKTsKK30KKworV2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YSog
RGV2aWNlTW90aW9uQ2xpZW50UHJveHk6OmN1cnJlbnREZXZpY2VNb3Rpb24oKSBjb25zdAorewor
ICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jbGllbnQt
PmN1cnJlbnREZXZpY2VNb3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBDYWNo
ZSB0aGUgRGV2aWNlTW90aW9uRGF0YSBwb2ludGVyIHNvIGl0cyByZWZlcmVuY2UgY291bnQgZG9l
cyBub3QgZHJvcCB0byB6ZXJvIHVwb24gcmV0dXJuLgorICAgIG1fY3VycmVudERldmljZU1vdGlv
biA9ICptX2NsaWVudC0+Y3VycmVudERldmljZU1vdGlvbigpOworICAgIHJldHVybiBtX2N1cnJl
bnREZXZpY2VNb3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgRGV2aWNlTW90aW9uQ2xpZW50UHJveHk6
OmRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKQoreworICAgIC8vIE91ciBsaWZldGlt
ZSBpcyBib3VuZCB0byB0aGUgV2ViVmlld0ltcGwuCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VNb3Rpb25DbGllbnRQcm94
eS5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VNb3Rpb25DbGllbnRQcm94eS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmIyZjYzOWM3MWI0OTdmZTBhNjhmODU0NjM5M2VlMTkyY2ZmZjk3OTgKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU1vdGlvbkNsaWVudFByb3h5LmgK
QEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRGV2aWNlTW90aW9uQ2xpZW50UHJveHlf
aAorI2RlZmluZSBEZXZpY2VNb3Rpb25DbGllbnRQcm94eV9oCisKKyNpbmNsdWRlICJEZXZpY2VN
b3Rpb25DbGllbnQuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VNb3Rpb25DbGllbnQuaCIKKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIERldmljZU1v
dGlvbkNvbnRyb2xsZXI7CitjbGFzcyBEZXZpY2VNb3Rpb25EYXRhOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgRGV2aWNlTW90aW9uQ2xpZW50UHJveHkgOiBwdWJsaWMgV2ViQ29y
ZTo6RGV2aWNlTW90aW9uQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBEZXZpY2VNb3Rpb25DbGllbnRQ
cm94eShXZWJEZXZpY2VNb3Rpb25DbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5EZXZpY2VNb3Rpb25D
bGllbnRQcm94eSgpOworCisgICAgLy8gRGV2aWNlTW90aW9uQ2xpZW50CisgICAgdmlydHVhbCB2
b2lkIHNldENvbnRyb2xsZXIoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ29udHJvbGxlciopOworICAg
IHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRh
dGluZygpOworICAgIHZpcnR1YWwgV2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YSogY3VycmVudERl
dmljZU1vdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBkZXZpY2VNb3Rpb25Db250cm9s
bGVyRGVzdHJveWVkKCk7CisKK3ByaXZhdGU6CisgICAgV2ViRGV2aWNlTW90aW9uQ2xpZW50KiBt
X2NsaWVudDsKKyAgICBtdXRhYmxlIFJlZlB0cjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25EYXRhPiBt
X2N1cnJlbnREZXZpY2VNb3Rpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIERldmljZU1vdGlvbkNsaWVudFByb3h5X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlci5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1ODU3ODhjMGZj
NmEyMDFiZTY0NTI5MGRiNDlkMDMzNmU3MzRhZmMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlTW90aW9u
Q29udHJvbGxlci5oIgorCisjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIgorI2lu
Y2x1ZGUgIkRldmljZU1vdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VNb3Rpb25EYXRh
LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2Vi
RGV2aWNlTW90aW9uQ29udHJvbGxlcjo6V2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcihXZWJDb3Jl
OjpEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBjb250cm9sbGVyKQorICAgIDogbV9jb250cm9sbGVy
KGNvbnRyb2xsZXIpCit7Cit9CisKK3ZvaWQgV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6ZGlk
Q2hhbmdlRGV2aWNlTW90aW9uKGNvbnN0IFdlYkRldmljZU1vdGlvbkRhdGEqIGRldmljZU1vdGlv
bkRhdGEpCit7CisgICAgUmVmUHRyPFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+IG1vdGlvbihz
dGF0aWNfY2FzdDxQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+ID4oKmRldmlj
ZU1vdGlvbkRhdGEpKTsKKyAgICBtX2NvbnRyb2xsZXItPmRpZENoYW5nZURldmljZU1vdGlvbiht
b3Rpb24uZ2V0KCkpOworfQorCitXZWJDb3JlOjpEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBXZWJE
ZXZpY2VNb3Rpb25Db250cm9sbGVyOjpjb250cm9sbGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9jb250cm9sbGVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlTW90aW9uRGF0YS5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkRldmljZU1vdGlvbkRhdGEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4MTFmNDdlMjNjYTlm
NTUwYjhjYjdjNWQ4OTg2ZjllMWU4YWRjYzEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkRldmljZU1vdGlvbkRhdGEuY3BwCkBAIC0wLDAgKzEsOTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlTW90aW9uRGF0YS5oIgor
CisjaW5jbHVkZSAiRGV2aWNlTW90aW9uRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBXZWJDb3JlOjpEZXZpY2VNb3Rp
b25EYXRhOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJEZXZpY2VNb3Rpb25EYXRh
Ojppbml0KCkKK3sKKyAgICBtX2RldmljZU1vdGlvbkRhdGEgPSBEZXZpY2VNb3Rpb25EYXRhOjpj
cmVhdGUoKTsKK30KKwordm9pZCBXZWJEZXZpY2VNb3Rpb25EYXRhOjppbml0KGJvb2wgY2FuUHJv
dmlkZVhBY2NlbGVyYXRpb24sIGRvdWJsZSB4QWNjZWxlcmF0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZVlBY2NlbGVyYXRpb24sIGRvdWJsZSB5QWNj
ZWxlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlk
ZVpBY2NlbGVyYXRpb24sIGRvdWJsZSB6QWNjZWxlcmF0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZVhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5
LCBkb3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlWUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHksIGRvdWJsZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVaQWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jh
dml0eSwgZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZUFscGhhUm90YXRpb25SYXRlLCBkb3Vi
bGUgYWxwaGFSb3RhdGlvblJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBjYW5Qcm92aWRlQmV0YVJvdGF0aW9uUmF0ZSwgIGRvdWJsZSBiZXRhUm90YXRpb25SYXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZUdhbW1hUm90YXRp
b25SYXRlLCBkb3VibGUgZ2FtbWFSb3RhdGlvblJhdGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBjYW5Qcm92aWRlSW50ZXJ2YWwsIGRvdWJsZSBpbnRlcnZhbCkKK3sKKyAg
ICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uPiBhY2NlbGVyYXRpb247Cisg
ICAgaWYgKGNhblByb3ZpZGVYQWNjZWxlcmF0aW9uIHx8IGNhblByb3ZpZGVZQWNjZWxlcmF0aW9u
IHx8IGNhblByb3ZpZGVaQWNjZWxlcmF0aW9uKSB7CisgICAgICAgIGFjY2VsZXJhdGlvbiA9IERl
dmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbjo6Y3JlYXRlKGNhblByb3ZpZGVYQWNjZWxlcmF0
aW9uLCB4QWNjZWxlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5Qcm92aWRlWUFjY2VsZXJhdGlvbiwgeUFjY2Vs
ZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FuUHJvdmlkZVpBY2NlbGVyYXRpb24sIHpBY2NlbGVyYXRpb24pOwor
ICAgIH0KKworICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb24+IGFjY2Vs
ZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHk7CisgICAgaWYgKGNhblByb3ZpZGVYQWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSB8fCBjYW5Qcm92aWRlWUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHkgfHwgY2FuUHJvdmlkZVpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KSB7CisgICAgICAg
IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkgPSBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVy
YXRpb246OmNyZWF0ZShjYW5Qcm92aWRlWEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIHhB
Y2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuUHJv
dmlkZVlBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCB5QWNjZWxlcmF0aW9uSW5jbHVkaW5n
R3Jhdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhblByb3ZpZGVaQWNjZWxlcmF0aW9uSW5j
bHVkaW5nR3Jhdml0eSwgekFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkpOworICAgIH0KKwor
ICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU+IHJvdGF0aW9uUmF0ZTsK
KyAgICBpZiAoY2FuUHJvdmlkZUFscGhhUm90YXRpb25SYXRlIHx8IGNhblByb3ZpZGVCZXRhUm90
YXRpb25SYXRlIHx8IGNhblByb3ZpZGVHYW1tYVJvdGF0aW9uUmF0ZSkgeworICAgICAgICByb3Rh
dGlvblJhdGUgPSBEZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU6OmNyZWF0ZShjYW5Qcm92
aWRlQWxwaGFSb3RhdGlvblJhdGUsIGFscGhhUm90YXRpb25SYXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5Qcm92aWRl
QmV0YVJvdGF0aW9uUmF0ZSwgYmV0YVJvdGF0aW9uUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuUHJvdmlkZUdhbW1h
Um90YXRpb25SYXRlLCBnYW1tYVJvdGF0aW9uUmF0ZSk7CisgICAgfQorCisgICAgbV9kZXZpY2VN
b3Rpb25EYXRhID0gRGV2aWNlTW90aW9uRGF0YTo6Y3JlYXRlKGFjY2VsZXJhdGlvbi5nZXQoKSwg
YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eS5nZXQoKSwgcm90YXRpb25SYXRlLmdldCgpLCBj
YW5Qcm92aWRlSW50ZXJ2YWwsIGludGVydmFsKTsKK30KKwordm9pZCBXZWJEZXZpY2VNb3Rpb25E
YXRhOjpyZXNldCgpCit7CisgICAgbV9kZXZpY2VNb3Rpb25EYXRhLnJlc2V0KCk7Cit9CisKK1dl
YkRldmljZU1vdGlvbkRhdGE6OldlYkRldmljZU1vdGlvbkRhdGEoY29uc3QgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpEZXZpY2VNb3Rpb25EYXRhPiYgZGV2aWNlTW90aW9uRGF0YSkKKyAgICA6IG1fZGV2
aWNlTW90aW9uRGF0YShkZXZpY2VNb3Rpb25EYXRhKQoreworfQorCitXZWJEZXZpY2VNb3Rpb25E
YXRhJiBXZWJEZXZpY2VNb3Rpb25EYXRhOjpvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+JiBkZXZpY2VNb3Rpb25EYXRhKQoreworICAgIG1f
ZGV2aWNlTW90aW9uRGF0YSA9IGRldmljZU1vdGlvbkRhdGE7CisgICAgcmV0dXJuICp0aGlzOwor
fQorCitXZWJEZXZpY2VNb3Rpb25EYXRhOjpvcGVyYXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OkRl
dmljZU1vdGlvbkRhdGE+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9kZXZpY2VNb3Rpb25EYXRh
LmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKaW5kZXggNTgyMGFhYTA5NzU4Y2ZmZGJhYjExZjU0NGRiY2Y2ZGU0NDk5MWQ5NC4u
MDM1ZDc4YzcxMjJmM2JiNTI5MDA1OWZjNDFkMzk5Mzc4ZDVmZjgxMSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVNl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkN1cnNv
ci5oIgorI2luY2x1ZGUgIkRldmljZU1vdGlvbkNsaWVudFByb3h5LmgiCiAjaW5jbHVkZSAiRGV2
aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTE4Niw5ICsxODcsNiBAQCBzdGF0aWMgY29uc3Qg
UG9wdXBDb250YWluZXJTZXR0aW5ncyBhdXRvRmlsbFBvcHVwU2V0dGluZ3MgPSB7CiAKIFdlYlZp
ZXcqIFdlYlZpZXc6OmNyZWF0ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdl
bnRDbGllbnQqIGRldlRvb2xzQ2xpZW50KQogewotICAgIC8vIEtlZXAgcnVudGltZSBmbGFnIGZv
ciBkZXZpY2UgbW90aW9uIHR1cm5lZCBvZmYgdW50aWwgaXQncyBpbXBsZW1lbnRlZC4KLSAgICBX
ZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZURldmljZU1vdGlvbihmYWxzZSk7Ci0KICAgICAvLyBQ
YXNzIHRoZSBXZWJWaWV3SW1wbCdzIHNlbGYtcmVmZXJlbmNlIHRvIHRoZSBjYWxsZXIuCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3SW1wbChjbGllbnQsIGRldlRvb2xzQ2xpZW50KSku
bGVha1JlZigpOwogfQpAQCAtMjc4LDYgKzI3Niw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1w
bChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xz
CiAgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KGNsaWVudCkKICNlbmRpZgogICAgICwgbV9kZXZp
Y2VPcmllbnRhdGlvbkNsaWVudFByb3h5KG5ldyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6IDApKQorICAgICwg
bV9kZXZpY2VNb3Rpb25DbGllbnRQcm94eShuZXcgRGV2aWNlTW90aW9uQ2xpZW50UHJveHkoY2xp
ZW50ID8gY2xpZW50LT5kZXZpY2VNb3Rpb25DbGllbnQoKSA6IDApKQogewogICAgIC8vIFdlYktp
dC93aW4vV2ViVmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0IHRoZXkgY2FsbCB0
aGUKICAgICAvLyBLSlMgc3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBtZXRob2QuIFdlIG5l
ZWQgdG8gaGF2ZSB0aHJlYWRpbmcKQEAgLTMwMSw2ICszMDAsNyBAQCBXZWJWaWV3SW1wbDo6V2Vi
Vmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBk
ZXZUb29scwogICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0gJm1fc3BlZWNoSW5w
dXRDbGllbnQ7CiAjZW5kaWYKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVu
dCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5nZXQoKTsKKyAgICBwYWdlQ2xpZW50
cy5kZXZpY2VNb3Rpb25DbGllbnQgPSBtX2RldmljZU1vdGlvbkNsaWVudFByb3h5LmdldCgpOwog
CiAgICAgbV9wYWdlLnNldChuZXcgUGFnZShwYWdlQ2xpZW50cykpOwogCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKaW5kZXggZTUxZGY0ZDk4ZTNkOGUyYjYxMTI1NTAzOGYwOGM2MWZlNDJjNzg3
OC4uYjY0ODE1MmRhY2Q1MzY2ZmFiNjE5MjkyM2FlMTc3OWE0OWViOWVkYSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaApAQCAtNzIsNiArNzIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNs
YXNzIEF1dG9jb21wbGV0ZVBvcHVwTWVudUNsaWVudDsKIGNsYXNzIEF1dG9GaWxsUG9wdXBNZW51
Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOworY2xhc3MgRGV2aWNlTW90aW9u
Q2xpZW50UHJveHk7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogY2xhc3Mg
RHJhZ1Njcm9sbFRpbWVyOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKQEAgLTU0NCw2
ICs1NDUsNyBAQCBwcml2YXRlOgogICAgIC8vIGVhcmx5LiBUaGlzIG1lbWJlciBob2xkcyBvbiB0
byB0aGUgR0MzRCBpbiB0aGlzIGNhc2UuCiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEPiBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0Q7CiAgICAgT3duUHRy
PERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk+IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQ
cm94eTsKKyAgICBPd25QdHI8RGV2aWNlTW90aW9uQ2xpZW50UHJveHk+IG1fZGV2aWNlTW90aW9u
Q2xpZW50UHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69908</attachid>
            <date>2010-10-06 02:45:07 -0700</date>
            <delta_ts>2010-10-07 07:34:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47078-20101006104505.patch</filename>
            <type>text/plain</type>
            <size>35357</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3YTZmY2JkMjlhNzAyMGM2OTE1MTgzN2ZhNWQxNjhlOTYzZTMwYmIyLi45YzNkZDc0
OTQwNmMzMDEzMjY1ZjhhYzQ4OTA4OTlhM2MxNGY1NjcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMDYgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIERldmlj
ZU1vdGlvbiBwbHVtYmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDcwNzgKKworICAgICAgICBTaW5jZSBEZXZpY2VNb3Rpb24gaXMgbm8gbG9uZ2Vy
IGRpc2FibGVkIGJ5IHRlc3Rfc2hlbGwgYW5kIERSVCwgdGhlc2UKKyAgICAgICAgYmFzZWxpbmVz
IG5lZWQgYW4gdXBkYXRlLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRp
ZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0xMC0wNiAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdGVzdCBl
eHBlY3RhdGlvbiB1cGRhdGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1saW51eC9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVu
dGF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhw
ZWN0ZWQudHh0CmluZGV4IDMxMzc3MmI1MThjN2UzNTI4MjYwYjM2ZWEwYTZlOGQzOWE1NTI3Njgu
LmE4NjRlMTg3OTZhYjcyMjk0NjVjZTAxZjVkMmRjYjM4MmE1Nzk1ODIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVy
dGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogVGhp
cyB0ZXN0IGR1bXBzIGFsbCBvZiB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSByZWFjaGFibGUgZnJv
bSB0aGUgd2luZG93LkRldmljZU1vdGlvbkV2ZW50IHdpbmRvdy5vbmRldmljZW1vdGlvbiwgd2lu
ZG93LkRldmljZU9yaWVudGF0aW9uRXZlbnQgYW5kIHdpbmRvdy5vbmRldmljZW9yaWVudGF0aW9u
IG9iamVjdHMsIGFsb25nIHdpdGggdGhlaXIgdHlwZXMuIFRoZXNlIHByb3BlcnRpZXMgYXJlIGN1
cnJlbnRseSBndWFyZGVkIGJ5IEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04uCiAKLXdpbmRvdy5E
ZXZpY2VNb3Rpb25FdmVudCBbdW5kZWZpbmVkXQotd2luZG93Lm9uZGV2aWNlbW90aW9uIFt1bmRl
ZmluZWRdCit3aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgW2Z1bmN0aW9uXQord2luZG93Lm9uZGV2
aWNlbW90aW9uIFtudWxsXQogd2luZG93LkRldmljZU9yaWVudGF0aW9uRXZlbnQgW2Z1bmN0aW9u
XQogd2luZG93Lm9uZGV2aWNlb3JpZW50YXRpb24gW251bGxdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0
aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1tYWMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1v
cmllbnRhdGlvbi1leHBlY3RlZC50eHQKaW5kZXggMzEzNzcyYjUxOGM3ZTM1MjgyNjBiMzZlYTBh
NmU4ZDM5YTU1Mjc2OC4uYTg2NGUxODc5NmFiNzIyOTQ2NWNlMDFmNWQyZGNiMzgyYTU3OTU4MiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsx
LDYgQEAKIFRoaXMgdGVzdCBkdW1wcyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgcmVh
Y2hhYmxlIGZyb20gdGhlIHdpbmRvdy5EZXZpY2VNb3Rpb25FdmVudCB3aW5kb3cub25kZXZpY2Vt
b3Rpb24sIHdpbmRvdy5EZXZpY2VPcmllbnRhdGlvbkV2ZW50IGFuZCB3aW5kb3cub25kZXZpY2Vv
cmllbnRhdGlvbiBvYmplY3RzLCBhbG9uZyB3aXRoIHRoZWlyIHR5cGVzLiBUaGVzZSBwcm9wZXJ0
aWVzIGFyZSBjdXJyZW50bHkgZ3VhcmRlZCBieSBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OLgog
Ci13aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgW3VuZGVmaW5lZF0KLXdpbmRvdy5vbmRldmljZW1v
dGlvbiBbdW5kZWZpbmVkXQord2luZG93LkRldmljZU1vdGlvbkV2ZW50IFtmdW5jdGlvbl0KK3dp
bmRvdy5vbmRldmljZW1vdGlvbiBbbnVsbF0KIHdpbmRvdy5EZXZpY2VPcmllbnRhdGlvbkV2ZW50
IFtmdW5jdGlvbl0KIHdpbmRvdy5vbmRldmljZW9yaWVudGF0aW9uIFtudWxsXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDMxMzc3MmI1MThjN2UzNTI4
MjYwYjM2ZWEwYTZlOGQzOWE1NTI3NjguLmE4NjRlMTg3OTZhYjcyMjk0NjVjZTAxZjVkMmRjYjM4
MmE1Nzk1ODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZmFzdC9kb20v
V2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQK
QEAgLTEsNiArMSw2IEBACiBUaGlzIHRlc3QgZHVtcHMgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHRo
YXQgYXJlIHJlYWNoYWJsZSBmcm9tIHRoZSB3aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgd2luZG93
Lm9uZGV2aWNlbW90aW9uLCB3aW5kb3cuRGV2aWNlT3JpZW50YXRpb25FdmVudCBhbmQgd2luZG93
Lm9uZGV2aWNlb3JpZW50YXRpb24gb2JqZWN0cywgYWxvbmcgd2l0aCB0aGVpciB0eXBlcy4gVGhl
c2UgcHJvcGVydGllcyBhcmUgY3VycmVudGx5IGd1YXJkZWQgYnkgRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTi4KIAotd2luZG93LkRldmljZU1vdGlvbkV2ZW50IFt1bmRlZmluZWRdCi13aW5kb3cu
b25kZXZpY2Vtb3Rpb24gW3VuZGVmaW5lZF0KK3dpbmRvdy5EZXZpY2VNb3Rpb25FdmVudCBbZnVu
Y3Rpb25dCit3aW5kb3cub25kZXZpY2Vtb3Rpb24gW251bGxdCiB3aW5kb3cuRGV2aWNlT3JpZW50
YXRpb25FdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cub25kZXZpY2VvcmllbnRhdGlvbiBbbnVsbF0K
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGQ4ODRhYjYwYWNkN2Y3YjdmYjcwYTI4MTJhZjA5MGJkNTIzMmJmY2Uu
LmNlM2E2Y2ZjNjIzNDIzNmZmMDA5ZTA5NGU5OTI5MWVjNmQzZWFjNWQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU0IEBACisyMDEwLTEwLTA2ICBIYW5zIFdlbm5ib3JnICA8aGFuc0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0Nocm9taXVtXSBEZXZpY2VNb3Rpb24gcGx1bWJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDc4CisKKyAgICAgICAgUGx1bWJpbmcgZm9yIERl
dmljZU1vdGlvbi4gVGhlIHBhdHRlcm4gaXMgdGhlIHNhbWUgYXMgZm9yCisgICAgICAgIERldmlj
ZU9yaWVudGF0aW9uOgorCisgICAgICAgIERldmljZU1vdGlvblByb3h5IGltcGxlbWVudHMgV2Vi
Q29yZTo6RGV2aWNlTW90aW9uQ2xpZW50LgorICAgICAgICBUaGlzIGlzIHBhc3NlZCBpbnRvIHRo
ZSBQYWdlLCBhbmQgcHJveGllcyBmdW5jdGlvbiBjYWxscyB0bworICAgICAgICBhIFdlYkRldmlj
ZU1vdGlvbkNsaWVudCwgd2hpY2ggY2FuIHRoZW4gYmUgaW1wbGVtZW50ZWQgQ2hyb21pdW0gc2lk
ZSwKKyAgICAgICAgYW5kIGlzIHByb3ZpZGVkIGJ5IHRoZSBXZWJWaWV3Q2xpZW50LgorICAgICAg
ICBXcmFwcGVycyBhcmUgcHJvdmlkZWQgZm9yIGFsbCBjbGFzc2VzIHRoYXQgbmVlZCBpdC4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFsc28gcmVtb3ZlcyB0aGUgaGFyZCBkaXNhYmxlIG9mIHRoZSBy
dW50aW1lIGZsYWcgZm9yCisgICAgICAgIERldmljZU1vdGlvbi4gVGhlIGZlYXR1cmUgaXMgc3Rp
bGwgZGlzYWJsZWQgaW4gQ2hyb21pdW0sIGJ1dCBlbmFibGVkCisgICAgICAgIG90aGVyd2hlcmUs
IGUuZy4gaW4gdGVzdF9zaGVsbCBhbmQgRFJULgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAg
ICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlTW90aW9uQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJEZXZpY2VNb3Rpb25DbGllbnQ6On5XZWJEZXZpY2VNb3Rpb25DbGllbnQpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIHB1YmxpYy9XZWJEZXZpY2VNb3Rpb25EYXRhLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZXZpY2VNb3Rpb25EYXRhOjpXZWJEZXZpY2VNb3Rpb25EYXRhKToKKyAgICAgICAg
KiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50
OjpkZXZpY2VNb3Rpb25DbGllbnQpOgorICAgICAgICAqIHNyYy9EZXZpY2VNb3Rpb25DbGllbnRQ
cm94eS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94
eTo6RGV2aWNlTW90aW9uQ2xpZW50UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VNb3Rp
b25DbGllbnRQcm94eTo6fkRldmljZU1vdGlvbkNsaWVudFByb3h5KToKKyAgICAgICAgKFdlYktp
dDo6RGV2aWNlTW90aW9uQ2xpZW50UHJveHk6OnNldENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
S2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OkRldmljZU1vdGlvbkNsaWVudFByb3h5OjpzdG9wVXBkYXRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6Y3VycmVudERldmljZU1vdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OkRldmljZU1vdGlvbkNsaWVudFByb3h5OjpkZXZpY2VNb3Rpb25Db250
cm9sbGVyRGVzdHJveWVkKToKKyAgICAgICAgKiBzcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHku
aDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6V2ViRGV2
aWNlTW90aW9uQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU1vdGlvbkNv
bnRyb2xsZXI6OmRpZENoYW5nZURldmljZU1vdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkRl
dmljZU1vdGlvbkNvbnRyb2xsZXI6OmNvbnRyb2xsZXIpOgorICAgICAgICAqIHNyYy9XZWJEZXZp
Y2VNb3Rpb25EYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU1vdGlv
bkRhdGE6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU1vdGlvbkRhdGE6Oldl
YkRldmljZU1vdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VNb3Rpb25EYXRh
OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VNb3Rpb25EYXRhOjpvcGVy
YXRvciBQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+KToKKyAgICAgICAgKiBz
cmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTA5LTI5ICBBbHBoYSBMYW0gIDxoY2xhbUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CmluZGV4IDRjYzk1MWI2YjNhMzFlYTkxMWQyNjgxZmUzZWYwOWNmMzZjNmY4ZTguLmU3Njg0NDY4
OGE0YjUzYWUzODVhZjBlNzNjY2MzOGI0NTI1ZTdhMmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xMjcs
NiArMTI3LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDU3RyaW5nLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViQ3Vyc29ySW5mby5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkRldmljZU1vdGlvbkRhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJET01FdmVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRPTUV2ZW50
TGlzdGVuZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJET01Nb3VzZUV2ZW50Lmgn
LApAQCAtMTQwLDYgKzE0MSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZUb29s
c0FnZW50Q2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2VG9vbHNGcm9u
dGVuZC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmRDbGll
bnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25DbGllbnQuaCcs
CiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRhdGlvbi5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgnLApAQCAt
MzExLDYgKzMxMyw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50SW1wbC5o
JywKICAgICAgICAgICAgICAgICAnc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5oJywKKyAgICAgICAgICAgICAg
ICAnc3JjL0RldmljZU1vdGlvbkNsaWVudFByb3h5LmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9EZXZpY2VNb3Rpb25DbGllbnRQcm94eS5oJywKICAgICAgICAgICAgICAgICAnc3JjL0Rldmlj
ZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL0Rldmlj
ZU9yaWVudGF0aW9uQ2xpZW50UHJveHkuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9ET01VdGls
aXRpZXNQcml2YXRlLmNwcCcsCkBAIC00MTAsNiArNDE0LDggQEAKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2
VG9vbHNGcm9udGVuZEltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldlRvb2xz
RnJvbnRlbmRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlTW90aW9uQ29u
dHJvbGxlci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlTW90aW9uRGF0YS5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb24uY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmNwcCcs
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU1vdGlvbkNsaWVu
dC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25DbGllbnQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45MGE1NzgzNjM0NzIzMDRkMTcxNmJkMmU3Njc4YmU2MGRiMjg2NWVhCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25DbGllbnQu
aApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJEZXZpY2VNb3Rpb25DbGllbnRf
aAorI2RlZmluZSBXZWJEZXZpY2VNb3Rpb25DbGllbnRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9u
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEZXZpY2VNb3Rpb25Db250cm9s
bGVyOworY2xhc3MgV2ViRGV2aWNlTW90aW9uRGF0YTsKKworY2xhc3MgV2ViRGV2aWNlTW90aW9u
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJEZXZpY2VNb3Rpb25DbGllbnQoKSB7
fQorCisgICAgdmlydHVhbCB2b2lkIHNldENvbnRyb2xsZXIoV2ViRGV2aWNlTW90aW9uQ29udHJv
bGxlciopIHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lk
IHN0YXJ0VXBkYXRpbmcoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgIHZpcnR1YWwgV2ViRGV2aWNlTW90aW9uRGF0YSogY3VycmVudERldmljZU1vdGlvbigp
IGNvbnN0CisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gV2ViRGV2aWNlTW90aW9uQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlci5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODYwMmE5M2RiMWUx
MGQ0ODM1OTg3YzdmYWMxZGIzMzRiNzRjY2JmNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlci5oCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFdlYkRldmljZU1vdGlvbkNvbnRyb2xsZXJfaAorI2RlZmluZSBX
ZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERldmljZU1vdGlvbkNvbnRyb2xsZXI7IH0KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkRldmljZU1vdGlvbkRhdGE7CisKK2NsYXNzIFdl
YkRldmljZU1vdGlvbkNvbnRyb2xsZXIgeworcHVibGljOgorICAgIFdlYkRldmljZU1vdGlvbkNv
bnRyb2xsZXIoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ29udHJvbGxlciopOworICAgIFdFQktJVF9B
UEkgdm9pZCBkaWRDaGFuZ2VEZXZpY2VNb3Rpb24oY29uc3QgV2ViRGV2aWNlTW90aW9uRGF0YSop
OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViQ29yZTo6RGV2aWNlTW90aW9u
Q29udHJvbGxlciogY29udHJvbGxlcigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAg
V2ViQ29yZTo6RGV2aWNlTW90aW9uQ29udHJvbGxlciogbV9jb250cm9sbGVyOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVy
X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlTW90aW9uRGF0
YS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25EYXRhLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGQxMzJlNWJhZTBlZTNmNDFhMjNhYTE2MjJkNDFhMjQyYTY0MTE4ZQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlTW90aW9uRGF0YS5oCkBA
IC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkRldmljZU1vdGlvbkRhdGFfaAorI2Rl
ZmluZSBXZWJEZXZpY2VNb3Rpb25EYXRhX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2lu
Y2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBEZXZp
Y2VNb3Rpb25EYXRhOyB9CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCituYW1lc3BhY2UgV1RG
IHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFBhc3NSZWZQdHI7IH0KKyNlbmRpZgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlTW90aW9uRGF0YSB7CitwdWJsaWM6
CisgICAgV2ViRGV2aWNlTW90aW9uRGF0YSgpIHsgaW5pdCgpOyB9CisgICAgV2ViRGV2aWNlTW90
aW9uRGF0YShib29sIGNhblByb3ZpZGVYQWNjZWxlcmF0aW9uLCBkb3VibGUgeEFjY2VsZXJhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZVlBY2NlbGVyYXRpb24s
IGRvdWJsZSB5QWNjZWxlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Q
cm92aWRlWkFjY2VsZXJhdGlvbiwgZG91YmxlIHpBY2NlbGVyYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGNhblByb3ZpZGVYQWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwg
ZG91YmxlIHhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBjYW5Qcm92aWRlWUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJs
ZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgY2FuUHJvdmlkZVpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgekFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGNhblByb3ZpZGVBbHBoYVJvdGF0aW9uUmF0ZSwgZG91YmxlIGFscGhhUm90YXRpb25SYXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlQmV0YVJvdGF0aW9uUmF0ZSwg
IGRvdWJsZSBiZXRhUm90YXRpb25SYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBj
YW5Qcm92aWRlR2FtbWFSb3RhdGlvblJhdGUsIGRvdWJsZSBnYW1tYVJvdGF0aW9uUmF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZUludGVydmFsLCBkb3VibGUgaW50
ZXJ2YWwpCisgICAgeworICAgICAgICBpbml0KGNhblByb3ZpZGVYQWNjZWxlcmF0aW9uLCB4QWNj
ZWxlcmF0aW9uLAorICAgICAgICAgICAgIGNhblByb3ZpZGVZQWNjZWxlcmF0aW9uLCB5QWNjZWxl
cmF0aW9uLAorICAgICAgICAgICAgIGNhblByb3ZpZGVaQWNjZWxlcmF0aW9uLCB6QWNjZWxlcmF0
aW9uLAorICAgICAgICAgICAgIGNhblByb3ZpZGVYQWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0
eSwgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksCisgICAgICAgICAgICAgY2FuUHJvdmlk
ZVlBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jh
dml0eSwKKyAgICAgICAgICAgICBjYW5Qcm92aWRlWkFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHksIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAorICAgICAgICAgICAgIGNhblByb3Zp
ZGVBbHBoYVJvdGF0aW9uUmF0ZSwgYWxwaGFSb3RhdGlvblJhdGUsCisgICAgICAgICAgICAgY2Fu
UHJvdmlkZUJldGFSb3RhdGlvblJhdGUsICBiZXRhUm90YXRpb25SYXRlLAorICAgICAgICAgICAg
IGNhblByb3ZpZGVHYW1tYVJvdGF0aW9uUmF0ZSwgZ2FtbWFSb3RhdGlvblJhdGUsCisgICAgICAg
ICAgICAgY2FuUHJvdmlkZUludGVydmFsLCBpbnRlcnZhbCk7CisgICAgfQorCisgICAgfldlYkRl
dmljZU1vdGlvbkRhdGEoKSB7IHJlc2V0KCk7IH0KKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYkRldmljZU1vdGlvbkRhdGEoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OkRldmljZU1vdGlvbkRhdGE+Jik7CisgICAgV2ViRGV2aWNlTW90aW9uRGF0YSYgb3BlcmF0b3I9
KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25EYXRhPiYpOworICAg
IG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25EYXRhPigpIGNv
bnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgV0VCS0lUX0FQSSB2b2lkIGluaXQoKTsKKyAg
ICBXRUJLSVRfQVBJIHZvaWQgaW5pdChib29sIGNhblByb3ZpZGVYQWNjZWxlcmF0aW9uLCBkb3Vi
bGUgeEFjY2VsZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhblByb3Zp
ZGVZQWNjZWxlcmF0aW9uLCBkb3VibGUgeUFjY2VsZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGNhblByb3ZpZGVaQWNjZWxlcmF0aW9uLCBkb3VibGUgekFjY2VsZXJhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVYQWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJvdmlkZVlBY2NlbGVyYXRpb25JbmNs
dWRpbmdHcmF2aXR5LCBkb3VibGUgeUFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlWkFjY2VsZXJhdGlvbkluY2x1ZGlu
Z0dyYXZpdHksIGRvdWJsZSB6QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVBbHBoYVJvdGF0aW9uUmF0ZSwgZG91Ymxl
IGFscGhhUm90YXRpb25SYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJv
dmlkZUJldGFSb3RhdGlvblJhdGUsICBkb3VibGUgYmV0YVJvdGF0aW9uUmF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVHYW1tYVJvdGF0aW9uUmF0ZSwgZG91Ymxl
IGdhbW1hUm90YXRpb25SYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuUHJv
dmlkZUludGVydmFsLCBkb3VibGUgaW50ZXJ2YWwpOworICAgIFdFQktJVF9BUEkgdm9pZCByZXNl
dCgpOworCisgICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25EYXRhPiBtX2Rl
dmljZU1vdGlvbkRhdGE7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFdlYkRldmljZU1vdGlvbkRhdGFfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aAppbmRleCBiODIxZTM4MWMzZThjZjU3YjVkYjNlMDUwODdiNDIzODllYTgwNjBjLi4xZWRhZTU3
NzY0YzEzMjM5ZTRmZDYyMDA4NjIxNDNkNjlhZmJhZTQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXdDbGllbnQuaApAQCAtNDUsNiArNDUsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7CitjbGFzcyBXZWJEZXZpY2VNb3Rpb25DbGll
bnQ7CiBjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudDsKIGNsYXNzIFdlYkRyYWdEYXRh
OwogY2xhc3MgV2ViRWxlbWVudDsKQEAgLTM0OCw2ICszNDksOCBAQCBwdWJsaWM6CiAgICAgLy8g
QWNjZXNzIHRoZSBlbWJlZGRlciBBUEkgZm9yIGRldmljZSBvcmllbnRhdGlvbiBzZXJ2aWNlcy4K
ICAgICB2aXJ0dWFsIFdlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50KiBkZXZpY2VPcmllbnRhdGlv
bkNsaWVudCgpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIEFjY2VzcyB0aGUgZW1iZWRkZXIgQVBJ
IGZvciBkZXZpY2UgbW90aW9uIHNlcnZpY2VzLgorICAgIHZpcnR1YWwgV2ViRGV2aWNlTW90aW9u
Q2xpZW50KiBkZXZpY2VNb3Rpb25DbGllbnQoKSB7IHJldHVybiAwOyB9CiAKICAgICAvLyBab29t
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VNb3Rpb25D
bGllbnRQcm94eS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU1vdGlvbkNsaWVudFBy
b3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZDlhMzFmNTgxNTg2YTZhYjQwNzhlMmJkYWExMTg1YTRkYTQ0
YmMxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9EZXZpY2VNb3Rpb25D
bGllbnRQcm94eS5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25DbGllbnRQcm94eS5oIgorCisjaW5jbHVkZSAiRGV2
aWNlTW90aW9uRGF0YS5oIgorI2luY2x1ZGUgIldlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJXZWJEZXZpY2VNb3Rpb25EYXRhLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERldmljZU1vdGlvbkNvbnRyb2xsZXI7IH0K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK0RldmljZU1vdGlvbkNsaWVudFByb3h5OjpEZXZpY2VN
b3Rpb25DbGllbnRQcm94eShXZWJEZXZpY2VNb3Rpb25DbGllbnQqIGNsaWVudCkKKyAgICA6IG1f
Y2xpZW50KGNsaWVudCkKK3sKK30KKworRGV2aWNlTW90aW9uQ2xpZW50UHJveHk6On5EZXZpY2VN
b3Rpb25DbGllbnRQcm94eSgpCit7Cit9CisKK3ZvaWQgRGV2aWNlTW90aW9uQ2xpZW50UHJveHk6
OnNldENvbnRyb2xsZXIoV2ViQ29yZTo6RGV2aWNlTW90aW9uQ29udHJvbGxlciogY29udHJvbGxl
cikKK3sKKyAgICBpZiAoIW1fY2xpZW50KSAvLyBGSVhNRTogR2V0IHJpZCBvZiB0aGVzZSBudWxs
IGNoZWNrcyBvbmNlIGRldmljZSBtb3Rpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LgorICAgICAg
ICByZXR1cm47CisgICAgbV9jbGllbnQtPnNldENvbnRyb2xsZXIobmV3IFdlYkRldmljZU1vdGlv
bkNvbnRyb2xsZXIoY29udHJvbGxlcikpOworfQorCit2b2lkIERldmljZU1vdGlvbkNsaWVudFBy
b3h5OjpzdGFydFVwZGF0aW5nKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAgICAgICByZXR1
cm47CisgICAgbV9jbGllbnQtPnN0YXJ0VXBkYXRpbmcoKTsKK30KKwordm9pZCBEZXZpY2VNb3Rp
b25DbGllbnRQcm94eTo6c3RvcFVwZGF0aW5nKCkKK3sKKyAgICBpZiAoIW1fY2xpZW50KQorICAg
ICAgICByZXR1cm47CisgICAgbV9jbGllbnQtPnN0b3BVcGRhdGluZygpOworfQorCitXZWJDb3Jl
OjpEZXZpY2VNb3Rpb25EYXRhKiBEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6Y3VycmVudERldmlj
ZU1vdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgaWYgKCFtX2NsaWVudC0+Y3VycmVudERldmljZU1vdGlvbigpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIC8vIENhY2hlIHRoZSBEZXZpY2VNb3Rpb25EYXRhIHBvaW50ZXIgc28gaXRz
IHJlZmVyZW5jZSBjb3VudCBkb2VzIG5vdCBkcm9wIHRvIHplcm8gdXBvbiByZXR1cm4uCisgICAg
bV9jdXJyZW50RGV2aWNlTW90aW9uID0gKm1fY2xpZW50LT5jdXJyZW50RGV2aWNlTW90aW9uKCk7
CisgICAgcmV0dXJuIG1fY3VycmVudERldmljZU1vdGlvbi5nZXQoKTsKK30KKwordm9pZCBEZXZp
Y2VNb3Rpb25DbGllbnRQcm94eTo6ZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpCit7
CisgICAgLy8gT3VyIGxpZmV0aW1lIGlzIGJvdW5kIHRvIHRoZSBXZWJWaWV3SW1wbC4KK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Rl
dmljZU1vdGlvbkNsaWVudFByb3h5LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0RldmljZU1vdGlv
bkNsaWVudFByb3h5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJmNjM5YzcxYjQ5N2ZlMGE2OGY4NTQ2MzkzZWUx
OTJjZmZmOTc5OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2aWNl
TW90aW9uQ2xpZW50UHJveHkuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBEZXZp
Y2VNb3Rpb25DbGllbnRQcm94eV9oCisjZGVmaW5lIERldmljZU1vdGlvbkNsaWVudFByb3h5X2gK
KworI2luY2x1ZGUgIkRldmljZU1vdGlvbkNsaWVudC5oIgorI2luY2x1ZGUgIldlYkRldmljZU1v
dGlvbkNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgRGV2aWNlTW90aW9uQ29udHJvbGxlcjsKK2NsYXNzIERldmljZU1vdGlvbkRh
dGE7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBEZXZpY2VNb3Rpb25DbGllbnRQ
cm94eSA6IHB1YmxpYyBXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnQgeworcHVibGljOgorICAg
IERldmljZU1vdGlvbkNsaWVudFByb3h5KFdlYkRldmljZU1vdGlvbkNsaWVudCopOworICAgIHZp
cnR1YWwgfkRldmljZU1vdGlvbkNsaWVudFByb3h5KCk7CisKKyAgICAvLyBEZXZpY2VNb3Rpb25D
bGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VNb3Rp
b25Db250cm9sbGVyKik7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0VXBkYXRpbmcoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpEZXZpY2VN
b3Rpb25EYXRhKiBjdXJyZW50RGV2aWNlTW90aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IGRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKTsKKworcHJpdmF0ZToKKyAgICBXZWJE
ZXZpY2VNb3Rpb25DbGllbnQqIG1fY2xpZW50OworICAgIG11dGFibGUgUmVmUHRyPFdlYkNvcmU6
OkRldmljZU1vdGlvbkRhdGE+IG1fY3VycmVudERldmljZU1vdGlvbjsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRGV2aWNlTW90aW9uQ2xpZW50UHJveHlfaApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlci5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjIzODhiM2UzZjcxZmZjOTNlNzU5YjUxYTE3MDcwYzFhNTI5Y2E2NAotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlTW90aW9uQ29udHJvbGxl
ci5jcHAKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJEZXZpY2VNb3Rp
b25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiRGV2aWNlTW90aW9uRGF0YS5oIgorI2luY2x1ZGUg
IldlYkRldmljZU1vdGlvbkRhdGEuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6V2ViRGV2aWNl
TW90aW9uQ29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBjb250cm9s
bGVyKQorICAgIDogbV9jb250cm9sbGVyKGNvbnRyb2xsZXIpCit7Cit9CisKK3ZvaWQgV2ViRGV2
aWNlTW90aW9uQ29udHJvbGxlcjo6ZGlkQ2hhbmdlRGV2aWNlTW90aW9uKGNvbnN0IFdlYkRldmlj
ZU1vdGlvbkRhdGEqIGRldmljZU1vdGlvbkRhdGEpCit7CisgICAgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpEZXZpY2VNb3Rpb25EYXRhPiBtb3Rpb24oKmRldmljZU1vdGlvbkRhdGEpOworICAgIG1fY29u
dHJvbGxlci0+ZGlkQ2hhbmdlRGV2aWNlTW90aW9uKG1vdGlvbi5nZXQoKSk7Cit9CisKK1dlYkNv
cmU6OkRldmljZU1vdGlvbkNvbnRyb2xsZXIqIFdlYkRldmljZU1vdGlvbkNvbnRyb2xsZXI6OmNv
bnRyb2xsZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRyb2xsZXI7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZp
Y2VNb3Rpb25EYXRhLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlTW90aW9uRGF0
YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDgxMWY0N2UyM2NhOWY1NTBiOGNiN2M1ZDg5ODZmOWUxZThhZGNj
MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2aWNlTW90aW9u
RGF0YS5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJEZXZpY2VNb3Rpb25EYXRhLmgiCisKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25E
YXRhLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisKK3VzaW5nIFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCit2b2lkIFdlYkRldmljZU1vdGlvbkRhdGE6OmluaXQoKQoreworICAgIG1fZGV2aWNl
TW90aW9uRGF0YSA9IERldmljZU1vdGlvbkRhdGE6OmNyZWF0ZSgpOworfQorCit2b2lkIFdlYkRl
dmljZU1vdGlvbkRhdGE6OmluaXQoYm9vbCBjYW5Qcm92aWRlWEFjY2VsZXJhdGlvbiwgZG91Ymxl
IHhBY2NlbGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Q
cm92aWRlWUFjY2VsZXJhdGlvbiwgZG91YmxlIHlBY2NlbGVyYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92aWRlWkFjY2VsZXJhdGlvbiwgZG91YmxlIHpB
Y2NlbGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5Qcm92
aWRlWEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIGRvdWJsZSB4QWNjZWxlcmF0aW9uSW5j
bHVkaW5nR3Jhdml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhblBy
b3ZpZGVZQWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgZG91YmxlIHlBY2NlbGVyYXRpb25J
bmNsdWRpbmdHcmF2aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2Fu
UHJvdmlkZVpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCBkb3VibGUgekFjY2VsZXJhdGlv
bkluY2x1ZGluZ0dyYXZpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBj
YW5Qcm92aWRlQWxwaGFSb3RhdGlvblJhdGUsIGRvdWJsZSBhbHBoYVJvdGF0aW9uUmF0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVCZXRhUm90YXRpb25S
YXRlLCAgZG91YmxlIGJldGFSb3RhdGlvblJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBjYW5Qcm92aWRlR2FtbWFSb3RhdGlvblJhdGUsIGRvdWJsZSBnYW1tYVJvdGF0
aW9uUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhblByb3ZpZGVJ
bnRlcnZhbCwgZG91YmxlIGludGVydmFsKQoreworICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRh
OjpBY2NlbGVyYXRpb24+IGFjY2VsZXJhdGlvbjsKKyAgICBpZiAoY2FuUHJvdmlkZVhBY2NlbGVy
YXRpb24gfHwgY2FuUHJvdmlkZVlBY2NlbGVyYXRpb24gfHwgY2FuUHJvdmlkZVpBY2NlbGVyYXRp
b24pIHsKKyAgICAgICAgYWNjZWxlcmF0aW9uID0gRGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0
aW9uOjpjcmVhdGUoY2FuUHJvdmlkZVhBY2NlbGVyYXRpb24sIHhBY2NlbGVyYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhblByb3ZpZGVZQWNjZWxlcmF0aW9uLCB5QWNjZWxlcmF0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5Qcm92aWRl
WkFjY2VsZXJhdGlvbiwgekFjY2VsZXJhdGlvbik7CisgICAgfQorCisgICAgUmVmUHRyPERldmlj
ZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbj4gYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eTsK
KyAgICBpZiAoY2FuUHJvdmlkZVhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5IHx8IGNhblBy
b3ZpZGVZQWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSB8fCBjYW5Qcm92aWRlWkFjY2VsZXJh
dGlvbkluY2x1ZGluZ0dyYXZpdHkpIHsKKyAgICAgICAgYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jh
dml0eSA9IERldmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbjo6Y3JlYXRlKGNhblByb3ZpZGVY
QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5Qcm92aWRlWUFjY2VsZXJhdGlvbkluY2x1ZGlu
Z0dyYXZpdHksIHlBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2FuUHJvdmlkZVpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LCB6QWNjZWxlcmF0
aW9uSW5jbHVkaW5nR3Jhdml0eSk7CisgICAgfQorCisgICAgUmVmUHRyPERldmljZU1vdGlvbkRh
dGE6OlJvdGF0aW9uUmF0ZT4gcm90YXRpb25SYXRlOworICAgIGlmIChjYW5Qcm92aWRlQWxwaGFS
b3RhdGlvblJhdGUgfHwgY2FuUHJvdmlkZUJldGFSb3RhdGlvblJhdGUgfHwgY2FuUHJvdmlkZUdh
bW1hUm90YXRpb25SYXRlKSB7CisgICAgICAgIHJvdGF0aW9uUmF0ZSA9IERldmljZU1vdGlvbkRh
dGE6OlJvdGF0aW9uUmF0ZTo6Y3JlYXRlKGNhblByb3ZpZGVBbHBoYVJvdGF0aW9uUmF0ZSwgYWxw
aGFSb3RhdGlvblJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhblByb3ZpZGVCZXRhUm90YXRpb25SYXRlLCBiZXRhUm90
YXRpb25SYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYW5Qcm92aWRlR2FtbWFSb3RhdGlvblJhdGUsIGdhbW1hUm90YXRp
b25SYXRlKTsKKyAgICB9CisKKyAgICBtX2RldmljZU1vdGlvbkRhdGEgPSBEZXZpY2VNb3Rpb25E
YXRhOjpjcmVhdGUoYWNjZWxlcmF0aW9uLmdldCgpLCBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2
aXR5LmdldCgpLCByb3RhdGlvblJhdGUuZ2V0KCksIGNhblByb3ZpZGVJbnRlcnZhbCwgaW50ZXJ2
YWwpOworfQorCit2b2lkIFdlYkRldmljZU1vdGlvbkRhdGE6OnJlc2V0KCkKK3sKKyAgICBtX2Rl
dmljZU1vdGlvbkRhdGEucmVzZXQoKTsKK30KKworV2ViRGV2aWNlTW90aW9uRGF0YTo6V2ViRGV2
aWNlTW90aW9uRGF0YShjb25zdCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+
JiBkZXZpY2VNb3Rpb25EYXRhKQorICAgIDogbV9kZXZpY2VNb3Rpb25EYXRhKGRldmljZU1vdGlv
bkRhdGEpCit7Cit9CisKK1dlYkRldmljZU1vdGlvbkRhdGEmIFdlYkRldmljZU1vdGlvbkRhdGE6
Om9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0
YT4mIGRldmljZU1vdGlvbkRhdGEpCit7CisgICAgbV9kZXZpY2VNb3Rpb25EYXRhID0gZGV2aWNl
TW90aW9uRGF0YTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkRldmljZU1vdGlvbkRhdGE6
Om9wZXJhdG9yIFBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YT4oKSBjb25zdAor
eworICAgIHJldHVybiBtX2RldmljZU1vdGlvbkRhdGEuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA1OTljNjVlMGMz
YWQ3OGJkZDMzM2IzZDlkMDVmMGEzM2JjYTVjNmI5Li5jODFjNjI2ZTVjMjgyMDlmOGFlMTk2ZmEz
MjM1ODhjNmNkYWNmZWJiIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDIs
NiArNDIsNyBAQAogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NW
YWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAiRGV2aWNlTW90
aW9uQ2xpZW50UHJveHkuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgpA
QCAtMTg2LDkgKzE4Nyw2IEBAIHN0YXRpYyBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzIGF1
dG9GaWxsUG9wdXBTZXR0aW5ncyA9IHsKIAogV2ViVmlldyogV2ViVmlldzo6Y3JlYXRlKFdlYlZp
ZXdDbGllbnQqIGNsaWVudCwgV2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHNDbGllbnQp
CiB7Ci0gICAgLy8gS2VlcCBydW50aW1lIGZsYWcgZm9yIGRldmljZSBtb3Rpb24gdHVybmVkIG9m
ZiB1bnRpbCBpdCdzIGltcGxlbWVudGVkLgotICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxl
RGV2aWNlTW90aW9uKGZhbHNlKTsKLQogICAgIC8vIFBhc3MgdGhlIFdlYlZpZXdJbXBsJ3Mgc2Vs
Zi1yZWZlcmVuY2UgdG8gdGhlIGNhbGxlci4KICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZp
ZXdJbXBsKGNsaWVudCwgZGV2VG9vbHNDbGllbnQpKS5sZWFrUmVmKCk7CiB9CkBAIC0yNzgsNiAr
Mjc2LDcgQEAgV2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCwg
V2ViRGV2VG9vbHNBZ2VudENsaWVudCogZGV2VG9vbHMKICAgICAsIG1fc3BlZWNoSW5wdXRDbGll
bnQoY2xpZW50KQogI2VuZGlmCiAgICAgLCBtX2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHko
bmV3IERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5kZXZpY2VP
cmllbnRhdGlvbkNsaWVudCgpIDogMCkpCisgICAgLCBtX2RldmljZU1vdGlvbkNsaWVudFByb3h5
KG5ldyBEZXZpY2VNb3Rpb25DbGllbnRQcm94eShjbGllbnQgPyBjbGllbnQtPmRldmljZU1vdGlv
bkNsaWVudCgpIDogMCkpCiB7CiAgICAgLy8gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBkb2VzIHRo
ZSBzYW1lIHRoaW5nLCBleGNlcHQgdGhleSBjYWxsIHRoZQogICAgIC8vIEtKUyBzcGVjaWZpYyB3
cmFwcGVyIGFyb3VuZCB0aGlzIG1ldGhvZC4gV2UgbmVlZCB0byBoYXZlIHRocmVhZGluZwpAQCAt
MzAxLDYgKzMwMCw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBj
bGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzCiAgICAgcGFnZUNsaWVudHMu
c3BlZWNoSW5wdXRDbGllbnQgPSAmbV9zcGVlY2hJbnB1dENsaWVudDsKICNlbmRpZgogICAgIHBh
Z2VDbGllbnRzLmRldmljZU9yaWVudGF0aW9uQ2xpZW50ID0gbV9kZXZpY2VPcmllbnRhdGlvbkNs
aWVudFByb3h5LmdldCgpOworICAgIHBhZ2VDbGllbnRzLmRldmljZU1vdGlvbkNsaWVudCA9IG1f
ZGV2aWNlTW90aW9uQ2xpZW50UHJveHkuZ2V0KCk7CiAKICAgICBtX3BhZ2Uuc2V0KG5ldyBQYWdl
KHBhZ2VDbGllbnRzKSk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBlNTFkZjRk
OThlM2Q4ZTJiNjExMjU1MDM4ZjA4YzYxZmU0MmM3ODc4Li5iNjQ4MTUyZGFjZDUzNjZmYWI2MTky
OTIzYWUxNzc5YTQ5ZWI5ZWRhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC03Miw2
ICs3Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXV0b2NvbXBsZXRlUG9wdXBNZW51
Q2xpZW50OwogY2xhc3MgQXV0b0ZpbGxQb3B1cE1lbnVDbGllbnQ7CiBjbGFzcyBDb250ZXh0TWVu
dUNsaWVudEltcGw7CitjbGFzcyBEZXZpY2VNb3Rpb25DbGllbnRQcm94eTsKIGNsYXNzIERldmlj
ZU9yaWVudGF0aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBEcmFnU2Nyb2xsVGltZXI7CiBjbGFzcyBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0OwpAQCAtNTQ0LDYgKzU0NSw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gZWFybHkuIFRoaXMgbWVtYmVyIGhvbGRzIG9uIHRvIHRoZSBHQzNEIGluIHRoaXMgY2FzZS4K
ICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q+IG1fdGVtcG9yYXJ5T25zY3Jl
ZW5HcmFwaGljc0NvbnRleHQzRDsKICAgICBPd25QdHI8RGV2aWNlT3JpZW50YXRpb25DbGllbnRQ
cm94eT4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OworICAgIE93blB0cjxEZXZpY2VN
b3Rpb25DbGllbnRQcm94eT4gbV9kZXZpY2VNb3Rpb25DbGllbnRQcm94eTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70089</attachid>
            <date>2010-10-07 07:35:03 -0700</date>
            <delta_ts>2011-01-04 04:18:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47078-20101007153501.patch</filename>
            <type>text/plain</type>
            <size>36249</size>
            <attacher name="Hans Wennborg">hans</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3NTdlNjZmNjM3M2E3MTEzZmNhMjQxZGM1NzM3MWU2OTM3NDk2ODEzLi5mMGY3MGJk
YTUyZGE5NmQzOWRjYjE3OTE1NGZmY2FiMjk4Y2Y1ZjRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMDcgIEhhbnMgV2VubmJvcmcgIDxoYW5zQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIERldmlj
ZU1vdGlvbiBwbHVtYmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDcwNzgKKworICAgICAgICBTaW5jZSBEZXZpY2VNb3Rpb24gaXMgbm8gbG9uZ2Vy
IGRpc2FibGVkIGJ5IHRlc3Rfc2hlbGwgYW5kIERSVCwgdGhlc2UKKyAgICAgICAgYmFzZWxpbmVz
IG5lZWQgYW4gdXBkYXRlLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFz
dC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRp
ZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAxMC0xMC0wNiAgQW5kcmVh
cyBLbGluZyAgPGFuZHJlYXMua2xpbmdAbm9raWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHMvUmVuZGVyUGF0aC9SZW5kZXJTVkdQYXRoLwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRl
dmljZS1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1saW51eC9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVu
dGF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAzMTM3NzJiNTE4YzdlMzUyODI2MGIzNmVhMGE2ZThk
MzlhNTUyNzY4Li5hODY0ZTE4Nzk2YWI3MjI5NDY1Y2UwMWY1ZDJkY2IzODJhNTc5NTgyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L2RvbS9XaW5k
b3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1saW51eC9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dApAQCAtMSw2ICsx
LDYgQEAKIFRoaXMgdGVzdCBkdW1wcyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgdGhhdCBhcmUgcmVh
Y2hhYmxlIGZyb20gdGhlIHdpbmRvdy5EZXZpY2VNb3Rpb25FdmVudCB3aW5kb3cub25kZXZpY2Vt
b3Rpb24sIHdpbmRvdy5EZXZpY2VPcmllbnRhdGlvbkV2ZW50IGFuZCB3aW5kb3cub25kZXZpY2Vv
cmllbnRhdGlvbiBvYmplY3RzLCBhbG9uZyB3aXRoIHRoZWlyIHR5cGVzLiBUaGVzZSBwcm9wZXJ0
aWVzIGFyZSBjdXJyZW50bHkgZ3VhcmRlZCBieSBFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OLgog
Ci13aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgW3VuZGVmaW5lZF0KLXdpbmRvdy5vbmRldmljZW1v
dGlvbiBbdW5kZWZpbmVkXQord2luZG93LkRldmljZU1vdGlvbkV2ZW50IFtmdW5jdGlvbl0KK3dp
bmRvdy5vbmRldmljZW1vdGlvbiBbbnVsbF0KIHdpbmRvdy5EZXZpY2VPcmllbnRhdGlvbkV2ZW50
IFtmdW5jdGlvbl0KIHdpbmRvdy5vbmRldmljZW9yaWVudGF0aW9uIFtudWxsXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5k
b3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGll
cy1kZXZpY2Utb3JpZW50YXRpb24tZXhwZWN0ZWQudHh0CmluZGV4IDMxMzc3MmI1MThjN2UzNTI4
MjYwYjM2ZWEwYTZlOGQzOWE1NTI3NjguLmE4NjRlMTg3OTZhYjcyMjk0NjVjZTAxZjVkMmRjYjM4
MmE1Nzk1ODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9m
YXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9kb20v
V2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRhdGlvbi1leHBlY3RlZC50eHQK
QEAgLTEsNiArMSw2IEBACiBUaGlzIHRlc3QgZHVtcHMgYWxsIG9mIHRoZSBwcm9wZXJ0aWVzIHRo
YXQgYXJlIHJlYWNoYWJsZSBmcm9tIHRoZSB3aW5kb3cuRGV2aWNlTW90aW9uRXZlbnQgd2luZG93
Lm9uZGV2aWNlbW90aW9uLCB3aW5kb3cuRGV2aWNlT3JpZW50YXRpb25FdmVudCBhbmQgd2luZG93
Lm9uZGV2aWNlb3JpZW50YXRpb24gb2JqZWN0cywgYWxvbmcgd2l0aCB0aGVpciB0eXBlcy4gVGhl
c2UgcHJvcGVydGllcyBhcmUgY3VycmVudGx5IGd1YXJkZWQgYnkgRU5BQkxFX0RFVklDRV9PUklF
TlRBVElPTi4KIAotd2luZG93LkRldmljZU1vdGlvbkV2ZW50IFt1bmRlZmluZWRdCi13aW5kb3cu
b25kZXZpY2Vtb3Rpb24gW3VuZGVmaW5lZF0KK3dpbmRvdy5EZXZpY2VNb3Rpb25FdmVudCBbZnVu
Y3Rpb25dCit3aW5kb3cub25kZXZpY2Vtb3Rpb24gW251bGxdCiB3aW5kb3cuRGV2aWNlT3JpZW50
YXRpb25FdmVudCBbZnVuY3Rpb25dCiB3aW5kb3cub25kZXZpY2VvcmllbnRhdGlvbiBbbnVsbF0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9XaW5kb3cvd2luZG93
LXByb3BlcnRpZXMtZGV2aWNlLW9yaWVudGF0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAzMTM3NzJi
NTE4YzdlMzUyODI2MGIzNmVhMGE2ZThkMzlhNTUyNzY4Li5hODY0ZTE4Nzk2YWI3MjI5NDY1Y2Uw
MWY1ZDJkY2IzODJhNTc5NTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS13aW4vZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWRldmljZS1vcmllbnRh
dGlvbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2lu
L2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1kZXZpY2Utb3JpZW50YXRpb24tZXhw
ZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBAQAogVGhpcyB0ZXN0IGR1bXBzIGFsbCBvZiB0aGUgcHJv
cGVydGllcyB0aGF0IGFyZSByZWFjaGFibGUgZnJvbSB0aGUgd2luZG93LkRldmljZU1vdGlvbkV2
ZW50IHdpbmRvdy5vbmRldmljZW1vdGlvbiwgd2luZG93LkRldmljZU9yaWVudGF0aW9uRXZlbnQg
YW5kIHdpbmRvdy5vbmRldmljZW9yaWVudGF0aW9uIG9iamVjdHMsIGFsb25nIHdpdGggdGhlaXIg
dHlwZXMuIFRoZXNlIHByb3BlcnRpZXMgYXJlIGN1cnJlbnRseSBndWFyZGVkIGJ5IEVOQUJMRV9E
RVZJQ0VfT1JJRU5UQVRJT04uCiAKLXdpbmRvdy5EZXZpY2VNb3Rpb25FdmVudCBbdW5kZWZpbmVk
XQotd2luZG93Lm9uZGV2aWNlbW90aW9uIFt1bmRlZmluZWRdCit3aW5kb3cuRGV2aWNlTW90aW9u
RXZlbnQgW2Z1bmN0aW9uXQord2luZG93Lm9uZGV2aWNlbW90aW9uIFtudWxsXQogd2luZG93LkRl
dmljZU9yaWVudGF0aW9uRXZlbnQgW2Z1bmN0aW9uXQogd2luZG93Lm9uZGV2aWNlb3JpZW50YXRp
b24gW251bGxdCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3MDFhOGZlNThhMTM5NmNjYzY3NTBiMzI4M2M5NmVl
Yjg2ZTlmYWYwLi5mODM1YTcxM2E5MDVlY2E1MTUwNmE2NTQ1YjYxYTRiNTY0MTBkNTAxIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw1NCBAQAorMjAxMC0xMC0wNyAgSGFucyBXZW5uYm9yZyAgPGhh
bnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFtDaHJvbWl1bV0gRGV2aWNlTW90aW9uIHBsdW1iaW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA3OAorCisgICAgICAgIFBsdW1i
aW5nIGZvciBEZXZpY2VNb3Rpb24uIFRoZSBwYXR0ZXJuIGlzIHRoZSBzYW1lIGFzIGZvcgorICAg
ICAgICBEZXZpY2VPcmllbnRhdGlvbjoKKworICAgICAgICBEZXZpY2VNb3Rpb25Qcm94eSBpbXBs
ZW1lbnRzIFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudC4KKyAgICAgICAgVGhpcyBpcyBwYXNz
ZWQgaW50byB0aGUgUGFnZSwgYW5kIHByb3hpZXMgZnVuY3Rpb24gY2FsbHMgdG8KKyAgICAgICAg
YSBXZWJEZXZpY2VNb3Rpb25DbGllbnQsIHdoaWNoIGNhbiB0aGVuIGJlIGltcGxlbWVudGVkIENo
cm9taXVtIHNpZGUsCisgICAgICAgIGFuZCBpcyBwcm92aWRlZCBieSB0aGUgV2ViVmlld0NsaWVu
dC4KKyAgICAgICAgV3JhcHBlcnMgYXJlIHByb3ZpZGVkIGZvciBhbGwgY2xhc3NlcyB0aGF0IG5l
ZWQgaXQuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHJlbW92ZXMgdGhlIGhhcmQgZGlzYWJs
ZSBvZiB0aGUgcnVudGltZSBmbGFnIGZvcgorICAgICAgICBEZXZpY2VNb3Rpb24uIFRoZSBmZWF0
dXJlIGlzIHN0aWxsIGRpc2FibGVkIGluIENocm9taXVtLCBidXQgZW5hYmxlZAorICAgICAgICBv
dGhlcndoZXJlLCBlLmcuIGluIHRlc3Rfc2hlbGwgYW5kIERSVC4KKworICAgICAgICAqIFdlYktp
dC5neXA6CisgICAgICAgICogcHVibGljL1dlYkRldmljZU1vdGlvbkNsaWVudC5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlTW90aW9uQ2xpZW50Ojp+V2ViRGV2aWNlTW90aW9u
Q2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViRGV2aWNlTW90aW9uRGF0YS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViRGV2aWNlTW90aW9uRGF0YTo6V2ViRGV2aWNlTW90aW9uRGF0YSk6
CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0NsaWVudDo6ZGV2aWNlTW90aW9uQ2xpZW50KToKKyAgICAgICAgKiBzcmMvRGV2aWNlTW90
aW9uQ2xpZW50UHJveHkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6RGV2aWNlTW90aW9u
Q2xpZW50UHJveHk6OkRldmljZU1vdGlvbkNsaWVudFByb3h5KToKKyAgICAgICAgKFdlYktpdDo6
RGV2aWNlTW90aW9uQ2xpZW50UHJveHk6On5EZXZpY2VNb3Rpb25DbGllbnRQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OkRldmljZU1vdGlvbkNsaWVudFByb3h5OjpzZXRDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYktpdDo6RGV2aWNlTW90aW9uQ2xpZW50UHJveHk6OnN0YXJ0VXBkYXRpbmcpOgor
ICAgICAgICAoV2ViS2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6c3RvcFVwZGF0aW5nKToK
KyAgICAgICAgKFdlYktpdDo6RGV2aWNlTW90aW9uQ2xpZW50UHJveHk6OmN1cnJlbnREZXZpY2VN
b3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6ZGV2aWNl
TW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6CisgICAgICAgICogc3JjL0RldmljZU1vdGlvbkNs
aWVudFByb3h5Lmg6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJEZXZpY2VNb3Rpb25Db250cm9s
bGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkRldmljZU1vdGlvbkNvbnRyb2xs
ZXI6OldlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZp
Y2VNb3Rpb25Db250cm9sbGVyOjpkaWRDaGFuZ2VEZXZpY2VNb3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpjb250cm9sbGVyKToKKyAgICAgICAgKiBz
cmMvV2ViRGV2aWNlTW90aW9uRGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJE
ZXZpY2VNb3Rpb25EYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZpY2VNb3Rp
b25EYXRhOjpXZWJEZXZpY2VNb3Rpb25EYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNl
TW90aW9uRGF0YTo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2aWNlTW90aW9u
RGF0YTo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb3JlOjpEZXZpY2VNb3Rpb25EYXRhPik6Cisg
ICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKwogMjAxMC0xMC0wNiAgQ2hyaXMgR3VpbGxvcnkg
IDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlz
IEZsZWl6YWNoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiYzNiOGNhNzMzZDhmNThmYTU5MTZiOTZiN2Nm
OGZkZjk2ZGUwZTMwLi5iNGE4ZDVkNmFmMTI1NjIwYmViMjQ1ZjRlNGY4ZGE4NWI0NTEyNThiIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21p
dW0vV2ViS2l0Lmd5cApAQCAtMTI3LDYgKzEyNyw3IEBACiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViQ1N0cmluZy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkN1cnNv
ckluZm8uaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25EYXRhLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRE9NRXZlbnQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJET01FdmVudExpc3RlbmVyLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRE9NTW91c2VFdmVudC5oJywKQEAgLTE0MCw2ICsxNDEsNyBAQAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViRGV2VG9vbHNBZ2VudENsaWVudC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkRldlRvb2xzRnJvbnRlbmQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJEZXZUb29sc0Zyb250ZW5kQ2xpZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
RGV2aWNlTW90aW9uQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRGV2aWNl
T3JpZW50YXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jay5oJywKQEAgLTMxMSw2ICszMTMsOCBAQAogICAgICAgICAgICAgICAgICdz
cmMvRGVidWdnZXJBZ2VudEltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9EZWJ1Z2dlckFn
ZW50TWFuYWdlci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvRGVidWdnZXJBZ2VudE1hbmFn
ZXIuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9EZXZpY2VNb3Rpb25DbGllbnRQcm94eS5jcHAn
LAorICAgICAgICAgICAgICAgICdzcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHkuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9EZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5LmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvRE9NVXRpbGl0aWVzUHJpdmF0ZS5jcHAnLApAQCAtNDEwLDYgKzQxNCw4
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkRldlRvb2xzRnJvbnRlbmRJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJEZXZUb29sc0Zyb250ZW5kSW1wbC5oJywKKyAgICAgICAgICAgICAgICAn
c3JjL1dlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1dlYkRldmljZU1vdGlvbkRhdGEuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmlj
ZU9yaWVudGF0aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudE1vY2suY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkRldmljZU9yaWVu
dGF0aW9uQ29udHJvbGxlci5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZXZpY2VNb3Rpb25DbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2
aWNlTW90aW9uQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGZkY2JjNDM4MDJiZWUyZTE3ZDkxZWM1NzJj
ZTZhZjFmYzBjOTU1NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRGV2aWNlTW90aW9uQ2xpZW50LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViRGV2aWNlTW90aW9uQ2xpZW50X2gKKyNkZWZpbmUgV2ViRGV2aWNlTW90aW9uQ2xpZW50X2gK
KworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
V2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcjsKK2NsYXNzIFdlYkRldmljZU1vdGlvbkRhdGE7CisK
K2NsYXNzIFdlYkRldmljZU1vdGlvbkNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+V2Vi
RGV2aWNlTW90aW9uQ2xpZW50KCkge30KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVy
KFdlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIqKSB7IFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBzdGFydFVwZGF0aW5nKCkgeyBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgeyBXRUJLSVRf
QVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIFdlYkRldmljZU1vdGlvbkRhdGEq
IGN1cnJlbnREZXZpY2VNb3Rpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdmlydHVhbCB2
b2lkIGRldmljZU1vdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSB7IFdFQktJVF9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBX
ZWJEZXZpY2VNb3Rpb25DbGllbnRfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZmRmZTVhY2RjMTZiOTEyOTQ4
YjRiZWJhZGZiMDNiYzUwMTBhYzdmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgKQEAgLTAsMCArMSw1NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcl9oCisjZGVmaW5lIFdlYkRldmlj
ZU1vdGlvbkNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsgY2xhc3MgRGV2aWNlTW90aW9uQ29udHJvbGxlcjsgfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViRGV2aWNlTW90aW9uRGF0YTsKKworY2xhc3MgV2ViRGV2aWNl
TW90aW9uQ29udHJvbGxlciB7CitwdWJsaWM6CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisg
ICAgV2ViRGV2aWNlTW90aW9uQ29udHJvbGxlcihXZWJDb3JlOjpEZXZpY2VNb3Rpb25Db250cm9s
bGVyKik7CisjZW5kaWYKKyAgICBXRUJLSVRfQVBJIHZvaWQgZGlkQ2hhbmdlRGV2aWNlTW90aW9u
KGNvbnN0IFdlYkRldmljZU1vdGlvbkRhdGEqKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgorICAgIFdlYkNvcmU6OkRldmljZU1vdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIoKSBjb25z
dDsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIoKTsK
KworICAgIFdlYkNvcmU6OkRldmljZU1vdGlvbkNvbnRyb2xsZXIqIG1fY29udHJvbGxlcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRGV2aWNlTW90aW9uQ29u
dHJvbGxlcl9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU1v
dGlvbkRhdGEuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRGV2aWNlTW90aW9uRGF0YS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZiMmViMDk5Yzk5YjJjMWY0NTRiNGJkOGVmNTNhOWIzODFkZTNlNTMKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRldmljZU1vdGlvbkRh
dGEuaApAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGV2aWNlTW90aW9uRGF0
YV9oCisjZGVmaW5lIFdlYkRldmljZU1vdGlvbkRhdGFfaAorCisjaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIERldmljZU1vdGlvbkRhdGE7IH0KK25h
bWVzcGFjZSBXVEYgeyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgUGFzc1JlZlB0cjsgfQor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJEZXZpY2VNb3Rpb25EYXRh
IHsKK3B1YmxpYzoKKyAgICBXZWJEZXZpY2VNb3Rpb25EYXRhKCkKKyAgICAgICAgICAgIDogbV9j
YW5Qcm92aWRlWEFjY2VsZXJhdGlvbihmYWxzZSkKKyAgICAgICAgICAgICwgbV9jYW5Qcm92aWRl
WUFjY2VsZXJhdGlvbihmYWxzZSkKKyAgICAgICAgICAgICwgbV9jYW5Qcm92aWRlWkFjY2VsZXJh
dGlvbihmYWxzZSkKKyAgICAgICAgICAgICwgbV9jYW5Qcm92aWRlWEFjY2VsZXJhdGlvbkluY2x1
ZGluZ0dyYXZpdHkoZmFsc2UpCisgICAgICAgICAgICAsIG1fY2FuUHJvdmlkZVlBY2NlbGVyYXRp
b25JbmNsdWRpbmdHcmF2aXR5KGZhbHNlKQorICAgICAgICAgICAgLCBtX2NhblByb3ZpZGVaQWNj
ZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eShmYWxzZSkKKyAgICAgICAgICAgICwgbV9jYW5Qcm92
aWRlQWxwaGFSb3RhdGlvblJhdGUoZmFsc2UpCisgICAgICAgICAgICAsIG1fY2FuUHJvdmlkZUJl
dGFSb3RhdGlvblJhdGUoZmFsc2UpCisgICAgICAgICAgICAsIG1fY2FuUHJvdmlkZUdhbW1hUm90
YXRpb25SYXRlKGZhbHNlKQorICAgICAgICAgICAgLCBtX2NhblByb3ZpZGVJbnRlcnZhbChmYWxz
ZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBzZXRYQWNjZWxlcmF0aW9uKGRvdWJsZSB4QWNj
ZWxlcmF0aW9uKQorICAgIHsKKyAgICAgICAgbV9jYW5Qcm92aWRlWEFjY2VsZXJhdGlvbiA9IHRy
dWU7CisgICAgICAgIG1feEFjY2VsZXJhdGlvbiA9IHhBY2NlbGVyYXRpb247CisgICAgfQorCisg
ICAgdm9pZCBzZXRZQWNjZWxlcmF0aW9uKGRvdWJsZSB5QWNjZWxlcmF0aW9uKQorICAgIHsKKyAg
ICAgICAgbV9jYW5Qcm92aWRlWUFjY2VsZXJhdGlvbiA9IHRydWU7CisgICAgICAgIG1feUFjY2Vs
ZXJhdGlvbiA9IHlBY2NlbGVyYXRpb247CisgICAgfQorCisgICAgdm9pZCBzZXRaQWNjZWxlcmF0
aW9uKGRvdWJsZSB6QWNjZWxlcmF0aW9uKQorICAgIHsKKyAgICAgICAgbV9jYW5Qcm92aWRlWkFj
Y2VsZXJhdGlvbiA9IHRydWU7CisgICAgICAgIG1fekFjY2VsZXJhdGlvbiA9IHpBY2NlbGVyYXRp
b247CisgICAgfQorCisgICAgdm9pZCBzZXRYQWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eShk
b3VibGUgeEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkpCisgICAgeworICAgICAgICBtX2Nh
blByb3ZpZGVYQWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSA9IHRydWU7CisgICAgICAgIG1f
eEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkgPSB4QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jh
dml0eTsKKyAgICB9CisKKyAgICB2b2lkIHNldFlBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5
KGRvdWJsZSB5QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSkKKyAgICB7CisgICAgICAgIG1f
Y2FuUHJvdmlkZVlBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5ID0gdHJ1ZTsKKyAgICAgICAg
bV95QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSA9IHlBY2NlbGVyYXRpb25JbmNsdWRpbmdH
cmF2aXR5OworICAgIH0KKworICAgIHZvaWQgc2V0WkFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHkoZG91YmxlIHpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KQorICAgIHsKKyAgICAgICAg
bV9jYW5Qcm92aWRlWkFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkgPSB0cnVlOworICAgICAg
ICBtX3pBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5ID0gekFjY2VsZXJhdGlvbkluY2x1ZGlu
Z0dyYXZpdHk7CisgICAgfQorCisgICAgdm9pZCBzZXRBbHBoYVJvdGF0aW9uUmF0ZShkb3VibGUg
YWxwaGFSb3RhdGlvblJhdGUpCisgICAgeworICAgICAgICBtX2NhblByb3ZpZGVBbHBoYVJvdGF0
aW9uUmF0ZSA9IHRydWU7CisgICAgICAgIG1fYWxwaGFSb3RhdGlvblJhdGUgPSBhbHBoYVJvdGF0
aW9uUmF0ZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEJldGFSb3RhdGlvblJhdGUoZG91YmxlIGJl
dGFSb3RhdGlvblJhdGUpCisgICAgeworICAgICAgICBtX2NhblByb3ZpZGVCZXRhUm90YXRpb25S
YXRlID0gdHJ1ZTsKKyAgICAgICAgbV9iZXRhUm90YXRpb25SYXRlID0gYmV0YVJvdGF0aW9uUmF0
ZTsKKyAgICB9CisKKyAgICB2b2lkIHNldEdhbW1hUm90YXRpb25SYXRlKGRvdWJsZSBnYW1tYVJv
dGF0aW9uUmF0ZSkKKyAgICB7CisgICAgICAgIG1fY2FuUHJvdmlkZUdhbW1hUm90YXRpb25SYXRl
ID0gdHJ1ZTsKKyAgICAgICAgbV9nYW1tYVJvdGF0aW9uUmF0ZSA9IGdhbW1hUm90YXRpb25SYXRl
OworICAgIH0KKworICAgIHZvaWQgc2V0SW50ZXJ2YWwoZG91YmxlIGludGVydmFsKQorICAgIHsK
KyAgICAgICAgbV9jYW5Qcm92aWRlSW50ZXJ2YWwgPSB0cnVlOworICAgICAgICBtX2ludGVydmFs
ID0gaW50ZXJ2YWw7CisgICAgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2Vi
RGV2aWNlTW90aW9uRGF0YShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6RGV2aWNlTW90
aW9uRGF0YT4mKTsKKyAgICBXZWJEZXZpY2VNb3Rpb25EYXRhJiBvcGVyYXRvcj0oY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+Jik7CisgICAgb3BlcmF0b3Ig
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+KCkgY29uc3Q7CisjZW5k
aWYKKworcHJpdmF0ZToKKyAgICBkb3VibGUgbV94QWNjZWxlcmF0aW9uOworICAgIGRvdWJsZSBt
X3lBY2NlbGVyYXRpb247CisgICAgZG91YmxlIG1fekFjY2VsZXJhdGlvbjsKKyAgICBkb3VibGUg
bV94QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eTsKKyAgICBkb3VibGUgbV95QWNjZWxlcmF0
aW9uSW5jbHVkaW5nR3Jhdml0eTsKKyAgICBkb3VibGUgbV96QWNjZWxlcmF0aW9uSW5jbHVkaW5n
R3Jhdml0eTsKKyAgICBkb3VibGUgbV9hbHBoYVJvdGF0aW9uUmF0ZTsKKyAgICBkb3VibGUgbV9i
ZXRhUm90YXRpb25SYXRlOworICAgIGRvdWJsZSBtX2dhbW1hUm90YXRpb25SYXRlOworICAgIGRv
dWJsZSBtX2ludGVydmFsOworCisgICAgYm9vbCBtX2NhblByb3ZpZGVYQWNjZWxlcmF0aW9uOwor
ICAgIGJvb2wgbV9jYW5Qcm92aWRlWUFjY2VsZXJhdGlvbjsKKyAgICBib29sIG1fY2FuUHJvdmlk
ZVpBY2NlbGVyYXRpb247CisgICAgYm9vbCBtX2NhblByb3ZpZGVYQWNjZWxlcmF0aW9uSW5jbHVk
aW5nR3Jhdml0eTsKKyAgICBib29sIG1fY2FuUHJvdmlkZVlBY2NlbGVyYXRpb25JbmNsdWRpbmdH
cmF2aXR5OworICAgIGJvb2wgbV9jYW5Qcm92aWRlWkFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZp
dHk7CisgICAgYm9vbCBtX2NhblByb3ZpZGVBbHBoYVJvdGF0aW9uUmF0ZTsKKyAgICBib29sIG1f
Y2FuUHJvdmlkZUJldGFSb3RhdGlvblJhdGU7CisgICAgYm9vbCBtX2NhblByb3ZpZGVHYW1tYVJv
dGF0aW9uUmF0ZTsKKyAgICBib29sIG1fY2FuUHJvdmlkZUludGVydmFsOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJEZXZpY2VNb3Rpb25EYXRhX2gKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggODU4Y2IyYTRiOTdmMTAyMDZmM2Y2
YWM5OGNhNWViODU1OTFlY2ZjMC4uMDZkN2ViMDMzM2M3ZTRmOWU0MGY1NjNjNWVjNWUyMTI4NWY0
OGY3ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTQ1LDYgKzQ1
LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
OworY2xhc3MgV2ViRGV2aWNlTW90aW9uQ2xpZW50OwogY2xhc3MgV2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnQ7CiBjbGFzcyBXZWJEcmFnRGF0YTsKIGNsYXNzIFdlYkVsZW1lbnQ7CkBAIC0zNDQs
NiArMzQ1LDggQEAgcHVibGljOgogICAgIC8vIEFjY2VzcyB0aGUgZW1iZWRkZXIgQVBJIGZvciBk
ZXZpY2Ugb3JpZW50YXRpb24gc2VydmljZXMuCiAgICAgdmlydHVhbCBXZWJEZXZpY2VPcmllbnRh
dGlvbkNsaWVudCogZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSB7IHJldHVybiAwOyB9CiAKKyAg
ICAvLyBBY2Nlc3MgdGhlIGVtYmVkZGVyIEFQSSBmb3IgZGV2aWNlIG1vdGlvbiBzZXJ2aWNlcy4K
KyAgICB2aXJ0dWFsIFdlYkRldmljZU1vdGlvbkNsaWVudCogZGV2aWNlTW90aW9uQ2xpZW50KCkg
eyByZXR1cm4gMDsgfQogCiAgICAgLy8gWm9vbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHkuY3BwIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9EZXZpY2VNb3Rpb25DbGllbnRQcm94eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGEzMDc1YzI3
NGRmNDhkMTNmMGRiNzBhZmViZTRmODhiMDFhYzI2ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHkuY3BwCkBAIC0wLDAgKzEsODcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xp
ZW50UHJveHkuaCIKKworI2luY2x1ZGUgIkRldmljZU1vdGlvbkRhdGEuaCIKKyNpbmNsdWRlICJX
ZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiV2ViRGV2aWNlTW90aW9uRGF0
YS5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFz
cyBEZXZpY2VNb3Rpb25Db250cm9sbGVyOyB9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitEZXZp
Y2VNb3Rpb25DbGllbnRQcm94eTo6RGV2aWNlTW90aW9uQ2xpZW50UHJveHkoV2ViRGV2aWNlTW90
aW9uQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7Cit9CisKK0Rldmlj
ZU1vdGlvbkNsaWVudFByb3h5Ojp+RGV2aWNlTW90aW9uQ2xpZW50UHJveHkoKQoreworfQorCit2
b2lkIERldmljZU1vdGlvbkNsaWVudFByb3h5OjpzZXRDb250cm9sbGVyKFdlYkNvcmU6OkRldmlj
ZU1vdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCit7CisgICAgaWYgKCFtX2NsaWVudCkgLy8g
RklYTUU6IEdldCByaWQgb2YgdGhlc2UgbnVsbCBjaGVja3Mgb25jZSBkZXZpY2UgbW90aW9uIGlz
IGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5zZXRD
b250cm9sbGVyKG5ldyBXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyKGNvbnRyb2xsZXIpKTsKK30K
Kwordm9pZCBEZXZpY2VNb3Rpb25DbGllbnRQcm94eTo6c3RhcnRVcGRhdGluZygpCit7CisgICAg
aWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5zdGFydFVwZGF0
aW5nKCk7Cit9CisKK3ZvaWQgRGV2aWNlTW90aW9uQ2xpZW50UHJveHk6OnN0b3BVcGRhdGluZygp
Cit7CisgICAgaWYgKCFtX2NsaWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fY2xpZW50LT5z
dG9wVXBkYXRpbmcoKTsKK30KKworV2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YSogRGV2aWNlTW90
aW9uQ2xpZW50UHJveHk6OmN1cnJlbnREZXZpY2VNb3Rpb24oKSBjb25zdAoreworICAgIGlmICgh
bV9jbGllbnQpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jbGllbnQtPmN1cnJlbnRE
ZXZpY2VNb3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBDYWNoZSB0aGUgRGV2
aWNlTW90aW9uRGF0YSBwb2ludGVyIHNvIGl0cyByZWZlcmVuY2UgY291bnQgZG9lcyBub3QgZHJv
cCB0byB6ZXJvIHVwb24gcmV0dXJuLgorICAgIG1fY3VycmVudERldmljZU1vdGlvbiA9ICptX2Ns
aWVudC0+Y3VycmVudERldmljZU1vdGlvbigpOworICAgIHJldHVybiBtX2N1cnJlbnREZXZpY2VN
b3Rpb24uZ2V0KCk7Cit9CisKK3ZvaWQgRGV2aWNlTW90aW9uQ2xpZW50UHJveHk6OmRldmljZU1v
dGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2NsaWVudC0+ZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvRGV2aWNlTW90aW9uQ2xpZW50UHJveHkuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRGV2
aWNlTW90aW9uQ2xpZW50UHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMmY2MzljNzFiNDk3ZmUwYTY4Zjg1
NDYzOTNlZTE5MmNmZmY5Nzk4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9EZXZpY2VNb3Rpb25DbGllbnRQcm94eS5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIERldmljZU1vdGlvbkNsaWVudFByb3h5X2gKKyNkZWZpbmUgRGV2aWNlTW90aW9uQ2xpZW50
UHJveHlfaAorCisjaW5jbHVkZSAiRGV2aWNlTW90aW9uQ2xpZW50LmgiCisjaW5jbHVkZSAiV2Vi
RGV2aWNlTW90aW9uQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBEZXZpY2VNb3Rpb25Db250cm9sbGVyOworY2xhc3MgRGV2aWNl
TW90aW9uRGF0YTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIERldmljZU1vdGlv
bkNsaWVudFByb3h5IDogcHVibGljIFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudCB7CitwdWJs
aWM6CisgICAgRGV2aWNlTW90aW9uQ2xpZW50UHJveHkoV2ViRGV2aWNlTW90aW9uQ2xpZW50Kik7
CisgICAgdmlydHVhbCB+RGV2aWNlTW90aW9uQ2xpZW50UHJveHkoKTsKKworICAgIC8vIERldmlj
ZU1vdGlvbkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250cm9sbGVyKFdlYkNvcmU6OkRl
dmljZU1vdGlvbkNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRVcGRhdGluZygp
OworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6
OkRldmljZU1vdGlvbkRhdGEqIGN1cnJlbnREZXZpY2VNb3Rpb24oKSBjb25zdDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGV2aWNlTW90aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpOworCitwcml2YXRlOgor
ICAgIFdlYkRldmljZU1vdGlvbkNsaWVudCogbV9jbGllbnQ7CisgICAgbXV0YWJsZSBSZWZQdHI8
V2ViQ29yZTo6RGV2aWNlTW90aW9uRGF0YT4gbV9jdXJyZW50RGV2aWNlTW90aW9uOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBEZXZpY2VNb3Rpb25DbGllbnRQcm94
eV9oCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldmljZU1vdGlvbkNvbnRy
b2xsZXIuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VNb3Rpb25Db250cm9sbGVy
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi42MjM4OGIzZTNmNzFmZmM5M2U3NTliNTFhMTcwNzBjMWE1MjljYTY0
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VNb3Rpb25D
b250cm9sbGVyLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldlYkRldmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkRl
dmljZU1vdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJEZXZpY2VNb3Rpb25EYXRhLmgiCisj
aW5jbHVkZSAiV2ViRGV2aWNlTW90aW9uRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpX
ZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyKFdlYkNvcmU6OkRldmljZU1vdGlvbkNvbnRyb2xsZXIq
IGNvbnRyb2xsZXIpCisgICAgOiBtX2NvbnRyb2xsZXIoY29udHJvbGxlcikKK3sKK30KKwordm9p
ZCBXZWJEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpkaWRDaGFuZ2VEZXZpY2VNb3Rpb24oY29uc3Qg
V2ViRGV2aWNlTW90aW9uRGF0YSogZGV2aWNlTW90aW9uRGF0YSkKK3sKKyAgICBQYXNzUmVmUHRy
PFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE+IG1vdGlvbigqZGV2aWNlTW90aW9uRGF0YSk7Cisg
ICAgbV9jb250cm9sbGVyLT5kaWRDaGFuZ2VEZXZpY2VNb3Rpb24obW90aW9uLmdldCgpKTsKK30K
KworV2ViQ29yZTo6RGV2aWNlTW90aW9uQ29udHJvbGxlciogV2ViRGV2aWNlTW90aW9uQ29udHJv
bGxlcjo6Y29udHJvbGxlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udHJvbGxlcjsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkRldmljZU1vdGlvbkRhdGEuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZpY2VN
b3Rpb25EYXRhLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYzVlNTc1NjIwZTkzMTBmZDVmZjg3YWU1ZWI0ZmEx
NDBkZDM2MDcwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZp
Y2VNb3Rpb25EYXRhLmNwcApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJEZXZpY2VNb3Rpb25EYXRhLmgiCisKKyNpbmNsdWRlICJEZXZp
Y2VNb3Rpb25EYXRhLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisKK3VzaW5nIFdlYkNvcmU6OkRldmljZU1vdGlvbkRhdGE7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJEZXZpY2VNb3Rpb25EYXRhOjpXZWJEZXZpY2VNb3Rpb25EYXRh
KGNvbnN0IFBhc3NSZWZQdHI8RGV2aWNlTW90aW9uRGF0YT4mIGRldmljZU1vdGlvbkRhdGEpCit7
CisgICAgaWYgKGNvbnN0IERldmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbiogYWNjZWxlcmF0
aW9uID0gZGV2aWNlTW90aW9uRGF0YS0+YWNjZWxlcmF0aW9uKCkpIHsKKyAgICAgICAgaWYgKGFj
Y2VsZXJhdGlvbi0+Y2FuUHJvdmlkZVgoKSkKKyAgICAgICAgICAgIHNldFhBY2NlbGVyYXRpb24o
YWNjZWxlcmF0aW9uLT54KCkpOworICAgICAgICBpZiAoYWNjZWxlcmF0aW9uLT5jYW5Qcm92aWRl
WSgpKQorICAgICAgICAgICAgc2V0WUFjY2VsZXJhdGlvbihhY2NlbGVyYXRpb24tPnkoKSk7Cisg
ICAgICAgIGlmIChhY2NlbGVyYXRpb24tPmNhblByb3ZpZGVaKCkpCisgICAgICAgICAgICBzZXRa
QWNjZWxlcmF0aW9uKGFjY2VsZXJhdGlvbi0+eigpKTsKKyAgICB9CisKKyAgICBpZiAoY29uc3Qg
RGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uKiBhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2
aXR5ID0gZGV2aWNlTW90aW9uRGF0YS0+YWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSgpKSB7
CisgICAgICAgIGlmIChhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LT5jYW5Qcm92aWRlWCgp
KQorICAgICAgICAgICAgc2V0WEFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkoYWNjZWxlcmF0
aW9uSW5jbHVkaW5nR3Jhdml0eS0+eCgpKTsKKyAgICAgICAgaWYgKGFjY2VsZXJhdGlvbkluY2x1
ZGluZ0dyYXZpdHktPmNhblByb3ZpZGVZKCkpCisgICAgICAgICAgICBzZXRZQWNjZWxlcmF0aW9u
SW5jbHVkaW5nR3Jhdml0eShhY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LT55KCkpOworICAg
ICAgICBpZiAoYWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eS0+Y2FuUHJvdmlkZVooKSkKKyAg
ICAgICAgICAgIHNldFpBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5KGFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHktPnooKSk7CisgICAgfQorCisgICAgaWYgKGNvbnN0IERldmljZU1vdGlv
bkRhdGE6OlJvdGF0aW9uUmF0ZSogcm90YXRpb25SYXRlID0gZGV2aWNlTW90aW9uRGF0YS0+cm90
YXRpb25SYXRlKCkpIHsKKyAgICAgICAgaWYgKHJvdGF0aW9uUmF0ZS0+Y2FuUHJvdmlkZUFscGhh
KCkpCisgICAgICAgICAgICBzZXRBbHBoYVJvdGF0aW9uUmF0ZShyb3RhdGlvblJhdGUtPmFscGhh
KCkpOworICAgICAgICBpZiAocm90YXRpb25SYXRlLT5jYW5Qcm92aWRlQmV0YSgpKQorICAgICAg
ICAgICAgc2V0QmV0YVJvdGF0aW9uUmF0ZShyb3RhdGlvblJhdGUtPmJldGEoKSk7CisgICAgICAg
IGlmIChyb3RhdGlvblJhdGUtPmNhblByb3ZpZGVHYW1tYSgpKQorICAgICAgICAgICAgc2V0R2Ft
bWFSb3RhdGlvblJhdGUocm90YXRpb25SYXRlLT5nYW1tYSgpKTsKKyAgICB9CisKKyAgICBpZiAo
ZGV2aWNlTW90aW9uRGF0YS0+Y2FuUHJvdmlkZUludGVydmFsKCkpCisgICAgICAgIHNldEludGVy
dmFsKGRldmljZU1vdGlvbkRhdGEtPmludGVydmFsKCkpOworfQorCitXZWJEZXZpY2VNb3Rpb25E
YXRhJiBXZWJEZXZpY2VNb3Rpb25EYXRhOjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxEZXZp
Y2VNb3Rpb25EYXRhPiYgZGV2aWNlTW90aW9uRGF0YSkKK3sKKyAgICByZXR1cm4gKnRoaXMgPSBX
ZWJEZXZpY2VNb3Rpb25EYXRhKGRldmljZU1vdGlvbkRhdGEpOworfQorCitXZWJEZXZpY2VNb3Rp
b25EYXRhOjpvcGVyYXRvciBQYXNzUmVmUHRyPERldmljZU1vdGlvbkRhdGE+KCkgY29uc3QKK3sK
KyAgICBSZWZQdHI8RGV2aWNlTW90aW9uRGF0YTo6QWNjZWxlcmF0aW9uPiBhY2NlbGVyYXRpb247
CisgICAgaWYgKG1fY2FuUHJvdmlkZVhBY2NlbGVyYXRpb24gfHwgbV9jYW5Qcm92aWRlWUFjY2Vs
ZXJhdGlvbiB8fCBtX2NhblByb3ZpZGVaQWNjZWxlcmF0aW9uKSB7CisgICAgICAgIGFjY2VsZXJh
dGlvbiA9IERldmljZU1vdGlvbkRhdGE6OkFjY2VsZXJhdGlvbjo6Y3JlYXRlKG1fY2FuUHJvdmlk
ZVhBY2NlbGVyYXRpb24sIG1feEFjY2VsZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYW5Qcm92aWRlWUFjY2Vs
ZXJhdGlvbiwgbV95QWNjZWxlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NhblByb3ZpZGVaQWNjZWxlcmF0aW9u
LCBtX3pBY2NlbGVyYXRpb24pOworICAgIH0KKworICAgIFJlZlB0cjxEZXZpY2VNb3Rpb25EYXRh
OjpBY2NlbGVyYXRpb24+IGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHk7CisgICAgaWYgKG1f
Y2FuUHJvdmlkZVhBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5IHx8IG1fY2FuUHJvdmlkZVlB
Y2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5IHx8IG1fY2FuUHJvdmlkZVpBY2NlbGVyYXRpb25J
bmNsdWRpbmdHcmF2aXR5KSB7CisgICAgICAgIGFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkg
PSBEZXZpY2VNb3Rpb25EYXRhOjpBY2NlbGVyYXRpb246OmNyZWF0ZShtX2NhblByb3ZpZGVYQWNj
ZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0eSwgbV94QWNjZWxlcmF0aW9uSW5jbHVkaW5nR3Jhdml0
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fY2FuUHJvdmlkZVlBY2NlbGVyYXRpb25JbmNsdWRp
bmdHcmF2aXR5LCBtX3lBY2NlbGVyYXRpb25JbmNsdWRpbmdHcmF2aXR5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9jYW5Qcm92aWRlWkFjY2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHksIG1fekFj
Y2VsZXJhdGlvbkluY2x1ZGluZ0dyYXZpdHkpOworICAgIH0KKworICAgIFJlZlB0cjxEZXZpY2VN
b3Rpb25EYXRhOjpSb3RhdGlvblJhdGU+IHJvdGF0aW9uUmF0ZTsKKyAgICBpZiAobV9jYW5Qcm92
aWRlQWxwaGFSb3RhdGlvblJhdGUgfHwgbV9jYW5Qcm92aWRlQmV0YVJvdGF0aW9uUmF0ZSB8fCBt
X2NhblByb3ZpZGVHYW1tYVJvdGF0aW9uUmF0ZSkgeworICAgICAgICByb3RhdGlvblJhdGUgPSBE
ZXZpY2VNb3Rpb25EYXRhOjpSb3RhdGlvblJhdGU6OmNyZWF0ZShtX2NhblByb3ZpZGVBbHBoYVJv
dGF0aW9uUmF0ZSwgbV9hbHBoYVJvdGF0aW9uUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jYW5Qcm92aWRlQmV0YVJv
dGF0aW9uUmF0ZSwgbV9iZXRhUm90YXRpb25SYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2NhblByb3ZpZGVHYW1tYVJv
dGF0aW9uUmF0ZSwgbV9nYW1tYVJvdGF0aW9uUmF0ZSk7CisgICAgfQorCisgICAgcmV0dXJuIERl
dmljZU1vdGlvbkRhdGE6OmNyZWF0ZShhY2NlbGVyYXRpb24uZ2V0KCksIGFjY2VsZXJhdGlvbklu
Y2x1ZGluZ0dyYXZpdHkuZ2V0KCksIHJvdGF0aW9uUmF0ZS5nZXQoKSwgbV9jYW5Qcm92aWRlSW50
ZXJ2YWwsIG1faW50ZXJ2YWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNTk5YzY1ZTBjM2FkNzhiZGQzMzNiM2Q5ZDA1ZjBh
MzNiY2E1YzZiOS4uYzgxYzYyNmU1YzI4MjA5ZjhhZTE5NmZhMzIzNTg4YzZjZGFjZmViYiAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJDU1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2lu
Y2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUgIkRldmljZU1vdGlvbkNsaWVudFByb3h5LmgiCiAj
aW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTE4Niw5ICsxODcsNiBAQCBz
dGF0aWMgY29uc3QgUG9wdXBDb250YWluZXJTZXR0aW5ncyBhdXRvRmlsbFBvcHVwU2V0dGluZ3Mg
PSB7CiAKIFdlYlZpZXcqIFdlYlZpZXc6OmNyZWF0ZShXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdl
YkRldlRvb2xzQWdlbnRDbGllbnQqIGRldlRvb2xzQ2xpZW50KQogewotICAgIC8vIEtlZXAgcnVu
dGltZSBmbGFnIGZvciBkZXZpY2UgbW90aW9uIHR1cm5lZCBvZmYgdW50aWwgaXQncyBpbXBsZW1l
bnRlZC4KLSAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZURldmljZU1vdGlvbihmYWxzZSk7
Ci0KICAgICAvLyBQYXNzIHRoZSBXZWJWaWV3SW1wbCdzIHNlbGYtcmVmZXJlbmNlIHRvIHRoZSBj
YWxsZXIuCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJWaWV3SW1wbChjbGllbnQsIGRldlRv
b2xzQ2xpZW50KSkubGVha1JlZigpOwogfQpAQCAtMjc4LDYgKzI3Niw3IEBAIFdlYlZpZXdJbXBs
OjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQsIFdlYkRldlRvb2xzQWdlbnRDbGll
bnQqIGRldlRvb2xzCiAgICAgLCBtX3NwZWVjaElucHV0Q2xpZW50KGNsaWVudCkKICNlbmRpZgog
ICAgICwgbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5KG5ldyBEZXZpY2VPcmllbnRhdGlv
bkNsaWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+ZGV2aWNlT3JpZW50YXRpb25DbGllbnQoKSA6
IDApKQorICAgICwgbV9kZXZpY2VNb3Rpb25DbGllbnRQcm94eShuZXcgRGV2aWNlTW90aW9uQ2xp
ZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5kZXZpY2VNb3Rpb25DbGllbnQoKSA6IDApKQogewog
ICAgIC8vIFdlYktpdC93aW4vV2ViVmlldy5jcHAgZG9lcyB0aGUgc2FtZSB0aGluZywgZXhjZXB0
IHRoZXkgY2FsbCB0aGUKICAgICAvLyBLSlMgc3BlY2lmaWMgd3JhcHBlciBhcm91bmQgdGhpcyBt
ZXRob2QuIFdlIG5lZWQgdG8gaGF2ZSB0aHJlYWRpbmcKQEAgLTMwMSw2ICszMDAsNyBAQCBXZWJW
aWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50LCBXZWJEZXZUb29sc0Fn
ZW50Q2xpZW50KiBkZXZUb29scwogICAgIHBhZ2VDbGllbnRzLnNwZWVjaElucHV0Q2xpZW50ID0g
Jm1fc3BlZWNoSW5wdXRDbGllbnQ7CiAjZW5kaWYKICAgICBwYWdlQ2xpZW50cy5kZXZpY2VPcmll
bnRhdGlvbkNsaWVudCA9IG1fZGV2aWNlT3JpZW50YXRpb25DbGllbnRQcm94eS5nZXQoKTsKKyAg
ICBwYWdlQ2xpZW50cy5kZXZpY2VNb3Rpb25DbGllbnQgPSBtX2RldmljZU1vdGlvbkNsaWVudFBy
b3h5LmdldCgpOwogCiAgICAgbV9wYWdlLnNldChuZXcgUGFnZShwYWdlQ2xpZW50cykpOwogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggZTUxZGY0ZDk4ZTNkOGUyYjYxMTI1NTAzOGYw
OGM2MWZlNDJjNzg3OC4uYjY0ODE1MmRhY2Q1MzY2ZmFiNjE5MjkyM2FlMTc3OWE0OWViOWVkYSAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtNzIsNiArNzIsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIEF1dG9jb21wbGV0ZVBvcHVwTWVudUNsaWVudDsKIGNsYXNzIEF1dG9G
aWxsUG9wdXBNZW51Q2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnRJbXBsOworY2xhc3Mg
RGV2aWNlTW90aW9uQ2xpZW50UHJveHk7CiBjbGFzcyBEZXZpY2VPcmllbnRhdGlvbkNsaWVudFBy
b3h5OwogY2xhc3MgRHJhZ1Njcm9sbFRpbWVyOwogY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVj
dDsKQEAgLTU0NCw2ICs1NDUsNyBAQCBwcml2YXRlOgogICAgIC8vIGVhcmx5LiBUaGlzIG1lbWJl
ciBob2xkcyBvbiB0byB0aGUgR0MzRCBpbiB0aGlzIGNhc2UuCiAgICAgT3duUHRyPFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEPiBtX3RlbXBvcmFyeU9uc2NyZWVuR3JhcGhpY3NDb250ZXh0M0Q7
CiAgICAgT3duUHRyPERldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHk+IG1fZGV2aWNlT3JpZW50
YXRpb25DbGllbnRQcm94eTsKKyAgICBPd25QdHI8RGV2aWNlTW90aW9uQ2xpZW50UHJveHk+IG1f
ZGV2aWNlTW90aW9uQ2xpZW50UHJveHk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>