<?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>100334</bug_id>
          
          <creation_ts>2012-10-24 23:08:56 -0700</creation_ts>
          <short_desc>[WK2] Make WebVibrationProxy to be a member of WebPageProxy.</short_desc>
          <delta_ts>2012-11-18 23:45:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>100310</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Byungwoo Lee">bw80.lee</reporter>
          <assigned_to name="Byungwoo Lee">bw80.lee</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>d-r</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>750400</commentid>
    <comment_count>0</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-24 23:08:56 -0700</bug_when>
    <thetext>There is below assertion after r132386.

ASSERTION FAILED: !decoder.destinationID()
/home/buildslave-1/webkit-buildslave/efl-linux-64-debug/build/Source/WebKit2/Platform/CoreIPC/MessageReceiverMap.cpp(79) : bool CoreIPC::MessageReceiverMap::dispatchMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&amp;)

To fix the assertion problem,
adding/removing messageReceiver for WebVibrationProxy need to use new addMessageReceiver() function with destinationID for it&apos;s parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750403</commentid>
    <comment_count>1</comment_count>
      <attachid>170557</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-24 23:14:38 -0700</bug_when>
    <thetext>Created attachment 170557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750412</commentid>
    <comment_count>2</comment_count>
      <attachid>170557</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-24 23:21:51 -0700</bug_when>
    <thetext>Comment on attachment 170557
Patch

Attachment 170557 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14559527</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750420</commentid>
    <comment_count>3</comment_count>
      <attachid>170560</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-24 23:28:28 -0700</bug_when>
    <thetext>Created attachment 170560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750429</commentid>
    <comment_count>4</comment_count>
      <attachid>170560</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-24 23:33:33 -0700</bug_when>
    <thetext>Comment on attachment 170560
Patch

Attachment 170560 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14545524</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750435</commentid>
    <comment_count>5</comment_count>
      <attachid>170562</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-24 23:39:06 -0700</bug_when>
    <thetext>Created attachment 170562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750616</commentid>
    <comment_count>6</comment_count>
      <attachid>170599</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-25 03:31:43 -0700</bug_when>
    <thetext>Created attachment 170599
Patch

Modified title and change log more clearly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750660</commentid>
    <comment_count>7</comment_count>
      <attachid>170610</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-25 04:20:41 -0700</bug_when>
    <thetext>Created attachment 170610
Patch

Oh my god, what happened to me. I need some rest today :(
Correct the title of the change log DownloadProxy -&gt; WebVibrationProxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750867</commentid>
    <comment_count>8</comment_count>
      <attachid>170610</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-25 08:44:47 -0700</bug_when>
    <thetext>Comment on attachment 170610
Patch

I don&apos;t like this approach. The whole point of introducing named messages and message receiver maps is so we can get rid of a bunch of #ifdefs and let the relevant objects themselves be in charge of listening for messages.

WebVibrationProxy objects seem to be per context but they still use page destination IDs? Maybe they should be per page? If not, I&apos;d recommend not using the destination ID but instead passing the page ID as an explicit argument to the messages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751378</commentid>
    <comment_count>9</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-25 17:45:20 -0700</bug_when>
    <thetext>Yes! Actually, I wasn&apos;t sure this approach also :)
Thank your for the clarification.

Current Vibration API and proxy/provider doesn&apos;t use the PageID or page proxy.
Based on the current implementation, pageID is not needed.
So I&apos;m not sure that explicitly passing pageID is ok.

If the page ID is important to the vibration operation, it will be better to follow the other way that you suggested : make WebVibrationProxy per page.

But I think that needs some discussion.

How about removing the page id to prevent the assertion, and making another bug that arranges the issue of Vibration and page id?
(Or, is it enough to pass the pageID explicitly?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751481</commentid>
    <comment_count>10</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-25 20:15:55 -0700</bug_when>
    <thetext>I found that, WebNetworkInfoManagerProxy also has similar issue.

Some of the IPC messages of the proxy use page ID as destination ID, but some of it don&apos;t.

This seems to be arranged also.

And until these issue is cleared, &apos;Passing the page ID explicitly&apos; will be better not to lose the information from the WebProcess.

How about this approach?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>751634</commentid>
    <comment_count>11</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-26 00:23:57 -0700</bug_when>
    <thetext>&apos;Adding explicit page ID&apos; will be as : Bug 100473</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752838</commentid>
    <comment_count>12</comment_count>
      <attachid>171103</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-27 15:14:17 -0700</bug_when>
    <thetext>Created attachment 171103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752839</commentid>
    <comment_count>13</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-27 15:15:34 -0700</bug_when>
    <thetext>I updated new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752840</commentid>
    <comment_count>14</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-27 15:26:13 -0700</bug_when>
    <thetext>I updated new patch that make WebVibrationProxy to be a member of WebPageProxy.

This patch includes API changes also.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752948</commentid>
    <comment_count>15</comment_count>
      <attachid>171131</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-28 09:21:24 -0700</bug_when>
    <thetext>Created attachment 171131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752953</commentid>
    <comment_count>16</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-28 09:42:09 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=171131) [details]
&gt; Patch

This was uploaded again to make ews green, and to add more detail information in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755113</commentid>
    <comment_count>17</comment_count>
      <attachid>171610</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-31 03:15:18 -0700</bug_when>
    <thetext>Created attachment 171610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755114</commentid>
    <comment_count>18</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-31 03:15:47 -0700</bug_when>
    <thetext>Rebased with the latest source.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755273</commentid>
    <comment_count>19</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-10-31 07:15:26 -0700</bug_when>
    <thetext>Please unskip the unit test after landing, see bug 100839.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755313</commentid>
    <comment_count>20</comment_count>
      <attachid>171610</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-31 08:06:51 -0700</bug_when>
    <thetext>Comment on attachment 171610
Patch

This looks mostly good, but I think the WebVibrationProxy should be the message receiver. The whole point of the MessageReceiver design is to avoid having a bunch of #ifdefs inside didReceiveMessage.

This means that you&apos;ll have to create the WebVibrationProxy eagerly in the WebPageProxy constructor. I don&apos;t think that should be a big problem though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755768</commentid>
    <comment_count>21</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-31 18:10:54 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 171610 [details])
&gt; This looks mostly good, but I think the WebVibrationProxy should be the message receiver. The whole point of the MessageReceiver design is to avoid having a bunch of #ifdefs inside didReceiveMessage.
&gt; 
&gt; This means that you&apos;ll have to create the WebVibrationProxy eagerly in the WebPageProxy constructor. I don&apos;t think that should be a big problem though.

Thanks for the comment.

I&apos;m sorry but I cannot get your point clearly. Could you explain more?

WebVibrationProxy is already a MessageReceiver(the class inherits CoreIPC::MessageReceiver), and it is added to the message receiver map in WebPageProxy because the vibration IPC has page destination ID.

The reason to use #if ENABLE(VIBRATION) in the WebPageProxy::didReceiveMessage() is that, WebVibrationProxy class will not defined(and WebPageProxy will not have WebVibrationProxy) if VIBRATION feature is off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755780</commentid>
    <comment_count>22</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-31 18:22:51 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; (From update of attachment 171610 [details] [details])
&gt; &gt; This looks mostly good, but I think the WebVibrationProxy should be the message receiver. The whole point of the MessageReceiver design is to avoid having a bunch of #ifdefs inside didReceiveMessage.
&gt; &gt; 
&gt; &gt; This means that you&apos;ll have to create the WebVibrationProxy eagerly in the WebPageProxy constructor. I don&apos;t think that should be a big problem though.
&gt; 
&gt; Thanks for the comment.
&gt; 
&gt; I&apos;m sorry but I cannot get your point clearly. Could you explain more?
&gt; 
&gt; WebVibrationProxy is already a MessageReceiver(the class inherits CoreIPC::MessageReceiver), and it is added to the message receiver map in WebPageProxy because the vibration IPC has page destination ID.
&gt; 

WeProcessProxy already has a message receiver map, the web vibration proxy should be added to that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755824</commentid>
    <comment_count>23</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-31 20:12:51 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; (In reply to comment #20)
&gt; &gt; &gt; (From update of attachment 171610 [details] [details] [details])
&gt; &gt; &gt; This looks mostly good, but I think the WebVibrationProxy should be the message receiver. The whole point of the MessageReceiver design is to avoid having a bunch of #ifdefs inside didReceiveMessage.
&gt; &gt; &gt; 
&gt; &gt; &gt; This means that you&apos;ll have to create the WebVibrationProxy eagerly in the WebPageProxy constructor. I don&apos;t think that should be a big problem though.
&gt; &gt; 
&gt; &gt; Thanks for the comment.
&gt; &gt; 
&gt; &gt; I&apos;m sorry but I cannot get your point clearly. Could you explain more?
&gt; &gt; 
&gt; &gt; WebVibrationProxy is already a MessageReceiver(the class inherits CoreIPC::MessageReceiver), and it is added to the message receiver map in WebPageProxy because the vibration IPC has page destination ID.
&gt; &gt; 
&gt; 
&gt; WeProcessProxy already has a message receiver map, the web vibration proxy should be added to that.

Oh! I got the point :)

Maybe you told about the message receiver map in the WebContext.
(Currently, WebProcessProxy has WebContext and WebContext has message receiver map)

I&apos;ll apply those. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755921</commentid>
    <comment_count>24</comment_count>
      <attachid>171776</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-31 23:20:25 -0700</bug_when>
    <thetext>Created attachment 171776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755923</commentid>
    <comment_count>25</comment_count>
      <attachid>171776</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-10-31 23:27:25 -0700</bug_when>
    <thetext>Comment on attachment 171776
Patch

Applied the guide from Anders.

Previously, WebVibrationProxy was defined as MessageReceiver and added to the message receiver map, but the vibration IPC messages were not handled by the message receiver map. (Terrible mistake!)

As Anders pointed, WebVibrationProxy will be added to the message receiver map of WebContext and the vibration IPC messages will be handled by the message receiver map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757808</commentid>
    <comment_count>26</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-02 17:57:39 -0700</bug_when>
    <thetext>I made two bug for the EFL port issue : Bug 101132, Bug 101135
It will be clear to handle those in the separate issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757812</commentid>
    <comment_count>27</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-02 18:00:24 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; I made two bug for the EFL port issue : Bug 101132, Bug 101135
&gt; It will be clear to handle those in the separate issue.

Oops. this is wrong comment (Should be in Bug 98580)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760363</commentid>
    <comment_count>28</comment_count>
      <attachid>171776</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-06 21:08:01 -0800</bug_when>
    <thetext>Comment on attachment 171776
Patch

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

&gt; Source/WebKit2/UIProcess/API/C/WKPage.cpp:198
&gt; +#else

Use UNUSED_PARAM(page)

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:35
&gt; +#if ENABLE(VIBRATION)

I prefer to place #if ENABLE() below main include list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760370</commentid>
    <comment_count>29</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-06 21:20:36 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 171776 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171776&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKPage.cpp:198
&gt; &gt; +#else
&gt; 
&gt; Use UNUSED_PARAM(page)
Ok! I&apos;ll add it.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:35
&gt; &gt; +#if ENABLE(VIBRATION)
&gt; 
&gt; I prefer to place #if ENABLE() below main include list.
Ok. I&apos;ll move it to the below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760394</commentid>
    <comment_count>30</comment_count>
      <attachid>171776</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-11-06 22:13:15 -0800</bug_when>
    <thetext>Comment on attachment 171776
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:460
&gt; +    evas_object_smart_callback_call(m_view, &quot;vibrate&quot;, &amp;vibrationTime);

I think you have to move this to VibrationClientEfl.cpp. In previous refactoring, each client can send a signal via a viewImpl object.

For example,

void VibrationClientEfl::vibrateCallback(WKVibrationRef, uint64_t vibrationTime, const void* clientInfo)
{ 
    toVibrationClient(clientInfo)-&gt;m_viewImpl-&gt;smartCallback&lt;Vibration&gt;().call(&amp;vibrationTiem); // I think you can send signal here directly.
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760398</commentid>
    <comment_count>31</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-06 22:20:17 -0800</bug_when>
    <thetext>(In reply to comment #30)
&gt; (From update of attachment 171776 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171776&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:460
&gt; &gt; +    evas_object_smart_callback_call(m_view, &quot;vibrate&quot;, &amp;vibrationTime);
&gt; 
&gt; I think you have to move this to VibrationClientEfl.cpp. In previous refactoring, each client can send a signal via a viewImpl object.
&gt; 
&gt; For example,
&gt; 
&gt; void VibrationClientEfl::vibrateCallback(WKVibrationRef, uint64_t vibrationTime, const void* clientInfo)
&gt; { 
&gt;     toVibrationClient(clientInfo)-&gt;m_viewImpl-&gt;smartCallback&lt;Vibration&gt;().call(&amp;vibrationTiem); // I think you can send signal here directly.
&gt; }

Yes, I have to rebase with the latest source. Thanks for pointing this :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760652</commentid>
    <comment_count>32</comment_count>
      <attachid>172788</attachid>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-07 06:55:24 -0800</bug_when>
    <thetext>Created attachment 172788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761209</commentid>
    <comment_count>33</comment_count>
      <attachid>172788</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 17:29:56 -0800</bug_when>
    <thetext>Comment on attachment 172788
Patch

Clearing flags on attachment: 172788

Committed r133828: &lt;http://trac.webkit.org/changeset/133828&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761210</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 17:30:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770399</commentid>
    <comment_count>35</comment_count>
    <who name="Byungwoo Lee">bw80.lee</who>
    <bug_when>2012-11-18 23:45:16 -0800</bug_when>
    <thetext>*** Bug 100439 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>170557</attachid>
            <date>2012-10-24 23:14:38 -0700</date>
            <delta_ts>2012-10-24 23:29:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100334-20121025151311.patch</filename>
            <type>text/plain</type>
            <size>8554</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmQ5YjMyOGIxMDAzZjJm
OTBjMTdhYjc5MjkxNGNmYjI3YjVkMGJhMy4uMmJjNzZmY2M4ZmViMDgyNGJiZWZiOWIwOTVhNTk5
MzU3NTZlZDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEwLTI0ICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV0syXSBGaXggYXNz
ZXJ0aW9uIGFib3V0IG1lc3NhZ2UgcmVjZWl2ZXIgZm9yIFdlYlZpYnJhdGlvblByb3h5LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMzM0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IG1lc3NhZ2Ug
cmVjZWl2ZXIgZm9yIFdlYlZpYnJhdGlvblByb3h5IHRvIG1fbWVzc2FnZVJlY2VpdmVycyAobm90
CisgICAgICAgIG1fZ2xvYmFsaU1lc3NhZ2VSZWNlaXZlcnMgdGhhdCBtYWtlcyBhc3NlcnRpb24p
CisKKyAgICAgICAgV2ViVmlicmF0aW9uUHJveHk6OlZpYnJhdGUgaXBjIG1lc3NhZ2UgdXNlcyBw
YWdlSUQgZm9yIGRlc3RpbmF0aW9uSUQuCisgICAgICAgIFdpdGggdGhlIHBhdGNoIHIxMzIzODYs
IHRoZSBpcGMgbWVzc2FnZSBtYWtlcyBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcworICAgICAgICBz
ZXQgdG8gdGhlIGdsb2JhbCBtZXNzYWdlIHJlY2VpdmVyIGJ1dCBpdCBhbHNvIGhhcyBkZXN0aW5h
dGlvbklELgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRleHQ6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRleHQ6OmFkZE1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXJzRm9yUGFnZUlEKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29udGV4dCk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViUHJvY2Vzc1Byb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRp
b25Qcm94eTo6V2ViVmlicmF0aW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRp
b25Qcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpYnJhdGlvblByb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oOgorICAgICAgICAoV2ViVmlicmF0
aW9uUHJveHkpOgorCiAyMDEyLTEwLTI0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBHZXQgcmlkIG9mIEV3a19WaWV3
IHByaXZhdGUgQyBBUEkgKFBhcnQgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcAppbmRleCA1NmEwMTdjNmZjOWEyZDkzNjM1MWQ4MzliMDc5MGE1NDgwOTcwNjg1Li41NGYz
OGI4YmQ0ZGZiYTY5YzhhMTczZmQxYWI4YWY2ODhlZWVkMjNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC01OTAsNyArNTkwLDcgQEAgUGFzc1JlZlB0cjxXZWJQ
YWdlUHJveHk+IFdlYkNvbnRleHQ6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCogcGFnZUNsaWVu
dCwgV2ViUGEKICAgICBpZiAoIXBhZ2VHcm91cCkKICAgICAgICAgcGFnZUdyb3VwID0gbV9kZWZh
dWx0UGFnZUdyb3VwLmdldCgpOwogCi0gICAgcmV0dXJuIHByb2Nlc3MtPmNyZWF0ZVdlYlBhZ2Uo
cGFnZUNsaWVudCwgdGhpcywgcGFnZUdyb3VwKTsKKyAgICByZXR1cm4gcHJvY2Vzcy0+Y3JlYXRl
V2ViUGFnZShwYWdlQ2xpZW50LCBwYWdlR3JvdXApOwogfQogCiBXZWJQcm9jZXNzUHJveHkqIFdl
YkNvbnRleHQ6OnJlbGF1bmNoUHJvY2Vzc0lmTmVjZXNzYXJ5KCkKQEAgLTc5MCw2ICs3OTAsMjYg
QEAgdm9pZCBXZWJDb250ZXh0OjphZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUKICAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRN
ZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbWVzc2FnZVJlY2VpdmVyKTsKIH0K
IAordm9pZCBXZWJDb250ZXh0OjphZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIENvcmVJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyKQoreworICAgIG1fbWVzc2FnZVJl
Y2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOworfQorCit2b2lkIFdlYkNvbnRleHQ6OnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCkKK3sKKyAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCk7
Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6YWRkTWVzc2FnZVJlY2VpdmVyc0ZvclBhZ2VJRCh1aW50
NjRfdCBwYWdlSUQpCit7CisgICAgbV92aWJyYXRpb25Qcm94eS0+YWRkTWVzc2FnZVJlY2VpdmVy
KHBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyc0Zv
clBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpCit7CisgICAgbV92aWJyYXRpb25Qcm94eS0+cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKHBhZ2VJRCk7Cit9CisKIGJvb2wgV2ViQ29udGV4dDo6ZGlzcGF0Y2hN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJ
RCBtZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHJl
dHVybiBtX21lc3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVz
c2FnZUlELCBkZWNvZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4
IDkzZGM2OGU3MGRjZTI3ZjdlMzVhNWJlNGJiMzNjYzRkNGMxODNhMDguLmEyYzRhOTU1Njk3ZmNm
NmZjOTAzOWQ0MTViYTZmODJiZDE0YzdjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHQuaApAQCAtODcsNiArODcsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBWZWN0
b3I8V2ViQ29udGV4dCo+JiBhbGxDb250ZXh0cygpOwogCiAgICAgdm9pZCBhZGRNZXNzYWdlUmVj
ZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciopOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCk7CisKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcnNG
b3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cnNGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKKwogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3Nh
Z2VEZWNvZGVyJik7CiAgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5l
Y3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgT3du
UHRyPENvcmVJUEM6Ok1lc3NhZ2VFbmNvZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGY3NTYxNjU2M2Y3ZjEwY2ZkM2NiZWY4NWNk
OTJlZWU1MzBlYTFiNGUuLjVlOWE5ZDdjNjViZGRlMzA3ZjZjNmU5NDJjYWU2MjA5YjU2MzZmZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0x
ODcsMTEgKzE4NywxMiBAQCBXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFnZU1hcC5nZXQocGFnZUlEKTsK
IH0KIAotUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2Vi
UGFnZShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBXZWJDb250ZXh0KiwgV2ViUGFnZUdyb3VwKiBw
YWdlR3JvdXApCitQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVh
dGVXZWJQYWdlKFBhZ2VDbGllbnQqIHBhZ2VDbGllbnQsIFdlYlBhZ2VHcm91cCogcGFnZUdyb3Vw
KQogewogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7CiAgICAgUmVmUHRy
PFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQs
IHRoaXMsIHBhZ2VHcm91cCwgcGFnZUlEKTsKICAgICBtX3BhZ2VNYXAuc2V0KHBhZ2VJRCwgd2Vi
UGFnZS5nZXQoKSk7CisgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlUmVjZWl2ZXJzRm9yUGFnZUlE
KHBhZ2VJRCk7CiAgICAgcmV0dXJuIHdlYlBhZ2UucmVsZWFzZSgpOwogfQogCkBAIC0yMDIsNiAr
MjAzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZShXZWJQYWdl
UHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VJRCkKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogeworICAgIG1fY29udGV4dC0+cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyc0ZvclBhZ2VJRChwYWdlSUQpOwogICAgIG1fcGFnZU1hcC5yZW1vdmUo
cGFnZUlEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CmluZGV4IGQzZTI3YzQ1NTllZTRkYmFhNWY2MTkxZGZiYWMyMzlkYThkNWJkZmMuLmMxMDkxNzI2
Zjg3NjYzMGVkZDQwNDZjODBkNzJiNzllMGZhNTg0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogICAgIFBs
YXRmb3JtUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX3Byb2Nlc3NMYXVuY2hlci0+cHJvY2Vzc0lkZW50aWZpZXIoKTsgfQogCiAgICAgV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7Ci0gICAgUGFzc1JlZlB0cjxX
ZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCosIFdlYkNvbnRleHQqLCBXZWJQ
YWdlR3JvdXAqKTsKKyAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQ
YWdlQ2xpZW50KiwgV2ViUGFnZUdyb3VwKik7CiAgICAgdm9pZCBhZGRFeGlzdGluZ1dlYlBhZ2Uo
V2ViUGFnZVByb3h5KiwgdWludDY0X3QgcGFnZUlEKTsKICAgICB2b2lkIHJlbW92ZVdlYlBhZ2Uo
dWludDY0X3QgcGFnZUlEKTsKICAgICBWZWN0b3I8V2ViUGFnZVByb3h5Kj4gcGFnZXMoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwCmlu
ZGV4IDRhNjQ1ZDU0Mzc3ZjcyMzBkZGU0ZjZlMDA5ODllYzUzYzM0ODMyODguLmEwYzY5NDc4MmQy
YWVlNDVlZTFmODYyYWIyYzNiZTM2NDg4MTI2OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNwcApAQCAtNDEsNyArNDEsNiBAQCBQYXNzUmVmUHRy
PFdlYlZpYnJhdGlvblByb3h5PiBXZWJWaWJyYXRpb25Qcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQq
IGNvbnRleHQpCiBXZWJWaWJyYXRpb25Qcm94eTo6V2ViVmlicmF0aW9uUHJveHkoV2ViQ29udGV4
dCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogewotICAgIG1fY29udGV4dC0+
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWJyYXRpb25Qcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCB0aGlzKTsKIH0KIAogV2ViVmlicmF0aW9uUHJveHk6On5XZWJWaWJyYXRp
b25Qcm94eSgpCkBAIC01OCw2ICs1NywxNiBAQCB2b2lkIFdlYlZpYnJhdGlvblByb3h5Ojppbml0
aWFsaXplUHJvdmlkZXIoY29uc3QgV0tWaWJyYXRpb25Qcm92aWRlciogcHJvdmlkZXIpCiAgICAg
bV9wcm92aWRlci5pbml0aWFsaXplKHByb3ZpZGVyKTsKIH0KIAordm9pZCBXZWJWaWJyYXRpb25Q
cm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKHVpbnQ2NF90IHBhZ2VJRCkKK3sKKyAgICBtX2NvbnRl
eHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlicmF0aW9uUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgcGFnZUlELCB0aGlzKTsKK30KKwordm9pZCBXZWJWaWJyYXRpb25Q
cm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKHVpbnQ2NF90IHBhZ2VJRCkKK3sKKyAgICBtX2Nv
bnRleHQtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlicmF0aW9uUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZUlEKTsKK30KKwogdm9pZCBXZWJWaWJyYXRpb25Q
cm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwg
Q29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgZGlkUmVjZWl2ZVdlYlZpYnJhdGlvblByb3h5TWVzc2FnZShjb25uZWN0
aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
VmlicmF0aW9uUHJveHkuaAppbmRleCA1YzZkZTE3ZDcyMTA0ZmFkMDQ0NjBjMTBiZTM0MWVmOTUy
MWUxM2ZhLi5mOTgwY2Q4NDEzMjNjYjkyY2ZmZThmMzE3MzM5NDE5MWYxYzlmNzkwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaApAQCAtNDksNiArNDks
OSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS1ZpYnJh
dGlvblByb3ZpZGVyKik7CiAKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcih1aW50NjRfdCBw
YWdlSUQpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKHVpbnQ2NF90IHBhZ2VJRCk7
CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViVmlicmF0aW9uUHJveHkoV2ViQ29udGV4dCop
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>170560</attachid>
            <date>2012-10-24 23:28:28 -0700</date>
            <delta_ts>2012-10-25 01:58:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100334-20121025152702.patch</filename>
            <type>text/plain</type>
            <size>7042</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmQ5YjMyOGIxMDAzZjJm
OTBjMTdhYjc5MjkxNGNmYjI3YjVkMGJhMy4uYmU5MzNiOTZlZWM5NjU2ZDA4YWQ0MDA5ODlhZjZk
OWY0ZGVlMDllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTI0ICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV0syXSBGaXggYXNz
ZXJ0aW9uIGFib3V0IG1lc3NhZ2UgcmVjZWl2ZXIgZm9yIFdlYlZpYnJhdGlvblByb3h5LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMzM0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IG1lc3NhZ2Ug
cmVjZWl2ZXIgZm9yIFdlYlZpYnJhdGlvblByb3h5IHRvIG1fbWVzc2FnZVJlY2VpdmVycyAobm90
CisgICAgICAgIG1fZ2xvYmFsaU1lc3NhZ2VSZWNlaXZlcnMgdGhhdCBtYWtlcyBhc3NlcnRpb24p
CisKKyAgICAgICAgV2ViVmlicmF0aW9uUHJveHk6OlZpYnJhdGUgaXBjIG1lc3NhZ2UgdXNlcyBw
YWdlSUQgZm9yIGRlc3RpbmF0aW9uSUQuCisgICAgICAgIFdpdGggdGhlIHBhdGNoIHIxMzIzODYs
IHRoZSBpcGMgbWVzc2FnZSBtYWtlcyBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcworICAgICAgICBz
ZXQgdG8gdGhlIGdsb2JhbCBtZXNzYWdlIHJlY2VpdmVyIGJ1dCBpdCBhbHNvIGhhcyBkZXN0aW5h
dGlvbklELgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjphZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YWRkTWVzc2FnZVJlY2VpdmVyc0ZvclBhZ2VJ
RCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcnNG
b3JQYWdlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRp
b25Qcm94eTo6V2ViVmlicmF0aW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRp
b25Qcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpYnJhdGlvblByb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oOgorICAgICAgICAoV2ViVmlicmF0
aW9uUHJveHkpOgorCiAyMDEyLTEwLTI0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBHZXQgcmlkIG9mIEV3a19WaWV3
IHByaXZhdGUgQyBBUEkgKFBhcnQgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcAppbmRleCA1NmEwMTdjNmZjOWEyZDkzNjM1MWQ4MzliMDc5MGE1NDgwOTcwNjg1Li41NDcx
NDdhODA2ZDZkMWEwZmRmOTkxNjhkNTE1NzI1OWY1NzhiOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC03OTAsNiArNzkwLDI2IEBAIHZvaWQgV2ViQ29udGV4
dDo6YWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lCiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKK3ZvaWQgV2ViQ29udGV4
dDo6YWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2
ZXIqIG1lc3NhZ2VSZWNlaXZlcikKK3sKKyAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNz
YWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgbWVzc2FnZVJl
Y2VpdmVyKTsKK30KKwordm9pZCBXZWJDb250ZXh0OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworfQorCit2b2lkIFdlYkNv
bnRleHQ6OmFkZE1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQorewor
ICAgIG1fdmlicmF0aW9uUHJveHktPmFkZE1lc3NhZ2VSZWNlaXZlcihwYWdlSUQpOworfQorCit2
b2lkIFdlYkNvbnRleHQ6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQodWludDY0X3Qg
cGFnZUlEKQoreworICAgIG1fdmlicmF0aW9uUHJveHktPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihw
YWdlSUQpOworfQorCiBib29sIFdlYkNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3Jl
SVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICByZXR1cm4gbV9tZXNzYWdlUmVj
ZWl2ZXJNYXAuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCA5M2RjNjhlNzBkY2UyN2Y3
ZTM1YTViZTRiYjMzY2M0ZDRjMTgzYTA4Li5hMmM0YTk1NTY5N2ZjZjZmYzkwMzlkNDE1YmE2Zjgy
YmQxNGM3YzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTg3LDYg
Kzg3LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQqPiYg
YWxsQ29udGV4dHMoKTsKIAogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2
ZXIqKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgQ29yZUlQQzo6
TWVzc2FnZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQpOworCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXJzRm9yUGFnZUlEKHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXJzRm9yUGFnZUlEKHVpbnQ2
NF90IHBhZ2VJRCk7CisKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0
aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAg
IGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6
TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIE93blB0cjxDb3JlSVBDOjpNZXNz
YWdlRW5jb2Rlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcAppbmRleCBmNzU2MTY1NjNmN2YxMGNmZDNjYmVmODVjZDkyZWVlNTMwZWExYjRlLi5k
MTRkNDc0MWYyNjE0ZmRjNzMxM2IyMGY5M2RkZDlkZmY0YmQ2NGY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTkyLDYgKzE5Miw3IEBAIFBh
c3NSZWZQdHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFn
ZUNsaWVudCogcGFnZUNsaWVudCwKICAgICB1aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJ
RCgpOwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNy
ZWF0ZShwYWdlQ2xpZW50LCB0aGlzLCBwYWdlR3JvdXAsIHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFw
LnNldChwYWdlSUQsIHdlYlBhZ2UuZ2V0KCkpOworICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZVJl
Y2VpdmVyc0ZvclBhZ2VJRChwYWdlSUQpOwogICAgIHJldHVybiB3ZWJQYWdlLnJlbGVhc2UoKTsK
IH0KIApAQCAtMjAyLDYgKzIwMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlzdGlu
Z1dlYlBhZ2UoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlSUQpCiAKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKIHsKKyAgICBt
X2NvbnRleHQtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQocGFnZUlEKTsKICAgICBt
X3BhZ2VNYXAucmVtb3ZlKHBhZ2VJRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViVmlicmF0aW9uUHJveHkuY3BwCmluZGV4IDRhNjQ1ZDU0Mzc3ZjcyMzBkZGU0ZjZlMDA5
ODllYzUzYzM0ODMyODguLmEwYzY5NDc4MmQyYWVlNDVlZTFmODYyYWIyYzNiZTM2NDg4MTI2OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNwcApA
QCAtNDEsNyArNDEsNiBAQCBQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBXZWJWaWJyYXRp
b25Qcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCiBXZWJWaWJyYXRpb25Qcm94eTo6
V2ViVmlicmF0aW9uUHJveHkoV2ViQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChj
b250ZXh0KQogewotICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJWaWJyYXRpb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKIH0KIAogV2Vi
VmlicmF0aW9uUHJveHk6On5XZWJWaWJyYXRpb25Qcm94eSgpCkBAIC01OCw2ICs1NywxNiBAQCB2
b2lkIFdlYlZpYnJhdGlvblByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tWaWJyYXRp
b25Qcm92aWRlciogcHJvdmlkZXIpCiAgICAgbV9wcm92aWRlci5pbml0aWFsaXplKHByb3ZpZGVy
KTsKIH0KIAordm9pZCBXZWJWaWJyYXRpb25Qcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKHVpbnQ2
NF90IHBhZ2VJRCkKK3sKKyAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViVmlicmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZUlELCB0aGlz
KTsKK30KKwordm9pZCBXZWJWaWJyYXRpb25Qcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKHVp
bnQ2NF90IHBhZ2VJRCkKK3sKKyAgICBtX2NvbnRleHQtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViVmlicmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZUlE
KTsKK30KKwogdm9pZCBXZWJWaWJyYXRpb25Qcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwg
Q29yZUlQQzo6TWVzc2FnZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgZGlkUmVjZWl2ZVdlYlZp
YnJhdGlvblByb3h5TWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaAppbmRleCA1YzZkZTE3
ZDcyMTA0ZmFkMDQ0NjBjMTBiZTM0MWVmOTUyMWUxM2ZhLi5mOTgwY2Q4NDEzMjNjYjkyY2ZmZThm
MzE3MzM5NDE5MWYxYzlmNzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViVmlicmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmli
cmF0aW9uUHJveHkuaApAQCAtNDksNiArNDksOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRp
YWxpemVQcm92aWRlcihjb25zdCBXS1ZpYnJhdGlvblByb3ZpZGVyKik7CiAKKyAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcih1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKHVpbnQ2NF90IHBhZ2VJRCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2Vi
VmlicmF0aW9uUHJveHkoV2ViQ29udGV4dCopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170562</attachid>
            <date>2012-10-24 23:39:06 -0700</date>
            <delta_ts>2012-10-25 03:31:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100334-20121025153739.patch</filename>
            <type>text/plain</type>
            <size>7104</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmQ5YjMyOGIxMDAzZjJm
OTBjMTdhYjc5MjkxNGNmYjI3YjVkMGJhMy4uYmU5MzNiOTZlZWM5NjU2ZDA4YWQ0MDA5ODlhZjZk
OWY0ZGVlMDllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTEwLTI0ICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV0syXSBGaXggYXNz
ZXJ0aW9uIGFib3V0IG1lc3NhZ2UgcmVjZWl2ZXIgZm9yIFdlYlZpYnJhdGlvblByb3h5LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMzM0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IG1lc3NhZ2Ug
cmVjZWl2ZXIgZm9yIFdlYlZpYnJhdGlvblByb3h5IHRvIG1fbWVzc2FnZVJlY2VpdmVycyAobm90
CisgICAgICAgIG1fZ2xvYmFsaU1lc3NhZ2VSZWNlaXZlcnMgdGhhdCBtYWtlcyBhc3NlcnRpb24p
CisKKyAgICAgICAgV2ViVmlicmF0aW9uUHJveHk6OlZpYnJhdGUgaXBjIG1lc3NhZ2UgdXNlcyBw
YWdlSUQgZm9yIGRlc3RpbmF0aW9uSUQuCisgICAgICAgIFdpdGggdGhlIHBhdGNoIHIxMzIzODYs
IHRoZSBpcGMgbWVzc2FnZSBtYWtlcyBhc3NlcnRpb24gYmVjYXVzZSBpdCBpcworICAgICAgICBz
ZXQgdG8gdGhlIGdsb2JhbCBtZXNzYWdlIHJlY2VpdmVyIGJ1dCBpdCBhbHNvIGhhcyBkZXN0aW5h
dGlvbklELgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZXh0OjphZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YWRkTWVzc2FnZVJlY2VpdmVyc0ZvclBhZ2VJ
RCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcnNG
b3JQYWdlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChX
ZWJDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRp
b25Qcm94eTo6V2ViVmlicmF0aW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRp
b25Qcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpYnJhdGlvblByb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oOgorICAgICAgICAoV2ViVmlicmF0
aW9uUHJveHkpOgorCiAyMDEyLTEwLTI0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5k
dW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBHZXQgcmlkIG9mIEV3a19WaWV3
IHByaXZhdGUgQyBBUEkgKFBhcnQgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcAppbmRleCA1NmEwMTdjNmZjOWEyZDkzNjM1MWQ4MzliMDc5MGE1NDgwOTcwNjg1Li45ZGRk
NDQ2ZDU4Nzg3NmU0OGJhNzY2NzE2ODBmMmM4ODY2NDg3YjZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC03OTAsNiArNzkwLDMwIEBAIHZvaWQgV2ViQ29udGV4
dDo6YWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lCiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKK3ZvaWQgV2ViQ29udGV4
dDo6YWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2
ZXIqIG1lc3NhZ2VSZWNlaXZlcikKK3sKKyAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRNZXNz
YWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgbWVzc2FnZVJl
Y2VpdmVyKTsKK30KKwordm9pZCBXZWJDb250ZXh0OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIoQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpCit7CisgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworfQorCit2b2lkIFdlYkNv
bnRleHQ6OmFkZE1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQorewor
I2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgbV92aWJyYXRpb25Qcm94eS0+YWRkTWVzc2FnZVJl
Y2VpdmVyKHBhZ2VJRCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJDb250ZXh0OjpyZW1vdmVNZXNz
YWdlUmVjZWl2ZXJzRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK3sKKyNpZiBFTkFCTEUoVklC
UkFUSU9OKQorICAgIG1fdmlicmF0aW9uUHJveHktPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihwYWdl
SUQpOworI2VuZGlmCit9CisKIGJvb2wgV2ViQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQs
IENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHJldHVybiBtX21lc3Nh
Z2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNv
ZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDkzZGM2OGU3MGRj
ZTI3ZjdlMzVhNWJlNGJiMzNjYzRkNGMxODNhMDguLmEyYzRhOTU1Njk3ZmNmNmZjOTAzOWQ0MTVi
YTZmODJiZDE0YzdjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAt
ODcsNiArODcsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V2ViQ29udGV4
dCo+JiBhbGxDb250ZXh0cygpOwogCiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciopOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBDb3Jl
SVBDOjpNZXNzYWdlUmVjZWl2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihD
b3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCk7CisKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQodWlu
dDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQo
dWludDY0X3QgcGFnZUlEKTsKKwogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7
CiAgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6
Ok1lc3NhZ2VFbmNvZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCmluZGV4IGY3NTYxNjU2M2Y3ZjEwY2ZkM2NiZWY4NWNkOTJlZWU1MzBlYTFi
NGUuLmQxNGQ0NzQxZjI2MTRmZGM3MzEzYjIwZjkzZGRkOWRmZjRiZDY0ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xOTIsNiArMTkyLDcg
QEAgUGFzc1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGdlbmVyYXRl
UGFnZUlEKCk7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94
eTo6Y3JlYXRlKHBhZ2VDbGllbnQsIHRoaXMsIHBhZ2VHcm91cCwgcGFnZUlEKTsKICAgICBtX3Bh
Z2VNYXAuc2V0KHBhZ2VJRCwgd2ViUGFnZS5nZXQoKSk7CisgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlUmVjZWl2ZXJzRm9yUGFnZUlEKHBhZ2VJRCk7CiAgICAgcmV0dXJuIHdlYlBhZ2UucmVsZWFz
ZSgpOwogfQogCkBAIC0yMDIsNiArMjAzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4
aXN0aW5nV2ViUGFnZShXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VJRCkKIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogewor
ICAgIG1fY29udGV4dC0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyc0ZvclBhZ2VJRChwYWdlSUQpOwog
ICAgIG1fcGFnZU1hcC5yZW1vdmUocGFnZUlEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAKaW5kZXggNGE2NDVkNTQzNzdmNzIzMGRkZTRm
NmUwMDk4OWVjNTNjMzQ4MzI4OC4uYTBjNjk0NzgyZDJhZWU0NWVlMWY4NjJhYjJjM2JlMzY0ODgx
MjY4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHku
Y3BwCkBAIC00MSw3ICs0MSw2IEBAIFBhc3NSZWZQdHI8V2ViVmlicmF0aW9uUHJveHk+IFdlYlZp
YnJhdGlvblByb3h5OjpjcmVhdGUoV2ViQ29udGV4dCogY29udGV4dCkKIFdlYlZpYnJhdGlvblBy
b3h5OjpXZWJWaWJyYXRpb25Qcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQogICAgIDogbV9jb250
ZXh0KGNvbnRleHQpCiB7Ci0gICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlZpYnJhdGlvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQog
CiBXZWJWaWJyYXRpb25Qcm94eTo6fldlYlZpYnJhdGlvblByb3h5KCkKQEAgLTU4LDYgKzU3LDE2
IEBAIHZvaWQgV2ViVmlicmF0aW9uUHJveHk6OmluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS1Zp
YnJhdGlvblByb3ZpZGVyKiBwcm92aWRlcikKICAgICBtX3Byb3ZpZGVyLmluaXRpYWxpemUocHJv
dmlkZXIpOwogfQogCit2b2lkIFdlYlZpYnJhdGlvblByb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIo
dWludDY0X3QgcGFnZUlEKQoreworICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJWaWJyYXRpb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlSUQs
IHRoaXMpOworfQorCit2b2lkIFdlYlZpYnJhdGlvblByb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2
ZXIodWludDY0X3QgcGFnZUlEKQoreworICAgIG1fY29udGV4dC0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJWaWJyYXRpb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBw
YWdlSUQpOworfQorCiB2b2lkIFdlYlZpYnJhdGlvblByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2Fn
ZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBkaWRSZWNlaXZl
V2ViVmlicmF0aW9uUHJveHlNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oCmluZGV4IDVj
NmRlMTdkNzIxMDRmYWQwNDQ2MGMxMGJlMzQxZWY5NTIxZTEzZmEuLmY5ODBjZDg0MTMyM2NiOTJj
ZmZlOGYzMTczMzk0MTkxZjFjOWY3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJWaWJyYXRpb25Qcm94eS5oCkBAIC00OSw2ICs0OSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
aW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLVmlicmF0aW9uUHJvdmlkZXIqKTsKIAorICAgIHZv
aWQgYWRkTWVzc2FnZVJlY2VpdmVyKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCByZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIodWludDY0X3QgcGFnZUlEKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBXZWJWaWJyYXRpb25Qcm94eShXZWJDb250ZXh0Kik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170599</attachid>
            <date>2012-10-25 03:31:43 -0700</date>
            <delta_ts>2012-10-25 04:20:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>vib.diff</filename>
            <type>text/plain</type>
            <size>6558</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiZDliMzI4Li5hNDU1OTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTItMTAtMjQgIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIFtXSzJdIFVzZSBwZXIgZGVzdGluYXRpb24gSUQgbWVzc2FnZSByZWNlaXZlcnMgZm9y
IERvd25sb2FkUHJveHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDAzMzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQZXIgZGVzdGluYXRpb24gSUQgbWVzc2FnZSByZWNlaXZlcnMgd2VyZSBwcm9wb3Nl
ZCBpbiByMTMyMzg2LgorICAgICAgICBJUEMgbWVzc2FnZXMgb2YgV2ViVmlicmF0aW9uUHJveHkg
dXNlIHBhZ2UgSUQgZm9yIGRlc3RpbmF0aW9uIElELAorICAgICAgICBzbyB0aGUgbWVzc2FnZXMg
c2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIG1lc3NzYWdlIHJlY2VpdmVyIHRoYXQgd2FzCisgICAg
ICAgIG5ld2x5IHByb3Bvc2VkLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjphZGRNZXNzYWdlUmVjZWl2ZXIpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YWRkTWVzc2FnZVJlY2Vp
dmVyc0ZvclBhZ2VJRCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcnNGb3JQYWdlSUQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6
CisgICAgICAgIChXZWJDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWJyYXRpb25Qcm94eTo6V2ViVmlicmF0aW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJWaWJyYXRpb25Qcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpYnJhdGlvblByb3h5OjpyZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oOgorICAgICAg
ICAoV2ViVmlicmF0aW9uUHJveHkpOgorCiAyMDEyLTEwLTI0ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBHZXQgcmlk
IG9mIEV3a19WaWV3IHByaXZhdGUgQyBBUEkgKFBhcnQgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb250ZXh0LmNwcAppbmRleCA1NmEwMTdjLi45ZGRkNDQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCkBAIC03OTAsNiArNzkwLDMwIEBAIHZvaWQgV2ViQ29u
dGV4dDo6YWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lCiAgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAuYWRkTWVzc2FnZVJlY2VpdmVy
KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1lc3NhZ2VSZWNlaXZlcik7CiB9CiAKK3ZvaWQgV2ViQ29u
dGV4dDo6YWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBDb3JlSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIqIG1lc3NhZ2VSZWNlaXZlcikKK3sKKyAgICBtX21lc3NhZ2VSZWNlaXZlck1hcC5hZGRN
ZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRCwgbWVzc2Fn
ZVJlY2VpdmVyKTsKK30KKwordm9pZCBXZWJDb250ZXh0OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
Q29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpCit7CisgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQpOworfQorCit2b2lkIFdl
YkNvbnRleHQ6OmFkZE1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQor
eworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgbV92aWJyYXRpb25Qcm94eS0+YWRkTWVzc2Fn
ZVJlY2VpdmVyKHBhZ2VJRCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJDb250ZXh0OjpyZW1vdmVN
ZXNzYWdlUmVjZWl2ZXJzRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK3sKKyNpZiBFTkFCTEUo
VklCUkFUSU9OKQorICAgIG1fdmlicmF0aW9uUHJveHktPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihw
YWdlSUQpOworI2VuZGlmCit9CisKIGJvb2wgV2ViQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdl
SUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIHJldHVybiBtX21l
c3NhZ2VSZWNlaXZlck1hcC5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBk
ZWNvZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCmluZGV4IDkzZGM2OGUu
LmEyYzRhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaApAQCAtODcsNiAr
ODcsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBWZWN0b3I8V2ViQ29udGV4dCo+JiBh
bGxDb250ZXh0cygpOwogCiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciopOworICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBDb3JlSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihDb3JlSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCk7CisKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQodWludDY0X3Qg
cGFnZUlEKTsKKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQodWludDY0
X3QgcGFnZUlEKTsKKwogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAgICAg
Ym9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJiwgT3duUHRyPENvcmVJUEM6Ok1lc3Nh
Z2VFbmNvZGVyPiYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IGY3NTYxNjUuLmQxNGQ0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xOTIsNiArMTkyLDcgQEAgUGFzc1JlZlB0cjxX
ZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50KiBw
YWdlQ2xpZW50LAogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7CiAgICAg
UmVmUHRyPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VD
bGllbnQsIHRoaXMsIHBhZ2VHcm91cCwgcGFnZUlEKTsKICAgICBtX3BhZ2VNYXAuc2V0KHBhZ2VJ
RCwgd2ViUGFnZS5nZXQoKSk7CisgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlUmVjZWl2ZXJzRm9y
UGFnZUlEKHBhZ2VJRCk7CiAgICAgcmV0dXJuIHdlYlBhZ2UucmVsZWFzZSgpOwogfQogCkBAIC0y
MDIsNiArMjAzLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZEV4aXN0aW5nV2ViUGFnZShX
ZWJQYWdlUHJveHkqIHdlYlBhZ2UsIHVpbnQ2NF90IHBhZ2VJRCkKIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnJlbW92ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlEKQogeworICAgIG1fY29udGV4dC0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyc0ZvclBhZ2VJRChwYWdlSUQpOwogICAgIG1fcGFnZU1hcC5y
ZW1vdmUocGFnZUlEKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlZpYnJhdGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJy
YXRpb25Qcm94eS5jcHAKaW5kZXggNGE2NDVkNS4uYTBjNjk0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwCkBAIC00MSw3ICs0MSw2IEBAIFBh
c3NSZWZQdHI8V2ViVmlicmF0aW9uUHJveHk+IFdlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUoV2Vi
Q29udGV4dCogY29udGV4dCkKIFdlYlZpYnJhdGlvblByb3h5OjpXZWJWaWJyYXRpb25Qcm94eShX
ZWJDb250ZXh0KiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiB7Ci0gICAgbV9j
b250ZXh0LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlZpYnJhdGlvblByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHRoaXMpOwogfQogCiBXZWJWaWJyYXRpb25Qcm94eTo6fldl
YlZpYnJhdGlvblByb3h5KCkKQEAgLTU4LDYgKzU3LDE2IEBAIHZvaWQgV2ViVmlicmF0aW9uUHJv
eHk6OmluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS1ZpYnJhdGlvblByb3ZpZGVyKiBwcm92aWRl
cikKICAgICBtX3Byb3ZpZGVyLmluaXRpYWxpemUocHJvdmlkZXIpOwogfQogCit2b2lkIFdlYlZp
YnJhdGlvblByb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIodWludDY0X3QgcGFnZUlEKQoreworICAg
IG1fY29udGV4dC0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWJyYXRpb25Qcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlSUQsIHRoaXMpOworfQorCit2b2lkIFdlYlZp
YnJhdGlvblByb3h5OjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXIodWludDY0X3QgcGFnZUlEKQorewor
ICAgIG1fY29udGV4dC0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWJyYXRp
b25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlSUQpOworfQorCiB2b2lkIFdlYlZp
YnJhdGlvblByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25u
ZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVj
b2RlciYgZGVjb2RlcikKIHsKICAgICBkaWRSZWNlaXZlV2ViVmlicmF0aW9uUHJveHlNZXNzYWdl
KGNvbm5lY3Rpb24sIG1lc3NhZ2VJRCwgZGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oCmluZGV4IDVjNmRlMTcuLmY5ODBjZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oCkBAIC00OSw2ICs0OSw5
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVByb3ZpZGVyKGNvbnN0IFdLVmlicmF0
aW9uUHJvdmlkZXIqKTsKIAorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKHVpbnQ2NF90IHBh
Z2VJRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIodWludDY0X3QgcGFnZUlEKTsK
KwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJWaWJyYXRpb25Qcm94eShXZWJDb250ZXh0Kik7
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170610</attachid>
            <date>2012-10-25 04:20:41 -0700</date>
            <delta_ts>2012-10-27 15:14:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>vib.diff</filename>
            <type>text/plain</type>
            <size>6562</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiZDliMzI4Li40YzFhNzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQg
QEAKKzIwMTItMTAtMjUgIEJ5dW5nd29vIExlZSAgPGJ3ODAubGVlQHNhbXN1bmcuY29tPgorCisg
ICAgICAgIFtXSzJdIFVzZSBwZXIgZGVzdGluYXRpb24gSUQgbWVzc2FnZSByZWNlaXZlcnMgZm9y
IFdlYlZpYnJhdGlvblByb3h5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTAwMzM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUGVyIGRlc3RpbmF0aW9uIElEIG1lc3NhZ2UgcmVjZWl2ZXJzIHdlcmUgcHJv
cG9zZWQgaW4gcjEzMjM4Ni4KKyAgICAgICAgSVBDIG1lc3NhZ2VzIG9mIFdlYlZpYnJhdGlvblBy
b3h5IHVzZSBwYWdlIElEIGZvciBkZXN0aW5hdGlvbiBJRCwKKyAgICAgICAgc28gdGhlIG1lc3Nh
Z2VzIHNob3VsZCBiZSBoYW5kbGVkIGJ5IHRoZSBtZXNzc2FnZSByZWNlaXZlciB0aGF0IHdhcwor
ICAgICAgICBuZXdseSBwcm9wb3NlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6YWRkTWVzc2FnZVJlY2VpdmVyKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmFkZE1lc3NhZ2VS
ZWNlaXZlcnNGb3JQYWdlSUQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpyZW1vdmVN
ZXNzYWdlUmVjZWl2ZXJzRm9yUGFnZUlEKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4
dC5oOgorICAgICAgICAoV2ViQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2Vi
UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlicmF0aW9uUHJveHk6OldlYlZpYnJhdGlvblByb3h5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlicmF0aW9uUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaDoKKyAg
ICAgICAgKFdlYlZpYnJhdGlvblByb3h5KToKKwogMjAxMi0xMC0yNCAgQ2hyaXN0b3BoZSBEdW1l
eiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gR2V0
IHJpZCBvZiBFd2tfVmlldyBwcml2YXRlIEMgQVBJIChQYXJ0IDEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggNTZhMDE3Yy4uOWRkZDQ0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtNzkwLDYgKzc5MCwzMCBAQCB2b2lkIFdl
YkNvbnRleHQ6OmFkZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZQogICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNl
aXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtZXNzYWdlUmVjZWl2ZXIpOwogfQogCit2b2lkIFdl
YkNvbnRleHQ6OmFkZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgQ29yZUlQQzo6TWVzc2Fn
ZVJlY2VpdmVyKiBtZXNzYWdlUmVjZWl2ZXIpCit7CisgICAgbV9tZXNzYWdlUmVjZWl2ZXJNYXAu
YWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQsIG1l
c3NhZ2VSZWNlaXZlcik7Cit9CisKK3ZvaWQgV2ViQ29udGV4dDo6cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKQoreworICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKK30KKwordm9p
ZCBXZWJDb250ZXh0OjphZGRNZXNzYWdlUmVjZWl2ZXJzRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJ
RCkKK3sKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgIG1fdmlicmF0aW9uUHJveHktPmFkZE1l
c3NhZ2VSZWNlaXZlcihwYWdlSUQpOworI2VuZGlmCit9CisKK3ZvaWQgV2ViQ29udGV4dDo6cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyc0ZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpCit7CisjaWYgRU5B
QkxFKFZJQlJBVElPTikKKyAgICBtX3ZpYnJhdGlvblByb3h5LT5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIocGFnZUlEKTsKKyNlbmRpZgorfQorCiBib29sIFdlYkNvbnRleHQ6OmRpc3BhdGNoTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXNzYWdlSUQgbWVz
c2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICByZXR1cm4g
bV9tZXNzYWdlUmVjZWl2ZXJNYXAuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3NhZ2VJ
RCwgZGVjb2Rlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCA5M2Rj
NjhlLi5hMmM0YTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTg3
LDYgKzg3LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVmVjdG9yPFdlYkNvbnRleHQq
PiYgYWxsQ29udGV4dHMoKTsKIAogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBDb3JlSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIqKTsKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgQ29yZUlQ
Qzo6TWVzc2FnZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoQ29y
ZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQpOworCisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXJzRm9yUGFnZUlEKHVpbnQ2
NF90IHBhZ2VJRCk7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXJzRm9yUGFnZUlEKHVp
bnQ2NF90IHBhZ2VJRCk7CisKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwog
ICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYsIE93blB0cjxDb3JlSVBDOjpN
ZXNzYWdlRW5jb2Rlcj4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCBmNzU2MTY1Li5kMTRkNDc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTkyLDYgKzE5Miw3IEBAIFBhc3NSZWZQ
dHI8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVu
dCogcGFnZUNsaWVudCwKICAgICB1aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOwog
ICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShw
YWdlQ2xpZW50LCB0aGlzLCBwYWdlR3JvdXAsIHBhZ2VJRCk7CiAgICAgbV9wYWdlTWFwLnNldChw
YWdlSUQsIHdlYlBhZ2UuZ2V0KCkpOworICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZVJlY2VpdmVy
c0ZvclBhZ2VJRChwYWdlSUQpOwogICAgIHJldHVybiB3ZWJQYWdlLnJlbGVhc2UoKTsKIH0KIApA
QCAtMjAyLDYgKzIwMyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRFeGlzdGluZ1dlYlBh
Z2UoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCB1aW50NjRfdCBwYWdlSUQpCiAKIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKIHsKKyAgICBtX2NvbnRl
eHQtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcnNGb3JQYWdlSUQocGFnZUlEKTsKICAgICBtX3BhZ2VN
YXAucmVtb3ZlKHBhZ2VJRCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
VmlicmF0aW9uUHJveHkuY3BwCmluZGV4IDRhNjQ1ZDUuLmEwYzY5NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNwcApAQCAtNDEsNyArNDEsNiBA
QCBQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBXZWJWaWJyYXRpb25Qcm94eTo6Y3JlYXRl
KFdlYkNvbnRleHQqIGNvbnRleHQpCiBXZWJWaWJyYXRpb25Qcm94eTo6V2ViVmlicmF0aW9uUHJv
eHkoV2ViQ29udGV4dCogY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogewotICAg
IG1fY29udGV4dC0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWJyYXRpb25Qcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCB0aGlzKTsKIH0KIAogV2ViVmlicmF0aW9uUHJveHk6
On5XZWJWaWJyYXRpb25Qcm94eSgpCkBAIC01OCw2ICs1NywxNiBAQCB2b2lkIFdlYlZpYnJhdGlv
blByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tWaWJyYXRpb25Qcm92aWRlciogcHJv
dmlkZXIpCiAgICAgbV9wcm92aWRlci5pbml0aWFsaXplKHByb3ZpZGVyKTsKIH0KIAordm9pZCBX
ZWJWaWJyYXRpb25Qcm94eTo6YWRkTWVzc2FnZVJlY2VpdmVyKHVpbnQ2NF90IHBhZ2VJRCkKK3sK
KyAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlicmF0aW9u
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZUlELCB0aGlzKTsKK30KKwordm9pZCBX
ZWJWaWJyYXRpb25Qcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKHVpbnQ2NF90IHBhZ2VJRCkK
K3sKKyAgICBtX2NvbnRleHQtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmli
cmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZUlEKTsKK30KKwogdm9pZCBX
ZWJWaWJyYXRpb25Qcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiog
Y29ubmVjdGlvbiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImIGRlY29kZXIpCiB7CiAgICAgZGlkUmVjZWl2ZVdlYlZpYnJhdGlvblByb3h5TWVz
c2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGRlY29kZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaAppbmRleCA1YzZkZTE3Li5mOTgwY2Q4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaApAQCAtNDksNiAr
NDksOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS1Zp
YnJhdGlvblByb3ZpZGVyKik7CiAKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcih1aW50NjRf
dCBwYWdlSUQpOworICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKHVpbnQ2NF90IHBhZ2VJ
RCk7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViVmlicmF0aW9uUHJveHkoV2ViQ29udGV4
dCopOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171103</attachid>
            <date>2012-10-27 15:14:17 -0700</date>
            <delta_ts>2012-10-28 09:21:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100334-20121028071246.patch</filename>
            <type>text/plain</type>
            <size>50030</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzU0NTg2NTg5OGE2ODI0
N2E3N2Q4NTQzNWQ1ODc4YzU4OGQ2MWFmMS4uZWI5OGQ5NGU2YzIzYzQwZWYwZjhiNDg0MjI5Njc1
MDcyNWZkODBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTEwLTI3ICBCeXVu
Z3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbV0syXSBNYWtlIFdl
YlZpYnJhdGlvblByb3h5IHRvIGJlIGEgbWVtYmVyIG9mIFdlYlBhZ2VQcm94eS4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDMzNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYlZpYnJhdGlvblByb3h5
IHNob3VsZCBiZSBhIG1lbWJlciBvZiBXZWJQYWdlUHJveHksIG5vdCBvZgorICAgICAgICBXZWJD
b250ZXh0LCBiZWNhdXNlIHRoZSBJUEMgbWVzc2FnZXMgb2YgV2ViVmlicmF0aW9uUHJveHkKKyAg
ICAgICAgaGFzIHBhZ2UgZGVzdGluYXRpb24gSUQuCisKKyAgICAgICAgQ3JlYXRpbmcgV2ViVmli
cmF0aW9uUHJveHkgYXMgYSBXZWJDb250ZXh0IG1lbWJlciBhbmQgdXNpbmcgdGhlIGdsb2JhbAor
ICAgICAgICBtZXNzYWdlIHJlY2VpdmVyIGZvciB0aGUgcHJveHkgY2FuIG1ha2UgYXNzZXJ0aW9u
cyBhZnRlciByMTMyMzg2LgorCisgICAgICAgIFRoZSByMTMyMzg2IHByb3Bvc2VkIGEgd2F5IHRv
IGFkZC9kZWxldGUgbWVzc2FnZSByZWNlaXZlcnMgdGhhdCBjYW4KKyAgICAgICAgaGFuZGxlcyBJ
UEMgbWVzc2FnZXMgd2l0aCBkZXN0aW5hdGlvbiBJRC4KKworICAgICAgICBUbyBhcHBseSB0aGUg
Y2hhbmdlcyB0byB0aGUgV2ViVmlicmF0aW9uUHJveHksCisgICAgICAgIDEpIFdlYkNvbnRleHQg
d2lsbCBub3QgaGF2ZSB0aGUgV2ViVmlicmF0aW9uUHJveHkgaW5zdGFuY2UuCisKKyAgICAgICAg
MikgV2ViUGFnZVByb3h5IHdpbGwgaGF2ZSBhIFdlYlZpYnJhdGlvblByb3h5IGluc3RhbmNlIGFu
ZCBhIG1lc3NhZ2UgcmVjZWl2ZXIgbWFwLgorCisgICAgICAgIDMpIFdlYlZpYnJhdGlvblByb3h5
IHdpbGwgYWRkIGl0c2VsZiB0byB0aGUgbWVzc2FnZSByZWNlaXZlciBtYXAgb2YgdGhlIHBhZ2UK
KyAgICAgICAgICAgd2l0aCBwYWdlIElEIGFzIGEgZGVzdGluYXRpb24gSUQgdG8gaGFuZGxlIHRo
ZSB2aWJyYXRpb24gSVBDIG1lc3NhZ2VzLgorCisgICAgICAgIDQpIEFQSXMgd2lsbCBiZSBtb2Rp
ZmllZCB0byBhcHBseSB0aGVzZSBjaGFuZ2VzLgorICAgICAgICAgICBhKSBBUEkgdG8gZ2V0IFdL
VmlicmF0aW9uUmVmIHdpbGwgdXNlIFdLUGFnZVJlZiBub3QgV0tDb250ZXh0UmVmLgorICAgICAg
ICAgICBiKSBFRkwgQVBJcyBhbmQgQVBJIHRlc3QgZm9yIHRoZSB2aWJyYXRpb24gYXJlIGFsc28g
Y2hhbmdlZC4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAg
KFdLUGFnZUdldFZpYnJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAgICAg
KEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dmlicmF0
ZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6Y2FuY2VsVmlicmF0aW9uKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5jcHA6CisgICAgICAgIChFd2tfQ29udGV4dDo6RXdrX0NvbnRleHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEV3
a19Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6CisgICAg
ICAgIChWaWJyYXRpb25DYkRhdGEpOgorICAgICAgICAob25WaWJyYXRlKToKKyAgICAgICAgKG9u
Q2FuY2VsVmlicmF0aW9uKToKKyAgICAgICAgKGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKToKKyAg
ICAgICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpXZWJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29udGV4dDo6fldlYkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpk
aXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcik6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlicmF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChXZWJQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6V2ViVmlicmF0aW9uUHJveHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6fldlYlZpYnJhdGlvblByb3h5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJWaWJyYXRpb25Qcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9WaWJy
YXRpb25DbGllbnRFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9WaWJyYXRpb25Qcm92aWRlci5jcHAuCisgICAgICAgICh0b1ZpYnJhdGlvbkNsaWVudCk6
CisgICAgICAgIChWaWJyYXRpb25DbGllbnRFZmw6OnZpYnJhdGVDYWxsYmFjayk6CisgICAgICAg
IChWaWJyYXRpb25DbGllbnRFZmw6OmNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKToKKyAgICAgICAg
KFZpYnJhdGlvbkNsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVudEVm
bDo6VmlicmF0aW9uQ2xpZW50RWZsKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVudEVmbDo6flZp
YnJhdGlvbkNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25DbGll
bnRFZmwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlicmF0
aW9uUHJvdmlkZXIuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChWaWJyYXRpb25DbGll
bnRFZmwpOgorCiAyMDEyLTEwLTI2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAogICAgICAgICBIYXZlIE5ldHdvcmtQcm9jZXNzIG1hbmFnZSByZXNvdXJjZSBsb2FkIHNjaGVk
dWxpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Nv
dXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDZjZWRlZDc1ODUyYmE1Yjg5YTUy
OTUzZWExMTk3YmUzNWY5NjQ3YWEuLjQwNDBlNjkyMDRhYTljYTY4MDFjYWUyNzkwNTQzZjNjNDUy
YjQ2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC04Myw3ICs4Myw3IEBAIExJU1Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJD
bGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuY3Bw
CiAgICAgVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5jcHAKLSAgICBVSVByb2Nlc3MvZWZs
L1ZpYnJhdGlvblByb3ZpZGVyLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50
RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dEVmbC5jcHAKICAgICBVSVByb2Nl
c3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5jcHAKaW5kZXggMTE3YmJlZGEzMTRkMWRiZTZiMGM2NTU1YTFmZjI4MGNj
NzU0MDIyNS4uYWM0NjExNTdmOTQ5MjUxM2I4ZTUzMjkzZWU3MzQxZjg2OGEwYWJjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKQEAgLTI0MiwxNSAr
MjQyLDYgQEAgV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBXS0NvbnRleHRHZXRSZXNvdXJjZUNh
Y2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFIKICAgICByZXR1cm4gdG9BUEkodG9JbXBs
KGNvbnRleHRSZWYpLT5yZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5KCkpOwogfQogCi1XS1ZpYnJh
dGlvblJlZiBXS0NvbnRleHRHZXRWaWJyYXRpb24oV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCi17
Ci0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRS
ZWYpLT52aWJyYXRpb25Qcm94eSgpKTsKLSNlbHNlCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0K
LQogdm9pZCBXS0NvbnRleHRTdGFydE1lbW9yeVNhbXBsZXIoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLRG91YmxlUmVmIGludGVydmFsKQogewogICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c3Rh
cnRNZW1vcnlTYW1wbGVyKHRvSW1wbChpbnRlcnZhbCktPnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCmluZGV4IDY5ZDEyOTgwNWQzYmRhOWM1YzA4
MGI0MjllNjg0NzgxYjRkNjZkMWQuLjhmNzdjYmQ4ZjhjZTU0NDQzOGNmM2I3OTI1YWVmY2Q0Mjg5
ZmQ3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKQEAg
LTE2Nyw3ICsxNjcsNiBAQCBXS19FWFBPUlQgV0tOZXR3b3JrSW5mb01hbmFnZXJSZWYgV0tDb250
ZXh0R2V0TmV0d29ya0luZm9NYW5hZ2VyKFdLQ29udGV4dFJlZiBjbwogV0tfRVhQT1JUIFdLTm90
aWZpY2F0aW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXROb3RpZmljYXRpb25NYW5hZ2VyKFdLQ29u
dGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBXS1BsdWdpblNpdGVEYXRhTWFuYWdlclJlZiBX
S0NvbnRleHRHZXRQbHVnaW5TaXRlRGF0YU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwog
V0tfRVhQT1JUIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYgV0tDb250ZXh0R2V0UmVzb3VyY2VD
YWNoZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwotV0tfRVhQT1JUIFdLVmlicmF0aW9u
UmVmIFdLQ29udGV4dEdldFZpYnJhdGlvbihXS0NvbnRleHRSZWYgY29udGV4dCk7CiAgICAgCiB0
eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24pKFdLRGljdGlvbmFy
eVJlZiBzdGF0aXN0aWNzLCBXS0Vycm9yUmVmIGVycm9yLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQp
OwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29u
dGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rp
b24gZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApp
bmRleCA1MmUxY2ViZjg4YmViOWM0ZTJlMDMyODM1ZmMyOTI5OWM3NDdjMzlhLi4wYTU3MGU2NGFl
ZGQ1ZDdlMGY3YjI5YzgxZmE5YmEzNmQyMTE0YzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMTg5LDYgKzE4OSwxNSBAQCBXS0luc3BlY3RvclJlZiBX
S1BhZ2VHZXRJbnNwZWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYpCiB9CiAjZW5kaWYKIAorV0tWaWJy
YXRpb25SZWYgV0tQYWdlR2V0VmlicmF0aW9uKFdLUGFnZVJlZiBwYWdlKQoreworI2lmIEVOQUJM
RShWSUJSQVRJT04pCisgICAgcmV0dXJuIHRvQVBJKHRvSW1wbChwYWdlKS0+dmlicmF0aW9uKCkp
OworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCiBkb3VibGUgV0tQYWdlR2V0RXN0
aW1hdGVkUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChw
YWdlUmVmKS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAppbmRleCA5ZGZkNTJlM2MwYjYyMzc4YzUyOTU3OGZhN2ZmOWZjYWI1MzMyOTBk
Li4zNWIyYjVkNThhZTk4ZjIzZmY2ZjhlMzkyNzQ0YmZjOGIxM2U5NTEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCkBAIC0zOTEsNiArMzkxLDggQEAgV0tfRVhQT1JU
IHZvaWQgV0tQYWdlU2V0TWVtb3J5Q2FjaGVDbGllbnRDYWxsc0VuYWJsZWQoV0tQYWdlUmVmIHBh
Z2UsIGJvb2wgbWVtb3IKIFdLX0VYUE9SVCBXS0luc3BlY3RvclJlZiBXS1BhZ2VHZXRJbnNwZWN0
b3IoV0tQYWdlUmVmIHBhZ2UpOwogI2VuZGlmCiAKK1dLX0VYUE9SVCBXS1ZpYnJhdGlvblJlZiBX
S1BhZ2VHZXRWaWJyYXRpb24oV0tQYWdlUmVmIHBhZ2UpOworCiBXS19FWFBPUlQgV0tTdHJpbmdS
ZWYgV0tQYWdlQ29weVVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZSk7CiAKIFdLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS1BhZ2VDb3B5QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KFdLUGFnZVJlZiBw
YWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBs
LmNwcAppbmRleCBhYjhmNGUwNzZkNDA2NGQ4OThlNjJmODExNzBmZmQ5ZTNmYjNhMDg0Li5jYmMy
MTUxNjYzZDdiOTc4NDM1ZDYxY2Y4ODMwYTA4OGEwOThhYjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCkBAIC0zMiw2ICszMiw5IEBA
CiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRDbGllbnRF
ZmwuaCIKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorI2luY2x1ZGUgIlZpYnJhdGlvbkNsaWVudEVm
bC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgiCkBAIC0xMDAsNiArMTAzLDkgQEAgRXdrVmll
d0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0KiB2aWV3LCBQYXNzUmVmUHRyPEV3a19Db250
ZXh0PiBjb250ZXh0LCBQYXMKICAgICAsIG1fcmVzb3VyY2VMb2FkQ2xpZW50KFJlc291cmNlTG9h
ZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9maW5kQ2xpZW50KEZpbmRDbGllbnRF
Zmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9ybUNsaWVudChGb3JtQ2xpZW50RWZsOjpjcmVh
dGUodGhpcykpCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICAsIG1fdmlicmF0aW9uQ2xpZW50
KFZpYnJhdGlvbkNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorI2VuZGlmCiAgICAgLCBtX2JhY2tG
b3J3YXJkTGlzdChFd2tfQmFja19Gb3J3YXJkX0xpc3Q6OmNyZWF0ZSh0b0FQSShtX3BhZ2VQcm94
eS0+YmFja0ZvcndhcmRMaXN0KCkpKSkKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAg
ICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudChQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCkBAIC03MTUsNiArNzIxLDE4IEBAIHZvaWQgRXdrVmll
d0ltcGw6OmluZm9ybUludGVudFNlcnZpY2VSZWdpc3RyYXRpb24oRXdrX0ludGVudF9TZXJ2aWNl
KiBld2tJbnRlbnRTCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKIAorI2lm
IEVOQUJMRShWSUJSQVRJT04pCit2b2lkIEV3a1ZpZXdJbXBsOjp2aWJyYXRlKHVpbnQ2NF90IHZp
YnJhdGlvblRpbWUpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3Zp
ZXcsICJ2aWJyYXRlIiwgJnZpYnJhdGlvblRpbWUpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpj
YW5jZWxWaWJyYXRpb24oKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwo
bV92aWV3LCAiY2FuY2VsLHZpYnJhdGlvbiIsIDApOworfQorI2VuZGlmCisKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiBib29sIEV3a1ZpZXdJbXBsOjpjcmVhdGVHTFN1cmZhY2Uo
Y29uc3QgSW50U2l6ZSYgdmlld1NpemUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCBmNGU5MTc3N2EwMjRlMmQ5YmVlOGI4ZTdiNTc2
OWM4MDNlNWNjNDk2Li4yNmMxNTEwMWMzYTFmNjg4MmU4ZGM3NmM2MWI5NDBlZDcwZGMwNTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAg
LTY5LDYgKzY5LDkgQEAgY2xhc3MgUGFnZVVJQ2xpZW50RWZsOwogY2xhc3MgUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudEVmbDsKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CiBjbGFz
cyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CisjaWYgRU5BQkxFKFZJQlJBVElPTikKK2NsYXNzIFZp
YnJhdGlvbkNsaWVudEVmbDsKKyNlbmRpZgogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2Vi
UGFnZVByb3h5OwogY2xhc3MgV2ViUG9wdXBJdGVtOwpAQCAtMjExLDYgKzIxNCwxMCBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKICAgICB2b2lkIGluZm9ybUludGVudFNl
cnZpY2VSZWdpc3RyYXRpb24oRXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgdm9pZCB2aWJyYXRlKHVpbnQ2NF90
IHZpYnJhdGlvblRpbWUpOworICAgIHZvaWQgY2FuY2VsVmlicmF0aW9uKCk7CisjZW5kaWYKICNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwqIHBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQoKSB7IHJldHVybiBt
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuZ2V0KCk7IH0KICAgICBXZWJLaXQ6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXIqIHBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXIuZ2V0KCk7IH0KQEAgLTI0OCw2ICsyNTUsOSBAQCBwcml2YXRl
OgogICAgIE93blB0cjxXZWJLaXQ6OlJlc291cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxv
YWRDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50
OwogICAgIE93blB0cjxXZWJLaXQ6OkZvcm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKKyNpZiBF
TkFCTEUoVklCUkFUSU9OKQorICAgIE93blB0cjxXZWJLaXQ6OlZpYnJhdGlvbkNsaWVudEVmbD4g
bV92aWJyYXRpb25DbGllbnQ7CisjZW5kaWYKICAgICBPd25QdHI8RXdrX0JhY2tfRm9yd2FyZF9M
aXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAg
ICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsPiBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggM2EwMDcxYzdkZmRjZGI4MDhhYjc1ZTIxMGRh
Yjc1YmFkYWE0OTY2YS4uNDIxMGUwYWMxNDYzYWY4ZDIyMmUxYmYxYjNiMThmZDE0ZmQ5YjRiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNw
cApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkNvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmgi
CiAjaW5jbHVkZSAiTmV0d29ya0luZm9Qcm92aWRlci5oIgogI2luY2x1ZGUgIlJlcXVlc3RNYW5h
Z2VyQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiVmlicmF0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbnRleHRTb3VwLmgiCiAjaW5jbHVkZSAiV0tO
dW1iZXIuaCIKQEAgLTY4LDkgKzY3LDYgQEAgRXdrX0NvbnRleHQ6OkV3a19Db250ZXh0KFdLQ29u
dGV4dFJlZiBjb250ZXh0KQogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAgICAgLCBtX25ldHdv
cmtJbmZvUHJvdmlkZXIoTmV0d29ya0luZm9Qcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQpKQogI2Vu
ZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICAsIG1fdmlicmF0aW9uUHJvdmlkZXIoVmli
cmF0aW9uUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0KSkKLSNlbmRpZgogICAgICwgbV9kb3dubG9h
ZE1hbmFnZXIoRG93bmxvYWRNYW5hZ2VyRWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3JlcXVl
c3RNYW5hZ2VyQ2xpZW50KFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAg
ICAgLCBtX2hpc3RvcnlDbGllbnQoQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmNyZWF0ZShjb250
ZXh0KSkKQEAgLTE2NCwxMyArMTYwLDYgQEAgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIEV3a19D
b250ZXh0OjpyZXF1ZXN0TWFuYWdlcigpCiAgICAgcmV0dXJuIG1fcmVxdWVzdE1hbmFnZXJDbGll
bnQuZ2V0KCk7CiB9CiAKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotUGFzc1JlZlB0cjxWaWJyYXRp
b25Qcm92aWRlcj4gRXdrX0NvbnRleHQ6OnZpYnJhdGlvblByb3ZpZGVyKCkKLXsKLSAgICByZXR1
cm4gbV92aWJyYXRpb25Qcm92aWRlcjsKLX0KLSNlbmRpZgotCiB2b2lkIEV3a19Db250ZXh0Ojph
ZGRWaXNpdGVkTGluayhjb25zdCBTdHJpbmcmIHZpc2l0ZWRVUkwpCiB7CiAgICAgdG9JbXBsKG1f
Y29udGV4dC5nZXQoKSktPmFkZFZpc2l0ZWRMaW5rKHZpc2l0ZWRVUkwpOwpAQCAtMjU5LDE1ICsy
NDgsNiBAQCBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZWdpc3RlcihFd2tfQ29u
dGV4dCogZXdrQ29udGV4dCwgY29uc3QgY2hhciogcwogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIGV3a19jb250ZXh0X3ZpYnJhdGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldChFd2tfQ29udGV4
dCogZXdrQ29udGV4dCwgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmlicmF0ZV9DYiB2aWJyYXRlLCBF
d2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiIGNhbmNlbCwgdm9pZCogZGF0
YSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihld2tDb250ZXh0KTsKLQotI2lm
IEVOQUJMRShWSUJSQVRJT04pCi0gICAgZXdrQ29udGV4dC0+dmlicmF0aW9uUHJvdmlkZXIoKS0+
c2V0VmlicmF0aW9uQ2xpZW50Q2FsbGJhY2tzKHZpYnJhdGUsIGNhbmNlbCwgZGF0YSk7Ci0jZW5k
aWYKLX0KLQogdm9pZCBld2tfY29udGV4dF9oaXN0b3J5X2NhbGxiYWNrc19zZXQoRXdrX0NvbnRl
eHQqIGV3a0NvbnRleHQsIEV3a19IaXN0b3J5X05hdmlnYXRpb25fQ2IgbmF2aWdhdGUsIEV3a19I
aXN0b3J5X0NsaWVudF9SZWRpcmVjdGlvbl9DYiBjbGllbnRSZWRpcmVjdCwgRXdrX0hpc3Rvcnlf
U2VydmVyX1JlZGlyZWN0aW9uX0NiIHNlcnZlclJlZGlyZWN0LCBFd2tfSGlzdG9yeV9UaXRsZV9V
cGRhdGVfQ2IgdGl0bGVVcGRhdGUsIEV3a19IaXN0b3J5X1BvcHVsYXRlX1Zpc2l0ZWRfTGlua3Nf
Q2IgcG9wdWxhdGVWaXNpdGVkTGlua3MsIHZvaWQqIGRhdGEpCiB7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oZXdrQ29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2NvbnRleHQuaAppbmRleCBmNmI4YmI2N2QyNWQ4N2JhOWQwMzIxZDFhMzc3
ZWZiODdmODFmMzA2Li4xY2U4ZmI0OWY3ZTgzYjJmNTY0ODQzMzBiNjUyZGZiMGQ3ZGRhMGFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAg
LTc0LDIwICs3NCw2IEBAIHR5cGVkZWYgZW51bSBFd2tfQ2FjaGVfTW9kZWwgRXdrX0NhY2hlX01v
ZGVsOwogdHlwZWRlZiB2b2lkICgqRXdrX1VybF9TY2hlbWVfUmVxdWVzdF9DYikgKEV3a19Vcmxf
U2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKnVzZXJfZGF0YSk7CiAKIC8qKgotICogQHR5
cGVkZWYgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmlicmF0ZV9DYiBFd2tfVmlicmF0aW9uX0NsaWVu
dF9WaWJyYXRlX0NiCi0gKiBAYnJpZWYgVHlwZSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRo
YXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIHZpYnJhdGUKLSAqIHJlcXVlc3QgcmVjZWl2ZWVk
IGZyb20gdGhlIHZpYnJhdGlvbiBjb250cm9sbGVyLgotICovCi10eXBlZGVmIHZvaWQgKCpFd2tf
VmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiKSh1aW50NjRfdCB2aWJyYXRpb25fdGltZSwgdm9p
ZCAqdXNlcl9kYXRhKTsKLQotLyoqCi0gKiBAdHlwZWRlZiBFd2tfVmlicmF0aW9uX0NsaWVudF9W
aWJyYXRpb25fQ2FuY2VsX0NiIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxf
Q2IKLSAqIEBicmllZiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJl
IGNhbGxlZCBiYWNrIHdoZW4gY2FuY2VsCi0gKiB2aWJyYXRpb24gcmVxdWVzdCByZWNlaXZlZWQg
ZnJvbSB0aGUgdmlicmF0aW9uIGNvbnRyb2xsZXIuCi0gKi8KLXR5cGVkZWYgdm9pZCAoKkV3a19W
aWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxfQ2IpKHZvaWQgKnVzZXJfZGF0YSk7Ci0K
LS8qKgogICogQHR5cGVkZWYgRXdrX0hpc3RvcnlfTmF2aWdhdGlvbl9DYiBFd2tfSGlzdG9yeV9O
YXZpZ2F0aW9uX0NiCiAgKiBAYnJpZWYgVHlwZSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRo
YXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIEBhIHZpZXcgZGlkIG5hdmlnYXRpb24gKGxvYWRl
ZCBuZXcgVVJMKS4KICAqLwpAQCAtMjM1LDIyICsyMjEsNiBAQCBFQVBJIEV3a19GYXZpY29uX0Rh
dGFiYXNlICpld2tfY29udGV4dF9mYXZpY29uX2RhdGFiYXNlX2dldChjb25zdCBFd2tfQ29udGV4
dCAqYwogRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZWdpc3RlcihFd2tf
Q29udGV4dCAqY29udGV4dCwgY29uc3QgY2hhciAqc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1
ZXN0X0NiIGNhbGxiYWNrLCB2b2lkICp1c2VyX2RhdGEpOwogCiAvKioKLSAqIFNldHMgdmlicmF0
aW9uIGNsaWVudCBjYWxsYmFja3MgdG8gaGFuZGxlIHRoZSB0YWN0aWxlIGZlZWRiYWNrIGluIHRo
ZSBmb3JtIG9mCi0gKiB2aWJyYXRpb24gaW4gdGhlIGNsaWVudCBhcHBsaWNhdGlvbiB3aGVuIHRo
ZSBjb250ZW50IGFza3MgZm9yIHZpYnJhdGlvbi4KLSAqCi0gKiBUbyBzdG9wIGxpc3RlbmluZyBm
b3IgdmlicmF0aW9uIGV2ZW50cywgeW91IG1heSBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCBAYwot
ICogTlVMTCBmb3IgdGhlIGNhbGxiYWNrcy4KLSAqCi0gKiBAcGFyYW0gY29udGV4dCBjb250ZXh0
IG9iamVjdCB0byBzZXQgdmlicmF0aW9uIGNsaWVudCBjYWxsYmFja3MuCi0gKiBAcGFyYW0gdmli
cmF0ZSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB2aWJyYXRlIHJlcXVlc3QgcmVjZWl2
ZWQgZnJvbSB0aGUKLSAqICAgICAgICBjb250cm9sbGVyIChtYXkgYmUgQGMgTlVMTCkuCi0gKiBA
cGFyYW0gY2FuY2VsIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGNhbmNlbCB2aWJyYXRp
b24gcmVxdWVzdCByZWNlaXZlZAotICogICAgICAgIGZyb20gdGhlIGNvbnRyb2xsZXIgKG1heSBi
ZSBAYyBOVUxMKS4KLSAqIEBwYXJhbSBkYXRhIFVzZXIgZGF0YSAobWF5IGJlIEBjIE5VTEwpLgot
ICovCi1FQVBJIHZvaWQgZXdrX2NvbnRleHRfdmlicmF0aW9uX2NsaWVudF9jYWxsYmFja3Nfc2V0
KEV3a19Db250ZXh0ICpjb250ZXh0LCBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiIHZp
YnJhdGUsIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxfQ2IgY2FuY2VsLCB2
b2lkICpkYXRhKTsKLQotLyoqCiAgKiBTZXRzIGhpc3RvcnkgY2FsbGJhY2tzIGZvciB0aGUgZ2l2
ZW4gQGEgY29udGV4dC4KICAqCiAgKiBUbyBzdG9wIGxpc3RlbmluZyBmb3IgaGlzdG9yeSBldmVu
dHMsIHlvdSBtYXkgY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGggQGMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0X3ByaXZhdGUuaAppbmRleCBi
YTQ2MzI0ZjViMGM1ZWNhZjRlMzI2ZmYzMzEyYmMwNTg3NTI1MzMwLi5hYTczMTBiYTc3YzE3OWEw
NGU1NDhmMjQ1ZmY0ZjQxNTlkODY4MzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oCkBAIC0zOCw5ICszOCw2IEBA
IGNsYXNzIEJhdHRlcnlQcm92aWRlcjsKICNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQogY2xhc3Mg
TmV0d29ya0luZm9Qcm92aWRlcjsKICNlbmRpZgotI2lmIEVOQUJMRShWSUJSQVRJT04pCi1jbGFz
cyBWaWJyYXRpb25Qcm92aWRlcjsKLSNlbmRpZgogfQogCiBjbGFzcyBFd2tfQ29udGV4dCA6IHB1
YmxpYyBSZWZDb3VudGVkPEV3a19Db250ZXh0PiB7CkBAIC01OSwxMCArNTYsNiBAQCBwdWJsaWM6
CiAKICAgICBXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsKiByZXF1ZXN0TWFuYWdlcigp
OwogCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBQYXNzUmVmUHRyPFdlYktpdDo6VmlicmF0
aW9uUHJvdmlkZXI+IHZpYnJhdGlvblByb3ZpZGVyKCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgYWRk
VmlzaXRlZExpbmsoY29uc3QgU3RyaW5nJiB2aXNpdGVkVVJMKTsKIAogICAgIHZvaWQgc2V0Q2Fj
aGVNb2RlbChFd2tfQ2FjaGVfTW9kZWwpOwpAQCAtOTAsOSArODMsNiBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShORVRXT1JLX0lORk8pCiAgICAgUmVmUHRyPFdlYktpdDo6TmV0d29ya0luZm9Qcm92
aWRlcj4gbV9uZXR3b3JrSW5mb1Byb3ZpZGVyOwogI2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElP
TikKLSAgICBSZWZQdHI8V2ViS2l0OjpWaWJyYXRpb25Qcm92aWRlcj4gbV92aWJyYXRpb25Qcm92
aWRlcjsKLSNlbmRpZgogICAgIE93blB0cjxXZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbD4gbV9k
b3dubG9hZE1hbmFnZXI7CiAgICAgT3duUHRyPFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRF
Zmw+IG1fcmVxdWVzdE1hbmFnZXJDbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGVkZmFkMGQ0NDhiZDQ4ODY5NTkwYjAyNzU5Y2UwMmVh
ZDQ5OTExNjMuLmIyYWI0ZmEzMmViOGU3ODc4YzhmOWE2Y2EyNzc1Njc1ODRhZGYzMmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaApAQCAtMjcsNiArMjcs
NyBAQAogICogVGhlIGZvbGxvd2luZyBzaWduYWxzIChzZWUgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfYWRkKCkpIGFyZSBlbWl0dGVkOgogICoKICAqIC0gImJhY2ssZm9yd2FyZCxsaXN0LGNo
YW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgdGhlIHZpZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0
IGhhZCBjaGFuZ2VkLgorICogLSAiY2FuY2VsLHZpYnJhdGlvbiIsIHZvaWQ6IHJlcXVlc3QgdG8g
Y2FuY2VsIHRoZSB2aWJyYXRpb24uCiAgKiAtICJjbG9zZSx3aW5kb3ciLCB2b2lkOiB3aW5kb3cg
aXMgY2xvc2VkLgogICogLSAiY3JlYXRlLHdpbmRvdyIsIEV2YXNfT2JqZWN0Kio6IGEgbmV3IHdp
bmRvdyBpcyBjcmVhdGVkLgogICogLSAiZG93bmxvYWQsY2FuY2VsbGVkIiwgRXdrX0Rvd25sb2Fk
X0pvYio6IHJlcG9ydHMgdGhhdCBhIGRvd25sb2FkIHdhcyBlZmZlY3RpdmVseSBjYW5jZWxsZWQu
CkBAIC02OCw2ICs2OSw3IEBACiAgKiAtICJ0b29sdGlwLHRleHQsc2V0IiwgY29uc3QgY2hhcio6
IHRvb2x0aXAgd2FzIHNldC4KICAqIC0gInRvb2x0aXAsdGV4dCx1bnNldCIsIHZvaWQ6IHRvb2x0
aXAgd2FzIHVuc2V0LgogICogLSAidXJsLGNoYW5nZWQiLCBjb25zdCBjaGFyKjogdXJsIG9mIHRo
ZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgorICogLSAidmlicmF0ZSIsIHVpbnQ2NF90KjogcmVx
dWVzdCB0byB2aWJyYXRlLiAodmFsdWUgaXMgdmlicmF0aW9uIHRpbWUpCiAgKiAtICJ3ZWJwcm9j
ZXNzLGNyYXNoZWQiLCBFaW5hX0Jvb2wqOiBleHBlY3RzIGEgQGMgRUlOQV9UUlVFIGlmIHdlYiBw
cm9jZXNzIGNyYXNoIGlzIGhhbmRsZWQ7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lzZS4KICAqLwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0
X2V3azJfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0
cy90ZXN0X2V3azJfY29udGV4dC5jcHAKaW5kZXggMjdlNDZkYzFlNzBmOGI2MWFkMGU0ZjY3OWQ3
NTNhOThmZGM0ZDkyZC4uOGNhMGZmNzE2NTZjMDQwNGIyNDdkYzQ3Nzc1YTkyMGU2ZDhmNTMzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcApAQCAtNzksODYgKzc5LDYgQEAgVEVTVF9GKEVXSzJV
bml0VGVzdEJhc2UsIGV3a19jb250ZXh0X3VybF9zY2hlbWVfcmVnaXN0ZXIpCiAgICAgQVNTRVJU
X1NUUkVRKCJGb28iLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7CiB9CiAKLXN0cnVj
dCBWaWJyYXRpb25DYkRhdGEgewotICAgIGJvb2wgZGlkUmVjZWl2ZVZpYnJhdGVDYWxsYmFjazsg
Ly8gV2hldGhlciB0aGUgdmlicmF0aW9uIGV2ZW50IHJlY2VpdmVkLgotICAgIGJvb2wgZGlkUmVj
ZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrOyAvLyBXaGV0aGVyIHRoZSBjYW5jZWwgdmlicmF0
aW9uIGV2ZW50IHJlY2VpdmVkLgotICAgIHVuc2lnbmVkIHZpYnJhdGVDYWxsZWRDb3VudDsgLy8g
VmlicmF0ZSBjYWxsYmFja3MgY291bnQuCi0gICAgdWludDY0X3QgZXhwZWN0ZWRWaWJyYXRpb25U
aW1lOyAvLyBFeHBlY3RlZCB2aWJyYXRpb24gdGltZS4KLX07Ci0KLXN0YXRpYyB2b2lkIHZpYnJh
dGVDYWxsYmFjayh1aW50NjRfdCB2aWJyYXRpb25UaW1lLCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAg
ICBWaWJyYXRpb25DYkRhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxWaWJyYXRpb25DYkRhdGEqPih1
c2VyRGF0YSk7Ci0gICAgaWYgKHZpYnJhdGlvblRpbWUgPT0gZGF0YS0+ZXhwZWN0ZWRWaWJyYXRp
b25UaW1lKQotICAgICAgICBkYXRhLT5kaWRSZWNlaXZlVmlicmF0ZUNhbGxiYWNrID0gdHJ1ZTsK
LSAgICBkYXRhLT52aWJyYXRlQ2FsbGVkQ291bnQrKzsKLX0KLQotc3RhdGljIHZvaWQgY2FuY2Vs
VmlicmF0aW9uQ2FsbGJhY2sodm9pZCogdXNlckRhdGEpCi17Ci0gICAgVmlicmF0aW9uQ2JEYXRh
KiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JEYXRhKj4odXNlckRhdGEpOwotICAgIGRh
dGEtPmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb25DYWxsYmFjayA9IHRydWU7Ci19Ci0KLXN0YXRp
YyB2b2lkIGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBjb25z
dCBjaGFyKiB2aWJyYXRpb25QYXR0ZXJuLCBib29sIHdhaXRGb3JWaWJyYXRpb25FdmVudCwgVmli
cmF0aW9uQ2JEYXRhKiBkYXRhKQotewotICAgIGNvbnN0IGNoYXIqIGNvbnRlbnQgPQotICAgICAg
ICAiPGh0bWw+PGhlYWQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIHZp
YnJhdGUoKSB7IG5hdmlnYXRvci52aWJyYXRlKCVzKTsiCi0gICAgICAgICIgZG9jdW1lbnQudGl0
bGUgPSBcIkxvYWRlZFwiOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0ndmlicmF0ZSgp
Jz48L2JvZHk+PC9odG1sPiI7Ci0KLSAgICBkYXRhLT5kaWRSZWNlaXZlVmlicmF0ZUNhbGxiYWNr
ID0gZmFsc2U7Ci0gICAgZGF0YS0+ZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrID0g
ZmFsc2U7Ci0gICAgZGF0YS0+dmlicmF0ZUNhbGxlZENvdW50ID0gMDsKLSAgICBFaW5hX1N0cmJ1
ZiogYnVmZmVyID0gZWluYV9zdHJidWZfbmV3KCk7Ci0gICAgZWluYV9zdHJidWZfYXBwZW5kX3By
aW50ZihidWZmZXIsIGNvbnRlbnQsIHZpYnJhdGlvblBhdHRlcm4pOwotICAgIGV3a192aWV3X2h0
bWxfc3RyaW5nX2xvYWQod2ViVmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAw
LCAwKTsKLSAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7Ci0KLSAgICBpZiAoIXdhaXRGb3JW
aWJyYXRpb25FdmVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgd2hpbGUgKCFkYXRhLT5kaWRS
ZWNlaXZlVmlicmF0ZUNhbGxiYWNrICYmICFkYXRhLT5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9u
Q2FsbGJhY2spCi0gICAgICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7Ci19Ci0KLVRFU1Rf
RihFV0syVW5pdFRlc3RCYXNlLCBld2tfY29udGV4dF92aWJyYXRpb25fY2xpZW50X2NhbGxiYWNr
c19zZXQpCi17Ci0gICAgVmlicmF0aW9uQ2JEYXRhIGRhdGEgPSB7IGZhbHNlLCBmYWxzZSwgMCwg
NTAwMCB9OwotICAgIGV3a19jb250ZXh0X3ZpYnJhdGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldChl
d2tfdmlld19jb250ZXh0X2dldCh3ZWJWaWV3KCkpLCB2aWJyYXRlQ2FsbGJhY2ssIGNhbmNlbFZp
YnJhdGlvbkNhbGxiYWNrLCAmZGF0YSk7Ci0KLSAgICAvLyBWaWJyYXRlIGZvciA1IHNlY29uZHMu
Ci0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAiNTAwMCIsIHRydWUsICZk
YXRhKTsKLSAgICBBU1NFUlRfVFJVRShkYXRhLmRpZFJlY2VpdmVWaWJyYXRlQ2FsbGJhY2spOwot
Ci0gICAgLy8gQ2FuY2VsIGFueSBleGlzdGluZyB2aWJyYXRpb25zLgotICAgIGxvYWRWaWJyYXRp
b25IVE1MU3RyaW5nKHdlYlZpZXcoKSwgIjAiLCB0cnVlLCAmZGF0YSk7Ci0gICAgQVNTRVJUX1RS
VUUoZGF0YS5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uQ2FsbGJhY2spOwotCi0gICAgLy8gVGhp
cyBjYXNlIHRoZSBwYXR0ZXJuIHdpbGwgY2F1c2UgdGhlIGRldmljZSB0byB2aWJyYXRlIGZvciAy
MDAgbXMsIGJlIHN0aWxsIGZvciAxMDAgbXMsIGFuZCB0aGVuIHZpYnJhdGUgZm9yIDUwMDAgbXMu
Ci0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAiWzIwMCwgMTAwLCA1MDAw
XSIsIHRydWUsICZkYXRhKTsKLSAgICBBU1NFUlRfRVEoMiwgZGF0YS52aWJyYXRlQ2FsbGVkQ291
bnQpOwotICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZVZpYnJhdGVDYWxsYmFjayk7Ci0K
LSAgICAvLyBDYW5jZWwgb3V0c3RhbmRpbmcgdmlicmF0aW9uIHBhdHRlcm4uCi0gICAgbG9hZFZp
YnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAiWzBdIiwgdHJ1ZSwgJmRhdGEpOwotICAgIEFT
U0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKTsKLQotICAg
IC8vIFN0b3AgbGlzdGVuaW5nIGZvciB2aWJyYXRpb24gZXZlbnRzLCBieSBjYWxsaW5nIHRoZSBm
dW5jdGlvbiB3aXRoIG51bGwgZm9yIHRoZSBjYWxsYmFja3MuCi0gICAgZXdrX2NvbnRleHRfdmli
cmF0aW9uX2NsaWVudF9jYWxsYmFja3Nfc2V0KGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXco
KSksIDAsIDAsICZkYXRhKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCByZWNlaXZlIHZp
YnJhdGlvbiBldmVudC4KLSAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJb
NTAwMF0iLCBmYWxzZSwgJmRhdGEpOwotICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hh
bmdlZFRvKCJMb2FkZWQiKSk7Ci0gICAgQVNTRVJUX1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190
aXRsZV9nZXQod2ViVmlldygpKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZVZp
YnJhdGVDYWxsYmFjayk7Ci0KLSAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmVjZWl2ZSBjYW5j
ZWwgdmlicmF0aW9uIGV2ZW50LgotICAgIGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKHdlYlZpZXco
KSwgIjAiLCBmYWxzZSwgJmRhdGEpOwotICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hh
bmdlZFRvKCJMb2FkZWQiKSk7Ci0gICAgQVNTRVJUX1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190
aXRsZV9nZXQod2ViVmlldygpKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZUNh
bmNlbFZpYnJhdGlvbkNhbGxiYWNrKTsKLX0KLQogVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3
a19jb250ZXh0X2NhY2hlX21vZGVsKQogewogICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdr
X3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA4MDI0
MGQyYWU0YTgxYTFkNWE5YWQwNjYxYjc5YTYwNWIyYmNlNWJjLi4xOTk5NzBkMjljN2RhMGZhMGRk
YmI2ZTJjMWQxYzJhYjYwMjUxYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwCkBAIC03OTcsMyArNzk3
LDg3IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmlld19wYWdpbmF0aW9uKQogICAg
IEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmlyb25tZW50LT5kZWZhdWx0VGVzdFBhZ2VVcmwo
KSkpOwogICAgIEFTU0VSVF9FUShFV0tfUEFHSU5BVElPTl9NT0RFX1VOUEFHSU5BVEVELCBld2tf
dmlld19wYWdpbmF0aW9uX21vZGVfZ2V0KHdlYlZpZXcoKSkpOwogfQorCitzdHJ1Y3QgVmlicmF0
aW9uQ2JEYXRhIHsKKyAgICBib29sIGRpZFJlY2VpdmVWaWJyYXRlOyAvLyBXaGV0aGVyIHRoZSB2
aWJyYXRpb24gZXZlbnQgcmVjZWl2ZWQuCisgICAgYm9vbCBkaWRSZWNlaXZlQ2FuY2VsVmlicmF0
aW9uOyAvLyBXaGV0aGVyIHRoZSBjYW5jZWwgdmlicmF0aW9uIGV2ZW50IHJlY2VpdmVkLgorICAg
IHVuc2lnbmVkIHZpYnJhdGVDYWxsZWRDb3VudDsgLy8gVmlicmF0ZSBjYWxsYmFja3MgY291bnQu
CisgICAgdWludDY0X3QgZXhwZWN0ZWRWaWJyYXRpb25UaW1lOyAvLyBFeHBlY3RlZCB2aWJyYXRp
b24gdGltZS4KK307CisKK3N0YXRpYyB2b2lkIG9uVmlicmF0ZSh2b2lkKiB1c2VyRGF0YSwgRXZh
c19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRh
ID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JEYXRhKj4odXNlckRhdGEpOworICAgIHVpbnQ2NF90
KiB2aWJyYXRpb25UaW1lID0gc3RhdGljX2Nhc3Q8dWludDY0X3QqPihldmVudEluZm8pOworICAg
IGlmICgqdmlicmF0aW9uVGltZSA9PSBkYXRhLT5leHBlY3RlZFZpYnJhdGlvblRpbWUpCisgICAg
ICAgIGRhdGEtPmRpZFJlY2VpdmVWaWJyYXRlID0gdHJ1ZTsKKyAgICBkYXRhLT52aWJyYXRlQ2Fs
bGVkQ291bnQrKzsKK30KKworc3RhdGljIHZvaWQgb25DYW5jZWxWaWJyYXRpb24odm9pZCogdXNl
ckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCopCit7CisgICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRh
ID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JEYXRhKj4odXNlckRhdGEpOworICAgIGRhdGEtPmRp
ZFJlY2VpdmVDYW5jZWxWaWJyYXRpb24gPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBsb2FkVmli
cmF0aW9uSFRNTFN0cmluZyhFdmFzX09iamVjdCogd2ViVmlldywgY29uc3QgY2hhciogdmlicmF0
aW9uUGF0dGVybiwgYm9vbCB3YWl0Rm9yVmlicmF0aW9uRXZlbnQsIFZpYnJhdGlvbkNiRGF0YSog
ZGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiBjb250ZW50ID0KKyAgICAgICAgIjxodG1sPjxoZWFk
PjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlvbiB2aWJyYXRlKCkgeyBuYXZp
Z2F0b3IudmlicmF0ZSglcyk7IgorICAgICAgICAiIGRvY3VtZW50LnRpdGxlID0gXCJMb2FkZWRc
IjsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9J3ZpYnJhdGUoKSc+PC9ib2R5PjwvaHRt
bD4iOworCisgICAgZGF0YS0+ZGlkUmVjZWl2ZVZpYnJhdGUgPSBmYWxzZTsKKyAgICBkYXRhLT5k
aWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uID0gZmFsc2U7CisgICAgZGF0YS0+dmlicmF0ZUNhbGxl
ZENvdW50ID0gMDsKKyAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0gZWluYV9zdHJidWZfbmV3KCk7
CisgICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50ZihidWZmZXIsIGNvbnRlbnQsIHZpYnJhdGlv
blBhdHRlcm4pOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldywgZWluYV9z
dHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAwLCAwKTsKKyAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1
ZmZlcik7CisKKyAgICBpZiAoIXdhaXRGb3JWaWJyYXRpb25FdmVudCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgd2hpbGUgKCFkYXRhLT5kaWRSZWNlaXZlVmlicmF0ZSAmJiAhZGF0YS0+ZGlkUmVj
ZWl2ZUNhbmNlbFZpYnJhdGlvbikKKyAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsK
K30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb250ZXh0X3ZpYnJhdGlvbl9jbGll
bnRfY2FsbGJhY2tzX3NldCkKK3sKKyAgICBWaWJyYXRpb25DYkRhdGEgZGF0YSA9IHsgZmFsc2Us
IGZhbHNlLCAwLCA1MDAwIH07CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdl
YlZpZXcoKSwgInZpYnJhdGUiLCBvblZpYnJhdGUsICZkYXRhKTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAiY2FuY2VsLHZpYnJhdGlvbiIsIG9uQ2FuY2Vs
VmlicmF0aW9uLCAmZGF0YSk7CisKKyAgICAvLyBWaWJyYXRlIGZvciA1IHNlY29uZHMuCisgICAg
bG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAiNTAwMCIsIHRydWUsICZkYXRhKTsK
KyAgICBBU1NFUlRfVFJVRShkYXRhLmRpZFJlY2VpdmVWaWJyYXRlKTsKKworICAgIC8vIENhbmNl
bCBhbnkgZXhpc3RpbmcgdmlicmF0aW9ucy4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3
ZWJWaWV3KCksICIwIiwgdHJ1ZSwgJmRhdGEpOworICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVj
ZWl2ZUNhbmNlbFZpYnJhdGlvbik7CisKKyAgICAvLyBUaGlzIGNhc2UgdGhlIHBhdHRlcm4gd2ls
bCBjYXVzZSB0aGUgZGV2aWNlIHRvIHZpYnJhdGUgZm9yIDIwMCBtcywgYmUgc3RpbGwgZm9yIDEw
MCBtcywgYW5kIHRoZW4gdmlicmF0ZSBmb3IgNTAwMCBtcy4KKyAgICBsb2FkVmlicmF0aW9uSFRN
TFN0cmluZyh3ZWJWaWV3KCksICJbMjAwLCAxMDAsIDUwMDBdIiwgdHJ1ZSwgJmRhdGEpOworICAg
IEFTU0VSVF9FUSgyLCBkYXRhLnZpYnJhdGVDYWxsZWRDb3VudCk7CisgICAgQVNTRVJUX1RSVUUo
ZGF0YS5kaWRSZWNlaXZlVmlicmF0ZSk7CisKKyAgICAvLyBDYW5jZWwgb3V0c3RhbmRpbmcgdmli
cmF0aW9uIHBhdHRlcm4uCisgICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAi
WzBdIiwgdHJ1ZSwgJmRhdGEpOworICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNl
bFZpYnJhdGlvbik7CisKKyAgICAvLyBTdG9wIGxpc3RlbmluZyBmb3IgdmlicmF0aW9uIGV2ZW50
cywgYnkgY2FsbGluZyB0aGUgZnVuY3Rpb24gd2l0aCBudWxsIGZvciB0aGUgY2FsbGJhY2tzLgor
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJWaWV3KCksICJ2aWJyYXRlIiwg
b25WaWJyYXRlKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygp
LCAiY2FuY2VsLHZpYnJhdGlvbiIsIG9uQ2FuY2VsVmlicmF0aW9uKTsKKworICAgIC8vIE1ha2Ug
c3VyZSB3ZSBkb24ndCByZWNlaXZlIHZpYnJhdGlvbiBldmVudC4KKyAgICBsb2FkVmlicmF0aW9u
SFRNTFN0cmluZyh3ZWJWaWV3KCksICJbNTAwMF0iLCBmYWxzZSwgJmRhdGEpOworICAgIEFTU0VS
VF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJMb2FkZWQiKSk7CisgICAgQVNTRVJUX1NU
UkVRKCJMb2FkZWQiLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7CisgICAgQVNTRVJU
X0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZVZpYnJhdGUpOworCisgICAgLy8gTWFrZSBzdXJlIHdlIGRv
bid0IHJlY2VpdmUgY2FuY2VsIHZpYnJhdGlvbiBldmVudC4KKyAgICBsb2FkVmlicmF0aW9uSFRN
TFN0cmluZyh3ZWJWaWV3KCksICIwIiwgZmFsc2UsICZkYXRhKTsKKyAgICBBU1NFUlRfVFJVRSh3
YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiTG9hZGVkIikpOworICAgIEFTU0VSVF9TVFJFUSgiTG9h
ZGVkIiwgZXdrX3ZpZXdfdGl0bGVfZ2V0KHdlYlZpZXcoKSkpOworICAgIEFTU0VSVF9GQUxTRShk
YXRhLmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb24pOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZmU2OWYyYjdlMDNiZDliMTdkNTI2OTYzZDgzYzA1YmM1
N2M0ZjAxMS4uMTE2NTExNjA2ZGI0OWYxOGY1ZjE4ZjYyMjcyOWNlZWUzZjBhOTQ0MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtNzksMTAgKzc5LDYgQEAKICNp
bmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoVklCUkFUSU9OKQotI2luY2x1ZGUgIldlYlZpYnJhdGlvblByb3h5LmgiCi0jZW5kaWYKLQog
I2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAj
ZW5kaWYKQEAgLTE2Miw5ICsxNTgsNiBAQCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NN
b2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIFVT
RShTT1VQKQogICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHkgPSBXZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikK
LSAgICBtX3ZpYnJhdGlvblByb3h5ID0gV2ViVmlicmF0aW9uUHJveHk6OmNyZWF0ZSh0aGlzKTsK
LSNlbmRpZgogICAgIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBXZWJLaXQ6OmluaXRpYWxpemVM
b2dDaGFubmVsc0lmTmVjZXNzYXJ5KCk7CkBAIC0yNDEsMTEgKzIzNCw2IEBAIFdlYkNvbnRleHQ6
On5XZWJDb250ZXh0KCkKICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdlclByb3h5LT5jbGVhckNvbnRl
eHQoKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBtX3ZpYnJhdGlvblBy
b3h5LT5pbnZhbGlkYXRlKCk7Ci0gICAgbV92aWJyYXRpb25Qcm94eS0+Y2xlYXJDb250ZXh0KCk7
Ci0jZW5kaWYKLQogICAgIGludmFsaWRhdGVDYWxsYmFja01hcChtX2RpY3Rpb25hcnlDYWxsYmFj
a3MpOwogCiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgpOwpAQCAtNTUwLDkgKzUzOCw2
IEBAIHZvaWQgV2ViQ29udGV4dDo6ZGlzY29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBw
cm9jZXNzKQogI2lmIFVTRShTT1VQKQogICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHktPmlu
dmFsaWRhdGUoKTsKICNlbmRpZgotI2lmIEVOQUJMRShWSUJSQVRJT04pCi0gICAgbV92aWJyYXRp
b25Qcm94eS0+aW52YWxpZGF0ZSgpOwotI2VuZGlmCiAKICAgICAvLyBXaGVuIG91dCBvZiBwcm9j
ZXNzIHBsdWctaW5zIGFyZSBlbmFibGVkLCB3ZSBkb24ndCB3YW50IHRvIGludmFsaWRhdGUgdGhl
IHBsdWctaW4gc2l0ZSBkYXRhCiAgICAgLy8gbWFuYWdlciBqdXN0IGJlY2F1c2UgdGhlIHdlYiBw
cm9jZXNzIGNyYXNoZXMgc2luY2UgaXQncyBub3QgaW52b2x2ZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuaAppbmRleCAwZDQ0NDU0YmFiNjNhNjE2M2IzNjM2Zjg2MWEzNWI0N2Vi
MDM0NDhmLi5kODk0YTAwYTE4Yjk0NDM3Yjc1NDU1MTc0MmYzMThlZWFhNGY5YzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTY5LDkgKzY5LDYgQEAgY2xhc3MgV2Vi
UmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTsKICNpZiBVU0UoU09VUCkKIGNsYXNzIFdlYlNvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5OwogI2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLWNsYXNz
IFdlYlZpYnJhdGlvblByb3h5OwotI2VuZGlmCiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1
Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAKQEAgLTIwMyw5ICsyMDAsNiBA
QCBwdWJsaWM6CiAjaWYgVVNFKFNPVVApCiAgICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkq
IHNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9zb3VwUmVxdWVzdE1h
bmFnZXJQcm94eS5nZXQoKTsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBX
ZWJWaWJyYXRpb25Qcm94eSogdmlicmF0aW9uUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3ZpYnJh
dGlvblByb3h5LmdldCgpOyB9Ci0jZW5kaWYKIAogICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsKICAg
ICAgICAgdW5zaWduZWQgd2tWaWV3Q291bnQ7CkBAIC0zNjgsOSArMzYyLDYgQEAgcHJpdmF0ZToK
ICNpZiBVU0UoU09VUCkKICAgICBSZWZQdHI8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+IG1f
c291cFJlcXVlc3RNYW5hZ2VyUHJveHk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQot
ICAgIFJlZlB0cjxXZWJWaWJyYXRpb25Qcm94eT4gbV92aWJyYXRpb25Qcm94eTsKLSNlbmRpZgog
CiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGJvb2wgbV9zaG91bGRQYWludE5hdGl2ZUNvbnRyb2xz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxNDU2NjEx
Y2IwNzljYWVlOTJhZDkyMDYwNWRjZTIwNWI1MzFiYzQ2Li4yYjYyZWFmNmQzNWVmZjQ0ZDA4NDky
YTljZDM1ZmVkOGI3MzU1NTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcApAQCAtMTExLDYgKzExMSwxMCBAQAogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFu
YWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAi
V2ViVmlicmF0aW9uUHJveHkuaCIKKyNlbmRpZgorCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNlbmRpZgpAQCAtNDQ3LDYgKzQ1MSwxMyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxF
KFZJQlJBVElPTikKKyAgICBpZiAobV92aWJyYXRpb24pIHsKKyAgICAgICAgbV92aWJyYXRpb24t
PmludmFsaWRhdGUoKTsKKyAgICAgICAgbV92aWJyYXRpb24gPSAwOworICAgIH0KKyNlbmRpZgor
CiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIpIHsKICAgICAgICAgbV9vcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwogICAgICAgICBtX29wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyID0gMDsKQEAgLTE4NjUsNiArMTg3NiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQ
Qzo6TQogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBpZiAobWVz
c2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYlZpYnJhdGlvblByb3h5PigpKSB7Cisg
ICAgICAgIGlmIChXZWJWaWJyYXRpb25Qcm94eSogdmlicmF0aW9uID0gdGhpcy0+dmlicmF0aW9u
KCkpCisgICAgICAgICAgICB2aWJyYXRpb24tPmRpZFJlY2VpdmVXZWJWaWJyYXRpb25Qcm94eU1l
c3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgorCiAgICAgZGlkUmVjZWl2ZVdlYlBhZ2VQcm94eU1lc3NhZ2UoY29ubmVj
dGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0KIApAQCAtMjg0MSw2ICsyODYwLDE2IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWREcmF3KCkKICAgICBtX3VpQ2xpZW50LmRpZERyYXcodGhpcyk7
CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjphZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciogbWVzc2FnZVJlY2VpdmVyKQoreworICAgIG1fbWVz
c2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKQoreworICAgIG1fbWVzc2FnZVJlY2Vp
dmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklEKTsKK30KKwogLy8gSW5zcGVjdG9yCiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAt
Mjg2NSw2ICsyODk0LDE1IEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94
eTo6ZnVsbFNjcmVlbk1hbmFnZXIoKQogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9O
KQorV2ViVmlicmF0aW9uUHJveHkqIFdlYlBhZ2VQcm94eTo6dmlicmF0aW9uKCkKK3sKKyAgICBp
ZiAoIW1fdmlicmF0aW9uKQorICAgICAgICBtX3ZpYnJhdGlvbiA9IFdlYlZpYnJhdGlvblByb3h5
OjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1fdmlicmF0aW9uLmdldCgpOworfQorI2VuZGlm
CisKIC8vIEJhY2tGb3J3YXJkTGlzdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRB
ZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKQEAgLTM1OTgsNiArMzYzNiwxMyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShW
SUJSQVRJT04pCisgICAgaWYgKG1fdmlicmF0aW9uKSB7CisgICAgICAgIG1fdmlicmF0aW9uLT5p
bnZhbGlkYXRlKCk7CisgICAgICAgIG1fdmlicmF0aW9uID0gbnVsbHB0cjsKKyAgICB9CisjZW5k
aWYKKwogICAgIGlmIChtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyKSB7CiAgICAgICAgIG1fb3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKICAgICAgICAgbV9vcGVuUGFuZWxS
ZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggYjhlMzRiYzkwOTFiNGY2ZGFiNDAwODlmMzUxNWRmOTA0NTE2ZTFmMi4uOTVm
NWMzZjhjMTgwNzYwYTlmN2Q2ODY2NTliZGU2MmU2YjlmMzU5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzksNiArMzksOCBAQAogI2luY2x1ZGUgIlF0TmV0
d29ya1JlcXVlc3REYXRhLmgiCiAjZW5kaWYKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0Lmgi
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
TWFwLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nlc3NJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMTUwLDYgKzE1Miw5IEBAIGNsYXNzIFdlYk9wZW5QYW5l
bFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQcm9j
ZXNzUHJveHk7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0OworI2lmIEVOQUJMRShWSUJSQVRJT04pCitj
bGFzcyBXZWJWaWJyYXRpb25Qcm94eTsKKyNlbmRpZgogY2xhc3MgV2ViV2hlZWxFdmVudDsKIHN0
cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3RydWN0IENvbG9yU3BhY2VEYXRhOwpAQCAtMjQ0LDcg
KzI0OSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eQogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9S
KQogICAgICwgcHVibGljIFdlYkNvbG9yQ2hvb3NlclByb3h5OjpDbGllbnQKICNlbmRpZgotICAg
ICwgcHVibGljIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQgeworICAgICwgcHVibGljIFdlYlBv
cHVwTWVudVByb3h5OjpDbGllbnQsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVBhZ2U7CiAKQEAg
LTI2MSw2ICsyNjYsOSBAQCBwdWJsaWM6CiAKICAgICBXZWJCYWNrRm9yd2FyZExpc3QqIGJhY2tG
b3J3YXJkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRMaXN0LmdldCgpOyB9CiAK
KyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgQ29yZUlQQzo6TWVzc2Fn
ZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQp
OworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVj
dG9yKCk7CiAjZW5kaWYKQEAgLTI2OSw2ICsyNzcsMTAgQEAgcHVibGljOgogICAgIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkqIGZ1bGxTY3JlZW5NYW5hZ2VyKCk7CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShWSUJSQVRJT04pCisgICAgV2ViVmlicmF0aW9uUHJveHkqIHZpYnJhdGlvbigpOworI2Vu
ZGlmCisKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICB2b2lkIGluaXRpYWxpemVDb250
ZXh0TWVudUNsaWVudChjb25zdCBXS1BhZ2VDb250ZXh0TWVudUNsaWVudCopOwogI2VuZGlmCkBA
IC0xMDQzLDYgKzEwNTUsOCBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVu
dCBtX2NvbnRleHRNZW51Q2xpZW50OwogI2VuZGlmCiAKKyAgICBDb3JlSVBDOjpNZXNzYWdlUmVj
ZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7CisKICAgICBPd25QdHI8RHJhd2luZ0FyZWFQ
cm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nl
c3M7CiAgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4gbV9wYWdlR3JvdXA7CkBAIC0xMDYzLDYgKzEw
NzcsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4g
bV9mdWxsU2NyZWVuTWFuYWdlcjsKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAg
ICBSZWZQdHI8V2ViVmlicmF0aW9uUHJveHk+IG1fdmlicmF0aW9uOworI2VuZGlmCisKICAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Vm9pZENhbGxiYWNrPiA+IG1fdm9pZENhbGxiYWNrczsK
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8RGF0YUNhbGxiYWNrPiA+IG1fZGF0YUNhbGxi
YWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+ID4gbV9z
dHJpbmdDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
VmlicmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlv
blByb3h5LmNwcAppbmRleCA0YTY0NWQ1NDM3N2Y3MjMwZGRlNGY2ZTAwOTg5ZWM1M2MzNDgzMjg4
Li5hYzFiYTlkNjc5MjVlMWMzOWJkNmQzOGZiMWFkNTM1ZWZlMTlmMzYxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAKQEAgLTI4LDI0ICsyOCwy
NSBAQAogCiAjaWYgRU5BQkxFKFZJQlJBVElPTikKIAotI2luY2x1ZGUgIldlYkNvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWJyYXRpb25Qcm94eU1l
c3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYlZpYnJhdGlv
blByb3h5PiBXZWJWaWJyYXRpb25Qcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCitQ
YXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBXZWJWaWJyYXRpb25Qcm94eTo6Y3JlYXRlKFdl
YlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpYnJhdGlv
blByb3h5KGNvbnRleHQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpYnJhdGlvblBy
b3h5KHBhZ2UpKTsKIH0KIAotV2ViVmlicmF0aW9uUHJveHk6OldlYlZpYnJhdGlvblByb3h5KFdl
YkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKK1dlYlZpYnJhdGlv
blByb3h5OjpXZWJWaWJyYXRpb25Qcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3Bh
Z2UocGFnZSkKIHsKLSAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViVmlicmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CisgICAgbV9w
YWdlLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlZpYnJhdGlvblByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksIHRoaXMpOwogfQogCiBXZWJWaWJy
YXRpb25Qcm94eTo6fldlYlZpYnJhdGlvblByb3h5KCkKIHsKKyAgICBtX3BhZ2UtPnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlicmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViVmlicmF0aW9uUHJveHk6
OmludmFsaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZp
YnJhdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJv
eHkuaAppbmRleCA1YzZkZTE3ZDcyMTA0ZmFkMDQ0NjBjMTBiZTM0MWVmOTUyMWUxM2ZhLi4wMDMx
ZGZkMzY2Yzk2OWM3NDc3OTA1MGQ3ZDJmY2NiNGQxZmI1MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaApAQCAtMzUsMzUgKzM1LDM0IEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJDb250ZXh0OworY2xhc3MgV2ViUGFnZVByb3h5
OwogCiBjbGFzcyBXZWJWaWJyYXRpb25Qcm94eSA6IHB1YmxpYyBBUElPYmplY3QsIHByaXZhdGUg
Q29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlw
ZSBBUElUeXBlID0gVHlwZVZpYnJhdGlvbjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZp
YnJhdGlvblByb3h5PiBjcmVhdGUoV2ViQ29udGV4dCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYlZpYnJhdGlvblByb3h5PiBjcmVhdGUoV2ViUGFnZVByb3h5Kik7CiAgICAgdmlydHVhbCB+
V2ViVmlicmF0aW9uUHJveHkoKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwotICAgIHZvaWQg
Y2xlYXJDb250ZXh0KCkgeyBtX2NvbnRleHQgPSAwOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVQ
cm92aWRlcihjb25zdCBXS1ZpYnJhdGlvblByb3ZpZGVyKik7CiAKKyAgICAvLyBJbXBsZW1lbnRl
ZCBpbiBnZW5lcmF0ZWQgV2ViVmlicmF0aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAg
dm9pZCBkaWRSZWNlaXZlV2ViVmlicmF0aW9uUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rp
b24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKIHBy
aXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViVmlicmF0aW9uUHJveHkoV2ViQ29udGV4dCopOworICAg
IGV4cGxpY2l0IFdlYlZpYnJhdGlvblByb3h5KFdlYlBhZ2VQcm94eSopOwogCiAgICAgdmlydHVh
bCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CiAKICAgICAvLyBDb3JlSVBD
OjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURl
Y29kZXImKSBPVkVSUklERTsKIAotICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJW
aWJyYXRpb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJW
aWJyYXRpb25Qcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3Nh
Z2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKLQogICAgIHZvaWQgdmlicmF0ZSh1aW50
NjRfdCB2aWJyYXRpb25UaW1lKTsKICAgICB2b2lkIGNhbmNlbFZpYnJhdGlvbigpOwogCi0gICAg
V2ViQ29udGV4dCogbV9jb250ZXh0OworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFdl
YlZpYnJhdGlvblByb3ZpZGVyIG1fcHJvdmlkZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvbkNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvbkNsaWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVm
YjE2MWUyMWFjZTI5MGU2ZWE2YTMxN2U5ZDc0N2I5Y2Q0YTYxNwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNwcApAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50RWZsLmgiCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQor
CisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNs
dWRlICJXS1ZpYnJhdGlvbi5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMg
aW5saW5lIFZpYnJhdGlvbkNsaWVudEVmbCogdG9WaWJyYXRpb25DbGllbnQoY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2xpZW50RWZs
Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCit2b2lkIFZpYnJhdGlvbkNs
aWVudEVmbDo6dmlicmF0ZUNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCB1aW50NjRfdCB2aWJyYXRp
b25UaW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHRvVmlicmF0aW9uQ2xpZW50
KGNsaWVudEluZm8pLT5tX3ZpZXdJbXBsLT52aWJyYXRlKHZpYnJhdGlvblRpbWUpOworfQorCit2
b2lkIFZpYnJhdGlvbkNsaWVudEVmbDo6Y2FuY2VsVmlicmF0aW9uQ2FsbGJhY2soV0tWaWJyYXRp
b25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9WaWJyYXRpb25DbGllbnQo
Y2xpZW50SW5mbyktPm1fdmlld0ltcGwtPmNhbmNlbFZpYnJhdGlvbigpOworfQorCitQYXNzT3du
UHRyPFZpYnJhdGlvbkNsaWVudEVmbD4gVmlicmF0aW9uQ2xpZW50RWZsOjpjcmVhdGUoRXdrVmll
d0ltcGwqIHZpZXdJbXBsKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVmlicmF0aW9uQ2xp
ZW50RWZsKHZpZXdJbXBsKSk7Cit9CisKK1ZpYnJhdGlvbkNsaWVudEVmbDo6VmlicmF0aW9uQ2xp
ZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkKKyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwp
Cit7CisgICAgQVNTRVJUKG1fdmlld0ltcGwpOworCisgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBt
X3ZpZXdJbXBsLT53a1BhZ2UoKTsKKyAgICBBU1NFUlQocGFnZVJlZik7CisKKyAgICBXS1ZpYnJh
dGlvblJlZiB3a1ZpYnJhdGlvbiA9IFdLUGFnZUdldFZpYnJhdGlvbihwYWdlUmVmKTsKKyAgICBB
U1NFUlQod2tWaWJyYXRpb24pOworCisgICAgV0tWaWJyYXRpb25Qcm92aWRlciB3a1ZpYnJhdGlv
blByb3ZpZGVyID0geworICAgICAgICBrV0tWaWJyYXRpb25Qcm92aWRlckN1cnJlbnRWZXJzaW9u
LAorICAgICAgICB0aGlzLCAvLyBjbGllbnRJbmZvCisgICAgICAgIHZpYnJhdGVDYWxsYmFjaywK
KyAgICAgICAgY2FuY2VsVmlicmF0aW9uQ2FsbGJhY2sKKyAgICB9OworICAgIFdLVmlicmF0aW9u
U2V0UHJvdmlkZXIod2tWaWJyYXRpb24sICZ3a1ZpYnJhdGlvblByb3ZpZGVyKTsKK30KKworVmli
cmF0aW9uQ2xpZW50RWZsOjp+VmlicmF0aW9uQ2xpZW50RWZsKCkKK3sKKyAgICBXS1BhZ2VSZWYg
cGFnZVJlZiA9IG1fdmlld0ltcGwtPndrUGFnZSgpOworICAgIEFTU0VSVChwYWdlUmVmKTsKKwor
ICAgIFdLVmlicmF0aW9uUmVmIHdrVmlicmF0aW9uID0gV0tQYWdlR2V0VmlicmF0aW9uKHBhZ2VS
ZWYpOworICAgIEFTU0VSVCh3a1ZpYnJhdGlvbik7CisKKyAgICBXS1ZpYnJhdGlvblNldFByb3Zp
ZGVyKHdrVmlicmF0aW9uLCAwKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvbkNsaWVudEVm
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25DbGllbnRFZmwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMDc3ZjA0YWNkZTI2MWQwMjMzZjZiMDFmMDY3MDk5NmRmNGYzMWExCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25DbGll
bnRFZmwuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVs
IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZp
YnJhdGlvbkNsaWVudEVmbF9oCisjZGVmaW5lIFZpYnJhdGlvbkNsaWVudEVmbF9oCisKKyNpZiBF
TkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorCitjbGFzcyBFd2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFZpYnJhdGlvbkNsaWVudEVmbCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8VmlicmF0aW9uQ2xpZW50RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqKTsKKwor
ICAgIHZpcnR1YWwgflZpYnJhdGlvbkNsaWVudEVmbCgpOworCitwcml2YXRlOgorICAgIGV4cGxp
Y2l0IFZpYnJhdGlvbkNsaWVudEVmbChFd2tWaWV3SW1wbCopOworCisgICAgc3RhdGljIHZvaWQg
dmlicmF0ZUNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCB1aW50NjRfdCB2aWJyYXRpb25UaW1lLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBjYW5jZWxWaWJyYXRpb25D
YWxsYmFjayhXS1ZpYnJhdGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKKyAgICBF
d2tWaWV3SW1wbCogbV92aWV3SW1wbDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKworI2VuZGlmIC8vIFZpYnJhdGlvblByb3ZpZGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlicmF0aW9uUHJv
dmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRl
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZTYyOTY4YzI1MTdlYjI2MjI3
Yzc1MTc3ZTJiZmRhMmNiZTEzY2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRl
ci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlZpYnJhdGlvblByb3ZpZGVyLmgiCi0K
LSNpZiBFTkFCTEUoVklCUkFUSU9OKQotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVk
ZSAiV0tDb250ZXh0LmgiCi0jaW5jbHVkZSAiV0tWaWJyYXRpb24uaCIKLSNpbmNsdWRlIDxFdmFz
Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
LQotLyoqCi0gKiBcc3RydWN0ICBFd2tfVmlicmF0aW9uX0NsaWVudAotICogQGJyaWVmICAgQ29u
dGFpbnMgdGhlIHZpYnJhdGlvbiBjbGllbnQgY2FsbGJhY2tzLgotICovCi1zdHJ1Y3QgRXdrX1Zp
YnJhdGlvbl9DbGllbnQgewotICAgIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2Igdmli
cmF0ZTsKLSAgICBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiIGNhbmNl
bFZpYnJhdGlvbjsKLSAgICB2b2lkKiB1c2VyRGF0YTsKLQotICAgIEV3a19WaWJyYXRpb25fQ2xp
ZW50KEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2IgdmlicmF0ZSwgRXdrX1ZpYnJhdGlv
bl9DbGllbnRfVmlicmF0aW9uX0NhbmNlbF9DYiBjYW5jZWxWaWJyYXRpb24sIHZvaWQqIHVzZXJE
YXRhKQotICAgICAgICA6IHZpYnJhdGUodmlicmF0ZSkKLSAgICAgICAgLCBjYW5jZWxWaWJyYXRp
b24oY2FuY2VsVmlicmF0aW9uKQotICAgICAgICAsIHVzZXJEYXRhKHVzZXJEYXRhKQotICAgIHsg
fQotfTsKLQotc3RhdGljIGlubGluZSBWaWJyYXRpb25Qcm92aWRlciogdG9WaWJyYXRpb25Qcm92
aWRlcihjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxW
aWJyYXRpb25Qcm92aWRlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQot
c3RhdGljIHZvaWQgdmlicmF0ZUNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCB1aW50NjRfdCB2aWJy
YXRpb25UaW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHRvVmlicmF0aW9uUHJv
dmlkZXIoY2xpZW50SW5mbyktPnZpYnJhdGUodmlicmF0aW9uVGltZSk7Ci19Ci0KLXN0YXRpYyB2
b2lkIGNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQotewotICAgIHRvVmlicmF0aW9uUHJvdmlkZXIoY2xpZW50SW5mbyktPmNhbmNl
bFZpYnJhdGlvbigpOwotfQotCi1QYXNzUmVmUHRyPFZpYnJhdGlvblByb3ZpZGVyPiBWaWJyYXRp
b25Qcm92aWRlcjo6Y3JlYXRlKFdLQ29udGV4dFJlZiB3a0NvbnRleHQpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBWaWJyYXRpb25Qcm92aWRlcih3a0NvbnRleHQpKTsKLX0KLQotVmlicmF0
aW9uUHJvdmlkZXI6OlZpYnJhdGlvblByb3ZpZGVyKFdLQ29udGV4dFJlZiB3a0NvbnRleHQpCi0g
ICAgOiBtX3drQ29udGV4dCh3a0NvbnRleHQpCi17Ci0gICAgQVNTRVJUKG1fd2tDb250ZXh0Lmdl
dCgpKTsKLQotICAgIFdLVmlicmF0aW9uUmVmIHdrVmlicmF0aW9uID0gV0tDb250ZXh0R2V0Vmli
cmF0aW9uKG1fd2tDb250ZXh0LmdldCgpKTsKLSAgICBBU1NFUlQod2tWaWJyYXRpb24pOwotCi0g
ICAgV0tWaWJyYXRpb25Qcm92aWRlciB3a1ZpYnJhdGlvblByb3ZpZGVyID0gewotICAgICAgICBr
V0tWaWJyYXRpb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uLAotICAgICAgICB0aGlzLCAvLyBjbGll
bnRJbmZvCi0gICAgICAgIHZpYnJhdGVDYWxsYmFjaywKLSAgICAgICAgY2FuY2VsVmlicmF0aW9u
Q2FsbGJhY2sKLSAgICB9OwotICAgIFdLVmlicmF0aW9uU2V0UHJvdmlkZXIod2tWaWJyYXRpb24s
ICZ3a1ZpYnJhdGlvblByb3ZpZGVyKTsKLX0KLQotVmlicmF0aW9uUHJvdmlkZXI6On5WaWJyYXRp
b25Qcm92aWRlcigpCi17Ci0gICAgV0tWaWJyYXRpb25SZWYgd2tWaWJyYXRpb24gPSBXS0NvbnRl
eHRHZXRWaWJyYXRpb24obV93a0NvbnRleHQuZ2V0KCkpOwotICAgIEFTU0VSVCh3a1ZpYnJhdGlv
bik7Ci0KLSAgICBXS1ZpYnJhdGlvblNldFByb3ZpZGVyKHdrVmlicmF0aW9uLCAwKTsKLX0KLQot
dm9pZCBWaWJyYXRpb25Qcm92aWRlcjo6dmlicmF0ZSh1aW50NjRfdCB2aWJyYXRpb25UaW1lKQot
ewotICAgIGlmIChtX3ZpYnJhdGlvbkNsaWVudCAmJiBtX3ZpYnJhdGlvbkNsaWVudC0+dmlicmF0
ZSkKLSAgICAgICAgbV92aWJyYXRpb25DbGllbnQtPnZpYnJhdGUodmlicmF0aW9uVGltZSwgbV92
aWJyYXRpb25DbGllbnQtPnVzZXJEYXRhKTsKLX0KLQotdm9pZCBWaWJyYXRpb25Qcm92aWRlcjo6
Y2FuY2VsVmlicmF0aW9uKCkKLXsKLSAgICBpZiAobV92aWJyYXRpb25DbGllbnQgJiYgbV92aWJy
YXRpb25DbGllbnQtPmNhbmNlbFZpYnJhdGlvbikKLSAgICAgICAgbV92aWJyYXRpb25DbGllbnQt
PmNhbmNlbFZpYnJhdGlvbihtX3ZpYnJhdGlvbkNsaWVudC0+dXNlckRhdGEpOwotfQotCi12b2lk
IFZpYnJhdGlvblByb3ZpZGVyOjpzZXRWaWJyYXRpb25DbGllbnRDYWxsYmFja3MoRXdrX1ZpYnJh
dGlvbl9DbGllbnRfVmlicmF0ZV9DYiB2aWJyYXRlLCBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJy
YXRpb25fQ2FuY2VsX0NiIGNhbmNlbFZpYnJhdGlvbiwgdm9pZCogZGF0YSkKLXsKLSAgICBtX3Zp
YnJhdGlvbkNsaWVudCA9IGFkb3B0UHRyKG5ldyBFd2tfVmlicmF0aW9uX0NsaWVudCh2aWJyYXRl
LCBjYW5jZWxWaWJyYXRpb24sIGRhdGEpKTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJ
T04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvblBy
b3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvblByb3ZpZGVy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4MTAzOTNkZWE5MzgzOTU4YTcxNmE1
YjI2NTMxMGJkMGNmMmY0ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBWaWJyYXRpb25Qcm92aWRlcl9oCi0jZGVmaW5lIFZpYnJhdGlvblByb3ZpZGVyX2gKLQot
I2lmIEVOQUJMRShWSUJSQVRJT04pCi0KLSNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2luY2x1
ZGUgImV3a19jb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgotCi10eXBlZGVmIHN0cnVjdCBFd2tfVmlicmF0aW9uX0NsaWVu
dCBFd2tfVmlicmF0aW9uX0NsaWVudDsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFZp
YnJhdGlvblByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VmlicmF0aW9uUHJvdmlkZXI+IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWJyYXRpb25Qcm92aWRlcj4gY3JlYXRl
KFdLQ29udGV4dFJlZik7Ci0gICAgdmlydHVhbCB+VmlicmF0aW9uUHJvdmlkZXIoKTsKLQotICAg
IHZvaWQgdmlicmF0ZSh1aW50NjRfdCB2aWJyYXRpb25UaW1lKTsKLSAgICB2b2lkIGNhbmNlbFZp
YnJhdGlvbigpOwotICAgIHZvaWQgc2V0VmlicmF0aW9uQ2xpZW50Q2FsbGJhY2tzKEV3a19WaWJy
YXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2IsIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9D
YW5jZWxfQ2IsIHZvaWQqKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaWJyYXRpb25Qcm92
aWRlcihXS0NvbnRleHRSZWYpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBtX3dr
Q29udGV4dDsKLSAgICBPd25QdHI8RXdrX1ZpYnJhdGlvbl9DbGllbnQ+IG1fdmlicmF0aW9uQ2xp
ZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVklC
UkFUSU9OKQotCi0jZW5kaWYgLy8gVmlicmF0aW9uUHJvdmlkZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171131</attachid>
            <date>2012-10-28 09:21:24 -0700</date>
            <delta_ts>2012-10-31 03:15:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100334-20121029011951.patch</filename>
            <type>text/plain</type>
            <size>50856</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODdiMDY2MDViMzBhNTJi
YTg0YWFkODYyNmM1OWZmMzRlYjJkZTcwMS4uYzI2ZjViZmE4MGE5ZGY2NDdkMzMwMmRjMzNjNzg2
MDllZTc1YzBmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMCBAQAorMjAxMi0xMC0yOCAgQnl1
bmd3b28gTGVlICA8Ync4MC5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl0gTWFrZSBX
ZWJWaWJyYXRpb25Qcm94eSB0byBiZSBhIG1lbWJlciBvZiBXZWJQYWdlUHJveHkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAzMzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJWaWJyYXRpb25Qcm94
eSBzaG91bGQgYmUgYSBtZW1iZXIgb2YgV2ViUGFnZVByb3h5LCBiZWNhdXNlIHRoZSBJUEMKKyAg
ICAgICAgbWVzc2FnZXMgb2YgV2ViVmlicmF0aW9uUHJveHkgaGF2ZSBwYWdlIGRlc3RpbmF0aW9u
IElELgorCisgICAgICAgIFRoZSByMTMyMzg2IHByb3Bvc2VkIGEgd2F5IHRvIGFkZC9kZWxldGUg
bWVzc2FnZSByZWNlaXZlcnMgdGhhdCBjYW4KKyAgICAgICAgaGFuZGxlIElQQyBtZXNzYWdlcyB3
aXRoIGRlc3RpbmF0aW9uIElELgorCisgICAgICAgIFByZXZpb3VzIGltcGxlbWVudGF0aW9uIHRo
YXQgY3JlYXRpbmcgV2ViVmlicmF0aW9uUHJveHkgYXMgYSBXZWJDb250ZXh0CisgICAgICAgIG1l
bWJlciBhbmQgdXNpbmcgdGhlIGdsb2JhbCBtZXNzYWdlIHJlY2VpdmVyIGZvciB0aGUgcHJveHkg
Y2FuIG1ha2UKKyAgICAgICAgYXNzZXJ0aW9ucyBhZnRlciByMTMyMzg2LgorCisgICAgICAgIFRv
IGhhbmRsZSB0aGUgdmlicmF0aW9uIElQQyBtZXNzYWdlcyBwcm9wZXJseSwgdGhpcyBwYXRjaCB3
aWxsIGRvIHRoZQorICAgICAgICBmb2xsb3dpbmdzLgorCisgICAgICAgIDEpIFdlYkNvbnRleHQg
d2lsbCBub3QgaGF2ZSB0aGUgV2ViVmlicmF0aW9uUHJveHkgaW5zdGFuY2UuCisKKyAgICAgICAg
MikgV2ViUGFnZVByb3h5IHdpbGwgaGF2ZSBhIFdlYlZpYnJhdGlvblByb3h5IGluc3RhbmNlIGFu
ZCBhIG1lc3NhZ2UKKyAgICAgICAgICAgcmVjZWl2ZXIgbWFwLgorCisgICAgICAgIDMpIFdlYlZp
YnJhdGlvblByb3h5IHdpbGwgYWRkIGl0c2VsZiB0byB0aGUgbWVzc2FnZSByZWNlaXZlciBtYXAg
b2YKKyAgICAgICAgICAgdGhlIFdlYlBhZ2VQcm94eSB3aXRoIHBhZ2UgSUQgYXMgZGVzdGluYXRp
b24gSUQuCisKKyAgICAgICAgNCkgSWYgV2ViUGFnZVByb3h5IHJlY2VpdmVkIHZpYnJhdGlvbiBp
cGMgbWVzc2FnZXMsIGl0IHdpbGwgZm9yd2FyZAorICAgICAgICAgICB0aGUgbWVzc2FnZXMgdG8g
dGhlIFdlYlZpYnJhdGlvblByb3h5LgorCisgICAgICAgIDUpIEFQSXMgd2lsbCBiZSBtb2RpZmll
ZCB0byBhcHBseSB0aGVzZSBjaGFuZ2VzLgorICAgICAgICAgICBhKSBXSyBBUEkgdG8gZ2V0IFdL
VmlicmF0aW9uUmVmIHdpbGwgdXNlIFdLUGFnZVJlZiBub3QgV0tDb250ZXh0UmVmLgorICAgICAg
ICAgICBiKSBFRkwgQVBJcyBhbmQgQVBJIHRlc3QgZm9yIHRoZSB2aWJyYXRpb24gd2lsbCBhbHNv
IGJlIGNoYW5nZWQuCisgICAgICAgICAgICAgIC0gRXdrVmlld0ltcGwgd2lsbCBoYXZlIHZpYnJh
dGlvbiBjbGllbnQuIChFd2tfQ29udGV4dCB3aWxsIG5vdAorICAgICAgICAgICAgICAgIGhhdmUg
aXQpCisgICAgICAgICAgICAgIC0gUHJldmlvdXMgQVBJIHRvIHJlZ2lzdGVyIHRoZSB2aWJyYXRp
b24gY2FsbGJhY2sgd2lsbCBiZSByZW1vdmVkLgorICAgICAgICAgICAgICAtIE5ldyBzaWduYWxz
IGZvciB2aWJyYXRpb24gd2lsbCBiZSBhZGRlZCB0byB0aGUgRXdrVmlld0ltcGwuCisgICAgICAg
ICAgICAgIC0gVmlicmF0aW9uUHJveHkgd2lsbCBiZSByZW5hbWVkIHRvIFZpYnJhdGlvbkNsaWVu
dCBmb3IgdGhlCisgICAgICAgICAgICAgICAgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBjbGllbnRz
IGluIEV3a1ZpZXdJbXBsLgorICAgICAgICAgICAgICAtIFZpYnJhdGlvbkNsaWVudCB3aWxsIHVz
ZSBFd2tWaWV3SW1wbCBpbnN0ZWFkIG9mIEV3a19Db250ZXh0LgorICAgICAgICAgICAgICAtIFBy
ZXZpb3VzIEFQSSB0ZXN0IGZvciB2aWJyYXRpb24gd2lsbCBiZSBtb3ZlZCBmcm9tIGNvbnRleHQg
dGVzdAorICAgICAgICAgICAgICAgIHRvIHZpZXcgdGVzdCwgYW5kIGl0IHdpbGwgdXNlIHRoZSBj
aGFuZ2VkIEFQSS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAg
ICAgKFdLUGFnZUdldFZpYnJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dmli
cmF0ZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6Y2FuY2VsVmlicmF0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKEV3a1ZpZXdJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHA6CisgICAgICAgIChFd2tfQ29udGV4dDo6RXdrX0NvbnRleHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KEV3a19Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6Cisg
ICAgICAgIChWaWJyYXRpb25DYkRhdGEpOgorICAgICAgICAob25WaWJyYXRlKToKKyAgICAgICAg
KG9uQ2FuY2VsVmlicmF0aW9uKToKKyAgICAgICAgKGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKToK
KyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpXZWJDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6fldlYkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb250ZXh0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcik6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlicmF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6V2ViVmlicmF0aW9uUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6fldlYlZpYnJhdGlvblByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJWaWJyYXRpb25Qcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9W
aWJyYXRpb25DbGllbnRFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5jcHAuCisgICAgICAgICh0b1ZpYnJhdGlvbkNsaWVu
dCk6CisgICAgICAgIChWaWJyYXRpb25DbGllbnRFZmw6OnZpYnJhdGVDYWxsYmFjayk6CisgICAg
ICAgIChWaWJyYXRpb25DbGllbnRFZmw6OmNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKToKKyAgICAg
ICAgKFZpYnJhdGlvbkNsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVu
dEVmbDo6VmlicmF0aW9uQ2xpZW50RWZsKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVudEVmbDo6
flZpYnJhdGlvbkNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25D
bGllbnRFZmwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmli
cmF0aW9uUHJvdmlkZXIuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChWaWJyYXRpb25D
bGllbnRFZmwpOgorCiAyMDEyLTEwLTI4ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVs
LmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdW0FDXSBWaWV3cG9ydCBzaXplIGRvZXMgbm90IGNo
YW5nZSB3aGVuIHRoZSB3aW5kb3cgc2l6ZSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CmluZGV4IDZjZWRlZDc1ODUyYmE1Yjg5YTUyOTUzZWExMTk3YmUzNWY5NjQ3YWEuLjQwNDBlNjky
MDRhYTljYTY4MDFjYWUyNzkwNTQzZjNjNDUyYjQ2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC04Myw3ICs4Myw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9SZXNvdXJjZUxvYWRDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tl
ckVmbC5jcHAKLSAgICBVSVByb2Nlc3MvZWZsL1ZpYnJhdGlvblByb3ZpZGVyLmNwcAorICAgIFVJ
UHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2Vi
Q29udGV4dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggMTE3YmJl
ZGEzMTRkMWRiZTZiMGM2NTU1YTFmZjI4MGNjNzU0MDIyNS4uYWM0NjExNTdmOTQ5MjUxM2I4ZTUz
MjkzZWU3MzQxZjg2OGEwYWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKQEAgLTI0MiwxNSArMjQyLDYgQEAgV0tSZXNvdXJjZUNhY2hlTWFuYWdl
clJlZiBXS0NvbnRleHRHZXRSZXNvdXJjZUNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4
dFIKICAgICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5yZXNvdXJjZUNhY2hlTWFu
YWdlclByb3h5KCkpOwogfQogCi1XS1ZpYnJhdGlvblJlZiBXS0NvbnRleHRHZXRWaWJyYXRpb24o
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCi17Ci0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBy
ZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT52aWJyYXRpb25Qcm94eSgpKTsKLSNlbHNl
Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogdm9pZCBXS0NvbnRleHRTdGFydE1lbW9yeVNh
bXBsZXIoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLRG91YmxlUmVmIGludGVydmFsKQogewog
ICAgIHRvSW1wbChjb250ZXh0UmVmKS0+c3RhcnRNZW1vcnlTYW1wbGVyKHRvSW1wbChpbnRlcnZh
bCktPnZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5o
CmluZGV4IDY5ZDEyOTgwNWQzYmRhOWM1YzA4MGI0MjllNjg0NzgxYjRkNjZkMWQuLjhmNzdjYmQ4
ZjhjZTU0NDQzOGNmM2I3OTI1YWVmY2Q0Mjg5ZmQ3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKQEAgLTE2Nyw3ICsxNjcsNiBAQCBXS19FWFBPUlQgV0tO
ZXR3b3JrSW5mb01hbmFnZXJSZWYgV0tDb250ZXh0R2V0TmV0d29ya0luZm9NYW5hZ2VyKFdLQ29u
dGV4dFJlZiBjbwogV0tfRVhQT1JUIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBXS0NvbnRleHRH
ZXROb3RpZmljYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBX
S1BsdWdpblNpdGVEYXRhTWFuYWdlclJlZiBXS0NvbnRleHRHZXRQbHVnaW5TaXRlRGF0YU1hbmFn
ZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIFdLUmVzb3VyY2VDYWNoZU1hbmFn
ZXJSZWYgV0tDb250ZXh0R2V0UmVzb3VyY2VDYWNoZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRl
eHQpOwotV0tfRVhQT1JUIFdLVmlicmF0aW9uUmVmIFdLQ29udGV4dEdldFZpYnJhdGlvbihXS0Nv
bnRleHRSZWYgY29udGV4dCk7CiAgICAgCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRHZXRTdGF0
aXN0aWNzRnVuY3Rpb24pKFdLRGljdGlvbmFyeVJlZiBzdGF0aXN0aWNzLCBXS0Vycm9yUmVmIGVy
cm9yLCB2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0
U3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBX
S0NvbnRleHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCA1MmUxY2ViZjg4YmViOWM0ZTJlMDMyODM1
ZmMyOTI5OWM3NDdjMzlhLi4wYTU3MGU2NGFlZGQ1ZDdlMGY3YjI5YzgxZmE5YmEzNmQyMTE0YzMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMTg5LDYg
KzE4OSwxNSBAQCBXS0luc3BlY3RvclJlZiBXS1BhZ2VHZXRJbnNwZWN0b3IoV0tQYWdlUmVmIHBh
Z2VSZWYpCiB9CiAjZW5kaWYKIAorV0tWaWJyYXRpb25SZWYgV0tQYWdlR2V0VmlicmF0aW9uKFdL
UGFnZVJlZiBwYWdlKQoreworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgcmV0dXJuIHRvQVBJ
KHRvSW1wbChwYWdlKS0+dmlicmF0aW9uKCkpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRp
ZgorfQorCiBkb3VibGUgV0tQYWdlR2V0RXN0aW1hdGVkUHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2VS
ZWYpCiB7CiAgICAgcmV0dXJuIHRvSW1wbChwYWdlUmVmKS0+ZXN0aW1hdGVkUHJvZ3Jlc3MoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAppbmRleCA5ZGZkNTJlM2MwYjYy
Mzc4YzUyOTU3OGZhN2ZmOWZjYWI1MzMyOTBkLi4zNWIyYjVkNThhZTk4ZjIzZmY2ZjhlMzkyNzQ0
YmZjOGIxM2U5NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCkBA
IC0zOTEsNiArMzkxLDggQEAgV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0TWVtb3J5Q2FjaGVDbGll
bnRDYWxsc0VuYWJsZWQoV0tQYWdlUmVmIHBhZ2UsIGJvb2wgbWVtb3IKIFdLX0VYUE9SVCBXS0lu
c3BlY3RvclJlZiBXS1BhZ2VHZXRJbnNwZWN0b3IoV0tQYWdlUmVmIHBhZ2UpOwogI2VuZGlmCiAK
K1dLX0VYUE9SVCBXS1ZpYnJhdGlvblJlZiBXS1BhZ2VHZXRWaWJyYXRpb24oV0tQYWdlUmVmIHBh
Z2UpOworCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQYWdlQ29weVVzZXJBZ2VudChXS1BhZ2VS
ZWYgcGFnZSk7CiAKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5QXBwbGljYXRpb25O
YW1lRm9yVXNlckFnZW50KFdLUGFnZVJlZiBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAppbmRleCBmNTRkNzZmN2QwODdjODZlZDFm
NDVjZWNjODRiMWEyMjBiZTg3YTRiLi4xMTE3MGQ1MDhmZTRmZDQxZGMwY2E3ZGI1OTViMDExYzdl
MDE0NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuY3BwCkBAIC0zMiw2ICszMiw5IEBACiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUxvYWRDbGllbnRFZmwuaCIKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQor
I2luY2x1ZGUgIlZpYnJhdGlvbkNsaWVudEVmbC5oIgorI2VuZGlmCiAjaW5jbHVkZSAiV0tTdHJp
bmcuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwLmgi
CkBAIC0xMDAsNiArMTAzLDkgQEAgRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0
KiB2aWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0LCBQYXMKICAgICAsIG1fcmVz
b3VyY2VMb2FkQ2xpZW50KFJlc291cmNlTG9hZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAg
ICwgbV9maW5kQ2xpZW50KEZpbmRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZm9y
bUNsaWVudChGb3JtQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCisjaWYgRU5BQkxFKFZJQlJBVElP
TikKKyAgICAsIG1fdmlicmF0aW9uQ2xpZW50KFZpYnJhdGlvbkNsaWVudEVmbDo6Y3JlYXRlKHRo
aXMpKQorI2VuZGlmCiAgICAgLCBtX2JhY2tGb3J3YXJkTGlzdChFd2tfQmFja19Gb3J3YXJkX0xp
c3Q6OmNyZWF0ZSh0b0FQSShtX3BhZ2VQcm94eS0+YmFja0ZvcndhcmRMaXN0KCkpKSkKICNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAsIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudChQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCkBAIC03
MTUsNiArNzIxLDE4IEBAIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUludGVudFNlcnZpY2VSZWdp
c3RyYXRpb24oRXdrX0ludGVudF9TZXJ2aWNlKiBld2tJbnRlbnRTCiB9CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCit2b2lkIEV3a1Zp
ZXdJbXBsOjp2aWJyYXRlKHVpbnQ2NF90IHZpYnJhdGlvblRpbWUpCit7CisgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ2aWJyYXRlIiwgJnZpYnJhdGlvblRpbWUp
OworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpjYW5jZWxWaWJyYXRpb24oKQoreworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiY2FuY2VsLHZpYnJhdGlvbiIsIDAp
OworfQorI2VuZGlmCisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBib29sIEV3
a1ZpZXdJbXBsOjpjcmVhdGVHTFN1cmZhY2UoY29uc3QgSW50U2l6ZSYgdmlld1NpemUpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCBm
NGU5MTc3N2EwMjRlMmQ5YmVlOGI4ZTdiNTc2OWM4MDNlNWNjNDk2Li4yNmMxNTEwMWMzYTFmNjg4
MmU4ZGM3NmM2MWI5NDBlZDcwZGMwNTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTY5LDYgKzY5LDkgQEAgY2xhc3MgUGFnZVVJQ2xp
ZW50RWZsOwogY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDsKIGNsYXNzIFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI7CiBjbGFzcyBSZXNvdXJjZUxvYWRDbGllbnRFZmw7CisjaWYg
RU5BQkxFKFZJQlJBVElPTikKK2NsYXNzIFZpYnJhdGlvbkNsaWVudEVmbDsKKyNlbmRpZgogY2xh
c3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OwogY2xhc3MgV2ViUG9wdXBJdGVt
OwpAQCAtMjExLDYgKzIxNCwxMCBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RB
RykKICAgICB2b2lkIGluZm9ybUludGVudFNlcnZpY2VSZWdpc3RyYXRpb24oRXdrX0ludGVudF9T
ZXJ2aWNlKiBld2tJbnRlbnRTZXJ2aWNlKTsKICNlbmRpZgorI2lmIEVOQUJMRShWSUJSQVRJT04p
CisgICAgdm9pZCB2aWJyYXRlKHVpbnQ2NF90IHZpYnJhdGlvblRpbWUpOworICAgIHZvaWQgY2Fu
Y2VsVmlicmF0aW9uKCk7CisjZW5kaWYKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAg
ICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwqIHBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnQoKSB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQu
Z2V0KCk7IH0KICAgICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIHBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuZ2V0KCk7IH0K
QEAgLTI0OCw2ICsyNTUsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlJlc291cmNl
TG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6
RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OkZvcm1DbGll
bnRFZmw+IG1fZm9ybUNsaWVudDsKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgIE93blB0cjxX
ZWJLaXQ6OlZpYnJhdGlvbkNsaWVudEVmbD4gbV92aWJyYXRpb25DbGllbnQ7CisjZW5kaWYKICAg
ICBPd25QdHI8RXdrX0JhY2tfRm9yd2FyZF9MaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKICNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXgg
M2EwMDcxYzdkZmRjZGI4MDhhYjc1ZTIxMGRhYjc1YmFkYWE0OTY2YS4uNDIxMGUwYWMxNDYzYWY4
ZDIyMmUxYmYxYjNiMThmZDE0ZmQ5YjRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUg
IkNvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiTmV0d29ya0luZm9Qcm92aWRl
ci5oIgogI2luY2x1ZGUgIlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiVmli
cmF0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0Nv
bnRleHRTb3VwLmgiCiAjaW5jbHVkZSAiV0tOdW1iZXIuaCIKQEAgLTY4LDkgKzY3LDYgQEAgRXdr
X0NvbnRleHQ6OkV3a19Db250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogI2lmIEVOQUJMRShO
RVRXT1JLX0lORk8pCiAgICAgLCBtX25ldHdvcmtJbmZvUHJvdmlkZXIoTmV0d29ya0luZm9Qcm92
aWRlcjo6Y3JlYXRlKGNvbnRleHQpKQogI2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAg
ICAsIG1fdmlicmF0aW9uUHJvdmlkZXIoVmlicmF0aW9uUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0
KSkKLSNlbmRpZgogICAgICwgbV9kb3dubG9hZE1hbmFnZXIoRG93bmxvYWRNYW5hZ2VyRWZsOjpj
cmVhdGUodGhpcykpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50KFJlcXVlc3RNYW5hZ2Vy
Q2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQoQ29udGV4dEhp
c3RvcnlDbGllbnRFZmw6OmNyZWF0ZShjb250ZXh0KSkKQEAgLTE2NCwxMyArMTYwLDYgQEAgUmVx
dWVzdE1hbmFnZXJDbGllbnRFZmwqIEV3a19Db250ZXh0OjpyZXF1ZXN0TWFuYWdlcigpCiAgICAg
cmV0dXJuIG1fcmVxdWVzdE1hbmFnZXJDbGllbnQuZ2V0KCk7CiB9CiAKLSNpZiBFTkFCTEUoVklC
UkFUSU9OKQotUGFzc1JlZlB0cjxWaWJyYXRpb25Qcm92aWRlcj4gRXdrX0NvbnRleHQ6OnZpYnJh
dGlvblByb3ZpZGVyKCkKLXsKLSAgICByZXR1cm4gbV92aWJyYXRpb25Qcm92aWRlcjsKLX0KLSNl
bmRpZgotCiB2b2lkIEV3a19Db250ZXh0OjphZGRWaXNpdGVkTGluayhjb25zdCBTdHJpbmcmIHZp
c2l0ZWRVUkwpCiB7CiAgICAgdG9JbXBsKG1fY29udGV4dC5nZXQoKSktPmFkZFZpc2l0ZWRMaW5r
KHZpc2l0ZWRVUkwpOwpAQCAtMjU5LDE1ICsyNDgsNiBAQCBFaW5hX0Jvb2wgZXdrX2NvbnRleHRf
dXJsX3NjaGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgY29uc3QgY2hhciog
cwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGV3a19jb250ZXh0X3ZpYnJhdGlvbl9jbGll
bnRfY2FsbGJhY2tzX3NldChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgRXdrX1ZpYnJhdGlvbl9D
bGllbnRfVmlicmF0ZV9DYiB2aWJyYXRlLCBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25f
Q2FuY2VsX0NiIGNhbmNlbCwgdm9pZCogZGF0YSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihld2tDb250ZXh0KTsKLQotI2lmIEVOQUJMRShWSUJSQVRJT04pCi0gICAgZXdrQ29u
dGV4dC0+dmlicmF0aW9uUHJvdmlkZXIoKS0+c2V0VmlicmF0aW9uQ2xpZW50Q2FsbGJhY2tzKHZp
YnJhdGUsIGNhbmNlbCwgZGF0YSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBld2tfY29udGV4dF9oaXN0
b3J5X2NhbGxiYWNrc19zZXQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIEV3a19IaXN0b3J5X05h
dmlnYXRpb25fQ2IgbmF2aWdhdGUsIEV3a19IaXN0b3J5X0NsaWVudF9SZWRpcmVjdGlvbl9DYiBj
bGllbnRSZWRpcmVjdCwgRXdrX0hpc3RvcnlfU2VydmVyX1JlZGlyZWN0aW9uX0NiIHNlcnZlclJl
ZGlyZWN0LCBFd2tfSGlzdG9yeV9UaXRsZV9VcGRhdGVfQ2IgdGl0bGVVcGRhdGUsIEV3a19IaXN0
b3J5X1BvcHVsYXRlX1Zpc2l0ZWRfTGlua3NfQ2IgcG9wdWxhdGVWaXNpdGVkTGlua3MsIHZvaWQq
IGRhdGEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXdrQ29udGV4dCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAppbmRleCBm
NmI4YmI2N2QyNWQ4N2JhOWQwMzIxZDFhMzc3ZWZiODdmODFmMzA2Li4xY2U4ZmI0OWY3ZTgzYjJm
NTY0ODQzMzBiNjUyZGZiMGQ3ZGRhMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTc0LDIwICs3NCw2IEBAIHR5cGVkZWYgZW51bSBF
d2tfQ2FjaGVfTW9kZWwgRXdrX0NhY2hlX01vZGVsOwogdHlwZWRlZiB2b2lkICgqRXdrX1VybF9T
Y2hlbWVfUmVxdWVzdF9DYikgKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QsIHZvaWQg
KnVzZXJfZGF0YSk7CiAKIC8qKgotICogQHR5cGVkZWYgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmli
cmF0ZV9DYiBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiCi0gKiBAYnJpZWYgVHlwZSBk
ZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIHZp
YnJhdGUKLSAqIHJlcXVlc3QgcmVjZWl2ZWVkIGZyb20gdGhlIHZpYnJhdGlvbiBjb250cm9sbGVy
LgotICovCi10eXBlZGVmIHZvaWQgKCpFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiKSh1
aW50NjRfdCB2aWJyYXRpb25fdGltZSwgdm9pZCAqdXNlcl9kYXRhKTsKLQotLyoqCi0gKiBAdHlw
ZWRlZiBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiIEV3a19WaWJyYXRp
b25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxfQ2IKLSAqIEBicmllZiBUeXBlIGRlZmluaXRpb24g
Zm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBiYWNrIHdoZW4gY2FuY2VsCi0gKiB2
aWJyYXRpb24gcmVxdWVzdCByZWNlaXZlZWQgZnJvbSB0aGUgdmlicmF0aW9uIGNvbnRyb2xsZXIu
Ci0gKi8KLXR5cGVkZWYgdm9pZCAoKkV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5j
ZWxfQ2IpKHZvaWQgKnVzZXJfZGF0YSk7Ci0KLS8qKgogICogQHR5cGVkZWYgRXdrX0hpc3Rvcnlf
TmF2aWdhdGlvbl9DYiBFd2tfSGlzdG9yeV9OYXZpZ2F0aW9uX0NiCiAgKiBAYnJpZWYgVHlwZSBk
ZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIEBh
IHZpZXcgZGlkIG5hdmlnYXRpb24gKGxvYWRlZCBuZXcgVVJMKS4KICAqLwpAQCAtMjM1LDIyICsy
MjEsNiBAQCBFQVBJIEV3a19GYXZpY29uX0RhdGFiYXNlICpld2tfY29udGV4dF9mYXZpY29uX2Rh
dGFiYXNlX2dldChjb25zdCBFd2tfQ29udGV4dCAqYwogRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRl
eHRfdXJsX3NjaGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCAqY29udGV4dCwgY29uc3QgY2hhciAq
c2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkICp1c2VyX2Rh
dGEpOwogCiAvKioKLSAqIFNldHMgdmlicmF0aW9uIGNsaWVudCBjYWxsYmFja3MgdG8gaGFuZGxl
IHRoZSB0YWN0aWxlIGZlZWRiYWNrIGluIHRoZSBmb3JtIG9mCi0gKiB2aWJyYXRpb24gaW4gdGhl
IGNsaWVudCBhcHBsaWNhdGlvbiB3aGVuIHRoZSBjb250ZW50IGFza3MgZm9yIHZpYnJhdGlvbi4K
LSAqCi0gKiBUbyBzdG9wIGxpc3RlbmluZyBmb3IgdmlicmF0aW9uIGV2ZW50cywgeW91IG1heSBj
YWxsIHRoaXMgZnVuY3Rpb24gd2l0aCBAYwotICogTlVMTCBmb3IgdGhlIGNhbGxiYWNrcy4KLSAq
Ci0gKiBAcGFyYW0gY29udGV4dCBjb250ZXh0IG9iamVjdCB0byBzZXQgdmlicmF0aW9uIGNsaWVu
dCBjYWxsYmFja3MuCi0gKiBAcGFyYW0gdmlicmF0ZSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVu
IHRoZSB2aWJyYXRlIHJlcXVlc3QgcmVjZWl2ZWQgZnJvbSB0aGUKLSAqICAgICAgICBjb250cm9s
bGVyIChtYXkgYmUgQGMgTlVMTCkuCi0gKiBAcGFyYW0gY2FuY2VsIFRoZSBmdW5jdGlvbiB0byBj
YWxsIHdoZW4gdGhlIGNhbmNlbCB2aWJyYXRpb24gcmVxdWVzdCByZWNlaXZlZAotICogICAgICAg
IGZyb20gdGhlIGNvbnRyb2xsZXIgKG1heSBiZSBAYyBOVUxMKS4KLSAqIEBwYXJhbSBkYXRhIFVz
ZXIgZGF0YSAobWF5IGJlIEBjIE5VTEwpLgotICovCi1FQVBJIHZvaWQgZXdrX2NvbnRleHRfdmli
cmF0aW9uX2NsaWVudF9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0ICpjb250ZXh0LCBFd2tfVmli
cmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiIHZpYnJhdGUsIEV3a19WaWJyYXRpb25fQ2xpZW50X1Zp
YnJhdGlvbl9DYW5jZWxfQ2IgY2FuY2VsLCB2b2lkICpkYXRhKTsKLQotLyoqCiAgKiBTZXRzIGhp
c3RvcnkgY2FsbGJhY2tzIGZvciB0aGUgZ2l2ZW4gQGEgY29udGV4dC4KICAqCiAgKiBUbyBzdG9w
IGxpc3RlbmluZyBmb3IgaGlzdG9yeSBldmVudHMsIHlvdSBtYXkgY2FsbCB0aGlzIGZ1bmN0aW9u
IHdpdGggQGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19jb250ZXh0X3ByaXZhdGUuaAppbmRleCBiYTQ2MzI0ZjViMGM1ZWNhZjRlMzI2ZmYzMzEyYmMw
NTg3NTI1MzMwLi5hYTczMTBiYTc3YzE3OWEwNGU1NDhmMjQ1ZmY0ZjQxNTlkODY4MzE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRf
cHJpdmF0ZS5oCkBAIC0zOCw5ICszOCw2IEBAIGNsYXNzIEJhdHRlcnlQcm92aWRlcjsKICNpZiBF
TkFCTEUoTkVUV09SS19JTkZPKQogY2xhc3MgTmV0d29ya0luZm9Qcm92aWRlcjsKICNlbmRpZgot
I2lmIEVOQUJMRShWSUJSQVRJT04pCi1jbGFzcyBWaWJyYXRpb25Qcm92aWRlcjsKLSNlbmRpZgog
fQogCiBjbGFzcyBFd2tfQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPEV3a19Db250ZXh0PiB7
CkBAIC01OSwxMCArNTYsNiBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6OlJlcXVlc3RNYW5hZ2Vy
Q2xpZW50RWZsKiByZXF1ZXN0TWFuYWdlcigpOwogCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAg
ICBQYXNzUmVmUHRyPFdlYktpdDo6VmlicmF0aW9uUHJvdmlkZXI+IHZpYnJhdGlvblByb3ZpZGVy
KCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoY29uc3QgU3RyaW5nJiB2aXNp
dGVkVVJMKTsKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChFd2tfQ2FjaGVfTW9kZWwpOwpAQCAt
OTAsOSArODMsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAgICAgUmVm
UHRyPFdlYktpdDo6TmV0d29ya0luZm9Qcm92aWRlcj4gbV9uZXR3b3JrSW5mb1Byb3ZpZGVyOwog
I2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBSZWZQdHI8V2ViS2l0OjpWaWJyYXRp
b25Qcm92aWRlcj4gbV92aWJyYXRpb25Qcm92aWRlcjsKLSNlbmRpZgogICAgIE93blB0cjxXZWJL
aXQ6OkRvd25sb2FkTWFuYWdlckVmbD4gbV9kb3dubG9hZE1hbmFnZXI7CiAgICAgT3duUHRyPFdl
YktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw+IG1fcmVxdWVzdE1hbmFnZXJDbGllbnQ7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGVkZmFk
MGQ0NDhiZDQ4ODY5NTkwYjAyNzU5Y2UwMmVhZDQ5OTExNjMuLmIyYWI0ZmEzMmViOGU3ODc4Yzhm
OWE2Y2EyNzc1Njc1ODRhZGYzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuaApAQCAtMjcsNiArMjcsNyBAQAogICogVGhlIGZvbGxvd2luZyBzaWduYWxz
IChzZWUgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKCkpIGFyZSBlbWl0dGVkOgogICoK
ICAqIC0gImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgdGhl
IHZpZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0IGhhZCBjaGFuZ2VkLgorICogLSAiY2FuY2VsLHZp
YnJhdGlvbiIsIHZvaWQ6IHJlcXVlc3QgdG8gY2FuY2VsIHRoZSB2aWJyYXRpb24uCiAgKiAtICJj
bG9zZSx3aW5kb3ciLCB2b2lkOiB3aW5kb3cgaXMgY2xvc2VkLgogICogLSAiY3JlYXRlLHdpbmRv
dyIsIEV2YXNfT2JqZWN0Kio6IGEgbmV3IHdpbmRvdyBpcyBjcmVhdGVkLgogICogLSAiZG93bmxv
YWQsY2FuY2VsbGVkIiwgRXdrX0Rvd25sb2FkX0pvYio6IHJlcG9ydHMgdGhhdCBhIGRvd25sb2Fk
IHdhcyBlZmZlY3RpdmVseSBjYW5jZWxsZWQuCkBAIC02OCw2ICs2OSw3IEBACiAgKiAtICJ0b29s
dGlwLHRleHQsc2V0IiwgY29uc3QgY2hhcio6IHRvb2x0aXAgd2FzIHNldC4KICAqIC0gInRvb2x0
aXAsdGV4dCx1bnNldCIsIHZvaWQ6IHRvb2x0aXAgd2FzIHVuc2V0LgogICogLSAidXJsLGNoYW5n
ZWQiLCBjb25zdCBjaGFyKjogdXJsIG9mIHRoZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgorICog
LSAidmlicmF0ZSIsIHVpbnQ2NF90KjogcmVxdWVzdCB0byB2aWJyYXRlLiAodmFsdWUgaXMgdmli
cmF0aW9uIHRpbWUpCiAgKiAtICJ3ZWJwcm9jZXNzLGNyYXNoZWQiLCBFaW5hX0Jvb2wqOiBleHBl
Y3RzIGEgQGMgRUlOQV9UUlVFIGlmIHdlYiBwcm9jZXNzIGNyYXNoIGlzIGhhbmRsZWQ7IEBjIEVJ
TkFfRkFMU0UsIG90aGVyd2lzZS4KICAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKaW5kZXgg
MjdlNDZkYzFlNzBmOGI2MWFkMGU0ZjY3OWQ3NTNhOThmZGM0ZDkyZC4uOGNhMGZmNzE2NTZjMDQw
NGIyNDdkYzQ3Nzc1YTkyMGU2ZDhmNTMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcApAQCAt
NzksODYgKzc5LDYgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb250ZXh0X3VybF9z
Y2hlbWVfcmVnaXN0ZXIpCiAgICAgQVNTRVJUX1NUUkVRKCJGb28iLCBld2tfdmlld190aXRsZV9n
ZXQod2ViVmlldygpKSk7CiB9CiAKLXN0cnVjdCBWaWJyYXRpb25DYkRhdGEgewotICAgIGJvb2wg
ZGlkUmVjZWl2ZVZpYnJhdGVDYWxsYmFjazsgLy8gV2hldGhlciB0aGUgdmlicmF0aW9uIGV2ZW50
IHJlY2VpdmVkLgotICAgIGJvb2wgZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrOyAv
LyBXaGV0aGVyIHRoZSBjYW5jZWwgdmlicmF0aW9uIGV2ZW50IHJlY2VpdmVkLgotICAgIHVuc2ln
bmVkIHZpYnJhdGVDYWxsZWRDb3VudDsgLy8gVmlicmF0ZSBjYWxsYmFja3MgY291bnQuCi0gICAg
dWludDY0X3QgZXhwZWN0ZWRWaWJyYXRpb25UaW1lOyAvLyBFeHBlY3RlZCB2aWJyYXRpb24gdGlt
ZS4KLX07Ci0KLXN0YXRpYyB2b2lkIHZpYnJhdGVDYWxsYmFjayh1aW50NjRfdCB2aWJyYXRpb25U
aW1lLCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBWaWJyYXRpb25DYkRhdGEqIGRhdGEgPSBzdGF0
aWNfY2FzdDxWaWJyYXRpb25DYkRhdGEqPih1c2VyRGF0YSk7Ci0gICAgaWYgKHZpYnJhdGlvblRp
bWUgPT0gZGF0YS0+ZXhwZWN0ZWRWaWJyYXRpb25UaW1lKQotICAgICAgICBkYXRhLT5kaWRSZWNl
aXZlVmlicmF0ZUNhbGxiYWNrID0gdHJ1ZTsKLSAgICBkYXRhLT52aWJyYXRlQ2FsbGVkQ291bnQr
KzsKLX0KLQotc3RhdGljIHZvaWQgY2FuY2VsVmlicmF0aW9uQ2FsbGJhY2sodm9pZCogdXNlckRh
dGEpCi17Ci0gICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9u
Q2JEYXRhKj4odXNlckRhdGEpOwotICAgIGRhdGEtPmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb25D
YWxsYmFjayA9IHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGxvYWRWaWJyYXRpb25IVE1MU3RyaW5n
KEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiB2aWJyYXRpb25QYXR0ZXJuLCBib29s
IHdhaXRGb3JWaWJyYXRpb25FdmVudCwgVmlicmF0aW9uQ2JEYXRhKiBkYXRhKQotewotICAgIGNv
bnN0IGNoYXIqIGNvbnRlbnQgPQotICAgICAgICAiPGh0bWw+PGhlYWQ+PHNjcmlwdCB0eXBlPSd0
ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIHZpYnJhdGUoKSB7IG5hdmlnYXRvci52aWJyYXRlKCVz
KTsiCi0gICAgICAgICIgZG9jdW1lbnQudGl0bGUgPSBcIkxvYWRlZFwiOyB9PC9zY3JpcHQ+PC9o
ZWFkPjxib2R5IG9ubG9hZD0ndmlicmF0ZSgpJz48L2JvZHk+PC9odG1sPiI7Ci0KLSAgICBkYXRh
LT5kaWRSZWNlaXZlVmlicmF0ZUNhbGxiYWNrID0gZmFsc2U7Ci0gICAgZGF0YS0+ZGlkUmVjZWl2
ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrID0gZmFsc2U7Ci0gICAgZGF0YS0+dmlicmF0ZUNhbGxl
ZENvdW50ID0gMDsKLSAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0gZWluYV9zdHJidWZfbmV3KCk7
Ci0gICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50ZihidWZmZXIsIGNvbnRlbnQsIHZpYnJhdGlv
blBhdHRlcm4pOwotICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldywgZWluYV9z
dHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAwLCAwKTsKLSAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1
ZmZlcik7Ci0KLSAgICBpZiAoIXdhaXRGb3JWaWJyYXRpb25FdmVudCkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgd2hpbGUgKCFkYXRhLT5kaWRSZWNlaXZlVmlicmF0ZUNhbGxiYWNrICYmICFkYXRh
LT5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uQ2FsbGJhY2spCi0gICAgICAgIGVjb3JlX21haW5f
bG9vcF9pdGVyYXRlKCk7Ci19Ci0KLVRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfY29udGV4
dF92aWJyYXRpb25fY2xpZW50X2NhbGxiYWNrc19zZXQpCi17Ci0gICAgVmlicmF0aW9uQ2JEYXRh
IGRhdGEgPSB7IGZhbHNlLCBmYWxzZSwgMCwgNTAwMCB9OwotICAgIGV3a19jb250ZXh0X3ZpYnJh
dGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldChld2tfdmlld19jb250ZXh0X2dldCh3ZWJWaWV3KCkp
LCB2aWJyYXRlQ2FsbGJhY2ssIGNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrLCAmZGF0YSk7Ci0KLSAg
ICAvLyBWaWJyYXRlIGZvciA1IHNlY29uZHMuCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmco
d2ViVmlldygpLCAiNTAwMCIsIHRydWUsICZkYXRhKTsKLSAgICBBU1NFUlRfVFJVRShkYXRhLmRp
ZFJlY2VpdmVWaWJyYXRlQ2FsbGJhY2spOwotCi0gICAgLy8gQ2FuY2VsIGFueSBleGlzdGluZyB2
aWJyYXRpb25zLgotICAgIGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKHdlYlZpZXcoKSwgIjAiLCB0
cnVlLCAmZGF0YSk7Ci0gICAgQVNTRVJUX1RSVUUoZGF0YS5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0
aW9uQ2FsbGJhY2spOwotCi0gICAgLy8gVGhpcyBjYXNlIHRoZSBwYXR0ZXJuIHdpbGwgY2F1c2Ug
dGhlIGRldmljZSB0byB2aWJyYXRlIGZvciAyMDAgbXMsIGJlIHN0aWxsIGZvciAxMDAgbXMsIGFu
ZCB0aGVuIHZpYnJhdGUgZm9yIDUwMDAgbXMuCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmco
d2ViVmlldygpLCAiWzIwMCwgMTAwLCA1MDAwXSIsIHRydWUsICZkYXRhKTsKLSAgICBBU1NFUlRf
RVEoMiwgZGF0YS52aWJyYXRlQ2FsbGVkQ291bnQpOwotICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlk
UmVjZWl2ZVZpYnJhdGVDYWxsYmFjayk7Ci0KLSAgICAvLyBDYW5jZWwgb3V0c3RhbmRpbmcgdmli
cmF0aW9uIHBhdHRlcm4uCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAi
WzBdIiwgdHJ1ZSwgJmRhdGEpOwotICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNl
bFZpYnJhdGlvbkNhbGxiYWNrKTsKLQotICAgIC8vIFN0b3AgbGlzdGVuaW5nIGZvciB2aWJyYXRp
b24gZXZlbnRzLCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbiB3aXRoIG51bGwgZm9yIHRoZSBjYWxs
YmFja3MuCi0gICAgZXdrX2NvbnRleHRfdmlicmF0aW9uX2NsaWVudF9jYWxsYmFja3Nfc2V0KGV3
a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSksIDAsIDAsICZkYXRhKTsKLQotICAgIC8vIE1h
a2Ugc3VyZSB3ZSBkb24ndCByZWNlaXZlIHZpYnJhdGlvbiBldmVudC4KLSAgICBsb2FkVmlicmF0
aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJbNTAwMF0iLCBmYWxzZSwgJmRhdGEpOwotICAgIEFT
U0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJMb2FkZWQiKSk7Ci0gICAgQVNTRVJU
X1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7Ci0gICAgQVNT
RVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZVZpYnJhdGVDYWxsYmFjayk7Ci0KLSAgICAvLyBNYWtl
IHN1cmUgd2UgZG9uJ3QgcmVjZWl2ZSBjYW5jZWwgdmlicmF0aW9uIGV2ZW50LgotICAgIGxvYWRW
aWJyYXRpb25IVE1MU3RyaW5nKHdlYlZpZXcoKSwgIjAiLCBmYWxzZSwgJmRhdGEpOwotICAgIEFT
U0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJMb2FkZWQiKSk7Ci0gICAgQVNTRVJU
X1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7Ci0gICAgQVNT
RVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKTsKLX0KLQog
VEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb250ZXh0X2NhY2hlX21vZGVsKQogewogICAg
IEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3Rf
ZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl92aWV3LmNwcAppbmRleCA4MDI0MGQyYWU0YTgxYTFkNWE5YWQwNjYxYjc5YTYwNWIy
YmNlNWJjLi4xOTk5NzBkMjljN2RhMGZhMGRkYmI2ZTJjMWQxYzJhYjYwMjUxYTMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9l
d2syX3ZpZXcuY3BwCkBAIC03OTcsMyArNzk3LDg3IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNl
LCBld2tfdmlld19wYWdpbmF0aW9uKQogICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmly
b25tZW50LT5kZWZhdWx0VGVzdFBhZ2VVcmwoKSkpOwogICAgIEFTU0VSVF9FUShFV0tfUEFHSU5B
VElPTl9NT0RFX1VOUEFHSU5BVEVELCBld2tfdmlld19wYWdpbmF0aW9uX21vZGVfZ2V0KHdlYlZp
ZXcoKSkpOwogfQorCitzdHJ1Y3QgVmlicmF0aW9uQ2JEYXRhIHsKKyAgICBib29sIGRpZFJlY2Vp
dmVWaWJyYXRlOyAvLyBXaGV0aGVyIHRoZSB2aWJyYXRpb24gZXZlbnQgcmVjZWl2ZWQuCisgICAg
Ym9vbCBkaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uOyAvLyBXaGV0aGVyIHRoZSBjYW5jZWwgdmli
cmF0aW9uIGV2ZW50IHJlY2VpdmVkLgorICAgIHVuc2lnbmVkIHZpYnJhdGVDYWxsZWRDb3VudDsg
Ly8gVmlicmF0ZSBjYWxsYmFja3MgY291bnQuCisgICAgdWludDY0X3QgZXhwZWN0ZWRWaWJyYXRp
b25UaW1lOyAvLyBFeHBlY3RlZCB2aWJyYXRpb24gdGltZS4KK307CisKK3N0YXRpYyB2b2lkIG9u
VmlicmF0ZSh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7
CisgICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JEYXRh
Kj4odXNlckRhdGEpOworICAgIHVpbnQ2NF90KiB2aWJyYXRpb25UaW1lID0gc3RhdGljX2Nhc3Q8
dWludDY0X3QqPihldmVudEluZm8pOworICAgIGlmICgqdmlicmF0aW9uVGltZSA9PSBkYXRhLT5l
eHBlY3RlZFZpYnJhdGlvblRpbWUpCisgICAgICAgIGRhdGEtPmRpZFJlY2VpdmVWaWJyYXRlID0g
dHJ1ZTsKKyAgICBkYXRhLT52aWJyYXRlQ2FsbGVkQ291bnQrKzsKK30KKworc3RhdGljIHZvaWQg
b25DYW5jZWxWaWJyYXRpb24odm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCopCit7
CisgICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JEYXRh
Kj4odXNlckRhdGEpOworICAgIGRhdGEtPmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb24gPSB0cnVl
OworfQorCitzdGF0aWMgdm9pZCBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyhFdmFzX09iamVjdCog
d2ViVmlldywgY29uc3QgY2hhciogdmlicmF0aW9uUGF0dGVybiwgYm9vbCB3YWl0Rm9yVmlicmF0
aW9uRXZlbnQsIFZpYnJhdGlvbkNiRGF0YSogZGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiBjb250
ZW50ID0KKyAgICAgICAgIjxodG1sPjxoZWFkPjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0
Jz5mdW5jdGlvbiB2aWJyYXRlKCkgeyBuYXZpZ2F0b3IudmlicmF0ZSglcyk7IgorICAgICAgICAi
IGRvY3VtZW50LnRpdGxlID0gXCJMb2FkZWRcIjsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxv
YWQ9J3ZpYnJhdGUoKSc+PC9ib2R5PjwvaHRtbD4iOworCisgICAgZGF0YS0+ZGlkUmVjZWl2ZVZp
YnJhdGUgPSBmYWxzZTsKKyAgICBkYXRhLT5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uID0gZmFs
c2U7CisgICAgZGF0YS0+dmlicmF0ZUNhbGxlZENvdW50ID0gMDsKKyAgICBFaW5hX1N0cmJ1Ziog
YnVmZmVyID0gZWluYV9zdHJidWZfbmV3KCk7CisgICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50
ZihidWZmZXIsIGNvbnRlbnQsIHZpYnJhdGlvblBhdHRlcm4pOworICAgIGV3a192aWV3X2h0bWxf
c3RyaW5nX2xvYWQod2ViVmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAwLCAw
KTsKKyAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7CisKKyAgICBpZiAoIXdhaXRGb3JWaWJy
YXRpb25FdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCFkYXRhLT5kaWRSZWNl
aXZlVmlicmF0ZSAmJiAhZGF0YS0+ZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbikKKyAgICAgICAg
ZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2Us
IGV3a19jb250ZXh0X3ZpYnJhdGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldCkKK3sKKyAgICBWaWJy
YXRpb25DYkRhdGEgZGF0YSA9IHsgZmFsc2UsIGZhbHNlLCAwLCA1MDAwIH07CisgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgInZpYnJhdGUiLCBvblZpYnJhdGUs
ICZkYXRhKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAi
Y2FuY2VsLHZpYnJhdGlvbiIsIG9uQ2FuY2VsVmlicmF0aW9uLCAmZGF0YSk7CisKKyAgICAvLyBW
aWJyYXRlIGZvciA1IHNlY29uZHMuCisgICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmll
dygpLCAiNTAwMCIsIHRydWUsICZkYXRhKTsKKyAgICBBU1NFUlRfVFJVRShkYXRhLmRpZFJlY2Vp
dmVWaWJyYXRlKTsKKworICAgIC8vIENhbmNlbCBhbnkgZXhpc3RpbmcgdmlicmF0aW9ucy4KKyAg
ICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICIwIiwgdHJ1ZSwgJmRhdGEpOwor
ICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbik7CisKKyAgICAv
LyBUaGlzIGNhc2UgdGhlIHBhdHRlcm4gd2lsbCBjYXVzZSB0aGUgZGV2aWNlIHRvIHZpYnJhdGUg
Zm9yIDIwMCBtcywgYmUgc3RpbGwgZm9yIDEwMCBtcywgYW5kIHRoZW4gdmlicmF0ZSBmb3IgNTAw
MCBtcy4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJbMjAwLCAxMDAs
IDUwMDBdIiwgdHJ1ZSwgJmRhdGEpOworICAgIEFTU0VSVF9FUSgyLCBkYXRhLnZpYnJhdGVDYWxs
ZWRDb3VudCk7CisgICAgQVNTRVJUX1RSVUUoZGF0YS5kaWRSZWNlaXZlVmlicmF0ZSk7CisKKyAg
ICAvLyBDYW5jZWwgb3V0c3RhbmRpbmcgdmlicmF0aW9uIHBhdHRlcm4uCisgICAgbG9hZFZpYnJh
dGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAiWzBdIiwgdHJ1ZSwgJmRhdGEpOworICAgIEFTU0VS
VF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbik7CisKKyAgICAvLyBTdG9wIGxp
c3RlbmluZyBmb3IgdmlicmF0aW9uIGV2ZW50cywgYnkgY2FsbGluZyB0aGUgZnVuY3Rpb24gd2l0
aCBudWxsIGZvciB0aGUgY2FsbGJhY2tzLgorICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2RlbCh3ZWJWaWV3KCksICJ2aWJyYXRlIiwgb25WaWJyYXRlKTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiY2FuY2VsLHZpYnJhdGlvbiIsIG9uQ2FuY2Vs
VmlicmF0aW9uKTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCByZWNlaXZlIHZpYnJhdGlv
biBldmVudC4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJbNTAwMF0i
LCBmYWxzZSwgJmRhdGEpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRv
KCJMb2FkZWQiKSk7CisgICAgQVNTRVJUX1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190aXRsZV9n
ZXQod2ViVmlldygpKSk7CisgICAgQVNTRVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZVZpYnJhdGUp
OworCisgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHJlY2VpdmUgY2FuY2VsIHZpYnJhdGlvbiBl
dmVudC4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICIwIiwgZmFsc2Us
ICZkYXRhKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiTG9hZGVk
IikpOworICAgIEFTU0VSVF9TVFJFUSgiTG9hZGVkIiwgZXdrX3ZpZXdfdGl0bGVfZ2V0KHdlYlZp
ZXcoKSkpOworICAgIEFTU0VSVF9GQUxTRShkYXRhLmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb24p
OworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZmU2OWYy
YjdlMDNiZDliMTdkNTI2OTYzZDgzYzA1YmM1N2M0ZjAxMS4uMTE2NTExNjA2ZGI0OWYxOGY1ZjE4
ZjYyMjcyOWNlZWUzZjBhOTQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmNwcApAQCAtNzksMTAgKzc5LDYgQEAKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQ
cm94eS5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotI2luY2x1ZGUgIldlYlZp
YnJhdGlvblByb3h5LmgiCi0jZW5kaWYKLQogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTE2Miw5ICsxNTgsNiBAQCBXZWJD
b250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmlu
ZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIFVTRShTT1VQKQogICAgIG1fc291cFJlcXVlc3RNYW5h
Z2VyUHJveHkgPSBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwogI2Vu
ZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBtX3ZpYnJhdGlvblByb3h5ID0gV2ViVmli
cmF0aW9uUHJveHk6OmNyZWF0ZSh0aGlzKTsKLSNlbmRpZgogICAgIAogI2lmICFMT0dfRElTQUJM
RUQKICAgICBXZWJLaXQ6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCk7CkBAIC0y
NDEsMTEgKzIzNCw2IEBAIFdlYkNvbnRleHQ6On5XZWJDb250ZXh0KCkKICAgICBtX3NvdXBSZXF1
ZXN0TWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJ
QlJBVElPTikKLSAgICBtX3ZpYnJhdGlvblByb3h5LT5pbnZhbGlkYXRlKCk7Ci0gICAgbV92aWJy
YXRpb25Qcm94eS0+Y2xlYXJDb250ZXh0KCk7Ci0jZW5kaWYKLQogICAgIGludmFsaWRhdGVDYWxs
YmFja01hcChtX2RpY3Rpb25hcnlDYWxsYmFja3MpOwogCiAgICAgcGxhdGZvcm1JbnZhbGlkYXRl
Q29udGV4dCgpOwpAQCAtNTUwLDkgKzUzOCw2IEBAIHZvaWQgV2ViQ29udGV4dDo6ZGlzY29ubmVj
dFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogI2lmIFVTRShTT1VQKQogICAgIG1f
c291cFJlcXVlc3RNYW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKICNlbmRpZgotI2lmIEVOQUJM
RShWSUJSQVRJT04pCi0gICAgbV92aWJyYXRpb25Qcm94eS0+aW52YWxpZGF0ZSgpOwotI2VuZGlm
CiAKICAgICAvLyBXaGVuIG91dCBvZiBwcm9jZXNzIHBsdWctaW5zIGFyZSBlbmFibGVkLCB3ZSBk
b24ndCB3YW50IHRvIGludmFsaWRhdGUgdGhlIHBsdWctaW4gc2l0ZSBkYXRhCiAgICAgLy8gbWFu
YWdlciBqdXN0IGJlY2F1c2UgdGhlIHdlYiBwcm9jZXNzIGNyYXNoZXMgc2luY2UgaXQncyBub3Qg
aW52b2x2ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCAwZDQ0NDU0
YmFiNjNhNjE2M2IzNjM2Zjg2MWEzNWI0N2ViMDM0NDhmLi5kODk0YTAwYTE4Yjk0NDM3Yjc1NDU1
MTc0MmYzMThlZWFhNGY5YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgK
QEAgLTY5LDkgKzY5LDYgQEAgY2xhc3MgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTsKICNp
ZiBVU0UoU09VUCkKIGNsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OwogI2VuZGlmCi0j
aWYgRU5BQkxFKFZJQlJBVElPTikKLWNsYXNzIFdlYlZpYnJhdGlvblByb3h5OwotI2VuZGlmCiBz
dHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czsKICAgICAKQEAgLTIwMyw5ICsyMDAsNiBAQCBwdWJsaWM6CiAjaWYgVVNFKFNPVVApCiAgICAg
V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkqIHNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KCkgY29u
c3QgeyByZXR1cm4gbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5nZXQoKTsgfQogI2VuZGlmCi0j
aWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBXZWJWaWJyYXRpb25Qcm94eSogdmlicmF0aW9uUHJv
eHkoKSBjb25zdCB7IHJldHVybiBtX3ZpYnJhdGlvblByb3h5LmdldCgpOyB9Ci0jZW5kaWYKIAog
ICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsKICAgICAgICAgdW5zaWduZWQgd2tWaWV3Q291bnQ7CkBA
IC0zNjgsOSArMzYyLDYgQEAgcHJpdmF0ZToKICNpZiBVU0UoU09VUCkKICAgICBSZWZQdHI8V2Vi
U291cFJlcXVlc3RNYW5hZ2VyUHJveHk+IG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHk7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotICAgIFJlZlB0cjxXZWJWaWJyYXRpb25Qcm94eT4g
bV92aWJyYXRpb25Qcm94eTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGJvb2wg
bV9zaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCAxNDU2NjExY2IwNzljYWVlOTJhZDkyMDYwNWRjZTIwNWI1MzFi
YzQ2Li4yYjYyZWFmNmQzNWVmZjQ0ZDA4NDkyYTljZDM1ZmVkOGI3MzU1NTRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTExLDYgKzExMSwxMCBAQAog
I2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHkuaCIKKyNlbmRpZgor
CiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4K
ICNlbmRpZgpAQCAtNDQ3LDYgKzQ1MSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQog
ICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBpZiAobV92aWJyYXRp
b24pIHsKKyAgICAgICAgbV92aWJyYXRpb24tPmludmFsaWRhdGUoKTsKKyAgICAgICAgbV92aWJy
YXRpb24gPSAwOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0TGlz
dGVuZXIpIHsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgp
OwogICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gMDsKQEAgLTE4NjUsNiArMTg3
NiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TQogICAgIH0KICNlbmRpZgogCisjaWYgRU5B
QkxFKFZJQlJBVElPTikKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFz
c1dlYlZpYnJhdGlvblByb3h5PigpKSB7CisgICAgICAgIGlmIChXZWJWaWJyYXRpb25Qcm94eSog
dmlicmF0aW9uID0gdGhpcy0+dmlicmF0aW9uKCkpCisgICAgICAgICAgICB2aWJyYXRpb24tPmRp
ZFJlY2VpdmVXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBk
ZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZGlkUmVjZWl2
ZVdlYlBhZ2VQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsKIH0K
IApAQCAtMjg0MSw2ICsyODYwLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREcmF3KCkKICAg
ICBtX3VpQ2xpZW50LmRpZERyYXcodGhpcyk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjphZGRN
ZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciogbWVz
c2FnZVJlY2VpdmVyKQoreworICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VSZWNl
aXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2ZXIp
OworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKENvcmVJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlv
bklEKQoreworICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZlciht
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKK30KKwogLy8gSW5zcGVjdG9yCiAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMjg2NSw2ICsyODk0LDE1IEBAIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6ZnVsbFNjcmVlbk1hbmFnZXIoKQogfQogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorV2ViVmlicmF0aW9uUHJveHkqIFdlYlBhZ2VQ
cm94eTo6dmlicmF0aW9uKCkKK3sKKyAgICBpZiAoIW1fdmlicmF0aW9uKQorICAgICAgICBtX3Zp
YnJhdGlvbiA9IFdlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJuIG1f
dmlicmF0aW9uLmdldCgpOworfQorI2VuZGlmCisKIC8vIEJhY2tGb3J3YXJkTGlzdAogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKQEAgLTM1
OTgsNiArMzYzNiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKICAg
ICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgaWYgKG1fdmlicmF0aW9u
KSB7CisgICAgICAgIG1fdmlicmF0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fdmlicmF0
aW9uID0gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChtX29wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyKSB7CiAgICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRh
dGUoKTsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjhlMzRiYzkwOTFiNGY2ZGFi
NDAwODlmMzUxNWRmOTA0NTE2ZTFmMi4uOTVmNWMzZjhjMTgwNzYwYTlmN2Q2ODY2NTliZGU2MmU2
YjlmMzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzks
NiArMzksOCBAQAogI2luY2x1ZGUgIlF0TmV0d29ya1JlcXVlc3REYXRhLmgiCiAjZW5kaWYKICNp
bmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVByb2Nl
c3NJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMTUwLDYg
KzE1Miw5IEBAIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFzcyBX
ZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJVUkxSZXF1ZXN0
OworI2lmIEVOQUJMRShWSUJSQVRJT04pCitjbGFzcyBXZWJWaWJyYXRpb25Qcm94eTsKKyNlbmRp
ZgogY2xhc3MgV2ViV2hlZWxFdmVudDsKIHN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3RydWN0
IENvbG9yU3BhY2VEYXRhOwpAQCAtMjQ0LDcgKzI0OSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eQog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgICwgcHVibGljIFdlYkNvbG9yQ2hvb3Nl
clByb3h5OjpDbGllbnQKICNlbmRpZgotICAgICwgcHVibGljIFdlYlBvcHVwTWVudVByb3h5OjpD
bGllbnQgeworICAgICwgcHVibGljIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQsIHByaXZhdGUg
Q29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlw
ZSBBUElUeXBlID0gVHlwZVBhZ2U7CiAKQEAgLTI2MSw2ICsyNjYsOSBAQCBwdWJsaWM6CiAKICAg
ICBXZWJCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFja0ZvcndhcmRMaXN0LmdldCgpOyB9CiAKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihD
b3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAg
ICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yKCk7CiAjZW5kaWYKQEAgLTI2OSw2ICsyNzcs
MTAgQEAgcHVibGljOgogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIGZ1bGxTY3JlZW5N
YW5hZ2VyKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgV2ViVmlicmF0
aW9uUHJveHkqIHZpYnJhdGlvbigpOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKICAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudChjb25zdCBXS1BhZ2VDb250
ZXh0TWVudUNsaWVudCopOwogI2VuZGlmCkBAIC0xMDQzLDYgKzEwNTUsOCBAQCBwcml2YXRlOgog
ICAgIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudCBtX2NvbnRleHRNZW51Q2xpZW50OwogI2VuZGlm
CiAKKyAgICBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJNYXA7
CisKICAgICBPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBSZWZQ
dHI8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CiAgICAgUmVmUHRyPFdlYlBhZ2VHcm91cD4g
bV9wYWdlR3JvdXA7CkBAIC0xMDYzLDYgKzEwNzcsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4gbV9mdWxsU2NyZWVuTWFuYWdlcjsKICNlbmRpZgog
CisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBSZWZQdHI8V2ViVmlicmF0aW9uUHJveHk+IG1f
dmlicmF0aW9uOworI2VuZGlmCisKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Vm9pZENh
bGxiYWNrPiA+IG1fdm9pZENhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
RGF0YUNhbGxiYWNrPiA+IG1fZGF0YUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8U3RyaW5nQ2FsbGJhY2s+ID4gbV9zdHJpbmdDYWxsYmFja3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNwcAppbmRleCA0YTY0NWQ1NDM3N2Y3
MjMwZGRlNGY2ZTAwOTg5ZWM1M2MzNDgzMjg4Li5hYzFiYTlkNjc5MjVlMWMzOWJkNmQzOGZiMWFk
NTM1ZWZlMTlmMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmli
cmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRp
b25Qcm94eS5jcHAKQEAgLTI4LDI0ICsyOCwyNSBAQAogCiAjaWYgRU5BQkxFKFZJQlJBVElPTikK
IAotI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNp
bmNsdWRlICJXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1QYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBXZWJWaWJyYXRpb25Qcm94eTo6Y3Jl
YXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCitQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBX
ZWJWaWJyYXRpb25Qcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlZpYnJhdGlvblByb3h5KGNvbnRleHQpKTsKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYlZpYnJhdGlvblByb3h5KHBhZ2UpKTsKIH0KIAotV2ViVmlicmF0aW9u
UHJveHk6OldlYlZpYnJhdGlvblByb3h5KFdlYkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBtX2Nv
bnRleHQoY29udGV4dCkKK1dlYlZpYnJhdGlvblByb3h5OjpXZWJWaWJyYXRpb25Qcm94eShXZWJQ
YWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKIHsKLSAgICBtX2NvbnRleHQtPmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlicmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgdGhpcyk7CisgICAgbV9wYWdlLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlZpYnJhdGlvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFn
ZUlEKCksIHRoaXMpOwogfQogCiBXZWJWaWJyYXRpb25Qcm94eTo6fldlYlZpYnJhdGlvblByb3h5
KCkKIHsKKyAgICBtX3BhZ2UtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmli
cmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9
CiAKIHZvaWQgV2ViVmlicmF0aW9uUHJveHk6OmludmFsaWRhdGUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaAppbmRleCA1YzZkZTE3ZDcyMTA0ZmFkMDQ0
NjBjMTBiZTM0MWVmOTUyMWUxM2ZhLi4wMDMxZGZkMzY2Yzk2OWM3NDc3OTA1MGQ3ZDJmY2NiNGQx
ZmI1MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9u
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHku
aApAQCAtMzUsMzUgKzM1LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJD
b250ZXh0OworY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJWaWJyYXRpb25Qcm94eSA6
IHB1YmxpYyBBUElPYmplY3QsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVZpYnJhdGlvbjsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBjcmVhdGUoV2ViQ29udGV4
dCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBjcmVhdGUoV2Vi
UGFnZVByb3h5Kik7CiAgICAgdmlydHVhbCB+V2ViVmlicmF0aW9uUHJveHkoKTsKIAogICAgIHZv
aWQgaW52YWxpZGF0ZSgpOwotICAgIHZvaWQgY2xlYXJDb250ZXh0KCkgeyBtX2NvbnRleHQgPSAw
OyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS1ZpYnJhdGlvblByb3Zp
ZGVyKik7CiAKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViVmlicmF0aW9uUHJv
eHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlicmF0aW9uUHJv
eHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViVmlicmF0
aW9uUHJveHkoV2ViQ29udGV4dCopOworICAgIGV4cGxpY2l0IFdlYlZpYnJhdGlvblByb3h5KFdl
YlBhZ2VQcm94eSopOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBB
UElUeXBlOyB9CiAKICAgICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKIAotICAgIC8vIElt
cGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXIm
KTsKLQogICAgIHZvaWQgdmlicmF0ZSh1aW50NjRfdCB2aWJyYXRpb25UaW1lKTsKICAgICB2b2lk
IGNhbmNlbFZpYnJhdGlvbigpOwogCi0gICAgV2ViQ29udGV4dCogbV9jb250ZXh0OworICAgIFdl
YlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFdlYlZpYnJhdGlvblByb3ZpZGVyIG1fcHJvdmlkZXI7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlv
bkNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvbkNs
aWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVmYjE2MWUyMWFjZTI5MGU2ZWE2YTMxN2U5ZDc0N2I5
Y2Q0YTYxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
VmlicmF0aW9uQ2xpZW50RWZsLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50RWZsLmgi
CisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIKKyNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1ZpYnJhdGlvbi5oIgorCit1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgaW5saW5lIFZpYnJhdGlvbkNsaWVudEVmbCogdG9W
aWJyYXRpb25DbGllbnQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VmlicmF0aW9uQ2xpZW50RWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpOworfQorCit2b2lkIFZpYnJhdGlvbkNsaWVudEVmbDo6dmlicmF0ZUNhbGxiYWNrKFdLVmli
cmF0aW9uUmVmLCB1aW50NjRfdCB2aWJyYXRpb25UaW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIHRvVmlicmF0aW9uQ2xpZW50KGNsaWVudEluZm8pLT5tX3ZpZXdJbXBsLT52aWJy
YXRlKHZpYnJhdGlvblRpbWUpOworfQorCit2b2lkIFZpYnJhdGlvbkNsaWVudEVmbDo6Y2FuY2Vs
VmlicmF0aW9uQ2FsbGJhY2soV0tWaWJyYXRpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
Cit7CisgICAgdG9WaWJyYXRpb25DbGllbnQoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPmNhbmNl
bFZpYnJhdGlvbigpOworfQorCitQYXNzT3duUHRyPFZpYnJhdGlvbkNsaWVudEVmbD4gVmlicmF0
aW9uQ2xpZW50RWZsOjpjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQoreworICAgIHJldHVy
biBhZG9wdFB0cihuZXcgVmlicmF0aW9uQ2xpZW50RWZsKHZpZXdJbXBsKSk7Cit9CisKK1ZpYnJh
dGlvbkNsaWVudEVmbDo6VmlicmF0aW9uQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1wbCkK
KyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCit7CisgICAgQVNTRVJUKG1fdmlld0ltcGwpOwor
CisgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJbXBsLT53a1BhZ2UoKTsKKyAgICBBU1NF
UlQocGFnZVJlZik7CisKKyAgICBXS1ZpYnJhdGlvblJlZiB3a1ZpYnJhdGlvbiA9IFdLUGFnZUdl
dFZpYnJhdGlvbihwYWdlUmVmKTsKKyAgICBBU1NFUlQod2tWaWJyYXRpb24pOworCisgICAgV0tW
aWJyYXRpb25Qcm92aWRlciB3a1ZpYnJhdGlvblByb3ZpZGVyID0geworICAgICAgICBrV0tWaWJy
YXRpb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uLAorICAgICAgICB0aGlzLCAvLyBjbGllbnRJbmZv
CisgICAgICAgIHZpYnJhdGVDYWxsYmFjaywKKyAgICAgICAgY2FuY2VsVmlicmF0aW9uQ2FsbGJh
Y2sKKyAgICB9OworICAgIFdLVmlicmF0aW9uU2V0UHJvdmlkZXIod2tWaWJyYXRpb24sICZ3a1Zp
YnJhdGlvblByb3ZpZGVyKTsKK30KKworVmlicmF0aW9uQ2xpZW50RWZsOjp+VmlicmF0aW9uQ2xp
ZW50RWZsKCkKK3sKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9IG1fdmlld0ltcGwtPndrUGFnZSgp
OworICAgIEFTU0VSVChwYWdlUmVmKTsKKworICAgIFdLVmlicmF0aW9uUmVmIHdrVmlicmF0aW9u
ID0gV0tQYWdlR2V0VmlicmF0aW9uKHBhZ2VSZWYpOworICAgIEFTU0VSVCh3a1ZpYnJhdGlvbik7
CisKKyAgICBXS1ZpYnJhdGlvblNldFByb3ZpZGVyKHdrVmlicmF0aW9uLCAwKTsKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1ZpYnJhdGlvbkNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9WaWJyYXRpb25DbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmQzZjc5ZTE5MDk0MDRjZDEx
NjRhNTU3YzkwZTVkM2YwZjdhNTVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9WaWJyYXRpb25DbGllbnRFZmwuaApAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpYnJhdGlvbkNsaWVudEVmbF9oCisjZGVmaW5lIFZp
YnJhdGlvbkNsaWVudEVmbF9oCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitjbGFzcyBF
d2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFZpYnJhdGlvbkNsaWVu
dEVmbCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8VmlicmF0aW9uQ2xpZW50RWZs
PiBjcmVhdGUoRXdrVmlld0ltcGwqKTsKKworICAgIHZpcnR1YWwgflZpYnJhdGlvbkNsaWVudEVm
bCgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFZpYnJhdGlvbkNsaWVudEVmbChFd2tWaWV3
SW1wbCopOworCisgICAgc3RhdGljIHZvaWQgdmlicmF0ZUNhbGxiYWNrKFdLVmlicmF0aW9uUmVm
LCB1aW50NjRfdCB2aWJyYXRpb25UaW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBz
dGF0aWMgdm9pZCBjYW5jZWxWaWJyYXRpb25DYWxsYmFjayhXS1ZpYnJhdGlvblJlZiwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CisKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKKwor
I2VuZGlmIC8vIFZpYnJhdGlvbkNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvVmlicmF0aW9uUHJvdmlkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyZGU2Mjk2OGMyNTE3ZWIyNjIyN2M3NTE3N2UyYmZkYTJjYmUxM2NjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvVmlicmF0aW9uUHJvdmlkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJWaWJyYXRpb25Qcm92aWRlci5oIgotCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLQotI2lu
Y2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLQ29udGV4dC5oIgotI2luY2x1ZGUgIldL
VmlicmF0aW9uLmgiCi0jaW5jbHVkZSA8RXZhcy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLS8qKgotICogXHN0cnVjdCAgRXdrX1ZpYnJh
dGlvbl9DbGllbnQKLSAqIEBicmllZiAgIENvbnRhaW5zIHRoZSB2aWJyYXRpb24gY2xpZW50IGNh
bGxiYWNrcy4KLSAqLwotc3RydWN0IEV3a19WaWJyYXRpb25fQ2xpZW50IHsKLSAgICBFd2tfVmli
cmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiIHZpYnJhdGU7Ci0gICAgRXdrX1ZpYnJhdGlvbl9DbGll
bnRfVmlicmF0aW9uX0NhbmNlbF9DYiBjYW5jZWxWaWJyYXRpb247Ci0gICAgdm9pZCogdXNlckRh
dGE7Ci0KLSAgICBFd2tfVmlicmF0aW9uX0NsaWVudChFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJy
YXRlX0NiIHZpYnJhdGUsIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxfQ2Ig
Y2FuY2VsVmlicmF0aW9uLCB2b2lkKiB1c2VyRGF0YSkKLSAgICAgICAgOiB2aWJyYXRlKHZpYnJh
dGUpCi0gICAgICAgICwgY2FuY2VsVmlicmF0aW9uKGNhbmNlbFZpYnJhdGlvbikKLSAgICAgICAg
LCB1c2VyRGF0YSh1c2VyRGF0YSkKLSAgICB7IH0KLX07Ci0KLXN0YXRpYyBpbmxpbmUgVmlicmF0
aW9uUHJvdmlkZXIqIHRvVmlicmF0aW9uUHJvdmlkZXIoY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
LXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlicmF0aW9uUHJvdmlkZXIqPihjb25zdF9jYXN0
PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHZpYnJhdGVDYWxsYmFjayhX
S1ZpYnJhdGlvblJlZiwgdWludDY0X3QgdmlicmF0aW9uVGltZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKLXsKLSAgICB0b1ZpYnJhdGlvblByb3ZpZGVyKGNsaWVudEluZm8pLT52aWJyYXRlKHZp
YnJhdGlvblRpbWUpOwotfQotCi1zdGF0aWMgdm9pZCBjYW5jZWxWaWJyYXRpb25DYWxsYmFjayhX
S1ZpYnJhdGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICB0b1ZpYnJhdGlv
blByb3ZpZGVyKGNsaWVudEluZm8pLT5jYW5jZWxWaWJyYXRpb24oKTsKLX0KLQotUGFzc1JlZlB0
cjxWaWJyYXRpb25Qcm92aWRlcj4gVmlicmF0aW9uUHJvdmlkZXI6OmNyZWF0ZShXS0NvbnRleHRS
ZWYgd2tDb250ZXh0KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlicmF0aW9uUHJvdmlk
ZXIod2tDb250ZXh0KSk7Ci19Ci0KLVZpYnJhdGlvblByb3ZpZGVyOjpWaWJyYXRpb25Qcm92aWRl
cihXS0NvbnRleHRSZWYgd2tDb250ZXh0KQotICAgIDogbV93a0NvbnRleHQod2tDb250ZXh0KQot
ewotICAgIEFTU0VSVChtX3drQ29udGV4dC5nZXQoKSk7Ci0KLSAgICBXS1ZpYnJhdGlvblJlZiB3
a1ZpYnJhdGlvbiA9IFdLQ29udGV4dEdldFZpYnJhdGlvbihtX3drQ29udGV4dC5nZXQoKSk7Ci0g
ICAgQVNTRVJUKHdrVmlicmF0aW9uKTsKLQotICAgIFdLVmlicmF0aW9uUHJvdmlkZXIgd2tWaWJy
YXRpb25Qcm92aWRlciA9IHsKLSAgICAgICAga1dLVmlicmF0aW9uUHJvdmlkZXJDdXJyZW50VmVy
c2lvbiwKLSAgICAgICAgdGhpcywgLy8gY2xpZW50SW5mbwotICAgICAgICB2aWJyYXRlQ2FsbGJh
Y2ssCi0gICAgICAgIGNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrCi0gICAgfTsKLSAgICBXS1ZpYnJh
dGlvblNldFByb3ZpZGVyKHdrVmlicmF0aW9uLCAmd2tWaWJyYXRpb25Qcm92aWRlcik7Ci19Ci0K
LVZpYnJhdGlvblByb3ZpZGVyOjp+VmlicmF0aW9uUHJvdmlkZXIoKQotewotICAgIFdLVmlicmF0
aW9uUmVmIHdrVmlicmF0aW9uID0gV0tDb250ZXh0R2V0VmlicmF0aW9uKG1fd2tDb250ZXh0Lmdl
dCgpKTsKLSAgICBBU1NFUlQod2tWaWJyYXRpb24pOwotCi0gICAgV0tWaWJyYXRpb25TZXRQcm92
aWRlcih3a1ZpYnJhdGlvbiwgMCk7Ci19Ci0KLXZvaWQgVmlicmF0aW9uUHJvdmlkZXI6OnZpYnJh
dGUodWludDY0X3QgdmlicmF0aW9uVGltZSkKLXsKLSAgICBpZiAobV92aWJyYXRpb25DbGllbnQg
JiYgbV92aWJyYXRpb25DbGllbnQtPnZpYnJhdGUpCi0gICAgICAgIG1fdmlicmF0aW9uQ2xpZW50
LT52aWJyYXRlKHZpYnJhdGlvblRpbWUsIG1fdmlicmF0aW9uQ2xpZW50LT51c2VyRGF0YSk7Ci19
Ci0KLXZvaWQgVmlicmF0aW9uUHJvdmlkZXI6OmNhbmNlbFZpYnJhdGlvbigpCi17Ci0gICAgaWYg
KG1fdmlicmF0aW9uQ2xpZW50ICYmIG1fdmlicmF0aW9uQ2xpZW50LT5jYW5jZWxWaWJyYXRpb24p
Ci0gICAgICAgIG1fdmlicmF0aW9uQ2xpZW50LT5jYW5jZWxWaWJyYXRpb24obV92aWJyYXRpb25D
bGllbnQtPnVzZXJEYXRhKTsKLX0KLQotdm9pZCBWaWJyYXRpb25Qcm92aWRlcjo6c2V0VmlicmF0
aW9uQ2xpZW50Q2FsbGJhY2tzKEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2IgdmlicmF0
ZSwgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmlicmF0aW9uX0NhbmNlbF9DYiBjYW5jZWxWaWJyYXRp
b24sIHZvaWQqIGRhdGEpCi17Ci0gICAgbV92aWJyYXRpb25DbGllbnQgPSBhZG9wdFB0cihuZXcg
RXdrX1ZpYnJhdGlvbl9DbGllbnQodmlicmF0ZSwgY2FuY2VsVmlicmF0aW9uLCBkYXRhKSk7Ci19
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1ODEwMzkzZGVhOTM4Mzk1OGE3MTZhNWIyNjUzMTBiZDBjZjJmNGZjLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvVmlicmF0aW9uUHJvdmlkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVmlicmF0aW9uUHJvdmlkZXJfaAotI2Rl
ZmluZSBWaWJyYXRpb25Qcm92aWRlcl9oCi0KLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotCi0jaW5j
bHVkZSAiV0tSZXRhaW5QdHIuaCIKLSNpbmNsdWRlICJld2tfY29udGV4dC5oIgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotdHlwZWRl
ZiBzdHJ1Y3QgRXdrX1ZpYnJhdGlvbl9DbGllbnQgRXdrX1ZpYnJhdGlvbl9DbGllbnQ7Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBWaWJyYXRpb25Qcm92aWRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFZpYnJhdGlvblByb3ZpZGVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8VmlicmF0aW9uUHJvdmlkZXI+IGNyZWF0ZShXS0NvbnRleHRSZWYpOwotICAgIHZpcnR1YWwg
flZpYnJhdGlvblByb3ZpZGVyKCk7Ci0KLSAgICB2b2lkIHZpYnJhdGUodWludDY0X3QgdmlicmF0
aW9uVGltZSk7Ci0gICAgdm9pZCBjYW5jZWxWaWJyYXRpb24oKTsKLSAgICB2b2lkIHNldFZpYnJh
dGlvbkNsaWVudENhbGxiYWNrcyhFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiLCBFd2tf
VmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiLCB2b2lkKik7Ci0KLXByaXZhdGU6
Ci0gICAgZXhwbGljaXQgVmlicmF0aW9uUHJvdmlkZXIoV0tDb250ZXh0UmVmKTsKLQotICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dFJlZj4gbV93a0NvbnRleHQ7Ci0gICAgT3duUHRyPEV3a19WaWJy
YXRpb25fQ2xpZW50PiBtX3ZpYnJhdGlvbkNsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKLQotI2VuZGlmIC8vIFZpYnJhdGlv
blByb3ZpZGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171610</attachid>
            <date>2012-10-31 03:15:18 -0700</date>
            <delta_ts>2012-10-31 23:20:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100334-20121031191340.patch</filename>
            <type>text/plain</type>
            <size>51087</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYzJjZTFmMWRjYjkwNGU4
YjllZmIzYjQxMWI5ZGIyOTJkNmI1YTRhNy4uZDU4ZTBhZWM5ZDUwMWVhMDYxNWU1YTZmMWI2NjFi
YTEyMDc4OGMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExMiBAQAogMjAxMi0xMC0zMSAgQnl1
bmd3b28gTGVlICA8Ync4MC5sZWVAc2Ftc3VuZy5jb20+CiAKKyAgICAgICAgW1dLMl0gTWFrZSBX
ZWJWaWJyYXRpb25Qcm94eSB0byBiZSBhIG1lbWJlciBvZiBXZWJQYWdlUHJveHkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAzMzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJWaWJyYXRpb25Qcm94
eSBzaG91bGQgYmUgYSBtZW1iZXIgb2YgV2ViUGFnZVByb3h5LCBiZWNhdXNlIHRoZSBJUEMKKyAg
ICAgICAgbWVzc2FnZXMgb2YgV2ViVmlicmF0aW9uUHJveHkgaGF2ZSBwYWdlIGRlc3RpbmF0aW9u
IElELgorCisgICAgICAgIFRoZSByMTMyMzg2IHByb3Bvc2VkIGEgd2F5IHRvIGFkZC9kZWxldGUg
bWVzc2FnZSByZWNlaXZlcnMgdGhhdCBjYW4KKyAgICAgICAgaGFuZGxlIElQQyBtZXNzYWdlcyB3
aXRoIGRlc3RpbmF0aW9uIElELgorCisgICAgICAgIFByZXZpb3VzIGltcGxlbWVudGF0aW9uIHRo
YXQgY3JlYXRpbmcgV2ViVmlicmF0aW9uUHJveHkgYXMgYSBXZWJDb250ZXh0CisgICAgICAgIG1l
bWJlciBhbmQgdXNpbmcgdGhlIGdsb2JhbCBtZXNzYWdlIHJlY2VpdmVyIGZvciB0aGUgcHJveHkg
Y2FuIG1ha2UKKyAgICAgICAgYXNzZXJ0aW9ucyBhZnRlciByMTMyMzg2LgorCisgICAgICAgIFRv
IGhhbmRsZSB0aGUgdmlicmF0aW9uIElQQyBtZXNzYWdlcyBwcm9wZXJseSwgdGhpcyBwYXRjaCB3
aWxsIGRvIHRoZQorICAgICAgICBmb2xsb3dpbmdzLgorCisgICAgICAgIDEpIFdlYkNvbnRleHQg
d2lsbCBub3QgaGF2ZSB0aGUgV2ViVmlicmF0aW9uUHJveHkgaW5zdGFuY2UuCisKKyAgICAgICAg
MikgV2ViUGFnZVByb3h5IHdpbGwgaGF2ZSBhIFdlYlZpYnJhdGlvblByb3h5IGluc3RhbmNlIGFu
ZCBhIG1lc3NhZ2UKKyAgICAgICAgICAgcmVjZWl2ZXIgbWFwLgorCisgICAgICAgIDMpIFdlYlZp
YnJhdGlvblByb3h5IHdpbGwgYWRkIGl0c2VsZiB0byB0aGUgbWVzc2FnZSByZWNlaXZlciBtYXAg
b2YKKyAgICAgICAgICAgdGhlIFdlYlBhZ2VQcm94eSB3aXRoIHBhZ2UgSUQgYXMgZGVzdGluYXRp
b24gSUQuCisKKyAgICAgICAgNCkgSWYgV2ViUGFnZVByb3h5IHJlY2VpdmVkIHZpYnJhdGlvbiBp
cGMgbWVzc2FnZXMsIGl0IHdpbGwgZm9yd2FyZAorICAgICAgICAgICB0aGUgbWVzc2FnZXMgdG8g
dGhlIFdlYlZpYnJhdGlvblByb3h5LgorCisgICAgICAgIDUpIEFQSXMgd2lsbCBiZSBtb2RpZmll
ZCB0byBhcHBseSB0aGVzZSBjaGFuZ2VzLgorICAgICAgICAgICBhKSBXSyBBUEkgdG8gZ2V0IFdL
VmlicmF0aW9uUmVmIHdpbGwgdXNlIFdLUGFnZVJlZiBub3QgV0tDb250ZXh0UmVmLgorICAgICAg
ICAgICBiKSBFRkwgQVBJcyBhbmQgQVBJIHRlc3QgZm9yIHRoZSB2aWJyYXRpb24gd2lsbCBhbHNv
IGJlIGNoYW5nZWQuCisgICAgICAgICAgICAgIC0gRXdrVmlld0ltcGwgd2lsbCBoYXZlIHZpYnJh
dGlvbiBjbGllbnQuIChFd2tfQ29udGV4dCB3aWxsIG5vdAorICAgICAgICAgICAgICAgIGhhdmUg
aXQpCisgICAgICAgICAgICAgIC0gUHJldmlvdXMgQVBJIHRvIHJlZ2lzdGVyIHRoZSB2aWJyYXRp
b24gY2FsbGJhY2sgd2lsbCBiZSByZW1vdmVkLgorICAgICAgICAgICAgICAtIE5ldyBzaWduYWxz
IGZvciB2aWJyYXRpb24gd2lsbCBiZSBhZGRlZCB0byB0aGUgRXdrVmlld0ltcGwuCisgICAgICAg
ICAgICAgIC0gVmlicmF0aW9uUHJveHkgd2lsbCBiZSByZW5hbWVkIHRvIFZpYnJhdGlvbkNsaWVu
dCBmb3IgdGhlCisgICAgICAgICAgICAgICAgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBjbGllbnRz
IGluIEV3a1ZpZXdJbXBsLgorICAgICAgICAgICAgICAtIFZpYnJhdGlvbkNsaWVudCB3aWxsIHVz
ZSBFd2tWaWV3SW1wbCBpbnN0ZWFkIG9mIEV3a19Db250ZXh0LgorICAgICAgICAgICAgICAtIFBy
ZXZpb3VzIEFQSSB0ZXN0IGZvciB2aWJyYXRpb24gd2lsbCBiZSBtb3ZlZCBmcm9tIGNvbnRleHQg
dGVzdAorICAgICAgICAgICAgICAgIHRvIHZpZXcgdGVzdCwgYW5kIGl0IHdpbGwgdXNlIHRoZSBj
aGFuZ2VkIEFQSS4KKworICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S0NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAg
ICAgKFdLUGFnZUdldFZpYnJhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dmli
cmF0ZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6Y2FuY2VsVmlicmF0aW9uKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKEV3a1ZpZXdJbXBsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29u
dGV4dC5jcHA6CisgICAgICAgIChFd2tfQ29udGV4dDo6RXdrX0NvbnRleHQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KEV3a19Db250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHA6Cisg
ICAgICAgIChWaWJyYXRpb25DYkRhdGEpOgorICAgICAgICAob25WaWJyYXRlKToKKyAgICAgICAg
KG9uQ2FuY2VsVmlicmF0aW9uKToKKyAgICAgICAgKGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKToK
KyAgICAgICAgKFRFU1RfRik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpXZWJDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGV4dDo6fldlYkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0
OjpkaXNjb25uZWN0UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb250ZXh0KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpj
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFkZE1lc3NhZ2VSZWNlaXZlcik6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlicmF0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6V2ViVmlicmF0aW9uUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6fldlYlZpYnJhdGlvblByb3h5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJWaWJyYXRpb25Qcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9W
aWJyYXRpb25DbGllbnRFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5jcHAuCisgICAgICAgICh0b1ZpYnJhdGlvbkNsaWVu
dCk6CisgICAgICAgIChWaWJyYXRpb25DbGllbnRFZmw6OnZpYnJhdGVDYWxsYmFjayk6CisgICAg
ICAgIChWaWJyYXRpb25DbGllbnRFZmw6OmNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKToKKyAgICAg
ICAgKFZpYnJhdGlvbkNsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVu
dEVmbDo6VmlicmF0aW9uQ2xpZW50RWZsKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVudEVmbDo6
flZpYnJhdGlvbkNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25D
bGllbnRFZmwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmli
cmF0aW9uUHJvdmlkZXIuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChWaWJyYXRpb25D
bGllbnRFZmwpOgorCisyMDEyLTEwLTMxICBCeXVuZ3dvbyBMZWUgIDxidzgwLmxlZUBzYW1zdW5n
LmNvbT4KKwogICAgICAgICBbV0syXSBDaGFuZ2UgdGhlIHNjb3BlIG9mIGxvY2tpbmcgaW4gQ29y
ZUlQQzo6Q29ubmVjdGlvbiBjbGFzcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4OTk4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNmNl
ZGVkNzU4NTJiYTViODlhNTI5NTNlYTExOTdiZTM1Zjk2NDdhYS4uNDA0MGU2OTIwNGFhOWNhNjgw
MWNhZTI3OTA1NDNmM2M0NTJiNDZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTgz
LDcgKzgzLDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2Vm
bC9SZXF1ZXN0TWFuYWdlckNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1Jlc291cmNl
TG9hZENsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAot
ICAgIFVJUHJvY2Vzcy9lZmwvVmlicmF0aW9uUHJvdmlkZXIuY3BwCisgICAgVUlQcm9jZXNzL2Vm
bC9WaWJyYXRpb25DbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZs
LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAK
ICAgICBVSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCAxMTdiYmVkYTMxNGQxZGJl
NmIwYzY1NTVhMWZmMjgwY2M3NTQwMjI1Li5hYzQ2MTE1N2Y5NDkyNTEzYjhlNTMyOTNlZTczNDFm
ODY4YTBhYmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcApAQCAtMjQyLDE1ICsyNDIsNiBAQCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIFdLQ29u
dGV4dEdldFJlc291cmNlQ2FjaGVNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UgogICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHko
KSk7CiB9CiAKLVdLVmlicmF0aW9uUmVmIFdLQ29udGV4dEdldFZpYnJhdGlvbihXS0NvbnRleHRS
ZWYgY29udGV4dFJlZikKLXsKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwoY29udGV4dFJlZiktPnZpYnJhdGlvblByb3h5KCkpOwotI2Vsc2UKLSAgICByZXR1
cm4gMDsKLSNlbmRpZgotfQotCiB2b2lkIFdLQ29udGV4dFN0YXJ0TWVtb3J5U2FtcGxlcihXS0Nv
bnRleHRSZWYgY29udGV4dFJlZiwgV0tEb3VibGVSZWYgaW50ZXJ2YWwpCiB7CiAgICAgdG9JbXBs
KGNvbnRleHRSZWYpLT5zdGFydE1lbW9yeVNhbXBsZXIodG9JbXBsKGludGVydmFsKS0+dmFsdWUo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKaW5kZXggNjlk
MTI5ODA1ZDNiZGE5YzVjMDgwYjQyOWU2ODQ3ODFiNGQ2NmQxZC4uOGY3N2NiZDhmOGNlNTQ0NDM4
Y2YzYjc5MjVhZWZjZDQyODlmZDc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS0NvbnRleHQuaApAQCAtMTY3LDcgKzE2Nyw2IEBAIFdLX0VYUE9SVCBXS05ldHdvcmtJbmZv
TWFuYWdlclJlZiBXS0NvbnRleHRHZXROZXR3b3JrSW5mb01hbmFnZXIoV0tDb250ZXh0UmVmIGNv
CiBXS19FWFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldE5vdGlmaWNh
dGlvbk1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIFdLUGx1Z2luU2l0
ZURhdGFNYW5hZ2VyUmVmIFdLQ29udGV4dEdldFBsdWdpblNpdGVEYXRhTWFuYWdlcihXS0NvbnRl
eHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBXS0Nv
bnRleHRHZXRSZXNvdXJjZUNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci1XS19F
WFBPUlQgV0tWaWJyYXRpb25SZWYgV0tDb250ZXh0R2V0VmlicmF0aW9uKFdLQ29udGV4dFJlZiBj
b250ZXh0KTsKICAgICAKIHR5cGVkZWYgdm9pZCAoKldLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5j
dGlvbikoV0tEaWN0aW9uYXJ5UmVmIHN0YXRpc3RpY3MsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQq
IGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXRTdGF0aXN0aWNz
KFdLQ29udGV4dFJlZiBjb250ZXh0LCB2b2lkKiBmdW5jdGlvbkNvbnRleHQsIFdLQ29udGV4dEdl
dFN0YXRpc3RpY3NGdW5jdGlvbiBmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuY3BwCmluZGV4IGJkYmNiNTU0ZDJmNzk5MzRmMzY4ZjIzNTFiNWVhMDAzNzA5
OTZiZTYuLmFmMmMwMWZlNzBkNTFlYjgyYWIzMzQ1Y2I3MzBjODZlM2U1YjQ0ODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0xOTEsNiArMTkxLDE1IEBA
IFdLSW5zcGVjdG9yUmVmIFdLUGFnZUdldEluc3BlY3RvcihXS1BhZ2VSZWYgcGFnZVJlZikKICNl
bmRpZgogfQogCitXS1ZpYnJhdGlvblJlZiBXS1BhZ2VHZXRWaWJyYXRpb24oV0tQYWdlUmVmIHBh
Z2UpCit7CisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBh
Z2UpLT52aWJyYXRpb24oKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKIGRv
dWJsZSBXS1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKICAg
ICByZXR1cm4gdG9JbXBsKHBhZ2VSZWYpLT5lc3RpbWF0ZWRQcm9ncmVzcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCmluZGV4IGRhZGViYmM5MTk4Yzc3MTE5NmJlYWU1
ZWE3NzljMDZjODc3OTkzM2QuLjRhMjViYjYzYmIwOGEyZDRkZDgxNjU1NGM5ZDU1YzEwYTE0Y2Vh
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKQEAgLTM4OSw2ICsz
ODksOCBAQCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5h
YmxlZChXS1BhZ2VSZWYgcGFnZSwgYm9vbCBtZW1vcgogCiBXS19FWFBPUlQgV0tJbnNwZWN0b3JS
ZWYgV0tQYWdlR2V0SW5zcGVjdG9yKFdLUGFnZVJlZiBwYWdlKTsKIAorV0tfRVhQT1JUIFdLVmli
cmF0aW9uUmVmIFdLUGFnZUdldFZpYnJhdGlvbihXS1BhZ2VSZWYgcGFnZSk7CisKIFdLX0VYUE9S
VCBXS1N0cmluZ1JlZiBXS1BhZ2VDb3B5VXNlckFnZW50KFdLUGFnZVJlZiBwYWdlKTsKIAogV0tf
RVhQT1JUIFdLU3RyaW5nUmVmIFdLUGFnZUNvcHlBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQo
V0tQYWdlUmVmIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuY3BwCmluZGV4IDI3NzI0YTBlOWQ0MzdhODZiNTE4NjdhNDJiYjZlMWFiOTdh
OWYwNDkuLjEwOTMxODRmNzk4NDdmZjY1ZDI4MDU1MDkyZjI0MGUyNTU3MzQ3NjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTMy
LDYgKzMyLDkgQEAKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZENsaWVudEVmbC5oIgorI2lmIEVOQUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAiVmlicmF0
aW9uQ2xpZW50RWZsLmgiCisjZW5kaWYKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUg
IldlYkNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTEwMCw2ICsxMDMs
OSBAQCBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQ
dHI8RXdrX0NvbnRleHQ+IGNvbnRleHQsIFBhcwogICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQo
UmVzb3VyY2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2ZpbmRDbGllbnQo
RmluZENsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9mb3JtQ2xpZW50KEZvcm1DbGll
bnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwgbV92aWJy
YXRpb25DbGllbnQoVmlicmF0aW9uQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCisjZW5kaWYKICAg
ICAsIG1fYmFja0ZvcndhcmRMaXN0KEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRvQVBJ
KG1fcGFnZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSkpKQogI2lmIFVTRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQogICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKQEAgLTQ0Nyw2ICs0NTMsMTggQEAg
dm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtSWNvbkNoYW5nZSgpCiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJpY29uLGNoYW5nZWQiLCAwKTsKIH0KIAorI2lmIEVO
QUJMRShWSUJSQVRJT04pCit2b2lkIEV3a1ZpZXdJbXBsOjp2aWJyYXRlKHVpbnQ2NF90IHZpYnJh
dGlvblRpbWUpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcs
ICJ2aWJyYXRlIiwgJnZpYnJhdGlvblRpbWUpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpjYW5j
ZWxWaWJyYXRpb24oKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92
aWV3LCAiY2FuY2VsLHZpYnJhdGlvbiIsIDApOworfQorI2VuZGlmCisKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiBib29sIEV3a1ZpZXdJbXBsOjpjcmVhdGVHTFN1cmZhY2UoY29u
c3QgSW50U2l6ZSYgdmlld1NpemUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCBhNzUwNmJlZTBmZWU5NzNhZmYxYThkNzA5ZmE3Njhj
NzNkZDBjM2M1Li5hNWE3MzlkNjJkNjAyMzQ4YmFiMTM1MDllMWVjMzQxMmEyMDQwZjdjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTUz
LDYgKzUzLDkgQEAgY2xhc3MgUGFnZVVJQ2xpZW50RWZsOwogY2xhc3MgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbDsKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CiBjbGFzcyBS
ZXNvdXJjZUxvYWRDbGllbnRFZmw7CisjaWYgRU5BQkxFKFZJQlJBVElPTikKK2NsYXNzIFZpYnJh
dGlvbkNsaWVudEVmbDsKKyNlbmRpZgogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFn
ZVByb3h5OwogY2xhc3MgV2ViUG9wdXBJdGVtOwpAQCAtMTY2LDYgKzE2OSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBpbmZvcm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgc2l6ZSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGluZm9ybURhdGFiYXNlUXVvdGFSZWFj
aGVkKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3Vy
cmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2Us
IHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlKTsKIAorI2lmIEVOQUJMRShWSUJSQVRJ
T04pCisgICAgdm9pZCB2aWJyYXRlKHVpbnQ2NF90IHZpYnJhdGlvblRpbWUpOworICAgIHZvaWQg
Y2FuY2VsVmlicmF0aW9uKCk7CisjZW5kaWYKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkK
ICAgICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwqIHBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnQoKSB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnQuZ2V0KCk7IH0KICAgICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIHBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIoKSB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuZ2V0KCk7
IH0KQEAgLTIwOCw2ICsyMTUsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlJlc291
cmNlTG9hZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgT3duUHRyPFdlYktp
dDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OkZvcm1D
bGllbnRFZmw+IG1fZm9ybUNsaWVudDsKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgIE93blB0
cjxXZWJLaXQ6OlZpYnJhdGlvbkNsaWVudEVmbD4gbV92aWJyYXRpb25DbGllbnQ7CisjZW5kaWYK
ICAgICBPd25QdHI8RXdrX0JhY2tfRm9yd2FyZF9MaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKICNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5k
ZXggM2EwMDcxYzdkZmRjZGI4MDhhYjc1ZTIxMGRhYjc1YmFkYWE0OTY2YS4uNDIxMGUwYWMxNDYz
YWY4ZDIyMmUxYmYxYjNiMThmZDE0ZmQ5YjRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1
ZGUgIkNvbnRleHRIaXN0b3J5Q2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiTmV0d29ya0luZm9Qcm92
aWRlci5oIgogI2luY2x1ZGUgIlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAi
VmlicmF0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJX
S0NvbnRleHRTb3VwLmgiCiAjaW5jbHVkZSAiV0tOdW1iZXIuaCIKQEAgLTY4LDkgKzY3LDYgQEAg
RXdrX0NvbnRleHQ6OkV3a19Db250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogI2lmIEVOQUJM
RShORVRXT1JLX0lORk8pCiAgICAgLCBtX25ldHdvcmtJbmZvUHJvdmlkZXIoTmV0d29ya0luZm9Q
cm92aWRlcjo6Y3JlYXRlKGNvbnRleHQpKQogI2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikK
LSAgICAsIG1fdmlicmF0aW9uUHJvdmlkZXIoVmlicmF0aW9uUHJvdmlkZXI6OmNyZWF0ZShjb250
ZXh0KSkKLSNlbmRpZgogICAgICwgbV9kb3dubG9hZE1hbmFnZXIoRG93bmxvYWRNYW5hZ2VyRWZs
OjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50KFJlcXVlc3RNYW5h
Z2VyQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQoQ29udGV4
dEhpc3RvcnlDbGllbnRFZmw6OmNyZWF0ZShjb250ZXh0KSkKQEAgLTE2NCwxMyArMTYwLDYgQEAg
UmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIEV3a19Db250ZXh0OjpyZXF1ZXN0TWFuYWdlcigpCiAg
ICAgcmV0dXJuIG1fcmVxdWVzdE1hbmFnZXJDbGllbnQuZ2V0KCk7CiB9CiAKLSNpZiBFTkFCTEUo
VklCUkFUSU9OKQotUGFzc1JlZlB0cjxWaWJyYXRpb25Qcm92aWRlcj4gRXdrX0NvbnRleHQ6OnZp
YnJhdGlvblByb3ZpZGVyKCkKLXsKLSAgICByZXR1cm4gbV92aWJyYXRpb25Qcm92aWRlcjsKLX0K
LSNlbmRpZgotCiB2b2lkIEV3a19Db250ZXh0OjphZGRWaXNpdGVkTGluayhjb25zdCBTdHJpbmcm
IHZpc2l0ZWRVUkwpCiB7CiAgICAgdG9JbXBsKG1fY29udGV4dC5nZXQoKSktPmFkZFZpc2l0ZWRM
aW5rKHZpc2l0ZWRVUkwpOwpAQCAtMjU5LDE1ICsyNDgsNiBAQCBFaW5hX0Jvb2wgZXdrX2NvbnRl
eHRfdXJsX3NjaGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgY29uc3QgY2hh
ciogcwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGV3a19jb250ZXh0X3ZpYnJhdGlvbl9j
bGllbnRfY2FsbGJhY2tzX3NldChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgRXdrX1ZpYnJhdGlv
bl9DbGllbnRfVmlicmF0ZV9DYiB2aWJyYXRlLCBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRp
b25fQ2FuY2VsX0NiIGNhbmNlbCwgdm9pZCogZGF0YSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihld2tDb250ZXh0KTsKLQotI2lmIEVOQUJMRShWSUJSQVRJT04pCi0gICAgZXdr
Q29udGV4dC0+dmlicmF0aW9uUHJvdmlkZXIoKS0+c2V0VmlicmF0aW9uQ2xpZW50Q2FsbGJhY2tz
KHZpYnJhdGUsIGNhbmNlbCwgZGF0YSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBld2tfY29udGV4dF9o
aXN0b3J5X2NhbGxiYWNrc19zZXQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIEV3a19IaXN0b3J5
X05hdmlnYXRpb25fQ2IgbmF2aWdhdGUsIEV3a19IaXN0b3J5X0NsaWVudF9SZWRpcmVjdGlvbl9D
YiBjbGllbnRSZWRpcmVjdCwgRXdrX0hpc3RvcnlfU2VydmVyX1JlZGlyZWN0aW9uX0NiIHNlcnZl
clJlZGlyZWN0LCBFd2tfSGlzdG9yeV9UaXRsZV9VcGRhdGVfQ2IgdGl0bGVVcGRhdGUsIEV3a19I
aXN0b3J5X1BvcHVsYXRlX1Zpc2l0ZWRfTGlua3NfQ2IgcG9wdWxhdGVWaXNpdGVkTGlua3MsIHZv
aWQqIGRhdGEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXdrQ29udGV4dCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAppbmRl
eCBmNmI4YmI2N2QyNWQ4N2JhOWQwMzIxZDFhMzc3ZWZiODdmODFmMzA2Li4xY2U4ZmI0OWY3ZTgz
YjJmNTY0ODQzMzBiNjUyZGZiMGQ3ZGRhMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTc0LDIwICs3NCw2IEBAIHR5cGVkZWYgZW51
bSBFd2tfQ2FjaGVfTW9kZWwgRXdrX0NhY2hlX01vZGVsOwogdHlwZWRlZiB2b2lkICgqRXdrX1Vy
bF9TY2hlbWVfUmVxdWVzdF9DYikgKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QsIHZv
aWQgKnVzZXJfZGF0YSk7CiAKIC8qKgotICogQHR5cGVkZWYgRXdrX1ZpYnJhdGlvbl9DbGllbnRf
VmlicmF0ZV9DYiBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiCi0gKiBAYnJpZWYgVHlw
ZSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVu
IHZpYnJhdGUKLSAqIHJlcXVlc3QgcmVjZWl2ZWVkIGZyb20gdGhlIHZpYnJhdGlvbiBjb250cm9s
bGVyLgotICovCi10eXBlZGVmIHZvaWQgKCpFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0Ni
KSh1aW50NjRfdCB2aWJyYXRpb25fdGltZSwgdm9pZCAqdXNlcl9kYXRhKTsKLQotLyoqCi0gKiBA
dHlwZWRlZiBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiIEV3a19WaWJy
YXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxfQ2IKLSAqIEBicmllZiBUeXBlIGRlZmluaXRp
b24gZm9yIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBiYWNrIHdoZW4gY2FuY2VsCi0g
KiB2aWJyYXRpb24gcmVxdWVzdCByZWNlaXZlZWQgZnJvbSB0aGUgdmlicmF0aW9uIGNvbnRyb2xs
ZXIuCi0gKi8KLXR5cGVkZWYgdm9pZCAoKkV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9D
YW5jZWxfQ2IpKHZvaWQgKnVzZXJfZGF0YSk7Ci0KLS8qKgogICogQHR5cGVkZWYgRXdrX0hpc3Rv
cnlfTmF2aWdhdGlvbl9DYiBFd2tfSGlzdG9yeV9OYXZpZ2F0aW9uX0NiCiAgKiBAYnJpZWYgVHlw
ZSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVu
IEBhIHZpZXcgZGlkIG5hdmlnYXRpb24gKGxvYWRlZCBuZXcgVVJMKS4KICAqLwpAQCAtMjM1LDIy
ICsyMjEsNiBAQCBFQVBJIEV3a19GYXZpY29uX0RhdGFiYXNlICpld2tfY29udGV4dF9mYXZpY29u
X2RhdGFiYXNlX2dldChjb25zdCBFd2tfQ29udGV4dCAqYwogRUFQSSBFaW5hX0Jvb2wgZXdrX2Nv
bnRleHRfdXJsX3NjaGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCAqY29udGV4dCwgY29uc3QgY2hh
ciAqc2NoZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkICp1c2Vy
X2RhdGEpOwogCiAvKioKLSAqIFNldHMgdmlicmF0aW9uIGNsaWVudCBjYWxsYmFja3MgdG8gaGFu
ZGxlIHRoZSB0YWN0aWxlIGZlZWRiYWNrIGluIHRoZSBmb3JtIG9mCi0gKiB2aWJyYXRpb24gaW4g
dGhlIGNsaWVudCBhcHBsaWNhdGlvbiB3aGVuIHRoZSBjb250ZW50IGFza3MgZm9yIHZpYnJhdGlv
bi4KLSAqCi0gKiBUbyBzdG9wIGxpc3RlbmluZyBmb3IgdmlicmF0aW9uIGV2ZW50cywgeW91IG1h
eSBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCBAYwotICogTlVMTCBmb3IgdGhlIGNhbGxiYWNrcy4K
LSAqCi0gKiBAcGFyYW0gY29udGV4dCBjb250ZXh0IG9iamVjdCB0byBzZXQgdmlicmF0aW9uIGNs
aWVudCBjYWxsYmFja3MuCi0gKiBAcGFyYW0gdmlicmF0ZSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3
aGVuIHRoZSB2aWJyYXRlIHJlcXVlc3QgcmVjZWl2ZWQgZnJvbSB0aGUKLSAqICAgICAgICBjb250
cm9sbGVyIChtYXkgYmUgQGMgTlVMTCkuCi0gKiBAcGFyYW0gY2FuY2VsIFRoZSBmdW5jdGlvbiB0
byBjYWxsIHdoZW4gdGhlIGNhbmNlbCB2aWJyYXRpb24gcmVxdWVzdCByZWNlaXZlZAotICogICAg
ICAgIGZyb20gdGhlIGNvbnRyb2xsZXIgKG1heSBiZSBAYyBOVUxMKS4KLSAqIEBwYXJhbSBkYXRh
IFVzZXIgZGF0YSAobWF5IGJlIEBjIE5VTEwpLgotICovCi1FQVBJIHZvaWQgZXdrX2NvbnRleHRf
dmlicmF0aW9uX2NsaWVudF9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0ICpjb250ZXh0LCBFd2tf
VmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiIHZpYnJhdGUsIEV3a19WaWJyYXRpb25fQ2xpZW50
X1ZpYnJhdGlvbl9DYW5jZWxfQ2IgY2FuY2VsLCB2b2lkICpkYXRhKTsKLQotLyoqCiAgKiBTZXRz
IGhpc3RvcnkgY2FsbGJhY2tzIGZvciB0aGUgZ2l2ZW4gQGEgY29udGV4dC4KICAqCiAgKiBUbyBz
dG9wIGxpc3RlbmluZyBmb3IgaGlzdG9yeSBldmVudHMsIHlvdSBtYXkgY2FsbCB0aGlzIGZ1bmN0
aW9uIHdpdGggQGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0X3ByaXZhdGUuaAppbmRleCBiYTQ2MzI0ZjViMGM1ZWNhZjRlMzI2ZmYzMzEy
YmMwNTg3NTI1MzMwLi5hYTczMTBiYTc3YzE3OWEwNGU1NDhmMjQ1ZmY0ZjQxNTlkODY4MzE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRl
eHRfcHJpdmF0ZS5oCkBAIC0zOCw5ICszOCw2IEBAIGNsYXNzIEJhdHRlcnlQcm92aWRlcjsKICNp
ZiBFTkFCTEUoTkVUV09SS19JTkZPKQogY2xhc3MgTmV0d29ya0luZm9Qcm92aWRlcjsKICNlbmRp
ZgotI2lmIEVOQUJMRShWSUJSQVRJT04pCi1jbGFzcyBWaWJyYXRpb25Qcm92aWRlcjsKLSNlbmRp
ZgogfQogCiBjbGFzcyBFd2tfQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPEV3a19Db250ZXh0
PiB7CkBAIC01OSwxMCArNTYsNiBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6OlJlcXVlc3RNYW5h
Z2VyQ2xpZW50RWZsKiByZXF1ZXN0TWFuYWdlcigpOwogCi0jaWYgRU5BQkxFKFZJQlJBVElPTikK
LSAgICBQYXNzUmVmUHRyPFdlYktpdDo6VmlicmF0aW9uUHJvdmlkZXI+IHZpYnJhdGlvblByb3Zp
ZGVyKCk7Ci0jZW5kaWYKLQogICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoY29uc3QgU3RyaW5nJiB2
aXNpdGVkVVJMKTsKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChFd2tfQ2FjaGVfTW9kZWwpOwpA
QCAtOTAsOSArODMsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAgICAg
UmVmUHRyPFdlYktpdDo6TmV0d29ya0luZm9Qcm92aWRlcj4gbV9uZXR3b3JrSW5mb1Byb3ZpZGVy
OwogI2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBSZWZQdHI8V2ViS2l0OjpWaWJy
YXRpb25Qcm92aWRlcj4gbV92aWJyYXRpb25Qcm92aWRlcjsKLSNlbmRpZgogICAgIE93blB0cjxX
ZWJLaXQ6OkRvd25sb2FkTWFuYWdlckVmbD4gbV9kb3dubG9hZE1hbmFnZXI7CiAgICAgT3duUHRy
PFdlYktpdDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw+IG1fcmVxdWVzdE1hbmFnZXJDbGllbnQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IGVk
ZmFkMGQ0NDhiZDQ4ODY5NTkwYjAyNzU5Y2UwMmVhZDQ5OTExNjMuLmIyYWI0ZmEzMmViOGU3ODc4
YzhmOWE2Y2EyNzc1Njc1ODRhZGYzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuaApAQCAtMjcsNiArMjcsNyBAQAogICogVGhlIGZvbGxvd2luZyBzaWdu
YWxzIChzZWUgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKCkpIGFyZSBlbWl0dGVkOgog
ICoKICAqIC0gImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQg
dGhlIHZpZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0IGhhZCBjaGFuZ2VkLgorICogLSAiY2FuY2Vs
LHZpYnJhdGlvbiIsIHZvaWQ6IHJlcXVlc3QgdG8gY2FuY2VsIHRoZSB2aWJyYXRpb24uCiAgKiAt
ICJjbG9zZSx3aW5kb3ciLCB2b2lkOiB3aW5kb3cgaXMgY2xvc2VkLgogICogLSAiY3JlYXRlLHdp
bmRvdyIsIEV2YXNfT2JqZWN0Kio6IGEgbmV3IHdpbmRvdyBpcyBjcmVhdGVkLgogICogLSAiZG93
bmxvYWQsY2FuY2VsbGVkIiwgRXdrX0Rvd25sb2FkX0pvYio6IHJlcG9ydHMgdGhhdCBhIGRvd25s
b2FkIHdhcyBlZmZlY3RpdmVseSBjYW5jZWxsZWQuCkBAIC02OCw2ICs2OSw3IEBACiAgKiAtICJ0
b29sdGlwLHRleHQsc2V0IiwgY29uc3QgY2hhcio6IHRvb2x0aXAgd2FzIHNldC4KICAqIC0gInRv
b2x0aXAsdGV4dCx1bnNldCIsIHZvaWQ6IHRvb2x0aXAgd2FzIHVuc2V0LgogICogLSAidXJsLGNo
YW5nZWQiLCBjb25zdCBjaGFyKjogdXJsIG9mIHRoZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgor
ICogLSAidmlicmF0ZSIsIHVpbnQ2NF90KjogcmVxdWVzdCB0byB2aWJyYXRlLiAodmFsdWUgaXMg
dmlicmF0aW9uIHRpbWUpCiAgKiAtICJ3ZWJwcm9jZXNzLGNyYXNoZWQiLCBFaW5hX0Jvb2wqOiBl
eHBlY3RzIGEgQGMgRUlOQV9UUlVFIGlmIHdlYiBwcm9jZXNzIGNyYXNoIGlzIGhhbmRsZWQ7IEBj
IEVJTkFfRkFMU0UsIG90aGVyd2lzZS4KICAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKaW5k
ZXggMjdlNDZkYzFlNzBmOGI2MWFkMGU0ZjY3OWQ3NTNhOThmZGM0ZDkyZC4uOGNhMGZmNzE2NTZj
MDQwNGIyNDdkYzQ3Nzc1YTkyMGU2ZDhmNTMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcApA
QCAtNzksODYgKzc5LDYgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb250ZXh0X3Vy
bF9zY2hlbWVfcmVnaXN0ZXIpCiAgICAgQVNTRVJUX1NUUkVRKCJGb28iLCBld2tfdmlld190aXRs
ZV9nZXQod2ViVmlldygpKSk7CiB9CiAKLXN0cnVjdCBWaWJyYXRpb25DYkRhdGEgewotICAgIGJv
b2wgZGlkUmVjZWl2ZVZpYnJhdGVDYWxsYmFjazsgLy8gV2hldGhlciB0aGUgdmlicmF0aW9uIGV2
ZW50IHJlY2VpdmVkLgotICAgIGJvb2wgZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNr
OyAvLyBXaGV0aGVyIHRoZSBjYW5jZWwgdmlicmF0aW9uIGV2ZW50IHJlY2VpdmVkLgotICAgIHVu
c2lnbmVkIHZpYnJhdGVDYWxsZWRDb3VudDsgLy8gVmlicmF0ZSBjYWxsYmFja3MgY291bnQuCi0g
ICAgdWludDY0X3QgZXhwZWN0ZWRWaWJyYXRpb25UaW1lOyAvLyBFeHBlY3RlZCB2aWJyYXRpb24g
dGltZS4KLX07Ci0KLXN0YXRpYyB2b2lkIHZpYnJhdGVDYWxsYmFjayh1aW50NjRfdCB2aWJyYXRp
b25UaW1lLCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBWaWJyYXRpb25DYkRhdGEqIGRhdGEgPSBz
dGF0aWNfY2FzdDxWaWJyYXRpb25DYkRhdGEqPih1c2VyRGF0YSk7Ci0gICAgaWYgKHZpYnJhdGlv
blRpbWUgPT0gZGF0YS0+ZXhwZWN0ZWRWaWJyYXRpb25UaW1lKQotICAgICAgICBkYXRhLT5kaWRS
ZWNlaXZlVmlicmF0ZUNhbGxiYWNrID0gdHJ1ZTsKLSAgICBkYXRhLT52aWJyYXRlQ2FsbGVkQ291
bnQrKzsKLX0KLQotc3RhdGljIHZvaWQgY2FuY2VsVmlicmF0aW9uQ2FsbGJhY2sodm9pZCogdXNl
ckRhdGEpCi17Ci0gICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0
aW9uQ2JEYXRhKj4odXNlckRhdGEpOwotICAgIGRhdGEtPmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRp
b25DYWxsYmFjayA9IHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGxvYWRWaWJyYXRpb25IVE1MU3Ry
aW5nKEV2YXNfT2JqZWN0KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiB2aWJyYXRpb25QYXR0ZXJuLCBi
b29sIHdhaXRGb3JWaWJyYXRpb25FdmVudCwgVmlicmF0aW9uQ2JEYXRhKiBkYXRhKQotewotICAg
IGNvbnN0IGNoYXIqIGNvbnRlbnQgPQotICAgICAgICAiPGh0bWw+PGhlYWQ+PHNjcmlwdCB0eXBl
PSd0ZXh0L2phdmFzY3JpcHQnPmZ1bmN0aW9uIHZpYnJhdGUoKSB7IG5hdmlnYXRvci52aWJyYXRl
KCVzKTsiCi0gICAgICAgICIgZG9jdW1lbnQudGl0bGUgPSBcIkxvYWRlZFwiOyB9PC9zY3JpcHQ+
PC9oZWFkPjxib2R5IG9ubG9hZD0ndmlicmF0ZSgpJz48L2JvZHk+PC9odG1sPiI7Ci0KLSAgICBk
YXRhLT5kaWRSZWNlaXZlVmlicmF0ZUNhbGxiYWNrID0gZmFsc2U7Ci0gICAgZGF0YS0+ZGlkUmVj
ZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrID0gZmFsc2U7Ci0gICAgZGF0YS0+dmlicmF0ZUNh
bGxlZENvdW50ID0gMDsKLSAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0gZWluYV9zdHJidWZfbmV3
KCk7Ci0gICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50ZihidWZmZXIsIGNvbnRlbnQsIHZpYnJh
dGlvblBhdHRlcm4pOwotICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldywgZWlu
YV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAwLCAwKTsKLSAgICBlaW5hX3N0cmJ1Zl9mcmVl
KGJ1ZmZlcik7Ci0KLSAgICBpZiAoIXdhaXRGb3JWaWJyYXRpb25FdmVudCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgd2hpbGUgKCFkYXRhLT5kaWRSZWNlaXZlVmlicmF0ZUNhbGxiYWNrICYmICFk
YXRhLT5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uQ2FsbGJhY2spCi0gICAgICAgIGVjb3JlX21h
aW5fbG9vcF9pdGVyYXRlKCk7Ci19Ci0KLVRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfY29u
dGV4dF92aWJyYXRpb25fY2xpZW50X2NhbGxiYWNrc19zZXQpCi17Ci0gICAgVmlicmF0aW9uQ2JE
YXRhIGRhdGEgPSB7IGZhbHNlLCBmYWxzZSwgMCwgNTAwMCB9OwotICAgIGV3a19jb250ZXh0X3Zp
YnJhdGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldChld2tfdmlld19jb250ZXh0X2dldCh3ZWJWaWV3
KCkpLCB2aWJyYXRlQ2FsbGJhY2ssIGNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrLCAmZGF0YSk7Ci0K
LSAgICAvLyBWaWJyYXRlIGZvciA1IHNlY29uZHMuCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJp
bmcod2ViVmlldygpLCAiNTAwMCIsIHRydWUsICZkYXRhKTsKLSAgICBBU1NFUlRfVFJVRShkYXRh
LmRpZFJlY2VpdmVWaWJyYXRlQ2FsbGJhY2spOwotCi0gICAgLy8gQ2FuY2VsIGFueSBleGlzdGlu
ZyB2aWJyYXRpb25zLgotICAgIGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKHdlYlZpZXcoKSwgIjAi
LCB0cnVlLCAmZGF0YSk7Ci0gICAgQVNTRVJUX1RSVUUoZGF0YS5kaWRSZWNlaXZlQ2FuY2VsVmli
cmF0aW9uQ2FsbGJhY2spOwotCi0gICAgLy8gVGhpcyBjYXNlIHRoZSBwYXR0ZXJuIHdpbGwgY2F1
c2UgdGhlIGRldmljZSB0byB2aWJyYXRlIGZvciAyMDAgbXMsIGJlIHN0aWxsIGZvciAxMDAgbXMs
IGFuZCB0aGVuIHZpYnJhdGUgZm9yIDUwMDAgbXMuCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJp
bmcod2ViVmlldygpLCAiWzIwMCwgMTAwLCA1MDAwXSIsIHRydWUsICZkYXRhKTsKLSAgICBBU1NF
UlRfRVEoMiwgZGF0YS52aWJyYXRlQ2FsbGVkQ291bnQpOwotICAgIEFTU0VSVF9UUlVFKGRhdGEu
ZGlkUmVjZWl2ZVZpYnJhdGVDYWxsYmFjayk7Ci0KLSAgICAvLyBDYW5jZWwgb3V0c3RhbmRpbmcg
dmlicmF0aW9uIHBhdHRlcm4uCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygp
LCAiWzBdIiwgdHJ1ZSwgJmRhdGEpOwotICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNh
bmNlbFZpYnJhdGlvbkNhbGxiYWNrKTsKLQotICAgIC8vIFN0b3AgbGlzdGVuaW5nIGZvciB2aWJy
YXRpb24gZXZlbnRzLCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbiB3aXRoIG51bGwgZm9yIHRoZSBj
YWxsYmFja3MuCi0gICAgZXdrX2NvbnRleHRfdmlicmF0aW9uX2NsaWVudF9jYWxsYmFja3Nfc2V0
KGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSksIDAsIDAsICZkYXRhKTsKLQotICAgIC8v
IE1ha2Ugc3VyZSB3ZSBkb24ndCByZWNlaXZlIHZpYnJhdGlvbiBldmVudC4KLSAgICBsb2FkVmli
cmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJbNTAwMF0iLCBmYWxzZSwgJmRhdGEpOwotICAg
IEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJMb2FkZWQiKSk7Ci0gICAgQVNT
RVJUX1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7Ci0gICAg
QVNTRVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZVZpYnJhdGVDYWxsYmFjayk7Ci0KLSAgICAvLyBN
YWtlIHN1cmUgd2UgZG9uJ3QgcmVjZWl2ZSBjYW5jZWwgdmlicmF0aW9uIGV2ZW50LgotICAgIGxv
YWRWaWJyYXRpb25IVE1MU3RyaW5nKHdlYlZpZXcoKSwgIjAiLCBmYWxzZSwgJmRhdGEpOwotICAg
IEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJMb2FkZWQiKSk7Ci0gICAgQVNT
RVJUX1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7Ci0gICAg
QVNTRVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKTsKLX0K
LQogVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb250ZXh0X2NhY2hlX21vZGVsKQogewog
ICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rl
c3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA4MDI0MGQyYWU0YTgxYTFkNWE5YWQwNjYxYjc5YTYw
NWIyYmNlNWJjLi4xOTk5NzBkMjljN2RhMGZhMGRkYmI2ZTJjMWQxYzJhYjYwMjUxYTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJf
dmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVz
dF9ld2syX3ZpZXcuY3BwCkBAIC03OTcsMyArNzk3LDg3IEBAIFRFU1RfRihFV0syVW5pdFRlc3RC
YXNlLCBld2tfdmlld19wYWdpbmF0aW9uKQogICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVu
dmlyb25tZW50LT5kZWZhdWx0VGVzdFBhZ2VVcmwoKSkpOwogICAgIEFTU0VSVF9FUShFV0tfUEFH
SU5BVElPTl9NT0RFX1VOUEFHSU5BVEVELCBld2tfdmlld19wYWdpbmF0aW9uX21vZGVfZ2V0KHdl
YlZpZXcoKSkpOwogfQorCitzdHJ1Y3QgVmlicmF0aW9uQ2JEYXRhIHsKKyAgICBib29sIGRpZFJl
Y2VpdmVWaWJyYXRlOyAvLyBXaGV0aGVyIHRoZSB2aWJyYXRpb24gZXZlbnQgcmVjZWl2ZWQuCisg
ICAgYm9vbCBkaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uOyAvLyBXaGV0aGVyIHRoZSBjYW5jZWwg
dmlicmF0aW9uIGV2ZW50IHJlY2VpdmVkLgorICAgIHVuc2lnbmVkIHZpYnJhdGVDYWxsZWRDb3Vu
dDsgLy8gVmlicmF0ZSBjYWxsYmFja3MgY291bnQuCisgICAgdWludDY0X3QgZXhwZWN0ZWRWaWJy
YXRpb25UaW1lOyAvLyBFeHBlY3RlZCB2aWJyYXRpb24gdGltZS4KK307CisKK3N0YXRpYyB2b2lk
IG9uVmlicmF0ZSh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8p
Cit7CisgICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JE
YXRhKj4odXNlckRhdGEpOworICAgIHVpbnQ2NF90KiB2aWJyYXRpb25UaW1lID0gc3RhdGljX2Nh
c3Q8dWludDY0X3QqPihldmVudEluZm8pOworICAgIGlmICgqdmlicmF0aW9uVGltZSA9PSBkYXRh
LT5leHBlY3RlZFZpYnJhdGlvblRpbWUpCisgICAgICAgIGRhdGEtPmRpZFJlY2VpdmVWaWJyYXRl
ID0gdHJ1ZTsKKyAgICBkYXRhLT52aWJyYXRlQ2FsbGVkQ291bnQrKzsKK30KKworc3RhdGljIHZv
aWQgb25DYW5jZWxWaWJyYXRpb24odm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCop
Cit7CisgICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JE
YXRhKj4odXNlckRhdGEpOworICAgIGRhdGEtPmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb24gPSB0
cnVlOworfQorCitzdGF0aWMgdm9pZCBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyhFdmFzX09iamVj
dCogd2ViVmlldywgY29uc3QgY2hhciogdmlicmF0aW9uUGF0dGVybiwgYm9vbCB3YWl0Rm9yVmli
cmF0aW9uRXZlbnQsIFZpYnJhdGlvbkNiRGF0YSogZGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiBj
b250ZW50ID0KKyAgICAgICAgIjxodG1sPjxoZWFkPjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2Ny
aXB0Jz5mdW5jdGlvbiB2aWJyYXRlKCkgeyBuYXZpZ2F0b3IudmlicmF0ZSglcyk7IgorICAgICAg
ICAiIGRvY3VtZW50LnRpdGxlID0gXCJMb2FkZWRcIjsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBv
bmxvYWQ9J3ZpYnJhdGUoKSc+PC9ib2R5PjwvaHRtbD4iOworCisgICAgZGF0YS0+ZGlkUmVjZWl2
ZVZpYnJhdGUgPSBmYWxzZTsKKyAgICBkYXRhLT5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uID0g
ZmFsc2U7CisgICAgZGF0YS0+dmlicmF0ZUNhbGxlZENvdW50ID0gMDsKKyAgICBFaW5hX1N0cmJ1
ZiogYnVmZmVyID0gZWluYV9zdHJidWZfbmV3KCk7CisgICAgZWluYV9zdHJidWZfYXBwZW5kX3By
aW50ZihidWZmZXIsIGNvbnRlbnQsIHZpYnJhdGlvblBhdHRlcm4pOworICAgIGV3a192aWV3X2h0
bWxfc3RyaW5nX2xvYWQod2ViVmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAw
LCAwKTsKKyAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7CisKKyAgICBpZiAoIXdhaXRGb3JW
aWJyYXRpb25FdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCFkYXRhLT5kaWRS
ZWNlaXZlVmlicmF0ZSAmJiAhZGF0YS0+ZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbikKKyAgICAg
ICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJh
c2UsIGV3a19jb250ZXh0X3ZpYnJhdGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldCkKK3sKKyAgICBW
aWJyYXRpb25DYkRhdGEgZGF0YSA9IHsgZmFsc2UsIGZhbHNlLCAwLCA1MDAwIH07CisgICAgZXZh
c19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgInZpYnJhdGUiLCBvblZpYnJh
dGUsICZkYXRhKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygp
LCAiY2FuY2VsLHZpYnJhdGlvbiIsIG9uQ2FuY2VsVmlicmF0aW9uLCAmZGF0YSk7CisKKyAgICAv
LyBWaWJyYXRlIGZvciA1IHNlY29uZHMuCisgICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2Vi
VmlldygpLCAiNTAwMCIsIHRydWUsICZkYXRhKTsKKyAgICBBU1NFUlRfVFJVRShkYXRhLmRpZFJl
Y2VpdmVWaWJyYXRlKTsKKworICAgIC8vIENhbmNlbCBhbnkgZXhpc3RpbmcgdmlicmF0aW9ucy4K
KyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICIwIiwgdHJ1ZSwgJmRhdGEp
OworICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbik7CisKKyAg
ICAvLyBUaGlzIGNhc2UgdGhlIHBhdHRlcm4gd2lsbCBjYXVzZSB0aGUgZGV2aWNlIHRvIHZpYnJh
dGUgZm9yIDIwMCBtcywgYmUgc3RpbGwgZm9yIDEwMCBtcywgYW5kIHRoZW4gdmlicmF0ZSBmb3Ig
NTAwMCBtcy4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJbMjAwLCAx
MDAsIDUwMDBdIiwgdHJ1ZSwgJmRhdGEpOworICAgIEFTU0VSVF9FUSgyLCBkYXRhLnZpYnJhdGVD
YWxsZWRDb3VudCk7CisgICAgQVNTRVJUX1RSVUUoZGF0YS5kaWRSZWNlaXZlVmlicmF0ZSk7CisK
KyAgICAvLyBDYW5jZWwgb3V0c3RhbmRpbmcgdmlicmF0aW9uIHBhdHRlcm4uCisgICAgbG9hZFZp
YnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAiWzBdIiwgdHJ1ZSwgJmRhdGEpOworICAgIEFT
U0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbik7CisKKyAgICAvLyBTdG9w
IGxpc3RlbmluZyBmb3IgdmlicmF0aW9uIGV2ZW50cywgYnkgY2FsbGluZyB0aGUgZnVuY3Rpb24g
d2l0aCBudWxsIGZvciB0aGUgY2FsbGJhY2tzLgorICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2RlbCh3ZWJWaWV3KCksICJ2aWJyYXRlIiwgb25WaWJyYXRlKTsKKyAgICBldmFzX29iamVj
dF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiY2FuY2VsLHZpYnJhdGlvbiIsIG9uQ2Fu
Y2VsVmlicmF0aW9uKTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCByZWNlaXZlIHZpYnJh
dGlvbiBldmVudC4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJbNTAw
MF0iLCBmYWxzZSwgJmRhdGEpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdl
ZFRvKCJMb2FkZWQiKSk7CisgICAgQVNTRVJUX1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190aXRs
ZV9nZXQod2ViVmlldygpKSk7CisgICAgQVNTRVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZVZpYnJh
dGUpOworCisgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHJlY2VpdmUgY2FuY2VsIHZpYnJhdGlv
biBldmVudC4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICIwIiwgZmFs
c2UsICZkYXRhKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiTG9h
ZGVkIikpOworICAgIEFTU0VSVF9TVFJFUSgiTG9hZGVkIiwgZXdrX3ZpZXdfdGl0bGVfZ2V0KHdl
YlZpZXcoKSkpOworICAgIEFTU0VSVF9GQUxTRShkYXRhLmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRp
b24pOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggZmU2
OWYyYjdlMDNiZDliMTdkNTI2OTYzZDgzYzA1YmM1N2M0ZjAxMS4uMTE2NTExNjA2ZGI0OWYxOGY1
ZjE4ZjYyMjcyOWNlZWUzZjBhOTQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmNwcApAQCAtNzksMTAgKzc5LDYgQEAKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotI2luY2x1ZGUgIldl
YlZpYnJhdGlvblByb3h5LmgiCi0jZW5kaWYKLQogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTE2Miw5ICsxNTgsNiBAQCBX
ZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0
cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIFVTRShTT1VQKQogICAgIG1fc291cFJlcXVlc3RN
YW5hZ2VyUHJveHkgPSBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwog
I2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBtX3ZpYnJhdGlvblByb3h5ID0gV2Vi
VmlicmF0aW9uUHJveHk6OmNyZWF0ZSh0aGlzKTsKLSNlbmRpZgogICAgIAogI2lmICFMT0dfRElT
QUJMRUQKICAgICBXZWJLaXQ6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCk7CkBA
IC0yNDEsMTEgKzIzNCw2IEBAIFdlYkNvbnRleHQ6On5XZWJDb250ZXh0KCkKICAgICBtX3NvdXBS
ZXF1ZXN0TWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsKICNlbmRpZgogCi0jaWYgRU5BQkxF
KFZJQlJBVElPTikKLSAgICBtX3ZpYnJhdGlvblByb3h5LT5pbnZhbGlkYXRlKCk7Ci0gICAgbV92
aWJyYXRpb25Qcm94eS0+Y2xlYXJDb250ZXh0KCk7Ci0jZW5kaWYKLQogICAgIGludmFsaWRhdGVD
YWxsYmFja01hcChtX2RpY3Rpb25hcnlDYWxsYmFja3MpOwogCiAgICAgcGxhdGZvcm1JbnZhbGlk
YXRlQ29udGV4dCgpOwpAQCAtNTUwLDkgKzUzOCw2IEBAIHZvaWQgV2ViQ29udGV4dDo6ZGlzY29u
bmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogI2lmIFVTRShTT1VQKQogICAg
IG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKICNlbmRpZgotI2lmIEVO
QUJMRShWSUJSQVRJT04pCi0gICAgbV92aWJyYXRpb25Qcm94eS0+aW52YWxpZGF0ZSgpOwotI2Vu
ZGlmCiAKICAgICAvLyBXaGVuIG91dCBvZiBwcm9jZXNzIHBsdWctaW5zIGFyZSBlbmFibGVkLCB3
ZSBkb24ndCB3YW50IHRvIGludmFsaWRhdGUgdGhlIHBsdWctaW4gc2l0ZSBkYXRhCiAgICAgLy8g
bWFuYWdlciBqdXN0IGJlY2F1c2UgdGhlIHdlYiBwcm9jZXNzIGNyYXNoZXMgc2luY2UgaXQncyBu
b3QgaW52b2x2ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCAwZDQ0
NDU0YmFiNjNhNjE2M2IzNjM2Zjg2MWEzNWI0N2ViMDM0NDhmLi5kODk0YTAwYTE4Yjk0NDM3Yjc1
NDU1MTc0MmYzMThlZWFhNGY5YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0
LmgKQEAgLTY5LDkgKzY5LDYgQEAgY2xhc3MgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTsK
ICNpZiBVU0UoU09VUCkKIGNsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OwogI2VuZGlm
Ci0jaWYgRU5BQkxFKFZJQlJBVElPTikKLWNsYXNzIFdlYlZpYnJhdGlvblByb3h5OwotI2VuZGlm
CiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczsKICAgICAKQEAgLTIwMyw5ICsyMDAsNiBAQCBwdWJsaWM6CiAjaWYgVVNFKFNPVVApCiAg
ICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkqIHNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5nZXQoKTsgfQogI2VuZGlm
Ci0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBXZWJWaWJyYXRpb25Qcm94eSogdmlicmF0aW9u
UHJveHkoKSBjb25zdCB7IHJldHVybiBtX3ZpYnJhdGlvblByb3h5LmdldCgpOyB9Ci0jZW5kaWYK
IAogICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsKICAgICAgICAgdW5zaWduZWQgd2tWaWV3Q291bnQ7
CkBAIC0zNjgsOSArMzYyLDYgQEAgcHJpdmF0ZToKICNpZiBVU0UoU09VUCkKICAgICBSZWZQdHI8
V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+IG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHk7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotICAgIFJlZlB0cjxXZWJWaWJyYXRpb25Qcm94
eT4gbV92aWJyYXRpb25Qcm94eTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGJv
b2wgbV9zaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCAxNDU2NjExY2IwNzljYWVlOTJhZDkyMDYwNWRjZTIwNWI1
MzFiYzQ2Li4yYjYyZWFmNmQzNWVmZjQ0ZDA4NDkyYTljZDM1ZmVkOGI3MzU1NTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTExLDYgKzExMSwxMCBA
QAogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lm
IEVOQUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHkuaCIKKyNlbmRp
ZgorCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIu
aD4KICNlbmRpZgpAQCAtNDQ3LDYgKzQ1MSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2Uo
KQogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBpZiAobV92aWJy
YXRpb24pIHsKKyAgICAgICAgbV92aWJyYXRpb24tPmludmFsaWRhdGUoKTsKKyAgICAgICAgbV92
aWJyYXRpb24gPSAwOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKG1fb3BlblBhbmVsUmVzdWx0
TGlzdGVuZXIpIHsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0
ZSgpOwogICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gMDsKQEAgLTE4NjUsNiAr
MTg3NiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29yZUlQQzo6TQogICAgIH0KICNlbmRpZgogCisjaWYg
RU5BQkxFKFZJQlJBVElPTikKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VD
bGFzc1dlYlZpYnJhdGlvblByb3h5PigpKSB7CisgICAgICAgIGlmIChXZWJWaWJyYXRpb25Qcm94
eSogdmlicmF0aW9uID0gdGhpcy0+dmlicmF0aW9uKCkpCisgICAgICAgICAgICB2aWJyYXRpb24t
PmRpZFJlY2VpdmVXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlE
LCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgZGlkUmVj
ZWl2ZVdlYlBhZ2VQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBkZWNvZGVyKTsK
IH0KIApAQCAtMjg0MSw2ICsyODYwLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREcmF3KCkK
ICAgICBtX3VpQ2xpZW50LmRpZERyYXcodGhpcyk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojph
ZGRNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIENvcmVJUEM6Ok1lc3NhZ2VSZWNlaXZlciog
bWVzc2FnZVJlY2VpdmVyKQoreworICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLmFkZE1lc3NhZ2VS
ZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELCBtZXNzYWdlUmVjZWl2
ZXIpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKENvcmVJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5h
dGlvbklEKQoreworICAgIG1fbWVzc2FnZVJlY2VpdmVyTWFwLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklEKTsKK30KKwogLy8gSW5zcGVjdG9y
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMjg2NSw2ICsyODk0LDE1IEBAIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkqIFdlYlBhZ2VQcm94eTo6ZnVsbFNjcmVlbk1hbmFnZXIoKQogfQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorV2ViVmlicmF0aW9uUHJveHkqIFdlYlBh
Z2VQcm94eTo6dmlicmF0aW9uKCkKK3sKKyAgICBpZiAoIW1fdmlicmF0aW9uKQorICAgICAgICBt
X3ZpYnJhdGlvbiA9IFdlYlZpYnJhdGlvblByb3h5OjpjcmVhdGUodGhpcyk7CisgICAgcmV0dXJu
IG1fdmlicmF0aW9uLmdldCgpOworfQorI2VuZGlmCisKIC8vIEJhY2tGb3J3YXJkTGlzdAogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRBZGRJdGVtKHVpbnQ2NF90IGl0ZW1JRCkKQEAg
LTM1OTgsNiArMzYzNiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKCkK
ICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgaWYgKG1fdmlicmF0
aW9uKSB7CisgICAgICAgIG1fdmlicmF0aW9uLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fdmli
cmF0aW9uID0gbnVsbHB0cjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChtX29wZW5QYW5lbFJl
c3VsdExpc3RlbmVyKSB7CiAgICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFs
aWRhdGUoKTsKICAgICAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjhlMzRiYzkwOTFiNGY2
ZGFiNDAwODlmMzUxNWRmOTA0NTE2ZTFmMi4uOTVmNWMzZjhjMTgwNzYwYTlmN2Q2ODY2NTliZGU2
MmU2YjlmMzU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAt
MzksNiArMzksOCBAQAogI2luY2x1ZGUgIlF0TmV0d29ya1JlcXVlc3REYXRhLmgiCiAjZW5kaWYK
ICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCisjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVBy
b2Nlc3NJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgpAQCAtMTUw
LDYgKzE1Miw5IEBAIGNsYXNzIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CiBjbGFz
cyBXZWJQYWdlR3JvdXA7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJVUkxSZXF1
ZXN0OworI2lmIEVOQUJMRShWSUJSQVRJT04pCitjbGFzcyBXZWJWaWJyYXRpb25Qcm94eTsKKyNl
bmRpZgogY2xhc3MgV2ViV2hlZWxFdmVudDsKIHN0cnVjdCBBdHRyaWJ1dGVkU3RyaW5nOwogc3Ry
dWN0IENvbG9yU3BhY2VEYXRhOwpAQCAtMjQ0LDcgKzI0OSw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94
eQogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAgICwgcHVibGljIFdlYkNvbG9yQ2hv
b3NlclByb3h5OjpDbGllbnQKICNlbmRpZgotICAgICwgcHVibGljIFdlYlBvcHVwTWVudVByb3h5
OjpDbGllbnQgeworICAgICwgcHVibGljIFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQsIHByaXZh
dGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
VHlwZSBBUElUeXBlID0gVHlwZVBhZ2U7CiAKQEAgLTI2MSw2ICsyNjYsOSBAQCBwdWJsaWM6CiAK
ICAgICBXZWJCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fYmFja0ZvcndhcmRMaXN0LmdldCgpOyB9CiAKKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihDb3JlSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyKik7CisgICAgdm9pZCByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoQ29yZUlQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVjdG9yKCk7CiAjZW5kaWYKQEAgLTI2OSw2ICsy
NzcsMTAgQEAgcHVibGljOgogICAgIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIGZ1bGxTY3Jl
ZW5NYW5hZ2VyKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgV2ViVmli
cmF0aW9uUHJveHkqIHZpYnJhdGlvbigpOworI2VuZGlmCisKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKICAgICB2b2lkIGluaXRpYWxpemVDb250ZXh0TWVudUNsaWVudChjb25zdCBXS1BhZ2VD
b250ZXh0TWVudUNsaWVudCopOwogI2VuZGlmCkBAIC0xMDQzLDYgKzEwNTUsOCBAQCBwcml2YXRl
OgogICAgIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudCBtX2NvbnRleHRNZW51Q2xpZW50OwogI2Vu
ZGlmCiAKKyAgICBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXJNYXAgbV9tZXNzYWdlUmVjZWl2ZXJN
YXA7CisKICAgICBPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gbV9kcmF3aW5nQXJlYTsKICAgICBS
ZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CiAgICAgUmVmUHRyPFdlYlBhZ2VHcm91
cD4gbV9wYWdlR3JvdXA7CkBAIC0xMDYzLDYgKzEwNzcsMTAgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4gbV9mdWxsU2NyZWVuTWFuYWdlcjsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBSZWZQdHI8V2ViVmlicmF0aW9uUHJveHk+
IG1fdmlicmF0aW9uOworI2VuZGlmCisKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Vm9p
ZENhbGxiYWNrPiA+IG1fdm9pZENhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8RGF0YUNhbGxiYWNrPiA+IG1fZGF0YUNhbGxiYWNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+ID4gbV9zdHJpbmdDYWxsYmFja3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNwcAppbmRleCA0YTY0NWQ1NDM3
N2Y3MjMwZGRlNGY2ZTAwOTg5ZWM1M2MzNDgzMjg4Li5hYzFiYTlkNjc5MjVlMWMzOWJkNmQzOGZi
MWFkNTM1ZWZlMTlmMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
VmlicmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJy
YXRpb25Qcm94eS5jcHAKQEAgLTI4LDI0ICsyOCwyNSBAQAogCiAjaWYgRU5BQkxFKFZJQlJBVElP
TikKIAotI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2VzLmgiCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1QYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBXZWJWaWJyYXRpb25Qcm94eTo6
Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCitQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5
PiBXZWJWaWJyYXRpb25Qcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSogcGFnZSkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpYnJhdGlvblByb3h5KGNvbnRleHQpKTsKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlZpYnJhdGlvblByb3h5KHBhZ2UpKTsKIH0KIAotV2ViVmlicmF0
aW9uUHJveHk6OldlYlZpYnJhdGlvblByb3h5KFdlYkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBt
X2NvbnRleHQoY29udGV4dCkKK1dlYlZpYnJhdGlvblByb3h5OjpXZWJWaWJyYXRpb25Qcm94eShX
ZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKIHsKLSAgICBtX2NvbnRleHQt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlicmF0aW9uUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgdGhpcyk7CisgICAgbV9wYWdlLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlZpYnJhdGlvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCksIHRoaXMpOwogfQogCiBXZWJWaWJyYXRpb25Qcm94eTo6fldlYlZpYnJhdGlvblBy
b3h5KCkKIHsKKyAgICBtX3BhZ2UtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
VmlicmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CiB9CiAKIHZvaWQgV2ViVmlicmF0aW9uUHJveHk6OmludmFsaWRhdGUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaAppbmRleCA1YzZkZTE3ZDcyMTA0ZmFk
MDQ0NjBjMTBiZTM0MWVmOTUyMWUxM2ZhLi4wMDMxZGZkMzY2Yzk2OWM3NDc3OTA1MGQ3ZDJmY2Ni
NGQxZmI1MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0
aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJv
eHkuaApAQCAtMzUsMzUgKzM1LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBX
ZWJDb250ZXh0OworY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJWaWJyYXRpb25Qcm94
eSA6IHB1YmxpYyBBUElPYmplY3QsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVZpYnJhdGlvbjsK
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBjcmVhdGUoV2ViQ29u
dGV4dCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBjcmVhdGUo
V2ViUGFnZVByb3h5Kik7CiAgICAgdmlydHVhbCB+V2ViVmlicmF0aW9uUHJveHkoKTsKIAogICAg
IHZvaWQgaW52YWxpZGF0ZSgpOwotICAgIHZvaWQgY2xlYXJDb250ZXh0KCkgeyBtX2NvbnRleHQg
PSAwOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS1ZpYnJhdGlvblBy
b3ZpZGVyKik7CiAKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViVmlicmF0aW9u
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViVmlicmF0aW9u
UHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViVmli
cmF0aW9uUHJveHkoV2ViQ29udGV4dCopOworICAgIGV4cGxpY2l0IFdlYlZpYnJhdGlvblByb3h5
KFdlYlBhZ2VQcm94eSopOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBBUElUeXBlOyB9CiAKICAgICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6
Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKIAotICAgIC8v
IEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29k
ZXImKTsKLQogICAgIHZvaWQgdmlicmF0ZSh1aW50NjRfdCB2aWJyYXRpb25UaW1lKTsKICAgICB2
b2lkIGNhbmNlbFZpYnJhdGlvbigpOwogCi0gICAgV2ViQ29udGV4dCogbV9jb250ZXh0OworICAg
IFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFdlYlZpYnJhdGlvblByb3ZpZGVyIG1fcHJvdmlk
ZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJh
dGlvbkNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlv
bkNsaWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVmYjE2MWUyMWFjZTI5MGU2ZWE2YTMxN2U5ZDc0
N2I5Y2Q0YTYxNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNwcApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xpZW50RWZs
LmgiCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSAiRXdrVmlld0ltcGwuaCIK
KyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1ZpYnJhdGlvbi5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OworCitzdGF0aWMgaW5saW5lIFZpYnJhdGlvbkNsaWVudEVmbCog
dG9WaWJyYXRpb25DbGllbnQoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2xpZW50RWZsKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOworfQorCit2b2lkIFZpYnJhdGlvbkNsaWVudEVmbDo6dmlicmF0ZUNhbGxiYWNrKFdL
VmlicmF0aW9uUmVmLCB1aW50NjRfdCB2aWJyYXRpb25UaW1lLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQoreworICAgIHRvVmlicmF0aW9uQ2xpZW50KGNsaWVudEluZm8pLT5tX3ZpZXdJbXBsLT52
aWJyYXRlKHZpYnJhdGlvblRpbWUpOworfQorCit2b2lkIFZpYnJhdGlvbkNsaWVudEVmbDo6Y2Fu
Y2VsVmlicmF0aW9uQ2FsbGJhY2soV0tWaWJyYXRpb25SZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCit7CisgICAgdG9WaWJyYXRpb25DbGllbnQoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPmNh
bmNlbFZpYnJhdGlvbigpOworfQorCitQYXNzT3duUHRyPFZpYnJhdGlvbkNsaWVudEVmbD4gVmli
cmF0aW9uQ2xpZW50RWZsOjpjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQoreworICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgVmlicmF0aW9uQ2xpZW50RWZsKHZpZXdJbXBsKSk7Cit9CisKK1Zp
YnJhdGlvbkNsaWVudEVmbDo6VmlicmF0aW9uQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKiB2aWV3SW1w
bCkKKyAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCit7CisgICAgQVNTRVJUKG1fdmlld0ltcGwp
OworCisgICAgV0tQYWdlUmVmIHBhZ2VSZWYgPSBtX3ZpZXdJbXBsLT53a1BhZ2UoKTsKKyAgICBB
U1NFUlQocGFnZVJlZik7CisKKyAgICBXS1ZpYnJhdGlvblJlZiB3a1ZpYnJhdGlvbiA9IFdLUGFn
ZUdldFZpYnJhdGlvbihwYWdlUmVmKTsKKyAgICBBU1NFUlQod2tWaWJyYXRpb24pOworCisgICAg
V0tWaWJyYXRpb25Qcm92aWRlciB3a1ZpYnJhdGlvblByb3ZpZGVyID0geworICAgICAgICBrV0tW
aWJyYXRpb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uLAorICAgICAgICB0aGlzLCAvLyBjbGllbnRJ
bmZvCisgICAgICAgIHZpYnJhdGVDYWxsYmFjaywKKyAgICAgICAgY2FuY2VsVmlicmF0aW9uQ2Fs
bGJhY2sKKyAgICB9OworICAgIFdLVmlicmF0aW9uU2V0UHJvdmlkZXIod2tWaWJyYXRpb24sICZ3
a1ZpYnJhdGlvblByb3ZpZGVyKTsKK30KKworVmlicmF0aW9uQ2xpZW50RWZsOjp+VmlicmF0aW9u
Q2xpZW50RWZsKCkKK3sKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9IG1fdmlld0ltcGwtPndrUGFn
ZSgpOworICAgIEFTU0VSVChwYWdlUmVmKTsKKworICAgIFdLVmlicmF0aW9uUmVmIHdrVmlicmF0
aW9uID0gV0tQYWdlR2V0VmlicmF0aW9uKHBhZ2VSZWYpOworICAgIEFTU0VSVCh3a1ZpYnJhdGlv
bik7CisKKyAgICBXS1ZpYnJhdGlvblNldFByb3ZpZGVyKHdrVmlicmF0aW9uLCAwKTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShWSUJSQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1ZpYnJhdGlvbkNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9WaWJyYXRpb25DbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNmQzZjc5ZTE5MDk0MDRj
ZDExNjRhNTU3YzkwZTVkM2YwZjdhNTVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25DbGllbnRFZmwuaApAQCAtMCwwICsxLDU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFZpYnJhdGlvbkNsaWVudEVmbF9oCisjZGVmaW5l
IFZpYnJhdGlvbkNsaWVudEVmbF9oCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCitjbGFz
cyBFd2tWaWV3SW1wbDsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFZpYnJhdGlvbkNs
aWVudEVmbCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8VmlicmF0aW9uQ2xpZW50
RWZsPiBjcmVhdGUoRXdrVmlld0ltcGwqKTsKKworICAgIHZpcnR1YWwgflZpYnJhdGlvbkNsaWVu
dEVmbCgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFZpYnJhdGlvbkNsaWVudEVmbChFd2tW
aWV3SW1wbCopOworCisgICAgc3RhdGljIHZvaWQgdmlicmF0ZUNhbGxiYWNrKFdLVmlicmF0aW9u
UmVmLCB1aW50NjRfdCB2aWJyYXRpb25UaW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAg
ICBzdGF0aWMgdm9pZCBjYW5jZWxWaWJyYXRpb25DYWxsYmFjayhXS1ZpYnJhdGlvblJlZiwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CisKKyAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikK
KworI2VuZGlmIC8vIFZpYnJhdGlvbkNsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvVmlicmF0aW9uUHJvdmlkZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyZGU2Mjk2OGMyNTE3ZWIyNjIyN2M3NTE3N2UyYmZkYTJjYmUxM2NjLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvVmlicmF0aW9uUHJvdmlkZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTE3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJWaWJyYXRpb25Qcm92aWRlci5oIgotCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLQot
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLQ29udGV4dC5oIgotI2luY2x1ZGUg
IldLVmlicmF0aW9uLmgiCi0jaW5jbHVkZSA8RXZhcy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLS8qKgotICogXHN0cnVjdCAgRXdrX1Zp
YnJhdGlvbl9DbGllbnQKLSAqIEBicmllZiAgIENvbnRhaW5zIHRoZSB2aWJyYXRpb24gY2xpZW50
IGNhbGxiYWNrcy4KLSAqLwotc3RydWN0IEV3a19WaWJyYXRpb25fQ2xpZW50IHsKLSAgICBFd2tf
VmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiIHZpYnJhdGU7Ci0gICAgRXdrX1ZpYnJhdGlvbl9D
bGllbnRfVmlicmF0aW9uX0NhbmNlbF9DYiBjYW5jZWxWaWJyYXRpb247Ci0gICAgdm9pZCogdXNl
ckRhdGE7Ci0KLSAgICBFd2tfVmlicmF0aW9uX0NsaWVudChFd2tfVmlicmF0aW9uX0NsaWVudF9W
aWJyYXRlX0NiIHZpYnJhdGUsIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxf
Q2IgY2FuY2VsVmlicmF0aW9uLCB2b2lkKiB1c2VyRGF0YSkKLSAgICAgICAgOiB2aWJyYXRlKHZp
YnJhdGUpCi0gICAgICAgICwgY2FuY2VsVmlicmF0aW9uKGNhbmNlbFZpYnJhdGlvbikKLSAgICAg
ICAgLCB1c2VyRGF0YSh1c2VyRGF0YSkKLSAgICB7IH0KLX07Ci0KLXN0YXRpYyBpbmxpbmUgVmli
cmF0aW9uUHJvdmlkZXIqIHRvVmlicmF0aW9uUHJvdmlkZXIoY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlicmF0aW9uUHJvdmlkZXIqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHZpYnJhdGVDYWxsYmFj
ayhXS1ZpYnJhdGlvblJlZiwgdWludDY0X3QgdmlicmF0aW9uVGltZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKLXsKLSAgICB0b1ZpYnJhdGlvblByb3ZpZGVyKGNsaWVudEluZm8pLT52aWJyYXRl
KHZpYnJhdGlvblRpbWUpOwotfQotCi1zdGF0aWMgdm9pZCBjYW5jZWxWaWJyYXRpb25DYWxsYmFj
ayhXS1ZpYnJhdGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICB0b1ZpYnJh
dGlvblByb3ZpZGVyKGNsaWVudEluZm8pLT5jYW5jZWxWaWJyYXRpb24oKTsKLX0KLQotUGFzc1Jl
ZlB0cjxWaWJyYXRpb25Qcm92aWRlcj4gVmlicmF0aW9uUHJvdmlkZXI6OmNyZWF0ZShXS0NvbnRl
eHRSZWYgd2tDb250ZXh0KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlicmF0aW9uUHJv
dmlkZXIod2tDb250ZXh0KSk7Ci19Ci0KLVZpYnJhdGlvblByb3ZpZGVyOjpWaWJyYXRpb25Qcm92
aWRlcihXS0NvbnRleHRSZWYgd2tDb250ZXh0KQotICAgIDogbV93a0NvbnRleHQod2tDb250ZXh0
KQotewotICAgIEFTU0VSVChtX3drQ29udGV4dC5nZXQoKSk7Ci0KLSAgICBXS1ZpYnJhdGlvblJl
ZiB3a1ZpYnJhdGlvbiA9IFdLQ29udGV4dEdldFZpYnJhdGlvbihtX3drQ29udGV4dC5nZXQoKSk7
Ci0gICAgQVNTRVJUKHdrVmlicmF0aW9uKTsKLQotICAgIFdLVmlicmF0aW9uUHJvdmlkZXIgd2tW
aWJyYXRpb25Qcm92aWRlciA9IHsKLSAgICAgICAga1dLVmlicmF0aW9uUHJvdmlkZXJDdXJyZW50
VmVyc2lvbiwKLSAgICAgICAgdGhpcywgLy8gY2xpZW50SW5mbwotICAgICAgICB2aWJyYXRlQ2Fs
bGJhY2ssCi0gICAgICAgIGNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrCi0gICAgfTsKLSAgICBXS1Zp
YnJhdGlvblNldFByb3ZpZGVyKHdrVmlicmF0aW9uLCAmd2tWaWJyYXRpb25Qcm92aWRlcik7Ci19
Ci0KLVZpYnJhdGlvblByb3ZpZGVyOjp+VmlicmF0aW9uUHJvdmlkZXIoKQotewotICAgIFdLVmli
cmF0aW9uUmVmIHdrVmlicmF0aW9uID0gV0tDb250ZXh0R2V0VmlicmF0aW9uKG1fd2tDb250ZXh0
LmdldCgpKTsKLSAgICBBU1NFUlQod2tWaWJyYXRpb24pOwotCi0gICAgV0tWaWJyYXRpb25TZXRQ
cm92aWRlcih3a1ZpYnJhdGlvbiwgMCk7Ci19Ci0KLXZvaWQgVmlicmF0aW9uUHJvdmlkZXI6OnZp
YnJhdGUodWludDY0X3QgdmlicmF0aW9uVGltZSkKLXsKLSAgICBpZiAobV92aWJyYXRpb25DbGll
bnQgJiYgbV92aWJyYXRpb25DbGllbnQtPnZpYnJhdGUpCi0gICAgICAgIG1fdmlicmF0aW9uQ2xp
ZW50LT52aWJyYXRlKHZpYnJhdGlvblRpbWUsIG1fdmlicmF0aW9uQ2xpZW50LT51c2VyRGF0YSk7
Ci19Ci0KLXZvaWQgVmlicmF0aW9uUHJvdmlkZXI6OmNhbmNlbFZpYnJhdGlvbigpCi17Ci0gICAg
aWYgKG1fdmlicmF0aW9uQ2xpZW50ICYmIG1fdmlicmF0aW9uQ2xpZW50LT5jYW5jZWxWaWJyYXRp
b24pCi0gICAgICAgIG1fdmlicmF0aW9uQ2xpZW50LT5jYW5jZWxWaWJyYXRpb24obV92aWJyYXRp
b25DbGllbnQtPnVzZXJEYXRhKTsKLX0KLQotdm9pZCBWaWJyYXRpb25Qcm92aWRlcjo6c2V0Vmli
cmF0aW9uQ2xpZW50Q2FsbGJhY2tzKEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2Igdmli
cmF0ZSwgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmlicmF0aW9uX0NhbmNlbF9DYiBjYW5jZWxWaWJy
YXRpb24sIHZvaWQqIGRhdGEpCi17Ci0gICAgbV92aWJyYXRpb25DbGllbnQgPSBhZG9wdFB0cihu
ZXcgRXdrX1ZpYnJhdGlvbl9DbGllbnQodmlicmF0ZSwgY2FuY2VsVmlicmF0aW9uLCBkYXRhKSk7
Ci19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1ODEwMzkzZGVhOTM4Mzk1OGE3MTZhNWIyNjUzMTBiZDBjZjJmNGZjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvVmlicmF0aW9uUHJvdmlkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVmlicmF0aW9uUHJvdmlkZXJfaAot
I2RlZmluZSBWaWJyYXRpb25Qcm92aWRlcl9oCi0KLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotCi0j
aW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKLSNpbmNsdWRlICJld2tfY29udGV4dC5oIgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotdHlw
ZWRlZiBzdHJ1Y3QgRXdrX1ZpYnJhdGlvbl9DbGllbnQgRXdrX1ZpYnJhdGlvbl9DbGllbnQ7Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBWaWJyYXRpb25Qcm92aWRlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFZpYnJhdGlvblByb3ZpZGVyPiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8VmlicmF0aW9uUHJvdmlkZXI+IGNyZWF0ZShXS0NvbnRleHRSZWYpOwotICAgIHZpcnR1
YWwgflZpYnJhdGlvblByb3ZpZGVyKCk7Ci0KLSAgICB2b2lkIHZpYnJhdGUodWludDY0X3Qgdmli
cmF0aW9uVGltZSk7Ci0gICAgdm9pZCBjYW5jZWxWaWJyYXRpb24oKTsKLSAgICB2b2lkIHNldFZp
YnJhdGlvbkNsaWVudENhbGxiYWNrcyhFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiLCBF
d2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiLCB2b2lkKik7Ci0KLXByaXZh
dGU6Ci0gICAgZXhwbGljaXQgVmlicmF0aW9uUHJvdmlkZXIoV0tDb250ZXh0UmVmKTsKLQotICAg
IFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gbV93a0NvbnRleHQ7Ci0gICAgT3duUHRyPEV3a19W
aWJyYXRpb25fQ2xpZW50PiBtX3ZpYnJhdGlvbkNsaWVudDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdAotCi0jZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikKLQotI2VuZGlmIC8vIFZpYnJh
dGlvblByb3ZpZGVyX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171776</attachid>
            <date>2012-10-31 23:20:25 -0700</date>
            <delta_ts>2012-11-07 06:55:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100334-20121101151846.patch</filename>
            <type>text/plain</type>
            <size>48722</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMTE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZWMyMzg3OTQwZTAwZWQz
ZGNhYmIyNDI3ZTM1MDRkMGFlZGU1NjMwZC4uYTcyZjNjYmUxZTA2NzY3ZjEyZGFlNzk3MjVlNzE0
NzFhYzMyN2U5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxMi0xMC0zMSAgQnl1
bmd3b28gTGVlICA8Ync4MC5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl0gTWFrZSBX
ZWJWaWJyYXRpb25Qcm94eSB0byBiZSBhIG1lbWJlciBvZiBXZWJQYWdlUHJveHkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAzMzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJWaWJyYXRpb25Qcm94
eSBzaG91bGQgYmUgYSBtZW1iZXIgb2YgV2ViUGFnZVByb3h5LCBiZWNhdXNlIHRoZSBJUEMKKyAg
ICAgICAgbWVzc2FnZXMgb2YgV2ViVmlicmF0aW9uUHJveHkgaGF2ZSBwYWdlIGRlc3RpbmF0aW9u
IElELgorCisgICAgICAgIFRoZSByMTMyMzg2IHByb3Bvc2VkIGEgd2F5IHRvIGFkZC9kZWxldGUg
bWVzc2FnZSByZWNlaXZlcnMgdGhhdCBjYW4KKyAgICAgICAgaGFuZGxlIElQQyBtZXNzYWdlcyB3
aXRoIGRlc3RpbmF0aW9uIElELgorCisgICAgICAgIFByZXZpb3VzIGltcGxlbWVudGF0aW9uIHRo
YXQgY3JlYXRpbmcgV2ViVmlicmF0aW9uUHJveHkgYXMgYSBXZWJDb250ZXh0CisgICAgICAgIG1l
bWJlciBhbmQgdXNpbmcgdGhlIGdsb2JhbCBtZXNzYWdlIHJlY2VpdmVyIGZvciB0aGUgcHJveHkg
Y2FuIG1ha2UKKyAgICAgICAgYXNzZXJ0aW9ucyBhZnRlciByMTMyMzg2LgorCisgICAgICAgIFRv
IGhhbmRsZSB0aGUgdmlicmF0aW9uIElQQyBtZXNzYWdlcyBwcm9wZXJseSwgdGhpcyBwYXRjaCB3
aWxsIGRvIHRoZQorICAgICAgICBmb2xsb3dpbmdzLgorCisgICAgICAgIDEpIEluc3RlYWQgb2Yg
V2ViQ29udGV4dCwgV2ViUGFnZVByb3h5IHdpbGwgaGF2ZSB0aGUgV2ViVmlicmF0aW9uUHJveHku
CisKKyAgICAgICAgMikgV2ViVmlicmF0aW9uUHJveHkgd2lsbCBhZGQgaXRzZWxmIHRvIHRoZSBt
ZXNzYWdlIHJlY2VpdmVyIG1hcCBvZgorICAgICAgICAgICB0aGUgV2ViQ29udGV4dCB3aXRoIHBh
Z2UgZGVzdGluYXRpb24gSUQuCisKKyAgICAgICAgMykgV2hlbiBXZWJQcm9jZXNzUHJveHkgcmVj
ZWl2ZWQgdmlicmF0aW9uIGlwYyBtZXNzYWdlcywgaXQgd2lsbAorICAgICAgICAgICBmb3J3YXJk
IHRoZSBtZXNzYWdlcyB0byB0aGUgV2ViQ29udGV4dCBmaXJzdC4gVGhlbiB0aGUgbWVzc2FnZQor
ICAgICAgICAgICByZWNlaXZlciBtYXAgb2YgdGhlIFdlYkNvbnRleHQgd2lsbCBoYW5kbGUgdGhl
IG1lc3NhZ2VzIHdpdGggdGhlCisgICAgICAgICAgIHJlZ2lzdGVyZWQgV2ViVmlicmF0aW9uUHJv
eHkuCisKKyAgICAgICAgNCkgQVBJcyB3aWxsIGJlIG1vZGlmaWVkIHRvIGFwcGx5IHRoZXNlIGNo
YW5nZXMuCisgICAgICAgICAgIGEpIFdLIEFQSSB0byBnZXQgV0tWaWJyYXRpb25SZWYgd2lsbCB1
c2UgV0tQYWdlUmVmIG5vdCBXS0NvbnRleHRSZWYuCisgICAgICAgICAgIGIpIEVGTCBBUElzIGFu
ZCBBUEkgdGVzdCBmb3IgdGhlIHZpYnJhdGlvbiB3aWxsIGFsc28gYmUgY2hhbmdlZC4KKyAgICAg
ICAgICAgICAgLSBFd2tWaWV3SW1wbCB3aWxsIGhhdmUgdmlicmF0aW9uIGNsaWVudC4gKEV3a19D
b250ZXh0IHdpbGwgbm90CisgICAgICAgICAgICAgICAgaGF2ZSBpdCkKKyAgICAgICAgICAgICAg
LSBQcmV2aW91cyBBUEkgdG8gcmVnaXN0ZXIgdGhlIHZpYnJhdGlvbiBjYWxsYmFjayB3aWxsIGJl
IHJlbW92ZWQuCisgICAgICAgICAgICAgIC0gTmV3IHNpZ25hbHMgZm9yIHZpYnJhdGlvbiB3aWxs
IGJlIGFkZGVkIHRvIHRoZSBFd2tWaWV3SW1wbC4KKyAgICAgICAgICAgICAgLSBWaWJyYXRpb25Q
cm94eSB3aWxsIGJlIHJlbmFtZWQgdG8gVmlicmF0aW9uQ2xpZW50IGZvciB0aGUKKyAgICAgICAg
ICAgICAgICBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIGNsaWVudHMgaW4gRXdrVmlld0ltcGwuCisg
ICAgICAgICAgICAgIC0gVmlicmF0aW9uQ2xpZW50IHdpbGwgdXNlIEV3a1ZpZXdJbXBsIGluc3Rl
YWQgb2YgRXdrX0NvbnRleHQuCisgICAgICAgICAgICAgIC0gUHJldmlvdXMgQVBJIHRlc3QgZm9y
IHZpYnJhdGlvbiB3aWxsIGJlIG1vdmVkIGZyb20gY29udGV4dCB0ZXN0CisgICAgICAgICAgICAg
ICAgdG8gdmlldyB0ZXN0LCBhbmQgaXQgd2lsbCB1c2UgdGhlIGNoYW5nZWQgQVBJLgorCisgICAg
ICAgICogUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlR2V0VmlicmF0
aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3
a1ZpZXdJbXBsKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjp2aWJyYXRlKToKKyAgICAgICAgKEV3
a1ZpZXdJbXBsOjpjYW5jZWxWaWJyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdJbXBsLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdrVmlld0ltcGwp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcDoKKyAgICAgICAg
KEV3a19Db250ZXh0OjpFd2tfQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdrX0NvbnRleHQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3LmNwcDoKKyAgICAgICAgKFZpYnJhdGlvbkNi
RGF0YSk6CisgICAgICAgIChvblZpYnJhdGUpOgorICAgICAgICAob25DYW5jZWxWaWJyYXRpb24p
OgorICAgICAgICAobG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcpOgorICAgICAgICAoVEVTVF9GKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkNvbnRleHQ6OldlYkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojp+V2Vi
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6OmRpc2Nvbm5lY3RQcm9jZXNz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYkNvbnRleHQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dmlicmF0aW9uKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViVmlicmF0aW9uUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Q
cm94eTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uUHJveHk6OldlYlZp
YnJhdGlvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uUHJveHk6On5XZWJW
aWJyYXRpb25Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpYnJhdGlvblByb3h5OjppbnZh
bGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaDoKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJWaWJyYXRpb25Qcm94eSk6CisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9WaWJyYXRpb25DbGllbnRFZmwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5jcHAuCisgICAgICAgICh0b1Zp
YnJhdGlvbkNsaWVudCk6CisgICAgICAgIChWaWJyYXRpb25DbGllbnRFZmw6OnZpYnJhdGVDYWxs
YmFjayk6CisgICAgICAgIChWaWJyYXRpb25DbGllbnRFZmw6OmNhbmNlbFZpYnJhdGlvbkNhbGxi
YWNrKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKFZp
YnJhdGlvbkNsaWVudEVmbDo6VmlicmF0aW9uQ2xpZW50RWZsKToKKyAgICAgICAgKFZpYnJhdGlv
bkNsaWVudEVmbDo6flZpYnJhdGlvbkNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9WaWJyYXRpb25DbGllbnRFZmwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvVmlicmF0aW9uUHJvdmlkZXIuaC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChWaWJyYXRpb25DbGllbnRFZmwpOgorCiAyMDEyLTEwLTMxICBBbGV4YW5kcnUgQ2hpY3VsaXRh
ICA8YWNoaWN1QGFkb2JlLmNvbT4KIAogICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb24gcGFy
YW1ldGVycyBsaXN0IGlzIG5vdCBkZWNvZGVkIGNvcnJlY3RseSBpbiBDb29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNzdiNTQ0MzI5
NWMxYmI5YmRhNjg0MDE0YjZiOGI0MzFmMmJkNWI1OS4uMjc2MmEwMTE0NGUwNjIxYmVkYjU1NTgx
ZGM0MGY2Mjk1OWYyYTdmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwu
Y21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTg2LDcgKzg2
LDcgQEAgTElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9SZXF1
ZXN0TWFuYWdlckNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1Jlc291cmNlTG9hZENs
aWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAotICAgIFVJ
UHJvY2Vzcy9lZmwvVmlicmF0aW9uUHJvdmlkZXIuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9WaWJy
YXRpb25DbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJDb250ZXh0RWZsLmNwcAog
ICAgIFVJUHJvY2Vzcy9lZmwvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCAxMTdiYmVkYTMxNGQxZGJlNmIwYzY1
NTVhMWZmMjgwY2M3NTQwMjI1Li5hYzQ2MTE1N2Y5NDkyNTEzYjhlNTMyOTNlZTczNDFmODY4YTBh
YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApA
QCAtMjQyLDE1ICsyNDIsNiBAQCBXS1Jlc291cmNlQ2FjaGVNYW5hZ2VyUmVmIFdLQ29udGV4dEdl
dFJlc291cmNlQ2FjaGVNYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0UgogICAgIHJldHVybiB0
b0FQSSh0b0ltcGwoY29udGV4dFJlZiktPnJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHkoKSk7CiB9
CiAKLVdLVmlicmF0aW9uUmVmIFdLQ29udGV4dEdldFZpYnJhdGlvbihXS0NvbnRleHRSZWYgY29u
dGV4dFJlZikKLXsKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotICAgIHJldHVybiB0b0FQSSh0b0lt
cGwoY29udGV4dFJlZiktPnZpYnJhdGlvblByb3h5KCkpOwotI2Vsc2UKLSAgICByZXR1cm4gMDsK
LSNlbmRpZgotfQotCiB2b2lkIFdLQ29udGV4dFN0YXJ0TWVtb3J5U2FtcGxlcihXS0NvbnRleHRS
ZWYgY29udGV4dFJlZiwgV0tEb3VibGVSZWYgaW50ZXJ2YWwpCiB7CiAgICAgdG9JbXBsKGNvbnRl
eHRSZWYpLT5zdGFydE1lbW9yeVNhbXBsZXIodG9JbXBsKGludGVydmFsKS0+dmFsdWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmgKaW5kZXggNjlkMTI5ODA1
ZDNiZGE5YzVjMDgwYjQyOWU2ODQ3ODFiNGQ2NmQxZC4uOGY3N2NiZDhmOGNlNTQ0NDM4Y2YzYjc5
MjVhZWZjZDQyODlmZDc3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0Nv
bnRleHQuaApAQCAtMTY3LDcgKzE2Nyw2IEBAIFdLX0VYUE9SVCBXS05ldHdvcmtJbmZvTWFuYWdl
clJlZiBXS0NvbnRleHRHZXROZXR3b3JrSW5mb01hbmFnZXIoV0tDb250ZXh0UmVmIGNvCiBXS19F
WFBPUlQgV0tOb3RpZmljYXRpb25NYW5hZ2VyUmVmIFdLQ29udGV4dEdldE5vdGlmaWNhdGlvbk1h
bmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIFdLUGx1Z2luU2l0ZURhdGFN
YW5hZ2VyUmVmIFdLQ29udGV4dEdldFBsdWdpblNpdGVEYXRhTWFuYWdlcihXS0NvbnRleHRSZWYg
Y29udGV4dCk7CiBXS19FWFBPUlQgV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBXS0NvbnRleHRH
ZXRSZXNvdXJjZUNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dCk7Ci1XS19FWFBPUlQg
V0tWaWJyYXRpb25SZWYgV0tDb250ZXh0R2V0VmlicmF0aW9uKFdLQ29udGV4dFJlZiBjb250ZXh0
KTsKICAgICAKIHR5cGVkZWYgdm9pZCAoKldLQ29udGV4dEdldFN0YXRpc3RpY3NGdW5jdGlvbiko
V0tEaWN0aW9uYXJ5UmVmIHN0YXRpc3RpY3MsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRHZXRTdGF0aXN0aWNzKFdLQ29u
dGV4dFJlZiBjb250ZXh0LCB2b2lkKiBmdW5jdGlvbkNvbnRleHQsIFdLQ29udGV4dEdldFN0YXRp
c3RpY3NGdW5jdGlvbiBmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCmluZGV4IGJkYmNiNTU0ZDJmNzk5MzRmMzY4ZjIzNTFiNWVhMDAzNzA5OTZiZTYu
LmFmMmMwMWZlNzBkNTFlYjgyYWIzMzQ1Y2I3MzBjODZlM2U1YjQ0ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0xOTEsNiArMTkxLDE1IEBAIFdLSW5z
cGVjdG9yUmVmIFdLUGFnZUdldEluc3BlY3RvcihXS1BhZ2VSZWYgcGFnZVJlZikKICNlbmRpZgog
fQogCitXS1ZpYnJhdGlvblJlZiBXS1BhZ2VHZXRWaWJyYXRpb24oV0tQYWdlUmVmIHBhZ2UpCit7
CisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICByZXR1cm4gdG9BUEkodG9JbXBsKHBhZ2UpLT52
aWJyYXRpb24oKSk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisKIGRvdWJsZSBX
S1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZVJlZikKIHsKICAgICByZXR1
cm4gdG9JbXBsKHBhZ2VSZWYpLT5lc3RpbWF0ZWRQcm9ncmVzcygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5oCmluZGV4IGRhZGViYmM5MTk4Yzc3MTE5NmJlYWU1ZWE3Nzlj
MDZjODc3OTkzM2QuLjRhMjViYjYzYmIwOGEyZDRkZDgxNjU1NGM5ZDU1YzEwYTE0Y2VhZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKQEAgLTM4OSw2ICszODksOCBA
QCBXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRNZW1vcnlDYWNoZUNsaWVudENhbGxzRW5hYmxlZChX
S1BhZ2VSZWYgcGFnZSwgYm9vbCBtZW1vcgogCiBXS19FWFBPUlQgV0tJbnNwZWN0b3JSZWYgV0tQ
YWdlR2V0SW5zcGVjdG9yKFdLUGFnZVJlZiBwYWdlKTsKIAorV0tfRVhQT1JUIFdLVmlicmF0aW9u
UmVmIFdLUGFnZUdldFZpYnJhdGlvbihXS1BhZ2VSZWYgcGFnZSk7CisKIFdLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS1BhZ2VDb3B5VXNlckFnZW50KFdLUGFnZVJlZiBwYWdlKTsKIAogV0tfRVhQT1JU
IFdLU3RyaW5nUmVmIFdLUGFnZUNvcHlBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoV0tQYWdl
UmVmIHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuY3BwCmluZGV4IDBiYTBjN2VjYjU0ZGZiYWEzMDY4OWY1OTRmNjg2MWExNmFhZDkyM2Mu
LjUxNTk4ODhkNzIxMmMzOTRjMzVjNjRlZDQ1YThkYmJiNTM2NGU4YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTMyLDYgKzMy
LDkgQEAKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENs
aWVudEVmbC5oIgorI2lmIEVOQUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xp
ZW50RWZsLmgiCisjZW5kaWYKICNpbmNsdWRlICJXS1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHQuaCIKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKQEAgLTEwNCw2ICsxMDcsOSBAQCBF
d2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcsIFBhc3NSZWZQdHI8RXdr
X0NvbnRleHQ+IGNvbnRleHQsIFBhcwogICAgICwgbV9yZXNvdXJjZUxvYWRDbGllbnQoUmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2ZpbmRDbGllbnQoRmluZENs
aWVudEVmbDo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9mb3JtQ2xpZW50KEZvcm1DbGllbnRFZmw6
OmNyZWF0ZSh0aGlzKSkKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgICwgbV92aWJyYXRpb25D
bGllbnQoVmlicmF0aW9uQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCisjZW5kaWYKICAgICAsIG1f
YmFja0ZvcndhcmRMaXN0KEV3a19CYWNrX0ZvcndhcmRfTGlzdDo6Y3JlYXRlKHRvQVBJKG1fcGFn
ZVByb3h5LT5iYWNrRm9yd2FyZExpc3QoKSkpKQogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQogICAgICwgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50KFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKQEAgLTQ0OCw2ICs0NTQsMTggQEAgdm9pZCBF
d2tWaWV3SW1wbDo6aW5mb3JtSWNvbkNoYW5nZSgpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2Fs
bGJhY2tfY2FsbChtX3ZpZXcsICJpY29uLGNoYW5nZWQiLCAwKTsKIH0KIAorI2lmIEVOQUJMRShW
SUJSQVRJT04pCit2b2lkIEV3a1ZpZXdJbXBsOjp2aWJyYXRlKHVpbnQ2NF90IHZpYnJhdGlvblRp
bWUpCit7CisgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ2aWJy
YXRlIiwgJnZpYnJhdGlvblRpbWUpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpjYW5jZWxWaWJy
YXRpb24oKQoreworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAi
Y2FuY2VsLHZpYnJhdGlvbiIsIDApOworfQorI2VuZGlmCisKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiBib29sIEV3a1ZpZXdJbXBsOjpjcmVhdGVHTFN1cmZhY2UoY29uc3QgSW50
U2l6ZSYgdmlld1NpemUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuaAppbmRleCA3ZGQ1YmRkZmNhMjkzMDIxMWUyYmVmNjkzYjU5ZjViMWU4YWFh
YWVkLi5iZDIwNDIyNjBjZWQ3YWEyMjc3NzU4Nzg2MWJkM2UwZmQ4ZjVkOGVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKQEAgLTU0LDYgKzU0
LDkgQEAgY2xhc3MgUGFnZVVJQ2xpZW50RWZsOwogY2xhc3MgUGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbDsKIGNsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CiBjbGFzcyBSZXNvdXJj
ZUxvYWRDbGllbnRFZmw7CisjaWYgRU5BQkxFKFZJQlJBVElPTikKK2NsYXNzIFZpYnJhdGlvbkNs
aWVudEVmbDsKKyNlbmRpZgogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5
OwogY2xhc3MgV2ViUG9wdXBJdGVtOwpAQCAtMTczLDYgKzE3NiwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbmZvcm1Db250ZW50c1NpemVDaGFuZ2UoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6
ZSk7CiAgICAgdW5zaWduZWQgbG9uZyBsb25nIGluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVkKGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNp
Z25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudE9y
aWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVuc2ln
bmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlKTsKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisg
ICAgdm9pZCB2aWJyYXRlKHVpbnQ2NF90IHZpYnJhdGlvblRpbWUpOworICAgIHZvaWQgY2FuY2Vs
VmlicmF0aW9uKCk7CisjZW5kaWYKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwqIHBhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnQoKSB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuZ2V0
KCk7IH0KICAgICBXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIHBhZ2VWaWV3cG9ydENv
bnRyb2xsZXIoKSB7IHJldHVybiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuZ2V0KCk7IH0KQEAg
LTIyMCw2ICsyMjcsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OlJlc291cmNlTG9h
ZENsaWVudEVmbD4gbV9yZXNvdXJjZUxvYWRDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6Rmlu
ZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OkZvcm1DbGllbnRF
Zmw+IG1fZm9ybUNsaWVudDsKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgIE93blB0cjxXZWJL
aXQ6OlZpYnJhdGlvbkNsaWVudEVmbD4gbV92aWJyYXRpb25DbGllbnQ7CisjZW5kaWYKICAgICBP
d25QdHI8RXdrX0JhY2tfRm9yd2FyZF9MaXN0PiBtX2JhY2tGb3J3YXJkTGlzdDsKICNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKICAgICBPd25QdHI8V2ViS2l0OjpQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsPiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKaW5kZXggZjli
ODczY2M3OWJiMTQ1ZTUyOGY4OWJiZGQzNzdlNTdiZTk5NGYyNy4uMWU0OGJjYjkyMzZlZTA0MWMz
MzU0NGEwYzc3OTI5OWY5ODliMGUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19jb250ZXh0LmNwcApAQCAtMjUsNyArMjUsNiBAQAogI2luY2x1ZGUgIkNv
bnRleHRIaXN0b3J5Q2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiTmV0d29ya0luZm9Qcm92aWRlci5o
IgogI2luY2x1ZGUgIlJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsLmgiCi0jaW5jbHVkZSAiVmlicmF0
aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS0NvbnRl
eHRTb3VwLmgiCiAjaW5jbHVkZSAiV0tOdW1iZXIuaCIKQEAgLTY4LDkgKzY3LDYgQEAgRXdrX0Nv
bnRleHQ6OkV3a19Db250ZXh0KFdLQ29udGV4dFJlZiBjb250ZXh0KQogI2lmIEVOQUJMRShORVRX
T1JLX0lORk8pCiAgICAgLCBtX25ldHdvcmtJbmZvUHJvdmlkZXIoTmV0d29ya0luZm9Qcm92aWRl
cjo6Y3JlYXRlKGNvbnRleHQpKQogI2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICAs
IG1fdmlicmF0aW9uUHJvdmlkZXIoVmlicmF0aW9uUHJvdmlkZXI6OmNyZWF0ZShjb250ZXh0KSkK
LSNlbmRpZgogICAgICwgbV9kb3dubG9hZE1hbmFnZXIoRG93bmxvYWRNYW5hZ2VyRWZsOjpjcmVh
dGUodGhpcykpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50KFJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2hpc3RvcnlDbGllbnQoQ29udGV4dEhpc3Rv
cnlDbGllbnRFZmw6OmNyZWF0ZShjb250ZXh0KSkKQEAgLTE2MywxMyArMTU5LDYgQEAgUmVxdWVz
dE1hbmFnZXJDbGllbnRFZmwqIEV3a19Db250ZXh0OjpyZXF1ZXN0TWFuYWdlcigpCiAgICAgcmV0
dXJuIG1fcmVxdWVzdE1hbmFnZXJDbGllbnQuZ2V0KCk7CiB9CiAKLSNpZiBFTkFCTEUoVklCUkFU
SU9OKQotUGFzc1JlZlB0cjxWaWJyYXRpb25Qcm92aWRlcj4gRXdrX0NvbnRleHQ6OnZpYnJhdGlv
blByb3ZpZGVyKCkKLXsKLSAgICByZXR1cm4gbV92aWJyYXRpb25Qcm92aWRlcjsKLX0KLSNlbmRp
ZgotCiB2b2lkIEV3a19Db250ZXh0OjphZGRWaXNpdGVkTGluayhjb25zdCBTdHJpbmcmIHZpc2l0
ZWRVUkwpCiB7CiAgICAgdG9JbXBsKG1fY29udGV4dC5nZXQoKSktPmFkZFZpc2l0ZWRMaW5rKHZp
c2l0ZWRVUkwpOwpAQCAtMjU4LDE1ICsyNDcsNiBAQCBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfdXJs
X3NjaGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgY29uc3QgY2hhciogcwog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGV3a19jb250ZXh0X3ZpYnJhdGlvbl9jbGllbnRf
Y2FsbGJhY2tzX3NldChFd2tfQ29udGV4dCogZXdrQ29udGV4dCwgRXdrX1ZpYnJhdGlvbl9DbGll
bnRfVmlicmF0ZV9DYiB2aWJyYXRlLCBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2Fu
Y2VsX0NiIGNhbmNlbCwgdm9pZCogZGF0YSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTihld2tDb250ZXh0KTsKLQotI2lmIEVOQUJMRShWSUJSQVRJT04pCi0gICAgZXdrQ29udGV4
dC0+dmlicmF0aW9uUHJvdmlkZXIoKS0+c2V0VmlicmF0aW9uQ2xpZW50Q2FsbGJhY2tzKHZpYnJh
dGUsIGNhbmNlbCwgZGF0YSk7Ci0jZW5kaWYKLX0KLQogdm9pZCBld2tfY29udGV4dF9oaXN0b3J5
X2NhbGxiYWNrc19zZXQoRXdrX0NvbnRleHQqIGV3a0NvbnRleHQsIEV3a19IaXN0b3J5X05hdmln
YXRpb25fQ2IgbmF2aWdhdGUsIEV3a19IaXN0b3J5X0NsaWVudF9SZWRpcmVjdGlvbl9DYiBjbGll
bnRSZWRpcmVjdCwgRXdrX0hpc3RvcnlfU2VydmVyX1JlZGlyZWN0aW9uX0NiIHNlcnZlclJlZGly
ZWN0LCBFd2tfSGlzdG9yeV9UaXRsZV9VcGRhdGVfQ2IgdGl0bGVVcGRhdGUsIEV3a19IaXN0b3J5
X1BvcHVsYXRlX1Zpc2l0ZWRfTGlua3NfQ2IgcG9wdWxhdGVWaXNpdGVkTGlua3MsIHZvaWQqIGRh
dGEpCiB7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oZXdrQ29udGV4dCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAppbmRleCBmNmI4
YmI2N2QyNWQ4N2JhOWQwMzIxZDFhMzc3ZWZiODdmODFmMzA2Li4xY2U4ZmI0OWY3ZTgzYjJmNTY0
ODQzMzBiNjUyZGZiMGQ3ZGRhMGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmgKQEAgLTc0LDIwICs3NCw2IEBAIHR5cGVkZWYgZW51bSBFd2tf
Q2FjaGVfTW9kZWwgRXdrX0NhY2hlX01vZGVsOwogdHlwZWRlZiB2b2lkICgqRXdrX1VybF9TY2hl
bWVfUmVxdWVzdF9DYikgKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKnVz
ZXJfZGF0YSk7CiAKIC8qKgotICogQHR5cGVkZWYgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmlicmF0
ZV9DYiBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiCi0gKiBAYnJpZWYgVHlwZSBkZWZp
bml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIHZpYnJh
dGUKLSAqIHJlcXVlc3QgcmVjZWl2ZWVkIGZyb20gdGhlIHZpYnJhdGlvbiBjb250cm9sbGVyLgot
ICovCi10eXBlZGVmIHZvaWQgKCpFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiKSh1aW50
NjRfdCB2aWJyYXRpb25fdGltZSwgdm9pZCAqdXNlcl9kYXRhKTsKLQotLyoqCi0gKiBAdHlwZWRl
ZiBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiIEV3a19WaWJyYXRpb25f
Q2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxfQ2IKLSAqIEBicmllZiBUeXBlIGRlZmluaXRpb24gZm9y
IGEgZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBiYWNrIHdoZW4gY2FuY2VsCi0gKiB2aWJy
YXRpb24gcmVxdWVzdCByZWNlaXZlZWQgZnJvbSB0aGUgdmlicmF0aW9uIGNvbnRyb2xsZXIuCi0g
Ki8KLXR5cGVkZWYgdm9pZCAoKkV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxf
Q2IpKHZvaWQgKnVzZXJfZGF0YSk7Ci0KLS8qKgogICogQHR5cGVkZWYgRXdrX0hpc3RvcnlfTmF2
aWdhdGlvbl9DYiBFd2tfSGlzdG9yeV9OYXZpZ2F0aW9uX0NiCiAgKiBAYnJpZWYgVHlwZSBkZWZp
bml0aW9uIGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIEBhIHZp
ZXcgZGlkIG5hdmlnYXRpb24gKGxvYWRlZCBuZXcgVVJMKS4KICAqLwpAQCAtMjM1LDIyICsyMjEs
NiBAQCBFQVBJIEV3a19GYXZpY29uX0RhdGFiYXNlICpld2tfY29udGV4dF9mYXZpY29uX2RhdGFi
YXNlX2dldChjb25zdCBFd2tfQ29udGV4dCAqYwogRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRf
dXJsX3NjaGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCAqY29udGV4dCwgY29uc3QgY2hhciAqc2No
ZW1lLCBFd2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkICp1c2VyX2RhdGEp
OwogCiAvKioKLSAqIFNldHMgdmlicmF0aW9uIGNsaWVudCBjYWxsYmFja3MgdG8gaGFuZGxlIHRo
ZSB0YWN0aWxlIGZlZWRiYWNrIGluIHRoZSBmb3JtIG9mCi0gKiB2aWJyYXRpb24gaW4gdGhlIGNs
aWVudCBhcHBsaWNhdGlvbiB3aGVuIHRoZSBjb250ZW50IGFza3MgZm9yIHZpYnJhdGlvbi4KLSAq
Ci0gKiBUbyBzdG9wIGxpc3RlbmluZyBmb3IgdmlicmF0aW9uIGV2ZW50cywgeW91IG1heSBjYWxs
IHRoaXMgZnVuY3Rpb24gd2l0aCBAYwotICogTlVMTCBmb3IgdGhlIGNhbGxiYWNrcy4KLSAqCi0g
KiBAcGFyYW0gY29udGV4dCBjb250ZXh0IG9iamVjdCB0byBzZXQgdmlicmF0aW9uIGNsaWVudCBj
YWxsYmFja3MuCi0gKiBAcGFyYW0gdmlicmF0ZSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRo
ZSB2aWJyYXRlIHJlcXVlc3QgcmVjZWl2ZWQgZnJvbSB0aGUKLSAqICAgICAgICBjb250cm9sbGVy
IChtYXkgYmUgQGMgTlVMTCkuCi0gKiBAcGFyYW0gY2FuY2VsIFRoZSBmdW5jdGlvbiB0byBjYWxs
IHdoZW4gdGhlIGNhbmNlbCB2aWJyYXRpb24gcmVxdWVzdCByZWNlaXZlZAotICogICAgICAgIGZy
b20gdGhlIGNvbnRyb2xsZXIgKG1heSBiZSBAYyBOVUxMKS4KLSAqIEBwYXJhbSBkYXRhIFVzZXIg
ZGF0YSAobWF5IGJlIEBjIE5VTEwpLgotICovCi1FQVBJIHZvaWQgZXdrX2NvbnRleHRfdmlicmF0
aW9uX2NsaWVudF9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0ICpjb250ZXh0LCBFd2tfVmlicmF0
aW9uX0NsaWVudF9WaWJyYXRlX0NiIHZpYnJhdGUsIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJh
dGlvbl9DYW5jZWxfQ2IgY2FuY2VsLCB2b2lkICpkYXRhKTsKLQotLyoqCiAgKiBTZXRzIGhpc3Rv
cnkgY2FsbGJhY2tzIGZvciB0aGUgZ2l2ZW4gQGEgY29udGV4dC4KICAqCiAgKiBUbyBzdG9wIGxp
c3RlbmluZyBmb3IgaGlzdG9yeSBldmVudHMsIHlvdSBtYXkgY2FsbCB0aGlzIGZ1bmN0aW9uIHdp
dGggQGMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19j
b250ZXh0X3ByaXZhdGUuaAppbmRleCBiYTQ2MzI0ZjViMGM1ZWNhZjRlMzI2ZmYzMzEyYmMwNTg3
NTI1MzMwLi5hYTczMTBiYTc3YzE3OWEwNGU1NDhmMjQ1ZmY0ZjQxNTlkODY4MzE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJp
dmF0ZS5oCkBAIC0zOCw5ICszOCw2IEBAIGNsYXNzIEJhdHRlcnlQcm92aWRlcjsKICNpZiBFTkFC
TEUoTkVUV09SS19JTkZPKQogY2xhc3MgTmV0d29ya0luZm9Qcm92aWRlcjsKICNlbmRpZgotI2lm
IEVOQUJMRShWSUJSQVRJT04pCi1jbGFzcyBWaWJyYXRpb25Qcm92aWRlcjsKLSNlbmRpZgogfQog
CiBjbGFzcyBFd2tfQ29udGV4dCA6IHB1YmxpYyBSZWZDb3VudGVkPEV3a19Db250ZXh0PiB7CkBA
IC01OSwxMCArNTYsNiBAQCBwdWJsaWM6CiAKICAgICBXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsKiByZXF1ZXN0TWFuYWdlcigpOwogCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBQ
YXNzUmVmUHRyPFdlYktpdDo6VmlicmF0aW9uUHJvdmlkZXI+IHZpYnJhdGlvblByb3ZpZGVyKCk7
Ci0jZW5kaWYKLQogICAgIHZvaWQgYWRkVmlzaXRlZExpbmsoY29uc3QgU3RyaW5nJiB2aXNpdGVk
VVJMKTsKIAogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChFd2tfQ2FjaGVfTW9kZWwpOwpAQCAtOTAs
OSArODMsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAgICAgUmVmUHRy
PFdlYktpdDo6TmV0d29ya0luZm9Qcm92aWRlcj4gbV9uZXR3b3JrSW5mb1Byb3ZpZGVyOwogI2Vu
ZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBSZWZQdHI8V2ViS2l0OjpWaWJyYXRpb25Q
cm92aWRlcj4gbV92aWJyYXRpb25Qcm92aWRlcjsKLSNlbmRpZgogICAgIE93blB0cjxXZWJLaXQ6
OkRvd25sb2FkTWFuYWdlckVmbD4gbV9kb3dubG9hZE1hbmFnZXI7CiAgICAgT3duUHRyPFdlYktp
dDo6UmVxdWVzdE1hbmFnZXJDbGllbnRFZmw+IG1fcmVxdWVzdE1hbmFnZXJDbGllbnQ7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCmluZGV4IDUzY2E4M2Fi
MDc3OWU2MGM1MTc4ZThiOGMzYWU0Zjk0NDcyYWUyY2MuLmFiZTEzZTYwYjBhZjgxOTEyYjFjNWZh
YjkyNzBlNzIyNzVjZjYzMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaApAQCAtMjcsNiArMjcsNyBAQAogICogVGhlIGZvbGxvd2luZyBzaWduYWxzIChz
ZWUgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKCkpIGFyZSBlbWl0dGVkOgogICoKICAq
IC0gImJhY2ssZm9yd2FyZCxsaXN0LGNoYW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgdGhlIHZp
ZXcncyBiYWNrIC8gZm9yd2FyZCBsaXN0IGhhZCBjaGFuZ2VkLgorICogLSAiY2FuY2VsLHZpYnJh
dGlvbiIsIHZvaWQ6IHJlcXVlc3QgdG8gY2FuY2VsIHRoZSB2aWJyYXRpb24uCiAgKiAtICJjbG9z
ZSx3aW5kb3ciLCB2b2lkOiB3aW5kb3cgaXMgY2xvc2VkLgogICogLSAiY3JlYXRlLHdpbmRvdyIs
IEV2YXNfT2JqZWN0Kio6IGEgbmV3IHdpbmRvdyBpcyBjcmVhdGVkLgogICogLSAiZG93bmxvYWQs
Y2FuY2VsbGVkIiwgRXdrX0Rvd25sb2FkX0pvYio6IHJlcG9ydHMgdGhhdCBhIGRvd25sb2FkIHdh
cyBlZmZlY3RpdmVseSBjYW5jZWxsZWQuCkBAIC03MSw2ICs3Miw3IEBACiAgKiAtICJ0b29sdGlw
LHRleHQsc2V0IiwgY29uc3QgY2hhcio6IHRvb2x0aXAgd2FzIHNldC4KICAqIC0gInRvb2x0aXAs
dGV4dCx1bnNldCIsIHZvaWQ6IHRvb2x0aXAgd2FzIHVuc2V0LgogICogLSAidXJsLGNoYW5nZWQi
LCBjb25zdCBjaGFyKjogdXJsIG9mIHRoZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgorICogLSAi
dmlicmF0ZSIsIHVpbnQ2NF90KjogcmVxdWVzdCB0byB2aWJyYXRlLiAodmFsdWUgaXMgdmlicmF0
aW9uIHRpbWUpCiAgKiAtICJ3ZWJwcm9jZXNzLGNyYXNoZWQiLCBFaW5hX0Jvb2wqOiBleHBlY3Rz
IGEgQGMgRUlOQV9UUlVFIGlmIHdlYiBwcm9jZXNzIGNyYXNoIGlzIGhhbmRsZWQ7IEBjIEVJTkFf
RkFMU0UsIG90aGVyd2lzZS4KICAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKaW5kZXggODY3
NDZkY2YxOTcwYzFiMmY4ZGQ4ZWJlZDUxYzUxMTdmNmZjMTljYS4uOGNhMGZmNzE2NTZjMDQwNGIy
NDdkYzQ3Nzc1YTkyMGU2ZDhmNTMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcApAQCAtNzks
ODYgKzc5LDYgQEAgVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb250ZXh0X3VybF9zY2hl
bWVfcmVnaXN0ZXIpCiAgICAgQVNTRVJUX1NUUkVRKCJGb28iLCBld2tfdmlld190aXRsZV9nZXQo
d2ViVmlldygpKSk7CiB9CiAKLXN0cnVjdCBWaWJyYXRpb25DYkRhdGEgewotICAgIGJvb2wgZGlk
UmVjZWl2ZVZpYnJhdGVDYWxsYmFjazsgLy8gV2hldGhlciB0aGUgdmlicmF0aW9uIGV2ZW50IHJl
Y2VpdmVkLgotICAgIGJvb2wgZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrOyAvLyBX
aGV0aGVyIHRoZSBjYW5jZWwgdmlicmF0aW9uIGV2ZW50IHJlY2VpdmVkLgotICAgIHVuc2lnbmVk
IHZpYnJhdGVDYWxsZWRDb3VudDsgLy8gVmlicmF0ZSBjYWxsYmFja3MgY291bnQuCi0gICAgdWlu
dDY0X3QgZXhwZWN0ZWRWaWJyYXRpb25UaW1lOyAvLyBFeHBlY3RlZCB2aWJyYXRpb24gdGltZS4K
LX07Ci0KLXN0YXRpYyB2b2lkIHZpYnJhdGVDYWxsYmFjayh1aW50NjRfdCB2aWJyYXRpb25UaW1l
LCB2b2lkKiB1c2VyRGF0YSkKLXsKLSAgICBWaWJyYXRpb25DYkRhdGEqIGRhdGEgPSBzdGF0aWNf
Y2FzdDxWaWJyYXRpb25DYkRhdGEqPih1c2VyRGF0YSk7Ci0gICAgaWYgKHZpYnJhdGlvblRpbWUg
PT0gZGF0YS0+ZXhwZWN0ZWRWaWJyYXRpb25UaW1lKQotICAgICAgICBkYXRhLT5kaWRSZWNlaXZl
VmlicmF0ZUNhbGxiYWNrID0gdHJ1ZTsKLSAgICBkYXRhLT52aWJyYXRlQ2FsbGVkQ291bnQrKzsK
LX0KLQotc3RhdGljIHZvaWQgY2FuY2VsVmlicmF0aW9uQ2FsbGJhY2sodm9pZCogdXNlckRhdGEp
Ci17Ci0gICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JE
YXRhKj4odXNlckRhdGEpOwotICAgIGRhdGEtPmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb25DYWxs
YmFjayA9IHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKEV2
YXNfT2JqZWN0KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiB2aWJyYXRpb25QYXR0ZXJuLCBib29sIHdh
aXRGb3JWaWJyYXRpb25FdmVudCwgVmlicmF0aW9uQ2JEYXRhKiBkYXRhKQotewotICAgIGNvbnN0
IGNoYXIqIGNvbnRlbnQgPQotICAgICAgICAiPGh0bWw+PGhlYWQ+PHNjcmlwdCB0eXBlPSd0ZXh0
L2phdmFzY3JpcHQnPmZ1bmN0aW9uIHZpYnJhdGUoKSB7IG5hdmlnYXRvci52aWJyYXRlKCVzKTsi
Ci0gICAgICAgICIgZG9jdW1lbnQudGl0bGUgPSBcIkxvYWRlZFwiOyB9PC9zY3JpcHQ+PC9oZWFk
Pjxib2R5IG9ubG9hZD0ndmlicmF0ZSgpJz48L2JvZHk+PC9odG1sPiI7Ci0KLSAgICBkYXRhLT5k
aWRSZWNlaXZlVmlicmF0ZUNhbGxiYWNrID0gZmFsc2U7Ci0gICAgZGF0YS0+ZGlkUmVjZWl2ZUNh
bmNlbFZpYnJhdGlvbkNhbGxiYWNrID0gZmFsc2U7Ci0gICAgZGF0YS0+dmlicmF0ZUNhbGxlZENv
dW50ID0gMDsKLSAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0gZWluYV9zdHJidWZfbmV3KCk7Ci0g
ICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50ZihidWZmZXIsIGNvbnRlbnQsIHZpYnJhdGlvblBh
dHRlcm4pOwotICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldywgZWluYV9zdHJi
dWZfc3RyaW5nX2dldChidWZmZXIpLCAwLCAwKTsKLSAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZl
cik7Ci0KLSAgICBpZiAoIXdhaXRGb3JWaWJyYXRpb25FdmVudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgd2hpbGUgKCFkYXRhLT5kaWRSZWNlaXZlVmlicmF0ZUNhbGxiYWNrICYmICFkYXRhLT5k
aWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uQ2FsbGJhY2spCi0gICAgICAgIGVjb3JlX21haW5fbG9v
cF9pdGVyYXRlKCk7Ci19Ci0KLVRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBESVNBQkxFRF9ld2tf
Y29udGV4dF92aWJyYXRpb25fY2xpZW50X2NhbGxiYWNrc19zZXQpCi17Ci0gICAgVmlicmF0aW9u
Q2JEYXRhIGRhdGEgPSB7IGZhbHNlLCBmYWxzZSwgMCwgNTAwMCB9OwotICAgIGV3a19jb250ZXh0
X3ZpYnJhdGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldChld2tfdmlld19jb250ZXh0X2dldCh3ZWJW
aWV3KCkpLCB2aWJyYXRlQ2FsbGJhY2ssIGNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrLCAmZGF0YSk7
Ci0KLSAgICAvLyBWaWJyYXRlIGZvciA1IHNlY29uZHMuCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxT
dHJpbmcod2ViVmlldygpLCAiNTAwMCIsIHRydWUsICZkYXRhKTsKLSAgICBBU1NFUlRfVFJVRShk
YXRhLmRpZFJlY2VpdmVWaWJyYXRlQ2FsbGJhY2spOwotCi0gICAgLy8gQ2FuY2VsIGFueSBleGlz
dGluZyB2aWJyYXRpb25zLgotICAgIGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKHdlYlZpZXcoKSwg
IjAiLCB0cnVlLCAmZGF0YSk7Ci0gICAgQVNTRVJUX1RSVUUoZGF0YS5kaWRSZWNlaXZlQ2FuY2Vs
VmlicmF0aW9uQ2FsbGJhY2spOwotCi0gICAgLy8gVGhpcyBjYXNlIHRoZSBwYXR0ZXJuIHdpbGwg
Y2F1c2UgdGhlIGRldmljZSB0byB2aWJyYXRlIGZvciAyMDAgbXMsIGJlIHN0aWxsIGZvciAxMDAg
bXMsIGFuZCB0aGVuIHZpYnJhdGUgZm9yIDUwMDAgbXMuCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxT
dHJpbmcod2ViVmlldygpLCAiWzIwMCwgMTAwLCA1MDAwXSIsIHRydWUsICZkYXRhKTsKLSAgICBB
U1NFUlRfRVEoMiwgZGF0YS52aWJyYXRlQ2FsbGVkQ291bnQpOwotICAgIEFTU0VSVF9UUlVFKGRh
dGEuZGlkUmVjZWl2ZVZpYnJhdGVDYWxsYmFjayk7Ci0KLSAgICAvLyBDYW5jZWwgb3V0c3RhbmRp
bmcgdmlicmF0aW9uIHBhdHRlcm4uCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmll
dygpLCAiWzBdIiwgdHJ1ZSwgJmRhdGEpOwotICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2
ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKTsKLQotICAgIC8vIFN0b3AgbGlzdGVuaW5nIGZvciB2
aWJyYXRpb24gZXZlbnRzLCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbiB3aXRoIG51bGwgZm9yIHRo
ZSBjYWxsYmFja3MuCi0gICAgZXdrX2NvbnRleHRfdmlicmF0aW9uX2NsaWVudF9jYWxsYmFja3Nf
c2V0KGV3a192aWV3X2NvbnRleHRfZ2V0KHdlYlZpZXcoKSksIDAsIDAsICZkYXRhKTsKLQotICAg
IC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCByZWNlaXZlIHZpYnJhdGlvbiBldmVudC4KLSAgICBsb2Fk
VmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJbNTAwMF0iLCBmYWxzZSwgJmRhdGEpOwot
ICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJMb2FkZWQiKSk7Ci0gICAg
QVNTRVJUX1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7Ci0g
ICAgQVNTRVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZVZpYnJhdGVDYWxsYmFjayk7Ci0KLSAgICAv
LyBNYWtlIHN1cmUgd2UgZG9uJ3QgcmVjZWl2ZSBjYW5jZWwgdmlicmF0aW9uIGV2ZW50LgotICAg
IGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKHdlYlZpZXcoKSwgIjAiLCBmYWxzZSwgJmRhdGEpOwot
ICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJMb2FkZWQiKSk7Ci0gICAg
QVNTRVJUX1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7Ci0g
ICAgQVNTRVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKTsK
LX0KLQogVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb250ZXh0X2NhY2hlX21vZGVsKQog
ewogICAgIEV3a19Db250ZXh0KiBjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmll
dygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L3Rlc3RfZXdrMl92aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rl
c3RzL3Rlc3RfZXdrMl92aWV3LmNwcAppbmRleCA4MDI0MGQyYWU0YTgxYTFkNWE5YWQwNjYxYjc5
YTYwNWIyYmNlNWJjLi4xOTk5NzBkMjljN2RhMGZhMGRkYmI2ZTJjMWQxYzJhYjYwMjUxYTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3
azJfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMv
dGVzdF9ld2syX3ZpZXcuY3BwCkBAIC03OTcsMyArNzk3LDg3IEBAIFRFU1RfRihFV0syVW5pdFRl
c3RCYXNlLCBld2tfdmlld19wYWdpbmF0aW9uKQogICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5j
KGVudmlyb25tZW50LT5kZWZhdWx0VGVzdFBhZ2VVcmwoKSkpOwogICAgIEFTU0VSVF9FUShFV0tf
UEFHSU5BVElPTl9NT0RFX1VOUEFHSU5BVEVELCBld2tfdmlld19wYWdpbmF0aW9uX21vZGVfZ2V0
KHdlYlZpZXcoKSkpOwogfQorCitzdHJ1Y3QgVmlicmF0aW9uQ2JEYXRhIHsKKyAgICBib29sIGRp
ZFJlY2VpdmVWaWJyYXRlOyAvLyBXaGV0aGVyIHRoZSB2aWJyYXRpb24gZXZlbnQgcmVjZWl2ZWQu
CisgICAgYm9vbCBkaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uOyAvLyBXaGV0aGVyIHRoZSBjYW5j
ZWwgdmlicmF0aW9uIGV2ZW50IHJlY2VpdmVkLgorICAgIHVuc2lnbmVkIHZpYnJhdGVDYWxsZWRD
b3VudDsgLy8gVmlicmF0ZSBjYWxsYmFja3MgY291bnQuCisgICAgdWludDY0X3QgZXhwZWN0ZWRW
aWJyYXRpb25UaW1lOyAvLyBFeHBlY3RlZCB2aWJyYXRpb24gdGltZS4KK307CisKK3N0YXRpYyB2
b2lkIG9uVmlicmF0ZSh2b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudElu
Zm8pCit7CisgICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9u
Q2JEYXRhKj4odXNlckRhdGEpOworICAgIHVpbnQ2NF90KiB2aWJyYXRpb25UaW1lID0gc3RhdGlj
X2Nhc3Q8dWludDY0X3QqPihldmVudEluZm8pOworICAgIGlmICgqdmlicmF0aW9uVGltZSA9PSBk
YXRhLT5leHBlY3RlZFZpYnJhdGlvblRpbWUpCisgICAgICAgIGRhdGEtPmRpZFJlY2VpdmVWaWJy
YXRlID0gdHJ1ZTsKKyAgICBkYXRhLT52aWJyYXRlQ2FsbGVkQ291bnQrKzsKK30KKworc3RhdGlj
IHZvaWQgb25DYW5jZWxWaWJyYXRpb24odm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9p
ZCopCit7CisgICAgVmlicmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9u
Q2JEYXRhKj4odXNlckRhdGEpOworICAgIGRhdGEtPmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb24g
PSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyhFdmFzX09i
amVjdCogd2ViVmlldywgY29uc3QgY2hhciogdmlicmF0aW9uUGF0dGVybiwgYm9vbCB3YWl0Rm9y
VmlicmF0aW9uRXZlbnQsIFZpYnJhdGlvbkNiRGF0YSogZGF0YSkKK3sKKyAgICBjb25zdCBjaGFy
KiBjb250ZW50ID0KKyAgICAgICAgIjxodG1sPjxoZWFkPjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZh
c2NyaXB0Jz5mdW5jdGlvbiB2aWJyYXRlKCkgeyBuYXZpZ2F0b3IudmlicmF0ZSglcyk7IgorICAg
ICAgICAiIGRvY3VtZW50LnRpdGxlID0gXCJMb2FkZWRcIjsgfTwvc2NyaXB0PjwvaGVhZD48Ym9k
eSBvbmxvYWQ9J3ZpYnJhdGUoKSc+PC9ib2R5PjwvaHRtbD4iOworCisgICAgZGF0YS0+ZGlkUmVj
ZWl2ZVZpYnJhdGUgPSBmYWxzZTsKKyAgICBkYXRhLT5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9u
ID0gZmFsc2U7CisgICAgZGF0YS0+dmlicmF0ZUNhbGxlZENvdW50ID0gMDsKKyAgICBFaW5hX1N0
cmJ1ZiogYnVmZmVyID0gZWluYV9zdHJidWZfbmV3KCk7CisgICAgZWluYV9zdHJidWZfYXBwZW5k
X3ByaW50ZihidWZmZXIsIGNvbnRlbnQsIHZpYnJhdGlvblBhdHRlcm4pOworICAgIGV3a192aWV3
X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIp
LCAwLCAwKTsKKyAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7CisKKyAgICBpZiAoIXdhaXRG
b3JWaWJyYXRpb25FdmVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCFkYXRhLT5k
aWRSZWNlaXZlVmlicmF0ZSAmJiAhZGF0YS0+ZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbikKKyAg
ICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVz
dEJhc2UsIGV3a19jb250ZXh0X3ZpYnJhdGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldCkKK3sKKyAg
ICBWaWJyYXRpb25DYkRhdGEgZGF0YSA9IHsgZmFsc2UsIGZhbHNlLCAwLCA1MDAwIH07CisgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgInZpYnJhdGUiLCBvblZp
YnJhdGUsICZkYXRhKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmll
dygpLCAiY2FuY2VsLHZpYnJhdGlvbiIsIG9uQ2FuY2VsVmlicmF0aW9uLCAmZGF0YSk7CisKKyAg
ICAvLyBWaWJyYXRlIGZvciA1IHNlY29uZHMuCisgICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmco
d2ViVmlldygpLCAiNTAwMCIsIHRydWUsICZkYXRhKTsKKyAgICBBU1NFUlRfVFJVRShkYXRhLmRp
ZFJlY2VpdmVWaWJyYXRlKTsKKworICAgIC8vIENhbmNlbCBhbnkgZXhpc3RpbmcgdmlicmF0aW9u
cy4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICIwIiwgdHJ1ZSwgJmRh
dGEpOworICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbik7CisK
KyAgICAvLyBUaGlzIGNhc2UgdGhlIHBhdHRlcm4gd2lsbCBjYXVzZSB0aGUgZGV2aWNlIHRvIHZp
YnJhdGUgZm9yIDIwMCBtcywgYmUgc3RpbGwgZm9yIDEwMCBtcywgYW5kIHRoZW4gdmlicmF0ZSBm
b3IgNTAwMCBtcy4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJbMjAw
LCAxMDAsIDUwMDBdIiwgdHJ1ZSwgJmRhdGEpOworICAgIEFTU0VSVF9FUSgyLCBkYXRhLnZpYnJh
dGVDYWxsZWRDb3VudCk7CisgICAgQVNTRVJUX1RSVUUoZGF0YS5kaWRSZWNlaXZlVmlicmF0ZSk7
CisKKyAgICAvLyBDYW5jZWwgb3V0c3RhbmRpbmcgdmlicmF0aW9uIHBhdHRlcm4uCisgICAgbG9h
ZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAiWzBdIiwgdHJ1ZSwgJmRhdGEpOworICAg
IEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbik7CisKKyAgICAvLyBT
dG9wIGxpc3RlbmluZyBmb3IgdmlicmF0aW9uIGV2ZW50cywgYnkgY2FsbGluZyB0aGUgZnVuY3Rp
b24gd2l0aCBudWxsIGZvciB0aGUgY2FsbGJhY2tzLgorICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2Nh
bGxiYWNrX2RlbCh3ZWJWaWV3KCksICJ2aWJyYXRlIiwgb25WaWJyYXRlKTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAiY2FuY2VsLHZpYnJhdGlvbiIsIG9u
Q2FuY2VsVmlicmF0aW9uKTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCByZWNlaXZlIHZp
YnJhdGlvbiBldmVudC4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJb
NTAwMF0iLCBmYWxzZSwgJmRhdGEpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hh
bmdlZFRvKCJMb2FkZWQiKSk7CisgICAgQVNTRVJUX1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190
aXRsZV9nZXQod2ViVmlldygpKSk7CisgICAgQVNTRVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZVZp
YnJhdGUpOworCisgICAgLy8gTWFrZSBzdXJlIHdlIGRvbid0IHJlY2VpdmUgY2FuY2VsIHZpYnJh
dGlvbiBldmVudC4KKyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICIwIiwg
ZmFsc2UsICZkYXRhKTsKKyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygi
TG9hZGVkIikpOworICAgIEFTU0VSVF9TVFJFUSgiTG9hZGVkIiwgZXdrX3ZpZXdfdGl0bGVfZ2V0
KHdlYlZpZXcoKSkpOworICAgIEFTU0VSVF9GQUxTRShkYXRhLmRpZFJlY2VpdmVDYW5jZWxWaWJy
YXRpb24pOworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXgg
ZmU2OWYyYjdlMDNiZDliMTdkNTI2OTYzZDgzYzA1YmM1N2M0ZjAxMS4uMTE2NTExNjA2ZGI0OWYx
OGY1ZjE4ZjYyMjcyOWNlZWUzZjBhOTQ0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcApAQCAtNzksMTAgKzc5LDYgQEAKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1h
bmFnZXJQcm94eS5oIgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotI2luY2x1ZGUg
IldlYlZpYnJhdGlvblByb3h5LmgiCi0jZW5kaWYKLQogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTE2Miw5ICsxNTgsNiBA
QCBXZWJDb250ZXh0OjpXZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0
IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYQogI2lmIFVTRShTT1VQKQogICAgIG1fc291cFJlcXVl
c3RNYW5hZ2VyUHJveHkgPSBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMp
OwogI2VuZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBtX3ZpYnJhdGlvblByb3h5ID0g
V2ViVmlicmF0aW9uUHJveHk6OmNyZWF0ZSh0aGlzKTsKLSNlbmRpZgogICAgIAogI2lmICFMT0df
RElTQUJMRUQKICAgICBXZWJLaXQ6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCk7
CkBAIC0yNDEsMTEgKzIzNCw2IEBAIFdlYkNvbnRleHQ6On5XZWJDb250ZXh0KCkKICAgICBtX3Nv
dXBSZXF1ZXN0TWFuYWdlclByb3h5LT5jbGVhckNvbnRleHQoKTsKICNlbmRpZgogCi0jaWYgRU5B
QkxFKFZJQlJBVElPTikKLSAgICBtX3ZpYnJhdGlvblByb3h5LT5pbnZhbGlkYXRlKCk7Ci0gICAg
bV92aWJyYXRpb25Qcm94eS0+Y2xlYXJDb250ZXh0KCk7Ci0jZW5kaWYKLQogICAgIGludmFsaWRh
dGVDYWxsYmFja01hcChtX2RpY3Rpb25hcnlDYWxsYmFja3MpOwogCiAgICAgcGxhdGZvcm1JbnZh
bGlkYXRlQ29udGV4dCgpOwpAQCAtNTUwLDkgKzUzOCw2IEBAIHZvaWQgV2ViQ29udGV4dDo6ZGlz
Y29ubmVjdFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogI2lmIFVTRShTT1VQKQog
ICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKICNlbmRpZgotI2lm
IEVOQUJMRShWSUJSQVRJT04pCi0gICAgbV92aWJyYXRpb25Qcm94eS0+aW52YWxpZGF0ZSgpOwot
I2VuZGlmCiAKICAgICAvLyBXaGVuIG91dCBvZiBwcm9jZXNzIHBsdWctaW5zIGFyZSBlbmFibGVk
LCB3ZSBkb24ndCB3YW50IHRvIGludmFsaWRhdGUgdGhlIHBsdWctaW4gc2l0ZSBkYXRhCiAgICAg
Ly8gbWFuYWdlciBqdXN0IGJlY2F1c2UgdGhlIHdlYiBwcm9jZXNzIGNyYXNoZXMgc2luY2UgaXQn
cyBub3QgaW52b2x2ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCAw
ZDQ0NDU0YmFiNjNhNjE2M2IzNjM2Zjg2MWEzNWI0N2ViMDM0NDhmLi5kODk0YTAwYTE4Yjk0NDM3
Yjc1NDU1MTc0MmYzMThlZWFhNGY5YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmgKQEAgLTY5LDkgKzY5LDYgQEAgY2xhc3MgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eTsKICNpZiBVU0UoU09VUCkKIGNsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OwogI2Vu
ZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLWNsYXNzIFdlYlZpYnJhdGlvblByb3h5OwotI2Vu
ZGlmCiBzdHJ1Y3QgU3RhdGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczsKICAgICAKQEAgLTIwMyw5ICsyMDAsNiBAQCBwdWJsaWM6CiAjaWYgVVNFKFNPVVAp
CiAgICAgV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkqIHNvdXBSZXF1ZXN0TWFuYWdlclByb3h5
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5nZXQoKTsgfQogI2Vu
ZGlmCi0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICBXZWJWaWJyYXRpb25Qcm94eSogdmlicmF0
aW9uUHJveHkoKSBjb25zdCB7IHJldHVybiBtX3ZpYnJhdGlvblByb3h5LmdldCgpOyB9Ci0jZW5k
aWYKIAogICAgIHN0cnVjdCBTdGF0aXN0aWNzIHsKICAgICAgICAgdW5zaWduZWQgd2tWaWV3Q291
bnQ7CkBAIC0zNjgsOSArMzYyLDYgQEAgcHJpdmF0ZToKICNpZiBVU0UoU09VUCkKICAgICBSZWZQ
dHI8V2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHk+IG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHk7
CiAjZW5kaWYKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotICAgIFJlZlB0cjxXZWJWaWJyYXRpb25Q
cm94eT4gbV92aWJyYXRpb25Qcm94eTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQogICAg
IGJvb2wgbV9zaG91bGRQYWludE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxNDU2NjExY2IwNzljYWVlOTJhZDkyMDYwNWRjZTIw
NWI1MzFiYzQ2Li4yMjFlM2QxMWRmMTg0Mjg3ZjRhY2FmNTNjZDMwYjMzNGVkMDhiOWI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTExLDYgKzExMSwx
MCBAQAogI2luY2x1ZGUgIldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShWSUJSQVRJT04pCisjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHkuaCIKKyNl
bmRpZgorCiAjaWZuZGVmIE5ERUJVRwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50
ZXIuaD4KICNlbmRpZgpAQCAtMjQ1LDYgKzI0OSwxMCBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4g
cAogICAgIFdlYkNvbnRleHQ6OnN0YXRpc3RpY3MoKS53a1BhZ2VDb3VudCsrOwogCiAgICAgbV9w
YWdlR3JvdXAtPmFkZFBhZ2UodGhpcyk7CisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgIG1f
dmlicmF0aW9uID0gV2ViVmlicmF0aW9uUHJveHk6OmNyZWF0ZSh0aGlzKTsKKyNlbmRpZgogfQog
CiBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQpAQCAtNDQ3LDYgKzQ1NSwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJB
VElPTikKKyAgICBtX3ZpYnJhdGlvbi0+aW52YWxpZGF0ZSgpOworI2VuZGlmCisKICAgICBpZiAo
bV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikgewogICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIg
PSAwOwpAQCAtMzU5OCw2ICszNjEwLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlk
Q3Jhc2goKQogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBtX3Zp
YnJhdGlvbi0+aW52YWxpZGF0ZSgpOworI2VuZGlmCisKICAgICBpZiAobV9vcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lcikgewogICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlk
YXRlKCk7CiAgICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI4ZTM0YmM5MDkxYjRmNmRh
YjQwMDg5ZjM1MTVkZjkwNDUxNmUxZjIuLjIyYzc1YzdlMDFjOGNjNzU4NGZhMGFhMjI1Mzc3MTdj
MTlmZjkwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE1
MCw2ICsxNTAsOSBAQCBjbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5OwogY2xh
c3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogY2xhc3MgV2ViVVJMUmVx
dWVzdDsKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorY2xhc3MgV2ViVmlicmF0aW9uUHJveHk7Cisj
ZW5kaWYKIGNsYXNzIFdlYldoZWVsRXZlbnQ7CiBzdHJ1Y3QgQXR0cmlidXRlZFN0cmluZzsKIHN0
cnVjdCBDb2xvclNwYWNlRGF0YTsKQEAgLTI2NSw2ICsyNjgsMTAgQEAgcHVibGljOgogICAgIFdl
Ykluc3BlY3RvclByb3h5KiBpbnNwZWN0b3IoKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJB
VElPTikKKyAgICBXZWJWaWJyYXRpb25Qcm94eSogdmlicmF0aW9uKCkgeyByZXR1cm4gbV92aWJy
YXRpb24uZ2V0KCk7IH0KKyNlbmRpZgorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAg
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkqIGZ1bGxTY3JlZW5NYW5hZ2VyKCk7CiAjZW5kaWYK
QEAgLTEwNjMsNiArMTA3MCwxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5PiBtX2Z1bGxTY3JlZW5NYW5hZ2VyOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
VklCUkFUSU9OKQorICAgIFJlZlB0cjxXZWJWaWJyYXRpb25Qcm94eT4gbV92aWJyYXRpb247Cisj
ZW5kaWYKKwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+ID4gbV92
b2lkQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxEYXRhQ2FsbGJhY2s+
ID4gbV9kYXRhQ2FsbGJhY2tzOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTdHJpbmdD
YWxsYmFjaz4gPiBtX3N0cmluZ0NhbGxiYWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViVmlicmF0aW9uUHJveHkuY3BwCmluZGV4IDRhNjQ1ZDU0Mzc3ZjcyMzBkZGU0ZjZlMDA5
ODllYzUzYzM0ODMyODguLjJlNzkwYzJmOGZhMjI0NzVlZDU4YWMwODZiYjgyMmQ5NTk1MGM5ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNwcApA
QCAtMjksMjggKzI5LDMyIEBACiAjaWYgRU5BQkxFKFZJQlJBVElPTikKIAogI2luY2x1ZGUgIldl
YkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2VzLmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBXZWJWaWJy
YXRpb25Qcm94eTo6Y3JlYXRlKFdlYkNvbnRleHQqIGNvbnRleHQpCitQYXNzUmVmUHRyPFdlYlZp
YnJhdGlvblByb3h5PiBXZWJWaWJyYXRpb25Qcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94eSogcGFn
ZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpYnJhdGlvblByb3h5KGNvbnRleHQp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZpYnJhdGlvblByb3h5KHBhZ2UpKTsKIH0K
IAotV2ViVmlicmF0aW9uUHJveHk6OldlYlZpYnJhdGlvblByb3h5KFdlYkNvbnRleHQqIGNvbnRl
eHQpCi0gICAgOiBtX2NvbnRleHQoY29udGV4dCkKK1dlYlZpYnJhdGlvblByb3h5OjpXZWJWaWJy
YXRpb25Qcm94eShXZWJQYWdlUHJveHkqIHBhZ2UpCisgICAgOiBtX3BhZ2UocGFnZSkKIHsKLSAg
ICBtX2NvbnRleHQtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlicmF0aW9uUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgdGhpcyk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkt
PmNvbnRleHQoKS0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJWaWJyYXRpb25Qcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCB0aGlzKTsKIH0KIAog
V2ViVmlicmF0aW9uUHJveHk6On5XZWJWaWJyYXRpb25Qcm94eSgpCiB7CisgICAgbV9wYWdlLT5w
cm9jZXNzKCktPmNvbnRleHQoKS0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJW
aWJyYXRpb25Qcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
IH0KIAogdm9pZCBXZWJWaWJyYXRpb25Qcm94eTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgY2FuY2Vs
VmlicmF0aW9uKCk7CisgICAgbV9wcm92aWRlci5pbml0aWFsaXplKDApOwogfQogCiB2b2lkIFdl
YlZpYnJhdGlvblByb3h5Ojppbml0aWFsaXplUHJvdmlkZXIoY29uc3QgV0tWaWJyYXRpb25Qcm92
aWRlciogcHJvdmlkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
VmlicmF0aW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Q
cm94eS5oCmluZGV4IDVjNmRlMTdkNzIxMDRmYWQwNDQ2MGMxMGJlMzQxZWY5NTIxZTEzZmEuLjAw
MzFkZmQzNjZjOTY5Yzc0Nzc5MDUwZDdkMmZjY2I0ZDFmYjUwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oCkBAIC0zNSwzNSArMzUsMzQgQEAKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkNvbnRleHQ7CitjbGFzcyBXZWJQYWdlUHJv
eHk7CiAKIGNsYXNzIFdlYlZpYnJhdGlvblByb3h5IDogcHVibGljIEFQSU9iamVjdCwgcHJpdmF0
ZSBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBU
eXBlIEFQSVR5cGUgPSBUeXBlVmlicmF0aW9uOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
VmlicmF0aW9uUHJveHk+IGNyZWF0ZShXZWJDb250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViVmlicmF0aW9uUHJveHk+IGNyZWF0ZShXZWJQYWdlUHJveHkqKTsKICAgICB2aXJ0dWFs
IH5XZWJWaWJyYXRpb25Qcm94eSgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCk7Ci0gICAgdm9p
ZCBjbGVhckNvbnRleHQoKSB7IG1fY29udGV4dCA9IDA7IH0KIAogICAgIHZvaWQgaW5pdGlhbGl6
ZVByb3ZpZGVyKGNvbnN0IFdLVmlicmF0aW9uUHJvdmlkZXIqKTsKIAorICAgIC8vIEltcGxlbWVu
dGVkIGluIGdlbmVyYXRlZCBXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKKyAg
ICB2b2lkIGRpZFJlY2VpdmVXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVj
dGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKTsKKwog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJWaWJyYXRpb25Qcm94eShXZWJDb250ZXh0Kik7Cisg
ICAgZXhwbGljaXQgV2ViVmlicmF0aW9uUHJveHkoV2ViUGFnZVByb3h5Kik7CiAKICAgICB2aXJ0
dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAogICAgIC8vIENvcmVJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpNZXNzYWdl
RGVjb2RlciYpIE9WRVJSSURFOwogCi0gICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdl
YlZpYnJhdGlvblByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAotICAgIHZvaWQgZGlkUmVjZWl2ZVdl
YlZpYnJhdGlvblByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlELCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwotCiAgICAgdm9pZCB2aWJyYXRlKHVp
bnQ2NF90IHZpYnJhdGlvblRpbWUpOwogICAgIHZvaWQgY2FuY2VsVmlicmF0aW9uKCk7CiAKLSAg
ICBXZWJDb250ZXh0KiBtX2NvbnRleHQ7CisgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CiAgICAg
V2ViVmlicmF0aW9uUHJvdmlkZXIgbV9wcm92aWRlcjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
ZWZiMTYxZTIxYWNlMjkwZTZlYTZhMzE3ZTlkNzQ3YjljZDRhNjE3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25DbGllbnRFZmwuY3BwCkBA
IC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJWaWJyYXRpb25DbGllbnRFZmwuaCIKKworI2lmIEVOQUJMRShWSUJSQVRJT04p
CisKKyNpbmNsdWRlICJFd2tWaWV3SW1wbC5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2lu
Y2x1ZGUgIldLVmlicmF0aW9uLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK3N0YXRp
YyBpbmxpbmUgVmlicmF0aW9uQ2xpZW50RWZsKiB0b1ZpYnJhdGlvbkNsaWVudChjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaWJyYXRpb25DbGllbnRF
ZmwqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK3ZvaWQgVmlicmF0aW9u
Q2xpZW50RWZsOjp2aWJyYXRlQ2FsbGJhY2soV0tWaWJyYXRpb25SZWYsIHVpbnQ2NF90IHZpYnJh
dGlvblRpbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9WaWJyYXRpb25DbGll
bnQoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPnZpYnJhdGUodmlicmF0aW9uVGltZSk7Cit9CisK
K3ZvaWQgVmlicmF0aW9uQ2xpZW50RWZsOjpjYW5jZWxWaWJyYXRpb25DYWxsYmFjayhXS1ZpYnJh
dGlvblJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICB0b1ZpYnJhdGlvbkNsaWVu
dChjbGllbnRJbmZvKS0+bV92aWV3SW1wbC0+Y2FuY2VsVmlicmF0aW9uKCk7Cit9CisKK1Bhc3NP
d25QdHI8VmlicmF0aW9uQ2xpZW50RWZsPiBWaWJyYXRpb25DbGllbnRFZmw6OmNyZWF0ZShFd2tW
aWV3SW1wbCogdmlld0ltcGwpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBWaWJyYXRpb25D
bGllbnRFZmwodmlld0ltcGwpKTsKK30KKworVmlicmF0aW9uQ2xpZW50RWZsOjpWaWJyYXRpb25D
bGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1w
bCkKK3sKKyAgICBBU1NFUlQobV92aWV3SW1wbCk7CisKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9
IG1fdmlld0ltcGwtPndrUGFnZSgpOworICAgIEFTU0VSVChwYWdlUmVmKTsKKworICAgIFdLVmli
cmF0aW9uUmVmIHdrVmlicmF0aW9uID0gV0tQYWdlR2V0VmlicmF0aW9uKHBhZ2VSZWYpOworICAg
IEFTU0VSVCh3a1ZpYnJhdGlvbik7CisKKyAgICBXS1ZpYnJhdGlvblByb3ZpZGVyIHdrVmlicmF0
aW9uUHJvdmlkZXIgPSB7CisgICAgICAgIGtXS1ZpYnJhdGlvblByb3ZpZGVyQ3VycmVudFZlcnNp
b24sCisgICAgICAgIHRoaXMsIC8vIGNsaWVudEluZm8KKyAgICAgICAgdmlicmF0ZUNhbGxiYWNr
LAorICAgICAgICBjYW5jZWxWaWJyYXRpb25DYWxsYmFjaworICAgIH07CisgICAgV0tWaWJyYXRp
b25TZXRQcm92aWRlcih3a1ZpYnJhdGlvbiwgJndrVmlicmF0aW9uUHJvdmlkZXIpOworfQorCitW
aWJyYXRpb25DbGllbnRFZmw6On5WaWJyYXRpb25DbGllbnRFZmwoKQoreworICAgIFdLUGFnZVJl
ZiBwYWdlUmVmID0gbV92aWV3SW1wbC0+d2tQYWdlKCk7CisgICAgQVNTRVJUKHBhZ2VSZWYpOwor
CisgICAgV0tWaWJyYXRpb25SZWYgd2tWaWJyYXRpb24gPSBXS1BhZ2VHZXRWaWJyYXRpb24ocGFn
ZVJlZik7CisgICAgQVNTRVJUKHdrVmlicmF0aW9uKTsKKworICAgIFdLVmlicmF0aW9uU2V0UHJv
dmlkZXIod2tWaWJyYXRpb24sIDApOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50
RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvbkNsaWVudEVmbC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM2ZDNmNzllMTkwOTQwNGNkMTE2NGE1NTdjOTBlNWQzZjBmN2E1NWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvbkNs
aWVudEVmbC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VmlicmF0aW9uQ2xpZW50RWZsX2gKKyNkZWZpbmUgVmlicmF0aW9uQ2xpZW50RWZsX2gKKworI2lm
IEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgVmlicmF0aW9uQ2xpZW50RWZsIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxWaWJyYXRpb25DbGllbnRFZmw+IGNyZWF0ZShFd2tWaWV3SW1wbCopOwor
CisgICAgdmlydHVhbCB+VmlicmF0aW9uQ2xpZW50RWZsKCk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgVmlicmF0aW9uQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKik7CisKKyAgICBzdGF0aWMgdm9p
ZCB2aWJyYXRlQ2FsbGJhY2soV0tWaWJyYXRpb25SZWYsIHVpbnQ2NF90IHZpYnJhdGlvblRpbWUs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGNhbmNlbFZpYnJhdGlv
bkNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworICAg
IEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCisjZW5kaWYgLy8gVmlicmF0aW9uQ2xpZW50
RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlicmF0aW9u
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92
aWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZTYyOTY4YzI1MTdlYjI2
MjI3Yzc1MTc3ZTJiZmRhMmNiZTEzY2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92
aWRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlZpYnJhdGlvblByb3ZpZGVyLmgi
Ci0KLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5j
bHVkZSAiV0tDb250ZXh0LmgiCi0jaW5jbHVkZSAiV0tWaWJyYXRpb24uaCIKLSNpbmNsdWRlIDxF
dmFzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKLQotLyoqCi0gKiBcc3RydWN0ICBFd2tfVmlicmF0aW9uX0NsaWVudAotICogQGJyaWVmICAg
Q29udGFpbnMgdGhlIHZpYnJhdGlvbiBjbGllbnQgY2FsbGJhY2tzLgotICovCi1zdHJ1Y3QgRXdr
X1ZpYnJhdGlvbl9DbGllbnQgewotICAgIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2Ig
dmlicmF0ZTsKLSAgICBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiIGNh
bmNlbFZpYnJhdGlvbjsKLSAgICB2b2lkKiB1c2VyRGF0YTsKLQotICAgIEV3a19WaWJyYXRpb25f
Q2xpZW50KEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2IgdmlicmF0ZSwgRXdrX1ZpYnJh
dGlvbl9DbGllbnRfVmlicmF0aW9uX0NhbmNlbF9DYiBjYW5jZWxWaWJyYXRpb24sIHZvaWQqIHVz
ZXJEYXRhKQotICAgICAgICA6IHZpYnJhdGUodmlicmF0ZSkKLSAgICAgICAgLCBjYW5jZWxWaWJy
YXRpb24oY2FuY2VsVmlicmF0aW9uKQotICAgICAgICAsIHVzZXJEYXRhKHVzZXJEYXRhKQotICAg
IHsgfQotfTsKLQotc3RhdGljIGlubGluZSBWaWJyYXRpb25Qcm92aWRlciogdG9WaWJyYXRpb25Q
cm92aWRlcihjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxWaWJyYXRpb25Qcm92aWRlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0K
LQotc3RhdGljIHZvaWQgdmlicmF0ZUNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCB1aW50NjRfdCB2
aWJyYXRpb25UaW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHRvVmlicmF0aW9u
UHJvdmlkZXIoY2xpZW50SW5mbyktPnZpYnJhdGUodmlicmF0aW9uVGltZSk7Ci19Ci0KLXN0YXRp
YyB2b2lkIGNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQotewotICAgIHRvVmlicmF0aW9uUHJvdmlkZXIoY2xpZW50SW5mbyktPmNh
bmNlbFZpYnJhdGlvbigpOwotfQotCi1QYXNzUmVmUHRyPFZpYnJhdGlvblByb3ZpZGVyPiBWaWJy
YXRpb25Qcm92aWRlcjo6Y3JlYXRlKFdLQ29udGV4dFJlZiB3a0NvbnRleHQpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBWaWJyYXRpb25Qcm92aWRlcih3a0NvbnRleHQpKTsKLX0KLQotVmli
cmF0aW9uUHJvdmlkZXI6OlZpYnJhdGlvblByb3ZpZGVyKFdLQ29udGV4dFJlZiB3a0NvbnRleHQp
Ci0gICAgOiBtX3drQ29udGV4dCh3a0NvbnRleHQpCi17Ci0gICAgQVNTRVJUKG1fd2tDb250ZXh0
LmdldCgpKTsKLQotICAgIFdLVmlicmF0aW9uUmVmIHdrVmlicmF0aW9uID0gV0tDb250ZXh0R2V0
VmlicmF0aW9uKG1fd2tDb250ZXh0LmdldCgpKTsKLSAgICBBU1NFUlQod2tWaWJyYXRpb24pOwot
Ci0gICAgV0tWaWJyYXRpb25Qcm92aWRlciB3a1ZpYnJhdGlvblByb3ZpZGVyID0gewotICAgICAg
ICBrV0tWaWJyYXRpb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uLAotICAgICAgICB0aGlzLCAvLyBj
bGllbnRJbmZvCi0gICAgICAgIHZpYnJhdGVDYWxsYmFjaywKLSAgICAgICAgY2FuY2VsVmlicmF0
aW9uQ2FsbGJhY2sKLSAgICB9OwotICAgIFdLVmlicmF0aW9uU2V0UHJvdmlkZXIod2tWaWJyYXRp
b24sICZ3a1ZpYnJhdGlvblByb3ZpZGVyKTsKLX0KLQotVmlicmF0aW9uUHJvdmlkZXI6On5WaWJy
YXRpb25Qcm92aWRlcigpCi17Ci0gICAgV0tWaWJyYXRpb25SZWYgd2tWaWJyYXRpb24gPSBXS0Nv
bnRleHRHZXRWaWJyYXRpb24obV93a0NvbnRleHQuZ2V0KCkpOwotICAgIEFTU0VSVCh3a1ZpYnJh
dGlvbik7Ci0KLSAgICBXS1ZpYnJhdGlvblNldFByb3ZpZGVyKHdrVmlicmF0aW9uLCAwKTsKLX0K
LQotdm9pZCBWaWJyYXRpb25Qcm92aWRlcjo6dmlicmF0ZSh1aW50NjRfdCB2aWJyYXRpb25UaW1l
KQotewotICAgIGlmIChtX3ZpYnJhdGlvbkNsaWVudCAmJiBtX3ZpYnJhdGlvbkNsaWVudC0+dmli
cmF0ZSkKLSAgICAgICAgbV92aWJyYXRpb25DbGllbnQtPnZpYnJhdGUodmlicmF0aW9uVGltZSwg
bV92aWJyYXRpb25DbGllbnQtPnVzZXJEYXRhKTsKLX0KLQotdm9pZCBWaWJyYXRpb25Qcm92aWRl
cjo6Y2FuY2VsVmlicmF0aW9uKCkKLXsKLSAgICBpZiAobV92aWJyYXRpb25DbGllbnQgJiYgbV92
aWJyYXRpb25DbGllbnQtPmNhbmNlbFZpYnJhdGlvbikKLSAgICAgICAgbV92aWJyYXRpb25DbGll
bnQtPmNhbmNlbFZpYnJhdGlvbihtX3ZpYnJhdGlvbkNsaWVudC0+dXNlckRhdGEpOwotfQotCi12
b2lkIFZpYnJhdGlvblByb3ZpZGVyOjpzZXRWaWJyYXRpb25DbGllbnRDYWxsYmFja3MoRXdrX1Zp
YnJhdGlvbl9DbGllbnRfVmlicmF0ZV9DYiB2aWJyYXRlLCBFd2tfVmlicmF0aW9uX0NsaWVudF9W
aWJyYXRpb25fQ2FuY2VsX0NiIGNhbmNlbFZpYnJhdGlvbiwgdm9pZCogZGF0YSkKLXsKLSAgICBt
X3ZpYnJhdGlvbkNsaWVudCA9IGFkb3B0UHRyKG5ldyBFd2tfVmlicmF0aW9uX0NsaWVudCh2aWJy
YXRlLCBjYW5jZWxWaWJyYXRpb24sIGRhdGEpKTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShWSUJS
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlv
blByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvblByb3Zp
ZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4MTAzOTNkZWE5MzgzOTU4YTcx
NmE1YjI2NTMxMGJkMGNmMmY0ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBWaWJyYXRpb25Qcm92aWRlcl9oCi0jZGVmaW5lIFZpYnJhdGlvblByb3ZpZGVyX2gK
LQotI2lmIEVOQUJMRShWSUJSQVRJT04pCi0KLSNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2lu
Y2x1ZGUgImV3a19jb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi10eXBlZGVmIHN0cnVjdCBFd2tfVmlicmF0aW9uX0Ns
aWVudCBFd2tfVmlicmF0aW9uX0NsaWVudDsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFZpYnJhdGlvblByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VmlicmF0aW9uUHJvdmlkZXI+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWJyYXRpb25Qcm92aWRlcj4gY3Jl
YXRlKFdLQ29udGV4dFJlZik7Ci0gICAgdmlydHVhbCB+VmlicmF0aW9uUHJvdmlkZXIoKTsKLQot
ICAgIHZvaWQgdmlicmF0ZSh1aW50NjRfdCB2aWJyYXRpb25UaW1lKTsKLSAgICB2b2lkIGNhbmNl
bFZpYnJhdGlvbigpOwotICAgIHZvaWQgc2V0VmlicmF0aW9uQ2xpZW50Q2FsbGJhY2tzKEV3a19W
aWJyYXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2IsIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlv
bl9DYW5jZWxfQ2IsIHZvaWQqKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaWJyYXRpb25Q
cm92aWRlcihXS0NvbnRleHRSZWYpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBt
X3drQ29udGV4dDsKLSAgICBPd25QdHI8RXdrX1ZpYnJhdGlvbl9DbGllbnQ+IG1fdmlicmF0aW9u
Q2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
VklCUkFUSU9OKQotCi0jZW5kaWYgLy8gVmlicmF0aW9uUHJvdmlkZXJfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172788</attachid>
            <date>2012-11-07 06:55:24 -0800</date>
            <delta_ts>2012-11-07 17:29:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100334-20121107235334.patch</filename>
            <type>text/plain</type>
            <size>49235</size>
            <attacher name="Byungwoo Lee">bw80.lee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDI1M2NhYTVmYTA1OWE5
YjQ3ZDcyYWJiNWM5NGEwODk2ODAwY2MzNC4uNGMwNzg2ZTgyZjgyNzhlMzMyZmJmMjY3MmM1Njgz
M2FmNzE1NzU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAxMi0xMS0wNyAgQnl1
bmd3b28gTGVlICA8Ync4MC5sZWVAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW1dLMl0gTWFrZSBX
ZWJWaWJyYXRpb25Qcm94eSB0byBiZSBhIG1lbWJlciBvZiBXZWJQYWdlUHJveHkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAzMzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJWaWJyYXRpb25Qcm94
eSBzaG91bGQgYmUgYSBtZW1iZXIgb2YgV2ViUGFnZVByb3h5LCBiZWNhdXNlIHRoZSBJUEMKKyAg
ICAgICAgbWVzc2FnZXMgb2YgV2ViVmlicmF0aW9uUHJveHkgaGF2ZSBwYWdlIGRlc3RpbmF0aW9u
IElELgorCisgICAgICAgIFRoZSByMTMyMzg2IHByb3Bvc2VkIGEgd2F5IHRvIGFkZC9kZWxldGUg
bWVzc2FnZSByZWNlaXZlcnMgdGhhdCBjYW4KKyAgICAgICAgaGFuZGxlIElQQyBtZXNzYWdlcyB3
aXRoIGRlc3RpbmF0aW9uIElELgorCisgICAgICAgIFByZXZpb3VzIGltcGxlbWVudGF0aW9uIHRo
YXQgY3JlYXRpbmcgV2ViVmlicmF0aW9uUHJveHkgYXMgYSBXZWJDb250ZXh0CisgICAgICAgIG1l
bWJlciBhbmQgdXNpbmcgdGhlIGdsb2JhbCBtZXNzYWdlIHJlY2VpdmVyIGZvciB0aGUgcHJveHkg
Y2FuIG1ha2UKKyAgICAgICAgYXNzZXJ0aW9ucyBhZnRlciByMTMyMzg2LgorCisgICAgICAgIFRv
IGhhbmRsZSB0aGUgdmlicmF0aW9uIElQQyBtZXNzYWdlcyBwcm9wZXJseSwgdGhpcyBwYXRjaCB3
aWxsIGRvIHRoZQorICAgICAgICBmb2xsb3dpbmdzLgorCisgICAgICAgIDEpIEluc3RlYWQgb2Yg
V2ViQ29udGV4dCwgV2ViUGFnZVByb3h5IHdpbGwgaGF2ZSB0aGUgV2ViVmlicmF0aW9uUHJveHku
CisKKyAgICAgICAgMikgV2ViVmlicmF0aW9uUHJveHkgd2lsbCBhZGQgaXRzZWxmIHRvIHRoZSBt
ZXNzYWdlIHJlY2VpdmVyIG1hcCBvZgorICAgICAgICAgICB0aGUgV2ViQ29udGV4dCB3aXRoIHBh
Z2UgZGVzdGluYXRpb24gSUQuCisKKyAgICAgICAgMykgV2hlbiBXZWJQcm9jZXNzUHJveHkgcmVj
ZWl2ZWQgdmlicmF0aW9uIGlwYyBtZXNzYWdlcywgaXQgd2lsbAorICAgICAgICAgICBmb3J3YXJk
IHRoZSBtZXNzYWdlcyB0byB0aGUgV2ViQ29udGV4dCBmaXJzdC4gVGhlbiB0aGUgbWVzc2FnZQor
ICAgICAgICAgICByZWNlaXZlciBtYXAgb2YgdGhlIFdlYkNvbnRleHQgd2lsbCBoYW5kbGUgdGhl
IG1lc3NhZ2VzIHdpdGggdGhlCisgICAgICAgICAgIHJlZ2lzdGVyZWQgV2ViVmlicmF0aW9uUHJv
eHkuCisKKyAgICAgICAgNCkgQVBJcyB3aWxsIGJlIG1vZGlmaWVkIHRvIGFwcGx5IHRoZXNlIGNo
YW5nZXMuCisgICAgICAgICAgIGEpIFdLIEFQSSB0byBnZXQgV0tWaWJyYXRpb25SZWYgd2lsbCB1
c2UgV0tQYWdlUmVmIG5vdCBXS0NvbnRleHRSZWYuCisgICAgICAgICAgIGIpIEVGTCBBUElzIGFu
ZCBBUEkgdGVzdCBmb3IgdGhlIHZpYnJhdGlvbiB3aWxsIGFsc28gYmUgY2hhbmdlZC4KKyAgICAg
ICAgICAgICAgLSBFd2tWaWV3SW1wbCB3aWxsIGhhdmUgdmlicmF0aW9uIGNsaWVudC4gKEV3a0Nv
bnRleHQgd2lsbCBub3QKKyAgICAgICAgICAgICAgICBoYXZlIGl0KQorICAgICAgICAgICAgICAt
IFByZXZpb3VzIEFQSSB0byByZWdpc3RlciB0aGUgdmlicmF0aW9uIGNhbGxiYWNrIHdpbGwgYmUg
cmVtb3ZlZC4KKyAgICAgICAgICAgICAgLSBOZXcgc2lnbmFscyBmb3IgdmlicmF0aW9uIHdpbGwg
YmUgYWRkZWQgdG8gdGhlIEV3a1ZpZXdJbXBsLgorICAgICAgICAgICAgICAtIFZpYnJhdGlvblBy
b3h5IHdpbGwgYmUgcmVuYW1lZCB0byBWaWJyYXRpb25DbGllbnQgZm9yIHRoZQorICAgICAgICAg
ICAgICAgIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgY2xpZW50cyBpbiBFd2tWaWV3SW1wbC4KKyAg
ICAgICAgICAgICAgLSBWaWJyYXRpb25DbGllbnQgd2lsbCB1c2UgRXdrVmlld0ltcGwgaW5zdGVh
ZCBvZiBFd2tDb250ZXh0LgorICAgICAgICAgICAgICAtIFByZXZpb3VzIEFQSSB0ZXN0IGZvciB2
aWJyYXRpb24gd2lsbCBiZSBtb3ZlZCBmcm9tIGNvbnRleHQgdGVzdAorICAgICAgICAgICAgICAg
IHRvIHZpZXcgdGVzdCwgYW5kIGl0IHdpbGwgdXNlIHRoZSBjaGFuZ2VkIEFQSS4KKworICAgICAg
ICAqIFBsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRl
eHQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZUdldFZpYnJhdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaDoKKyAgICAgICAgKEV3a1ZpZXdDYWxsYmFj
a3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFd2tWaWV3SW1w
bCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwOgorICAgICAg
ICAoRXdrQ29udGV4dDo6RXdrQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2NvbnRleHQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9w
cml2YXRlLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoRXdrQ29udGV4dCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHA6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcuY3BwOgorICAgICAgICAoVmlicmF0aW9uQ2JE
YXRhKToKKyAgICAgICAgKG9uVmlicmF0ZSk6CisgICAgICAgIChvbkNhbmNlbFZpYnJhdGlvbik6
CisgICAgICAgIChsb2FkVmlicmF0aW9uSFRNTFN0cmluZyk6CisgICAgICAgIChURVNUX0YpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dDo6V2ViQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRleHQ6On5XZWJD
b250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6ZGlzY29ubmVjdFByb2Nlc3Mp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0Lmg6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2aWJyYXRpb24pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJWaWJyYXRpb25Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpYnJhdGlvblBy
b3h5OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6V2ViVmli
cmF0aW9uUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWJyYXRpb25Qcm94eTo6fldlYlZp
YnJhdGlvblByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlicmF0aW9uUHJveHk6OmludmFs
aWRhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlZpYnJhdGlvblByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1ZpYnJhdGlvbkNsaWVudEVmbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvblByb3ZpZGVyLmNwcC4KKyAgICAgICAgKHRvVmli
cmF0aW9uQ2xpZW50KToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVudEVmbDo6dmlicmF0ZUNhbGxi
YWNrKToKKyAgICAgICAgKFZpYnJhdGlvbkNsaWVudEVmbDo6Y2FuY2VsVmlicmF0aW9uQ2FsbGJh
Y2spOgorICAgICAgICAoVmlicmF0aW9uQ2xpZW50RWZsOjpjcmVhdGUpOgorICAgICAgICAoVmli
cmF0aW9uQ2xpZW50RWZsOjpWaWJyYXRpb25DbGllbnRFZmwpOgorICAgICAgICAoVmlicmF0aW9u
Q2xpZW50RWZsOjp+VmlicmF0aW9uQ2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L1ZpYnJhdGlvbkNsaWVudEVmbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRlci5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFZpYnJhdGlvbkNsaWVudEVmbCk6CisKIDIwMTItMTEtMDcgIENocmlzdG9waGUgRHVtZXogIDxj
aHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBBZGQgcmVwbGFjZVdpdGhMaXRl
cmFsKCkgbWV0aG9kIHRvIFdURjo6U3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4
IDBkNzRhNDQ5NDllNDA2ODYyYzcwM2IyMWM2NjBhZWRkNzA4YzgzYzYuLmJiODc0N2IxY2IxZjU4
MzhjMmRkN2NjZGRmNzgyOTExZWE2N2MxZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlCkBA
IC05Myw3ICs5Myw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9SZXNv
dXJjZUxvYWRDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9UZXh0Q2hlY2tlckVmbC5j
cHAKLSAgICBVSVByb2Nlc3MvZWZsL1ZpYnJhdGlvblByb3ZpZGVyLmNwcAorICAgIFVJUHJvY2Vz
cy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4
dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwu
Y3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAKaW5kZXggMTE3YmJlZGEzMTRk
MWRiZTZiMGM2NTU1YTFmZjI4MGNjNzU0MDIyNS4uYWM0NjExNTdmOTQ5MjUxM2I4ZTUzMjkzZWU3
MzQxZjg2OGEwYWJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5jcHAKQEAgLTI0MiwxNSArMjQyLDYgQEAgV0tSZXNvdXJjZUNhY2hlTWFuYWdlclJlZiBX
S0NvbnRleHRHZXRSZXNvdXJjZUNhY2hlTWFuYWdlcihXS0NvbnRleHRSZWYgY29udGV4dFIKICAg
ICByZXR1cm4gdG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT5yZXNvdXJjZUNhY2hlTWFuYWdlclBy
b3h5KCkpOwogfQogCi1XS1ZpYnJhdGlvblJlZiBXS0NvbnRleHRHZXRWaWJyYXRpb24oV0tDb250
ZXh0UmVmIGNvbnRleHRSZWYpCi17Ci0jaWYgRU5BQkxFKFZJQlJBVElPTikKLSAgICByZXR1cm4g
dG9BUEkodG9JbXBsKGNvbnRleHRSZWYpLT52aWJyYXRpb25Qcm94eSgpKTsKLSNlbHNlCi0gICAg
cmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogdm9pZCBXS0NvbnRleHRTdGFydE1lbW9yeVNhbXBsZXIo
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLRG91YmxlUmVmIGludGVydmFsKQogewogICAgIHRv
SW1wbChjb250ZXh0UmVmKS0+c3RhcnRNZW1vcnlTYW1wbGVyKHRvSW1wbChpbnRlcnZhbCktPnZh
bHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29u
dGV4dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5oCmluZGV4
IDY5ZDEyOTgwNWQzYmRhOWM1YzA4MGI0MjllNjg0NzgxYjRkNjZkMWQuLjhmNzdjYmQ4ZjhjZTU0
NDQzOGNmM2I3OTI1YWVmY2Q0Mjg5ZmQ3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tDb250ZXh0LmgKQEAgLTE2Nyw3ICsxNjcsNiBAQCBXS19FWFBPUlQgV0tOZXR3b3Jr
SW5mb01hbmFnZXJSZWYgV0tDb250ZXh0R2V0TmV0d29ya0luZm9NYW5hZ2VyKFdLQ29udGV4dFJl
ZiBjbwogV0tfRVhQT1JUIFdLTm90aWZpY2F0aW9uTWFuYWdlclJlZiBXS0NvbnRleHRHZXROb3Rp
ZmljYXRpb25NYW5hZ2VyKFdLQ29udGV4dFJlZiBjb250ZXh0KTsKIFdLX0VYUE9SVCBXS1BsdWdp
blNpdGVEYXRhTWFuYWdlclJlZiBXS0NvbnRleHRHZXRQbHVnaW5TaXRlRGF0YU1hbmFnZXIoV0tD
b250ZXh0UmVmIGNvbnRleHQpOwogV0tfRVhQT1JUIFdLUmVzb3VyY2VDYWNoZU1hbmFnZXJSZWYg
V0tDb250ZXh0R2V0UmVzb3VyY2VDYWNoZU1hbmFnZXIoV0tDb250ZXh0UmVmIGNvbnRleHQpOwot
V0tfRVhQT1JUIFdLVmlicmF0aW9uUmVmIFdLQ29udGV4dEdldFZpYnJhdGlvbihXS0NvbnRleHRS
ZWYgY29udGV4dCk7CiAgICAgCiB0eXBlZGVmIHZvaWQgKCpXS0NvbnRleHRHZXRTdGF0aXN0aWNz
RnVuY3Rpb24pKFdLRGljdGlvbmFyeVJlZiBzdGF0aXN0aWNzLCBXS0Vycm9yUmVmIGVycm9yLCB2
b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tDb250ZXh0R2V0U3RhdGlz
dGljcyhXS0NvbnRleHRSZWYgY29udGV4dCwgdm9pZCogZnVuY3Rpb25Db250ZXh0LCBXS0NvbnRl
eHRHZXRTdGF0aXN0aWNzRnVuY3Rpb24gZnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBiZGJjYjU1NGQyZjc5OTM0ZjM2OGYyMzUxYjVlYTAw
MzcwOTk2YmU2Li4yNTliY2E3MjdlZWVlM2U5MzAyNWFkZDBjMjJkNGQ1YmRiZDczZWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcApAQCAtMTkxLDYgKzE5MSwx
NiBAQCBXS0luc3BlY3RvclJlZiBXS1BhZ2VHZXRJbnNwZWN0b3IoV0tQYWdlUmVmIHBhZ2VSZWYp
CiAjZW5kaWYKIH0KIAorV0tWaWJyYXRpb25SZWYgV0tQYWdlR2V0VmlicmF0aW9uKFdLUGFnZVJl
ZiBwYWdlKQoreworI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgcmV0dXJuIHRvQVBJKHRvSW1w
bChwYWdlKS0+dmlicmF0aW9uKCkpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7Cisg
ICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKwogZG91YmxlIFdLUGFnZUdldEVzdGltYXRlZFByb2dy
ZXNzKFdLUGFnZVJlZiBwYWdlUmVmKQogewogICAgIHJldHVybiB0b0ltcGwocGFnZVJlZiktPmVz
dGltYXRlZFByb2dyZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgK
aW5kZXggZGFkZWJiYzkxOThjNzcxMTk2YmVhZTVlYTc3OWMwNmM4Nzc5OTMzZC4uNGEyNWJiNjNi
YjA4YTJkNGRkODE2NTU0YzlkNTVjMTBhMTRjZWFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuaApAQCAtMzg5LDYgKzM4OSw4IEBAIFdLX0VYUE9SVCB2b2lkIFdLUGFn
ZVNldE1lbW9yeUNhY2hlQ2xpZW50Q2FsbHNFbmFibGVkKFdLUGFnZVJlZiBwYWdlLCBib29sIG1l
bW9yCiAKIFdLX0VYUE9SVCBXS0luc3BlY3RvclJlZiBXS1BhZ2VHZXRJbnNwZWN0b3IoV0tQYWdl
UmVmIHBhZ2UpOwogCitXS19FWFBPUlQgV0tWaWJyYXRpb25SZWYgV0tQYWdlR2V0VmlicmF0aW9u
KFdLUGFnZVJlZiBwYWdlKTsKKwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGFnZUNvcHlVc2Vy
QWdlbnQoV0tQYWdlUmVmIHBhZ2UpOwogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQYWdlQ29w
eUFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgKaW5kZXgg
N2Y1NTEyNzUzZDljNTU1N2ZiNDAzNGI2ODA2ZmViZjJiODMzY2FmNy4uNmZiYWU1YTk4YWJiYWQ1
ZGJmMTBhNGU1M2RiNjJkNGM4ODY1N2FlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaApAQCAtNTUsNiArNTUsNyBAQCBuYW1l
c3BhY2UgRXdrVmlld0NhbGxiYWNrcyB7CiBlbnVtIENhbGxiYWNrVHlwZSB7CiAgICAgQXV0aGVu
dGljYXRpb25SZXF1ZXN0LAogICAgIEJhY2tGb3J3YXJkTGlzdENoYW5nZSwKKyAgICBDYW5jZWxW
aWJyYXRpb24sCiAgICAgQ2xvc2VXaW5kb3csCiAgICAgQ3JlYXRlV2luZG93LAogICAgIERvd25s
b2FkSm9iQ2FuY2VsbGVkLApAQCAtODIsNiArODMsNyBAQCBlbnVtIENhbGxiYWNrVHlwZSB7CiAg
ICAgVG9vbHRpcFRleHRVbnNldCwKICAgICBUb29sdGlwVGV4dFNldCwKICAgICBVUkxDaGFuZ2Vk
LAorICAgIFZpYnJhdGUsCiAgICAgV2ViUHJvY2Vzc0NyYXNoZWQsCiAjaWYgRU5BQkxFKFdFQl9J
TlRFTlRTKQogICAgIEludGVudFJlcXVlc3QsCkBAIC0xNjAsNiArMTYyLDcgQEAgc3RydWN0IENh
bGxCYWNrSW5mbzxjYWxsYmFja1R5cGU+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAv
LyBOb3RlOiB0eXBlICd2b2lkJyBtZWFucyB0aGF0IG5vIGFyZ3VtZW50cyBhcmUgZXhwZWN0ZWQu
CiBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEF1dGhlbnRpY2F0aW9uUmVxdWVzdCwgImF1dGhl
bnRpY2F0aW9uLHJlcXVlc3QiLCBFd2tfQXV0aF9SZXF1ZXN0KTsKIERFQ0xBUkVfRVdLX1ZJRVdf
Q0FMTEJBQ0soQmFja0ZvcndhcmRMaXN0Q2hhbmdlLCAiYmFjayxmb3J3YXJkLGxpc3QsY2hhbmdl
ZCIsIHZvaWQpOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhDYW5jZWxWaWJyYXRpb24sICJj
YW5jZWwsdmlicmF0aW9uIiwgdm9pZCk7CiBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKENsb3Nl
V2luZG93LCAiY2xvc2Usd2luZG93Iiwgdm9pZCk7CiBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNL
KENyZWF0ZVdpbmRvdywgImNyZWF0ZSx3aW5kb3ciLCBFdmFzX09iamVjdCopOwogREVDTEFSRV9F
V0tfVklFV19DQUxMQkFDSyhEb3dubG9hZEpvYkNhbmNlbGxlZCwgImRvd25sb2FkLGNhbmNlbGxl
ZCIsIEV3a19Eb3dubG9hZF9Kb2IpOwpAQCAtMTg3LDYgKzE5MCw3IEBAIERFQ0xBUkVfRVdLX1ZJ
RVdfQ0FMTEJBQ0soVGl0bGVDaGFuZ2UsICJ0aXRsZSxjaGFuZ2VkIiwgY2hhcik7CiBERUNMQVJF
X0VXS19WSUVXX0NBTExCQUNLKFRvb2x0aXBUZXh0VW5zZXQsICJ0b29sdGlwLHRleHQsdW5zZXQi
LCB2b2lkKTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soVG9vbHRpcFRleHRTZXQsICJ0b29s
dGlwLHRleHQsc2V0IiwgY2hhcik7CiBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKFVSTENoYW5n
ZWQsICJ1cmwsY2hhbmdlZCIsIGNoYXIpOworREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhWaWJy
YXRlLCAidmlicmF0ZSIsIHVpbnQ2NF90KTsKIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJBQ0soV2Vi
UHJvY2Vzc0NyYXNoZWQsICJ3ZWJwcm9jZXNzLGNyYXNoZWQiLCBib29sKTsKICNpZiBFTkFCTEUo
V0VCX0lOVEVOVFMpCiBERUNMQVJFX0VXS19WSUVXX0NBTExCQUNLKEludGVudFJlcXVlc3QsICJp
bnRlbnQscmVxdWVzdCxuZXciLCBFd2tfSW50ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAppbmRleCA0MjE2NmM5OGM4NDQwYjNhOGM2
M2FjNTc1ZGJjOGY2MDRjMTVkNzc4Li44ZmIwNDJhMWEzY2VkZTczZDhhN2M2ZTViMTdlMzFlNmJl
N2ViOTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tW
aWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0ltcGwuY3BwCkBAIC01NSw2ICs1NSw5IEBACiAjaW5jbHVkZSA8RWRqZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvQ3Vyc29yLmg+CiAKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorI2luY2x1ZGUgIlZp
YnJhdGlvbkNsaWVudEVmbC5oIgorI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAjaW5jbHVkZSAiV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5oIgpAQCAtMTA4LDYgKzExMSw5
IEBAIEV3a1ZpZXdJbXBsOjpFd2tWaWV3SW1wbChFdmFzX09iamVjdCogdmlldywgUGFzc1JlZlB0
cjxFd2tDb250ZXh0PiBjb250ZXh0LCBQYXNzCiAgICAgLCBtX3Jlc291cmNlTG9hZENsaWVudChS
ZXNvdXJjZUxvYWRDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fZmluZENsaWVudChG
aW5kQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2Zvcm1DbGllbnQoRm9ybUNsaWVu
dEVmbDo6Y3JlYXRlKHRoaXMpKQorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgLCBtX3ZpYnJh
dGlvbkNsaWVudChWaWJyYXRpb25DbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKKyNlbmRpZgogICAg
ICwgbV9iYWNrRm9yd2FyZExpc3QoRXdrX0JhY2tfRm9yd2FyZF9MaXN0OjpjcmVhdGUodG9BUEko
bV9wYWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpKSkpCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdf
U1RPUkUpCiAgICAgLCBtX3NjYWxlRmFjdG9yKDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAppbmRleCA5MThmZTIyZjkwNzdhMDlmYTM2MTc5NzFk
OGVlMWEwZjk0YTVkMmFjLi43NmUwZjdiMmU4OGM0NzM4ZGNiY2RhMjkxZjg1OGE2NjdjMTc5YWIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgK
QEAgLTU3LDYgKzU3LDEwIEBAIGNsYXNzIFdlYlBhZ2VHcm91cDsKIGNsYXNzIFdlYlBhZ2VQcm94
eTsKIGNsYXNzIFdlYlBvcHVwSXRlbTsKIGNsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsOworCisj
aWYgRU5BQkxFKFZJQlJBVElPTikKK2NsYXNzIFZpYnJhdGlvbkNsaWVudEVmbDsKKyNlbmRpZgog
fQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMzAsNiArMjM0LDkgQEAgcHJpdmF0ZToKICAg
ICBPd25QdHI8V2ViS2l0OjpSZXNvdXJjZUxvYWRDbGllbnRFZmw+IG1fcmVzb3VyY2VMb2FkQ2xp
ZW50OwogICAgIE93blB0cjxXZWJLaXQ6OkZpbmRDbGllbnRFZmw+IG1fZmluZENsaWVudDsKICAg
ICBPd25QdHI8V2ViS2l0OjpGb3JtQ2xpZW50RWZsPiBtX2Zvcm1DbGllbnQ7CisjaWYgRU5BQkxF
KFZJQlJBVElPTikKKyAgICBPd25QdHI8V2ViS2l0OjpWaWJyYXRpb25DbGllbnRFZmw+IG1fdmli
cmF0aW9uQ2xpZW50OworI2VuZGlmCiAgICAgT3duUHRyPEV3a19CYWNrX0ZvcndhcmRfTGlzdD4g
bV9iYWNrRm9yd2FyZExpc3Q7CiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgZmxv
YXQgbV9zY2FsZUZhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a19jb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmNwcAppbmRleCAyZGJmMzc4NTdjNjk3YzA1YTViOGU5ZWJlYTY2MGYzYzIy
NzIyMjUwLi5lOGI2MmRhYWE3MGU3MmYxNjFlNzUzNWNkNTNkMDM3OWFkOTFmMWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuY3BwCkBAIC0y
NSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiQ29udGV4dEhpc3RvcnlDbGllbnRFZmwuaCIKICNpbmNs
dWRlICJOZXR3b3JrSW5mb1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUmVxdWVzdE1hbmFnZXJDbGll
bnRFZmwuaCIKLSNpbmNsdWRlICJWaWJyYXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dFNvdXAuaCIKICNpbmNsdWRlICJXS051bWJlci5o
IgpAQCAtNzIsOSArNzEsNiBAQCBFd2tDb250ZXh0OjpFd2tDb250ZXh0KFdLQ29udGV4dFJlZiBj
b250ZXh0KQogI2lmIEVOQUJMRShORVRXT1JLX0lORk8pCiAgICAgLCBtX25ldHdvcmtJbmZvUHJv
dmlkZXIoTmV0d29ya0luZm9Qcm92aWRlcjo6Y3JlYXRlKGNvbnRleHQpKQogI2VuZGlmCi0jaWYg
RU5BQkxFKFZJQlJBVElPTikKLSAgICAsIG1fdmlicmF0aW9uUHJvdmlkZXIoVmlicmF0aW9uUHJv
dmlkZXI6OmNyZWF0ZShjb250ZXh0KSkKLSNlbmRpZgogICAgICwgbV9kb3dubG9hZE1hbmFnZXIo
RG93bmxvYWRNYW5hZ2VyRWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX3JlcXVlc3RNYW5hZ2Vy
Q2xpZW50KFJlcXVlc3RNYW5hZ2VyQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2hp
c3RvcnlDbGllbnQoQ29udGV4dEhpc3RvcnlDbGllbnRFZmw6OmNyZWF0ZShjb250ZXh0KSkKQEAg
LTE5NiwxMyArMTkyLDYgQEAgUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwqIEV3a0NvbnRleHQ6OnJl
cXVlc3RNYW5hZ2VyKCkKICAgICByZXR1cm4gbV9yZXF1ZXN0TWFuYWdlckNsaWVudC5nZXQoKTsK
IH0KIAotI2lmIEVOQUJMRShWSUJSQVRJT04pCi1QYXNzUmVmUHRyPFZpYnJhdGlvblByb3ZpZGVy
PiBFd2tDb250ZXh0Ojp2aWJyYXRpb25Qcm92aWRlcigpCi17Ci0gICAgcmV0dXJuIG1fdmlicmF0
aW9uUHJvdmlkZXI7Ci19Ci0jZW5kaWYKLQogdm9pZCBFd2tDb250ZXh0OjphZGRWaXNpdGVkTGlu
ayhjb25zdCBTdHJpbmcmIHZpc2l0ZWRVUkwpCiB7CiAgICAgdG9JbXBsKG1fY29udGV4dC5nZXQo
KSktPmFkZFZpc2l0ZWRMaW5rKHZpc2l0ZWRVUkwpOwpAQCAtMjk2LDE1ICsyODUsNiBAQCBFaW5h
X0Jvb2wgZXdrX2NvbnRleHRfdXJsX3NjaGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCogZXdrQ29u
dGV4dCwgY29uc3QgY2hhciogcwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGV3a19jb250
ZXh0X3ZpYnJhdGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldChFd2tfQ29udGV4dCogZXdrQ29udGV4
dCwgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmlicmF0ZV9DYiB2aWJyYXRlLCBFd2tfVmlicmF0aW9u
X0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiIGNhbmNlbCwgdm9pZCogZGF0YSkKLXsKLSAgICBF
V0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihFd2tDb250ZXh0LCBld2tDb250ZXh0LCBpbXBsKTsK
LQotI2lmIEVOQUJMRShWSUJSQVRJT04pCi0gICAgaW1wbC0+dmlicmF0aW9uUHJvdmlkZXIoKS0+
c2V0VmlicmF0aW9uQ2xpZW50Q2FsbGJhY2tzKHZpYnJhdGUsIGNhbmNlbCwgZGF0YSk7Ci0jZW5k
aWYKLX0KLQogdm9pZCBld2tfY29udGV4dF9oaXN0b3J5X2NhbGxiYWNrc19zZXQoRXdrX0NvbnRl
eHQqIGV3a0NvbnRleHQsIEV3a19IaXN0b3J5X05hdmlnYXRpb25fQ2IgbmF2aWdhdGUsIEV3a19I
aXN0b3J5X0NsaWVudF9SZWRpcmVjdGlvbl9DYiBjbGllbnRSZWRpcmVjdCwgRXdrX0hpc3Rvcnlf
U2VydmVyX1JlZGlyZWN0aW9uX0NiIHNlcnZlclJlZGlyZWN0LCBFd2tfSGlzdG9yeV9UaXRsZV9V
cGRhdGVfQ2IgdGl0bGVVcGRhdGUsIEV3a19IaXN0b3J5X1BvcHVsYXRlX1Zpc2l0ZWRfTGlua3Nf
Q2IgcG9wdWxhdGVWaXNpdGVkTGlua3MsIHZvaWQqIGRhdGEpCiB7CiAgICAgRVdLX09CSl9HRVRf
SU1QTF9PUl9SRVRVUk4oRXdrQ29udGV4dCwgZXdrQ29udGV4dCwgaW1wbCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHQuaAppbmRleCA0YThlOTU2NTU2
N2UyMTZhODAwMWNlNTlhNzdmZDgwY2ZiZTMwMzBkLi4wMWNhMjVmY2Q5OGI5NjIxZGY5MTNiYzk2
Yzg2ZjgyYmM2ZTRhMzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfY29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19jb250ZXh0LmgKQEAgLTgwLDIwICs4MCw2IEBAIHR5cGVkZWYgZW51bSBFd2tfQ2FjaGVf
TW9kZWwgRXdrX0NhY2hlX01vZGVsOwogdHlwZWRlZiB2b2lkICgqRXdrX1VybF9TY2hlbWVfUmVx
dWVzdF9DYikgKEV3a19VcmxfU2NoZW1lX1JlcXVlc3QgKnJlcXVlc3QsIHZvaWQgKnVzZXJfZGF0
YSk7CiAKIC8qKgotICogQHR5cGVkZWYgRXdrX1ZpYnJhdGlvbl9DbGllbnRfVmlicmF0ZV9DYiBF
d2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiCi0gKiBAYnJpZWYgVHlwZSBkZWZpbml0aW9u
IGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIHZpYnJhdGUKLSAq
IHJlcXVlc3QgcmVjZWl2ZWVkIGZyb20gdGhlIHZpYnJhdGlvbiBjb250cm9sbGVyLgotICovCi10
eXBlZGVmIHZvaWQgKCpFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRlX0NiKSh1aW50NjRfdCB2
aWJyYXRpb25fdGltZSwgdm9pZCAqdXNlcl9kYXRhKTsKLQotLyoqCi0gKiBAdHlwZWRlZiBFd2tf
VmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiIEV3a19WaWJyYXRpb25fQ2xpZW50
X1ZpYnJhdGlvbl9DYW5jZWxfQ2IKLSAqIEBicmllZiBUeXBlIGRlZmluaXRpb24gZm9yIGEgZnVu
Y3Rpb24gdGhhdCB3aWxsIGJlIGNhbGxlZCBiYWNrIHdoZW4gY2FuY2VsCi0gKiB2aWJyYXRpb24g
cmVxdWVzdCByZWNlaXZlZWQgZnJvbSB0aGUgdmlicmF0aW9uIGNvbnRyb2xsZXIuCi0gKi8KLXR5
cGVkZWYgdm9pZCAoKkV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9DYW5jZWxfQ2IpKHZv
aWQgKnVzZXJfZGF0YSk7Ci0KLS8qKgogICogQHR5cGVkZWYgRXdrX0hpc3RvcnlfTmF2aWdhdGlv
bl9DYiBFd2tfSGlzdG9yeV9OYXZpZ2F0aW9uX0NiCiAgKiBAYnJpZWYgVHlwZSBkZWZpbml0aW9u
IGZvciBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYmFjayB3aGVuIEBhIHZpZXcgZGlk
IG5hdmlnYXRpb24gKGxvYWRlZCBuZXcgVVJMKS4KICAqLwpAQCAtMjYwLDIyICsyNDYsNiBAQCBF
QVBJIEV3a19TdG9yYWdlX01hbmFnZXIgKmV3a19jb250ZXh0X3N0b3JhZ2VfbWFuYWdlcl9nZXQo
Y29uc3QgRXdrX0NvbnRleHQgKmNvbgogRUFQSSBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfdXJsX3Nj
aGVtZV9yZWdpc3RlcihFd2tfQ29udGV4dCAqY29udGV4dCwgY29uc3QgY2hhciAqc2NoZW1lLCBF
d2tfVXJsX1NjaGVtZV9SZXF1ZXN0X0NiIGNhbGxiYWNrLCB2b2lkICp1c2VyX2RhdGEpOwogCiAv
KioKLSAqIFNldHMgdmlicmF0aW9uIGNsaWVudCBjYWxsYmFja3MgdG8gaGFuZGxlIHRoZSB0YWN0
aWxlIGZlZWRiYWNrIGluIHRoZSBmb3JtIG9mCi0gKiB2aWJyYXRpb24gaW4gdGhlIGNsaWVudCBh
cHBsaWNhdGlvbiB3aGVuIHRoZSBjb250ZW50IGFza3MgZm9yIHZpYnJhdGlvbi4KLSAqCi0gKiBU
byBzdG9wIGxpc3RlbmluZyBmb3IgdmlicmF0aW9uIGV2ZW50cywgeW91IG1heSBjYWxsIHRoaXMg
ZnVuY3Rpb24gd2l0aCBAYwotICogTlVMTCBmb3IgdGhlIGNhbGxiYWNrcy4KLSAqCi0gKiBAcGFy
YW0gY29udGV4dCBjb250ZXh0IG9iamVjdCB0byBzZXQgdmlicmF0aW9uIGNsaWVudCBjYWxsYmFj
a3MuCi0gKiBAcGFyYW0gdmlicmF0ZSBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZSB2aWJy
YXRlIHJlcXVlc3QgcmVjZWl2ZWQgZnJvbSB0aGUKLSAqICAgICAgICBjb250cm9sbGVyIChtYXkg
YmUgQGMgTlVMTCkuCi0gKiBAcGFyYW0gY2FuY2VsIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4g
dGhlIGNhbmNlbCB2aWJyYXRpb24gcmVxdWVzdCByZWNlaXZlZAotICogICAgICAgIGZyb20gdGhl
IGNvbnRyb2xsZXIgKG1heSBiZSBAYyBOVUxMKS4KLSAqIEBwYXJhbSBkYXRhIFVzZXIgZGF0YSAo
bWF5IGJlIEBjIE5VTEwpLgotICovCi1FQVBJIHZvaWQgZXdrX2NvbnRleHRfdmlicmF0aW9uX2Ns
aWVudF9jYWxsYmFja3Nfc2V0KEV3a19Db250ZXh0ICpjb250ZXh0LCBFd2tfVmlicmF0aW9uX0Ns
aWVudF9WaWJyYXRlX0NiIHZpYnJhdGUsIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlvbl9D
YW5jZWxfQ2IgY2FuY2VsLCB2b2lkICpkYXRhKTsKLQotLyoqCiAgKiBTZXRzIGhpc3RvcnkgY2Fs
bGJhY2tzIGZvciB0aGUgZ2l2ZW4gQGEgY29udGV4dC4KICAqCiAgKiBUbyBzdG9wIGxpc3Rlbmlu
ZyBmb3IgaGlzdG9yeSBldmVudHMsIHlvdSBtYXkgY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGggQGMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19jb250ZXh0
X3ByaXZhdGUuaAppbmRleCA0ZGRiNjUzMjRkM2Q0MDk2NDM3MDUwNTQ2OGZiMzU2OTZlNDE0OTFl
Li43NDIwOTY4OTM3YjdlNGRjNDU3MDc2M2NmNzY2ZDU1Mzk1MTE2YzFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfY29udGV4dF9wcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2NvbnRleHRfcHJpdmF0ZS5o
CkBAIC0zOCw5ICszOCw2IEBAIGNsYXNzIEJhdHRlcnlQcm92aWRlcjsKICNpZiBFTkFCTEUoTkVU
V09SS19JTkZPKQogY2xhc3MgTmV0d29ya0luZm9Qcm92aWRlcjsKICNlbmRpZgotI2lmIEVOQUJM
RShWSUJSQVRJT04pCi1jbGFzcyBWaWJyYXRpb25Qcm92aWRlcjsKLSNlbmRpZgogfQogCiBjbGFz
cyBFd2tDb250ZXh0IDogcHVibGljIEV3a19PYmplY3QgewpAQCAtNjYsMTAgKzYzLDYgQEAgcHVi
bGljOgogCiAgICAgV2ViS2l0OjpSZXF1ZXN0TWFuYWdlckNsaWVudEVmbCogcmVxdWVzdE1hbmFn
ZXIoKTsKIAotI2lmIEVOQUJMRShWSUJSQVRJT04pCi0gICAgUGFzc1JlZlB0cjxXZWJLaXQ6OlZp
YnJhdGlvblByb3ZpZGVyPiB2aWJyYXRpb25Qcm92aWRlcigpOwotI2VuZGlmCi0KICAgICB2b2lk
IGFkZFZpc2l0ZWRMaW5rKGNvbnN0IFN0cmluZyYgdmlzaXRlZFVSTCk7CiAKICAgICB2b2lkIHNl
dENhY2hlTW9kZWwoRXdrX0NhY2hlX01vZGVsKTsKQEAgLTk5LDkgKzkyLDYgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoTkVUV09SS19JTkZPKQogICAgIFJlZlB0cjxXZWJLaXQ6Ok5ldHdvcmtJbmZv
UHJvdmlkZXI+IG1fbmV0d29ya0luZm9Qcm92aWRlcjsKICNlbmRpZgotI2lmIEVOQUJMRShWSUJS
QVRJT04pCi0gICAgUmVmUHRyPFdlYktpdDo6VmlicmF0aW9uUHJvdmlkZXI+IG1fdmlicmF0aW9u
UHJvdmlkZXI7Ci0jZW5kaWYKICAgICBPd25QdHI8V2ViS2l0OjpEb3dubG9hZE1hbmFnZXJFZmw+
IG1fZG93bmxvYWRNYW5hZ2VyOwogICAgIE93blB0cjxXZWJLaXQ6OlJlcXVlc3RNYW5hZ2VyQ2xp
ZW50RWZsPiBtX3JlcXVlc3RNYW5hZ2VyQ2xpZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaAppbmRleCAxNzVjMjhjZjJlYzA2NTIyM2MxMGQ5M2Q4Nzlm
YzRiYmMzZTYxYmM5Li40M2Q2ZjU2YzJkN2MyMzU1ODg4NDZkZWZmZDdjODQ1OTkyMjdkZWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTI5LDYg
KzI5LDcgQEAKICAqIC0gImF1dGhlbnRpY2F0aW9uLHJlcXVlc3QiLCBFd2tfQXV0aF9SZXF1ZXN0
KjogcmVwb3J0cyB0aGF0IHVzZXIgYXV0aGVudGljYXRpb24gd2FzIHJlcXVlc3RlZC4gQ2FsbAog
ICogICBld2tfYXV0aF9yZXF1ZXN0X3JlZigpIG9uIHRoZSByZXF1ZXN0IG9iamVjdCB0byBwcm9j
ZXNzIHRoZSBhdXRoZW50aWNhdGlvbiBhc3luY2hyb25vdXNseS4KICAqIC0gImJhY2ssZm9yd2Fy
ZCxsaXN0LGNoYW5nZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgdGhlIHZpZXcncyBiYWNrIC8gZm9y
d2FyZCBsaXN0IGhhZCBjaGFuZ2VkLgorICogLSAiY2FuY2VsLHZpYnJhdGlvbiIsIHZvaWQ6IHJl
cXVlc3QgdG8gY2FuY2VsIHRoZSB2aWJyYXRpb24uCiAgKiAtICJjbG9zZSx3aW5kb3ciLCB2b2lk
OiB3aW5kb3cgaXMgY2xvc2VkLgogICogLSAiY3JlYXRlLHdpbmRvdyIsIEV2YXNfT2JqZWN0Kio6
IGEgbmV3IHdpbmRvdyBpcyBjcmVhdGVkLgogICogLSAiZG93bmxvYWQsY2FuY2VsbGVkIiwgRXdr
X0Rvd25sb2FkX0pvYio6IHJlcG9ydHMgdGhhdCBhIGRvd25sb2FkIHdhcyBlZmZlY3RpdmVseSBj
YW5jZWxsZWQuCkBAIC03Myw2ICs3NCw3IEBACiAgKiAtICJ0b29sdGlwLHRleHQsc2V0IiwgY29u
c3QgY2hhcio6IHRvb2x0aXAgd2FzIHNldC4KICAqIC0gInRvb2x0aXAsdGV4dCx1bnNldCIsIHZv
aWQ6IHRvb2x0aXAgd2FzIHVuc2V0LgogICogLSAidXJsLGNoYW5nZWQiLCBjb25zdCBjaGFyKjog
dXJsIG9mIHRoZSBtYWluIGZyYW1lIHdhcyBjaGFuZ2VkLgorICogLSAidmlicmF0ZSIsIHVpbnQ2
NF90KjogcmVxdWVzdCB0byB2aWJyYXRlLiAodmFsdWUgaXMgdmlicmF0aW9uIHRpbWUpCiAgKiAt
ICJ3ZWJwcm9jZXNzLGNyYXNoZWQiLCBFaW5hX0Jvb2wqOiBleHBlY3RzIGEgQGMgRUlOQV9UUlVF
IGlmIHdlYiBwcm9jZXNzIGNyYXNoIGlzIGhhbmRsZWQ7IEBjIEVJTkFfRkFMU0UsIG90aGVyd2lz
ZS4KICAqLwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90
ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC90ZXN0cy90ZXN0X2V3azJfY29udGV4dC5jcHAKaW5kZXggYjAyYThkMjZlOGViZmE3Y2Nk
MGY0MDQ4NGI1ZmY4MGFlNTVlODdmZS4uZWNlMjIxZTJjOTFkN2ZiNGJiODlkMWQ3NjZiN2RhMGVj
ZTgwNGVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvdGVzdF9ld2syX2NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9jb250ZXh0LmNwcApAQCAtOTUsODYgKzk1LDYgQEAgVEVT
VF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb250ZXh0X3VybF9zY2hlbWVfcmVnaXN0ZXIpCiAg
ICAgQVNTRVJUX1NUUkVRKCJGb28iLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7CiB9
CiAKLXN0cnVjdCBWaWJyYXRpb25DYkRhdGEgewotICAgIGJvb2wgZGlkUmVjZWl2ZVZpYnJhdGVD
YWxsYmFjazsgLy8gV2hldGhlciB0aGUgdmlicmF0aW9uIGV2ZW50IHJlY2VpdmVkLgotICAgIGJv
b2wgZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrOyAvLyBXaGV0aGVyIHRoZSBjYW5j
ZWwgdmlicmF0aW9uIGV2ZW50IHJlY2VpdmVkLgotICAgIHVuc2lnbmVkIHZpYnJhdGVDYWxsZWRD
b3VudDsgLy8gVmlicmF0ZSBjYWxsYmFja3MgY291bnQuCi0gICAgdWludDY0X3QgZXhwZWN0ZWRW
aWJyYXRpb25UaW1lOyAvLyBFeHBlY3RlZCB2aWJyYXRpb24gdGltZS4KLX07Ci0KLXN0YXRpYyB2
b2lkIHZpYnJhdGVDYWxsYmFjayh1aW50NjRfdCB2aWJyYXRpb25UaW1lLCB2b2lkKiB1c2VyRGF0
YSkKLXsKLSAgICBWaWJyYXRpb25DYkRhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxWaWJyYXRpb25D
YkRhdGEqPih1c2VyRGF0YSk7Ci0gICAgaWYgKHZpYnJhdGlvblRpbWUgPT0gZGF0YS0+ZXhwZWN0
ZWRWaWJyYXRpb25UaW1lKQotICAgICAgICBkYXRhLT5kaWRSZWNlaXZlVmlicmF0ZUNhbGxiYWNr
ID0gdHJ1ZTsKLSAgICBkYXRhLT52aWJyYXRlQ2FsbGVkQ291bnQrKzsKLX0KLQotc3RhdGljIHZv
aWQgY2FuY2VsVmlicmF0aW9uQ2FsbGJhY2sodm9pZCogdXNlckRhdGEpCi17Ci0gICAgVmlicmF0
aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JEYXRhKj4odXNlckRhdGEp
OwotICAgIGRhdGEtPmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb25DYWxsYmFjayA9IHRydWU7Ci19
Ci0KLXN0YXRpYyB2b2lkIGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKEV2YXNfT2JqZWN0KiB3ZWJW
aWV3LCBjb25zdCBjaGFyKiB2aWJyYXRpb25QYXR0ZXJuLCBib29sIHdhaXRGb3JWaWJyYXRpb25F
dmVudCwgVmlicmF0aW9uQ2JEYXRhKiBkYXRhKQotewotICAgIGNvbnN0IGNoYXIqIGNvbnRlbnQg
PQotICAgICAgICAiPGh0bWw+PGhlYWQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmZ1
bmN0aW9uIHZpYnJhdGUoKSB7IG5hdmlnYXRvci52aWJyYXRlKCVzKTsiCi0gICAgICAgICIgZG9j
dW1lbnQudGl0bGUgPSBcIkxvYWRlZFwiOyB9PC9zY3JpcHQ+PC9oZWFkPjxib2R5IG9ubG9hZD0n
dmlicmF0ZSgpJz48L2JvZHk+PC9odG1sPiI7Ci0KLSAgICBkYXRhLT5kaWRSZWNlaXZlVmlicmF0
ZUNhbGxiYWNrID0gZmFsc2U7Ci0gICAgZGF0YS0+ZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNh
bGxiYWNrID0gZmFsc2U7Ci0gICAgZGF0YS0+dmlicmF0ZUNhbGxlZENvdW50ID0gMDsKLSAgICBF
aW5hX1N0cmJ1ZiogYnVmZmVyID0gZWluYV9zdHJidWZfbmV3KCk7Ci0gICAgZWluYV9zdHJidWZf
YXBwZW5kX3ByaW50ZihidWZmZXIsIGNvbnRlbnQsIHZpYnJhdGlvblBhdHRlcm4pOwotICAgIGV3
a192aWV3X2h0bWxfc3RyaW5nX2xvYWQod2ViVmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChi
dWZmZXIpLCAwLCAwKTsKLSAgICBlaW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7Ci0KLSAgICBpZiAo
IXdhaXRGb3JWaWJyYXRpb25FdmVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgd2hpbGUgKCFk
YXRhLT5kaWRSZWNlaXZlVmlicmF0ZUNhbGxiYWNrICYmICFkYXRhLT5kaWRSZWNlaXZlQ2FuY2Vs
VmlicmF0aW9uQ2FsbGJhY2spCi0gICAgICAgIGVjb3JlX21haW5fbG9vcF9pdGVyYXRlKCk7Ci19
Ci0KLVRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBESVNBQkxFRF9ld2tfY29udGV4dF92aWJyYXRp
b25fY2xpZW50X2NhbGxiYWNrc19zZXQpCi17Ci0gICAgVmlicmF0aW9uQ2JEYXRhIGRhdGEgPSB7
IGZhbHNlLCBmYWxzZSwgMCwgNTAwMCB9OwotICAgIGV3a19jb250ZXh0X3ZpYnJhdGlvbl9jbGll
bnRfY2FsbGJhY2tzX3NldChld2tfdmlld19jb250ZXh0X2dldCh3ZWJWaWV3KCkpLCB2aWJyYXRl
Q2FsbGJhY2ssIGNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrLCAmZGF0YSk7Ci0KLSAgICAvLyBWaWJy
YXRlIGZvciA1IHNlY29uZHMuCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygp
LCAiNTAwMCIsIHRydWUsICZkYXRhKTsKLSAgICBBU1NFUlRfVFJVRShkYXRhLmRpZFJlY2VpdmVW
aWJyYXRlQ2FsbGJhY2spOwotCi0gICAgLy8gQ2FuY2VsIGFueSBleGlzdGluZyB2aWJyYXRpb25z
LgotICAgIGxvYWRWaWJyYXRpb25IVE1MU3RyaW5nKHdlYlZpZXcoKSwgIjAiLCB0cnVlLCAmZGF0
YSk7Ci0gICAgQVNTRVJUX1RSVUUoZGF0YS5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uQ2FsbGJh
Y2spOwotCi0gICAgLy8gVGhpcyBjYXNlIHRoZSBwYXR0ZXJuIHdpbGwgY2F1c2UgdGhlIGRldmlj
ZSB0byB2aWJyYXRlIGZvciAyMDAgbXMsIGJlIHN0aWxsIGZvciAxMDAgbXMsIGFuZCB0aGVuIHZp
YnJhdGUgZm9yIDUwMDAgbXMuCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygp
LCAiWzIwMCwgMTAwLCA1MDAwXSIsIHRydWUsICZkYXRhKTsKLSAgICBBU1NFUlRfRVEoMiwgZGF0
YS52aWJyYXRlQ2FsbGVkQ291bnQpOwotICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZVZp
YnJhdGVDYWxsYmFjayk7Ci0KLSAgICAvLyBDYW5jZWwgb3V0c3RhbmRpbmcgdmlicmF0aW9uIHBh
dHRlcm4uCi0gICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAiWzBdIiwgdHJ1
ZSwgJmRhdGEpOwotICAgIEFTU0VSVF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlv
bkNhbGxiYWNrKTsKLQotICAgIC8vIFN0b3AgbGlzdGVuaW5nIGZvciB2aWJyYXRpb24gZXZlbnRz
LCBieSBjYWxsaW5nIHRoZSBmdW5jdGlvbiB3aXRoIG51bGwgZm9yIHRoZSBjYWxsYmFja3MuCi0g
ICAgZXdrX2NvbnRleHRfdmlicmF0aW9uX2NsaWVudF9jYWxsYmFja3Nfc2V0KGV3a192aWV3X2Nv
bnRleHRfZ2V0KHdlYlZpZXcoKSksIDAsIDAsICZkYXRhKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB3
ZSBkb24ndCByZWNlaXZlIHZpYnJhdGlvbiBldmVudC4KLSAgICBsb2FkVmlicmF0aW9uSFRNTFN0
cmluZyh3ZWJWaWV3KCksICJbNTAwMF0iLCBmYWxzZSwgJmRhdGEpOwotICAgIEFTU0VSVF9UUlVF
KHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJMb2FkZWQiKSk7Ci0gICAgQVNTRVJUX1NUUkVRKCJM
b2FkZWQiLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7Ci0gICAgQVNTRVJUX0ZBTFNF
KGRhdGEuZGlkUmVjZWl2ZVZpYnJhdGVDYWxsYmFjayk7Ci0KLSAgICAvLyBNYWtlIHN1cmUgd2Ug
ZG9uJ3QgcmVjZWl2ZSBjYW5jZWwgdmlicmF0aW9uIGV2ZW50LgotICAgIGxvYWRWaWJyYXRpb25I
VE1MU3RyaW5nKHdlYlZpZXcoKSwgIjAiLCBmYWxzZSwgJmRhdGEpOwotICAgIEFTU0VSVF9UUlVF
KHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJMb2FkZWQiKSk7Ci0gICAgQVNTRVJUX1NUUkVRKCJM
b2FkZWQiLCBld2tfdmlld190aXRsZV9nZXQod2ViVmlldygpKSk7Ci0gICAgQVNTRVJUX0ZBTFNF
KGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKTsKLX0KLQogVEVTVF9GKEVX
SzJVbml0VGVzdEJhc2UsIGV3a19jb250ZXh0X2NhY2hlX21vZGVsKQogewogICAgIEV3a19Db250
ZXh0KiBjb250ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQod2ViVmlldygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl92
aWV3LmNwcAppbmRleCA4MDI0MGQyYWU0YTgxYTFkNWE5YWQwNjYxYjc5YTYwNWIyYmNlNWJjLi4x
OTk5NzBkMjljN2RhMGZhMGRkYmI2ZTJjMWQxYzJhYjYwMjUxYTMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfdmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX3ZpZXcu
Y3BwCkBAIC03OTcsMyArNzk3LDg3IEBAIFRFU1RfRihFV0syVW5pdFRlc3RCYXNlLCBld2tfdmll
d19wYWdpbmF0aW9uKQogICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmlyb25tZW50LT5k
ZWZhdWx0VGVzdFBhZ2VVcmwoKSkpOwogICAgIEFTU0VSVF9FUShFV0tfUEFHSU5BVElPTl9NT0RF
X1VOUEFHSU5BVEVELCBld2tfdmlld19wYWdpbmF0aW9uX21vZGVfZ2V0KHdlYlZpZXcoKSkpOwog
fQorCitzdHJ1Y3QgVmlicmF0aW9uQ2JEYXRhIHsKKyAgICBib29sIGRpZFJlY2VpdmVWaWJyYXRl
OyAvLyBXaGV0aGVyIHRoZSB2aWJyYXRpb24gZXZlbnQgcmVjZWl2ZWQuCisgICAgYm9vbCBkaWRS
ZWNlaXZlQ2FuY2VsVmlicmF0aW9uOyAvLyBXaGV0aGVyIHRoZSBjYW5jZWwgdmlicmF0aW9uIGV2
ZW50IHJlY2VpdmVkLgorICAgIHVuc2lnbmVkIHZpYnJhdGVDYWxsZWRDb3VudDsgLy8gVmlicmF0
ZSBjYWxsYmFja3MgY291bnQuCisgICAgdWludDY0X3QgZXhwZWN0ZWRWaWJyYXRpb25UaW1lOyAv
LyBFeHBlY3RlZCB2aWJyYXRpb24gdGltZS4KK307CisKK3N0YXRpYyB2b2lkIG9uVmlicmF0ZSh2
b2lkKiB1c2VyRGF0YSwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgVmli
cmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JEYXRhKj4odXNlckRh
dGEpOworICAgIHVpbnQ2NF90KiB2aWJyYXRpb25UaW1lID0gc3RhdGljX2Nhc3Q8dWludDY0X3Qq
PihldmVudEluZm8pOworICAgIGlmICgqdmlicmF0aW9uVGltZSA9PSBkYXRhLT5leHBlY3RlZFZp
YnJhdGlvblRpbWUpCisgICAgICAgIGRhdGEtPmRpZFJlY2VpdmVWaWJyYXRlID0gdHJ1ZTsKKyAg
ICBkYXRhLT52aWJyYXRlQ2FsbGVkQ291bnQrKzsKK30KKworc3RhdGljIHZvaWQgb25DYW5jZWxW
aWJyYXRpb24odm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCopCit7CisgICAgVmli
cmF0aW9uQ2JEYXRhKiBkYXRhID0gc3RhdGljX2Nhc3Q8VmlicmF0aW9uQ2JEYXRhKj4odXNlckRh
dGEpOworICAgIGRhdGEtPmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb24gPSB0cnVlOworfQorCitz
dGF0aWMgdm9pZCBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyhFdmFzX09iamVjdCogd2ViVmlldywg
Y29uc3QgY2hhciogdmlicmF0aW9uUGF0dGVybiwgYm9vbCB3YWl0Rm9yVmlicmF0aW9uRXZlbnQs
IFZpYnJhdGlvbkNiRGF0YSogZGF0YSkKK3sKKyAgICBjb25zdCBjaGFyKiBjb250ZW50ID0KKyAg
ICAgICAgIjxodG1sPjxoZWFkPjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz5mdW5jdGlv
biB2aWJyYXRlKCkgeyBuYXZpZ2F0b3IudmlicmF0ZSglcyk7IgorICAgICAgICAiIGRvY3VtZW50
LnRpdGxlID0gXCJMb2FkZWRcIjsgfTwvc2NyaXB0PjwvaGVhZD48Ym9keSBvbmxvYWQ9J3ZpYnJh
dGUoKSc+PC9ib2R5PjwvaHRtbD4iOworCisgICAgZGF0YS0+ZGlkUmVjZWl2ZVZpYnJhdGUgPSBm
YWxzZTsKKyAgICBkYXRhLT5kaWRSZWNlaXZlQ2FuY2VsVmlicmF0aW9uID0gZmFsc2U7CisgICAg
ZGF0YS0+dmlicmF0ZUNhbGxlZENvdW50ID0gMDsKKyAgICBFaW5hX1N0cmJ1ZiogYnVmZmVyID0g
ZWluYV9zdHJidWZfbmV3KCk7CisgICAgZWluYV9zdHJidWZfYXBwZW5kX3ByaW50ZihidWZmZXIs
IGNvbnRlbnQsIHZpYnJhdGlvblBhdHRlcm4pOworICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xv
YWQod2ViVmlldywgZWluYV9zdHJidWZfc3RyaW5nX2dldChidWZmZXIpLCAwLCAwKTsKKyAgICBl
aW5hX3N0cmJ1Zl9mcmVlKGJ1ZmZlcik7CisKKyAgICBpZiAoIXdhaXRGb3JWaWJyYXRpb25FdmVu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCFkYXRhLT5kaWRSZWNlaXZlVmlicmF0
ZSAmJiAhZGF0YS0+ZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbikKKyAgICAgICAgZWNvcmVfbWFp
bl9sb29wX2l0ZXJhdGUoKTsKK30KKworVEVTVF9GKEVXSzJVbml0VGVzdEJhc2UsIGV3a19jb250
ZXh0X3ZpYnJhdGlvbl9jbGllbnRfY2FsbGJhY2tzX3NldCkKK3sKKyAgICBWaWJyYXRpb25DYkRh
dGEgZGF0YSA9IHsgZmFsc2UsIGZhbHNlLCAwLCA1MDAwIH07CisgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKHdlYlZpZXcoKSwgInZpYnJhdGUiLCBvblZpYnJhdGUsICZkYXRhKTsK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmlldygpLCAiY2FuY2VsLHZp
YnJhdGlvbiIsIG9uQ2FuY2VsVmlicmF0aW9uLCAmZGF0YSk7CisKKyAgICAvLyBWaWJyYXRlIGZv
ciA1IHNlY29uZHMuCisgICAgbG9hZFZpYnJhdGlvbkhUTUxTdHJpbmcod2ViVmlldygpLCAiNTAw
MCIsIHRydWUsICZkYXRhKTsKKyAgICBBU1NFUlRfVFJVRShkYXRhLmRpZFJlY2VpdmVWaWJyYXRl
KTsKKworICAgIC8vIENhbmNlbCBhbnkgZXhpc3RpbmcgdmlicmF0aW9ucy4KKyAgICBsb2FkVmli
cmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICIwIiwgdHJ1ZSwgJmRhdGEpOworICAgIEFTU0VS
VF9UUlVFKGRhdGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbik7CisKKyAgICAvLyBUaGlzIGNh
c2UgdGhlIHBhdHRlcm4gd2lsbCBjYXVzZSB0aGUgZGV2aWNlIHRvIHZpYnJhdGUgZm9yIDIwMCBt
cywgYmUgc3RpbGwgZm9yIDEwMCBtcywgYW5kIHRoZW4gdmlicmF0ZSBmb3IgNTAwMCBtcy4KKyAg
ICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJbMjAwLCAxMDAsIDUwMDBdIiwg
dHJ1ZSwgJmRhdGEpOworICAgIEFTU0VSVF9FUSgyLCBkYXRhLnZpYnJhdGVDYWxsZWRDb3VudCk7
CisgICAgQVNTRVJUX1RSVUUoZGF0YS5kaWRSZWNlaXZlVmlicmF0ZSk7CisKKyAgICAvLyBDYW5j
ZWwgb3V0c3RhbmRpbmcgdmlicmF0aW9uIHBhdHRlcm4uCisgICAgbG9hZFZpYnJhdGlvbkhUTUxT
dHJpbmcod2ViVmlldygpLCAiWzBdIiwgdHJ1ZSwgJmRhdGEpOworICAgIEFTU0VSVF9UUlVFKGRh
dGEuZGlkUmVjZWl2ZUNhbmNlbFZpYnJhdGlvbik7CisKKyAgICAvLyBTdG9wIGxpc3RlbmluZyBm
b3IgdmlicmF0aW9uIGV2ZW50cywgYnkgY2FsbGluZyB0aGUgZnVuY3Rpb24gd2l0aCBudWxsIGZv
ciB0aGUgY2FsbGJhY2tzLgorICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2RlbCh3ZWJW
aWV3KCksICJ2aWJyYXRlIiwgb25WaWJyYXRlKTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19kZWwod2ViVmlldygpLCAiY2FuY2VsLHZpYnJhdGlvbiIsIG9uQ2FuY2VsVmlicmF0aW9u
KTsKKworICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCByZWNlaXZlIHZpYnJhdGlvbiBldmVudC4K
KyAgICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICJbNTAwMF0iLCBmYWxzZSwg
JmRhdGEpOworICAgIEFTU0VSVF9UUlVFKHdhaXRVbnRpbFRpdGxlQ2hhbmdlZFRvKCJMb2FkZWQi
KSk7CisgICAgQVNTRVJUX1NUUkVRKCJMb2FkZWQiLCBld2tfdmlld190aXRsZV9nZXQod2ViVmll
dygpKSk7CisgICAgQVNTRVJUX0ZBTFNFKGRhdGEuZGlkUmVjZWl2ZVZpYnJhdGUpOworCisgICAg
Ly8gTWFrZSBzdXJlIHdlIGRvbid0IHJlY2VpdmUgY2FuY2VsIHZpYnJhdGlvbiBldmVudC4KKyAg
ICBsb2FkVmlicmF0aW9uSFRNTFN0cmluZyh3ZWJWaWV3KCksICIwIiwgZmFsc2UsICZkYXRhKTsK
KyAgICBBU1NFUlRfVFJVRSh3YWl0VW50aWxUaXRsZUNoYW5nZWRUbygiTG9hZGVkIikpOworICAg
IEFTU0VSVF9TVFJFUSgiTG9hZGVkIiwgZXdrX3ZpZXdfdGl0bGVfZ2V0KHdlYlZpZXcoKSkpOwor
ICAgIEFTU0VSVF9GQUxTRShkYXRhLmRpZFJlY2VpdmVDYW5jZWxWaWJyYXRpb24pOworfQorCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKaW5kZXggOGRkYzkzZDgzMzAwZDI0
Yzc1ZDQwNDRiOTBkNWQ4MzgxMGQzN2RjNi4uZjdlYTE0MWMyNjlhNTdjMWMwNTFlNmM3MzQ5Yzcz
MTk0NDE0YzYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcApAQCAt
NzksMTAgKzc5LDYgQEAKICNpbmNsdWRlICJXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5oIgog
I2VuZGlmCiAKLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotI2luY2x1ZGUgIldlYlZpYnJhdGlvblBy
b3h5LmgiCi0jZW5kaWYKLQogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZExlYWtDb3VudGVyLmg+CiAjZW5kaWYKQEAgLTE2NSw5ICsxNjEsNiBAQCBXZWJDb250ZXh0OjpX
ZWJDb250ZXh0KFByb2Nlc3NNb2RlbCBwcm9jZXNzTW9kZWwsIGNvbnN0IFN0cmluZyYgaW5qZWN0
ZWRCdW5kbGVQYQogI2lmIFVTRShTT1VQKQogICAgIG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHkg
PSBXZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlKHRoaXMpOwogI2VuZGlmCi0jaWYg
RU5BQkxFKFZJQlJBVElPTikKLSAgICBtX3ZpYnJhdGlvblByb3h5ID0gV2ViVmlicmF0aW9uUHJv
eHk6OmNyZWF0ZSh0aGlzKTsKLSNlbmRpZgogICAgIAogI2lmICFMT0dfRElTQUJMRUQKICAgICBX
ZWJLaXQ6OmluaXRpYWxpemVMb2dDaGFubmVsc0lmTmVjZXNzYXJ5KCk7CkBAIC0yNDQsMTEgKzIz
Nyw2IEBAIFdlYkNvbnRleHQ6On5XZWJDb250ZXh0KCkKICAgICBtX3NvdXBSZXF1ZXN0TWFuYWdl
clByb3h5LT5jbGVhckNvbnRleHQoKTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKFZJQlJBVElPTikK
LSAgICBtX3ZpYnJhdGlvblByb3h5LT5pbnZhbGlkYXRlKCk7Ci0gICAgbV92aWJyYXRpb25Qcm94
eS0+Y2xlYXJDb250ZXh0KCk7Ci0jZW5kaWYKLQogICAgIGludmFsaWRhdGVDYWxsYmFja01hcCht
X2RpY3Rpb25hcnlDYWxsYmFja3MpOwogCiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlQ29udGV4dCgp
OwpAQCAtNTUzLDkgKzU0MSw2IEBAIHZvaWQgV2ViQ29udGV4dDo6ZGlzY29ubmVjdFByb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKQogI2lmIFVTRShTT1VQKQogICAgIG1fc291cFJlcXVl
c3RNYW5hZ2VyUHJveHktPmludmFsaWRhdGUoKTsKICNlbmRpZgotI2lmIEVOQUJMRShWSUJSQVRJ
T04pCi0gICAgbV92aWJyYXRpb25Qcm94eS0+aW52YWxpZGF0ZSgpOwotI2VuZGlmCiAKICAgICAv
LyBXaGVuIG91dCBvZiBwcm9jZXNzIHBsdWctaW5zIGFyZSBlbmFibGVkLCB3ZSBkb24ndCB3YW50
IHRvIGludmFsaWRhdGUgdGhlIHBsdWctaW4gc2l0ZSBkYXRhCiAgICAgLy8gbWFuYWdlciBqdXN0
IGJlY2F1c2UgdGhlIHdlYiBwcm9jZXNzIGNyYXNoZXMgc2luY2UgaXQncyBub3QgaW52b2x2ZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAppbmRleCA3YTU1MDIzZjA1YzhhZDYw
OTYxZDAyM2I3YzQwNWJkZTZlZDNhYzdjLi41ZWNmMGI5MmQxYTNmNjNlZmE0ZTZiYWYzOTExYzdk
ZjE2ZGJmMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKQEAgLTY5LDkg
KzY5LDYgQEAgY2xhc3MgV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eTsKICNpZiBVU0UoU09V
UCkKIGNsYXNzIFdlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5OwogI2VuZGlmCi0jaWYgRU5BQkxF
KFZJQlJBVElPTikKLWNsYXNzIFdlYlZpYnJhdGlvblByb3h5OwotI2VuZGlmCiBzdHJ1Y3QgU3Rh
dGlzdGljc0RhdGE7CiBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczsKICAgICAK
QEAgLTIwMyw5ICsyMDAsNiBAQCBwdWJsaWM6CiAjaWYgVVNFKFNPVVApCiAgICAgV2ViU291cFJl
cXVlc3RNYW5hZ2VyUHJveHkqIHNvdXBSZXF1ZXN0TWFuYWdlclByb3h5KCkgY29uc3QgeyByZXR1
cm4gbV9zb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5nZXQoKTsgfQogI2VuZGlmCi0jaWYgRU5BQkxF
KFZJQlJBVElPTikKLSAgICBXZWJWaWJyYXRpb25Qcm94eSogdmlicmF0aW9uUHJveHkoKSBjb25z
dCB7IHJldHVybiBtX3ZpYnJhdGlvblByb3h5LmdldCgpOyB9Ci0jZW5kaWYKIAogICAgIHN0cnVj
dCBTdGF0aXN0aWNzIHsKICAgICAgICAgdW5zaWduZWQgd2tWaWV3Q291bnQ7CkBAIC0zNzksOSAr
MzczLDYgQEAgcHJpdmF0ZToKICNpZiBVU0UoU09VUCkKICAgICBSZWZQdHI8V2ViU291cFJlcXVl
c3RNYW5hZ2VyUHJveHk+IG1fc291cFJlcXVlc3RNYW5hZ2VyUHJveHk7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoVklCUkFUSU9OKQotICAgIFJlZlB0cjxXZWJWaWJyYXRpb25Qcm94eT4gbV92aWJyYXRp
b25Qcm94eTsKLSNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIGJvb2wgbV9zaG91bGRQ
YWludE5hdGl2ZUNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCAyNGQzMjY4NTM0N2E3YmRmZmZhZDdlMDcwZWJhZDgxZTgxMGRiYzZhLi4xNDMx
M2U5OWU5YTE5YjBkMjBkODYxMjIyMTZlYTgxNDk3MDBlNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMTExLDYgKzExMSwxMCBAQAogI2luY2x1ZGUg
IldlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJS
QVRJT04pCisjaW5jbHVkZSAiV2ViVmlicmF0aW9uUHJveHkuaCIKKyNlbmRpZgorCiAjaWZuZGVm
IE5ERUJVRwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNlbmRpZgpA
QCAtMjQ1LDYgKzI0OSwxMCBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50
KiBwYWdlQ2xpZW50LCBQYXNzUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gcAogICAgIFdlYkNvbnRl
eHQ6OnN0YXRpc3RpY3MoKS53a1BhZ2VDb3VudCsrOwogCiAgICAgbV9wYWdlR3JvdXAtPmFkZFBh
Z2UodGhpcyk7CisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorICAgIG1fdmlicmF0aW9uID0gV2Vi
VmlicmF0aW9uUHJveHk6OmNyZWF0ZSh0aGlzKTsKKyNlbmRpZgogfQogCiBXZWJQYWdlUHJveHk6
On5XZWJQYWdlUHJveHkoKQpAQCAtNDQ3LDYgKzQ1NSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2xvc2UoKQogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBtX3Zp
YnJhdGlvbi0+aW52YWxpZGF0ZSgpOworI2VuZGlmCisKICAgICBpZiAobV9vcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lcikgewogICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlk
YXRlKCk7CiAgICAgICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSAwOwpAQCAtMzYxMSw2
ICszNjIzLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2goKQogICAgIH0K
ICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBtX3ZpYnJhdGlvbi0+aW52YWxp
ZGF0ZSgpOworI2VuZGlmCisKICAgICBpZiAobV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lcikgewog
ICAgICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgICAg
IG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI4ZTM0YmM5MDkxYjRmNmRhYjQwMDg5ZjM1MTVkZjkw
NDUxNmUxZjIuLmM5NTRiNTI5YjEwYTZiODg5ODkxMzA0NTdmOTcyNzlkNDQ3MzhlYTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2OCw2ICsxNjgsMTAgQEAg
c3RydWN0IFdpbmRvd0dlb21ldHJ5OwogY2xhc3MgV2ViR2VzdHVyZUV2ZW50OwogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoVklCUkFUSU9OKQorY2xhc3MgV2ViVmlicmF0aW9uUHJveHk7CisjZW5kaWYK
KwogI2lmIEVOQUJMRShXRUJfSU5URU5UUykKIHN0cnVjdCBJbnRlbnREYXRhOwogI2VuZGlmCkBA
IC0yNjUsNiArMjY5LDEwIEBAIHB1YmxpYzoKICAgICBXZWJJbnNwZWN0b3JQcm94eSogaW5zcGVj
dG9yKCk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSUJSQVRJT04pCisgICAgV2ViVmlicmF0aW9u
UHJveHkqIHZpYnJhdGlvbigpIHsgcmV0dXJuIG1fdmlicmF0aW9uLmdldCgpOyB9CisjZW5kaWYK
KwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5KiBmdWxsU2NyZWVuTWFuYWdlcigpOwogI2VuZGlmCkBAIC0xMDYzLDYgKzEwNzEsMTAgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eT4gbV9mdWxsU2Ny
ZWVuTWFuYWdlcjsKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJQlJBVElPTikKKyAgICBSZWZQdHI8
V2ViVmlicmF0aW9uUHJveHk+IG1fdmlicmF0aW9uOworI2VuZGlmCisKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8Vm9pZENhbGxiYWNrPiA+IG1fdm9pZENhbGxiYWNrczsKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8RGF0YUNhbGxiYWNrPiA+IG1fZGF0YUNhbGxiYWNrczsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+ID4gbV9zdHJpbmdDYWxs
YmFja3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9u
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmNw
cAppbmRleCA0YTY0NWQ1NDM3N2Y3MjMwZGRlNGY2ZTAwOTg5ZWM1M2MzNDgzMjg4Li4yZTc5MGMy
ZjhmYTIyNDc1ZWQ1OGFjMDg2YmI4MjJkOTU5NTBjOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAKQEAgLTI5LDI4ICsyOSwzMiBAQAogI2lm
IEVOQUJMRShWSUJSQVRJT04pCiAKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAi
V2ViVmlicmF0aW9uUHJveHlNZXNzYWdlcy5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFz
c1JlZlB0cjxXZWJWaWJyYXRpb25Qcm94eT4gV2ViVmlicmF0aW9uUHJveHk6OmNyZWF0ZShXZWJD
b250ZXh0KiBjb250ZXh0KQorUGFzc1JlZlB0cjxXZWJWaWJyYXRpb25Qcm94eT4gV2ViVmlicmF0
aW9uUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveHkqIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJWaWJyYXRpb25Qcm94eShjb250ZXh0KSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJWaWJyYXRpb25Qcm94eShwYWdlKSk7CiB9CiAKLVdlYlZpYnJhdGlvblByb3h5OjpX
ZWJWaWJyYXRpb25Qcm94eShXZWJDb250ZXh0KiBjb250ZXh0KQotICAgIDogbV9jb250ZXh0KGNv
bnRleHQpCitXZWJWaWJyYXRpb25Qcm94eTo6V2ViVmlicmF0aW9uUHJveHkoV2ViUGFnZVByb3h5
KiBwYWdlKQorICAgIDogbV9wYWdlKHBhZ2UpCiB7Ci0gICAgbV9jb250ZXh0LT5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlZpYnJhdGlvblByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIHRoaXMpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLT5jb250ZXh0KCktPmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViVmlicmF0aW9uUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLT5wYWdlSUQoKSwgdGhpcyk7CiB9CiAKIFdlYlZpYnJhdGlvblByb3h5Ojp+V2Vi
VmlicmF0aW9uUHJveHkoKQogeworICAgIG1fcGFnZS0+cHJvY2VzcygpLT5jb250ZXh0KCktPnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVmlicmF0aW9uUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViVmlicmF0aW9u
UHJveHk6OmludmFsaWRhdGUoKQogewogICAgIGNhbmNlbFZpYnJhdGlvbigpOworICAgIG1fcHJv
dmlkZXIuaW5pdGlhbGl6ZSgwKTsKIH0KIAogdm9pZCBXZWJWaWJyYXRpb25Qcm94eTo6aW5pdGlh
bGl6ZVByb3ZpZGVyKGNvbnN0IFdLVmlicmF0aW9uUHJvdmlkZXIqIHByb3ZpZGVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0aW9uUHJveHkuaAppbmRleCA1YzZkZTE3ZDcy
MTA0ZmFkMDQ0NjBjMTBiZTM0MWVmOTUyMWUxM2ZhLi4wMDMxZGZkMzY2Yzk2OWM3NDc3OTA1MGQ3
ZDJmY2NiNGQxZmI1MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
VmlicmF0aW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlicmF0
aW9uUHJveHkuaApAQCAtMzUsMzUgKzM1LDM0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1j
bGFzcyBXZWJDb250ZXh0OworY2xhc3MgV2ViUGFnZVByb3h5OwogCiBjbGFzcyBXZWJWaWJyYXRp
b25Qcm94eSA6IHB1YmxpYyBBUElPYmplY3QsIHByaXZhdGUgQ29yZUlQQzo6TWVzc2FnZVJlY2Vp
dmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVZpYnJh
dGlvbjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBjcmVhdGUo
V2ViQ29udGV4dCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpYnJhdGlvblByb3h5PiBj
cmVhdGUoV2ViUGFnZVByb3h5Kik7CiAgICAgdmlydHVhbCB+V2ViVmlicmF0aW9uUHJveHkoKTsK
IAogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwotICAgIHZvaWQgY2xlYXJDb250ZXh0KCkgeyBtX2Nv
bnRleHQgPSAwOyB9CiAKICAgICB2b2lkIGluaXRpYWxpemVQcm92aWRlcihjb25zdCBXS1ZpYnJh
dGlvblByb3ZpZGVyKik7CiAKKyAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2ViVmli
cmF0aW9uUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViVmli
cmF0aW9uUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdl
SUQsIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
V2ViVmlicmF0aW9uUHJveHkoV2ViQ29udGV4dCopOworICAgIGV4cGxpY2l0IFdlYlZpYnJhdGlv
blByb3h5KFdlYlBhZ2VQcm94eSopOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBBUElUeXBlOyB9CiAKICAgICAvLyBDb3JlSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2FnZURlY29kZXImKSBPVkVSUklERTsKIAot
ICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2VS
ZWNlaXZlci5jcHAKLSAgICB2b2lkIGRpZFJlY2VpdmVXZWJWaWJyYXRpb25Qcm94eU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6TWVzc2Fn
ZURlY29kZXImKTsKLQogICAgIHZvaWQgdmlicmF0ZSh1aW50NjRfdCB2aWJyYXRpb25UaW1lKTsK
ICAgICB2b2lkIGNhbmNlbFZpYnJhdGlvbigpOwogCi0gICAgV2ViQ29udGV4dCogbV9jb250ZXh0
OworICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFdlYlZpYnJhdGlvblByb3ZpZGVyIG1f
cHJvdmlkZXI7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1ZpYnJhdGlvbkNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Zp
YnJhdGlvbkNsaWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGViNDE5ZjliOWZhMWExMDY3ODg5MWRh
NGU5NThiMWExZDk1ZTNiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVmlicmF0aW9uQ2xp
ZW50RWZsLmgiCisKKyNpZiBFTkFCTEUoVklCUkFUSU9OKQorCisjaW5jbHVkZSAiRXdrVmlld0lt
cGwuaCIKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1ZpYnJhdGlvbi5oIgor
Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFj
a3M7CisKK3N0YXRpYyBpbmxpbmUgVmlicmF0aW9uQ2xpZW50RWZsKiB0b1ZpYnJhdGlvbkNsaWVu
dChjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxWaWJy
YXRpb25DbGllbnRFZmwqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Cit9CisKK3Zv
aWQgVmlicmF0aW9uQ2xpZW50RWZsOjp2aWJyYXRlQ2FsbGJhY2soV0tWaWJyYXRpb25SZWYsIHVp
bnQ2NF90IHZpYnJhdGlvblRpbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9W
aWJyYXRpb25DbGllbnQoY2xpZW50SW5mbyktPm1fdmlld0ltcGwtPnNtYXJ0Q2FsbGJhY2s8Vmli
cmF0ZT4oKS5jYWxsKCZ2aWJyYXRpb25UaW1lKTsKK30KKwordm9pZCBWaWJyYXRpb25DbGllbnRF
Zmw6OmNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIHRvVmlicmF0aW9uQ2xpZW50KGNsaWVudEluZm8pLT5tX3ZpZXdJ
bXBsLT5zbWFydENhbGxiYWNrPENhbmNlbFZpYnJhdGlvbj4oKS5jYWxsKCk7Cit9CisKK1Bhc3NP
d25QdHI8VmlicmF0aW9uQ2xpZW50RWZsPiBWaWJyYXRpb25DbGllbnRFZmw6OmNyZWF0ZShFd2tW
aWV3SW1wbCogdmlld0ltcGwpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBWaWJyYXRpb25D
bGllbnRFZmwodmlld0ltcGwpKTsKK30KKworVmlicmF0aW9uQ2xpZW50RWZsOjpWaWJyYXRpb25D
bGllbnRFZmwoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgIDogbV92aWV3SW1wbCh2aWV3SW1w
bCkKK3sKKyAgICBBU1NFUlQobV92aWV3SW1wbCk7CisKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9
IG1fdmlld0ltcGwtPndrUGFnZSgpOworICAgIEFTU0VSVChwYWdlUmVmKTsKKworICAgIFdLVmli
cmF0aW9uUmVmIHdrVmlicmF0aW9uID0gV0tQYWdlR2V0VmlicmF0aW9uKHBhZ2VSZWYpOworICAg
IEFTU0VSVCh3a1ZpYnJhdGlvbik7CisKKyAgICBXS1ZpYnJhdGlvblByb3ZpZGVyIHdrVmlicmF0
aW9uUHJvdmlkZXIgPSB7CisgICAgICAgIGtXS1ZpYnJhdGlvblByb3ZpZGVyQ3VycmVudFZlcnNp
b24sCisgICAgICAgIHRoaXMsIC8vIGNsaWVudEluZm8KKyAgICAgICAgdmlicmF0ZUNhbGxiYWNr
LAorICAgICAgICBjYW5jZWxWaWJyYXRpb25DYWxsYmFjaworICAgIH07CisgICAgV0tWaWJyYXRp
b25TZXRQcm92aWRlcih3a1ZpYnJhdGlvbiwgJndrVmlicmF0aW9uUHJvdmlkZXIpOworfQorCitW
aWJyYXRpb25DbGllbnRFZmw6On5WaWJyYXRpb25DbGllbnRFZmwoKQoreworICAgIFdLUGFnZVJl
ZiBwYWdlUmVmID0gbV92aWV3SW1wbC0+d2tQYWdlKCk7CisgICAgQVNTRVJUKHBhZ2VSZWYpOwor
CisgICAgV0tWaWJyYXRpb25SZWYgd2tWaWJyYXRpb24gPSBXS1BhZ2VHZXRWaWJyYXRpb24ocGFn
ZVJlZik7CisgICAgQVNTRVJUKHdrVmlicmF0aW9uKTsKKworICAgIFdLVmlicmF0aW9uU2V0UHJv
dmlkZXIod2tWaWJyYXRpb24sIDApOworfQorCisjZW5kaWYgLy8gRU5BQkxFKFZJQlJBVElPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlicmF0aW9uQ2xpZW50
RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvbkNsaWVudEVmbC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM2ZDNmNzllMTkwOTQwNGNkMTE2NGE1NTdjOTBlNWQzZjBmN2E1NWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvbkNs
aWVudEVmbC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
VmlicmF0aW9uQ2xpZW50RWZsX2gKKyNkZWZpbmUgVmlicmF0aW9uQ2xpZW50RWZsX2gKKworI2lm
IEVOQUJMRShWSUJSQVRJT04pCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK2NsYXNzIEV3a1ZpZXdJbXBsOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgVmlicmF0aW9uQ2xpZW50RWZsIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxWaWJyYXRpb25DbGllbnRFZmw+IGNyZWF0ZShFd2tWaWV3SW1wbCopOwor
CisgICAgdmlydHVhbCB+VmlicmF0aW9uQ2xpZW50RWZsKCk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgVmlicmF0aW9uQ2xpZW50RWZsKEV3a1ZpZXdJbXBsKik7CisKKyAgICBzdGF0aWMgdm9p
ZCB2aWJyYXRlQ2FsbGJhY2soV0tWaWJyYXRpb25SZWYsIHVpbnQ2NF90IHZpYnJhdGlvblRpbWUs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGNhbmNlbFZpYnJhdGlv
bkNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworICAg
IEV3a1ZpZXdJbXBsKiBtX3ZpZXdJbXBsOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBFTkFCTEUoVklCUkFUSU9OKQorCisjZW5kaWYgLy8gVmlicmF0aW9uQ2xpZW50
RWZsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlicmF0aW9u
UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92
aWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkZTYyOTY4YzI1MTdlYjI2
MjI3Yzc1MTc3ZTJiZmRhMmNiZTEzY2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92
aWRlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlZpYnJhdGlvblByb3ZpZGVyLmgi
Ci0KLSNpZiBFTkFCTEUoVklCUkFUSU9OKQotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5j
bHVkZSAiV0tDb250ZXh0LmgiCi0jaW5jbHVkZSAiV0tWaWJyYXRpb24uaCIKLSNpbmNsdWRlIDxF
dmFzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKLQotLyoqCi0gKiBcc3RydWN0ICBFd2tfVmlicmF0aW9uX0NsaWVudAotICogQGJyaWVmICAg
Q29udGFpbnMgdGhlIHZpYnJhdGlvbiBjbGllbnQgY2FsbGJhY2tzLgotICovCi1zdHJ1Y3QgRXdr
X1ZpYnJhdGlvbl9DbGllbnQgewotICAgIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2Ig
dmlicmF0ZTsKLSAgICBFd2tfVmlicmF0aW9uX0NsaWVudF9WaWJyYXRpb25fQ2FuY2VsX0NiIGNh
bmNlbFZpYnJhdGlvbjsKLSAgICB2b2lkKiB1c2VyRGF0YTsKLQotICAgIEV3a19WaWJyYXRpb25f
Q2xpZW50KEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2IgdmlicmF0ZSwgRXdrX1ZpYnJh
dGlvbl9DbGllbnRfVmlicmF0aW9uX0NhbmNlbF9DYiBjYW5jZWxWaWJyYXRpb24sIHZvaWQqIHVz
ZXJEYXRhKQotICAgICAgICA6IHZpYnJhdGUodmlicmF0ZSkKLSAgICAgICAgLCBjYW5jZWxWaWJy
YXRpb24oY2FuY2VsVmlicmF0aW9uKQotICAgICAgICAsIHVzZXJEYXRhKHVzZXJEYXRhKQotICAg
IHsgfQotfTsKLQotc3RhdGljIGlubGluZSBWaWJyYXRpb25Qcm92aWRlciogdG9WaWJyYXRpb25Q
cm92aWRlcihjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxWaWJyYXRpb25Qcm92aWRlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLX0K
LQotc3RhdGljIHZvaWQgdmlicmF0ZUNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCB1aW50NjRfdCB2
aWJyYXRpb25UaW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIHRvVmlicmF0aW9u
UHJvdmlkZXIoY2xpZW50SW5mbyktPnZpYnJhdGUodmlicmF0aW9uVGltZSk7Ci19Ci0KLXN0YXRp
YyB2b2lkIGNhbmNlbFZpYnJhdGlvbkNhbGxiYWNrKFdLVmlicmF0aW9uUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQotewotICAgIHRvVmlicmF0aW9uUHJvdmlkZXIoY2xpZW50SW5mbyktPmNh
bmNlbFZpYnJhdGlvbigpOwotfQotCi1QYXNzUmVmUHRyPFZpYnJhdGlvblByb3ZpZGVyPiBWaWJy
YXRpb25Qcm92aWRlcjo6Y3JlYXRlKFdLQ29udGV4dFJlZiB3a0NvbnRleHQpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBWaWJyYXRpb25Qcm92aWRlcih3a0NvbnRleHQpKTsKLX0KLQotVmli
cmF0aW9uUHJvdmlkZXI6OlZpYnJhdGlvblByb3ZpZGVyKFdLQ29udGV4dFJlZiB3a0NvbnRleHQp
Ci0gICAgOiBtX3drQ29udGV4dCh3a0NvbnRleHQpCi17Ci0gICAgQVNTRVJUKG1fd2tDb250ZXh0
LmdldCgpKTsKLQotICAgIFdLVmlicmF0aW9uUmVmIHdrVmlicmF0aW9uID0gV0tDb250ZXh0R2V0
VmlicmF0aW9uKG1fd2tDb250ZXh0LmdldCgpKTsKLSAgICBBU1NFUlQod2tWaWJyYXRpb24pOwot
Ci0gICAgV0tWaWJyYXRpb25Qcm92aWRlciB3a1ZpYnJhdGlvblByb3ZpZGVyID0gewotICAgICAg
ICBrV0tWaWJyYXRpb25Qcm92aWRlckN1cnJlbnRWZXJzaW9uLAotICAgICAgICB0aGlzLCAvLyBj
bGllbnRJbmZvCi0gICAgICAgIHZpYnJhdGVDYWxsYmFjaywKLSAgICAgICAgY2FuY2VsVmlicmF0
aW9uQ2FsbGJhY2sKLSAgICB9OwotICAgIFdLVmlicmF0aW9uU2V0UHJvdmlkZXIod2tWaWJyYXRp
b24sICZ3a1ZpYnJhdGlvblByb3ZpZGVyKTsKLX0KLQotVmlicmF0aW9uUHJvdmlkZXI6On5WaWJy
YXRpb25Qcm92aWRlcigpCi17Ci0gICAgV0tWaWJyYXRpb25SZWYgd2tWaWJyYXRpb24gPSBXS0Nv
bnRleHRHZXRWaWJyYXRpb24obV93a0NvbnRleHQuZ2V0KCkpOwotICAgIEFTU0VSVCh3a1ZpYnJh
dGlvbik7Ci0KLSAgICBXS1ZpYnJhdGlvblNldFByb3ZpZGVyKHdrVmlicmF0aW9uLCAwKTsKLX0K
LQotdm9pZCBWaWJyYXRpb25Qcm92aWRlcjo6dmlicmF0ZSh1aW50NjRfdCB2aWJyYXRpb25UaW1l
KQotewotICAgIGlmIChtX3ZpYnJhdGlvbkNsaWVudCAmJiBtX3ZpYnJhdGlvbkNsaWVudC0+dmli
cmF0ZSkKLSAgICAgICAgbV92aWJyYXRpb25DbGllbnQtPnZpYnJhdGUodmlicmF0aW9uVGltZSwg
bV92aWJyYXRpb25DbGllbnQtPnVzZXJEYXRhKTsKLX0KLQotdm9pZCBWaWJyYXRpb25Qcm92aWRl
cjo6Y2FuY2VsVmlicmF0aW9uKCkKLXsKLSAgICBpZiAobV92aWJyYXRpb25DbGllbnQgJiYgbV92
aWJyYXRpb25DbGllbnQtPmNhbmNlbFZpYnJhdGlvbikKLSAgICAgICAgbV92aWJyYXRpb25DbGll
bnQtPmNhbmNlbFZpYnJhdGlvbihtX3ZpYnJhdGlvbkNsaWVudC0+dXNlckRhdGEpOwotfQotCi12
b2lkIFZpYnJhdGlvblByb3ZpZGVyOjpzZXRWaWJyYXRpb25DbGllbnRDYWxsYmFja3MoRXdrX1Zp
YnJhdGlvbl9DbGllbnRfVmlicmF0ZV9DYiB2aWJyYXRlLCBFd2tfVmlicmF0aW9uX0NsaWVudF9W
aWJyYXRpb25fQ2FuY2VsX0NiIGNhbmNlbFZpYnJhdGlvbiwgdm9pZCogZGF0YSkKLXsKLSAgICBt
X3ZpYnJhdGlvbkNsaWVudCA9IGFkb3B0UHRyKG5ldyBFd2tfVmlicmF0aW9uX0NsaWVudCh2aWJy
YXRlLCBjYW5jZWxWaWJyYXRpb24sIGRhdGEpKTsKLX0KLQotI2VuZGlmIC8vIEVOQUJMRShWSUJS
QVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlv
blByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpYnJhdGlvblByb3Zp
ZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4MTAzOTNkZWE5MzgzOTU4YTcx
NmE1YjI2NTMxMGJkMGNmMmY0ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWJyYXRpb25Qcm92aWRl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBWaWJyYXRpb25Qcm92aWRlcl9oCi0jZGVmaW5lIFZpYnJhdGlvblByb3ZpZGVyX2gK
LQotI2lmIEVOQUJMRShWSUJSQVRJT04pCi0KLSNpbmNsdWRlICJXS1JldGFpblB0ci5oIgotI2lu
Y2x1ZGUgImV3a19jb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi10eXBlZGVmIHN0cnVjdCBFd2tfVmlicmF0aW9uX0Ns
aWVudCBFd2tfVmlicmF0aW9uX0NsaWVudDsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNz
IFZpYnJhdGlvblByb3ZpZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8VmlicmF0aW9uUHJvdmlkZXI+
IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWJyYXRpb25Qcm92aWRlcj4gY3Jl
YXRlKFdLQ29udGV4dFJlZik7Ci0gICAgdmlydHVhbCB+VmlicmF0aW9uUHJvdmlkZXIoKTsKLQot
ICAgIHZvaWQgdmlicmF0ZSh1aW50NjRfdCB2aWJyYXRpb25UaW1lKTsKLSAgICB2b2lkIGNhbmNl
bFZpYnJhdGlvbigpOwotICAgIHZvaWQgc2V0VmlicmF0aW9uQ2xpZW50Q2FsbGJhY2tzKEV3a19W
aWJyYXRpb25fQ2xpZW50X1ZpYnJhdGVfQ2IsIEV3a19WaWJyYXRpb25fQ2xpZW50X1ZpYnJhdGlv
bl9DYW5jZWxfQ2IsIHZvaWQqKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBWaWJyYXRpb25Q
cm92aWRlcihXS0NvbnRleHRSZWYpOwotCi0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBt
X3drQ29udGV4dDsKLSAgICBPd25QdHI8RXdrX1ZpYnJhdGlvbl9DbGllbnQ+IG1fdmlicmF0aW9u
Q2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
VklCUkFUSU9OKQotCi0jZW5kaWYgLy8gVmlicmF0aW9uUHJvdmlkZXJfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>