<?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>91196</bug_id>
          
          <creation_ts>2012-07-13 00:26:29 -0700</creation_ts>
          <short_desc>Web Inspector: refactor InspectorController::connectFrontend() to accept InspectorFrontendChannel.</short_desc>
          <delta_ts>2012-07-30 20:26:41 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>90675</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Vivek Galatage">vivekgalatage</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mifenton</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rakuco</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vivekgalatage</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>668674</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-13 00:26:29 -0700</bug_when>
    <thetext>We need to refactor InspectorController::connectFrontend() so that it could receive the InspectorFrontendChannel* and use it when creating the front-end. That way, we would be able to plug custom channels into it and bypass platform-specific InspectorClient. As a result, testing harness can inject its own transport channel there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668677</commentid>
    <comment_count>1</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-13 00:27:41 -0700</bug_when>
    <thetext>As a result of the refactoring, InspectorClient should stop being inherited from InspectorFrontendChannel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668966</commentid>
    <comment_count>2</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-13 06:39:37 -0700</bug_when>
    <thetext>For this refactoring, as now we are planning to remove InspectorFrontendChannel from being inherited by InspectorClient, all the clients must be refactored as well. Here I propose the following approaches:

Approach 1:
-----------
All the clients will implement InspectorClient now without InspectorFrontendChannel. As a result of this, all of the clients(e.g. InspectorClientQt) needs to implement InspectorFrontendChannel separately. Now in this approach, the required objects within InspectorFrontendChannel::sendMessageToFrontend(), can be made members of the class who is implementing InspectorFrontendChannel lets say InspectorFrontendChannelQt. In turn, InspectorClientQt can own this new channel object InspectorFrontendChannelQt(InspectorClientQt::m_frontendChannel). And provide method within InspectorClient to return this channel object as: InspectorFrontendChannel* InspectorClient::frontendChannel()

class InspectorClientQt : public InspectorClient {
   ...
private:
    InspectorFrontendChannelQt* m_frontendChannel;
};

class InspectorFrontendChannelQt : public InspectorFrontendChannel {
public:
    InspectorFrontendChannelQt(QWebPage*, InspectorServerRequestHandlerQt* m_remoteFrontEndChannel);
    bool sendMessageToFrontend(const String&amp; message);

private:
    QWebPage* m_frontendWebPage;
    InspectorServerRequestHandlerQt* m_remoteFrontEndChannel;
};


Approach 2:
-----------
This would be same as above except that the InspectorFrontendChannelQt can be declared as friend of InspectorClientQt. The class InspectorFrontendChannelQt can have just the reference to InspectorClientQt. So while we migrate the sendMessageToFrontend() to this new class InspectorFrontendChannelQt, we can access all the objects owned by InspectorClientQt.

class InspectorClientQt : public InspectorClient {
   ...
private:
    InspectorFrontendChannelQt* m_frontendChannel;
    friend class InspectorFrontendChannelQt;
};

class InspectorFrontendChannelQt : public InspectorFrontendChannel {
public:
    InspectorFrontendChannelQt(InspectorClientQt* m_inspectorClient);
    bool sendMessageToFrontend(const String&amp; message);

private:
    InspectorClientQt* m_inspectorClient;
};


Please let me know your comments/suggestion on these approaches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669039</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-13 08:05:23 -0700</bug_when>
    <thetext>I was more thinking that:

class InspectorClientQt : public InspectorClient,
                        : public InspectorFrontendChannel {
}

and would pass this into the connectFrontend in order to minimize the amount of changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669138</commentid>
    <comment_count>4</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-13 09:45:32 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I was more thinking that:
&gt; 
&gt; class InspectorClientQt : public InspectorClient,
&gt;                         : public InspectorFrontendChannel {
&gt; }
&gt; 
&gt; and would pass this into the connectFrontend in order to minimize the amount of changes.

Thank you Pavel. I was thinking of the same earlier to minimize the changes. But again I thought, these approaches might separate the classes logically as well. Hence proposed these solutions.

Sure, I will go ahead with these changes as per your proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669247</commentid>
    <comment_count>5</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-13 11:03:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; I was more thinking that:
&gt; &gt; 
&gt; &gt; class InspectorClientQt : public InspectorClient,
&gt; &gt;                         : public InspectorFrontendChannel {
&gt; &gt; }
&gt; &gt; 
&gt; &gt; and would pass this into the connectFrontend in order to minimize the amount of changes.
&gt; 
&gt; Thank you Pavel. I was thinking of the same earlier to minimize the changes. But again I thought, these approaches might separate the classes logically as well. Hence proposed these solutions.
&gt; 
&gt; Sure, I will go ahead with these changes as per your proposal.

We need to also introduce method like frontendChannel() in InspectorClient so as to refer this from InspectorController:

class InspectorClient {
public:
    virtual InspectorFrontendChannel* frontendChannel() const = 0;
}

The method would typically return &quot;this&quot; from the implementation(e.g. InspectorClientQt)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669351</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-13 12:43:58 -0700</bug_when>
    <thetext>&gt; We need to also introduce method like frontendChannel() in InspectorClient so as to refer this from InspectorController:
&gt; 
&gt; class InspectorClient {
&gt; public:
&gt;     virtual InspectorFrontendChannel* frontendChannel() const = 0;
&gt; }
&gt; 
&gt; The method would typically return &quot;this&quot; from the implementation(e.g. InspectorClientQt)

That would be wrong. The point of this refactoring is to separate the channel from the client. Your testing harness will be setting the generic channel, but the clients will be port-specific.

connectFrontend will receive frontend channel instance as a parameter and will store a raw pointer to it in the InspectorController. disconnectFrontend will clear that internal pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670099</commentid>
    <comment_count>7</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-15 23:03:13 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; We need to also introduce method like frontendChannel() in InspectorClient so as to refer this from InspectorController:
&gt; &gt; 
&gt; &gt; class InspectorClient {
&gt; &gt; public:
&gt; &gt;     virtual InspectorFrontendChannel* frontendChannel() const = 0;
&gt; &gt; }
&gt; &gt; 
&gt; &gt; The method would typically return &quot;this&quot; from the implementation(e.g. InspectorClientQt)
&gt; 
&gt; That would be wrong. The point of this refactoring is to separate the channel from the client. Your testing harness will be setting the generic channel, but the clients will be port-specific.
&gt; 
&gt; connectFrontend will receive frontend channel instance as a parameter and will store a raw pointer to it in the InspectorController. disconnectFrontend will clear that internal pointer.

The method InspectorController::connectFrontend() is mostly called by InspectorController::show() method except WebInspector::remoteFrontendConnected(). So in order for this refactoring, we need to call the connectFrontend(frontendChannel) before every call to InspectorController::show(). But this would bring a lot of changes and also might be erroneous. Hence added the method frontendChannel() in InspectorClient to give the frontendChannel*. This would convey that the InspectorFrontendChannel is owned by InspectorClient object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670162</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-16 00:38:50 -0700</bug_when>
    <thetext>&gt; The method InspectorController::connectFrontend() is mostly called by InspectorController::show() method except WebInspector::remoteFrontendConnected(). So in order for this refactoring, we need to call the connectFrontend(frontendChannel) before every call to InspectorController::show(). But this would bring a lot of changes and also might be erroneous. Hence added the method frontendChannel() in InspectorClient to give the frontendChannel*. This would convey that the InspectorFrontendChannel is owned by InspectorClient object.

I don&apos;t think an API that receives InspectorFrontendChannel on connection and returns it at any time makes sense. What if we change the controller code to:

InspectorFrontencChannel* channel = m_inspectorClient-&gt;openInspectorFrontend(this);
connectFrontend(channel);

This would mean that controller can use its client to create front-ends and upon front-end creation it receives its channel. Then you make all InspectorClientXX implementations inherit from InspectorClient and InspectorFrontendChannel and you return &quot;this&quot; in the openInspectorFrontend.

Note that chromium&apos;s openInspectorFrontend will return 0 which is Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670163</commentid>
    <comment_count>9</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-16 00:41:14 -0700</bug_when>
    <thetext>It sounds like there are more connectFrontend() calls btw:

http://code.google.com/p/chromium/source/search?q=connectFrontend%5C%28%5C%29&amp;origq=connectFrontend%5C%28%5C%29&amp;btnG=Search+Trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670179</commentid>
    <comment_count>10</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-16 01:03:56 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; The method InspectorController::connectFrontend() is mostly called by InspectorController::show() method except WebInspector::remoteFrontendConnected(). So in order for this refactoring, we need to call the connectFrontend(frontendChannel) before every call to InspectorController::show(). But this would bring a lot of changes and also might be erroneous. Hence added the method frontendChannel() in InspectorClient to give the frontendChannel*. This would convey that the InspectorFrontendChannel is owned by InspectorClient object.
&gt; 
&gt; I don&apos;t think an API that receives InspectorFrontendChannel on connection and returns it at any time makes sense. What if we change the controller code to:
&gt; 
&gt; InspectorFrontencChannel* channel = m_inspectorClient-&gt;openInspectorFrontend(this);
&gt; connectFrontend(channel);
&gt; 
&gt; This would mean that controller can use its client to create front-ends and upon front-end creation it receives its channel. Then you make all InspectorClientXX implementations inherit from InspectorClient and InspectorFrontendChannel and you return &quot;this&quot; in the openInspectorFrontend.
&gt; 
&gt; Note that chromium&apos;s openInspectorFrontend will return 0 which is Ok.

This sounds perfect. 

(In reply to comment #9)
&gt; It sounds like there are more connectFrontend() calls btw:
&gt; 
&gt; http://code.google.com/p/chromium/source/search?q=connectFrontend%5C%28%5C%29&amp;origq=connectFrontend%5C%28%5C%29&amp;btnG=Search+Trunk

Yes there are more number of calls but these are again from WorkerInspectorController. Also some of the port-specific calls I didn&apos;t mention earlier.

Are we targeting the WorkerInspectorController::connectFrontend method as well for refactoring?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670184</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-16 01:21:10 -0700</bug_when>
    <thetext>&gt; Are we targeting the WorkerInspectorController::connectFrontend method as well for refactoring?

We should target it for refactoring, but it should be done in a separate change if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670232</commentid>
    <comment_count>12</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-16 04:21:16 -0700</bug_when>
    <thetext>Looks like InspectorController::restoreInspectorStateFromCookie() method is being used only by chromium. This method has a call to connectFrontend. What do you think about this call?

I have declared a member m_inspectorFrontendChannel in InspectorController. This would be set to the pointer passed to connectFrontend method and will be cleared upon disconnect. So would passing this member m_inspectorFrontendChannel to the above place make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670239</commentid>
    <comment_count>13</comment_count>
      <attachid>152510</attachid>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-16 04:39:54 -0700</bug_when>
    <thetext>Created attachment 152510
Work in progress patch. Not ready for port specific changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670417</commentid>
    <comment_count>14</comment_count>
      <attachid>152510</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-16 09:53:07 -0700</bug_when>
    <thetext>Comment on attachment 152510
Work in progress patch. Not ready for port specific changes.

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

So far looks good!

&gt; Source/WebCore/inspector/InspectorController.cpp:263
&gt; +        m_inspectorFrontendChannel = m_inspectorClient-&gt;openInspectorFrontend(this);

The call below will do this for you, store it in a temporary variable for now.

&gt; Source/WebCore/inspector/InspectorController.cpp:279
&gt; +    connectFrontend(m_inspectorFrontendChannel);

I would rename and extend &quot;restoreInspectorStateFromCookie&quot; to

InspectorController::reconnectFrontend(InspectorFrontendChannel* channel, const String&amp; inspectorStateCookie)

&gt; Source/WebCore/loader/EmptyClients.h:565
&gt; +class EmptyInspectorClient : public InspectorClient, public InspectorFrontendChannel {

This should not change, you should instead remove sendMessageToFrontend from it.

&gt; Source/WebKit/win/WebCoreSupport/WebInspectorClient.cpp:174
&gt; +        return 0;

We should make sure call site is ready to accept 0 (it should not crash).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670598</commentid>
    <comment_count>15</comment_count>
      <attachid>152598</attachid>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-16 13:09:39 -0700</bug_when>
    <thetext>Created attachment 152598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670608</commentid>
    <comment_count>16</comment_count>
      <attachid>152598</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-16 13:26:23 -0700</bug_when>
    <thetext>Comment on attachment 152598
Patch

Attachment 152598 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13265050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670648</commentid>
    <comment_count>17</comment_count>
      <attachid>152598</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-16 14:10:43 -0700</bug_when>
    <thetext>Comment on attachment 152598
Patch

Attachment 152598 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13265068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670969</commentid>
    <comment_count>18</comment_count>
      <attachid>152693</attachid>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-16 21:46:15 -0700</bug_when>
    <thetext>Created attachment 152693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670982</commentid>
    <comment_count>19</comment_count>
      <attachid>152693</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-16 22:17:17 -0700</bug_when>
    <thetext>Comment on attachment 152693
Patch

Attachment 152693 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13278046</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671005</commentid>
    <comment_count>20</comment_count>
      <attachid>152699</attachid>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-16 23:00:59 -0700</bug_when>
    <thetext>Created attachment 152699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671014</commentid>
    <comment_count>21</comment_count>
      <attachid>152699</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-16 23:24:14 -0700</bug_when>
    <thetext>Comment on attachment 152699
Patch

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

I only have two small comments, otherwise it looks good!

&gt; Source/WebCore/inspector/InspectorController.cpp:216
&gt; +    m_inspectorFrontendChannel = frontendChannel;

You no longer need to store it locally, just create the front-end off the channel that is passed!

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:193
&gt; +    WebInspectorClient* inspectorClient() const { return m_inspectorClient; };

Instead of exposing it, I would make WebInspector constructor receive the InspectorFrontendChannel* in the constructor to minimize the API surface.

&gt; Source/WebKit/blackberry/Api/WebPage.cpp:493
&gt; +    m_inspectorClient = new WebCore::InspectorClientBlackBerry(this);

It is using namespace WebCore at the top, no need for WebCore.

&gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:392
&gt; +    inspectorController()-&gt;connectFrontend(this);

FYI: You should have passed InspectorClientImpl instance here, but I actually think this should work since the agent has greater lifespan.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671035</commentid>
    <comment_count>22</comment_count>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-17 00:02:16 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 152699 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=152699&amp;action=review
&gt; 
&gt; I only have two small comments, otherwise it looks good!
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorController.cpp:216
&gt; &gt; +    m_inspectorFrontendChannel = frontendChannel;
&gt; 
&gt; You no longer need to store it locally, just create the front-end off the channel that is passed!
&gt; 

Sure. Will do.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.h:193
&gt; &gt; +    WebInspectorClient* inspectorClient() const { return m_inspectorClient; };
&gt; 
&gt; Instead of exposing it, I would make WebInspector constructor receive the InspectorFrontendChannel* in the constructor to minimize the API surface.
&gt; 

Will do. 

Now that WebInspector will have a member to the channel, this must be set to null in WebInspector::destoryInspectorPage(). Is this correct?

&gt; &gt; Source/WebKit/blackberry/Api/WebPage.cpp:493
&gt; &gt; +    m_inspectorClient = new WebCore::InspectorClientBlackBerry(this);
&gt; 
&gt; It is using namespace WebCore at the top, no need for WebCore.
&gt; 

Will do.

&gt; &gt; Source/WebKit/chromium/src/WebDevToolsAgentImpl.cpp:392
&gt; &gt; +    inspectorController()-&gt;connectFrontend(this);
&gt; 
&gt; FYI: You should have passed InspectorClientImpl instance here, but I actually think this should work since the agent has greater lifespan.

I am not quite sure, if I understand this correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671104</commentid>
    <comment_count>23</comment_count>
      <attachid>152721</attachid>
    <who name="Vivek Galatage">vivekgalatage</who>
    <bug_when>2012-07-17 02:30:29 -0700</bug_when>
    <thetext>Created attachment 152721
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671185</commentid>
    <comment_count>24</comment_count>
      <attachid>152721</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-17 05:12:05 -0700</bug_when>
    <thetext>Comment on attachment 152721
Patch

Clearing flags on attachment: 152721

Committed r122838: &lt;http://trac.webkit.org/changeset/122838&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671186</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-17 05:12:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152510</attachid>
            <date>2012-07-16 04:39:54 -0700</date>
            <delta_ts>2012-07-16 13:09:22 -0700</delta_ts>
            <desc>Work in progress patch. Not ready for port specific changes.</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>13703</size>
            <attacher name="Vivek Galatage">vivekgalatage</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaCAgKHJl
dmlzaW9uIDEyMjcwMykNCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xp
ZW50LmggICh3b3JraW5nIGNvcHkpDQpAQCAtMjcsMjMgKzI3LDIzIEBADQogI2lmbmRlZiBJbnNw
ZWN0b3JDbGllbnRfaA0KICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50X2gNCg0KLSNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCINCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGVDbGll
bnQuaCINCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4NCg0KIG5hbWVzcGFjZSBXZWJDb3JlIHsN
Cg0KIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7DQorY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsOw0KIGNsYXNzIEZyYW1lOw0KIGNsYXNzIFBhZ2U7DQoNCi1jbGFzcyBJbnNwZWN0b3JD
bGllbnQgOiBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLCBwdWJsaWMgSW5zcGVjdG9y
U3RhdGVDbGllbnQgew0KK2NsYXNzIEluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBJbnNwZWN0b3JT
dGF0ZUNsaWVudCB7DQogcHVibGljOg0KICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDbGllbnQoKSB7
IH0NCg0KICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgPSAwOw0KDQotICAg
IHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciop
ID0gMDsNCisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0
b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgPSAwOw0KICAgICB2aXJ0dWFsIHZvaWQg
Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpID0gMDsNCiAgICAgdmlydHVhbCB2b2lkIGJyaW5nRnJv
bnRlbmRUb0Zyb250KCkgPSAwOw0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1l
KEZyYW1lKikgeyB9DQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwICAgIChyZXZpc2lvbiAxMjI3MDMpDQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwICAgICh3b3JraW5nIGNvcHkp
DQpAQCAtMjA4LDkgKzIwOCwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFy
V2luZG93DQogICAgICAgICBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50LT53aW5kb3dPYmplY3RD
bGVhcmVkKCk7DQogfQ0KDQotdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQoKQ0KK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsKQ0KIHsNCi0gICAgbV9pbnNwZWN0b3JG
cm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVuZChtX2luc3BlY3RvckNsaWVu
dCkpOw0KKyAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5lbDsN
CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVu
ZChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkpOw0KICAgICAvLyBXZSBjYW4gcmVjb25uZWN0
IHRvIGV4aXN0aW5nIGZyb250LWVuZCAtPiB1bm11dGUgc3RhdGUuDQogICAgIG1fc3RhdGUtPnVu
bXV0ZSgpOw0KDQpAQCAtMjIzLDcgKzIyNCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW4NCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcm9udGVuZENy
ZWF0ZWQoKTsNCg0KICAgICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOw0KLSAgICBtX2luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShtX2luc3BlY3RvckNsaWVudCk7DQorICAgIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIg
PSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKTsNCg0KICAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0Y2hlciA9
IG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7DQogICAgIGZvciAoQWdlbnRzOjpp
dGVyYXRvciBpdCA9IG1fYWdlbnRzLmJlZ2luKCk7IGl0ICE9IG1fYWdlbnRzLmVuZCgpOyArK2l0
KQ0KQEAgLTI1OSw4ICsyNjAsOCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNob3coKQ0K
ICAgICBpZiAobV9pbnNwZWN0b3JGcm9udGVuZCkNCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50
LT5icmluZ0Zyb250ZW5kVG9Gcm9udCgpOw0KICAgICBlbHNlIHsNCi0gICAgICAgIG1faW5zcGVj
dG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcyk7DQotICAgICAgICBjb25uZWN0
RnJvbnRlbmQoKTsNCisgICAgICAgIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsID0gbV9pbnNw
ZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKTsNCisgICAgICAgIGNvbm5l
Y3RGcm9udGVuZChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCk7DQogICAgIH0NCiB9DQoNCkBA
IC0yNzUsNyArMjc2LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpDQogdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlSW5zcGVjdG9yU3RhdGVGcm9tQ29va2llKGNv
bnN0IFN0cmluZyYgaW5zcGVjdG9yU3RhdGVDb29raWUpDQogew0KICAgICBBU1NFUlQoIW1faW5z
cGVjdG9yRnJvbnRlbmQpOw0KLSAgICBjb25uZWN0RnJvbnRlbmQoKTsNCisgICAgY29ubmVjdEZy
b250ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKTsNCiAgICAgbV9zdGF0ZS0+bG9hZEZy
b21Db29raWUoaW5zcGVjdG9yU3RhdGVDb29raWUpOw0KDQogICAgIGZvciAoQWdlbnRzOjppdGVy
YXRvciBpdCA9IG1fYWdlbnRzLmJlZ2luKCk7IGl0ICE9IG1fYWdlbnRzLmVuZCgpOyArK2l0KQ0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NCi0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oICAgICAgKHJldmlzaW9uIDEyMjcwMykNCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oICAgICAgKHdvcmtpbmcgY29weSkNCkBAIC01MCw2ICs1MCw3
IEBAIGNsYXNzIEluc3BlY3RvckNsaWVudDsNCiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsNCiBj
bGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ow0KIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOw0K
K2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsNCiBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDsNCiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7DQogY2xhc3MgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDsNCkBAIC04NSw3ICs4Niw3IEBAIHB1YmxpYzoNCiAgICAgdm9pZCBkaXNwYXRj
aE1lc3NhZ2VGcm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsNCg0KICAgICBib29s
IGhhc0Zyb250ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZDsgfQ0KLSAg
ICB2b2lkIGNvbm5lY3RGcm9udGVuZCgpOw0KKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwqKTsNCiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoKTsN
CiAgICAgdm9pZCByZXN0b3JlSW5zcGVjdG9yU3RhdGVGcm9tQ29va2llKGNvbnN0IFN0cmluZyYg
aW5zcGVjdG9yQ29va2llKTsNCiAgICAgdm9pZCBzZXRQcm9jZXNzSWQobG9uZyk7DQpAQCAtMTM0
LDYgKzEzNSw3IEBAIHByaXZhdGU6DQogICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZD4gbV9p
bnNwZWN0b3JGcm9udGVuZDsNCiAgICAgUGFnZSogbV9wYWdlOw0KICAgICBJbnNwZWN0b3JDbGll
bnQqIG1faW5zcGVjdG9yQ2xpZW50Ow0KKyAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG1f
aW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOw0KICAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8SW5z
cGVjdG9yQmFzZUFnZW50SW50ZXJmYWNlPiA+IEFnZW50czsNCiAgICAgQWdlbnRzIG1fYWdlbnRz
Ow0KIH07DQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oICAgICAgICAo
cmV2aXNpb24gMTIyNzAzKQ0KKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aCAgICAgICAgKHdvcmtpbmcgY29weSkNCkBAIC00MCw2ICs0MCw3IEBADQogI2luY2x1ZGUgIkZv
Y3VzRGlyZWN0aW9uLmgiDQogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiDQogI2luY2x1
ZGUgIkluc3BlY3RvckNsaWVudC5oIg0KKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCINCiAjaW5jbHVkZSAiUGFnZS5oIg0KICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiDQoN
CkBAIC01NjEsNyArNTYyLDcgQEAgcHVibGljOg0KIH07DQogI2VuZGlmIC8vIEVOQUJMRShEUkFH
X1NVUFBPUlQpDQoNCi1jbGFzcyBFbXB0eUluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBJbnNwZWN0
b3JDbGllbnQgew0KK2NsYXNzIEVtcHR5SW5zcGVjdG9yQ2xpZW50IDogcHVibGljIEluc3BlY3Rv
ckNsaWVudCwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7DQogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEVtcHR5SW5zcGVjdG9yQ2xpZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7DQogcHVibGljOg0KICAgICBFbXB0eUluc3BlY3RvckNsaWVudCgpIHsgfQ0KQEAgLTU2OSw3
ICs1NzAsNyBAQCBwdWJsaWM6DQoNCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3ll
ZCgpIHsgfQ0KDQotICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciopIHsgfQ0KKyAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSB7IHJldHVybiAw
OyB9DQogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgeyB9DQogICAg
IHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIHsgfQ0KDQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwICAgICAocmV2aXNpb24gMTIyNzAzKQ0KKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cCAgICAgKHdvcmtpbmcgY29weSkNCkBAIC00MywxMCArNDMsMTEgQEAgdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6Omluc3BlY3RvckRlc3Rybw0KICAgICBkZWxldGUgdGhpczsNCiB9DQoNCi12b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRy
b2xsZXIqKQ0KK0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50Ojpv
cGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopDQogew0KICAgICBXZWJQ
YWdlKiBpbnNwZWN0b3JQYWdlID0gbV9wYWdlLT5pbnNwZWN0b3IoKS0+Y3JlYXRlSW5zcGVjdG9y
UGFnZSgpOw0KICAgICBBU1NFUlRfVU5VU0VEKGluc3BlY3RvclBhZ2UsIGluc3BlY3RvclBhZ2Up
Ow0KKyAgICByZXR1cm4gdGhpczsNCiB9DQoNCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xv
c2VJbnNwZWN0b3JGcm9udGVuZCgpDQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmgg
ICAgICAgKHJldmlzaW9uIDEyMjcwMykNCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oICAgICAgICh3b3JraW5nIGNvcHkpDQpA
QCAtMzEsNiArMzEsNyBAQA0KICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIg0KDQogI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yQ2xpZW50Lmg+DQorI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmg+DQoNCiBuYW1lc3BhY2UgV2ViQ29yZSB7DQogICAgIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsNCkBAIC00MSw3ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgew0KDQog
Y2xhc3MgV2ViUGFnZTsNCg0KLWNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnQsIHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7DQorY2xh
c3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwg
cHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCwgcHJpdmF0ZSBQYWdlT3Zl
cmxheTo6Q2xpZW50IHsNCiBwdWJsaWM6DQogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJQYWdl
KiBwYWdlKQ0KICAgICAgICAgOiBtX3BhZ2UocGFnZSkNCkBAIC01Miw3ICs1Myw3IEBAIHB1Ymxp
YzoNCiBwcml2YXRlOg0KICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgT1ZF
UlJJREU7DQoNCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyKikgT1ZFUlJJREU7DQorICAgIHZpcnR1YWwgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlciopIE9WRVJSSURFOw0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JG
cm9udGVuZCgpIE9WRVJSSURFOw0KICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJv
bnQoKSBPVkVSUklERTsNCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShXZWJD
b3JlOjpGcmFtZSopIE9WRVJSSURFOw0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwICAgICAocmV2aXNp
b24gMTIyNzAzKQ0KKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAgICAgICh3b3JraW5nIGNvcHkpDQpAQCAtODcsNyArODcsNyBAQCB2b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJvDQogICAgIGRlbGV0ZSB0aGlzOw0K
IH0NCg0KLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikNCitXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250
ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpDQogew0KICAgICBy
ZWdpc3RlcldpbmRvd0NsYXNzKCk7DQoNCkBAIC05NiwyMSArOTYsMjEgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcg0KICAgICAgICAgMCwgMCwgMCwgMCk7DQoNCiAg
ICAgaWYgKCFmcm9udGVuZEh3bmQpDQotICAgICAgICByZXR1cm47DQorICAgICAgICByZXR1cm4g
MDsNCg0KICAgICBDT01QdHI8V2ViVmlldz4gZnJvbnRlbmRXZWJWaWV3KEFkb3B0Q09NLCBXZWJW
aWV3OjpjcmVhdGVJbnN0YW5jZSgpKTsNCg0KICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmll
dy0+c2V0SG9zdFdpbmRvdygoT0xFX0hBTkRMRSkoVUxPTkc2NClmcm9udGVuZEh3bmQpKSkNCi0g
ICAgICAgIHJldHVybjsNCisgICAgICAgIHJldHVybiAwOw0KDQogICAgIFJFQ1QgcmVjdDsNCiAg
ICAgR2V0Q2xpZW50UmVjdChmcm9udGVuZEh3bmQsICZyZWN0KTsNCiAgICAgaWYgKEZBSUxFRChm
cm9udGVuZFdlYlZpZXctPmluaXRXaXRoRnJhbWUocmVjdCwgMCwgMCkpKQ0KLSAgICAgICAgcmV0
dXJuOw0KKyAgICAgICAgcmV0dXJuIDA7DQoNCiAgICAgQ09NUHRyPFdlYkluc3BlY3RvckRlbGVn
YXRlPiBkZWxlZ2F0ZShBZG9wdENPTSwgV2ViSW5zcGVjdG9yRGVsZWdhdGU6OmNyZWF0ZUluc3Rh
bmNlKCkpOw0KICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+c2V0VUlEZWxlZ2F0ZShk
ZWxlZ2F0ZS5nZXQoKSkpKQ0KLSAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIDA7DQoN
CiAgICAgLy8gS2VlcCBwcmVmZXJlbmNlcyBzZXBhcmF0ZSBmcm9tIHRoZSByZXN0IG9mIHRoZSBj
bGllbnQsIG1ha2luZyBzdXJlIHdlIGFyZSB1c2luZyBleHBlY3RlZCBwcmVmZXJlbmNlIHZhbHVl
cy4NCiAgICAgLy8gRklYTUU6IEl0J3MgY3JhenkgdGhhdCB3ZSBoYXZlIHRvIGRvIHRoaXMgc29u
ZyBhbmQgZGFuY2UgdG8gZW5kIHVwIHdpdGgNCkBAIC0xMjAsNjQgKzEyMCw2NSBAQCB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyDQogICAgIENPTVB0cjxXZWJQcmVmZXJl
bmNlcz4gdGVtcFByZWZlcmVuY2VzKEFkb3B0Q09NLCBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlSW5z
dGFuY2UoKSk7DQogICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXM+IGlQcmVmZXJlbmNlczsNCiAg
ICAgaWYgKEZBSUxFRCh0ZW1wUHJlZmVyZW5jZXMtPmluaXRXaXRoSWRlbnRpZmllcihCU3RyaW5n
KEwiV2ViSW5zcGVjdG9yUHJlZmVyZW5jZXMiKSwgJmlQcmVmZXJlbmNlcykpKQ0KLSAgICAgICAg
cmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIDA7DQogICAgIENPTVB0cjxXZWJQcmVmZXJlbmNlcz4g
cHJlZmVyZW5jZXMoUXVlcnksIGlQcmVmZXJlbmNlcyk7DQogICAgIGlmICghcHJlZmVyZW5jZXMp
DQotICAgICAgICByZXR1cm47DQorICAgICAgICByZXR1cm4gMDsNCiAgICAgaWYgKEZBSUxFRChw
cmVmZXJlbmNlcy0+c2V0QXV0b3NhdmVzKEZBTFNFKSkpDQotICAgICAgICByZXR1cm47DQorICAg
ICAgICByZXR1cm4gMDsNCiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0TG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5KFRSVUUpKSkNCi0gICAgICAgIHJldHVybjsNCisgICAgICAgIHJldHVy
biAwOw0KICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRBdXRob3JBbmRVc2VyU3R5bGVz
RW5hYmxlZChUUlVFKSkpDQotICAgICAgICByZXR1cm47DQorICAgICAgICByZXR1cm4gMDsNCiAg
ICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0QWxsb3dzQW5pbWF0ZWRJbWFnZXMoVFJVRSkp
KQ0KLSAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIDA7DQogICAgIGlmIChGQUlMRUQo
cHJlZmVyZW5jZXMtPnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShUUlVFKSkpDQotICAgICAg
ICByZXR1cm47DQorICAgICAgICByZXR1cm4gMDsNCiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNl
cy0+c2V0UGx1Z0luc0VuYWJsZWQoRkFMU0UpKSkNCi0gICAgICAgIHJldHVybjsNCisgICAgICAg
IHJldHVybiAwOw0KICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRKYXZhRW5hYmxlZChG
QUxTRSkpKQ0KLSAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIDA7DQogICAgIGlmIChG
QUlMRUQocHJlZmVyZW5jZXMtPnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChGQUxTRSkpKQ0KLSAg
ICAgICAgcmV0dXJuOw0KKyAgICAgICAgcmV0dXJuIDA7DQogICAgIGlmIChGQUlMRUQocHJlZmVy
ZW5jZXMtPnNldFRhYnNUb0xpbmtzKEZBTFNFKSkpDQotICAgICAgICByZXR1cm47DQorICAgICAg
ICByZXR1cm4gMDsNCiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0TWluaW11bUZvbnRT
aXplKDApKSkNCi0gICAgICAgIHJldHVybjsNCisgICAgICAgIHJldHVybiAwOw0KICAgICBpZiAo
RkFJTEVEKHByZWZlcmVuY2VzLT5zZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKDkpKSkNCi0gICAg
ICAgIHJldHVybjsNCisgICAgICAgIHJldHVybiAwOw0KICAgICBpZiAoRkFJTEVEKHByZWZlcmVu
Y2VzLT5zZXRGaXhlZEZvbnRGYW1pbHkoQlN0cmluZyhMIkNvdXJpZXIgTmV3IikpKSkNCi0gICAg
ICAgIHJldHVybjsNCisgICAgICAgIHJldHVybiAwOw0KICAgICBpZiAoRkFJTEVEKHByZWZlcmVu
Y2VzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZSgxMykpKQ0KLSAgICAgICAgcmV0dXJuOw0KKyAg
ICAgICAgcmV0dXJuIDA7DQoNCiAgICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZpZXctPnNldFBy
ZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKSkpDQotICAgICAgICByZXR1cm47DQorICAgICAg
ICByZXR1cm4gMDsNCg0KICAgICBmcm9udGVuZFdlYlZpZXctPnNldFByb2hpYml0c01haW5GcmFt
ZVNjcm9sbGluZyhUUlVFKTsNCg0KICAgICBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQ7DQogICAg
IGlmIChGQUlMRUQoZnJvbnRlbmRXZWJWaWV3LT52aWV3V2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8
T0xFX0hBTkRMRSo+KCZmcm9udGVuZFdlYlZpZXdId25kKSkpKQ0KLSAgICAgICAgcmV0dXJuOw0K
KyAgICAgICAgcmV0dXJuIDA7DQoNCiAgICAgQ09NUHRyPFdlYk11dGFibGVVUkxSZXF1ZXN0PiBy
ZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UoKSk7
DQoNCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodG1sVVJMUmVmKEFkb3B0Q0YsIENGQnVuZGxl
Q29weVJlc291cmNlVVJMKGdldFdlYktpdEJ1bmRsZSgpLCBDRlNUUigiaW5zcGVjdG9yIiksIENG
U1RSKCJodG1sIiksIENGU1RSKCJpbnNwZWN0b3IiKSkpOw0KICAgICBpZiAoIWh0bWxVUkxSZWYp
DQotICAgICAgICByZXR1cm47DQorICAgICAgICByZXR1cm4gMDsNCg0KICAgICBDRlN0cmluZ1Jl
ZiB1cmxTdHJpbmdSZWYgPSA6OkNGVVJMR2V0U3RyaW5nKGh0bWxVUkxSZWYuZ2V0KCkpOw0KICAg
ICBpZiAoRkFJTEVEKHJlcXVlc3QtPmluaXRXaXRoVVJMKEJTdHJpbmcodXJsU3RyaW5nUmVmKSwg
V2ViVVJMUmVxdWVzdFVzZVByb3RvY29sQ2FjaGVQb2xpY3ksIDYwKSkpDQotICAgICAgICByZXR1
cm47DQorICAgICAgICByZXR1cm4gMDsNCg0KICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmll
dy0+dG9wTGV2ZWxGcmFtZSgpLT5sb2FkUmVxdWVzdChyZXF1ZXN0LmdldCgpKSkpDQotICAgICAg
ICByZXR1cm47DQorICAgICAgICByZXR1cm4gMDsNCg0KICAgICBtX2Zyb250ZW5kUGFnZSA9IGNv
cmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKTsNCiAgICAgT3duUHRyPFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50PiBmcm9udGVuZENsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIGZy
b250ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBj
cmVhdGVGcm9udGVuZFNldHRpbmdzKCkpKTsNCiAgICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250
ZW5kQ2xpZW50LmdldCgpOw0KICAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVudC5yZWxlYXNlKCkp
Ow0KICAgICBtX2Zyb250ZW5kSHduZCA9IGZyb250ZW5kSHduZDsNCisgICAgcmV0dXJuIHRoaXM7
DQogfQ0KDQogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KQ0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmggICAgICAgKHJldmlzaW9uIDEyMjcwMykNCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaCAgICAgICAod29y
a2luZyBjb3B5KQ0KQEAgLTMxLDYgKzMxLDcgQEANCg0KICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0
ci5oPg0KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNsaWVudC5oPg0KKyNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPg0KICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4NCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bVN0cmluZy5oPg0KICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd01lc3NhZ2VMaXN0ZW5lci5oPg0K
QEAgLTUwLDE0ICs1MSwxNCBAQCBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDsNCiBj
bGFzcyBXZWJOb2RlSGlnaGxpZ2h0Ow0KIGNsYXNzIFdlYlZpZXc7DQoNCi1jbGFzcyBXZWJJbnNw
ZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsNCitjbGFzcyBX
ZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJs
aWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsNCiBwdWJsaWM6DQogICAgIFdl
Ykluc3BlY3RvckNsaWVudChXZWJWaWV3Kik7DQoNCiAgICAgLy8gSW5zcGVjdG9yQ2xpZW50DQog
ICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsNCg0KLSAgICB2aXJ0dWFsIHZv
aWQgb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsN
CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNw
ZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7DQogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7DQogICAgIHZpcnR1YWwgdm9pZCBicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpOw0KDQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152598</attachid>
            <date>2012-07-16 13:09:39 -0700</date>
            <delta_ts>2012-07-16 21:45:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91196-20120717013934.patch</filename>
            <type>text/plain</type>
            <size>46835</size>
            <attacher name="Vivek Galatage">vivekgalatage</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjc1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA3LTE2ICBWaXZlayBH
YWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFj
Y2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcg
dGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4gQWxzbyByZWZhY3RvcmVkCisgICAgICAgIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIHJlY2VpdmUKKyAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGFzIGNvZGUg
cmVmYWN0b3JpbmcgZG9uZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OnJlY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFbXB0eUluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxp
Z2h0KToKKwogMjAxMi0wNy0xNiAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFBvc2l0aW9uIGdyaWQgaXRlbXMgYnkgcm93L2NvbHVtbiBpbmRleApJbmRleDogU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAkocmV2aXNpb24gMTIyNjg3
KQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywyMyArMjcsMjMgQEAKICNpZm5kZWYgSW5zcGVjdG9yQ2xpZW50X2gKICNk
ZWZpbmUgSW5zcGVjdG9yQ2xpZW50X2gKIAotI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbnNwZWN0b3JDb250
cm9sbGVyOworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgRnJhbWU7CiBj
bGFzcyBQYWdlOwogCi1jbGFzcyBJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsLCBwdWJsaWMgSW5zcGVjdG9yU3RhdGVDbGllbnQgeworY2xhc3MgSW5zcGVj
dG9yQ2xpZW50IDogcHVibGljIEluc3BlY3RvclN0YXRlQ2xpZW50IHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JbnNwZWN0b3JDbGllbnQoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0
b3JEZXN0cm95ZWQoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250
ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKSA9IDA7CisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVzaXplTWFpbkZyYW1lKEZyYW1lKikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMjI2ODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDcgQEAgSW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVj
dG9yQ29udHJvbGxlcgogICAgICwgbV9zdGF0ZShhZG9wdFB0cihuZXcgSW5zcGVjdG9yU3RhdGUo
aW5zcGVjdG9yQ2xpZW50KSkpCiAgICAgLCBtX3BhZ2UocGFnZSkKICAgICAsIG1faW5zcGVjdG9y
Q2xpZW50KGluc3BlY3RvckNsaWVudCkKKyAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KDApCiB7CiAgICAgT3duUHRyPEluc3BlY3RvckFnZW50PiBpbnNwZWN0b3JBZ2VudFB0cihJbnNw
ZWN0b3JBZ2VudDo6Y3JlYXRlKHBhZ2UsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBt
X2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCkpKTsKICAgICBtX2luc3Bl
Y3RvckFnZW50ID0gaW5zcGVjdG9yQWdlbnRQdHIuZ2V0KCk7CkBAIC0yMDgsOSArMjA5LDEyIEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ2xlYXJXaW5kb3cKICAgICAgICAgbV9pbnNw
ZWN0b3JGcm9udGVuZENsaWVudC0+d2luZG93T2JqZWN0Q2xlYXJlZCgpOwogfQogCi12b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpCit2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5k
Q2hhbm5lbCkKIHsKLSAgICBtX2luc3BlY3RvckZyb250ZW5kID0gYWRvcHRQdHIobmV3IEluc3Bl
Y3RvckZyb250ZW5kKG1faW5zcGVjdG9yQ2xpZW50KSk7CisgICAgQVNTRVJUKGZyb250ZW5kQ2hh
bm5lbCk7CisKKyAgICBtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCA9IGZyb250ZW5kQ2hhbm5l
bDsKKyAgICBtX2luc3BlY3RvckZyb250ZW5kID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250
ZW5kKG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKSk7CiAgICAgLy8gV2UgY2FuIHJlY29ubmVj
dCB0byBleGlzdGluZyBmcm9udC1lbmQgLT4gdW5tdXRlIHN0YXRlLgogICAgIG1fc3RhdGUtPnVu
bXV0ZSgpOwogCkBAIC0yMjMsNyArMjI3LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpj
b25uZWN0RnJvbnRlbgogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJvbnRlbmRDcmVh
dGVkKCk7CiAKICAgICBBU1NFUlQobV9pbnNwZWN0b3JDbGllbnQpOwotICAgIG1faW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKG1f
aW5zcGVjdG9yQ2xpZW50KTsKKyAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyID0gSW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCk7CiAKICAgICBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogZGlzcGF0Y2hlciA9IG1faW5z
cGVjdG9yQmFja2VuZERpc3BhdGNoZXIuZ2V0KCk7CiAgICAgZm9yIChBZ2VudHM6Oml0ZXJhdG9y
IGl0ID0gbV9hZ2VudHMuYmVnaW4oKTsgaXQgIT0gbV9hZ2VudHMuZW5kKCk7ICsraXQpCkBAIC0y
NTksOCArMjYzLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KCkKICAgICBpZiAo
bV9pbnNwZWN0b3JGcm9udGVuZCkKICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQtPmJyaW5nRnJv
bnRlbmRUb0Zyb250KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5v
cGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcyk7Ci0gICAgICAgIGNvbm5lY3RGcm9udGVuZCgpOwor
ICAgICAgICBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCA9IG1faW5z
cGVjdG9yQ2xpZW50LT5vcGVuSW5zcGVjdG9yRnJvbnRlbmQodGhpcyk7CisgICAgICAgIGlmIChm
cm9udGVuZENoYW5uZWwpCisgICAgICAgICAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFu
bmVsKTsKICAgICB9CiB9CiAKQEAgLTI3MiwxMCArMjc3LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y2xvc2UoKQogICAgIG1faW5zcGVjdG9yQ2xpZW50LT5jbG9zZUluc3BlY3RvckZy
b250ZW5kKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVzdG9yZUluc3BlY3Rv
clN0YXRlRnJvbUNvb2tpZShjb25zdCBTdHJpbmcmIGluc3BlY3RvclN0YXRlQ29va2llKQordm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZWNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCwgY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTdGF0ZUNv
b2tpZSkKIHsKICAgICBBU1NFUlQoIW1faW5zcGVjdG9yRnJvbnRlbmQpOwotICAgIGNvbm5lY3RG
cm9udGVuZCgpOworICAgIGNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5uZWwpOwogICAgIG1f
c3RhdGUtPmxvYWRGcm9tQ29va2llKGluc3BlY3RvclN0YXRlQ29va2llKTsKIAogICAgIGZvciAo
QWdlbnRzOjppdGVyYXRvciBpdCA9IG1fYWdlbnRzLmJlZ2luKCk7IGl0ICE9IG1fYWdlbnRzLmVu
ZCgpOyArK2l0KQpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5oCShyZXZpc2lvbiAxMjI2ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBA
IGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kOworY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7
CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JQcm9maWxlckFnZW50
OwpAQCAtODUsOSArODYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VGcm9t
RnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKIAogICAgIGJvb2wgaGFzRnJvbnRlbmQo
KSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckZyb250ZW5kOyB9Ci0gICAgdm9pZCBjb25uZWN0
RnJvbnRlbmQoKTsKKyAgICB2b2lkIGNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqKTsKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9udGVuZCgpOwotICAgIHZvaWQgcmVzdG9y
ZUluc3BlY3RvclN0YXRlRnJvbUNvb2tpZShjb25zdCBTdHJpbmcmIGluc3BlY3RvckNvb2tpZSk7
CisgICAgdm9pZCByZWNvbm5lY3RGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBj
b25zdCBTdHJpbmcmIGluc3BlY3RvclN0YXRlQ29va2llKTsKICAgICB2b2lkIHNldFByb2Nlc3NJ
ZChsb25nKTsKIAogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7CkBAIC0xMzQsNiArMTM1LDcgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ+IG1faW5zcGVjdG9yRnJvbnRl
bmQ7CiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JD
bGllbnQ7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBtX2luc3BlY3RvckZyb250ZW5k
Q2hhbm5lbDsKICAgICB0eXBlZGVmIFZlY3RvcjxPd25QdHI8SW5zcGVjdG9yQmFzZUFnZW50SW50
ZXJmYWNlPiA+IEFnZW50czsKICAgICBBZ2VudHMgbV9hZ2VudHM7CiB9OwpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMTIyNjg3KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjksMTQgKzU2
OSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkg
eyB9CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0
b3JDb250cm9sbGVyKikgeyB9CisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwq
IG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgeyByZXR1cm4gMDsg
fQogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
aGlnaGxpZ2h0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoKSB7IH0KLQot
ICAgIHZpcnR1YWwgYm9vbCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJikgeyBy
ZXR1cm4gZmFsc2U7IH0KIH07CiAKIGNsYXNzIEVtcHR5RGV2aWNlTW90aW9uQ2xpZW50IDogcHVi
bGljIERldmljZU1vdGlvbkNsaWVudCB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjI3NTIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxMi0wNy0xNiAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dhbGF0YWdlQGdtYWlsLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3RvciBJbnNwZWN0b3JDb250cm9sbGVy
Ojpjb25uZWN0RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExOTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3Rvcmlu
ZyBJbnNwZWN0b3JDbGllbnRzLiBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVu
ZAorICAgICAgICBub3cgcmV0dXJuaW5nIHRoZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZy
b250ZW5kKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50KToKKwogMjAxMi0wNy0xNiAg
S2lob25nIEt3b24gIDxraWhvbmcua3dvbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZW1vdmUg
c2V0Q29udHJvbGxlciBmcm9tIEJhdHRlcnlDbGllbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5jcHAJKHJldmlzaW9uIDEyMjY4NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsMTAgKzQzLDExIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0
cm8KICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5J
bnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikKK1dlYkNvcmU6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRl
bmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiB7CiAgICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSA9
IG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3RvclBhZ2UoKTsKICAgICBBU1NFUlRf
VU5VU0VEKGluc3BlY3RvclBhZ2UsIGluc3BlY3RvclBhZ2UpOworICAgIHJldHVybiB0aGlzOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHJldmlzaW9uIDEyMjY4NykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJQYWdlT3ZlcmxheS5o
IgogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtNDEsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVi
bGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50
IHsKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwsIHByaXZhdGUg
UGFnZU92ZXJsYXk6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdl
YlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2UpCkBAIC01Miw3ICs1Myw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIE9W
RVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJv
bnRlbmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6
OkZyYW1lKikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyMjc1MikKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wNy0xNiAgVml2ZWsgR2FsYXRhZ2Ug
IDx2aXZla2dhbGF0YWdlQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZh
Y3RvciBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTExOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZWZhY3RvcmluZyBJbnNwZWN0b3JDbGllbnRzLiBJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZAorICAgICAgICBub3cgcmV0dXJuaW5nIHRoZSBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjpXZWJQYWdlUHJpdmF0ZSk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlOjppbml0KToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZTo6ZW5hYmxlV2ViSW5zcGVjdG9yKToK
KyAgICAgICAgKiBBcGkvV2ViUGFnZV9wLmg6CisgICAgICAgIChXZWJQYWdlUHJpdmF0ZSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJsYWNr
QmVycnkuaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudEJsYWNrQmVycnkpOgorCiAyMDEyLTA3
LTE2ICBZb25nIExpICA8eW9saUByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBJbXBy
b3ZlIGFib3V0Om1lbW9yeSBwYWdlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDEyMjY4NykKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzMCw2ICszMzAsNyBAQCB2b2lk
IFdlYlBhZ2U6OmF1dG9maWxsVGV4dEZpZWxkKGNvbnN0IHN0CiBXZWJQYWdlUHJpdmF0ZTo6V2Vi
UGFnZVByaXZhdGUoV2ViUGFnZSogd2ViUGFnZSwgV2ViUGFnZUNsaWVudCogY2xpZW50LCBjb25z
dCBJbnRSZWN0JiByZWN0KQogICAgIDogbV93ZWJQYWdlKHdlYlBhZ2UpCiAgICAgLCBtX2NsaWVu
dChjbGllbnQpCisgICAgLCBtX2luc3BlY3RvckNsaWVudCgwKQogICAgICwgbV9wYWdlKDApIC8v
IEluaXRpYWxpemVkIGJ5IGluaXQuCiAgICAgLCBtX21haW5GcmFtZSgwKSAvLyBJbml0aWFsaXpl
ZCBieSBpbml0LgogICAgICwgbV9jdXJyZW50Q29udGV4dE5vZGUoMCkKQEAgLTQ4OCw5ICs0ODks
OCBAQCB2b2lkIFdlYlBhZ2VQcml2YXRlOjppbml0KGNvbnN0IFdlYlN0cmluCiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKICAgICBkcmFnQ2xpZW50ID0gbmV3IERyYWdDbGllbnRCbGFja0JlcnJ5
KCk7CiAjZW5kaWYKLSAgICBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5KiBpbnNwZWN0b3JDbGll
bnQgPSAwOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaW5zcGVjdG9yQ2xpZW50ID0gbmV3
IEluc3BlY3RvckNsaWVudEJsYWNrQmVycnkodGhpcyk7CisgICAgbV9pbnNwZWN0b3JDbGllbnQg
PSBuZXcgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeSh0aGlzKTsKICNlbmRpZgog
CiAgICAgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5KiBmcmFtZUxvYWRlckNsaWVudCA9IG5l
dyBGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnkoKTsKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lk
IFdlYlBhZ2VQcml2YXRlOjppbml0KGNvbnN0IFdlYlN0cmluCiAgICAgcGFnZUNsaWVudHMuY29u
dGV4dE1lbnVDbGllbnQgPSBjb250ZXh0TWVudUNsaWVudDsKICAgICBwYWdlQ2xpZW50cy5lZGl0
b3JDbGllbnQgPSBlZGl0b3JDbGllbnQ7CiAgICAgcGFnZUNsaWVudHMuZHJhZ0NsaWVudCA9IGRy
YWdDbGllbnQ7Ci0gICAgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50ID0gaW5zcGVjdG9yQ2xp
ZW50OworICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50
OwogCiAgICAgbV9wYWdlID0gbmV3IFBhZ2UocGFnZUNsaWVudHMpOwogI2lmICFkZWZpbmVkKFBV
QkxJQ19CVUlMRCkgfHwgIVBVQkxJQ19CVUlMRApAQCAtNTcwOSw3ICs1NzA5LDEwIEBAIHZvaWQg
V2ViUGFnZTo6b25DZXJ0aWZpY2F0ZVN0b3JlTG9jYXRpb24KIAogdm9pZCBXZWJQYWdlOjplbmFi
bGVXZWJJbnNwZWN0b3IoKQogewotICAgIGQtPm1fcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
LT5jb25uZWN0RnJvbnRlbmQoKTsKKyAgICBpZiAoIWQtPm1faW5zcGVjdG9yQ2xpZW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBkLT5tX3BhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29u
bmVjdEZyb250ZW5kKGQtPm1faW5zcGVjdG9yQ2xpZW50KTsKICAgICBkLT5tX3BhZ2UtPnNldHRp
bmdzKCktPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQodHJ1ZSk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAkocmV2aXNpb24gMTIyNjg3KQorKysg
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAkod29ya2luZyBjb3B5KQpA
QCAtMjAsNiArMjAsNyBAQAogI2RlZmluZSBXZWJQYWdlX3BfaAogCiAjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5oIgogI2luY2x1
ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAjaW5jbHVkZSAiR0xFUzJDb250ZXh0LmgiCkBAIC00NTEsNiArNDUyLDcgQEAgcHVibGljOgog
CiAgICAgV2ViUGFnZSogbV93ZWJQYWdlOwogICAgIFdlYlBhZ2VDbGllbnQqIG1fY2xpZW50Owor
ICAgIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEJsYWNrQmVycnkqIG1faW5zcGVjdG9yQ2xpZW50
OwogICAgIFdlYkNvcmU6OlBhZ2UqIG1fcGFnZTsKICAgICBXZWJDb3JlOjpGcmFtZSogbV9tYWlu
RnJhbWU7CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IG1fY3VycmVudENvbnRleHROb2RlOwpJ
bmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24g
MTIyNjg3KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw5ICs1MywxMCBA
QCB2b2lkIEluc3BlY3RvckNsaWVudEJsYWNrQmVycnk6OmhpZGVIaWdoCiAgICAgbV93ZWJQYWdl
UHJpdmF0ZS0+c2V0SW5zcGVjdG9yT3ZlcmxheUNsaWVudCgwKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JDbGllbnRCbGFja0JlcnJ5OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJv
bGxlciopCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3RvckNsaWVudEJsYWNrQmVy
cnk6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVu
dEJsYWNrQmVycnk6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRleDogU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5oCShyZXZpc2lvbiAxMjI2ODcpCisrKyBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVmaW5lIEluc3BlY3RvckNsaWVu
dEJsYWNrQmVycnlfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
QEAgLTMzLDcgKzM0LDcgQEAgY2xhc3MgV2ViUGFnZVByaXZhdGU7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeSA6IHB1YmxpYyBJbnNwZWN0
b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3JPdmVybGF5OjpJbnNwZWN0b3JPdmVybGF5Q2xpZW50
IHsKK2NsYXNzIEluc3BlY3RvckNsaWVudEJsYWNrQmVycnkgOiBwdWJsaWMgSW5zcGVjdG9yQ2xp
ZW50LCBwdWJsaWMgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLCBwdWJsaWMgSW5zcGVjdG9yT3Zl
cmxheTo6SW5zcGVjdG9yT3ZlcmxheUNsaWVudCB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xp
ZW50QmxhY2tCZXJyeShCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2VQcml2YXRlKik7CiAgICAg
dmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwpAQCAtNDEsNyArNDIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpOwogICAgIHZpcnR1YWwgdm9pZCBoaWRl
SGlnaGxpZ2h0KCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5kKElu
c3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogb3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2
aXNpb24gMTIyNzUyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wNy0xNiAgVml2ZWsgR2FsYXRhZ2UgIDx2
aXZla2dhbGF0YWdlQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3Rv
ciBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTExOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZWZhY3RvcmluZyBJbnNwZWN0b3JDbGllbnRzLiBJbnNwZWN0b3JDbGllbnQ6
Om9wZW5JbnNwZWN0b3JGcm9udGVuZAorICAgICAgICBub3cgcmV0dXJuaW5nIHRoZSBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuCisKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudEltcGw6Om9wZW5JbnNwZWN0b3JG
cm9udGVuZCk6CisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuaDoKKyAgICAgICAg
KEluc3BlY3RvckNsaWVudEltcGwpOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpyZWF0dGFjaCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQpOgorICAgICAgICAqIHNyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oOgorICAgICAgICAo
V2ViRGV2VG9vbHNBZ2VudEltcGwpOgorCiAyMDEyLTA3LTE2ICBTYW1pIEt5b3N0aWxhICA8c2t5
b3N0aWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gT25seSBhcHBseSBwYWdl
IHNjYWxlIGRlbHRhIHRvIHJvb3Qgc2Nyb2xsIGxheWVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTIy
Njg3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEwICs2NSwxMSBAQCB2b2lkIEluc3BlY3RvckNsaWVu
dEltcGw6Omluc3BlY3RvckRlc3RyCiAgICAgICAgIGFnZW50LT5pbnNwZWN0b3JEZXN0cm95ZWQo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
SW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKK0luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogSW5zcGVjdG9yQ2xpZW50SW1wbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIpCiB7CiAgICAgaWYgKFdlYkRldlRvb2xzQWdlbnRJbXBsKiBh
Z2VudCA9IGRldlRvb2xzQWdlbnQoKSkKLSAgICAgICAgYWdlbnQtPm9wZW5JbnNwZWN0b3JGcm9u
dGVuZChjb250cm9sbGVyKTsKKyAgICAgICAgcmV0dXJuIGFnZW50LT5vcGVuSW5zcGVjdG9yRnJv
bnRlbmQoY29udHJvbGxlcik7CisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xp
ZW50SW1wbDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCShyZXZpc2lvbiAxMjI2ODcp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJUaHJlYWQuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgV2ViRGV2VG9v
bHNBZ2VudEltcGw7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIAogY2xhc3MgSW5zcGVjdG9yQ2xpZW50
SW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViVGhyZWFkOjpUYXNrT2JzZXJ2ZXIg
ewogcHVibGljOgogICAgIEluc3BlY3RvckNsaWVudEltcGwoV2ViVmlld0ltcGwqKTsKQEAgLTUw
LDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgLy8gSW5zcGVjdG9yQ2xpZW50IG1ldGhvZHM6CiAg
ICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwotICAgIHZpcnR1YWwgdm9pZCBv
cGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRl
bmRUb0Zyb250KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRv
b2xzQWdlbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAJKHJldmlzaW9uIDEyMjY4NykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzk5LDcgKzM5OSw3IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OnJlYXR0YWNo
KGNvbnMKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2xpZW50TWVzc2FnZUxvb3BBZGFwdGVyOjpl
bnN1cmVDbGllbnRNZXNzYWdlTG9vcENyZWF0ZWQobV9jbGllbnQpOwotICAgIGluc3BlY3RvckNv
bnRyb2xsZXIoKS0+cmVzdG9yZUluc3BlY3RvclN0YXRlRnJvbUNvb2tpZShzYXZlZFN0YXRlKTsK
KyAgICBpbnNwZWN0b3JDb250cm9sbGVyKCktPnJlY29ubmVjdEZyb250ZW5kKHRoaXMsIHNhdmVk
U3RhdGUpOwogICAgIG1fYXR0YWNoZWQgPSB0cnVlOwogfQogCkBAIC00OTIsOCArNDkyLDkgQEAg
dm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6aW5zcGVjdG9yRGVzdAogICAgIC8vIE91ciBsaWZl
dGltZSBpcyBib3VuZCB0byB0aGUgV2ViVmlld0ltcGwuCiB9CiAKLXZvaWQgV2ViRGV2VG9vbHNB
Z2VudEltcGw6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikKK0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViRGV2VG9vbHNBZ2VudEltcGw6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikKIHsKKyAgICByZXR1cm4gMDsKIH0KIAog
dm9pZCBXZWJEZXZUb29sc0FnZW50SW1wbDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBs
LmgJKHJldmlzaW9uIDEyMjY4NykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRl
dlRvb2xzQWdlbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNkZWZp
bmUgV2ViRGV2VG9vbHNBZ2VudEltcGxfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAKICNpbmNsdWRlICJXZWJE
ZXZUb29sc0FnZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VPdmVybGF5LmgiCkBAIC02
NSw2ICs2Niw3IEBAIHN0cnVjdCBXZWJEZXZUb29sc01lc3NhZ2VEYXRhOwogCiBjbGFzcyBXZWJE
ZXZUb29sc0FnZW50SW1wbCA6IHB1YmxpYyBXZWJEZXZUb29sc0FnZW50UHJpdmF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYlBh
Z2VPdmVybGF5IHsKIHB1YmxpYzoKICAgICBXZWJEZXZUb29sc0FnZW50SW1wbChXZWJWaWV3SW1w
bCogd2ViVmlld0ltcGwsIFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGNsaWVudCk7CkBAIC04OCw3
ICs5MCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIEluc3BlY3RvckNsaWVudCBpbXBsZW1lbnRhdGlv
bi4KICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7Ci0gICAgdmlydHVhbCB2
b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7
CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNw
ZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgdmlydHVh
bCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBicmlu
Z0Zyb250ZW5kVG9Gcm9udCgpOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNzUy
KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTItMDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFp
bC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Y29ubmVjdEZyb250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMTk2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0
b3JpbmcgSW5zcGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQKKyAgICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEVmbDo6b3Blbkluc3BlY3RvckZyb250ZW5k
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuaDoKKyAgICAg
ICAgKEluc3BlY3RvckNsaWVudEVmbCk6CisKIDIwMTItMDctMTYgIEtpaG9uZyBLd29uICA8a2lo
b25nLmt3b25Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNldENvbnRyb2xsZXIgZnJv
bSBCYXR0ZXJ5Q2xpZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEyMjY4NykKKysr
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTcyLDEzICs3MiwxMyBAQCB2b2lkIEluc3BlY3RvckNsaWVudEVm
bDo6aW5zcGVjdG9yRGVzdHJvCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
Q2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCitJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3RvckNsaWVudEVmbDo6b3Blbkluc3BlY3Rv
ckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0
X2NhbGxiYWNrX2NhbGwobV9pbnNwZWN0ZWRWaWV3LCAiaW5zcGVjdG9yLHZpZXcsY3JlYXRlIiwg
MCk7CiAKICAgICBFdmFzX09iamVjdCogaW5zcGVjdG9yVmlldyA9IGV3a192aWV3X3dlYl9pbnNw
ZWN0b3Jfdmlld19nZXQobV9pbnNwZWN0ZWRWaWV3KTsKICAgICBpZiAoIWluc3BlY3RvclZpZXcp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtX2luc3BlY3RvclZp
ZXcgPSBpbnNwZWN0b3JWaWV3OwogCkBAIC05MCw2ICs5MCw4IEBAIHZvaWQgSW5zcGVjdG9yQ2xp
ZW50RWZsOjpvcGVuSW5zcGVjdG9yRnIKIAogICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSBFV0tQcml2YXRlOjpjb3JlUGFnZShtX2luc3BlY3RvclZpZXcpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCk7CiAgICAgY29udHJvbGxlci0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQo
ZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKKyAgICAKKyAgICByZXR1cm4gdGhpczsKIH0KIAog
dm9pZCBJbnNwZWN0b3JDbGllbnRFZmw6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRleDog
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50RWZsLmgJKHJldmlzaW9uIDEyMjY4NykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBACiAjZGVmaW5lIEluc3BlY3RvckNsaWVudEVmbF9oCiAKICNpbmNsdWRlICJJbnNwZWN0b3JD
bGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC00MSwxNCArNDIsMTQgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw7CiBjbGFzcyBQYWdlOwogCi1j
bGFzcyBJbnNwZWN0b3JDbGllbnRFZmwgOiBwdWJsaWMgSW5zcGVjdG9yQ2xpZW50IHsKK2NsYXNz
IEluc3BlY3RvckNsaWVudEVmbCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RvckNs
aWVudEVmbChFdmFzX09iamVjdCopOwogICAgIH5JbnNwZWN0b3JDbGllbnRFZmwoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBv
cGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopOworICAgIHZpcnR1YWwg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9y
Q29udHJvbGxlciopOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7
CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEyMjc1MikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxh
dGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2Vw
dCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3BlY3Rv
ckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhl
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6
b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRHdGsuaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudCk6CisKIDIwMTItMDctMTYg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIFVwZGF0ZSBORVdTIGFuZCBjb25maWd1cmUuYWMgZm9yIDEuOS41IHJlbGVhc2UK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMTIyNjg3KQorKysgU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODMsNyArODMsNyBAQCB2b2lkIEluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJveWVk
CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKK0luc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5z
cGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKICAgICAvLyBUaGlzIGdfb2JqZWN0X2dl
dCB3aWxsIHJlZiB0aGUgaW5zcGVjdG9yLiBXZSdyZSBub3QgZG9pbmcgYW4KICAgICAvLyB1bnJl
ZiBpZiB0aGlzIG1ldGhvZCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBpbnNwZWN0b3Igb2JqZWN0IG11
c3QKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JG
cm9udAogCiAgICAgaWYgKCFpbnNwZWN0b3JXZWJWaWV3KSB7CiAgICAgICAgIGdfb2JqZWN0X3Vu
cmVmKHdlYkluc3BlY3Rvcik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCiAgICAgd2Via2l0X3dlYl9pbnNwZWN0b3Jfc2V0X3dlYl92aWV3KHdlYkluc3BlY3Rv
ciwgaW5zcGVjdG9yV2ViVmlldyk7CkBAIC0xMTcsNiArMTE3LDggQEAgdm9pZCBJbnNwZWN0b3JD
bGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udAogCiAgICAgLy8gVGhlIGluc3BlY3RvciBtdXN0IGJl
IGluIGl0J3Mgb3duIFBhZ2VHcm91cCB0byBhdm9pZCBkZWFkbG9jayB3aGlsZSBkZWJ1Z2dpbmcu
CiAgICAgbV9mcm9udGVuZFBhZ2UtPnNldEdyb3VwTmFtZSgiIik7CisgICAgCisgICAgcmV0dXJu
IHRoaXM7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5k
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEd0ay5oCShyZXZpc2lvbiAxMjI2ODcpCisrKyBTb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRHdGtfaAogCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIgogI2luY2x1ZGUgIndl
YmtpdHdlYnZpZXcuaCIKICNpbmNsdWRlICJ3ZWJraXR3ZWJpbnNwZWN0b3IuaCIKQEAgLTQ1LDcg
KzQ2LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICBjbGFzcyBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudDsKIAotICAgIGNsYXNzIEluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQgeworICAgIGNsYXNzIEluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJD
b3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwgewogICAgIHB1YmxpYzoKICAgICAgICAgSW5zcGVjdG9yQ2xpZW50KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpOwogICAgICAgICB+SW5zcGVjdG9yQ2xpZW50KCk7CkBAIC01NCw3ICs1NSw3
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JE
ZXN0cm95ZWQoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5k
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICAgICAgdmlydHVhbCBXZWJDb3Jl
OjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3Bl
Y3RvckZyb250ZW5kKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9u
dCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjI3NTIpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAx
Mi0wNy0xNiAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dhbGF0YWdlQGdtYWlsLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3RvciBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0
RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExOTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZyBJbnNwZWN0
b3JDbGllbnRzLiBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZAorICAgICAg
ICBub3cgcmV0dXJuaW5nIHRoZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkluc3Bl
Y3RvckNsaWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQp
OgorCiAyMDEyLTA3LTE1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGNhc2Ugc2Vuc2l0aXZlIGJ1aWxkIGlzc3VlLgpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJ
KHJldmlzaW9uIDEyMjY4NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAgKi8K
IAogI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JDbGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1TdHJpbmcuaD4K
IApAQCAtNTQsMTMgKzU1LDEzIEBAIGNsYXNzIFBhZ2U7CiAKIGNsYXNzIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBX
ZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwgewogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3ICopOwog
CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIE9WRVJSSURFOwogCi0gICAg
dmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1l
KikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAxMjI2ODcpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3Bl
Y3RvckRlc3RybwogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIpCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6
b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIpCiB7CiAgICAgUmV0YWluUHRyPFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXI+IHdp
bmRvd0NvbnRyb2xsZXIoQWRvcHROUywgW1tXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyIGFs
bG9jXSBpbml0V2l0aEluc3BlY3RlZFdlYlZpZXc6bV93ZWJWaWV3XSk7CiAgICAgW3dpbmRvd0Nv
bnRyb2xsZXIuZ2V0KCkgc2V0SW5zcGVjdG9yQ2xpZW50OnRoaXNdOwpAQCAtMTAzLDYgKzEwMyw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnIKICAgICBSZXRhaW5Q
dHI8V2ViSW5zcGVjdG9yRnJvbnRlbmQ+IHdlYkluc3BlY3RvckZyb250ZW5kKEFkb3B0TlMsIFtb
V2ViSW5zcGVjdG9yRnJvbnRlbmQgYWxsb2NdIGluaXRXaXRoRnJvbnRlbmRDbGllbnQ6ZnJvbnRl
bmRDbGllbnQuZ2V0KCldKTsKICAgICBbW21fd2ViVmlldyBpbnNwZWN0b3JdIHNldEZyb250ZW5k
OndlYkluc3BlY3RvckZyb250ZW5kLmdldCgpXTsKICAgICBtX2Zyb250ZW5kUGFnZS0+aW5zcGVj
dG9yQ29udHJvbGxlcigpLT5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChmcm9udGVuZENsaWVu
dC5yZWxlYXNlKCkpOworICAgIHJldHVybiB0aGlzOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNp
b24gMTIyNzUyKQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNy0xNiAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dhbGF0
YWdlQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3RvciBJbnNwZWN0
b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTExOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZWZhY3RvcmluZyBJbnNwZWN0b3JDbGllbnRzLiBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNw
ZWN0b3JGcm9udGVuZAorICAgICAgICBub3cgcmV0dXJuaW5nIHRoZSBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZy
b250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjphdHRhY2hBbmRS
ZXBsYWNlUmVtb3RlRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFF0Lmg6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRRdCk6CisKIDIwMTItMDctMTYg
IFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFtR
dF0gRml4IGluY29uc2lzdGVudCBETEwgbGlua2FnZSBvbiBXaW5kb3dzIHdpdGggV2ViS2l0MQpJ
bmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRRdC5jcHAJKHJldmlzaW9uIDEyMjY4NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEs
OCArMjAxLDkgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6aW5zcGVjdG9yRGVzdHJveQogfQog
CiAgICAgCi12b2lkIEluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK1dlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogSW5zcGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyKQogeworICAgIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRD
aGFubmVsID0gMDsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIE93blB0cjxRV2ViVmlldz4g
aW5zcGVjdG9yVmlldyA9IGFkb3B0UHRyKG5ldyBRV2ViVmlldyk7CiAgICAgLy8gRklYTUU6IFdo
ZXJlIGRvZXMgaW5zcGVjdG9yUGFnZSBnZXQgZGVsZXRlZD8KQEAgLTIxMiw3ICsyMTMsNyBAQCB2
b2lkIEluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvCiAgICAgUVdlYkluc3BlY3Rv
ciogaW5zcGVjdG9yID0gbV9pbnNwZWN0ZWRXZWJQYWdlLT5kLT5nZXRPckNyZWF0ZUluc3BlY3Rv
cigpOwogICAgIC8vIFJlbW90ZSBmcm9udGVuZCB3YXMgYXR0YWNoZWQuCiAgICAgaWYgKG1fcmVt
b3RlRnJvbnRFbmRDaGFubmVsKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwog
CiAgICAgLy8gVGhpcyBpcyBhIGtub3duIGhvb2sgdGhhdCBhbGxvd3MgY2hhbmdpbmcgdGhlIGRl
ZmF1bHQgVVJMIGZvciB0aGUKICAgICAvLyBXZWIgaW5zcGVjdG9yLiBUaGlzIGlzIHVzZWQgZm9y
IFNESyBwdXJwb3Nlcy4gUGxlYXNlIGtlZXAgdGhpcyBob29rCkBAIC0yNDMsNyArMjQ0LDkgQEAg
dm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZybwogCiAgICAgLy8gV2ViIElu
c3BlY3RvciBzaG91bGQgbm90IGJlbG9uZyB0byBhbnkgb3RoZXIgcGFnZSBncm91cHMgc2luY2Ug
aXQgaXMgYSBzcGVjaWFsaXplZCBkZWJ1Z2dlciB3aW5kb3cuCiAgICAgbV9mcm9udGVuZFdlYlBh
Z2UtPmhhbmRsZSgpLT5wYWdlLT5zZXRHcm91cE5hbWUoIl9fV2ViSW5zcGVjdG9yUGFnZUdyb3Vw
X18iKTsKKyAgICBmcm9udGVuZENoYW5uZWwgPSB0aGlzOwogI2VuZGlmCisgICAgcmV0dXJuIGZy
b250ZW5kQ2hhbm5lbDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6Y2xvc2VJbnNwZWN0
b3JGcm9udGVuZCgpCkBAIC0yNzEsNyArMjc0LDcgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRRdDo6
YXR0YWNoQW5kUmVwbGFjZQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgbV9yZW1vdGVG
cm9udEVuZENoYW5uZWwgPSBjaGFubmVsOwotICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQoKTsKKyAgICBtX2luc3BlY3RlZFdl
YlBhZ2UtPmQtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKHRoaXMpOwog
I2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmgJKHJldmlzaW9uIDEyMjY4NykKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRRdF9oCiAKICNpbmNsdWRl
ICJJbnNwZWN0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgiCiAjaW5jbHVkZSA8
UXRDb3JlL1FTdHJpbmc+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQ1LDEzICs0Niwx
MyBAQCBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudFF0OwogY2xhc3MgSW5zcGVjdG9yU2Vy
dmVyUmVxdWVzdEhhbmRsZXJRdDsKIGNsYXNzIFBhZ2U7CiAKLWNsYXNzIEluc3BlY3RvckNsaWVu
dFF0IDogcHVibGljIEluc3BlY3RvckNsaWVudCB7CitjbGFzcyBJbnNwZWN0b3JDbGllbnRRdCA6
IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwg
ewogcHVibGljOgogICAgIEluc3BlY3RvckNsaWVudFF0KFFXZWJQYWdlKik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbklu
c3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250
ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xv
c2VJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9G
cm9udCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjI3NTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAor
MjAxMi0wNy0xNiAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dhbGF0YWdlQGdtYWlsLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3RvciBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25u
ZWN0RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExOTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZyBJbnNw
ZWN0b3JDbGllbnRzLiBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZAorICAg
ICAgICBub3cgcmV0dXJuaW5nIHRoZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xp
ZW50KToKKwogMjAxMi0wNy0xNCAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBFbmFibGUgQVZDRiBoYXJkd2FyZSB2aWRlbyBkZWNvZGluZwpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuY3BwCShyZXZpc2lvbiAxMjI2ODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3
ICs4Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm8KICAgICBk
ZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JG
cm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQorV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNw
ZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQog
ewogICAgIHJlZ2lzdGVyV2luZG93Q2xhc3MoKTsKIApAQCAtOTYsMjEgKzk2LDIxIEBAIHZvaWQg
V2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnIKICAgICAgICAgMCwgMCwgMCwgMCk7
CiAKICAgICBpZiAoIWZyb250ZW5kSHduZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gMDsKIAogICAgIENPTVB0cjxXZWJWaWV3PiBmcm9udGVuZFdlYlZpZXcoQWRvcHRDT00sIFdl
YlZpZXc6OmNyZWF0ZUluc3RhbmNlKCkpOwogCiAgICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZp
ZXctPnNldEhvc3RXaW5kb3coKE9MRV9IQU5ETEUpKFVMT05HNjQpZnJvbnRlbmRId25kKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSRUNUIHJlY3Q7CiAgICAg
R2V0Q2xpZW50UmVjdChmcm9udGVuZEh3bmQsICZyZWN0KTsKICAgICBpZiAoRkFJTEVEKGZyb250
ZW5kV2ViVmlldy0+aW5pdFdpdGhGcmFtZShyZWN0LCAwLCAwKSkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBDT01QdHI8V2ViSW5zcGVjdG9yRGVsZWdhdGU+IGRl
bGVnYXRlKEFkb3B0Q09NLCBXZWJJbnNwZWN0b3JEZWxlZ2F0ZTo6Y3JlYXRlSW5zdGFuY2UoKSk7
CiAgICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZpZXctPnNldFVJRGVsZWdhdGUoZGVsZWdhdGUu
Z2V0KCkpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEtl
ZXAgcHJlZmVyZW5jZXMgc2VwYXJhdGUgZnJvbSB0aGUgcmVzdCBvZiB0aGUgY2xpZW50LCBtYWtp
bmcgc3VyZSB3ZSBhcmUgdXNpbmcgZXhwZWN0ZWQgcHJlZmVyZW5jZSB2YWx1ZXMuCiAgICAgLy8g
RklYTUU6IEl0J3MgY3JhenkgdGhhdCB3ZSBoYXZlIHRvIGRvIHRoaXMgc29uZyBhbmQgZGFuY2Ug
dG8gZW5kIHVwIHdpdGgKQEAgLTEyMCw2NCArMTIwLDY1IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xp
ZW50OjpvcGVuSW5zcGVjdG9yRnIKICAgICBDT01QdHI8V2ViUHJlZmVyZW5jZXM+IHRlbXBQcmVm
ZXJlbmNlcyhBZG9wdENPTSwgV2ViUHJlZmVyZW5jZXM6OmNyZWF0ZUluc3RhbmNlKCkpOwogICAg
IENPTVB0cjxJV2ViUHJlZmVyZW5jZXM+IGlQcmVmZXJlbmNlczsKICAgICBpZiAoRkFJTEVEKHRl
bXBQcmVmZXJlbmNlcy0+aW5pdFdpdGhJZGVudGlmaWVyKEJTdHJpbmcoTCJXZWJJbnNwZWN0b3JQ
cmVmZXJlbmNlcyIpLCAmaVByZWZlcmVuY2VzKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIDA7CiAgICAgQ09NUHRyPFdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlcyhRdWVyeSwg
aVByZWZlcmVuY2VzKTsKICAgICBpZiAoIXByZWZlcmVuY2VzKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMtPnNldEF1dG9zYXZl
cyhGQUxTRSkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChG
QUlMRUQocHJlZmVyZW5jZXMtPnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShUUlVFKSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJl
bmNlcy0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoVFJVRSkpKQotICAgICAgICByZXR1
cm47CisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMtPnNldEFs
bG93c0FuaW1hdGVkSW1hZ2VzKFRSVUUpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gMDsKICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHkoVFJVRSkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIGlm
IChGQUlMRUQocHJlZmVyZW5jZXMtPnNldFBsdWdJbnNFbmFibGVkKEZBTFNFKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+
c2V0SmF2YUVuYWJsZWQoRkFMU0UpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
MDsKICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQo
RkFMU0UpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRkFJ
TEVEKHByZWZlcmVuY2VzLT5zZXRUYWJzVG9MaW5rcyhGQUxTRSkpKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMtPnNldE1pbmlt
dW1Gb250U2l6ZSgwKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAg
aWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZSg5KSkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJl
bmNlcy0+c2V0Rml4ZWRGb250RmFtaWx5KEJTdHJpbmcoTCJDb3VyaWVyIE5ldyIpKSkpCi0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNl
cy0+c2V0RGVmYXVsdEZpeGVkRm9udFNpemUoMTMpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGlmIChGQUlMRUQoZnJvbnRlbmRXZWJWaWV3LT5zZXRQcmVmZXJl
bmNlcyhwcmVmZXJlbmNlcy5nZXQoKSkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVy
biAwOwogCiAgICAgZnJvbnRlbmRXZWJWaWV3LT5zZXRQcm9oaWJpdHNNYWluRnJhbWVTY3JvbGxp
bmcoVFJVRSk7CiAKICAgICBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQ7CiAgICAgaWYgKEZBSUxF
RChmcm9udGVuZFdlYlZpZXctPnZpZXdXaW5kb3cocmVpbnRlcnByZXRfY2FzdDxPTEVfSEFORExF
Kj4oJmZyb250ZW5kV2ViVmlld0h3bmQpKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBDT01QdHI8V2ViTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHRD
T00sIFdlYk11dGFibGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZSgpKTsKIAogICAgIFJldGFp
blB0cjxDRlVSTFJlZj4gaHRtbFVSTFJlZihBZG9wdENGLCBDRkJ1bmRsZUNvcHlSZXNvdXJjZVVS
TChnZXRXZWJLaXRCdW5kbGUoKSwgQ0ZTVFIoImluc3BlY3RvciIpLCBDRlNUUigiaHRtbCIpLCBD
RlNUUigiaW5zcGVjdG9yIikpKTsKICAgICBpZiAoIWh0bWxVUkxSZWYpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBDRlN0cmluZ1JlZiB1cmxTdHJpbmdSZWYgPSA6
OkNGVVJMR2V0U3RyaW5nKGh0bWxVUkxSZWYuZ2V0KCkpOwogICAgIGlmIChGQUlMRUQocmVxdWVz
dC0+aW5pdFdpdGhVUkwoQlN0cmluZyh1cmxTdHJpbmdSZWYpLCBXZWJVUkxSZXF1ZXN0VXNlUHJv
dG9jb2xDYWNoZVBvbGljeSwgNjApKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4g
MDsKIAogICAgIGlmIChGQUlMRUQoZnJvbnRlbmRXZWJWaWV3LT50b3BMZXZlbEZyYW1lKCktPmxv
YWRSZXF1ZXN0KHJlcXVlc3QuZ2V0KCkpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1
cm4gMDsKIAogICAgIG1fZnJvbnRlbmRQYWdlID0gY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkp
OwogICAgIE93blB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudD4gZnJvbnRlbmRDbGllbnQg
PSBhZG9wdFB0cihuZXcgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobV9pbnNwZWN0ZWRXZWJW
aWV3LCBtX2luc3BlY3RlZFdlYlZpZXdId25kLCBmcm9udGVuZEh3bmQsIGZyb250ZW5kV2ViVmll
dywgZnJvbnRlbmRXZWJWaWV3SHduZCwgdGhpcywgY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpKSk7
CiAgICAgbV9mcm9udGVuZENsaWVudCA9IGZyb250ZW5kQ2xpZW50LmdldCgpOwogICAgIG1fZnJv
bnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50KGZyb250ZW5kQ2xpZW50LnJlbGVhc2UoKSk7CiAgICAgbV9mcm9udGVuZEh3bmQgPSBmcm9u
dGVuZEh3bmQ7CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCShyZXZpc2lvbiAxMjI2
ODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSA8V2ViQ29y
ZS9DT01QdHIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNsaWVudC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybVN0cmluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93TWVzc2FnZUxpc3RlbmVyLmg+
CkBAIC01MCwxNCArNTEsMTQgQEAgY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBj
bGFzcyBXZWJOb2RlSGlnaGxpZ2h0OwogY2xhc3MgV2ViVmlldzsKIAotY2xhc3MgV2ViSW5zcGVj
dG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCB7CitjbGFzcyBXZWJJ
bnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMg
V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKICAgICBXZWJJbnNw
ZWN0b3JDbGllbnQoV2ViVmlldyopOwogCiAgICAgLy8gSW5zcGVjdG9yQ2xpZW50CiAgICAgdmly
dHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5J
bnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9u
dGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRv
RnJvbnQoKTsKIApJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjc1MikKKysr
IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTItMDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFpbC5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgSW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMTk2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3Jp
bmcgSW5zcGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRl
bmQKKyAgICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2luQ0UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGllbnRXaW5DRTo6b3Blbkluc3BlY3RvckZyb250ZW5k
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXaW5DRS5oOgorICAg
ICAgICAoSW5zcGVjdG9yQ2xpZW50V2luQ0UpOgorCiAyMDEyLTA1LTMxICBIYWppbWUgTW9ycml0
YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjExNzU3Mik6
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1yZW1vdmUtZnJhbWUuaHRtbCBjcmFz
aGVzIG9uIE1hYwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDEyMjY4NykK
KysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2lu
Q0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw5ICs0NSwxMCBAQCB2b2lkIEluc3BlY3RvckNs
aWVudFdpbkNFOjppbnNwZWN0b3JEZXN0CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ2xpZW50V2luQ0U6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9s
bGVyKiBjb250cm9sbGVyKQorSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JDbGll
bnRXaW5DRTo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRy
b2xsZXIpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JDbGllbnRXaW5DRTo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRXaW5DRS5oCShyZXZpc2lvbiAxMjI2ODcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDE5ICsyNiwyMCBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRXaW5DRV9oCiAKICNpbmNs
dWRlICJJbnNwZWN0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCIKIAogY2xhc3MgV2ViVmlldzsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIElu
c3BlY3RvckNsaWVudFdpbkNFIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCB7Citj
bGFzcyBJbnNwZWN0b3JDbGllbnRXaW5DRSA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGll
bnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgog
ICAgIEluc3BlY3RvckNsaWVudFdpbkNFKFdlYlZpZXcqIHdlYlZpZXcpOwogICAgIH5JbnNwZWN0
b3JDbGllbnRXaW5DRSgpOwogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNw
ZWN0b3JDb250cm9sbGVyKik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKIApJbmRleDogU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEyMjc1MikKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2
ZWtnYWxhdGFnZUBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3Ig
SW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxMTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVmYWN0b3JpbmcgSW5zcGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50Ojpv
cGVuSW5zcGVjdG9yRnJvbnRlbmQKKyAgICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRXeDo6b3Blbkluc3Bl
Y3RvckZyb250ZW5kKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4
Lmg6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRXeCk6CisKIDIwMTItMDctMDIgIEJlbmphbWlu
IFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRG8gbm90IGRvIGFueSBs
b2dnaW5nIGluaXRpYWxpemF0aW9uIHdoZW4gbG9nZ2luZyBpcyBkaXNhYmxlZApJbmRleDogU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3gu
Y3BwCShyZXZpc2lvbiAxMjI2ODcpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw5ICs0NywxMCBAQCB2
b2lkIEluc3BlY3RvckNsaWVudFd4OjppbnNwZWN0b3JEZXN0cm95CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6b3Blbkluc3BlY3RvckZyb250ZW5k
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKQorSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBJbnNwZWN0b3JDbGllbnRXeDo6b3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXIqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIDA7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2xpZW50V3g6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJ
bmRleDogU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNs
aWVudFd4LmgJKHJldmlzaW9uIDEyMjY4NykKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsMjEg
QEAKICNkZWZpbmUgSW5zcGVjdG9yQ2xpZW50V3hfaAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xp
ZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQYWdlOwogCi1j
bGFzcyBJbnNwZWN0b3JDbGllbnRXeCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQgeworY2xhc3Mg
SW5zcGVjdG9yQ2xpZW50V3ggOiBwdWJsaWMgSW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsIHsKIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDbGllbnRXeCgpOwog
ICAgIH5JbnNwZWN0b3JDbGllbnRXeCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRl
c3Ryb3llZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152693</attachid>
            <date>2012-07-16 21:46:15 -0700</date>
            <delta_ts>2012-07-16 23:00:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91196-20120717101529.patch</filename>
            <type>text/plain</type>
            <size>50221</size>
            <attacher name="Vivek Galatage">vivekgalatage</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA3LTE2ICBWaXZlayBH
YWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFj
Y2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcg
dGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4gQWxzbyByZWZhY3RvcmVkCisgICAgICAgIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIHJlY2VpdmUKKyAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGFzIGNvZGUg
cmVmYWN0b3JpbmcgZG9uZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OnJlY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFbXB0eUluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxp
Z2h0KToKKwogMjAxMi0wNy0xNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMjY4MS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgJKHJldmlzaW9uIDEy
MjcwMykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjMgKzI3LDIzIEBACiAjaWZuZGVmIEluc3BlY3RvckNsaWVudF9o
CiAjZGVmaW5lIEluc3BlY3RvckNsaWVudF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZUNsaWVudC5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9y
Q29udHJvbGxlcjsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEZyYW1l
OwogY2xhc3MgUGFnZTsKIAotY2xhc3MgSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCwgcHVibGljIEluc3BlY3RvclN0YXRlQ2xpZW50IHsKK2NsYXNzIElu
c3BlY3RvckNsaWVudCA6IHB1YmxpYyBJbnNwZWN0b3JTdGF0ZUNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yQ2xpZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5z
cGVjdG9yRGVzdHJveWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JG
cm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgPSAwOworICAgIHZpcnR1YWwgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxl
ciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTIy
NzAzKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Oklu
c3BlY3RvckNvbnRyb2xsZXIKICAgICAsIG1fc3RhdGUoYWRvcHRQdHIobmV3IEluc3BlY3RvclN0
YXRlKGluc3BlY3RvckNsaWVudCkpKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3Bl
Y3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCisgICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCgwKQogewogICAgIE93blB0cjxJbnNwZWN0b3JBZ2VudD4gaW5zcGVjdG9yQWdlbnRQdHIo
SW5zcGVjdG9yQWdlbnQ6OmNyZWF0ZShwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpKSk7CiAgICAgbV9p
bnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50UHRyLmdldCgpOwpAQCAtMjA4LDkgKzIwOSwx
MiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93CiAgICAgICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmRDbGllbnQtPndpbmRvd09iamVjdENsZWFyZWQoKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwpCiB7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJ
bnNwZWN0b3JGcm9udGVuZChtX2luc3BlY3RvckNsaWVudCkpOworICAgIEFTU0VSVChmcm9udGVu
ZENoYW5uZWwpOworCisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENo
YW5uZWw7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JG
cm9udGVuZChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkpOwogICAgIC8vIFdlIGNhbiByZWNv
bm5lY3QgdG8gZXhpc3RpbmcgZnJvbnQtZW5kIC0+IHVubXV0ZSBzdGF0ZS4KICAgICBtX3N0YXRl
LT51bm11dGUoKTsKIApAQCAtMjIzLDcgKzIyNyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW4KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5k
Q3JlYXRlZCgpOwogCiAgICAgQVNTRVJUKG1faW5zcGVjdG9yQ2xpZW50KTsKLSAgICBtX2luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShtX2luc3BlY3RvckNsaWVudCk7CisgICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwpOwogCiAgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGRpc3BhdGNoZXIgPSBt
X2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpOwogICAgIGZvciAoQWdlbnRzOjppdGVy
YXRvciBpdCA9IG1fYWdlbnRzLmJlZ2luKCk7IGl0ICE9IG1fYWdlbnRzLmVuZCgpOyArK2l0KQpA
QCAtMjU5LDggKzI2Myw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiAgICAg
aWYgKG1faW5zcGVjdG9yRnJvbnRlbmQpCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmlu
Z0Zyb250ZW5kVG9Gcm9udCgpOwogICAgIGVsc2UgewotICAgICAgICBtX2luc3BlY3RvckNsaWVu
dC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpOwotICAgICAgICBjb25uZWN0RnJvbnRlbmQo
KTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBt
X2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpOworICAgICAgICBp
ZiAoZnJvbnRlbmRDaGFubmVsKQorICAgICAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5k
Q2hhbm5lbCk7CiAgICAgfQogfQogCkBAIC0yNzIsMTAgKzI3NywxMCBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNsb3NlKCkKICAgICBtX2luc3BlY3RvckNsaWVudC0+Y2xvc2VJbnNwZWN0
b3JGcm9udGVuZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNw
ZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTdGF0ZUNvb2tpZSkK
K3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIGNvbnN0IFN0cmluZyYgaW5zcGVjdG9yU3Rh
dGVDb29raWUpCiB7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvckZyb250ZW5kKTsKLSAgICBjb25u
ZWN0RnJvbnRlbmQoKTsKKyAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsKICAg
ICBtX3N0YXRlLT5sb2FkRnJvbUNvb2tpZShpbnNwZWN0b3JTdGF0ZUNvb2tpZSk7CiAKICAgICBm
b3IgKEFnZW50czo6aXRlcmF0b3IgaXQgPSBtX2FnZW50cy5iZWdpbigpOyBpdCAhPSBtX2FnZW50
cy5lbmQoKTsgKytpdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAs
NyBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNs
YXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKK2Ns
YXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDsKQEAgLTg1LDkgKzg2LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBib29sIGhhc0Zyb250
ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZDsgfQotICAgIHZvaWQgY29u
bmVjdEZyb250ZW5kKCk7CisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoKTsKLSAgICB2b2lkIHJl
c3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JDb29r
aWUpOworICAgIHZvaWQgcmVjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTdGF0ZUNvb2tpZSk7CiAgICAgdm9pZCBzZXRQcm9j
ZXNzSWQobG9uZyk7CiAKICAgICB2b2lkIGluc3BlY3QoTm9kZSopOwpAQCAtMTM0LDYgKzEzNSw3
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBtX2luc3BlY3RvckZy
b250ZW5kOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVj
dG9yQ2xpZW50OworICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiAgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2Vu
dEludGVyZmFjZT4gPiBBZ2VudHM7CiAgICAgQWdlbnRzIG1fYWdlbnRzOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTY5LDE0
ICs1NjksMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3ll
ZCgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5z
cGVjdG9yQ29udHJvbGxlciopIHsgfQorICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopIHsgcmV0dXJu
IDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIHsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGhpZ2hsaWdodCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgeyB9
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYp
IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiBjbGFzcyBFbXB0eURldmljZU1vdGlvbkNsaWVudCA6
IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGllbnQgewpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTIy
NzAzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTItMDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFp
bC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Y29ubmVjdEZyb250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMTk2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0
b3JpbmcgSW5zcGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQKKyAgICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudCk6CisKIDIwMTItMDct
MTUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAg
ICAgICBbRUZMXVtXSzJdIERlZmluZSBkZXN0cnVjdG9ycyBmb3IgRXdrIHN0cnVjdHVyZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDExIEBAIHZvaWQgV2ViSW5zcGVjdG9y
Q2xpZW50OjppbnNwZWN0b3JEZXN0cm8KICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVy
KikKK1dlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50
OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiB7CiAgICAgV2Vi
UGFnZSogaW5zcGVjdG9yUGFnZSA9IG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3Rv
clBhZ2UoKTsKICAgICBBU1NFUlRfVU5VU0VEKGluc3BlY3RvclBhZ2UsIGluc3BlY3RvclBhZ2Up
OworICAgIHJldHVybiB0aGlzOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJ
bnNwZWN0b3JGcm9udGVuZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHJldmlz
aW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJQYWdlT3ZlcmxheS5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDbGll
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtNDEsNyAr
NDIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2Vi
SW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHJpdmF0
ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwsIHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAg
V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2Up
CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGlu
c3BlY3RvckRlc3Ryb3llZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNw
ZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVu
ZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
YnJpbmdGcm9udGVuZFRvRnJvbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVz
aXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAkocmV2aXNp
b24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJXZWJJ
bnNwZWN0b3IuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KICNpbmNsdWRlICJXZWJGcmFt
ZS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgpAQCAtMzUsNiArMzQsNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0yNTUsOCArMjU1LDkgQEAgdm9pZCBXZWJJ
bnNwZWN0b3I6OnJlbW90ZUZyb250ZW5kQ29ubmVjdAogICAgIEFTU0VSVCghbV9yZW1vdGVGcm9u
dGVuZENvbm5lY3RlZCk7CiAgICAgLy8gU3dpdGNoaW5nIGJldHdlZW4gaW4tcHJvY2VzcyBhbmQg
cmVtb3RlIGluc3BlY3RvcnMgaXNuJ3Qgc3VwcG9ydGVkIHlldC4KICAgICBBU1NFUlQoIW1faW5z
cGVjdG9yUGFnZSk7Ci0KLSAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xs
ZXIoKS0+Y29ubmVjdEZyb250ZW5kKCk7CisgICAgCisgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBjaGFubmVsID0gbV9wYWdlLT5pbnNwZWN0b3JDbGllbnQoKTsKKyAgICBtX3BhZ2UtPmNv
cmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKGNoYW5uZWwp
OwogICAgIG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQgPSB0cnVlOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAx
MjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QKICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKICAgICAs
IG1fdmlzaWJpbGl0eVN0YXRlKFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKQog
I2VuZGlmCisgICAgLCBtX2luc3BlY3RvckNsaWVudCgwKQogewogICAgIEFTU0VSVChtX3BhZ2VJ
RCk7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSBub24taWRlYWwgbG9jYXRpb24gZm9yIHRoaXMg
U2V0dGluZyBhbmQKQEAgLTI2Miw3ICsyNjMsOCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QKICNlbmRpZgogICAgIHBhZ2VDbGllbnRzLmJhY2tGb3J3YXJkQ2xpZW50
ID0gV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmNyZWF0ZSh0aGlzKTsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0
b3JDbGllbnQodGhpcyk7CisgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9y
Q2xpZW50KHRoaXMpOworICAgIHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG1faW5zcGVj
dG9yQ2xpZW50OwogI2VuZGlmCiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIHBh
Z2VDbGllbnRzLmFsdGVybmF0aXZlVGV4dENsaWVudCA9IG5ldyBXZWJBbHRlcm5hdGl2ZVRleHRD
bGllbnQodGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsNyBAQCBjbGFz
cyBXZWJGcmFtZTsKIGNsYXNzIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOwogY2xhc3MgV2ViSW1hZ2U7
CiBjbGFzcyBXZWJJbnNwZWN0b3I7CitjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBX
ZWJLZXlib2FyZEV2ZW50OwogY2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNh
dGlvbkNsaWVudDsKQEAgLTE4OSw2ICsxOTAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIFdlYkluc3BlY3RvciogaW5zcGVjdG9yKCk7CisgICAgV2ViSW5zcGVjdG9y
Q2xpZW50KiBpbnNwZWN0b3JDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckNsaWVu
dDsgfTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtODcxLDYgKzg3
Myw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgV2Vi
Q29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKICNlbmRpZgorICAg
IFdlYkluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkocmV2aXNpb24g
MTIyNzAzKQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVr
Z2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVudDo6b3Bl
bkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQcml2YXRlKToKKyAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmluaXQpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlOjplbmFibGVXZWJJbnNwZWN0b3IpOgorICAgICAg
ICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKFdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEJsYWNrQmVycnk6Om9wZW5JbnNwZWN0b3JGcm9udGVu
ZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5o
OgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeSk6CisKIDIwMTItMDctMTUgIEpv
bmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAg
ICBbQmxhY2tCZXJyeV0gTW92ZSBpY29uIGRhdGFiYXNlIHRvIGFwcGxpY2F0aW9uIGRhdGEgZGly
ZWN0b3J5LgpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNiArMzMwLDcgQEAgdm9pZCBXZWJQYWdlOjphdXRv
ZmlsbFRleHRGaWVsZChjb25zdCBzdAogV2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQcml2YXRlKFdl
YlBhZ2UqIHdlYlBhZ2UsIFdlYlBhZ2VDbGllbnQqIGNsaWVudCwgY29uc3QgSW50UmVjdCYgcmVj
dCkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQorICAg
ICwgbV9pbnNwZWN0b3JDbGllbnQoMCkKICAgICAsIG1fcGFnZSgwKSAvLyBJbml0aWFsaXplZCBi
eSBpbml0LgogICAgICwgbV9tYWluRnJhbWUoMCkgLy8gSW5pdGlhbGl6ZWQgYnkgaW5pdC4KICAg
ICAsIG1fY3VycmVudENvbnRleHROb2RlKDApCkBAIC00ODgsOSArNDg5LDggQEAgdm9pZCBXZWJQ
YWdlUHJpdmF0ZTo6aW5pdChjb25zdCBXZWJTdHJpbgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAgICAgZHJhZ0NsaWVudCA9IG5ldyBEcmFnQ2xpZW50QmxhY2tCZXJyeSgpOwogI2VuZGlmCi0g
ICAgSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeSogaW5zcGVjdG9yQ2xpZW50ID0gMDsKICNpZiBF
TkFCTEUoSU5TUEVDVE9SKQotICAgIGluc3BlY3RvckNsaWVudCA9IG5ldyBJbnNwZWN0b3JDbGll
bnRCbGFja0JlcnJ5KHRoaXMpOworICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkNvcmU6
Okluc3BlY3RvckNsaWVudEJsYWNrQmVycnkodGhpcyk7CiAjZW5kaWYKIAogICAgIEZyYW1lTG9h
ZGVyQ2xpZW50QmxhY2tCZXJyeSogZnJhbWVMb2FkZXJDbGllbnQgPSBuZXcgRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5KCk7CkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0
ZTo6aW5pdChjb25zdCBXZWJTdHJpbgogICAgIHBhZ2VDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50
ID0gY29udGV4dE1lbnVDbGllbnQ7CiAgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gZWRp
dG9yQ2xpZW50OwogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBkcmFnQ2xpZW50OwotICAg
IHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IGluc3BlY3RvckNsaWVudDsKKyAgICBwYWdl
Q2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBtX2luc3BlY3RvckNsaWVudDsKIAogICAgIG1fcGFn
ZSA9IG5ldyBQYWdlKHBhZ2VDbGllbnRzKTsKICNpZiAhZGVmaW5lZChQVUJMSUNfQlVJTEQpIHx8
ICFQVUJMSUNfQlVJTEQKQEAgLTU3MDksNyArNTcwOSwxMCBAQCB2b2lkIFdlYlBhZ2U6Om9uQ2Vy
dGlmaWNhdGVTdG9yZUxvY2F0aW9uCiAKIHZvaWQgV2ViUGFnZTo6ZW5hYmxlV2ViSW5zcGVjdG9y
KCkKIHsKLSAgICBkLT5tX3BhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250
ZW5kKCk7CisgICAgaWYgKCFkLT5tX2luc3BlY3RvckNsaWVudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZC0+bV9wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZChk
LT5tX2luc3BlY3RvckNsaWVudCk7CiAgICAgZC0+bV9wYWdlLT5zZXR0aW5ncygpLT5zZXREZXZl
bG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2VfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZV9wLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcg
QEAKICNkZWZpbmUgV2ViUGFnZV9wX2gKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JP
dmVybGF5LmgiCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgIkdM
RVMyQ29udGV4dC5oIgpAQCAtNDUxLDYgKzQ1Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYlBhZ2Uq
IG1fd2ViUGFnZTsKICAgICBXZWJQYWdlQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5KiBtX2luc3BlY3RvckNsaWVudDsKICAgICBXZWJDb3Jl
OjpQYWdlKiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6RnJhbWUqIG1fbWFpbkZyYW1lOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpOb2RlPiBtX2N1cnJlbnRDb250ZXh0Tm9kZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFj
a0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsMTAgQEAgdm9pZCBJbnNwZWN0
b3JDbGllbnRCbGFja0JlcnJ5OjpoaWRlSGlnaAogICAgIG1fd2ViUGFnZVByaXZhdGUtPnNldElu
c3BlY3Rvck92ZXJsYXlDbGllbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKQorSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5Ojpj
bG9zZUluc3BlY3RvckZyb250ZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJs
YWNrQmVycnkuaAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5X2gK
IAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zMyw3ICszNCw3
IEBAIGNsYXNzIFdlYlBhZ2VQcml2YXRlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEluc3BlY3RvckNsaWVudEJsYWNrQmVycnkgOiBwdWJsaWMgSW5zcGVjdG9yQ2xpZW50LCBwdWJs
aWMgSW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheUNsaWVudCB7CitjbGFzcyBJbnNw
ZWN0b3JDbGllbnRCbGFja0JlcnJ5IDogcHVibGljIEluc3BlY3RvckNsaWVudCwgcHVibGljIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCwgcHVibGljIEluc3BlY3Rvck92ZXJsYXk6Okluc3BlY3Rv
ck92ZXJsYXlDbGllbnQgewogcHVibGljOgogICAgIEluc3BlY3RvckNsaWVudEJsYWNrQmVycnko
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBp
bnNwZWN0b3JEZXN0cm95ZWQoKTsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBoaWdobGlnaHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9s
bGVyKik7CisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0
b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJv
bnQoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjcwMykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTItMDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBn
bWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkx
MTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVm
YWN0b3JpbmcgSW5zcGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQKKyAgICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLgorCisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAg
ICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmg6CisgICAgICAgIChJbnNwZWN0b3JDbGll
bnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6cmVhdHRhY2gpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAg
ICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaDoKKyAgICAgICAgKFdlYkRldlRvb2xzQWdl
bnRJbXBsKToKKwogMjAxMi0wNy0xMyAgRXJpYyBQZW5uZXIgIDxlcGVubmVyQGdvb2dsZS5jb20+
CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgJ3NlbGYtbWFuYWdlZCcgb3B0aW9uIHRvIENDUHJp
b3JpdGl6ZWRUZXh0dXJlIHRvIGVuYWJsZSByZW5kZXItc3VyZmFjZSBhbmQgY2FudmFzIHVzZSBj
YXNlcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3Rv
ckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTAg
KzY1LDExIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6aW5zcGVjdG9yRGVzdHIKICAgICAg
ICAgYWdlbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNsaWVu
dEltcGw6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9s
bGVyKQorSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JDbGllbnRJbXBsOjpvcGVu
SW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKICAg
ICBpZiAoV2ViRGV2VG9vbHNBZ2VudEltcGwqIGFnZW50ID0gZGV2VG9vbHNBZ2VudCgpKQotICAg
ICAgICBhZ2VudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKGNvbnRyb2xsZXIpOworICAgICAgICBy
ZXR1cm4gYWdlbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZChjb250cm9sbGVyKTsKKyAgICByZXR1
cm4gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpjbG9zZUluc3BlY3RvckZyb250
ZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudElt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JD
bGllbnRJbXBsLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0luc3BlY3RvckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAt
NDMsNiArNDQsNyBAQCBjbGFzcyBXZWJEZXZUb29sc0FnZW50SW1wbDsKIGNsYXNzIFdlYlZpZXdJ
bXBsOwogCiBjbGFzcyBJbnNwZWN0b3JDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBXZWJUaHJlYWQ6OlRhc2tPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xp
ZW50SW1wbChXZWJWaWV3SW1wbCopOwpAQCAtNTAsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBJbnNwZWN0b3JDbGllbnQgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVz
dHJveWVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAko
cmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBX
ZWJEZXZUb29sc0FnZW50SW1wbDo6YXR0YWNoKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2xp
ZW50TWVzc2FnZUxvb3BBZGFwdGVyOjplbnN1cmVDbGllbnRNZXNzYWdlTG9vcENyZWF0ZWQobV9j
bGllbnQpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKCk7Cisg
ICAgaW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhpcyk7CiAgICAgbV9h
dHRhY2hlZCA9IHRydWU7CiB9CiAKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIFdlYkRldlRvb2xz
QWdlbnRJbXBsOjpyZWF0dGFjaChjb25zCiAgICAgICAgIHJldHVybjsKIAogICAgIENsaWVudE1l
c3NhZ2VMb29wQWRhcHRlcjo6ZW5zdXJlQ2xpZW50TWVzc2FnZUxvb3BDcmVhdGVkKG1fY2xpZW50
KTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21D
b29raWUoc2F2ZWRTdGF0ZSk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlcigpLT5yZWNvbm5lY3RG
cm9udGVuZCh0aGlzLCBzYXZlZFN0YXRlKTsKICAgICBtX2F0dGFjaGVkID0gdHJ1ZTsKIH0KIApA
QCAtNDkyLDggKzQ5Miw5IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6Omluc3BlY3RvckRl
c3QKICAgICAvLyBPdXIgbGlmZXRpbWUgaXMgYm91bmQgdG8gdGhlIFdlYlZpZXdJbXBsLgogfQog
Ci12b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciopCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkRldlRvb2xzQWdl
bnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiB7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmNsb3NlSW5zcGVj
dG9yRnJvbnRlbmQoKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5oCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAjZGVmaW5lIFdlYkRldlRvb2xzQWdlbnRJbXBsX2gKIAogI2luY2x1ZGUg
Ikluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IgogCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQ
YWdlT3ZlcmxheS5oIgpAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdl
RGF0YTsKIAogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudEltcGwgOiBwdWJsaWMgV2ViRGV2VG9vbHNB
Z2VudFByaXZhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBXZWJQYWdlT3ZlcmxheSB7CiBwdWJsaWM6CiAgICAgV2ViRGV2VG9vbHNB
Z2VudEltcGwoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLCBXZWJEZXZUb29sc0FnZW50Q2xpZW50
KiBjbGllbnQpOwpAQCAtODgsNyArOTAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbnNwZWN0b3JD
bGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3ll
ZCgpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlciopOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAg
PHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFj
dG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVu
dDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6Om9w
ZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50RWZsLmg6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRFZmwpOgorCiAyMDEyLTA3LTE1
ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxd
IEFkZCBhIEFQSSBmb3IgZ2V0dGluZyBzZWN1cml0eSBvcmlnaW4gc3RyaW5nCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEVmbC5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEzICs3
MiwxMyBAQCB2b2lkIEluc3BlY3RvckNsaWVudEVmbDo6aW5zcGVjdG9yRGVzdHJvCiAgICAgZGVs
ZXRlIHRoaXM7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIElu
c3BlY3RvckNsaWVudEVmbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xs
ZXIqKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV9pbnNwZWN0ZWRW
aWV3LCAiaW5zcGVjdG9yLHZpZXcsY3JlYXRlIiwgMCk7CiAKICAgICBFdmFzX09iamVjdCogaW5z
cGVjdG9yVmlldyA9IGV3a192aWV3X3dlYl9pbnNwZWN0b3Jfdmlld19nZXQobV9pbnNwZWN0ZWRW
aWV3KTsKICAgICBpZiAoIWluc3BlY3RvclZpZXcpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBtX2luc3BlY3RvclZpZXcgPSBpbnNwZWN0b3JWaWV3OwogCkBAIC05
MCw2ICs5MCw4IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnIKIAog
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBFV0tQcml2YXRlOjpjb3JlUGFn
ZShtX2luc3BlY3RvclZpZXcpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgY29udHJvbGxl
ci0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsK
KyAgICAKKyAgICByZXR1cm4gdGhpczsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRFZmw6OmNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgJKHJldmlzaW9uIDEyMjcwMykK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCIK
ICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQzLDE0ICs0
NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dEVmbDsKIGNsYXNzIFBhZ2U7CiAKLWNsYXNzIEluc3BlY3RvckNsaWVudEVmbCA6IHB1YmxpYyBJ
bnNwZWN0b3JDbGllbnQgeworY2xhc3MgSW5zcGVjdG9yQ2xpZW50RWZsIDogcHVibGljIEluc3Bl
Y3RvckNsaWVudCwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgSW5zcGVjdG9yQ2xpZW50RWZsKEV2YXNfT2JqZWN0Kik7CiAgICAgfkluc3Bl
Y3RvckNsaWVudEVmbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250
cm9sbGVyKik7CisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNw
ZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRv
RnJvbnQoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNzAzKQorKysgU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTItMDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFpbC5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29u
bmVjdEZyb250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMTk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgSW5z
cGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQKKyAg
ICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oOgorICAgICAgICAoSW5zcGVjdG9y
Q2xpZW50KToKKwogMjAxMi0wNy0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFdlYkNvcmU6OlNldHRpbmdzIGZvciBIaXhpZTc2IFdlYlNvY2tldCBwcm90b2Nv
bCBkb2Vzbid0IGRvIGFueXRoaW5nIGFuZCBzaG91bGQgYmUgcmVtb3ZlZApJbmRleDogU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRH
dGsuY3BwCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQKICAgICBkZWxldGUg
dGhpczsKIH0KIAotdm9pZCBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJ
bnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQorSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9s
bGVyKiBjb250cm9sbGVyKQogewogICAgIC8vIFRoaXMgZ19vYmplY3RfZ2V0IHdpbGwgcmVmIHRo
ZSBpbnNwZWN0b3IuIFdlJ3JlIG5vdCBkb2luZyBhbgogICAgIC8vIHVucmVmIGlmIHRoaXMgbWV0
aG9kIHN1Y2NlZWRzIGJlY2F1c2UgdGhlIGluc3BlY3RvciBvYmplY3QgbXVzdApAQCAtOTksNyAr
OTksNyBAQCB2b2lkIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250CiAKICAgICBp
ZiAoIWluc3BlY3RvcldlYlZpZXcpIHsKICAgICAgICAgZ19vYmplY3RfdW5yZWYod2ViSW5zcGVj
dG9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICB3
ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfd2ViX3ZpZXcod2ViSW5zcGVjdG9yLCBpbnNwZWN0b3JX
ZWJWaWV3KTsKQEAgLTExNyw2ICsxMTcsOCBAQCB2b2lkIEluc3BlY3RvckNsaWVudDo6b3Blbklu
c3BlY3RvckZyb250CiAKICAgICAvLyBUaGUgaW5zcGVjdG9yIG11c3QgYmUgaW4gaXQncyBvd24g
UGFnZUdyb3VwIHRvIGF2b2lkIGRlYWRsb2NrIHdoaWxlIGRlYnVnZ2luZy4KICAgICBtX2Zyb250
ZW5kUGFnZS0+c2V0R3JvdXBOYW1lKCIiKTsKKyAgICAKKyAgICByZXR1cm4gdGhpczsKIH0KIAog
dm9pZCBJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRleDogU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
R3RrLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAjZGVmaW5lIEluc3BlY3RvckNsaWVudEd0a19oCiAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGll
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5o
IgogI2luY2x1ZGUgIndlYmtpdHdlYmluc3BlY3Rvci5oIgpAQCAtNDUsNyArNDYsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogCi0g
ICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dCB7CisgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiAgICAg
cHVibGljOgogICAgICAgICBJbnNwZWN0b3JDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldyk7
CiAgICAgICAgIH5JbnNwZWN0b3JDbGllbnQoKTsKQEAgLTU0LDcgKzU1LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlciopOworICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTE2ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRv
IGFjY2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIElu
c3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5p
bmcgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisKIDIwMTItMDct
MTUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXgg
Y2FzZSBzZW5zaXRpdmUgYnVpbGQgaXNzdWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkocmV2aXNpb24gMTIy
NzAzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICAqLwogCiAjaW1wb3J0IDxX
ZWJDb3JlL0luc3BlY3RvckNsaWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgogCkBAIC01NCwxMyAr
NTUsMTMgQEAgY2xhc3MgUGFnZTsKIAogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7
CiAKLWNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQgeworY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBw
dWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
b3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Bl
bkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBPVkVSUklERTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0JKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTIsNyArOTIsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJvCiAg
ICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKIHsKICAg
ICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlcj4gd2luZG93Q29udHJvbGxl
cihBZG9wdE5TLCBbW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRo
SW5zcGVjdGVkV2ViVmlldzptX3dlYlZpZXddKTsKICAgICBbd2luZG93Q29udHJvbGxlci5nZXQo
KSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CkBAIC0xMDMsNiArMTAzLDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcgogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0
b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQoQWRvcHROUywgW1tXZWJJbnNwZWN0b3JG
cm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDpmcm9udGVuZENsaWVudC5nZXQo
KV0pOwogICAgIFtbbV93ZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9y
RnJvbnRlbmQuZ2V0KCldOwogICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KGZyb250ZW5kQ2xpZW50LnJlbGVhc2UoKSk7
CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUlu
c3BlY3RvckZyb250ZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjI3MDMpCisr
KyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5
IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5n
IEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5k
CisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmF0dGFjaEFuZFJlcGxhY2VSZW1vdGVG
cm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoK
KyAgICAgICAgKEluc3BlY3RvckNsaWVudFF0KToKKwogMjAxMi0wNy0xNiAgRnJlZGVyaWsgR2xh
ZGhvcm4gIDxmcmVkZXJpay5nbGFkaG9ybkBub2tpYS5jb20+CiAKICAgICAgICAgQWNjZXNzaWJs
ZSBXaWRnZXQgZm9yIFFXZWJWaWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAkocmV2aXNpb24gMTIyNzAzKQor
KysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMSw4ICsyMDEsOSBAQCB2b2lkIEluc3BlY3RvckNsaWVudFF0
OjppbnNwZWN0b3JEZXN0cm95CiB9CiAKICAgICAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6Om9w
ZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyKQorV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0
b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCiB7CisgICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSAwOwogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgT3duUHRyPFFXZWJWaWV3PiBpbnNwZWN0b3JWaWV3ID0gYWRvcHRQdHIobmV3IFFXZWJW
aWV3KTsKICAgICAvLyBGSVhNRTogV2hlcmUgZG9lcyBpbnNwZWN0b3JQYWdlIGdldCBkZWxldGVk
PwpAQCAtMjEyLDcgKzIxMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0
b3JGcm8KICAgICBRV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBtX2luc3BlY3RlZFdlYlBhZ2Ut
PmQtPmdldE9yQ3JlYXRlSW5zcGVjdG9yKCk7CiAgICAgLy8gUmVtb3RlIGZyb250ZW5kIHdhcyBh
dHRhY2hlZC4KICAgICBpZiAobV9yZW1vdGVGcm9udEVuZENoYW5uZWwpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBUaGlzIGlzIGEga25vd24gaG9vayB0aGF0
IGFsbG93cyBjaGFuZ2luZyB0aGUgZGVmYXVsdCBVUkwgZm9yIHRoZQogICAgIC8vIFdlYiBpbnNw
ZWN0b3IuIFRoaXMgaXMgdXNlZCBmb3IgU0RLIHB1cnBvc2VzLiBQbGVhc2Uga2VlcCB0aGlzIGhv
b2sKQEAgLTI0Myw3ICsyNDQsOSBAQCB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVj
dG9yRnJvCiAKICAgICAvLyBXZWIgSW5zcGVjdG9yIHNob3VsZCBub3QgYmVsb25nIHRvIGFueSBv
dGhlciBwYWdlIGdyb3VwcyBzaW5jZSBpdCBpcyBhIHNwZWNpYWxpemVkIGRlYnVnZ2VyIHdpbmRv
dy4KICAgICBtX2Zyb250ZW5kV2ViUGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldEdyb3VwTmFtZSgi
X19XZWJJbnNwZWN0b3JQYWdlR3JvdXBfXyIpOworICAgIGZyb250ZW5kQ2hhbm5lbCA9IHRoaXM7
CiAjZW5kaWYKKyAgICByZXR1cm4gZnJvbnRlbmRDaGFubmVsOwogfQogCiB2b2lkIEluc3BlY3Rv
ckNsaWVudFF0OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKQEAgLTI3MSw3ICsyNzQsNyBAQCB2
b2lkIEluc3BlY3RvckNsaWVudFF0OjphdHRhY2hBbmRSZXBsYWNlCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBtX3JlbW90ZUZyb250RW5kQ2hhbm5lbCA9IGNoYW5uZWw7Ci0gICAgbV9p
bnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVu
ZCgpOworICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5j
b25uZWN0RnJvbnRlbmQodGhpcyk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaAkocmV2aXNpb24g
MTIyNzAzKQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIEluc3BlY3Rv
ckNsaWVudFF0X2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuaCIKICNpbmNsdWRlIDxRdENvcmUvUVN0cmluZz4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgpAQCAtNDUsMTMgKzQ2LDEzIEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
UXQ7CiBjbGFzcyBJbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0OwogY2xhc3MgUGFnZTsK
IAotY2xhc3MgSW5zcGVjdG9yQ2xpZW50UXQgOiBwdWJsaWMgSW5zcGVjdG9yQ2xpZW50IHsKK2Ns
YXNzIEluc3BlY3RvckNsaWVudFF0IDogcHVibGljIEluc3BlY3RvckNsaWVudCwgcHVibGljIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xpZW50UXQo
UVdlYlBhZ2UqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlciopOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciop
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAgICAgdmlydHVh
bCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVr
Z2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVudDo6b3Bl
bkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9u
dGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQpOgorCiAyMDEyLTA3LTE0ICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBBVkNGIGhhcmR3YXJl
IHZpZGVvIGRlY29kaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
Omluc3BlY3RvckRlc3RybwogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIpCitXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYklu
c3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIpCiB7CiAgICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOwogCkBA
IC05NiwyMSArOTYsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JG
cgogICAgICAgICAwLCAwLCAwLCAwKTsKIAogICAgIGlmICghZnJvbnRlbmRId25kKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAgQ09NUHRyPFdlYlZpZXc+IGZyb250
ZW5kV2ViVmlldyhBZG9wdENPTSwgV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKSk7CiAKICAgICBp
ZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+c2V0SG9zdFdpbmRvdygoT0xFX0hBTkRMRSkoVUxP
Tkc2NClmcm9udGVuZEh3bmQpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsK
IAogICAgIFJFQ1QgcmVjdDsKICAgICBHZXRDbGllbnRSZWN0KGZyb250ZW5kSHduZCwgJnJlY3Qp
OwogICAgIGlmIChGQUlMRUQoZnJvbnRlbmRXZWJWaWV3LT5pbml0V2l0aEZyYW1lKHJlY3QsIDAs
IDApKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIENPTVB0cjxX
ZWJJbnNwZWN0b3JEZWxlZ2F0ZT4gZGVsZWdhdGUoQWRvcHRDT00sIFdlYkluc3BlY3RvckRlbGVn
YXRlOjpjcmVhdGVJbnN0YW5jZSgpKTsKICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+
c2V0VUlEZWxlZ2F0ZShkZWxlZ2F0ZS5nZXQoKSkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiAwOwogCiAgICAgLy8gS2VlcCBwcmVmZXJlbmNlcyBzZXBhcmF0ZSBmcm9tIHRoZSBy
ZXN0IG9mIHRoZSBjbGllbnQsIG1ha2luZyBzdXJlIHdlIGFyZSB1c2luZyBleHBlY3RlZCBwcmVm
ZXJlbmNlIHZhbHVlcy4KICAgICAvLyBGSVhNRTogSXQncyBjcmF6eSB0aGF0IHdlIGhhdmUgdG8g
ZG8gdGhpcyBzb25nIGFuZCBkYW5jZSB0byBlbmQgdXAgd2l0aApAQCAtMTIwLDY0ICsxMjAsNjUg
QEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcgogICAgIENPTVB0cjxX
ZWJQcmVmZXJlbmNlcz4gdGVtcFByZWZlcmVuY2VzKEFkb3B0Q09NLCBXZWJQcmVmZXJlbmNlczo6
Y3JlYXRlSW5zdGFuY2UoKSk7CiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlcz4gaVByZWZlcmVu
Y2VzOwogICAgIGlmIChGQUlMRUQodGVtcFByZWZlcmVuY2VzLT5pbml0V2l0aElkZW50aWZpZXIo
QlN0cmluZyhMIldlYkluc3BlY3RvclByZWZlcmVuY2VzIiksICZpUHJlZmVyZW5jZXMpKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICBDT01QdHI8V2ViUHJlZmVyZW5j
ZXM+IHByZWZlcmVuY2VzKFF1ZXJ5LCBpUHJlZmVyZW5jZXMpOwogICAgIGlmICghcHJlZmVyZW5j
ZXMpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChw
cmVmZXJlbmNlcy0+c2V0QXV0b3NhdmVzKEZBTFNFKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0TG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KFRSVUUpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxl
ZChUUlVFKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZB
SUxFRChwcmVmZXJlbmNlcy0+c2V0QWxsb3dzQW5pbWF0ZWRJbWFnZXMoVFJVRSkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMt
PnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShUUlVFKSkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0UGx1Z0luc0Vu
YWJsZWQoRkFMU0UpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICBp
ZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRKYXZhRW5hYmxlZChGQUxTRSkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMtPnNl
dFVzZXJTdHlsZVNoZWV0RW5hYmxlZChGQUxTRSkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMtPnNldFRhYnNUb0xpbmtzKEZB
TFNFKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxF
RChwcmVmZXJlbmNlcy0+c2V0TWluaW11bUZvbnRTaXplKDApKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRNaW5pbXVt
TG9naWNhbEZvbnRTaXplKDkpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRGaXhlZEZvbnRGYW1pbHkoQlN0cmluZyhM
IkNvdXJpZXIgTmV3IikpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAg
ICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZSgxMykpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKEZBSUxFRChmcm9u
dGVuZFdlYlZpZXctPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBmcm9udGVuZFdlYlZpZXctPnNldFBy
b2hpYml0c01haW5GcmFtZVNjcm9sbGluZyhUUlVFKTsKIAogICAgIEhXTkQgZnJvbnRlbmRXZWJW
aWV3SHduZDsKICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+dmlld1dpbmRvdyhyZWlu
dGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmZnJvbnRlbmRXZWJWaWV3SHduZCkpKSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJM
UmVxdWVzdD4gcmVxdWVzdChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUlu
c3RhbmNlKCkpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodG1sVVJMUmVmKEFkb3B0Q0Ys
IENGQnVuZGxlQ29weVJlc291cmNlVVJMKGdldFdlYktpdEJ1bmRsZSgpLCBDRlNUUigiaW5zcGVj
dG9yIiksIENGU1RSKCJodG1sIiksIENGU1RSKCJpbnNwZWN0b3IiKSkpOwogICAgIGlmICghaHRt
bFVSTFJlZikKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIENGU3Ry
aW5nUmVmIHVybFN0cmluZ1JlZiA9IDo6Q0ZVUkxHZXRTdHJpbmcoaHRtbFVSTFJlZi5nZXQoKSk7
CiAgICAgaWYgKEZBSUxFRChyZXF1ZXN0LT5pbml0V2l0aFVSTChCU3RyaW5nKHVybFN0cmluZ1Jl
ZiksIFdlYlVSTFJlcXVlc3RVc2VQcm90b2NvbENhY2hlUG9saWN5LCA2MCkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZp
ZXctPnRvcExldmVsRnJhbWUoKS0+bG9hZFJlcXVlc3QocmVxdWVzdC5nZXQoKSkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3Jl
KGZyb250ZW5kV2ViVmlldy5nZXQoKSk7CiAgICAgT3duUHRyPFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50PiBmcm9udGVuZENsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIGZyb250
ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVh
dGVGcm9udGVuZFNldHRpbmdzKCkpKTsKICAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRD
bGllbnQuZ2V0KCk7CiAgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKICAg
ICBtX2Zyb250ZW5kSHduZCA9IGZyb250ZW5kSHduZDsKKyAgICByZXR1cm4gdGhpczsKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9X
aW5kb3dNZXNzYWdlTGlzdGVuZXIuaD4KQEAgLTUwLDE0ICs1MSwxNCBAQCBjbGFzcyBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBjbGFzcyBXZWJW
aWV3OwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwg
ewogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3Kik7CiAKICAgICAvLyBJ
bnNwZWN0b3JDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIq
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIHZpcnR1
YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNy0xNiAgVml2ZWsgR2FsYXRhZ2Ug
IDx2aXZla2dhbGF0YWdlQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZh
Y3RvciBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTExOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZWZhY3RvcmluZyBJbnNwZWN0b3JDbGllbnRzLiBJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZAorICAgICAgICBub3cgcmV0dXJuaW5nIHRoZSBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudFdpbkNF
OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFdpbkNFLmg6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRXaW5DRSk6CisKIDIw
MTItMDUtMzEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMTE3NTcyKTogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5j
LXJlbW92ZS1mcmFtZS5odG1sIGNyYXNoZXMgb24gTWFjCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNF
LmNwcAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1
LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50V2luQ0U6Omluc3BlY3RvckRlc3QKICAgICBkZWxl
dGUgdGhpczsKIH0KIAotdm9pZCBJbnNwZWN0b3JDbGllbnRXaW5DRTo6b3Blbkluc3BlY3RvckZy
b250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIEluc3BlY3RvckNsaWVudFdpbkNFOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5z
cGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudFdpbkNFOjpjbG9zZUluc3Bl
Y3RvckZyb250ZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50V2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmgJKHJldmlzaW9uIDEyMjcwMykK
KysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2lu
Q0UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTkgKzI2LDIwIEBACiAjZGVmaW5lIEluc3BlY3Rv
ckNsaWVudFdpbkNFX2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogCiBjbGFzcyBXZWJWaWV3OwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgSW5zcGVjdG9yQ2xpZW50V2luQ0UgOiBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50IHsKK2NsYXNzIEluc3BlY3RvckNsaWVudFdpbkNFIDogcHVibGlj
IFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xpZW50V2luQ0UoV2ViVmlldyog
d2ViVmlldyk7CiAgICAgfkluc3BlY3RvckNsaWVudFdpbkNFKCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3Rv
ckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNw
ZWN0b3JGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNy0x
NiAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dhbGF0YWdlQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiByZWZhY3RvciBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQoKSB0byBhY2NlcHQgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExOTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZyBJbnNwZWN0b3JDbGll
bnRzLiBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZAorICAgICAgICBub3cg
cmV0dXJuaW5nIHRoZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudFd4OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYktpdFN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudFd4KToK
KwogMjAxMi0wNy0wMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEbyBub3QgZG8gYW55IGxvZ2dpbmcgaW5pdGlhbGl6YXRpb24gd2hlbiBsb2dnaW5n
IGlzIGRpc2FibGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDkgKzQ3LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50V3g6Omluc3BlY3RvckRl
c3Ryb3kKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNsaWVudFd4
OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopCitJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3RvckNsaWVudFd4OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6Y2xv
c2VJbnNwZWN0b3JGcm9udGVuZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaAkocmV2aXNpb24gMTIyNzAzKQorKysgU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDIwICsyNywyMSBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRXeF9oCiAK
ICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFBhZ2U7CiAKLWNsYXNzIEluc3BlY3RvckNsaWVudFd4IDogcHVibGljIElu
c3BlY3RvckNsaWVudCB7CitjbGFzcyBJbnNwZWN0b3JDbGllbnRXeCA6IHB1YmxpYyBJbnNwZWN0
b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgogICAg
IEluc3BlY3RvckNsaWVudFd4KCk7CiAgICAgfkluc3BlY3RvckNsaWVudFd4KCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Bl
bkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2
aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNw
ZWN0b3JGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgp
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152699</attachid>
            <date>2012-07-16 23:00:59 -0700</date>
            <delta_ts>2012-07-17 02:30:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91196-20120717113015.patch</filename>
            <type>text/plain</type>
            <size>50260</size>
            <attacher name="Vivek Galatage">vivekgalatage</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA3LTE2ICBWaXZlayBH
YWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFj
Y2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcg
dGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4gQWxzbyByZWZhY3RvcmVkCisgICAgICAgIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIHJlY2VpdmUKKyAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGFzIGNvZGUg
cmVmYWN0b3JpbmcgZG9uZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OnJlY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFbXB0eUluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxp
Z2h0KToKKwogMjAxMi0wNy0xNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMjY4MS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgJKHJldmlzaW9uIDEy
MjcwMykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjMgKzI3LDIzIEBACiAjaWZuZGVmIEluc3BlY3RvckNsaWVudF9o
CiAjZGVmaW5lIEluc3BlY3RvckNsaWVudF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZUNsaWVudC5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9y
Q29udHJvbGxlcjsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEZyYW1l
OwogY2xhc3MgUGFnZTsKIAotY2xhc3MgSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCwgcHVibGljIEluc3BlY3RvclN0YXRlQ2xpZW50IHsKK2NsYXNzIElu
c3BlY3RvckNsaWVudCA6IHB1YmxpYyBJbnNwZWN0b3JTdGF0ZUNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yQ2xpZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5z
cGVjdG9yRGVzdHJveWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JG
cm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgPSAwOworICAgIHZpcnR1YWwgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxl
ciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTIy
NzAzKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Oklu
c3BlY3RvckNvbnRyb2xsZXIKICAgICAsIG1fc3RhdGUoYWRvcHRQdHIobmV3IEluc3BlY3RvclN0
YXRlKGluc3BlY3RvckNsaWVudCkpKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3Bl
Y3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCisgICAgLCBtX2luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCgwKQogewogICAgIE93blB0cjxJbnNwZWN0b3JBZ2VudD4gaW5zcGVjdG9yQWdlbnRQdHIo
SW5zcGVjdG9yQWdlbnQ6OmNyZWF0ZShwYWdlLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpKSk7CiAgICAgbV9p
bnNwZWN0b3JBZ2VudCA9IGluc3BlY3RvckFnZW50UHRyLmdldCgpOwpAQCAtMjA4LDkgKzIwOSwx
MiBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENsZWFyV2luZG93CiAgICAgICAgIG1f
aW5zcGVjdG9yRnJvbnRlbmRDbGllbnQtPndpbmRvd09iamVjdENsZWFyZWQoKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKQordm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwpCiB7Ci0gICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJ
bnNwZWN0b3JGcm9udGVuZChtX2luc3BlY3RvckNsaWVudCkpOworICAgIEFTU0VSVChmcm9udGVu
ZENoYW5uZWwpOworCisgICAgbV9pbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgPSBmcm9udGVuZENo
YW5uZWw7CisgICAgbV9pbnNwZWN0b3JGcm9udGVuZCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JG
cm9udGVuZChtX2luc3BlY3RvckZyb250ZW5kQ2hhbm5lbCkpOwogICAgIC8vIFdlIGNhbiByZWNv
bm5lY3QgdG8gZXhpc3RpbmcgZnJvbnQtZW5kIC0+IHVubXV0ZSBzdGF0ZS4KICAgICBtX3N0YXRl
LT51bm11dGUoKTsKIApAQCAtMjIzLDcgKzIyNyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6Y29ubmVjdEZyb250ZW4KICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5k
Q3JlYXRlZCgpOwogCiAgICAgQVNTRVJUKG1faW5zcGVjdG9yQ2xpZW50KTsKLSAgICBtX2luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0
ZShtX2luc3BlY3RvckNsaWVudCk7CisgICAgbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9
IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9pbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwpOwogCiAgICAgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqIGRpc3BhdGNoZXIgPSBt
X2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmdldCgpOwogICAgIGZvciAoQWdlbnRzOjppdGVy
YXRvciBpdCA9IG1fYWdlbnRzLmJlZ2luKCk7IGl0ICE9IG1fYWdlbnRzLmVuZCgpOyArK2l0KQpA
QCAtMjU5LDggKzI2Myw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCiAgICAg
aWYgKG1faW5zcGVjdG9yRnJvbnRlbmQpCiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LT5icmlu
Z0Zyb250ZW5kVG9Gcm9udCgpOwogICAgIGVsc2UgewotICAgICAgICBtX2luc3BlY3RvckNsaWVu
dC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpOwotICAgICAgICBjb25uZWN0RnJvbnRlbmQo
KTsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSBt
X2luc3BlY3RvckNsaWVudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKHRoaXMpOworICAgICAgICBp
ZiAoZnJvbnRlbmRDaGFubmVsKQorICAgICAgICAgICAgY29ubmVjdEZyb250ZW5kKGZyb250ZW5k
Q2hhbm5lbCk7CiAgICAgfQogfQogCkBAIC0yNzIsMTAgKzI3NywxMCBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmNsb3NlKCkKICAgICBtX2luc3BlY3RvckNsaWVudC0+Y2xvc2VJbnNwZWN0
b3JGcm9udGVuZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNw
ZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTdGF0ZUNvb2tpZSkK
K3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cmVjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwsIGNvbnN0IFN0cmluZyYgaW5zcGVjdG9yU3Rh
dGVDb29raWUpCiB7CiAgICAgQVNTRVJUKCFtX2luc3BlY3RvckZyb250ZW5kKTsKLSAgICBjb25u
ZWN0RnJvbnRlbmQoKTsKKyAgICBjb25uZWN0RnJvbnRlbmQoZnJvbnRlbmRDaGFubmVsKTsKICAg
ICBtX3N0YXRlLT5sb2FkRnJvbUNvb2tpZShpbnNwZWN0b3JTdGF0ZUNvb2tpZSk7CiAKICAgICBm
b3IgKEFnZW50czo6aXRlcmF0b3IgaXQgPSBtX2FnZW50cy5iZWdpbigpOyBpdCAhPSBtX2FnZW50
cy5lbmQoKTsgKytpdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAs
NyBAQCBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNs
YXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZDsKK2Ns
YXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDsKQEAgLTg1LDkgKzg2LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdl
RnJvbUZyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBib29sIGhhc0Zyb250
ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9pbnNwZWN0b3JGcm9udGVuZDsgfQotICAgIHZvaWQgY29u
bmVjdEZyb250ZW5kKCk7CisgICAgdm9pZCBjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKik7CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbnRlbmQoKTsKLSAgICB2b2lkIHJl
c3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JDb29r
aWUpOworICAgIHZvaWQgcmVjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiwgY29uc3QgU3RyaW5nJiBpbnNwZWN0b3JTdGF0ZUNvb2tpZSk7CiAgICAgdm9pZCBzZXRQcm9j
ZXNzSWQobG9uZyk7CiAKICAgICB2b2lkIGluc3BlY3QoTm9kZSopOwpAQCAtMTM0LDYgKzEzNSw3
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kPiBtX2luc3BlY3RvckZy
b250ZW5kOwogICAgIFBhZ2UqIG1fcGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1faW5zcGVj
dG9yQ2xpZW50OworICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogbV9pbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWw7CiAgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPEluc3BlY3RvckJhc2VBZ2Vu
dEludGVyZmFjZT4gPiBBZ2VudHM7CiAgICAgQWdlbnRzIG1fYWdlbnRzOwogfTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTY5LDE0
ICs1NjksMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3ll
ZCgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5z
cGVjdG9yQ29udHJvbGxlciopIHsgfQorICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopIHsgcmV0dXJu
IDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIHsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGhpZ2hsaWdodCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KCkgeyB9
Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYp
IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiBjbGFzcyBFbXB0eURldmljZU1vdGlvbkNsaWVudCA6
IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGllbnQgewpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTIy
NzAzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTItMDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFp
bC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgSW5zcGVjdG9yQ29udHJv
bGxlcjo6Y29ubmVjdEZyb250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMTk2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0
b3JpbmcgSW5zcGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQKKyAgICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudCk6CisKIDIwMTItMDct
MTUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAg
ICAgICBbRUZMXVtXSzJdIERlZmluZSBkZXN0cnVjdG9ycyBmb3IgRXdrIHN0cnVjdHVyZXMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDExIEBAIHZvaWQgV2ViSW5zcGVjdG9y
Q2xpZW50OjppbnNwZWN0b3JEZXN0cm8KICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVy
KikKK1dlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50
OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiB7CiAgICAgV2Vi
UGFnZSogaW5zcGVjdG9yUGFnZSA9IG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0ZUluc3BlY3Rv
clBhZ2UoKTsKICAgICBBU1NFUlRfVU5VU0VEKGluc3BlY3RvclBhZ2UsIGluc3BlY3RvclBhZ2Up
OworICAgIHJldHVybiB0aGlzOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6Y2xvc2VJ
bnNwZWN0b3JGcm9udGVuZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHJldmlz
aW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJQYWdlT3ZlcmxheS5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JDbGll
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpAQCAtNDEsNyAr
NDIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAotY2xhc3MgV2Vi
SW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHJpdmF0
ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1Ymxp
YyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwsIHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAg
V2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9wYWdlKHBhZ2Up
CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGlu
c3BlY3RvckRlc3Ryb3llZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNw
ZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVu
ZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
YnJpbmdGcm9udGVuZFRvRnJvbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVz
aXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAkocmV2aXNp
b24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE0ICsyNywxNSBAQAogI2luY2x1ZGUgIldl
Ykluc3BlY3Rvci5oIgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLQogI2luY2x1ZGUgIldlYkZy
YW1lLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JDb250cm9sbGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC0yNTUsOCArMjU2LDkgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnJlbW90ZUZy
b250ZW5kQ29ubmVjdAogICAgIEFTU0VSVCghbV9yZW1vdGVGcm9udGVuZENvbm5lY3RlZCk7CiAg
ICAgLy8gU3dpdGNoaW5nIGJldHdlZW4gaW4tcHJvY2VzcyBhbmQgcmVtb3RlIGluc3BlY3RvcnMg
aXNuJ3Qgc3VwcG9ydGVkIHlldC4KICAgICBBU1NFUlQoIW1faW5zcGVjdG9yUGFnZSk7Ci0KLSAg
ICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250
ZW5kKCk7CisgICAgCisgICAgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsID0gbV9w
YWdlLT5pbnNwZWN0b3JDbGllbnQoKTsKKyAgICBtX3BhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKGNoYW5uZWwpOwogICAgIG1fcmVtb3RlRnJv
bnRlbmRDb25uZWN0ZWQgPSB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NSw2ICsyNDUsNyBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QK
ICNpZiBFTkFCTEUoUEFHRV9WSVNJQklMSVRZX0FQSSkKICAgICAsIG1fdmlzaWJpbGl0eVN0YXRl
KFdlYkNvcmU6OlBhZ2VWaXNpYmlsaXR5U3RhdGVWaXNpYmxlKQogI2VuZGlmCisgICAgLCBtX2lu
c3BlY3RvckNsaWVudCgwKQogewogICAgIEFTU0VSVChtX3BhZ2VJRCk7CiAgICAgLy8gRklYTUU6
IFRoaXMgaXMgYSBub24taWRlYWwgbG9jYXRpb24gZm9yIHRoaXMgU2V0dGluZyBhbmQKQEAgLTI2
Miw3ICsyNjMsOCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QKICNl
bmRpZgogICAgIHBhZ2VDbGllbnRzLmJhY2tGb3J3YXJkQ2xpZW50ID0gV2ViQmFja0ZvcndhcmRM
aXN0UHJveHk6OmNyZWF0ZSh0aGlzKTsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIHBhZ2VD
bGllbnRzLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7Cisg
ICAgbV9pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpOworICAg
IHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50OwogI2VuZGlm
CiAjaWYgVVNFKEFVVE9DT1JSRUNUSU9OX1BBTkVMKQogICAgIHBhZ2VDbGllbnRzLmFsdGVybmF0
aXZlVGV4dENsaWVudCA9IG5ldyBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQodGhpcyk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9u
IDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMSw2ICsxMzEsNyBAQCBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyOwogY2xhc3MgV2ViSW1hZ2U7CiBjbGFzcyBXZWJJbnNwZWN0
b3I7CitjbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBXZWJLZXlib2FyZEV2ZW50Owog
Y2xhc3MgV2ViTW91c2VFdmVudDsKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudDsKQEAgLTE4
OSw2ICsxOTAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFdlYklu
c3BlY3RvciogaW5zcGVjdG9yKCk7CisgICAgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JD
bGllbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckNsaWVudDsgfTsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtODcxLDYgKzg3Myw3IEBAIHByaXZhdGU6CiAj
aWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgV2ViQ29yZTo6UGFnZVZpc2liaWxp
dHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKICNlbmRpZgorICAgIFdlYkluc3BlY3RvckNsaWVu
dCogbV9pbnNwZWN0b3JDbGllbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0
IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5n
IEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5k
CisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKwor
ICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
V2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6V2ViUGFnZVByaXZhdGU6OmluaXQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0
OjpXZWJQYWdlOjplbmFibGVXZWJJbnNwZWN0b3IpOgorICAgICAgICAqIEFwaS9XZWJQYWdlX3Au
aDoKKyAgICAgICAgKFdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudEJsYWNrQmVycnk6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5oOgorICAgICAgICAoSW5zcGVj
dG9yQ2xpZW50QmxhY2tCZXJyeSk6CisKIDIwMTItMDctMTUgIEpvbmF0aGFuIERvbmcgIDxqb25h
dGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gTW92
ZSBpY29uIGRhdGFiYXNlIHRvIGFwcGxpY2F0aW9uIGRhdGEgZGlyZWN0b3J5LgpJbmRleDogU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxMjI3MDMpCisr
KyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMzAsNiArMzMwLDcgQEAgdm9pZCBXZWJQYWdlOjphdXRvZmlsbFRleHRGaWVsZChjb25z
dCBzdAogV2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQcml2YXRlKFdlYlBhZ2UqIHdlYlBhZ2UsIFdl
YlBhZ2VDbGllbnQqIGNsaWVudCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICA6IG1fd2ViUGFn
ZSh3ZWJQYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9pbnNwZWN0b3JDbGll
bnQoMCkKICAgICAsIG1fcGFnZSgwKSAvLyBJbml0aWFsaXplZCBieSBpbml0LgogICAgICwgbV9t
YWluRnJhbWUoMCkgLy8gSW5pdGlhbGl6ZWQgYnkgaW5pdC4KICAgICAsIG1fY3VycmVudENvbnRl
eHROb2RlKDApCkBAIC00ODgsOSArNDg5LDggQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6aW5pdChj
b25zdCBXZWJTdHJpbgogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgZHJhZ0NsaWVudCA9
IG5ldyBEcmFnQ2xpZW50QmxhY2tCZXJyeSgpOwogI2VuZGlmCi0gICAgSW5zcGVjdG9yQ2xpZW50
QmxhY2tCZXJyeSogaW5zcGVjdG9yQ2xpZW50ID0gMDsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGluc3BlY3RvckNsaWVudCA9IG5ldyBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5KHRoaXMp
OworICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEJs
YWNrQmVycnkodGhpcyk7CiAjZW5kaWYKIAogICAgIEZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJy
eSogZnJhbWVMb2FkZXJDbGllbnQgPSBuZXcgRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5KCk7
CkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBXZWJT
dHJpbgogICAgIHBhZ2VDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50ID0gY29udGV4dE1lbnVDbGll
bnQ7CiAgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gZWRpdG9yQ2xpZW50OwogICAgIHBh
Z2VDbGllbnRzLmRyYWdDbGllbnQgPSBkcmFnQ2xpZW50OwotICAgIHBhZ2VDbGllbnRzLmluc3Bl
Y3RvckNsaWVudCA9IGluc3BlY3RvckNsaWVudDsKKyAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JD
bGllbnQgPSBtX2luc3BlY3RvckNsaWVudDsKIAogICAgIG1fcGFnZSA9IG5ldyBQYWdlKHBhZ2VD
bGllbnRzKTsKICNpZiAhZGVmaW5lZChQVUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKQEAg
LTU3MDksNyArNTcwOSwxMCBAQCB2b2lkIFdlYlBhZ2U6Om9uQ2VydGlmaWNhdGVTdG9yZUxvY2F0
aW9uCiAKIHZvaWQgV2ViUGFnZTo6ZW5hYmxlV2ViSW5zcGVjdG9yKCkKIHsKLSAgICBkLT5tX3Bh
Z2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKCk7CisgICAgaWYgKCFk
LT5tX2luc3BlY3RvckNsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgZC0+bV9wYWdlLT5p
bnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZChkLT5tX2luc3BlY3RvckNsaWVu
dCk7CiAgICAgZC0+bV9wYWdlLT5zZXR0aW5ncygpLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVk
KHRydWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2Vf
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9w
LmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAKICNkZWZpbmUgV2ViUGFn
ZV9wX2gKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNs
aWVudEJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JPdmVybGF5LmgiCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgIkdMRVMyQ29udGV4dC5oIgpAQCAt
NDUxLDYgKzQ1Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYlBhZ2UqIG1fd2ViUGFnZTsKICAgICBX
ZWJQYWdlQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRCbGFj
a0JlcnJ5KiBtX2luc3BlY3RvckNsaWVudDsKICAgICBXZWJDb3JlOjpQYWdlKiBtX3BhZ2U7CiAg
ICAgV2ViQ29yZTo6RnJhbWUqIG1fbWFpbkZyYW1lOwogICAgIFJlZlB0cjxXZWJDb3JlOjpOb2Rl
PiBtX2N1cnJlbnRDb250ZXh0Tm9kZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTMsOSArNTMsMTAgQEAgdm9pZCBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5
OjpoaWRlSGlnaAogICAgIG1fd2ViUGFnZVByaXZhdGUtPnNldEluc3BlY3Rvck92ZXJsYXlDbGll
bnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeTo6b3Blbkluc3BlY3Rv
ckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKQorSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gMDsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5OjpjbG9zZUluc3BlY3RvckZyb250
ZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRCbGFja0JlcnJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaAkocmV2aXNp
b24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBA
QAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5X2gKIAogI2luY2x1ZGUgIkluc3Bl
Y3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zMyw3ICszNCw3IEBAIGNsYXNzIFdlYlBhZ2VQ
cml2YXRlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3RvckNsaWVudEJs
YWNrQmVycnkgOiBwdWJsaWMgSW5zcGVjdG9yQ2xpZW50LCBwdWJsaWMgSW5zcGVjdG9yT3Zlcmxh
eTo6SW5zcGVjdG9yT3ZlcmxheUNsaWVudCB7CitjbGFzcyBJbnNwZWN0b3JDbGllbnRCbGFja0Jl
cnJ5IDogcHVibGljIEluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCwgcHVibGljIEluc3BlY3Rvck92ZXJsYXk6Okluc3BlY3Rvck92ZXJsYXlDbGllbnQgewog
cHVibGljOgogICAgIEluc3BlY3RvckNsaWVudEJsYWNrQmVycnkoQmxhY2tCZXJyeTo6V2ViS2l0
OjpXZWJQYWdlUHJpdmF0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQo
KTsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogCi0gICAgdmlydHVhbCB2b2lk
IG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgdmlydHVh
bCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0
b3JDb250cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKIApJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTIt
MDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFpbC5jb20+CisKKyAgICAg
ICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZy
b250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMTk2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgSW5zcGVjdG9y
Q2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQKKyAgICAgICAg
bm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorCisgICAgICAgICog
c3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JD
bGllbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIHNyYy9JbnNwZWN0
b3JDbGllbnRJbXBsLmg6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZU
b29sc0FnZW50SW1wbDo6cmVhdHRhY2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0Fn
ZW50SW1wbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaDoKKyAgICAgICAgKFdlYkRldlRvb2xzQWdlbnRJbXBsKToKKwogMjAxMi0w
Ny0xMyAgRXJpYyBQZW5uZXIgIDxlcGVubmVyQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9t
aXVtXSBBZGQgJ3NlbGYtbWFuYWdlZCcgb3B0aW9uIHRvIENDUHJpb3JpdGl6ZWRUZXh0dXJlIHRv
IGVuYWJsZSByZW5kZXItc3VyZmFjZSBhbmQgY2FudmFzIHVzZSBjYXNlcy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCShy
ZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JD
bGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTAgKzY1LDExIEBAIHZvaWQgSW5z
cGVjdG9yQ2xpZW50SW1wbDo6aW5zcGVjdG9yRGVzdHIKICAgICAgICAgYWdlbnQtPmluc3BlY3Rv
ckRlc3Ryb3llZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNsaWVudEltcGw6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQorSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBJbnNwZWN0b3JDbGllbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQo
SW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKICAgICBpZiAoV2ViRGV2VG9vbHNB
Z2VudEltcGwqIGFnZW50ID0gZGV2VG9vbHNBZ2VudCgpKQotICAgICAgICBhZ2VudC0+b3Blbklu
c3BlY3RvckZyb250ZW5kKGNvbnRyb2xsZXIpOworICAgICAgICByZXR1cm4gYWdlbnQtPm9wZW5J
bnNwZWN0b3JGcm9udGVuZChjb250cm9sbGVyKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JDbGllbnRJbXBsOjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgJKHJldmlz
aW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVu
dEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSW5z
cGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlRo
cmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNDMsNiArNDQsNyBAQCBjbGFz
cyBXZWJEZXZUb29sc0FnZW50SW1wbDsKIGNsYXNzIFdlYlZpZXdJbXBsOwogCiBjbGFzcyBJbnNw
ZWN0b3JDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJUaHJlYWQ6OlRh
c2tPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xpZW50SW1wbChXZWJWaWV3SW1w
bCopOwpAQCAtNTAsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbnNwZWN0b3JDbGllbnQg
bWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7Ci0gICAgdmly
dHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyKik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9w
ZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
YnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAkocmV2aXNpb24gMTIyNzAzKQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50SW1w
bDo6YXR0YWNoKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2xpZW50TWVzc2FnZUxvb3BBZGFw
dGVyOjplbnN1cmVDbGllbnRNZXNzYWdlTG9vcENyZWF0ZWQobV9jbGllbnQpOwotICAgIGluc3Bl
Y3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKCk7CisgICAgaW5zcGVjdG9yQ29udHJv
bGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhpcyk7CiAgICAgbV9hdHRhY2hlZCA9IHRydWU7CiB9
CiAKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpyZWF0dGFj
aChjb25zCiAgICAgICAgIHJldHVybjsKIAogICAgIENsaWVudE1lc3NhZ2VMb29wQWRhcHRlcjo6
ZW5zdXJlQ2xpZW50TWVzc2FnZUxvb3BDcmVhdGVkKG1fY2xpZW50KTsKLSAgICBpbnNwZWN0b3JD
b250cm9sbGVyKCktPnJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUoc2F2ZWRTdGF0ZSk7
CisgICAgaW5zcGVjdG9yQ29udHJvbGxlcigpLT5yZWNvbm5lY3RGcm9udGVuZCh0aGlzLCBzYXZl
ZFN0YXRlKTsKICAgICBtX2F0dGFjaGVkID0gdHJ1ZTsKIH0KIApAQCAtNDkyLDggKzQ5Miw5IEBA
IHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6Omluc3BlY3RvckRlc3QKICAgICAvLyBPdXIgbGlm
ZXRpbWUgaXMgYm91bmQgdG8gdGhlIFdlYlZpZXdJbXBsLgogfQogCi12b2lkIFdlYkRldlRvb2xz
QWdlbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCitJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiB7CisgICAgcmV0dXJuIDA7CiB9CiAK
IHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1w
bC5oCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
ZXZUb29sc0FnZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjZGVm
aW5lIFdlYkRldlRvb2xzQWdlbnRJbXBsX2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogCiAjaW5jbHVkZSAiV2Vi
RGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQYWdlT3ZlcmxheS5oIgpAQCAt
NjUsNiArNjYsNyBAQCBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdlRGF0YTsKIAogY2xhc3MgV2Vi
RGV2VG9vbHNBZ2VudEltcGwgOiBwdWJsaWMgV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJQ
YWdlT3ZlcmxheSB7CiBwdWJsaWM6CiAgICAgV2ViRGV2VG9vbHNBZ2VudEltcGwoV2ViVmlld0lt
cGwqIHdlYlZpZXdJbXBsLCBXZWJEZXZUb29sc0FnZW50Q2xpZW50KiBjbGllbnQpOwpAQCAtODgs
NyArOTAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbnNwZWN0b3JDbGllbnQgaW1wbGVtZW50YXRp
b24uCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwotICAgIHZpcnR1YWwg
dm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciop
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5z
cGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOwogICAgIHZpcnR1
YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgYnJp
bmdGcm9udGVuZFRvRnJvbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjcw
MykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE4IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21h
aWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRy
b2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFj
dG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZy
b250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6Om9wZW5JbnNwZWN0b3JGcm9udGVu
ZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmg6CisgICAg
ICAgIChJbnNwZWN0b3JDbGllbnRFZmwpOgorCiAyMDEyLTA3LTE1ICBLaWhvbmcgS3dvbiAgPGtp
aG9uZy5rd29uQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIEFkZCBhIEFQSSBmb3IgZ2V0
dGluZyBzZWN1cml0eSBvcmlnaW4gc3RyaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAJKHJldmlzaW9u
IDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNs
aWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEzICs3MiwxMyBAQCB2b2lkIEluc3Bl
Y3RvckNsaWVudEVmbDo6aW5zcGVjdG9yRGVzdHJvCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29u
dHJvbGxlciopCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3RvckNsaWVudEVmbDo6
b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKQogewogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV9pbnNwZWN0ZWRWaWV3LCAiaW5zcGVjdG9yLHZp
ZXcsY3JlYXRlIiwgMCk7CiAKICAgICBFdmFzX09iamVjdCogaW5zcGVjdG9yVmlldyA9IGV3a192
aWV3X3dlYl9pbnNwZWN0b3Jfdmlld19nZXQobV9pbnNwZWN0ZWRWaWV3KTsKICAgICBpZiAoIWlu
c3BlY3RvclZpZXcpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBt
X2luc3BlY3RvclZpZXcgPSBpbnNwZWN0b3JWaWV3OwogCkBAIC05MCw2ICs5MCw4IEBAIHZvaWQg
SW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnIKIAogICAgIEluc3BlY3RvckNvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBFV0tQcml2YXRlOjpjb3JlUGFnZShtX2luc3BlY3RvclZpZXcp
LT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgY29udHJvbGxlci0+c2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKKyAgICAKKyAgICByZXR1cm4g
dGhpczsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRFZmw6OmNsb3NlSW5zcGVjdG9yRnJvbnRl
bmQoKQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50RWZsLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgIkluc3Bl
Y3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCIKICNpbmNsdWRlIDxFdmFzLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQzLDE0ICs0NCwxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDsKIGNsYXNzIFBhZ2U7
CiAKLWNsYXNzIEluc3BlY3RvckNsaWVudEVmbCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQgewor
Y2xhc3MgSW5zcGVjdG9yQ2xpZW50RWZsIDogcHVibGljIEluc3BlY3RvckNsaWVudCwgcHVibGlj
IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgSW5zcGVj
dG9yQ2xpZW50RWZsKEV2YXNfT2JqZWN0Kik7CiAgICAgfkluc3BlY3RvckNsaWVudEVmbCgpOwog
CiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwogCi0gICAgdmlydHVhbCB2
b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgdmly
dHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNw
ZWN0b3JDb250cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRl
bmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKIApJbmRleDog
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDctMTYgIFZpdmVr
IEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcmVmYWN0b3IgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkgdG8g
YWNjZXB0IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgSW5zcGVjdG9yQ2xpZW50cy4gSW5z
cGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQKKyAgICAgICAgbm93IHJldHVybmlu
ZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQ2xp
ZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEd0ay5oOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50KToKKwogMjAxMi0w
Ny0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFdlYkNvcmU6
OlNldHRpbmdzIGZvciBIaXhpZTc2IFdlYlNvY2tldCBwcm90b2NvbCBkb2Vzbid0IGRvIGFueXRo
aW5nIGFuZCBzaG91bGQgYmUgcmVtb3ZlZApJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAx
MjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgSW5zcGVjdG9y
Q2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVy
KiBjb250cm9sbGVyKQorSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JDbGllbnQ6
Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQog
ewogICAgIC8vIFRoaXMgZ19vYmplY3RfZ2V0IHdpbGwgcmVmIHRoZSBpbnNwZWN0b3IuIFdlJ3Jl
IG5vdCBkb2luZyBhbgogICAgIC8vIHVucmVmIGlmIHRoaXMgbWV0aG9kIHN1Y2NlZWRzIGJlY2F1
c2UgdGhlIGluc3BlY3RvciBvYmplY3QgbXVzdApAQCAtOTksNyArOTksNyBAQCB2b2lkIEluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250CiAKICAgICBpZiAoIWluc3BlY3RvcldlYlZp
ZXcpIHsKICAgICAgICAgZ19vYmplY3RfdW5yZWYod2ViSW5zcGVjdG9yKTsKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICB3ZWJraXRfd2ViX2luc3BlY3Rv
cl9zZXRfd2ViX3ZpZXcod2ViSW5zcGVjdG9yLCBpbnNwZWN0b3JXZWJWaWV3KTsKQEAgLTExNyw2
ICsxMTcsOCBAQCB2b2lkIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250CiAKICAg
ICAvLyBUaGUgaW5zcGVjdG9yIG11c3QgYmUgaW4gaXQncyBvd24gUGFnZUdyb3VwIHRvIGF2b2lk
IGRlYWRsb2NrIHdoaWxlIGRlYnVnZ2luZy4KICAgICBtX2Zyb250ZW5kUGFnZS0+c2V0R3JvdXBO
YW1lKCIiKTsKKyAgICAKKyAgICByZXR1cm4gdGhpczsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGll
bnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgJKHJldmlzaW9uIDEy
MjcwMykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEluc3BlY3Rv
ckNsaWVudEd0a19oCiAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5oIgogI2luY2x1ZGUgIndlYmtp
dHdlYmluc3BlY3Rvci5oIgpAQCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
ICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogCi0gICAgY2xhc3MgSW5zcGVjdG9y
Q2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCB7CisgICAgY2xhc3MgSW5z
cGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiAgICAgcHVibGljOgogICAgICAgICBJ
bnNwZWN0b3JDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldyk7CiAgICAgICAgIH5JbnNwZWN0
b3JDbGllbnQoKTsKQEAgLTU0LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciop
OworICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Bl
bkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVr
Z2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVudDo6b3Bl
bkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisKIDIwMTItMDctMTUgIEpvc2VwaCBQZWNvcmFy
byAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggY2FzZSBzZW5zaXRpdmUgYnVp
bGQgaXNzdWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICAqLwogCiAjaW1wb3J0IDxXZWJDb3JlL0luc3BlY3RvckNs
aWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgogCkBAIC01NCwxMyArNTUsMTMgQEAgY2xhc3MgUGFn
ZTsKIAogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiAKLWNsYXNzIFdlYkluc3Bl
Y3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQgeworY2xhc3MgV2Vi
SW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGlj
IFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CiAgICAgV2ViSW5z
cGVjdG9yQ2xpZW50KFdlYlZpZXcgKik7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVz
dHJveWVkKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250
ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5k
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBi
cmluZ0Zyb250ZW5kVG9Gcm9udCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNp
emVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0J
KHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTIsNyArOTIsNyBAQCB2b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJvCiAgICAgZGVsZXRlIHRoaXM7CiB9
CiAKLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK0luc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKIHsKICAgICBSZXRhaW5QdHI8V2ViSW5z
cGVjdG9yV2luZG93Q29udHJvbGxlcj4gd2luZG93Q29udHJvbGxlcihBZG9wdE5TLCBbW1dlYklu
c3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkV2ViVmlldzpt
X3dlYlZpZXddKTsKICAgICBbd2luZG93Q29udHJvbGxlci5nZXQoKSBzZXRJbnNwZWN0b3JDbGll
bnQ6dGhpc107CkBAIC0xMDMsNiArMTAzLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9w
ZW5JbnNwZWN0b3JGcgogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0b3JGcm9udGVuZD4gd2ViSW5z
cGVjdG9yRnJvbnRlbmQoQWRvcHROUywgW1tXZWJJbnNwZWN0b3JGcm9udGVuZCBhbGxvY10gaW5p
dFdpdGhGcm9udGVuZENsaWVudDpmcm9udGVuZENsaWVudC5nZXQoKV0pOwogICAgIFtbbV93ZWJW
aWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9yRnJvbnRlbmQuZ2V0KCldOwog
ICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEluc3BlY3RvckZy
b250ZW5kQ2xpZW50KGZyb250ZW5kQ2xpZW50LnJlbGVhc2UoKSk7CisgICAgcmV0dXJuIHRoaXM7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA3LTE2ICBW
aXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgp
IHRvIGFjY2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMu
IEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1
cm5pbmcgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ2xpZW50UXQ6OmF0dGFjaEFuZFJlcGxhY2VSZW1vdGVGcm9udGVuZCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoKKyAgICAgICAgKEluc3BlY3Rv
ckNsaWVudFF0KToKKwogMjAxMi0wNy0xNiAgRnJlZGVyaWsgR2xhZGhvcm4gIDxmcmVkZXJpay5n
bGFkaG9ybkBub2tpYS5jb20+CiAKICAgICAgICAgQWNjZXNzaWJsZSBXaWRnZXQgZm9yIFFXZWJW
aWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFF0LmNwcAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIwMSw4ICsyMDEsOSBAQCB2b2lkIEluc3BlY3RvckNsaWVudFF0OjppbnNwZWN0b3JEZXN0cm95
CiB9CiAKICAgICAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0b3JGcm9udGVu
ZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQorV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JDbGllbnRRdDo6b3Blbklu
c3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIpCiB7CisgICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBmcm9u
dGVuZENoYW5uZWwgPSAwOwogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgT3duUHRyPFFXZWJW
aWV3PiBpbnNwZWN0b3JWaWV3ID0gYWRvcHRQdHIobmV3IFFXZWJWaWV3KTsKICAgICAvLyBGSVhN
RTogV2hlcmUgZG9lcyBpbnNwZWN0b3JQYWdlIGdldCBkZWxldGVkPwpAQCAtMjEyLDcgKzIxMyw3
IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0b3JGcm8KICAgICBRV2ViSW5z
cGVjdG9yKiBpbnNwZWN0b3IgPSBtX2luc3BlY3RlZFdlYlBhZ2UtPmQtPmdldE9yQ3JlYXRlSW5z
cGVjdG9yKCk7CiAgICAgLy8gUmVtb3RlIGZyb250ZW5kIHdhcyBhdHRhY2hlZC4KICAgICBpZiAo
bV9yZW1vdGVGcm9udEVuZENoYW5uZWwpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IDA7CiAKICAgICAvLyBUaGlzIGlzIGEga25vd24gaG9vayB0aGF0IGFsbG93cyBjaGFuZ2luZyB0
aGUgZGVmYXVsdCBVUkwgZm9yIHRoZQogICAgIC8vIFdlYiBpbnNwZWN0b3IuIFRoaXMgaXMgdXNl
ZCBmb3IgU0RLIHB1cnBvc2VzLiBQbGVhc2Uga2VlcCB0aGlzIGhvb2sKQEAgLTI0Myw3ICsyNDQs
OSBAQCB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvCiAKICAgICAvLyBX
ZWIgSW5zcGVjdG9yIHNob3VsZCBub3QgYmVsb25nIHRvIGFueSBvdGhlciBwYWdlIGdyb3VwcyBz
aW5jZSBpdCBpcyBhIHNwZWNpYWxpemVkIGRlYnVnZ2VyIHdpbmRvdy4KICAgICBtX2Zyb250ZW5k
V2ViUGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldEdyb3VwTmFtZSgiX19XZWJJbnNwZWN0b3JQYWdl
R3JvdXBfXyIpOworICAgIGZyb250ZW5kQ2hhbm5lbCA9IHRoaXM7CiAjZW5kaWYKKyAgICByZXR1
cm4gZnJvbnRlbmRDaGFubmVsOwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpjbG9zZUlu
c3BlY3RvckZyb250ZW5kKCkKQEAgLTI3MSw3ICsyNzQsNyBAQCB2b2lkIEluc3BlY3RvckNsaWVu
dFF0OjphdHRhY2hBbmRSZXBsYWNlCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBtX3Jl
bW90ZUZyb250RW5kQ2hhbm5lbCA9IGNoYW5uZWw7Ci0gICAgbV9pbnNwZWN0ZWRXZWJQYWdlLT5k
LT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCgpOworICAgIG1faW5zcGVj
dGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhp
cyk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9J
bnNwZWN0b3JDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIEluc3BlY3RvckNsaWVudFF0X2gKIAogI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCIKICNpbmNs
dWRlIDxRdENvcmUvUVN0cmluZz4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNDUsMTMg
KzQ2LDEzIEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50UXQ7CiBjbGFzcyBJbnNwZWN0
b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0OwogY2xhc3MgUGFnZTsKIAotY2xhc3MgSW5zcGVjdG9y
Q2xpZW50UXQgOiBwdWJsaWMgSW5zcGVjdG9yQ2xpZW50IHsKK2NsYXNzIEluc3BlY3RvckNsaWVu
dFF0IDogcHVibGljIEluc3BlY3RvckNsaWVudCwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xpZW50UXQoUVdlYlBhZ2UqKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBv
cGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopOwogICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAgICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRl
bmRUb0Zyb250KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjcwMykKKysr
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4
IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5n
IEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5k
CisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJJbnNwZWN0
b3JDbGllbnQpOgorCiAyMDEyLTA3LTE0ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBBVkNGIGhhcmR3YXJlIHZpZGVvIGRlY29kaW5nCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDcgKzg3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckRlc3Rybwog
ICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkluc3BlY3RvckNsaWVudDo6b3Blbkluc3Bl
Y3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCitX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkluc3BlY3RvckNsaWVudDo6b3Bl
bkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xs
ZXIpCiB7CiAgICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOwogCkBAIC05NiwyMSArOTYsMjEgQEAg
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcgogICAgICAgICAwLCAwLCAw
LCAwKTsKIAogICAgIGlmICghZnJvbnRlbmRId25kKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiAwOwogCiAgICAgQ09NUHRyPFdlYlZpZXc+IGZyb250ZW5kV2ViVmlldyhBZG9wdENP
TSwgV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKSk7CiAKICAgICBpZiAoRkFJTEVEKGZyb250ZW5k
V2ViVmlldy0+c2V0SG9zdFdpbmRvdygoT0xFX0hBTkRMRSkoVUxPTkc2NClmcm9udGVuZEh3bmQp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIFJFQ1QgcmVjdDsK
ICAgICBHZXRDbGllbnRSZWN0KGZyb250ZW5kSHduZCwgJnJlY3QpOwogICAgIGlmIChGQUlMRUQo
ZnJvbnRlbmRXZWJWaWV3LT5pbml0V2l0aEZyYW1lKHJlY3QsIDAsIDApKSkKLSAgICAgICAgcmV0
dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIENPTVB0cjxXZWJJbnNwZWN0b3JEZWxlZ2F0
ZT4gZGVsZWdhdGUoQWRvcHRDT00sIFdlYkluc3BlY3RvckRlbGVnYXRlOjpjcmVhdGVJbnN0YW5j
ZSgpKTsKICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+c2V0VUlEZWxlZ2F0ZShkZWxl
Z2F0ZS5nZXQoKSkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAg
Ly8gS2VlcCBwcmVmZXJlbmNlcyBzZXBhcmF0ZSBmcm9tIHRoZSByZXN0IG9mIHRoZSBjbGllbnQs
IG1ha2luZyBzdXJlIHdlIGFyZSB1c2luZyBleHBlY3RlZCBwcmVmZXJlbmNlIHZhbHVlcy4KICAg
ICAvLyBGSVhNRTogSXQncyBjcmF6eSB0aGF0IHdlIGhhdmUgdG8gZG8gdGhpcyBzb25nIGFuZCBk
YW5jZSB0byBlbmQgdXAgd2l0aApAQCAtMTIwLDY0ICsxMjAsNjUgQEAgdm9pZCBXZWJJbnNwZWN0
b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcgogICAgIENPTVB0cjxXZWJQcmVmZXJlbmNlcz4gdGVt
cFByZWZlcmVuY2VzKEFkb3B0Q09NLCBXZWJQcmVmZXJlbmNlczo6Y3JlYXRlSW5zdGFuY2UoKSk7
CiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlcz4gaVByZWZlcmVuY2VzOwogICAgIGlmIChGQUlM
RUQodGVtcFByZWZlcmVuY2VzLT5pbml0V2l0aElkZW50aWZpZXIoQlN0cmluZyhMIldlYkluc3Bl
Y3RvclByZWZlcmVuY2VzIiksICZpUHJlZmVyZW5jZXMpKSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICByZXR1cm4gMDsKICAgICBDT01QdHI8V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzKFF1
ZXJ5LCBpUHJlZmVyZW5jZXMpOwogICAgIGlmICghcHJlZmVyZW5jZXMpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0QXV0
b3NhdmVzKEZBTFNFKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAg
aWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KFRSVUUp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRkFJTEVEKHBy
ZWZlcmVuY2VzLT5zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChUUlVFKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+
c2V0QWxsb3dzQW5pbWF0ZWRJbWFnZXMoVFJVRSkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMtPnNldExvYWRzSW1hZ2VzQXV0
b21hdGljYWxseShUUlVFKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAg
ICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0UGx1Z0luc0VuYWJsZWQoRkFMU0UpKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRkFJTEVEKHByZWZlcmVu
Y2VzLT5zZXRKYXZhRW5hYmxlZChGQUxTRSkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMtPnNldFVzZXJTdHlsZVNoZWV0RW5h
YmxlZChGQUxTRSkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIGlm
IChGQUlMRUQocHJlZmVyZW5jZXMtPnNldFRhYnNUb0xpbmtzKEZBTFNFKSkpCi0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0
TWluaW11bUZvbnRTaXplKDApKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKDkp
KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRkFJTEVEKHBy
ZWZlcmVuY2VzLT5zZXRGaXhlZEZvbnRGYW1pbHkoQlN0cmluZyhMIkNvdXJpZXIgTmV3IikpKSkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRkFJTEVEKHByZWZl
cmVuY2VzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZSgxMykpKQotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZpZXctPnNldFBy
ZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBmcm9udGVuZFdlYlZpZXctPnNldFByb2hpYml0c01haW5GcmFtZVNj
cm9sbGluZyhUUlVFKTsKIAogICAgIEhXTkQgZnJvbnRlbmRXZWJWaWV3SHduZDsKICAgICBpZiAo
RkFJTEVEKGZyb250ZW5kV2ViVmlldy0+dmlld1dpbmRvdyhyZWludGVycHJldF9jYXN0PE9MRV9I
QU5ETEUqPigmZnJvbnRlbmRXZWJWaWV3SHduZCkpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAg
ICByZXR1cm4gMDsKIAogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdChB
ZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUluc3RhbmNlKCkpOwogCiAgICAg
UmV0YWluUHRyPENGVVJMUmVmPiBodG1sVVJMUmVmKEFkb3B0Q0YsIENGQnVuZGxlQ29weVJlc291
cmNlVVJMKGdldFdlYktpdEJ1bmRsZSgpLCBDRlNUUigiaW5zcGVjdG9yIiksIENGU1RSKCJodG1s
IiksIENGU1RSKCJpbnNwZWN0b3IiKSkpOwogICAgIGlmICghaHRtbFVSTFJlZikKLSAgICAgICAg
cmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIENGU3RyaW5nUmVmIHVybFN0cmluZ1Jl
ZiA9IDo6Q0ZVUkxHZXRTdHJpbmcoaHRtbFVSTFJlZi5nZXQoKSk7CiAgICAgaWYgKEZBSUxFRChy
ZXF1ZXN0LT5pbml0V2l0aFVSTChCU3RyaW5nKHVybFN0cmluZ1JlZiksIFdlYlVSTFJlcXVlc3RV
c2VQcm90b2NvbENhY2hlUG9saWN5LCA2MCkpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJl
dHVybiAwOwogCiAgICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZpZXctPnRvcExldmVsRnJhbWUo
KS0+bG9hZFJlcXVlc3QocmVxdWVzdC5nZXQoKSkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3JlKGZyb250ZW5kV2ViVmlldy5n
ZXQoKSk7CiAgICAgT3duUHRyPFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50PiBmcm9udGVuZENs
aWVudCA9IGFkb3B0UHRyKG5ldyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChtX2luc3BlY3Rl
ZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIGZyb250ZW5kSHduZCwgZnJvbnRlbmRX
ZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVhdGVGcm9udGVuZFNldHRpbmdz
KCkpKTsKICAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRDbGllbnQuZ2V0KCk7CiAgICAg
bV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKICAgICBtX2Zyb250ZW5kSHduZCA9
IGZyb250ZW5kSHduZDsKKyAgICByZXR1cm4gdGhpczsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JD
bGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRleDogU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHJldmlzaW9u
IDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yQ2xpZW50Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dNZXNzYWdlTGlzdGVu
ZXIuaD4KQEAgLTUwLDE0ICs1MSwxNCBAQCBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDsKIGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBjbGFzcyBXZWJWaWV3OwogCi1jbGFzcyBXZWJJ
bnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50IHsKK2NsYXNz
IFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1
YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgogICAgIFdl
Ykluc3BlY3RvckNsaWVudChXZWJWaWV3Kik7CiAKICAgICAvLyBJbnNwZWN0b3JDbGllbnQKICAg
ICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
b3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3Rv
ckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250
ZW5kVG9Gcm9udCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNzAz
KQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOCBAQAorMjAxMi0wNy0xNiAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dhbGF0YWdlQGdt
YWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3RvciBJbnNwZWN0b3JDb250
cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTEx
OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZh
Y3RvcmluZyBJbnNwZWN0b3JDbGllbnRzLiBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JG
cm9udGVuZAorICAgICAgICBub3cgcmV0dXJuaW5nIHRoZSBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXaW5DRS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudFdpbkNFOjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmg6
CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRXaW5DRSk6CisKIDIwMTItMDUtMzEgIEhhamltZSBN
b3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTE3
NTcyKTogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLXJlbW92ZS1mcmFtZS5odG1s
IGNyYXNoZXMgb24gTWFjCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0luc3BlY3RvckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gMTIy
NzAzKQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1LDEwIEBAIHZvaWQgSW5zcGVj
dG9yQ2xpZW50V2luQ0U6Omluc3BlY3RvckRlc3QKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JDbGllbnRXaW5DRTo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIpCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3Rv
ckNsaWVudFdpbkNFOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciog
Y29udHJvbGxlcikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiAwOwogfQog
CiB2b2lkIEluc3BlY3RvckNsaWVudFdpbkNFOjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2lu
Q0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudFdpbkNFLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsMTkgKzI2LDIwIEBACiAjZGVmaW5lIEluc3BlY3RvckNsaWVudFdpbkNFX2gKIAog
I2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
Q2hhbm5lbC5oIgogCiBjbGFzcyBXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xh
c3MgSW5zcGVjdG9yQ2xpZW50V2luQ0UgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
IHsKK2NsYXNzIEluc3BlY3RvckNsaWVudFdpbkNFIDogcHVibGljIFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJs
aWM6CiAgICAgSW5zcGVjdG9yQ2xpZW50V2luQ0UoV2ViVmlldyogd2ViVmlldyk7CiAgICAgfklu
c3BlY3RvckNsaWVudFdpbkNFKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJv
eWVkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpOwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L0NoYW5n
ZUxvZwkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNy0xNiAgVml2ZWsgR2FsYXRhZ2Ug
IDx2aXZla2dhbGF0YWdlQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZh
Y3RvciBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTExOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZWZhY3RvcmluZyBJbnNwZWN0b3JDbGllbnRzLiBJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZAorICAgICAgICBub3cgcmV0dXJuaW5nIHRoZSBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFd4OjpvcGVu
SW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50V3guaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudFd4KToKKwogMjAxMi0wNy0wMiAgQmVu
amFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3QgZG8g
YW55IGxvZ2dpbmcgaW5pdGlhbGl6YXRpb24gd2hlbiBsb2dnaW5nIGlzIGRpc2FibGVkCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRXeC5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDkgKzQ3LDEw
IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50V3g6Omluc3BlY3RvckRlc3Ryb3kKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNsaWVudFd4OjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopCitJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwqIEluc3BlY3RvckNsaWVudFd4OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6
SW5zcGVjdG9yQ29udHJvbGxlciopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1
cm4gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVu
ZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50V3guaAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDIwICsy
NywyMSBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRXeF9oCiAKICNpbmNsdWRlICJJbnNwZWN0
b3JDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBhZ2U7
CiAKLWNsYXNzIEluc3BlY3RvckNsaWVudFd4IDogcHVibGljIEluc3BlY3RvckNsaWVudCB7Citj
bGFzcyBJbnNwZWN0b3JDbGllbnRXeCA6IHB1YmxpYyBJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgogICAgIEluc3BlY3RvckNsaWVudFd4
KCk7CiAgICAgfkluc3BlY3RvckNsaWVudFd4KCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVj
dG9yRGVzdHJveWVkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5k
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152721</attachid>
            <date>2012-07-17 02:30:29 -0700</date>
            <delta_ts>2012-07-17 05:12:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91196-20120717145946.patch</filename>
            <type>text/plain</type>
            <size>51646</size>
            <attacher name="Vivek Galatage">vivekgalatage</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA3LTE2ICBWaXZlayBH
YWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFj
Y2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3Bl
Y3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcg
dGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4gQWxzbyByZWZhY3RvcmVkCisgICAgICAgIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIHJlY2VpdmUKKyAgICAgICAg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGFzIGNvZGUg
cmVmYWN0b3JpbmcgZG9uZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50KToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzaG93KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OnJlY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJ
bnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFbXB0eUluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5SW5zcGVjdG9yQ2xpZW50OjpoaWRlSGlnaGxp
Z2h0KToKKwogMjAxMi0wNy0xNiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyMjY4MS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgJKHJldmlzaW9uIDEy
MjcwMykKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjMgKzI3LDIzIEBACiAjaWZuZGVmIEluc3BlY3RvckNsaWVudF9o
CiAjZGVmaW5lIEluc3BlY3RvckNsaWVudF9oCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdGF0ZUNsaWVudC5oIgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9y
Q29udHJvbGxlcjsKK2NsYXNzIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKIGNsYXNzIEZyYW1l
OwogY2xhc3MgUGFnZTsKIAotY2xhc3MgSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCwgcHVibGljIEluc3BlY3RvclN0YXRlQ2xpZW50IHsKK2NsYXNzIElu
c3BlY3RvckNsaWVudCA6IHB1YmxpYyBJbnNwZWN0b3JTdGF0ZUNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yQ2xpZW50KCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5z
cGVjdG9yRGVzdHJveWVkKCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JG
cm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKikgPSAwOworICAgIHZpcnR1YWwgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxl
ciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlc2l6ZU1haW5GcmFtZShGcmFtZSopIHsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTIy
NzAzKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsOSArMjA4LDExIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZGlkQ2xlYXJXaW5kb3cKICAgICAgICAgbV9pbnNwZWN0b3JGcm9udGVuZENsaWVudC0+
d2luZG93T2JqZWN0Q2xlYXJlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNv
bm5lY3RGcm9udGVuZCgpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVu
ZChJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIGZyb250ZW5kQ2hhbm5lbCkKIHsKLSAgICBtX2lu
c3BlY3RvckZyb250ZW5kID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kKG1faW5zcGVj
dG9yQ2xpZW50KSk7CisgICAgQVNTRVJUKGZyb250ZW5kQ2hhbm5lbCk7CisKKyAgICBtX2luc3Bl
Y3RvckZyb250ZW5kID0gYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kKGZyb250ZW5kQ2hh
bm5lbCkpOwogICAgIC8vIFdlIGNhbiByZWNvbm5lY3QgdG8gZXhpc3RpbmcgZnJvbnQtZW5kIC0+
IHVubXV0ZSBzdGF0ZS4KICAgICBtX3N0YXRlLT51bm11dGUoKTsKIApAQCAtMjIzLDcgKzIyNSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW4KICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmZyb250ZW5kQ3JlYXRlZCgpOwogCiAgICAgQVNTRVJUKG1faW5z
cGVjdG9yQ2xpZW50KTsKLSAgICBtX2luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyID0gSW5zcGVj
dG9yQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2luc3BlY3RvckNsaWVudCk7CisgICAgbV9p
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoZnJvbnRlbmRDaGFubmVsKTsKIAogICAgIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
KiBkaXNwYXRjaGVyID0gbV9pbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5nZXQoKTsKICAgICBm
b3IgKEFnZW50czo6aXRlcmF0b3IgaXQgPSBtX2FnZW50cy5iZWdpbigpOyBpdCAhPSBtX2FnZW50
cy5lbmQoKTsgKytpdCkKQEAgLTI1OSw4ICsyNjEsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OnNob3coKQogICAgIGlmIChtX2luc3BlY3RvckZyb250ZW5kKQogICAgICAgICBtX2luc3Bl
Y3RvckNsaWVudC0+YnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKICAgICBlbHNlIHsKLSAgICAgICAg
bV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0aGlzKTsKLSAgICAgICAg
Y29ubmVjdEZyb250ZW5kKCk7CisgICAgICAgIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJv
bnRlbmRDaGFubmVsID0gbV9pbnNwZWN0b3JDbGllbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZCh0
aGlzKTsKKyAgICAgICAgaWYgKGZyb250ZW5kQ2hhbm5lbCkKKyAgICAgICAgICAgIGNvbm5lY3RG
cm9udGVuZChmcm9udGVuZENoYW5uZWwpOwogICAgIH0KIH0KIApAQCAtMjcyLDEwICsyNzUsMTAg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpjbG9zZSgpCiAgICAgbV9pbnNwZWN0b3JDbGll
bnQtPmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250cm9s
bGVyOjpyZXN0b3JlSW5zcGVjdG9yU3RhdGVGcm9tQ29va2llKGNvbnN0IFN0cmluZyYgaW5zcGVj
dG9yU3RhdGVDb29raWUpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlY29ubmVjdEZyb250
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBjb25zdCBTdHJp
bmcmIGluc3BlY3RvclN0YXRlQ29va2llKQogewogICAgIEFTU0VSVCghbV9pbnNwZWN0b3JGcm9u
dGVuZCk7Ci0gICAgY29ubmVjdEZyb250ZW5kKCk7CisgICAgY29ubmVjdEZyb250ZW5kKGZyb250
ZW5kQ2hhbm5lbCk7CiAgICAgbV9zdGF0ZS0+bG9hZEZyb21Db29raWUoaW5zcGVjdG9yU3RhdGVD
b29raWUpOwogCiAgICAgZm9yIChBZ2VudHM6Oml0ZXJhdG9yIGl0ID0gbV9hZ2VudHMuYmVnaW4o
KTsgaXQgIT0gbV9hZ2VudHMuZW5kKCk7ICsraXQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVj
dG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVj
dG9yRnJvbnRlbmQ7CitjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWw7CiBjbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIEluc3BlY3RvclBhZ2VBZ2VudDsKIGNsYXNzIElu
c3BlY3RvclByb2ZpbGVyQWdlbnQ7CkBAIC04NSw5ICs4Niw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAg
ICAgYm9vbCBoYXNGcm9udGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVjdG9yRnJvbnRlbmQ7
IH0KLSAgICB2b2lkIGNvbm5lY3RGcm9udGVuZCgpOworICAgIHZvaWQgY29ubmVjdEZyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCopOwogICAgIHZvaWQgZGlzY29ubmVjdEZyb250ZW5k
KCk7Ci0gICAgdm9pZCByZXN0b3JlSW5zcGVjdG9yU3RhdGVGcm9tQ29va2llKGNvbnN0IFN0cmlu
ZyYgaW5zcGVjdG9yQ29va2llKTsKKyAgICB2b2lkIHJlY29ubmVjdEZyb250ZW5kKEluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIGNvbnN0IFN0cmluZyYgaW5zcGVjdG9yU3RhdGVDb29raWUpOwog
ICAgIHZvaWQgc2V0UHJvY2Vzc0lkKGxvbmcpOwogCiAgICAgdm9pZCBpbnNwZWN0KE5vZGUqKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDEyMjcwMykK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtNTY5LDE0ICs1NjksMTIgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3Rv
ckRlc3Ryb3llZCgpIHsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJv
bnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopIHsgfQorICAgIHZpcnR1YWwgSW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciop
IHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIGhpZ2hsaWdodCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxp
Z2h0KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCiBjbGFzcyBFbXB0eURldmljZU1vdGlv
bkNsaWVudCA6IHB1YmxpYyBEZXZpY2VNb3Rpb25DbGllbnQgewpJbmRleDogU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2
aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxh
dGFnZUBnbWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgSW5zcGVj
dG9yQ29udHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkxMTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVmYWN0b3JpbmcgSW5zcGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5z
cGVjdG9yRnJvbnRlbmQKKyAgICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JDbGllbnQ6Om9w
ZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudCk6CisK
IDIwMTItMDctMTUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNv
bT4KIAogICAgICAgICBbRUZMXVtXSzJdIERlZmluZSBkZXN0cnVjdG9ycyBmb3IgRXdrIHN0cnVj
dHVyZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHJldmlzaW9uIDEyMjcw
MykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTAgKzQzLDExIEBAIHZvaWQgV2Vi
SW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm8KICAgICBkZWxldGUgdGhpczsKIH0KIAot
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JD
b250cm9sbGVyKikKK1dlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVj
dG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiB7
CiAgICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSA9IG1fcGFnZS0+aW5zcGVjdG9yKCktPmNyZWF0
ZUluc3BlY3RvclBhZ2UoKTsKICAgICBBU1NFUlRfVU5VU0VEKGluc3BlY3RvclBhZ2UsIGluc3Bl
Y3RvclBhZ2UpOworICAgIHJldHVybiB0aGlzOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6Y2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
LmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJQYWdlT3ZlcmxheS5oIgogCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNw
ZWN0b3JDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5l
bC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwpA
QCAtNDEsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZTsKIAot
Y2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dCwgcHJpdmF0ZSBQYWdlT3ZlcmxheTo6Q2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVu
dCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwsIHByaXZhdGUgUGFnZU92ZXJsYXk6OkNsaWVudCB7CiBwdWJs
aWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlBhZ2UqIHBhZ2UpCiAgICAgICAgIDogbV9w
YWdlKHBhZ2UpCkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lk
IG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0
b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVzaXplTWFpbkZyYW1lKFdlYkNvcmU6OkZyYW1lKikgT1ZFUlJJREU7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNs
dWRlICJXZWJJbnNwZWN0b3IuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0KICNpbmNsdWRl
ICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlcy5oIgpAQCAtMzUsMjEgKzM0LDIzIEBA
CiAjaW5jbHVkZSAiV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKLVBhc3NSZWZQdHI8V2ViSW5zcGVjdG9yPiBXZWJJbnNwZWN0b3I6OmNyZWF0ZShXZWJQ
YWdlKiBwYWdlKQorUGFzc1JlZlB0cjxXZWJJbnNwZWN0b3I+IFdlYkluc3BlY3Rvcjo6Y3JlYXRl
KFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVs
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViSW5zcGVjdG9yKHBhZ2UpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYkluc3BlY3RvcihwYWdlLCBmcm9udGVuZENoYW5uZWwpKTsK
IH0KIAotV2ViSW5zcGVjdG9yOjpXZWJJbnNwZWN0b3IoV2ViUGFnZSogcGFnZSkKK1dlYkluc3Bl
Y3Rvcjo6V2ViSW5zcGVjdG9yKFdlYlBhZ2UqIHBhZ2UsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsKQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luc3BlY3Rv
clBhZ2UoMCkKICAgICAsIG1fZnJvbnRlbmRDbGllbnQoMCkKKyAgICAsIG1fZnJvbnRlbmRDaGFu
bmVsKGZyb250ZW5kQ2hhbm5lbCkKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKICAgICAs
IG1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQoZmFsc2UpCiAjZW5kaWYKQEAgLTkxLDYgKzkyLDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3I6OmRlc3Ryb3lJbnNwZWN0b3JQYWdlKAogewogICAgIG1faW5z
cGVjdG9yUGFnZSA9IDA7CiAgICAgbV9mcm9udGVuZENsaWVudCA9IDA7CisgICAgbV9mcm9udGVu
ZENoYW5uZWwgPSAwOwogfQogCiAvLyBDYWxsZWQgZnJvbSBXZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudApAQCAtMjU1LDggKzI1Nyw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpyZW1vdGVGcm9udGVu
ZENvbm5lY3QKICAgICBBU1NFUlQoIW1fcmVtb3RlRnJvbnRlbmRDb25uZWN0ZWQpOwogICAgIC8v
IFN3aXRjaGluZyBiZXR3ZWVuIGluLXByb2Nlc3MgYW5kIHJlbW90ZSBpbnNwZWN0b3JzIGlzbid0
IHN1cHBvcnRlZCB5ZXQuCiAgICAgQVNTRVJUKCFtX2luc3BlY3RvclBhZ2UpOwotCi0gICAgbV9w
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZCgp
OworICAgIAorICAgIG1fcGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5j
b25uZWN0RnJvbnRlbmQobV9mcm9udGVuZENoYW5uZWwpOwogICAgIG1fcmVtb3RlRnJvbnRlbmRD
b25uZWN0ZWQgPSB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5oCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDEwIEBACiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OwpAQCAtNDMsNyArNDcsNyBAQCBjbGFzcyBXZWJJ
bnNwZWN0b3IgOiBwdWJsaWMgQVBJT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
VHlwZSBBUElUeXBlID0gVHlwZUJ1bmRsZUluc3BlY3RvcjsKIAotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkluc3BlY3Rvcj4gY3JlYXRlKFdlYlBhZ2UqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJJbnNwZWN0b3I+IGNyZWF0ZShXZWJQYWdlKiwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKik7CiAKICAgICBXZWJQYWdlKiBwYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
OyB9CiAgICAgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5zcGVj
dG9yUGFnZTsgfQpAQCAtNzcsNyArODEsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBX
ZWJJbnNwZWN0b3JDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OwogCi0gICAgZXhwbGljaXQgV2ViSW5zcGVjdG9yKFdlYlBhZ2UqKTsKKyAgICBleHBs
aWNpdCBXZWJJbnNwZWN0b3IoV2ViUGFnZSosIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCopOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBl
OyB9CiAKQEAgLTExNiw2ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2UqIG1fcGFnZTsK
ICAgICBXZWJQYWdlKiBtX2luc3BlY3RvclBhZ2U7CiAgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQqIG1fZnJvbnRlbmRDbGllbnQ7CisgICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKiBtX2Zyb250ZW5kQ2hhbm5lbDsKICNpZiBQTEFURk9STShNQUMpCiAgICAgU3RyaW5n
IG1fbG9jYWxpemVkU3RyaW5nc1VSTDsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTIyNzAzKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDUsNiArMjQ1LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0CiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkpCiAgICAgLCBtX3Zpc2liaWxpdHlT
dGF0ZShXZWJDb3JlOjpQYWdlVmlzaWJpbGl0eVN0YXRlVmlzaWJsZSkKICNlbmRpZgorICAgICwg
bV9pbnNwZWN0b3JDbGllbnQoMCkKIHsKICAgICBBU1NFUlQobV9wYWdlSUQpOwogICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGEgbm9uLWlkZWFsIGxvY2F0aW9uIGZvciB0aGlzIFNldHRpbmcgYW5kCkBA
IC0yNjIsNyArMjYzLDggQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
CiAjZW5kaWYKICAgICBwYWdlQ2xpZW50cy5iYWNrRm9yd2FyZENsaWVudCA9IFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5OjpjcmVhdGUodGhpcyk7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBw
YWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMp
OworICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudCh0aGlzKTsK
KyAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBtX2luc3BlY3RvckNsaWVudDsKICNl
bmRpZgogI2lmIFVTRShBVVRPQ09SUkVDVElPTl9QQU5FTCkKICAgICBwYWdlQ2xpZW50cy5hbHRl
cm5hdGl2ZVRleHRDbGllbnQgPSBuZXcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHRoaXMpOwpA
QCAtMjA4NSw3ICsyMDg3LDcgQEAgV2ViSW5zcGVjdG9yKiBXZWJQYWdlOjppbnNwZWN0b3IoKQog
ICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIW1faW5zcGVj
dG9yKQotICAgICAgICBtX2luc3BlY3RvciA9IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKHRoaXMpOwor
ICAgICAgICBtX2luc3BlY3RvciA9IFdlYkluc3BlY3Rvcjo6Y3JlYXRlKHRoaXMsIG1faW5zcGVj
dG9yQ2xpZW50KTsKICAgICByZXR1cm4gbV9pbnNwZWN0b3IuZ2V0KCk7CiB9CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNp
b24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw3IEBAIGNsYXNzIFdlYkZyYW1lOwogY2xh
c3MgV2ViRnVsbFNjcmVlbk1hbmFnZXI7CiBjbGFzcyBXZWJJbWFnZTsKIGNsYXNzIFdlYkluc3Bl
Y3RvcjsKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVudDsKIGNsYXNzIFdlYktleWJvYXJkRXZlbnQ7
CiBjbGFzcyBXZWJNb3VzZUV2ZW50OwogY2xhc3MgV2ViTm90aWZpY2F0aW9uQ2xpZW50OwpAQCAt
ODcxLDYgKzg3Miw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFBBR0VfVklTSUJJTElUWV9BUEkp
CiAgICAgV2ViQ29yZTo6UGFnZVZpc2liaWxpdHlTdGF0ZSBtX3Zpc2liaWxpdHlTdGF0ZTsKICNl
bmRpZgorICAgIFdlYkluc3BlY3RvckNsaWVudCogbV9pbnNwZWN0b3JDbGllbnQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwko
cmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFn
ZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJl
ZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNs
aWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIEFwaS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQcml2YXRl
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZVByaXZhdGU6OmluaXQpOgor
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlOjplbmFibGVXZWJJbnNwZWN0b3Ip
OgorICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKFdlYlBhZ2VQcml2YXRlKToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNsaWVudEJsYWNrQmVycnk6Om9wZW5JbnNwZWN0
b3JGcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50Qmxh
Y2tCZXJyeS5oOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeSk6CisKIDIwMTIt
MDctMTUgIEpvbmF0aGFuIERvbmcgIDxqb25hdGhhbi5kb25nQHRvcmNobW9iaWxlLmNvbS5jbj4K
IAogICAgICAgICBbQmxhY2tCZXJyeV0gTW92ZSBpY29uIGRhdGFiYXNlIHRvIGFwcGxpY2F0aW9u
IGRhdGEgZGlyZWN0b3J5LgpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2UuY3BwCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBp
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNiArMzMwLDcgQEAgdm9pZCBXZWJQ
YWdlOjphdXRvZmlsbFRleHRGaWVsZChjb25zdCBzdAogV2ViUGFnZVByaXZhdGU6OldlYlBhZ2VQ
cml2YXRlKFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYlBhZ2VDbGllbnQqIGNsaWVudCwgY29uc3QgSW50
UmVjdCYgcmVjdCkKICAgICA6IG1fd2ViUGFnZSh3ZWJQYWdlKQogICAgICwgbV9jbGllbnQoY2xp
ZW50KQorICAgICwgbV9pbnNwZWN0b3JDbGllbnQoMCkKICAgICAsIG1fcGFnZSgwKSAvLyBJbml0
aWFsaXplZCBieSBpbml0LgogICAgICwgbV9tYWluRnJhbWUoMCkgLy8gSW5pdGlhbGl6ZWQgYnkg
aW5pdC4KICAgICAsIG1fY3VycmVudENvbnRleHROb2RlKDApCkBAIC00ODgsOSArNDg5LDggQEAg
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6aW5pdChjb25zdCBXZWJTdHJpbgogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAgICAgZHJhZ0NsaWVudCA9IG5ldyBEcmFnQ2xpZW50QmxhY2tCZXJyeSgpOwog
I2VuZGlmCi0gICAgSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeSogaW5zcGVjdG9yQ2xpZW50ID0g
MDsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGluc3BlY3RvckNsaWVudCA9IG5ldyBJbnNw
ZWN0b3JDbGllbnRCbGFja0JlcnJ5KHRoaXMpOworICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gbmV3
IEluc3BlY3RvckNsaWVudEJsYWNrQmVycnkodGhpcyk7CiAjZW5kaWYKIAogICAgIEZyYW1lTG9h
ZGVyQ2xpZW50QmxhY2tCZXJyeSogZnJhbWVMb2FkZXJDbGllbnQgPSBuZXcgRnJhbWVMb2FkZXJD
bGllbnRCbGFja0JlcnJ5KCk7CkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJpdmF0
ZTo6aW5pdChjb25zdCBXZWJTdHJpbgogICAgIHBhZ2VDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50
ID0gY29udGV4dE1lbnVDbGllbnQ7CiAgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50ID0gZWRp
dG9yQ2xpZW50OwogICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBkcmFnQ2xpZW50OwotICAg
IHBhZ2VDbGllbnRzLmluc3BlY3RvckNsaWVudCA9IGluc3BlY3RvckNsaWVudDsKKyAgICBwYWdl
Q2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBtX2luc3BlY3RvckNsaWVudDsKIAogICAgIG1fcGFn
ZSA9IG5ldyBQYWdlKHBhZ2VDbGllbnRzKTsKICNpZiAhZGVmaW5lZChQVUJMSUNfQlVJTEQpIHx8
ICFQVUJMSUNfQlVJTEQKQEAgLTU3MDksNyArNTcwOSwxMCBAQCB2b2lkIFdlYlBhZ2U6Om9uQ2Vy
dGlmaWNhdGVTdG9yZUxvY2F0aW9uCiAKIHZvaWQgV2ViUGFnZTo6ZW5hYmxlV2ViSW5zcGVjdG9y
KCkKIHsKLSAgICBkLT5tX3BhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250
ZW5kKCk7CisgICAgaWYgKCFkLT5tX2luc3BlY3RvckNsaWVudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZC0+bV9wYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVuZChk
LT5tX2luc3BlY3RvckNsaWVudCk7CiAgICAgZC0+bV9wYWdlLT5zZXR0aW5ncygpLT5zZXREZXZl
bG9wZXJFeHRyYXNFbmFibGVkKHRydWUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQXBpL1dlYlBhZ2VfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZV9wLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcg
QEAKICNkZWZpbmUgV2ViUGFnZV9wX2gKIAogI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JP
dmVybGF5LmgiCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogI2luY2x1ZGUgIkdM
RVMyQ29udGV4dC5oIgpAQCAtNDUxLDYgKzQ1Miw3IEBAIHB1YmxpYzoKIAogICAgIFdlYlBhZ2Uq
IG1fd2ViUGFnZTsKICAgICBXZWJQYWdlQ2xpZW50KiBtX2NsaWVudDsKKyAgICBXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5KiBtX2luc3BlY3RvckNsaWVudDsKICAgICBXZWJDb3Jl
OjpQYWdlKiBtX3BhZ2U7CiAgICAgV2ViQ29yZTo6RnJhbWUqIG1fbWFpbkZyYW1lOwogICAgIFJl
ZlB0cjxXZWJDb3JlOjpOb2RlPiBtX2N1cnJlbnRDb250ZXh0Tm9kZTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFj
a0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsOSArNTMsMTAgQEAgdm9pZCBJbnNwZWN0
b3JDbGllbnRCbGFja0JlcnJ5OjpoaWRlSGlnaAogICAgIG1fd2ViUGFnZVByaXZhdGUtPnNldElu
c3BlY3Rvck92ZXJsYXlDbGllbnQoMCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqKQorSW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5Ojpj
bG9zZUluc3BlY3RvckZyb250ZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJs
YWNrQmVycnkuaAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEJsYWNrQmVycnkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjEsNiArMjEsNyBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRCbGFja0JlcnJ5X2gK
IAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvck92ZXJsYXkuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zMyw3ICszNCw3
IEBAIGNsYXNzIFdlYlBhZ2VQcml2YXRlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNz
IEluc3BlY3RvckNsaWVudEJsYWNrQmVycnkgOiBwdWJsaWMgSW5zcGVjdG9yQ2xpZW50LCBwdWJs
aWMgSW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheUNsaWVudCB7CitjbGFzcyBJbnNw
ZWN0b3JDbGllbnRCbGFja0JlcnJ5IDogcHVibGljIEluc3BlY3RvckNsaWVudCwgcHVibGljIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCwgcHVibGljIEluc3BlY3Rvck92ZXJsYXk6Okluc3BlY3Rv
ck92ZXJsYXlDbGllbnQgewogcHVibGljOgogICAgIEluc3BlY3RvckNsaWVudEJsYWNrQmVycnko
QmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZSopOwogICAgIHZpcnR1YWwgdm9pZCBp
bnNwZWN0b3JEZXN0cm95ZWQoKTsKQEAgLTQxLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBoaWdobGlnaHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9s
bGVyKik7CisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0
b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
SW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJv
bnQoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjcwMykK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjMgQEAKKzIwMTItMDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBn
bWFpbC5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y29ubmVjdEZyb250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkx
MTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVm
YWN0b3JpbmcgSW5zcGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQKKyAgICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsLgorCisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAg
ICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmg6CisgICAgICAgIChJbnNwZWN0b3JDbGll
bnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6cmVhdHRhY2gpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJEZXZUb29sc0FnZW50SW1wbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKToKKyAgICAg
ICAgKiBzcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuaDoKKyAgICAgICAgKFdlYkRldlRvb2xzQWdl
bnRJbXBsKToKKwogMjAxMi0wNy0xMyAgRXJpYyBQZW5uZXIgIDxlcGVubmVyQGdvb2dsZS5jb20+
CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgJ3NlbGYtbWFuYWdlZCcgb3B0aW9uIHRvIENDUHJp
b3JpdGl6ZWRUZXh0dXJlIHRvIGVuYWJsZSByZW5kZXItc3VyZmFjZSBhbmQgY2FudmFzIHVzZSBj
YXNlcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudElt
cGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3Rv
ckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTAg
KzY1LDExIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6aW5zcGVjdG9yRGVzdHIKICAgICAg
ICAgYWdlbnQtPmluc3BlY3RvckRlc3Ryb3llZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNsaWVu
dEltcGw6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9s
bGVyKQorSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0b3JDbGllbnRJbXBsOjpvcGVu
SW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKICAg
ICBpZiAoV2ViRGV2VG9vbHNBZ2VudEltcGwqIGFnZW50ID0gZGV2VG9vbHNBZ2VudCgpKQotICAg
ICAgICBhZ2VudC0+b3Blbkluc3BlY3RvckZyb250ZW5kKGNvbnRyb2xsZXIpOworICAgICAgICBy
ZXR1cm4gYWdlbnQtPm9wZW5JbnNwZWN0b3JGcm9udGVuZChjb250cm9sbGVyKTsKKyAgICByZXR1
cm4gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRJbXBsOjpjbG9zZUluc3BlY3RvckZyb250
ZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudElt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JD
bGllbnRJbXBsLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0luc3BlY3RvckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1
ZGUgInBsYXRmb3JtL1dlYlRocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAt
NDMsNiArNDQsNyBAQCBjbGFzcyBXZWJEZXZUb29sc0FnZW50SW1wbDsKIGNsYXNzIFdlYlZpZXdJ
bXBsOwogCiBjbGFzcyBJbnNwZWN0b3JDbGllbnRJbXBsIDogcHVibGljIFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBXZWJUaHJlYWQ6OlRhc2tPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xp
ZW50SW1wbChXZWJWaWV3SW1wbCopOwpAQCAtNTAsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBJbnNwZWN0b3JDbGllbnQgbWV0aG9kczoKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVz
dHJveWVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyKik7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwqIG9wZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JD
b250cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcAko
cmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODksNyArMzg5LDcgQEAgdm9pZCBX
ZWJEZXZUb29sc0FnZW50SW1wbDo6YXR0YWNoKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ2xp
ZW50TWVzc2FnZUxvb3BBZGFwdGVyOjplbnN1cmVDbGllbnRNZXNzYWdlTG9vcENyZWF0ZWQobV9j
bGllbnQpOwotICAgIGluc3BlY3RvckNvbnRyb2xsZXIoKS0+Y29ubmVjdEZyb250ZW5kKCk7Cisg
ICAgaW5zcGVjdG9yQ29udHJvbGxlcigpLT5jb25uZWN0RnJvbnRlbmQodGhpcyk7CiAgICAgbV9h
dHRhY2hlZCA9IHRydWU7CiB9CiAKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIFdlYkRldlRvb2xz
QWdlbnRJbXBsOjpyZWF0dGFjaChjb25zCiAgICAgICAgIHJldHVybjsKIAogICAgIENsaWVudE1l
c3NhZ2VMb29wQWRhcHRlcjo6ZW5zdXJlQ2xpZW50TWVzc2FnZUxvb3BDcmVhdGVkKG1fY2xpZW50
KTsKLSAgICBpbnNwZWN0b3JDb250cm9sbGVyKCktPnJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21D
b29raWUoc2F2ZWRTdGF0ZSk7CisgICAgaW5zcGVjdG9yQ29udHJvbGxlcigpLT5yZWNvbm5lY3RG
cm9udGVuZCh0aGlzLCBzYXZlZFN0YXRlKTsKICAgICBtX2F0dGFjaGVkID0gdHJ1ZTsKIH0KIApA
QCAtNDkyLDggKzQ5Miw5IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6Omluc3BlY3RvckRl
c3QKICAgICAvLyBPdXIgbGlmZXRpbWUgaXMgYm91bmQgdG8gdGhlIFdlYlZpZXdJbXBsLgogfQog
Ci12b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVj
dG9yQ29udHJvbGxlciopCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYkRldlRvb2xzQWdl
bnRJbXBsOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCiB7Cisg
ICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmNsb3NlSW5zcGVj
dG9yRnJvbnRlbmQoKQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9v
bHNBZ2VudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJEZXZUb29sc0FnZW50SW1wbC5oCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiAjZGVmaW5lIFdlYkRldlRvb2xzQWdlbnRJbXBsX2gKIAogI2luY2x1ZGUg
Ikluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5o
IgogCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQ
YWdlT3ZlcmxheS5oIgpAQCAtNjUsNiArNjYsNyBAQCBzdHJ1Y3QgV2ViRGV2VG9vbHNNZXNzYWdl
RGF0YTsKIAogY2xhc3MgV2ViRGV2VG9vbHNBZ2VudEltcGwgOiBwdWJsaWMgV2ViRGV2VG9vbHNB
Z2VudFByaXZhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3Jl
OjpJbnNwZWN0b3JDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBXZWJQYWdlT3ZlcmxheSB7CiBwdWJsaWM6CiAgICAgV2ViRGV2VG9vbHNB
Z2VudEltcGwoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsLCBXZWJEZXZUb29sc0FnZW50Q2xpZW50
KiBjbGllbnQpOwpAQCAtODgsNyArOTAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbnNwZWN0b3JD
bGllbnQgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3ll
ZCgpOwotICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlciopOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlciopOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRvRnJvbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAg
PHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFj
dG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVu
dDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3Bl
Y3RvckZyb250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6Om9w
ZW5JbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50RWZsLmg6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRFZmwpOgorCiAyMDEyLTA3LTE1
ICBLaWhvbmcgS3dvbiAgPGtpaG9uZy5rd29uQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxd
IEFkZCBhIEFQSSBmb3IgZ2V0dGluZyBzZWN1cml0eSBvcmlnaW4gc3RyaW5nCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVu
dEVmbC5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDEzICs3
MiwxMyBAQCB2b2lkIEluc3BlY3RvckNsaWVudEVmbDo6aW5zcGVjdG9yRGVzdHJvCiAgICAgZGVs
ZXRlIHRoaXM7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnJv
bnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopCitJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIElu
c3BlY3RvckNsaWVudEVmbDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xs
ZXIqKQogewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV9pbnNwZWN0ZWRW
aWV3LCAiaW5zcGVjdG9yLHZpZXcsY3JlYXRlIiwgMCk7CiAKICAgICBFdmFzX09iamVjdCogaW5z
cGVjdG9yVmlldyA9IGV3a192aWV3X3dlYl9pbnNwZWN0b3Jfdmlld19nZXQobV9pbnNwZWN0ZWRW
aWV3KTsKICAgICBpZiAoIWluc3BlY3RvclZpZXcpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBtX2luc3BlY3RvclZpZXcgPSBpbnNwZWN0b3JWaWV3OwogCkBAIC05
MCw2ICs5MCw4IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50RWZsOjpvcGVuSW5zcGVjdG9yRnIKIAog
ICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBFV0tQcml2YXRlOjpjb3JlUGFn
ZShtX2luc3BlY3RvclZpZXcpLT5pbnNwZWN0b3JDb250cm9sbGVyKCk7CiAgICAgY29udHJvbGxl
ci0+c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsK
KyAgICAKKyAgICByZXR1cm4gdGhpczsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRFZmw6OmNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgJKHJldmlzaW9uIDEyMjcwMykK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCIK
ICNpbmNsdWRlIDxFdmFzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQzLDE0ICs0
NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dEVmbDsKIGNsYXNzIFBhZ2U7CiAKLWNsYXNzIEluc3BlY3RvckNsaWVudEVmbCA6IHB1YmxpYyBJ
bnNwZWN0b3JDbGllbnQgeworY2xhc3MgSW5zcGVjdG9yQ2xpZW50RWZsIDogcHVibGljIEluc3Bl
Y3RvckNsaWVudCwgcHVibGljIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgSW5zcGVjdG9yQ2xpZW50RWZsKEV2YXNfT2JqZWN0Kik7CiAgICAgfkluc3Bl
Y3RvckNsaWVudEVmbCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIG9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250
cm9sbGVyKik7CisgICAgdmlydHVhbCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIG9wZW5JbnNw
ZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9sbGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNs
b3NlSW5zcGVjdG9yRnJvbnRlbmQoKTsKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdGcm9udGVuZFRv
RnJvbnQoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNzAzKQorKysgU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTItMDctMTYgIFZpdmVrIEdhbGF0YWdlICA8dml2ZWtnYWxhdGFnZUBnbWFpbC5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvcjogcmVmYWN0b3IgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y29u
bmVjdEZyb250ZW5kKCkgdG8gYWNjZXB0IEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxMTk2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3JpbmcgSW5z
cGVjdG9yQ2xpZW50cy4gSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQKKyAg
ICAgICAgbm93IHJldHVybmluZyB0aGUgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5oOgorICAgICAgICAoSW5zcGVjdG9y
Q2xpZW50KToKKwogMjAxMi0wNy0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFdlYkNvcmU6OlNldHRpbmdzIGZvciBIaXhpZTc2IFdlYlNvY2tldCBwcm90b2Nv
bCBkb2Vzbid0IGRvIGFueXRoaW5nIGFuZCBzaG91bGQgYmUgcmVtb3ZlZApJbmRleDogU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRH
dGsuY3BwCShyZXZpc2lvbiAxMjI3MDMpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw3ICs4Myw3
IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JEZXN0cm95ZWQKICAgICBkZWxldGUg
dGhpczsKIH0KIAotdm9pZCBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJ
bnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyKQorSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVs
KiBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZChJbnNwZWN0b3JDb250cm9s
bGVyKiBjb250cm9sbGVyKQogewogICAgIC8vIFRoaXMgZ19vYmplY3RfZ2V0IHdpbGwgcmVmIHRo
ZSBpbnNwZWN0b3IuIFdlJ3JlIG5vdCBkb2luZyBhbgogICAgIC8vIHVucmVmIGlmIHRoaXMgbWV0
aG9kIHN1Y2NlZWRzIGJlY2F1c2UgdGhlIGluc3BlY3RvciBvYmplY3QgbXVzdApAQCAtOTksNyAr
OTksNyBAQCB2b2lkIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250CiAKICAgICBp
ZiAoIWluc3BlY3RvcldlYlZpZXcpIHsKICAgICAgICAgZ19vYmplY3RfdW5yZWYod2ViSW5zcGVj
dG9yKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICB3
ZWJraXRfd2ViX2luc3BlY3Rvcl9zZXRfd2ViX3ZpZXcod2ViSW5zcGVjdG9yLCBpbnNwZWN0b3JX
ZWJWaWV3KTsKQEAgLTExNyw2ICsxMTcsOCBAQCB2b2lkIEluc3BlY3RvckNsaWVudDo6b3Blbklu
c3BlY3RvckZyb250CiAKICAgICAvLyBUaGUgaW5zcGVjdG9yIG11c3QgYmUgaW4gaXQncyBvd24g
UGFnZUdyb3VwIHRvIGF2b2lkIGRlYWRsb2NrIHdoaWxlIGRlYnVnZ2luZy4KICAgICBtX2Zyb250
ZW5kUGFnZS0+c2V0R3JvdXBOYW1lKCIiKTsKKyAgICAKKyAgICByZXR1cm4gdGhpczsKIH0KIAog
dm9pZCBJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRleDogU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50
R3RrLmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAjZGVmaW5lIEluc3BlY3RvckNsaWVudEd0a19oCiAKICNpbmNsdWRlICJJbnNwZWN0b3JDbGll
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vidmlldy5o
IgogI2luY2x1ZGUgIndlYmtpdHdlYmluc3BlY3Rvci5oIgpAQCAtNDUsNyArNDYsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogCi0g
ICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckNsaWVu
dCB7CisgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3Rv
ckNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiAgICAg
cHVibGljOgogICAgICAgICBJbnNwZWN0b3JDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldyk7
CiAgICAgICAgIH5JbnNwZWN0b3JDbGllbnQoKTsKQEAgLTU0LDcgKzU1LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGluc3BlY3RvckRlc3Ryb3llZCgpOwog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlciopOworICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXIqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlSW5zcGVjdG9yRnJvbnRlbmQo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTE2ICBWaXZl
ayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRv
IGFjY2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIElu
c3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5p
bmcgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisgICAgICAg
IChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZCk6CisKIDIwMTItMDct
MTUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXgg
Y2FzZSBzZW5zaXRpdmUgYnVpbGQgaXNzdWUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAkocmV2aXNpb24gMTIy
NzAzKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICAqLwogCiAjaW1wb3J0IDxX
ZWJDb3JlL0luc3BlY3RvckNsaWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9JbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwuaD4KICNpbXBvcnQgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybVN0cmluZy5oPgogCkBAIC01NCwxMyAr
NTUsMTMgQEAgY2xhc3MgUGFnZTsKIAogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7
CiAKLWNsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQgeworY2xhc3MgV2ViSW5zcGVjdG9yQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBw
dWJsaWM6CiAgICAgV2ViSW5zcGVjdG9yQ2xpZW50KFdlYlZpZXcgKik7CiAKICAgICB2aXJ0dWFs
IHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
b3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Bl
bkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKSBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZXNpemVNYWluRnJhbWUoV2ViQ29yZTo6RnJhbWUqKSBPVkVSUklERTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0JKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAt
OTIsNyArOTIsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yRGVzdHJvCiAg
ICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVj
dG9yRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKK0lu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCogV2ViSW5zcGVjdG9yQ2xpZW50OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcikKIHsKICAg
ICBSZXRhaW5QdHI8V2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlcj4gd2luZG93Q29udHJvbGxl
cihBZG9wdE5TLCBbW1dlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRo
SW5zcGVjdGVkV2ViVmlldzptX3dlYlZpZXddKTsKICAgICBbd2luZG93Q29udHJvbGxlci5nZXQo
KSBzZXRJbnNwZWN0b3JDbGllbnQ6dGhpc107CkBAIC0xMDMsNiArMTAzLDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcgogICAgIFJldGFpblB0cjxXZWJJbnNwZWN0
b3JGcm9udGVuZD4gd2ViSW5zcGVjdG9yRnJvbnRlbmQoQWRvcHROUywgW1tXZWJJbnNwZWN0b3JG
cm9udGVuZCBhbGxvY10gaW5pdFdpdGhGcm9udGVuZENsaWVudDpmcm9udGVuZENsaWVudC5nZXQo
KV0pOwogICAgIFtbbV93ZWJWaWV3IGluc3BlY3Rvcl0gc2V0RnJvbnRlbmQ6d2ViSW5zcGVjdG9y
RnJvbnRlbmQuZ2V0KCldOwogICAgIG1fZnJvbnRlbmRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVy
KCktPnNldEluc3BlY3RvckZyb250ZW5kQ2xpZW50KGZyb250ZW5kQ2xpZW50LnJlbGVhc2UoKSk7
CisgICAgcmV0dXJuIHRoaXM7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpjbG9zZUlu
c3BlY3RvckZyb250ZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjI3MDMpCisr
KyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5
IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE5NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5n
IEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5k
CisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50UXQ6OmF0dGFjaEFuZFJlcGxhY2VSZW1vdGVG
cm9udGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaDoK
KyAgICAgICAgKEluc3BlY3RvckNsaWVudFF0KToKKwogMjAxMi0wNy0xNiAgRnJlZGVyaWsgR2xh
ZGhvcm4gIDxmcmVkZXJpay5nbGFkaG9ybkBub2tpYS5jb20+CiAKICAgICAgICAgQWNjZXNzaWJs
ZSBXaWRnZXQgZm9yIFFXZWJWaWV3CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFF0LmNwcAkocmV2aXNpb24gMTIyNzAzKQor
KysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMSw4ICsyMDEsOSBAQCB2b2lkIEluc3BlY3RvckNsaWVudFF0
OjppbnNwZWN0b3JEZXN0cm95CiB9CiAKICAgICAKLXZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6Om9w
ZW5JbnNwZWN0b3JGcm9udGVuZChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyKQorV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiBJbnNwZWN0
b3JDbGllbnRRdDo6b3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIpCiB7CisgICAgV2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDaGFubmVsKiBmcm9udGVuZENoYW5uZWwgPSAwOwogI2lmIEVOQUJMRShJTlNQRUNUT1Ip
CiAgICAgT3duUHRyPFFXZWJWaWV3PiBpbnNwZWN0b3JWaWV3ID0gYWRvcHRQdHIobmV3IFFXZWJW
aWV3KTsKICAgICAvLyBGSVhNRTogV2hlcmUgZG9lcyBpbnNwZWN0b3JQYWdlIGdldCBkZWxldGVk
PwpAQCAtMjEyLDcgKzIxMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50UXQ6Om9wZW5JbnNwZWN0
b3JGcm8KICAgICBRV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3IgPSBtX2luc3BlY3RlZFdlYlBhZ2Ut
PmQtPmdldE9yQ3JlYXRlSW5zcGVjdG9yKCk7CiAgICAgLy8gUmVtb3RlIGZyb250ZW5kIHdhcyBh
dHRhY2hlZC4KICAgICBpZiAobV9yZW1vdGVGcm9udEVuZENoYW5uZWwpCi0gICAgICAgIHJldHVy
bjsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBUaGlzIGlzIGEga25vd24gaG9vayB0aGF0
IGFsbG93cyBjaGFuZ2luZyB0aGUgZGVmYXVsdCBVUkwgZm9yIHRoZQogICAgIC8vIFdlYiBpbnNw
ZWN0b3IuIFRoaXMgaXMgdXNlZCBmb3IgU0RLIHB1cnBvc2VzLiBQbGVhc2Uga2VlcCB0aGlzIGhv
b2sKQEAgLTI0Myw3ICsyNDQsOSBAQCB2b2lkIEluc3BlY3RvckNsaWVudFF0OjpvcGVuSW5zcGVj
dG9yRnJvCiAKICAgICAvLyBXZWIgSW5zcGVjdG9yIHNob3VsZCBub3QgYmVsb25nIHRvIGFueSBv
dGhlciBwYWdlIGdyb3VwcyBzaW5jZSBpdCBpcyBhIHNwZWNpYWxpemVkIGRlYnVnZ2VyIHdpbmRv
dy4KICAgICBtX2Zyb250ZW5kV2ViUGFnZS0+aGFuZGxlKCktPnBhZ2UtPnNldEdyb3VwTmFtZSgi
X19XZWJJbnNwZWN0b3JQYWdlR3JvdXBfXyIpOworICAgIGZyb250ZW5kQ2hhbm5lbCA9IHRoaXM7
CiAjZW5kaWYKKyAgICByZXR1cm4gZnJvbnRlbmRDaGFubmVsOwogfQogCiB2b2lkIEluc3BlY3Rv
ckNsaWVudFF0OjpjbG9zZUluc3BlY3RvckZyb250ZW5kKCkKQEAgLTI3MSw3ICsyNzQsNyBAQCB2
b2lkIEluc3BlY3RvckNsaWVudFF0OjphdHRhY2hBbmRSZXBsYWNlCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKICAgICBtX3JlbW90ZUZyb250RW5kQ2hhbm5lbCA9IGNoYW5uZWw7Ci0gICAgbV9p
bnNwZWN0ZWRXZWJQYWdlLT5kLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPmNvbm5lY3RGcm9udGVu
ZCgpOworICAgIG1faW5zcGVjdGVkV2ViUGFnZS0+ZC0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5j
b25uZWN0RnJvbnRlbmQodGhpcyk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50UXQuaAkocmV2aXNpb24g
MTIyNzAzKQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGll
bnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIEluc3BlY3Rv
ckNsaWVudFF0X2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuaCIKICNpbmNsdWRlIDxRdENvcmUvUVN0cmluZz4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgpAQCAtNDUsMTMgKzQ2LDEzIEBAIGNsYXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
UXQ7CiBjbGFzcyBJbnNwZWN0b3JTZXJ2ZXJSZXF1ZXN0SGFuZGxlclF0OwogY2xhc3MgUGFnZTsK
IAotY2xhc3MgSW5zcGVjdG9yQ2xpZW50UXQgOiBwdWJsaWMgSW5zcGVjdG9yQ2xpZW50IHsKK2Ns
YXNzIEluc3BlY3RvckNsaWVudFF0IDogcHVibGljIEluc3BlY3RvckNsaWVudCwgcHVibGljIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xpZW50UXQo
UVdlYlBhZ2UqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbnNwZWN0b3JEZXN0cm95ZWQoKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlciopOworICAgIHZpcnR1YWwgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDaGFu
bmVsKiBvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciop
OwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUluc3BlY3RvckZyb250ZW5kKCk7CiAgICAgdmlydHVh
bCB2b2lkIGJyaW5nRnJvbnRlbmRUb0Zyb250KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTE2ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVr
Z2FsYXRhZ2VAZ21haWwuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIElu
c3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JG
cm9udGVuZENoYW5uZWwuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MTE5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFJlZmFjdG9yaW5nIEluc3BlY3RvckNsaWVudHMuIEluc3BlY3RvckNsaWVudDo6b3Bl
bkluc3BlY3RvckZyb250ZW5kCisgICAgICAgIG5vdyByZXR1cm5pbmcgdGhlIEluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9u
dGVuZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQpOgorCiAyMDEyLTA3LTE0ICBFcmljIENhcmxzb24g
IDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBBVkNGIGhhcmR3YXJl
IHZpZGVvIGRlY29kaW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6
Omluc3BlY3RvckRlc3RybwogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIpCitXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIFdlYklu
c3BlY3RvckNsaWVudDo6b3Blbkluc3BlY3RvckZyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIpCiB7CiAgICAgcmVnaXN0ZXJXaW5kb3dDbGFzcygpOwogCkBA
IC05NiwyMSArOTYsMjEgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JG
cgogICAgICAgICAwLCAwLCAwLCAwKTsKIAogICAgIGlmICghZnJvbnRlbmRId25kKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAgQ09NUHRyPFdlYlZpZXc+IGZyb250
ZW5kV2ViVmlldyhBZG9wdENPTSwgV2ViVmlldzo6Y3JlYXRlSW5zdGFuY2UoKSk7CiAKICAgICBp
ZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+c2V0SG9zdFdpbmRvdygoT0xFX0hBTkRMRSkoVUxP
Tkc2NClmcm9udGVuZEh3bmQpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsK
IAogICAgIFJFQ1QgcmVjdDsKICAgICBHZXRDbGllbnRSZWN0KGZyb250ZW5kSHduZCwgJnJlY3Qp
OwogICAgIGlmIChGQUlMRUQoZnJvbnRlbmRXZWJWaWV3LT5pbml0V2l0aEZyYW1lKHJlY3QsIDAs
IDApKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIENPTVB0cjxX
ZWJJbnNwZWN0b3JEZWxlZ2F0ZT4gZGVsZWdhdGUoQWRvcHRDT00sIFdlYkluc3BlY3RvckRlbGVn
YXRlOjpjcmVhdGVJbnN0YW5jZSgpKTsKICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+
c2V0VUlEZWxlZ2F0ZShkZWxlZ2F0ZS5nZXQoKSkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiAwOwogCiAgICAgLy8gS2VlcCBwcmVmZXJlbmNlcyBzZXBhcmF0ZSBmcm9tIHRoZSBy
ZXN0IG9mIHRoZSBjbGllbnQsIG1ha2luZyBzdXJlIHdlIGFyZSB1c2luZyBleHBlY3RlZCBwcmVm
ZXJlbmNlIHZhbHVlcy4KICAgICAvLyBGSVhNRTogSXQncyBjcmF6eSB0aGF0IHdlIGhhdmUgdG8g
ZG8gdGhpcyBzb25nIGFuZCBkYW5jZSB0byBlbmQgdXAgd2l0aApAQCAtMTIwLDY0ICsxMjAsNjUg
QEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcgogICAgIENPTVB0cjxX
ZWJQcmVmZXJlbmNlcz4gdGVtcFByZWZlcmVuY2VzKEFkb3B0Q09NLCBXZWJQcmVmZXJlbmNlczo6
Y3JlYXRlSW5zdGFuY2UoKSk7CiAgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlcz4gaVByZWZlcmVu
Y2VzOwogICAgIGlmIChGQUlMRUQodGVtcFByZWZlcmVuY2VzLT5pbml0V2l0aElkZW50aWZpZXIo
QlN0cmluZyhMIldlYkluc3BlY3RvclByZWZlcmVuY2VzIiksICZpUHJlZmVyZW5jZXMpKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICBDT01QdHI8V2ViUHJlZmVyZW5j
ZXM+IHByZWZlcmVuY2VzKFF1ZXJ5LCBpUHJlZmVyZW5jZXMpOwogICAgIGlmICghcHJlZmVyZW5j
ZXMpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChw
cmVmZXJlbmNlcy0+c2V0QXV0b3NhdmVzKEZBTFNFKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0TG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KFRSVUUpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxl
ZChUUlVFKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZB
SUxFRChwcmVmZXJlbmNlcy0+c2V0QWxsb3dzQW5pbWF0ZWRJbWFnZXMoVFJVRSkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMt
PnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShUUlVFKSkpCi0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxFRChwcmVmZXJlbmNlcy0+c2V0UGx1Z0luc0Vu
YWJsZWQoRkFMU0UpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAgICBp
ZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRKYXZhRW5hYmxlZChGQUxTRSkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMtPnNl
dFVzZXJTdHlsZVNoZWV0RW5hYmxlZChGQUxTRSkpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiAwOwogICAgIGlmIChGQUlMRUQocHJlZmVyZW5jZXMtPnNldFRhYnNUb0xpbmtzKEZB
TFNFKSkpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgaWYgKEZBSUxF
RChwcmVmZXJlbmNlcy0+c2V0TWluaW11bUZvbnRTaXplKDApKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRNaW5pbXVt
TG9naWNhbEZvbnRTaXplKDkpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsK
ICAgICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXRGaXhlZEZvbnRGYW1pbHkoQlN0cmluZyhM
IkNvdXJpZXIgTmV3IikpKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKICAg
ICBpZiAoRkFJTEVEKHByZWZlcmVuY2VzLT5zZXREZWZhdWx0Rml4ZWRGb250U2l6ZSgxMykpKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKEZBSUxFRChmcm9u
dGVuZFdlYlZpZXctPnNldFByZWZlcmVuY2VzKHByZWZlcmVuY2VzLmdldCgpKSkpCi0gICAgICAg
IHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBmcm9udGVuZFdlYlZpZXctPnNldFBy
b2hpYml0c01haW5GcmFtZVNjcm9sbGluZyhUUlVFKTsKIAogICAgIEhXTkQgZnJvbnRlbmRXZWJW
aWV3SHduZDsKICAgICBpZiAoRkFJTEVEKGZyb250ZW5kV2ViVmlldy0+dmlld1dpbmRvdyhyZWlu
dGVycHJldF9jYXN0PE9MRV9IQU5ETEUqPigmZnJvbnRlbmRXZWJWaWV3SHduZCkpKSkKLSAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIENPTVB0cjxXZWJNdXRhYmxlVVJM
UmVxdWVzdD4gcmVxdWVzdChBZG9wdENPTSwgV2ViTXV0YWJsZVVSTFJlcXVlc3Q6OmNyZWF0ZUlu
c3RhbmNlKCkpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiBodG1sVVJMUmVmKEFkb3B0Q0Ys
IENGQnVuZGxlQ29weVJlc291cmNlVVJMKGdldFdlYktpdEJ1bmRsZSgpLCBDRlNUUigiaW5zcGVj
dG9yIiksIENGU1RSKCJodG1sIiksIENGU1RSKCJpbnNwZWN0b3IiKSkpOwogICAgIGlmICghaHRt
bFVSTFJlZikKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gMDsKIAogICAgIENGU3Ry
aW5nUmVmIHVybFN0cmluZ1JlZiA9IDo6Q0ZVUkxHZXRTdHJpbmcoaHRtbFVSTFJlZi5nZXQoKSk7
CiAgICAgaWYgKEZBSUxFRChyZXF1ZXN0LT5pbml0V2l0aFVSTChCU3RyaW5nKHVybFN0cmluZ1Jl
ZiksIFdlYlVSTFJlcXVlc3RVc2VQcm90b2NvbENhY2hlUG9saWN5LCA2MCkpKQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKEZBSUxFRChmcm9udGVuZFdlYlZp
ZXctPnRvcExldmVsRnJhbWUoKS0+bG9hZFJlcXVlc3QocmVxdWVzdC5nZXQoKSkpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAgbV9mcm9udGVuZFBhZ2UgPSBjb3Jl
KGZyb250ZW5kV2ViVmlldy5nZXQoKSk7CiAgICAgT3duUHRyPFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50PiBmcm9udGVuZENsaWVudCA9IGFkb3B0UHRyKG5ldyBXZWJJbnNwZWN0b3JGcm9udGVu
ZENsaWVudChtX2luc3BlY3RlZFdlYlZpZXcsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIGZyb250
ZW5kSHduZCwgZnJvbnRlbmRXZWJWaWV3LCBmcm9udGVuZFdlYlZpZXdId25kLCB0aGlzLCBjcmVh
dGVGcm9udGVuZFNldHRpbmdzKCkpKTsKICAgICBtX2Zyb250ZW5kQ2xpZW50ID0gZnJvbnRlbmRD
bGllbnQuZ2V0KCk7CiAgICAgbV9mcm9udGVuZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+
c2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoZnJvbnRlbmRDbGllbnQucmVsZWFzZSgpKTsKICAg
ICBtX2Zyb250ZW5kSHduZCA9IGZyb250ZW5kSHduZDsKKyAgICByZXR1cm4gdGhpczsKIH0KIAog
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmNsb3NlSW5zcGVjdG9yRnJvbnRlbmQoKQpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmgJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0NPTVB0ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9X
aW5kb3dNZXNzYWdlTGlzdGVuZXIuaD4KQEAgLTUwLDE0ICs1MSwxNCBAQCBjbGFzcyBXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIFdlYk5vZGVIaWdobGlnaHQ7CiBjbGFzcyBXZWJW
aWV3OwogCi1jbGFzcyBXZWJJbnNwZWN0b3JDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVj
dG9yQ2xpZW50IHsKK2NsYXNzIFdlYkluc3BlY3RvckNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JDbGllbnQsIHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwg
ewogcHVibGljOgogICAgIFdlYkluc3BlY3RvckNsaWVudChXZWJWaWV3Kik7CiAKICAgICAvLyBJ
bnNwZWN0b3JDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIq
KTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNwZWN0b3JGcm9udGVuZCgpOwogICAgIHZpcnR1
YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bmNlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNy0xNiAgVml2ZWsgR2FsYXRhZ2Ug
IDx2aXZla2dhbGF0YWdlQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZh
Y3RvciBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTExOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZWZhY3RvcmluZyBJbnNwZWN0b3JDbGllbnRzLiBJbnNwZWN0b3JDbGll
bnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZAorICAgICAgICBub3cgcmV0dXJuaW5nIHRoZSBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0
b3JDbGllbnRXaW5DRS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVudFdpbkNF
OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudFdpbkNFLmg6CisgICAgICAgIChJbnNwZWN0b3JDbGllbnRXaW5DRSk6CisKIDIw
MTItMDUtMzEgIEhhamltZSBNb3JyaXRhICA8bW9ycml0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUkVHUkVTU0lPTihyMTE3NTcyKTogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5j
LXJlbW92ZS1mcmFtZS5odG1sIGNyYXNoZXMgb24gTWFjCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNF
LmNwcAkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDkgKzQ1
LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50V2luQ0U6Omluc3BlY3RvckRlc3QKICAgICBkZWxl
dGUgdGhpczsKIH0KIAotdm9pZCBJbnNwZWN0b3JDbGllbnRXaW5DRTo6b3Blbkluc3BlY3RvckZy
b250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqIEluc3BlY3RvckNsaWVudFdpbkNFOjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoSW5z
cGVjdG9yQ29udHJvbGxlciogY29udHJvbGxlcikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIHJldHVybiAwOwogfQogCiB2b2lkIEluc3BlY3RvckNsaWVudFdpbkNFOjpjbG9zZUluc3Bl
Y3RvckZyb250ZW5kKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50V2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNl
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudFdpbkNFLmgJKHJldmlzaW9uIDEyMjcwMykK
KysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V2lu
Q0UuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTkgKzI2LDIwIEBACiAjZGVmaW5lIEluc3BlY3Rv
ckNsaWVudFdpbkNFX2gKIAogI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIgogCiBjbGFzcyBXZWJWaWV3OwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgSW5zcGVjdG9yQ2xpZW50V2luQ0UgOiBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yQ2xpZW50IHsKK2NsYXNzIEluc3BlY3RvckNsaWVudFdpbkNFIDogcHVibGlj
IFdlYkNvcmU6Okluc3BlY3RvckNsaWVudCwgcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbCB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ2xpZW50V2luQ0UoV2ViVmlldyog
d2ViVmlldyk7CiAgICAgfkluc3BlY3RvckNsaWVudFdpbkNFKCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Blbkluc3BlY3Rv
ckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2aXJ0dWFsIFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNw
ZWN0b3JGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gMTIyNzAzKQorKysgU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNy0x
NiAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZla2dhbGF0YWdlQGdtYWlsLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiByZWZhY3RvciBJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQoKSB0byBhY2NlcHQgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTExOTYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZyBJbnNwZWN0b3JDbGll
bnRzLiBJbnNwZWN0b3JDbGllbnQ6Om9wZW5JbnNwZWN0b3JGcm9udGVuZAorICAgICAgICBub3cg
cmV0dXJuaW5nIHRoZSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCisKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNsaWVudFd4OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAqIFdlYktpdFN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaDoKKyAgICAgICAgKEluc3BlY3RvckNsaWVudFd4KToK
KwogMjAxMi0wNy0wMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEbyBub3QgZG8gYW55IGxvZ2dpbmcgaW5pdGlhbGl6YXRpb24gd2hlbiBsb2dnaW5n
IGlzIGRpc2FibGVkCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvSW5zcGVj
dG9yQ2xpZW50V3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3Vw
cG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAJKHJldmlzaW9uIDEyMjcwMykKKysrIFNvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDkgKzQ3LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50V3g6Omluc3BlY3RvckRl
c3Ryb3kKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNsaWVudFd4
OjpvcGVuSW5zcGVjdG9yRnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopCitJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqIEluc3BlY3RvckNsaWVudFd4OjpvcGVuSW5zcGVjdG9y
RnJvbnRlbmQoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciopCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBJbnNwZWN0b3JDbGllbnRXeDo6Y2xv
c2VJbnNwZWN0b3JGcm9udGVuZCgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50V3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50V3guaAkocmV2aXNpb24gMTIyNzAzKQorKysgU291
cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0luc3BlY3RvckNsaWVudFd4LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDIwICsyNywyMSBAQAogI2RlZmluZSBJbnNwZWN0b3JDbGllbnRXeF9oCiAK
ICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFBhZ2U7CiAKLWNsYXNzIEluc3BlY3RvckNsaWVudFd4IDogcHVibGljIElu
c3BlY3RvckNsaWVudCB7CitjbGFzcyBJbnNwZWN0b3JDbGllbnRXeCA6IHB1YmxpYyBJbnNwZWN0
b3JDbGllbnQsIHB1YmxpYyBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwgewogcHVibGljOgogICAg
IEluc3BlY3RvckNsaWVudFd4KCk7CiAgICAgfkluc3BlY3RvckNsaWVudFd4KCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgaW5zcGVjdG9yRGVzdHJveWVkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3Bl
bkluc3BlY3RvckZyb250ZW5kKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKKyAgICB2
aXJ0dWFsIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogb3Blbkluc3BlY3RvckZyb250ZW5kKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VJbnNw
ZWN0b3JGcm9udGVuZCgpOwogICAgIHZpcnR1YWwgdm9pZCBicmluZ0Zyb250ZW5kVG9Gcm9udCgp
OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>