<?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>84532</bug_id>
          
          <creation_ts>2012-04-21 08:51:45 -0700</creation_ts>
          <short_desc>[Qt][WK2] Private non-QtQuick API</short_desc>
          <delta_ts>2012-07-03 01:49:44 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>90372</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Noam Rosenthal">noam</reporter>
          <assigned_to name="Luiz Agostini">luiz</assigned_to>
          <cc>abarth</cc>
    
    <cc>adrian.yanes</cc>
    
    <cc>alex.bravo</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dpranke</cc>
    
    <cc>girish</cc>
    
    <cc>hausmann</cc>
    
    <cc>helder.correia</cc>
    
    <cc>jesus</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kenneth</cc>
    
    <cc>levin</cc>
    
    <cc>loki</cc>
    
    <cc>luiz</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>rafael.lobo</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>607210</commentid>
    <comment_count>0</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-04-21 08:51:45 -0700</bug_when>
    <thetext>Right now the only way to use WebKit2 is either inside QML or using a C++ QQuickCanvas.
This is ok for what we want to support publicly at this point, but there has been requests for an API that can work without QtQuick, e.g. just rendering the web-view directly to the current OpenGL context, and passing events directly through the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638329</commentid>
    <comment_count>1</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-31 06:27:58 -0700</bug_when>
    <thetext>The current thinking is to use the WebKit2 C API, with an additional WKView-like file that can render to a GL context. We&apos;re experimenting with this in a branch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638344</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-31 06:39:54 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; The current thinking is to use the WebKit2 C API, with an additional WKView-like file that can render to a GL context. We&apos;re experimenting with this in a branch.

What about the whole interaction model?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638350</commentid>
    <comment_count>3</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-31 06:46:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (In reply to comment #1)
&gt; &gt; The current thinking is to use the WebKit2 C API, with an additional WKView-like file that can render to a GL context. We&apos;re experimenting with this in a branch.
&gt; 
&gt; What about the whole interaction model?

There are two options:
1. expose that via the WKView API
2. Allow people to do whatever they want in their browser code, and expose only what&apos;s necessary for them to implement them.

But we haven&apos;t gotten that far yet. What do you think?
Maybe we should discuss this over IRC at some point rather than on this bug :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638351</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-31 06:46:59 -0700</bug_when>
    <thetext>Yes, let&apos;s do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638506</commentid>
    <comment_count>5</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-05-31 09:44:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; But we haven&apos;t gotten that far yet. What do you think?
&gt; Maybe we should discuss this over IRC at some point rather than on this bug :)

Would be nice to post a summary of the discussion here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638532</commentid>
    <comment_count>6</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-05-31 10:20:32 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; But we haven&apos;t gotten that far yet. What do you think?
&gt; &gt; Maybe we should discuss this over IRC at some point rather than on this bug :)
&gt; 
&gt; Would be nice to post a summary of the discussion here.

The main issues are the viewport interaction engine and the gesture handler. Some of the decisions we&apos;re making inside WebKit2 are more of a particular browser behavior than something that can be used by a non-browser web application.

We agreed to keep that in mind when we get to those issues - at least the first version we&apos;re doing might not even need some of those features.

We&apos;ll keep communicating as we go along :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640985</commentid>
    <comment_count>7</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-04 16:39:16 -0700</bug_when>
    <thetext>Currently the plan is to put this under the codename &quot;qtcb&quot; (Qt C bindings). We&apos;ll have UIProcess/API/qt/qtcb
.. and MiniBrowser/qtcb

This is the best we could come up with, if someone has better suggestions please don&apos;t be shy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641249</commentid>
    <comment_count>8</comment_count>
      <attachid>145712</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-05 00:35:32 -0700</bug_when>
    <thetext>Created attachment 145712
patch

This is a first version of the patch. I am submitting it as it is, without changelog.

This patch contains a very simple Api to be used together with the C Api. It contais as well a demo browser named MiniBrowser_cb (c bindings). Both, Api and browser, are not complete. The idea is to increment the Api as needed, but to keep it as small and simple as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641253</commentid>
    <comment_count>9</comment_count>
      <attachid>145713</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-05 00:45:32 -0700</bug_when>
    <thetext>Created attachment 145713
patch

a small correction to the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641399</commentid>
    <comment_count>10</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-06-05 04:16:35 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=145713) [details]
&gt; patch
&gt; 
&gt; a small correction to the previous patch.

Some questions :
- Is that a long term commitment? Noam can you guarantee that people will maintain that API? What happen if your project is discontinued? The Qt Quick API goes to Qt 5 which means that we will have users of it other than Nokia and that worst case the community will step up to work on it.

- The API doesn&apos;t respect Qt guidelines API, e.g. the d pointer.

- What about tests? I&apos;m sorry to be the annoying guy but every new API needs to be tested. None of us out there have the thing you are working on therefore without test if we break that API we can&apos;t know for sure if it works or not. I&apos;m not very sure the MiniBrowser is good enough in that matter.

I know I&apos;m annoying but I&apos;d like to make sure that what we are checking in is not research work, we commit to it and it follows our usual guidelines.

Other than that nice to see you back luis!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641485</commentid>
    <comment_count>11</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-05 06:23:45 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Created an attachment (id=145713) [details] [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; a small correction to the previous patch.
&gt; 
&gt; Some questions :
&gt; - Is that a long term commitment? Noam can you guarantee that people will maintain that API? 

It&apos;s a private API, it should have the proper warnings. It&apos;s not a committed part of the Qt port, nor is it a committed part of any port. It&apos;s there for the sole purpose of having C++ glue to WebKit without exposing WebCore classes, and we&apos;re upstreaming it so that it doesn&apos;t break.

&gt; - The API doesn&apos;t respect Qt guidelines API, e.g. the d pointer.
It&apos;s not a Qt API. It&apos;s C/C++ bindings to the Qt port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641489</commentid>
    <comment_count>12</comment_count>
      <attachid>145713</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-05 06:34:57 -0700</bug_when>
    <thetext>Comment on attachment 145713
patch

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

I think this needs a test, to make sure people don&apos;t break it. Also some nitpicks :)

&gt; Source/WebKit2/ChangeLog:6
&gt; +        [Qt][WK2] Private non-QtQuick API
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=84532
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).

Needs some explanation about this being a private API (meaning not packaged together with Qt or part of the Qt port).
Also explain that it&apos;s guarded by a qmake CONFIG flag.

&gt; Source/WebKit2/UIProcess/API/qt/WKView.h:23
&gt; +    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
&gt; +    Boston, MA 02110-1301, USA.
&gt; +*/
&gt; +
&gt; +#ifndef WKView_h
&gt; +#define WKView_h
&gt; +#include &quot;qwebkitglobal.h&quot;
&gt; +

I think this needs a warning that it&apos;s not part of the Qt API in any way.

&gt; Source/WebKit2/UIProcess/API/qt/WKViewImpl.cpp:118
&gt; +void WKViewImpl::setUrl(const QUrl&amp; url)
&gt; +{
&gt; +    m_url = url;
&gt; +    m_webPageProxy-&gt;loadURL(url.toString());
&gt; +}

I&apos;d rather if we just had loadURL function.

&gt; Source/WebKit2/UIProcess/API/qt/WKViewImpl.h:163
&gt; +
&gt; +

Extra lines

&gt; Tools/MiniBrowser/qtcb/View.cpp:151
&gt; +    qDebug() &lt;&lt; __PRETTY_FUNCTION__ &lt;&lt; __LINE__;

Need to remove these debug messages before upstreaming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641508</commentid>
    <comment_count>13</comment_count>
      <attachid>145713</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-05 07:12:45 -0700</bug_when>
    <thetext>Comment on attachment 145713
patch

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

&gt; Source/WebKit2/UIProcess/API/qt/WKViewImpl.cpp:99
&gt; +    WebPreferences* wkPrefs = m_webPageProxy-&gt;pageGroup()-&gt;preferences();
&gt; +    wkPrefs-&gt;setDeviceDPI(160);
&gt; +    wkPrefs-&gt;setDeviceWidth(m_size.width());
&gt; +    wkPrefs-&gt;setDeviceHeight(m_size.height());

Can we do this via the regular C API?

&gt;&gt; Source/WebKit2/UIProcess/API/qt/WKViewImpl.cpp:118
&gt;&gt; +void WKViewImpl::setUrl(const QUrl&amp; url)
&gt;&gt; +{
&gt;&gt; +    m_url = url;
&gt;&gt; +    m_webPageProxy-&gt;loadURL(url.toString());
&gt;&gt; +}
&gt; 
&gt; I&apos;d rather if we just had loadURL function.

Actually, I&apos;d prefer if we didn&apos;t expose it at all and just call WKPageLoadURL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641549</commentid>
    <comment_count>14</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-05 07:57:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 145713 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145713&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/WKViewImpl.cpp:99
&gt; &gt; +    WebPreferences* wkPrefs = m_webPageProxy-&gt;pageGroup()-&gt;preferences();
&gt; &gt; +    wkPrefs-&gt;setDeviceDPI(160);
&gt; &gt; +    wkPrefs-&gt;setDeviceWidth(m_size.width());
&gt; &gt; +    wkPrefs-&gt;setDeviceHeight(m_size.height());
&gt; 
&gt; Can we do this via the regular C API?

We don&apos;t need those lines. I will double check it.

&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/qt/WKViewImpl.cpp:118
&gt; &gt;&gt; +void WKViewImpl::setUrl(const QUrl&amp; url)
&gt; &gt;&gt; +{
&gt; &gt;&gt; +    m_url = url;
&gt; &gt;&gt; +    m_webPageProxy-&gt;loadURL(url.toString());
&gt; &gt;&gt; +}
&gt; &gt; 
&gt; &gt; I&apos;d rather if we just had loadURL function.
&gt; 
&gt; Actually, I&apos;d prefer if we didn&apos;t expose it at all and just call WKPageLoadURL

sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641558</commentid>
    <comment_count>15</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-05 08:05:48 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 145713 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145713&amp;action=review
&gt; 
&gt; I think this needs a test, to make sure people don&apos;t break it. Also some nitpicks :)

&gt; Needs some explanation about this being a private API (meaning not packaged together with Qt or part of the Qt port).
&gt; Also explain that it&apos;s guarded by a qmake CONFIG flag.

&gt; I think this needs a warning that it&apos;s not part of the Qt API in any way.

&gt; I&apos;d rather if we just had loadURL function.

&gt; Extra lines

&gt; Need to remove these debug messages before upstreaming.

I will work on those issues today. I uploaded it as it was yesterday for the guys to see it, because of the time difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641566</commentid>
    <comment_count>16</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-05 08:11:47 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Created an attachment (id=145713) [details] [details]
&gt; &gt; patch

&gt; Other than that nice to see you back luis!

Thanks! It is nice to be back!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641845</commentid>
    <comment_count>17</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-06-05 13:27:47 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #9)
&gt; &gt; &gt; Created an attachment (id=145713) [details] [details] [details]
&gt; &gt; &gt; patch
&gt; &gt; &gt; 
&gt; &gt; &gt; a small correction to the previous patch.
&gt; &gt; 
&gt; &gt; Some questions :
&gt; &gt; - Is that a long term commitment? Noam can you guarantee that people will maintain that API? 
&gt; 
&gt; It&apos;s a private API, it should have the proper warnings. It&apos;s not a committed part of the Qt port, nor is it a committed part of any port. It&apos;s there for the sole purpose of having C++ glue to WebKit without exposing WebCore classes, and we&apos;re upstreaming it so that it doesn&apos;t break.

I think the bar for landing stuff in trunk is higher than that.

I&apos;d like to hear your comment on Alexi&apos;s question about tests.

&gt; &gt; - The API doesn&apos;t respect Qt guidelines API, e.g. the d pointer.
&gt; It&apos;s not a Qt API. It&apos;s C/C++ bindings to the Qt port.

If it&apos;s part of the Qt port (as a side project) it should follow Qt standards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641863</commentid>
    <comment_count>18</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-05 13:48:07 -0700</bug_when>
    <thetext>&gt; I think the bar for landing stuff in trunk is higher than that.
We&apos;re 
 
&gt; I&apos;d like to hear your comment on Alexi&apos;s question about tests.
Of course we will include tests, I think I&apos;ve commented on that already. We wanted to put a patch that contains the general direction early.

&gt; &gt; It&apos;s not a Qt API. It&apos;s C/C++ bindings to the Qt port.
&gt; If it&apos;s part of the Qt port (as a side project) it should follow Qt standards.
Sure, we can go down that route. Though I thought those Qt standards were about Qt public APIs in order to maintain binary-compatibility, which is not the goal of this API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641867</commentid>
    <comment_count>19</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-05 13:51:30 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; I think the bar for landing stuff in trunk is higher than that.
&gt; We&apos;re 
(oops, forgot to finish the sentence).
We&apos;re setting the bar as high as any other WebKit contribution, and as high as other private Qt APIs. If there&apos;s a specific case where you feel this is below that bar, please speak up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642257</commentid>
    <comment_count>20</comment_count>
      <attachid>145953</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-06 00:47:35 -0700</bug_when>
    <thetext>Created attachment 145953
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642262</commentid>
    <comment_count>21</comment_count>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-06 00:54:40 -0700</bug_when>
    <thetext>The tests in tst_qtcb are pixel tests. WKView is actually very convenient to implement pixel tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642378</commentid>
    <comment_count>22</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-06-06 04:56:16 -0700</bug_when>
    <thetext>I think we have to be careful with this kind of direction since it can become far more complex than these initial patches in 1 year, after it evolved.

You&apos;ll need a different PageClient and a complete different set of UIProcess proxy classes. You&apos;ll eventually duplicate at least half of the code in WebKit2/UIProcess/qt and API/qt.
You&apos;ll start needing different messages and web process behaviors, and there won&apos;t be implementations for every features each API has, so we&apos;ll need to start guarding stuff with #if !USE(QTCB) or #if PLATFORM(QT) &amp;&amp; !USE(QTCB).

You&apos;re essentially starting a new port of WebKit2.

I understand how upstreaming this can be beneficial for you, but the cost is however I think considerably high for QtWebKit as a whole. I&apos;m not saying that we shouldn&apos;t do it, but that this should be thought through first.

After all, all this is just to avoid the overhead of QQuickCanvas, is it worth it? Did anybody try to measure how much performance/memory this could actually save?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642598</commentid>
    <comment_count>23</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-06 10:41:20 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; I think we have to be careful with this kind of direction since it can become far more complex than these initial patches in 1 year, after it evolved.
&gt; 
&gt; You&apos;ll need a different PageClient and a complete different set of UIProcess proxy classes. You&apos;ll eventually duplicate at least half of the code in WebKit2/UIProcess/qt and API/qt.

We&apos;ll need to do that anyway if we want a custom behavior that&apos;s not like the one in UIProcess/qt. I&apos;d rather have the API and do it outside WebKit trunk, to avoid introducing noise to the current implementation.

&gt; You&apos;ll start needing different messages and web process behaviors, and there won&apos;t be implementations for every features each API has, so we&apos;ll need to start guarding stuff with #if !USE(QTCB) or #if PLATFORM(QT) &amp;&amp; !USE(QTCB).

We&apos;re not going to do any of that. What we&apos;re talking about is essentially two cross-process state machines - viewport handling and gesture handling. If we want to reuse them, we&apos;ll expose them the same way we do with LayerTreeHostProxy, which handles the async state-machine internally but exposes a simple internal non-Qt API.

&gt; You&apos;re essentially starting a new port of WebKit2.
&gt; 
&gt; I understand how upstreaming this can be beneficial for you, but the cost is however I think considerably high for QtWebKit as a whole. I&apos;m not saying that we shouldn&apos;t do it, but that this should be thought through first.

I think this would benefit QtWebKit, not just &quot;our project&quot;. Having a clean (private) API to *WebKit* rather than to some default browser behavior we decided to put in the QML API layer can help us test WebKit in a much cleaner way, separate the QML-API concerns and test them specifically in the API tests. For example it would help us clean out the current code paths that work differently in WTR than they do in MiniBrowser.
 
&gt; After all, all this is just to avoid the overhead of QQuickCanvas, is it worth it? Did anybody try to measure how much performance/memory this could 
actually save?

It&apos;s more about removing a huge chunk of code from the equation that we spend all of our time working around because it does things differently than how we need them to behave. It&apos;s not about performance yet, but I&apos;m sure that would come up as well.

Right now WebKit and the default browser behavior are entangled together, while people who need to productize browsers usually have to fork that behavior anyway. I propose to separate those two, leaving the &quot;default behavior for QML views&quot; feature in its own space (I think even outside trunk, but that&apos;s a separate discussion), and allowing lower-level access via the existing C APIs when you don&apos;t want that default behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642611</commentid>
    <comment_count>24</comment_count>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-06-06 11:01:17 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; Right now WebKit and the default browser behavior are entangled together, while people who need to productize browsers usually have to fork that behavior anyway. I propose to separate those two, leaving the &quot;default behavior for QML views&quot; feature in its own space (I think even outside trunk, but that&apos;s a separate discussion), and allowing lower-level access via the existing C APIs when you don&apos;t want that default behavior.

Can you expand on where specifically there are entanglements, and how they are fundamental to the QML bindings and not some features/settings that are just missing? 

Can you also expand on what you mean by leaving the &quot;default behavior for QML views&quot; outside of trunk?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642651</commentid>
    <comment_count>25</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-06 11:42:20 -0700</bug_when>
    <thetext>&gt; Can you expand on where specifically there are entanglements, and how they are fundamental to the QML bindings and not some features/settings that are just missing? 

I specifically mean that the API only exposes the default browser behavior (e.g. the gesture state-machine), and to use that you have to use a QQuickWebView inside a QQuickCanvas.
If we had a browser that wanted to implement a slightly different sequence for gestures, there&apos;s no way to do it without forking webkit or introducing a lot more complexity to the gesture state-machine, which is already rather complex.

&gt; Can you also expand on what you mean by leaving the &quot;default behavior for QML views&quot; outside of trunk?

If I look at the WebKit project goals, it&apos;s stated that &quot;WebKit is a content engine and not a browser&quot;. Some of the behaviors we implement in the API layer (see above) are specific to an interaction paradigm or UI decisions, and can even be specific to a device or OS. That code is also very dynamic, and change rather rapidly as Qt5 is still evolving - that layer I think changes much more than any other part we&apos;re working on, and is the most prone to changes in Qt (it relies on 2-3 modules outside of qtbase).

IMO if we could expose the C+WKView API in webkit trunk, then we could develop the QtQuick bindings as part of the Qt project in a Qt repo and host it there, making it the public API if you&apos;re getting WebKit via Qt. For QML embedders it wouldn&apos;t change a thing, but for us it would make it much easier to develop those QtQuick bindings, without bringing core QtWebKit development to a halt.
In the context of the Qt project we can choose any goals we like, probably good QtQuick default behavior is a good goal for that project.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642759</commentid>
    <comment_count>26</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-06 13:40:19 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; &gt; Can you expand on where specifically there are entanglements, and how they are fundamental to the QML bindings and not some features/settings that are just missing? 
&gt; 
&gt; I specifically mean that the API only exposes the default browser behavior (e.g. the gesture state-machine), and to use that you have to use a QQuickWebView inside a QQuickCanvas.
&gt; If we had a browser that wanted to implement a slightly different sequence for gestures, there&apos;s no way to do it without forking webkit or introducing a lot more complexity to the gesture state-machine, which is already rather complex.
&gt; 
&gt; &gt; Can you also expand on what you mean by leaving the &quot;default behavior for QML views&quot; outside of trunk?
&gt; 
&gt; If I look at the WebKit project goals, it&apos;s stated that &quot;WebKit is a content engine and not a browser&quot;. Some of the behaviors we implement in the API layer (see above) are specific to an interaction paradigm or UI decisions, and can even be specific to a device or OS. That code is also very dynamic, and change rather rapidly as Qt5 is still evolving - that layer I think changes much more than any other part we&apos;re working on, and is the most prone to changes in Qt (it relies on 2-3 modules outside of qtbase).
&gt; 
&gt; IMO if we could expose the C+WKView API in webkit trunk, then we could develop the QtQuick bindings as part of the Qt project in a Qt repo and host it there, making it the public API if you&apos;re getting WebKit via Qt. For QML embedders it wouldn&apos;t change a thing, but for us it would make it much easier to develop those QtQuick bindings, without bringing core QtWebKit development to a halt.
&gt; In the context of the Qt project we can choose any goals we like, probably good QtQuick default behavior is a good goal for that project.

btw this is just my opinion as an answer to your question, not a proposal, a plan or something that&apos;s my responsibility. I think we should not drag this patch to a discussion on QtWebkit project goals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643946</commentid>
    <comment_count>27</comment_count>
      <attachid>146393</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-07 14:59:33 -0700</bug_when>
    <thetext>Created attachment 146393
patch

some test improvements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643952</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-07 15:04:13 -0700</bug_when>
    <thetext>Attachment 146393 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/qt/tests/qtcb/tst_qtcb.cpp:97:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebKit2/UIProcess/API/qt/tests/qtcb/tst_qtcb.cpp:135:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
Total errors found: 2 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644788</commentid>
    <comment_count>29</comment_count>
      <attachid>146595</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-08 10:29:26 -0700</bug_when>
    <thetext>Created attachment 146595
patch

coding style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645896</commentid>
    <comment_count>30</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-06-11 04:20:42 -0700</bug_when>
    <thetext>Let&apos;s discuss this in detail face-to-face in Berlin.

On a higher level I think one thing that this should be landed either together with or at least very close by is the enabling of TestWebKitAPI. This is an opportunity to re-use those tests and it would seem like a fit.

In terms of build flags I think this should always be enabled, just not be shipped with public header files at this point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645901</commentid>
    <comment_count>31</comment_count>
      <attachid>146595</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-06-11 04:24:43 -0700</bug_when>
    <thetext>Comment on attachment 146595
patch

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

&gt; Source/WebKit2/Target.pri:798
&gt; +contains(CONFIG, qtcb) {

I think in general, if we&apos;re gonna do this, then it shouldn&apos;t be behind a build flag, it should be built by default. That means we can skip the awkward &quot;qtcb&quot; prefix as well.

&gt; Source/WebKit2/Target.pri:801
&gt; +        UIProcess/API/cpp/qt/WKView.h \
&gt; +        UIProcess/API/cpp/qt/WKViewImpl.h

QWKView_p.h
QWKView_p_p.h

&gt; Source/WebKit2/Target.pri:803
&gt; +        UIProcess/API/cpp/qt/WKViewImpl.cpp

QWKView.cpp

&gt; Source/WebKit2/UIProcess/API/cpp/qt/WKViewImpl.h:53
&gt; +    virtual void handleDownloadRequest(DownloadProxy* download) { /* FIXME: Implement. */ }

Perhaps these FIXME&apos;s should be replaced with notImplemente();

&gt; Source/tests.pri:57
&gt; +    contains(CONFIG, qtcb) {
&gt; +        SUBDIRS += \
&gt; +            $$WEBKIT2_TESTS_DIR/qtcb
&gt; +    }

$$WEBKIT2_TESTS_DIR/qwkview, without any conditionals

We should also have an implementation of TestWebKitAPI based on this work.

&gt; Tools/MiniBrowser/qtcb/View.cpp:61
&gt; +View::View(const char* url)

QString?

&gt; Tools/MiniBrowser/qtcb/View.cpp:133
&gt; +    QGuiApplication a(argc, argv);

app / application

&gt; Tools/MiniBrowser/qtcb/View.cpp:135
&gt; +    View view(argc &gt; 1 ? argv[1] : &quot;http://www.google.com&quot;);

app.arguments().at()

&gt; Tools/Tools.pro:22
&gt; +contains(CONFIG, qtcb) {
&gt; +    SUBDIRS += MiniBrowser/qtcb/MiniBrowser_cb.pro
&gt; +}

Ideally we&apos;d be able to run minibrowser with --wkview, but for now this is fine I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647567</commentid>
    <comment_count>32</comment_count>
      <attachid>147208</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-12 18:29:15 -0700</bug_when>
    <thetext>Created attachment 147208
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>647631</commentid>
    <comment_count>33</comment_count>
      <attachid>147208</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-12 20:10:55 -0700</bug_when>
    <thetext>Comment on attachment 147208
patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        This is not public API. It may change without notice at any time
&gt; +        in future and we make no commitment regarding source compatibility
&gt; +        or binary compatibility.

This warning should be in the header file, the changelog should describe what the API actually does.

&gt; Source/WebKit2/Target.pri:180
&gt; +    UIProcess/API/cpp/qt/QWKView_p.h \
&gt; +    UIProcess/API/cpp/qt/QWKView_p_p.h \

Probably needs to be qwkview_p and qwkview_p_p.

&gt; Source/WebKit2/UIProcess/API/cpp/qt/QWKView.cpp:96
&gt; +        return;
&gt; +
&gt; +

Extra line

&gt; Source/WebKit2/UIProcess/API/cpp/qt/QWKView.cpp:98
&gt; +    drawingArea-&gt;setVisibleContentsRect(WebCore::IntRect(WebCore::IntPoint(), m_size), 1, WebCore::FloatPoint());

What does 1 mean? Needs a comment

&gt; Source/WebKit2/UIProcess/API/cpp/qt/QWKView.cpp:116
&gt; +    renderer-&gt;setVisibleContentsRect(WebCore::IntRect(WebCore::IntPoint(), m_size), 1, WebCore::FloatPoint());

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658180</commentid>
    <comment_count>34</comment_count>
      <attachid>149650</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-26 17:59:14 -0700</bug_when>
    <thetext>Created attachment 149650
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658693</commentid>
    <comment_count>35</comment_count>
      <attachid>149650</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-27 10:17:49 -0700</bug_when>
    <thetext>Comment on attachment 149650
patch

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

I&apos;m generally ok with the direction this patch is going, though of course there are still some nitpicks.
Does anyone else have a major issue with how things look?

&gt; Source/WebKit2/UIProcess/API/C/WKPreferences.cpp:400
&gt; +void WKPreferencesSetForceCompositingMode(WKPreferencesRef preferencesRef, bool flag)
&gt; +{
&gt; +    toImpl(preferencesRef)-&gt;setForceCompositingMode(flag);
&gt; +}
&gt; +
&gt; +bool WKPreferencesGetForceCompositingMode(WKPreferencesRef preferencesRef)
&gt; +{
&gt; +    return toImpl(preferencesRef)-&gt;forceCompositingMode();
&gt; +}
&gt; +

Maybe instead of exposing this, we should always force compositing in the Qt port.

&gt; Source/WebKit2/UIProcess/API/cpp/qt/qwkview.cpp:96
&gt; +
&gt; +
&gt; +    DrawingAreaProxy* drawingArea = m_webPageProxy-&gt;drawingArea();
&gt; +    if (!drawingArea)
&gt; +        return;
&gt; +
&gt; +

Lot&apos;s of empty lines :)

&gt; Source/WebKit2/UIProcess/API/cpp/qt/qwkview_p_p.h:38
&gt; +class QWKViewImpl : public PageClient , public QWKView {

extra space

&gt; Source/WebKit2/UIProcess/API/cpp/qt/qwkview_p_p.h:68
&gt; +    virtual void didReceiveMessageFromNavigatorQtObject(const String&amp; message) { notImplemented(); }
&gt; +    virtual void didChangeViewportProperties(const WebCore::ViewportAttributes&amp; attr) { notImplemented(); }
&gt; +    virtual void handleDownloadRequest(DownloadProxy* download) { notImplemented(); }
&gt; +
&gt; +    virtual void handleAuthenticationRequiredRequest(const String&amp; hostname, const String&amp; realm, const String&amp; prefilledUsername, String&amp; username, String&amp; password) { notImplemented(); }
&gt; +    virtual void handleCertificateVerificationRequest(const String&amp; hostname, bool&amp; ignoreErrors) { notImplemented(); }
&gt; +    virtual void handleProxyAuthenticationRequiredRequest(const String&amp; hostname, uint16_t port, const String&amp; prefilledUsername, String&amp; username, String&amp; password) { notImplemented(); }
&gt; +
&gt; +    virtual void registerEditCommand(PassRefPtr&lt;WebEditCommandProxy&gt;, WebPageProxy::UndoOrRedo) { notImplemented(); }
&gt; +    virtual void clearAllEditCommands() { }
&gt; +    virtual bool canUndoRedo(WebPageProxy::UndoOrRedo undoOrRedo) { notImplemented(); return false; }
&gt; +    virtual void executeUndoRedo(WebPageProxy::UndoOrRedo undoOrRedo) { notImplemented(); }
&gt; +
&gt; +    virtual WebCore::FloatRect convertToDeviceSpace(const WebCore::FloatRect&amp; rect) { notImplemented(); return rect; }
&gt; +    virtual WebCore::FloatRect convertToUserSpace(const WebCore::FloatRect&amp; rect) { notImplemented(); return rect; }
&gt; +    virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&amp; point) { notImplemented(); return point; }
&gt; +    virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&amp; rect) { notImplemented(); return rect; }

I&apos;d prefer if those notImplemented() calls were in the cpp file, makes it easier later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659261</commentid>
    <comment_count>36</comment_count>
      <attachid>149650</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-06-27 23:44:12 -0700</bug_when>
    <thetext>Comment on attachment 149650
patch

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

&gt; Source/WebKit2/UIProcess/API/cpp/qt/qwkview.cpp:148
&gt; +void QWKViewImpl::touchEvent(QTouchEvent* event)
&gt; +{
&gt; +    m_webPageProxy-&gt;handleTouchEvent(NativeWebTouchEvent(event, QTransform()));
&gt; +}
&gt; +
&gt; +void QWKViewImpl::doneWithKeyEvent(const NativeWebKeyboardEvent&amp; event, bool wasEventHandled)
&gt; +{
&gt; +    m_client-&gt;doneWithKeyEvent(event.nativeEvent(), wasEventHandled);
&gt; +}
&gt; +
&gt; +#if ENABLE(TOUCH_EVENTS)

There&apos;s an #if here but not above in ::touchEvent.

&gt;&gt; Source/WebKit2/UIProcess/API/cpp/qt/qwkview_p_p.h:38
&gt;&gt; +class QWKViewImpl : public PageClient , public QWKView {
&gt; 
&gt; extra space

Is there a particular reason for choosing the design of an abstract interface (QWKView) and an in-library implementation (QWKViewImpl) over what would seem a more common pattern in Qt of having one class and a d-pointer for things that would require including webcore headers in the semi-public header?

The Apple Windows build seems to use entirely a C API, the Apple Mac port is using an object C class due to what seems to be a requirement of subclassing NSView.

&gt; Source/WebKit2/UIProcess/API/cpp/qt/qwkview_p_p.h:160
&gt; +    QUrl m_url;

This appears to be an unused member variable.

&gt; Tools/MiniBrowser/qwkview/View.cpp:72
&gt; +    m_webView = WebKit::QWKView::create(createWebContext(), createWebPageGroup(QString()), this);
&gt; +    m_webView-&gt;initialize();

Is there a particular reason for this pattern over say giving QWKView a constructor that implies initialize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659489</commentid>
    <comment_count>37</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-28 07:24:51 -0700</bug_when>
    <thetext>Jocelyn has raised some concern in IRC about the name QWKView being confusing vs. QQuickWebView. 
I propsoed to call this QRawWebView instead.
This way we have QQuickWebView and QRawWebView, you either go the quick way or the raw way. Any objections?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660887</commentid>
    <comment_count>38</comment_count>
      <attachid>150279</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-29 17:35:39 -0700</bug_when>
    <thetext>Created attachment 150279
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660888</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-29 17:39:34 -0700</bug_when>
    <thetext>Attachment 150279 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;ChangeLog&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u...&quot; exit_code: 1
Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h:63:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p_p.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp:21:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/WebKit2/UIProcess/API/qt/raw/qrawwebview.cpp:23:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 4 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660895</commentid>
    <comment_count>40</comment_count>
      <attachid>150279</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-06-29 17:43:10 -0700</bug_when>
    <thetext>Comment on attachment 150279
patch

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

OK, this seems to cover comments from everyone, also we agreed with several people on the naming and directory scheme with torarne and others.
It&apos;s time to move this forward - if there are any additional concerns/changes let&apos;s make them on top.

&gt; Source/WebKit2/ChangeLog:8
&gt; +

Please describe the test, and the fact that right now most of the functionality is not implemented other than the minimum needed to get web content on the screen.

&gt; Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h:88
&gt; +    void paint(const QMatrix4x4&amp; transform, float opacity, unsigned paintFlags);

Add a comment saying that this assumes a current GL context.

&gt; Source/WebKit2/UIProcess/API/qt/raw/qrawwebview_p.h:95
&gt; +    void keyEvent(QKeyEvent*);
&gt; +    void mouseEvent(QMouseEvent*, int clickCount = 0);
&gt; +    void wheelEvent(QWheelEvent*);
&gt; +    void touchEvent(QTouchEvent*);

sendKeyEvent etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660936</commentid>
    <comment_count>41</comment_count>
      <attachid>150292</attachid>
    <who name="Luiz Agostini">luiz</who>
    <bug_when>2012-06-29 19:23:14 -0700</bug_when>
    <thetext>Created attachment 150292
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660974</commentid>
    <comment_count>42</comment_count>
      <attachid>150292</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-29 21:18:56 -0700</bug_when>
    <thetext>Comment on attachment 150292
patch

Clearing flags on attachment: 150292

Committed r121620: &lt;http://trac.webkit.org/changeset/121620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660975</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-29 21:19:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145712</attachid>
            <date>2012-06-05 00:35:32 -0700</date>
            <delta_ts>2012-06-05 00:45:32 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-WK2-Private-non-QtQuick-API.patch</filename>
            <type>text/plain</type>
            <size>39377</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA4ZGMwMDIzMTJlY2E1NDA1NWE5ZmM4NDAwZDJlMTU4M2ZiM2QxMWE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogVHVlLCA1IEp1biAyMDEyIDAwOjI0OjQzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKU291
cmNlL1dlYktpdDI6CgoqIFRhcmdldC5wcmk6CiogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXMuY3BwOgooV0tQcmVmZXJlbmNlc1NldEZvcmNlQ29tcG9zaXRpbmdNb2RlKToKKFdLUHJlZmVy
ZW5jZXNHZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSk6CiogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXNQcml2YXRlLmg6CiogVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaDogQWRkZWQuCihXZWJL
aXQpOgooV0tWaWV3Q2xpZW50KToKKiBVSVByb2Nlc3MvQVBJL3F0L1dLVmlld0ltcGwuY3BwOiBB
ZGRlZC4KKFdlYktpdCk6CihXZWJLaXQ6OldLVmlldzo6Y3JlYXRlKToKKFdlYktpdDo6V0tWaWV3
SW1wbDo6V0tWaWV3SW1wbCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmluaXRpYWxpemUpOgooV2Vi
S2l0OjpXS1ZpZXdJbXBsOjp+V0tWaWV3SW1wbCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEN1
cnNvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgooV2Vi
S2l0OjpXS1ZpZXdJbXBsOjpzZXRGb2N1c2VkKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Vmlz
aWJsZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEFjdGl2ZSk6CihXZWJLaXQ6OldLVmlld0lt
cGw6OnNldFNpemUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRVcmwpOgooV2ViS2l0OjpXS1Zp
ZXdJbXBsOjpwYWludCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmtleUV2ZW50KToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6bW91c2VFdmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OndoZWVsRXZlbnQp
OgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp0b3VjaEV2ZW50KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
ZG9uZVdpdGhLZXlFdmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRvbmVXaXRoVG91Y2hFdmVu
dCk6CiogVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXdJbXBsLmg6IEFkZGVkLgooV2ViS2l0KToKKFdL
Vmlld0ltcGwpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpwYWdlQ2xvc2VkKToKKFdlYktpdDo6V0tW
aWV3SW1wbDo6c2V0RmluZEluZGljYXRvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENvbW1p
dExvYWRGb3JNYWluRnJhbWUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y3VzdG9t
UmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Q3VzdG9t
UmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdl
U2Nyb2xsYmFyc0Zvck1haW5GcmFtZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmZpbmRTdHJpbmdJ
bkN1c3RvbVJlcHJlc2VudGF0aW9uKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y291bnRTdHJpbmdN
YXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxl
RG93bmxvYWRSZXF1ZXN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlQXV0aGVudGljYXRp
b25SZXF1aXJlZFJlcXVlc3QpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpoYW5kbGVDZXJ0aWZpY2F0
ZVZlcmlmaWNhdGlvblJlcXVlc3QpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpoYW5kbGVQcm94eUF1
dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6cmVnaXN0
ZXJFZGl0Q29tbWFuZCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNsZWFyQWxsRWRpdENvbW1hbmRz
KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y2FuVW5kb1JlZG8pOgooV2ViS2l0OjpXS1ZpZXdJbXBs
OjpleGVjdXRlVW5kb1JlZG8pOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpjb252ZXJ0VG9EZXZpY2VT
cGFjZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNvbnZlcnRUb1VzZXJTcGFjZSk6CihXZWJLaXQ6
OldLVmlld0ltcGw6OnNjcmVlblRvV2luZG93KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6d2luZG93
VG9TY3JlZW4pOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSk6CihXZWJLaXQ6
OldLVmlld0ltcGw6OmRvbmVXaXRoR2VzdHVyZUV2ZW50KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
ZGlzcGxheVZpZXcpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzY3JvbGxWaWV3KToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKToKKFdlYktpdDo6V0tWaWV3SW1w
bDo6ZGlkRmluZFpvb21hYmxlQXJlYSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnRvb2xUaXBDaGFuZ2Vk
KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c3RhcnREcmFnKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
Y3JlYXRlUG9wdXBNZW51UHJveHkpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpjcmVhdGVDb250ZXh0
TWVudVByb3h5KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgoo
V2ViS2l0OjpXS1ZpZXdJbXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgooV2ViS2l0OjpXS1ZpZXdJbXBs
OjpkaWRSZWxhdW5jaFByb2Nlc3MpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRWaWV3TmVlZHNE
aXNwbGF5KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKFdl
YktpdDo6V0tWaWV3SW1wbDo6aXNWaWV3Rm9jdXNlZCk6CihXZWJLaXQ6OldLVmlld0ltcGw6Omlz
Vmlld1Zpc2libGUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUpOgoo
V2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdJbldpbmRvdyk6CihXZWJLaXQ6OldLVmlld0ltcGw6
OnZpZXdTaXplKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aXNGb2N1c2VkKToKKFdlYktpdDo6V0tW
aWV3SW1wbDo6aXNWaXNpYmxlKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aXNBY3RpdmUpOgooV2Vi
S2l0OjpXS1ZpZXdJbXBsOjpzaXplKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6dXJsKToKKFdlYktp
dDo6V0tWaWV3SW1wbDo6cGFnZVJlZik6CgpUb29sczoKCiogTWluaUJyb3dzZXIvcXRjYi9EZXJp
dmVkU291cmNlcy5wcmk6IEFkZGVkLgoqIE1pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2Iu
cHJvOiBBZGRlZC4KKiBNaW5pQnJvd3Nlci9xdGNiL1RhcmdldC5wcmk6IEFkZGVkLgoqIE1pbmlC
cm93c2VyL3F0Y2IvVmlldy5jcHA6IEFkZGVkLgooY3JlYXRlV2ViQ29udGV4dCk6CihjcmVhdGVX
ZWJQYWdlR3JvdXApOgooVmlldzo6flZpZXcpOgooVmlldzo6Vmlldyk6CihWaWV3OjpleHBvc2VF
dmVudCk6CihWaWV3OjpyZXNpemVFdmVudCk6CihWaWV3Ojp0aW1lckV2ZW50KToKKFZpZXc6OnZp
ZXdOZWVkc0Rpc3BsYXkpOgooVmlldzo6dmlld1JlcXVlc3RlZFNjcm9sbCk6CihWaWV3Ojp2aWV3
UHJvY2Vzc0NyYXNoZWQpOgooVmlldzo6dmlld1Byb2Nlc3NSZWxhdW5jaGVkKToKKFZpZXc6OnZp
ZXdDb250ZW50U2l6ZUNoYW5nZWQpOgooVmlldzo6dmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRl
KToKKFZpZXc6OmRvbmVXaXRoS2V5RXZlbnQpOgooVmlldzo6ZG9uZVdpdGhUb3VjaEV2ZW50KToK
KG1haW4pOgoqIE1pbmlCcm93c2VyL3F0Y2IvVmlldy5oOiBBZGRlZC4KKFZpZXcpOgooVmlldzo6
a2V5UHJlc3NFdmVudCk6CihWaWV3OjprZXlSZWxlYXNlRXZlbnQpOgooVmlldzo6bW91c2VEb3Vi
bGVDbGlja0V2ZW50KToKKFZpZXc6Om1vdXNlTW92ZUV2ZW50KToKKFZpZXc6Om1vdXNlUHJlc3NF
dmVudCk6CihWaWV3Ojptb3VzZVJlbGVhc2VFdmVudCk6CiogVG9vbHMucHJvOgotLS0KIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5MiArKysr
KysrKysrCiBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDggKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
Y3BwICAgfCAgIDEwICsrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaCB8ICAgIDQgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1Zp
ZXcuaCAgICAgICAgICAgfCAgIDkxICsrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvV0tWaWV3SW1wbC5jcHAgICAgIHwgIDE3NiArKysrKysrKysrKysrKysrKysrKwog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXdJbXBsLmggICAgICAgfCAgMTY4
ICsrKysrKysrKysrKysrKysrKysKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAzNyArKysrCiBUb29scy9NaW5pQnJvd3Nlci9xdGNiL0Rlcml2
ZWRTb3VyY2VzLnByaSAgICAgICAgICB8ICAgIDYgKwogVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9N
aW5pQnJvd3Nlcl9jYi5wcm8gICAgICAgICAgfCAgICA5ICsKIFRvb2xzL01pbmlCcm93c2VyL3F0
Y2IvVGFyZ2V0LnByaSAgICAgICAgICAgICAgICAgIHwgICAxNiArKwogVG9vbHMvTWluaUJyb3dz
ZXIvcXRjYi9WaWV3LmNwcCAgICAgICAgICAgICAgICAgICAgfCAgMTYxICsrKysrKysrKysrKysr
KysrKwogVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9WaWV3LmggICAgICAgICAgICAgICAgICAgICAg
fCAgIDY5ICsrKysrKysrCiBUb29scy9Ub29scy5wcm8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDYgKwogMTQgZmlsZXMgY2hhbmdlZCwgODUzIGluc2VydGlvbnMoKykK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmll
dy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9X
S1ZpZXdJbXBsLmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvV0tWaWV3SW1wbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dz
ZXIvcXRjYi9EZXJpdmVkU291cmNlcy5wcmkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5p
QnJvd3Nlci9xdGNiL01pbmlCcm93c2VyX2NiLnBybwogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xz
L01pbmlCcm93c2VyL3F0Y2IvVGFyZ2V0LnByaQogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01p
bmlCcm93c2VyL3F0Y2IvVmlldy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJv
d3Nlci9xdGNiL1ZpZXcuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNDQzM2FjLi45MmFiNjFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsOTUgQEAKKzIwMTItMDYtMDUgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFn
b3N0aW5pQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gUHJpdmF0ZSBub24tUXRRdWlj
ayBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0
NTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBU
YXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoK
KyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSk6CisgICAgICAg
IChXS1ByZWZlcmVuY2VzR2V0Rm9yY2VDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvV0tWaWV3Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdLVmll
d0NsaWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXdJbXBsLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXc6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OldLVmlld0ltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXS1ZpZXdJbXBsOjppbml0aWFsaXplKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6fldLVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRDdXJzb3Ip
OgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Rm9jdXNlZCk6CisgICAgICAgIChXZWJL
aXQ6OldLVmlld0ltcGw6OnNldFZpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBs
OjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRTaXplKToKKyAg
ICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0VXJsKToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjprZXlFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6Om1vdXNlRXZlbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXS1ZpZXdJbXBsOjp3aGVlbEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmRvbmVXaXRoS2V5
RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkb25lV2l0aFRvdWNoRXZlbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3SW1wbC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXS1ZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6cGFnZUNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNldEZp
bmRJbmRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRDb21taXRMb2Fk
Rm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkRmluaXNoTG9h
ZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldLVmll
d0ltcGw6OmN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6
OldLVmlld0ltcGw6OnNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcik6CisgICAgICAg
IChXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0lu
Q3VzdG9tUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRS
ZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6OldL
Vmlld0ltcGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6
OldLVmlld0ltcGw6OmhhbmRsZURvd25sb2FkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldL
Vmlld0ltcGw6OmhhbmRsZUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KToKKyAgICAgICAg
KFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlQ2VydGlmaWNhdGVWZXJpZmljYXRpb25SZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlUHJveHlBdXRoZW50aWNhdGlv
blJlcXVpcmVkUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnJlZ2lzdGVy
RWRpdENvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpjbGVhckFsbEVkaXRD
b21tYW5kcyk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmNhblVuZG9SZWRvKToKKyAg
ICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZXhlY3V0ZVVuZG9SZWRvKToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgorICAgICAgICAoV2ViS2l0
OjpXS1ZpZXdJbXBsOjpjb252ZXJ0VG9Vc2VyU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpXS1Zp
ZXdJbXBsOjpzY3JlZW5Ub1dpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6Ondp
bmRvd1RvU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZW50ZXJBY2NlbGVy
YXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmV4aXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6
OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6dXBkYXRlVGV4dElucHV0U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpkb25lV2l0aEdlc3R1cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6
OmRpc3BsYXlWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2Nyb2xsVmlldyk6
CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyk6
CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmRpZEZpbmRab29tYWJsZUFyZWEpOgorICAg
ICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMp
OgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjp0b29sVGlwQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OldLVmlld0ltcGw6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJLaXQ6OldLVmll
d0ltcGw6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6
OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6cHJv
Y2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkUmVsYXVuY2hQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxh
eSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmlzVmlld0ZvY3VzZWQpOgorICAgICAgICAo
V2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6aXNWaWV3SW5XaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjp2aWV3U2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmlzRm9jdXNlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldLVmlld0ltcGw6OmlzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0lt
cGw6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2l6ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnVybCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0lt
cGw6OnBhZ2VSZWYpOgorCiAyMDEyLTA1LTAxICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAg
PGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdIEFkZCBhbiBleHBlcmltZW50YWwg
ZXh0ZW5zaW9uIHRvIHNldCB0aGUgbWluLiBjb250ZW50cyB3aWR0aApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXgg
ZWI0ZWZhNS4uNWJmNjA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03ODksNiArNzg5LDE0IEBAIGNvbnRh
aW5zKERFRklORVMsIEVOQUJMRV9UT1VDSF9FVkVOVFM9MSkgewogICAgICAgICBTaGFyZWQvcXQv
TmF0aXZlV2ViVG91Y2hFdmVudFF0LmNwcAogfQogCitjb250YWlucyhDT05GSUcsIHF0Y2IpIHsK
KyAgICBIRUFERVJTICs9IFwKKyAgICAgICAgVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaCBcCisg
ICAgICAgIFVJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3SW1wbC5oCisgICAgU09VUkNFUyArPSBcCisg
ICAgICAgIFVJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3SW1wbC5jcHAKK30KKwogY29udGFpbnMoREVG
SU5FUywgRU5BQkxFX0dFT0xPQ0FUSU9OPTEpOiBRVCArPSBsb2NhdGlvbgogCiBwbHVnaW5fYmFj
a2VuZF94bGliIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcAppbmRleCA1MjMyMzM3Li40ZTkyMmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC0zNzgsNiArMzc4LDE2IEBA
IGJvb2wgV0tQcmVmZXJlbmNlc0dldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKFdLUHJl
ZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSCiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1Jl
ZiktPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCk7CiB9CiAKK3ZvaWQgV0tQcmVmZXJl
bmNlc1NldEZvcmNlQ29tcG9zaXRpbmdNb2RlKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGJvb2wgZmxhZykKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRGb3JjZUNv
bXBvc2l0aW5nTW9kZShmbGFnKTsKK30KKworYm9vbCBXS1ByZWZlcmVuY2VzR2V0Rm9yY2VDb21w
b3NpdGluZ01vZGUoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1
cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+Zm9yY2VDb21wb3NpdGluZ01vZGUoKTsKK30KKwog
dm9pZCBXS1ByZWZlcmVuY2VzU2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGZsYWcpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVu
Y2VzUmVmKS0+c2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShmbGFnKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5k
ZXggMTZkNzRlNi4uNzc3NGQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKQEAgLTc2LDYgKzc2LDEwIEBAIFdLX0VY
UE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChX
S1ByZWZlcmVuY2VzUmVmLCBiCiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZik7CiAKIC8vIERlZmF1bHRz
IHRvIGZhbHNlLgorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEZvcmNlQ29tcG9zaXRp
bmdNb2RlKFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJl
bmNlc0dldEZvcmNlQ29tcG9zaXRpbmdNb2RlKFdLUHJlZmVyZW5jZXNSZWYpOworCisvLyBEZWZh
dWx0cyB0byBmYWxzZS4KIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRDb21wb3NpdGlu
Z0JvcmRlcnNWaXNpYmxlKFdLUHJlZmVyZW5jZXNSZWYsIGJvb2wpOwogV0tfRVhQT1JUIGJvb2wg
V0tQcmVmZXJlbmNlc0dldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoV0tQcmVmZXJlbmNlc1Jl
Zik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlYjQxZjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlldy5oCkBAIC0wLDAgKzEsOTEgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgV0tWaWV3X2gKKyNkZWZpbmUgV0tWaWV3X2gKKyNp
bmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VH
cm91cC5oPgorCitjbGFzcyBRUmVjdDsKK2NsYXNzIFFSZWN0RjsKK2NsYXNzIFFQb2ludDsKK2Ns
YXNzIFFTaXplOworY2xhc3MgUUtleUV2ZW50OworY2xhc3MgUU1vdXNlRXZlbnQ7CitjbGFzcyBR
V2hlZWxFdmVudDsKK2NsYXNzIFFUb3VjaEV2ZW50OworY2xhc3MgUVVybDsKK2NsYXNzIFFNYXRy
aXg0eDQ7CitjbGFzcyBRQ3Vyc29yOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV0tW
aWV3OworCitjbGFzcyBXS1ZpZXdDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCB2
aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHZp
ZXdSZXF1ZXN0ZWRTY3JvbGwoY29uc3QgUVBvaW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2
aWV3UHJvY2Vzc0NyYXNoZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzUmVs
YXVuY2hlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld0NvbnRlbnRTaXplQ2hhbmdlZChj
b25zdCBRU2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZEN1cnNvck92
ZXJyaWRlKGNvbnN0IFFDdXJzb3ImKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhL
ZXlFdmVudChjb25zdCBRS2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50KiwgYm9vbCB3YXNI
YW5kbGVkKSA9IDA7Cit9OworCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBXS1ZpZXcgeworcHVibGlj
OgorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHNldFNpemUoY29uc3QgUVNpemUmKSA9IDA7CisgICAgdmlydHVhbCBRU2l6ZSBzaXplKCkgY29u
c3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFVybChjb25zdCBRVXJsJikgPSAwOworICAg
IHZpcnR1YWwgUVVybCB1cmwoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9j
dXNlZChib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0ID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaXNWaXNpYmxlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShi
b29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIHBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9ybSwgZmxvYXQgb3Bh
Y2l0eSwgdW5zaWduZWQgcGFpbnRGbGFncykgPSAwOworCisgICAgdmlydHVhbCBXS1BhZ2VSZWYg
cGFnZVJlZigpID0gMDsKKworICAgIHN0YXRpYyBXS1ZpZXcqIGNyZWF0ZShXS0NvbnRleHRSZWYs
IFdLUGFnZUdyb3VwUmVmLCBXS1ZpZXdDbGllbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCBrZXlF
dmVudChRS2V5RXZlbnQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRXZlbnQoUU1vdXNl
RXZlbnQqLCBpbnQgY2xpY2tDb3VudCA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgd2hlZWxF
dmVudChRV2hlZWxFdmVudCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdG91Y2hFdmVudChRVG91
Y2hFdmVudCopID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIFdLVmlld19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlld0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXdJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xNmMwOGNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXdJbXBsLmNwcApAQCAtMCwwICsxLDE3NiBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLVmll
d0ltcGwuaCIKKworI2luY2x1ZGUgIkN1cnNvci5oIgorI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJv
eHlJbXBsLmgiCisjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdFByb3h5LmgiCisjaW5jbHVkZSAiTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNlRXZlbnQuaCIK
KyNpbmNsdWRlICJOYXRpdmVXZWJUb3VjaEV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViV2hl
ZWxFdmVudC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJMYXllclRy
ZWVSZW5kZXJlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzLmgiCisKKyNpbmNsdWRlIDxRVHJhbnNmb3JtPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tWaWV3Lmg+CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dLVmlldyogV0tWaWV3OjpjcmVh
dGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiwg
V0tWaWV3Q2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjb250ZXh0UmVmIHx8ICFwYWdlR3Jv
dXBSZWYpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBuZXcgV0tWaWV3SW1wbCh0b0lt
cGwoY29udGV4dFJlZiksIHRvSW1wbChwYWdlR3JvdXBSZWYpLCBjbGllbnQpOworfQorCitXS1Zp
ZXdJbXBsOjpXS1ZpZXdJbXBsKFdlYkNvbnRleHQqIGNvbnRleHQsIFdlYlBhZ2VHcm91cCogcGFn
ZUdyb3VwLCBXS1ZpZXdDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVudCkKKyAg
ICAsIG1fd2ViUGFnZVByb3h5KGNvbnRleHQtPmNyZWF0ZVdlYlBhZ2UodGhpcywgcGFnZUdyb3Vw
KSkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKK30KKworCit2
b2lkIFdLVmlld0ltcGw6OmluaXRpYWxpemUoKQoreworICAgIG1fd2ViUGFnZVByb3h5LT5pbml0
aWFsaXplV2ViUGFnZSgpOworfQorCitXS1ZpZXdJbXBsOjp+V0tWaWV3SW1wbCgpCit7Cit9CisK
K3ZvaWQgV0tWaWV3SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29y
KQoreworICAgIG1fY2xpZW50LT52aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUoKmN1cnNvci5w
bGF0Zm9ybUN1cnNvcigpKTsKK30KKworUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBXS1Zp
ZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKK3sKKyAgICByZXR1cm4gRHJhd2luZ0Fy
ZWFQcm94eUltcGw6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eS5nZXQoKSk7Cit9CisKK3ZvaWQgV0tW
aWV3SW1wbDo6c2V0Rm9jdXNlZChib29sIGZvY3VzZWQpCit7CisgICAgbV9mb2N1c2VkID0gZm9j
dXNlZDsKKyAgICBtX3dlYlBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94
eTo6Vmlld0lzRm9jdXNlZCk7Cit9CisKK3ZvaWQgV0tWaWV3SW1wbDo6c2V0VmlzaWJsZShib29s
IHZpc2libGUpCit7CisgICAgbV92aXNpYmxlID0gdmlzaWJsZTsKKyAgICBtX3dlYlBhZ2VQcm94
eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld0lzVmlzaWJsZSk7Cit9CisK
K3ZvaWQgV0tWaWV3SW1wbDo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQoreworICAgIG1fYWN0aXZl
ID0gYWN0aXZlOworICAgIG1fd2ViUGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFn
ZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCit2b2lkIFdLVmlld0ltcGw6OnNldFNp
emUoY29uc3QgUVNpemUmIHNpemUpCit7CisgICAgbV9zaXplID0gc2l6ZTsKKworICAgIFdlYlBy
ZWZlcmVuY2VzKiB3a1ByZWZzID0gbV93ZWJQYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJl
bmNlcygpOworICAgIHdrUHJlZnMtPnNldERldmljZURQSSgxNjApOworICAgIHdrUHJlZnMtPnNl
dERldmljZVdpZHRoKG1fc2l6ZS53aWR0aCgpKTsKKyAgICB3a1ByZWZzLT5zZXREZXZpY2VIZWln
aHQobV9zaXplLmhlaWdodCgpKTsKKworICAgIG1fd2ViUGFnZVByb3h5LT5zZXRWaWV3cG9ydFNp
emUoc2l6ZSk7CisKKworICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gbV93ZWJQ
YWdlUHJveHktPmRyYXdpbmdBcmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAg
cmV0dXJuOworCisKKyAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShtX3NpemUsIFdlYkNvcmU6Oklu
dFNpemUoKSk7CisgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29y
ZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBtX3NpemUpLCAxLCBXZWJDb3JlOjpGbG9h
dFBvaW50KCkpOworfQorCisKK3ZvaWQgV0tWaWV3SW1wbDo6c2V0VXJsKGNvbnN0IFFVcmwmIHVy
bCkKK3sKKyAgICBtX3VybCA9IHVybDsKKyAgICBtX3dlYlBhZ2VQcm94eS0+bG9hZFVSTCh1cmwu
dG9TdHJpbmcoKSk7Cit9CisKK3ZvaWQgV0tWaWV3SW1wbDo6cGFpbnQoY29uc3QgUU1hdHJpeDR4
NCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBwYWludEZsYWdzKQoreworICAg
IERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHktPmRyYXdpbmdB
cmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTGF5
ZXJUcmVlSG9zdFByb3h5KiBsYXllclRyZWVIb3N0UHJveHkgPSBkcmF3aW5nQXJlYS0+bGF5ZXJU
cmVlSG9zdFByb3h5KCk7CisgICAgaWYgKCFsYXllclRyZWVIb3N0UHJveHkpCisgICAgICAgIHJl
dHVybjsKKworICAgIFdlYkxheWVyVHJlZVJlbmRlcmVyKiByZW5kZXJlciA9IGxheWVyVHJlZUhv
c3RQcm94eS0+bGF5ZXJUcmVlUmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICByZW5kZXJlci0+c2V0QWN0aXZlKHRydWUpOworICAgIHJlbmRlcmVy
LT5zZXRWaXNpYmxlQ29udGVudHNSZWN0KFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9p
bnQoKSwgbV9zaXplKSwgMSwgV2ViQ29yZTo6RmxvYXRQb2ludCgpKTsKKyAgICByZW5kZXJlci0+
c3luY1JlbW90ZUNvbnRlbnQoKTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KDAsIDAs
IG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOworCisgICAgcmVuZGVyZXItPnBhaW50
VG9DdXJyZW50R0xDb250ZXh0KHRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCwgcGFpbnRGbGFncyk7
Cit9CisKK3ZvaWQgV0tWaWV3SW1wbDo6a2V5RXZlbnQoUUtleUV2ZW50KiBldmVudCkKK3sKKyAg
ICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2
ZW50KGV2ZW50KSk7Cit9CisKK3ZvaWQgV0tWaWV3SW1wbDo6bW91c2VFdmVudChRTW91c2VFdmVu
dCogZXZlbnQsIGludCBjbGlja0NvdW50KQoreworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVN
b3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZXZlbnQsIFFUcmFuc2Zvcm0oKSwgY2xpY2tD
b3VudCkpOworfQorCit2b2lkIFdLVmlld0ltcGw6OndoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2
ZW50KQoreworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldo
ZWVsRXZlbnQoZXZlbnQsIFFUcmFuc2Zvcm0oKSkpOworfQorCit2b2lkIFdLVmlld0ltcGw6OnRv
dWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQoreworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5k
bGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQoZXZlbnQsIFFUcmFuc2Zvcm0oKSkpOwor
fQorCit2b2lkIFdLVmlld0ltcGw6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAgIG1fY2xpZW50
LT5kb25lV2l0aEtleUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIHdhc0V2ZW50SGFuZGxlZCk7
Cit9CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQordm9pZCBXS1ZpZXdJbXBsOjpkb25lV2l0
aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZl
bnRIYW5kbGVkKQoreworICAgIG1fY2xpZW50LT5kb25lV2l0aFRvdWNoRXZlbnQoZXZlbnQubmF0
aXZlRXZlbnQoKSwgd2FzRXZlbnRIYW5kbGVkKTsKK30KKyNlbmRpZgorCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlld0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjEyM2UwNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlld0ltcGwuaApAQCAtMCwwICsxLDE2OCBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2lmbmRlZiBXS1ZpZXdJbXBsX2gKKyNkZWZpbmUgV0tWaWV3SW1wbF9o
CisKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiV0tWaWV3LmgiCisjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5Lmgi
CisKKyNpbmNsdWRlIDxRVXJsPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV0tWaWV3
SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50ICwgcHVibGljIFdLVmlldyB7CitwdWJsaWM6CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEZp
bmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNhdG9yPiwgYm9vbCBmYWRlT3V0LCBib29s
IGFuaW1hdGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1l
KGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRG
aW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkRmlsZW5hbWUsIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmKSB7IH0KKyAgICB2
aXJ0dWFsIGRvdWJsZSBjdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IoKSB7IHJldHVybiAx
OyB9CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcihk
b3VibGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZy
YW1lKCkgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lkIGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJl
c2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIFdlYktpdDo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1h
eE1hdGNoQ291bnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1
c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIFdlYktpdDo6RmluZE9wdGlvbnMsIHVu
c2lnbmVkIG1heE1hdGNoQ291bnQpIHsgfQorCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRv
clF0T2JqZWN0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAq
LyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBX
ZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpIHsgLyogRklYTUU6IEltcGxlbWVudC4g
Ki8gfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94
eSogZG93bmxvYWQpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorCisKKworICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVBdXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBTdHJpbmcm
IGhvc3RuYW1lLCBjb25zdCBTdHJpbmcmIHJlYWxtLCBjb25zdCBTdHJpbmcmIHByZWZpbGxlZFVz
ZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3b3JkKSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQ2VydGlmaWNhdGVWZXJpZmlj
YXRpb25SZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGJvb2wmIGlnbm9yZUVycm9ycykg
eyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3h5
QXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWlu
dDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcmVmaWxsZWRVc2VybmFtZSwgU3RyaW5nJiB1c2Vy
bmFtZSwgU3RyaW5nJiBwYXNzd29yZCkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisKKwor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENv
bW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgeyAvKiBGSVhNRTogSW1wbGVt
ZW50LiAqLyB9CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgeyB9Cisg
ICAgdmlydHVhbCBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRv
T3JSZWRvKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9P
clJlZG8pIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorCisKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIHJlY3QpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gcmV0dXJuIHJlY3Q7IH0KKyAgICB2
aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiByZWN0KSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIHJldHVybiByZWN0
OyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Ub1dpbmRvdyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gcmV0dXJu
IHBvaW50OyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdpbmRvd1RvU2NyZWVuKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gcmV0
dXJuIHJlY3Q7IH0KKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICB2aXJ0
dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVD
b250ZXh0JikgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVhbCB2b2lkIGV4
aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8g
fQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25z
dCBMYXllclRyZWVDb250ZXh0JikgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisjZW5kaWYg
Ly8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlVGV4dElucHV0U3RhdGUoKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKyNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoR2VzdHVyZUV2ZW50
KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSB7IC8q
IEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5
VmlldygpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorICAgIHZpcnR1YWwgdm9pZCBzY3Jv
bGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHNjcm9sbE9mZnNldCkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisKKwor
ICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkludFJlY3Q+JikgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRhcmdl
dCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYXJlYSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAq
LyB9CisKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMo
Ym9vbCBoaWRkZW5VbnRpbE1vdXNlTW92ZXMpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQor
ICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIG5ld1Rvb2x0aXApIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorCisKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwgUGFz
c1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSkgeyAvKiBGSVhNRTogSW1wbGVtZW50
LiAqLyB9CisKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gY3Jl
YXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkpIHsgLyogRklYTUU6
IEltcGxlbWVudC4gKi8gcmV0dXJuIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+KCk7IH0K
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4
dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSkgeyAvKiBGSVhNRTogSW1wbGVt
ZW50LiAqLyByZXR1cm4gUGFzc1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PigpOyB9CisKKyAg
ICBXS1ZpZXdJbXBsKFdlYkNvbnRleHQqLCBXZWJQYWdlR3JvdXAqLCBXS1ZpZXdDbGllbnQqKTsK
KyAgICB+V0tWaWV3SW1wbCgpOworCisgICAgLy8gUGFnZUNsaWVudAorCisgICAgdmlydHVhbCBQ
YXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQ
b2ludCYgcG9zKSB7IG1fY2xpZW50LT52aWV3UmVxdWVzdGVkU2Nyb2xsKHBvcyk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCkgeyBtX2NsaWVudC0+dmlld1Byb2Nlc3NDcmFz
aGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCkgeyBtX2NsaWVu
dC0+dmlld1Byb2Nlc3NSZWxhdW5jaGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Vmlld05l
ZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSB7IG1fY2xpZW50LT52aWV3
TmVlZHNEaXNwbGF5KHJlY3QpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUNvbnRlbnRz
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKSB7IG1fY2xpZW50LT52aWV3Q29u
dGVudFNpemVDaGFuZ2VkKG5ld1NpemUpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihj
b25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNvcik7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3
Rm9jdXNlZCgpIHsgcmV0dXJuIG1fZm9jdXNlZDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdW
aXNpYmxlKCkgeyByZXR1cm4gbV92aXNpYmxlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmlld1dp
bmRvd0FjdGl2ZSgpIHsgcmV0dXJuIG1fYWN0aXZlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmll
d0luV2luZG93KCkgeyByZXR1cm4gdHJ1ZTsgfSAvLyBGSVhNRQorICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsgfQorCisgICAgdmlydHVhbCB2
b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wg
d2FzRXZlbnRIYW5kbGVkKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwg
dm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQs
IGJvb2wgd2FzRXZlbnRIYW5kbGVkKTsKKyNlbmRpZgorCisgICAgLy8gV0tWaWV3CisKKyAgICB2
aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpOworCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQo
Ym9vbCk7CisgICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9j
dXNlZDsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CisgICAgdmlydHVh
bCBib29sIGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQorCisgICAgdmly
dHVhbCB2b2lkIHNldEFjdGl2ZShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29u
c3QgUVNpemUmKTsKKyAgICB2aXJ0dWFsIFFTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Np
emU7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRVcmwoY29uc3QgUVVybCYpOworICAgIHZpcnR1
YWwgUVVybCB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorCisgICAgdmlydHVhbCB2b2lk
IHBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgdW5zaWdu
ZWQgUGFpbnRGbGFncyk7CisKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZigpIHsgcmV0dXJuIHRvQVBJ
KG1fd2ViUGFnZVByb3h5LmdldCgpKTsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lk
IGtleUV2ZW50KFFLZXlFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZUV2ZW50KFFNb3Vz
ZUV2ZW50KiwgaW50IGNsaWNrQ291bnQgPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVu
dChRV2hlZWxFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50
Kik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2ZvY3VzZWQ7CisgICAgYm9vbCBtX3Zpc2libGU7
CisgICAgYm9vbCBtX2FjdGl2ZTsKKyAgICBRU2l6ZSBtX3NpemU7CisgICAgUVVybCBtX3VybDsK
KworICAgIFdLVmlld0NsaWVudCogbV9jbGllbnQ7CisgICAgV1RGOjpSZWZQdHI8V2ViS2l0OjpX
ZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5OworCisKK307CisKK30KKworI2VuZGlmIC8vIFdL
Vmlld0ltcGxfaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDMyYjEwOTYuLmZjMmZjNGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMi0wNi0wNSAgTHVpeiBBZ29z
dGluaSAgPGx1aXouYWdvc3RpbmlAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBQcml2
YXRlIG5vbi1RdFF1aWNrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODQ1MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1pbmlCcm93c2VyL3F0Y2IvRGVyaXZlZFNvdXJjZXMucHJpOiBBZGRlZC4K
KyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdGNiL01pbmlCcm93c2VyX2NiLnBybzogQWRkZWQuCisg
ICAgICAgICogTWluaUJyb3dzZXIvcXRjYi9UYXJnZXQucHJpOiBBZGRlZC4KKyAgICAgICAgKiBN
aW5pQnJvd3Nlci9xdGNiL1ZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKGNyZWF0ZVdlYkNvbnRl
eHQpOgorICAgICAgICAoY3JlYXRlV2ViUGFnZUdyb3VwKToKKyAgICAgICAgKFZpZXc6On5WaWV3
KToKKyAgICAgICAgKFZpZXc6OlZpZXcpOgorICAgICAgICAoVmlldzo6ZXhwb3NlRXZlbnQpOgor
ICAgICAgICAoVmlldzo6cmVzaXplRXZlbnQpOgorICAgICAgICAoVmlldzo6dGltZXJFdmVudCk6
CisgICAgICAgIChWaWV3Ojp2aWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFZpZXc6OnZpZXdS
ZXF1ZXN0ZWRTY3JvbGwpOgorICAgICAgICAoVmlldzo6dmlld1Byb2Nlc3NDcmFzaGVkKToKKyAg
ICAgICAgKFZpZXc6OnZpZXdQcm9jZXNzUmVsYXVuY2hlZCk6CisgICAgICAgIChWaWV3Ojp2aWV3
Q29udGVudFNpemVDaGFuZ2VkKToKKyAgICAgICAgKFZpZXc6OnZpZXdSZXF1ZXN0ZWRDdXJzb3JP
dmVycmlkZSk6CisgICAgICAgIChWaWV3Ojpkb25lV2l0aEtleUV2ZW50KToKKyAgICAgICAgKFZp
ZXc6OmRvbmVXaXRoVG91Y2hFdmVudCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9xdGNiL1ZpZXcuaDogQWRkZWQuCisgICAgICAgIChWaWV3KToKKyAgICAgICAgKFZp
ZXc6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoVmlldzo6a2V5UmVsZWFzZUV2ZW50KToKKyAg
ICAgICAgKFZpZXc6Om1vdXNlRG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChWaWV3Ojptb3Vz
ZU1vdmVFdmVudCk6CisgICAgICAgIChWaWV3Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAo
Vmlldzo6bW91c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAqIFRvb2xzLnBybzoKKwogMjAxMi0w
NS0wMSAgVGVycnkgQW5kZXJzb24gIDx0ZGFuZGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIEFjY2VwdCBmb3VyIHBhcmFtZXRlcnMgd2hlbiBkaXNwYXRjaGluZyBhIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVUYXAgaW4gY2hyb21pdW0gRFJUIGV2ZW50U2VuZGVyCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaSBiL1Rvb2xz
L01pbmlCcm93c2VyL3F0Y2IvRGVyaXZlZFNvdXJjZXMucHJpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmRjNGQyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaQpAQCAtMCwwICsxLDYgQEAKK1RFTVBMQVRFID0g
ZGVyaXZlZAorCisjIE1ha2Ugc3VyZSBmb3J3YXJkZWQgaGVhZGVycyBuZWVkZWQgYnkgdGhpcyBw
cm9qZWN0IGFyZSBwcmVzZW50Citmd2hlYWRlcl9nZW5lcmF0b3IuY29tbWFuZHMgPSBwZXJsICQk
e1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dlYktpdDIvU2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJk
aW5nLWhlYWRlcnMucGwgJCR7Uk9PVF9XRUJLSVRfRElSfS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
ICQke1JPT1RfQlVJTERfRElSfS9Tb3VyY2UvaW5jbHVkZSBxdAorZndoZWFkZXJfZ2VuZXJhdG9y
LmRlcGVuZHMgID0gJCR7Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL2dl
bmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5wbAorR0VORVJBVE9SUyArPSBmd2hlYWRlcl9nZW5l
cmF0b3IKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2Iu
cHJvIGIvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9jYi5wcm8KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwMzEwNAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2IucHJvCkBAIC0wLDAgKzEsOSBAQAor
VEVNUExBVEUgPSBzdWJkaXJzCitDT05GSUcgKz0gb3JkZXJlZAorCitkZXJpdmVkX3NvdXJjZXMu
ZmlsZSA9IERlcml2ZWRTb3VyY2VzLnByaQordGFyZ2V0LmZpbGUgPSBUYXJnZXQucHJpCisKK1NV
QkRJUlMgPSBkZXJpdmVkX3NvdXJjZXMgdGFyZ2V0CisKK2FkZFN0cmljdFN1YmRpck9yZGVyQmV0
d2VlbihkZXJpdmVkX3NvdXJjZXMsIHRhcmdldCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93
c2VyL3F0Y2IvVGFyZ2V0LnByaSBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvVGFyZ2V0LnByaQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDc3MzgwCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9UYXJnZXQucHJpCkBAIC0wLDAgKzEsMTYgQEAK
K1RFTVBMQVRFID0gYXBwCitUQVJHRVQgPSBNaW5pQnJvd3Nlcl9jYgorCitIRUFERVJTICs9IFwK
KyAgICBWaWV3LmgKKworU09VUkNFUyArPSBcCisgICAgVmlldy5jcHAKKworREVTVERJUiA9ICQk
e1JPT1RfQlVJTERfRElSfS9iaW4KKworUVQgPSBjb3JlIGd1aSBuZXR3b3JrIHdlYmtpdAorCits
b2FkKGZlYXR1cmVzKQorCitXRUJLSVQgKz0gd3RmIGphdmFzY3JpcHRjb3JlIHdlYmtpdDIKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvVmlldy5jcHAgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdGNiL1ZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcx
ZTBlNTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1ZpZXcuY3Bw
CkBAIC0wLDAgKzEsMTYxIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jw
b3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVmlldy5oIgorCisjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2lu
Y2x1ZGUgPFFEZWJ1Zz4KKworI2luY2x1ZGUgPFFFeHBvc2VFdmVudD4KKyNpbmNsdWRlIDxRUmVz
aXplRXZlbnQ+CisjaW5jbHVkZSA8UUtleUV2ZW50PgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Nv
bnRleHQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1ByZWZlcmVuY2VzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmdRdC5oPgorCisjaW5jbHVkZSA8UVVy
bD4KKyNpbmNsdWRlIDxRTWF0cml4NHg0PgorCitzdGF0aWMgV0tDb250ZXh0UmVmIGNyZWF0ZVdl
YkNvbnRleHQoKQoreworICAgIHJldHVybiBXS0NvbnRleHRDcmVhdGUoKTsKK30KKworc3RhdGlj
IFdLUGFnZUdyb3VwUmVmIGNyZWF0ZVdlYlBhZ2VHcm91cChjb25zdCBRU3RyaW5nJiBuYW1lKQor
eworICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cCA9V0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRl
bnRpZmllcihXS1N0cmluZ0NyZWF0ZVdpdGhRU3RyaW5nKG5hbWUpKTsKKyAgICBXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzID0gV0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhwYWdlR3JvdXAp
OworICAgIFdLUHJlZmVyZW5jZXNTZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChwcmVm
ZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEZvcmNlQ29tcG9zaXRpbmdNb2Rl
KHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5n
RW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisKKyAgICByZXR1cm4gcGFnZUdyb3VwOworfQor
CitWaWV3Ojp+VmlldygpCit7CisgICAgZGVsZXRlIG1fY29udGV4dDsKK30KKworVmlldzo6Vmll
dyhjb25zdCBjaGFyKiB1cmwpCisgICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2FjdGl2ZShmYWxz
ZSkKK3sKKyAgICBzZXRTdXJmYWNlVHlwZShPcGVuR0xTdXJmYWNlKTsKKyAgICBzZXRHZW9tZXRy
eSgxMDAsIDEwMCwgOTgwLCA2OTcpOworICAgIGNyZWF0ZSgpOworCisgICAgbV9jb250ZXh0ID0g
bmV3IFFPcGVuR0xDb250ZXh0OworICAgIG1fY29udGV4dC0+Y3JlYXRlKCk7CisKKyAgICBtX3dl
YlZpZXcgPSBXZWJLaXQ6OldLVmlldzo6Y3JlYXRlKGNyZWF0ZVdlYkNvbnRleHQoKSwgY3JlYXRl
V2ViUGFnZUdyb3VwKFFTdHJpbmcoKSksIHRoaXMpOworICAgIG1fd2ViVmlldy0+aW5pdGlhbGl6
ZSgpOworICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0KG1fd2ViVmlldy0+cGFnZVJlZigpLCB0
cnVlKTsKK30KKworCit2b2lkIFZpZXc6OmV4cG9zZUV2ZW50KFFFeHBvc2VFdmVudCogZXZlbnQp
Cit7CisgICAgaWYgKCFtX2FjdGl2ZSkgeworICAgICAgICBtX2FjdGl2ZSA9IHRydWU7CisgICAg
ICAgIG1fd2ViVmlldy0+c2V0VXJsKFFVcmwobV91cmwpKTsKKworICAgICAgICBtX3dlYlZpZXct
PnNldEZvY3VzZWQodHJ1ZSk7CisgICAgICAgIG1fd2ViVmlldy0+c2V0VmlzaWJsZSh0cnVlKTsK
KyAgICAgICAgbV93ZWJWaWV3LT5zZXRBY3RpdmUodHJ1ZSk7CisgICAgfQorfQorCit2b2lkIFZp
ZXc6OnJlc2l6ZUV2ZW50KFFSZXNpemVFdmVudCogZXZlbnQpCit7CisgICAgbV93ZWJWaWV3LT5z
ZXRTaXplKGV2ZW50LT5zaXplKCkpOworfQorCit2b2lkIFZpZXc6OnRpbWVyRXZlbnQoUVRpbWVy
RXZlbnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+dGltZXJJZCgpID09IG1fcGFpbnRUaW1l
ci50aW1lcklkKCkpIHsKKyAgICAgICAgbV9wYWludFRpbWVyLnN0b3AoKTsKKyAgICAgICAgbV9j
b250ZXh0LT5tYWtlQ3VycmVudCh0aGlzKTsKKyAgICAgICAgbV93ZWJWaWV3LT5wYWludChRTWF0
cml4NHg0KCksIDEsIDApOworICAgICAgICBtX2NvbnRleHQtPnN3YXBCdWZmZXJzKHRoaXMpOwor
ICAgIH0KK30KKwordm9pZCBWaWV3Ojp2aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JikKK3sK
KyAgICBpZiAoIW1fcGFpbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BhaW50VGltZXIu
c3RhcnQoMCwgdGhpcyk7Cit9CisKK3ZvaWQgVmlldzo6dmlld1JlcXVlc3RlZFNjcm9sbChjb25z
dCBRUG9pbnQmKQoreworICAgIHFEZWJ1ZygpIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgX19M
SU5FX187Cit9CisKK3ZvaWQgVmlldzo6dmlld1Byb2Nlc3NDcmFzaGVkKCkKK3sKKyAgICBxRGVi
dWcoKSA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8IF9fTElORV9fOworfQorCit2b2lkIFZpZXc6
OnZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpCit7CisgICAgcURlYnVnKCkgPDwgX19QUkVUVFlfRlVO
Q1RJT05fXyA8PCBfX0xJTkVfXzsKK30KKwordm9pZCBWaWV3Ojp2aWV3Q29udGVudFNpemVDaGFu
Z2VkKGNvbnN0IFFTaXplJikKK3sKK30KKwordm9pZCBWaWV3Ojp2aWV3UmVxdWVzdGVkQ3Vyc29y
T3ZlcnJpZGUoY29uc3QgUUN1cnNvciYgY3Vyc29yKQoreworICAgIFFHdWlBcHBsaWNhdGlvbjo6
c2V0T3ZlcnJpZGVDdXJzb3IoY3Vyc29yKTsKK30KKwordm9pZCBWaWV3Ojpkb25lV2l0aEtleUV2
ZW50KGNvbnN0IFFLZXlFdmVudCogZXZlbnQsIGJvb2wgd2FzSGFuZGxlZCkKK3sKKyAgICBpZiAo
d2FzSGFuZGxlZCB8fCBldmVudC0+aXNBY2NlcHRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBzd2l0Y2ggKGV2ZW50LT5rZXkoKSkgeworICAgIGNhc2UgUXQ6OktleV9CYWNrc3BhY2U6IHsK
KyAgICAgICAgV0tQYWdlUmVmIHBhZ2UgPSBtX3dlYlZpZXctPnBhZ2VSZWYoKTsKKyAgICAgICAg
aWYgKFdLUGFnZUNhbkdvQmFjayhwYWdlKSkKKyAgICAgICAgICAgIFdLUGFnZUdvQmFjayhwYWdl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KK30KKwordm9pZCBWaWV3Ojpkb25lV2l0
aFRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBib29sIHdhc0hhbmRsZWQpCit7CisgICAg
cURlYnVnKCkgPDwgX19QUkVUVFlfRlVOQ1RJT05fXyA8PCBfX0xJTkVfXzsKK30KKworaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIFFHdWlBcHBsaWNhdGlvbiBhKGFyZ2Ms
IGFyZ3YpOworCisgICAgVmlldyB2aWV3KGFyZ2MgPiAxID8gYXJndlsxXSA6ICJodHRwOi8vd3d3
Lmdvb2dsZS5jb20iKTsKKyAgICB2aWV3LnNob3coKTsKKyAgICByZXR1cm4gYS5leGVjKCk7Cit9
CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1ZpZXcuaCBiL1Rvb2xzL01pbmlC
cm93c2VyL3F0Y2IvVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcz
ZjU5Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1ZpZXcuaApA
QCAtMCwwICsxLDY5IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAg
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKwor
ICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
ICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFZpZXdfaAorI2Rl
ZmluZSBWaWV3X2gKKworI2luY2x1ZGUgPFFCYXNpY1RpbWVyPgorI2luY2x1ZGUgPFFPcGVuR0xD
b250ZXh0PgorI2luY2x1ZGUgPFFXaW5kb3c+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ZpZXcuaD4K
KworCitjbGFzcyBWaWV3IDogIHB1YmxpYyBRV2luZG93LCBwcml2YXRlIFdlYktpdDo6V0tWaWV3
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBWaWV3KGNvbnN0IGNoYXIqIHVybCk7CisgICAgflZpZXco
KTsKKworcHVibGljOiAvLyBXS1ZpZXdDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgdmlld05lZWRz
RGlzcGxheShjb25zdCBRUmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkU2Ny
b2xsKGNvbnN0IFFQb2ludCYpOworICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc0NyYXNoZWQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NSZWxhdW5jaGVkKCk7CisgICAgdmlydHVh
bCB2b2lkIHZpZXdDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNvbnN0IFFDdXJzb3ImKTsKKworCisg
ICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgUUtleUV2ZW50KiwgYm9vbCB3
YXNIYW5kbGVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IFFU
b3VjaEV2ZW50KiwgYm9vbCB3YXNIYW5kbGVkKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwg
dm9pZCBleHBvc2VFdmVudChRRXhwb3NlRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzaXpl
RXZlbnQoUVJlc2l6ZUV2ZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQga2V5UHJlc3NFdmVudChR
S2V5RXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+a2V5RXZlbnQoZXZlbnQpOyB9CisgICAgdmly
dHVhbCB2b2lkIGtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+
a2V5RXZlbnQoZXZlbnQpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3VibGVDbGlja0V2
ZW50KFFNb3VzZUV2ZW50KiBldmVudCkgeyBtX3dlYlZpZXctPm1vdXNlRXZlbnQoZXZlbnQsIDIp
OyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlTW92ZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkg
eyBtX3dlYlZpZXctPm1vdXNlRXZlbnQoZXZlbnQpOyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNl
UHJlc3NFdmVudChRTW91c2VFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5tb3VzZUV2ZW50KGV2
ZW50LCAxKTsgfQorICAgIHZpcnR1YWwgdm9pZCBtb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVu
dCogZXZlbnQpIHsgbV93ZWJWaWV3LT5tb3VzZUV2ZW50KGV2ZW50KTsgfQorCitwcml2YXRlOgor
ICAgIFdlYktpdDo6V0tWaWV3KiBtX3dlYlZpZXc7CisgICAgUU9wZW5HTENvbnRleHQgKm1fY29u
dGV4dDsKKyAgICBRQmFzaWNUaW1lciBtX3BhaW50VGltZXI7CisKKyAgICBjb25zdCBjaGFyKiBt
X3VybDsKKyAgICBib29sIG1fYWN0aXZlOworCisgICAgdmlydHVhbCB2b2lkIHRpbWVyRXZlbnQo
UVRpbWVyRXZlbnQqKTsKK307CisKKyNlbmRpZiAvLyBWaWV3X2gKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rvb2xzLnBybyBiL1Rvb2xzL1Rvb2xzLnBybwppbmRleCBmYjJiMTlhLi4xNzViNTJkIDEwMDY0
NAotLS0gYS9Ub29scy9Ub29scy5wcm8KKysrIGIvVG9vbHMvVG9vbHMucHJvCkBAIC0xNiw2ICsx
NiwxMiBAQCBTVUJESVJTICs9IER1bXBSZW5kZXJUcmVlL3F0L0ltYWdlRGlmZi5wcm8KICFub193
ZWJraXQyIHsKICAgICBTVUJESVJTICs9IE1pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybyBc
CiAgICAgICAgICAgICAgICBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIucHJvCisK
KworY29udGFpbnMoQ09ORklHLCBxdGNiKSB7CisgICAgU1VCRElSUyArPSBNaW5pQnJvd3Nlci9x
dGNiL01pbmlCcm93c2VyX2NiLnBybworfQorCiB9CiAKICF3aW4zMjpjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfTkVUU0NBUEVfUExVR0lOX0FQST0xKSB7Ci0tIAoxLjcuOS41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145713</attachid>
            <date>2012-06-05 00:45:32 -0700</date>
            <delta_ts>2012-06-06 00:47:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-WK2-Private-non-QtQuick-API.patch</filename>
            <type>text/plain</type>
            <size>39336</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBjNmU5MTJlMTQ2ZDRmYWJlZDQ2OGQxMDU3MjBmYjFkMTFjZWUzOTUwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogVHVlLCA1IEp1biAyMDEyIDAwOjI0OjQzIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzIKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKU291
cmNlL1dlYktpdDI6CgoqIFRhcmdldC5wcmk6CiogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5j
ZXMuY3BwOgooV0tQcmVmZXJlbmNlc1NldEZvcmNlQ29tcG9zaXRpbmdNb2RlKToKKFdLUHJlZmVy
ZW5jZXNHZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSk6CiogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXNQcml2YXRlLmg6CiogVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaDogQWRkZWQuCihXZWJL
aXQpOgooV0tWaWV3Q2xpZW50KToKKiBVSVByb2Nlc3MvQVBJL3F0L1dLVmlld0ltcGwuY3BwOiBB
ZGRlZC4KKFdlYktpdCk6CihXZWJLaXQ6OldLVmlldzo6Y3JlYXRlKToKKFdlYktpdDo6V0tWaWV3
SW1wbDo6V0tWaWV3SW1wbCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmluaXRpYWxpemUpOgooV2Vi
S2l0OjpXS1ZpZXdJbXBsOjp+V0tWaWV3SW1wbCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEN1
cnNvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkpOgooV2Vi
S2l0OjpXS1ZpZXdJbXBsOjpzZXRGb2N1c2VkKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Vmlz
aWJsZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEFjdGl2ZSk6CihXZWJLaXQ6OldLVmlld0lt
cGw6OnNldFNpemUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRVcmwpOgooV2ViS2l0OjpXS1Zp
ZXdJbXBsOjpwYWludCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmtleUV2ZW50KToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6bW91c2VFdmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OndoZWVsRXZlbnQp
OgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp0b3VjaEV2ZW50KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
ZG9uZVdpdGhLZXlFdmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRvbmVXaXRoVG91Y2hFdmVu
dCk6CiogVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXdJbXBsLmg6IEFkZGVkLgooV2ViS2l0KToKKFdL
Vmlld0ltcGwpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpwYWdlQ2xvc2VkKToKKFdlYktpdDo6V0tW
aWV3SW1wbDo6c2V0RmluZEluZGljYXRvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENvbW1p
dExvYWRGb3JNYWluRnJhbWUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y3VzdG9t
UmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Q3VzdG9t
UmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdl
U2Nyb2xsYmFyc0Zvck1haW5GcmFtZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmZpbmRTdHJpbmdJ
bkN1c3RvbVJlcHJlc2VudGF0aW9uKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y291bnRTdHJpbmdN
YXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZFJl
Y2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxl
RG93bmxvYWRSZXF1ZXN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlQXV0aGVudGljYXRp
b25SZXF1aXJlZFJlcXVlc3QpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpoYW5kbGVDZXJ0aWZpY2F0
ZVZlcmlmaWNhdGlvblJlcXVlc3QpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpoYW5kbGVQcm94eUF1
dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6cmVnaXN0
ZXJFZGl0Q29tbWFuZCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNsZWFyQWxsRWRpdENvbW1hbmRz
KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y2FuVW5kb1JlZG8pOgooV2ViS2l0OjpXS1ZpZXdJbXBs
OjpleGVjdXRlVW5kb1JlZG8pOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpjb252ZXJ0VG9EZXZpY2VT
cGFjZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNvbnZlcnRUb1VzZXJTcGFjZSk6CihXZWJLaXQ6
OldLVmlld0ltcGw6OnNjcmVlblRvV2luZG93KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6d2luZG93
VG9TY3JlZW4pOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSk6CihXZWJLaXQ6
OldLVmlld0ltcGw6OmRvbmVXaXRoR2VzdHVyZUV2ZW50KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
ZGlzcGxheVZpZXcpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzY3JvbGxWaWV3KToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKToKKFdlYktpdDo6V0tWaWV3SW1w
bDo6ZGlkRmluZFpvb21hYmxlQXJlYSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEN1cnNvckhp
ZGRlblVudGlsTW91c2VNb3Zlcyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnRvb2xUaXBDaGFuZ2Vk
KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c3RhcnREcmFnKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
Y3JlYXRlUG9wdXBNZW51UHJveHkpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpjcmVhdGVDb250ZXh0
TWVudVByb3h5KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgoo
V2ViS2l0OjpXS1ZpZXdJbXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgooV2ViS2l0OjpXS1ZpZXdJbXBs
OjpkaWRSZWxhdW5jaFByb2Nlc3MpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRWaWV3TmVlZHNE
aXNwbGF5KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKFdl
YktpdDo6V0tWaWV3SW1wbDo6aXNWaWV3Rm9jdXNlZCk6CihXZWJLaXQ6OldLVmlld0ltcGw6Omlz
Vmlld1Zpc2libGUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUpOgoo
V2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdJbldpbmRvdyk6CihXZWJLaXQ6OldLVmlld0ltcGw6
OnZpZXdTaXplKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aXNGb2N1c2VkKToKKFdlYktpdDo6V0tW
aWV3SW1wbDo6aXNWaXNpYmxlKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aXNBY3RpdmUpOgooV2Vi
S2l0OjpXS1ZpZXdJbXBsOjpzaXplKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6dXJsKToKKFdlYktp
dDo6V0tWaWV3SW1wbDo6cGFnZVJlZik6CgpUb29sczoKCiogTWluaUJyb3dzZXIvcXRjYi9EZXJp
dmVkU291cmNlcy5wcmk6IEFkZGVkLgoqIE1pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2Iu
cHJvOiBBZGRlZC4KKiBNaW5pQnJvd3Nlci9xdGNiL1RhcmdldC5wcmk6IEFkZGVkLgoqIE1pbmlC
cm93c2VyL3F0Y2IvVmlldy5jcHA6IEFkZGVkLgooY3JlYXRlV2ViQ29udGV4dCk6CihjcmVhdGVX
ZWJQYWdlR3JvdXApOgooVmlldzo6flZpZXcpOgooVmlldzo6Vmlldyk6CihWaWV3OjpleHBvc2VF
dmVudCk6CihWaWV3OjpyZXNpemVFdmVudCk6CihWaWV3Ojp0aW1lckV2ZW50KToKKFZpZXc6OnZp
ZXdOZWVkc0Rpc3BsYXkpOgooVmlldzo6dmlld1JlcXVlc3RlZFNjcm9sbCk6CihWaWV3Ojp2aWV3
UHJvY2Vzc0NyYXNoZWQpOgooVmlldzo6dmlld1Byb2Nlc3NSZWxhdW5jaGVkKToKKFZpZXc6OnZp
ZXdDb250ZW50U2l6ZUNoYW5nZWQpOgooVmlldzo6dmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRl
KToKKFZpZXc6OmRvbmVXaXRoS2V5RXZlbnQpOgooVmlldzo6ZG9uZVdpdGhUb3VjaEV2ZW50KToK
KG1haW4pOgoqIE1pbmlCcm93c2VyL3F0Y2IvVmlldy5oOiBBZGRlZC4KKFZpZXcpOgooVmlldzo6
a2V5UHJlc3NFdmVudCk6CihWaWV3OjprZXlSZWxlYXNlRXZlbnQpOgooVmlldzo6bW91c2VEb3Vi
bGVDbGlja0V2ZW50KToKKFZpZXc6Om1vdXNlTW92ZUV2ZW50KToKKFZpZXc6Om1vdXNlUHJlc3NF
dmVudCk6CihWaWV3Ojptb3VzZVJlbGVhc2VFdmVudCk6CiogVG9vbHMucHJvOgotLS0KIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5MiArKysr
KysrKysrCiBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICAgIDggKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
Y3BwICAgfCAgIDEwICsrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaCB8ICAgIDQgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1Zp
ZXcuaCAgICAgICAgICAgfCAgIDkxICsrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvV0tWaWV3SW1wbC5jcHAgICAgIHwgIDE3NSArKysrKysrKysrKysrKysrKysrKwog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXdJbXBsLmggICAgICAgfCAgMTY4
ICsrKysrKysrKysrKysrKysrKysKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAzNyArKysrKwogVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9EZXJp
dmVkU291cmNlcy5wcmkgICAgICAgICAgfCAgICA2ICsKIFRvb2xzL01pbmlCcm93c2VyL3F0Y2Iv
TWluaUJyb3dzZXJfY2IucHJvICAgICAgICAgIHwgICAgOSArCiBUb29scy9NaW5pQnJvd3Nlci9x
dGNiL1RhcmdldC5wcmkgICAgICAgICAgICAgICAgICB8ICAgMTYgKysKIFRvb2xzL01pbmlCcm93
c2VyL3F0Y2IvVmlldy5jcHAgICAgICAgICAgICAgICAgICAgIHwgIDE2MSArKysrKysrKysrKysr
KysrKysKIFRvb2xzL01pbmlCcm93c2VyL3F0Y2IvVmlldy5oICAgICAgICAgICAgICAgICAgICAg
IHwgICA2OSArKysrKysrKwogVG9vbHMvVG9vbHMucHJvICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgICA2ICsKIDE0IGZpbGVzIGNoYW5nZWQsIDg1MiBpbnNlcnRpb25zKCsp
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1Zp
ZXcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
V0tWaWV3SW1wbC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L1dLVmlld0ltcGwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93
c2VyL3F0Y2IvRGVyaXZlZFNvdXJjZXMucHJpCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWlu
aUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9jYi5wcm8KIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29s
cy9NaW5pQnJvd3Nlci9xdGNiL1RhcmdldC5wcmkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9N
aW5pQnJvd3Nlci9xdGNiL1ZpZXcuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJy
b3dzZXIvcXRjYi9WaWV3LmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTQ0MzNhYy4uOTJhYjYxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTA2LTA1ICBMdWl6IEFnb3N0aW5pICA8bHVpei5h
Z29zdGluaUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVp
Y2sgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NDUzMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6
CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0Rm9yY2VDb21wb3NpdGluZ01vZGUpOgorICAgICAg
ICAoV0tQcmVmZXJlbmNlc0dldEZvcmNlQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L1dLVmlldy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXS1Zp
ZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3SW1wbC5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3OjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpXS1ZpZXdJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0lt
cGw6On5XS1ZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Q3Vyc29y
KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6
CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNldEZvY3VzZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXS1ZpZXdJbXBsOjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNldFVybCk6CisgICAgICAgIChXZWJLaXQ6OldL
Vmlld0ltcGw6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6a2V5RXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjptb3VzZUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0lt
cGw6OnRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkb25lV2l0aEtl
eUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L1dLVmlld0ltcGwuaDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV0tWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldL
Vmlld0ltcGw6OnBhZ2VDbG9zZWQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRG
aW5kSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkQ29tbWl0TG9h
ZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmRpZEZpbmlzaExv
YWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXS1Zp
ZXdJbXBsOjpjdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IpOgorICAgICAgICAoV2ViS2l0
OjpXS1ZpZXdJbXBsOjpzZXRDdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpjb3VudFN0cmluZ01hdGNoZXNJ
bkN1c3RvbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpX
S1ZpZXdJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0
OjpXS1ZpZXdJbXBsOjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpX
S1ZpZXdJbXBsOjpoYW5kbGVBdXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OldLVmlld0ltcGw6OmhhbmRsZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVz
dCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmhhbmRsZVByb3h5QXV0aGVudGljYXRp
b25SZXF1aXJlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpyZWdpc3Rl
ckVkaXRDb21tYW5kKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Y2xlYXJBbGxFZGl0
Q29tbWFuZHMpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpjYW5VbmRvUmVkbyk6Cisg
ICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmV4ZWN1dGVVbmRvUmVkbyk6CisgICAgICAgIChX
ZWJLaXQ6OldLVmlld0ltcGw6OmNvbnZlcnRUb0RldmljZVNwYWNlKToKKyAgICAgICAgKFdlYktp
dDo6V0tWaWV3SW1wbDo6Y29udmVydFRvVXNlclNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6c2NyZWVuVG9XaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjp3
aW5kb3dUb1NjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpleGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBs
Ojp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldL
Vmlld0ltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3
SW1wbDo6ZG9uZVdpdGhHZXN0dXJlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBs
OjpkaXNwbGF5Vmlldyk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNjcm9sbFZpZXcp
OgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpmbGFzaEJhY2tpbmdTdG9yZVVwZGF0ZXMp
OgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRGaW5kWm9vbWFibGVBcmVhKToKKyAg
ICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVz
KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6dG9vbFRpcENoYW5nZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpXS1Zp
ZXdJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0lt
cGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBs
OjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnBy
b2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmRpZFJlbGF1bmNo
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNldFZpZXdOZWVkc0Rpc3Bs
YXkpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUp
OgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdGb2N1c2VkKToKKyAgICAgICAg
KFdlYktpdDo6V0tWaWV3SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldL
Vmlld0ltcGw6OmlzVmlld1dpbmRvd0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0lt
cGw6OmlzVmlld0luV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6dmlld1Np
emUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjppc0ZvY3VzZWQpOgorICAgICAgICAo
V2ViS2l0OjpXS1ZpZXdJbXBsOjppc1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJ
bXBsOjppc0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNpemUpOgorICAg
ICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjp1cmwpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpwYWdlUmVmKToKKwogMjAxMi0wNS0wMSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4g
IDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBBZGQgYW4gZXhwZXJpbWVudGFs
IGV4dGVuc2lvbiB0byBzZXQgdGhlIG1pbi4gY29udGVudHMgd2lkdGgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4
IGViNGVmYTUuLjViZjYwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkK
KysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtNzg5LDYgKzc4OSwxNCBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfVE9VQ0hfRVZFTlRTPTEpIHsKICAgICAgICAgU2hhcmVkL3F0
L05hdGl2ZVdlYlRvdWNoRXZlbnRRdC5jcHAKIH0KIAorY29udGFpbnMoQ09ORklHLCBxdGNiKSB7
CisgICAgSEVBREVSUyArPSBcCisgICAgICAgIFVJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3LmggXAor
ICAgICAgICBVSVByb2Nlc3MvQVBJL3F0L1dLVmlld0ltcGwuaAorICAgIFNPVVJDRVMgKz0gXAor
ICAgICAgICBVSVByb2Nlc3MvQVBJL3F0L1dLVmlld0ltcGwuY3BwCit9CisKIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9HRU9MT0NBVElPTj0xKTogUVQgKz0gbG9jYXRpb24KIAogcGx1Z2luX2Jh
Y2tlbmRfeGxpYiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQcmVmZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHAKaW5kZXggNTIzMjMzNy4uNGU5MjJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcApAQCAtMzc4LDYgKzM3OCwxNiBA
QCBib29sIFdLUHJlZmVyZW5jZXNHZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUgogICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNS
ZWYpLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpOwogfQogCit2b2lkIFdLUHJlZmVy
ZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2Vz
UmVmLCBib29sIGZsYWcpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Rm9yY2VD
b21wb3NpdGluZ01vZGUoZmxhZyk7Cit9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dldEZvcmNlQ29t
cG9zaXRpbmdNb2RlKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0
dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmZvcmNlQ29tcG9zaXRpbmdNb2RlKCk7Cit9CisK
IHZvaWQgV0tQcmVmZXJlbmNlc1NldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoV0tQcmVmZXJl
bmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBmbGFnKQogewogICAgIHRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoZmxhZyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmlu
ZGV4IDE2ZDc0ZTYuLjc3NzRkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC03Niw2ICs3NiwxMCBAQCBXS19F
WFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZiwgYgogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYpOwogCiAvLyBEZWZhdWx0
cyB0byBmYWxzZS4KK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBvc2l0
aW5nTW9kZShXS1ByZWZlcmVuY2VzUmVmLCBib29sKTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVy
ZW5jZXNHZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShXS1ByZWZlcmVuY2VzUmVmKTsKKworLy8gRGVm
YXVsdHMgdG8gZmFsc2UuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Q29tcG9zaXRp
bmdCb3JkZXJzVmlzaWJsZShXS1ByZWZlcmVuY2VzUmVmLCBib29sKTsKIFdLX0VYUE9SVCBib29s
IFdLUHJlZmVyZW5jZXNHZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKFdLUHJlZmVyZW5jZXNS
ZWYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmll
dy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWI0MWY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXcuaApAQCAtMCwwICsxLDkxIEBACisv
KgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFdLVmlld19oCisjZGVmaW5lIFdLVmlld19oCisj
aW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdl
R3JvdXAuaD4KKworY2xhc3MgUVJlY3Q7CitjbGFzcyBRUmVjdEY7CitjbGFzcyBRUG9pbnQ7Citj
bGFzcyBRU2l6ZTsKK2NsYXNzIFFLZXlFdmVudDsKK2NsYXNzIFFNb3VzZUV2ZW50OworY2xhc3Mg
UVdoZWVsRXZlbnQ7CitjbGFzcyBRVG91Y2hFdmVudDsKK2NsYXNzIFFVcmw7CitjbGFzcyBRTWF0
cml4NHg0OworY2xhc3MgUUN1cnNvcjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdL
VmlldzsKKworY2xhc3MgV0tWaWV3Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQg
dmlld05lZWRzRGlzcGxheShjb25zdCBRUmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCB2
aWV3UmVxdWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dmlld1Byb2Nlc3NDcmFzaGVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc1Jl
bGF1bmNoZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50U2l6ZUNoYW5nZWQo
Y29uc3QgUVNpemUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRDdXJzb3JP
dmVycmlkZShjb25zdCBRQ3Vyc29yJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRo
S2V5RXZlbnQoY29uc3QgUUtleUV2ZW50KiwgYm9vbCB3YXNIYW5kbGVkKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGJvb2wgd2Fz
SGFuZGxlZCkgPSAwOworfTsKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgV0tWaWV3IHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaXplKGNvbnN0IFFTaXplJikgPSAwOworICAgIHZpcnR1YWwgUVNpemUgc2l6ZSgpIGNv
bnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRVcmwoY29uc3QgUVVybCYpID0gMDsKKyAg
ICB2aXJ0dWFsIFFVcmwgdXJsKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldEZv
Y3VzZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzVmlzaWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUo
Ym9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBwYWludChjb25zdCBRTWF0cml4NHg0JiB0cmFuc2Zvcm0sIGZsb2F0IG9w
YWNpdHksIHVuc2lnbmVkIHBhaW50RmxhZ3MpID0gMDsKKworICAgIHZpcnR1YWwgV0tQYWdlUmVm
IHBhZ2VSZWYoKSA9IDA7CisKKyAgICBzdGF0aWMgV0tWaWV3KiBjcmVhdGUoV0tDb250ZXh0UmVm
LCBXS1BhZ2VHcm91cFJlZiwgV0tWaWV3Q2xpZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQga2V5
RXZlbnQoUUtleUV2ZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZUV2ZW50KFFNb3Vz
ZUV2ZW50KiwgaW50IGNsaWNrQ291bnQgPSAwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdoZWVs
RXZlbnQoUVdoZWVsRXZlbnQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvdWNoRXZlbnQoUVRv
dWNoRXZlbnQqKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBXS1ZpZXdfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXdJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZTU0NDQ2OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvV0tWaWV3SW1wbC5jcHAKQEAgLTAsMCArMSwxNzUgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1Zp
ZXdJbXBsLmgiCisKKyNpbmNsdWRlICJDdXJzb3IuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVBy
b3h5SW1wbC5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUhvc3RQcm94eS5oIgorI2luY2x1ZGUgIk5h
dGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50Lmgi
CisjaW5jbHVkZSAiTmF0aXZlV2ViVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYldo
ZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJU
cmVlUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJXZWJQ
cmVmZXJlbmNlcy5oIgorCisjaW5jbHVkZSA8UVRyYW5zZm9ybT4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLVmlldy5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXS1ZpZXcqIFdLVmlldzo6Y3Jl
YXRlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYs
IFdLVmlld0NsaWVudCogY2xpZW50KQoreworICAgIGlmICghY29udGV4dFJlZiB8fCAhcGFnZUdy
b3VwUmVmKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3IFdLVmlld0ltcGwodG9J
bXBsKGNvbnRleHRSZWYpLCB0b0ltcGwocGFnZUdyb3VwUmVmKSwgY2xpZW50KTsKK30KKworV0tW
aWV3SW1wbDo6V0tWaWV3SW1wbChXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBh
Z2VHcm91cCwgV0tWaWV3Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisg
ICAgLCBtX3dlYlBhZ2VQcm94eShjb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHBhZ2VHcm91
cCkpCit7Cit9CisKKwordm9pZCBXS1ZpZXdJbXBsOjppbml0aWFsaXplKCkKK3sKKyAgICBtX3dl
YlBhZ2VQcm94eS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKK30KKworV0tWaWV3SW1wbDo6fldLVmll
d0ltcGwoKQoreworfQorCit2b2lkIFdLVmlld0ltcGw6OnNldEN1cnNvcihjb25zdCBXZWJDb3Jl
OjpDdXJzb3ImIGN1cnNvcikKK3sKKyAgICBtX2NsaWVudC0+dmlld1JlcXVlc3RlZEN1cnNvck92
ZXJyaWRlKCpjdXJzb3IucGxhdGZvcm1DdXJzb3IoKSk7Cit9CisKK1Bhc3NPd25QdHI8RHJhd2lu
Z0FyZWFQcm94eT4gV0tWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpCit7CisgICAg
cmV0dXJuIERyYXdpbmdBcmVhUHJveHlJbXBsOjpjcmVhdGUobV93ZWJQYWdlUHJveHkuZ2V0KCkp
OworfQorCit2b2lkIFdLVmlld0ltcGw6OnNldEZvY3VzZWQoYm9vbCBmb2N1c2VkKQoreworICAg
IG1fZm9jdXNlZCA9IGZvY3VzZWQ7CisgICAgbV93ZWJQYWdlUHJveHktPnZpZXdTdGF0ZURpZENo
YW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQpOworfQorCit2b2lkIFdLVmlld0ltcGw6
OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQoreworICAgIG1fdmlzaWJsZSA9IHZpc2libGU7Cisg
ICAgbV93ZWJQYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJ
c1Zpc2libGUpOworfQorCit2b2lkIFdLVmlld0ltcGw6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkK
K3sKKyAgICBtX2FjdGl2ZSA9IGFjdGl2ZTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+dmlld1N0YXRl
RGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKwordm9pZCBX
S1ZpZXdJbXBsOjpzZXRTaXplKGNvbnN0IFFTaXplJiBzaXplKQoreworICAgIG1fc2l6ZSA9IHNp
emU7CisKKyAgICBXZWJQcmVmZXJlbmNlcyogd2tQcmVmcyA9IG1fd2ViUGFnZVByb3h5LT5wYWdl
R3JvdXAoKS0+cHJlZmVyZW5jZXMoKTsKKyAgICB3a1ByZWZzLT5zZXREZXZpY2VEUEkoMTYwKTsK
KyAgICB3a1ByZWZzLT5zZXREZXZpY2VXaWR0aChtX3NpemUud2lkdGgoKSk7CisgICAgd2tQcmVm
cy0+c2V0RGV2aWNlSGVpZ2h0KG1fc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBtX3dlYlBhZ2VQcm94
eS0+c2V0Vmlld3BvcnRTaXplKHNpemUpOworCisKKyAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3
aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAgIGlmICghZHJhd2lu
Z0FyZWEpCisgICAgICAgIHJldHVybjsKKworCisgICAgZHJhd2luZ0FyZWEtPnNldFNpemUobV9z
aXplLCBXZWJDb3JlOjpJbnRTaXplKCkpOworICAgIGRyYXdpbmdBcmVhLT5zZXRWaXNpYmxlQ29u
dGVudHNSZWN0KFdlYkNvcmU6OkludFJlY3QoV2ViQ29yZTo6SW50UG9pbnQoKSwgbV9zaXplKSwg
MSwgV2ViQ29yZTo6RmxvYXRQb2ludCgpKTsKK30KKworCit2b2lkIFdLVmlld0ltcGw6OnNldFVy
bChjb25zdCBRVXJsJiB1cmwpCit7CisgICAgbV91cmwgPSB1cmw7CisgICAgbV93ZWJQYWdlUHJv
eHktPmxvYWRVUkwodXJsLnRvU3RyaW5nKCkpOworfQorCit2b2lkIFdLVmlld0ltcGw6OnBhaW50
KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgcGFp
bnRGbGFncykKK3sKKyAgICBEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9IG1fd2ViUGFn
ZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAgIGlmICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJl
dHVybjsKKworICAgIExheWVyVHJlZUhvc3RQcm94eSogbGF5ZXJUcmVlSG9zdFByb3h5ID0gZHJh
d2luZ0FyZWEtPmxheWVyVHJlZUhvc3RQcm94eSgpOworICAgIGlmICghbGF5ZXJUcmVlSG9zdFBy
b3h5KQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJMYXllclRyZWVSZW5kZXJlciogcmVuZGVy
ZXIgPSBsYXllclRyZWVIb3N0UHJveHktPmxheWVyVHJlZVJlbmRlcmVyKCk7CisgICAgaWYgKCFy
ZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVuZGVyZXItPnNldEFjdGl2ZSh0cnVl
KTsKKyAgICByZW5kZXJlci0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChXZWJDb3JlOjpJbnRSZWN0
KFdlYkNvcmU6OkludFBvaW50KCksIG1fc2l6ZSksIDEsIFdlYkNvcmU6OkZsb2F0UG9pbnQoKSk7
CisgICAgcmVuZGVyZXItPnN5bmNSZW1vdGVDb250ZW50KCk7CisKKyAgICBXZWJDb3JlOjpGbG9h
dFJlY3QgcmVjdCgwLCAwLCBtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKworICAg
IHJlbmRlcmVyLT5wYWludFRvQ3VycmVudEdMQ29udGV4dCh0cmFuc2Zvcm0sIG9wYWNpdHksIHJl
Y3QsIHBhaW50RmxhZ3MpOworfQorCit2b2lkIFdLVmlld0ltcGw6OmtleUV2ZW50KFFLZXlFdmVu
dCogZXZlbnQpCit7CisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCkpOworfQorCit2b2lkIFdLVmlld0ltcGw6Om1vdXNl
RXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBpbnQgY2xpY2tDb3VudCkKK3sKKyAgICBtX3dlYlBh
Z2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LCBRVHJh
bnNmb3JtKCksIGNsaWNrQ291bnQpKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjp3aGVlbEV2ZW50
KFFXaGVlbEV2ZW50KiBldmVudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlV2hlZWxF
dmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2ZW50LCBRVHJhbnNmb3JtKCkpKTsKK30KKwordm9p
ZCBXS1ZpZXdJbXBsOjp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBtX3dl
YlBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KGV2ZW50LCBR
VHJhbnNmb3JtKCkpKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjpkb25lV2l0aEtleUV2ZW50KGNv
bnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkK
K3sKKyAgICBtX2NsaWVudC0+ZG9uZVdpdGhLZXlFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCB3
YXNFdmVudEhhbmRsZWQpOworfQorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgV0tW
aWV3SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2
ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBtX2NsaWVudC0+ZG9uZVdpdGhUb3Vj
aEV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIHdhc0V2ZW50SGFuZGxlZCk7Cit9CisjZW5kaWYK
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXdJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L1dLVmlld0ltcGwuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjNlMDQwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9XS1ZpZXdJbXBsLmgKQEAgLTAsMCAr
MSwxNjggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgV0tWaWV3SW1wbF9oCisjZGVm
aW5lIFdLVmlld0ltcGxfaAorCisjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorI2luY2x1ZGUgIldL
Vmlldy5oIgorI2luY2x1ZGUgIldlYkNvbnRleHRNZW51UHJveHkuaCIKKyNpbmNsdWRlICJXZWJQ
b3B1cE1lbnVQcm94eS5oIgorCisjaW5jbHVkZSA8UVVybD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdLVmlld0ltcGwgOiBwdWJsaWMgUGFnZUNsaWVudCAsIHB1YmxpYyBXS1ZpZXcg
eworcHVibGljOgorCisgICAgdmlydHVhbCB2b2lkIHBhZ2VDbG9zZWQoKSB7IH0KKworICAgIHZp
cnR1YWwgdm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJv
b2wgZmFkZU91dCwgYm9vbCBhbmltYXRlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0
TG9hZEZvck1haW5GcmFtZShib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJl
bmNlJikgeyB9CisgICAgdmlydHVhbCBkb3VibGUgY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFj
dG9yKCkgeyByZXR1cm4gMTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21SZXByZXNlbnRh
dGlvblpvb21GYWN0b3IoZG91YmxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Ny
b2xsYmFyc0Zvck1haW5GcmFtZSgpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaW5kU3Ry
aW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkZpbmRPcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY291bnRT
dHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBXZWJLaXQ6
OkZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSB7IH0KKworICAgIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsgLyogRklY
TUU6IEltcGxlbWVudC4gKi8gfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFBy
b3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKSB7IC8qIEZJ
WE1FOiBJbXBsZW1lbnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1
ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0K
KworCisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVl
c3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgY29uc3QgU3RyaW5nJiByZWFsbSwgY29uc3QgU3Ry
aW5nJiBwcmVmaWxsZWRVc2VybmFtZSwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBwYXNzd29y
ZCkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNl
cnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBib29s
JiBpZ25vcmVFcnJvcnMpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUsIHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVkVXNlcm5h
bWUsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIHsgLyogRklYTUU6IEltcGxl
bWVudC4gKi8gfQorCisKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNz
UmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIHsg
LyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorICAgIHZpcnR1YWwgdm9pZCBjbGVhckFsbEVkaXRD
b21tYW5kcygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvUmVkbyhXZWJQYWdlUHJveHk6
OlVuZG9PclJlZG8gdW5kb09yUmVkbykgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyByZXR1cm4g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6
VW5kb09yUmVkbyB1bmRvT3JSZWRvKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKworCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0KSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIHJldHVy
biByZWN0OyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNw
YWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkgeyAvKiBGSVhNRTogSW1wbGVtZW50
LiAqLyByZXR1cm4gcmVjdDsgfQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVu
VG9XaW5kb3coY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KSB7IC8qIEZJWE1FOiBJbXBs
ZW1lbnQuICovIHJldHVybiBwb2ludDsgfQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB3
aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIHJldHVybiByZWN0OyB9CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
Y29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorICAg
IHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKSB7IC8qIEZJWE1F
OiBJbXBsZW1lbnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgLyogRklYTUU6IEltcGxlbWVu
dC4gKi8gfQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworCisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRlKCkgeyAvKiBGSVhNRTogSW1wbGVtZW50
LiAqLyB9CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBkb25l
V2l0aEdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2
ZW50SGFuZGxlZCkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisjZW5kaWYKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGxheVZpZXcoKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2Nyb2xsVmlldyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQpIHsgLyogRklYTUU6IEltcGxl
bWVudC4gKi8gfQorCisKKyAgICB2aXJ0dWFsIHZvaWQgZmxhc2hCYWNraW5nU3RvcmVVcGRhdGVz
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIHsgLyogRklYTUU6IEltcGxlbWVudC4g
Ki8gfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGFyZWEpIHsgLyogRklY
TUU6IEltcGxlbWVudC4gKi8gfQorCisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVu
VW50aWxNb3VzZU1vdmVzKGJvb2wgaGlkZGVuVW50aWxNb3VzZU1vdmVzKSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5nZWQoY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBuZXdUb29sdGlwKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICov
IH0KKworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0
YSYgZHJhZ0RhdGEsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UpIHsgLyog
RklYTUU6IEltcGxlbWVudC4gKi8gfQorCisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViUG9w
dXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSogd2ViUGFnZVBy
b3h5KSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIHJldHVybiBQYXNzUmVmUHRyPFdlYlBvcHVw
TWVudVByb3h5PigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRleHRNZW51UHJv
eHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkpIHsg
LyogRklYTUU6IEltcGxlbWVudC4gKi8gcmV0dXJuIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQ
cm94eT4oKTsgfQorCisgICAgV0tWaWV3SW1wbChXZWJDb250ZXh0KiwgV2ViUGFnZUdyb3VwKiwg
V0tWaWV3Q2xpZW50Kik7CisgICAgfldLVmlld0ltcGwoKTsKKworICAgIC8vIFBhZ2VDbGllbnQK
KworICAgIHZpcnR1YWwgUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5n
QXJlYVByb3h5KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvcykgeyBtX2NsaWVudC0+dmlld1JlcXVlc3RlZFNjcm9s
bChwb3MpOyB9CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpIHsgbV9jbGllbnQt
PnZpZXdQcm9jZXNzQ3Jhc2hlZCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJv
Y2VzcygpIHsgbV9jbGllbnQtPnZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkg
eyBtX2NsaWVudC0+dmlld05lZWRzRGlzcGxheShyZWN0KTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6ZSkgeyBt
X2NsaWVudC0+dmlld0NvbnRlbnRTaXplQ2hhbmdlZChuZXdTaXplKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpOworCisgICAgdmly
dHVhbCBib29sIGlzVmlld0ZvY3VzZWQoKSB7IHJldHVybiBtX2ZvY3VzZWQ7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpIHsgcmV0dXJuIG1fdmlzaWJsZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSB7IHJldHVybiBtX2FjdGl2ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1ZpZXdJbldpbmRvdygpIHsgcmV0dXJuIHRydWU7IH0gLy8gRklYTUUKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSB7IHJldHVybiBtX3NpemU7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJv
YXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCk7CisjaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCk7CisjZW5kaWYKKworICAgIC8v
IFdLVmlldworCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKTsKKworICAgIHZpcnR1YWwg
dm9pZCBzZXRGb2N1c2VkKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25z
dCB7IHJldHVybiBtX2ZvY3VzZWQ7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJv
b2wpOworICAgIHZpcnR1YWwgYm9vbCBpc1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2li
bGU7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CisgICAgdmlydHVhbCBi
b29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBzZXRTaXplKGNvbnN0IFFTaXplJik7CisgICAgdmlydHVhbCBRU2l6ZSBzaXplKCkgY29u
c3QgeyByZXR1cm4gbV9zaXplOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXJsKGNvbnN0IFFV
cmwmKTsKKyAgICB2aXJ0dWFsIFFVcmwgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChjb25zdCBRTWF0cml4NHg0JiB0cmFuc2Zvcm0sIGZsb2F0
IG9wYWNpdHksIHVuc2lnbmVkIFBhaW50RmxhZ3MpOworCisgICAgV0tQYWdlUmVmIHBhZ2VSZWYo
KSB7IHJldHVybiB0b0FQSShtX3dlYlBhZ2VQcm94eS5nZXQoKSk7IH0KKworcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgdm9pZCBrZXlFdmVudChRS2V5RXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
bW91c2VFdmVudChRTW91c2VFdmVudCosIGludCBjbGlja0NvdW50ID0gMCk7CisgICAgdmlydHVh
bCB2b2lkIHdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdG91Y2hF
dmVudChRVG91Y2hFdmVudCopOworCitwcml2YXRlOgorICAgIGJvb2wgbV9mb2N1c2VkOworICAg
IGJvb2wgbV92aXNpYmxlOworICAgIGJvb2wgbV9hY3RpdmU7CisgICAgUVNpemUgbV9zaXplOwor
ICAgIFFVcmwgbV91cmw7CisKKyAgICBXS1ZpZXdDbGllbnQqIG1fY2xpZW50OworICAgIFdURjo6
UmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2VQcm94eTsKKworCit9OworCit9
CisKKyNlbmRpZiAvLyBXS1ZpZXdJbXBsX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAzMmIxMDk2Li5mYzJmYzRiIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTIt
MDYtMDUgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNvbT4KKworICAgICAg
ICBbUXRdW1dLMl0gUHJpdmF0ZSBub24tUXRRdWljayBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3Vy
Y2VzLnByaTogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9j
Yi5wcm86IEFkZGVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0Y2IvVGFyZ2V0LnByaTogQWRk
ZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXRjYi9WaWV3LmNwcDogQWRkZWQuCisgICAgICAg
IChjcmVhdGVXZWJDb250ZXh0KToKKyAgICAgICAgKGNyZWF0ZVdlYlBhZ2VHcm91cCk6CisgICAg
ICAgIChWaWV3Ojp+Vmlldyk6CisgICAgICAgIChWaWV3OjpWaWV3KToKKyAgICAgICAgKFZpZXc6
OmV4cG9zZUV2ZW50KToKKyAgICAgICAgKFZpZXc6OnJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFZp
ZXc6OnRpbWVyRXZlbnQpOgorICAgICAgICAoVmlldzo6dmlld05lZWRzRGlzcGxheSk6CisgICAg
ICAgIChWaWV3Ojp2aWV3UmVxdWVzdGVkU2Nyb2xsKToKKyAgICAgICAgKFZpZXc6OnZpZXdQcm9j
ZXNzQ3Jhc2hlZCk6CisgICAgICAgIChWaWV3Ojp2aWV3UHJvY2Vzc1JlbGF1bmNoZWQpOgorICAg
ICAgICAoVmlldzo6dmlld0NvbnRlbnRTaXplQ2hhbmdlZCk6CisgICAgICAgIChWaWV3Ojp2aWV3
UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUpOgorICAgICAgICAoVmlldzo6ZG9uZVdpdGhLZXlFdmVu
dCk6CisgICAgICAgIChWaWV3Ojpkb25lV2l0aFRvdWNoRXZlbnQpOgorICAgICAgICAobWFpbik6
CisgICAgICAgICogTWluaUJyb3dzZXIvcXRjYi9WaWV3Lmg6IEFkZGVkLgorICAgICAgICAoVmll
dyk6CisgICAgICAgIChWaWV3OjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFZpZXc6OmtleVJl
bGVhc2VFdmVudCk6CisgICAgICAgIChWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAg
ICAgICAoVmlldzo6bW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoVmlldzo6bW91c2VQcmVzc0V2
ZW50KToKKyAgICAgICAgKFZpZXc6Om1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKiBUb29s
cy5wcm86CisKIDIwMTItMDUtMDEgIFRlcnJ5IEFuZGVyc29uICA8dGRhbmRlcnNvbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBY2NlcHQgZm91ciBwYXJhbWV0ZXJzIHdoZW4g
ZGlzcGF0Y2hpbmcgYSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwIGluIGNocm9taXVtIERSVCBl
dmVudFNlbmRlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9EZXJpdmVkU291
cmNlcy5wcmkgYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzRkMmY0Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTAsMCArMSw2
IEBACitURU1QTEFURSA9IGRlcml2ZWQKKworIyBNYWtlIHN1cmUgZm9yd2FyZGVkIGhlYWRlcnMg
bmVlZGVkIGJ5IHRoaXMgcHJvamVjdCBhcmUgcHJlc2VudAorZndoZWFkZXJfZ2VuZXJhdG9yLmNv
bW1hbmRzID0gcGVybCAkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMv
Z2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsICQke1JPT1RfV0VCS0lUX0RJUn0vVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lciAkJHtST09UX0JVSUxEX0RJUn0vU291cmNlL2luY2x1ZGUgcXQKK2Z3
aGVhZGVyX2dlbmVyYXRvci5kZXBlbmRzICA9ICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dl
YktpdDIvU2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKK0dFTkVSQVRPUlMg
Kz0gZndoZWFkZXJfZ2VuZXJhdG9yCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdGNi
L01pbmlCcm93c2VyX2NiLnBybyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJf
Y2IucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDMxMDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL01pbmlCcm93c2VyX2NiLnBybwpA
QCAtMCwwICsxLDkgQEAKK1RFTVBMQVRFID0gc3ViZGlycworQ09ORklHICs9IG9yZGVyZWQKKwor
ZGVyaXZlZF9zb3VyY2VzLmZpbGUgPSBEZXJpdmVkU291cmNlcy5wcmkKK3RhcmdldC5maWxlID0g
VGFyZ2V0LnByaQorCitTVUJESVJTID0gZGVyaXZlZF9zb3VyY2VzIHRhcmdldAorCithZGRTdHJp
Y3RTdWJkaXJPcmRlckJldHdlZW4oZGVyaXZlZF9zb3VyY2VzLCB0YXJnZXQpCmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1RhcmdldC5wcmkgYi9Ub29scy9NaW5pQnJvd3Nlci9x
dGNiL1RhcmdldC5wcmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ3NzM4
MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvVGFyZ2V0LnByaQpA
QCAtMCwwICsxLDE2IEBACitURU1QTEFURSA9IGFwcAorVEFSR0VUID0gTWluaUJyb3dzZXJfY2IK
KworSEVBREVSUyArPSBcCisgICAgVmlldy5oCisKK1NPVVJDRVMgKz0gXAorICAgIFZpZXcuY3Bw
CisKK0RFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCisKK1FUID0gY29yZSBndWkgbmV0
d29yayB3ZWJraXQKKworbG9hZChmZWF0dXJlcykKKworV0VCS0lUICs9IHd0ZiBqYXZhc2NyaXB0
Y29yZSB3ZWJraXQyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1ZpZXcuY3Bw
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9WaWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43MWUwZTU3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXRjYi9WaWV3LmNwcApAQCAtMCwwICsxLDE2MSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMp
IDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlZpZXcuaCIKKworI2luY2x1ZGUgPFFHdWlB
cHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGVidWc+CisKKyNpbmNsdWRlIDxRRXhwb3NlRXZlbnQ+
CisjaW5jbHVkZSA8UVJlc2l6ZUV2ZW50PgorI2luY2x1ZGUgPFFLZXlFdmVudD4KKworI2luY2x1
ZGUgPFdlYktpdDIvV0tDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nUXQuaD4K
KworI2luY2x1ZGUgPFFVcmw+CisjaW5jbHVkZSA8UU1hdHJpeDR4ND4KKworc3RhdGljIFdLQ29u
dGV4dFJlZiBjcmVhdGVXZWJDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gV0tDb250ZXh0Q3JlYXRl
KCk7Cit9CisKK3N0YXRpYyBXS1BhZ2VHcm91cFJlZiBjcmVhdGVXZWJQYWdlR3JvdXAoY29uc3Qg
UVN0cmluZyYgbmFtZSkKK3sKKyAgICBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAgPVdLUGFnZUdy
b3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhuYW1lKSk7
CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVy
ZW5jZXMocGFnZUdyb3VwKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRGb3Jj
ZUNvbXBvc2l0aW5nTW9kZShwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1Nl
dEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOworCisgICAgcmV0dXJu
IHBhZ2VHcm91cDsKK30KKworVmlldzo6flZpZXcoKQoreworICAgIGRlbGV0ZSBtX2NvbnRleHQ7
Cit9CisKK1ZpZXc6OlZpZXcoY29uc3QgY2hhciogdXJsKQorICAgIDogbV91cmwodXJsKQorICAg
ICwgbV9hY3RpdmUoZmFsc2UpCit7CisgICAgc2V0U3VyZmFjZVR5cGUoT3BlbkdMU3VyZmFjZSk7
CisgICAgc2V0R2VvbWV0cnkoMTAwLCAxMDAsIDk4MCwgNjk3KTsKKyAgICBjcmVhdGUoKTsKKwor
ICAgIG1fY29udGV4dCA9IG5ldyBRT3BlbkdMQ29udGV4dDsKKyAgICBtX2NvbnRleHQtPmNyZWF0
ZSgpOworCisgICAgbV93ZWJWaWV3ID0gV2ViS2l0OjpXS1ZpZXc6OmNyZWF0ZShjcmVhdGVXZWJD
b250ZXh0KCksIGNyZWF0ZVdlYlBhZ2VHcm91cChRU3RyaW5nKCkpLCB0aGlzKTsKKyAgICBtX3dl
YlZpZXctPmluaXRpYWxpemUoKTsKKyAgICBXS1BhZ2VTZXRVc2VGaXhlZExheW91dChtX3dlYlZp
ZXctPnBhZ2VSZWYoKSwgdHJ1ZSk7Cit9CisKKwordm9pZCBWaWV3OjpleHBvc2VFdmVudChRRXhw
b3NlRXZlbnQqIGV2ZW50KQoreworICAgIGlmICghbV9hY3RpdmUpIHsKKyAgICAgICAgbV9hY3Rp
dmUgPSB0cnVlOworICAgICAgICBtX3dlYlZpZXctPnNldFVybChRVXJsKG1fdXJsKSk7CisKKyAg
ICAgICAgbV93ZWJWaWV3LT5zZXRGb2N1c2VkKHRydWUpOworICAgICAgICBtX3dlYlZpZXctPnNl
dFZpc2libGUodHJ1ZSk7CisgICAgICAgIG1fd2ViVmlldy0+c2V0QWN0aXZlKHRydWUpOworICAg
IH0KK30KKwordm9pZCBWaWV3OjpyZXNpemVFdmVudChRUmVzaXplRXZlbnQqIGV2ZW50KQorewor
ICAgIG1fd2ViVmlldy0+c2V0U2l6ZShldmVudC0+c2l6ZSgpKTsKK30KKwordm9pZCBWaWV3Ojp0
aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnRpbWVySWQo
KSA9PSBtX3BhaW50VGltZXIudGltZXJJZCgpKSB7CisgICAgICAgIG1fcGFpbnRUaW1lci5zdG9w
KCk7CisgICAgICAgIG1fY29udGV4dC0+bWFrZUN1cnJlbnQodGhpcyk7CisgICAgICAgIG1fd2Vi
Vmlldy0+cGFpbnQoUU1hdHJpeDR4NCgpLCAxLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5zd2Fw
QnVmZmVycyh0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlldzo6dmlld05lZWRzRGlzcGxheShj
b25zdCBRUmVjdCYpCit7CisgICAgaWYgKCFtX3BhaW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAg
ICAgbV9wYWludFRpbWVyLnN0YXJ0KDAsIHRoaXMpOworfQorCit2b2lkIFZpZXc6OnZpZXdSZXF1
ZXN0ZWRTY3JvbGwoY29uc3QgUVBvaW50JikKK3sKKyAgICBxRGVidWcoKSA8PCBfX1BSRVRUWV9G
VU5DVElPTl9fIDw8IF9fTElORV9fOworfQorCit2b2lkIFZpZXc6OnZpZXdQcm9jZXNzQ3Jhc2hl
ZCgpCit7CisgICAgcURlYnVnKCkgPDwgX19QUkVUVFlfRlVOQ1RJT05fXyA8PCBfX0xJTkVfXzsK
K30KKwordm9pZCBWaWV3Ojp2aWV3UHJvY2Vzc1JlbGF1bmNoZWQoKQoreworICAgIHFEZWJ1Zygp
IDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgX19MSU5FX187Cit9CisKK3ZvaWQgVmlldzo6dmll
d0NvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6ZSYpCit7Cit9CisKK3ZvaWQgVmlldzo6dmll
d1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNvbnN0IFFDdXJzb3ImIGN1cnNvcikKK3sKKyAgICBR
R3VpQXBwbGljYXRpb246OnNldE92ZXJyaWRlQ3Vyc29yKGN1cnNvcik7Cit9CisKK3ZvaWQgVmll
dzo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBRS2V5RXZlbnQqIGV2ZW50LCBib29sIHdhc0hhbmRs
ZWQpCit7CisgICAgaWYgKHdhc0hhbmRsZWQgfHwgZXZlbnQtPmlzQWNjZXB0ZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgc3dpdGNoIChldmVudC0+a2V5KCkpIHsKKyAgICBjYXNlIFF0OjpL
ZXlfQmFja3NwYWNlOiB7CisgICAgICAgIFdLUGFnZVJlZiBwYWdlID0gbV93ZWJWaWV3LT5wYWdl
UmVmKCk7CisgICAgICAgIGlmIChXS1BhZ2VDYW5Hb0JhY2socGFnZSkpCisgICAgICAgICAgICBX
S1BhZ2VHb0JhY2socGFnZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgVmlldzo6ZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50KiwgYm9vbCB3YXNI
YW5kbGVkKQoreworICAgIHFEZWJ1ZygpIDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgX19MSU5F
X187Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBRR3VpQXBw
bGljYXRpb24gYShhcmdjLCBhcmd2KTsKKworICAgIFZpZXcgdmlldyhhcmdjID4gMSA/IGFyZ3Zb
MV0gOiAiaHR0cDovL3d3dy5nb29nbGUuY29tIik7CisgICAgdmlldy5zaG93KCk7CisgICAgcmV0
dXJuIGEuZXhlYygpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9WaWV3
LmggYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi43M2Y1OWNhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXRjYi9WaWV3LmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lm
bmRlZiBWaWV3X2gKKyNkZWZpbmUgVmlld19oCisKKyNpbmNsdWRlIDxRQmFzaWNUaW1lcj4KKyNp
bmNsdWRlIDxRT3BlbkdMQ29udGV4dD4KKyNpbmNsdWRlIDxRV2luZG93PgorI2luY2x1ZGUgPFdl
YktpdDIvV0tWaWV3Lmg+CisKKworY2xhc3MgVmlldyA6ICBwdWJsaWMgUVdpbmRvdywgcHJpdmF0
ZSBXZWJLaXQ6OldLVmlld0NsaWVudCB7CitwdWJsaWM6CisgICAgVmlldyhjb25zdCBjaGFyKiB1
cmwpOworICAgIH5WaWV3KCk7CisKK3B1YmxpYzogLy8gV0tWaWV3Q2xpZW50CisgICAgdmlydHVh
bCB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dmlld1JlcXVlc3RlZFNjcm9sbChjb25zdCBRUG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdmll
d1Byb2Nlc3NDcmFzaGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzUmVsYXVuY2hl
ZCgpOworICAgIHZpcnR1YWwgdm9pZCB2aWV3Q29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFFTaXpl
Jik7CisgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZShjb25zdCBR
Q3Vyc29yJik7CisKKworICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IFFL
ZXlFdmVudCosIGJvb2wgd2FzSGFuZGxlZCk7CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91
Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGJvb2wgd2FzSGFuZGxlZCk7CisKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIHZvaWQgZXhwb3NlRXZlbnQoUUV4cG9zZUV2ZW50Kik7CisgICAgdmly
dHVhbCB2b2lkIHJlc2l6ZUV2ZW50KFFSZXNpemVFdmVudCopOworCisgICAgdmlydHVhbCB2b2lk
IGtleVByZXNzRXZlbnQoUUtleUV2ZW50KiBldmVudCkgeyBtX3dlYlZpZXctPmtleUV2ZW50KGV2
ZW50KTsgfQorICAgIHZpcnR1YWwgdm9pZCBrZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50KiBldmVu
dCkgeyBtX3dlYlZpZXctPmtleUV2ZW50KGV2ZW50KTsgfQorCisgICAgdmlydHVhbCB2b2lkIG1v
dXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5tb3Vz
ZUV2ZW50KGV2ZW50LCAyKTsgfQorICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVFdmVudChRTW91
c2VFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5tb3VzZUV2ZW50KGV2ZW50KTsgfQorICAgIHZp
cnR1YWwgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmll
dy0+bW91c2VFdmVudChldmVudCwgMSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VSZWxlYXNl
RXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+bW91c2VFdmVudChldmVudCk7
IH0KKworcHJpdmF0ZToKKyAgICBXZWJLaXQ6OldLVmlldyogbV93ZWJWaWV3OworICAgIFFPcGVu
R0xDb250ZXh0ICptX2NvbnRleHQ7CisgICAgUUJhc2ljVGltZXIgbV9wYWludFRpbWVyOworCisg
ICAgY29uc3QgY2hhciogbV91cmw7CisgICAgYm9vbCBtX2FjdGl2ZTsKKworICAgIHZpcnR1YWwg
dm9pZCB0aW1lckV2ZW50KFFUaW1lckV2ZW50Kik7Cit9OworCisjZW5kaWYgLy8gVmlld19oCmRp
ZmYgLS1naXQgYS9Ub29scy9Ub29scy5wcm8gYi9Ub29scy9Ub29scy5wcm8KaW5kZXggZmIyYjE5
YS4uMTc1YjUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvVG9vbHMucHJvCisrKyBiL1Rvb2xzL1Rvb2xz
LnBybwpAQCAtMTYsNiArMTYsMTIgQEAgU1VCRElSUyArPSBEdW1wUmVuZGVyVHJlZS9xdC9JbWFn
ZURpZmYucHJvCiAhbm9fd2Via2l0MiB7CiAgICAgU1VCRElSUyArPSBNaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3Nlci5wcm8gXAogICAgICAgICAgICAgICAgV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnBybworCisKK2NvbnRhaW5zKENPTkZJRywgcXRjYikgeworICAgIFNVQkRJUlMg
Kz0gTWluaUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9jYi5wcm8KK30KKwogfQogCiAhd2luMzI6
Y29udGFpbnMoREVGSU5FUywgRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEk9MSkgewotLSAKMS43
LjkuNQoK
</data>
<flag name="review"
          id="152882"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145953</attachid>
            <date>2012-06-06 00:47:35 -0700</date>
            <delta_ts>2012-06-07 14:59:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-WK2-Private-non-QtQuick-API.patch</filename>
            <type>text/plain</type>
            <size>52632</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAxMjE5ZTIyMWZmYjdmZDc4NGIyYmRmNTRhYjU5NDI5YzQ3ZTliNGMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogV2VkLCA2IEp1biAyMDEyIDAwOjM3OjEwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzIKCi46CgpBUEkgdGVzdHMgZm9yIFdLVmlldy4KClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBTb3VyY2UvdGVzdHMucHJpOgoKU291cmNlL1dlYktp
dDI6CgpBZGRpbmcgbmV3IHByaXZhdGUgbm9uLVF0UXVpY2sgQVBJLgoKVGhpcyBpcyBub3QgcHVi
bGljIEFQSS4gSXQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZQppbiBmdXR1
cmUgYW5kIHdlIG1ha2Ugbm8gY29tbWl0bWVudCByZWdhcmRpbmcgc291cmNlIGNvbXBhdGliaWxp
dHkKb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkuCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CihXS1By
ZWZlcmVuY2VzU2V0Rm9yY2VDb21wb3NpdGluZ01vZGUpOgooV0tQcmVmZXJlbmNlc0dldEZvcmNl
Q29tcG9zaXRpbmdNb2RlKToKKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aDoKKiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXcuaDogQWRkZWQuCihXZWJLaXQpOgooV0tW
aWV3Q2xpZW50KToKKiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmNwcDogQWRkZWQu
CihXZWJLaXQpOgooV2ViS2l0OjpXS1ZpZXc6OmNyZWF0ZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6
OldLVmlld0ltcGwpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp+V0tWaWV3SW1wbCk6CihXZWJLaXQ6
OldLVmlld0ltcGw6OnNldEN1cnNvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNyZWF0ZURyYXdp
bmdBcmVhUHJveHkpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRGb2N1c2VkKToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6c2V0VmlzaWJsZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEFjdGl2ZSk6
CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldFNpemUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpwYWlu
dCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmtleUV2ZW50KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
bW91c2VFdmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OndoZWVsRXZlbnQpOgooV2ViS2l0OjpX
S1ZpZXdJbXBsOjp0b3VjaEV2ZW50KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZG9uZVdpdGhLZXlF
dmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRvbmVXaXRoVG91Y2hFdmVudCk6CiogVUlQcm9j
ZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oOiBBZGRlZC4KKFdlYktpdCk6CihXS1ZpZXdJbXBs
KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6cGFnZUNsb3NlZCk6CihXZWJLaXQ6OldLVmlld0ltcGw6
OnNldEZpbmRJbmRpY2F0b3IpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRDb21taXRMb2FkRm9y
TWFpbkZyYW1lKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21SZXByZXNlbnRhdGlvbik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmN1c3RvbVJlcHJlc2Vu
dGF0aW9uWm9vbUZhY3Rvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEN1c3RvbVJlcHJlc2Vu
dGF0aW9uWm9vbUZhY3Rvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5nZVNjcm9sbGJh
cnNGb3JNYWluRnJhbWUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpmaW5kU3RyaW5nSW5DdXN0b21S
ZXByZXNlbnRhdGlvbik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0lu
Q3VzdG9tUmVwcmVzZW50YXRpb24pOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRSZWNlaXZlTWVz
c2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5n
ZVZpZXdwb3J0UHJvcGVydGllcyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmhhbmRsZURvd25sb2Fk
UmVxdWVzdCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmhhbmRsZUF1dGhlbnRpY2F0aW9uUmVxdWly
ZWRSZXF1ZXN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlQ2VydGlmaWNhdGVWZXJpZmlj
YXRpb25SZXF1ZXN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlUHJveHlBdXRoZW50aWNh
dGlvblJlcXVpcmVkUmVxdWVzdCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnJlZ2lzdGVyRWRpdENv
bW1hbmQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpjbGVhckFsbEVkaXRDb21tYW5kcyk6CihXZWJL
aXQ6OldLVmlld0ltcGw6OmNhblVuZG9SZWRvKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZXhlY3V0
ZVVuZG9SZWRvKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgoo
V2ViS2l0OjpXS1ZpZXdJbXBsOjpjb252ZXJ0VG9Vc2VyU3BhY2UpOgooV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpzY3JlZW5Ub1dpbmRvdyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OndpbmRvd1RvU2NyZWVu
KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6
CihXZWJLaXQ6OldLVmlld0ltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CihX
ZWJLaXQ6OldLVmlld0ltcGw6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKFdl
YktpdDo6V0tWaWV3SW1wbDo6dXBkYXRlVGV4dElucHV0U3RhdGUpOgooV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpkb25lV2l0aEdlc3R1cmVFdmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpc3BsYXlW
aWV3KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c2Nyb2xsVmlldyk6CihXZWJLaXQ6OldLVmlld0lt
cGw6OmZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZEZp
bmRab29tYWJsZUFyZWEpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp0b29sVGlwQ2hhbmdlZCk6CihXZWJL
aXQ6OldLVmlld0ltcGw6OnN0YXJ0RHJhZyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNyZWF0ZVBv
cHVwTWVudVByb3h5KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94
eSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6cHJvY2Vzc0RpZENyYXNoKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkUmVs
YXVuY2hQcm9jZXNzKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheSk6
CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CihXZWJLaXQ6OldL
Vmlld0ltcGw6OmlzVmlld0ZvY3VzZWQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdWaXNp
YmxlKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6aXNWaWV3SW5XaW5kb3cpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp2aWV3U2l6
ZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmluaXRpYWxpemUpOgooV2ViS2l0OjpXS1ZpZXdJbXBs
Ojppc0ZvY3VzZWQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1Zpc2libGUpOgooV2ViS2l0OjpX
S1ZpZXdJbXBsOjppc0FjdGl2ZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNpemUpOgooV2ViS2l0
OjpXS1ZpZXdJbXBsOjpzZXRUcmFuc3BhcmVudEJhY2tncm91bmQpOgooV2ViS2l0OjpXS1ZpZXdJ
bXBsOjp0cmFuc3BhcmVudEJhY2tncm91bmQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXREcmF3
QmFja2dyb3VuZCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRyYXdCYWNrZ3JvdW5kKToKKFdlYktp
dDo6V0tWaWV3SW1wbDo6cGFnZVJlZik6CiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2Js
dWVzcXVhcmUuaHRtbDogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3JlZHNx
dWFyZS5odG1sOiBBZGRlZC4KKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2Vz
L3F0Y2Jfbm9CYWNrZ3JvdW5kLnBuZzogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9o
dG1sL3Jlc291cmNlcy9xdGNiX3BhaW50LnBuZzogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9xdGNiL3F0Y2IucHJvOiBBZGRlZC4KKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2Iv
dHN0X3F0Y2IuY3BwOiBBZGRlZC4KKHdlYkNvbnRleHQpOgooY3JlYXRlV2ViUGFnZUdyb3VwKToK
KHdlYlBhZ2VHcm91cCk6CihXZWJWaWV3KToKKFdlYlZpZXc6OldlYlZpZXcpOgooV2ViVmlldzo6
bG9hZCk6CihXZWJWaWV3OjpzZXREcmF3QmFja2dyb3VuZCk6CihXZWJWaWV3OjpzZXRUcmFuc3Bh
cmVudEJhY2tncm91bmQpOgooV2ViVmlldzo6c25hcHNob3QpOgooV2ViVmlldzo6dmlld05lZWRz
RGlzcGxheSk6CihXZWJWaWV3Ojp2aWV3UmVxdWVzdGVkU2Nyb2xsKToKKFdlYlZpZXc6OnZpZXdQ
cm9jZXNzQ3Jhc2hlZCk6CihXZWJWaWV3Ojp2aWV3UHJvY2Vzc1JlbGF1bmNoZWQpOgooV2ViVmll
dzo6dmlld0NvbnRlbnRTaXplQ2hhbmdlZCk6CihXZWJWaWV3Ojp2aWV3UmVxdWVzdGVkQ3Vyc29y
T3ZlcnJpZGUpOgooV2ViVmlldzo6ZG9uZVdpdGhLZXlFdmVudCk6CihXZWJWaWV3Ojpkb25lV2l0
aFRvdWNoRXZlbnQpOgooV2ViVmlldzo6ZmluaXNoTG9hZEZvckZyYW1lKToKKHRzdF9xdGNiKToK
KHRzdF9xdGNiOjpwYWludCk6Cih0c3RfcXRjYjo6bm9CYWNrZ3JvdW5kKToKClRvb2xzOgoKTWlu
aUJyb3dzZXJfY2IgaXMgYW4gdXNhZ2UgZXhhbXBsZSBmb3IgdGhlIFdLVmlldyBBUEkuIEl0IGlz
IG9ubHkgYW4gZXhhbXBsZQphbmQgaXMgbm90IGZ1bGx5IGltcGxlbWVudGVkLgoKUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCgoqIE1pbmlCcm93c2VyL3F0Y2IvRGVyaXZlZFNvdXJjZXMucHJp
OiBBZGRlZC4KKiBNaW5pQnJvd3Nlci9xdGNiL01pbmlCcm93c2VyX2NiLnBybzogQWRkZWQuCiog
TWluaUJyb3dzZXIvcXRjYi9UYXJnZXQucHJpOiBBZGRlZC4KKiBNaW5pQnJvd3Nlci9xdGNiL1Zp
ZXcuY3BwOiBBZGRlZC4KKGNyZWF0ZVdlYkNvbnRleHQpOgooY3JlYXRlV2ViUGFnZUdyb3VwKToK
KFZpZXc6On5WaWV3KToKKFZpZXc6OlZpZXcpOgooVmlldzo6ZXhwb3NlRXZlbnQpOgooVmlldzo6
cmVzaXplRXZlbnQpOgooVmlldzo6dGltZXJFdmVudCk6CihWaWV3Ojp2aWV3TmVlZHNEaXNwbGF5
KToKKFZpZXc6OnZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZSk6CihWaWV3Ojpkb25lV2l0aEtl
eUV2ZW50KToKKG1haW4pOgoqIE1pbmlCcm93c2VyL3F0Y2IvVmlldy5oOiBBZGRlZC4KKFZpZXcp
OgooVmlldzo6dmlld1JlcXVlc3RlZFNjcm9sbCk6CihWaWV3Ojp2aWV3UHJvY2Vzc0NyYXNoZWQp
OgooVmlldzo6dmlld1Byb2Nlc3NSZWxhdW5jaGVkKToKKFZpZXc6OnZpZXdDb250ZW50U2l6ZUNo
YW5nZWQpOgooVmlldzo6ZG9uZVdpdGhUb3VjaEV2ZW50KToKKFZpZXc6OmtleVByZXNzRXZlbnQp
OgooVmlldzo6a2V5UmVsZWFzZUV2ZW50KToKKFZpZXc6Om1vdXNlRG91YmxlQ2xpY2tFdmVudCk6
CihWaWV3Ojptb3VzZU1vdmVFdmVudCk6CihWaWV3Ojptb3VzZVByZXNzRXZlbnQpOgooVmlldzo6
bW91c2VSZWxlYXNlRXZlbnQpOgoqIFRvb2xzLnBybzoKLS0tCiBDaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKysKIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyNyArKysrKysrKysrKysr
KysKIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
ICAgOCArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAg
ICB8ICAgMTAgKysKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJp
dmF0ZS5oIHwgICAgNCArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1Zp
ZXcuaCAgICAgICB8ICAgOTcgKysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmNwcCB8ICAxNTcgKysrKysrKysrKysrKysrKysrKwogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oICAgfCAgMTYzICsr
KysrKysrKysrKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVz
cXVhcmUuaHRtbCAgICB8ICAgIDUgKwogLi4uL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9y
ZWRzcXVhcmUuaHRtbCAgICAgfCAgICA1ICsKIC4uLi9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9x
dGNiX25vQmFja2dyb3VuZC5wbmcgIHwgIEJpbiAwIC0+IDY5NiBieXRlcwogLi4uL0FQSS9xdC90
ZXN0cy9odG1sL3Jlc291cmNlcy9xdGNiX3BhaW50LnBuZyAgICAgfCAgQmluIDAgLT4gNjY3IGJ5
dGVzCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2IvcXRjYi5wcm8gICB8
ICAgIDMgKwogLi4uL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRjYi90c3RfcXRjYi5jcHAgICAg
ICAgfCAgMTYzICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvdGVzdHMucHJpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDQgKwogVG9vbHMvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQwICsrKysrCiBUb29scy9NaW5pQnJv
d3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaSAgICAgICAgICB8ICAgIDYgKwogVG9vbHMvTWlu
aUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9jYi5wcm8gICAgICAgICAgfCAgICA5ICsrCiBUb29s
cy9NaW5pQnJvd3Nlci9xdGNiL1RhcmdldC5wcmkgICAgICAgICAgICAgICAgICB8ICAgMTYgKysK
IFRvb2xzL01pbmlCcm93c2VyL3F0Y2IvVmlldy5jcHAgICAgICAgICAgICAgICAgICAgIHwgIDEz
NyArKysrKysrKysrKysrKysrCiBUb29scy9NaW5pQnJvd3Nlci9xdGNiL1ZpZXcuaCAgICAgICAg
ICAgICAgICAgICAgICB8ICAgNjcgKysrKysrKysKIFRvb2xzL1Rvb2xzLnBybyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArCiAyMiBmaWxlcyBjaGFuZ2VkLCAxMDM3
IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2NwcC9xdC9XS1ZpZXcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlld0ltcGwuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2Js
dWVzcXVhcmUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9u
b0JhY2tncm91bmQucG5nCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xdGNiX3BhaW50LnBuZwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRjYi9xdGNi
LnBybwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcXRjYi90c3RfcXRjYi5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJv
d3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaQogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01p
bmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2IucHJvCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9v
bHMvTWluaUJyb3dzZXIvcXRjYi9UYXJnZXQucHJpCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMv
TWluaUJyb3dzZXIvcXRjYi9WaWV3LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlC
cm93c2VyL3F0Y2IvVmlldy5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmlu
ZGV4IDRhNDg3ZDUuLjI4MjRjYWEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNi0wNiAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdv
c3RpbmlAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBQcml2YXRlIG5vbi1RdFF1aWNr
IEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1
MzIKKworICAgICAgICBBUEkgdGVzdHMgZm9yIFdLVmlldy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS90ZXN0cy5wcmk6CisKIDIwMTIt
MDYtMDQgIEh1Z28gUGFyZW50ZSBMaW1hICA8aHVnby5saW1hQG9wZW5ib3NzYS5vcmc+CiAKICAg
ICAgICAgVHVybiBMRUdBQ1lfVklFV1BPUlRfQURBUFRJT04gVVNFIGZsYWcgaW50byBhbiBFTkFC
TEUgZmxhZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MTM4ZjEwLi43MjExNDg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMwIEBACisyMDEyLTA2LTA2ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBu
b2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDUzMgorCisg
ICAgICAgIEFkZGluZyBuZXcgcHJpdmF0ZSBub24tUXRRdWljayBBUEkuCisKKyAgICAgICAgVGhp
cyBpcyBub3QgcHVibGljIEFQSS4gSXQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZSBhdCBhbnkg
dGltZQorICAgICAgICBpbiBmdXR1cmUgYW5kIHdlIG1ha2Ugbm8gY29tbWl0bWVudCByZWdhcmRp
bmcgc291cmNlIGNvbXBhdGliaWxpdHkKKyAgICAgICAgb3IgYmluYXJ5IGNvbXBhdGliaWxpdHku
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAg
ICAgICAgKFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChX
S1ByZWZlcmVuY2VzR2V0Rm9yY2VDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Y3BwL3F0L1dLVmlldy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXS1Zp
ZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlld0ltcGwuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlldzo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6V0tWaWV3SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OldLVmlld0ltcGw6On5XS1ZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6c2V0Q3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Y3JlYXRl
RHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNldEZvY3Vz
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRWaXNpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3
SW1wbDo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnBhaW50KToKKyAg
ICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6a2V5RXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
S1ZpZXdJbXBsOjptb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6d2hl
ZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnRvdWNoRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkb25lV2l0aEtleUV2ZW50KToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdLVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpwYWdlQ2xv
c2VkKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0RmluZEluZGljYXRvcik6Cisg
ICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUpOgor
ICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3Rv
bVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Y3VzdG9tUmVw
cmVzZW50YXRpb25ab29tRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0
Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3
SW1wbDo6ZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6
OldLVmlld0ltcGw6OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V0tWaWV3SW1wbDo6Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRh
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmRpZFJlY2VpdmVNZXNzYWdlRnJv
bU5hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hh
bmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFu
ZGxlRG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxl
QXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QpOgorICAgICAgICAoV2Vi
S2l0OjpXS1ZpZXdJbXBsOjpoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmNsZWFyQWxsRWRpdENvbW1hbmRzKToKKyAgICAg
ICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Y2FuVW5kb1JlZG8pOgorICAgICAgICAoV2ViS2l0OjpX
S1ZpZXdJbXBsOjpleGVjdXRlVW5kb1JlZG8pOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBs
Ojpjb252ZXJ0VG9EZXZpY2VTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmNv
bnZlcnRUb1VzZXJTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNjcmVlblRv
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6d2luZG93VG9TY3JlZW4pOgor
ICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6dXBkYXRlQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjp1cGRhdGVU
ZXh0SW5wdXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmRvbmVXaXRoR2Vz
dHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlzcGxheVZpZXcpOgor
ICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzY3JvbGxWaWV3KToKKyAgICAgICAgKFdlYktp
dDo6V0tWaWV3SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKToKKyAgICAgICAgKFdlYktp
dDo6V0tWaWV3SW1wbDo6ZGlkRmluZFpvb21hYmxlQXJlYSk6CisgICAgICAgIChXZWJLaXQ6OldL
Vmlld0ltcGw6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyk6CisgICAgICAgIChXZWJL
aXQ6OldLVmlld0ltcGw6OnRvb2xUaXBDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3
SW1wbDo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Y3JlYXRlUG9w
dXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpjcmVhdGVDb250ZXh0
TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6cGFnZURpZFJlcXVlc3RT
Y3JvbGwpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgor
ICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MpOgorICAgICAg
ICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYktp
dDo6V0tWaWV3SW1wbDo6aXNWaWV3Rm9jdXNlZCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0lt
cGw6OmlzVmlld1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdX
aW5kb3dBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdJbldpbmRv
dyk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnZpZXdTaXplKToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0lt
cGw6OmlzRm9jdXNlZCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmlzVmlzaWJsZSk6
CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmlzQWN0aXZlKToKKyAgICAgICAgKFdlYktp
dDo6V0tWaWV3SW1wbDo6c2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNldFRy
YW5zcGFyZW50QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnRyYW5z
cGFyZW50QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNldERyYXdC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZHJhd0JhY2tncm91bmQp
OgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpwYWdlUmVmKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvYmx1ZXNxdWFyZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVkc3F1YXJlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9ub0JhY2tn
cm91bmQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwv
cmVzb3VyY2VzL3F0Y2JfcGFpbnQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3F0Y2IvcXRjYi5wcm86IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcXRjYi90c3RfcXRjYi5jcHA6IEFkZGVkLgorICAgICAgICAod2ViQ29udGV4dCk6
CisgICAgICAgIChjcmVhdGVXZWJQYWdlR3JvdXApOgorICAgICAgICAod2ViUGFnZUdyb3VwKToK
KyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAoV2ViVmlldzo6V2ViVmlldyk6CisgICAgICAg
IChXZWJWaWV3Ojpsb2FkKToKKyAgICAgICAgKFdlYlZpZXc6OnNldERyYXdCYWNrZ3JvdW5kKToK
KyAgICAgICAgKFdlYlZpZXc6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCk6CisgICAgICAgIChX
ZWJWaWV3OjpzbmFwc2hvdCk6CisgICAgICAgIChXZWJWaWV3Ojp2aWV3TmVlZHNEaXNwbGF5KToK
KyAgICAgICAgKFdlYlZpZXc6OnZpZXdSZXF1ZXN0ZWRTY3JvbGwpOgorICAgICAgICAoV2ViVmll
dzo6dmlld1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYlZpZXc6OnZpZXdQcm9jZXNzUmVs
YXVuY2hlZCk6CisgICAgICAgIChXZWJWaWV3Ojp2aWV3Q29udGVudFNpemVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYlZpZXc6OnZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZSk6CisgICAgICAgIChX
ZWJWaWV3Ojpkb25lV2l0aEtleUV2ZW50KToKKyAgICAgICAgKFdlYlZpZXc6OmRvbmVXaXRoVG91
Y2hFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpmaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAodHN0X3F0Y2IpOgorICAgICAgICAodHN0X3F0Y2I6OnBhaW50KToKKyAgICAgICAgKHRzdF9x
dGNiOjpub0JhY2tncm91bmQpOgorCiAyMDEyLTA2LTA0ICBTYWRydWwgSGFiaWIgQ2hvd2RodXJ5
ICA8c2FkcnVsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEZpeCBzb2Z0d2Fy
ZSByZW5kZXJpbmcgZm9yIGRldmljZS1zY2FsZS1mYWN0b3IgPiAxCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCAy
MTZhYjViLi5iMzU3NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTc5NSw2ICs3OTUsMTQgQEAgY29udGFp
bnMoREVGSU5FUywgRU5BQkxFX1RPVUNIX0VWRU5UUz0xKSB7CiAgICAgICAgIFNoYXJlZC9xdC9O
YXRpdmVXZWJUb3VjaEV2ZW50UXQuY3BwCiB9CiAKK2NvbnRhaW5zKENPTkZJRywgcXRjYikgewor
ICAgIEhFQURFUlMgKz0gXAorICAgICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXcuaCBc
CisgICAgICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlld0ltcGwuaAorICAgIFNPVVJDRVMg
Kz0gXAorICAgICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmNwcAorfQorCiBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfR0VPTE9DQVRJT049MSk6IFFUICs9IGxvY2F0aW9uCiAK
IHBsdWdpbl9iYWNrZW5kX3hsaWIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4IDlmZThkNmEuLjZkMDNmMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTM4OCw2
ICszODgsMTYgQEAgYm9vbCBXS1ByZWZlcmVuY2VzR2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1IKICAgICByZXR1cm4gdG9JbXBsKHBy
ZWZlcmVuY2VzUmVmKS0+YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKTsKIH0KIAordm9p
ZCBXS1ByZWZlcmVuY2VzU2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZiwgYm9vbCBmbGFnKQoreworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZikt
PnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGZsYWcpOworfQorCitib29sIFdLUHJlZmVyZW5jZXNH
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQor
eworICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5mb3JjZUNvbXBvc2l0aW5nTW9k
ZSgpOworfQorCiB2b2lkIFdLUHJlZmVyZW5jZXNTZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxl
KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZmxhZykKIHsKICAgICB0b0lt
cGwocHJlZmVyZW5jZXNSZWYpLT5zZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKGZsYWcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1By
aXZhdGUuaAppbmRleCA2ZGJjNDczLi4yMzgyYTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaApAQCAtNzYsNiArNzYs
MTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYsIGIKIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5j
ZXNHZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIAog
Ly8gRGVmYXVsdHMgdG8gZmFsc2UuCitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CitXS19FWFBPUlQgYm9v
bCBXS1ByZWZlcmVuY2VzR2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoV0tQcmVmZXJlbmNlc1JlZik7
CisKKy8vIERlZmF1bHRzIHRvIGZhbHNlLgogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1Nl
dENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoV0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CiBXS19F
WFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShXS1By
ZWZlcmVuY2VzUmVmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9jcHAvcXQvV0tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9X
S1ZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjQzOWQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3
LmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoKKyAgICBUaGlzIGZp
bGUgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBRdCBBcGkuIEl0IG1heSBjaGFuZ2Ugd2l0aG91
dCBub3RpY2UgYXQgYW55IHRpbWUgaW4gZnV0dXJlLgorICAgIFdlIG1ha2Ugbm8gY29tbWl0bWVu
dCByZWdhcmRpbmcgc291cmNlIGNvbXBhdGliaWxpdHkgb3IgYmluYXJ5IGNvbXBhdGliaWxpdHku
CisqLworCisjaWZuZGVmIFdLVmlld19oCisjZGVmaW5lIFdLVmlld19oCisjaW5jbHVkZSAicXdl
YmtpdGdsb2JhbC5oIgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KKwor
Y2xhc3MgUVJlY3Q7CitjbGFzcyBRUmVjdEY7CitjbGFzcyBRUG9pbnQ7CitjbGFzcyBRU2l6ZTsK
K2NsYXNzIFFLZXlFdmVudDsKK2NsYXNzIFFNb3VzZUV2ZW50OworY2xhc3MgUVdoZWVsRXZlbnQ7
CitjbGFzcyBRVG91Y2hFdmVudDsKK2NsYXNzIFFVcmw7CitjbGFzcyBRTWF0cml4NHg0OworY2xh
c3MgUUN1cnNvcjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdLVmlldzsKKworY2xh
c3MgV0tWaWV3Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgdmlld05lZWRzRGlz
cGxheShjb25zdCBRUmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZFNj
cm9sbChjb25zdCBRUG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzQ3Jh
c2hlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NSZWxhdW5jaGVkKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB2aWV3Q29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFFTaXplJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUoY29uc3Qg
UUN1cnNvciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBR
S2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdp
dGhUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50KiwgYm9vbCB3YXNIYW5kbGVkKSA9IDA7Cit9
OworCitjbGFzcyBRV0VCS0lUX0VYUE9SVCBXS1ZpZXcgeworcHVibGljOgorICAgIHZpcnR1YWwg
dm9pZCBpbml0aWFsaXplKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3Qg
UVNpemUmKSA9IDA7CisgICAgdmlydHVhbCBRU2l6ZSBzaXplKCkgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0Zv
Y3VzZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKSA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQo
Ym9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd0JhY2tncm91bmQoYm9vbCkgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBkcmF3QmFja2dyb3VuZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgdm9pZCBwYWludChjb25zdCBRTWF0cml4NHg0JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHks
IHVuc2lnbmVkIHBhaW50RmxhZ3MpID0gMDsKKworICAgIHZpcnR1YWwgV0tQYWdlUmVmIHBhZ2VS
ZWYoKSA9IDA7CisKKyAgICBzdGF0aWMgV0tWaWV3KiBjcmVhdGUoV0tDb250ZXh0UmVmLCBXS1Bh
Z2VHcm91cFJlZiwgV0tWaWV3Q2xpZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQga2V5RXZlbnQo
UUtleUV2ZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZUV2ZW50KFFNb3VzZUV2ZW50
KiwgaW50IGNsaWNrQ291bnQgPSAwKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnQo
UVdoZWVsRXZlbnQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZl
bnQqKSA9IDA7Cit9OworCit9CisKKyNlbmRpZiAvLyBXS1ZpZXdfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjk2YzFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5jcHAKQEAgLTAsMCArMSwx
NTcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXS1ZpZXdJbXBsLmgiCisKKyNpbmNsdWRlICJDdXJzb3IuaCIKKyNpbmNsdWRlICJEcmF3aW5n
QXJlYVByb3h5SW1wbC5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUhvc3RQcm94eS5oIgorI2luY2x1
ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2
ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViVG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2
ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2Vi
TGF5ZXJUcmVlUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKyNpbmNsdWRl
ICJXZWJQcmVmZXJlbmNlcy5oIgorCisjaW5jbHVkZSA8UVRyYW5zZm9ybT4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLVmlldy5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXS1ZpZXcqIFdLVmll
dzo6Y3JlYXRlKFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYsIFdLVmlld0NsaWVudCogY2xpZW50KQoreworICAgIGlmICghY29udGV4dFJlZiB8fCAh
cGFnZUdyb3VwUmVmKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3IFdLVmlld0lt
cGwodG9JbXBsKGNvbnRleHRSZWYpLCB0b0ltcGwocGFnZUdyb3VwUmVmKSwgY2xpZW50KTsKK30K
KworV0tWaWV3SW1wbDo6V0tWaWV3SW1wbChXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3Jv
dXAqIHBhZ2VHcm91cCwgV0tWaWV3Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGll
bnQpCisgICAgLCBtX3dlYlBhZ2VQcm94eShjb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHBh
Z2VHcm91cCkpCit7Cit9CisKK1dLVmlld0ltcGw6On5XS1ZpZXdJbXBsKCkKK3sKKyAgICBtX3dl
YlBhZ2VQcm94eS0+Y2xvc2UoKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjpzZXRDdXJzb3IoY29u
c3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCit7CisgICAgbV9jbGllbnQtPnZpZXdSZXF1ZXN0
ZWRDdXJzb3JPdmVycmlkZSgqY3Vyc29yLnBsYXRmb3JtQ3Vyc29yKCkpOworfQorCitQYXNzT3du
UHRyPERyYXdpbmdBcmVhUHJveHk+IFdLVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHko
KQoreworICAgIHJldHVybiBEcmF3aW5nQXJlYVByb3h5SW1wbDo6Y3JlYXRlKG1fd2ViUGFnZVBy
b3h5LmdldCgpKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNl
ZCkKK3sKKyAgICBtX2ZvY3VzZWQgPSBmb2N1c2VkOworICAgIG1fd2ViUGFnZVByb3h5LT52aWV3
U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkKTsKK30KKwordm9pZCBX
S1ZpZXdJbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBtX3Zpc2libGUgPSB2
aXNpYmxlOworICAgIG1fd2ViUGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVBy
b3h5OjpWaWV3SXNWaXNpYmxlKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjpzZXRBY3RpdmUoYm9v
bCBhY3RpdmUpCit7CisgICAgbV9hY3RpdmUgPSBhY3RpdmU7CisgICAgbV93ZWJQYWdlUHJveHkt
PnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9
CisKK3ZvaWQgV0tWaWV3SW1wbDo6c2V0U2l6ZShjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBt
X3NpemUgPSBzaXplOworICAgIG1fd2ViUGFnZVByb3h5LT5zZXRWaWV3cG9ydFNpemUoc2l6ZSk7
CisKKworICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHkt
PmRyYXdpbmdBcmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOwor
CisKKyAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShtX3NpemUsIFdlYkNvcmU6OkludFNpemUoKSk7
CisgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVj
dChXZWJDb3JlOjpJbnRQb2ludCgpLCBtX3NpemUpLCAxLCBXZWJDb3JlOjpGbG9hdFBvaW50KCkp
OworfQorCit2b2lkIFdLVmlld0ltcGw6OnBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9y
bSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgcGFpbnRGbGFncykKK3sKKyAgICBEcmF3aW5nQXJl
YVByb3h5KiBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAg
IGlmICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybjsKKworICAgIExheWVyVHJlZUhvc3RQ
cm94eSogbGF5ZXJUcmVlSG9zdFByb3h5ID0gZHJhd2luZ0FyZWEtPmxheWVyVHJlZUhvc3RQcm94
eSgpOworICAgIGlmICghbGF5ZXJUcmVlSG9zdFByb3h5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJMYXllclRyZWVSZW5kZXJlciogcmVuZGVyZXIgPSBsYXllclRyZWVIb3N0UHJveHktPmxh
eWVyVHJlZVJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcmVuZGVyZXItPnNldEFjdGl2ZSh0cnVlKTsKKyAgICByZW5kZXJlci0+c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChXZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIG1fc2l6
ZSksIDEsIFdlYkNvcmU6OkZsb2F0UG9pbnQoKSk7CisgICAgcmVuZGVyZXItPnN5bmNSZW1vdGVD
b250ZW50KCk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgwLCAwLCBtX3NpemUud2lk
dGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKworICAgIHJlbmRlcmVyLT5wYWludFRvQ3VycmVudEdM
Q29udGV4dCh0cmFuc2Zvcm0sIG9wYWNpdHksIHJlY3QsIHBhaW50RmxhZ3MpOworfQorCit2b2lk
IFdLVmlld0ltcGw6OmtleUV2ZW50KFFLZXlFdmVudCogZXZlbnQpCit7CisgICAgbV93ZWJQYWdl
UHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCkp
OworfQorCit2b2lkIFdLVmlld0ltcGw6Om1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBp
bnQgY2xpY2tDb3VudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChO
YXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LCBRVHJhbnNmb3JtKCksIGNsaWNrQ291bnQpKTsKK30K
Kwordm9pZCBXS1ZpZXdJbXBsOjp3aGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBldmVudCkKK3sKKyAg
ICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2
ZW50LCBRVHJhbnNmb3JtKCkpKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjp0b3VjaEV2ZW50KFFU
b3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVu
dChOYXRpdmVXZWJUb3VjaEV2ZW50KGV2ZW50LCBRVHJhbnNmb3JtKCkpKTsKK30KKwordm9pZCBX
S1ZpZXdJbXBsOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
IGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBtX2NsaWVudC0+ZG9uZVdpdGhL
ZXlFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCB3YXNFdmVudEhhbmRsZWQpOworfQorCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgV0tWaWV3SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50
KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkK
K3sKKyAgICBtX2NsaWVudC0+ZG9uZVdpdGhUb3VjaEV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCks
IHdhc0V2ZW50SGFuZGxlZCk7Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjhmNmZkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmgKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKy8qCisgICAgVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJs
aWMgUXQgQXBpLiBJdCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlIGF0IGFueSB0aW1lIGluIGZ1
dHVyZS4KKyAgICBXZSBtYWtlIG5vIGNvbW1pdG1lbnQgcmVnYXJkaW5nIHNvdXJjZSBjb21wYXRp
YmlsaXR5IG9yIGJpbmFyeSBjb21wYXRpYmlsaXR5LgorKi8KKworI2lmbmRlZiBXS1ZpZXdJbXBs
X2gKKyNkZWZpbmUgV0tWaWV3SW1wbF9oCisKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5j
bHVkZSAiV0tWaWV3LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1
ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKKyNpbmNsdWRlIDxRVXJsPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV0tWaWV3SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50ICwgcHVibGlj
IFdLVmlldyB7CitwdWJsaWM6CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNh
dG9yPiwgYm9vbCBmYWRlT3V0LCBib29sIGFuaW1hdGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UmKSB7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXN0b21SZXByZXNlbnRhdGlv
blpvb21GYWN0b3IoKSB7IHJldHVybiAxOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVJl
cHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lk
IGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIFdlYktpdDo6
RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYs
IFdlYktpdDo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMmIGF0dHIpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpIHsg
LyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dGhl
bnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGNvbnN0IFN0
cmluZyYgcmVhbG0sIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUsIFN0cmluZyYgdXNl
cm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSwgYm9vbCYgaWdub3JlRXJyb3JzKSB7IC8qIEZJWE1FOiBJbXBsZW1l
bnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJveHlBdXRoZW50aWNhdGlvblJlcXVp
cmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50MTZfdCBwb3J0LCBjb25zdCBT
dHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3
b3JkKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQ
cm94eTo6VW5kb09yUmVkbykgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVh
bCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgeyB9CisgICAgdmlydHVhbCBib29sIGNhblVu
ZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5k
b1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pIHsgLyogRklYTUU6IElt
cGxlbWVudC4gKi8gfQorCisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRv
RGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0KSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIHJldHVybiByZWN0OyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJl
Y3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkgeyAv
KiBGSVhNRTogSW1wbGVtZW50LiAqLyByZXR1cm4gcmVjdDsgfQorICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50UG9pbnQgc2NyZWVuVG9XaW5kb3coY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
KSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIHJldHVybiBwb2ludDsgfQorICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBy
ZWN0KSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIHJldHVybiByZWN0OyB9CisKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgLyogRklYTUU6IElt
cGxlbWVudC4gKi8gfQorICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsg
LyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpIHsgLyog
RklYTUU6IEltcGxlbWVudC4gKi8gfQorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICB2
aXJ0dWFsIHZvaWQgZG9uZVdpdGhHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBl
dmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQor
I2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXlWaWV3KCkgeyAvKiBGSVhNRTogSW1wbGVt
ZW50LiAqLyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFZpZXcoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSB7
IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tp
bmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JikgeyAvKiBGSVhN
RTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
YXJlYSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wgaGlkZGVuVW50aWxNb3VzZU1vdmVzKSB7
IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5n
ZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBuZXdUb29sdGlwKSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0lt
YWdlKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiB3
ZWJQYWdlUHJveHkpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gcmV0dXJuIFBhc3NSZWZQdHI8
V2ViUG9wdXBNZW51UHJveHk+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4
dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHdlYlBhZ2VQ
cm94eSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyByZXR1cm4gUGFzc1JlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PigpOyB9CisKKyAgICBXS1ZpZXdJbXBsKFdlYkNvbnRleHQqLCBXZWJQYWdl
R3JvdXAqLCBXS1ZpZXdDbGllbnQqKTsKKyAgICB+V0tWaWV3SW1wbCgpOworCisgICAgLy8gUGFn
ZUNsaWVudAorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0
ZURyYXdpbmdBcmVhUHJveHkoKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNj
cm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zKSB7IG1fY2xpZW50LT52aWV3UmVxdWVz
dGVkU2Nyb2xsKHBvcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCkgeyBt
X2NsaWVudC0+dmlld1Byb2Nlc3NDcmFzaGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVs
YXVuY2hQcm9jZXNzKCkgeyBtX2NsaWVudC0+dmlld1Byb2Nlc3NSZWxhdW5jaGVkKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiByZWN0KSB7IG1fY2xpZW50LT52aWV3TmVlZHNEaXNwbGF5KHJlY3QpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdT
aXplKSB7IG1fY2xpZW50LT52aWV3Q29udGVudFNpemVDaGFuZ2VkKG5ld1NpemUpOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKKworICAgIHZp
cnR1YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCkgeyByZXR1cm4gbV9mb2N1c2VkOyB9CisgICAgdmly
dHVhbCBib29sIGlzVmlld1Zpc2libGUoKSB7IHJldHVybiBtX3Zpc2libGU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCkgeyByZXR1cm4gbV9hY3RpdmU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNWaWV3SW5XaW5kb3coKSB7IHJldHVybiB0cnVlOyB9IC8vIEZJWE1FCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgeyByZXR1cm4gbV9zaXplOyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOworI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJU
b3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOworI2VuZGlmCisKKyAgICAvLyBXS1Zp
ZXcKKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgeyBtX3dlYlBhZ2VQcm94eS0+aW5p
dGlhbGl6ZVdlYlBhZ2UoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCk7
CisgICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNlZDsg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CisgICAgdmlydHVhbCBib29s
IGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQorCisgICAgdmlydHVhbCB2
b2lkIHNldEFjdGl2ZShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgUVNp
emUmKTsKKyAgICB2aXJ0dWFsIFFTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB2YWx1ZSkg
eyBtX3dlYlBhZ2VQcm94eS0+c2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQodmFsdWUpOyB9
CisgICAgdmlydHVhbCBib29sIHRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViUGFnZVByb3h5LT5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpOyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RHJhd0JhY2tncm91bmQoYm9vbCB2YWx1ZSkgeyBtX3dlYlBhZ2VQcm94
eS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHZhbHVlKTsgfQorICAgIHZpcnR1YWwgYm9vbCBkcmF3QmFj
a2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZVByb3h5LT5kcmF3c0JhY2tncm91bmQo
KTsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9y
bSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgUGFpbnRGbGFncyk7CisKKyAgICBXS1BhZ2VSZWYg
cGFnZVJlZigpIHsgcmV0dXJuIHRvQVBJKG1fd2ViUGFnZVByb3h5LmdldCgpKTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGtleUV2ZW50KFFLZXlFdmVudCopOworICAgIHZpcnR1
YWwgdm9pZCBtb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiwgaW50IGNsaWNrQ291bnQgPSAwKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudChRV2hlZWxFdmVudCopOworICAgIHZpcnR1YWwgdm9p
ZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2ZvY3Vz
ZWQ7CisgICAgYm9vbCBtX3Zpc2libGU7CisgICAgYm9vbCBtX2FjdGl2ZTsKKyAgICBRU2l6ZSBt
X3NpemU7CisgICAgUVVybCBtX3VybDsKKworICAgIFdLVmlld0NsaWVudCogbV9jbGllbnQ7Cisg
ICAgV1RGOjpSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5OworfTsK
KworfQorCisjZW5kaWYgLy8gV0tWaWV3SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvYmx1ZXNxdWFyZS5odG1sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGI2Mzk2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRt
bApAQCAtMCwwICsxLDUgQEAKKzxib2R5IHN0eWxlPSJtYXJnaW46NjBweCI+CisgICAgPHRhYmxl
IHN0eWxlPSJib3JkZXI6MTBweCBzb2xpZCBibHVlOyB3aWR0aDo4MHB4OyBoZWlnaHQ6ODBweCI+
CisgICAgICAgIDx0cj48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgIDwvdGFibGU+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwv
cmVkc3F1YXJlLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0
bWwvcmVkc3F1YXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcw
ZDI5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxib2R5IHN0eWxlPSJt
YXJnaW46MjBweCI+CisgICAgPHRhYmxlIHN0eWxlPSJib3JkZXI6MTBweCBzb2xpZCByZWQ7IHdp
ZHRoOjE2MHB4OyBoZWlnaHQ6MTYwcHgiPgorICAgICAgICA8dHI+PHRkPiZuYnNwOzwvdGQ+PC90
cj4KKyAgICA8L3RhYmxlPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xdGNiX25vQmFja2dyb3VuZC5wbmcg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F0
Y2Jfbm9CYWNrZ3JvdW5kLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODNmMDdjZWZmMjI4YmM4ZWJkZWRjYjE2
OTRmNTg1ODg4OGU0NzM2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2OTYKemNtZUFTQE4/KG9s
SHlgdVZCcSFpYTB2cF5DcVM1azRNP3R5U1RfJHl1QHBPYmhId0J1NE0kMWBrazQ3KjVuMFRACnp6
O15fTThLLUxWTmkjNG9NUn5lN2hFJlhYZClKWSMkdzdlTztMI3VkXiZoaXVObWVAOTVNdFojV35w
JnxWYF9Cdgp6VGtlWTJoUDRiOSMqR2RGOTR0ZjxFemQ5VmVgJk95eXNkZURJPyF3XmBZZFdEfDY5
QSplQlBoIUU2cSlPMVVRJSkKejZ7dFdZWntMMFhxeCQjemNWNVRVMzl+ZGdDfiUrP2hqYDZqLXJz
Zm8qYlFtNl9jSWopU2VQNks3Y3VXTHlUJHQyCnpVa3F+XklJJWtJVmNZQzR4eFd9PEk8UU5WP3dp
Q25XIyNwWCYkKTJLIVI8e34rV0srRztmeW89bTxebj56QzVhYApQV0I+d0JTM2ozXlA2PHJfWF89
SWQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9wYWludC5wbmcgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F0Y2JfcGFp
bnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk1YmY2NzZmMjFhMDllZDM1MzI4MTkyZGNjYjUzNzYwNGY5MjQ3
OTIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDY2Nwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZw
XkNxUzVrNE0/dHlTVF8keXVAcE9iaEh3QnU0TSQxYGtrNDcqNW4wVEAKeno7Xl9NOEstTFZOaSM0
byo/UEotaEUmWFhkdUptanYhTVdrPExSM0p4fkYrKHhWQUF7JmRffUQ8eiFLIyt9Z2UwCno+bG93
cj1HUWEpRj5aN2E7OXd6PVhpMlltNiFscDc7ZilXJSstNnZId2Z2bUBDMEs2aWJNZmlfRV5LZ0E7
OXpOVAp6NyRzO0IxfiU5STskR2puU2E2RTFROSohJTM3cyZncFM8dDs1MDQjM3V9ZnBxMHY3d2ck
aE1EciU0ZmEoY1l2dmoKTiFQQ3t4V3R+JCg2OUM4cG47cmxGCgpsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0
Y2IvcXRjYi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2Iv
cXRjYi5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkYzE5NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRj
Yi9xdGNiLnBybwpAQCAtMCwwICsxLDMgQEAKK2luY2x1ZGUoLi4vdGVzdHMucHJpKQorU09VUkNF
UyArPSAkJHtUQVJHRVR9LmNwcAorUVQgKz0gd2Via2l0LXByaXZhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRjYi90c3RfcXRjYi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2IvdHN0X3F0Y2IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNzNiY2YKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2IvdHN0X3F0Y2Iu
Y3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworI2luY2x1ZGUgIi4uL3V0
aWwuaCIKKworI2luY2x1ZGUgPFFJbWFnZT4KKyNpbmNsdWRlIDxRTWF0cml4NHg0PgorI2luY2x1
ZGUgPFFPcGVuR0xDb250ZXh0PgorI2luY2x1ZGUgPFFXaW5kb3c+CisjaW5jbHVkZSA8UXRUZXN0
L1F0VGVzdD4KKworI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlcy5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLU3RyaW5nUXQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+CisjaW5jbHVkZSA8
V2ViS2l0Mi9XS1ZpZXcuaD4KKworc3RhdGljIFdLQ29udGV4dFJlZiB3ZWJDb250ZXh0KCkKK3sK
KyAgICBzdGF0aWMgV0tDb250ZXh0UmVmIHJlc3VsdCA9IFdLQ29udGV4dENyZWF0ZSgpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBXS1BhZ2VHcm91cFJlZiBjcmVhdGVXZWJQYWdl
R3JvdXAoY29uc3QgUVN0cmluZyYgbmFtZSkKK3sKKyAgICBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXAgPVdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdDcmVhdGVXaXRoUVN0
cmluZyhuYW1lKSk7CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyA9IFdLUGFnZUdy
b3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0QWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOworICAgIFdLUHJlZmVy
ZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQ
cmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwor
CisgICAgcmV0dXJuIHBhZ2VHcm91cDsKK30KKworc3RhdGljIFdLUGFnZUdyb3VwUmVmIHdlYlBh
Z2VHcm91cChjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAgIHN0YXRpYyBXS1BhZ2VHcm91cFJl
ZiByZXN1bHQgPSBjcmVhdGVXZWJQYWdlR3JvdXAobmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgV2ViS2l0OjpXS1Zp
ZXdDbGllbnQgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgV2ViVmlldyhjb25zdCBRU2l6
ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7
CisgICAgICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdlTG9hZGVyQ2xp
ZW50KSk7CisgICAgICAgIGxvYWRlckNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKKyAgICAgICAg
bG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IFdlYlZpZXc6OmZpbmlzaExvYWRG
b3JGcmFtZTsKKworICAgICAgICBtX3dlYlZpZXcgPSBXZWJLaXQ6OldLVmlldzo6Y3JlYXRlKHdl
YkNvbnRleHQoKSwgd2ViUGFnZUdyb3VwKFFTdHJpbmcoKSksIHRoaXMpOworICAgICAgICBXS1Bh
Z2VTZXRQYWdlTG9hZGVyQ2xpZW50KG1fd2ViVmlldy0+cGFnZVJlZigpLCAmbG9hZGVyQ2xpZW50
KTsKKyAgICAgICAgbV93ZWJWaWV3LT5pbml0aWFsaXplKCk7CisgICAgICAgIFdLUGFnZVNldFVz
ZUZpeGVkTGF5b3V0KG1fd2ViVmlldy0+cGFnZVJlZigpLCB0cnVlKTsKKworICAgICAgICBtX3dl
YlZpZXctPnNldFNpemUoc2l6ZSk7CisgICAgICAgIG1fd2ViVmlldy0+c2V0Rm9jdXNlZCh0cnVl
KTsKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRWaXNpYmxlKHRydWUpOworICAgICAgICBtX3dlYlZp
ZXctPnNldEFjdGl2ZSh0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGxvYWQoY29uc3QgUVN0cmlu
ZyYgaHRtbCkKKyAgICB7CisgICAgICAgIFdLUGFnZUxvYWRVUkwobV93ZWJWaWV3LT5wYWdlUmVm
KCksIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGh0bWwudG9Bc2NpaSgpLmRhdGEoKSkpOwor
ICAgICAgICBRVkVSSUZZKDo6d2FpdEZvclNpZ25hbCh0aGlzLCBTSUdOQUwobG9hZGVkKCkpLCA1
MDAwKSk7CisgICAgfQorCisgICAgdm9pZCBzZXREcmF3QmFja2dyb3VuZChib29sIHZhbHVlKSB7
IG1fd2ViVmlldy0+c2V0RHJhd0JhY2tncm91bmQodmFsdWUpOyB9CisgICAgdm9pZCBzZXRUcmFu
c3BhcmVudEJhY2tncm91bmQoYm9vbCB2YWx1ZSkgeyBtX3dlYlZpZXctPnNldFRyYW5zcGFyZW50
QmFja2dyb3VuZCh2YWx1ZSk7IH0KKyAgICB2b2lkIHNuYXBzaG90KFFJbWFnZSYgaW1hZ2UpIHsg
Z2xSZWFkUGl4ZWxzKDAsIDAsIDIwMCwgMjAwLCBHTF9CR1JBLCBHTF9VTlNJR05FRF9CWVRFLCBp
bWFnZS5iaXRzKCkpOyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoY29uc3Qg
UVJlY3QmKSB7IG1fd2ViVmlldy0+cGFpbnQoUU1hdHJpeDR4NCgpLCAxLCAwKTsgfQorICAgIHZp
cnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCB2aWV3UHJvY2Vzc0NyYXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmll
d1Byb2Nlc3NSZWxhdW5jaGVkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50U2l6
ZUNoYW5nZWQoY29uc3QgUVNpemUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3Rl
ZEN1cnNvck92ZXJyaWRlKGNvbnN0IFFDdXJzb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9u
ZVdpdGhLZXlFdmVudChjb25zdCBRS2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBib29s
IHdhc0hhbmRsZWQpIHsgfQorCisgICAgc3RhdGljIHZvaWQgZmluaXNoTG9hZEZvckZyYW1lKFdL
UGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOworCitzaWduYWxzOgorICAgIHZvaWQgbG9hZGVkKCk7CisKK3By
aXZhdGU6CisgICAgV2ViS2l0OjpXS1ZpZXcqIG1fd2ViVmlldzsKK307CisKK3ZvaWQgV2ViVmll
dzo6ZmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgV2ViVmll
dyogb2JqID0gc3RhdGljX2Nhc3Q8V2ViVmlldyo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudElu
Zm8pKTsKKyAgICBRVGltZXI6OnNpbmdsZVNob3QoMTAwLCBvYmosIFNJR05BTChsb2FkZWQoKSkp
OworfQorCitjbGFzcyB0c3RfcXRjYiA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVDVAor
cHJpdmF0ZSBzbG90czoKKyAgICB2b2lkIHBhaW50KCk7CisgICAgdm9pZCBub0JhY2tncm91bmQo
KTsKK307CisKK3ZvaWQgdHN0X3F0Y2I6OnBhaW50KCkKK3sKKyAgICBRV2luZG93IHdpbmRvdzsK
KyAgICB3aW5kb3cuc2V0U3VyZmFjZVR5cGUoUVN1cmZhY2U6Ok9wZW5HTFN1cmZhY2UpOworICAg
IHdpbmRvdy5zZXRHZW9tZXRyeSgwLCAwLCAyMDAsIDIwMCk7CisgICAgd2luZG93LmNyZWF0ZSgp
OworCisgICAgUU9wZW5HTENvbnRleHQgY29udGV4dDsKKyAgICBjb250ZXh0LmNyZWF0ZSgpOwor
ICAgIGNvbnRleHQubWFrZUN1cnJlbnQoJndpbmRvdyk7CisKKyAgICBXZWJWaWV3IHZpZXcod2lu
ZG93LnNpemUoKSk7CisgICAgdmlldy5sb2FkKFFVcmw6OmZyb21Mb2NhbEZpbGUoVEVTVFNfU09V
UkNFX0RJUiAiL2h0bWwvcmVkc3F1YXJlLmh0bWwiKS50b1N0cmluZygpKTsKKworICAgIFFJbWFn
ZSBpbWFnZSh3aW5kb3cuc2l6ZSgpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAgIHZpZXcu
c25hcHNob3QoaW1hZ2UpOworCisgICAgUVZFUklGWShRSW1hZ2UoVEVTVFNfU09VUkNFX0RJUiAi
L2h0bWwvcmVzb3VyY2VzL3F0Y2JfcGFpbnQucG5nIikgPT0gaW1hZ2UpOworfQorCit2b2lkIHRz
dF9xdGNiOjpub0JhY2tncm91bmQoKQoreworICAgIFFXaW5kb3cgd2luZG93OworICAgIHdpbmRv
dy5zZXRTdXJmYWNlVHlwZShRU3VyZmFjZTo6T3BlbkdMU3VyZmFjZSk7CisgICAgd2luZG93LnNl
dEdlb21ldHJ5KDAsIDAsIDIwMCwgMjAwKTsKKyAgICB3aW5kb3cuY3JlYXRlKCk7CisKKyAgICBR
T3BlbkdMQ29udGV4dCBjb250ZXh0OworICAgIGNvbnRleHQuY3JlYXRlKCk7CisgICAgY29udGV4
dC5tYWtlQ3VycmVudCgmd2luZG93KTsKKworICAgIFdlYlZpZXcgdmlldyh3aW5kb3cuc2l6ZSgp
KTsKKyAgICB2aWV3LnNldERyYXdCYWNrZ3JvdW5kKGZhbHNlKTsKKyAgICB2aWV3LmxvYWQoUVVy
bDo6ZnJvbUxvY2FsRmlsZShURVNUU19TT1VSQ0VfRElSICIvaHRtbC9yZWRzcXVhcmUuaHRtbCIp
LnRvU3RyaW5nKCkpOworICAgIHZpZXcubG9hZChRVXJsOjpmcm9tTG9jYWxGaWxlKFRFU1RTX1NP
VVJDRV9ESVIgIi9odG1sL2JsdWVzcXVhcmUuaHRtbCIpLnRvU3RyaW5nKCkpOworCisgICAgUUlt
YWdlIGltYWdlKHdpbmRvdy5zaXplKCksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CisgICAgdmll
dy5zbmFwc2hvdChpbWFnZSk7CisKKyAgICBRVkVSSUZZKFFJbWFnZShURVNUU19TT1VSQ0VfRElS
ICIvaHRtbC9yZXNvdXJjZXMvcXRjYl9ub0JhY2tncm91bmQucG5nIikgPT0gaW1hZ2UpOworfQor
CitRVEVTVF9NQUlOKHRzdF9xdGNiKQorCisjaW5jbHVkZSAidHN0X3F0Y2IubW9jIgpkaWZmIC0t
Z2l0IGEvU291cmNlL3Rlc3RzLnByaSBiL1NvdXJjZS90ZXN0cy5wcmkKaW5kZXggNWQyZWI2Yi4u
YzFjMTdkNSAxMDA2NDQKLS0tIGEvU291cmNlL3Rlc3RzLnByaQorKysgYi9Tb3VyY2UvdGVzdHMu
cHJpCkBAIC01MSw0ICs1MSw4IEBAIFNVQkRJUlMgKz0gXAogICAgICAgICAkJFdFQktJVDJfVEVT
VFNfRElSL3B1YmxpY2FwaSBcCiAgICAgICAgICQkV0VCS0lUMl9URVNUU19ESVIvcXF1aWNrd2Vi
dmlldyBcCiAgICAgICAgICQkV0VCS0lUMl9URVNUU19ESVIvcW1sdGVzdHMKKyAgICBjb250YWlu
cyhDT05GSUcsIHF0Y2IpIHsKKyAgICAgICAgU1VCRElSUyArPSBcCisgICAgICAgICAgICAkJFdF
QktJVDJfVEVTVFNfRElSL3F0Y2IKKyAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMjE0MzFkZC4uMzQxOTEzYSAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisy
MDEyLTA2LTA2ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tpYS5jb20+CisKKyAg
ICAgICAgW1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDUzMgorCisgICAgICAgIE1pbmlCcm93
c2VyX2NiIGlzIGFuIHVzYWdlIGV4YW1wbGUgZm9yIHRoZSBXS1ZpZXcgQVBJLiBJdCBpcyBvbmx5
IGFuIGV4YW1wbGUKKyAgICAgICAgYW5kIGlzIG5vdCBmdWxseSBpbXBsZW1lbnRlZC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2Vy
L3F0Y2IvRGVyaXZlZFNvdXJjZXMucHJpOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9x
dGNiL01pbmlCcm93c2VyX2NiLnBybzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXRj
Yi9UYXJnZXQucHJpOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdGNiL1ZpZXcuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKGNyZWF0ZVdlYkNvbnRleHQpOgorICAgICAgICAoY3JlYXRlV2Vi
UGFnZUdyb3VwKToKKyAgICAgICAgKFZpZXc6On5WaWV3KToKKyAgICAgICAgKFZpZXc6OlZpZXcp
OgorICAgICAgICAoVmlldzo6ZXhwb3NlRXZlbnQpOgorICAgICAgICAoVmlldzo6cmVzaXplRXZl
bnQpOgorICAgICAgICAoVmlldzo6dGltZXJFdmVudCk6CisgICAgICAgIChWaWV3Ojp2aWV3TmVl
ZHNEaXNwbGF5KToKKyAgICAgICAgKFZpZXc6OnZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZSk6
CisgICAgICAgIChWaWV3Ojpkb25lV2l0aEtleUV2ZW50KToKKyAgICAgICAgKG1haW4pOgorICAg
ICAgICAqIE1pbmlCcm93c2VyL3F0Y2IvVmlldy5oOiBBZGRlZC4KKyAgICAgICAgKFZpZXcpOgor
ICAgICAgICAoVmlldzo6dmlld1JlcXVlc3RlZFNjcm9sbCk6CisgICAgICAgIChWaWV3Ojp2aWV3
UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoVmlldzo6dmlld1Byb2Nlc3NSZWxhdW5jaGVkKToK
KyAgICAgICAgKFZpZXc6OnZpZXdDb250ZW50U2l6ZUNoYW5nZWQpOgorICAgICAgICAoVmlldzo6
ZG9uZVdpdGhUb3VjaEV2ZW50KToKKyAgICAgICAgKFZpZXc6OmtleVByZXNzRXZlbnQpOgorICAg
ICAgICAoVmlldzo6a2V5UmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFZpZXc6Om1vdXNlRG91Ymxl
Q2xpY2tFdmVudCk6CisgICAgICAgIChWaWV3Ojptb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChW
aWV3Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoVmlldzo6bW91c2VSZWxlYXNlRXZlbnQp
OgorICAgICAgICAqIFRvb2xzLnBybzoKKwogMjAxMi0wNi0wNCAgUnlvc3VrZSBOaXdhICA8cm5p
d2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBQeXRob24gdGVzdCBmaXggYXR0ZW1wdCBmb3IgQ2hy
b21pdW0gV2luZG93cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvRGVyaXZl
ZFNvdXJjZXMucHJpIGIvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9EZXJpdmVkU291cmNlcy5wcmkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM0ZDJmNAotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0wLDAg
KzEsNiBAQAorVEVNUExBVEUgPSBkZXJpdmVkCisKKyMgTWFrZSBzdXJlIGZvcndhcmRlZCBoZWFk
ZXJzIG5lZWRlZCBieSB0aGlzIHByb2plY3QgYXJlIHByZXNlbnQKK2Z3aGVhZGVyX2dlbmVyYXRv
ci5jb21tYW5kcyA9IHBlcmwgJCR7Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2UvV2ViS2l0Mi9TY3Jp
cHRzL2dlbmVyYXRlLWZvcndhcmRpbmctaGVhZGVycy5wbCAkJHtST09UX1dFQktJVF9ESVJ9L1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIgJCR7Uk9PVF9CVUlMRF9ESVJ9L1NvdXJjZS9pbmNsdWRlIHF0
Citmd2hlYWRlcl9nZW5lcmF0b3IuZGVwZW5kcyAgPSAkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJj
ZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsCitHRU5FUkFU
T1JTICs9IGZ3aGVhZGVyX2dlbmVyYXRvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
cXRjYi9NaW5pQnJvd3Nlcl9jYi5wcm8gYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL01pbmlCcm93
c2VyX2NiLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTAzMTA0Ci0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9jYi5w
cm8KQEAgLTAsMCArMSw5IEBACitURU1QTEFURSA9IHN1YmRpcnMKK0NPTkZJRyArPSBvcmRlcmVk
CisKK2Rlcml2ZWRfc291cmNlcy5maWxlID0gRGVyaXZlZFNvdXJjZXMucHJpCit0YXJnZXQuZmls
ZSA9IFRhcmdldC5wcmkKKworU1VCRElSUyA9IGRlcml2ZWRfc291cmNlcyB0YXJnZXQKKworYWRk
U3RyaWN0U3ViZGlyT3JkZXJCZXR3ZWVuKGRlcml2ZWRfc291cmNlcywgdGFyZ2V0KQpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9UYXJnZXQucHJpIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXRjYi9UYXJnZXQucHJpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0
NzczODAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1RhcmdldC5w
cmkKQEAgLTAsMCArMSwxNiBAQAorVEVNUExBVEUgPSBhcHAKK1RBUkdFVCA9IE1pbmlCcm93c2Vy
X2NiCisKK0hFQURFUlMgKz0gXAorICAgIFZpZXcuaAorCitTT1VSQ0VTICs9IFwKKyAgICBWaWV3
LmNwcAorCitERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2JpbgorCitRVCA9IGNvcmUgZ3Vp
IG5ldHdvcmsgd2Via2l0CisKK2xvYWQoZmVhdHVyZXMpCisKK1dFQktJVCArPSB3dGYgamF2YXNj
cmlwdGNvcmUgd2Via2l0MgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9WaWV3
LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvVmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMDhmM2RjNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlC
cm93c2VyL3F0Y2IvVmlldy5jcHAKQEAgLTAsMCArMSwxMzcgQEAKKy8qCisgICAgQ29weXJpZ2h0
IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQor
CisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w
eSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyov
CisKKyNpbmNsdWRlICJWaWV3LmgiCisKKyNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+CisjaW5j
bHVkZSA8UURlYnVnPgorCisjaW5jbHVkZSA8UUV4cG9zZUV2ZW50PgorI2luY2x1ZGUgPFFSZXNp
emVFdmVudD4KKyNpbmNsdWRlIDxRS2V5RXZlbnQ+CisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29u
dGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2
YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1N0cmluZ1F0Lmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS1VSTC5oPgorCisjaW5jbHVkZSA8UVVybD4KKyNpbmNsdWRlIDxRTWF0cml4NHg0PgorCitz
dGF0aWMgV0tDb250ZXh0UmVmIGNyZWF0ZVdlYkNvbnRleHQoKQoreworICAgIHJldHVybiBXS0Nv
bnRleHRDcmVhdGUoKTsKK30KKworc3RhdGljIFdLUGFnZUdyb3VwUmVmIGNyZWF0ZVdlYlBhZ2VH
cm91cChjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cCA9V0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ0NyZWF0ZVdpdGhRU3Ry
aW5nKG5hbWUpKTsKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzID0gV0tQYWdlR3Jv
dXBHZXRQcmVmZXJlbmNlcyhwYWdlR3JvdXApOworICAgIFdLUHJlZmVyZW5jZXNTZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJl
bmNlc1NldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICBXS1By
ZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisK
KyAgICByZXR1cm4gcGFnZUdyb3VwOworfQorCitWaWV3Ojp+VmlldygpCit7CisgICAgZGVsZXRl
IG1fY29udGV4dDsKK30KKworVmlldzo6Vmlldyhjb25zdCBjaGFyKiB1cmwpCisgICAgOiBtX3Vy
bCh1cmwpCisgICAgLCBtX2FjdGl2ZShmYWxzZSkKK3sKKyAgICBzZXRTdXJmYWNlVHlwZShPcGVu
R0xTdXJmYWNlKTsKKyAgICBzZXRHZW9tZXRyeSg1MCwgNTAsIDk4MCwgNjAwKTsKKyAgICBjcmVh
dGUoKTsKKworICAgIG1fY29udGV4dCA9IG5ldyBRT3BlbkdMQ29udGV4dDsKKyAgICBtX2NvbnRl
eHQtPmNyZWF0ZSgpOworCisgICAgbV93ZWJWaWV3ID0gV2ViS2l0OjpXS1ZpZXc6OmNyZWF0ZShj
cmVhdGVXZWJDb250ZXh0KCksIGNyZWF0ZVdlYlBhZ2VHcm91cChRU3RyaW5nKCkpLCB0aGlzKTsK
KyAgICBtX3dlYlZpZXctPmluaXRpYWxpemUoKTsKKyAgICBXS1BhZ2VTZXRVc2VGaXhlZExheW91
dChtX3dlYlZpZXctPnBhZ2VSZWYoKSwgdHJ1ZSk7Cit9CisKKwordm9pZCBWaWV3OjpleHBvc2VF
dmVudChRRXhwb3NlRXZlbnQqIGV2ZW50KQoreworICAgIGlmICghbV9hY3RpdmUpIHsKKyAgICAg
ICAgbV9hY3RpdmUgPSB0cnVlOworICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fd2ViVmlldy0+cGFn
ZVJlZigpLCBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhtX3VybC50b0FzY2lpKCkuZGF0YSgp
KSk7CisKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRGb2N1c2VkKHRydWUpOworICAgICAgICBtX3dl
YlZpZXctPnNldFZpc2libGUodHJ1ZSk7CisgICAgICAgIG1fd2ViVmlldy0+c2V0QWN0aXZlKHRy
dWUpOworICAgIH0KK30KKwordm9pZCBWaWV3OjpyZXNpemVFdmVudChRUmVzaXplRXZlbnQqIGV2
ZW50KQoreworICAgIG1fd2ViVmlldy0+c2V0U2l6ZShldmVudC0+c2l6ZSgpKTsKK30KKwordm9p
ZCBWaWV3Ojp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQt
PnRpbWVySWQoKSA9PSBtX3BhaW50VGltZXIudGltZXJJZCgpKSB7CisgICAgICAgIG1fcGFpbnRU
aW1lci5zdG9wKCk7CisgICAgICAgIG1fY29udGV4dC0+bWFrZUN1cnJlbnQodGhpcyk7CisgICAg
ICAgIG1fd2ViVmlldy0+cGFpbnQoUU1hdHJpeDR4NCgpLCAxLCAwKTsKKyAgICAgICAgbV9jb250
ZXh0LT5zd2FwQnVmZmVycyh0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlldzo6dmlld05lZWRz
RGlzcGxheShjb25zdCBRUmVjdCYpCit7CisgICAgaWYgKCFtX3BhaW50VGltZXIuaXNBY3RpdmUo
KSkKKyAgICAgICAgbV9wYWludFRpbWVyLnN0YXJ0KDAsIHRoaXMpOworfQorCit2b2lkIFZpZXc6
OnZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZShjb25zdCBRQ3Vyc29yJiBjdXJzb3IpCit7Cisg
ICAgUUd1aUFwcGxpY2F0aW9uOjpzZXRPdmVycmlkZUN1cnNvcihjdXJzb3IpOworfQorCit2b2lk
IFZpZXc6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgUUtleUV2ZW50KiBldmVudCwgYm9vbCB3YXNI
YW5kbGVkKQoreworICAgIGlmICh3YXNIYW5kbGVkIHx8IGV2ZW50LT5pc0FjY2VwdGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAoZXZlbnQtPmtleSgpKSB7CisgICAgY2FzZSBR
dDo6S2V5X0JhY2tzcGFjZTogeworICAgICAgICBXS1BhZ2VSZWYgcGFnZSA9IG1fd2ViVmlldy0+
cGFnZVJlZigpOworICAgICAgICBpZiAoV0tQYWdlQ2FuR29CYWNrKHBhZ2UpKQorICAgICAgICAg
ICAgV0tQYWdlR29CYWNrKHBhZ2UpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorfQor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgUUd1aUFwcGxpY2F0aW9u
IGEoYXJnYywgYXJndik7CisKKyAgICBWaWV3IHZpZXcoYXJnYyA+IDEgPyBhcmd2WzFdIDogImh0
dHA6Ly93d3cuZ29vZ2xlLmNvbSIpOworICAgIHZpZXcuc2hvdygpOworICAgIHJldHVybiBhLmV4
ZWMoKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvVmlldy5oIGIvVG9v
bHMvTWluaUJyb3dzZXIvcXRjYi9WaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZDYyNThlMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2Iv
Vmlldy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgVmll
d19oCisjZGVmaW5lIFZpZXdfaAorCisjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisjaW5jbHVkZSA8
UU9wZW5HTENvbnRleHQ+CisjaW5jbHVkZSA8UVdpbmRvdz4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
Vmlldy5oPgorCisKK2NsYXNzIFZpZXcgOiAgcHVibGljIFFXaW5kb3csIHByaXZhdGUgV2ViS2l0
OjpXS1ZpZXdDbGllbnQgeworcHVibGljOgorICAgIFZpZXcoY29uc3QgY2hhciogdXJsKTsKKyAg
ICB+VmlldygpOworCitwdWJsaWM6IC8vIFdLVmlld0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB2
aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1
ZXN0ZWRTY3JvbGwoY29uc3QgUVBvaW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9j
ZXNzQ3Jhc2hlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc1JlbGF1bmNoZWQo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld0NvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6
ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUoY29u
c3QgUUN1cnNvciYpOworICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IFFL
ZXlFdmVudCosIGJvb2wgd2FzSGFuZGxlZCk7CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91
Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgeyB9CisKK3Byb3Rl
Y3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgZXhwb3NlRXZlbnQoUUV4cG9zZUV2ZW50Kik7CisgICAg
dmlydHVhbCB2b2lkIHJlc2l6ZUV2ZW50KFFSZXNpemVFdmVudCopOworCisgICAgdmlydHVhbCB2
b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50KiBldmVudCkgeyBtX3dlYlZpZXctPmtleUV2ZW50
KGV2ZW50KTsgfQorICAgIHZpcnR1YWwgdm9pZCBrZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50KiBl
dmVudCkgeyBtX3dlYlZpZXctPmtleUV2ZW50KGV2ZW50KTsgfQorCisgICAgdmlydHVhbCB2b2lk
IG1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5t
b3VzZUV2ZW50KGV2ZW50LCAyKTsgfQorICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVFdmVudChR
TW91c2VFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5tb3VzZUV2ZW50KGV2ZW50KTsgfQorICAg
IHZpcnR1YWwgdm9pZCBtb3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2Vi
Vmlldy0+bW91c2VFdmVudChldmVudCwgMSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VSZWxl
YXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+bW91c2VFdmVudChldmVu
dCk7IH0KKworcHJpdmF0ZToKKyAgICBXZWJLaXQ6OldLVmlldyogbV93ZWJWaWV3OworICAgIFFP
cGVuR0xDb250ZXh0ICptX2NvbnRleHQ7CisgICAgUUJhc2ljVGltZXIgbV9wYWludFRpbWVyOwor
CisgICAgUVN0cmluZyBtX3VybDsKKyAgICBib29sIG1fYWN0aXZlOworCisgICAgdmlydHVhbCB2
b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKK307CisKKyNlbmRpZiAvLyBWaWV3X2gKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rvb2xzLnBybyBiL1Rvb2xzL1Rvb2xzLnBybwppbmRleCA2Yzk5N2My
Li4wMmZjNWUxIDEwMDY0NAotLS0gYS9Ub29scy9Ub29scy5wcm8KKysrIGIvVG9vbHMvVG9vbHMu
cHJvCkBAIC0xNiw2ICsxNiwxMSBAQCBTVUJESVJTICs9IER1bXBSZW5kZXJUcmVlL3F0L0ltYWdl
RGlmZi5wcm8KICFub193ZWJraXQyIHsKICAgICBTVUJESVJTICs9IE1pbmlCcm93c2VyL3F0L01p
bmlCcm93c2VyLnBybyBcCiAgICAgICAgICAgICAgICBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRl
c3RSdW5uZXIucHJvCisKK2NvbnRhaW5zKENPTkZJRywgcXRjYikgeworICAgIFNVQkRJUlMgKz0g
TWluaUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9jYi5wcm8KK30KKwogfQogCiAjIEZJWE1FOiB3
aXRoIFF0IDUgdGhlIHRlc3QgcGx1Z2luIGNhdXNlIHNvbWUgdHJvdWJsZSBkdXJpbmcgbGF5b3V0
IHRlc3RzLgotLSAKMS43LjkuNQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146393</attachid>
            <date>2012-06-07 14:59:33 -0700</date>
            <delta_ts>2012-06-08 10:29:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-WK2-Private-non-QtQuick-API.patch</filename>
            <type>text/plain</type>
            <size>54685</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAyY2I1ZTgxZDgxMzkyMzhiYzcyNzdhNmFmZDY2Y2I5MzEyY2VlYjVkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogV2VkLCA2IEp1biAyMDEyIDAwOjM3OjEwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzIKCi46CgpBUEkgdGVzdHMgZm9yIFdLVmlldy4KClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBTb3VyY2UvdGVzdHMucHJpOgoKU291cmNlL1dlYktp
dDI6CgpBZGRpbmcgbmV3IHByaXZhdGUgbm9uLVF0UXVpY2sgQVBJLgoKVGhpcyBpcyBub3QgcHVi
bGljIEFQSS4gSXQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZQppbiBmdXR1
cmUgYW5kIHdlIG1ha2Ugbm8gY29tbWl0bWVudCByZWdhcmRpbmcgc291cmNlIGNvbXBhdGliaWxp
dHkKb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkuCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CihXS1By
ZWZlcmVuY2VzU2V0Rm9yY2VDb21wb3NpdGluZ01vZGUpOgooV0tQcmVmZXJlbmNlc0dldEZvcmNl
Q29tcG9zaXRpbmdNb2RlKToKKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aDoKKiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXcuaDogQWRkZWQuCihXZWJLaXQpOgooV0tW
aWV3Q2xpZW50KToKKiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmNwcDogQWRkZWQu
CihXZWJLaXQpOgooV2ViS2l0OjpXS1ZpZXc6OmNyZWF0ZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6
OldLVmlld0ltcGwpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp+V0tWaWV3SW1wbCk6CihXZWJLaXQ6
OldLVmlld0ltcGw6OnNldEN1cnNvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNyZWF0ZURyYXdp
bmdBcmVhUHJveHkpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRGb2N1c2VkKToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6c2V0VmlzaWJsZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEFjdGl2ZSk6
CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldFNpemUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpwYWlu
dCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmtleUV2ZW50KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
bW91c2VFdmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OndoZWVsRXZlbnQpOgooV2ViS2l0OjpX
S1ZpZXdJbXBsOjp0b3VjaEV2ZW50KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZG9uZVdpdGhLZXlF
dmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRvbmVXaXRoVG91Y2hFdmVudCk6CiogVUlQcm9j
ZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oOiBBZGRlZC4KKFdlYktpdCk6CihXS1ZpZXdJbXBs
KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6cGFnZUNsb3NlZCk6CihXZWJLaXQ6OldLVmlld0ltcGw6
OnNldEZpbmRJbmRpY2F0b3IpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRDb21taXRMb2FkRm9y
TWFpbkZyYW1lKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21SZXByZXNlbnRhdGlvbik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmN1c3RvbVJlcHJlc2Vu
dGF0aW9uWm9vbUZhY3Rvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEN1c3RvbVJlcHJlc2Vu
dGF0aW9uWm9vbUZhY3Rvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5nZVNjcm9sbGJh
cnNGb3JNYWluRnJhbWUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpmaW5kU3RyaW5nSW5DdXN0b21S
ZXByZXNlbnRhdGlvbik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0lu
Q3VzdG9tUmVwcmVzZW50YXRpb24pOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRSZWNlaXZlTWVz
c2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5n
ZVZpZXdwb3J0UHJvcGVydGllcyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmhhbmRsZURvd25sb2Fk
UmVxdWVzdCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmhhbmRsZUF1dGhlbnRpY2F0aW9uUmVxdWly
ZWRSZXF1ZXN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlQ2VydGlmaWNhdGVWZXJpZmlj
YXRpb25SZXF1ZXN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlUHJveHlBdXRoZW50aWNh
dGlvblJlcXVpcmVkUmVxdWVzdCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnJlZ2lzdGVyRWRpdENv
bW1hbmQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpjbGVhckFsbEVkaXRDb21tYW5kcyk6CihXZWJL
aXQ6OldLVmlld0ltcGw6OmNhblVuZG9SZWRvKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZXhlY3V0
ZVVuZG9SZWRvKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgoo
V2ViS2l0OjpXS1ZpZXdJbXBsOjpjb252ZXJ0VG9Vc2VyU3BhY2UpOgooV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpzY3JlZW5Ub1dpbmRvdyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OndpbmRvd1RvU2NyZWVu
KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6
CihXZWJLaXQ6OldLVmlld0ltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CihX
ZWJLaXQ6OldLVmlld0ltcGw6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKFdl
YktpdDo6V0tWaWV3SW1wbDo6dXBkYXRlVGV4dElucHV0U3RhdGUpOgooV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpkb25lV2l0aEdlc3R1cmVFdmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpc3BsYXlW
aWV3KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c2Nyb2xsVmlldyk6CihXZWJLaXQ6OldLVmlld0lt
cGw6OmZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZEZp
bmRab29tYWJsZUFyZWEpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp0b29sVGlwQ2hhbmdlZCk6CihXZWJL
aXQ6OldLVmlld0ltcGw6OnN0YXJ0RHJhZyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNyZWF0ZVBv
cHVwTWVudVByb3h5KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94
eSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6cHJvY2Vzc0RpZENyYXNoKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkUmVs
YXVuY2hQcm9jZXNzKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheSk6
CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CihXZWJLaXQ6OldL
Vmlld0ltcGw6OmlzVmlld0ZvY3VzZWQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdWaXNp
YmxlKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6aXNWaWV3SW5XaW5kb3cpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp2aWV3U2l6
ZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmluaXRpYWxpemUpOgooV2ViS2l0OjpXS1ZpZXdJbXBs
Ojppc0ZvY3VzZWQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1Zpc2libGUpOgooV2ViS2l0OjpX
S1ZpZXdJbXBsOjppc0FjdGl2ZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNpemUpOgooV2ViS2l0
OjpXS1ZpZXdJbXBsOjpzZXRUcmFuc3BhcmVudEJhY2tncm91bmQpOgooV2ViS2l0OjpXS1ZpZXdJ
bXBsOjp0cmFuc3BhcmVudEJhY2tncm91bmQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXREcmF3
QmFja2dyb3VuZCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRyYXdCYWNrZ3JvdW5kKToKKFdlYktp
dDo6V0tWaWV3SW1wbDo6cGFnZVJlZik6CiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2Js
dWVzcXVhcmUuaHRtbDogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3JlZHNx
dWFyZS5odG1sOiBBZGRlZC4KKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2Vz
L3F0Y2Jfbm9CYWNrZ3JvdW5kLnBuZzogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9o
dG1sL3Jlc291cmNlcy9xdGNiX3BhaW50LnBuZzogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9xdGNiL3F0Y2IucHJvOiBBZGRlZC4KKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2Iv
dHN0X3F0Y2IuY3BwOiBBZGRlZC4KKHdlYkNvbnRleHQpOgooY3JlYXRlV2ViUGFnZUdyb3VwKToK
KHdlYlBhZ2VHcm91cCk6CihXZWJWaWV3KToKKFdlYlZpZXc6OldlYlZpZXcpOgooV2ViVmlldzo6
bG9hZCk6CihXZWJWaWV3OjpzZXREcmF3QmFja2dyb3VuZCk6CihXZWJWaWV3OjpzZXRUcmFuc3Bh
cmVudEJhY2tncm91bmQpOgooV2ViVmlldzo6c25hcHNob3QpOgooV2ViVmlldzo6dmlld05lZWRz
RGlzcGxheSk6CihXZWJWaWV3Ojp2aWV3UmVxdWVzdGVkU2Nyb2xsKToKKFdlYlZpZXc6OnZpZXdQ
cm9jZXNzQ3Jhc2hlZCk6CihXZWJWaWV3Ojp2aWV3UHJvY2Vzc1JlbGF1bmNoZWQpOgooV2ViVmll
dzo6dmlld0NvbnRlbnRTaXplQ2hhbmdlZCk6CihXZWJWaWV3Ojp2aWV3UmVxdWVzdGVkQ3Vyc29y
T3ZlcnJpZGUpOgooV2ViVmlldzo6ZG9uZVdpdGhLZXlFdmVudCk6CihXZWJWaWV3Ojpkb25lV2l0
aFRvdWNoRXZlbnQpOgooV2ViVmlldzo6ZmluaXNoTG9hZEZvckZyYW1lKToKKGNvbXBhcmVJbWFn
ZXMpOgoodHN0X3F0Y2IpOgoodHN0X3F0Y2I6OnRzdF9xdGNiKToKKHRzdF9xdGNiOjpwYWludCk6
Cih0c3RfcXRjYjo6bm9CYWNrZ3JvdW5kMSk6Cih0c3RfcXRjYjo6bm9CYWNrZ3JvdW5kMik6Cih0
c3RfcXRjYjo6ZG9QYWludCk6Cih0c3RfcXRjYjo6ZG9Ob0JhY2tncm91bmQxKToKKHRzdF9xdGNi
Ojpkb05vQmFja2dyb3VuZDIpOgoodHN0X3F0Y2I6OnJ1bik6CgpUb29sczoKCk1pbmlCcm93c2Vy
X2NiIGlzIGFuIHVzYWdlIGV4YW1wbGUgZm9yIHRoZSBXS1ZpZXcgQVBJLiBJdCBpcyBvbmx5IGFu
IGV4YW1wbGUKYW5kIGlzIG5vdCBmdWxseSBpbXBsZW1lbnRlZC4KClJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKKiBNaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaTogQWRkZWQu
CiogTWluaUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9jYi5wcm86IEFkZGVkLgoqIE1pbmlCcm93
c2VyL3F0Y2IvVGFyZ2V0LnByaTogQWRkZWQuCiogTWluaUJyb3dzZXIvcXRjYi9WaWV3LmNwcDog
QWRkZWQuCihjcmVhdGVXZWJDb250ZXh0KToKKGNyZWF0ZVdlYlBhZ2VHcm91cCk6CihWaWV3Ojp+
Vmlldyk6CihWaWV3OjpWaWV3KToKKFZpZXc6OmV4cG9zZUV2ZW50KToKKFZpZXc6OnJlc2l6ZUV2
ZW50KToKKFZpZXc6OnRpbWVyRXZlbnQpOgooVmlldzo6dmlld05lZWRzRGlzcGxheSk6CihWaWV3
Ojp2aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUpOgooVmlldzo6ZG9uZVdpdGhLZXlFdmVudCk6
CihtYWluKToKKiBNaW5pQnJvd3Nlci9xdGNiL1ZpZXcuaDogQWRkZWQuCihWaWV3KToKKFZpZXc6
OnZpZXdSZXF1ZXN0ZWRTY3JvbGwpOgooVmlldzo6dmlld1Byb2Nlc3NDcmFzaGVkKToKKFZpZXc6
OnZpZXdQcm9jZXNzUmVsYXVuY2hlZCk6CihWaWV3Ojp2aWV3Q29udGVudFNpemVDaGFuZ2VkKToK
KFZpZXc6OmRvbmVXaXRoVG91Y2hFdmVudCk6CihWaWV3OjprZXlQcmVzc0V2ZW50KToKKFZpZXc6
OmtleVJlbGVhc2VFdmVudCk6CihWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgooVmlldzo6
bW91c2VNb3ZlRXZlbnQpOgooVmlldzo6bW91c2VQcmVzc0V2ZW50KToKKFZpZXc6Om1vdXNlUmVs
ZWFzZUV2ZW50KToKKiBUb29scy5wcm86Ci0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzNCArKysrKysrKysrKysKIFNvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArCiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAgICB8ICAgMTAgKwog
Li4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggfCAgICA0
ICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlldy5oICAgICAgIHwg
IDEwMSArKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmll
d0ltcGwuY3BwIHwgIDE1NiArKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oICAgfCAgMTYzICsrKysrKysrKysrKysrKwogLi4uL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9ibHVlc3F1YXJlLmh0bWwgICAgfCAgICA1ICsKIC4u
Li9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVkc3F1YXJlLmh0bWwgICAgIHwgICAgNSAr
CiAuLi4vcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9ub0JhY2tncm91bmQucG5nICB8ICBC
aW4gMCAtPiA2OTYgYnl0ZXMKIC4uLi9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9w
YWludC5wbmcgICAgIHwgIEJpbiAwIC0+IDY2NyBieXRlcwogLi4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xdGNiL3F0Y2IucHJvICAgfCAgICAzICsKIC4uLi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3F0Y2IvdHN0X3F0Y2IuY3BwICAgICAgIHwgIDIxOCArKysrKysrKysrKysrKysr
KysrKwogU291cmNlL3Rlc3RzLnByaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICA0ICsKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA0MCArKysrCiBUb29scy9NaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnBy
aSAgICAgICAgICB8ICAgIDYgKwogVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9j
Yi5wcm8gICAgICAgICAgfCAgICA5ICsKIFRvb2xzL01pbmlCcm93c2VyL3F0Y2IvVGFyZ2V0LnBy
aSAgICAgICAgICAgICAgICAgIHwgICAxNiArKwogVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9WaWV3
LmNwcCAgICAgICAgICAgICAgICAgICAgfCAgMTM4ICsrKysrKysrKysrKysKIFRvb2xzL01pbmlC
cm93c2VyL3F0Y2IvVmlldy5oICAgICAgICAgICAgICAgICAgICAgIHwgICA2NyArKysrKysKIFRv
b2xzL1Rvb2xzLnBybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSAr
CiAyMiBmaWxlcyBjaGFuZ2VkLCAxMTAzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXcuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlld0ltcGwu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAv
cXQvV0tWaWV3SW1wbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRt
bAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9ub0JhY2tncm91bmQucG5nCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9x
dGNiX3BhaW50LnBuZwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcXRjYi9xdGNiLnBybwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRjYi90c3RfcXRjYi5jcHAKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2IucHJv
CiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9UYXJnZXQucHJpCiBj
cmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9WaWV3LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F0Y2IvVmlldy5oCgpkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDRhNDg3ZDUuLjI4MjRjYWEgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNi0wNiAg
THVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1b
V0syXSBQcml2YXRlIG5vbi1RdFF1aWNrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzIKKworICAgICAgICBBUEkgdGVzdHMgZm9yIFdLVmll
dy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNv
dXJjZS90ZXN0cy5wcmk6CisKIDIwMTItMDYtMDQgIEh1Z28gUGFyZW50ZSBMaW1hICA8aHVnby5s
aW1hQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgVHVybiBMRUdBQ1lfVklFV1BPUlRfQURBUFRJ
T04gVVNFIGZsYWcgaW50byBhbiBFTkFCTEUgZmxhZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MTM4ZjEwLi5j
NzNjZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM3IEBACisyMDEyLTA2LTA2ICBMdWl6IEFn
b3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIFBy
aXZhdGUgbm9uLVF0UXVpY2sgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NDUzMgorCisgICAgICAgIEFkZGluZyBuZXcgcHJpdmF0ZSBub24tUXRR
dWljayBBUEkuCisKKyAgICAgICAgVGhpcyBpcyBub3QgcHVibGljIEFQSS4gSXQgbWF5IGNoYW5n
ZSB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZQorICAgICAgICBpbiBmdXR1cmUgYW5kIHdlIG1h
a2Ugbm8gY29tbWl0bWVudCByZWdhcmRpbmcgc291cmNlIGNvbXBhdGliaWxpdHkKKyAgICAgICAg
b3IgYmluYXJ5IGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBv
c2l0aW5nTW9kZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0Rm9yY2VDb21wb3NpdGluZ01v
ZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlldy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXS1ZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvY3BwL3F0L1dLVmlld0ltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldLVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6V0tWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6On5XS1ZpZXdJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Q3Vyc29yKToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldLVmlld0ltcGw6OnNldEZvY3VzZWQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBs
OjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0QWN0aXZlKToK
KyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldLVmlld0ltcGw6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6a2V5RXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjptb3VzZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V0tWaWV3SW1wbDo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldLVmll
d0ltcGw6OnRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkb25lV2l0
aEtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZG9uZVdpdGhUb3VjaEV2
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdLVmlld0ltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXS1ZpZXdJbXBsOjpwYWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6c2V0RmluZEluZGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENv
bW1pdExvYWRGb3JNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRG
aW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V0tWaWV3SW1wbDo6Y3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToKKyAgICAgICAg
KFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5G
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmZpbmRTdHJpbmdJbkN1c3RvbVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Y291bnRTdHJpbmdN
YXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0lt
cGw6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlQXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlv
blJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpoYW5kbGVQcm94eUF1dGhl
bnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6
cmVnaXN0ZXJFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmNsZWFy
QWxsRWRpdENvbW1hbmRzKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Y2FuVW5kb1Jl
ZG8pOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpleGVjdXRlVW5kb1JlZG8pOgorICAg
ICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpjb252ZXJ0VG9EZXZpY2VTcGFjZSk6CisgICAgICAg
IChXZWJLaXQ6OldLVmlld0ltcGw6OmNvbnZlcnRUb1VzZXJTcGFjZSk6CisgICAgICAgIChXZWJL
aXQ6OldLVmlld0ltcGw6OnNjcmVlblRvV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3
SW1wbDo6d2luZG93VG9TY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjplbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXS1ZpZXdJbXBsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldLVmlld0ltcGw6OmRvbmVXaXRoR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6ZGlzcGxheVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzY3Jv
bGxWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVV
cGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkRmluZFpvb21hYmxlQXJl
YSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNldEN1cnNvckhpZGRlblVudGlsTW91
c2VNb3Zlcyk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnRvb2xUaXBDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYktp
dDo6V0tWaWV3SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
S1ZpZXdJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRS
ZWxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRWaWV3TmVl
ZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdlQ29udGVu
dHNTaXplKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6aXNWaWV3Rm9jdXNlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmlzVmlld1Zpc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpX
S1ZpZXdJbXBsOjppc1ZpZXdJbldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6
OnZpZXdTaXplKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmlzRm9jdXNlZCk6CisgICAgICAgIChXZWJLaXQ6
OldLVmlld0ltcGw6OmlzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6Omlz
QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldLVmlld0ltcGw6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OldLVmlld0ltcGw6OnRyYW5zcGFyZW50QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJL
aXQ6OldLVmlld0ltcGw6OnNldERyYXdCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6ZHJhd0JhY2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpw
YWdlUmVmKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvYmx1ZXNxdWFy
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVk
c3F1YXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRt
bC9yZXNvdXJjZXMvcXRjYl9ub0JhY2tncm91bmQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F0Y2JfcGFpbnQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2IvcXRjYi5wcm86IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRjYi90c3RfcXRjYi5jcHA6IEFkZGVk
LgorICAgICAgICAod2ViQ29udGV4dCk6CisgICAgICAgIChjcmVhdGVXZWJQYWdlR3JvdXApOgor
ICAgICAgICAod2ViUGFnZUdyb3VwKToKKyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAoV2Vi
Vmlldzo6V2ViVmlldyk6CisgICAgICAgIChXZWJWaWV3Ojpsb2FkKToKKyAgICAgICAgKFdlYlZp
ZXc6OnNldERyYXdCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYlZpZXc6OnNldFRyYW5zcGFyZW50
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJWaWV3OjpzbmFwc2hvdCk6CisgICAgICAgIChXZWJW
aWV3Ojp2aWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYlZpZXc6OnZpZXdSZXF1ZXN0ZWRT
Y3JvbGwpOgorICAgICAgICAoV2ViVmlldzo6dmlld1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAg
KFdlYlZpZXc6OnZpZXdQcm9jZXNzUmVsYXVuY2hlZCk6CisgICAgICAgIChXZWJWaWV3Ojp2aWV3
Q29udGVudFNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZXc6OnZpZXdSZXF1ZXN0ZWRDdXJz
b3JPdmVycmlkZSk6CisgICAgICAgIChXZWJWaWV3Ojpkb25lV2l0aEtleUV2ZW50KToKKyAgICAg
ICAgKFdlYlZpZXc6OmRvbmVXaXRoVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpmaW5p
c2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoY29tcGFyZUltYWdlcyk6CisgICAgICAgICh0c3Rf
cXRjYik6CisgICAgICAgICh0c3RfcXRjYjo6dHN0X3F0Y2IpOgorICAgICAgICAodHN0X3F0Y2I6
OnBhaW50KToKKyAgICAgICAgKHRzdF9xdGNiOjpub0JhY2tncm91bmQxKToKKyAgICAgICAgKHRz
dF9xdGNiOjpub0JhY2tncm91bmQyKToKKyAgICAgICAgKHRzdF9xdGNiOjpkb1BhaW50KToKKyAg
ICAgICAgKHRzdF9xdGNiOjpkb05vQmFja2dyb3VuZDEpOgorICAgICAgICAodHN0X3F0Y2I6OmRv
Tm9CYWNrZ3JvdW5kMik6CisgICAgICAgICh0c3RfcXRjYjo6cnVuKToKKwogMjAxMi0wNi0wNCAg
U2FkcnVsIEhhYmliIENob3dkaHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBGaXggc29mdHdhcmUgcmVuZGVyaW5nIGZvciBkZXZpY2Utc2NhbGUtZmFjdG9y
ID4gMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkKaW5kZXggMjE2YWI1Yi4uYjM1NzU0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03
OTUsNiArNzk1LDE0IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9UT1VDSF9FVkVOVFM9MSkg
ewogICAgICAgICBTaGFyZWQvcXQvTmF0aXZlV2ViVG91Y2hFdmVudFF0LmNwcAogfQogCitjb250
YWlucyhDT05GSUcsIHF0Y2IpIHsKKyAgICBIRUFERVJTICs9IFwKKyAgICAgICAgVUlQcm9jZXNz
L0FQSS9jcHAvcXQvV0tWaWV3LmggXAorICAgICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1Zp
ZXdJbXBsLmgKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgVUlQcm9jZXNzL0FQSS9jcHAvcXQv
V0tWaWV3SW1wbC5jcHAKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dFT0xPQ0FUSU9O
PTEpOiBRVCArPSBsb2NhdGlvbgogCiBwbHVnaW5fYmFja2VuZF94bGliIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCA5ZmU4ZDZh
Li42ZDAzZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
cmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXMuY3BwCkBAIC0zODgsNiArMzg4LDE2IEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
CiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkKCk7CiB9CiAKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZmxhZykKK3sKKyAgICB0
b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShmbGFnKTsKK30K
KworYm9vbCBXS1ByZWZlcmVuY2VzR2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+Zm9yY2VDb21wb3NpdGluZ01vZGUoKTsKK30KKwogdm9pZCBXS1ByZWZlcmVuY2VzU2V0Q29t
cG9zaXRpbmdCb3JkZXJzVmlzaWJsZShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIGZsYWcpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Q29tcG9zaXRpbmdC
b3JkZXJzVmlzaWJsZShmbGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggNmRiYzQ3My4uMjM4MmE3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmgKQEAgLTc2LDYgKzc2LDEwIEBAIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmLCBiCiBXS19F
WFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZik7CiAKIC8vIERlZmF1bHRzIHRvIGZhbHNlLgorV0tfRVhQT1JUIHZv
aWQgV0tQcmVmZXJlbmNlc1NldEZvcmNlQ29tcG9zaXRpbmdNb2RlKFdLUHJlZmVyZW5jZXNSZWYs
IGJvb2wpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKFdLUHJlZmVyZW5jZXNSZWYpOworCisvLyBEZWZhdWx0cyB0byBmYWxzZS4KIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKFdLUHJlZmVy
ZW5jZXNSZWYsIGJvb2wpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldENvbXBvc2l0
aW5nQm9yZGVyc1Zpc2libGUoV0tQcmVmZXJlbmNlc1JlZik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMGJkZjc2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvY3BwL3F0L1dLVmlldy5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisvKgorICAgIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgcHVibGljIFF0IEFw
aS4gSXQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZSBpbiBmdXR1cmUuCisg
ICAgV2UgbWFrZSBubyBjb21taXRtZW50IHJlZ2FyZGluZyBzb3VyY2UgY29tcGF0aWJpbGl0eSBv
ciBiaW5hcnkgY29tcGF0aWJpbGl0eS4KKyovCisKKyNpZm5kZWYgV0tWaWV3X2gKKyNkZWZpbmUg
V0tWaWV3X2gKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNsdWRlIDxXZWJLaXQy
L1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1BhZ2VHcm91cC5oPgorCitjbGFzcyBRUmVjdDsKK2NsYXNzIFFSZWN0RjsKK2NsYXNz
IFFQb2ludDsKK2NsYXNzIFFTaXplOworY2xhc3MgUUtleUV2ZW50OworY2xhc3MgUU1vdXNlRXZl
bnQ7CitjbGFzcyBRV2hlZWxFdmVudDsKK2NsYXNzIFFUb3VjaEV2ZW50OworY2xhc3MgUVVybDsK
K2NsYXNzIFFNYXRyaXg0eDQ7CitjbGFzcyBRQ3Vyc29yOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV0tWaWV3OworCitjbGFzcyBXS1ZpZXdDbGllbnQgeworcHVibGljOgorICAgIHZp
cnR1YWwgfldLVmlld0NsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHZpZXdOZWVkc0Rp
c3BsYXkoY29uc3QgUVJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRT
Y3JvbGwoY29uc3QgUVBvaW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc0Ny
YXNoZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld0NvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6ZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNvbnN0
IFFDdXJzb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3Qg
UUtleUV2ZW50KiwgYm9vbCB3YXNIYW5kbGVkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRvbmVX
aXRoVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgPSAwOwor
fTsKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgV0tWaWV3IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5XS1ZpZXcoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgUVNpemUmKSA9IDA7CisgICAgdmlydHVhbCBR
U2l6ZSBzaXplKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmlz
aWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCB0cmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RHJhd0JhY2tncm91bmQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3QmFja2dy
b3VuZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludChjb25zdCBRTWF0cml4
NHg0JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIHBhaW50RmxhZ3MpID0gMDsK
KworICAgIHZpcnR1YWwgV0tQYWdlUmVmIHBhZ2VSZWYoKSA9IDA7CisKKyAgICBzdGF0aWMgV0tW
aWV3KiBjcmVhdGUoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiwgV0tWaWV3Q2xpZW50Kik7
CisKKyAgICB2aXJ0dWFsIHZvaWQga2V5RXZlbnQoUUtleUV2ZW50KikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBtb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiwgaW50IGNsaWNrQ291bnQgPSAwKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKSA9IDA7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBXS1ZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9j
cHAvcXQvV0tWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9x
dC9XS1ZpZXdJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWRk
ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAv
cXQvV0tWaWV3SW1wbC5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1ZpZXdJbXBsLmgiCisKKyNpbmNsdWRl
ICJDdXJzb3IuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgorI2luY2x1ZGUg
IkxheWVyVHJlZUhvc3RQcm94eS5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQu
aCIKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2Vi
VG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCIKKyNpbmNs
dWRlICJXZWJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgorCisjaW5j
bHVkZSA8UVRyYW5zZm9ybT4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVmlldy5oPgorCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXS1ZpZXcqIFdLVmlldzo6Y3JlYXRlKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLVmlld0NsaWVudCogY2xpZW50
KQoreworICAgIGlmICghY29udGV4dFJlZiB8fCAhcGFnZUdyb3VwUmVmKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbmV3IFdLVmlld0ltcGwodG9JbXBsKGNvbnRleHRSZWYpLCB0b0lt
cGwocGFnZUdyb3VwUmVmKSwgY2xpZW50KTsKK30KKworV0tWaWV3SW1wbDo6V0tWaWV3SW1wbChX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV0tWaWV3Q2xpZW50
KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3dlYlBhZ2VQcm94eShj
b250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHBhZ2VHcm91cCkpCit7Cit9CisKK1dLVmlld0lt
cGw6On5XS1ZpZXdJbXBsKCkKK3sKK30KKwordm9pZCBXS1ZpZXdJbXBsOjpzZXRDdXJzb3IoY29u
c3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCit7CisgICAgbV9jbGllbnQtPnZpZXdSZXF1ZXN0
ZWRDdXJzb3JPdmVycmlkZSgqY3Vyc29yLnBsYXRmb3JtQ3Vyc29yKCkpOworfQorCitQYXNzT3du
UHRyPERyYXdpbmdBcmVhUHJveHk+IFdLVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHko
KQoreworICAgIHJldHVybiBEcmF3aW5nQXJlYVByb3h5SW1wbDo6Y3JlYXRlKG1fd2ViUGFnZVBy
b3h5LmdldCgpKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNl
ZCkKK3sKKyAgICBtX2ZvY3VzZWQgPSBmb2N1c2VkOworICAgIG1fd2ViUGFnZVByb3h5LT52aWV3
U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkKTsKK30KKwordm9pZCBX
S1ZpZXdJbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBtX3Zpc2libGUgPSB2
aXNpYmxlOworICAgIG1fd2ViUGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVBy
b3h5OjpWaWV3SXNWaXNpYmxlKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjpzZXRBY3RpdmUoYm9v
bCBhY3RpdmUpCit7CisgICAgbV9hY3RpdmUgPSBhY3RpdmU7CisgICAgbV93ZWJQYWdlUHJveHkt
PnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9
CisKK3ZvaWQgV0tWaWV3SW1wbDo6c2V0U2l6ZShjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBt
X3NpemUgPSBzaXplOworICAgIG1fd2ViUGFnZVByb3h5LT5zZXRWaWV3cG9ydFNpemUoc2l6ZSk7
CisKKworICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHkt
PmRyYXdpbmdBcmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOwor
CisKKyAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShtX3NpemUsIFdlYkNvcmU6OkludFNpemUoKSk7
CisgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVj
dChXZWJDb3JlOjpJbnRQb2ludCgpLCBtX3NpemUpLCAxLCBXZWJDb3JlOjpGbG9hdFBvaW50KCkp
OworfQorCit2b2lkIFdLVmlld0ltcGw6OnBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9y
bSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgcGFpbnRGbGFncykKK3sKKyAgICBEcmF3aW5nQXJl
YVByb3h5KiBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAg
IGlmICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybjsKKworICAgIExheWVyVHJlZUhvc3RQ
cm94eSogbGF5ZXJUcmVlSG9zdFByb3h5ID0gZHJhd2luZ0FyZWEtPmxheWVyVHJlZUhvc3RQcm94
eSgpOworICAgIGlmICghbGF5ZXJUcmVlSG9zdFByb3h5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJMYXllclRyZWVSZW5kZXJlciogcmVuZGVyZXIgPSBsYXllclRyZWVIb3N0UHJveHktPmxh
eWVyVHJlZVJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcmVuZGVyZXItPnNldEFjdGl2ZSh0cnVlKTsKKyAgICByZW5kZXJlci0+c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChXZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIG1fc2l6
ZSksIDEsIFdlYkNvcmU6OkZsb2F0UG9pbnQoKSk7CisgICAgcmVuZGVyZXItPnN5bmNSZW1vdGVD
b250ZW50KCk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgwLCAwLCBtX3NpemUud2lk
dGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKworICAgIHJlbmRlcmVyLT5wYWludFRvQ3VycmVudEdM
Q29udGV4dCh0cmFuc2Zvcm0sIG9wYWNpdHksIHJlY3QsIHBhaW50RmxhZ3MpOworfQorCit2b2lk
IFdLVmlld0ltcGw6OmtleUV2ZW50KFFLZXlFdmVudCogZXZlbnQpCit7CisgICAgbV93ZWJQYWdl
UHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCkp
OworfQorCit2b2lkIFdLVmlld0ltcGw6Om1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBp
bnQgY2xpY2tDb3VudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChO
YXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LCBRVHJhbnNmb3JtKCksIGNsaWNrQ291bnQpKTsKK30K
Kwordm9pZCBXS1ZpZXdJbXBsOjp3aGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBldmVudCkKK3sKKyAg
ICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2
ZW50LCBRVHJhbnNmb3JtKCkpKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjp0b3VjaEV2ZW50KFFU
b3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVu
dChOYXRpdmVXZWJUb3VjaEV2ZW50KGV2ZW50LCBRVHJhbnNmb3JtKCkpKTsKK30KKwordm9pZCBX
S1ZpZXdJbXBsOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
IGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBtX2NsaWVudC0+ZG9uZVdpdGhL
ZXlFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCB3YXNFdmVudEhhbmRsZWQpOworfQorCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgV0tWaWV3SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50
KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkK
K3sKKyAgICBtX2NsaWVudC0+ZG9uZVdpdGhUb3VjaEV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCks
IHdhc0V2ZW50SGFuZGxlZCk7Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjhmNmZkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmgKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKy8qCisgICAgVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJs
aWMgUXQgQXBpLiBJdCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlIGF0IGFueSB0aW1lIGluIGZ1
dHVyZS4KKyAgICBXZSBtYWtlIG5vIGNvbW1pdG1lbnQgcmVnYXJkaW5nIHNvdXJjZSBjb21wYXRp
YmlsaXR5IG9yIGJpbmFyeSBjb21wYXRpYmlsaXR5LgorKi8KKworI2lmbmRlZiBXS1ZpZXdJbXBs
X2gKKyNkZWZpbmUgV0tWaWV3SW1wbF9oCisKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5j
bHVkZSAiV0tWaWV3LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1
ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKKyNpbmNsdWRlIDxRVXJsPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV0tWaWV3SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50ICwgcHVibGlj
IFdLVmlldyB7CitwdWJsaWM6CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNh
dG9yPiwgYm9vbCBmYWRlT3V0LCBib29sIGFuaW1hdGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UmKSB7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXN0b21SZXByZXNlbnRhdGlv
blpvb21GYWN0b3IoKSB7IHJldHVybiAxOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVJl
cHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lk
IGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIFdlYktpdDo6
RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYs
IFdlYktpdDo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMmIGF0dHIpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpIHsg
LyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dGhl
bnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGNvbnN0IFN0
cmluZyYgcmVhbG0sIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUsIFN0cmluZyYgdXNl
cm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSwgYm9vbCYgaWdub3JlRXJyb3JzKSB7IC8qIEZJWE1FOiBJbXBsZW1l
bnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJveHlBdXRoZW50aWNhdGlvblJlcXVp
cmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50MTZfdCBwb3J0LCBjb25zdCBT
dHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3
b3JkKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQ
cm94eTo6VW5kb09yUmVkbykgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVh
bCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgeyB9CisgICAgdmlydHVhbCBib29sIGNhblVu
ZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5k
b1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pIHsgLyogRklYTUU6IElt
cGxlbWVudC4gKi8gfQorCisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRv
RGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0KSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIHJldHVybiByZWN0OyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJl
Y3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkgeyAv
KiBGSVhNRTogSW1wbGVtZW50LiAqLyByZXR1cm4gcmVjdDsgfQorICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50UG9pbnQgc2NyZWVuVG9XaW5kb3coY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
KSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIHJldHVybiBwb2ludDsgfQorICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBy
ZWN0KSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIHJldHVybiByZWN0OyB9CisKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgLyogRklYTUU6IElt
cGxlbWVudC4gKi8gfQorICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsg
LyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpIHsgLyog
RklYTUU6IEltcGxlbWVudC4gKi8gfQorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICB2
aXJ0dWFsIHZvaWQgZG9uZVdpdGhHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBl
dmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQor
I2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXlWaWV3KCkgeyAvKiBGSVhNRTogSW1wbGVt
ZW50LiAqLyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFZpZXcoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSB7
IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tp
bmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JikgeyAvKiBGSVhN
RTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
YXJlYSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wgaGlkZGVuVW50aWxNb3VzZU1vdmVzKSB7
IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5n
ZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBuZXdUb29sdGlwKSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0lt
YWdlKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiB3
ZWJQYWdlUHJveHkpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gcmV0dXJuIFBhc3NSZWZQdHI8
V2ViUG9wdXBNZW51UHJveHk+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4
dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHdlYlBhZ2VQ
cm94eSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyByZXR1cm4gUGFzc1JlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PigpOyB9CisKKyAgICBXS1ZpZXdJbXBsKFdlYkNvbnRleHQqLCBXZWJQYWdl
R3JvdXAqLCBXS1ZpZXdDbGllbnQqKTsKKyAgICB+V0tWaWV3SW1wbCgpOworCisgICAgLy8gUGFn
ZUNsaWVudAorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0
ZURyYXdpbmdBcmVhUHJveHkoKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNj
cm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zKSB7IG1fY2xpZW50LT52aWV3UmVxdWVz
dGVkU2Nyb2xsKHBvcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCkgeyBt
X2NsaWVudC0+dmlld1Byb2Nlc3NDcmFzaGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVs
YXVuY2hQcm9jZXNzKCkgeyBtX2NsaWVudC0+dmlld1Byb2Nlc3NSZWxhdW5jaGVkKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiByZWN0KSB7IG1fY2xpZW50LT52aWV3TmVlZHNEaXNwbGF5KHJlY3QpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdT
aXplKSB7IG1fY2xpZW50LT52aWV3Q29udGVudFNpemVDaGFuZ2VkKG5ld1NpemUpOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKKworICAgIHZp
cnR1YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCkgeyByZXR1cm4gbV9mb2N1c2VkOyB9CisgICAgdmly
dHVhbCBib29sIGlzVmlld1Zpc2libGUoKSB7IHJldHVybiBtX3Zpc2libGU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCkgeyByZXR1cm4gbV9hY3RpdmU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNWaWV3SW5XaW5kb3coKSB7IHJldHVybiB0cnVlOyB9IC8vIEZJWE1FCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgeyByZXR1cm4gbV9zaXplOyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOworI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJU
b3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOworI2VuZGlmCisKKyAgICAvLyBXS1Zp
ZXcKKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgeyBtX3dlYlBhZ2VQcm94eS0+aW5p
dGlhbGl6ZVdlYlBhZ2UoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCk7
CisgICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNlZDsg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CisgICAgdmlydHVhbCBib29s
IGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQorCisgICAgdmlydHVhbCB2
b2lkIHNldEFjdGl2ZShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgUVNp
emUmKTsKKyAgICB2aXJ0dWFsIFFTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB2YWx1ZSkg
eyBtX3dlYlBhZ2VQcm94eS0+c2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQodmFsdWUpOyB9
CisgICAgdmlydHVhbCBib29sIHRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViUGFnZVByb3h5LT5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpOyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RHJhd0JhY2tncm91bmQoYm9vbCB2YWx1ZSkgeyBtX3dlYlBhZ2VQcm94
eS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHZhbHVlKTsgfQorICAgIHZpcnR1YWwgYm9vbCBkcmF3QmFj
a2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZVByb3h5LT5kcmF3c0JhY2tncm91bmQo
KTsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9y
bSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgUGFpbnRGbGFncyk7CisKKyAgICBXS1BhZ2VSZWYg
cGFnZVJlZigpIHsgcmV0dXJuIHRvQVBJKG1fd2ViUGFnZVByb3h5LmdldCgpKTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGtleUV2ZW50KFFLZXlFdmVudCopOworICAgIHZpcnR1
YWwgdm9pZCBtb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiwgaW50IGNsaWNrQ291bnQgPSAwKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudChRV2hlZWxFdmVudCopOworICAgIHZpcnR1YWwgdm9p
ZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2ZvY3Vz
ZWQ7CisgICAgYm9vbCBtX3Zpc2libGU7CisgICAgYm9vbCBtX2FjdGl2ZTsKKyAgICBRU2l6ZSBt
X3NpemU7CisgICAgUVVybCBtX3VybDsKKworICAgIFdLVmlld0NsaWVudCogbV9jbGllbnQ7Cisg
ICAgV1RGOjpSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5OworfTsK
KworfQorCisjZW5kaWYgLy8gV0tWaWV3SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvYmx1ZXNxdWFyZS5odG1sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGI2Mzk2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRt
bApAQCAtMCwwICsxLDUgQEAKKzxib2R5IHN0eWxlPSJtYXJnaW46NjBweCI+CisgICAgPHRhYmxl
IHN0eWxlPSJib3JkZXI6MTBweCBzb2xpZCBibHVlOyB3aWR0aDo4MHB4OyBoZWlnaHQ6ODBweCI+
CisgICAgICAgIDx0cj48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgIDwvdGFibGU+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwv
cmVkc3F1YXJlLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0
bWwvcmVkc3F1YXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcw
ZDI5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxib2R5IHN0eWxlPSJt
YXJnaW46MjBweCI+CisgICAgPHRhYmxlIHN0eWxlPSJib3JkZXI6MTBweCBzb2xpZCByZWQ7IHdp
ZHRoOjE2MHB4OyBoZWlnaHQ6MTYwcHgiPgorICAgICAgICA8dHI+PHRkPiZuYnNwOzwvdGQ+PC90
cj4KKyAgICA8L3RhYmxlPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xdGNiX25vQmFja2dyb3VuZC5wbmcg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F0
Y2Jfbm9CYWNrZ3JvdW5kLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODNmMDdjZWZmMjI4YmM4ZWJkZWRjYjE2
OTRmNTg1ODg4OGU0NzM2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2OTYKemNtZUFTQE4/KG9s
SHlgdVZCcSFpYTB2cF5DcVM1azRNP3R5U1RfJHl1QHBPYmhId0J1NE0kMWBrazQ3KjVuMFRACnp6
O15fTThLLUxWTmkjNG9NUn5lN2hFJlhYZClKWSMkdzdlTztMI3VkXiZoaXVObWVAOTVNdFojV35w
JnxWYF9Cdgp6VGtlWTJoUDRiOSMqR2RGOTR0ZjxFemQ5VmVgJk95eXNkZURJPyF3XmBZZFdEfDY5
QSplQlBoIUU2cSlPMVVRJSkKejZ7dFdZWntMMFhxeCQjemNWNVRVMzl+ZGdDfiUrP2hqYDZqLXJz
Zm8qYlFtNl9jSWopU2VQNks3Y3VXTHlUJHQyCnpVa3F+XklJJWtJVmNZQzR4eFd9PEk8UU5WP3dp
Q25XIyNwWCYkKTJLIVI8e34rV0srRztmeW89bTxebj56QzVhYApQV0I+d0JTM2ozXlA2PHJfWF89
SWQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9wYWludC5wbmcgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F0Y2JfcGFp
bnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk1YmY2NzZmMjFhMDllZDM1MzI4MTkyZGNjYjUzNzYwNGY5MjQ3
OTIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDY2Nwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZw
XkNxUzVrNE0/dHlTVF8keXVAcE9iaEh3QnU0TSQxYGtrNDcqNW4wVEAKeno7Xl9NOEstTFZOaSM0
byo/UEotaEUmWFhkdUptanYhTVdrPExSM0p4fkYrKHhWQUF7JmRffUQ8eiFLIyt9Z2UwCno+bG93
cj1HUWEpRj5aN2E7OXd6PVhpMlltNiFscDc7ZilXJSstNnZId2Z2bUBDMEs2aWJNZmlfRV5LZ0E7
OXpOVAp6NyRzO0IxfiU5STskR2puU2E2RTFROSohJTM3cyZncFM8dDs1MDQjM3V9ZnBxMHY3d2ck
aE1EciU0ZmEoY1l2dmoKTiFQQ3t4V3R+JCg2OUM4cG47cmxGCgpsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0
Y2IvcXRjYi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2Iv
cXRjYi5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkYzE5NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRj
Yi9xdGNiLnBybwpAQCAtMCwwICsxLDMgQEAKK2luY2x1ZGUoLi4vdGVzdHMucHJpKQorU09VUkNF
UyArPSAkJHtUQVJHRVR9LmNwcAorUVQgKz0gd2Via2l0LXByaXZhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRjYi90c3RfcXRjYi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2IvdHN0X3F0Y2IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzOWM3YzEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2IvdHN0X3F0Y2Iu
Y3BwCkBAIC0wLDAgKzEsMjE4IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworI2luY2x1ZGUgIi4uL3V0
aWwuaCIKKworI2luY2x1ZGUgPFFJbWFnZT4KKyNpbmNsdWRlIDxRTWF0cml4NHg0PgorI2luY2x1
ZGUgPFFPcGVuR0xDb250ZXh0PgorI2luY2x1ZGUgPFFTaXplPgorI2luY2x1ZGUgPFFXaW5kb3c+
CisjaW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KKworI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tQcmVmZXJlbmNlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nUXQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
VVJMLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ZpZXcuaD4KKworc3RhdGljIFdLQ29udGV4dFJl
ZiB3ZWJDb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgV0tDb250ZXh0UmVmIHJlc3VsdCA9IFdLQ29u
dGV4dENyZWF0ZSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBXS1BhZ2VHcm91
cFJlZiBjcmVhdGVXZWJQYWdlR3JvdXAoY29uc3QgUVN0cmluZyYgbmFtZSkKK3sKKyAgICBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXAgPVdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tT
dHJpbmdDcmVhdGVXaXRoUVN0cmluZyhuYW1lKSk7CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwKTsKKyAgICBXS1By
ZWZlcmVuY2VzU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRy
dWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShwcmVmZXJlbmNl
cywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJl
ZmVyZW5jZXMsIHRydWUpOworCisgICAgcmV0dXJuIHBhZ2VHcm91cDsKK30KKworc3RhdGljIFdL
UGFnZUdyb3VwUmVmIHdlYlBhZ2VHcm91cChjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAgIHN0
YXRpYyBXS1BhZ2VHcm91cFJlZiByZXN1bHQgPSBjcmVhdGVXZWJQYWdlR3JvdXAobmFtZSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBRT2JqZWN0LCBw
dWJsaWMgV2ViS2l0OjpXS1ZpZXdDbGllbnQgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAg
V2ViVmlldyhjb25zdCBRU2l6ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIFdLUGFnZUxvYWRlckNs
aWVudCBsb2FkZXJDbGllbnQ7CisgICAgICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXpl
b2YoV0tQYWdlTG9hZGVyQ2xpZW50KSk7CisgICAgICAgIGxvYWRlckNsaWVudC5jbGllbnRJbmZv
ID0gdGhpczsKKyAgICAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IFdl
YlZpZXc6OmZpbmlzaExvYWRGb3JGcmFtZTsKKworICAgICAgICBtX3dlYlZpZXcgPSBXZWJLaXQ6
OldLVmlldzo6Y3JlYXRlKHdlYkNvbnRleHQoKSwgd2ViUGFnZUdyb3VwKFFTdHJpbmcoKSksIHRo
aXMpOworICAgICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KG1fd2ViVmlldy0+cGFnZVJl
ZigpLCAmbG9hZGVyQ2xpZW50KTsKKyAgICAgICAgbV93ZWJWaWV3LT5pbml0aWFsaXplKCk7Cisg
ICAgICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0KG1fd2ViVmlldy0+cGFnZVJlZigpLCB0cnVl
KTsKKworICAgICAgICBtX3dlYlZpZXctPnNldFNpemUoc2l6ZSk7CisgICAgICAgIG1fd2ViVmll
dy0+c2V0Rm9jdXNlZCh0cnVlKTsKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRWaXNpYmxlKHRydWUp
OworICAgICAgICBtX3dlYlZpZXctPnNldEFjdGl2ZSh0cnVlKTsKKyAgICB9CisKKyAgICB+V2Vi
VmlldygpIHsgZGVsZXRlIG1fd2ViVmlldzsgfQorCisgICAgdm9pZCBsb2FkKGNvbnN0IFFTdHJp
bmcmIGh0bWwpCisgICAgeworICAgICAgICBtX2ZyYW1lTG9hZGVkID0gZmFsc2U7CisgICAgICAg
IFdLUGFnZUxvYWRVUkwobV93ZWJWaWV3LT5wYWdlUmVmKCksIFdLVVJMQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGh0bWwudG9Bc2NpaSgpLmRhdGEoKSkpOworICAgICAgICBRVkVSSUZZKDo6d2FpdEZv
clNpZ25hbCh0aGlzLCBTSUdOQUwobG9hZGVkKCkpLCA1MDAwKSk7CisgICAgfQorCisgICAgdm9p
ZCBzZXREcmF3QmFja2dyb3VuZChib29sIHZhbHVlKSB7IG1fd2ViVmlldy0+c2V0RHJhd0JhY2tn
cm91bmQodmFsdWUpOyB9CisgICAgdm9pZCBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB2
YWx1ZSkgeyBtX3dlYlZpZXctPnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCh2YWx1ZSk7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JikKKyAgICB7Cisg
ICAgICAgIG1fd2ViVmlldy0+cGFpbnQoUU1hdHJpeDR4NCgpLCAxLCAwKTsKKyAgICAgICAgaWYg
KG1fZnJhbWVMb2FkZWQpIHsKKyAgICAgICAgICAgIGVtaXQgbG9hZGVkKCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZFNjcm9sbChjb25zdCBRUG9p
bnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NDcmFzaGVkKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCB2aWV3Q29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFFTaXplJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZShjb25zdCBRQ3Vyc29yJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgUUtleUV2ZW50KiwgYm9vbCB3YXNI
YW5kbGVkKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IFFU
b3VjaEV2ZW50KiwgYm9vbCB3YXNIYW5kbGVkKSB7IH0KKworICAgIHN0YXRpYyB2b2lkIGZpbmlz
aExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVm
IHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKworc2lnbmFsczoKKyAgICB2b2lk
IGxvYWRlZCgpOworCitwcml2YXRlOgorICAgIFdlYktpdDo6V0tWaWV3KiBtX3dlYlZpZXc7Cisg
ICAgYm9vbCBtX2ZyYW1lTG9hZGVkOworfTsKKwordm9pZCBXZWJWaWV3OjpmaW5pc2hMb2FkRm9y
RnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0
YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBXZWJWaWV3KiBvYmogPSBzdGF0aWNf
Y2FzdDxXZWJWaWV3Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworICAgIG9iai0+
bV9mcmFtZUxvYWRlZCA9IHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNvbXBhcmVJbWFnZXMoY29u
c3QgUUltYWdlJiBpMSwgY29uc3QgUUltYWdlJiBpMiwgY29uc3QgUVBvaW50JiBwMSwgY29uc3Qg
UVBvaW50JiBwMiwgaW50IGl0ZXIpCit7CisgICAgY29uc3QgUVBvaW50IHBvaW50KChwMS54KCkg
KyBwMi54KCkpID4+IDEsIChwMS55KCkgKyBwMi55KCkpID4+IDEpOworCisgICAgaWYgKGkxLnBp
eGVsKHBvaW50KSAhPSBpMi5waXhlbChwb2ludCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghaXRlcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAtLWl0ZXI7CisgICAg
cmV0dXJuIGNvbXBhcmVJbWFnZXMoaTEsIGkyLCBwb2ludCwgcDEsIGl0ZXIpICYmIGNvbXBhcmVJ
bWFnZXMoaTEsIGkyLCBwb2ludCwgcDIsIGl0ZXIpICYmCisgICAgICAgICAgIGNvbXBhcmVJbWFn
ZXMoaTEsIGkyLCBwb2ludCwgUVBvaW50KHAxLngoKSwgcDIueSgpKSwgaXRlcikgJiYgY29tcGFy
ZUltYWdlcyhpMSwgaTIsIHBvaW50LCBRUG9pbnQocDIueCgpLCBwMS55KCkpLCBpdGVyKTsKK30K
Kworc3RhdGljIGJvb2wgY29tcGFyZUltYWdlcyhjb25zdCBRSW1hZ2UmIGkxLCBjb25zdCBRSW1h
Z2UmIGkyLCBpbnQgaXRlcikKK3sKKyAgICBpZiAoaTEuc2l6ZSgpICE9IGkyLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb21wYXJlSW1hZ2VzKGkxLCBpMiwgUVBv
aW50KDAsIDApLCBRUG9pbnQoaTEuc2l6ZSgpLndpZHRoKCksIGkxLnNpemUoKS5oZWlnaHQoKSks
IGl0ZXIpOworfQorCitjbGFzcyB0c3RfcXRjYiA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09C
SkVDVAorcHVibGljOgorICAgIHRzdF9xdGNiKCkKKyAgICAgICAgOiBtX2h0bWxEaXIoUVN0cmlu
Zzo6ZnJvbUFzY2lpKFRFU1RTX1NPVVJDRV9ESVIgIi9odG1sIikpCisgICAgICAgICwgbV9iYXNl
VXJsKFFVcmw6OmZyb21Mb2NhbEZpbGUoVEVTVFNfU09VUkNFX0RJUiAiL2h0bWwiKS50b1N0cmlu
ZygpKQorICAgIHsgfQorCitwcml2YXRlIHNsb3RzOgorICAgIHZvaWQgcGFpbnQoKSB7IHJ1bigm
dHN0X3F0Y2I6OmRvUGFpbnQsIG1faHRtbERpciArICIvcmVzb3VyY2VzL3F0Y2JfcGFpbnQucG5n
Iik7IH0KKyAgICB2b2lkIG5vQmFja2dyb3VuZDEoKSB7IHJ1bigmdHN0X3F0Y2I6OmRvTm9CYWNr
Z3JvdW5kMSwgbV9odG1sRGlyICsgIi9yZXNvdXJjZXMvcXRjYl9ub0JhY2tncm91bmQucG5nIik7
IH0KKyAgICB2b2lkIG5vQmFja2dyb3VuZDIoKSB7IHJ1bigmdHN0X3F0Y2I6OmRvTm9CYWNrZ3Jv
dW5kMiwgbV9odG1sRGlyICsgIi9yZXNvdXJjZXMvcXRjYl9ub0JhY2tncm91bmQucG5nIik7IH0K
KworcHJpdmF0ZToKKyAgICBjb25zdCBRU3RyaW5nIG1faHRtbERpcjsKKyAgICBjb25zdCBRU3Ry
aW5nIG1fYmFzZVVybDsKKworICAgIHZvaWQgZG9QYWludChjb25zdCBRU2l6ZSYgc2l6ZSk7Cisg
ICAgdm9pZCBkb05vQmFja2dyb3VuZDEoY29uc3QgUVNpemUmIHNpemUpOworICAgIHZvaWQgZG9O
b0JhY2tncm91bmQyKGNvbnN0IFFTaXplJiBzaXplKTsKKworICAgIHR5cGVkZWYgdm9pZCAodHN0
X3F0Y2I6OipQYWludE1ldGhvZCkoY29uc3QgUVNpemUmIHNpemUpOworICAgIHZvaWQgcnVuKFBh
aW50TWV0aG9kLCBjb25zdCBRU3RyaW5nJiBleHBlY3RhdGlvbik7Cit9OworCit2b2lkIHRzdF9x
dGNiOjpkb1BhaW50KGNvbnN0IFFTaXplJiBzaXplKQoreworICAgIFdlYlZpZXcgdmlldyhzaXpl
KTsKKyAgICB2aWV3LmxvYWQobV9iYXNlVXJsICsgIi9yZWRzcXVhcmUuaHRtbCIpOworfQorCit2
b2lkIHRzdF9xdGNiOjpkb05vQmFja2dyb3VuZDEoY29uc3QgUVNpemUmIHNpemUpCit7CisgICAg
V2ViVmlldyB2aWV3KHNpemUpOworICAgIHZpZXcuc2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRy
dWUpOworICAgIHZpZXcubG9hZChtX2Jhc2VVcmwgKyAiL3JlZHNxdWFyZS5odG1sIik7CisgICAg
dmlldy5sb2FkKG1fYmFzZVVybCArICIvYmx1ZXNxdWFyZS5odG1sIik7Cit9CisKK3ZvaWQgdHN0
X3F0Y2I6OmRvTm9CYWNrZ3JvdW5kMihjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBXZWJWaWV3
IHZpZXcxKHNpemUpOworICAgIHZpZXcxLnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCh0cnVlKTsK
KyAgICB2aWV3MS5sb2FkKG1fYmFzZVVybCArICIvcmVkc3F1YXJlLmh0bWwiKTsKKworICAgIFdl
YlZpZXcgdmlldzIoc2l6ZSk7CisgICAgdmlldzIuc2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRy
dWUpOworICAgIHZpZXcyLmxvYWQobV9iYXNlVXJsICsgIi9ibHVlc3F1YXJlLmh0bWwiKTsKK30K
Kwordm9pZCB0c3RfcXRjYjo6cnVuKFBhaW50TWV0aG9kIG1ldGhvZCwgY29uc3QgUVN0cmluZyYg
ZXhwZWN0YXRpb24pCit7CisKKyAgICBRV2luZG93IHdpbmRvdzsKKyAgICB3aW5kb3cuc2V0U3Vy
ZmFjZVR5cGUoUVN1cmZhY2U6Ok9wZW5HTFN1cmZhY2UpOworICAgIHdpbmRvdy5zZXRHZW9tZXRy
eSgwLCAwLCAyMDAsIDIwMCk7CisgICAgd2luZG93LmNyZWF0ZSgpOworCisgICAgUU9wZW5HTENv
bnRleHQgY29udGV4dDsKKyAgICBjb250ZXh0LmNyZWF0ZSgpOworICAgIGNvbnRleHQubWFrZUN1
cnJlbnQoJndpbmRvdyk7CisKKyAgICAodGhpcy0+Km1ldGhvZCkod2luZG93LnNpemUoKSk7CisK
KyAgICBRSW1hZ2UgaW1hZ2Uod2luZG93LnNpemUoKSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1By
ZW11bHRpcGxpZWQpOworICAgIGdsUmVhZFBpeGVscygwLCAwLCB3aW5kb3cuc2l6ZSgpLndpZHRo
KCksIHdpbmRvdy5zaXplKCkuaGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGlt
YWdlLmJpdHMoKSk7CisKKyAgICBRVkVSSUZZKGNvbXBhcmVJbWFnZXMoUUltYWdlKGV4cGVjdGF0
aW9uKSwgaW1hZ2UucmdiU3dhcHBlZCgpLCA1KSk7Cit9CisKK1FURVNUX01BSU4odHN0X3F0Y2Ip
CisKKyNpbmNsdWRlICJ0c3RfcXRjYi5tb2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvdGVzdHMucHJp
IGIvU291cmNlL3Rlc3RzLnByaQppbmRleCA1ZDJlYjZiLi5jMWMxN2Q1IDEwMDY0NAotLS0gYS9T
b3VyY2UvdGVzdHMucHJpCisrKyBiL1NvdXJjZS90ZXN0cy5wcmkKQEAgLTUxLDQgKzUxLDggQEAg
U1VCRElSUyArPSBcCiAgICAgICAgICQkV0VCS0lUMl9URVNUU19ESVIvcHVibGljYXBpIFwKICAg
ICAgICAgJCRXRUJLSVQyX1RFU1RTX0RJUi9xcXVpY2t3ZWJ2aWV3IFwKICAgICAgICAgJCRXRUJL
SVQyX1RFU1RTX0RJUi9xbWx0ZXN0cworICAgIGNvbnRhaW5zKENPTkZJRywgcXRjYikgeworICAg
ICAgICBTVUJESVJTICs9IFwKKyAgICAgICAgICAgICQkV0VCS0lUMl9URVNUU19ESVIvcXRjYgor
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCAyMTQzMWRkLi4zNDE5MTNhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTItMDYtMDYgIEx1aXogQWdvc3Rp
bmkgIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gUHJpdmF0
ZSBub24tUXRRdWljayBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg0NTMyCisKKyAgICAgICAgTWluaUJyb3dzZXJfY2IgaXMgYW4gdXNhZ2UgZXhh
bXBsZSBmb3IgdGhlIFdLVmlldyBBUEkuIEl0IGlzIG9ubHkgYW4gZXhhbXBsZQorICAgICAgICBh
bmQgaXMgbm90IGZ1bGx5IGltcGxlbWVudGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXRjYi9EZXJpdmVkU291cmNlcy5w
cmk6IEFkZGVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2IucHJv
OiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdGNiL1RhcmdldC5wcmk6IEFkZGVkLgor
ICAgICAgICAqIE1pbmlCcm93c2VyL3F0Y2IvVmlldy5jcHA6IEFkZGVkLgorICAgICAgICAoY3Jl
YXRlV2ViQ29udGV4dCk6CisgICAgICAgIChjcmVhdGVXZWJQYWdlR3JvdXApOgorICAgICAgICAo
Vmlldzo6flZpZXcpOgorICAgICAgICAoVmlldzo6Vmlldyk6CisgICAgICAgIChWaWV3OjpleHBv
c2VFdmVudCk6CisgICAgICAgIChWaWV3OjpyZXNpemVFdmVudCk6CisgICAgICAgIChWaWV3Ojp0
aW1lckV2ZW50KToKKyAgICAgICAgKFZpZXc6OnZpZXdOZWVkc0Rpc3BsYXkpOgorICAgICAgICAo
Vmlldzo6dmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKToKKyAgICAgICAgKFZpZXc6OmRvbmVX
aXRoS2V5RXZlbnQpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogTWluaUJyb3dzZXIvcXRj
Yi9WaWV3Lmg6IEFkZGVkLgorICAgICAgICAoVmlldyk6CisgICAgICAgIChWaWV3Ojp2aWV3UmVx
dWVzdGVkU2Nyb2xsKToKKyAgICAgICAgKFZpZXc6OnZpZXdQcm9jZXNzQ3Jhc2hlZCk6CisgICAg
ICAgIChWaWV3Ojp2aWV3UHJvY2Vzc1JlbGF1bmNoZWQpOgorICAgICAgICAoVmlldzo6dmlld0Nv
bnRlbnRTaXplQ2hhbmdlZCk6CisgICAgICAgIChWaWV3Ojpkb25lV2l0aFRvdWNoRXZlbnQpOgor
ICAgICAgICAoVmlldzo6a2V5UHJlc3NFdmVudCk6CisgICAgICAgIChWaWV3OjprZXlSZWxlYXNl
RXZlbnQpOgorICAgICAgICAoVmlldzo6bW91c2VEb3VibGVDbGlja0V2ZW50KToKKyAgICAgICAg
KFZpZXc6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFZpZXc6Om1vdXNlUHJlc3NFdmVudCk6
CisgICAgICAgIChWaWV3Ojptb3VzZVJlbGVhc2VFdmVudCk6CisgICAgICAgICogVG9vbHMucHJv
OgorCiAyMDEyLTA2LTA0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFB5dGhvbiB0ZXN0IGZpeCBhdHRlbXB0IGZvciBDaHJvbWl1bSBXaW5kb3dzLgpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9EZXJpdmVkU291cmNlcy5wcmkgYi9Ub29scy9N
aW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kYzRkMmY0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXRjYi9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTAsMCArMSw2IEBACitURU1QTEFURSA9IGRl
cml2ZWQKKworIyBNYWtlIHN1cmUgZm9yd2FyZGVkIGhlYWRlcnMgbmVlZGVkIGJ5IHRoaXMgcHJv
amVjdCBhcmUgcHJlc2VudAorZndoZWFkZXJfZ2VuZXJhdG9yLmNvbW1hbmRzID0gcGVybCAkJHtS
T09UX1dFQktJVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGlu
Zy1oZWFkZXJzLnBsICQke1JPT1RfV0VCS0lUX0RJUn0vVG9vbHMvV2ViS2l0VGVzdFJ1bm5lciAk
JHtST09UX0JVSUxEX0RJUn0vU291cmNlL2luY2x1ZGUgcXQKK2Z3aGVhZGVyX2dlbmVyYXRvci5k
ZXBlbmRzICA9ICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dlYktpdDIvU2NyaXB0cy9nZW5l
cmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKK0dFTkVSQVRPUlMgKz0gZndoZWFkZXJfZ2VuZXJh
dG9yCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL01pbmlCcm93c2VyX2NiLnBy
byBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2IucHJvCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDMxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9xdGNiL01pbmlCcm93c2VyX2NiLnBybwpAQCAtMCwwICsxLDkgQEAKK1RF
TVBMQVRFID0gc3ViZGlycworQ09ORklHICs9IG9yZGVyZWQKKworZGVyaXZlZF9zb3VyY2VzLmZp
bGUgPSBEZXJpdmVkU291cmNlcy5wcmkKK3RhcmdldC5maWxlID0gVGFyZ2V0LnByaQorCitTVUJE
SVJTID0gZGVyaXZlZF9zb3VyY2VzIHRhcmdldAorCithZGRTdHJpY3RTdWJkaXJPcmRlckJldHdl
ZW4oZGVyaXZlZF9zb3VyY2VzLCB0YXJnZXQpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9xdGNiL1RhcmdldC5wcmkgYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1RhcmdldC5wcmkKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ3NzM4MAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvVGFyZ2V0LnByaQpAQCAtMCwwICsxLDE2IEBACitU
RU1QTEFURSA9IGFwcAorVEFSR0VUID0gTWluaUJyb3dzZXJfY2IKKworSEVBREVSUyArPSBcCisg
ICAgVmlldy5oCisKK1NPVVJDRVMgKz0gXAorICAgIFZpZXcuY3BwCisKK0RFU1RESVIgPSAkJHtS
T09UX0JVSUxEX0RJUn0vYmluCisKK1FUID0gY29yZSBndWkgbmV0d29yayB3ZWJraXQKKworbG9h
ZChmZWF0dXJlcykKKworV0VCS0lUICs9IHd0ZiBqYXZhc2NyaXB0Y29yZSB3ZWJraXQyCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1ZpZXcuY3BwIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXRjYi9WaWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzZi
ZGNiCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9WaWV3LmNwcApA
QCAtMCwwICsxLDEzOCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgIlZpZXcuaCIK
KworI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRRGVidWc+CisKKyNpbmNs
dWRlIDxRRXhwb3NlRXZlbnQ+CisjaW5jbHVkZSA8UVJlc2l6ZUV2ZW50PgorI2luY2x1ZGUgPFFL
ZXlFdmVudD4KKworI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlcy5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLU3RyaW5nUXQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+CisKKyNpbmNsdWRl
IDxRVXJsPgorI2luY2x1ZGUgPFFNYXRyaXg0eDQ+CisKK3N0YXRpYyBXS0NvbnRleHRSZWYgY3Jl
YXRlV2ViQ29udGV4dCgpCit7CisgICAgcmV0dXJuIFdLQ29udGV4dENyZWF0ZSgpOworfQorCitz
dGF0aWMgV0tQYWdlR3JvdXBSZWYgY3JlYXRlV2ViUGFnZUdyb3VwKGNvbnN0IFFTdHJpbmcmIG5h
bWUpCit7CisgICAgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwID1XS1BhZ2VHcm91cENyZWF0ZVdp
dGhJZGVudGlmaWVyKFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcobmFtZSkpOworICAgIFdLUHJl
ZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMgPSBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHBhZ2VH
cm91cCk7CisgICAgV0tQcmVmZXJlbmNlc1NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Rm9yY2VDb21wb3NpdGlu
Z01vZGUocHJlZmVyZW5jZXMsIHRydWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKworICAgIHJldHVybiBwYWdlR3JvdXA7
Cit9CisKK1ZpZXc6On5WaWV3KCkKK3sKKyAgICBkZWxldGUgbV9jb250ZXh0OworICAgIGRlbGV0
ZSBtX3dlYlZpZXc7Cit9CisKK1ZpZXc6OlZpZXcoY29uc3QgY2hhciogdXJsKQorICAgIDogbV91
cmwodXJsKQorICAgICwgbV9hY3RpdmUoZmFsc2UpCit7CisgICAgc2V0U3VyZmFjZVR5cGUoT3Bl
bkdMU3VyZmFjZSk7CisgICAgc2V0R2VvbWV0cnkoNTAsIDUwLCA5ODAsIDYwMCk7CisgICAgY3Jl
YXRlKCk7CisKKyAgICBtX2NvbnRleHQgPSBuZXcgUU9wZW5HTENvbnRleHQ7CisgICAgbV9jb250
ZXh0LT5jcmVhdGUoKTsKKworICAgIG1fd2ViVmlldyA9IFdlYktpdDo6V0tWaWV3OjpjcmVhdGUo
Y3JlYXRlV2ViQ29udGV4dCgpLCBjcmVhdGVXZWJQYWdlR3JvdXAoUVN0cmluZygpKSwgdGhpcyk7
CisgICAgbV93ZWJWaWV3LT5pbml0aWFsaXplKCk7CisgICAgV0tQYWdlU2V0VXNlRml4ZWRMYXlv
dXQobV93ZWJWaWV3LT5wYWdlUmVmKCksIHRydWUpOworfQorCisKK3ZvaWQgVmlldzo6ZXhwb3Nl
RXZlbnQoUUV4cG9zZUV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlKSB7CisgICAg
ICAgIG1fYWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgV0tQYWdlTG9hZFVSTChtX3dlYlZpZXctPnBh
Z2VSZWYoKSwgV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcobV91cmwudG9Bc2NpaSgpLmRhdGEo
KSkpOworCisgICAgICAgIG1fd2ViVmlldy0+c2V0Rm9jdXNlZCh0cnVlKTsKKyAgICAgICAgbV93
ZWJWaWV3LT5zZXRWaXNpYmxlKHRydWUpOworICAgICAgICBtX3dlYlZpZXctPnNldEFjdGl2ZSh0
cnVlKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlldzo6cmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50KiBl
dmVudCkKK3sKKyAgICBtX3dlYlZpZXctPnNldFNpemUoZXZlbnQtPnNpemUoKSk7Cit9CisKK3Zv
aWQgVmlldzo6dGltZXJFdmVudChRVGltZXJFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50
LT50aW1lcklkKCkgPT0gbV9wYWludFRpbWVyLnRpbWVySWQoKSkgeworICAgICAgICBtX3BhaW50
VGltZXIuc3RvcCgpOworICAgICAgICBtX2NvbnRleHQtPm1ha2VDdXJyZW50KHRoaXMpOworICAg
ICAgICBtX3dlYlZpZXctPnBhaW50KFFNYXRyaXg0eDQoKSwgMSwgMCk7CisgICAgICAgIG1fY29u
dGV4dC0+c3dhcEJ1ZmZlcnModGhpcyk7CisgICAgfQorfQorCit2b2lkIFZpZXc6OnZpZXdOZWVk
c0Rpc3BsYXkoY29uc3QgUVJlY3QmKQoreworICAgIGlmICghbV9wYWludFRpbWVyLmlzQWN0aXZl
KCkpCisgICAgICAgIG1fcGFpbnRUaW1lci5zdGFydCgwLCB0aGlzKTsKK30KKwordm9pZCBWaWV3
Ojp2aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUoY29uc3QgUUN1cnNvciYgY3Vyc29yKQorewor
ICAgIFFHdWlBcHBsaWNhdGlvbjo6c2V0T3ZlcnJpZGVDdXJzb3IoY3Vyc29yKTsKK30KKwordm9p
ZCBWaWV3Ojpkb25lV2l0aEtleUV2ZW50KGNvbnN0IFFLZXlFdmVudCogZXZlbnQsIGJvb2wgd2Fz
SGFuZGxlZCkKK3sKKyAgICBpZiAod2FzSGFuZGxlZCB8fCBldmVudC0+aXNBY2NlcHRlZCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBzd2l0Y2ggKGV2ZW50LT5rZXkoKSkgeworICAgIGNhc2Ug
UXQ6OktleV9CYWNrc3BhY2U6IHsKKyAgICAgICAgV0tQYWdlUmVmIHBhZ2UgPSBtX3dlYlZpZXct
PnBhZ2VSZWYoKTsKKyAgICAgICAgaWYgKFdLUGFnZUNhbkdvQmFjayhwYWdlKSkKKyAgICAgICAg
ICAgIFdLUGFnZUdvQmFjayhwYWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KK30K
KworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIFFHdWlBcHBsaWNhdGlv
biBhKGFyZ2MsIGFyZ3YpOworCisgICAgVmlldyB2aWV3KGFyZ2MgPiAxID8gYXJndlsxXSA6ICJo
dHRwOi8vd3d3Lmdvb2dsZS5jb20iKTsKKyAgICB2aWV3LnNob3coKTsKKyAgICByZXR1cm4gYS5l
eGVjKCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1ZpZXcuaCBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0Y2IvVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmQ2MjU4ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNi
L1ZpZXcuaApAQCAtMCwwICsxLDY3IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tp
YSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIFZp
ZXdfaAorI2RlZmluZSBWaWV3X2gKKworI2luY2x1ZGUgPFFCYXNpY1RpbWVyPgorI2luY2x1ZGUg
PFFPcGVuR0xDb250ZXh0PgorI2luY2x1ZGUgPFFXaW5kb3c+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S1ZpZXcuaD4KKworCitjbGFzcyBWaWV3IDogIHB1YmxpYyBRV2luZG93LCBwcml2YXRlIFdlYktp
dDo6V0tWaWV3Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBWaWV3KGNvbnN0IGNoYXIqIHVybCk7Cisg
ICAgflZpZXcoKTsKKworcHVibGljOiAvLyBXS1ZpZXdDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQg
dmlld05lZWRzRGlzcGxheShjb25zdCBRUmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVx
dWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJv
Y2Vzc0NyYXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NSZWxhdW5jaGVk
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNp
emUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNv
bnN0IFFDdXJzb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBR
S2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpOworICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRv
dWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBib29sIHdhc0hhbmRsZWQpIHsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGV4cG9zZUV2ZW50KFFFeHBvc2VFdmVudCopOworICAg
IHZpcnR1YWwgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQqKTsKKworICAgIHZpcnR1YWwg
dm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5rZXlFdmVu
dChldmVudCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQga2V5UmVsZWFzZUV2ZW50KFFLZXlFdmVudCog
ZXZlbnQpIHsgbV93ZWJWaWV3LT5rZXlFdmVudChldmVudCk7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBtb3VzZURvdWJsZUNsaWNrRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+
bW91c2VFdmVudChldmVudCwgMik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlRXZlbnQo
UU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+bW91c2VFdmVudChldmVudCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgbW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkgeyBtX3dl
YlZpZXctPm1vdXNlRXZlbnQoZXZlbnQsIDEpOyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlUmVs
ZWFzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkgeyBtX3dlYlZpZXctPm1vdXNlRXZlbnQoZXZl
bnQpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0OjpXS1ZpZXcqIG1fd2ViVmlldzsKKyAgICBR
T3BlbkdMQ29udGV4dCAqbV9jb250ZXh0OworICAgIFFCYXNpY1RpbWVyIG1fcGFpbnRUaW1lcjsK
KworICAgIFFTdHJpbmcgbV91cmw7CisgICAgYm9vbCBtX2FjdGl2ZTsKKworICAgIHZpcnR1YWwg
dm9pZCB0aW1lckV2ZW50KFFUaW1lckV2ZW50Kik7Cit9OworCisjZW5kaWYgLy8gVmlld19oCmRp
ZmYgLS1naXQgYS9Ub29scy9Ub29scy5wcm8gYi9Ub29scy9Ub29scy5wcm8KaW5kZXggNmM5OTdj
Mi4uMDJmYzVlMSAxMDA2NDQKLS0tIGEvVG9vbHMvVG9vbHMucHJvCisrKyBiL1Rvb2xzL1Rvb2xz
LnBybwpAQCAtMTYsNiArMTYsMTEgQEAgU1VCRElSUyArPSBEdW1wUmVuZGVyVHJlZS9xdC9JbWFn
ZURpZmYucHJvCiAhbm9fd2Via2l0MiB7CiAgICAgU1VCRElSUyArPSBNaW5pQnJvd3Nlci9xdC9N
aW5pQnJvd3Nlci5wcm8gXAogICAgICAgICAgICAgICAgV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRU
ZXN0UnVubmVyLnBybworCitjb250YWlucyhDT05GSUcsIHF0Y2IpIHsKKyAgICBTVUJESVJTICs9
IE1pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2IucHJvCit9CisKIH0KIAogIyBGSVhNRTog
d2l0aCBRdCA1IHRoZSB0ZXN0IHBsdWdpbiBjYXVzZSBzb21lIHRyb3VibGUgZHVyaW5nIGxheW91
dCB0ZXN0cy4KLS0gCjEuNy45LjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146595</attachid>
            <date>2012-06-08 10:29:26 -0700</date>
            <delta_ts>2012-06-12 18:29:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-WK2-Private-non-QtQuick-API.patch</filename>
            <type>text/plain</type>
            <size>54669</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA2OTlkYzUxNTJmZTNmYjA5ZGRhMDJjOTBmYTFkZGU1YzA5Y2UwNDE5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogV2VkLCA2IEp1biAyMDEyIDAwOjM3OjEwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0g
W1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzIKCi46CgpBUEkgdGVzdHMgZm9yIFdLVmlldy4KClJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBTb3VyY2UvdGVzdHMucHJpOgoKU291cmNlL1dlYktp
dDI6CgpBZGRpbmcgbmV3IHByaXZhdGUgbm9uLVF0UXVpY2sgQVBJLgoKVGhpcyBpcyBub3QgcHVi
bGljIEFQSS4gSXQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZQppbiBmdXR1
cmUgYW5kIHdlIG1ha2Ugbm8gY29tbWl0bWVudCByZWdhcmRpbmcgc291cmNlIGNvbXBhdGliaWxp
dHkKb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkuCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
CiogVGFyZ2V0LnByaToKKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CihXS1By
ZWZlcmVuY2VzU2V0Rm9yY2VDb21wb3NpdGluZ01vZGUpOgooV0tQcmVmZXJlbmNlc0dldEZvcmNl
Q29tcG9zaXRpbmdNb2RlKToKKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aDoKKiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXcuaDogQWRkZWQuCihXZWJLaXQpOgooV0tW
aWV3Q2xpZW50KToKKiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmNwcDogQWRkZWQu
CihXZWJLaXQpOgooV2ViS2l0OjpXS1ZpZXc6OmNyZWF0ZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6
OldLVmlld0ltcGwpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp+V0tWaWV3SW1wbCk6CihXZWJLaXQ6
OldLVmlld0ltcGw6OnNldEN1cnNvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNyZWF0ZURyYXdp
bmdBcmVhUHJveHkpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRGb2N1c2VkKToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6c2V0VmlzaWJsZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEFjdGl2ZSk6
CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldFNpemUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpwYWlu
dCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmtleUV2ZW50KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6
bW91c2VFdmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OndoZWVsRXZlbnQpOgooV2ViS2l0OjpX
S1ZpZXdJbXBsOjp0b3VjaEV2ZW50KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZG9uZVdpdGhLZXlF
dmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRvbmVXaXRoVG91Y2hFdmVudCk6CiogVUlQcm9j
ZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oOiBBZGRlZC4KKFdlYktpdCk6CihXS1ZpZXdJbXBs
KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6cGFnZUNsb3NlZCk6CihXZWJLaXQ6OldLVmlld0ltcGw6
OnNldEZpbmRJbmRpY2F0b3IpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRDb21taXRMb2FkRm9y
TWFpbkZyYW1lKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21SZXByZXNlbnRhdGlvbik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmN1c3RvbVJlcHJlc2Vu
dGF0aW9uWm9vbUZhY3Rvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNldEN1c3RvbVJlcHJlc2Vu
dGF0aW9uWm9vbUZhY3Rvcik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5nZVNjcm9sbGJh
cnNGb3JNYWluRnJhbWUpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpmaW5kU3RyaW5nSW5DdXN0b21S
ZXByZXNlbnRhdGlvbik6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNvdW50U3RyaW5nTWF0Y2hlc0lu
Q3VzdG9tUmVwcmVzZW50YXRpb24pOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRSZWNlaXZlTWVz
c2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5n
ZVZpZXdwb3J0UHJvcGVydGllcyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmhhbmRsZURvd25sb2Fk
UmVxdWVzdCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmhhbmRsZUF1dGhlbnRpY2F0aW9uUmVxdWly
ZWRSZXF1ZXN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlQ2VydGlmaWNhdGVWZXJpZmlj
YXRpb25SZXF1ZXN0KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlUHJveHlBdXRoZW50aWNh
dGlvblJlcXVpcmVkUmVxdWVzdCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnJlZ2lzdGVyRWRpdENv
bW1hbmQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpjbGVhckFsbEVkaXRDb21tYW5kcyk6CihXZWJL
aXQ6OldLVmlld0ltcGw6OmNhblVuZG9SZWRvKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZXhlY3V0
ZVVuZG9SZWRvKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgoo
V2ViS2l0OjpXS1ZpZXdJbXBsOjpjb252ZXJ0VG9Vc2VyU3BhY2UpOgooV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpzY3JlZW5Ub1dpbmRvdyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OndpbmRvd1RvU2NyZWVu
KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6
CihXZWJLaXQ6OldLVmlld0ltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CihX
ZWJLaXQ6OldLVmlld0ltcGw6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKFdl
YktpdDo6V0tWaWV3SW1wbDo6dXBkYXRlVGV4dElucHV0U3RhdGUpOgooV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpkb25lV2l0aEdlc3R1cmVFdmVudCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpc3BsYXlW
aWV3KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c2Nyb2xsVmlldyk6CihXZWJLaXQ6OldLVmlld0lt
cGw6OmZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZEZp
bmRab29tYWJsZUFyZWEpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp0b29sVGlwQ2hhbmdlZCk6CihXZWJL
aXQ6OldLVmlld0ltcGw6OnN0YXJ0RHJhZyk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmNyZWF0ZVBv
cHVwTWVudVByb3h5KToKKFdlYktpdDo6V0tWaWV3SW1wbDo6Y3JlYXRlQ29udGV4dE1lbnVQcm94
eSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6cHJvY2Vzc0RpZENyYXNoKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkUmVs
YXVuY2hQcm9jZXNzKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheSk6
CihXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CihXZWJLaXQ6OldL
Vmlld0ltcGw6OmlzVmlld0ZvY3VzZWQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdWaXNp
YmxlKToKKFdlYktpdDo6V0tWaWV3SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKToKKFdlYktpdDo6
V0tWaWV3SW1wbDo6aXNWaWV3SW5XaW5kb3cpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjp2aWV3U2l6
ZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmluaXRpYWxpemUpOgooV2ViS2l0OjpXS1ZpZXdJbXBs
Ojppc0ZvY3VzZWQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjppc1Zpc2libGUpOgooV2ViS2l0OjpX
S1ZpZXdJbXBsOjppc0FjdGl2ZSk6CihXZWJLaXQ6OldLVmlld0ltcGw6OnNpemUpOgooV2ViS2l0
OjpXS1ZpZXdJbXBsOjpzZXRUcmFuc3BhcmVudEJhY2tncm91bmQpOgooV2ViS2l0OjpXS1ZpZXdJ
bXBsOjp0cmFuc3BhcmVudEJhY2tncm91bmQpOgooV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXREcmF3
QmFja2dyb3VuZCk6CihXZWJLaXQ6OldLVmlld0ltcGw6OmRyYXdCYWNrZ3JvdW5kKToKKFdlYktp
dDo6V0tWaWV3SW1wbDo6cGFnZVJlZik6CiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2Js
dWVzcXVhcmUuaHRtbDogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3JlZHNx
dWFyZS5odG1sOiBBZGRlZC4KKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2Vz
L3F0Y2Jfbm9CYWNrZ3JvdW5kLnBuZzogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9o
dG1sL3Jlc291cmNlcy9xdGNiX3BhaW50LnBuZzogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9xdGNiL3F0Y2IucHJvOiBBZGRlZC4KKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2Iv
dHN0X3F0Y2IuY3BwOiBBZGRlZC4KKHdlYkNvbnRleHQpOgooY3JlYXRlV2ViUGFnZUdyb3VwKToK
KHdlYlBhZ2VHcm91cCk6CihXZWJWaWV3KToKKFdlYlZpZXc6OldlYlZpZXcpOgooV2ViVmlldzo6
bG9hZCk6CihXZWJWaWV3OjpzZXREcmF3QmFja2dyb3VuZCk6CihXZWJWaWV3OjpzZXRUcmFuc3Bh
cmVudEJhY2tncm91bmQpOgooV2ViVmlldzo6c25hcHNob3QpOgooV2ViVmlldzo6dmlld05lZWRz
RGlzcGxheSk6CihXZWJWaWV3Ojp2aWV3UmVxdWVzdGVkU2Nyb2xsKToKKFdlYlZpZXc6OnZpZXdQ
cm9jZXNzQ3Jhc2hlZCk6CihXZWJWaWV3Ojp2aWV3UHJvY2Vzc1JlbGF1bmNoZWQpOgooV2ViVmll
dzo6dmlld0NvbnRlbnRTaXplQ2hhbmdlZCk6CihXZWJWaWV3Ojp2aWV3UmVxdWVzdGVkQ3Vyc29y
T3ZlcnJpZGUpOgooV2ViVmlldzo6ZG9uZVdpdGhLZXlFdmVudCk6CihXZWJWaWV3Ojpkb25lV2l0
aFRvdWNoRXZlbnQpOgooV2ViVmlldzo6ZmluaXNoTG9hZEZvckZyYW1lKToKKGNvbXBhcmVJbWFn
ZXMpOgoodHN0X3F0Y2IpOgoodHN0X3F0Y2I6OnRzdF9xdGNiKToKKHRzdF9xdGNiOjpwYWludCk6
Cih0c3RfcXRjYjo6bm9CYWNrZ3JvdW5kMSk6Cih0c3RfcXRjYjo6bm9CYWNrZ3JvdW5kMik6Cih0
c3RfcXRjYjo6ZG9QYWludCk6Cih0c3RfcXRjYjo6ZG9Ob0JhY2tncm91bmQxKToKKHRzdF9xdGNi
Ojpkb05vQmFja2dyb3VuZDIpOgoodHN0X3F0Y2I6OnJ1bik6CgpUb29sczoKCk1pbmlCcm93c2Vy
X2NiIGlzIGFuIHVzYWdlIGV4YW1wbGUgZm9yIHRoZSBXS1ZpZXcgQVBJLiBJdCBpcyBvbmx5IGFu
IGV4YW1wbGUKYW5kIGlzIG5vdCBmdWxseSBpbXBsZW1lbnRlZC4KClJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKKiBNaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaTogQWRkZWQu
CiogTWluaUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9jYi5wcm86IEFkZGVkLgoqIE1pbmlCcm93
c2VyL3F0Y2IvVGFyZ2V0LnByaTogQWRkZWQuCiogTWluaUJyb3dzZXIvcXRjYi9WaWV3LmNwcDog
QWRkZWQuCihjcmVhdGVXZWJDb250ZXh0KToKKGNyZWF0ZVdlYlBhZ2VHcm91cCk6CihWaWV3Ojp+
Vmlldyk6CihWaWV3OjpWaWV3KToKKFZpZXc6OmV4cG9zZUV2ZW50KToKKFZpZXc6OnJlc2l6ZUV2
ZW50KToKKFZpZXc6OnRpbWVyRXZlbnQpOgooVmlldzo6dmlld05lZWRzRGlzcGxheSk6CihWaWV3
Ojp2aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUpOgooVmlldzo6ZG9uZVdpdGhLZXlFdmVudCk6
CihtYWluKToKKiBNaW5pQnJvd3Nlci9xdGNiL1ZpZXcuaDogQWRkZWQuCihWaWV3KToKKFZpZXc6
OnZpZXdSZXF1ZXN0ZWRTY3JvbGwpOgooVmlldzo6dmlld1Byb2Nlc3NDcmFzaGVkKToKKFZpZXc6
OnZpZXdQcm9jZXNzUmVsYXVuY2hlZCk6CihWaWV3Ojp2aWV3Q29udGVudFNpemVDaGFuZ2VkKToK
KFZpZXc6OmRvbmVXaXRoVG91Y2hFdmVudCk6CihWaWV3OjprZXlQcmVzc0V2ZW50KToKKFZpZXc6
OmtleVJlbGVhc2VFdmVudCk6CihWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgooVmlldzo6
bW91c2VNb3ZlRXZlbnQpOgooVmlldzo6bW91c2VQcmVzc0V2ZW50KToKKFZpZXc6Om1vdXNlUmVs
ZWFzZUV2ZW50KToKKiBUb29scy5wcm86Ci0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICsKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEzNCArKysrKysrKysrKysKIFNvdXJjZS9X
ZWJLaXQyL1RhcmdldC5wcmkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgOCArCiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAgICB8ICAgMTAgKwog
Li4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggfCAgICA0
ICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlldy5oICAgICAgIHwg
IDEwMSArKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmll
d0ltcGwuY3BwIHwgIDE1NiArKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oICAgfCAgMTYzICsrKysrKysrKysrKysrKwogLi4uL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9ibHVlc3F1YXJlLmh0bWwgICAgfCAgICA1ICsKIC4u
Li9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVkc3F1YXJlLmh0bWwgICAgIHwgICAgNSAr
CiAuLi4vcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9ub0JhY2tncm91bmQucG5nICB8ICBC
aW4gMCAtPiA2OTYgYnl0ZXMKIC4uLi9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9w
YWludC5wbmcgICAgIHwgIEJpbiAwIC0+IDY2NyBieXRlcwogLi4uL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9xdGNiL3F0Y2IucHJvICAgfCAgICAzICsKIC4uLi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3F0Y2IvdHN0X3F0Y2IuY3BwICAgICAgIHwgIDIxNyArKysrKysrKysrKysrKysr
KysrKwogU291cmNlL3Rlc3RzLnByaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICA0ICsKIFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICA0MCArKysrCiBUb29scy9NaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnBy
aSAgICAgICAgICB8ICAgIDYgKwogVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9j
Yi5wcm8gICAgICAgICAgfCAgICA5ICsKIFRvb2xzL01pbmlCcm93c2VyL3F0Y2IvVGFyZ2V0LnBy
aSAgICAgICAgICAgICAgICAgIHwgICAxNiArKwogVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9WaWV3
LmNwcCAgICAgICAgICAgICAgICAgICAgfCAgMTM4ICsrKysrKysrKysrKysKIFRvb2xzL01pbmlC
cm93c2VyL3F0Y2IvVmlldy5oICAgICAgICAgICAgICAgICAgICAgIHwgICA2NyArKysrKysKIFRv
b2xzL1Rvb2xzLnBybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgNSAr
CiAyMiBmaWxlcyBjaGFuZ2VkLCAxMTAyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXcuaAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlld0ltcGwu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAv
cXQvV0tWaWV3SW1wbC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRt
bAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9ub0JhY2tncm91bmQucG5nCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9x
dGNiX3BhaW50LnBuZwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcXRjYi9xdGNiLnBybwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRjYi90c3RfcXRjYi5jcHAKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2IucHJv
CiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9UYXJnZXQucHJpCiBj
cmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIvcXRjYi9WaWV3LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F0Y2IvVmlldy5oCgpkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDRhNDg3ZDUuLjI4MjRjYWEgMTAwNjQ0Ci0tLSBh
L0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0wNi0wNiAg
THVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1b
V0syXSBQcml2YXRlIG5vbi1RdFF1aWNrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzIKKworICAgICAgICBBUEkgdGVzdHMgZm9yIFdLVmll
dy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNv
dXJjZS90ZXN0cy5wcmk6CisKIDIwMTItMDYtMDQgIEh1Z28gUGFyZW50ZSBMaW1hICA8aHVnby5s
aW1hQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAgVHVybiBMRUdBQ1lfVklFV1BPUlRfQURBUFRJ
T04gVVNFIGZsYWcgaW50byBhbiBFTkFCTEUgZmxhZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3MTM4ZjEwLi5j
NzNjZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM3IEBACisyMDEyLTA2LTA2ICBMdWl6IEFn
b3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIFBy
aXZhdGUgbm9uLVF0UXVpY2sgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NDUzMgorCisgICAgICAgIEFkZGluZyBuZXcgcHJpdmF0ZSBub24tUXRR
dWljayBBUEkuCisKKyAgICAgICAgVGhpcyBpcyBub3QgcHVibGljIEFQSS4gSXQgbWF5IGNoYW5n
ZSB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZQorICAgICAgICBpbiBmdXR1cmUgYW5kIHdlIG1h
a2Ugbm8gY29tbWl0bWVudCByZWdhcmRpbmcgc291cmNlIGNvbXBhdGliaWxpdHkKKyAgICAgICAg
b3IgYmluYXJ5IGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBv
c2l0aW5nTW9kZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0Rm9yY2VDb21wb3NpdGluZ01v
ZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlldy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXS1ZpZXdDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvY3BwL3F0L1dLVmlld0ltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldLVmlldzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6V0tWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6On5XS1ZpZXdJbXBs
KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Q3Vyc29yKToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSk6CisgICAgICAgIChXZWJL
aXQ6OldLVmlld0ltcGw6OnNldEZvY3VzZWQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBs
OjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0QWN0aXZlKToK
KyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6
OldLVmlld0ltcGw6OnBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6a2V5RXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjptb3VzZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V0tWaWV3SW1wbDo6d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldLVmll
d0ltcGw6OnRvdWNoRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkb25lV2l0
aEtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZG9uZVdpdGhUb3VjaEV2
ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmg6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdLVmlld0ltcGwpOgorICAgICAgICAoV2Vi
S2l0OjpXS1ZpZXdJbXBsOjpwYWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6c2V0RmluZEluZGljYXRvcik6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmRpZENv
bW1pdExvYWRGb3JNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRG
aW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V0tWaWV3SW1wbDo6Y3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToKKyAgICAgICAg
KFdlYktpdDo6V0tWaWV3SW1wbDo6c2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToK
KyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5G
cmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmZpbmRTdHJpbmdJbkN1c3RvbVJl
cHJlc2VudGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Y291bnRTdHJpbmdN
YXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0lt
cGw6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6V0tWaWV3SW1wbDo6aGFuZGxlQXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlv
blJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpoYW5kbGVQcm94eUF1dGhl
bnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6
cmVnaXN0ZXJFZGl0Q29tbWFuZCk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmNsZWFy
QWxsRWRpdENvbW1hbmRzKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Y2FuVW5kb1Jl
ZG8pOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpleGVjdXRlVW5kb1JlZG8pOgorICAg
ICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpjb252ZXJ0VG9EZXZpY2VTcGFjZSk6CisgICAgICAg
IChXZWJLaXQ6OldLVmlld0ltcGw6OmNvbnZlcnRUb1VzZXJTcGFjZSk6CisgICAgICAgIChXZWJL
aXQ6OldLVmlld0ltcGw6OnNjcmVlblRvV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3
SW1wbDo6d2luZG93VG9TY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjplbnRl
ckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1w
bDo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2Vi
S2l0OjpXS1ZpZXdJbXBsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldLVmlld0ltcGw6OmRvbmVXaXRoR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6ZGlzcGxheVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzY3Jv
bGxWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVV
cGRhdGVzKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkRmluZFpvb21hYmxlQXJl
YSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnNldEN1cnNvckhpZGRlblVudGlsTW91
c2VNb3Zlcyk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OnRvb2xUaXBDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c3RhcnREcmFnKToKKyAgICAgICAgKFdlYktp
dDo6V0tWaWV3SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpX
S1ZpZXdJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJ
bXBsOjpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpkaWRS
ZWxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpzZXRWaWV3TmVl
ZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6ZGlkQ2hhbmdlQ29udGVu
dHNTaXplKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6aXNWaWV3Rm9jdXNlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmlzVmlld1Zpc2libGUpOgorICAgICAgICAoV2Vi
S2l0OjpXS1ZpZXdJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpX
S1ZpZXdJbXBsOjppc1ZpZXdJbldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6
OnZpZXdTaXplKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6OmlzRm9jdXNlZCk6CisgICAgICAgIChXZWJLaXQ6
OldLVmlld0ltcGw6OmlzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldLVmlld0ltcGw6Omlz
QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V0tWaWV3SW1wbDo6c2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldLVmlld0ltcGw6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCk6CisgICAgICAgIChX
ZWJLaXQ6OldLVmlld0ltcGw6OnRyYW5zcGFyZW50QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJL
aXQ6OldLVmlld0ltcGw6OnNldERyYXdCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktpdDo6V0tW
aWV3SW1wbDo6ZHJhd0JhY2tncm91bmQpOgorICAgICAgICAoV2ViS2l0OjpXS1ZpZXdJbXBsOjpw
YWdlUmVmKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvYmx1ZXNxdWFy
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVk
c3F1YXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRt
bC9yZXNvdXJjZXMvcXRjYl9ub0JhY2tncm91bmQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F0Y2JfcGFpbnQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2IvcXRjYi5wcm86IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRjYi90c3RfcXRjYi5jcHA6IEFkZGVk
LgorICAgICAgICAod2ViQ29udGV4dCk6CisgICAgICAgIChjcmVhdGVXZWJQYWdlR3JvdXApOgor
ICAgICAgICAod2ViUGFnZUdyb3VwKToKKyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAoV2Vi
Vmlldzo6V2ViVmlldyk6CisgICAgICAgIChXZWJWaWV3Ojpsb2FkKToKKyAgICAgICAgKFdlYlZp
ZXc6OnNldERyYXdCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYlZpZXc6OnNldFRyYW5zcGFyZW50
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJWaWV3OjpzbmFwc2hvdCk6CisgICAgICAgIChXZWJW
aWV3Ojp2aWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYlZpZXc6OnZpZXdSZXF1ZXN0ZWRT
Y3JvbGwpOgorICAgICAgICAoV2ViVmlldzo6dmlld1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAg
KFdlYlZpZXc6OnZpZXdQcm9jZXNzUmVsYXVuY2hlZCk6CisgICAgICAgIChXZWJWaWV3Ojp2aWV3
Q29udGVudFNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZXc6OnZpZXdSZXF1ZXN0ZWRDdXJz
b3JPdmVycmlkZSk6CisgICAgICAgIChXZWJWaWV3Ojpkb25lV2l0aEtleUV2ZW50KToKKyAgICAg
ICAgKFdlYlZpZXc6OmRvbmVXaXRoVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpmaW5p
c2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoY29tcGFyZUltYWdlcyk6CisgICAgICAgICh0c3Rf
cXRjYik6CisgICAgICAgICh0c3RfcXRjYjo6dHN0X3F0Y2IpOgorICAgICAgICAodHN0X3F0Y2I6
OnBhaW50KToKKyAgICAgICAgKHRzdF9xdGNiOjpub0JhY2tncm91bmQxKToKKyAgICAgICAgKHRz
dF9xdGNiOjpub0JhY2tncm91bmQyKToKKyAgICAgICAgKHRzdF9xdGNiOjpkb1BhaW50KToKKyAg
ICAgICAgKHRzdF9xdGNiOjpkb05vQmFja2dyb3VuZDEpOgorICAgICAgICAodHN0X3F0Y2I6OmRv
Tm9CYWNrZ3JvdW5kMik6CisgICAgICAgICh0c3RfcXRjYjo6cnVuKToKKwogMjAxMi0wNi0wNCAg
U2FkcnVsIEhhYmliIENob3dkaHVyeSAgPHNhZHJ1bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBGaXggc29mdHdhcmUgcmVuZGVyaW5nIGZvciBkZXZpY2Utc2NhbGUtZmFjdG9y
ID4gMQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkKaW5kZXggMjE2YWI1Yi4uYjM1NzU0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC03
OTUsNiArNzk1LDE0IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9UT1VDSF9FVkVOVFM9MSkg
ewogICAgICAgICBTaGFyZWQvcXQvTmF0aXZlV2ViVG91Y2hFdmVudFF0LmNwcAogfQogCitjb250
YWlucyhDT05GSUcsIHF0Y2IpIHsKKyAgICBIRUFERVJTICs9IFwKKyAgICAgICAgVUlQcm9jZXNz
L0FQSS9jcHAvcXQvV0tWaWV3LmggXAorICAgICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1Zp
ZXdJbXBsLmgKKyAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgVUlQcm9jZXNzL0FQSS9jcHAvcXQv
V0tWaWV3SW1wbC5jcHAKK30KKwogY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0dFT0xPQ0FUSU9O
PTEpOiBRVCArPSBsb2NhdGlvbgogCiBwbHVnaW5fYmFja2VuZF94bGliIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCA5ZmU4ZDZh
Li42ZDAzZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
cmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXMuY3BwCkBAIC0zODgsNiArMzg4LDE2IEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
CiAgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkKCk7CiB9CiAKK3ZvaWQgV0tQcmVmZXJlbmNlc1NldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZmxhZykKK3sKKyAgICB0
b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShmbGFnKTsKK30K
KworYm9vbCBXS1ByZWZlcmVuY2VzR2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+Zm9yY2VDb21wb3NpdGluZ01vZGUoKTsKK30KKwogdm9pZCBXS1ByZWZlcmVuY2VzU2V0Q29t
cG9zaXRpbmdCb3JkZXJzVmlzaWJsZShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIGZsYWcpCiB7CiAgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Q29tcG9zaXRpbmdC
b3JkZXJzVmlzaWJsZShmbGFnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggNmRiYzQ3My4uMjM4MmE3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmgKQEAgLTc2LDYgKzc2LDEwIEBAIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmLCBiCiBXS19F
WFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
V0tQcmVmZXJlbmNlc1JlZik7CiAKIC8vIERlZmF1bHRzIHRvIGZhbHNlLgorV0tfRVhQT1JUIHZv
aWQgV0tQcmVmZXJlbmNlc1NldEZvcmNlQ29tcG9zaXRpbmdNb2RlKFdLUHJlZmVyZW5jZXNSZWYs
IGJvb2wpOworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEZvcmNlQ29tcG9zaXRpbmdN
b2RlKFdLUHJlZmVyZW5jZXNSZWYpOworCisvLyBEZWZhdWx0cyB0byBmYWxzZS4KIFdLX0VYUE9S
VCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKFdLUHJlZmVy
ZW5jZXNSZWYsIGJvb2wpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldENvbXBvc2l0
aW5nQm9yZGVyc1Zpc2libGUoV0tQcmVmZXJlbmNlc1JlZik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMGJkZjc2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvY3BwL3F0L1dLVmlldy5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisvKgorICAgIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgcHVibGljIFF0IEFw
aS4gSXQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZSBpbiBmdXR1cmUuCisg
ICAgV2UgbWFrZSBubyBjb21taXRtZW50IHJlZ2FyZGluZyBzb3VyY2UgY29tcGF0aWJpbGl0eSBv
ciBiaW5hcnkgY29tcGF0aWJpbGl0eS4KKyovCisKKyNpZm5kZWYgV0tWaWV3X2gKKyNkZWZpbmUg
V0tWaWV3X2gKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNsdWRlIDxXZWJLaXQy
L1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlLmg+CisjaW5jbHVkZSA8V2Vi
S2l0Mi9XS1BhZ2VHcm91cC5oPgorCitjbGFzcyBRUmVjdDsKK2NsYXNzIFFSZWN0RjsKK2NsYXNz
IFFQb2ludDsKK2NsYXNzIFFTaXplOworY2xhc3MgUUtleUV2ZW50OworY2xhc3MgUU1vdXNlRXZl
bnQ7CitjbGFzcyBRV2hlZWxFdmVudDsKK2NsYXNzIFFUb3VjaEV2ZW50OworY2xhc3MgUVVybDsK
K2NsYXNzIFFNYXRyaXg0eDQ7CitjbGFzcyBRQ3Vyc29yOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV0tWaWV3OworCitjbGFzcyBXS1ZpZXdDbGllbnQgeworcHVibGljOgorICAgIHZp
cnR1YWwgfldLVmlld0NsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHZpZXdOZWVkc0Rp
c3BsYXkoY29uc3QgUVJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRT
Y3JvbGwoY29uc3QgUVBvaW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc0Ny
YXNoZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld0NvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6ZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNvbnN0
IFFDdXJzb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3Qg
UUtleUV2ZW50KiwgYm9vbCB3YXNIYW5kbGVkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRvbmVX
aXRoVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgPSAwOwor
fTsKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgV0tWaWV3IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFs
IH5XS1ZpZXcoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgPSAwOworCisg
ICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgUVNpemUmKSA9IDA7CisgICAgdmlydHVhbCBR
U2l6ZSBzaXplKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmlz
aWJsZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwg
dm9pZCBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9v
bCB0cmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RHJhd0JhY2tncm91bmQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3QmFja2dy
b3VuZCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBwYWludChjb25zdCBRTWF0cml4
NHg0JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIHBhaW50RmxhZ3MpID0gMDsK
KworICAgIHZpcnR1YWwgV0tQYWdlUmVmIHBhZ2VSZWYoKSA9IDA7CisKKyAgICBzdGF0aWMgV0tW
aWV3KiBjcmVhdGUoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiwgV0tWaWV3Q2xpZW50Kik7
CisKKyAgICB2aXJ0dWFsIHZvaWQga2V5RXZlbnQoUUtleUV2ZW50KikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBtb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiwgaW50IGNsaWNrQ291bnQgPSAwKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKSA9IDA7Cit9OworCit9CisKKyNlbmRp
ZiAvLyBXS1ZpZXdfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9j
cHAvcXQvV0tWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9x
dC9XS1ZpZXdJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWRk
ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAv
cXQvV0tWaWV3SW1wbC5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChD
KSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAg
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1ZpZXdJbXBsLmgiCisKKyNpbmNsdWRl
ICJDdXJzb3IuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgorI2luY2x1ZGUg
IkxheWVyVHJlZUhvc3RQcm94eS5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQu
aCIKKyNpbmNsdWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2Vi
VG91Y2hFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCIKKyNpbmNs
dWRlICJXZWJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgorCisjaW5j
bHVkZSA8UVRyYW5zZm9ybT4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVmlldy5oPgorCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXS1ZpZXcqIFdLVmlldzo6Y3JlYXRlKFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFdLVmlld0NsaWVudCogY2xpZW50
KQoreworICAgIGlmICghY29udGV4dFJlZiB8fCAhcGFnZUdyb3VwUmVmKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbmV3IFdLVmlld0ltcGwodG9JbXBsKGNvbnRleHRSZWYpLCB0b0lt
cGwocGFnZUdyb3VwUmVmKSwgY2xpZW50KTsKK30KKworV0tWaWV3SW1wbDo6V0tWaWV3SW1wbChX
ZWJDb250ZXh0KiBjb250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgV0tWaWV3Q2xpZW50
KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3dlYlBhZ2VQcm94eShj
b250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHBhZ2VHcm91cCkpCit7Cit9CisKK1dLVmlld0lt
cGw6On5XS1ZpZXdJbXBsKCkKK3sKK30KKwordm9pZCBXS1ZpZXdJbXBsOjpzZXRDdXJzb3IoY29u
c3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCit7CisgICAgbV9jbGllbnQtPnZpZXdSZXF1ZXN0
ZWRDdXJzb3JPdmVycmlkZSgqY3Vyc29yLnBsYXRmb3JtQ3Vyc29yKCkpOworfQorCitQYXNzT3du
UHRyPERyYXdpbmdBcmVhUHJveHk+IFdLVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHko
KQoreworICAgIHJldHVybiBEcmF3aW5nQXJlYVByb3h5SW1wbDo6Y3JlYXRlKG1fd2ViUGFnZVBy
b3h5LmdldCgpKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNl
ZCkKK3sKKyAgICBtX2ZvY3VzZWQgPSBmb2N1c2VkOworICAgIG1fd2ViUGFnZVByb3h5LT52aWV3
U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkKTsKK30KKwordm9pZCBX
S1ZpZXdJbXBsOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBtX3Zpc2libGUgPSB2
aXNpYmxlOworICAgIG1fd2ViUGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVBy
b3h5OjpWaWV3SXNWaXNpYmxlKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjpzZXRBY3RpdmUoYm9v
bCBhY3RpdmUpCit7CisgICAgbV9hY3RpdmUgPSBhY3RpdmU7CisgICAgbV93ZWJQYWdlUHJveHkt
PnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdXaW5kb3dJc0FjdGl2ZSk7Cit9
CisKK3ZvaWQgV0tWaWV3SW1wbDo6c2V0U2l6ZShjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBt
X3NpemUgPSBzaXplOworICAgIG1fd2ViUGFnZVByb3h5LT5zZXRWaWV3cG9ydFNpemUoc2l6ZSk7
CisKKworICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHkt
PmRyYXdpbmdBcmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOwor
CisKKyAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShtX3NpemUsIFdlYkNvcmU6OkludFNpemUoKSk7
CisgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVj
dChXZWJDb3JlOjpJbnRQb2ludCgpLCBtX3NpemUpLCAxLCBXZWJDb3JlOjpGbG9hdFBvaW50KCkp
OworfQorCit2b2lkIFdLVmlld0ltcGw6OnBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9y
bSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgcGFpbnRGbGFncykKK3sKKyAgICBEcmF3aW5nQXJl
YVByb3h5KiBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAg
IGlmICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybjsKKworICAgIExheWVyVHJlZUhvc3RQ
cm94eSogbGF5ZXJUcmVlSG9zdFByb3h5ID0gZHJhd2luZ0FyZWEtPmxheWVyVHJlZUhvc3RQcm94
eSgpOworICAgIGlmICghbGF5ZXJUcmVlSG9zdFByb3h5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJMYXllclRyZWVSZW5kZXJlciogcmVuZGVyZXIgPSBsYXllclRyZWVIb3N0UHJveHktPmxh
eWVyVHJlZVJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcmVuZGVyZXItPnNldEFjdGl2ZSh0cnVlKTsKKyAgICByZW5kZXJlci0+c2V0VmlzaWJs
ZUNvbnRlbnRzUmVjdChXZWJDb3JlOjpJbnRSZWN0KFdlYkNvcmU6OkludFBvaW50KCksIG1fc2l6
ZSksIDEsIFdlYkNvcmU6OkZsb2F0UG9pbnQoKSk7CisgICAgcmVuZGVyZXItPnN5bmNSZW1vdGVD
b250ZW50KCk7CisKKyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCgwLCAwLCBtX3NpemUud2lk
dGgoKSwgbV9zaXplLmhlaWdodCgpKTsKKworICAgIHJlbmRlcmVyLT5wYWludFRvQ3VycmVudEdM
Q29udGV4dCh0cmFuc2Zvcm0sIG9wYWNpdHksIHJlY3QsIHBhaW50RmxhZ3MpOworfQorCit2b2lk
IFdLVmlld0ltcGw6OmtleUV2ZW50KFFLZXlFdmVudCogZXZlbnQpCit7CisgICAgbV93ZWJQYWdl
UHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCkp
OworfQorCit2b2lkIFdLVmlld0ltcGw6Om1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBp
bnQgY2xpY2tDb3VudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChO
YXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LCBRVHJhbnNmb3JtKCksIGNsaWNrQ291bnQpKTsKK30K
Kwordm9pZCBXS1ZpZXdJbXBsOjp3aGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBldmVudCkKK3sKKyAg
ICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KGV2
ZW50LCBRVHJhbnNmb3JtKCkpKTsKK30KKwordm9pZCBXS1ZpZXdJbXBsOjp0b3VjaEV2ZW50KFFU
b3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVu
dChOYXRpdmVXZWJUb3VjaEV2ZW50KGV2ZW50LCBRVHJhbnNmb3JtKCkpKTsKK30KKwordm9pZCBX
S1ZpZXdJbXBsOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
IGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBtX2NsaWVudC0+ZG9uZVdpdGhL
ZXlFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCB3YXNFdmVudEhhbmRsZWQpOworfQorCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgV0tWaWV3SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50
KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkK
K3sKKyAgICBtX2NsaWVudC0+ZG9uZVdpdGhUb3VjaEV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCks
IHdhc0V2ZW50SGFuZGxlZCk7Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tWaWV3SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjhmNmZkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2NwcC9xdC9XS1ZpZXdJbXBsLmgKQEAgLTAsMCArMSwxNjMgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisKKy8qCisgICAgVGhpcyBmaWxlIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJs
aWMgUXQgQXBpLiBJdCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlIGF0IGFueSB0aW1lIGluIGZ1
dHVyZS4KKyAgICBXZSBtYWtlIG5vIGNvbW1pdG1lbnQgcmVnYXJkaW5nIHNvdXJjZSBjb21wYXRp
YmlsaXR5IG9yIGJpbmFyeSBjb21wYXRpYmlsaXR5LgorKi8KKworI2lmbmRlZiBXS1ZpZXdJbXBs
X2gKKyNkZWZpbmUgV0tWaWV3SW1wbF9oCisKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5j
bHVkZSAiV0tWaWV3LmgiCisjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1
ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKKyNpbmNsdWRlIDxRVXJsPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV0tWaWV3SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50ICwgcHVibGlj
IFdLVmlldyB7CitwdWJsaWM6CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpIHsgfQor
CisgICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxGaW5kSW5kaWNh
dG9yPiwgYm9vbCBmYWRlT3V0LCBib29sIGFuaW1hdGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKGJvb2wgdXNlQ3VzdG9tUmVwcmVzZW50YXRpb24pIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2Vu
dGF0aW9uKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IENvcmVJUEM6OkRh
dGFSZWZlcmVuY2UmKSB7IH0KKyAgICB2aXJ0dWFsIGRvdWJsZSBjdXN0b21SZXByZXNlbnRhdGlv
blpvb21GYWN0b3IoKSB7IHJldHVybiAxOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVJl
cHJlc2VudGF0aW9uWm9vbUZhY3Rvcihkb3VibGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKCkgY29uc3QgeyB9CisgICAgdmlydHVhbCB2b2lk
IGZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYsIFdlYktpdDo6
RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0cmluZyYs
IFdlYktpdDo6RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpIHsgfQorCisgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMmIGF0dHIpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSogZG93bmxvYWQpIHsg
LyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dGhl
bnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGNvbnN0IFN0
cmluZyYgcmVhbG0sIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUsIFN0cmluZyYgdXNl
cm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSwgYm9vbCYgaWdub3JlRXJyb3JzKSB7IC8qIEZJWE1FOiBJbXBsZW1l
bnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJveHlBdXRoZW50aWNhdGlvblJlcXVp
cmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50MTZfdCBwb3J0LCBjb25zdCBT
dHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3
b3JkKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQ
cm94eTo6VW5kb09yUmVkbykgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVh
bCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgeyB9CisgICAgdmlydHVhbCBib29sIGNhblVu
ZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5k
b1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pIHsgLyogRklYTUU6IElt
cGxlbWVudC4gKi8gfQorCisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRv
RGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0KSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIHJldHVybiByZWN0OyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJl
Y3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkgeyAv
KiBGSVhNRTogSW1wbGVtZW50LiAqLyByZXR1cm4gcmVjdDsgfQorICAgIHZpcnR1YWwgV2ViQ29y
ZTo6SW50UG9pbnQgc2NyZWVuVG9XaW5kb3coY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
KSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIHJldHVybiBwb2ludDsgfQorICAgIHZpcnR1YWwg
V2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBy
ZWN0KSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIHJldHVybiByZWN0OyB9CisKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2b2lkIGVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsgLyogRklYTUU6IElt
cGxlbWVudC4gKi8gfQorICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIHsg
LyogRklYTUU6IEltcGxlbWVudC4gKi8gfQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpIHsgLyog
RklYTUU6IEltcGxlbWVudC4gKi8gfQorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICB2
aXJ0dWFsIHZvaWQgZG9uZVdpdGhHZXN0dXJlRXZlbnQoY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBl
dmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gfQor
I2VuZGlmCisgICAgdmlydHVhbCB2b2lkIGRpc3BsYXlWaWV3KCkgeyAvKiBGSVhNRTogSW1wbGVt
ZW50LiAqLyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFZpZXcoY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KSB7
IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgdm9pZCBmbGFzaEJhY2tp
bmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JikgeyAvKiBGSVhN
RTogSW1wbGVtZW50LiAqLyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29tYWJsZUFyZWEo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHRhcmdldCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
YXJlYSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wgaGlkZGVuVW50aWxNb3VzZU1vdmVzKSB7
IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKyAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5n
ZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBuZXdUb29sdGlwKSB7IC8qIEZJWE1FOiBJ
bXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgdm9pZCBzdGFydERyYWcoY29uc3QgV2ViQ29y
ZTo6RHJhZ0RhdGEmIGRyYWdEYXRhLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0lt
YWdlKSB7IC8qIEZJWE1FOiBJbXBsZW1lbnQuICovIH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5KiB3
ZWJQYWdlUHJveHkpIHsgLyogRklYTUU6IEltcGxlbWVudC4gKi8gcmV0dXJuIFBhc3NSZWZQdHI8
V2ViUG9wdXBNZW51UHJveHk+KCk7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29udGV4
dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJQYWdlUHJveHkqIHdlYlBhZ2VQ
cm94eSkgeyAvKiBGSVhNRTogSW1wbGVtZW50LiAqLyByZXR1cm4gUGFzc1JlZlB0cjxXZWJDb250
ZXh0TWVudVByb3h5PigpOyB9CisKKyAgICBXS1ZpZXdJbXBsKFdlYkNvbnRleHQqLCBXZWJQYWdl
R3JvdXAqLCBXS1ZpZXdDbGllbnQqKTsKKyAgICB+V0tWaWV3SW1wbCgpOworCisgICAgLy8gUGFn
ZUNsaWVudAorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0
ZURyYXdpbmdBcmVhUHJveHkoKTsKKworICAgIHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNj
cm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zKSB7IG1fY2xpZW50LT52aWV3UmVxdWVz
dGVkU2Nyb2xsKHBvcyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCkgeyBt
X2NsaWVudC0+dmlld1Byb2Nlc3NDcmFzaGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVs
YXVuY2hQcm9jZXNzKCkgeyBtX2NsaWVudC0+dmlld1Byb2Nlc3NSZWxhdW5jaGVkKCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiByZWN0KSB7IG1fY2xpZW50LT52aWV3TmVlZHNEaXNwbGF5KHJlY3QpOyB9CisgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdT
aXplKSB7IG1fY2xpZW50LT52aWV3Q29udGVudFNpemVDaGFuZ2VkKG5ld1NpemUpOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKTsKKworICAgIHZp
cnR1YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCkgeyByZXR1cm4gbV9mb2N1c2VkOyB9CisgICAgdmly
dHVhbCBib29sIGlzVmlld1Zpc2libGUoKSB7IHJldHVybiBtX3Zpc2libGU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNWaWV3V2luZG93QWN0aXZlKCkgeyByZXR1cm4gbV9hY3RpdmU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaXNWaWV3SW5XaW5kb3coKSB7IHJldHVybiB0cnVlOyB9IC8vIEZJWE1FCisg
ICAgdmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgeyByZXR1cm4gbV9zaXplOyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXli
b2FyZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOworI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJU
b3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOworI2VuZGlmCisKKyAgICAvLyBXS1Zp
ZXcKKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgeyBtX3dlYlBhZ2VQcm94eS0+aW5p
dGlhbGl6ZVdlYlBhZ2UoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCk7
CisgICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9jdXNlZDsg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CisgICAgdmlydHVhbCBib29s
IGlzVmlzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZTsgfQorCisgICAgdmlydHVhbCB2
b2lkIHNldEFjdGl2ZShib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7
IHJldHVybiBtX2FjdGl2ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFNpemUoY29uc3QgUVNp
emUmKTsKKyAgICB2aXJ0dWFsIFFTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB2YWx1ZSkg
eyBtX3dlYlBhZ2VQcm94eS0+c2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQodmFsdWUpOyB9
CisgICAgdmlydHVhbCBib29sIHRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViUGFnZVByb3h5LT5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpOyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0RHJhd0JhY2tncm91bmQoYm9vbCB2YWx1ZSkgeyBtX3dlYlBhZ2VQcm94
eS0+c2V0RHJhd3NCYWNrZ3JvdW5kKHZhbHVlKTsgfQorICAgIHZpcnR1YWwgYm9vbCBkcmF3QmFj
a2dyb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViUGFnZVByb3h5LT5kcmF3c0JhY2tncm91bmQo
KTsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9y
bSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgUGFpbnRGbGFncyk7CisKKyAgICBXS1BhZ2VSZWYg
cGFnZVJlZigpIHsgcmV0dXJuIHRvQVBJKG1fd2ViUGFnZVByb3h5LmdldCgpKTsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGtleUV2ZW50KFFLZXlFdmVudCopOworICAgIHZpcnR1
YWwgdm9pZCBtb3VzZUV2ZW50KFFNb3VzZUV2ZW50KiwgaW50IGNsaWNrQ291bnQgPSAwKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2hlZWxFdmVudChRV2hlZWxFdmVudCopOworICAgIHZpcnR1YWwgdm9p
ZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CisKK3ByaXZhdGU6CisgICAgYm9vbCBtX2ZvY3Vz
ZWQ7CisgICAgYm9vbCBtX3Zpc2libGU7CisgICAgYm9vbCBtX2FjdGl2ZTsKKyAgICBRU2l6ZSBt
X3NpemU7CisgICAgUVVybCBtX3VybDsKKworICAgIFdLVmlld0NsaWVudCogbV9jbGllbnQ7Cisg
ICAgV1RGOjpSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5OworfTsK
KworfQorCisjZW5kaWYgLy8gV0tWaWV3SW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvYmx1ZXNxdWFyZS5odG1sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGI2Mzk2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRt
bApAQCAtMCwwICsxLDUgQEAKKzxib2R5IHN0eWxlPSJtYXJnaW46NjBweCI+CisgICAgPHRhYmxl
IHN0eWxlPSJib3JkZXI6MTBweCBzb2xpZCBibHVlOyB3aWR0aDo4MHB4OyBoZWlnaHQ6ODBweCI+
CisgICAgICAgIDx0cj48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgIDwvdGFibGU+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwv
cmVkc3F1YXJlLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0
bWwvcmVkc3F1YXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcw
ZDI5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxib2R5IHN0eWxlPSJt
YXJnaW46MjBweCI+CisgICAgPHRhYmxlIHN0eWxlPSJib3JkZXI6MTBweCBzb2xpZCByZWQ7IHdp
ZHRoOjE2MHB4OyBoZWlnaHQ6MTYwcHgiPgorICAgICAgICA8dHI+PHRkPiZuYnNwOzwvdGQ+PC90
cj4KKyAgICA8L3RhYmxlPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xdGNiX25vQmFja2dyb3VuZC5wbmcg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F0
Y2Jfbm9CYWNrZ3JvdW5kLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODNmMDdjZWZmMjI4YmM4ZWJkZWRjYjE2
OTRmNTg1ODg4OGU0NzM2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA2OTYKemNtZUFTQE4/KG9s
SHlgdVZCcSFpYTB2cF5DcVM1azRNP3R5U1RfJHl1QHBPYmhId0J1NE0kMWBrazQ3KjVuMFRACnp6
O15fTThLLUxWTmkjNG9NUn5lN2hFJlhYZClKWSMkdzdlTztMI3VkXiZoaXVObWVAOTVNdFojV35w
JnxWYF9Cdgp6VGtlWTJoUDRiOSMqR2RGOTR0ZjxFemQ5VmVgJk95eXNkZURJPyF3XmBZZFdEfDY5
QSplQlBoIUU2cSlPMVVRJSkKejZ7dFdZWntMMFhxeCQjemNWNVRVMzl+ZGdDfiUrP2hqYDZqLXJz
Zm8qYlFtNl9jSWopU2VQNks3Y3VXTHlUJHQyCnpVa3F+XklJJWtJVmNZQzR4eFd9PEk8UU5WP3dp
Q25XIyNwWCYkKTJLIVI8e34rV0srRztmeW89bTxebj56QzVhYApQV0I+d0JTM2ozXlA2PHJfWF89
SWQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXRjYl9wYWludC5wbmcgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F0Y2JfcGFp
bnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjk1YmY2NzZmMjFhMDllZDM1MzI4MTkyZGNjYjUzNzYwNGY5MjQ3
OTIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDY2Nwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZw
XkNxUzVrNE0/dHlTVF8keXVAcE9iaEh3QnU0TSQxYGtrNDcqNW4wVEAKeno7Xl9NOEstTFZOaSM0
byo/UEotaEUmWFhkdUptanYhTVdrPExSM0p4fkYrKHhWQUF7JmRffUQ8eiFLIyt9Z2UwCno+bG93
cj1HUWEpRj5aN2E7OXd6PVhpMlltNiFscDc7ZilXJSstNnZId2Z2bUBDMEs2aWJNZmlfRV5LZ0E7
OXpOVAp6NyRzO0IxfiU5STskR2puU2E2RTFROSohJTM3cyZncFM8dDs1MDQjM3V9ZnBxMHY3d2ck
aE1EciU0ZmEoY1l2dmoKTiFQQ3t4V3R+JCg2OUM4cG47cmxGCgpsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0
Y2IvcXRjYi5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2Iv
cXRjYi5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkYzE5NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRj
Yi9xdGNiLnBybwpAQCAtMCwwICsxLDMgQEAKK2luY2x1ZGUoLi4vdGVzdHMucHJpKQorU09VUkNF
UyArPSAkJHtUQVJHRVR9LmNwcAorUVQgKz0gd2Via2l0LXByaXZhdGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXRjYi90c3RfcXRjYi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2IvdHN0X3F0Y2IuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZjAxZTIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F0Y2IvdHN0X3F0Y2Iu
Y3BwCkBAIC0wLDAgKzEsMjE3IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworI2luY2x1ZGUgIi4uL3V0
aWwuaCIKKworI2luY2x1ZGUgPFFJbWFnZT4KKyNpbmNsdWRlIDxRTWF0cml4NHg0PgorI2luY2x1
ZGUgPFFPcGVuR0xDb250ZXh0PgorI2luY2x1ZGUgPFFTaXplPgorI2luY2x1ZGUgPFFXaW5kb3c+
CisjaW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KKworI2luY2x1ZGUgPFdlYktpdDIvV0tDb250ZXh0
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tQcmVmZXJlbmNlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nUXQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dL
VVJMLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ZpZXcuaD4KKworc3RhdGljIFdLQ29udGV4dFJl
ZiB3ZWJDb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgV0tDb250ZXh0UmVmIHJlc3VsdCA9IFdLQ29u
dGV4dENyZWF0ZSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBXS1BhZ2VHcm91
cFJlZiBjcmVhdGVXZWJQYWdlR3JvdXAoY29uc3QgUVN0cmluZyYgbmFtZSkKK3sKKyAgICBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXAgPVdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tT
dHJpbmdDcmVhdGVXaXRoUVN0cmluZyhuYW1lKSk7CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwKTsKKyAgICBXS1By
ZWZlcmVuY2VzU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRy
dWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShwcmVmZXJlbmNl
cywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJl
ZmVyZW5jZXMsIHRydWUpOworCisgICAgcmV0dXJuIHBhZ2VHcm91cDsKK30KKworc3RhdGljIFdL
UGFnZUdyb3VwUmVmIHdlYlBhZ2VHcm91cChjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAgIHN0
YXRpYyBXS1BhZ2VHcm91cFJlZiByZXN1bHQgPSBjcmVhdGVXZWJQYWdlR3JvdXAobmFtZSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworY2xhc3MgV2ViVmlldyA6IHB1YmxpYyBRT2JqZWN0LCBw
dWJsaWMgV2ViS2l0OjpXS1ZpZXdDbGllbnQgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAg
V2ViVmlldyhjb25zdCBRU2l6ZSYgc2l6ZSkKKyAgICB7CisgICAgICAgIFdLUGFnZUxvYWRlckNs
aWVudCBsb2FkZXJDbGllbnQ7CisgICAgICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXpl
b2YoV0tQYWdlTG9hZGVyQ2xpZW50KSk7CisgICAgICAgIGxvYWRlckNsaWVudC5jbGllbnRJbmZv
ID0gdGhpczsKKyAgICAgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IFdl
YlZpZXc6OmZpbmlzaExvYWRGb3JGcmFtZTsKKworICAgICAgICBtX3dlYlZpZXcgPSBXZWJLaXQ6
OldLVmlldzo6Y3JlYXRlKHdlYkNvbnRleHQoKSwgd2ViUGFnZUdyb3VwKFFTdHJpbmcoKSksIHRo
aXMpOworICAgICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KG1fd2ViVmlldy0+cGFnZVJl
ZigpLCAmbG9hZGVyQ2xpZW50KTsKKyAgICAgICAgbV93ZWJWaWV3LT5pbml0aWFsaXplKCk7Cisg
ICAgICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5b3V0KG1fd2ViVmlldy0+cGFnZVJlZigpLCB0cnVl
KTsKKworICAgICAgICBtX3dlYlZpZXctPnNldFNpemUoc2l6ZSk7CisgICAgICAgIG1fd2ViVmll
dy0+c2V0Rm9jdXNlZCh0cnVlKTsKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRWaXNpYmxlKHRydWUp
OworICAgICAgICBtX3dlYlZpZXctPnNldEFjdGl2ZSh0cnVlKTsKKyAgICB9CisKKyAgICB+V2Vi
VmlldygpIHsgZGVsZXRlIG1fd2ViVmlldzsgfQorCisgICAgdm9pZCBsb2FkKGNvbnN0IFFTdHJp
bmcmIGh0bWwpCisgICAgeworICAgICAgICBtX2ZyYW1lTG9hZGVkID0gZmFsc2U7CisgICAgICAg
IFdLUGFnZUxvYWRVUkwobV93ZWJWaWV3LT5wYWdlUmVmKCksIFdLVVJMQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKGh0bWwudG9Bc2NpaSgpLmRhdGEoKSkpOworICAgICAgICBRVkVSSUZZKDo6d2FpdEZv
clNpZ25hbCh0aGlzLCBTSUdOQUwobG9hZGVkKCkpLCA1MDAwKSk7CisgICAgfQorCisgICAgdm9p
ZCBzZXREcmF3QmFja2dyb3VuZChib29sIHZhbHVlKSB7IG1fd2ViVmlldy0+c2V0RHJhd0JhY2tn
cm91bmQodmFsdWUpOyB9CisgICAgdm9pZCBzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB2
YWx1ZSkgeyBtX3dlYlZpZXctPnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCh2YWx1ZSk7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JikKKyAgICB7Cisg
ICAgICAgIG1fd2ViVmlldy0+cGFpbnQoUU1hdHJpeDR4NCgpLCAxLCAwKTsKKyAgICAgICAgaWYg
KG1fZnJhbWVMb2FkZWQpCisgICAgICAgICAgICBlbWl0IGxvYWRlZCgpOworICAgIH0KKworICAg
IHZpcnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc0NyYXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
dmlld1Byb2Nlc3NSZWxhdW5jaGVkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50
U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVl
c3RlZEN1cnNvck92ZXJyaWRlKGNvbnN0IFFDdXJzb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
ZG9uZVdpdGhLZXlFdmVudChjb25zdCBRS2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBi
b29sIHdhc0hhbmRsZWQpIHsgfQorCisgICAgc3RhdGljIHZvaWQgZmluaXNoTG9hZEZvckZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pOworCitzaWduYWxzOgorICAgIHZvaWQgbG9hZGVkKCk7CisK
K3ByaXZhdGU6CisgICAgV2ViS2l0OjpXS1ZpZXcqIG1fd2ViVmlldzsKKyAgICBib29sIG1fZnJh
bWVMb2FkZWQ7Cit9OworCit2b2lkIFdlYlZpZXc6OmZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKQoreworICAgIFdlYlZpZXcqIG9iaiA9IHN0YXRpY19jYXN0PFdlYlZpZXcq
Pihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgb2JqLT5tX2ZyYW1lTG9hZGVk
ID0gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY29tcGFyZUltYWdlcyhjb25zdCBRSW1hZ2UmIGkx
LCBjb25zdCBRSW1hZ2UmIGkyLCBjb25zdCBRUG9pbnQmIHAxLCBjb25zdCBRUG9pbnQmIHAyLCBp
bnQgaXRlcikKK3sKKyAgICBjb25zdCBRUG9pbnQgcG9pbnQoKHAxLngoKSArIHAyLngoKSkgPj4g
MSwgKHAxLnkoKSArIHAyLnkoKSkgPj4gMSk7CisKKyAgICBpZiAoaTEucGl4ZWwocG9pbnQpICE9
IGkyLnBpeGVsKHBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFpdGVy
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC0taXRlcjsKKyAgICByZXR1cm4gY29tcGFy
ZUltYWdlcyhpMSwgaTIsIHBvaW50LCBwMSwgaXRlcikgJiYgY29tcGFyZUltYWdlcyhpMSwgaTIs
IHBvaW50LCBwMiwgaXRlcikKKyAgICAgICAgJiYgY29tcGFyZUltYWdlcyhpMSwgaTIsIHBvaW50
LCBRUG9pbnQocDEueCgpLCBwMi55KCkpLCBpdGVyKSAmJiBjb21wYXJlSW1hZ2VzKGkxLCBpMiwg
cG9pbnQsIFFQb2ludChwMi54KCksIHAxLnkoKSksIGl0ZXIpOworfQorCitzdGF0aWMgYm9vbCBj
b21wYXJlSW1hZ2VzKGNvbnN0IFFJbWFnZSYgaTEsIGNvbnN0IFFJbWFnZSYgaTIsIGludCBpdGVy
KQoreworICAgIGlmIChpMS5zaXplKCkgIT0gaTIuc2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIGNvbXBhcmVJbWFnZXMoaTEsIGkyLCBRUG9pbnQoMCwgMCksIFFQb2lu
dChpMS5zaXplKCkud2lkdGgoKSwgaTEuc2l6ZSgpLmhlaWdodCgpKSwgaXRlcik7Cit9CisKK2Ns
YXNzIHRzdF9xdGNiIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6Cisg
ICAgdHN0X3F0Y2IoKQorICAgICAgICA6IG1faHRtbERpcihRU3RyaW5nOjpmcm9tQXNjaWkoVEVT
VFNfU09VUkNFX0RJUiAiL2h0bWwiKSkKKyAgICAgICAgLCBtX2Jhc2VVcmwoUVVybDo6ZnJvbUxv
Y2FsRmlsZShURVNUU19TT1VSQ0VfRElSICIvaHRtbCIpLnRvU3RyaW5nKCkpCisgICAgeyB9CisK
K3ByaXZhdGUgc2xvdHM6CisgICAgdm9pZCBwYWludCgpIHsgcnVuKCZ0c3RfcXRjYjo6ZG9QYWlu
dCwgbV9odG1sRGlyICsgIi9yZXNvdXJjZXMvcXRjYl9wYWludC5wbmciKTsgfQorICAgIHZvaWQg
bm9CYWNrZ3JvdW5kMSgpIHsgcnVuKCZ0c3RfcXRjYjo6ZG9Ob0JhY2tncm91bmQxLCBtX2h0bWxE
aXIgKyAiL3Jlc291cmNlcy9xdGNiX25vQmFja2dyb3VuZC5wbmciKTsgfQorICAgIHZvaWQgbm9C
YWNrZ3JvdW5kMigpIHsgcnVuKCZ0c3RfcXRjYjo6ZG9Ob0JhY2tncm91bmQyLCBtX2h0bWxEaXIg
KyAiL3Jlc291cmNlcy9xdGNiX25vQmFja2dyb3VuZC5wbmciKTsgfQorCitwcml2YXRlOgorICAg
IGNvbnN0IFFTdHJpbmcgbV9odG1sRGlyOworICAgIGNvbnN0IFFTdHJpbmcgbV9iYXNlVXJsOwor
CisgICAgdm9pZCBkb1BhaW50KGNvbnN0IFFTaXplJiBzaXplKTsKKyAgICB2b2lkIGRvTm9CYWNr
Z3JvdW5kMShjb25zdCBRU2l6ZSYgc2l6ZSk7CisgICAgdm9pZCBkb05vQmFja2dyb3VuZDIoY29u
c3QgUVNpemUmIHNpemUpOworCisgICAgdHlwZWRlZiB2b2lkICh0c3RfcXRjYjo6KlBhaW50TWV0
aG9kKShjb25zdCBRU2l6ZSYgc2l6ZSk7CisgICAgdm9pZCBydW4oUGFpbnRNZXRob2QsIGNvbnN0
IFFTdHJpbmcmIGV4cGVjdGF0aW9uKTsKK307CisKK3ZvaWQgdHN0X3F0Y2I6OmRvUGFpbnQoY29u
c3QgUVNpemUmIHNpemUpCit7CisgICAgV2ViVmlldyB2aWV3KHNpemUpOworICAgIHZpZXcubG9h
ZChtX2Jhc2VVcmwgKyAiL3JlZHNxdWFyZS5odG1sIik7Cit9CisKK3ZvaWQgdHN0X3F0Y2I6OmRv
Tm9CYWNrZ3JvdW5kMShjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBXZWJWaWV3IHZpZXcoc2l6
ZSk7CisgICAgdmlldy5zZXRUcmFuc3BhcmVudEJhY2tncm91bmQodHJ1ZSk7CisgICAgdmlldy5s
b2FkKG1fYmFzZVVybCArICIvcmVkc3F1YXJlLmh0bWwiKTsKKyAgICB2aWV3LmxvYWQobV9iYXNl
VXJsICsgIi9ibHVlc3F1YXJlLmh0bWwiKTsKK30KKwordm9pZCB0c3RfcXRjYjo6ZG9Ob0JhY2tn
cm91bmQyKGNvbnN0IFFTaXplJiBzaXplKQoreworICAgIFdlYlZpZXcgdmlldzEoc2l6ZSk7Cisg
ICAgdmlldzEuc2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRydWUpOworICAgIHZpZXcxLmxvYWQo
bV9iYXNlVXJsICsgIi9yZWRzcXVhcmUuaHRtbCIpOworCisgICAgV2ViVmlldyB2aWV3MihzaXpl
KTsKKyAgICB2aWV3Mi5zZXRUcmFuc3BhcmVudEJhY2tncm91bmQodHJ1ZSk7CisgICAgdmlldzIu
bG9hZChtX2Jhc2VVcmwgKyAiL2JsdWVzcXVhcmUuaHRtbCIpOworfQorCit2b2lkIHRzdF9xdGNi
OjpydW4oUGFpbnRNZXRob2QgbWV0aG9kLCBjb25zdCBRU3RyaW5nJiBleHBlY3RhdGlvbikKK3sK
KworICAgIFFXaW5kb3cgd2luZG93OworICAgIHdpbmRvdy5zZXRTdXJmYWNlVHlwZShRU3VyZmFj
ZTo6T3BlbkdMU3VyZmFjZSk7CisgICAgd2luZG93LnNldEdlb21ldHJ5KDAsIDAsIDIwMCwgMjAw
KTsKKyAgICB3aW5kb3cuY3JlYXRlKCk7CisKKyAgICBRT3BlbkdMQ29udGV4dCBjb250ZXh0Owor
ICAgIGNvbnRleHQuY3JlYXRlKCk7CisgICAgY29udGV4dC5tYWtlQ3VycmVudCgmd2luZG93KTsK
KworICAgICh0aGlzLT4qbWV0aG9kKSh3aW5kb3cuc2l6ZSgpKTsKKworICAgIFFJbWFnZSBpbWFn
ZSh3aW5kb3cuc2l6ZSgpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCk7Cisg
ICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIHdpbmRvdy5zaXplKCkud2lkdGgoKSwgd2luZG93LnNpemUo
KS5oZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgaW1hZ2UuYml0cygpKTsKKwor
ICAgIFFWRVJJRlkoY29tcGFyZUltYWdlcyhRSW1hZ2UoZXhwZWN0YXRpb24pLCBpbWFnZS5yZ2JT
d2FwcGVkKCksIDUpKTsKK30KKworUVRFU1RfTUFJTih0c3RfcXRjYikKKworI2luY2x1ZGUgInRz
dF9xdGNiLm1vYyIKZGlmZiAtLWdpdCBhL1NvdXJjZS90ZXN0cy5wcmkgYi9Tb3VyY2UvdGVzdHMu
cHJpCmluZGV4IDVkMmViNmIuLmMxYzE3ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS90ZXN0cy5wcmkK
KysrIGIvU291cmNlL3Rlc3RzLnByaQpAQCAtNTEsNCArNTEsOCBAQCBTVUJESVJTICs9IFwKICAg
ICAgICAgJCRXRUJLSVQyX1RFU1RTX0RJUi9wdWJsaWNhcGkgXAogICAgICAgICAkJFdFQktJVDJf
VEVTVFNfRElSL3FxdWlja3dlYnZpZXcgXAogICAgICAgICAkJFdFQktJVDJfVEVTVFNfRElSL3Ft
bHRlc3RzCisgICAgY29udGFpbnMoQ09ORklHLCBxdGNiKSB7CisgICAgICAgIFNVQkRJUlMgKz0g
XAorICAgICAgICAgICAgJCRXRUJLSVQyX1RFU1RTX0RJUi9xdGNiCisgICAgfQogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDIxNDMxZGQuLjM0
MTkxM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MyBAQAorMjAxMi0wNi0wNiAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3Rp
bmlAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBQcml2YXRlIG5vbi1RdFF1aWNrIEFQ
SQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzIK
KworICAgICAgICBNaW5pQnJvd3Nlcl9jYiBpcyBhbiB1c2FnZSBleGFtcGxlIGZvciB0aGUgV0tW
aWV3IEFQSS4gSXQgaXMgb25seSBhbiBleGFtcGxlCisgICAgICAgIGFuZCBpcyBub3QgZnVsbHkg
aW1wbGVtZW50ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaTogQWRkZWQuCisgICAg
ICAgICogTWluaUJyb3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9jYi5wcm86IEFkZGVkLgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3F0Y2IvVGFyZ2V0LnByaTogQWRkZWQuCisgICAgICAgICogTWluaUJy
b3dzZXIvcXRjYi9WaWV3LmNwcDogQWRkZWQuCisgICAgICAgIChjcmVhdGVXZWJDb250ZXh0KToK
KyAgICAgICAgKGNyZWF0ZVdlYlBhZ2VHcm91cCk6CisgICAgICAgIChWaWV3Ojp+Vmlldyk6Cisg
ICAgICAgIChWaWV3OjpWaWV3KToKKyAgICAgICAgKFZpZXc6OmV4cG9zZUV2ZW50KToKKyAgICAg
ICAgKFZpZXc6OnJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFZpZXc6OnRpbWVyRXZlbnQpOgorICAg
ICAgICAoVmlldzo6dmlld05lZWRzRGlzcGxheSk6CisgICAgICAgIChWaWV3Ojp2aWV3UmVxdWVz
dGVkQ3Vyc29yT3ZlcnJpZGUpOgorICAgICAgICAoVmlldzo6ZG9uZVdpdGhLZXlFdmVudCk6Cisg
ICAgICAgIChtYWluKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdGNiL1ZpZXcuaDogQWRkZWQu
CisgICAgICAgIChWaWV3KToKKyAgICAgICAgKFZpZXc6OnZpZXdSZXF1ZXN0ZWRTY3JvbGwpOgor
ICAgICAgICAoVmlldzo6dmlld1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFZpZXc6OnZpZXdQ
cm9jZXNzUmVsYXVuY2hlZCk6CisgICAgICAgIChWaWV3Ojp2aWV3Q29udGVudFNpemVDaGFuZ2Vk
KToKKyAgICAgICAgKFZpZXc6OmRvbmVXaXRoVG91Y2hFdmVudCk6CisgICAgICAgIChWaWV3Ojpr
ZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFZpZXc6OmtleVJlbGVhc2VFdmVudCk6CisgICAgICAg
IChWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoVmlldzo6bW91c2VNb3Zl
RXZlbnQpOgorICAgICAgICAoVmlldzo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAgICAgKFZpZXc6
Om1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKiBUb29scy5wcm86CisKIDIwMTItMDYtMDQg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUHl0aG9uIHRlc3Qg
Zml4IGF0dGVtcHQgZm9yIENocm9taXVtIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9xdGNiL0Rlcml2ZWRTb3VyY2VzLnByaSBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2Iv
RGVyaXZlZFNvdXJjZXMucHJpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRj
NGQyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL0Rlcml2ZWRT
b3VyY2VzLnByaQpAQCAtMCwwICsxLDYgQEAKK1RFTVBMQVRFID0gZGVyaXZlZAorCisjIE1ha2Ug
c3VyZSBmb3J3YXJkZWQgaGVhZGVycyBuZWVkZWQgYnkgdGhpcyBwcm9qZWN0IGFyZSBwcmVzZW50
Citmd2hlYWRlcl9nZW5lcmF0b3IuY29tbWFuZHMgPSBwZXJsICQke1JPT1RfV0VCS0lUX0RJUn0v
U291cmNlL1dlYktpdDIvU2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwgJCR7
Uk9PVF9XRUJLSVRfRElSfS9Ub29scy9XZWJLaXRUZXN0UnVubmVyICQke1JPT1RfQlVJTERfRElS
fS9Tb3VyY2UvaW5jbHVkZSBxdAorZndoZWFkZXJfZ2VuZXJhdG9yLmRlcGVuZHMgID0gJCR7Uk9P
VF9XRUJLSVRfRElSfS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL2dlbmVyYXRlLWZvcndhcmRpbmct
aGVhZGVycy5wbAorR0VORVJBVE9SUyArPSBmd2hlYWRlcl9nZW5lcmF0b3IKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvTWluaUJyb3dzZXJfY2IucHJvIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXRjYi9NaW5pQnJvd3Nlcl9jYi5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMDUwMzEwNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0
Y2IvTWluaUJyb3dzZXJfY2IucHJvCkBAIC0wLDAgKzEsOSBAQAorVEVNUExBVEUgPSBzdWJkaXJz
CitDT05GSUcgKz0gb3JkZXJlZAorCitkZXJpdmVkX3NvdXJjZXMuZmlsZSA9IERlcml2ZWRTb3Vy
Y2VzLnByaQordGFyZ2V0LmZpbGUgPSBUYXJnZXQucHJpCisKK1NVQkRJUlMgPSBkZXJpdmVkX3Nv
dXJjZXMgdGFyZ2V0CisKK2FkZFN0cmljdFN1YmRpck9yZGVyQmV0d2VlbihkZXJpdmVkX3NvdXJj
ZXMsIHRhcmdldCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvVGFyZ2V0LnBy
aSBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvVGFyZ2V0LnByaQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi43NDc3MzgwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXRjYi9UYXJnZXQucHJpCkBAIC0wLDAgKzEsMTYgQEAKK1RFTVBMQVRFID0gYXBwCitU
QVJHRVQgPSBNaW5pQnJvd3Nlcl9jYgorCitIRUFERVJTICs9IFwKKyAgICBWaWV3LmgKKworU09V
UkNFUyArPSBcCisgICAgVmlldy5jcHAKKworREVTVERJUiA9ICQke1JPT1RfQlVJTERfRElSfS9i
aW4KKworUVQgPSBjb3JlIGd1aSBuZXR3b3JrIHdlYmtpdAorCitsb2FkKGZlYXR1cmVzKQorCitX
RUJLSVQgKz0gd3RmIGphdmFzY3JpcHRjb3JlIHdlYmtpdDIKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0Y2IvVmlldy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1ZpZXcuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3NmJkY2IKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdGNiL1ZpZXcuY3BwCkBAIC0wLDAgKzEsMTM4IEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiVmlldy5oIgorCisjaW5jbHVkZSA8UUd1
aUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFEZWJ1Zz4KKworI2luY2x1ZGUgPFFFeHBvc2VFdmVu
dD4KKyNpbmNsdWRlIDxRUmVzaXplRXZlbnQ+CisjaW5jbHVkZSA8UUtleUV2ZW50PgorCisjaW5j
bHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3Vw
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmdRdC5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tVUkwuaD4KKworI2luY2x1ZGUgPFFVcmw+CisjaW5jbHVk
ZSA8UU1hdHJpeDR4ND4KKworc3RhdGljIFdLQ29udGV4dFJlZiBjcmVhdGVXZWJDb250ZXh0KCkK
K3sKKyAgICByZXR1cm4gV0tDb250ZXh0Q3JlYXRlKCk7Cit9CisKK3N0YXRpYyBXS1BhZ2VHcm91
cFJlZiBjcmVhdGVXZWJQYWdlR3JvdXAoY29uc3QgUVN0cmluZyYgbmFtZSkKK3sKKyAgICBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXAgPVdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tT
dHJpbmdDcmVhdGVXaXRoUVN0cmluZyhuYW1lKSk7CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwKTsKKyAgICBXS1By
ZWZlcmVuY2VzU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRy
dWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShwcmVmZXJlbmNl
cywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJl
ZmVyZW5jZXMsIHRydWUpOworCisgICAgcmV0dXJuIHBhZ2VHcm91cDsKK30KKworVmlldzo6flZp
ZXcoKQoreworICAgIGRlbGV0ZSBtX2NvbnRleHQ7CisgICAgZGVsZXRlIG1fd2ViVmlldzsKK30K
KworVmlldzo6Vmlldyhjb25zdCBjaGFyKiB1cmwpCisgICAgOiBtX3VybCh1cmwpCisgICAgLCBt
X2FjdGl2ZShmYWxzZSkKK3sKKyAgICBzZXRTdXJmYWNlVHlwZShPcGVuR0xTdXJmYWNlKTsKKyAg
ICBzZXRHZW9tZXRyeSg1MCwgNTAsIDk4MCwgNjAwKTsKKyAgICBjcmVhdGUoKTsKKworICAgIG1f
Y29udGV4dCA9IG5ldyBRT3BlbkdMQ29udGV4dDsKKyAgICBtX2NvbnRleHQtPmNyZWF0ZSgpOwor
CisgICAgbV93ZWJWaWV3ID0gV2ViS2l0OjpXS1ZpZXc6OmNyZWF0ZShjcmVhdGVXZWJDb250ZXh0
KCksIGNyZWF0ZVdlYlBhZ2VHcm91cChRU3RyaW5nKCkpLCB0aGlzKTsKKyAgICBtX3dlYlZpZXct
PmluaXRpYWxpemUoKTsKKyAgICBXS1BhZ2VTZXRVc2VGaXhlZExheW91dChtX3dlYlZpZXctPnBh
Z2VSZWYoKSwgdHJ1ZSk7Cit9CisKKwordm9pZCBWaWV3OjpleHBvc2VFdmVudChRRXhwb3NlRXZl
bnQqIGV2ZW50KQoreworICAgIGlmICghbV9hY3RpdmUpIHsKKyAgICAgICAgbV9hY3RpdmUgPSB0
cnVlOworICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fd2ViVmlldy0+cGFnZVJlZigpLCBXS1VSTENy
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhtX3VybC50b0FzY2lpKCkuZGF0YSgpKSk7CisKKyAgICAgICAg
bV93ZWJWaWV3LT5zZXRGb2N1c2VkKHRydWUpOworICAgICAgICBtX3dlYlZpZXctPnNldFZpc2li
bGUodHJ1ZSk7CisgICAgICAgIG1fd2ViVmlldy0+c2V0QWN0aXZlKHRydWUpOworICAgIH0KK30K
Kwordm9pZCBWaWV3OjpyZXNpemVFdmVudChRUmVzaXplRXZlbnQqIGV2ZW50KQoreworICAgIG1f
d2ViVmlldy0+c2V0U2l6ZShldmVudC0+c2l6ZSgpKTsKK30KKwordm9pZCBWaWV3Ojp0aW1lckV2
ZW50KFFUaW1lckV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnRpbWVySWQoKSA9PSBt
X3BhaW50VGltZXIudGltZXJJZCgpKSB7CisgICAgICAgIG1fcGFpbnRUaW1lci5zdG9wKCk7Cisg
ICAgICAgIG1fY29udGV4dC0+bWFrZUN1cnJlbnQodGhpcyk7CisgICAgICAgIG1fd2ViVmlldy0+
cGFpbnQoUU1hdHJpeDR4NCgpLCAxLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5zd2FwQnVmZmVy
cyh0aGlzKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlldzo6dmlld05lZWRzRGlzcGxheShjb25zdCBR
UmVjdCYpCit7CisgICAgaWYgKCFtX3BhaW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9w
YWludFRpbWVyLnN0YXJ0KDAsIHRoaXMpOworfQorCit2b2lkIFZpZXc6OnZpZXdSZXF1ZXN0ZWRD
dXJzb3JPdmVycmlkZShjb25zdCBRQ3Vyc29yJiBjdXJzb3IpCit7CisgICAgUUd1aUFwcGxpY2F0
aW9uOjpzZXRPdmVycmlkZUN1cnNvcihjdXJzb3IpOworfQorCit2b2lkIFZpZXc6OmRvbmVXaXRo
S2V5RXZlbnQoY29uc3QgUUtleUV2ZW50KiBldmVudCwgYm9vbCB3YXNIYW5kbGVkKQoreworICAg
IGlmICh3YXNIYW5kbGVkIHx8IGV2ZW50LT5pc0FjY2VwdGVkKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHN3aXRjaCAoZXZlbnQtPmtleSgpKSB7CisgICAgY2FzZSBRdDo6S2V5X0JhY2tzcGFj
ZTogeworICAgICAgICBXS1BhZ2VSZWYgcGFnZSA9IG1fd2ViVmlldy0+cGFnZVJlZigpOworICAg
ICAgICBpZiAoV0tQYWdlQ2FuR29CYWNrKHBhZ2UpKQorICAgICAgICAgICAgV0tQYWdlR29CYWNr
KHBhZ2UpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQorfQorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgUUd1aUFwcGxpY2F0aW9uIGEoYXJnYywgYXJndik7
CisKKyAgICBWaWV3IHZpZXcoYXJnYyA+IDEgPyBhcmd2WzFdIDogImh0dHA6Ly93d3cuZ29vZ2xl
LmNvbSIpOworICAgIHZpZXcuc2hvdygpOworICAgIHJldHVybiBhLmV4ZWMoKTsKK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvVmlldy5oIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXRjYi9WaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYyNThlMAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0Y2IvVmlldy5oCkBAIC0wLDAg
KzEsNjcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgVmlld19oCisjZGVmaW5lIFZp
ZXdfaAorCisjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisjaW5jbHVkZSA8UU9wZW5HTENvbnRleHQ+
CisjaW5jbHVkZSA8UVdpbmRvdz4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVmlldy5oPgorCisKK2Ns
YXNzIFZpZXcgOiAgcHVibGljIFFXaW5kb3csIHByaXZhdGUgV2ViS2l0OjpXS1ZpZXdDbGllbnQg
eworcHVibGljOgorICAgIFZpZXcoY29uc3QgY2hhciogdXJsKTsKKyAgICB+VmlldygpOworCitw
dWJsaWM6IC8vIFdLVmlld0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB2aWV3TmVlZHNEaXNwbGF5
KGNvbnN0IFFSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRTY3JvbGwoY29u
c3QgUVBvaW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzQ3Jhc2hlZCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc1JlbGF1bmNoZWQoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdmlld0NvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6ZSYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUoY29uc3QgUUN1cnNvciYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IFFLZXlFdmVudCosIGJvb2wg
d2FzSGFuZGxlZCk7CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBR
VG91Y2hFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIHZvaWQgZXhwb3NlRXZlbnQoUUV4cG9zZUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHJl
c2l6ZUV2ZW50KFFSZXNpemVFdmVudCopOworCisgICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZl
bnQoUUtleUV2ZW50KiBldmVudCkgeyBtX3dlYlZpZXctPmtleUV2ZW50KGV2ZW50KTsgfQorICAg
IHZpcnR1YWwgdm9pZCBrZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50KiBldmVudCkgeyBtX3dlYlZp
ZXctPmtleUV2ZW50KGV2ZW50KTsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vdXNlRG91YmxlQ2xp
Y2tFdmVudChRTW91c2VFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5tb3VzZUV2ZW50KGV2ZW50
LCAyKTsgfQorICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCogZXZl
bnQpIHsgbV93ZWJWaWV3LT5tb3VzZUV2ZW50KGV2ZW50KTsgfQorICAgIHZpcnR1YWwgdm9pZCBt
b3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+bW91c2VFdmVu
dChldmVudCwgMSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VSZWxlYXNlRXZlbnQoUU1vdXNl
RXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+bW91c2VFdmVudChldmVudCk7IH0KKworcHJpdmF0
ZToKKyAgICBXZWJLaXQ6OldLVmlldyogbV93ZWJWaWV3OworICAgIFFPcGVuR0xDb250ZXh0ICpt
X2NvbnRleHQ7CisgICAgUUJhc2ljVGltZXIgbV9wYWludFRpbWVyOworCisgICAgUVN0cmluZyBt
X3VybDsKKyAgICBib29sIG1fYWN0aXZlOworCisgICAgdmlydHVhbCB2b2lkIHRpbWVyRXZlbnQo
UVRpbWVyRXZlbnQqKTsKK307CisKKyNlbmRpZiAvLyBWaWV3X2gKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rvb2xzLnBybyBiL1Rvb2xzL1Rvb2xzLnBybwppbmRleCA2Yzk5N2MyLi4wMmZjNWUxIDEwMDY0
NAotLS0gYS9Ub29scy9Ub29scy5wcm8KKysrIGIvVG9vbHMvVG9vbHMucHJvCkBAIC0xNiw2ICsx
NiwxMSBAQCBTVUJESVJTICs9IER1bXBSZW5kZXJUcmVlL3F0L0ltYWdlRGlmZi5wcm8KICFub193
ZWJraXQyIHsKICAgICBTVUJESVJTICs9IE1pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybyBc
CiAgICAgICAgICAgICAgICBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIucHJvCisK
K2NvbnRhaW5zKENPTkZJRywgcXRjYikgeworICAgIFNVQkRJUlMgKz0gTWluaUJyb3dzZXIvcXRj
Yi9NaW5pQnJvd3Nlcl9jYi5wcm8KK30KKwogfQogCiAjIEZJWE1FOiB3aXRoIFF0IDUgdGhlIHRl
c3QgcGx1Z2luIGNhdXNlIHNvbWUgdHJvdWJsZSBkdXJpbmcgbGF5b3V0IHRlc3RzLgotLSAKMS43
LjkuNQoK
</data>
<flag name="review"
          id="153910"
          type_id="1"
          status="-"
          setter="vestbo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147208</attachid>
            <date>2012-06-12 18:29:15 -0700</date>
            <delta_ts>2012-06-26 17:59:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-WK2-Private-non-QtQuick-API.patch</filename>
            <type>text/plain</type>
            <size>57905</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSBiMmIzMGUwOGFmMmVmMzRhMGJjNDk0OGM3YThjODNhZGU0NzJiMzU2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogVHVlLCAxMiBKdW4gMjAxMiAxODoxNjoyMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd
IFtRdF1bV0syXSBQcml2YXRlIG5vbi1RdFF1aWNrIEFQSQogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0NTMyCgouOgoKQVBJIHRlc3RzIGZvciBRV0tWaWV3LgoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIFNvdXJjZS90ZXN0cy5wcmk6CgpTb3VyY2UvV2Vi
S2l0MjoKCkFkZGluZyBuZXcgcHJpdmF0ZSBub24tUXRRdWljayBBUEkuCgpUaGlzIGlzIG5vdCBw
dWJsaWMgQVBJLiBJdCBtYXkgY2hhbmdlIHdpdGhvdXQgbm90aWNlIGF0IGFueSB0aW1lCmluIGZ1
dHVyZSBhbmQgd2UgbWFrZSBubyBjb21taXRtZW50IHJlZ2FyZGluZyBzb3VyY2UgY29tcGF0aWJp
bGl0eQpvciBiaW5hcnkgY29tcGF0aWJpbGl0eS4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgoKKiBUYXJnZXQucHJpOgoqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKFdL
UHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSk6CihXS1ByZWZlcmVuY2VzR2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUpOgoqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oOgoqIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1FXS1ZpZXcuY3BwOiBBZGRlZC4KKFdlYktpdCk6
CihXZWJLaXQ6OlFXS1ZpZXc6OmNyZWF0ZSk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpRV0tWaWV3
SW1wbCk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjp+UVdLVmlld0ltcGwpOgooV2ViS2l0OjpRV0tW
aWV3SW1wbDo6c2V0Q3Vyc29yKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmNyZWF0ZURyYXdpbmdB
cmVhUHJveHkpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2V0Rm9jdXNlZCk6CihXZWJLaXQ6OlFX
S1ZpZXdJbXBsOjpzZXRWaXNpYmxlKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OnNldEFjdGl2ZSk6
CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzZXRTaXplKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OnBh
aW50KToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmtleUV2ZW50KToKKFdlYktpdDo6UVdLVmlld0lt
cGw6Om1vdXNlRXZlbnQpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6d2hlZWxFdmVudCk6CihXZWJL
aXQ6OlFXS1ZpZXdJbXBsOjp0b3VjaEV2ZW50KToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmRvbmVX
aXRoS2V5RXZlbnQpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KToK
KiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9RV0tWaWV3X3AuaDogQWRkZWQuCihXZWJLaXQpOgooUVdL
Vmlld0NsaWVudCk6CihXZWJLaXQ6OlFXS1ZpZXdDbGllbnQ6On5RV0tWaWV3Q2xpZW50KToKKiBV
SVByb2Nlc3MvQVBJL2NwcC9xdC9RV0tWaWV3X3BfcC5oOiBBZGRlZC4KKFdlYktpdCk6CihRV0tW
aWV3SW1wbCk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpwYWdlQ2xvc2VkKToKKFdlYktpdDo6UVdL
Vmlld0ltcGw6OnNldEZpbmRJbmRpY2F0b3IpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZGlkQ29t
bWl0TG9hZEZvck1haW5GcmFtZSk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpkaWRGaW5pc2hMb2Fk
aW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0aW9uKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmN1
c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcik6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzZXRD
dXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZGlk
Q2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpmaW5k
U3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbik6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpjb3Vu
dFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKToKKFdlYktpdDo6UVdLVmlld0lt
cGw6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KToKKFdlYktpdDo6UVdL
Vmlld0ltcGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CihXZWJLaXQ6OlFXS1ZpZXdJ
bXBsOjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6aGFuZGxl
QXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6aGFu
ZGxlQ2VydGlmaWNhdGVWZXJpZmljYXRpb25SZXF1ZXN0KToKKFdlYktpdDo6UVdLVmlld0ltcGw6
OmhhbmRsZVByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QpOgooV2ViS2l0OjpRV0tW
aWV3SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZCk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpjbGVh
ckFsbEVkaXRDb21tYW5kcyk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpjYW5VbmRvUmVkbyk6CihX
ZWJLaXQ6OlFXS1ZpZXdJbXBsOjpleGVjdXRlVW5kb1JlZG8pOgooV2ViS2l0OjpRV0tWaWV3SW1w
bDo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6Y29udmVydFRv
VXNlclNwYWNlKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OnNjcmVlblRvV2luZG93KToKKFdlYktp
dDo6UVdLVmlld0ltcGw6OndpbmRvd1RvU2NyZWVuKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZXhp
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OnVwZGF0
ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OnVwZGF0
ZVRleHRJbnB1dFN0YXRlKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmRvbmVXaXRoR2VzdHVyZUV2
ZW50KToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmRpc3BsYXlWaWV3KToKKFdlYktpdDo6UVdLVmll
d0ltcGw6OnNjcm9sbFZpZXcpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6Zmxhc2hCYWNraW5nU3Rv
cmVVcGRhdGVzKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmRpZEZpbmRab29tYWJsZUFyZWEpOgoo
V2ViS2l0OjpRV0tWaWV3SW1wbDo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKToKKFdl
YktpdDo6UVdLVmlld0ltcGw6OnRvb2xUaXBDaGFuZ2VkKToKKFdlYktpdDo6UVdLVmlld0ltcGw6
OnN0YXJ0RHJhZyk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6
CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKFdlYktpdDo6
UVdLVmlld0ltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKFdlYktpdDo6UVdLVmlld0ltcGw6
OnByb2Nlc3NEaWRDcmFzaCk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpkaWRSZWxhdW5jaFByb2Nl
c3MpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2V0Vmlld05lZWRzRGlzcGxheSk6CihXZWJLaXQ6
OlFXS1ZpZXdJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgooV2ViS2l0OjpRV0tWaWV3SW1w
bDo6aXNWaWV3Rm9jdXNlZCk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjppc1ZpZXdWaXNpYmxlKToK
KFdlYktpdDo6UVdLVmlld0ltcGw6OmlzVmlld1dpbmRvd0FjdGl2ZSk6CihXZWJLaXQ6OlFXS1Zp
ZXdJbXBsOjppc1ZpZXdJbldpbmRvdyk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjp2aWV3U2l6ZSk6
CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjppbml0aWFsaXplKToKKFdlYktpdDo6UVdLVmlld0ltcGw6
OmlzRm9jdXNlZCk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjppc1Zpc2libGUpOgooV2ViS2l0OjpR
V0tWaWV3SW1wbDo6aXNBY3RpdmUpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2l6ZSk6CihXZWJL
aXQ6OlFXS1ZpZXdJbXBsOjpzZXRUcmFuc3BhcmVudEJhY2tncm91bmQpOgooV2ViS2l0OjpRV0tW
aWV3SW1wbDo6dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OnNl
dERyYXdCYWNrZ3JvdW5kKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmRyYXdCYWNrZ3JvdW5kKToK
KFdlYktpdDo6UVdLVmlld0ltcGw6OnBhZ2VSZWYpOgoqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
aHRtbC9ibHVlc3F1YXJlLmh0bWw6IEFkZGVkLgoqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRt
bC9yZWRzcXVhcmUuaHRtbDogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jl
c291cmNlcy9xd2t2aWV3X25vQmFja2dyb3VuZDEucG5nOiBBZGRlZC4KKiBVSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMy5wbmc6IEFkZGVk
LgoqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19wYWludC5w
bmc6IEFkZGVkLgoqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXdrdmlldy9xd2t2aWV3LnBybzog
QWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xd2t2aWV3L3RzdF9xd2t2aWV3LmNwcDog
QWRkZWQuCih3ZWJDb250ZXh0KToKKGNyZWF0ZVdlYlBhZ2VHcm91cCk6Cih3ZWJQYWdlR3JvdXAp
OgooV2ViVmlldyk6CihXZWJWaWV3OjpXZWJWaWV3KToKKFdlYlZpZXc6On5XZWJWaWV3KToKKFdl
YlZpZXc6OmxvYWQpOgooV2ViVmlldzo6c2V0RHJhd0JhY2tncm91bmQpOgooV2ViVmlldzo6c2V0
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKFdlYlZpZXc6OnZpZXdOZWVkc0Rpc3BsYXkpOgooV2Vi
Vmlldzo6dmlld1JlcXVlc3RlZFNjcm9sbCk6CihXZWJWaWV3Ojp2aWV3UHJvY2Vzc0NyYXNoZWQp
OgooV2ViVmlldzo6dmlld1Byb2Nlc3NSZWxhdW5jaGVkKToKKFdlYlZpZXc6OnZpZXdDb250ZW50
U2l6ZUNoYW5nZWQpOgooV2ViVmlldzo6dmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKToKKFdl
YlZpZXc6OmRvbmVXaXRoS2V5RXZlbnQpOgooV2ViVmlldzo6ZG9uZVdpdGhUb3VjaEV2ZW50KToK
KFdlYlZpZXc6OmZpbmlzaExvYWRGb3JGcmFtZSk6Cihjb21wYXJlSW1hZ2VzKToKKHRzdF9xd2t2
aWV3KToKKHRzdF9xd2t2aWV3Ojp0c3RfcXdrdmlldyk6Cih0c3RfcXdrdmlldzo6cGFpbnQpOgoo
dHN0X3F3a3ZpZXc6Om5vQmFja2dyb3VuZDEpOgoodHN0X3F3a3ZpZXc6Om5vQmFja2dyb3VuZDIp
OgoodHN0X3F3a3ZpZXc6Om5vQmFja2dyb3VuZDMpOgoodHN0X3F3a3ZpZXc6OmRvUGFpbnQpOgoo
dHN0X3F3a3ZpZXc6OmRvTm9CYWNrZ3JvdW5kMSk6Cih0c3RfcXdrdmlldzo6ZG9Ob0JhY2tncm91
bmQyKToKKHRzdF9xd2t2aWV3Ojpkb05vQmFja2dyb3VuZDMpOgoodHN0X3F3a3ZpZXc6OnJ1bik6
CgpUb29sczoKCk1pbmlCcm93c2VyX2NiIGlzIGFuIHVzYWdlIGV4YW1wbGUgZm9yIHRoZSBRV0tW
aWV3IEFQSS4gSXQgaXMgb25seSBhbiBleGFtcGxlCmFuZCBpcyBub3QgZnVsbHkgaW1wbGVtZW50
ZWQuCgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiogTWluaUJyb3dzZXIvcXdrdmlldy9E
ZXJpdmVkU291cmNlcy5wcmk6IEFkZGVkLgoqIE1pbmlCcm93c2VyL3F3a3ZpZXcvTWluaUJyb3dz
ZXJfY2IucHJvOiBBZGRlZC4KKiBNaW5pQnJvd3Nlci9xd2t2aWV3L1RhcmdldC5wcmk6IEFkZGVk
LgoqIE1pbmlCcm93c2VyL3F3a3ZpZXcvVmlldy5jcHA6IEFkZGVkLgooY3JlYXRlV2ViQ29udGV4
dCk6CihjcmVhdGVXZWJQYWdlR3JvdXApOgooVmlldzo6flZpZXcpOgooVmlldzo6Vmlldyk6CihW
aWV3OjpleHBvc2VFdmVudCk6CihWaWV3OjpyZXNpemVFdmVudCk6CihWaWV3Ojp0aW1lckV2ZW50
KToKKFZpZXc6OnZpZXdOZWVkc0Rpc3BsYXkpOgooVmlldzo6dmlld1JlcXVlc3RlZEN1cnNvck92
ZXJyaWRlKToKKFZpZXc6OmRvbmVXaXRoS2V5RXZlbnQpOgoobWFpbik6CiogTWluaUJyb3dzZXIv
cXdrdmlldy9WaWV3Lmg6IEFkZGVkLgooVmlldyk6CihWaWV3Ojp2aWV3UmVxdWVzdGVkU2Nyb2xs
KToKKFZpZXc6OnZpZXdQcm9jZXNzQ3Jhc2hlZCk6CihWaWV3Ojp2aWV3UHJvY2Vzc1JlbGF1bmNo
ZWQpOgooVmlldzo6dmlld0NvbnRlbnRTaXplQ2hhbmdlZCk6CihWaWV3Ojpkb25lV2l0aFRvdWNo
RXZlbnQpOgooVmlldzo6a2V5UHJlc3NFdmVudCk6CihWaWV3OjprZXlSZWxlYXNlRXZlbnQpOgoo
Vmlldzo6bW91c2VEb3VibGVDbGlja0V2ZW50KToKKFZpZXc6Om1vdXNlTW92ZUV2ZW50KToKKFZp
ZXc6Om1vdXNlUHJlc3NFdmVudCk6CihWaWV3Ojptb3VzZVJlbGVhc2VFdmVudCk6CiogU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgoqIFRvb2xzLnBybzoKLS0tCiBDaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKwogU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTM4ICsrKysr
KysrKysrKwogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAgICAgICAgICAgICAgICAgICAgICAg
ICAgfCAgICAzICsKIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2Vz
LmNwcCAgIHwgICAxMCArCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaCB8ICAgIDQgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQv
UVdLVmlldy5jcHAgICAgfCAgMTU2ICsrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvY3BwL3F0L1FXS1ZpZXdfcC5oICAgIHwgIDEwMSArKysrKysrKysKIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1FXS1ZpZXdfcF9wLmggIHwgIDE2NCArKysrKysr
KysrKysrKwogLi4uL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9ibHVlc3F1YXJlLmh0bWwg
ICAgfCAgICA1ICsKIC4uLi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVkc3F1YXJlLmh0
bWwgICAgIHwgICAgNSArCiAuLi4vdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tn
cm91bmQxLnBuZyB8ICBCaW4gMCAtPiA2OTYgYnl0ZXMKIC4uLi90ZXN0cy9odG1sL3Jlc291cmNl
cy9xd2t2aWV3X25vQmFja2dyb3VuZDMucG5nIHwgIEJpbiAwIC0+IDcwMSBieXRlcwogLi4uL0FQ
SS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X3BhaW50LnBuZyAgfCAgQmluIDAgLT4g
NjY3IGJ5dGVzCiAuLi4vVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xd2t2aWV3L3F3a3ZpZXcucHJv
ICAgICB8ICAgIDMgKwogLi4uL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXdrdmlldy90c3RfcXdr
dmlldy5jcHAgfCAgMjMwICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvdGVzdHMucHJpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIFRvb2xzL0NoYW5nZUxv
ZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MSArKysrCiBUb29scy9N
aW5pQnJvd3Nlci9xd2t2aWV3L0Rlcml2ZWRTb3VyY2VzLnByaSAgICAgICB8ICAgIDYgKwogVG9v
bHMvTWluaUJyb3dzZXIvcXdrdmlldy9NaW5pQnJvd3Nlcl9jYi5wcm8gICAgICAgfCAgICA5ICsK
IFRvb2xzL01pbmlCcm93c2VyL3F3a3ZpZXcvVGFyZ2V0LnByaSAgICAgICAgICAgICAgIHwgICAx
NiArKwogVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9WaWV3LmNwcCAgICAgICAgICAgICAgICAg
fCAgMTM3ICsrKysrKysrKysrKwogVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9WaWV3LmggICAg
ICAgICAgICAgICAgICAgfCAgIDY3ICsrKysrKwogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2VyLnB5ICAgICAgICAgICAgfCAgICAzICstCiBUb29scy9Ub29scy5wcm8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KIDI0IGZpbGVzIGNoYW5nZWQs
IDExMTIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9RV0tWaWV3LmNwcAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1FXS1ZpZXdfcC5o
CiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQv
UVdLVmlld19wX3AuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvaHRtbC9ibHVlc3F1YXJlLmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVkc3F1YXJlLmh0bWwK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L2h0bWwvcmVzb3VyY2VzL3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMS5wbmcKIGNyZWF0ZSBtb2RlIDEw
MDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2Vz
L3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMy5wbmcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F3a3ZpZXdfcGFpbnQu
cG5nCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9xd2t2aWV3L3F3a3ZpZXcucHJvCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xd2t2aWV3L3RzdF9xd2t2aWV3LmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F3a3ZpZXcvRGVyaXZlZFNvdXJjZXMucHJp
CiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9NaW5pQnJvd3Nl
cl9jYi5wcm8KIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L1Rh
cmdldC5wcmkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L1Zp
ZXcuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9WaWV3
LmgKCmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggNjBhZmEwOC4uMDMy
ZDdkNCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDEyLTA2LTEyICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tpYS5jb20+
CisKKyAgICAgICAgW1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDUzMgorCisgICAgICAgIEFQ
SSB0ZXN0cyBmb3IgUVdLVmlldy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNvdXJjZS90ZXN0cy5wcmk6CisKIDIwMTItMDYtMTIgIENocmlzdG9w
aGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBF
bmFibGUgU0hBRE9XX0RPTSBmbGFnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTQxYTBkNS4uOTE2OTQ4MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0MSBAQAorMjAxMi0wNi0wNiAgTHVpeiBBZ29zdGluaSAgPGx1
aXouYWdvc3RpbmlAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBQcml2YXRlIG5vbi1R
dFF1aWNrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODQ1MzIKKworICAgICAgICBBZGRpbmcgbmV3IHByaXZhdGUgbm9uLVF0UXVpY2sgQVBJLgor
CisgICAgICAgIFRoaXMgaXMgbm90IHB1YmxpYyBBUEkuIEl0IG1heSBjaGFuZ2Ugd2l0aG91dCBu
b3RpY2UgYXQgYW55IHRpbWUKKyAgICAgICAgaW4gZnV0dXJlIGFuZCB3ZSBtYWtlIG5vIGNvbW1p
dG1lbnQgcmVnYXJkaW5nIHNvdXJjZSBjb21wYXRpYmlsaXR5CisgICAgICAgIG9yIGJpbmFyeSBj
b21wYXRpYmlsaXR5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlcy5jcHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0Rm9yY2VDb21wb3NpdGluZ01vZGUp
OgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldEZvcmNlQ29tcG9zaXRpbmdNb2RlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2NwcC9xdC9RV0tWaWV3LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpR
V0tWaWV3SW1wbDo6UVdLVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6
flFXS1ZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnNldEN1cnNvcik6
CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToK
KyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnNldEZvY3VzZWQpOgorICAgICAgICAoV2Vi
S2l0OjpRV0tWaWV3SW1wbDo6c2V0VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJ
bXBsOjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2V0U2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpwYWludCk6CisgICAgICAgIChXZWJLaXQ6
OlFXS1ZpZXdJbXBsOjprZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpt
b3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OndoZWVsRXZlbnQpOgor
ICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6dG91Y2hFdmVudCk6CisgICAgICAgIChXZWJL
aXQ6OlFXS1ZpZXdJbXBsOjpkb25lV2l0aEtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6UVdL
Vmlld0ltcGw6OmRvbmVXaXRoVG91Y2hFdmVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9j
cHAvcXQvUVdLVmlld19wLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFFX
S1ZpZXdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3Q2xpZW50Ojp+UVdLVmlld0Ns
aWVudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9jcHAvcXQvUVdLVmlld19wX3AuaDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoUVdLVmlld0ltcGwpOgorICAgICAgICAo
V2ViS2l0OjpRV0tWaWV3SW1wbDo6cGFnZUNsb3NlZCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1Zp
ZXdJbXBsOjpzZXRGaW5kSW5kaWNhdG9yKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6
OmRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1w
bDo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpjdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2V0Q3VzdG9tUmVwcmVzZW50YXRpb25ab29t
RmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmRpZENoYW5nZVNjcm9sbGJh
cnNGb3JNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZmluZFN0cmlu
Z0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6
Y291bnRTdHJpbmdNYXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OlFXS1ZpZXdJbXBsOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdCk6
CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0
KToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmhhbmRsZUF1dGhlbnRpY2F0aW9uUmVx
dWlyZWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmhhbmRsZUNlcnRp
ZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBs
OjpoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6UVdLVmlld0ltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQpOgorICAgICAgICAoV2ViS2l0
OjpRV0tWaWV3SW1wbDo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMpOgorICAgICAgICAoV2ViS2l0OjpR
V0tWaWV3SW1wbDo6Y2FuVW5kb1JlZG8pOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6
ZXhlY3V0ZVVuZG9SZWRvKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmNvbnZlcnRU
b0RldmljZVNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmNvbnZlcnRUb1Vz
ZXJTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzY3JlZW5Ub1dpbmRvdyk6
CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjp3aW5kb3dUb1NjcmVlbik6CisgICAgICAg
IChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjplbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToK
KyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjp1cGRhdGVBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjp1cGRhdGVUZXh0
SW5wdXRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpkb25lV2l0aEdlc3R1
cmVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpkaXNwbGF5Vmlldyk6Cisg
ICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzY3JvbGxWaWV3KToKKyAgICAgICAgKFdlYktp
dDo6UVdLVmlld0ltcGw6OmZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyk6CisgICAgICAgIChXZWJL
aXQ6OlFXS1ZpZXdJbXBsOjpkaWRGaW5kWm9vbWFibGVBcmVhKToKKyAgICAgICAgKFdlYktpdDo6
UVdLVmlld0ltcGw6OnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyk6CisgICAgICAgIChX
ZWJLaXQ6OlFXS1ZpZXdJbXBsOjp0b29sVGlwQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlFX
S1ZpZXdJbXBsOjpzdGFydERyYWcpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6Y3Jl
YXRlUG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6Y3JlYXRl
Q29udGV4dE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpwYWdlRGlk
UmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpwcm9jZXNzRGlk
Q3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkpOgor
ICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAg
ICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmlzVmlld0ZvY3VzZWQpOgorICAgICAgICAoV2Vi
S2l0OjpRV0tWaWV3SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1Zp
ZXdJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1w
bDo6aXNWaWV3SW5XaW5kb3cpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6dmlld1Np
emUpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6aW5pdGlhbGl6ZSk6CisgICAgICAg
IChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjppc0ZvY3VzZWQpOgorICAgICAgICAoV2ViS2l0OjpRV0tW
aWV3SW1wbDo6aXNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmlzQWN0
aXZlKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnNpemUpOgorICAgICAgICAoV2Vi
S2l0OjpRV0tWaWV3SW1wbDo6c2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdl
YktpdDo6UVdLVmlld0ltcGw6OnRyYW5zcGFyZW50QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJL
aXQ6OlFXS1ZpZXdJbXBsOjpzZXREcmF3QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OlFX
S1ZpZXdJbXBsOjpkcmF3QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBs
OjpwYWdlUmVmKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvYmx1ZXNx
dWFyZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwv
cmVkc3F1YXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
aHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQxLnBuZzogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X25vQmFja2dy
b3VuZDMucG5nOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwv
cmVzb3VyY2VzL3F3a3ZpZXdfcGFpbnQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3F3a3ZpZXcvcXdrdmlldy5wcm86IEFkZGVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcXdrdmlldy90c3RfcXdrdmlldy5jcHA6IEFkZGVkLgorICAgICAg
ICAod2ViQ29udGV4dCk6CisgICAgICAgIChjcmVhdGVXZWJQYWdlR3JvdXApOgorICAgICAgICAo
d2ViUGFnZUdyb3VwKToKKyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAoV2ViVmlldzo6V2Vi
Vmlldyk6CisgICAgICAgIChXZWJWaWV3Ojp+V2ViVmlldyk6CisgICAgICAgIChXZWJWaWV3Ojps
b2FkKToKKyAgICAgICAgKFdlYlZpZXc6OnNldERyYXdCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdl
YlZpZXc6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJWaWV3Ojp2aWV3
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYlZpZXc6OnZpZXdSZXF1ZXN0ZWRTY3JvbGwpOgor
ICAgICAgICAoV2ViVmlldzo6dmlld1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYlZpZXc6
OnZpZXdQcm9jZXNzUmVsYXVuY2hlZCk6CisgICAgICAgIChXZWJWaWV3Ojp2aWV3Q29udGVudFNp
emVDaGFuZ2VkKToKKyAgICAgICAgKFdlYlZpZXc6OnZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlk
ZSk6CisgICAgICAgIChXZWJWaWV3Ojpkb25lV2l0aEtleUV2ZW50KToKKyAgICAgICAgKFdlYlZp
ZXc6OmRvbmVXaXRoVG91Y2hFdmVudCk6CisgICAgICAgIChXZWJWaWV3OjpmaW5pc2hMb2FkRm9y
RnJhbWUpOgorICAgICAgICAoY29tcGFyZUltYWdlcyk6CisgICAgICAgICh0c3RfcXdrdmlldyk6
CisgICAgICAgICh0c3RfcXdrdmlldzo6dHN0X3F3a3ZpZXcpOgorICAgICAgICAodHN0X3F3a3Zp
ZXc6OnBhaW50KToKKyAgICAgICAgKHRzdF9xd2t2aWV3Ojpub0JhY2tncm91bmQxKToKKyAgICAg
ICAgKHRzdF9xd2t2aWV3Ojpub0JhY2tncm91bmQyKToKKyAgICAgICAgKHRzdF9xd2t2aWV3Ojpu
b0JhY2tncm91bmQzKToKKyAgICAgICAgKHRzdF9xd2t2aWV3Ojpkb1BhaW50KToKKyAgICAgICAg
KHRzdF9xd2t2aWV3Ojpkb05vQmFja2dyb3VuZDEpOgorICAgICAgICAodHN0X3F3a3ZpZXc6OmRv
Tm9CYWNrZ3JvdW5kMik6CisgICAgICAgICh0c3RfcXdrdmlldzo6ZG9Ob0JhY2tncm91bmQzKToK
KyAgICAgICAgKHRzdF9xd2t2aWV3OjpydW4pOgorCiAyMDEyLTA2LTEyICBLZW5uZXRoIFJvaGRl
IENocmlzdGlhbnNlbiAgPGtlbm5ldGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2Vk
IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDNjYmU5MWYuLmUyODliOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnBy
aQpAQCAtMTc2LDYgKzE3Niw4IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
ZWJLaXQyLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9xdC9XS05hdGl2ZUV2ZW50LmggXAogICAg
IFVJUHJvY2Vzcy9BUEkvY3BwL1dLUmV0YWluUHRyLmggXAorICAgIFVJUHJvY2Vzcy9BUEkvY3Bw
L3F0L1FXS1ZpZXdfcC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9RV0tWaWV3X3BfcC5o
IFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1N0cmluZ1F0LmggXAogICAgIFVJUHJvY2Vz
cy9BUEkvY3BwL3F0L1dLVVJMUXQuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVy
ZW5jZXNfcC5oIFwKQEAgLTUyMSw2ICs1MjMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Byb3Rl
Y3Rpb25TcGFjZS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5h
Z2VyLmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9jcHAvcXQvUVdLVmlldy5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9BUEkvY3BwL3F0L1dLU3RyaW5nUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL2Nw
cC9xdC9XS1VSTFF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2ViZG93bmxvYWRpdGVt
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNl
cy5jcHAKaW5kZXggOWZlOGQ2YS4uNmQwM2YxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcApAQCAtMzg4LDYgKzM4OCwxNiBAQCBib29s
IFdLUHJlZmVyZW5jZXNHZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChXS1ByZWZlcmVu
Y2VzUmVmIHByZWZlcmVuY2VzUgogICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpOwogfQogCit2b2lkIFdLUHJlZmVyZW5jZXNT
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBi
b29sIGZsYWcpCit7CisgICAgdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0Rm9yY2VDb21wb3Np
dGluZ01vZGUoZmxhZyk7Cit9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dldEZvcmNlQ29tcG9zaXRp
bmdNb2RlKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIHRv
SW1wbChwcmVmZXJlbmNlc1JlZiktPmZvcmNlQ29tcG9zaXRpbmdNb2RlKCk7Cit9CisKIHZvaWQg
V0tQcmVmZXJlbmNlc1NldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoV0tQcmVmZXJlbmNlc1Jl
ZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBmbGFnKQogewogICAgIHRvSW1wbChwcmVmZXJlbmNlc1Jl
ZiktPnNldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoZmxhZyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDZk
YmM0NzMuLjIzODJhNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCkBAIC03Niw2ICs3NiwxMCBAQCBXS19FWFBPUlQg
dm9pZCBXS1ByZWZlcmVuY2VzU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoV0tQcmVm
ZXJlbmNlc1JlZiwgYgogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYpOwogCiAvLyBEZWZhdWx0cyB0byBm
YWxzZS4KK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5nTW9k
ZShXS1ByZWZlcmVuY2VzUmVmLCBib29sKTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNH
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShXS1ByZWZlcmVuY2VzUmVmKTsKKworLy8gRGVmYXVsdHMg
dG8gZmFsc2UuCiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Q29tcG9zaXRpbmdCb3Jk
ZXJzVmlzaWJsZShXS1ByZWZlcmVuY2VzUmVmLCBib29sKTsKIFdLX0VYUE9SVCBib29sIFdLUHJl
ZmVyZW5jZXNHZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKFdLUHJlZmVyZW5jZXNSZWYpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9RV0tWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1FXS1ZpZXcuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NmIyZDIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9RV0tWaWV3LmNwcApAQCAt
MCwwICsxLDE1NiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlFXS1ZpZXdfcF9wLmgiCisKKyNpbmNsdWRlICJDdXJzb3IuaCIKKyNpbmNsdWRl
ICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgorI2luY2x1ZGUgIkxheWVyVHJlZUhvc3RQcm94eS5o
IgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVX
ZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViVG91Y2hFdmVudC5oIgorI2luY2x1
ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5j
bHVkZSAiV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIK
KyNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgorCisjaW5jbHVkZSA8UVRyYW5zZm9ybT4KKyNp
bmNsdWRlIDxXZWJLaXQyL1FXS1ZpZXdfcC5oPgorCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitR
V0tWaWV3KiBRV0tWaWV3OjpjcmVhdGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmIHBhZ2VHcm91cFJlZiwgUVdLVmlld0NsaWVudCogY2xpZW50KQoreworICAgIGlmICgh
Y29udGV4dFJlZiB8fCAhcGFnZUdyb3VwUmVmKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbmV3IFFXS1ZpZXdJbXBsKHRvSW1wbChjb250ZXh0UmVmKSwgdG9JbXBsKHBhZ2VHcm91cFJl
ZiksIGNsaWVudCk7Cit9CisKK1FXS1ZpZXdJbXBsOjpRV0tWaWV3SW1wbChXZWJDb250ZXh0KiBj
b250ZXh0LCBXZWJQYWdlR3JvdXAqIHBhZ2VHcm91cCwgUVdLVmlld0NsaWVudCogY2xpZW50KQor
ICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV93ZWJQYWdlUHJveHkoY29udGV4dC0+Y3Jl
YXRlV2ViUGFnZSh0aGlzLCBwYWdlR3JvdXApKQoreworfQorCitRV0tWaWV3SW1wbDo6flFXS1Zp
ZXdJbXBsKCkKK3sKK30KKwordm9pZCBRV0tWaWV3SW1wbDo6c2V0Q3Vyc29yKGNvbnN0IFdlYkNv
cmU6OkN1cnNvciYgY3Vyc29yKQoreworICAgIG1fY2xpZW50LT52aWV3UmVxdWVzdGVkQ3Vyc29y
T3ZlcnJpZGUoKmN1cnNvci5wbGF0Zm9ybUN1cnNvcigpKTsKK30KKworUGFzc093blB0cjxEcmF3
aW5nQXJlYVByb3h5PiBRV0tWaWV3SW1wbDo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpCit7Cisg
ICAgcmV0dXJuIERyYXdpbmdBcmVhUHJveHlJbXBsOjpjcmVhdGUobV93ZWJQYWdlUHJveHkuZ2V0
KCkpOworfQorCit2b2lkIFFXS1ZpZXdJbXBsOjpzZXRGb2N1c2VkKGJvb2wgZm9jdXNlZCkKK3sK
KyAgICBtX2ZvY3VzZWQgPSBmb2N1c2VkOworICAgIG1fd2ViUGFnZVByb3h5LT52aWV3U3RhdGVE
aWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2VkKTsKK30KKwordm9pZCBRV0tWaWV3
SW1wbDo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCit7CisgICAgbV92aXNpYmxlID0gdmlzaWJs
ZTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6
Vmlld0lzVmlzaWJsZSk7Cit9CisKK3ZvaWQgUVdLVmlld0ltcGw6OnNldEFjdGl2ZShib29sIGFj
dGl2ZSkKK3sKKyAgICBtX2FjdGl2ZSA9IGFjdGl2ZTsKKyAgICBtX3dlYlBhZ2VQcm94eS0+dmll
d1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKwor
dm9pZCBRV0tWaWV3SW1wbDo6c2V0U2l6ZShjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBtX3Np
emUgPSBzaXplOworICAgIG1fd2ViUGFnZVByb3h5LT5zZXRWaWV3cG9ydFNpemUoc2l6ZSk7CisK
KworICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHktPmRy
YXdpbmdBcmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisK
KyAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShtX3NpemUsIFdlYkNvcmU6OkludFNpemUoKSk7Cisg
ICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVjdChX
ZWJDb3JlOjpJbnRQb2ludCgpLCBtX3NpemUpLCAxLCBXZWJDb3JlOjpGbG9hdFBvaW50KCkpOwor
fQorCit2b2lkIFFXS1ZpZXdJbXBsOjpwYWludChjb25zdCBRTWF0cml4NHg0JiB0cmFuc2Zvcm0s
IGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIHBhaW50RmxhZ3MpCit7CisgICAgRHJhd2luZ0FyZWFQ
cm94eSogZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKTsKKyAgICBp
ZiAoIWRyYXdpbmdBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICBMYXllclRyZWVIb3N0UHJv
eHkqIGxheWVyVHJlZUhvc3RQcm94eSA9IGRyYXdpbmdBcmVhLT5sYXllclRyZWVIb3N0UHJveHko
KTsKKyAgICBpZiAoIWxheWVyVHJlZUhvc3RQcm94eSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
V2ViTGF5ZXJUcmVlUmVuZGVyZXIqIHJlbmRlcmVyID0gbGF5ZXJUcmVlSG9zdFByb3h5LT5sYXll
clRyZWVSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHJlbmRlcmVyLT5zZXRBY3RpdmUodHJ1ZSk7CisgICAgcmVuZGVyZXItPnNldFZpc2libGVD
b250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQb2ludCgpLCBtX3NpemUp
LCAxLCBXZWJDb3JlOjpGbG9hdFBvaW50KCkpOworICAgIHJlbmRlcmVyLT5zeW5jUmVtb3RlQ29u
dGVudCgpOworCisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoMCwgMCwgbV9zaXplLndpZHRo
KCksIG1fc2l6ZS5oZWlnaHQoKSk7CisKKyAgICByZW5kZXJlci0+cGFpbnRUb0N1cnJlbnRHTENv
bnRleHQodHJhbnNmb3JtLCBvcGFjaXR5LCByZWN0LCBwYWludEZsYWdzKTsKK30KKwordm9pZCBR
V0tWaWV3SW1wbDo6a2V5RXZlbnQoUUtleUV2ZW50KiBldmVudCkKK3sKKyAgICBtX3dlYlBhZ2VQ
cm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGV2ZW50KSk7
Cit9CisKK3ZvaWQgUVdLVmlld0ltcGw6Om1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBp
bnQgY2xpY2tDb3VudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChO
YXRpdmVXZWJNb3VzZUV2ZW50KGV2ZW50LCBRVHJhbnNmb3JtKCksIGNsaWNrQ291bnQpKTsKK30K
Kwordm9pZCBRV0tWaWV3SW1wbDo6d2hlZWxFdmVudChRV2hlZWxFdmVudCogZXZlbnQpCit7Cisg
ICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudChl
dmVudCwgUVRyYW5zZm9ybSgpKSk7Cit9CisKK3ZvaWQgUVdLVmlld0ltcGw6OnRvdWNoRXZlbnQo
UVRvdWNoRXZlbnQqIGV2ZW50KQoreworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVUb3VjaEV2
ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQoZXZlbnQsIFFUcmFuc2Zvcm0oKSkpOworfQorCit2b2lk
IFFXS1ZpZXdJbXBsOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBtX2NsaWVudC0+ZG9uZVdp
dGhLZXlFdmVudChldmVudC5uYXRpdmVFdmVudCgpLCB3YXNFdmVudEhhbmRsZWQpOworfQorCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgUVdLVmlld0ltcGw6OmRvbmVXaXRoVG91Y2hF
dmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRs
ZWQpCit7CisgICAgbV9jbGllbnQtPmRvbmVXaXRoVG91Y2hFdmVudChldmVudC5uYXRpdmVFdmVu
dCgpLCB3YXNFdmVudEhhbmRsZWQpOworfQorI2VuZGlmCisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1FXS1ZpZXdfcC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvUVdLVmlld19wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMGUyOWFiZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1FXS1ZpZXdfcC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisvKgorICAgIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgcHVi
bGljIFF0IEFwaS4gSXQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZSBpbiBm
dXR1cmUuCisgICAgV2UgbWFrZSBubyBjb21taXRtZW50IHJlZ2FyZGluZyBzb3VyY2UgY29tcGF0
aWJpbGl0eSBvciBiaW5hcnkgY29tcGF0aWJpbGl0eS4KKyovCisKKyNpZm5kZWYgUVdLVmlld19w
X2gKKyNkZWZpbmUgUVdLVmlld19wX2gKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlLmg+
CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgorCitjbGFzcyBRUmVjdDsKK2NsYXNz
IFFSZWN0RjsKK2NsYXNzIFFQb2ludDsKK2NsYXNzIFFTaXplOworY2xhc3MgUUtleUV2ZW50Owor
Y2xhc3MgUU1vdXNlRXZlbnQ7CitjbGFzcyBRV2hlZWxFdmVudDsKK2NsYXNzIFFUb3VjaEV2ZW50
OworY2xhc3MgUVVybDsKK2NsYXNzIFFNYXRyaXg0eDQ7CitjbGFzcyBRQ3Vyc29yOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUVdLVmlldzsKKworY2xhc3MgUVdLVmlld0NsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+UVdLVmlld0NsaWVudCgpIHsgfQorCisgICAgdmlydHVh
bCB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHZpZXdSZXF1ZXN0ZWRTY3JvbGwoY29uc3QgUVBvaW50JikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB2aWV3UHJvY2Vzc0NyYXNoZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9j
ZXNzUmVsYXVuY2hlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld0NvbnRlbnRTaXplQ2hh
bmdlZChjb25zdCBRU2l6ZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZEN1
cnNvck92ZXJyaWRlKGNvbnN0IFFDdXJzb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRvbmVX
aXRoS2V5RXZlbnQoY29uc3QgUUtleUV2ZW50KiwgYm9vbCB3YXNIYW5kbGVkKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGJvb2wg
d2FzSGFuZGxlZCkgPSAwOworfTsKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdLVmlldyB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+UVdLVmlldygpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemUoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBRU2l6ZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIFFTaXplIHNpemUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Rm9jdXNlZChib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRm9jdXNlZCgp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpID0gMDsKKyAg
ICB2aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHNldEFjdGl2ZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zcGFyZW50QmFja2dyb3VuZChib29sKSA9
IDA7CisgICAgdmlydHVhbCBib29sIHRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0ID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3QmFja2dyb3VuZChib29sKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGRyYXdCYWNrZ3JvdW5kKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgdW5zaWdu
ZWQgcGFpbnRGbGFncykgPSAwOworCisgICAgdmlydHVhbCBXS1BhZ2VSZWYgcGFnZVJlZigpID0g
MDsKKworICAgIHN0YXRpYyBRV0tWaWV3KiBjcmVhdGUoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91
cFJlZiwgUVdLVmlld0NsaWVudCopOworCisgICAgdmlydHVhbCB2b2lkIGtleUV2ZW50KFFLZXlF
dmVudCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VFdmVudChRTW91c2VFdmVudCosIGlu
dCBjbGlja0NvdW50ID0gMCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50KFFXaGVl
bEV2ZW50KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kikg
PSAwOworfTsKKworfQorCisjZW5kaWYgLy8gUVdLVmlld19wX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1FXS1ZpZXdfcF9wLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9RV0tWaWV3X3BfcC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmE1NThiMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9RV0tWaWV3X3BfcC5oCkBAIC0wLDAgKzEsMTY0IEBA
CisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisqLworCisvKgorICAgIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0
aGUgcHVibGljIFF0IEFwaS4gSXQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGlt
ZSBpbiBmdXR1cmUuCisgICAgV2UgbWFrZSBubyBjb21taXRtZW50IHJlZ2FyZGluZyBzb3VyY2Ug
Y29tcGF0aWJpbGl0eSBvciBiaW5hcnkgY29tcGF0aWJpbGl0eS4KKyovCisKKyNpZm5kZWYgUVdL
Vmlld19wX3BfaAorI2RlZmluZSBRV0tWaWV3X3BfcF9oCisKKyNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgorI2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKKyNpbmNsdWRlICJRV0tWaWV3X3AuaCIK
KyNpbmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51
UHJveHkuaCIKKworI2luY2x1ZGUgPFFVcmw+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBRV0tWaWV3SW1wbCA6IHB1YmxpYyBQYWdlQ2xpZW50ICwgcHVibGljIFFXS1ZpZXcgeworcHVi
bGljOgorCisgICAgdmlydHVhbCB2b2lkIHBhZ2VDbG9zZWQoKSB7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBzZXRGaW5kSW5kaWNhdG9yKFBhc3NSZWZQdHI8RmluZEluZGljYXRvcj4sIGJvb2wgZmFk
ZU91dCwgYm9vbCBhbmltYXRlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZv
ck1haW5GcmFtZShib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJikg
eyB9CisgICAgdmlydHVhbCBkb3VibGUgY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCkg
eyByZXR1cm4gMTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21SZXByZXNlbnRhdGlvblpv
b21GYWN0b3IoZG91YmxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFy
c0Zvck1haW5GcmFtZSgpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaW5kU3RyaW5nSW5D
dXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkZpbmRPcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJpbmdN
YXRjaGVzSW5DdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkZpbmRP
cHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3
cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKSB7
IG5vdEltcGxlbWVudGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1
ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBT
dHJpbmcmIGhvc3RuYW1lLCBjb25zdCBTdHJpbmcmIHJlYWxtLCBjb25zdCBTdHJpbmcmIHByZWZp
bGxlZFVzZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3b3JkKSB7IG5vdElt
cGxlbWVudGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQ2VydGlmaWNhdGVWZXJpZmlj
YXRpb25SZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGJvb2wmIGlnbm9yZUVycm9ycykg
eyBub3RJbXBsZW1lbnRlZCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZVByb3h5QXV0aGVu
dGljYXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgdWludDE2X3Qg
cG9ydCwgY29uc3QgU3RyaW5nJiBwcmVmaWxsZWRVc2VybmFtZSwgU3RyaW5nJiB1c2VybmFtZSwg
U3RyaW5nJiBwYXNzd29yZCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBX
ZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBjYW5V
bmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykgeyBub3RJbXBsZW1l
bnRlZCgpOyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRv
KFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKSB7IG5vdEltcGxlbWVudGVkKCk7
IH0KKworICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNl
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1
cm4gcmVjdDsgfQorICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJT
cGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QpIHsgbm90SW1wbGVtZW50ZWQoKTsg
cmV0dXJuIHJlY3Q7IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvV2lu
ZG93KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkgeyBub3RJbXBsZW1lbnRlZCgpOyBy
ZXR1cm4gcG9pbnQ7IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFJlY3Qgd2luZG93VG9TY3Jl
ZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkgeyBub3RJbXBsZW1lbnRlZCgpOyByZXR1
cm4gcmVjdDsgfQorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHZpcnR1
YWwgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNv
bnRleHQmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNvbnN0IExheWVyVHJlZUNv
bnRleHQmKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dElucHV0U3RhdGUoKSB7
IG5vdEltcGxlbWVudGVkKCk7IH0KKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgdmly
dHVhbCB2b2lkIGRvbmVXaXRoR2VzdHVyZUV2ZW50KGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZXZl
bnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KKyNlbmRpZgor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5VmlldygpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCkgeyBub3RJbXBsZW1lbnRl
ZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgZmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiB0
YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGFyZWEpIHsgbm90SW1wbGVtZW50ZWQoKTsg
fQorCisgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29s
IGhpZGRlblVudGlsTW91c2VNb3ZlcykgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgbmV3VG9v
bHRpcCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFn
KGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwgUGFzc1JlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGRyYWdJbWFnZSkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSogd2ViUGFnZVByb3h5KSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBQYXNzUmVmUHRy
PFdlYlBvcHVwTWVudVByb3h5PigpOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvbnRl
eHRNZW51UHJveHk+IGNyZWF0ZUNvbnRleHRNZW51UHJveHkoV2ViUGFnZVByb3h5KiB3ZWJQYWdl
UHJveHkpIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1l
bnVQcm94eT4oKTsgfQorCisgICAgUVdLVmlld0ltcGwoV2ViQ29udGV4dCosIFdlYlBhZ2VHcm91
cCosIFFXS1ZpZXdDbGllbnQqKTsKKyAgICB+UVdLVmlld0ltcGwoKTsKKworICAgIC8vIFBhZ2VD
bGllbnQKKworICAgIHZpcnR1YWwgUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVE
cmF3aW5nQXJlYVByb3h5KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3Jv
bGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvcykgeyBtX2NsaWVudC0+dmlld1JlcXVlc3Rl
ZFNjcm9sbChwb3MpOyB9CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpIHsgbV9j
bGllbnQtPnZpZXdQcm9jZXNzQ3Jhc2hlZCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1
bmNoUHJvY2VzcygpIHsgbV9jbGllbnQtPnZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpOyB9CisgICAg
dmlydHVhbCB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCkgeyBtX2NsaWVudC0+dmlld05lZWRzRGlzcGxheShyZWN0KTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3U2l6
ZSkgeyBtX2NsaWVudC0+dmlld0NvbnRlbnRTaXplQ2hhbmdlZChuZXdTaXplKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJik7CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgpIHsgcmV0dXJuIG1fZm9jdXNlZDsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1ZpZXdWaXNpYmxlKCkgeyByZXR1cm4gbV92aXNpYmxlOyB9CisgICAgdmlydHVh
bCBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpIHsgcmV0dXJuIG1fYWN0aXZlOyB9CisgICAgdmly
dHVhbCBib29sIGlzVmlld0luV2luZG93KCkgeyByZXR1cm4gdHJ1ZTsgfSAvLyBGSVhNRQorICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsgfQor
CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91
Y2hFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKTsKKyNlbmRpZgorCisgICAgLy8gV0tWaWV3
CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZSgpIHsgbV93ZWJQYWdlUHJveHktPmluaXRp
YWxpemVXZWJQYWdlKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRGb2N1c2VkKGJvb2wpOwor
ICAgIHZpcnR1YWwgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzZWQ7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBp
c1Zpc2libGUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGU7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY3RpdmUoYm9vbCk7CisgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hY3RpdmU7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRTaXplKGNvbnN0IFFTaXpl
Jik7CisgICAgdmlydHVhbCBRU2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wgdmFsdWUpIHsg
bV93ZWJQYWdlUHJveHktPnNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHZhbHVlKTsgfQor
ICAgIHZpcnR1YWwgYm9vbCB0cmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25zdCB7IHJldHVybiBt
X3dlYlBhZ2VQcm94eS0+ZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoKTsgfQorCisgICAgdmly
dHVhbCB2b2lkIHNldERyYXdCYWNrZ3JvdW5kKGJvb2wgdmFsdWUpIHsgbV93ZWJQYWdlUHJveHkt
PnNldERyYXdzQmFja2dyb3VuZCh2YWx1ZSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZHJhd0JhY2tn
cm91bmQoKSBjb25zdCB7IHJldHVybiBtX3dlYlBhZ2VQcm94eS0+ZHJhd3NCYWNrZ3JvdW5kKCk7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBwYWludChjb25zdCBRTWF0cml4NHg0JiB0cmFuc2Zvcm0s
IGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIFBhaW50RmxhZ3MpOworCisgICAgV0tQYWdlUmVmIHBh
Z2VSZWYoKSB7IHJldHVybiB0b0FQSShtX3dlYlBhZ2VQcm94eS5nZXQoKSk7IH0KKworcHJvdGVj
dGVkOgorICAgIHZpcnR1YWwgdm9pZCBrZXlFdmVudChRS2V5RXZlbnQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgbW91c2VFdmVudChRTW91c2VFdmVudCosIGludCBjbGlja0NvdW50ID0gMCk7CisgICAg
dmlydHVhbCB2b2lkIHdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dG91Y2hFdmVudChRVG91Y2hFdmVudCopOworCitwcml2YXRlOgorICAgIGJvb2wgbV9mb2N1c2Vk
OworICAgIGJvb2wgbV92aXNpYmxlOworICAgIGJvb2wgbV9hY3RpdmU7CisgICAgUVNpemUgbV9z
aXplOworICAgIFFVcmwgbV91cmw7CisKKyAgICBRV0tWaWV3Q2xpZW50KiBtX2NsaWVudDsKKyAg
ICBXVEY6OlJlZlB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gbV93ZWJQYWdlUHJveHk7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBRV0tWaWV3X3BfcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvYmx1ZXNxdWFyZS5odG1sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGI2Mzk2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRt
bApAQCAtMCwwICsxLDUgQEAKKzxib2R5IHN0eWxlPSJtYXJnaW46NjBweCI+CisgICAgPHRhYmxl
IHN0eWxlPSJib3JkZXI6MTBweCBzb2xpZCBibHVlOyB3aWR0aDo4MHB4OyBoZWlnaHQ6ODBweCI+
CisgICAgICAgIDx0cj48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgIDwvdGFibGU+Cis8L2JvZHk+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwv
cmVkc3F1YXJlLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0
bWwvcmVkc3F1YXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcw
ZDI5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxib2R5IHN0eWxlPSJt
YXJnaW46MjBweCI+CisgICAgPHRhYmxlIHN0eWxlPSJib3JkZXI6MTBweCBzb2xpZCByZWQ7IHdp
ZHRoOjE2MHB4OyBoZWlnaHQ6MTYwcHgiPgorICAgICAgICA8dHI+PHRkPiZuYnNwOzwvdGQ+PC90
cj4KKyAgICA8L3RhYmxlPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X25vQmFja2dyb3VuZDEu
cG5nIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNl
cy9xd2t2aWV3X25vQmFja2dyb3VuZDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4M2YwN2NlZmYyMjhiYzhl
YmRlZGNiMTY5NGY1ODU4ODg4ZTQ3MzYKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDY5Ngp6Y21l
QVNATj8ob2xIeWB1VkJxIWlhMHZwXkNxUzVrNE0/dHlTVF8keXVAcE9iaEh3QnU0TSQxYGtrNDcq
NW4wVEAKeno7Xl9NOEstTFZOaSM0b01SfmU3aEUmWFhkKUpZIyR3N2VPO0wjdWReJmhpdU5tZUA5
NU10WiNXfnAmfFZgX0J2CnpUa2VZMmhQNGI5IypHZEY5NHRmPEV6ZDlWZWAmT3l5c2RlREk/IXde
YFlkV0R8NjlBKmVCUGghRTZxKU8xVVElKQp6Nnt0V1lae0wwWHF4JCN6Y1Y1VFUzOX5kZ0N+JSs/
aGpgNmotcnNmbypiUW02X2NJailTZVA2SzdjdVdMeVQkdDIKelVrcX5eSUkla0lWY1lDNHh4V308
STxRTlY/d2lDblcjI3BYJiQpMkshUjx7fitXSytHO2Z5bz1tPF5uPnpDNWFgClBXQj53QlMzajNe
UDY8cl9YXz1JZAoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X25vQmFj
a2dyb3VuZDMucG5nIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1s
L3Jlc291cmNlcy9xd2t2aWV3X25vQmFja2dyb3VuZDMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYyYTc3YTgz
OGQ5NTgyNmI3ZjEwOWMzODY3NzJhYTJkNmZmNTY3NjkKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFs
IDcwMQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXkNxUzVrNE0/dHlTVF8keXVAcE9iaEh3QnU0
TSQxYGtrNDcqNW4wVEAKeno7Xl9NOEstTFZOaSM0byNlMkZxaEUmWFhkLW92Y1ZGTGslZ0JtO2pQ
bipoaT0jZkM8b1FoPShpX2FKRiYlOFhOCnpfI0ZGKFlzS0ZnQURtKWdhI1JvP21nc3ZMRk8mUkp7
byQ2UStHMEtlOTg4VDA3e3UlUk9Yb0wqJT02RnI8JFJiMAp6aSMjP3hndjIpRkBCWGJldWtpbzV5
VkV8KyNfcm1AXjJ2NEE/JmtJVVA1ZHlBbE4ydXo+dmhXMUota3VkdXYja2wKekpMZTgyVlV7S2Ix
ckJ1TChBJklBJitwVlMpcGIoS15AO2IoJUswYUxYMnU7KXdsMyU3NElNR3ZnM1d5fXV7e2g1Cldf
WFgjSzZvMjJyMDBmP3tlbEZ7cjV9RSk4dTlwaHsKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNv
dXJjZXMvcXdrdmlld19wYWludC5wbmcgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F3a3ZpZXdfcGFpbnQucG5nCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1YmY2
NzZmMjFhMDllZDM1MzI4MTkyZGNjYjUzNzYwNGY5MjQ3OTIKR0lUIGJpbmFyeSBwYXRjaApsaXRl
cmFsIDY2Nwp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXkNxUzVrNE0/dHlTVF8keXVAcE9iaEh3
QnU0TSQxYGtrNDcqNW4wVEAKeno7Xl9NOEstTFZOaSM0byo/UEotaEUmWFhkdUptanYhTVdrPExS
M0p4fkYrKHhWQUF7JmRffUQ8eiFLIyt9Z2UwCno+bG93cj1HUWEpRj5aN2E7OXd6PVhpMlltNiFs
cDc7ZilXJSstNnZId2Z2bUBDMEs2aWJNZmlfRV5LZ0E7OXpOVAp6NyRzO0IxfiU5STskR2puU2E2
RTFROSohJTM3cyZncFM8dDs1MDQjM3V9ZnBxMHY3d2ckaE1EciU0ZmEoY1l2dmoKTiFQQ3t4V3R+
JCg2OUM4cG47cmxGCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F3a3ZpZXcvcXdrdmlldy5wcm8gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F3a3ZpZXcvcXdrdmlldy5wcm8KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkYzE5NwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXdrdmlldy9xd2t2aWV3
LnBybwpAQCAtMCwwICsxLDMgQEAKK2luY2x1ZGUoLi4vdGVzdHMucHJpKQorU09VUkNFUyArPSAk
JHtUQVJHRVR9LmNwcAorUVQgKz0gd2Via2l0LXByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXdrdmlldy90c3RfcXdrdmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F3a3ZpZXcvdHN0X3F3a3ZpZXcu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlMjZkYjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F3a3ZpZXcv
dHN0X3F3a3ZpZXcuY3BwCkBAIC0wLDAgKzEsMjMwIEBACisvKgorICAgIENvcHlyaWdodCAoQykg
MjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworI2lu
Y2x1ZGUgIi4uL3V0aWwuaCIKKworI2luY2x1ZGUgPFFJbWFnZT4KKyNpbmNsdWRlIDxRTWF0cml4
NHg0PgorI2luY2x1ZGUgPFFPcGVuR0xDb250ZXh0PgorI2luY2x1ZGUgPFFTaXplPgorI2luY2x1
ZGUgPFFXaW5kb3c+CisjaW5jbHVkZSA8UXRUZXN0L1F0VGVzdD4KKworI2luY2x1ZGUgPFdlYktp
dDIvUVdLVmlld19wLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2Vz
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tTdHJpbmdRdC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tVUkwuaD4KKworc3Rh
dGljIFdLQ29udGV4dFJlZiB3ZWJDb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgV0tDb250ZXh0UmVm
IHJlc3VsdCA9IFdLQ29udGV4dENyZWF0ZSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0
YXRpYyBXS1BhZ2VHcm91cFJlZiBjcmVhdGVXZWJQYWdlR3JvdXAoY29uc3QgUVN0cmluZyYgbmFt
ZSkKK3sKKyAgICBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAgPVdLUGFnZUdyb3VwQ3JlYXRlV2l0
aElkZW50aWZpZXIoV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhuYW1lKSk7CisgICAgV0tQcmVm
ZXJlbmNlc1JlZiBwcmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdy
b3VwKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
cHJlZmVyZW5jZXMsIHRydWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5n
TW9kZShwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRl
bmluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOworCisgICAgcmV0dXJuIHBhZ2VHcm91cDsK
K30KKworc3RhdGljIFdLUGFnZUdyb3VwUmVmIHdlYlBhZ2VHcm91cChjb25zdCBRU3RyaW5nJiBu
YW1lKQoreworICAgIHN0YXRpYyBXS1BhZ2VHcm91cFJlZiByZXN1bHQgPSBjcmVhdGVXZWJQYWdl
R3JvdXAobmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworY2xhc3MgV2ViVmlldyA6IHB1
YmxpYyBRT2JqZWN0LCBwdWJsaWMgV2ViS2l0OjpRV0tWaWV3Q2xpZW50IHsKKyAgICBRX09CSkVD
VAorcHVibGljOgorICAgIFdlYlZpZXcoY29uc3QgUVNpemUmIHNpemUpCisgICAgeworICAgICAg
ICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50OworICAgICAgICBtZW1zZXQoJmxvYWRl
ckNsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUxvYWRlckNsaWVudCkpOworICAgICAgICBsb2FkZXJD
bGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hM
b2FkRm9yRnJhbWUgPSBXZWJWaWV3OjpmaW5pc2hMb2FkRm9yRnJhbWU7CisKKyAgICAgICAgbV93
ZWJWaWV3ID0gV2ViS2l0OjpRV0tWaWV3OjpjcmVhdGUod2ViQ29udGV4dCgpLCB3ZWJQYWdlR3Jv
dXAoUVN0cmluZygpKSwgdGhpcyk7CisgICAgICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
bV93ZWJWaWV3LT5wYWdlUmVmKCksICZsb2FkZXJDbGllbnQpOworICAgICAgICBtX3dlYlZpZXct
PmluaXRpYWxpemUoKTsKKyAgICAgICAgV0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQobV93ZWJWaWV3
LT5wYWdlUmVmKCksIHRydWUpOworCisgICAgICAgIG1fd2ViVmlldy0+c2V0U2l6ZShzaXplKTsK
KyAgICAgICAgbV93ZWJWaWV3LT5zZXRGb2N1c2VkKHRydWUpOworICAgICAgICBtX3dlYlZpZXct
PnNldFZpc2libGUodHJ1ZSk7CisgICAgICAgIG1fd2ViVmlldy0+c2V0QWN0aXZlKHRydWUpOwor
ICAgIH0KKworICAgIH5XZWJWaWV3KCkgeyBkZWxldGUgbV93ZWJWaWV3OyB9CisKKyAgICB2b2lk
IGxvYWQoY29uc3QgUVN0cmluZyYgaHRtbCkKKyAgICB7CisgICAgICAgIG1fZnJhbWVMb2FkZWQg
PSBmYWxzZTsKKyAgICAgICAgV0tQYWdlTG9hZFVSTChtX3dlYlZpZXctPnBhZ2VSZWYoKSwgV0tV
UkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoaHRtbC50b0FzY2lpKCkuZGF0YSgpKSk7CisgICAgICAg
IFFWRVJJRlkoOjp3YWl0Rm9yU2lnbmFsKHRoaXMsIFNJR05BTChsb2FkZWQoKSksIDUwMDApKTsK
KyAgICB9CisKKyAgICB2b2lkIHNldERyYXdCYWNrZ3JvdW5kKGJvb2wgdmFsdWUpIHsgbV93ZWJW
aWV3LT5zZXREcmF3QmFja2dyb3VuZCh2YWx1ZSk7IH0KKyAgICB2b2lkIHNldFRyYW5zcGFyZW50
QmFja2dyb3VuZChib29sIHZhbHVlKSB7IG1fd2ViVmlldy0+c2V0VHJhbnNwYXJlbnRCYWNrZ3Jv
dW5kKHZhbHVlKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoY29uc3Qg
UVJlY3QmKQorICAgIHsKKyAgICAgICAgbV93ZWJWaWV3LT5wYWludChRTWF0cml4NHg0KCksIDEs
IDApOworICAgICAgICBpZiAobV9mcmFtZUxvYWRlZCkKKyAgICAgICAgICAgIGVtaXQgbG9hZGVk
KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRTY3JvbGwoY29uc3Qg
UVBvaW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzQ3Jhc2hlZCgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc1JlbGF1bmNoZWQoKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgdmlld0NvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6ZSYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCB2aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUoY29uc3QgUUN1cnNvciYpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IFFLZXlFdmVudCosIGJvb2wg
d2FzSGFuZGxlZCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25z
dCBRVG91Y2hFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgeyB9CisKKyAgICBzdGF0aWMgdm9pZCBm
aW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CisKK3NpZ25hbHM6CisgICAg
dm9pZCBsb2FkZWQoKTsKKworcHJpdmF0ZToKKyAgICBXZWJLaXQ6OlFXS1ZpZXcqIG1fd2ViVmll
dzsKKyAgICBib29sIG1fZnJhbWVMb2FkZWQ7Cit9OworCit2b2lkIFdlYlZpZXc6OmZpbmlzaExv
YWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVz
ZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQoreworICAgIFdlYlZpZXcqIG9iaiA9IHN0
YXRpY19jYXN0PFdlYlZpZXcqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAg
b2JqLT5tX2ZyYW1lTG9hZGVkID0gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgY29tcGFyZUltYWdl
cyhjb25zdCBRSW1hZ2UmIGkxLCBjb25zdCBRSW1hZ2UmIGkyLCBjb25zdCBRUG9pbnQmIHAxLCBj
b25zdCBRUG9pbnQmIHAyLCBpbnQgaXRlcikKK3sKKyAgICBjb25zdCBRUG9pbnQgcG9pbnQoKHAx
LngoKSArIHAyLngoKSkgPj4gMSwgKHAxLnkoKSArIHAyLnkoKSkgPj4gMSk7CisKKyAgICBpZiAo
aTEucGl4ZWwocG9pbnQpICE9IGkyLnBpeGVsKHBvaW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFpdGVyKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC0taXRlcjsK
KyAgICByZXR1cm4gY29tcGFyZUltYWdlcyhpMSwgaTIsIHBvaW50LCBwMSwgaXRlcikgJiYgY29t
cGFyZUltYWdlcyhpMSwgaTIsIHBvaW50LCBwMiwgaXRlcikKKyAgICAgICAgJiYgY29tcGFyZUlt
YWdlcyhpMSwgaTIsIHBvaW50LCBRUG9pbnQocDEueCgpLCBwMi55KCkpLCBpdGVyKSAmJiBjb21w
YXJlSW1hZ2VzKGkxLCBpMiwgcG9pbnQsIFFQb2ludChwMi54KCksIHAxLnkoKSksIGl0ZXIpOwor
fQorCitzdGF0aWMgYm9vbCBjb21wYXJlSW1hZ2VzKGNvbnN0IFFJbWFnZSYgaTEsIGNvbnN0IFFJ
bWFnZSYgaTIsIGludCBpdGVyKQoreworICAgIGlmIChpMS5zaXplKCkgIT0gaTIuc2l6ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNvbXBhcmVJbWFnZXMoaTEsIGkyLCBR
UG9pbnQoMCwgMCksIFFQb2ludChpMS5zaXplKCkud2lkdGgoKSwgaTEuc2l6ZSgpLmhlaWdodCgp
KSwgaXRlcik7Cit9CisKK2NsYXNzIHRzdF9xd2t2aWV3IDogcHVibGljIFFPYmplY3QgeworICAg
IFFfT0JKRUNUCitwdWJsaWM6CisgICAgdHN0X3F3a3ZpZXcoKQorICAgICAgICA6IG1fcmVzb3Vy
Y2VEaXIoUVN0cmluZzo6ZnJvbUFzY2lpKFRFU1RTX1NPVVJDRV9ESVIgIi9odG1sL3Jlc291cmNl
cyIpKQorICAgICAgICAsIG1fYmFzZVVybChRVXJsOjpmcm9tTG9jYWxGaWxlKFRFU1RTX1NPVVJD
RV9ESVIgIi9odG1sIikudG9TdHJpbmcoKSkKKyAgICB7IH0KKworcHJpdmF0ZSBzbG90czoKKyAg
ICB2b2lkIHBhaW50KCkgeyBydW4oJnRzdF9xd2t2aWV3Ojpkb1BhaW50LCBtX3Jlc291cmNlRGly
ICsgIi9xd2t2aWV3X3BhaW50LnBuZyIpOyB9CisgICAgdm9pZCBub0JhY2tncm91bmQxKCkgeyBy
dW4oJnRzdF9xd2t2aWV3Ojpkb05vQmFja2dyb3VuZDEsIG1fcmVzb3VyY2VEaXIgKyAiL3F3a3Zp
ZXdfbm9CYWNrZ3JvdW5kMS5wbmciKTsgfQorICAgIHZvaWQgbm9CYWNrZ3JvdW5kMigpIHsgcnVu
KCZ0c3RfcXdrdmlldzo6ZG9Ob0JhY2tncm91bmQyLCBtX3Jlc291cmNlRGlyICsgIi9xd2t2aWV3
X25vQmFja2dyb3VuZDEucG5nIik7IH0KKyAgICB2b2lkIG5vQmFja2dyb3VuZDMoKSB7IHJ1bigm
dHN0X3F3a3ZpZXc6OmRvTm9CYWNrZ3JvdW5kMywgbV9yZXNvdXJjZURpciArICIvcXdrdmlld19u
b0JhY2tncm91bmQzLnBuZyIpOyB9CisKK3ByaXZhdGU6CisgICAgY29uc3QgUVN0cmluZyBtX3Jl
c291cmNlRGlyOworICAgIGNvbnN0IFFTdHJpbmcgbV9iYXNlVXJsOworCisgICAgdm9pZCBkb1Bh
aW50KGNvbnN0IFFTaXplJiBzaXplKTsKKyAgICB2b2lkIGRvTm9CYWNrZ3JvdW5kMShjb25zdCBR
U2l6ZSYgc2l6ZSk7CisgICAgdm9pZCBkb05vQmFja2dyb3VuZDIoY29uc3QgUVNpemUmIHNpemUp
OworICAgIHZvaWQgZG9Ob0JhY2tncm91bmQzKGNvbnN0IFFTaXplJiBzaXplKTsKKworICAgIHR5
cGVkZWYgdm9pZCAodHN0X3F3a3ZpZXc6OipQYWludE1ldGhvZCkoY29uc3QgUVNpemUmIHNpemUp
OworICAgIHZvaWQgcnVuKFBhaW50TWV0aG9kLCBjb25zdCBRU3RyaW5nJiBleHBlY3RhdGlvbik7
Cit9OworCit2b2lkIHRzdF9xd2t2aWV3Ojpkb1BhaW50KGNvbnN0IFFTaXplJiBzaXplKQorewor
ICAgIFdlYlZpZXcgdmlldyhzaXplKTsKKyAgICB2aWV3LmxvYWQobV9iYXNlVXJsICsgIi9yZWRz
cXVhcmUuaHRtbCIpOworfQorCit2b2lkIHRzdF9xd2t2aWV3Ojpkb05vQmFja2dyb3VuZDEoY29u
c3QgUVNpemUmIHNpemUpCit7CisgICAgV2ViVmlldyB2aWV3KHNpemUpOworICAgIHZpZXcuc2V0
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRydWUpOworICAgIHZpZXcubG9hZChtX2Jhc2VVcmwgKyAi
L3JlZHNxdWFyZS5odG1sIik7CisgICAgdmlldy5sb2FkKG1fYmFzZVVybCArICIvYmx1ZXNxdWFy
ZS5odG1sIik7Cit9CisKK3ZvaWQgdHN0X3F3a3ZpZXc6OmRvTm9CYWNrZ3JvdW5kMihjb25zdCBR
U2l6ZSYgc2l6ZSkKK3sKKyAgICBXZWJWaWV3IHZpZXcxKHNpemUpOworICAgIHZpZXcxLnNldFRy
YW5zcGFyZW50QmFja2dyb3VuZCh0cnVlKTsKKyAgICB2aWV3MS5sb2FkKG1fYmFzZVVybCArICIv
cmVkc3F1YXJlLmh0bWwiKTsKKworICAgIFdlYlZpZXcgdmlldzIoc2l6ZSk7CisgICAgdmlldzIu
c2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRydWUpOworICAgIHZpZXcyLmxvYWQobV9iYXNlVXJs
ICsgIi9ibHVlc3F1YXJlLmh0bWwiKTsKK30KKwordm9pZCB0c3RfcXdrdmlldzo6ZG9Ob0JhY2tn
cm91bmQzKGNvbnN0IFFTaXplJiBzaXplKQoreworICAgIFdlYlZpZXcgdmlldzEoc2l6ZSk7Cisg
ICAgdmlldzEuc2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGZhbHNlKTsKKyAgICB2aWV3MS5sb2Fk
KG1fYmFzZVVybCArICIvcmVkc3F1YXJlLmh0bWwiKTsKKworICAgIFdlYlZpZXcgdmlldzIoc2l6
ZSk7CisgICAgdmlldzIuc2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRydWUpOworICAgIHZpZXcy
LmxvYWQobV9iYXNlVXJsICsgIi9ibHVlc3F1YXJlLmh0bWwiKTsKK30KKwordm9pZCB0c3RfcXdr
dmlldzo6cnVuKFBhaW50TWV0aG9kIG1ldGhvZCwgY29uc3QgUVN0cmluZyYgZXhwZWN0YXRpb24p
Cit7CisKKyAgICBRV2luZG93IHdpbmRvdzsKKyAgICB3aW5kb3cuc2V0U3VyZmFjZVR5cGUoUVN1
cmZhY2U6Ok9wZW5HTFN1cmZhY2UpOworICAgIHdpbmRvdy5zZXRHZW9tZXRyeSgwLCAwLCAyMDAs
IDIwMCk7CisgICAgd2luZG93LmNyZWF0ZSgpOworCisgICAgUU9wZW5HTENvbnRleHQgY29udGV4
dDsKKyAgICBjb250ZXh0LmNyZWF0ZSgpOworICAgIGNvbnRleHQubWFrZUN1cnJlbnQoJndpbmRv
dyk7CisKKyAgICAodGhpcy0+Km1ldGhvZCkod2luZG93LnNpemUoKSk7CisKKyAgICBRSW1hZ2Ug
aW1hZ2Uod2luZG93LnNpemUoKSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQp
OworICAgIGdsUmVhZFBpeGVscygwLCAwLCB3aW5kb3cuc2l6ZSgpLndpZHRoKCksIHdpbmRvdy5z
aXplKCkuaGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGltYWdlLmJpdHMoKSk7
CisKKyAgICBRVkVSSUZZKGNvbXBhcmVJbWFnZXMoUUltYWdlKGV4cGVjdGF0aW9uKSwgaW1hZ2Uu
cmdiU3dhcHBlZCgpLCA1KSk7Cit9CisKK1FURVNUX01BSU4odHN0X3F3a3ZpZXcpCisKKyNpbmNs
dWRlICJ0c3RfcXdrdmlldy5tb2MiCmRpZmYgLS1naXQgYS9Tb3VyY2UvdGVzdHMucHJpIGIvU291
cmNlL3Rlc3RzLnByaQppbmRleCA1ZDJlYjZiLi5kNTY2YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
dGVzdHMucHJpCisrKyBiL1NvdXJjZS90ZXN0cy5wcmkKQEAgLTUwLDUgKzUwLDYgQEAgU1VCRElS
UyArPSBcCiAgICAgICAgICQkV0VCS0lUMl9URVNUU19ESVIvaW5zcGVjdG9yc2VydmVyIFwKICAg
ICAgICAgJCRXRUJLSVQyX1RFU1RTX0RJUi9wdWJsaWNhcGkgXAogICAgICAgICAkJFdFQktJVDJf
VEVTVFNfRElSL3FxdWlja3dlYnZpZXcgXAotICAgICAgICAkJFdFQktJVDJfVEVTVFNfRElSL3Ft
bHRlc3RzCisgICAgICAgICQkV0VCS0lUMl9URVNUU19ESVIvcW1sdGVzdHMgXAorICAgICAgICAk
JFdFQktJVDJfVEVTVFNfRElSL3F3a3ZpZXcKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4YzQ4NTQ1Li4yZTJmYjFlIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIw
MTItMDYtMDYgIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gUHJpdmF0ZSBub24tUXRRdWljayBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTMyCisKKyAgICAgICAgTWluaUJyb3dz
ZXJfY2IgaXMgYW4gdXNhZ2UgZXhhbXBsZSBmb3IgdGhlIFFXS1ZpZXcgQVBJLiBJdCBpcyBvbmx5
IGFuIGV4YW1wbGUKKyAgICAgICAgYW5kIGlzIG5vdCBmdWxseSBpbXBsZW1lbnRlZC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2Vy
L3F3a3ZpZXcvRGVyaXZlZFNvdXJjZXMucHJpOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9xd2t2aWV3L01pbmlCcm93c2VyX2NiLnBybzogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dz
ZXIvcXdrdmlldy9UYXJnZXQucHJpOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xd2t2
aWV3L1ZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKGNyZWF0ZVdlYkNvbnRleHQpOgorICAgICAg
ICAoY3JlYXRlV2ViUGFnZUdyb3VwKToKKyAgICAgICAgKFZpZXc6On5WaWV3KToKKyAgICAgICAg
KFZpZXc6OlZpZXcpOgorICAgICAgICAoVmlldzo6ZXhwb3NlRXZlbnQpOgorICAgICAgICAoVmll
dzo6cmVzaXplRXZlbnQpOgorICAgICAgICAoVmlldzo6dGltZXJFdmVudCk6CisgICAgICAgIChW
aWV3Ojp2aWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFZpZXc6OnZpZXdSZXF1ZXN0ZWRDdXJz
b3JPdmVycmlkZSk6CisgICAgICAgIChWaWV3Ojpkb25lV2l0aEtleUV2ZW50KToKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F3a3ZpZXcvVmlldy5oOiBBZGRlZC4KKyAg
ICAgICAgKFZpZXcpOgorICAgICAgICAoVmlldzo6dmlld1JlcXVlc3RlZFNjcm9sbCk6CisgICAg
ICAgIChWaWV3Ojp2aWV3UHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoVmlldzo6dmlld1Byb2Nl
c3NSZWxhdW5jaGVkKToKKyAgICAgICAgKFZpZXc6OnZpZXdDb250ZW50U2l6ZUNoYW5nZWQpOgor
ICAgICAgICAoVmlldzo6ZG9uZVdpdGhUb3VjaEV2ZW50KToKKyAgICAgICAgKFZpZXc6OmtleVBy
ZXNzRXZlbnQpOgorICAgICAgICAoVmlldzo6a2V5UmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFZp
ZXc6Om1vdXNlRG91YmxlQ2xpY2tFdmVudCk6CisgICAgICAgIChWaWV3Ojptb3VzZU1vdmVFdmVu
dCk6CisgICAgICAgIChWaWV3Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoVmlldzo6bW91
c2VSZWxlYXNlRXZlbnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
ci5weToKKyAgICAgICAgKiBUb29scy5wcm86CisKIDIwMTItMDYtMTIgIENocmlzdG9waGUgRHVt
ZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbc291cF0gUHJldmVu
dCBzZXR0aW5nIG9yIGVkaXRpbmcgaHR0cE9ubHkgY29va2llcyBmcm9tIEphdmFTY3JpcHQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F3a3ZpZXcvRGVyaXZlZFNvdXJjZXMucHJpIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9EZXJpdmVkU291cmNlcy5wcmkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM0ZDJmNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL3F3a3ZpZXcvRGVyaXZlZFNvdXJjZXMucHJpCkBAIC0wLDAgKzEsNiBAQAor
VEVNUExBVEUgPSBkZXJpdmVkCisKKyMgTWFrZSBzdXJlIGZvcndhcmRlZCBoZWFkZXJzIG5lZWRl
ZCBieSB0aGlzIHByb2plY3QgYXJlIHByZXNlbnQKK2Z3aGVhZGVyX2dlbmVyYXRvci5jb21tYW5k
cyA9IHBlcmwgJCR7Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL2dlbmVy
YXRlLWZvcndhcmRpbmctaGVhZGVycy5wbCAkJHtST09UX1dFQktJVF9ESVJ9L1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIgJCR7Uk9PVF9CVUlMRF9ESVJ9L1NvdXJjZS9pbmNsdWRlIHF0Citmd2hlYWRl
cl9nZW5lcmF0b3IuZGVwZW5kcyAgPSAkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJjZS9XZWJLaXQy
L1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsCitHRU5FUkFUT1JTICs9IGZ3
aGVhZGVyX2dlbmVyYXRvcgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9N
aW5pQnJvd3Nlcl9jYi5wcm8gYi9Ub29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L01pbmlCcm93c2Vy
X2NiLnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTAzMTA0Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9NaW5pQnJvd3Nlcl9jYi5w
cm8KQEAgLTAsMCArMSw5IEBACitURU1QTEFURSA9IHN1YmRpcnMKK0NPTkZJRyArPSBvcmRlcmVk
CisKK2Rlcml2ZWRfc291cmNlcy5maWxlID0gRGVyaXZlZFNvdXJjZXMucHJpCit0YXJnZXQuZmls
ZSA9IFRhcmdldC5wcmkKKworU1VCRElSUyA9IGRlcml2ZWRfc291cmNlcyB0YXJnZXQKKworYWRk
U3RyaWN0U3ViZGlyT3JkZXJCZXR3ZWVuKGRlcml2ZWRfc291cmNlcywgdGFyZ2V0KQpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9UYXJnZXQucHJpIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXdrdmlldy9UYXJnZXQucHJpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjc0NzczODAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xd2t2aWV3
L1RhcmdldC5wcmkKQEAgLTAsMCArMSwxNiBAQAorVEVNUExBVEUgPSBhcHAKK1RBUkdFVCA9IE1p
bmlCcm93c2VyX2NiCisKK0hFQURFUlMgKz0gXAorICAgIFZpZXcuaAorCitTT1VSQ0VTICs9IFwK
KyAgICBWaWV3LmNwcAorCitERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2JpbgorCitRVCA9
IGNvcmUgZ3VpIG5ldHdvcmsgd2Via2l0CisKK2xvYWQoZmVhdHVyZXMpCisKK1dFQktJVCArPSB3
dGYgamF2YXNjcmlwdGNvcmUgd2Via2l0MgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
cXdrdmlldy9WaWV3LmNwcCBiL1Rvb2xzL01pbmlCcm93c2VyL3F3a3ZpZXcvVmlldy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEwY2I2MAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL3F3a3ZpZXcvVmlldy5jcHAKQEAgLTAsMCArMSwxMzcgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJWaWV3LmgiCisKKyNpbmNsdWRlIDxRRGVi
dWc+CisjaW5jbHVkZSA8UUV4cG9zZUV2ZW50PgorI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4K
KyNpbmNsdWRlIDxRS2V5RXZlbnQ+CisjaW5jbHVkZSA8UU1hdHJpeDR4ND4KKyNpbmNsdWRlIDxR
UmVzaXplRXZlbnQ+CisjaW5jbHVkZSA8UVVybD4KKworI2luY2x1ZGUgPFdlYktpdDIvV0tDb250
ZXh0Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tQcmVmZXJlbmNlcy5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nUXQuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLVVJMLmg+CisKKworc3RhdGljIFdLQ29udGV4dFJlZiBjcmVhdGVXZWJDb250ZXh0KCkKK3sK
KyAgICByZXR1cm4gV0tDb250ZXh0Q3JlYXRlKCk7Cit9CisKK3N0YXRpYyBXS1BhZ2VHcm91cFJl
ZiBjcmVhdGVXZWJQYWdlR3JvdXAoY29uc3QgUVN0cmluZyYgbmFtZSkKK3sKKyAgICBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXAgPVdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJp
bmdDcmVhdGVXaXRoUVN0cmluZyhuYW1lKSk7CisgICAgV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJl
bmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwKTsKKyAgICBXS1ByZWZl
cmVuY2VzU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUp
OworICAgIFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShwcmVmZXJlbmNlcywg
dHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJlZmVy
ZW5jZXMsIHRydWUpOworCisgICAgcmV0dXJuIHBhZ2VHcm91cDsKK30KKworVmlldzo6flZpZXco
KQoreworICAgIGRlbGV0ZSBtX2NvbnRleHQ7CisgICAgZGVsZXRlIG1fd2ViVmlldzsKK30KKwor
Vmlldzo6Vmlldyhjb25zdCBRU3RyaW5nJiB1cmwpCisgICAgOiBtX3VybCh1cmwpCisgICAgLCBt
X2FjdGl2ZShmYWxzZSkKK3sKKyAgICBzZXRTdXJmYWNlVHlwZShPcGVuR0xTdXJmYWNlKTsKKyAg
ICBzZXRHZW9tZXRyeSg1MCwgNTAsIDk4MCwgNjAwKTsKKyAgICBjcmVhdGUoKTsKKworICAgIG1f
Y29udGV4dCA9IG5ldyBRT3BlbkdMQ29udGV4dDsKKyAgICBtX2NvbnRleHQtPmNyZWF0ZSgpOwor
CisgICAgbV93ZWJWaWV3ID0gV2ViS2l0OjpRV0tWaWV3OjpjcmVhdGUoY3JlYXRlV2ViQ29udGV4
dCgpLCBjcmVhdGVXZWJQYWdlR3JvdXAoUVN0cmluZygpKSwgdGhpcyk7CisgICAgbV93ZWJWaWV3
LT5pbml0aWFsaXplKCk7CisgICAgV0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQobV93ZWJWaWV3LT5w
YWdlUmVmKCksIHRydWUpOworfQorCisKK3ZvaWQgVmlldzo6ZXhwb3NlRXZlbnQoUUV4cG9zZUV2
ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlKSB7CisgICAgICAgIG1fYWN0aXZlID0g
dHJ1ZTsKKyAgICAgICAgV0tQYWdlTG9hZFVSTChtX3dlYlZpZXctPnBhZ2VSZWYoKSwgV0tVUkxD
cmVhdGVXaXRoVVRGOENTdHJpbmcobV91cmwudG9Bc2NpaSgpLmRhdGEoKSkpOworCisgICAgICAg
IG1fd2ViVmlldy0+c2V0Rm9jdXNlZCh0cnVlKTsKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRWaXNp
YmxlKHRydWUpOworICAgICAgICBtX3dlYlZpZXctPnNldEFjdGl2ZSh0cnVlKTsKKyAgICB9Cit9
CisKK3ZvaWQgVmlldzo6cmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50KiBldmVudCkKK3sKKyAgICBt
X3dlYlZpZXctPnNldFNpemUoZXZlbnQtPnNpemUoKSk7Cit9CisKK3ZvaWQgVmlldzo6dGltZXJF
dmVudChRVGltZXJFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50aW1lcklkKCkgPT0g
bV9wYWludFRpbWVyLnRpbWVySWQoKSkgeworICAgICAgICBtX3BhaW50VGltZXIuc3RvcCgpOwor
ICAgICAgICBtX2NvbnRleHQtPm1ha2VDdXJyZW50KHRoaXMpOworICAgICAgICBtX3dlYlZpZXct
PnBhaW50KFFNYXRyaXg0eDQoKSwgMSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZl
cnModGhpcyk7CisgICAgfQorfQorCit2b2lkIFZpZXc6OnZpZXdOZWVkc0Rpc3BsYXkoY29uc3Qg
UVJlY3QmKQoreworICAgIGlmICghbV9wYWludFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1f
cGFpbnRUaW1lci5zdGFydCgwLCB0aGlzKTsKK30KKwordm9pZCBWaWV3Ojp2aWV3UmVxdWVzdGVk
Q3Vyc29yT3ZlcnJpZGUoY29uc3QgUUN1cnNvciYgY3Vyc29yKQoreworICAgIFFHdWlBcHBsaWNh
dGlvbjo6c2V0T3ZlcnJpZGVDdXJzb3IoY3Vyc29yKTsKK30KKwordm9pZCBWaWV3Ojpkb25lV2l0
aEtleUV2ZW50KGNvbnN0IFFLZXlFdmVudCogZXZlbnQsIGJvb2wgd2FzSGFuZGxlZCkKK3sKKyAg
ICBpZiAod2FzSGFuZGxlZCB8fCBldmVudC0+aXNBY2NlcHRlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBzd2l0Y2ggKGV2ZW50LT5rZXkoKSkgeworICAgIGNhc2UgUXQ6OktleV9CYWNrc3Bh
Y2U6IHsKKyAgICAgICAgV0tQYWdlUmVmIHBhZ2UgPSBtX3dlYlZpZXctPnBhZ2VSZWYoKTsKKyAg
ICAgICAgaWYgKFdLUGFnZUNhbkdvQmFjayhwYWdlKSkKKyAgICAgICAgICAgIFdLUGFnZUdvQmFj
ayhwYWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KK30KKworaW50IG1haW4oaW50
IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIFFHdWlBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJn
dik7CisKKyAgICBWaWV3IHZpZXcoYXBwLmFyZ3VtZW50cygpLnNpemUoKSA+IDEgPyBhcHAuYXJn
dW1lbnRzKCkuYXQoMSkgOiBRU3RyaW5nOjpmcm9tQXNjaWkoImh0dHA6Ly93d3cuZ29vZ2xlLmNv
bSIpKTsKKyAgICB2aWV3LnNob3coKTsKKyAgICByZXR1cm4gYXBwLmV4ZWMoKTsKK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F3a3ZpZXcvVmlldy5oIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXdrdmlldy9WaWV3LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Rk
YTAzMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F3a3ZpZXcvVmlldy5o
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgVmlld19oCisj
ZGVmaW5lIFZpZXdfaAorCisjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisjaW5jbHVkZSA8UU9wZW5H
TENvbnRleHQ+CisjaW5jbHVkZSA8UVdpbmRvdz4KKyNpbmNsdWRlIDxXZWJLaXQyL1FXS1ZpZXdf
cC5oPgorCisKK2NsYXNzIFZpZXcgOiAgcHVibGljIFFXaW5kb3csIHByaXZhdGUgV2ViS2l0OjpR
V0tWaWV3Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBWaWV3KGNvbnN0IFFTdHJpbmcmIHVybCk7Cisg
ICAgflZpZXcoKTsKKworcHVibGljOiAvLyBXS1ZpZXdDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQg
dmlld05lZWRzRGlzcGxheShjb25zdCBRUmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVx
dWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJv
Y2Vzc0NyYXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NSZWxhdW5jaGVk
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNp
emUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNv
bnN0IFFDdXJzb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBR
S2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpOworICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRv
dWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBib29sIHdhc0hhbmRsZWQpIHsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGV4cG9zZUV2ZW50KFFFeHBvc2VFdmVudCopOworICAg
IHZpcnR1YWwgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQqKTsKKworICAgIHZpcnR1YWwg
dm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5rZXlFdmVu
dChldmVudCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQga2V5UmVsZWFzZUV2ZW50KFFLZXlFdmVudCog
ZXZlbnQpIHsgbV93ZWJWaWV3LT5rZXlFdmVudChldmVudCk7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBtb3VzZURvdWJsZUNsaWNrRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+
bW91c2VFdmVudChldmVudCwgMik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VNb3ZlRXZlbnQo
UU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+bW91c2VFdmVudChldmVudCk7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgbW91c2VQcmVzc0V2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkgeyBtX3dl
YlZpZXctPm1vdXNlRXZlbnQoZXZlbnQsIDEpOyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlUmVs
ZWFzZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkgeyBtX3dlYlZpZXctPm1vdXNlRXZlbnQoZXZl
bnQpOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0OjpRV0tWaWV3KiBtX3dlYlZpZXc7CisgICAg
UU9wZW5HTENvbnRleHQgKm1fY29udGV4dDsKKyAgICBRQmFzaWNUaW1lciBtX3BhaW50VGltZXI7
CisKKyAgICBRU3RyaW5nIG1fdXJsOworICAgIGJvb2wgbV9hY3RpdmU7CisKKyAgICB2aXJ0dWFs
IHZvaWQgdGltZXJFdmVudChRVGltZXJFdmVudCopOworfTsKKworI2VuZGlmIC8vIFZpZXdfaApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IGNkOGY1NjUuLmZmMzc2
YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTE0Niw3ICsx
NDYsOCBAQCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgPSBbCiAgICAgICAiU291cmNlL1dlYktpdC9x
dC9leGFtcGxlcy8iXSwKICAgICAgWyItcmVhZGFiaWxpdHkvbmFtaW5nIl0pLAogICAgICAoWyMg
UXQncyBNaW5pQnJvd3NlciBoYXMgbm8gY29uZmlnLmgKLSAgICAgICAiVG9vbHMvTWluaUJyb3dz
ZXIvcXQiXSwKKyAgICAgICAiVG9vbHMvTWluaUJyb3dzZXIvcXQiLAorICAgICAgICJUb29scy9N
aW5pQnJvd3Nlci9xd2t2aWV3Il0sCiAgICAgICBbIi1idWlsZC9pbmNsdWRlIl0pLAogCiAgICAg
KFsjIFRoZSBRdCBBUElzIHVzZSBRdC9RTUwgbmFtaW5nIHN0eWxlLCB3aGljaCBpbmNsdWRlcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVG9vbHMucHJvIGIvVG9vbHMvVG9vbHMucHJvCmluZGV4IDZjOTk3
YzIuLmNmNmJlYzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rvb2xzLnBybworKysgYi9Ub29scy9Ub29s
cy5wcm8KQEAgLTE1LDcgKzE1LDggQEAgU1VCRElSUyArPSBEdW1wUmVuZGVyVHJlZS9xdC9JbWFn
ZURpZmYucHJvCiAKICFub193ZWJraXQyIHsKICAgICBTVUJESVJTICs9IE1pbmlCcm93c2VyL3F0
L01pbmlCcm93c2VyLnBybyBcCi0gICAgICAgICAgICAgICBXZWJLaXRUZXN0UnVubmVyL1dlYktp
dFRlc3RSdW5uZXIucHJvCisgICAgICAgICAgICAgICBXZWJLaXRUZXN0UnVubmVyL1dlYktpdFRl
c3RSdW5uZXIucHJvIFwKKyAgICAgICAgICAgICAgIE1pbmlCcm93c2VyL3F3a3ZpZXcvTWluaUJy
b3dzZXJfY2IucHJvCiB9CiAKICMgRklYTUU6IHdpdGggUXQgNSB0aGUgdGVzdCBwbHVnaW4gY2F1
c2Ugc29tZSB0cm91YmxlIGR1cmluZyBsYXlvdXQgdGVzdHMuCi0tIAoxLjcuOS41Cgo=
</data>
<flag name="review"
          id="154670"
          type_id="1"
          status="-"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149650</attachid>
            <date>2012-06-26 17:59:14 -0700</date>
            <delta_ts>2012-06-29 17:35:39 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-WK2-Private-non-QtQuick-API.patch</filename>
            <type>text/plain</type>
            <size>57892</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA1NGJjNjMxMzJkYzMxMzRmYzhiYzAzYTQ4NTkzZGY0NjgzNjEwZjY4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogTW9uLCAxOCBKdW4gMjAxMiAxNTowNjowMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd
IFtRdF1bV0syXSBQcml2YXRlIG5vbi1RdFF1aWNrIEFQSQogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0NTMyCgouOgoKQVBJIHRlc3RzIGZvciBRV0tWaWV3LgoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIFNvdXJjZS90ZXN0cy5wcmk6CgpTb3VyY2UvV2Vi
S2l0MjoKCkFkZGluZyBuZXcgcHJpdmF0ZSBub24tUXRRdWljayBBUEkuIFRoaXMgbmV3IEMrKyBB
UEkgbWFrZXMgaXQgcG9zc2libGUKdG8gaGF2ZSBjb250cm9sIG92ZXIgdGhlIGxvd2VyIGxldmVs
cyBvZiBXZWJLaXQgd2l0aG91dCBnb2luZyB2aWEgUU1MLgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCgoqIFRhcmdldC5wcmk6CiogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3Bw
OgooV0tQcmVmZXJlbmNlc1NldEZvcmNlQ29tcG9zaXRpbmdNb2RlKToKKFdLUHJlZmVyZW5jZXNH
ZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSk6CiogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQ
cml2YXRlLmg6CiogVUlQcm9jZXNzL0FQSS9jcHAvcXQvcXdrdmlldy5jcHA6IEFkZGVkLgooV2Vi
S2l0KToKKFdlYktpdDo6UVdLVmlldzo6Y3JlYXRlKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OlFX
S1ZpZXdJbXBsKToKKFdlYktpdDo6UVdLVmlld0ltcGw6On5RV0tWaWV3SW1wbCk6CihXZWJLaXQ6
OlFXS1ZpZXdJbXBsOjpzZXRDdXJzb3IpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6Y3JlYXRlRHJh
d2luZ0FyZWFQcm94eSk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzZXRGb2N1c2VkKToKKFdlYktp
dDo6UVdLVmlld0ltcGw6OnNldFZpc2libGUpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2V0QWN0
aXZlKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OnNldFNpemUpOgooV2ViS2l0OjpRV0tWaWV3SW1w
bDo6cGFpbnQpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6a2V5RXZlbnQpOgooV2ViS2l0OjpRV0tW
aWV3SW1wbDo6bW91c2VFdmVudCk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjp3aGVlbEV2ZW50KToK
KFdlYktpdDo6UVdLVmlld0ltcGw6OnRvdWNoRXZlbnQpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6
ZG9uZVdpdGhLZXlFdmVudCk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpkb25lV2l0aFRvdWNoRXZl
bnQpOgoqIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L3F3a3ZpZXdfcC5oOiBBZGRlZC4KKFdlYktpdCk6
CihRV0tWaWV3Q2xpZW50KToKKFdlYktpdDo6UVdLVmlld0NsaWVudDo6flFXS1ZpZXdDbGllbnQp
OgoqIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L3F3a3ZpZXdfcF9wLmg6IEFkZGVkLgooV2ViS2l0KToK
KFFXS1ZpZXdJbXBsKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OnBhZ2VDbG9zZWQpOgooV2ViS2l0
OjpRV0tWaWV3SW1wbDo6c2V0RmluZEluZGljYXRvcik6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpk
aWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmRpZEZpbmlz
aExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVzZW50YXRpb24pOgooV2ViS2l0OjpRV0tWaWV3SW1w
bDo6Y3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKToKKFdlYktpdDo6UVdLVmlld0ltcGw6
OnNldEN1c3RvbVJlcHJlc2VudGF0aW9uWm9vbUZhY3Rvcik6CihXZWJLaXQ6OlFXS1ZpZXdJbXBs
OjpkaWRDaGFuZ2VTY3JvbGxiYXJzRm9yTWFpbkZyYW1lKToKKFdlYktpdDo6UVdLVmlld0ltcGw6
OmZpbmRTdHJpbmdJbkN1c3RvbVJlcHJlc2VudGF0aW9uKToKKFdlYktpdDo6UVdLVmlld0ltcGw6
OmNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24pOgooV2ViS2l0OjpRV0tW
aWV3SW1wbDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QpOgooV2ViS2l0
OjpRV0tWaWV3SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKFdlYktpdDo6UVdL
Vmlld0ltcGw6OmhhbmRsZURvd25sb2FkUmVxdWVzdCk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpo
YW5kbGVBdXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdCk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBs
OjpoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QpOgooV2ViS2l0OjpRV0tWaWV3
SW1wbDo6aGFuZGxlUHJveHlBdXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdCk6CihXZWJLaXQ6
OlFXS1ZpZXdJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKToKKFdlYktpdDo6UVdLVmlld0ltcGw6
OmNsZWFyQWxsRWRpdENvbW1hbmRzKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmNhblVuZG9SZWRv
KToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmV4ZWN1dGVVbmRvUmVkbyk6CihXZWJLaXQ6OlFXS1Zp
ZXdJbXBsOjpjb252ZXJ0VG9EZXZpY2VTcGFjZSk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpjb252
ZXJ0VG9Vc2VyU3BhY2UpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2NyZWVuVG9XaW5kb3cpOgoo
V2ViS2l0OjpRV0tWaWV3SW1wbDo6d2luZG93VG9TY3JlZW4pOgooV2ViS2l0OjpRV0tWaWV3SW1w
bDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBs
OjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6
dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6
dXBkYXRlVGV4dElucHV0U3RhdGUpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZG9uZVdpdGhHZXN0
dXJlRXZlbnQpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZGlzcGxheVZpZXcpOgooV2ViS2l0OjpR
V0tWaWV3SW1wbDo6c2Nyb2xsVmlldyk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpmbGFzaEJhY2tp
bmdTdG9yZVVwZGF0ZXMpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZGlkRmluZFpvb21hYmxlQXJl
YSk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMp
OgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6dG9vbFRpcENoYW5nZWQpOgooV2ViS2l0OjpRV0tWaWV3
SW1wbDo6c3RhcnREcmFnKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmNyZWF0ZVBvcHVwTWVudVBy
b3h5KToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmNyZWF0ZUNvbnRleHRNZW51UHJveHkpOgooV2Vi
S2l0OjpRV0tWaWV3SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwpOgooV2ViS2l0OjpRV0tWaWV3
SW1wbDo6cHJvY2Vzc0RpZENyYXNoKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmRpZFJlbGF1bmNo
UHJvY2Vzcyk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KToKKFdl
YktpdDo6UVdLVmlld0ltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CihXZWJLaXQ6OlFXS1Zp
ZXdJbXBsOjppc1ZpZXdGb2N1c2VkKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmlzVmlld1Zpc2li
bGUpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKToKKFdlYktpdDo6
UVdLVmlld0ltcGw6OmlzVmlld0luV2luZG93KToKKFdlYktpdDo6UVdLVmlld0ltcGw6OnZpZXdT
aXplKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmluaXRpYWxpemUpOgooV2ViS2l0OjpRV0tWaWV3
SW1wbDo6aXNGb2N1c2VkKToKKFdlYktpdDo6UVdLVmlld0ltcGw6OmlzVmlzaWJsZSk6CihXZWJL
aXQ6OlFXS1ZpZXdJbXBsOjppc0FjdGl2ZSk6CihXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzaXplKToK
KFdlYktpdDo6UVdLVmlld0ltcGw6OnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCk6CihXZWJLaXQ6
OlFXS1ZpZXdJbXBsOjp0cmFuc3BhcmVudEJhY2tncm91bmQpOgooV2ViS2l0OjpRV0tWaWV3SW1w
bDo6c2V0RHJhd0JhY2tncm91bmQpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZHJhd0JhY2tncm91
bmQpOgooV2ViS2l0OjpRV0tWaWV3SW1wbDo6cGFnZVJlZik6CiogVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbDogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9odG1sL3JlZHNxdWFyZS5odG1sOiBBZGRlZC4KKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0
bWwvcmVzb3VyY2VzL3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMS5wbmc6IEFkZGVkLgoqIFVJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQzLnBuZzog
QWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X3Bh
aW50LnBuZzogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xd2t2aWV3L3F3a3ZpZXcu
cHJvOiBBZGRlZC4KKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F3a3ZpZXcvdHN0X3F3a3ZpZXcu
Y3BwOiBBZGRlZC4KKHdlYkNvbnRleHQpOgooY3JlYXRlV2ViUGFnZUdyb3VwKToKKHdlYlBhZ2VH
cm91cCk6CihXZWJWaWV3KToKKFdlYlZpZXc6OldlYlZpZXcpOgooV2ViVmlldzo6fldlYlZpZXcp
OgooV2ViVmlldzo6bG9hZCk6CihXZWJWaWV3OjpzZXREcmF3QmFja2dyb3VuZCk6CihXZWJWaWV3
OjpzZXRUcmFuc3BhcmVudEJhY2tncm91bmQpOgooV2ViVmlldzo6dmlld05lZWRzRGlzcGxheSk6
CihXZWJWaWV3Ojp2aWV3UmVxdWVzdGVkU2Nyb2xsKToKKFdlYlZpZXc6OnZpZXdQcm9jZXNzQ3Jh
c2hlZCk6CihXZWJWaWV3Ojp2aWV3UHJvY2Vzc1JlbGF1bmNoZWQpOgooV2ViVmlldzo6dmlld0Nv
bnRlbnRTaXplQ2hhbmdlZCk6CihXZWJWaWV3Ojp2aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUp
OgooV2ViVmlldzo6ZG9uZVdpdGhLZXlFdmVudCk6CihXZWJWaWV3Ojpkb25lV2l0aFRvdWNoRXZl
bnQpOgooV2ViVmlldzo6ZmluaXNoTG9hZEZvckZyYW1lKToKKGNvbXBhcmVJbWFnZXMpOgoodHN0
X3F3a3ZpZXcpOgoodHN0X3F3a3ZpZXc6OnRzdF9xd2t2aWV3KToKKHRzdF9xd2t2aWV3OjpwYWlu
dCk6Cih0c3RfcXdrdmlldzo6bm9CYWNrZ3JvdW5kMSk6Cih0c3RfcXdrdmlldzo6bm9CYWNrZ3Jv
dW5kMik6Cih0c3RfcXdrdmlldzo6bm9CYWNrZ3JvdW5kMyk6Cih0c3RfcXdrdmlldzo6ZG9QYWlu
dCk6Cih0c3RfcXdrdmlldzo6ZG9Ob0JhY2tncm91bmQxKToKKHRzdF9xd2t2aWV3Ojpkb05vQmFj
a2dyb3VuZDIpOgoodHN0X3F3a3ZpZXc6OmRvTm9CYWNrZ3JvdW5kMyk6Cih0c3RfcXdrdmlldzo6
cnVuKToKClRvb2xzOgoKTWluaUJyb3dzZXJfY2IgaXMgYW4gdXNhZ2UgZXhhbXBsZSBmb3IgdGhl
IFFXS1ZpZXcgQVBJLiBJdCBpcyBvbmx5IGFuIGV4YW1wbGUKYW5kIGlzIG5vdCBmdWxseSBpbXBs
ZW1lbnRlZC4KClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBNaW5pQnJvd3Nlci9xd2t2
aWV3L0Rlcml2ZWRTb3VyY2VzLnByaTogQWRkZWQuCiogTWluaUJyb3dzZXIvcXdrdmlldy9NaW5p
QnJvd3Nlcl9jYi5wcm86IEFkZGVkLgoqIE1pbmlCcm93c2VyL3F3a3ZpZXcvVGFyZ2V0LnByaTog
QWRkZWQuCiogTWluaUJyb3dzZXIvcXdrdmlldy9WaWV3LmNwcDogQWRkZWQuCihjcmVhdGVXZWJD
b250ZXh0KToKKGNyZWF0ZVdlYlBhZ2VHcm91cCk6CihWaWV3Ojp+Vmlldyk6CihWaWV3OjpWaWV3
KToKKFZpZXc6OmV4cG9zZUV2ZW50KToKKFZpZXc6OnJlc2l6ZUV2ZW50KToKKFZpZXc6OnRpbWVy
RXZlbnQpOgooVmlldzo6dmlld05lZWRzRGlzcGxheSk6CihWaWV3Ojp2aWV3UmVxdWVzdGVkQ3Vy
c29yT3ZlcnJpZGUpOgooVmlldzo6ZG9uZVdpdGhLZXlFdmVudCk6CihtYWluKToKKiBNaW5pQnJv
d3Nlci9xd2t2aWV3L1ZpZXcuaDogQWRkZWQuCihWaWV3KToKKFZpZXc6OnZpZXdSZXF1ZXN0ZWRT
Y3JvbGwpOgooVmlldzo6dmlld1Byb2Nlc3NDcmFzaGVkKToKKFZpZXc6OnZpZXdQcm9jZXNzUmVs
YXVuY2hlZCk6CihWaWV3Ojp2aWV3Q29udGVudFNpemVDaGFuZ2VkKToKKFZpZXc6OmRvbmVXaXRo
VG91Y2hFdmVudCk6CihWaWV3OjprZXlQcmVzc0V2ZW50KToKKFZpZXc6OmtleVJlbGVhc2VFdmVu
dCk6CihWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgooVmlldzo6bW91c2VNb3ZlRXZlbnQp
OgooVmlldzo6bW91c2VQcmVzc0V2ZW50KToKKFZpZXc6Om1vdXNlUmVsZWFzZUV2ZW50KToKKiBT
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CiogVG9vbHMucHJvOgotLS0KIENoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMSArCiBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMzUg
KysrKysrKysrKysrCiBTb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICAgIDMgKwogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXMuY3BwICAgfCAgIDEwICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzUHJpdmF0ZS5oIHwgICAgNCArCiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Nw
cC9xdC9xd2t2aWV3LmNwcCAgICB8ICAxNTUgKysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9jcHAvcXQvcXdrdmlld19wLmggICAgfCAgMTAxICsrKysrKysrKwogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvcXdrdmlld19wX3AuaCAgfCAgMTY4ICsr
KysrKysrKysrKysrCiAuLi4vVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUu
aHRtbCAgICB8ICAgIDUgKwogLi4uL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZWRzcXVh
cmUuaHRtbCAgICAgfCAgICA1ICsKIC4uLi90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X25v
QmFja2dyb3VuZDEucG5nIHwgIEJpbiAwIC0+IDY5NiBieXRlcwogLi4uL3Rlc3RzL2h0bWwvcmVz
b3VyY2VzL3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMy5wbmcgfCAgQmluIDAgLT4gNzAxIGJ5dGVzCiAu
Li4vQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F3a3ZpZXdfcGFpbnQucG5nICB8ICBCaW4g
MCAtPiA2NjcgYnl0ZXMKIC4uLi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F3a3ZpZXcvcXdrdmll
dy5wcm8gICAgIHwgICAgMyArCiAuLi4vVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xd2t2aWV3L3Rz
dF9xd2t2aWV3LmNwcCB8ICAyMzAgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS90ZXN0cy5w
cmkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQogVG9vbHMvQ2hh
bmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQxICsrKysKIFRv
b2xzL01pbmlCcm93c2VyL3F3a3ZpZXcvRGVyaXZlZFNvdXJjZXMucHJpICAgICAgIHwgICAgNiAr
CiBUb29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L01pbmlCcm93c2VyX2NiLnBybyAgICAgICB8ICAg
IDkgKwogVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9UYXJnZXQucHJpICAgICAgICAgICAgICAg
fCAgIDE2ICsrCiBUb29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L1ZpZXcuY3BwICAgICAgICAgICAg
ICAgICB8ICAxMzcgKysrKysrKysrKysrCiBUb29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L1ZpZXcu
aCAgICAgICAgICAgICAgICAgICB8ICAgNjcgKysrKysrCiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXIucHkgICAgICAgICAgICB8ICAgIDMgKy0KIFRvb2xzL1Rvb2xzLnBybyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQogMjQgZmlsZXMgY2hh
bmdlZCwgMTExMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L3F3a3ZpZXcuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvcXdrdmll
d19wLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Nw
cC9xdC9xd2t2aWV3X3BfcC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZWRzcXVhcmUu
aHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQxLnBuZwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNv
dXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQzLnBuZwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19w
YWludC5wbmcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3F3a3ZpZXcvcXdrdmlldy5wcm8KIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F3a3ZpZXcvdHN0X3F3a3ZpZXcuY3BwCiBj
cmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9EZXJpdmVkU291cmNl
cy5wcmkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L01pbmlC
cm93c2VyX2NiLnBybwogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F3a3Zp
ZXcvVGFyZ2V0LnByaQogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F3a3Zp
ZXcvVmlldy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xd2t2aWV3
L1ZpZXcuaAoKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3MmE3NDg2
Li5lYTlhZjc1IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDYtMTggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG5va2lh
LmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gUHJpdmF0ZSBub24tUXRRdWljayBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTMyCisKKyAgICAg
ICAgQVBJIHRlc3RzIGZvciBRV0tWaWV3LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU291cmNlL3Rlc3RzLnByaToKKwogMjAxMi0wNi0yNSAgU2lt
b24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBN
YWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIFdlYktpdCB3aXRob3V0IFF0V2lkZ2V0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IDA2N2I5ODguLmQ3MTU2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMzggQEAKKzIw
MTItMDYtMTggIEx1aXogQWdvc3RpbmkgIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gUHJpdmF0ZSBub24tUXRRdWljayBBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0NTMyCisKKyAgICAgICAgQWRkaW5nIG5l
dyBwcml2YXRlIG5vbi1RdFF1aWNrIEFQSS4gVGhpcyBuZXcgQysrIEFQSSBtYWtlcyBpdCBwb3Nz
aWJsZQorICAgICAgICB0byBoYXZlIGNvbnRyb2wgb3ZlciB0aGUgbG93ZXIgbGV2ZWxzIG9mIFdl
YktpdCB3aXRob3V0IGdvaW5nIHZpYSBRTUwuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNTZXRGb3JjZUNv
bXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0Rm9yY2VDb21wb3NpdGlu
Z01vZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L3F3a3ZpZXcuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXc6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpRV0tWaWV3SW1wbCk6CisgICAgICAgIChXZWJLaXQ6
OlFXS1ZpZXdJbXBsOjp+UVdLVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1w
bDo6c2V0Q3Vyc29yKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmNyZWF0ZURyYXdp
bmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2V0Rm9jdXNlZCk6
CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzZXRWaXNpYmxlKToKKyAgICAgICAgKFdl
YktpdDo6UVdLVmlld0ltcGw6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJ
bXBsOjpzZXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnBhaW50KToKKyAg
ICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
UVdLVmlld0ltcGw6Om1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6
d2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjp0b3VjaEV2ZW50KToK
KyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmRvbmVXaXRoS2V5RXZlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZG9uZVdpdGhUb3VjaEV2ZW50KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2NwcC9xdC9xd2t2aWV3X3AuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoUVdLVmlld0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdDbGll
bnQ6On5RV0tWaWV3Q2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9xd2t2
aWV3X3BfcC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChRV0tWaWV3SW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpwYWdlQ2xvc2VkKToKKyAgICAgICAg
KFdlYktpdDo6UVdLVmlld0ltcGw6OnNldEZpbmRJbmRpY2F0b3IpOgorICAgICAgICAoV2ViS2l0
OjpRV0tWaWV3SW1wbDo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OlFXS1ZpZXdJbXBsOjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbVJlcHJlc2VudGF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmN1c3RvbVJlcHJlc2VudGF0aW9u
Wm9vbUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzZXRDdXN0b21SZXBy
ZXNlbnRhdGlvblpvb21GYWN0b3IpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZGlk
Q2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJ
bXBsOjpmaW5kU3RyaW5nSW5DdXN0b21SZXByZXNlbnRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlFXS1ZpZXdJbXBsOjpjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmln
YXRvclF0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmRpZENoYW5nZVZp
ZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpoYW5kbGVE
b3dubG9hZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6aGFuZGxlQXV0
aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1w
bDo6aGFuZGxlQ2VydGlmaWNhdGVWZXJpZmljYXRpb25SZXF1ZXN0KToKKyAgICAgICAgKFdlYktp
dDo6UVdLVmlld0ltcGw6OmhhbmRsZVByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3Qp
OgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpjbGVhckFsbEVkaXRDb21tYW5kcyk6CisgICAg
ICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpjYW5VbmRvUmVkbyk6CisgICAgICAgIChXZWJLaXQ6
OlFXS1ZpZXdJbXBsOjpleGVjdXRlVW5kb1JlZG8pOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3
SW1wbDo6Y29udmVydFRvRGV2aWNlU3BhY2UpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1w
bDo6Y29udmVydFRvVXNlclNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnNj
cmVlblRvV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OndpbmRvd1RvU2Ny
ZWVuKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6ZXhpdEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnVwZGF0
ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0lt
cGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6
OmRvbmVXaXRoR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmRp
c3BsYXlWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnNjcm9sbFZpZXcpOgor
ICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6Zmxhc2hCYWNraW5nU3RvcmVVcGRhdGVzKToK
KyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmRpZEZpbmRab29tYWJsZUFyZWEpOgorICAg
ICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVz
KToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnRvb2xUaXBDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJLaXQ6OlFX
S1ZpZXdJbXBsOjpjcmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1Zp
ZXdJbXBsOjpjcmVhdGVDb250ZXh0TWVudVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UVdLVmll
d0ltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0lt
cGw6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpkaWRS
ZWxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2V0Vmlld05l
ZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpkaWRDaGFuZ2VDb250
ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6aXNWaWV3Rm9jdXNlZCk6
CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjppc1ZpZXdWaXNpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6UVdLVmlld0ltcGw6OmlzVmlld1dpbmRvd0FjdGl2ZSk6CisgICAgICAgIChXZWJL
aXQ6OlFXS1ZpZXdJbXBsOjppc1ZpZXdJbldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OlFXS1Zp
ZXdJbXBsOjp2aWV3U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmlzRm9jdXNlZCk6CisgICAgICAg
IChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjppc1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpRV0tW
aWV3SW1wbDo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6c2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlFXS1ZpZXdJbXBsOjpzZXRUcmFuc3BhcmVudEJhY2tncm91bmQp
OgorICAgICAgICAoV2ViS2l0OjpRV0tWaWV3SW1wbDo6dHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToK
KyAgICAgICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OnNldERyYXdCYWNrZ3JvdW5kKToKKyAgICAg
ICAgKFdlYktpdDo6UVdLVmlld0ltcGw6OmRyYXdCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYktp
dDo6UVdLVmlld0ltcGw6OnBhZ2VSZWYpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvaHRtbC9ibHVlc3F1YXJlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X25vQmFja2dyb3VuZDEucG5nOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F3
a3ZpZXdfbm9CYWNrZ3JvdW5kMy5wbmc6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19wYWludC5wbmc6IEFkZGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXdrdmlldy9xd2t2aWV3LnBybzogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xd2t2aWV3L3RzdF9xd2t2aWV3LmNwcDog
QWRkZWQuCisgICAgICAgICh3ZWJDb250ZXh0KToKKyAgICAgICAgKGNyZWF0ZVdlYlBhZ2VHcm91
cCk6CisgICAgICAgICh3ZWJQYWdlR3JvdXApOgorICAgICAgICAoV2ViVmlldyk6CisgICAgICAg
IChXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYlZpZXc6On5XZWJWaWV3KToKKyAgICAg
ICAgKFdlYlZpZXc6OmxvYWQpOgorICAgICAgICAoV2ViVmlldzo6c2V0RHJhd0JhY2tncm91bmQp
OgorICAgICAgICAoV2ViVmlldzo6c2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKToKKyAgICAgICAg
KFdlYlZpZXc6OnZpZXdOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViVmlldzo6dmlld1JlcXVl
c3RlZFNjcm9sbCk6CisgICAgICAgIChXZWJWaWV3Ojp2aWV3UHJvY2Vzc0NyYXNoZWQpOgorICAg
ICAgICAoV2ViVmlldzo6dmlld1Byb2Nlc3NSZWxhdW5jaGVkKToKKyAgICAgICAgKFdlYlZpZXc6
OnZpZXdDb250ZW50U2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViVmlldzo6dmlld1JlcXVlc3Rl
ZEN1cnNvck92ZXJyaWRlKToKKyAgICAgICAgKFdlYlZpZXc6OmRvbmVXaXRoS2V5RXZlbnQpOgor
ICAgICAgICAoV2ViVmlldzo6ZG9uZVdpdGhUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYlZpZXc6
OmZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAgICAgIChjb21wYXJlSW1hZ2VzKToKKyAgICAgICAg
KHRzdF9xd2t2aWV3KToKKyAgICAgICAgKHRzdF9xd2t2aWV3Ojp0c3RfcXdrdmlldyk6CisgICAg
ICAgICh0c3RfcXdrdmlldzo6cGFpbnQpOgorICAgICAgICAodHN0X3F3a3ZpZXc6Om5vQmFja2dy
b3VuZDEpOgorICAgICAgICAodHN0X3F3a3ZpZXc6Om5vQmFja2dyb3VuZDIpOgorICAgICAgICAo
dHN0X3F3a3ZpZXc6Om5vQmFja2dyb3VuZDMpOgorICAgICAgICAodHN0X3F3a3ZpZXc6OmRvUGFp
bnQpOgorICAgICAgICAodHN0X3F3a3ZpZXc6OmRvTm9CYWNrZ3JvdW5kMSk6CisgICAgICAgICh0
c3RfcXdrdmlldzo6ZG9Ob0JhY2tncm91bmQyKToKKyAgICAgICAgKHRzdF9xd2t2aWV3Ojpkb05v
QmFja2dyb3VuZDMpOgorICAgICAgICAodHN0X3F3a3ZpZXc6OnJ1bik6CisKIDIwMTItMDYtMjYg
IENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAg
ICBbV0syXVtHVEtdIFVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaW4gVGV4dENoZWNrZXJHdGsuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaQppbmRleCAzNzk5ZDg1Li42ZDk4NmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTE4MCw2
ICsxODAsOCBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV2ViS2l0Mi5oIFwK
ICAgICBVSVByb2Nlc3MvQVBJL0MvcXQvV0tOYXRpdmVFdmVudC5oIFwKICAgICBVSVByb2Nlc3Mv
QVBJL2NwcC9XS1JldGFpblB0ci5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL2NwcC9xdC9xd2t2aWV3
X3AuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9jcHAvcXQvcXdrdmlld19wX3AuaCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9x
dC9XS1VSTFF0LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYnByZWZlcmVuY2VzX3AuaCBc
CkBAIC01MzMsNiArNTM1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dL
UHJlZmVyZW5jZXMuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tQcm90ZWN0aW9uU3BhY2Uu
Y3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tSZXNvdXJjZUNhY2hlTWFuYWdlci5jcHAgXAor
ICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L3F3a3ZpZXcuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJ
L2NwcC9xdC9XS1N0cmluZ1F0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxR
dC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmRvd25sb2FkaXRlbS5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4
IDlmZThkNmEuLjZkMDNmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTM4OCw2ICszODgsMTYgQEAgYm9vbCBXS1ByZWZlcmVu
Y2VzR2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1IKICAgICByZXR1cm4gdG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+YWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQoKTsKIH0KIAordm9pZCBXS1ByZWZlcmVuY2VzU2V0Rm9yY2VDb21w
b3NpdGluZ01vZGUoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBmbGFnKQor
eworICAgIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldEZvcmNlQ29tcG9zaXRpbmdNb2RlKGZs
YWcpOworfQorCitib29sIFdLUHJlZmVyZW5jZXNHZXRGb3JjZUNvbXBvc2l0aW5nTW9kZShXS1By
ZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQoreworICAgIHJldHVybiB0b0ltcGwocHJlZmVy
ZW5jZXNSZWYpLT5mb3JjZUNvbXBvc2l0aW5nTW9kZSgpOworfQorCiB2b2lkIFdLUHJlZmVyZW5j
ZXNTZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5j
ZXNSZWYsIGJvb2wgZmxhZykKIHsKICAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRDb21w
b3NpdGluZ0JvcmRlcnNWaXNpYmxlKGZsYWcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaAppbmRleCA2ZGJjNDczLi4yMzgy
YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaApAQCAtNzYsNiArNzYsMTAgQEAgV0tfRVhQT1JUIHZvaWQgV0tQcmVm
ZXJlbmNlc1NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYs
IGIKIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5n
RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmKTsKIAogLy8gRGVmYXVsdHMgdG8gZmFsc2UuCitXS19F
WFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0Rm9yY2VDb21wb3NpdGluZ01vZGUoV0tQcmVmZXJl
bmNlc1JlZiwgYm9vbCk7CitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0Rm9yY2VDb21w
b3NpdGluZ01vZGUoV0tQcmVmZXJlbmNlc1JlZik7CisKKy8vIERlZmF1bHRzIHRvIGZhbHNlLgog
V0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUo
V0tQcmVmZXJlbmNlc1JlZiwgYm9vbCk7CiBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0
Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShXS1ByZWZlcmVuY2VzUmVmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvcXdrdmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9xd2t2aWV3LmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjhmMTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvcXdrdmlldy5jcHAKQEAgLTAsMCArMSwxNTUg
QEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJx
d2t2aWV3X3BfcC5oIgorCisjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFQcm94eUltcGwuaCIKKyNpbmNsdWRlICJMYXllclRyZWVDb29yZGluYXRvclByb3h5LmgiCisj
aW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYk1v
dXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJUb3VjaEV2ZW50LmgiCisjaW5jbHVkZSAi
TmF0aXZlV2ViV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRl
ICJXZWJMYXllclRyZWVSZW5kZXJlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisKKyNpbmNsdWRlIDxRVHJhbnNmb3JtPgorI2luY2x1
ZGUgPFdlYktpdDIvcXdrdmlld19wLmg+CisKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1FXS1Zp
ZXcqIFFXS1ZpZXc6OmNyZWF0ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBS
ZWYgcGFnZUdyb3VwUmVmLCBRV0tWaWV3Q2xpZW50KiBjbGllbnQpCit7CisgICAgaWYgKCFjb250
ZXh0UmVmIHx8ICFwYWdlR3JvdXBSZWYpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBu
ZXcgUVdLVmlld0ltcGwodG9JbXBsKGNvbnRleHRSZWYpLCB0b0ltcGwocGFnZUdyb3VwUmVmKSwg
Y2xpZW50KTsKK30KKworUVdLVmlld0ltcGw6OlFXS1ZpZXdJbXBsKFdlYkNvbnRleHQqIGNvbnRl
eHQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwLCBRV0tWaWV3Q2xpZW50KiBjbGllbnQpCisgICAg
OiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3dlYlBhZ2VQcm94eShjb250ZXh0LT5jcmVhdGVX
ZWJQYWdlKHRoaXMsIHBhZ2VHcm91cCkpCit7Cit9CisKK1FXS1ZpZXdJbXBsOjp+UVdLVmlld0lt
cGwoKQoreworfQorCit2b2lkIFFXS1ZpZXdJbXBsOjpzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6
Q3Vyc29yJiBjdXJzb3IpCit7CisgICAgbV9jbGllbnQtPnZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVy
cmlkZSgqY3Vyc29yLnBsYXRmb3JtQ3Vyc29yKCkpOworfQorCitQYXNzT3duUHRyPERyYXdpbmdB
cmVhUHJveHk+IFFXS1ZpZXdJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKK3sKKyAgICBy
ZXR1cm4gRHJhd2luZ0FyZWFQcm94eUltcGw6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eS5nZXQoKSk7
Cit9CisKK3ZvaWQgUVdLVmlld0ltcGw6OnNldEZvY3VzZWQoYm9vbCBmb2N1c2VkKQoreworICAg
IG1fZm9jdXNlZCA9IGZvY3VzZWQ7CisgICAgbV93ZWJQYWdlUHJveHktPnZpZXdTdGF0ZURpZENo
YW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc0ZvY3VzZWQpOworfQorCit2b2lkIFFXS1ZpZXdJbXBs
OjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBtX3Zpc2libGUgPSB2aXNpYmxlOwor
ICAgIG1fd2ViUGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3
SXNWaXNpYmxlKTsKK30KKwordm9pZCBRV0tWaWV3SW1wbDo6c2V0QWN0aXZlKGJvb2wgYWN0aXZl
KQoreworICAgIG1fYWN0aXZlID0gYWN0aXZlOworICAgIG1fd2ViUGFnZVByb3h5LT52aWV3U3Rh
dGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3V2luZG93SXNBY3RpdmUpOworfQorCit2b2lk
IFFXS1ZpZXdJbXBsOjpzZXRTaXplKGNvbnN0IFFTaXplJiBzaXplKQoreworICAgIG1fc2l6ZSA9
IHNpemU7CisgICAgbV93ZWJQYWdlUHJveHktPnNldFZpZXdwb3J0U2l6ZShzaXplKTsKKworCisg
ICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS0+ZHJhd2lu
Z0FyZWEoKTsKKyAgICBpZiAoIWRyYXdpbmdBcmVhKQorICAgICAgICByZXR1cm47CisKKworICAg
IGRyYXdpbmdBcmVhLT5zZXRTaXplKG1fc2l6ZSwgV2ViQ29yZTo6SW50U2l6ZSgpKTsKKyAgICBk
cmF3aW5nQXJlYS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChXZWJDb3JlOjpJbnRSZWN0KFdlYkNv
cmU6OkludFBvaW50KCksIG1fc2l6ZSksIDEgLypzY2FsZSovLCBXZWJDb3JlOjpGbG9hdFBvaW50
KCkpOworfQorCit2b2lkIFFXS1ZpZXdJbXBsOjpwYWludChjb25zdCBRTWF0cml4NHg0JiB0cmFu
c2Zvcm0sIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIHBhaW50RmxhZ3MpCit7CisgICAgRHJhd2lu
Z0FyZWFQcm94eSogZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKTsK
KyAgICBpZiAoIWRyYXdpbmdBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICBMYXllclRyZWVD
b29yZGluYXRvclByb3h5KiBjb29yZGluYXRvclByb3h5ID0gZHJhd2luZ0FyZWEtPmxheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHkoKTsKKyAgICBpZiAoIWNvb3JkaW5hdG9yUHJveHkpCisgICAgICAg
IHJldHVybjsKKworICAgIFdlYkxheWVyVHJlZVJlbmRlcmVyKiByZW5kZXJlciA9IGNvb3JkaW5h
dG9yUHJveHktPmxheWVyVHJlZVJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgcmVuZGVyZXItPnNldEFjdGl2ZSh0cnVlKTsKKyAgICByZW5kZXJl
ci0+c3luY1JlbW90ZUNvbnRlbnQoKTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KDAs
IDAsIG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOworCisgICAgcmVuZGVyZXItPnBh
aW50VG9DdXJyZW50R0xDb250ZXh0KHRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCwgcGFpbnRGbGFn
cyk7Cit9CisKK3ZvaWQgUVdLVmlld0ltcGw6OmtleUV2ZW50KFFLZXlFdmVudCogZXZlbnQpCit7
CisgICAgbV93ZWJQYWdlUHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudChldmVudCkpOworfQorCit2b2lkIFFXS1ZpZXdJbXBsOjptb3VzZUV2ZW50KFFNb3Vz
ZUV2ZW50KiBldmVudCwgaW50IGNsaWNrQ291bnQpCit7CisgICAgbV93ZWJQYWdlUHJveHktPmhh
bmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChldmVudCwgUVRyYW5zZm9ybSgpLCBj
bGlja0NvdW50KSk7Cit9CisKK3ZvaWQgUVdLVmlld0ltcGw6OndoZWVsRXZlbnQoUVdoZWVsRXZl
bnQqIGV2ZW50KQoreworICAgIG1fd2ViUGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2
ZVdlYldoZWVsRXZlbnQoZXZlbnQsIFFUcmFuc2Zvcm0oKSkpOworfQorCit2b2lkIFFXS1ZpZXdJ
bXBsOjp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldmVudCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94
eS0+aGFuZGxlVG91Y2hFdmVudChOYXRpdmVXZWJUb3VjaEV2ZW50KGV2ZW50LCBRVHJhbnNmb3Jt
KCkpKTsKK30KKwordm9pZCBRV0tWaWV3SW1wbDo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQpCit7CisgICAg
bV9jbGllbnQtPmRvbmVXaXRoS2V5RXZlbnQoZXZlbnQubmF0aXZlRXZlbnQoKSwgd2FzRXZlbnRI
YW5kbGVkKTsKK30KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIFFXS1ZpZXdJbXBs
Ojpkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJv
b2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAgIG1fY2xpZW50LT5kb25lV2l0aFRvdWNoRXZlbnQo
ZXZlbnQubmF0aXZlRXZlbnQoKSwgd2FzRXZlbnRIYW5kbGVkKTsKK30KKyNlbmRpZgorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9xd2t2aWV3X3Au
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L3F3a3ZpZXdfcC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwZGE4YTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9xd2t2aWV3X3AuaApAQCAtMCww
ICsxLDEwMSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoKKyAgICBUaGlzIGZpbGUgaXMgbm90
IHBhcnQgb2YgdGhlIHB1YmxpYyBRdCBBcGkuIEl0IG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2Ug
YXQgYW55IHRpbWUgaW4gZnV0dXJlLgorICAgIFdlIG1ha2Ugbm8gY29tbWl0bWVudCByZWdhcmRp
bmcgc291cmNlIGNvbXBhdGliaWxpdHkgb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkuCisqLworCisj
aWZuZGVmIHF3a3ZpZXdfcF9oCisjZGVmaW5lIHF3a3ZpZXdfcF9oCisjaW5jbHVkZSAicXdlYmtp
dGdsb2JhbC5oIgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KKyNpbmNsdWRlIDxX
ZWJLaXQyL1dLUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KKworY2xh
c3MgUVJlY3Q7CitjbGFzcyBRUmVjdEY7CitjbGFzcyBRUG9pbnQ7CitjbGFzcyBRU2l6ZTsKK2Ns
YXNzIFFLZXlFdmVudDsKK2NsYXNzIFFNb3VzZUV2ZW50OworY2xhc3MgUVdoZWVsRXZlbnQ7Citj
bGFzcyBRVG91Y2hFdmVudDsKK2NsYXNzIFFVcmw7CitjbGFzcyBRTWF0cml4NHg0OworY2xhc3Mg
UUN1cnNvcjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFFXS1ZpZXc7CisKK2NsYXNz
IFFXS1ZpZXdDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflFXS1ZpZXdDbGllbnQoKSB7
IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NDcmFzaGVkKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCB2aWV3UHJvY2Vzc1JlbGF1bmNoZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZp
ZXdDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZShjb25zdCBRQ3Vyc29yJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IFFLZXlFdmVudCosIGJvb2wgd2FzSGFu
ZGxlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgUVRv
dWNoRXZlbnQqLCBib29sIHdhc0hhbmRsZWQpID0gMDsKK307CisKK2NsYXNzIFFXRUJLSVRfRVhQ
T1JUIFFXS1ZpZXcgeworcHVibGljOgorICAgIHZpcnR1YWwgflFXS1ZpZXcoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHNldFNp
emUoY29uc3QgUVNpemUmKSA9IDA7CisgICAgdmlydHVhbCBRU2l6ZSBzaXplKCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0ZvY3VzZWQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJs
ZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzVmlzaWJsZSgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0FjdGl2ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc3BhcmVudEJh
Y2tncm91bmQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0cmFuc3BhcmVudEJhY2tncm91
bmQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd0JhY2tncm91bmQoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3QmFja2dyb3VuZCgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChjb25zdCBRTWF0cml4NHg0JiB0cmFuc2Zvcm0sIGZsb2F0
IG9wYWNpdHksIHVuc2lnbmVkIHBhaW50RmxhZ3MpID0gMDsKKworICAgIHZpcnR1YWwgV0tQYWdl
UmVmIHBhZ2VSZWYoKSA9IDA7CisKKyAgICBzdGF0aWMgUVdLVmlldyogY3JlYXRlKFdLQ29udGV4
dFJlZiwgV0tQYWdlR3JvdXBSZWYsIFFXS1ZpZXdDbGllbnQqKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBrZXlFdmVudChRS2V5RXZlbnQqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRXZlbnQo
UU1vdXNlRXZlbnQqLCBpbnQgY2xpY2tDb3VudCA9IDApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
d2hlZWxFdmVudChRV2hlZWxFdmVudCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdG91Y2hFdmVu
dChRVG91Y2hFdmVudCopID0gMDsKK307CisKK30KKworI2VuZGlmIC8vIHF3a3ZpZXdfcF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9xd2t2aWV3X3Bf
cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvcXdrdmlld19wX3AuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWNlMTdlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvcXdrdmlld19wX3AuaApA
QCAtMCwwICsxLDE2OCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworLyoKKyAgICBUaGlzIGZpbGUg
aXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBRdCBBcGkuIEl0IG1heSBjaGFuZ2Ugd2l0aG91dCBu
b3RpY2UgYXQgYW55IHRpbWUgaW4gZnV0dXJlLgorICAgIFdlIG1ha2Ugbm8gY29tbWl0bWVudCBy
ZWdhcmRpbmcgc291cmNlIGNvbXBhdGliaWxpdHkgb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkuCisq
LworCisjaWZuZGVmIHF3a3ZpZXdfcF9wX2gKKyNkZWZpbmUgcXdrdmlld19wX3BfaAorCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5Lmgi
CisjaW5jbHVkZSAicXdrdmlld19wLmgiCisKKyNpbmNsdWRlIDxRVXJsPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgUVdLVmlld0ltcGwgOiBwdWJsaWMgUGFnZUNsaWVudCAsIHB1Ymxp
YyBRV0tWaWV3IHsKK3B1YmxpYzoKKworICAgIHZpcnR1YWwgdm9pZCBwYWdlQ2xvc2VkKCkgeyB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGljYXRvcihQYXNzUmVmUHRyPEZpbmRJbmRp
Y2F0b3I+LCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoYm9vbCB1c2VDdXN0b21SZXByZXNlbnRhdGlvbikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVwcmVz
ZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgQ29yZUlQQzo6
RGF0YVJlZmVyZW5jZSYpIHsgfQorICAgIHZpcnR1YWwgZG91YmxlIGN1c3RvbVJlcHJlc2VudGF0
aW9uWm9vbUZhY3RvcigpIHsgcmV0dXJuIDE7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9t
UmVwcmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgV2ViS2l0
OjpGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5n
JiwgV2ViS2l0OjpGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgeyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0
cmlidXRlcyYgYXR0cikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkgeyBub3RJbXBsZW1l
bnRlZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXV0aGVudGljYXRpb25SZXF1aXJl
ZFJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgY29uc3QgU3RyaW5nJiByZWFsbSwgY29u
c3QgU3RyaW5nJiBwcmVmaWxsZWRVc2VybmFtZSwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBw
YXNzd29yZCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUNl
cnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBib29s
JiBpZ25vcmVFcnJvcnMpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUsIHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUsIFN0
cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQor
CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0
Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSB7IG5vdEltcGxlbWVudGVk
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSB7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgY2FuVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJl
ZG8pIHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9CisKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252
ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QpIHsgbm90SW1w
bGVtZW50ZWQoKTsgcmV0dXJuIHJlY3Q7IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0UmVj
dCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0KSB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiByZWN0OyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQ
b2ludCBzY3JlZW5Ub1dpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpIHsgbm90
SW1wbGVtZW50ZWQoKTsgcmV0dXJuIHBvaW50OyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRS
ZWN0IHdpbmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpIHsgbm90SW1w
bGVtZW50ZWQoKTsgcmV0dXJuIHJlY3Q7IH0KKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShj
b25zdCBMYXllclRyZWVDb250ZXh0JikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIHsgbm90SW1wbGVtZW50ZWQo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShj
b25zdCBMYXllclRyZWVDb250ZXh0JikgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisjZW5kaWYgLy8g
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRl
eHRJbnB1dFN0YXRlKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CisjaWYgRU5BQkxFKEdFU1RVUkVf
RVZFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEdlc3R1cmVFdmVudChjb25zdCBXZWJH
ZXN0dXJlRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkgeyBub3RJbXBsZW1lbnRl
ZCgpOyB9CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGxheVZpZXcoKSB7IG5vdEltcGxl
bWVudGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVmlldyhjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQp
IHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIGZsYXNoQmFja2luZ1N0
b3JlVXBkYXRlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mKSB7IG5vdEltcGxlbWVu
dGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBhcmVhKSB7IG5v
dEltcGxlbWVudGVkKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMoYm9vbCBoaWRkZW5VbnRpbE1vdXNlTW92ZXMpIHsgbm90SW1wbGVtZW50ZWQo
KTsgfQorICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIG5ld1Rvb2x0aXApIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorCisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0RhdGEsIFBhc3NS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQor
CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1l
bnVQcm94eShXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSkgeyBub3RJbXBsZW1lbnRlZCgpOyBy
ZXR1cm4gUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4oKTsgfQorICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxXZWJDb250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBh
Z2VQcm94eSogd2ViUGFnZVByb3h5KSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBQYXNzUmVm
UHRyPFdlYkNvbnRleHRNZW51UHJveHk+KCk7IH0KKworI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb2xvckNob29zZXJQcm94eT4gY3JlYXRl
Q29sb3JDaG9vc2VyUHJveHkoV2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImIGlu
dGlhbENvbG9yKSB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBQYXNzUmVmUHRyPFdlYkNvbG9y
Q2hvb3NlclByb3h5PigpOyB9CisjZW5kaWYKKworICAgIFFXS1ZpZXdJbXBsKFdlYkNvbnRleHQq
LCBXZWJQYWdlR3JvdXAqLCBRV0tWaWV3Q2xpZW50Kik7CisgICAgflFXS1ZpZXdJbXBsKCk7CisK
KyAgICAvLyBQYWdlQ2xpZW50CisKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQ
cm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOworCisgICAgdmlydHVhbCB2b2lkIHBhZ2VE
aWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3MpIHsgbV9jbGllbnQt
PnZpZXdSZXF1ZXN0ZWRTY3JvbGwocG9zKTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlk
Q3Jhc2goKSB7IG1fY2xpZW50LT52aWV3UHJvY2Vzc0NyYXNoZWQoKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKSB7IG1fY2xpZW50LT52aWV3UHJvY2Vzc1JlbGF1bmNo
ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIHJlY3QpIHsgbV9jbGllbnQtPnZpZXdOZWVkc0Rpc3BsYXkocmVjdCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6Oklu
dFNpemUmIG5ld1NpemUpIHsgbV9jbGllbnQtPnZpZXdDb250ZW50U2l6ZUNoYW5nZWQobmV3U2l6
ZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYp
OworCisgICAgdmlydHVhbCBib29sIGlzVmlld0ZvY3VzZWQoKSB7IHJldHVybiBtX2ZvY3VzZWQ7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpIHsgcmV0dXJuIG1fdmlzaWJsZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSB7IHJldHVybiBtX2FjdGl2
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdJbldpbmRvdygpIHsgcmV0dXJuIHRydWU7IH0g
Ly8gRklYTUUKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSB7IHJldHVy
biBtX3NpemU7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCk7CisjaWYgRU5BQkxF
KFRPVUNIX0VWRU5UUykKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0
IE5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCk7CisjZW5kaWYKKwor
ICAgIC8vIFdLVmlldworCisgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoKSB7IG1fd2ViUGFn
ZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9j
dXNlZChib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNGb2N1c2VkKCkgY29uc3QgeyByZXR1cm4g
bV9mb2N1c2VkOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNWaXNpYmxlKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlOyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6
ZShjb25zdCBRU2l6ZSYpOworICAgIHZpcnR1YWwgUVNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2l6ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zcGFyZW50QmFja2dyb3VuZChi
b29sIHZhbHVlKSB7IG1fd2ViUGFnZVByb3h5LT5zZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3Vu
ZCh2YWx1ZSk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29u
c3QgeyByZXR1cm4gbV93ZWJQYWdlUHJveHktPmRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCk7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3QmFja2dyb3VuZChib29sIHZhbHVlKSB7IG1f
d2ViUGFnZVByb3h5LT5zZXREcmF3c0JhY2tncm91bmQodmFsdWUpOyB9CisgICAgdmlydHVhbCBi
b29sIGRyYXdCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV93ZWJQYWdlUHJveHktPmRyYXdz
QmFja2dyb3VuZCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoY29uc3QgUU1hdHJpeDR4
NCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCB1bnNpZ25lZCBQYWludEZsYWdzKTsKKworICAg
IFdLUGFnZVJlZiBwYWdlUmVmKCkgeyByZXR1cm4gdG9BUEkobV93ZWJQYWdlUHJveHkuZ2V0KCkp
OyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQga2V5RXZlbnQoUUtleUV2ZW50Kik7
CisgICAgdmlydHVhbCB2b2lkIG1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqLCBpbnQgY2xpY2tDb3Vu
dCA9IDApOworICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50KFFXaGVlbEV2ZW50Kik7CisgICAg
dmlydHVhbCB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKKworcHJpdmF0ZToKKyAgICBi
b29sIG1fZm9jdXNlZDsKKyAgICBib29sIG1fdmlzaWJsZTsKKyAgICBib29sIG1fYWN0aXZlOwor
ICAgIFFTaXplIG1fc2l6ZTsKKyAgICBRVXJsIG1fdXJsOworCisgICAgUVdLVmlld0NsaWVudCog
bV9jbGllbnQ7CisgICAgV1RGOjpSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IG1fd2ViUGFn
ZVByb3h5OworfTsKKworfQorCisjZW5kaWYgLy8gcXdrdmlld19wX3BfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRt
bCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9ibHVlc3F1YXJl
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRiNjM5NgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9i
bHVlc3F1YXJlLmh0bWwKQEAgLTAsMCArMSw1IEBACis8Ym9keSBzdHlsZT0ibWFyZ2luOjYwcHgi
PgorICAgIDx0YWJsZSBzdHlsZT0iYm9yZGVyOjEwcHggc29saWQgYmx1ZTsgd2lkdGg6ODBweDsg
aGVpZ2h0OjgwcHgiPgorICAgICAgICA8dHI+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgICA8L3Rh
YmxlPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9odG1sL3JlZHNxdWFyZS5odG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9odG1sL3JlZHNxdWFyZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmY3MGQyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVkc3F1YXJlLmh0bWwKQEAgLTAsMCArMSw1IEBACis8
Ym9keSBzdHlsZT0ibWFyZ2luOjIwcHgiPgorICAgIDx0YWJsZSBzdHlsZT0iYm9yZGVyOjEwcHgg
c29saWQgcmVkOyB3aWR0aDoxNjBweDsgaGVpZ2h0OjE2MHB4Ij4KKyAgICAgICAgPHRyPjx0ZD4m
bmJzcDs8L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19u
b0JhY2tncm91bmQxLnBuZyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
aHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQxLnBuZwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODNm
MDdjZWZmMjI4YmM4ZWJkZWRjYjE2OTRmNTg1ODg4OGU0NzM2CkdJVCBiaW5hcnkgcGF0Y2gKbGl0
ZXJhbCA2OTYKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF5DcVM1azRNP3R5U1RfJHl1QHBPYmhI
d0J1NE0kMWBrazQ3KjVuMFRACnp6O15fTThLLUxWTmkjNG9NUn5lN2hFJlhYZClKWSMkdzdlTztM
I3VkXiZoaXVObWVAOTVNdFojV35wJnxWYF9Cdgp6VGtlWTJoUDRiOSMqR2RGOTR0ZjxFemQ5VmVg
Jk95eXNkZURJPyF3XmBZZFdEfDY5QSplQlBoIUU2cSlPMVVRJSkKejZ7dFdZWntMMFhxeCQjemNW
NVRVMzl+ZGdDfiUrP2hqYDZqLXJzZm8qYlFtNl9jSWopU2VQNks3Y3VXTHlUJHQyCnpVa3F+XklJ
JWtJVmNZQzR4eFd9PEk8UU5WP3dpQ25XIyNwWCYkKTJLIVI8e34rV0srRztmeW89bTxebj56QzVh
YApQV0I+d0JTM2ozXlA2PHJfWF89SWQKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMv
cXdrdmlld19ub0JhY2tncm91bmQzLnBuZyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQzLnBuZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mMmE3N2E4MzhkOTU4MjZiN2YxMDljMzg2NzcyYWEyZDZmZjU2NzY5CkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCA3MDEKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF5DcVM1azRNP3R5U1Rf
JHl1QHBPYmhId0J1NE0kMWBrazQ3KjVuMFRACnp6O15fTThLLUxWTmkjNG8jZTJGcWhFJlhYZC1v
dmNWRkxrJWdCbTtqUG4qaGk9I2ZDPG9RaD0oaV9hSkYmJThYTgp6XyNGRihZc0tGZ0FEbSlnYSNS
bz9tZ3N2TEZPJlJKe28kNlErRzBLZTk4OFQwN3t1JVJPWG9MKiU9NkZyPCRSYjAKemkjIz94Z3Yy
KUZAQlhiZXVraW81eVZFfCsjX3JtQF4ydjRBPyZrSVVQNWR5QWxOMnV6PnZoVzFKLWt1ZHV2I2ts
CnpKTGU4MlZVe0tiMXJCdUwoQSZJQSYrcFZTKXBiKEteQDtiKCVLMGFMWDJ1Oyl3bDMlNzRJTUd2
ZzNXeX11e3toNQpXX1hYI0s2bzIycjAwZj97ZWxGe3I1fUUpOHU5cGh7CgpsaXRlcmFsIDAKSGNt
Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL2h0bWwvcmVzb3VyY2VzL3F3a3ZpZXdfcGFpbnQucG5nIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X3BhaW50LnBuZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi45NWJmNjc2ZjIxYTA5ZWQzNTMyODE5MmRjY2I1Mzc2MDRmOTI0NzkyCkdJVCBiaW5h
cnkgcGF0Y2gKbGl0ZXJhbCA2NjcKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF5DcVM1azRNP3R5
U1RfJHl1QHBPYmhId0J1NE0kMWBrazQ3KjVuMFRACnp6O15fTThLLUxWTmkjNG8qP1BKLWhFJlhY
ZHVKbWp2IU1XazxMUjNKeH5GKyh4VkFBeyZkX31EPHohSyMrfWdlMAp6Pmxvd3I9R1FhKUY+Wjdh
Ozl3ej1YaTJZbTYhbHA3O2YpVyUrLTZ2SHdmdm1AQzBLNmliTWZpX0VeS2dBOzl6TlQKejckcztC
MX4lOUk7JEdqblNhNkUxUTkqISUzN3MmZ3BTPHQ7NTA0IzN1fWZwcTB2N3dnJGhNRHIlNGZhKGNZ
dnZqCk4hUEN7eFd0fiQoNjlDOHBuO3JsRgoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xd2t2aWV3L3F3a3Zp
ZXcucHJvIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xd2t2aWV3L3F3
a3ZpZXcucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZGMxOTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F3
a3ZpZXcvcXdrdmlldy5wcm8KQEAgLTAsMCArMSwzIEBACitpbmNsdWRlKC4uL3Rlc3RzLnByaSkK
K1NPVVJDRVMgKz0gJCR7VEFSR0VUfS5jcHAKK1FUICs9IHdlYmtpdC1wcml2YXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3F3a3ZpZXcvdHN0X3F3
a3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xd2t2aWV3
L3RzdF9xd2t2aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDU4
ODEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9xd2t2aWV3L3RzdF9xd2t2aWV3LmNwcApAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAgICBD
b3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorKi8KKyNpbmNsdWRlICIuLi91dGlsLmgiCisKKyNpbmNsdWRlIDxRSW1hZ2U+CisjaW5j
bHVkZSA8UU1hdHJpeDR4ND4KKyNpbmNsdWRlIDxRT3BlbkdMQ29udGV4dD4KKyNpbmNsdWRlIDxR
U2l6ZT4KKyNpbmNsdWRlIDxRV2luZG93PgorI2luY2x1ZGUgPFF0VGVzdC9RdFRlc3Q+CisKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3Jv
dXAuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1N0cmluZ1F0
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgorI2luY2x1ZGUgPFdlYktpdDIvcXdrdmll
d19wLmg+CisKK3N0YXRpYyBXS0NvbnRleHRSZWYgd2ViQ29udGV4dCgpCit7CisgICAgc3RhdGlj
IFdLQ29udGV4dFJlZiByZXN1bHQgPSBXS0NvbnRleHRDcmVhdGUoKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitzdGF0aWMgV0tQYWdlR3JvdXBSZWYgY3JlYXRlV2ViUGFnZUdyb3VwKGNvbnN0
IFFTdHJpbmcmIG5hbWUpCit7CisgICAgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwID1XS1BhZ2VH
cm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcobmFtZSkp
OworICAgIFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMgPSBXS1BhZ2VHcm91cEdldFByZWZl
cmVuY2VzKHBhZ2VHcm91cCk7CisgICAgV0tQcmVmZXJlbmNlc1NldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Rm9y
Y2VDb21wb3NpdGluZ01vZGUocHJlZmVyZW5jZXMsIHRydWUpOworICAgIFdLUHJlZmVyZW5jZXNT
ZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKworICAgIHJldHVy
biBwYWdlR3JvdXA7Cit9CisKK3N0YXRpYyBXS1BhZ2VHcm91cFJlZiB3ZWJQYWdlR3JvdXAoY29u
c3QgUVN0cmluZyYgbmFtZSkKK3sKKyAgICBzdGF0aWMgV0tQYWdlR3JvdXBSZWYgcmVzdWx0ID0g
Y3JlYXRlV2ViUGFnZUdyb3VwKG5hbWUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NsYXNz
IFdlYlZpZXcgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFdlYktpdDo6UVdLVmlld0NsaWVudCB7
CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBXZWJWaWV3KGNvbnN0IFFTaXplJiBzaXplKQor
ICAgIHsKKyAgICAgICAgV0tQYWdlTG9hZGVyQ2xpZW50IGxvYWRlckNsaWVudDsKKyAgICAgICAg
bWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihXS1BhZ2VMb2FkZXJDbGllbnQpKTsKKyAg
ICAgICAgbG9hZGVyQ2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgICAgICBsb2FkZXJDbGll
bnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gV2ViVmlldzo6ZmluaXNoTG9hZEZvckZyYW1lOwor
CisgICAgICAgIG1fd2ViVmlldyA9IFdlYktpdDo6UVdLVmlldzo6Y3JlYXRlKHdlYkNvbnRleHQo
KSwgd2ViUGFnZUdyb3VwKFFTdHJpbmcoKSksIHRoaXMpOworICAgICAgICBXS1BhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KG1fd2ViVmlldy0+cGFnZVJlZigpLCAmbG9hZGVyQ2xpZW50KTsKKyAgICAg
ICAgbV93ZWJWaWV3LT5pbml0aWFsaXplKCk7CisgICAgICAgIFdLUGFnZVNldFVzZUZpeGVkTGF5
b3V0KG1fd2ViVmlldy0+cGFnZVJlZigpLCB0cnVlKTsKKworICAgICAgICBtX3dlYlZpZXctPnNl
dFNpemUoc2l6ZSk7CisgICAgICAgIG1fd2ViVmlldy0+c2V0Rm9jdXNlZCh0cnVlKTsKKyAgICAg
ICAgbV93ZWJWaWV3LT5zZXRWaXNpYmxlKHRydWUpOworICAgICAgICBtX3dlYlZpZXctPnNldEFj
dGl2ZSh0cnVlKTsKKyAgICB9CisKKyAgICB+V2ViVmlldygpIHsgZGVsZXRlIG1fd2ViVmlldzsg
fQorCisgICAgdm9pZCBsb2FkKGNvbnN0IFFTdHJpbmcmIGh0bWwpCisgICAgeworICAgICAgICBt
X2ZyYW1lTG9hZGVkID0gZmFsc2U7CisgICAgICAgIFdLUGFnZUxvYWRVUkwobV93ZWJWaWV3LT5w
YWdlUmVmKCksIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGh0bWwudG9Bc2NpaSgpLmRhdGEo
KSkpOworICAgICAgICBRVkVSSUZZKDo6d2FpdEZvclNpZ25hbCh0aGlzLCBTSUdOQUwobG9hZGVk
KCkpLCA1MDAwKSk7CisgICAgfQorCisgICAgdm9pZCBzZXREcmF3QmFja2dyb3VuZChib29sIHZh
bHVlKSB7IG1fd2ViVmlldy0+c2V0RHJhd0JhY2tncm91bmQodmFsdWUpOyB9CisgICAgdm9pZCBz
ZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB2YWx1ZSkgeyBtX3dlYlZpZXctPnNldFRyYW5z
cGFyZW50QmFja2dyb3VuZCh2YWx1ZSk7IH0KKworICAgIHZpcnR1YWwgdm9pZCB2aWV3TmVlZHNE
aXNwbGF5KGNvbnN0IFFSZWN0JikKKyAgICB7CisgICAgICAgIG1fd2ViVmlldy0+cGFpbnQoUU1h
dHJpeDR4NCgpLCAxLCAwKTsKKyAgICAgICAgaWYgKG1fZnJhbWVMb2FkZWQpCisgICAgICAgICAg
ICBlbWl0IGxvYWRlZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVk
U2Nyb2xsKGNvbnN0IFFQb2ludCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc0Ny
YXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NSZWxhdW5jaGVkKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNvbnN0IFFD
dXJzb3ImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBRS2V5
RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRv
dWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBib29sIHdhc0hhbmRsZWQpIHsgfQorCisgICAg
c3RhdGljIHZvaWQgZmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOworCitz
aWduYWxzOgorICAgIHZvaWQgbG9hZGVkKCk7CisKK3ByaXZhdGU6CisgICAgV2ViS2l0OjpRV0tW
aWV3KiBtX3dlYlZpZXc7CisgICAgYm9vbCBtX2ZyYW1lTG9hZGVkOworfTsKKwordm9pZCBXZWJW
aWV3OjpmaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBXZWJW
aWV3KiBvYmogPSBzdGF0aWNfY2FzdDxXZWJWaWV3Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOworICAgIG9iai0+bV9mcmFtZUxvYWRlZCA9IHRydWU7Cit9CisKK3N0YXRpYyBib29s
IGNvbXBhcmVJbWFnZXMoY29uc3QgUUltYWdlJiBpMSwgY29uc3QgUUltYWdlJiBpMiwgY29uc3Qg
UVBvaW50JiBwMSwgY29uc3QgUVBvaW50JiBwMiwgaW50IGl0ZXIpCit7CisgICAgY29uc3QgUVBv
aW50IHBvaW50KChwMS54KCkgKyBwMi54KCkpID4+IDEsIChwMS55KCkgKyBwMi55KCkpID4+IDEp
OworCisgICAgaWYgKGkxLnBpeGVsKHBvaW50KSAhPSBpMi5waXhlbChwb2ludCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghaXRlcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICAtLWl0ZXI7CisgICAgcmV0dXJuIGNvbXBhcmVJbWFnZXMoaTEsIGkyLCBwb2ludCwgcDEs
IGl0ZXIpICYmIGNvbXBhcmVJbWFnZXMoaTEsIGkyLCBwb2ludCwgcDIsIGl0ZXIpCisgICAgICAg
ICYmIGNvbXBhcmVJbWFnZXMoaTEsIGkyLCBwb2ludCwgUVBvaW50KHAxLngoKSwgcDIueSgpKSwg
aXRlcikgJiYgY29tcGFyZUltYWdlcyhpMSwgaTIsIHBvaW50LCBRUG9pbnQocDIueCgpLCBwMS55
KCkpLCBpdGVyKTsKK30KKworc3RhdGljIGJvb2wgY29tcGFyZUltYWdlcyhjb25zdCBRSW1hZ2Um
IGkxLCBjb25zdCBRSW1hZ2UmIGkyLCBpbnQgaXRlcikKK3sKKyAgICBpZiAoaTEuc2l6ZSgpICE9
IGkyLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb21wYXJlSW1h
Z2VzKGkxLCBpMiwgUVBvaW50KDAsIDApLCBRUG9pbnQoaTEuc2l6ZSgpLndpZHRoKCksIGkxLnNp
emUoKS5oZWlnaHQoKSksIGl0ZXIpOworfQorCitjbGFzcyB0c3RfcXdrdmlldyA6IHB1YmxpYyBR
T2JqZWN0IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIHRzdF9xd2t2aWV3KCkKKyAgICAg
ICAgOiBtX3Jlc291cmNlRGlyKFFTdHJpbmc6OmZyb21Bc2NpaShURVNUU19TT1VSQ0VfRElSICIv
aHRtbC9yZXNvdXJjZXMiKSkKKyAgICAgICAgLCBtX2Jhc2VVcmwoUVVybDo6ZnJvbUxvY2FsRmls
ZShURVNUU19TT1VSQ0VfRElSICIvaHRtbCIpLnRvU3RyaW5nKCkpCisgICAgeyB9CisKK3ByaXZh
dGUgc2xvdHM6CisgICAgdm9pZCBwYWludCgpIHsgcnVuKCZ0c3RfcXdrdmlldzo6ZG9QYWludCwg
bV9yZXNvdXJjZURpciArICIvcXdrdmlld19wYWludC5wbmciKTsgfQorICAgIHZvaWQgbm9CYWNr
Z3JvdW5kMSgpIHsgcnVuKCZ0c3RfcXdrdmlldzo6ZG9Ob0JhY2tncm91bmQxLCBtX3Jlc291cmNl
RGlyICsgIi9xd2t2aWV3X25vQmFja2dyb3VuZDEucG5nIik7IH0KKyAgICB2b2lkIG5vQmFja2dy
b3VuZDIoKSB7IHJ1bigmdHN0X3F3a3ZpZXc6OmRvTm9CYWNrZ3JvdW5kMiwgbV9yZXNvdXJjZURp
ciArICIvcXdrdmlld19ub0JhY2tncm91bmQxLnBuZyIpOyB9CisgICAgdm9pZCBub0JhY2tncm91
bmQzKCkgeyBydW4oJnRzdF9xd2t2aWV3Ojpkb05vQmFja2dyb3VuZDMsIG1fcmVzb3VyY2VEaXIg
KyAiL3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMy5wbmciKTsgfQorCitwcml2YXRlOgorICAgIGNvbnN0
IFFTdHJpbmcgbV9yZXNvdXJjZURpcjsKKyAgICBjb25zdCBRU3RyaW5nIG1fYmFzZVVybDsKKwor
ICAgIHZvaWQgZG9QYWludChjb25zdCBRU2l6ZSYgc2l6ZSk7CisgICAgdm9pZCBkb05vQmFja2dy
b3VuZDEoY29uc3QgUVNpemUmIHNpemUpOworICAgIHZvaWQgZG9Ob0JhY2tncm91bmQyKGNvbnN0
IFFTaXplJiBzaXplKTsKKyAgICB2b2lkIGRvTm9CYWNrZ3JvdW5kMyhjb25zdCBRU2l6ZSYgc2l6
ZSk7CisKKyAgICB0eXBlZGVmIHZvaWQgKHRzdF9xd2t2aWV3OjoqUGFpbnRNZXRob2QpKGNvbnN0
IFFTaXplJiBzaXplKTsKKyAgICB2b2lkIHJ1bihQYWludE1ldGhvZCwgY29uc3QgUVN0cmluZyYg
ZXhwZWN0YXRpb24pOworfTsKKwordm9pZCB0c3RfcXdrdmlldzo6ZG9QYWludChjb25zdCBRU2l6
ZSYgc2l6ZSkKK3sKKyAgICBXZWJWaWV3IHZpZXcoc2l6ZSk7CisgICAgdmlldy5sb2FkKG1fYmFz
ZVVybCArICIvcmVkc3F1YXJlLmh0bWwiKTsKK30KKwordm9pZCB0c3RfcXdrdmlldzo6ZG9Ob0Jh
Y2tncm91bmQxKGNvbnN0IFFTaXplJiBzaXplKQoreworICAgIFdlYlZpZXcgdmlldyhzaXplKTsK
KyAgICB2aWV3LnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCh0cnVlKTsKKyAgICB2aWV3LmxvYWQo
bV9iYXNlVXJsICsgIi9yZWRzcXVhcmUuaHRtbCIpOworICAgIHZpZXcubG9hZChtX2Jhc2VVcmwg
KyAiL2JsdWVzcXVhcmUuaHRtbCIpOworfQorCit2b2lkIHRzdF9xd2t2aWV3Ojpkb05vQmFja2dy
b3VuZDIoY29uc3QgUVNpemUmIHNpemUpCit7CisgICAgV2ViVmlldyB2aWV3MShzaXplKTsKKyAg
ICB2aWV3MS5zZXRUcmFuc3BhcmVudEJhY2tncm91bmQodHJ1ZSk7CisgICAgdmlldzEubG9hZCht
X2Jhc2VVcmwgKyAiL3JlZHNxdWFyZS5odG1sIik7CisKKyAgICBXZWJWaWV3IHZpZXcyKHNpemUp
OworICAgIHZpZXcyLnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCh0cnVlKTsKKyAgICB2aWV3Mi5s
b2FkKG1fYmFzZVVybCArICIvYmx1ZXNxdWFyZS5odG1sIik7Cit9CisKK3ZvaWQgdHN0X3F3a3Zp
ZXc6OmRvTm9CYWNrZ3JvdW5kMyhjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBXZWJWaWV3IHZp
ZXcxKHNpemUpOworICAgIHZpZXcxLnNldFRyYW5zcGFyZW50QmFja2dyb3VuZChmYWxzZSk7Cisg
ICAgdmlldzEubG9hZChtX2Jhc2VVcmwgKyAiL3JlZHNxdWFyZS5odG1sIik7CisKKyAgICBXZWJW
aWV3IHZpZXcyKHNpemUpOworICAgIHZpZXcyLnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCh0cnVl
KTsKKyAgICB2aWV3Mi5sb2FkKG1fYmFzZVVybCArICIvYmx1ZXNxdWFyZS5odG1sIik7Cit9CisK
K3ZvaWQgdHN0X3F3a3ZpZXc6OnJ1bihQYWludE1ldGhvZCBtZXRob2QsIGNvbnN0IFFTdHJpbmcm
IGV4cGVjdGF0aW9uKQoreworCisgICAgUVdpbmRvdyB3aW5kb3c7CisgICAgd2luZG93LnNldFN1
cmZhY2VUeXBlKFFTdXJmYWNlOjpPcGVuR0xTdXJmYWNlKTsKKyAgICB3aW5kb3cuc2V0R2VvbWV0
cnkoMCwgMCwgMjAwLCAyMDApOworICAgIHdpbmRvdy5jcmVhdGUoKTsKKworICAgIFFPcGVuR0xD
b250ZXh0IGNvbnRleHQ7CisgICAgY29udGV4dC5jcmVhdGUoKTsKKyAgICBjb250ZXh0Lm1ha2VD
dXJyZW50KCZ3aW5kb3cpOworCisgICAgKHRoaXMtPiptZXRob2QpKHdpbmRvdy5zaXplKCkpOwor
CisgICAgUUltYWdlIGltYWdlKHdpbmRvdy5zaXplKCksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9Q
cmVtdWx0aXBsaWVkKTsKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgd2luZG93LnNpemUoKS53aWR0
aCgpLCB3aW5kb3cuc2l6ZSgpLmhlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBp
bWFnZS5iaXRzKCkpOworCisgICAgUVZFUklGWShjb21wYXJlSW1hZ2VzKFFJbWFnZShleHBlY3Rh
dGlvbiksIGltYWdlLnJnYlN3YXBwZWQoKSwgNSkpOworfQorCitRVEVTVF9NQUlOKHRzdF9xd2t2
aWV3KQorCisjaW5jbHVkZSAidHN0X3F3a3ZpZXcubW9jIgpkaWZmIC0tZ2l0IGEvU291cmNlL3Rl
c3RzLnByaSBiL1NvdXJjZS90ZXN0cy5wcmkKaW5kZXggNWQyZWI2Yi4uZDU2NmM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL3Rlc3RzLnByaQorKysgYi9Tb3VyY2UvdGVzdHMucHJpCkBAIC01MCw1ICs1
MCw2IEBAIFNVQkRJUlMgKz0gXAogICAgICAgICAkJFdFQktJVDJfVEVTVFNfRElSL2luc3BlY3Rv
cnNlcnZlciBcCiAgICAgICAgICQkV0VCS0lUMl9URVNUU19ESVIvcHVibGljYXBpIFwKICAgICAg
ICAgJCRXRUJLSVQyX1RFU1RTX0RJUi9xcXVpY2t3ZWJ2aWV3IFwKLSAgICAgICAgJCRXRUJLSVQy
X1RFU1RTX0RJUi9xbWx0ZXN0cworICAgICAgICAkJFdFQktJVDJfVEVTVFNfRElSL3FtbHRlc3Rz
IFwKKyAgICAgICAgJCRXRUJLSVQyX1RFU1RTX0RJUi9xd2t2aWV3CiB9CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTA0YmMxMS4uMjI3NzRjYSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQ0IEBACisyMDEyLTA2LTE4ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tp
YS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDUzMgorCisgICAg
ICAgIE1pbmlCcm93c2VyX2NiIGlzIGFuIHVzYWdlIGV4YW1wbGUgZm9yIHRoZSBRV0tWaWV3IEFQ
SS4gSXQgaXMgb25seSBhbiBleGFtcGxlCisgICAgICAgIGFuZCBpcyBub3QgZnVsbHkgaW1wbGVt
ZW50ZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNaW5pQnJvd3Nlci9xd2t2aWV3L0Rlcml2ZWRTb3VyY2VzLnByaTogQWRkZWQuCisgICAgICAg
ICogTWluaUJyb3dzZXIvcXdrdmlldy9NaW5pQnJvd3Nlcl9jYi5wcm86IEFkZGVkLgorICAgICAg
ICAqIE1pbmlCcm93c2VyL3F3a3ZpZXcvVGFyZ2V0LnByaTogQWRkZWQuCisgICAgICAgICogTWlu
aUJyb3dzZXIvcXdrdmlldy9WaWV3LmNwcDogQWRkZWQuCisgICAgICAgIChjcmVhdGVXZWJDb250
ZXh0KToKKyAgICAgICAgKGNyZWF0ZVdlYlBhZ2VHcm91cCk6CisgICAgICAgIChWaWV3Ojp+Vmll
dyk6CisgICAgICAgIChWaWV3OjpWaWV3KToKKyAgICAgICAgKFZpZXc6OmV4cG9zZUV2ZW50KToK
KyAgICAgICAgKFZpZXc6OnJlc2l6ZUV2ZW50KToKKyAgICAgICAgKFZpZXc6OnRpbWVyRXZlbnQp
OgorICAgICAgICAoVmlldzo6dmlld05lZWRzRGlzcGxheSk6CisgICAgICAgIChWaWV3Ojp2aWV3
UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUpOgorICAgICAgICAoVmlldzo6ZG9uZVdpdGhLZXlFdmVu
dCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xd2t2aWV3L1ZpZXcu
aDogQWRkZWQuCisgICAgICAgIChWaWV3KToKKyAgICAgICAgKFZpZXc6OnZpZXdSZXF1ZXN0ZWRT
Y3JvbGwpOgorICAgICAgICAoVmlldzo6dmlld1Byb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFZp
ZXc6OnZpZXdQcm9jZXNzUmVsYXVuY2hlZCk6CisgICAgICAgIChWaWV3Ojp2aWV3Q29udGVudFNp
emVDaGFuZ2VkKToKKyAgICAgICAgKFZpZXc6OmRvbmVXaXRoVG91Y2hFdmVudCk6CisgICAgICAg
IChWaWV3OjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFZpZXc6OmtleVJlbGVhc2VFdmVudCk6
CisgICAgICAgIChWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQpOgorICAgICAgICAoVmlldzo6
bW91c2VNb3ZlRXZlbnQpOgorICAgICAgICAoVmlldzo6bW91c2VQcmVzc0V2ZW50KToKKyAgICAg
ICAgKFZpZXc6Om1vdXNlUmVsZWFzZUV2ZW50KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgICogVG9vbHMucHJvOgorCiAyMDEyLTA2LTI2ICBP
amFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IHBsYXRmb3JtIHBp
Y2tlciBjaGFuZ2UgaGFuZGxlciBpbiBnYXJkZW4tby1tYXRpYwpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvcXdrdmlldy9EZXJpdmVkU291cmNlcy5wcmkgYi9Ub29scy9NaW5pQnJvd3Nl
ci9xd2t2aWV3L0Rlcml2ZWRTb3VyY2VzLnByaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5kYzRkMmY0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXdr
dmlldy9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTAsMCArMSw2IEBACitURU1QTEFURSA9IGRlcml2
ZWQKKworIyBNYWtlIHN1cmUgZm9yd2FyZGVkIGhlYWRlcnMgbmVlZGVkIGJ5IHRoaXMgcHJvamVj
dCBhcmUgcHJlc2VudAorZndoZWFkZXJfZ2VuZXJhdG9yLmNvbW1hbmRzID0gcGVybCAkJHtST09U
X1dFQktJVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2VuZXJhdGUtZm9yd2FyZGluZy1o
ZWFkZXJzLnBsICQke1JPT1RfV0VCS0lUX0RJUn0vVG9vbHMvV2ViS2l0VGVzdFJ1bm5lciAkJHtS
T09UX0JVSUxEX0RJUn0vU291cmNlL2luY2x1ZGUgcXQKK2Z3aGVhZGVyX2dlbmVyYXRvci5kZXBl
bmRzICA9ICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dlYktpdDIvU2NyaXB0cy9nZW5lcmF0
ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKK0dFTkVSQVRPUlMgKz0gZndoZWFkZXJfZ2VuZXJhdG9y
CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L01pbmlCcm93c2VyX2NiLnBy
byBiL1Rvb2xzL01pbmlCcm93c2VyL3F3a3ZpZXcvTWluaUJyb3dzZXJfY2IucHJvCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MDMxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L01pbmlCcm93c2VyX2NiLnBybwpAQCAtMCwwICsxLDkg
QEAKK1RFTVBMQVRFID0gc3ViZGlycworQ09ORklHICs9IG9yZGVyZWQKKworZGVyaXZlZF9zb3Vy
Y2VzLmZpbGUgPSBEZXJpdmVkU291cmNlcy5wcmkKK3RhcmdldC5maWxlID0gVGFyZ2V0LnByaQor
CitTVUJESVJTID0gZGVyaXZlZF9zb3VyY2VzIHRhcmdldAorCithZGRTdHJpY3RTdWJkaXJPcmRl
ckJldHdlZW4oZGVyaXZlZF9zb3VyY2VzLCB0YXJnZXQpCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9xd2t2aWV3L1RhcmdldC5wcmkgYi9Ub29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L1Rh
cmdldC5wcmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ3NzM4MAotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F3a3ZpZXcvVGFyZ2V0LnByaQpAQCAt
MCwwICsxLDE2IEBACitURU1QTEFURSA9IGFwcAorVEFSR0VUID0gTWluaUJyb3dzZXJfY2IKKwor
SEVBREVSUyArPSBcCisgICAgVmlldy5oCisKK1NPVVJDRVMgKz0gXAorICAgIFZpZXcuY3BwCisK
K0RFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCisKK1FUID0gY29yZSBndWkgbmV0d29y
ayB3ZWJraXQKKworbG9hZChmZWF0dXJlcykKKworV0VCS0lUICs9IHd0ZiBqYXZhc2NyaXB0Y29y
ZSB3ZWJraXQyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L1ZpZXcuY3Bw
IGIvVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9WaWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5kMTBjYjYwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXdrdmlldy9WaWV3LmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworI2luY2x1ZGUgIlZpZXcuaCIKKworI2luY2x1ZGUgPFFEZWJ1Zz4KKyNpbmNsdWRlIDxR
RXhwb3NlRXZlbnQ+CisjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFFLZXlF
dmVudD4KKyNpbmNsdWRlIDxRTWF0cml4NHg0PgorI2luY2x1ZGUgPFFSZXNpemVFdmVudD4KKyNp
bmNsdWRlIDxRVXJsPgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2Vz
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tTdHJpbmdRdC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tVUkwuaD4KKworCitz
dGF0aWMgV0tDb250ZXh0UmVmIGNyZWF0ZVdlYkNvbnRleHQoKQoreworICAgIHJldHVybiBXS0Nv
bnRleHRDcmVhdGUoKTsKK30KKworc3RhdGljIFdLUGFnZUdyb3VwUmVmIGNyZWF0ZVdlYlBhZ2VH
cm91cChjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cCA9V0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ0NyZWF0ZVdpdGhRU3Ry
aW5nKG5hbWUpKTsKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzID0gV0tQYWdlR3Jv
dXBHZXRQcmVmZXJlbmNlcyhwYWdlR3JvdXApOworICAgIFdLUHJlZmVyZW5jZXNTZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJl
bmNlc1NldEZvcmNlQ29tcG9zaXRpbmdNb2RlKHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICBXS1By
ZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisK
KyAgICByZXR1cm4gcGFnZUdyb3VwOworfQorCitWaWV3Ojp+VmlldygpCit7CisgICAgZGVsZXRl
IG1fY29udGV4dDsKKyAgICBkZWxldGUgbV93ZWJWaWV3OworfQorCitWaWV3OjpWaWV3KGNvbnN0
IFFTdHJpbmcmIHVybCkKKyAgICA6IG1fdXJsKHVybCkKKyAgICAsIG1fYWN0aXZlKGZhbHNlKQor
eworICAgIHNldFN1cmZhY2VUeXBlKE9wZW5HTFN1cmZhY2UpOworICAgIHNldEdlb21ldHJ5KDUw
LCA1MCwgOTgwLCA2MDApOworICAgIGNyZWF0ZSgpOworCisgICAgbV9jb250ZXh0ID0gbmV3IFFP
cGVuR0xDb250ZXh0OworICAgIG1fY29udGV4dC0+Y3JlYXRlKCk7CisKKyAgICBtX3dlYlZpZXcg
PSBXZWJLaXQ6OlFXS1ZpZXc6OmNyZWF0ZShjcmVhdGVXZWJDb250ZXh0KCksIGNyZWF0ZVdlYlBh
Z2VHcm91cChRU3RyaW5nKCkpLCB0aGlzKTsKKyAgICBtX3dlYlZpZXctPmluaXRpYWxpemUoKTsK
KyAgICBXS1BhZ2VTZXRVc2VGaXhlZExheW91dChtX3dlYlZpZXctPnBhZ2VSZWYoKSwgdHJ1ZSk7
Cit9CisKKwordm9pZCBWaWV3OjpleHBvc2VFdmVudChRRXhwb3NlRXZlbnQqIGV2ZW50KQorewor
ICAgIGlmICghbV9hY3RpdmUpIHsKKyAgICAgICAgbV9hY3RpdmUgPSB0cnVlOworICAgICAgICBX
S1BhZ2VMb2FkVVJMKG1fd2ViVmlldy0+cGFnZVJlZigpLCBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhtX3VybC50b0FzY2lpKCkuZGF0YSgpKSk7CisKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRG
b2N1c2VkKHRydWUpOworICAgICAgICBtX3dlYlZpZXctPnNldFZpc2libGUodHJ1ZSk7CisgICAg
ICAgIG1fd2ViVmlldy0+c2V0QWN0aXZlKHRydWUpOworICAgIH0KK30KKwordm9pZCBWaWV3Ojpy
ZXNpemVFdmVudChRUmVzaXplRXZlbnQqIGV2ZW50KQoreworICAgIG1fd2ViVmlldy0+c2V0U2l6
ZShldmVudC0+c2l6ZSgpKTsKK30KKwordm9pZCBWaWV3Ojp0aW1lckV2ZW50KFFUaW1lckV2ZW50
KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnRpbWVySWQoKSA9PSBtX3BhaW50VGltZXIudGlt
ZXJJZCgpKSB7CisgICAgICAgIG1fcGFpbnRUaW1lci5zdG9wKCk7CisgICAgICAgIG1fY29udGV4
dC0+bWFrZUN1cnJlbnQodGhpcyk7CisgICAgICAgIG1fd2ViVmlldy0+cGFpbnQoUU1hdHJpeDR4
NCgpLCAxLCAwKTsKKyAgICAgICAgbV9jb250ZXh0LT5zd2FwQnVmZmVycyh0aGlzKTsKKyAgICB9
Cit9CisKK3ZvaWQgVmlldzo6dmlld05lZWRzRGlzcGxheShjb25zdCBRUmVjdCYpCit7CisgICAg
aWYgKCFtX3BhaW50VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV9wYWludFRpbWVyLnN0YXJ0
KDAsIHRoaXMpOworfQorCit2b2lkIFZpZXc6OnZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZShj
b25zdCBRQ3Vyc29yJiBjdXJzb3IpCit7CisgICAgUUd1aUFwcGxpY2F0aW9uOjpzZXRPdmVycmlk
ZUN1cnNvcihjdXJzb3IpOworfQorCit2b2lkIFZpZXc6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3Qg
UUtleUV2ZW50KiBldmVudCwgYm9vbCB3YXNIYW5kbGVkKQoreworICAgIGlmICh3YXNIYW5kbGVk
IHx8IGV2ZW50LT5pc0FjY2VwdGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAo
ZXZlbnQtPmtleSgpKSB7CisgICAgY2FzZSBRdDo6S2V5X0JhY2tzcGFjZTogeworICAgICAgICBX
S1BhZ2VSZWYgcGFnZSA9IG1fd2ViVmlldy0+cGFnZVJlZigpOworICAgICAgICBpZiAoV0tQYWdl
Q2FuR29CYWNrKHBhZ2UpKQorICAgICAgICAgICAgV0tQYWdlR29CYWNrKHBhZ2UpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgfQorfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCit7CisgICAgUUd1aUFwcGxpY2F0aW9uIGFwcChhcmdjLCBhcmd2KTsKKworICAgIFZpZXcg
dmlldyhhcHAuYXJndW1lbnRzKCkuc2l6ZSgpID4gMSA/IGFwcC5hcmd1bWVudHMoKS5hdCgxKSA6
IFFTdHJpbmc6OmZyb21Bc2NpaSgiaHR0cDovL3d3dy5nb29nbGUuY29tIikpOworICAgIHZpZXcu
c2hvdygpOworICAgIHJldHVybiBhcHAuZXhlYygpOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvcXdrdmlldy9WaWV3LmggYi9Ub29scy9NaW5pQnJvd3Nlci9xd2t2aWV3L1ZpZXcu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWVmYmI0Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXdrdmlldy9WaWV3LmgKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0
cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBWaWV3X2gKKyNkZWZpbmUgVmlld19oCisK
KyNpbmNsdWRlIDxRQmFzaWNUaW1lcj4KKyNpbmNsdWRlIDxRT3BlbkdMQ29udGV4dD4KKyNpbmNs
dWRlIDxRV2luZG93PgorI2luY2x1ZGUgPFdlYktpdDIvcXdrdmlld19wLmg+CisKKworY2xhc3Mg
VmlldyA6ICBwdWJsaWMgUVdpbmRvdywgcHJpdmF0ZSBXZWJLaXQ6OlFXS1ZpZXdDbGllbnQgewor
cHVibGljOgorICAgIFZpZXcoY29uc3QgUVN0cmluZyYgdXJsKTsKKyAgICB+VmlldygpOworCitw
dWJsaWM6IC8vIFdLVmlld0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB2aWV3TmVlZHNEaXNwbGF5
KGNvbnN0IFFSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRTY3JvbGwoY29u
c3QgUVBvaW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzQ3Jhc2hlZCgpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc1JlbGF1bmNoZWQoKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdmlld0NvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6ZSYpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkQ3Vyc29yT3ZlcnJpZGUoY29uc3QgUUN1cnNvciYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IFFLZXlFdmVudCosIGJvb2wg
d2FzSGFuZGxlZCk7CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBR
VG91Y2hFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIHZvaWQgZXhwb3NlRXZlbnQoUUV4cG9zZUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHJl
c2l6ZUV2ZW50KFFSZXNpemVFdmVudCopOworCisgICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZl
bnQoUUtleUV2ZW50KiBldmVudCkgeyBtX3dlYlZpZXctPmtleUV2ZW50KGV2ZW50KTsgfQorICAg
IHZpcnR1YWwgdm9pZCBrZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50KiBldmVudCkgeyBtX3dlYlZp
ZXctPmtleUV2ZW50KGV2ZW50KTsgfQorCisgICAgdmlydHVhbCB2b2lkIG1vdXNlRG91YmxlQ2xp
Y2tFdmVudChRTW91c2VFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5tb3VzZUV2ZW50KGV2ZW50
LCAyKTsgfQorICAgIHZpcnR1YWwgdm9pZCBtb3VzZU1vdmVFdmVudChRTW91c2VFdmVudCogZXZl
bnQpIHsgbV93ZWJWaWV3LT5tb3VzZUV2ZW50KGV2ZW50KTsgfQorICAgIHZpcnR1YWwgdm9pZCBt
b3VzZVByZXNzRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+bW91c2VFdmVu
dChldmVudCwgMSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VSZWxlYXNlRXZlbnQoUU1vdXNl
RXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+bW91c2VFdmVudChldmVudCk7IH0KKworcHJpdmF0
ZToKKyAgICBXZWJLaXQ6OlFXS1ZpZXcqIG1fd2ViVmlldzsKKyAgICBRT3BlbkdMQ29udGV4dCAq
bV9jb250ZXh0OworICAgIFFCYXNpY1RpbWVyIG1fcGFpbnRUaW1lcjsKKworICAgIFFTdHJpbmcg
bV91cmw7CisgICAgYm9vbCBtX2FjdGl2ZTsKKworICAgIHZpcnR1YWwgdm9pZCB0aW1lckV2ZW50
KFFUaW1lckV2ZW50Kik7Cit9OworCisjZW5kaWYgLy8gVmlld19oCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggZGZmNzkwZS4uOTMzNzRiNiAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMTUyLDcgKzE1Miw4IEBAIF9QQVRIX1JV
TEVTX1NQRUNJRklFUiA9IFsKICAgICAgICItd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiJdKSwKIAog
ICAgICAoWyMgUXQncyBNaW5pQnJvd3NlciBoYXMgbm8gY29uZmlnLmgKLSAgICAgICAiVG9vbHMv
TWluaUJyb3dzZXIvcXQiXSwKKyAgICAgICAiVG9vbHMvTWluaUJyb3dzZXIvcXQiLAorICAgICAg
ICJUb29scy9NaW5pQnJvd3Nlci9xd2t2aWV3Il0sCiAgICAgICBbIi1idWlsZC9pbmNsdWRlIl0p
LAogCiAgICAgKFsjIFRoZSBRdCBBUElzIHVzZSBRdC9RTUwgbmFtaW5nIHN0eWxlLCB3aGljaCBp
bmNsdWRlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVG9vbHMucHJvIGIvVG9vbHMvVG9vbHMucHJvCmlu
ZGV4IDYzYzk5M2IuLjg3MDZiZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rvb2xzLnBybworKysgYi9U
b29scy9Ub29scy5wcm8KQEAgLTE2LDcgKzE2LDggQEAgbG9hZChmZWF0dXJlcykKIH0KIAogIW5v
X3dlYmtpdDIgewotICAgIFNVQkRJUlMgKz0gTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJv
CisgICAgU1VCRElSUyArPSBNaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8gXAorICAgICAg
ICAgICAgICAgTWluaUJyb3dzZXIvcXdrdmlldy9NaW5pQnJvd3Nlcl9jYi5wcm8KICAgICAjIFdU
UidzIEluamVjdGVkQnVuZGxlIGRlcGVuZHMgY3VycmVudGx5IG9uIFdLMSdzIER1bXBSZW5kZXJU
cmVlU3VwcG9ydAogICAgICFub193ZWJraXQxOiBTVUJESVJTICs9IFdlYktpdFRlc3RSdW5uZXIv
V2ViS2l0VGVzdFJ1bm5lci5wcm8KIH0KLS0gCjEuNy45LjUKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150279</attachid>
            <date>2012-06-29 17:35:39 -0700</date>
            <delta_ts>2012-06-29 19:28:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-WK2-Private-non-QtQuick-API.patch</filename>
            <type>text/plain</type>
            <size>49770</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSAzM2VjMmRjNTAwY2JmMGQ3YjhhNzY2NWI2MjE2MGY4MzkyNmE1YmU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogRnJpLCAyOSBKdW4gMjAxMiAxNzozMjo1MiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd
IFtRdF1bV0syXSBQcml2YXRlIG5vbi1RdFF1aWNrIEFQSQogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0NTMyCgouOgoKQVBJIHRlc3RzIGZvciBRUmF3V2ViVmlldy4K
ClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKKiBTb3VyY2UvdGVzdHMucHJpOgoKU291cmNl
L1dlYktpdDI6CgpBZGRpbmcgbmV3IHByaXZhdGUgbm9uLVF0UXVpY2sgQVBJLiBUaGlzIG5ldyBD
KysgQVBJIG1ha2VzIGl0IHBvc3NpYmxlCnRvIGhhdmUgY29udHJvbCBvdmVyIHRoZSBsb3dlciBs
ZXZlbHMgb2YgV2ViS2l0IHdpdGhvdXQgZ29pbmcgdmlhIFFNTC4KClJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgoKKiBUYXJnZXQucHJpOgoqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2
aWV3LmNwcDogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcC5oOiBB
ZGRlZC4KKiBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaDogQWRkZWQuCiog
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbDogQWRkZWQuCiogVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3JlZHNxdWFyZS5odG1sOiBBZGRlZC4KKiBVSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMS5wbmc6
IEFkZGVkLgoqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19u
b0JhY2tncm91bmQzLnBuZzogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jl
c291cmNlcy9xd2t2aWV3X3BhaW50LnBuZzogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xcmF3d2Vidmlldy9xcmF3d2Vidmlldy5wcm86IEFkZGVkLgoqIFVJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcXJhd3dlYnZpZXcvdHN0X3FyYXd3ZWJ2aWV3LmNwcDogQWRkZWQuCgpUb29sczoKCk1p
bmlCcm93c2VyUmF3IGlzIGFuIHVzYWdlIGV4YW1wbGUgZm9yIHRoZSBRUmF3V2ViVmlldyBBUEku
Ckl0IGlzIG9ubHkgYW4gZXhhbXBsZSBhbmQgaXMgbm90IGZ1bGx5IGltcGxlbWVudGVkLgoKUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIE1pbmlCcm93c2VyL3F0L3Jhdy9EZXJpdmVkU291
cmNlcy5wcmk6IEFkZGVkLgoqIE1pbmlCcm93c2VyL3F0L3Jhdy9NaW5pQnJvd3NlclJhdy5wcm86
IEFkZGVkLgoqIE1pbmlCcm93c2VyL3F0L3Jhdy9UYXJnZXQucHJpOiBBZGRlZC4KKiBNaW5pQnJv
d3Nlci9xdC9yYXcvVmlldy5jcHA6IEFkZGVkLgoqIE1pbmlCcm93c2VyL3F0L3Jhdy9WaWV3Lmg6
IEFkZGVkLgoqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weToKKiBUb29scy5wcm86
Ci0tLQogQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgIDExICsKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAyMiArKwogU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgICAzICsKIC4uLi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3
ZWJ2aWV3LmNwcCAgIHwgIDM4NSArKysrKysrKysrKysrKysrKysrKwogLi4uL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcC5oICAgfCAgMTAxICsrKysrCiAuLi4vV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaCB8ICAxMzIgKysrKysr
KwogLi4uL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9ibHVlc3F1YXJlLmh0bWwgICAgfCAg
ICA1ICsKIC4uLi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVkc3F1YXJlLmh0bWwgICAg
IHwgICAgNSArCiAuLi4vdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQx
LnBuZyB8ICBCaW4gMCAtPiA4MDEgYnl0ZXMKIC4uLi90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2
aWV3X25vQmFja2dyb3VuZDMucG5nIHwgIEJpbiAwIC0+IDgyNyBieXRlcwogLi4uL0FQSS9xdC90
ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X3BhaW50LnBuZyAgfCAgQmluIDAgLT4gNzI4IGJ5
dGVzCiAuLi4vQVBJL3F0L3Rlc3RzL3FyYXd3ZWJ2aWV3L3FyYXd3ZWJ2aWV3LnBybyAgICAgICB8
ICAgIDMgKwogLi4uL0FQSS9xdC90ZXN0cy9xcmF3d2Vidmlldy90c3RfcXJhd3dlYnZpZXcuY3Bw
ICAgfCAgMjMzICsrKysrKysrKysrKwogU291cmNlL3Rlc3RzLnByaSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgICAzICstCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKwogVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3
L0Rlcml2ZWRTb3VyY2VzLnByaSAgICAgICAgfCAgICA2ICsKIFRvb2xzL01pbmlCcm93c2VyL3F0
L3Jhdy9NaW5pQnJvd3NlclJhdy5wcm8gICAgICAgIHwgICAgOSArCiBUb29scy9NaW5pQnJvd3Nl
ci9xdC9yYXcvVGFyZ2V0LnByaSAgICAgICAgICAgICAgICB8ICAgMTYgKwogVG9vbHMvTWluaUJy
b3dzZXIvcXQvcmF3L1ZpZXcuY3BwICAgICAgICAgICAgICAgICAgfCAgMTM3ICsrKysrKysKIFRv
b2xzL01pbmlCcm93c2VyL3F0L3Jhdy9WaWV3LmggICAgICAgICAgICAgICAgICAgIHwgICA2NyAr
KysrCiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgICAgICAgICAgICB8
ICAgIDMgKy0KIFRvb2xzL1Rvb2xzLnBybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMSArCiAyMiBmaWxlcyBjaGFuZ2VkLCAxMTU4IGluc2VydGlvbnMoKyksIDIgZGVs
ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcC5oCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L2h0bWwvYmx1ZXNxdWFyZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3JlZHNxdWFyZS5odG1sCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNl
cy9xd2t2aWV3X25vQmFja2dyb3VuZDEucG5nCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X25vQmFj
a2dyb3VuZDMucG5nCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X3BhaW50LnBuZwogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXJhd3dlYnZp
ZXcvcXJhd3dlYnZpZXcucHJvCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy9xcmF3d2Vidmlldy90c3RfcXJhd3dlYnZpZXcuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L0Rlcml2ZWRTb3VyY2VzLnBy
aQogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9NaW5pQnJvd3Nl
clJhdy5wcm8KIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVGFy
Z2V0LnByaQogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9WaWV3
LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9WaWV3LmgK
CmRpZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYThmNDY1ZC4uMGY0NDJi
NSAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEyLTA2LTI5ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tpYS5jb20+CisK
KyAgICAgICAgW1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDUzMgorCisgICAgICAgIEFQSSB0
ZXN0cyBmb3IgUVJhd1dlYlZpZXcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBTb3VyY2UvdGVzdHMucHJpOgorCiAyMDEyLTA2LTI5ICBaYW4gRG9i
ZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWls
ZCBmaXggYWZ0ZXIgcjEyMTUxOCwgYWRkaW5nIGEgbWlzc2luZyBzeW1ib2wgdG8gc3ltYm9scy5m
aWx0ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGFlMTg4OS4uODYxN2EyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDEyLTA2LTI5ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29zdGluaUBub2tp
YS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVpY2sgQVBJCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NDUzMgorCisgICAg
ICAgIEFkZGluZyBuZXcgcHJpdmF0ZSBub24tUXRRdWljayBBUEkuIFRoaXMgbmV3IEMrKyBBUEkg
bWFrZXMgaXQgcG9zc2libGUKKyAgICAgICAgdG8gaGF2ZSBjb250cm9sIG92ZXIgdGhlIGxvd2Vy
IGxldmVscyBvZiBXZWJLaXQgd2l0aG91dCBnb2luZyB2aWEgUU1MLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHA6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3AuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9ibHVlc3F1YXJlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRtbDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3
X25vQmFja2dyb3VuZDEucG5nOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL2h0bWwvcmVzb3VyY2VzL3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMy5wbmc6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19wYWlu
dC5wbmc6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXJhd3dlYnZp
ZXcvcXJhd3dlYnZpZXcucHJvOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FyYXd3ZWJ2aWV3L3RzdF9xcmF3d2Vidmlldy5jcHA6IEFkZGVkLgorCiAyMDEyLTA2LTI5
ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAg
ICAgW1dLMl0gTW92ZSBpbnRlbnQgZGVsaXZlcnkgY29kZSBmcm9tIHRoZSBmcmFtZSB0byB0aGUg
cGFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkKaW5kZXggZDgyN2FkYi4uMjcwMDU4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0y
MDEsNiArMjAxLDggQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2tu
ZXR3b3JrcmVxdWVzdF9wLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrdXJsc2NoZW1l
ZGVsZWdhdGVfcC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJraXR0ZXN0X3AuaCBcCisg
ICAgVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcC5oIFwKKyAgICBVSVByb2Nlc3Mv
QVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaCBcCiAgICAgVUlQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBcCiAgICAgVUlQcm9jZXNzL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIFwKICAgICBVSVByb2Nl
c3MvQXV0aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5oIFwKQEAgLTU1MSw2ICs1NTMsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3VybHNjaGVtZWRlbGVnYXRl
LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9xd2VicHJlZmVyZW5jZXMuY3BwIFwKICAgICBV
SVByb2Nlc3MvQVBJL3F0L3F3ZWJraXR0ZXN0LmNwcCBcCisgICAgVUlQcm9jZXNzL0FQSS9xdC9y
YXcvcXJhd3dlYnZpZXcuY3BwIFwKICAgICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vV2ViQ3JlZGVudGlhbC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjMzMTVjYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKQEAgLTAsMCArMSwzODUgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJxcmF3
d2Vidmlld19wLmgiCisjaW5jbHVkZSAicXJhd3dlYnZpZXdfcF9wLmgiCisKKyNpbmNsdWRlICJD
dXJzb3IuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5SW1wbC5oIgorI2luY2x1ZGUgIkxh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2
ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2
ZVdlYlRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViTGF5ZXJUcmVlUmVuZGVyZXIuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKyNp
bmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgorCisjaW5jbHVkZSA8V2ViS2l0Mi9xcmF3d2Vidmll
d19wLmg+CisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21O
YXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZVZpZXdwb3J0
UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmhhbmRs
ZURvd25sb2FkUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2FkKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpoYW5kbGVB
dXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBjb25z
dCBTdHJpbmcmIHJlYWxtLCBjb25zdCBTdHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcm
IHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3b3JkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpoYW5kbGVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlv
blJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgYm9vbCYgaWdub3JlRXJyb3JzKQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpoYW5k
bGVQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUsIHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUsIFN0cmlu
ZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1Jl
ZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
VW5kb09yUmVkbykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCitib29sIFFSYXdXZWJW
aWV3UHJpdmF0ZTo6Y2FuVW5kb1JlZG8oV2ViS2l0OjpXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8g
dW5kb09yUmVkbykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmV4ZWN1dGVVbmRvUmVkbyhXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKK1dlYkNvcmU6OkZsb2F0UmVjdCBRUmF3V2ViVmlld1ByaXZhdGU6OmNvbnZlcnRU
b0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiByZWN0OworfQorCitXZWJDb3JlOjpGbG9hdFJlY3Qg
UVJhd1dlYlZpZXdQcml2YXRlOjpjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiByZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHJlY3Q7
Cit9CisKK1dlYkNvcmU6OkludFBvaW50IFFSYXdXZWJWaWV3UHJpdmF0ZTo6c2NyZWVuVG9XaW5k
b3coY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIHBvaW50OworfQorCitXZWJDb3JlOjpJbnRSZWN0IFFSYXdXZWJWaWV3
UHJpdmF0ZTo6d2luZG93VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiByZWN0OworfQorCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0JikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6
ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUoY29uc3QgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0JikKK3sKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
Cit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVGV4dElucHV0U3RhdGUoKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCit2b2lk
IFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZG9uZVdpdGhHZXN0dXJlRXZlbnQoY29uc3QgV2ViS2l0OjpX
ZWJHZXN0dXJlRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpkaXNw
bGF5VmlldygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBRUmF3V2ViVmll
d1ByaXZhdGU6OnNjcm9sbFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVjdCwg
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpmbGFzaEJhY2tpbmdTdG9yZVVw
ZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZGlkRmluZFpvb21hYmxlQXJl
YShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBhcmVhKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXdQ
cml2YXRlOjpzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCBoaWRkZW5VbnRpbE1v
dXNlTW92ZXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBRUmF3V2ViVmll
d1ByaXZhdGU6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYgbmV3
VG9vbHRpcCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFFSYXdXZWJWaWV3
UHJpdmF0ZTo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwgUGFz
c1JlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eT4g
UVJhd1dlYlZpZXdQcml2YXRlOjpjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSogd2ViUGFnZVByb3h5KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJu
IFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eT4oKTsKK30KKworUGFzc1JlZlB0
cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk+IFFSYXdXZWJWaWV3UHJpdmF0ZTo6Y3JlYXRl
Q29udGV4dE1lbnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5PigpOworfQorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitQ
YXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHk+IFFSYXdXZWJWaWV3UHJpdmF0
ZTo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBX
ZWJDb3JlOjpDb2xvciYgaW50aWFsQ29sb3IpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICByZXR1cm4gUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yQ2hvb3NlclByb3h5PigpOworfQor
I2VuZGlmCisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zKQoreworICAgIG1fY2xpZW50LT52aWV3UmVxdWVz
dGVkU2Nyb2xsKHBvcyk7CisKK30KK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpwcm9jZXNzRGlk
Q3Jhc2goKQoreworICAgIG1fY2xpZW50LT52aWV3UHJvY2Vzc0NyYXNoZWQoKTsKK30KKwordm9p
ZCBRUmF3V2ViVmlld1ByaXZhdGU6OmRpZFJlbGF1bmNoUHJvY2VzcygpCit7CisgICAgbV9jbGll
bnQtPnZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpOworfQorCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0
ZTo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQorewor
ICAgIG1fY2xpZW50LT52aWV3TmVlZHNEaXNwbGF5KHJlY3QpOworfQorCit2b2lkIFFSYXdXZWJW
aWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUm
IG5ld1NpemUpCit7CisgICAgbV9jbGllbnQtPnZpZXdDb250ZW50U2l6ZUNoYW5nZWQobmV3U2l6
ZSk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpzZXRDdXJzb3IoY29uc3QgV2ViQ29y
ZTo6Q3Vyc29yJiBjdXJzb3IpCit7CisgICAgbV9jbGllbnQtPnZpZXdSZXF1ZXN0ZWRDdXJzb3JP
dmVycmlkZSgqY3Vyc29yLnBsYXRmb3JtQ3Vyc29yKCkpOworfQorCisjaWYgRU5BQkxFKFRPVUNI
X0VWRU5UUykKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpkb25lV2l0aFRvdWNoRXZlbnQoY29u
c3QgV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRs
ZWQpCit7CisgICAgbV9jbGllbnQtPmRvbmVXaXRoVG91Y2hFdmVudChldmVudC5uYXRpdmVFdmVu
dCgpLCB3YXNFdmVudEhhbmRsZWQpOworfQorI2VuZGlmCisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2
YXRlOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVu
dCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAgIG1fY2xpZW50LT5kb25lV2l0
aEtleUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIHdhc0V2ZW50SGFuZGxlZCk7Cit9CisKK1Bh
c3NPd25QdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBRUmF3V2ViVmlld1ByaXZhdGU6OmNy
ZWF0ZURyYXdpbmdBcmVhUHJveHkoKQoreworICAgIHJldHVybiBXZWJLaXQ6OkRyYXdpbmdBcmVh
UHJveHlJbXBsOjpjcmVhdGUobV93ZWJQYWdlUHJveHkuZ2V0KCkpOworfQorCitRUmF3V2ViVmll
d1ByaXZhdGU6OlFSYXdXZWJWaWV3UHJpdmF0ZShXZWJLaXQ6OldlYkNvbnRleHQqIGNvbnRleHQs
IFdlYktpdDo6V2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIFFSYXdXZWJWaWV3Q2xpZW50KiBjbGll
bnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3dlYlBhZ2VQcm94eShjb250ZXh0
LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHBhZ2VHcm91cCkpCit7CisgICAgbV93ZWJQYWdlUHJveHkt
PnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVl
KTsKK30KKworUVJhd1dlYlZpZXdQcml2YXRlOjp+UVJhd1dlYlZpZXdQcml2YXRlKCkKK3sKK30K
KworUVJhd1dlYlZpZXc6OlFSYXdXZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFFSYXdXZWJWaWV3Q2xpZW50KiBjbGllbnQpCisgICAg
OiBkKG5ldyBRUmF3V2ViVmlld1ByaXZhdGUoV2ViS2l0Ojp0b0ltcGwoY29udGV4dFJlZiksIFdl
YktpdDo6dG9JbXBsKHBhZ2VHcm91cFJlZiksIGNsaWVudCkpCit7Cit9CisKK1FSYXdXZWJWaWV3
Ojp+UVJhd1dlYlZpZXcoKQoreworICAgIGRlbGV0ZSBkOworfQorCit2b2lkIFFSYXdXZWJWaWV3
OjpjcmVhdGUoKQoreworICAgIGQtPm1fd2ViUGFnZVByb3h5LT5pbml0aWFsaXplV2ViUGFnZSgp
OworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpzZXRUcmFuc3BhcmVudEJhY2tncm91bmQoYm9vbCB2
YWx1ZSkKK3sKKyAgICBkLT5tX3dlYlBhZ2VQcm94eS0+c2V0RHJhd3NUcmFuc3BhcmVudEJhY2tn
cm91bmQodmFsdWUpOworfQorCitib29sIFFSYXdXZWJWaWV3Ojp0cmFuc3BhcmVudEJhY2tncm91
bmQoKSBjb25zdAoreworICAgIHJldHVybiBkLT5tX3dlYlBhZ2VQcm94eS0+ZHJhd3NUcmFuc3Bh
cmVudEJhY2tncm91bmQoKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6c2V0RHJhd0JhY2tncm91
bmQoYm9vbCB2YWx1ZSkKK3sKKyAgICBkLT5tX3dlYlBhZ2VQcm94eS0+c2V0RHJhd3NCYWNrZ3Jv
dW5kKHZhbHVlKTsKK30KKworYm9vbCBRUmF3V2ViVmlldzo6ZHJhd0JhY2tncm91bmQoKSBjb25z
dAoreworICAgIHJldHVybiBkLT5tX3dlYlBhZ2VQcm94eS0+ZHJhd3NCYWNrZ3JvdW5kKCk7Cit9
CisKK2Jvb2wgUVJhd1dlYlZpZXc6OmlzRm9jdXNlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGQt
Pm1fZm9jdXNlZDsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6c2V0Rm9jdXNlZChib29sIGZvY3Vz
ZWQpCit7CisgICAgZC0+bV9mb2N1c2VkID0gZm9jdXNlZDsKKyAgICBkLT5tX3dlYlBhZ2VQcm94
eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5OjpWaWV3SXNGb2N1c2Vk
KTsKK30KKworYm9vbCBRUmF3V2ViVmlldzo6aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZC0+bV92aXNpYmxlOworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpzZXRWaXNpYmxlKGJvb2wg
dmlzaWJsZSkKK3sKKyAgICBkLT5tX3Zpc2libGUgPSB2aXNpYmxlOworICAgIGQtPm1fd2ViUGFn
ZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHk6OlZpZXdJc1Zp
c2libGUpOworfQorCitib29sIFFSYXdXZWJWaWV3Ojppc0FjdGl2ZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGQtPm1fYWN0aXZlOworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpzZXRBY3RpdmUoYm9v
bCBhY3RpdmUpCit7CisgICAgZC0+bV9hY3RpdmUgPSBhY3RpdmU7CisgICAgZC0+bV93ZWJQYWdl
UHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Vmlld1dpbmRv
d0lzQWN0aXZlKTsKK30KKworUVNpemUgUVJhd1dlYlZpZXc6OnNpemUoKSBjb25zdAoreworICAg
IHJldHVybiBkLT5tX3NpemU7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OnNldFNpemUoY29uc3Qg
UVNpemUmIHNpemUpCit7CisgICAgZC0+bV9zaXplID0gc2l6ZTsKKyAgICBkLT5tX3dlYlBhZ2VQ
cm94eS0+c2V0Vmlld3BvcnRTaXplKHNpemUpOworCisKKyAgICBXZWJLaXQ6OkRyYXdpbmdBcmVh
UHJveHkqIGRyYXdpbmdBcmVhID0gZC0+bV93ZWJQYWdlUHJveHktPmRyYXdpbmdBcmVhKCk7Cisg
ICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisKKyAgICBkcmF3aW5nQXJl
YS0+c2V0U2l6ZShkLT5tX3NpemUsIFdlYkNvcmU6OkludFNpemUoKSk7CisgICAgZHJhd2luZ0Fy
ZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVjdChXZWJDb3JlOjpJbnRQ
b2ludCgpLCBkLT5tX3NpemUpLCAxIC8qc2NhbGUqLywgV2ViQ29yZTo6RmxvYXRQb2ludCgpKTsK
K30KKworV0tQYWdlUmVmIFFSYXdXZWJWaWV3OjpwYWdlUmVmKCkKK3sKKyAgICByZXR1cm4gdG9B
UEkoZC0+bV93ZWJQYWdlUHJveHkuZ2V0KCkpOworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpwYWlu
dChjb25zdCBRTWF0cml4NHg0JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIHVuc2lnbmVkIHBh
aW50RmxhZ3MpCit7CisgICAgV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5KiBkcmF3aW5nQXJlYSA9
IGQtPm1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAgIGlmICghZHJhd2luZ0FyZWEp
CisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eSogY29vcmRpbmF0b3JQcm94eSA9IGRyYXdpbmdBcmVhLT5sYXllclRyZWVDb29yZGluYXRvclBy
b3h5KCk7CisgICAgaWYgKCFjb29yZGluYXRvclByb3h5KQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJLaXQ6OldlYkxheWVyVHJlZVJlbmRlcmVyKiByZW5kZXJlciA9IGNvb3JkaW5hdG9yUHJv
eHktPmxheWVyVHJlZVJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgcmVuZGVyZXItPnNldEFjdGl2ZSh0cnVlKTsKKyAgICByZW5kZXJlci0+c3lu
Y1JlbW90ZUNvbnRlbnQoKTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0KDAsIDAsIGQt
Pm1fc2l6ZS53aWR0aCgpLCBkLT5tX3NpemUuaGVpZ2h0KCkpOworCisgICAgcmVuZGVyZXItPnBh
aW50VG9DdXJyZW50R0xDb250ZXh0KHRyYW5zZm9ybSwgb3BhY2l0eSwgcmVjdCwgcGFpbnRGbGFn
cyk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OmtleUV2ZW50KFFLZXlFdmVudCogZXZlbnQpCit7
CisgICAgZC0+bV93ZWJQYWdlUHJveHktPmhhbmRsZUtleWJvYXJkRXZlbnQoV2ViS2l0OjpOYXRp
dmVXZWJLZXlib2FyZEV2ZW50KGV2ZW50KSk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6Om1vdXNl
RXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50LCBpbnQgY2xpY2tDb3VudCkKK3sKKyAgICBkLT5tX3dl
YlBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChXZWJLaXQ6Ok5hdGl2ZVdlYk1vdXNlRXZlbnQo
ZXZlbnQsIFFUcmFuc2Zvcm0oKSwgY2xpY2tDb3VudCkpOworfQorCit2b2lkIFFSYXdXZWJWaWV3
Ojp3aGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBldmVudCkKK3sKKyAgICBkLT5tX3dlYlBhZ2VQcm94
eS0+aGFuZGxlV2hlZWxFdmVudChXZWJLaXQ6Ok5hdGl2ZVdlYldoZWVsRXZlbnQoZXZlbnQsIFFU
cmFuc2Zvcm0oKSkpOworfQorCit2b2lkIFFSYXdXZWJWaWV3Ojp0b3VjaEV2ZW50KFFUb3VjaEV2
ZW50KiBldmVudCkKK3sKKyAgICBkLT5tX3dlYlBhZ2VQcm94eS0+aGFuZGxlVG91Y2hFdmVudChX
ZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQoZXZlbnQsIFFUcmFuc2Zvcm0oKSkpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdf
cC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNWJkM2MKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19w
LmgKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKy8qCisgICAgVGhpcyBm
aWxlIGlzIG5vdCBwYXJ0IG9mIHRoZSBwdWJsaWMgUXQgQXBpLiBJdCBtYXkgY2hhbmdlIHdpdGhv
dXQgbm90aWNlIGF0IGFueSB0aW1lIGluIGZ1dHVyZS4KKyAgICBXZSBtYWtlIG5vIGNvbW1pdG1l
bnQgcmVnYXJkaW5nIHNvdXJjZSBjb21wYXRpYmlsaXR5IG9yIGJpbmFyeSBjb21wYXRpYmlsaXR5
LgorKi8KKworI2lmbmRlZiBxcmF3d2Vidmlld19wX2gKKyNkZWZpbmUgcXJhd3dlYnZpZXdfcF9o
CisKKyNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29u
dGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S1BhZ2VHcm91cC5oPgorCitjbGFzcyBRUmVjdDsKK2NsYXNzIFFSZWN0RjsKK2NsYXNzIFFQb2lu
dDsKK2NsYXNzIFFTaXplOworY2xhc3MgUUtleUV2ZW50OworY2xhc3MgUU1vdXNlRXZlbnQ7Citj
bGFzcyBRV2hlZWxFdmVudDsKK2NsYXNzIFFUb3VjaEV2ZW50OworY2xhc3MgUVVybDsKK2NsYXNz
IFFNYXRyaXg0eDQ7CitjbGFzcyBRQ3Vyc29yOworCitjbGFzcyBRUmF3V2ViVmlld1ByaXZhdGU7
CisKK2NsYXNzIFFSYXdXZWJWaWV3Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5RUmF3
V2ViVmlld0NsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHZpZXdOZWVkc0Rpc3BsYXko
Y29uc3QgUVJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRTY3JvbGwo
Y29uc3QgUVBvaW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vzc0NyYXNoZWQo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgdmlld0NvbnRlbnRTaXplQ2hhbmdlZChjb25zdCBRU2l6ZSYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNvbnN0IFFDdXJz
b3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgUUtleUV2
ZW50KiwgYm9vbCB3YXNIYW5kbGVkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoVG91
Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgPSAwOworfTsKKwor
Y2xhc3MgUVdFQktJVF9FWFBPUlQgUVJhd1dlYlZpZXcKK3sKK3B1YmxpYzoKKyAgICBRUmF3V2Vi
VmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmLCBRUmF3V2ViVmlld0NsaWVudCopOwor
ICAgIH5RUmF3V2ViVmlldygpOworCisgICAgdm9pZCBjcmVhdGUoKTsKKworICAgIHZvaWQgc2V0
U2l6ZShjb25zdCBRU2l6ZSYpOworICAgIFFTaXplIHNpemUoKSBjb25zdDsKKworICAgIHZvaWQg
c2V0Rm9jdXNlZChib29sKTsKKyAgICBib29sIGlzRm9jdXNlZCgpIGNvbnN0OworCisgICAgdm9p
ZCBzZXRWaXNpYmxlKGJvb2wpOworICAgIGJvb2wgaXNWaXNpYmxlKCkgY29uc3Q7CisKKyAgICB2
b2lkIHNldEFjdGl2ZShib29sKTsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3Q7CisKKyAgICB2
b2lkIHNldFRyYW5zcGFyZW50QmFja2dyb3VuZChib29sKTsKKyAgICBib29sIHRyYW5zcGFyZW50
QmFja2dyb3VuZCgpIGNvbnN0OworCisgICAgdm9pZCBzZXREcmF3QmFja2dyb3VuZChib29sKTsK
KyAgICBib29sIGRyYXdCYWNrZ3JvdW5kKCkgY29uc3Q7CisKKyAgICB2b2lkIHBhaW50KGNvbnN0
IFFNYXRyaXg0eDQmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgdW5zaWduZWQgcGFpbnRGbGFn
cyk7CisKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZigpOworCisgICAgdm9pZCBrZXlFdmVudChRS2V5
RXZlbnQqKTsKKyAgICB2b2lkIG1vdXNlRXZlbnQoUU1vdXNlRXZlbnQqLCBpbnQgY2xpY2tDb3Vu
dCA9IDApOworICAgIHZvaWQgd2hlZWxFdmVudChRV2hlZWxFdmVudCopOworICAgIHZvaWQgdG91
Y2hFdmVudChRVG91Y2hFdmVudCopOworCitwcml2YXRlOgorICAgIFFSYXdXZWJWaWV3UHJpdmF0
ZSogZDsKK307CisKKyNlbmRpZiAvLyBxcmF3d2Vidmlld19wX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3BfcC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjExM2M4YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3BfcC5oCkBAIC0w
LDAgKzEsMTMyIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisvKgorICAgIFRoaXMgZmlsZSBpcyBu
b3QgcGFydCBvZiB0aGUgcHVibGljIFF0IEFwaS4gSXQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGlj
ZSBhdCBhbnkgdGltZSBpbiBmdXR1cmUuCisgICAgV2UgbWFrZSBubyBjb21taXRtZW50IHJlZ2Fy
ZGluZyBzb3VyY2UgY29tcGF0aWJpbGl0eSBvciBiaW5hcnkgY29tcGF0aWJpbGl0eS4KKyovCisK
KyNpZm5kZWYgcXJhd3dlYnZpZXdfcF9wX2gKKyNkZWZpbmUgcXJhd3dlYnZpZXdfcF9wX2gKKwor
I2luY2x1ZGUgIlBhZ2VDbGllbnQuaCIKKworI2luY2x1ZGUgInFyYXd3ZWJ2aWV3X3AuaCIKKyNp
bmNsdWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJv
eHkuaCIKKworY2xhc3MgUVJhd1dlYlZpZXdQcml2YXRlIDogcHVibGljIFdlYktpdDo6UGFnZUNs
aWVudCB7CitwdWJsaWM6CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZUNsb3NlZCgpIHsgfQorCisg
ICAgdmlydHVhbCB2b2lkIHNldEZpbmRJbmRpY2F0b3IoUGFzc1JlZlB0cjxXZWJLaXQ6OkZpbmRJ
bmRpY2F0b3I+LCBib29sIGZhZGVPdXQsIGJvb2wgYW5pbWF0ZSkgeyB9CisgICAgdmlydHVhbCB2
b2lkIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoYm9vbCB1c2VDdXN0b21SZXByZXNlbnRhdGlv
bikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tUmVw
cmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgQ29yZUlQ
Qzo6RGF0YVJlZmVyZW5jZSYpIHsgfQorICAgIHZpcnR1YWwgZG91YmxlIGN1c3RvbVJlcHJlc2Vu
dGF0aW9uWm9vbUZhY3RvcigpIHsgcmV0dXJuIDE7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vz
dG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKGRvdWJsZSkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZVNjcm9sbGJhcnNGb3JNYWluRnJhbWUoKSBjb25zdCB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZmluZFN0cmluZ0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3RyaW5nJiwgV2Vi
S2l0OjpGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIGNvdW50U3RyaW5nTWF0Y2hlc0luQ3VzdG9tUmVwcmVzZW50YXRpb24oY29uc3QgU3Ry
aW5nJiwgV2ViS2l0OjpGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgeyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVz
KGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cik7CisgICAgdmlydHVhbCB2
b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRvd25sb2Fk
KTsKKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVz
dChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBjb25zdCBTdHJpbmcmIHJlYWxtLCBjb25zdCBTdHJp
bmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3b3Jk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQ2VydGlmaWNhdGVWZXJpZmljYXRpb25SZXF1ZXN0
KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGJvb2wmIGlnbm9yZUVycm9ycyk7CisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZVByb3h5QXV0aGVudGljYXRpb25SZXF1aXJlZFJlcXVlc3QoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSwgdWludDE2X3QgcG9ydCwgY29uc3QgU3RyaW5nJiBwcmVmaWxsZWRVc2Vy
bmFtZSwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBwYXNzd29yZCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYktpdDo6V2ViRWRpdENvbW1h
bmRQcm94eT4sIFdlYktpdDo6V2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFs
IGJvb2wgY2FuVW5kb1JlZG8oV2ViS2l0OjpXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09y
UmVkbyk7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKTsKKworICAgIHZpcnR1YWwgV2ViQ29yZTo6Rmxv
YXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVj
dCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRQ
b2ludCBzY3JlZW5Ub1dpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQpOworICAg
IHZpcnR1YWwgV2ViQ29yZTo6SW50UmVjdCB3aW5kb3dUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiByZWN0KTsKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICB2
aXJ0dWFsIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBXZWJLaXQ6
OkxheWVyVHJlZUNvbnRleHQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKGNvbnN0IFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4dCYpOworI2VuZGlmIC8vIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0
SW5wdXRTdGF0ZSgpOworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICB2aXJ0dWFsIHZv
aWQgZG9uZVdpdGhHZXN0dXJlRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQmIGV2
ZW50LCBib29sIHdhc0V2ZW50SGFuZGxlZCk7CisjZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgZGlz
cGxheVZpZXcoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVmlldyhjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBzY3JvbGxSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzY3JvbGxPZmZzZXQp
OworCisgICAgdmlydHVhbCB2b2lkIGZsYXNoQmFja2luZ1N0b3JlVXBkYXRlcyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluZFpvb21hYmxl
QXJlYShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGFyZ2V0LCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBhcmVhKTsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNl
TW92ZXMoYm9vbCBoaWRkZW5VbnRpbE1vdXNlTW92ZXMpOworICAgIHZpcnR1YWwgdm9pZCB0b29s
VGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG5ld1Rvb2x0aXApOworCisg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0RHJhZyhjb25zdCBXZWJDb3JlOjpEcmFnRGF0YSYgZHJhZ0Rh
dGEsIFBhc3NSZWZQdHI8V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSk7CisKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9w
dXBNZW51UHJveHkoV2ViS2l0OjpXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSk7CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29udGV4dE1lbnVQcm94eT4gY3JlYXRlQ29udGV4
dE1lbnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5KTsKKworI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6Oldl
YkNvbG9yQ2hvb3NlclByb3h5PiBjcmVhdGVDb2xvckNob29zZXJQcm94eShXZWJLaXQ6OldlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBpbnRpYWxDb2xvcik7CisjZW5kaWYKKwor
ICAgIFFSYXdXZWJWaWV3UHJpdmF0ZShXZWJLaXQ6OldlYkNvbnRleHQqLCBXZWJLaXQ6OldlYlBh
Z2VHcm91cCosIFFSYXdXZWJWaWV3Q2xpZW50Kik7CisgICAgflFSYXdXZWJWaWV3UHJpdmF0ZSgp
OworCisgICAgLy8gUGFnZUNsaWVudAorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYktpdDo6
RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpOworCisgICAgdmlydHVh
bCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3Mp
OworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQ3Jhc2goKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVsYXVuY2hQcm9jZXNzKCk7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZXdOZWVkc0Rpc3Bs
YXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CisgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaXplKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOworCisgICAgdmly
dHVhbCBib29sIGlzVmlld0ZvY3VzZWQoKSB7IHJldHVybiBtX2ZvY3VzZWQ7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpIHsgcmV0dXJuIG1fdmlzaWJsZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSB7IHJldHVybiBtX2FjdGl2ZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBpc1ZpZXdJbldpbmRvdygpIHsgcmV0dXJuIHRydWU7IH0gLy8gRklYTUUKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSB7IHJldHVybiBtX3NpemU7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IFdlYktpdDo6TmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKTsKKyNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgV2Vi
S2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpOworI2VuZGlm
CisKKworICAgIGJvb2wgbV9mb2N1c2VkOworICAgIGJvb2wgbV92aXNpYmxlOworICAgIGJvb2wg
bV9hY3RpdmU7CisgICAgUVNpemUgbV9zaXplOworCisgICAgUVJhd1dlYlZpZXdDbGllbnQqIG1f
Y2xpZW50OworICAgIFdURjo6UmVmUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBtX3dlYlBhZ2VQ
cm94eTsKKworcHJpdmF0ZToKKyAgICBRUmF3V2ViVmlldyogcTsKK307CisKKyNlbmRpZiAvLyBx
cmF3d2Vidmlld19wX3BfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvaHRtbC9ibHVlc3F1YXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjRiNjM5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9ibHVlc3F1YXJlLmh0bWwKQEAgLTAsMCArMSw1
IEBACis8Ym9keSBzdHlsZT0ibWFyZ2luOjYwcHgiPgorICAgIDx0YWJsZSBzdHlsZT0iYm9yZGVy
OjEwcHggc29saWQgYmx1ZTsgd2lkdGg6ODBweDsgaGVpZ2h0OjgwcHgiPgorICAgICAgICA8dHI+
PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3JlZHNxdWFyZS5odG1s
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3JlZHNxdWFyZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3MGQyOTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVk
c3F1YXJlLmh0bWwKQEAgLTAsMCArMSw1IEBACis8Ym9keSBzdHlsZT0ibWFyZ2luOjIwcHgiPgor
ICAgIDx0YWJsZSBzdHlsZT0iYm9yZGVyOjEwcHggc29saWQgcmVkOyB3aWR0aDoxNjBweDsgaGVp
Z2h0OjE2MHB4Ij4KKyAgICAgICAgPHRyPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICAgPC90YWJs
ZT4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQxLnBuZyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0Jh
Y2tncm91bmQxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMjkzZjQ0OWViOTg5ODU4Y2UxN2NkYjI2NDU5M2Ux
MzMzNjU3OTkzCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA4MDEKemNtZUFTQE4/KG9sSHlgdVZC
cSFpYTB2cF5DcVM1azRNP3R5U1RfJHl1QHBPYmhId0J1NE0kMWBrazQ3KjVuMFRACnp6O15fTThL
LUxWTmkjNG85cmtvXzQ1XnMmX1VeJGY1bDBiK2lfO2E7N1A9SFhLSzF7PFFNbiF5N28oYEtjOzRD
Ngp6SGp9WGErSD5xN2R5bjNFKzBedUlfUkxEVDJrWlMtdnAzaVpiRmVmejJvT29eeExkVUdAKT9f
KW9lRDd6Wmw5XlMKelJkTHByZEZJVEB7YT4zbE9pJmlYSDBae2tNSVU3UmpYeChJSnI9WHtfc3BN
ckdUeTU7bztneiF5VldxfWZGTzYxCnpnOH5OJmdAaklaPHlXY3ZXN0ZAJUtRMnRPVFBPRXV6RXk7
UnZHTXlie3NXP2dOMTdBX0lHN3F5Mj0rWjFIcGx4ZAp6dVQ4Jm18Sjw0QlNEb0tYYSl8cX5xbCUl
N04pRHBmTStnSiV0ZG1RYXwxUnk+P15sWDk3I3NKeiRvdENoclU2P3gKelRpa0djYylwUEZnZXNy
ZGk4SiMoOUB6OW4yKFUwWURve3V5bzs8eDg3PDxgQWp9PElUJWBnQXs7KnIja3hsUn5+CnpyM0lM
cj9pRCM2LUZXSHB2RGRrQjlEbkAoSmFvb1RnXyR+X04/UHQpMj8oIUoodkNPPk95ZGxtdTZ7MS1v
RCFNPApEeTJhfDIKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0Jh
Y2tncm91bmQzLnBuZyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRt
bC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZmE1M2Ix
MzU1OWJiNDI3ODJhODBjZmNkMDE5Zjc1N2Q1MTAwYzE5CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCA4MjcKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF5DcVM1azRNP3R5U1RfJHl1QHBPYmhId0J1
NE0kMWBrazQ3KjVuMFRACnp6O15fTThLLUxWTmkjNG8tU3U+RjQ1XnMmX1VgVmlYaCN1O2leKUco
K2F6TGtlRXdlX3NiJFdfekk/KlFETjRDfQp6Q1UmMEMkWExyaSF9NHEhR3hQVmpIe1hCJVd2Smcw
WTBFSWpzTD9AeWdNfjw8VyVjNUQraXN0PXY2MT1lVlIyKTcKenpWWkcyQD9URnBXLX5KV3tIeUFW
YS15aVY3XllEY3xDfUV4biQ0YSRlWSRHK1haYz9ybGJebEpKYjUqblkzOXRHCnpge1Q8QFdsblht
SXd9YVRGaX1XY3RLQyE4X2BRNjg7ZVlBIWFediZvUzE8cHV7aFpjPm5LUVI8emJnRX1lcSlqJgp6
aENmPzJTOExjREllV0o5QDNGdG4mKEEhNXtBJXpWd1pAdTlAQUFIfiV3ZlhqN1lyalh5LVBiS0pF
Q2s0WHhfPzgKeiYmdjxAS2QzMmlMVmVycXRISzNiWWElY01AOEtGYnVKITl9ODl0ZSZpPUhfMS1z
Mz8pbTx8VjFxaztnMSNELV4mCnp1a09Caz1JUFQoc34+NyN0RyEjaEpzTVhHX1djZ25hcX48fjRL
UyVoeWlENEV8OXY8PTw4c3BDeHtpX1dneSE1JgpUV2x9TX4pWCg3UT5nVGV+RFdNNGY0an1JMgoK
bGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X3BhaW50LnBuZyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19w
YWludC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg3NDNhYzllMGZjYmU3ZDY2ZmY3ZTY5ODBlY2YyZmU0YWIx
Y2Q2MgpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNzI4CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEw
dnBeQ3FTNWs0TT90eVNUXyR5dUBwT2JoSHdCdTRNJDFga2s0Nyo1bjBUQAp6ejteX004Sy1MVk5p
IzRvUmU4RU5oRSZYWGR2bHxndiFqNSsjZ3BEcXR6VWxyKldXQ0AjcTlpe0ZnLSFKb1Ioc3sKemd0
WGIqJSs8SFAqVUNRI3p4fDUrZlV6KEtPUVZBVGs7RCFldEc5TFljZ0ZGe2FgSVBLJmFBQXFFX3Ql
Q0B5d1o7Cno4V31zR3UpLXVxNDEtITgrakdmcCVyJD1oLWFHNndle0oybEo5Knc9PnA0QD5vXyNJ
N25OPX1HbjdoZUFmckRqfgp6cG1yRjxPdn5BT0ttRld1KXp1STZ1ZHhfPzdVczBFUjJSZEhZbTBB
LTN2UT9GK3M3eCVzWGd+dz9mcjBqcmc+OUkKY2lqXjg+QXFVQmNMSCh+KWZKdXxWKTc4JnFvbGA7
KzBEJTByQXBpZ1gKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXJhd3dlYnZpZXcvcXJhd3dlYnZpZXcucHJv
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcmF3d2Vidmlldy9xcmF3
d2Vidmlldy5wcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJkYzE5Nwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cXJhd3dlYnZpZXcvcXJhd3dlYnZpZXcucHJvCkBAIC0wLDAgKzEsMyBAQAoraW5jbHVkZSguLi90
ZXN0cy5wcmkpCitTT1VSQ0VTICs9ICQke1RBUkdFVH0uY3BwCitRVCArPSB3ZWJraXQtcHJpdmF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcmF3
d2Vidmlldy90c3RfcXJhd3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdC90ZXN0cy9xcmF3d2Vidmlldy90c3RfcXJhd3dlYnZpZXcuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMDE1ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FyYXd3ZWJ2aWV3L3RzdF9xcmF3d2Vidmll
dy5jcHAKQEAgLTAsMCArMSwyMzMgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisjaW5jbHVkZSAiLi4v
dXRpbC5oIgorCisjaW5jbHVkZSA8UUltYWdlPgorI2luY2x1ZGUgPFFNYXRyaXg0eDQ+CisjaW5j
bHVkZSA8UU9wZW5HTENvbnRleHQ+CisjaW5jbHVkZSA8UVNpemU+CisjaW5jbHVkZSA8UVdpbmRv
dz4KKyNpbmNsdWRlIDxRdFRlc3QvUXRUZXN0PgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRl
eHQuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0
Mi9XS1ByZWZlcmVuY2VzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmdRdC5oPgorI2luY2x1ZGUgPFdlYktpdDIv
V0tVUkwuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL3FyYXd3ZWJ2aWV3X3AuaD4KKworc3RhdGljIFdL
Q29udGV4dFJlZiB3ZWJDb250ZXh0KCkKK3sKKyAgICBzdGF0aWMgV0tDb250ZXh0UmVmIHJlc3Vs
dCA9IFdLQ29udGV4dENyZWF0ZSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBX
S1BhZ2VHcm91cFJlZiBjcmVhdGVXZWJQYWdlR3JvdXAoY29uc3QgUVN0cmluZyYgbmFtZSkKK3sK
KyAgICBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXAgPVdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50
aWZpZXIoV0tTdHJpbmdDcmVhdGVXaXRoUVN0cmluZyhuYW1lKSk7CisgICAgV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlcyA9IFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMocGFnZUdyb3VwKTsK
KyAgICBXS1ByZWZlcmVuY2VzU2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQocHJlZmVy
ZW5jZXMsIHRydWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVk
KHByZWZlcmVuY2VzLCB0cnVlKTsKKworICAgIHJldHVybiBwYWdlR3JvdXA7Cit9CisKK3N0YXRp
YyBXS1BhZ2VHcm91cFJlZiB3ZWJQYWdlR3JvdXAoY29uc3QgUVN0cmluZyYgbmFtZSkKK3sKKyAg
ICBzdGF0aWMgV0tQYWdlR3JvdXBSZWYgcmVzdWx0ID0gY3JlYXRlV2ViUGFnZUdyb3VwKG5hbWUp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NsYXNzIFdlYlZpZXcgOiBwdWJsaWMgUU9iamVj
dCwgcHVibGljIFFSYXdXZWJWaWV3Q2xpZW50IHsKKyAgICBRX09CSkVDVAorcHVibGljOgorICAg
IFdlYlZpZXcoY29uc3QgUVNpemUmIHNpemUpCisgICAgeworICAgICAgICBXS1BhZ2VMb2FkZXJD
bGllbnQgbG9hZGVyQ2xpZW50OworICAgICAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6
ZW9mKFdLUGFnZUxvYWRlckNsaWVudCkpOworICAgICAgICBsb2FkZXJDbGllbnQuY2xpZW50SW5m
byA9IHRoaXM7CisgICAgICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBX
ZWJWaWV3OjpmaW5pc2hMb2FkRm9yRnJhbWU7CisKKyAgICAgICAgbV93ZWJWaWV3ID0gbmV3IFFS
YXdXZWJWaWV3KHdlYkNvbnRleHQoKSwgd2ViUGFnZUdyb3VwKFFTdHJpbmcoKSksIHRoaXMpOwor
ICAgICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KG1fd2ViVmlldy0+cGFnZVJlZigpLCAm
bG9hZGVyQ2xpZW50KTsKKyAgICAgICAgbV93ZWJWaWV3LT5jcmVhdGUoKTsKKyAgICAgICAgV0tQ
YWdlU2V0VXNlRml4ZWRMYXlvdXQobV93ZWJWaWV3LT5wYWdlUmVmKCksIHRydWUpOworCisgICAg
ICAgIG1fd2ViVmlldy0+c2V0U2l6ZShzaXplKTsKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRGb2N1
c2VkKHRydWUpOworICAgICAgICBtX3dlYlZpZXctPnNldFZpc2libGUodHJ1ZSk7CisgICAgICAg
IG1fd2ViVmlldy0+c2V0QWN0aXZlKHRydWUpOworICAgIH0KKworICAgIH5XZWJWaWV3KCkgeyBk
ZWxldGUgbV93ZWJWaWV3OyB9CisKKyAgICB2b2lkIGxvYWQoY29uc3QgUVN0cmluZyYgaHRtbCkK
KyAgICB7CisgICAgICAgIG1fZnJhbWVMb2FkZWQgPSBmYWxzZTsKKyAgICAgICAgV0tQYWdlTG9h
ZFVSTChtX3dlYlZpZXctPnBhZ2VSZWYoKSwgV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoaHRt
bC50b0FzY2lpKCkuZGF0YSgpKSk7CisgICAgICAgIFFWRVJJRlkoOjp3YWl0Rm9yU2lnbmFsKHRo
aXMsIFNJR05BTChsb2FkZWQoKSksIDUwMDApKTsKKyAgICB9CisKKyAgICB2b2lkIHNldERyYXdC
YWNrZ3JvdW5kKGJvb2wgdmFsdWUpIHsgbV93ZWJWaWV3LT5zZXREcmF3QmFja2dyb3VuZCh2YWx1
ZSk7IH0KKyAgICB2b2lkIHNldFRyYW5zcGFyZW50QmFja2dyb3VuZChib29sIHZhbHVlKSB7IG1f
d2ViVmlldy0+c2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHZhbHVlKTsgfQorCisgICAgdmlydHVh
bCB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3QmKQorICAgIHsKKyAgICAgICAgbV93
ZWJWaWV3LT5wYWludChRTWF0cml4NHg0KCksIDEsIDApOworICAgICAgICBpZiAobV9mcmFtZUxv
YWRlZCkKKyAgICAgICAgICAgIGVtaXQgbG9hZGVkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2
b2lkIHZpZXdSZXF1ZXN0ZWRTY3JvbGwoY29uc3QgUVBvaW50JikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHZpZXdQcm9jZXNzQ3Jhc2hlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJvY2Vz
c1JlbGF1bmNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld0NvbnRlbnRTaXplQ2hhbmdl
ZChjb25zdCBRU2l6ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkQ3Vyc29y
T3ZlcnJpZGUoY29uc3QgUUN1cnNvciYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEtl
eUV2ZW50KGNvbnN0IFFLZXlFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBRVG91Y2hFdmVudCosIGJvb2wgd2FzSGFu
ZGxlZCkgeyB9CisKKyAgICBzdGF0aWMgdm9pZCBmaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CisKK3NpZ25hbHM6CisgICAgdm9pZCBsb2FkZWQoKTsKKworcHJpdmF0ZToK
KyAgICBRUmF3V2ViVmlldyogbV93ZWJWaWV3OworICAgIGJvb2wgbV9mcmFtZUxvYWRlZDsKK307
CisKK3ZvaWQgV2ViVmlldzo6ZmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
Cit7CisgICAgV2ViVmlldyogb2JqID0gc3RhdGljX2Nhc3Q8V2ViVmlldyo+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKTsKKyAgICBvYmotPm1fZnJhbWVMb2FkZWQgPSB0cnVlOworfQor
CitzdGF0aWMgYm9vbCBjb21wYXJlSW1hZ2VzKGNvbnN0IFFJbWFnZSYgaTEsIGNvbnN0IFFJbWFn
ZSYgaTIsIGNvbnN0IFFQb2ludCYgcDEsIGNvbnN0IFFQb2ludCYgcDIsIGludCBpdGVyKQorewor
ICAgIGNvbnN0IFFQb2ludCBwb2ludCgocDEueCgpICsgcDIueCgpKSA+PiAxLCAocDEueSgpICsg
cDIueSgpKSA+PiAxKTsKKworICAgIGlmIChpMS5waXhlbChwb2ludCkgIT0gaTIucGl4ZWwocG9p
bnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWl0ZXIpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgLS1pdGVyOworICAgIHJldHVybiBjb21wYXJlSW1hZ2VzKGkxLCBp
MiwgcG9pbnQsIHAxLCBpdGVyKSAmJiBjb21wYXJlSW1hZ2VzKGkxLCBpMiwgcG9pbnQsIHAyLCBp
dGVyKQorICAgICAgICAmJiBjb21wYXJlSW1hZ2VzKGkxLCBpMiwgcG9pbnQsIFFQb2ludChwMS54
KCksIHAyLnkoKSksIGl0ZXIpICYmIGNvbXBhcmVJbWFnZXMoaTEsIGkyLCBwb2ludCwgUVBvaW50
KHAyLngoKSwgcDEueSgpKSwgaXRlcik7Cit9CisKK3N0YXRpYyBib29sIGNvbXBhcmVJbWFnZXMo
Y29uc3QgUUltYWdlJiBpMSwgY29uc3QgUUltYWdlJiBpMiwgaW50IGl0ZXIpCit7CisgICAgaWYg
KGkxLnNpemUoKSAhPSBpMi5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gY29tcGFyZUltYWdlcyhpMSwgaTIsIFFQb2ludCgwLCAwKSwgUVBvaW50KGkxLnNpemUoKS53
aWR0aCgpLCBpMS5zaXplKCkuaGVpZ2h0KCkpLCBpdGVyKTsKK30KKworY2xhc3MgdHN0X3FyYXd3
ZWJ2aWV3IDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgdHN0
X3FyYXd3ZWJ2aWV3KCkKKyAgICAgICAgOiBtX3Jlc291cmNlRGlyKFFTdHJpbmc6OmZyb21Bc2Np
aShURVNUU19TT1VSQ0VfRElSICIvaHRtbC9yZXNvdXJjZXMiKSkKKyAgICAgICAgLCBtX2Jhc2VV
cmwoUVVybDo6ZnJvbUxvY2FsRmlsZShURVNUU19TT1VSQ0VfRElSICIvaHRtbCIpLnRvU3RyaW5n
KCkpCisgICAgeyB9CisKK3ByaXZhdGUgc2xvdHM6CisgICAgdm9pZCBwYWludCgpIHsgcnVuKCZ0
c3RfcXJhd3dlYnZpZXc6OmRvUGFpbnQsIG1fcmVzb3VyY2VEaXIgKyAiL3F3a3ZpZXdfcGFpbnQu
cG5nIik7IH0KKyAgICB2b2lkIG5vQmFja2dyb3VuZDEoKSB7IHJ1bigmdHN0X3FyYXd3ZWJ2aWV3
Ojpkb05vQmFja2dyb3VuZDEsIG1fcmVzb3VyY2VEaXIgKyAiL3F3a3ZpZXdfbm9CYWNrZ3JvdW5k
MS5wbmciKTsgfQorICAgIHZvaWQgbm9CYWNrZ3JvdW5kMigpIHsgcnVuKCZ0c3RfcXJhd3dlYnZp
ZXc6OmRvTm9CYWNrZ3JvdW5kMiwgbV9yZXNvdXJjZURpciArICIvcXdrdmlld19ub0JhY2tncm91
bmQxLnBuZyIpOyB9CisgICAgdm9pZCBub0JhY2tncm91bmQzKCkgeyBydW4oJnRzdF9xcmF3d2Vi
dmlldzo6ZG9Ob0JhY2tncm91bmQzLCBtX3Jlc291cmNlRGlyICsgIi9xd2t2aWV3X25vQmFja2dy
b3VuZDMucG5nIik7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBRU3RyaW5nIG1fcmVzb3VyY2VE
aXI7CisgICAgY29uc3QgUVN0cmluZyBtX2Jhc2VVcmw7CisKKyAgICB2b2lkIGRvUGFpbnQoY29u
c3QgUVNpemUmIHNpemUpOworICAgIHZvaWQgZG9Ob0JhY2tncm91bmQxKGNvbnN0IFFTaXplJiBz
aXplKTsKKyAgICB2b2lkIGRvTm9CYWNrZ3JvdW5kMihjb25zdCBRU2l6ZSYgc2l6ZSk7CisgICAg
dm9pZCBkb05vQmFja2dyb3VuZDMoY29uc3QgUVNpemUmIHNpemUpOworCisgICAgdHlwZWRlZiB2
b2lkICh0c3RfcXJhd3dlYnZpZXc6OipQYWludE1ldGhvZCkoY29uc3QgUVNpemUmIHNpemUpOwor
ICAgIHZvaWQgcnVuKFBhaW50TWV0aG9kLCBjb25zdCBRU3RyaW5nJiBleHBlY3RhdGlvbik7Cit9
OworCit2b2lkIHRzdF9xcmF3d2Vidmlldzo6ZG9QYWludChjb25zdCBRU2l6ZSYgc2l6ZSkKK3sK
KyAgICBXZWJWaWV3IHZpZXcoc2l6ZSk7CisgICAgdmlldy5sb2FkKG1fYmFzZVVybCArICIvcmVk
c3F1YXJlLmh0bWwiKTsKK30KKwordm9pZCB0c3RfcXJhd3dlYnZpZXc6OmRvTm9CYWNrZ3JvdW5k
MShjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBXZWJWaWV3IHZpZXcoc2l6ZSk7CisgICAgdmll
dy5zZXRUcmFuc3BhcmVudEJhY2tncm91bmQodHJ1ZSk7CisgICAgdmlldy5sb2FkKG1fYmFzZVVy
bCArICIvcmVkc3F1YXJlLmh0bWwiKTsKKyAgICB2aWV3LmxvYWQobV9iYXNlVXJsICsgIi9ibHVl
c3F1YXJlLmh0bWwiKTsKK30KKwordm9pZCB0c3RfcXJhd3dlYnZpZXc6OmRvTm9CYWNrZ3JvdW5k
Mihjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBXZWJWaWV3IHZpZXcxKHNpemUpOworICAgIHZp
ZXcxLnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCh0cnVlKTsKKyAgICB2aWV3MS5sb2FkKG1fYmFz
ZVVybCArICIvcmVkc3F1YXJlLmh0bWwiKTsKKworICAgIFdlYlZpZXcgdmlldzIoc2l6ZSk7Cisg
ICAgdmlldzIuc2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRydWUpOworICAgIHZpZXcyLmxvYWQo
bV9iYXNlVXJsICsgIi9ibHVlc3F1YXJlLmh0bWwiKTsKK30KKwordm9pZCB0c3RfcXJhd3dlYnZp
ZXc6OmRvTm9CYWNrZ3JvdW5kMyhjb25zdCBRU2l6ZSYgc2l6ZSkKK3sKKyAgICBXZWJWaWV3IHZp
ZXcxKHNpemUpOworICAgIHZpZXcxLnNldFRyYW5zcGFyZW50QmFja2dyb3VuZChmYWxzZSk7Cisg
ICAgdmlldzEubG9hZChtX2Jhc2VVcmwgKyAiL3JlZHNxdWFyZS5odG1sIik7CisKKyAgICBXZWJW
aWV3IHZpZXcyKHNpemUpOworICAgIHZpZXcyLnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCh0cnVl
KTsKKyAgICB2aWV3Mi5sb2FkKG1fYmFzZVVybCArICIvYmx1ZXNxdWFyZS5odG1sIik7Cit9CisK
K3ZvaWQgdHN0X3FyYXd3ZWJ2aWV3OjpydW4oUGFpbnRNZXRob2QgbWV0aG9kLCBjb25zdCBRU3Ry
aW5nJiBleHBlY3RhdGlvbikKK3sKKworICAgIFFXaW5kb3cgd2luZG93OworICAgIHdpbmRvdy5z
ZXRTdXJmYWNlVHlwZShRU3VyZmFjZTo6T3BlbkdMU3VyZmFjZSk7CisgICAgd2luZG93LnNldEdl
b21ldHJ5KDAsIDAsIDIwMCwgMjAwKTsKKyAgICB3aW5kb3cuY3JlYXRlKCk7CisKKyAgICBRT3Bl
bkdMQ29udGV4dCBjb250ZXh0OworICAgIGNvbnRleHQuY3JlYXRlKCk7CisgICAgY29udGV4dC5t
YWtlQ3VycmVudCgmd2luZG93KTsKKworICAgIGdsVmlld3BvcnQoMCwgMCwgd2luZG93LnNpemUo
KS53aWR0aCgpLCB3aW5kb3cuc2l6ZSgpLmhlaWdodCgpKTsKKyAgICBnbENsZWFyQ29sb3IoMCwg
MCwgMCwgMCk7CisgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgICh0aGlz
LT4qbWV0aG9kKSh3aW5kb3cuc2l6ZSgpKTsKKworICAgIFFJbWFnZSBpbWFnZSh3aW5kb3cuc2l6
ZSgpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCk7CisgICAgZ2xSZWFkUGl4
ZWxzKDAsIDAsIHdpbmRvdy5zaXplKCkud2lkdGgoKSwgd2luZG93LnNpemUoKS5oZWlnaHQoKSwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgaW1hZ2UuYml0cygpKTsKKworICAgIFFWRVJJRlko
Y29tcGFyZUltYWdlcyhRSW1hZ2UoZXhwZWN0YXRpb24pLCBpbWFnZS5yZ2JTd2FwcGVkKCksIDUp
KTsKK30KKworUVRFU1RfTUFJTih0c3RfcXJhd3dlYnZpZXcpCisKKyNpbmNsdWRlICJ0c3RfcXJh
d3dlYnZpZXcubW9jIgpkaWZmIC0tZ2l0IGEvU291cmNlL3Rlc3RzLnByaSBiL1NvdXJjZS90ZXN0
cy5wcmkKaW5kZXggNWQyZWI2Yi4uMjc4MTU3OCAxMDA2NDQKLS0tIGEvU291cmNlL3Rlc3RzLnBy
aQorKysgYi9Tb3VyY2UvdGVzdHMucHJpCkBAIC01MCw1ICs1MCw2IEBAIFNVQkRJUlMgKz0gXAog
ICAgICAgICAkJFdFQktJVDJfVEVTVFNfRElSL2luc3BlY3RvcnNlcnZlciBcCiAgICAgICAgICQk
V0VCS0lUMl9URVNUU19ESVIvcHVibGljYXBpIFwKICAgICAgICAgJCRXRUJLSVQyX1RFU1RTX0RJ
Ui9xcXVpY2t3ZWJ2aWV3IFwKLSAgICAgICAgJCRXRUJLSVQyX1RFU1RTX0RJUi9xbWx0ZXN0cwor
ICAgICAgICAkJFdFQktJVDJfVEVTVFNfRElSL3FtbHRlc3RzIFwKKyAgICAgICAgJCRXRUJLSVQy
X1RFU1RTX0RJUi9xcmF3d2VidmlldwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDVkZDA1M2IuLjZhZGI0M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0w
Ni0yOSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAbm9raWEuY29tPgorCisgICAgICAg
IFtRdF1bV0syXSBQcml2YXRlIG5vbi1RdFF1aWNrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzIKKworICAgICAgICBNaW5pQnJvd3NlclJh
dyBpcyBhbiB1c2FnZSBleGFtcGxlIGZvciB0aGUgUVJhd1dlYlZpZXcgQVBJLgorICAgICAgICBJ
dCBpcyBvbmx5IGFuIGV4YW1wbGUgYW5kIGlzIG5vdCBmdWxseSBpbXBsZW1lbnRlZC4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2Vy
L3F0L3Jhdy9EZXJpdmVkU291cmNlcy5wcmk6IEFkZGVkLgorICAgICAgICAqIE1pbmlCcm93c2Vy
L3F0L3Jhdy9NaW5pQnJvd3NlclJhdy5wcm86IEFkZGVkLgorICAgICAgICAqIE1pbmlCcm93c2Vy
L3F0L3Jhdy9UYXJnZXQucHJpOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9yYXcv
Vmlldy5jcHA6IEFkZGVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3Jhdy9WaWV3Lmg6IEFk
ZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weToKKyAgICAg
ICAgKiBUb29scy5wcm86CisKIDIwMTItMDYtMjkgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgd2Via2l0cHk6IGFkZCBjb21tZW50IGFib3V0IGhvdyBkZXRl
cm1pbmVfZnVsbF9wb3J0X25hbWUoKSB3b3JrcyBmb3IgYXBwbGUgcG9ydHMsIGZpeCAtd2syIGJ1
ZwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L0Rlcml2ZWRTb3VyY2VzLnBy
aSBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9EZXJpdmVkU291cmNlcy5wcmkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM0ZDJmNAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L3Jhdy9EZXJpdmVkU291cmNlcy5wcmkKQEAgLTAsMCArMSw2IEBA
CitURU1QTEFURSA9IGRlcml2ZWQKKworIyBNYWtlIHN1cmUgZm9yd2FyZGVkIGhlYWRlcnMgbmVl
ZGVkIGJ5IHRoaXMgcHJvamVjdCBhcmUgcHJlc2VudAorZndoZWFkZXJfZ2VuZXJhdG9yLmNvbW1h
bmRzID0gcGVybCAkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvZ2Vu
ZXJhdGUtZm9yd2FyZGluZy1oZWFkZXJzLnBsICQke1JPT1RfV0VCS0lUX0RJUn0vVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lciAkJHtST09UX0JVSUxEX0RJUn0vU291cmNlL2luY2x1ZGUgcXQKK2Z3aGVh
ZGVyX2dlbmVyYXRvci5kZXBlbmRzICA9ICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dlYktp
dDIvU2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwKK0dFTkVSQVRPUlMgKz0g
ZndoZWFkZXJfZ2VuZXJhdG9yCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcv
TWluaUJyb3dzZXJSYXcucHJvIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L01pbmlCcm93c2Vy
UmF3LnBybwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTAzMTA0Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L01pbmlCcm93c2VyUmF3LnBy
bwpAQCAtMCwwICsxLDkgQEAKK1RFTVBMQVRFID0gc3ViZGlycworQ09ORklHICs9IG9yZGVyZWQK
KworZGVyaXZlZF9zb3VyY2VzLmZpbGUgPSBEZXJpdmVkU291cmNlcy5wcmkKK3RhcmdldC5maWxl
ID0gVGFyZ2V0LnByaQorCitTVUJESVJTID0gZGVyaXZlZF9zb3VyY2VzIHRhcmdldAorCithZGRT
dHJpY3RTdWJkaXJPcmRlckJldHdlZW4oZGVyaXZlZF9zb3VyY2VzLCB0YXJnZXQpCmRpZmYgLS1n
aXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVGFyZ2V0LnByaSBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L3Jhdy9UYXJnZXQucHJpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjA2MWIzM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVGFy
Z2V0LnByaQpAQCAtMCwwICsxLDE2IEBACitURU1QTEFURSA9IGFwcAorVEFSR0VUID0gTWluaUJy
b3dzZXJSYXcKKworSEVBREVSUyArPSBcCisgICAgVmlldy5oCisKK1NPVVJDRVMgKz0gXAorICAg
IFZpZXcuY3BwCisKK0RFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCisKK1FUID0gY29y
ZSBndWkgbmV0d29yayB3ZWJraXQKKworbG9hZChmZWF0dXJlcykKKworV0VCS0lUICs9IHd0ZiBq
YXZhc2NyaXB0Y29yZSB3ZWJraXQyCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9y
YXcvVmlldy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVmlldy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTdiMGFhOAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L3Jhdy9WaWV3LmNwcApAQCAtMCwwICsxLDEzNyBAQAorLyoKKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRp
YXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworI2luY2x1ZGUgIlZpZXcuaCIKKworI2luY2x1ZGUgPFFEZWJ1Zz4KKyNp
bmNsdWRlIDxRRXhwb3NlRXZlbnQ+CisjaW5jbHVkZSA8UUd1aUFwcGxpY2F0aW9uPgorI2luY2x1
ZGUgPFFLZXlFdmVudD4KKyNpbmNsdWRlIDxRTWF0cml4NHg0PgorI2luY2x1ZGUgPFFSZXNpemVF
dmVudD4KKyNpbmNsdWRlIDxRVXJsPgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdyb3VwLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1By
ZWZlcmVuY2VzLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgor
I2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmdRdC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tVUkwu
aD4KKworCitzdGF0aWMgV0tDb250ZXh0UmVmIGNyZWF0ZVdlYkNvbnRleHQoKQoreworICAgIHJl
dHVybiBXS0NvbnRleHRDcmVhdGUoKTsKK30KKworc3RhdGljIFdLUGFnZUdyb3VwUmVmIGNyZWF0
ZVdlYlBhZ2VHcm91cChjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAgIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cCA9V0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ0NyZWF0
ZVdpdGhRU3RyaW5nKG5hbWUpKTsKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzID0g
V0tQYWdlR3JvdXBHZXRQcmVmZXJlbmNlcyhwYWdlR3JvdXApOworICAgIFdLUHJlZmVyZW5jZXNT
ZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAg
V0tQcmVmZXJlbmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUp
OworCisgICAgcmV0dXJuIHBhZ2VHcm91cDsKK30KKworVmlldzo6flZpZXcoKQoreworICAgIGRl
bGV0ZSBtX2NvbnRleHQ7CisgICAgZGVsZXRlIG1fd2ViVmlldzsKK30KKworVmlldzo6Vmlldyhj
b25zdCBRU3RyaW5nJiB1cmwpCisgICAgOiBtX3VybCh1cmwpCisgICAgLCBtX2FjdGl2ZShmYWxz
ZSkKK3sKKyAgICBzZXRTdXJmYWNlVHlwZShPcGVuR0xTdXJmYWNlKTsKKyAgICBzZXRHZW9tZXRy
eSg1MCwgNTAsIDk4MCwgNjAwKTsKKyAgICBzZXRXaW5kb3dGbGFncyhRdDo6V2luZG93IHwgUXQ6
OldpbmRvd1RpdGxlSGludCk7CisgICAgY3JlYXRlKCk7CisKKyAgICBtX2NvbnRleHQgPSBuZXcg
UU9wZW5HTENvbnRleHQ7CisgICAgbV9jb250ZXh0LT5jcmVhdGUoKTsKKworICAgIG1fd2ViVmll
dyA9IG5ldyBRUmF3V2ViVmlldyhjcmVhdGVXZWJDb250ZXh0KCksIGNyZWF0ZVdlYlBhZ2VHcm91
cChRU3RyaW5nKCkpLCB0aGlzKTsKKyAgICBtX3dlYlZpZXctPmNyZWF0ZSgpOworICAgIFdLUGFn
ZVNldFVzZUZpeGVkTGF5b3V0KG1fd2ViVmlldy0+cGFnZVJlZigpLCB0cnVlKTsKK30KKworCit2
b2lkIFZpZXc6OmV4cG9zZUV2ZW50KFFFeHBvc2VFdmVudCogZXZlbnQpCit7CisgICAgaWYgKCFt
X2FjdGl2ZSkgeworICAgICAgICBtX2FjdGl2ZSA9IHRydWU7CisgICAgICAgIFdLUGFnZUxvYWRV
UkwobV93ZWJWaWV3LT5wYWdlUmVmKCksIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKG1fdXJs
LnRvQXNjaWkoKS5kYXRhKCkpKTsKKworICAgICAgICBtX3dlYlZpZXctPnNldEZvY3VzZWQodHJ1
ZSk7CisgICAgICAgIG1fd2ViVmlldy0+c2V0VmlzaWJsZSh0cnVlKTsKKyAgICAgICAgbV93ZWJW
aWV3LT5zZXRBY3RpdmUodHJ1ZSk7CisgICAgfQorfQorCit2b2lkIFZpZXc6OnJlc2l6ZUV2ZW50
KFFSZXNpemVFdmVudCogZXZlbnQpCit7CisgICAgbV93ZWJWaWV3LT5zZXRTaXplKGV2ZW50LT5z
aXplKCkpOworfQorCit2b2lkIFZpZXc6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqIGV2ZW50KQor
eworICAgIGlmIChldmVudC0+dGltZXJJZCgpID09IG1fcGFpbnRUaW1lci50aW1lcklkKCkpIHsK
KyAgICAgICAgbV9wYWludFRpbWVyLnN0b3AoKTsKKyAgICAgICAgbV9jb250ZXh0LT5tYWtlQ3Vy
cmVudCh0aGlzKTsKKyAgICAgICAgbV93ZWJWaWV3LT5wYWludChRTWF0cml4NHg0KCksIDEsIDAp
OworICAgICAgICBtX2NvbnRleHQtPnN3YXBCdWZmZXJzKHRoaXMpOworICAgIH0KK30KKwordm9p
ZCBWaWV3Ojp2aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JikKK3sKKyAgICBpZiAoIW1fcGFp
bnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3BhaW50VGltZXIuc3RhcnQoMCwgdGhpcyk7
Cit9CisKK3ZvaWQgVmlldzo6dmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNvbnN0IFFDdXJz
b3ImIGN1cnNvcikKK3sKKyAgICBRR3VpQXBwbGljYXRpb246OnNldE92ZXJyaWRlQ3Vyc29yKGN1
cnNvcik7Cit9CisKK3ZvaWQgVmlldzo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBRS2V5RXZlbnQq
IGV2ZW50LCBib29sIHdhc0hhbmRsZWQpCit7CisgICAgaWYgKHdhc0hhbmRsZWQgfHwgZXZlbnQt
PmlzQWNjZXB0ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc3dpdGNoIChldmVudC0+a2V5
KCkpIHsKKyAgICBjYXNlIFF0OjpLZXlfQmFja3NwYWNlOiB7CisgICAgICAgIFdLUGFnZVJlZiBw
YWdlID0gbV93ZWJWaWV3LT5wYWdlUmVmKCk7CisgICAgICAgIGlmIChXS1BhZ2VDYW5Hb0JhY2so
cGFnZSkpCisgICAgICAgICAgICBXS1BhZ2VHb0JhY2socGFnZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICB9Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAg
ICBRR3VpQXBwbGljYXRpb24gYXBwKGFyZ2MsIGFyZ3YpOworCisgICAgVmlldyB2aWV3KGFwcC5h
cmd1bWVudHMoKS5zaXplKCkgPiAxID8gYXBwLmFyZ3VtZW50cygpLmF0KDEpIDogUVN0cmluZzo6
ZnJvbUFzY2lpKCJodHRwOi8vd3d3Lmdvb2dsZS5jb20iKSk7CisgICAgdmlldy5zaG93KCk7Cisg
ICAgcmV0dXJuIGFwcC5leGVjKCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9x
dC9yYXcvVmlldy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGZhYzRiCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuaApAQCAtMCwwICsxLDY3IEBACisvKgorICAgIENv
cHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisqLworCisjaWZuZGVmIFZpZXdfaAorI2RlZmluZSBWaWV3X2gKKworI2luY2x1ZGUgPFFC
YXNpY1RpbWVyPgorI2luY2x1ZGUgPFFPcGVuR0xDb250ZXh0PgorI2luY2x1ZGUgPFFXaW5kb3c+
CisjaW5jbHVkZSA8V2ViS2l0Mi9xcmF3d2Vidmlld19wLmg+CisKKworY2xhc3MgVmlldyA6ICBw
dWJsaWMgUVdpbmRvdywgcHJpdmF0ZSBRUmF3V2ViVmlld0NsaWVudCB7CitwdWJsaWM6CisgICAg
Vmlldyhjb25zdCBRU3RyaW5nJiB1cmwpOworICAgIH5WaWV3KCk7CisKK3B1YmxpYzogLy8gV0tW
aWV3Q2xpZW50CisgICAgdmlydHVhbCB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3Qm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZFNjcm9sbChjb25zdCBRUG9pbnQmKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NDcmFzaGVkKCkgeyB9CisgICAgdmlydHVh
bCB2b2lkIHZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3
Q29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFFTaXplJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHZp
ZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZShjb25zdCBRQ3Vyc29yJik7CisgICAgdmlydHVhbCB2
b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgUUtleUV2ZW50KiwgYm9vbCB3YXNIYW5kbGVkKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNvbnN0IFFUb3VjaEV2ZW50Kiwg
Ym9vbCB3YXNIYW5kbGVkKSB7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBleHBv
c2VFdmVudChRRXhwb3NlRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzaXplRXZlbnQoUVJl
c2l6ZUV2ZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQq
IGV2ZW50KSB7IG1fd2ViVmlldy0+a2V5RXZlbnQoZXZlbnQpOyB9CisgICAgdmlydHVhbCB2b2lk
IGtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+a2V5RXZlbnQo
ZXZlbnQpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3VibGVDbGlja0V2ZW50KFFNb3Vz
ZUV2ZW50KiBldmVudCkgeyBtX3dlYlZpZXctPm1vdXNlRXZlbnQoZXZlbnQsIDIpOyB9CisgICAg
dmlydHVhbCB2b2lkIG1vdXNlTW92ZUV2ZW50KFFNb3VzZUV2ZW50KiBldmVudCkgeyBtX3dlYlZp
ZXctPm1vdXNlRXZlbnQoZXZlbnQpOyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlUHJlc3NFdmVu
dChRTW91c2VFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5tb3VzZUV2ZW50KGV2ZW50LCAxKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBtb3VzZVJlbGVhc2VFdmVudChRTW91c2VFdmVudCogZXZlbnQp
IHsgbV93ZWJWaWV3LT5tb3VzZUV2ZW50KGV2ZW50KTsgfQorCitwcml2YXRlOgorICAgIFFSYXdX
ZWJWaWV3KiBtX3dlYlZpZXc7CisgICAgUU9wZW5HTENvbnRleHQgKm1fY29udGV4dDsKKyAgICBR
QmFzaWNUaW1lciBtX3BhaW50VGltZXI7CisKKyAgICBRU3RyaW5nIG1fdXJsOworICAgIGJvb2wg
bV9hY3RpdmU7CisKKyAgICB2aXJ0dWFsIHZvaWQgdGltZXJFdmVudChRVGltZXJFdmVudCopOwor
fTsKKworI2VuZGlmIC8vIFZpZXdfaApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
LnB5CmluZGV4IGRmZjc5MGUuLjhjZDg3NDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXIucHkKQEAgLTE1Miw3ICsxNTIsOCBAQCBfUEFUSF9SVUxFU19TUEVDSUZJRVIgPSBb
CiAgICAgICAiLXdoaXRlc3BhY2UvZGVjbGFyYXRpb24iXSksCiAKICAgICAgKFsjIFF0J3MgTWlu
aUJyb3dzZXIgaGFzIG5vIGNvbmZpZy5oCi0gICAgICAgIlRvb2xzL01pbmlCcm93c2VyL3F0Il0s
CisgICAgICAgIlRvb2xzL01pbmlCcm93c2VyL3F0IiwKKyAgICAgICAiVG9vbHMvTWluaUJyb3dz
ZXIvcXQvcmF3Il0sCiAgICAgICBbIi1idWlsZC9pbmNsdWRlIl0pLAogCiAgICAgKFsjIFRoZSBR
dCBBUElzIHVzZSBRdC9RTUwgbmFtaW5nIHN0eWxlLCB3aGljaCBpbmNsdWRlcwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVG9vbHMucHJvIGIvVG9vbHMvVG9vbHMucHJvCmluZGV4IDY0ZTgzN2IuLjdmOTdl
ZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rvb2xzLnBybworKysgYi9Ub29scy9Ub29scy5wcm8KQEAg
LTE4LDYgKzE4LDcgQEAgbG9hZChmZWF0dXJlcykKICFub193ZWJraXQyIHsKICAgICBTVUJESVJT
ICs9IE1pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybwogICAgIFNVQkRJUlMgKz0gV2ViS2l0
VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnBybworICAgIFNVQkRJUlMgKz0gTWluaUJyb3dz
ZXIvcXQvcmF3L01pbmlCcm93c2VyUmF3LnBybwogfQogCiAjIEZJWE1FOiB3aXRoIFF0IDUgdGhl
IHRlc3QgcGx1Z2luIGNhdXNlIHNvbWUgdHJvdWJsZSBkdXJpbmcgbGF5b3V0IHRlc3RzLgotLSAK
MS43LjkuNQoK
</data>
<flag name="review"
          id="158506"
          type_id="1"
          status="+"
          setter="noam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150292</attachid>
            <date>2012-06-29 19:23:14 -0700</date>
            <delta_ts>2012-06-29 21:18:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Qt-WK2-Private-non-QtQuick-API.patch</filename>
            <type>text/plain</type>
            <size>50507</size>
            <attacher name="Luiz Agostini">luiz</attacher>
            
              <data encoding="base64">RnJvbSA4MTBjNGJmZGM3N2EwMzMwNGI4MGQwZmEzMDZmYTY3ZmYyNTdlZjZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEFnb3N0aW5pIDxsdWl6LmFnb3N0aW5pQG5va2lhLmNv
bT4KRGF0ZTogRnJpLCAyOSBKdW4gMjAxMiAxODo0MzoyNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd
IFtRdF1bV0syXSBQcml2YXRlIG5vbi1RdFF1aWNrIEFQSQogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg0NTMyCgouOgoKUmV2aWV3ZWQgYnkgTm9hbSBSb3NlbnRoYWwu
CgpBUEkgdGVzdHMgZm9yIFFSYXdXZWJWaWV3LgoKKiBTb3VyY2UvdGVzdHMucHJpOgoKU291cmNl
L1dlYktpdDI6CgpSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KCkFkZGluZyBuZXcgcHJpdmF0
ZSBub24tUXRRdWljayBBUEkuIFRoaXMgbmV3IEMrKyBBUEkgbWFrZXMgaXQgcG9zc2libGUKdG8g
aGF2ZSBjb250cm9sIG92ZXIgdGhlIGxvd2VyIGxldmVscyBvZiBXZWJLaXQgd2l0aG91dCBnb2lu
ZyB2aWEgUU1MLgoKVGhpcyBpcyBhIGZpcnN0IHZlcnNpb24gb2YgdGhlIEFQSSwgZW5vdWdoIHRv
IHNob3cgcGFnZXMgb24gdGhlIHNjcmVlbi4KTWFueSBmZWF0dXJlcyBhcmUgbm90IGltcGxlbWVu
dGVkLgoKKiBUYXJnZXQucHJpOgoqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNw
cDogQWRkZWQuCiogVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcC5oOiBBZGRlZC4K
KiBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaDogQWRkZWQuCgpUaGUgdGVz
dHMgZm9yIHRoZSBuZXcgQVBJIGFyZSBwaXhlbCB0ZXN0cy4gVGhleSB1c2UgUVJhd1dlYlZpZXcg
dG8gbG9hZApodG1sIGZpbGVzIGFuZCBnZW5lcmF0ZSBpbWFnZXMsIGFuZCB0aGVtIGNvbXBhcmUg
dGhvc2UgaW1hZ2VzIHRvIHRoZSBvbmVzCmluIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9y
ZXNvdXJjZXMuCgoqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9ibHVlc3F1YXJlLmh0bWw6
IEFkZGVkLgoqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRtbDogQWRk
ZWQuCiogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X25vQmFj
a2dyb3VuZDEucG5nOiBBZGRlZC4KKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3Vy
Y2VzL3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMy5wbmc6IEFkZGVkLgoqIFVJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19wYWludC5wbmc6IEFkZGVkLgoqIFVJUHJvY2Vz
cy9BUEkvcXQvdGVzdHMvcXJhd3dlYnZpZXcvcXJhd3dlYnZpZXcucHJvOiBBZGRlZC4KKiBVSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FyYXd3ZWJ2aWV3L3RzdF9xcmF3d2Vidmlldy5jcHA6IEFkZGVk
LgoKVG9vbHM6CgpNaW5pQnJvd3NlclJhdyBpcyBhbiB1c2FnZSBleGFtcGxlIGZvciB0aGUgUVJh
d1dlYlZpZXcgQVBJLgpJdCBpcyBvbmx5IGFuIGV4YW1wbGUgYW5kIGlzIG5vdCBmdWxseSBpbXBs
ZW1lbnRlZC4KClJldmlld2VkIGJ5IE5vYW0gUm9zZW50aGFsLgoKKiBNaW5pQnJvd3Nlci9xdC9y
YXcvRGVyaXZlZFNvdXJjZXMucHJpOiBBZGRlZC4KKiBNaW5pQnJvd3Nlci9xdC9yYXcvTWluaUJy
b3dzZXJSYXcucHJvOiBBZGRlZC4KKiBNaW5pQnJvd3Nlci9xdC9yYXcvVGFyZ2V0LnByaTogQWRk
ZWQuCiogTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuY3BwOiBBZGRlZC4KKiBNaW5pQnJvd3Nlci9x
dC9yYXcvVmlldy5oOiBBZGRlZC4KKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6
CiogVG9vbHMucHJvOgotLS0KIENoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxMSArCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMzAgKysKIFNvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAgICB8ICAzODQgKysrKysrKysrKysrKysrKysrKysKIC4u
Li9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3AuaCAgIHwgIDEwMSAr
KysrKwogLi4uL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcF9wLmgg
fCAgMTMxICsrKysrKysKIC4uLi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvYmx1ZXNxdWFy
ZS5odG1sICAgIHwgICAgNSArCiAuLi4vVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3JlZHNx
dWFyZS5odG1sICAgICB8ICAgIDUgKwogLi4uL3Rlc3RzL2h0bWwvcmVzb3VyY2VzL3F3a3ZpZXdf
bm9CYWNrZ3JvdW5kMS5wbmcgfCAgQmluIDAgLT4gODAxIGJ5dGVzCiAuLi4vdGVzdHMvaHRtbC9y
ZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQzLnBuZyB8ICBCaW4gMCAtPiA4MjcgYnl0ZXMK
IC4uLi9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19wYWludC5wbmcgIHwgIEJp
biAwIC0+IDcyOCBieXRlcwogLi4uL0FQSS9xdC90ZXN0cy9xcmF3d2Vidmlldy9xcmF3d2Vidmll
dy5wcm8gICAgICAgfCAgICAzICsKIC4uLi9BUEkvcXQvdGVzdHMvcXJhd3dlYnZpZXcvdHN0X3Fy
YXd3ZWJ2aWV3LmNwcCAgIHwgIDIzMyArKysrKysrKysrKysKIFNvdXJjZS90ZXN0cy5wcmkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArLQogVG9vbHMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICsKIFRvb2xzL01pbmlC
cm93c2VyL3F0L3Jhdy9EZXJpdmVkU291cmNlcy5wcmkgICAgICAgIHwgICAgNiArCiBUb29scy9N
aW5pQnJvd3Nlci9xdC9yYXcvTWluaUJyb3dzZXJSYXcucHJvICAgICAgICB8ICAgIDkgKwogVG9v
bHMvTWluaUJyb3dzZXIvcXQvcmF3L1RhcmdldC5wcmkgICAgICAgICAgICAgICAgfCAgIDE2ICsK
IFRvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9WaWV3LmNwcCAgICAgICAgICAgICAgICAgIHwgIDEz
NyArKysrKysrCiBUb29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVmlldy5oICAgICAgICAgICAgICAg
ICAgICB8ICAgNjcgKysrKwogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5
ICAgICAgICAgICAgfCAgICAzICstCiBUb29scy9Ub29scy5wcm8gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgIDEgKwogMjIgZmlsZXMgY2hhbmdlZCwgMTE2NCBpbnNlcnRp
b25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3AuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3
ZWJ2aWV3X3BfcC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRtbAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
aHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQxLnBuZwogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMv
cXdrdmlld19ub0JhY2tncm91bmQzLnBuZwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19wYWludC5w
bmcKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FyYXd3ZWJ2aWV3L3FyYXd3ZWJ2aWV3LnBybwogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXJhd3dlYnZpZXcvdHN0X3FyYXd3ZWJ2
aWV3LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9EZXJp
dmVkU291cmNlcy5wcmkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9xdC9y
YXcvTWluaUJyb3dzZXJSYXcucHJvCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvTWluaUJyb3dz
ZXIvcXQvcmF3L1RhcmdldC5wcmkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nl
ci9xdC9yYXcvVmlldy5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBUb29scy9NaW5pQnJvd3Nlci9x
dC9yYXcvVmlldy5oCgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGE4
ZjQ2NWQuLjllZjQ2ZmMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0wNi0yOSAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlA
bm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBQcml2YXRlIG5vbi1RdFF1aWNrIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODQ1MzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBBUEkgdGVzdHMg
Zm9yIFFSYXdXZWJWaWV3LgorCisgICAgICAgICogU291cmNlL3Rlc3RzLnByaToKKwogMjAxMi0w
Ni0yOSAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxMjE1MTgsIGFkZGluZyBhIG1pc3Npbmcgc3ltYm9s
IHRvIHN5bWJvbHMuZmlsdGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDBhZTE4ODkuLjJlMzM2NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMi0wNi0yOSAgTHVpeiBBZ29zdGluaSAgPGx1aXou
YWdvc3RpbmlAbm9raWEuY29tPgorCisgICAgICAgIFtRdF1bV0syXSBQcml2YXRlIG5vbi1RdFF1
aWNrIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODQ1MzIKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBB
ZGRpbmcgbmV3IHByaXZhdGUgbm9uLVF0UXVpY2sgQVBJLiBUaGlzIG5ldyBDKysgQVBJIG1ha2Vz
IGl0IHBvc3NpYmxlCisgICAgICAgIHRvIGhhdmUgY29udHJvbCBvdmVyIHRoZSBsb3dlciBsZXZl
bHMgb2YgV2ViS2l0IHdpdGhvdXQgZ29pbmcgdmlhIFFNTC4KKworICAgICAgICBUaGlzIGlzIGEg
Zmlyc3QgdmVyc2lvbiBvZiB0aGUgQVBJLCBlbm91Z2ggdG8gc2hvdyBwYWdlcyBvbiB0aGUgc2Ny
ZWVuLgorICAgICAgICBNYW55IGZlYXR1cmVzIGFyZSBub3QgaW1wbGVtZW50ZWQuCisKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2
aWV3LmNwcDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZp
ZXdfcC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmll
d19wX3AuaDogQWRkZWQuCisKKyAgICAgICAgVGhlIHRlc3RzIGZvciB0aGUgbmV3IEFQSSBhcmUg
cGl4ZWwgdGVzdHMuIFRoZXkgdXNlIFFSYXdXZWJWaWV3IHRvIGxvYWQKKyAgICAgICAgaHRtbCBm
aWxlcyBhbmQgZ2VuZXJhdGUgaW1hZ2VzLCBhbmQgdGhlbSBjb21wYXJlIHRob3NlIGltYWdlcyB0
byB0aGUgb25lcworICAgICAgICBpbiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3Vy
Y2VzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVhcmUu
aHRtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3JlZHNx
dWFyZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwv
cmVzb3VyY2VzL3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMS5wbmc6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZXNvdXJjZXMvcXdrdmlld19ub0JhY2tncm91bmQz
LnBuZzogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291
cmNlcy9xd2t2aWV3X3BhaW50LnBuZzogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xcmF3d2Vidmlldy9xcmF3d2Vidmlldy5wcm86IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcXJhd3dlYnZpZXcvdHN0X3FyYXd3ZWJ2aWV3LmNwcDogQWRk
ZWQuCisKIDIwMTItMDYtMjkgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGlu
dGVsLmNvbT4KIAogICAgICAgICBbV0syXSBNb3ZlIGludGVudCBkZWxpdmVyeSBjb2RlIGZyb20g
dGhlIGZyYW1lIHRvIHRoZSBwYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBkODI3YWRiLi4yNzAwNTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1RhcmdldC5wcmkKQEAgLTIwMSw2ICsyMDEsOCBAQCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nl
c3MvQVBJL3F0L3FxdWlja25ldHdvcmtyZXF1ZXN0X3AuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t1cmxzY2hlbWVkZWxlZ2F0ZV9wLmggXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdl
YmtpdHRlc3RfcC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlld19wLmgg
XAorICAgIFVJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3BfcC5oIFwKICAgICBVSVBy
b2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIFwKICAg
ICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVy
LmggXAogICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmggXApAQCAt
NTUxLDYgKzU1Myw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
dXJsc2NoZW1lZGVsZWdhdGUuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJwcmVmZXJl
bmNlcy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmtpdHRlc3QuY3BwIFwKKyAgICBV
SVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAgXAogICAgIFVJUHJvY2Vzcy9BdXRo
ZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCBcCiAgICAgVUlQcm9j
ZXNzL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9BdXRoZW50aWNhdGlvbi9XZWJDcmVkZW50aWFsLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc1ZWQxZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3LmNwcApA
QCAtMCwwICsxLDM4NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAg
ICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK
KyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAor
ICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgInFyYXd3ZWJ2aWV3X3AuaCIKKworI2luY2x1ZGUgIkN1cnNvci5oIgorI2lu
Y2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlJbXBsLmgiCisjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eS5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKKyNpbmNs
dWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViVG91Y2hFdmVu
dC5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJOb3RJbXBs
ZW1lbnRlZC5oIgorI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJMYXllclRy
ZWVSZW5kZXJlci5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIldlYlBy
ZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAicXJhd3dlYnZpZXdfcF9wLmgiCisjaW5jbHVkZSA8V2Vi
S2l0Mi9xcmF3d2Vidmlld19wLmg+CisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpkaWRSZWNl
aXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmRp
ZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0
ZXMmIGF0dHIpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBRUmF3V2ViVmll
d1ByaXZhdGU6OmhhbmRsZURvd25sb2FkUmVxdWVzdChXZWJLaXQ6OkRvd25sb2FkUHJveHkqIGRv
d25sb2FkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXdQ
cml2YXRlOjpoYW5kbGVBdXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBTdHJpbmcm
IGhvc3RuYW1lLCBjb25zdCBTdHJpbmcmIHJlYWxtLCBjb25zdCBTdHJpbmcmIHByZWZpbGxlZFVz
ZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJpbmcmIHBhc3N3b3JkKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpoYW5kbGVDZXJ0aWZp
Y2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgYm9vbCYgaWdu
b3JlRXJyb3JzKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZp
ZXdQcml2YXRlOjpoYW5kbGVQcm94eUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUsIHVpbnQxNl90IHBvcnQsIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVk
VXNlcm5hbWUsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpCit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OnJlZ2lzdGVyRWRp
dENvbW1hbmQoUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQor
Citib29sIFFSYXdXZWJWaWV3UHJpdmF0ZTo6Y2FuVW5kb1JlZG8oV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmV4ZWN1dGVVbmRv
UmVkbyhXZWJLaXQ6OldlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1dlYkNvcmU6OkZsb2F0UmVjdCBRUmF3V2ViVmlld1By
aXZhdGU6OmNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVj
dCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiByZWN0OworfQorCitXZWJD
b3JlOjpGbG9hdFJlY3QgUVJhd1dlYlZpZXdQcml2YXRlOjpjb252ZXJ0VG9Vc2VyU3BhY2UoY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgcmV0dXJuIHJlY3Q7Cit9CisKK1dlYkNvcmU6OkludFBvaW50IFFSYXdXZWJWaWV3UHJpdmF0
ZTo6c2NyZWVuVG9XaW5kb3coY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIHBvaW50OworfQorCitXZWJDb3JlOjpJbnRS
ZWN0IFFSYXdXZWJWaWV3UHJpdmF0ZTo6d2luZG93VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiByZWN0Owor
fQorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9pZCBRUmF3V2ViVmlld1By
aXZhdGU6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgV2ViS2l0OjpMYXll
clRyZWVDb250ZXh0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFFSYXdX
ZWJWaWV3UHJpdmF0ZTo6ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgV2ViS2l0OjpMYXllclRyZWVDb250ZXh0JikK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQorCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVGV4dElucHV0
U3RhdGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKyNpZiBFTkFCTEUoR0VTVFVS
RV9FVkVOVFMpCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZG9uZVdpdGhHZXN0dXJlRXZlbnQo
Y29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQmIGV2ZW50LCBib29sIHdhc0V2ZW50SGFuZGxl
ZCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjZW5kaWYKK3ZvaWQgUVJhd1dlYlZp
ZXdQcml2YXRlOjpkaXNwbGF5VmlldygpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OnNjcm9sbFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UmVj
dCYgc2Nyb2xsUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2Nyb2xsT2Zmc2V0KQorewor
ICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpmbGFz
aEJhY2tpbmdTdG9yZVVwZGF0ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JikKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZGlk
RmluZFpvb21hYmxlQXJlYShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdGFyZ2V0LCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBhcmVhKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3Zv
aWQgUVJhd1dlYlZpZXdQcml2YXRlOjpzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9v
bCBoaWRkZW5VbnRpbE1vdXNlTW92ZXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwor
dm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OnRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgbmV3VG9vbHRpcCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2
b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRh
JiBkcmFnRGF0YSwgUGFzc1JlZlB0cjxXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdl
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK1Bhc3NSZWZQdHI8V2ViS2l0OjpXZWJQ
b3B1cE1lbnVQcm94eT4gUVJhd1dlYlZpZXdQcml2YXRlOjpjcmVhdGVQb3B1cE1lbnVQcm94eShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSogd2ViUGFnZVByb3h5KQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eT4oKTsK
K30KKworUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbnRleHRNZW51UHJveHk+IFFSYXdXZWJWaWV3
UHJpdmF0ZTo6Y3JlYXRlQ29udGV4dE1lbnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSogd2Vi
UGFnZVByb3h5KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIFBhc3NSZWZQ
dHI8V2ViS2l0OjpXZWJDb250ZXh0TWVudVByb3h5PigpOworfQorCisjaWYgRU5BQkxFKElOUFVU
X1RZUEVfQ09MT1IpCitQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHk+IFFS
YXdXZWJWaWV3UHJpdmF0ZTo6Y3JlYXRlQ29sb3JDaG9vc2VyUHJveHkoV2ViS2l0OjpXZWJQYWdl
UHJveHkqLCBjb25zdCBXZWJDb3JlOjpDb2xvciYgaW50aWFsQ29sb3IpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICByZXR1cm4gUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkNvbG9yQ2hvb3Nl
clByb3h5PigpOworfQorI2VuZGlmCisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpwYWdlRGlk
UmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zKQoreworICAgIG1fY2xp
ZW50LT52aWV3UmVxdWVzdGVkU2Nyb2xsKHBvcyk7CisKK30KK3ZvaWQgUVJhd1dlYlZpZXdQcml2
YXRlOjpwcm9jZXNzRGlkQ3Jhc2goKQoreworICAgIG1fY2xpZW50LT52aWV3UHJvY2Vzc0NyYXNo
ZWQoKTsKK30KKwordm9pZCBRUmF3V2ViVmlld1ByaXZhdGU6OmRpZFJlbGF1bmNoUHJvY2Vzcygp
Cit7CisgICAgbV9jbGllbnQtPnZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpOworfQorCit2b2lkIFFS
YXdXZWJWaWV3UHJpdmF0ZTo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiByZWN0KQoreworICAgIG1fY2xpZW50LT52aWV3TmVlZHNEaXNwbGF5KHJlY3QpOworfQor
Cit2b2lkIFFSYXdXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIG5ld1NpemUpCit7CisgICAgbV9jbGllbnQtPnZpZXdDb250ZW50U2l6
ZUNoYW5nZWQobmV3U2l6ZSk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpzZXRDdXJz
b3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCit7CisgICAgbV9jbGllbnQtPnZpZXdS
ZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZSgqY3Vyc29yLnBsYXRmb3JtQ3Vyc29yKCkpOworfQorCisj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgUVJhd1dlYlZpZXdQcml2YXRlOjpkb25lV2l0
aFRvdWNoRXZlbnQoY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCwgYm9v
bCB3YXNFdmVudEhhbmRsZWQpCit7CisgICAgbV9jbGllbnQtPmRvbmVXaXRoVG91Y2hFdmVudChl
dmVudC5uYXRpdmVFdmVudCgpLCB3YXNFdmVudEhhbmRsZWQpOworfQorI2VuZGlmCisKK3ZvaWQg
UVJhd1dlYlZpZXdQcml2YXRlOjpkb25lV2l0aEtleUV2ZW50KGNvbnN0IFdlYktpdDo6TmF0aXZl
V2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAgIG1f
Y2xpZW50LT5kb25lV2l0aEtleUV2ZW50KGV2ZW50Lm5hdGl2ZUV2ZW50KCksIHdhc0V2ZW50SGFu
ZGxlZCk7Cit9CisKK1Bhc3NPd25QdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBRUmF3V2Vi
Vmlld1ByaXZhdGU6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoKQoreworICAgIHJldHVybiBXZWJL
aXQ6OkRyYXdpbmdBcmVhUHJveHlJbXBsOjpjcmVhdGUobV93ZWJQYWdlUHJveHkuZ2V0KCkpOwor
fQorCitRUmF3V2ViVmlld1ByaXZhdGU6OlFSYXdXZWJWaWV3UHJpdmF0ZShXZWJLaXQ6OldlYkNv
bnRleHQqIGNvbnRleHQsIFdlYktpdDo6V2ViUGFnZUdyb3VwKiBwYWdlR3JvdXAsIFFSYXdXZWJW
aWV3Q2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgLCBtX3dlYlBh
Z2VQcm94eShjb250ZXh0LT5jcmVhdGVXZWJQYWdlKHRoaXMsIHBhZ2VHcm91cCkpCit7CisgICAg
bV93ZWJQYWdlUHJveHktPnBhZ2VHcm91cCgpLT5wcmVmZXJlbmNlcygpLT5zZXRGb3JjZUNvbXBv
c2l0aW5nTW9kZSh0cnVlKTsKK30KKworUVJhd1dlYlZpZXdQcml2YXRlOjp+UVJhd1dlYlZpZXdQ
cml2YXRlKCkKK3sKK30KKworUVJhd1dlYlZpZXc6OlFSYXdXZWJWaWV3KFdLQ29udGV4dFJlZiBj
b250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYsIFFSYXdXZWJWaWV3Q2xpZW50
KiBjbGllbnQpCisgICAgOiBkKG5ldyBRUmF3V2ViVmlld1ByaXZhdGUoV2ViS2l0Ojp0b0ltcGwo
Y29udGV4dFJlZiksIFdlYktpdDo6dG9JbXBsKHBhZ2VHcm91cFJlZiksIGNsaWVudCkpCit7Cit9
CisKK1FSYXdXZWJWaWV3Ojp+UVJhd1dlYlZpZXcoKQoreworICAgIGRlbGV0ZSBkOworfQorCit2
b2lkIFFSYXdXZWJWaWV3OjpjcmVhdGUoKQoreworICAgIGQtPm1fd2ViUGFnZVByb3h5LT5pbml0
aWFsaXplV2ViUGFnZSgpOworfQorCit2b2lkIFFSYXdXZWJWaWV3OjpzZXRUcmFuc3BhcmVudEJh
Y2tncm91bmQoYm9vbCB2YWx1ZSkKK3sKKyAgICBkLT5tX3dlYlBhZ2VQcm94eS0+c2V0RHJhd3NU
cmFuc3BhcmVudEJhY2tncm91bmQodmFsdWUpOworfQorCitib29sIFFSYXdXZWJWaWV3Ojp0cmFu
c3BhcmVudEJhY2tncm91bmQoKSBjb25zdAoreworICAgIHJldHVybiBkLT5tX3dlYlBhZ2VQcm94
eS0+ZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoKTsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6
c2V0RHJhd0JhY2tncm91bmQoYm9vbCB2YWx1ZSkKK3sKKyAgICBkLT5tX3dlYlBhZ2VQcm94eS0+
c2V0RHJhd3NCYWNrZ3JvdW5kKHZhbHVlKTsKK30KKworYm9vbCBRUmF3V2ViVmlldzo6ZHJhd0Jh
Y2tncm91bmQoKSBjb25zdAoreworICAgIHJldHVybiBkLT5tX3dlYlBhZ2VQcm94eS0+ZHJhd3NC
YWNrZ3JvdW5kKCk7Cit9CisKK2Jvb2wgUVJhd1dlYlZpZXc6OmlzRm9jdXNlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGQtPm1fZm9jdXNlZDsKK30KKwordm9pZCBRUmF3V2ViVmlldzo6c2V0Rm9j
dXNlZChib29sIGZvY3VzZWQpCit7CisgICAgZC0+bV9mb2N1c2VkID0gZm9jdXNlZDsKKyAgICBk
LT5tX3dlYlBhZ2VQcm94eS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpWaWV3SXNGb2N1c2VkKTsKK30KKworYm9vbCBRUmF3V2ViVmlldzo6aXNWaXNpYmxlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZC0+bV92aXNpYmxlOworfQorCit2b2lkIFFSYXdXZWJWaWV3Ojpz
ZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKK3sKKyAgICBkLT5tX3Zpc2libGUgPSB2aXNpYmxlOwor
ICAgIGQtPm1fd2ViUGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OlZpZXdJc1Zpc2libGUpOworfQorCitib29sIFFSYXdXZWJWaWV3Ojppc0FjdGl2ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGQtPm1fYWN0aXZlOworfQorCit2b2lkIFFSYXdXZWJWaWV3
OjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCit7CisgICAgZC0+bV9hY3RpdmUgPSBhY3RpdmU7Cisg
ICAgZC0+bV93ZWJQYWdlUHJveHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6Vmlld1dpbmRvd0lzQWN0aXZlKTsKK30KKworUVNpemUgUVJhd1dlYlZpZXc6OnNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBkLT5tX3NpemU7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6
OnNldFNpemUoY29uc3QgUVNpemUmIHNpemUpCit7CisgICAgZC0+bV9zaXplID0gc2l6ZTsKKyAg
ICBkLT5tX3dlYlBhZ2VQcm94eS0+c2V0Vmlld3BvcnRTaXplKHNpemUpOworCisKKyAgICBXZWJL
aXQ6OkRyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhID0gZC0+bV93ZWJQYWdlUHJveHktPmRy
YXdpbmdBcmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAgcmV0dXJuOworCisK
KyAgICBkcmF3aW5nQXJlYS0+c2V0U2l6ZShkLT5tX3NpemUsIFdlYkNvcmU6OkludFNpemUoKSk7
CisgICAgZHJhd2luZ0FyZWEtPnNldFZpc2libGVDb250ZW50c1JlY3QoV2ViQ29yZTo6SW50UmVj
dChXZWJDb3JlOjpJbnRQb2ludCgpLCBkLT5tX3NpemUpLCAxIC8qc2NhbGUqLywgV2ViQ29yZTo6
RmxvYXRQb2ludCgpKTsKK30KKworV0tQYWdlUmVmIFFSYXdXZWJWaWV3OjpwYWdlUmVmKCkKK3sK
KyAgICByZXR1cm4gdG9BUEkoZC0+bV93ZWJQYWdlUHJveHkuZ2V0KCkpOworfQorCit2b2lkIFFS
YXdXZWJWaWV3OjpwYWludChjb25zdCBRTWF0cml4NHg0JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNp
dHksIHVuc2lnbmVkIHBhaW50RmxhZ3MpCit7CisgICAgV2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5
KiBkcmF3aW5nQXJlYSA9IGQtPm1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpOworICAgIGlm
ICghZHJhd2luZ0FyZWEpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdDo6TGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eSogY29vcmRpbmF0b3JQcm94eSA9IGRyYXdpbmdBcmVhLT5sYXllclRy
ZWVDb29yZGluYXRvclByb3h5KCk7CisgICAgaWYgKCFjb29yZGluYXRvclByb3h5KQorICAgICAg
ICByZXR1cm47CisKKyAgICBXZWJLaXQ6OldlYkxheWVyVHJlZVJlbmRlcmVyKiByZW5kZXJlciA9
IGNvb3JkaW5hdG9yUHJveHktPmxheWVyVHJlZVJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVuZGVyZXItPnNldEFjdGl2ZSh0cnVlKTsKKyAg
ICByZW5kZXJlci0+c3luY1JlbW90ZUNvbnRlbnQoKTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCByZWN0KDAsIDAsIGQtPm1fc2l6ZS53aWR0aCgpLCBkLT5tX3NpemUuaGVpZ2h0KCkpOworCisg
ICAgcmVuZGVyZXItPnBhaW50VG9DdXJyZW50R0xDb250ZXh0KHRyYW5zZm9ybSwgb3BhY2l0eSwg
cmVjdCwgcGFpbnRGbGFncyk7Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OnNlbmRLZXlFdmVudChR
S2V5RXZlbnQqIGV2ZW50KQoreworICAgIGQtPm1fd2ViUGFnZVByb3h5LT5oYW5kbGVLZXlib2Fy
ZEV2ZW50KFdlYktpdDo6TmF0aXZlV2ViS2V5Ym9hcmRFdmVudChldmVudCkpOworfQorCit2b2lk
IFFSYXdXZWJWaWV3OjpzZW5kTW91c2VFdmVudChRTW91c2VFdmVudCogZXZlbnQsIGludCBjbGlj
a0NvdW50KQoreworICAgIGQtPm1fd2ViUGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KFdlYktp
dDo6TmF0aXZlV2ViTW91c2VFdmVudChldmVudCwgUVRyYW5zZm9ybSgpLCBjbGlja0NvdW50KSk7
Cit9CisKK3ZvaWQgUVJhd1dlYlZpZXc6OnNlbmRXaGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBldmVu
dCkKK3sKKyAgICBkLT5tX3dlYlBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChXZWJLaXQ6Ok5h
dGl2ZVdlYldoZWVsRXZlbnQoZXZlbnQsIFFUcmFuc2Zvcm0oKSkpOworfQorCit2b2lkIFFSYXdX
ZWJWaWV3OjpzZW5kVG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZlbnQpCit7CisgICAgZC0+bV93
ZWJQYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoV2ViS2l0OjpOYXRpdmVXZWJUb3VjaEV2ZW50
KGV2ZW50LCBRVHJhbnNmb3JtKCkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcmF3L3FyYXd3ZWJ2aWV3X3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5iOGNiYTY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZpZXdfcC5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgor
ICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisvKgorICAgIFRoaXMgZmlsZSBpcyBub3QgcGFydCBvZiB0aGUgcHVi
bGljIFF0IEFwaS4gSXQgbWF5IGNoYW5nZSB3aXRob3V0IG5vdGljZSBhdCBhbnkgdGltZSBpbiBm
dXR1cmUuCisgICAgV2UgbWFrZSBubyBjb21taXRtZW50IHJlZ2FyZGluZyBzb3VyY2UgY29tcGF0
aWJpbGl0eSBvciBiaW5hcnkgY29tcGF0aWJpbGl0eS4KKyovCisKKyNpZm5kZWYgcXJhd3dlYnZp
ZXdfcF9oCisjZGVmaW5lIHFyYXd3ZWJ2aWV3X3BfaAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2Jh
bC5oIgorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0NvbnRleHQuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLUGFnZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3JvdXAuaD4KKworY2xhc3MgUVJl
Y3Q7CitjbGFzcyBRUmVjdEY7CitjbGFzcyBRUG9pbnQ7CitjbGFzcyBRU2l6ZTsKK2NsYXNzIFFL
ZXlFdmVudDsKK2NsYXNzIFFNb3VzZUV2ZW50OworY2xhc3MgUVdoZWVsRXZlbnQ7CitjbGFzcyBR
VG91Y2hFdmVudDsKK2NsYXNzIFFVcmw7CitjbGFzcyBRTWF0cml4NHg0OworY2xhc3MgUUN1cnNv
cjsKKworY2xhc3MgUVJhd1dlYlZpZXdQcml2YXRlOworCitjbGFzcyBRUmF3V2ViVmlld0NsaWVu
dCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+UVJhd1dlYlZpZXdDbGllbnQoKSB7IH0KKworICAg
IHZpcnR1YWwgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCB2aWV3UmVxdWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NDcmFzaGVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB2
aWV3UHJvY2Vzc1JlbGF1bmNoZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50
U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHZpZXdSZXF1
ZXN0ZWRDdXJzb3JPdmVycmlkZShjb25zdCBRQ3Vyc29yJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IFFLZXlFdmVudCosIGJvb2wgd2FzSGFuZGxlZCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQq
LCBib29sIHdhc0hhbmRsZWQpID0gMDsKK307CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFSYXdX
ZWJWaWV3IHsKK3B1YmxpYzoKKyAgICBRUmF3V2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmLCBRUmF3V2ViVmlld0NsaWVudCopOworICAgIH5RUmF3V2ViVmlldygpOworCisgICAg
dm9pZCBjcmVhdGUoKTsKKworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBRU2l6ZSYpOworICAgIFFT
aXplIHNpemUoKSBjb25zdDsKKworICAgIHZvaWQgc2V0Rm9jdXNlZChib29sKTsKKyAgICBib29s
IGlzRm9jdXNlZCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOworICAgIGJv
b2wgaXNWaXNpYmxlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKKyAgICBi
b29sIGlzQWN0aXZlKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldFRyYW5zcGFyZW50QmFja2dyb3Vu
ZChib29sKTsKKyAgICBib29sIHRyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0OworCisgICAg
dm9pZCBzZXREcmF3QmFja2dyb3VuZChib29sKTsKKyAgICBib29sIGRyYXdCYWNrZ3JvdW5kKCkg
Y29uc3Q7CisKKyAgICAvLyBQYWludHMgb24gdGhlIGN1cnJlbnQgR0wgY29udGV4dC4KKyAgICB2
b2lkIHBhaW50KGNvbnN0IFFNYXRyaXg0eDQmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgdW5z
aWduZWQgcGFpbnRGbGFncyk7CisKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZigpOworCisgICAgdm9p
ZCBzZW5kS2V5RXZlbnQoUUtleUV2ZW50Kik7CisgICAgdm9pZCBzZW5kTW91c2VFdmVudChRTW91
c2VFdmVudCosIGludCBjbGlja0NvdW50ID0gMCk7CisgICAgdm9pZCBzZW5kV2hlZWxFdmVudChR
V2hlZWxFdmVudCopOworICAgIHZvaWQgc2VuZFRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKKwor
cHJpdmF0ZToKKyAgICBRUmF3V2ViVmlld1ByaXZhdGUqIGQ7Cit9OworCisjZW5kaWYgLy8gcXJh
d3dlYnZpZXdfcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Jhdy9xcmF3d2Vidmlld19wX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cmF3L3FyYXd3ZWJ2aWV3X3BfcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjBhNGJmNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Jhdy9xcmF3d2Vidmlld19wX3AuaApAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorKi8KKworLyoKKyAgICBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBRdCBB
cGkuIEl0IG1heSBjaGFuZ2Ugd2l0aG91dCBub3RpY2UgYXQgYW55IHRpbWUgaW4gZnV0dXJlLgor
ICAgIFdlIG1ha2Ugbm8gY29tbWl0bWVudCByZWdhcmRpbmcgc291cmNlIGNvbXBhdGliaWxpdHkg
b3IgYmluYXJ5IGNvbXBhdGliaWxpdHkuCisqLworCisjaWZuZGVmIHFyYXd3ZWJ2aWV3X3BfcF9o
CisjZGVmaW5lIHFyYXd3ZWJ2aWV3X3BfcF9oCisKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgorI2luY2x1ZGUgIldlYlBvcHVwTWVudVBy
b3h5LmgiCisjaW5jbHVkZSAicXJhd3dlYnZpZXdfcC5oIgorCitjbGFzcyBRUmF3V2ViVmlld1By
aXZhdGUgOiBwdWJsaWMgV2ViS2l0OjpQYWdlQ2xpZW50IHsKK3B1YmxpYzoKKworICAgIHZpcnR1
YWwgdm9pZCBwYWdlQ2xvc2VkKCkgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmluZEluZGlj
YXRvcihQYXNzUmVmUHRyPFdlYktpdDo6RmluZEluZGljYXRvcj4sIGJvb2wgZmFkZU91dCwgYm9v
bCBhbmltYXRlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvck1haW5GcmFt
ZShib29sIHVzZUN1c3RvbVJlcHJlc2VudGF0aW9uKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBDb3JlSVBDOjpEYXRhUmVmZXJlbmNlJikgeyB9CisgICAg
dmlydHVhbCBkb3VibGUgY3VzdG9tUmVwcmVzZW50YXRpb25ab29tRmFjdG9yKCkgeyByZXR1cm4g
MTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21SZXByZXNlbnRhdGlvblpvb21GYWN0b3Io
ZG91YmxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlU2Nyb2xsYmFyc0Zvck1haW5G
cmFtZSgpIGNvbnN0IHsgfQorICAgIHZpcnR1YWwgdm9pZCBmaW5kU3RyaW5nSW5DdXN0b21SZXBy
ZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkZpbmRPcHRpb25zLCB1bnNpZ25lZCBt
YXhNYXRjaENvdW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY291bnRTdHJpbmdNYXRjaGVzSW5D
dXN0b21SZXByZXNlbnRhdGlvbihjb25zdCBTdHJpbmcmLCBXZWJLaXQ6OkZpbmRPcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxFZGl0
Q29tbWFuZHMoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21O
YXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzJiBhdHRyKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0KFdl
YktpdDo6RG93bmxvYWRQcm94eSogZG93bmxvYWQpOworCisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUF1dGhlbnRpY2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGNv
bnN0IFN0cmluZyYgcmVhbG0sIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUsIFN0cmlu
ZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVD
ZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvblJlcXVlc3QoY29uc3QgU3RyaW5nJiBob3N0bmFtZSwgYm9v
bCYgaWdub3JlRXJyb3JzKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJveHlBdXRoZW50aWNh
dGlvblJlcXVpcmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCB1aW50MTZfdCBwb3J0
LCBjb25zdCBTdHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJp
bmcmIHBhc3N3b3JkKTsKKworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBh
c3NSZWZQdHI8V2ViS2l0OjpXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OlVuZG9PclJlZG8pOworICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvUmVkbyhXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhl
Y3V0ZVVuZG9SZWRvKFdlYktpdDo6V2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8p
OworCisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2Uo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkZs
b2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0
KTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvV2luZG93KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCk7CisgICAgdmlydHVhbCBXZWJDb3JlOjpJbnRSZWN0IHdp
bmRvd1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpOworCisjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHZpcnR1YWwgdm9pZCBlbnRlckFjY2VsZXJhdGVk
Q29tcG9zaXRpbmdNb2RlKGNvbnN0IFdlYktpdDo6TGF5ZXJUcmVlQ29udGV4dCYpOworICAgIHZp
cnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgV2ViS2l0OjpMYXll
clRyZWVDb250ZXh0Jik7CisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHRJbnB1dFN0YXRlKCk7CisjaWYgRU5BQkxFKEdF
U1RVUkVfRVZFTlRTKQorICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aEdlc3R1cmVFdmVudChjb25z
dCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKTsK
KyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5VmlldygpOworICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3QsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZmxhc2hC
YWNraW5nU3RvcmVVcGRhdGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYpOworICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiB0YXJnZXQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGFyZWEpOworCisgICAgdmlydHVhbCB2
b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sIGhpZGRlblVudGlsTW91c2VN
b3Zlcyk7CisgICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNv
bnN0IFN0cmluZyYgbmV3VG9vbHRpcCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKGNv
bnN0IFdlYkNvcmU6OkRyYWdEYXRhJiBkcmFnRGF0YSwgUGFzc1JlZlB0cjxXZWJLaXQ6OlNoYXJl
YWJsZUJpdG1hcD4gZHJhZ0ltYWdlKTsKKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJLaXQ6
OldlYlBvcHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSogd2ViUGFnZVByb3h5KTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5PiBjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYktpdDo6V2ViUGFnZVBy
b3h5KiB3ZWJQYWdlUHJveHkpOworCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViQ29sb3JDaG9vc2VyUHJveHk+IGNyZWF0ZUNv
bG9yQ2hvb3NlclByb3h5KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6Q29s
b3ImIGludGlhbENvbG9yKTsKKyNlbmRpZgorCisgICAgUVJhd1dlYlZpZXdQcml2YXRlKFdlYktp
dDo6V2ViQ29udGV4dCosIFdlYktpdDo6V2ViUGFnZUdyb3VwKiwgUVJhd1dlYlZpZXdDbGllbnQq
KTsKKyAgICB+UVJhd1dlYlZpZXdQcml2YXRlKCk7CisKKyAgICAvLyBQYWdlQ2xpZW50CisKKyAg
ICB2aXJ0dWFsIFBhc3NPd25QdHI8V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3
aW5nQXJlYVByb3h5KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwo
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvcyk7CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NE
aWRDcmFzaCgpOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBy
ZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIG5ld1NpemUpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXJzb3IoY29uc3Qg
V2ViQ29yZTo6Q3Vyc29yJik7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3Rm9jdXNlZCgpIHsg
cmV0dXJuIG1fZm9jdXNlZDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdWaXNpYmxlKCkgeyBy
ZXR1cm4gbV92aXNpYmxlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmlld1dpbmRvd0FjdGl2ZSgp
IHsgcmV0dXJuIG1fYWN0aXZlOyB9CisgICAgdmlydHVhbCBib29sIGlzVmlld0luV2luZG93KCkg
eyByZXR1cm4gdHJ1ZTsgfSAvLyBGSVhNRQorICAgIHZpcnR1YWwgV2ViQ29yZTo6SW50U2l6ZSB2
aWV3U2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRo
S2V5RXZlbnQoY29uc3QgV2ViS2l0OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiwgYm9vbCB3YXNF
dmVudEhhbmRsZWQpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCB2b2lk
IGRvbmVXaXRoVG91Y2hFdmVudChjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYlRvdWNoRXZlbnQmLCBi
b29sIHdhc0V2ZW50SGFuZGxlZCk7CisjZW5kaWYKKworCisgICAgYm9vbCBtX2ZvY3VzZWQ7Cisg
ICAgYm9vbCBtX3Zpc2libGU7CisgICAgYm9vbCBtX2FjdGl2ZTsKKyAgICBRU2l6ZSBtX3NpemU7
CisKKyAgICBRUmF3V2ViVmlld0NsaWVudCogbV9jbGllbnQ7CisgICAgV1RGOjpSZWZQdHI8V2Vi
S2l0OjpXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5OworCitwcml2YXRlOgorICAgIFFSYXdX
ZWJWaWV3KiBxOworfTsKKworI2VuZGlmIC8vIHFyYXd3ZWJ2aWV3X3BfcF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvYmx1ZXNxdWFyZS5o
dG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL2JsdWVzcXVh
cmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGI2Mzk2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1s
L2JsdWVzcXVhcmUuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxib2R5IHN0eWxlPSJtYXJnaW46NjBw
eCI+CisgICAgPHRhYmxlIHN0eWxlPSJib3JkZXI6MTBweCBzb2xpZCBibHVlOyB3aWR0aDo4MHB4
OyBoZWlnaHQ6ODBweCI+CisgICAgICAgIDx0cj48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgIDwv
dGFibGU+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL2h0bWwvcmVkc3F1YXJlLmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL2h0bWwvcmVkc3F1YXJlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uZjcwZDI5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvaHRtbC9yZWRzcXVhcmUuaHRtbApAQCAtMCwwICsxLDUgQEAK
Kzxib2R5IHN0eWxlPSJtYXJnaW46MjBweCI+CisgICAgPHRhYmxlIHN0eWxlPSJib3JkZXI6MTBw
eCBzb2xpZCByZWQ7IHdpZHRoOjE2MHB4OyBoZWlnaHQ6MTYwcHgiPgorICAgICAgICA8dHI+PHRk
PiZuYnNwOzwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3
X25vQmFja2dyb3VuZDEucG5nIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X25vQmFja2dyb3VuZDEucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMy
OTNmNDQ5ZWI5ODk4NThjZTE3Y2RiMjY0NTkzZTEzMzM2NTc5OTMKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDgwMQp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHZwXkNxUzVrNE0/dHlTVF8keXVAcE9i
aEh3QnU0TSQxYGtrNDcqNW4wVEAKeno7Xl9NOEstTFZOaSM0bzlya29fNDVecyZfVV4kZjVsMGIr
aV87YTs3UD1IWEtLMXs8UU1uIXk3byhgS2M7NEM2CnpIan1YYStIPnE3ZHluM0UrMF51SV9STERU
MmtaUy12cDNpWmJGZWZ6Mm9Pb154TGRVR0ApP18pb2VEN3pabDleUwp6UmRMcHJkRklUQHthPjNs
T2kmaVhIMFp7a01JVTdSalh4KElKcj1Ye19zcE1yR1R5NTtvO2d6IXlWV3F9ZkZPNjEKemc4fk4m
Z0BqSVo8eVdjdlc3RkAlS1EydE9UUE9FdXpFeTtSdkdNeWJ7c1c/Z04xN0FfSUc3cXkyPStaMUhw
bHhkCnp1VDgmbXxKPDRCU0RvS1hhKXxxfnFsJSU3TilEcGZNK2dKJXRkbVFhfDFSeT4/XmxYOTcj
c0p6JG90Q2hyVTY/eAp6VGlrR2NjKXBQRmdlc3JkaThKIyg5QHo5bjIoVTBZRG97dXlvOzx4ODc8
PGBBan08SVQlYGdBezsqciNreGxSfn4KenIzSUxyP2lEIzYtRldIcHZEZGtCOURuQChKYW9vVGdf
JH5fTj9QdCkyPyghSih2Q08+T3lkbG11NnsxLW9EIU08CkR5MmF8MgoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X25vQmFja2dyb3VuZDMucG5nIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X25vQmFja2dy
b3VuZDMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmYTUzYjEzNTU5YmI0Mjc4MmE4MGNmY2QwMTlmNzU3ZDUx
MDBjMTkKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDgyNwp6Y21lQVNATj8ob2xIeWB1VkJxIWlh
MHZwXkNxUzVrNE0/dHlTVF8keXVAcE9iaEh3QnU0TSQxYGtrNDcqNW4wVEAKeno7Xl9NOEstTFZO
aSM0by1TdT5GNDVecyZfVWBWaVhoI3U7aV4pRygrYXpMa2VFd2Vfc2IkV196ST8qUURONEN9CnpD
VSYwQyRYTHJpIX00cSFHeFBWakh7WEIlV3ZKZzBZMEVJanNMP0B5Z01+PDxXJWM1RCtpc3Q9djYx
PWVWUjIpNwp6elZaRzJAP1RGcFctfkpXe0h5QVZhLXlpVjdeWURjfEN9RXhuJDRhJGVZJEcrWFpj
P3JsYl5sSkpiNSpuWTM5dEcKemB7VDxAV2xuWG1Jd31hVEZpfVdjdEtDIThfYFE2ODtlWUEhYV52
Jm9TMTxwdXtoWmM+bktRUjx6YmdFfWVxKWomCnpoQ2Y/MlM4TGNESWVXSjlAM0Z0biYoQSE1e0El
elZ3WkB1OUBBQUh+JXdmWGo3WXJqWHktUGJLSkVDazRYeF8/OAp6JiZ2PEBLZDMyaUxWZXJxdEhL
M2JZYSVjTUA4S0ZidUohOX04OXRlJmk9SF8xLXMzPyltPHxWMXFrO2cxI0QtXiYKenVrT0JrPUlQ
VChzfj43I3RHISNoSnNNWEdfV2NnbmFxfjx+NEtTJWh5aUQ0RXw5djw9PDhzcEN4e2lfV2d5ITUm
ClRXbH1NfilYKDdRPmdUZX5EV000ZjRqfUkyCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2h0bWwvcmVzb3Vy
Y2VzL3F3a3ZpZXdfcGFpbnQucG5nIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy9odG1sL3Jlc291cmNlcy9xd2t2aWV3X3BhaW50LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODc0M2Fj
OWUwZmNiZTdkNjZmZjdlNjk4MGVjZjJmZTRhYjFjZDYyCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJh
bCA3MjgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF5DcVM1azRNP3R5U1RfJHl1QHBPYmhId0J1
NE0kMWBrazQ3KjVuMFRACnp6O15fTThLLUxWTmkjNG9SZThFTmhFJlhYZHZsfGd2IWo1KyNncERx
dHpVbHIqV1dDQCNxOWl7RmctIUpvUihzewp6Z3RYYiolKzxIUCpVQ1Ejenh8NStmVXooS09RVkFU
aztEIWV0RzlMWWNnRkZ7YWBJUEsmYUFBcUVfdCVDQHl3WjsKejhXfXNHdSktdXE0MS0hOCtqR2Zw
JXIkPWgtYUc2d2V7SjJsSjkqdz0+cDRAPm9fI0k3bk49fUduN2hlQWZyRGp+CnpwbXJGPE92fkFP
S21GV3UpenVJNnVkeF8/N1VzMEVSMlJkSFltMEEtM3ZRP0Yrczd4JXNYZ353P2ZyMGpyZz45SQpj
aWpeOD5BcVVCY0xIKH4pZkp1fFYpNzgmcW9sYDsrMEQlMHJBcGlnWAoKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xcmF3d2Vidmlldy9xcmF3d2Vidmlldy5wcm8gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FyYXd3ZWJ2aWV3L3FyYXd3ZWJ2aWV3LnBybwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4wMmRjMTk3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xcmF3d2Vidmlldy9xcmF3d2Vidmlldy5wcm8K
QEAgLTAsMCArMSwzIEBACitpbmNsdWRlKC4uL3Rlc3RzLnByaSkKK1NPVVJDRVMgKz0gJCR7VEFS
R0VUfS5jcHAKK1FUICs9IHdlYmtpdC1wcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FyYXd3ZWJ2aWV3L3RzdF9xcmF3d2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FyYXd3ZWJ2aWV3L3RzdF9x
cmF3d2Vidmlldy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUwMTVl
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMvcXJhd3dlYnZpZXcvdHN0X3FyYXd3ZWJ2aWV3LmNwcApAQCAtMCwwICsxLDIzMyBAQAorLyoK
KyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKyNpbmNsdWRlICIuLi91dGlsLmgiCisKKyNpbmNsdWRlIDxRSW1hZ2U+
CisjaW5jbHVkZSA8UU1hdHJpeDR4ND4KKyNpbmNsdWRlIDxRT3BlbkdMQ29udGV4dD4KKyNpbmNs
dWRlIDxRU2l6ZT4KKyNpbmNsdWRlIDxRV2luZG93PgorI2luY2x1ZGUgPFF0VGVzdC9RdFRlc3Q+
CisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQ
YWdlR3JvdXAuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1N0
cmluZ1F0Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgorI2luY2x1ZGUgPFdlYktpdDIv
cXJhd3dlYnZpZXdfcC5oPgorCitzdGF0aWMgV0tDb250ZXh0UmVmIHdlYkNvbnRleHQoKQorewor
ICAgIHN0YXRpYyBXS0NvbnRleHRSZWYgcmVzdWx0ID0gV0tDb250ZXh0Q3JlYXRlKCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFdLUGFnZUdyb3VwUmVmIGNyZWF0ZVdlYlBhZ2VH
cm91cChjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAgIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cCA9V0tQYWdlR3JvdXBDcmVhdGVXaXRoSWRlbnRpZmllcihXS1N0cmluZ0NyZWF0ZVdpdGhRU3Ry
aW5nKG5hbWUpKTsKKyAgICBXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzID0gV0tQYWdlR3Jv
dXBHZXRQcmVmZXJlbmNlcyhwYWdlR3JvdXApOworICAgIFdLUHJlZmVyZW5jZXNTZXRBY2NlbGVy
YXRlZENvbXBvc2l0aW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJl
bmNlc1NldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOworCisgICAg
cmV0dXJuIHBhZ2VHcm91cDsKK30KKworc3RhdGljIFdLUGFnZUdyb3VwUmVmIHdlYlBhZ2VHcm91
cChjb25zdCBRU3RyaW5nJiBuYW1lKQoreworICAgIHN0YXRpYyBXS1BhZ2VHcm91cFJlZiByZXN1
bHQgPSBjcmVhdGVXZWJQYWdlR3JvdXAobmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
Y2xhc3MgV2ViVmlldyA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgUVJhd1dlYlZpZXdDbGllbnQg
eworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgV2ViVmlldyhjb25zdCBRU2l6ZSYgc2l6ZSkK
KyAgICB7CisgICAgICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7CisgICAgICAg
IG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdlTG9hZGVyQ2xpZW50KSk7Cisg
ICAgICAgIGxvYWRlckNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKKyAgICAgICAgbG9hZGVyQ2xp
ZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSA9IFdlYlZpZXc6OmZpbmlzaExvYWRGb3JGcmFtZTsK
KworICAgICAgICBtX3dlYlZpZXcgPSBuZXcgUVJhd1dlYlZpZXcod2ViQ29udGV4dCgpLCB3ZWJQ
YWdlR3JvdXAoUVN0cmluZygpKSwgdGhpcyk7CisgICAgICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJD
bGllbnQobV93ZWJWaWV3LT5wYWdlUmVmKCksICZsb2FkZXJDbGllbnQpOworICAgICAgICBtX3dl
YlZpZXctPmNyZWF0ZSgpOworICAgICAgICBXS1BhZ2VTZXRVc2VGaXhlZExheW91dChtX3dlYlZp
ZXctPnBhZ2VSZWYoKSwgdHJ1ZSk7CisKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRTaXplKHNpemUp
OworICAgICAgICBtX3dlYlZpZXctPnNldEZvY3VzZWQodHJ1ZSk7CisgICAgICAgIG1fd2ViVmll
dy0+c2V0VmlzaWJsZSh0cnVlKTsKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRBY3RpdmUodHJ1ZSk7
CisgICAgfQorCisgICAgfldlYlZpZXcoKSB7IGRlbGV0ZSBtX3dlYlZpZXc7IH0KKworICAgIHZv
aWQgbG9hZChjb25zdCBRU3RyaW5nJiBodG1sKQorICAgIHsKKyAgICAgICAgbV9mcmFtZUxvYWRl
ZCA9IGZhbHNlOworICAgICAgICBXS1BhZ2VMb2FkVVJMKG1fd2ViVmlldy0+cGFnZVJlZigpLCBX
S1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhodG1sLnRvQXNjaWkoKS5kYXRhKCkpKTsKKyAgICAg
ICAgUVZFUklGWSg6OndhaXRGb3JTaWduYWwodGhpcywgU0lHTkFMKGxvYWRlZCgpKSwgNTAwMCkp
OworICAgIH0KKworICAgIHZvaWQgc2V0RHJhd0JhY2tncm91bmQoYm9vbCB2YWx1ZSkgeyBtX3dl
YlZpZXctPnNldERyYXdCYWNrZ3JvdW5kKHZhbHVlKTsgfQorICAgIHZvaWQgc2V0VHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKGJvb2wgdmFsdWUpIHsgbV93ZWJWaWV3LT5zZXRUcmFuc3BhcmVudEJhY2tn
cm91bmQodmFsdWUpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlld05lZWRzRGlzcGxheShjb25z
dCBRUmVjdCYpCisgICAgeworICAgICAgICBtX3dlYlZpZXctPnBhaW50KFFNYXRyaXg0eDQoKSwg
MSwgMCk7CisgICAgICAgIGlmIChtX2ZyYW1lTG9hZGVkKQorICAgICAgICAgICAgZW1pdCBsb2Fk
ZWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZFNjcm9sbChjb25z
dCBRUG9pbnQmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NDcmFzaGVkKCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHZpZXdQcm9jZXNzUmVsYXVuY2hlZCgpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCB2aWV3Q29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFFTaXplJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIHZpZXdSZXF1ZXN0ZWRDdXJzb3JPdmVycmlkZShjb25zdCBRQ3Vyc29yJikgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgUUtleUV2ZW50KiwgYm9v
bCB3YXNIYW5kbGVkKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhUb3VjaEV2ZW50KGNv
bnN0IFFUb3VjaEV2ZW50KiwgYm9vbCB3YXNIYW5kbGVkKSB7IH0KKworICAgIHN0YXRpYyB2b2lk
IGZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tU
eXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKKworc2lnbmFsczoKKyAg
ICB2b2lkIGxvYWRlZCgpOworCitwcml2YXRlOgorICAgIFFSYXdXZWJWaWV3KiBtX3dlYlZpZXc7
CisgICAgYm9vbCBtX2ZyYW1lTG9hZGVkOworfTsKKwordm9pZCBXZWJWaWV3OjpmaW5pc2hMb2Fk
Rm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2Vy
RGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKK3sKKyAgICBXZWJWaWV3KiBvYmogPSBzdGF0
aWNfY2FzdDxXZWJWaWV3Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworICAgIG9i
ai0+bV9mcmFtZUxvYWRlZCA9IHRydWU7Cit9CisKK3N0YXRpYyBib29sIGNvbXBhcmVJbWFnZXMo
Y29uc3QgUUltYWdlJiBpMSwgY29uc3QgUUltYWdlJiBpMiwgY29uc3QgUVBvaW50JiBwMSwgY29u
c3QgUVBvaW50JiBwMiwgaW50IGl0ZXIpCit7CisgICAgY29uc3QgUVBvaW50IHBvaW50KChwMS54
KCkgKyBwMi54KCkpID4+IDEsIChwMS55KCkgKyBwMi55KCkpID4+IDEpOworCisgICAgaWYgKGkx
LnBpeGVsKHBvaW50KSAhPSBpMi5waXhlbChwb2ludCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghaXRlcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAtLWl0ZXI7Cisg
ICAgcmV0dXJuIGNvbXBhcmVJbWFnZXMoaTEsIGkyLCBwb2ludCwgcDEsIGl0ZXIpICYmIGNvbXBh
cmVJbWFnZXMoaTEsIGkyLCBwb2ludCwgcDIsIGl0ZXIpCisgICAgICAgICYmIGNvbXBhcmVJbWFn
ZXMoaTEsIGkyLCBwb2ludCwgUVBvaW50KHAxLngoKSwgcDIueSgpKSwgaXRlcikgJiYgY29tcGFy
ZUltYWdlcyhpMSwgaTIsIHBvaW50LCBRUG9pbnQocDIueCgpLCBwMS55KCkpLCBpdGVyKTsKK30K
Kworc3RhdGljIGJvb2wgY29tcGFyZUltYWdlcyhjb25zdCBRSW1hZ2UmIGkxLCBjb25zdCBRSW1h
Z2UmIGkyLCBpbnQgaXRlcikKK3sKKyAgICBpZiAoaTEuc2l6ZSgpICE9IGkyLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBjb21wYXJlSW1hZ2VzKGkxLCBpMiwgUVBv
aW50KDAsIDApLCBRUG9pbnQoaTEuc2l6ZSgpLndpZHRoKCksIGkxLnNpemUoKS5oZWlnaHQoKSks
IGl0ZXIpOworfQorCitjbGFzcyB0c3RfcXJhd3dlYnZpZXcgOiBwdWJsaWMgUU9iamVjdCB7Cisg
ICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICB0c3RfcXJhd3dlYnZpZXcoKQorICAgICAgICA6IG1f
cmVzb3VyY2VEaXIoUVN0cmluZzo6ZnJvbUFzY2lpKFRFU1RTX1NPVVJDRV9ESVIgIi9odG1sL3Jl
c291cmNlcyIpKQorICAgICAgICAsIG1fYmFzZVVybChRVXJsOjpmcm9tTG9jYWxGaWxlKFRFU1RT
X1NPVVJDRV9ESVIgIi9odG1sIikudG9TdHJpbmcoKSkKKyAgICB7IH0KKworcHJpdmF0ZSBzbG90
czoKKyAgICB2b2lkIHBhaW50KCkgeyBydW4oJnRzdF9xcmF3d2Vidmlldzo6ZG9QYWludCwgbV9y
ZXNvdXJjZURpciArICIvcXdrdmlld19wYWludC5wbmciKTsgfQorICAgIHZvaWQgbm9CYWNrZ3Jv
dW5kMSgpIHsgcnVuKCZ0c3RfcXJhd3dlYnZpZXc6OmRvTm9CYWNrZ3JvdW5kMSwgbV9yZXNvdXJj
ZURpciArICIvcXdrdmlld19ub0JhY2tncm91bmQxLnBuZyIpOyB9CisgICAgdm9pZCBub0JhY2tn
cm91bmQyKCkgeyBydW4oJnRzdF9xcmF3d2Vidmlldzo6ZG9Ob0JhY2tncm91bmQyLCBtX3Jlc291
cmNlRGlyICsgIi9xd2t2aWV3X25vQmFja2dyb3VuZDEucG5nIik7IH0KKyAgICB2b2lkIG5vQmFj
a2dyb3VuZDMoKSB7IHJ1bigmdHN0X3FyYXd3ZWJ2aWV3Ojpkb05vQmFja2dyb3VuZDMsIG1fcmVz
b3VyY2VEaXIgKyAiL3F3a3ZpZXdfbm9CYWNrZ3JvdW5kMy5wbmciKTsgfQorCitwcml2YXRlOgor
ICAgIGNvbnN0IFFTdHJpbmcgbV9yZXNvdXJjZURpcjsKKyAgICBjb25zdCBRU3RyaW5nIG1fYmFz
ZVVybDsKKworICAgIHZvaWQgZG9QYWludChjb25zdCBRU2l6ZSYgc2l6ZSk7CisgICAgdm9pZCBk
b05vQmFja2dyb3VuZDEoY29uc3QgUVNpemUmIHNpemUpOworICAgIHZvaWQgZG9Ob0JhY2tncm91
bmQyKGNvbnN0IFFTaXplJiBzaXplKTsKKyAgICB2b2lkIGRvTm9CYWNrZ3JvdW5kMyhjb25zdCBR
U2l6ZSYgc2l6ZSk7CisKKyAgICB0eXBlZGVmIHZvaWQgKHRzdF9xcmF3d2Vidmlldzo6KlBhaW50
TWV0aG9kKShjb25zdCBRU2l6ZSYgc2l6ZSk7CisgICAgdm9pZCBydW4oUGFpbnRNZXRob2QsIGNv
bnN0IFFTdHJpbmcmIGV4cGVjdGF0aW9uKTsKK307CisKK3ZvaWQgdHN0X3FyYXd3ZWJ2aWV3Ojpk
b1BhaW50KGNvbnN0IFFTaXplJiBzaXplKQoreworICAgIFdlYlZpZXcgdmlldyhzaXplKTsKKyAg
ICB2aWV3LmxvYWQobV9iYXNlVXJsICsgIi9yZWRzcXVhcmUuaHRtbCIpOworfQorCit2b2lkIHRz
dF9xcmF3d2Vidmlldzo6ZG9Ob0JhY2tncm91bmQxKGNvbnN0IFFTaXplJiBzaXplKQoreworICAg
IFdlYlZpZXcgdmlldyhzaXplKTsKKyAgICB2aWV3LnNldFRyYW5zcGFyZW50QmFja2dyb3VuZCh0
cnVlKTsKKyAgICB2aWV3LmxvYWQobV9iYXNlVXJsICsgIi9yZWRzcXVhcmUuaHRtbCIpOworICAg
IHZpZXcubG9hZChtX2Jhc2VVcmwgKyAiL2JsdWVzcXVhcmUuaHRtbCIpOworfQorCit2b2lkIHRz
dF9xcmF3d2Vidmlldzo6ZG9Ob0JhY2tncm91bmQyKGNvbnN0IFFTaXplJiBzaXplKQoreworICAg
IFdlYlZpZXcgdmlldzEoc2l6ZSk7CisgICAgdmlldzEuc2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KHRydWUpOworICAgIHZpZXcxLmxvYWQobV9iYXNlVXJsICsgIi9yZWRzcXVhcmUuaHRtbCIpOwor
CisgICAgV2ViVmlldyB2aWV3MihzaXplKTsKKyAgICB2aWV3Mi5zZXRUcmFuc3BhcmVudEJhY2tn
cm91bmQodHJ1ZSk7CisgICAgdmlldzIubG9hZChtX2Jhc2VVcmwgKyAiL2JsdWVzcXVhcmUuaHRt
bCIpOworfQorCit2b2lkIHRzdF9xcmF3d2Vidmlldzo6ZG9Ob0JhY2tncm91bmQzKGNvbnN0IFFT
aXplJiBzaXplKQoreworICAgIFdlYlZpZXcgdmlldzEoc2l6ZSk7CisgICAgdmlldzEuc2V0VHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKGZhbHNlKTsKKyAgICB2aWV3MS5sb2FkKG1fYmFzZVVybCArICIv
cmVkc3F1YXJlLmh0bWwiKTsKKworICAgIFdlYlZpZXcgdmlldzIoc2l6ZSk7CisgICAgdmlldzIu
c2V0VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKHRydWUpOworICAgIHZpZXcyLmxvYWQobV9iYXNlVXJs
ICsgIi9ibHVlc3F1YXJlLmh0bWwiKTsKK30KKwordm9pZCB0c3RfcXJhd3dlYnZpZXc6OnJ1bihQ
YWludE1ldGhvZCBtZXRob2QsIGNvbnN0IFFTdHJpbmcmIGV4cGVjdGF0aW9uKQoreworCisgICAg
UVdpbmRvdyB3aW5kb3c7CisgICAgd2luZG93LnNldFN1cmZhY2VUeXBlKFFTdXJmYWNlOjpPcGVu
R0xTdXJmYWNlKTsKKyAgICB3aW5kb3cuc2V0R2VvbWV0cnkoMCwgMCwgMjAwLCAyMDApOworICAg
IHdpbmRvdy5jcmVhdGUoKTsKKworICAgIFFPcGVuR0xDb250ZXh0IGNvbnRleHQ7CisgICAgY29u
dGV4dC5jcmVhdGUoKTsKKyAgICBjb250ZXh0Lm1ha2VDdXJyZW50KCZ3aW5kb3cpOworCisgICAg
Z2xWaWV3cG9ydCgwLCAwLCB3aW5kb3cuc2l6ZSgpLndpZHRoKCksIHdpbmRvdy5zaXplKCkuaGVp
Z2h0KCkpOworICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKKyAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOworCisgICAgKHRoaXMtPiptZXRob2QpKHdpbmRvdy5zaXplKCkpOwor
CisgICAgUUltYWdlIGltYWdlKHdpbmRvdy5zaXplKCksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9Q
cmVtdWx0aXBsaWVkKTsKKyAgICBnbFJlYWRQaXhlbHMoMCwgMCwgd2luZG93LnNpemUoKS53aWR0
aCgpLCB3aW5kb3cuc2l6ZSgpLmhlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBp
bWFnZS5iaXRzKCkpOworCisgICAgUVZFUklGWShjb21wYXJlSW1hZ2VzKFFJbWFnZShleHBlY3Rh
dGlvbiksIGltYWdlLnJnYlN3YXBwZWQoKSwgNSkpOworfQorCitRVEVTVF9NQUlOKHRzdF9xcmF3
d2VidmlldykKKworI2luY2x1ZGUgInRzdF9xcmF3d2Vidmlldy5tb2MiCmRpZmYgLS1naXQgYS9T
b3VyY2UvdGVzdHMucHJpIGIvU291cmNlL3Rlc3RzLnByaQppbmRleCA1ZDJlYjZiLi4yNzgxNTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvdGVzdHMucHJpCisrKyBiL1NvdXJjZS90ZXN0cy5wcmkKQEAg
LTUwLDUgKzUwLDYgQEAgU1VCRElSUyArPSBcCiAgICAgICAgICQkV0VCS0lUMl9URVNUU19ESVIv
aW5zcGVjdG9yc2VydmVyIFwKICAgICAgICAgJCRXRUJLSVQyX1RFU1RTX0RJUi9wdWJsaWNhcGkg
XAogICAgICAgICAkJFdFQktJVDJfVEVTVFNfRElSL3FxdWlja3dlYnZpZXcgXAotICAgICAgICAk
JFdFQktJVDJfVEVTVFNfRElSL3FtbHRlc3RzCisgICAgICAgICQkV0VCS0lUMl9URVNUU19ESVIv
cW1sdGVzdHMgXAorICAgICAgICAkJFdFQktJVDJfVEVTVFNfRElSL3FyYXd3ZWJ2aWV3CiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWRkMDUz
Yi4uMGNiNzExZSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA2LTI5ICBMdWl6IEFnb3N0aW5pICA8bHVpei5h
Z29zdGluaUBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIFByaXZhdGUgbm9uLVF0UXVp
Y2sgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
NDUzMgorCisgICAgICAgIE1pbmlCcm93c2VyUmF3IGlzIGFuIHVzYWdlIGV4YW1wbGUgZm9yIHRo
ZSBRUmF3V2ViVmlldyBBUEkuCisgICAgICAgIEl0IGlzIG9ubHkgYW4gZXhhbXBsZSBhbmQgaXMg
bm90IGZ1bGx5IGltcGxlbWVudGVkLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5vYW0gUm9zZW50
aGFsLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcmF3L0Rlcml2ZWRTb3VyY2VzLnByaTog
QWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcmF3L01pbmlCcm93c2VyUmF3LnBybzog
QWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcmF3L1RhcmdldC5wcmk6IEFkZGVkLgor
ICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3Jhdy9WaWV3LmNwcDogQWRkZWQuCisgICAgICAgICog
TWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcuaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAgICAqIFRvb2xzLnBybzoKKwogMjAxMi0wNi0y
OSAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICB3ZWJraXRw
eTogYWRkIGNvbW1lbnQgYWJvdXQgaG93IGRldGVybWluZV9mdWxsX3BvcnRfbmFtZSgpIHdvcmtz
IGZvciBhcHBsZSBwb3J0cywgZml4IC13azIgYnVnCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9yYXcvRGVyaXZlZFNvdXJjZXMucHJpIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3
L0Rlcml2ZWRTb3VyY2VzLnByaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5k
YzRkMmY0Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L0Rlcml2
ZWRTb3VyY2VzLnByaQpAQCAtMCwwICsxLDYgQEAKK1RFTVBMQVRFID0gZGVyaXZlZAorCisjIE1h
a2Ugc3VyZSBmb3J3YXJkZWQgaGVhZGVycyBuZWVkZWQgYnkgdGhpcyBwcm9qZWN0IGFyZSBwcmVz
ZW50Citmd2hlYWRlcl9nZW5lcmF0b3IuY29tbWFuZHMgPSBwZXJsICQke1JPT1RfV0VCS0lUX0RJ
Un0vU291cmNlL1dlYktpdDIvU2NyaXB0cy9nZW5lcmF0ZS1mb3J3YXJkaW5nLWhlYWRlcnMucGwg
JCR7Uk9PVF9XRUJLSVRfRElSfS9Ub29scy9XZWJLaXRUZXN0UnVubmVyICQke1JPT1RfQlVJTERf
RElSfS9Tb3VyY2UvaW5jbHVkZSBxdAorZndoZWFkZXJfZ2VuZXJhdG9yLmRlcGVuZHMgID0gJCR7
Uk9PVF9XRUJLSVRfRElSfS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL2dlbmVyYXRlLWZvcndhcmRp
bmctaGVhZGVycy5wbAorR0VORVJBVE9SUyArPSBmd2hlYWRlcl9nZW5lcmF0b3IKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9NaW5pQnJvd3NlclJhdy5wcm8gYi9Ub29scy9N
aW5pQnJvd3Nlci9xdC9yYXcvTWluaUJyb3dzZXJSYXcucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjA1MDMxMDQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9yYXcvTWluaUJyb3dzZXJSYXcucHJvCkBAIC0wLDAgKzEsOSBAQAorVEVNUExBVEUg
PSBzdWJkaXJzCitDT05GSUcgKz0gb3JkZXJlZAorCitkZXJpdmVkX3NvdXJjZXMuZmlsZSA9IERl
cml2ZWRTb3VyY2VzLnByaQordGFyZ2V0LmZpbGUgPSBUYXJnZXQucHJpCisKK1NVQkRJUlMgPSBk
ZXJpdmVkX3NvdXJjZXMgdGFyZ2V0CisKK2FkZFN0cmljdFN1YmRpck9yZGVyQmV0d2VlbihkZXJp
dmVkX3NvdXJjZXMsIHRhcmdldCkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Jh
dy9UYXJnZXQucHJpIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L1RhcmdldC5wcmkKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYxYjMzZQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9UYXJnZXQucHJpCkBAIC0wLDAgKzEsMTYgQEAKK1RF
TVBMQVRFID0gYXBwCitUQVJHRVQgPSBNaW5pQnJvd3NlclJhdworCitIRUFERVJTICs9IFwKKyAg
ICBWaWV3LmgKKworU09VUkNFUyArPSBcCisgICAgVmlldy5jcHAKKworREVTVERJUiA9ICQke1JP
T1RfQlVJTERfRElSfS9iaW4KKworUVQgPSBjb3JlIGd1aSBuZXR3b3JrIHdlYmtpdAorCitsb2Fk
KGZlYXR1cmVzKQorCitXRUJLSVQgKz0gd3RmIGphdmFzY3JpcHRjb3JlIHdlYmtpdDIKZGlmZiAt
LWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9WaWV3LmNwcCBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L3Jhdy9WaWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5h
N2IwYWE4Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvcmF3L1ZpZXcu
Y3BwCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBD
b3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiVmll
dy5oIgorCisjaW5jbHVkZSA8UURlYnVnPgorI2luY2x1ZGUgPFFFeHBvc2VFdmVudD4KKyNpbmNs
dWRlIDxRR3VpQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UUtleUV2ZW50PgorI2luY2x1ZGUgPFFN
YXRyaXg0eDQ+CisjaW5jbHVkZSA8UVJlc2l6ZUV2ZW50PgorI2luY2x1ZGUgPFFVcmw+CisKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tQYWdlR3Jv
dXAuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLUHJlZmVyZW5jZXMuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1N0cmluZ1F0
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgorCisKK3N0YXRpYyBXS0NvbnRleHRSZWYg
Y3JlYXRlV2ViQ29udGV4dCgpCit7CisgICAgcmV0dXJuIFdLQ29udGV4dENyZWF0ZSgpOworfQor
CitzdGF0aWMgV0tQYWdlR3JvdXBSZWYgY3JlYXRlV2ViUGFnZUdyb3VwKGNvbnN0IFFTdHJpbmcm
IG5hbWUpCit7CisgICAgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwID1XS1BhZ2VHcm91cENyZWF0
ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcobmFtZSkpOworICAgIFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXMgPSBXS1BhZ2VHcm91cEdldFByZWZlcmVuY2VzKHBh
Z2VHcm91cCk7CisgICAgV0tQcmVmZXJlbmNlc1NldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFi
bGVkKHByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0RnJhbWVGbGF0dGVu
aW5nRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisKKyAgICByZXR1cm4gcGFnZUdyb3VwOwor
fQorCitWaWV3Ojp+VmlldygpCit7CisgICAgZGVsZXRlIG1fY29udGV4dDsKKyAgICBkZWxldGUg
bV93ZWJWaWV3OworfQorCitWaWV3OjpWaWV3KGNvbnN0IFFTdHJpbmcmIHVybCkKKyAgICA6IG1f
dXJsKHVybCkKKyAgICAsIG1fYWN0aXZlKGZhbHNlKQoreworICAgIHNldFN1cmZhY2VUeXBlKE9w
ZW5HTFN1cmZhY2UpOworICAgIHNldEdlb21ldHJ5KDUwLCA1MCwgOTgwLCA2MDApOworICAgIHNl
dFdpbmRvd0ZsYWdzKFF0OjpXaW5kb3cgfCBRdDo6V2luZG93VGl0bGVIaW50KTsKKyAgICBjcmVh
dGUoKTsKKworICAgIG1fY29udGV4dCA9IG5ldyBRT3BlbkdMQ29udGV4dDsKKyAgICBtX2NvbnRl
eHQtPmNyZWF0ZSgpOworCisgICAgbV93ZWJWaWV3ID0gbmV3IFFSYXdXZWJWaWV3KGNyZWF0ZVdl
YkNvbnRleHQoKSwgY3JlYXRlV2ViUGFnZUdyb3VwKFFTdHJpbmcoKSksIHRoaXMpOworICAgIG1f
d2ViVmlldy0+Y3JlYXRlKCk7CisgICAgV0tQYWdlU2V0VXNlRml4ZWRMYXlvdXQobV93ZWJWaWV3
LT5wYWdlUmVmKCksIHRydWUpOworfQorCisKK3ZvaWQgVmlldzo6ZXhwb3NlRXZlbnQoUUV4cG9z
ZUV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlKSB7CisgICAgICAgIG1fYWN0aXZl
ID0gdHJ1ZTsKKyAgICAgICAgV0tQYWdlTG9hZFVSTChtX3dlYlZpZXctPnBhZ2VSZWYoKSwgV0tV
UkxDcmVhdGVXaXRoVVRGOENTdHJpbmcobV91cmwudG9Bc2NpaSgpLmRhdGEoKSkpOworCisgICAg
ICAgIG1fd2ViVmlldy0+c2V0Rm9jdXNlZCh0cnVlKTsKKyAgICAgICAgbV93ZWJWaWV3LT5zZXRW
aXNpYmxlKHRydWUpOworICAgICAgICBtX3dlYlZpZXctPnNldEFjdGl2ZSh0cnVlKTsKKyAgICB9
Cit9CisKK3ZvaWQgVmlldzo6cmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50KiBldmVudCkKK3sKKyAg
ICBtX3dlYlZpZXctPnNldFNpemUoZXZlbnQtPnNpemUoKSk7Cit9CisKK3ZvaWQgVmlldzo6dGlt
ZXJFdmVudChRVGltZXJFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50aW1lcklkKCkg
PT0gbV9wYWludFRpbWVyLnRpbWVySWQoKSkgeworICAgICAgICBtX3BhaW50VGltZXIuc3RvcCgp
OworICAgICAgICBtX2NvbnRleHQtPm1ha2VDdXJyZW50KHRoaXMpOworICAgICAgICBtX3dlYlZp
ZXctPnBhaW50KFFNYXRyaXg0eDQoKSwgMSwgMCk7CisgICAgICAgIG1fY29udGV4dC0+c3dhcEJ1
ZmZlcnModGhpcyk7CisgICAgfQorfQorCit2b2lkIFZpZXc6OnZpZXdOZWVkc0Rpc3BsYXkoY29u
c3QgUVJlY3QmKQoreworICAgIGlmICghbV9wYWludFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IG1fcGFpbnRUaW1lci5zdGFydCgwLCB0aGlzKTsKK30KKwordm9pZCBWaWV3Ojp2aWV3UmVxdWVz
dGVkQ3Vyc29yT3ZlcnJpZGUoY29uc3QgUUN1cnNvciYgY3Vyc29yKQoreworICAgIFFHdWlBcHBs
aWNhdGlvbjo6c2V0T3ZlcnJpZGVDdXJzb3IoY3Vyc29yKTsKK30KKwordm9pZCBWaWV3Ojpkb25l
V2l0aEtleUV2ZW50KGNvbnN0IFFLZXlFdmVudCogZXZlbnQsIGJvb2wgd2FzSGFuZGxlZCkKK3sK
KyAgICBpZiAod2FzSGFuZGxlZCB8fCBldmVudC0+aXNBY2NlcHRlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBzd2l0Y2ggKGV2ZW50LT5rZXkoKSkgeworICAgIGNhc2UgUXQ6OktleV9CYWNr
c3BhY2U6IHsKKyAgICAgICAgV0tQYWdlUmVmIHBhZ2UgPSBtX3dlYlZpZXctPnBhZ2VSZWYoKTsK
KyAgICAgICAgaWYgKFdLUGFnZUNhbkdvQmFjayhwYWdlKSkKKyAgICAgICAgICAgIFdLUGFnZUdv
QmFjayhwYWdlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KK30KKworaW50IG1haW4o
aW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIFFHdWlBcHBsaWNhdGlvbiBhcHAoYXJnYywg
YXJndik7CisKKyAgICBWaWV3IHZpZXcoYXBwLmFyZ3VtZW50cygpLnNpemUoKSA+IDEgPyBhcHAu
YXJndW1lbnRzKCkuYXQoMSkgOiBRU3RyaW5nOjpmcm9tQXNjaWkoImh0dHA6Ly93d3cuZ29vZ2xl
LmNvbSIpKTsKKyAgICB2aWV3LnNob3coKTsKKyAgICByZXR1cm4gYXBwLmV4ZWMoKTsKK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L3Jhdy9WaWV3LmggYi9Ub29scy9NaW5pQnJv
d3Nlci9xdC9yYXcvVmlldy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZk
ZTdhMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9yYXcvVmlldy5o
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgVmlld19oCisj
ZGVmaW5lIFZpZXdfaAorCisjaW5jbHVkZSA8UUJhc2ljVGltZXI+CisjaW5jbHVkZSA8UU9wZW5H
TENvbnRleHQ+CisjaW5jbHVkZSA8UVdpbmRvdz4KKyNpbmNsdWRlIDxXZWJLaXQyL3FyYXd3ZWJ2
aWV3X3AuaD4KKworCitjbGFzcyBWaWV3IDogIHB1YmxpYyBRV2luZG93LCBwcml2YXRlIFFSYXdX
ZWJWaWV3Q2xpZW50IHsKK3B1YmxpYzoKKyAgICBWaWV3KGNvbnN0IFFTdHJpbmcmIHVybCk7Cisg
ICAgflZpZXcoKTsKKworcHVibGljOiAvLyBXS1ZpZXdDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQg
dmlld05lZWRzRGlzcGxheShjb25zdCBRUmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCB2aWV3UmVx
dWVzdGVkU2Nyb2xsKGNvbnN0IFFQb2ludCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB2aWV3UHJv
Y2Vzc0NyYXNoZWQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1Byb2Nlc3NSZWxhdW5jaGVk
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHZpZXdDb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNp
emUmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdmlld1JlcXVlc3RlZEN1cnNvck92ZXJyaWRlKGNv
bnN0IFFDdXJzb3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBR
S2V5RXZlbnQqLCBib29sIHdhc0hhbmRsZWQpOworICAgIHZpcnR1YWwgdm9pZCBkb25lV2l0aFRv
dWNoRXZlbnQoY29uc3QgUVRvdWNoRXZlbnQqLCBib29sIHdhc0hhbmRsZWQpIHsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGV4cG9zZUV2ZW50KFFFeHBvc2VFdmVudCopOworICAg
IHZpcnR1YWwgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQqKTsKKworICAgIHZpcnR1YWwg
dm9pZCBrZXlQcmVzc0V2ZW50KFFLZXlFdmVudCogZXZlbnQpIHsgbV93ZWJWaWV3LT5zZW5kS2V5
RXZlbnQoZXZlbnQpOyB9CisgICAgdmlydHVhbCB2b2lkIGtleVJlbGVhc2VFdmVudChRS2V5RXZl
bnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+c2VuZEtleUV2ZW50KGV2ZW50KTsgfQorCisgICAgdmly
dHVhbCB2b2lkIG1vdXNlRG91YmxlQ2xpY2tFdmVudChRTW91c2VFdmVudCogZXZlbnQpIHsgbV93
ZWJWaWV3LT5zZW5kTW91c2VFdmVudChldmVudCwgMik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgbW91
c2VNb3ZlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2ViVmlldy0+c2VuZE1vdXNlRXZl
bnQoZXZlbnQpOyB9CisgICAgdmlydHVhbCB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVu
dCogZXZlbnQpIHsgbV93ZWJWaWV3LT5zZW5kTW91c2VFdmVudChldmVudCwgMSk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgbW91c2VSZWxlYXNlRXZlbnQoUU1vdXNlRXZlbnQqIGV2ZW50KSB7IG1fd2Vi
Vmlldy0+c2VuZE1vdXNlRXZlbnQoZXZlbnQpOyB9CisKK3ByaXZhdGU6CisgICAgUVJhd1dlYlZp
ZXcqIG1fd2ViVmlldzsKKyAgICBRT3BlbkdMQ29udGV4dCAqbV9jb250ZXh0OworICAgIFFCYXNp
Y1RpbWVyIG1fcGFpbnRUaW1lcjsKKworICAgIFFTdHJpbmcgbV91cmw7CisgICAgYm9vbCBtX2Fj
dGl2ZTsKKworICAgIHZpcnR1YWwgdm9pZCB0aW1lckV2ZW50KFFUaW1lckV2ZW50Kik7Cit9Owor
CisjZW5kaWYgLy8gVmlld19oCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkK
aW5kZXggZGZmNzkwZS4uOGNkODc0NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlci5weQpAQCAtMTUyLDcgKzE1Miw4IEBAIF9QQVRIX1JVTEVTX1NQRUNJRklFUiA9IFsKICAg
ICAgICItd2hpdGVzcGFjZS9kZWNsYXJhdGlvbiJdKSwKIAogICAgICAoWyMgUXQncyBNaW5pQnJv
d3NlciBoYXMgbm8gY29uZmlnLmgKLSAgICAgICAiVG9vbHMvTWluaUJyb3dzZXIvcXQiXSwKKyAg
ICAgICAiVG9vbHMvTWluaUJyb3dzZXIvcXQiLAorICAgICAgICJUb29scy9NaW5pQnJvd3Nlci9x
dC9yYXciXSwKICAgICAgIFsiLWJ1aWxkL2luY2x1ZGUiXSksCiAKICAgICAoWyMgVGhlIFF0IEFQ
SXMgdXNlIFF0L1FNTCBuYW1pbmcgc3R5bGUsIHdoaWNoIGluY2x1ZGVzCmRpZmYgLS1naXQgYS9U
b29scy9Ub29scy5wcm8gYi9Ub29scy9Ub29scy5wcm8KaW5kZXggNjRlODM3Yi4uN2Y5N2VmZiAx
MDA2NDQKLS0tIGEvVG9vbHMvVG9vbHMucHJvCisrKyBiL1Rvb2xzL1Rvb2xzLnBybwpAQCAtMTgs
NiArMTgsNyBAQCBsb2FkKGZlYXR1cmVzKQogIW5vX3dlYmtpdDIgewogICAgIFNVQkRJUlMgKz0g
TWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCiAgICAgU1VCRElSUyArPSBXZWJLaXRUZXN0
UnVubmVyL1dlYktpdFRlc3RSdW5uZXIucHJvCisgICAgU1VCRElSUyArPSBNaW5pQnJvd3Nlci9x
dC9yYXcvTWluaUJyb3dzZXJSYXcucHJvCiB9CiAKICMgRklYTUU6IHdpdGggUXQgNSB0aGUgdGVz
dCBwbHVnaW4gY2F1c2Ugc29tZSB0cm91YmxlIGR1cmluZyBsYXlvdXQgdGVzdHMuCi0tIAoxLjcu
OS41Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>